<snapdata remixID="10096271"><project name="create sprites, deleted clones, or permanent clones" app="Snap! 12-dev, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAE+UlEQVR4AeyVvWtbZxSHTzS0phRDMmXMYq8iHozBFnTwYDrUYAry4PQfcEhBxUOHkoRshXoQcSjUQ/0xpdjQwV08yAa7OBQCngrePGXM4hJKB/XmEgWcIMXRufe+533PY4Jkfbzv+Z3n9xDXuvxAICCBmvADgYAEEDAgfEaLICAWBCWAgEHxMxwBcSAoAb8CBsXO8B4BBOyR4DkIAQQMgp2hPQII2CPBcxACCBgEO0N7BBCwR4LnIAQQMAj2oENNDUdAU3X4C4OA/jo3tTECmqrDXxgE9Ne5qY0R0FQd/sIgoL/OTW1cqYCmNieMCQIIaKIGvyEQ0G/3JjZHQBM1+A2BgH67N7E5ApqowW8IBKyke4b0I4CA/cjwfiUEELASzAzpRwAB+5Hh/UoIqAQ8Pj6WmZkZ2d7elq2trUoCMyQtAioBp6enpd1uy87Ojuzu7sr8/LwsLCzkMu7t7aVFim1KIaAS8HWiiYkJqdfrr3+VWq0m3W43l3F9fV3m5uak1Wrlr/Mv8OCOwIcWVgt4enoqnU7n0pyLiwtpNpuytLQkq6ur+f+Kl77ACwi8IaAWcG1tLb+q0WjI7OysbGxsyP7+viwuLuYC5h/yAIE+BFQCnpycyMrKihweHuZ/apeXl2V0dLTPKN6GwPsEVAJOTU3J2NjY+7fyDgSuSEAl4BVn8DUI9CWAgH3R8EEVBNIVsAp6zFATQEA1Qi7QEEBADT3OqgkgoBohF2gIIKCGHmfVBBBQjZALNAQQUEPP5tmoUiFgVHWlFxYB0+s0qo0QMKq60guLgOl1GtVGCBhVXemFRcD0Oo1qo0IFjGpzwpoggIAmavAbAgH9dm9icwQ0UYPfEAjot3sTmyOgiRr8hkDAQrrnkmEJIOCw5DhXCAEELAQjlwxLAAGHJce5QgggYCEYuWRYAgg4LDnOFUIAAQvB6PcS7eYIqCXIeRUBBFTh47CWAAJqCXJeRQABVfg4rCWAgFqCnFcRQEAVPg5rCcQroHZzzpsggIAmavAbAgH9dm9icwQ0UYPfEAjot3sTmyOgiRr8hkDA+LpPKjECJlVnfMsgYHydJZUYAZOqM75lEDC+zpJKjIBJ1RnfMggYX2dJJf4oAZPanGVMEEBAEzX4DYGAfrs3sTkCmqjBbwgE9Nu9ic0R0EQN5YX44e5d+aZel+2HD+Xo6Ki8QUPejIBXAhfvlx49fiyf3bghfzx4IE8aDfnq2jV51GzKL5mQ5+fnwRdDwOAVlB/g505H/r1+PR/0efb499On0smE/P7WLfkiE/Kne/fk7OxMQvwgYAjqFc88yIT79OXLt1P/y3775PZt+TKT8Mdnz+S7dlvGx8ezd6v/h4DVM6904l8HB/Ik+5P7z82bspAJN7+5Kb91u/Lr8+eydP++TE5OVprn3WEI+C6RxF7/mYm2+eqV/P7ihXydCde8c8fUhghoqo7iw3zbasnIyEjxFxd0IwIWBDLVa8reCwHLJsz9Awkg4EA8fFg2AQQsmzD3DySAgAPx8GHZBBCwbMLcP5AAAg7Ew4dlE7ArYNmbc78JAghooga/IRDQb/cmNkdAEzX4DYGAfrs3sTkCmqjBbwgEtNe9q0QI6Kpue8sioL1OXCVCQFd121sWAe114ioRArqq296yCGivE1eJLgnoanOWNUEAAU3U4DcEAvrt3sTmCGiiBr8hENBv9yY2/x8AAP//B4/+wAAAAAZJREFUAwB2g/6P7H1jdQAAAABJRU5ErkJggg==</thumbnail><scenes select="1"><scene name="create sprites, deleted clones, or permanent clones"><notes></notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="a new %&apos;clone/sprite&apos; of %&apos;object&apos;" type="reporter" category="control"><comment x="0" y="0" w="90" collapsed="false">creates a permanent clone or sprite with the same scripts as the parent, and reports it.</comment><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>clones={&#xD;permanent clone&#xD;deleted clone&#xD;temporary clone&#xD;}&#xD;duplicate sprite</options></input><input type="%s" readonly="true" initial="1"><options>§_clonablesMenuWithTurtle</options></input></inputs><script><block s="doRun"><block s="reifyScript"><script><block s="doTellTo"><block var="clone"/><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="clone/sprite"/><l>temporary clone</l></list></block><block s="reifyReporter"><script></script><list></list></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="clone/sprite"/><l>deleted clone</l></list></block><block s="reifyScript"><script><block s="removeClone"></block></script><list></list></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="clone/sprite"/><l>permanent clone</l></list></block><block s="reifyScript"><script><block s="doSetVar"><l><option>my temporary?</option></l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><list></list></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="clone/sprite"/><l>duplicate sprite</l></list></block><block s="reifyScript"><script><block s="doSetVar"><l><option>my temporary?</option></l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doSetVar"><l><option>my parent</option></l><l></l></block></script><list></list></block><block s="reifyReporter"><script><block s="removeClone"></block><block s="doStopThis"><l><option>this block</option></l></block></script><list></list></block></block></block></block></block><list></list></block><block s="doReport"><block var="clone"/></block></script><list><l>clone</l></list></block><list><block s="newClone"><block var="object"/></block></list></block></script></block-definition><block-definition s="delete sprites %&apos;sprites&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%mult%s" readonly="true"><options>§_objectsMenu</options></input></inputs><script><block s="doWarp"><script><block s="doForEach"><l>sprite</l><block var="sprites"/><script><block s="doTellTo"><block var="sprite"/><block s="reifyScript"><script><block s="doSetVar"><l><option>my parent</option></l><l></l></block><block s="doSetVar"><l><option>my temporary?</option></l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="removeClone"></block></script><list></list></block><list><block s="reportGet"><l><option>self</option></l></block></list></block></script></block></script></block></script></block-definition><block-definition s="delete sprite %&apos;sprite&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s"><options>§_dynamicMenu</options></input></inputs><script><block s="doTellTo"><block var="sprite"/><block s="reifyScript"><script><block s="doSetVar"><l><option>my parent</option></l><l></l></block><block s="doSetVar"><l><option>my temporary?</option></l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="removeClone"></block></script><list></list></block><list><block s="reportGet"><l><option>self</option></l></block></list></block></script><scripts><script x="10" y="173.66666666666669"><block s="receiveSlotEvent"><l>sprite</l><l><option>menu</option></l></block><block s="doReport"><block s="reportAskFor"><block s="reportGet"><l><option>other sprites</option></l></block><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>name</option></l></block></autolambda><list></list></block><list></list></block></block></script></scripts></block-definition><block-definition s="create a new %&apos;clone/sprite&apos; of %&apos;object&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>clones={&#xD;permanent clone&#xD;temporary clone&#xD;}&#xD;duplicate sprite</options></input><input type="%s" initial="1"><options>§_clonablesMenuWithTurtle</options></input></inputs><script><block s="doTellTo"><block s="newClone"><block var="object"/></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="clone/sprite"/><l>temporary clone</l></list></block><block s="reifyReporter"><script></script><list></list></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="clone/sprite"/><l>permanent clone</l></list></block><block s="reifyScript"><script><block s="doSetVar"><l><option>my temporary?</option></l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><list></list></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="clone/sprite"/><l>duplicate sprite</l></list></block><block s="reifyScript"><script><block s="doSetVar"><l><option>my temporary?</option></l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doSetVar"><l><option>my parent</option></l><l></l></block></script><list></list></block><block s="reifyReporter"><script><block s="removeClone"></block></script><list></list></block></block></block></block><list></list></block></script></block-definition><block-definition s="name %&apos;obj&apos; as %&apos;thing&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%obj"></input><input type="%txt"></input></inputs><script><block s="doApplyExtension"><l>obj_name(obj, name)</l><list><block var="obj"/><block var="thing"/></list></block></script></block-definition><block-definition s="%&apos;obj&apos; named as %&apos;thing&apos;" type="reporter" category="control"><header></header><code></code><translations></translations><inputs><input type="%obj"></input><input type="%txt"></input></inputs><script><block s="doApplyExtension"><l>obj_name(obj, name)</l><list><block var="obj"/><block var="thing"/></list></block><block s="doReport"><block var="obj"/></block></script></block-definition><block-definition s="scisnap %&apos;action&apos; %&apos;parameter&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true" initial="1"><options>clones={&#xD;permanent clone&#xD;permanent clone named&#xD;}&#xD;sprites={&#xD;duplicate sprite&#xD;duplicate sprite named&#xD;new sprite&#xD;}&#xD;delete</options></input><input type="%s" initial="1" max="2"><options>§_objectsMenuWithSelf</options></input></inputs><script><block s="doWarp"><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/SciSnapExtensions.js</l></list></block><block s="doIf"><block s="reportIsA"><block var="action"/><l><option>list</option></l></block><script><block s="doForEach"><l>item</l><block var="action"/><script><custom-block s="scisnap %s %s"><block var="item"/><block var="parameter"/></custom-block></script></block></script><list><block s="reportIsA"><block var="parameter"/><l><option>list</option></l></block><script><block s="doForEach"><l>item</l><block var="parameter"/><script><custom-block s="scisnap %s %s"><block var="action"/><block var="item"/></custom-block></script></block></script><block s="reportVariadicEquals"><list><block var="action"/><l>delete</l></list></block><script><block s="doApplyExtension"><l>err_try(cmd, catch, err)</l><list><block s="reifyScript"><script><block s="doTellTo"><block var="parameter"/><block s="reifyScript"><script><block s="doApplyExtension"><l>SciS_removeThisSprite()</l><list></list></block></script><list></list></block><list></list></block></script><list></list></block><block s="reifyReporter"><script></script><list></list></block><l></l></list></block></script><block s="reportVariadicEquals"><list><block var="action"/><l>duplicate sprite named</l></list></block><script><block s="doApplyExtension"><l>SciS_createDuplicate(sprite,spriteName)</l><list><block s="reportGet"><l><option>self</option></l></block><block var="parameter"/></list></block></script><block s="reportVariadicEquals"><list><block var="action"/><l>duplicate sprite</l></list></block><script><block s="doRun"><block s="reifyScript"><script><block s="doApplyExtension"><l>SciS_createDuplicate(sprite,spriteName)</l><list><l></l><block s="reportAskFor"><l></l><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>name</option></l></block></autolambda><list></list></block><list></list></block></list></block></script><list></list></block><list><block s="reportObject"><block var="parameter"/></block></list></block></script><block s="reportVariadicEquals"><list><block var="action"/><l>new sprite</l></list></block><script><block s="doApplyExtension"><l>SciS_createNewSprite()</l><list></list></block></script><block s="reportVariadicEquals"><list><block var="action"/><l>permanent clone</l></list></block><script><block s="doRun"><block s="reifyScript"><script><block s="doApplyExtension"><l>SciS_createPermanentClone(sprite,spriteName)</l><list><l></l><block s="reportAskFor"><l></l><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>name</option></l></block></autolambda><list></list></block><list></list></block></list></block></script><list></list></block><list><block s="reportObject"><block var="parameter"/></block></list></block></script><block s="reportVariadicEquals"><list><block var="action"/><l>permanent clone named</l></list></block><script><block s="doApplyExtension"><l>SciS_createPermanentClone(sprite,spriteName)</l><list><block s="reportGet"><l><option>self</option></l></block><block var="parameter"/></list></block></script></list></block></script></block></script></block-definition><block-definition s="%&apos;delete&apos; %&apos;clone&apos; of my clones" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true" irreplaceable="true" initial="1">delete</input><input type="%s" initial="1"><options>§_dynamicMenu</options></input></inputs><script><block s="doApplyExtension"><l>err_try(cmd, catch, err)</l><list><block s="reifyScript"><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="delete"/><l>delete the clone</l></list></block><script><block s="doTellTo"><block var="delete"/><block s="reifyScript"><script><block s="removeClone"></block></script><list></list></block><list></list></block></script><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>parent</l></list></block><block s="doSetVar"><l>parent</l><block s="reportGet"><l><option>parent</option></l></block></block><block s="doUntil"><block s="reportVariadicEquals"><list><block s="reportAskFor"><block var="parent"/><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>parent</option></l></block></autolambda><list></list></block><list></list></block><l></l></list></block><script><block s="doSetVar"><l>parent</l><block s="reportAskFor"><block var="parent"/><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>parent</option></l></block></autolambda><list></list></block><list></list></block></block></script></block><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="clone"/><l>all</l></list></block><script><block s="doForEach"><l>item</l><block s="reportAskFor"><block var="parent"/><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>clones</option></l></block></autolambda><list></list></block><list></list></block><script><block s="doTellTo"><block var="item"/><block s="reifyScript"><script><block s="removeClone"></block></script><list></list></block><list></list></block></script></block></script><script><block s="doTellTo"><block s="reportListItem"><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="clone"/><l>random</l></list></block><block s="reportTextFunction"><l><option>select</option></l><block var="clone"/></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="delete"/><l>delete number</l></list></block><block var="clone"/><block s="reportApplyExtension"><l>err_error(msg)</l><list><l>invalid option</l></list></block></block></block><block s="reportAskFor"><block var="parent"/><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>clones</option></l></block></autolambda><list></list></block><list></list></block></block><block s="reifyScript"><script><block s="removeClone"></block></script><list></list></block><list></list></block></script></block></script></block></script></block></script><list></list></block><block s="reifyReporter"><script></script><list></list></block><l></l></list></block></script><scripts><script x="10" y="634.1666666666671"><block s="receiveSlotEvent"><l>clone</l><l><option>menu</option></l></block><block s="doReport"><block s="reportNewList"><list><l>all</l><l>random</l><l>clone number</l><l>a specific clone</l></list></block></block></script><script x="10" y="711.1666666666675"><block s="receiveSlotEvent"><l>delete</l><l><option>edited</option></l></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="clone"/><l>clone number</l></list></block><script><block s="doSetSlot"><l>delete</l><l>delete number</l></block><block s="doSetSlot"><l>clone</l><l></l></block></script><list><block s="reportVariadicEquals"><list><block var="clone"/><l>a specific clone</l></list></block><script><block s="doSetSlot"><l>delete</l><l>delete the clone</l></block><block s="doSetSlot"><l>clone</l><l></l></block></script><l><bool>true</bool></l><script><block s="doSetSlot"><l>delete</l><l>delete</l></block></script></list></block></script><script x="10" y="956.8333333333328"><block s="receiveSlotEvent"><l>clone</l><l><option>edited</option></l></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="clone"/><l>clone number</l></list></block><script><block s="doSetSlot"><l>delete</l><l>delete number</l></block><block s="doSetSlot"><l>clone</l><l></l></block></script><list><block s="reportVariadicEquals"><list><block var="clone"/><l>a specific clone</l></list></block><script><block s="doSetSlot"><l>delete</l><l>delete the clone</l></block><block s="doSetSlot"><l>clone</l><l></l></block></script><l><bool>true</bool></l><script><block s="doSetSlot"><l>delete</l><l>delete</l></block></script></list></block></script></scripts></block-definition><block-definition s="delete clone %&apos;clone&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%n" initial="1">1<options>1=1&#xD;$_all=$_all&#xD;$_random=$_random&#xD;$_last=$_last</options></input></inputs><script><block s="doWarp"><script><block s="doIf"><block s="reportIsA"><block var="clone"/><l><option>list</option></l></block><script><block s="doForEach"><l>item</l><block var="clone"/><script><custom-block s="delete clone %n"><block var="item"/></custom-block></script></block></script><list><block s="reportIsA"><block var="clone"/><l><option>sprite</option></l></block><script><block s="doTellTo"><block var="clone"/><block s="reifyScript"><script><block s="removeClone"></block></script><list></list></block><list></list></block></script><block s="reportIsA"><block var="clone"/><l><option>number</option></l></block><script><block s="doTellTo"><block s="reportListItem"><block var="clone"/><block s="reportGet"><l><option>clones</option></l></block></block><block s="reifyScript"><script><block s="removeClone"></block></script><list></list></block><list></list></block></script><block s="reportVariadicEquals"><list><block s="reportTextFunction"><l><option>unselect</option></l><block var="clone"/></block><l>all</l></list></block><script><custom-block s="delete clone %n"><block s="reportGet"><l><option>clones</option></l></block></custom-block></script><block s="reportListContainsItem"><block s="reportNewList"><list><l>random</l><l>last</l></list></block><block s="reportTextFunction"><l><option>unselect</option></l><block var="clone"/></block></block><script><block s="doTellTo"><block s="reportListItem"><block s="reportTextFunction"><l><option>select</option></l><block var="clone"/></block><block s="reportGet"><l><option>clones</option></l></block></block><block s="reifyScript"><script><block s="removeClone"></block></script><list></list></block><list></list></block></script></list></block></script></block></script></block-definition><block-definition s="default input" type="command" category="control"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>InputSlotDialogMorph.prototype.createSlotTypeButtons = function () {&#xD;    // populate my &apos;slots&apos; area with radio buttons, labels and input fields&#xD;    var defLabel, defInput, defSwitch, loopArrow, settingsButton;&#xD;&#xD;    // slot types&#xD;    this.addSlotTypeButton(&apos;Object&apos;, &apos;%obj&apos;);&#xD;    this.addSlotTypeButton(&apos;Text&apos;, &apos;%txt&apos;);&#xD;    this.addSlotTypeButton(&apos;List&apos;, &apos;%l&apos;);&#xD;    this.addSlotTypeButton(&apos;Number&apos;, &apos;%n&apos;);&#xD;    this.addSlotTypeButton(&apos;Any type&apos;, &apos;%s&apos;);&#xD;    this.addSlotTypeButton(&apos;Boolean (T/F)&apos;, &apos;%b&apos;);&#xD;    this.addSlotTypeButton(&apos;Command\n(inline)&apos;, &apos;%cmdRing&apos;); //&apos;%cmd&apos;);&#xD;    this.addSlotTypeButton(&apos;Reporter&apos;, &apos;%repRing&apos;); //&apos;%r&apos;);&#xD;    this.addSlotTypeButton(&apos;Predicate&apos;, &apos;%predRing&apos;); //&apos;%p&apos;);&#xD;    this.addSlotTypeButton(&apos;Command\n(C-shape)&apos;, [&apos;%cs&apos;, &apos;%ca&apos;, &apos;%loop&apos;]);&#xD;    this.addSlotTypeButton(&apos;Any\n(unevaluated)&apos;, &apos;%anyUE&apos;);&#xD;    this.addSlotTypeButton(&apos;Boolean\n(unevaluated)&apos;, &apos;%boolUE&apos;);&#xD;&#xD;    // arity and upvars&#xD;    this.slots.radioButtonSingle = this.addSlotArityButton(&#xD;        () =&gt; this.setSlotArity(&apos;single&apos;),&#xD;        "Single input.",&#xD;        () =&gt; this.fragment.isSingleInput()&#xD;    );&#xD;    this.addSlotArityButton(&#xD;        () =&gt; this.setSlotArity(&apos;multiple&apos;),&#xD;        "Multiple inputs (value is list of inputs)",&#xD;        () =&gt; this.fragment.isMultipleInput()&#xD;    );&#xD;    this.addSlotArityButton(&#xD;        () =&gt; this.setSlotArity(&apos;upvar&apos;),&#xD;        "Upvar - make internal variable visible to caller",&#xD;        () =&gt; this.fragment.isUpvar()&#xD;    );&#xD;&#xD;    // default values&#xD;    defLabel = new StringMorph(localize(&apos;Default Value:&apos;));&#xD;    defLabel.fontSize = this.slots.radioButtonSingle.fontSize;&#xD;    defLabel.setColor(WHITE);&#xD;    defLabel.refresh = () =&gt; {&#xD;        if (this.isExpanded &amp;&amp; contains(&#xD;                [&#xD;                    &apos;%s&apos;, &apos;%n&apos;, &apos;%txt&apos;, &apos;%anyUE&apos;, &apos;%b&apos;, &apos;%boolUE&apos;,&#xD;                    &apos;%mlt&apos;, &apos;%code&apos;, &apos;%upvar&apos;&#xD;                ],&#xD;                this.fragment.type&#xD;            )) {&#xD;            defLabel.changed();&#xD;            defLabel.text = this.fragment.type === &apos;%upvar&apos; ?&#xD;                localize(&apos;Default Name:&apos;)&#xD;                : localize(&apos;Default Value:&apos;);&#xD;            defLabel.fixLayout();&#xD;            defLabel.rerender();&#xD;            defLabel.show();&#xD;        } else {&#xD;            defLabel.hide();&#xD;        }&#xD;    };&#xD;    this.slots.defaultInputLabel = defLabel;&#xD;    this.slots.add(defLabel);&#xD;&#xD;    defInput = new InputFieldMorph(this.fragment.defaultValue);&#xD;    defInput.contents().fontSize = defLabel.fontSize;&#xD;    defInput.contrast = 90;&#xD;    defInput.setWidth(50);&#xD;    defInput.refresh = () =&gt; {&#xD;        if (this.isExpanded &amp;&amp; contains(&#xD;            [&apos;%s&apos;, &apos;%n&apos;, &apos;%txt&apos;, &apos;%anyUE&apos;, &apos;%mlt&apos;, &apos;%code&apos;, &apos;%upvar&apos;],&#xD;            this.fragment.type&#xD;        )) {&#xD;            defInput.show();&#xD;            if (this.fragment.type === &apos;%n&apos;) {&#xD;                defInput.setIsNumeric(true);&#xD;            } else {&#xD;                defInput.setIsNumeric(false);&#xD;            }&#xD;        } else {&#xD;            defInput.hide();&#xD;        }&#xD;    };&#xD;    this.slots.defaultInputField = defInput;&#xD;    this.slots.add(defInput);&#xD;&#xD;    defSwitch = new BooleanSlotMorph(this.fragment.defaultValue);&#xD;    defSwitch.refresh = () =&gt; {&#xD;        if (this.isExpanded &amp;&amp; contains(&#xD;            [&apos;%b&apos;, &apos;%boolUE&apos;],&#xD;            this.fragment.type&#xD;        )) {&#xD;            defSwitch.show();&#xD;        } else {&#xD;            defSwitch.hide();&#xD;        }&#xD;    };&#xD;    this.slots.defaultSwitch = defSwitch;&#xD;    this.slots.add(defSwitch);&#xD;&#xD;    // loop arrow checkbox //&#xD;    loopArrow = new ToggleMorph(&#xD;        &apos;checkbox&apos;,&#xD;        this, // target&#xD;        () =&gt; { // action&#xD;            if ([&apos;%ca&apos;, &apos;%loop&apos;].includes(this.fragment.type)) {&#xD;                this.setType(&apos;%cs&apos;);&#xD;            } else {&#xD;                this.setType(&apos;%ca&apos;);&#xD;            }&#xD;        },&#xD;        null, // label string&#xD;        () =&gt; [&apos;%ca&apos;, &apos;%loop&apos;].includes(this.fragment.type),&#xD;        null, // environment&#xD;        null, // hint&#xD;        new SymbolMorph(&#xD;            &apos;loop&apos;,&#xD;            this.fontSize * 0.7,&#xD;            WHITE&#xD;        ).getImage(),&#xD;        null // builder method that constructs the element morph&#xD;    );&#xD;    loopArrow.refresh = () =&gt; {&#xD;        ToggleMorph.prototype.refresh.call(loopArrow);&#xD;        if (this.isExpanded &amp;&amp; contains(&#xD;                [&apos;%cs&apos;, &apos;%ca&apos;, &apos;%loop&apos;],&#xD;                this.fragment.type&#xD;            )) {&#xD;            loopArrow.show();&#xD;        } else {&#xD;            loopArrow.hide();&#xD;        }&#xD;    };&#xD;    this.slots.loopArrow = loopArrow;&#xD;    this.slots.add(loopArrow);&#xD;&#xD;    // settings button&#xD;    settingsButton = new PushButtonMorph(&#xD;        this.slots,&#xD;        () =&gt; this.slots.userMenu().popUpAtHand(this.world()),&#xD;        new SymbolMorph(&apos;gearPartial&apos;, this.fontSize * 1.5)&#xD;    );&#xD;    settingsButton.padding = 0;&#xD;    settingsButton.fixLayout();&#xD;    settingsButton.refresh = nop;&#xD;    this.slots.settingsButton = settingsButton;&#xD;    this.slots.add(settingsButton);&#xD;&#xD;};</l></block><list></list></block><block s="doRun"><block s="reportJSFunction"><list></list><l>InputSlotDialogMorph.prototype.fixSlotsLayout = function () {&#xD;    var slots = this.slots,&#xD;        scale = SyntaxElementMorph.prototype.scale,&#xD;        xPadding = 10 * scale,&#xD;        ypadding = 14 * scale,&#xD;        bh = (fontHeight(10) / 1.2 + 15) * scale, // slot type button height&#xD;        ah = (fontHeight(10) / 1.2 + 10) * scale, // arity button height&#xD;        size = 12, // number slot type radio buttons&#xD;        cols = [&#xD;            slots.left() + xPadding,&#xD;            slots.left() + slots.width() / 3,&#xD;            slots.left() + slots.width() * 2 / 3&#xD;        ],&#xD;        rows = [&#xD;            slots.top() + ypadding,&#xD;            slots.top() + ypadding + bh,&#xD;            slots.top() + ypadding + bh * 2,&#xD;            slots.top() + ypadding + bh * 3,&#xD;            slots.top() + ypadding + bh * 4,&#xD;            slots.top() + ypadding + bh * 5,&#xD;&#xD;            slots.top() + ypadding + bh * 5 + ah,&#xD;            slots.top() + ypadding + bh * 5 + ah * 2&#xD;        ],&#xD;        idx,&#xD;        row = -1,&#xD;        col;&#xD;&#xD;    // slot types:&#xD;&#xD;    for (idx = 0; idx &lt; size; idx += 1) {&#xD;        col = idx % 3;&#xD;        if (idx % 3 === 0) {row += 1; }&#xD;        slots.children[idx].setPosition(new Point(&#xD;            cols[col],&#xD;            rows[row]&#xD;        ));&#xD;    }&#xD;&#xD;    // arity:&#xD;&#xD;    col = 0;&#xD;    row = 5;&#xD;    for (idx = size; idx &lt; size + 3; idx += 1) {&#xD;        slots.children[idx].setPosition(new Point(&#xD;            cols[col],&#xD;            rows[row + idx - size]&#xD;        ));&#xD;    }&#xD;&#xD;    // default input&#xD;&#xD;    this.slots.defaultInputLabel.setPosition(&#xD;        this.slots.radioButtonSingle.label.topRight().add(new Point(5, 0))&#xD;    );&#xD;    this.slots.defaultInputField.setCenter(&#xD;        this.slots.defaultInputLabel.center().add(new Point(&#xD;            this.slots.defaultInputField.width() / 2&#xD;                + this.slots.defaultInputLabel.width() / 2 + 5,&#xD;            0&#xD;        ))&#xD;    );&#xD;    this.slots.defaultSwitch.setCenter(&#xD;        this.slots.defaultInputLabel.center().add(new Point(&#xD;            this.slots.defaultSwitch.width() / 2&#xD;                + this.slots.defaultInputLabel.width() / 2 + 5,&#xD;            0&#xD;        ))&#xD;    );&#xD;&#xD;    // loop arrow&#xD;&#xD;    this.slots.loopArrow.setPosition(this.slots.defaultInputLabel.position());&#xD;    this.slots.settingsButton.setPosition(&#xD;        this.slots.bottomRight().subtract(&#xD;            this.slots.settingsButton.extent().add(&#xD;                this.padding + this.slots.border&#xD;            )&#xD;        )&#xD;    );&#xD;&#xD;    this.slots.changed();&#xD;};</l></block><list></list></block><block s="doRun"><block s="reportJSFunction"><list></list><l>InputSlotDialogMorph.prototype.init = function (&#xD;    fragment,&#xD;    target,&#xD;    action,&#xD;    environment,&#xD;    category&#xD;) {&#xD;    var scale = SyntaxElementMorph.prototype.scale,&#xD;        fh = fontHeight(10) / 1.2 * scale; // "raw height"&#xD;&#xD;    // additional properties:&#xD;    this.fragment = fragment || new BlockLabelFragment();&#xD;    this.textfield = null;&#xD;    this.types = null;&#xD;    this.slots = null;&#xD;    this.isExpanded = false;&#xD;    this.category = category || &apos;other&apos;;&#xD;    this.noDelete = false;&#xD;&#xD;    // initialize inherited properties:&#xD;    BlockDialogMorph.uber.init.call(&#xD;        this,&#xD;        target,&#xD;        action,&#xD;        environment&#xD;    );&#xD;&#xD;    // override inherited properites:&#xD;    this.types = new AlignmentMorph(&apos;row&apos;, this.padding);&#xD;    this.types.respectHiddens = true; // prevent the arrow from flipping&#xD;    this.add(this.types);&#xD;    this.slots = new BoxMorph();&#xD;    this.slots.color = new Color(55, 55, 55); // same as palette&#xD;    this.slots.borderColor = this.slots.color.lighter(50);&#xD;    this.slots.setExtent(new Point((fh + 10) * 24, (fh + 10 * scale) * 10.4));&#xD;    this.add(this.slots);&#xD;    this.createSlotTypeButtons();&#xD;    this.fixSlotsLayout();&#xD;    this.addSlotsMenu();&#xD;    this.createTypeButtons();&#xD;    this.fixLayout();&#xD;};</l></block><list></list></block></script></block-definition><block-definition s="custom input" type="command" category="control"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>InputSlotDialogMorph.prototype.createSlotTypeButtons = function () {&#xD;&#xD;    // populate my &apos;slots&apos; area with radio buttons, labels and input fields&#xD;    var defLabel, defInput, defSwitch, loopArrow, settingsButton;&#xD;&#xD;    // slot types&#xD;&#xD;this.addSlotTypeButton(&apos;%s&apos;,&apos;%s&apos;)&#xD;this.addSlotTypeButton(&apos;%n&apos;,&apos;%n&apos;)&#xD;this.addSlotTypeButton(&apos;%txt&apos;,&apos;%txt&apos;)&#xD;this.addSlotTypeButton(&apos;%anyUE&apos;,&apos;%anyUE&apos;)&#xD;this.addSlotTypeButton(&apos;%dir&apos;,&apos;%dir&apos;)&#xD;this.addSlotTypeButton(&apos;%note&apos;,&apos;%note&apos;)&#xD;this.addSlotTypeButton(&apos;%inst&apos;,&apos;%inst&apos;)&#xD;this.addSlotTypeButton(&apos;%prim&apos;,&apos;%prim&apos;)&#xD;this.addSlotTypeButton(&apos;%ext&apos;,&apos;%ext&apos;)&#xD;this.addSlotTypeButton(&apos;%audio&apos;,&apos;%audio&apos;)&#xD;this.addSlotTypeButton(&apos;%aa&apos;,&apos;%aa&apos;)&#xD;this.addSlotTypeButton(&apos;%img&apos;,&apos;%img&apos;)&#xD;this.addSlotTypeButton(&apos;%imgsource&apos;,&apos;%imgsource&apos;)&#xD;this.addSlotTypeButton(&apos;%rate&apos;,&apos;%rate&apos;)&#xD;this.addSlotTypeButton(&apos;%interaction&apos;,&apos;%interaction&apos;)&#xD;this.addSlotTypeButton(&apos;%dates&apos;,&apos;%dates&apos;)&#xD;this.addSlotTypeButton(&apos;%delim&apos;,&apos;%delim&apos;)&#xD;this.addSlotTypeButton(&apos;%ida&apos;,&apos;%ida&apos;)&#xD;this.addSlotTypeButton(&apos;%idx&apos;,&apos;%idx&apos;)&#xD;this.addSlotTypeButton(&apos;%ix&apos;,&apos;%ix&apos;)&#xD;this.addSlotTypeButton(&apos;%la&apos;,&apos;%la&apos;)&#xD;this.addSlotTypeButton(&apos;%ta&apos;,&apos;%ta&apos;)&#xD;this.addSlotTypeButton(&apos;%mlfunc&apos;,&apos;%mlfunc&apos;)&#xD;this.addSlotTypeButton(&apos;%dim&apos;,&apos;%dim&apos;)&#xD;this.addSlotTypeButton(&apos;%rel&apos;,&apos;%rel&apos;)&#xD;this.addSlotTypeButton(&apos;%loc&apos;,&apos;%loc&apos;)&#xD;this.addSlotTypeButton(&apos;%rcv&apos;,&apos;%rcv&apos;)&#xD;this.addSlotTypeButton(&apos;%spr&apos;,&apos;%spr&apos;)&#xD;this.addSlotTypeButton(&apos;%self&apos;,&apos;%self&apos;)&#xD;this.addSlotTypeButton(&apos;%edit&apos;,&apos;%edit&apos;)&#xD;this.addSlotTypeButton(&apos;%col&apos;,&apos;%col&apos;)&#xD;this.addSlotTypeButton(&apos;%dst&apos;,&apos;%dst&apos;)&#xD;this.addSlotTypeButton(&apos;%cln&apos;,&apos;%cln&apos;)&#xD;this.addSlotTypeButton(&apos;%clntrtl&apos;,&apos;%clntrtl&apos;)&#xD;this.addSlotTypeButton(&apos;%get&apos;,&apos;%get&apos;)&#xD;this.addSlotTypeButton(&apos;%cst&apos;,&apos;%cst&apos;)&#xD;this.addSlotTypeButton(&apos;%eff&apos;,&apos;%eff&apos;)&#xD;this.addSlotTypeButton(&apos;%env&apos;,&apos;%env&apos;)&#xD;this.addSlotTypeButton(&apos;%snd&apos;,&apos;%snd&apos;)&#xD;this.addSlotTypeButton(&apos;%key&apos;,&apos;%key&apos;)&#xD;this.addSlotTypeButton(&apos;%keyHat&apos;,&apos;%keyHat&apos;)&#xD;this.addSlotTypeButton(&apos;%msg&apos;,&apos;%msg&apos;)&#xD;this.addSlotTypeButton(&apos;%msgHat&apos;,&apos;%msgHat&apos;)&#xD;this.addSlotTypeButton(&apos;%msgSend&apos;,&apos;%msgSend&apos;)&#xD;this.addSlotTypeButton(&apos;%att&apos;,&apos;%att&apos;)&#xD;this.addSlotTypeButton(&apos;%fun&apos;,&apos;%fun&apos;)&#xD;this.addSlotTypeButton(&apos;%layer&apos;,&apos;%layer&apos;)&#xD;this.addSlotTypeButton(&apos;%clrdim&apos;,&apos;%clrdim&apos;)&#xD;this.addSlotTypeButton(&apos;%pen&apos;,&apos;%pen&apos;)&#xD;this.addSlotTypeButton(&apos;%asp&apos;,&apos;%asp&apos;)&#xD;this.addSlotTypeButton(&apos;%txtfun&apos;,&apos;%txtfun&apos;)&#xD;this.addSlotTypeButton(&apos;%stopChoices&apos;,&apos;%stopChoices&apos;)&#xD;this.addSlotTypeButton(&apos;%setting&apos;,&apos;%setting&apos;)&#xD;this.addSlotTypeButton(&apos;%typ&apos;,&apos;%typ&apos;)&#xD;this.addSlotTypeButton(&apos;%mapValue&apos;,&apos;%mapValue&apos;)&#xD;this.addSlotTypeButton(&apos;%var&apos;,&apos;%var&apos;)&#xD;this.addSlotTypeButton(&apos;%shd&apos;,&apos;%shd&apos;)&#xD;this.addSlotTypeButton(&apos;%codeKind&apos;,&apos;%codeKind&apos;)&#xD;this.addSlotTypeButton(&apos;%codeListPart&apos;,&apos;%codeListPart&apos;)&#xD;this.addSlotTypeButton(&apos;%codeListKind&apos;,&apos;%codeListKind&apos;)&#xD;this.addSlotTypeButton(&apos;%scn&apos;,&apos;%scn&apos;)&#xD;this.addSlotTypeButton(&apos;%vid&apos;,&apos;%vid&apos;)&#xD;this.addSlotTypeButton(&apos;%block&apos;,&apos;%block&apos;)&#xD;this.addSlotTypeButton(&apos;%byob&apos;,&apos;%byob&apos;)&#xD;this.addSlotTypeButton(&apos;%mlt&apos;,&apos;%mlt&apos;)&#xD;this.addSlotTypeButton(&apos;%code&apos;,&apos;%code&apos;)&#xD;this.addSlotTypeButton(&apos;%b&apos;,&apos;%b&apos;)&#xD;this.addSlotTypeButton(&apos;%boolUE&apos;,&apos;%boolUE&apos;)&#xD;this.addSlotTypeButton(&apos;%bool&apos;,&apos;%bool&apos;)&#xD;this.addSlotTypeButton(&apos;%obj&apos;,&apos;%obj&apos;)&#xD;this.addSlotTypeButton(&apos;%l&apos;,&apos;%l&apos;)&#xD;this.addSlotTypeButton(&apos;$turtle&apos;,&apos;$turtle&apos;)&#xD;this.addSlotTypeButton(&apos;$turtleOutline&apos;,&apos;$turtleOutline&apos;)&#xD;this.addSlotTypeButton(&apos;$pipette&apos;,&apos;$pipette&apos;)&#xD;this.addSlotTypeButton(&apos;$clockwise&apos;,&apos;$clockwise&apos;)&#xD;this.addSlotTypeButton(&apos;$counterclockwise&apos;,&apos;$counterclockwise&apos;)&#xD;this.addSlotTypeButton(&apos;$greenflag&apos;,&apos;$greenflag&apos;)&#xD;this.addSlotTypeButton(&apos;$blitz&apos;,&apos;$blitz&apos;)&#xD;this.addSlotTypeButton(&apos;$list&apos;,&apos;$list&apos;)&#xD;this.addSlotTypeButton(&apos;$pause&apos;,&apos;$pause&apos;)&#xD;this.addSlotTypeButton(&apos;$loopArrow&apos;,&apos;$loopArrow&apos;)&#xD;this.addSlotTypeButton(&apos;%c&apos;,&apos;%c&apos;)&#xD;this.addSlotTypeButton(&apos;%cs&apos;,&apos;%cs&apos;)&#xD;this.addSlotTypeButton(&apos;%ca&apos;,&apos;%ca&apos;)&#xD;this.addSlotTypeButton(&apos;%cl&apos;,&apos;%cl&apos;)&#xD;this.addSlotTypeButton(&apos;%cla&apos;,&apos;%cla&apos;)&#xD;this.addSlotTypeButton(&apos;%loop&apos;,&apos;%loop&apos;)&#xD;this.addSlotTypeButton(&apos;%cmd&apos;,&apos;%cmd&apos;)&#xD;this.addSlotTypeButton(&apos;%cmdRing&apos;,&apos;%cmdRing&apos;)&#xD;this.addSlotTypeButton(&apos;%repRing&apos;,&apos;%repRing&apos;)&#xD;this.addSlotTypeButton(&apos;%predRing&apos;,&apos;%predRing&apos;)&#xD;this.addSlotTypeButton(&apos;%rc&apos;,&apos;%rc&apos;)&#xD;this.addSlotTypeButton(&apos;%rr&apos;,&apos;%rr&apos;)&#xD;this.addSlotTypeButton(&apos;%rp&apos;,&apos;%rp&apos;)&#xD;this.addSlotTypeButton(&apos;%t&apos;,&apos;%t&apos;)&#xD;this.addSlotTypeButton(&apos;%upvar&apos;,&apos;%upvar&apos;)&#xD;this.addSlotTypeButton(&apos;%clr&apos;,&apos;%clr&apos;)&#xD;this.addSlotTypeButton(&apos;%br&apos;,&apos;%br&apos;)&#xD;this.addSlotTypeButton(&apos;%inputName&apos;,&apos;%inputName&apos;)&#xD;this.addSlotTypeButton(&apos;%inputs&apos;,&apos;%inputs&apos;)&#xD;this.addSlotTypeButton(&apos;%send&apos;,&apos;%send&apos;)&#xD;this.addSlotTypeButton(&apos;%receive&apos;,&apos;%receive&apos;)&#xD;this.addSlotTypeButton(&apos;%scriptVars&apos;,&apos;%scriptVars&apos;)&#xD;this.addSlotTypeButton(&apos;%blockVars&apos;,&apos;%blockVars&apos;)&#xD;this.addSlotTypeButton(&apos;%message&apos;,&apos;%message&apos;)&#xD;this.addSlotTypeButton(&apos;%keyName&apos;,&apos;%keyName&apos;)&#xD;this.addSlotTypeButton(&apos;%parms&apos;,&apos;%parms&apos;)&#xD;this.addSlotTypeButton(&apos;%ringparms&apos;,&apos;%ringparms&apos;)&#xD;this.addSlotTypeButton(&apos;%words&apos;,&apos;%words&apos;)&#xD;this.addSlotTypeButton(&apos;%lists&apos;,&apos;%lists&apos;)&#xD;this.addSlotTypeButton(&apos;%nums&apos;,&apos;%nums&apos;)&#xD;this.addSlotTypeButton(&apos;%exp&apos;,&apos;%exp&apos;)&#xD;this.addSlotTypeButton(&apos;%sum&apos;,&apos;%sum&apos;)&#xD;this.addSlotTypeButton(&apos;%product&apos;,&apos;%product&apos;)&#xD;this.addSlotTypeButton(&apos;%min&apos;,&apos;%min&apos;)&#xD;this.addSlotTypeButton(&apos;%max&apos;,&apos;%max&apos;)&#xD;this.addSlotTypeButton(&apos;%all&apos;,&apos;%all&apos;)&#xD;this.addSlotTypeButton(&apos;%any&apos;,&apos;%any&apos;)&#xD;this.addSlotTypeButton(&apos;%all&lt;&apos;,&apos;%all&lt;&apos;)&#xD;this.addSlotTypeButton(&apos;%all&gt;&apos;,&apos;%all&gt;&apos;)&#xD;this.addSlotTypeButton(&apos;%all&lt;=&apos;,&apos;%all&lt;=&apos;)&#xD;this.addSlotTypeButton(&apos;%all&gt;=&apos;,&apos;%all&gt;=&apos;)&#xD;this.addSlotTypeButton(&apos;%all=&apos;,&apos;%all=&apos;)&#xD;this.addSlotTypeButton(&apos;%all!=&apos;,&apos;%all!=&apos;)&#xD;this.addSlotTypeButton(&apos;%all==&apos;,&apos;%all==&apos;)&#xD;this.addSlotTypeButton(&apos;%elseif&apos;,&apos;%elseif&apos;)&#xD;&#xD;    // arity and upvars&#xD;    this.slots.radioButtonSingle = this.addSlotArityButton(&#xD;        () =&gt; this.setSlotArity(&apos;single&apos;),&#xD;        "Single input.",&#xD;        () =&gt; this.fragment.isSingleInput()&#xD;    );&#xD;    this.addSlotArityButton(&#xD;        () =&gt; this.setSlotArity(&apos;multiple&apos;),&#xD;        "Multiple inputs (value is list of inputs)",&#xD;        () =&gt; this.fragment.isMultipleInput()&#xD;    );&#xD;&#xD;    // default values&#xD;    defLabel = new StringMorph(localize(&apos;Default Value:&apos;));&#xD;    defLabel.fontSize = this.slots.radioButtonSingle.fontSize;&#xD;    defLabel.setColor(WHITE);&#xD;    defLabel.refresh = () =&gt; {&#xD;        if (this.isExpanded &amp;&amp; contains(&#xD;                [&#xD;                    &apos;%s&apos;, &apos;%n&apos;, &apos;%txt&apos;, &apos;%anyUE&apos;, &apos;%b&apos;, &apos;%boolUE&apos;,&#xD;                    &apos;%bool&apos;,&#xD;                    &apos;%mlt&apos;, &apos;%code&apos;&#xD;                ],&#xD;                this.fragment.type&#xD;            )) {&#xD;            defLabel.show();&#xD;        } else {&#xD;            defLabel.hide();&#xD;        }&#xD;    };&#xD;    this.slots.defaultInputLabel = defLabel;&#xD;    this.slots.add(defLabel);&#xD;&#xD;    defInput = new InputFieldMorph(this.fragment.defaultValue);&#xD;    defInput.contents().fontSize = defLabel.fontSize;&#xD;    defInput.contrast = 90;&#xD;    defInput.setWidth(50);&#xD;    defInput.refresh = () =&gt; {&#xD;        if (this.isExpanded &amp;&amp; contains(&#xD;            [&apos;%s&apos;, &apos;%n&apos;, &apos;%txt&apos;, &apos;%anyUE&apos;, &apos;%mlt&apos;, &apos;%code&apos;],&#xD;            this.fragment.type&#xD;        )) {&#xD;            defInput.show();&#xD;            defInput.setIsNumeric(false);&#xD;        } else {&#xD;            defInput.hide();&#xD;        }&#xD;    };&#xD;    this.slots.defaultInputField = defInput;&#xD;    this.slots.add(defInput);&#xD;&#xD;    defSwitch = new BooleanSlotMorph(this.fragment.defaultValue);&#xD;    defSwitch.refresh = () =&gt; {&#xD;        if (this.isExpanded &amp;&amp; contains(&#xD;            [&apos;%b&apos;, &apos;%boolUE&apos;, &apos;%bool&apos;],&#xD;            this.fragment.type&#xD;        )) {&#xD;            defSwitch.show();&#xD;        } else {&#xD;            defSwitch.hide();&#xD;        }&#xD;    };&#xD;    this.slots.defaultSwitch = defSwitch;&#xD;    this.slots.add(defSwitch);&#xD;&#xD;    // loop arrow checkbox //&#xD;    loopArrow = new ToggleMorph(&#xD;        &apos;checkbox&apos;,&#xD;        this, // target&#xD;        () =&gt; { // action&#xD;            if (this.fragment.type === &apos;%ca&apos;) {&#xD;                this.setType(&apos;%cs&apos;);&#xD;            } else {&#xD;                this.setType(&apos;%ca&apos;);&#xD;            }&#xD;        },&#xD;        null, // label string&#xD;        () =&gt; this.fragment.type === &apos;%ca&apos;,&#xD;        null, // environment&#xD;        null, // hint&#xD;        new SymbolMorph(&#xD;            &apos;loop&apos;,&#xD;            this.fontSize * 0.7,&#xD;            WHITE&#xD;        ).getImage(),&#xD;        null // builder method that constructs the element morph&#xD;    );&#xD;    loopArrow.refresh = () =&gt; {&#xD;        ToggleMorph.prototype.refresh.call(loopArrow);&#xD;        if (this.isExpanded &amp;&amp; contains(&#xD;                [&apos;%cs&apos;, &apos;%ca&apos;],&#xD;                this.fragment.type&#xD;            )) {&#xD;            loopArrow.show();&#xD;        } else {&#xD;            loopArrow.hide();&#xD;        }&#xD;    };&#xD;    this.slots.loopArrow = loopArrow;&#xD;    this.slots.add(loopArrow);&#xD;&#xD;    // settings button&#xD;    settingsButton = new PushButtonMorph(&#xD;        this.slots,&#xD;        () =&gt; this.slots.userMenu().popUpAtHand(this.world()),&#xD;        new SymbolMorph(&apos;gearPartial&apos;, this.fontSize * 1.5)&#xD;    );&#xD;    settingsButton.padding = 0;&#xD;    settingsButton.fixLayout();&#xD;    settingsButton.refresh = nop;&#xD;    this.slots.settingsButton = settingsButton;&#xD;    this.slots.add(settingsButton);&#xD;&#xD;};</l></block><list></list></block><block s="doRun"><block s="reportJSFunction"><list></list><l>InputSlotDialogMorph.prototype.fixSlotsLayout = function () {&#xD;    var slots = this.slots,&#xD;        scale = SyntaxElementMorph.prototype.scale,&#xD;        xPadding = 10 * scale,&#xD;        ypadding = 14 * scale,&#xD;        bh = (fontHeight(10) / 1.2 + 15) * scale, // slot type button height&#xD;        ah = (fontHeight(10) / 1.2 + 10) * scale, // arity button height&#xD;        size = 126, // number slot type radio buttons&#xD;        cols = [&#xD;            slots.left() + xPadding,&#xD;            slots.left() + slots.width() * 1 / 6,&#xD;            slots.left() + slots.width() * 2 / 6,&#xD;            slots.left() + slots.width() * 3 / 6,&#xD;            slots.left() + slots.width() * 4 / 6,&#xD;            slots.left() + slots.width() * 5 / 6,&#xD;&#xD;        ],&#xD;        rows = [&#xD;            slots.top() + ypadding,&#xD;            slots.top() + ypadding + bh,&#xD;            slots.top() + ypadding + bh * 2,&#xD;            slots.top() + ypadding + bh * 3,&#xD;            slots.top() + ypadding + bh * 4,&#xD;            slots.top() + ypadding + bh * 5,&#xD;            slots.top() + ypadding + bh * 6,&#xD;            slots.top() + ypadding + bh * 7,&#xD;            slots.top() + ypadding + bh * 8,&#xD;            slots.top() + ypadding + bh * 9,&#xD;            slots.top() + ypadding + bh * 10,&#xD;            slots.top() + ypadding + bh * 11,&#xD;            slots.top() + ypadding + bh * 12,&#xD;            slots.top() + ypadding + bh * 13,&#xD;            slots.top() + ypadding + bh * 14,&#xD;            slots.top() + ypadding + bh * 15,&#xD;            slots.top() + ypadding + bh * 16,&#xD;            slots.top() + ypadding + bh * 17,&#xD;            slots.top() + ypadding + bh * 18,&#xD;            slots.top() + ypadding + bh * 19,&#xD;            slots.top() + ypadding + bh * 20,&#xD;            slots.top() + ypadding + bh * 21,&#xD;            slots.top() + ypadding + bh * 21 + ah,&#xD;            slots.top() + ypadding + bh * 21 + ah * 2&#xD;        ],&#xD;        idx,&#xD;        row = -1,&#xD;        col;&#xD;&#xD;    // slot types:&#xD;&#xD;    for (idx = 0; idx &lt; size; idx += 1) {&#xD;        col = idx % 6;&#xD;        if (idx % 6 === 0) {row += 1; }&#xD;        slots.children[idx].setPosition(new Point(&#xD;            cols[col],&#xD;            rows[row]&#xD;        ));&#xD;    }&#xD;&#xD;    // arity:&#xD;&#xD;    col = 0;&#xD;    row = 21;&#xD;    for (idx = size; idx &lt; size + 2; idx += 1) {&#xD;        slots.children[idx].setPosition(new Point(&#xD;            cols[col],&#xD;            rows[row + idx - size]&#xD;        ));&#xD;    }&#xD;&#xD;    // default input&#xD;&#xD;    this.slots.defaultInputLabel.setPosition(&#xD;        this.slots.radioButtonSingle.label.topRight().add(new Point(5, 0))&#xD;    );&#xD;    this.slots.defaultInputField.setCenter(&#xD;        this.slots.defaultInputLabel.center().add(new Point(&#xD;            this.slots.defaultInputField.width() / 2&#xD;                + this.slots.defaultInputLabel.width() / 2 + 5,&#xD;            0&#xD;        ))&#xD;    );&#xD;    this.slots.defaultSwitch.setCenter(&#xD;        this.slots.defaultInputLabel.center().add(new Point(&#xD;            this.slots.defaultSwitch.width() / 2&#xD;                + this.slots.defaultInputLabel.width() / 2 + 5,&#xD;            0&#xD;        ))&#xD;    );&#xD;&#xD;    // loop arrow&#xD;&#xD;    this.slots.loopArrow.setPosition(this.slots.defaultInputLabel.position());&#xD;    this.slots.settingsButton.setPosition(&#xD;        this.slots.bottomRight().subtract(&#xD;            this.slots.settingsButton.extent().add(&#xD;                this.padding + this.slots.border&#xD;            )&#xD;        )&#xD;    );&#xD;&#xD;    this.slots.changed();&#xD;};</l></block><list></list></block><block s="doRun"><block s="reportJSFunction"><list></list><l>InputSlotDialogMorph.prototype.init = function (&#xD;    fragment,&#xD;    target,&#xD;    action,&#xD;    environment,&#xD;    category&#xD;) {&#xD;    var scale = SyntaxElementMorph.prototype.scale,&#xD;        fh = fontHeight(10) / 1.2 * scale; // "raw height"&#xD;&#xD;    // additional properties:&#xD;    this.fragment = fragment || new BlockLabelFragment();&#xD;    this.textfield = null;&#xD;    this.types = null;&#xD;    this.slots = null;&#xD;    this.isExpanded = false;&#xD;    this.category = category || &apos;other&apos;;&#xD;    this.noDelete = false;&#xD;&#xD;    // initialize inherited properties:&#xD;    BlockDialogMorph.uber.init.call(&#xD;        this,&#xD;        target,&#xD;        action,&#xD;        environment&#xD;    );&#xD;&#xD;    // override inherited properites:&#xD;    this.types = new AlignmentMorph(&apos;row&apos;, this.padding);&#xD;    this.types.respectHiddens = true; // prevent the arrow from flipping&#xD;    this.add(this.types);&#xD;    this.slots = new BoxMorph();&#xD;    this.slots.color = new Color(55, 55, 55); // same as palette&#xD;    this.slots.borderColor = this.slots.color.lighter(50);&#xD;    this.slots.setExtent(new Point((fh + 10) * 40, (fh + 10 * scale) * 30.4));&#xD;    this.add(this.slots);&#xD;    this.createSlotTypeButtons();&#xD;    this.fixSlotsLayout();&#xD;    this.addSlotsMenu();&#xD;    this.createTypeButtons();&#xD;    this.fixLayout();&#xD;};</l></block><list></list></block></script></block-definition><block-definition s="delete sprites only %&apos;sprites&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%mult%spr" readonly="true"><options>§_objectsMenu</options></input></inputs><script><block s="doWarp"><script><block s="doForEach"><l>sprite</l><block var="sprites"/><script><block s="doTellTo"><block var="sprite"/><block s="reifyScript"><script><block s="doSetVar"><l><option>my parent</option></l><l></l></block><block s="doSetVar"><l><option>my temporary?</option></l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="removeClone"></block></script><list></list></block><list><block s="reportGet"><l><option>self</option></l></block></list></block></script></block></script></block></script></block-definition><block-definition s="refresh IDE no JS" type="command" category="control"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doTellTo"><block s="newClone"><l><option>Turtle sprite</option></l></block><block s="reifyScript"><script><block s="doSetVar"><l><option>my temporary?</option></l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doSetVar"><l><option>my parent</option></l><l></l></block><block s="doSetVar"><l><option>my temporary?</option></l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="removeClone"></block></script><list></list></block><list><block s="reportGet"><l><option>self</option></l></block></list></block></script></block-definition></blocks><primitives></primitives><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="960"><pentrails>data:image/png;base64,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</pentrails><costumes><list struct="atomic" id="961"></list></costumes><sounds><list struct="atomic" id="962"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="bar(3)(2)(2)(2)" idx="1" x="-164" y="85" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="967"><costumes><list struct="atomic" id="968"></list></costumes><sounds><list struct="atomic" id="969"></list></sounds><blocks></blocks><variables></variables><scripts><script x="20" y="10"><custom-block s="a new %s of %s"><l>duplicate sprite</l><l><option>myself</option></l><comment w="90" collapsed="false">the block</comment></custom-block></script><script x="20" y="67.00000000000003"><custom-block s="create a new %s of %s"><l>deleted clone</l><l></l><comment w="90" collapsed="false">the block if it was a scratch primitive</comment></custom-block></script><script x="20" y="136"><custom-block s="delete sprites only %mult%spr"><block s="reportGet"><l><option>other sprites</option></l></block></custom-block></script><script x="20" y="180"><custom-block s="default input"></custom-block></script><script x="20" y="215.83333333333337"><custom-block s="delete sprites %mult%s"><list><l></l></list></custom-block></script><script x="20" y="254.83333333333331"><custom-block s="custom input"></custom-block></script><script x="20" y="290.6666666666666"><custom-block s="delete sprite %s"><l></l></custom-block></script><script x="20" y="329.6666666666666"><custom-block s="name %obj as %txt"><custom-block s="a new %s of %s"><l>duplicate sprite</l><l></l></custom-block><l>foo</l></custom-block></script><script x="20" y="373.6666666666666"><custom-block s="%obj named as %txt"><custom-block s="a new %s of %s"><l>duplicate sprite</l><l></l></custom-block><l>bar</l></custom-block></script><script x="20" y="411.6666666666665"><custom-block s="scisnap %s %s"><l>duplicate sprite</l><l><option>myself</option></l></custom-block></script><script x="20" y="451.6666666666665"><custom-block s="%s %s of my clones"><l>delete</l><l></l></custom-block></script><script x="20" y="491.6666666666663"><custom-block s="delete clone %n"><l><option>all</option></l><comment w="108" collapsed="false">@ego-lay_atman-bay</comment></custom-block></script></scripts></sprite><sprite name="Sprite" idx="2" x="150" y="-92" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="89.25,0,0,1" pen="tip" id="1012"><costumes><list struct="atomic" id="1013"></list></costumes><sounds><list struct="atomic" id="1014"></list></sounds><blocks></blocks><variables></variables><scripts></scripts></sprite></sprites></stage><variables></variables></scene></scenes></project><media name="create sprites, deleted clones, or permanent clones" app="Snap! 12-dev, https://snap.berkeley.edu" version="2"></media></snapdata>