{"id":1237,"artifact_id":1105,"version":1,"data":{"version":1,"artifact":{"chain":"tezos","title":"window-01","artist":"tz1SvPd1aUYZSkr22JTdRzUEGMb6ZjoPEXTz","tokenId":"24327","description":"Alexandre Rangel, 2021. Infinite code generative composition. NFT: SVG + JavaScript. < @AlexandreRangel www.alexandrerangel.art.br >","contractAddress":"KT1RJ6PbjHpwc3M5rw5s2Nbmefwbuwbdxton"},"snapshot":{"net":[{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmV5wWyGc7rXj5a1RSbsvnda7VZboMXgDWPG82CCjvPd3w?creator=tz1SvPd1aUYZSkr22JTdRzUEGMb6ZjoPEXTz&viewer=&objkt=24327","host":"ipfs.arkivo.art","path":"/ipfs/QmV5wWyGc7rXj5a1RSbsvnda7VZboMXgDWPG82CCjvPd3w","type":"http","query":"?creator=tz1SvPd1aUYZSkr22JTdRzUEGMb6ZjoPEXTz&viewer=&objkt=24327","method":"GET","headers":{"sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 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":1723844656065},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmV5wWyGc7rXj5a1RSbsvnda7VZboMXgDWPG82CCjvPd3w?creator=tz1SvPd1aUYZSkr22JTdRzUEGMb6ZjoPEXTz&viewer=&objkt=24327","body":"","status":200,"headers":{"date":"Fri, 16 Aug 2024 21:44:16 GMT","etag":"\"QmV5wWyGc7rXj5a1RSbsvnda7VZboMXgDWPG82CCjvPd3w\"","server":"nginx/1.27.0","connection":"keep-alive","x-ipfs-path":"/ipfs/QmV5wWyGc7rXj5a1RSbsvnda7VZboMXgDWPG82CCjvPd3w","content-type":"image/svg+xml","x-ipfs-roots":"QmV5wWyGc7rXj5a1RSbsvnda7VZboMXgDWPG82CCjvPd3w","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"654743","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":1723844656255}],"browser":{"name":"chromium","version":"119.0.6045.9"},"viewport":{"width":2000,"height":2000},"screenshot":"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AAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAAAqAR0AAAAAAAAAKgEdAAAAAAAAACoBHQAAAAAAAD+2LMDAQAAAABB+1MvUhoBUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAADA7NmBAAAAAICg/akXKY0AAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQLfs8UgAABBaSURBVAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAADg9uxAAAAAAEDQ/tSLlEYAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKCqAYVCn39C5TFVAAAAAElFTkSuQmCC","consoleMessages":[{"text":"class HydraSynth {\n\n            constructor ({\n                pb = null,\n                width = 768,\n                height = 768,\n                numSources = 4,\n                numOutputs = 4,\n                makeGlobal = true,\n                autoLoop = true,\n                detectAudio = false,\n                enableStreamCapture = false,\n                canvas,\n                precision = 'mediump'\n            } = {}) {\n\n                this.bpm = 60\n                this.pb = pb\n                this.width = width\n                this.height = height\n                this.time = 0\n                this.makeGlobal = makeGlobal\n                this.renderAll = false\n                this.detectAudio = detectAudio\n\n                // only allow valid precision options\n                let precisionOptions = ['lowp','mediump','highp']\n                let precisionValid = precisionOptions.includes(precision.toLowerCase())\n\n                this.precision = precisionValid ? precision.toLowerCase() : 'mediump'\n\n                if(!precisionValid){\n                console.warn('[hydra-synth warning]\\nConstructor was provided an invalid floating point precision value of \"' + precision + '\". Using default value of \"mediump\" instead.')\n                }\n\n                // boolean to store when to save screenshot\n                this.saveFrame = false\n\n                // if stream capture is enabled, this object contains the capture stream\n                this.captureStream = null\n\n                this._initCanvas(canvas)\n                this._initRegl()\n                this._initOutputs(numOutputs)\n                this._initSources(numSources)\n                this._generateGlslTransforms()\n\n                window.screencap = () => {\n                this.saveFrame = true\n                }\n\n                if (enableStreamCapture) {\n                this.captureStream = this.canvas.captureStream(25)\n\n                // to do: enable capture stream of specific sources and outputs\n                window.vidRecorder = new VidRecorder(this.captureStream)\n                }\n\n                if(detectAudio) this._initAudio()\n                //if(makeGlobal) {\n                window.mouse = mouse\n                window.time = this.time\n                window['render'] = this.render.bind(this)\n                //  window.bpm = this.bpm\n                window.bpm = this._setBpm.bind(this)\n            //  }\n                if(autoLoop) loop(this.tick.bind(this)).start()\n            }\n\n            getScreenImage(callback) {\n                this.imageCallback = callback\n                this.saveFrame = true\n            }\n\n            resize(width, height) {\n                console.log(width, height)\n                this.canvas = document.querySelector('foreignObject').querySelector('canvas');\n                this.canvas.width = width\n                this.canvas.height = height\n                this.width = width\n                this.height = height\n                this.regl.poll()\n                this.o.forEach((output) => {\n                output.resize(width, height)\n                })\n                this.s.forEach((source) => {\n                source.resize(width, height)\n                })\n            }\n            canvasToImage (callback) {\n                const a = document.createElement('a')\n                a.style.display = 'none'\n\n                let d = new Date()\n                a.download = `hydra-${d.getFullYear()}-${d.getMonth() + 1}-${d.getDate()}-${d.getHours()}.${d.getMinutes()}.${d.getSeconds()}.png`\n                document.body.appendChild(a)\n                var self = this\n                this.canvas.toBlob( (blob) => {\n                //  var url = window.URL.createObjectURL(blob)\n\n                    if(self.imageCallback){\n                    self.imageCallback(blob)\n                    delete self.imageCallback\n                    } else {\n                    a.href = URL.createObjectURL(blob)\n                    console.log(a.href)\n                    a.click()\n                    }\n                }, 'image/png')\n                setTimeout(() => {\n                document.body.removeChild(a);\n                window.URL.revokeObjectURL(a.href);\n                }, 300);\n            }\n\n            _initAudio () {\n                this.audio = new Audio({\n                numBins: 4\n                })\n                if(this.makeGlobal) window.a = this.audio\n            }\n            // create main output canvas and add to screen\n            _initCanvas (canvas) {\n                if (canvas) {\n                this.canvas = canvas\n                this.width = canvas.width\n                this.height = canvas.height\n                } else {\n                this.canvas = document.createElement('canvas')\n                this.canvas.width = this.width\n                this.canvas.height = this.height\n                this.canvas.style.width = '100%'\n                this.canvas.style.height = '100%'\n                document.body.appendChild(this.canvas)\n                }\n            }\n\n            _initRegl () {\n                this.regl = require('regl')({\n                canvas: this.canvas,\n                pixelRatio: 1,\n                extensions: [\n                    'oes_texture_half_float',\n                    'oes_texture_half_float_linear'\n                ],\n                optionalExtensions: [\n                    'oes_texture_float',\n                    'oes_texture_float_linear'\n                ]})\n\n                // This clears the color buffer to black and the depth buffer to 1\n                this.regl.clear({\n                color: [0, 0, 0, 1]\n                })\n\n                this.renderAll = this.regl({\n                frag: `\n                precision ${this.precision} float;\n                varying vec2 uv;\n                uniform sampler2D tex0;\n                uniform sampler2D tex1;\n                uniform sampler2D tex2;\n                uniform sampler2D tex3;\n\n                void main () {\n                    vec2 st = vec2(1.0 - uv.x, uv.y);\n                    st*= vec2(2);\n                    vec2 q = floor(st).xy*(vec2(2.0, 1.0));\n                    int quad = int(q.x) + int(q.y);\n                    st.x += step(1., mod(st.y,2.0));\n                    st.y += step(1., mod(st.x,2.0));\n                    st = fract(st);\n                    if(quad==0){\n                    gl_FragColor = texture2D(tex0, st);\n                    } else if(quad==1){\n                    gl_FragColor = texture2D(tex1, st);\n                    } else if (quad==2){\n                    gl_FragColor = texture2D(tex2, st);\n                    } else {\n                    gl_FragColor = texture2D(tex3, st);\n                    }\n\n                }\n                `,\n                vert: `\n                precision ${this.precision} float;\n                attribute vec2 position;\n                varying vec2 uv;\n\n                void main () {\n                    uv = position;\n                    gl_Position = vec4(1.0 - 2.0 * position, 0, 1);\n                }`,\n                attributes: {\n                    position: [\n                    [-2, 0],\n                    [0, -2],\n                    [2, 2]\n                    ]\n                },\n                uniforms: {\n                    tex0: this.regl.prop('tex0'),\n                    tex1: this.regl.prop('tex1'),\n                    tex2: this.regl.prop('tex2'),\n                    tex3: this.regl.prop('tex3')\n                },\n                count: 3,\n                depth: { enable: false }\n                })\n\n                this.renderFbo = this.regl({\n                frag: `\n                precision ${this.precision} float;\n                varying vec2 uv;\n                uniform vec2 resolution;\n                uniform sampler2D tex0;\n\n                void main () {\n                    gl_FragColor = texture2D(tex0, vec2(1.0 - uv.x, uv.y));\n                }\n                `,\n                vert: `\n                precision ${this.precision} float;\n                attribute vec2 position;\n                varying vec2 uv;\n\n                void main () {\n                    uv = position;\n                    gl_Position = vec4(1.0 - 2.0 * position, 0, 1);\n                }`,\n                attributes: {\n                    position: [\n                    [-2, 0],\n                    [0, -2],\n                    [2, 2]\n                    ]\n                },\n                uniforms: {\n                    tex0: this.regl.prop('tex0'),\n                    resolution: this.regl.prop('resolution')\n                },\n                count: 3,\n                depth: { enable: false }\n                })\n            }\n\n            _initOutputs (numOutputs) {\n                const self = this\n                this.o = (Array(numOutputs)).fill().map((el, index) => {\n                var o = new Output({\n                    regl: this.regl,\n                    width: this.width,\n                    height: this.height,\n                    precision: this.precision\n                })\n                o.render()\n                o.id = index\n                if (self.makeGlobal) window['o' + index] = o\n                return o\n                })\n\n                // set default output\n                this.output = this.o[0]\n            }\n\n            _initSources (numSources) {\n                this.s = []\n                for(var i = 0; i < numSources; i++) {\n                this.createSource()\n                }\n            }\n\n            _setBpm(bpm) {\n                this.bpm = bpm\n            }\n\n            createSource () {\n                let s = new Source({regl: this.regl, pb: this.pb, width: this.width, height: this.height})\n                if(this.makeGlobal) {\n                window['s' + this.s.length] = s\n                }\n                this.s.push(s)\n                return s\n            }\n\n            _generateGlslTransforms () {\n                const self = this\n                const gen = new GeneratorFactory(this.o[0], this.precision)\n                window.generator = gen\n                Object.keys(gen.functions).forEach((key)=>{\n                self[key] = gen.functions[key]\n                if(self.makeGlobal === true) {\n                    window[key] = gen.functions[key]\n                }\n                })\n            }\n\n            render (output) {\n                if (output) {\n                this.output = output\n                this.isRenderingAll = false\n                } else {\n                this.isRenderingAll = true\n                }\n            }\n\n            tick (dt, uniforms) {\n\n            //  if(self.detectAudio === true) self.fft = self.audio.frequencies()\n            // this.regl.frame(function () {\n                this.time += dt * 0.001\n                // console.log(this.time)\n                // this.regl.clear({\n                //   color: [0, 0, 0, 1]\n                // })\n                window.time = this.time\n                if(this.detectAudio === true) this.audio.tick()\n                for (let i = 0; i < this.s.length; i++) {\n                this.s[i].tick(this.time)\n                }\n\n                for (let i = 0; i < this.o.length; i++) {\n                //  console.log('WIDTH', this.canvas.width, this.o[0].getCurrent())\n                this.o[i].tick({\n                    time: this.time,\n                    mouse: mouse,\n                    bpm: this.bpm,\n                    resolution: [this.canvas.width, this.canvas.height]\n                })\n                }\n\n                // console.log(\"looping\", self.o[0].fbo)\n                if (this.isRenderingAll) {\n                this.renderAll({\n                    tex0: this.o[0].getCurrent(),\n                    tex1: this.o[1].getCurrent(),\n                    tex2: this.o[2].getCurrent(),\n                    tex3: this.o[3].getCurrent(),\n                    resolution: [this.canvas.width, this.canvas.height]\n                })\n                } else {\n                //  console.log('out', self.output.id)\n                this.renderFbo({\n                    tex0: this.output.getCurrent(),\n                    resolution: [this.canvas.width, this.canvas.height]\n                })\n                }\n                if(this.saveFrame === true) {\n                this.canvasToImage()\n                this.saveFrame = false\n                }\n            }\n\n\n            }","level":"log","timestamp":1723844656540},{"text":"[.WebGL-0x3a6000374e00]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels","level":"warning","timestamp":1723844658303},{"text":"[.WebGL-0x3a6000374e00]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels","level":"warning","timestamp":1723844658303},{"text":"[.WebGL-0x3a6000374e00]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels","level":"warning","timestamp":1723844658303},{"text":"[.WebGL-0x3a6000374e00]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels (this message will no longer repeat)","level":"warning","timestamp":1723844658303}],"screenshotDelay":10000},"timestamp":1723844655416},"created_at":"2024-08-16T21:44:30.287+00:00","updated_at":"2024-08-16T21:44:30.287+00:00"}