'use strict';

goog.provide('Blockly.Blocks.CocoRobo');

goog.require('Blockly.Blocks');

var musical_note = [["C3", "C3"], ["C#3", "C#3"], ["D3", "D3"], ["D#3", "D#3"], ["E3", "E3"], ["F3", "F3"], ["F#3", "F#3"], ["G3", "G3"], ["G#3", "G#3"], ["A3", "A3"], ["A#3", "A#3"], ["B3", "B3"], ["C4", "C4"], ["C#4", "C#4"], ["D4", "D4"], ["D#4", "D#4"], ["E4", "E4"], ["F4", "F4"], ["F#4", "F#4"], ["G4", "G4"], ["G#4", "G#4"], ["A4", "A4"], ["A#4", "A#4"], ["B4", "B4"], ["C5", "C5"], ["C#5", "C#5"], ["D5", "D5"], ["D#5", "D#5"], ["E5", "E5"], ["F5", "F5"], ["F#5", "F#5"], ["G5", "G5"], ["G#5", "G#5"], ["A5", "A5"], ["A#5", "A#5"], ["B5", "B5"]],
  music_tone_freq = [["C3", "131"], ["C#3", "139"], ["D3", "147"], ["D#3", "156"], ["E3", "165"], ["F3", "175"], ["F#3", "185"], ["G3", "196"], ["G#3", "208"], ["A3", "220"], ["A#3", "233"], ["B3", "247"], ["C4", "262"], ["C#4", "277"], ["D4", "294"], ["D#4", "311"], ["E4", "330"], ["F4", "349"], ["F#4", "370"], ["G4", "392"], ["G#4", "415"], ["A4", "440"], ["A#4", "466"], ["B4", "494"], ["C5", "523"], ["C#5", "554"], ["D5", "587"], ["D#5", "622"], ["E5", "659"], ["F5", "698"], ["F#5", "740"], ["G5", "784"], ["G#5", "831"], ["A5", "880"], ["A#5", "932"], ["B5", "988"]],
  music_tick = [["1/4", "1"], ["1/2", "2"], ["1", "4"], ["2", "8"]],
  usocket_color = 32,
  logic_color = 210,
  CocoRobo_bluebit_color = "#336699",
  list_color = Blockly.Blocks.lists.HUE,
  math_color = 230,
  event_color = 32,
  lcd_color = 96,
  buttonColor = 300,
  pinColor = 260,
  rgbColor = 0,
  buzzColor = 192,
  tuple_color = 192,
  dict_color = 32,
  accelerometerColor = 55,
  wifi_color = 160,
  iot_color = 64,
  iot_blynk_color = "#24c48e",
  iot_onenet_color = 64,
  iot_tinyweb_color = 160,
  set_color = 160,
  extend_color = 288,
  bluetooth_color = "#a101e5",
  purple_red = 328,
  wine_red = rgbColor,
  brown = event_color,
  green = lcd_color,
  light_blue = tuple_color,
  purple = pinColor,
  light_green = wifi_color,
  yellow_green = iot_onenet_color,
  bright_green = iot_blynk_color,
  bright_purple = extend_color,
  deep_blue = CocoRobo_bluebit_color,
  read_digital = [["P0", "0"], ["P1", "1"], ["P2", "2"], ["P6(buzzer)", "6"], ["P7(RGB)", "7"], ["P8", "8"], ["P9", "9"], ["P13", "13"], ["P14", "14"], ["P15", "15"], ["P16", "16"], ["P19(SCL)", "19"], ["P20(SDA)", "20"]],
  read_analog = [["P0", "0"], ["P1", "1"], ["P2", "2"], ["P3(EXT)", "3"], ["P4(light)", "4"], ["P10(sound)", "10"]],
  read_analog_1 = [["P1", "1"], ["P0", "0"], ["P2", "2"], ["P3(EXT)", "3"], ["P4(light)", "4"], ["P10(sound)", "10"]],
  set_digital_state = [["LOW", "0"], ["HIGH", "1"]],
  set_digital = [["P0", "0"], ["P1", "1"], ["P5(button_A)", "5"], ["P6(buzzer)", "6"], ["P7(RGB)", "7"], ["P8", "8"], ["P9", "9"], ["P11(button_B)", "11"], ["P13", "13"], ["P14", "14"], ["P15", "15"], ["P16", "16"], ["P19(SCL)", "19"], ["P20(SDA)", "20"]],
  set_digital_1 = [["P1", "1"], ["P0", "0"], ["P5(button_A)", "5"], ["P6(buzzer)", "6"], ["P7(RGB)", "7"], ["P8", "8"], ["P9", "9"], ["P13", "13"], ["P14", "14"], ["P15", "15"], ["P16", "16"], ["P19(SCL)", "19"], ["P20(SDA)", "20"]],
  set_analog = [["P0", "0"], ["P1", "1"], ["P5(button_A)", "5"], ["P6(buzzer)", "6"], ["P7(RGB)", "7"], ["P8", "8"], ["P9", "9"], ["P11(button_B)", "11"], ["P13", "13"], ["P14", "14"], ["P15", "15"], ["P16", "16"], ["P19(SCL)", "19"], ["P20(SDA)", "20"]],
  set_analog_1 = [["P1", "1"], ["P0", "0"], ["P5(button_A)", "5"], ["P6(buzzer)", "6"], ["P7(RGB)", "7"], ["P8", "8"], ["P9", "9"], ["P13", "13"], ["P14", "14"], ["P15", "15"], ["P16", "16"], ["P19(SCL)", "19"], ["P20(SDA)", "20"]],
  all_pin = [["P0", "0"], ["P1", "1"], ["P2", "2"], ["P3(EXT)", "3"], ["P4(light)", "4"], ["P6(buzzer)", "6"], ["P7(RGB)", "7"], ["P8", "8"], ["P9", "9"], ["P10", "10"], ["P13", "13"], ["P14", "14"], ["P15", "15"], ["P16", "16"], ["P19(SCL)", "19"], ["P20(SDA)", "20"]],
  buzz_tone = [["do", "262"], ["re", "294"], ["mi", "330"], ["fa", "349"], ["sol", "392"], ["la", "440"], ["si", "494"]],
  dh11_hum_tem_pin = [["P6(buzzer)", "6"], ["P7(RGB)", "7"], ["P8", "8"], ["P9", "9"], ["P13", "13"], ["P14", "14"], ["P15", "15"], ["P16", "16"], ["P19(SCL)", "19"], ["P20(SDA)", "20"]],
  text_color = 160,
  touchPad = [["P", "P"], ["Y", "Y"], ["T", "T"], ["H", "H"], ["O", "O"], ["N", "N"]],
  axis = [["X", "X"], ["Y", "Y"], ["Z", "Z"]],
  WiFi_config = [["IP", "0"], ["gateway", "3"]] //, ["netmask", "2"], ["DNS", "3"]
  ,
  WiFi_channel = [["1", "1"], ["2", "2"], ["3", "3"], ["4", "4"], ["5", "5"], ["6", "6"], ["7", "7"], ["8", "8"], ["9", "9"], ["10", "10"], ["11", "11"], ["12", "12"], ["13", "13"]],
  button_AB = [["A", "button_a"], ["B", "button_b"]],
  uart_tx_pin = [["P16", "16"], ["P0", "0"], ["P1", "1"], ["P6(buzzer)", "6"], ["P7(RGB)", "7"], ["P8", "8"], ["P9", "9"], ["P13", "13"], ["P14", "14"], ["P15", "15"], ["P19(SCL)", "19"], ["P20(SDA)", "20"]],
  uart_rx_pin = [["P15", "15"], ["P0", "0"], ["P1", "1"], ["P2", "2"], ["P3(EXT)", "3"], ["P4(light)", "4"], ["P6(buzzer)", "6"], ["P7(RGB)", "7"], ["P8", "8"], ["P9", "9"], ["P10", "10"], ["P13", "13"], ["P14", "14"], ["P16", "16"], ["P19(SCL)", "19"], ["P20(SDA)", "20"]],
  i2c_pin = [["P6(buzzer)", "6"], ["P7(RGB)", "7"], ["P8", "8"], ["P9", "9"], ["P13", "13"], ["P14", "14"], ["P15", "15"], ["P16", "16"], ["P19(SCL)", "19"], ["P20(SDA)", "20"]],
  output_pin = [["P0", "0"], ["P1", "1"], ["P6(buzzer)", "6"], ["P7(RGB)", "7"], ["P8", "8"], ["P9", "9"], ["P13", "13"], ["P14", "14"], ["P15", "15"], ["P16", "16"], ["P19(SCL)", "19"], ["P20(SDA)", "20"]];
Blockly.Blocks.i2c_pin = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Pin,
      helpUrl: Blockly.Msg.I2C_PIN_HELPURL,
      tooltip: Blockly.Msg.I2C_PIN_TOOLTIP,
      message0: Blockly.Msg.I2C_PIN_MESSAGE0,
      args0: [{
        options: i2c_pin,
        type: "field_dropdown",
        name: "i2c_pin"
      }]
    });
  }
};
Blockly.Blocks.uart_rx_pin = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Pin,
      helpUrl: Blockly.Msg.UART_RX_PIN_HELPURL,
      tooltip: Blockly.Msg.UART_RX_PIN_TOOLTIP,
      message0: Blockly.Msg.UART_RX_PIN_MESSAGE0,
      args0: [{
        options: uart_rx_pin,
        type: "field_dropdown",
        name: "uart_rx_pin"
      }]
    });
  }
};
Blockly.Blocks.uart_tx_pin = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Pin,
      helpUrl: Blockly.Msg.UART_TX_PIN_HELPURL,
      tooltip: Blockly.Msg.UART_TX_PIN_TOOLTIP,
      message0: Blockly.Msg.UART_TX_PIN_MESSAGE0,
      args0: [{
        options: uart_tx_pin,
        type: "field_dropdown",
        name: "uart_tx_pin"
      }]
    });
  }
};
Blockly.Blocks.dh11_hum_tem_pin = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Pin,
      helpUrl: Blockly.Msg.DH11_HUM_TEM_PIN_HELPURL,
      tooltip: Blockly.Msg.DH11_HUM_TEM_PIN_TOOLTIP,
      message0: Blockly.Msg.DH11_HUM_TEM_PIN_MESSAGE0,
      args0: [{
        options: dh11_hum_tem_pin,
        type: "field_dropdown",
        name: "dh11_hum_tem_pin"
      }]
    });
  }
};
Blockly.Blocks.pwm_pin = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Pin,
      helpUrl: Blockly.Msg.PWM_PIN_HELPURL,
      tooltip: Blockly.Msg.PWM_PIN_TOOLTIP,
      message0: Blockly.Msg.PWM_PIN_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.CocoRobo_PWM_PIN_P7, "7"], ["P8", "8"], [Blockly.Msg.CocoRobo_PWM_PIN_P9, "9"], ["P13", "13"], ["P14", "14"], ["P15", "15"], ["P16", "16"]],
        type: "field_dropdown",
        name: "pwm_pin"
      }]
    });
  }
};
Blockly.Blocks.all_pin = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Pin,
      helpUrl: Blockly.Msg.ALL_PIN_HELPURL,
      tooltip: Blockly.Msg.ALL_PIN_TOOLTIP,
      message0: Blockly.Msg.ALL_PIN_MESSAGE0,
      args0: [{
        options: all_pin,
        type: "field_dropdown",
        name: "all_pin"
      }]
    });
  }
};
Blockly.Blocks.set_digital = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Pin,
      helpUrl: Blockly.Msg.SET_DIGITAL_HELPURL,
      tooltip: Blockly.Msg.SET_DIGITAL_TOOLTIP,
      message0: Blockly.Msg.SET_DIGITAL_MESSAGE0,
      args0: [{
        options: set_digital,
        type: "field_dropdown",
        name: "set_digital"
      }]
    });
  }
};
Blockly.Blocks.set_analog = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Pin,
      helpUrl: Blockly.Msg.SET_ANALOG_HELPURL,
      tooltip: Blockly.Msg.SET_ANALOG_TOOLTIP,
      message0: Blockly.Msg.SET_ANALOG_MESSAGE0,
      args0: [{
        options: set_analog,
        type: "field_dropdown",
        name: "set_analog"
      }]
    });
  }
};
Blockly.Blocks.read_analog_pin = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Pin,
      helpUrl: Blockly.Msg.READ_ANALOG_PIN_HELPURL,
      tooltip: Blockly.Msg.READ_ANALOG_PIN_TOOLTIP,
      message0: Blockly.Msg.READ_ANALOG_PIN_MESSAGE0,
      args0: [{
        options: read_analog,
        type: "field_dropdown",
        name: "read_analog_pin"
      }]
    });
  }
};
Blockly.Blocks.input_pin = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Pin,
      helpUrl: Blockly.Msg.INPUT_PIN_HELPURL,
      tooltip: Blockly.Msg.INPUT_PIN_TOOLTIP,
      message0: Blockly.Msg.INPUT_PIN_MESSAGE0,
      args0: [{
        options: all_pin,
        type: "field_dropdown",
        name: "input_pin"
      }]
    });
  }
};
Blockly.Blocks.output_pin = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Pin,
      helpUrl: Blockly.Msg.OUTPUT_PIN_HELPURL,
      tooltip: Blockly.Msg.OUTPUT_PIN_TOOLTIP,
      message0: Blockly.Msg.OUTPUT_PIN_MESSAGE0,
      args0: [{
        options: output_pin,
        type: "field_dropdown",
        name: "output_pin"
      }]
    });
  }
};

function getFirstProvince() {
  for (var a in CITYS_DATA) {
    return a;
  }

  return "";
}

function getCitysByProvince(a) {
  var b = [],
    c;

  for (c in CITYS_DATA[a]) {
    b.push([c, c]);
  }

  return b;
}

var PROVINCES = [],
  key;

for (key in CITYS_DATA) {
  PROVINCES.push([key, key]);
}

var CITYS = getCitysByProvince(getFirstProvince());
Blockly.Blocks.china_city = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "String",
      colour: CategoryColors.Weather,
      helpUrl: "",
      tooltip: "",
      message0: Blockly.Msg.CHINA_CITY_MESSAGE0,
      args0: [{
        options: PROVINCES,
        type: "field_dropdown",
        name: "province"
      }, {
        options: CITYS,
        type: "field_dropdown",
        name: "city"
      }]
    });
  }
};
Blockly.Blocks.china_city_town = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "String",
      colour: CategoryColors.Wifi,
      helpUrl: "",
      tooltip: "",
      message0: Blockly.Msg.CHINA_CITY_TOWN_MESSAGE0,
      args0: [{
        options: PROVINCES,
        type: "field_dropdown",
        name: "province"
      }, {
        options: CITYS,
        type: "field_dropdown",
        name: "city"
      }, {
        options: [["-", "-"]],
        type: "field_dropdown",
        name: "town"
      }, {
        options: [[Blockly.Msg.CHINA_CITY_PINYIN, "pinyin"], [Blockly.Msg.CHINA_CITY_CNNAME, "cnname"]],
        type: "field_dropdown",
        name: "type"
      }]
    });
  }
};
Blockly.Blocks.int_to_chr = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "String",
      colour: CategoryColors.Math,
      helpUrl: Blockly.Msg.INT_TO_CHR_HELPURL,
      tooltip: Blockly.Msg.INT_TO_CHR_TOOLTIP,
      message0: Blockly.Msg.INT_TO_CHR_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "_int"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_hcsr04_obj = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.General,
      helpUrl: Blockly.Msg.CocoRobo_HCSR04_OBJ_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_HCSR04_OBJ_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_HCSR04_OBJ_MESSAGE0,
      args0: [{
        text: "hcsr04",
        type: "field_input",
        name: "hcsr04_name"
      }, {
        check: "Number",
        type: "input_value",
        name: "trigger"
      }, {
        check: "Number",
        type: "input_value",
        name: "echo"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_hcsr04_distance = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.General,
      helpUrl: Blockly.Msg.CocoRobo_HCSR04_DISTANCE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_HCSR04_DISTANCE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_HCSR04_DISTANCE_MESSAGE0,
      args0: [{
        text: "hcsr04",
        type: "field_input",
        name: "hcsr04_name"
      }, {
        options: [["mm", "mm"], ["cm", "cm"]],
        type: "field_dropdown",
        name: "unit"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_hcsr04_distance_mm = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Pin,
      helpUrl: Blockly.Msg.CocoRobo_HCSR04_DISTANCE_MM_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_HCSR04_DISTANCE_MM_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_HCSR04_DISTANCE_MM_MESSAGE0,
      args0: [{
        text: "hcsr04",
        type: "field_input",
        name: "hcsr04_name"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_pm2_5_MIC = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.General,
      helpUrl: Blockly.Msg.CocoRobo_PM2_5_MIC_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_PM2_5_MIC_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_PM2_5_MIC_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "rx"
      }, {
        options: [["PM1.0ug/m3", "_pm_data[0]"], ["PM2.5ug/m3", "_pm_data[1]"], ["PM10ug/m3", "_pm_data[2]"]],
        type: "field_dropdown",
        name: "unit"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_pm2_5_LitresAir = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.General,
      helpUrl: Blockly.Msg.CocoRobo_PM2_5_LitresAir_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_PM2_5_LitresAir_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_PM2_5_LitresAir_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "rx"
      }, {
        options: [["0.3um", "_pm_data[3]"], ["0.5um", "_pm_data[4]"], ["1um", "_pm_data[5]"], ["2.5um", "_pm_data[6]"], ["5um", "_pm_data[7]"], ["10um", "_pm_data[8]"]],
        type: "field_dropdown",
        name: "unit"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_mac_address = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "String",
      colour: "X" == SOFTWARE_KEY ? CategoryColors.System : CategoryColors.Wifi,
      helpUrl: Blockly.Msg.CocoRobo_MAC_ADDRESS_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_MAC_ADDRESS_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_MAC_ADDRESS_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_ujson_loads = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.Text,
      helpUrl: Blockly.Msg.CocoRobo_UJSON_LOADS_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_UJSON_LOADS_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_UJSON_LOADS_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "data"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_ujson_dumps = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "String",
      colour: CategoryColors.Text,
      helpUrl: Blockly.Msg.CocoRobo_UJSON_DUMPS_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_UJSON_DUMPS_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_UJSON_DUMPS_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "data"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_base64_to_data = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.Math,
      helpUrl: Blockly.Msg.CocoRobo_BASE64_TO_DATA_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BASE64_TO_DATA_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BASE64_TO_DATA_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "data"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_data_to_base64 = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.Math,
      helpUrl: Blockly.Msg.CocoRobo_DATA_TO_BASE64_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_DATA_TO_BASE64_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_DATA_TO_BASE64_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "data"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_hex_to_bin_str = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.Math,
      helpUrl: Blockly.Msg.CocoRobo_HEX_TO_BIN_STR_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_HEX_TO_BIN_STR_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_HEX_TO_BIN_STR_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "convert_chr"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_str_to_hex = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.Math,
      helpUrl: Blockly.Msg.CocoRobo_STR_TO_HEX_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_STR_TO_HEX_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_STR_TO_HEX_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "convert_chr"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_chr_to_int = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "String",
      colour: CategoryColors.Math,
      helpUrl: Blockly.Msg.CocoRobo_CHR_TO_INT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_CHR_TO_INT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_CHR_TO_INT_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "convert_chr"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_int_to_chr = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "String",
      colour: CategoryColors.Math,
      helpUrl: Blockly.Msg.CocoRobo_INT_TO_CHR_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_INT_TO_CHR_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_INT_TO_CHR_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "convert_num"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_ten_converted_to_bytes = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.Math,
      helpUrl: Blockly.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_HELPURL,
      // tooltip: Blockly.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_MESSAGE0,
      args0: [{
        options: [["2", "'\x3cHH'"], ["4", "'\x3cLL'"]],
        type: "field_dropdown",
        name: "convert_choice"
      }, {
        check: "Number",
        type: "input_value",
        name: "convert_num"
      }]
    });
    var thisBlock = this;
    this.setTooltip(function () {
      var mode = thisBlock.getFieldValue('convert_choice');
      var TOOLTIPS = {
        "'\x3cHH'": Blockly.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_TOOLTIP.replace('%1', "2"),
        "'\x3cLL'": Blockly.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_TOOLTIP.replace('%1', "4")
      };
      return TOOLTIPS[mode];
    });
  }
};
Blockly.Blocks.CocoRobo_convert_to_ten = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Math,
      helpUrl: Blockly.Msg.CocoRobo_CONVERT_TO_TEN_HELPURL,
      // tooltip: Blockly.Msg.CocoRobo_CONVERT_TO_TEN_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_CONVERT_TO_TEN_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.CocoRobo_BIN, "2"], [Blockly.Msg.CocoRobo_OCT, "8"], [Blockly.Msg.CocoRobo_HEX, "16"]],
        type: "field_dropdown",
        name: "convert_choice"
      }, {
        check: "String",
        type: "input_value",
        name: "convert_str"
      }]
    });
    var thisBlock = this;
    this.setTooltip(function () {
      var mode = thisBlock.getFieldValue('convert_choice');
      var TOOLTIPS = {
        '2': Blockly.Msg.CocoRobo_CONVERT_TO_TEN_TOOLTIP.replace('%2', "bin"),
        '8': Blockly.Msg.CocoRobo_CONVERT_TO_TEN_TOOLTIP.replace('%2', "oct"),
        '16': Blockly.Msg.CocoRobo_CONVERT_TO_TEN_TOOLTIP.replace('%2', "hex")
      };
      return TOOLTIPS[mode];
    });
  }
};
Blockly.Blocks.CocoRobo_ten_convert_to = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "String",
      colour: CategoryColors.Math,
      helpUrl: Blockly.Msg.CocoRobo_TEN_CONVERT_TO_HELPURL,
      // tooltip: Blockly.Msg.CocoRobo_TEN_CONVERT_TO_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_TEN_CONVERT_TO_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "int_num"
      }, {
        options: [[Blockly.Msg.CocoRobo_BIN, "bin"], [Blockly.Msg.CocoRobo_OCT, "oct"], [Blockly.Msg.CocoRobo_HEX, "hex"]],
        type: "field_dropdown",
        name: "ten_convert_to"
      }]
    });
    var thisBlock = this;
    this.setTooltip(function () {
      return Blockly.Msg.CocoRobo_TEN_CONVERT_TO_TOOLTIP.replace('%2',
        thisBlock.getFieldValue('ten_convert_to'));
    });
  }
};
Blockly.Blocks.CocoRobo_high_low = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Pin,
      helpUrl: Blockly.Msg.CocoRobo_HIGH_LOW_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_HIGH_LOW_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_HIGH_LOW_MESSAGE0,
      args0: [{
        options: [["HIGH", "1"], ["LOW", "0"]],
        type: "field_dropdown",
        name: "high_low"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_start_new_thread = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Event,
      helpUrl: Blockly.Msg.CocoRobo_START_NEW_THREAD_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_START_NEW_THREAD_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_START_NEW_THREAD_MESSAGE0,
      args0: [{
        options: [["1", "1"], ["2", "2"], ["3", "3"], ["4", "4"]],
        type: "field_dropdown",
        name: "thread_name"
      }]
    });
    this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);
  }
};
Blockly.Blocks.CocoRobo_lock_object_acquire_lock = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Event,
      helpUrl: Blockly.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "thread_lock_object",
        text: "lock"
      }]
    });
  }
};
Blockly.Blocks.text_is_number = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Boolean",
      colour: CategoryColors.Text,
      helpUrl: Blockly.Msg.TEXT_IS_NUMBER_HELPURL,
      // tooltip: Blockly.Msg.TEXT_IS_NUMBER_TOOLTIP,
      message0: Blockly.Msg.TEXT_IS_NUMBER_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "TEXT",
        check: "String"
      }, {
        options: [[Blockly.Msg.TEXT_IS_DIGIT, ".isdigit()"], [Blockly.Msg.TEXT_IS_ALPHA, ".isalpha()"]],
        type: "field_dropdown",
        name: "TYPE"
      }]
    });
    var thisBlock = this;
    this.setTooltip(function () {
      var mode = thisBlock.getFieldValue('TYPE');
      var TOOLTIPS = {
        '.isdigit()': Blockly.Msg.TEXT_IS_NUMBER_TOOLTIP.replace('%1', Blockly.Msg.TEXT_IS_DIGIT),
        '.isalpha()': Blockly.Msg.TEXT_IS_NUMBER_TOOLTIP.replace('%1', Blockly.Msg.TEXT_IS_ALPHA)
      };
      return TOOLTIPS[mode];
    });
  }
};
Blockly.Blocks.CocoRobo_bytes_decode = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "String",
      colour: CategoryColors.Text,
      helpUrl: Blockly.Msg.CocoRobo_BYTES_DECODE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BYTES_DECODE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BYTES_DECODE_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "bytes_decode"
      }]
    });
  }
};
Blockly.Blocks.text_format = {
  init: function init() {
    this.jsonInit({
      inputsInline: !1,
      output: "String",
      colour: "#33cc99"
      /* CategoryColors.Text*/
      ,
      helpUrl: Blockly.Msg.TEXT_FORMAT_HELPURL,
      tooltip: Blockly.Msg.TEXT_FORMAT_TOOLTIP,
      message0: Blockly.Msg.TEXT_FORMAT_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "FORMAT",
        check: "String"
      }, {
        type: "input_value",
        name: "CONTENT"
      }]
    });
  }
};
Blockly.Blocks.text_format2 = {
  init: function init() {
    this.jsonInit({
      inputsInline: !1,
      output: "String",
      colour: CategoryColors.Text,
      helpUrl: Blockly.Msg.TEXT_FORMAT2_HELPURL,
      tooltip: Blockly.Msg.TEXT_FORMAT2_TOOLTIP,
      message0: Blockly.Msg.TEXT_FORMAT2_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "FORMAT",
        check: "String"
      }, {
        type: "input_value",
        name: "CONTENT"
      }]
    });
  }
};
Blockly.Blocks.text_to_byte = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: "#33cc99"
      /*CategoryColors.Text*/
      ,
      helpUrl: Blockly.Msg.TEXT_TO_BYTE_HELPURL,
      tooltip: Blockly.Msg.TEXT_TO_BYTE_TOOLTIP,
      message0: Blockly.Msg.TEXT_TO_BYTE_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "TEXT",
        check: "String"
      }]
    });
  }
};
Blockly.Blocks.other_to_byte = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.Text,
      helpUrl: Blockly.Msg.OTHER_TO_BYTE_HELPURL,
      tooltip: Blockly.Msg.OTHER_TO_BYTE_TOOLTIP,
      message0: Blockly.Msg.OTHER_TO_BYTE_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "input_var"
      }]
    });
  }
};
Blockly.Blocks.bit_inversion = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Math,
      helpUrl: Blockly.Msg.BIT_INVERSION_HELPURL,
      tooltip: Blockly.Msg.BIT_INVERSION_TOOLTIP,
      message0: Blockly.Msg.BIT_INVERSION_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "data"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_try_except = {
  init: function init() {
    this.jsonInit({
      message0: "",
      previousStatement: null,
      nextStatement: null,
      colour: CategoryColors.Logic,
      tooltip: "",
      helpUrl: ""
    });
    this.appendStatementInput("TRY").appendField("try");
    this.appendStatementInput("EXCEPT").appendField("except");
  }
};
Blockly.Blocks.CocoRobo_try_except_finally = {
  init: function init() {
    this.jsonInit({
      message0: "",
      previousStatement: null,
      nextStatement: null,
      colour: CategoryColors.Logic,
      tooltip: "",
      helpUrl: ""
    }); // this.appendStatementInput("TRY").appendField(Blockly.Msg.TRY_EXCEPT_TRY);
    // this.appendStatementInput("EXCEPT").appendField(Blockly.Msg.TRY_EXCEPT_EXCEPT);
    // this.appendStatementInput("FINALLY").appendField(Blockly.Msg.TRY_EXCEPT_FINALLY)

    this.appendStatementInput("TRY").appendField("try");
    this.appendStatementInput("EXCEPT").appendField("except");
    this.appendStatementInput("FINALLY").appendField("finally");
  }
};
Blockly.Blocks.text_append_text = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Text,
      args0: [{
        type: "input_value",
        name: "text_abc"
      }, {
        type: "input_value",
        name: "append_text"
      }],
      output: "String",
      inputsInline: !0,
      helpUrl: Blockly.Msg.TEXT_APPEND_TEXT_HELPURL,
      tooltip: Blockly.Msg.TEXT_APPEND_TEXT_TOOLTIP,
      message0: Blockly.Msg.TEXT_APPEND_TEXT_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_custom_code = {
  init: function init() {
    this.jsonInit({
      inputsInline: !1,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Text,
      helpUrl: Blockly.Msg.CocoRobo_CUSTOM_CODE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_CUSTOM_CODE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_CUSTOM_CODE_MESSAGE0,
      args0: [{
        name: "custom_type",
        options: [[Blockly.Msg.CocoRobo_CUSTOM_TYPE_NORMAL, "normal"], [Blockly.Msg.CocoRobo_CUSTOM_TYPE_IMPORT, "topping"]],
        type: "field_dropdown"
      }, {
        type: "input_dummy"
      }, {
        type: "field_textarea",
        name: "custom_code",
        text: "custom code"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_machine_reset = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.System,
      helpUrl: Blockly.Msg.CocoRobo_MACHINE_RESET_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_MACHINE_RESET_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_MACHINE_RESET_MESSAGE0
    });
  }
};
Blockly.Blocks.math_random_randrange = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Math,
      helpUrl: Blockly.Msg.MATH_RANDOM_RANDRANGE_HELPURL,
      tooltip: Blockly.Msg.MATH_RANDOM_RANDRANGE_TOOLTIP,
      message0: Blockly.Msg.MATH_RANDOM_RANDRANGE_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "start"
      }, {
        check: "Number",
        type: "input_value",
        name: "stop"
      }, {
        check: "Number",
        type: "input_value",
        name: "step"
      }]
    });
  }
};
Blockly.Blocks.math_angle = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Math,
      helpUrl: "",
      tooltip: "",
      message0: "%1",
      args0: [{
        name: "angle",
        type: "field_angle"
      }]
    });
  }
};
Blockly.Blocks.math_keep_decimal = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Math,
      helpUrl: Blockly.Msg.MATH_KEEP_DECIMAL_HELPURL,
      tooltip: Blockly.Msg.MATH_KEEP_DECIMAL_TOOLTIP,
      message0: Blockly.Msg.MATH_KEEP_DECIMAL_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "NUM"
      }, {
        check: "Number",
        type: "input_value",
        name: "PLACE"
      }]
    });
  }
};
Blockly.Blocks.labplus_mapping = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      colour: CategoryColors.Math,
      args0: [{
        name: "inputNum",
        type: "input_value",
        check: "Number"
      }, {
        name: "bMin",
        type: "input_value",
        check: "Number"
      }, {
        name: "bMax",
        type: "input_value",
        check: "Number"
      }, {
        name: "cMin",
        type: "input_value",
        check: "Number"
      }, {
        name: "cMax",
        type: "input_value",
        check: "Number"
      }],
      output: "Number",
      message0: Blockly.Msg.labplus_mapping_MESSAGE0,
      tooltip: Blockly.Msg.labplus_mapping_TOOLTIP,
      helpUrl: Blockly.Msg.labplus_mapping_HELPURL
    });
  }
};
Blockly.Blocks.CocoRobo_Timer = {
  init: function init() {
    this.jsonInit({
      message0: Blockly.Msg.CocoRobo_Timer_MESSAGE0,
      nextStatement: null,
      previousStatement: null,
      colour: "X" == SOFTWARE_KEY ? CategoryColors.Event : CategoryColors.Loop,
      helpUrl: Blockly.Msg.CocoRobo_Timer_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_Timer_TOOLTIP,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "Num"
      }, {
        options: [[Blockly.Msg.CocoRobo_PERIODIC, "PERIODIC"], [Blockly.Msg.CocoRobo_ONE_SHOT, "ONE_SHOT"]],
        type: "field_dropdown",
        name: "Timer_mode"
      }, {
        check: "Number",
        type: "input_value",
        name: "period"
      }]
    });
    this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);
  }
};
Blockly.Blocks.CocoRobo_timer_option = {
  init: function init() {
    this.jsonInit({
      colour: "X" == SOFTWARE_KEY ? CategoryColors.Event : CategoryColors.Loop,
      output: "Number",
      helpUrl: "",
      tooltip: "",
      message0: "%1",
      args0: [{
        options: [["1", "1"], ["2", "2"], ["4", "4"], ["7", "7"], ["8", "8"], ["9", "9"], ["10", "10"]],
        type: "field_dropdown",
        name: "Timer_num"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_event_option = {
  init: function init() {
    this.jsonInit({
      colour: "X" == SOFTWARE_KEY ? CategoryColors.Event : CategoryColors.Loop,
      output: "Number",
      helpUrl: "",
      tooltip: "",
      message0: "%1",
      args0: [{
        options: [["10", "10"], ["9", "9"], ["8", "8"], ["7", "7"], ["4", "4"], ["2", "2"], ["1", "1"]],
        type: "field_dropdown",
        name: "Timer_num"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_Timer_value = {
  init: function init() {
    this.jsonInit({
      colour: "X" == SOFTWARE_KEY ? CategoryColors.Event : CategoryColors.Loop,
      output: "Number",
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_Timer_value_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_Timer_value_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "Timer_num"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_Timer_deinit = {
  init: function init() {
    this.jsonInit({
      colour: "X" == SOFTWARE_KEY ? CategoryColors.Event : CategoryColors.Loop,
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_Timer_deinit_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_Timer_deinit_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "Timer_num"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_Interrupt_pin = {
  init: function init() {
    this.jsonInit({
      message0: Blockly.Msg.CocoRobo_Interrupt_pin_MESSAGE0,
      colour: "X" == SOFTWARE_KEY ? CategoryColors.Event : CategoryColors.System,
      helpUrl: Blockly.Msg.CocoRobo_Interrupt_pin_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_Interrupt_pin_TOOLTIP,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "Interrupt_pin"
      }, {
        options: [[Blockly.Msg.CocoRobo_Interrupt_pin_IRQ_RISING, "to_high"], [Blockly.Msg.CocoRobo_Interrupt_pin_IRQ_FALLING, "to_low"]],
        type: "field_dropdown",
        name: "action"
      }]
    });
    this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);
  }
};
Blockly.Blocks.CocoRobo_Interrupt_AB = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      message0: Blockly.Msg.CocoRobo_Interrupt_AB_MESSAGE0,
      colour: "X" == SOFTWARE_KEY ? CategoryColors.Event : CategoryColors.System,
      helpUrl: Blockly.Msg.CocoRobo_Interrupt_AB_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_Interrupt_AB_TOOLTIP,
      args0: [{
        options: button_AB,
        type: "field_dropdown",
        name: "button"
      }, {
        options: [[Blockly.Msg.CocoRobo_IRQ_FALLING, "down"], [Blockly.Msg.CocoRobo_IRQ_RISING, "up"]],
        type: "field_dropdown",
        name: "action"
      }]
    });
    this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);
  }
};
Blockly.Blocks.CocoRobo_is_shaked = {
  init: function init() {
    this.jsonInit({
      colour: "#e8795b",
      output: "Boolean",
      helpUrl: Blockly.Msg.CocoRobo_IS_SHAKED_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_IS_SHAKED_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_IS_SHAKED_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.CocoRobo_IS_SHAKED, "shaked"], [Blockly.Msg.CocoRobo_IS_THROWN, "thrown"]],
        type: "field_dropdown",
        name: "action"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_shake_detector = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      message0: Blockly.Msg.CocoRobo_SHAKE_DETECTOR_MESSAGE0,
      colour: "X" == SOFTWARE_KEY ? CategoryColors.Event : CategoryColors.System,
      helpUrl: Blockly.Msg.CocoRobo_SHAKE_DETECTOR_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_SHAKE_DETECTOR_TOOLTIP,
      args0: [{
        options: [[Blockly.Msg.CocoRobo_IS_SHAKED, "shaked"], [Blockly.Msg.CocoRobo_IS_THROWN, "thrown"]],
        type: "field_dropdown",
        name: "action"
      }]
    });
    this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);
  }
};
Blockly.Blocks.CocoRobo_is_tilted = {
  init: function init() {
    this.jsonInit({
      colour: "#e8795b",
      output: "Boolean",
      helpUrl: Blockly.Msg.CocoRobo_IS_TILTED_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_IS_TILTED_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_IS_TILTED_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.CocoRobo_DIRECTION_FORWARD, "forward"], [Blockly.Msg.CocoRobo_DIRECTION_BACK, "back"], [Blockly.Msg.CocoRobo_DIRECTION_LEFT, "left"], [Blockly.Msg.CocoRobo_DIRECTION_RIGHT, "right"]],
        type: "field_dropdown",
        name: "direction"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_tilt_detector = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      message0: Blockly.Msg.CocoRobo_TILT_DETECTOR_MESSAGE0,
      colour: "X" == SOFTWARE_KEY ? CategoryColors.Event : CategoryColors.System,
      helpUrl: Blockly.Msg.CocoRobo_TILT_DETECTOR_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_TILT_DETECTOR_TOOLTIP,
      args0: [{
        options: [[Blockly.Msg.CocoRobo_DIRECTION_FORWARD, "forward"], [Blockly.Msg.CocoRobo_DIRECTION_BACK, "back"], [Blockly.Msg.CocoRobo_DIRECTION_LEFT, "left"], [Blockly.Msg.CocoRobo_DIRECTION_RIGHT, "right"], [Blockly.Msg.CocoRobo_DIRECTION_NONE, "none"]],
        type: "field_dropdown",
        name: "direction"
      }]
    });
    this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);
  }
};
Blockly.Blocks.CocoRobo_touch_event = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      message0: Blockly.Msg.CocoRobo_TOUCH_EVENT_MESSAGE0,
      colour: "X" == SOFTWARE_KEY ? CategoryColors.Event : CategoryColors.System,
      helpUrl: Blockly.Msg.CocoRobo_TOUCH_EVENT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_TOUCH_EVENT_TOOLTIP,
      args0: [{
        options: touchPad,
        type: "field_dropdown",
        name: "touchPad"
      }, {
        options: [[Blockly.Msg.CocoRobo_TOUCH_EVENT_PRESSED, "pressed"], [Blockly.Msg.CocoRobo_TOUCH_EVENT_UNPRESSED, "unpressed"]],
        type: "field_dropdown",
        name: "action"
      }]
    });
    this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);
  }
};
Blockly.Blocks.CocoRobo_custom_event = {
  init: function init() {
    this.jsonInit({
      message0: Blockly.Msg.CocoRobo_CUSTOM_EVENT_MESSAGE0,
      nextStatement: null,
      previousStatement: null,
      colour: "X" == SOFTWARE_KEY ? CategoryColors.Event : CategoryColors.Loop,
      inputsInline: !0,
      helpUrl: Blockly.Msg.CocoRobo_CUSTOM_EVENT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_CUSTOM_EVENT_TOOLTIP,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "index"
      }, {
        check: "Boolean",
        type: "input_value",
        name: "condition"
      }]
    });
    this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);
  }
};
Blockly.Blocks.CocoRobo_time_ticks = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.System,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_time_ticks_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_time_ticks_MESSAGE0,
      output: "Number",
      args0: [{
        options: [[Blockly.Msg.CocoRobo_s, "time"], [Blockly.Msg.CocoRobo_ms, "ticks_ms"], [Blockly.Msg.CocoRobo_us, "ticks_us"]],
        type: "field_dropdown",
        name: "time_ticks"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_time_localtime = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.System,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_time_localtime_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_time_localtime_MESSAGE0,
      output: "Number",
      args0: [{
        options: [[Blockly.Msg.CocoRobo_year, "0"], [Blockly.Msg.CocoRobo_month, "1"], [Blockly.Msg.CocoRobo_date, "2"], [Blockly.Msg.CocoRobo_hour, "3"], [Blockly.Msg.CocoRobo_minute, "4"], [Blockly.Msg.CocoRobo_s, "5"], [Blockly.Msg.CocoRobo_week, "6"], [Blockly.Msg.CocoRobo_days, "7"]],
        type: "field_dropdown",
        name: "time_localtime"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_sway_xyz = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.System,
      args0: [{
        name: "direction_group",
        options: [[Blockly.Msg.CocoRobo_left_right, "left_right"], [Blockly.Msg.CocoRobo_front_back, "front_back"]],
        type: "field_dropdown"
      }],
      output: "Boolean",
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_sway_xyz_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_sway_xyz_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_servo_angle0 = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Pin,
      args0: [{
        name: "pwm_pin",
        check: "Number",
        type: "input_value"
      }, {
        name: "servo_angle",
        type: "input_value",
        check: "Number"
      }],
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_servo_angle0_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_servo_angle0_MESSAGE0,
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_servo_angle = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Pin,
      args0: [{
        name: "pwm_pin",
        check: "Number",
        type: "input_value"
      }, {
        name: "servo_angle",
        type: "input_value",
        check: "Number"
      }, {
        name: "min_us",
        type: "input_value",
        check: "Number"
      }, {
        name: "max_us",
        type: "input_value",
        check: "Number"
      }, {
        name: "actuation_range",
        type: "input_value",
        check: "Number"
      }],
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_servo_angle_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_servo_angle_MESSAGE0,
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_dh11_hum_tem = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.General,
      args0: [{
        name: "dh11_hum_tem_pin",
        check: "Number",
        type: "input_value"
      }, {
        name: "hum_tem",
        options: [[Blockly.Msg.CocoRobo_tem, "temperature"], [Blockly.Msg.CocoRobo_hum, "humidity"]],
        type: "field_dropdown"
      }],
      output: "Number",
      helpUrl: Blockly.Msg.CocoRobo_dh11_hum_tem_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_dh11_hum_tem_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_dh11_hum_tem_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_dh22_hum_tem = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.General,
      args0: [{
        name: "dh22_hum_tem_pin",
        check: "Number",
        type: "input_value"
      }, {
        name: "hum_tem",
        options: [[Blockly.Msg.CocoRobo_tem, "temperature"], [Blockly.Msg.CocoRobo_hum, "humidity"]],
        type: "field_dropdown"
      }],
      output: "Number",
      helpUrl: Blockly.Msg.CocoRobo_DH22_HUM_TEM_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_DH22_HUM_TEM_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_DH22_HUM_TEM_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_sleep_ms = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Loop,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.MICROBIT_MICROBIT_SLEEP_TOOLTIP,
      message0: Blockly.Msg.MICROBIT_MICROBIT_SLEEP_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "duration"
      }, {
        name: "ms_us",
        options: [[Blockly.Msg.CocoRobo_s, "s"], [Blockly.Msg.CocoRobo_MS, "ms"], [Blockly.Msg.CocoRobo_US, "us"]],
        type: "field_dropdown"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_type = {
  init: function init() {
    this.jsonInit({
      message0: Blockly.Msg.CocoRobo_TYPE_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "VAR"
      }],
      output: null,
      colour: CategoryColors.Logic,
      tooltip: Blockly.Msg.CocoRobo_TYPE_TOOLTIP,
      helpUrl: Blockly.Msg.CocoRobo_TYPE_HELPURL
    });
  }
};
Blockly.Blocks.CocoRobo_type_is = {
  init: function init() {
    this.jsonInit({
      message0: Blockly.Msg.CocoRobo_TYPE_IS_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "VAR"
      }, {
        name: "TYPE",
        options: [["int", "int"], ["float", "float"], ["bool", "bool"], ["str", "str"], ["list", "list"], ["tuple", "tuple"], ["set", "set"], ["dict", "dict"], ["bytes", "bytes"], ["bytearray", "bytearray"], ["complex", "complex"]],
        type: "field_dropdown"
      }],
      output: "Boolean",
      colour: CategoryColors.Logic,
      // tooltip: Blockly.Msg.CocoRobo_TYPE_IS_TOOLTIP,
      helpUrl: Blockly.Msg.CocoRobo_TYPE_IS_HELPURL
    });
    var thisBlock = this;
    this.setTooltip(function () {
      return Blockly.Msg.CocoRobo_TYPE_IS_TOOLTIP.replace('%2',
        thisBlock.getFieldValue('TYPE'));
    });
  }
};
Blockly.Blocks.CocoRobo_eval = {
  init: function init() {
    this.jsonInit({
      message0: Blockly.Msg.CocoRobo_EVAL_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "VAR"
      }],
      output: null,
      colour: CategoryColors.Logic,
      tooltip: Blockly.Msg.CocoRobo_EVAL_TOOLTIP,
      helpUrl: Blockly.Msg.CocoRobo_EVAL_HELPURL
    });
  }
};
Blockly.Blocks.CocoRobo_return = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Logic,
      helpUrl: Blockly.Msg.CocoRobo_RETURN_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_RETURN_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_RETURN_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "VAR"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_time_difference = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      colour: CategoryColors.System,
      output: "Number",
      helpUrl: Blockly.Msg.CocoRobo_TIME_DIFFERENCE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_TIME_DIFFERENCE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_TIME_DIFFERENCE_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "time1"
      }, {
        check: "Number",
        type: "input_value",
        name: "time2"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_def_clock = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Show,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_def_clock_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_def_clock_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "clock_name",
        text: "my_clock"
      }, {
        check: "Number",
        type: "input_value",
        name: "x"
      }, {
        check: "Number",
        type: "input_value",
        name: "y"
      }, {
        check: "Number",
        type: "input_value",
        name: "radius"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_settime_clock = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Show,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_settime_clock_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_settime_clock_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "clock_name",
        text: "my_clock"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_draw_clear_clock = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Show,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_draw_clear_clock_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_draw_clear_clock_MESSAGE0,
      args0: [{
        name: "draw_clear_clock",
        options: [[Blockly.Msg.CocoRobo_draw, "drawClock"], [Blockly.Msg.CocoRobo_clear, "clear"]],
        type: "field_dropdown"
      }, {
        type: "field_input",
        name: "clock_name",
        text: "my_clock"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_button_is_pressed = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.System,
      args0: [{
        name: "button",
        options: [["A", "a"], ["B", "b"], ["A+B", "A+B"]],
        type: "field_dropdown"
      }],
      output: "Boolean",
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_button_is_pressed_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_button_is_pressed_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_button_both_pressed = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.System,
      output: "Boolean",
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_button_both_pressed_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_button_both_pressed_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_touchPad_value = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.System,
      args0: [{
        name: "touchPad",
        options: touchPad,
        type: "field_dropdown"
      }],
      output: "Boolean",
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_touchPad_value_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_touchPad_value_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_touchPad_value_num = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.System,
      args0: [{
        name: "touchPad",
        options: touchPad,
        type: "field_dropdown"
      }],
      output: "Number",
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_touchPad_value_num_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_touchPad_value_num_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_read_digital = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Pin,
      args0: [{
        name: "allPin",
        check: "Number",
        type: "input_value"
      }],
      output: "Number",
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_read_digital_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_read_digital_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_read_ds18b20 = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.General,
      args0: [{
        name: "allPin",
        check: "Number",
        type: "input_value"
      }],
      output: "Number",
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_read_DS18B20_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_read_DS18B20_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_set_digital = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Pin,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_set_digital_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_set_digital_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "num"
      }, {
        name: "allPin",
        check: "Number",
        type: "input_value"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_set_pin_mode = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Pin,
      helpUrl: Blockly.Msg.CocoRobo_SETS_PIN_MODE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_SETS_PIN_MODE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_SETS_PIN_MODE_MESSAGE0,
      args0: [{
        name: "allPin",
        check: "Number",
        type: "input_value"
      }, {
        name: "in_out",
        options: [[Blockly.Msg.CocoRobo_SET_PIN_LEAKY_OUT, "OUT_DRAIN"]],
        type: "field_dropdown"
      }, {
        name: "pin_up_down_pull",
        options: [[Blockly.Msg.CocoRobo_SET_PIN_NO_PULL, "None"], [Blockly.Msg.CocoRobo_SET_PIN_DOWN_PULL, "Pin.PULL_DOWN"], [Blockly.Msg.CocoRobo_SET_PIN_UP_PULL, "Pin.PULL_UP"]],
        type: "field_dropdown"
      }, {
        name: "pin_value",
        check: "Number",
        type: "input_value"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_read_analog = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Pin,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "allPin"
      }],
      output: "Number",
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_read_analog_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_read_analog_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_set_analog = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Pin,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_set_analog_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_set_analog_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "num"
      }, {
        name: "allPin",
        check: "Number",
        type: "input_value"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_rgb_list = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Pin,
      helpUrl: "",
      tooltip: "",
      message0: "%1",
      args0: [{
        options: [[Blockly.Msg.CocoRobo_RGB_0, "0"], [Blockly.Msg.CocoRobo_RGB_1, "1"], [Blockly.Msg.CocoRobo_RGB_2, "2"], [Blockly.Msg.CocoRobo_RGB_ALL, "-1"]],
        type: "field_dropdown",
        name: "rgb_list"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_set_rgb_list_color = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.onboard_RGB,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_SET_RGB_LIST_COLOR_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_SET_RGB_LIST_COLOR_MESSAGE0,
      args0: [{
        name: "num",
        check: "Number",
        type: "input_value"
      }, {
        type: "field_colour",
        name: "COLOUR",
        colour: "#ff0000"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_set_rgb_list_number = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.onboard_RGB,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_SET_RGB_LIST_NUMBER_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_SET_RGB_LIST_NUMBER_MESSAGE0,
      args0: [{
        name: "num",
        check: "Number",
        type: "input_value"
      }, {
        check: "Number",
        type: "input_value",
        name: "r"
      }, {
        check: "Number",
        type: "input_value",
        name: "g"
      }, {
        check: "Number",
        type: "input_value",
        name: "b"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_off_rgb_list = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.onboard_RGB,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_OFF_RGB_LIST_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_OFF_RGB_LIST_MESSAGE0,
      args0: [{
        name: "num",
        check: "Number",
        type: "input_value"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_set_RGB_color = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.System,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_set_RGB_color_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_set_RGB_color_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "num"
      }, {
        type: "field_colour",
        name: "COLOUR",
        colour: "#ff0000"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_set_RGB = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.System,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_set_RGB_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_set_RGB_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "num"
      }, {
        check: "Number",
        type: "input_value",
        name: "r"
      }, {
        check: "Number",
        type: "input_value",
        name: "g"
      }, {
        check: "Number",
        type: "input_value",
        name: "b"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_set_RGB_color_all = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.System,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_set_RGB_color_all_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_set_RGB_color_all_MESSAGE0,
      args0: [{
        type: "field_colour",
        name: "COLOUR",
        colour: "#ff0000"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_set_RGB_all = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.System,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_set_RGB_all_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_set_RGB_all_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "r"
      }, {
        check: "Number",
        type: "input_value",
        name: "g"
      }, {
        check: "Number",
        type: "input_value",
        name: "b"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_fresh_RGB = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.System,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_fresh_RGB_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_fresh_RGB_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_off_RGB = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.System,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_off_RGB_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_off_RGB_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_buzz_state = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Music,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_buzz_state_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_buzz_state_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_buzz_freq = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Music,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_buzz_freq_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_buzz_freq_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "freq"
      }, {
        check: "Number",
        type: "input_value",
        name: "pin"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_buzz_tone = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Music,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_buzz_tone_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_buzz_tone_MESSAGE0,
      args0: [{
        name: "buzz_tone",
        options: buzz_tone,
        type: "field_dropdown"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_read_sound = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.System,
      output: "Number",
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_read_sound_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_read_sound_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_read_light = {
  init: function init() {
    this.jsonInit({
      colour: "#e8795b",
      output: "Number",
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_read_light_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_read_light_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_accelerometer_get = {
  init: function init() {
    this.jsonInit({
      colour: "#e8795b",
      args0: [{
        name: "axis",
        options: axis,
        type: "field_dropdown"
      }],
      output: "Number",
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_accelerometer_get_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_accelerometer_get_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_accelerometer_get_x = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.System,
      output: "Number",
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_accelerometer_get_x_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_accelerometer_get_x_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_accelerometer_get_y = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.System,
      output: "Number",
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_accelerometer_get_y_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_accelerometer_get_y_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_accelerometer_get_z = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.System,
      output: "Number",
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_accelerometer_get_z_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_accelerometer_get_z_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_accelerometer_set_range = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.System,
      args0: [{
        name: "range",
        options: [[Blockly.Msg.CocoRobo_ACCELEROMETER_RANGE_2G, "RANGE_2G"], [Blockly.Msg.CocoRobo_ACCELEROMETER_RANGE_4G, "RANGE_4G"], [Blockly.Msg.CocoRobo_ACCELEROMETER_RANGE_8G, "RANGE_8G"], [Blockly.Msg.CocoRobo_ACCELEROMETER_RANGE_16G, "RANGE_16G"]],
        type: "field_dropdown"
      }],
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_ACCELEROMETER_SET_RANGE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_ACCELEROMETER_SET_RANGE_MESSAGE0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_accelerometer_set_resolustion = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.System,
      args0: [{
        name: "resolustion",
        options: [[Blockly.Msg.CocoRobo_ACCELEROMETER_RES_10_BIT, "RES_10_BIT"], [Blockly.Msg.CocoRobo_ACCELEROMETER_RES_12_BIT, "RES_12_BIT"], [Blockly.Msg.CocoRobo_ACCELEROMETER_RES_14_BIT, "RES_14_BIT"]],
        type: "field_dropdown"
      }],
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_ACCELEROMETER_SET_RESOLUSTION_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_ACCELEROMETER_SET_RESOLUSTION_MESSAGE0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_accelerometer_set_offset = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.System,
      args0: [{
        type: "input_dummy"
      }, {
        check: "Number",
        type: "input_value",
        name: "x"
      }, {
        check: "Number",
        type: "input_value",
        name: "y"
      }, {
        check: "Number",
        type: "input_value",
        name: "z"
      }],
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_ACCELEROMETER_SET_OFFSET_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_ACCELEROMETER_SET_OFFSET_MESSAGE0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_tilt_angle = {
  init: function init() {
    this.jsonInit({
      colour: "#e8795b",
      args0: [{
        name: "axis",
        options: axis,
        type: "field_dropdown"
      }],
      output: "Number",
      helpUrl: Blockly.Msg.CocoRobo_TILT_ANGLE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_TILT_ANGLE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_TILT_ANGLE_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_random_choice = {
  init: function init() {
    this.jsonInit({
      message0: Blockly.Msg.CocoRobo_random_choice_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "list",
        check: ["Array", "String"]
      }],
      output: "String",
      colour: CategoryColors.Math,
      tooltip: Blockly.Msg.CocoRobo_random_choice_TOOLTIP,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL
    });
  }
};
Blockly.Blocks.machine_time_pulse_us = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Pin,
      helpUrl: Blockly.Msg.MACHINE_TIME_PULSE_US_HELPURL,
      tooltip: Blockly.Msg.MACHINE_TIME_PULSE_US_TOOLTIP,
      message0: Blockly.Msg.MACHINE_TIME_PULSE_US_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "pin"
      }, {
        check: "Number",
        type: "input_value",
        name: "pulse"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_print = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Text,
      args0: [{
        name: "CONTENT",
        type: "input_value",
        check: ["Number", "String"]
      }],
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_print_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_print_MESSAGE0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_print_to_chart = {
  init: function init() {
    this.setColour(CategoryColors.Math);
    this.itemCount_ = 1;
    this.updateShape_();
    this.setNextStatement(!0);
    this.setPreviousStatement(!0);
    this.setMutator(new Blockly.Mutator(["CocoRobo_print_to_chart_item"]));
    this.setTooltip(Blockly.Msg.CocoRobo_PRINT_TO_CHART_TOOLTIP);
  },
  mutationToDom: function mutationToDom() {
    var a = document.createElement("mutation");
    a.setAttribute("items", this.itemCount_);
    return a;
  },
  domToMutation: function domToMutation(a) {
    this.itemCount_ = parseInt(a.getAttribute("items"), 10);
    this.updateShape_();
  },
  decompose: function decompose(a) {
    var b = a.newBlock("CocoRobo_print_to_chart_container");
    b.initSvg();

    for (var c = b.getInput("STACK").connection, e = 0; e < this.itemCount_; e++) {
      var d = a.newBlock("CocoRobo_print_to_chart_item");
      d.initSvg();
      c.connect(d.previousConnection);
      c = d.nextConnection;
    }

    return b;
  },
  compose: function compose(a) {
    var b = a.getInputTargetBlock("STACK");

    for (a = []; b;) {
      a.push(b.valueConnection_), b = b.nextConnection && b.nextConnection.targetBlock();
    }

    for (b = 0; b < this.itemCount_; b++) {
      var c = this.getInput("ADD" + b).connection.targetConnection;
      c && -1 == a.indexOf(c) && c.disconnect();
    }

    this.itemCount_ = a.length;
    4 < this.itemCount_ && (this.itemCount_ = 4);
    this.updateShape_();

    for (b = 0; b < this.itemCount_; b++) {
      Blockly.Mutator.reconnect(a[b], this, "ADD" + b);
    }
  },
  saveConnections: function saveConnections(a) {
    a = a.getInputTargetBlock("STACK");

    for (var b = 0; a;) {
      var c = this.getInput("ADD" + b);
      a.valueConnection_ = c && c.connection.targetConnection;
      b++;
      a = a.nextConnection && a.nextConnection.targetBlock();
    }
  },
  updateShape_: function updateShape_() {
    this.itemCount_ && this.getInput("EMPTY") ? this.removeInput("EMPTY") : this.itemCount_ || this.getInput("EMPTY") || this.appendDummyInput("EMPTY").appendField(Blockly.Msg.CocoRobo_PRINT_TO_CHART_EMPTY_TITLE);

    for (var a = 0; a < this.itemCount_; a++) {
      if (!this.getInput("ADD" + a)) {
        var b = this.appendValueInput("ADD" + a);
        0 == a && b.setCheck("Number").appendField(Blockly.Msg.CocoRobo_PRINT_TO_CHART_INPUT_WITH);
      }
    }

    for (; this.getInput("ADD" + a);) {
      this.removeInput("ADD" + a), a++;
    }
  }
};
Blockly.Blocks.CocoRobo_print_to_chart_item = {
  init: function init() {
    this.setColour(CategoryColors.Math);
    this.appendDummyInput().appendField(Blockly.Msg.CocoRobo_PRINT_TO_CHART_ITEM_TITLE);
    this.setPreviousStatement(!0);
    this.setNextStatement(!0);
    this.setTooltip(Blockly.Msg.CocoRobo_PRINT_TO_CHART_ITEM_TOOLTIP);
    this.contextMenu = !1;
  }
};
Blockly.Blocks.CocoRobo_print_to_chart_container = {
  init: function init() {
    this.setColour(CategoryColors.Math);
    this.appendDummyInput().appendField(Blockly.Msg.CocoRobo_PRINT_TO_CHART_CONTAINER_TITLE_ADD);
    this.appendStatementInput("STACK");
    this.setTooltip(Blockly.Msg.CocoRobo_PRINT_TO_CHART_CONTAINER_TOOLTIP);
    this.contextMenu = !1;
  }
};
Blockly.Blocks.CocoRobo_init_chart = {
  init: function init() {
    this.setColour(CategoryColors.Math);
    this.itemCount_ = 1;
    this.updateShape_();
    this.setNextStatement(!0);
    this.setPreviousStatement(!0);
    this.setMutator(new Blockly.Mutator(["CocoRobo_init_chart_item"]));
    this.setTooltip(Blockly.Msg.CocoRobo_INIT_CHART_TOOLTIP);
  },
  mutationToDom: function mutationToDom() {
    var a = document.createElement("mutation");
    a.setAttribute("items", this.itemCount_);
    return a;
  },
  domToMutation: function domToMutation(a) {
    this.itemCount_ = parseInt(a.getAttribute("items"), 10);
    this.updateShape_();
  },
  decompose: function decompose(a) {
    var b = a.newBlock("CocoRobo_init_chart_container");
    b.initSvg();

    for (var c = b.getInput("STACK").connection, e = 0; e < this.itemCount_; e++) {
      var d = a.newBlock("CocoRobo_init_chart_item");
      d.initSvg();
      c.connect(d.previousConnection);
      c = d.nextConnection;
    }

    return b;
  },
  compose: function compose(a) {
    var b = a.getInputTargetBlock("STACK");

    for (a = []; b;) {
      a.push(b.valueConnection_), b = b.nextConnection && b.nextConnection.targetBlock();
    }

    for (b = 0; b < this.itemCount_; b++) {
      var c = this.getInput("ADD" + b).connection.targetConnection;
      c && -1 == a.indexOf(c) && c.disconnect();
    }

    this.itemCount_ = a.length;
    4 < this.itemCount_ && (this.itemCount_ = 4);
    this.updateShape_();

    for (b = 0; b < this.itemCount_; b++) {
      Blockly.Mutator.reconnect(a[b], this, "ADD" + b);
    }
  },
  saveConnections: function saveConnections(a) {
    a = a.getInputTargetBlock("STACK");

    for (var b = 0; a;) {
      var c = this.getInput("ADD" + b);
      a.valueConnection_ = c && c.connection.targetConnection;
      b++;
      a = a.nextConnection && a.nextConnection.targetBlock();
    }
  },
  updateShape_: function updateShape_() {
    this.itemCount_ && this.getInput("EMPTY") ? this.removeInput("EMPTY") : this.itemCount_ || this.getInput("EMPTY") || this.appendDummyInput("EMPTY").appendField(Blockly.Msg.CocoRobo_INIT_CHART_EMPTY_TITLE);

    for (var a = 0; a < this.itemCount_; a++) {
      if (!this.getInput("ADD" + a)) {
        var b = this.appendValueInput("ADD" + a);
        0 == a && b.setCheck("String").appendField(Blockly.Msg.CocoRobo_INIT_CHART_INPUT_WITH);
      }
    }

    for (; this.getInput("ADD" + a);) {
      this.removeInput("ADD" + a), a++;
    }
  }
};
Blockly.Blocks.CocoRobo_init_chart_item = {
  init: function init() {
    this.setColour(CategoryColors.Math);
    this.appendDummyInput().appendField(Blockly.Msg.CocoRobo_INIT_CHART_ITEM_TITLE);
    this.setPreviousStatement(!0);
    this.setNextStatement(!0);
    this.setTooltip(Blockly.Msg.CocoRobo_INIT_CHART_ITEM_TOOLTIP);
    this.contextMenu = !1;
  }
};
Blockly.Blocks.CocoRobo_init_chart_container = {
  init: function init() {
    this.setColour(CategoryColors.Math);
    this.appendDummyInput().appendField(Blockly.Msg.CocoRobo_INIT_CHART_CONTAINER_TITLE_ADD);
    this.appendStatementInput("STACK");
    this.setTooltip(Blockly.Msg.CocoRobo_INIT_CHART_CONTAINER_TOOLTIP);
    this.contextMenu = !1;
  }
};
Blockly.Blocks.CocoRobo_ir_remote_recv = {
  init: function init() {
    this.jsonInit({
      message0: Blockly.Msg.CocoRobo_IR_REMOTE_RECV_MESSAGE0,
      inputsInline: !0,
      colour: CategoryColors.Sensor,
      helpUrl: Blockly.Msg.CocoRobo_IR_REMOTE_RECV_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_IR_REMOTE_RECV_TOOLTIP,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "pin"
      }, {
        type: "input_value",
        name: "address"
      }, {
        type: "input_value",
        name: "command"
      }]
    });
    this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);
  }
};
Blockly.Blocks.CocoRobo_ir_remote_send = {
  init: function init() {
    this.jsonInit({
      message0: Blockly.Msg.CocoRobo_IR_REMOTE_SEND_MESSAGE0,
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Sensor,
      helpUrl: Blockly.Msg.CocoRobo_IR_REMOTE_SEND_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_IR_REMOTE_SEND_TOOLTIP,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "pin"
      }, {
        check: ["Number", "Array"],
        type: "input_value",
        name: "address"
      }, {
        check: ["Number", "Array"],
        type: "input_value",
        name: "command"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bme280_hum_tem_pre = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Common,
      args0: [{
        name: "hum_tem_pre",
        options: [[Blockly.Msg.CocoRobo_tem, "temperature"], [Blockly.Msg.CocoRobo_hum, "humidity"], [Blockly.Msg.CocoRobo_pre, "pressure"]],
        type: "field_dropdown"
      }],
      output: "Number",
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_bme280_hum_tem_pre_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_bme280_hum_tem_pre_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_compass_get_axis = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.System,
      args0: [{
        name: "axis",
        options: axis,
        type: "field_dropdown"
      }],
      output: "Number",
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_COMPASS_GET_AXIS_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_COMPASS_GET_AXIS_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_compass_get_angle = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.System,
      output: "Number",
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_COMPASS_GET_ANGLE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_COMPASS_GET_ANGLE_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_audio_set_volume = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Audio,
      helpUrl: Blockly.Msg.CocoRobo_AUDIO_SET_VOLUME_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AUDIO_SET_VOLUME_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AUDIO_SET_VOLUME_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "volume"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_audio_xunfei_tts = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Audio,
      helpUrl: Blockly.Msg.CocoRobo_AUDIO_XUNFEI_TTS_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AUDIO_XUNFEI_TTS_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AUDIO_XUNFEI_TTS_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "TEXT"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_audio_xunfei_tts_config = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Audio,
      helpUrl: Blockly.Msg.CocoRobo_AUDIO_XUNFEI_TTS_CONFIG_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AUDIO_XUNFEI_TTS_CONFIG_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AUDIO_XUNFEI_TTS_CONFIG_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "APPID"
      }, {
        check: "String",
        type: "input_value",
        name: "API_KEY"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_audio_play = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Audio,
      helpUrl: Blockly.Msg.CocoRobo_AUDIO_PLAY_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AUDIO_PLAY_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AUDIO_PLAY_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "url"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_audio_cmd = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Audio,
      helpUrl: Blockly.Msg.CocoRobo_AUDIO_CMD_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AUDIO_CMD_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AUDIO_CMD_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.PAUSE, "pause"], [Blockly.Msg.PLAY, "resume"], [Blockly.Msg.STOP, "stop"]],
        type: "field_dropdown",
        name: "cmd"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_audio_deinit = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Audio,
      helpUrl: Blockly.Msg.CocoRobo_AUDIO_DEINIT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AUDIO_DEINIT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AUDIO_DEINIT_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_audio_init = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Audio,
      helpUrl: Blockly.Msg.CocoRobo_AUDIO_INIT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AUDIO_INIT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AUDIO_INIT_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_record_init = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Audio,
      helpUrl: Blockly.Msg.CocoRobo_RECORD_INIT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_RECORD_INIT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_RECORD_INIT_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_record_deinit = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Audio,
      helpUrl: Blockly.Msg.CocoRobo_RECORD_DEINIT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_RECORD_DEINIT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_RECORD_DEINIT_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_record_wav = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Audio,
      helpUrl: Blockly.Msg.CocoRobo_RECORD_WAV_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_RECORD_WAV_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_RECORD_WAV_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "file_name"
      }, {
        check: "Number",
        type: "input_value",
        name: "record_time"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_asr = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "String",
      colour: CategoryColors.AI,
      helpUrl: Blockly.Msg.CocoRobo_ASR_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_ASR_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_ASR_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_ir_recv = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_IR_RECV_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_IR_RECV_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_IR_RECV_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "rx"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_ir_trans = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_IR_TRANS_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_IR_TRANS_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_IR_TRANS_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "data"
      }, {
        check: "Number",
        type: "input_value",
        name: "tx"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_lcd_move = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_LCD_MOVE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_LCD_MOVE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_LCD_MOVE_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.CocoRobo_LEFT, "left"], [Blockly.Msg.CocoRobo_RIGHT, "right"]],
        type: "field_dropdown",
        name: "move"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_lcd_text_direction = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_LCD_TEXT_DIRECTION_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_LCD_TEXT_DIRECTION_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_LCD_TEXT_DIRECTION_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.CocoRobo_LEFT_TO_RIGHT, "LEFT_TO_RIGHT"], [Blockly.Msg.CocoRobo_RIGHT_TO_LEFT, "RIGHT_TO_LEFT"]],
        type: "field_dropdown",
        name: "text_direction"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_lcd_clear = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_LCD_CLEAR_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_LCD_CLEAR_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_LCD_CLEAR_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_lcd_set_cursor = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_LCD_SET_CURSOR_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_LCD_SET_CURSOR_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_LCD_SET_CURSOR_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "column"
      }, {
        check: "Number",
        type: "input_value",
        name: "row"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_lcd_cursor = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_LCD_CURSOR_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_LCD_CURSOR_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_LCD_CURSOR_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.LABPLUS_USB_SWITCH_ON, "Cursor(1)"], [Blockly.Msg.LABPLUS_USB_SWITCH_OFF, "Cursor(0)"], [Blockly.Msg.CocoRobo_LCD_CURSOR_BLINK, "Blink(1)"], [Blockly.Msg.CocoRobo_LCD_CURSOR_NO_BLINK, "Blink(0)"]],
        type: "field_dropdown",
        name: "cursor_cmd"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_lcd_home = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_LCD_HOME_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_LCD_HOME_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_LCD_HOME_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_lcd_print = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_LCD_PRINT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_LCD_PRINT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_LCD_PRINT_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "display_str"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_lcd_object = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_LCD_OBJECT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_LCD_OBJECT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_LCD_OBJECT_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_ir_recv = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_IR_RECV_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_IR_RECV_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_IR_RECV_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "rx"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_ir_trans = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_IR_TRANS_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_IR_TRANS_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_IR_TRANS_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "data"
      }, {
        check: "Number",
        type: "input_value",
        name: "tx"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_lcd_move = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_LCD_MOVE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_LCD_MOVE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_LCD_MOVE_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.CocoRobo_LEFT, "left"], [Blockly.Msg.CocoRobo_RIGHT, "right"]],
        type: "field_dropdown",
        name: "move"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_lcd_text_direction = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_LCD_TEXT_DIRECTION_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_LCD_TEXT_DIRECTION_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_LCD_TEXT_DIRECTION_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.CocoRobo_LEFT_TO_RIGHT, "LEFT_TO_RIGHT"], [Blockly.Msg.CocoRobo_RIGHT_TO_LEFT, "RIGHT_TO_LEFT"]],
        type: "field_dropdown",
        name: "text_direction"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_lcd_clear = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_LCD_CLEAR_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_LCD_CLEAR_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_LCD_CLEAR_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_lcd_set_cursor = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_LCD_SET_CURSOR_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_LCD_SET_CURSOR_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_LCD_SET_CURSOR_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "column"
      }, {
        check: "Number",
        type: "input_value",
        name: "row"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_lcd_cursor = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_LCD_CURSOR_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_LCD_CURSOR_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_LCD_CURSOR_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.LABPLUS_USB_SWITCH_ON, "Cursor(1)"], [Blockly.Msg.LABPLUS_USB_SWITCH_OFF, "Cursor(0)"], [Blockly.Msg.CocoRobo_LCD_CURSOR_BLINK, "Blink(1)"], [Blockly.Msg.CocoRobo_LCD_CURSOR_NO_BLINK, "Blink(0)"]],
        type: "field_dropdown",
        name: "cursor_cmd"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_lcd_home = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_LCD_HOME_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_LCD_HOME_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_LCD_HOME_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_lcd_print = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_LCD_PRINT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_LCD_PRINT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_LCD_PRINT_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "display_str"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_lcd_object = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_LCD_OBJECT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_LCD_OBJECT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_LCD_OBJECT_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_lcd_bmp = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_OLCD_BMP_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_OLCD_BMP_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_OLCD_BMP_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "x"
      }, {
        check: "Number",
        type: "input_value",
        name: "y"
      }, {
        check: "Number",
        type: "input_value",
        name: "w"
      }, {
        check: "Number",
        type: "input_value",
        name: "h"
      }, {
        check: "Array",
        type: "input_value",
        name: "bmp"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_lcd_clear = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_OLCD_CLEAR_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_OLCD_CLEAR_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_OLCD_CLEAR_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_lcd_init = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_OLCD_INIT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_OLCD_INIT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_OLCD_INIT_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "tx"
      }, {
        check: "Number",
        type: "input_value",
        name: "rx"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_lcd_print = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_OLCD_PRINT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_OLCD_PRINT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_OLCD_PRINT_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "_print"
      }, {
        check: "Number",
        type: "input_value",
        name: "x"
      }, {
        check: "Number",
        type: "input_value",
        name: "y"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_extio_writeio = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_WRITEIO_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_WRITEIO_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_WRITEIO_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "io_value"
      }, {
        options: [["0", "0"], ["1", "1"], ["2", "2"], ["3", "3"], ["4", "4"], ["5", "5"], ["6", "6"], ["7", "7"]],
        type: "field_dropdown",
        name: "IO"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_extio_readio = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_READIO_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_READIO_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_READIO_MESSAGE0,
      args0: [{
        options: [["0", "0"], ["1", "1"], ["2", "2"], ["3", "3"], ["4", "4"], ["5", "5"], ["6", "6"], ["7", "7"]],
        type: "field_dropdown",
        name: "IO"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_extio_iomode = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_IOMODE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_IOMODE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_EXTIO_IOMODE_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.LABPLUS_COMPITITION_INIT_EXTENDED_PINS_OUTPUT, "0"], [Blockly.Msg.LABPLUS_COMPITITION_INIT_EXTENDED_PINS_INPUT, "1"]],
        type: "field_dropdown",
        name: "mode"
      }, {
        options: [["0", "0"], ["1", "1"], ["2", "2"], ["3", "3"], ["4", "4"], ["5", "5"], ["6", "6"], ["7", "7"]],
        type: "field_dropdown",
        name: "IO"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_mp3_singleLoop = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_MP3_SINGLELOOP_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_MP3_SINGLELOOP_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_MP3_SINGLELOOP_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.LABPLUS_USB_SWITCH_ON, "1"], [Blockly.Msg.LABPLUS_USB_SWITCH_OFF, "0"]],
        type: "field_dropdown",
        name: "singleLoop"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_mp3_cmd = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_MP3_CMD_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_MP3_CMD_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_MP3_CMD_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.PAUSE, "pause"], [Blockly.Msg.STOP, "stop"], [Blockly.Msg.PLAY, "play"], [Blockly.Msg.PLAYNEXT, "playNext"], [Blockly.Msg.PLAYPREV, "playPrev"]],
        type: "field_dropdown",
        name: "cmd"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_mp3_play_song = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_MP3_PLAY_SONG_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_MP3_PLAY_SONG_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_MP3_PLAY_SONG_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "song_order"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_mp3_volume_plus = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_PLUS_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_PLUS_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_PLUS_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.CocoRobo_PLUS_1, "volumeInc"], [Blockly.Msg.CocoRobo_MINUS_1, "volumeDec"]],
        type: "field_dropdown",
        name: "volume_plus"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_mp3_init = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_MP3_INIT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_MP3_INIT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_MP3_INIT_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "mp3_tx"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_mp3_volume = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_MP3_VOLUME_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "volume_level"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_matrix_show = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_SHOW_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_SHOW_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_SHOW_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_matrix_bitmap = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Bluebit,
      args0: [{
        type: "input_dummy"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "00"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "01"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "02"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "03"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "04"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "05"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "06"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "07"
      }, {
        type: "input_dummy"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "10"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "11"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "12"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "13"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "14"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "15"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "16"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "17"
      }, {
        type: "input_dummy"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "20"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "21"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "22"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "23"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "24"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "25"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "26"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "27"
      }, {
        type: "input_dummy"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "30"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "31"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "32"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "33"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "34"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "35"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "36"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "37"
      }, {
        type: "input_dummy"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "40"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "41"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "42"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "43"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "44"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "45"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "46"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "47"
      }, {
        type: "input_dummy"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "50"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "51"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "52"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "53"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "54"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "55"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "56"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "57"
      }, {
        type: "input_dummy"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "60"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "61"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "62"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "63"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "64"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "65"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "66"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "67"
      }, {
        type: "input_dummy"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "70"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "71"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "72"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "73"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "74"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "75"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "76"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "77"
      }],
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_BITMAP_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_BITMAP_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_BITMAP_MESSAGE0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_matrix_fill = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_FILL_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_FILL_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_FILL_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.CocoRobo_display_fill_1, "1"], [Blockly.Msg.CocoRobo_display_fill_0, "0"]],
        type: "field_dropdown",
        name: "fill_clear"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_matrix_brightness = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_BRIGHTNESS_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_BRIGHTNESS_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_MATRIX_BRIGHTNESS_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "brightness_level"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_midi_play = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_MIDI_PLAY_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_MIDI_PLAY_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_MIDI_PLAY_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_PLAY, "1"], [Blockly.Msg.STOP, "0"]],
        type: "field_dropdown",
        name: "play_stop"
      }, {
        check: "Number",
        type: "input_value",
        name: "play_note"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_midi_instrument = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_MIDI_INSTRUMENT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_MIDI_INSTRUMENT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_MIDI_INSTRUMENT_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.MIDI_PIANO, "1"], [Blockly.Msg.MIDI_BRIGHTACOUSTICPIANO, "2"], [Blockly.Msg.MIDI_ELECTRICGRANDPIANO, "3"], [Blockly.Msg.MIDI_HARPSICHORD, "7"], [Blockly.Msg.MIDI_CELESTA, "9"], [Blockly.Msg.MIDI_GLOCKENSPIEL, "10"], [Blockly.Msg.MIDI_MARIMBA, "13"], [Blockly.Msg.MIDI_XYLOPHONE, "14"], [Blockly.Msg.MIDI_TUBULARBELL, "15"], [Blockly.Msg.MIDI_DULCIMER, "16"], [Blockly.Msg.MIDI_VIBRAPHONE, "12"], [Blockly.Msg.MIDI_ORGAN, "17"], [Blockly.Msg.MIDI_ACOUSTIC_GUITAR, "25"], [Blockly.Msg.MIDI_ELECTRIC_GUITAR, "31"], [Blockly.Msg.MIDI_ACOUSTIC_BASS, "33"], [Blockly.Msg.MIDI_STRING_ENSEMBLE, "49"], [Blockly.Msg.MIDI_VIOLIN, "41"], [Blockly.Msg.MIDI_TRUMPET, "57"], [Blockly.Msg.MIDI_SAX, "65"], [Blockly.Msg.MIDI_STEEL_DRUMS, "115"], [Blockly.Msg.MIDI_LEAD, "81"], [Blockly.Msg.MIDI_PAD, "89"]],
        type: "field_dropdown",
        name: "midi_instrument"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_midi_volume = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_MIDI_VOLUME_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_MIDI_VOLUME_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_MIDI_VOLUME_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "midi_volume"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_init_midi = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_INIT_MIDI_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_INIT_MIDI_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_INIT_MIDI_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "midi_tx"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_get_all_color = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Array",
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_get_color = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_GET_COLOR_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_GET_COLOR_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_GET_COLOR_MESSAGE0,
      args0: [{
        name: "r_g_b",
        type: "field_dropdown",
        options: [[Blockly.Msg.CocoRobo_RED, "0"], [Blockly.Msg.CocoRobo_GREEN, "1"], [Blockly.Msg.CocoRobo_BLUE, "2"]]
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_get_all_color_hsv = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Array",
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HSV_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HSV_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_GET_ALL_COLOR_HSV_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_get_color_hsv = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_GET_COLOR_HSV_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_GET_COLOR_HSV_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_GET_COLOR_HSV_MESSAGE0,
      args0: [{
        name: "hsv",
        type: "field_dropdown",
        options: [["H", "0"], ["S", "1"], ["V", "2"]]
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_get_force_measure = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_GET_FORCE_MEASURE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_GET_FORCE_MEASURE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_GET_FORCE_MEASURE_MESSAGE0,
      args0: [{
        name: "measure",
        type: "field_dropdown",
        options: [["0", "0X64"], ["1", "0X65"], ["2", "0X66"], ["3", "0X67"]]
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_get_electricity_measure = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_GET_ELECTRICITY_MEASURE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_GET_ELECTRICITY_MEASURE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_GET_ELECTRICITY_MEASURE_MESSAGE0,
      args0: [{
        name: "measure",
        type: "field_dropdown",
        options: [["0", "0X60"], ["1", "0X61"], ["2", "0X62"], ["3", "0X63"]]
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_get_voltage_measure = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_GET_VOLTAGE_MEASURE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_GET_VOLTAGE_MEASURE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_GET_VOLTAGE_MEASURE_MESSAGE0,
      args0: [{
        name: "measure",
        type: "field_dropdown",
        options: [["0", "0X6A"], ["1", "0X6B"], ["2", "0X6C"], ["3", "0X6D"]]
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_get_magnetic_measure = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_GET_MAGNETIC_MEASURE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_GET_MAGNETIC_MEASURE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_GET_MAGNETIC_MEASURE_MESSAGE0,
      args0: [{
        name: "measure",
        type: "field_dropdown",
        options: [["0", "0X58"], ["1", "0X59"], ["2", "0X5A"], ["3", "0X5B"]]
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_get_PH_measure = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_GET_PH_MEASURE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_GET_PH_MEASURE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_GET_PH_MEASURE_MESSAGE0,
      args0: [{
        name: "measure",
        type: "field_dropdown",
        options: [["0", "0X54"], ["1", "0X55"]]
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_get_tds_measure = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_GET_TDS_MEASURE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_GET_TDS_MEASURE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_GET_TDS_MEASURE_MESSAGE0,
      args0: [{
        name: "measure",
        type: "field_dropdown",
        options: [["0", "0X68"], ["1", "0X69"]]
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_get_pressure_measure = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_GET_PRESSURE_MEASURE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_GET_PRESSURE_MEASURE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_GET_PRESSURE_MEASURE_MESSAGE0,
      args0: [{
        name: "measure",
        type: "field_dropdown",
        options: [["0", "0X5C"], ["1", "0X5D"], ["2", "0X5E"], ["3", "0X5F"]]
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_get_photogate_timer_measure = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_GET_PHOTOGATE_TIMER_MEASURE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_GET_PHOTOGATE_TIMER_MEASURE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_GET_PHOTOGATE_TIMER_MEASURE_MESSAGE0,
      args0: [{
        name: "measure",
        type: "field_dropdown",
        options: [["0", "0X50"], ["1", "0X51"]]
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_init_assistant_wifi = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_INIT_ASSISTANT_WIFI_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_INIT_ASSISTANT_WIFI_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_INIT_ASSISTANT_WIFI_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "ssid"
      }, {
        check: "String",
        type: "input_value",
        name: "password"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_init_assistant_profile = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Bluebit,
      args0: [{
        type: "input_value",
        name: "file_path"
      }],
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_INIT_ASSISTANT_PROFILE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_INIT_ASSISTANT_PROFILE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_INIT_ASSISTANT_PROFILE_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_seg_clear = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_SEG_CLEAR_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_SEG_CLEAR_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_SEG_CLEAR_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_seg_display = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_SEG_DISPLAY_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_SEG_DISPLAY_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_SEG_DISPLAY_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "seg_num"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_ambientlight = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_AMBIENTLIGHT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_AMBIENTLIGHT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_AMBIENTLIGHT_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_hum_tem = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Bluebit,
      output: "Number",
      args0: [{
        name: "hum_tem",
        options: [[Blockly.Msg.CocoRobo_BLUEBIT_TEMPERATURE, "temperature"], [Blockly.Msg.CocoRobo_BLUEBIT_HUMIDITY, "humidity"]],
        type: "field_dropdown"
      }],
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_HUM_TEM_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_HUM_TEM_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_HUM_TEM_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_ultrasonic = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Bluebit,
      output: "Number",
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_ULTRASONIC_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_ULTRASONIC_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_ULTRASONIC_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_read_digital = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Bluebit,
      args0: [{
        name: "digital_senor",
        options: [[Blockly.Msg.CocoRobo_BLUEBIT_SOUND, "SOUND"], [Blockly.Msg.CocoRobo_BLUEBIT_IR_RECEIVE, "IR"], [Blockly.Msg.CocoRobo_BLUEBIT_VIBRATION, "VIBRATION"], [Blockly.Msg.CocoRobo_BLUEBIT_RFID, "RFID"], [Blockly.Msg.CocoRobo_BLUEBIT_FINGERPRINT_SCANNER, "FINGERPRINT"], [Blockly.Msg.CocoRobo_BLUEBIT_PIR, "PIR"], [Blockly.Msg.CocoRobo_BLUEBIT_MAGNETIC, "MAGNETIC"], [Blockly.Msg.CocoRobo_BLUEBIT_BUTTON, "BUTTON"]],
        type: "field_dropdown"
      }, {
        name: "allPin",
        check: "Number",
        type: "input_value"
      }],
      output: "Boolean",
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_READ_DIGITAL_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_READ_DIGITAL_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_READ_DIGITAL_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_line_follower = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Bluebit,
      args0: [{
        name: "allPin",
        check: "Number",
        type: "input_value"
      }],
      output: "Boolean",
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_LINE_FOLLOWER_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_LINE_FOLLOWER_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_LINE_FOLLOWER_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_set_true = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_SET_TRUE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_SET_TRUE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_SET_TRUE_MESSAGE0,
      args0: [{
        name: "set_digital_senor",
        options: [[Blockly.Msg.CocoRobo_BLUEBIT_FAN, "_FAN"], [Blockly.Msg.CocoRobo_BLUEBIT_LASER, "_LASER"]],
        type: "field_dropdown"
      }, {
        name: "set_digital_P",
        check: "Number",
        type: "input_value"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_set_false = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_SET_FALSE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_SET_FALSE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_SET_FALSE_MESSAGE0,
      args0: [{
        name: "set_digital_senor",
        options: [[Blockly.Msg.CocoRobo_BLUEBIT_FAN, "_FAN"], [Blockly.Msg.CocoRobo_BLUEBIT_LASER, "_LASER"]],
        type: "field_dropdown"
      }, {
        name: "set_digital_P",
        check: "Number",
        type: "input_value"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_read_analog = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Bluebit,
      args0: [{
        name: "analog_senor",
        options: [[Blockly.Msg.CocoRobo_BLUEBIT_ANALOG_LIGHT, "_ANALOG_LIGHT"], [Blockly.Msg.CocoRobo_BLUEBIT_SOUND, "_SOUND"], [Blockly.Msg.CocoRobo_BLUEBIT_NTC_TEMP, "_NTC"], [Blockly.Msg.CocoRobo_BLUEBIT_WATER, "_WATER"], [Blockly.Msg.CocoRobo_BLUEBIT_SOIL_MOISTURE, "_SOIL"], [Blockly.Msg.CocoRobo_BLUEBIT_ROTATE_DIMMER, "_ROTATE"], [Blockly.Msg.CocoRobo_BLUEBIT_LINEAR_SLIDING_POTENTIOMETER, "_LINEAR_SLIDING_POTENTIOMETER"], [Blockly.Msg.CocoRobo_BLUEBIT_LM35_TEMP, "_LM35"]],
        type: "field_dropdown"
      }, {
        name: "read_analog_P",
        check: "Number",
        type: "input_value"
      }],
      output: "Number",
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_READ_ANALOG_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_READ_ANALOG_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_READ_ANALOG_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_set_analog = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Bluebit,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "analog_value"
      }, {
        name: "set_analog_P",
        check: "Number",
        type: "input_value"
      }],
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_SET_ANALOG_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_SET_ANALOG_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_SET_ANALOG_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_voice_record_on = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Bluebit,
      args0: [{
        type: "field_dropdown",
        name: "func",
        options: [[Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_PLAY, "play"], [Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_REC, "rec"]]
      }, {
        type: "input_dummy"
      }, {
        name: "rec",
        check: "Number",
        type: "input_value"
      }, {
        name: "play",
        check: "Number",
        type: "input_value"
      }],
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_ON_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_ON_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_ON_MESSAGE0,
      nextStatement: null,
      previousStatement: null,
      inputsInline: !0
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_voice_record_off = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Bluebit,
      args0: [{
        type: "input_dummy"
      }, {
        name: "rec",
        check: "Number",
        type: "input_value"
      }, {
        name: "play",
        check: "Number",
        type: "input_value"
      }],
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_OFF_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_OFF_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_VOICE_RECORD_OFF_MESSAGE0,
      nextStatement: null,
      previousStatement: null,
      inputsInline: !0
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_motor_on = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Bluebit,
      args0: [{
        name: "status",
        type: "field_dropdown",
        options: [[Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_CLOCKWISE, "1"], [Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_ANTICLOCKWISE, "0"]]
      }, {
        name: "speed",
        type: "input_value",
        check: "Number"
      }, {
        name: "ain1",
        check: "Number",
        type: "input_value"
      }, {
        name: "ain2",
        check: "Number",
        type: "input_value"
      }],
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_MESSAGE0,
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_motor_off = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Bluebit,
      args0: [{
        type: "input_dummy"
      }, {
        name: "ain1",
        check: "Number",
        type: "input_value"
      }, {
        name: "ain2",
        check: "Number",
        type: "input_value"
      }],
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_MESSAGE0,
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_get_motorpeed = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Bluebit,
      args0: [{
        name: "left_right_interface",
        options: [["M1", "1"], ["M2", "2"]],
        type: "field_dropdown"
      }],
      inputsInline: !0,
      output: "Number",
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_GET_MOTORPEED_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_GET_MOTORPEED_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_GET_MOTORPEED_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_m1m2_led_on = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_M1M2_LED_ON_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_M1M2_LED_ON_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_M1M2_LED_ON_MESSAGE0,
      args0: [{
        name: "m1m2",
        options: [["M1", "1"], ["M2", "2"]],
        type: "field_dropdown"
      }, {
        check: "Number",
        type: "input_value",
        name: "brightness"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_m1m2_led_off = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_M1M2_LED_OFF_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_M1M2_LED_OFF_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_M1M2_LED_OFF_MESSAGE0,
      args0: [{
        name: "m1m2",
        options: [["M1", "1"], ["M2", "2"]],
        type: "field_dropdown"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_set_Fan = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Bluebit,
      args0: [{
        name: "left_right_interface",
        options: [["M1", "1"], ["M2", "2"]],
        type: "field_dropdown"
      }],
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_SET_FAN_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_SET_FAN_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_SET_FAN_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_set_Fan_off = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Bluebit,
      args0: [{
        name: "left_right_interface",
        options: [["M1", "1"], ["M2", "2"]],
        type: "field_dropdown"
      }],
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_SET_FAN_OFF_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_SET_FAN_OFF_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_SET_FAN_OFF_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_4button = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Bluebit,
      args0: [{
        name: "pin",
        check: "Number",
        type: "input_value"
      }, {
        name: "button_val",
        type: "field_dropdown",
        options: [[Blockly.Msg.BLUE, "'A'"], [Blockly.Msg.GREEN, "'B'"], [Blockly.Msg.RED, "'C'"], [Blockly.Msg.YELLOW, "'D'"]]
      }],
      output: "Boolean",
      message0: Blockly.Msg.CocoRobo_BLUEBIT_4BUTTON_MESSAGE0,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_4BUTTON_TOOLTIP,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_4BUTTON_HELPURL
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_joystick = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Bluebit,
      args0: [{
        name: "pin",
        check: "Number",
        type: "input_value"
      }, {
        name: "pin1",
        check: "Number",
        type: "input_value"
      }, {
        name: "axis",
        type: "field_dropdown",
        options: [["X", "X"], ["Y", "Y"]]
      }],
      output: "Number",
      message0: Blockly.Msg.CocoRobo_BLUEBIT_JOYSTICK_MESSAGE0,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_JOYSTICK_TOOLTIP,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_JOYSTICK_HELPURL
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_motor_on_i2c = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Bluebit,
      args0: [{
        name: "left_right_interface",
        options: [["M1", "M1"], ["M2", "M2"]],
        type: "field_dropdown"
      }, {
        name: "status",
        type: "field_dropdown",
        options: [[Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_CLOCKWISE, "CLOCKWISE"], [Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_ANTICLOCKWISE, "ANTICLOCKWISE"]]
      }, {
        check: "Number",
        type: "input_value",
        name: "speed"
      }],
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_I2C_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_I2C_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_ON_I2C_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_motor_off_i2c = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Bluebit,
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_I2C_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_I2C_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_MOTOR_OFF_I2C_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_coded_three_motor_on_i2c = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Bluebit,
      args0: [{
        name: "pattern",
        options: [["pwm", "set_pwm"], ["\u5DE1\u822A", "set_cruise"], ["\u5B9A\u4F4D", "set_position"]],
        type: "field_dropdown"
      }, {
        name: "Dial_code",
        options: [["0", "0X10"], ["1", "0X11"], ["2", "0X12"], ["3", "0X13"]],
        type: "field_dropdown"
      }, {
        check: "Number",
        type: "input_value",
        name: "speed1"
      }, {
        check: "Number",
        type: "input_value",
        name: "speed2"
      }],
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_CODED_THREE_MOTOR_ON_I2C_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_CODED_THREE_MOTOR_ON_I2C_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_CODED_THREE_MOTOR_ON_I2C_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_bluebit_coded_stop_motor_on_i2c = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Bluebit,
      helpUrl: Blockly.Msg.CocoRobo_BLUEBIT_CODED_STOP_MOTOR_ON_I2C_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLUEBIT_CODED_STOP_MOTOR_ON_I2C_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLUEBIT_CODED_STOP_MOTOR_ON_I2C_MESSAGE0,
      args0: [{
        name: "coded_stop",
        type: "field_dropdown",
        options: [["0", "0X10"], ["1", "0X11"], ["2", "0X12"], ["3", "0X13"]]
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_init_bluetooth = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: bluetooth_color,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_init_bluetooth_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_init_bluetooth_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "init_bluetooth"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_OnOff_bluetooth = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: bluetooth_color,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_OnOff_bluetooth_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_OnOff_bluetooth_MESSAGE0,
      args0: [{
        name: "OnOff_bluetooth",
        type: "field_dropdown",
        options: [["\u5F00\u542F", "start"], ["\u5173\u95ED", "stop"]]
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_HID_consumer_bluetooth = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: bluetooth_color,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_HID_consumer_bluetooth_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_HID_consumer_bluetooth_MESSAGE0,
      args0: [{
        options: [["Power", "ble.HID_CONSUMER_POWER"], ["Reset", "ble.HID_CONSUMER_RESET"], ["Sleep", "ble.HID_CONSUMER_SLEEP"], ["Menu", "ble.HID_CONSUMER_MENU"], ["Selection", "ble.HID_CONSUMER_SELECTION"], ["Assign Selection", "ble.HID_CONSUMER_ASSIGN_SEL"], ["Mode Step", "ble.HID_CONSUMER_MODE_STEP"], ["Recall Last", "ble.HID_CONSUMER_RECALL_LAST"], ["Quit", "ble.HID_CONSUMER_QUIT"], ["Help", "ble.HID_CONSUMER_HELP"], ["Channel Increment", "ble.HID_CONSUMER_CHANNEL_UP"], ["Channel Decrement", "ble.HID_CONSUMER_CHANNEL_DOWN"], ["Play", "ble.HID_CONSUMER_PLAY"], ["Pause", "ble.HID_CONSUMER_PAUSE"], ["Record", "ble.HID_CONSUMER_RECORD"], ["Fast Forward", "ble.HID_CONSUMER_FAST_FORWARD"], ["Rewind", "ble.HID_CONSUMER_REWIND"], ["Scan Next Track", "ble.HID_CONSUMER_SCAN_NEXT_TRK"], ["Scan Previous Track", "ble.HID_CONSUMER_SCAN_PREV_TRK"], ["Stop", "ble.HID_CONSUMER_STOP"], ["Eject", "ble.HID_CONSUMER_EJECT"], ["Random Play", "ble.HID_CONSUMER_RANDOM_PLAY"], ["Select Disk", "ble.HID_CONSUMER_SELECT_DISC"], ["Enter Disc", "ble.HID_CONSUMER_ENTER_DISC"], ["Repeat", "ble.HID_CONSUMER_REPEAT"], ["Volume", "ble.HID_CONSUMER_VOLUME"], ["Balance", "ble.HID_CONSUMER_BALANCE"], ["Mute", "ble.HID_CONSUMER_MUTE"], ["Bass", "ble.HID_CONSUMER_BASS"], ["Volume Increment", "ble.HID_CONSUMER_VOLUME_UP"], ["Volume Decrement", "ble.HID_CONSUMER_VOLUME_DOWN"]],
        type: "field_dropdown",
        name: "type"
      }, {
        options: [["\u5F00\u542F", "True"], ["\u5173\u95ED", "False"]],
        type: "field_dropdown",
        name: "status_bar"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_HID_keyboard_bluetooth = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: bluetooth_color,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_HID_keyboard_bluetooth_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_HID_keyboard_bluetooth_MESSAGE0,
      args0: [{
        name: "HID_keyboard_bluetooth",
        type: "field_dropdown",
        options: [["A", "ble.HID_KEY_A"], ["B", "ble.HID_KEY_B"], ["C", "ble.HID_KEY_C"], ["D", "ble.HID_KEY_D"], ["E", "ble.HID_KEY_E"], ["F", "ble.HID_KEY_F"], ["G", "ble.HID_KEY_G"], ["H", "ble.HID_KEY_H"], ["I", "ble.HID_KEY_I"], ["J", "ble.HID_KEY_J"], ["K", "ble.HID_KEY_K"], ["L", "ble.HID_KEY_L"], ["M", "ble.HID_KEY_M"], ["N", "ble.HID_KEY_N"], ["O", "ble.HID_KEY_O"], ["P", "ble.HID_KEY_P"], ["Q", "ble.HID_KEY_Q"], ["R", "ble.HID_KEY_R"], ["S", "ble.HID_KEY_S"], ["T", "ble.HID_KEY_T"], ["U", "ble.HID_KEY_U"], ["V", "ble.HID_KEY_V"], ["W", "ble.HID_KEY_W"], ["X", "ble.HID_KEY_X"], ["Y", "ble.HID_KEY_Y"], ["Z", "ble.HID_KEY_Z"], ["1", "ble.HID_KEY_1"], ["2", "ble.HID_KEY_2"], ["3", "ble.HID_KEY_3"], ["4", "ble.HID_KEY_4"], ["5", "ble.HID_KEY_5"], ["6", "ble.HID_KEY_6"], ["7", "ble.HID_KEY_7"], ["8", "ble.HID_KEY_8"], ["9", "ble.HID_KEY_9"], ["0", "ble.HID_KEY_0"], ["Return", "ble.HID_KEY_RETURN"], ["ESCAPE", "ble.HID_KEY_ESCAPE"], ["DELETE", "ble.HID_KEY_DELETE"], ["Tab", "ble.HID_KEY_TAB"], ["Spacebar", "ble.HID_KEY_SPACEBAR"], ["- and (underscore)", "ble.HID_KEY_MINUS"], ["\x3d and +", "ble.HID_KEY_EQUAL"], ["[ and {", "ble.HID_KEY_LEFT_BRKT"], [" ] and }", "ble.HID_KEY_RIGHT_BRKT"], ["and |", "ble.HID_KEY_BACK_SLASH"], ["; and :", "ble.HID_KEY_SEMI_COLON"], ["\u2018\u2019 and \u201C\u201D", "ble.HID_KEY_SGL_QUOTE"], ["Grave Accent and Tilde", "ble.HID_KEY_GRV_ACCENT"], [", and \x3c", "ble.HID_KEY_COMMA"], [". and \x3e", "ble.HID_KEY_DOT"], ["/ and ?", "ble.HID_KEY_FWD_SLASH"], ["/ and ?", "ble.HID_KEY_CAPS_LOCK"], ["F1", "ble.HID_KEY_F1"], ["F2", "ble.HID_KEY_F2"], ["F3", "ble.HID_KEY_F3"], ["F4", "ble.HID_KEY_F4"], ["F5", "ble.HID_KEY_F5"], ["F6", "ble.HID_KEY_F6"], ["F7", "ble.HID_KEY_F7"], ["F8", "ble.HID_KEY_F8"], ["F9", "ble.HID_KEY_F9"], ["F10", "ble.HID_KEY_F10"], ["F11", "ble.HID_KEY_F11"], ["F12", "ble.HID_KEY_F12"], ["Print Screen", "ble.HID_KEY_PRNT_SCREEN"], ["Scroll Lock", "ble.HID_KEY_SCROLL_LOCK"], ["Pause", "ble.HID_KEY_PAUSE"], ["Insert", "ble.HID_KEY_INSERT"], ["Home", "ble.HID_KEY_HOME"], ["PageUp", "ble.HID_KEY_PAGE_UP"], ["Delete Forward", "ble.HID_KEY_DELETE_FWD"], ["End", "ble.HID_KEY_END"], ["PageDown", "ble.HID_KEY_PAGE_DOWN"], ["RightArrow", "ble.HID_KEY_RIGHT_ARROW"], ["LeftArrow", "ble.HID_KEY_LEFT_ARROW"], ["DownArrow", "ble.HID_KEY_DOWN_ARROW"], ["UpArrow", "ble.HID_KEY_UP_ARROW"], ["Num Lock and Clear", "ble.HID_KEY_NUM_LOCK"], [" /", "ble.HID_KEY_DIVIDE"], [" *", "ble.HID_KEY_MULTIPLY"], [" -", "ble.HID_KEY_SUBTRACT"], [" +-", "ble.HID_KEY_ADD"], [" ENTER", "ble.HID_KEY_ENTER"], [" 1 and End", "ble.HID_KEYPAD_1"], [" 2 and Down Arrow", "ble.HID_KEYPAD_2"], [" 3 and PageDn", "ble.HID_KEYPAD_3"], [" 4 and Lfet Arrow", "ble.HID_KEYPAD_4"], [" 5", "ble.HID_KEYPAD_5"], [" 6 and Right Arrow", "ble.HID_KEYPAD_6"], [" 7 and Home", "ble.HID_KEYPAD_7"], [" 8 and Up Arrow", "ble.HID_KEYPAD_8"], [" 9 and PageUp", "ble.HID_KEYPAD_9"], [" 0 and Insert", "ble.HID_KEYPAD_0"], [" . and Delete", "ble.HID_KEYPAD_DOT"], [" Mute", "ble.HID_KEY_MUTE"], [" Volume up", "ble.HID_KEY_VOLUME_UP"], [" Volume down", "ble.HID_KEY_VOLUME_DOWN"]]
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_HID_release_keyboard_bluetooth = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: bluetooth_color,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_HID_release_keyboard_bluetooth_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_HID_release_keyboard_bluetooth_MESSAGE0,
      args0: [{
        name: "HID_release_keyboard",
        type: "field_dropdown"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_HID_mouse_bluetooth = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: bluetooth_color,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_HID_mouse_bluetooth_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_HID_mouse_bluetooth_MESSAGE0,
      args0: [{
        name: "HID_mouse",
        type: "field_dropdown",
        options: [["\u5DE6\u952E", "ble.HID_MOUSE_LEFT"], ["\u53F3\u952E", "ble.HID_MOUSE_RIGHT"], ["\u6EDA\u8F6E\u6309\u4E0B", "ble.HID_MOUSE_MIDDLE"]]
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_HID_release_mouse_bluetooth = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: bluetooth_color,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_HID_release_mouse_bluetooth_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_HID_release_mouse_bluetooth_MESSAGE0,
      args0: [{
        name: "HID_release_mouse",
        type: "field_dropdown"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_HID_mouse_pointer_bluetooth = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: bluetooth_color,
      helpUrl: Blockly.Msg.CocoRobo_HID_mouse_pointer_bluetooth_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_HID_mouse_pointer_bluetooth_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_HID_mouse_pointer_bluetooth_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "column"
      }, {
        check: "Number",
        type: "input_value",
        name: "row"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_HID_keyboard_group_bluetooth = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: bluetooth_color,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_HID_keyboard_group_bluetooth_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_HID_keyboard_group_bluetooth_MESSAGE0,
      args0: [{
        name: "HID_keyboard_bluetooth",
        type: "field_dropdown",
        options: [["A", "ble.HID_KEY_A"], ["B", "ble.HID_KEY_B"], ["C", "ble.HID_KEY_C"], ["D", "ble.HID_KEY_D"], ["E", "ble.HID_KEY_E"], ["F", "ble.HID_KEY_F"], ["G", "ble.HID_KEY_G"], ["H", "ble.HID_KEY_H"], ["I", "ble.HID_KEY_I"], ["J", "ble.HID_KEY_J"], ["K", "ble.HID_KEY_K"], ["L", "ble.HID_KEY_L"], ["M", "ble.HID_KEY_M"], ["N", "ble.HID_KEY_N"], ["O", "ble.HID_KEY_O"], ["P", "ble.HID_KEY_P"], ["Q", "ble.HID_KEY_Q"], ["R", "ble.HID_KEY_R"], ["S", "ble.HID_KEY_S"], ["T", "ble.HID_KEY_T"], ["U", "ble.HID_KEY_U"], ["V", "ble.HID_KEY_V"], ["W", "ble.HID_KEY_W"], ["X", "ble.HID_KEY_X"], ["Y", "ble.HID_KEY_Y"], ["Z", "ble.HID_KEY_Z"], ["1", "ble.HID_KEY_1"], ["2", "ble.HID_KEY_2"], ["3", "ble.HID_KEY_3"], ["4", "ble.HID_KEY_4"], ["5", "ble.HID_KEY_5"], ["6", "ble.HID_KEY_6"], ["7", "ble.HID_KEY_7"], ["8", "ble.HID_KEY_8"], ["9", "ble.HID_KEY_9"], ["0", "ble.HID_KEY_0"], ["Return", "ble.HID_KEY_RETURN"], ["ESCAPE", "ble.HID_KEY_ESCAPE"], ["DELETE", "ble.HID_KEY_DELETE"], ["Tab", "ble.HID_KEY_TAB"], ["Spacebar", "ble.HID_KEY_SPACEBAR"], ["- and (underscore)", "ble.HID_KEY_MINUS"], ["\x3d and +", "ble.HID_KEY_EQUAL"], ["[ and {", "ble.HID_KEY_LEFT_BRKT"], [" ] and }", "ble.HID_KEY_RIGHT_BRKT"], ["and |", "ble.HID_KEY_BACK_SLASH"], ["; and :", "ble.HID_KEY_SEMI_COLON"], ["\u2018\u2019 and \u201C\u201D", "ble.HID_KEY_SGL_QUOTE"], ["Grave Accent and Tilde", "ble.HID_KEY_GRV_ACCENT"], [", and \x3c", "ble.HID_KEY_COMMA"], [". and \x3e", "ble.HID_KEY_DOT"], ["/ and ?", "ble.HID_KEY_FWD_SLASH"], ["/ and ?", "ble.HID_KEY_CAPS_LOCK"], ["F1", "ble.HID_KEY_F1"], ["F2", "ble.HID_KEY_F2"], ["F3", "ble.HID_KEY_F3"], ["F4", "ble.HID_KEY_F4"], ["F5", "ble.HID_KEY_F5"], ["F6", "ble.HID_KEY_F6"], ["F7", "ble.HID_KEY_F7"], ["F8", "ble.HID_KEY_F8"], ["F9", "ble.HID_KEY_F9"], ["F10", "ble.HID_KEY_F10"], ["F11", "ble.HID_KEY_F11"], ["F12", "ble.HID_KEY_F12"], ["Print Screen", "ble.HID_KEY_PRNT_SCREEN"], ["Scroll Lock", "ble.HID_KEY_SCROLL_LOCK"], ["Pause", "ble.HID_KEY_PAUSE"], ["Insert", "ble.HID_KEY_INSERT"], ["Home", "ble.HID_KEY_HOME"], ["PageUp", "ble.HID_KEY_PAGE_UP"], ["Delete Forward", "ble.HID_KEY_DELETE_FWD"], ["End", "ble.HID_KEY_END"], ["PageDown", "ble.HID_KEY_PAGE_DOWN"], ["RightArrow", "ble.HID_KEY_RIGHT_ARROW"], ["LeftArrow", "ble.HID_KEY_LEFT_ARROW"], ["DownArrow", "ble.HID_KEY_DOWN_ARROW"], ["UpArrow", "ble.HID_KEY_UP_ARROW"], ["Num Lock and Clear", "ble.HID_KEY_NUM_LOCK"], [" /", "ble.HID_KEY_DIVIDE"], [" *", "ble.HID_KEY_MULTIPLY"], [" -", "ble.HID_KEY_SUBTRACT"], [" +-", "ble.HID_KEY_ADD"], [" ENTER", "ble.HID_KEY_ENTER"], [" 1 and End", "ble.HID_KEYPAD_1"], [" 2 and Down Arrow", "ble.HID_KEYPAD_2"], [" 3 and PageDn", "ble.HID_KEYPAD_3"], [" 4 and Lfet Arrow", "ble.HID_KEYPAD_4"], [" 5", "ble.HID_KEYPAD_5"], [" 6 and Right Arrow", "ble.HID_KEYPAD_6"], [" 7 and Home", "ble.HID_KEYPAD_7"], [" 8 and Up Arrow", "ble.HID_KEYPAD_8"], [" 9 and PageUp", "ble.HID_KEYPAD_9"], [" 0 and Insert", "ble.HID_KEYPAD_0"], [" . and Delete", "ble.HID_KEYPAD_DOT"], [" Mute", "ble.HID_KEY_MUTE"], [" Volume up", "ble.HID_KEY_VOLUME_UP"], [" Volume down", "ble.HID_KEY_VOLUME_DOWN"]]
      }, {
        type: "input_value",
        name: "group"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_HID_keyboard_part_bluetooth = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: bluetooth_color,
      helpUrl: Blockly.Msg.CocoRobo_HID_keyboard_part_bluetooth_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_HID_keyboard_part_bluetooth_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_HID_keyboard_part_bluetooth_MESSAGE0,
      args0: [{
        type: "field_dropdown",
        name: "HID_keyboard_group",
        options: [["L_CTRL", "ble.KEY_MASK_L_CTRL"], ["L_SHIFT", "ble.KEY_MASK_L_SHIFT"], ["L_ALT", "ble.KEY_MASK_L_ALT"], ["L_GUI", "ble.KEY_MASK_L_GUI"], ["R_CTRL", "ble.KEY_MASK_R_CTRL "], ["R_SHIFT", "ble.KEY_MASK_R_SHIFT"], ["R_ALT", "ble.KEY_MASK_R_ALT"], ["R_GUI", "ble.KEY_MASK_R_GUI"]]
      }]
    });
  }
};
Blockly.Blocks.dict_create_with = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Dictionary,
      helpUrl: Blockly.Msg.DICT_CREATE_WITH_HELPURL,
      tooltip: Blockly.Msg.DICT_CREATE_WITH_TOOLTIP,
      message0: Blockly.Msg.DICT_CREATE_WITH_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "dict_name"
      }, {
        type: "input_value",
        name: "dict_items"
      }]
    });
  }
};
Blockly.Blocks.dict_create_with_items_insert = {
  init: function init() {
    this.setColour(CategoryColors.Dictionary);
    this.appendDummyInput("").appendField(new Blockly.FieldLabel(Blockly.Msg.DICT_CREATE_WITH_INPUT_WITH), "TIP");
    this.itemCount_ = 3;
    this.updateShape_();
    this.setOutput(!0);
    this.setMutator(new Blockly.Mutator(["dict_create_with_item"]));
    this.setTooltip(Blockly.Msg.DICT_CREATE_WITH_ITEMS_INSERT_TOOLTIP);
  },
  mutationToDom: function mutationToDom() {
    var a = document.createElement("mutation");
    a.setAttribute("items", this.itemCount_);
    return a;
  },
  domToMutation: function domToMutation(a) {
    this.itemCount_ = parseInt(a.getAttribute("items"), 10);
    this.updateShape_();
  },
  decompose: function decompose(a) {
    var b = a.newBlock("dict_create_with_container");
    b.initSvg();

    for (var c = b.getInput("STACK").connection, e = 0; e < this.itemCount_; e++) {
      var d = a.newBlock("dict_create_with_item");
      d.initSvg();
      c.connect(d.previousConnection);
      c = d.nextConnection;
    }

    return b;
  },
  compose: function compose(a) {
    a = a.getInputTargetBlock("STACK");

    for (var b = [], c = 0; a;) {
      b[c] = a.valueConnection_, a = a.nextConnection && a.nextConnection.targetBlock(), c++;
    }

    this.itemCount_ = c;
    this.updateShape_();

    for (c = 0; c < this.itemCount_; c++) {
      b[c] && this.getInput("ADD" + c).connection.connect(b[c]);
    }
  },
  saveConnections: function saveConnections(a) {
    a = a.getInputTargetBlock("STACK");

    for (var b = 0; a;) {
      var c = this.getInput("ADD" + b);
      a.valueConnection_ = c && c.connection.targetConnection;
      b++;
      a = a.nextConnection && a.nextConnection.targetBlock();
    }
  },
  updateShape_: function updateShape_() {
    this.getInput("EMPTY") && this.removeInput("EMPTY");

    for (var a = [], b = 0; this.getInput("ADD" + b); b++) {
      a.push(this.getFieldValue("KEY" + b)), this.removeInput("ADD" + b);
    }

    if (0 == this.itemCount_) this.getField("TIP").setText(Blockly.Msg.DICT_CREATE_EMPTY_TITLE); else for (this.getField("TIP").setText(Blockly.Msg.DICT_CREATE_WITH_INPUT_WITH), b = 0; b < this.itemCount_; b++) {
      this.appendValueInput("ADD" + b).setCheck(null).setAlign(Blockly.ALIGN_RIGHT).appendField(new Blockly.FieldTextInput(a.length > b ? a[b] : 0 == b ? "key_0" : "key_" + b), "KEY" + b).appendField(":");
    }
  },
  getVars: function getVars() {
    return [this.getFieldValue("VAR")];
  },
  renameVar: function renameVar(a, b) {
    Blockly.Names.equals(a, this.getFieldValue("VAR")) && this.setTitleValue(b, "VAR");
  }
};
Blockly.Blocks.dict_create_with_item = {
  init: function init() {
    this.setColour(CategoryColors.Dictionary);
    this.appendDummyInput().appendField(Blockly.Msg.DICT_CREATE_WITH_ITEM_TITLE);
    this.setPreviousStatement(!0);
    this.setNextStatement(!0);
    this.setTooltip(Blockly.Msg.DICT_CREATE_WITH_ITEM_TOOLTIP);
    this.contextMenu = !1;
  }
};
Blockly.Blocks.dict_create_with_container = {
  init: function init() {
    this.setColour(CategoryColors.Dictionary);
    this.appendDummyInput().appendField(Blockly.Msg.DICT_CREATE_WITH_CONTAINER_TITLE_ADD);
    this.appendStatementInput("STACK");
    this.setTooltip(Blockly.Msg.DICT_CREATE_WITH_CONTAINER_TOOLTIP);
    this.contextMenu = !1;
  }
};
Blockly.Blocks.dict_key_value = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Dictionary,
      args0: [{
        type: "input_value",
        name: "dict_name"
      }, {
        type: "input_value",
        name: "dict_items"
      }],
      output: ["String", "Number", "Boolean", "Array"],
      inputsInline: !0,
      helpUrl: Blockly.Msg.DICT_KEY_VALUE_HELPURL,
      tooltip: Blockly.Msg.DICT_KEY_VALUE_TOOLTIP,
      message0: Blockly.Msg.DICT_KEY_VALUE_MESSAGE0
    });
  }
};
Blockly.Blocks.add_dict_key_value = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Dictionary,
      args0: [{
        type: "input_value",
        name: "dict_name"
      }, {
        type: "input_value",
        name: "dict_items"
      }, {
        type: "input_value",
        name: "add_value"
      }],
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.ADD_DICT_KEY_VALUE_HELPURL,
      tooltip: Blockly.Msg.ADD_DICT_KEY_VALUE_TOOLTIP,
      message0: Blockly.Msg.ADD_DICT_KEY_VALUE_MESSAGE0
    });
  }
};
Blockly.Blocks.dict_length = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Dictionary,
      args0: [{
        type: "input_value",
        name: "dict_name"
      }],
      output: "Number",
      inputsInline: !0,
      helpUrl: Blockly.Msg.DICT_LENGTH_HELPURL,
      tooltip: Blockly.Msg.DICT_LENGTH_TOOLTIP,
      message0: Blockly.Msg.DICT_LENGTH_MESSAGE0
    });
  }
};
Blockly.Blocks.dict_key_exist = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Dictionary,
      args0: [{
        type: "input_value",
        name: "dict_name"
      }, {
        type: "input_value",
        name: "dict_items"
      }],
      output: "Boolean",
      inputsInline: !0,
      helpUrl: Blockly.Msg.DICT_KEY_EXIST_HELPURL,
      tooltip: Blockly.Msg.DICT_KEY_EXIST_TOOLTIP,
      message0: Blockly.Msg.DICT_KEY_EXIST_MESSAGE0
    });
  }
};
Blockly.Blocks.dict_key_or_val_list = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Dictionary,
      args0: [{
        type: "input_value",
        name: "dict_name"
      }, {
        options: [[Blockly.Msg.DICT_KEYS, "keys"], [Blockly.Msg.DICT_VALUES, "values"]],
        type: "field_dropdown",
        name: "key_or_val"
      }],
      output: "Array",
      inputsInline: !0,
      helpUrl: Blockly.Msg.DICT_KEY_OR_VAL_LIST_HELPURL,
      // tooltip: Blockly.Msg.DICT_KEY_OR_VAL_LIST_TOOLTIP,
      message0: Blockly.Msg.DICT_KEY_OR_VAL_LIST_MESSAGE0
    });
    var thisBlock = this;
    this.setTooltip(function () {
      var mode = thisBlock.getFieldValue('key_or_val');
      var TOOLTIPS = {
        'keys': Blockly.Msg.DICT_KEY_OR_VAL_LIST_TOOLTIP.replace('%2', Blockly.Msg.DICT_KEYS),
        'values': Blockly.Msg.DICT_KEY_OR_VAL_LIST_TOOLTIP.replace('%2', Blockly.Msg.DICT_VALUES)
      };
      return TOOLTIPS[mode];
    });
  }
};
Blockly.Blocks.CocoRobo_input = {
  init: function init() {
    this.jsonInit({
      output: "Number",
      colour: CategoryColors.Text,
      helpUrl: Blockly.Msg.CocoRobo_INPUT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_INPUT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_INPUT_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "imports"
      }]
    });
  }
};
Blockly.Blocks.file_to_list = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.File,
      args0: [{
        type: "input_value",
        name: "file_path"
      }, {
        options: [[Blockly.Msg.CocoRobo_ENTER, "ENTER"], [Blockly.Msg.CocoRobo_COMMA, ","], [Blockly.Msg.CocoRobo_SEMICOLON, ";"], [Blockly.Msg.CocoRobo_SPACE, " "]],
        type: "field_dropdown",
        name: "separator"
      }],
      output: "Array",
      inputsInline: !0,
      helpUrl: Blockly.Msg.FILE_TO_LIST_HELPURL,
      tooltip: Blockly.Msg.FILE_TO_LIST_TOOLTIP,
      message0: Blockly.Msg.FILE_TO_LIST_MESSAGE0
    });
  }
};
Blockly.Blocks.file_to_bin = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.File,
      args0: [{
        type: "input_value",
        name: "file_path"
      }],
      output: "Array",
      inputsInline: !0,
      helpUrl: Blockly.Msg.FILE_TO_BIN_HELPURL,
      tooltip: Blockly.Msg.FILE_TO_BIN_TOOLTIP,
      message0: Blockly.Msg.FILE_TO_BIN_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_init_file = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.File,
      args0: [{
        type: "input_value",
        name: "file_path"
      }],
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_INIT_FILE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_INIT_FILE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_INIT_FILE_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_write_file = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.File,
      args0: [{
        type: "input_value",
        name: "file_path"
      }, {
        type: "input_value",
        name: "data"
      }, {
        options: [[Blockly.Msg.CocoRobo_ENTER, "ENTER"], [Blockly.Msg.CocoRobo_COMMA, ","], [Blockly.Msg.CocoRobo_SEMICOLON, ";"], [Blockly.Msg.CocoRobo_SPACE, " "]],
        type: "field_dropdown",
        name: "separator"
      }],
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_WRITE_FILE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_WRITE_FILE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_WRITE_FILE_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_sdcard_init = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.File,
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_SDCARD_INIT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_SDCARD_INIT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_SDCARD_INIT_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_sdcard_mount = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.File,
      args0: [{
        check: "String",
        type: "input_value",
        name: "sd_path"
      }],
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_SDCARD_MOUNT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_SDCARD_MOUNT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_SDCARD_MOUNT_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_dev_i2c_init = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Pin,
      args0: [{
        type: "input_value",
        name: "freq"
      }, {
        check: "Number",
        type: "input_value",
        name: "scl"
      }, {
        check: "Number",
        type: "input_value",
        name: "sda"
      }],
      helpUrl: Blockly.Msg.CocoRobo_dev_i2c_init_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_dev_i2c_init_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_dev_i2c_init_MESSAGE0,
      nextStatement: null,
      previousStatement: null,
      inputsInline: !0
    });
  }
};
Blockly.Blocks.CocoRobo_i2c_init = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Pin,
      args0: [{
        type: "input_value",
        name: "freq"
      }],
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_i2c_init_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_i2c_init_MESSAGE0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_i2c_read_write = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Pin,
      args0: [{
        name: "adr",
        type: "input_value",
        check: "Number"
      }, {
        name: "data",
        type: "input_value",
        check: ["Number", "String"]
      }],
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_i2c_read_write_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_i2c_read_write_MESSAGE0,
      nextStatement: null,
      previousStatement: null,
      inputsInline: !0
    });
  }
};
Blockly.Blocks.CocoRobo_i2c_readfrom = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Pin,
      args0: [{
        name: "adr",
        type: "input_value",
        check: "Number"
      }, {
        name: "num",
        type: "input_value",
        check: "Number"
      }],
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_i2c_readfrom_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_i2c_readfrom_MESSAGE0,
      output: "String",
      inputsInline: !0
    });
  }
};
Blockly.Blocks.mqtt_common_setup = {
  init: function init() {
    this.jsonInit({
      inputsInline: !1,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_MQTT,
      helpUrl: Blockly.Msg.MQTT_COMMON_SETUP_HELPURL,
      tooltip: Blockly.Msg.MQTT_COMMON_SETUP_TOOLTIP,
      message0: Blockly.Msg.MQTT_COMMON_SETUP_MESSAGE0,
      args0: [{
        type: "input_dummy"
      }, {
        type: "input_value",
        name: "client_id"
      }, {
        type: "input_value",
        name: "server"
      }, {
        type: "input_value",
        name: "port"
      }, {
        type: "input_value",
        name: "user"
      }, {
        type: "input_value",
        name: "password"
      }, {
        type: "input_value",
        name: "keepalive"
      }]
    });
  }
};
Blockly.Blocks.mqtt_tencent_setup = {
  init: function init() {
    this.jsonInit({
      inputsInline: !1,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_MQTT,
      helpUrl: Blockly.Msg.MQTT_TENCENT_SETUP_HELPURL,
      tooltip: Blockly.Msg.MQTT_TENCENT_SETUP_TOOLTIP,
      message0: Blockly.Msg.MQTT_TENCENT_SETUP_MESSAGE0,
      args0: [{
        type: "input_dummy"
      }, {
        check: "String",
        type: "input_value",
        name: "Url"
      }, {
        check: "Number",
        type: "input_value",
        name: "Port"
      }, {
        check: "String",
        type: "input_value",
        name: "AppId"
      }, {
        check: "String",
        type: "input_value",
        name: "Device"
      }, {
        type: "input_dummy"
      }, {
        check: "String",
        type: "input_value",
        name: "ReportTopic"
      }, {
        check: "String",
        type: "input_value",
        name: "ControlTopic"
      }]
    });
  }
};
Blockly.Blocks.mqtt_setup = {
  init: function init() {
    this.jsonInit({
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_MQTT,
      helpUrl: Blockly.Msg.MQTT_SETUP_HELPURL,
      tooltip: Blockly.Msg.MQTT_SETUP_TOOLTIP,
      message0: Blockly.Msg.MQTT_SETUP_MESSAGE0,
      args0: [{
        type: "input_dummy"
      }, {
        check: "String",
        type: "input_value",
        name: "Server"
      }, {
        check: "String",
        type: "input_value",
        name: "Iot_id"
      }, {
        check: "String",
        type: "input_value",
        name: "Iot_pwd"
      }, {
        check: "String",
        type: "input_value",
        name: "Client_ID"
      }]
    });
  }
};
Blockly.Blocks.mqtt_connect = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_MQTT,
      helpUrl: Blockly.Msg.MQTT_CONNECT_HELPURL,
      tooltip: Blockly.Msg.MQTT_CONNECT_TOOLTIP,
      message0: Blockly.Msg.MQTT_CONNECT_MESSAGE0
    });
  }
};
Blockly.Blocks.mqtt_publish = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_MQTT,
      helpUrl: Blockly.Msg.MQTT_PUBLISH_HELPURL,
      tooltip: Blockly.Msg.MQTT_PUBLISH_TOOLTIP,
      message0: Blockly.Msg.MQTT_PUBLISH_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "msg"
      }, {
        check: "String",
        type: "input_value",
        name: "topic"
      }]
    });
  }
};
Blockly.Blocks.mqtt_receive = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_MQTT,
      helpUrl: Blockly.Msg.MQTT_RECEIVE_HELPURL,
      tooltip: Blockly.Msg.MQTT_RECEIVE_TOOLTIP,
      message0: Blockly.Msg.MQTT_RECEIVE_MESSAGE0,
      args0: [{
        check: "Variable",
        type: "input_value",
        name: "topic"
      }, {
        type: "input_value",
        name: "msg"
      }]
    });
    this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);
  }
};
Blockly.Blocks.mqtt_rec_from_topic = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_MQTT,
      helpUrl: Blockly.Msg.MQTT_REC_FROM_TOPIC_HELPURL,
      tooltip: Blockly.Msg.MQTT_REC_FROM_TOPIC_TOOLTIP,
      message0: Blockly.Msg.MQTT_REC_FROM_TOPIC_MESSAGE0,
      args0: [{
        text: "rJO1km2oN",
        type: "field_input",
        name: "topic"
      }, {
        type: "input_value",
        name: "msg"
      }]
    });
    this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);
  }
};
Blockly.Blocks.mqtt_wait_msg = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_MQTT,
      helpUrl: Blockly.Msg.MQTT_WAIT_MSG_HELPURL,
      tooltip: Blockly.Msg.MQTT_WAIT_MSG_TOOLTIP,
      message0: Blockly.Msg.MQTT_WAIT_MSG_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.CocoRobo_USOCKET_BLOCK, "block"], [Blockly.Msg.CocoRobo_USOCKET_UNBLOCK, "unblock"]],
        type: "field_dropdown",
        name: "mode"
      }]
    });
  }
};
Blockly.Blocks.mqtt_disconnect = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_MQTT,
      helpUrl: Blockly.Msg.MQTT_DISCONNECT_HELPURL,
      tooltip: Blockly.Msg.MQTT_DISCONNECT_TOOLTIP,
      message0: Blockly.Msg.MQTT_DISCONNECT_MESSAGE0
    });
  }
};
Blockly.Blocks.mqtt_last_will = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_MQTT,
      helpUrl: Blockly.Msg.MQTT_LAST_WILL_HELPURL,
      tooltip: Blockly.Msg.MQTT_LAST_WILL_TOOLTIP,
      message0: Blockly.Msg.MQTT_LAST_WILL_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "msg"
      }, {
        check: "String",
        type: "input_value",
        name: "topic"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_tinywebio_start = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_TinyWebIO,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_tinywebio_start_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_tinywebio_start_MESSAGE0,
      args0: [{
        name: "tinywebio_mode",
        options: [[Blockly.Msg.CocoRobo_run_in_back, "0"], [Blockly.Msg.CocoRobo_run_in_front, "1"]],
        type: "field_dropdown"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_tinywebio_client_setup = {
  init: function init() {
    this.jsonInit({
      inputsInline: !1,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_TinyWebIO,
      helpUrl: Blockly.Msg.CocoRobo_tinywebio_client_setup_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_tinywebio_client_setup_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_tinywebio_client_setup_MESSAGE0,
      args0: [{
        type: "input_dummy"
      }, {
        type: "input_value",
        name: "db_server",
        check: "String"
      }, {
        type: "input_value",
        name: "send_items",
        check: "String"
      }, {
        type: "input_value",
        name: "recv_items",
        check: "String"
      }, {
        name: "interval",
        type: "input_value",
        check: "Number"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_tinywebio_client_action = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_TinyWebIO,
      helpUrl: Blockly.Msg.CocoRobo_tinywebio_client_action_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_tinywebio_client_action_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_tinywebio_client_action_MESSAGE0,
      args0: [{
        name: "action_mode",
        options: [[Blockly.Msg.CocoRobo_tinywebio_client_action_start, "start"], [Blockly.Msg.CocoRobo_tinywebio_client_action_stop, "stop"]],
        type: "field_dropdown"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_blynk_terminal_widget_vpin = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_Blynk,
      helpUrl: Blockly.Msg.CocoRobo_BLYNK_TERMINAL_WIDGET_VPIN_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLYNK_TERMINAL_WIDGET_VPIN_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLYNK_TERMINAL_WIDGET_VPIN_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "virtual_pin"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_blynk_sync_virtual = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_Blynk,
      helpUrl: Blockly.Msg.CocoRobo_BLYNK_SYNC_VIRTUAL_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLYNK_SYNC_VIRTUAL_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLYNK_SYNC_VIRTUAL_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "virtual_pin"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_blynk_on_disconnected = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_Blynk,
      helpUrl: Blockly.Msg.CocoRobo_BLYNK_ON_DISCONNECTED_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLYNK_ON_DISCONNECTED_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLYNK_ON_DISCONNECTED_MESSAGE0
    });
    this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);
  }
};
Blockly.Blocks.CocoRobo_blynk_on_connected = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_Blynk,
      helpUrl: Blockly.Msg.CocoRobo_BLYNK_ON_CONNECTED_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLYNK_ON_CONNECTED_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLYNK_ON_CONNECTED_MESSAGE0
    });
    this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);
  }
};
Blockly.Blocks.CocoRobo_blynktimer_run = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_Blynk,
      helpUrl: Blockly.Msg.CocoRobo_BLYNKTIMER_RUN_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLYNKTIMER_RUN_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLYNKTIMER_RUN_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_blynk_run = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_Blynk,
      helpUrl: Blockly.Msg.CocoRobo_BLYNK_RUN_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLYNK_RUN_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLYNK_RUN_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_blynk_app_notify = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_Blynk,
      helpUrl: Blockly.Msg.CocoRobo_BLYNK_APP_NOTIFY_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLYNK_APP_NOTIFY_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLYNK_APP_NOTIFY_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "notification"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_blynk_stop_timers = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_Blynk,
      helpUrl: Blockly.Msg.CocoRobo_BLYNK_STOP_TIMERS_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLYNK_STOP_TIMERS_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLYNK_STOP_TIMERS_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "timer_num"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_blynk_set_property = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_Blynk,
      helpUrl: Blockly.Msg.CocoRobo_BLYNK_SET_PROPERTY_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLYNK_SET_PROPERTY_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLYNK_SET_PROPERTY_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "attribute_name"
      }, {
        type: "input_value",
        name: "attribute_value"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_blynk_email = {
  init: function init() {
    this.jsonInit({
      inputsInline: !1,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_Blynk,
      helpUrl: Blockly.Msg.CocoRobo_BLYNK_EMAIL_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLYNK_EMAIL_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLYNK_EMAIL_MESSAGE0,
      args0: [{
        type: "input_dummy"
      }, {
        check: "String",
        type: "input_value",
        name: "subject"
      }, {
        check: "String",
        type: "input_value",
        name: "body"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_blynk_get_timers = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.IoT_Blynk,
      helpUrl: Blockly.Msg.CocoRobo_BLYNK_GET_TIMERS_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLYNK_GET_TIMERS_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLYNK_GET_TIMERS_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_blynktimer = {
  init: function init() {
    this.jsonInit({
      message0: Blockly.Msg.CocoRobo_BLYNKTIMER_MESSAGE0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_Blynk,
      helpUrl: Blockly.Msg.CocoRobo_BLYNKTIMER_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLYNKTIMER_TOOLTIP,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "Num"
      }, {
        options: [[Blockly.Msg.CocoRobo_PERIODIC, "False"], [Blockly.Msg.CocoRobo_ONE_SHOT, "True"]],
        type: "field_dropdown",
        name: "Timer_mode"
      }, {
        check: "Number",
        type: "input_value",
        name: "period"
      }]
    });
    this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);
  }
};
Blockly.Blocks.CocoRobo_blynk_sensor_data_to_app = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_Blynk,
      helpUrl: Blockly.Msg.CocoRobo_BLYNK_SENSOR_DATA_TO_APP_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLYNK_SENSOR_DATA_TO_APP_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLYNK_SENSOR_DATA_TO_APP_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "sensor_data"
      }, {
        check: "Number",
        type: "input_value",
        name: "virtual_pin"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_blynk_app_data = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_Blynk,
      helpUrl: Blockly.Msg.CocoRobo_BLYNK_APP_DATA_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLYNK_APP_DATA_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLYNK_APP_DATA_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "virtual_pin"
      }, {
        type: "input_value",
        name: "virtual_pin_val"
      }]
    });
    this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);
  }
};
Blockly.Blocks.CocoRobo_blynk_setup = {
  init: function init() {
    this.jsonInit({
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_Blynk,
      helpUrl: Blockly.Msg.CocoRobo_BLYNK_SETUP_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BLYNK_SETUP_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BLYNK_SETUP_MESSAGE0,
      args0: [{
        type: "input_dummy"
      }, {
        check: "String",
        type: "input_value",
        name: "server"
      }, {
        check: "Number",
        type: "input_value",
        name: "port"
      }, {
        check: "String",
        type: "input_value",
        name: "auth"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_onenet_option_boards = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_OneNet_WeChat,
      helpUrl: Blockly.Msg.CocoRobo_ONENET_OPTION_BOARDS_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_ONENET_OPTION_BOARDS_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_ONENET_OPTION_BOARDS_MESSAGE0,
      args0: [{
        options: WECHAT_APP_DEVICES,
        type: "field_dropdown",
        name: "option_boards"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_onenet_setup = {
  init: function init() {
    this.setHelpUrl(Blockly.Msg.CONTROLS_IF_HELPURL);
    this.setColour(CategoryColors.IoT_OneNet);
    this.appendDummyInput().appendField(Blockly.Msg.CocoRobo_ONENET);
    this.appendValueInput("server").setCheck("String").appendField(Blockly.Msg.CocoRobo_SERVER);
    this.appendValueInput("device_id").setCheck("String").appendField(Blockly.Msg.CocoRobo_DEVICE_ID);
    this.appendValueInput("product_id").setCheck("String").appendField(Blockly.Msg.CocoRobo_PRODUCT_ID);
    this.appendValueInput("product_APIKey").setCheck("String").appendField(Blockly.Msg.CocoRobo_API_KEY);
    this.setPreviousStatement(!0);
    this.setNextStatement(!0);
    this.setInputsInline(!1);
    this.setTooltip(Blockly.Msg.CocoRobo_ONENET_TOOLTIP);
  }
};
Blockly.Blocks.CocoRobo_onenet_setup = {
  init: function init() {
    this.setHelpUrl(Blockly.Msg.CONTROLS_IF_HELPURL);
    this.setColour(CategoryColors.IoT_OneNet);
    this.appendDummyInput().appendField(Blockly.Msg.CocoRobo_ONENET);
    this.appendValueInput("server").setCheck("String").appendField(Blockly.Msg.CocoRobo_SERVER);
    this.appendValueInput("device_id").setCheck("String").appendField(Blockly.Msg.CocoRobo_DEVICE_ID);
    this.appendValueInput("product_id").setCheck("String").appendField(Blockly.Msg.CocoRobo_PRODUCT_ID);
    this.appendValueInput("product_APIKey").setCheck("String").appendField(Blockly.Msg.CocoRobo_API_KEY);
    this.setPreviousStatement(!0);
    this.setNextStatement(!0);
    this.setInputsInline(!1);
    this.setTooltip(Blockly.Msg.CocoRobo_ONENET_TOOLTIP);
  }
};
Blockly.Blocks.CocoRobo_onenet_setup_wechat_app = {
  init: function init() {
    this.setHelpUrl(Blockly.Msg.CONTROLS_IF_HELPURL);
    this.setColour(CategoryColors.IoT_OneNet_WeChat);
    this.appendDummyInput().appendField(Blockly.Msg.CocoRobo_ONENET_WECHAT_APP);
    this.appendValueInput("server").setCheck("String").appendField(Blockly.Msg.CocoRobo_SERVER);
    this.appendValueInput("device_id").setCheck("String").appendField(Blockly.Msg.CocoRobo_DEVICE_ID);
    this.appendValueInput("product_id").setCheck("String").appendField(Blockly.Msg.CocoRobo_PRODUCT_ID);
    this.appendValueInput("product_APIKey").setCheck("String").appendField(Blockly.Msg.CocoRobo_API_KEY);
    this.setPreviousStatement(!0);
    this.setNextStatement(!0);
    this.setInputsInline(!1);
    this.setTooltip(Blockly.Msg.CocoRobo_ONENET_TOOLTIP);
  }
};
Blockly.Blocks.CocoRobo_onenet_recv = {
  init: function init() {
    this.jsonInit({
      message0: Blockly.Msg.CocoRobo_ONENET_RECV_MESSAGE0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_OneNet,
      inputsInline: !0,
      helpUrl: Blockly.Msg.CocoRobo_ONENET_RECV_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_ONENET_RECV_TOOLTIP,
      args0: [{
        type: "input_value",
        name: "message"
      }]
    });
    this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);
  }
};
Blockly.Blocks.CocoRobo_onenet_recv_from_wechat_app = {
  init: function init() {
    this.jsonInit({
      message0: Blockly.Msg.CocoRobo_ONENET_RECV_FROM_WECHAT_APP_MESSAGE0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_OneNet_WeChat,
      inputsInline: !0,
      helpUrl: Blockly.Msg.CocoRobo_ONENET_RECV_FROM_WECHAT_APP_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_ONENET_RECV_FROM_WECHAT_APP_TOOLTIP,
      args0: [{
        type: "input_value",
        name: "name"
      }, {
        type: "input_value",
        name: "value"
      }]
    });
    this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);
  }
};
Blockly.Blocks.CocoRobo_onenet_recv_msg = {
  init: function init() {
    this.jsonInit({
      message0: Blockly.Msg.CocoRobo_ONENET_RECV_MSG_MESSAGE0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_OneNet,
      inputsInline: !0,
      helpUrl: Blockly.Msg.CocoRobo_ONENET_RECV_MSG_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_ONENET_RECV_MSG_TOOLTIP,
      args0: [{
        type: "field_input",
        name: "message",
        text: "on"
      }]
    });
    this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);
  }
};
Blockly.Blocks.CocoRobo_onenet_pub_value = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_OneNet,
      helpUrl: Blockly.Msg.CocoRobo_ONENET_PUB_VALUE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_ONENET_PUB_VALUE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_ONENET_PUB_VALUE_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "NAME"
      }, {
        check: "Number",
        type: "input_value",
        name: "VALUE"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_onenet_pub_value_wechat_app = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_OneNet_WeChat,
      helpUrl: Blockly.Msg.CocoRobo_ONENET_PUB_VALUE2_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_ONENET_PUB_VALUE2_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_ONENET_PUB_VALUE2_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "NAME"
      }, {
        check: "Number",
        type: "input_value",
        name: "VALUE"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_onenet_pub_dict = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_OneNet,
      helpUrl: Blockly.Msg.CocoRobo_ONENET_PUB_DICT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_ONENET_PUB_DICT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_ONENET_PUB_DICT_MESSAGE0,
      args0: [{
        check: "Array",
        type: "input_value",
        name: "DICT"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_onenet_disconnect = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.IoT_OneNet,
      helpUrl: Blockly.Msg.CocoRobo_ONENET_DISCONNECT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_ONENET_DISCONNECT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_ONENET_DISCONNECT_MESSAGE0
    });
  }
};
Blockly.Blocks.list_first_index = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.List,
      helpUrl: Blockly.Msg.LIST_FIRST_INDEX_HELPURL,
      // tooltip: Blockly.Msg.LIST_FIRST_INDEX_TOOLTIP,
      message0: Blockly.Msg.LIST_FIRST_INDEX_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "elem"
      }, {
        check: "Array",
        type: "input_value",
        name: "my_list"
      }, {
        options: [[Blockly.Msg.FIRST, "first"], [Blockly.Msg.LAST, "last"]],
        type: "field_dropdown",
        name: "last_or_first"
      }]
    });
    var thisBlock = this;
    this.setTooltip(function () {
      var mode = thisBlock.getFieldValue('last_or_first');
      var TOOLTIPS = {
        'first': Blockly.Msg.LIST_FIRST_INDEX_TOOLTIP.replace('%3', Blockly.Msg.FIRST),
        'last': Blockly.Msg.LIST_FIRST_INDEX_TOOLTIP.replace('%3', Blockly.Msg.LAST)
      };
      return TOOLTIPS[mode];
    });
  }
};
Blockly.Blocks.list_item_exist = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.List,
      args0: [{
        type: "input_value",
        name: "list_name"
      }, {
        type: "input_value",
        name: "list_item"
      }],
      output: "Boolean",
      inputsInline: !0,
      helpUrl: Blockly.Msg.LIST_ITEM_EXIST_HELPURL,
      tooltip: Blockly.Msg.LIST_ITEM_EXIST_TOOLTIP,
      message0: Blockly.Msg.LIST_ITEM_EXIST_MESSAGE0
    });
  }
};
Blockly.Blocks.set_list_order_item = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.List,
      args0: [{
        type: "input_value",
        name: "list_name"
      }, {
        options: [[Blockly.Msg.CocoRobo_ORDER, "["], [Blockly.Msg.CocoRobo_REVERSE_ORDER, "[-"]],
        type: "field_dropdown",
        name: "list_order"
      }, {
        check: "Number",
        type: "input_value",
        name: "list_order_item"
      }, {
        type: "input_value",
        name: "set_value"
      }],
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.SET_LIST_ORDER_ITEM_HELPURL,
      tooltip: Blockly.Msg.SET_LIST_ORDER_ITEM_TOOLTIP,
      message0: Blockly.Msg.SET_LIST_ORDER_ITEM_MESSAGE0
    });
  }
};
Blockly.Blocks.insert_list_order_item = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.List,
      args0: [{
        type: "input_value",
        name: "list_name"
      }, {
        options: [[Blockly.Msg.CocoRobo_ORDER, "("], [Blockly.Msg.CocoRobo_REVERSE_ORDER, "(-"]],
        type: "field_dropdown",
        name: "list_order"
      }, {
        check: "Number",
        type: "input_value",
        name: "list_order_item"
      }, {
        type: "input_value",
        name: "set_value"
      }],
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.INSERT_LIST_ORDER_ITEM_HELPURL,
      tooltip: Blockly.Msg.INSERT_LIST_ORDER_ITEM_TOOLTIP,
      message0: Blockly.Msg.INSERT_LIST_ORDER_ITEM_MESSAGE0
    });
  }
};
Blockly.Blocks.list_order_item = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.List,
      args0: [{
        type: "input_value",
        name: "list_name"
      }, {
        options: [[Blockly.Msg.CocoRobo_ORDER, "["], [Blockly.Msg.CocoRobo_REVERSE_ORDER, "[-"]],
        type: "field_dropdown",
        name: "list_order"
      }, {
        check: "Number",
        type: "input_value",
        name: "list_order_item"
      }],
      output: ["Number", "String", "Boolean", "Array"],
      inputsInline: !0,
      helpUrl: Blockly.Msg.LIST_ORDER_ITEM_HELPURL,
      tooltip: Blockly.Msg.LIST_ORDER_ITEM_TOOLTIP,
      message0: Blockly.Msg.LIST_ORDER_ITEM_MESSAGE0
    });
  }
};
Blockly.Blocks.parts_of_list = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.List,
      args0: [{
        type: "input_value",
        name: "list_name"
      }, {
        options: [[Blockly.Msg.CocoRobo_ORDER, "["], [Blockly.Msg.CocoRobo_REVERSE_ORDER, "[-"]],
        type: "field_dropdown",
        name: "list_start_order"
      }, {
        check: "Number",
        type: "input_value",
        name: "start_item"
      }, {
        options: [[Blockly.Msg.CocoRobo_ORDER, ":"], [Blockly.Msg.CocoRobo_REVERSE_ORDER, ":-"]],
        type: "field_dropdown",
        name: "list_end_order"
      }, {
        check: "Number",
        type: "input_value",
        name: "end_item"
      }],
      output: null,
      inputsInline: !0,
      helpUrl: Blockly.Msg.PARTS_OF_LIST_HELPURL,
      tooltip: Blockly.Msg.PARTS_OF_LIST_TOOLTIP,
      message0: Blockly.Msg.PARTS_OF_LIST_MESSAGE0
    });
  }
};
Blockly.Blocks.list_to_tuple = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Tuple,
      args0: [{
        check: "Array",
        type: "input_value",
        name: "list_name"
      }],
      output: null,
      inputsInline: !0,
      helpUrl: Blockly.Msg.LIST_TO_TUPLE_HELPURL,
      tooltip: Blockly.Msg.LIST_TO_TUPLE_TOOLTIP,
      message0: Blockly.Msg.LIST_TO_TUPLE_MESSAGE0
    });
  }
};
Blockly.Blocks.lists_clear = {
  init: function init() {
    this.jsonInit({
      message0: Blockly.Msg.CocoRobo_lists_clear_MESSAGE0,
      args0: [{
        check: "Array",
        type: "input_value",
        name: "list_name"
      }],
      nextStatement: null,
      previousStatement: null,
      inputsInline: !0,
      colour: CategoryColors.List,
      tooltip: Blockly.Msg.CocoRobo_lists_clear_TOOLTIP,
      helpUrl: Blockly.Msg.CocoRobo_lists_clear_HELPURL
    });
  }
};
Blockly.Blocks.lists_append = {
  init: function init() {
    this.jsonInit({
      message0: Blockly.Msg.CocoRobo_lists_append_MESSAGE0,
      args0: [{
        check: "Array",
        type: "input_value",
        name: "list_name"
      }, {
        type: "input_value",
        name: "last_item",
        check: ["String", "Number"]
      }],
      nextStatement: null,
      previousStatement: null,
      inputsInline: !0,
      colour: CategoryColors.List,
      tooltip: Blockly.Msg.CocoRobo_lists_append_TOOLTIP,
      helpUrl: Blockly.Msg.CocoRobo_lists_append_HELPURL
    });
  }
};
Blockly.Blocks.lists_extend = {
  init: function init() {
    this.jsonInit({
      message0: Blockly.Msg.CocoRobo_lists_extend_MESSAGE0,
      args0: [{
        check: "Array",
        type: "input_value",
        name: "list_name"
      }, {
        type: "input_value",
        name: "extend_list",
        check: "Array"
      }],
      nextStatement: null,
      previousStatement: null,
      inputsInline: !0,
      colour: CategoryColors.List,
      tooltip: Blockly.Msg.CocoRobo_lists_extend_TOOLTIP,
      helpUrl: Blockly.Msg.CocoRobo_lists_extend_HELPURL
    });
  }
};
Blockly.Blocks.CocoRobo_return_list = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.List,
      args0: [{
        type: "input_value",
        name: "list_name"
      }, {
        type: "input_value",
        name: "list_items"
      }],
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_return_list_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_return_list_MESSAGE0,
      inputsInline: !0
    });
  }
};
Blockly.Blocks.CocoRobo_music_note = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      colour: CategoryColors.Music,
      output: "String",
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_music_note_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_music_note_MESSAGE0,
      args0: [{
        name: "gamut",
        options: [["A", "A"], ["B", "B"], ["C", "C"], ["D", "D"], ["E", "E"], ["F", "F"], ["G", "G"]],
        type: "field_dropdown"
      }, {
        check: "Number",
        type: "input_value",
        name: "num1"
      }, {
        check: "Number",
        type: "input_value",
        name: "num2"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_music_play = {
  init: function init() {
    this.jsonInit({
      inputsInline: !1,
      colour: CategoryColors.Music,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_MUSIC_PLAY_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_MUSIC_PLAY_MESSAGE0,
      args0: [{
        name: "melody",
        options: [["DADADADUM", "DADADADUM"], ["ENTERTAINER", "ENTERTAINER"], ["PRELUDE", "PRELUDE"], ["ODE", "ODE"], ["NYAN", "NYAN"], ["RINGTONE", "RINGTONE"], ["FUNK", "FUNK"], ["BLUES", "BLUES"], ["BIRTHDAY", "BIRTHDAY"], ["WEDDING", "WEDDING"], ["FUNERAL", "FUNERAL"], ["PUNCHLINE", "PUNCHLINE"], ["PYTHON", "PYTHON"], ["BADDY", "BADDY"], ["CHASE", "CHASE"], ["BA_DING", "BA_DING"], ["WAWAWAWAA", "WAWAWAWAA"], ["JUMP_UP", "JUMP_UP"], ["JUMP_DOWN", "JUMP_DOWN"], ["POWER_UP", "POWER_UP"], ["POWER_DOWN", "POWER_DOWN"], [Blockly.Msg.CocoRobo_MUSIC_GE_CHANG_ZU_GUO, "GE_CHANG_ZU_GUO"], [Blockly.Msg.CocoRobo_MUSIC_DONG_FANG_HONG, "DONG_FANG_HONG"], [Blockly.Msg.CocoRobo_MUSIC_CAI_YUN_ZHUI_YUE, "CAI_YUN_ZHUI_YUE"], [Blockly.Msg.CocoRobo_MUSIC_ZOU_JIN_XIN_SHI_DAI, "ZOU_JIN_XIN_SHI_DAI"], [Blockly.Msg.CocoRobo_MUSIC_MO_LI_HUA, "MO_LI_HUA"], [Blockly.Msg.CocoRobo_MUSIC_YI_MENG_SHAN_XIAO_DIAO, "YI_MENG_SHAN_XIAO_DIAO"]],
        type: "field_dropdown"
      }, {
        check: "Number",
        type: "input_value",
        name: "pin"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_music_play_until_end = {
  init: function init() {
    this.jsonInit({
      inputsInline: !1,
      colour: CategoryColors.Music,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_MUSIC_PLAY_UNTIL_END_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_MUSIC_PLAY_UNTIL_END_MESSAGE0,
      args0: [{
        name: "melody",
        options: [["DADADADUM", "DADADADUM"], ["ENTERTAINER", "ENTERTAINER"], ["PRELUDE", "PRELUDE"], ["ODE", "ODE"], ["NYAN", "NYAN"], ["RINGTONE", "RINGTONE"], ["FUNK", "FUNK"], ["BLUES", "BLUES"], ["BIRTHDAY", "BIRTHDAY"], ["WEDDING", "WEDDING"], ["FUNERAL", "FUNERAL"], ["PUNCHLINE", "PUNCHLINE"], ["PYTHON", "PYTHON"], ["BADDY", "BADDY"], ["CHASE", "CHASE"], ["BA_DING", "BA_DING"], ["WAWAWAWAA", "WAWAWAWAA"], ["JUMP_UP", "JUMP_UP"], ["JUMP_DOWN", "JUMP_DOWN"], ["POWER_UP", "POWER_UP"], ["POWER_DOWN", "POWER_DOWN"], [Blockly.Msg.CocoRobo_MUSIC_GE_CHANG_ZU_GUO, "GE_CHANG_ZU_GUO"], [Blockly.Msg.CocoRobo_MUSIC_DONG_FANG_HONG, "DONG_FANG_HONG"], [Blockly.Msg.CocoRobo_MUSIC_CAI_YUN_ZHUI_YUE, "CAI_YUN_ZHUI_YUE"], [Blockly.Msg.CocoRobo_MUSIC_ZOU_JIN_XIN_SHI_DAI, "ZOU_JIN_XIN_SHI_DAI"], [Blockly.Msg.CocoRobo_MUSIC_MO_LI_HUA, "MO_LI_HUA"], [Blockly.Msg.CocoRobo_MUSIC_YI_MENG_SHAN_XIAO_DIAO, "YI_MENG_SHAN_XIAO_DIAO"]],
        type: "field_dropdown"
      }, {
        check: "Number",
        type: "input_value",
        name: "pin"
      }]
    });
  }
};
Blockly.Blocks.microbit_music_play_built_in = {
  init: function init() {
    this.jsonInit({
      inputsInline: !1,
      colour: CategoryColors.Music,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.MICROBIT_MUSIC_PLAY_BUILT_IN_TOOLTIP,
      message0: Blockly.Msg.MICROBIT_MUSIC_PLAY_BUILT_IN_MESSAGE0,
      args0: [{
        name: "melody",
        options: [["DADADADUM", "DADADADUM"], ["ENTERTAINER", "ENTERTAINER"], ["PRELUDE", "PRELUDE"], ["ODE", "ODE"], ["NYAN", "NYAN"], ["RINGTONE", "RINGTONE"], ["FUNK", "FUNK"], ["BLUES", "BLUES"], ["BIRTHDAY", "BIRTHDAY"], ["WEDDING", "WEDDING"], ["FUNERAL", "FUNERAL"], ["PUNCHLINE", "PUNCHLINE"], ["PYTHON", "PYTHON"], ["BADDY", "BADDY"], ["CHASE", "CHASE"], ["BA_DING", "BA_DING"], ["WAWAWAWAA", "WAWAWAWAA"], ["JUMP_UP", "JUMP_UP"], ["JUMP_DOWN", "JUMP_DOWN"], ["POWER_UP", "POWER_UP"], ["POWER_DOWN", "POWER_DOWN"], [Blockly.Msg.CocoRobo_MUSIC_GE_CHANG_ZU_GUO, "GE_CHANG_ZU_GUO"], [Blockly.Msg.CocoRobo_MUSIC_DONG_FANG_HONG, "DONG_FANG_HONG"], [Blockly.Msg.CocoRobo_MUSIC_CAI_YUN_ZHUI_YUE, "CAI_YUN_ZHUI_YUE"], [Blockly.Msg.CocoRobo_MUSIC_ZOU_JIN_XIN_SHI_DAI, "ZOU_JIN_XIN_SHI_DAI"], [Blockly.Msg.CocoRobo_MUSIC_MO_LI_HUA, "MO_LI_HUA"], [Blockly.Msg.CocoRobo_MUSIC_YI_MENG_SHAN_XIAO_DIAO, "YI_MENG_SHAN_XIAO_DIAO"]],
        type: "field_dropdown"
      }, {
        checked: !0,
        type: "field_checkbox",
        name: "wait"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "loop"
      }, {
        check: "Number",
        type: "input_value",
        name: "pin"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_music_pin_p6 = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Music,
      helpUrl: Blockly.Msg.CocoRobo_MUSIC_PIN_P6_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_MUSIC_PIN_P6_TOOLTIP,
      message0: "%1",
      args0: [{
        options: [[Blockly.Msg.CocoRobo_MUSIC_PIN_P6, "6"], ["P0", "0"], ["P1", "1"], ["P8", "8"], ["P9", "9"], ["P13", "13"], ["P14", "14"], ["P15", "15"], ["P16", "16"], ["P19", "19"], ["P20", "20"]],
        type: "field_dropdown",
        name: "music_pin"
      }]
    });
  }
};
Blockly.Blocks.microbit_music_pitch = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Music,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.MICROBIT_MUSIC_PITCH_TOOLTIP,
      message0: Blockly.Msg.MICROBIT_MUSIC_PITCH_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "pitch"
      }, {
        type: "input_dummy"
      }, {
        check: "Number",
        type: "input_value",
        name: "duration"
      }, {
        check: "Number",
        type: "input_value",
        name: "pin"
      }]
    });
  }
};
Blockly.Blocks.microbit_music_play_list_of_notes = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Music,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.MICROBIT_MUSIC_PLAY_LIST_OF_NOTES_TOOLTIP,
      message0: Blockly.Msg.MICROBIT_MUSIC_PLAY_LIST_OF_NOTES_MESSAGE0,
      args0: [{
        check: "Array",
        type: "input_value",
        name: "notes"
      }, {
        checked: !0,
        type: "field_checkbox",
        name: "wait"
      }, {
        type: "input_dummy"
      }, {
        checked: !1,
        type: "field_checkbox",
        name: "loop"
      }, {
        check: "Number",
        type: "input_value",
        name: "pin"
      }]
    });
  }
};
Blockly.Blocks.microbit_music_reset = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Music,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.MICROBIT_MUSIC_RESET_TOOLTIP,
      message0: Blockly.Msg.MICROBIT_MUSIC_RESET_MESSAGE0
    });
  }
};
Blockly.Blocks.microbit_music_stop = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Music,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.MICROBIT_MUSIC_STOP_TOOLTIP,
      message0: Blockly.Msg.MICROBIT_MUSIC_STOP_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "pin"
      }]
    });
  }
};
Blockly.Blocks.microbit_music_set_tempo = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Music,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.MICROBIT_MUSIC_SET_TEMPO_TOOLTIP,
      message0: Blockly.Msg.MICROBIT_MUSIC_SET_TEMPO_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "ticks"
      }, {
        check: "Number",
        type: "input_value",
        name: "bpm"
      }]
    });
  }
};
Blockly.Blocks.microbit_music_set_tempo_speed = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Music,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.MICROBIT_MUSIC_SET_TEMPO_SPEED_TOOLTIP,
      message0: Blockly.Msg.MICROBIT_MUSIC_SET_TEMPO_SPEED_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "bpm"
      }]
    });
  }
};
Blockly.Blocks.microbit_music_get_tempo = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Music,
      output: "Array",
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.MICROBIT_MUSIC_GET_TEMPO_TOOLTIP,
      message0: Blockly.Msg.MICROBIT_MUSIC_GET_TEMPO_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_music_range_pitch = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Music,
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_music_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_music_range_pitch_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_music_range_pitch_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "start"
      }, {
        check: "Number",
        type: "input_value",
        name: "end"
      }, {
        check: "Number",
        type: "input_value",
        name: "step"
      }, {
        check: "Number",
        type: "input_value",
        name: "time"
      }, {
        check: "Number",
        type: "input_value",
        name: "pin"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_music_tone_tempo = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Music,
      helpUrl: Blockly.Msg.CocoRobo_MUSIC_TONE_TEMPO_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_MUSIC_TONE_TEMPO_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_MUSIC_TONE_TEMPO_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "musical_note",
        check: "String"
      }, {
        type: "input_value",
        name: "pin",
        check: "Number"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_music_tone = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Music,
      helpUrl: Blockly.Msg.CocoRobo_MUSIC_TONE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_MUSIC_TONE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_MUSIC_TONE_MESSAGE0,
      args0: [{
        name: "music_tone",
        options: music_tone_freq,
        type: "field_dropdown"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_music_musical_note = {
  init: function init() {
    this.jsonInit({
      message0: Blockly.Msg.CocoRobo_MUSIC_MUSICAL_NOTE_MESSAGE0,
      args0: [{
        name: "musical_note",
        options: musical_note,
        type: "field_dropdown"
      }, {
        name: "music_tick",
        options: music_tick,
        type: "field_dropdown"
      }],
      inputsInline: !0,
      output: "String",
      colour: CategoryColors.Music,
      helpUrl: Blockly.Msg.CocoRobo_MUSIC_MUSICAL_NOTE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_MUSIC_MUSICAL_NOTE_TOOLTIP
    });
  }
};
Blockly.Blocks.CocoRobo_music_tick = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Music,
      helpUrl: Blockly.Msg.CocoRobo_MUSIC_TICK_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_MUSIC_TICK_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_MUSIC_TICK_MESSAGE0,
      args0: [{
        name: "music_tick",
        options: music_tick,
        type: "field_dropdown"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_neopixel_init = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Neopixel,
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_neopixel_init_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_neopixel_init_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_neopixel_init_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "neopixel_name",
        text: "my_rgb"
      }, {
        check: "Number",
        type: "input_value",
        name: "analogP_IO"
      }, {
        check: "Number",
        type: "input_value",
        name: "n"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_neopixel_single = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Neopixel,
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_neopixel_init_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_neopixel_single_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_neopixel_single_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "neopixel_name",
        text: "my_rgb"
      }, {
        check: "Number",
        type: "input_value",
        name: "order"
      }, {
        check: "Number",
        type: "input_value",
        name: "r"
      }, {
        check: "Number",
        type: "input_value",
        name: "g"
      }, {
        check: "Number",
        type: "input_value",
        name: "b"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_neopixel_single_gui = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Neopixel,
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_neopixel_init_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_neopixel_single_gui_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_neopixel_single_gui_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "neopixel_name",
        text: "my_rgb"
      }, {
        check: "Number",
        type: "input_value",
        name: "order"
      }, {
        type: "field_colour",
        name: "COLOUR",
        colour: "#ff0000"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_neopixel_show = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Neopixel,
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_neopixel_init_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_neopixel_show_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_neopixel_show_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "neopixel_name",
        text: "my_rgb"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_neopixel_off = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Neopixel,
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_neopixel_init_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_neopixel_off_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_neopixel_off_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "neopixel_name",
        text: "my_rgb"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_neopixel_all = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Neopixel,
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_neopixel_init_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_neopixel_all_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_neopixel_all_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "neopixel_name",
        text: "my_rgb"
      }, {
        check: "Number",
        type: "input_value",
        name: "r"
      }, {
        check: "Number",
        type: "input_value",
        name: "g"
      }, {
        check: "Number",
        type: "input_value",
        name: "b"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_neopixel_all_gui = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Neopixel,
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_neopixel_init_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_neopixel_all_gui_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_neopixel_all_gui_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "neopixel_name",
        text: "my_rgb"
      }, {
        type: "field_colour",
        name: "COLOUR",
        colour: "#ff0000"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_neopixel_rainbow = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Neopixel,
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_NEOPIXEL_RAINBOW_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_NEOPIXEL_RAINBOW_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_NEOPIXEL_RAINBOW_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "neopixel_name",
        text: "my_rgb"
      }, {
        check: "Number",
        type: "input_value",
        name: "n"
      }, {
        check: "Number",
        type: "input_value",
        name: "bright"
      }, {
        check: "Number",
        type: "input_value",
        name: "offset"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_neopixel_brightness = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Neopixel,
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRobo_NEOPIXEL_BRIGHTNESS_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_NEOPIXEL_BRIGHTNESS_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_NEOPIXEL_BRIGHTNESS_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "neopixel_name",
        text: "my_rgb"
      }, {
        check: "Number",
        type: "input_value",
        name: "bright"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_display_FrameBuffer = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Show,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_display_FrameBuffer_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_display_FrameBuffer_MESSAGE0,
      args0: [{
        check: ["Array"],
        type: "input_value",
        name: "bmp"
      }, {
        check: "Number",
        type: "input_value",
        name: "w"
      }, {
        check: "Number",
        type: "input_value",
        name: "h"
      }, {
        name: "scan_mode",
        options: [[Blockly.Msg.CocoRobo_horizontal, "HLSB"], [Blockly.Msg.CocoRobo_vertical, "VLSB"]],
        type: "field_dropdown"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_display_blit = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Show,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_display_blit_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_display_blit_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "x"
      }, {
        check: "Number",
        type: "input_value",
        name: "y"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_front_reverse = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Show,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_front_reverse_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_front_reverse_MESSAGE0,
      args0: [{
        name: "front_reverse",
        options: [[Blockly.Msg.CocoRobo_front, "0"], [Blockly.Msg.CocoRobo_reverse, "1"]],
        type: "field_dropdown"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_images_append = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Show,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_images_append_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_images_append_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "num"
      }, {
        check: "Number",
        type: "input_value",
        name: "period"
      }, {
        check: "Number",
        type: "input_value",
        name: "Length"
      }, {
        check: "Number",
        type: "input_value",
        name: "Width"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_display_Show = {
  init: function init() {
    this.jsonInit({
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Show,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_display_Show_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_display_Show_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_display_DispChar = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Show,
      helpUrl: Blockly.Msg.CocoRobo_display_DispChar_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_display_DispChar_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_display_DispChar_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "x"
      }, {
        check: "Number",
        type: "input_value",
        name: "y"
      }, {
        check: "String",
        type: "input_value",
        name: "message"
      }, {
        options: [[Blockly.Msg.CocoRobo_DISPCHAR_MODE_1, "1"], [Blockly.Msg.CocoRobo_DISPCHAR_MODE_2, "2"], [Blockly.Msg.CocoRobo_DISPCHAR_MODE_3, "3"], ["XOR", "4"]],
        type: "field_dropdown",
        name: "TEXTMODE"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_display_DispChar_5lines = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Show,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_display_DispChar_5lines_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_display_DispChar_5lines_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "DispChar_5lines"
      }, {
        check: "String",
        type: "input_value",
        name: "message"
      }, {
        options: [[Blockly.Msg.CocoRobo_DISPCHAR_MODE_1, "1"], [Blockly.Msg.CocoRobo_DISPCHAR_MODE_2, "2"], [Blockly.Msg.CocoRobo_DISPCHAR_MODE_3, "3"], ["XOR", "4"]],
        type: "field_dropdown",
        name: "TEXTMODE"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_clear_dispchar_5lines = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Show,
      helpUrl: Blockly.Msg.CocoRobo_CLEAR_DISPCHAR_5LINES_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_CLEAR_DISPCHAR_5LINES_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_CLEAR_DISPCHAR_5LINES_MESSAGE0,
      args0: [{
        name: "DispChar_5lines",
        type: "input_value"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_4_lines = {
  init: function init() {
    this.jsonInit({
      message0: Blockly.Msg.CocoRobo_4_LINES_MESSAGE0,
      args0: [{
        name: "CocoRobo_4_lines",
        options: [["1", "0"], ["2", "16"], ["3", "32"], ["4", "48"]],
        type: "field_dropdown"
      }],
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Show,
      helpUrl: Blockly.Msg.CocoRobo_4_LINES_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_4_LINES_TOOLTIP
    });
  }
};
Blockly.Blocks.CocoRobo_display_fill = {
  init: function init() {
    this.jsonInit({
      message0: "%1 %2 " + Blockly.Msg.CocoRobo_display_fill_MESSAGE0,
      args0: [{
        type: "field_image",
        src: "blockly/media/screen_init_header.png",
        width: "42",
        height: "42",
        alt: "*",
        flipRtl: false
      }, {
        type: "input_dummy"
      }],
      colour: CategoryColors.Show,
      // args0: [{
      //     name: "display_fill",
      //     options: [[Blockly.Msg.CocoRobo_display_fill_O, "fill(0)"]], //[Blockly.Msg.CocoRobo_display_fill_0, "fill(0)"], [Blockly.Msg.CocoRobo_display_fill_1, "fill(1)"], [Blockly.Msg.CocoRobo_display_invert_0, "invert(0)"], [Blockly.Msg.CocoRobo_display_invert_1, "invert(1)"]
      //     type: "field_dropdown"
      // }],
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_display_fill_TOOLTIP,
      previousStatement: null,
      nextStatement: null // message0: 

    });
  }
};
Blockly.Blocks.CocoRobo_lcd_pixel_option = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Show,
      output: "Number",
      helpUrl: "",
      tooltip: "",
      message0: "%1",
      args0: [{
        options: [[Blockly.Msg.CocoRobo_display_pixel_1, "1"], [Blockly.Msg.CocoRobo_display_pixel_0, "0"]],
        type: "field_dropdown",
        name: "VALUE"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_display_pixel = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Show,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_display_pixel_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_display_pixel_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "x"
      }, {
        check: "Number",
        type: "input_value",
        name: "y"
      }, {
        check: "Number",
        type: "input_value",
        name: "display_pixel"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_ProgressBar = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Show,
      args0: [{
        type: "input_dummy"
      }, {
        name: "x",
        type: "input_value",
        check: "Number"
      }, {
        name: "y",
        type: "input_value",
        check: "Number"
      }, {
        name: "width",
        type: "input_value",
        check: "Number"
      }, {
        name: "height",
        type: "input_value",
        check: "Number"
      }, {
        name: "progress",
        type: "input_value",
        check: "Number"
      }],
      inputsInline: !0,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_ProgressBar_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_ProgressBar_MESSAGE0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_stripBar = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Show,
      args0: [{
        name: "dir_h_v",
        options: [[Blockly.Msg.CocoRobo_vertical, "0"], [Blockly.Msg.CocoRobo_horizontal, "1"]],
        type: "field_dropdown"
      }, {
        name: "x",
        type: "input_value",
        check: "Number"
      }, {
        name: "y",
        type: "input_value",
        check: "Number"
      }, {
        name: "width",
        type: "input_value",
        check: "Number"
      }, {
        name: "height",
        type: "input_value",
        check: "Number"
      }, {
        name: "progress",
        type: "input_value",
        check: "Number"
      }],
      inputsInline: !0,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_stripBar_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_stripBar_MESSAGE0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_display_hvline = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Show,
      args0: [{
        name: "state",
        options: [[Blockly.Msg.CocoRobo_DISPLAY_MODE_1, "1"], [Blockly.Msg.CocoRobo_DISPLAY_MODE_0, "0"]],
        type: "field_dropdown"
      }, {
        name: "dir_h_v",
        options: [[Blockly.Msg.CocoRobo_vertical, "0"], [Blockly.Msg.CocoRobo_horizontal, "1"]],
        type: "field_dropdown"
      }, {
        type: "input_dummy"
      }, {
        name: "x",
        type: "input_value",
        check: "Number"
      }, {
        name: "y",
        type: "input_value",
        check: "Number"
      }, {
        name: "length",
        type: "input_value",
        check: "Number"
      }],
      inputsInline: !0,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_DISPLAY_HVLINE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_DISPLAY_HVLINE_MESSAGE0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_display_hline = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Show,
      args0: [{
        name: "state",
        options: [[Blockly.Msg.CocoRobo_display_hline_1, "1"], [Blockly.Msg.CocoRobo_display_hline_0, "0"]],
        type: "field_dropdown"
      }, {
        type: "input_dummy"
      }, {
        name: "x",
        type: "input_value",
        check: "Number"
      }, {
        name: "y",
        type: "input_value",
        check: "Number"
      }, {
        name: "length",
        type: "input_value",
        check: "Number"
      }],
      inputsInline: !0,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_display_hline_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_display_hline_MESSAGE0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_display_vline = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Show,
      args0: [{
        name: "state",
        options: [[Blockly.Msg.CocoRobo_display_hline_1, "1"], [Blockly.Msg.CocoRobo_display_hline_0, "0"]],
        type: "field_dropdown"
      }, {
        type: "input_dummy"
      }, {
        name: "x",
        type: "input_value",
        check: "Number"
      }, {
        name: "y",
        type: "input_value",
        check: "Number"
      }, {
        name: "length",
        type: "input_value",
        check: "Number"
      }],
      inputsInline: !0,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_display_vline_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_display_vline_MESSAGE0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_display_line = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Show,
      args0: [{
        name: "state",
        options: [[Blockly.Msg.CocoRobo_display_hline_1, "1"], [Blockly.Msg.CocoRobo_display_hline_0, "0"]],
        type: "field_dropdown"
      }, {
        type: "input_dummy"
      }, {
        name: "x1",
        type: "input_value",
        check: "Number"
      }, {
        name: "y1",
        type: "input_value",
        check: "Number"
      }, {
        name: "x2",
        type: "input_value",
        check: "Number"
      }, {
        name: "y2",
        type: "input_value",
        check: "Number"
      }],
      inputsInline: !0,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_display_line_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_display_line_MESSAGE0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_display_shape_rect = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Show,
      args0: [{
        name: "state",
        options: [[Blockly.Msg.CocoRobo_DISPLAY_MODE_1, "1"], [Blockly.Msg.CocoRobo_DISPLAY_MODE_0, "0"]],
        type: "field_dropdown"
      }, {
        name: "shape",
        options: [[Blockly.Msg.CocoRobo_DISPLAY_HOLLOW, "rect"], [Blockly.Msg.CocoRobo_DISPLAY_SOLID, "fill_rect"]],
        type: "field_dropdown"
      }, {
        type: "input_dummy"
      }, {
        name: "x",
        type: "input_value",
        check: "Number"
      }, {
        name: "y",
        type: "input_value",
        check: "Number"
      }, {
        name: "w",
        type: "input_value",
        check: "Number"
      }, {
        name: "h",
        type: "input_value",
        check: "Number"
      }],
      inputsInline: !0,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_DISPLAY_SHAPE_RECT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_DISPLAY_SHAPE_RECT_MESSAGE0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_display_rect = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Show,
      args0: [{
        name: "state",
        options: [[Blockly.Msg.CocoRobo_display_hline_1, "1"], [Blockly.Msg.CocoRobo_display_hline_0, "0"]],
        type: "field_dropdown"
      }, {
        type: "input_dummy"
      }, {
        name: "x",
        type: "input_value",
        check: "Number"
      }, {
        name: "y",
        type: "input_value",
        check: "Number"
      }, {
        name: "w",
        type: "input_value",
        check: "Number"
      }, {
        name: "h",
        type: "input_value",
        check: "Number"
      }],
      inputsInline: !0,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_display_rect_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_display_rect_MESSAGE0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_display_RoundRect = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Show,
      args0: [{
        name: "state",
        options: [[Blockly.Msg.CocoRobo_display_hline_1, "1"], [Blockly.Msg.CocoRobo_display_hline_0, "0"]],
        type: "field_dropdown"
      }, {
        type: "input_dummy"
      }, {
        name: "x",
        type: "input_value",
        check: "Number"
      }, {
        name: "y",
        type: "input_value",
        check: "Number"
      }, {
        name: "w",
        type: "input_value",
        check: "Number"
      }, {
        name: "h",
        type: "input_value",
        check: "Number"
      }, {
        name: "r",
        type: "input_value",
        check: "Number"
      }],
      inputsInline: !0,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_display_RoundRect_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_display_RoundRect_MESSAGE0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_display_fill_rect = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Show,
      args0: [{
        name: "state",
        options: [[Blockly.Msg.CocoRobo_display_hline_1, "1"], [Blockly.Msg.CocoRobo_display_hline_0, "0"]],
        type: "field_dropdown"
      }, {
        type: "input_dummy"
      }, {
        name: "x",
        type: "input_value",
        check: "Number"
      }, {
        name: "y",
        type: "input_value",
        check: "Number"
      }, {
        name: "w",
        type: "input_value",
        check: "Number"
      }, {
        name: "h",
        type: "input_value",
        check: "Number"
      }],
      inputsInline: !0,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_display_fill_rect_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_display_fill_rect_MESSAGE0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_display_shape_circle = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Show,
      args0: [{
        name: "state",
        options: [[Blockly.Msg.CocoRobo_DISPLAY_MODE_1, "1"], [Blockly.Msg.CocoRobo_DISPLAY_MODE_0, "0"]],
        type: "field_dropdown"
      }, {
        name: "shape",
        options: [[Blockly.Msg.CocoRobo_DISPLAY_HOLLOW, "circle"], [Blockly.Msg.CocoRobo_DISPLAY_SOLID, "fill_circle"]],
        type: "field_dropdown"
      }, {
        type: "input_dummy"
      }, {
        name: "x",
        type: "input_value",
        check: "Number"
      }, {
        name: "y",
        type: "input_value",
        check: "Number"
      }, {
        name: "radius",
        type: "input_value",
        check: "Number"
      }],
      inputsInline: !0,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_DISPLAY_SHAPE_CIRCLE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_DISPLAY_SHAPE_CIRCLE_MESSAGE0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_display_fill_circle = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Show,
      args0: [{
        name: "state",
        options: [[Blockly.Msg.CocoRobo_display_hline_1, "1"], [Blockly.Msg.CocoRobo_display_hline_0, "0"]],
        type: "field_dropdown"
      }, {
        type: "input_dummy"
      }, {
        name: "x",
        type: "input_value",
        check: "Number"
      }, {
        name: "y",
        type: "input_value",
        check: "Number"
      }, {
        name: "radius",
        type: "input_value",
        check: "Number"
      }],
      inputsInline: !0,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_display_fill_circle_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_display_fill_circle_MESSAGE0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_display_circle = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Show,
      args0: [{
        name: "state",
        options: [[Blockly.Msg.CocoRobo_display_hline_1, "1"], [Blockly.Msg.CocoRobo_display_hline_0, "0"]],
        type: "field_dropdown"
      }, {
        type: "input_dummy"
      }, {
        name: "x",
        type: "input_value",
        check: "Number"
      }, {
        name: "y",
        type: "input_value",
        check: "Number"
      }, {
        name: "radius",
        type: "input_value",
        check: "Number"
      }],
      inputsInline: !0,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_display_circle_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_display_circle_MESSAGE0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_display_shape_triangle = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Show,
      args0: [{
        name: "state",
        options: [[Blockly.Msg.CocoRobo_DISPLAY_MODE_1, "1"], [Blockly.Msg.CocoRobo_DISPLAY_MODE_0, "0"]],
        type: "field_dropdown"
      }, {
        name: "shape",
        options: [[Blockly.Msg.CocoRobo_DISPLAY_HOLLOW, "triangle"], [Blockly.Msg.CocoRobo_DISPLAY_SOLID, "fill_triangle"]],
        type: "field_dropdown"
      }, {
        type: "input_dummy"
      }, {
        name: "x",
        type: "input_value",
        check: "Number"
      }, {
        name: "y",
        type: "input_value",
        check: "Number"
      }, {
        name: "x2",
        type: "input_value",
        check: "Number"
      }, {
        name: "y2",
        type: "input_value",
        check: "Number"
      }, {
        name: "x3",
        type: "input_value",
        check: "Number"
      }, {
        name: "y3",
        type: "input_value",
        check: "Number"
      }],
      inputsInline: !0,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_DISPLAY_SHAPE_TRIANGLE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_DISPLAY_SHAPE_TRIANGLE_MESSAGE0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_display_triangle = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Show,
      args0: [{
        name: "state",
        options: [[Blockly.Msg.CocoRobo_display_hline_1, "1"], [Blockly.Msg.CocoRobo_display_hline_0, "0"]],
        type: "field_dropdown"
      }, {
        type: "input_dummy"
      }, {
        name: "x",
        type: "input_value",
        check: "Number"
      }, {
        name: "y",
        type: "input_value",
        check: "Number"
      }, {
        name: "x2",
        type: "input_value",
        check: "Number"
      }, {
        name: "y2",
        type: "input_value",
        check: "Number"
      }, {
        name: "x3",
        type: "input_value",
        check: "Number"
      }, {
        name: "y3",
        type: "input_value",
        check: "Number"
      }],
      inputsInline: !0,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_display_triangle_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_display_triangle_MESSAGE0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_display_fill_triangle = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Show,
      args0: [{
        name: "state",
        options: [[Blockly.Msg.CocoRobo_display_hline_1, "1"], [Blockly.Msg.CocoRobo_display_hline_0, "0"]],
        type: "field_dropdown"
      }, {
        type: "input_dummy"
      }, {
        name: "x",
        type: "input_value",
        check: "Number"
      }, {
        name: "y",
        type: "input_value",
        check: "Number"
      }, {
        name: "x2",
        type: "input_value",
        check: "Number"
      }, {
        name: "y2",
        type: "input_value",
        check: "Number"
      }, {
        name: "x3",
        type: "input_value",
        check: "Number"
      }, {
        name: "y3",
        type: "input_value",
        check: "Number"
      }],
      inputsInline: !0,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_display_fill_triangle_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_display_fill_triangle_MESSAGE0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_display_Bitmap = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Show,
      args0: [{
        name: "state",
        options: [[Blockly.Msg.CocoRobo_display_hline_1, "1"], [Blockly.Msg.CocoRobo_display_hline_0, "0"]],
        type: "field_dropdown"
      }, {
        name: "x",
        type: "input_value",
        check: "Number"
      }, {
        name: "y",
        type: "input_value",
        check: "Number"
      }, {
        name: "w",
        type: "input_value",
        check: "Number"
      }, {
        name: "h",
        type: "input_value",
        check: "Number"
      }, {
        check: ["String", "Array"],
        type: "input_value",
        name: "Bitmap"
      }],
      inputsInline: !0,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_display_Bitmap_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_display_Bitmap_MESSAGE0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_get_pbm_data = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Show,
      args0: [{
        check: "String",
        type: "input_value",
        name: "file_path"
      }, {
        name: "select",
        check: "String",
        type: "field_dropdown",
        options: [[Blockly.Msg.CocoRobo_DISPCHAR_MODE_1, "0"], [Blockly.Msg.CocoRobo_DISPCHAR_MODE_2, "1"]]
      }],
      output: "Array",
      helpUrl: Blockly.Msg.CocoRobo_GET_PBM_DATA_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_GET_PBM_DATA_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_GET_PBM_DATA_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_get_pbm_data_custom = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Show,
      args0: [{
        check: "String",
        type: "input_value",
        name: "file_path"
      }, {
        name: "select",
        check: "String",
        type: "field_dropdown",
        options: [[Blockly.Msg.CocoRobo_DISPCHAR_MODE_1, "0"], [Blockly.Msg.CocoRobo_DISPCHAR_MODE_2, "1"]]
      }],
      output: "Array",
      helpUrl: Blockly.Msg.CocoRobo_GET_PBM_DATA_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_GET_PBM_DATA_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_GET_PBM_DATA_CUSTOM_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_display_pbm_data = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Show,
      args0: [{
        name: "x",
        type: "input_value",
        check: "Number"
      }, {
        name: "y",
        type: "input_value",
        check: "Number"
      }, {
        check: "Array",
        type: "input_value",
        name: "pbm_data"
      }],
      inputsInline: !0,
      helpUrl: Blockly.Msg.CocoRobo_DISPLAY_PBM_DATA_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_DISPLAY_PBM_DATA_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_DISPLAY_PBM_DATA_MESSAGE0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_bitmap_from_file = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Show,
      args0: [{
        name: "x",
        type: "input_value",
        check: "Number"
      }, {
        name: "y",
        type: "input_value",
        check: "Number"
      }, {
        name: "w",
        type: "input_value",
        check: "Number"
      }, {
        name: "h",
        type: "input_value",
        check: "Number"
      }, {
        check: "Array",
        type: "input_value",
        name: "pbm_data"
      }],
      inputsInline: !0,
      helpUrl: Blockly.Msg.CocoRobo_BITMAP_FROM_FILE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BITMAP_FROM_FILE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BITMAP_FROM_FILE_MESSAGE0,
      nextStatement: null,
      previousStatement: null
    });
  }
};
Blockly.Blocks.CocoRobo_pbm_image = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Show,
      args0: [{
        type: "field_image",
        name: "file_image",
        src: "/static/face/1.png",
        width: 128,
        height: 64,
        alt: "*"
      }, {
        name: "path",
        options: [[Blockly.Msg.CocoRobo_FACE_1, "face/1.pbm"], [Blockly.Msg.CocoRobo_FACE_2, "face/2.pbm"], [Blockly.Msg.CocoRobo_FACE_3, "face/3.pbm"], [Blockly.Msg.CocoRobo_FACE_4, "face/4.pbm"], [Blockly.Msg.CocoRobo_FACE_5, "face/5.pbm"], [Blockly.Msg.CocoRobo_FACE_6, "face/6.pbm"], [Blockly.Msg.CocoRobo_FACE_7, "face/7.pbm"], [Blockly.Msg.CocoRobo_FACE_8, "face/8.pbm"], [Blockly.Msg.CocoRobo_FACE_9, "face/9.pbm"], [Blockly.Msg.CocoRobo_FACE_10, "face/10.pbm"], [Blockly.Msg.CocoRobo_FACE_11, "face/11.pbm"], [Blockly.Msg.CocoRobo_FACE_12, "face/12.pbm"], [Blockly.Msg.CocoRobo_FACE_ROCK, "face/rock.pbm"], [Blockly.Msg.CocoRobo_FACE_ROCK_S, "face/rock_s.pbm"], [Blockly.Msg.CocoRobo_FACE_PAPER, "face/paper.pbm"], [Blockly.Msg.CocoRobo_FACE_PAPER_S, "face/paper_s.pbm"], [Blockly.Msg.CocoRobo_FACE_SCISSORS, "face/scissors.pbm"], [Blockly.Msg.CocoRobo_FACE_SCISSORS_S, "face/scissors_s.pbm"], ["Expressions/Big smile.pbm", "face/Expressions/Big smile.pbm"], ["Expressions/Heart large.pbm", "face/Expressions/Heart large.pbm"], ["Expressions/Heart small.pbm", "face/Expressions/Heart small.pbm"], ["Expressions/Mouth 1 open.pbm", "face/Expressions/Mouth 1 open.pbm"], ["Expressions/Mouth 1 shut.pbm", "face/Expressions/Mouth 1 shut.pbm"], ["Expressions/Mouth 2 open.pbm", "face/Expressions/Mouth 2 open.pbm"], ["Expressions/Mouth 2 shut.pbm", "face/Expressions/Mouth 2 shut.pbm"], ["Expressions/Sad.pbm", "face/Expressions/Sad.pbm"], ["Expressions/Sick.pbm", "face/Expressions/Sick.pbm"], ["Expressions/Smile.pbm", "face/Expressions/Smile.pbm"], ["Expressions/Swearing.pbm", "face/Expressions/Swearing.pbm"], ["Expressions/Talking.pbm", "face/Expressions/Talking.pbm"], ["Expressions/Wink.pbm", "face/Expressions/Wink.pbm"], ["Expressions/ZZZ.pbm", "face/Expressions/ZZZ.pbm"], ["Eyes/Angry.pbm", "face/Eyes/Angry.pbm"], ["Eyes/Awake.pbm", "face/Eyes/Awake.pbm"], ["Eyes/Black eye.pbm", "face/Eyes/Black eye.pbm"], ["Eyes/Bottom left.pbm", "face/Eyes/Bottom left.pbm"], ["Eyes/Bottom right.pbm", "face/Eyes/Bottom right.pbm"], ["Eyes/Crazy 1.pbm", "face/Eyes/Crazy 1.pbm"], ["Eyes/Crazy 2.pbm", "face/Eyes/Crazy 2.pbm"], ["Eyes/Disappointed.pbm", "face/Eyes/Disappointed.pbm"], ["Eyes/Dizzy.pbm", "face/Eyes/Dizzy.pbm"], ["Eyes/Down.pbm", "face/Eyes/Down.pbm"], ["Eyes/Evil.pbm", "face/Eyes/Evil.pbm"], ["Eyes/Hurt.pbm", "face/Eyes/Hurt.pbm"], ["Eyes/Knocked out.pbm", "face/Eyes/Knocked out.pbm"], ["Eyes/Love.pbm", "face/Eyes/Love.pbm"], ["Eyes/Middle left.pbm", "face/Eyes/Middle left.pbm"], ["Eyes/Middle right.pbm", "face/Eyes/Middle right.pbm"], ["Eyes/Neutral.pbm", "face/Eyes/Neutral.pbm"], ["Eyes/Nuclear.pbm", "face/Eyes/Nuclear.pbm"], ["Eyes/Pinch left.pbm", "face/Eyes/Pinch left.pbm"], ["Eyes/Pinch middle.pbm", "face/Eyes/Pinch middle.pbm"], ["Eyes/Pinch right.pbm", "face/Eyes/Pinch right.pbm"], ["Eyes/Tear.pbm", "face/Eyes/Tear.pbm"], ["Eyes/Tired left.pbm", "face/Eyes/Tired left.pbm"], ["Eyes/Tired middle.pbm", "face/Eyes/Tired middle.pbm"], ["Eyes/Tired right.pbm", "face/Eyes/Tired right.pbm"], ["Eyes/Toxic.pbm", "face/Eyes/Toxic.pbm"], ["Eyes/Up.pbm", "face/Eyes/Up.pbm"], ["Eyes/Winking.pbm", "face/Eyes/Winking.pbm"], ["Information/Accept.pbm", "face/Information/Accept.pbm"], ["Information/Backward.pbm", "face/Information/Backward.pbm"], ["Information/Decline.pbm", "face/Information/Decline.pbm"], ["Information/Forward.pbm", "face/Information/Forward.pbm"], ["Information/Left.pbm", "face/Information/Left.pbm"], ["Information/No go.pbm", "face/Information/No go.pbm"], ["Information/Question mark.pbm", "face/Information/Question mark.pbm"], ["Information/Right.pbm", "face/Information/Right.pbm"], ["Information/Stop 1.pbm", "face/Information/Stop 1.pbm"], ["Information/Stop 2.pbm", "face/Information/Stop 2.pbm"], ["Information/Thumbs down.pbm", "face/Information/Thumbs down.pbm"], ["Information/Thumbs up.pbm", "face/Information/Thumbs up.pbm"], ["Information/Warning.pbm", "face/Information/Warning.pbm"], ["Objects/Bomb.pbm", "face/Objects/Bomb.pbm"], ["Objects/Boom.pbm", "face/Objects/Boom.pbm"], ["Objects/Fire.pbm", "face/Objects/Fire.pbm"], ["Objects/Flowers.pbm", "face/Objects/Flowers.pbm"], ["Objects/Forest.pbm", "face/Objects/Forest.pbm"], ["Objects/Light off.pbm", "face/Objects/Light off.pbm"], ["Objects/Light on.pbm", "face/Objects/Light on.pbm"], ["Objects/Lightning.pbm", "face/Objects/Lightning.pbm"], ["Objects/Night.pbm", "face/Objects/Night.pbm"], ["Objects/Pirate.pbm", "face/Objects/Pirate.pbm"], ["Objects/Snow.pbm", "face/Objects/Snow.pbm"], ["Objects/Target.pbm", "face/Objects/Target.pbm"], ["Progress/Bar 0.pbm", "face/Progress/Bar 0.pbm"], ["Progress/Bar 1.pbm", "face/Progress/Bar 1.pbm"], ["Progress/Bar 2.pbm", "face/Progress/Bar 2.pbm"], ["Progress/Bar 3.pbm", "face/Progress/Bar 3.pbm"], ["Progress/Bar 4.pbm", "face/Progress/Bar 4.pbm"], ["Progress/Dial 0.pbm", "face/Progress/Dial 0.pbm"], ["Progress/Dial 1.pbm", "face/Progress/Dial 1.pbm"], ["Progress/Dial 2.pbm", "face/Progress/Dial 2.pbm"], ["Progress/Dial 3.pbm", "face/Progress/Dial 3.pbm"], ["Progress/Dial 4.pbm", "face/Progress/Dial 4.pbm"], ["Progress/Dots 0.pbm", "face/Progress/Dots 0.pbm"], ["Progress/Dots 1.pbm", "face/Progress/Dots 1.pbm"], ["Progress/Dots 2.pbm", "face/Progress/Dots 2.pbm"], ["Progress/Dots 3.pbm", "face/Progress/Dots 3.pbm"], ["Progress/Hourglass 0.pbm", "face/Progress/Hourglass 0.pbm"], ["Progress/Hourglass 1.pbm", "face/Progress/Hourglass 1.pbm"], ["Progress/Hourglass 2.pbm", "face/Progress/Hourglass 2.pbm"], ["Progress/Timer 0.pbm", "face/Progress/Timer 0.pbm"], ["Progress/Timer 1.pbm", "face/Progress/Timer 1.pbm"], ["Progress/Timer 2.pbm", "face/Progress/Timer 2.pbm"], ["Progress/Timer 3.pbm", "face/Progress/Timer 3.pbm"], ["Progress/Timer 4.pbm", "face/Progress/Timer 4.pbm"], ["Progress/Water level 0.pbm", "face/Progress/Water level 0.pbm"], ["Progress/Water level 1.pbm", "face/Progress/Water level 1.pbm"], ["Progress/Water level 2.pbm", "face/Progress/Water level 2.pbm"], ["Progress/Water level 3.pbm", "face/Progress/Water level 3.pbm"], ["System/Accept_1.pbm", "face/System/Accept_1.pbm"], ["System/Accept_2.pbm", "face/System/Accept_2.pbm"], ["System/Alert.pbm", "face/System/Alert.pbm"], ["System/Box.pbm", "face/System/Box.pbm"], ["System/Busy_0.pbm", "face/System/Busy_0.pbm"], ["System/Busy_1.pbm", "face/System/Busy_1.pbm"], ["System/Decline_1.pbm", "face/System/Decline_1.pbm"], ["System/Decline_2.pbm", "face/System/Decline_2.pbm"], ["System/Dot_empty.pbm", "face/System/Dot_empty.pbm"], ["System/Dot_full.pbm", "face/System/Dot_full.pbm"], ["System/Play.pbm", "face/System/Play.pbm"], ["System/Slider_0.pbm", "face/System/Slider_0.pbm"], ["System/Slider_1.pbm", "face/System/Slider_1.pbm"], ["System/Slider_2.pbm", "face/System/Slider_2.pbm"], ["System/Slider_3.pbm", "face/System/Slider_3.pbm"], ["System/Slider_4.pbm", "face/System/Slider_4.pbm"], ["System/Slider_5.pbm", "face/System/Slider_5.pbm"], ["System/Slider_6.pbm", "face/System/Slider_6.pbm"], ["System/Slider_7.pbm", "face/System/Slider_7.pbm"], ["System/Slider_8.pbm", "face/System/Slider_8.pbm"]],
        type: "field_dropdown"
      }, {
        type: "field_label",
        name: "size_image",
        text: "64 * 64"
      }],
      output: "String",
      helpUrl: "",
      tooltip: "",
      message0: "%1 %2 %3"
    });
  }
};
Blockly.Blocks.CocoRobo_font = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Show,
      args0: [{
        name: "font",
        options: [[Blockly.Msg.CocoRobo_FONT_DIGIFACE_11, "font.digiface_11"], [Blockly.Msg.CocoRobo_FONT_DIGIFACE_16, "font.digiface_16"], [Blockly.Msg.CocoRobo_FONT_DIGIFACE_21, "font.digiface_21"], [Blockly.Msg.CocoRobo_FONT_DIGIFACE_30, "font.digiface_30"], [Blockly.Msg.CocoRobo_FONT_DIGIFACE_44, "font.digiface_44"], [Blockly.Msg.CocoRobo_FONT_DIGIFACE_IT_30, "font.digiface_it_30"], [Blockly.Msg.CocoRobo_FONT_DIGIFACE_IT_42, "font.digiface_it_42"], [Blockly.Msg.CocoRobo_FONT_DVSM_12, "font.dvsm_12"], [Blockly.Msg.CocoRobo_FONT_DVSM_16, "font.dvsm_16"], [Blockly.Msg.CocoRobo_FONT_DVSM_21, "font.dvsm_21"], [Blockly.Msg.CocoRobo_FONT_DVSMB_12, "font.dvsmb_12"], [Blockly.Msg.CocoRobo_FONT_DVSMB_16, "font.dvsmb_16"], [Blockly.Msg.CocoRobo_FONT_DVSMB_21, "font.dvsmb_21"]],
        type: "field_dropdown"
      }],
      output: "String",
      helpUrl: "",
      tooltip: "",
      message0: "%1"
    });
  }
};
Blockly.Blocks.CocoRobo_display_font = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Show,
      helpUrl: Blockly.Msg.CocoRobo_DISPLAY_FONT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_DISPLAY_FONT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_DISPLAY_FONT_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "x"
      }, {
        check: "Number",
        type: "input_value",
        name: "y"
      }, {
        check: "String",
        type: "input_value",
        name: "message"
      }, {
        name: "font",
        options: [[Blockly.Msg.CocoRobo_FONT_DIGIFACE_11, "font.digiface_11"], [Blockly.Msg.CocoRobo_FONT_DIGIFACE_16, "font.digiface_16"], [Blockly.Msg.CocoRobo_FONT_DIGIFACE_21, "font.digiface_21"], [Blockly.Msg.CocoRobo_FONT_DIGIFACE_30, "font.digiface_30"], [Blockly.Msg.CocoRobo_FONT_DIGIFACE_44, "font.digiface_44"], [Blockly.Msg.CocoRobo_FONT_DIGIFACE_IT_30, "font.digiface_it_30"], [Blockly.Msg.CocoRobo_FONT_DIGIFACE_IT_42, "font.digiface_it_42"], [Blockly.Msg.CocoRobo_FONT_DVSM_12, "font.dvsm_12"], [Blockly.Msg.CocoRobo_FONT_DVSM_16, "font.dvsm_16"], [Blockly.Msg.CocoRobo_FONT_DVSM_21, "font.dvsm_21"], [Blockly.Msg.CocoRobo_FONT_DVSMB_12, "font.dvsmb_12"], [Blockly.Msg.CocoRobo_FONT_DVSMB_16, "font.dvsmb_16"], [Blockly.Msg.CocoRobo_FONT_DVSMB_21, "font.dvsmb_21"]],
        type: "field_dropdown"
      }, {
        name: "wrap",
        options: [[Blockly.Msg.CocoRobo_FONT_NO_WRAP, "False"], [Blockly.Msg.CocoRobo_FONT_WRAP, "True"]],
        type: "field_dropdown"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_display_custom_font = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Show,
      helpUrl: Blockly.Msg.CocoRobo_DISPLAY_FONT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_DISPLAY_FONT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_DISPLAY_FONT_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "x"
      }, {
        check: "Number",
        type: "input_value",
        name: "y"
      }, {
        check: "String",
        type: "input_value",
        name: "message"
      }, {
        name: "font",
        text: "font.dvsm_16",
        type: "field_input"
      }, {
        name: "wrap",
        options: [[Blockly.Msg.CocoRobo_FONT_NO_WRAP, "False"], [Blockly.Msg.CocoRobo_FONT_WRAP, "True"]],
        type: "field_dropdown"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_image_to_oled = {
  init: function init() {
    this.jsonInit({
      inputsInline: !1,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Show,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_image_to_lcd_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_image_to_lcd_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "image_dir"
      }, {
        check: "Number",
        type: "input_value",
        name: "w"
      }, {
        check: "Number",
        type: "input_value",
        name: "h"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_qr_code = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Show,
      helpUrl: Blockly.Msg.CocoRobo_QR_CODE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_QR_CODE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_QR_CODE_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "x"
      }, {
        check: "Number",
        type: "input_value",
        name: "y"
      }, {
        check: "String",
        type: "input_value",
        name: "str"
      }, {
        name: "scale",
        options: [["58 * 58", "2"], ["29 * 29", "1"]],
        type: "field_dropdown"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_radio_rec = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.Radio,
      helpUrl: Blockly.Msg.CocoRobo_RADIO_REC_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_RADIO_REC_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_RADIO_REC_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_radio_send = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Radio,
      helpUrl: Blockly.Msg.CocoRobo_RADIO_SEND_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_RADIO_SEND_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_RADIO_SEND_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "send"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_radio_channel = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Radio,
      helpUrl: Blockly.Msg.CocoRobo_RADIO_CHANNEL_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_RADIO_CHANNEL_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_RADIO_CHANNEL_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "channel"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_radio_on_off = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Radio,
      helpUrl: Blockly.Msg.CocoRobo_RADIO_ON_OFF_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_RADIO_ON_OFF_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_RADIO_ON_OFF_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.LABPLUS_USB_SWITCH_ON, "on"], [Blockly.Msg.LABPLUS_USB_SWITCH_OFF, "off"]],
        type: "field_dropdown",
        name: "on_off"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_radio_recv = {
  init: function init() {
    this.jsonInit({
      message0: Blockly.Msg.CocoRobo_RADIO_RECV_MESSAGE0,
      colour: CategoryColors.Radio,
      inputsInline: !0,
      helpUrl: Blockly.Msg.CocoRobo_RADIO_RECV_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_RADIO_RECV_TOOLTIP,
      args0: [{
        type: "input_value",
        name: "message"
      }]
    });
    this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);
  }
};
Blockly.Blocks.CocoRobo_radio_recv_msg = {
  init: function init() {
    this.jsonInit({
      message0: Blockly.Msg.CocoRobo_RADIO_RECV_MSG_MESSAGE0,
      colour: CategoryColors.Radio,
      inputsInline: !0,
      helpUrl: Blockly.Msg.CocoRobo_RADIO_RECV_MSG_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_RADIO_RECV_MSG_TOOLTIP,
      args0: [{
        type: "field_input",
        name: "message",
        text: "on"
      }]
    });
    this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);
  }
};
Blockly.Blocks.set_subset_superset = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Boolean",
      colour: CategoryColors.Set,
      helpUrl: Blockly.Msg.SUBSET_SUPERSET_HELPURL,
      // tooltip: Blockly.Msg.SUBSET_SUPERSET_TOOLTIP,
      message0: Blockly.Msg.SUBSET_SUPERSET_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "set_name"
      }, {
        type: "input_value",
        name: "set_1_name"
      }, {
        options: [[Blockly.Msg.CocoRobo_SUBSET, ".issubset"], [Blockly.Msg.CocoRobo_SUPERSET, ".issuperset"]],
        type: "field_dropdown",
        name: "subset_superset"
      }]
    });
    var thisBlock = this;
    this.setTooltip(function () {
      var mode = thisBlock.getFieldValue('subset_superset');
      var TOOLTIPS = {
        '.issubset': Blockly.Msg.SUBSET_SUPERSET_TOOLTIP.replace('%3', Blockly.Msg.CocoRobo_SUBSET),
        '.issuperset': Blockly.Msg.SUBSET_SUPERSET_TOOLTIP.replace('%3', Blockly.Msg.CocoRobo_SUPERSET)
      };
      return TOOLTIPS[mode];
    });
  }
};
Blockly.Blocks.sets_update_ways = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Set,
      helpUrl: Blockly.Msg.SETS_UPDATE_WAYS_HELPURL,
      // tooltip: Blockly.Msg.SETS_UPDATE_WAYS_TOOLTIP,
      message0: Blockly.Msg.SETS_UPDATE_WAYS_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "set_name"
      }, {
        type: "input_value",
        name: "set_1_name"
      }, {
        options: [[Blockly.Msg.CocoRobo_INTERSECTION, ".intersection_update"], [Blockly.Msg.CocoRobo_UNION, ".update"], [Blockly.Msg.CocoRobo_DIFFERENCE, ".difference_update"]],
        type: "field_dropdown",
        name: "sets_update_ways"
      }]
    });
    var thisBlock = this;
    this.setTooltip(function () {
      var mode = thisBlock.getFieldValue('sets_update_ways');
      var TOOLTIPS = {
        '.intersection_update': Blockly.Msg.SETS_UPDATE_WAYS_TOOLTIP.replace('%3', Blockly.Msg.CocoRobo_INTERSECTION),
        '.update': Blockly.Msg.SETS_UPDATE_WAYS_TOOLTIP.replace('%3', Blockly.Msg.CocoRobo_UNION),
        '.difference_update': Blockly.Msg.SETS_UPDATE_WAYS_TOOLTIP.replace('%3', Blockly.Msg.CocoRobo_DIFFERENCE)
      };
      return TOOLTIPS[mode];
    });
  }
};
Blockly.Blocks.get_sets_pop = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.Set,
      helpUrl: Blockly.Msg.GET_SETS_POP_HELPURL,
      tooltip: Blockly.Msg.GET_SETS_POP_TOOLTIP,
      message0: Blockly.Msg.GET_SETS_POP_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "set_name"
      }]
    });
  }
};
Blockly.Blocks.len_of_sets = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Set,
      helpUrl: Blockly.Msg.LEN_OF_SETS_HELPURL,
      tooltip: Blockly.Msg.LEN_OF_SETS_TOOLTIP,
      message0: Blockly.Msg.LEN_OF_SETS_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "set_name"
      }]
    });
  }
};
Blockly.Blocks.intersection_of_sets = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Array",
      colour: CategoryColors.Set,
      helpUrl: Blockly.Msg.INTERSECTION_OF_SETS_HELPURL,
      // tooltip: Blockly.Msg.INTERSECTION_OF_SETS_TOOLTIP,
      message0: Blockly.Msg.INTERSECTION_OF_SETS_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.CocoRobo_INTERSECTION, " \x26 "], [Blockly.Msg.CocoRobo_UNION, " | "], [Blockly.Msg.CocoRobo_DIFFERENCE, " - "]],
        type: "field_dropdown",
        name: "set_operation_type"
      }, {
        type: "input_value",
        name: "set_name"
      }, {
        type: "input_value",
        name: "set_1_name"
      }]
    });
    var thisBlock = this;
    this.setTooltip(function () {
      var mode = thisBlock.getFieldValue('set_operation_type');
      var TOOLTIPS = {
        " \x26 ": Blockly.Msg.INTERSECTION_OF_SETS_TOOLTIP.replace('%1', Blockly.Msg.CocoRobo_INTERSECTION),
        " | ": Blockly.Msg.INTERSECTION_OF_SETS_TOOLTIP.replace('%1', Blockly.Msg.CocoRobo_UNION),
        " - ": Blockly.Msg.INTERSECTION_OF_SETS_TOOLTIP.replace('%1', Blockly.Msg.CocoRobo_DIFFERENCE)
      };
      return TOOLTIPS[mode];
    });
  }
};
Blockly.Blocks.set_update_with = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Set,
      helpUrl: Blockly.Msg.SET_UPDATE_WITH_HELPURL,
      tooltip: Blockly.Msg.SET_UPDATE_WITH_TOOLTIP,
      message0: Blockly.Msg.SET_UPDATE_WITH_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "set_name"
      }, {
        type: "input_value",
        name: "set_items"
      }]
    });
  }
};
Blockly.Blocks.set_create_with = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Set,
      helpUrl: Blockly.Msg.SET_CREATE_WITH_HELPURL,
      tooltip: Blockly.Msg.SET_CREATE_WITH_TOOLTIP,
      message0: Blockly.Msg.SET_CREATE_WITH_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "set_name"
      }, {
        type: "input_value",
        name: "set_items"
      }]
    });
  }
};
Blockly.Blocks.text_set = {
  init: function init() {
    this.setHelpUrl(Blockly.Msg.TEXT_SET_HELPURL);
    this.setColour(CategoryColors.Set);
    this.appendDummyInput().appendField(Blockly.Msg.TEXT_SET_START).appendField(new Blockly.FieldTextInput(""), "TEXT").appendField(Blockly.Msg.TEXT_SET_END);
    this.setOutput(!0, "Array");
    this.setTooltip(Blockly.Msg.Text_Set_TOOLTIP);
  }
};
Blockly.Blocks.create_empty_set = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Set,
      helpUrl: Blockly.Msg.CREATE_EMPTY_SET_HELPURL,
      tooltip: Blockly.Msg.CREATE_EMPTY_SET_TOOLTIP,
      message0: Blockly.Msg.CREATE_EMPTY_SET_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "set_name"
      }]
    });
  }
};
Blockly.Blocks.set_create_with_items_insert = {
  init: function init() {
    this.setHelpUrl(Blockly.Msg.SET_CREATE_WITH_ITEMS_INSERT_HELPURL);
    this.setColour(CategoryColors.Set);
    this.itemCount_ = 3;
    this.updateShape_();
    this.setOutput(!0, "Array");
    this.setMutator(new Blockly.Mutator(["set_create_with_item"]));
    this.setTooltip(Blockly.Msg.SET_CREATE_WITH_ITEMS_INSERT_TOOLTIP);
  },
  mutationToDom: function mutationToDom() {
    var a = document.createElement("mutation");
    a.setAttribute("items", this.itemCount_);
    return a;
  },
  domToMutation: function domToMutation(a) {
    this.itemCount_ = parseInt(a.getAttribute("items"), 10);
    this.updateShape_();
  },
  decompose: function decompose(a) {
    var b = a.newBlock("set_create_with_container");
    b.initSvg();

    for (var c = b.getInput("STACK").connection, e = 0; e < this.itemCount_; e++) {
      var d = a.newBlock("set_create_with_item");
      d.initSvg();
      c.connect(d.previousConnection);
      c = d.nextConnection;
    }

    return b;
  },
  compose: function compose(a) {
    var b = a.getInputTargetBlock("STACK");

    for (a = []; b;) {
      a.push(b.valueConnection_), b = b.nextConnection && b.nextConnection.targetBlock();
    }

    for (b = 0; b < this.itemCount_; b++) {
      var c = this.getInput("ADD" + b).connection.targetConnection;
      c && -1 == a.indexOf(c) && c.disconnect();
    }

    this.itemCount_ = a.length;
    this.updateShape_();

    for (b = 0; b < this.itemCount_; b++) {
      Blockly.Mutator.reconnect(a[b], this, "ADD" + b);
    }
  },
  saveConnections: function saveConnections(a) {
    a = a.getInputTargetBlock("STACK");

    for (var b = 0; a;) {
      var c = this.getInput("ADD" + b);
      a.valueConnection_ = c && c.connection.targetConnection;
      b++;
      a = a.nextConnection && a.nextConnection.targetBlock();
    }
  },
  updateShape_: function updateShape_() {
    this.itemCount_ && this.getInput("EMPTY") ? this.removeInput("EMPTY") : this.itemCount_ || this.getInput("EMPTY") || this.appendDummyInput("EMPTY").appendField(Blockly.Msg.SET_CREATE_EMPTY_TITLE);

    for (var a = 0; a < this.itemCount_; a++) {
      if (!this.getInput("ADD" + a)) {
        var b = this.appendValueInput("ADD" + a);
        0 == a && b.appendField(Blockly.Msg.SET_CREATE_WITH_INPUT_WITH);
      }
    }

    for (; this.getInput("ADD" + a);) {
      this.removeInput("ADD" + a), a++;
    }
  }
};
Blockly.Blocks.set_create_with_item = {
  init: function init() {
    this.setColour(CategoryColors.Set);
    this.appendDummyInput().appendField(Blockly.Msg.SET_CREATE_WITH_ITEM_TITLE);
    this.setPreviousStatement(!0);
    this.setNextStatement(!0);
    this.setTooltip(Blockly.Msg.SET_CREATE_WITH_ITEM_TOOLTIP);
    this.contextMenu = !1;
  }
};
Blockly.Blocks.set_create_with_container = {
  init: function init() {
    this.setColour(CategoryColors.Set);
    this.appendDummyInput().appendField(Blockly.Msg.SET_CREATE_WITH_CONTAINER_TITLE_ADD);
    this.appendStatementInput("STACK");
    this.setTooltip(Blockly.Msg.SET_CREATE_WITH_CONTAINER_TOOLTIP);
    this.contextMenu = !1;
  }
};
Blockly.Blocks.set_tuple_order_item = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Tuple,
      args0: [{
        type: "input_value",
        name: "tuple_name"
      }, {
        options: [[Blockly.Msg.CocoRobo_ORDER, "["], [Blockly.Msg.CocoRobo_REVERSE_ORDER, "[-"]],
        type: "field_dropdown",
        name: "tuple_order"
      }, {
        check: "Number",
        type: "input_value",
        name: "tuple_order_item"
      }, {
        type: "input_value",
        name: "set_value"
      }],
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.SET_TUPLE_ORDER_ITEM_HELPURL,
      tooltip: Blockly.Msg.SET_TUPLE_ORDER_ITEM_TOOLTIP,
      message0: Blockly.Msg.SET_TUPLE_ORDER_ITEM_MESSAGE0
    });
  }
};
Blockly.Blocks.tuple_create_with_items_insert = {
  init: function init() {
    this.setHelpUrl(Blockly.Msg.TUPLE_CREATE_WITH_ITEMS_INSERT_HELPURL);
    this.setColour(CategoryColors.Tuple);
    this.itemCount_ = 3;
    this.updateShape_();
    this.setOutput(!0);
    this.setMutator(new Blockly.Mutator(["tuple_create_with_item"]));
    this.setTooltip(Blockly.Msg.TUPLE_CREATE_WITH_ITEMS_INSERT_TOOLTIP);
  },
  mutationToDom: function mutationToDom() {
    var a = document.createElement("mutation");
    a.setAttribute("items", this.itemCount_);
    return a;
  },
  domToMutation: function domToMutation(a) {
    this.itemCount_ = parseInt(a.getAttribute("items"), 10);
    this.updateShape_();
  },
  decompose: function decompose(a) {
    var b = a.newBlock("tuple_create_with_container");
    b.initSvg();

    for (var c = b.getInput("STACK").connection, e = 0; e < this.itemCount_; e++) {
      var d = a.newBlock("tuple_create_with_item");
      d.initSvg();
      c.connect(d.previousConnection);
      c = d.nextConnection;
    }

    return b;
  },
  compose: function compose(a) {
    var b = a.getInputTargetBlock("STACK");

    for (a = []; b;) {
      a.push(b.valueConnection_), b = b.nextConnection && b.nextConnection.targetBlock();
    }

    for (b = 0; b < this.itemCount_; b++) {
      var c = this.getInput("ADD" + b).connection.targetConnection;
      c && -1 == a.indexOf(c) && c.disconnect();
    }

    this.itemCount_ = a.length;
    this.updateShape_();

    for (b = 0; b < this.itemCount_; b++) {
      Blockly.Mutator.reconnect(a[b], this, "ADD" + b);
    }
  },
  saveConnections: function saveConnections(a) {
    a = a.getInputTargetBlock("STACK");

    for (var b = 0; a;) {
      var c = this.getInput("ADD" + b);
      a.valueConnection_ = c && c.connection.targetConnection;
      b++;
      a = a.nextConnection && a.nextConnection.targetBlock();
    }
  },
  updateShape_: function updateShape_() {
    this.itemCount_ && this.getInput("EMPTY") ? this.removeInput("EMPTY") : this.itemCount_ || this.getInput("EMPTY") || this.appendDummyInput("EMPTY").appendField(Blockly.Msg.TUPLE_CREATE_EMPTY_TITLE);

    for (var a = 0; a < this.itemCount_; a++) {
      if (!this.getInput("ADD" + a)) {
        var b = this.appendValueInput("ADD" + a);
        0 == a && b.appendField(Blockly.Msg.TUPLE_CREATE_WITH_INPUT_WITH);
      }
    }

    for (; this.getInput("ADD" + a);) {
      this.removeInput("ADD" + a), a++;
    }
  }
};
Blockly.Blocks.tuple_create_with_item = {
  init: function init() {
    this.setColour(CategoryColors.Tuple);
    this.appendDummyInput().appendField(Blockly.Msg.TUPLE_CREATE_WITH_ITEM_TITLE);
    this.setPreviousStatement(!0);
    this.setNextStatement(!0);
    this.setTooltip(Blockly.Msg.TUPLE_CREATE_WITH_ITEM_TOOLTIP);
    this.contextMenu = !1;
  }
};
Blockly.Blocks.tuple_create_with_container = {
  init: function init() {
    this.setColour(CategoryColors.Tuple);
    this.appendDummyInput().appendField(Blockly.Msg.TUPLE_CREATE_WITH_CONTAINER_TITLE_ADD);
    this.appendStatementInput("STACK");
    this.setTooltip(Blockly.Msg.TUPLE_CREATE_WITH_CONTAINER_TOOLTIP);
    this.contextMenu = !1;
  }
};
Blockly.Blocks.tuple_create_with = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Tuple,
      args0: [{
        type: "input_value",
        name: "tuple_name"
      }, {
        type: "input_value",
        name: "tuple_items"
      }],
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.tuple_create_with_HELPURL,
      tooltip: Blockly.Msg.tuple_create_with_TOOLTIP,
      message0: Blockly.Msg.tuple_create_with_MESSAGE0
    });
  }
};
Blockly.Blocks.tuple_order_item = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Tuple,
      args0: [{
        type: "input_value",
        name: "tuple_name"
      }, {
        options: [[Blockly.Msg.CocoRobo_ORDER, "["], [Blockly.Msg.CocoRobo_REVERSE_ORDER, "[-"]],
        type: "field_dropdown",
        name: "tuple_order"
      }, {
        check: "Number",
        type: "input_value",
        name: "tuple_order_item"
      }],
      output: ["Number", "String", "Boolean", "Array"],
      inputsInline: !0,
      helpUrl: Blockly.Msg.tuple_order_item_HELPURL,
      tooltip: Blockly.Msg.tuple_order_item_TOOLTIP,
      message0: Blockly.Msg.tuple_order_item_MESSAGE0
    });
  }
};
Blockly.Blocks.tuple_min_max_len = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Tuple,
      args0: [{
        type: "input_value",
        name: "tuple_name"
      }, {
        options: [[Blockly.Msg.CocoRobo_MIN, "min"], [Blockly.Msg.CocoRobo_MAX, "max"], [Blockly.Msg.CocoRobo_LENTH, "len"]],
        type: "field_dropdown",
        name: "tuple_min_max_len"
      }],
      output: ["Number", "String"],
      inputsInline: !0,
      helpUrl: Blockly.Msg.TUPLE_MIN_MAX_LEN_HELPURL,
      // tooltip: Blockly.Msg.TUPLE_MIN_MAX_LEN_TOOLTIP,
      message0: Blockly.Msg.TUPLE_MIN_MAX_LEN_MESSAGE0
    });
    var thisBlock = this;
    this.setTooltip(function () {
      var mode = thisBlock.getFieldValue('tuple_min_max_len');
      var TOOLTIPS = {
        'min': Blockly.Msg.TUPLE_MIN_MAX_LEN_TOOLTIP.replace('%2', Blockly.Msg.CocoRobo_MIN),
        'max': Blockly.Msg.TUPLE_MIN_MAX_LEN_TOOLTIP.replace('%2', Blockly.Msg.CocoRobo_MAX),
        'len': Blockly.Msg.TUPLE_MIN_MAX_LEN_TOOLTIP.replace('%2', Blockly.Msg.CocoRobo_LENTH)
      };
      return TOOLTIPS[mode];
    });
  }
};
Blockly.Blocks.tuple_item_exist = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Tuple,
      args0: [{
        type: "input_value",
        name: "tuple_name"
      }, {
        type: "input_value",
        name: "tuple_item"
      }],
      output: "Boolean",
      inputsInline: !0,
      helpUrl: Blockly.Msg.TUPLE_ITEM_EXIST_HELPURL,
      tooltip: Blockly.Msg.TUPLE_ITEM_EXIST_TOOLTIP,
      message0: Blockly.Msg.TUPLE_ITEM_EXIST_MESSAGE0
    });
  }
};
Blockly.Blocks.parts_of_tuple = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Tuple,
      args0: [{
        type: "input_value",
        name: "tuple_name"
      }, {
        check: "Number",
        type: "input_value",
        name: "tuple_item"
      }],
      output: null,
      inputsInline: !0,
      helpUrl: Blockly.Msg.PARTS_OF_TUPLE_HELPURL,
      tooltip: Blockly.Msg.PARTS_OF_TUPLE_TOOLTIP,
      message0: Blockly.Msg.PARTS_OF_TUPLE_MESSAGE0
    });
  }
};
Blockly.Blocks.parts_of_tuple2 = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Tuple,
      args0: [{
        type: "input_value",
        name: "tuple_name"
      }, {
        options: [[Blockly.Msg.CocoRobo_ORDER, "["], [Blockly.Msg.CocoRobo_REVERSE_ORDER, "[-"]],
        type: "field_dropdown",
        name: "tuple_start_order"
      }, {
        check: "Number",
        type: "input_value",
        name: "start_item"
      }, {
        options: [[Blockly.Msg.CocoRobo_ORDER, ":"], [Blockly.Msg.CocoRobo_REVERSE_ORDER, ":-"]],
        type: "field_dropdown",
        name: "tuple_end_order"
      }, {
        check: "Number",
        type: "input_value",
        name: "end_item"
      }],
      output: null,
      inputsInline: !0,
      helpUrl: Blockly.Msg.PARTS_OF_TUPLE2_HELPURL,
      tooltip: Blockly.Msg.PARTS_OF_TUPLE2_TOOLTIP,
      message0: Blockly.Msg.PARTS_OF_TUPLE2_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_uart_input = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "String",
      colour: CategoryColors.UART,
      helpUrl: Blockly.Msg.CocoRobo_UART_INPUT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_UART_INPUT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_UART_INPUT_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "title",
        text: "Please enter: "
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_uart_write_bytes = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.UART,
      helpUrl: Blockly.Msg.CocoRobo_UART_WRITE_BYTES_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_UART_WRITE_BYTES_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_UART_WRITE_BYTES_MESSAGE0,
      args0: [{
        options: [["uart1", "uart1"], ["uart2", "uart2"]],
        type: "field_dropdown",
        name: "uart_name"
      }, {
        check: "Array",
        type: "input_value",
        name: "write_byte_arrays"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_uart_get_write_bytes = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.UART,
      helpUrl: Blockly.Msg.CocoRobo_UART_WRITE_BYTES_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_UART_WRITE_BYTES_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_UART_WRITE_BYTES_MESSAGE0,
      args0: [{
        options: [["uart1", "uart1"], ["uart2", "uart2"]],
        type: "field_dropdown",
        name: "uart_name"
      }, {
        check: "Array",
        type: "input_value",
        name: "write_byte_arrays"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_uart_write_byte = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.UART,
      helpUrl: Blockly.Msg.CocoRobo_UART_WRITE_BYTE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_UART_WRITE_BYTE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_UART_WRITE_BYTE_MESSAGE0,
      args0: [{
        options: [["uart1", "uart1"], ["uart2", "uart2"]],
        type: "field_dropdown",
        name: "uart_name"
      }, {
        check: "Number",
        type: "input_value",
        name: "write_one_byte"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_uart_get_write_byte = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.UART,
      helpUrl: Blockly.Msg.CocoRobo_UART_WRITE_BYTE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_UART_WRITE_BYTE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_UART_WRITE_BYTE_MESSAGE0,
      args0: [{
        options: [["uart1", "uart1"], ["uart2", "uart2"]],
        type: "field_dropdown",
        name: "uart_name"
      }, {
        check: "Number",
        type: "input_value",
        name: "write_one_byte"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_uart_read = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.UART,
      helpUrl: Blockly.Msg.CocoRobo_UART_READ_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_UART_READ_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_UART_READ_MESSAGE0,
      args0: [{
        options: [["uart1", "uart1"], ["uart2", "uart2"]],
        type: "field_dropdown",
        name: "uart_name"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_uart_readinto = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.UART,
      helpUrl: Blockly.Msg.CocoRobo_UART_READINTO_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_UART_READINTO_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_UART_READINTO_MESSAGE0,
      args0: [{
        options: [["uart1", "uart1"], ["uart2", "uart2"]],
        type: "field_dropdown",
        name: "uart_name"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_uart_read_length = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.UART,
      helpUrl: Blockly.Msg.CocoRobo_UART_READ_LENGTH_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_UART_READ_LENGTH_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_UART_READ_LENGTH_MESSAGE0,
      args0: [{
        options: [["uart1", "uart1"], ["uart2", "uart2"]],
        type: "field_dropdown",
        name: "uart_name"
      }, {
        check: "Number",
        type: "input_value",
        name: "read_length"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_uart_readline = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.UART,
      helpUrl: Blockly.Msg.CocoRobo_UART_READLINE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_UART_READLINE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_UART_READLINE_MESSAGE0,
      args0: [{
        options: [["uart1", "uart1"], ["uart2", "uart2"]],
        type: "field_dropdown",
        name: "uart_name"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_uart_has_data = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Boolean",
      colour: CategoryColors.UART,
      helpUrl: Blockly.Msg.CocoRobo_UART_HAS_DATA_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_UART_HAS_DATA_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_UART_HAS_DATA_MESSAGE0,
      args0: [{
        options: [["uart1", "uart1"], ["uart2", "uart2"]],
        type: "field_dropdown",
        name: "uart_name"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_uart_write_hex = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.UART,
      helpUrl: Blockly.Msg.CocoRobo_UART_WRITE_HEX_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_UART_WRITE_HEX_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_UART_WRITE_HEX_MESSAGE0,
      args0: [{
        options: [["uart1", "uart1"], ["uart2", "uart2"]],
        type: "field_dropdown",
        name: "uart_name"
      }, {
        type: "field_input",
        name: "data",
        text: "0xff00ff"
      }, {
        options: [[Blockly.Msg.CocoRobo_FONT_NO_WRAP, "no_new"], [Blockly.Msg.CocoRobo_FONT_WRAP, "new"]],
        type: "field_dropdown",
        name: "newline"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_uart_write_str = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.UART,
      helpUrl: Blockly.Msg.CocoRobo_UART_WRITE_STR_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_UART_WRITE_STR_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_UART_WRITE_STR_MESSAGE0,
      args0: [{
        options: [["uart1", "uart1"], ["uart2", "uart2"]],
        type: "field_dropdown",
        name: "uart_name"
      }, {
        check: "String",
        type: "input_value",
        name: "data"
      }, {
        options: [[Blockly.Msg.CocoRobo_FONT_NO_WRAP, "no_new"], [Blockly.Msg.CocoRobo_FONT_WRAP, "new"]],
        type: "field_dropdown",
        name: "newline"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_uart_get_write_str = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.UART,
      helpUrl: Blockly.Msg.CocoRobo_UART_WRITE_STR_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_UART_WRITE_STR_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_UART_WRITE_STR_MESSAGE0,
      args0: [{
        options: [["uart1", "uart1"], ["uart2", "uart2"]],
        type: "field_dropdown",
        name: "uart_name"
      }, {
        check: "String",
        type: "input_value",
        name: "data"
      }, {
        options: [[Blockly.Msg.CocoRobo_FONT_NO_WRAP, "no_new"], [Blockly.Msg.CocoRobo_FONT_WRAP, "new"]],
        type: "field_dropdown",
        name: "newline"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_uart_init = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.UART,
      helpUrl: Blockly.Msg.CocoRobo_UART_INIT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_UART_INIT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_UART_INIT_MESSAGE0,
      args0: [{
        type: "input_value",
        name: "baudrate"
      }, {
        check: "Number",
        type: "input_value",
        name: "tx"
      }, {
        check: "Number",
        type: "input_value",
        name: "rx"
      }, {
        options: [["uart1", "uart1"], ["uart2", "uart2"]],
        type: "field_dropdown",
        name: "uart_name"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_uart_deinit = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.UART,
      helpUrl: Blockly.Msg.CocoRobo_UART_DEINIT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_UART_DEINIT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_UART_DEINIT_MESSAGE0,
      args0: [{
        options: [["uart1", "uart1"], ["uart2", "uart2"]],
        type: "field_dropdown",
        name: "uart_name"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_baudrate = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.UART,
      helpUrl: Blockly.Msg.CocoRobo_BAUDRATE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_BAUDRATE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_BAUDRATE_MESSAGE0,
      args0: [{
        options: [["115200", "115200"], ["57600", "57600"], ["56000", "56000"], ["43000", "43000"], ["38400", "38400"], ["31250", "31250"], ["28800", "28800"], ["19200", "19200"], ["14400", "14400"], ["9600", "9600"], ["4800", "4800"], ["2400", "2400"], ["1200", "1200"], ["600", "600"], ["300", "300"]],
        type: "field_dropdown",
        name: "baudrate"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_usocket_read = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.Network,
      helpUrl: Blockly.Msg.CocoRobo_USOCKET_READ_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_USOCKET_READ_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_USOCKET_READ_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "socket_name",
        text: "s"
      }, {
        check: "Number",
        type: "input_value",
        name: "size"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_usocket_setblocking = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Network,
      helpUrl: Blockly.Msg.CocoRobo_USOCKET_SETBLOCKING_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_USOCKET_SETBLOCKING_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_USOCKET_SETBLOCKING_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "socket_name",
        text: "s"
      }, {
        options: [[Blockly.Msg.CocoRobo_USOCKET_BLOCK, "True"], [Blockly.Msg.CocoRobo_USOCKET_UNBLOCK, "False"]],
        type: "field_dropdown",
        name: "mode"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_usocket_settimeout = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Network,
      helpUrl: Blockly.Msg.CocoRobo_USOCKET_SETTIMEOUT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_USOCKET_SETTIMEOUT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_USOCKET_SETTIMEOUT_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "socket_name",
        text: "s"
      }, {
        check: "Number",
        type: "input_value",
        name: "_nums"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_text_ESC = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: Blockly.Blocks.texts.HUE,
      helpUrl: Blockly.Msg.CocoRobo_TEXT_ESC_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_TEXT_ESC_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_TEXT_ESC_MESSAGE0,
      args0: [{
        options: [["\\n", "\\n"], ["\\n\\n", "\\n\\n"], ["\\r", "\\r"], ["\\r\\n", "\\r\\n"], ["\\b", "\\b"], ["\\other", "\\other"], ["\\", "\\"], ["\\\\", "\\\\"]],
        type: "field_dropdown",
        name: "mode"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_usocket_recv = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.Network,
      helpUrl: Blockly.Msg.CocoRobo_USOCKET_RECV_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_USOCKET_RECV_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_USOCKET_RECV_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "socket_name",
        text: "s"
      }, {
        check: "Number",
        type: "input_value",
        name: "_nums"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_usocket_recvfrom = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.Network,
      helpUrl: Blockly.Msg.CocoRobo_USOCKET_RECVFROM_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_USOCKET_RECVFROM_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_USOCKET_RECVFROM_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "socket_name",
        text: "s"
      }, {
        check: "Number",
        type: "input_value",
        name: "_nums"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_usocket_sendall = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Network,
      helpUrl: Blockly.Msg.CocoRobo_USOCKET_SENDALL_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_USOCKET_SENDALL_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_USOCKET_SENDALL_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "socket_name",
        text: "s"
      }, {
        check: "String",
        type: "input_value",
        name: "_bytes"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_usocket_sends = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Network,
      helpUrl: Blockly.Msg.CocoRobo_USOCKET_SENDS_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_USOCKET_SENDS_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_USOCKET_SENDS_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "socket_name",
        text: "s"
      }, {
        check: "String",
        type: "input_value",
        name: "_bytes"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_usocket_send = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Network,
      helpUrl: Blockly.Msg.CocoRobo_USOCKET_SEND_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_USOCKET_SEND_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_USOCKET_SEND_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "socket_name",
        text: "s"
      }, {
        check: "String",
        type: "input_value",
        name: "_bytes"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_usocket_sendto = {
  init: function init() {
    this.jsonInit({
      inputsInline: !1,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Network,
      helpUrl: Blockly.Msg.CocoRobo_USOCKET_SENDTO_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_USOCKET_SENDTO_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_USOCKET_SENDTO_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "socket_name",
        text: "s"
      }, {
        check: "String",
        type: "input_value",
        name: "_bytes"
      }, {
        check: "Array",
        type: "input_value",
        name: "_address"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_usocket_connect = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Network,
      helpUrl: Blockly.Msg.CocoRobo_USOCKET_CONNECT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_USOCKET_CONNECT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_USOCKET_CONNECT_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "socket_name",
        text: "s"
      }, {
        check: "String",
        type: "input_value",
        name: "host"
      }, {
        check: "Number",
        type: "input_value",
        name: "port"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_usocket_getaddrinfo = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "String",
      colour: CategoryColors.Network,
      helpUrl: Blockly.Msg.CocoRobo_USOCKET_GETADDRINFO_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_USOCKET_GETADDRINFO_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_USOCKET_GETADDRINFO_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "host"
      }, {
        check: "Number",
        type: "input_value",
        name: "port"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_usocket_accept = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Array",
      colour: CategoryColors.Network,
      helpUrl: Blockly.Msg.CocoRobo_USOCKET_ACCEPT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_USOCKET_ACCEPT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_USOCKET_ACCEPT_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "socket_name",
        text: "s"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_usocket_listen = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Network,
      helpUrl: Blockly.Msg.CocoRobo_USOCKET_LISTEN_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_USOCKET_LISTEN_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_USOCKET_LISTEN_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "socket_name",
        text: "s"
      }, {
        check: "Number",
        type: "input_value",
        name: "backlog"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_usocket_bind = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Network,
      helpUrl: Blockly.Msg.CocoRobo_USOCKET_BIND_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_USOCKET_BIND_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_USOCKET_BIND_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "socket_name",
        text: "s"
      }, {
        check: "String",
        type: "input_value",
        name: "address"
      }, {
        check: "Number",
        type: "input_value",
        name: "port"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_usocket_close = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Network,
      helpUrl: Blockly.Msg.CocoRobo_USOCKET_CLOSE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_USOCKET_CLOSE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_USOCKET_CLOSE_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "socket_name",
        text: "s"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_usocket_init = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Network,
      helpUrl: Blockly.Msg.CocoRobo_USOCKET_INIT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_USOCKET_INIT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_USOCKET_INIT_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "socket_name",
        text: "s"
      }, {
        options: [["AF_INET", "AF_INET"], ["AF_INET6", "AF_INET6"]],
        type: "field_dropdown",
        name: "af"
      }, {
        options: [["SOCK_STREAM", "SOCK_STREAM"], ["SOCK_DGRAM", "SOCK_DGRAM"], ["SOCK_RAW", "SOCK_RAW"], ["SO_REUSEADDR", "SO_REUSEADDR"]],
        type: "field_dropdown",
        name: "_type"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_usocket_setsockopt = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Network,
      helpUrl: Blockly.Msg.CocoRobo_USOCKET_SETSOCKOPT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_USOCKET_SETSOCKOPT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_USOCKET_SETSOCKOPT_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "socket_name",
        text: "s"
      }, {
        options: [["SOCK_STREAM", "SOCK_STREAM"], ["SOCK_DGRAM", "SOCK_DGRAM"], ["SOCK_RAW", "SOCK_RAW"], ["SO_REUSEADDR", "SO_REUSEADDR"]],
        type: "field_dropdown",
        name: "_type"
      }, {
        check: "Number",
        type: "input_value",
        name: "value"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_get_post = {
  init: function init() {
    this.jsonInit({
      inputsInline: !1,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Network,
      helpUrl: Blockly.Msg.CocoRobo_GET_POST_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_GET_POST_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_GET_POST_MESSAGE0,
      args0: [{
        options: [["get", "get"], ["post", "post"]],
        type: "field_dropdown",
        name: "get_post"
      }, {
        check: "String",
        type: "input_value",
        name: "url"
      }, {
        type: "input_value",
        name: "json"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_urequests_get_post = {
  init: function init() {
    this.jsonInit({
      inputsInline: !1,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Network,
      helpUrl: Blockly.Msg.CocoRobo_UREQUESTS_GET_POST_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_UREQUESTS_GET_POST_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_UREQUESTS_GET_POST_MESSAGE0,
      args0: [{
        options: [["Get", "get"], ["Post", "post"]],
        type: "field_dropdown",
        name: "method"
      }, {
        check: "String",
        type: "input_value",
        name: "url"
      }, {
        type: "input_value",
        name: "json"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_urequests_post_file = {
  init: function init() {
    this.jsonInit({
      inputsInline: !1,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Network,
      helpUrl: Blockly.Msg.CocoRobo_UREQUESTS_POST_FILE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_UREQUESTS_POST_FILE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_UREQUESTS_POST_FILE_MESSAGE0,
      args0: [{
        type: "input_dummy"
      }, {
        check: "String",
        type: "input_value",
        name: "url"
      }, {
        check: "String",
        type: "input_value",
        name: "file_name"
      }, {
        check: "String",
        type: "input_value",
        name: "file_type"
      }, {
        check: "Array",
        type: "input_value",
        name: "json"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_response = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.Network,
      helpUrl: Blockly.Msg.CocoRobo_RESPONSE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_RESPONSE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_RESPONSE_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.TEXT, "text"], [Blockly.Msg._BYTE, "content"], [Blockly.Msg.DICT_CREATE_WITH_CONTAINER_TITLE_ADD, "json()"]],
        type: "field_dropdown",
        name: "response"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_response_attribute = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.Network,
      helpUrl: Blockly.Msg.CocoRobo_RESPONSE_ATTRIBUTE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_RESPONSE_ATTRIBUTE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_RESPONSE_ATTRIBUTE_MESSAGE0,
      args0: [{
        options: [["encoding", "encoding"], ["status code", "status_code"], ["reason", "reason"]],
        type: "field_dropdown",
        name: "response_attribute"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_init_wifi = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Wifi,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_init_wifi_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_init_wifi_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "ssid"
      }, {
        check: "String",
        type: "input_value",
        name: "password"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_wifi_all_config = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Array",
      colour: CategoryColors.Wifi,
      helpUrl: Blockly.Msg.CocoRobo_WIFI_ALL_CONFIG_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_WIFI_ALL_CONFIG_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_WIFI_ALL_CONFIG_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_wifi_isconnected = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Boolean",
      colour: CategoryColors.Wifi,
      helpUrl: Blockly.Msg.CocoRobo_WIFI_ISCONNECTED_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_WIFI_ISCONNECTED_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_WIFI_ISCONNECTED_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_WiFi_config = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Wifi,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_WiFi_config_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_WiFi_config_MESSAGE0,
      output: "String",
      args0: [{
        options: WiFi_config,
        type: "field_dropdown",
        name: "WiFi_config"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_dis_WiFi = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Wifi,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_dis_WiFi_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_dis_WiFi_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_wifi_channel = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      colour: CategoryColors.Wifi,
      helpUrl: "",
      tooltip: "",
      message0: "%1",
      output: "Number",
      args0: [{
        options: WiFi_channel,
        type: "field_dropdown",
        name: "channel"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_enable_APWiFi = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Wifi,
      helpUrl: Blockly.Msg.CocoRobo_ENABLE_APWIFI_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_ENABLE_APWIFI_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_ENABLE_APWIFI_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "essid"
      }, {
        check: "String",
        type: "input_value",
        name: "password"
      }, {
        check: "Number",
        type: "input_value",
        name: "channel"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_disable_APWiFi = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Wifi,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_disable_APWiFi_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_disable_APWiFi_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_seniverse_city_weather = {
  init: function init() {
    this.jsonInit({
      inputsInline: !1,
      colour: CategoryColors.Weather,
      helpUrl: Blockly.Msg.CocoRobo_SENIVERSE_CITY_WEATHER_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_SENIVERSE_CITY_WEATHER_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_SENIVERSE_CITY_WEATHER_MESSAGE0,
      output: "Array",
      args0: [{
        options: [[Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_API_1, "api_1"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_API_2, "api_2"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_API_3, "api_3"]],
        type: "field_dropdown",
        name: "api"
      }, {
        type: "input_dummy"
      }, {
        check: "String",
        type: "input_value",
        name: "location"
      }, {
        type: "field_input",
        name: "key",
        text: "your_private_key"
      }, {
        type: "input_dummy"
      }, {
        options: [[Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_LANGUAGE_1, "zh-Hans"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_LANGUAGE_2, "zh-Hant"]],
        type: "field_dropdown",
        name: "language"
      }, {
        type: "input_dummy"
      }, {
        options: [[Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_UNIT_1, "c"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_UNIT_2, "f"]],
        type: "field_dropdown",
        name: "unit"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_define_seniverse_weather = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Weather,
      helpUrl: Blockly.Msg.CocoRobo_DEFINE_SENIVERSE_WEATHER_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_DEFINE_SENIVERSE_WEATHER_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_DEFINE_SENIVERSE_WEATHER_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "var_name",
        text: "w1"
      }, {
        check: "Array",
        type: "input_value",
        name: "info"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_get_seniverse_weather_info = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: ["String", "Array"],
      colour: CategoryColors.Weather,
      helpUrl: Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "var_name",
        text: "w1"
      }, {
        options: [[Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_city_name, "name"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_city_id, "id"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_country, "country"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_path, "path"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_timezone, "timezone"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_timezone_offset, "timezone_offset"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_last_update_date, "last_update_date"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_last_update, "last_update"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_object, "object"]],
        type: "field_dropdown",
        name: "type"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_get_seniverse_weather_info1 = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "String",
      colour: CategoryColors.Weather,
      helpUrl: Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO1_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO1_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO1_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "var_name",
        text: "w1"
      }, {
        options: [[Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_text, "text"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_code, "code"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_temperature, "temperature"]],
        type: "field_dropdown",
        name: "type"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_get_seniverse_weather_info2 = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "String",
      colour: CategoryColors.Weather,
      helpUrl: Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO2_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO2_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO2_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "var_name",
        text: "w1"
      }, {
        options: [[Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_today, "0"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_tomorrow, "1"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_the_day_after_tomorrow, "2"]],
        type: "field_dropdown",
        name: "date"
      }, {
        options: [[Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_high, "high"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_low, "low"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_text_day, "text_day"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_code_day, "code_day"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_text_night, "text_night"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_code_night, "code_night"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_wind_direction, "wind_direction"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_wind_direction_degree, "wind_direction_degree"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_wind_speed, "wind_speed"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_wind_scale, "wind_scale"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_date, "date"]],
        type: "field_dropdown",
        name: "type"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_get_seniverse_weather_info3 = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "String",
      colour: CategoryColors.Weather,
      helpUrl: Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO3_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO3_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_GET_SENIVERSE_WEATHER_INFO3_MESSAGE0,
      args0: [{
        type: "field_input",
        name: "var_name",
        text: "w1"
      }, {
        options: [[Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_car_washing, "car_washing"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_dressing, "dressing"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_flu, "flu"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_sport, "sport"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_travel, "travel"], [Blockly.Msg.CocoRobo_SENIVERSE_WEATHER_uv, "uv"]],
        type: "field_dropdown",
        name: "type"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_ntptime_settime = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Wifi,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_ntptime_settime_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_ntptime_settime_MESSAGE0 // args0: [{
      //     name: "timezone",
      //     options: [[Blockly.Msg.CocoRobo_ntptime_timezone_E8, "8"], [Blockly.Msg.CocoRobo_ntptime_timezone_E9, "9"], [Blockly.Msg.CocoRobo_ntptime_timezone_E10, "10"], [Blockly.Msg.CocoRobo_ntptime_timezone_E11, "11"], [Blockly.Msg.CocoRobo_ntptime_timezone_E12, "12"], [Blockly.Msg.CocoRobo_ntptime_timezone_W12, "-12"], [Blockly.Msg.CocoRobo_ntptime_timezone_W11, "-11"], [Blockly.Msg.CocoRobo_ntptime_timezone_W10, "-10"], [Blockly.Msg.CocoRobo_ntptime_timezone_W9, "-9"], [Blockly.Msg.CocoRobo_ntptime_timezone_W8, "-8"], [Blockly.Msg.CocoRobo_ntptime_timezone_W7, "-7"], [Blockly.Msg.CocoRobo_ntptime_timezone_W6, "-6"], [Blockly.Msg.CocoRobo_ntptime_timezone_W5, "-5"], [Blockly.Msg.CocoRobo_ntptime_timezone_W4, "-4"], [Blockly.Msg.CocoRobo_ntptime_timezone_W3, "-3"], [Blockly.Msg.CocoRobo_ntptime_timezone_W2, "-2"], [Blockly.Msg.CocoRobo_ntptime_timezone_W1, "-1"], [Blockly.Msg.CocoRobo_ntptime_timezone_0, "0"], [Blockly.Msg.CocoRobo_ntptime_timezone_E1, "1"], [Blockly.Msg.CocoRobo_ntptime_timezone_E2, "2"], [Blockly.Msg.CocoRobo_ntptime_timezone_E3, "3"], [Blockly.Msg.CocoRobo_ntptime_timezone_E4, "4"], [Blockly.Msg.CocoRobo_ntptime_timezone_E5, "5"], [Blockly.Msg.CocoRobo_ntptime_timezone_E6, "6"], [Blockly.Msg.CocoRobo_ntptime_timezone_E7, "7"]],
      //     type: "field_dropdown"
      // }, {
      //     type: "field_input",
      //     name: "server",
      //     text: "time.windows.com"
      // }]

    });
  }
};
Blockly.Blocks.CocoRobo_wifi_clock = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: rgbColor,
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_wifi_clock_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_wifi_clock_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "x"
      }, {
        check: "Number",
        type: "input_value",
        name: "y"
      }, {
        check: "Number",
        type: "input_value",
        name: "radius"
      }]
    });
  }
};
Blockly.Blocks.CocoRobobox_sound = {
  init: function init() {
    this.jsonInit({
      colour: "#e8795b",
      output: "Number",
      helpUrl: Blockly.Msg.CocoRobobox_sound_HELPURL,
      tooltip: Blockly.Msg.CocoRobobox_sound_TOOLTIP,
      message0: Blockly.Msg.CocoRobobox_sound_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobobox_light = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Box,
      output: "Number",
      helpUrl: Blockly.Msg.CocoRobobox_light_HELPURL,
      tooltip: Blockly.Msg.CocoRobobox_light_TOOLTIP,
      message0: Blockly.Msg.CocoRobobox_light_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobobox_slider = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.Box,
      helpUrl: Blockly.Msg.CocoRoboBOX_SLIDER_HELPURL,
      tooltip: Blockly.Msg.CocoRoboBOX_SLIDER_TOOLTIP,
      message0: Blockly.Msg.CocoRoboBOX_SLIDER_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobobox_5button = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Box,
      args0: [{
        name: "button_val",
        type: "field_dropdown",
        options: [["\u2191", "'up'"], ["\u2193", "'down'"], ["\u2190", "'left'"], ["\u2192", "'right'"], ["OK", "'ok'"]]
      }],
      output: "Boolean",
      message0: Blockly.Msg.CocoRoboBOX_5BUTTON_MESSAGE0,
      tooltip: Blockly.Msg.CocoRoboBOX_5BUTTON_TOOLTIP,
      helpUrl: Blockly.Msg.CocoRoboBOX_5BUTTON_HELPURL
    });
  }
};
Blockly.Blocks.CocoRobobox_ultrasonic = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.Box,
      helpUrl: Blockly.Msg.CocoRoboBOX_ULTRASONIC_HELPURL,
      tooltip: Blockly.Msg.CocoRoboBOX_ULTRASONIC_TOOLTIP,
      message0: Blockly.Msg.CocoRoboBOX_ULTRASONIC_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobobox_Thehumanbodyinfrare = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.Box,
      helpUrl: Blockly.Msg.CocoRoboBOX_THEHUMANBODYINFRARE_HELPURL,
      tooltip: Blockly.Msg.CocoRoboBOX_THEHUMANBODYINFRARE_TOOLTIP,
      message0: Blockly.Msg.CocoRoboBOX_THEHUMANBODYINFRARE_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_bme280_hum_tem_pre = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Box,
      args0: [{
        name: "hum_tem_pre",
        options: [[Blockly.Msg.CocoRobo_tem, "temperature"], [Blockly.Msg.CocoRobo_hum, "humidity"], [Blockly.Msg.CocoRobo_pre, "pressure"]],
        type: "field_dropdown"
      }],
      output: "Number",
      helpUrl: Blockly.Msg.CocoRobo_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_bme280_hum_tem_pre_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_bme280_hum_tem_pre_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobobox_motor = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Box,
      helpUrl: Blockly.Msg.CocoRoboBOX_MOTOR_HELPURL,
      tooltip: Blockly.Msg.CocoRoboBOX_MOTOR_TOOLTIP,
      message0: Blockly.Msg.CocoRoboBOX_MOTOR_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "speed"
      }]
    });
  }
};
Blockly.Blocks.CocoRobobox_RGB_clear = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      type: "field_dropdown",
      colour: CategoryColors.Box,
      message0: Blockly.Msg.CocoRoboBOX_RGB_clear_MESSAGE0,
      tooltip: Blockly.Msg.CocoRoboBOX_RGB_clear_TOOLTIP,
      helpUrl: Blockly.Msg.CocoRoboBOX_RGB_clear_HELPURL
    });
  }
};
Blockly.Blocks.CocoRobobox_RGB_pixel = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Box,
      helpUrl: Blockly.Msg.CocoRoboBOX_RGB_pixel_HELPURL,
      tooltip: Blockly.Msg.CocoRoboBOX_RGB_pixel_TOOLTIP,
      message0: Blockly.Msg.CocoRoboBOX_RGB_pixel_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "speed1"
      }, {
        check: "Number",
        type: "input_value",
        name: "speed2"
      }, {
        check: "Number",
        type: "input_value",
        name: "speed3"
      }, {
        check: "Number",
        type: "input_value",
        name: "speed4"
      }, {
        check: "Number",
        type: "input_value",
        name: "speed5"
      }]
    });
  }
};
Blockly.Blocks.CocoRobobox_RGB_get_pixel = {
  init: function init() {
    this.jsonInit({
      output: "Number",
      colour: CategoryColors.Box,
      helpUrl: Blockly.Msg.CocoRoboBOX_RGB_get_pixel_HELPURL,
      tooltip: Blockly.Msg.CocoRoboBOX_RGB_get_pixel_TOOLTIP,
      message0: Blockly.Msg.CocoRoboBOX_RGB_get_pixel_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "speed1"
      }, {
        check: "Number",
        type: "input_value",
        name: "speed2"
      }]
    });
  }
};
Blockly.Blocks.CocoRobobox_RGB_ImageText = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.Box,
      helpUrl: Blockly.Msg.CocoRoboBOX_RGB_ImageText_HELPURL,
      tooltip: Blockly.Msg.CocoRoboBOX_RGB_ImageText_TOOLTIP,
      message0: Blockly.Msg.CocoRoboBOX_RGB_ImageText_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "speed1"
      }, {
        check: "Number",
        type: "input_value",
        name: "speed2"
      }]
    });
  }
};
Blockly.Blocks.CocoRobobox_RGB_SetImage = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Box,
      args0: [{
        type: "input_dummy"
      }, {
        name: "row0",
        type: "input_value",
        check: "String"
      }, {
        name: "row1",
        type: "input_value",
        check: "String"
      }, {
        name: "row2",
        type: "input_value",
        check: "String"
      }, {
        name: "row3",
        type: "input_value",
        check: "String"
      }, {
        name: "row4",
        type: "input_value",
        check: "String"
      }],
      output: "microbit_image",
      helpUrl: Blockly.Msg.MICROBIT_IMAGE_CREATE1_HELPURL,
      tooltip: Blockly.Msg.MICROBIT_IMAGE_CREATE1_TOOLTIP,
      message0: Blockly.Msg.MICROBIT_IMAGE_CREATE1_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobobox_RGB_Image = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Box,
      nextStatement: null,
      previousStatement: null,
      helpUrl: Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_HELPURL,
      tooltip: Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_TOOLTIP,
      message0: Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_MESSAGE0,
      args0: [{
        check: ["microbit_image", "String"],
        type: "input_value",
        name: "image"
      }]
    });
  }
};
Blockly.Blocks.CocoRobobox_RGB_ImageImport = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Box,
      inputsInline: !0,
      output: "String",
      helpUrl: Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGEImport_HELPURL,
      tooltip: Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGEImport_TOOLTIP,
      message0: Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGEImport_MESSAGE0,
      args0: [{
        check: ["microbit_image", "String"],
        type: "input_value",
        name: "image"
      }]
    });
  }
};
Blockly.Blocks.CocoRobobox_RGB_ImageCopy = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Box,
      inputsInline: !0,
      output: "String",
      helpUrl: Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_Copy_HELPURL,
      tooltip: Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_Copy_TOOLTIP,
      message0: Blockly.Msg.CocoRoboBOX_RGB_SHOW_IMAGE_Copy_MESSAGE0,
      args0: [{
        check: ["microbit_image", "String"],
        type: "input_value",
        name: "image"
      }]
    });
  }
};
Blockly.Blocks.CocoRobobox_RGB_ImageCot = {
  init: function init() {
    this.jsonInit({
      output: "String",
      inputsInline: !0,
      colour: CategoryColors.Box,
      helpUrl: Blockly.Msg.CocoRoboBOX_RGB_ImageCot_HELPURL,
      tooltip: Blockly.Msg.CocoRoboBOX_RGB_ImageCot_TOOLTIP,
      message0: Blockly.Msg.CocoRoboBOX_RGB_ImageCot_MESSAGE0,
      args0: [{
        check: ["microbit_image", "String"],
        type: "input_value",
        name: "image"
      }, {
        check: "Number",
        type: "input_value",
        name: "speed2"
      }, {
        check: "Number",
        type: "input_value",
        name: "speed3"
      }, {
        check: "Number",
        type: "input_value",
        name: "speed4"
      }, {
        check: "Number",
        type: "input_value",
        name: "speed5"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_image_builtins = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Box,
      args0: [{
        name: "image",
        options: [[Blockly.Msg.MICROBIT_IMAGE_HEART, "HEART"], [Blockly.Msg.MICROBIT_IMAGE_HEART_SMALL, "HEART_SMALL"], [Blockly.Msg.MICROBIT_IMAGE_HAPPY, "HAPPY"], [Blockly.Msg.MICROBIT_IMAGE_SMILE, "SMILE"], [Blockly.Msg.MICROBIT_IMAGE_SAD, "SAD"], [Blockly.Msg.MICROBIT_IMAGE_CONFUSED, "CONFUSED"], [Blockly.Msg.MICROBIT_IMAGE_ANGRY, "ANGRY"], [Blockly.Msg.MICROBIT_IMAGE_ASLEEP, "ASLEEP"], [Blockly.Msg.MICROBIT_IMAGE_SUPRISED, "SURPRISED"], [Blockly.Msg.MICROBIT_IMAGE_SILLY, "SILLY"], [Blockly.Msg.MICROBIT_IMAGE_FABULOUS, "FABULOUS"], [Blockly.Msg.MICROBIT_IMAGE_MEH, "MEH"], [Blockly.Msg.MICROBIT_IMAGE_YES, "YES"], [Blockly.Msg.MICROBIT_IMAGE_NO, "NO"], [Blockly.Msg.MICROBIT_IMAGE_CLOCK12, "CLOCK12"], [Blockly.Msg.MICROBIT_IMAGE_CLOCK11, "CLOCK11"], [Blockly.Msg.MICROBIT_IMAGE_CLOCK10, "CLOCK10"], [Blockly.Msg.MICROBIT_IMAGE_CLOCK9, "CLOCK9"], [Blockly.Msg.MICROBIT_IMAGE_CLOCK8, "CLOCK8"], [Blockly.Msg.MICROBIT_IMAGE_CLOCK7, "CLOCK7"], [Blockly.Msg.MICROBIT_IMAGE_CLOCK6, "CLOCK6"], [Blockly.Msg.MICROBIT_IMAGE_CLOCK5, "CLOCK5"], [Blockly.Msg.MICROBIT_IMAGE_CLOCK4, "CLOCK4"], [Blockly.Msg.MICROBIT_IMAGE_CLOCK3, "CLOCK3"], [Blockly.Msg.MICROBIT_IMAGE_CLOCK2, "CLOCK2"], [Blockly.Msg.MICROBIT_IMAGE_CLOCK1, "CLOCK1"], [Blockly.Msg.MICROBIT_IMAGE_ARROW_N, "ARROW_N"], [Blockly.Msg.MICROBIT_IMAGE_ARROW_NE, "ARROW_NE"], [Blockly.Msg.MICROBIT_IMAGE_ARROW_E, "ARROW_E"], [Blockly.Msg.MICROBIT_IMAGE_ARROW_SE, "ARROW_SE"], [Blockly.Msg.MICROBIT_IMAGE_ARROW_S, "ARROW_S"], [Blockly.Msg.MICROBIT_IMAGE_ARROW_SW, "ARROW_SW"], [Blockly.Msg.MICROBIT_IMAGE_ARROW_W, "ARROW_W"], [Blockly.Msg.MICROBIT_IMAGE_ARROW_NW, "ARROW_NW"], [Blockly.Msg.MICROBIT_IMAGE_TRIANGLE, "TRIANGLE"], [Blockly.Msg.MICROBIT_IMAGE_TRIANGLE_LEFT, "TRIANGLE_LEFT"], [Blockly.Msg.MICROBIT_IMAGE_CHESSBOARD, "CHESSBOARD"], [Blockly.Msg.MICROBIT_IMAGE_DIAMOND, "DIAMOND"], [Blockly.Msg.MICROBIT_IMAGE_DIAMOND_SMALL, "DIAMOND_SMALL"], [Blockly.Msg.MICROBIT_IMAGE_SQUARE, "SQUARE"], [Blockly.Msg.MICROBIT_IMAGE_SQUARE_SMALL, "SQUARE_SMALL"], [Blockly.Msg.MICROBIT_IMAGE_RABBIT, "RABBIT"], [Blockly.Msg.MICROBIT_IMAGE_COW, "COW"], [Blockly.Msg.MICROBIT_IMAGE_MUSIC_CROTCHET, "MUSIC_CROTCHET"], [Blockly.Msg.MICROBIT_IMAGE_MUSIC_QUAVER, "MUSIC_QUAVER"], [Blockly.Msg.MICROBIT_IMAGE_MUSIC_QUAVERS, "MUSIC_QUAVERS"], [Blockly.Msg.MICROBIT_IMAGE_PITCHFORK, "PITCHFORK"], [Blockly.Msg.MICROBIT_IMAGE_XMAS, "XMAS"], [Blockly.Msg.MICROBIT_IMAGE_PACMAN, "PACMAN"], [Blockly.Msg.MICROBIT_IMAGE_TARGET, "TARGET"], [Blockly.Msg.MICROBIT_IMAGE_TSHIRT, "TSHIRT"], [Blockly.Msg.MICROBIT_IMAGE_ROLLERSKATE, "ROLLERSKATE"], [Blockly.Msg.MICROBIT_IMAGE_DUCK, "DUCK"], [Blockly.Msg.MICROBIT_IMAGE_HOUSE, "HOUSE"], [Blockly.Msg.MICROBIT_IMAGE_TORTOISE, "TORTOISE"], [Blockly.Msg.MICROBIT_IMAGE_BUTTERFLY, "BUTTERFLY"], [Blockly.Msg.MICROBIT_IMAGE_STICKFIGURE, "STICKFIGURE"], [Blockly.Msg.MICROBIT_IMAGE_GHOST, "GHOST"], [Blockly.Msg.MICROBIT_IMAGE_SWORD, "SWORD"], [Blockly.Msg.MICROBIT_IMAGE_GIRAFFE, "GIRAFFE"], [Blockly.Msg.MICROBIT_IMAGE_SKULL, "SKULL"], [Blockly.Msg.MICROBIT_IMAGE_UMBRELLA, "UMBRELLA"], [Blockly.Msg.MICROBIT_IMAGE_SNAKE, "SNAKE"]],
        type: "field_dropdown"
      }],
      output: ["microbit_image", "Array"],
      helpUrl: Blockly.Msg.CocoRoboBOX_RGB_IMAGE_BUILTINS_HELPURL,
      tooltip: Blockly.Msg.CocoRoboBOX_RGB_IMAGE_BUILTINS_TOOLTIP,
      message0: Blockly.Msg.CocoRoboBOX_RGB_IMAGE_BUILTINS_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobobox_image_shift = {
  init: function init() {
    this.jsonInit({
      colour: CategoryColors.Box,
      args0: [{
        check: "microbit_image",
        type: "input_value",
        name: "image"
      }, {
        name: "shift",
        options: [[Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_LEFT, "LEFT"], [Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_RIGHT, "RIGHT"], [Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_UP, "UP"], [Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_DOWN, "DOWN"]],
        type: "field_dropdown"
      }, {
        check: "Number",
        type: "input_value",
        name: "pos"
      }],
      output: "microbit_image",
      helpUrl: Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_HELPURL,
      tooltip: Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_TOOLTIP,
      message0: Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobobox_triaxial_acceleration = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.Box,
      helpUrl: Blockly.Msg.CocoRoboBOX_TRIAXIAL_ACCELERATION_HELPURL,
      tooltip: Blockly.Msg.CocoRoboBOX_TRIAXIAL_ACCELERATION_TOOLTIP,
      message0: Blockly.Msg.CocoRoboBOX_TRIAXIAL_ACCELERATION_MESSAGE0,
      args0: [{
        options: [["X", "0"], ["Y", "1"], ["Z", "2"]],
        type: "field_dropdown",
        name: "enable"
      }]
    });
  }
};
Blockly.Blocks.CocoRobobox_triaxial_angular_velocity = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.Box,
      helpUrl: Blockly.Msg.CocoRoboBOX_TRIAXIAL_AUGULAR_VELOCITY_HELPURL,
      tooltip: Blockly.Msg.CocoRoboBOX_TRIAXIAL_AUGULAR_VELOCITY_TOOLTIP,
      message0: Blockly.Msg.CocoRoboBOX_TRIAXIAL_AUGULAR_VELOCITY_MESSAGE0,
      args0: [{
        options: [["X", "0"], ["Y", "1"], ["Z", "2"]],
        type: "field_dropdown",
        name: "enable"
      }]
    });
  }
};
Blockly.Blocks.CocoRobobox_euler_angle = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.Box,
      helpUrl: Blockly.Msg.CocoRoboBOX_EULER_ANGLE_HELPURL,
      tooltip: Blockly.Msg.CocoRoboBOX_EULER_ANGLE_TOOLTIP,
      message0: Blockly.Msg.CocoRoboBOX_EULER_ANGLE_MESSAGE0,
      args0: [{
        options: [["P", "0"], ["R", "1"], ["Y", "2"]],
        type: "field_dropdown",
        name: "enable"
      }]
    });
  }
};
Blockly.Blocks.CocoRobobox_quaternion = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: null,
      colour: CategoryColors.Box,
      helpUrl: Blockly.Msg.CocoRoboBOX_QUATERNION_HELPURL,
      tooltip: Blockly.Msg.CocoRoboBOX_QUATERNION_TOOLTIP,
      message0: Blockly.Msg.CocoRoboBOX_QUATERNION_MESSAGE0,
      args0: [{
        options: [["W", "0"], ["X", "1"], ["Y", "2"], ["Z", "3"]],
        type: "field_dropdown",
        name: "enable"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_Face_tracking = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_face,
      helpUrl: Blockly.Msg.CocoRobo_AI2_FACE_TRACKING_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI2_FACE_TRACKING_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI2_FACE_TRACKING_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_Face_photograph_tracking = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_face,
      helpUrl: Blockly.Msg.CocoRobo_AI2_PHOTOGRAPH_TRACKING_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI2_PHOTOGRAPH_TRACKING_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI2_PHOTOGRAPH_TRACKING_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_result_face = {
  init: function init() {
    this.jsonInit({
      output: "String",
      colour: CategoryColors.AI_face,
      helpUrl: Blockly.Msg.CocoRobo_AI2_RESULT_FACE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI2_RESULT_FACE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI2_RESULT_FACE_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_result_face_x = {
  init: function init() {
    this.jsonInit({
      output: "String",
      colour: CategoryColors.AI_face,
      helpUrl: Blockly.Msg.CocoRobo_AI2_RESULT_FACE_X_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI2_RESULT_FACE_X_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI2_RESULT_FACE_X_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_result_face_y = {
  init: function init() {
    this.jsonInit({
      output: "String",
      colour: CategoryColors.AI_face,
      helpUrl: Blockly.Msg.CocoRobo_AI2_RESULT_FACE_Y_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI2_RESULT_FACE_Y_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI2_RESULT_FACE_Y_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_result_face_w = {
  init: function init() {
    this.jsonInit({
      output: "String",
      colour: CategoryColors.AI_face,
      helpUrl: Blockly.Msg.CocoRobo_AI2_RESULT_FACE_W_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI2_RESULT_FACE_W_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI2_RESULT_FACE_W_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_result_face_h = {
  init: function init() {
    this.jsonInit({
      output: "String",
      colour: CategoryColors.AI_face,
      helpUrl: Blockly.Msg.CocoRobo_AI2_RESULT_FACE_H_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI2_RESULT_FACE_H_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI2_RESULT_FACE_H_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_result_face_value = {
  init: function init() {
    this.jsonInit({
      output: "String",
      colour: CategoryColors.AI_face,
      helpUrl: Blockly.Msg.CocoRobo_AI2_RESULT_FACE_VALUE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI2_RESULT_FACE_VALUE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI2_RESULT_FACE_VALUE_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_result_face_objnum = {
  init: function init() {
    this.jsonInit({
      output: "String",
      colour: CategoryColors.AI_face,
      helpUrl: Blockly.Msg.CocoRobo_AI2_RESULT_FACE_OBJNUM_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI2_RESULT_FACE_OBJNUM_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI2_RESULT_FACE_OBJNUM_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_20classid_tracking = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_20classid,
      helpUrl: Blockly.Msg.CocoRobo_AI2_20class_TRACKING_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI2_20class_TRACKING_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI2_20class_TRACKING_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_20classid_photograph_tracking = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_20classid,
      helpUrl: Blockly.Msg.CocoRobo_AI2_PHOTOGRAPH_20TRACKING_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI2_PHOTOGRAPH_20TRACKING_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI2_PHOTOGRAPH_20TRACKING_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_result_20class = {
  init: function init() {
    this.jsonInit({
      output: "String",
      colour: CategoryColors.AI_20classid,
      helpUrl: Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_result_20class_x = {
  init: function init() {
    this.jsonInit({
      output: "String",
      colour: CategoryColors.AI_20classid,
      helpUrl: Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_X_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_X_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_X_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_result_20class_y = {
  init: function init() {
    this.jsonInit({
      output: "String",
      colour: CategoryColors.AI_20classid,
      helpUrl: Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_Y_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_Y_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_Y_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_result_20class_w = {
  init: function init() {
    this.jsonInit({
      output: "String",
      colour: CategoryColors.AI_20classid,
      helpUrl: Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_W_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_W_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_W_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_result_20class_h = {
  init: function init() {
    this.jsonInit({
      output: "String",
      colour: CategoryColors.AI_20classid,
      helpUrl: Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_H_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_H_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_H_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_result_20class_value = {
  init: function init() {
    this.jsonInit({
      output: "String",
      colour: CategoryColors.AI_20classid,
      helpUrl: Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_VALUE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_VALUE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_VALUE_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_result_20class_objnum = {
  init: function init() {
    this.jsonInit({
      output: "String",
      colour: CategoryColors.AI_20classid,
      helpUrl: Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_OBJNUM_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_OBJNUM_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_OBJNUM_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_result_20class_classid = {
  init: function init() {
    this.jsonInit({
      output: "String",
      colour: CategoryColors.AI_20classid,
      helpUrl: Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_CLASSID_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_CLASSID_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_CLASSID_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_result_20class_index = {
  init: function init() {
    this.jsonInit({
      output: "String",
      colour: CategoryColors.AI_20classid,
      helpUrl: Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_INDEX_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_INDEX_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI2_RESULT_20CLASS_INDEX_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_number_discern = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_number,
      helpUrl: Blockly.Msg.CocoRobo_AI2_NUMBER_DISCERN_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI2_NUMBER_DISCERN_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI2_NUMBER_DISCERN_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_number_result = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_number,
      helpUrl: Blockly.Msg.CocoRobo_AI2_RESULT_NUMBER_DISCERN_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI2_RESULT_NUMBER_DISCERN_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI2_RESULT_NUMBER_DISCERN_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI_NumberDetect_all = {
  init: function init() {
    this.jsonInit({
      output: "Number",
      colour: CategoryColors.AI_number,
      helpUrl: Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_ALL_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_ALL_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_ALL_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI_NumberDetect_number = {
  init: function init() {
    this.jsonInit({
      output: "Number",
      colour: CategoryColors.AI_number,
      helpUrl: Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_NUMBER_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_NUMBER_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_NUMBER_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI_NumberDetect_adience = {
  init: function init() {
    this.jsonInit({
      output: "Number",
      colour: CategoryColors.AI_number,
      helpUrl: Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_ADIENCE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_ADIENCE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI2_NUMBER_DETECT_ADIENCE_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI_trace_color = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      output: "Number",
      colour: CategoryColors.AI_color,
      helpUrl: Blockly.Msg.CocoRobo_AI_TRACE_COLOR_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_TRACE_COLOR_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_TRACE_COLOR_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "lab"
      }, {
        check: "Number",
        type: "input_value",
        name: "pixel"
      }, {
        check: "Number",
        type: "input_value",
        name: "area"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_trace_color_displayten = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_color,
      helpUrl: Blockly.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_TRACE_CILOR_DISPLAYTEN_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.CocoRobo_AI_TRACE_COLOR_RECTANGLE, "rectangle(blob.rect())"], [Blockly.Msg.CocoRobo_AI_TRACE_COLOR_CROSS, "cross(blob.cx(), blob.cy())"]],
        type: "field_dropdown",
        name: "number"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_blob_all = {
  init: function init() {
    this.jsonInit({
      output: "Number",
      colour: CategoryColors.AI_color,
      helpUrl: Blockly.Msg.CocoRobo_AI_BLOB_ALL_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_BLOB_ALL_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_BLOB_ALL_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "variables"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_blob_x = {
  init: function init() {
    this.jsonInit({
      output: "Number",
      colour: CategoryColors.AI_color,
      helpUrl: Blockly.Msg.CocoRobo_AI_BLOB_X_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_BLOB_X_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_BLOB_X_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "variables"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_blob_y = {
  init: function init() {
    this.jsonInit({
      output: "Number",
      colour: CategoryColors.AI_color,
      helpUrl: Blockly.Msg.CocoRobo_AI_BLOB_Y_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_BLOB_Y_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_BLOB_Y_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "variables"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_blob_w = {
  init: function init() {
    this.jsonInit({
      output: "Number",
      colour: CategoryColors.AI_color,
      helpUrl: Blockly.Msg.CocoRobo_AI_BLOB_W_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_BLOB_W_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_BLOB_W_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "variables"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_blob_h = {
  init: function init() {
    this.jsonInit({
      output: "Number",
      colour: CategoryColors.AI_color,
      helpUrl: Blockly.Msg.CocoRobo_AI_BLOB_H_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_BLOB_H_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_BLOB_H_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "variables"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_blob_number = {
  init: function init() {
    this.jsonInit({
      output: "Number",
      colour: CategoryColors.AI_color,
      helpUrl: Blockly.Msg.CocoRobo_AI_BLOB_NUMBER_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_BLOB_NUMBER_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_BLOB_NUMBER_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "variables"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_blob_center_x = {
  init: function init() {
    this.jsonInit({
      output: "Number",
      colour: CategoryColors.AI_color,
      helpUrl: Blockly.Msg.CocoRobo_AI_BLOB_CENTER_X_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_BLOB_CENTER_X_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_BLOB_CENTER_X_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "variables"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_blob_center_y = {
  init: function init() {
    this.jsonInit({
      output: "Number",
      colour: CategoryColors.AI_color,
      helpUrl: Blockly.Msg.CocoRobo_AI_BLOB_CENTER_Y_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_BLOB_CENTER_Y_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_BLOB_CENTER_Y_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "variables"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI2_blob_orthogon = {
  init: function init() {
    this.jsonInit({
      output: "Number",
      colour: CategoryColors.AI_color,
      helpUrl: Blockly.Msg.CocoRobo_AI_BLOB_ORTHOGON_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_BLOB_ORTHOGON_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_BLOB_ORTHOGON_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "variables"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_sensor_reset = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_camera,
      helpUrl: Blockly.Msg.CocoRobo_AI_SENSOR_RESET_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_SENSOR_RESET_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_SENSOR_RESET_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI_sensor_images = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_camera,
      helpUrl: Blockly.Msg.CocoRobo_AI_SENSOR_IMAGES_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_SENSOR_IMAGES_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_SENSOR_IMAGES_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI_sensor_enable = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_camera,
      helpUrl: Blockly.Msg.CocoRobo_AI_SENSOR_ENABLE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_SENSOR_ENABLE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_SENSOR_ENABLE_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.CocoRobo_AI_SENSOR_ENABLE_START, "1"], [Blockly.Msg.CocoRobo_AI_SENSOR_ENABLE_STOP, "0"]],
        type: "field_dropdown",
        name: "enable"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_sensor_return = {
  init: function init() {
    this.jsonInit({
      output: "Number",
      colour: CategoryColors.AI_camera,
      helpUrl: Blockly.Msg.CocoRobo_AI_SENSOR_RETURN_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_SENSOR_RETURN_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_SENSOR_RETURN_MESSAGE0,
      args0: [{
        options: [["\u5206\u8FA8\u7387\u5BBD\u5EA6", "width"], ["\u5206\u8FA8\u7387\u9AD8\u5EA6", "height"], ["\u56FE\u50CF\u5E27\u683C\u5F0F", "format"], ["\u56FE\u50CF\u5E27\u5927\u5C0F", "size"]],
        type: "field_dropdown",
        name: "enable"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_sensor_sets = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_camera,
      helpUrl: Blockly.Msg.CocoRobo_AI_SENSOR_SETS_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_SENSOR_SETS_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_SENSOR_SETS_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.CocoRobo_AI_SENSOR_SETS_CONTRAST, "contrast"], [Blockly.Msg.CocoRobo_AI_SENSOR_SETS_BRIGHTNESS, "brightness"], [Blockly.Msg.CocoRobo_AI_SENSOR_SETS_SATURATION, "saturation"]],
        type: "field_dropdown",
        name: "pattern"
      }, {
        options: [["-2", "-2"], ["-1", "-1"], ["0", "0"], ["1", "1"], ["2", "2"]],
        type: "field_dropdown",
        name: "number"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_sensor_auto_gain = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_camera,
      helpUrl: Blockly.Msg.CocoRobo_AI_SENSOR_AUTO_GAIN_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_SENSOR_AUTO_GAIN_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_SENSOR_AUTO_GAIN_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.CocoRobo_OPEN, "1"], [Blockly.Msg.CocoRobo_CLOSE, "0"]],
        type: "field_dropdown",
        name: "enable"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_sensor_auto_whitebal = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_camera,
      helpUrl: Blockly.Msg.CocoRobo_AI_SENSOR_AUTO_WHITEBAL_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_SENSOR_AUTO_WHITEBAL_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_SENSOR_AUTO_WHITEBAL_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.CocoRobo_OPEN, "True"], [Blockly.Msg.CocoRobo_CLOSE, "False"]],
        type: "field_dropdown",
        name: "enable"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_sensor_level_MI = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_camera,
      helpUrl: Blockly.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_H, "hmirror"], [Blockly.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_V, "vflip"]],
        type: "field_dropdown",
        name: "select"
      }, {
        options: [[Blockly.Msg.CocoRobo_OPEN, "1"], [Blockly.Msg.CocoRobo_CLOSE, "0"]],
        type: "field_dropdown",
        name: "enable"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_sensor_pattern = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_camera,
      helpUrl: Blockly.Msg.CocoRobo_AI_SENSOR_PATTERN_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_SENSOR_PATTERN_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_SENSOR_PATTERN_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.CocoRobo_AI_SENSOR_PATTERN_GRAYSCALE, "GRAYSCALE"], [Blockly.Msg.CocoRobo_AI_SENSOR_PATTERN_COLOR, "RGB565"]],
        type: "field_dropdown",
        name: "yolo"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_lcd_init = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_LCD,
      helpUrl: Blockly.Msg.CocoRobo_AI_LCD_INIT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_LCD_INIT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_LCD_INIT_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI_lcd_text = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_LCD,
      helpUrl: Blockly.Msg.CocoRobo_AI_LCD_TEXT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_LCD_TEXT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_LCD_TEXT_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "x"
      }, {
        check: "Number",
        type: "input_value",
        name: "y"
      }, {
        check: "String",
        type: "input_value",
        name: "message"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_LCD_clearall = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_LCD,
      helpUrl: Blockly.Msg.CocoRobo_AI_LCD_CLEAR_ALL_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_LCD_CLEAR_ALL_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_LCD_CLEAR_ALL_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI_lcd_pixel_colour = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_LCD,
      helpUrl: Blockly.Msg.CocoRobo_AI_LCD_PIXEL_COLOUR_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_LCD_PIXEL_COLOUR_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_LCD_PIXEL_COLOUR_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "x"
      }, {
        check: "Number",
        type: "input_value",
        name: "y"
      }, {
        check: "Number",
        type: "input_value",
        name: "r"
      }, {
        check: "Number",
        type: "input_value",
        name: "g"
      }, {
        check: "Number",
        type: "input_value",
        name: "b"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_lcd_colour = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_LCD,
      helpUrl: Blockly.Msg.CocoRobo_AI_LCD_COLOUR_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_LCD_COLOUR_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_LCD_COLOUR_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "r"
      }, {
        check: "Number",
        type: "input_value",
        name: "g"
      }, {
        check: "Number",
        type: "input_value",
        name: "b"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_lcd_display = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_LCD,
      helpUrl: Blockly.Msg.CocoRobo_AI_LCD_DISPLAY_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_LCD_DISPLAY_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_LCD_DISPLAY_MESSAGE0
    });
  }
};
Blockly.Blocks.CocoRobo_AI_lcd_display_size = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_LCD,
      helpUrl: Blockly.Msg.CocoRobo_AI_LCD_DISPLAY_SIZE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_LCD_DISPLAY_SIZE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_LCD_DISPLAY_SIZE_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "x"
      }, {
        check: "Number",
        type: "input_value",
        name: "y"
      }, {
        check: "Number",
        type: "input_value",
        name: "w"
      }, {
        check: "Number",
        type: "input_value",
        name: "h"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_lcd_show_image_erosion = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_LCD,
      helpUrl: Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_EROSION_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_EROSION_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_EROSION_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "x"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_lcd_show_image_middle = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_LCD,
      helpUrl: Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MIDDLE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MIDDLE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MIDDLE_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "size"
      }, {
        check: "Number",
        type: "input_value",
        name: "bias"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_lcd_show_image_mode = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_LCD,
      helpUrl: Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MODE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MODE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_MODE_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "size"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_lcd_show_image_indistinct = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_LCD,
      helpUrl: Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_INDISTINCT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_INDISTINCT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_INDISTINCT_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "size"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_lcd_show_image_cartoon = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_LCD,
      helpUrl: Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_CARTOON_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_CARTOON_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_CARTOON_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "size"
      }, {
        check: "Number",
        type: "input_value",
        name: "seed"
      }, {
        check: "Number",
        type: "input_value",
        name: "floating"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_lcd_show_image_3D = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_LCD,
      helpUrl: Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_3D_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_3D_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_3D_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "x_rotation"
      }, {
        check: "Number",
        type: "input_value",
        name: "y_rotation"
      }, {
        check: "Number",
        type: "input_value",
        name: "z_rotation"
      }, {
        check: "Number",
        type: "input_value",
        name: "x_translation"
      }, {
        check: "Number",
        type: "input_value",
        name: "y_translation"
      }, {
        check: "Number",
        type: "input_value",
        name: "zoom"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_LCD_show_REC = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_LCD,
      helpUrl: Blockly.Msg.CocoRobo_AI_LCD_SHOW_REC_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_LCD_SHOW_REC_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_LCD_SHOW_REC_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.CocoRobo_DISPLAY_HOLLOW, "False"], [Blockly.Msg.CocoRobo_DISPLAY_SOLID, "True"]],
        type: "field_dropdown",
        name: "solid"
      }, {
        check: "Number",
        type: "input_value",
        name: "thickness"
      }, {
        check: "Number",
        type: "input_value",
        name: "x"
      }, {
        check: "Number",
        type: "input_value",
        name: "y"
      }, {
        check: "Number",
        type: "input_value",
        name: "w"
      }, {
        check: "Number",
        type: "input_value",
        name: "h"
      }, {
        check: "Number",
        type: "input_value",
        name: "r"
      }, {
        check: "Number",
        type: "input_value",
        name: "g"
      }, {
        check: "Number",
        type: "input_value",
        name: "b"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_LCD_show_string = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_LCD,
      helpUrl: Blockly.Msg.CocoRobo_AI_LCD_SHOW_STRING_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_LCD_SHOW_STRING_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_LCD_SHOW_STRING_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "x"
      }, {
        check: "Number",
        type: "input_value",
        name: "y"
      }, {
        check: "Number",
        type: "input_value",
        name: "w"
      }, {
        check: "Number",
        type: "input_value",
        name: "h"
      }, {
        check: "Number",
        type: "input_value",
        name: "r"
      }, {
        check: "Number",
        type: "input_value",
        name: "g"
      }, {
        check: "Number",
        type: "input_value",
        name: "b"
      }, {
        check: "Number",
        type: "input_value",
        name: "thickness"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_LCD_return_colour = {
  init: function init() {
    this.jsonInit({
      output: "String",
      colour: CategoryColors.AI_LCD,
      helpUrl: Blockly.Msg.CocoRobo_AI_LCD_return_colour_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_LCD_return_colour_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_LCD_return_colour_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "x"
      }, {
        check: "Number",
        type: "input_value",
        name: "y"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_LCD_show_circle = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_LCD,
      helpUrl: Blockly.Msg.CocoRobo_AI_LCD_SHOW_CIRCLE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_LCD_SHOW_CIRCLE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_LCD_SHOW_CIRCLE_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.CocoRobo_DISPLAY_HOLLOW, "False"], [Blockly.Msg.CocoRobo_DISPLAY_SOLID, "True"]],
        type: "field_dropdown",
        name: "fill"
      }, {
        check: "Number",
        type: "input_value",
        name: "x"
      }, {
        check: "Number",
        type: "input_value",
        name: "y"
      }, {
        check: "Number",
        type: "input_value",
        name: "radius"
      }, {
        check: "Number",
        type: "input_value",
        name: "r"
      }, {
        check: "Number",
        type: "input_value",
        name: "g"
      }, {
        check: "Number",
        type: "input_value",
        name: "b"
      }, {
        check: "Number",
        type: "input_value",
        name: "thickness"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_lcd_text_most = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_LCD,
      helpUrl: Blockly.Msg.CocoRobo_AI_LCD_TEXT_MOST_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_LCD_TEXT_MOST_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_LCD_TEXT_MOST_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "x"
      }, {
        check: "Number",
        type: "input_value",
        name: "y"
      }, {
        check: "String",
        type: "input_value",
        name: "message"
      }, {
        check: "Number",
        type: "input_value",
        name: "r"
      }, {
        check: "Number",
        type: "input_value",
        name: "g"
      }, {
        check: "Number",
        type: "input_value",
        name: "b"
      }, {
        check: "Number",
        type: "input_value",
        name: "scale"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_LCD_show_ten_string = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_LCD,
      helpUrl: Blockly.Msg.CocoRobo_AI_LCD_SHOW_TEN_STRING_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_LCD_SHOW_TEN_STRING_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_LCD_SHOW_TEN_STRING_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "x"
      }, {
        check: "Number",
        type: "input_value",
        name: "y"
      }, {
        check: "Number",
        type: "input_value",
        name: "r"
      }, {
        check: "Number",
        type: "input_value",
        name: "g"
      }, {
        check: "Number",
        type: "input_value",
        name: "b"
      }, {
        check: "Number",
        type: "input_value",
        name: "size"
      }, {
        check: "Number",
        type: "input_value",
        name: "thickness"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_LCD_show_arrows = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_LCD,
      helpUrl: Blockly.Msg.CocoRobo_AI_LCD_SHOW_ARROWS_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_LCD_SHOW_ARROWS_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_LCD_SHOW_ARROWS_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "x"
      }, {
        check: "Number",
        type: "input_value",
        name: "y"
      }, {
        check: "Number",
        type: "input_value",
        name: "w"
      }, {
        check: "Number",
        type: "input_value",
        name: "h"
      }, {
        check: "Number",
        type: "input_value",
        name: "r"
      }, {
        check: "Number",
        type: "input_value",
        name: "g"
      }, {
        check: "Number",
        type: "input_value",
        name: "b"
      }, {
        check: "Number",
        type: "input_value",
        name: "thickness"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_lcd_show_image_picture = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_LCD,
      helpUrl: Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_PIRCTURE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_PIRCTURE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_PIRCTURE_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "message"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_lcd_show_image_heat = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_LCD,
      helpUrl: Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_GRAYSCALE, "to_grayscale"], [Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_RAINBOW, "to_rainbow"], [Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_NEGATE, "negate"], [Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_INVERT, "invert"]],
        type: "field_dropdown",
        name: "enable"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_lcd_show_image_descartes = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_LCD,
      helpUrl: Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_MESSAGE0,
      args0: [{
        options: [[Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_LINPOLAR, "linpolar"], [Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_LOGPOLAR, "logpolar"]],
        type: "field_dropdown",
        name: "enable"
      }, {
        options: [[Blockly.Msg.CocoRobo_CLOSE, "False"], [Blockly.Msg.CocoRobo_OPEN, "True"]],
        type: "field_dropdown",
        name: "select"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_lcd_show_ectype = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_LCD,
      helpUrl: Blockly.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_MESSAGE0,
      args0: [{
        check: "String",
        type: "input_value",
        name: "message"
      }, {
        check: "Number",
        type: "input_value",
        name: "x"
      }, {
        check: "Number",
        type: "input_value",
        name: "y"
      }, {
        check: "Number",
        type: "input_value",
        name: "w"
      }, {
        check: "Number",
        type: "input_value",
        name: "h"
      }]
    });
  }
};
Blockly.Blocks.CocoRobo_AI_lcd_show_ectype_show = {
  init: function init() {
    this.jsonInit({
      inputsInline: !0,
      nextStatement: null,
      previousStatement: null,
      colour: CategoryColors.AI_LCD,
      helpUrl: Blockly.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_SHOW_HELPURL,
      tooltip: Blockly.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_SHOW_TOOLTIP,
      message0: Blockly.Msg.CocoRobo_AI_LCD_SHOW_ECTYPE_SHOW_MESSAGE0,
      args0: [{
        check: "Number",
        type: "input_value",
        name: "x"
      }, {
        check: "Number",
        type: "input_value",
        name: "y"
      }, {
        check: "Number",
        type: "input_value",
        name: "w"
      }, {
        check: "Number",
        type: "input_value",
        name: "h"
      }]
    });
  }
};