Discuss Scratch

imfh
Scratcher
1000+ posts

[v1.3-beta] sb3topy: Scratch to Python with Pygame

Scratch to Python
sb3topy is a Scratch to Python converter I have created. I've been working on it intermittently for a long time now, but finally had some time to get it ready to release! Check it out on GitHub: https://github.com/BirdLogics/sb3topy

Converted projects do not run (always) faster than Scratch, but the code is converted into single readable file. Most blocks are converted to a single line of Python code.


Projects in the above image above by @griffpatch(left), @RokCoder (middle) , and @jonzo (right).

What's Supported

Although many blocks and features have been implemented, there are still a few major features missing. Click here to see a full list of supported blocks.

Working
  • Graphics
  • Sounds
  • Custom Blocks
  • Pen
  • Color, Brightness, and Ghost effects
  • Touching [sprite v] block
  • Cloning
Not Yet
  • Variable monitors
  • Speech bubbles
  • Some “hacked” blocks
  • Touching color block
  • Sprite dragging
  • Music blocks
There are also some edge cases where the timing of a project might not always exactly match the Scratch player, although I've made an effort to make it as close as possible. Unfortunately, the asyncio module doesn't provide control over the execution order at the level I would need unless I rewrite the event loop, which would be slow unless it was done in C.

About SVGs
Currently, I'm using the CairoSVG library to convert SVGs to PNG. I've had some trouble installing it on one of my computers, so let me know if you also have trouble. I'm considering adding support for a different library which is easier to setup (let me know if know a good one). If someone wants to add a “convert all costumes to bitmap” feature to nono word that could also be handy…

Last edited by imfh (Jan. 21, 2025 23:56:37)

mbrick2
Scratcher
1000+ posts

[v1.3-beta] sb3topy: Scratch to Python with Pygame

Wow!!!!
skymover1239
Scratcher
500+ posts

[v1.3-beta] sb3topy: Scratch to Python with Pygame

That is awesome!!
Sid72020123
Scratcher
500+ posts

[v1.3-beta] sb3topy: Scratch to Python with Pygame

WOW!!!
god286
Scratcher
1000+ posts

[v1.3-beta] sb3topy: Scratch to Python with Pygame

I will try it soon! This is cool!

Also there is another project https://github.com/Secret-chest/scratch2python/ I am not sure if it has some of the functions in your to-do list though
Retr0id
Scratcher
68 posts

[v1.3-beta] sb3topy: Scratch to Python with Pygame

It would be cool to see some example output (e.g. for the projects demoed in the screenshot)
SansStudios
Scratcher
1000+ posts

[v1.3-beta] sb3topy: Scratch to Python with Pygame

Cool! I did a bit of testing, and it's pretty awesome! Will support for the “For Each” control block ever be added? I use it in most of my projects
imfh
Scratcher
1000+ posts

[v1.3-beta] sb3topy: Scratch to Python with Pygame

Retr0id wrote:

It would be cool to see some example output (e.g. for the projects demoed in the screenshot)
Do you mean like the output log in the GUI? I guess I could add a screenshot of that.

SansStudios wrote:

Cool! I did a bit of testing, and it's pretty awesome! Will support for the “For Each” control block ever be added? I use it in most of my projects
Yeah, I'll probably add it eventually. Right now, I'm working on rewriting how blocks are stored so everything is saved in a single JSON file instead of messy Python code (see the feature-type-switches branch, it's currently broken). That means I have to finish that before adding new blocks, however, so it might be a little while until I add the for loop.

Once I do get new format done, adding new blocks like that should be pretty easy.
NFlex23
Scratcher
1000+ posts

[v1.3-beta] sb3topy: Scratch to Python with Pygame

Very cool! I can't wait for variable monitors to be implemented so I can test out one of my projects in it.

Edit: I keep on getting this error when trying to convert https://scratch-mit-edu.ezproxyberklee.flo.org/projects/540224710

Another edit: it's probably because the costumes are SVGs…?

Last edited by NFlex23 (May 1, 2022 18:20:06)

Retr0id
Scratcher
68 posts

[v1.3-beta] sb3topy: Scratch to Python with Pygame

imfh wrote:

Retr0id wrote:

It would be cool to see some example output (e.g. for the projects demoed in the screenshot)
Do you mean like the output log in the GUI? I guess I could add a screenshot of that.

I mean like, an example of the python code that it generates.
imfh
Scratcher
1000+ posts

[v1.3-beta] sb3topy: Scratch to Python with Pygame

NFlex23 wrote:

Edit: I keep on getting this error when trying to convert https://scratch-mit-edu.ezproxyberklee.flo.org/projects/540224710

Another edit: it's probably because the costumes are SVGs…?
Ok, I found the issue. Since you don't have SVG conversion setup, it can't convert SVG files and needs to use a fallback image. However, it was still trying to get the bitmap resolution for the fallback image. I've fixed the error for now by just adding a default bitmap resolution.

Retr0id wrote:

imfh wrote:

Retr0id wrote:

It would be cool to see some example output (e.g. for the projects demoed in the screenshot)
Do you mean like the output log in the GUI? I guess I could add a screenshot of that.

I mean like, an example of the python code that it generates.
Oh, yeah that could be helpful.

Last edited by imfh (May 1, 2022 21:28:45)

imfh
Scratcher
1000+ posts

[v1.3-beta] sb3topy: Scratch to Python with Pygame

Version 1.1 Beta is now out! I finished refactoring the specmap and added hidden blocks. I also fixed a bug which broke a lot of projects, and improved performance by avoiding debug logs by default.

The new specmap, which stores the data for each block, is pretty neat. All of the blocks are stored in a JSON file, so it's really easy to add new ones or modify existing ones. Here's an example block:
{
    "control_for_each": {
        "type": "stack",
        "args": {
            "SUBSTACK": "stack",
            "VARIABLE": "variable",
            "VALUE": "int"
        },
        "code": [
            "for i in range(1, {VALUE}+1):",
            "    {VARIABLE} = i",
            "    {SUBSTACK}"
        ]
    }
}
You can see the file all of the blocks are stored in here and the documentation for it here.
imfh
Scratcher
1000+ posts

[v1.3-beta] sb3topy: Scratch to Python with Pygame

Here's some example output for Opac3tyD by @griffpatch (the others are too big to post):
import math
import time
 
import engine
from engine.events import *
from engine.operators import *
from engine.types import *
 
 
@sprite('Stage')
class Stage(Target):
    """Sprite Stage"""
 
    def __init__(self, parent=None):
        super().__init__(parent)
        if parent is not None:
            return
 
        self._xpos = 0
        self._ypos = 0
        self._direction = 90
        self.shown = True
        self.pen = Pen(self)
 
        self.costume = Costumes(
           1, 100, "None", [
            {
                'name': "backdrop1",
                'path': "4b2a86f1da4c2593288abbe7f56eab5a-svg-2x.png",
                'center': (480, 360),
                'scale': 2
            },
            {
                'name': "backdrop2",
                'path': "a10d191b1511644ed42d3e869577e1ce-svg-2x.png",
                'center': (480, 360),
                'scale': 2
            }
        ])
 
        self.sounds = Sounds(
            100, [
 
        ])
 
        self.var_Resolution = 3
        self.var_Zoom = 299
 
 
 
        self.sprite.layer = 0
 
 
 
 
@sprite('Blank')
class SpriteBlank(Target):
    """Sprite Blank"""
 
    def __init__(self, parent=None):
        super().__init__(parent)
        if parent is not None:
            return
 
        self._xpos = 36
        self._ypos = 28
        self._direction = 90
        self.shown = True
        self.pen = Pen(self)
 
        self.costume = Costumes(
           0, 100, "all around", [
            {
                'name': "costume1",
                'path': "3339a2953a3bf62bb80e54ff575dbced-fallback.png",
                'center': (0, 0),
                'scale': 1
            }
        ])
 
        self.sounds = Sounds(
            100, [
            {
                'name': "pop",
                'path': "83a9787d4cb6f3b7632b4ddfebf74367.wav"
            }
        ])
 
 
 
 
 
        self.sprite.layer = 3
 
 
 
 
@sprite('3d demo')
class Spriteddemo(Target):
    """Sprite 3d demo"""
 
    def __init__(self, parent=None):
        super().__init__(parent)
        if parent is not None:
            return
 
        self._xpos = 132.1725565687481
        self._ypos = 4.912546966277481
        self._direction = 90
        self.shown = False
        self.pen = Pen(self)
 
        self.costume = Costumes(
           0, 100, "all around", [
            {
                'name': "big rect",
                'path': "c4958b3fc53e567c3f2d6903f3a7c11a-svg-2x.png",
                'center': (522, 388),
                'scale': 2
            }
        ])
 
        self.sounds = Sounds(
            100, [
            {
                'name': "Julius_-_3d_Demo_Tune.mp3",
                'path': "4baafbd297c5163c9bfe5da2a4b7a8b6.wav"
            },
            {
                'name': "silence",
                'path': "22392866c0f23819792658e9bc4f6c0a.wav"
            }
        ])
 
        self.var_pos = 1992
        self.var_lastquad = 30
        self.var_lastrendertime = 0
        self.var_incx = 72
        self.var_incy = 78
        self.var_ymin = 90
        self.var_ymax = 84
        self.var_xmin = -93.44758896468164
        self.var_xmax = 300
        self.var_xcnt = 55.67592596131997
        self.var_xminprv = -76.10188833345045
        self.var_xmaxprv = -9999999
        self.var_p = 6
        self.var_ply = 6
        self.var_pOrd = 38
        self.var_distance = 4.500000000000004
        self.var_speed = 0.5400382381196349
        self.var_speedTarget = 0.6
        self.var_starIdx = 192
        self.var_GUI = 0
        self.var_Stars = 300
        self.var_ZoomSx = 0.399999999999975
        self.var_beat = 7
        self.var_beatTimer = 28.516000000000002
        self.var_beatSize = 1.2893518518518519
        self.var_a1 = -0.7020497095555254
        self.var_a2 = 0.511866032704478
        self.var_svx = 300
        self.var_svy = 300
        self.var_svz = 300
        self.var_acc = 0
        self.var_peri = 527.0775063128438
        self.var_ind = 35.53957386718539
        self.var_td = 0.0957606658924196
 
        self.list_points = List(
            [-0.8040276720500144, -0.29271526339301984, 0.13363113549602848, -47.911626143953875, 13.445139405650869, 61.975484984148316, -0.5061708219851443, 0.6538253400375734, 0.2574947084610783, -38.88029270113208, 23.89699921288966, 77.33822300053956, 0.01381562942416649, -0.6126629922077974, 0.6119258045434227, 6.004924678902964, 35.531837354590095, 58.52431526753469, 0.3116724794890361, 0.33387761122279763, 0.7357893775084734, 26.866185715758053, 50.36695870415431, 72.03718446689328, -0.3116724794890361, -0.33387761122279763, -0.7357893775084734, -22.995111691367022, -43.109723620989236, 61.65754678663661, -0.01381562942416649, 0.6126629922077974, -0.6119258045434227, -7.884602343092702, -46.65410859267782, 76.84375374556744, 0.5061708219851443, -0.6538253400375734, -0.2574947084610783, 29.27939299558875, -17.99599701442316, 58.2407195907593, 0.8040276720500144, 0.29271526339301984, -0.13363113549602848, 55.35826330256229, -15.534842526976146, 71.60798937920059, 1.2516880008601288, -1.0616680911978267, -1.1351819042106337, 67.6241797993048, -61.796975030599754, 53.90906904828621, 0.9734028857521868, -0.8751494534208689, -1.5063532774331263, 54.10765307121713, -84.45917407126471, 55.749027701194485, -1.0724442096211277, -1.654249298486482, 0.309552256112522, -50.87156180170708, 15.471626388616022, 48.48204875370223, -1.3507293247290697, -1.4677306607095304, -0.06161911710997848, -66.61051083333321, -2.4757579894906603, 49.965101763102474, 1.3507293247290697, 1.4677306607095304, 0.06161911710997848, 132.1725565687481, 4.912546966277481, 99.14374107970566, 1.0724442096211277, 1.654249298486482, -0.309552256112522, 110.75265681961221, -33.68333243903171, 105.55043952572944, -0.9734028857521868, 0.8751494534208689, 1.5063532774331263, -79.79722095673223, 124.55922577748973, 82.21789763713979, -1.2516880008601288, 1.0616680911978267, 1.1351819042106337, -108.60164179576256, 99.24339143561592, 86.57573997496672, 1.0729604317551955, -0.878239189426486, -0.5722340487931296, 60.104749633485035, -32.42391212308745, 55.73066203911069, 0.5163902015393135, -0.5052019138725763, -1.3145767952381233, 30.550744891785886, -78.90050805164623, 59.81219060830805, -0.5871340043028463, -1.3015114803469603, 0.4597189228662642, -29.18742124287494, 23.933447513366314, 51.47577793817772, -1.1437042345187258, -0.9284742047930521, -0.28262382357872984, -62.339880852353936, -14.964981438402184, 54.9385086139351, 1.1437042345187258, 0.9284742047930521, 0.28262382357872984, 95.3694079008873, 22.89387466762048, 84.04656803688688, 0.5871340043028463, 1.3015114803469603, -0.4597189228662642, 53.12230722131608, -43.55985892315359, 93.68803318846312, -0.5163902015393135, 0.5052019138725763, 1.3145767952381233, -38.17092300043672, 98.58041852015454, 74.73096090730736, -1.0729604317551955, 0.878239189426486, 0.5722340487931296, -88.71398307386997, 47.857355846529, 82.25787544215683, 1.4705955986416253, -1.1129323546504821, 0.35878978205499035, 102.48209568488191, 23.816605196065094, 53.44256463273567, -0.19911509200601463, 0.006179472011234938, -1.8682384572799942, -18.50704863519583, -160.01940969568008, 66.49667969962444, 0.14252004979519134, -1.4515501873868624, 1.1843521593825015, 11.071858746144576, 76.65734402765746, 50.25577174938265, -1.527190640852448, -0.3324383607251463, -1.0426760799524786, -121.76466322491632, -81.7714278809795, 61.633737932011066, 1.527190640852448, 0.3324383607251463, 1.0426760799524786, 142.38215031514335, 95.61716369656168, 72.06971141134844, -0.14252004979519134, 1.4515501873868624, -1.1843521593825015, -21.59454499433319, -149.5124262967825, 98.01881952701814, 0.19911509200601463, -0.006179472011234938, 1.8682384572799942, 18.477995707473546, 159.76820636036223, 66.3922911897563, -1.4705955986416253, 1.1129323546504821, -0.35878978205499035, -168.37909504796193, -39.130917485907865, 87.80666134669723, -192.26192053601963, -174.00688689781055, -196.54504635194874, -317.17182014405154, -322.05863168518374, 1.6531120122882732, 173.5558715443796, 53.13940744302991, -40.10688178423276, -1016.3119080175866, 245.38398639931688, -5.8907569274120855, -225.22454882515484, -227.646269331458, -19.623365576069766, -283.3350581809263, -22.416976361931383, 1.2729316976338891, -48.76826731940144, 120.71832829993404, -176.23206449344138, 134.03127985821374, 454.7097634367476, -2.586674064449883, 182.50380724837163, 326.543905150942, -89.93573044034407, -163.84439779655244, 84.43353812857224, -0.9221403986062678, 179.78754746827403, -133.1917439481557, -100.69456904635393, 398.3269626438108, -225.7489422027148, 2.2068055861708267, 228.72607461792128, -85.24344380185924, 168.24962550341175, 795.5123194236439, 571.7422220394085, 3.440094729883623, -34.93355548077656, 348.0218715726326, -182.84261426345796, 35.58485167886467, 159.08704391500228, -0.8715988648726193, 67.21690284236072, -69.48321066083899, 267.62468124810874, 288.0666485176335, 1091.7864942265705, 4.088881088911711, -265.5517176249297, 287.26994087326875, -28.341920761260603, 288.09078352334006, 27.781030636783505, -1.0697993680706386, -175.80077762729297, -133.7152996779527, 53.835898802702246, -369.95716019371844, 118.02985026471049, 2.1303377712188336, -266.15535611576036, 52.95843172887552, 64.5114662714884, 1760.8876016958636, -442.45302199770487, -6.6149700575201775, -301.11811215299775, 128.73579531253384, 89.73837227865852, 748.7223483408355, -229.24779826722323, -2.4803692080800186, 39.01460417624886, 51.98139130986975, -3.129781861597584, -239.08223742352385, 21.686537784491968, -6.234990594580671, -74.23395590621182, 132.34822907171124, 297.28482031736894, 172.3693355622398, -701.6540054887984, -2.35504835322982, 304.89070273544723, -144.65958494069804, -4.925635308467054, 630.3992097294794, -15.728347345571565, 2.0562030080907334, -89.8453031686831, -83.48431075660312, 340.627639594944, -288.0116033943637, 1146.4711681148215, 3.3579821888439247, -19.81563198720707, -167.17215397464747, -28.736933165444245, -31.34570027668764, -49.673033558065725, 1.7393273374972194, 239.3814956991933, -56.96636429281584, -49.14602283128587, 1223.9666360326553, -261.9566260729376, 5.108098849198443, -276.7479651305599, 126.41192665530093, 106.67045870566174, 699.5782504728904, -275.3249856032113, -2.5227103198850287, -15.545223206711347, -93.31399890210425, -152.43307771677016, -48.08250903123014, -464.56711092106724, 3.0505801264309484, 386.7489773921464, -145.52504365724252, 27.56241914434311, 800.0920633971921, 49.61548668106367, 2.058200339656161, 87.55525585169912, 342.908153963228, -168.13409136645956, -72.09196223907269, 148.78754095467255, -0.8808710050730783, -58.03253485600112, -108.70739200789282, 300.0598704395114, -141.81941390471113, 789.1760881726049, 2.625630317626764, -96.22774768441079, 179.16127917303302, -73.56259978894205, 170.7685420707136, 125.31537032212893, -1.7237327120711181, 50.154250817250464, 59.97265536217123, -109.84457823124276, -258.26874983745387, 588.118697501457, -5.332559676151834, 92.04593869659791, 64.12225775649804, -133.77922324621775, -443.3736548657077, 662.6688703389234, -4.923385093549136, 234.45415725117243, -195.78945902261972, -38.42830461506092, 358.1869397282766, -61.37526368153722, 1.514642112554995, 241.9097553891191, 212.00846664080933, -14.215413704817946, -339.77829946836675, 23.265870984882337, -1.420731661570064, 41.125312662024726, 202.63278169755154, 73.68625276169294, -59.1528715074413, -110.363549216654, -1.505315056613652, -298.3659804108997, -24.495365879903833, -84.96891527632143, -2735.5328485657365, -753.4857924484423, 9.155352182406514, -11.709245956057263, -62.90923308153223, 154.98168099687135, -42.29523621297174, 686.6319621798629, 4.42759549091203, 335.49685482759463, 239.17418114054217, 68.01887623971191, -417.16164104753176, -81.41860475409698, -1.2522287012118758, -172.5824060609677, -261.48775048466143, -123.24555776788999, -190.10870087637525, -135.72726870355913, 1.115271557614242, -320.5583240377461, 89.82234468375691, 30.875638398538484, 1180.4995503795462, -123.94070125158963, -3.673606334361113, 26.81488707784487, 148.95412582542212, 127.48972401331325, -53.95254755937768, -262.77696708506045, -2.0651247381936866, -146.1709451055022, -94.97094643407553, 266.6244025384008, -421.23760691260543, 791.3807584841538, 2.953799421142513, 304.6455086565721, 96.77718859493534, 62.69997829838292, -946.6933639394834, -186.7816262653324, -3.114278716066836, 128.4611360163066, -298.8595909879796, -45.778602143276125, 130.49116354029044, -46.49394557860668, 0.9908266519950556, 311.8542389421845, 110.72848918054027, 116.84234034319596, -846.3136770397889, -309.8614106203002, -2.716850727584743, 133.96208387790298, 160.7478079734251, -144.93895591755586, -247.5213421782281, 276.780153715297, -1.8940687618826775, -310.5432045819966, 222.87053150644152, -59.3012820134749, 437.2870693119004, 78.77633070414828, -1.3936636077707536, -139.28090047136246, -50.11696568261712, -83.75631250797001, -739.9455241337347, -437.9653369823779, 5.308111868446278, -85.36388478568206, -83.85616250402967, 153.87706260058155, -277.5000299182539, 517.2967241895308, 3.345307578740305, 86.82734084256194, -16.15932251317108, 136.92658141781698, 1347.51149536859, 2079.109549265455, 15.271239640487874, -13.7839774946763, 3.615276817650848, -111.78072963530212, -4157.843680712906, -31313.948452776018, 280.457422094808, -11.080653069983345, 194.14957739635466, -102.92793635414104, 22.687099458212888, 162.25107181638643, -1.5779365585927425, -42.72454124647645, 96.36872880302587, 321.58774831829226, 134.25462000158515, -1053.5364781466676, -3.272293461263567, -53.88486107475325, -16.04877367491883, 389.31331320740725, -709.2354759291852, 5506.404576736134, 14.126985417583084, -78.41124465602591, -266.5578201373408, -125.00241597339367, -83.81824782645363, -136.6290957897552, 1.0992153627346932, 296.851133393138, -189.99054816778212, 11.99976166807852, 468.860720741208, 14.645155039284154, 1.5667749947559042, -253.84260458925326, 101.16837327126056, 1.3751251438654153, 815.1421063967218, -11.642863712261041, -3.1961252182506805, -37.766936992525444, -110.36626743875435, 81.96917179925393, -92.51221348245492, 213.41006059229693, 2.5929709926475835, -36.183637371449244, -150.0184746856947, 83.75679760894849, -64.82676731441435, 162.24804304497118, 1.9297621177073343, -325.9843506969062, 58.438818592337014, -33.363231827481656, 1957.7038257414258, 182.31978815612393, -5.9875770301369755, 334.9207502312929, -108.22045248110004, -65.70709426276952, 923.9042655416207, -189.10903329213917, 2.752817845821667, 363.65017079422853, -133.03853099256133, -29.669845064746173, 820.0340263244299, -73.95982281569601, 2.2468322268246856, -115.522737784733, 205.89174352029121, 187.38219217644885, 173.97188900795246, -281.69431763617797, -1.4951391863454877, -18.590020652148475, -77.51230632048258, 310.4114231876311, -54.071712432999, 1129.6673075841854, 3.6374572113216326, 24.681980410142227, -51.19375444792632, 262.90492212845834, 149.368025396936, 1418.7376702286263, 5.401136170296284, 90.42078783018077, -42.5889641684952, 166.7520932438373, 601.2691721284359, 1079.54162045827, 6.505706209537987, -121.50685122527547, -5.665565283328418, -50.497386982541514, -3125.416352192137, -1267.0933008879265, 25.644535780758005, -144.01746312415463, -370.583772166251, 193.86499095935483, -109.29108931637852, 154.85171008067013, 0.7935259426848453, -165.92001595830516, 158.8133271713293, 197.46866618196944, 326.080089036425, -390.5963991835826, -1.963357812770747, -101.63126192452143, -47.48442541472343, 1.147010724358604, -567.5281865956297, 11.543530395928174, 5.617560573955469, -73.55646197329725, -168.26876443715335, -195.1001505683045, -126.06893249901168, -334.73378468565176, 1.7215695398962028, 90.16811925137658, 8.838048357616303, 235.89107242594974, -5039.317506176801, -12854.449904073024, -54.68207203566801, 16.466366066130064, 194.56148910219767, -178.60482810159132, -19.623921784714582, 280.94913584505906, -1.5717890966450236, -237.0055101040107, 111.5300409377398, 104.41952288209433, 681.7124523869073, -305.90130041186046, -2.8714316975090317, 69.4138628740605, -33.60995031652267, 266.49218664397665, 579.8702211581484, 2135.3025235253012, 8.03163696211519, -29.014796257884925, -38.92246515815726, 344.3547315379032, -174.04062693329323, 2355.7775140770423, 6.836262813376172, 186.60806943945704, 232.22183774919438, -164.65856809836032, -236.97954554636823, 216.24042361429622, -1.3001540036003285, -275.75675938722316, -59.842226667088426, -173.56588142324256, -1220.7230183961374, -755.2557634048036, 4.414236487452396, 44.7083687467714, 102.34750945871632, 201.1147638923229, -137.47106735480833, -609.8132633815617, -3.0383208347708504, -181.84084375901344, -179.0802111449686, 168.92952214164075, -286.6721982711978, 274.48954708766405, 1.609463064353929, 116.79944697066608, 38.66364438906099, 261.8950368179907, -995.9689623800707, -2189.513587426294, -8.394049971011519, -18.225910069480488, -237.33927610335735, -4.569854561701366, -18.97006829274077, -5.443807116257143, 1.2353061125887272, -148.51111327717587, -85.6699482557785, -56.98340517835345, -480.90411245234696, -180.89769240081023, 3.2503760925442453, -56.63017426787696, 0.8934022150186097, 440.2978783853789, -3705.6806944184714, 30993.702534088785, 70.31459029041146, 307.4704494170437, -76.51905031985007, -25.15463391936967, 1192.7199932927256, -107.99173345432268, 3.8706080537859093, -180.4214018292526, 170.45754698470523, 78.13668514425723, 331.95722408529355, -145.6178854098321, -1.8260352699134288, -90.96588768500098, -1.073434638527773, -247.55616291172566, -4147.875793000821, -10986.365584122017, 44.527232256096305, 234.09569201551886, 159.54993433945086, 186.2042510726197, -442.6069306412746, -348.5642202605556, -1.8932852465622934, -289.0701312297313, 151.83521709374983, 103.08988364060072, 602.9691459176144, -219.72365014853483, -2.07937315962404, -196.18151892813523, -115.43774576349406, -174.95124130832136, -479.7301936825464, -423.2406814856343, 2.443770753685519, -219.81204056661582, -174.58550424596527, 68.98961208661541, -357.0261086813842, 116.71682948982121, 1.6450440922025316, -263.84195527125513, -201.82417493122153, -162.24494518428085, -374.9467020522853, -228.11922769476308, 1.4268027495264686, -70.3272630914353, 318.96846933097254, -92.7749448335672, 71.56808575530972, 87.8607943317393, -0.9535268850881597, -21.421737137338603, -91.86362704107165, 158.49032333705813, -58.43048614406426, 491.12866443253586, 3.0951788963773295, -256.473289598079, 31.443523858871266, -10.136817229530351, 3228.003681510227, 98.56878612712846, -12.564255004414342, 188.0972474283361, -19.60409738065256, -158.95944012150798, 2561.577875115355, -2201.628297198728, 13.70591106658382, -213.98899355731947, 68.23643763447042, 100.4315590122705, 1046.410641199856, -500.64148977273237, -4.891979298170431, 158.54224698225386, -19.064941863051246, -57.051584416371256, 2187.8021028818775, -808.2966174645703, 13.825150419813152, 370.3895509482492, -93.24305942017581, -16.072007892188225, 1191.338783142298, -62.17516162640001, 3.208164785382069, 132.3872153877578, -270.6778454720469, 65.1239447550521, 148.96013110295453, 69.89277538002439, 1.0931225149449142, -78.94366788467833, -289.0847056438151, 184.68331869523942, -74.86698368106488, 188.207442858694, 1.0152455621507261, 256.7048371661249, 51.16726022532056, -42.81981220228632, -1534.900201930804, 270.82813061153416, -6.003539582270415, 177.0610682306513, 287.8650872894075, -110.68002164664517, -180.68230026717612, 117.56523113504315, -1.0472826580175314, -152.7703908872902, 78.18551836642544, -192.37263640739818, 647.3801446686442, 795.5368550661407, -4.16511081114393, -231.82908550994378, 282.9672616077278, -12.680790361042119, 255.36429002385842, 11.509816014811413, -1.0848891425905702, -101.73553128536645, -99.92714628079887, 119.01027838226865, -281.40642925601196, 339.3596692091477, 2.8300160665916514, 124.46384005071978, -53.39362546686475, 69.79163893567814, 667.0408984838672, 364.362916407012, 5.305462296616829, -118.47069984635148, 61.615204182649975, -43.2117988184376, 642.5344983531955, 226.4578995747644, -5.37244982516657, -32.689371809007966, -22.20638284623683, -226.43162463267333, -379.5217188249461, -2492.185166788483, 11.02100146318495, 118.0497263990701, -185.30244813613695, -95.41102767905731, 189.62754508773554, -153.12816234988807, 1.587448196838764, -10.632792266249119, -173.01463645425292, -80.31736361463915, -15.53422368096858, -135.0227136152635, 1.683172677567968, 16.261997632586937, 266.13744069857813, -126.31867986611876, -13.557418767922654, 144.42628028822855, -1.1420806292224055, -137.80631094274676, -213.84418216712868, 161.55211110136557, -181.7482660512374, 221.229553419524, 1.35909778183325, 72.49155356255902, 123.36756354133495, -166.13072559811678, -173.53280138573135, 416.48247697126607, -2.497320920124876, 145.22094340345512, 292.5363629390353, 43.51266687457732, -146.51755264933294, -43.553926498167044, -1.0317515361366905, 26.903904915945294, -286.75894712242206, 107.84008997846357, 32.251881426984305, 110.59291864963312, 1.0278588170491958, 135.4604481542542, -141.10263178061223, -272.1516353253892, 279.85174578571, -567.7321364756019, 2.076935095813796, 58.2940365976277, 215.8165491908385, 159.04094251046467, -80.46919238819723, -223.53056851207936, -1.41016455528687, 3.065032888090375, 32.902826527662484, -357.5597954206483, 5.60688255750149, 3764.7509197384866, -10.528624593030655, -208.9614052598544, 45.10550504280237, -220.7501365100197, 1663.0973548650193, 1721.3952134241188, -7.864757519232542, 96.04500216508177, 240.02934863323088, -262.5685945514125, -114.65204171336951, 332.805041504468, -1.2634192903913743, -104.90369153831757, 181.47617898777716, -129.2076281562002, 184.28774764594723, 218.32316799351221, -1.7021218178262716, -295.816380837906, 138.3025281015969, -99.36839290176195, 685.4116736951752, 222.19187093905484, -2.2972284319367264, 214.42418351445318, 278.8519360365744, -5.819349788447696, -227.71836342007285, 8.350291830153928, -1.079587820666068, -237.97862082739735, 52.608523821550214, 41.863086095330495, 1576.0793941238153, -291.0214357149698, -6.616013886902045, -38.18958006907329, -75.23962335892236, -67.10107952756995, -141.14272489393736, -248.85430142809994, 3.7277505427458553, -131.56231642345728, 5.648411549206468, -153.1223418411277, -82715.35368906886, -94506.28121530352, 621.9936808318877, 298.71047875647326, 172.01341388533663, 161.53461606271475, -520.5423352676108, -277.4830984170167, -1.7467190902667136, -245.28465959161798, 47.46673073608521, 29.939003008406257, 1837.4250540946946, -240.39845240762241, -7.482267615237579, 16.077530039389497, 65.31626285745094, 279.40883573679565, -87.0530616447526, -1367.9296390812106, -4.8985130716897345, 50.1798783538343, 364.78871480261637, -122.38125376768404, -36.96350350060198, 101.76880987139629, -0.8285698583256305, -85.69998157092358, -62.61097548243769, 34.1376421727072, -371.23753600011815, 153.12213894083956, 4.387216034061772, 126.11236327041932, -44.98034102499225, 180.55038037630712, 800.4312671739222, 1119.667363304138, 6.240603004002219, -5.478878455856403, 134.9755768874976, 98.87656558079438, 14.327179833868323, -226.80579371097397, -2.292784097685381, 5.019337817296584, 196.8936263726841, 224.49878618174273, -7.164423399973881, -348.68199126501685, -1.5535298723915694, -100.403181344023, -78.23084048810459, 77.724746772329, -351.686497179316, 280.02273417732994, 3.561786892911227, 107.06963608369631, 87.56676823170974, 285.68190775165687, -384.4917313721352, -1008.6035557534441, -3.542514950486864, -49.09081679940234, -276.83865205449956, 156.33122157238685, -46.983284645769025, 166.27147179817948, 1.0606514081681668, 139.8698995967492, 262.50099075007864, -82.07094063911194, -156.4789270894857, 95.93063761934208, -1.1513904043329597, 82.58973060629422, 112.66508955646572, -315.1357036544986, -214.75442234764515, 865.3800136282487, -2.739749889190479, -198.10448835432894, -21.96880004348985, -100.94544281170448, -2055.515599564838, -1025.8388198252135, 10.34407619191553, -361.8358615247095, -158.48620275565415, -145.12728486989045, -644.9720694118432, -253.3981497812095, 1.785890198831347, 80.01375018301391, 319.5204198751301, -129.77865435398348, -70.90757272299308, 123.48297181443216, -0.9463145937412503, -63.940207575607765, -255.63552845331316, 63.61702103147021, -69.03013708452663, 73.5609617845278, 1.1460646419063978, 69.79052100329308, -53.93806968600549, -324.599701014942, 350.52975344163224, -1687.7336194458233, 5.189669519413027, -60.81564156151781, 255.18226428389974, 55.28534237743764, 75.89907216787728, -66.78871881205029, -1.1963635538197481, -307.11247349717087, -201.85209774336312, -224.11304170531773, -436.2901590132549, -314.98869244949987, 1.422967222484606, 307.4889730721536, 212.21973442314396, 211.5285133738096, -433.6574964249298, -295.15273660135955, -1.413749017880974, -314.8932480413668, 55.410673311510706, 82.07860436995637, 2000.2413155031077, -539.3771451819529, -6.35395072600807, 202.56704551258437, -44.10196449418278, -66.26920715687366, 1312.6605126821944, -441.30584236316247, 6.482525514186166, 342.46995868509657, 81.56831525987245, 94.05282672686242, -1259.271312214328, -334.76530074183523, -3.6791610951492855, 389.466663627288, -78.18992019180595, 32.419916393541676, 1499.3225673143595, 111.06395492218014, 3.8378282189030455, 107.71984870918793, 82.14994978561332, 269.0015211663384, -412.9738361401896, -1014.5261694934396, -3.785143486315452, 157.52327261365147, -188.7908701914874, 9.296516656135143, 249.8646905203663, 12.327316277786574, 1.5626170930316798, 303.7060094431977, -132.6582620747572, 32.97640588172267, 684.8244067553393, 67.81638278924535, 2.2409828220145376, 137.73015007816042, -7.083682162931004, 127.57047666528737, 4204.0702915489965, 3822.6456804502877, 30.258020471766937, -204.4174170152079, 96.88457164341115, 57.8091553934238, 682.1870239756212, -198.3808129077407, -3.3266930581025416, 60.54118594214363, -101.83044710719993, -103.29726301917478, 172.33157846238987, -294.02098069594706, 2.831644735792644, 6.193479047652108, 16.43463328416534, -229.43091053878803, -98.3487581251097, 5725.356774552244, -24.949579473558675, -121.29676638181866, -360.07439928285856, 141.69869001194812, -94.43778642495145, 116.63420273451658, 0.8168996685281826, -223.36436005199417, 32.83575460246687, 150.29030022326768, 2596.224501670522, -1777.6760483346386, -11.673751537731777, 65.47098519211981, 152.06295342278892, 47.53322886498274, -129.03463853475026, -94.61504589694239, -2.015382824188461, -75.8451373737298, 375.5860382505655, -111.37612520158744, 65.78622299305282, 89.42467972137949, -0.8078540135709921, -125.39503690934966, -102.03319993200583, 324.2827596749147, -335.55545421289753, 900.6280679321817, 2.7678414360513672, -22.284510963254565, 138.41252198486745, 226.35894802531755, 49.117869278997645, -506.8177105195149, -2.2371218507616946, -301.1848179220171, -188.3364927741768, -131.510713578647, -456.452306657743, -195.98137816598287, 1.5214198215948112, -44.18594697677704, -82.68294225332603, 300.06187915597906, -138.0586756347308, 1024.4930565801492, 3.4099228284814806, -49.254066477607886, -215.51766358767193, -134.68545861503597, -64.79677603527242, -181.93198221889938, 1.3552733334344764, -33.801270971914576, -287.4655026596302, 81.60304928597404, -30.218346699486784, 83.76500455613059, 1.0227497389844724, -107.9969236847696, -13.172682359834477, 99.94570741895159, -1684.166757834995, 1589.2915402089413, 15.750136719048124, 43.210939974307365, 147.47485470252442, -137.45174117155156, -83.71428505635188, 287.23431160555526, -2.0839406988536338, -65.56733222955525, -252.95994831528986, 13.645091986840432, -72.17700993501322, 16.47619974092063, 1.1578250491807351, -139.76069077562855, -266.8638138261884, 95.96172335546177, -148.5086978309984, 106.44641741746837, 1.0950549269452896, 340.51382557237184, 107.08715949743318, 80.05417962255179, -951.8871254692883, -215.67711617636678, -2.8006755795446043, 209.05627790439988, -205.97570773844782, -155.17241716707971, 302.2415132513188, -225.82756943506047, 1.4380820483015253, -191.0091216229755, -165.63687209080504, -282.18600160070616, -331.9043226426924, -486.1574475882405, 1.7333773008658961, 146.59323408800492, 84.39799517458219, -113.29784267927424, -529.1011360019578, 419.5423995362336, -3.6608348136122197, -237.40293611935115, 57.335282584277586, 50.54216077453232, 1423.0628567128547, -315.3683607217525, -5.988649654961074, -187.23710467286148, 57.84833878067454, 61.68334870998467, 1097.3030669740408, -371.0137390599034, -5.856238228967833, -230.92809761739917, -194.30466029863442, 118.60400620744204, -337.3449288586416, 178.9527102163723, 1.4830871903152867, -76.58171430780816, -341.60132264812574, 190.19930305795384, -60.91129537684709, 164.47552950768122, 0.8616884536496996, 234.2910936998803, -76.8568203120425, 12.0296054136393, 896.5272892459019, 37.85567621485612, 3.809929950951908, -73.55649702004787, 162.90737931047306, -34.06797872187583, 144.00060507124257, 63.42895767163745, -1.8985309981575738, 151.90644749272596, -302.965648295814, 63.900281169152855, 152.81179246536115, 61.19503793529645, 0.9784841167498138, 221.75500159525905, 138.95060737238725, 167.59309652096317, -482.85361797133436, -360.96813594596057, -2.1796890965990405, -66.35037994851355, 158.4329147794841, -200.6754532268328, 136.87008573366077, 390.7757100081264, -1.9531490929564606, 209.55829232787949, 207.2842224083768, -62.38245940330246, -300.6130755896993, 93.56367675937274, -1.4561967182818156, 109.22134529346066, 236.14775976328573, 20.613883462819995, -136.68400259755688, -25.20301091140128, -1.2834242967102139, -155.09220270500745, 215.67447701432235, -155.2189658891298, 227.3548021247175, 219.81509210485373, -1.428973817481504, -16.893112970633712, -211.39083800912738, 120.62560040411738, -18.298933316545632, 167.12615898309284, 1.3838188420687707, -0.764872889209264, -120.8815330034893, 232.14665354783975, 6.6549562428215685, 553.7101584080162, 2.385198959544599, -73.40770932727229, -53.976023312196006, 71.02039718177245, -363.1676734019559, 361.00120793525974, 5.036755726923069, 140.72075522378924, 314.72431284266565, -14.706257175103268, -131.05266811186272, 15.301465063504285, -0.9585692031388444, 37.25321613095274, -242.48909807860184, -91.85986362005124, 47.786142169398765, -111.81246011776638, 1.2128611320469358, 117.78349726136871, -30.977819015560726, 139.94792557847347, 1049.4882041969092, 1220.8034606182148, 8.789707838151841, -112.18794096061426, -227.0157719103335, 189.60934395203265, -138.29443512759914, 244.74976470033897, 1.2840744963467636, 146.2989308348164, 318.7477913489981, 11.422186429668209, -134.80610017252138, -9.570069006497455, -0.9461498053065058, 177.88947308865946, 108.47486891080818, -80.20933220932555, -495.31217912147207, 230.42566521972674, -2.817100504715394, -92.86352979614388, -12.350054435014695, 122.69001789229131, -1523.9144802337096, 2054.7433429067123, 16.6356137440523, -36.45199040744687, -91.0878559805698, 123.0010342537164, -106.60565900328972, 384.0392396984136, 3.114123532935643, -11.052535160843583, -25.805153082451458, 301.1078443335845, -79.11495166749367, 2961.854189630379, 9.833690602010096, -45.88265394576343, -60.72054421433828, -230.50552402666798, -214.4350408239563, -1045.4757277370488, 4.543839206582993, -160.1880811148066, 102.1132358647208, 307.4697766534957, 495.87478141898697, -965.3115121382501, -3.1251124611324403, 52.52666339255677, 147.1078834585669, 140.9617665537515, -108.48582235592163, -293.22070832651707, -2.087174918455067, -139.2900280761503, 117.17334047359175, 159.27239402462476, 375.2796603075527, -432.46186903452167, -2.694291830442138, 242.2669738510959, -185.9906843285693, -132.31091083382248, 387.9926087343683, -214.4085879183523, 1.594472083764723, 192.49130982499787, 249.68363697669506, -113.14669565278605, -227.59128580659558, 138.75621983472539, -1.2080272812611748, -16.365099060158713, 195.18530321524946, 5.2802042726439735, 29.36711558111021, -8.518011580069636, -1.5697950912568495, -131.21225638144722, 268.4034709971366, -104.86619764546884, 154.39150733305166, 118.2138252256118, -1.1400717557541737, 52.1819195714061, 67.42855101485083, -165.5428557900884, -234.66015335066538, 781.0991615558016, -4.705347937798019, -32.745171422087296, -195.37469353070682, -35.90936349194006, -45.78840485060624, -53.174519932705095, 1.4930205462695958, 172.69129516881546, 193.21864381874676, 202.01304497669648, -269.6493736465709, -314.0722107710188, -1.566740132583988, -103.10100342094194, -28.07776381884655, 152.09806555911143, -896.2905107932751, 1352.687440889967, 8.840339657621552, -4.247402235493655, 205.2925404415548, 92.87589506402163, 8.836840285455331, -138.39188262675242, -1.4895240960246126, -36.22984799918423, 13.686573069632889, 236.10394920819834, 1169.2053417028653, -8062.629795104431, -34.10325469933826, 234.39300473510707, -162.1481671391007, 136.13188334239118, 433.7918984812579, 244.73828235133234, 1.8259626257564157, 306.42265769811274, 214.06371779385714, 100.09933191558397, -427.03899815105456, -136.4661592152628, -1.4016962127384751, 308.2372030303256, -93.83014450125116, -77.53533704058697, 976.0352121136758, -253.87864692165752, 3.1621814618479034, -325.1526854207685, 32.52653131969404, -114.36237742421396, 4063.3960459300315, 1386.917654003148, -12.443966524386605, 22.75745063912823, 1.6579347092909533, -129.3845021005878, 2503.195771597655, -15031.963277246448, 116.00290466045858, -28.510810651646533, 139.6528672373184, -304.4900793259985, 73.08311352614389, 674.9994452045663, -2.218763700948843, -246.25938770713483, -228.04703029948556, -173.78683247403828, -310.9606045003864, -217.78335761853285, 1.2692824052746097, 149.7108836794905, 151.317828783129, 25.75975609927029, -297.8456467274754, -49.123939756239324, -2.01152300590007, -324.27568567211927, -25.81807500350987, 6.534841192836657, -2824.1285338242146, 82.24410361202747, 8.720114864602534, 210.52876486929938, 284.77036380329304, -48.4197945474789, -218.39887901037594, 53.17561906587616, -1.057197777832537, 185.98637030944988, 154.6260226332373, 331.6079918102122, -366.8762738173684, -647.1847841946653, -1.9615629284627407, -42.23365829679538, -154.8081115952867, -205.08477692861536, -78.87460250942371, -382.9233475181713, 1.870662774544653, 105.63590494580839, 51.682372191398876, -349.58830844679096, -628.8580020769242, 2163.847830598708, -6.17328467940006, -118.11726683101338, 160.99867849128157, 308.212158802615, 226.21336437907502, -596.2817102006476, -1.9281226339452409, 97.25387683966837, 116.66812657511795, 70.57783763362983, -254.38417451239036, -183.86022014680688, -2.6376454820289075, 22.748500414352648, 35.31331078658848, 0.6897662625636489, -214.6544072903198, -4.678985355329385, -9.617408409193057, -37.58804828615286, 19.447887164947005, -325.75898519300546, 842.8150178385408, 6733.294089546101, -20.691712612952536, 291.10782901520696, -53.20959684697158, -49.668589372848416, 1608.5442554887297, -288.6344204914745, 5.522279898598592, 91.551105663039, -318.733770190507, 99.88081646625996, 89.43544226297882, 91.96126006389002, 0.9283488547702003, 150.20117810780377, -117.64537607252798, -58.57619841590842, 375.54898410631637, -148.91438525006515, 2.485398303247675, -48.345110625160274, 214.34921686340775, 46.969809958142235, 72.22772379935327, -67.73154471145327, -1.428940580759666, 189.62325221974535, 336.8958631418871, -81.98900373457558, -165.04359094335317, 74.75761748701353, -0.8933775785697179, -224.41823583196006, -111.8226016922879, -224.70682886137277, -564.9905956505714, -559.123998809207, 2.5107390777173455, -200.08593706786974, -244.59933046632008, 35.18214372687529, -233.8848613114508, 43.94530299832212, 1.1887314900615513, 92.3141659237413, 6.136604515068434, 30.861572218688927, -9982.998807470733, -3241.433959837259, -107.9195895513197, -216.29975555387819, 61.73825267835837, 154.12917459239654, 1180.9582471996262, -854.58384470342, -5.4761580345414025, 300.6922916429186, 75.90449713552042, 32.27461376423125, -1194.6858821350334, -117.81783414467101, -3.982074054467668, -80.1303356304353, 75.01958662262422, 93.73468215732792, 344.83541730237164, -406.0771204506972, -4.29953303231435, -150.34023796018974, -167.87010318054874, -285.51083880177316, -258.8184931312324, -487.64494590225456, 1.7161148300101543, -202.82172062431252, 234.66656966887882, 159.5272680220389, 268.2272474881066, -211.86851793690366, -1.3132386639426765, 305.62573267431515, 120.30639339374979, 108.81305283451101, -763.0155194509014, -265.29819961944514, -2.5009642897806588, -302.09304195043933, -218.8688135862864, -50.529528222096005, -394.8245047990368, -62.982631442761964, 1.316836938984909, -218.85779270335047, -122.65371409544741, -284.1607472787243, -506.2532251982922, -649.7608322742005, 2.3025306737199265, 83.88629520354807, 283.462097277854, -241.05668700964694, -83.5771770624171, 258.25737813160333, -1.0680775082079237, -42.64293374946823, -103.42335165051202, -2.4880389636014595, -114.13415085752177, -5.809643663794627, 2.757327508798265, 217.20788748824046, 123.99522452478564, 251.04763592746363, -533.2852700797139, -609.61932696257, -2.4473154147200247, 44.92237773681762, 234.95495168691627, 201.58410005559858, -56.74172126078975, -260.38397868013675, -1.2943174874996743, 191.203232740007, 26.49992325697094, -78.84844203873571, -2336.6577778551614, 989.8691999679025, -12.288355042656425, -88.16699798268135, -34.995920015649126, -218.20601517445752, -660.4731567644052, -1601.221923174842, 7.364999101009269, -115.02992320579958, -73.45152134064445, 153.0587791029776, -424.9138553835787, 580.6756422087968, 3.7686558257362037, -154.84982418811336, 126.4372578363258, -158.48391325747696, 393.1343245735875, 391.3835224519126, -2.491393556105712, -31.621667328029286, 216.15060505907425, -173.46176805613928, 50.698710009066, 245.13106142221255, -1.4155323400030237, -78.58249319669223, 12.897796366450812, -278.108678676131, 3279.9755759007403, 11202.87377391098, -40.38591686968666, -292.9452307816561, 286.7335761064503, 103.73497889440232, 317.0966322548721, -114.12105115386753, -1.073091689449003, -210.03550543421622, -258.4361432006343, -33.01278732154164, -233.2814442099235, -35.0644464377682, 1.126203446525064, -19.169472284491217, -114.51876268523891, 358.2568656254007, -36.529901941899254, 898.9974858051049, 2.5082667864262667, 320.06067314085425, -19.05346511106695, 53.5549121811362, 4886.698525092436, 772.3608104045211, 15.235902831362178, 112.76902169932032, 127.7195320175895, 350.0812282561703, -274.2615504289076, -837.4302693630934, -2.399102439916358, -83.37238140695173, -49.762464219905745, -266.93958453681284, -460.24957067973196, -1438.9774197425272, 5.405947773585864, -118.12652054807342, -97.48919873920705, -123.42196134617166, -341.1382394165441, -353.6852384632205, 2.8904888514312406, 275.2963665919354, 301.98678772380555, 22.133393395511654, -270.10050644710753, -19.552818986444528, -0.9938852786917182, 99.92925592506154, -157.85889175557418, -243.15573777874695, 184.94826608159502, -452.7949704518886, 1.8554223127235958, -8.043655979878366, -141.51694441891925, 138.32661858597277, -10.383029675732997, 283.24710821336697, 2.046687296067853, -212.24212387878484, -211.5466418269764, 106.70659271034879, -285.3956925792934, 148.5271209255128, 1.3676728586976254, -6.195647405579523, 270.81708706283393, -38.42809480653016, 11.070251104865173, 43.096450665206206, -1.123145419723889, 76.76782108622878, 111.93404987944447, 2.7330887575039586, -208.07310866845364, -5.648443224625955, -2.7591545745449735, -9.207356371578912, 38.81690046246936, 150.3411867642336, 72.86703385584107, -1314.3754441086905, -8.738185033891046, 188.62479218075052, -124.43121956203187, -276.6921706451856, 443.05654500446065, -657.2235694111757, 2.36100320950239, 275.17444128772064, 65.0091219377018, -26.811171647299968, -1283.142315017678, 137.01060476691407, -4.6811772118503585, -132.30537960555742, 47.277037661865506, -189.57100845957368, 978.1823757972546, 1369.4077419134842, -7.269333314291645, 166.2484585622525, 64.99200803852627, -176.8515973806965, -783.814864061993, 853.0654178524231, -4.783640732945346, -208.84208212146106, 153.47863287291358, 275.463775739896, 425.18289364069784, -566.2325662780097, -2.0418131664047614, -187.47053229900075, -129.28598545611112, -286.7785400914035, -413.9431145809001, -626.3020527194316, 2.1968395646484975, 379.72558404684617, 86.839487596671, 72.81057926696282, -1303.5606031819902, -238.58336393446058, -3.437040606218969, 60.5374355422547, 64.3760344231829, 205.19001988445368, -303.63160014502967, -1009.1081914091076, -4.931114140953819, 205.71729426772737, -148.01576476876556, -225.92194764897457, 409.58402415965355, -453.956265511713, 1.993215378323415, 290.1986857038882, -55.255792866834156, -129.49331254898414, 1540.929563009414, -702.5789787256609, 5.319317096829011, -162.57686847903324, -215.35715595453888, -156.0610634307434, -217.41152474829659, -208.3665799519153, 1.347757432565357, 25.31478737801536, 242.39688593352554, 114.95177423623474, -29.33333291533088, -144.0024447779371, -1.2552401214481863, 192.8965259093468, -236.30284671729248, -152.90812125589673, 243.7809017826764, -193.89895220974725, 1.2539925265474303, 81.19064215053537, -196.35271373737032, -120.47693068412875, 123.44251860770302, -181.3203842013483, 1.4960742502907398, 109.2996651030947, 221.29349076116864, -233.42615953749848, -143.25541935690777, 321.3509691041092, -1.3709904963544255, 116.11763781157262, -160.01976478765624, -202.4953530553351, 213.1148636474652, -373.0911834512536, 1.8331500911417884, 10.28061707284499, 6.112146913530975, 290.375531191783, -2162.6906248797363, -49050.34710961527, -168.98057735719863, 117.69132117805921, -198.12958791701433, -203.9667084566345, 175.7833314327112, -304.6694376119402, 1.4861200327060373, 87.03866304681445, -276.43881189056987, -10.190860725354016, 96.50469380012052, -11.718446518603495, 1.0684190041434412, 94.10861036905796, -160.16016203036025, -1.513805945344063, 175.65008050702227, -4.305865526524845, 1.828799201793264, -236.9293813188425, 119.49252851588508, -31.73330547340615, 636.670928019735, 79.00811084601169, -2.667804955138077, -203.99444414652675, -168.52154319892122, 153.1265950001909, -341.67427051632757, 263.9895265576226, 1.703785943238236, 195.85176078896876, 25.892605766618885, 139.63043914541652, -2471.3128988576777, -1731.7237873820613, -12.56008176360326, -284.96195978108744, 287.3340609627466, 19.9202625426004, 308.5790348763381, -24.047760761794777, -1.0704444177825676, -280.02743927716705, 213.8448905548876, 113.99997399604703, 408.90382990941214, -169.16405740285393, -1.4520883163596034, 46.63355580069706, -109.63776806144489, 272.3084093099481, 132.74938262911135, 716.0536604322904, 2.6337030889301962, 135.0150926121084, -41.51384289226989, -61.46970923195447, 909.6000055280914, -422.40755436715506, 6.739818578010325, -93.32381167160987, -28.345823798977513, -49.34754485388361, -821.6090888960259, -426.7127470833716, 8.796050868113708, -220.67282504999162, -39.21695966354013, 82.42895711174654, -1413.7369802360777, 543.7494441908246, 6.442752101818647, -107.86287072224815, 20.635958980748583, -252.26723327110193, 2231.733060187549, 5081.880716089588, -20.222884841634926, 215.73780745278444, 182.4347765605042, 1.3224740967064592, -353.52106174179085, 1.0016650173915507, -1.6559179038057814, -188.6843940682933, -176.56379382722952, -193.77673804173995, -306.9024256672869, -313.1847022855473, 1.6304623562104499, -94.76931473838451, 55.67592596131997, 147.52615932611886, 562.5530797603858, -886.7596031079629, -5.9768018793175335]
        )
        self.list_polys = List(
            [0, 12, 18, 6, 15790320, 128, 24, 30, 42, 36, 15790320, 128, 12, 36, 42, 18, 4253248, 128, 0, 24, 30, 6, 4210918, 128, 48, 60, 66, 54, 12853280, 128, 72, 78, 90, 84, 12853280, 128, 60, 84, 90, 66, 4253248, 128, 48, 72, 78, 54, 4210918, 128, 96, 108, 60, 48, 12853280, 255, 108, 132, 84, 60, 4253248, 255, 132, 120, 72, 84, 12853280, 255, 120, 96, 48, 72, 4210918, 255, 102, 114, 66, 54, 12853280, 255, 114, 138, 90, 66, 4253248, 255, 138, 126, 78, 90, 12853280, 255, 126, 102, 54, 78, 4210918, 255, 144, 156, 180, 168, 16776960, 128, 186, 174, 150, 162, 65535, 128]
        )
        self.list_polyOrd = List(
            [-5.058797503814708, 24, -4.895668059457755, 48, -3.7765562327960276, 72, -2.238223653323433, 96, -1.5754094115399973, 54, -1.185162414577317, 36, -0.6398954576295532, 12, -0.45629758487826977, 78, -0.0823246956595538, 6, 0.08232469565955391, 0, 0.45629758487826977, 66, 0.6398954576295534, 18, 1.185162414577317, 42, 1.5754094115399973, 90, 2.238223653323433, 102, 3.7765562327960276, 60, 4.895668059457755, 84, 5.058797503814708, 30]
        )
        self.list_beat = List(
            [24.488, 25.448, 26.418, 27.265, 27.719, 28.232, 28.716, 29.187, 29.662, 30.148, 30.587, 31.09, 31.568, 32.075, 32.547, 33.028, 33.48, 33.981, 34.462, 34.934, 35.415, 35.911, 36.37, 36.858, 37.322, 37.811, 38.28, 42.736, 43.118, 43.587, 44.07, 44.556, 45.004, 45.527, 45.97, 46.419, 46.92, 47.429, 47.908, 48.378, 48.881, 49.36, 49.806, 50.285, 50.77, 51.29, 51.749, 52.205, 52.707, 53.179, 53.644, 54.13, 54.564, 55.074, 55.556, 56.045, 56.543, 57.021, 57.499, 57.975, 58.38, 58.905, 59.39, 59.868, 60.353, 60.852, 61.303, 61.821, 62.284, 62.777, 63.226, 63.706, 64.223, 64.681, 65.164, 65.617, 66.101, 66.579, 67.066, 67.571, 68.047, 68.513, 69, 69.485, 69.938, 70.41, 70.933, 71.427, 71.932, 72.361, 72.862, 73.327, 73.805, 74.278, 74.74, 75.241, 75.721, 76.24, 76.733, 77.19, 77.676, 78.153, 78.619, 79.089, 79.574, 80.053, 80.572, 81.037, 81.505, 81.977, 82.454, 82.911, 83.408, 83.913, 84.385, 84.862, 85.353, 85.826, 86.285, 86.804, 87.259, 87.733, 88.204, 88.686, 89.156, 89.663, 90.121, 90.624, 91.08, 91.604, 92.082, 92.559, 92.996, 93.508, 93.983, 94.466, 94.958, 95.472, 95.917, 96.355, 96.807, 97.332, 97.816, 98.335, 98.764, 99.236, 99.749, 100.21, 100.689, 101.184, 101.632, 102.106, 102.619, 103.122, 103.571, 104.054, 104.5, 104.996, 105.506, 105.979, 106.482, 106.937, 107.404, 107.873, 108.376, 108.84, 109.334, 109.822, 110.316, 110.779, 111.273, 111.752, 112.261, 112.704, 113.178, 113.681, 114.147, 114.628, 115.103, 115.588, 116.03, 116.545, 117.005, 117.497, 117.982, 118.446, 118.929]
        )
 
        self.sprite.layer = 1
 
    @warp
    async def my_Create(self, util, ):
        self.list_points.delete_all()
        self.list_polys.delete_all()
        await self.my_AddCube(util, 0.5, 0.5)
        await self.my_AddPolycolorpoffset(util, 0, 2, 3, 1, 240, 240, 240, 128, self.var_pOrd)
        await self.my_AddPolycolorpoffset(util, 4, 5, 7, 6, 240, 240, 240, 128, self.var_pOrd)
        await self.my_AddPolycolorpoffset(util, 2, 6, 7, 3, 64, 230, 64, 128, self.var_pOrd)
        await self.my_AddPolycolorpoffset(util, 0, 4, 5, 1, 64, 64, 230, 128, self.var_pOrd)
        await self.my_AddCube(util, 1.4, 0.25)
        await self.my_AddPolycolorpoffset(util, 0, 2, 3, 1, 196, 32, 32, 128, self.var_pOrd)
        await self.my_AddPolycolorpoffset(util, 4, 5, 7, 6, 196, 32, 32, 128, self.var_pOrd)
        await self.my_AddPolycolorpoffset(util, 2, 6, 7, 3, 64, 230, 64, 128, self.var_pOrd)
        await self.my_AddPolycolorpoffset(util, 0, 4, 5, 1, 64, 64, 230, 128, self.var_pOrd)
        await self.my_AddCube(util, 1, 0.5)
        await self.my_AddPolycolorpoffset(util, 0, 2, -6, -8, 196, 32, 32, 255, self.var_pOrd)
        await self.my_AddPolycolorpoffset(util, 2, 6, -2, -6, 64, 230, 64, 255, self.var_pOrd)
        await self.my_AddPolycolorpoffset(util, 6, 4, -4, -2, 196, 32, 32, 255, self.var_pOrd)
        await self.my_AddPolycolorpoffset(util, 4, 0, -8, -4, 64, 64, 230, 255, self.var_pOrd)
        await self.my_AddPolycolorpoffset(util, 1, 3, -5, -7, 196, 32, 32, 255, self.var_pOrd)
        await self.my_AddPolycolorpoffset(util, 3, 7, -1, -5, 64, 230, 64, 255, self.var_pOrd)
        await self.my_AddPolycolorpoffset(util, 7, 5, -3, -1, 196, 32, 32, 255, self.var_pOrd)
        await self.my_AddPolycolorpoffset(util, 5, 1, -7, -3, 64, 64, 230, 255, self.var_pOrd)
        await self.my_AddCube(util, 0.8, 1.5)
        await self.my_AddPolycolorpoffset(util, 0, 2, 6, 4, 255, 255, 0, 128, self.var_pOrd)
        await self.my_AddPolycolorpoffset(util, 7, 5, 1, 3, 0, 255, 255, 128, self.var_pOrd)
 
    async def my_pause(self, util, ):
        if util.inputs["p"]:
            while not not util.inputs["p"]:
                await self.yield_()
            while not util.inputs["p"]:
                await self.yield_()
            while not not util.inputs["p"]:
                await self.yield_()
 
    async def my_fill4crossingsres(self, util, arg_c1, arg_c2, arg_c3, arg_c4, arg_res):
        if lt(arg_c3, arg_c1):
            await self.my_fill4crossingsres(util, arg_c3, arg_c2, arg_c1, arg_c4, arg_res)
        else:
            if lt(arg_c4, arg_c1):
                await self.my_fill4crossingsres(util, arg_c4, arg_c2, arg_c3, arg_c1, arg_res)
            else:
                if lt(arg_c3, arg_c2):
                    await self.my_fill4crossingsres(util, arg_c1, arg_c3, arg_c2, arg_c4, arg_res)
                else:
                    if lt(arg_c4, arg_c2):
                        await self.my_fill4crossingsres(util, arg_c1, arg_c4, arg_c3, arg_c2, arg_res)
                    else:
                        self.pen.set_size(1)
                        self.xpos = tonum(arg_c1)
                        self.pen.down()
                        self.pen.set_size(tonum(arg_res))
                        self.xpos = tonum(arg_c2)
                        self.pen.up()
                        self.pen.set_size(1)
                        self.xpos = tonum(arg_c3)
                        self.pen.down()
                        self.pen.set_size(tonum(arg_res))
                        self.xpos = tonum(arg_c4)
                        self.pen.up()
 
    @warp
    async def my_AddCube(self, util, arg_size, arg_size2):
        self.var_xmin = (0 - arg_size)
        self.var_ymin = (0 - arg_size2)
        self.var_pOrd = len(self.list_points)
        await self.my_AddPoint(util, self.var_ymin, self.var_xmin, self.var_xmin)
        await self.my_AddPoint(util, arg_size2, self.var_xmin, self.var_xmin)
        await self.my_AddPoint(util, self.var_ymin, arg_size, self.var_xmin)
        await self.my_AddPoint(util, arg_size2, arg_size, self.var_xmin)
        await self.my_AddPoint(util, self.var_ymin, self.var_xmin, arg_size)
        await self.my_AddPoint(util, arg_size2, self.var_xmin, arg_size)
        await self.my_AddPoint(util, self.var_ymin, arg_size, arg_size)
        await self.my_AddPoint(util, arg_size2, arg_size, arg_size)
 
    @warp
    async def my_AddPoint(self, util, arg_x, arg_y, arg_z):
        self.list_points.append(arg_x)
        self.list_points.append(arg_y)
        self.list_points.append(arg_z)
        self.list_points.append(0)
        self.list_points.append(0)
        self.list_points.append(0)
 
    @warp
    async def my_CreateStars(self, util, ):
        self.var_starIdx = len(self.list_points)
        self.var_xmax = 300
        self.var_xmin = (0 - self.var_xmax)
        for _ in range(self.var_Stars):
            await self.my_AddPoint(util, pick_rand(self.var_xmin, self.var_xmax), pick_rand(self.var_xmin, self.var_xmax), pick_rand(self.var_xmin, self.var_xmax))
 
    async def my_fill4crossingsres(self, util, arg_c1, arg_c2, arg_c3, arg_c4, arg_res):
        if lt(arg_c3, arg_c1):
            await self.my_fill4crossingsres(util, arg_c3, arg_c2, arg_c1, arg_c4, arg_res)
        else:
            if lt(arg_c4, arg_c1):
                await self.my_fill4crossingsres(util, arg_c4, arg_c2, arg_c3, arg_c1, arg_res)
            else:
                if lt(arg_c3, arg_c2):
                    await self.my_fill4crossingsres(util, arg_c1, arg_c3, arg_c2, arg_c4, arg_res)
                else:
                    if lt(arg_c4, arg_c2):
                        await self.my_fill4crossingsres(util, arg_c1, arg_c4, arg_c3, arg_c2, arg_res)
                    else:
                        self.pen.set_size(1)
                        self.xpos = tonum(arg_c1)
                        self.pen.down()
                        self.pen.set_size(tonum(arg_res))
                        self.xpos = tonum(arg_c2)
                        self.pen.up()
                        self.pen.set_size(1)
                        self.xpos = tonum(arg_c3)
                        self.pen.down()
                        self.pen.set_size(tonum(arg_res))
                        self.xpos = tonum(arg_c4)
                        self.pen.up()
 
    @warp
    async def my_rasterquadfillresolution(self, util, arg_x1, arg_y1, arg_x2, arg_y2, arg_x3, arg_y3, arg_x4, arg_y4, arg_res):
        if lt(arg_y2, arg_y1):
            await self.my_rasterquadfillresolution(util, arg_x2, arg_y2, arg_x3, arg_y3, arg_x4, arg_y4, arg_x1, arg_y1, arg_res)
        else:
            if lt(arg_y3, arg_y1):
                await self.my_rasterquadfillresolution(util, arg_x3, arg_y3, arg_x4, arg_y4, arg_x1, arg_y1, arg_x2, arg_y2, arg_res)
            else:
                if lt(arg_y4, arg_y1):
                    await self.my_rasterquadfillresolution(util, arg_x4, arg_y4, arg_x1, arg_y1, arg_x2, arg_y2, arg_x3, arg_y3, arg_res)
                else:
                    if lt(arg_y4, arg_y2):
                        await self.my_rasterquadfillinnerresolutionextras(util, arg_x1, arg_y1, arg_x4, arg_y4, arg_x3, arg_y3, arg_x2, arg_y2, arg_res, div((tonum(arg_x1) - tonum(arg_x4)), (tonum(arg_y1) - tonum(arg_y4))), div((tonum(arg_x3) - tonum(arg_x4)), (tonum(arg_y3) - tonum(arg_y4))), div((tonum(arg_x3) - tonum(arg_x2)), (tonum(arg_y3) - tonum(arg_y2))), div((tonum(arg_x1) - tonum(arg_x2)), (tonum(arg_y1) - tonum(arg_y2))))
                    else:
                        await self.my_rasterquadfillinnerresolutionextras(util, arg_x1, arg_y1, arg_x2, arg_y2, arg_x3, arg_y3, arg_x4, arg_y4, arg_res, div((tonum(arg_x1) - tonum(arg_x2)), (tonum(arg_y1) - tonum(arg_y2))), div((tonum(arg_x3) - tonum(arg_x2)), (tonum(arg_y3) - tonum(arg_y2))), div((tonum(arg_x3) - tonum(arg_x4)), (tonum(arg_y3) - tonum(arg_y4))), div((tonum(arg_x1) - tonum(arg_x4)), (tonum(arg_y1) - tonum(arg_y4))))
 
    @warp
    async def my_AddPolycolorpoffset(self, util, arg_p1, arg_p2, arg_p3, arg_p4, arg_r, arg_g, arg_b, arg_a, arg_off):
        self.list_polys.append(((arg_p1 * self.var_p) + tonum(arg_off)))
        self.list_polys.append(((arg_p2 * self.var_p) + tonum(arg_off)))
        self.list_polys.append(((arg_p3 * self.var_p) + tonum(arg_off)))
        self.list_polys.append(((arg_p4 * self.var_p) + tonum(arg_off)))
        self.list_polys.append(((arg_r * 65536) + ((arg_g * 256) + arg_b)))
        self.list_polys.append(arg_a)
 
    async def my_rasterquadfillinnerresolutionextras(self, util, arg_x1, arg_y1, arg_x2, arg_y2, arg_x3, arg_y3, arg_x4, arg_y4, arg_res, arg_x21y21, arg_x32y32, arg_x43y43, arg_x14y14):
        self.ypos = (math.ceil((tonum(arg_y1) + div(arg_res, 2))) + 0.5)
        if lt(arg_y2, arg_y3):
            for _ in range(math.ceil(div((tonum(arg_y2) - self.ypos), arg_res))):
                self.pen.set_size(1)
                self.xpos = (tonum(arg_x1) + ((self.ypos - tonum(arg_y1)) * arg_x21y21))
                self.pen.down()
                self.pen.set_size(tonum(arg_res))
                self.xpos = (tonum(arg_x1) + ((self.ypos - tonum(arg_y1)) * arg_x14y14))
                self.pen.up()
                self.ypos += tonum(arg_res)
 
                await self.yield_()
            if lt(arg_y3, arg_y4):
                for _ in range(math.ceil(div((tonum(arg_y3) - self.ypos), arg_res))):
                    await self.my_filllinescrossingsres(util, arg_y1, arg_y2, arg_y3, arg_y4, (tonum(arg_x1) + ((self.ypos - tonum(arg_y1)) * arg_x21y21)), (tonum(arg_x2) + ((self.ypos - tonum(arg_y2)) * arg_x32y32)), (tonum(arg_x3) + ((self.ypos - tonum(arg_y3)) * arg_x43y43)), (tonum(arg_x1) + ((self.ypos - tonum(arg_y1)) * arg_x14y14)), arg_res)
                    self.ypos += tonum(arg_res)
 
                    await self.yield_()
                for _ in range(math.ceil(div((tonum(arg_y4) - self.ypos), arg_res))):
                    self.pen.set_size(1)
                    self.xpos = (tonum(arg_x3) + ((self.ypos - tonum(arg_y3)) * arg_x43y43))
                    self.pen.down()
                    self.pen.set_size(tonum(arg_res))
                    self.xpos = (tonum(arg_x1) + ((self.ypos - tonum(arg_y1)) * arg_x14y14))
                    self.pen.up()
                    self.ypos += tonum(arg_res)
 
                    await self.yield_()
            else:
                for _ in range(math.ceil(div((tonum(arg_y4) - self.ypos), arg_res))):
                    await self.my_filllinescrossingsres(util, arg_y1, arg_y2, arg_y3, arg_y4, (tonum(arg_x1) + ((self.ypos - tonum(arg_y1)) * arg_x21y21)), (tonum(arg_x2) + ((self.ypos - tonum(arg_y2)) * arg_x32y32)), (tonum(arg_x3) + ((self.ypos - tonum(arg_y3)) * arg_x43y43)), (tonum(arg_x1) + ((self.ypos - tonum(arg_y1)) * arg_x14y14)), arg_res)
                    self.ypos += tonum(arg_res)
 
                    await self.yield_()
                for _ in range(math.ceil(div((tonum(arg_y3) - self.ypos), arg_res))):
                    self.pen.set_size(1)
                    self.xpos = (tonum(arg_x3) + ((self.ypos - tonum(arg_y3)) * arg_x43y43))
                    self.pen.down()
                    self.pen.set_size(tonum(arg_res))
                    self.xpos = (tonum(arg_x3) + ((self.ypos - tonum(arg_y3)) * arg_x32y32))
                    self.pen.up()
                    self.ypos += tonum(arg_res)
 
                    await self.yield_()
        else:
            for _ in range(math.ceil(div((tonum(arg_y3) - self.ypos), arg_res))):
                self.pen.set_size(1)
                self.xpos = (tonum(arg_x1) + ((self.ypos - tonum(arg_y1)) * arg_x21y21))
                self.pen.down()
                self.pen.set_size(tonum(arg_res))
                self.xpos = (tonum(arg_x1) + ((self.ypos - tonum(arg_y1)) * arg_x14y14))
                self.pen.up()
                self.ypos += tonum(arg_res)
 
                await self.yield_()
            for _ in range(math.ceil(div((tonum(arg_y2) - self.ypos), arg_res))):
                await self.my_filllinescrossingsres(util, arg_y1, arg_y2, arg_y3, arg_y4, (tonum(arg_x1) + ((self.ypos - tonum(arg_y1)) * arg_x21y21)), (tonum(arg_x2) + ((self.ypos - tonum(arg_y2)) * arg_x32y32)), (tonum(arg_x3) + ((self.ypos - tonum(arg_y3)) * arg_x43y43)), (tonum(arg_x1) + ((self.ypos - tonum(arg_y1)) * arg_x14y14)), arg_res)
                self.ypos += tonum(arg_res)
 
                await self.yield_()
            for _ in range(math.ceil(div((tonum(arg_y4) - self.ypos), arg_res))):
                self.pen.set_size(1)
                self.xpos = (tonum(arg_x3) + ((self.ypos - tonum(arg_y3)) * arg_x43y43))
                self.pen.down()
                self.pen.set_size(tonum(arg_res))
                self.xpos = (tonum(arg_x1) + ((self.ypos - tonum(arg_y1)) * arg_x14y14))
                self.pen.up()
                self.ypos += tonum(arg_res)
 
                await self.yield_()
 
    async def my_filllinescrossingsres(self, util, arg_y1, arg_y2, arg_y3, arg_y4, arg_c12, arg_c23, arg_c34, arg_c41, arg_res):
        if gt(self.ypos, arg_y2):
            self.pen.set_size(1)
            self.xpos = arg_c41
            self.pen.down()
            self.pen.set_size(tonum(arg_res))
            self.xpos = arg_c23
            self.pen.up()
        else:
            if lt(self.ypos, arg_y3):
                self.pen.set_size(1)
                self.xpos = arg_c41
                self.pen.down()
                self.pen.set_size(tonum(arg_res))
                self.xpos = arg_c12
                self.pen.up()
            else:
                if lt(arg_c23, arg_c12):
                    await self.my_fill4crossingsres(util, arg_c23, arg_c12, arg_c34, arg_c41, arg_res)
                else:
                    await self.my_fill4crossingsres(util, arg_c12, arg_c23, arg_c34, arg_c41, arg_res)
 
    @on_pressed('t')
    async def key_t_pressed(self, util):
        pass
 
    @on_pressed('y')
    async def key_y_pressed(self, util):
        pass
 
    @warp
    async def my_ProcessPoints(self, util, arg_rot1, arg_rot2, arg_from, arg_to, arg_mul):
        await self.my_ProcessPointssincos(util, math.sin(math.radians(arg_rot1)), math.cos(math.radians(arg_rot1)), math.sin(math.radians(arg_rot2)), math.cos(math.radians(arg_rot2)), arg_from, arg_to, arg_mul)
 
    @warp
    async def my_orderpolys(self, util, ):
        self.var_lastquad = 0
        self.list_polyOrd.delete_all()
        for _ in range(toint(div(len(self.list_polys), 6))):
            self.var_incx = self.list_points[toint((tonum(self.list_polys[toint((tonum(self.var_lastquad) + 1))]) + 2))]
            self.var_incx = tonum(self.var_incx) + tonum(self.list_points[toint((tonum(self.list_polys[toint((tonum(self.var_lastquad) + 2))]) + 2))])
            self.var_incx = tonum(self.var_incx) + tonum(self.list_points[toint((tonum(self.list_polys[toint((tonum(self.var_lastquad) + 3))]) + 2))])
            self.var_incx = tonum(self.var_incx) + tonum(self.list_points[toint((tonum(self.list_polys[toint((tonum(self.var_lastquad) + 4))]) + 2))])
            self.var_incy = 1
            while not (gt(self.var_incy, len(self.list_polyOrd)) or gt(self.list_polyOrd[toint(self.var_incy)], self.var_incx)):
                self.var_incy = tonum(self.var_incy) + 2
            self.list_polyOrd.insert(toint(self.var_incy), self.var_incx)
            self.list_polyOrd.insert(toint((tonum(self.var_incy) + 1)), self.var_lastquad)
            self.var_lastquad = tonum(self.var_lastquad) + self.var_ply
 
    @warp
    async def my_renderatresolution(self, util, arg_res):
        self.pen.clear_all()
        self.var_pOrd = self.var_starIdx
        self.pen.exact_color("#ffffff")
        for _ in range(toint(div((len(self.list_points) - self.var_starIdx), self.var_p))):
            self.var_ymin = (tonum(self.list_points[toint((tonum(self.var_pOrd) + 6))]) * 3)
            if (gt(self.var_ymin, 0.01) and lt(self.var_ymin, 45)):
                self.var_incx = self.list_points[toint((tonum(self.var_pOrd) + 4))]
                self.var_incy = self.list_points[toint((tonum(self.var_pOrd) + 5))]
                if (lt(abs(tonum(self.var_incx)), 280) and lt(abs(tonum(self.var_incy)), 240)):
                    self.gotoxy(tonum(self.var_incx), tonum(self.var_incy))
                    if gt(self.var_ymin, 1):
                        self.pen.exact_color(((70 * 16777216) + 14737663))
                        self.pen.set_size(((tonum(self.var_ymin) * 2) - 2))
                        self.pen.down()
                        self.pen.up()
                        self.pen.exact_color("#ffffff")
                    self.pen.set_size(tonum(self.var_ymin))
                    self.pen.down()
                    self.pen.up()
            self.var_pOrd = tonum(self.var_pOrd) + self.var_p
        self.var_pOrd = 2
        for _ in range(toint(div(len(self.list_polyOrd), 2))):
            self.var_lastquad = self.list_polyOrd[toint(self.var_pOrd)]
            self.var_incx = self.list_polys[toint((tonum(self.var_lastquad) + 1))]
            self.var_incy = self.list_polys[toint((tonum(self.var_lastquad) + 2))]
            self.var_ymin = self.list_polys[toint((tonum(self.var_lastquad) + 3))]
            self.var_ymax = self.list_polys[toint((tonum(self.var_lastquad) + 4))]
            if lt(self.list_polys[toint((tonum(self.var_lastquad) + 6))], 255):
                self.pen.exact_color(((tonum(self.list_polys[toint((tonum(self.var_lastquad) + 6))]) * 16777216) + tonum(self.list_polys[toint((tonum(self.var_lastquad) + 5))])))
                await self.my_fillquadresolution(util, self.list_points[toint((tonum(self.var_incx) + 4))], self.list_points[toint((tonum(self.var_incx) + 5))], self.list_points[toint((tonum(self.var_incy) + 4))], self.list_points[toint((tonum(self.var_incy) + 5))], self.list_points[toint((tonum(self.var_ymin) + 4))], self.list_points[toint((tonum(self.var_ymin) + 5))], self.list_points[toint((tonum(self.var_ymax) + 4))], self.list_points[toint((tonum(self.var_ymax) + 5))], arg_res)
            else:
                self.pen.exact_color(self.list_polys[toint((tonum(self.var_lastquad) + 5))])
                await self.my_fillquadtrires(util, self.list_points[toint((tonum(self.var_incx) + 4))], self.list_points[toint((tonum(self.var_incx) + 5))], self.list_points[toint((tonum(self.var_incy) + 4))], self.list_points[toint((tonum(self.var_incy) + 5))], self.list_points[toint((tonum(self.var_ymin) + 4))], self.list_points[toint((tonum(self.var_ymin) + 5))], self.list_points[toint((tonum(self.var_ymax) + 4))], self.list_points[toint((tonum(self.var_ymax) + 5))], arg_res)
            self.var_pOrd = tonum(self.var_pOrd) + 2
 
    @on_pressed('space')
    async def key_space_pressed(self, util):
        if eq(self.var_speedTarget, 0.6):
            self.var_speedTarget = 0.05
        else:
            self.var_speedTarget = 0.6
 
    @warp
    async def my_ProcessPointssincos(self, util, arg_s, arg_c, arg_s2, arg_c2, arg_from, arg_len, arg_mul):
        self.var_pos = (tonum(arg_from) * self.var_p)
        self.var_xcnt = util.sprites.stage.var_Zoom
        for _ in range(toint(arg_len)):
            self.var_incx = self.list_points[toint((self.var_pos + 1))]
            self.var_incy = self.list_points[toint((self.var_pos + 3))]
            self.var_pOrd = self.list_points[toint((self.var_pos + 2))]
            if (gt(arg_from, 31) and gt(util.timer(), 42.2)):
                self.var_incx = (((tonum(self.var_incx) + self.var_svx) % 600) - 300)
                self.var_incy = (((tonum(self.var_incy) + self.var_svy) % 600) - 300)
                self.var_pOrd = (((tonum(self.var_pOrd) + self.var_svz) % 600) - 300)
            self.var_xcnt = div(util.sprites.stage.var_Zoom, (self.var_distance - tonum(self.var_pOrd)))
            self.list_points[toint((self.var_pos + 4))] = ((tonum(self.var_incx) * tonum(arg_mul)) * self.var_xcnt)
            self.list_points[toint((self.var_pos + 5))] = ((tonum(self.var_incy) * tonum(arg_mul)) * self.var_xcnt)
            self.list_points[toint((self.var_pos + 6))] = self.var_xcnt
            self.var_xmin = ((arg_c * tonum(self.var_incx)) - (arg_s * tonum(self.var_pOrd)))
            self.var_xcnt = ((arg_c * tonum(self.var_pOrd)) + (arg_s * tonum(self.var_incx)))
            self.list_points[toint((self.var_pos + 1))] = ((arg_c2 * self.var_xmin) - (arg_s2 * tonum(self.var_incy)))
            self.list_points[toint((self.var_pos + 2))] = self.var_xcnt
            self.list_points[toint((self.var_pos + 3))] = ((arg_c2 * tonum(self.var_incy)) + (arg_s2 * self.var_xmin))
            self.var_pos += self.var_p
 
    @warp
    async def my_filltriangleresolution(self, util, arg_Ax, arg_Ay, arg_Bx, arg_By, arg_Cx, arg_Cy, arg_res):
        await self.my_filltriinner1(util, arg_Ax, arg_Ay, arg_Bx, arg_By, arg_Cx, arg_Cy, sqrt((((tonum(arg_Bx) - tonum(arg_Cx)) * (tonum(arg_Bx) - tonum(arg_Cx))) + ((tonum(arg_By) - tonum(arg_Cy)) * (tonum(arg_By) - tonum(arg_Cy))))), sqrt((((tonum(arg_Ax) - tonum(arg_Cx)) * (tonum(arg_Ax) - tonum(arg_Cx))) + ((tonum(arg_Ay) - tonum(arg_Cy)) * (tonum(arg_Ay) - tonum(arg_Cy))))), sqrt((((tonum(arg_Ax) - tonum(arg_Bx)) * (tonum(arg_Ax) - tonum(arg_Bx))) + ((tonum(arg_Ay) - tonum(arg_By)) * (tonum(arg_Ay) - tonum(arg_By))))), (tonum(arg_res) * 1.4))
        self.pen.set_size(tonum(arg_res))
        self.gotoxy(tonum(arg_Ax), tonum(arg_Ay))
        self.pen.down()
        self.gotoxy(tonum(arg_Bx), tonum(arg_By))
        self.gotoxy(tonum(arg_Cx), tonum(arg_Cy))
        self.gotoxy(tonum(arg_Ax), tonum(arg_Ay))
        self.pen.up()
 
    async def my_filltriinner1(self, util, arg_Ax, arg_Ay, arg_Bx, arg_By, arg_Cx, arg_Cy, arg_lena, arg_lenb, arg_lenc, arg_res14):
        self.var_peri = ((arg_lena + arg_lenb) + arg_lenc)
        self.var_ind = (sqrt(div(((((arg_lenb + arg_lenc) - arg_lena) * ((arg_lenc + arg_lena) - arg_lenb)) * ((arg_lena + arg_lenb) - arg_lenc)), self.var_peri)) + div(arg_res14, 1.5))
        if gt(self.var_ind, arg_res14):
            self.var_incx = div((((arg_lena * tonum(arg_Ax)) + (arg_lenb * tonum(arg_Bx))) + (arg_lenc * tonum(arg_Cx))), self.var_peri)
            self.var_incy = div((((arg_lena * tonum(arg_Ay)) + (arg_lenb * tonum(arg_By))) + (arg_lenc * tonum(arg_Cy))), self.var_peri)
            if (lt(arg_lena, arg_lenb) and lt(arg_lena, arg_lenc)):
                await self.my_filltriinner2(util, arg_Ax, arg_Ay, arg_Bx, arg_By, arg_Cx, arg_Cy, (tonum(self.var_incx) - tonum(arg_Ax)), (tonum(self.var_incy) - tonum(arg_Ay)), (tonum(self.var_incx) - tonum(arg_Bx)), (tonum(self.var_incy) - tonum(arg_By)), (tonum(self.var_incx) - tonum(arg_Cx)), (tonum(self.var_incy) - tonum(arg_Cy)), self.var_ind, (-0.5 - div(self.var_ind, (sqrt((((tonum(self.var_incx) - tonum(arg_Ax)) * (tonum(self.var_incx) - tonum(arg_Ax))) + ((tonum(self.var_incy) - tonum(arg_Ay)) * (tonum(self.var_incy) - tonum(arg_Ay))))) * 4))), arg_res14)
            else:
                if (gt(arg_lenb, arg_lena) or gt(arg_lenb, arg_lenc)):
                    await self.my_filltriinner2(util, arg_Cx, arg_Cy, arg_Bx, arg_By, arg_Ax, arg_Ay, (tonum(self.var_incx) - tonum(arg_Cx)), (tonum(self.var_incy) - tonum(arg_Cy)), (tonum(self.var_incx) - tonum(arg_Bx)), (tonum(self.var_incy) - tonum(arg_By)), (tonum(self.var_incx) - tonum(arg_Ax)), (tonum(self.var_incy) - tonum(arg_Ay)), self.var_ind, (-0.5 - div(self.var_ind, (sqrt((((tonum(self.var_incx) - tonum(arg_Cx)) * (tonum(self.var_incx) - tonum(arg_Cx))) + ((tonum(self.var_incy) - tonum(arg_Cy)) * (tonum(self.var_incy) - tonum(arg_Cy))))) * 4))), arg_res14)
                else:
                    await self.my_filltriinner2(util, arg_Bx, arg_By, arg_Ax, arg_Ay, arg_Cx, arg_Cy, (tonum(self.var_incx) - tonum(arg_Bx)), (tonum(self.var_incy) - tonum(arg_By)), (tonum(self.var_incx) - tonum(arg_Ax)), (tonum(self.var_incy) - tonum(arg_Ay)), (tonum(self.var_incx) - tonum(arg_Cx)), (tonum(self.var_incy) - tonum(arg_Cy)), self.var_ind, (-0.5 - div(self.var_ind, (sqrt((((tonum(self.var_incx) - tonum(arg_Bx)) * (tonum(self.var_incx) - tonum(arg_Bx))) + ((tonum(self.var_incy) - tonum(arg_By)) * (tonum(self.var_incy) - tonum(arg_By))))) * 4))), arg_res14)
 
    async def my_filltriinner2(self, util, arg_Ax, arg_Ay, arg_Bx, arg_By, arg_Cx, arg_Cy, arg_Aox, arg_Aoy, arg_Box, arg_Boy, arg_Cox, arg_Coy, arg_ind, arg_rate, arg_res14):
        self.gotoxy(toint(self.var_incx), toint(self.var_incy))
        self.pen.set_size(arg_ind)
        self.pen.down()
        self.pen.up()
        self.var_td = (arg_rate + 1)
        while not lt((arg_ind * self.var_td), arg_res14):
            self.pen.set_size((arg_ind * self.var_td))
            self.gotoxy(((arg_Aox * self.var_td) + tonum(arg_Ax)), ((arg_Aoy * self.var_td) + tonum(arg_Ay)))
            self.pen.down()
            self.gotoxy(((arg_Box * self.var_td) + tonum(arg_Bx)), ((arg_Boy * self.var_td) + tonum(arg_By)))
            self.gotoxy(((arg_Cox * self.var_td) + tonum(arg_Cx)), ((arg_Coy * self.var_td) + tonum(arg_Cy)))
            self.gotoxy(((arg_Aox * self.var_td) + tonum(arg_Ax)), ((arg_Aoy * self.var_td) + tonum(arg_Ay)))
            self.pen.up()
            self.var_td += (self.var_td * arg_rate)
 
            await self.yield_()
        self.pen.set_size((arg_ind * self.var_td))
        self.gotoxy(((arg_Aox * self.var_td) + tonum(arg_Ax)), ((arg_Aoy * self.var_td) + tonum(arg_Ay)))
        self.pen.down()
        self.gotoxy(((arg_Box * self.var_td) + tonum(arg_Bx)), ((arg_Boy * self.var_td) + tonum(arg_By)))
        self.gotoxy(((arg_Cox * self.var_td) + tonum(arg_Cx)), ((arg_Coy * self.var_td) + tonum(arg_Cy)))
        self.gotoxy(((arg_Aox * self.var_td) + tonum(arg_Ax)), ((arg_Aoy * self.var_td) + tonum(arg_Ay)))
        self.pen.up()
 
    @warp
    async def my_fillquadresolution(self, util, arg_Ax, arg_Ay, arg_Bx, arg_By, arg_Cx, arg_Cy, arg_Dx, arg_Dy, arg_res):
        await self.my_rasterquadfillresolution(util, arg_Ax, arg_Ay, arg_Bx, arg_By, arg_Cx, arg_Cy, arg_Dx, arg_Dy, arg_res)
        self.pen.set_size(1)
        self.pen.exact_color("#000000")
        self.gotoxy(tonum(arg_Ax), tonum(arg_Ay))
        self.pen.down()
        self.pen.set_size(tonum(arg_res))
        self.gotoxy(tonum(arg_Bx), tonum(arg_By))
        self.gotoxy(tonum(arg_Cx), tonum(arg_Cy))
        self.gotoxy(tonum(arg_Dx), tonum(arg_Dy))
        self.gotoxy(tonum(arg_Ax), tonum(arg_Ay))
        self.pen.up()
 
    @warp
    async def my_fillquadtrires(self, util, arg_Ax, arg_Ay, arg_Bx, arg_By, arg_Cx, arg_Cy, arg_Dx, arg_Dy, arg_res):
        await self.my_filltriinner1(util, arg_Ax, arg_Ay, arg_Bx, arg_By, arg_Cx, arg_Cy, sqrt((((tonum(arg_Bx) - tonum(arg_Cx)) * (tonum(arg_Bx) - tonum(arg_Cx))) + ((tonum(arg_By) - tonum(arg_Cy)) * (tonum(arg_By) - tonum(arg_Cy))))), sqrt((((tonum(arg_Ax) - tonum(arg_Cx)) * (tonum(arg_Ax) - tonum(arg_Cx))) + ((tonum(arg_Ay) - tonum(arg_Cy)) * (tonum(arg_Ay) - tonum(arg_Cy))))), sqrt((((tonum(arg_Ax) - tonum(arg_Bx)) * (tonum(arg_Ax) - tonum(arg_Bx))) + ((tonum(arg_Ay) - tonum(arg_By)) * (tonum(arg_Ay) - tonum(arg_By))))), (tonum(arg_res) * 1.4))
        await self.my_filltriinner1(util, arg_Cx, arg_Cy, arg_Dx, arg_Dy, arg_Ax, arg_Ay, sqrt((((tonum(arg_Dx) - tonum(arg_Ax)) * (tonum(arg_Dx) - tonum(arg_Ax))) + ((tonum(arg_Dy) - tonum(arg_Ay)) * (tonum(arg_Dy) - tonum(arg_Ay))))), sqrt((((tonum(arg_Cx) - tonum(arg_Ax)) * (tonum(arg_Cx) - tonum(arg_Ax))) + ((tonum(arg_Cy) - tonum(arg_Ay)) * (tonum(arg_Cy) - tonum(arg_Ay))))), sqrt((((tonum(arg_Cx) - tonum(arg_Dx)) * (tonum(arg_Cx) - tonum(arg_Dx))) + ((tonum(arg_Cy) - tonum(arg_Dy)) * (tonum(arg_Cy) - tonum(arg_Dy))))), (tonum(arg_res) * 1.4))
        self.pen.set_size(tonum(arg_res))
        self.gotoxy(tonum(arg_Cx), tonum(arg_Cy))
        self.pen.down()
        self.gotoxy(tonum(arg_Ax), tonum(arg_Ay))
        self.pen.exact_color("#000000")
        self.gotoxy(tonum(arg_Bx), tonum(arg_By))
        self.gotoxy(tonum(arg_Cx), tonum(arg_Cy))
        self.gotoxy(tonum(arg_Dx), tonum(arg_Dy))
        self.gotoxy(tonum(arg_Ax), tonum(arg_Ay))
        self.pen.up()
 
    @on_broadcast('start music')
    async def broadcast_startmusic(self, util):
        await self.sounds.play("Julius_-_3d_Demo_Tune.mp3")
        pass # hide variable
        pass # hide variable
        while not gt(util.timer(), 202):
            await self.yield_()
        pass # hide variable
        pass # hide variable
        util.stop_all()
        return None
 
    @on_broadcast('green flag')
    async def broadcast_greenflag(self, util):
        self.var_lastrendertime = 0
        pass # hide variable
        pass # hide variable
        await self.sounds.play("silence")
        util.sprites.stage.var_Zoom = 100
        util.sprites.stage.var_Resolution = 3
        self.var_Stars = 300
        self.var_GUI = 0
        self.var_ZoomSx = 0
        self.var_beat = 1
        self.var_beatSize = 1
        self.var_beatTimer = self.list_beat[1]
        self.shown = False
        await self.my_Create(util, )
        await self.my_CreateStars(util, )
        self.var_distance = 50
        self.var_speed = 25
        self.var_speedTarget = 0.3
        self.var_acc = 0
        util.send_broadcast("start music")
        util.timer.reset()
        while True:
            if lt(util.timer(), 4):
                util.sprites.stage.var_Zoom = 100
            else:
                if lt(util.timer(), 10):
                    self.var_ZoomSx += ((300 - util.sprites.stage.var_Zoom) * 0.1)
                    self.var_ZoomSx = (self.var_ZoomSx * 0.8)
                    util.sprites.stage.var_Zoom += toint(self.var_ZoomSx)
                else:
                    if lt(util.timer(), 55):
                        if gt(util.timer(), 43):
                            self.var_ZoomSx += ((120 - util.sprites.stage.var_Zoom) * 0.015)
                            self.var_ZoomSx = (self.var_ZoomSx * 0.5)
                            util.sprites.stage.var_Zoom += toint(self.var_ZoomSx)
                    else:
                        if lt(util.timer(), 73):
                            if gt(util.timer(), 65):
                                self.var_ZoomSx += ((280 - util.sprites.stage.var_Zoom) * 0.1)
                                self.var_ZoomSx = (self.var_ZoomSx * 0.8)
                                util.sprites.stage.var_Zoom += toint(self.var_ZoomSx)
                        else:
                            util.sprites.stage.var_Zoom = (200 + (80 * math.cos(math.radians(((util.timer() - 73) * 20)))))
            if eq(self.var_GUI, lt(util.inputs.mouse_y, 100)):
                self.var_GUI = (1 - self.var_GUI)
                if eq(self.var_GUI, 1):
                    print(util.sprites.stage.var_Resolution)
                    print(util.sprites.stage.var_Zoom)
                else:
                    pass # hide variable
                    pass # hide variable
            self.var_pos += 1
            self.var_distance = div(((self.var_distance * 6) + 4.5), 7)
            self.var_speed = div(((self.var_speed * 20) + self.var_speedTarget), 21)
            await self.my_pause(util, )
            self.var_a1 = (self.var_speed * -1.3)
            self.var_a2 = ((self.var_speed * -2.5) * math.sin(math.radians((util.timer() * 20))))
            if lt(util.timer(), 12):
                await self.my_ProcessPoints(util, self.var_a1, self.var_a2, 0, 8, 1)
            else:
                if lt(util.timer(), 27):
                    await self.my_ProcessPoints(util, (12 * math.cos(math.radians((util.timer() * 9)))), 20, 0, 8, 1)
                else:
                    await self.my_ProcessPoints(util, (8 * math.cos(math.radians((util.timer() * 9)))), 6, 0, 8, 1)
            await self.my_ProcessPoints(util, self.var_a1, self.var_a2, 8, 16, 1)
            if gt(util.timer(), self.var_beatTimer):
                self.var_beatSize = 1.5
                self.var_beat += 1
                if gt(self.var_beat, len(self.list_beat)):
                    self.var_beatTimer = 99999
                else:
                    self.var_beatTimer = (tonum(self.list_beat[self.var_beat]) - 0.2)
            if eq(self.var_beatTimer, 99999):
                if lt(self.var_beatSize, 2):
                    self.var_beatSize += 0.05
                    await self.my_ProcessPoints(util, self.var_a1, self.var_a2, 24, 8, self.var_beatSize)
                else:
                    await self.my_ProcessPoints(util, (8 * math.cos(math.radians((util.timer() * 9)))), (5 * math.sin(math.radians(((util.timer() - 45) * 5)))), 24, 8, 2)
            else:
                self.var_beatSize = div(((self.var_beatSize * 5) + 1), 6)
                await self.my_ProcessPoints(util, self.var_a1, self.var_a2, 24, 8, self.var_beatSize)
            if gt(util.timer(), 42.2):
                if lt(self.var_acc, 13):
                    self.var_acc += 0
            self.var_svx = (((tonum(self.list_points[toint(((10 * self.var_p) + 1))]) + tonum(self.list_points[toint(((12 * self.var_p) + 1))])) * self.var_acc) + 300)
            self.var_svy = (((tonum(self.list_points[toint(((10 * self.var_p) + 3))]) + tonum(self.list_points[toint(((12 * self.var_p) + 3))])) * self.var_acc) + 300)
            self.var_svz = (((tonum(self.list_points[toint(((10 * self.var_p) + 2))]) + tonum(self.list_points[toint(((12 * self.var_p) + 2))])) * self.var_acc) + 300)
            if (lt(util.timer(), 12) or gt(util.timer(), 28)):
                await self.my_ProcessPoints(util, self.var_a1, self.var_a2, 32, div(self.var_Stars, 2), 1)
            else:
                if lt(util.timer(), 16):
                    await self.my_ProcessPoints(util, self.var_a1, self.var_a2, 32, div(self.var_Stars, 2), div((16.01 - util.timer()), 4))
                else:
                    if lt(util.timer(), 27):
                        await self.my_ProcessPoints(util, self.var_a1, self.var_a2, 32, div(self.var_Stars, 2), 0.01)
                    else:
                        await self.my_ProcessPoints(util, self.var_a1, self.var_a2, 32, div(self.var_Stars, 2), div((util.timer() - 27.01), 1))
                        if lt(self.var_speedTarget, 0.6):
                            self.var_speedTarget = 0.6
            await self.my_ProcessPoints(util, self.var_a1, self.var_a2, (32 + div(self.var_Stars, 2)), div(self.var_Stars, 2), 1)
            await self.my_orderpolys(util, )
            self.var_incx = toint((util.sprites.stage.var_Resolution * div(util.sprites.stage.var_Zoom, 300)))
            if lt(self.var_incx, 1):
                self.var_incx = 1
            await self.my_renderatresolution(util, self.var_incx)
            await util.sprites["fade to black"].broadcast_tick(util)
 
            await self.yield_()
 
 
@sprite('fade to black')
class Spritefadetoblack(Target):
    """Sprite fade to black"""
 
    def __init__(self, parent=None):
        super().__init__(parent)
        if parent is not None:
            return
 
        self._xpos = 0
        self._ypos = 0
        self._direction = 90
        self.shown = False
        self.pen = Pen(self)
 
        self.costume = Costumes(
           2, 100, "don't rotate", [
            {
                'name': "black",
                'path': "f5e250886e3bafbbd9bc2398a5e321c5.png",
                'center': (480, 360),
                'scale': 2
            },
            {
                'name': "white",
                'path': "b61b1077b0ea1931abee9dbbfa7903ff.png",
                'center': (480, 360),
                'scale': 2
            },
            {
                'name': "credits",
                'path': "78dfd0b4f1aa8bde356a6b71a1d6de30-svg-2x.png",
                'center': (480, 360),
                'scale': 2
            }
        ])
 
        self.sounds = Sounds(
            100, [
            {
                'name': "pop",
                'path': "83a9787d4cb6f3b7632b4ddfebf74367.wav"
            }
        ])
 
        self.var_tick = 100
        self.var_mode = 2
 
 
 
        self.sprite.layer = 2
 
    @on_broadcast('tick')
    async def broadcast_tick(self, util):
        if eq(self.var_mode, 0):
            if lt(self.var_tick, 100):
                self.var_tick += 3
                if lt(self.var_tick, 100):
                    self.costume.set_effect('ghost', self.var_tick)
                else:
                    self.shown = False
                    self.costume.switch("white")
                    self.var_mode = 1
                    self.var_tick = 0
        else:
            if eq(self.var_mode, 1):
                if gt(util.timer(), 27):
                    self.shown = True
                    self.var_tick += 15
                    if lt(self.var_tick, 100):
                        self.costume.set_effect('ghost', self.var_tick)
                    else:
                        self.shown = False
                        self.costume.switch("credits")
                        self.var_mode = 2
                        self.var_tick = 100
            else:
                if gt(util.timer(), 194):
                    self.shown = True
                    self.var_tick += -1
                    if gt(self.var_tick, 0):
                        self.costume.set_effect('ghost', self.var_tick)
                    else:
                        self.var_mode = 3
 
    @on_green_flag
    async def green_flag(self, util):
        self.gotoxy(0, 0)
        self.costume.switch("black")
        self.costume.clear_effects()
        self.shown = True
        self.var_tick = 0
        self.var_mode = 0
        util.send_broadcast("green flag")
 
 
 
 
if __name__ == '__main__':
    engine.start_program()
 
Gamer_Logan819
Scratcher
1000+ posts

[v1.3-beta] sb3topy: Scratch to Python with Pygame

mbrick2 wrote:

Wow!!!!

Now do python to scratch, lol
-OofyRoblox-
Scratcher
500+ posts

[v1.3-beta] sb3topy: Scratch to Python with Pygame

I know this might sound stupid, but I'm 12 (I've already learned java and python; yep I'm a nerd) and I'm on a school Chromebook, is there a way I could use this because python doesn't install on here
RED-001-alt
Scratcher
1000+ posts

[v1.3-beta] sb3topy: Scratch to Python with Pygame

-OofyRoblox- wrote:

I know this might sound stupid, but I'm 12 (I've already learned java and python; yep I'm a nerd) and I'm on a school Chromebook, is there a way I could use this because python doesn't install on here
im 14 and all i know is scratch and i stalk the forums 24/7 thats all i spend my life on
imfh
Scratcher
1000+ posts

[v1.3-beta] sb3topy: Scratch to Python with Pygame

-OofyRoblox- wrote:

I know this might sound stupid, but I'm 12 (I've already learned java and python; yep I'm a nerd) and I'm on a school Chromebook, is there a way I could use this because python doesn't install on here
There's a replit someone made in the issues of the GitHub which lets you use it online. I'm pretty sure it is not the latest version though, which run a little bit faster. It also doesn't have SVG support so some of the projects won't work right.

I should probably make my own replit for it at some point. Are we allowed to link to replits on the forums?
kccuber
Scratcher
1000+ posts

[v1.3-beta] sb3topy: Scratch to Python with Pygame

imfh wrote:

I should probably make my own replit for it at some point. Are we allowed to link to replits on the forums?
I think so, just no replit collab links.
imfh
Scratcher
1000+ posts

[v1.3-beta] sb3topy: Scratch to Python with Pygame

kccuber wrote:

imfh wrote:

I should probably make my own replit for it at some point. Are we allowed to link to replits on the forums?
I think so, just no replit collab links.
I see a lot of people on Scratch sharing and using replit as of recently, but I'm still not sure if it is allowed since about a year ago it seemed like the answer was a solid no. I'll just leave it alone for now.
mumu245
Scratcher
1000+ posts

[v1.3-beta] sb3topy: Scratch to Python with Pygame

god286 wrote:

I will try it soon! This is cool!

Also there is another project https://github.com/Secret-chest/scratch2python/ I am not sure if it has some of the functions in your to-do list though
No. My project also runs everything live. It is not a transpiler.

Powered by DjangoBB