From ce33aa5f9d3b7b3fb574460ab44c493250447643 Mon Sep 17 00:00:00 2001
From: Stephan Hadinger
Date: Tue, 24 May 2022 22:45:04 +0200
Subject: [PATCH] Berry zigbee phase 1
---
lib/libesp32/berry/default/be_modtab.c | 6 +
lib/libesp32/berry/generate/be_const_strtab.h | 6 +
.../berry/generate/be_const_strtab_def.h | 2527 +++++++++--------
.../generate/be_fixed_be_class_zb_coord_ntv.h | 23 +
.../generate/be_fixed_be_class_zb_device.h | 20 +
.../be_fixed_be_class_zcl_frame_ntv.h | 17 +
lib/libesp32/berry/generate/be_fixed_zigbee.h | 17 +
.../berry_mapping/src/be_const_members.c | 1 +
lib/libesp32/berry_tasmota/src/be_zigbee.c | 173 ++
.../berry_tasmota/src/be_zigbee_zb_coord.c | 214 ++
.../berry_tasmota/src/be_zigbee_zcl_frame.c | 255 ++
.../berry_tasmota/src/embedded/zigbee.be | 17 +
.../src/embedded/zigbee_zb_coord.be | 59 +
.../src/embedded/zigbee_zcl_frame.be | 50 +
tasmota/xdrv_23_zigbee_1_headers.ino | 1 -
tasmota/xdrv_23_zigbee_2_devices.ino | 2 +-
tasmota/xdrv_23_zigbee_5_converters.ino | 8 +-
tasmota/xdrv_23_zigbee_8_parsers.ino | 2 +-
tasmota/xdrv_52_3_berry_zigbee.ino | 239 ++
19 files changed, 2371 insertions(+), 1266 deletions(-)
create mode 100644 lib/libesp32/berry/generate/be_fixed_be_class_zb_coord_ntv.h
create mode 100644 lib/libesp32/berry/generate/be_fixed_be_class_zb_device.h
create mode 100644 lib/libesp32/berry/generate/be_fixed_be_class_zcl_frame_ntv.h
create mode 100644 lib/libesp32/berry/generate/be_fixed_zigbee.h
create mode 100644 lib/libesp32/berry_tasmota/src/be_zigbee.c
create mode 100644 lib/libesp32/berry_tasmota/src/be_zigbee_zb_coord.c
create mode 100644 lib/libesp32/berry_tasmota/src/be_zigbee_zcl_frame.c
create mode 100644 lib/libesp32/berry_tasmota/src/embedded/zigbee.be
create mode 100644 lib/libesp32/berry_tasmota/src/embedded/zigbee_zb_coord.be
create mode 100644 lib/libesp32/berry_tasmota/src/embedded/zigbee_zcl_frame.be
create mode 100644 tasmota/xdrv_52_3_berry_zigbee.ino
diff --git a/lib/libesp32/berry/default/be_modtab.c b/lib/libesp32/berry/default/be_modtab.c
index d0b71fc4b..8f7addd94 100644
--- a/lib/libesp32/berry/default/be_modtab.c
+++ b/lib/libesp32/berry/default/be_modtab.c
@@ -48,6 +48,9 @@ be_extern_native_module(uuid);
be_extern_native_module(animate);
be_extern_native_module(partition_core);
be_extern_native_module(crc);
+#ifdef USE_ZIGBEE
+be_extern_native_module(zigbee);
+#endif // USE_ZIGBEE
#ifdef USE_LVGL
be_extern_native_module(lv);
be_extern_native_module(lv_extra);
@@ -147,6 +150,9 @@ BERRY_LOCAL const bntvmodule* const be_module_table[] = {
#ifdef USE_WEBSERVER
&be_native_module(webserver),
#endif // USE_WEBSERVER
+#ifdef USE_ZIGBEE
+ &be_native_module(zigbee),
+#endif // USE_ZIGBEE
&be_native_module(flash),
&be_native_module(partition_core),
&be_native_module(crc),
diff --git a/lib/libesp32/berry/generate/be_const_strtab.h b/lib/libesp32/berry/generate/be_const_strtab.h
index 53f756da7..3b61ccf21 100644
--- a/lib/libesp32/berry/generate/be_const_strtab.h
+++ b/lib/libesp32/berry/generate/be_const_strtab.h
@@ -265,6 +265,7 @@ extern const bcstring be_const_str__timers;
extern const bcstring be_const_str__validate;
extern const bcstring be_const_str__write;
extern const bcstring be_const_str_a;
+extern const bcstring be_const_str_abort;
extern const bcstring be_const_str_abs;
extern const bcstring be_const_str_acos;
extern const bcstring be_const_str_active_otadata;
@@ -569,6 +570,7 @@ extern const bcstring be_const_str_imax;
extern const bcstring be_const_str_img;
extern const bcstring be_const_str_imin;
extern const bcstring be_const_str_import;
+extern const bcstring be_const_str_info;
extern const bcstring be_const_str_init;
extern const bcstring be_const_str_init_draw_arc_dsc;
extern const bcstring be_const_str_init_draw_line_dsc;
@@ -1032,5 +1034,9 @@ extern const bcstring be_const_str_y;
extern const bcstring be_const_str_y1;
extern const bcstring be_const_str_year;
extern const bcstring be_const_str_yield;
+extern const bcstring be_const_str_zb_coord_ntv;
+extern const bcstring be_const_str_zb_device;
+extern const bcstring be_const_str_zcl_frame;
+extern const bcstring be_const_str_zcl_frame_ntv;
extern const bcstring be_const_str_zero;
extern const bcstring be_const_str_zip;
diff --git a/lib/libesp32/berry/generate/be_const_strtab_def.h b/lib/libesp32/berry/generate/be_const_strtab_def.h
index f47dcf8fc..c9217e6c3 100644
--- a/lib/libesp32/berry/generate/be_const_strtab_def.h
+++ b/lib/libesp32/berry/generate/be_const_strtab_def.h
@@ -1,981 +1,983 @@
-be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str__X2F_X3Frst_X3D);
-be_define_const_str(_X0A, "\n", 252472541u, 0, 1, &be_const_str_response_append);
-be_define_const_str(_X0A_X29_X3E, "\n)>", 804061574u, 0, 3, NULL);
-be_define_const_str(_X20, " ", 621580159u, 0, 1, &be_const_str_add_cmd);
-be_define_const_str(_X20_X20, " ", 2982523533u, 0, 2, &be_const_str__X3C);
-be_define_const_str(_X20_X28, " (", 2848302581u, 0, 2, &be_const_str__X2E_X2E);
-be_define_const_str(_X21_X3D, "!=", 2428715011u, 0, 2, &be_const_str__X3Cp_X3ECurrent_X20configuration_X3A_X20_X3C_X2Fp_X3E_X3Cp_X3E_X3Cb_X3E_X25s_X3C_X2Fb_X3E_X3C_X2Fp_X3E);
-be_define_const_str(_X21_X3D_X3D, "!==", 559817114u, 0, 3, &be_const_str__X3D);
-be_define_const_str(_X22, "\"", 655135397u, 0, 1, &be_const_str_conn_cb);
-be_define_const_str(_X22_X3A, "\":", 399167565u, 0, 2, &be_const_str_seq1);
-be_define_const_str(_X23, "#", 638357778u, 0, 1, NULL);
-be_define_const_str(_X23autoexec_X2Ebat, "#autoexec.bat", 3382890497u, 0, 13, &be_const_str__X26lt_X3BError_X3A_X20apply_X20new_X20or_X20remove_X26gt_X3B);
-be_define_const_str(_X23autoexec_X2Ebe, "#autoexec.be", 1181757091u, 0, 12, &be_const_str__X3Cp_X3E_X3Cform_X20id_X3Dac_X20action_X3D_X27ac_X27_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20method_X3D_X27get_X27_X3E_X3Cbutton_X3EAuto_X2Dconfiguration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E);
-be_define_const_str(_X23display_X2Eini, "#display.ini", 182218220u, 0, 12, &be_const_str_imin);
-be_define_const_str(_X23init_X2Ebat, "#init.bat", 3297595077u, 0, 9, &be_const_str_draw_line_dsc);
+be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_event_cb);
+be_define_const_str(_X0A, "\n", 252472541u, 0, 1, &be_const_str__X7B);
+be_define_const_str(_X0A_X29_X3E, "\n)>", 804061574u, 0, 3, &be_const_str_tasmota);
+be_define_const_str(_X20, " ", 621580159u, 0, 1, &be_const_str_settings);
+be_define_const_str(_X20_X20, " ", 2982523533u, 0, 2, &be_const_str_EVENT_DRAW_MAIN);
+be_define_const_str(_X20_X28, " (", 2848302581u, 0, 2, &be_const_str_chars_in_string);
+be_define_const_str(_X21_X3D, "!=", 2428715011u, 0, 2, &be_const_str_dac_voltage);
+be_define_const_str(_X21_X3D_X3D, "!==", 559817114u, 0, 3, &be_const_str_depower);
+be_define_const_str(_X22, "\"", 655135397u, 0, 1, &be_const_str_finish);
+be_define_const_str(_X22_X3A, "\":", 399167565u, 0, 2, &be_const_str_gamma10);
+be_define_const_str(_X23, "#", 638357778u, 0, 1, &be_const_str_stop_iteration);
+be_define_const_str(_X23autoexec_X2Ebat, "#autoexec.bat", 3382890497u, 0, 13, &be_const_str_content_send);
+be_define_const_str(_X23autoexec_X2Ebe, "#autoexec.be", 1181757091u, 0, 12, &be_const_str_duration);
+be_define_const_str(_X23display_X2Eini, "#display.ini", 182218220u, 0, 12, &be_const_str_begin);
+be_define_const_str(_X23init_X2Ebat, "#init.bat", 3297595077u, 0, 9, &be_const_str_EBEBFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
be_define_const_str(_X23preinit_X2Ebe, "#preinit.be", 687035716u, 0, 11, NULL);
-be_define_const_str(_X25, "%", 537692064u, 0, 1, &be_const_str_cb_do_nothing);
-be_define_const_str(_X2502d_X25s_X2502d, "%02d%s%02d", 1587999717u, 0, 10, &be_const_str_crc);
-be_define_const_str(_X2504d_X2D_X2502d_X2D_X2502dT_X2502d_X3A_X2502d_X3A_X2502d, "%04d-%02d-%02dT%02d:%02d:%02d", 3425528601u, 0, 29, NULL);
-be_define_const_str(_X2508x_X2D_X2504x_X2D_X2504x_X2D_X2504x_X2D_X2504x_X2508x, "%08x-%04x-%04x-%04x-%04x%08x", 1670063141u, 0, 28, NULL);
-be_define_const_str(_X25s_X2Eautoconf, "%s.autoconf", 3560383524u, 0, 11, &be_const_str_set_huesat);
-be_define_const_str(_X26lt_X3BError_X3A_X20apply_X20new_X20or_X20remove_X26gt_X3B, "<Error: apply new or remove>", 2855507949u, 0, 34, &be_const_str_set_chr);
-be_define_const_str(_X26lt_X3BNone_X26gt_X3B, "<None>", 2602165498u, 0, 12, &be_const_str_EVENT_DRAW_PART_BEGIN);
-be_define_const_str(_X27_X20_X2D_X20, "' - ", 3420378487u, 0, 4, &be_const_str_valuer_error);
-be_define_const_str(_X28_X29, "()", 685372826u, 0, 2, &be_const_str_color);
-be_define_const_str(_X29, ")", 739023492u, 0, 1, &be_const_str_delay);
-be_define_const_str(_X2A, "*", 789356349u, 0, 1, NULL);
-be_define_const_str(_X2B, "+", 772578730u, 0, 1, &be_const_str_decrypt);
-be_define_const_str(_X2C, ",", 688690635u, 0, 1, &be_const_str_begin_multicast);
-be_define_const_str(_X2C_X22AXP192_X22_X3A_X7B_X22VBusVoltage_X22_X3A_X25_X2E3f_X2C_X22VBusCurrent_X22_X3A_X25_X2E1f_X2C_X22BattVoltage_X22_X3A_X25_X2E3f_X2C_X22BattCurrent_X22_X3A_X25_X2E1f_X2C_X22Temperature_X22_X3A_X25_X2E1f_X7D, ",\"AXP192\":{\"VBusVoltage\":%.3f,\"VBusCurrent\":%.1f,\"BattVoltage\":%.3f,\"BattCurrent\":%.1f,\"Temperature\":%.1f}", 2598755376u, 0, 106, &be_const_str_coredump);
-be_define_const_str(_X2D, "-", 671913016u, 0, 1, &be_const_str_CFG_X3A_X20running_X20);
-be_define_const_str(_X2D_X2A, "-*", 499980374u, 0, 2, &be_const_str_classname);
-be_define_const_str(_X2D_X2D_X3A_X2D_X2D, "--:--", 1370615441u, 0, 5, &be_const_str__available);
-be_define_const_str(_X2E, ".", 722245873u, 0, 1, &be_const_str_load);
-be_define_const_str(_X2E_X2E, "..", 2748622605u, 0, 2, NULL);
-be_define_const_str(_X2Eautoconf, ".autoconf", 2524679088u, 0, 9, NULL);
-be_define_const_str(_X2Ebe, ".be", 1325797348u, 0, 3, &be_const_str_COLOR_BLACK);
-be_define_const_str(_X2Ebec, ".bec", 3985273221u, 0, 4, &be_const_str_member);
-be_define_const_str(_X2Elen, ".len", 850842136u, 0, 4, &be_const_str_I2C_Driver);
-be_define_const_str(_X2Ep, ".p", 1171526419u, 0, 2, &be_const_str_SERIAL_8N1);
-be_define_const_str(_X2Ep1, ".p1", 249175686u, 0, 3, &be_const_str_codedump);
-be_define_const_str(_X2Ep2, ".p2", 232398067u, 0, 3, &be_const_str_MAX_RMT);
-be_define_const_str(_X2Esize, ".size", 1965188224u, 0, 5, &be_const_str_get_log);
-be_define_const_str(_X2Etapp, ".tapp", 1363391594u, 0, 5, &be_const_str_battery_present);
-be_define_const_str(_X2Ew, ".w", 1255414514u, 0, 2, NULL);
-be_define_const_str(_X2F, "/", 705468254u, 0, 1, &be_const_str_ota_max);
-be_define_const_str(_X2F_X2Eautoconf, "/.autoconf", 2212074393u, 0, 10, NULL);
-be_define_const_str(_X2F_X3Frst_X3D, "/?rst=", 580074707u, 0, 6, &be_const_str_cb_event_closure);
-be_define_const_str(_X2Fac, "/ac", 3904651978u, 0, 3, NULL);
-be_define_const_str(_X2Flights_X2F, "/lights/", 2370247908u, 0, 8, &be_const_str_Tasmota);
-be_define_const_str(_X2Fstate_X2F, "/state/", 4226179876u, 0, 7, &be_const_str_local);
-be_define_const_str(00, "00", 569209421u, 0, 2, &be_const_str_consume_silence);
-be_define_const_str(0x_X2502X, "0x%02X", 2626549866u, 0, 6, &be_const_str__X5D);
-be_define_const_str(_X3A, ":", 1057798253u, 0, 1, &be_const_str_BRY_X3A_X20could_X20not_X20save_X20compiled_X20file_X20_X25s_X20_X28_X25s_X29);
-be_define_const_str(_X3C, "<", 957132539u, 0, 1, &be_const_str_get_image_size);
-be_define_const_str(_X3C_X2Fform_X3E_X3C_X2Fp_X3E, "
", 3546571739u, 0, 11, &be_const_str_SERIAL_5E1);
-be_define_const_str(_X3C_X2Fselect_X3E_X3Cp_X3E_X3C_X2Fp_X3E, "", 1863865923u, 0, 16, &be_const_str_read24);
-be_define_const_str(_X3C_X3D, "<=", 2499223986u, 0, 2, &be_const_str_switch_factory);
-be_define_const_str(_X3Cbutton_X20name_X3D_X27reapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3ERe_X2Dapply_X20current_X20configuration_X3C_X2Fbutton_X3E, "", 3147934216u, 0, 82, &be_const_str_adv_watch);
-be_define_const_str(_X3Cbutton_X20name_X3D_X27zipapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3EApply_X20configuration_X3C_X2Fbutton_X3E, "", 1205771629u, 0, 72, &be_const_str_hue);
-be_define_const_str(_X3Cfieldset_X3E_X3Cstyle_X3E_X2Ebdis_X7Bbackground_X3A_X23888_X3B_X7D_X2Ebdis_X3Ahover_X7Bbackground_X3A_X23888_X3B_X7D_X3C_X2Fstyle_X3E, "", 2052843416u, 0, 25, &be_const_str__t);
+be_define_const_str(_X25, "%", 537692064u, 0, 1, &be_const_str_rule);
+be_define_const_str(_X2502d_X25s_X2502d, "%02d%s%02d", 1587999717u, 0, 10, &be_const_str__timers);
+be_define_const_str(_X2504d_X2D_X2502d_X2D_X2502dT_X2502d_X3A_X2502d_X3A_X2502d, "%04d-%02d-%02dT%02d:%02d:%02d", 3425528601u, 0, 29, &be_const_str_count);
+be_define_const_str(_X2508x_X2D_X2504x_X2D_X2504x_X2D_X2504x_X2D_X2504x_X2508x, "%08x-%04x-%04x-%04x-%04x%08x", 1670063141u, 0, 28, &be_const_str_WS2812_GRB);
+be_define_const_str(_X25s_X2Eautoconf, "%s.autoconf", 3560383524u, 0, 11, &be_const_str_delay);
+be_define_const_str(_X26lt_X3BError_X3A_X20apply_X20new_X20or_X20remove_X26gt_X3B, "<Error: apply new or remove>", 2855507949u, 0, 34, &be_const_str_get_image_size);
+be_define_const_str(_X26lt_X3BNone_X26gt_X3B, "<None>", 2602165498u, 0, 12, &be_const_str_data);
+be_define_const_str(_X27_X20_X2D_X20, "' - ", 3420378487u, 0, 4, &be_const_str_set_rgb);
+be_define_const_str(_X28_X29, "()", 685372826u, 0, 2, NULL);
+be_define_const_str(_X29, ")", 739023492u, 0, 1, &be_const_str_AudioOutputI2S);
+be_define_const_str(_X2A, "*", 789356349u, 0, 1, &be_const_str_lv_wifi_arcs_icon);
+be_define_const_str(_X2B, "+", 772578730u, 0, 1, &be_const_str_BRY_X3A_X20failed_X20to_X20run_X20compiled_X20code_X20_X27_X25s_X27_X20_X2D_X20_X25s);
+be_define_const_str(_X2C, ",", 688690635u, 0, 1, &be_const_str_AudioGeneratorMP3);
+be_define_const_str(_X2C_X22AXP192_X22_X3A_X7B_X22VBusVoltage_X22_X3A_X25_X2E3f_X2C_X22VBusCurrent_X22_X3A_X25_X2E1f_X2C_X22BattVoltage_X22_X3A_X25_X2E3f_X2C_X22BattCurrent_X22_X3A_X25_X2E1f_X2C_X22Temperature_X22_X3A_X25_X2E1f_X7D, ",\"AXP192\":{\"VBusVoltage\":%.3f,\"VBusCurrent\":%.1f,\"BattVoltage\":%.3f,\"BattCurrent\":%.1f,\"Temperature\":%.1f}", 2598755376u, 0, 106, &be_const_str_init);
+be_define_const_str(_X2D, "-", 671913016u, 0, 1, &be_const_str_nvs);
+be_define_const_str(_X2D_X2A, "-*", 499980374u, 0, 2, &be_const_str_coord_arr);
+be_define_const_str(_X2D_X2D_X3A_X2D_X2D, "--:--", 1370615441u, 0, 5, &be_const_str_DIMMER);
+be_define_const_str(_X2E, ".", 722245873u, 0, 1, &be_const_str_draw_line_dsc_init);
+be_define_const_str(_X2E_X2E, "..", 2748622605u, 0, 2, &be_const_str_log10);
+be_define_const_str(_X2Eautoconf, ".autoconf", 2524679088u, 0, 9, &be_const_str_COLOR_BLACK);
+be_define_const_str(_X2Ebe, ".be", 1325797348u, 0, 3, &be_const_str_set_style_text_color);
+be_define_const_str(_X2Ebec, ".bec", 3985273221u, 0, 4, &be_const_str_allocated);
+be_define_const_str(_X2Elen, ".len", 850842136u, 0, 4, NULL);
+be_define_const_str(_X2Ep, ".p", 1171526419u, 0, 2, &be_const_str_get_vbus_current);
+be_define_const_str(_X2Ep1, ".p1", 249175686u, 0, 3, &be_const_str_return_X20code_X3D_X25i);
+be_define_const_str(_X2Ep2, ".p2", 232398067u, 0, 3, &be_const_str_collect);
+be_define_const_str(_X2Esize, ".size", 1965188224u, 0, 5, &be_const_str_line_dsc);
+be_define_const_str(_X2Etapp, ".tapp", 1363391594u, 0, 5, &be_const_str_WS2812);
+be_define_const_str(_X2Ew, ".w", 1255414514u, 0, 2, &be_const_str_can_show);
+be_define_const_str(_X2F, "/", 705468254u, 0, 1, &be_const_str__anonymous_);
+be_define_const_str(_X2F_X2Eautoconf, "/.autoconf", 2212074393u, 0, 10, &be_const_str_obj);
+be_define_const_str(_X2F_X3Frst_X3D, "/?rst=", 580074707u, 0, 6, &be_const_str__X3Clegend_X3E_X3Cb_X20title_X3D_X27Autoconfiguration_X27_X3E_X26nbsp_X3BCurrent_X20auto_X2Dconfiguration_X3C_X2Fb_X3E_X3C_X2Flegend_X3E);
+be_define_const_str(_X2Fac, "/ac", 3904651978u, 0, 3, &be_const_str__global_def);
+be_define_const_str(_X2Flights_X2F, "/lights/", 2370247908u, 0, 8, &be_const_str_time_dump);
+be_define_const_str(_X2Fstate_X2F, "/state/", 4226179876u, 0, 7, &be_const_str__persist_X2Ejson);
+be_define_const_str(00, "00", 569209421u, 0, 2, &be_const_str_addr);
+be_define_const_str(0x_X2502X, "0x%02X", 2626549866u, 0, 6, &be_const_str_draw_ctx);
+be_define_const_str(_X3A, ":", 1057798253u, 0, 1, &be_const_str__X3C_X2Fselect_X3E_X3Cp_X3E_X3C_X2Fp_X3E);
+be_define_const_str(_X3C, "<", 957132539u, 0, 1, &be_const_str_set_channels);
+be_define_const_str(_X3C_X2Fform_X3E_X3C_X2Fp_X3E, "", 3546571739u, 0, 11, NULL);
+be_define_const_str(_X3C_X2Fselect_X3E_X3Cp_X3E_X3C_X2Fp_X3E, "", 1863865923u, 0, 16, &be_const_str_lv_extra);
+be_define_const_str(_X3C_X3D, "<=", 2499223986u, 0, 2, &be_const_str_AudioGenerator);
+be_define_const_str(_X3Cbutton_X20name_X3D_X27reapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3ERe_X2Dapply_X20current_X20configuration_X3C_X2Fbutton_X3E, "", 3147934216u, 0, 82, &be_const_str_lv_);
+be_define_const_str(_X3Cbutton_X20name_X3D_X27zipapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3EApply_X20configuration_X3C_X2Fbutton_X3E, "", 1205771629u, 0, 72, NULL);
+be_define_const_str(_X3Cfieldset_X3E_X3Cstyle_X3E_X2Ebdis_X7Bbackground_X3A_X23888_X3B_X7D_X2Ebdis_X3Ahover_X7Bbackground_X3A_X23888_X3B_X7D_X3C_X2Fstyle_X3E, "", 2052843416u, 0, 25, &be_const_str_rtc);
be_define_const_str(_X3Cp_X3E_X3Cform_X20id_X3Dac_X20action_X3D_X27ac_X27_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20method_X3D_X27get_X27_X3E_X3Cbutton_X3EAuto_X2Dconfiguration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E, "", 2058443583u, 0, 110, NULL);
-be_define_const_str(_X3Cp_X3E_X3Cform_X20id_X3Dreapply_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27_X2Fac_X27_X20method_X3D_X27post_X27_X20, "