<snapdata remixID="12357959"><project name="JSFunctions" app="Snap! 8.2, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="JSFunctions"><notes></notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="copy %&apos;list&apos; from %&apos;start&apos; to %&apos;end&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%n">1</input><input type="%n">10</input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>list</l><l>start</l><l>end</l></list><l>return new List(list.asArray().slice(+start - 1, +end))</l></block><list><block var="list"/><block var="start"/><block var="end"/></list></block></block></script></block-definition><block-definition s="label %&apos;text&apos; of size %&apos;size&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%txt">Hello!</input><input type="%n">12</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>text</l><l>size</l></list><l>var stage = this.parentThatIsA(StageMorph),&#xD;    context = stage.penTrails().getContext(&apos;2d&apos;),&#xD;    rotation = radians(this.direction() - 90),&#xD;    trans = new Point(&#xD;      this.center().x - stage.left(),&#xD;      this.center().y - stage.top()&#xD;    ),&#xD;    isWarped = this.Warped,&#xD;    len,&#xD;    pos;&#xD;&#xD;if (isWarped) {endWarp(); }&#xD;context.save();&#xD;context.font = size + &apos;px monospace&apos;;&#xD;context.textAlign = &apos;left&apos;;&#xD;context.textBaseline = &apos;alphabetic&apos;;&#xD;context.fillStyle = this.color.toString();&#xD;len = context.measureText(text).width;&#xD;trans = trans.multiplyBy(1 / stage.scale);&#xD;context.translate(trans.x, trans.y);&#xD;context.rotate(rotation);&#xD;context.fillText(text, 0, 0);&#xD;context.translate(-trans.x, -trans.y);&#xD;context.restore();&#xD;pos = new Point(&#xD;  len * Math.sin(radians(this.direction())),&#xD;  len * Math.cos(radians(this.direction())));&#xD;pos = pos.add(new Point(this.xPosition(), this.yPosition()));&#xD;this.gotoXY(pos.x, pos.y, false);&#xD;this.changed();&#xD;if (isWarped) {this.startWarp(); }&#xD;stage.changed();</l></block><list><block var="text"/><block var="size"/></list></block></script></block-definition><block-definition s="JS map %&apos;reporter&apos; over %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>reporter</l><l>list</l><l>process</l></list><l>// process.context.inputs:&#xD;// [0] - reporter&#xD;// [1] - list (original source)&#xD;// ---------------------------------&#xD;// [2..n] - result values (target)&#xD;&#xD;if (process.context.inputs.length - 2 === list.length()) {&#xD;  process.returnValueToParentContext(&#xD;    new List(process.context.inputs.slice(2))&#xD;  );&#xD;  return;&#xD;}&#xD;var next = list.at(process.context.inputs.length - 1);&#xD;process.pushContext();&#xD;process.evaluate(reporter, new List([next]));</l></block><list><block var="reporter"/><block var="list"/></list></block></block></script></block-definition><block-definition s="speak %&apos;text&apos;" type="command" category="sound"><header></header><code></code><translations></translations><inputs><input type="%s">Hello, World!</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>msg</l></list><l>window.speechSynthesis.speak(new SpeechSynthesisUtterance(msg))</l></block><list><block var="text"/></list></block></script></block-definition></blocks><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="true" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="66"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAAIABJREFUeF7t3X2UHWd9H/CZuffuipVt2fgFg4sTQ4AkLoXT2BRq4tpgKZK1L/fKWdqGhJe0NTkUSsmhKUmaYEjjtOFQEl6S1kkPDiQ0OVtr712tLLES2KEYmgOUmBAKJRBejMEGrGBrV9q99870zJ5dzrJopWflx57V6jN/mb2/+T0zn3k4X92585ImFgIECBAgQOBxF0gf9xENSIAAAQIECCQC2CQgQIAAAQIVCAjgCtANSYAAAQIEBLA5QIAAAQIEKhAQwBWgG5IAAQIECAhgc4AAAQIECFQgIIArQDckAQIECBAQwOYAAQIECBCoQEAAV4BuSAIECBAgIIDNAQIECBAgUIGAAK4A3ZAECBAgQEAAmwMECBAgQKACAQFcAbohCRAgQICAADYHCBAgQIBABQICuAJ0QxIgQIAAAQFsDhAgQIAAgQoEBHAF6IYkQIAAAQIC2BwgQIAAAQIVCAjgCtANSYAAAQIEBLA5QIAAAQIEKhAQwBWgG5IAAQIECAhgc4AAAQIECFQgIIArQDckAQIECBAQwOYAAQIECBCoQEAAV4BuSAIECBAgIIDNAQIECBAgUIGAAK4A3ZAECBAgQEAAmwMECBAgQKACAQFcAbohCRAgQICAADYHCBAgQIBABQICuAJ0QxIgQIAAAQFsDhAgQIAAgQoEBHAF6IYkQIAAAQIC2BwgQIAAAQIVCAjgCtANSYAAAQIEBLA5QIAAAQIEKhAQwBWgG5IAAQIECAhgc4AAAQIECFQgIIArQDckAQIECBAQwOYAAQIECBCoQEAAV4BuSAIECBAgIIDNAQIECBAgUIGAAK4A3ZAECBAgQEAAmwMECBAgQKACAQFcAbohCRAgQICAADYHCBAgQIBABQICuAJ0QxIgQIAAAQFsDhAgQIAAgQoEBHAF6IYkQIAAAQIC2BwgQIAAAQIVCAjgCtANSYAAAQIEBLA5QIAAAQIEKhAQwBWgG5IAAQIECAhgc4AAAQIECFQgIIArQDckAQIECBAQwOYAAQIECBCoQEAAV4BuSAIECBAgIIDNAQIECBAgUIGAAK4A3ZAECBAgQEAAmwMECBAgQKACAQFcAbohCRAgQICAADYHCBAgQIBABQICuAJ0QxIgQIAAAQFsDhAgQIAAgQoEBHAF6IYkQIAAAQIC2BwgQIAAAQIVCAjgCtANSYAAAQIEBLA5QIAAAQIEKhAQwBWgG5IAAQIECAhgc4AAAQIECFQgIIArQDckAQIECBAQwOYAAQIECBCoQEAAV4BuSAIECBAgIIDNAQIECBAgUIGAAK4A3ZAECBAgQEAAmwMECBAgQKACAQFcAbohCRAgQICAADYHCBAgQIBABQICuAJ0QxIgQIAAAQFsDhAgQIAAgQoEBHAF6IYkQIAAAQIC2BwgQIAAAQIVCAjgCtANSYAAAQIEBLA5QIAAAQIEKhAQwBWgG5IAAQIECAhgc4AAAQIECFQgIIArQDckAQIECBAQwOYAAQIECBCoQEAAV4BuSAIECBAgIIDNAQIECBAgUIGAAK4A3ZAECBAgQEAAmwMECBAgQKACAQFcAbohCRAgQICAADYHCBAgQIBABQICuAJ0QxIgQIAAAQFsDhAgQIAAgQoEBHAF6IYkQIAAAQIC2BwgQIAAAQIVCAjgCtANSYAAAQIEBLA5QIAAAQIEKhAQwBWgG5IAAQIECAhgc4AAAQIECFQgIIArQDckAQIECBAQwOYAAQIECBCoQEAAV4BuSAIECBAgIIDNAQIECBAgUIGAAK4A3ZAECBAgQEAAmwMECBAgQKACAQFcAbohCRAgQICAADYHCBAgQIBABQICuAJ0QxIgQIAAAQFsDhAgQIAAgQoEBHAF6IYkQIAAAQIC2BwgQIAAAQIVCAjgCtANSYAAAQIEBLA5QIAAAQIEKhAQwBWgG5IAAQIECAhgc4AAAQIECFQgIIArQDckAQIECBAQwOYAAQIECBCoQEAAV4BuSAIECBAgIIDNAQIECBAgUIGAAK4A3ZAECBAgQEAAmwMECBAgQKACAQFcAbohCRAgQICAADYHCBAgQIBABQICuAJ0QxIgQIAAAQFsDhAgQIAAgQoEBHAF6GfbkOPj45cuLCy88Mtf/vL/vffee//6bNt/+0uAAIETCQhg8+IxF2g2m3+WJMlLlgb6RlEUh9M0PdRoNA5OTEx86zHfAAMQIEBgAwoI4A14UDbbJu3YseNNQ0NDv54kSbZq3/q9Xu/d09PTr9ts+2x/CBAgcCoBAXwqIZ9HEWi1Wi8siuJ/rW6W5/knpqamri7/fv31179k27ZtN+V5/pf1ev2uWq328YmJiX6UDdCEAAECG0xAAG+wA7JZN2d0dPRnsyx739L+vTlN0w8cOXLk8vPOO++TU1NTf1P+fWxs7NNpmj57hcF3i6K4qyiKmcHBwdsnJiaObVYf+0WAwNknIIDPvmNeyR63Wq0/KoriZeXgWZY9b+/evR9fvSGtVms4z/NbV4XwctlEu91e/h25kn0wKAECBGIKCOCYmnqtKTA6Ovr1LMue0u12j1x99dUX3XLLLflaxWNjY/86TdN3lZ93u91eo9Goz8/P//aBAwf+PWICBAhsFgEBvFmO5Abej7GxsR9P03Tx9qOiKO7odDo/fbLNHRkZ+cNarfYvlgL4mm63e++2bduO+z14Ax9km0aAwLoFBPC6yaywXoHh4eHX1ev13ynX6/f7v7Bv377/drIew8PDX6nX65d3u92HZ2dnL7z77rt76x1TPQECBDa6gADe6EdoE2xfs9nclyTJcLkraZo+a3Jy8v+ttVs33XTTM/r9/vLnnXa73dwEBHaBAAECPyAggE2Kx1Tg5ptvbjz44IMPJUlyztIp6L/Lsuyufr9fPojj8B133PGFlRswMjLy6lqt9u7yb3mev3Zqamrxt+AqltHR0e39fn/2sssu+/htt93WrWIbjEmAwOYVEMCb99huiD1b6/7fFRv3lfKpWEeOHDl87rnnfrBer99WFEWr/Pz48eM/evDgwc9XsSPNZvOmJEn+59LYR5MkubvX6x2u1WqHOp3OZ6vYJmMSILC5BATw5jqeG25vtm/f/uatW7eWT8EqTz/fmiTJQJ7nN/R6vec0Go3vm3/dbrdoNBrl1dG1oii+1ul0Lj/VDg0PD5d9hnu9XnmK+6J6vX5/v9+/v9vtfvX+++9/7+k+e3rpHw4zSZI8YfU2pGn69WPHjr364MGDU6faPp8TIEBgLQEBbG48pgJjY2P3pGn6j8szyo1G4+KJiYnydHQyPj5+8SOPPHLDli1bbiiKYnuapk9duSFpmr5ncnLy59fauHL9hYWF9lLvE5aVgV6v1w9kWfbbk5OTf77eHd29e/cF9Xp9JE3TnUmSvDhJkkuWe8zNzf3mzMzMf1hvT/UECBBYFhDA5sJjJrBr167zsiz7Tnkfb5Ikn2y321etNVir1XpmURRvW75Ya2Fh4aV33nnn+09U32q1fqzX6+2v1WpXlJ8vfXP+XJqm/7vf7/eyLPuhJEn+UZIk21as/6p2u33bo9jZtNlsviNJktcsjfmi/fv33/Uo+lmVAIGzXEAAn+UT4LHc/VarNVYURbsco9fr/afp6elfPtl4rVbrz4uiuLYM1G63e+nMzMyDq+tHRkYuyrLsC2manr/0Wfnf/2r1N9zx8fFzjh07Vt5LfGu9Xh8qv4H3er2XTU9P/8np7vPY2NiH0zT9yV6vN9fv95944MCB+dPtZT0CBAgIYHPgMRNoNpvvXP7GODc39+KZmZkPrTXYjh07tg4NDR1JkqSRJMm97Xb7uSeq3b1791sajcavLX32pUaj8Q8nJia+u1bf3bt3X5+m6XQZwuVTtQYGBq482W1Qa/UpA73b7ZanzxtFUXyg0+mUp6XXtVx33XX1bdu2/Wme55f2er17BgYGDl1wwQUfuf3224+vq5FiAgQ2hYAA3hSHcWPuxOjo6OeyLHtWkiTH5ufnLzjZN8bh4eEb6/X6/qVvy2+bnp5+w+q9KkNwbm7uq41G44Klz17WbreXX/CwJkKz2fyNJEkWf6/N8/ytU1NTv7ResT179uzO83x6ab03tNvt8nT5upY9e/Y8Lc/zL65caWFh4Xi9Xv9IlmWHsix7/969e+9bV1PFBAicsQIC+Iw9dBtzw8tTxPV6/VeOHj36yPLVz0mSzLTb7Z862Ra3Wq3/UhTF68ua48eP7zx48OAHVtePjIy8qlar/deVfy+vSC6K4nCe54cHBwcPT0xMfHP1env27Hny/Pz815euun7wkksu+Xvrva+32WyWT/JafG9xr9d77vT09L2ncQTSsbGxV6dp+vJut3vV6qvAkyT5P+12+ydOo69VCBA4AwUE8Bl40DbyJrdarTcWRfFbq7bxM2mavnt2dvZ9MzMzsyfa/maz+VdJkvz9brc7n2XZE/ft2ze3um7Xrl3/eXBwcPHb6/JLGlbXFEXxV1mWHe71eofm5+c/vDzejTfeeGxgYGBLWZ/n+TOWX4EYatlqtT5TFMWV/X7/gX379j25fKx16LonqtuxY8cl9Xr9hkajsSdN0/Ke43L543a7/XOPpq91CRA4cwQE8JlzrM6ILS2vUM7z/A97vd4LVn/D6/V6377oooueuvo3z/Hx8Uu73e43yh1M0/SuycnJF60R0rcnSfLypc9+Osuyr8/Nzd3whCc8YXtRFC9Y+v145aoLSZJ8rHzQR1EUv7p8T+/c3NyTTnSB11rA27dvf8rWrVu/Xn5eFMX7O53OS2MdjGaz+YokSd6z1PvlnU7nvbF660OAwMYWEMAb+/icsVtXnoo+evToi84///zt5YM30jT94YWFhW9u3br1GRMTE0eXrpD+3SRJvlYUxcNpmt5Y7uzs7OyvHjp0qHxgxw8sIyMjB2q12uLFT+W9w51O5/ByUXkR18DAwD9J03R7rVa7ofw2vRbe/Pz8lvVcwTw2NvayNE3/aGncn+90OouBGWMZGxv7kzRNf2Zp3y87dOjQ/TH66kGAwMYXEMAb/xhtii0cGRkZyvN8cP/+/eWVzsnK33xX7eDHiqL49ZXhuvz52NjYO9I0fW35v/M8/7mpqak/Xgun/N13Kfhv6Pf7N5TvIl4K0Ls7nc7160EdGxt7b5qmi6eGH3roocs//OEPf20965+kNh0ZGflGrVZ7Up7nn52amroyUl9tCBA4AwQE8BlwkDbjJl5zzTXnXnzxxeV9uuXbjsrTxwPL+9ntdmf379+/+PKGlcvo6Og1WZZ9ZClIP9jpdMpvukHLrl27nr70G+4n1vsts9lslt9Ky0D//NTU1I8GDRhQNDo6+g+yLFu8mKvX671jenp68SIvCwECZ4eAAD47jvOG3svy9PHg4OC15anjoiiuzrLso5OTk288wUaXVxGXL294avmwjoGBgVdOTk4unhp+rJbnPOc5V15xxRWfWer/rna7vfgNPMbSarV+cenpX+Vv3yOTk5PLtznFaK8HAQIbXEAAb/ADZPO+X2BkZGRXrVbrlBdcLT2C8o2NRuOdExMTxx4Lq2az+W+TJHl72TtN0+bk5GQ5dpRlxW/a3W9961sX3nPPPY9EaawJAQJnhIAAPiMOk41cKdBqtcaLovjTJEmypb8/1Ov13lOv1z82Pz//pTRNe2maXtTtdp+0devWp/f7/fLZ0H83ODj4lvICsPVojo6OTmdZtru87SnP8wsPHDjw8HrWX6t2fHx84NixY0eWHpP5kXa7/ZMx+upBgMCZIyCAz5xjZUtXCLRarT39fv/WpSdtBdmkafqSycnJiaDiJEluvvnmxoMPPlg+fvKcoig+2ul0rgld91R1zWbzuiRJFl/mMDc3d8vMzMybT7WOzwkQ2FwCAnhzHc+zbW/SVqu1O0mS8rfUa8v3CK8B0M/z/ODx48f/6VoPAjnRejt27Lh2aGho8TWGs7Ozbzl06NCbYgHv2LHjPw4NDZX3JpcPFblm//79H43VWx8CBM4MAQF8ZhwnW3kKgfLb6ne+853yXuMfqdfrP1QUxezx48cf3LJlywONRuOry+8hXg/kyhc/lG9BmpycXLwCO8bSbDb/IkmS53W73YdnZ2cvvPvuu3vr7Vs+G3thYWF7lmU3Lv0D5JHy0Zz9fv/+Wq328W3btr3fix7Wq6qewOMnIIAfP2sjbUCB4eHhy+v1+luLovh2lmUfXFhYuGv5XuWRkZGP1Wq15+d5/sill1564XqfH73W7u7evfuCRqPx7fI37DRNpyYnJ8fWSzM6OvqzvV7vD5Yfr7nG+g/Ozc393rZt235vYmLiW+sdY2V9GfbHjx8/mOf5jw8MDPz+kSNH3nQ6/2h4NNtgXQKbTUAAb7Yjan/WJXCCZ1fnSZJ8otfrfaher/+7pdPa0+12e2RdjU9SXP5+XRTFHWVJnuevnZqaetc6eqfNZvM3kyRZ/W7lTyZJUt4udUmappeX9zyv6PlQnufXT01NfXod43xf6eoHpxRF8fxOp1N+i7cQIHCaAgL4NOGstjkEhoeHL6vVam9L07T8LfkHHv6xFJKfrdVq/73f7x+empoqXxrxqF7EMDo6+vtZlv1C2btWq/3YHXfc8blQzWazeUuSJN/7LboM8lqt9kt79+790soerVbrBUVR/EqSJMNLf3/w+PHj1x48ePDzoWOtrGs2m3+TJMnTl/92qvc7n84Y1iFwtgkI4LPtiNvfEwqUvyF/8YtffP6WLVu2NxqN8glbzzvRRV3l25DKU9VZls3U6/X/MTExUb7wYV3LyMjIF2q12o8kSXJfu91+aujKu3btOm9wcPCrSZJsK9cpn5511VVXvf6WW24pv7WfcBkeHv7der3+b8oPy9+H6/X6lRMTE98NHbOsa7VaF5an6FesszA/P39xrFuy1rMtaglsJgEBvJmOpn2JJjA+Pr6t2+1eXz5POsuy7UmSPHN186Io/qzT6fyz9QzabDZ/OEmSvy3XKYri9k6n88rQ9UdHR385y7LFF1UsPTu6fOHESb+N33LLLdmnPvWpfcsvu0iS5FXtdvu20DHLuqWHn9y5vE6e5/unpqaWv1mvp5VaAgRWCAhg04FAgEB5sVb5zbjf75dXHb84SZKL0zR9++Tk5C+eaPWli7uydrv95ZWfDw8P/8t6vf4H5d8WFhZeeuedd74/YPjFkmaz+cUkSZ5W/neapq8IfQzn6Ohouc0z5Xr9fv+effv2vTB0zLJux44dbxoaGipPfS8vr2y32+WrIS0ECDwKAQH8KPCsetYKlPcfP/Hiiy9++ERXRpcvfsiy7K8bjcZgeZq5KIrD3W73UL1eL09dvyNJkpeUj9Gs1WpPnpqaeiBUsdlszi2/07jRaJwb+lSv6667rn7++ed/M0mSC8ux1vtGp2azWX773VWuWz4RbGho6Emnc1tX6H6qI3C2CAjgs+VI28/HTWDHjh1XNBqNv2w0GuetHHTp2dXl77W1oii+nOf5lfv27StD9ZRL+TrHWq02Wxb2er256enpradcaUXBym/Pc3NzT5uZmVk8DR6yNJvN8vffxfBOkmSm3W7/VMh6aggQOLmAADZDCDwGAqOjo08qiqJZ/n7c6/Ve1Gg0LjjBMAvlIy7n5uYODQ4OHr7qqqs+sdYFVeXV2vV6/b6yR3kh2L59+y5dz2Y3m83yRQ+LV3nPz89vC72Aqvw2Pzg4WF4Bvbys+zfk9WynWgJnk4AAPpuOtn2tRKC8EOrTn/70TzzyyCPbzznnnPKVi+Uzpb/3/uPljep2u0cajca72+32r51gQ8v7f8tvreWLJcrnRz97ZmZm+TWJJ92vlRd+lWeR2+32D4y9VoOdO3f+8y1btiz/Tt1vNBpPfrQP9ajkIBiUwAYUEMAb8KDYpM0tUJ5OTtP02vIK60ajsX1hYeHZjUZj8f+LJzu9vPL50Wma3jo5Obn4LOlTLc1m851JkrymrEvT9K7JyckXnWqd5c9HRkbeXqvVylcylldt393pdK4PXVcdAQInFxDAZgiBigXK09W9Xu/FtVrt6lqtdu9aVxi3Wq1nFkWx/CCN8vT17k6nc/hkm79z585nbdmy5VPLF28lSXJDu93+YOguN5vN8iURL1gK4Nd0Op13h66rjgABAWwOENg0AiMjI2+o1WpvLXeofEZ1rVYrb0eaPNH9wKOjo9dkWTaVJMkTl+r/Ympq6vmhGOXDSe67776Hy+dNlxeQDQ4OXrZ3795vhK6vjgABAWwOENhUAqvvy+31ep+r1Wq3pWn6t2maPpDn+TOyLLupKIqdy781LywsfLMoihsPHDhQfhsOWpZuXyqvvB5Y76nroAEUETjLBZyCPssngN0/MwWGh4dfl+f5GwcGBk55NXSe55+q1+uje/fuXbyKej3L8PDwjbVabeexY8fevp5bl9YzhloCZ6uAAD5bj7z9PuMFxsfHB8qnaSVJ8vo0TZ+9aofyPM8/XqvV9s3Ozv7OzMzM4j3EFgIENo6AAN44x8KWEDhtgfHx8SccPXr0Kf1+/7Isy84/99xzP3a6twuVj9Gs1WrvStP0ijzPP3P06NE3fuhDH/rKaW+cFQkQOKGAADYxCBD4nkB5i1SWZfekafrcFSxHkyR5dbvdfh8qAgTiCQjgeJY6ETjjBZrN5iuSJHnP6h0pHxIyNDR08cTERP+M30k7QGCDCAjgDXIgbAaBjSAwNjbWStN07wm2ZaHdbm851esPN8I+2AYCZ4qAAD5TjpTtJPA4CJT3/j7wwAO3p2n6MyuHK4rCQzgeB39DnF0CAvjsOt72lkCQwM6dO0cHBgZem2XZeXmet6empn4raEVFBAgECwjgYCqFBAgQIEAgnoAAjmepEwECBAgQCBYQwMFUCgkQIECAQDwBARzPUicCBAgQIBAsIICDqRQSIECAAIF4AgI4nqVOBAgQIEAgWEAAB1MpJECAAAEC8QQEcDxLnQgQIECAQLCAAA6mUkiAAAECBOIJCOB4ljoRIECAAIFgAQEcTKWQAAECBAjEExDA8Sx1IkCAAAECwQICOJhKIQECBAgQiCcggONZ6kSAAAECBIIFBHAwlUICBAgQIBBPQADHs9SJAAECBAgECwjgYCqFBAgQIEAgnoAAjmepEwECBAgQCBYQwMFUCgkQIECAQDwBARzPUicCBAgQIBAsIICDqRQSIECAAIF4AgI4nqVOBAgQIEAgWEAAB1MpJECAAAEC8QQEcDxLnQgQIECAQLCAAA6mUkiAAAECBOIJCOB4ljoRIECAAIFgAQEcTKWQAAECBAjEExDA8Sx1IkCAAAECwQICOJhKIQECBAgQiCcggONZ6kSAAAECBIIFBHAwlUICBAgQIBBPQADHs9SJAAECBAgECwjgYCqFBAgQIEAgnoAAjmepEwECBAgQCBYQwMFUCgkQIECAQDwBARzPUicCBAgQIBAsIICDqRQSIECAAIF4AgI4nqVOBAgQIEAgWEAAB1MpJECAAAEC8QQEcDxLnQgQIECAQLCAAA6mUkiAAAECBOIJCOB4ljoRIECAAIFgAQEcTKWQAAECBAjEExDA8Sx1IkCAAAECwQICOJhKIQECBAgQiCcggONZ6kSAAAECBIIFBHAwlUICBAgQIBBPQADHs9SJAAECBAgECwjgYCqFBAgQIEAgnoAAjmepEwECBAgQCBYQwMFUCgkQIECAQDwBARzPUicCBAgQIBAsIICDqRQSIECAAIF4AgI4nqVOBAgQIEAgWEAAB1MpJECAAAEC8QQEcDxLnQgQIECAQLCAAA6mUkiAAAECBOIJCOB4ljoRIECAAIFgAQEcTKWQAAECBAjEExDA8Sx1IkCAAAECwQICOJhKIQECBAgQiCcggONZ6kSAAAECBIIFBHAwlUICBAgQIBBPQADHs9SJAAECBAgECwjgYCqFBAgQIEAgnoAAjmepEwECBAgQCBYQwMFUCgkQIECAQDwBARzPUicCBAgQIBAsIICDqRQSIECAAIF4AgI4nqVOBAgQIEAgWEAAB1MpJECAAAEC8QQEcDxLnQgQIECAQLCAAA6mUkiAAAECBOIJCOB4ljoRIECAAIFgAQEcTKWQAAECBAjEExDA8Sx1IkCAAAECwQICOJhKIQECBAgQiCcggONZ6kSAAAECBIIFBHAwlUICBAgQIBBPQADHs9SJAAECBAgECwjgYCqFBAgQIEAgnoAAjmepEwECBAgQCBYQwMFUCgkQIECAQDwBARzPUicCBAgQIBAsIICDqRQSIECAAIF4AgI4nqVOBAgQIEAgWEAAB1MpJECAAAEC8QQEcDxLnQgQIECAQLCAAA6mUkiAAAECBOIJCOB4ljoRIECAAIFgAQEcTKWQAAECBAjEExDA8Sx1IkCAAAECwQICOJhKIQECBAgQiCcggONZ6kSAAAECBIIFBHAwlUICBAgQIBBPQADHs9SJAAECBAgECwjgYCqFBAgQIEAgnoAAjmepEwECBAgQCBYQwMFUCgkQIECAQDwBARzPUicCBAgQIBAsIICDqRQSIECAAIF4AgI4nqVOBAgQIEAgWEAAB1MpJECAAAEC8QQEcDxLnQgQIECAQLCAAA6mUkiAAAECBOIJCOB4ljoRIECAAIFgAQEcTKWQAAECBAjEExDA8Sx1IkCAAAECwQICOJhKIQECBAgQiCcggONZ6kSAAAECBIIFBHAwlUICBAgQIBBPQADHs9SJAAECBAgECwjgYCqFBAgQIEAgnoAAjmepEwECBAgQCBYQwMFUCgkQIECAQDwBARzPUicCBAgQIBAsIICDqRQSIECAAIF4AgI4nqVOBAgQIEAgWEAAB1MpJECAAAEC8QQEcDxLnQgQIECAQLCAAA6mUkiAAAECBOIJCOB4ljoRIECAAIFgAQEcTKWQAAECBAjEExDA8Sx1IkCAAAECwQICOJhKIQECBAgQiCcggONZ6kSAAAECBIIFBHAwlUICBAgQIBBPQADHs9SJAAGOWz4TAAACjElEQVQCBAgECwjgYCqFBAgQIEAgnoAAjmepEwECBAgQCBYQwMFUCgkQIECAQDwBARzPUicCBAgQIBAsIICDqRQSIECAAIF4AgI4nqVOBAgQIEAgWEAAB1MpJECAAAEC8QQEcDxLnQgQIECAQLCAAA6mUkiAAAECBOIJCOB4ljoRIECAAIFgAQEcTKWQAAECBAjEExDA8Sx1IkCAAAECwQICOJhKIQECBAgQiCcggONZ6kSAAAECBIIFBHAwlUICBAgQIBBPQADHs9SJAAECBAgECwjgYCqFBAgQIEAgnoAAjmepEwECBAgQCBYQwMFUCgkQIECAQDwBARzPUicCBAgQIBAsIICDqRQSIECAAIF4AgI4nqVOBAgQIEAgWEAAB1MpJECAAAEC8QQEcDxLnQgQIECAQLCAAA6mUkiAAAECBOIJCOB4ljoRIECAAIFgAQEcTKWQAAECBAjEExDA8Sx1IkCAAAECwQICOJhKIQECBAgQiCcggONZ6kSAAAECBIIFBHAwlUICBAgQIBBPQADHs9SJAAECBAgECwjgYCqFBAgQIEAgnoAAjmepEwECBAgQCBYQwMFUCgkQIECAQDwBARzPUicCBAgQIBAsIICDqRQSIECAAIF4AgI4nqVOBAgQIEAgWEAAB1MpJECAAAEC8QQEcDxLnQgQIECAQLCAAA6mUkiAAAECBOIJCOB4ljoRIECAAIFgAQEcTKWQAAECBAjEExDA8Sx1IkCAAAECwQICOJhKIQECBAgQiCcggONZ6kSAAAECBIIFBHAwlUICBAgQIBBPQADHs9SJAAECBAgECwjgYCqFBAgQIEAgnoAAjmepEwECBAgQCBYQwMFUCgkQIECAQDyB/w90SebDXt3eIAAAAABJRU5ErkJggg==</pentrails><costumes><list struct="atomic" id="67"></list></costumes><sounds><list struct="atomic" id="68"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Sprite" idx="1" x="34.00441814031274" y="-3.328227907064843" heading="105" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="73"><costumes><list struct="atomic" id="74"></list></costumes><sounds><list struct="atomic" id="75"></list></sounds><blocks></blocks><variables></variables><scripts><script x="20" y="20"><block s="evaluate"><block s="reportJSFunction"><list><l>a</l><l>b</l></list><l>return +a + +b</l></block><list><l>3</l><l>4</l></list></block></script><script x="20" y="71"><block s="doDeclareVariables"><list><l>mult</l></list></block><block s="doSetVar"><l>mult</l><block s="reportJSFunction"><list><l>a</l><l>b</l></list><l>return +a * +b</l></block></block><block s="doSayFor"><block s="evaluate"><block var="mult"/><list><l>5</l><l>2</l></list></block><l>2</l></block></script><script x="20" y="166"><block s="doRun"><block s="reportJSFunction"><list><l>degrees</l></list><l>this.turn(+degrees)</l></block><list><l>15</l></list></block></script><script x="20" y="223"><block s="evaluate"><block s="reportJSFunction"><list><l>list</l><l>start</l><l>end</l></list><l>return new List(list.asArray().slice(+start - 1, +end))</l></block><list><block s="reportNewList"><list><l>foo</l><l>bar</l><l>baz</l><l>qux</l><l>frob</l><l>spam</l><l>garply</l></list></block><l>3</l><l>5</l></list></block></script><script x="20" y="292"><custom-block s="copy %l from %n to %n"><block s="reportNewList"><list><l>foo</l><l>bar</l><l>baz</l><l>qux</l><l>frob</l><l>spam</l><l>garply</l></list></block><l>3</l><l>5</l></custom-block></script><script x="20" y="328.99999999999994"><block s="clear"></block></script><script x="20" y="365"><block s="doRun"><block s="reportJSFunction"><list><l>size</l><l>level</l></list><l>var myself = this;&#xD;&#xD;function sierp (length, depth) {&#xD;  if (depth) {&#xD;    for (var i = 0; i &lt; 3; i +=1) {&#xD;      sierp(length / 2, depth - 1);&#xD;      myself.forward(length)&#xD;      myself.turn(120);&#xD;    }&#xD;  } &#xD;}&#xD;&#xD;this.clear();&#xD;this.up();&#xD;this.gotoXY(0, 0);&#xD;this.down();&#xD;for (var i = 0; i &lt; 12; i += 1) {&#xD;  sierp(+size, +level);&#xD;  this.turn(30);&#xD;}&#xD;this.up();</l></block><list><l>200</l><l>5</l></list></block></script><script x="20" y="684"><custom-block s="label %txt of size %n"><l>Hello!</l><l>36</l></custom-block></script><script x="20" y="722.9999999999999"><custom-block s="JS map %repRing over %l"><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l>hello </l><l></l></list></block></autolambda><list></list></block><block s="reportNewList"><list><l>foo</l><l>bar</l><l>baz</l></list></block></custom-block></script><script x="20" y="766.0000000000001"><custom-block s="speak %s"><l>Hello, World!</l></custom-block></script></scripts></sprite></sprites></stage><variables></variables></scene></scenes></project><media name="JSFunctions" app="Snap! 8.2, https://snap.berkeley.edu" version="2"></media></snapdata>