diff --git a/boards/default/micropython/build/lib/irremote.py b/boards/default/micropython/build/lib/irremote.py index a0ee264f..756844ea 100644 --- a/boards/default/micropython/build/lib/irremote.py +++ b/boards/default/micropython/build/lib/irremote.py @@ -7,6 +7,7 @@ Micropython library for the IR-Remote/Timer(IR_RX&TX) """ import array, time, gc from machine import Pin, Timer +from os import uname try: from esp32 import RMT TX_MOED = 1 @@ -27,7 +28,7 @@ class IR_RX: self._pulses = array.array('H') self.code = [None, None, None, memoryview(self._pulses)] #存放[cmd, addr, data, pulses] Pin(pin, Pin.IN).irq(handler=self._irq_cb, trigger=(Pin.IRQ_FALLING | Pin.IRQ_RISING)) - Timer(timer_id).init(period=5, mode=Timer.PERIODIC, callback=self._timer_cb) + Timer(0 if "-C2" in uname().machine else timer_id).init(period=5, mode=Timer.PERIODIC, callback=self._timer_cb) def _irq_cb(self, pin): if not self._enable: @@ -67,8 +68,8 @@ class IR_RX: self._enable = onoff class NEC_RX(IR_RX): - def __init__(self, pin, bits=None, callback=None): - super().__init__(pin, callback, timeout=15000) + def __init__(self, pin, bits=None, callback=None, timer_id=1): + super().__init__(pin, callback, timer_id=timer_id) self._bits = bits def decode(self): @@ -103,8 +104,8 @@ class NEC_RX(IR_RX): self.code[0:3] = None, None, value class RC5_RX(IR_RX): - def __init__(self, pin, callback=None): - super().__init__(pin, callback, timeout=15000) + def __init__(self, pin, callback=None, timer_id=1): + super().__init__(pin, callback, timer_id=timer_id) def decode(self): pulse_len = len(self._pulses) diff --git a/boards/default/micropython/build/lib/map.json b/boards/default/micropython/build/lib/map.json index 9ac239e5..b97f385d 100644 --- a/boards/default/micropython/build/lib/map.json +++ b/boards/default/micropython/build/lib/map.json @@ -363,11 +363,12 @@ "time", "gc", "machine", + "os", "esp32", "machine" ], "__file__": true, - "__size__": 6913, + "__size__": 7002, "__name__": "irremote.py" }, "ltr308al": { diff --git a/boards/default/micropython_esp32c2/build/Mixgo_Mini_lib-v1.23.0.bin b/boards/default/micropython_esp32c2/build/Mixgo_Mini_lib-v1.23.0.bin index 6c0b0e65..b521e86a 100644 Binary files a/boards/default/micropython_esp32c2/build/Mixgo_Mini_lib-v1.23.0.bin and b/boards/default/micropython_esp32c2/build/Mixgo_Mini_lib-v1.23.0.bin differ diff --git a/boards/default/micropython_esp32c2/build/Mixgo_Mini_lib_ble-v1.23.0.bin b/boards/default/micropython_esp32c2/build/Mixgo_Mini_lib_ble-v1.23.0.bin index 9ee509fd..b5cc176d 100644 Binary files a/boards/default/micropython_esp32c2/build/Mixgo_Mini_lib_ble-v1.23.0.bin and b/boards/default/micropython_esp32c2/build/Mixgo_Mini_lib_ble-v1.23.0.bin differ diff --git a/boards/default/python_skulpt_car/bg_highlight_1afd05a4.js b/boards/default/python_skulpt_car/bg_highlight_1afd05a4.js deleted file mode 100644 index 6fea5284..00000000 --- a/boards/default/python_skulpt_car/bg_highlight_1afd05a4.js +++ /dev/null @@ -1 +0,0 @@ -var $builtinmodule=function(t){let e={__name__:new Sk.builtin.str("blocklygame")};var i=d3.select("#blocklySVG").append("svg"),r=[[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,2,1,1,1,1,3,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0]],a=0,n=1,o=2,p=3,c=0,l=1,s=-1,m={10010:[4,0],10001:[3,3],11e3:[0,1],10100:[0,2],11010:[4,1],10101:[3,2],10110:[0,0],10011:[2,0],11001:[4,2],11100:[2,3],11110:[1,1],10111:[1,0],11011:[2,1],11101:[1,2],11111:[2,2],null0:[4,3],null1:[3,0],null2:[3,1],null3:[0,3],null4:[1,3]},u={img:"../common/js/skulpt_mixcar/pic/pegman.png",height:52,width:49,direction:n,type:"animate",x:0,y:0,stepSpeed:150,coin_point:0,marker_num:0,oil:1,traffic_light:22,circulation_num:0},k=50,h=r.length,f=r[0].length,g=0,S={mlevel:0,tiles:"../common/js/skulpt_mixcar/pic/maze_path.png",marker:"../common/js/skulpt_mixcar/pic/marker.png",background:"../common/js/skulpt_mixcar/pic/bg_astro.jpg",wall:"../common/js/skulpt_mixcar/pic/roadblock.png",award:"../common/js/skulpt_mixcar/pic/award.png",barrier:"",markers:[],SquareType:{WALL:0,OPEN:1,START:2,FINISH:3,AWARD:4},MAZE_WIDTH:k*f,MAZE_HEIGHT:k*h,PATH_WIDTH:16.666666666666668,result:c,finish:{x:0,y:0},type:1},y=[{mlevel:1,map:[[0,1,1,13,1,1,12,0],[0,1,0,1,0,0,1,0],[0,1,1,9,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,10,1,1,11,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg1.jpg",wall:"",award:"",barrier:"",markers:["../common/js/skulpt_mixcar/pic/red.png","../common/js/skulpt_mixcar/pic/yellow.png","../common/js/skulpt_mixcar/pic/blue.png","../common/js/skulpt_mixcar/pic/green.png"],SquareType:{WALL:0,OPEN:1,MARKER1:10,MARKER2:11,MARKER3:12,MARKER4:13,S_F:9,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:c,finish:{x:0,y:0},type:0,INVIMNUM:0},{mlevel:2,map:[[0,1,1,13,1,1,12,0],[0,1,0,5,0,0,1,0],[0,1,1,9,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,10,1,1,11,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg2.jpg",wall:"",award:"",barrier:"../common/js/skulpt_mixcar/pic/barrier.png",markers:["../common/js/skulpt_mixcar/pic/red.png","../common/js/skulpt_mixcar/pic/yellow.png","../common/js/skulpt_mixcar/pic/blue.png","../common/js/skulpt_mixcar/pic/green.png"],SquareType:{WALL:0,OPEN:1,BARRIER:5,MARKER1:10,MARKER2:11,MARKER3:12,MARKER4:13,S_F:9,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:c,finish:{x:0,y:0},type:0,INVIMNUM:0},{mlevel:3,map:[[0,1,1,13,24,1,24,0],[0,1,0,Math.random()>.5?1:5,0,0,1,0],[0,1,1,9,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,24,1,1,24,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg2.jpg",wall:"",award:"",barrier:"../common/js/skulpt_mixcar/pic/barrier.png",markers:["../common/js/skulpt_mixcar/pic/red.png","../common/js/skulpt_mixcar/pic/yellow.png","../common/js/skulpt_mixcar/pic/blue.png","../common/js/skulpt_mixcar/pic/green.png"],SquareType:{WALL:0,OPEN:1,BARRIER:5,MARKER4:13,S_F:9,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:c,finish:{x:0,y:0},type:0,INVIMNUM:4},{mlevel:4,map:[[0,1,1,13,24,1,24,0],[20,1,0,Math.random()>.5?1:5,0,0,1,0],[0,1,1,9,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,24,1,1,24,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg3.jpg",wall:"",award:"",barrier:"../common/js/skulpt_mixcar/pic/barrier.png",markers:["../common/js/skulpt_mixcar/pic/red.png","../common/js/skulpt_mixcar/pic/yellow.png","../common/js/skulpt_mixcar/pic/blue.png","../common/js/skulpt_mixcar/pic/green.png"],SquareType:{WALL:0,OPEN:1,BARRIER:5,MARKER4:13,S_F:9,OIL_STATION:20,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:c,finish:{x:0,y:0},type:0,INVIMNUM:4},{mlevel:5,map:[[0,1,1,1,1,1,1,0],[0,1,0,0,0,0,1,0],[0,1,1,2,21,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,1,1,1,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg4.jpg",wall:"",award:"",barrier:"",markers:[],SquareType:{WALL:0,OPEN:1,START:2,S_F:9,TRAFFIC_LIGHT:21,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:c,finish:{x:3,y:2},type:0,INVIMNUM:0},{mlevel:6,map:[[0,1,1,13,1,1,12,0],[0,1,0,1,0,0,1,0],[0,1,1,2,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,10,1,1,11,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg1.jpg",wall:"",award:"",barrier:"",markers:["../common/js/skulpt_mixcar/pic/red.png","../common/js/skulpt_mixcar/pic/yellow.png","../common/js/skulpt_mixcar/pic/blue.png","../common/js/skulpt_mixcar/pic/green.png"],SquareType:{WALL:0,OPEN:1,START:2,MARKER1:10,MARKER2:11,MARKER3:12,MARKER4:13,S_F:9,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:c,finish:{x:0,y:0},type:0,INVIMNUM:0},{mlevel:7,map:[[0,1,1,1,1,1,1,0],[0,1,0,0,0,0,1,0],[0,1,1,2,22,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,1,1,1,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg4.jpg",wall:"",award:"",barrier:"",markers:[],SquareType:{WALL:0,OPEN:1,START:2,S_F:9,LIGHT_GREEN:22,LIGHT_RED:23,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:c,finish:{x:3,y:2},type:0,INVIMNUM:0}],T=function(t,e,i,r){var a=$("#pegman");"animate"==u.type?(0==S.type?(a.attr("x",t*k-i*u.width+1),a.attr("y",k*(e+.5)-u.height/2)):(a.attr("x",t*k-i*u.width+1),a.attr("y",k*(e+.5)-u.height/2-8)),r?a.attr("transform","rotate("+r+", "+(t*k+25)+", "+(e*k+25)+")"):a.attr("transform","rotate(0, 0, 0)")):(a.attr("x",t*k+1),a.attr("y",k*(e+.5)-u.height/2));var n=$("#clipRect");n.attr("x",t*k+1),n.attr("y",a.attr("y"))},d=function(){i.attr("id","game_stage");var t=Math.max(h,f)*k;i.attr("viewBox","0 -10 "+t+" "+(t+10)),i.append("rect").attr("x",0).attr("y",0).attr("width",S.MAZE_WIDTH).attr("height",S.MAZE_HEIGHT).style("fill","#F1EEE7").style("stroke","#CCB").style("stroke-width","1"),i.append("image").attr("x",0).attr("y",0).attr("width",k*f).attr("height",k*h).attr("xlink:href",S.background);for(var e=function(t,e){return t<0||t>=f||e<0||e>=h||r[e][t]==S.SquareType.WALL||r[e][t]==S.SquareType.OIL_STATION?"0":"1"},a=0,n=0;n.3?"null0":"null"+Math.floor(1+4*Math.random()));var c=m[p][0],l=m[p][1];i.append("clipPath").attr("id","tileClipPath"+a),d3.select("#tileClipPath"+a).append("rect").attr("x",o*k).attr("y",n*k).attr("width",k).attr("height",k),0==S.type?r[n][o]!=S.SquareType.WALL&&r[n][o]!=S.SquareType.OIL_STATION&&r[n][o]!=S.SquareType.TRAFFIC_LIGHT&&r[n][o]!=S.SquareType.LIGHT_GREEN&&r[n][o]!=S.SquareType.LIGHT_RED&&(i.append("image").attr("x",o*k).attr("y",n*k).attr("width",k).attr("height",k).attr("clip-path","url(#tileClipPath"+a+")").attr("xlink:href",S.tiles),a++):(i.append("image").attr("x",(o-c)*k).attr("y",(n-l)*k).attr("width",250).attr("height",200).attr("clip-path","url(#tileClipPath"+a+")").attr("xlink:href",S.tiles),a++),0==r[n][o]?i.append("image").attr("x",o*k+5).attr("y",n*k+5).attr("width",40).attr("height",40).attr("xlink:href",S.wall):4==r[n][o]?i.append("image").attr("id","coin"+n+o).attr("x",o*k+12.5).attr("y",n*k+12.5).attr("width",25).attr("height",25).attr("xlink:href",S.award):5==r[n][o]?i.append("image").attr("id","barrier"+n+o).attr("x",o*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href",S.barrier):10==r[n][o]?(i.append("image").attr("id","marker1").attr("x",o*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href",S.markers[0]),g+=1):11==r[n][o]?(i.append("image").attr("id","marker2").attr("x",o*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href",S.markers[1]),g+=1):12==r[n][o]?(i.append("image").attr("id","marker3").attr("x",o*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href",S.markers[2]),g+=1):13==r[n][o]&&(i.append("image").attr("id","marker4").attr("x",o*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href",S.markers[3]),g+=1)}if(1==S.type){i.append("image").attr("id","finish").attr("width",25).attr("height",25).attr("xlink:href",S.marker);for(n=0;n=S.INVIMNUM||"error3":"error2"))},x=function(t,e){var i,c,l=u.direction+t;switch(b(l)){case a:i=r[u.y-1]&&r[u.y-1][u.x],c="look_north";break;case n:i=r[u.y][u.x+1],c="look_east";break;case o:i=r[u.y+1]&&r[u.y+1][u.x],c="look_south";break;case p:i=r[u.y][u.x-1],c="look_west"}return e?[c,i!==S.SquareType.WALL&&void 0!==i&&i!==S.SquareType.BARRIER&&i!==S.SquareType.OIL_STATION&&i!==S.SquareType.TRAFFIC_LIGHT&&i!==S.SquareType.LIGHT_RED&&i!==S.SquareType.LIGHT_GREEN]:i!==S.SquareType.WALL&&void 0!==i&&i!==S.SquareType.BARRIER&&i!==S.SquareType.OIL_STATION&&i!==S.SquareType.TRAFFIC_LIGHT&&i!==S.SquareType.LIGHT_RED&&i!==S.SquareType.LIGHT_GREEN},b=function(t){return(t=Math.round(t)%4)<0&&(t+=4),t},w=function(t){return(t=Math.round(t)%16)<0&&(t+=16),t},E=function(t,e){var i=[(e[0]-t[0])/4,(e[1]-t[1])/4,(e[2]-t[2])/4];T(t[0]+i[0],t[1]+i[1],w(t[2]+i[2])),setTimeout((function(){T(t[0]+2*i[0],t[1]+2*i[1],w(t[2]+2*i[2]))}),u.stepSpeed),setTimeout((function(){T(t[0]+3*i[0],t[1]+3*i[1],w(t[2]+3*i[2]))}),2*u.stepSpeed),setTimeout((function(){T(e[0],e[1],w(e[2]))}),3*u.stepSpeed)},I=function(t){t=Sk.ffi.remapToJs(t),Mixly.Editor.blockEditor.highlightBlock(t)};e.setMap=new Sk.builtin.func((function(t,e,i,a,n){if(Sk.builtin.pyCheckArgs("setMap",arguments,5,5),r=[],"无可用地图"==n&&(n=""),t<3||t>20||e<3||e>20)throw new Sk.builtin.TypeError("错误!超出地图可设置范围,请设置横纵方格数大于等于3,小于等于20");switch(t=Sk.ffi.remapToJs(t),e=Sk.ffi.remapToJs(e),f=t,h=e,S.MAZE_WIDTH=k*f,S.MAZE_HEIGHT=k*h,i=Sk.ffi.remapToJs(i),a=Sk.ffi.remapToJs(a),Sk.ffi.remapToJs(n)){case"bg_default":S.background="../common/js/skulpt_mixcar/pic/bg_default.png";break;case"bg_astro":S.background="../common/js/skulpt_mixcar/pic/bg_astro.jpg";break;case"bg_panda":S.background="../common/js/skulpt_mixcar/pic/bg_panda.jpg"}var o;if(null!=(o=/\((\d+),(\d+)\)/.exec(i))&&(o[1]>t||o[1]<1||o[2]>e||o[2]<1))throw new Sk.builtin.TypeError("错误!起点坐标超出地图范围!");if(null!=(o=/\((\d+),(\d+)\)/.exec(a))&&(o[1]>t||o[1]<1||o[2]>e||o[2]<1))throw new Sk.builtin.TypeError("错误!终点坐标超出地图范围!");for(var p=0;pr[0].length||t<0||e>r.length||e<0)throw new Sk.builtin.TypeError("错误!放置物坐标超过地图范围");switch(i){case"wall":r[e-1][t-1]=S.SquareType.WALL;break;case"coin":r[e-1][t-1]=S.SquareType.AWARD}}));e.initMap=new Sk.builtin.func((function(){d()}));e.Actor=Sk.misceval.buildClass(e,(function(t,e){e.__init__=new Sk.builtin.func((function(t,e,r,n){return new Sk.misceval.promiseToSuspension(new Promise((function(t){Sk.setTimeout((function(){switch("无可用角色"==(e=Sk.ffi.remapToJs(e)||"pegman")&&(e="pegman"),e){case"pegman":u.img="../common/js/skulpt_mixcar/pic/pegman.png",u.type="animate";break;case"panda":u.img="../common/js/skulpt_mixcar/pic/panda.png",u.type="animate";break;case"astro":u.img="../common/js/skulpt_mixcar/pic/astro.png",u.type="animate";break;case"robot":u.img="../common/js/skulpt_mixcar/pic/robot.png",u.type="still";break;case"car":u.img="../common/js/skulpt_mixcar/pic/actor_car3.png",u.type="animate"}u.direction=Sk.ffi.remapToJs(r)||a,size=[52,49],u.coin_point=0;var o=/block_id=([\s\S]*)/.exec(n);null!=o&&(n=o[1],I(n)),i.append("clipPath").attr("id","pegmanClipPath"),d3.select("#pegmanClipPath").append("rect").attr("id","clipRect").attr("width",u.width).attr("height",u.height),"animate"==u.type?0==S.type?i.append("image").attr("id","pegman").attr("width",16*u.width).attr("height",u.height).attr("clip-path","url(#pegmanClipPath)").attr("xlink:href",u.img):i.append("image").attr("id","pegman").attr("width",21*u.width).attr("height",u.height).attr("clip-path","url(#pegmanClipPath)").attr("xlink:href",u.img):i.append("image").attr("id","pegman").attr("width",u.width).attr("height",u.height).attr("clip-path","url(#pegmanClipPath)").attr("xlink:href",u.img),T(u.x,u.y,4*u.direction),t(Sk.builtin.none.none$)}),800)})))})),e.moveDirection=new Sk.builtin.func((function(t,e,c){return Sk.builtin.pyCheckArgs("moveDirection",arguments,3,3),new Sk.misceval.promiseToSuspension(new Promise((function(t){Sk.setTimeout((function(){u.direction=parseInt(Sk.ffi.remapToJs(e));var l=function(t){if(!x(0,null))return!1;var e;switch(b(t)){case a:e="north";break;case n:e="east";break;case o:e="south";break;case p:e="west"}return e}(e);if(0==l)throw S.result=s,layer.alert("挑战失败!请修改后重新尝试",{shade:!1}),new Sk.builtin.TypeError("挑战失败!请修改后重新尝试");if(4==S.mlevel){if(r[u.y][u.x-1]==S.SquareType.OIL_STATION&&0==u.oil)throw S.result=s,i.append("image").attr("id","caroil").attr("x",k).attr("y",175).attr("width",k).attr("height",k).attr("xlink:href","../common/js/skulpt_mixcar/pic/no_oil.png"),layer.alert("挑战失败!小车没有油了",{shade:!1}),new Sk.builtin.TypeError("挑战失败!小车没有油了")}else if(5==S.mlevel)r[u.y][u.x]==S.SquareType.START&&(u.circulation_num+=1);else if(7==S.mlevel&&u.traffic_light==S.SquareType.LIGHT_RED)throw layer.alert("挑战失败:小车在红灯亮时还未停止!",{shade:!1}),new Sk.builtin.TypeError("挑战失败:小车在红灯亮时还未停止!");switch(l){case"north":E([u.x,u.y,4*u.direction],[u.x,u.y-1,4*u.direction]),u.y--;break;case"east":E([u.x,u.y,4*u.direction],[u.x+1,u.y,4*u.direction]),u.x++;break;case"south":E([u.x,u.y,4*u.direction],[u.x,u.y+1,4*u.direction]),u.y++;break;case"west":E([u.x,u.y,4*u.direction],[u.x-1,u.y,4*u.direction]),u.x--}var m,h,f=/block_id=([\s\S]*)/.exec(c);null!=f&&(c=f[1],I(c)),m=u.x,h=u.y,r[h][m]==S.SquareType.AWARD&&(setTimeout((function(){$("#coin"+h+m).remove()}),3*u.stepSpeed),r[h][m]=S.SquareType.OPEN,u.coin_point+=1),function(t,e){r[e][t]!=S.SquareType.MARKER1&&r[e][t]!=S.SquareType.MARKER2&&r[e][t]!=S.SquareType.MARKER3&&r[e][t]!=S.SquareType.MARKER4||(u.marker_num+=1)}(u.x,u.y),function(t,e){r[e][t]==S.SquareType.INVIMAKER&&(u.invisible_mark+=1)}(u.x,u.y),7==S.mlevel&&(r[u.y][u.x+1]!=S.SquareType.LIGHT_RED&&r[u.y][u.x+1]!=S.SquareType.LIGHT_GREEN||(r[u.y][u.x+1]=Math.random()>.5?S.SquareType.LIGHT_RED:S.SquareType.LIGHT_GREEN,u.traffic_light=r[u.y][u.x+1],u.traffic_light==S.SquareType.LIGHT_RED&&(d3.select("#lightgreen").remove(),i.append("image").attr("id","lightred").attr("x",(u.x+1)*k-5).attr("y",u.y*k+5).attr("width",k).attr("height",k).attr("xlink:href","../common/js/skulpt_mixcar/pic/redlight.png"))));var g=_();if("error2"==g)throw S.result=s,layer.alert("挑战失败,请检查是否通过所有标记点!",{shade:!1}),new Sk.builtin.TypeError("挑战失败,请检查是否通过所有标记点!");if("error3"==g)throw layer.alert("挑战失败,请修改后重新尝试!",{shade:!1}),new Sk.builtin.TypeError("挑战失败!请修改后重新尝试");t(Sk.builtin.none.none$)}),800)})))})),e.turn=new Sk.builtin.func((function(t,e,i){return Sk.builtin.pyCheckArgs("turn",arguments,3,3),Sk.builtin.pyCheckType("direction","string",Sk.builtin.checkString(e)),new Sk.misceval.promiseToSuspension(new Promise((function(t){Sk.setTimeout((function(){switch(function(t){return"right"==t?"right":"left"}(e=Sk.ffi.remapToJs(e))){case"left":E([u.x,u.y,4*u.direction],[u.x,u.y,4*u.direction-4]),u.direction=b(u.direction-1);break;case"right":E([u.x,u.y,4*u.direction],[u.x,u.y,4*u.direction+4]),u.direction=b(u.direction+1)}var r=/block_id=([\s\S]*)/.exec(i);null!=r&&(i=r[1],I(i)),t(Sk.builtin.none.none$)}),800)})))})),e.isDone=new Sk.builtin.func((function(t,e){return Sk.builtin.pyCheckArgs("isDone",arguments,2,2),new Sk.misceval.promiseToSuspension(function(t){return new Promise((e=>{setTimeout((()=>{var i=/block_id=([\s\S]*)/.exec(t);null!=i&&(t=i[1],I(t)),I(t);var r=Sk.ffi.remapToPy(_());e(r)}),800)}))}(e).then((t=>Sk.ffi.remapToPy(t))))})),e.isPath=new Sk.builtin.func((function(t,e){return Sk.builtin.pyCheckArgs("isPath",arguments,2,2),Sk.builtin.pyCheckType("direction","string",Sk.builtin.checkString(e)),e=Sk.ffi.remapToJs(e),new Sk.misceval.promiseToSuspension(function(t,e){return new Promise((i=>{setTimeout((()=>{var r="",a=/block_id=([\s\S]*)/.exec(e);switch(null!=a&&(e=a[1],I(e)),I(e),t){case"left":r=x(t=3,null);break;case"right":r=x(t=1,null)}i(Sk.ffi.remapToPy(r))}),800)}))}(e,block_id).then((t=>Sk.ffi.remapToPy(t))))})),e.isBarrier=new Sk.builtin.func((function(t,e,i){return Sk.builtin.pyCheckArgs("isBarrier",arguments,3,3),Sk.builtin.pyCheckType("direction","number",Sk.builtin.checkNumber(e)),e=Sk.ffi.remapToJs(e),new Sk.misceval.promiseToSuspension(function(t,e){return new Promise((i=>{setTimeout((()=>{var c,l=0,s=/block_id=([\s\S]*)/.exec(e);switch(null!=s&&(e=s[1],I(e)),I(e),t){case a:l=r[u.y-1]?r[u.y-1][u.x]:0;break;case n:l=r[u.y][u.x+1]?r[u.y][u.x+1]:0;break;case o:l=r[u.y+1]?r[u.y+1][u.x]:0;break;case p:l=r[u.y][u.x-1]?r[u.y][u.x-1]:0}c=l==S.SquareType.BARRIER,i(Sk.ffi.remapToPy(c))}),800)}))}(e,i).then((t=>Sk.ffi.remapToPy(t))))})),e.randomOil=new Sk.builtin.func((function(t,e){return Sk.builtin.pyCheckArgs("randomOil",arguments,2,2),new Sk.misceval.promiseToSuspension(new Promise((function(t){Sk.setTimeout((function(){u.oil=Math.random()>.5?1:0,0==u.oil?i.append("image").attr("id","caroil").attr("x",k).attr("y",175).attr("width",k).attr("height",k).attr("xlink:href","../common/js/skulpt_mixcar/pic/none_oil.png"):1==u.oil&&i.append("image").attr("id","caroil").attr("x",k).attr("y",175).attr("width",k).attr("height",k).attr("xlink:href","../common/js/skulpt_mixcar/pic/full_oil.png");var r=/block_id=([\s\S]*)/.exec(e);null!=r&&(e=r[1],I(e)),t(Sk.builtin.none.none$)}),800)})))})),e.isOilFull=new Sk.builtin.func((function(t,e){return Sk.builtin.pyCheckArgs("isOilFull",arguments,2,2),new Sk.misceval.promiseToSuspension(function(t){return new Promise((e=>{setTimeout((()=>{var i=/block_id=([\s\S]*)/.exec(t);null!=i&&(t=i[1],I(t)),I(t),0==u.oil?e(Sk.ffi.remapToPy(!0)):1==u.oil&&e(Sk.ffi.remapToPy(!1))}),800)}))}(e).then((t=>Sk.ffi.remapToPy(t))))})),e.addOil=new Sk.builtin.func((function(t,e){return Sk.builtin.pyCheckArgs("addOil",arguments,2,2),new Sk.misceval.promiseToSuspension(new Promise((function(t){Sk.setTimeout((function(){i.append("image").attr("id","caroil").attr("x",k).attr("y",175).attr("width",k).attr("height",k).attr("xlink:href","../common/js/skulpt_mixcar/pic/full_oil.png"),u.oil=1;var r=/block_id=([\s\S]*)/.exec(e);null!=r&&(e=r[1],I(e)),t(Sk.builtin.none.none$)}),800)})))})),e.getPoint=new Sk.builtin.func((function(t,e){return Sk.builtin.pyCheckArgs("getPoint",arguments,2,2),new Sk.misceval.promiseToSuspension(function(t){return new Promise((e=>{setTimeout((()=>{var i=/block_id=([\s\S]*)/.exec(t);null!=i&&(t=i[1],I(t)),I(t);var r=u.coin_point;e(Sk.ffi.remapToPy(r))}),800)}))}(e).then((t=>Sk.ffi.remapToPy(t))))})),e.isLightGreen=new Sk.builtin.func((function(t,e){return Sk.builtin.pyCheckArgs("isLightGreen",arguments,2,2),new Sk.misceval.promiseToSuspension(function(t){return new Promise((e=>{setTimeout((()=>{var i=/block_id=([\s\S]*)/.exec(t);null!=i&&(t=i[1],I(t)),I(t),u.traffic_light==S.SquareType.LIGHT_GREEN?e(Sk.ffi.remapToPy(!0)):u.traffic_light==S.SquareType.LIGHT_RED&&e(Sk.ffi.remapToPy(!1))}),800)}))}(e).then((t=>Sk.ffi.remapToPy(t))))})),e.isCirculationRight=new Sk.builtin.func((function(t){return Sk.builtin.pyCheckArgs("isCirculationRight",arguments,1,1),new Sk.misceval.promiseToSuspension(new Promise((function(t){Sk.setTimeout((function(){var e=!1;switch(S.mlevel){case 5:e=3==u.circulation_num;break;case 7:if(u.traffic_light==S.SquareType.LIGHT_GREEN)e=!1;else if(u.traffic_light==S.SquareType.LIGHT_RED)for(var i=0;i.5?1:5,0,0,1,0],[0,1,1,9,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,24,1,1,24,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg2.jpg",wall:"",award:"",barrier:"../common/js/skulpt_mixcar/pic/barrier.png",markers:["../common/js/skulpt_mixcar/pic/red.png","../common/js/skulpt_mixcar/pic/yellow.png","../common/js/skulpt_mixcar/pic/blue.png","../common/js/skulpt_mixcar/pic/green.png"],SquareType:{WALL:0,OPEN:1,BARRIER:5,MARKER4:13,S_F:9,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:c,finish:{x:0,y:0},type:0,INVIMNUM:4},{mlevel:4,map:[[0,1,1,13,24,1,24,0],[20,1,0,Math.random()>.5?1:5,0,0,1,0],[0,1,1,9,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,24,1,1,24,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg3.jpg",wall:"",award:"",barrier:"../common/js/skulpt_mixcar/pic/barrier.png",markers:["../common/js/skulpt_mixcar/pic/red.png","../common/js/skulpt_mixcar/pic/yellow.png","../common/js/skulpt_mixcar/pic/blue.png","../common/js/skulpt_mixcar/pic/green.png"],SquareType:{WALL:0,OPEN:1,BARRIER:5,MARKER4:13,S_F:9,OIL_STATION:20,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:c,finish:{x:0,y:0},type:0,INVIMNUM:4},{mlevel:5,map:[[0,1,1,1,1,1,1,0],[0,1,0,0,0,0,1,0],[0,1,1,2,21,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,1,1,1,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg4.jpg",wall:"",award:"",barrier:"",markers:[],SquareType:{WALL:0,OPEN:1,START:2,S_F:9,TRAFFIC_LIGHT:21,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:c,finish:{x:3,y:2},type:0,INVIMNUM:0},{mlevel:6,map:[[0,1,1,13,1,1,12,0],[0,1,0,1,0,0,1,0],[0,1,1,2,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,10,1,1,11,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg1.jpg",wall:"",award:"",barrier:"",markers:["../common/js/skulpt_mixcar/pic/red.png","../common/js/skulpt_mixcar/pic/yellow.png","../common/js/skulpt_mixcar/pic/blue.png","../common/js/skulpt_mixcar/pic/green.png"],SquareType:{WALL:0,OPEN:1,START:2,MARKER1:10,MARKER2:11,MARKER3:12,MARKER4:13,S_F:9,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:c,finish:{x:0,y:0},type:0,INVIMNUM:0},{mlevel:7,map:[[0,1,1,1,1,1,1,0],[0,1,0,0,0,0,1,0],[0,1,1,2,22,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,1,1,1,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg4.jpg",wall:"",award:"",barrier:"",markers:[],SquareType:{WALL:0,OPEN:1,START:2,S_F:9,LIGHT_GREEN:22,LIGHT_RED:23,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:c,finish:{x:3,y:2},type:0,INVIMNUM:0}],y=function(t,e,i,r){var a=$(Sk.TurtleGraphics.target).find("#pegman");"animate"==u.type?(0==S.type?(a.attr("x",t*k-i*u.width+1),a.attr("y",k*(e+.5)-u.height/2)):(a.attr("x",t*k-i*u.width+1),a.attr("y",k*(e+.5)-u.height/2-8)),r?a.attr("transform","rotate("+r+", "+(t*k+25)+", "+(e*k+25)+")"):a.attr("transform","rotate(0, 0, 0)")):(a.attr("x",t*k+1),a.attr("y",k*(e+.5)-u.height/2));var n=$(Sk.TurtleGraphics.target).find("#clipRect");n.attr("x",t*k+1),n.attr("y",a.attr("y"))},d=function(){i.attr("id","game_stage");var t=Math.max(h,f)*k;i.attr("viewBox","0 -10 "+t+" "+(t+10)),i.append("rect").attr("x",0).attr("y",0).attr("width",S.MAZE_WIDTH).attr("height",S.MAZE_HEIGHT).style("fill","#F1EEE7").style("stroke","#CCB").style("stroke-width","1"),i.append("image").attr("x",0).attr("y",0).attr("width",k*f).attr("height",k*h).attr("xlink:href",S.background);for(var e=function(t,e){return t<0||t>=f||e<0||e>=h||r[e][t]==S.SquareType.WALL||r[e][t]==S.SquareType.OIL_STATION?"0":"1"},a=0,n=0;n.3?"null0":"null"+Math.floor(1+4*Math.random()));var c=m[p][0],l=m[p][1];i.append("clipPath").attr("id","tileClipPath"+a);const t=Sk.TurtleGraphics.target.querySelector("#tileClipPath"+a);d3.select(t).append("rect").attr("x",o*k).attr("y",n*k).attr("width",k).attr("height",k),0==S.type?r[n][o]!=S.SquareType.WALL&&r[n][o]!=S.SquareType.OIL_STATION&&r[n][o]!=S.SquareType.TRAFFIC_LIGHT&&r[n][o]!=S.SquareType.LIGHT_GREEN&&r[n][o]!=S.SquareType.LIGHT_RED&&(i.append("image").attr("x",o*k).attr("y",n*k).attr("width",k).attr("height",k).attr("clip-path","url(#tileClipPath"+a+")").attr("xlink:href",S.tiles),a++):(i.append("image").attr("x",(o-c)*k).attr("y",(n-l)*k).attr("width",250).attr("height",200).attr("clip-path","url(#tileClipPath"+a+")").attr("xlink:href",S.tiles),a++),0==r[n][o]?i.append("image").attr("x",o*k+5).attr("y",n*k+5).attr("width",40).attr("height",40).attr("xlink:href",S.wall):4==r[n][o]?i.append("image").attr("id","coin"+n+o).attr("x",o*k+12.5).attr("y",n*k+12.5).attr("width",25).attr("height",25).attr("xlink:href",S.award):5==r[n][o]?i.append("image").attr("id","barrier"+n+o).attr("x",o*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href",S.barrier):10==r[n][o]?(i.append("image").attr("id","marker1").attr("x",o*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href",S.markers[0]),g+=1):11==r[n][o]?(i.append("image").attr("id","marker2").attr("x",o*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href",S.markers[1]),g+=1):12==r[n][o]?(i.append("image").attr("id","marker3").attr("x",o*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href",S.markers[2]),g+=1):13==r[n][o]&&(i.append("image").attr("id","marker4").attr("x",o*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href",S.markers[3]),g+=1)}if(1==S.type){i.append("image").attr("id","finish").attr("width",25).attr("height",25).attr("xlink:href",S.marker);for(n=0;n=S.INVIMNUM||"error3":"error2")))},x=function(t,e){var i,c,l=u.direction+t;switch(b(l)){case a:i=r[u.y-1]&&r[u.y-1][u.x],c="look_north";break;case n:i=r[u.y][u.x+1],c="look_east";break;case o:i=r[u.y+1]&&r[u.y+1][u.x],c="look_south";break;case p:i=r[u.y][u.x-1],c="look_west"}return e?[c,i!==S.SquareType.WALL&&void 0!==i&&i!==S.SquareType.BARRIER&&i!==S.SquareType.OIL_STATION&&i!==S.SquareType.TRAFFIC_LIGHT&&i!==S.SquareType.LIGHT_RED&&i!==S.SquareType.LIGHT_GREEN]:i!==S.SquareType.WALL&&void 0!==i&&i!==S.SquareType.BARRIER&&i!==S.SquareType.OIL_STATION&&i!==S.SquareType.TRAFFIC_LIGHT&&i!==S.SquareType.LIGHT_RED&&i!==S.SquareType.LIGHT_GREEN},b=function(t){return(t=Math.round(t)%4)<0&&(t+=4),t},w=function(t){return(t=Math.round(t)%16)<0&&(t+=16),t},I=function(t,e){var i=[(e[0]-t[0])/4,(e[1]-t[1])/4,(e[2]-t[2])/4];y(t[0]+i[0],t[1]+i[1],w(t[2]+i[2])),setTimeout((function(){y(t[0]+2*i[0],t[1]+2*i[1],w(t[2]+2*i[2]))}),u.stepSpeed),setTimeout((function(){y(t[0]+3*i[0],t[1]+3*i[1],w(t[2]+3*i[2]))}),2*u.stepSpeed),setTimeout((function(){y(e[0],e[1],w(e[2]))}),3*u.stepSpeed)},E=function(t){t=Sk.ffi.remapToJs(t),Mixly.Editor.blockEditor.highlightBlock(t)};e.setMap=new Sk.builtin.func((function(t,e,i,a,n){if(Sk.builtin.pyCheckArgs("setMap",arguments,5,5),r=[],"无可用地图"==n&&(n=""),t<3||t>20||e<3||e>20)throw new Sk.builtin.TypeError("错误!超出地图可设置范围,请设置横纵方格数大于等于3,小于等于20");switch(t=Sk.ffi.remapToJs(t),e=Sk.ffi.remapToJs(e),f=t,h=e,S.MAZE_WIDTH=k*f,S.MAZE_HEIGHT=k*h,i=Sk.ffi.remapToJs(i),a=Sk.ffi.remapToJs(a),Sk.ffi.remapToJs(n)){case"bg_default":S.background="../common/js/skulpt_mixcar/pic/bg_default.png";break;case"bg_astro":S.background="../common/js/skulpt_mixcar/pic/bg_astro.jpg";break;case"bg_panda":S.background="../common/js/skulpt_mixcar/pic/bg_panda.jpg"}var o;if(null!=(o=/\((\d+),(\d+)\)/.exec(i))&&(o[1]>t||o[1]<1||o[2]>e||o[2]<1))throw new Sk.builtin.TypeError("错误!起点坐标超出地图范围!");if(null!=(o=/\((\d+),(\d+)\)/.exec(a))&&(o[1]>t||o[1]<1||o[2]>e||o[2]<1))throw new Sk.builtin.TypeError("错误!终点坐标超出地图范围!");for(var p=0;pr[0].length||t<0||e>r.length||e<0)throw new Sk.builtin.TypeError("错误!放置物坐标超过地图范围");switch(i){case"wall":r[e-1][t-1]=S.SquareType.WALL;break;case"coin":r[e-1][t-1]=S.SquareType.AWARD}}));e.initMap=new Sk.builtin.func((function(){d()}));e.Actor=Sk.misceval.buildClass(e,(function(t,e){e.__init__=new Sk.builtin.func((function(t,e,r,n){return new Sk.misceval.promiseToSuspension(new Promise((function(t){Sk.setTimeout((function(){switch("无可用角色"==(e=Sk.ffi.remapToJs(e)||"pegman")&&(e="pegman"),e){case"pegman":u.img="../common/js/skulpt_mixcar/pic/pegman.png",u.type="animate";break;case"panda":u.img="../common/js/skulpt_mixcar/pic/panda.png",u.type="animate";break;case"astro":u.img="../common/js/skulpt_mixcar/pic/astro.png",u.type="animate";break;case"robot":u.img="../common/js/skulpt_mixcar/pic/robot.png",u.type="still";break;case"car":u.img="../common/js/skulpt_mixcar/pic/actor_car3.png",u.type="animate"}u.direction=Sk.ffi.remapToJs(r)||a,size=[52,49],u.coin_point=0;var o=/block_id=([\s\S]*)/.exec(n);null!=o&&(n=o[1],E(n)),function(){i.append("clipPath").attr("id","pegmanClipPath");const t=Sk.TurtleGraphics.target.querySelector("#pegmanClipPath");d3.select(t).append("rect").attr("id","clipRect").attr("width",u.width).attr("height",u.height),"animate"==u.type?0==S.type?i.append("image").attr("id","pegman").attr("width",16*u.width).attr("height",u.height).attr("clip-path","url(#pegmanClipPath)").attr("xlink:href",u.img):i.append("image").attr("id","pegman").attr("width",21*u.width).attr("height",u.height).attr("clip-path","url(#pegmanClipPath)").attr("xlink:href",u.img):i.append("image").attr("id","pegman").attr("width",u.width).attr("height",u.height).attr("clip-path","url(#pegmanClipPath)").attr("xlink:href",u.img),y(u.x,u.y,4*u.direction)}(),t(Sk.builtin.none.none$)}),800)})))})),e.moveDirection=new Sk.builtin.func((function(t,e,c){return Sk.builtin.pyCheckArgs("moveDirection",arguments,3,3),new Sk.misceval.promiseToSuspension(new Promise((function(t){Sk.setTimeout((function(){u.direction=parseInt(Sk.ffi.remapToJs(e));var l=function(t){if(!x(0,null))return!1;var e;switch(b(t)){case a:e="north";break;case n:e="east";break;case o:e="south";break;case p:e="west"}return e}(e);if(0==l)throw S.result=s,layer.alert("挑战失败!请修改后重新尝试",{shade:!1}),new Sk.builtin.TypeError("挑战失败!请修改后重新尝试");if(4==S.mlevel){if(r[u.y][u.x-1]==S.SquareType.OIL_STATION&&0==u.oil)throw S.result=s,i.append("image").attr("id","caroil").attr("x",k).attr("y",175).attr("width",k).attr("height",k).attr("xlink:href","../common/js/skulpt_mixcar/pic/no_oil.png"),layer.alert("挑战失败!小车没有油了",{shade:!1}),new Sk.builtin.TypeError("挑战失败!小车没有油了")}else if(5==S.mlevel)r[u.y][u.x]==S.SquareType.START&&(u.circulation_num+=1);else if(7==S.mlevel&&u.traffic_light==S.SquareType.LIGHT_RED)throw layer.alert("挑战失败:小车在红灯亮时还未停止!",{shade:!1}),new Sk.builtin.TypeError("挑战失败:小车在红灯亮时还未停止!");switch(l){case"north":I([u.x,u.y,4*u.direction],[u.x,u.y-1,4*u.direction]),u.y--;break;case"east":I([u.x,u.y,4*u.direction],[u.x+1,u.y,4*u.direction]),u.x++;break;case"south":I([u.x,u.y,4*u.direction],[u.x,u.y+1,4*u.direction]),u.y++;break;case"west":I([u.x,u.y,4*u.direction],[u.x-1,u.y,4*u.direction]),u.x--}var m,h,f=/block_id=([\s\S]*)/.exec(c);if(null!=f&&(c=f[1],E(c)),m=u.x,h=u.y,r[h][m]==S.SquareType.AWARD&&(setTimeout((function(){$(Sk.TurtleGraphics.target).find("#coin"+h+m).remove()}),3*u.stepSpeed),r[h][m]=S.SquareType.OPEN,u.coin_point+=1),function(t,e){r[e][t]!=S.SquareType.MARKER1&&r[e][t]!=S.SquareType.MARKER2&&r[e][t]!=S.SquareType.MARKER3&&r[e][t]!=S.SquareType.MARKER4||(u.marker_num+=1)}(u.x,u.y),function(t,e){r[e][t]==S.SquareType.INVIMAKER&&(u.invisible_mark+=1)}(u.x,u.y),7==S.mlevel&&(r[u.y][u.x+1]==S.SquareType.LIGHT_RED||r[u.y][u.x+1]==S.SquareType.LIGHT_GREEN)&&(r[u.y][u.x+1]=Math.random()>.5?S.SquareType.LIGHT_RED:S.SquareType.LIGHT_GREEN,u.traffic_light=r[u.y][u.x+1],u.traffic_light==S.SquareType.LIGHT_RED)){const t=Sk.TurtleGraphics.target.querySelector("#lightgreen");d3.select(t).remove(),i.append("image").attr("id","lightred").attr("x",(u.x+1)*k-5).attr("y",u.y*k+5).attr("width",k).attr("height",k).attr("xlink:href","../common/js/skulpt_mixcar/pic/redlight.png")}var g=_();if("error2"==g)throw S.result=s,layer.alert("挑战失败,请检查是否通过所有标记点!",{shade:!1}),new Sk.builtin.TypeError("挑战失败,请检查是否通过所有标记点!");if("error3"==g)throw layer.alert("挑战失败,请修改后重新尝试!",{shade:!1}),new Sk.builtin.TypeError("挑战失败!请修改后重新尝试");t(Sk.builtin.none.none$)}),800)})))})),e.turn=new Sk.builtin.func((function(t,e,i){return Sk.builtin.pyCheckArgs("turn",arguments,3,3),Sk.builtin.pyCheckType("direction","string",Sk.builtin.checkString(e)),new Sk.misceval.promiseToSuspension(new Promise((function(t){Sk.setTimeout((function(){switch(function(t){return"right"==t?"right":"left"}(e=Sk.ffi.remapToJs(e))){case"left":I([u.x,u.y,4*u.direction],[u.x,u.y,4*u.direction-4]),u.direction=b(u.direction-1);break;case"right":I([u.x,u.y,4*u.direction],[u.x,u.y,4*u.direction+4]),u.direction=b(u.direction+1)}var r=/block_id=([\s\S]*)/.exec(i);null!=r&&(i=r[1],E(i)),t(Sk.builtin.none.none$)}),800)})))})),e.isDone=new Sk.builtin.func((function(t,e){return Sk.builtin.pyCheckArgs("isDone",arguments,2,2),new Sk.misceval.promiseToSuspension(function(t){return new Promise((e=>{setTimeout((()=>{var i=/block_id=([\s\S]*)/.exec(t);null!=i&&(t=i[1],E(t)),E(t);var r=Sk.ffi.remapToPy(_());e(r)}),800)}))}(e).then((t=>Sk.ffi.remapToPy(t))))})),e.isPath=new Sk.builtin.func((function(t,e){return Sk.builtin.pyCheckArgs("isPath",arguments,2,2),Sk.builtin.pyCheckType("direction","string",Sk.builtin.checkString(e)),e=Sk.ffi.remapToJs(e),new Sk.misceval.promiseToSuspension(function(t,e){return new Promise((i=>{setTimeout((()=>{var r="",a=/block_id=([\s\S]*)/.exec(e);switch(null!=a&&(e=a[1],E(e)),E(e),t){case"left":r=x(t=3,null);break;case"right":r=x(t=1,null)}i(Sk.ffi.remapToPy(r))}),800)}))}(e,block_id).then((t=>Sk.ffi.remapToPy(t))))})),e.isBarrier=new Sk.builtin.func((function(t,e,i){return Sk.builtin.pyCheckArgs("isBarrier",arguments,3,3),Sk.builtin.pyCheckType("direction","number",Sk.builtin.checkNumber(e)),e=Sk.ffi.remapToJs(e),new Sk.misceval.promiseToSuspension(function(t,e){return new Promise((i=>{setTimeout((()=>{var c,l=0,s=/block_id=([\s\S]*)/.exec(e);switch(null!=s&&(e=s[1],E(e)),E(e),t){case a:l=r[u.y-1]?r[u.y-1][u.x]:0;break;case n:l=r[u.y][u.x+1]?r[u.y][u.x+1]:0;break;case o:l=r[u.y+1]?r[u.y+1][u.x]:0;break;case p:l=r[u.y][u.x-1]?r[u.y][u.x-1]:0}c=l==S.SquareType.BARRIER,i(Sk.ffi.remapToPy(c))}),800)}))}(e,i).then((t=>Sk.ffi.remapToPy(t))))})),e.randomOil=new Sk.builtin.func((function(t,e){return Sk.builtin.pyCheckArgs("randomOil",arguments,2,2),new Sk.misceval.promiseToSuspension(new Promise((function(t){Sk.setTimeout((function(){u.oil=Math.random()>.5?1:0,0==u.oil?i.append("image").attr("id","caroil").attr("x",k).attr("y",175).attr("width",k).attr("height",k).attr("xlink:href","../common/js/skulpt_mixcar/pic/none_oil.png"):1==u.oil&&i.append("image").attr("id","caroil").attr("x",k).attr("y",175).attr("width",k).attr("height",k).attr("xlink:href","../common/js/skulpt_mixcar/pic/full_oil.png");var r=/block_id=([\s\S]*)/.exec(e);null!=r&&(e=r[1],E(e)),t(Sk.builtin.none.none$)}),800)})))})),e.isOilFull=new Sk.builtin.func((function(t,e){return Sk.builtin.pyCheckArgs("isOilFull",arguments,2,2),new Sk.misceval.promiseToSuspension(function(t){return new Promise((e=>{setTimeout((()=>{var i=/block_id=([\s\S]*)/.exec(t);null!=i&&(t=i[1],E(t)),E(t),0==u.oil?e(Sk.ffi.remapToPy(!0)):1==u.oil&&e(Sk.ffi.remapToPy(!1))}),800)}))}(e).then((t=>Sk.ffi.remapToPy(t))))})),e.addOil=new Sk.builtin.func((function(t,e){return Sk.builtin.pyCheckArgs("addOil",arguments,2,2),new Sk.misceval.promiseToSuspension(new Promise((function(t){Sk.setTimeout((function(){i.append("image").attr("id","caroil").attr("x",k).attr("y",175).attr("width",k).attr("height",k).attr("xlink:href","../common/js/skulpt_mixcar/pic/full_oil.png"),u.oil=1;var r=/block_id=([\s\S]*)/.exec(e);null!=r&&(e=r[1],E(e)),t(Sk.builtin.none.none$)}),800)})))})),e.getPoint=new Sk.builtin.func((function(t,e){return Sk.builtin.pyCheckArgs("getPoint",arguments,2,2),new Sk.misceval.promiseToSuspension(function(t){return new Promise((e=>{setTimeout((()=>{var i=/block_id=([\s\S]*)/.exec(t);null!=i&&(t=i[1],E(t)),E(t);var r=u.coin_point;e(Sk.ffi.remapToPy(r))}),800)}))}(e).then((t=>Sk.ffi.remapToPy(t))))})),e.isLightGreen=new Sk.builtin.func((function(t,e){return Sk.builtin.pyCheckArgs("isLightGreen",arguments,2,2),new Sk.misceval.promiseToSuspension(function(t){return new Promise((e=>{setTimeout((()=>{var i=/block_id=([\s\S]*)/.exec(t);null!=i&&(t=i[1],E(t)),E(t),u.traffic_light==S.SquareType.LIGHT_GREEN?e(Sk.ffi.remapToPy(!0)):u.traffic_light==S.SquareType.LIGHT_RED&&e(Sk.ffi.remapToPy(!1))}),800)}))}(e).then((t=>Sk.ffi.remapToPy(t))))})),e.isCirculationRight=new Sk.builtin.func((function(t){return Sk.builtin.pyCheckArgs("isCirculationRight",arguments,1,1),new Sk.misceval.promiseToSuspension(new Promise((function(t){Sk.setTimeout((function(){var e=!1;switch(S.mlevel){case 5:e=3==u.circulation_num;break;case 7:if(u.traffic_light==S.SquareType.LIGHT_GREEN)e=!1;else if(u.traffic_light==S.SquareType.LIGHT_RED)for(var i=0;i.5?1:5,0,0,1,0],[0,1,1,9,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,24,1,1,24,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg2.jpg",wall:"",award:"",barrier:"../common/js/skulpt_mixcar/pic/barrier.png",markers:["../common/js/skulpt_mixcar/pic/red.png","../common/js/skulpt_mixcar/pic/yellow.png","../common/js/skulpt_mixcar/pic/blue.png","../common/js/skulpt_mixcar/pic/green.png"],SquareType:{WALL:0,OPEN:1,BARRIER:5,MARKER4:13,S_F:9,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:l,finish:{x:0,y:0},type:0,INVIMNUM:4},{mlevel:4,map:[[0,1,1,13,24,1,24,0],[20,1,0,Math.random()>.5?1:5,0,0,1,0],[0,1,1,9,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,24,1,1,24,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg3.jpg",wall:"",award:"",barrier:"../common/js/skulpt_mixcar/pic/barrier.png",markers:["../common/js/skulpt_mixcar/pic/red.png","../common/js/skulpt_mixcar/pic/yellow.png","../common/js/skulpt_mixcar/pic/blue.png","../common/js/skulpt_mixcar/pic/green.png"],SquareType:{WALL:0,OPEN:1,BARRIER:5,MARKER4:13,S_F:9,OIL_STATION:20,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:l,finish:{x:0,y:0},type:0,INVIMNUM:4},{mlevel:5,map:[[0,1,1,1,1,1,1,0],[0,1,0,0,0,0,1,0],[0,1,1,2,21,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,1,1,1,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg4.jpg",wall:"",award:"",barrier:"",markers:[],SquareType:{WALL:0,OPEN:1,START:2,S_F:9,TRAFFIC_LIGHT:21,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:l,finish:{x:3,y:2},type:0,INVIMNUM:0},{mlevel:6,map:[[0,1,1,13,1,1,12,0],[0,1,0,1,0,0,1,0],[0,1,1,2,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,10,1,1,11,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg1.jpg",wall:"",award:"",barrier:"",markers:["../common/js/skulpt_mixcar/pic/red.png","../common/js/skulpt_mixcar/pic/yellow.png","../common/js/skulpt_mixcar/pic/blue.png","../common/js/skulpt_mixcar/pic/green.png"],SquareType:{WALL:0,OPEN:1,START:2,MARKER1:10,MARKER2:11,MARKER3:12,MARKER4:13,S_F:9,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:l,finish:{x:0,y:0},type:0,INVIMNUM:0},{mlevel:7,map:[[0,1,1,1,1,1,1,0],[0,1,0,0,0,0,1,0],[0,1,1,2,22,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,1,1,1,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg4.jpg",wall:"",award:"",barrier:"",markers:[],SquareType:{WALL:0,OPEN:1,START:2,S_F:9,LIGHT_GREEN:22,LIGHT_RED:23,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:l,finish:{x:3,y:2},type:0,INVIMNUM:0}],T=function(t,r,e,i){var a=$(Sk.TurtleGraphics.target).find("#pegman");"animate"==u.type?(0==y.type?(a.attr("x",t*k-e*u.width+1),a.attr("y",k*(r+.5)-u.height/2)):(a.attr("x",t*k-e*u.width+1),a.attr("y",k*(r+.5)-u.height/2-8)),i?a.attr("transform","rotate("+i+", "+(t*k+25)+", "+(r*k+25)+")"):a.attr("transform","rotate(0, 0, 0)")):(a.attr("x",t*k+1),a.attr("y",k*(r+.5)-u.height/2));var n=$(Sk.TurtleGraphics.target).find("#clipRect");n.attr("x",t*k+1),n.attr("y",a.attr("y"))},S=function(){e.attr("id","game_stage");var t=Math.max(h,g)*k;e.attr("viewBox","0 -10 "+t+" "+(t+10)),e.append("rect").attr("x",0).attr("y",0).attr("width",y.MAZE_WIDTH).attr("height",y.MAZE_HEIGHT).style("fill","#F1EEE7").style("stroke","#CCB").style("stroke-width","1"),e.append("image").attr("x",0).attr("y",0).attr("width",k*g).attr("height",k*h).attr("xlink:href",y.background);for(var r=function(t,r){return t<0||t>=g||r<0||r>=h||i[r][t]==y.SquareType.WALL||i[r][t]==y.SquareType.OIL_STATION?"0":"1"},a=0,n=0;n.3?"null0":"null"+Math.floor(1+4*Math.random()));var l=m[c][0],o=m[c][1];e.append("clipPath").attr("id","tileClipPath"+a);const t=Sk.TurtleGraphics.target.querySelector("#tileClipPath"+a);d3.select(t).append("rect").attr("x",p*k).attr("y",n*k).attr("width",k).attr("height",k),0==y.type?i[n][p]!=y.SquareType.WALL&&i[n][p]!=y.SquareType.OIL_STATION&&i[n][p]!=y.SquareType.TRAFFIC_LIGHT&&i[n][p]!=y.SquareType.LIGHT_GREEN&&i[n][p]!=y.SquareType.LIGHT_RED&&(e.append("image").attr("x",p*k).attr("y",n*k).attr("width",k).attr("height",k).attr("clip-path","url(#tileClipPath"+a+")").attr("xlink:href",y.tiles),a++):(e.append("image").attr("x",(p-l)*k).attr("y",(n-o)*k).attr("width",250).attr("height",200).attr("clip-path","url(#tileClipPath"+a+")").attr("xlink:href",y.tiles),a++),0==i[n][p]?e.append("image").attr("x",p*k+5).attr("y",n*k+5).attr("width",40).attr("height",40).attr("xlink:href",y.wall):4==i[n][p]?e.append("image").attr("id","coin"+n+p).attr("x",p*k+12.5).attr("y",n*k+12.5).attr("width",25).attr("height",25).attr("xlink:href",y.award):5==i[n][p]?e.append("image").attr("id","barrier"+n+p).attr("x",p*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href",y.barrier):10==i[n][p]?(e.append("image").attr("id","marker1").attr("x",p*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href",y.markers[0]),f+=1):11==i[n][p]?(e.append("image").attr("id","marker2").attr("x",p*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href",y.markers[1]),f+=1):12==i[n][p]?(e.append("image").attr("id","marker3").attr("x",p*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href",y.markers[2]),f+=1):13==i[n][p]&&(e.append("image").attr("id","marker4").attr("x",p*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href",y.markers[3]),f+=1)}if(1==y.type){e.append("image").attr("id","finish").attr("width",25).attr("height",25).attr("xlink:href",y.marker);for(n=0;n=y.INVIMNUM||"error3":"error2"))},x=function(t,r){var e,l,o=u.direction+t;switch(b(o)){case a:e=i[u.y-1]&&i[u.y-1][u.x],l="look_north";break;case n:e=i[u.y][u.x+1],l="look_east";break;case p:e=i[u.y+1]&&i[u.y+1][u.x],l="look_south";break;case c:e=i[u.y][u.x-1],l="look_west"}return r?[l,e!==y.SquareType.WALL&&void 0!==e&&e!==y.SquareType.BARRIER&&e!==y.SquareType.OIL_STATION&&e!==y.SquareType.TRAFFIC_LIGHT&&e!==y.SquareType.LIGHT_RED&&e!==y.SquareType.LIGHT_GREEN]:e!==y.SquareType.WALL&&void 0!==e&&e!==y.SquareType.BARRIER&&e!==y.SquareType.OIL_STATION&&e!==y.SquareType.TRAFFIC_LIGHT&&e!==y.SquareType.LIGHT_RED&&e!==y.SquareType.LIGHT_GREEN},b=function(t){return(t=Math.round(t)%4)<0&&(t+=4),t},w=function(t){return(t=Math.round(t)%16)<0&&(t+=16),t},I=function(t,r){var e=[(r[0]-t[0])/4,(r[1]-t[1])/4,(r[2]-t[2])/4];T(t[0]+e[0],t[1]+e[1],w(t[2]+e[2])),setTimeout((function(){T(t[0]+2*e[0],t[1]+2*e[1],w(t[2]+2*e[2]))}),u.stepSpeed),setTimeout((function(){T(t[0]+3*e[0],t[1]+3*e[1],w(t[2]+3*e[2]))}),2*u.stepSpeed),setTimeout((function(){T(r[0],r[1],w(r[2]))}),3*u.stepSpeed)};r.setMap=new Sk.builtin.func((function(t,r,e,a,n){if(Sk.builtin.pyCheckArgs("setMap",arguments,5,5),i=[],"无可用地图"==n&&(n=""),t<3||t>20||r<3||r>20)throw new Sk.builtin.TypeError("错误!超出地图可设置范围,请设置横纵方格数大于等于3,小于等于20");switch(t=Sk.ffi.remapToJs(t),r=Sk.ffi.remapToJs(r),g=t,h=r,y.MAZE_WIDTH=k*g,y.MAZE_HEIGHT=k*h,e=Sk.ffi.remapToJs(e),a=Sk.ffi.remapToJs(a),Sk.ffi.remapToJs(n)){case"bg_default":y.background="../common/js/skulpt_mixcar/pic/bg_default.png";break;case"bg_astro":y.background="../common/js/skulpt_mixcar/pic/bg_astro.jpg";break;case"bg_panda":y.background="../common/js/skulpt_mixcar/pic/bg_panda.jpg"}var p;if(null!=(p=/\((\d+),(\d+)\)/.exec(e))&&(p[1]>t||p[1]<1||p[2]>r||p[2]<1))throw new Sk.builtin.TypeError("错误!起点坐标超出地图范围!");if(null!=(p=/\((\d+),(\d+)\)/.exec(a))&&(p[1]>t||p[1]<1||p[2]>r||p[2]<1))throw new Sk.builtin.TypeError("错误!终点坐标超出地图范围!");for(var c=0;ci[0].length||t<0||r>i.length||r<0)throw new Sk.builtin.TypeError("错误!放置物坐标超过地图范围");switch(e){case"wall":i[r-1][t-1]=y.SquareType.WALL;break;case"coin":i[r-1][t-1]=y.SquareType.AWARD}}));r.initMap=new Sk.builtin.func((function(){S()})),r.Actor=Sk.misceval.buildClass(r,(function(t,r){r.__init__=new Sk.builtin.func((function(t,r,i){switch("无可用角色"==(r=Sk.ffi.remapToJs(r)||"pegman")&&(r="pegman"),r){case"pegman":u.img="../common/js/skulpt_mixcar/pic/pegman.png",u.type="animate";break;case"panda":u.img="../common/js/skulpt_mixcar/pic/panda.png",u.type="animate";break;case"astro":u.img="../common/js/skulpt_mixcar/pic/astro.png",u.type="animate";break;case"robot":u.img="../common/js/skulpt_mixcar/pic/robot.png",u.type="still";break;case"car":u.img="../common/js/skulpt_mixcar/pic/actor_car3.png",u.type="animate"}u.direction=Sk.ffi.remapToJs(i)||a,size=[52,49],u.coin_point=0,function(){e.append("clipPath").attr("id","pegmanClipPath");const t=Sk.TurtleGraphics.target.querySelector("#pegmanClipPath");d3.select(t).append("rect").attr("id","clipRect").attr("width",u.width).attr("height",u.height),"animate"==u.type?0==y.type?e.append("image").attr("id","pegman").attr("width",16*u.width).attr("height",u.height).attr("clip-path","url(#pegmanClipPath)").attr("xlink:href",u.img):e.append("image").attr("id","pegman").attr("width",21*u.width).attr("height",u.height).attr("clip-path","url(#pegmanClipPath)").attr("xlink:href",u.img):e.append("image").attr("id","pegman").attr("width",u.width).attr("height",u.height).attr("clip-path","url(#pegmanClipPath)").attr("xlink:href",u.img),T(u.x,u.y,4*u.direction)}()})),r.moveDirection=new Sk.builtin.func((function(t,r){return Sk.builtin.pyCheckArgs("moveDirection",arguments,2,2),new Sk.misceval.promiseToSuspension(new Promise((function(t){Sk.setTimeout((function(){u.direction=parseInt(Sk.ffi.remapToJs(r));var l,o,m=function(t){if(!x(0,null))return!1;var r;switch(b(t)){case a:r="north";break;case n:r="east";break;case p:r="south";break;case c:r="west"}return r}(r);if(0==m)throw y.result=s,layer.alert("挑战失败!请修改后重新尝试",{shade:!1}),new Sk.builtin.TypeError("挑战失败!请修改后重新尝试");if(4==y.mlevel){if(i[u.y][u.x-1]==y.SquareType.OIL_STATION&&0==u.oil)throw y.result=s,e.append("image").attr("id","caroil").attr("x",k).attr("y",175).attr("width",k).attr("height",k).attr("xlink:href","../common/js/skulpt_mixcar/pic/no_oil.png"),layer.alert("挑战失败!小车没有油了",{shade:!1}),new Sk.builtin.TypeError("挑战失败!小车没有油了")}else if(5==y.mlevel)i[u.y][u.x]==y.SquareType.START&&(u.circulation_num+=1);else if(7==y.mlevel&&u.traffic_light==y.SquareType.LIGHT_RED)throw layer.alert("挑战失败:小车在红灯亮时还未停止!",{shade:!1}),new Sk.builtin.TypeError("挑战失败:小车在红灯亮时还未停止!");switch(m){case"north":I([u.x,u.y,4*u.direction],[u.x,u.y-1,4*u.direction]),u.y--;break;case"east":I([u.x,u.y,4*u.direction],[u.x+1,u.y,4*u.direction]),u.x++;break;case"south":I([u.x,u.y,4*u.direction],[u.x,u.y+1,4*u.direction]),u.y++;break;case"west":I([u.x,u.y,4*u.direction],[u.x-1,u.y,4*u.direction]),u.x--}if(l=u.x,o=u.y,i[o][l]==y.SquareType.AWARD&&(setTimeout((function(){$(Sk.TurtleGraphics.target).find("#coin"+o+l).remove()}),3*u.stepSpeed),i[o][l]=y.SquareType.OPEN,u.coin_point+=1),function(t,r){i[r][t]!=y.SquareType.MARKER1&&i[r][t]!=y.SquareType.MARKER2&&i[r][t]!=y.SquareType.MARKER3&&i[r][t]!=y.SquareType.MARKER4||(u.marker_num+=1)}(u.x,u.y),function(t,r){i[r][t]==y.SquareType.INVIMAKER&&(u.invisible_mark+=1)}(u.x,u.y),7==y.mlevel&&(i[u.y][u.x+1]==y.SquareType.LIGHT_RED||i[u.y][u.x+1]==y.SquareType.LIGHT_GREEN)&&(i[u.y][u.x+1]=Math.random()>.5?y.SquareType.LIGHT_RED:y.SquareType.LIGHT_GREEN,u.traffic_light=i[u.y][u.x+1],u.traffic_light==y.SquareType.LIGHT_RED)){const t=Sk.TurtleGraphics.target.querySelector("#lightgreen");d3.select(t).remove(),e.append("image").attr("id","lightred").attr("x",(u.x+1)*k-5).attr("y",u.y*k+5).attr("width",k).attr("height",k).attr("xlink:href","../common/js/skulpt_mixcar/pic/redlight.png")}var h=_();if("error2"==h)throw y.result=s,layer.alert("挑战失败,请检查是否通过所有标记点!",{shade:!1}),new Sk.builtin.TypeError("挑战失败,请检查是否通过所有标记点!");if("error3"==h)throw layer.alert("挑战失败,请修改后重新尝试!",{shade:!1}),new Sk.builtin.TypeError("挑战失败!请修改后重新尝试");t(Sk.builtin.none.none$)}),800)})))})),r.turn=new Sk.builtin.func((function(t,r){return Sk.builtin.pyCheckArgs("turn",arguments,2,2),Sk.builtin.pyCheckType("direction","string",Sk.builtin.checkString(r)),new Sk.misceval.promiseToSuspension(new Promise((function(t){Sk.setTimeout((function(){switch(function(t){return"right"==t?"right":"left"}(r=Sk.ffi.remapToJs(r))){case"left":I([u.x,u.y,4*u.direction],[u.x,u.y,4*u.direction-4]),u.direction=b(u.direction-1);break;case"right":I([u.x,u.y,4*u.direction],[u.x,u.y,4*u.direction+4]),u.direction=b(u.direction+1)}t(Sk.builtin.none.none$)}),800)})))})),r.isDone=new Sk.builtin.func((function(t){Sk.builtin.pyCheckArgs("isDone",arguments,1,1);var r=Sk.ffi.remapToPy(_());return new Sk.ffi.remapToPy(r)})),r.isPath=new Sk.builtin.func((function(t,r){Sk.builtin.pyCheckArgs("isPath",arguments,2,2),Sk.builtin.pyCheckType("direction","string",Sk.builtin.checkString(r));var e="";switch(r=Sk.ffi.remapToJs(r)){case"left":e=x(r=3,null);break;case"right":e=x(r=1,null)}return Sk.ffi.remapToPy(e)})),r.isBarrier=new Sk.builtin.func((function(t,r){Sk.builtin.pyCheckArgs("isBarrier",arguments,2,2),Sk.builtin.pyCheckType("direction","number",Sk.builtin.checkNumber(r));var e,l=0;switch(r=Sk.ffi.remapToJs(r)){case a:l=i[u.y-1]?i[u.y-1][u.x]:0;break;case n:l=i[u.y][u.x+1]?i[u.y][u.x+1]:0;break;case p:l=i[u.y+1]?i[u.y+1][u.x]:0;break;case c:l=i[u.y][u.x-1]?i[u.y][u.x-1]:0}return e=l==y.SquareType.BARRIER,Sk.ffi.remapToPy(e)})),r.randomOil=new Sk.builtin.func((function(t){Sk.builtin.pyCheckArgs("randomOil",arguments,1,1),u.oil=Math.random()>.5?1:0,0==u.oil?e.append("image").attr("id","caroil").attr("x",k).attr("y",175).attr("width",k).attr("height",k).attr("xlink:href","../common/js/skulpt_mixcar/pic/none_oil.png"):1==u.oil&&e.append("image").attr("id","caroil").attr("x",k).attr("y",175).attr("width",k).attr("height",k).attr("xlink:href","../common/js/skulpt_mixcar/pic/full_oil.png")})),r.isOilFull=new Sk.builtin.func((function(t){return Sk.builtin.pyCheckArgs("isOilFull",arguments,1,1),0==u.oil?Sk.ffi.remapToPy(!0):1==u.oil?Sk.ffi.remapToPy(!1):void 0})),r.addOil=new Sk.builtin.func((function(t){return Sk.builtin.pyCheckArgs("addOil",arguments,1,1),new Sk.misceval.promiseToSuspension(new Promise((function(t){Sk.setTimeout((function(){e.append("image").attr("id","caroil").attr("x",k).attr("y",175).attr("width",k).attr("height",k).attr("xlink:href","../common/js/skulpt_mixcar/pic/full_oil.png"),u.oil=1,t(Sk.builtin.none.none$)}),800)})))})),r.getPoint=new Sk.builtin.func((function(t){Sk.builtin.pyCheckArgs("getPoint",arguments,1,1);var r=u.coin_point;return Sk.ffi.remapToPy(r)})),r.isLightGreen=new Sk.builtin.func((function(t){return Sk.builtin.pyCheckArgs("isLightGreen",arguments,1,1),u.traffic_light==y.SquareType.LIGHT_GREEN?Sk.ffi.remapToPy(!0):u.traffic_light==y.SquareType.LIGHT_RED?Sk.ffi.remapToPy(!1):void 0})),r.isCirculationRight=new Sk.builtin.func((function(t){return Sk.builtin.pyCheckArgs("isCirculationRight",arguments,1,1),new Sk.misceval.promiseToSuspension(new Promise((function(t){var r=!1;switch(y.mlevel){case 5:r=3==u.circulation_num;break;case 7:if(u.traffic_light==y.SquareType.LIGHT_GREEN)r=!1;else if(u.traffic_light==y.SquareType.LIGHT_RED)for(var e=0;e.5?1:5,0,0,1,0],[0,1,1,9,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,24,1,1,24,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg2.jpg",wall:"",award:"",barrier:"../common/js/skulpt_mixcar/pic/barrier.png",markers:["../common/js/skulpt_mixcar/pic/red.png","../common/js/skulpt_mixcar/pic/yellow.png","../common/js/skulpt_mixcar/pic/blue.png","../common/js/skulpt_mixcar/pic/green.png"],SquareType:{WALL:0,OPEN:1,BARRIER:5,MARKER4:13,S_F:9,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:l,finish:{x:0,y:0},type:0,INVIMNUM:4},{mlevel:4,map:[[0,1,1,13,24,1,24,0],[20,1,0,Math.random()>.5?1:5,0,0,1,0],[0,1,1,9,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,24,1,1,24,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg3.jpg",wall:"",award:"",barrier:"../common/js/skulpt_mixcar/pic/barrier.png",markers:["../common/js/skulpt_mixcar/pic/red.png","../common/js/skulpt_mixcar/pic/yellow.png","../common/js/skulpt_mixcar/pic/blue.png","../common/js/skulpt_mixcar/pic/green.png"],SquareType:{WALL:0,OPEN:1,BARRIER:5,MARKER4:13,S_F:9,OIL_STATION:20,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:l,finish:{x:0,y:0},type:0,INVIMNUM:4},{mlevel:5,map:[[0,1,1,1,1,1,1,0],[0,1,0,0,0,0,1,0],[0,1,1,2,21,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,1,1,1,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg4.jpg",wall:"",award:"",barrier:"",markers:[],SquareType:{WALL:0,OPEN:1,START:2,S_F:9,TRAFFIC_LIGHT:21,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:l,finish:{x:3,y:2},type:0,INVIMNUM:0},{mlevel:6,map:[[0,1,1,13,1,1,12,0],[0,1,0,1,0,0,1,0],[0,1,1,2,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,10,1,1,11,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg1.jpg",wall:"",award:"",barrier:"",markers:["../common/js/skulpt_mixcar/pic/red.png","../common/js/skulpt_mixcar/pic/yellow.png","../common/js/skulpt_mixcar/pic/blue.png","../common/js/skulpt_mixcar/pic/green.png"],SquareType:{WALL:0,OPEN:1,START:2,MARKER1:10,MARKER2:11,MARKER3:12,MARKER4:13,S_F:9,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:l,finish:{x:0,y:0},type:0,INVIMNUM:0},{mlevel:7,map:[[0,1,1,1,1,1,1,0],[0,1,0,0,0,0,1,0],[0,1,1,2,22,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,0,0,1,0],[0,0,0,1,1,1,1,0],[0,0,0,0,0,0,0,0]],tiles:"../common/js/skulpt_mixcar/pic/tiles_road.png",marker:"../common/js/skulpt_mixcar/pic/Start_final.png",background:"../common/js/skulpt_mixcar/pic/bg4.jpg",wall:"",award:"",barrier:"",markers:[],SquareType:{WALL:0,OPEN:1,START:2,S_F:9,LIGHT_GREEN:22,LIGHT_RED:23,INVIMAKER:24},MAZE_WIDTH:400,MAZE_HEIGHT:400,PATH_WIDTH:16.666666666666668,result:l,finish:{x:3,y:2},type:0,INVIMNUM:0}],T=function(t,r,e,i){var a=$(Sk.TurtleGraphics.target).find("#pegman");"animate"==u.type?(0==y.type?(a.attr("x",t*k-e*u.width+1),a.attr("y",k*(r+.5)-u.height/2)):(a.attr("x",t*k-e*u.width+1),a.attr("y",k*(r+.5)-u.height/2-8)),i?a.attr("transform","rotate("+i+", "+(t*k+25)+", "+(r*k+25)+")"):a.attr("transform","rotate(0, 0, 0)")):(a.attr("x",t*k+1),a.attr("y",k*(r+.5)-u.height/2));var n=$(Sk.TurtleGraphics.target).find("#clipRect");n.attr("x",t*k+1),n.attr("y",a.attr("y"))},S=function(){e.attr("id","game_stage");var t=Math.max(h,g)*k;e.attr("viewBox","0 -10 "+t+" "+(t+10)),e.append("rect").attr("x",0).attr("y",0).attr("width",y.MAZE_WIDTH).attr("height",y.MAZE_HEIGHT).style("fill","#F1EEE7").style("stroke","#CCB").style("stroke-width","1"),e.append("image").attr("x",0).attr("y",0).attr("width",k*g).attr("height",k*h).attr("xlink:href",y.background);for(var r=function(t,r){return t<0||t>=g||r<0||r>=h||i[r][t]==y.SquareType.WALL||i[r][t]==y.SquareType.OIL_STATION?"0":"1"},a=0,n=0;n.3?"null0":"null"+Math.floor(1+4*Math.random()));var l=m[c][0],o=m[c][1];e.append("clipPath").attr("id","tileClipPath"+a);const t=Sk.TurtleGraphics.target.querySelector("#tileClipPath"+a);d3.select(t).append("rect").attr("x",p*k).attr("y",n*k).attr("width",k).attr("height",k),0==y.type?i[n][p]!=y.SquareType.WALL&&i[n][p]!=y.SquareType.OIL_STATION&&i[n][p]!=y.SquareType.TRAFFIC_LIGHT&&i[n][p]!=y.SquareType.LIGHT_GREEN&&i[n][p]!=y.SquareType.LIGHT_RED&&(e.append("image").attr("x",p*k).attr("y",n*k).attr("width",k).attr("height",k).attr("clip-path","url(#tileClipPath"+a+")").attr("xlink:href",y.tiles),a++):(e.append("image").attr("x",(p-l)*k).attr("y",(n-o)*k).attr("width",250).attr("height",200).attr("clip-path","url(#tileClipPath"+a+")").attr("xlink:href",y.tiles),a++),0==i[n][p]?e.append("image").attr("x",p*k+5).attr("y",n*k+5).attr("width",40).attr("height",40).attr("xlink:href",y.wall):4==i[n][p]?e.append("image").attr("id","coin"+n+p).attr("x",p*k+12.5).attr("y",n*k+12.5).attr("width",25).attr("height",25).attr("xlink:href",y.award):5==i[n][p]?e.append("image").attr("id","barrier"+n+p).attr("x",p*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href",y.barrier):10==i[n][p]?(e.append("image").attr("id","marker1").attr("x",p*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href",y.markers[0]),f+=1):11==i[n][p]?(e.append("image").attr("id","marker2").attr("x",p*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href",y.markers[1]),f+=1):12==i[n][p]?(e.append("image").attr("id","marker3").attr("x",p*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href",y.markers[2]),f+=1):13==i[n][p]&&(e.append("image").attr("id","marker4").attr("x",p*k+7.5).attr("y",n*k+7.5).attr("width",35).attr("height",35).attr("xlink:href",y.markers[3]),f+=1)}if(1==y.type){e.append("image").attr("id","finish").attr("width",25).attr("height",25).attr("xlink:href",y.marker);for(n=0;n=y.INVIMNUM||"error3":"error2")))},x=function(t,r){var e,l,o=u.direction+t;switch(b(o)){case a:e=i[u.y-1]&&i[u.y-1][u.x],l="look_north";break;case n:e=i[u.y][u.x+1],l="look_east";break;case p:e=i[u.y+1]&&i[u.y+1][u.x],l="look_south";break;case c:e=i[u.y][u.x-1],l="look_west"}return r?[l,e!==y.SquareType.WALL&&void 0!==e&&e!==y.SquareType.BARRIER&&e!==y.SquareType.OIL_STATION&&e!==y.SquareType.TRAFFIC_LIGHT&&e!==y.SquareType.LIGHT_RED&&e!==y.SquareType.LIGHT_GREEN]:e!==y.SquareType.WALL&&void 0!==e&&e!==y.SquareType.BARRIER&&e!==y.SquareType.OIL_STATION&&e!==y.SquareType.TRAFFIC_LIGHT&&e!==y.SquareType.LIGHT_RED&&e!==y.SquareType.LIGHT_GREEN},b=function(t){return(t=Math.round(t)%4)<0&&(t+=4),t},w=function(t){return(t=Math.round(t)%16)<0&&(t+=16),t},I=function(t,r){var e=[(r[0]-t[0])/4,(r[1]-t[1])/4,(r[2]-t[2])/4];T(t[0]+e[0],t[1]+e[1],w(t[2]+e[2])),setTimeout((function(){T(t[0]+2*e[0],t[1]+2*e[1],w(t[2]+2*e[2]))}),u.stepSpeed),setTimeout((function(){T(t[0]+3*e[0],t[1]+3*e[1],w(t[2]+3*e[2]))}),2*u.stepSpeed),setTimeout((function(){T(r[0],r[1],w(r[2]))}),3*u.stepSpeed)};r.setMap=new Sk.builtin.func((function(t,r,e,a,n){if(Sk.builtin.pyCheckArgs("setMap",arguments,5,5),i=[],"无可用地图"==n&&(n=""),t<3||t>20||r<3||r>20)throw new Sk.builtin.TypeError("错误!超出地图可设置范围,请设置横纵方格数大于等于3,小于等于20");switch(t=Sk.ffi.remapToJs(t),r=Sk.ffi.remapToJs(r),g=t,h=r,y.MAZE_WIDTH=k*g,y.MAZE_HEIGHT=k*h,e=Sk.ffi.remapToJs(e),a=Sk.ffi.remapToJs(a),Sk.ffi.remapToJs(n)){case"bg_default":y.background="../common/js/skulpt_mixcar/pic/bg_default.png";break;case"bg_astro":y.background="../common/js/skulpt_mixcar/pic/bg_astro.jpg";break;case"bg_panda":y.background="../common/js/skulpt_mixcar/pic/bg_panda.jpg"}var p;if(null!=(p=/\((\d+),(\d+)\)/.exec(e))&&(p[1]>t||p[1]<1||p[2]>r||p[2]<1))throw new Sk.builtin.TypeError("错误!起点坐标超出地图范围!");if(null!=(p=/\((\d+),(\d+)\)/.exec(a))&&(p[1]>t||p[1]<1||p[2]>r||p[2]<1))throw new Sk.builtin.TypeError("错误!终点坐标超出地图范围!");for(var c=0;ci[0].length||t<0||r>i.length||r<0)throw new Sk.builtin.TypeError("错误!放置物坐标超过地图范围");switch(e){case"wall":i[r-1][t-1]=y.SquareType.WALL;break;case"coin":i[r-1][t-1]=y.SquareType.AWARD}}));r.initMap=new Sk.builtin.func((function(){S()})),r.Actor=Sk.misceval.buildClass(r,(function(t,r){r.__init__=new Sk.builtin.func((function(t,r,i){switch("无可用角色"==(r=Sk.ffi.remapToJs(r)||"pegman")&&(r="pegman"),r){case"pegman":u.img="../common/js/skulpt_mixcar/pic/pegman.png",u.type="animate";break;case"panda":u.img="../common/js/skulpt_mixcar/pic/panda.png",u.type="animate";break;case"astro":u.img="../common/js/skulpt_mixcar/pic/astro.png",u.type="animate";break;case"robot":u.img="../common/js/skulpt_mixcar/pic/robot.png",u.type="still";break;case"car":u.img="../common/js/skulpt_mixcar/pic/actor_car3.png",u.type="animate"}u.direction=Sk.ffi.remapToJs(i)||a,size=[52,49],u.coin_point=0,function(){e.append("clipPath").attr("id","pegmanClipPath");const t=Sk.TurtleGraphics.target.querySelector("#pegmanClipPath");d3.select(t).append("rect").attr("id","clipRect").attr("width",u.width).attr("height",u.height),"animate"==u.type?0==y.type?e.append("image").attr("id","pegman").attr("width",16*u.width).attr("height",u.height).attr("clip-path","url(#pegmanClipPath)").attr("xlink:href",u.img):e.append("image").attr("id","pegman").attr("width",21*u.width).attr("height",u.height).attr("clip-path","url(#pegmanClipPath)").attr("xlink:href",u.img):e.append("image").attr("id","pegman").attr("width",u.width).attr("height",u.height).attr("clip-path","url(#pegmanClipPath)").attr("xlink:href",u.img),T(u.x,u.y,4*u.direction)}()})),r.moveDirection=new Sk.builtin.func((function(t,r){return Sk.builtin.pyCheckArgs("moveDirection",arguments,2,2),new Sk.misceval.promiseToSuspension(new Promise((function(t){Sk.setTimeout((function(){u.direction=parseInt(Sk.ffi.remapToJs(r));var l,o,m=function(t){if(!x(0,null))return!1;var r;switch(b(t)){case a:r="north";break;case n:r="east";break;case p:r="south";break;case c:r="west"}return r}(r);if(0==m)throw y.result=s,layer.alert("挑战失败!请修改后重新尝试",{shade:!1}),new Sk.builtin.TypeError("挑战失败!请修改后重新尝试");if(4==y.mlevel){if(i[u.y][u.x-1]==y.SquareType.OIL_STATION&&0==u.oil)throw y.result=s,e.append("image").attr("id","caroil").attr("x",k).attr("y",175).attr("width",k).attr("height",k).attr("xlink:href","../common/js/skulpt_mixcar/pic/no_oil.png"),layer.alert("挑战失败!小车没有油了",{shade:!1}),new Sk.builtin.TypeError("挑战失败!小车没有油了")}else if(5==y.mlevel)i[u.y][u.x]==y.SquareType.START&&(u.circulation_num+=1);else if(7==y.mlevel&&u.traffic_light==y.SquareType.LIGHT_RED)throw layer.alert("挑战失败:小车在红灯亮时还未停止!",{shade:!1}),new Sk.builtin.TypeError("挑战失败:小车在红灯亮时还未停止!");switch(m){case"north":I([u.x,u.y,4*u.direction],[u.x,u.y-1,4*u.direction]),u.y--;break;case"east":I([u.x,u.y,4*u.direction],[u.x+1,u.y,4*u.direction]),u.x++;break;case"south":I([u.x,u.y,4*u.direction],[u.x,u.y+1,4*u.direction]),u.y++;break;case"west":I([u.x,u.y,4*u.direction],[u.x-1,u.y,4*u.direction]),u.x--}if(l=u.x,o=u.y,i[o][l]==y.SquareType.AWARD&&(setTimeout((function(){$(Sk.TurtleGraphics.target).find("#coin"+o+l).remove()}),3*u.stepSpeed),i[o][l]=y.SquareType.OPEN,u.coin_point+=1),function(t,r){i[r][t]!=y.SquareType.MARKER1&&i[r][t]!=y.SquareType.MARKER2&&i[r][t]!=y.SquareType.MARKER3&&i[r][t]!=y.SquareType.MARKER4||(u.marker_num+=1)}(u.x,u.y),function(t,r){i[r][t]==y.SquareType.INVIMAKER&&(u.invisible_mark+=1)}(u.x,u.y),7==y.mlevel&&(i[u.y][u.x+1]==y.SquareType.LIGHT_RED||i[u.y][u.x+1]==y.SquareType.LIGHT_GREEN)&&(i[u.y][u.x+1]=Math.random()>.5?y.SquareType.LIGHT_RED:y.SquareType.LIGHT_GREEN,u.traffic_light=i[u.y][u.x+1],u.traffic_light==y.SquareType.LIGHT_RED)){const t=Sk.TurtleGraphics.target.querySelector("#lightgreen");d3.select(t).remove(),e.append("image").attr("id","lightred").attr("x",(u.x+1)*k-5).attr("y",u.y*k+5).attr("width",k).attr("height",k).attr("xlink:href","../common/js/skulpt_mixcar/pic/redlight.png")}var h=_();if("error2"==h)throw y.result=s,layer.alert("挑战失败,请检查是否通过所有标记点!",{shade:!1}),new Sk.builtin.TypeError("挑战失败,请检查是否通过所有标记点!");if("error3"==h)throw layer.alert("挑战失败,请修改后重新尝试!",{shade:!1}),new Sk.builtin.TypeError("挑战失败!请修改后重新尝试");t(Sk.builtin.none.none$)}),800)})))})),r.turn=new Sk.builtin.func((function(t,r){return Sk.builtin.pyCheckArgs("turn",arguments,2,2),Sk.builtin.pyCheckType("direction","string",Sk.builtin.checkString(r)),new Sk.misceval.promiseToSuspension(new Promise((function(t){Sk.setTimeout((function(){switch(function(t){return"right"==t?"right":"left"}(r=Sk.ffi.remapToJs(r))){case"left":I([u.x,u.y,4*u.direction],[u.x,u.y,4*u.direction-4]),u.direction=b(u.direction-1);break;case"right":I([u.x,u.y,4*u.direction],[u.x,u.y,4*u.direction+4]),u.direction=b(u.direction+1)}t(Sk.builtin.none.none$)}),800)})))})),r.isDone=new Sk.builtin.func((function(t){Sk.builtin.pyCheckArgs("isDone",arguments,1,1);var r=Sk.ffi.remapToPy(_());return new Sk.ffi.remapToPy(r)})),r.isPath=new Sk.builtin.func((function(t,r){Sk.builtin.pyCheckArgs("isPath",arguments,2,2),Sk.builtin.pyCheckType("direction","string",Sk.builtin.checkString(r));var e="";switch(r=Sk.ffi.remapToJs(r)){case"left":e=x(r=3,null);break;case"right":e=x(r=1,null)}return Sk.ffi.remapToPy(e)})),r.isBarrier=new Sk.builtin.func((function(t,r){Sk.builtin.pyCheckArgs("isBarrier",arguments,2,2),Sk.builtin.pyCheckType("direction","number",Sk.builtin.checkNumber(r));var e,l=0;switch(r=Sk.ffi.remapToJs(r)){case a:l=i[u.y-1]?i[u.y-1][u.x]:0;break;case n:l=i[u.y][u.x+1]?i[u.y][u.x+1]:0;break;case p:l=i[u.y+1]?i[u.y+1][u.x]:0;break;case c:l=i[u.y][u.x-1]?i[u.y][u.x-1]:0}return e=l==y.SquareType.BARRIER,Sk.ffi.remapToPy(e)})),r.randomOil=new Sk.builtin.func((function(t){Sk.builtin.pyCheckArgs("randomOil",arguments,1,1),u.oil=Math.random()>.5?1:0,0==u.oil?e.append("image").attr("id","caroil").attr("x",k).attr("y",175).attr("width",k).attr("height",k).attr("xlink:href","../common/js/skulpt_mixcar/pic/none_oil.png"):1==u.oil&&e.append("image").attr("id","caroil").attr("x",k).attr("y",175).attr("width",k).attr("height",k).attr("xlink:href","../common/js/skulpt_mixcar/pic/full_oil.png")})),r.isOilFull=new Sk.builtin.func((function(t){return Sk.builtin.pyCheckArgs("isOilFull",arguments,1,1),0==u.oil?Sk.ffi.remapToPy(!0):1==u.oil?Sk.ffi.remapToPy(!1):void 0})),r.addOil=new Sk.builtin.func((function(t){return Sk.builtin.pyCheckArgs("addOil",arguments,1,1),new Sk.misceval.promiseToSuspension(new Promise((function(t){Sk.setTimeout((function(){e.append("image").attr("id","caroil").attr("x",k).attr("y",175).attr("width",k).attr("height",k).attr("xlink:href","../common/js/skulpt_mixcar/pic/full_oil.png"),u.oil=1,t(Sk.builtin.none.none$)}),800)})))})),r.getPoint=new Sk.builtin.func((function(t){Sk.builtin.pyCheckArgs("getPoint",arguments,1,1);var r=u.coin_point;return Sk.ffi.remapToPy(r)})),r.isLightGreen=new Sk.builtin.func((function(t){return Sk.builtin.pyCheckArgs("isLightGreen",arguments,1,1),u.traffic_light==y.SquareType.LIGHT_GREEN?Sk.ffi.remapToPy(!0):u.traffic_light==y.SquareType.LIGHT_RED?Sk.ffi.remapToPy(!1):void 0})),r.isCirculationRight=new Sk.builtin.func((function(t){return Sk.builtin.pyCheckArgs("isCirculationRight",arguments,1,1),new Sk.misceval.promiseToSuspension(new Promise((function(t){var r=!1;switch(y.mlevel){case 5:r=3==u.circulation_num;break;case 7:if(u.traffic_light==y.SquareType.LIGHT_GREEN)r=!1;else if(u.traffic_light==y.SquareType.LIGHT_RED)for(var e=0;epromptHelloHelloHello,HelloMixly2100,1,2,3051i90x151100a10.998124.821100101010001100501100110000x2x0,1,2,30,1,2,30,1,2,3xMixlyHelloMixly65axMixlyMixly0Mixly02MixlyMixlyHello,mixlyHello,mixly50*Hello,mixlyl--mylistHello,mixlymixlymixpyI love mixly!I love mixlyRandom No. is {}int1100input('1+2*3')dirmylist1,2,3,4,5mylist0mylist02mylist00mylist0101mylistmylist2mylistmylist0mylist00mylist00mylist0mylist0mylist0mylistmylistmylistxmytup1,2,3,4,5mytup0mytup02mytupmytupmytupmytup0mytupmytup1mytup2xmydictmydictkeymydictkey0mydictkey0mydictkeymydictkeymydictkey0mydictmydictmydictmydictxmydict{"name":"Mixly","color":"green"}s11,2,3,4,5s1s1s1s2s1s2s10s1Mixlys1s2x0 \ No newline at end of file +promptHelloHelloHello,HelloMixly2100,1,2,3051i90x151100a10.998124.821100101010001100501100110000x2x0,1,2,30,1,2,30,1,2,3xMixlyHelloMixly65axMixlyMixly0Mixly02MixlyMixlyHello,mixlyHello,mixly50*Hello,mixlyl--mylistHello,mixlymixlymixpyI love mixly!I love mixlyRandom No. is {}int1100input('1+2*3')dirmylist1,2,3,4,5mylist0mylist02mylist00mylist0101mylistmylist2mylistmylist0mylist00mylist00mylist0mylist0mylist0mylistmylistmylistxmytup1,2,3,4,5mytup0mytup02mytupmytupmytupmytup0mytupmytup1mytup2xmydictmydictkeymydictkey0mydictkey0mydictkeymydictkeymydictkey0mydictmydictmydictmydictxmydict{"name":"Mixly","color":"green"}s11,2,3,4,5s1s1s1s2s1s2s10s1Mixlys1s2x0 \ No newline at end of file diff --git a/boards/default/python_skulpt_car/main.bundle.ee08f76d.js b/boards/default/python_skulpt_car/main.bundle.d5de427c.js similarity index 98% rename from boards/default/python_skulpt_car/main.bundle.ee08f76d.js rename to boards/default/python_skulpt_car/main.bundle.d5de427c.js index 54d561f7..43dd65be 100644 --- a/boards/default/python_skulpt_car/main.bundle.ee08f76d.js +++ b/boards/default/python_skulpt_car/main.bundle.d5de427c.js @@ -18,4 +18,4 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -class G{constructor(e,t){if(this.variablePrefix_=t||"",this.reservedDict_=Object.create(null),e)for(var n=e.split(","),i=0;i0?t.join("\n")+n.join("\n")+i.join("\n")+o.join("\n")+a.join("")+e+"while True:\n"+l.join("")+u.join("\n"):t.join("\n")+n.join("\n")+i.join("\n")+o.join("\n")+a.join("")+e+u.join("\n")},H.scrubNakedValue=function(e){return e+"\n"},H.quote_=function(e){var t="'";return-1!==(e=e.replace(/\\/g,"\\\\").replace(/\n/g,"\\\n")).indexOf("'")&&(-1===e.indexOf('"')?t='"':e=e.replace(/'/g,"\\'")),t+e+t},H.multiline_quote_=function(e){return"'''"+(e=e.replace(/'''/g,"\\'\\'\\'"))+"'''"},H.scrub_=function(e,t,n){var i="";if(!e.outputConnection||!e.outputConnection.targetConnection){(s=e.getCommentText())&&(s=F.utils.string.wrap(s,H.COMMENT_WRAP-3),i+=H.prefixLines(s+"\n","# "));for(var r=0;r0?"int("+a+" + "+r+")":r<0?"int("+a+" - "+-r+")":"int("+a+")",i&&(a="-"+a)),a};const z=330,q={init:function(){this.setColour(z),this.appendDummyInput().appendField(new F.FieldTextInput(""),"VAR"),this.setOutput(!0),this.setTooltip(F.Msg.VARIABLES_GET_TOOLTIP)},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(e,t){X.equals(e,this.getFieldValue("VAR"))&&this.setFieldValue(t,"VAR")}},W={init:function(){this.setColour(z),this.appendValueInput("VALUE").appendField(new F.FieldTextInput(""),"VAR").appendField(F.Msg.MIXLY_VALUE2),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.VARIABLES_SET_TOOLTIP)},getVars:function(){var e=this.getFieldValue("VAR");return null==e?[]:e.split(",")},renameVar:function(e,t){X.equals(e,this.getFieldValue("VAR"))&&this.setFieldValue(t,"VAR")}},K={init:function(){this.setColour(z);var e=[[F.Msg.LANG_MATH_INT,"int"],[F.Msg.LANG_MATH_FLOAT,"float"],[F.Msg.LANG_MATH_BOOLEAN,"bool"],[F.Msg.LANG_MATH_STRING,"str"],[F.Msg.MIXLY_MICROBIT_TYPE_LIST,"list"],[F.Msg.MIXLY_MICROBIT_TYPE_TUPLE,"tuple"],[F.Msg.MIXLY_MICROBIT_TYPE_DICT,"dict"],[F.Msg.blockpy_SET_CREATE_WITH_CONTAINER_TITLE_ADD,"set"],[F.Msg.LANG_MATH_BYTE,"bytes"]];this.appendValueInput("MYVALUE").appendField(new F.FieldDropdown(e),"OP"),this.setOutput(!0)}},J={init:function(){this.setColour(z),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_PYTHON_GLOBAL).setCheck("var"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(F.Msg.TEXT_PRINT_TOOLTIP)}},Q={init:function(){this.setColour(z),this.appendValueInput("DATA").appendField(F.Msg.MICROBIT_PYTHON_TYPE),this.setOutput(!0),this.setTooltip(F.Msg.MICROBIT_PYTHON_TYPE)}},Z={init:function(){this.setColour(z),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_CONTORL_GET_TYPE).appendField(new F.FieldDropdown([[F.Msg.LANG_MATH_INT,"int"],[F.Msg.MIXLY_MICROBIT_TYPE_FLOAT,"float"],[F.Msg.MIXLY_MICROBIT_TYPE_STRING,"str"],[F.Msg.MIXLY_MICROBIT_TYPE_LIST,"list"],[F.Msg.MIXLY_MICROBIT_TYPE_TUPLE,"tuple"],[F.Msg.MIXLY_MICROBIT_TYPE_DICT,"dict"],[F.Msg.blockpy_SET_CREATE_WITH_CONTAINER_TITLE_ADD,"set"],[F.Msg.LANG_MATH_BYTE,"bytes"],[F.Msg.LOGIC_NULL,"type(None)"]]),"type"),this.setInputsInline(!0),this.setOutput(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("type");return F.Msg.MICROBIT_controls_TypeLists+{int:F.Msg.LANG_MATH_INT,float:F.Msg.MIXLY_MICROBIT_TYPE_FLOAT,str:F.Msg.MIXLY_MICROBIT_TYPE_STRING,list:F.Msg.MIXLY_MICROBIT_TYPE_LIST,tuple:F.Msg.MIXLY_MICROBIT_TYPE_TUPLE,dict:F.Msg.MIXLY_MICROBIT_TYPE_DICT,set:F.Msg.blockpy_SET_CREATE_WITH_CONTAINER_TITLE_ADD,image:F.Msg.MIXLY_MICROBIT_IMAGE,bytes:F.Msg.LANG_MATH_BYTE,NoneType:F.Msg.LOGIC_NULL}[t]}))}},ee={init:function(){this.setColour(z),this.itemCount_=2,this.updateShape_(),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,"List"),this.setMutator(new F.icons.MutatorIcon(["lists_zip_item"],this)),this.setTooltip(F.Msg.MIXLY_PYTHON_LISTS_ZIP_TOOLTIP)},mutationToDom:function(){var e=document.createElement("mutation");return e.setAttribute("items",this.itemCount_),e},domToMutation:function(e){this.itemCount_=parseInt(e.getAttribute("items"),10),this.updateShape_()},decompose:function(e){var t=e.newBlock("lists_zip_container");t.initSvg();for(var n=t.getInput("STACK").connection,i=0;i0;r--)t.getInputTargetBlock("IF"+r)&&t.getInputTargetBlock("IF"+r).previousConnection?n[r]=t.getInputTargetBlock("IF"+r).previousConnection:n[r]=null,this.removeInput("IF"+r),t.getInputTargetBlock("DO"+r)&&t.getInputTargetBlock("DO"+r).previousConnection?i[r]=t.getInputTargetBlock("DO"+r).previousConnection:i[r]=null,this.removeInput("DO"+r);this.elseifCount_=parseInt(e.getAttribute("elseif"),10),this.elseCount_=parseInt(e.getAttribute("else"),10);for(r=1;r<=this.elseifCount_;r++)this.appendValueInput("IF"+r).setCheck([Boolean,Number]).appendField(F.Msg.CONTROLS_IF_MSG_ELSEIF),this.appendStatementInput("DO"+r).appendField(F.Msg.CONTROLS_IF_MSG_THEN);this.elseCount_&&this.appendStatementInput("ELSE").appendField(F.Msg.CONTROLS_IF_MSG_ELSE);for(r=n.length-2;r>0;r--)n[r]&&n[r].reconnect(this,"IF"+r);for(r=i.length-2;r>0;r--)i[r]&&i[r].reconnect(this,"DO"+r)},decompose:function(e){var t=e.newBlock("controls_if_if");t.initSvg();for(var n=t.getInput("STACK").connection,i=1;i<=this.elseifCount_;i++){var r=e.newBlock("controls_if_elseif");r.initSvg(),n.connect(r.previousConnection),n=r.nextConnection}if(this.elseCount_){var s=e.newBlock("controls_if_else");s.initSvg(),n.connect(s.previousConnection)}return t},compose:function(e){this.elseCount_&&this.removeInput("ELSE"),this.elseCount_=0;for(var t=this.elseifCount_;t>0;t--)this.removeInput("IF"+t),this.removeInput("DO"+t);this.elseifCount_=0;for(var n=e.getInputTargetBlock("STACK"),i=[null],r=[null],s=null;n;){switch(n.type){case"controls_if_elseif":this.elseifCount_++,i.push(n.valueConnection_),r.push(n.statementConnection_);break;case"controls_if_else":this.elseCount_++,s=n.statementConnection_;break;default:throw Error("Unknown block type: "+n.type)}n=n.nextConnection&&n.nextConnection.targetBlock()}this.updateShape_(),this.reconnectChildBlocks_(i,r,s)},saveConnections:function(e){for(var t=e.getInputTargetBlock("STACK"),n=1;t;){switch(t.type){case"controls_if_elseif":var i=this.getInput("IF"+n),r=this.getInput("DO"+n);t.valueConnection_=i&&i.connection.targetConnection,t.statementConnection_=r&&r.connection.targetConnection,n++;break;case"controls_if_else":r=this.getInput("ELSE");t.statementConnection_=r&&r.connection.targetConnection;break;default:throw"Unknown block type."}t=t.nextConnection&&t.nextConnection.targetBlock()}},rebuildShape_:function(){var e=[null],t=[null],n=null;this.getInput("ELSE")&&(n=this.getInput("ELSE").connection.targetConnection);for(var i=1;this.getInput("IF"+i);){var r=this.getInput("IF"+i),s=this.getInput("DO"+i);console.log(r.connection.targetConnection),e.push(r.connection.targetConnection),t.push(s.connection.targetConnection),i++}this.updateShape_(),this.reconnectChildBlocks_(e,t,n)},updateShape_:function(){this.getInput("ELSE")&&this.removeInput("ELSE");for(var e=1;this.getInput("IF"+e);)this.removeInput("IF"+e),this.removeInput("DO"+e),e++;for(e=1;e<=this.elseifCount_;e++)this.appendValueInput("IF"+e).setCheck([Number,Boolean]).appendField(F.Msg.CONTROLS_IF_MSG_ELSEIF),this.appendStatementInput("DO"+e).appendField(F.Msg.CONTROLS_IF_MSG_THEN);this.elseCount_&&this.appendStatementInput("ELSE").appendField(F.Msg.CONTROLS_IF_MSG_ELSE)},reconnectChildBlocks_:function(e,t,n){for(var i=1;i<=this.elseifCount_;i++)e[i]&&e[i].reconnect(this,"IF"+i),t[i]&&t[i].reconnect(this,"DO"+i);n&&n.reconnect(this,"ELSE")}},ce={init:function(){this.setColour(re),this.appendValueInput("FROM").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.PYTHON_RANGE).appendField(F.Msg.LANG_CONTROLS_FOR_INPUT_FROM),this.appendValueInput("TO").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.LANG_CONTROLS_FOR_INPUT_TO),this.appendValueInput("STEP").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.PYTHON_RANGE_STEP),this.setInputsInline(!0),this.setOutput(!0),this.setTooltip(F.Msg.MIXLY_PYTHON_CONTROLS_RANGE_TOOLTIP)}},pe={init:function(){this.setColour(re),this.appendValueInput("LIST").setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.CONTROLS_FOREACH_INPUT),this.appendValueInput("VAR").appendField(F.Msg.CONTROLS_FOREACH_INPUT_ITEM),this.appendStatementInput("DO").appendField(F.Msg.MIXLY_DO),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip((function(){return F.Msg.CONTROLS_FOR_TOOLTIP.replace("“%1”","")}))},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(e,t){F.Names.equals(e,this.getFieldValue("VAR"))&&this.setTitleValue(t,"VAR")}},he={init:function(){this.setColour(re),this.appendValueInput("BOOL").setCheck([Boolean,Number]).appendField(F.Msg.MIXLY_MICROBIT_JS_CURRENT).appendField(new F.FieldDropdown(this.OPERATORS),"MODE"),this.appendStatementInput("DO").appendField(F.Msg.LANG_CONTROLS_WHILEUNTIL_TITLE_REPEAT+F.Msg.MIXLY_DO),this.setPreviousStatement(!0),this.setNextStatement(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("MODE");return{WHILE:F.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE,UNTIL:F.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL}[t]}))}},de={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.MIXLY_PYTHON_TRY),this.appendStatementInput("try"),this.appendValueInput("IF1").appendField(F.Msg.MIXLY_PYTHON_EXCEPT),this.appendStatementInput("DO1").appendField(""),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setMutator(new F.icons.MutatorIcon(["controls_except","controls_finally"],this)),this.setTooltip(F.Msg.MIXLY_MIXPY_CONTROL_TRY_TOOLTIP),this.elseifCount_=1,this.elseCount_=0},mutationToDom:function(){if(!this.elseifCount_&&!this.elseCount_)return null;var e=document.createElement("mutation");return this.elseifCount_&&e.setAttribute("elseif",this.elseifCount_),this.elseCount_&&e.setAttribute("else",1),e},domToMutation:function(e){var t=this,n=[],i=[];this.elseCount_&&this.removeInput("ELSE");for(var r=this.elseifCount_;r>0;r--)t.getInputTargetBlock("IF"+r)&&t.getInputTargetBlock("IF"+r).previousConnection?n[r]=t.getInputTargetBlock("IF"+r).previousConnection:n[r]=null,this.removeInput("IF"+r),t.getInputTargetBlock("DO"+r)&&t.getInputTargetBlock("DO"+r).previousConnection?i[r]=t.getInputTargetBlock("DO"+r).previousConnection:i[r]=null,this.removeInput("DO"+r);this.elseifCount_=parseInt(e.getAttribute("elseif"),10),this.elseCount_=parseInt(e.getAttribute("else"),10);for(r=1;r<=this.elseifCount_;r++)this.appendValueInput("IF"+r).setCheck([Boolean,Number]).appendField(F.Msg.MIXLY_PYTHON_EXCEPT),this.appendStatementInput("DO"+r).appendField("");this.elseCount_&&this.appendStatementInput("ELSE").appendField(F.Msg.MIXLY_PYTHON_FINALLY);for(r=n.length-2;r>0;r--)n[r]&&n[r].reconnect(this,"IF"+r);for(r=i.length-2;r>0;r--)i[r]&&i[r].reconnect(this,"DO"+r)},decompose:function(e){var t=e.newBlock("controls_try");t.initSvg();for(var n=t.getInput("STACK").connection,i=1;i<=this.elseifCount_;i++){var r=e.newBlock("controls_except");r.initSvg(),n.connect(r.previousConnection),n=r.nextConnection}if(this.elseCount_){var s=e.newBlock("controls_finally");s.initSvg(),n.connect(s.previousConnection)}return t},compose:function(e){this.elseCount_&&this.removeInput("ELSE"),this.elseCount_=0;for(var t=this.elseifCount_;t>0;t--)this.removeInput("IF"+t),this.removeInput("DO"+t);this.elseifCount_=0;for(var n=e.getInputTargetBlock("STACK"),i=[null],r=[null],s=null;n;){switch(n.type){case"controls_except":this.elseifCount_++,i.push(n.valueConnection_),r.push(n.statementConnection_);break;case"controls_finally":this.elseCount_++,s=n.statementConnection_;break;default:throw Error("Unknown block type: "+n.type)}n=n.nextConnection&&n.nextConnection.targetBlock()}this.updateShape_(),this.reconnectChildBlocks_(i,r,s)},saveConnections:function(e){for(var t=e.getInputTargetBlock("STACK"),n=1;t;){switch(t.type){case"controls_except":var i=this.getInput("IF"+n),r=this.getInput("DO"+n);t.valueConnection_=i&&i.connection.targetConnection,t.statementConnection_=r&&r.connection.targetConnection,n++;break;case"controls_finally":r=this.getInput("ELSE");t.statementConnection_=r&&r.connection.targetConnection;break;default:throw"Unknown block type."}t=t.nextConnection&&t.nextConnection.targetBlock()}},rebuildShape_:function(){var e=[null],t=[null],n=null;this.getInput("ELSE")&&(n=this.getInput("ELSE").connection.targetConnection);for(var i=1;this.getInput("IF"+i);){var r=this.getInput("IF"+i),s=this.getInput("DO"+i);console.log(r.connection.targetConnection),e.push(r.connection.targetConnection),t.push(s.connection.targetConnection),i++}this.updateShape_(),this.reconnectChildBlocks_(e,t,n)},updateShape_:function(){this.getInput("ELSE")&&this.removeInput("ELSE");for(var e=1;this.getInput("IF"+e);)this.removeInput("IF"+e),this.removeInput("DO"+e),e++;for(e=1;e<=this.elseifCount_;e++)this.appendValueInput("IF"+e).setCheck([Number,Boolean]).appendField(F.Msg.MIXLY_PYTHON_EXCEPT),this.appendStatementInput("DO"+e).appendField("");this.elseCount_&&this.appendStatementInput("ELSE").appendField(F.Msg.MIXLY_PYTHON_FINALLY)},reconnectChildBlocks_:function(e,t,n){for(var i=1;i<=this.elseifCount_;i++)e[i]&&e[i].reconnect(this,"IF"+i),t[i]&&t[i].reconnect(this,"DO"+i);n&&n.reconnect(this,"ELSE")}},fe={init:function(){this.setColour(re);var e=new F.FieldDropdown(this.OPERATORS);this.appendDummyInput().appendField(e,"FLOW").appendField(F.Msg.LANG_CONTROLS_FLOW_STATEMENTS_INPUT_OFLOOP),this.setPreviousStatement(!0),this.setTooltip(F.Msg.MIXLY_PYTHON_CONTROLS_FLOW_STATEMENTS_TOOLTIP);var t=this;this.setTooltip((function(){var e=t.getFieldValue("FLOW");return{BREAK:F.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK,CONTINUE:F.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE}[e]}))},onchange:function(){if(this.workspace){var e=!1,t=this;do{if("controls_repeat"==t.type||"controls_for"==t.type||"controls_forEach"==t.type||"controls_repeat_ext"==t.type||"controls_whileUntil"==t.type||"do_while"==t.type){e=!0;break}t=t.getSurroundParent()}while(t);e?this.setWarningText(null):this.setWarningText(F.Msg.LANG_CONTROLS_FLOW_STATEMENTS_WARNING)}}},_e={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.LANG_CONTROLS_FOR_INPUT_WITH).appendField(new F.FieldTextInput("i"),"VAR"),this.appendValueInput("FROM").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.LANG_CONTROLS_FOR_INPUT_FROM),this.appendValueInput("TO").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.LANG_CONTROLS_FOR_INPUT_TO),this.appendValueInput("STEP").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.MIXLY_STEP),this.appendStatementInput("DO").appendField(F.Msg.MIXLY_DO),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0);var e=this;this.setTooltip((function(){return F.Msg.CONTROLS_FOR_TOOLTIP.replace("%1",e.getFieldValue("VAR"))}))},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(e,t){F.Names.equals(e,this.getFieldValue("VAR"))&&this.setTitleValue(t,"VAR")}},me={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.LANG_CONTROLS_FOR_INPUT_WITH).appendField(new F.FieldTextInput("i"),"VAR"),this.appendValueInput("FROM").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.LANG_CONTROLS_FOR_INPUT_FROM),this.appendValueInput("TO").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.LANG_CONTROLS_FOR_INPUT_TO),this.appendValueInput("STEP").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.MIXLY_STEP),this.appendStatementInput("DO").appendField(F.Msg.MIXLY_DO),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0);var e=this;this.setTooltip((function(){return F.Msg.MIXLY_PYTHON_CONTROLS_FOR_RANGE_TOOLTIP.replace("%1",e.getFieldValue("VAR"))}))},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(e,t){F.Names.equals(e,this.getFieldValue("VAR"))&&this.setTitleValue(t,"VAR")}};he.OPERATORS=[[F.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_WHILE,"WHILE"],[F.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_UNTIL,"UNTIL"]],fe.OPERATORS=[[F.Msg.LANG_CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK,"BREAK"],[F.Msg.LANG_CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE,"CONTINUE"]];const be={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.CONTROLS_IF_IF_TITLE_IF),this.appendStatementInput("STACK"),this.setTooltip(F.Msg.CONTROLS_IF_IF_TOOLTIP),this.contextMenu=!1}},ge={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.CONTROLS_IF_ELSEIF_TOOLTIP),this.contextMenu=!1}},Se={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.CONTROLS_IF_ELSE_TITLE_ELSE),this.setPreviousStatement(!0),this.setTooltip(F.Msg.CONTROLS_IF_ELSE_TOOLTIP),this.contextMenu=!1}},ke={init:function(){this.setColour(re),this.appendDummyInput().appendField("try"),this.appendStatementInput("STACK"),this.setPreviousStatement(!1),this.setNextStatement(!1),this.contextMenu=!1}},ye={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.MIXLY_PYTHON_EXCEPT),this.setPreviousStatement(!0),this.setNextStatement(!0),this.contextMenu=!1,this.setTooltip(F.Msg.MIXLY_MIXPY_CONTROL_EXCEPT_TOOLTIP)}},ve={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.MIXLY_PYTHON_FINALLY),this.setPreviousStatement(!0),this.contextMenu=!1,this.setTooltip(F.Msg.MIXLY_MIXPY_CONTROL_FINALLY_TOOLTIP)}},Te={init:function(){this.jsonInit({message0:F.Msg.CONTROLS_REPEAT_TITLE,args0:[{type:"input_value",name:"TIMES"}],previousStatement:null,nextStatement:null,colour:re,tooltip:F.Msg.CONTROLS_REPEAT_TOOLTIP,helpUrl:F.Msg.CONTROLS_REPEAT_HELPURL}),this.appendStatementInput("DO")}},Ee={init:function(){this.setColour(re),this.appendValueInput("BOOL").appendField("lambda"),this.appendStatementInput("DO").appendField(F.Msg.MIXLY_STAT),this.setOutput(!0)}},Ie={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.MIXLY_PYTHON_PASS),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.MIXLY_PYTHON_CONTROLS_PASS_TOOLTIP)}},we={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.MIXLY_PYTHON_CONTROLS_THREAD_START),this.appendValueInput("callback").appendField(F.Msg.MIXLY_PYTHON_CONTROLS_THREAD_USE),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_PARAMS),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(F.Msg.MIXLY_PYTHON_CONTROLS_THREAD_TOOLTIP)}},xe={init:function(){this.appendDummyInput().appendField(F.Msg.CONTROLS_REPEAT_TITLE_REPEAT+F.Msg.MIXLY_DO),this.appendStatementInput("input_data").setCheck(null),this.appendValueInput("select_data").setCheck(null).appendField(F.Msg.CONTROLS_OPERATOR_UNTIL).appendField(new F.FieldDropdown([[F.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_WHILE,"true"],[F.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_UNTIL,"false"]]),"type"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setColour(re),this.setTooltip("do-while loop"),this.setHelpUrl("")}},Ae={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.MIXLY_OP_GARBAGE_COLLECT),this.setPreviousStatement(!0),this.setNextStatement(!0)}},$e={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.MIXLY_GET_MEM_ALLOC),this.setOutput(!0)}},Oe={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.MIXLY_GET_MEM_FREE),this.setOutput(!0)}},Me={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.MIXLY_GET+F.Msg.MIXLY_DEVICE+"ID"),this.setInputsInline(!0),this.setOutput(!0),this.setTooltip(F.Msg.PROCEDURES_DEFRETURN_RETURN+F.Msg.MIXLY_GET_UNIQUE_IDEN)}},Ce={init:function(){this.setColour(re),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_RTC_TIMESTAMP),this.appendDummyInput().appendField(F.Msg.MIXLY_TIMESTAMP_TO_DATA),this.setInputsInline(!0),this.setOutput(!0,Number)}},Re={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.MIXLY_GET_UNIQUE_IDEN),this.setOutput(!0)}},Ne=230;F.FieldTextInput.math_number_validator=function(e){return String(e)},F.FieldTextInput.math_number_validator_include_blank=function(e){if(""===e)return"";return/^-?(0X|0x|0O|0o|0B|0b)?[a-fA-F0-9]{1,}(\.[a-fA-F0-9]+)?$/.test(e)?String(e):null};const Le={init:function(){this.setColour(Ne),this.appendDummyInput().appendField(new F.FieldTextInput("0",F.FieldTextInput.math_number_validator),"NUM"),this.setOutput(!0,Number),this.setTooltip(F.Msg.MATH_NUMBER_TOOLTIP)}},De={init:function(){this.setColour(Ne);this.appendDummyInput("").appendField(F.Msg.MIXLY_PYTHON_MATH_CONSTANT).appendField(new F.FieldDropdown([["π","pi"],["e","e"]]),"CONSTANT"),this.setOutput(!0,Number);var e=this;this.setTooltip((function(){var t=e.getFieldValue("CONSTANT");return{pi:F.Msg.MIXLY_PYTHON_MATH_CONSTANT_PI_TOOLTIP,e:F.Msg.MIXLY_PYTHON_MATH_CONSTANT_E_TOOLTIP}[t]}))}},Pe={init:function(){this.setColour(Ne);this.appendDummyInput("").appendField(F.Msg.MIXLY_PYTHON_MATH_CONSTANT).appendField(new F.FieldDropdown([["π","pi"],["e","e"]]),"CONSTANT"),this.setOutput(!0,Number);var e=this;this.setTooltip((function(){var t=e.getFieldValue("CONSTANT");return{pi:F.Msg.MIXLY_PYTHON_MATH_CONSTANT_PI_MP_TOOLTIP,e:F.Msg.MIXLY_PYTHON_MATH_CONSTANT_E_MP_TOOLTIP}[t]}))}},Fe={init:function(){this.setColour(Ne),this.setOutput(!0),this.appendValueInput("A"),this.appendValueInput("B").appendField(new F.FieldDropdown([["+","ADD"],["-","MINUS"],["×","MULTIPLY"],["÷","DIVIDE"],["%","QUYU"],["//","ZHENGCHU"],["**","POWER"]]),"OP"),this.setInputsInline(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("OP");return{ADD:F.Msg.MATH_ARITHMETIC_TOOLTIP_ADD,MINUS:F.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS,MULTIPLY:F.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY,DIVIDE:F.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE,QUYU:F.Msg.MATH_MODULO_TOOLTIP,ZHENGCHU:F.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE,POWER:F.Msg.MATH_ARITHMETIC_TOOLTIP_POWER}[t]}))}},Be={init:function(){this.setColour(Ne),this.setPreviousStatement(!0),this.setNextStatement(!0),this.appendValueInput("A"),this.appendValueInput("B").appendField(new F.FieldDropdown([["+=","ADD"],["-=","MINUS"],["×=","MULTIPLY"],["÷=","DIVIDE"],["%=","QUYU"],["//=","ZHENGCHU"],["**=","POWER"]]),"OP"),this.setInputsInline(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("OP");return{ADD:F.Msg.MATH_ARITHMETIC_TOOLTIP_ADD,MINUS:F.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS,MULTIPLY:F.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY,DIVIDE:F.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE,QUYU:F.Msg.MATH_MODULO_TOOLTIP,ZHENGCHU:F.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE,POWER:F.Msg.MATH_ARITHMETIC_TOOLTIP_POWER}[t]}))}},je={init:function(){this.setColour(Ne),this.setOutput(!0,Number),this.appendValueInput("A").setCheck(Number),this.appendValueInput("B").setCheck(Number).appendField(new F.FieldDropdown([["&","&"],["|","|"],[">>",">>"],["<<","<<"]]),"OP"),this.setInputsInline(!0),this.setTooltip("位运算")}},Ve={init:function(){this.setColour(Ne),this.setOutput(!0,Number),this.appendValueInput("NUM").setCheck(Number).appendField(new F.FieldDropdown([["sin","SIN"],["cos","COS"],["tan","TAN"],["asin","ASIN"],["acos","ACOS"],["atan","ATAN"],["-","-"],["ln","LN"],["log10","LOG10"],["e^","EXP"],["10^","POW10"]]),"OP");var e=this;this.setTooltip((function(){var t=e.getFieldValue("OP");return{SIN:F.Msg.MATH_TRIG_TOOLTIP_SIN,COS:F.Msg.MATH_TRIG_TOOLTIP_COS,TAN:F.Msg.MATH_TRIG_TOOLTIP_TAN,ASIN:F.Msg.MATH_TRIG_TOOLTIP_ASIN,ACOS:F.Msg.MATH_TRIG_TOOLTIP_ACOS,ATAN:F.Msg.MATH_TRIG_TOOLTIP_ATAN,LN:F.Msg.MATH_SINGLE_TOOLTIP_LN}[t]}))}},Ue={init:function(){var e=[[F.Msg.MATH_BIN,"bin"],[F.Msg.MATH_OCT,"oct"],[F.Msg.MATH_HEX,"hex"]];this.setColour(Ne),this.setOutput(!0,String),this.appendValueInput("NUM").setCheck(Number).appendField(new F.FieldDropdown(e),"OP");var t=this;this.setTooltip((function(){var e=t.getFieldValue("OP");return{bin:F.Msg.MATH_DEC_TOOLTIP_BIN,oct:F.Msg.MATH_DEC_TOOLTIP_OCT,hex:F.Msg.MATH_DEC_TOOLTIP_HEX}[e]}))}},Ye={init:function(){var e=[[F.Msg.LANG_MATH_TO_ROUND,"round"],[F.Msg.LANG_MATH_TO_CEIL,"ceil"],[F.Msg.LANG_MATH_TO_FLOOR,"floor"],[F.Msg.MATH_ABS,"fabs"],[F.Msg.MATH_SQRT,"sqrt"]];this.setColour(Ne),this.appendValueInput("A").setCheck(Number).appendField(new F.FieldDropdown(e),"OP"),this.setOutput(!0,Number);var t=this;this.setTooltip((function(){var e=t.getFieldValue("OP");return{sqrt:F.Msg.MATH_SINGLE_TOOLTIP_ROOT,fabs:F.Msg.MATH_SINGLE_TOOLTIP_ABS,sq:F.Msg.MATH_SINGLE_TOOLTIP_SQ,round:F.Msg.MATH_SINGLE_TOOLTIP_ROUND,ceil:F.Msg.MATH_SINGLE_TOOLTIP_CEIL,floor:F.Msg.MATH_SINGLE_TOOLTIP_FLOOR}[e]}))}},Ge={init:function(){var e=[[F.Msg.MIXLY_MAX,"max"],[F.Msg.MIXLY_MIN,"min"]];this.setColour(Ne),this.appendValueInput("A").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(new F.FieldDropdown(e),"OP").appendField("("),this.appendValueInput("B").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(","),this.appendDummyInput("").setAlign(F.inputs.Align.RIGHT).appendField(")"),this.setInputsInline(!0),this.setOutput(!0,Number);var t=this;this.setTooltip((function(){var e=t.getFieldValue("OP");return{max:F.Msg.MIXLY_TOOLTIP_MATH_MAX,min:F.Msg.MIXLY_TOOLTIP_MATH_MIN}[e]}))}},Xe={init:function(){var e=[[F.Msg.MATH_TWO,"two"],[F.Msg.MATH_EIGHT,"eight"],[F.Msg.MATH_TEN,"ten"],[F.Msg.MATH_SIXTEEN,"sixteen"]];this.setColour(Ne),this.appendDummyInput("").appendField(F.Msg.MATH_BA),this.appendValueInput("NUM").appendField(new F.FieldDropdown(e),"OP").appendField(F.Msg.MATH_JinZhi).setCheck(Number),this.appendDummyInput("").appendField(F.Msg.MATH_ZHW).appendField(new F.FieldDropdown(e),"OP2").appendField(F.Msg.MATH_JinZhi),this.setFieldValue("ten","OP2"),this.setOutput(!0),this.setInputsInline(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("OP"),n={two:F.Msg.MATH_Before_two,eight:F.Msg.MATH_Before_eight,ten:F.Msg.MATH_Before_ten,sixteen:F.Msg.MATH_Before_sixteen},i=t.getFieldValue("OP2"),r={two:F.Msg.MATH_Behind_two,eight:F.Msg.MATH_Behind_eight,ten:F.Msg.MATH_Behind_ten,sixteen:F.Msg.MATH_Behind_sixteen};return n[e]+r[i]}))}},He={init:function(){var e=[[F.Msg.LANG_MATH_INT,"int"],[F.Msg.LANG_MATH_FLOAT,"float"]];this.setColour(Ne),this.setOutput(!0,Number),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_RANDOM).appendField(new F.FieldDropdown(e),"TYPE"),this.appendValueInput("FROM").setCheck(Number).appendField(F.Msg.LANG_CONTROLS_FOR_INPUT_FROM),this.appendValueInput("TO").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.LANG_MATH_RANDOM_INT_INPUT_TO),this.setInputsInline(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("TYPE"),n={int:F.Msg.LANG_MATH_INT,float:F.Msg.LANG_MATH_FLOAT_RANDOM};return F.Msg.MATH_RANDOM_INT_TOOLTIP+n[e]}))}},ze={init:function(){this.setColour(Ne),this.setOutput(!0,Number),this.appendValueInput("VALUE").setCheck(Number).appendField(F.Msg.LANG_MATH_CONSTRAIN_INPUT_CONSTRAIN),this.appendValueInput("LOW").setCheck(Number).appendField(F.Msg.LANG_MATH_CONSTRAIN_INPUT_LOW),this.appendValueInput("HIGH").setCheck(Number).appendField(F.Msg.LANG_MATH_CONSTRAIN_INPUT_HIGH),this.setInputsInline(!0),this.setTooltip(F.Msg.MATH_CONSTRAIN_TOOLTIP)}},qe={init:function(){this.setColour(Ne),this.appendValueInput("NUM",Number).appendField(F.Msg.MIXLY_MAP).setCheck(Number),this.appendValueInput("fromLow",Number).appendField(F.Msg.MIXLY_MAP_FROM).setCheck(Number),this.appendValueInput("fromHigh",Number).appendField(",").setCheck(Number),this.appendValueInput("toLow",Number).appendField(F.Msg.MIXLY_MAP_TO).setCheck(Number),this.appendValueInput("toHigh",Number).appendField(",").setCheck(Number),this.appendDummyInput("").appendField("]"),this.setInputsInline(!0),this.setOutput(!0),this.setTooltip(F.Msg.MIXLY_TOOLTIP_MATH_MAP)}},We={init:function(){this.setColour(Ne),this.appendDummyInput().appendField(new F.FieldTextInput("0",F.FieldTextInput.math_number_validator_include_blank),"NUM"),this.setOutput(!0),this.setTooltip(F.Msg.MATH_NUMBER_TOOLTIP)}},Ke={init:function(){this.setColour(Ne),this.appendValueInput("NUM").setCheck(Number).appendField(F.Msg.LANG_MATH_RANDOM_SEED),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.MIXLY_TOOLTIP_MATH_RANDOM_SEED)}},Je={init:function(){this.setColour(Ne),this.setOutput(!0,Number),this.appendValueInput("VALUE").setCheck(Number),this.appendValueInput("VAR").setCheck(Number).appendField(F.Msg.MATH_ROUND).appendField(F.Msg.TEXT_KEEP),this.appendDummyInput().appendField(F.Msg.TEXT_DECIMAL),this.setInputsInline(!0),this.setTooltip(F.Msg.MATH_ROUND_NEW_TOOLTIP)}},Qe={init:function(){var e=[[F.Msg.MIXLY_TO_INT,"int"],[F.Msg.MIXLY_TO_FLOAT,"float"],[F.Msg.MIXLY_TO_BITES,"b"],[F.Msg.LANG_MATH_BYTE+F.Msg.MIXLY_TO_INT,"bti"]];this.setColour(Ne),this.appendValueInput("VAR").appendField(new F.FieldDropdown(e),"TOWHAT"),this.setOutput(!0,Number);var t=this;this.setTooltip((function(){var e=t.getFieldValue("TOWHAT");return{int:F.Msg.MIXLY_PYTHON_TOOLTIP_TOINT,float:F.Msg.MIXLY_PYTHON_TOOLTIP_TOFLOAT,b:F.Msg.MIXLY_TOOLTIP_TEXT_TOBYTE}[e]}))}},Ze={init:function(){var e=[[F.Msg.MIXLY_TO_INT,"int"],[F.Msg.MIXLY_TO_FLOAT,"float"]];this.setColour(Ne),this.appendValueInput("VAR").appendField(new F.FieldDropdown(e),"TOWHAT"),this.setOutput(!0,Number);var t=this;this.setTooltip((function(){var e=t.getFieldValue("TOWHAT");return{int:F.Msg.MIXLY_TOOLTIP_TEXT_TOINT,float:F.Msg.MIXLY_TOOLTIP_TEXT_TOFLOAT}[e]}))}},et=qe,tt={init:function(){this.setColour(Ne),this.appendValueInput("VAR").appendField(F.Msg.LANG_MATH_BYTE+F.Msg.MIXLY_TO_HEX),this.setOutput(!0,Number),this.setTooltip(F.Msg.MIXLY_PYTHON_TOOLTIP_TOHEX)}},nt={init:function(){this.setColour(Ne),this.itemCount_=1,this.setMutator(new F.icons.MutatorIcon(["lists_create_with_item"],this)),this.appendDummyInput("DUMMY").appendField(F.Msg.MIXLY_PRODUCT+F.Msg.MIXLY_GENERATE_CARTESIAN_PRODUCT),this.appendValueInput("REPEAT").appendField(F.Msg.MIXLY_EVERY_PER_ELEPER_ELEMENT),this.appendDummyInput().appendField(F.Msg.CONTROLS_REPEAT_TITLE_TIMES),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0),this.setTooltip(F.Msg.LISTS_CREATE_WITH_PYTHON_TOOLTIP),this.updateShape_()},mutationToDom:function(){var e=document.createElement("mutation");return e.setAttribute("items",this.itemCount_),e},domToMutation:function(e){this.itemCount_=parseInt(e.getAttribute("items"),10),this.updateShape_()},decompose:function(e){var t=e.newBlock("lists_create_with_container");t.initSvg();for(var n=t.getInput("STACK").connection,i=0;i1&&"\\"===e.charAt(0)){var t=e.charAt(1);if("0"===t||"b"===t||"f"===t||"n"===t||"r"===t||"t"===t||"\\"===t||"'"===t)return String(e).substring(0,2);if("x"===t&&"0"===e.charAt(2)&&"B"===e.charAt(3))return String(e).substring(0,4)}return String(e).substring(0,1)};const lt={init:function(){this.setColour(st),this.appendDummyInput().appendField(this.newQuote_(!0)).appendField(new F.FieldTextInput("",F.FieldTextInput.char_validator),"TEXT").appendField(this.newQuote_(!1)),this.setOutput(!0,Number),this.setTooltip(F.Msg.TEXT_CHAR_TOOLTIP)},newQuote_:function(e){if(1==e)var t="../../media/quote2.png";else t="../../media/quote3.png";return new F.FieldImage(t,7,12,'"')}},ut={init:function(){this.setColour(st),this.appendValueInput("A").setCheck([String,Number]),this.appendValueInput("B").setCheck([String,Number]).appendField(F.Msg.MIXLY_TEXT_JOIN),this.setInputsInline(!0),this.setOutput(!0,String),this.setTooltip(F.Msg.MIXLY_TOOLTIP_TEXT_JOIN)}},ct={init:function(){this.setColour(st),this.appendValueInput("VAR").setCheck(Number).appendField(F.Msg.MIXLY_TOCHAR),this.setOutput(!0,String),this.setTooltip(F.Msg.MIXLY_TOOLTIP_TEXT_TOCHAR)}},pt={init:function(){this.setColour(st),this.appendValueInput("VAR").setCheck(String).appendField(F.Msg.MIXLY_TOASCII),this.setOutput(!0,Number),this.setTooltip(F.Msg.MIXLY_TOOLTIP_TEXT_TOASCII)}},ht={init:function(){this.setColour(st),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_TOSTRING),this.setOutput(!0,String),this.setTooltip(F.Msg.MIXLY_PYTHON_TOOLTIP_TOTEXT)}},dt={init:function(){this.setColour(st),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_LENGTH),this.setOutput(!0,Number),this.setTooltip(F.Msg.MIXLY_TOOLTIP_TEXT_LENGTH)}},ft={init:function(){this.WHERE_OPTIONS=[[F.Msg.LISTS_GET_INDEX_FROM_START,"FROM_START"],[F.Msg.LISTS_GET_INDEX_FROM_END,"FROM_END"],[F.Msg.TEXT_GET_INDEX_RANDOM+1+F.Msg.TEXT_CHARAT2,"RANDOM"]],this.setHelpUrl(F.Msg.LISTS_GET_INDEX_HELPURL),this.setColour(st),this.appendValueInput("VAR").setCheck(String),this.appendValueInput("AT").setCheck(Number),this.appendDummyInput().appendField(F.Msg.LISTS_GET_INDEX_GET,"MODE"),F.Msg.LISTS_GET_INDEX_TAIL&&this.appendDummyInput("TAIL").appendField(F.Msg.LISTS_GET_INDEX_TAIL),this.setInputsInline(!0),this.setOutput(!0),this.updateAt_(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("MODE"),n=e.getFieldValue("WHERE"),i="";switch(t+" "+n){case"GET FROM_START":case"GET FROM_END":i=F.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM;break;case"GET RANDOM":i=F.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM;break;case"GET_REMOVE FROM_START":case"GET_REMOVE FROM_END":i=F.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM;break;case"GET_REMOVE RANDOM":i=F.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM}return"FROM_START"!=n&&"FROM_END"!=n||(i+=" "+F.Msg.LISTS_INDEX_FROM_START_TOOLTIP.replace("%1",F.Msg.ONE_BASED_INDEXING?"#1":"#0")),i}));var t=this;this.setTooltip((function(){var e=t.getFieldValue("WHERE"),n={FROM_START:F.Msg.LISTS_GET_INDEX_FROM_START,FROM_END:F.Msg.LISTS_GET_INDEX_FROM_END,RANDOM:F.Msg.TEXT_GET_INDEX_RANDOM};return F.Msg.PROCEDURES_DEFRETURN_RETURN+F.Msg.MIXLY_MICROBIT_TYPE_STRING+n[e]+"n"+F.Msg.TEXT_CHARAT2}))},mutationToDom:function(){var e=document.createElement("mutation");e.setAttribute("statement",!this.outputConnection);var t=this.getInput("AT").type==F.INPUT_VALUE;return e.setAttribute("at",t),e},domToMutation:function(e){var t="true"==e.getAttribute("statement");this.updateStatement_(t),e="false"!=e.getAttribute("at"),this.updateAt_(e)},updateStatement_:function(e){e!=!this.outputConnection&&(this.unplug(!0,!0),e?(this.setOutput(!1),this.setPreviousStatement(!0),this.setNextStatement(!0)):(this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0)))},updateAt_:function(e){this.removeInput("AT"),this.removeInput("ORDINAL",!0),e?(this.appendValueInput("AT").setCheck(Number),F.Msg.TEXT_CHARAT2&&this.appendDummyInput("ORDINAL").appendField(F.Msg.TEXT_CHARAT2)):this.appendDummyInput("AT");var t=new F.FieldDropdown(this.WHERE_OPTIONS,(function(t){var n="FROM_START"==t||"FROM_END"==t;if(n!=e){var i=this.sourceBlock_;return i.updateAt_(n),i.setFieldValue(t,"WHERE"),null}}));this.getInput("AT").appendField(t,"WHERE"),F.Msg.LISTS_GET_INDEX_TAIL&&this.moveInputBefore("TAIL",null)}},_t={init:function(){this.setHelpUrl(F.Msg.LISTS_GET_INDEX_HELPURL),this.setColour(st),this.appendValueInput("VAR").setCheck(String),this.appendValueInput("AT").setCheck(Number).appendField(F.Msg.LISTS_GET_INDEX_GET+" "+F.Msg.LISTS_GET_INDEX_FROM_START),this.appendDummyInput().appendField(F.Msg.TEXT_CHARAT2),this.setOutput(!0),this.setTooltip(F.Msg.PROCEDURES_DEFRETURN_RETURN+F.Msg.MIXLY_MICROBIT_TYPE_STRING+F.Msg.LISTS_GET_INDEX_FROM_START+"n"+F.Msg.TEXT_CHARAT2)}},mt={init:function(){this.setHelpUrl(F.Msg.LISTS_GET_INDEX_HELPURL),this.setColour(st),this.appendValueInput("VAR").setCheck(String),this.appendDummyInput().appendField(F.Msg.TEXT_RANDOM_CHAR),this.setOutput(!0),this.setTooltip(F.Msg.TEXT_RANDOM_CHAR_TOOLTIP)}},bt={init:function(){this.WHERE_OPTIONS_1=[[F.Msg.LISTS_GET_INDEX_FROM_START,"FROM_START"],[F.Msg.LISTS_GET_INDEX_FROM_END,"FROM_END"],[F.Msg.LISTS_GET_SUBLIST_START_FIRST,"FIRST"]],this.WHERE_OPTIONS_2=[[F.Msg.LISTS_GET_SUBLIST_END_FROM_START,"FROM_START"],[F.Msg.LISTS_GET_SUBLIST_END_FROM_END,"FROM_END"],[F.Msg.LISTS_GET_SUBLIST_END_LAST,"LAST"]],this.setHelpUrl(F.Msg.LISTS_GET_SUBLIST_HELPURL),this.setColour(st),this.appendValueInput("VAR").setCheck(String),this.appendDummyInput("").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_GET),this.appendDummyInput("AT1"),this.appendDummyInput("AT2"),this.setInputsInline(!0),this.setOutput(!0,"List"),this.updateAt_(1,!0),this.updateAt_(2,!0),this.setTooltip(F.Msg._GET_TEXT_SUBLIST_TOOLTIP)},mutationToDom:function(){var e=document.createElement("mutation"),t=this.getInput("AT1").type==F.INPUT_VALUE;e.setAttribute("at1",t);var n=this.getInput("AT2").type==F.INPUT_VALUE;return e.setAttribute("at2",n),e},domToMutation:function(e){var t="true"==e.getAttribute("at1"),n="true"==e.getAttribute("at2");this.updateAt_(1,t),this.updateAt_(2,n)},updateAt_:function(e,t){this.removeInput("AT"+e),this.removeInput("ORDINAL"+e,!0),t?(this.appendValueInput("AT"+e).setCheck(Number),F.Msg.TEXT_CHARAT2&&this.appendDummyInput("ORDINAL"+e).appendField(F.Msg.TEXT_CHARAT2)):this.appendDummyInput("AT"+e);var n=new F.FieldDropdown(this["WHERE_OPTIONS_"+e],(function(n){var i="FROM_START"==n||"FROM_END"==n;if(i!=t){var r=this.sourceBlock_;return r.updateAt_(e,i),r.setFieldValue(n,"WHERE"+e),null}}));this.getInput("AT"+e).appendField(n,"WHERE"+e),1==e&&(this.moveInputBefore("AT1","AT2"),this.getInput("ORDINAL1")&&this.moveInputBefore("ORDINAL1","AT2"))}},gt={init:function(){this.setHelpUrl(F.Msg.LISTS_GET_SUBLIST_HELPURL),this.setColour(st),this.appendValueInput("VAR").setCheck(String),this.appendValueInput("AT1").appendField(F.Msg.LISTS_GET_INDEX_GET+" "+F.Msg.LISTS_GET_INDEX_FROM_START),this.appendValueInput("AT2").appendField(F.Msg.LISTS_GET_SUBLIST_END_FROM_START),this.appendDummyInput().appendField(F.Msg.TEXT_CHARAT2),this.setInputsInline(!0),this.setOutput(!0,["List",String]),this.setTooltip(F.Msg._GET_TEXT_SUBLIST_TOOLTIP)}},St={init:function(){var e=[[F.Msg.MIXLY_EQUALS,"==="],[F.Msg.MIXLY_STARTSWITH,"startswith"],[F.Msg.MIXLY_ENDSWITH,"endswith"]];this.setColour(st),this.appendValueInput("STR1").setCheck(String),this.appendValueInput("STR2").appendField(new F.FieldDropdown(e),"DOWHAT").setCheck(String),this.setOutput(!0,[Boolean,Number]),this.setInputsInline(!0)}},kt={init:function(){this.setColour(st),this.appendValueInput("STR1").setCheck(String),this.appendValueInput("STR2").appendField(F.Msg.MIXLY_COMPARETO).setCheck(String),this.setOutput(!0,Number),this.setInputsInline(!0),this.setTooltip(F.Msg.MIXLY_COMPARETO_HELP)}},yt={init:function(){var e=[[F.Msg.TEXT_UPPER,"upper"],[F.Msg.TEXT_TITLE,"title"],[F.Msg.TEXT_CAPITALIZE,"capitalize"],[F.Msg.TEXT_SWAPCASE,"swapcase"],[F.Msg.TEXT_LOWER,"lower"]];this.setColour(st),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_GET).appendField(new F.FieldDropdown(e),"CAPITAL").setCheck(String),this.setOutput(!0,String);var t=this;this.setTooltip((function(){var e=t.getFieldValue("CAPITAL");return{upper:F.Msg.MIXLY_MIXPY_TEXT_UPPER_TOOLTIP,title:F.Msg.MIXLY_MIXPY_TEXT_TITLE_TOOLTIP,swapcase:F.Msg.MIXLY_MIXPY_TEXT_SWAPCASE_TOOLTIP,capitalize:F.Msg.MIXLY_MIXPY_TEXT_CAPITALIZE_TOOLTIP,lower:F.Msg.MIXLY_MIXPY_TEXT_LOWER_TOOLTIP}[e]}))}},vt={init:function(){var e=[[F.Msg.TEXT_LJUST,"ljust"],[F.Msg.TEXT_CENTER,"center"],[F.Msg.TEXT_RJUST,"rjust"]];this.setColour(st),this.appendValueInput("VAR").appendField(new F.FieldDropdown(e),"CENTER").setCheck(String),this.appendValueInput("WID").appendField(F.Msg.MIXLY_WIDTH).setCheck(Number),this.appendValueInput("Symbol").appendField(F.Msg.MIXLY_RECT_Fill).setCheck(String),this.setInputsInline(!0),this.setOutput(!0,String),this.setTooltip(F.Msg.MIXLY_MIXPY_TEXT_CENTER_TOOLTIP)}},Tt={init:function(){this.setColour(st),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_GET).setCheck(String),this.appendValueInput("STR").appendField(F.Msg.MIXLY_MID+F.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER).setCheck(String),this.appendDummyInput().appendField(F.Msg.MIXLY_LIST_INDEX),this.setInputsInline(!0),this.setOutput(!0,String),this.setTooltip(F.Msg.MIXLY_MIXPY_TEXT_FIND_TOOLTIP)}},Et={init:function(){this.setColour(st),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_PYTHON_TEXT_JOIN_SEQ_USE_STR).setCheck(String),this.appendValueInput("LIST").appendField(F.Msg.MIXLY_PYTHON_TEXT_JOIN_SEQ_SEQ).setCheck("List","Tuple","Set","Dict"),this.appendDummyInput().appendField(F.Msg.MIXLY_PYTHON_TEXT_JOIN_SEQ_GET_STR),this.setInputsInline(!0),this.setOutput(!0,String),this.setTooltip(F.Msg.MIXLY_PYTHON_TEXT_JOIN_SEQ_TOOLTIP)}},It={init:function(){this.setColour(st),this.appendValueInput("VAR").setCheck(String),this.appendValueInput("STR1").appendField(F.Msg.MIXLY_MIXPY_REPLACE).setCheck(String),this.appendValueInput("STR2").appendField(F.Msg.LISTS_SET_INDEX_INPUT_TO).setCheck(String),this.setInputsInline(!0),this.setOutput(!0,String),this.setTooltip(F.Msg.MIXLY_MIXPY_TEXT_REPLACE_TOOLTIP)}},wt={init:function(){this.setColour(st),this.appendValueInput("VAR"),this.appendValueInput("VAL").appendField(F.Msg.LIST_SPLIT_AS),this.appendDummyInput("").appendField(F.Msg.LIST_SPLIT),this.setOutput(!0,"List"),this.setTooltip(F.Msg.MIXLY_MIXPY_TEXT_SPLIT_TOOLTIP),this.setInputsInline(!0)}},xt={init:function(){var e=[[F.Msg.TEXT_TRIM_BOTH,"strip"],[F.Msg.TEXT_TRIM_LEFT,"lstrip"],[F.Msg.TEXT_TRIM_RIGHT,"rstrip"]];this.setColour(st),this.appendValueInput("VAR"),this.appendDummyInput("").appendField(F.Msg.TEXT_STRIM),this.appendDummyInput("").appendField(new F.FieldDropdown(e),"TOWHAT"),this.appendDummyInput("").appendField(F.Msg.TEXT_BLANK),this.setOutput(!0,String),this.setInputsInline(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("TOWHAT");return{strip:F.Msg.TEXT_TRIM_BOTH_TOOLTIP,lstrip:F.Msg.TEXT_TRIM_LEFT_TOOLTIP,rstrip:F.Msg.TEXT_TRIM_RIGHT_TOOLTIP}[e]}))}},At={init:function(){this.setColour(st),this.appendDummyInput("").appendField(F.Msg.MIXLY_MICROPYTHON_FORMAT),this.appendDummyInput("").appendField(new F.FieldTextInput("str"),"VAR"),this.itemCount_=1,this.updateShape_(),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setInputsInline(!0),this.setMutator(new F.icons.MutatorIcon(["text_create_with_item"],this)),this.setOutput(!0),this.setTooltip(F.Msg.MIXLY_MIXPY_TEXT_FORMAT_TOOLTIP)},mutationToDom:function(){var e=document.createElement("mutation");return e.setAttribute("items",this.itemCount_),e},domToMutation:function(e){this.itemCount_=parseInt(e.getAttribute("items"),10),this.updateShape_()},decompose:function(e){var t=e.newBlock("text_create_with_container");t.initSvg();for(var n=t.getInput("STACK").connection,i=0;it?e[t]:0==t?'"key"':'"key'+(t+1)+'"'),"KEY"+t).appendField(":")}},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(e,t){F.Names.equals(e,this.getFieldValue("VAR"))&&this.setTitleValue(t,"VAR")}},In={init:function(){this.setColour(Tn),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_TYPE_DICT),this.appendStatementInput("STACK"),this.setTooltip(F.Msg.DICTS_CREATE_WITH_CONTAINER_TOOLTIP),this.contextMenu=!1}},wn={init:function(){this.setColour(Tn),this.appendDummyInput().appendField(F.Msg.DICTS_CREATE_WITH_ITEM_TITLE),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.DICTS_CREATE_WITH_ITEM_TOOLTIP),this.contextMenu=!1}},xn={init:function(){this.setColour(Tn),this.appendValueInput("DICT").setCheck("Dict"),this.appendDummyInput("").appendField(F.Msg.DICT_KEYS),this.setTooltip(F.Msg.DICTS_KEYS_TOOLTIP),this.setOutput(!0,"List")}},An={init:function(){this.setColour(Tn),this.appendValueInput("DICT").setCheck("Dict"),this.appendValueInput("KEY").appendField(F.Msg.DICTS_GET_IN),this.appendDummyInput("").appendField(F.Msg.DICTS_ADD_VALUE),this.setOutput(!0),this.setTooltip(F.Msg.DICTS_GET_TOOLTIP)}},$n={init:function(){this.setColour(Tn),this.appendValueInput("DICT").setCheck("Dict"),this.appendValueInput("KEY").appendField(F.Msg.DICTS_GET_IN),this.appendDummyInput("").appendField(F.Msg.DICTS_ADD_VALUE),this.appendValueInput("VAR").appendField(F.Msg.DICTS_DEFAULT_VALUE),this.setOutput(!0),this.setTooltip(F.Msg.DICTS_GET_DEFAULT_TOOLTIP)}},On={init:function(){this.setColour(Tn),this.appendValueInput("DICT"),this.appendValueInput("KEY").appendField(F.Msg.DICTS_ADD),this.appendDummyInput(),this.appendValueInput("VAR").appendField(F.Msg.DICTS_ADD_VALUE),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.DICTS_ADD_OR_CHANGE_TOOLTIP)}},Mn={init:function(){this.setColour(Tn),this.appendValueInput("DICT"),this.appendValueInput("KEY").appendField(F.Msg.DICTS_DELETE_IN),this.appendDummyInput("").appendField(F.Msg.DICTS_DELETE_VALUE),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.DICTS_DELETE_TOOLTIP)}},Cn={init:function(){this.setColour(Tn),this.appendValueInput("DICT2").setCheck("Dict").appendField(F.Msg.MAKE_DICT),this.appendValueInput("DICT").setCheck("Dict").appendField(F.Msg.DICT_UPDATE),this.appendDummyInput("").appendField(F.Msg.MIXLY_MID),this.setTooltip(F.Msg.DICTS_UPDATE_TOOLTIP),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Rn={init:function(){this.setColour(Tn),this.appendValueInput("DICT").setCheck("Dict"),this.appendDummyInput("").appendField(F.Msg.DICT_CLEAR),this.setTooltip(F.Msg.DICTS_CLEAR_TOOLTIP),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Nn={init:function(){this.setColour(Tn),this.appendValueInput("DICT").setCheck("Dict"),this.appendDummyInput("").appendField(F.Msg.DICT_ITEMS),this.setTooltip(F.Msg.DICTS_ITEMS_TOOLTIP),this.setOutput(!0,"List")}},Ln={init:function(){this.setColour(Tn),this.appendValueInput("DICT").setCheck("Dict"),this.appendDummyInput("").appendField(F.Msg.DICT_VALUES),this.setTooltip(F.Msg.DICTS_VALUES_TOOLTIP),this.setOutput(!0,"List")}},Dn={init:function(){this.setColour(Tn),this.appendValueInput("DICT").setCheck("Dict"),this.appendDummyInput("").appendField(F.Msg.MIXLY_LENGTH),this.setTooltip(F.Msg.DICT_LENGTH_TOOLTIP),this.setOutput(!0,Number)}},Pn={init:function(){this.setColour(Tn),this.appendValueInput("DICT").setCheck("Dict"),this.appendDummyInput("").appendField(F.Msg.DICT_DELDICT),this.setTooltip(F.Msg.DICTS_DEL_TOOLTIP),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Fn={init:function(){this.MODE=[[F.Msg.DICTS_ADD_OR_CHANGE,"INSERT"],[F.Msg.MIXLY_MICROBIT_JS_DELETE_VAR,"DELETE"]],this.setHelpUrl(F.Msg.LISTS_GET_SUBLIST_HELPURL),this.setColour(Tn),this.appendValueInput("DICT").setCheck("Dict"),this.appendDummyInput("AT2"),this.appendValueInput("KEY"),this.appendDummyInput("").appendField(F.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE).appendField(F.Msg.DICTS_ADD_VALUE),this.updateAt_(!0),this.setInputsInline(!0),this.setOutput(!1),this.setPreviousStatement(!0),this.setNextStatement(!0);var e=this;this.setTooltip((function(){var t="";switch(e.getFieldValue("WHERE")){case"INSERT":t=F.Msg.DICTS_ADD_TOOLTIP;break;case"DELETE":t=F.Msg.DICTS_DELETE_TOOLTIP}return t}))},mutationToDom:function(){var e=document.createElement("mutation"),t=this.getInput("AT2").type==F.INPUT_VALUE;return e.setAttribute("at2",t),e},domToMutation:function(e){var t="true"==e.getAttribute("at2");this.updateAt_(t)},updateAt_:function(e){this.removeInput("AT2"),this.removeInput("ORDINAL",!0),e?this.appendValueInput("AT2").setCheck(Number):this.appendDummyInput("AT2");var t=new F.FieldDropdown(this.MODE,(function(t){var n="INSERT"==t;if(n!=e){var i=this.sourceBlock_;return i.updateAt_(n),i.setFieldValue(t,"WHERE"),null}}));this.getInput("AT2").appendField(t,"WHERE")}},Bn={init:function(){this.setColour(Tn),this.appendValueInput("DICT").setCheck("Dict"),this.appendDummyInput("").appendField(F.Msg.blockpy_DICT_POP),this.appendValueInput("KEY"),this.appendDummyInput("").appendField(F.Msg.DICTS_ADD_VALUE),this.setTooltip(F.Msg.DICT_POP_TOOLTIP),this.setInputsInline(!0),this.setOutput(!0)}},jn={init:function(){this.setColour(Tn),this.appendValueInput("DICT").setCheck("Dict"),this.appendValueInput("KEY").appendField(F.Msg.DICTS_SET_DEFAULT),this.appendDummyInput("").appendField(F.Msg.DICTS_DEFAULT_VALUE),this.appendValueInput("VAR"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.DICTS_SETDEFAULT_TOOLTIP)}},Vn={init:function(){this.setColour(Tn),this.appendDummyInput("").appendField(new F.FieldLabel(F.Msg.MIXLY_MICROBIT_TYPE_DICT),"TIP").appendField(" "),this.itemCount_=3,this.updateShape_(),this.setOutput(!0,"Dict"),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setMutator(new F.icons.MutatorIcon(["dicts_create_with_item"],this)),this.setTooltip(F.Msg.DICTS_CREATE_WITH_TOOLTIP)},mutationToDom:function(){var e=document.createElement("mutation");return e.setAttribute("items",this.itemCount_),e},domToMutation:function(e){this.itemCount_=parseInt(e.getAttribute("items"),10),this.updateShape_()},decompose:function(e){var t=e.newBlock("dicts_create_with_container");t.initSvg();for(var n=t.getInput("STACK").connection,i=0;it?e[t]:0==t?'"key"':'"key'+(t+1)+'"'),"KEY"+t).appendField(":")}},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(e,t){F.Names.equals(e,this.getFieldValue("VAR"))&&this.setTitleValue(t,"VAR")}},Un={init:function(){this.setColour(Tn),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_TODICT),this.setOutput(!0),this.setTooltip(F.Msg.MIXLY_PYTHON_TOOLTIP_TODICT)}},Yn={init:function(){this.setColour(Tn),this.appendValueInput("DICT").setCheck("Dict"),this.appendDummyInput("").appendField(F.Msg.MIXLY_TO_JSON),this.setTooltip(F.Msg.MIXLY_TO_JSON_TOOLTIP),this.setOutput(!0)}},Gn={init:function(){this.setColour(Tn),this.appendValueInput("VAR"),this.appendDummyInput("").appendField(F.Msg.MIXLY_CONVERT_TO_JSON),this.setTooltip(F.Msg.MIXLY_CONVERT_TO_JSON_TOOLTIP),this.setOutput(!0)}},Xn={init:function(){this.setColour(Tn),this.appendValueInput("DICT").setCheck("Dict"),this.appendValueInput("VAR1").appendField("key1"),this.appendValueInput("VAR2").appendField("index"),this.appendValueInput("VAR3").appendField("key2"),this.appendValueInput("VAR4").appendField("key3"),this.setInputsInline(!0),this.setTooltip(F.Msg.MIXLY_CONVERT_TO_JSON_TOOLTIP),this.setOutput(!0)}},Hn={init:function(){this.setColour(Tn),this.appendValueInput("DICT"),this.appendDummyInput("").appendField(F.Msg.MIXLY_TO_JSON),this.setTooltip(F.Msg.MIXLY_TO_JSON_TOOLTIP),this.setOutput(!0)}},zn=210,qn={init:function(){var e=F.RTL?[["=","EQ"],["≠","NEQ"],[">","LT"],["≥","LTE"],["<","GT"],["≤","GTE"]]:[["=","EQ"],["≠","NEQ"],["<","LT"],["≤","LTE"],[">","GT"],["≥","GTE"]];this.setColour(zn),this.setOutput(!0,Boolean),this.appendValueInput("A"),this.appendValueInput("B").appendField(new F.FieldDropdown(e),"OP"),this.setInputsInline(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("OP");return{EQ:F.Msg.LOGIC_COMPARE_TOOLTIP_EQ,NEQ:F.Msg.LOGIC_COMPARE_TOOLTIP_NEQ,LT:F.Msg.LOGIC_COMPARE_TOOLTIP_LT,LTE:F.Msg.LOGIC_COMPARE_TOOLTIP_LTE,GT:F.Msg.LOGIC_COMPARE_TOOLTIP_GT,GTE:F.Msg.LOGIC_COMPARE_TOOLTIP_GTE}[e]})),this.prevBlocks_=[null,null]}},Wn={init:function(){var e=F.RTL?[[">","LT"],["≥","LTE"],["<","GT"],["≤","GTE"]]:[["<","LT"],["≤","LTE"],[">","GT"],["≥","GTE"]],t=F.RTL?[[">","LT"],["≥","LTE"],["<","GT"],["≤","GTE"]]:[["<","LT"],["≤","LTE"],[">","GT"],["≥","GTE"]];this.setColour(zn),this.setOutput(!0,Boolean),this.appendValueInput("A"),this.appendValueInput("B").appendField(new F.FieldDropdown(e),"OP1"),this.appendValueInput("C").appendField(new F.FieldDropdown(t),"OP2"),this.setInputsInline(!0),this.setTooltip(F.Msg.MIXLY_PYTHON_LOGIC_COMPARE_CONTINOUS_TOOLTIP)}},Kn={init:function(){var e=[[F.Msg.LOGIC_OPERATION_AND,"AND"],[F.Msg.LOGIC_OPERATION_OR,"OR"],[F.Msg.LOGIC_OPERATION_NOR,"NOR"],[F.Msg.LOGIC_OPERATION_XOR,"XOR"]];this.setColour(zn),this.setOutput(!0,Boolean),this.appendValueInput("A").setCheck([Boolean,Number]),this.appendValueInput("B").setCheck([Boolean,Number]).appendField(new F.FieldDropdown(e),"OP"),this.setInputsInline(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("OP");return{AND:F.Msg.LOGIC_OPERATION_TOOLTIP_AND,OR:F.Msg.LOGIC_OPERATION_TOOLTIP_OR,NOR:F.Msg.LOGIC_OPERATION_TOOLTIP_NOR,XOR:F.Msg.LOGIC_OPERATION_TOOLTIP_XOR}[e]}))}},Jn={init:function(){this.setColour(zn),this.setOutput(!0,Boolean),this.appendValueInput("BOOL").setCheck([Number,Boolean]).appendField(F.Msg.LOGIC_NEGATE_TITLE),this.setTooltip(F.Msg.LOGIC_NEGATE_TOOLTIP)}},Qn={init:function(){var e=[[F.Msg.LOGIC_BOOLEAN_TRUE,"TRUE"],[F.Msg.LOGIC_BOOLEAN_FALSE,"FALSE"]];this.setColour(zn),this.setOutput(!0,Boolean),this.appendDummyInput().appendField(new F.FieldDropdown(e),"BOOL"),this.setTooltip(F.Msg.LOGIC_BOOLEAN_TOOLTIP)}},Zn={init:function(){this.setColour(zn),this.setOutput(!0),this.appendDummyInput().appendField(F.Msg.LOGIC_NULL),this.setTooltip(F.Msg.LOGIC_NULL_TOOLTIP)}},ei={init:function(){this.setColour(zn),this.appendValueInput("A"),this.appendValueInput("B").appendField(F.Msg.LOGIC_TERNARY_IF_TRUE),this.appendValueInput("C").appendField(F.Msg.LOGIC_TERNARY_IF_FALSE),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(F.Msg.MIXLY_TOOLTIP_LOGIT_TRUEORFALSE)}},ti={init:function(){var e=[[F.Msg.TEXT_APPEND_TO,"in"],[F.Msg.MIXLY_PYTHON_LOGIC_IS_NOT_IN,"not in"]];this.setColour(zn),this.appendValueInput("A"),this.appendValueInput("B").setCheck([String,"List"]).appendField(new F.FieldDropdown(e),"BOOL"),this.appendDummyInput("").appendField(F.Msg.MICROBIT_LOGIC_IS_IN),this.setOutput(!0,Boolean),this.setInputsInline(!0),this.setTooltip(F.Msg.IN)}},ni={init:function(){var e=[[F.Msg.MIXLY_PYTHON_LOGIC_IS,"is"],[F.Msg.MIXLY_PYTHON_LOGIC_IS_NOT,"is not"]];this.setColour(zn),this.appendValueInput("A"),this.appendValueInput("B").appendField(new F.FieldDropdown(e),"BOOL"),this.setOutput(!0,Boolean),this.setInputsInline(!0),this.setTooltip(F.Msg.MIXLY_PYTHON_LOGIC_IS_TOOLTIP)}},ii={init:function(){this.setColour(zn),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_TOBOOL),this.setOutput(!0,Boolean),this.setTooltip(F.Msg.MIXLY_PYTHON_TOOLTIP_TOBOOL)}},ri={init:function(){this.setColour(0),this.appendValueInput("fn").setCheck(String).appendField(F.Msg.MIXLY_PYTHON_STORAGE_OPEN_FILE_WITH_OS+"(For Windows)"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0)}},si={init:function(){this.setColour(0),this.appendValueInput("FILENAME").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE).appendField(new F.FieldDropdown([[F.Msg.MIXLY_MICROBIT_PY_STORAGE_READ,"r"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE,"w"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ,"rb"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE,"wb"]]),"MODE"),this.appendValueInput("FILE").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_AS),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("MODE"),n=F.Msg.MIXLY_USE,i=F.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE,r=F.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE,s=F.Msg.MIXLY_BELONG;return n+{r:F.Msg.MIXLY_MICROBIT_PY_STORAGE_READ,w:F.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE,rb:F.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ,wb:F.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE}[t]+s+i+r}))},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(e,t){F.Names.equals(e,this.getFieldValue("VAR"))&&this.setTitleValue(t,"VAR")}},oi={init:function(){this.setColour(0),this.appendValueInput("FILENAME").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE).appendField(new F.FieldDropdown([[F.Msg.MIXLY_MICROBIT_PY_STORAGE_READ,"r"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE,"w"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ,"rb"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE,"wb"]]),"MODE"),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setInputsInline(!0),this.setOutput(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("MODE"),n=F.Msg.MIXLY_USE,i=F.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE,r=F.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE,s=F.Msg.MIXLY_BELONG,o=F.Msg.PY_STORAGE_FILE_OBJECT;return n+{r:F.Msg.MIXLY_MICROBIT_PY_STORAGE_READ,w:F.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE,rb:F.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ,wb:F.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE}[t]+s+i+r+o}))}},ai={init:function(){this.setColour(0),this.appendValueInput("FILENAME").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE);this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE).appendField(new F.FieldDropdown([[F.Msg.MIXLY_MICROBIT_PY_STORAGE_READ,"r"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE,"w"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ,"rb"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE,"wb"]]),"MODE"),this.appendDummyInput().appendField(F.Msg.MIXPY_TEXT_ENCODE).appendField(new F.FieldDropdown([["ANSI","ANSI"],["gbk","gbk"],["utf-8","utf-8"]]),"CODE"),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setInputsInline(!0),this.setOutput(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("MODE"),n=F.Msg.MIXLY_USE,i=F.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE,r=F.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE,s=F.Msg.MIXLY_BELONG,o=F.Msg.PY_STORAGE_FILE_OBJECT;return n+{r:F.Msg.MIXLY_MICROBIT_PY_STORAGE_READ,w:F.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE,rb:F.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ,wb:F.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE}[t]+s+i+r+o}))}},li={init:function(){this.setColour(0),this.appendValueInput("data").setCheck(String).appendField(F.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE),this.appendValueInput("FILE").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_WRITE),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(F.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE+F.Msg.MIXLY_MICROBIT_TYPE_STRING+F.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_WRITE)}},ui={init:function(){this.setColour(0),this.appendValueInput("FILE").setCheck("Variable").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_FROM_FILE),this.appendDummyInput().appendField(new F.FieldDropdown([[F.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL,"read"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_ONE_LINE,"readline"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL_LINES,"readlines"]]),"MODE"),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,String)}},ci={init:function(){this.setColour(0),this.appendValueInput("FILE").setCheck("Variable").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_FROM_FILE),this.appendDummyInput().appendField(new F.FieldDropdown([[F.Msg.MIXLY_MICROBIT_PY_STORAGE_NO_MORE_THAN_SIZE,"read"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_ONE_LINE_NO_MORE_THAN_SIZE,"readline"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL_LINES_NO_MORE_THAN_SIZE,"readlines"]]),"MODE"),this.appendValueInput("SIZE").setCheck(Number),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,String);var e=this;this.setTooltip((function(){var t=e.getFieldValue("MODE"),n=F.Msg.MIXLY_MICROBIT_PY_STORAGE_FROM_FILE,i=F.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER;return n+{read:F.Msg.MIXLY_MICROBIT_PY_STORAGE_NO_MORE_THAN_SIZE,readline:F.Msg.MIXLY_MICROBIT_PY_STORAGE_ONE_LINE_NO_MORE_THAN_SIZE,readlines:F.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL_LINES_NO_MORE_THAN_SIZE}[t]+"x"+i}))}},pi={init:function(){this.setColour(0),this.appendValueInput("FILE").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_FROM_FILE),this.setNextStatement(!0),this.appendValueInput("SIZE").setCheck(Number).appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_ONE_LINE_NO_MORE_THAN_SIZE),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,String),this.setTooltip(F.Msg.MICROBIT_PYTHON_TYPE)}},hi={init:function(){this.setColour(0),this.appendValueInput("FILE").appendField(F.Msg.HTML_FILE),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_CAN_WRITE_ORNOT),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,Boolean),this.setTooltip(F.Msg.MIXLY_MICROBIT_PY_STORAGE_CAN_WRITE_ORNOT1)}},di={init:function(){this.setColour(0),this.appendValueInput("FILE").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_GET),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_FILENAME),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,String),this.setTooltip(F.Msg.MIXLY_MICROBIT_PY_STORAGE_GET_FILENAME)}},fi={init:function(){this.setColour(0),this.appendValueInput("FILE").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_CLOSE_FILE),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setOutput(!1),this.setTooltip(F.Msg.MIXLY_MICROBIT_PY_STORAGE_CLOSE_FILE)}},_i={init:function(){this.setColour(0),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_LIST_ALL_FILES),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,"List"),this.setTooltip(F.Msg.MIXLY_MICROBIT_PY_STORAGE_LIST_ALL_FILES)}};F.Msg.MIXLY_MICROBIT_PY_STORAGE_DELETE_FILE;const mi={init:function(){this.setColour(0),this.appendDummyInput().appendField(new F.FieldDropdown([[F.Msg.MIXLY_MICROBIT_PY_STORAGE_DELETE_FILE,"remove"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_DELETE_DIRS,"removedirs"]]),"MODE"),this.appendValueInput("FILE").setCheck(String),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setOutput(!1),this.setTooltip(F.Msg.MIXLY_MICROBIT_PY_STORAGE_DELETE_FILE)}},bi={init:function(){this.setColour(0),this.appendValueInput("FILE").setCheck(String).appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_GET_FILE_SIZE),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_SIZE),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,Number),this.setTooltip(F.Msg.MIXLY_MICROBIT_PY_STORAGE_GET_FILE_SIZE+F.Msg.MIXLY_MICROBIT_PY_STORAGE_SIZE)}},gi={init:function(){this.setColour(0),this.appendValueInput("FILE").setCheck(String).appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_RETURN_FILE),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_PRESENT_LOCATION),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,Number),this.setTooltip(F.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_TELL)}},Si={init:function(){this.setColour(0),this.appendValueInput("FILE").setCheck("Variable").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_SET_FILE_POSITION),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_CURRENT_POSITION),this.appendDummyInput().appendField(new F.FieldDropdown([[F.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_START,"start"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_CURRENT,"current"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_END,"end"]]),"MODE"),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_OFFSET),this.appendValueInput("SIZE").setCheck(Number),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("MODE"),n=F.Msg.MIXLY_MICROBIT_PY_STORAGE_SET_FILE_POSITION+F.Msg.MIXLY_MICROBIT_PY_STORAGE_CURRENT_POSITION,i=F.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER,r=F.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_OFFSET;return n+" "+{start:F.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_START,current:F.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_CURRENT,end:F.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_END}[t]+r+"x"+i}))}},ki={init:function(){this.setColour(0),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_GET_CURRENT_DIR),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,"List"),this.setTooltip(F.Msg.MIXLY_MICROBIT_PY_STORAGE_GET_CURRENT_DIR)}},yi={init:function(){this.setColour(0),this.appendValueInput("PATH").setCheck(String).appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_PATH),this.appendDummyInput().appendField(F.Msg.MIXLY_ESP32_SET),this.appendDummyInput().appendField(new F.FieldDropdown([[F.Msg.MIXLY_MICROBIT_PY_STORAGE_MKDIR,"mkdir"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_MAKEDIRS,"makedirs"]]),"MODE"),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setOutput(!1);var e=this;this.setTooltip((function(){var t=e.getFieldValue("MODE");return F.Msg.MIXLY_MICROBIT_PY_STORAGE_PATH+"x"+F.Msg.MIXLY_ESP32_SET+{mkdir:F.Msg.MIXLY_MICROBIT_PY_STORAGE_MKDIR,makedirs:F.Msg.MIXLY_MICROPYTHON_SOCKET_MAKEDIRS}[t]}))}},vi={init:function(){this.setColour(0),this.appendValueInput("FILE").setCheck(String).appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_RENAME),this.appendValueInput("NEWFILE").setCheck(String).appendField(F.Msg.MIXLY_AS),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setOutput(!1),this.setTooltip(F.Msg.MIXLY_MICROBIT_PY_STORAGE_RENAME)}},Ti={init:function(){this.setColour(0),this.appendValueInput("FILE").setCheck(String).appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_CHANGE_DIR),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setOutput(!1),this.setTooltip(F.Msg.MIXLY_MICROBIT_PY_STORAGE_CHANGE_DIR)}},Ei={init:function(){this.setColour(0),this.appendValueInput("FILE").setCheck(String).appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_IS_OR_NOT),this.appendDummyInput().appendField(new F.FieldDropdown([[F.Msg.HTML_FILE,"isfile"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_IS_DIR,"isdir"]]),"MODE"),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,Boolean);let e=this;this.setTooltip((function(){var t=e.getFieldValue("MODE");return F.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH+"x"+F.Msg.MIXLY_MICROBIT_PY_STORAGE_IS_OR_NOT+{isfile:F.Msg.MIXLY_MICROBIT_PY_STORAGE_MKDIR,isdir:F.Msg.MIXLY_MICROPYTHON_SOCKET_MAKEDIRS}[t]}))}},Ii={init:function(){this.setColour(0),this.appendValueInput("SPISUB").appendField(F.Msg.CONTROLS_FOR_INPUT_WITH+"SPI").setCheck("var"),this.appendValueInput("PINSUB").appendField("CS"),this.appendValueInput("SUB").appendField(F.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE).setCheck("var"),this.appendDummyInput("").appendField(F.Msg.MIXLY_SETUP+F.Msg.LISTS_SET_INDEX_INPUT_TO).appendField(F.Msg.MIXLY_SD_CARD),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null)}},wi={init:function(){this.setColour(0),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_SD_CARD),this.appendValueInput("DIR").setCheck(String).appendField(F.Msg.MIXLY_SDCARD_MOUNT),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip()}},xi={init:function(){var e=F.Procedures.findLegalName("",this),t=new F.FieldTextInput(e,F.Procedures.rename);t.setSpellcheck(!1),this.appendDummyInput().appendField(t,"NAME").appendField("","PARAMS"),this.setMutator(new F.icons.MutatorIcon(["procedures_mutatorarg"],this)),(this.workspace.options.comments||this.workspace.options.parentWorkspace&&this.workspace.options.parentWorkspace.options.comments)&&F.Msg.PROCEDURES_DEFNORETURN_COMMENT&&this.setCommentText(F.Msg.PROCEDURES_DEFNORETURN_COMMENT),this.setStyle("procedure_blocks"),this.setTooltip(F.Msg.PROCEDURES_DEFNORETURN_TOOLTIP),this.setHelpUrl(F.Msg.PROCEDURES_DEFNORETURN_HELPURL),this.arguments_=[],this.argumentVarModels_=[],this.setStatements_(!0),this.statementConnection_=null},setStatements_:function(e){this.hasStatements_!==e&&(e?(this.appendStatementInput("STACK").appendField(F.Msg.PROCEDURES_DEFNORETURN_DO),this.getInput("RETURN")&&this.moveInputBefore("STACK","RETURN")):this.removeInput("STACK",!0),this.hasStatements_=e)},updateParams_:function(){var e="";this.arguments_.length&&(e=F.Msg.PROCEDURES_BEFORE_PARAMS+" "+this.arguments_.join(", ")),F.Events.disable();try{this.setFieldValue(e,"PARAMS")}finally{F.Events.enable()}},mutationToDom:function(e){var t=F.utils.xml.createElement("mutation");e&&t.setAttribute("name",this.getFieldValue("NAME"));for(var n=0;n"),this.appendValueInput("style").appendField(F.Msg.MIXLY_AIP_ATTR).setAlign(F.inputs.Align.RIGHT),this.appendStatementInput("DO").appendField(""),this.setInputsInline(!1),this.setPreviousStatement(!0),this.setNextStatement(!0)}},yr={init:function(){this.setColour(_r),this.appendDummyInput().appendField(F.Msg.HTML_STYLE),this.appendStatementInput("STYLE"),this.setOutput(!0)}},vr={init:function(){this.setColour(_r),this.appendDummyInput().appendField(F.Msg.HTML_FORM_CONTENT).appendField(new F.FieldDropdown([[F.Msg.HTML_TEXT,"text"],[F.Msg.HTML_EMAIL,"email"],[F.Msg.HTML_NUMBER,"number"],[F.Msg.HTML_PASSWORD,"password"],[F.Msg.HTML_CHECKBOX,"checkbox"],[F.Msg.HTML_RADIOBUTTON,"radiobutton"],[F.Msg.HTML_BUTTON,"button"],[F.Msg.HTML_COLOUR,"colour"],[F.Msg.HTML_DATE,"date"],[F.Msg.HTML_LOCALTIME,"local time"],[F.Msg.HTML_FILE,"file"],[F.Msg.HTML_HIDDEN,"hidden"],[F.Msg.HTML_IMAGE,"image"],[F.Msg.HTML_MONTH,"month"],[F.Msg.HTML_RANGE,"range"],[F.Msg.HTML_RESET,"reset"],[F.Msg.HTML_SEARCH,"search"],[F.Msg.HTML_SUBMIT,"submit"],[F.Msg.HTML_TELEPHONENUMBER,"telephone number"],[F.Msg.HTML_TIME,"time"],[F.Msg.HTML_URL,"url"],[F.Msg.HTML_WEEK,"week"]]),"LEVEL"),this.appendDummyInput().appendField(F.Msg.HTML_NAME).appendField(new F.FieldTextInput("car"),"NAME"),this.appendDummyInput().appendField(F.Msg.HTML_VALUE).appendField(new F.FieldTextInput("go"),"VALUE"),this.appendValueInput("style").appendField(F.Msg.MIXLY_AIP_ATTR).setAlign(F.inputs.Align.RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Tr={init:function(){this.setColour(_r),this.appendDummyInput().appendField(new F.FieldTextInput("property"),"KEY").appendField(":").appendField(new F.FieldTextInput("value"),"VALUE"),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Er={init:function(){this.setColour(_r),this.appendDummyInput().appendField(new F.FieldTextInput("property"),"KEY").appendField(":").appendField(new F.FieldColour("#ff0000"),"RGB_LED_COLOR"),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Ir={init:function(){this.setColour(_r),this.appendDummyInput().appendField(F.Msg.HTML_TEXT).appendField(new F.FieldTextInput("text"),"TEXT"),this.setPreviousStatement(!0),this.setNextStatement(!0)}},wr=160,xr={init:function(){this.setColour(wr),this.setPreviousStatement(!0),this.setNextStatement(!0),this.appendDummyInput().appendField("Tabular Abstraction:"),this.appendDummyInput().appendField(new F.FieldTable(""),"TEXT")}},Ar={init:function(){this.setColour(wr),this.setPreviousStatement(!0),this.setNextStatement(!0),this.appendDummyInput().appendField("Code Block:"),this.appendDummyInput().appendField(new F.FieldMultilineInput(""),"TEXT")}},$r={init:function(){this.setColour(wr),this.appendDummyInput().appendField("Code Expression:"),this.appendDummyInput().appendField(new F.FieldMultilineInput(""),"TEXT"),this.setOutput(!0)}},Or={init:function(){this.setColour(wr),this.setPreviousStatement(!0),this.setNextStatement(!0),this.appendValueInput("VALUE").appendField(""),this.setInputsInline(!1)}},Mr={init:function(){this.setColour(wr),this.appendDummyInput().appendTitle("Comment:").appendTitle(new F.FieldTextInput(""),"TEXT"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("This comment will be ignored by Python")}},Cr={init:function(){this.setColour(wr),this.appendValueInput("VALUE").appendField(F.Msg.TYPE_CHECK),this.setInputsInline(!1),this.setOutput(!0,"Type")}},Rr={init:function(){this.setColour(wr),this.itemCount_=1,this.updateShape_(),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setMutator(new F.icons.MutatorIcon(["text_print_multiple_item"],this)),this.setTooltip(F.Msg.TEXT_PRINT_TOOLTIP)},mutationToDom:function(){var e=document.createElement("mutation");return e.setAttribute("items",this.itemCount_),e},domToMutation:function(e){this.itemCount_=parseInt(e.getAttribute("items"),10),this.updateShape_()},decompose:function(e){var t=F.Block.obtain(e,"text_print_multiple_container");t.initSvg();for(var n=t.getInput("STACK").connection,i=0;i"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIMARKER_UP,"1"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIMARKER_DOWN,"2"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIMARKER_LEFT,"3"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIMARKER_RIGHT,"4"],[F.Msg.blockpy_PYLAB_PLOT_DOT_SQUARE,"s"],[F.Msg.blockpy_PYLAB_PLOT_DOT_PENTAGON,"p"],[F.Msg.blockpy_PYLAB_PLOT_DOT_STAR,"*"],[F.Msg.blockpy_PYLAB_PLOT_DOT_HEXAGON_VERTICAL,"h"],[F.Msg.blockpy_PYLAB_PLOT_DOT_HEXAGON_HORIZONTAL,"H"],[F.Msg.blockpy_PYLAB_PLOT_DOT_PLUS,"+"],[F.Msg.blockpy_PYLAB_PLOT_DOT_CROSS,"x"],[F.Msg.blockpy_PYLAB_PLOT_DOT_DIAMOND,"D"],[F.Msg.blockpy_PYLAB_PLOT_DOT_DIAMOND_SMALL,"d"],[F.Msg.blockpy_PYLAB_PLOT_DOT_VERTICAL,"|"],[F.Msg.blockpy_PYLAB_PLOT_DOT_HORIZONTAL,"_"]];this.appendValueInput("SER").setCheck("Series").appendField(F.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE),this.appendDummyInput().appendField(F.Msg.blockpy_PYLAB_PLOT),this.appendDummyInput("").appendField(F.Msg.blockpy_PYLAB_PLOT_DOT).appendField(new F.FieldDropdown(n),"DOT"),this.appendDummyInput("").appendField(F.Msg.blockpy_PYLAB_PLOT_LINE).appendField(new F.FieldDropdown(e),"LINE"),this.appendDummyInput("").appendField(F.Msg.HTML_COLOUR).appendField(new F.FieldDropdown(t),"COLOR"),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Jr={init:function(){this.setColour(jr),this.appendDummyInput().appendField(F.Msg.blockpy_PYLAB_SHOW),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Qr={init:function(){this.setColour(jr),this.appendDummyInput().appendField(F.Msg.mixpy_PL_AXES),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Zr={init:function(){this.setColour(jr),this.appendDummyInput().appendField(F.Msg.blockpy_PYLAB_LEGEND),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},es={init:function(){this.setColour(jr),this.appendDummyInput().appendField(F.Msg.blockpy_PYLAB_TITLE),this.appendValueInput("TITLE").setCheck(String),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},ts={init:function(){this.setColour(jr);var e=[[F.Msg.PYLAB_LABEL_X,"x"],[F.Msg.PYLAB_LABEL_Y,"y"]];this.appendDummyInput().appendField(F.Msg.blockpy_PYLAB_SET_LABEL).appendField(new F.FieldDropdown(e),"DIR"),this.appendValueInput("LABEL").appendField(F.Msg.blockpy_PYLAB_LABEL).setCheck(String),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},ns={init:function(){this.setColour(jr),this.appendValueInput("FROM").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.MIXLY_SPLITBYDOU).appendField(F.Msg.MIXPY_DATA_ARRAY_CREATE_FROM),this.appendValueInput("TO").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.MIXPY_DATA_ARRAY_CREATE_TO),this.appendValueInput("STEP").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.MIXLY_STEP),this.setInputsInline(!0),this.setOutput(!0),this.setTooltip(F.Msg.MIXLY_PYTHON_CONTROLS_RANGE_TOOLTIP)}},is={init:function(){this.setColour(jr);var e=[[F.Msg.mixpy_PYLAB_PLOT_BAR_PLOT,"plot"],[F.Msg.mixpy_PYLAB_PLOT_BAR_BAR,"bar"]];this.appendDummyInput().appendField(F.Msg.MIXLY_DISPLAY_DRAW).appendField(new F.FieldDropdown(e),"DIR"),this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_PLOT_X),this.appendValueInput("B").appendField(F.Msg.mixpy_PYLAB_PLOT_Y),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("DIR");return{plot:F.Msg.mixpy_PYLAB_PLOT_XY_TOOLTIP,bar:F.Msg.mixpy_PYLAB_PLOT_BAR_EASY_TOOLTIP}[e]}))}},rs={init:function(){this.setColour(jr);var e=[[F.Msg.COLOUR_RGB_BLUE,"b"],[F.Msg.COLOUR_RGB_GREEN,"g"],[F.Msg.COLOUR_RGB_RED,"r"],[F.Msg.COLOUR_CYAN,"c"],[F.Msg.COLOUR_MAGENTA,"m"],[F.Msg.COLOUR_YELLOW,"y"],[F.Msg.COLOUR_BLACK,"k"],[F.Msg.COLOUR_WHITE,"w"]],t=[[F.Msg.blockpy_PYLAB_PLOT_DOT_CIRCULAR,"."],[F.Msg.blockpy_PYLAB_PLOT_DOT_PIXEL,","],[F.Msg.blockpy_PYLAB_PLOT_DOT_LARGE_DOT,"o"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIANGLE_DOWN,"v"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIANGLE_UP,"^"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIANGLE_LEFT,"<"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIANGLE_RIGHT,">"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIMARKER_UP,"1"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIMARKER_DOWN,"2"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIMARKER_LEFT,"3"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIMARKER_RIGHT,"4"],[F.Msg.blockpy_PYLAB_PLOT_DOT_SQUARE,"s"],[F.Msg.blockpy_PYLAB_PLOT_DOT_PENTAGON,"p"],[F.Msg.blockpy_PYLAB_PLOT_DOT_STAR,"*"],[F.Msg.blockpy_PYLAB_PLOT_DOT_HEXAGON_VERTICAL,"h"],[F.Msg.blockpy_PYLAB_PLOT_DOT_HEXAGON_HORIZONTAL,"H"],[F.Msg.blockpy_PYLAB_PLOT_DOT_PLUS,"+"],[F.Msg.blockpy_PYLAB_PLOT_DOT_CROSS,"x"],[F.Msg.blockpy_PYLAB_PLOT_DOT_DIAMOND,"D"],[F.Msg.blockpy_PYLAB_PLOT_DOT_DIAMOND_SMALL,"d"],[F.Msg.blockpy_PYLAB_PLOT_DOT_VERTICAL,"|"],[F.Msg.blockpy_PYLAB_PLOT_DOT_HORIZONTAL,"_"]];this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_SCATTER).appendField(F.Msg.mixpy_PYLAB_PLOT_X),this.appendValueInput("B").appendField(F.Msg.mixpy_PYLAB_PLOT_Y),this.appendValueInput("S").appendField(F.Msg.MIXLY_MICROBIT_JS_NUMBER),this.appendDummyInput("").appendField(F.Msg.blockpy_PYLAB_PLOT_DOT).appendField(new F.FieldDropdown(t),"DOT"),this.appendDummyInput("").appendField(F.Msg.HTML_COLOUR).appendField(new F.FieldDropdown(e),"COLOR"),this.appendValueInput("TAG").setCheck(String).appendField(F.Msg.mixpy_PYLAB_TICKS_TAG),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},ss={init:function(){this.setColour(jr);var e=[[F.Msg.blockpy_PYLAB_PLOT_LINE_SOLID,"-"],[F.Msg.blockpy_PYLAB_PLOT_LINE_DOTTED,"--"],[F.Msg.blockpy_PYLAB_PLOT_LINE_CHAIN,"-."],[F.Msg.blockpy_PYLAB_PLOT_LINE_POINT_DOTTED,":"],[F.Msg.MIXLY_MICROBIT_JS_INOUT_PULL_NONE,""]],t=[[F.Msg.COLOUR_RGB_BLUE,"b"],[F.Msg.COLOUR_RGB_GREEN,"g"],[F.Msg.COLOUR_RGB_RED,"r"],[F.Msg.COLOUR_CYAN,"c"],[F.Msg.COLOUR_MAGENTA,"m"],[F.Msg.COLOUR_YELLOW,"y"],[F.Msg.COLOUR_BLACK,"k"],[F.Msg.COLOUR_WHITE,"w"]],n=[[F.Msg.blockpy_PYLAB_PLOT_DOT_CIRCULAR,"."],[F.Msg.blockpy_PYLAB_PLOT_DOT_PIXEL,","],[F.Msg.blockpy_PYLAB_PLOT_DOT_LARGE_DOT,"o"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIANGLE_DOWN,"v"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIANGLE_UP,"^"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIANGLE_LEFT,"<"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIANGLE_RIGHT,">"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIMARKER_UP,"1"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIMARKER_DOWN,"2"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIMARKER_LEFT,"3"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIMARKER_RIGHT,"4"],[F.Msg.blockpy_PYLAB_PLOT_DOT_SQUARE,"s"],[F.Msg.blockpy_PYLAB_PLOT_DOT_PENTAGON,"p"],[F.Msg.blockpy_PYLAB_PLOT_DOT_STAR,"*"],[F.Msg.blockpy_PYLAB_PLOT_DOT_HEXAGON_VERTICAL,"h"],[F.Msg.blockpy_PYLAB_PLOT_DOT_HEXAGON_HORIZONTAL,"H"],[F.Msg.blockpy_PYLAB_PLOT_DOT_PLUS,"+"],[F.Msg.blockpy_PYLAB_PLOT_DOT_CROSS,"x"],[F.Msg.blockpy_PYLAB_PLOT_DOT_DIAMOND,"D"],[F.Msg.blockpy_PYLAB_PLOT_DOT_DIAMOND_SMALL,"d"],[F.Msg.blockpy_PYLAB_PLOT_DOT_VERTICAL,"|"],[F.Msg.blockpy_PYLAB_PLOT_DOT_HORIZONTAL,"_"]];this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_PLOT_XY).appendField(F.Msg.mixpy_PYLAB_PLOT_X),this.appendValueInput("B").appendField(F.Msg.mixpy_PYLAB_PLOT_Y),this.appendDummyInput("").appendField(F.Msg.blockpy_PYLAB_PLOT_DOT).appendField(new F.FieldDropdown(n),"DOT"),this.appendDummyInput("").appendField(F.Msg.blockpy_PYLAB_PLOT_LINE).appendField(new F.FieldDropdown(e),"LINE"),this.appendDummyInput("").appendField(F.Msg.HTML_COLOUR).appendField(new F.FieldDropdown(t),"COLOR"),this.appendValueInput("TAG").setCheck(String).appendField(F.Msg.mixpy_PYLAB_TICKS_TAG),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.mixpy_PYLAB_PLOT_XY_TOOLTIP)}},os={init:function(){this.setColour(jr);var e=[[F.Msg.MIXLY_TURTLE_WRITE_ALIGN_CENTER,"center"],[F.Msg.AILGN_EDGE,"edge"]];this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_BAR).appendField(F.Msg.mixpy_PYLAB_PLOT_X),this.appendValueInput("B").appendField(F.Msg.mixpy_PYLAB_PLOT_Y),this.appendValueInput("WIDTH").setCheck(Number).appendField(F.Msg.MIXLY_WIDTH),this.appendDummyInput("").appendField(F.Msg.mixpy_PYLAB_BAR_ALIGN).appendField(new F.FieldDropdown(e),"ALIGN"),this.appendDummyInput().appendField(F.Msg.HTML_COLOUR).appendField(new F.FieldColour("#0000ff"),"COLOR"),this.appendValueInput("TAG").setCheck(String).appendField(F.Msg.mixpy_PYLAB_TICKS_TAG),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.mixpy_PYLAB_PLOT_XY_TOOLTIP)}},as={init:function(){this.setColour(jr);var e=[[F.Msg.mixpy_PL_PIE_SHADOW_N,"False"],[F.Msg.mixpy_PL_PIE_SHADOW_Y,"True"]],t=[[F.Msg.mixpy_PL_PIE_SHADOW_N,"None"],[F.Msg.mixpy_PYLAB_PIE_AUTOPCT_Z,"%.0f%%"],[F.Msg.mixpy_PYLAB_PIE_AUTOPCT_O,"%.1f%%"],[F.Msg.mixpy_PYLAB_PIE_AUTOPCT_T,"%.2f%%"]];this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_PIE).appendField(F.Msg.COLOUR_BLEND_RATIO),this.appendValueInput("B").appendField(F.Msg.mixpy_PYLAB_TICKS_TAG),this.appendValueInput("EXPLODE").appendField(F.Msg.mixpy_PYLAB_PIE_EXPLODE),this.appendDummyInput("").appendField(F.Msg.mixpy_PYLAB_PIE_AUTOPCT).appendField(new F.FieldDropdown(t),"autopct"),this.appendDummyInput("").appendField(F.Msg.mixpy_PYLAB_PIE_SHADOW).appendField(new F.FieldDropdown(e),"SHADOW"),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.mixpy_PYLAB_PLOT_XY_TOOLTIP)}},ls={init:function(){this.setColour(jr),this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_HIST).appendField(F.Msg.MIXLY_SD_DATA),this.appendValueInput("B").appendField(F.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},us={init:function(){this.setColour(jr);var e=[[F.Msg.PYLAB_LABEL_X,"x"],[F.Msg.PYLAB_LABEL_Y,"y"]];this.appendDummyInput().appendField(F.Msg.MIXLY_SETTING).appendField(new F.FieldDropdown(e),"DIR"),this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_TICKS).appendField(F.Msg.MIXLY_MICROBIT_JS_I2C_VALUE),this.appendValueInput("B").appendField(F.Msg.mixpy_PYLAB_TICKS_TAG),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.mixpy_PYLAB_TICKS_TOOLTIP)}},cs={init:function(){var e=[["sin","sin"],["cos","cos"],["tan","tan"],["arcsin","arcsin"],["arccos","arccos"],["arctan","arctan"],[F.Msg.LANG_MATH_TO_ROUND,"round"],[F.Msg.LANG_MATH_TO_CEIL,"ceil"],[F.Msg.LANG_MATH_TO_FLOOR,"floor"]];this.setColour(jr),this.setOutput(!0),this.setInputsInline(!0),this.appendDummyInput().appendField(F.Msg.mixpy_NUMPY_TRIG),this.appendValueInput("NUM").setCheck(Number).appendField(new F.FieldDropdown(e),"OP"),this.setTooltip(F.Msg.mixpy_NUMPY_TRIG_TOOLTIP)}},ps={init:function(){this.setColour(jr),this.appendValueInput("VET").setCheck(Number).appendField(F.Msg.mixpy_SUBPLOT).appendField(F.Msg.mixpy_SUBPLOT_VERTICLE),this.appendValueInput("HOR").setCheck(Number).appendField(F.Msg.mixpy_SUBPLOT_HORIZEN),this.appendValueInput("NUM").setCheck(Number).appendField(F.Msg.mixpy_SUBPLOT_NUM),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.MIXLY_PYTHON_CONTROLS_RANGE_TOOLTIP)}},hs={init:function(){this.setColour(jr),this.appendValueInput("FILENAME").appendField(F.Msg.MIXPY_PANDAS_READ_CSV),this.appendDummyInput().appendField(new F.FieldDropdown([[F.Msg.mixpy_PANDAS_READCSV_HEADER_Y,"0"],[F.Msg.mixpy_PANDAS_READCSV_HEADER_N,"None"]]),"MODE"),this.appendDummyInput().appendField(F.Msg.mixpy_PANDAS_READCSV_TITLE),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(F.Msg.mixpy_PANDAS_READCSV_TOOLTIP)},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(e,t){F.Names.equals(e,this.getFieldValue("VAR"))&&this.setTitleValue(t,"VAR")}},ds={init:function(){this.setColour(jr),this.appendValueInput("DICT").setCheck("Dict"),this.appendValueInput("KEY").appendField(F.Msg.mixpy_DATAFRAME_GET),this.appendDummyInput("").appendField(F.Msg.mixpy_DATAFRAME_GET_INDEX).appendField(new F.FieldDropdown([[F.Msg.DATAFRAME_COLUMN,"column"],[F.Msg.DATAFRAME_RAW,"raw"]]),"MODE"),this.setOutput(!0),this.setTooltip(F.Msg.mixpy_DATAFRAME_GET_TOOLTIP)}},fs={init:function(){this.setColour(jr),this.appendValueInput("FILE").setCheck(String).appendField(F.Msg.mixpy_PL_SAVEFIG),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setOutput(!1),this.setTooltip(F.Msg.mixpy_PL_SAVEFIG_TOOLTIP)}},_s={init:function(){this.setColour(jr);var e=[[F.Msg.TEXT_TRIM_LEFT,"right"],[F.Msg.mixpy_PL_TEXT_CENTER,"center"],[F.Msg.TEXT_TRIM_RIGHT,"left"]],t=[[F.Msg.mixpy_PL_TEXT_TOP,"bottom"],[F.Msg.mixpy_PL_TEXT_CENTER,"center"],[F.Msg.mixpy_PL_TEXT_BOTTOM,"top"]];this.appendValueInput("VET").setCheck(Number).appendField(F.Msg.MIXLY_SETTING).appendField(F.Msg.mixpy_PL_TEXT_X),this.appendValueInput("HOR").setCheck(Number).appendField(F.Msg.mixpy_PL_TEXT_Y),this.appendValueInput("NUM").setCheck(Number).appendField(F.Msg.mixpy_PL_TEXT_TAG),this.appendDummyInput("").appendField(F.Msg.mixpy_PL_TEXT_HOR).appendField(new F.FieldDropdown(e),"HALIGN"),this.appendDummyInput("").appendField(F.Msg.mixpy_PL_TEXT_VER).appendField(new F.FieldDropdown(t),"VALIGN"),this.appendValueInput("FONTNUM").setCheck(Number).appendField(F.Msg.MIXLY_TURTLE_WRITE_FONT_NUM),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.mixpy_PL_TEXT_TOOLTIP)}},ms={init:function(){this.setColour(jr),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_TOARRAY),this.setOutput(!0,"List"),this.setTooltip(F.Msg.MIXLY_PYTHON_TOOLTIP_TOARRAY)}},bs={init:function(){this.setColour(jr),this.appendValueInput("SER").setCheck("Series").appendField(F.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE),this.appendDummyInput().appendField(F.Msg.blockpy_PYLAB_PLOT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},gs={init:function(){this.setColour(jr);var e=[[F.Msg.blockpy_PYLAB_PLOT_LINE_SOLID,"-"],[F.Msg.blockpy_PYLAB_PLOT_LINE_DOTTED,"--"],[F.Msg.blockpy_PYLAB_PLOT_LINE_CHAIN,"-."],[F.Msg.blockpy_PYLAB_PLOT_LINE_POINT_DOTTED,":"],[F.Msg.MIXLY_MICROBIT_JS_INOUT_PULL_NONE,""]],t=[[F.Msg.COLOUR_RGB_BLUE,"b"],[F.Msg.COLOUR_RGB_GREEN,"g"],[F.Msg.COLOUR_RGB_RED,"r"],[F.Msg.COLOUR_CYAN,"c"],[F.Msg.COLOUR_MAGENTA,"m"],[F.Msg.COLOUR_YELLOW,"y"],[F.Msg.COLOUR_BLACK,"k"],[F.Msg.COLOUR_WHITE,"w"]],n=[[F.Msg.blockpy_PYLAB_PLOT_DOT_CIRCULAR,"."],[F.Msg.blockpy_PYLAB_PLOT_DOT_PIXEL,","],[F.Msg.blockpy_PYLAB_PLOT_DOT_LARGE_DOT,"o"]];this.appendValueInput("SER").setCheck("Series").appendField(F.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE),this.appendDummyInput().appendField(F.Msg.blockpy_PYLAB_PLOT),this.appendDummyInput("").appendField(F.Msg.blockpy_PYLAB_PLOT_DOT).appendField(new F.FieldDropdown(n),"DOT"),this.appendDummyInput("").appendField(F.Msg.blockpy_PYLAB_PLOT_LINE).appendField(new F.FieldDropdown(e),"LINE"),this.appendDummyInput("").appendField(F.Msg.HTML_COLOUR).appendField(new F.FieldDropdown(t),"COLOR"),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Ss={init:function(){this.setColour(jr),this.appendDummyInput().appendField(F.Msg.blockpy_PYLAB_SHOW),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},ks={init:function(){this.setColour(jr),this.appendDummyInput().appendField(F.Msg.mixpy_PL_AXES),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},ys={init:function(){this.setColour(jr),this.appendDummyInput().appendField(F.Msg.blockpy_PYLAB_LEGEND),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},vs={init:function(){this.setColour(jr),this.appendDummyInput().appendField(F.Msg.blockpy_PYLAB_TITLE),this.appendValueInput("TITLE").setCheck(String),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Ts={init:function(){this.setColour(jr);var e=[[F.Msg.PYLAB_LABEL_X,"x"],[F.Msg.PYLAB_LABEL_Y,"y"]];this.appendDummyInput().appendField(F.Msg.blockpy_PYLAB_SET_LABEL).appendField(new F.FieldDropdown(e),"DIR"),this.appendValueInput("LABEL").appendField(F.Msg.blockpy_PYLAB_LABEL).setCheck(String),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Es={init:function(){this.setColour(jr);var e=[[F.Msg.mixpy_PYLAB_PLOT_BAR_PLOT,"plot"],[F.Msg.mixpy_PYLAB_PLOT_BAR_BAR,"bar"]];this.appendDummyInput().appendField(F.Msg.MIXLY_DISPLAY_DRAW).appendField(new F.FieldDropdown(e),"DIR"),this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_PLOT_X),this.appendValueInput("B").appendField(F.Msg.mixpy_PYLAB_PLOT_Y),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("DIR");return{plot:F.Msg.mixpy_PYLAB_PLOT_XY_TOOLTIP,bar:F.Msg.mixpy_PYLAB_PLOT_BAR_EASY_TOOLTIP}[e]}))}},Is={init:function(){this.setColour(jr);var e=[[F.Msg.blockpy_PYLAB_PLOT_DOT_CIRCULAR,"."],[F.Msg.blockpy_PYLAB_PLOT_DOT_PIXEL,","],[F.Msg.blockpy_PYLAB_PLOT_DOT_LARGE_DOT,"o"]];this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_SCATTER).appendField(F.Msg.mixpy_PYLAB_PLOT_X),this.appendValueInput("B").appendField(F.Msg.mixpy_PYLAB_PLOT_Y),this.appendValueInput("S").appendField(F.Msg.MIXLY_MICROBIT_JS_NUMBER),this.appendDummyInput("").appendField(F.Msg.blockpy_PYLAB_PLOT_DOT).appendField(new F.FieldDropdown(e),"DOT"),this.appendDummyInput().appendField(F.Msg.HTML_COLOUR).appendField(new F.FieldColour("#0000ff"),"COLOR"),this.appendValueInput("TAG").setCheck(String).appendField(F.Msg.mixpy_PYLAB_TICKS_TAG),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},ws={init:function(){this.setColour(jr);var e=[[F.Msg.blockpy_PYLAB_PLOT_LINE_SOLID,"-"],[F.Msg.blockpy_PYLAB_PLOT_LINE_DOTTED,"--"],[F.Msg.blockpy_PYLAB_PLOT_LINE_CHAIN,"-."],[F.Msg.blockpy_PYLAB_PLOT_LINE_POINT_DOTTED,":"],[F.Msg.MIXLY_MICROBIT_JS_INOUT_PULL_NONE,""]],t=[[F.Msg.COLOUR_RGB_BLUE,"b"],[F.Msg.COLOUR_RGB_GREEN,"g"],[F.Msg.COLOUR_RGB_RED,"r"],[F.Msg.COLOUR_CYAN,"c"],[F.Msg.COLOUR_MAGENTA,"m"],[F.Msg.COLOUR_YELLOW,"y"],[F.Msg.COLOUR_BLACK,"k"],[F.Msg.COLOUR_WHITE,"w"]],n=[[F.Msg.blockpy_PYLAB_PLOT_DOT_CIRCULAR,"."],[F.Msg.blockpy_PYLAB_PLOT_DOT_PIXEL,","],[F.Msg.blockpy_PYLAB_PLOT_DOT_LARGE_DOT,"o"]];this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_PLOT_XY).appendField(F.Msg.mixpy_PYLAB_PLOT_X),this.appendValueInput("B").appendField(F.Msg.mixpy_PYLAB_PLOT_Y),this.appendDummyInput("").appendField(F.Msg.blockpy_PYLAB_PLOT_DOT).appendField(new F.FieldDropdown(n),"DOT"),this.appendDummyInput("").appendField(F.Msg.blockpy_PYLAB_PLOT_LINE).appendField(new F.FieldDropdown(e),"LINE"),this.appendDummyInput("").appendField(F.Msg.HTML_COLOUR).appendField(new F.FieldDropdown(t),"COLOR"),this.appendValueInput("TAG").setCheck(String).appendField(F.Msg.mixpy_PYLAB_TICKS_TAG),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.mixpy_PYLAB_PLOT_XY_TOOLTIP)}},xs={init:function(){this.setColour(jr);var e=[[F.Msg.MIXLY_TURTLE_WRITE_ALIGN_CENTER,"center"],[F.Msg.AILGN_EDGE,"edge"]];this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_BAR).appendField(F.Msg.mixpy_PYLAB_PLOT_X),this.appendValueInput("B").appendField(F.Msg.mixpy_PYLAB_PLOT_Y),this.appendValueInput("WIDTH").setCheck(Number).appendField(F.Msg.MIXLY_WIDTH),this.appendDummyInput("").appendField(F.Msg.mixpy_PYLAB_BAR_ALIGN).appendField(new F.FieldDropdown(e),"ALIGN"),this.appendDummyInput().appendField(F.Msg.HTML_COLOUR).appendField(new F.FieldColour("#0000ff"),"COLOR"),this.appendValueInput("TAG").setCheck(String).appendField(F.Msg.mixpy_PYLAB_TICKS_TAG),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.mixpy_PYLAB_PLOT_XY_TOOLTIP)}},As={init:function(){this.setColour(jr);var e=[[F.Msg.mixpy_PL_PIE_SHADOW_N,"False"],[F.Msg.mixpy_PL_PIE_SHADOW_Y,"True"]],t=[[F.Msg.mixpy_PL_PIE_SHADOW_N,"None"],[F.Msg.mixpy_PYLAB_PIE_AUTOPCT_Z,"%.0f%%"],[F.Msg.mixpy_PYLAB_PIE_AUTOPCT_O,"%.1f%%"],[F.Msg.mixpy_PYLAB_PIE_AUTOPCT_T,"%.2f%%"]];this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_PIE).appendField(F.Msg.COLOUR_BLEND_RATIO),this.appendValueInput("B").appendField(F.Msg.mixpy_PYLAB_TICKS_TAG),this.appendValueInput("EXPLODE").appendField(F.Msg.mixpy_PYLAB_PIE_EXPLODE),this.appendDummyInput("").appendField(F.Msg.mixpy_PYLAB_PIE_AUTOPCT).appendField(new F.FieldDropdown(t),"autopct"),this.appendDummyInput("").appendField(F.Msg.mixpy_PYLAB_PIE_SHADOW).appendField(new F.FieldDropdown(e),"SHADOW"),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.mixpy_PYLAB_PLOT_XY_TOOLTIP)}},$s={init:function(){this.setColour(jr),this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_HIST).appendField(F.Msg.MIXLY_SD_DATA),this.appendValueInput("B").appendField(F.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Os={init:function(){this.setColour(jr);var e=[[F.Msg.PYLAB_LABEL_X,"x"],[F.Msg.PYLAB_LABEL_Y,"y"]];this.appendDummyInput().appendField(F.Msg.MIXLY_SETTING).appendField(new F.FieldDropdown(e),"DIR"),this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_TICKS).appendField(F.Msg.MIXLY_MICROBIT_JS_I2C_VALUE),this.appendValueInput("B").appendField(F.Msg.mixpy_PYLAB_TICKS_TAG),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.mixpy_PYLAB_TICKS_TOOLTIP)}},Ms={init:function(){this.setColour(jr),this.appendValueInput("VET").setCheck(Number).appendField(F.Msg.mixpy_SUBPLOT).appendField(F.Msg.mixpy_SUBPLOT_VERTICLE),this.appendValueInput("HOR").setCheck(Number).appendField(F.Msg.mixpy_SUBPLOT_HORIZEN),this.appendValueInput("NUM").setCheck(Number).appendField(F.Msg.mixpy_SUBPLOT_NUM),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.MIXLY_PYTHON_CONTROLS_RANGE_TOOLTIP)}},Cs={init:function(){this.setColour(jr),this.appendDummyInput("").appendField(F.Msg.mixpy_PL_SAVEFIG),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setOutput(!1),this.setTooltip(F.Msg.mixpy_PL_SAVEFIG_TOOLTIP)}},Rs={init:function(){this.setColour(jr);var e=[[F.Msg.TEXT_TRIM_LEFT,"right"],[F.Msg.mixpy_PL_TEXT_CENTER,"center"],[F.Msg.TEXT_TRIM_RIGHT,"left"]],t=[[F.Msg.mixpy_PL_TEXT_TOP,"bottom"],[F.Msg.mixpy_PL_TEXT_CENTER,"center"],[F.Msg.mixpy_PL_TEXT_BOTTOM,"top"]];this.appendValueInput("VET").setCheck(Number).appendField(F.Msg.MIXLY_SETTING).appendField(F.Msg.mixpy_PL_TEXT_X),this.appendValueInput("HOR").setCheck(Number).appendField(F.Msg.mixpy_PL_TEXT_Y),this.appendValueInput("NUM").setCheck(Number).appendField(F.Msg.mixpy_PL_TEXT_TAG),this.appendDummyInput("").appendField(F.Msg.mixpy_PL_TEXT_HOR).appendField(new F.FieldDropdown(e),"HALIGN"),this.appendDummyInput("").appendField(F.Msg.mixpy_PL_TEXT_VER).appendField(new F.FieldDropdown(t),"VALIGN"),this.appendValueInput("FONTNUM").setCheck(Number).appendField(F.Msg.MIXLY_TURTLE_WRITE_FONT_NUM),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.mixpy_PL_TEXT_TOOLTIP)}},Ns=20,Ls={init:function(){this.setColour(Ns),this.appendValueInput("VAR").appendField(F.Msg.blockpy_inout_raw_input).setCheck(String),this.setOutput(!0),this.setTooltip(F.Msg.INOUT_input_TOOLTIP)}},Ds={init:function(){this.setColour(Ns),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_SERIAL_PRINTLN),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(F.Msg.BLOCKPY_PRINT_TOOLTIP)}},Ps={init:function(){this.setColour(Ns),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_SERIAL_PRINT),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(F.Msg.TEXT_PRINT_TOOLTIP)}},Fs={init:function(){this.setColour(Ns),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_SERIAL_PRINT),this.appendValueInput("END").appendField(F.Msg.MIXLY_ENDSWITH),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(F.Msg.MIXLY_PYTHON_INOUT_PRINT_END_TOOLTIP)}},Bs={init:function(){var e=[[F.Msg.LANG_MATH_STRING,"str"],[F.Msg.LANG_MATH_INT,"int"],[F.Msg.LANG_MATH_FLOAT,"float"]];this.setColour(Ns),this.appendDummyInput("").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_GET).appendField(new F.FieldDropdown(e),"DIR"),this.appendValueInput("VAR").appendField(F.Msg.PROCEDURES_MUTATORCONTAINER_TITLE).setCheck(String),this.setInputsInline(!0),this.setOutput(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("DIR");return{str:F.Msg.MIXLY_MIXPY_INOUT_STR_INPUT_TOOLTIP,int:F.Msg.MIXLY_MIXPY_INOUT_INT_INPUT_TOOLTIP,float:F.Msg.MIXLY_MIXPY_INOUT_FLOAT_INPUT_TOOLTIP}[e]}))}},js={init:function(){this.setColour(Ns),this.itemCount_=2,this.updateShape_(),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setInputsInline(!0),this.setMutator(new F.icons.MutatorIcon(["inout_print_item"],this)),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.MIXLY_MIXPY_INOUT_PRINT_MANY_TOOLTIP)},mutationToDom:function(){var e=document.createElement("mutation");return e.setAttribute("items",this.itemCount_),e},domToMutation:function(e){this.itemCount_=parseInt(e.getAttribute("items"),10),this.updateShape_()},decompose:function(e){var t=e.newBlock("inout_print_container");t.initSvg();for(var n=t.getInput("STACK").connection,i=0;i0?e:[["'无可用地图'","'无可用地图'"]]}},oa={init:function(){this.appendValueInput("pathtype").setCheck(null).appendField("设置路径样式为"),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setColour(290),this.setTooltip(""),this.setHelpUrl("")}},aa={init:function(){this.imgArr=this.getLocalImg(),this.appendDummyInput().appendField(new F.FieldDropdown(this.getLocalImg()),"type"),this.setOutput(!0,null),this.setColour(290),this.setTooltip(""),this.setHelpUrl("")},onchange:function(){let e=this.getFieldValue("type"),t=this.imgArr;this.haveNewSrc(this.imgArr,t)&&(this.imgArr=t,this.getField("type").menuGenerator_=this.imgArr,this.checkSrc(e,this.imgArr)?this.setFieldValue(e,"type"):this.setFieldValue(this.imgArr[0][1],"type"))},haveNewSrc:function(e,t){if(e.length!==t.length)return!0;for(var n=0;n0?e:[["'无可用路径'","'无可用路径'"]]}},la={init:function(){this.setColour(290),this.setPreviousStatement(!0),this.setNextStatement(!0),this.appendValueInput("posx").setCheck(null).appendField("在("),this.appendDummyInput().appendField(","),this.appendValueInput("posy").setCheck(null).appendField(""),this.appendDummyInput().appendField(")放置").appendField(new F.FieldDropdown([["障碍","'wall'"],["金币","'coin'"]]),"item"),this.setTooltip("")}},ua={init:function(){this.imgArr=this.getLocalImg(),this.appendDummyInput().appendField(new F.FieldDropdown(this.getLocalImg()),"type"),this.setOutput(!0,null),this.setColour(290),this.setTooltip(""),this.setHelpUrl("")},onchange:function(){let e=this.getFieldValue("type"),t=this.imgArr;this.haveNewSrc(this.imgArr,t)&&(this.imgArr=t,this.getField("type").menuGenerator_=this.imgArr,this.checkSrc(e,this.imgArr)?this.setFieldValue(e,"type"):this.setFieldValue(this.imgArr[0][1],"type"))},haveNewSrc:function(e,t){if(e.length!==t.length)return!0;for(var n=0;n0?e:[["'无可用角色'","'无可用角色'"]]}},ca={init:function(){this.setColour(290),this.appendValueInput("character").setCheck(null).appendField("初始化角色为"),this.appendDummyInput().appendField("面朝").appendField(new F.FieldDropdown([["北","0"],["南","2"],["西","3"],["东","1"]]),"direction"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},pa={init:function(){this.setColour(290),this.appendDummyInput().appendField("获取⻆⾊所获分数"),this.setOutput(!0,Number),this.setTooltip("")}},ha={init:function(){this.appendDummyInput().appendField(new F.FieldDropdown([["北","0"],["南","2"],["西","3"],["东","1"]]),"direction"),this.appendDummyInput().appendField("侧有障碍"),this.setInputsInline(!0),this.setOutput(!0,null),this.setColour(290),this.setTooltip(""),this.setHelpUrl("")}},da={init:function(){this.appendDummyInput().appendField("随机生成小车油量"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setColour(290),this.setTooltip("")}},fa={init:function(){this.appendDummyInput().appendField("需要加油"),this.setOutput(!0,null),this.setColour(290),this.setTooltip(""),this.setHelpUrl("")}},_a={init:function(){this.appendDummyInput().appendField("信号灯为绿灯"),this.setOutput(!0,null),this.setColour(290),this.setTooltip(""),this.setHelpUrl("")}},ma={init:function(){this.appendDummyInput().appendField("信号灯为红灯"),this.setOutput(!0,null),this.setColour(290),this.setTooltip(""),this.setHelpUrl("")}},ba={init:function(){this.appendDummyInput().appendField("进加油站加油"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setColour(290),this.setTooltip("")}},ga={init:function(){this.appendDummyInput().appendField("检查程序循环数目是否正确"),this.setPreviousStatement(!0),this.setColour(290),this.setTooltip("")}},Sa=function(e,t){return[t.variableDB_.getName(this.getFieldValue("VAR"),F.Variables.NAME_TYPE),t.ORDER_ATOMIC]},ka=function(e,t){if(""==this.getFieldValue("VAR"))return" = None\n";var n=t.valueToCode(this,"VALUE",t.ORDER_ASSIGNMENT)||"None";return t.variableDB_.getName(this.getFieldValue("VAR"),F.Variables.NAME_TYPE)+" = "+n+"\n"},ya=function(e,t){var n=this.getFieldValue("OP"),i=t.valueToCode(this,"MYVALUE",t.ORDER_ATOMIC)||"None";if("bytes"==n)var r=n+"("+i+',"UTF-8")';else r=n+"("+i+")";return[r,t.ORDER_ATOMIC]},va=function(e,t){return"global "+(t.valueToCode(this,"VAR",t.ORDER_ATOMIC)||"None")+"\n"},Ta=function(e,t){return["type("+(t.valueToCode(this,"DATA",t.ORDER_ATOMIC)||"None")+")",t.ORDER_ATOMIC]},Ea=function(e,t){return[this.getFieldValue("type"),t.ORDER_ATOMIC]},Ia=function(e,t){for(var n=new Array(this.itemCount_),i=0;i= stop:"," yield start"," start -= abs(step)"])};if(e=function(e,t,n){return"("+e+" <= "+t+") and "+l()+"("+e+", "+t+", "+n+") or "+u()+"("+e+", "+t+", "+n+")"},F.isNumber(i)&&F.isNumber(r)&&F.isNumber(s))i=parseFloat(i),r=parseFloat(r),s=Math.abs(parseFloat(s)),0==i%1&&0==r%1&&0==s%1?(i<=r?(r++,e=0==i&&1==s?r:i+", "+r,1!=s&&(e+=", "+s)):e=i+", "+--r+", -"+s,e="range("+e+")"):(e=i",GTE:">="};const oc=function(e,t){var n=this.getFieldValue("OP"),i="&&"==n?t.ORDER_LOGICAL_AND:t.ORDER_LOGICAL_OR,r=t.valueToCode(this,"A",i)||"False",s=t.valueToCode(this,"B",i)||"False";if("AND"==n)var o=r+" and "+s;else if("OR"==n)o=r+" or "+s;else if("NOR"==n)o="not("+r+"^"+s+")";else o=r+"^"+s;return[o,i]},ac=function(e,t){var n=t.ORDER_UNARY_PREFIX;return["not "+(t.valueToCode(this,"BOOL",n)||"False"),n]},lc=function(e,t){return["TRUE"==this.getFieldValue("BOOL")?"True":"False",t.ORDER_ATOMIC]},uc=function(e,t){return["None",t.ORDER_ATOMIC]},cc=function(e,t){var n=t.valueToCode(this,"A",t.ORDER_ATOMIC)||"False";return["("+(t.valueToCode(this,"B",t.ORDER_ATOMIC)||"False")+" if "+n+" else "+(t.valueToCode(this,"C",t.ORDER_ATOMIC)||"False")+")",t.ORDER_ATOMIC]},pc=function(e,t){var n=t.valueToCode(this,"A",t.ORDER_ATOMIC)||"''",i=t.valueToCode(this,"B",t.ORDER_ATOMIC)||"''";return[n+" "+this.getFieldValue("BOOL")+" "+i,t.ORDER_ATOMIC]},hc=function(e,t){var n=t.valueToCode(this,"A",t.ORDER_ATOMIC)||"''",i=t.valueToCode(this,"B",t.ORDER_ATOMIC)||"''";return[n+" "+this.getFieldValue("BOOL")+" "+i,t.ORDER_ATOMIC]},dc=function(e,t){return["bool("+(t.valueToCode(this,"VAR",t.ORDER_ATOMIC)||"0")+")",t.ORDER_ATOMIC]},fc=function(e,t){return t.definitions_.import_os="import os","os.startfile("+t.valueToCode(this,"fn",t.ORDER_ATOMIC)+")\n"},_c=function(e,t){return t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+" = open("+t.valueToCode(this,"FILENAME",t.ORDER_ATOMIC)+", '"+this.getFieldValue("MODE")+"')\n"},mc=function(e,t){return["open("+t.valueToCode(this,"FILENAME",t.ORDER_ATOMIC)+", '"+this.getFieldValue("MODE")+"')",t.ORDER_ATOMIC]},bc=function(e,t){return["open("+t.valueToCode(this,"FILENAME",t.ORDER_ATOMIC)+", '"+this.getFieldValue("MODE")+"', encoding=\""+this.getFieldValue("CODE")+'")',t.ORDER_ATOMIC]},gc=function(e,t){var n=t.valueToCode(this,"data",t.ORDER_ATOMIC);return t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+".write("+n+")\n"},Sc=function(e,t){var n=this.getFieldValue("MODE");return[t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+"."+n+"()",t.ORDER_ATOMIC]},kc=function(e,t){var n=this.getFieldValue("MODE");return[t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+"."+n+"("+t.valueToCode(this,"SIZE",t.ORDER_ATOMIC)+")",t.ORDER_ATOMIC]},yc=function(e,t){return[t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+".readline("+t.valueToCode(this,"SIZE",t.ORDER_ATOMIC)+")",t.ORDER_ATOMIC]},vc=function(e,t){return[t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+".writable()",t.ORDER_ATOMIC]},Tc=function(e,t){return[t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+".name()",t.ORDER_ATOMIC]},Ec=function(e,t){return t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+".close()\n"},Ic=function(e,t){t.definitions_.import_os="import os";return["os.listdir()",t.ORDER_ATOMIC]},wc=function(e,t){return t.definitions_.import_os="import os","os."+this.getFieldValue("MODE")+"("+t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+")\n"},xc=function(e,t){return t.definitions_.import_os="import os",["os.path.getsize("+t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+")",t.ORDER_ATOMIC]},Ac=function(e,t){return[t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+".tell()",t.ORDER_ATOMIC]},$c=function(e,t){var n=this.getFieldValue("MODE"),i=0;return i="start"==n?0:"current"==n?1:2,t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+".seek("+t.valueToCode(this,"SIZE",t.ORDER_ATOMIC)+","+i+")\n"},Oc=function(e,t){return t.definitions_.import_os="import os","os.chdir("+t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+")\n"},Mc=function(e,t){t.definitions_.import_os="import os";return["os.getcwd()",t.ORDER_ATOMIC]},Cc=function(e,t){return t.definitions_.import_os="import os","os."+this.getFieldValue("MODE")+"("+t.valueToCode(this,"PATH",t.ORDER_ATOMIC)+")\n"},Rc=function(e,t){return t.definitions_.import_os="import os","os.rename("+t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+","+t.valueToCode(this,"NEWFILE",t.ORDER_ATOMIC)+")\n"},Nc=function(e,t){t.definitions_.import_os="import os";var n=t.valueToCode(this,"FILE",t.ORDER_ATOMIC);return["os."+this.getFieldValue("MODE")+"("+n+")",t.ORDER_ATOMIC]},Lc=function(e,t){return t.definitions_.import_os="import os",t.definitions_.import_sdcard="import sdcard",t.valueToCode(this,"SUB",t.ORDER_ATOMIC)+" = sdcard.SDCard("+t.valueToCode(this,"SPISUB",t.ORDER_ATOMIC)+","+t.valueToCode(this,"PINSUB",t.ORDER_ATOMIC)+")\n"},Dc=function(e,t){return t.definitions_.import_os="import os",t.definitions_.import_sdcard="import sdcard","os.mount("+t.valueToCode(this,"VAR",t.ORDER_ATOMIC)+","+t.valueToCode(this,"DIR",t.ORDER_ATOMIC)+")\n"},Pc=function(e,t){var n=t.variableDB_.getName(this.getFieldValue("NAME"),F.Procedures.NAME_TYPE),i=(this.getInput("STACK")&&t.statementToCode(this,"STACK"))??" pass\n";t.INFINITE_LOOP_TRAP&&(i=t.INFINITE_LOOP_TRAP.replace(/%1/g,"'"+this.id+"'")+i);var r=t.valueToCode(this,"RETURN",t.ORDER_NONE)||"";r&&(r=" return "+r+"\n");for(var s=[],o=0;o\n\n\n\t\n"+t.statementToCode(this,"HEAD")+"\n\n"+t.statementToCode(this,"BODY")+"\n\n'''",t.ORDER_ATOMIC]},gp=function(e,t){var n=t.statementToCode(this,"DO"),i=this.getFieldValue("LEVEL");return"\n"+n+"\n"},Sp=function(e,t){var n=t.statementToCode(this,"DO"),i=this.getFieldValue("LEVEL");if("head"==i)var r="<"+i+'>\n\t\n'+n+"\n";else r="<"+i+">\n"+n+"\n";return r},kp=function(e,t){var n=t.statementToCode(this,"DO"),i=this.getFieldValue("LEVEL");return"<"+i+">\n"+n+"\n"},yp=function(e,t){var n=t.statementToCode(this,"DO"),i=t.valueToCode(this,"style"),r=this.getFieldValue("LEVEL");return"<"+r+" "+i+" >\n"+n+"\n"},vp=function(e,t){return['style="'+t.statementToCode(this,"STYLE")+'"',t.ORDER_ATOMIC]},Tp=function(e,t){return'"},Ep=function(){return this.getFieldValue("KEY")+":"+this.getFieldValue("VALUE")+";"},Ip=function(){return this.getFieldValue("TEXT")+"\n"},wp=function(e){return e.getFieldValue("TEXT")+"\n"},xp=function(e,t){return[e.getFieldValue("TEXT"),t.ORDER_ATOMIC]},Ap=function(e,t){return(t.valueToCode(e,"VALUE",t.ORDER_ATOMIC)||"")+"\n"},$p=function(){return""},Op=function(e,t){return["type("+(t.valueToCode(e,"VALUE",t.ORDER_MEMBER)||"___")+")",t.ORDER_ATOMIC]},Mp=function(e,t){for(var n=e.getFieldValue("NAME"),i=e.hasReturn_,r=new Array(e.itemCount_),s=0;s=0&&(i[r]=i[r].replace(" ",""));n="";for(r=0;rthis.#e.on("display",e)[0],ef.configure({output:e=>{this.#e.run("output",{content:e})},read:this.readFile.bind(this),inputfun:this.skInput.bind(this),inputfunTakesPrompt:!0,execLimit:Number.POSITIVE_INFINITY,fileread:this.fileread.bind(this),filewrite:this.filewrite.bind(this),__future__:ef.python3}),ef.builtins.value=new ef.builtin.func((function(){return ef.ffi.remapToPy(void 0===of?5:of)})),ef.builtins.set_value=new ef.builtin.func((function(e){of=e.v})),ef.builtinFiles.files["./mixpy.py"]='import math\r\n\r\ndef math_map(v, al, ah, bl, bh):\r\n return bl + (bh - bl) * (v - al) / (ah - al)\r\n\r\ndef math_mean(myList):\r\n localList = [e for e in myList if type(e) == int or type(e) == float]\r\n if not localList: return\r\n return float(sum(localList)) / len(localList)\r\n\r\ndef math_median(myList):\r\n localList = sorted([e for e in myList if type(e) == int or type(e) == float])\r\n if not localList: return\r\n if len(localList) % 2 == 0:\r\n return (localList[len(localList) // 2 - 1] + localList[len(localList) // 2]) / 2.0\r\n else:\r\n return localList[(len(localList) - 1) // 2]\r\n\r\ndef math_modes(some_list):\r\n modes = []\r\n # Using a lists of [item, count] to keep count rather than dict\r\n # to avoid "unhashable" errors when the counted item is itself a list or dict.\r\n counts = []\r\n maxCount = 1\r\n for item in some_list:\r\n found = False\r\n for count in counts:\r\n if count[0] == item:\r\n count[1] += 1\r\n maxCount = max(maxCount, count[1])\r\n found = True\r\n if not found:\r\n counts.append([item, 1])\r\n for counted_item, item_count in counts:\r\n if item_count == maxCount:\r\n modes.append(counted_item)\r\n return modes\r\n\r\ndef math_standard_deviation(numbers):\r\n n = len(numbers)\r\n if n == 0: return\r\n mean = float(sum(numbers)) / n\r\n variance = sum((x - mean) ** 2 for x in numbers) / n\r\n return math.sqrt(variance)\r\n\r\ndef lists_sort(my_list, type, reverse):\r\n def try_float(s):\r\n try:\r\n return float(s)\r\n except:\r\n return 0\r\n key_funcs = {\r\n "NUMERIC": try_float,\r\n "TEXT": str,\r\n "IGNORE_CASE": lambda s: str(s).lower()\r\n }\r\n key_func = key_funcs[type]\r\n list_cpy = list(my_list)\r\n return sorted(list_cpy, key=key_func, reverse=reverse)'}readFile(e){if(rf.matchModelName(e))return rf.load(e);if(void 0!==sf[e])return ef.misceval.promiseToSuspension(fetch(sf[e]).then((e=>e.text())));if(void 0===ef.builtinFiles||void 0===ef.builtinFiles.files[e])throw"File not found: '"+e+"'";return ef.builtinFiles.files[e]}fileread(e,t){return this.mixpyProject.exist(e)?this.mixpyProject.getFileContent(e):-1!==t.indexOf("w")?(this.mixpyProject.add(e,"",1),""):null}filewrite(e,t){var n=e.name;this.mixpyProject.modify(n,t),this.mixpyProject.select(n)}skInput(e){return new Promise(((t,n)=>{this.#e.run("input",{content:{prompt:e},resolve:t,reject:n})}))}reset(){ef.execLimit=Number.POSITIVE_INFINITY,ef.TurtleGraphics.reset&&ef.TurtleGraphics.reset()}kill(){ef.execLimit=0,this.executionEnd_()}step(e,t,n,i){if(".py"==i){var r=this.executionBuffer.step,s=this.parseGlobals(e);this.executionBuffer.trace.push({step:r,filename:i,line:t,column:n,properties:s.properties,modules:s.modules}),this.executionBuffer.step=r+1,this.executionBuffer.last_step=r+1,this.executionBuffer.line_number=t}}analyzeVariables(){if(""==this.main.model.programs.__main__().trim())return{}}analyze(){return this.main.model.execution.status("analyzing"),""!=this.main.model.programs.__main__().trim()||(this.main.components.feedback.emptyProgram("You haven't written any code yet!"),!1)}run(e){if(this.reset(),-1===e.indexOf("import blocklygame")&&-1===e.indexOf("from blocklygame import")||(rf.reset(),nf()(ef.TurtleGraphics.target).empty()),-1!==e.indexOf("import blocktool")||-1!==e.indexOf("import blocklygame")||-1!==e.indexOf("from blocklygame import")){var t=[];t=e.split("\n");for(var n=0;n=0){var i="",r=/,?'block_id=[\s\S]*'/.exec(t[n]);null!=r&&(i=r[0],t[n]=t[n].replace(i,""))}(t[n].indexOf("import blocktool")>=0||t[n].indexOf("blocktool.highlight")>=0)&&(t[n]="delete"),t[n].indexOf("blocklygame")>=0&&(t[n]=t[n].replace("blocklygame","bg_nonehl"))}e="";for(n=0;nef.importMainWithBody("",!1,e,!0))).then((()=>{this.programStatus.running=!1,this.#e.run("finished")})).catch((e=>{B.Debug.error(e),this.programStatus.running=!1,this.#e.run("error",e);var t=function(e){return"string"==typeof e?e:void 0!==e.tp$str?e.tp$str().v:e.name+": "+e.message}(e);this.#e.run("finished"),-1===t.indexOf("TimeLimitError")&&this.executionEnd_()}))}setupEnvironment(e,t,n,i,r){var s=this.main.model;this._backup_execution=ef.afterSingleExecution,ef.afterSingleExecution=void 0,ef.builtins.get_output=new ef.builtin.func((function(){return ef.builtin.pyCheckArgs("get_output",arguments,0,0),ef.ffi.remapToPy(s.execution.output())})),ef.builtins.reset_output=new ef.builtin.func((function(){ef.builtin.pyCheckArgs("reset_output",arguments,0,0),s.execution.output.removeAll()})),ef.builtins.log=new ef.builtin.func((function(e){ef.builtin.pyCheckArgs("log",arguments,1,1),console.log(e)})),ef.builtins._trace=t,ef.builtins._final_values=r,ef.builtins.code=ef.ffi.remapToPy(e),ef.builtins.set_success=this.instructor_module.set_success,ef.builtins.set_feedback=this.instructor_module.set_feedback,ef.builtins.set_finished=this.instructor_module.set_finished,ef.builtins.count_components=this.instructor_module.count_components,ef.builtins.no_nonlist_nums=this.instructor_module.no_nonlist_nums,ef.builtins.only_printing_properties=this.instructor_module.only_printing_properties,ef.builtins.calls_function=this.instructor_module.calls_function,ef.builtins.get_property=this.instructor_module.get_property,ef.builtins.get_value_by_name=this.instructor_module.get_value_by_name,ef.builtins.get_value_by_type=this.instructor_module.get_value_by_type,ef.builtins.parse_json=this.instructor_module.parse_json,ef.skip_drawing=!0,s.settings.mute_printer(!0)}disposeEnvironment(){ef.afterSingleExecution=this._backup_execution,ef.builtins.get_output=void 0,ef.builtins.reset_output=void 0,ef.builtins.log=void 0,ef.builtins._trace=void 0,ef.builtins.trace=void 0,ef.builtins.code=void 0,ef.builtins.set_success=void 0,ef.builtins.set_feedback=void 0,ef.builtins.set_finished=void 0,ef.builtins.count_components=void 0,ef.builtins.calls_function=void 0,ef.builtins.get_property=void 0,ef.builtins.get_value_by_name=void 0,ef.builtins.get_value_by_type=void 0,ef.builtins.no_nonlist_nums=void 0,ef.builtins.only_printing_properties=void 0,ef.builtins.parse_json=void 0,ef.skip_drawing=!1,of=void 0,this.main.model.settings.mute_printer(!1)}parseGlobals(e){var t=Array(),n=Array();for(var i in e){var r=e[i];if("__name__"!==i&&"__doc__"!==i){i=i.replace("_$rw$","").replace("_$rn$","");var s=this.parseValue(i,r);null!==s?t.push(s):r.constructor==ef.builtin.module&&n.push(r.$d.__name__.v)}}return{properties:t,modules:n}}parseValue(e,t){if(null==t)return{name:e,type:"Unknown",value:"Undefined"};switch(t.constructor){case ef.builtin.func:return{name:e,type:"Function",value:void 0!==t.func_code.co_varnames?" Arguments: "+t.func_code.co_varnames.join(", "):" No arguments"};case ef.builtin.module:return null;case ef.builtin.str:return{name:e,type:"String",value:t.$r().v};case ef.builtin.none:return{name:e,type:"None",value:"None"};case ef.builtin.bool:return{name:e,type:"Boolean",value:t.$r().v};case ef.builtin.nmber:return{name:e,type:"int"==t.skType?"Integer":"Float",value:t.$r().v};case ef.builtin.int_:return{name:e,type:"Integer",value:t.$r().v};case ef.builtin.float_:return{name:e,type:"Float",value:t.$r().v};case ef.builtin.tuple:return{name:e,type:"Tuple",value:t.$r().v};case ef.builtin.list:return t.v.length<=20?{name:e,type:"List",value:t.$r().v,exact_value:t}:{name:e,type:"List",value:"[... "+t.v.length+" elements ...]",exact_value:t};case ef.builtin.dict:return{name:e,type:"Dictionary",value:t.$r().v};case Number:return{name:e,type:t%1==0?"Integer":"Float",value:t};case String:return{name:e,type:"String",value:t};case Boolean:return{name:e,type:"Boolean",value:t?"True":"False"};default:return{name:e,type:null==t.tp$name?t:t.tp$name,value:null==t.$r?t:t.$r().v}}}}class lf extends B.PageBase{static{B.HTMLTemplate.add("html/statusbar/statusbar-image.html",new B.HTMLTemplate('\r\n
\r\n
\r\n
')),this.init=function(){B.StatusBarsManager.typesRegistry.register(["images"],lf);const e=B.Workspace.getMain().getStatusBarsManager();e.add("images","images","图像"),e.changeTo("output")}}constructor(){super();const e=nf()(B.HTMLTemplate.get("html/statusbar/statusbar-image.html").render());this.setContent(e)}init(){super.init(),this.hideCloseBtn()}clean(){this.getContent().empty()}display(e){const t=this.getContent(),n=function(e){e.style.width="auto",e.style.height="auto",e.style.maxWidth="100%",e.style.maxHeight="100%"};this.clean();let i=e.content,r=null,s=null;switch(e.display_type){case"p5":i.style.width="100%",i.style.height="100%",i.style.display="flex",i.style.justifyContent="center",i.style.alignItems="center",new MutationObserver((function(e){e.forEach((e=>e.addedNodes.forEach((e=>{const t=e;null!=t.tagName&&["canvas","video"].includes(t.tagName.toLowerCase())&&n(t)}))))})).observe(i,{childList:!0}),i.querySelectorAll("canvas,video").forEach(n),t.append(i);break;case"matplotlib":r=i.querySelector("canvas"),r&&(i=r),i.style.width="",i.style.height="",i.style.maxWidth="100%",i.style.maxHeight="100%",t.append(i);break;case"ocaml-canvas":i.style.width="",i.style.height="",i.style.maxWidth="100%",i.style.maxHeight="100%",t.append(i);break;case"turtle":i.setAttribute("width","100%"),i.setAttribute("height","100%"),t.append(i.outerHTML);break;case"sympy":t.append(e.content),void 0===window.MathJax?(console.log("Loading MathJax (Sympy expression needs it)."),function(){let e=document.createElement("script");e.type="text/javascript",e.src="https://cdn.jsdelivr.net/npm/mathjax@3.0.5/es5/tex-mml-chtml.js",document.getElementsByTagName("head")[0].appendChild(e)}()):window.MathJax.typeset();break;case"multiple":for(let n of["image/svg+xml","image/png","text/html","text/plain"])if(n in e.content){let i=e.content[n];"image/png"===n&&(i=''),t.append(i);break}break;case"tutor":if(t.append(nf()(e.content.replace("overflow-y%3A%20hidden%3B",""))),s=this.getContent()[0].getElementsByTagName("iframe")[0],null==s)return;s.style.maxHeight=s.style.minHeight="100%",new IntersectionObserver(((e,t)=>{const n=e[0];n&&!n.isIntersecting||(s.contentWindow?.postMessage({type:"redraw"},"*"),t.disconnect())})).observe(s);break;default:console.error(`Not supported node type '${e.display_type}' in eval.display result processing.`)}}}const uf=lf;class cf{static{this.pythonShell=null,this.init=async function(){uf.init(),this.pythonShell=new cf},this.run=function(){const e=B.Workspace.getMain().getEditorsManager().getActive().getCode();return this.pythonShell.run(e)},this.stop=function(){return this.pythonShell.stop()}}#t=null;#n=null;#i=null;#r={row:0,column:0};#s="";#o=null;#a=null;#l=!1;#u=!1;#c=null;#p=()=>this.#h();#d=[{name:"REPL-Enter",bindKey:"Enter",exec:e=>{if(e.getSession().selection.getCursor().row===this.#r.row){const e=this.#t.getEndPos();let t=this.#t.getValueRange(this.#r,e);return t=t.replace(this.#s,""),this.#o?.(t),this.#o=null,this.#a=null,this.#t.addValue("\n"),this.#f(),!0}return!1}},{name:"REPL-ChangeEditor",bindKey:"Delete|Ctrl-X|Backspace",exec:e=>{const t=e.getSession().selection.getCursor();return t.row{this.#u=!1,this.#t.addValue(`\n==${B.Msg.Lang["shell.finish"]}==`)})),e.bind("output",(e=>{this.#t.addValue(e.content)})),e.bind("error",(e=>{this.#u=!1,this.#t.addValue(`\n${e.toString()}\n`)})),e.bind("input",(e=>{const t=String(e?.content?.prompt);this.#t.addValue(`>>> ${t}`),this.#s=t,this.#o=e.resolve,this.#a=e.reject,this.#m()})),e.bind("display",(e=>{this.#i.changeTo("images"),this.#n.display(e)}))}#h(){const e=this.#t.getEditor(),t=e.getSession().selection.getCursor();e.setReadOnly(t.rowsetTimeout(t,e)))}}const pf=cf,hf={init:function(){pf.init();const e=B.app.getNav();e.register({icon:"icon-play-circled",title:"",id:"python-run-btn",displayText:F.Msg.MSG.run,preconditionFn:()=>!0,callback:()=>{pf.run().catch(B.Debug.error)},scopeType:B.Nav.Scope.LEFT,weight:4}),e.register({icon:"icon-cancel",title:"",id:"python-stop-btn",displayText:F.Msg.MSG.stop,preconditionFn:()=>!0,callback:()=>{pf.stop().catch(B.Debug.error)},scopeType:B.Nav.Scope.LEFT,weight:5})}};hf.init(),Object.assign(F.Variables,V),Object.assign(F.Procedures,Y),F.Python=H,F.generator=H,B.Profile.default={},Object.assign(F.Blocks,e,t,i,r,s,o,a,l,u,c,p,h,d,f,_,m,b,g),Object.assign(F.Python.forBlock,S,k,y,v,T,E,I,w,x,A,O,M,C,R,N,L,D,P)})()})(); \ No newline at end of file +class G{constructor(e,t){if(this.variablePrefix_=t||"",this.reservedDict_=Object.create(null),e)for(var n=e.split(","),i=0;i0?t.join("\n")+n.join("\n")+i.join("\n")+o.join("\n")+a.join("")+e+"while True:\n"+l.join("")+u.join("\n"):t.join("\n")+n.join("\n")+i.join("\n")+o.join("\n")+a.join("")+e+u.join("\n")},H.scrubNakedValue=function(e){return e+"\n"},H.quote_=function(e){var t="'";return-1!==(e=e.replace(/\\/g,"\\\\").replace(/\n/g,"\\\n")).indexOf("'")&&(-1===e.indexOf('"')?t='"':e=e.replace(/'/g,"\\'")),t+e+t},H.multiline_quote_=function(e){return"'''"+(e=e.replace(/'''/g,"\\'\\'\\'"))+"'''"},H.scrub_=function(e,t,n){var i="";if(!e.outputConnection||!e.outputConnection.targetConnection){(s=e.getCommentText())&&(s=F.utils.string.wrap(s,H.COMMENT_WRAP-3),i+=H.prefixLines(s+"\n","# "));for(var r=0;r0?"int("+a+" + "+r+")":r<0?"int("+a+" - "+-r+")":"int("+a+")",i&&(a="-"+a)),a};const z=330,q={init:function(){this.setColour(z),this.appendDummyInput().appendField(new F.FieldTextInput(""),"VAR"),this.setOutput(!0),this.setTooltip(F.Msg.VARIABLES_GET_TOOLTIP)},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(e,t){X.equals(e,this.getFieldValue("VAR"))&&this.setFieldValue(t,"VAR")}},W={init:function(){this.setColour(z),this.appendValueInput("VALUE").appendField(new F.FieldTextInput(""),"VAR").appendField(F.Msg.MIXLY_VALUE2),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.VARIABLES_SET_TOOLTIP)},getVars:function(){var e=this.getFieldValue("VAR");return null==e?[]:e.split(",")},renameVar:function(e,t){X.equals(e,this.getFieldValue("VAR"))&&this.setFieldValue(t,"VAR")}},K={init:function(){this.setColour(z);var e=[[F.Msg.LANG_MATH_INT,"int"],[F.Msg.LANG_MATH_FLOAT,"float"],[F.Msg.LANG_MATH_BOOLEAN,"bool"],[F.Msg.LANG_MATH_STRING,"str"],[F.Msg.MIXLY_MICROBIT_TYPE_LIST,"list"],[F.Msg.MIXLY_MICROBIT_TYPE_TUPLE,"tuple"],[F.Msg.MIXLY_MICROBIT_TYPE_DICT,"dict"],[F.Msg.blockpy_SET_CREATE_WITH_CONTAINER_TITLE_ADD,"set"],[F.Msg.LANG_MATH_BYTE,"bytes"]];this.appendValueInput("MYVALUE").appendField(new F.FieldDropdown(e),"OP"),this.setOutput(!0)}},J={init:function(){this.setColour(z),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_PYTHON_GLOBAL).setCheck("var"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(F.Msg.TEXT_PRINT_TOOLTIP)}},Q={init:function(){this.setColour(z),this.appendValueInput("DATA").appendField(F.Msg.MICROBIT_PYTHON_TYPE),this.setOutput(!0),this.setTooltip(F.Msg.MICROBIT_PYTHON_TYPE)}},Z={init:function(){this.setColour(z),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_CONTORL_GET_TYPE).appendField(new F.FieldDropdown([[F.Msg.LANG_MATH_INT,"int"],[F.Msg.MIXLY_MICROBIT_TYPE_FLOAT,"float"],[F.Msg.MIXLY_MICROBIT_TYPE_STRING,"str"],[F.Msg.MIXLY_MICROBIT_TYPE_LIST,"list"],[F.Msg.MIXLY_MICROBIT_TYPE_TUPLE,"tuple"],[F.Msg.MIXLY_MICROBIT_TYPE_DICT,"dict"],[F.Msg.blockpy_SET_CREATE_WITH_CONTAINER_TITLE_ADD,"set"],[F.Msg.LANG_MATH_BYTE,"bytes"],[F.Msg.LOGIC_NULL,"type(None)"]]),"type"),this.setInputsInline(!0),this.setOutput(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("type");return F.Msg.MICROBIT_controls_TypeLists+{int:F.Msg.LANG_MATH_INT,float:F.Msg.MIXLY_MICROBIT_TYPE_FLOAT,str:F.Msg.MIXLY_MICROBIT_TYPE_STRING,list:F.Msg.MIXLY_MICROBIT_TYPE_LIST,tuple:F.Msg.MIXLY_MICROBIT_TYPE_TUPLE,dict:F.Msg.MIXLY_MICROBIT_TYPE_DICT,set:F.Msg.blockpy_SET_CREATE_WITH_CONTAINER_TITLE_ADD,image:F.Msg.MIXLY_MICROBIT_IMAGE,bytes:F.Msg.LANG_MATH_BYTE,NoneType:F.Msg.LOGIC_NULL}[t]}))}},ee={init:function(){this.setColour(z),this.itemCount_=2,this.updateShape_(),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,"List"),this.setMutator(new F.icons.MutatorIcon(["lists_zip_item"],this)),this.setTooltip(F.Msg.MIXLY_PYTHON_LISTS_ZIP_TOOLTIP)},mutationToDom:function(){var e=document.createElement("mutation");return e.setAttribute("items",this.itemCount_),e},domToMutation:function(e){this.itemCount_=parseInt(e.getAttribute("items"),10),this.updateShape_()},decompose:function(e){var t=e.newBlock("lists_zip_container");t.initSvg();for(var n=t.getInput("STACK").connection,i=0;i0;r--)t.getInputTargetBlock("IF"+r)&&t.getInputTargetBlock("IF"+r).previousConnection?n[r]=t.getInputTargetBlock("IF"+r).previousConnection:n[r]=null,this.removeInput("IF"+r),t.getInputTargetBlock("DO"+r)&&t.getInputTargetBlock("DO"+r).previousConnection?i[r]=t.getInputTargetBlock("DO"+r).previousConnection:i[r]=null,this.removeInput("DO"+r);this.elseifCount_=parseInt(e.getAttribute("elseif"),10),this.elseCount_=parseInt(e.getAttribute("else"),10);for(r=1;r<=this.elseifCount_;r++)this.appendValueInput("IF"+r).setCheck([Boolean,Number]).appendField(F.Msg.CONTROLS_IF_MSG_ELSEIF),this.appendStatementInput("DO"+r).appendField(F.Msg.CONTROLS_IF_MSG_THEN);this.elseCount_&&this.appendStatementInput("ELSE").appendField(F.Msg.CONTROLS_IF_MSG_ELSE);for(r=n.length-2;r>0;r--)n[r]&&n[r].reconnect(this,"IF"+r);for(r=i.length-2;r>0;r--)i[r]&&i[r].reconnect(this,"DO"+r)},decompose:function(e){var t=e.newBlock("controls_if_if");t.initSvg();for(var n=t.getInput("STACK").connection,i=1;i<=this.elseifCount_;i++){var r=e.newBlock("controls_if_elseif");r.initSvg(),n.connect(r.previousConnection),n=r.nextConnection}if(this.elseCount_){var s=e.newBlock("controls_if_else");s.initSvg(),n.connect(s.previousConnection)}return t},compose:function(e){this.elseCount_&&this.removeInput("ELSE"),this.elseCount_=0;for(var t=this.elseifCount_;t>0;t--)this.removeInput("IF"+t),this.removeInput("DO"+t);this.elseifCount_=0;for(var n=e.getInputTargetBlock("STACK"),i=[null],r=[null],s=null;n;){switch(n.type){case"controls_if_elseif":this.elseifCount_++,i.push(n.valueConnection_),r.push(n.statementConnection_);break;case"controls_if_else":this.elseCount_++,s=n.statementConnection_;break;default:throw Error("Unknown block type: "+n.type)}n=n.nextConnection&&n.nextConnection.targetBlock()}this.updateShape_(),this.reconnectChildBlocks_(i,r,s)},saveConnections:function(e){for(var t=e.getInputTargetBlock("STACK"),n=1;t;){switch(t.type){case"controls_if_elseif":var i=this.getInput("IF"+n),r=this.getInput("DO"+n);t.valueConnection_=i&&i.connection.targetConnection,t.statementConnection_=r&&r.connection.targetConnection,n++;break;case"controls_if_else":r=this.getInput("ELSE");t.statementConnection_=r&&r.connection.targetConnection;break;default:throw"Unknown block type."}t=t.nextConnection&&t.nextConnection.targetBlock()}},rebuildShape_:function(){var e=[null],t=[null],n=null;this.getInput("ELSE")&&(n=this.getInput("ELSE").connection.targetConnection);for(var i=1;this.getInput("IF"+i);){var r=this.getInput("IF"+i),s=this.getInput("DO"+i);console.log(r.connection.targetConnection),e.push(r.connection.targetConnection),t.push(s.connection.targetConnection),i++}this.updateShape_(),this.reconnectChildBlocks_(e,t,n)},updateShape_:function(){this.getInput("ELSE")&&this.removeInput("ELSE");for(var e=1;this.getInput("IF"+e);)this.removeInput("IF"+e),this.removeInput("DO"+e),e++;for(e=1;e<=this.elseifCount_;e++)this.appendValueInput("IF"+e).setCheck([Number,Boolean]).appendField(F.Msg.CONTROLS_IF_MSG_ELSEIF),this.appendStatementInput("DO"+e).appendField(F.Msg.CONTROLS_IF_MSG_THEN);this.elseCount_&&this.appendStatementInput("ELSE").appendField(F.Msg.CONTROLS_IF_MSG_ELSE)},reconnectChildBlocks_:function(e,t,n){for(var i=1;i<=this.elseifCount_;i++)e[i]&&e[i].reconnect(this,"IF"+i),t[i]&&t[i].reconnect(this,"DO"+i);n&&n.reconnect(this,"ELSE")}},ce={init:function(){this.setColour(re),this.appendValueInput("FROM").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.PYTHON_RANGE).appendField(F.Msg.LANG_CONTROLS_FOR_INPUT_FROM),this.appendValueInput("TO").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.LANG_CONTROLS_FOR_INPUT_TO),this.appendValueInput("STEP").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.PYTHON_RANGE_STEP),this.setInputsInline(!0),this.setOutput(!0),this.setTooltip(F.Msg.MIXLY_PYTHON_CONTROLS_RANGE_TOOLTIP)}},pe={init:function(){this.setColour(re),this.appendValueInput("LIST").setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.CONTROLS_FOREACH_INPUT),this.appendValueInput("VAR").appendField(F.Msg.CONTROLS_FOREACH_INPUT_ITEM),this.appendStatementInput("DO").appendField(F.Msg.MIXLY_DO),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip((function(){return F.Msg.CONTROLS_FOR_TOOLTIP.replace("“%1”","")}))},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(e,t){F.Names.equals(e,this.getFieldValue("VAR"))&&this.setTitleValue(t,"VAR")}},he={init:function(){this.setColour(re),this.appendValueInput("BOOL").setCheck([Boolean,Number]).appendField(F.Msg.MIXLY_MICROBIT_JS_CURRENT).appendField(new F.FieldDropdown(this.OPERATORS),"MODE"),this.appendStatementInput("DO").appendField(F.Msg.LANG_CONTROLS_WHILEUNTIL_TITLE_REPEAT+F.Msg.MIXLY_DO),this.setPreviousStatement(!0),this.setNextStatement(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("MODE");return{WHILE:F.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE,UNTIL:F.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL}[t]}))}},de={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.MIXLY_PYTHON_TRY),this.appendStatementInput("try"),this.appendValueInput("IF1").appendField(F.Msg.MIXLY_PYTHON_EXCEPT),this.appendStatementInput("DO1").appendField(""),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setMutator(new F.icons.MutatorIcon(["controls_except","controls_finally"],this)),this.setTooltip(F.Msg.MIXLY_MIXPY_CONTROL_TRY_TOOLTIP),this.elseifCount_=1,this.elseCount_=0},mutationToDom:function(){if(!this.elseifCount_&&!this.elseCount_)return null;var e=document.createElement("mutation");return this.elseifCount_&&e.setAttribute("elseif",this.elseifCount_),this.elseCount_&&e.setAttribute("else",1),e},domToMutation:function(e){var t=this,n=[],i=[];this.elseCount_&&this.removeInput("ELSE");for(var r=this.elseifCount_;r>0;r--)t.getInputTargetBlock("IF"+r)&&t.getInputTargetBlock("IF"+r).previousConnection?n[r]=t.getInputTargetBlock("IF"+r).previousConnection:n[r]=null,this.removeInput("IF"+r),t.getInputTargetBlock("DO"+r)&&t.getInputTargetBlock("DO"+r).previousConnection?i[r]=t.getInputTargetBlock("DO"+r).previousConnection:i[r]=null,this.removeInput("DO"+r);this.elseifCount_=parseInt(e.getAttribute("elseif"),10),this.elseCount_=parseInt(e.getAttribute("else"),10);for(r=1;r<=this.elseifCount_;r++)this.appendValueInput("IF"+r).setCheck([Boolean,Number]).appendField(F.Msg.MIXLY_PYTHON_EXCEPT),this.appendStatementInput("DO"+r).appendField("");this.elseCount_&&this.appendStatementInput("ELSE").appendField(F.Msg.MIXLY_PYTHON_FINALLY);for(r=n.length-2;r>0;r--)n[r]&&n[r].reconnect(this,"IF"+r);for(r=i.length-2;r>0;r--)i[r]&&i[r].reconnect(this,"DO"+r)},decompose:function(e){var t=e.newBlock("controls_try");t.initSvg();for(var n=t.getInput("STACK").connection,i=1;i<=this.elseifCount_;i++){var r=e.newBlock("controls_except");r.initSvg(),n.connect(r.previousConnection),n=r.nextConnection}if(this.elseCount_){var s=e.newBlock("controls_finally");s.initSvg(),n.connect(s.previousConnection)}return t},compose:function(e){this.elseCount_&&this.removeInput("ELSE"),this.elseCount_=0;for(var t=this.elseifCount_;t>0;t--)this.removeInput("IF"+t),this.removeInput("DO"+t);this.elseifCount_=0;for(var n=e.getInputTargetBlock("STACK"),i=[null],r=[null],s=null;n;){switch(n.type){case"controls_except":this.elseifCount_++,i.push(n.valueConnection_),r.push(n.statementConnection_);break;case"controls_finally":this.elseCount_++,s=n.statementConnection_;break;default:throw Error("Unknown block type: "+n.type)}n=n.nextConnection&&n.nextConnection.targetBlock()}this.updateShape_(),this.reconnectChildBlocks_(i,r,s)},saveConnections:function(e){for(var t=e.getInputTargetBlock("STACK"),n=1;t;){switch(t.type){case"controls_except":var i=this.getInput("IF"+n),r=this.getInput("DO"+n);t.valueConnection_=i&&i.connection.targetConnection,t.statementConnection_=r&&r.connection.targetConnection,n++;break;case"controls_finally":r=this.getInput("ELSE");t.statementConnection_=r&&r.connection.targetConnection;break;default:throw"Unknown block type."}t=t.nextConnection&&t.nextConnection.targetBlock()}},rebuildShape_:function(){var e=[null],t=[null],n=null;this.getInput("ELSE")&&(n=this.getInput("ELSE").connection.targetConnection);for(var i=1;this.getInput("IF"+i);){var r=this.getInput("IF"+i),s=this.getInput("DO"+i);console.log(r.connection.targetConnection),e.push(r.connection.targetConnection),t.push(s.connection.targetConnection),i++}this.updateShape_(),this.reconnectChildBlocks_(e,t,n)},updateShape_:function(){this.getInput("ELSE")&&this.removeInput("ELSE");for(var e=1;this.getInput("IF"+e);)this.removeInput("IF"+e),this.removeInput("DO"+e),e++;for(e=1;e<=this.elseifCount_;e++)this.appendValueInput("IF"+e).setCheck([Number,Boolean]).appendField(F.Msg.MIXLY_PYTHON_EXCEPT),this.appendStatementInput("DO"+e).appendField("");this.elseCount_&&this.appendStatementInput("ELSE").appendField(F.Msg.MIXLY_PYTHON_FINALLY)},reconnectChildBlocks_:function(e,t,n){for(var i=1;i<=this.elseifCount_;i++)e[i]&&e[i].reconnect(this,"IF"+i),t[i]&&t[i].reconnect(this,"DO"+i);n&&n.reconnect(this,"ELSE")}},fe={init:function(){this.setColour(re);var e=new F.FieldDropdown(this.OPERATORS);this.appendDummyInput().appendField(e,"FLOW").appendField(F.Msg.LANG_CONTROLS_FLOW_STATEMENTS_INPUT_OFLOOP),this.setPreviousStatement(!0),this.setTooltip(F.Msg.MIXLY_PYTHON_CONTROLS_FLOW_STATEMENTS_TOOLTIP);var t=this;this.setTooltip((function(){var e=t.getFieldValue("FLOW");return{BREAK:F.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK,CONTINUE:F.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE}[e]}))},onchange:function(){if(this.workspace){var e=!1,t=this;do{if("controls_repeat"==t.type||"controls_for"==t.type||"controls_forEach"==t.type||"controls_repeat_ext"==t.type||"controls_whileUntil"==t.type||"do_while"==t.type){e=!0;break}t=t.getSurroundParent()}while(t);e?this.setWarningText(null):this.setWarningText(F.Msg.LANG_CONTROLS_FLOW_STATEMENTS_WARNING)}}},_e={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.LANG_CONTROLS_FOR_INPUT_WITH).appendField(new F.FieldTextInput("i"),"VAR"),this.appendValueInput("FROM").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.LANG_CONTROLS_FOR_INPUT_FROM),this.appendValueInput("TO").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.LANG_CONTROLS_FOR_INPUT_TO),this.appendValueInput("STEP").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.MIXLY_STEP),this.appendStatementInput("DO").appendField(F.Msg.MIXLY_DO),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0);var e=this;this.setTooltip((function(){return F.Msg.CONTROLS_FOR_TOOLTIP.replace("%1",e.getFieldValue("VAR"))}))},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(e,t){F.Names.equals(e,this.getFieldValue("VAR"))&&this.setTitleValue(t,"VAR")}},me={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.LANG_CONTROLS_FOR_INPUT_WITH).appendField(new F.FieldTextInput("i"),"VAR"),this.appendValueInput("FROM").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.LANG_CONTROLS_FOR_INPUT_FROM),this.appendValueInput("TO").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.LANG_CONTROLS_FOR_INPUT_TO),this.appendValueInput("STEP").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.MIXLY_STEP),this.appendStatementInput("DO").appendField(F.Msg.MIXLY_DO),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0);var e=this;this.setTooltip((function(){return F.Msg.MIXLY_PYTHON_CONTROLS_FOR_RANGE_TOOLTIP.replace("%1",e.getFieldValue("VAR"))}))},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(e,t){F.Names.equals(e,this.getFieldValue("VAR"))&&this.setTitleValue(t,"VAR")}};he.OPERATORS=[[F.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_WHILE,"WHILE"],[F.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_UNTIL,"UNTIL"]],fe.OPERATORS=[[F.Msg.LANG_CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK,"BREAK"],[F.Msg.LANG_CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE,"CONTINUE"]];const be={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.CONTROLS_IF_IF_TITLE_IF),this.appendStatementInput("STACK"),this.setTooltip(F.Msg.CONTROLS_IF_IF_TOOLTIP),this.contextMenu=!1}},ge={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.CONTROLS_IF_ELSEIF_TOOLTIP),this.contextMenu=!1}},Se={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.CONTROLS_IF_ELSE_TITLE_ELSE),this.setPreviousStatement(!0),this.setTooltip(F.Msg.CONTROLS_IF_ELSE_TOOLTIP),this.contextMenu=!1}},ke={init:function(){this.setColour(re),this.appendDummyInput().appendField("try"),this.appendStatementInput("STACK"),this.setPreviousStatement(!1),this.setNextStatement(!1),this.contextMenu=!1}},ye={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.MIXLY_PYTHON_EXCEPT),this.setPreviousStatement(!0),this.setNextStatement(!0),this.contextMenu=!1,this.setTooltip(F.Msg.MIXLY_MIXPY_CONTROL_EXCEPT_TOOLTIP)}},ve={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.MIXLY_PYTHON_FINALLY),this.setPreviousStatement(!0),this.contextMenu=!1,this.setTooltip(F.Msg.MIXLY_MIXPY_CONTROL_FINALLY_TOOLTIP)}},Te={init:function(){this.jsonInit({message0:F.Msg.CONTROLS_REPEAT_TITLE,args0:[{type:"input_value",name:"TIMES"}],previousStatement:null,nextStatement:null,colour:re,tooltip:F.Msg.CONTROLS_REPEAT_TOOLTIP,helpUrl:F.Msg.CONTROLS_REPEAT_HELPURL}),this.appendStatementInput("DO")}},Ee={init:function(){this.setColour(re),this.appendValueInput("BOOL").appendField("lambda"),this.appendStatementInput("DO").appendField(F.Msg.MIXLY_STAT),this.setOutput(!0)}},Ie={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.MIXLY_PYTHON_PASS),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.MIXLY_PYTHON_CONTROLS_PASS_TOOLTIP)}},we={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.MIXLY_PYTHON_CONTROLS_THREAD_START),this.appendValueInput("callback").appendField(F.Msg.MIXLY_PYTHON_CONTROLS_THREAD_USE),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_PARAMS),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(F.Msg.MIXLY_PYTHON_CONTROLS_THREAD_TOOLTIP)}},xe={init:function(){this.appendDummyInput().appendField(F.Msg.CONTROLS_REPEAT_TITLE_REPEAT+F.Msg.MIXLY_DO),this.appendStatementInput("input_data").setCheck(null),this.appendValueInput("select_data").setCheck(null).appendField(F.Msg.CONTROLS_OPERATOR_UNTIL).appendField(new F.FieldDropdown([[F.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_WHILE,"true"],[F.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_UNTIL,"false"]]),"type"),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setColour(re),this.setTooltip("do-while loop"),this.setHelpUrl("")}},Ae={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.MIXLY_OP_GARBAGE_COLLECT),this.setPreviousStatement(!0),this.setNextStatement(!0)}},$e={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.MIXLY_GET_MEM_ALLOC),this.setOutput(!0)}},Oe={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.MIXLY_GET_MEM_FREE),this.setOutput(!0)}},Me={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.MIXLY_GET+F.Msg.MIXLY_DEVICE+"ID"),this.setInputsInline(!0),this.setOutput(!0),this.setTooltip(F.Msg.PROCEDURES_DEFRETURN_RETURN+F.Msg.MIXLY_GET_UNIQUE_IDEN)}},Ce={init:function(){this.setColour(re),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_RTC_TIMESTAMP),this.appendDummyInput().appendField(F.Msg.MIXLY_TIMESTAMP_TO_DATA),this.setInputsInline(!0),this.setOutput(!0,Number)}},Re={init:function(){this.setColour(re),this.appendDummyInput().appendField(F.Msg.MIXLY_GET_UNIQUE_IDEN),this.setOutput(!0)}},Ne=230;F.FieldTextInput.math_number_validator=function(e){return String(e)},F.FieldTextInput.math_number_validator_include_blank=function(e){if(""===e)return"";return/^-?(0X|0x|0O|0o|0B|0b)?[a-fA-F0-9]{1,}(\.[a-fA-F0-9]+)?$/.test(e)?String(e):null};const Le={init:function(){this.setColour(Ne),this.appendDummyInput().appendField(new F.FieldTextInput("0",F.FieldTextInput.math_number_validator),"NUM"),this.setOutput(!0,Number),this.setTooltip(F.Msg.MATH_NUMBER_TOOLTIP)}},De={init:function(){this.setColour(Ne);this.appendDummyInput("").appendField(F.Msg.MIXLY_PYTHON_MATH_CONSTANT).appendField(new F.FieldDropdown([["π","pi"],["e","e"]]),"CONSTANT"),this.setOutput(!0,Number);var e=this;this.setTooltip((function(){var t=e.getFieldValue("CONSTANT");return{pi:F.Msg.MIXLY_PYTHON_MATH_CONSTANT_PI_TOOLTIP,e:F.Msg.MIXLY_PYTHON_MATH_CONSTANT_E_TOOLTIP}[t]}))}},Pe={init:function(){this.setColour(Ne);this.appendDummyInput("").appendField(F.Msg.MIXLY_PYTHON_MATH_CONSTANT).appendField(new F.FieldDropdown([["π","pi"],["e","e"]]),"CONSTANT"),this.setOutput(!0,Number);var e=this;this.setTooltip((function(){var t=e.getFieldValue("CONSTANT");return{pi:F.Msg.MIXLY_PYTHON_MATH_CONSTANT_PI_MP_TOOLTIP,e:F.Msg.MIXLY_PYTHON_MATH_CONSTANT_E_MP_TOOLTIP}[t]}))}},Fe={init:function(){this.setColour(Ne),this.setOutput(!0),this.appendValueInput("A"),this.appendValueInput("B").appendField(new F.FieldDropdown([["+","ADD"],["-","MINUS"],["×","MULTIPLY"],["÷","DIVIDE"],["%","QUYU"],["//","ZHENGCHU"],["**","POWER"]]),"OP"),this.setInputsInline(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("OP");return{ADD:F.Msg.MATH_ARITHMETIC_TOOLTIP_ADD,MINUS:F.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS,MULTIPLY:F.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY,DIVIDE:F.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE,QUYU:F.Msg.MATH_MODULO_TOOLTIP,ZHENGCHU:F.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE,POWER:F.Msg.MATH_ARITHMETIC_TOOLTIP_POWER}[t]}))}},Be={init:function(){this.setColour(Ne),this.setPreviousStatement(!0),this.setNextStatement(!0),this.appendValueInput("A"),this.appendValueInput("B").appendField(new F.FieldDropdown([["+=","ADD"],["-=","MINUS"],["×=","MULTIPLY"],["÷=","DIVIDE"],["%=","QUYU"],["//=","ZHENGCHU"],["**=","POWER"]]),"OP"),this.setInputsInline(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("OP");return{ADD:F.Msg.MATH_ARITHMETIC_TOOLTIP_ADD,MINUS:F.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS,MULTIPLY:F.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY,DIVIDE:F.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE,QUYU:F.Msg.MATH_MODULO_TOOLTIP,ZHENGCHU:F.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE,POWER:F.Msg.MATH_ARITHMETIC_TOOLTIP_POWER}[t]}))}},je={init:function(){this.setColour(Ne),this.setOutput(!0,Number),this.appendValueInput("A").setCheck(Number),this.appendValueInput("B").setCheck(Number).appendField(new F.FieldDropdown([["&","&"],["|","|"],[">>",">>"],["<<","<<"]]),"OP"),this.setInputsInline(!0),this.setTooltip("位运算")}},Ve={init:function(){this.setColour(Ne),this.setOutput(!0,Number),this.appendValueInput("NUM").setCheck(Number).appendField(new F.FieldDropdown([["sin","SIN"],["cos","COS"],["tan","TAN"],["asin","ASIN"],["acos","ACOS"],["atan","ATAN"],["-","-"],["ln","LN"],["log10","LOG10"],["e^","EXP"],["10^","POW10"]]),"OP");var e=this;this.setTooltip((function(){var t=e.getFieldValue("OP");return{SIN:F.Msg.MATH_TRIG_TOOLTIP_SIN,COS:F.Msg.MATH_TRIG_TOOLTIP_COS,TAN:F.Msg.MATH_TRIG_TOOLTIP_TAN,ASIN:F.Msg.MATH_TRIG_TOOLTIP_ASIN,ACOS:F.Msg.MATH_TRIG_TOOLTIP_ACOS,ATAN:F.Msg.MATH_TRIG_TOOLTIP_ATAN,LN:F.Msg.MATH_SINGLE_TOOLTIP_LN}[t]}))}},Ue={init:function(){var e=[[F.Msg.MATH_BIN,"bin"],[F.Msg.MATH_OCT,"oct"],[F.Msg.MATH_HEX,"hex"]];this.setColour(Ne),this.setOutput(!0,String),this.appendValueInput("NUM").setCheck(Number).appendField(new F.FieldDropdown(e),"OP");var t=this;this.setTooltip((function(){var e=t.getFieldValue("OP");return{bin:F.Msg.MATH_DEC_TOOLTIP_BIN,oct:F.Msg.MATH_DEC_TOOLTIP_OCT,hex:F.Msg.MATH_DEC_TOOLTIP_HEX}[e]}))}},Ye={init:function(){var e=[[F.Msg.LANG_MATH_TO_ROUND,"round"],[F.Msg.LANG_MATH_TO_CEIL,"ceil"],[F.Msg.LANG_MATH_TO_FLOOR,"floor"],[F.Msg.MATH_ABS,"fabs"],[F.Msg.MATH_SQRT,"sqrt"]];this.setColour(Ne),this.appendValueInput("A").setCheck(Number).appendField(new F.FieldDropdown(e),"OP"),this.setOutput(!0,Number);var t=this;this.setTooltip((function(){var e=t.getFieldValue("OP");return{sqrt:F.Msg.MATH_SINGLE_TOOLTIP_ROOT,fabs:F.Msg.MATH_SINGLE_TOOLTIP_ABS,sq:F.Msg.MATH_SINGLE_TOOLTIP_SQ,round:F.Msg.MATH_SINGLE_TOOLTIP_ROUND,ceil:F.Msg.MATH_SINGLE_TOOLTIP_CEIL,floor:F.Msg.MATH_SINGLE_TOOLTIP_FLOOR}[e]}))}},Ge={init:function(){var e=[[F.Msg.MIXLY_MAX,"max"],[F.Msg.MIXLY_MIN,"min"]];this.setColour(Ne),this.appendValueInput("A").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(new F.FieldDropdown(e),"OP").appendField("("),this.appendValueInput("B").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(","),this.appendDummyInput("").setAlign(F.inputs.Align.RIGHT).appendField(")"),this.setInputsInline(!0),this.setOutput(!0,Number);var t=this;this.setTooltip((function(){var e=t.getFieldValue("OP");return{max:F.Msg.MIXLY_TOOLTIP_MATH_MAX,min:F.Msg.MIXLY_TOOLTIP_MATH_MIN}[e]}))}},Xe={init:function(){var e=[[F.Msg.MATH_TWO,"two"],[F.Msg.MATH_EIGHT,"eight"],[F.Msg.MATH_TEN,"ten"],[F.Msg.MATH_SIXTEEN,"sixteen"]];this.setColour(Ne),this.appendDummyInput("").appendField(F.Msg.MATH_BA),this.appendValueInput("NUM").appendField(new F.FieldDropdown(e),"OP").appendField(F.Msg.MATH_JinZhi).setCheck(Number),this.appendDummyInput("").appendField(F.Msg.MATH_ZHW).appendField(new F.FieldDropdown(e),"OP2").appendField(F.Msg.MATH_JinZhi),this.setFieldValue("ten","OP2"),this.setOutput(!0),this.setInputsInline(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("OP"),n={two:F.Msg.MATH_Before_two,eight:F.Msg.MATH_Before_eight,ten:F.Msg.MATH_Before_ten,sixteen:F.Msg.MATH_Before_sixteen},i=t.getFieldValue("OP2"),r={two:F.Msg.MATH_Behind_two,eight:F.Msg.MATH_Behind_eight,ten:F.Msg.MATH_Behind_ten,sixteen:F.Msg.MATH_Behind_sixteen};return n[e]+r[i]}))}},He={init:function(){var e=[[F.Msg.LANG_MATH_INT,"int"],[F.Msg.LANG_MATH_FLOAT,"float"]];this.setColour(Ne),this.setOutput(!0,Number),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_RANDOM).appendField(new F.FieldDropdown(e),"TYPE"),this.appendValueInput("FROM").setCheck(Number).appendField(F.Msg.LANG_CONTROLS_FOR_INPUT_FROM),this.appendValueInput("TO").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.LANG_MATH_RANDOM_INT_INPUT_TO),this.setInputsInline(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("TYPE"),n={int:F.Msg.LANG_MATH_INT,float:F.Msg.LANG_MATH_FLOAT_RANDOM};return F.Msg.MATH_RANDOM_INT_TOOLTIP+n[e]}))}},ze={init:function(){this.setColour(Ne),this.setOutput(!0,Number),this.appendValueInput("VALUE").setCheck(Number).appendField(F.Msg.LANG_MATH_CONSTRAIN_INPUT_CONSTRAIN),this.appendValueInput("LOW").setCheck(Number).appendField(F.Msg.LANG_MATH_CONSTRAIN_INPUT_LOW),this.appendValueInput("HIGH").setCheck(Number).appendField(F.Msg.LANG_MATH_CONSTRAIN_INPUT_HIGH),this.setInputsInline(!0),this.setTooltip(F.Msg.MATH_CONSTRAIN_TOOLTIP)}},qe={init:function(){this.setColour(Ne),this.appendValueInput("NUM",Number).appendField(F.Msg.MIXLY_MAP).setCheck(Number),this.appendValueInput("fromLow",Number).appendField(F.Msg.MIXLY_MAP_FROM).setCheck(Number),this.appendValueInput("fromHigh",Number).appendField(",").setCheck(Number),this.appendValueInput("toLow",Number).appendField(F.Msg.MIXLY_MAP_TO).setCheck(Number),this.appendValueInput("toHigh",Number).appendField(",").setCheck(Number),this.appendDummyInput("").appendField("]"),this.setInputsInline(!0),this.setOutput(!0),this.setTooltip(F.Msg.MIXLY_TOOLTIP_MATH_MAP)}},We={init:function(){this.setColour(Ne),this.appendDummyInput().appendField(new F.FieldTextInput("0",F.FieldTextInput.math_number_validator_include_blank),"NUM"),this.setOutput(!0),this.setTooltip(F.Msg.MATH_NUMBER_TOOLTIP)}},Ke={init:function(){this.setColour(Ne),this.appendValueInput("NUM").setCheck(Number).appendField(F.Msg.LANG_MATH_RANDOM_SEED),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.MIXLY_TOOLTIP_MATH_RANDOM_SEED)}},Je={init:function(){this.setColour(Ne),this.setOutput(!0,Number),this.appendValueInput("VALUE").setCheck(Number),this.appendValueInput("VAR").setCheck(Number).appendField(F.Msg.MATH_ROUND).appendField(F.Msg.TEXT_KEEP),this.appendDummyInput().appendField(F.Msg.TEXT_DECIMAL),this.setInputsInline(!0),this.setTooltip(F.Msg.MATH_ROUND_NEW_TOOLTIP)}},Qe={init:function(){var e=[[F.Msg.MIXLY_TO_INT,"int"],[F.Msg.MIXLY_TO_FLOAT,"float"],[F.Msg.MIXLY_TO_BITES,"b"],[F.Msg.LANG_MATH_BYTE+F.Msg.MIXLY_TO_INT,"bti"]];this.setColour(Ne),this.appendValueInput("VAR").appendField(new F.FieldDropdown(e),"TOWHAT"),this.setOutput(!0,Number);var t=this;this.setTooltip((function(){var e=t.getFieldValue("TOWHAT");return{int:F.Msg.MIXLY_PYTHON_TOOLTIP_TOINT,float:F.Msg.MIXLY_PYTHON_TOOLTIP_TOFLOAT,b:F.Msg.MIXLY_TOOLTIP_TEXT_TOBYTE}[e]}))}},Ze={init:function(){var e=[[F.Msg.MIXLY_TO_INT,"int"],[F.Msg.MIXLY_TO_FLOAT,"float"]];this.setColour(Ne),this.appendValueInput("VAR").appendField(new F.FieldDropdown(e),"TOWHAT"),this.setOutput(!0,Number);var t=this;this.setTooltip((function(){var e=t.getFieldValue("TOWHAT");return{int:F.Msg.MIXLY_TOOLTIP_TEXT_TOINT,float:F.Msg.MIXLY_TOOLTIP_TEXT_TOFLOAT}[e]}))}},et=qe,tt={init:function(){this.setColour(Ne),this.appendValueInput("VAR").appendField(F.Msg.LANG_MATH_BYTE+F.Msg.MIXLY_TO_HEX),this.setOutput(!0,Number),this.setTooltip(F.Msg.MIXLY_PYTHON_TOOLTIP_TOHEX)}},nt={init:function(){this.setColour(Ne),this.itemCount_=1,this.setMutator(new F.icons.MutatorIcon(["lists_create_with_item"],this)),this.appendDummyInput("DUMMY").appendField(F.Msg.MIXLY_PRODUCT+F.Msg.MIXLY_GENERATE_CARTESIAN_PRODUCT),this.appendValueInput("REPEAT").appendField(F.Msg.MIXLY_EVERY_PER_ELEPER_ELEMENT),this.appendDummyInput().appendField(F.Msg.CONTROLS_REPEAT_TITLE_TIMES),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0),this.setTooltip(F.Msg.LISTS_CREATE_WITH_PYTHON_TOOLTIP),this.updateShape_()},mutationToDom:function(){var e=document.createElement("mutation");return e.setAttribute("items",this.itemCount_),e},domToMutation:function(e){this.itemCount_=parseInt(e.getAttribute("items"),10),this.updateShape_()},decompose:function(e){var t=e.newBlock("lists_create_with_container");t.initSvg();for(var n=t.getInput("STACK").connection,i=0;i1&&"\\"===e.charAt(0)){var t=e.charAt(1);if("0"===t||"b"===t||"f"===t||"n"===t||"r"===t||"t"===t||"\\"===t||"'"===t)return String(e).substring(0,2);if("x"===t&&"0"===e.charAt(2)&&"B"===e.charAt(3))return String(e).substring(0,4)}return String(e).substring(0,1)};const lt={init:function(){this.setColour(st),this.appendDummyInput().appendField(this.newQuote_(!0)).appendField(new F.FieldTextInput("",F.FieldTextInput.char_validator),"TEXT").appendField(this.newQuote_(!1)),this.setOutput(!0,Number),this.setTooltip(F.Msg.TEXT_CHAR_TOOLTIP)},newQuote_:function(e){if(1==e)var t="../../media/quote2.png";else t="../../media/quote3.png";return new F.FieldImage(t,7,12,'"')}},ut={init:function(){this.setColour(st),this.appendValueInput("A").setCheck([String,Number]),this.appendValueInput("B").setCheck([String,Number]).appendField(F.Msg.MIXLY_TEXT_JOIN),this.setInputsInline(!0),this.setOutput(!0,String),this.setTooltip(F.Msg.MIXLY_TOOLTIP_TEXT_JOIN)}},ct={init:function(){this.setColour(st),this.appendValueInput("VAR").setCheck(Number).appendField(F.Msg.MIXLY_TOCHAR),this.setOutput(!0,String),this.setTooltip(F.Msg.MIXLY_TOOLTIP_TEXT_TOCHAR)}},pt={init:function(){this.setColour(st),this.appendValueInput("VAR").setCheck(String).appendField(F.Msg.MIXLY_TOASCII),this.setOutput(!0,Number),this.setTooltip(F.Msg.MIXLY_TOOLTIP_TEXT_TOASCII)}},ht={init:function(){this.setColour(st),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_TOSTRING),this.setOutput(!0,String),this.setTooltip(F.Msg.MIXLY_PYTHON_TOOLTIP_TOTEXT)}},dt={init:function(){this.setColour(st),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_LENGTH),this.setOutput(!0,Number),this.setTooltip(F.Msg.MIXLY_TOOLTIP_TEXT_LENGTH)}},ft={init:function(){this.WHERE_OPTIONS=[[F.Msg.LISTS_GET_INDEX_FROM_START,"FROM_START"],[F.Msg.LISTS_GET_INDEX_FROM_END,"FROM_END"],[F.Msg.TEXT_GET_INDEX_RANDOM+1+F.Msg.TEXT_CHARAT2,"RANDOM"]],this.setHelpUrl(F.Msg.LISTS_GET_INDEX_HELPURL),this.setColour(st),this.appendValueInput("VAR").setCheck(String),this.appendValueInput("AT").setCheck(Number),this.appendDummyInput().appendField(F.Msg.LISTS_GET_INDEX_GET,"MODE"),F.Msg.LISTS_GET_INDEX_TAIL&&this.appendDummyInput("TAIL").appendField(F.Msg.LISTS_GET_INDEX_TAIL),this.setInputsInline(!0),this.setOutput(!0),this.updateAt_(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("MODE"),n=e.getFieldValue("WHERE"),i="";switch(t+" "+n){case"GET FROM_START":case"GET FROM_END":i=F.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM;break;case"GET RANDOM":i=F.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM;break;case"GET_REMOVE FROM_START":case"GET_REMOVE FROM_END":i=F.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM;break;case"GET_REMOVE RANDOM":i=F.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM}return"FROM_START"!=n&&"FROM_END"!=n||(i+=" "+F.Msg.LISTS_INDEX_FROM_START_TOOLTIP.replace("%1",F.Msg.ONE_BASED_INDEXING?"#1":"#0")),i}));var t=this;this.setTooltip((function(){var e=t.getFieldValue("WHERE"),n={FROM_START:F.Msg.LISTS_GET_INDEX_FROM_START,FROM_END:F.Msg.LISTS_GET_INDEX_FROM_END,RANDOM:F.Msg.TEXT_GET_INDEX_RANDOM};return F.Msg.PROCEDURES_DEFRETURN_RETURN+F.Msg.MIXLY_MICROBIT_TYPE_STRING+n[e]+"n"+F.Msg.TEXT_CHARAT2}))},mutationToDom:function(){var e=document.createElement("mutation");e.setAttribute("statement",!this.outputConnection);var t=this.getInput("AT").type==F.INPUT_VALUE;return e.setAttribute("at",t),e},domToMutation:function(e){var t="true"==e.getAttribute("statement");this.updateStatement_(t),e="false"!=e.getAttribute("at"),this.updateAt_(e)},updateStatement_:function(e){e!=!this.outputConnection&&(this.unplug(!0,!0),e?(this.setOutput(!1),this.setPreviousStatement(!0),this.setNextStatement(!0)):(this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0)))},updateAt_:function(e){this.removeInput("AT"),this.removeInput("ORDINAL",!0),e?(this.appendValueInput("AT").setCheck(Number),F.Msg.TEXT_CHARAT2&&this.appendDummyInput("ORDINAL").appendField(F.Msg.TEXT_CHARAT2)):this.appendDummyInput("AT");var t=new F.FieldDropdown(this.WHERE_OPTIONS,(function(t){var n="FROM_START"==t||"FROM_END"==t;if(n!=e){var i=this.sourceBlock_;return i.updateAt_(n),i.setFieldValue(t,"WHERE"),null}}));this.getInput("AT").appendField(t,"WHERE"),F.Msg.LISTS_GET_INDEX_TAIL&&this.moveInputBefore("TAIL",null)}},_t={init:function(){this.setHelpUrl(F.Msg.LISTS_GET_INDEX_HELPURL),this.setColour(st),this.appendValueInput("VAR").setCheck(String),this.appendValueInput("AT").setCheck(Number).appendField(F.Msg.LISTS_GET_INDEX_GET+" "+F.Msg.LISTS_GET_INDEX_FROM_START),this.appendDummyInput().appendField(F.Msg.TEXT_CHARAT2),this.setOutput(!0),this.setTooltip(F.Msg.PROCEDURES_DEFRETURN_RETURN+F.Msg.MIXLY_MICROBIT_TYPE_STRING+F.Msg.LISTS_GET_INDEX_FROM_START+"n"+F.Msg.TEXT_CHARAT2)}},mt={init:function(){this.setHelpUrl(F.Msg.LISTS_GET_INDEX_HELPURL),this.setColour(st),this.appendValueInput("VAR").setCheck(String),this.appendDummyInput().appendField(F.Msg.TEXT_RANDOM_CHAR),this.setOutput(!0),this.setTooltip(F.Msg.TEXT_RANDOM_CHAR_TOOLTIP)}},bt={init:function(){this.WHERE_OPTIONS_1=[[F.Msg.LISTS_GET_INDEX_FROM_START,"FROM_START"],[F.Msg.LISTS_GET_INDEX_FROM_END,"FROM_END"],[F.Msg.LISTS_GET_SUBLIST_START_FIRST,"FIRST"]],this.WHERE_OPTIONS_2=[[F.Msg.LISTS_GET_SUBLIST_END_FROM_START,"FROM_START"],[F.Msg.LISTS_GET_SUBLIST_END_FROM_END,"FROM_END"],[F.Msg.LISTS_GET_SUBLIST_END_LAST,"LAST"]],this.setHelpUrl(F.Msg.LISTS_GET_SUBLIST_HELPURL),this.setColour(st),this.appendValueInput("VAR").setCheck(String),this.appendDummyInput("").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_GET),this.appendDummyInput("AT1"),this.appendDummyInput("AT2"),this.setInputsInline(!0),this.setOutput(!0,"List"),this.updateAt_(1,!0),this.updateAt_(2,!0),this.setTooltip(F.Msg._GET_TEXT_SUBLIST_TOOLTIP)},mutationToDom:function(){var e=document.createElement("mutation"),t=this.getInput("AT1").type==F.INPUT_VALUE;e.setAttribute("at1",t);var n=this.getInput("AT2").type==F.INPUT_VALUE;return e.setAttribute("at2",n),e},domToMutation:function(e){var t="true"==e.getAttribute("at1"),n="true"==e.getAttribute("at2");this.updateAt_(1,t),this.updateAt_(2,n)},updateAt_:function(e,t){this.removeInput("AT"+e),this.removeInput("ORDINAL"+e,!0),t?(this.appendValueInput("AT"+e).setCheck(Number),F.Msg.TEXT_CHARAT2&&this.appendDummyInput("ORDINAL"+e).appendField(F.Msg.TEXT_CHARAT2)):this.appendDummyInput("AT"+e);var n=new F.FieldDropdown(this["WHERE_OPTIONS_"+e],(function(n){var i="FROM_START"==n||"FROM_END"==n;if(i!=t){var r=this.sourceBlock_;return r.updateAt_(e,i),r.setFieldValue(n,"WHERE"+e),null}}));this.getInput("AT"+e).appendField(n,"WHERE"+e),1==e&&(this.moveInputBefore("AT1","AT2"),this.getInput("ORDINAL1")&&this.moveInputBefore("ORDINAL1","AT2"))}},gt={init:function(){this.setHelpUrl(F.Msg.LISTS_GET_SUBLIST_HELPURL),this.setColour(st),this.appendValueInput("VAR").setCheck(String),this.appendValueInput("AT1").appendField(F.Msg.LISTS_GET_INDEX_GET+" "+F.Msg.LISTS_GET_INDEX_FROM_START),this.appendValueInput("AT2").appendField(F.Msg.LISTS_GET_SUBLIST_END_FROM_START),this.appendDummyInput().appendField(F.Msg.TEXT_CHARAT2),this.setInputsInline(!0),this.setOutput(!0,["List",String]),this.setTooltip(F.Msg._GET_TEXT_SUBLIST_TOOLTIP)}},St={init:function(){var e=[[F.Msg.MIXLY_EQUALS,"==="],[F.Msg.MIXLY_STARTSWITH,"startswith"],[F.Msg.MIXLY_ENDSWITH,"endswith"]];this.setColour(st),this.appendValueInput("STR1").setCheck(String),this.appendValueInput("STR2").appendField(new F.FieldDropdown(e),"DOWHAT").setCheck(String),this.setOutput(!0,[Boolean,Number]),this.setInputsInline(!0)}},kt={init:function(){this.setColour(st),this.appendValueInput("STR1").setCheck(String),this.appendValueInput("STR2").appendField(F.Msg.MIXLY_COMPARETO).setCheck(String),this.setOutput(!0,Number),this.setInputsInline(!0),this.setTooltip(F.Msg.MIXLY_COMPARETO_HELP)}},yt={init:function(){var e=[[F.Msg.TEXT_UPPER,"upper"],[F.Msg.TEXT_TITLE,"title"],[F.Msg.TEXT_CAPITALIZE,"capitalize"],[F.Msg.TEXT_SWAPCASE,"swapcase"],[F.Msg.TEXT_LOWER,"lower"]];this.setColour(st),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_GET).appendField(new F.FieldDropdown(e),"CAPITAL").setCheck(String),this.setOutput(!0,String);var t=this;this.setTooltip((function(){var e=t.getFieldValue("CAPITAL");return{upper:F.Msg.MIXLY_MIXPY_TEXT_UPPER_TOOLTIP,title:F.Msg.MIXLY_MIXPY_TEXT_TITLE_TOOLTIP,swapcase:F.Msg.MIXLY_MIXPY_TEXT_SWAPCASE_TOOLTIP,capitalize:F.Msg.MIXLY_MIXPY_TEXT_CAPITALIZE_TOOLTIP,lower:F.Msg.MIXLY_MIXPY_TEXT_LOWER_TOOLTIP}[e]}))}},vt={init:function(){var e=[[F.Msg.TEXT_LJUST,"ljust"],[F.Msg.TEXT_CENTER,"center"],[F.Msg.TEXT_RJUST,"rjust"]];this.setColour(st),this.appendValueInput("VAR").appendField(new F.FieldDropdown(e),"CENTER").setCheck(String),this.appendValueInput("WID").appendField(F.Msg.MIXLY_WIDTH).setCheck(Number),this.appendValueInput("Symbol").appendField(F.Msg.MIXLY_RECT_Fill).setCheck(String),this.setInputsInline(!0),this.setOutput(!0,String),this.setTooltip(F.Msg.MIXLY_MIXPY_TEXT_CENTER_TOOLTIP)}},Tt={init:function(){this.setColour(st),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_GET).setCheck(String),this.appendValueInput("STR").appendField(F.Msg.MIXLY_MID+F.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER).setCheck(String),this.appendDummyInput().appendField(F.Msg.MIXLY_LIST_INDEX),this.setInputsInline(!0),this.setOutput(!0,String),this.setTooltip(F.Msg.MIXLY_MIXPY_TEXT_FIND_TOOLTIP)}},Et={init:function(){this.setColour(st),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_PYTHON_TEXT_JOIN_SEQ_USE_STR).setCheck(String),this.appendValueInput("LIST").appendField(F.Msg.MIXLY_PYTHON_TEXT_JOIN_SEQ_SEQ).setCheck("List","Tuple","Set","Dict"),this.appendDummyInput().appendField(F.Msg.MIXLY_PYTHON_TEXT_JOIN_SEQ_GET_STR),this.setInputsInline(!0),this.setOutput(!0,String),this.setTooltip(F.Msg.MIXLY_PYTHON_TEXT_JOIN_SEQ_TOOLTIP)}},It={init:function(){this.setColour(st),this.appendValueInput("VAR").setCheck(String),this.appendValueInput("STR1").appendField(F.Msg.MIXLY_MIXPY_REPLACE).setCheck(String),this.appendValueInput("STR2").appendField(F.Msg.LISTS_SET_INDEX_INPUT_TO).setCheck(String),this.setInputsInline(!0),this.setOutput(!0,String),this.setTooltip(F.Msg.MIXLY_MIXPY_TEXT_REPLACE_TOOLTIP)}},wt={init:function(){this.setColour(st),this.appendValueInput("VAR"),this.appendValueInput("VAL").appendField(F.Msg.LIST_SPLIT_AS),this.appendDummyInput("").appendField(F.Msg.LIST_SPLIT),this.setOutput(!0,"List"),this.setTooltip(F.Msg.MIXLY_MIXPY_TEXT_SPLIT_TOOLTIP),this.setInputsInline(!0)}},xt={init:function(){var e=[[F.Msg.TEXT_TRIM_BOTH,"strip"],[F.Msg.TEXT_TRIM_LEFT,"lstrip"],[F.Msg.TEXT_TRIM_RIGHT,"rstrip"]];this.setColour(st),this.appendValueInput("VAR"),this.appendDummyInput("").appendField(F.Msg.TEXT_STRIM),this.appendDummyInput("").appendField(new F.FieldDropdown(e),"TOWHAT"),this.appendDummyInput("").appendField(F.Msg.TEXT_BLANK),this.setOutput(!0,String),this.setInputsInline(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("TOWHAT");return{strip:F.Msg.TEXT_TRIM_BOTH_TOOLTIP,lstrip:F.Msg.TEXT_TRIM_LEFT_TOOLTIP,rstrip:F.Msg.TEXT_TRIM_RIGHT_TOOLTIP}[e]}))}},At={init:function(){this.setColour(st),this.appendDummyInput("").appendField(F.Msg.MIXLY_MICROPYTHON_FORMAT),this.appendDummyInput("").appendField(new F.FieldTextInput("str"),"VAR"),this.itemCount_=1,this.updateShape_(),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setInputsInline(!0),this.setMutator(new F.icons.MutatorIcon(["text_create_with_item"],this)),this.setOutput(!0),this.setTooltip(F.Msg.MIXLY_MIXPY_TEXT_FORMAT_TOOLTIP)},mutationToDom:function(){var e=document.createElement("mutation");return e.setAttribute("items",this.itemCount_),e},domToMutation:function(e){this.itemCount_=parseInt(e.getAttribute("items"),10),this.updateShape_()},decompose:function(e){var t=e.newBlock("text_create_with_container");t.initSvg();for(var n=t.getInput("STACK").connection,i=0;it?e[t]:0==t?'"key"':'"key'+(t+1)+'"'),"KEY"+t).appendField(":")}},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(e,t){F.Names.equals(e,this.getFieldValue("VAR"))&&this.setTitleValue(t,"VAR")}},In={init:function(){this.setColour(Tn),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_TYPE_DICT),this.appendStatementInput("STACK"),this.setTooltip(F.Msg.DICTS_CREATE_WITH_CONTAINER_TOOLTIP),this.contextMenu=!1}},wn={init:function(){this.setColour(Tn),this.appendDummyInput().appendField(F.Msg.DICTS_CREATE_WITH_ITEM_TITLE),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.DICTS_CREATE_WITH_ITEM_TOOLTIP),this.contextMenu=!1}},xn={init:function(){this.setColour(Tn),this.appendValueInput("DICT").setCheck("Dict"),this.appendDummyInput("").appendField(F.Msg.DICT_KEYS),this.setTooltip(F.Msg.DICTS_KEYS_TOOLTIP),this.setOutput(!0,"List")}},An={init:function(){this.setColour(Tn),this.appendValueInput("DICT").setCheck("Dict"),this.appendValueInput("KEY").appendField(F.Msg.DICTS_GET_IN),this.appendDummyInput("").appendField(F.Msg.DICTS_ADD_VALUE),this.setOutput(!0),this.setTooltip(F.Msg.DICTS_GET_TOOLTIP)}},$n={init:function(){this.setColour(Tn),this.appendValueInput("DICT").setCheck("Dict"),this.appendValueInput("KEY").appendField(F.Msg.DICTS_GET_IN),this.appendDummyInput("").appendField(F.Msg.DICTS_ADD_VALUE),this.appendValueInput("VAR").appendField(F.Msg.DICTS_DEFAULT_VALUE),this.setOutput(!0),this.setTooltip(F.Msg.DICTS_GET_DEFAULT_TOOLTIP)}},On={init:function(){this.setColour(Tn),this.appendValueInput("DICT"),this.appendValueInput("KEY").appendField(F.Msg.DICTS_ADD),this.appendDummyInput(),this.appendValueInput("VAR").appendField(F.Msg.DICTS_ADD_VALUE),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.DICTS_ADD_OR_CHANGE_TOOLTIP)}},Mn={init:function(){this.setColour(Tn),this.appendValueInput("DICT"),this.appendValueInput("KEY").appendField(F.Msg.DICTS_DELETE_IN),this.appendDummyInput("").appendField(F.Msg.DICTS_DELETE_VALUE),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.DICTS_DELETE_TOOLTIP)}},Cn={init:function(){this.setColour(Tn),this.appendValueInput("DICT2").setCheck("Dict").appendField(F.Msg.MAKE_DICT),this.appendValueInput("DICT").setCheck("Dict").appendField(F.Msg.DICT_UPDATE),this.appendDummyInput("").appendField(F.Msg.MIXLY_MID),this.setTooltip(F.Msg.DICTS_UPDATE_TOOLTIP),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Rn={init:function(){this.setColour(Tn),this.appendValueInput("DICT").setCheck("Dict"),this.appendDummyInput("").appendField(F.Msg.DICT_CLEAR),this.setTooltip(F.Msg.DICTS_CLEAR_TOOLTIP),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Nn={init:function(){this.setColour(Tn),this.appendValueInput("DICT").setCheck("Dict"),this.appendDummyInput("").appendField(F.Msg.DICT_ITEMS),this.setTooltip(F.Msg.DICTS_ITEMS_TOOLTIP),this.setOutput(!0,"List")}},Ln={init:function(){this.setColour(Tn),this.appendValueInput("DICT").setCheck("Dict"),this.appendDummyInput("").appendField(F.Msg.DICT_VALUES),this.setTooltip(F.Msg.DICTS_VALUES_TOOLTIP),this.setOutput(!0,"List")}},Dn={init:function(){this.setColour(Tn),this.appendValueInput("DICT").setCheck("Dict"),this.appendDummyInput("").appendField(F.Msg.MIXLY_LENGTH),this.setTooltip(F.Msg.DICT_LENGTH_TOOLTIP),this.setOutput(!0,Number)}},Pn={init:function(){this.setColour(Tn),this.appendValueInput("DICT").setCheck("Dict"),this.appendDummyInput("").appendField(F.Msg.DICT_DELDICT),this.setTooltip(F.Msg.DICTS_DEL_TOOLTIP),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Fn={init:function(){this.MODE=[[F.Msg.DICTS_ADD_OR_CHANGE,"INSERT"],[F.Msg.MIXLY_MICROBIT_JS_DELETE_VAR,"DELETE"]],this.setHelpUrl(F.Msg.LISTS_GET_SUBLIST_HELPURL),this.setColour(Tn),this.appendValueInput("DICT").setCheck("Dict"),this.appendDummyInput("AT2"),this.appendValueInput("KEY"),this.appendDummyInput("").appendField(F.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE).appendField(F.Msg.DICTS_ADD_VALUE),this.updateAt_(!0),this.setInputsInline(!0),this.setOutput(!1),this.setPreviousStatement(!0),this.setNextStatement(!0);var e=this;this.setTooltip((function(){var t="";switch(e.getFieldValue("WHERE")){case"INSERT":t=F.Msg.DICTS_ADD_TOOLTIP;break;case"DELETE":t=F.Msg.DICTS_DELETE_TOOLTIP}return t}))},mutationToDom:function(){var e=document.createElement("mutation"),t=this.getInput("AT2").type==F.INPUT_VALUE;return e.setAttribute("at2",t),e},domToMutation:function(e){var t="true"==e.getAttribute("at2");this.updateAt_(t)},updateAt_:function(e){this.removeInput("AT2"),this.removeInput("ORDINAL",!0),e?this.appendValueInput("AT2").setCheck(Number):this.appendDummyInput("AT2");var t=new F.FieldDropdown(this.MODE,(function(t){var n="INSERT"==t;if(n!=e){var i=this.sourceBlock_;return i.updateAt_(n),i.setFieldValue(t,"WHERE"),null}}));this.getInput("AT2").appendField(t,"WHERE")}},Bn={init:function(){this.setColour(Tn),this.appendValueInput("DICT").setCheck("Dict"),this.appendDummyInput("").appendField(F.Msg.blockpy_DICT_POP),this.appendValueInput("KEY"),this.appendDummyInput("").appendField(F.Msg.DICTS_ADD_VALUE),this.setTooltip(F.Msg.DICT_POP_TOOLTIP),this.setInputsInline(!0),this.setOutput(!0)}},jn={init:function(){this.setColour(Tn),this.appendValueInput("DICT").setCheck("Dict"),this.appendValueInput("KEY").appendField(F.Msg.DICTS_SET_DEFAULT),this.appendDummyInput("").appendField(F.Msg.DICTS_DEFAULT_VALUE),this.appendValueInput("VAR"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.DICTS_SETDEFAULT_TOOLTIP)}},Vn={init:function(){this.setColour(Tn),this.appendDummyInput("").appendField(new F.FieldLabel(F.Msg.MIXLY_MICROBIT_TYPE_DICT),"TIP").appendField(" "),this.itemCount_=3,this.updateShape_(),this.setOutput(!0,"Dict"),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setMutator(new F.icons.MutatorIcon(["dicts_create_with_item"],this)),this.setTooltip(F.Msg.DICTS_CREATE_WITH_TOOLTIP)},mutationToDom:function(){var e=document.createElement("mutation");return e.setAttribute("items",this.itemCount_),e},domToMutation:function(e){this.itemCount_=parseInt(e.getAttribute("items"),10),this.updateShape_()},decompose:function(e){var t=e.newBlock("dicts_create_with_container");t.initSvg();for(var n=t.getInput("STACK").connection,i=0;it?e[t]:0==t?'"key"':'"key'+(t+1)+'"'),"KEY"+t).appendField(":")}},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(e,t){F.Names.equals(e,this.getFieldValue("VAR"))&&this.setTitleValue(t,"VAR")}},Un={init:function(){this.setColour(Tn),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_TODICT),this.setOutput(!0),this.setTooltip(F.Msg.MIXLY_PYTHON_TOOLTIP_TODICT)}},Yn={init:function(){this.setColour(Tn),this.appendValueInput("DICT").setCheck("Dict"),this.appendDummyInput("").appendField(F.Msg.MIXLY_TO_JSON),this.setTooltip(F.Msg.MIXLY_TO_JSON_TOOLTIP),this.setOutput(!0)}},Gn={init:function(){this.setColour(Tn),this.appendValueInput("VAR"),this.appendDummyInput("").appendField(F.Msg.MIXLY_CONVERT_TO_JSON),this.setTooltip(F.Msg.MIXLY_CONVERT_TO_JSON_TOOLTIP),this.setOutput(!0)}},Xn={init:function(){this.setColour(Tn),this.appendValueInput("DICT").setCheck("Dict"),this.appendValueInput("VAR1").appendField("key1"),this.appendValueInput("VAR2").appendField("index"),this.appendValueInput("VAR3").appendField("key2"),this.appendValueInput("VAR4").appendField("key3"),this.setInputsInline(!0),this.setTooltip(F.Msg.MIXLY_CONVERT_TO_JSON_TOOLTIP),this.setOutput(!0)}},Hn={init:function(){this.setColour(Tn),this.appendValueInput("DICT"),this.appendDummyInput("").appendField(F.Msg.MIXLY_TO_JSON),this.setTooltip(F.Msg.MIXLY_TO_JSON_TOOLTIP),this.setOutput(!0)}},zn=210,qn={init:function(){var e=F.RTL?[["=","EQ"],["≠","NEQ"],[">","LT"],["≥","LTE"],["<","GT"],["≤","GTE"]]:[["=","EQ"],["≠","NEQ"],["<","LT"],["≤","LTE"],[">","GT"],["≥","GTE"]];this.setColour(zn),this.setOutput(!0,Boolean),this.appendValueInput("A"),this.appendValueInput("B").appendField(new F.FieldDropdown(e),"OP"),this.setInputsInline(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("OP");return{EQ:F.Msg.LOGIC_COMPARE_TOOLTIP_EQ,NEQ:F.Msg.LOGIC_COMPARE_TOOLTIP_NEQ,LT:F.Msg.LOGIC_COMPARE_TOOLTIP_LT,LTE:F.Msg.LOGIC_COMPARE_TOOLTIP_LTE,GT:F.Msg.LOGIC_COMPARE_TOOLTIP_GT,GTE:F.Msg.LOGIC_COMPARE_TOOLTIP_GTE}[e]})),this.prevBlocks_=[null,null]}},Wn={init:function(){var e=F.RTL?[[">","LT"],["≥","LTE"],["<","GT"],["≤","GTE"]]:[["<","LT"],["≤","LTE"],[">","GT"],["≥","GTE"]],t=F.RTL?[[">","LT"],["≥","LTE"],["<","GT"],["≤","GTE"]]:[["<","LT"],["≤","LTE"],[">","GT"],["≥","GTE"]];this.setColour(zn),this.setOutput(!0,Boolean),this.appendValueInput("A"),this.appendValueInput("B").appendField(new F.FieldDropdown(e),"OP1"),this.appendValueInput("C").appendField(new F.FieldDropdown(t),"OP2"),this.setInputsInline(!0),this.setTooltip(F.Msg.MIXLY_PYTHON_LOGIC_COMPARE_CONTINOUS_TOOLTIP)}},Kn={init:function(){var e=[[F.Msg.LOGIC_OPERATION_AND,"AND"],[F.Msg.LOGIC_OPERATION_OR,"OR"],[F.Msg.LOGIC_OPERATION_NOR,"NOR"],[F.Msg.LOGIC_OPERATION_XOR,"XOR"]];this.setColour(zn),this.setOutput(!0,Boolean),this.appendValueInput("A").setCheck([Boolean,Number]),this.appendValueInput("B").setCheck([Boolean,Number]).appendField(new F.FieldDropdown(e),"OP"),this.setInputsInline(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("OP");return{AND:F.Msg.LOGIC_OPERATION_TOOLTIP_AND,OR:F.Msg.LOGIC_OPERATION_TOOLTIP_OR,NOR:F.Msg.LOGIC_OPERATION_TOOLTIP_NOR,XOR:F.Msg.LOGIC_OPERATION_TOOLTIP_XOR}[e]}))}},Jn={init:function(){this.setColour(zn),this.setOutput(!0,Boolean),this.appendValueInput("BOOL").setCheck([Number,Boolean]).appendField(F.Msg.LOGIC_NEGATE_TITLE),this.setTooltip(F.Msg.LOGIC_NEGATE_TOOLTIP)}},Qn={init:function(){var e=[[F.Msg.LOGIC_BOOLEAN_TRUE,"TRUE"],[F.Msg.LOGIC_BOOLEAN_FALSE,"FALSE"]];this.setColour(zn),this.setOutput(!0,Boolean),this.appendDummyInput().appendField(new F.FieldDropdown(e),"BOOL"),this.setTooltip(F.Msg.LOGIC_BOOLEAN_TOOLTIP)}},Zn={init:function(){this.setColour(zn),this.setOutput(!0),this.appendDummyInput().appendField(F.Msg.LOGIC_NULL),this.setTooltip(F.Msg.LOGIC_NULL_TOOLTIP)}},ei={init:function(){this.setColour(zn),this.appendValueInput("A"),this.appendValueInput("B").appendField(F.Msg.LOGIC_TERNARY_IF_TRUE),this.appendValueInput("C").appendField(F.Msg.LOGIC_TERNARY_IF_FALSE),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(F.Msg.MIXLY_TOOLTIP_LOGIT_TRUEORFALSE)}},ti={init:function(){var e=[[F.Msg.TEXT_APPEND_TO,"in"],[F.Msg.MIXLY_PYTHON_LOGIC_IS_NOT_IN,"not in"]];this.setColour(zn),this.appendValueInput("A"),this.appendValueInput("B").setCheck([String,"List"]).appendField(new F.FieldDropdown(e),"BOOL"),this.appendDummyInput("").appendField(F.Msg.MICROBIT_LOGIC_IS_IN),this.setOutput(!0,Boolean),this.setInputsInline(!0),this.setTooltip(F.Msg.IN)}},ni={init:function(){var e=[[F.Msg.MIXLY_PYTHON_LOGIC_IS,"is"],[F.Msg.MIXLY_PYTHON_LOGIC_IS_NOT,"is not"]];this.setColour(zn),this.appendValueInput("A"),this.appendValueInput("B").appendField(new F.FieldDropdown(e),"BOOL"),this.setOutput(!0,Boolean),this.setInputsInline(!0),this.setTooltip(F.Msg.MIXLY_PYTHON_LOGIC_IS_TOOLTIP)}},ii={init:function(){this.setColour(zn),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_TOBOOL),this.setOutput(!0,Boolean),this.setTooltip(F.Msg.MIXLY_PYTHON_TOOLTIP_TOBOOL)}},ri={init:function(){this.setColour(0),this.appendValueInput("fn").setCheck(String).appendField(F.Msg.MIXLY_PYTHON_STORAGE_OPEN_FILE_WITH_OS+"(For Windows)"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0)}},si={init:function(){this.setColour(0),this.appendValueInput("FILENAME").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE).appendField(new F.FieldDropdown([[F.Msg.MIXLY_MICROBIT_PY_STORAGE_READ,"r"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE,"w"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ,"rb"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE,"wb"]]),"MODE"),this.appendValueInput("FILE").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_AS),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("MODE"),n=F.Msg.MIXLY_USE,i=F.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE,r=F.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE,s=F.Msg.MIXLY_BELONG;return n+{r:F.Msg.MIXLY_MICROBIT_PY_STORAGE_READ,w:F.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE,rb:F.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ,wb:F.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE}[t]+s+i+r}))},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(e,t){F.Names.equals(e,this.getFieldValue("VAR"))&&this.setTitleValue(t,"VAR")}},oi={init:function(){this.setColour(0),this.appendValueInput("FILENAME").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE).appendField(new F.FieldDropdown([[F.Msg.MIXLY_MICROBIT_PY_STORAGE_READ,"r"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE,"w"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ,"rb"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE,"wb"]]),"MODE"),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setInputsInline(!0),this.setOutput(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("MODE"),n=F.Msg.MIXLY_USE,i=F.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE,r=F.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE,s=F.Msg.MIXLY_BELONG,o=F.Msg.PY_STORAGE_FILE_OBJECT;return n+{r:F.Msg.MIXLY_MICROBIT_PY_STORAGE_READ,w:F.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE,rb:F.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ,wb:F.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE}[t]+s+i+r+o}))}},ai={init:function(){this.setColour(0),this.appendValueInput("FILENAME").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE);this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE).appendField(new F.FieldDropdown([[F.Msg.MIXLY_MICROBIT_PY_STORAGE_READ,"r"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE,"w"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ,"rb"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE,"wb"]]),"MODE"),this.appendDummyInput().appendField(F.Msg.MIXPY_TEXT_ENCODE).appendField(new F.FieldDropdown([["ANSI","ANSI"],["gbk","gbk"],["utf-8","utf-8"]]),"CODE"),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setInputsInline(!0),this.setOutput(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("MODE"),n=F.Msg.MIXLY_USE,i=F.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE,r=F.Msg.MIXLY_MICROBIT_PY_STORAGE_OPEN_FILE,s=F.Msg.MIXLY_BELONG,o=F.Msg.PY_STORAGE_FILE_OBJECT;return n+{r:F.Msg.MIXLY_MICROBIT_PY_STORAGE_READ,w:F.Msg.MIXLY_MICROBIT_PY_STORAGE_WRITE,rb:F.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_READ,wb:F.Msg.MIXLY_MICROBIT_PY_STORAGE_BIT_WRITE}[t]+s+i+r+o}))}},li={init:function(){this.setColour(0),this.appendValueInput("data").setCheck(String).appendField(F.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE),this.appendValueInput("FILE").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_WRITE),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(F.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE+F.Msg.MIXLY_MICROBIT_TYPE_STRING+F.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_WRITE)}},ui={init:function(){this.setColour(0),this.appendValueInput("FILE").setCheck("Variable").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_FROM_FILE),this.appendDummyInput().appendField(new F.FieldDropdown([[F.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL,"read"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_ONE_LINE,"readline"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL_LINES,"readlines"]]),"MODE"),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,String)}},ci={init:function(){this.setColour(0),this.appendValueInput("FILE").setCheck("Variable").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_FROM_FILE),this.appendDummyInput().appendField(new F.FieldDropdown([[F.Msg.MIXLY_MICROBIT_PY_STORAGE_NO_MORE_THAN_SIZE,"read"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_ONE_LINE_NO_MORE_THAN_SIZE,"readline"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL_LINES_NO_MORE_THAN_SIZE,"readlines"]]),"MODE"),this.appendValueInput("SIZE").setCheck(Number),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,String);var e=this;this.setTooltip((function(){var t=e.getFieldValue("MODE"),n=F.Msg.MIXLY_MICROBIT_PY_STORAGE_FROM_FILE,i=F.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER;return n+{read:F.Msg.MIXLY_MICROBIT_PY_STORAGE_NO_MORE_THAN_SIZE,readline:F.Msg.MIXLY_MICROBIT_PY_STORAGE_ONE_LINE_NO_MORE_THAN_SIZE,readlines:F.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL_LINES_NO_MORE_THAN_SIZE}[t]+"x"+i}))}},pi={init:function(){this.setColour(0),this.appendValueInput("FILE").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_FROM_FILE),this.setNextStatement(!0),this.appendValueInput("SIZE").setCheck(Number).appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_ONE_LINE_NO_MORE_THAN_SIZE),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,String),this.setTooltip(F.Msg.MICROBIT_PYTHON_TYPE)}},hi={init:function(){this.setColour(0),this.appendValueInput("FILE").appendField(F.Msg.HTML_FILE),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_CAN_WRITE_ORNOT),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,Boolean),this.setTooltip(F.Msg.MIXLY_MICROBIT_PY_STORAGE_CAN_WRITE_ORNOT1)}},di={init:function(){this.setColour(0),this.appendValueInput("FILE").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_GET),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_FILENAME),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,String),this.setTooltip(F.Msg.MIXLY_MICROBIT_PY_STORAGE_GET_FILENAME)}},fi={init:function(){this.setColour(0),this.appendValueInput("FILE").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_CLOSE_FILE),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setOutput(!1),this.setTooltip(F.Msg.MIXLY_MICROBIT_PY_STORAGE_CLOSE_FILE)}},_i={init:function(){this.setColour(0),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_LIST_ALL_FILES),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,"List"),this.setTooltip(F.Msg.MIXLY_MICROBIT_PY_STORAGE_LIST_ALL_FILES)}};F.Msg.MIXLY_MICROBIT_PY_STORAGE_DELETE_FILE;const mi={init:function(){this.setColour(0),this.appendDummyInput().appendField(new F.FieldDropdown([[F.Msg.MIXLY_MICROBIT_PY_STORAGE_DELETE_FILE,"remove"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_DELETE_DIRS,"removedirs"]]),"MODE"),this.appendValueInput("FILE").setCheck(String),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setOutput(!1),this.setTooltip(F.Msg.MIXLY_MICROBIT_PY_STORAGE_DELETE_FILE)}},bi={init:function(){this.setColour(0),this.appendValueInput("FILE").setCheck(String).appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_GET_FILE_SIZE),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_SIZE),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,Number),this.setTooltip(F.Msg.MIXLY_MICROBIT_PY_STORAGE_GET_FILE_SIZE+F.Msg.MIXLY_MICROBIT_PY_STORAGE_SIZE)}},gi={init:function(){this.setColour(0),this.appendValueInput("FILE").setCheck(String).appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_RETURN_FILE),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_PRESENT_LOCATION),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,Number),this.setTooltip(F.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_TELL)}},Si={init:function(){this.setColour(0),this.appendValueInput("FILE").setCheck("Variable").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_SET_FILE_POSITION),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_CURRENT_POSITION),this.appendDummyInput().appendField(new F.FieldDropdown([[F.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_START,"start"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_CURRENT,"current"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_END,"end"]]),"MODE"),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_OFFSET),this.appendValueInput("SIZE").setCheck(Number),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0);var e=this;this.setTooltip((function(){var t=e.getFieldValue("MODE"),n=F.Msg.MIXLY_MICROBIT_PY_STORAGE_SET_FILE_POSITION+F.Msg.MIXLY_MICROBIT_PY_STORAGE_CURRENT_POSITION,i=F.Msg.MIXLY_MICROBIT_PY_STORAGE_CHARACTER,r=F.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_OFFSET;return n+" "+{start:F.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_START,current:F.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_CURRENT,end:F.Msg.MIXLY_MICROBIT_PY_STORAGE_FILE_SEEK_END}[t]+r+"x"+i}))}},ki={init:function(){this.setColour(0),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_GET_CURRENT_DIR),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,"List"),this.setTooltip(F.Msg.MIXLY_MICROBIT_PY_STORAGE_GET_CURRENT_DIR)}},yi={init:function(){this.setColour(0),this.appendValueInput("PATH").setCheck(String).appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_PATH),this.appendDummyInput().appendField(F.Msg.MIXLY_ESP32_SET),this.appendDummyInput().appendField(new F.FieldDropdown([[F.Msg.MIXLY_MICROBIT_PY_STORAGE_MKDIR,"mkdir"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_MAKEDIRS,"makedirs"]]),"MODE"),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setOutput(!1);var e=this;this.setTooltip((function(){var t=e.getFieldValue("MODE");return F.Msg.MIXLY_MICROBIT_PY_STORAGE_PATH+"x"+F.Msg.MIXLY_ESP32_SET+{mkdir:F.Msg.MIXLY_MICROBIT_PY_STORAGE_MKDIR,makedirs:F.Msg.MIXLY_MICROPYTHON_SOCKET_MAKEDIRS}[t]}))}},vi={init:function(){this.setColour(0),this.appendValueInput("FILE").setCheck(String).appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_RENAME),this.appendValueInput("NEWFILE").setCheck(String).appendField(F.Msg.MIXLY_AS),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setOutput(!1),this.setTooltip(F.Msg.MIXLY_MICROBIT_PY_STORAGE_RENAME)}},Ti={init:function(){this.setColour(0),this.appendValueInput("FILE").setCheck(String).appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_CHANGE_DIR),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setOutput(!1),this.setTooltip(F.Msg.MIXLY_MICROBIT_PY_STORAGE_CHANGE_DIR)}},Ei={init:function(){this.setColour(0),this.appendValueInput("FILE").setCheck(String).appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH),this.appendDummyInput().appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_IS_OR_NOT),this.appendDummyInput().appendField(new F.FieldDropdown([[F.Msg.HTML_FILE,"isfile"],[F.Msg.MIXLY_MICROBIT_PY_STORAGE_IS_DIR,"isdir"]]),"MODE"),this.setInputsInline(!0),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0,Boolean);let e=this;this.setTooltip((function(){var t=e.getFieldValue("MODE");return F.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH+"x"+F.Msg.MIXLY_MICROBIT_PY_STORAGE_IS_OR_NOT+{isfile:F.Msg.MIXLY_MICROBIT_PY_STORAGE_MKDIR,isdir:F.Msg.MIXLY_MICROPYTHON_SOCKET_MAKEDIRS}[t]}))}},Ii={init:function(){this.setColour(0),this.appendValueInput("SPISUB").appendField(F.Msg.CONTROLS_FOR_INPUT_WITH+"SPI").setCheck("var"),this.appendValueInput("PINSUB").appendField("CS"),this.appendValueInput("SUB").appendField(F.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE).setCheck("var"),this.appendDummyInput("").appendField(F.Msg.MIXLY_SETUP+F.Msg.LISTS_SET_INDEX_INPUT_TO).appendField(F.Msg.MIXLY_SD_CARD),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null)}},wi={init:function(){this.setColour(0),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_SD_CARD),this.appendValueInput("DIR").setCheck(String).appendField(F.Msg.MIXLY_SDCARD_MOUNT),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip()}},xi={init:function(){var e=F.Procedures.findLegalName("",this),t=new F.FieldTextInput(e,F.Procedures.rename);t.setSpellcheck(!1),this.appendDummyInput().appendField(t,"NAME").appendField("","PARAMS"),this.setMutator(new F.icons.MutatorIcon(["procedures_mutatorarg"],this)),(this.workspace.options.comments||this.workspace.options.parentWorkspace&&this.workspace.options.parentWorkspace.options.comments)&&F.Msg.PROCEDURES_DEFNORETURN_COMMENT&&this.setCommentText(F.Msg.PROCEDURES_DEFNORETURN_COMMENT),this.setStyle("procedure_blocks"),this.setTooltip(F.Msg.PROCEDURES_DEFNORETURN_TOOLTIP),this.setHelpUrl(F.Msg.PROCEDURES_DEFNORETURN_HELPURL),this.arguments_=[],this.argumentVarModels_=[],this.setStatements_(!0),this.statementConnection_=null},setStatements_:function(e){this.hasStatements_!==e&&(e?(this.appendStatementInput("STACK").appendField(F.Msg.PROCEDURES_DEFNORETURN_DO),this.getInput("RETURN")&&this.moveInputBefore("STACK","RETURN")):this.removeInput("STACK",!0),this.hasStatements_=e)},updateParams_:function(){var e="";this.arguments_.length&&(e=F.Msg.PROCEDURES_BEFORE_PARAMS+" "+this.arguments_.join(", ")),F.Events.disable();try{this.setFieldValue(e,"PARAMS")}finally{F.Events.enable()}},mutationToDom:function(e){var t=F.utils.xml.createElement("mutation");e&&t.setAttribute("name",this.getFieldValue("NAME"));for(var n=0;n"),this.appendValueInput("style").appendField(F.Msg.MIXLY_AIP_ATTR).setAlign(F.inputs.Align.RIGHT),this.appendStatementInput("DO").appendField(""),this.setInputsInline(!1),this.setPreviousStatement(!0),this.setNextStatement(!0)}},yr={init:function(){this.setColour(_r),this.appendDummyInput().appendField(F.Msg.HTML_STYLE),this.appendStatementInput("STYLE"),this.setOutput(!0)}},vr={init:function(){this.setColour(_r),this.appendDummyInput().appendField(F.Msg.HTML_FORM_CONTENT).appendField(new F.FieldDropdown([[F.Msg.HTML_TEXT,"text"],[F.Msg.HTML_EMAIL,"email"],[F.Msg.HTML_NUMBER,"number"],[F.Msg.HTML_PASSWORD,"password"],[F.Msg.HTML_CHECKBOX,"checkbox"],[F.Msg.HTML_RADIOBUTTON,"radiobutton"],[F.Msg.HTML_BUTTON,"button"],[F.Msg.HTML_COLOUR,"colour"],[F.Msg.HTML_DATE,"date"],[F.Msg.HTML_LOCALTIME,"local time"],[F.Msg.HTML_FILE,"file"],[F.Msg.HTML_HIDDEN,"hidden"],[F.Msg.HTML_IMAGE,"image"],[F.Msg.HTML_MONTH,"month"],[F.Msg.HTML_RANGE,"range"],[F.Msg.HTML_RESET,"reset"],[F.Msg.HTML_SEARCH,"search"],[F.Msg.HTML_SUBMIT,"submit"],[F.Msg.HTML_TELEPHONENUMBER,"telephone number"],[F.Msg.HTML_TIME,"time"],[F.Msg.HTML_URL,"url"],[F.Msg.HTML_WEEK,"week"]]),"LEVEL"),this.appendDummyInput().appendField(F.Msg.HTML_NAME).appendField(new F.FieldTextInput("car"),"NAME"),this.appendDummyInput().appendField(F.Msg.HTML_VALUE).appendField(new F.FieldTextInput("go"),"VALUE"),this.appendValueInput("style").appendField(F.Msg.MIXLY_AIP_ATTR).setAlign(F.inputs.Align.RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Tr={init:function(){this.setColour(_r),this.appendDummyInput().appendField(new F.FieldTextInput("property"),"KEY").appendField(":").appendField(new F.FieldTextInput("value"),"VALUE"),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Er={init:function(){this.setColour(_r),this.appendDummyInput().appendField(new F.FieldTextInput("property"),"KEY").appendField(":").appendField(new F.FieldColour("#ff0000"),"RGB_LED_COLOR"),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Ir={init:function(){this.setColour(_r),this.appendDummyInput().appendField(F.Msg.HTML_TEXT).appendField(new F.FieldTextInput("text"),"TEXT"),this.setPreviousStatement(!0),this.setNextStatement(!0)}},wr=160,xr={init:function(){this.setColour(wr),this.setPreviousStatement(!0),this.setNextStatement(!0),this.appendDummyInput().appendField("Tabular Abstraction:"),this.appendDummyInput().appendField(new F.FieldTable(""),"TEXT")}},Ar={init:function(){this.setColour(wr),this.setPreviousStatement(!0),this.setNextStatement(!0),this.appendDummyInput().appendField("Code Block:"),this.appendDummyInput().appendField(new F.FieldMultilineInput(""),"TEXT")}},$r={init:function(){this.setColour(wr),this.appendDummyInput().appendField("Code Expression:"),this.appendDummyInput().appendField(new F.FieldMultilineInput(""),"TEXT"),this.setOutput(!0)}},Or={init:function(){this.setColour(wr),this.setPreviousStatement(!0),this.setNextStatement(!0),this.appendValueInput("VALUE").appendField(""),this.setInputsInline(!1)}},Mr={init:function(){this.setColour(wr),this.appendDummyInput().appendTitle("Comment:").appendTitle(new F.FieldTextInput(""),"TEXT"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("This comment will be ignored by Python")}},Cr={init:function(){this.setColour(wr),this.appendValueInput("VALUE").appendField(F.Msg.TYPE_CHECK),this.setInputsInline(!1),this.setOutput(!0,"Type")}},Rr={init:function(){this.setColour(wr),this.itemCount_=1,this.updateShape_(),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setMutator(new F.icons.MutatorIcon(["text_print_multiple_item"],this)),this.setTooltip(F.Msg.TEXT_PRINT_TOOLTIP)},mutationToDom:function(){var e=document.createElement("mutation");return e.setAttribute("items",this.itemCount_),e},domToMutation:function(e){this.itemCount_=parseInt(e.getAttribute("items"),10),this.updateShape_()},decompose:function(e){var t=F.Block.obtain(e,"text_print_multiple_container");t.initSvg();for(var n=t.getInput("STACK").connection,i=0;i"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIMARKER_UP,"1"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIMARKER_DOWN,"2"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIMARKER_LEFT,"3"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIMARKER_RIGHT,"4"],[F.Msg.blockpy_PYLAB_PLOT_DOT_SQUARE,"s"],[F.Msg.blockpy_PYLAB_PLOT_DOT_PENTAGON,"p"],[F.Msg.blockpy_PYLAB_PLOT_DOT_STAR,"*"],[F.Msg.blockpy_PYLAB_PLOT_DOT_HEXAGON_VERTICAL,"h"],[F.Msg.blockpy_PYLAB_PLOT_DOT_HEXAGON_HORIZONTAL,"H"],[F.Msg.blockpy_PYLAB_PLOT_DOT_PLUS,"+"],[F.Msg.blockpy_PYLAB_PLOT_DOT_CROSS,"x"],[F.Msg.blockpy_PYLAB_PLOT_DOT_DIAMOND,"D"],[F.Msg.blockpy_PYLAB_PLOT_DOT_DIAMOND_SMALL,"d"],[F.Msg.blockpy_PYLAB_PLOT_DOT_VERTICAL,"|"],[F.Msg.blockpy_PYLAB_PLOT_DOT_HORIZONTAL,"_"]];this.appendValueInput("SER").setCheck("Series").appendField(F.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE),this.appendDummyInput().appendField(F.Msg.blockpy_PYLAB_PLOT),this.appendDummyInput("").appendField(F.Msg.blockpy_PYLAB_PLOT_DOT).appendField(new F.FieldDropdown(n),"DOT"),this.appendDummyInput("").appendField(F.Msg.blockpy_PYLAB_PLOT_LINE).appendField(new F.FieldDropdown(e),"LINE"),this.appendDummyInput("").appendField(F.Msg.HTML_COLOUR).appendField(new F.FieldDropdown(t),"COLOR"),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Jr={init:function(){this.setColour(jr),this.appendDummyInput().appendField(F.Msg.blockpy_PYLAB_SHOW),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Qr={init:function(){this.setColour(jr),this.appendDummyInput().appendField(F.Msg.mixpy_PL_AXES),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Zr={init:function(){this.setColour(jr),this.appendDummyInput().appendField(F.Msg.blockpy_PYLAB_LEGEND),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},es={init:function(){this.setColour(jr),this.appendDummyInput().appendField(F.Msg.blockpy_PYLAB_TITLE),this.appendValueInput("TITLE").setCheck(String),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},ts={init:function(){this.setColour(jr);var e=[[F.Msg.PYLAB_LABEL_X,"x"],[F.Msg.PYLAB_LABEL_Y,"y"]];this.appendDummyInput().appendField(F.Msg.blockpy_PYLAB_SET_LABEL).appendField(new F.FieldDropdown(e),"DIR"),this.appendValueInput("LABEL").appendField(F.Msg.blockpy_PYLAB_LABEL).setCheck(String),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},ns={init:function(){this.setColour(jr),this.appendValueInput("FROM").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.MIXLY_SPLITBYDOU).appendField(F.Msg.MIXPY_DATA_ARRAY_CREATE_FROM),this.appendValueInput("TO").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.MIXPY_DATA_ARRAY_CREATE_TO),this.appendValueInput("STEP").setCheck(Number).setAlign(F.inputs.Align.RIGHT).appendField(F.Msg.MIXLY_STEP),this.setInputsInline(!0),this.setOutput(!0),this.setTooltip(F.Msg.MIXLY_PYTHON_CONTROLS_RANGE_TOOLTIP)}},is={init:function(){this.setColour(jr);var e=[[F.Msg.mixpy_PYLAB_PLOT_BAR_PLOT,"plot"],[F.Msg.mixpy_PYLAB_PLOT_BAR_BAR,"bar"]];this.appendDummyInput().appendField(F.Msg.MIXLY_DISPLAY_DRAW).appendField(new F.FieldDropdown(e),"DIR"),this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_PLOT_X),this.appendValueInput("B").appendField(F.Msg.mixpy_PYLAB_PLOT_Y),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("DIR");return{plot:F.Msg.mixpy_PYLAB_PLOT_XY_TOOLTIP,bar:F.Msg.mixpy_PYLAB_PLOT_BAR_EASY_TOOLTIP}[e]}))}},rs={init:function(){this.setColour(jr);var e=[[F.Msg.COLOUR_RGB_BLUE,"b"],[F.Msg.COLOUR_RGB_GREEN,"g"],[F.Msg.COLOUR_RGB_RED,"r"],[F.Msg.COLOUR_CYAN,"c"],[F.Msg.COLOUR_MAGENTA,"m"],[F.Msg.COLOUR_YELLOW,"y"],[F.Msg.COLOUR_BLACK,"k"],[F.Msg.COLOUR_WHITE,"w"]],t=[[F.Msg.blockpy_PYLAB_PLOT_DOT_CIRCULAR,"."],[F.Msg.blockpy_PYLAB_PLOT_DOT_PIXEL,","],[F.Msg.blockpy_PYLAB_PLOT_DOT_LARGE_DOT,"o"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIANGLE_DOWN,"v"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIANGLE_UP,"^"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIANGLE_LEFT,"<"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIANGLE_RIGHT,">"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIMARKER_UP,"1"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIMARKER_DOWN,"2"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIMARKER_LEFT,"3"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIMARKER_RIGHT,"4"],[F.Msg.blockpy_PYLAB_PLOT_DOT_SQUARE,"s"],[F.Msg.blockpy_PYLAB_PLOT_DOT_PENTAGON,"p"],[F.Msg.blockpy_PYLAB_PLOT_DOT_STAR,"*"],[F.Msg.blockpy_PYLAB_PLOT_DOT_HEXAGON_VERTICAL,"h"],[F.Msg.blockpy_PYLAB_PLOT_DOT_HEXAGON_HORIZONTAL,"H"],[F.Msg.blockpy_PYLAB_PLOT_DOT_PLUS,"+"],[F.Msg.blockpy_PYLAB_PLOT_DOT_CROSS,"x"],[F.Msg.blockpy_PYLAB_PLOT_DOT_DIAMOND,"D"],[F.Msg.blockpy_PYLAB_PLOT_DOT_DIAMOND_SMALL,"d"],[F.Msg.blockpy_PYLAB_PLOT_DOT_VERTICAL,"|"],[F.Msg.blockpy_PYLAB_PLOT_DOT_HORIZONTAL,"_"]];this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_SCATTER).appendField(F.Msg.mixpy_PYLAB_PLOT_X),this.appendValueInput("B").appendField(F.Msg.mixpy_PYLAB_PLOT_Y),this.appendValueInput("S").appendField(F.Msg.MIXLY_MICROBIT_JS_NUMBER),this.appendDummyInput("").appendField(F.Msg.blockpy_PYLAB_PLOT_DOT).appendField(new F.FieldDropdown(t),"DOT"),this.appendDummyInput("").appendField(F.Msg.HTML_COLOUR).appendField(new F.FieldDropdown(e),"COLOR"),this.appendValueInput("TAG").setCheck(String).appendField(F.Msg.mixpy_PYLAB_TICKS_TAG),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},ss={init:function(){this.setColour(jr);var e=[[F.Msg.blockpy_PYLAB_PLOT_LINE_SOLID,"-"],[F.Msg.blockpy_PYLAB_PLOT_LINE_DOTTED,"--"],[F.Msg.blockpy_PYLAB_PLOT_LINE_CHAIN,"-."],[F.Msg.blockpy_PYLAB_PLOT_LINE_POINT_DOTTED,":"],[F.Msg.MIXLY_MICROBIT_JS_INOUT_PULL_NONE,""]],t=[[F.Msg.COLOUR_RGB_BLUE,"b"],[F.Msg.COLOUR_RGB_GREEN,"g"],[F.Msg.COLOUR_RGB_RED,"r"],[F.Msg.COLOUR_CYAN,"c"],[F.Msg.COLOUR_MAGENTA,"m"],[F.Msg.COLOUR_YELLOW,"y"],[F.Msg.COLOUR_BLACK,"k"],[F.Msg.COLOUR_WHITE,"w"]],n=[[F.Msg.blockpy_PYLAB_PLOT_DOT_CIRCULAR,"."],[F.Msg.blockpy_PYLAB_PLOT_DOT_PIXEL,","],[F.Msg.blockpy_PYLAB_PLOT_DOT_LARGE_DOT,"o"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIANGLE_DOWN,"v"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIANGLE_UP,"^"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIANGLE_LEFT,"<"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIANGLE_RIGHT,">"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIMARKER_UP,"1"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIMARKER_DOWN,"2"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIMARKER_LEFT,"3"],[F.Msg.blockpy_PYLAB_PLOT_DOT_TRIMARKER_RIGHT,"4"],[F.Msg.blockpy_PYLAB_PLOT_DOT_SQUARE,"s"],[F.Msg.blockpy_PYLAB_PLOT_DOT_PENTAGON,"p"],[F.Msg.blockpy_PYLAB_PLOT_DOT_STAR,"*"],[F.Msg.blockpy_PYLAB_PLOT_DOT_HEXAGON_VERTICAL,"h"],[F.Msg.blockpy_PYLAB_PLOT_DOT_HEXAGON_HORIZONTAL,"H"],[F.Msg.blockpy_PYLAB_PLOT_DOT_PLUS,"+"],[F.Msg.blockpy_PYLAB_PLOT_DOT_CROSS,"x"],[F.Msg.blockpy_PYLAB_PLOT_DOT_DIAMOND,"D"],[F.Msg.blockpy_PYLAB_PLOT_DOT_DIAMOND_SMALL,"d"],[F.Msg.blockpy_PYLAB_PLOT_DOT_VERTICAL,"|"],[F.Msg.blockpy_PYLAB_PLOT_DOT_HORIZONTAL,"_"]];this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_PLOT_XY).appendField(F.Msg.mixpy_PYLAB_PLOT_X),this.appendValueInput("B").appendField(F.Msg.mixpy_PYLAB_PLOT_Y),this.appendDummyInput("").appendField(F.Msg.blockpy_PYLAB_PLOT_DOT).appendField(new F.FieldDropdown(n),"DOT"),this.appendDummyInput("").appendField(F.Msg.blockpy_PYLAB_PLOT_LINE).appendField(new F.FieldDropdown(e),"LINE"),this.appendDummyInput("").appendField(F.Msg.HTML_COLOUR).appendField(new F.FieldDropdown(t),"COLOR"),this.appendValueInput("TAG").setCheck(String).appendField(F.Msg.mixpy_PYLAB_TICKS_TAG),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.mixpy_PYLAB_PLOT_XY_TOOLTIP)}},os={init:function(){this.setColour(jr);var e=[[F.Msg.MIXLY_TURTLE_WRITE_ALIGN_CENTER,"center"],[F.Msg.AILGN_EDGE,"edge"]];this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_BAR).appendField(F.Msg.mixpy_PYLAB_PLOT_X),this.appendValueInput("B").appendField(F.Msg.mixpy_PYLAB_PLOT_Y),this.appendValueInput("WIDTH").setCheck(Number).appendField(F.Msg.MIXLY_WIDTH),this.appendDummyInput("").appendField(F.Msg.mixpy_PYLAB_BAR_ALIGN).appendField(new F.FieldDropdown(e),"ALIGN"),this.appendDummyInput().appendField(F.Msg.HTML_COLOUR).appendField(new F.FieldColour("#0000ff"),"COLOR"),this.appendValueInput("TAG").setCheck(String).appendField(F.Msg.mixpy_PYLAB_TICKS_TAG),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.mixpy_PYLAB_PLOT_XY_TOOLTIP)}},as={init:function(){this.setColour(jr);var e=[[F.Msg.mixpy_PL_PIE_SHADOW_N,"False"],[F.Msg.mixpy_PL_PIE_SHADOW_Y,"True"]],t=[[F.Msg.mixpy_PL_PIE_SHADOW_N,"None"],[F.Msg.mixpy_PYLAB_PIE_AUTOPCT_Z,"%.0f%%"],[F.Msg.mixpy_PYLAB_PIE_AUTOPCT_O,"%.1f%%"],[F.Msg.mixpy_PYLAB_PIE_AUTOPCT_T,"%.2f%%"]];this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_PIE).appendField(F.Msg.COLOUR_BLEND_RATIO),this.appendValueInput("B").appendField(F.Msg.mixpy_PYLAB_TICKS_TAG),this.appendValueInput("EXPLODE").appendField(F.Msg.mixpy_PYLAB_PIE_EXPLODE),this.appendDummyInput("").appendField(F.Msg.mixpy_PYLAB_PIE_AUTOPCT).appendField(new F.FieldDropdown(t),"autopct"),this.appendDummyInput("").appendField(F.Msg.mixpy_PYLAB_PIE_SHADOW).appendField(new F.FieldDropdown(e),"SHADOW"),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.mixpy_PYLAB_PLOT_XY_TOOLTIP)}},ls={init:function(){this.setColour(jr),this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_HIST).appendField(F.Msg.MIXLY_SD_DATA),this.appendValueInput("B").appendField(F.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},us={init:function(){this.setColour(jr);var e=[[F.Msg.PYLAB_LABEL_X,"x"],[F.Msg.PYLAB_LABEL_Y,"y"]];this.appendDummyInput().appendField(F.Msg.MIXLY_SETTING).appendField(new F.FieldDropdown(e),"DIR"),this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_TICKS).appendField(F.Msg.MIXLY_MICROBIT_JS_I2C_VALUE),this.appendValueInput("B").appendField(F.Msg.mixpy_PYLAB_TICKS_TAG),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.mixpy_PYLAB_TICKS_TOOLTIP)}},cs={init:function(){var e=[["sin","sin"],["cos","cos"],["tan","tan"],["arcsin","arcsin"],["arccos","arccos"],["arctan","arctan"],[F.Msg.LANG_MATH_TO_ROUND,"round"],[F.Msg.LANG_MATH_TO_CEIL,"ceil"],[F.Msg.LANG_MATH_TO_FLOOR,"floor"]];this.setColour(jr),this.setOutput(!0),this.setInputsInline(!0),this.appendDummyInput().appendField(F.Msg.mixpy_NUMPY_TRIG),this.appendValueInput("NUM").setCheck(Number).appendField(new F.FieldDropdown(e),"OP"),this.setTooltip(F.Msg.mixpy_NUMPY_TRIG_TOOLTIP)}},ps={init:function(){this.setColour(jr),this.appendValueInput("VET").setCheck(Number).appendField(F.Msg.mixpy_SUBPLOT).appendField(F.Msg.mixpy_SUBPLOT_VERTICLE),this.appendValueInput("HOR").setCheck(Number).appendField(F.Msg.mixpy_SUBPLOT_HORIZEN),this.appendValueInput("NUM").setCheck(Number).appendField(F.Msg.mixpy_SUBPLOT_NUM),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.MIXLY_PYTHON_CONTROLS_RANGE_TOOLTIP)}},hs={init:function(){this.setColour(jr),this.appendValueInput("FILENAME").appendField(F.Msg.MIXPY_PANDAS_READ_CSV),this.appendDummyInput().appendField(new F.FieldDropdown([[F.Msg.mixpy_PANDAS_READCSV_HEADER_Y,"0"],[F.Msg.mixpy_PANDAS_READCSV_HEADER_N,"None"]]),"MODE"),this.appendDummyInput().appendField(F.Msg.mixpy_PANDAS_READCSV_TITLE),this.setOutput(!0),this.setInputsInline(!0),this.setTooltip(F.Msg.mixpy_PANDAS_READCSV_TOOLTIP)},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(e,t){F.Names.equals(e,this.getFieldValue("VAR"))&&this.setTitleValue(t,"VAR")}},ds={init:function(){this.setColour(jr),this.appendValueInput("DICT").setCheck("Dict"),this.appendValueInput("KEY").appendField(F.Msg.mixpy_DATAFRAME_GET),this.appendDummyInput("").appendField(F.Msg.mixpy_DATAFRAME_GET_INDEX).appendField(new F.FieldDropdown([[F.Msg.DATAFRAME_COLUMN,"column"],[F.Msg.DATAFRAME_RAW,"raw"]]),"MODE"),this.setOutput(!0),this.setTooltip(F.Msg.mixpy_DATAFRAME_GET_TOOLTIP)}},fs={init:function(){this.setColour(jr),this.appendValueInput("FILE").setCheck(String).appendField(F.Msg.mixpy_PL_SAVEFIG),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setOutput(!1),this.setTooltip(F.Msg.mixpy_PL_SAVEFIG_TOOLTIP)}},_s={init:function(){this.setColour(jr);var e=[[F.Msg.TEXT_TRIM_LEFT,"right"],[F.Msg.mixpy_PL_TEXT_CENTER,"center"],[F.Msg.TEXT_TRIM_RIGHT,"left"]],t=[[F.Msg.mixpy_PL_TEXT_TOP,"bottom"],[F.Msg.mixpy_PL_TEXT_CENTER,"center"],[F.Msg.mixpy_PL_TEXT_BOTTOM,"top"]];this.appendValueInput("VET").setCheck(Number).appendField(F.Msg.MIXLY_SETTING).appendField(F.Msg.mixpy_PL_TEXT_X),this.appendValueInput("HOR").setCheck(Number).appendField(F.Msg.mixpy_PL_TEXT_Y),this.appendValueInput("NUM").setCheck(Number).appendField(F.Msg.mixpy_PL_TEXT_TAG),this.appendDummyInput("").appendField(F.Msg.mixpy_PL_TEXT_HOR).appendField(new F.FieldDropdown(e),"HALIGN"),this.appendDummyInput("").appendField(F.Msg.mixpy_PL_TEXT_VER).appendField(new F.FieldDropdown(t),"VALIGN"),this.appendValueInput("FONTNUM").setCheck(Number).appendField(F.Msg.MIXLY_TURTLE_WRITE_FONT_NUM),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.mixpy_PL_TEXT_TOOLTIP)}},ms={init:function(){this.setColour(jr),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_TOARRAY),this.setOutput(!0,"List"),this.setTooltip(F.Msg.MIXLY_PYTHON_TOOLTIP_TOARRAY)}},bs={init:function(){this.setColour(jr),this.appendValueInput("SER").setCheck("Series").appendField(F.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE),this.appendDummyInput().appendField(F.Msg.blockpy_PYLAB_PLOT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},gs={init:function(){this.setColour(jr);var e=[[F.Msg.blockpy_PYLAB_PLOT_LINE_SOLID,"-"],[F.Msg.blockpy_PYLAB_PLOT_LINE_DOTTED,"--"],[F.Msg.blockpy_PYLAB_PLOT_LINE_CHAIN,"-."],[F.Msg.blockpy_PYLAB_PLOT_LINE_POINT_DOTTED,":"],[F.Msg.MIXLY_MICROBIT_JS_INOUT_PULL_NONE,""]],t=[[F.Msg.COLOUR_RGB_BLUE,"b"],[F.Msg.COLOUR_RGB_GREEN,"g"],[F.Msg.COLOUR_RGB_RED,"r"],[F.Msg.COLOUR_CYAN,"c"],[F.Msg.COLOUR_MAGENTA,"m"],[F.Msg.COLOUR_YELLOW,"y"],[F.Msg.COLOUR_BLACK,"k"],[F.Msg.COLOUR_WHITE,"w"]],n=[[F.Msg.blockpy_PYLAB_PLOT_DOT_CIRCULAR,"."],[F.Msg.blockpy_PYLAB_PLOT_DOT_PIXEL,","],[F.Msg.blockpy_PYLAB_PLOT_DOT_LARGE_DOT,"o"]];this.appendValueInput("SER").setCheck("Series").appendField(F.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE),this.appendDummyInput().appendField(F.Msg.blockpy_PYLAB_PLOT),this.appendDummyInput("").appendField(F.Msg.blockpy_PYLAB_PLOT_DOT).appendField(new F.FieldDropdown(n),"DOT"),this.appendDummyInput("").appendField(F.Msg.blockpy_PYLAB_PLOT_LINE).appendField(new F.FieldDropdown(e),"LINE"),this.appendDummyInput("").appendField(F.Msg.HTML_COLOUR).appendField(new F.FieldDropdown(t),"COLOR"),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Ss={init:function(){this.setColour(jr),this.appendDummyInput().appendField(F.Msg.blockpy_PYLAB_SHOW),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},ks={init:function(){this.setColour(jr),this.appendDummyInput().appendField(F.Msg.mixpy_PL_AXES),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},ys={init:function(){this.setColour(jr),this.appendDummyInput().appendField(F.Msg.blockpy_PYLAB_LEGEND),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},vs={init:function(){this.setColour(jr),this.appendDummyInput().appendField(F.Msg.blockpy_PYLAB_TITLE),this.appendValueInput("TITLE").setCheck(String),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Ts={init:function(){this.setColour(jr);var e=[[F.Msg.PYLAB_LABEL_X,"x"],[F.Msg.PYLAB_LABEL_Y,"y"]];this.appendDummyInput().appendField(F.Msg.blockpy_PYLAB_SET_LABEL).appendField(new F.FieldDropdown(e),"DIR"),this.appendValueInput("LABEL").appendField(F.Msg.blockpy_PYLAB_LABEL).setCheck(String),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Es={init:function(){this.setColour(jr);var e=[[F.Msg.mixpy_PYLAB_PLOT_BAR_PLOT,"plot"],[F.Msg.mixpy_PYLAB_PLOT_BAR_BAR,"bar"]];this.appendDummyInput().appendField(F.Msg.MIXLY_DISPLAY_DRAW).appendField(new F.FieldDropdown(e),"DIR"),this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_PLOT_X),this.appendValueInput("B").appendField(F.Msg.mixpy_PYLAB_PLOT_Y),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("DIR");return{plot:F.Msg.mixpy_PYLAB_PLOT_XY_TOOLTIP,bar:F.Msg.mixpy_PYLAB_PLOT_BAR_EASY_TOOLTIP}[e]}))}},Is={init:function(){this.setColour(jr);var e=[[F.Msg.blockpy_PYLAB_PLOT_DOT_CIRCULAR,"."],[F.Msg.blockpy_PYLAB_PLOT_DOT_PIXEL,","],[F.Msg.blockpy_PYLAB_PLOT_DOT_LARGE_DOT,"o"]];this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_SCATTER).appendField(F.Msg.mixpy_PYLAB_PLOT_X),this.appendValueInput("B").appendField(F.Msg.mixpy_PYLAB_PLOT_Y),this.appendValueInput("S").appendField(F.Msg.MIXLY_MICROBIT_JS_NUMBER),this.appendDummyInput("").appendField(F.Msg.blockpy_PYLAB_PLOT_DOT).appendField(new F.FieldDropdown(e),"DOT"),this.appendDummyInput().appendField(F.Msg.HTML_COLOUR).appendField(new F.FieldColour("#0000ff"),"COLOR"),this.appendValueInput("TAG").setCheck(String).appendField(F.Msg.mixpy_PYLAB_TICKS_TAG),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},ws={init:function(){this.setColour(jr);var e=[[F.Msg.blockpy_PYLAB_PLOT_LINE_SOLID,"-"],[F.Msg.blockpy_PYLAB_PLOT_LINE_DOTTED,"--"],[F.Msg.blockpy_PYLAB_PLOT_LINE_CHAIN,"-."],[F.Msg.blockpy_PYLAB_PLOT_LINE_POINT_DOTTED,":"],[F.Msg.MIXLY_MICROBIT_JS_INOUT_PULL_NONE,""]],t=[[F.Msg.COLOUR_RGB_BLUE,"b"],[F.Msg.COLOUR_RGB_GREEN,"g"],[F.Msg.COLOUR_RGB_RED,"r"],[F.Msg.COLOUR_CYAN,"c"],[F.Msg.COLOUR_MAGENTA,"m"],[F.Msg.COLOUR_YELLOW,"y"],[F.Msg.COLOUR_BLACK,"k"],[F.Msg.COLOUR_WHITE,"w"]],n=[[F.Msg.blockpy_PYLAB_PLOT_DOT_CIRCULAR,"."],[F.Msg.blockpy_PYLAB_PLOT_DOT_PIXEL,","],[F.Msg.blockpy_PYLAB_PLOT_DOT_LARGE_DOT,"o"]];this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_PLOT_XY).appendField(F.Msg.mixpy_PYLAB_PLOT_X),this.appendValueInput("B").appendField(F.Msg.mixpy_PYLAB_PLOT_Y),this.appendDummyInput("").appendField(F.Msg.blockpy_PYLAB_PLOT_DOT).appendField(new F.FieldDropdown(n),"DOT"),this.appendDummyInput("").appendField(F.Msg.blockpy_PYLAB_PLOT_LINE).appendField(new F.FieldDropdown(e),"LINE"),this.appendDummyInput("").appendField(F.Msg.HTML_COLOUR).appendField(new F.FieldDropdown(t),"COLOR"),this.appendValueInput("TAG").setCheck(String).appendField(F.Msg.mixpy_PYLAB_TICKS_TAG),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.mixpy_PYLAB_PLOT_XY_TOOLTIP)}},xs={init:function(){this.setColour(jr);var e=[[F.Msg.MIXLY_TURTLE_WRITE_ALIGN_CENTER,"center"],[F.Msg.AILGN_EDGE,"edge"]];this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_BAR).appendField(F.Msg.mixpy_PYLAB_PLOT_X),this.appendValueInput("B").appendField(F.Msg.mixpy_PYLAB_PLOT_Y),this.appendValueInput("WIDTH").setCheck(Number).appendField(F.Msg.MIXLY_WIDTH),this.appendDummyInput("").appendField(F.Msg.mixpy_PYLAB_BAR_ALIGN).appendField(new F.FieldDropdown(e),"ALIGN"),this.appendDummyInput().appendField(F.Msg.HTML_COLOUR).appendField(new F.FieldColour("#0000ff"),"COLOR"),this.appendValueInput("TAG").setCheck(String).appendField(F.Msg.mixpy_PYLAB_TICKS_TAG),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.mixpy_PYLAB_PLOT_XY_TOOLTIP)}},As={init:function(){this.setColour(jr);var e=[[F.Msg.mixpy_PL_PIE_SHADOW_N,"False"],[F.Msg.mixpy_PL_PIE_SHADOW_Y,"True"]],t=[[F.Msg.mixpy_PL_PIE_SHADOW_N,"None"],[F.Msg.mixpy_PYLAB_PIE_AUTOPCT_Z,"%.0f%%"],[F.Msg.mixpy_PYLAB_PIE_AUTOPCT_O,"%.1f%%"],[F.Msg.mixpy_PYLAB_PIE_AUTOPCT_T,"%.2f%%"]];this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_PIE).appendField(F.Msg.COLOUR_BLEND_RATIO),this.appendValueInput("B").appendField(F.Msg.mixpy_PYLAB_TICKS_TAG),this.appendValueInput("EXPLODE").appendField(F.Msg.mixpy_PYLAB_PIE_EXPLODE),this.appendDummyInput("").appendField(F.Msg.mixpy_PYLAB_PIE_AUTOPCT).appendField(new F.FieldDropdown(t),"autopct"),this.appendDummyInput("").appendField(F.Msg.mixpy_PYLAB_PIE_SHADOW).appendField(new F.FieldDropdown(e),"SHADOW"),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.mixpy_PYLAB_PLOT_XY_TOOLTIP)}},$s={init:function(){this.setColour(jr),this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_HIST).appendField(F.Msg.MIXLY_SD_DATA),this.appendValueInput("B").appendField(F.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0)}},Os={init:function(){this.setColour(jr);var e=[[F.Msg.PYLAB_LABEL_X,"x"],[F.Msg.PYLAB_LABEL_Y,"y"]];this.appendDummyInput().appendField(F.Msg.MIXLY_SETTING).appendField(new F.FieldDropdown(e),"DIR"),this.appendValueInput("A").appendField(F.Msg.mixpy_PYLAB_TICKS).appendField(F.Msg.MIXLY_MICROBIT_JS_I2C_VALUE),this.appendValueInput("B").appendField(F.Msg.mixpy_PYLAB_TICKS_TAG),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.mixpy_PYLAB_TICKS_TOOLTIP)}},Ms={init:function(){this.setColour(jr),this.appendValueInput("VET").setCheck(Number).appendField(F.Msg.mixpy_SUBPLOT).appendField(F.Msg.mixpy_SUBPLOT_VERTICLE),this.appendValueInput("HOR").setCheck(Number).appendField(F.Msg.mixpy_SUBPLOT_HORIZEN),this.appendValueInput("NUM").setCheck(Number).appendField(F.Msg.mixpy_SUBPLOT_NUM),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.MIXLY_PYTHON_CONTROLS_RANGE_TOOLTIP)}},Cs={init:function(){this.setColour(jr),this.appendDummyInput("").appendField(F.Msg.mixpy_PL_SAVEFIG),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setOutput(!1),this.setTooltip(F.Msg.mixpy_PL_SAVEFIG_TOOLTIP)}},Rs={init:function(){this.setColour(jr);var e=[[F.Msg.TEXT_TRIM_LEFT,"right"],[F.Msg.mixpy_PL_TEXT_CENTER,"center"],[F.Msg.TEXT_TRIM_RIGHT,"left"]],t=[[F.Msg.mixpy_PL_TEXT_TOP,"bottom"],[F.Msg.mixpy_PL_TEXT_CENTER,"center"],[F.Msg.mixpy_PL_TEXT_BOTTOM,"top"]];this.appendValueInput("VET").setCheck(Number).appendField(F.Msg.MIXLY_SETTING).appendField(F.Msg.mixpy_PL_TEXT_X),this.appendValueInput("HOR").setCheck(Number).appendField(F.Msg.mixpy_PL_TEXT_Y),this.appendValueInput("NUM").setCheck(Number).appendField(F.Msg.mixpy_PL_TEXT_TAG),this.appendDummyInput("").appendField(F.Msg.mixpy_PL_TEXT_HOR).appendField(new F.FieldDropdown(e),"HALIGN"),this.appendDummyInput("").appendField(F.Msg.mixpy_PL_TEXT_VER).appendField(new F.FieldDropdown(t),"VALIGN"),this.appendValueInput("FONTNUM").setCheck(Number).appendField(F.Msg.MIXLY_TURTLE_WRITE_FONT_NUM),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.mixpy_PL_TEXT_TOOLTIP)}},Ns=20,Ls={init:function(){this.setColour(Ns),this.appendValueInput("VAR").appendField(F.Msg.blockpy_inout_raw_input).setCheck(String),this.setOutput(!0),this.setTooltip(F.Msg.INOUT_input_TOOLTIP)}},Ds={init:function(){this.setColour(Ns),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_SERIAL_PRINTLN),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(F.Msg.BLOCKPY_PRINT_TOOLTIP)}},Ps={init:function(){this.setColour(Ns),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_SERIAL_PRINT),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setTooltip(F.Msg.TEXT_PRINT_TOOLTIP)}},Fs={init:function(){this.setColour(Ns),this.appendValueInput("VAR").appendField(F.Msg.MIXLY_SERIAL_PRINT),this.appendValueInput("END").appendField(F.Msg.MIXLY_ENDSWITH),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setInputsInline(!0),this.setTooltip(F.Msg.MIXLY_PYTHON_INOUT_PRINT_END_TOOLTIP)}},Bs={init:function(){var e=[[F.Msg.LANG_MATH_STRING,"str"],[F.Msg.LANG_MATH_INT,"int"],[F.Msg.LANG_MATH_FLOAT,"float"]];this.setColour(Ns),this.appendDummyInput("").appendField(F.Msg.MIXLY_MICROBIT_PY_STORAGE_GET).appendField(new F.FieldDropdown(e),"DIR"),this.appendValueInput("VAR").appendField(F.Msg.PROCEDURES_MUTATORCONTAINER_TITLE).setCheck(String),this.setInputsInline(!0),this.setOutput(!0);var t=this;this.setTooltip((function(){var e=t.getFieldValue("DIR");return{str:F.Msg.MIXLY_MIXPY_INOUT_STR_INPUT_TOOLTIP,int:F.Msg.MIXLY_MIXPY_INOUT_INT_INPUT_TOOLTIP,float:F.Msg.MIXLY_MIXPY_INOUT_FLOAT_INPUT_TOOLTIP}[e]}))}},js={init:function(){this.setColour(Ns),this.itemCount_=2,this.updateShape_(),this.setPreviousStatement(!1),this.setNextStatement(!1),this.setInputsInline(!0),this.setMutator(new F.icons.MutatorIcon(["inout_print_item"],this)),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(F.Msg.MIXLY_MIXPY_INOUT_PRINT_MANY_TOOLTIP)},mutationToDom:function(){var e=document.createElement("mutation");return e.setAttribute("items",this.itemCount_),e},domToMutation:function(e){this.itemCount_=parseInt(e.getAttribute("items"),10),this.updateShape_()},decompose:function(e){var t=e.newBlock("inout_print_container");t.initSvg();for(var n=t.getInput("STACK").connection,i=0;i0?e:[["'无可用地图'","'无可用地图'"]]}},oa={init:function(){this.appendValueInput("pathtype").setCheck(null).appendField("设置路径样式为"),this.setInputsInline(!0),this.setPreviousStatement(!0,null),this.setNextStatement(!0,null),this.setColour(290),this.setTooltip(""),this.setHelpUrl("")}},aa={init:function(){this.imgArr=this.getLocalImg(),this.appendDummyInput().appendField(new F.FieldDropdown(this.getLocalImg()),"type"),this.setOutput(!0,null),this.setColour(290),this.setTooltip(""),this.setHelpUrl("")},onchange:function(){let e=this.getFieldValue("type"),t=this.imgArr;this.haveNewSrc(this.imgArr,t)&&(this.imgArr=t,this.getField("type").menuGenerator_=this.imgArr,this.checkSrc(e,this.imgArr)?this.setFieldValue(e,"type"):this.setFieldValue(this.imgArr[0][1],"type"))},haveNewSrc:function(e,t){if(e.length!==t.length)return!0;for(var n=0;n0?e:[["'无可用路径'","'无可用路径'"]]}},la={init:function(){this.setColour(290),this.setPreviousStatement(!0),this.setNextStatement(!0),this.appendValueInput("posx").setCheck(null).appendField("在("),this.appendDummyInput().appendField(","),this.appendValueInput("posy").setCheck(null).appendField(""),this.appendDummyInput().appendField(")放置").appendField(new F.FieldDropdown([["障碍","'wall'"],["金币","'coin'"]]),"item"),this.setTooltip("")}},ua={init:function(){this.imgArr=this.getLocalImg(),this.appendDummyInput().appendField(new F.FieldDropdown(this.getLocalImg()),"type"),this.setOutput(!0,null),this.setColour(290),this.setTooltip(""),this.setHelpUrl("")},onchange:function(){let e=this.getFieldValue("type"),t=this.imgArr;this.haveNewSrc(this.imgArr,t)&&(this.imgArr=t,this.getField("type").menuGenerator_=this.imgArr,this.checkSrc(e,this.imgArr)?this.setFieldValue(e,"type"):this.setFieldValue(this.imgArr[0][1],"type"))},haveNewSrc:function(e,t){if(e.length!==t.length)return!0;for(var n=0;n0?e:[["'无可用角色'","'无可用角色'"]]}},ca={init:function(){this.setColour(290),this.appendValueInput("character").setCheck(null).appendField("初始化角色为"),this.appendDummyInput().appendField("面朝").appendField(new F.FieldDropdown([["北","0"],["南","2"],["西","3"],["东","1"]]),"direction"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},pa={init:function(){this.setColour(290),this.appendDummyInput().appendField("获取⻆⾊所获分数"),this.setOutput(!0,Number),this.setTooltip("")}},ha={init:function(){this.appendDummyInput().appendField(new F.FieldDropdown([["北","0"],["南","2"],["西","3"],["东","1"]]),"direction"),this.appendDummyInput().appendField("侧有障碍"),this.setInputsInline(!0),this.setOutput(!0,null),this.setColour(290),this.setTooltip(""),this.setHelpUrl("")}},da={init:function(){this.appendDummyInput().appendField("随机生成小车油量"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setColour(290),this.setTooltip("")}},fa={init:function(){this.appendDummyInput().appendField("需要加油"),this.setOutput(!0,null),this.setColour(290),this.setTooltip(""),this.setHelpUrl("")}},_a={init:function(){this.appendDummyInput().appendField("信号灯为绿灯"),this.setOutput(!0,null),this.setColour(290),this.setTooltip(""),this.setHelpUrl("")}},ma={init:function(){this.appendDummyInput().appendField("信号灯为红灯"),this.setOutput(!0,null),this.setColour(290),this.setTooltip(""),this.setHelpUrl("")}},ba={init:function(){this.appendDummyInput().appendField("进加油站加油"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setColour(290),this.setTooltip("")}},ga={init:function(){this.appendDummyInput().appendField("检查程序循环数目是否正确"),this.setPreviousStatement(!0),this.setColour(290),this.setTooltip("")}},Sa=function(e,t){return[t.variableDB_.getName(this.getFieldValue("VAR"),F.Variables.NAME_TYPE),t.ORDER_ATOMIC]},ka=function(e,t){if(""==this.getFieldValue("VAR"))return" = None\n";var n=t.valueToCode(this,"VALUE",t.ORDER_ASSIGNMENT)||"None";return t.variableDB_.getName(this.getFieldValue("VAR"),F.Variables.NAME_TYPE)+" = "+n+"\n"},ya=function(e,t){var n=this.getFieldValue("OP"),i=t.valueToCode(this,"MYVALUE",t.ORDER_ATOMIC)||"None";if("bytes"==n)var r=n+"("+i+',"UTF-8")';else r=n+"("+i+")";return[r,t.ORDER_ATOMIC]},va=function(e,t){return"global "+(t.valueToCode(this,"VAR",t.ORDER_ATOMIC)||"None")+"\n"},Ta=function(e,t){return["type("+(t.valueToCode(this,"DATA",t.ORDER_ATOMIC)||"None")+")",t.ORDER_ATOMIC]},Ea=function(e,t){return[this.getFieldValue("type"),t.ORDER_ATOMIC]},Ia=function(e,t){for(var n=new Array(this.itemCount_),i=0;i= stop:"," yield start"," start -= abs(step)"])};if(e=function(e,t,n){return"("+e+" <= "+t+") and "+l()+"("+e+", "+t+", "+n+") or "+u()+"("+e+", "+t+", "+n+")"},F.isNumber(i)&&F.isNumber(r)&&F.isNumber(s))i=parseFloat(i),r=parseFloat(r),s=Math.abs(parseFloat(s)),0==i%1&&0==r%1&&0==s%1?(i<=r?(r++,e=0==i&&1==s?r:i+", "+r,1!=s&&(e+=", "+s)):e=i+", "+--r+", -"+s,e="range("+e+")"):(e=i",GTE:">="};const oc=function(e,t){var n=this.getFieldValue("OP"),i="&&"==n?t.ORDER_LOGICAL_AND:t.ORDER_LOGICAL_OR,r=t.valueToCode(this,"A",i)||"False",s=t.valueToCode(this,"B",i)||"False";if("AND"==n)var o=r+" and "+s;else if("OR"==n)o=r+" or "+s;else if("NOR"==n)o="not("+r+"^"+s+")";else o=r+"^"+s;return[o,i]},ac=function(e,t){var n=t.ORDER_UNARY_PREFIX;return["not "+(t.valueToCode(this,"BOOL",n)||"False"),n]},lc=function(e,t){return["TRUE"==this.getFieldValue("BOOL")?"True":"False",t.ORDER_ATOMIC]},uc=function(e,t){return["None",t.ORDER_ATOMIC]},cc=function(e,t){var n=t.valueToCode(this,"A",t.ORDER_ATOMIC)||"False";return["("+(t.valueToCode(this,"B",t.ORDER_ATOMIC)||"False")+" if "+n+" else "+(t.valueToCode(this,"C",t.ORDER_ATOMIC)||"False")+")",t.ORDER_ATOMIC]},pc=function(e,t){var n=t.valueToCode(this,"A",t.ORDER_ATOMIC)||"''",i=t.valueToCode(this,"B",t.ORDER_ATOMIC)||"''";return[n+" "+this.getFieldValue("BOOL")+" "+i,t.ORDER_ATOMIC]},hc=function(e,t){var n=t.valueToCode(this,"A",t.ORDER_ATOMIC)||"''",i=t.valueToCode(this,"B",t.ORDER_ATOMIC)||"''";return[n+" "+this.getFieldValue("BOOL")+" "+i,t.ORDER_ATOMIC]},dc=function(e,t){return["bool("+(t.valueToCode(this,"VAR",t.ORDER_ATOMIC)||"0")+")",t.ORDER_ATOMIC]},fc=function(e,t){return t.definitions_.import_os="import os","os.startfile("+t.valueToCode(this,"fn",t.ORDER_ATOMIC)+")\n"},_c=function(e,t){return t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+" = open("+t.valueToCode(this,"FILENAME",t.ORDER_ATOMIC)+", '"+this.getFieldValue("MODE")+"')\n"},mc=function(e,t){return["open("+t.valueToCode(this,"FILENAME",t.ORDER_ATOMIC)+", '"+this.getFieldValue("MODE")+"')",t.ORDER_ATOMIC]},bc=function(e,t){return["open("+t.valueToCode(this,"FILENAME",t.ORDER_ATOMIC)+", '"+this.getFieldValue("MODE")+"', encoding=\""+this.getFieldValue("CODE")+'")',t.ORDER_ATOMIC]},gc=function(e,t){var n=t.valueToCode(this,"data",t.ORDER_ATOMIC);return t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+".write("+n+")\n"},Sc=function(e,t){var n=this.getFieldValue("MODE");return[t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+"."+n+"()",t.ORDER_ATOMIC]},kc=function(e,t){var n=this.getFieldValue("MODE");return[t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+"."+n+"("+t.valueToCode(this,"SIZE",t.ORDER_ATOMIC)+")",t.ORDER_ATOMIC]},yc=function(e,t){return[t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+".readline("+t.valueToCode(this,"SIZE",t.ORDER_ATOMIC)+")",t.ORDER_ATOMIC]},vc=function(e,t){return[t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+".writable()",t.ORDER_ATOMIC]},Tc=function(e,t){return[t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+".name()",t.ORDER_ATOMIC]},Ec=function(e,t){return t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+".close()\n"},Ic=function(e,t){t.definitions_.import_os="import os";return["os.listdir()",t.ORDER_ATOMIC]},wc=function(e,t){return t.definitions_.import_os="import os","os."+this.getFieldValue("MODE")+"("+t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+")\n"},xc=function(e,t){return t.definitions_.import_os="import os",["os.path.getsize("+t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+")",t.ORDER_ATOMIC]},Ac=function(e,t){return[t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+".tell()",t.ORDER_ATOMIC]},$c=function(e,t){var n=this.getFieldValue("MODE"),i=0;return i="start"==n?0:"current"==n?1:2,t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+".seek("+t.valueToCode(this,"SIZE",t.ORDER_ATOMIC)+","+i+")\n"},Oc=function(e,t){return t.definitions_.import_os="import os","os.chdir("+t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+")\n"},Mc=function(e,t){t.definitions_.import_os="import os";return["os.getcwd()",t.ORDER_ATOMIC]},Cc=function(e,t){return t.definitions_.import_os="import os","os."+this.getFieldValue("MODE")+"("+t.valueToCode(this,"PATH",t.ORDER_ATOMIC)+")\n"},Rc=function(e,t){return t.definitions_.import_os="import os","os.rename("+t.valueToCode(this,"FILE",t.ORDER_ATOMIC)+","+t.valueToCode(this,"NEWFILE",t.ORDER_ATOMIC)+")\n"},Nc=function(e,t){t.definitions_.import_os="import os";var n=t.valueToCode(this,"FILE",t.ORDER_ATOMIC);return["os."+this.getFieldValue("MODE")+"("+n+")",t.ORDER_ATOMIC]},Lc=function(e,t){return t.definitions_.import_os="import os",t.definitions_.import_sdcard="import sdcard",t.valueToCode(this,"SUB",t.ORDER_ATOMIC)+" = sdcard.SDCard("+t.valueToCode(this,"SPISUB",t.ORDER_ATOMIC)+","+t.valueToCode(this,"PINSUB",t.ORDER_ATOMIC)+")\n"},Dc=function(e,t){return t.definitions_.import_os="import os",t.definitions_.import_sdcard="import sdcard","os.mount("+t.valueToCode(this,"VAR",t.ORDER_ATOMIC)+","+t.valueToCode(this,"DIR",t.ORDER_ATOMIC)+")\n"},Pc=function(e,t){var n=t.variableDB_.getName(this.getFieldValue("NAME"),F.Procedures.NAME_TYPE),i=(this.getInput("STACK")&&t.statementToCode(this,"STACK"))??" pass\n";t.INFINITE_LOOP_TRAP&&(i=t.INFINITE_LOOP_TRAP.replace(/%1/g,"'"+this.id+"'")+i);var r=t.valueToCode(this,"RETURN",t.ORDER_NONE)||"";r&&(r=" return "+r+"\n");for(var s=[],o=0;o\n\n\n\t\n"+t.statementToCode(this,"HEAD")+"\n\n"+t.statementToCode(this,"BODY")+"\n\n'''",t.ORDER_ATOMIC]},gp=function(e,t){var n=t.statementToCode(this,"DO"),i=this.getFieldValue("LEVEL");return"\n"+n+"\n"},Sp=function(e,t){var n=t.statementToCode(this,"DO"),i=this.getFieldValue("LEVEL");if("head"==i)var r="<"+i+'>\n\t\n'+n+"\n";else r="<"+i+">\n"+n+"\n";return r},kp=function(e,t){var n=t.statementToCode(this,"DO"),i=this.getFieldValue("LEVEL");return"<"+i+">\n"+n+"\n"},yp=function(e,t){var n=t.statementToCode(this,"DO"),i=t.valueToCode(this,"style"),r=this.getFieldValue("LEVEL");return"<"+r+" "+i+" >\n"+n+"\n"},vp=function(e,t){return['style="'+t.statementToCode(this,"STYLE")+'"',t.ORDER_ATOMIC]},Tp=function(e,t){return'"},Ep=function(){return this.getFieldValue("KEY")+":"+this.getFieldValue("VALUE")+";"},Ip=function(){return this.getFieldValue("TEXT")+"\n"},wp=function(e){return e.getFieldValue("TEXT")+"\n"},xp=function(e,t){return[e.getFieldValue("TEXT"),t.ORDER_ATOMIC]},Ap=function(e,t){return(t.valueToCode(e,"VALUE",t.ORDER_ATOMIC)||"")+"\n"},$p=function(){return""},Op=function(e,t){return["type("+(t.valueToCode(e,"VALUE",t.ORDER_MEMBER)||"___")+")",t.ORDER_ATOMIC]},Mp=function(e,t){for(var n=e.getFieldValue("NAME"),i=e.hasReturn_,r=new Array(e.itemCount_),s=0;s=0&&(i[r]=i[r].replace(" ",""));n="";for(r=0;rthis.#e.on("display",e)[0],nf.configure({output:e=>{this.#e.run("output",{content:e})},read:this.readFile.bind(this),inputfun:this.skInput.bind(this),inputfunTakesPrompt:!0,execLimit:Number.POSITIVE_INFINITY,fileread:this.fileread.bind(this),filewrite:this.filewrite.bind(this),__future__:nf.python3}),nf.builtins.value=new nf.builtin.func((function(){return nf.ffi.remapToPy(void 0===of?5:of)})),nf.builtins.set_value=new nf.builtin.func((function(e){of=e.v})),nf.builtinFiles.files["./mixpy.py"]='import math\r\n\r\ndef math_map(v, al, ah, bl, bh):\r\n return bl + (bh - bl) * (v - al) / (ah - al)\r\n\r\ndef math_mean(myList):\r\n localList = [e for e in myList if type(e) == int or type(e) == float]\r\n if not localList: return\r\n return float(sum(localList)) / len(localList)\r\n\r\ndef math_median(myList):\r\n localList = sorted([e for e in myList if type(e) == int or type(e) == float])\r\n if not localList: return\r\n if len(localList) % 2 == 0:\r\n return (localList[len(localList) // 2 - 1] + localList[len(localList) // 2]) / 2.0\r\n else:\r\n return localList[(len(localList) - 1) // 2]\r\n\r\ndef math_modes(some_list):\r\n modes = []\r\n # Using a lists of [item, count] to keep count rather than dict\r\n # to avoid "unhashable" errors when the counted item is itself a list or dict.\r\n counts = []\r\n maxCount = 1\r\n for item in some_list:\r\n found = False\r\n for count in counts:\r\n if count[0] == item:\r\n count[1] += 1\r\n maxCount = max(maxCount, count[1])\r\n found = True\r\n if not found:\r\n counts.append([item, 1])\r\n for counted_item, item_count in counts:\r\n if item_count == maxCount:\r\n modes.append(counted_item)\r\n return modes\r\n\r\ndef math_standard_deviation(numbers):\r\n n = len(numbers)\r\n if n == 0: return\r\n mean = float(sum(numbers)) / n\r\n variance = sum((x - mean) ** 2 for x in numbers) / n\r\n return math.sqrt(variance)\r\n\r\ndef lists_sort(my_list, type, reverse):\r\n def try_float(s):\r\n try:\r\n return float(s)\r\n except:\r\n return 0\r\n key_funcs = {\r\n "NUMERIC": try_float,\r\n "TEXT": str,\r\n "IGNORE_CASE": lambda s: str(s).lower()\r\n }\r\n key_func = key_funcs[type]\r\n list_cpy = list(my_list)\r\n return sorted(list_cpy, key=key_func, reverse=reverse)'}readFile(e){if(rf.matchModelName(e))return rf.load(e);if(void 0!==sf[e])return nf.misceval.promiseToSuspension(fetch(sf[e]).then((e=>e.text())));if(void 0===nf.builtinFiles||void 0===nf.builtinFiles.files[e])throw"File not found: '"+e+"'";return nf.builtinFiles.files[e]}fileread(e,t){return this.mixpyProject.exist(e)?this.mixpyProject.getFileContent(e):-1!==t.indexOf("w")?(this.mixpyProject.add(e,"",1),""):null}filewrite(e,t){var n=e.name;this.mixpyProject.modify(n,t),this.mixpyProject.select(n)}skInput(e){return new Promise(((t,n)=>{this.#e.run("input",{content:{prompt:e},resolve:t,reject:n})}))}reset(){nf.execLimit=Number.POSITIVE_INFINITY,nf.TurtleGraphics.reset&&nf.TurtleGraphics.reset()}kill(){nf.execLimit=0,this.executionEnd_()}step(e,t,n,i){if(".py"==i){var r=this.executionBuffer.step,s=this.parseGlobals(e);this.executionBuffer.trace.push({step:r,filename:i,line:t,column:n,properties:s.properties,modules:s.modules}),this.executionBuffer.step=r+1,this.executionBuffer.last_step=r+1,this.executionBuffer.line_number=t}}analyzeVariables(){if(""==this.main.model.programs.__main__().trim())return{}}analyze(){return this.main.model.execution.status("analyzing"),""!=this.main.model.programs.__main__().trim()||(this.main.components.feedback.emptyProgram("You haven't written any code yet!"),!1)}steprun(e){this.reset(),-1===e.indexOf("import blocklygame")&&-1===e.indexOf("from blocklygame import")||(rf.reset(),ef()(nf.TurtleGraphics.target).empty()),-1!=e.indexOf("settedMap(4")|-1!=e.indexOf("settedMap(6")&&-1!=e.indexOf("moveDirection")&&(e+="actor.isCirculationRight()\n"),-1==e.indexOf("settedMap(5)")&&-1!=e.indexOf("moveDirection")&&(e+="actor.isSuccess()\n"),this.programStatus.running=!0,nf.misceval.asyncToPromise((()=>nf.importMainWithBody("",!1,e,!0))).then((()=>{this.programStatus.running=!1,this.#e.run("finished")})).catch((e=>{B.Debug.error(e),this.programStatus.running=!1,this.#e.run("error",e);var t=af(e);this.#e.run("finished"),-1===t.indexOf("TimeLimitError")&&this.executionEnd_()}))}run(e){if(this.reset(),-1===e.indexOf("import blocklygame")&&-1===e.indexOf("from blocklygame import")||(rf.reset(),ef()(nf.TurtleGraphics.target).empty()),-1!==e.indexOf("import blocktool")||-1!==e.indexOf("import blocklygame")||-1!==e.indexOf("from blocklygame import")){var t=[];t=e.split("\n");for(var n=0;n=0){var i="",r=/,?'block_id=[\s\S]*'/.exec(t[n]);null!=r&&(i=r[0],t[n]=t[n].replace(i,""))}(t[n].indexOf("import blocktool")>=0||t[n].indexOf("blocktool.highlight")>=0)&&(t[n]="delete"),t[n].indexOf("blocklygame")>=0&&(t[n]=t[n].replace("blocklygame","bg_nonehl"))}e="";for(n=0;nnf.importMainWithBody("",!1,e,!0))).then((()=>{this.programStatus.running=!1,this.#e.run("finished")})).catch((e=>{B.Debug.error(e),this.programStatus.running=!1,this.#e.run("error",e);var t=af(e);this.#e.run("finished"),-1===t.indexOf("TimeLimitError")&&this.executionEnd_()}))}setupEnvironment(e,t,n,i,r){var s=this.main.model;this._backup_execution=nf.afterSingleExecution,nf.afterSingleExecution=void 0,nf.builtins.get_output=new nf.builtin.func((function(){return nf.builtin.pyCheckArgs("get_output",arguments,0,0),nf.ffi.remapToPy(s.execution.output())})),nf.builtins.reset_output=new nf.builtin.func((function(){nf.builtin.pyCheckArgs("reset_output",arguments,0,0),s.execution.output.removeAll()})),nf.builtins.log=new nf.builtin.func((function(e){nf.builtin.pyCheckArgs("log",arguments,1,1),console.log(e)})),nf.builtins._trace=t,nf.builtins._final_values=r,nf.builtins.code=nf.ffi.remapToPy(e),nf.builtins.set_success=this.instructor_module.set_success,nf.builtins.set_feedback=this.instructor_module.set_feedback,nf.builtins.set_finished=this.instructor_module.set_finished,nf.builtins.count_components=this.instructor_module.count_components,nf.builtins.no_nonlist_nums=this.instructor_module.no_nonlist_nums,nf.builtins.only_printing_properties=this.instructor_module.only_printing_properties,nf.builtins.calls_function=this.instructor_module.calls_function,nf.builtins.get_property=this.instructor_module.get_property,nf.builtins.get_value_by_name=this.instructor_module.get_value_by_name,nf.builtins.get_value_by_type=this.instructor_module.get_value_by_type,nf.builtins.parse_json=this.instructor_module.parse_json,nf.skip_drawing=!0,s.settings.mute_printer(!0)}disposeEnvironment(){nf.afterSingleExecution=this._backup_execution,nf.builtins.get_output=void 0,nf.builtins.reset_output=void 0,nf.builtins.log=void 0,nf.builtins._trace=void 0,nf.builtins.trace=void 0,nf.builtins.code=void 0,nf.builtins.set_success=void 0,nf.builtins.set_feedback=void 0,nf.builtins.set_finished=void 0,nf.builtins.count_components=void 0,nf.builtins.calls_function=void 0,nf.builtins.get_property=void 0,nf.builtins.get_value_by_name=void 0,nf.builtins.get_value_by_type=void 0,nf.builtins.no_nonlist_nums=void 0,nf.builtins.only_printing_properties=void 0,nf.builtins.parse_json=void 0,nf.skip_drawing=!1,of=void 0,this.main.model.settings.mute_printer(!1)}parseGlobals(e){var t=Array(),n=Array();for(var i in e){var r=e[i];if("__name__"!==i&&"__doc__"!==i){i=i.replace("_$rw$","").replace("_$rn$","");var s=this.parseValue(i,r);null!==s?t.push(s):r.constructor==nf.builtin.module&&n.push(r.$d.__name__.v)}}return{properties:t,modules:n}}parseValue(e,t){if(null==t)return{name:e,type:"Unknown",value:"Undefined"};switch(t.constructor){case nf.builtin.func:return{name:e,type:"Function",value:void 0!==t.func_code.co_varnames?" Arguments: "+t.func_code.co_varnames.join(", "):" No arguments"};case nf.builtin.module:return null;case nf.builtin.str:return{name:e,type:"String",value:t.$r().v};case nf.builtin.none:return{name:e,type:"None",value:"None"};case nf.builtin.bool:return{name:e,type:"Boolean",value:t.$r().v};case nf.builtin.nmber:return{name:e,type:"int"==t.skType?"Integer":"Float",value:t.$r().v};case nf.builtin.int_:return{name:e,type:"Integer",value:t.$r().v};case nf.builtin.float_:return{name:e,type:"Float",value:t.$r().v};case nf.builtin.tuple:return{name:e,type:"Tuple",value:t.$r().v};case nf.builtin.list:return t.v.length<=20?{name:e,type:"List",value:t.$r().v,exact_value:t}:{name:e,type:"List",value:"[... "+t.v.length+" elements ...]",exact_value:t};case nf.builtin.dict:return{name:e,type:"Dictionary",value:t.$r().v};case Number:return{name:e,type:t%1==0?"Integer":"Float",value:t};case String:return{name:e,type:"String",value:t};case Boolean:return{name:e,type:"Boolean",value:t?"True":"False"};default:return{name:e,type:null==t.tp$name?t:t.tp$name,value:null==t.$r?t:t.$r().v}}}}class uf extends B.PageBase{static{B.HTMLTemplate.add("html/statusbar/statusbar-image.html",new B.HTMLTemplate('\r\n
\r\n
\r\n
')),this.init=function(){B.StatusBarsManager.typesRegistry.register(["images"],uf);const e=B.Workspace.getMain().getStatusBarsManager();e.add("images","images","图像"),e.changeTo("output")}}constructor(){super();const e=ef()(B.HTMLTemplate.get("html/statusbar/statusbar-image.html").render());this.setContent(e)}init(){super.init(),this.hideCloseBtn()}clean(){this.getContent().empty()}display(e){const t=this.getContent(),n=function(e){e.style.width="auto",e.style.height="auto",e.style.maxWidth="100%",e.style.maxHeight="100%"};this.clean();let i=e.content,r=null,s=null;switch(e.display_type){case"p5":i.style.width="100%",i.style.height="100%",i.style.display="flex",i.style.justifyContent="center",i.style.alignItems="center",new MutationObserver((function(e){e.forEach((e=>e.addedNodes.forEach((e=>{const t=e;null!=t.tagName&&["canvas","video"].includes(t.tagName.toLowerCase())&&n(t)}))))})).observe(i,{childList:!0}),i.querySelectorAll("canvas,video").forEach(n),t.append(i);break;case"matplotlib":r=i.querySelector("canvas"),r&&(i=r),i.style.width="",i.style.height="",i.style.maxWidth="100%",i.style.maxHeight="100%",t.append(i);break;case"ocaml-canvas":i.style.width="",i.style.height="",i.style.maxWidth="100%",i.style.maxHeight="100%",t.append(i);break;case"turtle":i.setAttribute("width","100%"),i.setAttribute("height","100%"),t.append(i.outerHTML);break;case"sympy":t.append(e.content),void 0===window.MathJax?(console.log("Loading MathJax (Sympy expression needs it)."),function(){let e=document.createElement("script");e.type="text/javascript",e.src="https://cdn.jsdelivr.net/npm/mathjax@3.0.5/es5/tex-mml-chtml.js",document.getElementsByTagName("head")[0].appendChild(e)}()):window.MathJax.typeset();break;case"multiple":for(let n of["image/svg+xml","image/png","text/html","text/plain"])if(n in e.content){let i=e.content[n];"image/png"===n&&(i=''),t.append(i);break}break;case"tutor":if(t.append(ef()(e.content.replace("overflow-y%3A%20hidden%3B",""))),s=this.getContent()[0].getElementsByTagName("iframe")[0],null==s)return;s.style.maxHeight=s.style.minHeight="100%",new IntersectionObserver(((e,t)=>{const n=e[0];n&&!n.isIntersecting||(s.contentWindow?.postMessage({type:"redraw"},"*"),t.disconnect())})).observe(s);break;default:console.error(`Not supported node type '${e.display_type}' in eval.display result processing.`)}}}const cf=uf;class pf{static{this.pythonShell=null,this.init=async function(){cf.init(),this.pythonShell=new pf},this.steprun=function(){const e=B.Workspace.getMain().getEditorsManager().getActive().getCode();return this.pythonShell.steprun(e)},this.run=function(){const e=B.Workspace.getMain().getEditorsManager().getActive().getCode();return this.pythonShell.run(e)},this.stop=function(){return this.pythonShell.stop()}}#t=null;#n=null;#i=null;#r={row:0,column:0};#s="";#o=null;#a=null;#l=!1;#u=!1;#c=null;#p=()=>this.#h();#d=[{name:"REPL-Enter",bindKey:"Enter",exec:e=>{if(e.getSession().selection.getCursor().row===this.#r.row){const e=this.#t.getEndPos();let t=this.#t.getValueRange(this.#r,e);return t=t.replace(this.#s,""),this.#o?.(t),this.#o=null,this.#a=null,this.#t.addValue("\n"),this.#f(),!0}return!1}},{name:"REPL-ChangeEditor",bindKey:"Delete|Ctrl-X|Backspace",exec:e=>{const t=e.getSession().selection.getCursor();return t.row{this.#u=!1,this.#t.addValue(`\n==${B.Msg.Lang["shell.finish"]}==`)})),e.bind("output",(e=>{this.#t.addValue(e.content)})),e.bind("error",(e=>{this.#u=!1,this.#t.addValue(`\n${e.toString()}\n`)})),e.bind("input",(e=>{const t=String(e?.content?.prompt);this.#t.addValue(`>>> ${t}`),this.#s=t,this.#o=e.resolve,this.#a=e.reject,this.#m()})),e.bind("display",(e=>{this.#i.changeTo("images"),this.#n.display(e)}))}#h(){const e=this.#t.getEditor(),t=e.getSession().selection.getCursor();e.setReadOnly(t.rowsetTimeout(t,e)))}}const hf=pf,df={},ff=['\n \n ','\n \n ','\n \n ','\n \n ','\n \n ','\n \n ','\n \n '];df.$shadow=ef()('
'),df.count=0,df.init=function(){hf.init();const e=B.app.getNav();e.register({icon:"icon-play-circled",title:"",id:"python-steprun-btn",displayText:F.Msg.MSG.step_run,preconditionFn:()=>!0,callback:()=>{hf.steprun().catch(B.Debug.error)},scopeType:B.Nav.Scope.LEFT,weight:4}),e.register({icon:"icon-play-circled",title:"",id:"python-run-btn",displayText:F.Msg.MSG.run,preconditionFn:()=>!0,callback:()=>{hf.run().catch(B.Debug.error)},scopeType:B.Nav.Scope.LEFT,weight:5}),e.register({icon:"icon-cancel",title:"",id:"python-stop-btn",displayText:F.Msg.MSG.stop,preconditionFn:()=>!0,callback:()=>{hf.stop().catch(B.Debug.error)},scopeType:B.Nav.Scope.LEFT,weight:6});const t=new B.HTMLTemplate("\r\n"),n=ef()(t.render());e.getBoardSelector().before(n),n.select2({width:"90px",minimumResultsForSearch:1/0,dropdownCssClass:`mixly-scrollbar mixly-${t.getId()}`,dropdownAutoWidth:!0,placeholder:"",language:B.Msg.nowLang});for(let e=0;e{const{data:t}=e.params;B.Workspace.getMain().getEditorsManager().getActive().setValue(ff[parseInt(t.id)],".mix")})),n.on("select2:opening",(()=>{df.count+=1,ef()(document.body).append(df.$shadow)})),n.on("select2:closing",(()=>{df.count-=1,!df.count&&df.$shadow.detach()})),n.trigger("change"),B.Storage.board("mix",ff[0]),B.Storage.board("path","")};df.init(),Object.assign(F.Variables,V),Object.assign(F.Procedures,Y),F.Python=H,F.generator=H,B.Profile.default={},Object.assign(F.Blocks,e,t,i,r,s,o,a,l,u,c,p,h,d,f,_,m,b,g),Object.assign(F.Python.forBlock,S,k,y,v,T,E,I,w,x,A,O,M,C,R,N,L,D,P)})()})(); \ No newline at end of file