{"id":25804,"artifact_id":21520,"version":1,"data":{"version":1,"artifact":{"chain":"tezos","title":"||:-MASSIVE_PAINTER-:||","artist":"tz1e3fYe1G6a7vkvj4tudf7ZBc8Y5BdQHdPM","tokenId":"863724","description":"- ||: MASSIVE-PAINTER :|| - is an experimental interactive audiovisual tool designed to generate and distribute procedurally-created 3D meshes within an XYZ grid matrix. Users can customize colors, adjust parameters, and randomize values using intuitive buttons and sliders, inspiring dynamic and creative exploration. This tool was developed with a playful approach to generative art, simulating the experience of creating art using an imagined \"Famiclone\" console. Its versatility enables both structured control and unpredictable algorithmic results. The generated visuals results in abstract and pseudo-figurative pixel art.\n\n\n\n------KEY FEATURES------------\n\n1. DRAWER MODE: \nTransforms the 3D space into a dynamic canvas, turning the mesh matrix into a brush. Combining input keys and mouse controls, parameters can be adjusted in real time, resulting in intricate paintings that evoke emotions of surprise, tension, and pleasure. Draw with your mouse or use WASD keys.\n\n2. RANDOM MOVEMENT MODE:\nThis mode activates the auto-drawing algorythm, where the tool takes over the creative process. The machine randomly moves, generates and modifies parameters, producing an endless variety of unpredictable and unique outputs.\n\n3. MASSIVE ALGORYTHM:\nIntroduces a generative music engine that creates a real-time musical composition. It triggers samples to produce old-school jungle/drum-and-bass music, with the generated drum breaks influencing both audio and visual generator parameters. This algorithmic interaction results in a dynamic fusion of sound and visuals.\n\n---- SFX Panel: Includes three audio effects: Filter, Pitch Shifter and Retrigger. These effects also interact with the generator parameters, adding a layer of complexity to the output.\n----- DROP Button: Resets all audio effects and drops the beat.\n----- RAND_FX Button: Randomizes all audio effects and colors.\n\n\n---- INPUT MAP ------------\n\n[ LeftClick + Drag ] or [ WASD ] to move\n[ Hold SHIFT ]: Increase speed\n[ E ] : Zoom In / [ Q ] : Zoom Out\n\n[ MOUSE SCROLL ]:  +/- Scale\n[ Ctrl + MOUSE SCROLL ]: +/-  Spacing\n[ Alt + MOUSE SCROLL ]: +/-  Fill Probability\n\n[ R ]: Randomize all parameters\n\n[ Z ]: On/Off Rotate_X\n[ X ]: On/Off Rotate_Y\n\n[ C ]: Randomize Colors\n\n[ V ] or [ SPACE ]: Variate Grid Seed\n[ TAB ] Hide/Show UI: 1x = transparent UI / 2x = hide UI\n\n\n\n------COLLECTOR REWARDS------------\nAll primary collectors will receive a unique 1/1 output generated using their wallet address as the seed for the algorithm. Outputs can be accessed here: https://teia.art/xpQzL.OUTPUTS.\n\n--------- TROUBLESHOOTING ------------\nIf mouse input stops responding, click on any UI element and try again.\nIf you're not seeing the meshs for a long time, click in the RESET button.\nIf you are running the application on OBJKT.COM , be sure to enable Advanced Mode, or the application will not run.\n\n\n\n-------- CREATIVE POSSIBILITIES --------\nHuman/Machine Collaborative Art: Alternate between Drawer Mode and Random Movement to create a joint art piece with the machine (Check personal and commercial licenses in the full documentation).\n\nThe mesh library, was developed using Blender's Geometry Nodes. This foundation offers endless possibilities for future expansions, including new themes, mesh libraries, and generative worlds.\n\n\n\n------ ACCESSIBILITY CONSIDERATIONS -------\nEfforts have been made to mitigate potential issues for photosensitive users. While most features are safe, caution is advised when using Massive Algorithm during rapid color changes.\n\nUse headphones for a better sound experience. Beaware of high volumes!\n\n\n\n------- INTEGRATION --------\n\nThis token is built on a fork of Ktorn's Evolving Artwork contract, allowing for future updates, bug fixes, and feature expansions. Versions will be documented and accessible via ARKIVO.ART, which indexes HTML-based artworks from platforms like Hicetnunc and Teia. \nhttps://github.com/ktorn/this-is-an-evolving-artwork\n\n\n\n\n--------- TECHNICAL NOTES ---------------\n\nMASSIVE PAINTER was developed using Godot Engine.\nYou can find the full documentation, licenses, and contribute by reporting bugs or requesting new features on the project's GitHub repository: https://github.com/xpqzl/Massive_Painter_Teia\n\nDeveloped using an Intel i7 CPUs and RTX 2070 GPUs, running at 60 FPS. \n\nFor best results, use fullscreen mode on your primary monitor.\n\n\n\n\n\n\ntags:\nexperimental software, custom tool, drawer tool, painting tool, pixel art, generative art, algorithmic music, algorithmic art, procedural art, isometric, procedural, generative, video game, game, experimental music, real time, interactive art, xpqzl, experimental pixel, speculative software, game dev, game development, godot engine","contractAddress":"KT1RJ6PbjHpwc3M5rw5s2Nbmefwbuwbdxton"},"snapshot":{"net":[{"data":{"url":"https://ipfs.arkivo.art/ipfs/bafybeihb7vovuo2rx5n5xaczhgw3ute3psoyaxqohxos4rjxv4xpc74ihm?creator=tz1e3fYe1G6a7vkvj4tudf7ZBc8Y5BdQHdPM&viewer=&objkt=863724","host":"ipfs.arkivo.art","path":"/ipfs/bafybeihb7vovuo2rx5n5xaczhgw3ute3psoyaxqohxos4rjxv4xpc74ihm","type":"http","query":"?creator=tz1e3fYe1G6a7vkvj4tudf7ZBc8Y5BdQHdPM&viewer=&objkt=863724","method":"GET","headers":{"sec-ch-ua":"\"HeadlessChrome\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/131.0.6778.33 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\"","upgrade-insecure-requests":"1"},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1736975610879},{"data":{"url":"https://ipfs.arkivo.art/ipfs/bafybeihb7vovuo2rx5n5xaczhgw3ute3psoyaxqohxos4rjxv4xpc74ihm?creator=tz1e3fYe1G6a7vkvj4tudf7ZBc8Y5BdQHdPM&viewer=&objkt=863724","body":"","status":301,"headers":{"date":"Wed, 15 Jan 2025 21:13:30 GMT","server":"nginx/1.27.0","location":"/ipfs/bafybeihb7vovuo2rx5n5xaczhgw3ute3psoyaxqohxos4rjxv4xpc74ihm/?creator=tz1e3fYe1G6a7vkvj4tudf7ZBc8Y5BdQHdPM&viewer=&objkt=863724","connection":"keep-alive","x-ipfs-path":"/ipfs/bafybeihb7vovuo2rx5n5xaczhgw3ute3psoyaxqohxos4rjxv4xpc74ihm","content-type":"text/html; charset=utf-8","x-ipfs-roots":"bafybeihb7vovuo2rx5n5xaczhgw3ute3psoyaxqohxos4rjxv4xpc74ihm","content-length":"175","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type\nRange\nUser-Agent\nX-Requested-With","access-control-allow-methods":"GET\nHEAD\nOPTIONS","access-control-expose-headers":"Content-Length\nContent-Range\nX-Chunked-Output\nX-Ipfs-Path\nX-Ipfs-Roots\nX-Stream-Output"}},"type":2,"external":false,"timestamp":1736975610918},{"data":{"url":"https://ipfs.arkivo.art/ipfs/bafybeihb7vovuo2rx5n5xaczhgw3ute3psoyaxqohxos4rjxv4xpc74ihm/?creator=tz1e3fYe1G6a7vkvj4tudf7ZBc8Y5BdQHdPM&viewer=&objkt=863724","host":"ipfs.arkivo.art","path":"/ipfs/bafybeihb7vovuo2rx5n5xaczhgw3ute3psoyaxqohxos4rjxv4xpc74ihm/","type":"http","query":"?creator=tz1e3fYe1G6a7vkvj4tudf7ZBc8Y5BdQHdPM&viewer=&objkt=863724","method":"GET","headers":{"sec-ch-ua":"\"HeadlessChrome\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/131.0.6778.33 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\"","upgrade-insecure-requests":"1"},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1736975610918},{"data":{"url":"https://ipfs.arkivo.art/ipfs/bafybeihb7vovuo2rx5n5xaczhgw3ute3psoyaxqohxos4rjxv4xpc74ihm/?creator=tz1e3fYe1G6a7vkvj4tudf7ZBc8Y5BdQHdPM&viewer=&objkt=863724","body":"","status":200,"headers":{"date":"Wed, 15 Jan 2025 21:13:30 GMT","etag":"W/\"bafybeihb7vovuo2rx5n5xaczhgw3ute3psoyaxqohxos4rjxv4xpc74ihm\"","server":"nginx/1.27.0","connection":"keep-alive","x-ipfs-path":"/ipfs/bafybeihb7vovuo2rx5n5xaczhgw3ute3psoyaxqohxos4rjxv4xpc74ihm/","content-type":"text/html","x-ipfs-roots":"bafybeihb7vovuo2rx5n5xaczhgw3ute3psoyaxqohxos4rjxv4xpc74ihm","cache-control":"public, max-age=29030400, immutable","content-encoding":"gzip","transfer-encoding":"chunked","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type\nRange\nUser-Agent\nX-Requested-With","access-control-allow-methods":"GET\nHEAD\nOPTIONS","access-control-expose-headers":"Content-Length\nContent-Range\nX-Chunked-Output\nX-Ipfs-Path\nX-Ipfs-Roots\nX-Stream-Output"}},"type":2,"external":false,"timestamp":1736975610935},{"data":{"url":"https://ipfs.arkivo.art/ipfs/bafybeihb7vovuo2rx5n5xaczhgw3ute3psoyaxqohxos4rjxv4xpc74ihm/style.css","host":"ipfs.arkivo.art","path":"/ipfs/bafybeihb7vovuo2rx5n5xaczhgw3ute3psoyaxqohxos4rjxv4xpc74ihm/style.css","type":"http","query":"","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/ipfs/bafybeihb7vovuo2rx5n5xaczhgw3ute3psoyaxqohxos4rjxv4xpc74ihm/?creator=tz1e3fYe1G6a7vkvj4tudf7ZBc8Y5BdQHdPM&viewer=&objkt=863724","sec-ch-ua":"\"HeadlessChrome\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/131.0.6778.33 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1736975610966},{"data":{"url":"https://ipfs.arkivo.art/ipfs/bafybeihb7vovuo2rx5n5xaczhgw3ute3psoyaxqohxos4rjxv4xpc74ihm/script.js","host":"ipfs.arkivo.art","path":"/ipfs/bafybeihb7vovuo2rx5n5xaczhgw3ute3psoyaxqohxos4rjxv4xpc74ihm/script.js","type":"http","query":"","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/ipfs/bafybeihb7vovuo2rx5n5xaczhgw3ute3psoyaxqohxos4rjxv4xpc74ihm/?creator=tz1e3fYe1G6a7vkvj4tudf7ZBc8Y5BdQHdPM&viewer=&objkt=863724","sec-ch-ua":"\"HeadlessChrome\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/131.0.6778.33 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1736975610966},{"data":{"url":"https://ipfs.arkivo.art/ipfs/bafybeihb7vovuo2rx5n5xaczhgw3ute3psoyaxqohxos4rjxv4xpc74ihm/style.css","body":"","status":200,"headers":{"date":"Wed, 15 Jan 2025 21:13:30 GMT","etag":"\"bafkreiboiakgvws7i6uri5b7hakn6b7e5c4sphjxwx2kvy66535zqu4sme\"","server":"nginx/1.27.0","connection":"keep-alive","x-ipfs-path":"/ipfs/bafybeihb7vovuo2rx5n5xaczhgw3ute3psoyaxqohxos4rjxv4xpc74ihm/style.css","content-type":"text/css; charset=utf-8","x-ipfs-roots":"bafybeihb7vovuo2rx5n5xaczhgw3ute3psoyaxqohxos4rjxv4xpc74ihm,bafkreiboiakgvws7i6uri5b7hakn6b7e5c4sphjxwx2kvy66535zqu4sme","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"697","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET, HEAD, OPTIONS","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":false,"timestamp":1736975610984},{"data":{"url":"https://ipfs.arkivo.art/ipfs/bafybeihb7vovuo2rx5n5xaczhgw3ute3psoyaxqohxos4rjxv4xpc74ihm/script.js","body":"","status":200,"headers":{"date":"Wed, 15 Jan 2025 21:13:30 GMT","etag":"\"bafkreies44d4kl4leka7oivubha4vbd2rx2vkwu7o4krz4iwesypvkm4w4\"","server":"nginx/1.27.0","connection":"keep-alive","x-ipfs-path":"/ipfs/bafybeihb7vovuo2rx5n5xaczhgw3ute3psoyaxqohxos4rjxv4xpc74ihm/script.js","content-type":"text/javascript; charset=utf-8","x-ipfs-roots":"bafybeihb7vovuo2rx5n5xaczhgw3ute3psoyaxqohxos4rjxv4xpc74ihm,bafkreies44d4kl4leka7oivubha4vbd2rx2vkwu7o4krz4iwesypvkm4w4","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"2828","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET, HEAD, OPTIONS","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":false,"timestamp":1736975610989},{"data":{"url":"https://api.tzkt.io/v1/helpers/view/KT1JcSmePHXiSasu6Cabf6jb9r84UWEPD8Ed/get_latest_version","host":"api.tzkt.io","path":"/v1/helpers/view/KT1JcSmePHXiSasu6Cabf6jb9r84UWEPD8Ed/get_latest_version","type":"http","query":"","method":"POST","headers":{"referer":"https://ipfs.arkivo.art/","sec-ch-ua":"\"HeadlessChrome\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/131.0.6778.33 Safari/537.36","content-type":"application/json","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":"\"{\\\"name\\\":\\\"get_latest_version\\\",\\\"implementation\\\":0,\\\"data\\\":{},\\\"kind\\\":\\\"on-chain\\\"}\"","protocol":"https:"},"type":1,"external":true,"timestamp":1736975610997},{"data":{"url":"https://cache.teia.rocks/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky?creator=tz1e3fYe1G6a7vkvj4tudf7ZBc8Y5BdQHdPM&objkt=863724","host":"cache.teia.rocks","path":"/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky","type":"http","query":"?creator=tz1e3fYe1G6a7vkvj4tudf7ZBc8Y5BdQHdPM&objkt=863724","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/","sec-ch-ua":"\"HeadlessChrome\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/131.0.6778.33 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\"","upgrade-insecure-requests":"1"},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":true,"timestamp":1736975611202},{"data":{"url":"https://cache.teia.rocks/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky/?creator=tz1e3fYe1G6a7vkvj4tudf7ZBc8Y5BdQHdPM&objkt=863724","host":"cache.teia.rocks","path":"/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky/","type":"http","query":"?creator=tz1e3fYe1G6a7vkvj4tudf7ZBc8Y5BdQHdPM&objkt=863724","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/","sec-ch-ua":"\"HeadlessChrome\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/131.0.6778.33 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\"","upgrade-insecure-requests":"1"},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":true,"timestamp":1736975611372},{"data":{"url":"https://cache.teia.rocks/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky?creator=tz1e3fYe1G6a7vkvj4tudf7ZBc8Y5BdQHdPM&objkt=863724","body":"","status":301,"headers":{"nel":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}","date":"Wed, 15 Jan 2025 21:13:31 GMT","vary":"Accept-Encoding","cf-ray":"9028dec28f63bb1b-CDG","pragma":"public","server":"cloudflare","alt-svc":"h3=\":443\"; ma=86400","location":"/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky/?creator=tz1e3fYe1G6a7vkvj4tudf7ZBc8Y5BdQHdPM&objkt=863724","report-to":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=tVCTczID9YATpz96tHU2Ew9JhpkvUCcNnUQCJ%2BeGyVavIbZ%2BeoBnpASdEJvHUI2dQGdu9mva5D%2BYNmaR%2FYBD6CGqOLVJ9GCLaIMjgqbxnN1R1hE0PNwqiW1l2SiDbUjiYYSa\"}],\"group\":\"cf-nel\",\"max_age\":604800}","x-ipfs-path":"/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky","content-type":"text/html; charset=utf-8","x-ipfs-roots":"bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky","server-timing":"cfL4;desc=\"?proto=TCP&rtt=14022&min_rtt=13918&rtt_var=3996&sent=7&recv=10&lost=0&retrans=0&sent_bytes=4018&recv_bytes=2504&delivery_rate=312113&cwnd=248&unsent_bytes=0&cid=d1f58adb4b6966bb&ts=103&x=0\"","cf-cache-status":"MISS","strict-transport-security":"max-age=63072000; includeSubDomains; preload","cross-origin-opener-policy":"same-origin","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type\nRange\nUser-Agent\nX-Requested-With","access-control-allow-methods":"GET","cross-origin-embedder-policy":"require-corp","cross-origin-resource-policy":"cross-origin","access-control-expose-headers":"Content-Length\nContent-Range\nX-Chunked-Output\nX-Ipfs-Path\nX-Ipfs-Roots\nX-Stream-Output"}},"type":2,"external":true,"timestamp":1736975611379},{"data":{"url":"https://api.tzkt.io/v1/helpers/view/KT1JcSmePHXiSasu6Cabf6jb9r84UWEPD8Ed/get_latest_version","body":"","status":200,"headers":{"date":"Wed, 15 Jan 2025 21:13:31 GMT","vary":"Origin","server":"nginx","tzkt-level":"7649498","content-type":"application/json; charset=utf-8","tzkt-version":"1.14.5.0","tzkt-synced-at":"2025-01-15T21:13:30Z","content-encoding":"gzip","tzkt-known-level":"7649498","access-control-allow-origin":"*","access-control-expose-headers":"Tzkt-Version,Tzkt-Level,Tzkt-Known-Level,Tzkt-Synced-At","access-control-allow-credentials":"true"}},"type":2,"external":true,"timestamp":1736975611542},{"data":{"url":"https://cache.teia.rocks/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky/index.png","host":"cache.teia.rocks","path":"/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky/index.png","type":"http","query":"","method":"GET","headers":{"referer":"https://cache.teia.rocks/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky/?creator=tz1e3fYe1G6a7vkvj4tudf7ZBc8Y5BdQHdPM&objkt=863724","sec-ch-ua":"\"HeadlessChrome\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/131.0.6778.33 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":true,"timestamp":1736975611545},{"data":{"url":"https://cache.teia.rocks/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky/index.js","host":"cache.teia.rocks","path":"/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky/index.js","type":"http","query":"","method":"GET","headers":{"referer":"https://cache.teia.rocks/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky/?creator=tz1e3fYe1G6a7vkvj4tudf7ZBc8Y5BdQHdPM&objkt=863724","sec-ch-ua":"\"HeadlessChrome\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/131.0.6778.33 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":true,"timestamp":1736975611545},{"data":{"url":"https://cache.teia.rocks/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky/?creator=tz1e3fYe1G6a7vkvj4tudf7ZBc8Y5BdQHdPM&objkt=863724","body":"\"<!DOCTYPE html><html><head>\\n    <meta http-equiv=\\\\\\\"Content-Security-Policy\\\\\\\" content=\\\\\\\"\\n    upgrade-insecure-requests;\\n    default-src\\n      'none';\\n    frame-src\\n      'self';\\n    child-src\\n      'self'\\n      'unsafe-inline'\\n      blob:;\\n    script-src\\n      'self'\\n      'unsafe-inline'\\n      'unsafe-eval'\\n      blob:;\\n    style-src\\n      'self'\\n      'unsafe-inline';\\n    img-src\\n      'self'\\n      'unsafe-inline'\\n      data:\\n      blob:\\n      https://services.tzkt.io\\n      https://cloudflare-ipfs.com/\\n      https://ipfs.io/\\n      https://templewallet.com/logo.png\\n      https://gateway.pinata.cloud/;\\n    font-src\\n      'self'\\n      data:\\n      https://cloudflare-ipfs.com/\\n      https://fonts.googleapis.com/\\n      https://ipfs.io/\\n      https://gateway.pinata.cloud/;\\n    connect-src\\n      'self'\\n      https://better-call.dev\\n      https://*.better-call.dev\\n      https://*.cryptonomic-infra.tech\\n      https://cryptonomic-infra.tech\\n      blob:\\n      data:\\n      ws:\\n      wss:\\n      bootstrap.libp2p.io\\n      preload.ipfs.io\\n      https://mainnet.smartpy.io\\n      https://mainnet-tezos.giganode.io\\n      https://api.etherscan.io\\n      https://api.thegraph.com\\n      https://*.tzkt.io\\n      https://api.hicdex.com\\n      https://hdapi.teztools.io\\n      https://*.teia.rocks\\n      https://data.objkt.com\\n      https://api.tzstats.com\\n      https://*.wikidata.org\\n      https://*.coinmarketcap.com\\n      https://api.openweathermap.org\\n      https://hicetnunc.xyz\\n      https://*.hicetnunc.xyz\\n      https://teia.art\\n      https://*.teia.art\\n      https://api.teztok.com\\n      https://*.connkt.art\\n      https://*.hicetnunc.art\\n      https://*.teztools.io;\\n    manifest-src\\n      'self';\\n    base-uri\\n      'self';\\n    form-action\\n      'none';\\n    media-src\\n      'self'\\n      'unsafe-inline'\\n      data:\\n      blob:\\n      https://cloudflare-ipfs.com/\\n      https://ipfs.io/\\n      https://gateway.pinata.cloud/;\\n    prefetch-src\\n      'self'\\n      https://cloudflare-ipfs.com/\\n      https://fonts.googleapis.com/\\n      https://ipfs.io/\\n      https://gateway.pinata.cloud/;\\n    worker-src\\n      'self'\\n      'unsafe-inline'\\n      blob:;\\\\\\\">\\n  \\n\\t\\t<meta charset=\\\\\\\"utf-8\\\\\\\">\\n\\t\\t<meta name=\\\\\\\"viewport\\\\\\\" content=\\\\\\\"width=device-width, user-scalable=no, initial-scale=1.0\\\\\\\">\\n\\t\\t<title>CardGame2</title>\\n\\t\\t<style>\\nhtml, body, #canvas {\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\tborder: 0;\\n}\\n\\nbody {\\n\\tcolor: white;\\n\\tbackground-color: black;\\n\\toverflow: hidden;\\n\\ttouch-action: none;\\n}\\n\\n#canvas {\\n\\tdisplay: block;\\n}\\n\\n#canvas:focus {\\n\\toutline: none;\\n}\\n\\n#status, #status-splash, #status-progress {\\n\\tposition: absolute;\\n\\tleft: 0;\\n\\tright: 0;\\n}\\n\\n#status, #status-splash {\\n\\ttop: 0;\\n\\tbottom: 0;\\n}\\n\\n#status {\\n\\tbackground-color: #242424;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tjustify-content: center;\\n\\talign-items: center;\\n\\tvisibility: hidden;\\n}\\n\\n#status-splash {\\n\\tmax-height: 100%;\\n\\tmax-width: 100%;\\n\\tmargin: auto;\\n}\\n\\n#status-progress, #status-notice {\\n\\tdisplay: none;\\n}\\n\\n#status-progress {\\n\\tbottom: 10%;\\n\\twidth: 50%;\\n\\tmargin: 0 auto;\\n}\\n\\n#status-notice {\\n\\tbackground-color: #5b3943;\\n\\tborder-radius: 0.5rem;\\n\\tborder: 1px solid #9b3943;\\n\\tcolor: #e0e0e0;\\n\\tfont-family: 'Noto Sans', 'Droid Sans', Arial, sans-serif;\\n\\tline-height: 1.3;\\n\\tmargin: 0 2rem;\\n\\toverflow: hidden;\\n\\tpadding: 1rem;\\n\\ttext-align: center;\\n\\tz-index: 1;\\n}\\n\\t\\t</style>\\n\\t\\t<link id=\\\\\\\"-gd-engine-icon\\\\\\\" rel=\\\\\\\"icon\\\\\\\" type=\\\\\\\"image/png\\\\\\\" href=\\\\\\\"index.icon.png\\\\\\\">\\n<link rel=\\\\\\\"apple-touch-icon\\\\\\\" href=\\\\\\\"index.apple-touch-icon.png\\\\\\\">\\n\\n\\t</head>\\n\\t<body>\\n\\t\\t<canvas id=\\\\\\\"canvas\\\\\\\">\\n\\t\\t\\tYour browser does not support the canvas tag.\\n\\t\\t</canvas>\\n\\n\\t\\t<noscript>\\n\\t\\t\\tYour browser does not support JavaScript.\\n\\t\\t</noscript>\\n\\n\\t\\t<div id=\\\\\\\"status\\\\\\\">\\n\\t\\t\\t<img id=\\\\\\\"status-splash\\\\\\\" src=\\\\\\\"index.png\\\\\\\" alt=\\\\\\\"\\\\\\\">\\n\\t\\t\\t<progress id=\\\\\\\"status-progress\\\\\\\"></progress>\\n\\t\\t\\t<div id=\\\\\\\"status-notice\\\\\\\"></div>\\n\\t\\t</div>\\n\\n\\t\\t<script src=\\\\\\\"index.js\\\\\\\"></script>\\n\\t\\t<script>\\nconst GODOT_CONFIG = {\\\\\\\"args\\\\\\\":[],\\\\\\\"canvasResizePolicy\\\\\\\":2,\\\\\\\"ensureCrossOriginIsolationHeaders\\\\\\\":false,\\\\\\\"executable\\\\\\\":\\\\\\\"index\\\\\\\",\\\\\\\"experimentalVK\\\\\\\":false,\\\\\\\"fileSizes\\\\\\\":{\\\\\\\"index.pck\\\\\\\":138773360,\\\\\\\"index.wasm\\\\\\\":43017738},\\\\\\\"focusCanvas\\\\\\\":true,\\\\\\\"gdextensionLibs\\\\\\\":[]};\\nconst GODOT_THREADS_ENABLED = false;\\nconst engine = new Engine(GODOT_CONFIG);\\n\\n(function () {\\n\\tconst statusOverlay = document.getElementById('status');\\n\\tconst statusProgress = document.getElementById('status-progress');\\n\\tconst statusNotice = document.getElementById('status-notice');\\n\\n\\tlet initializing = true;\\n\\tlet statusMode = '';\\n\\n\\tfunction setStatusMode(mode) {\\n\\t\\tif (statusMode === mode || !initializing) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\t\\tif (mode === 'hidden') {\\n\\t\\t\\tstatusOverlay.remove();\\n\\t\\t\\tinitializing = false;\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\t\\tstatusOverlay.style.visibility = 'visible';\\n\\t\\tstatusProgress.style.display = mode === 'progress' ? 'block' : 'none';\\n\\t\\tstatusNotice.style.display = mode === 'notice' ? 'block' : 'none';\\n\\t\\tstatusMode = mode;\\n\\t}\\n\\n\\tfunction setStatusNotice(text) {\\n\\t\\twhile (statusNotice.lastChild) {\\n\\t\\t\\tstatusNotice.removeChild(statusNotice.lastChild);\\n\\t\\t}\\n\\t\\tconst lines = text.split('\\\\n');\\n\\t\\tlines.forEach((line) => {\\n\\t\\t\\tstatusNotice.appendChild(document.createTextNode(line));\\n\\t\\t\\tstatusNotice.appendChild(document.createElement('br'));\\n\\t\\t});\\n\\t}\\n\\n\\tfunction displayFailureNotice(err) {\\n\\t\\tconsole.error(err);\\n\\t\\tif (err instanceof Error) {\\n\\t\\t\\tsetStatusNotice(err.message);\\n\\t\\t} else if (typeof err === 'string') {\\n\\t\\t\\tsetStatusNotice(err);\\n\\t\\t} else {\\n\\t\\t\\tsetStatusNotice('An unknown error occured');\\n\\t\\t}\\n\\t\\tsetStatusMode('notice');\\n\\t\\tinitializing = false;\\n\\t}\\n\\n\\tconst missing = Engine.getMissingFeatures({\\n\\t\\tthreads: GODOT_THREADS_ENABLED,\\n\\t});\\n\\n\\tif (missing.length !== 0) {\\n\\t\\tif (GODOT_CONFIG['serviceWorker'] && GODOT_CONFIG['ensureCrossOriginIsolationHeaders'] && 'serviceWorker' in navigator) {\\n\\t\\t\\t// There's a chance that installing the service worker would fix the issue\\n\\t\\t\\tPromise.race([\\n\\t\\t\\t\\tnavigator.serviceWorker.getRegistration().then((registration) => {\\n\\t\\t\\t\\t\\tif (registration != null) {\\n\\t\\t\\t\\t\\t\\treturn Promise.reject(new Error('Service worker already exists.'));\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\treturn registration;\\n\\t\\t\\t\\t}).then(() => engine.installServiceWorker()),\\n\\t\\t\\t\\t// For some reason, `getRegistration()` can stall\\n\\t\\t\\t\\tnew Promise((resolve) => {\\n\\t\\t\\t\\t\\tsetTimeout(() => resolve(), 2000);\\n\\t\\t\\t\\t}),\\n\\t\\t\\t]).catch((err) => {\\n\\t\\t\\t\\tconsole.error('Error while registering service worker:', err);\\n\\t\\t\\t}).then(() => {\\n\\t\\t\\t\\twindow.location.reload();\\n\\t\\t\\t});\\n\\t\\t} else {\\n\\t\\t\\t// Display the message as usual\\n\\t\\t\\tconst missingMsg = 'Error\\\\nThe following features required to run Godot projects on the Web are missing:\\\\n';\\n\\t\\t\\tdisplayFailureNotice(missingMsg + missing.join('\\\\n'));\\n\\t\\t}\\n\\t} else {\\n\\t\\tsetStatusMode('progress');\\n\\t\\tengine.startGame({\\n\\t\\t\\t'onProgress': function (current, total) {\\n\\t\\t\\t\\tif (current > 0 && total > 0) {\\n\\t\\t\\t\\t\\tstatusProgress.value = current;\\n\\t\\t\\t\\t\\tstatusProgress.max = total;\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tstatusProgress.removeAttribute('value');\\n\\t\\t\\t\\t\\tstatusProgress.removeAttribute('max');\\n\\t\\t\\t\\t}\\n\\t\\t\\t},\\n\\t\\t}).then(() => {\\n\\t\\t\\tsetStatusMode('hidden');\\n\\t\\t}, displayFailureNotice);\\n\\t}\\n}());\\n\\t\\t</script>\\n\\t\\n\\n\\n</body></html>\"","status":200,"headers":{"nel":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}","date":"Wed, 15 Jan 2025 21:13:31 GMT","vary":"Accept-Encoding","cf-ray":"9028dec32ff7bb1b-CDG","pragma":"public","server":"cloudflare","alt-svc":"h3=\":443\"; ma=86400","report-to":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=VDTg%2FczoydV8Dw1JjCeUCXsfiIQ8e4dTK9ZEPi0Cs5M%2FLpjtmUU2advxH9ZphzRveyUVey4vCN5roIEhJiPlj052INuJFBTRu%2BemnqnkmbgaD4N3NCujj17U72TAYPT68rDQ\"}],\"group\":\"cf-nel\",\"max_age\":604800}","x-ipfs-path":"/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky/","content-type":"text/html","x-ipfs-roots":"bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky","server-timing":"cfL4;desc=\"?proto=TCP&rtt=14027&min_rtt=13918&rtt_var=3006&sent=11&recv=13&lost=0&retrans=0&sent_bytes=5390&recv_bytes=2686&delivery_rate=312113&cwnd=251&unsent_bytes=0&cid=d1f58adb4b6966bb&ts=208&x=0\"","cf-cache-status":"MISS","content-encoding":"zstd","strict-transport-security":"max-age=63072000; includeSubDomains; preload","cross-origin-opener-policy":"same-origin","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type\nRange\nUser-Agent\nX-Requested-With","access-control-allow-methods":"GET","cross-origin-embedder-policy":"require-corp","cross-origin-resource-policy":"cross-origin","access-control-expose-headers":"Content-Length\nContent-Range\nX-Chunked-Output\nX-Ipfs-Path\nX-Ipfs-Roots\nX-Stream-Output"}},"type":2,"external":true,"timestamp":1736975611546},{"data":{"url":"https://cache.teia.rocks/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky/index.png","body":"\"�PNG\\r\\n\\u001a\\n\\u0000\\u0000\\u0000\\rIHDR\\u0000\\u0000\\u0007�\\u0000\\u0000\\u00048\\b\\u0006\\u0000\\u0000\\u0000���C\\u0000\\u0000\\u0000\\u0001sRGB\\u0000��\\u001c�\\u0000\\u0000 \\u0000IDATx���{��e����\\u0000\\u0002#�\\u0002��\\u0001<�ɚ\\u001aV�\\u0019-��,�L�P[v�le;�:�<Q��ʶ5}:�Z\\u001e�'m�]\\u0015[\\u001c\\u0012\\u0013-[��2\\u0013�\\u0013\\\\\\\"�A��\\b��a\\u001a0�{��\\u001d�����\\u000f}�}�]_n�?��\\\\ׯ!\\u001a�5\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�{}�\\u001e\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�l\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�D\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000$B\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u0001\\u0018\\u0000\\u0000��󦓿\\u001c�&}��1����Ƅ3�U�\\u0018\\u0000\\u0000\\u0000С�h�ֲ�\\u0000\\u0000\\u0000�w�p�b��on����\\u0012����\\u0019-m\\u001e{��Gc�\\u000f>V�4\\u0000\\u0000\\u0000Ж\\u0000\\f\\u0000\\u0000@��N8)ƝxN��{躋♇n+`���\\u0017۳��+㱹W�;\\f\\u0000\\u0000\\u0000t@\\u0000\\u0006\\u0000\\u0000�\\u0010�F߭��n�ۿtl\\u000e\\u0013Un�WfGCC��$\\u0006\\u0003\\u0000\\u0000P�~e\\u000f\\u0000\\u0000\\u0000@�v\\u0018���ӗ��\\u001aՄ׬U;Þ�Ί='�\\u0015\\u0011\\u0011�~��X���,�\\u0002\\u0000\\u0000�6�\\u0000\\u0006\\u0000\\u0000 s�\\u001f?=vy��̮��Cs�뾔�����S�\\u0016#�xXf�[���x�\\u0017�7��\\u0001\\u0000\\u0000��\\u0004`\\u0000\\u0000\\u00002S�}r�1��)�kw&�?\\u0013\\u0000\\u0000\\u0000�\\u0012�\\u0001\\u0000\\u0000�#��Yl��]r_���Wǟ��8�u6��1\\u001f�ݛN�}��+��;�����\\u0001\\u0000\\u0000 }\\u00020\\u0000\\u0000\\u0000U�sglG��1�\\u001b��\\u0000\\u0000\\u0000��O�\\u0003\\u0000\\u0000\\u0000@-*#�\\u0002\\u0000\\u0000@O\\t�\\u0000\\u0000\\u0000�\\rQ\\u0016\\u0000\\u0000\\u0000:'\\u0000\\u0003\\u0000\\u0000PW�?~z�k�?��\\u0001\\u0000\\u0000\\u0000y\\u0010�\\u0001\\u0000\\u0000�+��mj�k����r_\\u0003\\u0000\\u0000\\u0000� \\u0000\\u0003\\u0000\\u0000Pw�<\\n�1�\\u0000\\u0000\\u0000�3\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"��=\\u0000\\u0000\\u0000\\u0000Tc򌖘�����o\\u0018sH\\f\\u001c�c��v���X��X�lq����N�\\t\\u0000\\u0000\\u0000�L\\u0000\\u0006\\u0000\\u0000�*�V.��;�,u�>�l\\u0013����\\u0018}��{t�ſ�U,�33����v���G������\\u0005\\u000f�ڵ�='\\u0000\\u0000@o�\\u0010��Z�\\u0010\\u0000\\u0000\\u0000ԟ}��x�6��H��93���?({�6�\\f�+\\u000e;�G[<v��O\\u0015�\\u0001\\u0000\\u0000j�\\u0000\\f\\u0000\\u0000@U���8v��e����\\u0017\\u001c\\u001f\\u001b��){�-\\u001c�O7G����>�vŒ����X�ⱂ�\\u0002\\u0000\\u0000�#��\\u0006\\u0000\\u0000�\\u0011���b؞\\u0007�3\\u000f�V�(\\u0015�\\u0010/�=Brj%�\\u000e\\u001a2&�����>��u�w��\\u0011\\u0011�8t��;��>tW�]sa3\\u0002\\u0000\\u0000�>\\u0001\\u0018\\u0000\\u0000�\\u0006\\u001c��\\u001fŐ�����q��T���\\t%ODo���7�[?}Y����f`,_�@\\f���-\\u001e\\u001f9��h�i�c�\\u0001\\u0000\\u0000J�\\bh\\u0000\\u0000�\\u0012����\\u0018{�ɯ~�\\u0010��Ohw��?Zw򌖲GHʬ���>�k�q�n���\\u0007��\\u0007\\u001e���U�\\u001f���wvV�\\u0001\\u0000\\u0000�\\r\\u00020\\u0000\\u0000@\\t���Yѧ_��^�vŒ��ۧ�<Qu\\u0004�l\\u0015\\u001d�;;�9+��Op\\\\8\\u0000\\u0000@���=\\u0000\\u0000\\u0000@or�y���\\u0019-m���\\u0005\\u000ft��ơ��V2w�y��\\u001e#\\\\\\\"��qs�k\\u0000\\u0000\\u0000�7\\u00020\\u0000\\u0000@A&�hi���'�����T;z�\\u0010LO�<~J�ߋUi��%�o\\u0001\\u0000\\u0000��\\bh\\u0000\\u0000�\\u001c�<~J�?�\\u000b�_w�ڗ������\\u0011<�\\u0013c�i�-u�T����S�ߘ���8�ys�׼\\u0010���~�Ǯ<�m1jTca3\\u0000\\u0000\\u0000�F\\u00020\\u0000\\u0000@N����\\u0010��OaE�7vkvwf#Ͽ�c�����88�뿦5��\\u0010�~���?h�6�+�{\\u0016\\u0000\\u0000 e\\u00020\\u0000\\u0000@\\u000e*��\\u0019�ࢣڡ\\u001f�~l�뾅���U�>\\u001ew��\\u000fgv�Z��\\\\\\\"0\\u0000\\u0000@>�\\u0003\\u0018\\u0000\\u0000 CK���<�e�븓g����d{�N�\\u0012�7d�\\u001e1x���\\\\���oī�-Y���1\\u0000\\u0000\\u0000�c\\u00070\\u0000\\u0000@Ff�y\\\\\\\".���\\u0016��{�/1p�7����G���o�\\u0015�W=��u�N8)ƝxN�ץ�\\u0005�_\\u0019�ͽ���;�k�q��\\u0007��/�9\\\\\\\"�\\fݦ�1\\u0000\\u0000\\u0000�!\\u0000\\u0003\\u0000\\u0000d��K��s/��o�*��C�]\\u0014�<t[����MSc�����:t_�G%�<~J�?�\\u000b9O����=*\\u0006l׷�1\\u0000\\u0000\\u0000� \\u0000\\u0003\\u0000\\u0000���%k�\\u001f�S�\\u0018]���Vk�(����/�\\u0018�����s=����}�����b�G�Y�5�4tP��y�ᅮ\\t\\u0000\\u0000�\\\\\\\"\\u0001\\u0018\\u0000\\u0000�\\u0007�)��ꋓc�6����/�2�\\u000f�!�����VD�!CcVsS\\f\\u001a2&F\\u001fxL�9鬲ǪZ��\\r�ac��%ѓ_V\\u0000\\u0000\\u0000@\\u0000\\u0006\\u0000\\u0000�Z\\u0019�w��_�\\u0003>pa��߰�����\\u0013*zm=�m�����5�\\u0016Ƕ�w*e�\\t�\\u000f�����R�\\u0006\\u0000\\u0000�w\\u00020\\u0000\\u0000@7�Z�J�|�]e����X��ɸ���\\u001e\\u0015~\\u0013Ӄ�2���'n>���\\u0000\\u0000\\u0000�;\\u00020\\u0000\\u0000@7�\\u0017G;:ʶ^,���xl�\\u0015\\u0011!����;&&}�ܮ�\\u001a�6�-l\\u0016�Ǎ�.��#o�m}\\u0000\\u0000��\\b�\\u0000\\u0000\\u0000\\u0015\\u0012G�\\u001cW���\\u00185���1\\u0000\\u0000\\u0000�\\u0000\\f\\u0000\\u0000Ѕ3/�\\u0017Ͻ���/�:N��݋u.�?S���;[�p~\\f���\\u001cW�ڎ�\\u000f��~��Rg\\u0000\\u0000\\u0000�\\u0007\\u00020\\u0000\\u0000@'�~ׯ�KF\\u0016�̌ݛ�_�\\u0018q�ءqљ\\u0007�=\\u0006\\u0000\\u0000@�\\u0012�\\u0001\\u0000\\u0000:�z��j�oaZ[#\\u001a\\u001az\\u001eqE`\\u0012�#���O\\u001c[�\\u0018\\u0000\\u0000\\u00005I\\u0000\\u0006\\u0000\\u0000��\\u0005W=\\u0018�-\\\\^�\\u0018�*+>�����\\r8\\u0012\\u001a\\u0000\\u0000�}\\u00020\\u0000\\u0000�f���g�P�G�������\\u0000\\u0000\\u0000[\\u0010�\\u0001\\u0000\\u0000\\\\\\\"b�'�򹏗=\\u0006P�Y�Me�\\u0000\\u0000\\u0000P\\u0013\\u0004`\\u0000\\u0000��;�y��\\u000b��\\u001e\\u0003�@����zT��N\\u001c\\u001f�\\u001f0���\\u0000\\u0000\\u0000j�\\u0000\\f\\u0000\\u0000�j�|�:��=������\\u0000\\u0000@o&\\u0000\\u0003\\u0000\\u0000��\\u0005W=\\u0018�-\\\\^�\\u0018@ND`\\u0000\\u0000��\\u0012�\\u0001\\u0000�^�7󟏯��P�;\\t�=Z\\u0016�IW;d{���F���ݿ�1\\u0000\\u0000\\u0000\\nէ�\\u0001\\u0000\\u0000\\u0000��آU��߈v#Y��Wi&\\u000f%�ߍ뷼v-}k�ydi�#\\u0000\\u0000\\u0000\\u0014�\\u000e`\\u0000\\u0000�W8�y��\\u000b�~a\\u0011�҄|m���egL��v\\u001bR�8\\u0000\\u0000\\u0000E\\u0012�\\u0001\\u0000���T�\\u0005J��\\u0000\\u0000@o \\u0000\\u0003\\u0000\\u0000I�<���\\u0011^���ߍ��E��\\u0003�\\u001a���e���>�k?~X\\f\\u001b1��q\\u0000\\u0000\\u0000�$\\u0000\\u0003\\u0000\\u0000ɪ���5}��Fi7\\u0000���\\\\\\\"0\\u0000\\u0000�2\\u0001\\u0018\\u0000\\u0000H�#��Vb���!\\u0004\\u0003\\u0000\\u0000)�S�\\u0000\\u0000\\u0000\\u0000Y���[\\u000b�\\u0016f�~���e�P�;�O����+�/o\\u0016\\u0000\\u0000�\\u001c�\\u0001\\f\\u0000\\u0000$Ⴋ\\u001e��\\u0016.�����\\u0016jʄ݇��NS�c\\u0000\\u0000\\u0000dB\\u0000\\u0006\\u0000\\u0000��'�X����Ǩ]n8\\f\\u0015���T�\\b\\u0000\\u0000\\u0000=&\\u0000\\u0003\\u0000\\u0000ukՊW��K�*{��&�B���\\u0000\\u0000@�\\u0013�\\u0001\\u0000�������Wn|��1�w*�\\u0018���B\\u000f���;�7?xP\\u000f\\u0016\\u0007\\u0000\\u0000(O��\\u0007\\u0000\\u0000\\u0000���\\u000f��P�\\\\\\\"�a�U���������\\f\\u0000\\u0000P2\\u0001\\u0018\\u0000\\u0000�+�g�ĜG��=F�+\\\\\\\"�Q���(�l��w ����.\\u000e\\u0000\\u0000��~e\\u000f\\u0000\\u0000\\u0000P�\\u000b�z0�[������\\u001e��83������!����\\u0015p��O?sh�\\u000b\\u0000\\u0000\\u0000��\\u000e`\\u0000\\u0000�.�\\u0012#�T�D�����E�!��;��)�\\u0005\\u0000\\u0000\\u0000rf\\u00070\\u0000\\u0000\\u0000P��[l���\\u001f:�\\u001c�Nq��w/{\\u0014\\u0000\\u0000�\\u001ek��Z��\\u000b\\u0000\\u0000�}w>�4�v��e�\\u0001騱\\b[�S�2&Fn70�\\u001e�s٣\\u0000\\u0000\\u0000dN\\u0000\\u0006\\u0000\\u0000���\\u001e^\\u0016\\u0017�0��1��ŽK;}����Bފ�6\\u001eؿo\\u001c7~t\\f\\u001a���^\\u0000\\u0000�W\\u0011�\\u0001\\u0000����Z\\u0018W�[T�\\u0018[�t7��\\u000b��rg��\\u0001���\\u0007�\\\\\\\"�\\u0002\\u0000\\u0000��\\u0000\\f\\u0000\\u0000ԭ'�^\\u001d�~div1��8+\\u0002��<���\\u0011��s���ߞ��4\\b\\u0000\\u0000@}\\u0011�\\u0001\\u0000�$��.a S��eL���=�\\u001e\\u0003\\u0000\\u0000��\\b�\\u0000\\u0000@��o�\\u0016�u�}��7Ty\\u0014-���S�ŤCF�=\\u0006\\u0000\\u0000@M\\u0012�\\u0001\\u0000�^�\\u000b^��^�ߕ�ؑ�q��{�I\\u0013v��S.���0\\t8������v���]<'�\\u001f�+�e��\\u0003����?2�q\\u0000\\u0000\\u0000�\\u0000\\f\\u0000\\u0000�Z�{xY\\\\x�����\\\\\\\"{tCCĭ�M���>�,�����v�:w�\\t�Ǒ��������cSk\\u0002?�W���\\u001b�;0޴����\\u0001\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000�z3�<\\u0011��}��!jl�qc����Og��Ҏ��S�:&>t�\\u001e�\\\\�7~�����\\u001e\\u0001\\u0000\\u0000�n\\b�\\u0000\\u0000\\u0000խc�\\u0013v��\\\\�7�ˈ|>��x�h��}u�\\u0001q����\\u001e\\u0003\\u0000\\u0000��\\b�\\u0000\\u0000\\u0000[9�\\u001d�7l��\\u001b�<ڶ��\\u0015_ӛ\\\\\\\"��\\u001f;4�\\u000f\\u001e��\\u001a�~��\\u0018?*��=��=\\u0006\\u0000\\u0000@]�S�\\u0000\\u0000\\u0000\\u0000����S�2��o�i�-�\\b���ռ\\u0003s-�;�FD\\u001c�����(��\\u000b\\u0000\\u0000P=;�\\u0001\\u0000\\u0000:�����\\u001f�S�n�:St�Mu��k|��s�_\\u0000\\u0000��\\u0011�\\u0001\\u0000\\u0000���Z\\u0018W�[T蚭�\\u0011\\r\\u0005�\\b�N�\\\\�fML=���^{G��N�O)Zn����c+�΍7�{\\f\\u00192��u���l�\\u0018:��<��'\\u0001\\u0000\\u0000�{��\\u0006\\u0000\\u0000��\\u0019o߽�]�=\\b�E�����\\u0017ϯ8�FT\\u001e:{��|&'�����?��4��q#�_\\u0000\\u0000���\\u0001\\f\\u0000\\u0000P��=�,.�a~q\\u000b6D��+܅Jw��$���'?�=�أ���z��VF��\\u0018����>��\\u0018��n��d�y�F�����\\u0003o�}�خ�\\u0015\\u0001\\u0000\\u0000�f\\u00070\\u0000\\u0000@�\\u000e�x|紃�[�F~]����#\\u001f>;�|��v�;zߑ=�v-�(��4��\\u001e_��������K\\u0016�ֵ\\u001f?L�\\u0005\\u0000\\u0000Ș\\u0000\\f\\u0000\\u0000�\\r���}�jn�#�\\u001dQ�(=V��߬��\\u0007��P<���m\\u001e?�\\u001b3�~�Z�xq�X�\\\\\\\"�kU�wѝ�9wǠQ�ez��S�Ŭ�\\u00186b@��\\u0005\\u0000\\u0000@\\u0000\\u0006\\u0000\\u0000�J���G�\\u001a�Oo��y�L�w�\\u0019gez�Zr�\\u0019\\u0013�}��\\u000f���:K�,��ze\\u0018<�_L:dt�c\\u0000\\u0000\\u0000$K\\u0000\\u0006\\u0000\\u0000�ҭ\\u00176Ŏ�\\u000f,{���S���q�����q��6�\\r\\u001e�/�u�����m\\u001e�����N�@��,�M�\\u001e\\u0015��Ȳ�\\u0000\\u0000\\u0000H�\\u0000\\f\\u0000\\u0000�\\u0003?�̡1����1��_N��^�\\u0017\\\\pa.����<��O\\u001e��Z��ŧ�\\u0014���Xp�����+�\\u0017�\\u001c\\u0011\\u0003��[�X\\u0000\\u0000\\u0000ɫ�_�\\u0006\\u0000\\u0000�\\u0001����o̍�^ސ�\\\\\\\"\\r\\u0011њ��77��y�,\\u0014\\u0011}\\u001a\\u0012?K;c�_C�tҴB�z�7�\\u001e��>8\\u0006�\\u001cS�{V>��ǟj����Wd8\\u0019\\u0000\\u0000\\u0000\\u001d�\\u0003\\u0018\\u0000\\u0000 #�\\u001fm[P���%�k_v�e�>��\\u001b\\u0006e�֘��]q�]�Ҋ��|B��\\u0017\\u0000\\u0000��\\b�\\u0000\\u0000\\u0000\\u0019���\\u0014C\\u0007���\\u0003�m���\\u0019_-m�]�m[�z��>\\u0019�����i�!^*tm\\u0000\\u0000\\u0000�r\\u00044\\u0000\\u0000@�f������\\u001fzZ��γ���G;����׾ܴ1\\u001a��o*��ӒU�]k��W�y�y7��\\u001b�g�\\u0006\\u0000\\u0000\\u0000�\\u0012�\\u0001\\u0000\\u0000\\n�p�5�p�51j�cb�w�\\u0013�\\u0007\\u000f�ۓ��\\u0012��v��/ݵ��u�]k�IgEī;�\\u0001\\u0000\\u0000�\\u000f��\\u0006\\u0000\\u0000(В?�\\u0011-\\u0017M�Go�Q�s����Y�r�#d�\\u000f�V�\\b\\u0000\\u0000\\u0000�R\\u00020\\u0000\\u0000@\\t\\u0016λ&f57ŝ_?5\\u0016�~e,���ذ����f\\u001dl�{�]\\u0019_�z��p^�#d�#\\u001f�pn���\\u000f�۵\\u0001\\u0000\\u0000���\\u0006\\u0000\\u0000(�ڵKⱹWDD����L�ђ�/�����o��8n�;3]3eӾ{W���#\\nYk��*d\\u001d\\u0000\\u0000\\u0000�\\u001d�\\u0000\\u0000\\u0000��I��\\u0002\\u001e0`@.k��2{���]�6�u��f}۠���}��9N����\\u0000\\u0000\\u0000�C\\u0000\\u0006\\u0000\\u0000�Vw�\\u000bx�X��\\u000f�����(���t���S2_�����vv\\u0003\\u0000\\u0000�>\\u0001\\u0018\\u0000\\u0000�\\u0017��/����s>�����:^�~��̮]\\u000b��xN<���-\\u001e�2�O�~^��O�Ν��\\u0005\\u0000\\u0000@�\\u0012�\\u0001\\u0000\\u0000z�\\r��޷��iӦ���\\\\գ5\\u001a\\u001b\\u001b�\\r�\\u0017\\\\?�G׭E_��\\u0003m\\u001e�\\\\\\\"\\u0002��2;��z|��ٰqS��\\u0001\\u0000\\u0000��\\t�\\u0000\\u0000\\u0000�ܔ��t���ѣc�u�Vu�\\u0011#F���\\u001f�^����g��ev�\\u001a5���U\\u0012�S�<\\u0001\\u0000\\u0000�\\u001e\\u0001\\u0018\\u0000\\u0000�.�\\u001c92�h�\\u001d\\u0003\\u0006\\f��=MM\\u0013㺟�l���߻;��\\u001a��Tޮ���8��*~���\\u0003+�����}=\\u0019\\u000b\\u0000\\u0000��4Dct~�\\u0017\\u0000\\u0000\\u0000��<�%�5\\u001a\\\\\\\"���\\u0013+z����\\u0014+W�l�xccc�;~7�[v����gٺ�5�?~j�[���s�M���:ujEk\\u001cw�B~����T�*\\u0000\\u0000\\u0000dA\\u0000\\u0006\\u0000\\u0000�\\u0003E\\u0004���#�\\u0019\\u0011\\u0017��n��-��5�E����?F�\\u001f�����\\u0013�\\u0001\\u0000\\u0000�#�\\u0001\\u0000\\u0000x��G���\\\\������\\u0000\\u0000 \\u0000IDAT̯��?��n�o��JO�xN<��\\u000b\\u0019^�o�-*�\\u0002\\u0000\\u0000P_\\u0004`\\u0000\\u0000\\u0000���U���)\\u0017ω�+�fv��e}L�����q\\u0019�\\u0000\\u0000\\u0000Б~e\\u000f\\u0000\\u0000\\u0000@mz-4V{��{/�M�Z�Jv\\u0003u�!�/�\\u0019j�W?��\\u001a�����n���\\r1��we?\\u0018\\u0000\\u0000\\u0000�\\u0011�\\u0001\\u0000\\u0000��k!�q��q�'\\u000e��m�v�ک߹36l�T�d������\\u0017׾���M�>q�g���k_�\\u0018�}��X��Ƃ�\\u0003\\u0000\\u0000 \\u0005\\u00020\\u0000\\u0000\\u0000\\u0015Y���x�%s�\\u001e#\\u0019�l��8g\\u0000\\u0000\\u00002�\\u001e�\\u0000\\u0000\\u0000�\\u001d\\re\\u000f\\u0000\\u0000\\u0000\\u0000\\u001d\\u0013�\\u0001\\u0000\\u0000�;��i\\u0000\\u0000\\u0000z'\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\\\\\\"\\u0004`\\u0000\\u0000\\u0000z\\u000f��\\u0005\\u0000\\u0000 q\\u00020\\u0000\\u0000\\u0000����\\u0002\\u0000\\u0000�8\\u0001\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000 \\u0011\\u00020\\u0000\\u0000\\u0000T���\\u0000\\u0000\\u0000�\\u0003\\u0001\\u0018\\u0000\\u0000\\u0000*��h\\u0000\\u0000\\u0000�AC4�\\u0019\\u0016\\u0000\\u0000�ֵ�y�G�??�*���X<��\\u000b%OD��\\f\\u001f\\u0014�c����#\\\\\\\"�a[��\\u0001\\u0000\\u0000�\\u0000\\f\\u0000\\u0000P\\u0007^\\u000b��\\u0012���\\u0010��\\u000b��}FĹ����\\u0003�u�}\\u00020\\u0000\\u0000@�\\u0010�\\u0001\\u0000\\u0000�@w\\u0003pG���a��A񉦽⠱C3��\\u0000\\f\\u0000\\u0000P?\\u0004`\\u0000\\u0000�:�U\\u0000��/Z\\u001e\\u0017\\\\?�����WO: &�6���\\u0005`\\u0000\\u0000��!\\u0000\\u0003\\u0000\\u0000ԁ�\\u0002�k�\\\\<���\\u000bWc�=�6}b��\\u000b�\\u0000\\u0000\\u0000��O�\\u0003\\u0000\\u0000\\u0000�\\u0016:k��t�j�#�\\u0002\\u0000\\u0000P�\\u0004`\\u0000\\u0000\\u0000�4��F\\u0017�XG��]�5\\u0014s\\u0001\\u0000\\u0000 o��\\u001e\\u0000\\u0000\\u0000��m}\\u0004s�~}�\\u0003v��w\\u001c\\u001co��ן8nd��?��N���\\\\ݳ`Y�:q�����G\\u0001\\u0000\\u0000�\\u0007\\u0004`\\u0000\\u0000�:�~æ�񿟎��o��H��\\u001d3|P|�i�8h�Ъ�;pL���\\u001a�\\u0017o=�e�������g^({\\u0014\\u0000\\u0000\\u0000\\n \\u0000\\u0003\\u0000\\u0000$��e���_<���{�8$>޴W�\\u001b�]��S�\\rssT��5��\\u0007q7�}����݋��e��]\\b\\u0000\\u0000�� \\u0000\\u0003\\u0000\\u0000�r~nUL�y��_�6}by�l.�ݿ9�߭�\\u0005\\u0007\\u0000\\u0000���>e\\u000f\\u0000\\u0000\\u0000\\u0000m�\\u0013w\\u001d�m)�\\u0000\\u0000\\u0000@=\\u0011�\\u0001\\u0000\\u0000�=����i����\\u0000\\u0000\\u0000�:#\\u0000\\u0003\\u0000\\u0000P\\u0017�}|Y�#\\u0000\\u0000\\u0000@�\\u0013�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0012!\\u0000\\u0003\\u0000\\u0000@�y��\\u0017�\\u001e\\u0001\\u0000\\u0000�\\u001a%\\u0000\\u0003\\u0000\\u0000P�����=B���g���҂'\\u0001\\u0000\\u0000�^\\b�\\u0000\\u0000\\u0000Td�n��\\u001e�&�:l�����3�����\\u0000\\u0000\\u0000@}\\u0011�\\u0001\\u0000\\u0000���q#\\u000bY���U����5����g�t�3\\u0000\\u0000\\u0000P_��=\\u0000\\u0000\\u0000\\u0000][���1d�\\u001e����݆�m�'v����^\\u0014��_\\u001c�W��z���\\u001el���4f��8h����Q{�6}k�w��?v�#\\u0000\\u0000\\u0000�\\r\\r�X�\\\\\\r\\u0000\\u0000@DL��R�:7�{T��W\\\\�|b�����{\\u001c�˴�N�ś������\\u000f�-���\\\\<'��onVsSak\\u0001\\u0000\\u0000�sv\\u0000\\u0003\\u0000\\u0000��?-y1�n�\\u001d\\n[o��A1��A�G�\\\\\\\"�f5��\\u0005��\\u0015\\u000b�=\\u0002\\u0000\\u0000\\u0000�T��L\\u0001\\u0000\\u0000�M\\u001b7\\u0014��Uw/*d���Б������[�\\b\\u0000\\u0000\\u0000t�\\u0000\\f\\u0000\\u0000P'~��Q�:\\u000f>���uj�\\u001b&\\u0001\\u0000\\u0000P�\\u0004`\\u0000\\u0000\\u0000�xj���G�\\u0003�~D6\\u0000\\u0000\\u0000�j�F��\\f\\u0000\\u0000PO&�h)t�A\\u0003�ŉ\\u0007�\\u001c\\u0013v\\u001f\\u0016o�i��׫��Y�=��������g�׏,-l���jn*|M\\u0000\\u0000\\u0000z�_�\\u0003\\u0000\\u0000\\u0000P�V��!��牸�'�<Wd\\f�\\u0015w?��8l�7�ƻ���X�aS�k\\u0000\\u0000\\u0000�&;�\\u0001\\u0000\\u0000�Pѻ�;�e\\u0000����[�;~��y��\\u000b\\u0000\\u0000P��\\u0003\\u0018\\u0000\\u0000���[�-B޻�;r�甲.\\u0000\\u0000\\u0000�����x]�\\u0007\\u001c�P�j#�5`]�b\\u0016af���ň�\\u001d.��I�V�\\r��?�d٪\\u001d��+��DL�4�k\\u0016�\\u0015�N����\\\\8��Ȑh�Hѱ\\r�P��:d\\\\\\\"���n�7�w���}~|������������y]�?�y��;\\u001b\\u00020\\u0000\\u0000@\\u0013ڼ솲GH7^v~&�l��F&�d��ge�\\u001d��s�Ź�?�C�?_�}\\u0001\\u0000\\u0000Ȇ\\u0000\\f\\u0000\\u0000Є���?���u��p���3Y经��d�LUj��K�ߜ�\\u001c\\u0005��g\\u0000\\u0000��'\\u0000\\u0003\\u0000\\u00004��?���`7���3Y���?�u�������Ç�_\\u0000\\u0000�\\u0018\\u0004`\\u0000\\u0000\\u0000�6;��i���\\u001fԸ\\u0003�(�>\\u0011���u�n)r\\u0014\\u0000\\u0000\\u0000\\u0018�\\u0000\\f\\u0000\\u0000���ع���\\u001f��J�\\u000f\\u0006RM��\\u0016e�\\u001e=��.���<T�8�����\\u0017\\u0000\\u0000 \\u0010\\u0001\\u0018\\u0000\\u0000 �f\\fx�i��\\u00174�.��,��G\\u0018���6�=\\u0002\\u0000\\u0000\\u0000\\u0019\\u0013�\\u0001\\u0000\\u0000�h�\\b<���&u��M��W����=�4�{\\u0000\\u0000\\u0000P,\\u0001\\u0018\\u0000\\u0000 �f��ь���\\u000e?~f_fkU��\\n\\u0000\\u0000@L\\u00020\\u0000\\u0000@0�\\u0010��߷��\\u0011r���W���o�=ƈ~��ۚ��\\b\\u0000\\u0000\\u0000c#\\u0000\\u0003\\u0000\\u0000\\u0004���Ѱ����?��ֱ����_��l�#\\f���#\\u001dx���\\u001e\\u0003\\u0000\\u0000�\\u001c\\t�\\u0000\\u0000\\u0000�uwv��?���1N��o.{��5����C+\\u001a�\\u000f\\u0002\\u0000\\u0000\\u0000Ȗ\\u0000\\f\\u0000\\u0000\\u0010�kϯ+{�����_�\\b����k�����1\\u0000\\u0000\\u0000(�\\u0000\\f\\u0000\\u0000�\\u0002\\u001a���!T����\\u0017���$ݝ\\u001d�#��=\\u0006\\u0000\\u0000\\u0000\\u0005j+{\\u0000\\u0000\\u0000\\u0000��a\\u0004�׵����詗K�o�\\u0006RJ����?��@Z|�������ޞ~���,��\\u0000\\u0000\\u00004\\u0006\\u0001\\u0018\\u0000\\u0000�\\u0005\\u001d�\\u001b��\\u0018\\u001cE�Ϳ��^�)����1�{�ݾ����\\u001b\\u0000\\u0000��<\\u0002\\u001a\\u0000\\u0000��\\u0015\\u0019\\u000e���)�^�\\u001b�\\u0004����k{t���m�\\u0017\\u0000\\u0000�Av\\u0000\\u0003\\u0000\\u0000P؎���:��ڥ����\\u0005]Ų�^��QТ/\\u0000\\u0000\\u0000�\\b�\\u0000\\u0000\\u0000�`���nH���֨���)e{\\u0016�@Z��L�\\u0002\\u0000\\u0000 &\\u0001\\u0018\\u0000\\u0000����37��Ҥ��N�{��q��b��q�Ѫ��\\u0005\\u0000\\u0000�V��>��)\\u0003\\u0000\\u0000���umLko����]�bS�4�\\u001b/;?�8�������O�}���\\u0006\\u0002\\u0000\\u0000 �\\te\\u000f\\u0000\\u0000\\u0000@s���H+W�,{�����~�_w�4\\t\\u0000\\u0000\\u0000�\\t�\\u0000\\u0000\\u0000�m�޽u]�u�\\u001b9M�\\u001c�\\r��/�=�A\\u0000\\u0000\\u0000\\bO\\u0000\\u0006\\u0000\\u0000 w/�����P�g��9c\\t\\u0000\\u0000����=\\u0000\\u0000\\u0000\\u0000�}��\\u000b���[�ܒ���\\u001fT�B\\u0013�ԁ���뻶��\\u001eZZ��[��\\u0002\\u0000\\u0000��\\b�\\u0000\\u0000\\u0000�j���A���V��\\u001f[1�󼮍E���u�a�ϗ.]��,Y2�:��M��\\u0019\\u0000\\u0000���\\u0011�\\u0000\\u0000\\u0000�m۶m5_��y�������#�uf̘��:\\u0000\\u0000\\u0000�.\\u0001\\u0018\\u0000\\u0000���}bm�#��\\u001a�������ڽwwfk\\u0001\\u0000\\u0000К\\u0004`\\u0000\\u0000\\u0000���_\\u001e|=0�({q��~鼲G\\u0000\\u0000\\u0000�A\\u00020\\u0000\\u0000\\u0000cr��\\u000b\\u0006_W*���>��#E�S��wߔ�Z\\u000b\\u0017.�l-\\u0000\\u0000\\u0000ZW[�\\u0003\\u0000\\u0000\\u0000\\u0010�E\\u0017]T�u\\u0017�Y�� 9������M^�z�8�\\u0001\\u0000\\u0000���\\u0001\\f\\u0000\\u0000���{�#~^k\\u0000n\\u0005#��<cƌ\\u0002'\\u0001\\u0000\\u0000 2\\u0001\\u0018\\u0000\\u0000�1{�૩2�2�\\u0019�_���Qי�{�\\u001c+w���\\u001d�3]\\u000f\\u0000\\u0000��%\\u0000\\u0003\\u0000\\u00000n\\u0013>2�/g͚U�$��~Tq]v�^>�E�3mڴL�\\u0003\\u0000\\u0000��\\t�\\u0000\\u0000\\u0000db���e�0��7*���]�?ʹ^�\\u0017/N=�ۓ�z\\u0000\\u0000\\u0000 \\u0000\\u0003\\u0000\\u0000��m�mK��\\u0019l�m`[�i�߭�(�;��x�\\u0001\\u0000\\u0000�!\\u0004`\\u0000\\u0000\\u0000�e���\\u0013~�L����J��yg���o/a�콸nU:��1��\\u001f\\u001e|�p���\\u001c\\u0000\\u0000�r��=\\u0000\\u0000\\u0000\\u0000��X�X���}*�ٶ{�\\\\9��~�گ\\u000e�>v�XZ�z�k\\u0001\\u0000\\u0000�H�\\u0000\\u0006\\u0000\\u0000�Q��nո���\\u000f�C�\\u000e��Rj?�=��\\u0000\\u0000\\u0000�*\\u0001\\u0018\\u0000\\u0000��\\u001d9���\\u0011F4�ݿ\\u001f�r�\\u0014�}\\u0006\\u0000\\u0000 w\\u00020\\u0000\\u0000\\u0000���7��\\u001eaX���\\u000b\\u0000\\u0000\\u0000E\\u0012�\\u0001\\u0000\\u0000hH\\u0003e\\u000f��,v�\\u0002\\u0000\\u0000@Q\\u0004`\\u0000\\u0000\\u0000\\u001a��%\\u0003\\u0000\\u0000@�\\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000� \\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000� \\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000� \\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000� \\u0004`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000� \\u0004`\\u0000\\u0000\\u0000\\u001a�s?�*{\\u0004\\u0000\\u0000\\u0000hz\\u00020\\u0000\\u0000\\u0000\\r��?7�=\\u0002\\u0000\\u0000\\u00004=\\u0001\\u0018\\u0000\\u0000��4P�\\u0000\\u001f8{��e�\\u0000\\u0000\\u0000\\u00005\\u0013�\\u0001\\u0000\\u0000h\\u0018/�[5�����X���\\\\��\\u001c\\u0000\\u0000\\u0000�1\\u0001\\u0018\\u0000\\u0000���҆���Q�l/\\u0006\\u0000\\u0000��\\t�\\u0000\\u0000\\u00004����e�0��Y\\u001de�\\u0000\\u0000\\u0000\\u00005\\u0013�\\u0001\\u0000\\u0000hX��Q�#g��\\u0011\\u0000\\u0000\\u0000�f\\u00020\\u0000\\u0000\\u0000\\r��=��s=\\u0007�\\u000e��٪�/\\u0002\\u0000\\u0000�\\u0006 \\u0000\\u0003\\u0000\\u0000�P6�}}�#\\fa\\u00170\\u0000\\u0000\\u0000�B\\u0000\\u0006\\u0000\\u0000����ye�\\u0000\\u0000\\u0000\\u0000MI\\u0000\\u0006\\u0000\\u0000���O�-{�!:n��G\\u0000\\u0000\\u0000�Q\\t�\\u0000\\u0000\\u00004������\\u001e�\\u0004��>%���X�\\u0018\\u0000\\u0000\\u00000\\\\\\\"\\u0001\\u0018\\u0000\\u0000����/����^\\u000f\\fs�g�~o\\u0011�\\u0000\\u0000\\u0000��\\b�\\u0000\\u0000\\u00004��o�\\u0014z��oe�k�<of\\u0011�\\u0000\\u0000\\u0000��\\b�\\u0000\\u0000\\u00004��w_����?/u�j;��ۧ\\u0016>\\u0007\\u0000\\u0000\\u0000�B\\u0000\\u0006\\u0000\\u0000����gڵzyi���\\u0013xη\\u001e(|\\u000e\\u0000\\u0000\\u0000��\\u0000\\f\\u0000\\u0000@�{u��t����\\u00068i\\u001bp%�\\u0005\\f\\u0000\\u0000@c\\u0012�\\u0001\\u0000\\u0000h\\nk�rN:r`_97��\\r��E���\\u0003\\u0000\\u0000\\u0000FQI�U�3\\u0002\\u0000\\u0000��5�k�oTR��zs�ǆ�sMW�7\\u0006\\u0000\\u0000�a�\\u0001\\f\\u0000\\u0000@����H{֭��7J���i��sc\\u0000\\u0000\\u0000\\u0018�\\u001d�\\u0000\\u0000\\u00004�������~zi����Ci��{K�?\\u0000\\u0000\\u0000\\u001c�\\u000e`\\u0000\\u0000\\u0000���w|1\\u001d��Bi�?o�u��\\u001b\\u0000\\u0000\\u0000Nf\\u00070\\u0000\\u0000\\u0000a\\f9\\u001b� \\u0007_ܑ�Y��R�\\r\\u0000\\u0000\\u0000ǳ\\u0003\\u0018\\u0000\\u0000�0�;;����\\u0014~߳��*��\\u0000\\u0000\\u0000P�\\u001d�\\u0000\\u0000\\u0000�tٟܗ�8����\\u001dH)U��������5��\\u0001\\u0000\\u0000@=�\\u0000\\u0006\\u0000\\u0000 ��?�)�u��ߔR��E���~\\u0000\\u0000\\u0000P\\u000f;�\\u0001\\u0000\\u0000\\b�����\\u0002\\u0006\\u0000\\u0000�l\\u00020\\u0000\\u0000\\u0000-��\\u0010��ّ�=\\u0000\\u0000\\u0000`8\\u001e\\u0001\\r\\u0000\\u0000@����H[�_����:z����\\u0003\\u0000\\u0000@\\u0011\\u0004`\\u0000\\u0000\\u0000Zʑ������\\fy��}�u�'gf�\\u0012\\u0000\\u0000\\u0000��#�\\u0001\\u0000\\u0000hI�\\fLN���c���1�\\u0000\\u0000\\u0000��\\u000e`\\u0000\\u0000\\u0000Z�{�w�Z\\u0000\\u0000\\u0000�\\u0011�\\u0001\\u0000\\u0000hi�wl���X\\u0015�\\u0000\\u0003\\u0000\\u0000P\\u001e\\u0001\\u0018\\u0000\\u0000���sMWzk�d��@J��{Cv�\\u0001\\u0000\\u0000@\\u001d\\u0004`\\u0000\\u0000\\u0000Z޶��4��&���λ�L�\\u0004\\u0000\\u0000�ZTR{�O�\\u0002\\u0000\\u0000�fՖNOWu�$���1\\f\\u0000\\u0000@��\\u0000\\u0006\\u0000\\u0000�\\u000f����\\u001e\\u0001\\u0000\\u0000\\u0000�E\\u0000\\u0006\\u0000\\u0000��<��k2[k�����\\u0005\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000�8}\\u0013�I�}�e�\\u0001\\u0000\\u0000\\u0000c\\\\\\\"\\u0000\\u0003\\u0000\\u0000�I�/�W�\\b\\u0000\\u0000\\u00000&\\u00020\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000@\\u0010\\u00020\\u0000\\u0000\\u0000T�ǆ�G\\u0000\\u0000\\u0000��\\t�\\u0000\\u0000\\u0000P��5]�\\u0002\\u0006\\u0000\\u0000��\\b�\\u0000\\u0000\\u00000��w�T�\\b\\u0000\\u0000\\u0000P\\u0017\\u0001\\u0018\\u0000\\u0000\\u0000�q��q}��'We4\\t\\u0000\\u0000\\u0000�F\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\bB\\u0000\\u0006\\u0000\\u0000�\\u001c\\u001cص��\\u0011\\u0000\\u0000\\u0000hA\\u00020\\u0000\\u0000\\u0000��g�;�\\u001e\\u0001\\u0000\\u0000�\\u0016$\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0004!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0004!\\u0000\\u0003\\u0000\\u0000@��>�P�#\\u0000\\u0000\\u0000Т\\u0004`\\u0000\\u0000\\u0000���u��=\\u0002\\u0000\\u0000\\u0000-J\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\b���\\u0001\\u0000\\u0000\\u0000�Q�f�M�}��R�m\\u001d�\\f\\u0003\\u0000\\u0000\\u00005�\\u0003\\u0018\\u0000\\u0000\\u0000�q��\\u001b꺾��ss�\\u0004\\u0000\\u0000\\u0000j#\\u0000\\u0003\\u0000\\u0000@\\u0015������Hi���ϕwO�z$\\u0000\\u0000\\u0000\\u0018�\\u0000\\f\\u0000\\u0000\\u0000U\\f��[�~�у=��ߓ\\f��^\\u000eS\\u0001\\u0000\\u0000�Ȝ\\u0001\\f\\u0000\\u0000\\u0000'�׵q�\\u0003C�z�{���{ ��\\u0000\\u0000\\u0000�F\\u00020\\u0000\\u0000\\u0000\\u001c��EkF�| ����ߚ���t1\\u0003\\u0001\\u0000\\u0000@\\u001d<\\u0002\\u001a\\u0000\\u0000\\u0000>0}��t�\\u0019g�xM%%�\\u0017\\u0000\\u0000��e\\u00070\\u0000\\u0000\\u0000��~�+�iڬ�#^��כ�/�W�D\\u0000\\u0000\\u0000P?\\u0001\\u0018\\u0000\\u0000\\u0000R\\u001a5��Z�<��kmA�\\u0000\\u0000\\u0000��\\b�\\u0000\\u0000\\u0000��3�\\\\�.���\\u0011��|����ў�&\\u0002\\u0000\\u0000��s\\u00060\\u0000\\u0000\\u0000-��}��w����/\\u0000\\u0000\\u0000M�\\u000e`\\u0000\\u0000\\u0000Z���ޚ>q��#^s�`O�|��\\u0005M\\u0004\\u0000\\u0000\\u0000�\\u0010�\\u0001\\u0000\\u0000h)�.�'�5}ֈ�8�\\u0017\\u0000\\u0000�f%\\u0000\\u0003\\u0000\\u0000�2Ξ~����y�\\u0000\\u0000\\u000043g\\u0000\\u0003\\u0000\\u0000�2>��k�k���\\t����8\\u0000\\u0000\\u0000�9\\u0001\\u0018\\u0000\\u0000��p�{F����\\u0007SwgG���'�:��\\u0000\\u0000\\u0000 s\\u00020\\u0000\\u0000\\u0000�����Mw}��i\\u0000\\u0000\\u0000 ?�\\u0000\\u0006\\u0000\\u0000 �+n~ �O�:�5�\\u001e>x��m��ԗ��s,\\u0000\\u0000\\u0000ȅ\\u001d�\\u0000\\u0000\\u0000�u�{F��)\\r��+�\\u0002\\u0000\\u0000Ь\\u0004`\\u0000\\u0000\\u0000Bj�<m��>\\u0003\\u0000\\u0000@4\\u00020\\u0000\\u0000\\u0000!]������~ߢ�'\\u0001\\u0000\\u0000��\\b�\\u0000\\u0000\\u0000�s��\\u000f�|�\\u001b���q\\u0012\\u0000\\u0000\\u0000(�\\u0000\\f\\u0000\\u0000@(\\u0017_{kM��\\u0002\\u0000\\u0000@D\\u00020\\u0000\\u0000\\u0000a�=���K�.{\\f\\u0000\\u0000\\u0000(�\\u0000\\f\\u0000\\u0000@\\b��מ>����1\\u0000\\u0000\\u0000�T\\u00020\\u0000\\u0000\\u0000!��\\u001f�=\\u0002\\u0000\\u0000\\u0000�N\\u0000\\u0006\\u0000\\u0000 ��\\u001d\\u001b�\\u001e\\u0001\\u0000\\u0000\\u0000J'\\u0000\\u0003\\u0000\\u0000\\u0010���\\u001e\\u0001\\u0000\\u0000\\u0000J'\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0004!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0004!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0004!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0004!\\u0000\\u0003\\u0000\\u0000\\u0010��\\u001d\\u001b�\\u001e\\u0001\\u0000\\u0000\\u0000J%\\u0000\\u0003\\u0000\\u0000\\u0010��5]u��}j\\u000e�\\u0000\\u0000\\u0000@9\\u0004`\\u0000\\u0000\\u0000B������\\u0017��i\\u0012\\u0000\\u0000\\u0000(�\\u0000\\f\\u0000\\u0000@(����k�v �4�����\\u0001\\u0000\\u0000��\\t�\\u0000\\u0000\\u0000�20�?m�k~M�Vr�\\u0005\\u0000\\u0000\\u0000�&\\u0000\\u0003\\u0000\\u0000\\u0010Α����9�\\u0000\\u0000\\u0000D!\\u0000\\u0003\\u0000\\u0000\\u0010��\\u001d\\u001bj��7>��\\u001c'\\u0001\\u0000\\u0000��\\b�\\u0000\\u0000\\u0000��sMW�����\\u000b�ސ�4\\u0000\\u0000\\u0000P\\f\\u0001\\u0018\\u0000\\u0000��\\u001e���^\\u0000\\u0000\\u0000Z�\\u0000\\f\\u0000\\u0000@,G+�/�'���Ύ����%�yM\\u0004\\u0000\\u0000\\u0000�\\u0011�\\u0001\\u0000\\u0000��} }���'��cՒQ�6����ٯߛ�T\\u0000\\u0000\\u0000P\\b\\u0001\\u0018\\u0000\\u0000�p~���N���3g�g~�������S�{g�73��O�u6\\u0000\\u0000\\u0000�S%�����\\u0000\\u0000\\u0000�<��ژ��ٓN;㬔*�4ᔉ#^�n����i�\\u00154\\u001d\\u0000\\u0000\\u0000d�\\u000e`\\u0000\\u0000\\u0000ZB���iB۩��ߔR��?����\\u0000\\u0000\\u0000 {\\u00020\\u0000\\u0000\\u0000��c\\u0017}��\\u0011\\u0000\\u0000\\u0000`L<\\u0002\\u001a\\u0000\\u0000��w�\\u0005U�߳~UJ���\\u0019\\u0000\\u0000��!\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0004�\\u0011�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000w\\u0000\\u0000\\t�IDAT\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000A\\b�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�מ\\u001d�\\u0000\\u0000\\u0000\\u0000\\f��W\\u001aM\\b`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\t\\u0001\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u00000!�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000&\\u00040\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000��\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0013\\u0002\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000`B\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000L\\b`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\t\\u0001\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u00000!�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000&\\u00040\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000��\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0013\\u0002\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000`B\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000L\\b`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\t\\u0001\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u00000!�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000&\\u00040\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000��\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0013\\u0002\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000`B\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000L\\b`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\t\\u0001\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u00000!�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000&\\u00040\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000��\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0013\\u0002\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000`B\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000L\\b`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\t\\u0001\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u00000!�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000&\\u00040\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000��\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0013\\u0002\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000`B\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000L\\b`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\t\\u0001\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u00000!�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000&\\u00040\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000��\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0013\\u0002\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000`B\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000L\\b`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\t\\u0001\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u00000!�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000&\\u00040\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000��\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0013\\u0002\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000`B\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000L\\b`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\t\\u0001\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u00000!�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000&\\u00040\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000��\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0013\\u0002\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000`B\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000L\\b`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\t\\u0001\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u00000!�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000&\\u00040\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000��\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0013\\u0002\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000`B\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000L\\b`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\t\\u0001\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u00000!�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000&\\u00040\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000��\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0013\\u0002\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000`B\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000L\\b`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\t\\u0001\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u00000!�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000&\\u00040\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000��\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0013\\u0002\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000`B\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000L\\b`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\t\\u0001\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u00000!�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000&\\u00040\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000��\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0013\\u0002\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000`B\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000L\\b`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\t\\u0001\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u00000!�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000&\\u00040\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000��\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0013\\u0002\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000`B\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000L\\b`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\t\\u0001\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u00000!�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000&\\u00040\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000��\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0013\\u0002\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000`B\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000L\\b`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\t\\u0001\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u00000!�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000&\\u00040\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000��\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0013\\u0002\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000`B\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000L\\b`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\t\\u0001\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u00000!�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000&\\u00040\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000��\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0013\\u0002\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000`B\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000L\\b`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\t\\u0001\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u00000!�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000&\\u00040\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000��\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0013\\u0002\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000`B\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000L\\b`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\t\\u0001\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u00000!�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000&\\u00040\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000��\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\u0010�\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0013\\u0002\\u0018\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000`B\\u0000\\u0003\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000L\\b`\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\t\\u0001\\f\\u0000\\u0000\\u0000\\u0000\\u0000\\u00000!�\\u0001\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000&\\u00040\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000��\\u0000\\u0006\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000�\\b\\u00027�x����\\u0000\\u0000\\u0000\\u0000IEND�B`�\"","status":200,"headers":{"nel":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}","date":"Wed, 15 Jan 2025 21:13:31 GMT","etag":"\"bafkreif2qrtb4vkg26ljjzmevie7nifxkuk2o4uyml6jz4fhzyyx56w4ku\"","vary":"Accept-Encoding","cf-ray":"9028dec42a462a23-CDG","pragma":"public","server":"cloudflare","alt-svc":"h3=\":443\"; ma=86400","priority":"u=3,i","report-to":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=H%2BtAQC%2F0xcxElSSD5ACVwMdd1cfVWqXAI9cfd6um1VPoE9NZQ381wtoecGCDCOLIQNALFtyow3a%2F1yYxUcyqao%2BCwkjg5u3DakVkyETgJ0W9JQxsltERWzuQTBp709gh3el2\"}],\"group\":\"cf-nel\",\"max_age\":604800}","x-ipfs-path":"/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky/index.png","content-type":"image/png","x-ipfs-roots":"bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky,bafkreif2qrtb4vkg26ljjzmevie7nifxkuk2o4uyml6jz4fhzyyx56w4ku","accept-ranges":"bytes","server-timing":"cfL4;desc=\"?proto=QUIC&rtt=14669&min_rtt=14140&rtt_var=2652&sent=13&recv=11&lost=0&retrans=0&sent_bytes=4297&recv_bytes=5203&delivery_rate=708&cwnd=12000&unsent_bytes=0&cid=ce7f2ca09bbdd9bb&ts=197&x=1\", cfExtPri, cfHdrFlush;dur=0","content-length":"18930","cf-cache-status":"HIT","strict-transport-security":"max-age=63072000; includeSubDomains; preload","cross-origin-opener-policy":"same-origin","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET","cross-origin-embedder-policy":"require-corp","cross-origin-resource-policy":"cross-origin","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":true,"timestamp":1736975611650},{"data":{"url":"https://cache.teia.rocks/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky/index.wasm","host":"cache.teia.rocks","path":"/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky/index.wasm","type":"http","query":"","method":"GET","headers":{"referer":"https://cache.teia.rocks/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky/?creator=tz1e3fYe1G6a7vkvj4tudf7ZBc8Y5BdQHdPM&objkt=863724","sec-ch-ua":"\"HeadlessChrome\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/131.0.6778.33 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":true,"timestamp":1736975611696},{"data":{"url":"https://cache.teia.rocks/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky/index.pck","host":"cache.teia.rocks","path":"/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky/index.pck","type":"http","query":"","method":"GET","headers":{"referer":"https://cache.teia.rocks/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky/?creator=tz1e3fYe1G6a7vkvj4tudf7ZBc8Y5BdQHdPM&objkt=863724","sec-ch-ua":"\"HeadlessChrome\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/131.0.6778.33 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":true,"timestamp":1736975611696},{"data":{"url":"https://cache.teia.rocks/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky/index.js","body":"\"\\nvar Godot = (() => {\\n  var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined;\\n  \\n  return (\\nfunction(moduleArg = {}) {\\n  var moduleRtn;\\n\\nvar Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=typeof window==\\\\\\\"object\\\\\\\";var ENVIRONMENT_IS_WORKER=typeof importScripts==\\\\\\\"function\\\\\\\";var ENVIRONMENT_IS_NODE=typeof process==\\\\\\\"object\\\\\\\"&&typeof process.versions==\\\\\\\"object\\\\\\\"&&typeof process.versions.node==\\\\\\\"string\\\\\\\";var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram=\\\\\\\"./this.program\\\\\\\";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory=\\\\\\\"\\\\\\\";function locateFile(path){if(Module[\\\\\\\"locateFile\\\\\\\"]){return Module[\\\\\\\"locateFile\\\\\\\"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=\\\\\\\"undefined\\\\\\\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith(\\\\\\\"blob:\\\\\\\")){scriptDirectory=\\\\\\\"\\\\\\\"}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,\\\\\\\"\\\\\\\").lastIndexOf(\\\\\\\"/\\\\\\\")+1)}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open(\\\\\\\"GET\\\\\\\",url,false);xhr.responseType=\\\\\\\"arraybuffer\\\\\\\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=url=>fetch(url,{credentials:\\\\\\\"same-origin\\\\\\\"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+\\\\\\\" : \\\\\\\"+response.url))})}}else{}var out=Module[\\\\\\\"print\\\\\\\"]||console.log.bind(console);var err=Module[\\\\\\\"printErr\\\\\\\"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module[\\\\\\\"arguments\\\\\\\"])arguments_=Module[\\\\\\\"arguments\\\\\\\"];if(Module[\\\\\\\"thisProgram\\\\\\\"])thisProgram=Module[\\\\\\\"thisProgram\\\\\\\"];if(Module[\\\\\\\"quit\\\\\\\"])quit_=Module[\\\\\\\"quit\\\\\\\"];var wasmBinary;if(Module[\\\\\\\"wasmBinary\\\\\\\"])wasmBinary=Module[\\\\\\\"wasmBinary\\\\\\\"];var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module[\\\\\\\"HEAP8\\\\\\\"]=HEAP8=new Int8Array(b);Module[\\\\\\\"HEAP16\\\\\\\"]=HEAP16=new Int16Array(b);Module[\\\\\\\"HEAPU8\\\\\\\"]=HEAPU8=new Uint8Array(b);Module[\\\\\\\"HEAPU16\\\\\\\"]=HEAPU16=new Uint16Array(b);Module[\\\\\\\"HEAP32\\\\\\\"]=HEAP32=new Int32Array(b);Module[\\\\\\\"HEAPU32\\\\\\\"]=HEAPU32=new Uint32Array(b);Module[\\\\\\\"HEAPF32\\\\\\\"]=HEAPF32=new Float32Array(b);Module[\\\\\\\"HEAPF64\\\\\\\"]=HEAPF64=new Float64Array(b);Module[\\\\\\\"HEAP64\\\\\\\"]=HEAP64=new BigInt64Array(b);Module[\\\\\\\"HEAPU64\\\\\\\"]=HEAPU64=new BigUint64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\\\\\\\"preRun\\\\\\\"]){if(typeof Module[\\\\\\\"preRun\\\\\\\"]==\\\\\\\"function\\\\\\\")Module[\\\\\\\"preRun\\\\\\\"]=[Module[\\\\\\\"preRun\\\\\\\"]];while(Module[\\\\\\\"preRun\\\\\\\"].length){addOnPreRun(Module[\\\\\\\"preRun\\\\\\\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module[\\\\\\\"noFSInit\\\\\\\"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();SOCKFS.root=FS.mount(SOCKFS,{},null);callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){___funcs_on_exit();callRuntimeCallbacks(__ATEXIT__);FS.quit();TTY.shutdown();IDBFS.quit();runtimeExited=true}function postRun(){if(Module[\\\\\\\"postRun\\\\\\\"]){if(typeof Module[\\\\\\\"postRun\\\\\\\"]==\\\\\\\"function\\\\\\\")Module[\\\\\\\"postRun\\\\\\\"]=[Module[\\\\\\\"postRun\\\\\\\"]];while(Module[\\\\\\\"postRun\\\\\\\"].length){addOnPostRun(Module[\\\\\\\"postRun\\\\\\\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;Module[\\\\\\\"monitorRunDependencies\\\\\\\"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module[\\\\\\\"monitorRunDependencies\\\\\\\"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module[\\\\\\\"onAbort\\\\\\\"]?.(what);what=\\\\\\\"Aborted(\\\\\\\"+what+\\\\\\\")\\\\\\\";err(what);ABORT=true;EXITSTATUS=1;what+=\\\\\\\". Build with -sASSERTIONS for more info.\\\\\\\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix=\\\\\\\"data:application/octet-stream;base64,\\\\\\\";var isDataURI=filename=>filename.startsWith(dataURIPrefix);function findWasmBinary(){var f=\\\\\\\"godot.web.template_debug.wasm32.nothreads.wasm\\\\\\\";if(!isDataURI(f)){return locateFile(f)}return f}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw\\\\\\\"both async and sync fetching of the wasm failed\\\\\\\"}function getBinaryPromise(binaryFile){if(!wasmBinary){return readAsync(binaryFile).then(response=>new Uint8Array(response),()=>getBinarySync(binaryFile))}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming==\\\\\\\"function\\\\\\\"&&!isDataURI(binaryFile)&&typeof fetch==\\\\\\\"function\\\\\\\"){return fetch(binaryFile,{credentials:\\\\\\\"same-origin\\\\\\\"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err(\\\\\\\"falling back to ArrayBuffer instantiation\\\\\\\");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function getWasmImports(){return{a:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports[\\\\\\\"lf\\\\\\\"];updateMemoryViews();wasmTable=wasmExports[\\\\\\\"xf\\\\\\\"];addOnInit(wasmExports[\\\\\\\"mf\\\\\\\"]);removeRunDependency(\\\\\\\"wasm-instantiate\\\\\\\");return wasmExports}addRunDependency(\\\\\\\"wasm-instantiate\\\\\\\");function receiveInstantiationResult(result){receiveInstance(result[\\\\\\\"instance\\\\\\\"])}if(Module[\\\\\\\"instantiateWasm\\\\\\\"]){try{return Module[\\\\\\\"instantiateWasm\\\\\\\"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}if(!wasmBinaryFile)wasmBinaryFile=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}function ExitStatus(status){this.name=\\\\\\\"ExitStatus\\\\\\\";this.message=`Program terminated with exit(${status})`;this.status=status}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};function getValue(ptr,type=\\\\\\\"i8\\\\\\\"){if(type.endsWith(\\\\\\\"*\\\\\\\"))type=\\\\\\\"*\\\\\\\";switch(type){case\\\\\\\"i1\\\\\\\":return HEAP8[ptr];case\\\\\\\"i8\\\\\\\":return HEAP8[ptr];case\\\\\\\"i16\\\\\\\":return HEAP16[ptr>>1];case\\\\\\\"i32\\\\\\\":return HEAP32[ptr>>2];case\\\\\\\"i64\\\\\\\":return HEAP64[ptr>>3];case\\\\\\\"float\\\\\\\":return HEAPF32[ptr>>2];case\\\\\\\"double\\\\\\\":return HEAPF64[ptr>>3];case\\\\\\\"*\\\\\\\":return HEAPU32[ptr>>2];default:abort(`invalid type for getValue: ${type}`)}}var noExitRuntime=Module[\\\\\\\"noExitRuntime\\\\\\\"]||false;function setValue(ptr,value,type=\\\\\\\"i8\\\\\\\"){if(type.endsWith(\\\\\\\"*\\\\\\\"))type=\\\\\\\"*\\\\\\\";switch(type){case\\\\\\\"i1\\\\\\\":HEAP8[ptr]=value;break;case\\\\\\\"i8\\\\\\\":HEAP8[ptr]=value;break;case\\\\\\\"i16\\\\\\\":HEAP16[ptr>>1]=value;break;case\\\\\\\"i32\\\\\\\":HEAP32[ptr>>2]=value;break;case\\\\\\\"i64\\\\\\\":HEAP64[ptr>>3]=BigInt(value);break;case\\\\\\\"float\\\\\\\":HEAPF32[ptr>>2]=value;break;case\\\\\\\"double\\\\\\\":HEAPF64[ptr>>3]=value;break;case\\\\\\\"*\\\\\\\":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var wasmTable;var getWasmTableEntry=funcPtr=>wasmTable.get(funcPtr);var ___call_sighandler=(fp,sig)=>getWasmTableEntry(fp)(sig);var PATH={isAbs:path=>path.charAt(0)===\\\\\\\"/\\\\\\\",splitPath:filename=>{var splitPathRe=/^(\\\\/?|)([\\\\s\\\\S]*?)((?:\\\\.{1,2}|[^\\\\/]+?|)(\\\\.[^.\\\\/]*|))(?:[\\\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\\\\\\\".\\\\\\\"){parts.splice(i,1)}else if(last===\\\\\\\"..\\\\\\\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\\\\\\\"..\\\\\\\")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)===\\\\\\\"/\\\\\\\";path=PATH.normalizeArray(path.split(\\\\\\\"/\\\\\\\").filter(p=>!!p),!isAbsolute).join(\\\\\\\"/\\\\\\\");if(!path&&!isAbsolute){path=\\\\\\\".\\\\\\\"}if(path&&trailingSlash){path+=\\\\\\\"/\\\\\\\"}return(isAbsolute?\\\\\\\"/\\\\\\\":\\\\\\\"\\\\\\\")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\\\\\\\".\\\\\\\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path===\\\\\\\"/\\\\\\\")return\\\\\\\"/\\\\\\\";path=PATH.normalize(path);path=path.replace(/\\\\/$/,\\\\\\\"\\\\\\\");var lastSlash=path.lastIndexOf(\\\\\\\"/\\\\\\\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:(...paths)=>PATH.normalize(paths.join(\\\\\\\"/\\\\\\\")),join2:(l,r)=>PATH.normalize(l+\\\\\\\"/\\\\\\\"+r)};var initRandomFill=()=>{if(typeof crypto==\\\\\\\"object\\\\\\\"&&typeof crypto[\\\\\\\"getRandomValues\\\\\\\"]==\\\\\\\"function\\\\\\\"){return view=>crypto.getRandomValues(view)}else abort(\\\\\\\"initRandomDevice\\\\\\\")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH_FS={resolve:(...args)=>{var resolvedPath=\\\\\\\"\\\\\\\",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!=\\\\\\\"string\\\\\\\"){throw new TypeError(\\\\\\\"Arguments to path.resolve must be strings\\\\\\\")}else if(!path){return\\\\\\\"\\\\\\\"}resolvedPath=path+\\\\\\\"/\\\\\\\"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split(\\\\\\\"/\\\\\\\").filter(p=>!!p),!resolvedAbsolute).join(\\\\\\\"/\\\\\\\");return(resolvedAbsolute?\\\\\\\"/\\\\\\\":\\\\\\\"\\\\\\\")+resolvedPath||\\\\\\\".\\\\\\\"},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!==\\\\\\\"\\\\\\\")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!==\\\\\\\"\\\\\\\")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split(\\\\\\\"/\\\\\\\"));var toParts=trim(to.split(\\\\\\\"/\\\\\\\"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push(\\\\\\\"..\\\\\\\")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join(\\\\\\\"/\\\\\\\")}};var UTF8Decoder=typeof TextDecoder!=\\\\\\\"undefined\\\\\\\"?new TextDecoder:undefined;var UTF8ArrayToString=(heapOrArray,idx,maxBytesToRead)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str=\\\\\\\"\\\\\\\";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i<str.length;++i){var c=str.charCodeAt(i);if(c<=127){len++}else if(c<=2047){len+=2}else if(c>=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(typeof window!=\\\\\\\"undefined\\\\\\\"&&typeof window.prompt==\\\\\\\"function\\\\\\\"){result=window.prompt(\\\\\\\"Input: \\\\\\\");if(result!==null){result+=\\\\\\\"\\\\n\\\\\\\"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char(tty){return FS_stdin_getChar()},put_char(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var zeroMemory=(address,size)=>{HEAPU8.fill(0,address,address+size);return address};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,\\\\\\\"/\\\\\\\",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[\\\\\\\".\\\\\\\",\\\\\\\"..\\\\\\\"];for(var key of Object.keys(node.contents)){entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write(stream,buffer,offset,length,position,canOwn){if(buffer.buffer===HEAP8.buffer){canOwn=false}if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap(stream,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===HEAP8.buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}HEAP8.set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync(stream,buffer,offset,length,mmapFlags){MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var asyncLoad=(url,onload,onerror,noRunDep)=>{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):\\\\\\\"\\\\\\\";readAsync(url).then(arrayBuffer=>{onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},err=>{if(onerror){onerror()}else{throw`Loading data file \\\\\\\"${url}\\\\\\\" failed.`}});if(dep)addRunDependency(dep)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=Module[\\\\\\\"preloadPlugins\\\\\\\"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!=\\\\\\\"undefined\\\\\\\")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin[\\\\\\\"canHandle\\\\\\\"](fullname)){plugin[\\\\\\\"handle\\\\\\\"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url==\\\\\\\"string\\\\\\\"){asyncLoad(url,processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={r:0,\\\\\\\"r+\\\\\\\":2,w:512|64|1,\\\\\\\"w+\\\\\\\":512|64|2,a:1024|64|1,\\\\\\\"a+\\\\\\\":1024|64|2};var flags=flagModes[str];if(typeof flags==\\\\\\\"undefined\\\\\\\"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var IDBFS={dbs:{},indexedDB:()=>{if(typeof indexedDB!=\\\\\\\"undefined\\\\\\\")return indexedDB;var ret=null;if(typeof window==\\\\\\\"object\\\\\\\")ret=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB;return ret},DB_VERSION:21,DB_STORE_NAME:\\\\\\\"FILE_DATA\\\\\\\",queuePersist:mount=>{function onPersistComplete(){if(mount.idbPersistState===\\\\\\\"again\\\\\\\")startPersist();else mount.idbPersistState=0}function startPersist(){mount.idbPersistState=\\\\\\\"idb\\\\\\\";IDBFS.syncfs(mount,false,onPersistComplete)}if(!mount.idbPersistState){mount.idbPersistState=setTimeout(startPersist,0)}else if(mount.idbPersistState===\\\\\\\"idb\\\\\\\"){mount.idbPersistState=\\\\\\\"again\\\\\\\"}},mount:mount=>{var mnt=MEMFS.mount(mount);if(mount?.opts?.autoPersist){mnt.idbPersistState=0;var memfs_node_ops=mnt.node_ops;mnt.node_ops=Object.assign({},mnt.node_ops);mnt.node_ops.mknod=(parent,name,mode,dev)=>{var node=memfs_node_ops.mknod(parent,name,mode,dev);node.node_ops=mnt.node_ops;node.idbfs_mount=mnt.mount;node.memfs_stream_ops=node.stream_ops;node.stream_ops=Object.assign({},node.stream_ops);node.stream_ops.write=(stream,buffer,offset,length,position,canOwn)=>{stream.node.isModified=true;return node.memfs_stream_ops.write(stream,buffer,offset,length,position,canOwn)};node.stream_ops.close=stream=>{var n=stream.node;if(n.isModified){IDBFS.queuePersist(n.idbfs_mount);n.isModified=false}if(n.memfs_stream_ops.close)return n.memfs_stream_ops.close(stream)};return node};mnt.node_ops.mkdir=(...args)=>(IDBFS.queuePersist(mnt.mount),memfs_node_ops.mkdir(...args));mnt.node_ops.rmdir=(...args)=>(IDBFS.queuePersist(mnt.mount),memfs_node_ops.rmdir(...args));mnt.node_ops.symlink=(...args)=>(IDBFS.queuePersist(mnt.mount),memfs_node_ops.symlink(...args));mnt.node_ops.unlink=(...args)=>(IDBFS.queuePersist(mnt.mount),memfs_node_ops.unlink(...args));mnt.node_ops.rename=(...args)=>(IDBFS.queuePersist(mnt.mount),memfs_node_ops.rename(...args))}return mnt},syncfs:(mount,populate,callback)=>{IDBFS.getLocalSet(mount,(err,local)=>{if(err)return callback(err);IDBFS.getRemoteSet(mount,(err,remote)=>{if(err)return callback(err);var src=populate?remote:local;var dst=populate?local:remote;IDBFS.reconcile(src,dst,callback)})})},quit:()=>{Object.values(IDBFS.dbs).forEach(value=>value.close());IDBFS.dbs={}},getDB:(name,callback)=>{var db=IDBFS.dbs[name];if(db){return callback(null,db)}var req;try{req=IDBFS.indexedDB().open(name,IDBFS.DB_VERSION)}catch(e){return callback(e)}if(!req){return callback(\\\\\\\"Unable to connect to IndexedDB\\\\\\\")}req.onupgradeneeded=e=>{var db=e.target.result;var transaction=e.target.transaction;var fileStore;if(db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)){fileStore=transaction.objectStore(IDBFS.DB_STORE_NAME)}else{fileStore=db.createObjectStore(IDBFS.DB_STORE_NAME)}if(!fileStore.indexNames.contains(\\\\\\\"timestamp\\\\\\\")){fileStore.createIndex(\\\\\\\"timestamp\\\\\\\",\\\\\\\"timestamp\\\\\\\",{unique:false})}};req.onsuccess=()=>{db=req.result;IDBFS.dbs[name]=db;callback(null,db)};req.onerror=e=>{callback(e.target.error);e.preventDefault()}},getLocalSet:(mount,callback)=>{var entries={};function isRealDir(p){return p!==\\\\\\\".\\\\\\\"&&p!==\\\\\\\"..\\\\\\\"}function toAbsolute(root){return p=>PATH.join2(root,p)}var check=FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));while(check.length){var path=check.pop();var stat;try{stat=FS.stat(path)}catch(e){return callback(e)}if(FS.isDir(stat.mode)){check.push(...FS.readdir(path).filter(isRealDir).map(toAbsolute(path)))}entries[path]={timestamp:stat.mtime}}return callback(null,{type:\\\\\\\"local\\\\\\\",entries:entries})},getRemoteSet:(mount,callback)=>{var entries={};IDBFS.getDB(mount.mountpoint,(err,db)=>{if(err)return callback(err);try{var transaction=db.transaction([IDBFS.DB_STORE_NAME],\\\\\\\"readonly\\\\\\\");transaction.onerror=e=>{callback(e.target.error);e.preventDefault()};var store=transaction.objectStore(IDBFS.DB_STORE_NAME);var index=store.index(\\\\\\\"timestamp\\\\\\\");index.openKeyCursor().onsuccess=event=>{var cursor=event.target.result;if(!cursor){return callback(null,{type:\\\\\\\"remote\\\\\\\",db:db,entries:entries})}entries[cursor.primaryKey]={timestamp:cursor.key};cursor.continue()}}catch(e){return callback(e)}})},loadLocalEntry:(path,callback)=>{var stat,node;try{var lookup=FS.lookupPath(path);node=lookup.node;stat=FS.stat(path)}catch(e){return callback(e)}if(FS.isDir(stat.mode)){return callback(null,{timestamp:stat.mtime,mode:stat.mode})}else if(FS.isFile(stat.mode)){node.contents=MEMFS.getFileDataAsTypedArray(node);return callback(null,{timestamp:stat.mtime,mode:stat.mode,contents:node.contents})}else{return callback(new Error(\\\\\\\"node type not supported\\\\\\\"))}},storeLocalEntry:(path,entry,callback)=>{try{if(FS.isDir(entry[\\\\\\\"mode\\\\\\\"])){FS.mkdirTree(path,entry[\\\\\\\"mode\\\\\\\"])}else if(FS.isFile(entry[\\\\\\\"mode\\\\\\\"])){FS.writeFile(path,entry[\\\\\\\"contents\\\\\\\"],{canOwn:true})}else{return callback(new Error(\\\\\\\"node type not supported\\\\\\\"))}FS.chmod(path,entry[\\\\\\\"mode\\\\\\\"]);FS.utime(path,entry[\\\\\\\"timestamp\\\\\\\"],entry[\\\\\\\"timestamp\\\\\\\"])}catch(e){return callback(e)}callback(null)},removeLocalEntry:(path,callback)=>{try{var stat=FS.stat(path);if(FS.isDir(stat.mode)){FS.rmdir(path)}else if(FS.isFile(stat.mode)){FS.unlink(path)}}catch(e){return callback(e)}callback(null)},loadRemoteEntry:(store,path,callback)=>{var req=store.get(path);req.onsuccess=event=>callback(null,event.target.result);req.onerror=e=>{callback(e.target.error);e.preventDefault()}},storeRemoteEntry:(store,path,entry,callback)=>{try{var req=store.put(entry,path)}catch(e){callback(e);return}req.onsuccess=event=>callback();req.onerror=e=>{callback(e.target.error);e.preventDefault()}},removeRemoteEntry:(store,path,callback)=>{var req=store.delete(path);req.onsuccess=event=>callback();req.onerror=e=>{callback(e.target.error);e.preventDefault()}},reconcile:(src,dst,callback)=>{var total=0;var create=[];Object.keys(src.entries).forEach(function(key){var e=src.entries[key];var e2=dst.entries[key];if(!e2||e[\\\\\\\"timestamp\\\\\\\"].getTime()!=e2[\\\\\\\"timestamp\\\\\\\"].getTime()){create.push(key);total++}});var remove=[];Object.keys(dst.entries).forEach(function(key){if(!src.entries[key]){remove.push(key);total++}});if(!total){return callback(null)}var errored=false;var db=src.type===\\\\\\\"remote\\\\\\\"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],\\\\\\\"readwrite\\\\\\\");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err&&!errored){errored=true;return callback(err)}}transaction.onerror=transaction.onabort=e=>{done(e.target.error);e.preventDefault()};transaction.oncomplete=e=>{if(!errored){callback(null)}};create.sort().forEach(path=>{if(dst.type===\\\\\\\"local\\\\\\\"){IDBFS.loadRemoteEntry(store,path,(err,entry)=>{if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)})}else{IDBFS.loadLocalEntry(path,(err,entry)=>{if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)})}});remove.sort().reverse().forEach(path=>{if(dst.type===\\\\\\\"local\\\\\\\"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}})}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:\\\\\\\"/\\\\\\\",initialized:false,ignorePermissions:true,ErrnoError:class{constructor(errno){this.name=\\\\\\\"ErrnoError\\\\\\\";this.errno=errno}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev;this.readMode=292|73;this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){path=PATH_FS.resolve(path);if(!path)return{path:\\\\\\\"\\\\\\\",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split(\\\\\\\"/\\\\\\\").filter(p=>!!p);var current=FS.root;var current_path=\\\\\\\"/\\\\\\\";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count+1});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!==\\\\\\\"/\\\\\\\"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=[\\\\\\\"r\\\\\\\",\\\\\\\"w\\\\\\\",\\\\\\\"rw\\\\\\\"][flag&3];if(flag&512){perms+=\\\\\\\"w\\\\\\\"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes(\\\\\\\"r\\\\\\\")&&!(node.mode&292)){return 2}else if(perms.includes(\\\\\\\"w\\\\\\\")&&!(node.mode&146)){return 2}else if(perms.includes(\\\\\\\"x\\\\\\\")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,\\\\\\\"x\\\\\\\");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,\\\\\\\"wx\\\\\\\")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,\\\\\\\"wx\\\\\\\");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!==\\\\\\\"r\\\\\\\"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate==\\\\\\\"function\\\\\\\"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint===\\\\\\\"/\\\\\\\";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name===\\\\\\\".\\\\\\\"||name===\\\\\\\"..\\\\\\\"){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split(\\\\\\\"/\\\\\\\");var d=\\\\\\\"\\\\\\\";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+=\\\\\\\"/\\\\\\\"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev(path,mode,dev){if(typeof dev==\\\\\\\"undefined\\\\\\\"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!==\\\\\\\".\\\\\\\"){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!==\\\\\\\".\\\\\\\"){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,\\\\\\\"w\\\\\\\");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name);old_node.parent=new_dir}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat(path){return FS.stat(path,true)},chmod(path,mode,dontFollow){var node;if(typeof path==\\\\\\\"string\\\\\\\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod(path,mode){FS.chmod(path,mode,true)},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.chmod(stream.node,mode)},chown(path,uid,gid,dontFollow){var node;if(typeof path==\\\\\\\"string\\\\\\\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown(path,uid,gid){FS.chown(path,uid,gid,true)},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.chown(stream.node,uid,gid)},truncate(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==\\\\\\\"string\\\\\\\"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,\\\\\\\"w\\\\\\\");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open(path,flags,mode){if(path===\\\\\\\"\\\\\\\"){throw new FS.ErrnoError(44)}flags=typeof flags==\\\\\\\"string\\\\\\\"?FS_modeStringToFlags(flags):flags;if(flags&64){mode=typeof mode==\\\\\\\"undefined\\\\\\\"?438:mode;mode=mode&4095|32768}else{mode=0}var node;if(typeof path==\\\\\\\"object\\\\\\\"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module[\\\\\\\"logReadFiles\\\\\\\"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed(stream){return stream.fd===null},llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=\\\\\\\"undefined\\\\\\\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=\\\\\\\"undefined\\\\\\\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap(stream,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync(stream,buffer,offset,length,mmapFlags){if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags||0;opts.encoding=opts.encoding||\\\\\\\"binary\\\\\\\";if(opts.encoding!==\\\\\\\"utf8\\\\\\\"&&opts.encoding!==\\\\\\\"binary\\\\\\\"){throw new Error(`Invalid encoding type \\\\\\\"${opts.encoding}\\\\\\\"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding===\\\\\\\"utf8\\\\\\\"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding===\\\\\\\"binary\\\\\\\"){ret=buf}FS.close(stream);return ret},writeFile(path,data,opts={}){opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==\\\\\\\"string\\\\\\\"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error(\\\\\\\"Unsupported data type\\\\\\\")}FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,\\\\\\\"x\\\\\\\");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir(\\\\\\\"/tmp\\\\\\\");FS.mkdir(\\\\\\\"/home\\\\\\\");FS.mkdir(\\\\\\\"/home/web_user\\\\\\\")},createDefaultDevices(){FS.mkdir(\\\\\\\"/dev\\\\\\\");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev(\\\\\\\"/dev/null\\\\\\\",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev(\\\\\\\"/dev/tty\\\\\\\",FS.makedev(5,0));FS.mkdev(\\\\\\\"/dev/tty1\\\\\\\",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice(\\\\\\\"/dev\\\\\\\",\\\\\\\"random\\\\\\\",randomByte);FS.createDevice(\\\\\\\"/dev\\\\\\\",\\\\\\\"urandom\\\\\\\",randomByte);FS.mkdir(\\\\\\\"/dev/shm\\\\\\\");FS.mkdir(\\\\\\\"/dev/shm/tmp\\\\\\\")},createSpecialDirectories(){FS.mkdir(\\\\\\\"/proc\\\\\\\");var proc_self=FS.mkdir(\\\\\\\"/proc/self\\\\\\\");FS.mkdir(\\\\\\\"/proc/self/fd\\\\\\\");FS.mount({mount(){var node=FS.createNode(proc_self,\\\\\\\"fd\\\\\\\",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:\\\\\\\"fake\\\\\\\"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},\\\\\\\"/proc/self/fd\\\\\\\")},createStandardStreams(){if(Module[\\\\\\\"stdin\\\\\\\"]){FS.createDevice(\\\\\\\"/dev\\\\\\\",\\\\\\\"stdin\\\\\\\",Module[\\\\\\\"stdin\\\\\\\"])}else{FS.symlink(\\\\\\\"/dev/tty\\\\\\\",\\\\\\\"/dev/stdin\\\\\\\")}if(Module[\\\\\\\"stdout\\\\\\\"]){FS.createDevice(\\\\\\\"/dev\\\\\\\",\\\\\\\"stdout\\\\\\\",null,Module[\\\\\\\"stdout\\\\\\\"])}else{FS.symlink(\\\\\\\"/dev/tty\\\\\\\",\\\\\\\"/dev/stdout\\\\\\\")}if(Module[\\\\\\\"stderr\\\\\\\"]){FS.createDevice(\\\\\\\"/dev\\\\\\\",\\\\\\\"stderr\\\\\\\",null,Module[\\\\\\\"stderr\\\\\\\"])}else{FS.symlink(\\\\\\\"/dev/tty1\\\\\\\",\\\\\\\"/dev/stderr\\\\\\\")}var stdin=FS.open(\\\\\\\"/dev/stdin\\\\\\\",0);var stdout=FS.open(\\\\\\\"/dev/stdout\\\\\\\",1);var stderr=FS.open(\\\\\\\"/dev/stderr\\\\\\\",1)},staticInit(){[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=\\\\\\\"<generic error, no stack>\\\\\\\"});FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\\\\\\\"/\\\\\\\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS:MEMFS,IDBFS:IDBFS}},init(input,output,error){FS.init.initialized=true;Module[\\\\\\\"stdin\\\\\\\"]=input||Module[\\\\\\\"stdin\\\\\\\"];Module[\\\\\\\"stdout\\\\\\\"]=output||Module[\\\\\\\"stdout\\\\\\\"];Module[\\\\\\\"stderr\\\\\\\"]=error||Module[\\\\\\\"stderr\\\\\\\"];FS.createStandardStreams()},quit(){FS.init.initialized=false;_fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path===\\\\\\\"/\\\\\\\"}catch(e){ret.error=e.errno}return ret},createPath(parent,path,canRead,canWrite){parent=typeof parent==\\\\\\\"string\\\\\\\"?parent:FS.getPath(parent);var parts=path.split(\\\\\\\"/\\\\\\\").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==\\\\\\\"string\\\\\\\"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name;if(parent){parent=typeof parent==\\\\\\\"string\\\\\\\"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==\\\\\\\"string\\\\\\\"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}},createDevice(parent,name,input,output){var path=PATH.join2(typeof parent==\\\\\\\"string\\\\\\\"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open(stream){stream.seekable=false},close(stream){if(output?.buffer?.length){output(10)}},read(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=\\\\\\\"undefined\\\\\\\"){throw new Error(\\\\\\\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\\\\\\\")}else{try{obj.contents=readBinary(obj.url);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}},createLazyFile(parent,name,url,canRead,canWrite){class LazyUint8Array{constructor(){this.lengthKnown=false;this.chunks=[]}get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open(\\\\\\\"HEAD\\\\\\\",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\\\\\\\"Couldn't load \\\\\\\"+url+\\\\\\\". Status: \\\\\\\"+xhr.status);var datalength=Number(xhr.getResponseHeader(\\\\\\\"Content-length\\\\\\\"));var header;var hasByteServing=(header=xhr.getResponseHeader(\\\\\\\"Accept-Ranges\\\\\\\"))&&header===\\\\\\\"bytes\\\\\\\";var usesGzip=(header=xhr.getResponseHeader(\\\\\\\"Content-Encoding\\\\\\\"))&&header===\\\\\\\"gzip\\\\\\\";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error(\\\\\\\"invalid range (\\\\\\\"+from+\\\\\\\", \\\\\\\"+to+\\\\\\\") or no bytes requested!\\\\\\\");if(to>datalength-1)throw new Error(\\\\\\\"only \\\\\\\"+datalength+\\\\\\\" bytes available! programmer error!\\\\\\\");var xhr=new XMLHttpRequest;xhr.open(\\\\\\\"GET\\\\\\\",url,false);if(datalength!==chunkSize)xhr.setRequestHeader(\\\\\\\"Range\\\\\\\",\\\\\\\"bytes=\\\\\\\"+from+\\\\\\\"-\\\\\\\"+to);xhr.responseType=\\\\\\\"arraybuffer\\\\\\\";if(xhr.overrideMimeType){xhr.overrideMimeType(\\\\\\\"text/plain; charset=x-user-defined\\\\\\\")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\\\\\\\"Couldn't load \\\\\\\"+url+\\\\\\\". Status: \\\\\\\"+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||\\\\\\\"\\\\\\\",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==\\\\\\\"undefined\\\\\\\"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==\\\\\\\"undefined\\\\\\\")throw new Error(\\\\\\\"doXHR failed!\\\\\\\");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out(\\\\\\\"LazyFiles on gzip forces download of the whole file when length is accessed\\\\\\\")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!=\\\\\\\"undefined\\\\\\\"){if(!ENVIRONMENT_IS_WORKER)throw\\\\\\\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\\\\\\\";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size}stream_ops.read=(stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\\\\\\\"\\\\\\\";var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat(func,path,buf){var stat=func(path);HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;HEAP64[buf+24>>3]=BigInt(stat.size);HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();HEAP64[buf+40>>3]=BigInt(Math.floor(atime/1e3));HEAPU32[buf+48>>2]=atime%1e3*1e3;HEAP64[buf+56>>3]=BigInt(Math.floor(mtime/1e3));HEAPU32[buf+64>>2]=mtime%1e3*1e3;HEAP64[buf+72>>3]=BigInt(Math.floor(ctime/1e3));HEAPU32[buf+80>>2]=ctime%1e3*1e3;HEAP64[buf+88>>3]=BigInt(stat.ino);return 0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall__newselect(nfds,readfds,writefds,exceptfds,timeout){try{var total=0;var srcReadLow=readfds?HEAP32[readfds>>2]:0,srcReadHigh=readfds?HEAP32[readfds+4>>2]:0;var srcWriteLow=writefds?HEAP32[writefds>>2]:0,srcWriteHigh=writefds?HEAP32[writefds+4>>2]:0;var srcExceptLow=exceptfds?HEAP32[exceptfds>>2]:0,srcExceptHigh=exceptfds?HEAP32[exceptfds+4>>2]:0;var dstReadLow=0,dstReadHigh=0;var dstWriteLow=0,dstWriteHigh=0;var dstExceptLow=0,dstExceptHigh=0;var allLow=(readfds?HEAP32[readfds>>2]:0)|(writefds?HEAP32[writefds>>2]:0)|(exceptfds?HEAP32[exceptfds>>2]:0);var allHigh=(readfds?HEAP32[readfds+4>>2]:0)|(writefds?HEAP32[writefds+4>>2]:0)|(exceptfds?HEAP32[exceptfds+4>>2]:0);var check=function(fd,low,high,val){return fd<32?low&val:high&val};for(var fd=0;fd<nfds;fd++){var mask=1<<fd%32;if(!check(fd,allLow,allHigh,mask)){continue}var stream=SYSCALLS.getStreamFromFD(fd);var flags=SYSCALLS.DEFAULT_POLLMASK;if(stream.stream_ops.poll){var timeoutInMillis=-1;if(timeout){var tv_sec=readfds?HEAP32[timeout>>2]:0,tv_usec=readfds?HEAP32[timeout+4>>2]:0;timeoutInMillis=(tv_sec+tv_usec/1e6)*1e3}flags=stream.stream_ops.poll(stream,timeoutInMillis)}if(flags&1&&check(fd,srcReadLow,srcReadHigh,mask)){fd<32?dstReadLow=dstReadLow|mask:dstReadHigh=dstReadHigh|mask;total++}if(flags&4&&check(fd,srcWriteLow,srcWriteHigh,mask)){fd<32?dstWriteLow=dstWriteLow|mask:dstWriteHigh=dstWriteHigh|mask;total++}if(flags&2&&check(fd,srcExceptLow,srcExceptHigh,mask)){fd<32?dstExceptLow=dstExceptLow|mask:dstExceptHigh=dstExceptHigh|mask;total++}}if(readfds){HEAP32[readfds>>2]=dstReadLow;HEAP32[readfds+4>>2]=dstReadHigh}if(writefds){HEAP32[writefds>>2]=dstWriteLow;HEAP32[writefds+4>>2]=dstWriteHigh}if(exceptfds){HEAP32[exceptfds>>2]=dstExceptLow;HEAP32[exceptfds+4>>2]=dstExceptHigh}return total}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}var SOCKFS={mount(mount){Module[\\\\\\\"websocket\\\\\\\"]=Module[\\\\\\\"websocket\\\\\\\"]&&\\\\\\\"object\\\\\\\"===typeof Module[\\\\\\\"websocket\\\\\\\"]?Module[\\\\\\\"websocket\\\\\\\"]:{};Module[\\\\\\\"websocket\\\\\\\"]._callbacks={};Module[\\\\\\\"websocket\\\\\\\"][\\\\\\\"on\\\\\\\"]=function(event,callback){if(\\\\\\\"function\\\\\\\"===typeof callback){this._callbacks[event]=callback}return this};Module[\\\\\\\"websocket\\\\\\\"].emit=function(event,param){if(\\\\\\\"function\\\\\\\"===typeof this._callbacks[event]){this._callbacks[event].call(this,param)}};return FS.createNode(null,\\\\\\\"/\\\\\\\",16384|511,0)},createSocket(family,type,protocol){type&=~526336;var streaming=type==1;if(streaming&&protocol&&protocol!=6){throw new FS.ErrnoError(66)}var sock={family:family,type:type,protocol:protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node:node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return\\\\\\\"socket[\\\\\\\"+SOCKFS.nextname.current+++\\\\\\\"]\\\\\\\"},websocket_sock_ops:{createPeer(sock,addr,port){var ws;if(typeof addr==\\\\\\\"object\\\\\\\"){ws=addr;addr=null;port=null}if(ws){if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=/ws[s]?:\\\\/\\\\/([^:]+):(\\\\d+)/.exec(ws.url);if(!result){throw new Error(\\\\\\\"WebSocket URL must be in the format ws(s)://address:port\\\\\\\")}addr=result[1];port=parseInt(result[2],10)}}else{try{var runtimeConfig=Module[\\\\\\\"websocket\\\\\\\"]&&\\\\\\\"object\\\\\\\"===typeof Module[\\\\\\\"websocket\\\\\\\"];var url=\\\\\\\"ws:#\\\\\\\".replace(\\\\\\\"#\\\\\\\",\\\\\\\"//\\\\\\\");if(runtimeConfig){if(\\\\\\\"string\\\\\\\"===typeof Module[\\\\\\\"websocket\\\\\\\"][\\\\\\\"url\\\\\\\"]){url=Module[\\\\\\\"websocket\\\\\\\"][\\\\\\\"url\\\\\\\"]}}if(url===\\\\\\\"ws://\\\\\\\"||url===\\\\\\\"wss://\\\\\\\"){var parts=addr.split(\\\\\\\"/\\\\\\\");url=url+parts[0]+\\\\\\\":\\\\\\\"+port+\\\\\\\"/\\\\\\\"+parts.slice(1).join(\\\\\\\"/\\\\\\\")}var subProtocols=\\\\\\\"binary\\\\\\\";if(runtimeConfig){if(\\\\\\\"string\\\\\\\"===typeof Module[\\\\\\\"websocket\\\\\\\"][\\\\\\\"subprotocol\\\\\\\"]){subProtocols=Module[\\\\\\\"websocket\\\\\\\"][\\\\\\\"subprotocol\\\\\\\"]}}var opts=undefined;if(subProtocols!==\\\\\\\"null\\\\\\\"){subProtocols=subProtocols.replace(/^ +| +$/g,\\\\\\\"\\\\\\\").split(/ *, */);opts=subProtocols}if(runtimeConfig&&null===Module[\\\\\\\"websocket\\\\\\\"][\\\\\\\"subprotocol\\\\\\\"]){subProtocols=\\\\\\\"null\\\\\\\";opts=undefined}var WebSocketConstructor;{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType=\\\\\\\"arraybuffer\\\\\\\"}catch(e){throw new FS.ErrnoError(23)}}var peer={addr:addr,port:port,socket:ws,dgram_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!=\\\\\\\"undefined\\\\\\\"){peer.dgram_send_queue.push(new Uint8Array([255,255,255,255,\\\\\\\"p\\\\\\\".charCodeAt(0),\\\\\\\"o\\\\\\\".charCodeAt(0),\\\\\\\"r\\\\\\\".charCodeAt(0),\\\\\\\"t\\\\\\\".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},getPeer(sock,addr,port){return sock.peers[addr+\\\\\\\":\\\\\\\"+port]},addPeer(sock,peer){sock.peers[peer.addr+\\\\\\\":\\\\\\\"+peer.port]=peer},removePeer(sock,peer){delete sock.peers[peer.addr+\\\\\\\":\\\\\\\"+peer.port]},handlePeerEvents(sock,peer){var first=true;var handleOpen=function(){Module[\\\\\\\"websocket\\\\\\\"].emit(\\\\\\\"open\\\\\\\",sock.stream.fd);try{var queued=peer.dgram_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.dgram_send_queue.shift()}}catch(e){peer.socket.close()}};function handleMessage(data){if(typeof data==\\\\\\\"string\\\\\\\"){var encoder=new TextEncoder;data=encoder.encode(data)}else{assert(data.byteLength!==undefined);if(data.byteLength==0){return}data=new Uint8Array(data)}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]===\\\\\\\"p\\\\\\\".charCodeAt(0)&&data[5]===\\\\\\\"o\\\\\\\".charCodeAt(0)&&data[6]===\\\\\\\"r\\\\\\\".charCodeAt(0)&&data[7]===\\\\\\\"t\\\\\\\".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data:data});Module[\\\\\\\"websocket\\\\\\\"].emit(\\\\\\\"message\\\\\\\",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on(\\\\\\\"open\\\\\\\",handleOpen);peer.socket.on(\\\\\\\"message\\\\\\\",function(data,isBinary){if(!isBinary){return}handleMessage(new Uint8Array(data).buffer)});peer.socket.on(\\\\\\\"close\\\\\\\",function(){Module[\\\\\\\"websocket\\\\\\\"].emit(\\\\\\\"close\\\\\\\",sock.stream.fd)});peer.socket.on(\\\\\\\"error\\\\\\\",function(error){sock.error=14;Module[\\\\\\\"websocket\\\\\\\"].emit(\\\\\\\"error\\\\\\\",[sock.stream.fd,sock.error,\\\\\\\"ECONNREFUSED: Connection refused\\\\\\\"])})}else{peer.socket.onopen=handleOpen;peer.socket.onclose=function(){Module[\\\\\\\"websocket\\\\\\\"].emit(\\\\\\\"close\\\\\\\",sock.stream.fd)};peer.socket.onmessage=function peer_socket_onmessage(event){handleMessage(event.data)};peer.socket.onerror=function(error){sock.error=14;Module[\\\\\\\"websocket\\\\\\\"].emit(\\\\\\\"error\\\\\\\",[sock.stream.fd,sock.error,\\\\\\\"ECONNREFUSED: Connection refused\\\\\\\"])}}},poll(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=16}return mask},ioctl(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;default:return 28}},close(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}var peers=Object.keys(sock.peers);for(var i=0;i<peers.length;i++){var peer=sock.peers[peers[i]];try{peer.socket.close()}catch(e){}SOCKFS.websocket_sock_ops.removePeer(sock,peer)}return 0},bind(sock,addr,port){if(typeof sock.saddr!=\\\\\\\"undefined\\\\\\\"||typeof sock.sport!=\\\\\\\"undefined\\\\\\\"){throw new FS.ErrnoError(28)}sock.saddr=addr;sock.sport=port;if(sock.type===2){if(sock.server){sock.server.close();sock.server=null}try{sock.sock_ops.listen(sock,0)}catch(e){if(!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;if(e.errno!==138)throw e}}},connect(sock,addr,port){if(sock.server){throw new FS.ErrnoError(138)}if(typeof sock.daddr!=\\\\\\\"undefined\\\\\\\"&&typeof sock.dport!=\\\\\\\"undefined\\\\\\\"){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(dest){if(dest.socket.readyState===dest.socket.CONNECTING){throw new FS.ErrnoError(7)}else{throw new FS.ErrnoError(30)}}}var peer=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port);sock.daddr=peer.addr;sock.dport=peer.port;throw new FS.ErrnoError(26)},listen(sock,backlog){if(!ENVIRONMENT_IS_NODE){throw new FS.ErrnoError(138)}},accept(listensock){if(!listensock.server||!listensock.pending.length){throw new FS.ErrnoError(28)}var newsock=listensock.pending.shift();newsock.stream.flags=listensock.stream.flags;return newsock},getname(sock,peer){var addr,port;if(peer){if(sock.daddr===undefined||sock.dport===undefined){throw new FS.ErrnoError(53)}addr=sock.daddr;port=sock.dport}else{addr=sock.saddr||0;port=sock.sport||0}return{addr:addr,port:port}},sendmsg(sock,buffer,offset,length,addr,port){if(sock.type===2){if(addr===undefined||port===undefined){addr=sock.daddr;port=sock.dport}if(addr===undefined||port===undefined){throw new FS.ErrnoError(17)}}else{addr=sock.daddr;port=sock.dport}var dest=SOCKFS.websocket_sock_ops.getPeer(sock,addr,port);if(sock.type===1){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){throw new FS.ErrnoError(53)}else if(dest.socket.readyState===dest.socket.CONNECTING){throw new FS.ErrnoError(6)}}if(ArrayBuffer.isView(buffer)){offset+=buffer.byteOffset;buffer=buffer.buffer}var data;data=buffer.slice(offset,offset+length);if(sock.type===2){if(!dest||dest.socket.readyState!==dest.socket.OPEN){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){dest=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port)}dest.dgram_send_queue.push(data);return length}}try{dest.socket.send(data);return length}catch(e){throw new FS.ErrnoError(28)}},recvmsg(sock,length){if(sock.type===1&&sock.server){throw new FS.ErrnoError(53)}var queued=sock.recv_queue.shift();if(!queued){if(sock.type===1){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(!dest){throw new FS.ErrnoError(53)}if(dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){return null}throw new FS.ErrnoError(6)}throw new FS.ErrnoError(6)}var queuedLength=queued.data.byteLength||queued.data.length;var queuedOffset=queued.data.byteOffset||0;var queuedBuffer=queued.data.buffer||queued.data;var bytesRead=Math.min(length,queuedLength);var res={buffer:new Uint8Array(queuedBuffer,queuedOffset,bytesRead),addr:queued.addr,port:queued.port};if(sock.type===1&&bytesRead<queuedLength){var bytesRemaining=queuedLength-bytesRead;queued.data=new Uint8Array(queuedBuffer,queuedOffset+bytesRead,bytesRemaining);sock.recv_queue.unshift(queued)}return res}}};var getSocketFromFD=fd=>{var socket=SOCKFS.getSocket(fd);if(!socket)throw new FS.ErrnoError(8);return socket};var inetPton4=str=>{var b=str.split(\\\\\\\".\\\\\\\");for(var i=0;i<4;i++){var tmp=Number(b[i]);if(isNaN(tmp))return null;b[i]=tmp}return(b[0]|b[1]<<8|b[2]<<16|b[3]<<24)>>>0};var jstoi_q=str=>parseInt(str);var inetPton6=str=>{var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\\\\dA-F]{1,4}:(:|\\\\b)|){5}|([\\\\dA-F]{1,4}:){6})((([\\\\dA-F]{1,4}((?!\\\\3)::|:\\\\b|$))|(?!\\\\2\\\\3)){2}|(((2[0-4]|1\\\\d|[1-9])?\\\\d|25[0-5])\\\\.?\\\\b){4})$/i;var parts=[];if(!valid6regx.test(str)){return null}if(str===\\\\\\\"::\\\\\\\"){return[0,0,0,0,0,0,0,0]}if(str.startsWith(\\\\\\\"::\\\\\\\")){str=str.replace(\\\\\\\"::\\\\\\\",\\\\\\\"Z:\\\\\\\")}else{str=str.replace(\\\\\\\"::\\\\\\\",\\\\\\\":Z:\\\\\\\")}if(str.indexOf(\\\\\\\".\\\\\\\")>0){str=str.replace(new RegExp(\\\\\\\"[.]\\\\\\\",\\\\\\\"g\\\\\\\"),\\\\\\\":\\\\\\\");words=str.split(\\\\\\\":\\\\\\\");words[words.length-4]=jstoi_q(words[words.length-4])+jstoi_q(words[words.length-3])*256;words[words.length-3]=jstoi_q(words[words.length-2])+jstoi_q(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(\\\\\\\":\\\\\\\")}offset=0;z=0;for(w=0;w<words.length;w++){if(typeof words[w]==\\\\\\\"string\\\\\\\"){if(words[w]===\\\\\\\"Z\\\\\\\"){for(z=0;z<8-words.length+1;z++){parts[w+z]=0}offset=z-1}else{parts[w+offset]=_htons(parseInt(words[w],16))}}else{parts[w+offset]=words[w]}}return[parts[1]<<16|parts[0],parts[3]<<16|parts[2],parts[5]<<16|parts[4],parts[7]<<16|parts[6]]};var writeSockaddr=(sa,family,addr,port,addrlen)=>{switch(family){case 2:addr=inetPton4(addr);zeroMemory(sa,16);if(addrlen){HEAP32[addrlen>>2]=16}HEAP16[sa>>1]=family;HEAP32[sa+4>>2]=addr;HEAP16[sa+2>>1]=_htons(port);break;case 10:addr=inetPton6(addr);zeroMemory(sa,28);if(addrlen){HEAP32[addrlen>>2]=28}HEAP32[sa>>2]=family;HEAP32[sa+8>>2]=addr[0];HEAP32[sa+12>>2]=addr[1];HEAP32[sa+16>>2]=addr[2];HEAP32[sa+20>>2]=addr[3];HEAP16[sa+2>>1]=_htons(port);break;default:return 5}return 0};var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name(name){var res=inetPton4(name);if(res!==null){return name}res=inetPton6(name);if(res!==null){return name}var addr;if(DNS.address_map.addrs[name]){addr=DNS.address_map.addrs[name]}else{var id=DNS.address_map.id++;assert(id<65535,\\\\\\\"exceeded max address mappings of 65535\\\\\\\");addr=\\\\\\\"172.29.\\\\\\\"+(id&255)+\\\\\\\".\\\\\\\"+(id&65280);DNS.address_map.names[addr]=name;DNS.address_map.addrs[name]=addr}return addr},lookup_addr(addr){if(DNS.address_map.names[addr]){return DNS.address_map.names[addr]}return null}};function ___syscall_accept4(fd,addr,addrlen,flags,d1,d2){try{var sock=getSocketFromFD(fd);var newsock=sock.sock_ops.accept(sock);if(addr){var errno=writeSockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport,addrlen)}return newsock.stream.fd}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}var inetNtop4=addr=>(addr&255)+\\\\\\\".\\\\\\\"+(addr>>8&255)+\\\\\\\".\\\\\\\"+(addr>>16&255)+\\\\\\\".\\\\\\\"+(addr>>24&255);var inetNtop6=ints=>{var str=\\\\\\\"\\\\\\\";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part=\\\\\\\"\\\\\\\";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str=\\\\\\\"::ffff:\\\\\\\";str+=v4part;return str}if(parts[5]===0){str=\\\\\\\"::\\\\\\\";if(v4part===\\\\\\\"0.0.0.0\\\\\\\")v4part=\\\\\\\"\\\\\\\";if(v4part===\\\\\\\"0.0.0.1\\\\\\\")v4part=\\\\\\\"1\\\\\\\";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word<zstart+longest){if(word===zstart){str+=\\\\\\\":\\\\\\\";if(zstart===0)str+=\\\\\\\":\\\\\\\"}continue}}str+=Number(_ntohs(parts[word]&65535)).toString(16);str+=word<7?\\\\\\\":\\\\\\\":\\\\\\\"\\\\\\\"}return str};var readSockaddr=(sa,salen)=>{var family=HEAP16[sa>>1];var port=_ntohs(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){return{errno:28}}addr=[HEAP32[sa+8>>2],HEAP32[sa+12>>2],HEAP32[sa+16>>2],HEAP32[sa+20>>2]];addr=inetNtop6(addr);break;default:return{errno:5}}return{family:family,addr:addr,port:port}};var getSocketAddress=(addrp,addrlen,allowNull)=>{if(allowNull&&addrp===0)return null;var info=readSockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info};function ___syscall_bind(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.bind(sock,info.addr,info.port);return 0}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}function ___syscall_chdir(path){try{path=SYSCALLS.getStr(path);FS.chdir(path);return 0}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}function ___syscall_chmod(path,mode){try{path=SYSCALLS.getStr(path);FS.chmod(path,mode);return 0}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}function ___syscall_connect(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.connect(sock,info.addr,info.port);return 0}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}function ___syscall_faccessat(dirfd,path,amode,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms=\\\\\\\"\\\\\\\";if(amode&4)perms+=\\\\\\\"r\\\\\\\";if(amode&2)perms+=\\\\\\\"w\\\\\\\";if(amode&1)perms+=\\\\\\\"x\\\\\\\";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}function ___syscall_fchmod(fd,mode){try{FS.fchmod(fd,mode);return 0}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}function syscallGetVarargI(){var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret}var syscallGetVarargP=syscallGetVarargI;function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();stream.flags|=arg;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>num<INT53_MIN||num>INT53_MAX?NaN:Number(num);function ___syscall_ftruncate64(fd,length){length=bigintToI53Checked(length);try{if(isNaN(length))return 61;FS.ftruncate(fd,length);return 0}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);function ___syscall_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd)+1;if(size<cwdLengthInBytes)return-68;stringToUTF8(cwd,buf,size);return cwdLengthInBytes}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}function ___syscall_getdents64(fd,dirp,count){try{var stream=SYSCALLS.getStreamFromFD(fd);stream.getdents||=FS.readdir(stream.path);var struct_size=280;var pos=0;var off=FS.llseek(stream,0,1);var idx=Math.floor(off/struct_size);while(idx<stream.getdents.length&&pos+struct_size<=count){var id;var type;var name=stream.getdents[idx];if(name===\\\\\\\".\\\\\\\"){id=stream.node.id;type=4}else if(name===\\\\\\\"..\\\\\\\"){var lookup=FS.lookupPath(stream.path,{parent:true});id=lookup.node.id;type=4}else{var child=FS.lookupNode(stream.node,name);id=child.id;type=FS.isChrdev(child.mode)?2:FS.isDir(child.mode)?4:FS.isLink(child.mode)?10:8}HEAP64[dirp+pos>>3]=BigInt(id);HEAP64[dirp+pos+8>>3]=BigInt((idx+1)*struct_size);HEAP16[dirp+pos+16>>1]=280;HEAP8[dirp+pos+18]=type;stringToUTF8(name,dirp+pos+19,256);pos+=struct_size;idx+=1}FS.llseek(stream,idx*struct_size,0);return pos}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}function ___syscall_getsockname(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(sock.saddr||\\\\\\\"0.0.0.0\\\\\\\"),sock.sport,addrlen);return 0}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}function ___syscall_getsockopt(fd,level,optname,optval,optlen,d1){try{var sock=getSocketFromFD(fd);if(level===1){if(optname===4){HEAP32[optval>>2]=sock.error;HEAP32[optlen>>2]=4;sock.error=null;return 0}}return-50}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=syscallGetVarargP();HEAP32[argp>>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=syscallGetVarargP();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag:c_iflag,c_oflag:c_oflag,c_cflag:c_cflag,c_lflag:c_lflag,c_cc:c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=syscallGetVarargP();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=syscallGetVarargP();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=syscallGetVarargP();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}function ___syscall_listen(fd,backlog){try{var sock=getSocketFromFD(fd);sock.sock_ops.listen(sock,backlog);return 0}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.lstat,path,buf)}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}function ___syscall_mkdirat(dirfd,path,mode){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);path=PATH.normalize(path);if(path[path.length-1]===\\\\\\\"/\\\\\\\")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}function ___syscall_mknodat(dirfd,path,mode,dev){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.doStat(nofollow?FS.lstat:FS.stat,path,buf)}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}function ___syscall_poll(fds,nfds,timeout){try{var nonzero=0;for(var i=0;i<nfds;i++){var pollfd=fds+8*i;var fd=HEAP32[pollfd>>2];var events=HEAP16[pollfd+4>>1];var mask=32;var stream=FS.getStream(fd);if(stream){mask=SYSCALLS.DEFAULT_POLLMASK;if(stream.stream_ops.poll){mask=stream.stream_ops.poll(stream,-1)}}mask&=events|8|16;if(mask)nonzero++;HEAP16[pollfd+6>>1]=mask}return nonzero}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}function ___syscall_readlinkat(dirfd,path,buf,bufsize){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}function ___syscall_recvfrom(fd,buf,len,flags,addr,addrlen){try{var sock=getSocketFromFD(fd);var msg=sock.sock_ops.recvmsg(sock,len);if(!msg)return 0;if(addr){var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(msg.addr),msg.port,addrlen)}HEAPU8.set(msg.buffer,buf);return msg.buffer.byteLength}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}function ___syscall_renameat(olddirfd,oldpath,newdirfd,newpath){try{oldpath=SYSCALLS.getStr(oldpath);newpath=SYSCALLS.getStr(newpath);oldpath=SYSCALLS.calculateAt(olddirfd,oldpath);newpath=SYSCALLS.calculateAt(newdirfd,newpath);FS.rename(oldpath,newpath);return 0}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}function ___syscall_rmdir(path){try{path=SYSCALLS.getStr(path);FS.rmdir(path);return 0}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}function ___syscall_sendto(fd,message,length,flags,addr,addr_len){try{var sock=getSocketFromFD(fd);var dest=getSocketAddress(addr,addr_len,true);if(!dest){return FS.write(sock.stream,HEAP8,message,length)}return sock.sock_ops.sendmsg(sock,HEAP8,message,length,dest.addr,dest.port)}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}function ___syscall_socket(domain,type,protocol){try{var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}function ___syscall_statfs64(path,size,buf){try{path=SYSCALLS.getStr(path);HEAP32[buf+4>>2]=4096;HEAP32[buf+40>>2]=4096;HEAP32[buf+8>>2]=1e6;HEAP32[buf+12>>2]=5e5;HEAP32[buf+16>>2]=5e5;HEAP32[buf+20>>2]=FS.nextInode;HEAP32[buf+24>>2]=1e6;HEAP32[buf+28>>2]=42;HEAP32[buf+44>>2]=2;HEAP32[buf+36>>2]=255;return 0}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}function ___syscall_symlink(target,linkpath){try{target=SYSCALLS.getStr(target);linkpath=SYSCALLS.getStr(linkpath);FS.symlink(target,linkpath);return 0}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(flags===0){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{abort(\\\\\\\"Invalid flags passed to unlinkat\\\\\\\")}return 0}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return-e.errno}}var __abort_js=()=>{abort(\\\\\\\"\\\\\\\")};var nowIsMonotonic=1;var __emscripten_get_now_is_monotonic=()=>nowIsMonotonic;var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};function __gmtime_js(time,tmPtr){time=bigintToI53Checked(time);var date=new Date(time*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday}var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];var ydayFromDate=date=>{var leap=isLeapYear(date.getFullYear());var monthDaysCumulative=leap?MONTH_DAYS_LEAP_CUMULATIVE:MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday};function __localtime_js(time,tmPtr){time=bigintToI53Checked(time);var date=new Date(time*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}var __tzset_js=(timezone,daylight,std_name,dst_name)=>{var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);var extractZone=timezoneOffset=>{var sign=timezoneOffset>=0?\\\\\\\"-\\\\\\\":\\\\\\\"+\\\\\\\";var absOffset=Math.abs(timezoneOffset);var hours=String(Math.floor(absOffset/60)).padStart(2,\\\\\\\"0\\\\\\\");var minutes=String(absOffset%60).padStart(2,\\\\\\\"0\\\\\\\");return`UTC${sign}${hours}${minutes}`};var winterName=extractZone(winterOffset);var summerName=extractZone(summerOffset);if(summerOffset<winterOffset){stringToUTF8(winterName,std_name,17);stringToUTF8(summerName,dst_name,17)}else{stringToUTF8(winterName,dst_name,17);stringToUTF8(summerName,std_name,17)}};var runtimeKeepaliveCounter=0;var runtimeKeepalivePush=()=>{runtimeKeepaliveCounter+=1};var _emscripten_set_main_loop_timing=(mode,value)=>{Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(!Browser.mainLoop.running){runtimeKeepalivePush();Browser.mainLoop.running=true}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method=\\\\\\\"timeout\\\\\\\"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method=\\\\\\\"rAF\\\\\\\"}else if(mode==2){if(typeof Browser.setImmediate==\\\\\\\"undefined\\\\\\\"){if(typeof setImmediate==\\\\\\\"undefined\\\\\\\"){var setImmediates=[];var emscriptenMainLoopMessageId=\\\\\\\"setimmediate\\\\\\\";var Browser_setImmediate_messageHandler=event=>{if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener(\\\\\\\"message\\\\\\\",Browser_setImmediate_messageHandler,true);Browser.setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){Module[\\\\\\\"setImmediates\\\\\\\"]??=[];Module[\\\\\\\"setImmediates\\\\\\\"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,\\\\\\\"*\\\\\\\")}}else{Browser.setImmediate=setImmediate}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){Browser.setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method=\\\\\\\"immediate\\\\\\\"}return 0};var _emscripten_get_now;_emscripten_get_now=()=>performance.now();var webgl_enable_ANGLE_instanced_arrays=ctx=>{var ext=ctx.getExtension(\\\\\\\"ANGLE_instanced_arrays\\\\\\\");if(ext){ctx[\\\\\\\"vertexAttribDivisor\\\\\\\"]=(index,divisor)=>ext[\\\\\\\"vertexAttribDivisorANGLE\\\\\\\"](index,divisor);ctx[\\\\\\\"drawArraysInstanced\\\\\\\"]=(mode,first,count,primcount)=>ext[\\\\\\\"drawArraysInstancedANGLE\\\\\\\"](mode,first,count,primcount);ctx[\\\\\\\"drawElementsInstanced\\\\\\\"]=(mode,count,type,indices,primcount)=>ext[\\\\\\\"drawElementsInstancedANGLE\\\\\\\"](mode,count,type,indices,primcount);return 1}};var webgl_enable_OES_vertex_array_object=ctx=>{var ext=ctx.getExtension(\\\\\\\"OES_vertex_array_object\\\\\\\");if(ext){ctx[\\\\\\\"createVertexArray\\\\\\\"]=()=>ext[\\\\\\\"createVertexArrayOES\\\\\\\"]();ctx[\\\\\\\"deleteVertexArray\\\\\\\"]=vao=>ext[\\\\\\\"deleteVertexArrayOES\\\\\\\"](vao);ctx[\\\\\\\"bindVertexArray\\\\\\\"]=vao=>ext[\\\\\\\"bindVertexArrayOES\\\\\\\"](vao);ctx[\\\\\\\"isVertexArray\\\\\\\"]=vao=>ext[\\\\\\\"isVertexArrayOES\\\\\\\"](vao);return 1}};var webgl_enable_WEBGL_draw_buffers=ctx=>{var ext=ctx.getExtension(\\\\\\\"WEBGL_draw_buffers\\\\\\\");if(ext){ctx[\\\\\\\"drawBuffers\\\\\\\"]=(n,bufs)=>ext[\\\\\\\"drawBuffersWEBGL\\\\\\\"](n,bufs);return 1}};var webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.dibvbi=ctx.getExtension(\\\\\\\"WEBGL_draw_instanced_base_vertex_base_instance\\\\\\\"));var webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.mdibvbi=ctx.getExtension(\\\\\\\"WEBGL_multi_draw_instanced_base_vertex_base_instance\\\\\\\"));var webgl_enable_WEBGL_multi_draw=ctx=>!!(ctx.multiDrawWebgl=ctx.getExtension(\\\\\\\"WEBGL_multi_draw\\\\\\\"));var getEmscriptenSupportedExtensions=ctx=>{var supportedExtensions=[\\\\\\\"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_color_buffer_half_float\\\\\\\",\\\\\\\"EXT_depth_clamp\\\\\\\",\\\\\\\"EXT_float_blend\\\\\\\",\\\\\\\"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\\\\\\\"];return(ctx.getSupportedExtensions()||[]).filter(ext=>supportedExtensions.includes(ext))};var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,unpackRowLength:0,recordError:errorCode=>{if(!GL.lastError){GL.lastError=errorCode}},getNewId:table=>{var ret=GL.counter++;for(var i=table.length;i<ret;i++){table[i]=null}return ret},genObject:(n,buffers,createFunction,objectTable)=>{for(var i=0;i<n;i++){var buffer=GLctx[createFunction]();var id=buffer&&GL.getNewId(objectTable);if(buffer){buffer.name=id;objectTable[id]=buffer}else{GL.recordError(1282)}HEAP32[buffers+i*4>>2]=id}},getSource:(shader,count,string,length)=>{var source=\\\\\\\"\\\\\\\";for(var i=0;i<count;++i){var len=length?HEAPU32[length+i*4>>2]:undefined;source+=UTF8ToString(HEAPU32[string+i*4>>2],len)}return source},createContext:(canvas,webGLContextAttributes)=>{if(webGLContextAttributes.renderViaOffscreenBackBuffer)webGLContextAttributes[\\\\\\\"preserveDrawingBuffer\\\\\\\"]=true;var ctx=webGLContextAttributes.majorVersion>1?canvas.getContext(\\\\\\\"webgl2\\\\\\\",webGLContextAttributes):canvas.getContext(\\\\\\\"webgl\\\\\\\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},enableOffscreenFramebufferAttributes:webGLContextAttributes=>{webGLContextAttributes.renderViaOffscreenBackBuffer=true;webGLContextAttributes.preserveDrawingBuffer=true},createOffscreenFramebuffer:context=>{var gl=context.GLctx;var fbo=gl.createFramebuffer();gl.bindFramebuffer(36160,fbo);context.defaultFbo=fbo;context.defaultFboForbidBlitFramebuffer=false;if(gl.getContextAttributes().antialias){context.defaultFboForbidBlitFramebuffer=true}context.defaultColorTarget=gl.createTexture();context.defaultDepthTarget=gl.createRenderbuffer();GL.resizeOffscreenFramebuffer(context);gl.bindTexture(3553,context.defaultColorTarget);gl.texParameteri(3553,10241,9728);gl.texParameteri(3553,10240,9728);gl.texParameteri(3553,10242,33071);gl.texParameteri(3553,10243,33071);gl.texImage2D(3553,0,6408,gl.canvas.width,gl.canvas.height,0,6408,5121,null);gl.framebufferTexture2D(36160,36064,3553,context.defaultColorTarget,0);gl.bindTexture(3553,null);var depthTarget=gl.createRenderbuffer();gl.bindRenderbuffer(36161,context.defaultDepthTarget);gl.renderbufferStorage(36161,33189,gl.canvas.width,gl.canvas.height);gl.framebufferRenderbuffer(36160,36096,36161,context.defaultDepthTarget);gl.bindRenderbuffer(36161,null);var vertices=[-1,-1,-1,1,1,-1,1,1];var vb=gl.createBuffer();gl.bindBuffer(34962,vb);gl.bufferData(34962,new Float32Array(vertices),35044);gl.bindBuffer(34962,null);context.blitVB=vb;var vsCode=\\\\\\\"attribute vec2 pos;\\\\\\\"+\\\\\\\"varying lowp vec2 tex;\\\\\\\"+\\\\\\\"void main() { tex = pos * 0.5 + vec2(0.5,0.5); gl_Position = vec4(pos, 0.0, 1.0); }\\\\\\\";var vs=gl.createShader(35633);gl.shaderSource(vs,vsCode);gl.compileShader(vs);var fsCode=\\\\\\\"varying lowp vec2 tex;\\\\\\\"+\\\\\\\"uniform sampler2D sampler;\\\\\\\"+\\\\\\\"void main() { gl_FragColor = texture2D(sampler, tex); }\\\\\\\";var fs=gl.createShader(35632);gl.shaderSource(fs,fsCode);gl.compileShader(fs);var blitProgram=gl.createProgram();gl.attachShader(blitProgram,vs);gl.attachShader(blitProgram,fs);gl.linkProgram(blitProgram);context.blitProgram=blitProgram;context.blitPosLoc=gl.getAttribLocation(blitProgram,\\\\\\\"pos\\\\\\\");gl.useProgram(blitProgram);gl.uniform1i(gl.getUniformLocation(blitProgram,\\\\\\\"sampler\\\\\\\"),0);gl.useProgram(null);context.defaultVao=undefined;if(gl.createVertexArray){context.defaultVao=gl.createVertexArray();gl.bindVertexArray(context.defaultVao);gl.enableVertexAttribArray(context.blitPosLoc);gl.bindVertexArray(null)}},resizeOffscreenFramebuffer:context=>{var gl=context.GLctx;if(context.defaultColorTarget){var prevTextureBinding=gl.getParameter(32873);gl.bindTexture(3553,context.defaultColorTarget);gl.texImage2D(3553,0,6408,gl.drawingBufferWidth,gl.drawingBufferHeight,0,6408,5121,null);gl.bindTexture(3553,prevTextureBinding)}if(context.defaultDepthTarget){var prevRenderBufferBinding=gl.getParameter(36007);gl.bindRenderbuffer(36161,context.defaultDepthTarget);gl.renderbufferStorage(36161,33189,gl.drawingBufferWidth,gl.drawingBufferHeight);gl.bindRenderbuffer(36161,prevRenderBufferBinding)}},blitOffscreenFramebuffer:context=>{var gl=context.GLctx;var prevScissorTest=gl.getParameter(3089);if(prevScissorTest)gl.disable(3089);var prevFbo=gl.getParameter(36006);if(gl.blitFramebuffer&&!context.defaultFboForbidBlitFramebuffer){gl.bindFramebuffer(36008,context.defaultFbo);gl.bindFramebuffer(36009,null);gl.blitFramebuffer(0,0,gl.canvas.width,gl.canvas.height,0,0,gl.canvas.width,gl.canvas.height,16384,9728)}else{gl.bindFramebuffer(36160,null);var prevProgram=gl.getParameter(35725);gl.useProgram(context.blitProgram);var prevVB=gl.getParameter(34964);gl.bindBuffer(34962,context.blitVB);var prevActiveTexture=gl.getParameter(34016);gl.activeTexture(33984);var prevTextureBinding=gl.getParameter(32873);gl.bindTexture(3553,context.defaultColorTarget);var prevBlend=gl.getParameter(3042);if(prevBlend)gl.disable(3042);var prevCullFace=gl.getParameter(2884);if(prevCullFace)gl.disable(2884);var prevDepthTest=gl.getParameter(2929);if(prevDepthTest)gl.disable(2929);var prevStencilTest=gl.getParameter(2960);if(prevStencilTest)gl.disable(2960);function draw(){gl.vertexAttribPointer(context.blitPosLoc,2,5126,false,0,0);gl.drawArrays(5,0,4)}if(context.defaultVao){var prevVAO=gl.getParameter(34229);gl.bindVertexArray(context.defaultVao);draw();gl.bindVertexArray(prevVAO)}else{var prevVertexAttribPointer={buffer:gl.getVertexAttrib(context.blitPosLoc,34975),size:gl.getVertexAttrib(context.blitPosLoc,34339),stride:gl.getVertexAttrib(context.blitPosLoc,34340),type:gl.getVertexAttrib(context.blitPosLoc,34341),normalized:gl.getVertexAttrib(context.blitPosLoc,34922),pointer:gl.getVertexAttribOffset(context.blitPosLoc,34373)};var maxVertexAttribs=gl.getParameter(34921);var prevVertexAttribEnables=[];for(var i=0;i<maxVertexAttribs;++i){var prevEnabled=gl.getVertexAttrib(i,34338);var wantEnabled=i==context.blitPosLoc;if(prevEnabled&&!wantEnabled){gl.disableVertexAttribArray(i)}if(!prevEnabled&&wantEnabled){gl.enableVertexAttribArray(i)}prevVertexAttribEnables[i]=prevEnabled}draw();for(var i=0;i<maxVertexAttribs;++i){var prevEnabled=prevVertexAttribEnables[i];var nowEnabled=i==context.blitPosLoc;if(prevEnabled&&!nowEnabled){gl.enableVertexAttribArray(i)}if(!prevEnabled&&nowEnabled){gl.disableVertexAttribArray(i)}}gl.bindBuffer(34962,prevVertexAttribPointer.buffer);gl.vertexAttribPointer(context.blitPosLoc,prevVertexAttribPointer.size,prevVertexAttribPointer.type,prevVertexAttribPointer.normalized,prevVertexAttribPointer.stride,prevVertexAttribPointer.offset)}if(prevStencilTest)gl.enable(2960);if(prevDepthTest)gl.enable(2929);if(prevCullFace)gl.enable(2884);if(prevBlend)gl.enable(3042);gl.bindTexture(3553,prevTextureBinding);gl.activeTexture(prevActiveTexture);gl.bindBuffer(34962,prevVB);gl.useProgram(prevProgram)}gl.bindFramebuffer(36160,prevFbo);if(prevScissorTest)gl.enable(3089)},registerContext:(ctx,webGLContextAttributes)=>{var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault==\\\\\\\"undefined\\\\\\\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}if(webGLContextAttributes.renderViaOffscreenBackBuffer)GL.createOffscreenFramebuffer(context);return handle},makeContextCurrent:contextHandle=>{GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext?.GLctx;return!(contextHandle&&!GLctx)},getContext:contextHandle=>GL.contexts[contextHandle],deleteContext:contextHandle=>{if(GL.currentContext===GL.contexts[contextHandle]){GL.currentContext=null}if(typeof JSEvents==\\\\\\\"object\\\\\\\"){JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas)}if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas){GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined}GL.contexts[contextHandle]=null},initExtensions:context=>{context||=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_ANGLE_instanced_arrays(GLctx);webgl_enable_OES_vertex_array_object(GLctx);webgl_enable_WEBGL_draw_buffers(GLctx);webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension(\\\\\\\"EXT_disjoint_timer_query_webgl2\\\\\\\")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension(\\\\\\\"EXT_disjoint_timer_query\\\\\\\")}webgl_enable_WEBGL_multi_draw(GLctx);getEmscriptenSupportedExtensions(GLctx).forEach(ext=>{if(!ext.includes(\\\\\\\"lose_context\\\\\\\")&&!ext.includes(\\\\\\\"debug\\\\\\\")){GLctx.getExtension(ext)}})}};var _emscripten_webgl_do_commit_frame=()=>{if(!GL.currentContext||!GL.currentContext.GLctx){return-3}if(GL.currentContext.defaultFbo){GL.blitOffscreenFramebuffer(GL.currentContext);return 0}if(!GL.currentContext.attributes.explicitSwapControl){return-3}return 0};var _emscripten_webgl_commit_frame=_emscripten_webgl_do_commit_frame;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module[\\\\\\\"onExit\\\\\\\"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;if(!keepRuntimeAlive()){exitRuntime()}_proc_exit(status)};var _exit=exitJS;var handleException=e=>{if(e instanceof ExitStatus||e==\\\\\\\"unwind\\\\\\\"){return EXITSTATUS}quit_(1,e)};var maybeExit=()=>{if(runtimeExited){return}if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var runtimeKeepalivePop=()=>{runtimeKeepaliveCounter-=1};var setMainLoop=(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming)=>{Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop){runtimeKeepalivePop();maybeExit();return false}return true}Browser.mainLoop.running=false;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}Browser.mainLoop.updateStatus();if(!checkIsRunning())return;setTimeout(Browser.mainLoop.runner,0);return}if(!checkIsRunning())return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(!checkIsRunning())return;if(typeof SDL==\\\\\\\"object\\\\\\\")SDL.audio?.queueNewAudioData?.();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0){_emscripten_set_main_loop_timing(0,1e3/fps)}else{_emscripten_set_main_loop_timing(1,1)}Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw\\\\\\\"unwind\\\\\\\"}};var callUserCallback=func=>{if(runtimeExited||ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var safeSetTimeout=(func,timeout)=>{runtimeKeepalivePush();return setTimeout(()=>{runtimeKeepalivePop();callUserCallback(func)},timeout)};var warnOnce=text=>{warnOnce.shown||={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}};var Browser={mainLoop:{running:false,scheduler:null,method:\\\\\\\"\\\\\\\",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus(){if(Module[\\\\\\\"setStatus\\\\\\\"]){var message=Module[\\\\\\\"statusMessage\\\\\\\"]||\\\\\\\"Please wait...\\\\\\\";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining<expected){Module[\\\\\\\"setStatus\\\\\\\"](`{message} ({expected - remaining}/{expected})`)}else{Module[\\\\\\\"setStatus\\\\\\\"](message)}}else{Module[\\\\\\\"setStatus\\\\\\\"](\\\\\\\"\\\\\\\")}}},runIter(func){if(ABORT)return;if(Module[\\\\\\\"preMainLoop\\\\\\\"]){var preRet=Module[\\\\\\\"preMainLoop\\\\\\\"]();if(preRet===false){return}}callUserCallback(func);Module[\\\\\\\"postMainLoop\\\\\\\"]?.()}},isFullscreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init(){if(Browser.initted)return;Browser.initted=true;var imagePlugin={};imagePlugin[\\\\\\\"canHandle\\\\\\\"]=function imagePlugin_canHandle(name){return!Module.noImageDecoding&&/\\\\.(jpg|jpeg|png|bmp)$/i.test(name)};imagePlugin[\\\\\\\"handle\\\\\\\"]=function imagePlugin_handle(byteArray,name,onload,onerror){var b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length){b=new Blob([new Uint8Array(byteArray).buffer],{type:Browser.getMimetype(name)})}var url=URL.createObjectURL(b);var img=new Image;img.onload=()=>{var canvas=document.createElement(\\\\\\\"canvas\\\\\\\");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext(\\\\\\\"2d\\\\\\\");ctx.drawImage(img,0,0);preloadedImages[name]=canvas;URL.revokeObjectURL(url);onload?.(byteArray)};img.onerror=event=>{err(`Image ${url} could not be decoded`);onerror?.()};img.src=url};preloadPlugins.push(imagePlugin);var audioPlugin={};audioPlugin[\\\\\\\"canHandle\\\\\\\"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{\\\\\\\".ogg\\\\\\\":1,\\\\\\\".wav\\\\\\\":1,\\\\\\\".mp3\\\\\\\":1}};audioPlugin[\\\\\\\"handle\\\\\\\"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;preloadedAudios[name]=audio;onload?.(byteArray)}var b=new Blob([byteArray],{type:Browser.getMimetype(name)});var url=URL.createObjectURL(b);var audio=new Audio;audio.addEventListener(\\\\\\\"canplaythrough\\\\\\\",()=>finish(audio),false);audio.onerror=function audio_onerror(event){if(done)return;err(`warning: browser could not fully decode audio ${name}, trying slower base64 approach`);function encode64(data){var BASE=\\\\\\\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\\\\\\\";var PAD=\\\\\\\"=\\\\\\\";var ret=\\\\\\\"\\\\\\\";var leftchar=0;var leftbits=0;for(var i=0;i<data.length;i++){leftchar=leftchar<<8|data[i];leftbits+=8;while(leftbits>=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src=\\\\\\\"data:audio/x-\\\\\\\"+name.substr(-3)+\\\\\\\";base64,\\\\\\\"+encode64(byteArray);finish(audio)};audio.src=url;safeSetTimeout(()=>{finish(audio)},1e4)};preloadPlugins.push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document[\\\\\\\"pointerLockElement\\\\\\\"]===Module[\\\\\\\"canvas\\\\\\\"]||document[\\\\\\\"mozPointerLockElement\\\\\\\"]===Module[\\\\\\\"canvas\\\\\\\"]||document[\\\\\\\"webkitPointerLockElement\\\\\\\"]===Module[\\\\\\\"canvas\\\\\\\"]||document[\\\\\\\"msPointerLockElement\\\\\\\"]===Module[\\\\\\\"canvas\\\\\\\"]}var canvas=Module[\\\\\\\"canvas\\\\\\\"];if(canvas){canvas.requestPointerLock=canvas[\\\\\\\"requestPointerLock\\\\\\\"]||canvas[\\\\\\\"mozRequestPointerLock\\\\\\\"]||canvas[\\\\\\\"webkitRequestPointerLock\\\\\\\"]||canvas[\\\\\\\"msRequestPointerLock\\\\\\\"]||(()=>{});canvas.exitPointerLock=document[\\\\\\\"exitPointerLock\\\\\\\"]||document[\\\\\\\"mozExitPointerLock\\\\\\\"]||document[\\\\\\\"webkitExitPointerLock\\\\\\\"]||document[\\\\\\\"msExitPointerLock\\\\\\\"]||(()=>{});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener(\\\\\\\"pointerlockchange\\\\\\\",pointerLockChange,false);document.addEventListener(\\\\\\\"mozpointerlockchange\\\\\\\",pointerLockChange,false);document.addEventListener(\\\\\\\"webkitpointerlockchange\\\\\\\",pointerLockChange,false);document.addEventListener(\\\\\\\"mspointerlockchange\\\\\\\",pointerLockChange,false);if(Module[\\\\\\\"elementPointerLock\\\\\\\"]){canvas.addEventListener(\\\\\\\"click\\\\\\\",ev=>{if(!Browser.pointerLock&&Module[\\\\\\\"canvas\\\\\\\"].requestPointerLock){Module[\\\\\\\"canvas\\\\\\\"].requestPointerLock();ev.preventDefault()}},false)}}},createContext(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:typeof WebGL2RenderingContext!=\\\\\\\"undefined\\\\\\\"?2:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!=\\\\\\\"undefined\\\\\\\"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext(\\\\\\\"2d\\\\\\\")}if(!ctx)return null;if(setInModule){Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(callback=>callback());Browser.init()}return ctx},destroyContext(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer==\\\\\\\"undefined\\\\\\\")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==\\\\\\\"undefined\\\\\\\")Browser.resizeCanvas=false;var canvas=Module[\\\\\\\"canvas\\\\\\\"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document[\\\\\\\"fullscreenElement\\\\\\\"]||document[\\\\\\\"mozFullScreenElement\\\\\\\"]||document[\\\\\\\"msFullscreenElement\\\\\\\"]||document[\\\\\\\"webkitFullscreenElement\\\\\\\"]||document[\\\\\\\"webkitCurrentFullScreenElement\\\\\\\"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}Module[\\\\\\\"onFullScreen\\\\\\\"]?.(Browser.isFullscreen);Module[\\\\\\\"onFullscreen\\\\\\\"]?.(Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener(\\\\\\\"fullscreenchange\\\\\\\",fullscreenChange,false);document.addEventListener(\\\\\\\"mozfullscreenchange\\\\\\\",fullscreenChange,false);document.addEventListener(\\\\\\\"webkitfullscreenchange\\\\\\\",fullscreenChange,false);document.addEventListener(\\\\\\\"MSFullscreenChange\\\\\\\",fullscreenChange,false)}var canvasContainer=document.createElement(\\\\\\\"div\\\\\\\");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer[\\\\\\\"requestFullscreen\\\\\\\"]||canvasContainer[\\\\\\\"mozRequestFullScreen\\\\\\\"]||canvasContainer[\\\\\\\"msRequestFullscreen\\\\\\\"]||(canvasContainer[\\\\\\\"webkitRequestFullscreen\\\\\\\"]?()=>canvasContainer[\\\\\\\"webkitRequestFullscreen\\\\\\\"](Element[\\\\\\\"ALLOW_KEYBOARD_INPUT\\\\\\\"]):null)||(canvasContainer[\\\\\\\"webkitRequestFullScreen\\\\\\\"]?()=>canvasContainer[\\\\\\\"webkitRequestFullScreen\\\\\\\"](Element[\\\\\\\"ALLOW_KEYBOARD_INPUT\\\\\\\"]):null);canvasContainer.requestFullscreen()},exitFullscreen(){if(!Browser.isFullscreen){return false}var CFS=document[\\\\\\\"exitFullscreen\\\\\\\"]||document[\\\\\\\"cancelFullScreen\\\\\\\"]||document[\\\\\\\"mozCancelFullScreen\\\\\\\"]||document[\\\\\\\"msExitFullscreen\\\\\\\"]||document[\\\\\\\"webkitCancelFullScreen\\\\\\\"]||(()=>{});CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame(func){if(typeof requestAnimationFrame==\\\\\\\"function\\\\\\\"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeSetTimeout(func,timeout){return safeSetTimeout(func,timeout)},safeRequestAnimationFrame(func){runtimeKeepalivePush();return Browser.requestAnimationFrame(()=>{runtimeKeepalivePop();callUserCallback(func)})},getMimetype(name){return{jpg:\\\\\\\"image/jpeg\\\\\\\",jpeg:\\\\\\\"image/jpeg\\\\\\\",png:\\\\\\\"image/png\\\\\\\",bmp:\\\\\\\"image/bmp\\\\\\\",ogg:\\\\\\\"audio/ogg\\\\\\\",wav:\\\\\\\"audio/wav\\\\\\\",mp3:\\\\\\\"audio/mpeg\\\\\\\"}[name.substr(name.lastIndexOf(\\\\\\\".\\\\\\\")+1)]},getUserMedia(func){window.getUserMedia||=navigator[\\\\\\\"getUserMedia\\\\\\\"]||navigator[\\\\\\\"mozGetUserMedia\\\\\\\"];window.getUserMedia(func)},getMovementX(event){return event[\\\\\\\"movementX\\\\\\\"]||event[\\\\\\\"mozMovementX\\\\\\\"]||event[\\\\\\\"webkitMovementX\\\\\\\"]||0},getMovementY(event){return event[\\\\\\\"movementY\\\\\\\"]||event[\\\\\\\"mozMovementY\\\\\\\"]||event[\\\\\\\"webkitMovementY\\\\\\\"]||0},getMouseWheelDelta(event){var delta=0;switch(event.type){case\\\\\\\"DOMMouseScroll\\\\\\\":delta=event.detail/3;break;case\\\\\\\"mousewheel\\\\\\\":delta=event.wheelDelta/120;break;case\\\\\\\"wheel\\\\\\\":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw\\\\\\\"unrecognized mouse wheel delta mode: \\\\\\\"+event.deltaMode}break;default:throw\\\\\\\"unrecognized mouse wheel event: \\\\\\\"+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseCoords(pageX,pageY){var rect=Module[\\\\\\\"canvas\\\\\\\"].getBoundingClientRect();var cw=Module[\\\\\\\"canvas\\\\\\\"].width;var ch=Module[\\\\\\\"canvas\\\\\\\"].height;var scrollX=typeof window.scrollX!=\\\\\\\"undefined\\\\\\\"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=\\\\\\\"undefined\\\\\\\"?window.scrollY:window.pageYOffset;var adjustedX=pageX-(scrollX+rect.left);var adjustedY=pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);return{x:adjustedX,y:adjustedY}},setMouseCoords(pageX,pageY){const{x:x,y:y}=Browser.calculateMouseCoords(pageX,pageY);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y},calculateMouseEvent(event){if(Browser.pointerLock){if(event.type!=\\\\\\\"mousemove\\\\\\\"&&\\\\\\\"mozMovementX\\\\\\\"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}else{if(event.type===\\\\\\\"touchstart\\\\\\\"||event.type===\\\\\\\"touchend\\\\\\\"||event.type===\\\\\\\"touchmove\\\\\\\"){var touch=event.touch;if(touch===undefined){return}var coords=Browser.calculateMouseCoords(touch.pageX,touch.pageY);if(event.type===\\\\\\\"touchstart\\\\\\\"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type===\\\\\\\"touchend\\\\\\\"||event.type===\\\\\\\"touchmove\\\\\\\"){var last=Browser.touches[touch.identifier];last||=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}Browser.setMouseCoords(event.pageX,event.pageY)}},resizeListeners:[],updateResizeListeners(){var canvas=Module[\\\\\\\"canvas\\\\\\\"];Browser.resizeListeners.forEach(listener=>listener(canvas.width,canvas.height))},setCanvasSize(width,height,noUpdates){var canvas=Module[\\\\\\\"canvas\\\\\\\"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize(){if(typeof SDL!=\\\\\\\"undefined\\\\\\\"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module[\\\\\\\"canvas\\\\\\\"]);Browser.updateResizeListeners()},setWindowedCanvasSize(){if(typeof SDL!=\\\\\\\"undefined\\\\\\\"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module[\\\\\\\"canvas\\\\\\\"]);Browser.updateResizeListeners()},updateCanvasDimensions(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module[\\\\\\\"forcedAspectRatio\\\\\\\"]&&Module[\\\\\\\"forcedAspectRatio\\\\\\\"]>0){if(w/h<Module[\\\\\\\"forcedAspectRatio\\\\\\\"]){w=Math.round(h*Module[\\\\\\\"forcedAspectRatio\\\\\\\"])}else{h=Math.round(w/Module[\\\\\\\"forcedAspectRatio\\\\\\\"])}}if((document[\\\\\\\"fullscreenElement\\\\\\\"]||document[\\\\\\\"mozFullScreenElement\\\\\\\"]||document[\\\\\\\"msFullscreenElement\\\\\\\"]||document[\\\\\\\"webkitFullscreenElement\\\\\\\"]||document[\\\\\\\"webkitCurrentFullScreenElement\\\\\\\"])===canvas.parentNode&&typeof screen!=\\\\\\\"undefined\\\\\\\"){var factor=Math.min(screen.width/w,screen.height/h);w=Math.round(w*factor);h=Math.round(h*factor)}if(Browser.resizeCanvas){if(canvas.width!=w)canvas.width=w;if(canvas.height!=h)canvas.height=h;if(typeof canvas.style!=\\\\\\\"undefined\\\\\\\"){canvas.style.removeProperty(\\\\\\\"width\\\\\\\");canvas.style.removeProperty(\\\\\\\"height\\\\\\\")}}else{if(canvas.width!=wNative)canvas.width=wNative;if(canvas.height!=hNative)canvas.height=hNative;if(typeof canvas.style!=\\\\\\\"undefined\\\\\\\"){if(w!=wNative||h!=hNative){canvas.style.setProperty(\\\\\\\"width\\\\\\\",w+\\\\\\\"px\\\\\\\",\\\\\\\"important\\\\\\\");canvas.style.setProperty(\\\\\\\"height\\\\\\\",h+\\\\\\\"px\\\\\\\",\\\\\\\"important\\\\\\\")}else{canvas.style.removeProperty(\\\\\\\"width\\\\\\\");canvas.style.removeProperty(\\\\\\\"height\\\\\\\")}}}}};var _emscripten_cancel_main_loop=()=>{Browser.mainLoop.pause();Browser.mainLoop.func=null};var _emscripten_date_now=()=>Date.now();var _emscripten_force_exit=status=>{__emscripten_runtime_keepalive_clear();_exit(status)};var getHeapMax=()=>2147483648;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var JSEvents={removeAllEventListeners(){while(JSEvents.eventHandlers.length){JSEvents._removeHandler(JSEvents.eventHandlers.length-1)}JSEvents.deferredCalls=[]},registerRemoveEventListeners(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},inEventHandler:0,deferredCalls:[],deferCall(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var call of JSEvents.deferredCalls){if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort((x,y)=>x.precedence<y.precedence)},removeDeferredCalls(targetFunction){JSEvents.deferredCalls=JSEvents.deferredCalls.filter(call=>call.targetFunction!=targetFunction)},canPerformEventHandlerRequests(){if(navigator.userActivation){return navigator.userActivation.isActive}return JSEvents.inEventHandler&&JSEvents.currentEventHandler.allowsDeferredCalls},runDeferredCalls(){if(!JSEvents.canPerformEventHandlerRequests()){return}var deferredCalls=JSEvents.deferredCalls;JSEvents.deferredCalls=[];for(var call of deferredCalls){call.targetFunction(...call.argsList)}},eventHandlers:[],removeAllHandlersOnTarget:(target,eventTypeString)=>{for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==target&&(!eventTypeString||eventTypeString==JSEvents.eventHandlers[i].eventTypeString)){JSEvents._removeHandler(i--)}}},_removeHandler(i){var h=JSEvents.eventHandlers[i];h.target.removeEventListener(h.eventTypeString,h.eventListenerFunc,h.useCapture);JSEvents.eventHandlers.splice(i,1)},registerOrRemoveHandler(eventHandler){if(!eventHandler.target){return-4}if(eventHandler.callbackfunc){eventHandler.eventListenerFunc=function(event){++JSEvents.inEventHandler;JSEvents.currentEventHandler=eventHandler;JSEvents.runDeferredCalls();eventHandler.handlerFunc(event);JSEvents.runDeferredCalls();--JSEvents.inEventHandler};eventHandler.target.addEventListener(eventHandler.eventTypeString,eventHandler.eventListenerFunc,eventHandler.useCapture);JSEvents.eventHandlers.push(eventHandler);JSEvents.registerRemoveEventListeners()}else{for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==eventHandler.target&&JSEvents.eventHandlers[i].eventTypeString==eventHandler.eventTypeString){JSEvents._removeHandler(i--)}}}return 0},getNodeNameForTarget(target){if(!target)return\\\\\\\"\\\\\\\";if(target==window)return\\\\\\\"#window\\\\\\\";if(target==screen)return\\\\\\\"#screen\\\\\\\";return target?.nodeName||\\\\\\\"\\\\\\\"},fullscreenEnabled(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};var maybeCStringToJsString=cString=>cString>2?UTF8ToString(cString):cString;var specialHTMLTargets=[0,typeof document!=\\\\\\\"undefined\\\\\\\"?document:0,typeof window!=\\\\\\\"undefined\\\\\\\"?window:0];var findEventTarget=target=>{target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=\\\\\\\"undefined\\\\\\\"?document.querySelector(target):undefined);return domElement};var findCanvasEventTarget=findEventTarget;var _emscripten_set_canvas_element_size=(target,width,height)=>{var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;if(canvas.GLctxObject)GL.resizeOffscreenFramebuffer(canvas.GLctxObject);return 0};var _emscripten_set_main_loop=(func,fps,simulateInfiniteLoop)=>{var browserIterationFunc=getWasmTableEntry(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)};var webglPowerPreferences=[\\\\\\\"default\\\\\\\",\\\\\\\"low-power\\\\\\\",\\\\\\\"high-performance\\\\\\\"];var _emscripten_webgl_do_create_context=(target,attributes)=>{var attr32=attributes>>2;var powerPreference=HEAP32[attr32+(8>>2)];var contextAttributes={alpha:!!HEAP8[attributes+0],depth:!!HEAP8[attributes+1],stencil:!!HEAP8[attributes+2],antialias:!!HEAP8[attributes+3],premultipliedAlpha:!!HEAP8[attributes+4],preserveDrawingBuffer:!!HEAP8[attributes+5],powerPreference:webglPowerPreferences[powerPreference],failIfMajorPerformanceCaveat:!!HEAP8[attributes+12],majorVersion:HEAP32[attr32+(16>>2)],minorVersion:HEAP32[attr32+(20>>2)],enableExtensionsByDefault:HEAP8[attributes+24],explicitSwapControl:HEAP8[attributes+25],proxyContextToMainThread:HEAP32[attr32+(28>>2)],renderViaOffscreenBackBuffer:HEAP8[attributes+32]};var canvas=findCanvasEventTarget(target);if(!canvas){return 0}if(contextAttributes.explicitSwapControl&&!contextAttributes.renderViaOffscreenBackBuffer){contextAttributes.renderViaOffscreenBackBuffer=true}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle};var _emscripten_webgl_create_context=_emscripten_webgl_do_create_context;var _emscripten_webgl_destroy_context=contextHandle=>{if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)};var _emscripten_webgl_enable_extension=(contextHandle,extension)=>{var context=GL.getContext(contextHandle);var extString=UTF8ToString(extension);if(extString.startsWith(\\\\\\\"GL_\\\\\\\"))extString=extString.substr(3);if(extString==\\\\\\\"ANGLE_instanced_arrays\\\\\\\")webgl_enable_ANGLE_instanced_arrays(GLctx);if(extString==\\\\\\\"OES_vertex_array_object\\\\\\\")webgl_enable_OES_vertex_array_object(GLctx);if(extString==\\\\\\\"WEBGL_draw_buffers\\\\\\\")webgl_enable_WEBGL_draw_buffers(GLctx);if(extString==\\\\\\\"WEBGL_draw_instanced_base_vertex_base_instance\\\\\\\")webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);if(extString==\\\\\\\"WEBGL_multi_draw_instanced_base_vertex_base_instance\\\\\\\")webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(extString==\\\\\\\"WEBGL_multi_draw\\\\\\\")webgl_enable_WEBGL_multi_draw(GLctx);var ext=context.GLctx.getExtension(extString);return!!ext};var stringToNewUTF8=str=>{var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret};var _emscripten_webgl_get_supported_extensions=()=>stringToNewUTF8(GLctx.getSupportedExtensions().join(\\\\\\\" \\\\\\\"));var _emscripten_webgl_make_context_current=contextHandle=>{var success=GL.makeContextCurrent(contextHandle);return success?0:-5};var ENV={};var getExecutableName=()=>thisProgram||\\\\\\\"./this.program\\\\\\\";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator==\\\\\\\"object\\\\\\\"&&navigator.languages&&navigator.languages[0]||\\\\\\\"C\\\\\\\").replace(\\\\\\\"-\\\\\\\",\\\\\\\"_\\\\\\\")+\\\\\\\".UTF-8\\\\\\\";var env={USER:\\\\\\\"web_user\\\\\\\",LOGNAME:\\\\\\\"web_user\\\\\\\",PATH:\\\\\\\"/\\\\\\\",PWD:\\\\\\\"/\\\\\\\",HOME:\\\\\\\"/home/web_user\\\\\\\",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i<str.length;++i){HEAP8[buffer++]=str.charCodeAt(i)}HEAP8[buffer]=0};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var rightsBase=0;var rightsInheriting=0;var flags=0;{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4}HEAP8[pbuf]=type;HEAP16[pbuf+2>>1]=flags;HEAP64[pbuf+8>>3]=BigInt(rightsBase);HEAP64[pbuf+16>>3]=BigInt(rightsInheriting);return 0}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAPU32[iov>>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break;if(typeof offset!=\\\\\\\"undefined\\\\\\\"){offset+=curr}}return ret};function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doReadv(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return e.errno}}function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAPU32[iov>>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=\\\\\\\"undefined\\\\\\\"){offset+=curr}}return ret};function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\\\\\\\"undefined\\\\\\\"||!(e.name===\\\\\\\"ErrnoError\\\\\\\"))throw e;return e.errno}}var _getaddrinfo=(node,service,hint,out)=>{var addr=0;var port=0;var flags=0;var family=0;var type=0;var proto=0;var ai;function allocaddrinfo(family,type,proto,canon,addr,port){var sa,salen,ai;var errno;salen=family===10?28:16;addr=family===10?inetNtop6(addr):inetNtop4(addr);sa=_malloc(salen);errno=writeSockaddr(sa,family,addr,port);assert(!errno);ai=_malloc(32);HEAP32[ai+4>>2]=family;HEAP32[ai+8>>2]=type;HEAP32[ai+12>>2]=proto;HEAPU32[ai+24>>2]=canon;HEAPU32[ai+20>>2]=sa;if(family===10){HEAP32[ai+16>>2]=28}else{HEAP32[ai+16>>2]=16}HEAP32[ai+28>>2]=0;return ai}if(hint){flags=HEAP32[hint>>2];family=HEAP32[hint+4>>2];type=HEAP32[hint+8>>2];proto=HEAP32[hint+12>>2]}if(type&&!proto){proto=type===2?17:6}if(!type&&proto){type=proto===17?2:1}if(proto===0){proto=6}if(type===0){type=1}if(!node&&!service){return-2}if(flags&~(1|2|4|1024|8|16|32)){return-1}if(hint!==0&&HEAP32[hint>>2]&2&&!node){return-1}if(flags&32){return-2}if(type!==0&&type!==1&&type!==2){return-7}if(family!==0&&family!==2&&family!==10){return-6}if(service){service=UTF8ToString(service);port=parseInt(service,10);if(isNaN(port)){if(flags&1024){return-2}return-8}}if(!node){if(family===0){family=2}if((flags&1)===0){if(family===2){addr=_htonl(2130706433)}else{addr=[0,0,0,1]}}ai=allocaddrinfo(family,type,proto,null,addr,port);HEAPU32[out>>2]=ai;return 0}node=UTF8ToString(node);addr=inetPton4(node);if(addr!==null){if(family===0||family===2){family=2}else if(family===10&&flags&8){addr=[0,0,_htonl(65535),addr];family=10}else{return-2}}else{addr=inetPton6(node);if(addr!==null){if(family===0||family===10){family=10}else{return-2}}}if(addr!=null){ai=allocaddrinfo(family,type,proto,node,addr,port);HEAPU32[out>>2]=ai;return 0}if(flags&4){return-2}node=DNS.lookup_name(node);addr=inetPton4(node);if(family===0){family=2}else if(family===10){addr=[0,0,_htonl(65535),addr]}ai=allocaddrinfo(family,type,proto,null,addr,port);HEAPU32[out>>2]=ai;return 0};var _getnameinfo=(sa,salen,node,nodelen,serv,servlen,flags)=>{var info=readSockaddr(sa,salen);if(info.errno){return-6}var port=info.port;var addr=info.addr;var overflowed=false;if(node&&nodelen){var lookup;if(flags&1||!(lookup=DNS.lookup_addr(addr))){if(flags&8){return-2}}else{addr=lookup}var numBytesWrittenExclNull=stringToUTF8(addr,node,nodelen);if(numBytesWrittenExclNull+1>=nodelen){overflowed=true}}if(serv&&servlen){port=\\\\\\\"\\\\\\\"+port;var numBytesWrittenExclNull=stringToUTF8(port,serv,servlen);if(numBytesWrittenExclNull+1>=servlen){overflowed=true}}if(overflowed){return-12}return 0};var _glActiveTexture=x0=>GLctx.activeTexture(x0);var _glAttachShader=(program,shader)=>{GLctx.attachShader(GL.programs[program],GL.shaders[shader])};var _glBeginTransformFeedback=x0=>GLctx.beginTransformFeedback(x0);var _glBindBuffer=(target,buffer)=>{if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])};var _glBindBufferBase=(target,index,buffer)=>{GLctx.bindBufferBase(target,index,GL.buffers[buffer])};var _glBindBufferRange=(target,index,buffer,offset,ptrsize)=>{GLctx.bindBufferRange(target,index,GL.buffers[buffer],offset,ptrsize)};var _glBindFramebuffer=(target,framebuffer)=>{GLctx.bindFramebuffer(target,framebuffer?GL.framebuffers[framebuffer]:GL.currentContext.defaultFbo)};var _glBindRenderbuffer=(target,renderbuffer)=>{GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])};var _glBindTexture=(target,texture)=>{GLctx.bindTexture(target,GL.textures[texture])};var _glBindVertexArray=vao=>{GLctx.bindVertexArray(GL.vaos[vao])};var _glBlendColor=(x0,x1,x2,x3)=>GLctx.blendColor(x0,x1,x2,x3);var _glBlendEquation=x0=>GLctx.blendEquation(x0);var _glBlendFunc=(x0,x1)=>GLctx.blendFunc(x0,x1);var _glBlendFuncSeparate=(x0,x1,x2,x3)=>GLctx.blendFuncSeparate(x0,x1,x2,x3);var _glBlitFramebuffer=(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)=>GLctx.blitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9);var _glBufferData=(target,size,data,usage)=>{if(GL.currentContext.version>=2){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}return}GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)};var _glBufferSubData=(target,offset,size,data)=>{if(GL.currentContext.version>=2){size&&GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))};var _glCheckFramebufferStatus=x0=>GLctx.checkFramebufferStatus(x0);var _glClear=x0=>GLctx.clear(x0);var _glClearBufferfv=(buffer,drawbuffer,value)=>{GLctx.clearBufferfv(buffer,drawbuffer,HEAPF32,value>>2)};var _glClearColor=(x0,x1,x2,x3)=>GLctx.clearColor(x0,x1,x2,x3);var _glClearDepthf=x0=>GLctx.clearDepth(x0);var _glColorMask=(red,green,blue,alpha)=>{GLctx.colorMask(!!red,!!green,!!blue,!!alpha)};var _glCompileShader=shader=>{GLctx.compileShader(GL.shaders[shader])};var _glCompressedTexImage2D=(target,level,internalFormat,width,height,border,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data);return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,HEAPU8,data,imageSize);return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)};var _glCompressedTexImage3D=(target,level,internalFormat,width,height,depth,border,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,imageSize,data)}else{GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,HEAPU8,data,imageSize)}};var _glCompressedTexSubImage3D=(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)}else{GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,HEAPU8,data,imageSize)}};var _glCopyBufferSubData=(x0,x1,x2,x3,x4)=>GLctx.copyBufferSubData(x0,x1,x2,x3,x4);var _glCreateProgram=()=>{var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id};var _glCreateShader=shaderType=>{var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id};var _glCullFace=x0=>GLctx.cullFace(x0);var _glDeleteBuffers=(n,buffers)=>{for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}};var _glDeleteFramebuffers=(n,framebuffers)=>{for(var i=0;i<n;++i){var id=HEAP32[framebuffers+i*4>>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}};var _glDeleteProgram=id=>{if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null};var _glDeleteQueries=(n,ids)=>{for(var i=0;i<n;i++){var id=HEAP32[ids+i*4>>2];var query=GL.queries[id];if(!query)continue;GLctx.deleteQuery(query);GL.queries[id]=null}};var _glDeleteRenderbuffers=(n,renderbuffers)=>{for(var i=0;i<n;i++){var id=HEAP32[renderbuffers+i*4>>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}};var _glDeleteShader=id=>{if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null};var _glDeleteSync=id=>{if(!id)return;var sync=GL.syncs[id];if(!sync){GL.recordError(1281);return}GLctx.deleteSync(sync);sync.name=0;GL.syncs[id]=null};var _glDeleteTextures=(n,textures)=>{for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}};var _glDeleteVertexArrays=(n,vaos)=>{for(var i=0;i<n;i++){var id=HEAP32[vaos+i*4>>2];GLctx.deleteVertexArray(GL.vaos[id]);GL.vaos[id]=null}};var _glDepthFunc=x0=>GLctx.depthFunc(x0);var _glDepthMask=flag=>{GLctx.depthMask(!!flag)};var _glDisable=x0=>GLctx.disable(x0);var _glDisableVertexAttribArray=index=>{GLctx.disableVertexAttribArray(index)};var _glDrawArrays=(mode,first,count)=>{GLctx.drawArrays(mode,first,count)};var _glDrawArraysInstanced=(mode,first,count,primcount)=>{GLctx.drawArraysInstanced(mode,first,count,primcount)};var tempFixedLengthArray=[];var _glDrawBuffers=(n,bufs)=>{var bufArray=tempFixedLengthArray[n];for(var i=0;i<n;i++){bufArray[i]=HEAP32[bufs+i*4>>2]}GLctx.drawBuffers(bufArray)};var _glDrawElements=(mode,count,type,indices)=>{GLctx.drawElements(mode,count,type,indices)};var _glDrawElementsInstanced=(mode,count,type,indices,primcount)=>{GLctx.drawElementsInstanced(mode,count,type,indices,primcount)};var _glEnable=x0=>GLctx.enable(x0);var _glEnableVertexAttribArray=index=>{GLctx.enableVertexAttribArray(index)};var _glEndTransformFeedback=()=>GLctx.endTransformFeedback();var _glFenceSync=(condition,flags)=>{var sync=GLctx.fenceSync(condition,flags);if(sync){var id=GL.getNewId(GL.syncs);sync.name=id;GL.syncs[id]=sync;return id}return 0};var _glFinish=()=>GLctx.finish();var _glFramebufferRenderbuffer=(target,attachment,renderbuffertarget,renderbuffer)=>{GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])};var _glFramebufferTexture2D=(target,attachment,textarget,texture,level)=>{GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)};var _glFramebufferTextureLayer=(target,attachment,texture,level,layer)=>{GLctx.framebufferTextureLayer(target,attachment,GL.textures[texture],level,layer)};var _glFrontFace=x0=>GLctx.frontFace(x0);var _glGenBuffers=(n,buffers)=>{GL.genObject(n,buffers,\\\\\\\"createBuffer\\\\\\\",GL.buffers)};var _glGenFramebuffers=(n,ids)=>{GL.genObject(n,ids,\\\\\\\"createFramebuffer\\\\\\\",GL.framebuffers)};var _glGenQueries=(n,ids)=>{GL.genObject(n,ids,\\\\\\\"createQuery\\\\\\\",GL.queries)};var _glGenRenderbuffers=(n,renderbuffers)=>{GL.genObject(n,renderbuffers,\\\\\\\"createRenderbuffer\\\\\\\",GL.renderbuffers)};var _glGenTextures=(n,textures)=>{GL.genObject(n,textures,\\\\\\\"createTexture\\\\\\\",GL.textures)};var _glGenVertexArrays=(n,arrays)=>{GL.genObject(n,arrays,\\\\\\\"createVertexArray\\\\\\\",GL.vaos)};var _glGenerateMipmap=x0=>GLctx.generateMipmap(x0);var writeI53ToI64=(ptr,num)=>{HEAPU32[ptr>>2]=num;var lower=HEAPU32[ptr>>2];HEAPU32[ptr+4>>2]=(num-lower)/4294967296};var webglGetExtensions=function $webglGetExtensions(){var exts=getEmscriptenSupportedExtensions(GLctx);exts=exts.concat(exts.map(e=>\\\\\\\"GL_\\\\\\\"+e));return exts};var emscriptenWebGLGet=(name_,p,type)=>{if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 34814:case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break;case 33309:if(GL.currentContext.version<2){GL.recordError(1282);return}ret=webglGetExtensions().length;break;case 33307:case 33308:if(GL.currentContext.version<2){GL.recordError(1280);return}ret=name_==33307?3:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case\\\\\\\"number\\\\\\\":ret=result;break;case\\\\\\\"boolean\\\\\\\":ret=result?1:0;break;case\\\\\\\"string\\\\\\\":GL.recordError(1280);return;case\\\\\\\"object\\\\\\\":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i<result.length;++i){switch(type){case 0:HEAP32[p+i*4>>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err(`GL_INVALID_ENUM in glGet${type}v: Unknown object returned from WebGL getParameter(${name_})! (error: ${e})`);return}}break;default:GL.recordError(1280);err(`GL_INVALID_ENUM in glGet${type}v: Native code calling glGet${type}v(${name_}) and it returns ${result} of type ${typeof result}!`);return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p]=ret?1:0;break}};var _glGetFloatv=(name_,p)=>emscriptenWebGLGet(name_,p,2);var _glGetInteger64v=(name_,p)=>{emscriptenWebGLGet(name_,p,1)};var _glGetIntegerv=(name_,p)=>emscriptenWebGLGet(name_,p,0);var _glGetProgramInfoLog=(program,maxLength,length,infoLog)=>{var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log=\\\\\\\"(unknown error)\\\\\\\";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _glGetProgramiv=(program,pname,p)=>{if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}program=GL.programs[program];if(pname==35716){var log=GLctx.getProgramInfoLog(program);if(log===null)log=\\\\\\\"(unknown error)\\\\\\\";HEAP32[p>>2]=log.length+1}else if(pname==35719){if(!program.maxUniformLength){for(var i=0;i<GLctx.getProgramParameter(program,35718);++i){program.maxUniformLength=Math.max(program.maxUniformLength,GLctx.getActiveUniform(program,i).name.length+1)}}HEAP32[p>>2]=program.maxUniformLength}else if(pname==35722){if(!program.maxAttributeLength){for(var i=0;i<GLctx.getProgramParameter(program,35721);++i){program.maxAttributeLength=Math.max(program.maxAttributeLength,GLctx.getActiveAttrib(program,i).name.length+1)}}HEAP32[p>>2]=program.maxAttributeLength}else if(pname==35381){if(!program.maxUniformBlockNameLength){for(var i=0;i<GLctx.getProgramParameter(program,35382);++i){program.maxUniformBlockNameLength=Math.max(program.maxUniformBlockNameLength,GLctx.getActiveUniformBlockName(program,i).length+1)}}HEAP32[p>>2]=program.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(program,pname)}};var _glGetShaderInfoLog=(shader,maxLength,length,infoLog)=>{var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log=\\\\\\\"(unknown error)\\\\\\\";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _glGetShaderiv=(shader,pname,p)=>{if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log=\\\\\\\"(unknown error)\\\\\\\";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}};var _glGetString=name_=>{var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:ret=stringToNewUTF8(webglGetExtensions().join(\\\\\\\" \\\\\\\"));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=s?stringToNewUTF8(s):0;break;case 7938:var glVersion=GLctx.getParameter(7938);if(GL.currentContext.version>=2)glVersion=`OpenGL ES 3.0 (${glVersion})`;else{glVersion=`OpenGL ES 2.0 (${glVersion})`}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\\\\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+\\\\\\\"0\\\\\\\";glslVersion=`OpenGL ES GLSL ES ${ver_num[1]} (${glslVersion})`}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280)}GL.stringCache[name_]=ret}return ret};var _glGetSynciv=(sync,pname,bufSize,length,values)=>{if(bufSize<0){GL.recordError(1281);return}if(!values){GL.recordError(1281);return}var ret=GLctx.getSyncParameter(GL.syncs[sync],pname);if(ret!==null){HEAP32[values>>2]=ret;if(length)HEAP32[length>>2]=1}};var _glGetUniformBlockIndex=(program,uniformBlockName)=>GLctx.getUniformBlockIndex(GL.programs[program],UTF8ToString(uniformBlockName));var webglGetLeftBracePos=name=>name.slice(-1)==\\\\\\\"]\\\\\\\"&&name.lastIndexOf(\\\\\\\"[\\\\\\\");var webglPrepareUniformLocationsBeforeFirstUse=program=>{var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};for(i=0;i<GLctx.getProgramParameter(program,35718);++i){var u=GLctx.getActiveUniform(program,i);var nm=u.name;var sz=u.size;var lb=webglGetLeftBracePos(nm);var arrayName=lb>0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j<sz;++j){uniformLocsById[id]=j;program.uniformArrayNamesById[id++]=arrayName}}}};var _glGetUniformLocation=(program,name)=>{name=UTF8ToString(name);if(program=GL.programs[program]){webglPrepareUniformLocationsBeforeFirstUse(program);var uniformLocsById=program.uniformLocsById;var arrayIndex=0;var uniformBaseName=name;var leftBrace=webglGetLeftBracePos(name);if(leftBrace>0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex<sizeAndId[0]){arrayIndex+=sizeAndId[1];if(uniformLocsById[arrayIndex]=uniformLocsById[arrayIndex]||GLctx.getUniformLocation(program,name)){return arrayIndex}}}else{GL.recordError(1281)}return-1};var _glLinkProgram=program=>{program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}};var _glPixelStorei=(pname,param)=>{if(pname==3317){GL.unpackAlignment=param}else if(pname==3314){GL.unpackRowLength=param}GLctx.pixelStorei(pname,param)};var _glReadBuffer=x0=>GLctx.readBuffer(x0);var computeUnpackAlignedImageSize=(width,height,sizePerPixel)=>{function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=(GL.unpackRowLength||width)*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,GL.unpackAlignment);return height*alignedRowSize};var colorChannelsInGlTextureFormat=format=>{var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1};var heapObjectForWebGLType=type=>{type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)return HEAPU32;return HEAPU16};var toTypedArrayIndex=(pointer,heap)=>pointer>>>31-Math.clz32(heap.BYTES_PER_ELEMENT);var emscriptenWebGLGetTexPixelData=(type,format,width,height,pixels,internalFormat)=>{var heap=heapObjectForWebGLType(type);var sizePerPixel=colorChannelsInGlTextureFormat(format)*heap.BYTES_PER_ELEMENT;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel);return heap.subarray(toTypedArrayIndex(pixels,heap),toTypedArrayIndex(pixels+bytes,heap))};var _glReadPixels=(x,y,width,height,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels);return}var heap=heapObjectForWebGLType(type);var target=toTypedArrayIndex(pixels,heap);GLctx.readPixels(x,y,width,height,format,type,heap,target);return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)};var _glRenderbufferStorage=(x0,x1,x2,x3)=>GLctx.renderbufferStorage(x0,x1,x2,x3);var _glRenderbufferStorageMultisample=(x0,x1,x2,x3,x4)=>GLctx.renderbufferStorageMultisample(x0,x1,x2,x3,x4);var _glScissor=(x0,x1,x2,x3)=>GLctx.scissor(x0,x1,x2,x3);var _glShaderSource=(shader,count,string,length)=>{var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)};var _glTexImage2D=(target,level,internalFormat,width,height,border,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels);return}if(pixels){var heap=heapObjectForWebGLType(type);var index=toTypedArrayIndex(pixels,heap);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,index);return}}var pixelData=pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null;GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixelData)};var _glTexImage3D=(target,level,internalFormat,width,height,depth,border,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,null)}};var _glTexParameterf=(x0,x1,x2)=>GLctx.texParameterf(x0,x1,x2);var _glTexParameteri=(x0,x1,x2)=>GLctx.texParameteri(x0,x1,x2);var _glTexStorage2D=(x0,x1,x2,x3,x4)=>GLctx.texStorage2D(x0,x1,x2,x3,x4);var _glTexSubImage3D=(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,null)}};var _glTransformFeedbackVaryings=(program,count,varyings,bufferMode)=>{program=GL.programs[program];var vars=[];for(var i=0;i<count;i++)vars.push(UTF8ToString(HEAP32[varyings+i*4>>2]));GLctx.transformFeedbackVaryings(program,vars,bufferMode)};var webglGetUniformLocation=location=>{var p=GLctx.currentProgram;if(p){var webglLoc=p.uniformLocsById[location];if(typeof webglLoc==\\\\\\\"number\\\\\\\"){p.uniformLocsById[location]=webglLoc=GLctx.getUniformLocation(p,p.uniformArrayNamesById[location]+(webglLoc>0?`[${webglLoc}]`:\\\\\\\"\\\\\\\"))}return webglLoc}else{GL.recordError(1282)}};var _glUniform1f=(location,v0)=>{GLctx.uniform1f(webglGetUniformLocation(location),v0)};var _glUniform1i=(location,v0)=>{GLctx.uniform1i(webglGetUniformLocation(location),v0)};var miniTempWebGLIntBuffers=[];var _glUniform1iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1iv(webglGetUniformLocation(location),HEAP32,value>>2,count);return}if(count<=288){var view=miniTempWebGLIntBuffers[count];for(var i=0;i<count;++i){view[i]=HEAP32[value+4*i>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(webglGetUniformLocation(location),view)};var _glUniform1ui=(location,v0)=>{GLctx.uniform1ui(webglGetUniformLocation(location),v0)};var _glUniform1uiv=(location,count,value)=>{count&&GLctx.uniform1uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count)};var _glUniform2f=(location,v0,v1)=>{GLctx.uniform2f(webglGetUniformLocation(location),v0,v1)};var miniTempWebGLFloatBuffers=[];var _glUniform2fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*2);return}if(count<=144){var view=miniTempWebGLFloatBuffers[2*count];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(webglGetUniformLocation(location),view)};var _glUniform2iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2iv(webglGetUniformLocation(location),HEAP32,value>>2,count*2);return}if(count<=144){var view=miniTempWebGLIntBuffers[2*count];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(webglGetUniformLocation(location),view)};var _glUniform3fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*3);return}if(count<=96){var view=miniTempWebGLFloatBuffers[3*count];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(webglGetUniformLocation(location),view)};var _glUniform4f=(location,v0,v1,v2,v3)=>{GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)};var _glUniform4fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count];var heap=HEAPF32;value=value>>2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(webglGetUniformLocation(location),view)};var _glUniformBlockBinding=(program,uniformBlockIndex,uniformBlockBinding)=>{program=GL.programs[program];GLctx.uniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding)};var _glUniformMatrix3fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*9);return}if(count<=32){var view=miniTempWebGLFloatBuffers[9*count];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,view)};var _glUniformMatrix4fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*16);return}if(count<=18){var view=miniTempWebGLFloatBuffers[16*count];var heap=HEAPF32;value=value>>2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,view)};var _glUseProgram=program=>{program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program};var _glVertexAttrib4f=(x0,x1,x2,x3,x4)=>GLctx.vertexAttrib4f(x0,x1,x2,x3,x4);var _glVertexAttribDivisor=(index,divisor)=>{GLctx.vertexAttribDivisor(index,divisor)};var _glVertexAttribI4ui=(x0,x1,x2,x3,x4)=>GLctx.vertexAttribI4ui(x0,x1,x2,x3,x4);var _glVertexAttribIPointer=(index,size,type,stride,ptr)=>{GLctx.vertexAttribIPointer(index,size,type,stride,ptr)};var _glVertexAttribPointer=(index,size,type,normalized,stride,ptr)=>{GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)};var _glViewport=(x0,x1,x2,x3)=>GLctx.viewport(x0,x1,x2,x3);var GodotRuntime={get_func:function(ptr){return wasmTable.get(ptr)},error:function(){err.apply(null,Array.from(arguments))},print:function(){out.apply(null,Array.from(arguments))},malloc:function(p_size){return _malloc(p_size)},free:function(p_ptr){_free(p_ptr)},getHeapValue:function(p_ptr,p_type){return getValue(p_ptr,p_type)},setHeapValue:function(p_ptr,p_value,p_type){setValue(p_ptr,p_value,p_type)},heapSub:function(p_heap,p_ptr,p_len){const bytes=p_heap.BYTES_PER_ELEMENT;return p_heap.subarray(p_ptr/bytes,p_ptr/bytes+p_len)},heapSlice:function(p_heap,p_ptr,p_len){const bytes=p_heap.BYTES_PER_ELEMENT;return p_heap.slice(p_ptr/bytes,p_ptr/bytes+p_len)},heapCopy:function(p_dst,p_src,p_ptr){const bytes=p_src.BYTES_PER_ELEMENT;return p_dst.set(p_src,p_ptr/bytes)},parseString:function(p_ptr){return UTF8ToString(p_ptr)},parseStringArray:function(p_ptr,p_size){const strings=[];const ptrs=GodotRuntime.heapSub(HEAP32,p_ptr,p_size);ptrs.forEach(function(ptr){strings.push(GodotRuntime.parseString(ptr))});return strings},strlen:function(p_str){return lengthBytesUTF8(p_str)},allocString:function(p_str){const length=GodotRuntime.strlen(p_str)+1;const c_str=GodotRuntime.malloc(length);stringToUTF8(p_str,c_str,length);return c_str},allocStringArray:function(p_strings){const size=p_strings.length;const c_ptr=GodotRuntime.malloc(size*4);for(let i=0;i<size;i++){HEAP32[(c_ptr>>2)+i]=GodotRuntime.allocString(p_strings[i])}return c_ptr},freeStringArray:function(p_ptr,p_len){for(let i=0;i<p_len;i++){GodotRuntime.free(HEAP32[(p_ptr>>2)+i])}GodotRuntime.free(p_ptr)},stringToHeap:function(p_str,p_ptr,p_len){return stringToUTF8Array(p_str,HEAP8,p_ptr,p_len)}};var GodotConfig={canvas:null,locale:\\\\\\\"en\\\\\\\",canvas_resize_policy:2,virtual_keyboard:false,persistent_drops:false,on_execute:null,on_exit:null,init_config:function(p_opts){GodotConfig.canvas_resize_policy=p_opts[\\\\\\\"canvasResizePolicy\\\\\\\"];GodotConfig.canvas=p_opts[\\\\\\\"canvas\\\\\\\"];GodotConfig.locale=p_opts[\\\\\\\"locale\\\\\\\"]||GodotConfig.locale;GodotConfig.virtual_keyboard=p_opts[\\\\\\\"virtualKeyboard\\\\\\\"];GodotConfig.persistent_drops=!!p_opts[\\\\\\\"persistentDrops\\\\\\\"];GodotConfig.on_execute=p_opts[\\\\\\\"onExecute\\\\\\\"];GodotConfig.on_exit=p_opts[\\\\\\\"onExit\\\\\\\"];if(p_opts[\\\\\\\"focusCanvas\\\\\\\"]){GodotConfig.canvas.focus()}},locate_file:function(file){return Module[\\\\\\\"locateFile\\\\\\\"](file)},clear:function(){GodotConfig.canvas=null;GodotConfig.locale=\\\\\\\"en\\\\\\\";GodotConfig.canvas_resize_policy=2;GodotConfig.virtual_keyboard=false;GodotConfig.persistent_drops=false;GodotConfig.on_execute=null;GodotConfig.on_exit=null}};var GodotFS={ENOENT:44,_idbfs:false,_syncing:false,_mount_points:[],is_persistent:function(){return GodotFS._idbfs?1:0},init:function(persistentPaths){GodotFS._idbfs=false;if(!Array.isArray(persistentPaths)){return Promise.reject(new Error(\\\\\\\"Persistent paths must be an array\\\\\\\"))}if(!persistentPaths.length){return Promise.resolve()}GodotFS._mount_points=persistentPaths.slice();function createRecursive(dir){try{FS.stat(dir)}catch(e){if(e.errno!==GodotFS.ENOENT){GodotRuntime.error(e)}FS.mkdirTree(dir)}}GodotFS._mount_points.forEach(function(path){createRecursive(path);FS.mount(IDBFS,{},path)});return new Promise(function(resolve,reject){FS.syncfs(true,function(err){if(err){GodotFS._mount_points=[];GodotFS._idbfs=false;GodotRuntime.print(`IndexedDB not available: ${err.message}`)}else{GodotFS._idbfs=true}resolve(err)})})},deinit:function(){GodotFS._mount_points.forEach(function(path){try{FS.unmount(path)}catch(e){GodotRuntime.print(\\\\\\\"Already unmounted\\\\\\\",e)}if(GodotFS._idbfs&&IDBFS.dbs[path]){IDBFS.dbs[path].close();delete IDBFS.dbs[path]}});GodotFS._mount_points=[];GodotFS._idbfs=false;GodotFS._syncing=false},sync:function(){if(GodotFS._syncing){GodotRuntime.error(\\\\\\\"Already syncing!\\\\\\\");return Promise.resolve()}GodotFS._syncing=true;return new Promise(function(resolve,reject){FS.syncfs(false,function(error){if(error){GodotRuntime.error(`Failed to save IDB file system: ${error.message}`)}GodotFS._syncing=false;resolve(error)})})},copy_to_fs:function(path,buffer){const idx=path.lastIndexOf(\\\\\\\"/\\\\\\\");let dir=\\\\\\\"/\\\\\\\";if(idx>0){dir=path.slice(0,idx)}try{FS.stat(dir)}catch(e){if(e.errno!==GodotFS.ENOENT){GodotRuntime.error(e)}FS.mkdirTree(dir)}FS.writeFile(path,new Uint8Array(buffer))}};var GodotOS={request_quit:function(){},_async_cbs:[],_fs_sync_promise:null,atexit:function(p_promise_cb){GodotOS._async_cbs.push(p_promise_cb)},cleanup:function(exit_code){const cb=GodotConfig.on_exit;GodotFS.deinit();GodotConfig.clear();if(cb){cb(exit_code)}},finish_async:function(callback){GodotOS._fs_sync_promise.then(function(err){const promises=[];GodotOS._async_cbs.forEach(function(cb){promises.push(new Promise(cb))});return Promise.all(promises)}).then(function(){return GodotFS.sync()}).then(function(err){setTimeout(function(){callback()},0)})}};var GodotAudio={MAX_VOLUME_CHANNELS:8,GodotChannel:{CHANNEL_L:0,CHANNEL_R:1,CHANNEL_C:3,CHANNEL_LFE:4,CHANNEL_RL:5,CHANNEL_RR:6,CHANNEL_SL:7,CHANNEL_SR:8},WebChannel:{CHANNEL_L:0,CHANNEL_R:1,CHANNEL_SL:2,CHANNEL_SR:3,CHANNEL_C:4,CHANNEL_LFE:5},samples:null,Sample:class Sample{static getSample(id){if(!GodotAudio.samples.has(id)){throw new ReferenceError(`Could not find sample \\\\\\\"${id}\\\\\\\"`)}return GodotAudio.samples.get(id)}static getSampleOrNull(id){return GodotAudio.samples.get(id)??null}static create(params,options={}){const sample=new GodotAudio.Sample(params,options);GodotAudio.samples.set(params.id,sample);return sample}static delete(id){GodotAudio.samples.delete(id)}constructor(params,options={}){this.id=params.id;this._audioBuffer=null;this.numberOfChannels=options.numberOfChannels??2;this.sampleRate=options.sampleRate??44100;this.loopMode=options.loopMode??\\\\\\\"disabled\\\\\\\";this.loopBegin=options.loopBegin??0;this.loopEnd=options.loopEnd??0;this.setAudioBuffer(params.audioBuffer)}getAudioBuffer(){return this._duplicateAudioBuffer()}setAudioBuffer(val){this._audioBuffer=val}clear(){this.setAudioBuffer(null);GodotAudio.Sample.delete(this.id)}_duplicateAudioBuffer(){if(this._audioBuffer==null){throw new Error(\\\\\\\"couldn't duplicate a null audioBuffer\\\\\\\")}const channels=new Array(this._audioBuffer.numberOfChannels);for(let i=0;i<this._audioBuffer.numberOfChannels;i++){const channel=new Float32Array(this._audioBuffer.getChannelData(i));channels[i]=channel}const buffer=GodotAudio.ctx.createBuffer(this.numberOfChannels,this._audioBuffer.length,this._audioBuffer.sampleRate);for(let i=0;i<channels.length;i++){buffer.copyToChannel(channels[i],i,0)}return buffer}},SampleNodeBus:class SampleNodeBus{static create(bus){return new GodotAudio.SampleNodeBus(bus)}constructor(bus){const NUMBER_OF_WEB_CHANNELS=6;this._bus=bus;this._channelSplitter=GodotAudio.ctx.createChannelSplitter(NUMBER_OF_WEB_CHANNELS);this._l=GodotAudio.ctx.createGain();this._r=GodotAudio.ctx.createGain();this._sl=GodotAudio.ctx.createGain();this._sr=GodotAudio.ctx.createGain();this._c=GodotAudio.ctx.createGain();this._lfe=GodotAudio.ctx.createGain();this._channelMerger=GodotAudio.ctx.createChannelMerger(NUMBER_OF_WEB_CHANNELS);this._channelSplitter.connect(this._l,GodotAudio.WebChannel.CHANNEL_L).connect(this._channelMerger,GodotAudio.WebChannel.CHANNEL_L,GodotAudio.WebChannel.CHANNEL_L);this._channelSplitter.connect(this._r,GodotAudio.WebChannel.CHANNEL_R).connect(this._channelMerger,GodotAudio.WebChannel.CHANNEL_L,GodotAudio.WebChannel.CHANNEL_R);this._channelSplitter.connect(this._sl,GodotAudio.WebChannel.CHANNEL_SL).connect(this._channelMerger,GodotAudio.WebChannel.CHANNEL_L,GodotAudio.WebChannel.CHANNEL_SL);this._channelSplitter.connect(this._sr,GodotAudio.WebChannel.CHANNEL_SR).connect(this._channelMerger,GodotAudio.WebChannel.CHANNEL_L,GodotAudio.WebChannel.CHANNEL_SR);this._channelSplitter.connect(this._c,GodotAudio.WebChannel.CHANNEL_C).connect(this._channelMerger,GodotAudio.WebChannel.CHANNEL_L,GodotAudio.WebChannel.CHANNEL_C);this._channelSplitter.connect(this._lfe,GodotAudio.WebChannel.CHANNEL_L).connect(this._channelMerger,GodotAudio.WebChannel.CHANNEL_L,GodotAudio.WebChannel.CHANNEL_LFE);this._channelMerger.connect(this._bus.getInputNode())}getInputNode(){return this._channelSplitter}getOutputNode(){return this._channelMerger}setVolume(volume){if(volume.length!==GodotAudio.MAX_VOLUME_CHANNELS){throw new Error(`Volume length isn't \\\\\\\"${GodotAudio.MAX_VOLUME_CHANNELS}\\\\\\\", is ${volume.length} instead`)}this._l.gain.value=volume[GodotAudio.GodotChannel.CHANNEL_L]??0;this._r.gain.value=volume[GodotAudio.GodotChannel.CHANNEL_R]??0;this._sl.gain.value=volume[GodotAudio.GodotChannel.CHANNEL_SL]??0;this._sr.gain.value=volume[GodotAudio.GodotChannel.CHANNEL_SR]??0;this._c.gain.value=volume[GodotAudio.GodotChannel.CHANNEL_C]??0;this._lfe.gain.value=volume[GodotAudio.GodotChannel.CHANNEL_LFE]??0}clear(){this._bus=null;this._channelSplitter.disconnect();this._channelSplitter=null;this._l.disconnect();this._l=null;this._r.disconnect();this._r=null;this._sl.disconnect();this._sl=null;this._sr.disconnect();this._sr=null;this._c.disconnect();this._c=null;this._lfe.disconnect();this._lfe=null;this._channelMerger.disconnect();this._channelMerger=null}},sampleNodes:null,SampleNode:class SampleNode{static getSampleNode(id){if(!GodotAudio.sampleNodes.has(id)){throw new ReferenceError(`Could not find sample node \\\\\\\"${id}\\\\\\\"`)}return GodotAudio.sampleNodes.get(id)}static getSampleNodeOrNull(id){return GodotAudio.sampleNodes.get(id)??null}static stopSampleNode(id){const sampleNode=GodotAudio.SampleNode.getSampleNodeOrNull(id);if(sampleNode==null){return}sampleNode.stop()}static pauseSampleNode(id,enable){const sampleNode=GodotAudio.SampleNode.getSampleNodeOrNull(id);if(sampleNode==null){return}sampleNode.pause(enable)}static create(params,options={}){const sampleNode=new GodotAudio.SampleNode(params,options);GodotAudio.sampleNodes.set(params.id,sampleNode);return sampleNode}static delete(id){GodotAudio.sampleNodes.delete(id)}constructor(params,options={}){this.id=params.id;this.streamObjectId=params.streamObjectId;this.offset=options.offset??0;this.startTime=options.startTime??0;this.isPaused=false;this.pauseTime=0;this._playbackRate=44100;this.loopMode=options.loopMode??this.getSample().loopMode??\\\\\\\"disabled\\\\\\\";this._pitchScale=1;this._sourceStartTime=0;this._sampleNodeBuses=new Map;this._source=GodotAudio.ctx.createBufferSource();this._onended=null;this.setPlaybackRate(options.playbackRate??44100);this._source.buffer=this.getSample().getAudioBuffer();this._addEndedListener();const bus=GodotAudio.Bus.getBus(params.busIndex);const sampleNodeBus=this.getSampleNodeBus(bus);sampleNodeBus.setVolume(options.volume)}getPlaybackRate(){return this._playbackRate}setPlaybackRate(val){this._playbackRate=val;this._syncPlaybackRate()}getPitchScale(){return this._pitchScale}setPitchScale(val){this._pitchScale=val;this._syncPlaybackRate()}getSample(){return GodotAudio.Sample.getSample(this.streamObjectId)}getOutputNode(){return this._source}start(){this._resetSourceStartTime();this._source.start(this.startTime,this.offset)}stop(){this.clear()}restart(){this.isPaused=false;this.pauseTime=0;this._resetSourceStartTime();this._restart()}pause(enable=true){if(enable){this._pause();return}this._unpause()}connect(node){return this.getOutputNode().connect(node)}setVolumes(buses,volumes){for(let busIdx=0;busIdx<buses.length;busIdx++){const sampleNodeBus=this.getSampleNodeBus(buses[busIdx]);sampleNodeBus.setVolume(volumes.slice(busIdx*GodotAudio.MAX_VOLUME_CHANNELS,busIdx*GodotAudio.MAX_VOLUME_CHANNELS+GodotAudio.MAX_VOLUME_CHANNELS))}}getSampleNodeBus(bus){if(!this._sampleNodeBuses.has(bus)){const sampleNodeBus=GodotAudio.SampleNodeBus.create(bus);this._sampleNodeBuses.set(bus,sampleNodeBus);this._source.connect(sampleNodeBus.getInputNode())}return this._sampleNodeBuses.get(bus)}clear(){this.isPaused=false;this.pauseTime=0;if(this._source!=null){this._source.removeEventListener(\\\\\\\"ended\\\\\\\",this._onended);this._onended=null;this._source.stop();this._source.disconnect();this._source=null}for(const sampleNodeBus of this._sampleNodeBuses.values()){sampleNodeBus.clear()}this._sampleNodeBuses.clear();GodotAudio.SampleNode.delete(this.id)}_resetSourceStartTime(){this._sourceStartTime=GodotAudio.ctx.currentTime}_syncPlaybackRate(){this._source.playbackRate.value=this.getPlaybackRate()*this.getPitchScale()}_restart(){if(this._source!=null){this._source.disconnect()}this._source=GodotAudio.ctx.createBufferSource();this._source.buffer=this.getSample().getAudioBuffer();for(const sampleNodeBus of this._sampleNodeBuses.values()){this.connect(sampleNodeBus.getInputNode())}this._addEndedListener();const pauseTime=this.isPaused?this.pauseTime:0;this._source.start(this.startTime,this.offset+pauseTime)}_pause(){this.isPaused=true;this.pauseTime=(GodotAudio.ctx.currentTime-this._sourceStartTime)/this.getPlaybackRate();this._source.stop()}_unpause(){this._restart();this.isPaused=false;this.pauseTime=0}_addEndedListener(){if(this._onended!=null){this._source.removeEventListener(\\\\\\\"ended\\\\\\\",this._onended)}const self=this;this._onended=_=>{if(self.isPaused){return}switch(self.getSample().loopMode){case\\\\\\\"disabled\\\\\\\":{const id=this.id;self.stop();if(GodotAudio.sampleFinishedCallback!=null){const idCharPtr=GodotRuntime.allocString(id);GodotAudio.sampleFinishedCallback(idCharPtr);GodotRuntime.free(idCharPtr)}}break;case\\\\\\\"forward\\\\\\\":case\\\\\\\"backward\\\\\\\":self.restart();break;default:}};this._source.addEventListener(\\\\\\\"ended\\\\\\\",this._onended)}},buses:null,busSolo:null,Bus:class Bus{static getCount(){return GodotAudio.buses.length}static setCount(val){const buses=GodotAudio.buses;if(val===buses.length){return}if(val<buses.length){const deletedBuses=buses.slice(val);for(let i=0;i<deletedBuses.length;i++){const deletedBus=deletedBuses[i];deletedBus.clear()}GodotAudio.buses=buses.slice(0,val);return}for(let i=GodotAudio.buses.length;i<val;i++){GodotAudio.Bus.create()}}static getBus(index){if(index<0||index>=GodotAudio.buses.length){throw new ReferenceError(`invalid bus index \\\\\\\"${index}\\\\\\\"`)}return GodotAudio.buses[index]}static getBusOrNull(index){if(index<0||index>=GodotAudio.buses.length){return null}return GodotAudio.buses[index]}static move(fromIndex,toIndex){const movedBus=GodotAudio.Bus.getBus(fromIndex);const buses=GodotAudio.buses.filter((_,i)=>i!==fromIndex);buses.splice(toIndex-1,0,movedBus);GodotAudio.buses=buses}static addAt(index){const newBus=GodotAudio.Bus.create();if(index!==newBus.getId()){GodotAudio.Bus.move(newBus.getId(),index)}}static create(){const newBus=new GodotAudio.Bus;const isFirstBus=GodotAudio.buses.length===0;GodotAudio.buses.push(newBus);if(isFirstBus){newBus.setSend(null)}else{newBus.setSend(GodotAudio.Bus.getBus(0))}return newBus}constructor(){this._sampleNodes=new Set;this.isSolo=false;this._send=null;this._gainNode=GodotAudio.ctx.createGain();this._soloNode=GodotAudio.ctx.createGain();this._muteNode=GodotAudio.ctx.createGain();this._gainNode.connect(this._soloNode).connect(this._muteNode)}getId(){return GodotAudio.buses.indexOf(this)}getVolumeDb(){return GodotAudio.linear_to_db(this._gainNode.gain.value)}setVolumeDb(val){const linear=GodotAudio.db_to_linear(val);if(isFinite(linear)){this._gainNode.gain.value=linear}}getSend(){return this._send}setSend(val){this._send=val;if(val==null){if(this.getId()==0){this.getOutputNode().connect(GodotAudio.ctx.destination);return}throw new Error(`Cannot send to \\\\\\\"${val}\\\\\\\" without the bus being at index 0 (current index: ${this.getId()})`)}this.connect(val)}getInputNode(){return this._gainNode}getOutputNode(){return this._muteNode}mute(enable){this._muteNode.gain.value=enable?0:1}solo(enable){if(this.isSolo===enable){return}if(enable){if(GodotAudio.busSolo!=null&&GodotAudio.busSolo!==this){GodotAudio.busSolo._disableSolo()}this._enableSolo();return}this._disableSolo()}addSampleNode(sampleNode){this._sampleNodes.add(sampleNode);sampleNode.getOutputNode().connect(this.getInputNode())}removeSampleNode(sampleNode){this._sampleNodes.delete(sampleNode);sampleNode.getOutputNode().disconnect()}connect(bus){if(bus==null){throw new Error(\\\\\\\"cannot connect to null bus\\\\\\\")}this.getOutputNode().disconnect();this.getOutputNode().connect(bus.getInputNode());return bus}clear(){GodotAudio.buses=GodotAudio.buses.filter(v=>v!==this)}_syncSampleNodes(){const sampleNodes=Array.from(this._sampleNodes);for(let i=0;i<sampleNodes.length;i++){const sampleNode=sampleNodes[i];sampleNode.getOutputNode().disconnect();sampleNode.getOutputNode().connect(this.getInputNode())}}_enableSolo(){this.isSolo=true;GodotAudio.busSolo=this;this._soloNode.gain.value=1;const otherBuses=GodotAudio.buses.filter(otherBus=>otherBus!==this);for(let i=0;i<otherBuses.length;i++){const otherBus=otherBuses[i];otherBus._soloNode.gain.value=0}}_disableSolo(){this.isSolo=false;GodotAudio.busSolo=null;this._soloNode.gain.value=1;const otherBuses=GodotAudio.buses.filter(otherBus=>otherBus!==this);for(let i=0;i<otherBuses.length;i++){const otherBus=otherBuses[i];otherBus._soloNode.gain.value=1}}},sampleFinishedCallback:null,ctx:null,input:null,driver:null,interval:0,linear_to_db:function(linear){return Math.log(linear)*8.685889638065037},db_to_linear:function(db){return Math.exp(db*.11512925464970228)},init:function(mix_rate,latency,onstatechange,onlatencyupdate){GodotAudio.samples=new Map;GodotAudio.sampleNodes=new Map;GodotAudio.buses=[];GodotAudio.busSolo=null;const opts={};if(mix_rate){GodotAudio.sampleRate=mix_rate;opts[\\\\\\\"sampleRate\\\\\\\"]=mix_rate}const ctx=new(window.AudioContext||window.webkitAudioContext)(opts);GodotAudio.ctx=ctx;ctx.onstatechange=function(){let state=0;switch(ctx.state){case\\\\\\\"suspended\\\\\\\":state=0;break;case\\\\\\\"running\\\\\\\":state=1;break;case\\\\\\\"closed\\\\\\\":state=2;break;default:}onstatechange(state)};ctx.onstatechange();GodotAudio.interval=setInterval(function(){let computed_latency=0;if(ctx.baseLatency){computed_latency+=GodotAudio.ctx.baseLatency}if(ctx.outputLatency){computed_latency+=GodotAudio.ctx.outputLatency}onlatencyupdate(computed_latency)},1e3);GodotOS.atexit(GodotAudio.close_async);return ctx.destination.channelCount},create_input:function(callback){if(GodotAudio.input){return 0}function gotMediaInput(stream){try{GodotAudio.input=GodotAudio.ctx.createMediaStreamSource(stream);callback(GodotAudio.input)}catch(e){GodotRuntime.error(\\\\\\\"Failed creating input.\\\\\\\",e)}}if(navigator.mediaDevices&&navigator.mediaDevices.getUserMedia){navigator.mediaDevices.getUserMedia({audio:true}).then(gotMediaInput,function(e){GodotRuntime.error(\\\\\\\"Error getting user media.\\\\\\\",e)})}else{if(!navigator.getUserMedia){navigator.getUserMedia=navigator.webkitGetUserMedia||navigator.mozGetUserMedia}if(!navigator.getUserMedia){GodotRuntime.error(\\\\\\\"getUserMedia not available.\\\\\\\");return 1}navigator.getUserMedia({audio:true},gotMediaInput,function(e){GodotRuntime.print(e)})}return 0},close_async:function(resolve,reject){const ctx=GodotAudio.ctx;GodotAudio.ctx=null;if(!ctx){resolve();return}if(GodotAudio.interval){clearInterval(GodotAudio.interval);GodotAudio.interval=0}if(GodotAudio.input){GodotAudio.input.disconnect();GodotAudio.input=null}let closed=Promise.resolve();if(GodotAudio.driver){closed=GodotAudio.driver.close()}closed.then(function(){return ctx.close()}).then(function(){ctx.onstatechange=null;resolve()}).catch(function(e){ctx.onstatechange=null;GodotRuntime.error(\\\\\\\"Error closing AudioContext\\\\\\\",e);resolve()})},start_sample:function(playbackObjectId,streamObjectId,busIndex,startOptions){GodotAudio.SampleNode.stopSampleNode(playbackObjectId);const sampleNode=GodotAudio.SampleNode.create({busIndex:busIndex,id:playbackObjectId,streamObjectId:streamObjectId},startOptions);sampleNode.start()},stop_sample:function(playbackObjectId){GodotAudio.SampleNode.stopSampleNode(playbackObjectId)},sample_set_pause:function(playbackObjectId,pause){GodotAudio.SampleNode.pauseSampleNode(playbackObjectId,pause)},update_sample_pitch_scale:function(playbackObjectId,pitchScale){const sampleNode=GodotAudio.SampleNode.getSampleNodeOrNull(playbackObjectId);if(sampleNode==null){return}sampleNode.setPitchScale(pitchScale)},sample_set_volumes_linear:function(playbackObjectId,busIndexes,volumes){const sampleNode=GodotAudio.SampleNode.getSampleNodeOrNull(playbackObjectId);if(sampleNode==null){return}const buses=busIndexes.map(busIndex=>GodotAudio.Bus.getBus(busIndex));sampleNode.setVolumes(buses,volumes)},set_sample_bus_count:function(count){GodotAudio.Bus.setCount(count)},remove_sample_bus:function(index){const bus=GodotAudio.Bus.getBus(index);bus.clear()},add_sample_bus:function(atPos){GodotAudio.Bus.addAt(atPos)},move_sample_bus:function(busIndex,toPos){GodotAudio.Bus.move(busIndex,toPos)},set_sample_bus_send:function(busIndex,sendIndex){const bus=GodotAudio.Bus.getBus(busIndex);bus.setSend(GodotAudio.Bus.getBus(sendIndex))},set_sample_bus_volume_db:function(busIndex,volumeDb){const bus=GodotAudio.Bus.getBus(busIndex);bus.setVolumeDb(volumeDb)},set_sample_bus_solo:function(busIndex,enable){const bus=GodotAudio.Bus.getBus(busIndex);bus.solo(enable)},set_sample_bus_mute:function(busIndex,enable){const bus=GodotAudio.Bus.getBus(busIndex);bus.mute(enable)}};function _godot_audio_has_worklet(){return GodotAudio.ctx&&GodotAudio.ctx.audioWorklet?1:0}function _godot_audio_init(p_mix_rate,p_latency,p_state_change,p_latency_update){const statechange=GodotRuntime.get_func(p_state_change);const latencyupdate=GodotRuntime.get_func(p_latency_update);const mix_rate=GodotRuntime.getHeapValue(p_mix_rate,\\\\\\\"i32\\\\\\\");const channels=GodotAudio.init(mix_rate,p_latency,statechange,latencyupdate);GodotRuntime.setHeapValue(p_mix_rate,GodotAudio.ctx.sampleRate,\\\\\\\"i32\\\\\\\");return channels}function _godot_audio_input_start(){return GodotAudio.create_input(function(input){input.connect(GodotAudio.driver.get_node())})}function _godot_audio_input_stop(){if(GodotAudio.input){const tracks=GodotAudio.input[\\\\\\\"mediaStream\\\\\\\"][\\\\\\\"getTracks\\\\\\\"]();for(let i=0;i<tracks.length;i++){tracks[i][\\\\\\\"stop\\\\\\\"]()}GodotAudio.input.disconnect();GodotAudio.input=null}}function _godot_audio_is_available(){if(!(window.AudioContext||window.webkitAudioContext)){return 0}return 1}function _godot_audio_resume(){if(GodotAudio.ctx&&GodotAudio.ctx.state!==\\\\\\\"running\\\\\\\"){GodotAudio.ctx.resume()}}function _godot_audio_sample_bus_add(atPos){GodotAudio.add_sample_bus(atPos)}function _godot_audio_sample_bus_move(fromPos,toPos){GodotAudio.move_sample_bus(fromPos,toPos)}function _godot_audio_sample_bus_remove(index){GodotAudio.remove_sample_bus(index)}function _godot_audio_sample_bus_set_count(count){GodotAudio.set_sample_bus_count(count)}function _godot_audio_sample_bus_set_mute(bus,enable){GodotAudio.set_sample_bus_mute(bus,Boolean(enable))}function _godot_audio_sample_bus_set_send(bus,sendIndex){GodotAudio.set_sample_bus_send(bus,sendIndex)}function _godot_audio_sample_bus_set_solo(bus,enable){GodotAudio.set_sample_bus_solo(bus,Boolean(enable))}function _godot_audio_sample_bus_set_volume_db(bus,volumeDb){GodotAudio.set_sample_bus_volume_db(bus,volumeDb)}function _godot_audio_sample_is_active(playbackObjectIdStrPtr){const playbackObjectId=GodotRuntime.parseString(playbackObjectIdStrPtr);return Number(GodotAudio.sampleNodes.has(playbackObjectId))}function _godot_audio_sample_register_stream(streamObjectIdStrPtr,framesPtr,framesTotal,loopModeStrPtr,loopBegin,loopEnd){const BYTES_PER_FLOAT32=4;const streamObjectId=GodotRuntime.parseString(streamObjectIdStrPtr);const loopMode=GodotRuntime.parseString(loopModeStrPtr);const numberOfChannels=2;const sampleRate=GodotAudio.ctx.sampleRate;const subLeft=GodotRuntime.heapSub(HEAPF32,framesPtr,framesTotal);const subRight=GodotRuntime.heapSub(HEAPF32,framesPtr+framesTotal*BYTES_PER_FLOAT32,framesTotal);const audioBuffer=GodotAudio.ctx.createBuffer(numberOfChannels,framesTotal,sampleRate);audioBuffer.copyToChannel(new Float32Array(subLeft),0,0);audioBuffer.copyToChannel(new Float32Array(subRight),1,0);GodotAudio.Sample.create({id:streamObjectId,audioBuffer:audioBuffer},{loopBegin:loopBegin,loopEnd:loopEnd,loopMode:loopMode,numberOfChannels:numberOfChannels,sampleRate:sampleRate})}function _godot_audio_sample_set_finished_callback(callbackPtr){GodotAudio.sampleFinishedCallback=GodotRuntime.get_func(callbackPtr)}function _godot_audio_sample_set_pause(playbackObjectIdStrPtr,pause){const playbackObjectId=GodotRuntime.parseString(playbackObjectIdStrPtr);GodotAudio.sample_set_pause(playbackObjectId,Boolean(pause))}function _godot_audio_sample_set_volumes_linear(playbackObjectIdStrPtr,busesPtr,busesSize,volumesPtr,volumesSize){const playbackObjectId=GodotRuntime.parseString(playbackObjectIdStrPtr);const buses=GodotRuntime.heapSub(HEAP32,busesPtr,busesSize);const volumes=GodotRuntime.heapSub(HEAPF32,volumesPtr,volumesSize);GodotAudio.sample_set_volumes_linear(playbackObjectId,Array.from(buses),volumes)}function _godot_audio_sample_start(playbackObjectIdStrPtr,streamObjectIdStrPtr,busIndex,offset,volumePtr){const playbackObjectId=GodotRuntime.parseString(playbackObjectIdStrPtr);const streamObjectId=GodotRuntime.parseString(streamObjectIdStrPtr);const volume=GodotRuntime.heapSub(HEAPF32,volumePtr,8);const startOptions={offset:offset,volume:volume,playbackRate:1};GodotAudio.start_sample(playbackObjectId,streamObjectId,busIndex,startOptions)}function _godot_audio_sample_stop(playbackObjectIdStrPtr){const playbackObjectId=GodotRuntime.parseString(playbackObjectIdStrPtr);GodotAudio.stop_sample(playbackObjectId)}function _godot_audio_sample_stream_is_registered(streamObjectIdStrPtr){const streamObjectId=GodotRuntime.parseString(streamObjectIdStrPtr);return Number(GodotAudio.Sample.getSampleOrNull(streamObjectId)!=null)}function _godot_audio_sample_unregister_stream(streamObjectIdStrPtr){const streamObjectId=GodotRuntime.parseString(streamObjectIdStrPtr);const sample=GodotAudio.Sample.getSampleOrNull(streamObjectId);if(sample!=null){sample.clear()}}function _godot_audio_sample_update_pitch_scale(playbackObjectIdStrPtr,pitchScale){const playbackObjectId=GodotRuntime.parseString(playbackObjectIdStrPtr);GodotAudio.update_sample_pitch_scale(playbackObjectId,pitchScale)}var GodotAudioWorklet={promise:null,worklet:null,ring_buffer:null,create:function(channels){const path=GodotConfig.locate_file(\\\\\\\"godot.audio.worklet.js\\\\\\\");GodotAudioWorklet.promise=GodotAudio.ctx.audioWorklet.addModule(path).then(function(){GodotAudioWorklet.worklet=new AudioWorkletNode(GodotAudio.ctx,\\\\\\\"godot-processor\\\\\\\",{outputChannelCount:[channels]});return Promise.resolve()});GodotAudio.driver=GodotAudioWorklet},start:function(in_buf,out_buf,state){GodotAudioWorklet.promise.then(function(){const node=GodotAudioWorklet.worklet;node.connect(GodotAudio.ctx.destination);node.port.postMessage({cmd:\\\\\\\"start\\\\\\\",data:[state,in_buf,out_buf]});node.port.onmessage=function(event){GodotRuntime.error(event.data)}})},start_no_threads:function(p_out_buf,p_out_size,out_callback,p_in_buf,p_in_size,in_callback){function RingBuffer(){let wpos=0;let rpos=0;let pending_samples=0;const wbuf=new Float32Array(p_out_size);function send(port){if(pending_samples===0){return}const buffer=GodotRuntime.heapSub(HEAPF32,p_out_buf,p_out_size);const size=buffer.length;const tot_sent=pending_samples;out_callback(wpos,pending_samples);if(wpos+pending_samples>=size){const high=size-wpos;wbuf.set(buffer.subarray(wpos,size));pending_samples-=high;wpos=0}if(pending_samples>0){wbuf.set(buffer.subarray(wpos,wpos+pending_samples),tot_sent-pending_samples)}port.postMessage({cmd:\\\\\\\"chunk\\\\\\\",data:wbuf.subarray(0,tot_sent)});wpos+=pending_samples;pending_samples=0}this.receive=function(recv_buf){const buffer=GodotRuntime.heapSub(HEAPF32,p_in_buf,p_in_size);const from=rpos;let to_write=recv_buf.length;let high=0;if(rpos+to_write>=p_in_size){high=p_in_size-rpos;buffer.set(recv_buf.subarray(0,high),rpos);to_write-=high;rpos=0}if(to_write){buffer.set(recv_buf.subarray(high,to_write),rpos)}in_callback(from,recv_buf.length);rpos+=to_write};this.consumed=function(size,port){pending_samples+=size;send(port)}}GodotAudioWorklet.ring_buffer=new RingBuffer;GodotAudioWorklet.promise.then(function(){const node=GodotAudioWorklet.worklet;const buffer=GodotRuntime.heapSlice(HEAPF32,p_out_buf,p_out_size);node.connect(GodotAudio.ctx.destination);node.port.postMessage({cmd:\\\\\\\"start_nothreads\\\\\\\",data:[buffer,p_in_size]});node.port.onmessage=function(event){if(!GodotAudioWorklet.worklet){return}if(event.data[\\\\\\\"cmd\\\\\\\"]===\\\\\\\"read\\\\\\\"){const read=event.data[\\\\\\\"data\\\\\\\"];GodotAudioWorklet.ring_buffer.consumed(read,GodotAudioWorklet.worklet.port)}else if(event.data[\\\\\\\"cmd\\\\\\\"]===\\\\\\\"input\\\\\\\"){const buf=event.data[\\\\\\\"data\\\\\\\"];if(buf.length>p_in_size){GodotRuntime.error(\\\\\\\"Input chunk is too big\\\\\\\");return}GodotAudioWorklet.ring_buffer.receive(buf)}else{GodotRuntime.error(event.data)}}})},get_node:function(){return GodotAudioWorklet.worklet},close:function(){return new Promise(function(resolve,reject){if(GodotAudioWorklet.promise===null){return}const p=GodotAudioWorklet.promise;p.then(function(){GodotAudioWorklet.worklet.port.postMessage({cmd:\\\\\\\"stop\\\\\\\",data:null});GodotAudioWorklet.worklet.disconnect();GodotAudioWorklet.worklet.port.onmessage=null;GodotAudioWorklet.worklet=null;GodotAudioWorklet.promise=null;resolve()}).catch(function(err){GodotRuntime.error(err)})})}};function _godot_audio_worklet_create(channels){try{GodotAudioWorklet.create(channels)}catch(e){GodotRuntime.error(\\\\\\\"Error starting AudioDriverWorklet\\\\\\\",e);return 1}return 0}function _godot_audio_worklet_start_no_threads(p_out_buf,p_out_size,p_out_callback,p_in_buf,p_in_size,p_in_callback){const out_callback=GodotRuntime.get_func(p_out_callback);const in_callback=GodotRuntime.get_func(p_in_callback);GodotAudioWorklet.start_no_threads(p_out_buf,p_out_size,out_callback,p_in_buf,p_in_size,in_callback)}function _godot_js_config_canvas_id_get(p_ptr,p_ptr_max){GodotRuntime.stringToHeap(`#${GodotConfig.canvas.id}`,p_ptr,p_ptr_max)}function _godot_js_config_locale_get(p_ptr,p_ptr_max){GodotRuntime.stringToHeap(GodotConfig.locale,p_ptr,p_ptr_max)}var GodotDisplayCursor={shape:\\\\\\\"default\\\\\\\",visible:true,cursors:{},set_style:function(style){GodotConfig.canvas.style.cursor=style},set_shape:function(shape){GodotDisplayCursor.shape=shape;let css=shape;if(shape in GodotDisplayCursor.cursors){const c=GodotDisplayCursor.cursors[shape];css=`url(\\\\\\\"${c.url}\\\\\\\") ${c.x} ${c.y}, default`}if(GodotDisplayCursor.visible){GodotDisplayCursor.set_style(css)}},clear:function(){GodotDisplayCursor.set_style(\\\\\\\"\\\\\\\");GodotDisplayCursor.shape=\\\\\\\"default\\\\\\\";GodotDisplayCursor.visible=true;Object.keys(GodotDisplayCursor.cursors).forEach(function(key){URL.revokeObjectURL(GodotDisplayCursor.cursors[key]);delete GodotDisplayCursor.cursors[key]})},lockPointer:function(){const canvas=GodotConfig.canvas;if(canvas.requestPointerLock){canvas.requestPointerLock()}},releasePointer:function(){if(document.exitPointerLock){document.exitPointerLock()}},isPointerLocked:function(){return document.pointerLockElement===GodotConfig.canvas}};var GodotEventListeners={handlers:[],has:function(target,event,method,capture){return GodotEventListeners.handlers.findIndex(function(e){return e.target===target&&e.event===event&&e.method===method&&e.capture===capture})!==-1},add:function(target,event,method,capture){if(GodotEventListeners.has(target,event,method,capture)){return}function Handler(p_target,p_event,p_method,p_capture){this.target=p_target;this.event=p_event;this.method=p_method;this.capture=p_capture}GodotEventListeners.handlers.push(new Handler(target,event,method,capture));target.addEventListener(event,method,capture)},clear:function(){GodotEventListeners.handlers.forEach(function(h){h.target.removeEventListener(h.event,h.method,h.capture)});GodotEventListeners.handlers.length=0}};var _emscripten_webgl_do_get_current_context=()=>GL.currentContext?GL.currentContext.handle:0;var _emscripten_webgl_get_current_context=_emscripten_webgl_do_get_current_context;var GodotDisplayScreen={desired_size:[0,0],hidpi:true,getPixelRatio:function(){return GodotDisplayScreen.hidpi?window.devicePixelRatio||1:1},isFullscreen:function(){const elem=document.fullscreenElement||document.mozFullscreenElement||document.webkitFullscreenElement||document.msFullscreenElement;if(elem){return elem===GodotConfig.canvas}return document.fullscreen||document.mozFullScreen||document.webkitIsFullscreen},hasFullscreen:function(){return document.fullscreenEnabled||document.mozFullScreenEnabled||document.webkitFullscreenEnabled},requestFullscreen:function(){if(!GodotDisplayScreen.hasFullscreen()){return 1}const canvas=GodotConfig.canvas;try{const promise=(canvas.requestFullscreen||canvas.msRequestFullscreen||canvas.mozRequestFullScreen||canvas.mozRequestFullscreen||canvas.webkitRequestFullscreen).call(canvas);if(promise){promise.catch(function(){})}}catch(e){return 1}return 0},exitFullscreen:function(){if(!GodotDisplayScreen.isFullscreen()){return 0}try{const promise=document.exitFullscreen();if(promise){promise.catch(function(){})}}catch(e){return 1}return 0},_updateGL:function(){const gl_context_handle=_emscripten_webgl_get_current_context();const gl=GL.getContext(gl_context_handle);if(gl){GL.resizeOffscreenFramebuffer(gl)}},updateSize:function(){const isFullscreen=GodotDisplayScreen.isFullscreen();const wantsFullWindow=GodotConfig.canvas_resize_policy===2;const noResize=GodotConfig.canvas_resize_policy===0;const dWidth=GodotDisplayScreen.desired_size[0];const dHeight=GodotDisplayScreen.desired_size[1];const canvas=GodotConfig.canvas;let width=dWidth;let height=dHeight;if(noResize){if(canvas.width!==width||canvas.height!==height){GodotDisplayScreen.desired_size=[canvas.width,canvas.height];GodotDisplayScreen._updateGL();return 1}return 0}const scale=GodotDisplayScreen.getPixelRatio();if(isFullscreen||wantsFullWindow){width=window.innerWidth*scale;height=window.innerHeight*scale}const csw=`${width/scale}px`;const csh=`${height/scale}px`;if(canvas.style.width!==csw||canvas.style.height!==csh||canvas.width!==width||canvas.height!==height){canvas.width=width;canvas.height=height;canvas.style.width=csw;canvas.style.height=csh;GodotDisplayScreen._updateGL();return 1}return 0}};var GodotDisplayVK={textinput:null,textarea:null,available:function(){return GodotConfig.virtual_keyboard&&\\\\\\\"ontouchstart\\\\\\\"in window},init:function(input_cb){function create(what){const elem=document.createElement(what);elem.style.display=\\\\\\\"none\\\\\\\";elem.style.position=\\\\\\\"absolute\\\\\\\";elem.style.zIndex=\\\\\\\"-1\\\\\\\";elem.style.background=\\\\\\\"transparent\\\\\\\";elem.style.padding=\\\\\\\"0px\\\\\\\";elem.style.margin=\\\\\\\"0px\\\\\\\";elem.style.overflow=\\\\\\\"hidden\\\\\\\";elem.style.width=\\\\\\\"0px\\\\\\\";elem.style.height=\\\\\\\"0px\\\\\\\";elem.style.border=\\\\\\\"0px\\\\\\\";elem.style.outline=\\\\\\\"none\\\\\\\";elem.readonly=true;elem.disabled=true;GodotEventListeners.add(elem,\\\\\\\"input\\\\\\\",function(evt){const c_str=GodotRuntime.allocString(elem.value);input_cb(c_str,elem.selectionEnd);GodotRuntime.free(c_str)},false);GodotEventListeners.add(elem,\\\\\\\"blur\\\\\\\",function(evt){elem.style.display=\\\\\\\"none\\\\\\\";elem.readonly=true;elem.disabled=true},false);GodotConfig.canvas.insertAdjacentElement(\\\\\\\"beforebegin\\\\\\\",elem);return elem}GodotDisplayVK.textinput=create(\\\\\\\"input\\\\\\\");GodotDisplayVK.textarea=create(\\\\\\\"textarea\\\\\\\");GodotDisplayVK.updateSize()},show:function(text,type,start,end){if(!GodotDisplayVK.textinput||!GodotDisplayVK.textarea){return}if(GodotDisplayVK.textinput.style.display!==\\\\\\\"\\\\\\\"||GodotDisplayVK.textarea.style.display!==\\\\\\\"\\\\\\\"){GodotDisplayVK.hide()}GodotDisplayVK.updateSize();let elem=GodotDisplayVK.textinput;switch(type){case 0:elem.type=\\\\\\\"text\\\\\\\";elem.inputmode=\\\\\\\"\\\\\\\";break;case 1:elem=GodotDisplayVK.textarea;break;case 2:elem.type=\\\\\\\"text\\\\\\\";elem.inputmode=\\\\\\\"numeric\\\\\\\";break;case 3:elem.type=\\\\\\\"text\\\\\\\";elem.inputmode=\\\\\\\"decimal\\\\\\\";break;case 4:elem.type=\\\\\\\"tel\\\\\\\";elem.inputmode=\\\\\\\"\\\\\\\";break;case 5:elem.type=\\\\\\\"email\\\\\\\";elem.inputmode=\\\\\\\"\\\\\\\";break;case 6:elem.type=\\\\\\\"password\\\\\\\";elem.inputmode=\\\\\\\"\\\\\\\";break;case 7:elem.type=\\\\\\\"url\\\\\\\";elem.inputmode=\\\\\\\"\\\\\\\";break;default:elem.type=\\\\\\\"text\\\\\\\";elem.inputmode=\\\\\\\"\\\\\\\";break}elem.readonly=false;elem.disabled=false;elem.value=text;elem.style.display=\\\\\\\"block\\\\\\\";elem.focus();elem.setSelectionRange(start,end)},hide:function(){if(!GodotDisplayVK.textinput||!GodotDisplayVK.textarea){return}[GodotDisplayVK.textinput,GodotDisplayVK.textarea].forEach(function(elem){elem.blur();elem.style.display=\\\\\\\"none\\\\\\\";elem.value=\\\\\\\"\\\\\\\"})},updateSize:function(){if(!GodotDisplayVK.textinput||!GodotDisplayVK.textarea){return}const rect=GodotConfig.canvas.getBoundingClientRect();function update(elem){elem.style.left=`${rect.left}px`;elem.style.top=`${rect.top}px`;elem.style.width=`${rect.width}px`;elem.style.height=`${rect.height}px`}update(GodotDisplayVK.textinput);update(GodotDisplayVK.textarea)},clear:function(){if(GodotDisplayVK.textinput){GodotDisplayVK.textinput.remove();GodotDisplayVK.textinput=null}if(GodotDisplayVK.textarea){GodotDisplayVK.textarea.remove();GodotDisplayVK.textarea=null}}};var GodotDisplay={window_icon:\\\\\\\"\\\\\\\",getDPI:function(){const dpi=Math.round(window.devicePixelRatio*96);return dpi>=96?dpi:96}};function _godot_js_display_alert(p_text){window.alert(GodotRuntime.parseString(p_text))}function _godot_js_display_canvas_focus(){GodotConfig.canvas.focus()}function _godot_js_display_canvas_is_focused(){return document.activeElement===GodotConfig.canvas}function _godot_js_display_clipboard_get(callback){const func=GodotRuntime.get_func(callback);try{navigator.clipboard.readText().then(function(result){const ptr=GodotRuntime.allocString(result);func(ptr);GodotRuntime.free(ptr)}).catch(function(e){})}catch(e){}}function _godot_js_display_clipboard_set(p_text){const text=GodotRuntime.parseString(p_text);if(!navigator.clipboard||!navigator.clipboard.writeText){return 1}navigator.clipboard.writeText(text).catch(function(e){GodotRuntime.error(\\\\\\\"Setting OS clipboard is only possible from an input callback for the Web platform. Exception:\\\\\\\",e)});return 0}function _godot_js_display_cursor_is_hidden(){return!GodotDisplayCursor.visible}function _godot_js_display_cursor_is_locked(){return GodotDisplayCursor.isPointerLocked()?1:0}function _godot_js_display_cursor_lock_set(p_lock){if(p_lock){GodotDisplayCursor.lockPointer()}else{GodotDisplayCursor.releasePointer()}}function _godot_js_display_cursor_set_custom_shape(p_shape,p_ptr,p_len,p_hotspot_x,p_hotspot_y){const shape=GodotRuntime.parseString(p_shape);const old_shape=GodotDisplayCursor.cursors[shape];if(p_len>0){const png=new Blob([GodotRuntime.heapSlice(HEAPU8,p_ptr,p_len)],{type:\\\\\\\"image/png\\\\\\\"});const url=URL.createObjectURL(png);GodotDisplayCursor.cursors[shape]={url:url,x:p_hotspot_x,y:p_hotspot_y}}else{delete GodotDisplayCursor.cursors[shape]}if(shape===GodotDisplayCursor.shape){GodotDisplayCursor.set_shape(GodotDisplayCursor.shape)}if(old_shape){URL.revokeObjectURL(old_shape.url)}}function _godot_js_display_cursor_set_shape(p_string){GodotDisplayCursor.set_shape(GodotRuntime.parseString(p_string))}function _godot_js_display_cursor_set_visible(p_visible){const visible=p_visible!==0;if(visible===GodotDisplayCursor.visible){return}GodotDisplayCursor.visible=visible;if(visible){GodotDisplayCursor.set_shape(GodotDisplayCursor.shape)}else{GodotDisplayCursor.set_style(\\\\\\\"none\\\\\\\")}}function _godot_js_display_desired_size_set(width,height){GodotDisplayScreen.desired_size=[width,height];GodotDisplayScreen.updateSize()}function _godot_js_display_fullscreen_cb(callback){const canvas=GodotConfig.canvas;const func=GodotRuntime.get_func(callback);function change_cb(evt){if(evt.target===canvas){func(GodotDisplayScreen.isFullscreen())}}GodotEventListeners.add(document,\\\\\\\"fullscreenchange\\\\\\\",change_cb,false);GodotEventListeners.add(document,\\\\\\\"mozfullscreenchange\\\\\\\",change_cb,false);GodotEventListeners.add(document,\\\\\\\"webkitfullscreenchange\\\\\\\",change_cb,false)}function _godot_js_display_fullscreen_exit(){return GodotDisplayScreen.exitFullscreen()}function _godot_js_display_fullscreen_request(){return GodotDisplayScreen.requestFullscreen()}function _godot_js_display_has_webgl(p_version){if(p_version!==1&&p_version!==2){return false}try{return!!document.createElement(\\\\\\\"canvas\\\\\\\").getContext(p_version===2?\\\\\\\"webgl2\\\\\\\":\\\\\\\"webgl\\\\\\\")}catch(e){}return false}function _godot_js_display_is_swap_ok_cancel(){const win=[\\\\\\\"Windows\\\\\\\",\\\\\\\"Win64\\\\\\\",\\\\\\\"Win32\\\\\\\",\\\\\\\"WinCE\\\\\\\"];const plat=navigator.platform||\\\\\\\"\\\\\\\";if(win.indexOf(plat)!==-1){return 1}return 0}function _godot_js_display_notification_cb(callback,p_enter,p_exit,p_in,p_out){const canvas=GodotConfig.canvas;const func=GodotRuntime.get_func(callback);const notif=[p_enter,p_exit,p_in,p_out];[\\\\\\\"mouseover\\\\\\\",\\\\\\\"mouseleave\\\\\\\",\\\\\\\"focus\\\\\\\",\\\\\\\"blur\\\\\\\"].forEach(function(evt_name,idx){GodotEventListeners.add(canvas,evt_name,function(){func(notif[idx])},true)})}function _godot_js_display_pixel_ratio_get(){return GodotDisplayScreen.getPixelRatio()}function _godot_js_display_screen_dpi_get(){return GodotDisplay.getDPI()}function _godot_js_display_screen_size_get(width,height){const scale=GodotDisplayScreen.getPixelRatio();GodotRuntime.setHeapValue(width,window.screen.width*scale,\\\\\\\"i32\\\\\\\");GodotRuntime.setHeapValue(height,window.screen.height*scale,\\\\\\\"i32\\\\\\\")}function _godot_js_display_setup_canvas(p_width,p_height,p_fullscreen,p_hidpi){const canvas=GodotConfig.canvas;GodotEventListeners.add(canvas,\\\\\\\"contextmenu\\\\\\\",function(ev){ev.preventDefault()},false);GodotEventListeners.add(canvas,\\\\\\\"webglcontextlost\\\\\\\",function(ev){alert(\\\\\\\"WebGL context lost, please reload the page\\\\\\\");ev.preventDefault()},false);GodotDisplayScreen.hidpi=!!p_hidpi;switch(GodotConfig.canvas_resize_policy){case 0:GodotDisplayScreen.desired_size=[canvas.width,canvas.height];break;case 1:GodotDisplayScreen.desired_size=[p_width,p_height];break;default:canvas.style.position=\\\\\\\"absolute\\\\\\\";canvas.style.top=0;canvas.style.left=0;break}GodotDisplayScreen.updateSize();if(p_fullscreen){GodotDisplayScreen.requestFullscreen()}}function _godot_js_display_size_update(){const updated=GodotDisplayScreen.updateSize();if(updated){GodotDisplayVK.updateSize()}return updated}function _godot_js_display_touchscreen_is_available(){return\\\\\\\"ontouchstart\\\\\\\"in window}function _godot_js_display_tts_available(){return\\\\\\\"speechSynthesis\\\\\\\"in window}function _godot_js_display_vk_available(){return GodotDisplayVK.available()}function _godot_js_display_vk_cb(p_input_cb){const input_cb=GodotRuntime.get_func(p_input_cb);if(GodotDisplayVK.available()){GodotDisplayVK.init(input_cb)}}function _godot_js_display_vk_hide(){GodotDisplayVK.hide()}function _godot_js_display_vk_show(p_text,p_type,p_start,p_end){const text=GodotRuntime.parseString(p_text);const start=p_start>0?p_start:0;const end=p_end>0?p_end:start;GodotDisplayVK.show(text,p_type,start,end)}function _godot_js_display_window_blur_cb(callback){const func=GodotRuntime.get_func(callback);GodotEventListeners.add(window,\\\\\\\"blur\\\\\\\",function(){func()},false)}function _godot_js_display_window_icon_set(p_ptr,p_len){let link=document.getElementById(\\\\\\\"-gd-engine-icon\\\\\\\");const old_icon=GodotDisplay.window_icon;if(p_ptr){if(link===null){link=document.createElement(\\\\\\\"link\\\\\\\");link.rel=\\\\\\\"icon\\\\\\\";link.id=\\\\\\\"-gd-engine-icon\\\\\\\";document.head.appendChild(link)}const png=new Blob([GodotRuntime.heapSlice(HEAPU8,p_ptr,p_len)],{type:\\\\\\\"image/png\\\\\\\"});GodotDisplay.window_icon=URL.createObjectURL(png);link.href=GodotDisplay.window_icon}else{if(link){link.remove()}GodotDisplay.window_icon=null}if(old_icon){URL.revokeObjectURL(old_icon)}}function _godot_js_display_window_size_get(p_width,p_height){GodotRuntime.setHeapValue(p_width,GodotConfig.canvas.width,\\\\\\\"i32\\\\\\\");GodotRuntime.setHeapValue(p_height,GodotConfig.canvas.height,\\\\\\\"i32\\\\\\\")}function _godot_js_display_window_title_set(p_data){document.title=GodotRuntime.parseString(p_data)}function _godot_js_eval(p_js,p_use_global_ctx,p_union_ptr,p_byte_arr,p_byte_arr_write,p_callback){const js_code=GodotRuntime.parseString(p_js);let eval_ret=null;try{if(p_use_global_ctx){const global_eval=eval;eval_ret=global_eval(js_code)}else{eval_ret=eval(js_code)}}catch(e){GodotRuntime.error(e)}switch(typeof eval_ret){case\\\\\\\"boolean\\\\\\\":GodotRuntime.setHeapValue(p_union_ptr,eval_ret,\\\\\\\"i32\\\\\\\");return 1;case\\\\\\\"number\\\\\\\":GodotRuntime.setHeapValue(p_union_ptr,eval_ret,\\\\\\\"double\\\\\\\");return 3;case\\\\\\\"string\\\\\\\":GodotRuntime.setHeapValue(p_union_ptr,GodotRuntime.allocString(eval_ret),\\\\\\\"*\\\\\\\");return 4;case\\\\\\\"object\\\\\\\":if(eval_ret===null){break}if(ArrayBuffer.isView(eval_ret)&&!(eval_ret instanceof Uint8Array)){eval_ret=new Uint8Array(eval_ret.buffer)}else if(eval_ret instanceof ArrayBuffer){eval_ret=new Uint8Array(eval_ret)}if(eval_ret instanceof Uint8Array){const func=GodotRuntime.get_func(p_callback);const bytes_ptr=func(p_byte_arr,p_byte_arr_write,eval_ret.length);HEAPU8.set(eval_ret,bytes_ptr);return 29}break}return 0}var IDHandler={_last_id:0,_references:{},get:function(p_id){return IDHandler._references[p_id]},add:function(p_data){const id=++IDHandler._last_id;IDHandler._references[id]=p_data;return id},remove:function(p_id){delete IDHandler._references[p_id]}};var GodotFetch={onread:function(id,result){const obj=IDHandler.get(id);if(!obj){return}if(result.value){obj.chunks.push(result.value)}obj.reading=false;obj.done=result.done},onresponse:function(id,response){const obj=IDHandler.get(id);if(!obj){return}let chunked=false;response.headers.forEach(function(value,header){const v=value.toLowerCase().trim();const h=header.toLowerCase().trim();if(h===\\\\\\\"transfer-encoding\\\\\\\"&&v===\\\\\\\"chunked\\\\\\\"){chunked=true}});obj.status=response.status;obj.response=response;obj.reader=response.body.getReader();obj.chunked=chunked},onerror:function(id,err){GodotRuntime.error(err);const obj=IDHandler.get(id);if(!obj){return}obj.error=err},create:function(method,url,headers,body){const obj={request:null,response:null,reader:null,error:null,done:false,reading:false,status:0,chunks:[]};const id=IDHandler.add(obj);const init={method:method,headers:headers,body:body};obj.request=fetch(url,init);obj.request.then(GodotFetch.onresponse.bind(null,id)).catch(GodotFetch.onerror.bind(null,id));return id},free:function(id){const obj=IDHandler.get(id);if(!obj){return}IDHandler.remove(id);if(!obj.request){return}obj.request.then(function(response){response.abort()}).catch(function(e){})},read:function(id){const obj=IDHandler.get(id);if(!obj){return}if(obj.reader&&!obj.reading){if(obj.done){obj.reader=null;return}obj.reading=true;obj.reader.read().then(GodotFetch.onread.bind(null,id)).catch(GodotFetch.onerror.bind(null,id))}}};function _godot_js_fetch_create(p_method,p_url,p_headers,p_headers_size,p_body,p_body_size){const method=GodotRuntime.parseString(p_method);const url=GodotRuntime.parseString(p_url);const headers=GodotRuntime.parseStringArray(p_headers,p_headers_size);const body=p_body_size?GodotRuntime.heapSlice(HEAP8,p_body,p_body_size):null;return GodotFetch.create(method,url,headers.map(function(hv){const idx=hv.indexOf(\\\\\\\":\\\\\\\");if(idx<=0){return[]}return[hv.slice(0,idx).trim(),hv.slice(idx+1).trim()]}).filter(function(v){return v.length===2}),body)}function _godot_js_fetch_free(id){GodotFetch.free(id)}function _godot_js_fetch_http_status_get(p_id){const obj=IDHandler.get(p_id);if(!obj||!obj.response){return 0}return obj.status}function _godot_js_fetch_is_chunked(p_id){const obj=IDHandler.get(p_id);if(!obj||!obj.response){return-1}return obj.chunked?1:0}function _godot_js_fetch_read_chunk(p_id,p_buf,p_buf_size){const obj=IDHandler.get(p_id);if(!obj||!obj.response){return 0}let to_read=p_buf_size;const chunks=obj.chunks;while(to_read&&chunks.length){const chunk=obj.chunks[0];if(chunk.length>to_read){GodotRuntime.heapCopy(HEAP8,chunk.slice(0,to_read),p_buf);chunks[0]=chunk.slice(to_read);to_read=0}else{GodotRuntime.heapCopy(HEAP8,chunk,p_buf);to_read-=chunk.length;chunks.pop()}}if(!chunks.length){GodotFetch.read(p_id)}return p_buf_size-to_read}function _godot_js_fetch_read_headers(p_id,p_parse_cb,p_ref){const obj=IDHandler.get(p_id);if(!obj||!obj.response){return 1}const cb=GodotRuntime.get_func(p_parse_cb);const arr=[];obj.response.headers.forEach(function(v,h){arr.push(`${h}:${v}`)});const c_ptr=GodotRuntime.allocStringArray(arr);cb(arr.length,c_ptr,p_ref);GodotRuntime.freeStringArray(c_ptr,arr.length);return 0}function _godot_js_fetch_state_get(p_id){const obj=IDHandler.get(p_id);if(!obj){return-1}if(obj.error){return-1}if(!obj.response){return 0}if(obj.reader){return 1}if(obj.done){return 2}return-1}var GodotInputGamepads={samples:[],get_pads:function(){try{const pads=navigator.getGamepads();if(pads){return pads}return[]}catch(e){return[]}},get_samples:function(){return GodotInputGamepads.samples},get_sample:function(index){const samples=GodotInputGamepads.samples;return index<samples.length?samples[index]:null},sample:function(){const pads=GodotInputGamepads.get_pads();const samples=[];for(let i=0;i<pads.length;i++){const pad=pads[i];if(!pad){samples.push(null);continue}const s={standard:pad.mapping===\\\\\\\"standard\\\\\\\",buttons:[],axes:[],connected:pad.connected};for(let b=0;b<pad.buttons.length;b++){s.buttons.push(pad.buttons[b].value)}for(let a=0;a<pad.axes.length;a++){s.axes.push(pad.axes[a])}samples.push(s)}GodotInputGamepads.samples=samples},init:function(onchange){GodotInputGamepads.samples=[];function add(pad){const guid=GodotInputGamepads.get_guid(pad);const c_id=GodotRuntime.allocString(pad.id);const c_guid=GodotRuntime.allocString(guid);onchange(pad.index,1,c_id,c_guid);GodotRuntime.free(c_id);GodotRuntime.free(c_guid)}const pads=GodotInputGamepads.get_pads();for(let i=0;i<pads.length;i++){if(pads[i]){add(pads[i])}}GodotEventListeners.add(window,\\\\\\\"gamepadconnected\\\\\\\",function(evt){if(evt.gamepad){add(evt.gamepad)}},false);GodotEventListeners.add(window,\\\\\\\"gamepaddisconnected\\\\\\\",function(evt){if(evt.gamepad){onchange(evt.gamepad.index,0)}},false)},get_guid:function(pad){if(pad.mapping){return pad.mapping}const ua=navigator.userAgent;let os=\\\\\\\"Unknown\\\\\\\";if(ua.indexOf(\\\\\\\"Android\\\\\\\")>=0){os=\\\\\\\"Android\\\\\\\"}else if(ua.indexOf(\\\\\\\"Linux\\\\\\\")>=0){os=\\\\\\\"Linux\\\\\\\"}else if(ua.indexOf(\\\\\\\"iPhone\\\\\\\")>=0){os=\\\\\\\"iOS\\\\\\\"}else if(ua.indexOf(\\\\\\\"Macintosh\\\\\\\")>=0){os=\\\\\\\"MacOSX\\\\\\\"}else if(ua.indexOf(\\\\\\\"Windows\\\\\\\")>=0){os=\\\\\\\"Windows\\\\\\\"}const id=pad.id;const exp1=/vendor: ([0-9a-f]{4}) product: ([0-9a-f]{4})/i;const exp2=/^([0-9a-f]+)-([0-9a-f]+)-/i;let vendor=\\\\\\\"\\\\\\\";let product=\\\\\\\"\\\\\\\";if(exp1.test(id)){const match=exp1.exec(id);vendor=match[1].padStart(4,\\\\\\\"0\\\\\\\");product=match[2].padStart(4,\\\\\\\"0\\\\\\\")}else if(exp2.test(id)){const match=exp2.exec(id);vendor=match[1].padStart(4,\\\\\\\"0\\\\\\\");product=match[2].padStart(4,\\\\\\\"0\\\\\\\")}if(!vendor||!product){return`${os}Unknown`}return os+vendor+product}};var GodotInputDragDrop={promises:[],pending_files:[],add_entry:function(entry){if(entry.isDirectory){GodotInputDragDrop.add_dir(entry)}else if(entry.isFile){GodotInputDragDrop.add_file(entry)}else{GodotRuntime.error(\\\\\\\"Unrecognized entry...\\\\\\\",entry)}},add_dir:function(entry){GodotInputDragDrop.promises.push(new Promise(function(resolve,reject){const reader=entry.createReader();reader.readEntries(function(entries){for(let i=0;i<entries.length;i++){GodotInputDragDrop.add_entry(entries[i])}resolve()})}))},add_file:function(entry){GodotInputDragDrop.promises.push(new Promise(function(resolve,reject){entry.file(function(file){const reader=new FileReader;reader.onload=function(){const f={path:file.relativePath||file.webkitRelativePath,name:file.name,type:file.type,size:file.size,data:reader.result};if(!f[\\\\\\\"path\\\\\\\"]){f[\\\\\\\"path\\\\\\\"]=f[\\\\\\\"name\\\\\\\"]}GodotInputDragDrop.pending_files.push(f);resolve()};reader.onerror=function(){GodotRuntime.print(\\\\\\\"Error reading file\\\\\\\");reject()};reader.readAsArrayBuffer(file)},function(err){GodotRuntime.print(\\\\\\\"Error!\\\\\\\");reject()})}))},process:function(resolve,reject){if(GodotInputDragDrop.promises.length===0){resolve();return}GodotInputDragDrop.promises.pop().then(function(){setTimeout(function(){GodotInputDragDrop.process(resolve,reject)},0)})},_process_event:function(ev,callback){ev.preventDefault();if(ev.dataTransfer.items){for(let i=0;i<ev.dataTransfer.items.length;i++){const item=ev.dataTransfer.items[i];let entry=null;if(\\\\\\\"getAsEntry\\\\\\\"in item){entry=item.getAsEntry()}else if(\\\\\\\"webkitGetAsEntry\\\\\\\"in item){entry=item.webkitGetAsEntry()}if(entry){GodotInputDragDrop.add_entry(entry)}}}else{GodotRuntime.error(\\\\\\\"File upload not supported\\\\\\\")}new Promise(GodotInputDragDrop.process).then(function(){const DROP=`/tmp/drop-${parseInt(Math.random()*(1<<30),10)}/`;const drops=[];const files=[];FS.mkdir(DROP.slice(0,-1));GodotInputDragDrop.pending_files.forEach(elem=>{const path=elem[\\\\\\\"path\\\\\\\"];GodotFS.copy_to_fs(DROP+path,elem[\\\\\\\"data\\\\\\\"]);let idx=path.indexOf(\\\\\\\"/\\\\\\\");if(idx===-1){drops.push(DROP+path)}else{const sub=path.substr(0,idx);idx=sub.indexOf(\\\\\\\"/\\\\\\\");if(idx<0&&drops.indexOf(DROP+sub)===-1){drops.push(DROP+sub)}}files.push(DROP+path)});GodotInputDragDrop.promises=[];GodotInputDragDrop.pending_files=[];callback(drops);if(GodotConfig.persistent_drops){GodotOS.atexit(function(resolve,reject){GodotInputDragDrop.remove_drop(files,DROP);resolve()})}else{GodotInputDragDrop.remove_drop(files,DROP)}})},remove_drop:function(files,drop_path){const dirs=[drop_path.substr(0,drop_path.length-1)];files.forEach(function(file){FS.unlink(file);let dir=file.replace(drop_path,\\\\\\\"\\\\\\\");let idx=dir.lastIndexOf(\\\\\\\"/\\\\\\\");while(idx>0){dir=dir.substr(0,idx);if(dirs.indexOf(drop_path+dir)===-1){dirs.push(drop_path+dir)}idx=dir.lastIndexOf(\\\\\\\"/\\\\\\\")}});dirs.sort(function(a,b){const al=(a.match(/\\\\//g)||[]).length;const bl=(b.match(/\\\\//g)||[]).length;if(al>bl){return-1}else if(al<bl){return 1}return 0}).forEach(function(dir){FS.rmdir(dir)})},handler:function(callback){return function(ev){GodotInputDragDrop._process_event(ev,callback)}}};var GodotIME={ime:null,active:false,getModifiers:function(evt){return evt.shiftKey+0+(evt.altKey+0<<1)+(evt.ctrlKey+0<<2)+(evt.metaKey+0<<3)},ime_active:function(active){function focus_timer(){GodotIME.active=true;GodotIME.ime.focus()}if(GodotIME.ime){if(active){GodotIME.ime.style.display=\\\\\\\"block\\\\\\\";setInterval(focus_timer,100)}else{GodotIME.ime.style.display=\\\\\\\"none\\\\\\\";GodotConfig.canvas.focus();GodotIME.active=false}}},ime_position:function(x,y){if(GodotIME.ime){const canvas=GodotConfig.canvas;const rect=canvas.getBoundingClientRect();const rw=canvas.width/rect.width;const rh=canvas.height/rect.height;const clx=x/rw+rect.x;const cly=y/rh+rect.y;GodotIME.ime.style.left=`${clx}px`;GodotIME.ime.style.top=`${cly}px`}},init:function(ime_cb,key_cb,code,key){function key_event_cb(pressed,evt){const modifiers=GodotIME.getModifiers(evt);GodotRuntime.stringToHeap(evt.code,code,32);GodotRuntime.stringToHeap(evt.key,key,32);key_cb(pressed,evt.repeat,modifiers);evt.preventDefault()}function ime_event_cb(event){if(GodotIME.ime){if(event.type===\\\\\\\"compositionstart\\\\\\\"){ime_cb(0,null);GodotIME.ime.innerHTML=\\\\\\\"\\\\\\\"}else if(event.type===\\\\\\\"compositionupdate\\\\\\\"){const ptr=GodotRuntime.allocString(event.data);ime_cb(1,ptr);GodotRuntime.free(ptr)}else if(event.type===\\\\\\\"compositionend\\\\\\\"){const ptr=GodotRuntime.allocString(event.data);ime_cb(2,ptr);GodotRuntime.free(ptr);GodotIME.ime.innerHTML=\\\\\\\"\\\\\\\"}}}const ime=document.createElement(\\\\\\\"div\\\\\\\");ime.className=\\\\\\\"ime\\\\\\\";ime.style.background=\\\\\\\"none\\\\\\\";ime.style.opacity=0;ime.style.position=\\\\\\\"fixed\\\\\\\";ime.style.textAlign=\\\\\\\"left\\\\\\\";ime.style.fontSize=\\\\\\\"1px\\\\\\\";ime.style.left=\\\\\\\"0px\\\\\\\";ime.style.top=\\\\\\\"0px\\\\\\\";ime.style.width=\\\\\\\"100%\\\\\\\";ime.style.height=\\\\\\\"40px\\\\\\\";ime.style.pointerEvents=\\\\\\\"none\\\\\\\";ime.style.display=\\\\\\\"none\\\\\\\";ime.contentEditable=\\\\\\\"true\\\\\\\";GodotEventListeners.add(ime,\\\\\\\"compositionstart\\\\\\\",ime_event_cb,false);GodotEventListeners.add(ime,\\\\\\\"compositionupdate\\\\\\\",ime_event_cb,false);GodotEventListeners.add(ime,\\\\\\\"compositionend\\\\\\\",ime_event_cb,false);GodotEventListeners.add(ime,\\\\\\\"keydown\\\\\\\",key_event_cb.bind(null,1),false);GodotEventListeners.add(ime,\\\\\\\"keyup\\\\\\\",key_event_cb.bind(null,0),false);ime.onblur=function(){this.style.display=\\\\\\\"none\\\\\\\";GodotConfig.canvas.focus();GodotIME.active=false};GodotConfig.canvas.parentElement.appendChild(ime);GodotIME.ime=ime},clear:function(){if(GodotIME.ime){GodotIME.ime.remove();GodotIME.ime=null}}};var GodotInput={getModifiers:function(evt){return evt.shiftKey+0+(evt.altKey+0<<1)+(evt.ctrlKey+0<<2)+(evt.metaKey+0<<3)},computePosition:function(evt,rect){const canvas=GodotConfig.canvas;const rw=canvas.width/rect.width;const rh=canvas.height/rect.height;const x=(evt.clientX-rect.x)*rw;const y=(evt.clientY-rect.y)*rh;return[x,y]}};function _godot_js_input_drop_files_cb(callback){const func=GodotRuntime.get_func(callback);const dropFiles=function(files){const args=files||[];if(!args.length){return}const argc=args.length;const argv=GodotRuntime.allocStringArray(args);func(argv,argc);GodotRuntime.freeStringArray(argv,argc)};const canvas=GodotConfig.canvas;GodotEventListeners.add(canvas,\\\\\\\"dragover\\\\\\\",function(ev){ev.preventDefault()},false);GodotEventListeners.add(canvas,\\\\\\\"drop\\\\\\\",GodotInputDragDrop.handler(dropFiles))}function _godot_js_input_gamepad_cb(change_cb){const onchange=GodotRuntime.get_func(change_cb);GodotInputGamepads.init(onchange)}function _godot_js_input_gamepad_sample(){GodotInputGamepads.sample();return 0}function _godot_js_input_gamepad_sample_count(){return GodotInputGamepads.get_samples().length}function _godot_js_input_gamepad_sample_get(p_index,r_btns,r_btns_num,r_axes,r_axes_num,r_standard){const sample=GodotInputGamepads.get_sample(p_index);if(!sample||!sample.connected){return 1}const btns=sample.buttons;const btns_len=btns.length<16?btns.length:16;for(let i=0;i<btns_len;i++){GodotRuntime.setHeapValue(r_btns+(i<<2),btns[i],\\\\\\\"float\\\\\\\")}GodotRuntime.setHeapValue(r_btns_num,btns_len,\\\\\\\"i32\\\\\\\");const axes=sample.axes;const axes_len=axes.length<10?axes.length:10;for(let i=0;i<axes_len;i++){GodotRuntime.setHeapValue(r_axes+(i<<2),axes[i],\\\\\\\"float\\\\\\\")}GodotRuntime.setHeapValue(r_axes_num,axes_len,\\\\\\\"i32\\\\\\\");const is_standard=sample.standard?1:0;GodotRuntime.setHeapValue(r_standard,is_standard,\\\\\\\"i32\\\\\\\");return 0}function _godot_js_input_key_cb(callback,code,key){const func=GodotRuntime.get_func(callback);function key_cb(pressed,evt){const modifiers=GodotInput.getModifiers(evt);GodotRuntime.stringToHeap(evt.code,code,32);GodotRuntime.stringToHeap(evt.key,key,32);func(pressed,evt.repeat,modifiers);evt.preventDefault()}GodotEventListeners.add(GodotConfig.canvas,\\\\\\\"keydown\\\\\\\",key_cb.bind(null,1),false);GodotEventListeners.add(GodotConfig.canvas,\\\\\\\"keyup\\\\\\\",key_cb.bind(null,0),false)}function _godot_js_input_mouse_button_cb(callback){const func=GodotRuntime.get_func(callback);const canvas=GodotConfig.canvas;function button_cb(p_pressed,evt){const rect=canvas.getBoundingClientRect();const pos=GodotInput.computePosition(evt,rect);const modifiers=GodotInput.getModifiers(evt);if(p_pressed){GodotConfig.canvas.focus()}if(func(p_pressed,evt.button,pos[0],pos[1],modifiers)){evt.preventDefault()}}GodotEventListeners.add(canvas,\\\\\\\"mousedown\\\\\\\",button_cb.bind(null,1),false);GodotEventListeners.add(window,\\\\\\\"mouseup\\\\\\\",button_cb.bind(null,0),false)}function _godot_js_input_mouse_move_cb(callback){const func=GodotRuntime.get_func(callback);const canvas=GodotConfig.canvas;function move_cb(evt){const rect=canvas.getBoundingClientRect();const pos=GodotInput.computePosition(evt,rect);const rw=canvas.width/rect.width;const rh=canvas.height/rect.height;const rel_pos_x=evt.movementX*rw;const rel_pos_y=evt.movementY*rh;const modifiers=GodotInput.getModifiers(evt);func(pos[0],pos[1],rel_pos_x,rel_pos_y,modifiers)}GodotEventListeners.add(window,\\\\\\\"mousemove\\\\\\\",move_cb,false)}function _godot_js_input_mouse_wheel_cb(callback){const func=GodotRuntime.get_func(callback);function wheel_cb(evt){if(func(evt[\\\\\\\"deltaX\\\\\\\"]||0,evt[\\\\\\\"deltaY\\\\\\\"]||0)){evt.preventDefault()}}GodotEventListeners.add(GodotConfig.canvas,\\\\\\\"wheel\\\\\\\",wheel_cb,false)}function _godot_js_input_paste_cb(callback){const func=GodotRuntime.get_func(callback);GodotEventListeners.add(window,\\\\\\\"paste\\\\\\\",function(evt){const text=evt.clipboardData.getData(\\\\\\\"text\\\\\\\");const ptr=GodotRuntime.allocString(text);func(ptr);GodotRuntime.free(ptr)},false)}function _godot_js_input_touch_cb(callback,ids,coords){const func=GodotRuntime.get_func(callback);const canvas=GodotConfig.canvas;function touch_cb(type,evt){if(type===0){GodotConfig.canvas.focus()}const rect=canvas.getBoundingClientRect();const touches=evt.changedTouches;for(let i=0;i<touches.length;i++){const touch=touches[i];const pos=GodotInput.computePosition(touch,rect);GodotRuntime.setHeapValue(coords+i*2*8,pos[0],\\\\\\\"double\\\\\\\");GodotRuntime.setHeapValue(coords+(i*2+1)*8,pos[1],\\\\\\\"double\\\\\\\");GodotRuntime.setHeapValue(ids+i*4,touch.identifier,\\\\\\\"i32\\\\\\\")}func(type,touches.length);if(evt.cancelable){evt.preventDefault()}}GodotEventListeners.add(canvas,\\\\\\\"touchstart\\\\\\\",touch_cb.bind(null,0),false);GodotEventListeners.add(canvas,\\\\\\\"touchend\\\\\\\",touch_cb.bind(null,1),false);GodotEventListeners.add(canvas,\\\\\\\"touchcancel\\\\\\\",touch_cb.bind(null,1),false);GodotEventListeners.add(canvas,\\\\\\\"touchmove\\\\\\\",touch_cb.bind(null,2),false)}function _godot_js_input_vibrate_handheld(p_duration_ms){if(typeof navigator.vibrate!==\\\\\\\"function\\\\\\\"){GodotRuntime.print(\\\\\\\"This browser does not support vibration.\\\\\\\")}else{navigator.vibrate(p_duration_ms)}}function _godot_js_is_ime_focused(){return GodotIME.active}function _godot_js_os_download_buffer(p_ptr,p_size,p_name,p_mime){const buf=GodotRuntime.heapSlice(HEAP8,p_ptr,p_size);const name=GodotRuntime.parseString(p_name);const mime=GodotRuntime.parseString(p_mime);const blob=new Blob([buf],{type:mime});const url=window.URL.createObjectURL(blob);const a=document.createElement(\\\\\\\"a\\\\\\\");a.href=url;a.download=name;a.style.display=\\\\\\\"none\\\\\\\";document.body.appendChild(a);a.click();a.remove();window.URL.revokeObjectURL(url)}function _godot_js_os_execute(p_json){const json_args=GodotRuntime.parseString(p_json);const args=JSON.parse(json_args);if(GodotConfig.on_execute){GodotConfig.on_execute(args);return 0}return 1}function _godot_js_os_finish_async(p_callback){const func=GodotRuntime.get_func(p_callback);GodotOS.finish_async(func)}function _godot_js_os_fs_is_persistent(){return GodotFS.is_persistent()}function _godot_js_os_fs_sync(callback){const func=GodotRuntime.get_func(callback);GodotOS._fs_sync_promise=GodotFS.sync();GodotOS._fs_sync_promise.then(function(err){func()})}function _godot_js_os_has_feature(p_ftr){const ftr=GodotRuntime.parseString(p_ftr);const ua=navigator.userAgent;if(ftr===\\\\\\\"web_macos\\\\\\\"){return ua.indexOf(\\\\\\\"Mac\\\\\\\")!==-1?1:0}if(ftr===\\\\\\\"web_windows\\\\\\\"){return ua.indexOf(\\\\\\\"Windows\\\\\\\")!==-1?1:0}if(ftr===\\\\\\\"web_android\\\\\\\"){return ua.indexOf(\\\\\\\"Android\\\\\\\")!==-1?1:0}if(ftr===\\\\\\\"web_ios\\\\\\\"){return ua.indexOf(\\\\\\\"iPhone\\\\\\\")!==-1||ua.indexOf(\\\\\\\"iPad\\\\\\\")!==-1||ua.indexOf(\\\\\\\"iPod\\\\\\\")!==-1?1:0}if(ftr===\\\\\\\"web_linuxbsd\\\\\\\"){return ua.indexOf(\\\\\\\"CrOS\\\\\\\")!==-1||ua.indexOf(\\\\\\\"BSD\\\\\\\")!==-1||ua.indexOf(\\\\\\\"Linux\\\\\\\")!==-1||ua.indexOf(\\\\\\\"X11\\\\\\\")!==-1?1:0}return 0}function _godot_js_os_hw_concurrency_get(){const concurrency=navigator.hardwareConcurrency||1;return concurrency<2?concurrency:2}function _godot_js_os_request_quit_cb(p_callback){GodotOS.request_quit=GodotRuntime.get_func(p_callback)}function _godot_js_os_shell_open(p_uri){window.open(GodotRuntime.parseString(p_uri),\\\\\\\"_blank\\\\\\\")}var GodotPWA={hasUpdate:false,updateState:function(cb,reg){if(!reg){return}if(!reg.active){return}if(reg.waiting){GodotPWA.hasUpdate=true;cb()}GodotEventListeners.add(reg,\\\\\\\"updatefound\\\\\\\",function(){const installing=reg.installing;GodotEventListeners.add(installing,\\\\\\\"statechange\\\\\\\",function(){if(installing.state===\\\\\\\"installed\\\\\\\"){GodotPWA.hasUpdate=true;cb()}})})}};function _godot_js_pwa_cb(p_update_cb){if(\\\\\\\"serviceWorker\\\\\\\"in navigator){const cb=GodotRuntime.get_func(p_update_cb);navigator.serviceWorker.getRegistration().then(GodotPWA.updateState.bind(null,cb))}}function _godot_js_pwa_update(){if(\\\\\\\"serviceWorker\\\\\\\"in navigator&&GodotPWA.hasUpdate){navigator.serviceWorker.getRegistration().then(function(reg){if(!reg||!reg.waiting){return}reg.waiting.postMessage(\\\\\\\"update\\\\\\\")});return 0}return 1}var GodotRTCDataChannel={connect:function(p_id,p_on_open,p_on_message,p_on_error,p_on_close){const ref=IDHandler.get(p_id);if(!ref){return}ref.binaryType=\\\\\\\"arraybuffer\\\\\\\";ref.onopen=function(event){p_on_open()};ref.onclose=function(event){p_on_close()};ref.onerror=function(event){p_on_error()};ref.onmessage=function(event){let buffer;let is_string=0;if(event.data instanceof ArrayBuffer){buffer=new Uint8Array(event.data)}else if(event.data instanceof Blob){GodotRuntime.error(\\\\\\\"Blob type not supported\\\\\\\");return}else if(typeof event.data===\\\\\\\"string\\\\\\\"){is_string=1;const enc=new TextEncoder(\\\\\\\"utf-8\\\\\\\");buffer=new Uint8Array(enc.encode(event.data))}else{GodotRuntime.error(\\\\\\\"Unknown message type\\\\\\\");return}const len=buffer.length*buffer.BYTES_PER_ELEMENT;const out=GodotRuntime.malloc(len);HEAPU8.set(buffer,out);p_on_message(out,len,is_string);GodotRuntime.free(out)}},close:function(p_id){const ref=IDHandler.get(p_id);if(!ref){return}ref.onopen=null;ref.onmessage=null;ref.onerror=null;ref.onclose=null;ref.close()},get_prop:function(p_id,p_prop,p_def){const ref=IDHandler.get(p_id);return ref&&ref[p_prop]!==undefined?ref[p_prop]:p_def}};function _godot_js_rtc_datachannel_close(p_id){const ref=IDHandler.get(p_id);if(!ref){return}GodotRTCDataChannel.close(p_id)}function _godot_js_rtc_datachannel_connect(p_id,p_ref,p_on_open,p_on_message,p_on_error,p_on_close){const onopen=GodotRuntime.get_func(p_on_open).bind(null,p_ref);const onmessage=GodotRuntime.get_func(p_on_message).bind(null,p_ref);const onerror=GodotRuntime.get_func(p_on_error).bind(null,p_ref);const onclose=GodotRuntime.get_func(p_on_close).bind(null,p_ref);GodotRTCDataChannel.connect(p_id,onopen,onmessage,onerror,onclose)}function _godot_js_rtc_datachannel_destroy(p_id){GodotRTCDataChannel.close(p_id);IDHandler.remove(p_id)}function _godot_js_rtc_datachannel_get_buffered_amount(p_id){return GodotRTCDataChannel.get_prop(p_id,\\\\\\\"bufferedAmount\\\\\\\",0)}function _godot_js_rtc_datachannel_id_get(p_id){return GodotRTCDataChannel.get_prop(p_id,\\\\\\\"id\\\\\\\",65535)}function _godot_js_rtc_datachannel_is_negotiated(p_id){return GodotRTCDataChannel.get_prop(p_id,\\\\\\\"negotiated\\\\\\\",65535)}function _godot_js_rtc_datachannel_is_ordered(p_id){return GodotRTCDataChannel.get_prop(p_id,\\\\\\\"ordered\\\\\\\",true)}function _godot_js_rtc_datachannel_label_get(p_id){const ref=IDHandler.get(p_id);if(!ref||!ref.label){return 0}return GodotRuntime.allocString(ref.label)}function _godot_js_rtc_datachannel_max_packet_lifetime_get(p_id){const ref=IDHandler.get(p_id);if(!ref){return 65535}if(ref[\\\\\\\"maxPacketLifeTime\\\\\\\"]!==undefined){return ref[\\\\\\\"maxPacketLifeTime\\\\\\\"]}else if(ref[\\\\\\\"maxRetransmitTime\\\\\\\"]!==undefined){return ref[\\\\\\\"maxRetransmitTime\\\\\\\"]}return 65535}function _godot_js_rtc_datachannel_max_retransmits_get(p_id){return GodotRTCDataChannel.get_prop(p_id,\\\\\\\"maxRetransmits\\\\\\\",65535)}function _godot_js_rtc_datachannel_protocol_get(p_id){const ref=IDHandler.get(p_id);if(!ref||!ref.protocol){return 0}return GodotRuntime.allocString(ref.protocol)}function _godot_js_rtc_datachannel_ready_state_get(p_id){const ref=IDHandler.get(p_id);if(!ref){return 3}switch(ref.readyState){case\\\\\\\"connecting\\\\\\\":return 0;case\\\\\\\"open\\\\\\\":return 1;case\\\\\\\"closing\\\\\\\":return 2;case\\\\\\\"closed\\\\\\\":default:return 3}}function _godot_js_rtc_datachannel_send(p_id,p_buffer,p_length,p_raw){const ref=IDHandler.get(p_id);if(!ref){return 1}const bytes_array=new Uint8Array(p_length);for(let i=0;i<p_length;i++){bytes_array[i]=GodotRuntime.getHeapValue(p_buffer+i,\\\\\\\"i8\\\\\\\")}if(p_raw){ref.send(bytes_array.buffer)}else{const string=new TextDecoder(\\\\\\\"utf-8\\\\\\\").decode(bytes_array);ref.send(string)}return 0}var GodotRTCPeerConnection={ConnectionState:{new:0,connecting:1,connected:2,disconnected:3,failed:4,closed:5},ConnectionStateCompat:{new:0,checking:1,connected:2,completed:2,disconnected:3,failed:4,closed:5},IceGatheringState:{new:0,gathering:1,complete:2},SignalingState:{stable:0,\\\\\\\"have-local-offer\\\\\\\":1,\\\\\\\"have-remote-offer\\\\\\\":2,\\\\\\\"have-local-pranswer\\\\\\\":3,\\\\\\\"have-remote-pranswer\\\\\\\":4,closed:5},create:function(config,onConnectionChange,onSignalingChange,onIceGatheringChange,onIceCandidate,onDataChannel){let conn=null;try{conn=new RTCPeerConnection(config)}catch(e){GodotRuntime.error(e);return 0}const id=IDHandler.add(conn);if(\\\\\\\"connectionState\\\\\\\"in conn&&conn[\\\\\\\"connectionState\\\\\\\"]!==undefined){conn.onconnectionstatechange=function(event){if(!IDHandler.get(id)){return}onConnectionChange(GodotRTCPeerConnection.ConnectionState[conn.connectionState]||0)}}else{conn.oniceconnectionstatechange=function(event){if(!IDHandler.get(id)){return}onConnectionChange(GodotRTCPeerConnection.ConnectionStateCompat[conn.iceConnectionState]||0)}}conn.onicegatheringstatechange=function(event){if(!IDHandler.get(id)){return}onIceGatheringChange(GodotRTCPeerConnection.IceGatheringState[conn.iceGatheringState]||0)};conn.onsignalingstatechange=function(event){if(!IDHandler.get(id)){return}onSignalingChange(GodotRTCPeerConnection.SignalingState[conn.signalingState]||0)};conn.onicecandidate=function(event){if(!IDHandler.get(id)){return}const c=event.candidate;if(!c||!c.candidate){return}const candidate_str=GodotRuntime.allocString(c.candidate);const mid_str=GodotRuntime.allocString(c.sdpMid);onIceCandidate(mid_str,c.sdpMLineIndex,candidate_str);GodotRuntime.free(candidate_str);GodotRuntime.free(mid_str)};conn.ondatachannel=function(event){if(!IDHandler.get(id)){return}const cid=IDHandler.add(event.channel);onDataChannel(cid)};return id},destroy:function(p_id){const conn=IDHandler.get(p_id);if(!conn){return}conn.onconnectionstatechange=null;conn.oniceconnectionstatechange=null;conn.onicegatheringstatechange=null;conn.onsignalingstatechange=null;conn.onicecandidate=null;conn.ondatachannel=null;IDHandler.remove(p_id)},onsession:function(p_id,callback,session){if(!IDHandler.get(p_id)){return}const type_str=GodotRuntime.allocString(session.type);const sdp_str=GodotRuntime.allocString(session.sdp);callback(type_str,sdp_str);GodotRuntime.free(type_str);GodotRuntime.free(sdp_str)},onerror:function(p_id,callback,error){const ref=IDHandler.get(p_id);if(!ref){return}GodotRuntime.error(error);callback()}};function _godot_js_rtc_pc_close(p_id){const ref=IDHandler.get(p_id);if(!ref){return}ref.close()}function _godot_js_rtc_pc_create(p_config,p_ref,p_on_connection_state_change,p_on_ice_gathering_state_change,p_on_signaling_state_change,p_on_ice_candidate,p_on_datachannel){const wrap=function(p_func){return GodotRuntime.get_func(p_func).bind(null,p_ref)};return GodotRTCPeerConnection.create(JSON.parse(GodotRuntime.parseString(p_config)),wrap(p_on_connection_state_change),wrap(p_on_signaling_state_change),wrap(p_on_ice_gathering_state_change),wrap(p_on_ice_candidate),wrap(p_on_datachannel))}function _godot_js_rtc_pc_datachannel_create(p_id,p_label,p_config){try{const ref=IDHandler.get(p_id);if(!ref){return 0}const label=GodotRuntime.parseString(p_label);const config=JSON.parse(GodotRuntime.parseString(p_config));const channel=ref.createDataChannel(label,config);return IDHandler.add(channel)}catch(e){GodotRuntime.error(e);return 0}}function _godot_js_rtc_pc_destroy(p_id){GodotRTCPeerConnection.destroy(p_id)}function _godot_js_rtc_pc_ice_candidate_add(p_id,p_mid_name,p_mline_idx,p_sdp){const ref=IDHandler.get(p_id);if(!ref){return}const sdpMidName=GodotRuntime.parseString(p_mid_name);const sdpName=GodotRuntime.parseString(p_sdp);ref.addIceCandidate(new RTCIceCandidate({candidate:sdpName,sdpMid:sdpMidName,sdpMlineIndex:p_mline_idx}))}function _godot_js_rtc_pc_local_description_set(p_id,p_type,p_sdp,p_obj,p_on_error){const ref=IDHandler.get(p_id);if(!ref){return}const type=GodotRuntime.parseString(p_type);const sdp=GodotRuntime.parseString(p_sdp);const onerror=GodotRuntime.get_func(p_on_error).bind(null,p_obj);ref.setLocalDescription({sdp:sdp,type:type}).catch(function(error){GodotRTCPeerConnection.onerror(p_id,onerror,error)})}function _godot_js_rtc_pc_offer_create(p_id,p_obj,p_on_session,p_on_error){const ref=IDHandler.get(p_id);if(!ref){return}const onsession=GodotRuntime.get_func(p_on_session).bind(null,p_obj);const onerror=GodotRuntime.get_func(p_on_error).bind(null,p_obj);ref.createOffer().then(function(session){GodotRTCPeerConnection.onsession(p_id,onsession,session)}).catch(function(error){GodotRTCPeerConnection.onerror(p_id,onerror,error)})}function _godot_js_rtc_pc_remote_description_set(p_id,p_type,p_sdp,p_obj,p_session_created,p_on_error){const ref=IDHandler.get(p_id);if(!ref){return}const type=GodotRuntime.parseString(p_type);const sdp=GodotRuntime.parseString(p_sdp);const onerror=GodotRuntime.get_func(p_on_error).bind(null,p_obj);const onsession=GodotRuntime.get_func(p_session_created).bind(null,p_obj);ref.setRemoteDescription({sdp:sdp,type:type}).then(function(){if(type!==\\\\\\\"offer\\\\\\\"){return Promise.resolve()}return ref.createAnswer().then(function(session){GodotRTCPeerConnection.onsession(p_id,onsession,session)})}).catch(function(error){GodotRTCPeerConnection.onerror(p_id,onerror,error)})}function _godot_js_set_ime_active(p_active){GodotIME.ime_active(p_active)}function _godot_js_set_ime_cb(p_ime_cb,p_key_cb,code,key){const ime_cb=GodotRuntime.get_func(p_ime_cb);const key_cb=GodotRuntime.get_func(p_key_cb);GodotIME.init(ime_cb,key_cb,code,key)}function _godot_js_set_ime_position(p_x,p_y){GodotIME.ime_position(p_x,p_y)}function _godot_js_tts_get_voices(p_callback){const func=GodotRuntime.get_func(p_callback);try{const arr=[];const voices=window.speechSynthesis.getVoices();for(let i=0;i<voices.length;i++){arr.push(`${voices[i].lang};${voices[i].name}`)}const c_ptr=GodotRuntime.allocStringArray(arr);func(arr.length,c_ptr);GodotRuntime.freeStringArray(c_ptr,arr.length)}catch(e){}}function _godot_js_tts_is_paused(){return window.speechSynthesis.paused}function _godot_js_tts_is_speaking(){return window.speechSynthesis.speaking}function _godot_js_tts_pause(){window.speechSynthesis.pause()}function _godot_js_tts_resume(){window.speechSynthesis.resume()}function _godot_js_tts_speak(p_text,p_voice,p_volume,p_pitch,p_rate,p_utterance_id,p_callback){const func=GodotRuntime.get_func(p_callback);function listener_end(evt){evt.currentTarget.cb(1,evt.currentTarget.id,0)}function listener_start(evt){evt.currentTarget.cb(0,evt.currentTarget.id,0)}function listener_error(evt){evt.currentTarget.cb(2,evt.currentTarget.id,0)}function listener_bound(evt){evt.currentTarget.cb(3,evt.currentTarget.id,evt.charIndex)}const utterance=new SpeechSynthesisUtterance(GodotRuntime.parseString(p_text));utterance.rate=p_rate;utterance.pitch=p_pitch;utterance.volume=p_volume/100;utterance.addEventListener(\\\\\\\"end\\\\\\\",listener_end);utterance.addEventListener(\\\\\\\"start\\\\\\\",listener_start);utterance.addEventListener(\\\\\\\"error\\\\\\\",listener_error);utterance.addEventListener(\\\\\\\"boundary\\\\\\\",listener_bound);utterance.id=p_utterance_id;utterance.cb=func;const voice=GodotRuntime.parseString(p_voice);const voices=window.speechSynthesis.getVoices();for(let i=0;i<voices.length;i++){if(voices[i].name===voice){utterance.voice=voices[i];break}}window.speechSynthesis.resume();window.speechSynthesis.speak(utterance)}function _godot_js_tts_stop(){window.speechSynthesis.cancel();window.speechSynthesis.resume()}var GodotWebSocket={_onopen:function(p_id,callback,event){const ref=IDHandler.get(p_id);if(!ref){return}const c_str=GodotRuntime.allocString(ref.protocol);callback(c_str);GodotRuntime.free(c_str)},_onmessage:function(p_id,callback,event){const ref=IDHandler.get(p_id);if(!ref){return}let buffer;let is_string=0;if(event.data instanceof ArrayBuffer){buffer=new Uint8Array(event.data)}else if(event.data instanceof Blob){GodotRuntime.error(\\\\\\\"Blob type not supported\\\\\\\");return}else if(typeof event.data===\\\\\\\"string\\\\\\\"){is_string=1;const enc=new TextEncoder(\\\\\\\"utf-8\\\\\\\");buffer=new Uint8Array(enc.encode(event.data))}else{GodotRuntime.error(\\\\\\\"Unknown message type\\\\\\\");return}const len=buffer.length*buffer.BYTES_PER_ELEMENT;const out=GodotRuntime.malloc(len);HEAPU8.set(buffer,out);callback(out,len,is_string);GodotRuntime.free(out)},_onerror:function(p_id,callback,event){const ref=IDHandler.get(p_id);if(!ref){return}callback()},_onclose:function(p_id,callback,event){const ref=IDHandler.get(p_id);if(!ref){return}const c_str=GodotRuntime.allocString(event.reason);callback(event.code,c_str,event.wasClean?1:0);GodotRuntime.free(c_str)},send:function(p_id,p_data){const ref=IDHandler.get(p_id);if(!ref||ref.readyState!==ref.OPEN){return 1}ref.send(p_data);return 0},bufferedAmount:function(p_id){const ref=IDHandler.get(p_id);if(!ref){return 0}return ref.bufferedAmount},create:function(socket,p_on_open,p_on_message,p_on_error,p_on_close){const id=IDHandler.add(socket);socket.onopen=GodotWebSocket._onopen.bind(null,id,p_on_open);socket.onmessage=GodotWebSocket._onmessage.bind(null,id,p_on_message);socket.onerror=GodotWebSocket._onerror.bind(null,id,p_on_error);socket.onclose=GodotWebSocket._onclose.bind(null,id,p_on_close);return id},close:function(p_id,p_code,p_reason){const ref=IDHandler.get(p_id);if(ref&&ref.readyState<ref.CLOSING){const code=p_code;const reason=p_reason;ref.close(code,reason)}},destroy:function(p_id){const ref=IDHandler.get(p_id);if(!ref){return}GodotWebSocket.close(p_id,3001,\\\\\\\"destroyed\\\\\\\");IDHandler.remove(p_id);ref.onopen=null;ref.onmessage=null;ref.onerror=null;ref.onclose=null}};function _godot_js_websocket_buffered_amount(p_id){return GodotWebSocket.bufferedAmount(p_id)}function _godot_js_websocket_close(p_id,p_code,p_reason){const code=p_code;const reason=GodotRuntime.parseString(p_reason);GodotWebSocket.close(p_id,code,reason)}function _godot_js_websocket_create(p_ref,p_url,p_proto,p_on_open,p_on_message,p_on_error,p_on_close){const on_open=GodotRuntime.get_func(p_on_open).bind(null,p_ref);const on_message=GodotRuntime.get_func(p_on_message).bind(null,p_ref);const on_error=GodotRuntime.get_func(p_on_error).bind(null,p_ref);const on_close=GodotRuntime.get_func(p_on_close).bind(null,p_ref);const url=GodotRuntime.parseString(p_url);const protos=GodotRuntime.parseString(p_proto);let socket=null;try{if(protos){socket=new WebSocket(url,protos.split(\\\\\\\",\\\\\\\"))}else{socket=new WebSocket(url)}}catch(e){return 0}socket.binaryType=\\\\\\\"arraybuffer\\\\\\\";return GodotWebSocket.create(socket,on_open,on_message,on_error,on_close)}function _godot_js_websocket_destroy(p_id){GodotWebSocket.destroy(p_id)}function _godot_js_websocket_send(p_id,p_buf,p_buf_len,p_raw){const bytes_array=new Uint8Array(p_buf_len);let i=0;for(i=0;i<p_buf_len;i++){bytes_array[i]=GodotRuntime.getHeapValue(p_buf+i,\\\\\\\"i8\\\\\\\")}let out=bytes_array.buffer;if(!p_raw){out=new TextDecoder(\\\\\\\"utf-8\\\\\\\").decode(bytes_array)}return GodotWebSocket.send(p_id,out)}var GodotJSWrapper={proxies:null,cb_ret:null,MyProxy:function(val){const id=IDHandler.add(this);GodotJSWrapper.proxies.set(val,id);let refs=1;this.ref=function(){refs++};this.unref=function(){refs--;if(refs===0){IDHandler.remove(id);GodotJSWrapper.proxies.delete(val)}};this.get_val=function(){return val};this.get_id=function(){return id}},get_proxied:function(val){const id=GodotJSWrapper.proxies.get(val);if(id===undefined){const proxy=new GodotJSWrapper.MyProxy(val);return proxy.get_id()}IDHandler.get(id).ref();return id},get_proxied_value:function(id){const proxy=IDHandler.get(id);if(proxy===undefined){return undefined}return proxy.get_val()},variant2js:function(type,val){switch(type){case 0:return null;case 1:return Boolean(GodotRuntime.getHeapValue(val,\\\\\\\"i64\\\\\\\"));case 2:{const heap_value=GodotRuntime.getHeapValue(val,\\\\\\\"i64\\\\\\\");return heap_value>=Number.MIN_SAFE_INTEGER&&heap_value<=Number.MAX_SAFE_INTEGER?Number(heap_value):heap_value}case 3:return Number(GodotRuntime.getHeapValue(val,\\\\\\\"double\\\\\\\"));case 4:return GodotRuntime.parseString(GodotRuntime.getHeapValue(val,\\\\\\\"*\\\\\\\"));case 24:return GodotJSWrapper.get_proxied_value(GodotRuntime.getHeapValue(val,\\\\\\\"i64\\\\\\\"));default:return undefined}},js2variant:function(p_val,p_exchange){if(p_val===undefined||p_val===null){return 0}const type=typeof p_val;if(type===\\\\\\\"boolean\\\\\\\"){GodotRuntime.setHeapValue(p_exchange,p_val,\\\\\\\"i64\\\\\\\");return 1}else if(type===\\\\\\\"number\\\\\\\"){if(Number.isInteger(p_val)){GodotRuntime.setHeapValue(p_exchange,p_val,\\\\\\\"i64\\\\\\\");return 2}GodotRuntime.setHeapValue(p_exchange,p_val,\\\\\\\"double\\\\\\\");return 3}else if(type===\\\\\\\"bigint\\\\\\\"){GodotRuntime.setHeapValue(p_exchange,p_val,\\\\\\\"i64\\\\\\\");return 2}else if(type===\\\\\\\"string\\\\\\\"){const c_str=GodotRuntime.allocString(p_val);GodotRuntime.setHeapValue(p_exchange,c_str,\\\\\\\"*\\\\\\\");return 4}const id=GodotJSWrapper.get_proxied(p_val);GodotRuntime.setHeapValue(p_exchange,id,\\\\\\\"i64\\\\\\\");return 24}};function _godot_js_wrapper_create_cb(p_ref,p_func){const func=GodotRuntime.get_func(p_func);let id=0;const cb=function(){if(!GodotJSWrapper.get_proxied_value(id)){return undefined}GodotJSWrapper.cb_ret=null;const args=Array.from(arguments);const argsProxy=new GodotJSWrapper.MyProxy(args);func(p_ref,argsProxy.get_id(),args.length);argsProxy.unref();const ret=GodotJSWrapper.cb_ret;GodotJSWrapper.cb_ret=null;return ret};id=GodotJSWrapper.get_proxied(cb);return id}function _godot_js_wrapper_create_object(p_object,p_args,p_argc,p_convert_callback,p_exchange,p_lock,p_free_lock_callback){const name=GodotRuntime.parseString(p_object);if(typeof window[name]===\\\\\\\"undefined\\\\\\\"){return-1}const convert=GodotRuntime.get_func(p_convert_callback);const freeLock=GodotRuntime.get_func(p_free_lock_callback);const args=new Array(p_argc);for(let i=0;i<p_argc;i++){const type=convert(p_args,i,p_exchange,p_lock);const lock=GodotRuntime.getHeapValue(p_lock,\\\\\\\"*\\\\\\\");args[i]=GodotJSWrapper.variant2js(type,p_exchange);if(lock){freeLock(p_lock,type)}}try{const res=new window[name](...args);return GodotJSWrapper.js2variant(res,p_exchange)}catch(e){GodotRuntime.error(`Error calling constructor ${name} with args:`,args,\\\\\\\"error:\\\\\\\",e);return-1}}function _godot_js_wrapper_interface_get(p_name){const name=GodotRuntime.parseString(p_name);if(typeof window[name]!==\\\\\\\"undefined\\\\\\\"){return GodotJSWrapper.get_proxied(window[name])}return 0}function _godot_js_wrapper_object_call(p_id,p_method,p_args,p_argc,p_convert_callback,p_exchange,p_lock,p_free_lock_callback){const obj=GodotJSWrapper.get_proxied_value(p_id);if(obj===undefined){return-1}const method=GodotRuntime.parseString(p_method);const convert=GodotRuntime.get_func(p_convert_callback);const freeLock=GodotRuntime.get_func(p_free_lock_callback);const args=new Array(p_argc);for(let i=0;i<p_argc;i++){const type=convert(p_args,i,p_exchange,p_lock);const lock=GodotRuntime.getHeapValue(p_lock,\\\\\\\"*\\\\\\\");args[i]=GodotJSWrapper.variant2js(type,p_exchange);if(lock){freeLock(p_lock,type)}}try{const res=obj[method](...args);return GodotJSWrapper.js2variant(res,p_exchange)}catch(e){GodotRuntime.error(`Error calling method ${method} on:`,obj,\\\\\\\"error:\\\\\\\",e);return-1}}function _godot_js_wrapper_object_get(p_id,p_exchange,p_prop){const obj=GodotJSWrapper.get_proxied_value(p_id);if(obj===undefined){return 0}if(p_prop){const prop=GodotRuntime.parseString(p_prop);try{return GodotJSWrapper.js2variant(obj[prop],p_exchange)}catch(e){GodotRuntime.error(`Error getting variable ${prop} on object`,obj);return 0}}return GodotJSWrapper.js2variant(obj,p_exchange)}function _godot_js_wrapper_object_getvar(p_id,p_type,p_exchange){const obj=GodotJSWrapper.get_proxied_value(p_id);if(obj===undefined){return-1}const prop=GodotJSWrapper.variant2js(p_type,p_exchange);if(prop===undefined||prop===null){return-1}try{return GodotJSWrapper.js2variant(obj[prop],p_exchange)}catch(e){GodotRuntime.error(`Error getting variable ${prop} on object`,obj,e);return-1}}function _godot_js_wrapper_object_set(p_id,p_name,p_type,p_exchange){const obj=GodotJSWrapper.get_proxied_value(p_id);if(obj===undefined){return}const name=GodotRuntime.parseString(p_name);try{obj[name]=GodotJSWrapper.variant2js(p_type,p_exchange)}catch(e){GodotRuntime.error(`Error setting variable ${name} on object`,obj)}}function _godot_js_wrapper_object_set_cb_ret(p_val_type,p_val_ex){GodotJSWrapper.cb_ret=GodotJSWrapper.variant2js(p_val_type,p_val_ex)}function _godot_js_wrapper_object_setvar(p_id,p_key_type,p_key_ex,p_val_type,p_val_ex){const obj=GodotJSWrapper.get_proxied_value(p_id);if(obj===undefined){return-1}const key=GodotJSWrapper.variant2js(p_key_type,p_key_ex);try{obj[key]=GodotJSWrapper.variant2js(p_val_type,p_val_ex);return 0}catch(e){GodotRuntime.error(`Error setting variable ${key} on object`,obj);return-1}}function _godot_js_wrapper_object_unref(p_id){const proxy=IDHandler.get(p_id);if(proxy!==undefined){proxy.unref()}}function _godot_webgl2_glFramebufferTextureMultisampleMultiviewOVR(target,attachment,texture,level,samples,base_view_index,num_views){const context=GL.currentContext;if(typeof context.oculusMultiviewExt===\\\\\\\"undefined\\\\\\\"){const ext=context.GLctx.getExtension(\\\\\\\"OCULUS_multiview\\\\\\\");if(!ext){GodotRuntime.error(\\\\\\\"Trying to call glFramebufferTextureMultisampleMultiviewOVR() without the OCULUS_multiview extension\\\\\\\");return}context.oculusMultiviewExt=ext}const ext=context.oculusMultiviewExt;ext.framebufferTextureMultisampleMultiviewOVR(target,attachment,GL.textures[texture],level,samples,base_view_index,num_views)}function _godot_webgl2_glFramebufferTextureMultiviewOVR(target,attachment,texture,level,base_view_index,num_views){const context=GL.currentContext;if(typeof context.multiviewExt===\\\\\\\"undefined\\\\\\\"){const ext=context.GLctx.getExtension(\\\\\\\"OVR_multiview2\\\\\\\");if(!ext){GodotRuntime.error(\\\\\\\"Trying to call glFramebufferTextureMultiviewOVR() without the OVR_multiview2 extension\\\\\\\");return}context.multiviewExt=ext}const ext=context.multiviewExt;ext.framebufferTextureMultiviewOVR(target,attachment,GL.textures[texture],level,base_view_index,num_views)}function _godot_webgl2_glGetBufferSubData(target,offset,size,data){const gl_context_handle=_emscripten_webgl_get_current_context();const gl=GL.getContext(gl_context_handle);if(gl){gl.GLctx[\\\\\\\"getBufferSubData\\\\\\\"](target,offset,HEAPU8,data,size)}}var GodotWebXR={gl:null,session:null,gl_binding:null,layer:null,space:null,frame:null,pose:null,view_count:1,input_sources:[,,,,,,,,,,,,,,,],touches:[,,,,],onsimpleevent:null,orig_requestAnimationFrame:null,requestAnimationFrame:callback=>{if(GodotWebXR.session&&GodotWebXR.space){const onFrame=function(time,frame){GodotWebXR.frame=frame;GodotWebXR.pose=frame.getViewerPose(GodotWebXR.space);callback(time);GodotWebXR.frame=null;GodotWebXR.pose=null};GodotWebXR.session.requestAnimationFrame(onFrame)}else{GodotWebXR.orig_requestAnimationFrame(callback)}},monkeyPatchRequestAnimationFrame:enable=>{if(GodotWebXR.orig_requestAnimationFrame===null){GodotWebXR.orig_requestAnimationFrame=Browser.requestAnimationFrame}Browser.requestAnimationFrame=enable?GodotWebXR.requestAnimationFrame:GodotWebXR.orig_requestAnimationFrame},pauseResumeMainLoop:()=>{Browser.mainLoop.pause();runtimeKeepalivePush();window.setTimeout(function(){runtimeKeepalivePop();Browser.mainLoop.resume()},0)},getLayer:()=>{const new_view_count=GodotWebXR.pose?GodotWebXR.pose.views.length:1;let layer=GodotWebXR.layer;if(layer&&GodotWebXR.view_count===new_view_count){return layer}if(!GodotWebXR.session||!GodotWebXR.gl_binding){return null}const gl=GodotWebXR.gl;layer=GodotWebXR.gl_binding.createProjectionLayer({textureType:new_view_count>1?\\\\\\\"texture-array\\\\\\\":\\\\\\\"texture\\\\\\\",colorFormat:gl.RGBA8,depthFormat:gl.DEPTH_COMPONENT24});GodotWebXR.session.updateRenderState({layers:[layer]});GodotWebXR.layer=layer;GodotWebXR.view_count=new_view_count;return layer},getSubImage:()=>{if(!GodotWebXR.pose){return null}const layer=GodotWebXR.getLayer();if(layer===null){return null}return GodotWebXR.gl_binding.getViewSubImage(layer,GodotWebXR.pose.views[0])},getTextureId:texture=>{if(texture.name!==undefined){return texture.name}const id=GL.getNewId(GL.textures);texture.name=id;GL.textures[id]=texture;return id},addInputSource:input_source=>{let name=-1;if(input_source.targetRayMode===\\\\\\\"tracked-pointer\\\\\\\"&&input_source.handedness===\\\\\\\"left\\\\\\\"){name=0}else if(input_source.targetRayMode===\\\\\\\"tracked-pointer\\\\\\\"&&input_source.handedness===\\\\\\\"right\\\\\\\"){name=1}else{for(let i=2;i<16;i++){if(!GodotWebXR.input_sources[i]){name=i;break}}}if(name>=0){GodotWebXR.input_sources[name]=input_source;input_source.name=name;if(input_source.targetRayMode===\\\\\\\"screen\\\\\\\"){let touch_index=-1;for(let i=0;i<5;i++){if(!GodotWebXR.touches[i]){touch_index=i;break}}if(touch_index>=0){GodotWebXR.touches[touch_index]=input_source;input_source.touch_index=touch_index}}}return name},removeInputSource:input_source=>{if(input_source.name!==undefined){const name=input_source.name;if(name>=0&&name<16){GodotWebXR.input_sources[name]=null}if(input_source.touch_index!==undefined){const touch_index=input_source.touch_index;if(touch_index>=0&&touch_index<5){GodotWebXR.touches[touch_index]=null}}return name}return-1},getInputSourceId:input_source=>{if(input_source!==undefined){return input_source.name}return-1},getTouchIndex:input_source=>{if(input_source.touch_index!==undefined){return input_source.touch_index}return-1}};function _godot_webxr_get_bounds_geometry(r_points){if(!GodotWebXR.space||!GodotWebXR.space.boundsGeometry){return 0}const point_count=GodotWebXR.space.boundsGeometry.length;if(point_count===0){return 0}const buf=GodotRuntime.malloc(point_count*3*4);for(let i=0;i<point_count;i++){const point=GodotWebXR.space.boundsGeometry[i];GodotRuntime.setHeapValue(buf+(i*3+0)*4,point.x,\\\\\\\"float\\\\\\\");GodotRuntime.setHeapValue(buf+(i*3+1)*4,point.y,\\\\\\\"float\\\\\\\");GodotRuntime.setHeapValue(buf+(i*3+2)*4,point.z,\\\\\\\"float\\\\\\\")}GodotRuntime.setHeapValue(r_points,buf,\\\\\\\"i32\\\\\\\");return point_count}function _godot_webxr_get_color_texture(){const subimage=GodotWebXR.getSubImage();if(subimage===null){return 0}return GodotWebXR.getTextureId(subimage.colorTexture)}function _godot_webxr_get_depth_texture(){const subimage=GodotWebXR.getSubImage();if(subimage===null){return 0}if(!subimage.depthStencilTexture){return 0}return GodotWebXR.getTextureId(subimage.depthStencilTexture)}function _godot_webxr_get_frame_rate(){if(!GodotWebXR.session||GodotWebXR.session.frameRate===undefined){return 0}return GodotWebXR.session.frameRate}function _godot_webxr_get_projection_for_view(p_view,r_transform){if(!GodotWebXR.session||!GodotWebXR.pose){return false}const matrix=GodotWebXR.pose.views[p_view].projectionMatrix;for(let i=0;i<16;i++){GodotRuntime.setHeapValue(r_transform+i*4,matrix[i],\\\\\\\"float\\\\\\\")}return true}function _godot_webxr_get_render_target_size(r_size){const subimage=GodotWebXR.getSubImage();if(subimage===null){return false}GodotRuntime.setHeapValue(r_size+0,subimage.viewport.width,\\\\\\\"i32\\\\\\\");GodotRuntime.setHeapValue(r_size+4,subimage.viewport.height,\\\\\\\"i32\\\\\\\");return true}function _godot_webxr_get_supported_frame_rates(r_frame_rates){if(!GodotWebXR.session||GodotWebXR.session.supportedFrameRates===undefined){return 0}const frame_rate_count=GodotWebXR.session.supportedFrameRates.length;if(frame_rate_count===0){return 0}const buf=GodotRuntime.malloc(frame_rate_count*4);for(let i=0;i<frame_rate_count;i++){GodotRuntime.setHeapValue(buf+i*4,GodotWebXR.session.supportedFrameRates[i],\\\\\\\"float\\\\\\\")}GodotRuntime.setHeapValue(r_frame_rates,buf,\\\\\\\"i32\\\\\\\");return frame_rate_count}function _godot_webxr_get_transform_for_view(p_view,r_transform){if(!GodotWebXR.session||!GodotWebXR.pose){return false}const views=GodotWebXR.pose.views;let matrix;if(p_view>=0){matrix=views[p_view].transform.matrix}else{matrix=GodotWebXR.pose.transform.matrix}for(let i=0;i<16;i++){GodotRuntime.setHeapValue(r_transform+i*4,matrix[i],\\\\\\\"float\\\\\\\")}return true}function _godot_webxr_get_velocity_texture(){const subimage=GodotWebXR.getSubImage();if(subimage===null){return 0}if(!subimage.motionVectorTexture){return 0}return GodotWebXR.getTextureId(subimage.motionVectorTexture)}function _godot_webxr_get_view_count(){if(!GodotWebXR.session||!GodotWebXR.pose){return 1}const view_count=GodotWebXR.pose.views.length;return view_count>0?view_count:1}function _godot_webxr_get_visibility_state(){if(!GodotWebXR.session||!GodotWebXR.session.visibilityState){return 0}return GodotRuntime.allocString(GodotWebXR.session.visibilityState)}var _godot_webxr_initialize=function(p_session_mode,p_required_features,p_optional_features,p_requested_reference_spaces,p_on_session_started,p_on_session_ended,p_on_session_failed,p_on_input_event,p_on_simple_event){GodotWebXR.monkeyPatchRequestAnimationFrame(true);const session_mode=GodotRuntime.parseString(p_session_mode);const required_features=GodotRuntime.parseString(p_required_features).split(\\\\\\\",\\\\\\\").map(s=>s.trim()).filter(s=>s!==\\\\\\\"\\\\\\\");const optional_features=GodotRuntime.parseString(p_optional_features).split(\\\\\\\",\\\\\\\").map(s=>s.trim()).filter(s=>s!==\\\\\\\"\\\\\\\");const requested_reference_space_types=GodotRuntime.parseString(p_requested_reference_spaces).split(\\\\\\\",\\\\\\\").map(s=>s.trim());const onstarted=GodotRuntime.get_func(p_on_session_started);const onended=GodotRuntime.get_func(p_on_session_ended);const onfailed=GodotRuntime.get_func(p_on_session_failed);const oninputevent=GodotRuntime.get_func(p_on_input_event);const onsimpleevent=GodotRuntime.get_func(p_on_simple_event);const session_init={};if(required_features.length>0){session_init[\\\\\\\"requiredFeatures\\\\\\\"]=required_features}if(optional_features.length>0){session_init[\\\\\\\"optionalFeatures\\\\\\\"]=optional_features}navigator.xr.requestSession(session_mode,session_init).then(function(session){GodotWebXR.session=session;session.addEventListener(\\\\\\\"end\\\\\\\",function(evt){onended()});session.addEventListener(\\\\\\\"inputsourceschange\\\\\\\",function(evt){evt.added.forEach(GodotWebXR.addInputSource);evt.removed.forEach(GodotWebXR.removeInputSource)});[\\\\\\\"selectstart\\\\\\\",\\\\\\\"selectend\\\\\\\",\\\\\\\"squeezestart\\\\\\\",\\\\\\\"squeezeend\\\\\\\"].forEach((input_event,index)=>{session.addEventListener(input_event,function(evt){GodotWebXR.frame=evt.frame;oninputevent(index,GodotWebXR.getInputSourceId(evt.inputSource));GodotWebXR.frame=null})});session.addEventListener(\\\\\\\"visibilitychange\\\\\\\",function(evt){const c_str=GodotRuntime.allocString(\\\\\\\"visibility_state_changed\\\\\\\");onsimpleevent(c_str);GodotRuntime.free(c_str)});GodotWebXR.onsimpleevent=onsimpleevent;const gl_context_handle=_emscripten_webgl_get_current_context();const gl=GL.getContext(gl_context_handle).GLctx;GodotWebXR.gl=gl;gl.makeXRCompatible().then(function(){GodotWebXR.gl_binding=new XRWebGLBinding(session,gl);GodotWebXR.getLayer();function onReferenceSpaceSuccess(reference_space,reference_space_type){GodotWebXR.space=reference_space;reference_space.onreset=function(evt){const c_str=GodotRuntime.allocString(\\\\\\\"reference_space_reset\\\\\\\");onsimpleevent(c_str);GodotRuntime.free(c_str)};GodotWebXR.pauseResumeMainLoop();window.setTimeout(function(){const reference_space_c_str=GodotRuntime.allocString(reference_space_type);const enabled_features=\\\\\\\"enabledFeatures\\\\\\\"in session?Array.from(session.enabledFeatures):[];const enabled_features_c_str=GodotRuntime.allocString(enabled_features.join(\\\\\\\",\\\\\\\"));const environment_blend_mode=\\\\\\\"environmentBlendMode\\\\\\\"in session?session.environmentBlendMode:\\\\\\\"\\\\\\\";const environment_blend_mode_c_str=GodotRuntime.allocString(environment_blend_mode);onstarted(reference_space_c_str,enabled_features_c_str,environment_blend_mode_c_str);GodotRuntime.free(reference_space_c_str);GodotRuntime.free(enabled_features_c_str);GodotRuntime.free(environment_blend_mode_c_str)},0)}function requestReferenceSpace(){const reference_space_type=requested_reference_space_types.shift();session.requestReferenceSpace(reference_space_type).then(refSpace=>{onReferenceSpaceSuccess(refSpace,reference_space_type)}).catch(()=>{if(requested_reference_space_types.length===0){const c_str=GodotRuntime.allocString(\\\\\\\"Unable to get any of the requested reference space types\\\\\\\");onfailed(c_str);GodotRuntime.free(c_str)}else{requestReferenceSpace()}})}requestReferenceSpace()}).catch(function(error){const c_str=GodotRuntime.allocString(`Unable to make WebGL context compatible with WebXR: ${error}`);onfailed(c_str);GodotRuntime.free(c_str)})}).catch(function(error){const c_str=GodotRuntime.allocString(`Unable to start session: ${error}`);onfailed(c_str);GodotRuntime.free(c_str)})};function _godot_webxr_is_session_supported(p_session_mode,p_callback){const session_mode=GodotRuntime.parseString(p_session_mode);const cb=GodotRuntime.get_func(p_callback);if(navigator.xr){navigator.xr.isSessionSupported(session_mode).then(function(supported){const c_str=GodotRuntime.allocString(session_mode);cb(c_str,supported?1:0);GodotRuntime.free(c_str)})}else{const c_str=GodotRuntime.allocString(session_mode);cb(c_str,0);GodotRuntime.free(c_str)}}function _godot_webxr_is_supported(){return!!navigator.xr}var _godot_webxr_uninitialize=function(){if(GodotWebXR.session){GodotWebXR.session.end().catch(e=>{})}GodotWebXR.session=null;GodotWebXR.gl_binding=null;GodotWebXR.layer=null;GodotWebXR.space=null;GodotWebXR.frame=null;GodotWebXR.pose=null;GodotWebXR.view_count=1;GodotWebXR.input_sources=new Array(16);GodotWebXR.touches=new Array(5);GodotWebXR.onsimpleevent=null;GodotWebXR.monkeyPatchRequestAnimationFrame(false);GodotWebXR.pauseResumeMainLoop()};function _godot_webxr_update_input_source(p_input_source_id,r_target_pose,r_target_ray_mode,r_touch_index,r_has_grip_pose,r_grip_pose,r_has_standard_mapping,r_button_count,r_buttons,r_axes_count,r_axes,r_has_hand_data,r_hand_joints,r_hand_radii){if(!GodotWebXR.session||!GodotWebXR.frame){return 0}if(p_input_source_id<0||p_input_source_id>=GodotWebXR.input_sources.length||!GodotWebXR.input_sources[p_input_source_id]){return false}const input_source=GodotWebXR.input_sources[p_input_source_id];const frame=GodotWebXR.frame;const space=GodotWebXR.space;const target_pose=frame.getPose(input_source.targetRaySpace,space);if(!target_pose){return false}const target_pose_matrix=target_pose.transform.matrix;for(let i=0;i<16;i++){GodotRuntime.setHeapValue(r_target_pose+i*4,target_pose_matrix[i],\\\\\\\"float\\\\\\\")}let target_ray_mode=0;switch(input_source.targetRayMode){case\\\\\\\"gaze\\\\\\\":target_ray_mode=1;break;case\\\\\\\"tracked-pointer\\\\\\\":target_ray_mode=2;break;case\\\\\\\"screen\\\\\\\":target_ray_mode=3;break;default:}GodotRuntime.setHeapValue(r_target_ray_mode,target_ray_mode,\\\\\\\"i32\\\\\\\");GodotRuntime.setHeapValue(r_touch_index,GodotWebXR.getTouchIndex(input_source),\\\\\\\"i32\\\\\\\");let has_grip_pose=false;if(input_source.gripSpace){const grip_pose=frame.getPose(input_source.gripSpace,space);if(grip_pose){const grip_pose_matrix=grip_pose.transform.matrix;for(let i=0;i<16;i++){GodotRuntime.setHeapValue(r_grip_pose+i*4,grip_pose_matrix[i],\\\\\\\"float\\\\\\\")}has_grip_pose=true}}GodotRuntime.setHeapValue(r_has_grip_pose,has_grip_pose?1:0,\\\\\\\"i32\\\\\\\");let has_standard_mapping=false;let button_count=0;let axes_count=0;if(input_source.gamepad){if(input_source.gamepad.mapping===\\\\\\\"xr-standard\\\\\\\"){has_standard_mapping=true}button_count=Math.min(input_source.gamepad.buttons.length,10);for(let i=0;i<button_count;i++){GodotRuntime.setHeapValue(r_buttons+i*4,input_source.gamepad.buttons[i].value,\\\\\\\"float\\\\\\\")}axes_count=Math.min(input_source.gamepad.axes.length,10);for(let i=0;i<axes_count;i++){GodotRuntime.setHeapValue(r_axes+i*4,input_source.gamepad.axes[i],\\\\\\\"float\\\\\\\")}}GodotRuntime.setHeapValue(r_has_standard_mapping,has_standard_mapping?1:0,\\\\\\\"i32\\\\\\\");GodotRuntime.setHeapValue(r_button_count,button_count,\\\\\\\"i32\\\\\\\");GodotRuntime.setHeapValue(r_axes_count,axes_count,\\\\\\\"i32\\\\\\\");let has_hand_data=false;if(input_source.hand&&r_hand_joints!==0&&r_hand_radii!==0){const hand_joint_array=new Float32Array(25*16);const hand_radii_array=new Float32Array(25);if(frame.fillPoses(input_source.hand.values(),space,hand_joint_array)&&frame.fillJointRadii(input_source.hand.values(),hand_radii_array)){GodotRuntime.heapCopy(HEAPF32,hand_joint_array,r_hand_joints);GodotRuntime.heapCopy(HEAPF32,hand_radii_array,r_hand_radii);has_hand_data=true}}GodotRuntime.setHeapValue(r_has_hand_data,has_hand_data?1:0,\\\\\\\"i32\\\\\\\");return true}function _godot_webxr_update_target_frame_rate(p_frame_rate){if(!GodotWebXR.session||GodotWebXR.session.updateTargetFrameRate===undefined){return}GodotWebXR.session.updateTargetFrameRate(p_frame_rate).then(()=>{const c_str=GodotRuntime.allocString(\\\\\\\"display_refresh_rate_changed\\\\\\\");GodotWebXR.onsimpleevent(c_str);GodotRuntime.free(c_str)})}var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var getCFunc=ident=>{var func=Module[\\\\\\\"_\\\\\\\"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var stackSave=()=>_emscripten_stack_get_current();var stackRestore=val=>__emscripten_stack_restore(val);var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\\\\\\\"string\\\\\\\"){return UTF8ToString(ret)}if(returnType===\\\\\\\"boolean\\\\\\\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func(...cArgs);function onDone(ret){if(stack!==0)stackRestore(stack);return convertReturnValue(ret)}ret=onDone(ret);return ret};var cwrap=(ident,returnType,argTypes,opts)=>{var numericArgs=!argTypes||argTypes.every(type=>type===\\\\\\\"number\\\\\\\"||type===\\\\\\\"boolean\\\\\\\");var numericRet=returnType!==\\\\\\\"string\\\\\\\";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(...args)=>ccall(ident,returnType,argTypes,args,opts)};FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();Module[\\\\\\\"requestFullscreen\\\\\\\"]=Browser.requestFullscreen;Module[\\\\\\\"requestAnimationFrame\\\\\\\"]=Browser.requestAnimationFrame;Module[\\\\\\\"setCanvasSize\\\\\\\"]=Browser.setCanvasSize;Module[\\\\\\\"pauseMainLoop\\\\\\\"]=Browser.mainLoop.pause;Module[\\\\\\\"resumeMainLoop\\\\\\\"]=Browser.mainLoop.resume;Module[\\\\\\\"getUserMedia\\\\\\\"]=Browser.getUserMedia;Module[\\\\\\\"createContext\\\\\\\"]=Browser.createContext;var preloadedImages={};var preloadedAudios={};var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<=288;++i){miniTempWebGLIntBuffers[i]=miniTempWebGLIntBuffersStorage.subarray(0,i)}var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<=288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i)}Module[\\\\\\\"request_quit\\\\\\\"]=function(){GodotOS.request_quit()};Module[\\\\\\\"onExit\\\\\\\"]=GodotOS.cleanup;GodotOS._fs_sync_promise=Promise.resolve();Module[\\\\\\\"initConfig\\\\\\\"]=GodotConfig.init_config;Module[\\\\\\\"initFS\\\\\\\"]=GodotFS.init;Module[\\\\\\\"copyToFS\\\\\\\"]=GodotFS.copy_to_fs;GodotOS.atexit(function(resolve,reject){GodotDisplayCursor.clear();resolve()});GodotOS.atexit(function(resolve,reject){GodotEventListeners.clear();resolve()});GodotOS.atexit(function(resolve,reject){GodotDisplayVK.clear();resolve()});GodotOS.atexit(function(resolve,reject){GodotIME.clear();resolve()});GodotJSWrapper.proxies=new Map;var wasmImports={Vc:___call_sighandler,Oc:___syscall__newselect,Kc:___syscall_accept4,Jc:___syscall_bind,nd:___syscall_chdir,Ya:___syscall_chmod,Ic:___syscall_connect,od:___syscall_faccessat,ld:___syscall_fchmod,la:___syscall_fcntl64,gd:___syscall_ftruncate64,fd:___syscall_getcwd,Uc:___syscall_getdents64,Hc:___syscall_getsockname,Gc:___syscall_getsockopt,Aa:___syscall_ioctl,Ec:___syscall_listen,id:___syscall_lstat64,bd:___syscall_mkdirat,ad:___syscall_mknodat,hd:___syscall_newfstatat,Xa:___syscall_openat,Yc:___syscall_poll,Tc:___syscall_readlinkat,Dc:___syscall_recvfrom,Pc:___syscall_renameat,Rc:___syscall_rmdir,Cc:___syscall_sendto,Va:___syscall_socket,kd:___syscall_stat64,Nc:___syscall_statfs64,Mc:___syscall_symlink,Sc:___syscall_unlinkat,pd:__abort_js,md:__emscripten_get_now_is_monotonic,Xc:__emscripten_runtime_keepalive_clear,Zc:__gmtime_js,_c:__localtime_js,rd:__tzset_js,_e:_emscripten_cancel_main_loop,za:_emscripten_date_now,$e:_emscripten_force_exit,ya:_emscripten_get_now,Lc:_emscripten_resize_heap,Ad:_emscripten_set_canvas_element_size,Ma:_emscripten_set_main_loop,Ra:_emscripten_webgl_commit_frame,fc:_emscripten_webgl_create_context,Pb:_emscripten_webgl_destroy_context,cc:_emscripten_webgl_enable_extension,Dd:_emscripten_webgl_get_supported_extensions,dc:_emscripten_webgl_make_context_current,dd:_environ_get,ed:_environ_sizes_get,La:_exit,ca:_fd_close,Wa:_fd_fdstat_get,_a:_fd_read,cd:_fd_seek,Za:_fd_write,Ka:_getaddrinfo,Me:_getnameinfo,i:_glActiveTexture,db:_glAttachShader,ea:_glBeginTransformFeedback,b:_glBindBuffer,v:_glBindBufferBase,Da:_glBindBufferRange,d:_glBindFramebuffer,sa:_glBindRenderbuffer,c:_glBindTexture,e:_glBindVertexArray,Vd:_glBlendColor,I:_glBlendEquation,ia:_glBlendFunc,B:_glBlendFuncSeparate,ga:_glBlitFramebuffer,g:_glBufferData,O:_glBufferSubData,M:_glCheckFramebufferStatus,F:_glClear,jb:_glClearBufferfv,N:_glClearColor,$:_glClearDepthf,X:_glColorMask,fb:_glCompileShader,wd:_glCompressedTexImage2D,yd:_glCompressedTexImage3D,xd:_glCompressedTexSubImage3D,zd:_glCopyBufferSubData,Jd:_glCreateProgram,hb:_glCreateShader,ka:_glCullFace,n:_glDeleteBuffers,u:_glDeleteFramebuffers,fa:_glDeleteProgram,td:_glDeleteQueries,na:_glDeleteRenderbuffers,W:_glDeleteShader,nb:_glDeleteSync,k:_glDeleteTextures,K:_glDeleteVertexArrays,U:_glDepthFunc,x:_glDepthMask,h:_glDisable,p:_glDisableVertexAttribArray,G:_glDrawArrays,Y:_glDrawArraysInstanced,ja:_glDrawBuffers,Q:_glDrawElements,S:_glDrawElementsInstanced,y:_glEnable,f:_glEnableVertexAttribArray,da:_glEndTransformFeedback,mb:_glFenceSync,Od:_glFinish,Ia:_glFramebufferRenderbuffer,r:_glFramebufferTexture2D,_:_glFramebufferTextureLayer,kb:_glFrontFace,l:_glGenBuffers,z:_glGenFramebuffers,ud:_glGenQueries,Ja:_glGenRenderbuffers,t:_glGenTextures,J:_glGenVertexArrays,sd:_glGenerateMipmap,Bd:_glGetFloatv,Cd:_glGetInteger64v,ma:_glGetIntegerv,Ed:_glGetProgramInfoLog,cb:_glGetProgramiv,eb:_glGetShaderInfoLog,qa:_glGetShaderiv,Z:_glGetString,Yd:_glGetSynciv,Ld:_glGetUniformBlockIndex,Fa:_glGetUniformLocation,Gd:_glLinkProgram,Ba:_glPixelStorei,lb:_glReadBuffer,Ca:_glReadPixels,Rd:_glRenderbufferStorage,ab:_glRenderbufferStorageMultisample,ua:_glScissor,gb:_glShaderSource,s:_glTexImage2D,T:_glTexImage3D,Ha:_glTexParameterf,a:_glTexParameteri,Ga:_glTexStorage2D,$a:_glTexSubImage3D,Hd:_glTransformFeedbackVaryings,m:_glUniform1f,C:_glUniform1i,Ea:_glUniform1iv,E:_glUniform1ui,ra:_glUniform1uiv,aa:_glUniform2f,P:_glUniform2fv,ha:_glUniform2iv,q:_glUniform3fv,L:_glUniform4f,D:_glUniform4fv,Kd:_glUniformBlockBinding,ib:_glUniformMatrix3fv,H:_glUniformMatrix4fv,o:_glUseProgram,ta:_glVertexAttrib4f,w:_glVertexAttribDivisor,ba:_glVertexAttribI4ui,R:_glVertexAttribIPointer,j:_glVertexAttribPointer,A:_glViewport,Nd:_godot_audio_has_worklet,jf:_godot_audio_init,yc:_godot_audio_input_start,oc:_godot_audio_input_stop,kf:_godot_audio_is_available,oa:_godot_audio_resume,Xd:_godot_audio_sample_bus_add,Wd:_godot_audio_sample_bus_move,ee:_godot_audio_sample_bus_remove,oe:_godot_audio_sample_bus_set_count,Pd:_godot_audio_sample_bus_set_mute,Ud:_godot_audio_sample_bus_set_send,Qd:_godot_audio_sample_bus_set_solo,Sd:_godot_audio_sample_bus_set_volume_db,Pe:_godot_audio_sample_is_active,Vb:_godot_audio_sample_register_stream,Td:_godot_audio_sample_set_finished_callback,Ze:_godot_audio_sample_set_pause,xe:_godot_audio_sample_set_volumes_linear,Db:_godot_audio_sample_start,hf:_godot_audio_sample_stop,ec:_godot_audio_sample_stream_is_registered,Mb:_godot_audio_sample_unregister_stream,He:_godot_audio_sample_update_pitch_scale,Md:_godot_audio_worklet_create,Id:_godot_audio_worklet_start_no_threads,kc:_godot_js_config_canvas_id_get,Qe:_godot_js_config_locale_get,Ye:_godot_js_display_alert,vc:_godot_js_display_canvas_focus,wc:_godot_js_display_canvas_is_focused,lc:_godot_js_display_clipboard_get,mc:_godot_js_display_clipboard_set,zc:_godot_js_display_cursor_is_hidden,xc:_godot_js_display_cursor_is_locked,wa:_godot_js_display_cursor_lock_set,Ua:_godot_js_display_cursor_set_custom_shape,Ac:_godot_js_display_cursor_set_shape,xa:_godot_js_display_cursor_set_visible,Ib:_godot_js_display_desired_size_set,Tb:_godot_js_display_fullscreen_cb,Hb:_godot_js_display_fullscreen_exit,Gb:_godot_js_display_fullscreen_request,gc:_godot_js_display_has_webgl,ic:_godot_js_display_is_swap_ok_cancel,Rb:_godot_js_display_notification_cb,Kb:_godot_js_display_pixel_ratio_get,Lb:_godot_js_display_screen_dpi_get,Nb:_godot_js_display_screen_size_get,jc:_godot_js_display_setup_canvas,Fd:_godot_js_display_size_update,uc:_godot_js_display_touchscreen_is_available,Ob:_godot_js_display_tts_available,Qa:_godot_js_display_vk_available,Qb:_godot_js_display_vk_cb,sc:_godot_js_display_vk_hide,tc:_godot_js_display_vk_show,Sb:_godot_js_display_window_blur_cb,Sa:_godot_js_display_window_icon_set,Pa:_godot_js_display_window_size_get,Jb:_godot_js_display_window_title_set,cf:_godot_js_eval,Eb:_godot_js_fetch_create,Oa:_godot_js_fetch_free,Ab:_godot_js_fetch_http_status_get,Cb:_godot_js_fetch_is_chunked,Bb:_godot_js_fetch_read_chunk,zb:_godot_js_fetch_read_headers,va:_godot_js_fetch_state_get,Xb:_godot_js_input_drop_files_cb,Wb:_godot_js_input_gamepad_cb,Fb:_godot_js_input_gamepad_sample,pc:_godot_js_input_gamepad_sample_count,nc:_godot_js_input_gamepad_sample_get,Zb:_godot_js_input_key_cb,bc:_godot_js_input_mouse_button_cb,ac:_godot_js_input_mouse_move_cb,$b:_godot_js_input_mouse_wheel_cb,Yb:_godot_js_input_paste_cb,_b:_godot_js_input_touch_cb,Se:_godot_js_input_vibrate_handheld,Ta:_godot_js_is_ime_focused,bf:_godot_js_os_download_buffer,We:_godot_js_os_execute,ub:_godot_js_os_finish_async,Ne:_godot_js_os_fs_is_persistent,Xe:_godot_js_os_fs_sync,Ue:_godot_js_os_has_feature,Ve:_godot_js_os_hw_concurrency_get,hc:_godot_js_os_request_quit_cb,Te:_godot_js_os_shell_open,Oe:_godot_js_pwa_cb,Re:_godot_js_pwa_update,tb:_godot_js_rtc_datachannel_close,Ce:_godot_js_rtc_datachannel_connect,ze:_godot_js_rtc_datachannel_destroy,De:_godot_js_rtc_datachannel_get_buffered_amount,Ie:_godot_js_rtc_datachannel_id_get,Ee:_godot_js_rtc_datachannel_is_negotiated,Je:_godot_js_rtc_datachannel_is_ordered,Be:_godot_js_rtc_datachannel_label_get,Ge:_godot_js_rtc_datachannel_max_packet_lifetime_get,Fe:_godot_js_rtc_datachannel_max_retransmits_get,Ae:_godot_js_rtc_datachannel_protocol_get,Le:_godot_js_rtc_datachannel_ready_state_get,Ke:_godot_js_rtc_datachannel_send,sb:_godot_js_rtc_pc_close,te:_godot_js_rtc_pc_create,se:_godot_js_rtc_pc_datachannel_create,rb:_godot_js_rtc_pc_destroy,ue:_godot_js_rtc_pc_ice_candidate_add,we:_godot_js_rtc_pc_local_description_set,ye:_godot_js_rtc_pc_offer_create,ve:_godot_js_rtc_pc_remote_description_set,rc:_godot_js_set_ime_active,Ub:_godot_js_set_ime_cb,qc:_godot_js_set_ime_position,jd:_godot_js_tts_get_voices,qd:_godot_js_tts_is_paused,vd:_godot_js_tts_is_speaking,Qc:_godot_js_tts_pause,Fc:_godot_js_tts_resume,$c:_godot_js_tts_speak,Bc:_godot_js_tts_stop,pe:_godot_js_websocket_buffered_amount,ne:_godot_js_websocket_close,re:_godot_js_websocket_create,qb:_godot_js_websocket_destroy,qe:_godot_js_websocket_send,ff:_godot_js_wrapper_create_cb,df:_godot_js_wrapper_create_object,ef:_godot_js_wrapper_interface_get,vb:_godot_js_wrapper_object_call,xb:_godot_js_wrapper_object_get,Na:_godot_js_wrapper_object_getvar,yb:_godot_js_wrapper_object_set,gf:_godot_js_wrapper_object_set_cb_ret,wb:_godot_js_wrapper_object_setvar,af:_godot_js_wrapper_object_unref,bb:_godot_webgl2_glFramebufferTextureMultisampleMultiviewOVR,V:_godot_webgl2_glFramebufferTextureMultiviewOVR,pa:_godot_webgl2_glGetBufferSubData,ke:_godot_webxr_get_bounds_geometry,ae:_godot_webxr_get_color_texture,$d:_godot_webxr_get_depth_texture,je:_godot_webxr_get_frame_rate,be:_godot_webxr_get_projection_for_view,ce:_godot_webxr_get_render_target_size,he:_godot_webxr_get_supported_frame_rates,ob:_godot_webxr_get_transform_for_view,_d:_godot_webxr_get_velocity_texture,pb:_godot_webxr_get_view_count,le:_godot_webxr_get_visibility_state,fe:_godot_webxr_initialize,me:_godot_webxr_is_session_supported,ge:_godot_webxr_is_supported,de:_godot_webxr_uninitialize,Zd:_godot_webxr_update_input_source,ie:_godot_webxr_update_target_frame_rate,Wc:_proc_exit};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports[\\\\\\\"mf\\\\\\\"])();var _free=a0=>(_free=wasmExports[\\\\\\\"nf\\\\\\\"])(a0);var __Z14godot_web_mainiPPc=Module[\\\\\\\"__Z14godot_web_mainiPPc\\\\\\\"]=(a0,a1)=>(__Z14godot_web_mainiPPc=Module[\\\\\\\"__Z14godot_web_mainiPPc\\\\\\\"]=wasmExports[\\\\\\\"of\\\\\\\"])(a0,a1);var _main=Module[\\\\\\\"_main\\\\\\\"]=(a0,a1)=>(_main=Module[\\\\\\\"_main\\\\\\\"]=wasmExports[\\\\\\\"pf\\\\\\\"])(a0,a1);var _malloc=a0=>(_malloc=wasmExports[\\\\\\\"qf\\\\\\\"])(a0);var _fflush=a0=>(_fflush=wasmExports[\\\\\\\"rf\\\\\\\"])(a0);var _htonl=a0=>(_htonl=wasmExports[\\\\\\\"sf\\\\\\\"])(a0);var _htons=a0=>(_htons=wasmExports[\\\\\\\"tf\\\\\\\"])(a0);var _ntohs=a0=>(_ntohs=wasmExports[\\\\\\\"uf\\\\\\\"])(a0);var __emwebxr_on_input_event=Module[\\\\\\\"__emwebxr_on_input_event\\\\\\\"]=(a0,a1)=>(__emwebxr_on_input_event=Module[\\\\\\\"__emwebxr_on_input_event\\\\\\\"]=wasmExports[\\\\\\\"vf\\\\\\\"])(a0,a1);var __emwebxr_on_simple_event=Module[\\\\\\\"__emwebxr_on_simple_event\\\\\\\"]=a0=>(__emwebxr_on_simple_event=Module[\\\\\\\"__emwebxr_on_simple_event\\\\\\\"]=wasmExports[\\\\\\\"wf\\\\\\\"])(a0);var ___funcs_on_exit=()=>(___funcs_on_exit=wasmExports[\\\\\\\"yf\\\\\\\"])();var __emscripten_stack_restore=a0=>(__emscripten_stack_restore=wasmExports[\\\\\\\"zf\\\\\\\"])(a0);var __emscripten_stack_alloc=a0=>(__emscripten_stack_alloc=wasmExports[\\\\\\\"Af\\\\\\\"])(a0);var _emscripten_stack_get_current=()=>(_emscripten_stack_get_current=wasmExports[\\\\\\\"Bf\\\\\\\"])();Module[\\\\\\\"callMain\\\\\\\"]=callMain;Module[\\\\\\\"cwrap\\\\\\\"]=cwrap;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args=[]){var entryFunction=_main;args.unshift(thisProgram);var argc=args.length;var argv=stackAlloc((argc+1)*4);var argv_ptr=argv;args.forEach(arg=>{HEAPU32[argv_ptr>>2]=stringToUTF8OnStack(arg);argv_ptr+=4});HEAPU32[argv_ptr>>2]=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(args=arguments_){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\\\\\\\"calledRun\\\\\\\"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);Module[\\\\\\\"onRuntimeInitialized\\\\\\\"]?.();if(shouldRunNow)callMain(args);postRun()}if(Module[\\\\\\\"setStatus\\\\\\\"]){Module[\\\\\\\"setStatus\\\\\\\"](\\\\\\\"Running...\\\\\\\");setTimeout(function(){setTimeout(function(){Module[\\\\\\\"setStatus\\\\\\\"](\\\\\\\"\\\\\\\")},1);doRun()},1)}else{doRun()}}if(Module[\\\\\\\"preInit\\\\\\\"]){if(typeof Module[\\\\\\\"preInit\\\\\\\"]==\\\\\\\"function\\\\\\\")Module[\\\\\\\"preInit\\\\\\\"]=[Module[\\\\\\\"preInit\\\\\\\"]];while(Module[\\\\\\\"preInit\\\\\\\"].length>0){Module[\\\\\\\"preInit\\\\\\\"].pop()()}}var shouldRunNow=false;if(Module[\\\\\\\"noInitialRun\\\\\\\"])shouldRunNow=false;run();moduleRtn=readyPromise;\\n\\n\\n  return moduleRtn;\\n}\\n);\\n})();\\nif (typeof exports === 'object' && typeof module === 'object')\\n  module.exports = Godot;\\nelse if (typeof define === 'function' && define['amd'])\\n  define([], () => Godot);\\n\\nconst Features = {\\n\\t/**\\n\\t * Check whether WebGL is available. Optionally, specify a particular version of WebGL to check for.\\n\\t *\\n\\t * @param {number=} [majorVersion=1] The major WebGL version to check for.\\n\\t * @returns {boolean} If the given major version of WebGL is available.\\n\\t * @function Engine.isWebGLAvailable\\n\\t */\\n\\tisWebGLAvailable: function (majorVersion = 1) {\\n\\t\\ttry {\\n\\t\\t\\treturn !!document.createElement('canvas').getContext(['webgl', 'webgl2'][majorVersion - 1]);\\n\\t\\t} catch (e) { /* Not available */ }\\n\\t\\treturn false;\\n\\t},\\n\\n\\t/**\\n\\t * Check whether the Fetch API available and supports streaming responses.\\n\\t *\\n\\t * @returns {boolean} If the Fetch API is available and supports streaming responses.\\n\\t * @function Engine.isFetchAvailable\\n\\t */\\n\\tisFetchAvailable: function () {\\n\\t\\treturn 'fetch' in window && 'Response' in window && 'body' in window.Response.prototype;\\n\\t},\\n\\n\\t/**\\n\\t * Check whether the engine is running in a Secure Context.\\n\\t *\\n\\t * @returns {boolean} If the engine is running in a Secure Context.\\n\\t * @function Engine.isSecureContext\\n\\t */\\n\\tisSecureContext: function () {\\n\\t\\treturn window['isSecureContext'] === true;\\n\\t},\\n\\n\\t/**\\n\\t * Check whether the engine is cross origin isolated.\\n\\t * This value is dependent on Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy headers sent by the server.\\n\\t *\\n\\t * @returns {boolean} If the engine is running in a Secure Context.\\n\\t * @function Engine.isSecureContext\\n\\t */\\n\\tisCrossOriginIsolated: function () {\\n\\t\\treturn window['crossOriginIsolated'] === true;\\n\\t},\\n\\n\\t/**\\n\\t * Check whether SharedBufferArray is available.\\n\\t *\\n\\t * Most browsers require the page to be running in a secure context, and the\\n\\t * the server to provide specific CORS headers for SharedArrayBuffer to be available.\\n\\t *\\n\\t * @returns {boolean} If SharedArrayBuffer is available.\\n\\t * @function Engine.isSharedArrayBufferAvailable\\n\\t */\\n\\tisSharedArrayBufferAvailable: function () {\\n\\t\\treturn 'SharedArrayBuffer' in window;\\n\\t},\\n\\n\\t/**\\n\\t * Check whether the AudioContext supports AudioWorkletNodes.\\n\\t *\\n\\t * @returns {boolean} If AudioWorkletNode is available.\\n\\t * @function Engine.isAudioWorkletAvailable\\n\\t */\\n\\tisAudioWorkletAvailable: function () {\\n\\t\\treturn 'AudioContext' in window && 'audioWorklet' in AudioContext.prototype;\\n\\t},\\n\\n\\t/**\\n\\t * Return an array of missing required features (as string).\\n\\t *\\n\\t * @returns {Array<string>} A list of human-readable missing features.\\n\\t * @function Engine.getMissingFeatures\\n\\t * @param {{threads: (boolean|undefined)}} supportedFeatures\\n\\t */\\n\\tgetMissingFeatures: function (supportedFeatures = {}) {\\n\\t\\tconst {\\n\\t\\t\\t// Quotes are needed for the Closure compiler.\\n\\t\\t\\t'threads': supportsThreads = true,\\n\\t\\t} = supportedFeatures;\\n\\n\\t\\tconst missing = [];\\n\\t\\tif (!Features.isWebGLAvailable(2)) {\\n\\t\\t\\tmissing.push('WebGL2 - Check web browser configuration and hardware support');\\n\\t\\t}\\n\\t\\tif (!Features.isFetchAvailable()) {\\n\\t\\t\\tmissing.push('Fetch - Check web browser version');\\n\\t\\t}\\n\\t\\tif (!Features.isSecureContext()) {\\n\\t\\t\\tmissing.push('Secure Context - Check web server configuration (use HTTPS)');\\n\\t\\t}\\n\\n\\t\\tif (supportsThreads) {\\n\\t\\t\\tif (!Features.isCrossOriginIsolated()) {\\n\\t\\t\\t\\tmissing.push('Cross-Origin Isolation - Check that the web server configuration sends the correct headers.');\\n\\t\\t\\t}\\n\\t\\t\\tif (!Features.isSharedArrayBufferAvailable()) {\\n\\t\\t\\t\\tmissing.push('SharedArrayBuffer - Check that the web server configuration sends the correct headers.');\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Audio is normally optional since we have a dummy fallback.\\n\\t\\treturn missing;\\n\\t},\\n};\\n\\nconst Preloader = /** @constructor */ function () { // eslint-disable-line no-unused-vars\\n\\tfunction getTrackedResponse(response, load_status) {\\n\\t\\tfunction onloadprogress(reader, controller) {\\n\\t\\t\\treturn reader.read().then(function (result) {\\n\\t\\t\\t\\tif (load_status.done) {\\n\\t\\t\\t\\t\\treturn Promise.resolve();\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (result.value) {\\n\\t\\t\\t\\t\\tcontroller.enqueue(result.value);\\n\\t\\t\\t\\t\\tload_status.loaded += result.value.length;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (!result.done) {\\n\\t\\t\\t\\t\\treturn onloadprogress(reader, controller);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tload_status.done = true;\\n\\t\\t\\t\\treturn Promise.resolve();\\n\\t\\t\\t});\\n\\t\\t}\\n\\t\\tconst reader = response.body.getReader();\\n\\t\\treturn new Response(new ReadableStream({\\n\\t\\t\\tstart: function (controller) {\\n\\t\\t\\t\\tonloadprogress(reader, controller).then(function () {\\n\\t\\t\\t\\t\\tcontroller.close();\\n\\t\\t\\t\\t});\\n\\t\\t\\t},\\n\\t\\t}), { headers: response.headers });\\n\\t}\\n\\n\\tfunction loadFetch(file, tracker, fileSize, raw) {\\n\\t\\ttracker[file] = {\\n\\t\\t\\ttotal: fileSize || 0,\\n\\t\\t\\tloaded: 0,\\n\\t\\t\\tdone: false,\\n\\t\\t};\\n\\t\\treturn fetch(file).then(function (response) {\\n\\t\\t\\tif (!response.ok) {\\n\\t\\t\\t\\treturn Promise.reject(new Error(`Failed loading file '${file}'`));\\n\\t\\t\\t}\\n\\t\\t\\tconst tr = getTrackedResponse(response, tracker[file]);\\n\\t\\t\\tif (raw) {\\n\\t\\t\\t\\treturn Promise.resolve(tr);\\n\\t\\t\\t}\\n\\t\\t\\treturn tr.arrayBuffer();\\n\\t\\t});\\n\\t}\\n\\n\\tfunction retry(func, attempts = 1) {\\n\\t\\tfunction onerror(err) {\\n\\t\\t\\tif (attempts <= 1) {\\n\\t\\t\\t\\treturn Promise.reject(err);\\n\\t\\t\\t}\\n\\t\\t\\treturn new Promise(function (resolve, reject) {\\n\\t\\t\\t\\tsetTimeout(function () {\\n\\t\\t\\t\\t\\tretry(func, attempts - 1).then(resolve).catch(reject);\\n\\t\\t\\t\\t}, 1000);\\n\\t\\t\\t});\\n\\t\\t}\\n\\t\\treturn func().catch(onerror);\\n\\t}\\n\\n\\tconst DOWNLOAD_ATTEMPTS_MAX = 4;\\n\\tconst loadingFiles = {};\\n\\tconst lastProgress = { loaded: 0, total: 0 };\\n\\tlet progressFunc = null;\\n\\n\\tconst animateProgress = function () {\\n\\t\\tlet loaded = 0;\\n\\t\\tlet total = 0;\\n\\t\\tlet totalIsValid = true;\\n\\t\\tlet progressIsFinal = true;\\n\\n\\t\\tObject.keys(loadingFiles).forEach(function (file) {\\n\\t\\t\\tconst stat = loadingFiles[file];\\n\\t\\t\\tif (!stat.done) {\\n\\t\\t\\t\\tprogressIsFinal = false;\\n\\t\\t\\t}\\n\\t\\t\\tif (!totalIsValid || stat.total === 0) {\\n\\t\\t\\t\\ttotalIsValid = false;\\n\\t\\t\\t\\ttotal = 0;\\n\\t\\t\\t} else {\\n\\t\\t\\t\\ttotal += stat.total;\\n\\t\\t\\t}\\n\\t\\t\\tloaded += stat.loaded;\\n\\t\\t});\\n\\t\\tif (loaded !== lastProgress.loaded || total !== lastProgress.total) {\\n\\t\\t\\tlastProgress.loaded = loaded;\\n\\t\\t\\tlastProgress.total = total;\\n\\t\\t\\tif (typeof progressFunc === 'function') {\\n\\t\\t\\t\\tprogressFunc(loaded, total);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tif (!progressIsFinal) {\\n\\t\\t\\trequestAnimationFrame(animateProgress);\\n\\t\\t}\\n\\t};\\n\\n\\tthis.animateProgress = animateProgress;\\n\\n\\tthis.setProgressFunc = function (callback) {\\n\\t\\tprogressFunc = callback;\\n\\t};\\n\\n\\tthis.loadPromise = function (file, fileSize, raw = false) {\\n\\t\\treturn retry(loadFetch.bind(null, file, loadingFiles, fileSize, raw), DOWNLOAD_ATTEMPTS_MAX);\\n\\t};\\n\\n\\tthis.preloadedFiles = [];\\n\\tthis.preload = function (pathOrBuffer, destPath, fileSize) {\\n\\t\\tlet buffer = null;\\n\\t\\tif (typeof pathOrBuffer === 'string') {\\n\\t\\t\\tconst me = this;\\n\\t\\t\\treturn this.loadPromise(pathOrBuffer, fileSize).then(function (buf) {\\n\\t\\t\\t\\tme.preloadedFiles.push({\\n\\t\\t\\t\\t\\tpath: destPath || pathOrBuffer,\\n\\t\\t\\t\\t\\tbuffer: buf,\\n\\t\\t\\t\\t});\\n\\t\\t\\t\\treturn Promise.resolve();\\n\\t\\t\\t});\\n\\t\\t} else if (pathOrBuffer instanceof ArrayBuffer) {\\n\\t\\t\\tbuffer = new Uint8Array(pathOrBuffer);\\n\\t\\t} else if (ArrayBuffer.isView(pathOrBuffer)) {\\n\\t\\t\\tbuffer = new Uint8Array(pathOrBuffer.buffer);\\n\\t\\t}\\n\\t\\tif (buffer) {\\n\\t\\t\\tthis.preloadedFiles.push({\\n\\t\\t\\t\\tpath: destPath,\\n\\t\\t\\t\\tbuffer: pathOrBuffer,\\n\\t\\t\\t});\\n\\t\\t\\treturn Promise.resolve();\\n\\t\\t}\\n\\t\\treturn Promise.reject(new Error('Invalid object for preloading'));\\n\\t};\\n};\\n\\n/**\\n * An object used to configure the Engine instance based on godot export options, and to override those in custom HTML\\n * templates if needed.\\n *\\n * @header Engine configuration\\n * @summary The Engine configuration object. This is just a typedef, create it like a regular object, e.g.:\\n *\\n * ``const MyConfig = { executable: 'godot', unloadAfterInit: false }``\\n *\\n * @typedef {Object} EngineConfig\\n */\\nconst EngineConfig = {}; // eslint-disable-line no-unused-vars\\n\\n/**\\n * @struct\\n * @constructor\\n * @ignore\\n */\\nconst InternalConfig = function (initConfig) { // eslint-disable-line no-unused-vars\\n\\tconst cfg = /** @lends {InternalConfig.prototype} */ {\\n\\t\\t/**\\n\\t\\t * Whether to unload the engine automatically after the instance is initialized.\\n\\t\\t *\\n\\t\\t * @memberof EngineConfig\\n\\t\\t * @default\\n\\t\\t * @type {boolean}\\n\\t\\t */\\n\\t\\tunloadAfterInit: true,\\n\\t\\t/**\\n\\t\\t * The HTML DOM Canvas object to use.\\n\\t\\t *\\n\\t\\t * By default, the first canvas element in the document will be used is none is specified.\\n\\t\\t *\\n\\t\\t * @memberof EngineConfig\\n\\t\\t * @default\\n\\t\\t * @type {?HTMLCanvasElement}\\n\\t\\t */\\n\\t\\tcanvas: null,\\n\\t\\t/**\\n\\t\\t * The name of the WASM file without the extension. (Set by Godot Editor export process).\\n\\t\\t *\\n\\t\\t * @memberof EngineConfig\\n\\t\\t * @default\\n\\t\\t * @type {string}\\n\\t\\t */\\n\\t\\texecutable: '',\\n\\t\\t/**\\n\\t\\t * An alternative name for the game pck to load. The executable name is used otherwise.\\n\\t\\t *\\n\\t\\t * @memberof EngineConfig\\n\\t\\t * @default\\n\\t\\t * @type {?string}\\n\\t\\t */\\n\\t\\tmainPack: null,\\n\\t\\t/**\\n\\t\\t * Specify a language code to select the proper localization for the game.\\n\\t\\t *\\n\\t\\t * The browser locale will be used if none is specified. See complete list of\\n\\t\\t * :ref:`supported locales <doc_locales>`.\\n\\t\\t *\\n\\t\\t * @memberof EngineConfig\\n\\t\\t * @type {?string}\\n\\t\\t * @default\\n\\t\\t */\\n\\t\\tlocale: null,\\n\\t\\t/**\\n\\t\\t * The canvas resize policy determines how the canvas should be resized by Godot.\\n\\t\\t *\\n\\t\\t * ``0`` means Godot won't do any resizing. This is useful if you want to control the canvas size from\\n\\t\\t * javascript code in your template.\\n\\t\\t *\\n\\t\\t * ``1`` means Godot will resize the canvas on start, and when changing window size via engine functions.\\n\\t\\t *\\n\\t\\t * ``2`` means Godot will adapt the canvas size to match the whole browser window.\\n\\t\\t *\\n\\t\\t * @memberof EngineConfig\\n\\t\\t * @type {number}\\n\\t\\t * @default\\n\\t\\t */\\n\\t\\tcanvasResizePolicy: 2,\\n\\t\\t/**\\n\\t\\t * The arguments to be passed as command line arguments on startup.\\n\\t\\t *\\n\\t\\t * See :ref:`command line tutorial <doc_command_line_tutorial>`.\\n\\t\\t *\\n\\t\\t * **Note**: :js:meth:`startGame <Engine.prototype.startGame>` will always add the ``--main-pack`` argument.\\n\\t\\t *\\n\\t\\t * @memberof EngineConfig\\n\\t\\t * @type {Array<string>}\\n\\t\\t * @default\\n\\t\\t */\\n\\t\\targs: [],\\n\\t\\t/**\\n\\t\\t * When enabled, the game canvas will automatically grab the focus when the engine starts.\\n\\t\\t *\\n\\t\\t * @memberof EngineConfig\\n\\t\\t * @type {boolean}\\n\\t\\t * @default\\n\\t\\t */\\n\\t\\tfocusCanvas: true,\\n\\t\\t/**\\n\\t\\t * When enabled, this will turn on experimental virtual keyboard support on mobile.\\n\\t\\t *\\n\\t\\t * @memberof EngineConfig\\n\\t\\t * @type {boolean}\\n\\t\\t * @default\\n\\t\\t */\\n\\t\\texperimentalVK: false,\\n\\t\\t/**\\n\\t\\t * The progressive web app service worker to install.\\n\\t\\t * @memberof EngineConfig\\n\\t\\t * @default\\n\\t\\t * @type {string}\\n\\t\\t */\\n\\t\\tserviceWorker: '',\\n\\t\\t/**\\n\\t\\t * @ignore\\n\\t\\t * @type {Array.<string>}\\n\\t\\t */\\n\\t\\tpersistentPaths: ['/userfs'],\\n\\t\\t/**\\n\\t\\t * @ignore\\n\\t\\t * @type {boolean}\\n\\t\\t */\\n\\t\\tpersistentDrops: false,\\n\\t\\t/**\\n\\t\\t * @ignore\\n\\t\\t * @type {Array.<string>}\\n\\t\\t */\\n\\t\\tgdextensionLibs: [],\\n\\t\\t/**\\n\\t\\t * @ignore\\n\\t\\t * @type {Array.<string>}\\n\\t\\t */\\n\\t\\tfileSizes: [],\\n\\t\\t/**\\n\\t\\t * A callback function for handling Godot's ``OS.execute`` calls.\\n\\t\\t *\\n\\t\\t * This is for example used in the Web Editor template to switch between project manager and editor, and for running the game.\\n\\t\\t *\\n\\t\\t * @callback EngineConfig.onExecute\\n\\t\\t * @param {string} path The path that Godot's wants executed.\\n\\t\\t * @param {Array.<string>} args The arguments of the \\\\\\\"command\\\\\\\" to execute.\\n\\t\\t */\\n\\t\\t/**\\n\\t\\t * @ignore\\n\\t\\t * @type {?function(string, Array.<string>)}\\n\\t\\t */\\n\\t\\tonExecute: null,\\n\\t\\t/**\\n\\t\\t * A callback function for being notified when the Godot instance quits.\\n\\t\\t *\\n\\t\\t * **Note**: This function will not be called if the engine crashes or become unresponsive.\\n\\t\\t *\\n\\t\\t * @callback EngineConfig.onExit\\n\\t\\t * @param {number} status_code The status code returned by Godot on exit.\\n\\t\\t */\\n\\t\\t/**\\n\\t\\t * @ignore\\n\\t\\t * @type {?function(number)}\\n\\t\\t */\\n\\t\\tonExit: null,\\n\\t\\t/**\\n\\t\\t * A callback function for displaying download progress.\\n\\t\\t *\\n\\t\\t * The function is called once per frame while downloading files, so the usage of ``requestAnimationFrame()``\\n\\t\\t * is not necessary.\\n\\t\\t *\\n\\t\\t * If the callback function receives a total amount of bytes as 0, this means that it is impossible to calculate.\\n\\t\\t * Possible reasons include:\\n\\t\\t *\\n\\t\\t * -  Files are delivered with server-side chunked compression\\n\\t\\t * -  Files are delivered with server-side compression on Chromium\\n\\t\\t * -  Not all file downloads have started yet (usually on servers without multi-threading)\\n\\t\\t *\\n\\t\\t * @callback EngineConfig.onProgress\\n\\t\\t * @param {number} current The current amount of downloaded bytes so far.\\n\\t\\t * @param {number} total The total amount of bytes to be downloaded.\\n\\t\\t */\\n\\t\\t/**\\n\\t\\t * @ignore\\n\\t\\t * @type {?function(number, number)}\\n\\t\\t */\\n\\t\\tonProgress: null,\\n\\t\\t/**\\n\\t\\t * A callback function for handling the standard output stream. This method should usually only be used in debug pages.\\n\\t\\t *\\n\\t\\t * By default, ``console.log()`` is used.\\n\\t\\t *\\n\\t\\t * @callback EngineConfig.onPrint\\n\\t\\t * @param {...*} [var_args] A variadic number of arguments to be printed.\\n\\t\\t */\\n\\t\\t/**\\n\\t\\t * @ignore\\n\\t\\t * @type {?function(...*)}\\n\\t\\t */\\n\\t\\tonPrint: function () {\\n\\t\\t\\tconsole.log.apply(console, Array.from(arguments)); // eslint-disable-line no-console\\n\\t\\t},\\n\\t\\t/**\\n\\t\\t * A callback function for handling the standard error stream. This method should usually only be used in debug pages.\\n\\t\\t *\\n\\t\\t * By default, ``console.error()`` is used.\\n\\t\\t *\\n\\t\\t * @callback EngineConfig.onPrintError\\n\\t\\t * @param {...*} [var_args] A variadic number of arguments to be printed as errors.\\n\\t\\t*/\\n\\t\\t/**\\n\\t\\t * @ignore\\n\\t\\t * @type {?function(...*)}\\n\\t\\t */\\n\\t\\tonPrintError: function (var_args) {\\n\\t\\t\\tconsole.error.apply(console, Array.from(arguments)); // eslint-disable-line no-console\\n\\t\\t},\\n\\t};\\n\\n\\t/**\\n\\t * @ignore\\n\\t * @struct\\n\\t * @constructor\\n\\t * @param {EngineConfig} opts\\n\\t */\\n\\tfunction Config(opts) {\\n\\t\\tthis.update(opts);\\n\\t}\\n\\n\\tConfig.prototype = cfg;\\n\\n\\t/**\\n\\t * @ignore\\n\\t * @param {EngineConfig} opts\\n\\t */\\n\\tConfig.prototype.update = function (opts) {\\n\\t\\tconst config = opts || {};\\n\\t\\t// NOTE: We must explicitly pass the default, accessing it via\\n\\t\\t// the key will fail due to closure compiler renames.\\n\\t\\tfunction parse(key, def) {\\n\\t\\t\\tif (typeof (config[key]) === 'undefined') {\\n\\t\\t\\t\\treturn def;\\n\\t\\t\\t}\\n\\t\\t\\treturn config[key];\\n\\t\\t}\\n\\t\\t// Module config\\n\\t\\tthis.unloadAfterInit = parse('unloadAfterInit', this.unloadAfterInit);\\n\\t\\tthis.onPrintError = parse('onPrintError', this.onPrintError);\\n\\t\\tthis.onPrint = parse('onPrint', this.onPrint);\\n\\t\\tthis.onProgress = parse('onProgress', this.onProgress);\\n\\n\\t\\t// Godot config\\n\\t\\tthis.canvas = parse('canvas', this.canvas);\\n\\t\\tthis.executable = parse('executable', this.executable);\\n\\t\\tthis.mainPack = parse('mainPack', this.mainPack);\\n\\t\\tthis.locale = parse('locale', this.locale);\\n\\t\\tthis.canvasResizePolicy = parse('canvasResizePolicy', this.canvasResizePolicy);\\n\\t\\tthis.persistentPaths = parse('persistentPaths', this.persistentPaths);\\n\\t\\tthis.persistentDrops = parse('persistentDrops', this.persistentDrops);\\n\\t\\tthis.experimentalVK = parse('experimentalVK', this.experimentalVK);\\n\\t\\tthis.focusCanvas = parse('focusCanvas', this.focusCanvas);\\n\\t\\tthis.serviceWorker = parse('serviceWorker', this.serviceWorker);\\n\\t\\tthis.gdextensionLibs = parse('gdextensionLibs', this.gdextensionLibs);\\n\\t\\tthis.fileSizes = parse('fileSizes', this.fileSizes);\\n\\t\\tthis.args = parse('args', this.args);\\n\\t\\tthis.onExecute = parse('onExecute', this.onExecute);\\n\\t\\tthis.onExit = parse('onExit', this.onExit);\\n\\t};\\n\\n\\t/**\\n\\t * @ignore\\n\\t * @param {string} loadPath\\n\\t * @param {Response} response\\n\\t */\\n\\tConfig.prototype.getModuleConfig = function (loadPath, response) {\\n\\t\\tlet r = response;\\n\\t\\tconst gdext = this.gdextensionLibs;\\n\\t\\treturn {\\n\\t\\t\\t'print': this.onPrint,\\n\\t\\t\\t'printErr': this.onPrintError,\\n\\t\\t\\t'thisProgram': this.executable,\\n\\t\\t\\t'noExitRuntime': false,\\n\\t\\t\\t'dynamicLibraries': [`${loadPath}.side.wasm`].concat(this.gdextensionLibs),\\n\\t\\t\\t'instantiateWasm': function (imports, onSuccess) {\\n\\t\\t\\t\\tfunction done(result) {\\n\\t\\t\\t\\t\\tonSuccess(result['instance'], result['module']);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (typeof (WebAssembly.instantiateStreaming) !== 'undefined') {\\n\\t\\t\\t\\t\\tWebAssembly.instantiateStreaming(Promise.resolve(r), imports).then(done);\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tr.arrayBuffer().then(function (buffer) {\\n\\t\\t\\t\\t\\t\\tWebAssembly.instantiate(buffer, imports).then(done);\\n\\t\\t\\t\\t\\t});\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tr = null;\\n\\t\\t\\t\\treturn {};\\n\\t\\t\\t},\\n\\t\\t\\t'locateFile': function (path) {\\n\\t\\t\\t\\tif (!path.startsWith('godot.')) {\\n\\t\\t\\t\\t\\treturn path;\\n\\t\\t\\t\\t} else if (path.endsWith('.worker.js')) {\\n\\t\\t\\t\\t\\treturn `${loadPath}.worker.js`;\\n\\t\\t\\t\\t} else if (path.endsWith('.audio.worklet.js')) {\\n\\t\\t\\t\\t\\treturn `${loadPath}.audio.worklet.js`;\\n\\t\\t\\t\\t} else if (path.endsWith('.js')) {\\n\\t\\t\\t\\t\\treturn `${loadPath}.js`;\\n\\t\\t\\t\\t} else if (path in gdext) {\\n\\t\\t\\t\\t\\treturn path;\\n\\t\\t\\t\\t} else if (path.endsWith('.side.wasm')) {\\n\\t\\t\\t\\t\\treturn `${loadPath}.side.wasm`;\\n\\t\\t\\t\\t} else if (path.endsWith('.wasm')) {\\n\\t\\t\\t\\t\\treturn `${loadPath}.wasm`;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn path;\\n\\t\\t\\t},\\n\\t\\t};\\n\\t};\\n\\n\\t/**\\n\\t * @ignore\\n\\t * @param {function()} cleanup\\n\\t */\\n\\tConfig.prototype.getGodotConfig = function (cleanup) {\\n\\t\\t// Try to find a canvas\\n\\t\\tif (!(this.canvas instanceof HTMLCanvasElement)) {\\n\\t\\t\\tconst nodes = document.getElementsByTagName('canvas');\\n\\t\\t\\tif (nodes.length && nodes[0] instanceof HTMLCanvasElement) {\\n\\t\\t\\t\\tconst first = nodes[0];\\n\\t\\t\\t\\tthis.canvas = /** @type {!HTMLCanvasElement} */ (first);\\n\\t\\t\\t}\\n\\t\\t\\tif (!this.canvas) {\\n\\t\\t\\t\\tthrow new Error('No canvas found in page');\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t// Canvas can grab focus on click, or key events won't work.\\n\\t\\tif (this.canvas.tabIndex < 0) {\\n\\t\\t\\tthis.canvas.tabIndex = 0;\\n\\t\\t}\\n\\n\\t\\t// Browser locale, or custom one if defined.\\n\\t\\tlet locale = this.locale;\\n\\t\\tif (!locale) {\\n\\t\\t\\tlocale = navigator.languages ? navigator.languages[0] : navigator.language;\\n\\t\\t\\tlocale = locale.split('.')[0];\\n\\t\\t}\\n\\t\\tlocale = locale.replace('-', '_');\\n\\t\\tconst onExit = this.onExit;\\n\\n\\t\\t// Godot configuration.\\n\\t\\treturn {\\n\\t\\t\\t'canvas': this.canvas,\\n\\t\\t\\t'canvasResizePolicy': this.canvasResizePolicy,\\n\\t\\t\\t'locale': locale,\\n\\t\\t\\t'persistentDrops': this.persistentDrops,\\n\\t\\t\\t'virtualKeyboard': this.experimentalVK,\\n\\t\\t\\t'focusCanvas': this.focusCanvas,\\n\\t\\t\\t'onExecute': this.onExecute,\\n\\t\\t\\t'onExit': function (p_code) {\\n\\t\\t\\t\\tcleanup(); // We always need to call the cleanup callback to free memory.\\n\\t\\t\\t\\tif (typeof (onExit) === 'function') {\\n\\t\\t\\t\\t\\tonExit(p_code);\\n\\t\\t\\t\\t}\\n\\t\\t\\t},\\n\\t\\t};\\n\\t};\\n\\treturn new Config(initConfig);\\n};\\n\\n/**\\n * Projects exported for the Web expose the :js:class:`Engine` class to the JavaScript environment, that allows\\n * fine control over the engine's start-up process.\\n *\\n * This API is built in an asynchronous manner and requires basic understanding\\n * of `Promises <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises>`__.\\n *\\n * @module Engine\\n * @header Web export JavaScript reference\\n */\\nconst Engine = (function () {\\n\\tconst preloader = new Preloader();\\n\\n\\tlet loadPromise = null;\\n\\tlet loadPath = '';\\n\\tlet initPromise = null;\\n\\n\\t/**\\n\\t * @classdesc The ``Engine`` class provides methods for loading and starting exported projects on the Web. For default export\\n\\t * settings, this is already part of the exported HTML page. To understand practical use of the ``Engine`` class,\\n\\t * see :ref:`Custom HTML page for Web export <doc_customizing_html5_shell>`.\\n\\t *\\n\\t * @description Create a new Engine instance with the given configuration.\\n\\t *\\n\\t * @global\\n\\t * @constructor\\n\\t * @param {EngineConfig} initConfig The initial config for this instance.\\n\\t */\\n\\tfunction Engine(initConfig) { // eslint-disable-line no-shadow\\n\\t\\tthis.config = new InternalConfig(initConfig);\\n\\t\\tthis.rtenv = null;\\n\\t}\\n\\n\\t/**\\n\\t * Load the engine from the specified base path.\\n\\t *\\n\\t * @param {string} basePath Base path of the engine to load.\\n\\t * @param {number=} [size=0] The file size if known.\\n\\t * @returns {Promise} A Promise that resolves once the engine is loaded.\\n\\t *\\n\\t * @function Engine.load\\n\\t */\\n\\tEngine.load = function (basePath, size) {\\n\\t\\tif (loadPromise == null) {\\n\\t\\t\\tloadPath = basePath;\\n\\t\\t\\tloadPromise = preloader.loadPromise(`${loadPath}.wasm`, size, true);\\n\\t\\t\\trequestAnimationFrame(preloader.animateProgress);\\n\\t\\t}\\n\\t\\treturn loadPromise;\\n\\t};\\n\\n\\t/**\\n\\t * Unload the engine to free memory.\\n\\t *\\n\\t * This method will be called automatically depending on the configuration. See :js:attr:`unloadAfterInit`.\\n\\t *\\n\\t * @function Engine.unload\\n\\t */\\n\\tEngine.unload = function () {\\n\\t\\tloadPromise = null;\\n\\t};\\n\\n\\t/**\\n\\t * Safe Engine constructor, creates a new prototype for every new instance to avoid prototype pollution.\\n\\t * @ignore\\n\\t * @constructor\\n\\t */\\n\\tfunction SafeEngine(initConfig) {\\n\\t\\tconst proto = /** @lends Engine.prototype */ {\\n\\t\\t\\t/**\\n\\t\\t\\t * Initialize the engine instance. Optionally, pass the base path to the engine to load it,\\n\\t\\t\\t * if it hasn't been loaded yet. See :js:meth:`Engine.load`.\\n\\t\\t\\t *\\n\\t\\t\\t * @param {string=} basePath Base path of the engine to load.\\n\\t\\t\\t * @return {Promise} A ``Promise`` that resolves once the engine is loaded and initialized.\\n\\t\\t\\t */\\n\\t\\t\\tinit: function (basePath) {\\n\\t\\t\\t\\tif (initPromise) {\\n\\t\\t\\t\\t\\treturn initPromise;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (loadPromise == null) {\\n\\t\\t\\t\\t\\tif (!basePath) {\\n\\t\\t\\t\\t\\t\\tinitPromise = Promise.reject(new Error('A base path must be provided when calling `init` and the engine is not loaded.'));\\n\\t\\t\\t\\t\\t\\treturn initPromise;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tEngine.load(basePath, this.config.fileSizes[`${basePath}.wasm`]);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tconst me = this;\\n\\t\\t\\t\\tfunction doInit(promise) {\\n\\t\\t\\t\\t\\t// Care! Promise chaining is bogus with old emscripten versions.\\n\\t\\t\\t\\t\\t// This caused a regression with the Mono build (which uses an older emscripten version).\\n\\t\\t\\t\\t\\t// Make sure to test that when refactoring.\\n\\t\\t\\t\\t\\treturn new Promise(function (resolve, reject) {\\n\\t\\t\\t\\t\\t\\tpromise.then(function (response) {\\n\\t\\t\\t\\t\\t\\t\\tconst cloned = new Response(response.clone().body, { 'headers': [['content-type', 'application/wasm']] });\\n\\t\\t\\t\\t\\t\\t\\tGodot(me.config.getModuleConfig(loadPath, cloned)).then(function (module) {\\n\\t\\t\\t\\t\\t\\t\\t\\tconst paths = me.config.persistentPaths;\\n\\t\\t\\t\\t\\t\\t\\t\\tmodule['initFS'](paths).then(function (err) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tme.rtenv = module;\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif (me.config.unloadAfterInit) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tEngine.unload();\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tresolve();\\n\\t\\t\\t\\t\\t\\t\\t\\t});\\n\\t\\t\\t\\t\\t\\t\\t});\\n\\t\\t\\t\\t\\t\\t});\\n\\t\\t\\t\\t\\t});\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tpreloader.setProgressFunc(this.config.onProgress);\\n\\t\\t\\t\\tinitPromise = doInit(loadPromise);\\n\\t\\t\\t\\treturn initPromise;\\n\\t\\t\\t},\\n\\n\\t\\t\\t/**\\n\\t\\t\\t * Load a file so it is available in the instance's file system once it runs. Must be called **before** starting the\\n\\t\\t\\t * instance.\\n\\t\\t\\t *\\n\\t\\t\\t * If not provided, the ``path`` is derived from the URL of the loaded file.\\n\\t\\t\\t *\\n\\t\\t\\t * @param {string|ArrayBuffer} file The file to preload.\\n\\t\\t\\t *\\n\\t\\t\\t * If a ``string`` the file will be loaded from that path.\\n\\t\\t\\t *\\n\\t\\t\\t * If an ``ArrayBuffer`` or a view on one, the buffer will used as the content of the file.\\n\\t\\t\\t *\\n\\t\\t\\t * @param {string=} path Path by which the file will be accessible. Required, if ``file`` is not a string.\\n\\t\\t\\t *\\n\\t\\t\\t * @returns {Promise} A Promise that resolves once the file is loaded.\\n\\t\\t\\t */\\n\\t\\t\\tpreloadFile: function (file, path) {\\n\\t\\t\\t\\treturn preloader.preload(file, path, this.config.fileSizes[file]);\\n\\t\\t\\t},\\n\\n\\t\\t\\t/**\\n\\t\\t\\t * Start the engine instance using the given override configuration (if any).\\n\\t\\t\\t * :js:meth:`startGame <Engine.prototype.startGame>` can be used in typical cases instead.\\n\\t\\t\\t *\\n\\t\\t\\t * This will initialize the instance if it is not initialized. For manual initialization, see :js:meth:`init <Engine.prototype.init>`.\\n\\t\\t\\t * The engine must be loaded beforehand.\\n\\t\\t\\t *\\n\\t\\t\\t * Fails if a canvas cannot be found on the page, or not specified in the configuration.\\n\\t\\t\\t *\\n\\t\\t\\t * @param {EngineConfig} override An optional configuration override.\\n\\t\\t\\t * @return {Promise} Promise that resolves once the engine started.\\n\\t\\t\\t */\\n\\t\\t\\tstart: function (override) {\\n\\t\\t\\t\\tthis.config.update(override);\\n\\t\\t\\t\\tconst me = this;\\n\\t\\t\\t\\treturn me.init().then(function () {\\n\\t\\t\\t\\t\\tif (!me.rtenv) {\\n\\t\\t\\t\\t\\t\\treturn Promise.reject(new Error('The engine must be initialized before it can be started'));\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tlet config = {};\\n\\t\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\t\\tconfig = me.config.getGodotConfig(function () {\\n\\t\\t\\t\\t\\t\\t\\tme.rtenv = null;\\n\\t\\t\\t\\t\\t\\t});\\n\\t\\t\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\t\\t\\treturn Promise.reject(e);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t// Godot configuration.\\n\\t\\t\\t\\t\\tme.rtenv['initConfig'](config);\\n\\n\\t\\t\\t\\t\\t// Preload GDExtension libraries.\\n\\t\\t\\t\\t\\tif (me.config.gdextensionLibs.length > 0 && !me.rtenv['loadDynamicLibrary']) {\\n\\t\\t\\t\\t\\t\\treturn Promise.reject(new Error('GDExtension libraries are not supported by this engine version. '\\n\\t\\t\\t\\t\\t\\t\\t+ 'Enable \\\\\\\"Extensions Support\\\\\\\" for your export preset and/or build your custom template with \\\\\\\"dlink_enabled=yes\\\\\\\".'));\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\treturn new Promise(function (resolve, reject) {\\n\\t\\t\\t\\t\\t\\tfor (const file of preloader.preloadedFiles) {\\n\\t\\t\\t\\t\\t\\t\\tme.rtenv['copyToFS'](file.path, file.buffer);\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\tpreloader.preloadedFiles.length = 0; // Clear memory\\n\\t\\t\\t\\t\\t\\tme.rtenv['callMain'](me.config.args);\\n\\t\\t\\t\\t\\t\\tinitPromise = null;\\n\\t\\t\\t\\t\\t\\tme.installServiceWorker();\\n\\t\\t\\t\\t\\t\\tresolve();\\n\\t\\t\\t\\t\\t});\\n\\t\\t\\t\\t});\\n\\t\\t\\t},\\n\\n\\t\\t\\t/**\\n\\t\\t\\t * Start the game instance using the given configuration override (if any).\\n\\t\\t\\t *\\n\\t\\t\\t * This will initialize the instance if it is not initialized. For manual initialization, see :js:meth:`init <Engine.prototype.init>`.\\n\\t\\t\\t *\\n\\t\\t\\t * This will load the engine if it is not loaded, and preload the main pck.\\n\\t\\t\\t *\\n\\t\\t\\t * This method expects the initial config (or the override) to have both the :js:attr:`executable` and :js:attr:`mainPack`\\n\\t\\t\\t * properties set (normally done by the editor during export).\\n\\t\\t\\t *\\n\\t\\t\\t * @param {EngineConfig} override An optional configuration override.\\n\\t\\t\\t * @return {Promise} Promise that resolves once the game started.\\n\\t\\t\\t */\\n\\t\\t\\tstartGame: function (override) {\\n\\t\\t\\t\\tthis.config.update(override);\\n\\t\\t\\t\\t// Add main-pack argument.\\n\\t\\t\\t\\tconst exe = this.config.executable;\\n\\t\\t\\t\\tconst pack = this.config.mainPack || `${exe}.pck`;\\n\\t\\t\\t\\tthis.config.args = ['--main-pack', pack].concat(this.config.args);\\n\\t\\t\\t\\t// Start and init with execName as loadPath if not inited.\\n\\t\\t\\t\\tconst me = this;\\n\\t\\t\\t\\treturn Promise.all([\\n\\t\\t\\t\\t\\tthis.init(exe),\\n\\t\\t\\t\\t\\tthis.preloadFile(pack, pack),\\n\\t\\t\\t\\t]).then(function () {\\n\\t\\t\\t\\t\\treturn me.start.apply(me);\\n\\t\\t\\t\\t});\\n\\t\\t\\t},\\n\\n\\t\\t\\t/**\\n\\t\\t\\t * Create a file at the specified ``path`` with the passed as ``buffer`` in the instance's file system.\\n\\t\\t\\t *\\n\\t\\t\\t * @param {string} path The location where the file will be created.\\n\\t\\t\\t * @param {ArrayBuffer} buffer The content of the file.\\n\\t\\t\\t */\\n\\t\\t\\tcopyToFS: function (path, buffer) {\\n\\t\\t\\t\\tif (this.rtenv == null) {\\n\\t\\t\\t\\t\\tthrow new Error('Engine must be inited before copying files');\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tthis.rtenv['copyToFS'](path, buffer);\\n\\t\\t\\t},\\n\\n\\t\\t\\t/**\\n\\t\\t\\t * Request that the current instance quit.\\n\\t\\t\\t *\\n\\t\\t\\t * This is akin the user pressing the close button in the window manager, and will\\n\\t\\t\\t * have no effect if the engine has crashed, or is stuck in a loop.\\n\\t\\t\\t *\\n\\t\\t\\t */\\n\\t\\t\\trequestQuit: function () {\\n\\t\\t\\t\\tif (this.rtenv) {\\n\\t\\t\\t\\t\\tthis.rtenv['request_quit']();\\n\\t\\t\\t\\t}\\n\\t\\t\\t},\\n\\n\\t\\t\\t/**\\n\\t\\t\\t * Install the progressive-web app service worker.\\n\\t\\t\\t * @returns {Promise} The service worker registration promise.\\n\\t\\t\\t */\\n\\t\\t\\tinstallServiceWorker: function () {\\n\\t\\t\\t\\tif (this.config.serviceWorker && 'serviceWorker' in navigator) {\\n\\t\\t\\t\\t\\treturn navigator.serviceWorker.register(this.config.serviceWorker);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn Promise.resolve();\\n\\t\\t\\t},\\n\\t\\t};\\n\\n\\t\\tEngine.prototype = proto;\\n\\t\\t// Closure compiler exported instance methods.\\n\\t\\tEngine.prototype['init'] = Engine.prototype.init;\\n\\t\\tEngine.prototype['preloadFile'] = Engine.prototype.preloadFile;\\n\\t\\tEngine.prototype['start'] = Engine.prototype.start;\\n\\t\\tEngine.prototype['startGame'] = Engine.prototype.startGame;\\n\\t\\tEngine.prototype['copyToFS'] = Engine.prototype.copyToFS;\\n\\t\\tEngine.prototype['requestQuit'] = Engine.prototype.requestQuit;\\n\\t\\tEngine.prototype['installServiceWorker'] = Engine.prototype.installServiceWorker;\\n\\t\\t// Also expose static methods as instance methods\\n\\t\\tEngine.prototype['load'] = Engine.load;\\n\\t\\tEngine.prototype['unload'] = Engine.unload;\\n\\t\\treturn new Engine(initConfig);\\n\\t}\\n\\n\\t// Closure compiler exported static methods.\\n\\tSafeEngine['load'] = Engine.load;\\n\\tSafeEngine['unload'] = Engine.unload;\\n\\n\\t// Feature-detection utilities.\\n\\tSafeEngine['isWebGLAvailable'] = Features.isWebGLAvailable;\\n\\tSafeEngine['isFetchAvailable'] = Features.isFetchAvailable;\\n\\tSafeEngine['isSecureContext'] = Features.isSecureContext;\\n\\tSafeEngine['isCrossOriginIsolated'] = Features.isCrossOriginIsolated;\\n\\tSafeEngine['isSharedArrayBufferAvailable'] = Features.isSharedArrayBufferAvailable;\\n\\tSafeEngine['isAudioWorkletAvailable'] = Features.isAudioWorkletAvailable;\\n\\tSafeEngine['getMissingFeatures'] = Features.getMissingFeatures;\\n\\n\\treturn SafeEngine;\\n}());\\nif (typeof window !== 'undefined') {\\n\\twindow['Engine'] = Engine;\\n}\\n\"","status":200,"headers":{"nel":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}","date":"Wed, 15 Jan 2025 21:13:31 GMT","etag":"W/\"bafybeifh24xe2jzbo2fdj4q3yubdgy7znpguspw35m22uowdhlkgogl6vi\"","vary":"Accept-Encoding","cf-ray":"9028dec42a472a23-CDG","pragma":"public","server":"cloudflare","alt-svc":"h3=\":443\"; ma=86400","priority":"u=1,i=?0","report-to":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=R%2Bhb1DpykIFVIA8GEIMi7B%2Fnociogj0P9iBHlnlfvTsKf0%2BBaBCE8LOoRlHCreHggCUeTQndGjNd1qCdsgAjWQF8XbvrIe880Zx0pkIpHqHFTw3uJlDMCkcOgAjM1sFG1uIg\"}],\"group\":\"cf-nel\",\"max_age\":604800}","x-ipfs-path":"/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky/index.js","content-type":"text/javascript; charset=utf-8","x-ipfs-roots":"bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky,bafybeifh24xe2jzbo2fdj4q3yubdgy7znpguspw35m22uowdhlkgogl6vi","server-timing":"cfL4;desc=\"?proto=QUIC&rtt=14669&min_rtt=14140&rtt_var=2652&sent=23&recv=11&lost=0&retrans=0&sent_bytes=16297&recv_bytes=5203&delivery_rate=708&cwnd=12000&unsent_bytes=0&cid=ce7f2ca09bbdd9bb&ts=200&x=1\", cfExtPri, cfHdrFlush;dur=13","cf-cache-status":"HIT","content-encoding":"zstd","strict-transport-security":"max-age=63072000; includeSubDomains; preload","cross-origin-opener-policy":"same-origin","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET","cross-origin-embedder-policy":"require-corp","cross-origin-resource-policy":"cross-origin","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":true,"timestamp":1736975611714},{"data":{"url":"https://cache.teia.rocks/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky/index.wasm","body":"","status":200,"headers":{"nel":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}","date":"Wed, 15 Jan 2025 21:13:31 GMT","etag":"W/\"bafybeida4phphc2jdxg3bklf5oau77ei7wtvmazobneyfaddatqtxm5swu\"","vary":"Accept-Encoding","cf-ray":"9028dec52b3b2a23-CDG","pragma":"public","server":"cloudflare","alt-svc":"h3=\":443\"; ma=86400","priority":"u=1,i","report-to":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=t2%2F9%2BXwEvFP0S0xpX17Kp4YQqulI2fNUT7eKJ4QXlt0LnVNBAIJqmTlJ1%2BGU%2FLciJ9Fn52oklkbhwvEVyu3pU5IMpSbMXsX2UbLMKFs59OThGyR9uQ0LO4eoEbZkfh2X02Mt\"}],\"group\":\"cf-nel\",\"max_age\":604800}","x-ipfs-path":"/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky/index.wasm","content-type":"application/wasm","x-ipfs-roots":"bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky,bafybeida4phphc2jdxg3bklf5oau77ei7wtvmazobneyfaddatqtxm5swu","server-timing":"cfL4;desc=\"?proto=QUIC&rtt=17192&min_rtt=14140&rtt_var=870&sent=103&recv=57&lost=0&retrans=0&sent_bytes=107761&recv_bytes=8187&delivery_rate=2646367&cwnd=69600&unsent_bytes=0&cid=ce7f2ca09bbdd9bb&ts=351&x=1\", cfExtPri, cfHdrFlush;dur=0","cf-cache-status":"HIT","content-encoding":"zstd","strict-transport-security":"max-age=63072000; includeSubDomains; preload","cross-origin-opener-policy":"same-origin","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET","cross-origin-embedder-policy":"require-corp","cross-origin-resource-policy":"cross-origin","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":true,"timestamp":1736975612866},{"data":{"url":"https://cache.teia.rocks/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky/index.pck","body":"","status":200,"headers":{"nel":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}","date":"Wed, 15 Jan 2025 21:13:31 GMT","etag":"\"bafybeibtdi6olayeooy3z3cj4mgfs23e6p4rlybjsdlgir34l7stdiuzoe\"","vary":"Accept-Encoding","cf-ray":"9028dec52b3d2a23-CDG","pragma":"public","server":"cloudflare","alt-svc":"h3=\":443\"; ma=86400","priority":"u=1,i","report-to":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=W6XFpdXaS%2Fi5nrYzrEr5Lju2P6sZGy6JjzN5YGT%2BMc%2Fw5UcsCRRop9CuOb2BcEq5kzSYZ4VIAMEpWaEBcWwrDLA92%2F70xp6b8y7n5qJVHLhVMAg%2FvSb5L2L0fYqfF9DdQAim\"}],\"group\":\"cf-nel\",\"max_age\":604800}","x-ipfs-path":"/ipfs/bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky/index.pck","content-type":"application/octet-stream","x-ipfs-roots":"bafybeifkihe5da7i36kzekcdiomx3dxsh6cynezodr7ecazctk6it5jsky,bafybeibtdi6olayeooy3z3cj4mgfs23e6p4rlybjsdlgir34l7stdiuzoe","accept-ranges":"bytes","server-timing":"cfL4;desc=\"?proto=QUIC&rtt=17192&min_rtt=14140&rtt_var=870&sent=104&recv=57&lost=0&retrans=0&sent_bytes=108901&recv_bytes=8187&delivery_rate=2646367&cwnd=69600&unsent_bytes=0&cid=ce7f2ca09bbdd9bb&ts=354&x=1\", cfExtPri, cfHdrFlush;dur=0","content-length":"138773360","cf-cache-status":"HIT","strict-transport-security":"max-age=63072000; includeSubDomains; preload","cross-origin-opener-policy":"same-origin","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type, Range, User-Agent, X-Requested-With","access-control-allow-methods":"GET","cross-origin-embedder-policy":"require-corp","cross-origin-resource-policy":"cross-origin","access-control-expose-headers":"Content-Length, Content-Range, X-Chunked-Output, X-Ipfs-Path, X-Ipfs-Roots, X-Stream-Output"}},"type":2,"external":true,"timestamp":1736975623632}],"browser":{"name":"chromium","version":"131.0.6778.33"},"viewport":{"width":2000,"height":2000},"screenshot":"iVBORw0KGgoAAAANSUhEUgAAB9AAAAfQCAIAAAAVWlMuAAAAAXNSR0IArs4c6QAAIABJREFUeJzs3W2sl3X9B/D3QRSIu1AgCU0S23E5kxvB5EZ0De+mE8FqjnpQi8wmsmzO2tiaPKr1oNYW60HrRmtUMzOaK1HWSIE0YO10J0OlmyMW0ICTHDig8n9wufNH4i/6B67vdX6/12s8OD/Y+LzP+J0vv+tzfa/PNwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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e/bsl19+WUTcTVR7WoP7xo0btYuuKVOm3HLLLS6/5df6vWVjX6tde1nBrqxdi4i6gm1kcBnJyCq3N0wPc6uFnhWuLn1IO515f0bTTmfaP61mVnHNZdlt6P3xoj2t7/J4MexMYbVE0sn0JHfGxBp1VSEhIVOnTlV07Kag3XR5+umnY2Nj582bl52drecJfQ8460/Gg8fbLXt1rFXI3a2N0+BumpycnBtuuMGb+lClp59+eu/evenp6W59q06dOq+99lq3bt28L4CWI//+979FZMqUKWvXrvXJMs0SERHx6quv+mrLaAucMWNGdHS091fdZjFlm2zbtq2oqMjZO2U9evT4+uuv9ayrT58+eu4G9+nTR2eDu+LxdlMa3Dt16mSz2V566SVvqgKVnnrqqT179uzatUvn/Lfccosx1Whven9zKSYmZu7cub6qgqSmpuo5s1o5aszdqfztl19+OXz4cLNmzXy1wJCQkBdffDEnJyctLc1Xy/SYib/dU0895cPLPBH5448/zNpt8vPz77nnHm+GNQsJCZkyZYr2Aq+XV31VX/Z6+OGHddbvT5486c1KFQyLfQ+SX6tdi4j3Feynn35aezjL3Qo2DGN6mFst9Ey/uvQt7XGZmlDF9Xct1yza2cqylwlBdrxYMJF0Mj3JnbHI1dCUKVM8a22vasKECWfPnj127JiXy3EoOjr6mmuusf+8tLR0xYoVbi3KylfHVSvk+mvjfq2QV0WDe3Vt27b18rnySuHh4S+++OIdd9yhv4sim802ffp0H+7KIlKrVi0RmTlz5vjx4/fu3evDJRvJZrPNnDnTt1tGW+wzzzyTn5+/atUq3y7ZAGZtk4sXL27dutVZ9+vdunULCQnRM3iAyw7cNT169AgNDdVTXVN08Hfy5ElvhsvzTHx8/Msvv9yrVy+fLC0sLGzatGm33XabwzH6qklMTHzyySedTS0oKPj+++83bNigdR6Xm5sbFhYWGxt75ZVXDh48OCkpSbHkoqKizMzMff/P3r17c3NzvfhnqYSFhf373//24Q3/H374weU8Fo8aP+1UFhnQoqKi4tNPP33uued8uMywsLCnn35aa581959p1m/XrVs3/VVPnb788kvfLlC/pKSkrl27erkQ7V7v888/v2fPHm/GH6sctemGG264++67dX7r9OnTHq9RQR37VZPf3dj3SfL7tnat9RXgVgUbRvJrmAdi6Jl7delz8fHxImJWbcR/WVc16ETE37Vcs1j8ZBF8x4sFE0knc5NcwQpXQzfddJPLQXR1evLJJ/3Uy/GQIUMc9l+0fv36s2fP6l+Oxa+OKyvkbtXG/Vchr4YG9+ocdgJ18eLFnTt3Hj9+/Ny5c0VFRTExMZdffnnnzp1ddiickJDQr18//Z1V3XPPPf3791fMUFJSsnLlypSUlN27d2uFqVev3qWXXtq1a9cbb7xRMSxA7dq1//nPf44ePdp+TGcv/fDDD1u3bq36SVhY2MSJEx3OvHPnTvXWcHbDc+LEiXraZwsKCn7//ffTp0/n5OSEhobGxsZefvnlnTp1Uj9J/fzzzx84cCDg7kbo2Sb2G0REvN8mKSkpzlYdGRnZvn37auM62rPZbC4rbZULvPLKK7dt2+ZygYoGd61x2XjODueLFy/+8ccfWVlZbkVKs2bNtAFzXPbg+fjjjzvr8XDTpk3PPfdctervxYsXCwsLjx49umzZsqSkpJkzZzocOmnjxo2PPfaYYXXWRx99tEuXLi5nO3PmTFZW1tmzZ0tKSurVqxcfH3/ZZZfZj0Wem5u7Zs0al0szIGq0ZzNdrsIZf+xUij1qzZo1Ve//exPvGvWl17JlyyZOnGjfWWRRUdGuXbt27Nixa9euU6dO5eXl5eXl1alTJzY2tkOHDoMGDVI0wiYmJmpPoCxfvtxl8fzK4N9Oo/UZ6syOHTvWrl27b9++7OzsoqKi8PBwrVvGhg0btm7dulWrVp07d46Kiqr6lezsbBM7EXY4NPfRo0d37dqVm5ubl5cXExPToEGDq666SjvfKdStW/eFF15wtj/rodXv69evrz0yr5OfHqhRxL7D5NcZ+75KfmddrPqpgq0/uHRml0Ua3YypcvuEwzCvTHIR8TjMXSa5B6GnJZ6I+Cn0zL269BOHZzTPTmf6z2guq7gi4lnWGVzFNZHFTxZGHi/GnCnUiaQOJdOrYeokt49xEfFVkqu5lT9alU+xNP35o4mLi9NG0lI7cuTI7t27T506dfHixfr16zds2LBz5872A42Ghoa2atVK56rdctNNNzn83N3+ZExsdNKpefPm7tbGecLdKg4fPvzee++tW7fuwoUL1SaFhoYOHz78/vvvv+SSSxRLGD16tM4qUfPmzSdMmKCY4ddff33ppZcq+8HUnDt37ty5c3/++ecXX3wxaNCgZ5991lmgJCQk/M///M+nn36qpzD6/fzzz9U+iYiIcHa6ysjI0MaIcEvbtm3Hjh2rnmfnzp3vvffe1q1b7R+FjomJuf766++///769es7/G7t2rWnTp06ZsyYAHpt0OU2UWwQ77eJuv26R48eLhvcO3XqVK9ePfvP9+7da3/K6dOnj8sG9yuuuELRvGJ8fzLOHDhw4P33309JSfEsUu666y6XDe5XXHFF7969HU7atWvX448/rt7PN2zYMHny5Llz59qfHXv37t2tW7ctW7Yovu4rnTt3vv322xUzFBUVffXVV8nJyXv27Kk2KSIiokOHDtpG6N27t3YVvWLFCpe3G42JGq1jSh+mjfc7lWKPSk1NTU1Nrfxfn8d7NRcvXvzqq68eeeQRESkuLhaRdevW/fzzz+vWrdP+t6rz58+fOnVqz549ixYtuuaaa6ZNm1btmqSS9hCK6Q3u1Wg/nBZQ/vjttH3SYQu1NvroM888o/V46JB2cq9Vq9aVV17Zp0+f66+//rLLLhORhQsXlpWV6fj3+V1paemiRYu++OKL48ePV5tks9m6du366KOPtmvXTrGELl26XHfddR5fuGrjUM2dO9fh6ay4uDgtLe3gwYNnz57Nz8+PjIysX7/+FVdckZWV5dnqFBSxryf5FbHvv+T3awVbf3D5KruMYUCV21eqhbkiyd0Nc3WSexx6ldvWgNAz8urSMF5WRfSc0fRUcdV9mFikimsiThZVGXCmUCSSzlAytxqmP8m1GBcRnyS5u9T5o93F8bJGXdWDDz6obsHfvHnz22+/bd9NTUhISOfOne+77z7FY4K+kpiY6PA18bNnz7o1uKO5jU46NWzYUGdtXHua038Vcns0uKssWLDgnXfecZZopaWl3377rXY4NWrUyNlCrrzyysjISG2YL7XHHntMMWj1/Pnz33rrLcXXKyoqVq5cuXfv3g8++MBZuo0ZM+Y///mPw8qulT3++ONaxzgOaSNSfvHFF87uqOfl5S1atOinn3564YUXnD1g2KpVq9tuu83E1+Td5XKbKDaI99vk6NGjR44c0YZKt5/as2fPjz/+WF1+Z7dJX3nllXfffbfah0lJSXPnzlUvUNGBe1lZmfbMi+nmzZv34YcfOutvR0+kaP1mRkVFaScMh7R+ch2aMWOGnpPZli1bVqxYMXToUPtJo0ePNuZq5LHHHrN/Sr1SamrqjBkzsrOzHU69cOHCli1btHLOnTu3adOmgwcPXr16tcuVqg8rl0eWzsNKRHyYNj7ZqdR7lMEWLVp03XXXrVq16scff9Rq8Hq+tXbt2mefffaNN95weBHYoUMH7VLKviJuFvUP56vfrl27ds6eK5kzZ46itb1SWVlZWlpaWlraW2+91aVLlyFDhugcVMPfcnJyHnnkEWdPxFRUVGzdunXcuHGTJk1Sv146btw4L58Us79JnJmZOW/evLVr15aUlHizZP0Usa8z+RWx74/kN7iCDVNUDXOdSa4nzNVJbv3QC8qd3/uqiM7aSHBUcU3EycJgikTSGUqmV8NMSXK3uMwfEfHV1ZA2yq6z/V/z1ltvLViwwOHVYnl5eVpa2qRJk7ShR//xj39o9wP8wdnj7StWrHCradvcRif9rFAbd8j1iIU11vvvvz937lyX9w8PHz6sDbDuTEhIyJVXXulydW3btu3bt6+zqcnJyerW9kqZmZmK8sTExAwaNEjPcqyje/fuipeS5syZ8/nnn3/++ecu3187f/78s88+q+hTYsyYMXXq1HE2Fqil6Nkmel7o07lNHE7asGGDs+fcO3XqVLt2bfWqHTa45+Xlbdu2zf5ZxVatWmkPEiooGty3b99uhWuSOXPmzJs3z2Xv9upICQkJCQkJ0ZrdnXH2JMXWrVv379+vs7TffPONw8+TkpLUT5F4r3fv3r1799YGoHdo/fr1Tz75pLPWdntHjhz54IMPMjMz1bOpDyv9R5bLw0p9ZOk3Z84cX+1U6j3KYAUFBePHj//qq6/Onz+vv2av3YZxttlDQ0NDQ0Ovuuoq3xXTKzp/OO9/O0VyevDez++//z579uy8vDx3v+hzxcXFDz74oMv3T8vLy+fMmaO+NG3btq0ibdxVXl7+2muv3XnnncnJyUbW7xUP0OlPfmex7/PkN7iCDbNUDXO3vqgOc3WSWzz0gnLn90lVRGdtJNCruKbjZGEw9QWsu6FkSjXMlCTXz7AatebWW2+99dZbFTdRFixYMH/+fJdXiytXrly5cuUzzzyjp+QeqFWr1l/+8heHk5YsWaJ/OVZodPKAWbVxh2hwd2zLli0ffPCBzplTU1Or9ahYjc6j19mkoqKiV199VWdhtO4m/vzzT2dTfTtGtgEUw4xs3rzZrR5ySktLp02blpOT43BqbGzs4MGDtfuNFmfwNnE4SdHgHh4eru56Oy4uTuvlo5o//vhDq0zYT1J3+K4+bbv12pQ/bNy4cePGjfp/Fy8jxdlYDm49crJ7926Hzx2EhIR4P2Kh2qhRoxSj0GRnZ//973/3+VgULg8rt44s9WGlPrJ00vYoX+1Ulmpw94Z6XNxmzZoZWBan3EoDL387xSWB4o0661uwYIH+AaZeffVVdS+N6if+9Ltw4cJjjz325ZdfGt8LsGIIH/3J7yz2fZv8xlewEYgUYa5OciuHXlDu/EbWb4Ogims6ThYGU/debXoo+ZvHSa6TkTVqrbvCQYMGKZ5eTU9P1/mMrGbNmjULFy7UP79+ffr0cdjX7p49e7RBoXWyQqOTu0ysjTtEg7tjb7/9tlvzq3uhsh//rZrw8PDrr7/e2dRly5ZpXWLp9/333zub1L17d/+9uuJzUVFR/fr1czipoqJC60zGLefPn3/nnXecTb355ptvvvlmd5dpMOO3icPPtS47nN0zVHdM5qw/GW0cre3bt9tP6tOnj2KBnTp1ioiIcDbVrBFTK7399tuGRUpUVJSzTuXcGgC9vLxc6zXI3hVXXKF/Oe6Kjo7u27ev4nWfV1991R+9grg8rNw9stSHleLI0sndPUq9U7k8SQUKLUOcsciTa0b+doqRHgPudbdKxcXFn332mf75i4qK1Bft6sHq9Zs+fXrV3mANo4h9t5JfEfs+TH6DK9gIUIowVye5lUMvKHd+I/9RgV7FNR0nC+OpB9w2PZT8zeMk18ngq6G2bds2bty4cePGzmaYM2eOu428H330kT8ewfbJcKkWaXRyl1m1cWdocHdg3759Lod8rEZ9kW8/GHE1V111leL8Zz9EkkuKe3fh4eGKm9tW06tXL2cDqe/YsSMjI8ODZS5fvtxZByMdO3bs2LGjsyEdLML4beJwgxQXF2tjUDj8lmcN7toT7g6X2bNnT8UzAor+ZE6ePOnWjVyfS/9/3PqWx5GiuPHg7puAzub36wHSo0cPrfcPh1OPHj3qZW/Lzrg8rDw4shSHleLI0sODPUq9U7k8SQWKvLw8xSAlDsfSMZjBv53iknjs2LHqN4csy+GgWGorV65UXM80adLE+0vxb7/91oPamk8oYt/d5FfM7H3y79u3z/gKNgKUIszVSW7Z0AvKnd/I+m0QVHFNFygni2A6XhSJZHooGcDjJNfD+Kuhbt26Kabu27dv8+bN7pbn7Nmza9eudfdbavXq1XPY2FJaWrpy5Ur9y7FIo5NbTKyNO0ODuwPqvncdOnTokKJ/sZiYGPXX1eM9OnzgV+3IkSOKDqFatGjh7gLNomi39fhYKikp+fXXXx1OstlsNputV69eni3ZGMZvE8UGcdb3XJs2bZydtMLCwhzu8GVlZVrV6uDBg+fOnas2NTo6WvGel+IIMv3xds9Ooh5HiuJb6rca7Tlr9VYPK+oldVXGrVqCWww+rFweWWo+36lcnqQCiOIiUHFj2zAG/3YHDhxw9vJmWFjYa6+99uijj1qh1cYt69atc/crFy5cUD/t4uXL5sXFxfrffPc5df+2biW/4g1I75N/zZo1xlewEbichbk6yS0beh7v/FY+cXtwRvPmiA70Kq7pAuVkYUprjJ8oEsn0UDKGZ0muh/FXQ+q64urVqz0oj2fVWrUhQ4Y4bChfu3atfRuLgqUanfQwtzbuDA3uDnjQwF1RUaEY1NjlCADt2rVzNunIkSMe9FZcXl6uGE8jPj7e3QWapU2bNs4muRzUW0H93fbt23u8ZAMYv00UG8RZc3ZISIizltOuXbs6fMIiPT29qKhI+7tb3bhHRkYqSujBGFm+5UGeeBMpitZGd9/dc1btcDmAuzcUu7dn9W/v12vBqPH5ThUQg0XrpLjZbLPZjC2LA8b/dsuWLXM2KSQk5K9//evixYsfeOCBBg0aeFAwU3j20tK2bdsUUxMSErwokfz4449nzpzxZgneUD+W6FbyK642vU/+7du3G1/BRuByFuYuk9yaoefxzm/lE7fBR3SgV3FNFygnC1NaY/xHkUiBWxPTz+Mkd8n4GnViYqJiqsft5uqXMzzgk/5krNbopIe5tXFnAqYvbyPt3bvXg28VFBR4/GqMoo+XhISETZs2ebZYZwLoJqqzbuBKSkrUr2ipqQdhb9WqlcdLNoDx20SxQQ4ePHj8+PEmTZrYT+rZs6fDG5jOuueu2sielpZ27bXXVpuhT58+7777rv0Xu3Xr5uxhitLSUp8fPu7yLE88jpSLFy9mZWVdeuml9pPat2+v/wnxiIgIZ6PZHDt2zN1S6afo+bG8vFx95PpjvdaMGoN3KosIDQ1t3Lhx/fr1o6Oj69SpExYWFhISYl9ft0IbhILxv93nn38+atQoxZNE0dHR48ePv/vuu5OTkxctWuTwfqd1VFRUHDx40IMvqr/l5eBdPn86yS2K2Hcr+RWx75Pkr5nBhWq0JNf6nfBTmFsz9Dy+urRIf2gOGXzJHOhVXNMFysnClNYY/3GZSAFXE9NfJ/drtdzgSkVISMjll1/ubKo3V6lHjx4tKSnx1Qi6LVu2bN26tf3nOTk57j6GaKlGJz3MrY07wxPuAAAAAAAAAAD4AE+4V1dcXOzZmwiK19jVIiIifDJMs361a9c2cnUei4mJcXZT9ODBgx5vcO3rpaWlzrqfc3bn3wpM2SbqDbJhw4ZbbrnF/nNn3X716dPH4edVx0rdsmWL/Qxt2rSJjY217whP0YH79u3bFaNWGqCoqOjs2bOefdfjX3Pnzp0Of7L+/fu/8cYbOhfbu3dvZ+8NuDuKkX6RkZGRkZHOph4+fNgfw7gHXNSYslMZz2azdejQQUuSDh06tGrVqnHjxu520mo1pvx2Z86cmT59+qxZs9SzhYWFDRkyZMiQIdqT4EuWLFm6dKnHpfWfc+fOuTtiqiYzM1Mx1Zv3uMvLy9X91RjAWey7lfyK2Pc++T2uXQdWcMGeFuZGJrkHoaclnjZ+nT+KZPzVpQE8PqN5848K3CquRVj/ZBF8x4vORHIYStaphhmf5GrG16jr16+v2O096wVaU1FRcfz4cS/7NqzkrD+ZFStWqEdxqMaCjU5qVqiNOxTY167+kJOTU1FRYeQaGzZsaOTqAmhAmLi4OGeTTp8+7eiW4aUAACAASURBVM2SS0tLFX3cK9ZrOlO2iXqDOOvGvXnz5vZfbNasWdOmTat9WF5eXl5eXrXBfd++ffaFsdlsDrtxVzS4m96Buyn1JGdjtjRp0uTmm2/Ws4SQkJC7777b4aTs7GyP3+BzSb2nZWdnG79eC0aNdSrffhIXFzdp0qQlS5Z89NFHH3300YMPPtivX79LL7000FvbTfztkpOTX3nlFZ2V44SEhISEhEceeeTHH3+cPXu2ehxj43l8DzU3N1cxtX79+p6WSM6ePVtYWOjx131CMVSXzuRXxL5Pkl+rXRtcwYa5qoa5wUnubuhpiee/0DP+6tIAVHEDkfVPFkF5vFQmkruhZIVqmIlJrmB8/qgriidOnPBm4W6NZaoQGho6ZMgQh5Pc7cDdgo1OalaojTsU8JevPqceTsQfrDDKvDU5HFpT4/3hpLhoDwsLcziysxWYsk3UG2Tz5s3O7ujaN4VfffXV9rPt2bNnz549VQ+9ioqKrVu32s/Zu3fvap/ExcUpbgg7uxlgGEVjq/+sWbPm5MmTDic99dRTXbp0cbmERx99tGPHjg4nfffdd/6rBCseb/fJHu5MYEWNKTuVMWrXrv3QQw8tXrx4zJgxjRo1Mrs4vmfib/f1118/9thjzpLBodDQ0AEDBrzzzjufffbZwIEDrTDkrDeH5IULFxTZ5U0fo766TPKGIvZ1Jr8i9n2S/MbXrmEiK4S5u6EXGhrqv9ALyv3fmlVcb7LOr1Vci7D+ySJYjxctkdwNJXOrYVZIcmeMzx/F1aL3F4y+2uevvvpqhzcG0tPT9+3b59aiLNjopGaF2rhDNLhX56cuCxR8NUJC8FF0feP9ca5egmV73TFrmyjWe+HCBWejhNv3KuNwxNRNmzbZD22amppqP2fv3r2r1TacdVwjIidPnnT31OJzHr9c5uVKHY4uq/2Ob7/99sSJE53d52vZsuUrr7xy1113OZx6+vTpr776yqeFrV48xVT/NbgHVtSYslMZID4+/qOPPho7dqxl73d6z9zfLjU19fbbb//ss8/cree0bt161qxZ8+fPV1xjG8az/mS0+7hFRUXOpnqz1+Xn53v8XV9RxL7L5FfHvq+S3/jaNcxinTC3TugF5f5vzSqux1nn7yquRVj/ZBGsx4uWSJ6FkinVMOskuUPG54+6yc7LC0Zf/XOc9SezZMkSdxdlwUYnNSvUxh2iD/fq3OrbyCcCpYMX4yl+C+/v8aqXYNkHHMzaJuoNkpKS0r17d/vPqz0lUbduXYfPTTh8Dt3hh/Xq1evQoUPVzgG7du2qKJWizMYwPk80P/74Y//+/fv3728/KTQ09L777rvnnnv+/PNPbaDw3NzcsLCw+vXrd+jQQfG6QHl5+YsvvujXd7XU7yf6b2MGVtSYtVP5VVxc3HvvvWfl8TN8wvTfrrCw8M033/z666/HjBlz8803u3W/v23bth988MGHH374wQcfmHiKdDYigh7BXd1SxH615Hcr9kXEJ8lv+s4PY1gtzC0SekG5/1uziisinmWdv6u41qFtQK3Tdvupnp0sfLsNg/J4qeRxKBlZDbNaktszfidRX9CVlpZ6s3Cf/HPq16/vcKi8ixcvrly50odFMrHRKRDR4G6+4uJixdR169YpbkR7xrIvXFSjeJCtbt26Xi5cvQT1j2Iis7aJeoOkpKQ8+uij9p83adKkYcOGlf189e7d2/4meX5+vsMH5LOysjIzMxMTE6t93qdPn6oN7ldddZWiVIoyB7eKiopp06bNnTu3ffv2DmcIDw/v3LmziGj/1bPAl19+eePGjb4u6f+P+nEP7/dwZ4gac9lsttmzZ7us1peVlf3xxx8bN248ePDgkSNHcnJyioqKLly4UK1DzN9++0391ieys7Nffvnl999/f8SIESNHjtR/QRUSEjJhwoTLLrts2rRpZlWIPf5xa9WqpbisDYIj0WXsVya/W7EvIv5OfgQNPWGuJbm2XxkW5gEdeqjGT1lXc4JO24Ai4vIyQf8GFJEatQ2951koGZNI+pPcPsbthyQNmmq5+irVy3+jT54IGTJkiMOnUtauXetBDzzWbHQKRDS4m0/9fnStWrUyMjIMLI6FKPo+Vvf1rIfiOC8pKfHyLqX/mLJNXG6QzMzM7Ozsxo0b20/q3LlzcnKy9neHN11TU1Od3UHdsGGDfYN7UlLS+++/r/29YcOG9kOwakpLSzdv3qwoc9DLz8+fNGnSjBkzHPab7+6iZs2a9dNPP/moaE4pOnzwa4M7UWOu4cOHd+rUSTHDxYsXFy5cuGDBgpycHAPLFeTOnTv3ySefzJ8/v2fPniNGjOjXr5/Ot4aHDh2alZX13nvv+b+MDnh8SaMOEHX4BIrK2Hc2YopbizIm9hFM1GFuepIHaOjBXiBWcS1F63vBJ9tQ24AiUtO2oU94Fkr+TiSLJ7lZ1BVFLy8Yo6Ojvfm6xof9yVi20SkQ0eBuPvU4vw0aNDCwLNZy+vTpiooKh6+cNGzY0Jslh4WF1atXz9nUU6dOebNwvzJlm+jZIBs2bBgxYoT95506dapscHfY7YziOfQNGzaMHj262oft2rWLiorSaoqKgX22b9+uOE/UEAUFBU888cTw4cMnTJjg8Vg3v/3228svv2zMQaEecT42NtZP6yVqTGSz2f76178qZsjLy5s8eXJaWpqBhapBKioqtE5F69evP2LEiFtvvTUuLs7lt8aNG5ecnGzKIBmKA0pNnYFnzpzxtETWosW+dsHscfIbGfsIGuowt06SB1zowaGAq+JakPfbsIZvQF/xIJS0RBIRn4dSoCS58dRXqR7XTjVRUVHefF3rcahly5b2n585c8ZhP70uWbbRKeAwaKr5zp07p7hj1rRpU296LA1oRUVFJ06ccDgpISHBm82SkJCgeHPH2UqtwJRtomeDOIvyDh06aH9p1KhRkyZNqk2tqKhQNLinpaXZv/8REhJS+YbjlVde6ey7Nbk/mWpWrFixZs0ad79VWFj4ww8/jB8/fvLkyYad/M6cOVPtPcSqEhMT/dQFM1FjojZt2jRr1kwxw4wZM9yq2Qd3P93+c/bs2Y8//njEiBEzZ86cOXOmeucMCQm5++67DSzd/6lbt66e1jF7LVq0UEwNmgb3Sh4kvymxj6ChDnN3k9yAMK8aei5PxyaGHhQCqIprWZwsrEN/KGmJ5I9QCrgkN0xOTo7iKlVdyXTJ+6fKhg0b5vDz5cuXK4qtYNlGp4BTQ1tyrWb//v2V7ZLVREREtGvXTuvusAY6cOCAwx7EQkNDExISPL6p6/AGYCWLP8Bi/DbRs8xNmzaVlpbah2+bNm1q1apVVlbmsB/APXv2KJo5Ll68uG3bNvtXHTt37rx+/XoRUYzVToO7pmnTpv/617+q9cyTk5OTlZWl7UVRUVGhoaEFBQX5+fn5+fnHjh37888/d+/evWPHDnVvV/5QXl5+9OhRZ/W88PDw5s2bZ2Zm+mPVRI1ZFMMwaKM1/Prrr/qXVrduXbfGxEM1Fy9eXLx4sYgsW7bs3nvvHTNmjLOhjPv37x8aGmrKi5/Nmzf34ArfvoOyqg4dOuRdoSxE62lNkfyWin0EDXWYu5XkRoa5Fnpa4omINUMPDjms4pJ1blFfJrABTVE1lNSJpF2n+DaUAjTJDVBWVpaVlXXZZZc5nBoZGdmoUaOTJ096sOTo6GiHHfPqpHVDNHjwYIdTly5d6vGSrdnoFHBocLeEXbt2OWtwF5FevXrV2Ab3tLQ0hx1/a315e3xMJiUlKaamp6d7tlhjGL9N9GyQgoKCHTt2dO3atdrnderUadGixb59+xzu4S6bxVNSUuwb3LUH28PCwlq3bu3wWydPnty/f7/LMge9Vq1avfXWW5dccknVD3fu3Dl58mTLPs65d+9exYMVffr08VODO1FjlubNmzubtHr1aneX5vF75aimpKTknXfe2bFjx7/+9S+Hj7HUrVvXm9q2Nzp27LhlyxZ3v9W7d2/F1AMHDnhXKKvQYl9EAiv5EQQCOsy1xBMRa4Ye7Dmr4ooIWadTIF4m1Bx6qmHaw8K+DaWATnJ/O3DggLMGdxHp1q3b8uXLPVhsq1atvCnVNddc46xPm927d3tz4WzNRqeAQ5cylrBp0ybF1JEjR9bYXmUUw50PGjTIs2WGh4f369dPMYP65zCd8dtE5wZx1qtMmzZtRKR9+/b2k7QH1d1dZrt27UJCQq644gpn98x5vF07777++uvVqtFZWVmPP/64lavRO3bsUEwdMmSIn9ZL1HjPYTd/LlXbRas6cuTIkSNH3Fqaw4Ei4LH169f/5z//cTbV4WMvBtCe6nJLXFyc4rGGioqK4HisoTL2Ay75zeVZdqEadZi7uzSzwtyaoYdqFFVcsk6PevXqBehlgolMOVOoE8kfoRQcSe4n2i09ZwYMGODZYvv27etpiUQbK9XZcKnePN5u5UanwEKDuyWkpqYq3syKi4sbOnSosSWyioyMjKysLIeT2rRp47CXEpeGDRvmbGTkjIyMjIwMi/dGZ/w20blBnDVzt2rVymaz2T+Nnpubqz5vicjRo0ePHj1a7cOIiIgWLVpo7fhulaRGue++++x7Ov7kk0/y8vJMKpEu6hNt69at/VR1c3lYeXBkKQ4rt44sSykuLq6oqHA4SfGPVXD2qqz23oy7Qx97XNmFMz///LOzSREREcaW5b/at29/+eWXu/WVW265RXGpnJmZmZub64uimcxh7AdE8vubIrg8zi5Uow5zd5dmYphbMPRQjaKKW8OzTqf77rsvQC8T/MqaZwpFIvkjlIImyf1h27ZtiqlJSUkeDDJks9mc9QajR2xsbO/evR2+xFlSUrJy5UqPl2zlRqfAQoO7JRQXF69atUoxw6OPPhofH29giayioqLiu+++czZ18uTJirOCQ9HR0Q888ICzqUuWLFmyZImbZTSa8dtE53L27t17+vRp+89btWrVvHlz+2zduHGjolpTyeFD7q1bt3bYn0xpaWlpaWlQ3h11l8M7z7///rsZZXHD/v37Dx48ePDgQWczTJkyReurzrdcHlbuHlnqw8qtI8tSysvLnd0eVo996ozi0q5+/fr169fXv6gePXoE2aM0VpCTk+NsUnFxsbFl+S+bzTZp0iT988fGxt55552KGdztk9SynD1wZP3k9zdFcHmcXahGHeZuLcrcMLdg6KGaAK3iWsegQYPYhvaseaZQJJI/QiloktwfduzYce7cuXPnzjmcGh4efv/997u7zBEjRnjQTF9p6NChtWrVcjgG6dq1a8+fP+/xkq3c6BRYaHC3iq+//lrR+BgTEzNr1qyoqCgv19KgQQMvl2C8xYsXl5SUOJzUunXrJ598Uv+iQkNDp02b5uxVqcLCwmXLli1btszTkhrH4G2if2kOG8dbtGhxxRVX2H/usj8ZxTITEhIcjga+ffv27du3FxYW6itv0IqNjXVYKwqI5/jU970SEhJeeOEFd0/wGof7YSX1YeXWkaU+rDw4sizF2bPAbdq08aCvRmfVVq0zxG7duulcToMGDf73f//X3bUHvaioKIe1cP0cJq0mOzvbmyV7Y+DAgTofm6pVq9a0adPUj4B5+QSQRTiL/UBJfn9TvMTgWXahGnWY61+Ol2EerKGHSgFdxbUCbQOyDR3y+ZnCr4nkj1CySJJbU3l5eXJycnJysrMZhg0bZj/4nEJ8fPzDDz/sTZGGDRvmbJKX/cloLNvoFEBocLeKffv2rVixQjFDhw4dPvzwwyZNmri7ZK2btrvuumvhwoXjx4/3rpgmOHfu3GeffeZs6u233/63v/3tb3/7m8shsKOjo2fNmqXoJOuLL744f/68l3cCjaFnm+gZE1znNtFfMId9uTRs2LBTp07VPiwvL3fW53s1W7dutQ/6Jk2aOHzQICUlhf5ktHvsDj9/6KGHrP9C9Hfffffdd9/l5+c7m2Hw4MGzZs1SNGdXEx4ePnjw4M8///yZZ55RzKY+rPQfWS4PKw+OLEtxNvxOSEjII4884qulaU9tDB06VM/bXU2aNJkzZw6969rr06fPDz/88MADD3i2cWw221//+leHky5evKh4E8UA06dPHzhwoHqe8PDwF154oVevXop5Nm3aZO4/xFcU0RQQye9viqjxLLs0PXv2THJCfYs3+KjDXOd7ut6HeRCHHjTqKi5Z5xInCwWfnyn8mkj+CCWLJLllLVy4cOHChc6mhoSEzJo1S8+diYSEhISEhHnz5kVHR3tcmPbt2ycmJjqcdPr0aZ0tLWqWbXQKIDV0KE5rmjt37tVXXx0TE+NshhYtWnz99dfffPPNp59+qn69SEQuu+yyPn369O3bVzvmtSMhQLva+OSTT2688cbGjRs7nHr77beLyNVXX/3uu++uWbPG/l2wmJiY66+/fuLEibGxsc5WkZWV9emnn/q64H7kcpsoNoj/tsmmTZvKy8vtnz4ePnx4tU92796ts8/cCxcubN++vUePHlU/7NevX506dexnprVdc/r06aKiIvtN1KNHj+++++7XX3/NyMjQ+v8pKioqKyuzX0JpaWlBQUF+fn5ubq7i/Up/0JraP/300wcffNDZPNddd1337t0//fTT1atXHz58uNpUm812+eWXa+P09uvX7+qrr9ae2dm+fbt61erDyuWRpfOw0v516pJY2R9//OHs8Y3Bgwdrt8dee+01h7dMmjZtWrt27arj2m/evNnZirQd+NVXX33yySdPnDjhcJ7atWvffPPNDz30UGRkpEf/muAXFxc3fvz4sWPHbt++fd26devWrTtw4ICeL15yySVPP/20s8uGbdu2FRUV+bqwbggLC5s1a9a6des++uijXbt2VXtHMCQkpHfv3o8//nhCQoJ6OR9++KGfS2oQZ7Fvn/wWjH0DKIKrMrv0B5embt26c+fOdbbM8+fPDx48uLS01LuCBwx1mKuT3Ldh7lnoaXfxrRx60KiruFovYTU561zStkxlLasqThb+OFNUTSQRcSuU1ImkXcfp+Ge5wZskr127togEd7VcuyHx22+/9e/f3+EMderUeeutt7755pv58+c77JE8Li5u9OjRt956q/rulx6Kx9uXLVtWXl7uzcIrWbPRKYDQ4G4hp06dmjlz5uzZsxXz1K5de/To0XfeeWd6evqWLVtOnDhx7v9j777jorj2//HPrrQFQUGxERSwYUUjNowaNQoavRr1mhvQWBI1GruxJTH2ls9NjFFjjLlRYzRFxRJjFwtYEDsWxIZYABFQOkvZ3x/zeOyPLztzdvrMLq/nH3nEnd3Zw8w57/OeszPnvHpVUFDg6urq6urq5ubm4+Pj7+/v5+dXs2ZNBcsur8LCwgULFqxfv57wTJaPj8+SJUuKi4tv3LiRmpqamZmp0+m8vLx8fHxatWpFnoCirKxs6dKltpUxWD0mbAeE3iTTMcnJyYmPj7dcQ8Oy0+U4nwzt/PnzFQbcGe+/ePHixYMHD/iU126VlJRER0f37t3bcpOXl9fgwYO578pkMj19+jQxMTEuLu7YsWOK/fi8bdu2Pn36EO4QdHd3nzhx4sSJE1NSUtLS0ugaXrVqVXd39/r16wt7KlaZUEP/jCSgeBpx8eJFwgR8AwYMoFdJiomJefDggdFo9PDwqF69eq1atVq0aOHp6bl9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9ts7F87Ozu+99163bt0oilq5cuXp06f57uGtt96aN2+emDJI6IMPPvjkk08MBoOAz9apU2fevHmDBw+eP39+UlKS+ML4+fmVD2ejR48eP3681cZvbttHjhyZOnUq428YNWrU6NChw4ULF4QVzNHRkb43itHff/8tbLdmHTt2/Pzzz+vWrStyPyKZ29TAgQNnz57NdtcPG71e37179+Dg4MWLF588eZLvt9MtVGTzLN9CuTRPjRx5wewvRCtZAQgRQ2TQIEcMSYIGmU6n++CDD8aNG8d9fM2Sq6vroEGDUlJSyKNskpw4egpd7i1X+3Q63ejRo8eMGSNy5gdfX98JEyaMHz/++++/37FjB/cPaqpzF0Cn040bN2706NHcR6gpigoODt66devq1at3795tTg/UHXBXtyYoGQrMBg4cSFHU5MmThQ1o+vn5LVy4cOjQoUuWLGEb3RagVatW5gF3YT0mY3cpuMc0d5cURVntMUePHj1q1ChhzVmwgQMHSnISKYqS6jz6+flVGHDncqVgvkywrZRPlayYI3Py6eLiMnPmTLrJ8xUSEtK2bdvly5cfOXJEWDG030107ty5Zs2alq/fu3eP1++XZmJapXzRVcD1u3wDc8i+QHKy1nC1KgzdUuiHvcQ0FrqlUBQloLGIYT+LptJTZnt5eW3atEnAUA7Nyclp+fLl9GOA9G/1X3/9tYChHLPg4OC1a9fyffirXbt2EyZMmDBhgiQj3TVq1KhRo8aqVat69erF64OjR4/+9ttvtTDa7uLisnLlyunTp4vM4Js2bbp169YuXbqILxKdSdMhYM6cORMmTOCSQpkjWkFBAWEWHbZbDLjo0qVL1apVGTc9e/bsypUrV65cEbxziqK6deumhQsA+vm+kSNHfvHFF3xH283c3NxWrVrFtkAQAd1CpWoaHJunRo68YPYXopWsAOSIISZoECKGOWgI2zMXbm5uq1evnjZtmpghNlpZWZnVm7BUabka5+DgsHz58k8++USqeZb1ev3169c5vlmDnTsver1er9cvWrToo48+4jWMQnNycpozZw79AHVaWlpaWpo8xeRE3ZqgcCigD/6SJUu++OKLL774QuTtwy1bttyyZUvv3r179+4tZj/ldyi+x6zQXYrvMYODg7n0mG3btlVstJ0+ifR5lOQk0udRkrLRT13Q/8/9SsF8mWBbKZ+W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7Evtdvv69esVk4YPHy7oZ1yatwqACRhwByxEEF9ljz76aECAC802Ojr6vvvuE+zgH4uYNzc3C36WXH/99eYWx4Pkh08FlcTVGuK0kniuhly6dEmQWl9fr7ZdbdUySZIefPDBxMREI0pnnl9++eXChQuO23v37t29e3fHgYa9e/dqmZlR8SH3Pn36KM4n09jYmJuba/LLLoJm609t1tNsNtuf//xnlw657rrrZs+erZa6ffv27du3G1E0U1mzY/REJddypj50nyAIBIpRQA4BfhYFLMLVa2EsX4kIlZWVO3bscNweEhIyaNCgpKQktZHBAwcO/Prrr9o/SHy34ytVXcs9mxXOwhOR1IhyeZav3FG7enXkS+OtqyPuSLX3pdnZ2Yp/2xs2bFinTp0Ub+YlSaqurv7uu+80F/b/p0OHDrfccsuSJUsef/zxhQsXjhw50lJvFwE+igF3wFo2bNigGF9lffr0+fd//3eNWQUFBT399NMdO3ZU26Gmpuarr77SVUzLuXLlilpS3759FSe5812CSuJSDXFaSQQ1JCoqSl7VUzd5jnI1586dU0v65JNP1EacY2Jinn/++aioKHcKJklS586d3czBJYqD46mpqYrLPTmdT0aQZ0pKiuLXfvjw4ZqampqaGm3lNYxas/W/NutRU6ZMmTx58uTJk7XsHBYW9swzz6i9Km6328WjmVZmhY7RkScqudMzNeo+Qe4WBCfr0UCgFgU++eQT/4sC7vPKtTCWr0QEtaVThw4dOnLkSLWjdDx2KtdzX6/qTlur+2dhyCnIkVTjzloiqftFMoGv9KXar07LpdF3dTzdkWrvS69cubJ161bH7X379h08eLDaUPiWLVv0/X00MzPziy++ePLJJ++6667bb7994cKFb7zxxrvvvtuyHDQAfRhwB6yloqJi7dq1gh1+97vfPfLII4qzMLcWHR39/PPPi5fF++ijj6qqqvSW1FoEq98EBAQsXrzY3OJ4lriSaK8hTiuJoIakp6d/8cUX9913n76pXW022x/+8AfFpGvXrl27dq2wsFDt2IKCgq+//lotdeDAge+++25SUpKOUnXo0GHu3Lnr1q1bsGCBjsN1U5zLJS4ubtCgQW02Njc3q8353saBAwcch+SSkpIUHxX01uztas3W/9qspy1btmzZsmVTpkwR7xYZGfn8888rLgwg27t375kz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Ly8k7rxz58503OnVYzus7r3rtwP/ztxjAJASNk0FaABGjx59/fXXB6WeffbZU6ZMiTOrAw88MGR30E8//TRjL7H+5Cc/CV9utaKiYvTo0ZMmTfr88883b968c+fO5s2bt2/f/rjjjvve974XtF5z48aNf//731966aXR2HrMYyZNmhQzXN60adMjjzxy3z33guTk5MSzXEzTpk2PPvromTNnxpNh0I+roEXnq4XXZGLVuG9NJryvWqdOnVq0aPHrX/86/lPSN8O9TZs2d9xxR62HLV++/PPPP1+3bt3u3btbtGjRunXr3r1711ylulGjRvUYRb3qqqvCD5gzZ86ECRMWLVq0Zs2anTt35ufnFxcXt27dunv37t26devdu/d+EZw1a9aMHz8+nq++5ZZbjjnmmFoP27Bhw6pVqyKRyKZNmyoqKpo3b96uXbuOHTvuFwX79ttvP/7443i+dz/paFoJXEeRSCT+HqnmdfTxxx/vV6q8vLzoFrg1zZs3L2jpiWrffvtt+AFJuvbaa2t90Lht27ZPP/10/fr1GzdubNSoUcuWLQ8++OBevXrV+izz7rvvXrp06ZdffplkIWP+EXfv3j137txVq1ZF/3bFxcUHH3xwdBZ8+LJIhx566BlnnBHn1VFf6rFDSN4777xz7bXX7reqzM6dOz/77LM5c+Z89tln69atKy8vLy8vLygoaNmyZc+ePc8555zjjjsuJM8uXboMGjQoztf14hwa4hwdEhgaqqqqRo0a9bOf/axmUnRhlgEDBtT1weSpp54aEqYfO3ZsnLvC1El4OwxqhJFIJPl2mKb7yTrdCNV7QwIg2wi4AzQA33zzzbx586Kr09Z0xhlnDB06NM6o6IABA0KWoMnYdqmdOnWKLlIZ5MMPP3zwwQc3bNiw74ebN2/evHnzF1988Y9//OOcc8656667YsZKSkpK/uu//isSiQRNnQsJYffp0yeegHuvXr2i4bZ9ffnllzV/IPXr1y+egHvXrl1btmwZMyl8PZnwmkymGqtrMuEZiK1bt3700UdrVlQkEtm1a9esWbOWLVu2adOmrVu3Nm3atEWLFl27do1GadPhhhtuCI+sTZs27S9/+UvNt9dzc3N79+79s5/9LEummxUXF4c8M9u+ffudd94Z9ATugw8+iM7aO/roo/v163fWWWd17NgxEom88sore/furfWre/fuffHFF4ccsHPnzpdeemns2LELFiyomVpYWNizZ8++ffv27du3e/fu0Q0DE3uck/Kmldh1FP3fOHukmtdRWVlZWVnZvp8UFhYGBdwXLlw4fPjwkP8L6Xb44YdfeeWVIQfMmzfvySefnDFjxp49e/ZLKi4uPuussyKRyHXXXdeiRYuYpzdu3Ph3v/vdFVdcUfP0ZCxduvSpp56aNGnSjh079kuKvn50/vnnX3fddQceeGBQDpdcckk2B9xDOoRobxCJRNLUIaTE7t27X3rppZtvvjl68U6cOPGDDz6YOHHirl279jtyy5Yt69atW7BgwYgRI0499dR77703JKb8ox/9KM6Ae61DQwZGh5EjR/70pz8NmpU/cODAugbcwxd9evPNN+tYwNrV2g5D5oUk2Q7Tej8Z/41QNjQkALKKgDtAw/Dee+8FBdyjm6B+8skn8eQTsp7Mnj17oj97MuDWW28N2VNr+PDhjz32WMjpVVVVo0eP/vLLL5955pmYP7mvuOKKSCTyr3/9q+aP9kgksmLFiuXLl8fcofSEE0549tlnay1/zGmef/rTn5544on9PjzppJMeffTRWjMMWsB97969U6dODTkxpCbrVI2RSCSoJoOqMR41n0AsWbLk6aefnjBhQkVFRWJ51lV0X8pzzz035JjHHnvs73//e1VVVc2kysrKWbNm/fznPx84cOA999xTHaerL0cccUTIZOFHHnmk1vdd9u7dO2vWrFmzZj322GPHHHPMoEGD3njjjXi++tZbbw1ZqKGsrOy+++4LeUVmx44d06dPnz59+qOPPnrIIYcMHDhw3Lhx8XxvTKltWslcR3H2SMlcR9ngtttuC3lY+/DDD//jH/+IeQVFd4YcMWJEJBJ5//33f/vb3wbNRe3Wrdt//Md/pHAxk6effvqvf/1rZWVlzNRoZP+1116LRsGCdpjs1atXs2bNtm7dmqpSpVZIhxBPb5BMh5AqI0aM6N+//5gxY95+++0tW7bEc8qECRPuuuuuhx9+OBqsrHlAz549CwsLaz5l2U/79u3Dh4Y6jQ4JDw2rVq2aPn16ULC1tLS0TZs28e910axZs5A3UZYvX/7pp58mVs4Q9dgO030/GU8HniUNCYCsYg13gIbh/fffr6ysDAochITR99WqVauQzcQmTZpUXl6eRBnjdfjhh59yyikxk8aOHTt27Nhaw1tRS5YsGTJkSMyk4uLi4uLikEWBgya59+rVq3HjxrV+dc1fs+Xl5TNnzly5cuV+n3fr1i360nS4oID77NmzQ179Dq/JOlVjSE2mZG3l6E/KYcOG/fjHPx47dmzGou2RSOSiiy666KKLQoLUf//734cPHx4UK6w2evToO++888477wy6DDMjvDnVur/ufj799NOhQ4fGc+H37ds36JlfJBL55JNPbr/99vgXpFq+fPkzzzyzZMmSuhQ2UJJNKyXXUa09Uqquo3px/PHHhyzi8cgjj7z44ou1XkHRScp33XVXyDpCV1xxRUFBQRIl/X9K9fTTT8dztX799ddBf7hoPLdXr14pKVI6hHQIde0N6tQhpNC2bduuvvrql156Kc5oe1RZWdnHH38c1JYaNWoUz9ap4UNDXUeHZIaGkDnsubm5cd7jRZ155pkhAeh0TG+vx3YY0nsncCMUlFprB549DQmA7CHgDgAAAAAAKSDgDtAwbNq0adq0adOmTYuZevrpp+fl5dWayZlnnhkyBydjC7hfdNFFMT/fuXPnQw899NBDD8Wf1fjx47/44oug1DPPPDMoKWiGe35+fq17QrZp0ya6AvW+5s6dG52WVfP4WrdXDZmLF75SUHhNhn/pvsaPHx9SkyHVGL8dO3bceuut//znP+OZBptCOTk555xzTsjctPnz58c/hTk6ofKVV15JXQHrLHwaXcjExiT96Ec/Ckpas2bNf//3fye8uW6Skm9aqbqOwnuklFxH9eXCCy8MSpo2bVqdtnnYs2fPvffeu3HjxpipLVu2DF9+Ok5TpkypU6nKyspmzJgRlJrNM9xDOoT09QZZ4q233gqZGH7ooYeGnx4dHUIOqOvokMzQMH78+JAJ3YMGDYo/q5CDKysr33nnnbqXrnb11Q6Deu/EboQSu5/MqoYEQPYQcAdoMN5777333nsvZlLTpk379etXaw4hPwm2b98e8pp/CuXn50d3z6vpnXfeWbduXfwLlUaFvB99/PHHBy2FOX369KClJ2rdtCrm6qhz5syJrgBTM6nWP02vXr0KCwtjJoU8GKi1JsO/tKagmgypxvgNGTJkv/0hM+Pwww9v27Zt27Ztgw545JFH6hqo/dvf/pbJJXH28+2334akpmndkqKiopDX9h966KFa10pOnySbVsO6jupFs2bNTjvttJhJVVVV0XW062TL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ppAAd52WTW/VqtX/+T//J8nCREeHkAPqOjqkaWgI2j31mGOOCXrekPntUuurHYb03hnrwBtKQwIgwwTcARq8oAB6zDdS169fP23atPQXKsyiRYvCV5Dv2bPnX//61w4dOtQ15+bNm19yySWvvPLK1VdfffXVV9fp3JhrubRu3bpXr169evXa7/PKysqgYPq+ZsyYETNK1aFDh5jzVeNcT6ZaeE0mXI371WQCp2eVV1555ZVXXglKzc3NfeCBB+IJ9JSUlDz99NNPP/10UVFRqstYB/369Xvrrbeuv/76xJZXzsnJueyyy2Im7d69e9myZUEz2V9//fWtW7cGZTtw4MAHHnggfIHmfeXn5w8cOPDFF1+888474zwlfbLqOlqyZEnMz3Nzc2+++eYEypASmzdvfuGFF4JSL7744l/+8pcxN6XYT1FR0QMPPBCyPPE//vGPetnNu+FKd4eQdAH/H0HNO+rcc8+NZz5yhw4dHnnkkZSsLx8yNCQwOqRpaCgrK4sZce7evXt0D/b9bNmypa7bzyavvtph+u4n69SBN4iGBECGZctOUAAkbMKECVu3bq05hSfmpJ4xY8bUuhBKBjz66KMnn3xycXFx0AGdO3d++eWXX3311eeffz7kReOojh079uvX75RTTiktLY0GfRLYc2/q1KmVlZU1Z+mef/75NQ/+/PPPgyai7mvHjh2zZ8+ObmC7r9NOO62goKDm8XUNuNdak3WqxlTVZLaJhng++uij008/PeYBBQUFjz322Kuvvjp8+PCYi0e3adPm0ksvveiii+IJKWZAmzZtrr766iuvvHL27NnV+zEsXbq01hMPPPDAwYMHB/3snzlz5s6dO4PO3bp16/PPP3/DDTcEHdC/f//jjz/++eefHzdu3Ndff13zgJycnIMPPvjII4887bTTTj755OgyTbNnz6612BmQPdfR3Llzg+ZCDhw4sKKiYtiwYTGffBxyyCGNGzdetGhRnF9UV88999z3vve9tm3bxky9+OKLTz755CeeeOLjjz+uuSpOcXHxWWedFYlErr322pYtWwZ9xapVq55//vlUF/y7r2aHEE9vkGSHkJjw5/0FBQUPPfTQ7bffvnr16pgHNG7c+Ac/+MGNN97YtGnTlJRnyZIlIUNDlowOVVVVo0aN+ulPf7rf5z169Ii5AtXo0aPrZc3A+mqH6bifjG5bGn8H3iAaEgAZJuAO0ODt3r37ww8/PO+88+I5uN7Xk4lat27d/fffP3To0JBjGjdufOmll/74xz+eP3/+9OnTV69evXnz5h07djRp0qRJkyZNmzbt2LFj586dS0pKWrdunXyRtmzZMnfu3JobAMb8YR/PejJRkydPrhlwj7kD2Nq1axcvXhx3ef+vWmsyzmqMTq1KSU1mp0ceeaRfv35BS43n5uZefPHFF1100dy5cxcsWLBhw4aKiori4uKWLVseffTRIa+616Pc3Nxjjz322GOPjU58XrNmzfz58xcuXLho0aJ169Zt2bJly5YtVVVVjRs3btOmTUlJyfHHH9+/f/+YT3qiQtbpjnr++efPOeeckEVgioqKbrzxxhtvvHHVqlXRKZkbN27Myclp1qxZUVHRoYceWo87f4ZL7DqKPlRLbY80derUkPXNv//97w8YMGDixImLFy+ONtEDDzzwoIMO6tmzZ4sWLV588cWHH3444a8Ot3Pnznvuueexxx4LWjiiY8eOQ4YM2b1795w5c1avXh3907ds2bJjx469evWqdcWhysrK++67L2QLRMLt2yHs2xtEm3c6OoQErFu3bsGCBdFgccwDDjvssJdeemnUqFGTJ09etmzZtm3bCgoKiouLu3bt2rt37wEDBsT/Gk2cwoeGLBkdRo4cefXVV+fk5Oz7YdBc8syvJ7OvoHYY1AijD2uTaYdZcj/ZIBoSAJlkSRkAAAAAAEgBM9wBvgvee++9eGa4f/3111988UVGSlS7cePGPf744yErVETl5uYeeeSRRx55ZAaKNHny5Joz3GOq0wz3W265JZ4jE1hPJiqemsxkNWanr7/++oknnghfBTs3N7d3797xtIFVq1Z9++23hx9+eErLmJS2bdu2bds25JX2cHPnzh0/fnz4MXv27Lnrrruee+65Wieqt2/fPiUrLGdSllxH8+bNmz9/fkjTatq0acz9OTJg5syZw4YN++UvfxlyTF5eXvxbX+7r0Ucfrff9Rb4zkuwN4uwQEvPcc89FIpEHHngg6IAmTZpcfPHFF198ca1ZRRdO+dOf/nTXXXclXJ54hob4R4c0DQ0rV66cOXNmPFfWwoUL58+fn9pvT1jG2mE23E82iIYEQCaZ4Q7wXTBt2rQNGzbUeliWrCdT7dlnn33mmWfquxT/vzhD3hs2bIi+FB+PxYsXr127Np4j4w/i15RtNZmdXnjhhZSEkCoqKgYPHvzaa6+lolBZoby8/O67745nd4dly5YNHjy4XhYIzoAsuY6GDx9e30UI9K9//esvf/lLyrN97rnnQjZlJcPi7xASMG7cuHHjxn3++edJ5lNZWXnPPffcc889r7/+epKbu0aHhuRHh7QODW+++WYKD2sQ6tQOo713/Xbg7jEA2JeAO8B3QVVV1fvvv1/rYe+9915GilMHTz311O9///tdu3bVd0EikUhkwYIF8eyIOHny5DpFIqZMmVLrMXv27ElydmdW1WR2qqqquvvuu8vKyhLOoaKiIvpLeP78+fH8WRuEjRs33nTTTStXrozz+LKysttuu628vDzN5aof2XAdjR07dtSoUfVYgHDPPffc73//+1Q9dNm7d++wYcPSEcQnMXXtEOqqqqqqqqpq8ODB8cwSCLJ379577rln7NixY8eOjUQi0Y2jkynS3XffnfzokNahYdy4cVu2bKm1DFl4m5eYBNrhU089Vb8dePL3GBloSABkjIA7wHdErbPXP//88+XLl2eqOHXw5ptvXn755Z9++mkK8ywvL08gIFhVVRXPL5y6TkWfPHlyrcfMnj17+/btdcq2pjTVZApzq3cVFRW/+MUvRowYkcC5GzZsuPnmm2+++eZoA1izZs1XX32VhjJm1CeffHLFFVfUdQmC6dOnX3bZZTNmzEhbuepTNlxHf/jDH5KM2qRVtIqSX6BsyZIl11xzzT//+c8UlYtkJdYhJGDNmjW33Xbb6tWrEzh38+bNt9122773PEkG3KsfpiY5Ouw7NKR8dKioqBgzZkz4MePHj681KN8gJNMO67cDT6YVxWxIieUDQDYQcAf4jvjss8/C4+nZPO9p2bJl11577a9+9avZs2fPnj074Xy2b9/++uuv/+QnP3nyySeffPLJBHKoNTi+d+/eugbCpk6dWllZGX5Mwgu472ffmkwmn31rMiUFyx579uwZOnTo7bffHv9P2aqqqlGjRl1yySWzZs2aNWtW9ef1EhKdMGHC0KFD41/UKMgXX3xx8803/+IXv1izZk0Cp69evfqGG2648847E47N7d69+/XXX7/nnnsSOz2t6v062rlz56233jp8+PA9e/YkU4D0Wbp06VVXXXX33XcvXrw4gdNXrFjx4IMPXnrppfPmzUtD6f6NZEmHkIAFCxZcdtll48aNq9NZY8eOvfTSS/fre2fPnp2SZ8NJjg7VH5aVlaVjdHjrrbeSPCB9sqod1m8HnkArCmlIdSwyAFnEpqkA3x2jR4/+2c9+FjOpsrIynjVn6tdHH3300UcfRSKRLl269O/fv1+/fj169MjPzw8/q6KiYvHixdOmTZs2bdqnn36a5KvEU6ZMqayszM0NfCA9Z86crVu31inPLVu2zJ07N3yPrFQF3KOiNVmnakx5TWa5iRMnTpo06YwzzjjvvPNKS0sLCwtjHrZy5coPP/xwxIgRX3/9dc3UyZMnx7OzX2rt2LFjxIgRI0aM6NKlS58+fUpLS3v16hWJRFq1alXrudu3b1+0aNGkSZPef//9lLzvEl2OuWfPngMGDOjXr1/nzp1Drp2oioqKGTNmfPzxxx9++GEya0pkQP1eR5WVlY899tgrr7xyySWX9O/fP2QT2q1bt86dO3fChAkffPBBYt+VcAlHjx49ZsyY3r17Dxgw4NRTT+3YsWP4KStWrJg6deq4ceOmTZuWpiXC/93E7BDi6Q3S0SHUVXl5+Z133tm1a9dLLrmkX79+IcVeuXLlxIkT33rrrYULF9ZM3bt37+TJk1O1mXDyo0P0yX3KR4cvvvhi0aJFhx12WMzUVatWTZ8+PbXfGL8sbIcJdODVvXd0b6RkOvDqVhSJRJJpSJm/xwAgVXLquwAAEOiAAw4oKSlp3779QQcd1KRJk/z8/Kqqqh07duzcuXPHjh1r165dsWLF+vXrBW7CxVONkUjk37YmGzVqdNhhh3Xq1Klly5aFhYV79+7dvn37ypUrlyxZsmrVqvouXbwKCws7duzYoUOH4uLiwsLCgoKC/Pz8ioqKbdu2bd++vby8fOnSpatXr07rn7iwsLBr167t2rVr2bJlQUFBJBLJz8/fu3fvrl27tm7dumHDhm+++Wb58uV79+5NXxnSp+Z1FJ2WmJke6aCDDjriiCMOPPDAoqKi/Pz8nTt3btu2bc2aNStWrPjmm2+y5MotKio67LDDOnTo0LRp06ZNm0an6m/atGn16tVLly6NRCLffvttfZfx38K+vUH0n/XSIdTVoYceethhhzVv3ryoqOiAAw7YtWvXli1bVq1atXTp0vp6OPfdGB3qSzyjUvR9qQy0w/q9n9SQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg/2sPDggAAAAAhPx/3ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSzrO0AAAGuUlEQVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBHime2lzLl1zgAAAAASUVORK5CYII=","consoleMessages":[{"text":"Unrecognized Content-Security-Policy directive 'prefetch-src'.","level":"error","timestamp":1736975610964},{"text":"OBJKT created by tz1e3fYe1G6a7vkvj4tudf7ZBc8Y5BdQHdPM","level":"log","timestamp":1736975610994},{"text":"OBJKT viewed by ","level":"log","timestamp":1736975610994},{"text":"OBJKT 863724","level":"log","timestamp":1736975610994},{"text":"Unrecognized Content-Security-Policy directive 'prefetch-src'.","level":"error","timestamp":1736975611543},{"text":"[GroupMarkerNotSet(crbug.com/242999)!:A0B01C00CC3C0000]Automatic fallback to software WebGL has been deprecated. Please use the --enable-unsafe-swiftshader flag to opt in to lower security guarantees for trusted content.","level":"warning","timestamp":1736975611715},{"text":"Godot Engine v4.3.rc3.official.03afb92ef - https://godotengine.org","level":"log","timestamp":1736975620177},{"text":"OpenGL API OpenGL ES 3.0 (WebGL 2.0 (OpenGL ES 3.0 Chromium)) - Compatibility - Using Device: WebKit - WebKit WebGL","level":"log","timestamp":1736975620937},{"text":"The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://goo.gl/7K7WLu","level":"warning","timestamp":1736975621014},{"text":"USER ERROR: No loader found for resource:  (expected type: Translation)","level":"error","timestamp":1736975621029},{"text":"   at: _load (core/io/resource_loader.cpp:291)","level":"error","timestamp":1736975621030},{"text":"USER ERROR: Failed loading resource: res://Translations/languages.csv. Make sure resources have been imported by opening the project in the editor at least once.","level":"error","timestamp":1736975621031},{"text":"   at: _load (core/io/resource_loader.cpp:284)","level":"error","timestamp":1736975621031},{"text":"USER WARNING: Occlusion culling is disabled at build-time.","level":"error","timestamp":1736975621631},{"text":"   at: _print_warning (./servers/rendering/renderer_scene_occlusion_cull.h:201)","level":"error","timestamp":1736975621631},{"text":"USER ERROR: Attempt to open script 'res://addons/audio_node_wrangler/audio_node_wrangler_mgr.gd' resulted in error 'File not found'.","level":"error","timestamp":1736975621803},{"text":"   at: load_source_code (modules/gdscript/gdscript.cpp:1094)","level":"error","timestamp":1736975621804},{"text":"USER ERROR: Failed loading resource: res://addons/audio_node_wrangler/audio_node_wrangler_mgr.gd. Make sure resources have been imported by opening the project in the editor at least once.","level":"error","timestamp":1736975621806},{"text":"   at: _load (core/io/resource_loader.cpp:284)","level":"error","timestamp":1736975621806},{"text":"USER ERROR: Failed to instantiate an autoload, can't load from path: res://addons/audio_node_wrangler/audio_node_wrangler_mgr.gd.","level":"error","timestamp":1736975621806},{"text":"   at: start (main/main.cpp:3672)","level":"error","timestamp":1736975621807},{"text":"USER ERROR: Attempt to open script 'res://Resources/Player/GlobalSettings.gd' resulted in error 'File not found'.","level":"error","timestamp":1736975621858},{"text":"   at: load_source_code (modules/gdscript/gdscript.cpp:1094)","level":"error","timestamp":1736975621858},{"text":"USER ERROR: Failed loading resource: res://Resources/Player/GlobalSettings.gd. Make sure resources have been imported by opening the project in the editor at least once.","level":"error","timestamp":1736975621859},{"text":"   at: _load (core/io/resource_loader.cpp:284)","level":"error","timestamp":1736975621859},{"text":"USER ERROR: Failed to instantiate an autoload, can't load from path: res://Resources/Player/GlobalSettings.gd.","level":"error","timestamp":1736975621860},{"text":"   at: start (main/main.cpp:3672)","level":"error","timestamp":1736975621861},{"text":"80.4328231811523","level":"log","timestamp":1736975622220},{"text":"Failed to execute 'requestFullscreen' on 'Element': API can only be initiated by a user gesture.","level":"warning","timestamp":1736975623632},{"text":"[GroupMarkerNotSet(crbug.com/242999)!:A0E01C00CC3C0000]Automatic fallback to software WebGL has been deprecated. Please use the --enable-unsafe-swiftshader flag to opt in to lower security guarantees for trusted content.","level":"warning","timestamp":1736975623633},{"text":"[.WebGL-0x1f840d669b00]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels","level":"warning","timestamp":1736975623635},{"text":"[.WebGL-0x1f840d669b00]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels","level":"warning","timestamp":1736975623919},{"text":"[.WebGL-0x1f840d669b00]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels","level":"warning","timestamp":1736975624263},{"text":"[.WebGL-0x1f840d669b00]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels (this message will no longer repeat)","level":"warning","timestamp":1736975624567}],"screenshotDelay":20000},"timestamp":1736975610546},"created_at":"2025-01-15T21:13:53.021+00:00","updated_at":"2025-01-15T21:13:53.022+00:00"}