diff --git a/addons/sys_antenna/CfgAcreComponents.hpp b/addons/sys_antenna/CfgAcreComponents.hpp
index 629e9d6c7..9d45d06d0 100644
--- a/addons/sys_antenna/CfgAcreComponents.hpp
+++ b/addons/sys_antenna/CfgAcreComponents.hpp
@@ -142,4 +142,22 @@ class CfgAcreComponents {
binaryGainFile = QPATHTOF(binary\na-701_gain.aba);
compatibleRadios[] = {"ACRE_BF888S"};
};
+
+ class ACRE_4FT_AERIAL_ROD: ACRE_BaseAntenna {
+ name = "4ft Aerial Rod";
+ shortName = "4ft Aerial Rod";
+ connector = ACRE_CONNECTOR_ROD;
+ height = 1.22;
+ binaryGainFile = QPATHTOF(binary\AerialRod_4ft_gain.aba);
+ compatibleRadios[] = {"ACRE_WS38"};
+ };
+
+ class ACRE_12FT_AERIAL_ROD: ACRE_BaseAntenna {
+ name = "12ft Aerial Rod";
+ shortName = "12ft Aerial Rod";
+ connector = ACRE_CONNECTOR_ROD;
+ height = 3.66;
+ binaryGainFile = QPATHTOF(binary\AerialRod_12ft_gain.aba);
+ compatibleRadios[] = {"ACRE_WS38"};
+ };
};
diff --git a/addons/sys_antenna/binary/AerialRod_12ft_gain.aba b/addons/sys_antenna/binary/AerialRod_12ft_gain.aba
new file mode 100644
index 000000000..ea6243dfc
Binary files /dev/null and b/addons/sys_antenna/binary/AerialRod_12ft_gain.aba differ
diff --git a/addons/sys_antenna/binary/AerialRod_4ft_gain.aba b/addons/sys_antenna/binary/AerialRod_4ft_gain.aba
new file mode 100644
index 000000000..ad8be36fd
Binary files /dev/null and b/addons/sys_antenna/binary/AerialRod_4ft_gain.aba differ
diff --git a/addons/sys_components/script_acre_component_defines.hpp b/addons/sys_components/script_acre_component_defines.hpp
index e428a0c81..ff4c002ff 100644
--- a/addons/sys_components/script_acre_component_defines.hpp
+++ b/addons/sys_components/script_acre_component_defines.hpp
@@ -16,6 +16,7 @@
#define ACRE_CONNECTOR_CONN_MC2127 4
#define ACRE_CONNECTOR_3_8 5
#define ACRE_CONNECTOR_SMA 6
+#define ACRE_CONNECTOR_ROD 7
// Racks
#define ACRE_CONNECTOR_CONN_32PIN 6 // 32 Pin is the 152 side connector.
@@ -23,3 +24,4 @@
#define ACRE_CONNECTOR_CONN_18PIN 8 // 18pin for the 148 Side connector
#define ACRE_CONNECTOR_CONN_57PIN 9 // 57pin is the SEM70/80/90 interconnecting connector
#define ACRE_CONNECTOR_CONN_14PIN 10 // 14 pin CX-4655
+#define ACRE_CONNECTOR_CONN_12PIN 11 // 12 pin for WS-38, interconnecting Wireless Set No. 19 in a vehicle and Wireless Set No. 38
diff --git a/addons/sys_gsa/CfgVehicles.hpp b/addons/sys_gsa/CfgVehicles.hpp
index ecb21b903..3b780ca23 100644
--- a/addons/sys_gsa/CfgVehicles.hpp
+++ b/addons/sys_gsa/CfgVehicles.hpp
@@ -20,6 +20,14 @@ class CfgVehicles {
showDisabled = 0;
icon = QPATHTOF(data\vhf30108\ui\icon_antenna_ca.paa);
};
+
+ class GVAR(placeAntenna) {
+ displayName = CSTRING(placeAntenna);
+ condition = QUOTE([ARR_2(_player,'ACRE_12FT_ANTENNA')] call EFUNC(sys_core,hasItem));
+ statement = QUOTE([ARR_3(_player,'ACRE_12FT_ANTENNA',false)] call FUNC(deploy));
+ showDisabled = 0;
+ icon = QPATHTOF(data\vhf30108\ui\icon_antenna_ca.paa);
+ };
};
};
};
@@ -180,4 +188,75 @@ class CfgVehicles {
};
};
};
+
+ class ws38_12ft_antenna: House {
+ class EventHandlers {
+ class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
+ };
+
+ scope = 2;
+ scopeCurator = 2;
+ scopeArsenal = 2;
+ displayName = "ACRE WS38 12 feet antenna";
+ model = QPATHTOEF(sys_ws38,data\Models\ws38_radio_antenna.p3d);
+ icon = QPATHTOF(data\vhf30108\ui\icon_antenna_ca.paa);
+ editorPreview = QPATHTOF(data\ws38_antenna\ui\12ft_antenna.jpg);
+ vehicleClass = "Items";
+ ace_dragging_canCarry = 1;
+ ace_dragging_carryPosition[] = {-0.2, 1, 1.3};
+ ace_dragging_carryDirection = 0;
+ ace_dragging_ignoreWeightCarry = 1;
+
+ class AcreComponents {
+ componentName = "ACRE_12FT_AERIAL_ROD";
+ mountedAntenna = "";
+ mastMount[] = {};
+ };
+
+ class ACE_Actions {
+ class ACE_MainActions {
+ selection = "interaction_point";
+ distance = 10;
+ condition = "(true)";
+ position = "[0.2,0.0,-1.5]";
+
+ class ACRE_pickup {
+ selection = "";
+ displayName = CSTRING(pickUp);
+ distance = 10;
+ condition = "true";
+ statement = QUOTE([ARR_2(_player,_target)] call DFUNC(pickUp));
+ showDisabled = 0;
+ exceptions[] = {};
+ priority = 5;
+ //icon = "\idi\acre\addons\ace_interact\data\icons\antenna.paa";
+ };
+
+ class ACRE_connect {
+ selection = "";
+ displayName = CSTRING(connect);
+ distance = 10;
+ condition = QUOTE(!([ARR_2(_player,_target)] call DFUNC(isAntennaConnected)));
+ statement = QUOTE(true);
+ insertChildren = QUOTE([ARR_2(_player,_target)] call DFUNC(connectChildrenActions));
+ showDisabled = 0;
+ exceptions[] = {};
+ priority = 5;
+ icon = "\idi\acre\addons\ace_interact\data\icons\antenna.paa";
+ };
+
+ class ACRE_disconnect {
+ selection = "";
+ displayName = CSTRING(disconnect);
+ distance = 10;
+ condition = QUOTE([ARR_2(_player,_target)] call DFUNC(isAntennaConnected));
+ statement = QUOTE([ARR_2(_player,_target)] call DFUNC(disconnect));
+ showDisabled = 0;
+ exceptions[] = {};
+ priority = 5;
+ icon = "\idi\acre\addons\ace_interact\data\icons\antenna.paa";
+ };
+ };
+ };
+ };
};
diff --git a/addons/sys_gsa/CfgWeapons.hpp b/addons/sys_gsa/CfgWeapons.hpp
index 73a0582ec..7b6f008df 100644
--- a/addons/sys_gsa/CfgWeapons.hpp
+++ b/addons/sys_gsa/CfgWeapons.hpp
@@ -31,4 +31,17 @@ class CfgWeapons {
mass = 100;
};
};
+
+ class ACRE_12FT_ANTENNA: CBA_MiscItem {
+ author[] = {"S. Spartan"};
+ scope = 2;
+ displayName = "WS38 12FT Antenna";
+ descriptionShort = CSTRING(WS3812ftAntenna_description);
+ model = QPATHTOEF(sys_ws38,data\Models\ws38_aerial_bag.p3d);
+ picture = QPATHTOF(data\ws38_antenna\ui\icon_bag.paa);
+
+ class ItemInfo: CBA_MiscItem_ItemInfo {
+ mass = 30;
+ };
+ };
};
diff --git a/addons/sys_gsa/data/ws38_antenna/icon_bag.png b/addons/sys_gsa/data/ws38_antenna/icon_bag.png
new file mode 100644
index 000000000..70cd08639
Binary files /dev/null and b/addons/sys_gsa/data/ws38_antenna/icon_bag.png differ
diff --git a/addons/sys_gsa/data/ws38_antenna/ui/12ft_antenna.jpg b/addons/sys_gsa/data/ws38_antenna/ui/12ft_antenna.jpg
new file mode 100644
index 000000000..7ae09fc9f
Binary files /dev/null and b/addons/sys_gsa/data/ws38_antenna/ui/12ft_antenna.jpg differ
diff --git a/addons/sys_gsa/data/ws38_antenna/ui/icon_bag.paa b/addons/sys_gsa/data/ws38_antenna/ui/icon_bag.paa
new file mode 100644
index 000000000..12ab1c758
Binary files /dev/null and b/addons/sys_gsa/data/ws38_antenna/ui/icon_bag.paa differ
diff --git a/addons/sys_gsa/fnc_deploy.sqf b/addons/sys_gsa/fnc_deploy.sqf
index ac2e63faf..6b7906ffd 100644
--- a/addons/sys_gsa/fnc_deploy.sqf
+++ b/addons/sys_gsa/fnc_deploy.sqf
@@ -32,6 +32,10 @@ switch (_gsaItem) do {
_gsa = "vhf30108spike";
_canDeploy = true;
};
+ case "ACRE_12FT_ANTENNA" : {
+ _gsa = "ws38_12ft_antenna";
+ _canDeploy = true;
+ };
};
if (_canDeploy) then {
diff --git a/addons/sys_gsa/fnc_pickUp.sqf b/addons/sys_gsa/fnc_pickUp.sqf
index cbeac439e..4a7592668 100644
--- a/addons/sys_gsa/fnc_pickUp.sqf
+++ b/addons/sys_gsa/fnc_pickUp.sqf
@@ -56,6 +56,12 @@ switch (_classname) do {
};
};
};
+ case "ws38_12ft_antenna": {
+ _item = "ACRE_12FT_ANTENNA";
+ if (_unit canAdd _item) then {
+ _canDelete = true;
+ };
+ };
};
if (_canDelete) then {
diff --git a/addons/sys_gsa/stringtable.xml b/addons/sys_gsa/stringtable.xml
index 6ef23bb37..f2e97b7bc 100644
--- a/addons/sys_gsa/stringtable.xml
+++ b/addons/sys_gsa/stringtable.xml
@@ -66,6 +66,10 @@
Cravar antena com mastro
Spike'ı Sopa İle Koy
+
+ Place Antenna
+ Antenne setzen
+
Pick up
Recoger
@@ -183,6 +187,10 @@
Mastro da antena VHF30108
VHF30108 Yükseltici Çubuğu
+
+ 12ft Antenna for Wireless Set No. 38 Mk. II
+ 12 Fuß Antenne für Wireless Set No. 38 Mk. II
+
Inventory full
Inventario lleno
diff --git a/addons/sys_rack/CfgAcreRacks.hpp b/addons/sys_rack/CfgAcreRacks.hpp
index a9b97fa0e..29bdef172 100644
--- a/addons/sys_rack/CfgAcreRacks.hpp
+++ b/addons/sys_rack/CfgAcreRacks.hpp
@@ -182,4 +182,41 @@ class CfgAcreComponents {
};
};
+ class ACRE_WS19 : ACRE_BaseRack {
+ name = "Wireless Set No. 19";
+
+ connectors[] = {
+ {"Antenna", ACRE_CONNECTOR_ROD},
+ {"Audio In", ACRE_CONNECTOR_U_283},
+ {"Audio Out", ACRE_CONNECTOR_U_283},
+ {"Power In", ACRE_CONNECTOR_U_283},
+ {"Radio", ACRE_CONNECTOR_CONN_12PIN}
+ };
+ defaultComponents[] = {
+ {0, "ACRE_12FT_AERIAL_ROD"}
+ };
+ class Interfaces {
+ class CfgAcreDataInterface {
+ getState = QFUNC(getState);
+ setState = QFUNC(setState);
+ handleComponentMessage = QEFUNC(sys_data,noApiSystemFunction);
+
+ initializeComponent = QFUNC(initializeRack);
+
+ attachComponent = QFUNC(attachComponent);
+ detachComponent = QEFUNC(sys_data,noApiSystemFunction);
+ mountRadio = QFUNC(ws19MountRadio);
+ unmountRadio = QFUNC(ws19UnmountRadio);
+ mountableRadio = QFUNC(ws19MountableRadio);
+ };
+ };
+ class InterfaceClasses {
+ CfgAcreDataInterface = "DefaultRackInterface";
+ CfgAcreInteractInterface = "DefaultRadioInterface";
+ CfgAcreTransmissionInterface = "DefaultRadioInterface";
+ CfgAcrePhysicalInterface = "DefaultRadioInterface";
+ };
+ };
+
+
};
diff --git a/addons/sys_rack/CfgVehicles.hpp b/addons/sys_rack/CfgVehicles.hpp
index dd83ed1c1..e6041d8f6 100644
--- a/addons/sys_rack/CfgVehicles.hpp
+++ b/addons/sys_rack/CfgVehicles.hpp
@@ -26,6 +26,11 @@ class CfgVehicles {
};
RADIO_ID_LIST(ACRE_SEM90)
+ class ACRE_WS19 : ACRE_BaseRack {
+ displayName = "Wireless Set No. 19";
+ };
+ RADIO_ID_LIST(ACRE_WS19)
+
// Define which vehicles have racks.
class All {
class AcreRacks {};
diff --git a/addons/sys_rack/XEH_PREP.hpp b/addons/sys_rack/XEH_PREP.hpp
index 1c770e402..367b36d06 100644
--- a/addons/sys_rack/XEH_PREP.hpp
+++ b/addons/sys_rack/XEH_PREP.hpp
@@ -46,3 +46,4 @@ PREP_FOLDER(vrc103);
PREP_FOLDER(vrc110);
PREP_FOLDER(vrc111);
PREP_FOLDER(sem90);
+PREP_FOLDER(ws19);
diff --git a/addons/sys_rack/ws19/__PREP__.sqf b/addons/sys_rack/ws19/__PREP__.sqf
new file mode 100644
index 000000000..ea42f15ae
--- /dev/null
+++ b/addons/sys_rack/ws19/__PREP__.sqf
@@ -0,0 +1,7 @@
+#include "..\script_component.hpp"
+
+TRACE_1("enter", _this);
+
+PREP_MODULE(ws19,ws19MountRadio);
+PREP_MODULE(ws19,ws19UnmountRadio);
+PREP_MODULE(ws19,ws19MountableRadio);
diff --git a/addons/sys_rack/ws19/fnc_ws19MountRadio.sqf b/addons/sys_rack/ws19/fnc_ws19MountRadio.sqf
new file mode 100644
index 000000000..a242e24ce
--- /dev/null
+++ b/addons/sys_rack/ws19/fnc_ws19MountRadio.sqf
@@ -0,0 +1,27 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Mount radio classname
+ *
+ * Arguments:
+ * 0: Target Vehicle
+
+ Radio Mode Selector
+
Radio off
Funkgerät aus
@@ -205,6 +208,9 @@
Canal atual
現在のチャンネル
+
+ Change Frequency
+
Current Channel Block
Aktueller Kanalblock
diff --git a/addons/sys_sounds/CfgAcreSounds.hpp b/addons/sys_sounds/CfgAcreSounds.hpp
index d1c65bf2c..7c75519b5 100644
--- a/addons/sys_sounds/CfgAcreSounds.hpp
+++ b/addons/sys_sounds/CfgAcreSounds.hpp
@@ -111,5 +111,14 @@ class CfgAcreSounds {
sound = "\idi\acre\addons\sys_sounds\sounds\baofeng\16.b64";
};
+ class Acre_WS38_start {
+ sound = QPATHTOF(sounds\WS38\start.b64);
+ };
+
+ class Acre_WS38_end {
+ sound = QPATHTOF(sounds\WS38\end.b64);
+ };
+
+
};
diff --git a/addons/sys_sounds/sounds/WS38/end.b64 b/addons/sys_sounds/sounds/WS38/end.b64
new file mode 100644
index 000000000..7e2a43a82
--- /dev/null
+++ b/addons/sys_sounds/sounds/WS38/end.b64
@@ -0,0 +1,33 @@
+ACRE_B64_FILE = [
+ "UklGRniwAABXQVZFZm10IBAAAAABAAEAgLsAAAB3AQACABAAZGF0YVSwAAABAAQABQACAP//AgD+/wcABAAGAAMAAgABAP7//f8FAP//AQD7/////v8AAAAAAQADAP7/AgACAAEABAD//wQA+/8CAPz//v8CAAYAAQD///z/AAAGAAAAAAAAAAMABAACAAcAAAD//wEA//8AAAAA//8CAP//AQD///r/AQD5//3///8CAAIAAgAEAP7/AwD5/wUA/P8DAP3/AAD//wQAAwAAAAIA/v8BAPz/AQD//wIA/P8AAP/////+//7//P////r/AQAAAAMA//8AAAEA/v8BAAEAAwD+/////f/7/wEA+f8CAPz/AQABAAMA/P/+//r//v///wMABgAEAAUAAQD9/wMA+v/9//v/BQACAAYABwAAAAQA/v/7//3//v///wMAAgD///7//P/+//j//P/7/wcA/v8FAAMAAwABAP7/+//9//3//f/9/wEA/////////v8DAPv/AgABAAMABAD//wAA+f8CAP3/AgAAAAEABQD9//r/+//7//7//v/+/wIAAwACAAEA+//7//z//P8BAAIABgAEAAEAAQD8//3/BAAAAAQA/f8BAP//AgD+//7//f8CAAIABgAHAAAAAwD5//3//v/+////BQABAAMAAwD8/wEA+f8AAPj//f/8////AQACAP7//v////v/AwD+/wEAAQD//wQA//8AAPv//////wMA/v8CAAIAAgACAAIABgAGAAQAAQD9/wMA//8FAAEA//8BAPz/AQD0//v/+P/8/////v8FAP3/AQD7/wIA/P8BAPv/AgADAAMABAD9/wMA/f8CAPr/AQABAAcABAAFAAMAAgD8/wAA/P8AAAIABAABAAQA/P/8//n/+v/8/wQAAgAGAAYABQADAAAA///9/wAA+v8EAP3/AgABAAEAAgD7/wAA+/8BAPv/AgD//wQA///8//3/+//9//n//f/6/wEA/P8FAAEABgAFAAIABAAAAAQA/f////z/AwAAAAIA+v8AAPX/AQD//wIA+v8FAP7/BwACAAEAAwD6/wQA/v8CAPv//P/8/////P8AAPr/BAD9/wEA+/////7/BAD9/wUA/f8FAPz//f/8//j//v/8/wAABQACAAUAAQD9//v/+P/9//z//v8FAAAACwD9/wMA/v8BAPz/AAD//wcABQAHAP7/AwD+//3//P/6//z/AAADAAAA+/////v//P///wAAAwABAP7/AgD7/wMA+/8CAPz//v/9//3/BQACAP3/AAD9/wQAAAABAP//AAADAP7/AAD7//7//v8BAP7//P////j/AAD8//7////+/wIAAQADAAQAAAAGAPv//v/8/////P/+/wUAAQAAAP3//P8EAPz/AQAAAAEAAgACAAEA/f////3/AAAAAAUABAADAAUA+v8DAPz/AAADAAAABgABAAcA/v8BAP3/AAD5//n//v///wIA/v8CAP3//v///wMAAAAAAP7/AAD///z/AgACAAIAAQD8/wIA//8DAP3/BgD8/wQAAQACAAEAAQAEAP7/AgD+/wUA///+/wAA//8FAAAABgADAAAAAgABAP7/AAD8/wYAAwAGAAYABQACAAEAAgADAAEAAQADAAEABAACAAQA/////wAA//8BAAAA/v8DAAAA/f8AAPz/AQD///z/BAADAAMA/v/7//z/+f8BAPn/AQD9/wQABQACAAYA/v/+//r///8AAAcA//8EAAEA/f8CAP7/BAADAAIABwD9/wYA//8CAAEAAQADAP//AwABAAIA/f/6//n/+v/+//7/AgACAAUABAABAPz/AAD9/wUAAgADAP3/AgABAAIA/v/7/////f8BAAMAAgAAAPn////+//z//P/+/wIABAAJAP//BQD2/wEA+/////3/AgACAP//AgAAAAMA+P/6//3//P8BAPr/BAAAAAYA//8DAAIA/P/+//z/AgD//wQAAAAFAPz/+v/8//3//f/+/wAA/v8DAAMAAQACAPz/",
+ "//8AAP7//P8AAP3//v///wEABgAGAAYAAwD9//v//f/9/wMA/v8EAAEABgAFAAMA///8/wIAAgABAAEA/////wAA/v/4//z/+f/7//f///8CAAcAAgAEAAIA/v8AAP////8CAAAAAQD//wMAAQD+//7///////f/AgD7/////f/7//3//v8BAAMA/f8EAAEABAACAAMA//8BAP///f8AAAEABQACAAIAAAADAAAA+//+//r/AAD+//7/BAACAAUAAAD+//3//P8AAAEAAgAEAAQAAgD//wAA+//9//n/AAABAAMABQACAAIA/v8CAP3/AQAAAAAABAAAAP//+v8FAAAAAwD+/wEAAgADAAIA//////7//P/+//7/BgACAAUABAD8/wQA9/8AAPr/AAD//wIAAQAIAAAABAD7//v/+/8AAP//BQD//wEA/f8BAAEABQD7/wAAAAD9/wIA/P8AAP//AQAGAP7/AwACAAIA/v8BAAEAAAD//wEA/v/+//z//f/+/wQAAQADAAIA+/8BAPn/AAD7/wEAAQD+/wEAAgACAAEA/f/6//n/+f/+/wIAAgACAP3////+/wAA/P///wAAAgACAAMA//8GAAYAAAAGAP7/AQD8//j/AAD8/wcAAQAEAP///v/7//v/BQABAAQABgAFAAQA/f/7//n//f/+//v//v8AAAcABAAIAPn/AAD4//z/AQD//woAAwAIAP//AAD7//3/+//7//3/AAABAAQAAwAEAP//AQD7////AwACAP3/AQAAAAQA+/8AAAIAAQD//wIAAwAAAAAA+P/9//3/AAD//wIA/v8DAP3//v/+/wIAAAABAAEAAAACAP3//v/7//z/+/8AAAEABAABAAAA+/8AAP//AwD//wgAAgAGAAMABAD//wIA+/8AAPv/BAABAAYA//8GAAUABgAGAAEA///7/wIA/f8CAP//AAD8/wIA/v8EAP7/+/8AAPj/AAAAAAUABgABAAcA+f/6//b//v8BAP7/BgACAAMAAgACAP7/AQD8/wIA//8BAAAA/v8BAAAA/f/8//v/AQD//wEAAQACAAIA/f8DAPv/AQD/////AAAAAAEAAgD8//7////9/wEAAQAAAAMA/v8BAP3/AQD7////AgD//wAAAAD8//7//P8BAP//AwABAAUA/v////z/+v8BAP7/BwACAAIA/v8EAPz/AQD5/wAAAgAEAAEAAwACAAYA/v8FAPv/BgD+//3/AAD///7//f/8////AwD9/wIAAAD+/wIA//8DAP//BgABAAEAAgAEAAEAAgD9/wAA/P8AAAAAAQADAP//+v8EAAAAAgABAAAAAAAAAPr//P/8/wEAAgACAAEAAAAAAAAA+v/8/wEAAQAEAP//AwAAAAIA/P////z/AgAAAAQAAQAAAP//AAACAAAA/v/9//7/AQD+/wMA+//9//v/+//6/wAA/v8CAAIAAgADAAQA/f////X//v/6/wEABAABAAAAAAAAAAIA/f8CAP//AAD//wAAAAAAAAEABQAAAAQA/P8BAPv////+//7/AAAEAAIAAAD+/wIAAwADAPz/AgD8/wYAAAACAAQA/f8DAP3/AAD7/wEA//8IAAAACAD9//3////9////+P8AAPv/BwACAAcAAwACAP7/+/8CAP3/BAAAAAMABgADAAIABAD8/////P///wQA/P8HAAQAAQD+//r//f/+//7//v8CAAIAAQD6//v/+/8AAP7/AQABAAIA/v8CAP7/AAD7/wAAAQAAAAUAAAACAPz//v/7//z//v8CAAUABAAFAP///f/7//3//P8BAP7/BwABAAcA//////z//P8CAP//AgD///7//v/9////+////wAAAwD///z/AwD//wAA/f/9/wAA/f8BAAAA//8DAAIAAQAAAAAAAgAAAAAA+v8BAPv////8////AQD//wMA/P/+//z/AAD8/wQA+/8BAPj/AQD0/wEA+v/7/wQA+v8DAP3//P/9//z//v8BAAUABAAEAAIAAQABAAEAAAD//wIA",
+ "AAAHAAUABQABAAEA/v8AAAIAAAAAAAMAAgAAAP///f8DAP7/AwAAAAAAAQD+/wMA+/8DAPv/CgAAAAQABQABAAcA+v8BAP3//v8DAAEAAQABAPv//v/+//7//v/8/wEABAAEAAUA/f8DAP7/BAD5/////P8FAAEAAQD6//3/AAD6////AAD+//7/AQABAAQAAQAAAP7//f8BAP//AQACAAEAAwD//wQA///9//3//v8BAAAABQADAAUA//8FAPj/+v/7////AAACAP//BQADAAQA/f/5////+f8CAP7/BgD9/wIAAQD7/wIA+v8BAP7/AgAAAAUABAAHAP3//P/7//v/AAAAAAQA//8IAAAABAD+//z/AAD8//7/AgAAAAEAAQAAAP///f/1//3/AQACAAIA//8DAAMA/P8BAAAABAD+/wYAAgAEAAQAAQD9////+/8FAPz//f8AAP//BAD5/wQA+v////7/AQD+//3//v8BAAIA/f/9//7//f8EAAAAAAABAPv/AQACAAgAAQAEAAMABgAAAAIA/f8AAPv///8DAAEA//////z/AAAAAAMA+/8CAP//AgD8//3/AwD//wcA/P8DAAAAAwD9/wEA//8FAAMA///8//n//v///wEAAwADAAEA///9/wAA+f8EAPv////9/wAAAgABAP7//v/6//7//v////v//f///wMAAQACAP7/+/////////8EAAMAAwABAAEA//8BAP//AAABAP//AgD//wUABAABAAIAAgACAAAA/v/+/wQAAAAFAP//AgAGAAAABQD7//z//P////3/AAD+/wMAAQACAAAAAwAEAAMAAQD//wEAAQD///z/AAD9/wMAAAABAAEAAAD8//7//P///wIABQADAAYABgAGAAQAAAAAAP3//f/6////AQD+/////P8AAPz////+/wAAAQAAAP//AgABAAMA/f8FAPv/AwD8/wgAAQAEAP3/AAABAAAAAgD8/wAA+v8BAP3/AgADAAAAAgD9/wAA/P8BAP3//v/7/wEA+/8AAP7/BAACAP7////9//v/AAD7/wIAAAD8//z/+/8BAAQACAAHAAEA/v/+/wAAAgD9//z/BAAEAAkABAAEAAEAAwD8/wAA/P8AAP7/AQAGAAYAAgD9//z/+P/6/wAA/v8FAP//AwD///7/+v/+////AAAHAAMAAAD9////+f/6//v/AgABAAYA//8EAP//+/8BAP7//////wQABAAEAAAAAQD9//7/AAD//wIAAQADAP7/BAD+/wMA/v/9/wIAAgACAAMAAQABAPv////7/wEAAwD8/wEA///9/wQAAAAAAAIA/v8EAAEA///6//z//P////7//v8BAAAABgD5/wAA+//+////+f8FAAAAAwD+//z//v/9//3/AAABAAMABQD+//////////7/AwACAP7/AgABAAMAAgACAPn//v/5/wYAAAAEAAAA/P/9/wEA//8CAAIABAABAAEA+//7//v//v8EAAUABQAEAP3//v///////f8BAP//AgAAAAMAAgD///3//v///wMA/f8DAPz/BQD9/wMA/P/9//j//P/8/wIAAwADAAMAAgADAP3/AAD///z/AQADAP//AgD5/wYA+/////r/AgD/////+P8CAPn/AAD7/wUAAwAFAAMAAAD9/////f/9/wAA//8FAP//AQD///3/AAD+//z/AQD//wYAAwAGAAIA/f/8//z//v8EAAQA+//9//v//f//////AwAAAAMA/f/+//7/+/8BAPv/BQAFAP//BgD+/wMA/P/9//f//P/8/wIAAAAGAAIAAwD///r//f/4////+/8GAAIABwADAAMAAQD+//r/9v/+//f//v/6/wIAAgD+/wIAAQADAAMA/v/+//z/BQABAAIA+v8AAAAABAD////////8/wEA+/8BAPz/AgAAAAMAAAD+//7//P///wQAAwACAAQAAAAFAAAACgACAAEA/P/8//3//f8DAP7/AgD9/wEA//8AAAEA//8AAP//AAD+/wEA",
+ "AAABAP//AwAEAAEA///9////+P8CAPv/BAD//wMA/v8AAPz/AwD+//3/AAD7/wEA/v8CAP//AwD+/wAA+v/8//v//f/9//j/AQAAAAMA/P/+//r/AgACAAQAAwD//wAA+//7//7//v////v/AQD///v//P8BAP3/BQD+/wIA/f///wEA//8BAAIAAAD+//r/BAACAAUABwAAAAUA/P8FAPj/AwD8/wMA/P8CAP7/AgAAAAIAAQADAP3/AgD9/wMAAQAEAAIAAQABAAIAAgAFAP//AQD6//z/+v/5/wEA/v/+////AAD9////AgD7/wEA/v8FAAMA/P//////AQAAAAIAAAABAP///v8BAPz/AQD6//3//v8BAAQABAAEAPz//f/4//j///8AAAUAAQAFAAQAAQAAAPj//f/9/wMAAAAJAAQABgD9/wEA9/////3/AQD/////AgADAP//+//7//j/AgACAAYACAAIAAQA/f/5//7/+/////7/AQAGAAoACAACAAAA+f/3/////f8FAP3/BAACAAMAAQABAAAA///+/wQAAwACAAAAAAD8/wEA/v8CAAQAAAAFAP//AQD8////AAD5//7/+v////7/AQAAAAQA/f8DAP7//f/+//7//v/9////AAAAAPz/AwD//wUAAQAFAP//AAD6/wMAAgAHAAAAAgD9/wIA/v////7//f/9/wEA//8AAP7//v8BAP///v/+/wIA/f8CAP//AwAAAAIAAgD//wEA//8DAAYA///8//z/+/////v/AgAAAAAAAgD+/wAA/v///wgA/P8FAAAAAQAGAPz/AQD9/wUAAwAAAP3/AAD8/////f/8/wAAAAAIAAQAAwD///v//P/+//r/AAAAAP///v/+////AQABAAEAAgAHAP7/BgACAAYABQD//wEA/v8BAAAAAAAEAP7/BAD8//7//P8CAP7///8BAAAAAQD//wEABAD9//7/AAD9/wAA/P///wAAAgACAAcABAABAAIAAQD7/wAA/v8EAP3/AwAAAAEAAQD6/wEA/P8DAP7/AgACAAYA/v8AAPr/AgD//wYAAgAAAAIAAQD9//7//f/+//3/AQAFAAEAAgD+/wIA/f8AAPj///8CAAUABgACAAUAAwAAAP7/+f/+/wAA//8CAAEAAQD7/wQA+/8CAPf//f8EAAAACAABAAIAAgD8//3/BAABAAQABwADAAQA/P8AAP//+/8HAP//BgD9/wAAAAACAAQAAAAGAP7/AgD8/wIAAAACAAEA/f////7/AAAAAAMA//8BAP7////9/wAA/f8BAAIABgD+/wQA///+/wIA+v8DAPr/BAD9/wMA//8DAP3///8BAAEABAACAP3/AQD//wIA+f8BAPn/AwD9/wUAAAAEAAEABAADAAQAAwABAAAA/P/9//3/AAD//wAA/P///////v8CAP//AwD8/wQAAQAEAP7/AAD+//7//v8BAAAABQABAAAA/P/+/wEA/v8CAP7/AQD+/wAAAwD///7//f/8//z/BQD7/wEAAQAAAP//+v/9//v/AQD+/wIA//8CAAAAAwD4//7/+v8CAAMAAAD+//3//v////7/AQD+/wQACAAFAAsA//8DAP///v/9//3/AwD//wIA+f8DAPj//v/8/wAAAQACAAEACQACAAUAAwD8////AQD+/wUA/v8BAAEAAwACAAEA/f///wQA/v8CAAAAAgD7/wEA+P8EAPv/BAD5/wAA/P8BAP//CQD//wIA/v8DAPz/AAD6/wYAAgAEAAMAAgACAPv/AQD5/wEA/v8DAAUABQACAAQA//8BAP3//P/8/wEAAQALAAIAAwD///7/AgACAAMA/v8BAAQAAAAFAP7//f/8//3////9/wMA/P8AAP//AAD8////AAACAAIABQADAAAA+/8BAPr//f/8/wQAAQAHAAEAAQAAAAIAAQAGAP3/AgD9/wEA/v8DAPn/AQD+/wMAAAAAAAYA/f8BAPn/AQD8/wEA//8DAAIAAgD+/wYA/f8JAP3/BgAAAAAA",
+ "/////wMAAgD+//3//v8DAAAAAgD+/wUA/f8AAAEAAwD+/////P/4//7//v8FAAcABAABAP7//f/9//z/AQD+/wMAAAAFAAAAAgD+//v/AwD3////+/8GAP//AQABAP3//v////3/AgD//wQA//8DAAMAAAACAPv/AQD9/wIA/P8HAAEABAAAAAIAAgABAP//AAD9/wYAAAAEAP//AAACAAIAAwAAAP//AAD8/wMA+f8EAP//AgABAPn/AQD8/wAABAAGAAcABwD//wIA+f/+//3/BAAEAAAACAD//wMA9f/9//r//P/9/wAABAAFAAIA/P8CAPn//P/7/wEABQAIAAMABAD//////f8BAAMAAQAEAAUABQACAP/////7////+f8EAP//CAD///7/AwD6//7/+/8AAAQA//8DAP3/+//7//z//P/9/wAAAgADAAYA//8BAPr//P/7//7///8AAAIABAADAAIABAACAAUA/P8BAP3///8BAAYACgD//wYA/P8DAPv/AQD6/wQA/v8IAAQABwAAAAQAAAACAP3////9/wAA/////wEAAgACAPz/BQD+/woA/P8CAP7//////wAAAAACAAIA/v8HAPz/AAD+/wIAAQD//wAAAAD//wAA/////wAA/v8EAAEABQAAAAIA+/8FAP7/BAACAAMAAgD+////AwAAAP//AgD7/wAA/f8FAP//AAD6//7//v8AAAIAAQABAP7/+v8AAP3//P///wIABQAIAAIAAwD///3/AgD+/wEA+v8DAAQABwABAAMAAAAGAP//AQD9/wYA/v8BAAEA//8BAPv/AgD6//z//v/8/wUA/f8DAP7/AQAAAP7/AQD6/wMA+v8EAPn/AQD9//3////8/wUA/f8EAAAA/////wAA///+//3/AgD9//3//f8AAP7///////z/BAD8/wAA/f8CAP7///8BAAQA/v8EAP3//P8BAP//AwABAAMABAAEAP3//f/6/wIABQAEAAEA//8FAAAA/f/+//7/AAADAP7/BAABAAEA/P/8//7/AQAEAP//BwABAAYA//////////8BAP7////9/wMAAgAAAP7//f8AAP//AAAAAAAAAwD+/wYA/f8BAPz//P8CAAIABgADAAUA/f8BAPz/AgD+/wYABAAHAAMA/v/6//3/+/8DAP//AQACAAAAAgD+//v/+//9//r/BAAAAAIABAD//wQA/f/+/wEA/f8DAAMAAgAAAPn/+//9/wAA+f8CAP3/AwABAAAA+f/+//n/AAD//wQACgACAAUA/v/+//z//v/9/wMAAgAKAAEA//8AAP///P/6////AwAHAAMAAgD//wAA/f8AAPz/BAADAAQAAAD+/wIA/f////3/AwD+/wUA/v8CAP7//v/7//z/AgABAAEAAQD+/wMA/f/+//3///8CAAMAAQACAP//AQAAAP//BgD7//3/+/8AAAIAAwD//wEA/P8CAAEAAgABAAEAAgD+////+v8AAP//AgAAAAAABQAAAAUA/P8DAPz/AgD7/wYAAgAGAP7//f/8//z/BQAGAAkAAwACAP///P8CAAEABgADAAQAAwD9//z/+f/4/wQA/P8JAP//BwD+/wMA+f/+//j//f/+////BgAAAAEA/v/7//j//v/6/wcAAAAJAAQA//8GAPv/AAABAAIACQAGAAkAAgD///z/+P/7//7/+/////z/CAACAP//AgD6/wAA9v/+/wAAAwAHAP7/AwD+/wAA+/8AAP//AAAAAAAABQADAAUA//8EAP7/AwD9/wYAAwADAP3/AgD9/wIAAAAAAAEAAgD6/wAA+////wQAAgAEAAAAAQD///7///8BAAIAAwACAAMAAAABAP7/AwD+/wMAAQAIAAQAAwADAP3////2//3//P8HAAYABAAGAAMA/v/7//v//P/7/wAAAQAJAAAA/v/+//r//P/5/wAAAAACAAQAAgAGAP3/AAD7//3//v8AAAAAAgAGAP7/CwD6/wAA+f/8////AgAAAAQAAQD///v//v8AAAEA",
+ "BAADAPz//v8AAP3//v/8/wAABQAFAAYAAQD+//n/+f/1/wAABAAMAAYABQABAPz/AAD3//7//P8HAAUABgAGAAEAAAD9/wIA/v/+/////f8FAAEAAAABAP7/BAD9/wEAAQADAAIA/P/8//z/AAAAAAQABQADAAQAAAACAP3/+P/7//r/AQADAAYAAgAAAPv//f/+/wYAAAAHAAAABgAAAAQA//8EAPn/AgD+/wQA////////AwAAAAAAAAD//wYAAAAAAAIAAwD+/wEA/v8CAP//+v8CAAMAAgAAAAAA/////wAA//8HAAAABQD8//////8AAAAAAAADAAEABgD+/wAAAAD//wUAAAABAAQAAQACAP3/+f/9////BQABAAIA/v8AAP//+v8FAPz/AgD6/wQA/P8FAPz/AwD5/wIA/P/9//7//f8FAP3/BAD///3/AQD7/wgA/v8EAAAA//8BAPz////9//r////+//3/AwACAP7//f/+/wIA/v8EAPv///8AAAAA//8DAAIAAgD8//j//v/5/wUABAAHAAIA/f8CAP7/AwD/////AAD+/wQA/v8EAP7/AQD+//7/AAD+/wAA//8CAAAA/v/9//z/AAACAAEABQAAAAAAAQADAPr//v/7/wQAAQAFAAUA//8BAPf/AAD9/wYABAAIAAIAAAD9//7////8//v/AAD9/wMA///+/wIA/f/+/////P8AAPz/AgAAAP7/AgAAAAIAAAD//wEAAAD+/////P/8/wEAAQAAAAAA/P8AAPn/AQD7//////8FAAQAAAACAP3/AAD+/wAA/v/8/wIABAACAP7//f8CAP3/AQABAAAAAQAAAP7//f8AAAIABAAFAAIAAQD9//3/AwD7/////f8AAAIA+v/+//7/AQAAAAUA///7/wEAAAABAPz/BAAAAAMAAgAGAAAAAQD///n/AgD8/wQA+v8FAP//AwAEAAEABAD8/wEAAAAGAAEAAAD///3/AQD8//7/AQAGAAMABAABAAEABAACAAIAAAABAP///v/+//n//v8AAP//AAABAAQAAAD6//3/+//9/wEA//8DAP3/BAD8/wAA/f/8//3//P///wAABQD//wAAAwAAAAIA/v////7/AwAGAAUABwADAAQABgAFAAgABAAEAP/////8/wIA//8GAP//BAAAAAIA/f8BAPr/+P/9//3/AQD9/wMAAAABAP3/+//9//3/BQD+/wMAAQAAAP///f8BAAEAAQD///7//f/6/wAA//////3//v/6/wAA+v/9//3///8IAP7/CQABAAUAAQD/////+//7/wcAAAAJAP//BwD//////v8BAP///v8EAAQABwAHAAYA/v/7//n//f/8//z//P8CAAQABgAAAAIAAgADAAMAAwABAAEA//8BAAUAAwAFAAUABgAEAAAA+f/6//X/8f/7//j//v////v////8//3//v/8/wAAAQAGAAYABgACAAIA+v/7//T/+v/4/wIAAAD+//v//P/6//v/9v/4/wEAAAAHAP//BAD9//7/+f/3//v/AAD9/wYAAQAEAAIA/f/+//7/+/////r/+f/9//r//P/7//r/AQAAAAMABgAFAP7/AAD4//7//v8BAAIABgAMAA4ACwACAAUA+P/9//r/AwAAAAgAAwAGAAMAAwAIAAEACQAHAAoADwALABUADAAQAAYABwD6/wQA+P8BAPz/AAACAPz/AgD6/////v/7//j/8//2//r//v/9//3/+//0//r/+P/5//7/AQAGAAQACQAGAAAA///6//z//v///wEABgAHAAUAAQD6//n/8f/2//D/8P/z//P/AQADAAEAAwAAAAAA/f8FAAQADQALAA4AEAAPABkAEwAZABAAFwATABgAEQALAAEA///6//v/9v/7//b//P/6//f/+P/y//H/6P/t//L/+v8KAAwAFQATABIADgAEAAEA9v/6//r/AwAEAAUABQAEAAEA/f/4//f/9f/+////BQAMAAgABgACAPz/+v/z//r/7//6//b/",
+ "///3//j/8//z//L/8P/9//v/BgAFAAoACQAHAAcAAwAGAAIADgAVABcAEQAIAAEA/f/4//z/BQAOAB8AJAAqACEAGAASAAkABQABAAUAAQAJAAMABAABAPz/+f/9//z/AQD8/wQA/f8BAPz//f/8//r/+f/w/+z/6f/o/+v/7P/x//j/AAADAAcAAgAEAP//BwAOABcAIQAgACUAGQAZAAYABAD3//z/+f/7////+/////z//P8CAAwAEgAXABAADwD6//P/4P/b/9j/3//o/+//8//q/+j/2f/Y/9v/4v/2/wIACAAQAAcADAAAAAEA+v/+/wUADAAQABIAEgANAA8ADwARABcAFAAQAAsA+f/2/+v/9//5/w0AEgAVABAA/v/0/9v/3//g//b/AwARABoAEQAHAPT/6v/o/+z/8//6//r//v/v//H/6v/s//r///8aACQAKwAlABYACQD0//P/7//x//P/+v/8//T/8v/o/+j/5v/p/+//9/8BAP//CAAKAAwACwAGAAAA8v/f/9j/z//a/+D/8/8FAA0ADQD4/+3/2f/d/+D//P8aADYAQgBCADEAFwD5/+n/7/8EACEAPgBOAE8AQQAqAA0A+//1//v/CwAdACoAKgAjAAwAAwDs/+3/7//2/wMACAAOAA0ACwAOAAUACAD9//n/7v/f/9f/2v/i/+7/+P8FAAgADQD///z/9v/7/w0AIgAzAD8AOAAqABIA+P/n/+H/4//s//T/9f/z/+z/7P/m//T///8cADIAQABCACoAFQD4/+T/3f/c/+P/6//z/+7/6v/a/9f/zv/Q/9v/6v/2//r/AQABAAsADAAZACMAJwAgABMABgDv/+b/4f/2/wIAFQAeAB4AEQABAOn/6P/l//T/9/8GAA8ACwADAO3/3//W/8//1P/W/+T/6v/r//H/6//v/+n/6//n/+L/1f/L/7v/vf+9/9P/6/8KACAAMwA2ADoALQArABgAFwAXABkAHwAYAA8ACAD+//j/7v/r/97/3v/Y/9P/2f/e/+X/9f/4////9f/w/9z/2v/P/9b/3//v//7//f/6/+j/3v/Q/8r/zv/j//r/EQAeACcAIwAQAAMA8P/r/+b/6//9/wEAEgAYAB8AJQAnADEAMQAwACoAIwAYAAoA/P/v/+z/4f/e/93/3P/Z/+H/4P/x/+///P/7/wkA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yf/C/7f/rf+t/6v/tv+2/8X/wP/J/8f/zf/G/9L/0P/Y/9j/0P/O/8b/vv+1/7P/tf+4/7n/w//F/83/0f/W/+T/6//8/wgAGAAbACwAKQA6ADYAQABFAEEASgA9AD0ALAAkAB8AHAAfAB4AJAAgACgAJAAmACoALAAyADYAOwA7AEAANQA0ADAAKQAwACsALgAiABYACQABAPL/7v/t//D/+f8AAAUADgAFAA0AAwALABAAGgAmACgAMwAoAC0AGQASAAIA/f/0/+z/4v/U/8f/tv+s/6P/mf+W/5f/mv+u/8L/3v/3/w0AJAAwAD0AOgA7ADUALQAmABwAEQD+/+b/2P/G/8P/vP/G/9T/4//5/w8AHAA4AEAAWQBiAHQAcgB2AGYAUQA3ABoAAADn/+L/1//b/9X/2P/c/93/5v/u//z/CgAcACgAJgAlABoADgD9//D/4//i/9D/0v+//7X/o/+b/5b/nP+u/8P/4//2/w8AEAAaABkAHAAiACMAKwAkAB0AAwDx/8v/uf+f/6L/nv+y/7D/yf/L/9X/1//c/+f/9f8HABkAKwAwADYALgApAB4AFQAUABIADQANAAUAAgD0//H/8v/9/wkAHQAwAEIAWABZAF8AWQBUAEwARAA+ADcAKQAeAAYA9f/e/8z/u/+5/7T/wf/I/9r/4//y/wEACwAaAB4AIgAgABsAEgAEAPL/3f/Q/8L/wv+9/8b/v//M/8r/1f/Y/+b/8P8EABIAJAAnAC0AKQAfABwAFQAMAAsAAwD///P/6//k/9z/4//e/+z/8v8FABQAIgAqADIAPABIAFsAYQBtAGoAawBeAE8AQgAsABkA",
+ "EAAFAAkA/f/9/+z/4//a/9X/0//U/9//5v/r/+//8f/q/+L/2f/b/9f/3//l/+v/6v/p/+n/5v/o/+n/7P/0//v/AAAHAAQABAAGAAUACgALABcAEwAXAAsAAQD1/+//8P/s/+7/7P/s/+X/3v/W/9D/zP/L/83/0P/a/97/7//w//T/9v/z//j/+f/5//7//v////T/7P/f/93/0f/R/9X/zf/P/8n/0P/U/9z/5P/v//7/CQAcACEAKAApAC0AKAAnAB8AHgAXABQADAAFAP3/+f/z/+3/8P/v//7/BgASAB4AIQAtACwAMgA1ADwAPwBBADsAOgAvACYAGQAEAPf/6P/i/+H/3v/l/+z/9//9/wYADgAXACUALAAzADwAOQBAADgANQAjABsADAD5/+v/3P/P/8f/u/+8/7z/v//E/8r/0v/W/9f/2f/e/+j/6P/u/+j/6P/l/9n/0f/B/7v/uP+3/7T/sv+1/7X/tP+w/6//tf+4/77/w//Q/9f/5f/t//j/AQAFAAcABgABAAAA+P/4/+//7v/o/+z/6//2//n///8DAAAACAAHABAAGQAgADIANABFAEgASgBMAEEARgA3ADcALAAlABsAEgALAAIA+P/0//H/8P/x//X/+////wUADwAUABkAJQAqADcAMgA4ADcANQAsACsAHwAkAB4AJwAnACYAJgAfAB4AFAAUABUAGAAeACQAIAAjABkAEwAIAP7//f/w//b/7v/0/+n/3v/a/9H/1v/W/9//5v/1/wMABwAKAA4AEAAPAA0ADAALAA4ABAD///T/5v/a/83/xv/C/8H/v/+//8H/vv/L/83/2P/n//f/AQAEAAcADQAIAAoABAAGAAEAAgACAPv/+v/q/+r/5f/i/+j/5v/w//n/AAAKAA4AEgAbACAAIgApACgAJwAdABsAEQAFAPn/7v/p/9//5P/e/+f/5f/p/+f/4//m/+T/8P/z/wEACAAPABUAEAAOAAUA/v/8//j/AAACAAMACAAHAAYABgADAAQACgANABYAHAAiACYAJwAiACMAGwAfABoAIAAaABoAGQAYABgAEQAYABEAFgAQABUADQAMAAsACAARAAcAEwASABIABQAGAPf/9//p/+n/5f/g/97/2f/X/9H/0//W/9z/5f/r//b//f/+/wcABgAKAAIABgAHAAwACQAIAAAA9v/q/+L/3P/X/9n/3f/i//T/9f8KAAoAGQAcACwANAA+AEoATQBMAEkAQwA+ADAALAAfABwAFAAQAA8AAAACAPr/+v///wAACQAUABUAIAAcACIAJAAdAB0AFQAaAAoABQDy/+3/4//Z/9n/0v/U/9r/2//m/+T/7f/s//D/7//u//n/9P/6//X/9//q/+j/2f/V/9L/z//V/93/4f/j/+T/5v/q/+7/9f/4//7/BQAJAAUAAwAEAP7/BQD9/wIA/f8EAAIAAgD6//X/7//y//z/BAAPABQAGgAdAB4AHAAiACcANgA7AEoATQBOAE8AQgBDAD8AQgA8AD4ANAAzACMAGwAMAAYACQANABIADwAOAAUA/v/y/+n/5//s//D/+f/9//r/+v/w/+v/4f/l/+X/8f/1//T/7v/g/9T/xf/C/8H/xP/M/9H/0v/W/9P/0//U/9r/4//r//L/+f8AAPz//f/x/+3/5P/u/+X/8f/p/+f/5//e/+f/4v/v//D//v8CAAwADQAOABUADwASAA4AFAATABIAEQAKAAQABAD9/wgA/v8JAP//BAD7/wEA/v8FAAoACQATABgAIgAoAC8AMAAtACkAKQAkABwAFAASAA8ACgAEAP3/9f/1/+//9P/t//j/9v/+/wUACAALAAkACgAHAAsADAAKAAsABwACAPv/+f/x//L/9f/2/wMABQANABQADwAQAAMADAAJABMACwAYAA4AEQAHAAMA9v/5//H/8f/x//D/6//n/+P/5v/q//H/9/8CAAYACgAMAAMAAgD2//f/9P/w/+7/7v/h/9z/1//R/9f/0P/b/9r/6v/k/+v/5//0//n/",
+ "AQAHAA0AEQASABAAAwD6//L/9P/1//3/AQACAAkAAwAEAP7/AQABAAoADQAfAB8AKgAoACsAJgAeABkAHQAcABcAHwAUABoAEwASABAACQAOABQAEgATAA0AEAAPABEADgAPABEADgANABAACwAIAAUACAAEAAQA/P8BAPv/AgD8//3/9f/3//T/AAD8/wYAAAAGAAQACQADAAgABQAAAAUA/f8CAP//+f/4/+7/9P/m/+z/6f/q/+v/4f/m/+b/6//o/+T/5//e/9//2P/Z/9P/2f/X/9z/2P/j/97/7P/n/+7/6v/2//f///8GAAQADwAGAAsADAAKABEACwALAAkABAALAAcADAAGAAUABQACAAEABQAKAA8AFQATABsAGwAYABYADwAYABMAHQAZABkAFAAQAA4ABAAHAAEAAwAFAAYABQAFAPj//f/2//z/8f/8//b//f/2//T/7P/o/+H/5v/r//P/8//+//f/AQD3//H/8f/z//n/+/8BAAAA/P/2/+v/6v/h/+b/5f/z//L/9f/3//f/+f/1//f/8//6//n//P/6//X/7//r/+3/7f/y//T/+P/8//v////9/wMA/f8KAAcAEwANABUAEgARAA0ACQAJAAoACgAGAAkABAAKAAkADwAOABMAEQAUAAgABgADAP//AQD9/wMABgAJAA4ACQAMAAYACgAMAAwAEQAUABYAFAAUABEAEgALAAcABwAHAAcABQD//////v/8//z/+v8AAPz/BwABAAYA//8DAP3/CAAGAAsABwAJAAMABgACAAsA///+//T/+f/1//T/8P/v//H/8//1//n/9P/y//H/9//1//r/AAAJAA0AEgAOAAYABQD6//3/7v/0/+7/9f/0//T/8v/x//X/9v/+/wEABwAQABIAFQAWABMAFgASAA0ADQAJAAUABQD9//3/9P/0//b/+P/4//n/+v/+/wMABwALAAwADAAPABAAEwARABYAEgAVABEAFQAQAAwADQAJAAwADAARAAwADgAJAAoAEwAQAA4ADQALAA4ADAAFAP//+f/0//b/8f/u//H/5//t/+X/5f/g/+H/4//o/+3/7v/o/+n/4//p/+j/6//s//b/8f/7//H//v/2//n/+v/4//7//f/5//f/7//u/+r/6v/t/+7/+f/0//r//P/9/wQA//8IAA0AEAAbABoAIwAmACYAIQAdABgAGAAVABoAHgAcABcAFwAVABMAEQAPAA8ADQARABEAEAAJAAkABgAIAAkABwAJAAcABAABAPr/+//2//j/8f/3/+3/8//s//X/8P/3//L/+P/3//r/AgD//wMA//////3/+v/5//T/8v/z//L/8//u//H/7v/w//L/+f/9/wMABwAJAA0ACwAHAA0AAwAHAAQABAAEAAQABgAAAAIA+/8AAPv/BAACAAsABgAMAAoAEgALAAoACgAIAAcABwABAAYABAAAAAIA+P/+//P////3/wUAAwAMAAgAEwALABgADQAWABMAGAAQABMAEQASAAkABAAAAAEA//8AAPz/AAD+/wEA/P8AAP///P///wMABwAFAAcAAgAFAP3/AAD6//3//P8BAAAA/f/7//n/+//7//n/+//6/wEABQAEAAQAAwABAAUABwAFAAsACwARAAwABQADAAEAAQD+//v//P/7//z////6//3//P8DAAIACwADABEADwAQABIADAAQAA4AEgAQAA8ACgAIAAYA/f/5//T/9P/z//P/8P/2//f//f/8////AAD+/wwABQALAAUABwAEAAIAAQD4//v/9P/z//D/8f/x//T/8f/1//D/+f/7////BQAKABEADQAMAAQABwAFAP3/BwAAAAYABAAAAAMA+v/8//r//f8AAP7/BQAEAAcABwAMAA0AFAAXABoAGAAYABUAEAASABAAEQAVABQAFQAPAAoABAADAPr////+/wcAEAARABUAFAAQAA8ADgASABUAGAAUABsAEQAOAAYAAgD7//z/9//7//b/+v/7//z/+f/+//j/BAD7/wcA",
+ "BgANAAgACwAFAAUA/v8AAPr//P/6//X/9v/w//T/8//z//L/8v/7//3//v///wYAAwALAAYAEAAJAA0ACgAIAAkACgAKAAgA/v8AAPj//P/6//f/+//8//7/+//7/wAA//8EAP7/BQD//wcA+v8HAP7/CgAEAAwACAANAAQAAwD9//v/+f///wEABwAFAAkACQAOAAoACgAEAAEA/v8FAAcACgAJAAcABgAAAP7/+f/2//7/AAAIAAoACgAKAAoACgAFAA4ACwAOABAAEAAUABIADwAOAAkADAANABEADwASAA0AEQAHAAcA/v8AAAEABAAJAAYABAABAAUAAAAGAAIABgAFAAQA///8//v/8//2//L/9f/3//3/+f/9//b/+v/1//v//f/8/wYAAQAJAAcAAQAFAAIAAAD//wEAAwAGAAcAAwADAPz/AAADAAQABQAGAAoACgANAAsACwAJAA8ACwAMAAcACAADAAEA///+//v/+/////v/AQD+/wMAAAAEAAMABwAMAA4AFAAMABAADAAHAAEA/P/+//n/+v/7//j/+f/1//3/+f8EAP//DAAFAA0ADAAIAAoABgAMAAYACQAEAAcABgADAP//+v/9//////////v/+f/6////AgAAAAYACAAUABIAFQAPAAwADAAIAAoACgAHAAwABgALAP7//f/3//j/+f/2/////P8FAAEABQABAAIAAgACAAYABwAKAAkACgAGAAwABQAJAP//BAD6/wMA/f8CAAMA/P/9//j/AwD//wMA+/8AAPz/AAD+//z//v/9/wIA/f8FAP7/AAD6//3/9v/8//T/AQD8/wQAAQAEAAcA/v8GAAIABQAEAAgABgAHAAgACwAJAAYACAABAAkA//8AAPz//v/5/wIA/v8FAAQABwAAAAYAAgAKAAoADgAKABMADAALAA8ACgAIAAEA/P/8//7/AAACAAcABgABAAEA/f/9////AAAEAAMACQAKAAQABgD8////AgAAAAUABwAGAAoAAAD+//n/9P/2//r/+v/6//3/+P/5//n/+P/4/wIABAAIAAEAAQADAP3////9//////8AAP///f/3//f/8//6//n/AAD//wUAAgD//wIAAAAFAP//BQADAAoABwAFAAEABQABAAQACgAGAAwACAAOAP//BQACAAQABQADAAMABQAKAAsABAAEAP7/AwAEAAEADAAGAA8ACQALAAcACAAFAA0AAwAOAAYACwAJAAYABgAFAAMABAAEAAYABAAAAAAA/f/+//7///8CAAAA//8EAAEABwADAAQAAAD//////P8FAP7/BwD/////+f/1//T/9//3/wEA+v8EAAAA/P////j/+//1//7//f8BAAIAAQABAPz/+//5//v/AAD6/wEA/P///wAA+P8CAPz/BwAAAAQA/f8CAPn/BAADAAQAAQAAAAEAAQAGAP//AAABAAMAAwAIAAQAAwD8//z/+//8//3/+v/9//3/BgACAAIABAD8//7/AwAAAAQACAAJAAwACQAFAAUAAwADAAEA//////z/AgD8////+f/5//T/9v/6//r/+v/+//7/AwD//wMAAwABAAUAAAACAP///v///wIAAAD///j/+v/2//z//P8BAAUAAQAFAP//AAD7//z/9//4//z//v8AAAAA///7//v//P/7//b/AwABAAoAAQADAAIA/f8EAP//BwAHAAgABwALAAoACQABAAMAAQABAAIA/v8EAP3/BgD//wcAAwAAAP///P8BAAIABAACAAIAAgABAAQAAgAAAAMA/f8AAAMABAAEAAUAAwAHAAIAAQD//wYABwAGAAoACQALAAoACQAGAAkABgAOAAUABAADAP7//f/7//X/+f/y//v/8v////f//f/6//j//P/4/////v8CAAEABAAAAAIA///4//z//P/+/////P8BAAAABgD//wIA/f8AAAEAAgABAAEABQD//wQA/v8EAP3/AQADAAYACAAFAAcAAQABAP7/BAAEAAcABwANAAoADQALAAYA",
+ "BwAGAA4ADwANAA4ADAAOAAoABwAIAAUAAwAHAAMAAgAFAAIABQD//wEAAgADAAEABwAGAAcAAAD+//3//v/8/wAACAAKAAcAAgD8//3/9//4//n//v8CAP//AwD//wUA/f8AAP3/AwAFAAUABgAFAAMAAAD+/wEA/f8AAAAAAAADAP7/AwABAAIAAQAGAAQACwAGAA4ACgANAAUABgABAAAA/v8AAAMABQADAAUAAwADAP//AAAAAAUABAAEAAQABgAHAAQAAQD//wQA+/8EAAAABwD+/wEA/P/8//b/+//5//7//f8BAAIA/f/6//v/+v/7//n//v/7//z//P/7//z/+f/6//b/+P/2//r/+v/5/wEA/v/+/wAABwAIAAkABwAFAAkABwAEAAkABgAJAAUABQAKAAQABgD+/wEA/v8EAAUACgALAA0ABgAJAAMACQD//wYAAwAJAAMABgAEAAUAAwAAAAIAAAD///7////+//7//v8EAP3/CgAEAAoABwAGAAIABQAAAAcABgAFAA0ACQANAAgACAACAAYA//8GAAYACQAOAAMACgD8/wIA/P8CAAUACgACAAcA/P8AAP3/+//8//z/BQAEAAkABAAAAAIAAAABAAEA/v8BAAQABAAEAAMA/v/9//r//f/7//v/+P8AAPr/+f/5//j//v8AAAIAAQACAP//BQD9/wAAAQAAAP3//f8CAP7/AQD///r//P8CAAMAAQAEAPz//P/7//v/CAAHAA0ACgAHAAgAAgAEAAIABQAHAAMACAAIAAcABAABAP7//////wMABAAIAAcABQAIAAMABAD8/wAAAAAKAAUACgAHAAIA/v/9////AAAJAAoADgAKAAwABwADAP//AAAEAAgABwAJAA4ABgAGAAMAAgD9/wAA+f8GAAMAAwAFAP3/AwD7//z/+v/3/wIA//8HAAQABQABAP7/+//6//r////9//z/AAAAAAUA/v8AAP//+v/8//z///8HAAMAAQACAAMABgD+/////f8CAAIAAgADAAIA/v8CAAgA//8FAP3/AQABAAMAAwAEAAUACgAEAAUAAQAFAAEA//8BAAcABQAOAAIABAD8/wQA+v8BAP//BgAFAAUABwAEAAEAAAABAAUABAAGAAkACwAOAAQABwD5//z/9//+/wIABgABAAYABQAEAP7////6/wMA//8HAAUABQAFAAQAAgAAAAEABgAGAAAABwAAAAgAAgD+/wIAAwAIAAEABQD//wIAAAD9//3/AgD//woABgAGAAIA/v/9//7/+/8IAP3/CQAFAAcA/f8CAP//BAD8/wQA/P8FAAIAAQAAAP3/BgD7/wsA+v8LAP7/AQADAAAAAgABAAYABAAHAAYABgAGAAAAAwAFAAYAAwAFAAAACAACAAkAAwACAAIAAgACAP///v8FAAcA/v8CAAEAAAAGAAIABwD7/wUA/P8HAP7/BgD//wQA/v8FAP//AAD+//3/BgABAAYABAACAAQA//8DAP3/BgABAAUAAwAGAAUAAwAEAAQAAgAGAAQABgAAAAMAAAADAAIABwAFAAQABQD//wEA+f8AAP3//v/8/wMAAgAFAAAAAgACAP//AQAAAAkABQAFAAUA/v8CAPz//f8BAAMACgAGAAYA//8DAAEAAQAAAAEAAgAIAAYADAAGAAMABAAAAAYAAgALAAYADwAKAAkABwAGAAIAAwAHAAYACAAIAAQACAAEAAMABAAAAP7/BwAIAAoADQACAAkA/v///////v8EAP//BgAHAAYABQAEAAYAAQACAP7/AQD//wMAAwD//wMAAQACAP//BAADAAcABgAHAAIAAgAFAAIABAAEAAQABAACAAIAAAAEAAIAAwABAAMAAgD//wQA/f8LAPz/BwACAAQABQAFAAAAAAAGAAIADAALAA0ABwAMAAMABQABAAYABQAKAAoABQAHAAcACAAEAP7/+/8DAAEADAAPAA8ABwABAP7//f8BAAAABAAKAAgADQAKAAMAAgD//wIA//8FAAgABgAJAAgA",
+ "CQAGAAQAAQAGAAYABwAMAAMACAAEAAIAAwACAAQABwAAAAcACAAEAAgA/f8KAAAADQAEAAkAAQADAAEAAgAAAAIA/f/+/wEAAQAGAP//AQD+/wUAAAADAP//BAACAP7/BwD7/wMAAAAEAAAABQAAAAEA/////wMA/v8FAP3/AgD9//7/AgD+/wUAAwAGAAQAAQD//wUA//8HAAEABwAEAAUAAwACAAMAAwABAAoABQAOAAQABgD///7/AgABAAQAAwAJAAcABQADAAEAAAADAP//BwACAAoABQAGAAIA//////z/BgAFAAkABAAEAAEAAwACAAEA/f8FAAAACQADAAMAAgABAAUAAwAHAAYABAD//wEAAQADAAMA//8AAP7////9/wEAAgAGAAEA///9/wAAAAD9/wQAAQADAAYAAAAAAAAA+/////v/AQABAAgAAwABAAIAAQACAAEA/v8EAAMACQAHAAwAAgAGAAIABQAAAAAABAAEAAcAAgAFAAYABQAHAAEABAAEAAgABAAHAAQADgAIAAcABwAAAAwAAQALAPr/CAABAAYAAgACAAEABAAEAAAABAD+/wIAAQAHAAcABQAFAAQA//8AAP7//P8HAAAADAAGAAkABQACAAEA+v8AAAQABQAKAAQAAgD9//v/+f8AAP3/CwABAAgAAwADAAAA///7/wEA+v8HAAEACQAFAAYAAgABAP3/AwD//wkAAgABAAQAAQAFAP7/AAABAAIABgAFAAUA+/8DAPr/AwD+/wQAAwAHAAUAAgD//wQA+/8FAP7/BwADAAcAAwACAAIAAgADAAcACAAEAAAABwD5/wUA/v8EAAMABwAGAAYA//8CAAIA//8AAP3/BQADAAgABQAHAAAAAQACAAAABwAEAAQABwD//wAAAQD//wEAAAABAAUAAQAHAAEABAABAAMAAwAEAAAA+/8BAPr//v//////BQD//wUAAgAHAAUAAgAFAAUABwABAAYAAQAEAAEA//8BAAMABgACAAIAAgAFAAMABQAEAAEAAwD+//z/AQD8//7//////wMA/v8DAP///P/+//r//////wAAAAACAAYABgAFAAMAAQD//wEAAQAEAAUACQABAAQAAAD+/wEA/v8GAAEABQAAAAMAAQABAPv/AAACAAIABwAEAAgABwAJAAIACQAAAAQA/v8BAAIABAAKAAMABwD/////AAD6/wIA/f8AAAAAAwAHAAAABwD8/wMA/f////z/AQALAAUADgACAAYA/f/9//n//f8AAAUACgAGAAgAAgAAAPv/+P/9//3/AwAFAAUACAACAAEA+v/8/wAA/P///wAAAwACAAYA/v8BAAEAAAAHAAMACAACAAMA//8EAP7/BwD9/wYA/f8FAAAAAwAAAP//BQACAAMAAQD//wEAAgACAAYAAgAFAAMAAwD//wMA/v8CAPr/BQADAAcABwALAP//BAD//wIAAgAEAAMACAADAAIA+/8EAAEABQABAAUAAAAGAPv/AQD7/wIAAQABAP//BAAJAAoABwABAAEA/v/+//7/BwABAAYABAAFAAQAAAADAP//AgAEAAIAAgACAP///v8AAAAAAAABAAYAAwADAP3//f/7//3/AwADAAQABwACAAYA/v8FAPv/AQD//wQAAwAEAAQAAAAAAP7/AgD//wIAAwAGAAAABAD+/wIA+f8BAAIABAAGAAAAAQABAP7/AQD9/wIABAAEAAQAAwAAAP//+v8CAAMABwAKAAMABAABAAMABAABAAUAAwAFAAcAAQABAP////////r/AgD+/wkAAwAJAAIA+/8CAPj/BAD+/wcABQAFAAQABwD//wIAAAABAP//AQD//wIAAgADAAEAAgAAAAQAAgADAAIA/f8BAP3/AAD+/wEA/v8BAAEA///8//7//f8CAAEAAAADAAIABQACAAYA/f8IAPv/AgABAAAAAwD8/wMA/v///wMAAAAEAP7/AwABAP3/AAACAAQABQACAAcAAQADAAEA///+//7//P/+/wEA/f8HAAEA",
+ "BQD///3//f/+/wIA/v///wAABAABAAMA/v8BAP7/BQD//wQA/f8AAAAA/P/8//n/BQABAAcAAQADAAMAAgD+/wEAAgADAAMAAQAGAAMABQAAAAQA/v8AAPz/AQD9/wIA//8EAP//AwD9//7/+v/+/wEABAAAAAQAAwADAAQA+/8BAAQA///+//r/AgAAAAYAAgAEAP7/AgD8/wIA+P8FAP7/BgD+/wUAAAD//wAA+v////z/AQD//wAA/v///wAABwACAAEAAwADAAUABwACAP/////5//7//P8AAAIABwAEAAUA+//8//z/AQD9/wYABAAJAAAABQABAP///f/5//7/AgAGAAIAAgD9////+//5//3//f8AAAcAAgADAP//AgD+////+v8GAP//BgD//wAA/P/7//j/BAADAAEABAACAAYA//////z//f8AAAAA/f8AAP///P/6/wAAAAAHAP//AAACAAEA/v/+//v/AwD//wQA//8GAPz/AQD///////8CAAQABwD9/wEA/v///wMAAgAIAAEADAABAAYA+//+//v///8FAAYABwACAAQA+f/+//b/+//6/wMAAgAIAAcACgABAAAA9/8AAPz/AQD9////AgD//wAA+/////v//f///wMABgAFAAIAAQD8/wYA+P8BAP//BAAEAPz/BwD9/wAA/v/8/wAAAgD//wAAAQD///3//P///wMA/v8EAAIABQADAAEAAAAAAP3////+/wEA/v/9//v///8CAAAA/v/7/wAAAAABAAEAAgAEAP//AgD8/wMA+f8CAPz/AwD+/wMAAwADAAYA///+//7//f///wAAAgAFAAYABAACAA==",
+ ""
+];
\ No newline at end of file
diff --git a/addons/sys_sounds/sounds/WS38/start.b64 b/addons/sys_sounds/sounds/WS38/start.b64
new file mode 100644
index 000000000..6404ef086
--- /dev/null
+++ b/addons/sys_sounds/sounds/WS38/start.b64
@@ -0,0 +1,20 @@
+ACRE_B64_FILE = [
+ "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ov2d/av9p/22/bb9yv3Y/Qn+Lv5v/p/+1P7//h//Qv9f/33/nf+t/7j/qf+J/2L/Kv8J//D+9/4J/zn/av+V/7f/xv/K/8L/uv+w/6f/nv+E/2n/Pf8S/+H+u/6d/oz+gf55/nr+fP57/oT+hv6V/qL+q/7D/sf+1/7e/ur+//4S/yX/Lv8z/yb/G/8D//H+4P7S/sj+r/6Q/mP+OP4F/uP91P3W/e79EP4u/kP+Uf5S/lP+Vf5n/oj+sP7a/vT+Af/4/ur+3v7O/tT+4/73/gz/Gf8i/yT/H/8S/wn/AP/9/vj+8P7q/uD+3f7h/uT+7f7r/uP+z/6z/pj+hv5//o/+m/6y/rf+sf6T/m3+Ov4k/hT+J/48/mf+gP6e/pb+k/6D/oT+if6X/p7+mP54/lX+Gv7x/dD91f3t/Rj+Pv5c/lr+QP4h/gL+/f0Q/j7+f/7B/vP+Dv8G/+z+wf6b/nX+Zf5Z/lv+Xv5l/nL+ev6C/oH+if6A/nz+a/5o/m7+h/64/uP+Fv8z/z7/Kf///tH+pf6C/m3+aP5f/lr+Rv47/iv+H/4j/iv+Qf5F/kL+IP7z/cX9nv2a/bb94P0a/jz+UP49/h/+9f3X/df97f0h/kv+dv5+/mf+Rf4W/gn+AP4X/jP+V/54/n3+ef5l/lf+S/5I/kr+TP5G/jj+L/4q/kD+Y/6l/t7+Df8d/wb/0v6N/lX+Mv4y/k3+gf62/tv+4P7I/p3+c/5Q/kH+Qf5Q/lr+Yv5h/mH+aP56/pf+yP7r/gv/Dv/8/tP+mv5e/jT+Ef4R/hP+Lf49/lv+XP5o/lb+Tf4s/hX+8f3f/dT92f3p/fT9Df4H/gv+",
+ "5f3M/ab9lf2Y/aX9xP3O/dD9sP2L/U/9L/0R/Rv9NP1Z/Xr9hP2A/WL9Q/0z/Tv9X/2O/cj95P3x/dL9p/18/Wv9fv20/Qn+Xf6q/sP+vv6K/k3+D/7o/d/96v3//Qr+Dv71/df9r/2X/YX9kv2X/ar9mP2I/V39Qv0h/ST9L/1e/Y/9xP3z/Rf+MP5C/k3+ZP5x/nv+bv5Z/iz+Av7Y/cD9vf3P/e39Dv4u/kD+Sv5P/mP+dP6g/sP+5f7u/t3+tP55/jv+C/7r/er98v3+/Qr+/v35/d792v3c/eX9+P39/fn93P21/Y79hP2X/c39HP5q/qr+sv6c/kb+6f2G/Vf9Tf2C/cT9F/5O/lj+Q/4R/t39sv2f/bH9wv3e/dv9yv2q/Xv9YP1X/XX9pP3n/SD+Rv5S/kD+Mf4e/hb+HP4t/jn+Of4l/vf9wv2D/V/9UP1Y/YT9uP3z/R7+Pv44/if+8v20/XL9M/0J/fX8A/0r/W79sf3y/SH+PP5G/kj+Rf5I/lD+U/5O/j7+Hf7u/cb9pv2n/bf95f0N/iD+Ev7a/Y79Nv3+/Of8CP1V/b/9KP56/pr+lv5o/i3+7P2z/YT9Wf04/SH9Gv0l/Ur9lv3y/VX+of7I/sn+mP5c/iT+Ev4g/lb+kf7F/tP+vf6B/j/+EP4L/i3+bf6q/sr+v/5z/hL+nv1O/S39Sf2P/ez9PP5v/nT+Wv4t/gD+5v3Q/cn9sP2N/Uv9DP3S/ML84fwz/Z79FP5r/qH+mv58/kj+HP4H/gf+Hf4y/kP+Of4r/gv+8P3h/dz96/30/Qr+Ev4z/ln+jf7G/v7+I/8g//v+uv5s/i/+Av4R/jP+bv6L/oH+Q/7d/WD9/PzF/OH8OP24/UT+t/7x/u7+w/6I/l7+VP5m/pz+0/71/vv+4P6w/oD+T/5G/kH+Vf5Y/kv+M/4H/uP9zv3W/fv9PP6M/tn+B/8W//X+vf5z/iL+2P2S/WL9PP02/T39aP2f/ej9Lf52/qz+xP7G/q3+i/5x/mD+bP6C/q7+2f73/g3/CP/w/sD+if5Z/jP+HP4a/iv+Rv5k/n3+jf6N/oL+av5I/iP+8v3U/aL9fv1g/Vf9ZP2D/av92/38/RT+Dv70/c/9pv2g/bL95v0e/lb+cv5k/ir+1P11/Sn9CP0E/Sj9R/1n/Wr9bv1m/Yb9wP0w/rL+Jv9y/23/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gQCLAJwAtADHAOIA8gD8APYA8QDeAMoAqQCDAF8ANgATAOn/yP+p/5P/if+R/6j/0f/0/yQARQBxAIwAqwDHAOcACgEpAUABRgE6ARcB5wChAGIAJwAGAPT/9P/y//z////7//D/7f/y/wcANQBcAJcAtgDcAOAA5wDfAOUA6gADAR0BOwFMAUwBPgEpARMBCgELARUBIQEpASUBGQH8AOQA0QDOAOEAAQEiAUABUwFZAVQBRQFIAVABYgF/AZQBowGiAYQBYwEyAQQB3ACoAIMASAASAMX/f/88/w3/6/7f/uP+6/4A/wP/GP8X/y//P/9b/3n/i/+Y/4z/dv9g/1H/S/9d/3r/pP+//9n/4P/s//P/DQAwAGIAowDTAPUA+ADiAMgAtAC0AMgA+QA8AYYBxQHtAQMCCgIJAggCBQIIAv8B8wHLAZYBUAEGAcwAmgCCAGwAagBkAGIAYgBiAGoAfgCbAL8A4QD4APcA4AC6AIYAVAAdAPj/2P/A/7v/tv/B/9T/+/8qAFYAiACpAMIAyQDBAK0AoACNAIoAgQCCAHYAdABbAFYARwBJAE0AXwB+AKQAyQD6ABoBQgFlAX0BmAGYAZcBfgFhAT0BEQHuANgAvwC3AKIAkwCCAG8AZgBfAGAAdACHAKUArQCrAJgAegBXADQAGwAHAAQABQAEAAgACgAUABoANwBUAIcAuQD2ACUBSAFRAVIBNQEOAdIAnwBqAEkAKQAhABwAIQAmADkASABjAH0AmAC6ANkA+wANARQBDAH2AM4AqAB2AE4AKQANAPX/4f/U/9X/2v/m/wcALQBjAJIAwADqAP0ABgH9APgA7wDqAO8A",
+ "+gAEARABFQEcAR0BJAEzAUUBYQF6AZABnQGbAZgBjAGCAXcBdgFwAWwBXgFDASEB+ADfAMAAtQCnAKYAlACEAGEAQgAfAAUA9//7/wEAEgAVABUACgD9//P/8/8CABsANwBLAFQARgA5ABcAAQD6////HgA4AFsAaABzAGYAZABVAFsAaAB7AJIAmACgAI8AeQBgAFIATABMAFgAXgBaAFcARQAuAB4AEwAUAB8AJwA6ADMAOwAtADcAOABLAG8AkgDFAOIACgETAScBNAFOAWYBeAGQAZkBngGVAX0BbgFVAVEBUAFQAVwBWgFZAUkBLgEZAQUB+wD3APsAAAH9AO4A2wDAAKsAogCeAKMArQC4ALwAugC2AKQAnwCHAIsAhQCLAI4AjwCMAIsAhACDAH8AfgB9AG0AXgBCACUA/v/l/8T/v/+1/8P/x//X/9H/3//h/+7/9P8MACIARABcAGkAcQBsAGgAWQBVAFUAXwByAIsAoACsALkAvwDEAMwA1gDwAAMBGwEvAToBQgE8ATYBLwE0ATgBSQFTAVkBYQFWAU0BNgEmAQ4BBgHuAN8AxACtAI4AdABYAFAAVgBiAHoAkQCpALMAtACjAJkAgwCAAHkAfAB/AIQAeQBtAFUAOgAhAAkA///9/wgAFQAsAEAASABIAEMAMgAsABcAEQALAAgABQADAP7/+f/2//r/BwAlAEkAdgChAMsA5QAAAQYBCgEPARMBFQEWARcBEAH/APYA3QDRAM8A0QDnAPcAGwE1AU8BXwFrAXEBdAFxAWcBVwE+ASIBCAHjAM0AswCqAKUAogCgAJEAhwB7AHcAfQCGAJsArQC3AMEAuwCwAJoAhwCDAIgAkACgAKcAqACaAIgAcABjAGIAawCEAJkArwC2ALoAqACrAJkAmACeAKcAvgC3AMYAsgCvAJsAkACQAJAAnwClAK4ArACsAKcApgCjAKkAqgC0ALYAuQC0AK4AqACkAKsAqwC3ALwAuwC7ALAAowCWAI4AhQCLAIkAmgCXAKEAmwCnAKUAsQCtALcAuAC7ALkAsQCyAK8ApwCsAKcAsgCtAK4ArwCrAKoApgChAKkAsQC9AM4A0wDcAN0A1ADDAKkAjgBuAFAAOQApAB8AIAAeACcALgA4AEsAWABuAH4AiQCOAI8AgQB4AF0AWgBLAEoAPgBAADEAJgAXAA4ADQAWADEAUQB5AJgArwC+AL4AwgDAAMoA0ADjAO0A8wDwANQAywCnAJ4AlQCfAKcAvQDEAM8AzgDOAM8A2wD2ABQBNwFIAVwBXgFXAUkBOQEvAS4BMwFBAUIBSAFAATIBJQEbAR4BFgEcARQBBgH0AN0AxQC4AKgAoQCgAJ0AlgCJAHUAYQBIAEIAOABAAEQAVgBaAGMAYwBhAGwAcwCKAJsApwC2ALkAswClAI8AfgBxAGgAawBrAHEAaQBrAGQAYgBhAF4AZABtAHUAeQB5AHcAeABvAGgAXwBTAE8ATABWAGYAdwCOAJ8AsQC5ALsAugC2AMIAwgDSANAA2ADPAMsAtwCpAJ8AmwCaAKIAowCvAK0ArgCyALYAxADcAPUAFgElATEBKAEWAfsA3gC/ALQApACcAI0AewBvAF8AWQBZAF4AdgCWALUAzQDlAPIA9QD5AO8A7ADfANYAvwCoAIIAYgBIAC8AMAAvAEgAYAB9AJYApQCzALQArgCrAKkAmgCEAGkAUgAxAB8AAwD9/wAADwAqAE4AdgChAMcA4wABAQ8BHgEkASMBGQEHAe0AzwCvAJYAfQBvAGQAbAB0AIYAmQCzAMsA6QABARMBKwE2AUABQgE/ATMBJgELAfIA1QC0AJ4AjQCKAIgAkQCfAK4AuQDBAM0A0gDTANQA1QDLAMAAqACWAH4AaQBZAEUASABAAE8AUgBlAG4AewCBAIcAhwCRAI4AmACVAJoAlwCZAJcAmACfAKEAowCVAI0AegBnAE8ARAA2ADsAOwA9AEgASABVAFgAbAB+AJUArgC9ANcA4gDzAO4A6wDaANkAzgDOAMoAyQDGAMMA",
+ "xgDIANUA4gDwAPcABAH/AP8A5wDeAM8AxAC1AK8ApgCgAJUAkQCHAI0AjwCXAKgArAC0ALIAqwCiAJIAiQCFAH0AfAB2AHgAeAB5AHcAdgB7AHoAjACRAKEApACyALgAwADJAM0A0gDQANgA3QDnAPAA/gAKARUBGAEXAQoB/gDlANIAuQCtAJUAgABpAFMAPgAlABAABAACAA0AHwA9AFgAeQCRAK8AvwDRANYA2wDXAMwAwQCuAKIAjgCAAHYAbABpAGsAbgByAH4AjQCgALIAxwDYAOAA3ADUAM4AyADBALsAvQDAAMYAygDLAMwAzwDYAN4A6QDpAPMA6wDkAM8AwQCtAJ4AlACLAIYAigCKAIsAiQCIAIgAjgCaAKkAuwDFANYA1gDfANkA0wDGALgAswCgAJ0AlACVAJUAkgCRAJYAlACZAJcAnwCcAJ8AmgCUAI8AhgB+AHoAdgB5AHYAewBxAHMAYwBhAFIAUgBUAGAAcAB6AIkAkACXAJgAmQCdAKQApACqAKgAogCUAIgAfAB3AHEAdgB5AIQAggCGAIIAiACHAJcApQC3AMcAzQDRAMsAvQCtAJ8AlgCVAI0AkQCIAIAAcwBpAGEAXABkAGwAcQB8AHQAbgBcAFIAQgA8ADwASgBWAGYAcQB4AHoAfgCAAIMAiQCXAKIAswC4ALsAxQC/AMQAwADCAMYAwwDBALcAtACrAKIAmACWAJEAmgCVAJwAmgCgAKMApQCoAJsAqACmALEAswC0ALMApQCeAJAAiQCAAIgAgwCQAJMAnwClAK8ArgCzAK4AswCuAK8AqQCrAJgAkQCDAIAAfAB+AIgAjwCYAJIAlQCIAIcAdwB1AG0AbwB0AHAAcgBkAGAAWABZAF8AbQB2AIMAiACUAI4AlQCOAJEAlwCRAJwAkwCUAIwAigCEAIUAjQCPAJ0ApACtAKwArgCrALMArwCyALYAtQC9ALgAtQCwAKQAowCmAKUArQCoAK8AqgCnAKkAqACuAK4AuAC7AMIAygDGAMcAwQDMAMwA1wDaANgA5QDcAOMA4ADqAOsA7wDsAOoA3gDLALYApQCVAJEAjACSAJQAmQCbAI8AjQCCAIQAfgCAAIEAggB9AIQAggCIAIEAhwCJAIcAgwB2AHIAZQBeAFgAXABdAGMAagBsAGsAaQBgAFcATQBOAE0AWwBlAG8AdACCAIUAhgCBAHsAdQBpAF8AVgBUAFEAUQBXAG0AdACFAIwAnQCjAK0AuADEAM4A0ADTAMcAugCqAJEAggB0AHIAdAB7AIQAigCXAKEApwCzALwAzADRAN0A3wDfANIAzwC+ALQApACXAI0AfgB1AGwAaABuAGwAgwCPAKUAugDIAM8A1wDOANIAzADEALkAswCsAKEAnQCOAIwAggCIAIQAhwCEAIEAcwBuAGEAXABcAFoAYwBmAHQAdQB6AHUAdAB6AHYAgACEAIQAjQCAAHwAbgBjAFYAVgBVAGIAaQB2AIMAlQCgAK0AtAC9AL0AwQC4ALYAqgCiAJgAhgB+AHEAbABnAGgAcAB5AH8AjgCXAJ8AoQCpALUAuAC+ALoAugC7ALAArACiAJEAkQCEAI0AiQCRAI8AjgCKAIQAgACAAIIAjACWAKAAqQCoAKQAowCdAJ0AmgCZAJwAmACVAJEAkACOAJAAkwCcAKgApACwAK8AtgCwAK8ArACsAKsArQCfAJ8AiwCIAHwAeABxAHAAcgBvAHAAcQB0AGsAbABoAGcAbABrAGkAYwBaAFYAUwBRAFkAWgBfAGMAaABmAGYAWwBcAFUAXQBZAGMAYgBnAGMAXwBkAGAAawBwAH0AgwCJAIsAkQCPAJoAmQClAKUAsACpAKwAowCeAJoAkACQAIMAhgCBAIYAggCCAIQAiwCYAJcApACnALMAsQCyALIAtwC4ALoArgCxAKsArgCmAKEAmgCaAJwAnQCiAKAAngCZAKEAoQCjAKIAnQCfAKMAnACdAJUAjwCFAH8AfQB1AG8AagBoAGgAXwBkAF4AYABfAFwAXwBdAFgA",
+ "WwBbAFsAZABnAG8AcABzAG0AcwBuAHEAcABtAHcAeQB6AHkAegB2AHcAdQB5AHoAeQB1AHQAbABpAGkAbABxAHoAhQCIAJIAlgCbAJ4AnACYAJ0AnACeAJwAlgCLAIwAhQCFAH4AgQB7AIAAfgCAAIcAiACNAJAAmACYAJoAnQCZAJYAjwCOAIEAeQByAGwAYQBWAFsAVABWAFMAVwBjAGMAbQBuAHQAdAB1AHUAeQB8AIEAfwCBAHgAdwBxAHQAdQB6AIEAiQCQAJwAnACXAJQAhQB/AG0AcwBpAG0AZwBnAGQAZABjAGUAYgBiAGYAagBxAHMAcwBpAGYAVgBQAEoASQBQAFUAWABeAGQAbgBzAH0AfwCMAIgAjwCKAH0AegBrAGUAYQBZAFAATABMAEsAUQBKAFAAVABZAF4AawBtAHgAdgB3AG0AcwBjAGoAXgBgAFwAWABOAEkAQgBGAEIATABSAGMAbAB0AHgAegB6AHwAegB8AHcAgACDAIkAgwCIAIIAhgCHAIcAlACVAJoAkgCbAJIAlQCPAI0AjwCQAJgAlQCUAJQAjwCPAIgAhQCAAHsAdwB2AHYAegBzAHUAdwB3AHkAfgCCAIUAigCPAIwAjwCMAIkAhAB/AHsAdQBvAGsAYQBdAFkAWABbAFgAYgBeAGkAbQBsAHcAegB5AIQAeAB/AHcAeQByAHAAaQBnAF8AWwBYAF0AVABeAFkAXABfAF0AWwBYAFsAXQBjAF8AagBoAHAAcgB3AHQAdgB4AHkAdgB6AHgAdQBzAG4AZwBnAGMAYgBdAFEAVABKAEoAQgBGAEIASABLAE0AWABZAF4AXwBeAGMAYABmAGQAZABjAGYAZQBjAGQAYwBlAGkAZwBpAGkAbgBxAHYAdgB1AHMAdgB2AHwAewB9AIAAggCNAIsAjgCLAI4AjACLAJAAjQCKAIsAgQCJAH0AgAB3AHEAbABnAGcAZQBeAFkAUwBTAEwASABBAEEAPgA+AEAAQgBGAFAAUABbAF4AYQBrAGsAbwBoAGIAWwBTAE4ASQBGAEQARgBLAFQAXABpAG8AewCGAIoAlgCWAJ8AmgCbAJkAkgCNAIAAegBwAG0AawBrAG0AdgB/AIMAjwCUAJ0AmQCaAJgAowCfAKAAlQCOAIMAcwBrAGQAYQBeAFwAZQBlAG4AbgBxAHAAcgB0AHcAdwB0AHEAcwBqAGkAYQBdAFwAXwBdAFwAXgBcAF0AXgBcAFwAWgBYAGAAWgBfAF8AXABYAFcAWABcAF8AZgBqAHEAdAByAHEAagBnAGMAZgBhAGIAYwBnAGgAagBqAHMAeACAAIQAkACRAJgAmwCcAJUAjQCMAIwAiwCLAI8AmACdAKcAoACeAKMAnQCgAJoAnACaAJEAjQCGAH0AdgBuAGcAbQBqAGwAaQBrAGwAcAB2AHQAdwByAHMAagBrAF4AYABWAFsAWQBbAF8AXgBjAFgAXQBVAFcAWwBVAFsATwBLAEMAPAA7ADcAOwA6AEMAPwBHAEQATQBHAFMASwBcAF4AZwBoAGsAcABtAG8AcgB2AHsAfwCGAI0AjACOAIwAiwCNAI0AjACLAIgAhQCHAIEAgwB6AH4AegB+AHwAgQCAAIQAgwCGAIIAgwB+AH8AdQB3AHcAcwBxAGoAbABoAGsAZABiAGUAZwBsAG4AbgB0AHUAcwByAHAAcABzAHYAdQB2AG8AawBjAGUAYwBlAG4AaABrAGMAXwBYAE4AUwBOAFkAXABhAGIAYgBgAFcAUQBPAFQAUwBXAFkAXgBYAFUAUABVAFYAYgBmAHEAdwB3AHwAeAB8AHoAeQB2AH4AdAB7AG4AagBhAFsAXQBbAGQAYQBnAGYAaQBnAGsAaABnAGUAZgBeAF8AVABVAE8AUwBMAFMATABRAE8ATgBVAFgAYABfAGIAYQBeAGEAXgBlAGAAXABkAF8AaABcAF0AVgBXAFUAWQBYAFwAYgBhAGAAXwBfAGYAYgBuAGYAawBeAGEAVABPAFEASABVAFIAXABdAF0AXABZAF0A",
+ "XQBjAGUAZgBmAG4AawBwAGgAZgBrAHEAegB/AIMAfQCIAH8AiwCDAIYAgACHAIgAhQCBAHkAeQByAHIAaABkAGEAWQBbAFIAVQBVAFkAXgBgAGIAXQBdAGAAXgBeAF8AXgBgAF0AWgBVAEwAQgBDAEIAQwBDAEkATABIAEwATgBUAFgAXwBiAF8AZgBhAGMAXQBVAFQAWQBZAF4AWgBYAFsAUABTAFAAVABYAFgAXgBcAF8AXQBeAFwAWABeAGoAZgBwAG4AbwBrAGYAZwBlAGYAZwBjAGcAagBnAGsAZABrAGoAcAB0AH0AewCAAHgAfgB4AHwAfQCCAIIAggB/AHoAfQByAG0AaQBoAG0AaQBrAGYAYwBhAGQAXQBdAGEAYQBkAGsAbgBvAGwAaQBoAGQAaQBlAGUAXQBVAFUAUABMAEkAQgBIAEMASgBGAEUAQgBBADwAOwA5AD0AQQBHAEkARQBBADkANAAwACwAMgAzADcAOAAzADUAMQAyADYANAA8AD8ARgBIAE4ATgBSAFIAUABSAE4AUQBTAFYAWwBbAFgAWgBgAGUAawBwAHUAdwB7AIMAgwCJAIcAigCHAIMAhwCBAH4AeABzAHYAbgBzAHAAbgBsAGkAbABzAHYAdwB6AHcAeABzAG4AZQBlAGAAZwBoAG0AZgBfAFwAVwBcAFgAWgBbAGUAYQBnAFsAXABUAFEAUQBSAFgAWABUAE0ATABJAEoASABJAE4AUQBTAFEATwBMAEQAQgBCAEIAPwBAADoAPwA6AD8APwBJAE0AUQBcAF8AZQBoAGkAcQBzAHEAcABtAGoAagBkAGcAYABiAGcAZQBxAHUAfAB6AHsAeAB3AHgAdwB4AHsAdgB4AHYAcQBuAGgAagBfAGcAWwBeAFsAXABeAFcAWABQAFMATQBRAEoAVABOAFMASQBMAEoATgBJAE8ATQBUAFMAWwBaAFwAWQBaAFsAXABgAGAAXgBdAFsAWgBZAFoAVABXAFYAXQBeAFgAXABVAF0AWQBZAFsAXQBeAGMAWABeAF4AYgBgAGQAZABhAGIAWwBgAGMAXwBiAF8AZQBiAGUAaABjAGIAYABmAGIAZgBlAGwAZABmAFsAXABVAFgAVwBaAF4AXABgAF4AVQBVAFUAWQBXAFUAVwBdAFoAWwBYAFEAVgBRAFUAVABYAFYAVQBLAEsARABBAEMAQABJAEoATQBNAFEAUQBPAFQAVQBbAF4AXQBdAF8AXwBgAF4AXgBcAF8AXABhAF4AYwBgAF8AVgBcAFoAYgBoAHQAcwB3AHEAdABzAHIAcgB1AHQAcwByAHMAcABrAGMAYgBfAFgAVwBXAFYAXQBXAFwAWQBdAGQAXgBmAF8AXgBcAFcAUgBRAFIAVgBaAF8AXwBcAFoAVgBUAFEATgBOAFUAVQBYAFIATABGAEAAOgA7ADsAPQA/AEIAQQBCAEIARQBCAEcATQBOAFIAVgBZAFgAVgBZAFUAWABaAFYAXABbAF4AXQBeAF0AXQBgAFoAYQBaAFwAXQBbAGEAXgBnAGUAZwBnAGEAXABVAFMAUwBRAFYAWABaAFQAVABRAFEAUQBOAFYAVQBhAGEAaQBjAGUAWwBXAFYAUABWAEwAVABLAFEATwBRAFAAWABWAGIAXwBnAGQAawBoAGsAZgBkAF4AWwBPAE0ARwBQAEkATQBNAFMAUwBRAFQASwBPAEoAVQBXAFkAVgBYAFEAUABJAEIAPwA/AD0APgBJAEYATwBKAEsATABIAFUATwBVAEsASwBFAEEAQwA7ADsANgA9ADgAQgA2AEAANwA7ADgAOwBDAEQATgBKAEsAQwBKAEIASQBIAFAAUQBTAFgAWQBZAFIAVABQAFgAVgBaAFsAVQBUAFYAVQBSAFgAVgBZAGIAXwBiAF0AWgBZAFEAVQBMAFEASgBLAEcARgBGAEIARABJAEoAUABLAE4ATQBEAEIAQgBDAEIARwBDAEMARQA4AEQAOgBDAEMASABGAEwARABIAEUASABIAEUASQBGAEQAQwA/AEQA",
+ "QgBIAEkAUABLAFAASQBQAE8ATQBUAEsAVABMAFQARwBHAEEAQwBBAEMAQwBIAEsASgBMAEUASgBCAEUARgBHAEsARABGAEQAQwBFAEIAQgBBAEMAQQBDAD8AQABAAD8AQgBBAEcAQABBAD0APgBEAD8ARAA+AEUAPwBHAEUATQBFAEsARQBKAEUARgBEAD4AQAA6ADcAOgA+AD8AQwBCAEgAQwBGAEMASwBIAEUASQBFAEwATQBKAE0ASwBOAEoASwBJAEwARwBKAEkARgBEAEMAQQBFAD8AQgBDAEMARgBAAEYAQQBEAEYASgBIAEYARQBDAEIAQwBAAEMAPQBDAEUAQgA7AD8APgA7AD4APABGAEMARABGAEEAQQA8AEAAPwBDAEEASABJAEwATgBIAE8ARgBKAEMASwBEAEkARgBDAEkARABIAD8APQA/AD0AQAA5AD0AOQA5ADYANwA8ADgAPAA5ADoAQABBAEIARgA/AEEAPgA9AEMARABEAEYAQgBDAEEAPwBBAD8APQBBAEQASABHAE0ASwBPAEgATABQAE4AUwBPAFAATABIAE4ASQBMAE4ATQBRAFAASgBJAEQARgBIAEkATQBVAFAAVQBUAFMATwBLAFAAUQBWAFMAVQBQAFAASQBFAEQAQgBHAEgAQwBGAD4AQQA8AD0APAA8AD4AQABCAEgARABDAD4AQgBCAEEAQQBCAEIAPwBAAD0AQwA/AD8APwBBAD8AOwA6ADoANgA8ADoARABCAEQAQgBAAEMAQQBBAEMARgBGAEIARABDAEMARgBAAEUAPQBEAEUASQBGAEQASQBDAEkARQBGAEQASQBLAEwASQBLAEkASABKAEcATABIAEUASABLAEsARwBJAEgASwBJAE4ATABQAFAAUQBTAFIAVABSAFEATQBPAE8ASQBNAEYATQBEAE0ASABLAEwASABNAEwATwBPAFEATgBQAEkASgBHAEcARgBDAEMAQQA8AEAAPABBADoAOQA6ADoAOQA6ADcAOwA5AEAAOQA6ADgAOQA8ADUAPgA3ADwAOQA6ADYAMQA5AD0APQBAAEIAQQA8ADwAPQBBAEEAQwBEAEUARQA/ADoAOAA3ADwAPwBHAE0ATwBOAFIASgBRAEYARwBIAFAAUwBUAFMATgBHAEwARQBLAEUATABOAE4AUwBLAFIATgBRAEwAUgBUAFcAVABPAEsATgBNAFAATwBOAFEATwBMAEMAPgBAAEAARQBGAEcARwBKAEgAQQBCAD0AQwA+AEIARABCAEIAQQA7ADgANQA2AEEAPgBEAEIARQBBAEIAPwBEAEMARwBHAEoATQBEAEkAOgBDAEIASgBEAEgAQwBIAEMARgBAAEMAQQBKAEoAUQBMAEkAPwA/AD8AQQBEAEoASQBMAE0ARQBHAEgARABHAEEASgBIAEwASABKAEcASABJAEkATgBLAFIATQBRAEoATgBKAE8ATwBOAE8ASgBMAEIAQgA6AEAAPQBBAEIARABEAEUASABDAEcAQwBHAEMARABHAEgARQBGAEMAQgBDAEQAPwA9AD0APwA+AD0APgBBAEcARABMAEoASgBFAEkASABHAEgARABIAEMASQBEAEUAOgA7ADgAOQA3ADwAPgA7AD8AQgBBAEgARABIAEQASQBFAEQAQwBDAEYASQBFAEkARQBMAEUASgBIAEQARgBDAEkASwBLAEwAUQBOAE4ARwBKAEQARQBFAEIARABEAEYAQgA+ADgAOgA2ADwAOABBAEUAQABLAEQAQgA9ADsAPAA2AD4AQABHAEAAQgA7AD4ANAA6ADoAPgA/AEEARwBDAEUAPgA/AEMAPQBEAEYAQQBJAEcASgBJAEQAUABNAFIATABSAE8ATQBQAEsASwBMAEkARwBHAEMAQwBFAD8ASQA+AEUAPAA/AD8AQgBFAEQARwBFAEQARAA/AEMAQABAAD0AQABAAD0APAA8ADsANQA6ADYAQgA4AEAANAA3ADkANgA3ADIAOQA5ADwAOAA6ADcAMwAwAC0AMgA0ADYA",
+ "OQA3ADsAMwA0ADgANwA9ADcAOQA3ADkANgA3ADUANgA1ADwAQABCAEAAQwBAAEEAQABEAEMARwBGAEcAQgBBAD0APQA4AD0APQBLAEEAUABBAEEAOAA7ADsAQQBCAEIARgBCADwAPgA3ADsAOgBAADsAQQBBAD4AOAA1ADkAOwBAAEUASQBNAEgARwBCAD8AQABFAEoASABJAEQARgA8AD0APwBAAEMARgBAAEIAPQBEAEAAQwA8AD4AQAA7ADwANQA9ADMANAAyADQAOAA1ADkAMgA5ADIANAAzADoAOAA2ADwANQA0ADcAMwA5ADIANgA1ADkAOwA/ADoAPAA5ADkAPQA9AEAAOgA5ADsANQA5ADIAOAA4ADwAOgA5ADgANAA8ADsAPQA9AD4AQQBAAEAAPwA8AEQAPgBAAEYAQQBGAD4AQAA/AD0APwBBAEIARgBBAEcAQQBCAD0AOgA3ADcAOwA3ADgAOAA2ADIAMwA0ADQANwAyADUANAA1ADgAMgA5ADUANwAzADgAMgA6ADEANQAsADMAMgA4ADEANwAyADUAMgA4ADEANwAzADYAMwA0ADEANAAvADYAMgA7ADcAOAA3ADUANgAyADsAOAA8ADsANgA8ADoAPQA7ADoANwA5ADkAOwA5ADMANAAwADAANAA2ADgANQA0ADUAMQAxADAAMgAwADUAOAA2ADsAOwA8ADsAPAA8AD4AOgA9ADgAOgA4ADcAOAA3ADIANwAzADUAMwA3ADUANQA7ADoAQQA5ADoAMQAyADAAMgAzADkAMQA6ADIAOAA2ADQANQA0ADYANgA1ADsANgA7ADEANgA0ADcAMwA2ADYAPwA2ADkANAAzADAALwAzAC8AMwAyADEAMwAuADMAMgAvAC8ALAAwADYAMgA5ADUANgA2ADIANgAzADMAMQAxADIANQAwADMALgAxAC0ALQAvADMANQA2ADUAOAAzAC8ANQAzAD0ANQA+ADkAPAA0ADIAMgAsADMALgA0ADMAOgA6ADcAMwAxADMANAA8ADgAQgA7ADwANgA1ADEAMgA4ADQANwAzADUALwA0ADIAOAA4ADoANgA8ADYAMwAtADAAKgAyADMAMQA1ADIAOQAxADQALgA1ADEAOgAvADgAMAA5ADAAMwAxADEALAAuADIALgA0AC4ALQAtAC4ALwAwADAALQAxACsAMgArADIANQAwADYANwA2ADYALQAvAC4ANQA1ADQAOAA1AD0ANwA2ADIAMAA1ADYAOAA7ADsAPQA7ADcAMQA1ADEAMAAtADUAMAA0ACwANwArADEALQA0ADAAMAAzADYAMwAvACwALQAxACoAKwAqACwAMQArAC0AKgAxADMAMAAxACsAMgA3ADEAMAAtADAAKQAtACgALwAuADcAOgA8ADgANQAzADMAMQA5ADQAOAA5ADwAOwA0ADUAKwAwAC8AMgA2ADMAOAAvADIALAAwAC4ALwAtADQAMwA1ADIANAA1AC8AMwA0AD0AOgA7ADoAOQA5ADIANQAyAC8AMgAuADMAMwA2ADYAMgA1ADYAOQA1ADQANQAyADEAMwA1ADYAKwAvACsAKgAxAC0ANwAyADUAMgAwAC4ALwAqAC8ALQA0ADEANQA0ADMAMQAwAC0ALwAvADEANAA5ADMANQAlACkAKQAqAC4AMAAwADQALgAyACwAMgA0AC8ANwAyADgAMgAzADUAMgAvADEANAA2ADgANwA0ADEALQAyAC0AMgAxADkAOwA+ADoAOgAzADYAMwAxADMANwA0ADMALQAuACsALQAsADEAMgA5ADAAMQAqACkAKQAsACkALQA1ADMANgAxADEALQAvACoALgArAC0AMQAvADIAKAAoACMAIQAmACoAJwAuADMANQA2ADAAMAAuACsAMgArADIAMAAxAC8ALAAsACsALAAmAC0AKgAwAC8AMQAwADIAMAAsADEALwAwADAAMQAzAC0AMgAwADIAMQAzAC0AJwAzACoAMQAsAC0ALwAvAC4AKwAoAC0AKgAzADIANwA2ADMA",
+ "MwAwADEANQAxADQANAAuADAAJgAzACwALgAqACkALQAtAC4ALwA0ADIANQAxACoAMAAwADAAMwAsACwAMgAzADQAMAAvACsALgApACUAKgAjACsAJgAyACsAMQApAC8AKQAzACoANQAtADYAMAAzAC4ALgAsACwALgAuADAAMgAwADQALgA2ACsAMQArADAALwAvAC8ALQAtADcAMAA5ADAANwA0ADEAMQAvADMANAA2ADMALwAuACcALQAqACwAMAArADAAMAAtADAAMQAuADEAMQAvADUALQAvACkAKQArACgAMAAuADAAMAAuACsAKwAlACkAKgAtADEAMwAyAC0AJwAnACUAKAAqACgALQArAC4AKAAlACYAIAAmACcAKgAuACkALwAtACsALQAnACoALgAtADQALwAyAC4AKgArACkAJwAsACkALwAnACoALAAvADMANAA1ADQANgAzAC8AMAAxADUAMAAsADEAMwA1ADEALAAsACkAKwAxADMAOgA4ADgANQA6ADUANAAwADUAMQA4ADQANwA1ADQANwA1ADYALgAsACcALQArADIAKgAvAC8ALwAvACkALAAlACoAKQAwAC0ALwAuACkAKgAkACoAJgApACkAKAAtACgALwApADIALQAtADIAMwAzADEAMgA1ADAAMQAsACoALwAuADYALgA1AC8AMgA0ADcAMwA0ADIAMgAxADMALQA0AC4AMwAwAC4ALQApACwALgAtAC4AMQA1ADIANAAyADAAMQAwADIAMQAyAC0ALgAtACwALQAsADIAMgAwAC0ALAAkACsAIgAqACcAKwArAC8AKQArACMAJQAnACQALAAmACgAKwAnAC0AJgAqACoAKQAoACgAKgAtACsAKwApACgALQAuADAALgAyADAALAAuAC0ALgAqAC4ALgA1AC8ALQAyAC0ANwAwADEALgAyADIAMQAwAC4AMwA0ADUANQAzADQANAAzADAAMgAuADEANwA3ADMALAAwACoALwAuAC0AMAAyAC8AMAAqADEALgAxADYANAA2AC4AMgAuADEALgAyAC0ALwAwAC8AMQAwADAAKwAqACgALQApACoAKgAwADAAKwArACYALAAnACwAJwAoACwALAAzAC0ANAAoADIAKAArACkAKQAoACoALgArADAALgAvACwAKAAsAC4ALAAyAC8AMgAxADEAMAAyADAALgAxACwAMQAsAC8ALgAsACwALQAuADEALgAyAC4ANAArADEAJgAsACsAKwArACwAKwAtACsALgArACoAKAArACsAKgArACwAKgAtACwALAAsACsAKgArADIALgAxACwAKwAvAC8AMQAvACkALgAsAC0ALAAvAC0ALwAwAC0ALgAsAC0ALgAvACkAJwAnACcAKwAvAC8AKwAtACsAKQAmACsAKgApAC4ALQA1ADEALgApACYAKwAoACsAJQArAC4ALwArACcAKgAoAC0AKQAwADAAMQAyAC8ALQAnACgAKgAvADMAMQAuAC0ALwAwAC4ALgAqADEAMQAxADMALAA0ACcALQAqACcAKwAoACwAKwArAC8AKwAsADAAKgAxACoAMgAuADAAMQApAC0AJwAwACsALQAqACgAKQArACoAKAAnACYAKAArACoAKQAnACYAIgAfAB8AJQAmACUAJgAoACgAKQApACcAJgAoACgAJgAnACkAJwAnACcAKgArACkAKQApACQAKgAsAC0ALwAoADAAKAAwACYALAAoACsAJQAmACsAKgAoACQAJgAmACAAKAAlACgAKwAsADAAKQAsACQAKQAkACYAKQAiACkAJwAtACgAKQAlACYAJQAlACgAJgAuACYALgAiAC0AJwAsACQAJQAjACYAJQApACcALQApACsAJgAgACIAHwAkACcAJgAtAC0AMAAnACcAIAAkACAAKQAoADIALQAyAC4AKQAoACUAHwAmACgAKgAsADAAKwAwACwAKwAkACYAIwArACoAMAAsACoAJAAnACQAIwAoACoALgAnACsAIgAkACAA",
+ "HgAiACQAJQAoACwAKwAqACUAJQAjACMAIQAqACYAKgAmAC4AJwApACYAIAAhACEAKgAkACYAJAAeACIAIwAjACYAJAApACUAKgAhACcAHgAoACMAJwAsACgAKAAmACIAJQAeACMAHwAkACMAJgAiACUAIAAlACEAJgAhACgAJAAoACIAJgAiACQAJAAnACMAKAAiACUAKAAmACgAKgAlACkAIAAfAB8AHwAjACIAJQApACUAIQAfAB4AIgAjACEAJwAmACUAHQAjAB8AIAAfACMAIQAlACUAJwAiACEAHQAcABwAIgAiACcAJwAjACcAIAAoAB0AJAAlACYAIwAfACMAJgAhACgAHwAoAB8AJAAhACEAIQAfACcAKAAjACgAHgAlAB8AIwAhACIAIwAjACYAJQAmAB8AIgAcAB0AHwAoACQALgAqADAAJwAnACIAHQAiAB8AKAAkACoAKgAnACcAJQAnACMAJwAlACMAJgAmACcAJwAiACcAKAArACYALgAkACoAJAAjACUAHwAmACQALAAnACEAIwAdACUAIQAqACgALAAqAC0AIQAkAB0AJAAdACcAIwAtACUAKgAqACcAJgAmACEAJgAmACsALAAoACUAJwAhACYAIAAlACIAKAAkACYAIwAkACQAIQAeAB0AIAAhACcAJQApACQAKAAhACUAIwAjACYAKQAsACgAJwAlACQAJgAiACIAIQAmACkALwArACwAKwAiAB8AIAAhACIAJwApACYAJwAgACcAIgAmACcAJQAsACgAKQAkACUAJAAlACcAJAAlACIAJAAjAB4AIgAkACoAKQApACUAKAAnACUAIgAjACMAKgAqADEAMgAvACkAIwAjACQAJgAmAC4AKgAtACUAJwAkACYAJgAiACQAJAAnACgAJwAoACgAKwAmACYAJwAkACUAIwAhACIAIAAkACUAKwApACsAJQAqACMAJwAlAB8AJQAkACkAKQAmACIAIwAjACgAKwAuACoALgAhACEAHQAlACMAKAAtACkAKgApACgAJQAoAB8AKQAhAC8AKAArACoAJwArACEAKgAhACkAIgArACQAKgAnACgAJgAkACQAJgAgACYAJgAnAC0AKQApACgALwAxAC0AKQAmACIAIwAhACcAJAAmACcAKQAtACQAJQAiACUAJQAlACkAJQApACsAKQAlACgAJAAmAC0AJAApAB8AJwAgACsAJwAsACwAJwAqACQAJQAmACUAJAAsACgAJwAqACYAJQArACYAMAAoADAAJgAtACUAKgAlACYAKAAqACgALgAoACgAKAAkACcAIQAnACcAKwAuACsAMQAmACcAJQAnACsAKAAnACgAIwAkACQAIAAgAB4AIwAkACkAKwArACwAJQAoACMAJgApACcAKgAjAC0AJAArACIALgApACoAJwApAC8AKQArACYAKQAlACYAJAAqACcALgAnACgAJgAqACQAJgAhACcAKAAqACgAKAApACUAIwAmACkAKQArACsANgAuAC4AJwAiAB8AJAAgACgAJgAsACgAMAAnACoAIwAlACYAKwAtACwALAAlACMAJwAiACgAJgArACgAKwAnACYAJAAlACUAIgAmACQAKAArACcAJQAiACMAIwAkACkAJwAmACQAJAAjACUAJgAjACgAIQAnACcAIwAnAB0AIQAdACUAJAAlACQAJAAmACMAHwAcACUAIgAsACkAKQAoACUAJwAjACYAIAAjACMAJAAoACYAKAAeACUAIwAnACQAJAAmACUAJwAgACEAIAAfACYAJQAoACgAJwAkACEAIAAgACUAJAAoACMAJQAkACMAIQAjACUAIwAhACUAIgAmACMAJgAkACQAJQAhACAAJAAjACIAJgAnACQAIgAiACQAJgAnACcAJAAiACEAHAAgABwAIQAkACYAKgAoACQAJgAdACQAIQAkACAAIAAkACUAKAAiACAAIgAkACEAJwAgACYAIwAmACQAIQAdAB4AHAAgACIAKQAnACsAJQAmACIAHwAiACUAJwAlACIA",
+ "JwAeACYAHwAgACIAIAAmAB0AIAAeACYAIAAhACQAIwAiACAAIQAhACAAIgAXAB4AGQAiACAAIgAjAB0AIQAcAB4AIwAiACUAIwAjACIAIAAlABwAIAAbACEAHQAdABsAGwAdAB8AHgAjACQAIAAkAB8AIwAfAB0AHQAfAB0AJAAfACEAHQAfABwAHwAjACQAHgAfAB8AIAAgACAAIAAmACUAIwAiAB8AIAAaABsAHgAjACEAJAAnACUAIQAcAB4AGAAeACIAJAAiACIAIAAgAB8AGwAcABoAHAAgACEAIwAfAB8AJAAeACMAIQAgACcAJQAkACQAHwAhAB8AJwAmACgAKAAhACEAFwAcABwAHAAfAB8AIAAnACEAGwAbABAAHgAXACEAHwAoACAAHwAaABkAGAAaABoAHAAhACMAIwAjACAAFwAfABYAHgAhACQAJgAkACIAIwAeACEAHQAeABwAIwAgAB8AHwAfACQAIAAoACUAIwAfAB8AHQAlAB4AJAAdACIAIAAjAB8AIwAiACMAIgAfACMAHgAiAB4AHwAgABkAGwAdABkAHwAeACkAHQAiAB4AHQAgABgAHQAdAB4AIwAiACAAHAAcABsAIAAcAB8AHAAhACIAIAAlAB8AHAAfABwAHwAaABwAHQAbACIAIAAiACIAHwAfACAAHQAjACAAIQAiACAAJgAkACEAHwAcAB8AHwAcACEAHgAiACAAIAAeAB8AHgAdACEAHQAgABsAHwAcABoAHgAcAB8AHQAgACMAIAAjACMAJgAfAB4AHgAZACAAGgAiAB8AIwAlACAAJAAcAB8AGwAcACQAIgAnACMAIQAiACEAIAAdAB8AHwAgAB8AIQAjACMAIgAiABwAGwAcAB4AIQAjACcAJgAjAB4AGAAcABkAHgAaAB0AHQAgACQAJAAgAB4AGgAfABsAHgAYACEAGgAhABoAGAAgABgAJAAZACAAHAAeACAAIAAjACUAIQAlABwAIQAVAB0AIAAiAB8AHwAeACEAIQAfABwAHgAcAB8AIwAcACIAHAAfABsAGwAYABsAHAAgACMAHgAeABsAGQAdABkAGgAbACUAHQAiABcAHQAeAB4AIAAbAB4AHAAeABoAFwAYAB0AHQAiACMAIwAfABoAGgAWAB8AHQAhACAAHQAfABwAIAAaABwAHgAbACUAIAAnACMAIQAgABkAHAAjAB8AJQAgACYAIgAfAB0AGgAbABoAHwAhACIAJAAiACEAIAAaAB0AGQAfABsAJQAZACQAGAAgAB4AHQAdAB4AIQAgAB8AHgAaABoAFgAcABkAIgAhACMAIwAiAB8AHQAVABYAGgAdAB8AIgAfACEAGwAhABYAHAAaAB4AHgAlAB0AHwAaABsAFQAaABoAJQAfACQAHwAlABwAHwAXABsAGgAgACUAIwAkAB8AHQAfABgAIQAgAB0AHwAbACMAIQAfACAAGwAkACEAIgAiAB8AHwAlACEAHQAeAB8AIgAhAB4AHwAaAB8AHgAdACAAIAAjACQAIgAdAB0AHQAdABsAIAAbACEAJQAgACMAGQAhACAAJAAfACAAIwAhACEAIwAiABwAIAAaAB4AHgAlACQAHgAjABkAHAAYACEAGAAeABwAIAAfACEAIwAeACEAHgAXABUAGAAXABwAGgAcAB8AIQAiAB4AHAAbABUAHgAhACcAJgAfAB8AGwAbABkAFwAWABwAHwAiABwAIAAdABwAIQAaAB4AHwAmACMAJQAhAB8AIAAdABsAHgAhACYAJgAiACEAGwAbABcAIAAcACMAJAAkACQAJAAZACIAGgAeACEAIQAiACEAIAAdABkAFgAgACMAIAAdACIAHQAfABsAHAAYABsAFwAZABsAGwAZAB8AHQAfABsAGwAdABkAHgAeABwAHQAfAB0AHQAeAB0AIAAfAB4AHAAjABwAIwAeACEAHQAeABoAGQAdABgAHgAcAB4AHgAcAB0AHwAdABsAFwAdAB8AIQAeABsAHQAZABsAFwAcACAAIAAiACAAIQAbAB0A",
+ "HgAeAB4AIQAmACEAIQAjABsAHgAWAB8AFwAkABoAIwAZAB0AGQAXABoAGQAaAB0AGgAfABsAGwAdABkAHwAcABwAGQAaAB8AIAAcABkAFwAaAB4AHwAbABoAHAAdABwAHwAZAB4AHgAgABwAHAAaABsAHAAYAB0AHwAeAB4AHgAfAB0AGgAaABUAGQAUABkAHQAbABsAGQAgABcAGwAVABgAHAAXABwAFQAcABcAHAAUABoAFgAfABkAHwAZABoAHQAZABoAGAAXABYAGwAZABwAHwAfAB4AHgAcAB4AGwAeAB0AHQAbABoAHAAZAB0AHQAZABwAGwAlABsAGAATABkAGQAcABoAHQAbABsAFgAaABwAHQAZACAAHAAgAB0AHgAbABwAHAAfABwAGgAaAB0AHwAgABsAFgAXABkAHAAeAB8AHgAaAB0AFwAbABsAHAAcABwAGQAcABsAGwAdABcAGwAWABgAGQAcAB4AGgAcABkAFAAYABcAGwAcABsAIQAbABoADwANAAUAAAADAP//AgD9//z//v/2//3/+P8BAPz/AQABAP7/BQD7/////f/+//7/AAAFAAUA/v8AAPr//v/6////AQAEAAIABAAAAP///v/7//3/AAACAAUAAAAGAAEAAwABAP3/AAD9/wUAAgACAAQAAAABAPz////+//3/AQABAAIAAwD+/////v/8//7/AgABAAEA/f8EAP7//v/4////AwAAAAEAAgD+/wIA+/////r/AAAAAAIAAgABAAEA+v8CAPz/AgD//wMAAgABAP///v/9//z/+P/7/wIAAgAHAAMABQD7//n/+v/7/wMAAwAEAAMAAgABAP7/+//+/wAA//8JAAsACAADAPz//v/6//z/AwACAAcABgAGAAIA+//+//3//P8BAAAABQADAAAA/f/9//r/+v//////BwAAAAgA/v/+//3/+f///wIAAgACAAAAAgD9//3/+v/9//7///8EAAQAAwD+/wAA/P/8/wAA/P8GAP7/CAADAP///f////z////7/wAAAgD///7//v8CAAEAAQD6/wIA+f8=",
+ ""
+];
\ No newline at end of file
diff --git a/addons/sys_ws38/$PBOPREFIX$ b/addons/sys_ws38/$PBOPREFIX$
new file mode 100644
index 000000000..8358fdfb4
--- /dev/null
+++ b/addons/sys_ws38/$PBOPREFIX$
@@ -0,0 +1 @@
+idi\acre\addons\sys_ws38
\ No newline at end of file
diff --git a/addons/sys_ws38/CfgAcreRadios.hpp b/addons/sys_ws38/CfgAcreRadios.hpp
new file mode 100644
index 000000000..3cec7ebad
--- /dev/null
+++ b/addons/sys_ws38/CfgAcreRadios.hpp
@@ -0,0 +1,86 @@
+class CfgAcreComponents {
+ class ACRE_BaseRadio;
+
+ class ACRE_WS38_base: ACRE_BaseRadio {
+ class Interfaces;
+ isAcre = 1;
+ };
+
+ class ACRE_WS38: ACRE_WS38_base {
+ name = QUOTE(NAME_WS38);
+ sinadRating = -100;
+ sensitivityMin = -110;
+ sensitivityMax = -50;
+ isPackRadio = 1;
+ isDeployable = 0;
+
+ connectors[] = {
+ {"Antenna", ACRE_CONNECTOR_ROD},
+ {"Audio/Data", ACRE_CONNECTOR_U_283},
+ {"Radio", ACRE_CONNECTOR_CONN_12PIN},
+ };
+ defaultComponents[] = {
+ {0, "ACRE_4FT_AERIAL_ROD"}
+ };
+
+ class InterfaceClasses {
+ CfgAcreDataInterface = "DefaultRadioInterface";
+ CfgAcreInteractInterface = "DefaultRadioInterface";
+ CfgAcreTransmissionInterface = "DefaultRadioInterface";
+ CfgAcrePhysicalInterface = "DefaultRadioInterface";
+ };
+
+ class Interfaces: Interfaces {
+ class CfgAcreDataInterface {
+ getListInfo = QFUNC(getChannelDescription);
+
+ setVolume = QFUNC(setVolume); // [0-1]
+ getVolume = QFUNC(getVolume); // [] = 0-1
+
+ setSpatial = QFUNC(setSpatial);
+ getSpatial = QFUNC(getSpatial);
+
+ setChannelData = QFUNC(setChannelData); // [channelNumber, [channelData] ]
+ getChannelData = QFUNC(getCurrentChannelData); // [channelNumber] = channelData
+ getCurrentChannelData = QFUNC(getCurrentChannelData); // channelData (of current channel)
+
+
+ getCurrentChannel = QFUNC(getCurrentChannel); // [] = channelNumber
+ setCurrentChannel = QFUNC(setCurrentChannel); // [channelNumber]
+
+ getStates = QFUNC(getStates); // [] = [ [stateName, stateData], [stateName, stateData] ]
+ getState = QFUNC(getState); // [stateName] = stateData
+ setState = QFUNC(setState); // [stateName, stateData] = sets state
+
+ getOnOffState = QFUNC(getOnOffState); // [] = 0/1
+ setOnOffState = QFUNC(setOnOffState); // [ZeroOrOne]
+
+ initializeComponent = QFUNC(initializeRadio);
+
+ getChannelDescription = QFUNC(getChannelDescription);
+
+ isExternalAudio = QFUNC(isExternalAudio);
+ };
+
+ class CfgAcrePhysicalInterface {
+ getExternalAudioPosition = QFUNC(getExternalAudioPosition);
+ };
+
+ class CfgAcreTransmissionInterface {
+ handleBeginTransmission = QFUNC(handleBeginTransmission);
+ handleEndTransmission = QFUNC(handleEndTransmission);
+
+ handleSignalData = QFUNC(handleSignalData);
+ handleMultipleTransmissions = QFUNC(handleMultipleTransmissions);
+
+ handlePTTDown = QFUNC(handlePTTDown);
+ handlePTTUp = QFUNC(handlePTTUp);
+ };
+
+ class CfgAcreInteractInterface {
+ openGui = QFUNC(openGui); // [RadioId]
+ closeGui = QFUNC(closeGui); // []
+ };
+ };
+ };
+};
diff --git a/addons/sys_ws38/CfgEventHandlers.hpp b/addons/sys_ws38/CfgEventHandlers.hpp
new file mode 100644
index 000000000..0e6862171
--- /dev/null
+++ b/addons/sys_ws38/CfgEventHandlers.hpp
@@ -0,0 +1,17 @@
+class Extended_PreStart_EventHandlers {
+ class ADDON {
+ init = QUOTE(call COMPILE_SCRIPT(XEH_preStart));
+ };
+};
+
+class Extended_PreInit_EventHandlers {
+ class ADDON {
+ init = QUOTE(call COMPILE_SCRIPT(XEH_preInit));
+ };
+};
+
+class Extended_PostInit_EventHandlers {
+ class ADDON {
+ clientInit = QUOTE(call COMPILE_SCRIPT(XEH_postInit));
+ };
+};
diff --git a/addons/sys_ws38/CfgWeapons.hpp b/addons/sys_ws38/CfgWeapons.hpp
new file mode 100644
index 000000000..93d2bf0be
--- /dev/null
+++ b/addons/sys_ws38/CfgWeapons.hpp
@@ -0,0 +1,33 @@
+class CfgWeapons {
+ class ACRE_BaseRadio;
+ class CBA_MiscItem_ItemInfo;
+
+ // replace ItemRadios icon with the 343 icon for stupid people
+
+ class ACRE_WS38: ACRE_BaseRadio {
+ displayName = QUOTE(NAME_WS38);
+ useActionTitle = QUOTE(NAME_WS38);
+ picture = QPATHTOF(Data\static\ws38_icons.paa);
+ model = QPATHTOF(Data\models\ws38_radio.p3d);
+ descriptionShort = "Wireless Set No. 38 Mk. II Radio";
+
+ scopeCurator = 2;
+ scope = 2;
+
+ class ItemInfo: CBA_MiscItem_ItemInfo {
+ mass = 30;
+ scope = 0;
+ };
+
+ class Library {
+ libTextDesc = QUOTE(NAME_WS38);
+ };
+
+ EGVAR(arsenalStats,frequencyMin) = 7.4e6;
+ EGVAR(arsenalStats,frequencyMax) = 9e6;
+ EGVAR(arsenalStats,transmitPower) = 200;
+ EGVAR(arsenalStats,effectiveRange) = "800m (400m)";
+ };
+
+ RADIO_ID_LIST(ACRE_WS38)
+};
diff --git a/addons/sys_ws38/Data/dials/frequency/ws38_frequency_0.paa b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_0.paa
new file mode 100644
index 000000000..a2fc1221e
Binary files /dev/null and b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_0.paa differ
diff --git a/addons/sys_ws38/Data/dials/frequency/ws38_frequency_1.paa b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_1.paa
new file mode 100644
index 000000000..9f0d12753
Binary files /dev/null and b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_1.paa differ
diff --git a/addons/sys_ws38/Data/dials/frequency/ws38_frequency_10.paa b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_10.paa
new file mode 100644
index 000000000..dd0ee42b7
Binary files /dev/null and b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_10.paa differ
diff --git a/addons/sys_ws38/Data/dials/frequency/ws38_frequency_11.paa b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_11.paa
new file mode 100644
index 000000000..8c360e45b
Binary files /dev/null and b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_11.paa differ
diff --git a/addons/sys_ws38/Data/dials/frequency/ws38_frequency_12.paa b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_12.paa
new file mode 100644
index 000000000..c1546fdc8
Binary files /dev/null and b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_12.paa differ
diff --git a/addons/sys_ws38/Data/dials/frequency/ws38_frequency_13.paa b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_13.paa
new file mode 100644
index 000000000..b6018db16
Binary files /dev/null and b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_13.paa differ
diff --git a/addons/sys_ws38/Data/dials/frequency/ws38_frequency_14.paa b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_14.paa
new file mode 100644
index 000000000..617c7c8ab
Binary files /dev/null and b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_14.paa differ
diff --git a/addons/sys_ws38/Data/dials/frequency/ws38_frequency_15.paa b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_15.paa
new file mode 100644
index 000000000..c73479b85
Binary files /dev/null and b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_15.paa differ
diff --git a/addons/sys_ws38/Data/dials/frequency/ws38_frequency_16.paa b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_16.paa
new file mode 100644
index 000000000..f30ee4e4d
Binary files /dev/null and b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_16.paa differ
diff --git a/addons/sys_ws38/Data/dials/frequency/ws38_frequency_2.paa b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_2.paa
new file mode 100644
index 000000000..95e2debe3
Binary files /dev/null and b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_2.paa differ
diff --git a/addons/sys_ws38/Data/dials/frequency/ws38_frequency_3.paa b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_3.paa
new file mode 100644
index 000000000..06dae64df
Binary files /dev/null and b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_3.paa differ
diff --git a/addons/sys_ws38/Data/dials/frequency/ws38_frequency_4.paa b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_4.paa
new file mode 100644
index 000000000..bee1bf981
Binary files /dev/null and b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_4.paa differ
diff --git a/addons/sys_ws38/Data/dials/frequency/ws38_frequency_5.paa b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_5.paa
new file mode 100644
index 000000000..a112ee22a
Binary files /dev/null and b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_5.paa differ
diff --git a/addons/sys_ws38/Data/dials/frequency/ws38_frequency_6.paa b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_6.paa
new file mode 100644
index 000000000..2702ffef8
Binary files /dev/null and b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_6.paa differ
diff --git a/addons/sys_ws38/Data/dials/frequency/ws38_frequency_7.paa b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_7.paa
new file mode 100644
index 000000000..24401ba64
Binary files /dev/null and b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_7.paa differ
diff --git a/addons/sys_ws38/Data/dials/frequency/ws38_frequency_8.paa b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_8.paa
new file mode 100644
index 000000000..782028e9e
Binary files /dev/null and b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_8.paa differ
diff --git a/addons/sys_ws38/Data/dials/frequency/ws38_frequency_9.paa b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_9.paa
new file mode 100644
index 000000000..5e92711d3
Binary files /dev/null and b/addons/sys_ws38/Data/dials/frequency/ws38_frequency_9.paa differ
diff --git a/addons/sys_ws38/Data/knobs/mode/ws38_mode_0.paa b/addons/sys_ws38/Data/knobs/mode/ws38_mode_0.paa
new file mode 100644
index 000000000..1290fef6f
Binary files /dev/null and b/addons/sys_ws38/Data/knobs/mode/ws38_mode_0.paa differ
diff --git a/addons/sys_ws38/Data/knobs/mode/ws38_mode_1.paa b/addons/sys_ws38/Data/knobs/mode/ws38_mode_1.paa
new file mode 100644
index 000000000..998383d99
Binary files /dev/null and b/addons/sys_ws38/Data/knobs/mode/ws38_mode_1.paa differ
diff --git a/addons/sys_ws38/Data/knobs/mode/ws38_mode_2.paa b/addons/sys_ws38/Data/knobs/mode/ws38_mode_2.paa
new file mode 100644
index 000000000..2a6d1726a
Binary files /dev/null and b/addons/sys_ws38/Data/knobs/mode/ws38_mode_2.paa differ
diff --git a/addons/sys_ws38/Data/models/ws38_aerial_bag.p3d b/addons/sys_ws38/Data/models/ws38_aerial_bag.p3d
new file mode 100644
index 000000000..e5e5805f2
Binary files /dev/null and b/addons/sys_ws38/Data/models/ws38_aerial_bag.p3d differ
diff --git a/addons/sys_ws38/Data/models/ws38_bag_tex.rvmat b/addons/sys_ws38/Data/models/ws38_bag_tex.rvmat
new file mode 100644
index 000000000..e83c76406
--- /dev/null
+++ b/addons/sys_ws38/Data/models/ws38_bag_tex.rvmat
@@ -0,0 +1,90 @@
+ambient[] = { 1, 1, 1, 1 };
+diffuse[] = { 1, 1, 1, 1 };
+forcedDiffuse[] = { 0, 0, 0, 1 };
+emmisive[] = { 0, 0, 0, 1 };
+specular[] = { 0.1, 0.1, 0.1, 1 };
+specularPower = 2;
+PixelShaderID = "Super";
+VertexShaderID = "Super";
+
+class Stage1 {
+ texture = "idi\acre\addons\sys_ws38\data\models\ws38_bag_tex_NOHQ.paa";
+ uvSource = "tex";
+ class uvTransform {
+ aside[] = { 1, 0, 0 };
+ up[] = { 0, 1, 0 };
+ dir[] = { 0, 0, 0 };
+ pos[] = { 0, 0, 0 };
+ };
+};
+
+class Stage2 {
+ texture = "#(argb,8,8,3)color(0.5,0.5,0.5,1,dt)";
+ uvSource = "tex";
+ class uvTransform {
+ aside[] = { 1, 1, 0 };
+ up[] = { 0, 1, 0 };
+ dir[] = { 0, 0, 0 };
+ pos[] = { 0, 0, 0 };
+ };
+};
+
+class Stage3 {
+ texture = "#(argb,8,8,3)color(0,0,0,0,mc)";
+ uvSource = "tex";
+ class uvTransform {
+ aside[] = { 1, 0, 0 };
+ up[] = { 0, 1, 0 };
+ dir[] = { 0, 0, 0 };
+ pos[] = { 0, 0, 0 };
+ };
+};
+
+class Stage4 {
+ texture = "idi\acre\addons\sys_ws38\data\models\ws38_bag_tex_as.paa";
+ uvSource = "tex";
+ class uvTransform {
+ aside[] = { 1, 0, 0 };
+ up[] = { 0, 1, 0 };
+ dir[] = { 0, 0, 1 };
+ pos[] = { 0, 0, 1 };
+ };
+};
+
+class Stage5 {
+ texture = "idi\acre\addons\sys_ws38\data\models\ws38_bag_tex_SMDI.paa";
+ uvSource = "tex";
+ class uvTransform {
+ aside[] = { 1, 0, 0 };
+ up[] = { 0, 1, 0 };
+ dir[] = { 0, 0, 0 };
+ pos[] = { 0, 0, 0 };
+ };
+};
+
+class Stage6 {
+ texture = "#(ai,64,64,1)fresnel(0.4,0.2)";
+ uvSource = "tex";
+ class uvTransform {
+ aside[] = { 1, 0, 0 };
+ up[] = { 0, 1, 0 };
+ dir[] = { 0, 0, 1 };
+ pos[] = { 0, 0, 0 };
+ };
+};
+
+class Stage7 {
+ texture = "a3\data_f\env_land_ca.paa";
+ useWorldEnvMap = "true";
+ uvSource = "tex";
+ class uvTransform {
+ aside[] = { 1, 0, 0 };
+ up[] = { 0, 1, 0 };
+ dir[] = { 0, 0, 1 };
+ pos[] = { 0, 0, 0 };
+ };
+};
+
+class StageTI {
+ texture = "a3\data_f\default_vehicle_ti_ca.paa";
+};
\ No newline at end of file
diff --git a/addons/sys_ws38/Data/models/ws38_bag_tex_as.paa b/addons/sys_ws38/Data/models/ws38_bag_tex_as.paa
new file mode 100644
index 000000000..34d087d3d
Binary files /dev/null and b/addons/sys_ws38/Data/models/ws38_bag_tex_as.paa differ
diff --git a/addons/sys_ws38/Data/models/ws38_bag_tex_ca.paa b/addons/sys_ws38/Data/models/ws38_bag_tex_ca.paa
new file mode 100644
index 000000000..62bbf51b9
Binary files /dev/null and b/addons/sys_ws38/Data/models/ws38_bag_tex_ca.paa differ
diff --git a/addons/sys_ws38/Data/models/ws38_bag_tex_co.paa b/addons/sys_ws38/Data/models/ws38_bag_tex_co.paa
new file mode 100644
index 000000000..8fb4f5004
Binary files /dev/null and b/addons/sys_ws38/Data/models/ws38_bag_tex_co.paa differ
diff --git a/addons/sys_ws38/Data/models/ws38_bag_tex_nohq.paa b/addons/sys_ws38/Data/models/ws38_bag_tex_nohq.paa
new file mode 100644
index 000000000..5d5726300
Binary files /dev/null and b/addons/sys_ws38/Data/models/ws38_bag_tex_nohq.paa differ
diff --git a/addons/sys_ws38/Data/models/ws38_bag_tex_smdi.paa b/addons/sys_ws38/Data/models/ws38_bag_tex_smdi.paa
new file mode 100644
index 000000000..1f4e44b70
Binary files /dev/null and b/addons/sys_ws38/Data/models/ws38_bag_tex_smdi.paa differ
diff --git a/addons/sys_ws38/Data/models/ws38_mat.rvmat b/addons/sys_ws38/Data/models/ws38_mat.rvmat
new file mode 100644
index 000000000..5fffbc861
--- /dev/null
+++ b/addons/sys_ws38/Data/models/ws38_mat.rvmat
@@ -0,0 +1,86 @@
+/*
+ Generated on https://jdtools.dev/
+ Made by John Doe
+*/
+ambient[] = { 1, 1, 1, 1 };
+diffuse[] = { 1, 1, 1, 1 };
+forcedDiffuse[] = { 0, 0, 0, 1 };
+emmisive[] = { 0, 0, 0, 1 };
+specular[] = { 0.1, 0.1, 0.1, 1 };
+specularPower = 2;
+PixelShaderID = "Super";
+VertexShaderID = "Super";
+class Stage1 {
+ texture = "idi\acre\addons\sys_ws38\data\models\ws38_mat_NOHQ.paa";
+ uvSource = "tex";
+ class uvTransform {
+ aside[] = { 1, 0, 0 };
+ up[] = { 0, 1, 0 };
+ dir[] = { 0, 0, 0 };
+ pos[] = { 0, 0, 0 };
+ };
+};
+class Stage2 {
+ texture = "#(argb,8,8,3)color(0.5,0.5,0.5,1,dt)";
+ uvSource = "tex";
+ class uvTransform {
+ aside[] = { 1, 1, 0 };
+ up[] = { 0, 1, 0 };
+ dir[] = { 0, 0, 0 };
+ pos[] = { 0, 0, 0 };
+ };
+};
+class Stage3 {
+ texture = "#(argb,8,8,3)color(0,0,0,0,mc)";
+ uvSource = "tex";
+ class uvTransform {
+ aside[] = { 1, 0, 0 };
+ up[] = { 0, 1, 0 };
+ dir[] = { 0, 0, 0 };
+ pos[] = { 0, 0, 0 };
+ };
+};
+class Stage4 {
+ texture = "idi\acre\addons\sys_ws38\data\models\ws38_mat_AS.paa";
+ uvSource = "tex";
+ class uvTransform {
+ aside[] = { 1, 0, 0 };
+ up[] = { 0, 1, 0 };
+ dir[] = { 0, 0, 1 };
+ pos[] = { 0, 0, 1 };
+ };
+};
+class Stage5 {
+ texture = "idi\acre\addons\sys_ws38\data\models\ws38_mat_SMDI.paa";
+ uvSource = "tex";
+ class uvTransform {
+ aside[] = { 1, 0, 0 };
+ up[] = { 0, 1, 0 };
+ dir[] = { 0, 0, 0 };
+ pos[] = { 0, 0, 0 };
+ };
+};
+class Stage6 {
+ texture = "#(ai,64,64,1)fresnel(0.4,0.2)";
+ uvSource = "tex";
+ class uvTransform {
+ aside[] = { 1, 0, 0 };
+ up[] = { 0, 1, 0 };
+ dir[] = { 0, 0, 1 };
+ pos[] = { 0, 0, 0 };
+ };
+};
+class Stage7 {
+ texture = "a3\data_f\env_land_ca.paa";
+ useWorldEnvMap = "true";
+ uvSource = "tex";
+ class uvTransform {
+ aside[] = { 1, 0, 0 };
+ up[] = { 0, 1, 0 };
+ dir[] = { 0, 0, 1 };
+ pos[] = { 0, 0, 0 };
+ };
+};
+class StageTI {
+ texture = "a3\data_f\default_vehicle_ti_ca.paa";
+};
\ No newline at end of file
diff --git a/addons/sys_ws38/Data/models/ws38_mat_as.paa b/addons/sys_ws38/Data/models/ws38_mat_as.paa
new file mode 100644
index 000000000..f2d69d110
Binary files /dev/null and b/addons/sys_ws38/Data/models/ws38_mat_as.paa differ
diff --git a/addons/sys_ws38/Data/models/ws38_mat_co.paa b/addons/sys_ws38/Data/models/ws38_mat_co.paa
new file mode 100644
index 000000000..655cd8498
Binary files /dev/null and b/addons/sys_ws38/Data/models/ws38_mat_co.paa differ
diff --git a/addons/sys_ws38/Data/models/ws38_mat_nohq.paa b/addons/sys_ws38/Data/models/ws38_mat_nohq.paa
new file mode 100644
index 000000000..abc0b4972
Binary files /dev/null and b/addons/sys_ws38/Data/models/ws38_mat_nohq.paa differ
diff --git a/addons/sys_ws38/Data/models/ws38_mat_smdi.paa b/addons/sys_ws38/Data/models/ws38_mat_smdi.paa
new file mode 100644
index 000000000..be956e422
Binary files /dev/null and b/addons/sys_ws38/Data/models/ws38_mat_smdi.paa differ
diff --git a/addons/sys_ws38/Data/models/ws38_radio.p3d b/addons/sys_ws38/Data/models/ws38_radio.p3d
new file mode 100644
index 000000000..5843f2217
Binary files /dev/null and b/addons/sys_ws38/Data/models/ws38_radio.p3d differ
diff --git a/addons/sys_ws38/Data/models/ws38_radio_antenna.p3d b/addons/sys_ws38/Data/models/ws38_radio_antenna.p3d
new file mode 100644
index 000000000..61be51ea8
Binary files /dev/null and b/addons/sys_ws38/Data/models/ws38_radio_antenna.p3d differ
diff --git a/addons/sys_ws38/Data/static/ws38_icons.paa b/addons/sys_ws38/Data/static/ws38_icons.paa
new file mode 100644
index 000000000..3b501f2fa
Binary files /dev/null and b/addons/sys_ws38/Data/static/ws38_icons.paa differ
diff --git a/addons/sys_ws38/Data/static/ws38_ui_backplate.paa b/addons/sys_ws38/Data/static/ws38_ui_backplate.paa
new file mode 100644
index 000000000..4b92023f5
Binary files /dev/null and b/addons/sys_ws38/Data/static/ws38_ui_backplate.paa differ
diff --git a/addons/sys_ws38/DialogDefines.hpp b/addons/sys_ws38/DialogDefines.hpp
new file mode 100644
index 000000000..508fee67e
--- /dev/null
+++ b/addons/sys_ws38/DialogDefines.hpp
@@ -0,0 +1,69 @@
+#define CT_STATIC 0
+#define CT_BUTTON 1
+#define CT_EDIT 2
+#define CT_SLIDER 3
+#define CT_COMBO 4
+#define CT_LISTBOX 5
+#define CT_TOOLBOX 6
+#define CT_CHECKBOXES 7
+#define CT_PROGRESS 8
+#define CT_HTML 9
+#define CT_STATIC_SKEW 10
+#define CT_ACTIVETEXT 11
+#define CT_TREE 12
+#define CT_STRUCTURED_TEXT 13
+#define CT_CONTEXT_MENU 14
+#define CT_CONTROLS_GROUP 15
+#define CT_XKEYDESC 40
+#define CT_XBUTTON 41
+#define CT_XLISTBOX 42
+#define CT_XSLIDER 43
+#define CT_XCOMBO 44
+#define CT_ANIMATED_TEXTURE 45
+#define CT_OBJECT 80
+#define CT_OBJECT_ZOOM 81
+#define CT_OBJECT_CONTAINER 82
+#define CT_OBJECT_CONT_ANIM 83
+#define CT_LINEBREAK 98
+#define CT_USER 99
+#define CT_MAP 100
+#define CT_MAP_MAIN 101 // Static styles
+
+#define ST_POS 0x0F
+#define ST_HPOS 0x03
+#define ST_VPOS 0x0C
+#define ST_LEFT 0x00
+#define ST_RIGHT 0x01
+#define ST_CENTER 0x02
+#define ST_DOWN 0x04
+#define ST_UP 0x08
+#define ST_VCENTER 0x0c
+#define ST_TYPE 0xF0
+#define ST_SINGLE 0
+#define ST_MULTI 16
+#define ST_TITLE_BAR 32
+#define ST_PICTURE 48
+#define ST_FRAME 64
+#define ST_BACKGROUND 80
+#define ST_GROUP_BOX 96
+#define ST_GROUP_BOX2 112
+#define ST_HUD_BACKGROUND 128
+#define ST_TILE_PICTURE 144
+#define ST_WITH_RECT 160
+#define ST_LINE 176
+#define ST_SHADOW 0x100
+#define ST_NO_RECT 0x200
+#define ST_KEEP_ASPECT_RATIO 0x800
+#define ST_TITLE ST_TITLE_BAR + ST_CENTER
+
+// Slider styles
+#define SL_DIR 0x400
+#define SL_VERT 0
+#define SL_HORZ 0x400
+#define SL_TEXTURES 0x10
+
+// Listbox styles
+#define LB_TEXTURES 0x10
+#define LB_MULTI 0x20
+
+#define FontM "TahomaB"
diff --git a/addons/sys_ws38/RadioDialogClasses.hpp b/addons/sys_ws38/RadioDialogClasses.hpp
new file mode 100644
index 000000000..f4d9422af
--- /dev/null
+++ b/addons/sys_ws38/RadioDialogClasses.hpp
@@ -0,0 +1,75 @@
+class Ws38_RscBackground {
+ type = CT_STATIC;
+ idc = -1;
+ style = QUOTE(ST_BACKGROUND + ST_KEEP_ASPECT_RATIO);
+ colorBackground[] = {0, 0, 0, 0.75};
+ colorText[] = {1, 1, 1, 1};
+ font = FontM;
+ sizeEx = 0.04;
+};
+
+// text
+class Ws38_RscText {
+ idc = -1;
+ type = CT_STATIC;
+ style = QUOTE(ST_LEFT + ST_KEEP_ASPECT_RATIO);
+ font = "EtelkaMonospaceProBold";
+ colorText[] = {1,1,1,1};
+ colorBackground[] = {0, 0, 0, 0};
+ sizeEx = 0.024;
+ w = 0.2;
+ h = 0.03;
+};
+
+class Ws38_RscButton {
+ type = CT_BUTTON;
+ idc = -1;
+ style = QUOTE(ST_CENTER + ST_KEEP_ASPECT_RATIO);
+
+ x = 0.0;
+ y = 0.0;
+ w = 0.1;
+ h = 0.0;
+ sizeEx = 0.0325;
+ offsetX = 0;
+ offsetY = 0.002;
+ offsetPressedX = 0;
+ offsetPressedY = 0.002;
+ borderSize = 0;
+
+ #define ClrWhite 1,1,1
+ #define ClrBlack 0,0,0
+ #define ClrGray 0.5,0.5,0.5
+ #define ClrBlue 0.2,0.5,1
+
+ colorText[] = {ClrWhite,1};
+ colorBackground[] = {ClrGray, 0};
+ colorFocused[] = {ClrGray,00};
+
+ colorShadow[] = {ClrBlack,0};
+ colorBorder[] = {ClrWhite,0};
+ colorBackgroundActive[] = {ClrGray,0};
+ colorDisabled[] = {ClrGray, 0};
+ colorBackgroundDisabled[] = {ClrGray,0};
+ font = FontM;
+
+ tooltipColorShade[] = {ClrGray, 0.25};
+ tooltipColorText[] = {ClrWhite, 0.75};
+ tooltipColorBox[] = {ClrGray, 0};
+
+ soundEnter[] = {"", 0.2, 1};
+ soundPush[] = {"", 0.2, 1};
+ soundClick[] = {"", 0.2, 1};
+ soundEscape[] = {"", 0.2, 1};
+
+ default = 0;
+ text = "";
+ action = "";
+};
+
+class Ws38_RscPicture: Ws38_RscButton {
+ type = CT_STATIC;
+ idc = -1;
+ style = QUOTE(ST_PICTURE + ST_KEEP_ASPECT_RATIO);
+ text = "";
+};
diff --git a/addons/sys_ws38/XEH_PREP.hpp b/addons/sys_ws38/XEH_PREP.hpp
new file mode 100644
index 000000000..ba9a87d7a
--- /dev/null
+++ b/addons/sys_ws38/XEH_PREP.hpp
@@ -0,0 +1,2 @@
+PREP_FOLDER(radio);
+PREP_FOLDER(functions);
diff --git a/addons/sys_ws38/XEH_postInit.sqf b/addons/sys_ws38/XEH_postInit.sqf
new file mode 100644
index 000000000..c251f92da
--- /dev/null
+++ b/addons/sys_ws38/XEH_postInit.sqf
@@ -0,0 +1,12 @@
+#include "script_component.hpp"
+
+LOAD_SOUND(Acre_GenericSquawkOn);
+LOAD_SOUND(Acre_GenericSquawkOff);
+
+LOAD_SOUND(Acre_GenericBeep);
+LOAD_SOUND(Acre_GenericBeepLow);
+LOAD_SOUND(Acre_GenericClickOn);
+LOAD_SOUND(Acre_GenericClickOff);
+
+LOAD_SOUND(Acre_WS38_start);
+LOAD_SOUND(Acre_WS38_end);
diff --git a/addons/sys_ws38/XEH_preInit.sqf b/addons/sys_ws38/XEH_preInit.sqf
new file mode 100644
index 000000000..0594eb7e5
--- /dev/null
+++ b/addons/sys_ws38/XEH_preInit.sqf
@@ -0,0 +1,56 @@
+#include "script_component.hpp"
+
+ADDON = false;
+
+PREP_RECOMPILE_START;
+#include "XEH_PREP.hpp"
+PREP_RECOMPILE_END;
+
+[] call FUNC(preset_information);
+
+ADDON = true;
+
+if (hasInterface) then {
+ GVAR(currentRadioId) = -1;
+
+ DGVAR(backgroundImages) = [
+ QPATHTOF(Data\anim\prc343_anim0000.paa),
+ QPATHTOF(Data\anim\prc343_anim0001.paa),
+ QPATHTOF(Data\anim\prc343_anim0002.paa),
+ QPATHTOF(Data\anim\prc343_anim0003.paa),
+ QPATHTOF(Data\anim\prc343_anim0004.paa),
+ QPATHTOF(Data\anim\prc343_anim0005.paa),
+ QPATHTOF(Data\anim\prc343_anim0006.paa),
+ QPATHTOF(Data\anim\prc343_anim0007.paa),
+ QPATHTOF(Data\anim\prc343_anim0008.paa),
+ QPATHTOF(Data\anim\prc343_anim0009.paa),
+ QPATHTOF(Data\anim\prc343_anim0010.paa),
+ QPATHTOF(Data\anim\prc343_anim0011.paa),
+ QPATHTOF(Data\anim\prc343_anim0012.paa),
+ QPATHTOF(Data\anim\prc343_anim0013.paa),
+ QPATHTOF(Data\anim\prc343_anim0014.paa),
+ QPATHTOF(Data\anim\prc343_anim0015.paa),
+ QPATHTOF(Data\anim\prc343_anim0016.paa),
+ QPATHTOF(Data\anim\prc343_anim0017.paa),
+ QPATHTOF(Data\anim\prc343_anim0018.paa),
+ QPATHTOF(Data\anim\prc343_anim0019.paa),
+ QPATHTOF(Data\anim\prc343_anim0020.paa),
+ QPATHTOF(Data\anim\prc343_anim0021.paa),
+ QPATHTOF(Data\anim\prc343_anim0022.paa),
+ QPATHTOF(Data\anim\prc343_anim0023.paa),
+ QPATHTOF(Data\anim\prc343_anim0024.paa),
+ QPATHTOF(Data\anim\prc343_anim0025.paa),
+ QPATHTOF(Data\anim\prc343_anim0026.paa),
+ QPATHTOF(Data\anim\prc343_anim0027.paa),
+ QPATHTOF(Data\anim\prc343_anim0028.paa),
+ QPATHTOF(Data\anim\prc343_anim0029.paa),
+ QPATHTOF(Data\anim\prc343_anim0030.paa),
+ QPATHTOF(Data\anim\prc343_anim0031.paa),
+ QPATHTOF(Data\anim\prc343_anim0032.paa),
+ QPATHTOF(Data\anim\prc343_anim0033.paa),
+ QPATHTOF(Data\anim\prc343_anim0034.paa),
+ QPATHTOF(Data\anim\prc343_anim0035.paa)
+ ];
+};
+
+ADDON = true;
diff --git a/addons/sys_ws38/XEH_preStart.sqf b/addons/sys_ws38/XEH_preStart.sqf
new file mode 100644
index 000000000..022888575
--- /dev/null
+++ b/addons/sys_ws38/XEH_preStart.sqf
@@ -0,0 +1,3 @@
+#include "script_component.hpp"
+
+#include "XEH_PREP.hpp"
diff --git a/addons/sys_ws38/config.cpp b/addons/sys_ws38/config.cpp
new file mode 100644
index 000000000..2bb74cd92
--- /dev/null
+++ b/addons/sys_ws38/config.cpp
@@ -0,0 +1,25 @@
+#include "script_component.hpp"
+
+class CfgPatches {
+ class ADDON {
+ name = COMPONENT_NAME;
+ units[] = {};
+ weapons[] = {RADIO_WEAPON_LIST_STR(ACRE_WS38)};
+ requiredVersion = REQUIRED_VERSION;
+ requiredAddons[] = {"acre_sys_radio"};
+ author = ECSTRING(main,Author);
+ authors[] = {"S. Spartan"};
+ url = ECSTRING(main,URL);
+ VERSION_CONFIG;
+ };
+};
+
+PRELOAD_ADDONS;
+
+#include "CfgWeapons.hpp"
+#include "CfgAcreRadios.hpp"
+
+#include "CfgEventHandlers.hpp"
+#include "DialogDefines.hpp"
+#include "RadioDialogClasses.hpp"
+#include "ws38_RadioDialog.hpp"
diff --git a/addons/sys_ws38/functions/__PREP__.sqf b/addons/sys_ws38/functions/__PREP__.sqf
new file mode 100644
index 000000000..4a2ba6856
--- /dev/null
+++ b/addons/sys_ws38/functions/__PREP__.sqf
@@ -0,0 +1,11 @@
+#include "..\script_component.hpp"
+
+
+PREP_MODULE(functions,preset_information);
+
+PREP_MODULE(functions,onFrequencyDialPress);
+PREP_MODULE(functions,getChannelForFrequency);
+PREP_MODULE(functions,getFrequencyForChannel);
+PREP_MODULE(functions,onFunctionKnobPress);
+
+PREP_MODULE(functions,render);
diff --git a/addons/sys_ws38/functions/fnc_getChannelForFrequency.sqf b/addons/sys_ws38/functions/fnc_getChannelForFrequency.sqf
new file mode 100644
index 000000000..4ce70edbd
--- /dev/null
+++ b/addons/sys_ws38/functions/fnc_getChannelForFrequency.sqf
@@ -0,0 +1,28 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Converts a frequency to a dial index.
+ * Clamping it in the possible dial range.
+ *
+ * Arguments:
+ * 0: Frequency to get the dial index of
+ *
+ * Return Value :
+ * 0: The dial index
+ * 1: The new frequency
+ *
+ * Example:
+ * [["", 0], 0] call acre_sys_ws38_fnc_getDialIndex
+ *
+ * Public: No
+ */
+
+params ["_frequency"];
+TRACE_1("Start Get Channel",_frequency);
+private _channel = ((_frequency * 10 - INDEX_CONVERSION) max 0) min MAX_DIAL_INDICES;
+//Making it Arma-Float-Stable
+_channel = [_channel, 1, 0] call CBA_fnc_formatNumber;
+_channel = parseNumber _channel;
+private _newFrequency = ([_channel] call FUNC(getFrequencyForChannel) select 0);
+TRACE_2("End Get Channel",_channel,_newFrequency);
+[_channel,_newFrequency]
diff --git a/addons/sys_ws38/functions/fnc_getFrequencyForChannel.sqf b/addons/sys_ws38/functions/fnc_getFrequencyForChannel.sqf
new file mode 100644
index 000000000..70e7b752a
--- /dev/null
+++ b/addons/sys_ws38/functions/fnc_getFrequencyForChannel.sqf
@@ -0,0 +1,29 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Converts an dial index to a frequency
+ * Clamps the dial index between 0 and maximum dial indices
+ *
+ * Arguments:
+ * 0: The index of the dial position
+ *
+ * Return Value :
+ * 0: The frequency
+ * 1: The new dial index
+ *
+ * Example:
+ * [["", 0], 0] call acre_sys_ws38_fnc_getFrequency
+ *
+ * Public: No
+ */
+
+ params ["_channel"];
+TRACE_1("Enter Get Freq",_channel);
+_channel = (_channel max 0) min MAX_DIAL_INDICES;
+private _frequency = (_channel+INDEX_CONVERSION)/10;
+//Making it Arma-Float-Stable
+_frequency = [_frequency, 1, 2] call CBA_fnc_formatNumber;
+_frequency = parseNumber _frequency;
+TRACE_2("End Get Freq",_frequency,_channel);
+
+[_frequency,_channel]
diff --git a/addons/sys_ws38/functions/fnc_onFrequencyDialPress.sqf b/addons/sys_ws38/functions/fnc_onFrequencyDialPress.sqf
new file mode 100644
index 000000000..6974395d6
--- /dev/null
+++ b/addons/sys_ws38/functions/fnc_onFrequencyDialPress.sqf
@@ -0,0 +1,35 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Handles the event of turning the frequency radio dial changing the frequencies the radio operates on and plays the necessary sounds.
+ *
+ * Arguments:
+ * 0: Array with the second entry identifying if it was a left or right click
+ *
+ * Return Value:
+ * None
+ *
+ * Example:
+ * [["", 0]] call acre_sys_ws38_fnc_onFrequencyDialPress
+ *
+ * Public: No
+ */
+
+params ["_control", "_key"];
+
+private _dir = -1;
+if (_key == 0) then {
+ // left click
+ _dir = 1;
+};
+
+private _currentPosition = GET_STATE("currentChannel");
+private _newPosition = ((_currentPosition + _dir) max 0) min MAX_DIAL_INDICES;
+
+if (_newPosition != _currentPosition) then {
+ ["setCurrentChannel", _newPosition] call GUI_DATA_EVENT;
+
+ ["Acre_GenericClick", [0,0,0], [0,0,0], 1, false] call EFUNC(sys_sounds,playSound);
+ [QGVAR(uiStateChanged), []] call CBA_fnc_localEvent;
+ //[MAIN_DISPLAY] call FUNC(render);
+};
diff --git a/addons/sys_ws38/functions/fnc_onFunctionKnobPress.sqf b/addons/sys_ws38/functions/fnc_onFunctionKnobPress.sqf
new file mode 100644
index 000000000..b42baa55a
--- /dev/null
+++ b/addons/sys_ws38/functions/fnc_onFunctionKnobPress.sqf
@@ -0,0 +1,56 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Handles the event of turning the mode radio knob. To enable or disable the radio
+ * and plays the necessary sounds.
+ *
+ * Arguments:
+ * 0: Array with the second entry identifying if it was a left or right click
+ *
+ * Return Value:
+ * None
+ *
+ * Example:
+ * [[""], 0] call acre_sys_ws38_fnc_onChannelKnobPress
+ *
+ * Public: No
+ */
+
+params ["_control", "_key"];
+
+private _dir = -1;
+if (_key == 0) then {
+ // left click
+ _dir = 1;
+};
+
+private _currentMode = GET_STATE_DEF("function",0);
+private _newMode = ((_currentMode + _dir) max 0) min 2;
+TRACE_2("Changing mode",_currentMode, _newMode);
+
+if(_newMode != _currentMode) then {
+ SET_STATE("function", _newMode);
+
+ if((_newMode == 0 || _newMode == 1) && _currentMode != 2) then {
+ ["setOnOffState", _newMode] call GUI_DATA_EVENT;
+ };
+
+ if(_newMode == 2) then {
+ _mpttRadioList = [] call EFUNC(api,getMultiPushToTalkAssignment);
+ _index = _mpttRadioList find GVAR(currentRadioId);
+ if(_index != -1) then {
+ [_index] call EFUNC(sys_core,handleMultiPttKeyPress);
+ };
+ };
+
+ if(_newMode == 1 && _currentMode == 2) then {
+ _mpttRadioList = [] call EFUNC(api,getMultiPushToTalkAssignment);
+ _index = _mpttRadioList find GVAR(currentRadioId);
+ if(_index != -1) then {
+ [_index] call EFUNC(sys_core,handleMultiPttKeyPressUp);
+ };
+ };
+ ["Acre_GenericClick", [0,0,0], [0,0,0], 1, false] call EFUNC(sys_sounds,playSound);
+ [QGVAR(uiStateChanged), []] call CBA_fnc_localEvent;
+ //[MAIN_DISPLAY] call FUNC(render);
+};
diff --git a/addons/sys_ws38/functions/fnc_preset_information.sqf b/addons/sys_ws38/functions/fnc_preset_information.sqf
new file mode 100644
index 000000000..8e5c8208a
--- /dev/null
+++ b/addons/sys_ws38/functions/fnc_preset_information.sqf
@@ -0,0 +1,64 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Initialises and registers the default presets with the initial values of transmitting and receiving frequencies for each of the channels.
+ *
+ * Arguments:
+ * None
+ *
+ * Return Value:
+ * None
+ *
+ * Example:
+ * [] call acre_sys_ws38_fnc_preset_information
+ *
+ * Public: No
+ */
+
+// WirelessSet No. 38
+// Frequency Range 7.4-9.0 MHz
+
+// channel information
+///Default
+private _presetData = HASH_CREATE;
+private _channels = HASHLIST_CREATELIST(["frequencyTX"]);
+
+private _channel = HASHLIST_CREATEHASH(_channels);
+HASH_SET(_channel,"frequencyTX",7.40);
+HASHLIST_PUSH(_channels,_channel);
+
+HASH_SET(_presetData,"channels",_channels);
+["ACRE_WS38","default",_presetData] call EFUNC(sys_data,registerRadioPreset);
+
+///Default2
+_presetData = HASH_CREATE;
+_channels = HASHLIST_CREATELIST(["frequencyTX"]);
+
+_channel = HASHLIST_CREATEHASH(_channels);
+HASH_SET(_channel,"frequencyTX",7.80);
+HASHLIST_PUSH(_channels,_channel);
+
+HASH_SET(_presetData,"channels",_channels);
+["ACRE_WS38","default2",_presetData] call EFUNC(sys_data,registerRadioPreset);
+
+///Default3
+_presetData = HASH_CREATE;
+_channels = HASHLIST_CREATELIST(["frequencyTX"]);
+
+_channel = HASHLIST_CREATEHASH(_channels);
+HASH_SET(_channel,"frequencyTX",8.20);
+HASHLIST_PUSH(_channels,_channel);
+
+HASH_SET(_presetData,"channels",_channels);
+["ACRE_WS38","default3",_presetData] call EFUNC(sys_data,registerRadioPreset);
+
+///Default4
+_presetData = HASH_CREATE;
+_channels = HASHLIST_CREATELIST(["frequencyTX"]);
+
+_channel = HASHLIST_CREATEHASH(_channels);
+HASH_SET(_channel,"frequencyTX",8.60);
+HASHLIST_PUSH(_channels,_channel);
+
+HASH_SET(_presetData,"channels",_channels);
+["ACRE_WS38","default4",_presetData] call EFUNC(sys_data,registerRadioPreset);
diff --git a/addons/sys_ws38/functions/fnc_render.sqf b/addons/sys_ws38/functions/fnc_render.sqf
new file mode 100644
index 000000000..be9f68b41
--- /dev/null
+++ b/addons/sys_ws38/functions/fnc_render.sqf
@@ -0,0 +1,29 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Renders the radio when opened.
+ *
+ * Arguments:
+ * 0: Display identifier
+ *
+ * Return Value:
+ * True
+ *
+ * Example:
+ * [DisplayID] call acre_sys_ws38_fnc_render
+ *
+ * Public: No
+ */
+
+#define RADIO_CTRL(var1) (_display displayCtrl var1)
+#define IN 0
+#define OUT 1
+
+params ["_display"];
+
+private _currentFunction = GET_STATE("function");
+private _currentChannel = GET_STATE("currentChannel");
+TRACE_2("Render", _currentFunction,_currentChannel);
+RADIO_CTRL(106) ctrlSetText format ["\idi\acre\addons\sys_ws38\Data\knobs\mode\ws38_mode_%1.paa", _currentFunction];
+RADIO_CTRL(107) ctrlSetText format ["\idi\acre\addons\sys_ws38\Data\dials\frequency\ws38_frequency_%1.paa", _currentChannel];
+true
diff --git a/addons/sys_ws38/images/dials/frequency/ws38_frequency_0.png b/addons/sys_ws38/images/dials/frequency/ws38_frequency_0.png
new file mode 100644
index 000000000..cea6d6889
Binary files /dev/null and b/addons/sys_ws38/images/dials/frequency/ws38_frequency_0.png differ
diff --git a/addons/sys_ws38/images/dials/frequency/ws38_frequency_1.png b/addons/sys_ws38/images/dials/frequency/ws38_frequency_1.png
new file mode 100644
index 000000000..5ba76f5fd
Binary files /dev/null and b/addons/sys_ws38/images/dials/frequency/ws38_frequency_1.png differ
diff --git a/addons/sys_ws38/images/dials/frequency/ws38_frequency_10.png b/addons/sys_ws38/images/dials/frequency/ws38_frequency_10.png
new file mode 100644
index 000000000..950be0435
Binary files /dev/null and b/addons/sys_ws38/images/dials/frequency/ws38_frequency_10.png differ
diff --git a/addons/sys_ws38/images/dials/frequency/ws38_frequency_11.png b/addons/sys_ws38/images/dials/frequency/ws38_frequency_11.png
new file mode 100644
index 000000000..e20f25c17
Binary files /dev/null and b/addons/sys_ws38/images/dials/frequency/ws38_frequency_11.png differ
diff --git a/addons/sys_ws38/images/dials/frequency/ws38_frequency_12.png b/addons/sys_ws38/images/dials/frequency/ws38_frequency_12.png
new file mode 100644
index 000000000..942e45b6c
Binary files /dev/null and b/addons/sys_ws38/images/dials/frequency/ws38_frequency_12.png differ
diff --git a/addons/sys_ws38/images/dials/frequency/ws38_frequency_13.png b/addons/sys_ws38/images/dials/frequency/ws38_frequency_13.png
new file mode 100644
index 000000000..accf705c9
Binary files /dev/null and b/addons/sys_ws38/images/dials/frequency/ws38_frequency_13.png differ
diff --git a/addons/sys_ws38/images/dials/frequency/ws38_frequency_14.png b/addons/sys_ws38/images/dials/frequency/ws38_frequency_14.png
new file mode 100644
index 000000000..90cb07b91
Binary files /dev/null and b/addons/sys_ws38/images/dials/frequency/ws38_frequency_14.png differ
diff --git a/addons/sys_ws38/images/dials/frequency/ws38_frequency_15.png b/addons/sys_ws38/images/dials/frequency/ws38_frequency_15.png
new file mode 100644
index 000000000..b1a4fc36c
Binary files /dev/null and b/addons/sys_ws38/images/dials/frequency/ws38_frequency_15.png differ
diff --git a/addons/sys_ws38/images/dials/frequency/ws38_frequency_16.png b/addons/sys_ws38/images/dials/frequency/ws38_frequency_16.png
new file mode 100644
index 000000000..121889ca0
Binary files /dev/null and b/addons/sys_ws38/images/dials/frequency/ws38_frequency_16.png differ
diff --git a/addons/sys_ws38/images/dials/frequency/ws38_frequency_2.png b/addons/sys_ws38/images/dials/frequency/ws38_frequency_2.png
new file mode 100644
index 000000000..f14eccad1
Binary files /dev/null and b/addons/sys_ws38/images/dials/frequency/ws38_frequency_2.png differ
diff --git a/addons/sys_ws38/images/dials/frequency/ws38_frequency_3.png b/addons/sys_ws38/images/dials/frequency/ws38_frequency_3.png
new file mode 100644
index 000000000..4e73d3bb1
Binary files /dev/null and b/addons/sys_ws38/images/dials/frequency/ws38_frequency_3.png differ
diff --git a/addons/sys_ws38/images/dials/frequency/ws38_frequency_4.png b/addons/sys_ws38/images/dials/frequency/ws38_frequency_4.png
new file mode 100644
index 000000000..3fc71350f
Binary files /dev/null and b/addons/sys_ws38/images/dials/frequency/ws38_frequency_4.png differ
diff --git a/addons/sys_ws38/images/dials/frequency/ws38_frequency_5.png b/addons/sys_ws38/images/dials/frequency/ws38_frequency_5.png
new file mode 100644
index 000000000..f8ae91e35
Binary files /dev/null and b/addons/sys_ws38/images/dials/frequency/ws38_frequency_5.png differ
diff --git a/addons/sys_ws38/images/dials/frequency/ws38_frequency_6.png b/addons/sys_ws38/images/dials/frequency/ws38_frequency_6.png
new file mode 100644
index 000000000..22264ef97
Binary files /dev/null and b/addons/sys_ws38/images/dials/frequency/ws38_frequency_6.png differ
diff --git a/addons/sys_ws38/images/dials/frequency/ws38_frequency_7.png b/addons/sys_ws38/images/dials/frequency/ws38_frequency_7.png
new file mode 100644
index 000000000..283bc4b0c
Binary files /dev/null and b/addons/sys_ws38/images/dials/frequency/ws38_frequency_7.png differ
diff --git a/addons/sys_ws38/images/dials/frequency/ws38_frequency_8.png b/addons/sys_ws38/images/dials/frequency/ws38_frequency_8.png
new file mode 100644
index 000000000..7b9681476
Binary files /dev/null and b/addons/sys_ws38/images/dials/frequency/ws38_frequency_8.png differ
diff --git a/addons/sys_ws38/images/dials/frequency/ws38_frequency_9.png b/addons/sys_ws38/images/dials/frequency/ws38_frequency_9.png
new file mode 100644
index 000000000..ead8b4c9f
Binary files /dev/null and b/addons/sys_ws38/images/dials/frequency/ws38_frequency_9.png differ
diff --git a/addons/sys_ws38/images/knobs/mode/ws38_mode_0.png b/addons/sys_ws38/images/knobs/mode/ws38_mode_0.png
new file mode 100644
index 000000000..b2dee2720
Binary files /dev/null and b/addons/sys_ws38/images/knobs/mode/ws38_mode_0.png differ
diff --git a/addons/sys_ws38/images/knobs/mode/ws38_mode_1.png b/addons/sys_ws38/images/knobs/mode/ws38_mode_1.png
new file mode 100644
index 000000000..cb94085b5
Binary files /dev/null and b/addons/sys_ws38/images/knobs/mode/ws38_mode_1.png differ
diff --git a/addons/sys_ws38/images/knobs/mode/ws38_mode_2.png b/addons/sys_ws38/images/knobs/mode/ws38_mode_2.png
new file mode 100644
index 000000000..d2c788142
Binary files /dev/null and b/addons/sys_ws38/images/knobs/mode/ws38_mode_2.png differ
diff --git a/addons/sys_ws38/images/static/ws38_ui_backplate.png b/addons/sys_ws38/images/static/ws38_ui_backplate.png
new file mode 100644
index 000000000..32159fa32
Binary files /dev/null and b/addons/sys_ws38/images/static/ws38_ui_backplate.png differ
diff --git a/addons/sys_ws38/radio/__PREP__.sqf b/addons/sys_ws38/radio/__PREP__.sqf
new file mode 100644
index 000000000..71af65813
--- /dev/null
+++ b/addons/sys_ws38/radio/__PREP__.sqf
@@ -0,0 +1,33 @@
+#include "..\script_component.hpp"
+
+
+PREP_MODULE(radio,initializeRadio);
+
+PREP_MODULE(radio,setVolume);
+PREP_MODULE(radio,getVolume);
+PREP_MODULE(radio,getSpatial);
+PREP_MODULE(radio,setSpatial);
+PREP_MODULE(radio,setChannelData);
+PREP_MODULE(radio,getCurrentChannelData);
+PREP_MODULE(radio,getChannelDescription);
+PREP_MODULE(radio,getCurrentChannel);
+
+PREP_MODULE(radio,setCurrentChannel);
+PREP_MODULE(radio,getDefaultState);
+PREP_MODULE(radio,getStates);
+PREP_MODULE(radio,getState);
+PREP_MODULE(radio,setState);
+PREP_MODULE(radio,getOnOffState);
+PREP_MODULE(radio,setOnOffState);
+//PREP_MODULE(radio,getListInfo);
+PREP_MODULE(radio,handleMultipleTransmissions);
+PREP_MODULE(radio,handleBeginTransmission);
+PREP_MODULE(radio,handleEndTransmission);
+PREP_MODULE(radio,handleSignalData);
+PREP_MODULE(radio,handlePTTDown);
+PREP_MODULE(radio,handlePTTUp);
+PREP_MODULE(radio,isExternalAudio);
+PREP_MODULE(radio,getExternalAudioPosition);
+
+PREP_MODULE(radio,closeGUI);
+PREP_MODULE(radio,openGUI);
diff --git a/addons/sys_ws38/radio/fnc_closeGui.sqf b/addons/sys_ws38/radio/fnc_closeGui.sqf
new file mode 100644
index 000000000..3ff3aae5d
--- /dev/null
+++ b/addons/sys_ws38/radio/fnc_closeGui.sqf
@@ -0,0 +1,28 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Close radio GUI. Event raised by onUnload (WS38_RadioDialog).
+ *
+ * Arguments:
+ * 0: Radio ID
+ * 1: Event: "closeGui" (Unused)
+ * 2: Event data (Unused)
+ * 3: Radio data (Unused)
+ * 4: Remote (Unused)
+ *
+ * Return Value:
+ * True
+ *
+ * Example:
+ * ["ACRE_WS38_ID_1", "closeGui", [], [], false] call acre_sys_ws38_fnc_closeGui
+ *
+ * Public: No
+ */
+
+params ["_radioId", "", "", "", ""];
+
+[_radioId, false] call EFUNC(sys_radio,setRadioOpenState);
+
+[QGVAR(uiStateChanged), GVAR(uiStateChangedEh)]call CBA_fnc_removeEventHandler;
+GVAR(currentRadioId) = -1;
+true
diff --git a/addons/sys_ws38/radio/fnc_getChannelDescription.sqf b/addons/sys_ws38/radio/fnc_getChannelDescription.sqf
new file mode 100644
index 000000000..a48857dc2
--- /dev/null
+++ b/addons/sys_ws38/radio/fnc_getChannelDescription.sqf
@@ -0,0 +1,28 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Returns the description of the currently selected channel. Used in the transmission hint.
+ *
+ * Arguments:
+ * 0: Radio ID
+ * 1: Event: "getChannelDescription" (Unused)
+ * 2: Event data (Unused)
+ * 3: Radio data (Unused)
+ * 4: Remote (Unused)
+ *
+ * Return Value:
+ * Description of the channel in the form "Block x - Channel y"
+ *
+ * Example:
+ * ["ACRE_WS38_ID_1", "getChannelDescription", [], [], false] call acre_sys_ws38_fnc_getChannelDescription
+ *
+ * Public: No
+ */
+
+params ["_radioId", "", "", "", ""];
+
+private _hashData = [_radioId, "getCurrentChannelData"] call EFUNC(sys_data,dataEvent);
+
+private _description = format["Frequency: %1 MHz", HASH_GET(_hashData,"frequencyTX")];
+
+_description
diff --git a/addons/sys_ws38/radio/fnc_getCurrentChannel.sqf b/addons/sys_ws38/radio/fnc_getCurrentChannel.sqf
new file mode 100644
index 000000000..a8209f8d1
--- /dev/null
+++ b/addons/sys_ws38/radio/fnc_getCurrentChannel.sqf
@@ -0,0 +1,29 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Returns the current channel of the active radio.
+ *
+ * Arguments:
+ * 0: Radio ID (Unused)
+ * 1: Event: "getCurrentChannel" (Unused)
+ * 2: Event data (Unused)
+ * 3: Radio data
+ * 4: Remote (Unused)
+ *
+ * Return Value:
+ * Current channel id
+ *
+ * Example:
+ * ["ACRE_WS38_ID_1", "getCurrentChannel", [], _radioData, false] call acre_sys_ws38_fnc_getCurrentChannel
+ *
+ * Public: No
+ */
+
+params ["", "", "", "_radioData", ""];
+
+private _currentChannelId = HASH_GET(_radioData,"currentChannel");
+if (isNil "_currentChannelId") then {
+ _currentChannelId = 0;
+};
+
+_currentChannelId
diff --git a/addons/sys_ws38/radio/fnc_getCurrentChannelData.sqf b/addons/sys_ws38/radio/fnc_getCurrentChannelData.sqf
new file mode 100644
index 000000000..3870f9728
--- /dev/null
+++ b/addons/sys_ws38/radio/fnc_getCurrentChannelData.sqf
@@ -0,0 +1,42 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Gets the channel data. It consists of mode, transmitting and receiving frequencies and power
+ *
+ * Arguments:
+ * 0: Radio ID (Unused)
+ * 1: Event: "getCurrentChannelData" (Unused)
+ * 2: Event data (Unused)
+ * 3: Radio data
+ * 4: Remote (Unused)
+ *
+ * Return Value:
+ * Hash with mode, transmitting and receiving frequencies and power
+ *
+ * Example:
+ * ["ACRE_WS38_ID_1", "getCurrentChannelData", [], _radioData, false] call acre_sys_ws38_fnc_getCurrentChannelData
+ *
+ * Public: No
+ */
+
+params ["", "", "", "_radioData", ""];
+
+private _return = HASH_CREATE;
+
+HASH_SET(_return, "mode", HASH_GET(_radioData, "mode"));
+HASH_SET(_return, "frequencyTX", HASH_GET(_radioData, "frequencyTX"));
+HASH_SET(_return, "frequencyRX", HASH_GET(_radioData, "frequencyRX"));
+if (HASH_GET(_radioData, "powerSource") == "VAU") then {
+ HASH_SET(_return, "power", HASH_GET(_radioData, "power")); // currently the power stays the same
+} else {
+ HASH_SET(_return, "power", HASH_GET(_radioData, "power"));
+};
+HASH_SET(_return, "CTCSSTx", HASH_GET(_radioData, "CTCSSTx"));
+HASH_SET(_return, "CTCSSRx", HASH_GET(_radioData, "CTCSSRx"));
+HASH_SET(_return, "modulation", HASH_GET(_radioData, "modulation"));
+HASH_SET(_return, "encryption", HASH_GET(_radioData, "encryption"));
+HASH_SET(_return, "TEK", HASH_GET(_radioData, "TEK"));
+HASH_SET(_return, "trafficRate", HASH_GET(_radioData, "trafficRate"));
+HASH_SET(_return, "syncLength", HASH_GET(_radioData, "syncLength"));
+
+_return
diff --git a/addons/sys_ws38/radio/fnc_getDefaultState.sqf b/addons/sys_ws38/radio/fnc_getDefaultState.sqf
new file mode 100644
index 000000000..d706b9175
--- /dev/null
+++ b/addons/sys_ws38/radio/fnc_getDefaultState.sqf
@@ -0,0 +1,25 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * SHORT DESCRIPTION
+ *
+ * Arguments:
+ * 0: ARGUMENT ONE
+ * 1: ARGUMENT TWO
+ *
+ * Return Value:
+ * RETURN VALUE
+ *
+ * Example:
+ * [ARGUMENTS] call acre_sys_ws38_fnc_getDefaultState
+ *
+ * Public: No
+ */
+
+params ["_id", "_default"];
+
+private _value = [GVAR(currentRadioId), "getState", _id] call EFUNC(sys_data,dataEvent);
+if (isNil "_value") exitWith {
+ _default;
+};
+_value;
diff --git a/addons/sys_ws38/radio/fnc_getExternalAudioPosition.sqf b/addons/sys_ws38/radio/fnc_getExternalAudioPosition.sqf
new file mode 100644
index 000000000..e06b1d1d8
--- /dev/null
+++ b/addons/sys_ws38/radio/fnc_getExternalAudioPosition.sqf
@@ -0,0 +1,23 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Only used if a radio has an internal speaker. Since the AN/PRC 343 has none, this function returns an
+ * array of zeros and does nothing.
+ *
+ * Arguments:
+ * 0: Radio ID (Unused)
+ * 1: Event: "getExternalAudioPosition" (Unused)
+ * 2: Event data (Unused)
+ * 3: Radio data (Unused)
+ * 4: Remote (Unused)
+ *
+ * Return Value:
+ * Array of zeros
+ *
+ * Example:
+ * ["ACRE_WS38_ID_1", "getExternalAudioPosition", [], _radioData, false] call acre_sys_ws38_fnc_getExternalAudioPosition
+ *
+ * Public: No
+ */
+
+[0, 0, 0];
diff --git a/addons/sys_ws38/radio/fnc_getListInfo.sqf b/addons/sys_ws38/radio/fnc_getListInfo.sqf
new file mode 100644
index 000000000..03b539002
--- /dev/null
+++ b/addons/sys_ws38/radio/fnc_getListInfo.sqf
@@ -0,0 +1,23 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * For a Wireless Set No. 38 this function is the same as acre_sys_ws38_getChannelDescription,
+ * and therefore it is called here. Used in the transmission hint on the lower right corner.
+ *
+ * Arguments:
+ * 0: Radio ID
+ * 1: Event: "getListInfo"
+ * 2: Event data
+ * 3: Radio data
+ * 4: Remote
+ *
+ * Return Value:
+ * Description of the channel in the form "Block x - Channel y"
+ *
+ * Example:
+ * ["ACRE_WS38_ID_1", "getListInfo", [], [], false] call acre_sys_ws38_fnc_getListInfo
+ *
+ * Public: No
+ */
+
+_this call FUNC(getChannelDescription);
diff --git a/addons/sys_ws38/radio/fnc_getOnOffState.sqf b/addons/sys_ws38/radio/fnc_getOnOffState.sqf
new file mode 100644
index 000000000..f02dd6d3f
--- /dev/null
+++ b/addons/sys_ws38/radio/fnc_getOnOffState.sqf
@@ -0,0 +1,24 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * SHORT DESCRIPTION
+ *
+ * Arguments:
+ * 0: Radio ID (Unused)
+ * 1: Event: "getOnOffState" (Unused)
+ * 2: Event data (Unused)
+ * 3: Radio data
+ * 4: Remote (Unused)
+ *
+ * Return Value:
+ * Returns 1 if the radio is on 0 otherwise
+ *
+ * Example:
+ * ["ACRE_WS38_ID_1", "getOnOffState", [], _radioData, false] call acre_sys_ws38_fnc_getOnOffState
+ *
+ * Public: No
+ */
+
+params ["", "", "", "_radioData", ""];
+
+HASH_GET(_radioData, "radioOn");
diff --git a/addons/sys_ws38/radio/fnc_getSpatial.sqf b/addons/sys_ws38/radio/fnc_getSpatial.sqf
new file mode 100644
index 000000000..7ca5b7147
--- /dev/null
+++ b/addons/sys_ws38/radio/fnc_getSpatial.sqf
@@ -0,0 +1,27 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Returns the spatial configuration of the radio.
+ *
+ * Arguments:
+ * 0: Radio ID (Unused)
+ * 1: Event: "getSpatial" (Unused)
+ * 2: Event data (Unused)
+ * 3: Radio data (Unused)
+ * 4: Remote (Unused)
+ *
+ * Return Value:
+ * Spatial setting: -1 (left) 0 (center) or 1 (right). Defaulting to 0.
+ *
+ * Example:
+ * ["ACRE_WS38_ID_1", "getSpatial", [], _radioData, false] call acre_sys_ws38_fnc_getSpatial
+ *
+ * Public: No
+ */
+
+params ["_radioId", "", "", "", ""];
+
+private _spatial = [_radioId, "getState", "ACRE_INTERNAL_RADIOSPATIALIZATION"] call EFUNC(sys_data,dataEvent);
+
+if (!isNil "_spatial") exitWith { _spatial };
+0
diff --git a/addons/sys_ws38/radio/fnc_getState.sqf b/addons/sys_ws38/radio/fnc_getState.sqf
new file mode 100644
index 000000000..69f07183e
--- /dev/null
+++ b/addons/sys_ws38/radio/fnc_getState.sqf
@@ -0,0 +1,25 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Function to obtain the content of the radio data hash for the event data key
+ *
+ * Arguments:
+ * 0: Radio ID (Unused)
+ * 1: Event: "getState" (Unused)
+ * 2: Event data key
+ * 3: Radio data
+ * 4: Remote (Unused)
+ *
+ * Return Value:
+ * Radio data content for the event data key
+ *
+ * Example:
+ * ["ACRE_WS38_ID_1", "getState", "radioOn", _radioData, false] call acre_sys_ws38_fnc_getState
+ * ["ACRE_WS38_ID_1", "getState", "currentChannel", _radioData, false] call acre_sys_ws38_fnc_getState
+ * ["ACRE_WS38_ID_1", "getState", "volume", _radioData, false] call acre_sys_ws38_fnc_getState
+ * Public: No
+ */
+
+params ["", "", "_eventData", "_radioData", ""];
+
+HASH_GET(_radioData, _eventData);
diff --git a/addons/sys_ws38/radio/fnc_getStates.sqf b/addons/sys_ws38/radio/fnc_getStates.sqf
new file mode 100644
index 000000000..130cdba5e
--- /dev/null
+++ b/addons/sys_ws38/radio/fnc_getStates.sqf
@@ -0,0 +1,22 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Does nothing
+ *
+ * Arguments:
+ * 0: Radio ID (Unused)
+ * 1: Event: "getStates" (Unused)
+ * 2: Event data (Unused)
+ * 3: Radio data (Unused)
+ * 4: Remote (Unused)
+ *
+ * Return Value:
+ * None
+ *
+ * Example:
+ * ["ACRE_WS38_ID_1", "getStates", [], [], false] call acre_sys_ws38_fnc_getState] call acre_sys_ws38_fnc_getStates
+ *
+ * Public: No
+ */
+
+TRACE_1("", _this);
diff --git a/addons/sys_ws38/radio/fnc_getVolume.sqf b/addons/sys_ws38/radio/fnc_getVolume.sqf
new file mode 100644
index 000000000..cced9ef10
--- /dev/null
+++ b/addons/sys_ws38/radio/fnc_getVolume.sqf
@@ -0,0 +1,27 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Returns the current radio volume.
+ *
+ * Arguments:
+ * 0: Radio ID (Unused)
+ * 1: Event: "getVolume" (Unused)
+ * 2: Event data (Unused)
+ * 3: Radio data
+ *
+ * Return Value:
+ * Current radio volume to the power of 3 (for cubic function)
+ *
+ * Example:
+ * ["ACRE_WS38_ID_1", "getVolume", [], _radioData, false] call acre_sys_ws38_fnc_getVolume
+ *
+ * Public: No
+ */
+
+params ["", "", "", "_radioData", ""];
+
+private _volume = HASH_GET(_radioData,"volume");
+if (isNil "_volume") then {
+ _volume = 1;
+};
+_volume^3;
diff --git a/addons/sys_ws38/radio/fnc_handleBeginTransmission.sqf b/addons/sys_ws38/radio/fnc_handleBeginTransmission.sqf
new file mode 100644
index 000000000..08427da17
--- /dev/null
+++ b/addons/sys_ws38/radio/fnc_handleBeginTransmission.sqf
@@ -0,0 +1,22 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Function called when starting a transmission. For the WS38 it does nothing.
+ *
+ * Arguments:
+ * 0: Radio ID (Unused)
+ * 1: Event: "handleBeginTransmission" (Unused)
+ * 2: Event data (Unused)
+ * 3: Radio data (Unused)
+ * 4: Remote (Unused)
+ *
+ * Return Value:
+ * True
+ *
+ * Example:
+ * ["ACRE_WS38_ID_1", "handleBeginTransmission", [], [], false] call acre_sys_ws38_fnc_handleBeginTransmission
+ *
+ * Public: No
+ */
+
+true;
diff --git a/addons/sys_ws38/radio/fnc_handleEndTransmission.sqf b/addons/sys_ws38/radio/fnc_handleEndTransmission.sqf
new file mode 100644
index 000000000..a094178da
--- /dev/null
+++ b/addons/sys_ws38/radio/fnc_handleEndTransmission.sqf
@@ -0,0 +1,41 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Function called when the radio transmission is ended. It manages the radio behaviour if there
+ * are more than one transmission.
+ *
+ * Arguments:
+ * 0: Radio ID
+ * 1: Event: "handleEndTransmission" (Unused)
+ * 2: Event data with transmitting ID
+ * 3: Radio data (Unused)
+ * 4: Remote (Unused)
+ *
+ * Return Value:
+ * True
+ *
+ * Example:
+ * ["ACRE_WS38_ID_1", "handleEndTransmission", "ACRE_WS38_ID_2", [], false] call acre_sys_ws38_fnc_handleEndTransmission
+ *
+ * Public: No
+ */
+
+params ["_radioId", "", "_eventData", "", ""];
+
+_eventData params ["_txId"];
+private _currentTransmissions = SCRATCH_GET(_radioId,"currentTransmissions");
+_currentTransmissions = _currentTransmissions - [_txId];
+
+if (_currentTransmissions isEqualTo []) then {
+ private _beeped = SCRATCH_GET(_radioId, "hasBeeped");
+ private _pttDown = SCRATCH_GET_DEF(_radioId, "PTTDown", false);
+ if (!_pttDown) then {
+ if (!isNil "_beeped" && {_beeped}) then {
+ private _volume = [_radioId, "getVolume"] call EFUNC(sys_data,dataEvent);
+ [_radioId, "Acre_GenericClickOff", [0, 0, 0], [0, 1, 0], _volume] call EFUNC(sys_radio,playRadioSound);
+ };
+ };
+ SCRATCH_SET(_radioId, "hasBeeped", false);
+};
+
+true;
diff --git a/addons/sys_ws38/radio/fnc_handleMultipleTransmissions.sqf b/addons/sys_ws38/radio/fnc_handleMultipleTransmissions.sqf
new file mode 100644
index 000000000..f052ea94e
--- /dev/null
+++ b/addons/sys_ws38/radio/fnc_handleMultipleTransmissions.sqf
@@ -0,0 +1,259 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Handles multiple transmissions in the "singleChannel" mode. In this mode, the following parameters
+ * are used:
+ *
+ * - frequencyTX
+ * - frequencyRX
+ * - power
+ * - mode
+ * - CTCSSTx
+ * - CTCSSRx
+ * - modulation
+ * - encryption
+ * - TEK
+ * - trafficRate
+ * - syncLength
+ *
+ * Depending on this parameters, the function determines if a transmission is usable by the radio or if it
+ * is ignored.
+ *
+ * Arguments:
+ * 0: Radio ID
+ * 1: Event: "handleMultipleTransmission" (Unused)
+ * 2: Event data: transmitting radio IDs
+ * 3: Radio data (Unused)
+ * 4: Remote (Unused)
+ *
+ * Return Value:
+ * List of usable transmissions
+ *
+ * Example:
+ * ["ACRE_WS38_ID_1", "handleMultipleTransmissions", ["ACRE_WS38_ID_2", "ACRE_WS38_ID_3"], [], false] call acre_sys_WS38_fnc_handleMultipleTransmissions
+ *
+ * Public: No
+ */
+
+params ["_radioId", "", "_radios", "", ""];
+
+if !([_radioId] call EFUNC(sys_radio,canUnitReceive)) exitWith { [] };
+
+if (SCRATCH_GET_DEF(_radioId, "PTTDown", false) && !EGVAR(sys_core,fullDuplex)) exitWith { [] };
+private _beeped = SCRATCH_GET(_radioId, "hasBeeped");
+private _found = false;
+private _transmissionsChanged = false;
+
+private _lastSignalTime = SCRATCH_GET_DEF(_radioId, "lastSignalTime", diag_tickTime-2);
+
+
+if (diag_tickTime - _lastSignalTime > 1) then {
+ SCRATCH_SET(_radioId, "currentTransmissions", []);
+};
+
+SCRATCH_SET(_radioId, "lastSignalTime", diag_tickTime);
+
+private _currentTransmissions = SCRATCH_GET(_radioId, "currentTransmissions");
+if (isNil "_currentTransmissions") then {
+ _currentTransmissions = [];
+ SCRATCH_SET(_radioId, "currentTransmissions", _currentTransmissions);
+};
+private _transmissions = [];
+private _sortedRadios = [];
+private _okRadios = [];
+
+private _lastSortTime = SCRATCH_GET_DEF(_radioId, "lastSortTime", diag_tickTime-4);
+private _radioCache = SCRATCH_GET_DEF(_radioId, "currentTransmissionRadioCache", []);
+
+// Restort every 3 seconds no matter what.
+if (diag_tickTime - _lastSortTime > 3) then {
+ _transmissionsChanged = true;
+} else {
+ // Don't resort if we already resorted within the past second
+ // If its been a second, lets check to see if the transmitters changed.
+ //if (diag_tickTime - _lastSortTime > 1) then {
+ if (_radioCache isNotEqualTo []) then {
+ // Compare BOTH arrays.
+ {
+ if !(_x in _radioCache) exitWith { _transmissionsChanged = true; };
+ } forEach _radios;
+ if (!_transmissionsChanged) then {
+ {
+ if !(_x in _radios) exitWith { _transmissionsChanged = true; };
+ } forEach _radioCache;
+ };
+ } else {
+ // If the cache is empty, resort.
+ _transmissionsChanged = true;
+ };
+ //};
+};
+
+if (_transmissionsChanged) then {
+ private _areAllRadiosInitialized = true;
+
+ if ((count _radios) > 1) then {
+ private _sorted = [];
+ {
+ _x params ["","_txID","_signalData"];
+ _signalData params ["_signalPercent"];
+ if (_signalData isEqualTo [0, -992]) then {_areAllRadiosInitialized = false;};
+
+ PUSH(_sorted, [ARR_2(_signalPercent,_forEachIndex)]);
+ PUSH(_transmissions, _txId);
+ } forEach _radios;
+ _sorted sort false; // descending order
+
+ {
+ PUSH(_sortedRadios, (_radios select (_x select 1)));
+ } forEach _sorted;
+ } else {
+ PUSH(_transmissions, ((_radios select 0) select 1));
+ if (((_radios select 0) select 2) isEqualTo [0, -992]) then {_areAllRadiosInitialized = false;};
+ _sortedRadios = _radios;
+ };
+
+ private _dif = _transmissions - _currentTransmissions;
+ if (_dif isNotEqualTo []) then {
+ _currentTransmissions = _transmissions;
+ SCRATCH_SET(_radioId, "currentTransmissions", _currentTransmissions);
+ };
+
+ private _radioRxData = [_radioId, "getCurrentChannelData"] call EFUNC(sys_data,dataEvent);
+ // diag_log text format["%1 NON-CACHED", diag_tickTime];
+ if (HASH_GET(_radioRxData, "mode") == "singleChannel") then {
+ private _hearableTransmissions = [];
+ private _junkTransmissions = [];
+ private _digital = false;
+ {
+ private _txId = _x select 1;
+ private _radioTxData = [_txId, "getCurrentChannelData"] call EFUNC(sys_data,dataEvent);
+ if (HASH_GET(_radioRxData, "modulation") == HASH_GET(_radioTxData, "modulation")) then {
+ //diag_log text "MOD OK";
+ if (HASH_GET(_radioRxData, "encryption") == 1 && {HASH_GET(_radioTxData, "encryption") == 1}) then {
+ //diag_log text "ENCRYPTED";
+ if (HASH_GET(_radioRxData, "TEK") == HASH_GET(_radioTxData, "TEK") &&
+ {HASH_GET(_radioRxData, "trafficRate") == HASH_GET(_radioTxData, "trafficRate")}
+ ) then {
+ //diag_log text "DIGITAL CRYPTO!";
+ PUSH(_hearableTransmissions, _x);
+ _digital = true;
+ } else {
+ PUSH(_junkTransmissions, _x);
+ };
+ } else {
+ if (HASH_GET(_radioRxData, "encryption") == 0 && {HASH_GET(_radioTxData, "encryption") == 0}) then {
+ //diag_log text "PT!";
+ if (HASH_GET(_radioRxData, "modulation") == "FM" || {HASH_GET(_radioRxData, "modulation") == "NB"}) then {
+ //diag_log text "ITS FM BABY!";
+ if (HASH_GET(_radioRxData, "CTCSSRx") == HASH_GET(_radioTxData, "CTCSSTx") || {HASH_GET(_radioRxData, "CTCSSRx") == 0}) then {
+ //diag_log text "THE TONES MATCH!";
+ PUSH(_hearableTransmissions, _x);
+ } else {
+ //diag_log text format["NO TONE BONE: %1 == %2", HASH_GET(_radioRxData, "CTCSSRx"), HASH_GET(_radioTxData, "CTCSSTx")];
+ PUSH(_junkTransmissions, _x);
+ };
+ } else {
+ if (HASH_GET(_radioRxData, "modulation") == "AM") then {
+ //diag_log text "AM TALK JUNKIE!";
+ PUSH(_hearableTransmissions, _x);
+ } else {
+ PUSH(_junkTransmissions, _x);
+ };
+ };
+ } else {
+ PUSH(_junkTransmissions, _x);
+ };
+ };
+ } else {
+ PUSH(_junkTransmissions, _x);
+ };
+ } forEach _sortedRadios;
+
+ //diag_log text format["sorted: %1", _sortedRadios];
+ //diag_log text format["junk: %1", _junkTransmissions];
+ //diag_log text format["ok: %1", _hearableTransmissions];
+ if (EGVAR(sys_core,interference)) then {
+ if (_hearableTransmissions isNotEqualTo []) then {
+ _junkTransmissions = _hearableTransmissions + _junkTransmissions;
+ _hearableTransmissions params ["_bestSignal"];
+ (_bestSignal select 2) params ["_highestSignal", "_dbm"];
+ private _newSignal = _highestSignal;
+ //diag_log text format["new sig start: %1", _newSignal];
+ for "_i" from 1 to (count _junkTransmissions) - 1 do {
+ private _data = _junkTransmissions select _i;
+ _data params ["","_txId","_signalData"];
+ _signalData params ["_signal"];
+ if (_newSignal <= 0) exitWith {
+ _newSignal = 0;
+ };
+ _newSignal = _newSignal*(1-(_signal/_newSignal));
+ if (_newSignal <= 0) exitWith {
+ _newSignal = 0;
+ };
+ };
+ //diag_log text format["new sig end: %1", _newSignal];
+ if (_newSignal > 0) then {
+ _okRadios = [_bestSignal];
+ _bestSignal set [2, [_newSignal, _dbm + _dbm * (1 - (_newSignal / _highestSignal))]];
+ } else {
+ _okRadios = [];
+ };
+ };
+ } else {
+ _okRadios = _hearableTransmissions;
+ };
+ };
+
+
+ if (_okRadios isNotEqualTo []) then {
+ private _signalData = (_okRadios select 0) select 2;
+ _signalData params ["_signalPercent", "_signalDbM"];
+ //_channelNum = [_radioId, "getCurrentChannel"] call EFUNC(sys_data,dataEvent);
+ //_channels = [_radioId, "getState", "channels"] call EFUNC(sys_data,dataEvent);
+ //_channel = HASHLIST_SELECT(_channels, _channelNum);
+ private _squelch = [_radioId, "getState", "squelch"] call EFUNC(sys_data,dataEvent);
+ _squelch = -116 + _squelch;
+ // diag_log text format["squelch: %1 signal: %2", _squelch, _signalDbM];
+ if (_signalDbM < _squelch || {!EGVAR(sys_core,interference)}) then {
+ if (EGVAR(sys_core,interference)) then {
+ _okRadios = [];
+ };
+ private _pttDown = SCRATCH_GET_DEF(_radioId, "PTTDown", false);
+ if (!_pttDown && {!isNil "_beeped"} && {_beeped}) then {
+ private _volume = [_radioId, "getVolume"] call EFUNC(sys_data,dataEvent);
+ [_radioId, "Acre_WS38_end", [0, 0, 0], [0, 1, 0], _volume] call EFUNC(sys_radio,playRadioSound);
+ };
+ SCRATCH_SET(_radioId, "hasBeeped", false);
+ } else {
+ if (isNil "_beeped" || {!_beeped}) then {
+ //diag_log "BEEP!";
+ SCRATCH_SET(_radioId, "hasBeeped", true);
+ private _volume = [_radioId, "getVolume"] call EFUNC(sys_data,dataEvent);
+ [_radioId, "Acre_WS38_start", [0, 0, 0], [0, 1, 0], _volume] call EFUNC(sys_radio,playRadioSound);
+ };
+ };
+ } else {
+ private _pttDown = SCRATCH_GET_DEF(_radioId, "PTTDown", false);
+ if (!_pttDown && {!isNil "_beeped"} && {_beeped}) then {
+ private _volume = [_radioId, "getVolume"] call EFUNC(sys_data,dataEvent);
+ [_radioId, "Acre_WS38_end", [0, 0, 0], [0, 1, 0], _volume] call EFUNC(sys_radio,playRadioSound);
+ };
+ SCRATCH_SET(_radioId, "hasBeeped", false);
+ };
+
+ // Cache it
+ SCRATCH_SET(_radioId, "currentTransmissionRadioCache", _okRadios);
+ //Force a recalculation if data is not ready
+ if (_areAllRadiosInitialized) then {
+ SCRATCH_SET(_radioId, "lastSortTime", diag_tickTime);
+ } else {
+ SCRATCH_SET(_radioId, "lastSortTime", -4);
+ };
+} else {
+ _okRadios = _radioCache;
+};
+
+
+// diag_log text format["m: %1", _mend-_mstart];
+_okRadios
diff --git a/addons/sys_ws38/radio/fnc_handlePTTDown.sqf b/addons/sys_ws38/radio/fnc_handlePTTDown.sqf
new file mode 100644
index 000000000..a1c0cac9e
--- /dev/null
+++ b/addons/sys_ws38/radio/fnc_handlePTTDown.sqf
@@ -0,0 +1,35 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Function called when PTT key is pressed. The most important aspect is setting the PTTDown flag
+ * of the radio to true.
+ *
+ * Arguments:
+ * 0: Radio ID
+ * 1: Event: "handlePTTDown" (Unused)
+ * 2: Event data (Unused)
+ * 3: Radio data (Unused)
+ * 4: Remote (Unused)
+ *
+ * Return Value:
+ * true
+ *
+ * Example:
+ * ["ACRE_WS38_ID_1", "handlePTTDown", [], [], false] call acre_sys_ws38_fnc_handlePTTDown
+ *
+ * Public: No
+ */
+
+params ["_radioId", "", "", "", ""];
+
+if (!([_radioId] call EFUNC(sys_radio,canUnitTransmit))) exitWith {
+ false
+};
+
+private _volume = [_radioId, "getVolume"] call EFUNC(sys_data,dataEvent);
+private _currentMode = [_radioId, "getState", "function"] call EFUNC(sys_data,dataEvent);
+[_radioId, "setState", ["function", 2]] call EFUNC(sys_data,dataEvent);
+[QGVAR(uiStateChanged), []] call CBA_fnc_localEvent;
+[_radioId, "Acre_WS38_start", [0, 0, 0], [0, 1, 0], _volume] call EFUNC(sys_radio,playRadioSound);
+SCRATCH_SET(_radioId,"PTTDown",true);
+true
diff --git a/addons/sys_ws38/radio/fnc_handlePTTUp.sqf b/addons/sys_ws38/radio/fnc_handlePTTUp.sqf
new file mode 100644
index 000000000..d20227f80
--- /dev/null
+++ b/addons/sys_ws38/radio/fnc_handlePTTUp.sqf
@@ -0,0 +1,31 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Function called when PTT key is released. The most important aspect is setting the PTTDown flag
+ * of the radio to false.
+ *
+ * Arguments:
+ * 0: Radio ID
+ * 1: Event: "handlePTTUp" (Unused)
+ * 2: Event data (Unused)
+ * 3: Radio data (Unused)
+ * 4: Remote (Unused)
+ *
+ * Return Value:
+ * true
+ *
+ * Example:
+ * ["ACRE_WS38_ID_1", "handlePTTUp", [], [], false] call acre_sys_ws38_fnc_handlePTTUp
+ *
+ * Public: No
+ */
+
+params ["_radioId", "", "", "", ""];
+
+private _volume = [_radioId,"getVolume"] call EFUNC(sys_data,dataEvent);
+private _currentMode = [_radioId, "getState", "function"] call EFUNC(sys_data,dataEvent);
+[_radioId, "setState", ["function", 1]] call EFUNC(sys_data,dataEvent);
+[QGVAR(uiStateChanged), []] call CBA_fnc_localEvent;
+[_radioId, "Acre_WS38_end", [0, 0, 0], [0, 1, 0], _volume] call EFUNC(sys_radio,playRadioSound);
+SCRATCH_SET(_radioId,"PTTDown",false);
+true;
diff --git a/addons/sys_ws38/radio/fnc_handleSignalData.sqf b/addons/sys_ws38/radio/fnc_handleSignalData.sqf
new file mode 100644
index 000000000..cbe64ff64
--- /dev/null
+++ b/addons/sys_ws38/radio/fnc_handleSignalData.sqf
@@ -0,0 +1,24 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Allows for further processing of signal data.
+ *
+ * Arguments:
+ * 0: Radio ID (Unused)
+ * 1: Event: "handleSignalData" (Unused)
+ * 2: Event data
+ * 3: Radio data (Unused)
+ * 4: Remote (Unused)
+ *
+ * Return Value:
+ * Array returning the modified signal data
+ *
+ * Example:
+ * ["ACRE_WS38_ID_1", "handleSignalData", _eventData, [], false] call acre_sys_ws38_fnc_handleSignalData
+ *
+ * Public: No
+ */
+
+params ["", "", "_eventData", ""];
+
+_eventData;
diff --git a/addons/sys_ws38/radio/fnc_initializeRadio.sqf b/addons/sys_ws38/radio/fnc_initializeRadio.sqf
new file mode 100644
index 000000000..e75d568d2
--- /dev/null
+++ b/addons/sys_ws38/radio/fnc_initializeRadio.sqf
@@ -0,0 +1,71 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Initialises a radio by givint it a radio ID. This only happens once and the default
+ * preset (configuration) is copied.
+ *
+ * Arguments:
+ * 0: Radio ID
+ * 1: Event: "initializeRadio" (Unused)
+ * 2: Event data [baseclass, preset]
+ * 3: Radio data
+ * 4: Remote (Unused)
+ *
+ * Return Value:
+ * None
+ *
+ * Example:
+ * ["ACRE_PRC77_ID_1", "initializeRadio", ["ACRE_PRC77_base", default1], [], false] call acre_sys_prc77_fnc_initializeRadio
+ *
+ * Public: No
+ */
+
+params ["_radioId", "", "_eventData", "_radioData", ""];
+TRACE_1("INITIALIZING RADIO 77", _this);
+
+// Function to convert frequency to knob positions.
+private _frequencyToKnobPositions = {
+ params ["_frequency"];
+ private _basedFrequncy = _frequency - 30;
+ if (_frequency >= 53) then {
+ _basedFrequncy = _frequency - 53;
+ };
+ private _floor = floor _basedFrequncy;
+ private _dif = _basedFrequncy - _floor;
+ private _twentyiths = (round (_dif * 20));
+
+ +[_floor,_twentyiths];
+};
+
+_eventData params ["_baseName", "_preset"];
+private _presetData = [_baseName, _preset] call EFUNC(sys_data,getPresetData);
+private _channels = HASH_GET(_presetData,"channels");
+
+private _channelData = HASH_COPY(_channels select 0);
+private _frequencyTx = HASH_GET(_channelData,"frequencyTX");
+
+private _channelInfo = [_frequencyTx] call FUNC(getChannelForFrequency);
+private _dialPosition = (_channelInfo select 0);
+_frequencyTx = _channelInfo select 1;
+
+
+SCRATCH_SET(_radioId, "currentTransmissions", []);
+
+//Radio Settings
+HASH_SET(_radioData,"volume",EGVAR(sys_core,defaultRadioVolume)); //0-1
+HASH_SET(_radioData,"function",0); //0 - OFF, 1 - RECV, 2 - SEND
+HASH_SET(_radioData,"radioOn",0); //0 - OFF, 1 - ON
+HASH_SET(_radioData,"currentChannel",_dialPosition);
+HASH_SET(_radioData,"powerSource", "BAT");
+
+//Common Channel Settings
+HASH_SET(_radioData,"frequencyTX",_frequencyTx);
+HASH_SET(_radioData,"frequencyRX",_frequencyTx);
+HASH_SET(_radioData,"power",200);
+HASH_SET(_radioData,"mode","singleChannel");
+HASH_SET(_radioData,"modulation","AM");
+HASH_SET(_radioData,"encryption",0);
+HASH_SET(_radioData,"TEK","");
+HASH_SET(_radioData,"trafficRate",0);
+HASH_SET(_radioData,"syncLength",0);
+HASH_SET(_radioData,"squelch",3);
diff --git a/addons/sys_ws38/radio/fnc_isExternalAudio.sqf b/addons/sys_ws38/radio/fnc_isExternalAudio.sqf
new file mode 100644
index 000000000..dcf7012b1
--- /dev/null
+++ b/addons/sys_ws38/radio/fnc_isExternalAudio.sqf
@@ -0,0 +1,23 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Only used if a radio has an internal speaker. Since the AN/PRC 343 has none, this function returns
+ * always false.
+ *
+ * Arguments:
+ * 0: Radio ID (Unused)
+ * 1: Event: "isExternalAudio" (Unused)
+ * 2: Event data (Unused)
+ * 3: Radio data (Unused)
+ * 4: Remote (Unused)
+ *
+ * Return Value:
+ * False
+ *
+ * Example:
+ * ["ACRE_WS38_ID_1", "isExternalAudio", [], [], false] call acre_sys_ws38_fnc_isExternalAudio
+ *
+ * Public: No
+ */
+
+false
diff --git a/addons/sys_ws38/radio/fnc_openGui.sqf b/addons/sys_ws38/radio/fnc_openGui.sqf
new file mode 100644
index 000000000..2c64275fc
--- /dev/null
+++ b/addons/sys_ws38/radio/fnc_openGui.sqf
@@ -0,0 +1,42 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Opens the GUI of the radio. This is trigered by either double-click in the inventory,
+ * through the ACE interact menu (if available) or through the keybinding "open radio".
+ *
+ *
+ * Arguments:
+ * 0: Radio ID
+ * 1: Event: "openGui" (Unused)
+ * 2: Event data (Unused)
+ * 3: Radio data (Unused)
+ * 4: Remote (Unused)
+ *
+ * Return Value:
+ * True
+ *
+ * Example:
+ * ["ACRE_WS38_ID_1", "openGui", [], [], false] call acre_sys_ws38_fnc_openGui
+ *
+ * Public: No
+ */
+
+TRACE_1("OPENING GUI", _this);
+params ["_radioId", "", "", "", ""];
+
+// Prevent radio from being opened if it is externally used or it is not accessible
+if (!([_radioId] call EFUNC(sys_radio,canOpenRadio))) exitWith { false };
+
+GVAR(currentRadioId) = _radioId;
+createDialog "WS38_RadioDialog";
+
+// Support reserved keybinds on dialog (eg. Tab)
+MAIN_DISPLAY call (uiNamespace getVariable "CBA_events_fnc_initDisplayCurator");
+GVAR(uiStateChangedEh) = [QGVAR(uiStateChanged), {
+ private _mode = GET_STATE("function");
+ TRACE_1("UI State changed", _mode);
+ [MAIN_DISPLAY] call FUNC(render);
+}] call CBA_fnc_addEventHandler;
+[_radioId, true] call EFUNC(sys_radio,setRadioOpenState);
+
+true
diff --git a/addons/sys_ws38/radio/fnc_setChannelData.sqf b/addons/sys_ws38/radio/fnc_setChannelData.sqf
new file mode 100644
index 000000000..fe5ecca4b
--- /dev/null
+++ b/addons/sys_ws38/radio/fnc_setChannelData.sqf
@@ -0,0 +1,22 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Sets the channel data. On a Wireless Set No. 38 this cannot be changed.
+ *
+ * Arguments:
+ * 0: Radio ID (Unused)
+ * 1: Event: "setChannelData" (Unused)
+ * 2: Event data (Unused)
+ * 3: Radio data
+ * 4: Remote (Unused)
+ *
+ * Return Value:
+ * None
+ *
+ * Example:
+ * ["ACRE_WS38_ID_1", "setChannelData", [], [], false] call acre_sys_ws38_fnc_setChannelData
+ *
+ * Public: No
+ */
+
+TRACE_1("", _this);
diff --git a/addons/sys_ws38/radio/fnc_setCurrentChannel.sqf b/addons/sys_ws38/radio/fnc_setCurrentChannel.sqf
new file mode 100644
index 000000000..3975dc9a3
--- /dev/null
+++ b/addons/sys_ws38/radio/fnc_setCurrentChannel.sqf
@@ -0,0 +1,33 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Sets the desired channel as current.
+ *
+ * Arguments:
+ * 0: Radio ID
+ * 1: Event: "setCurrentChannel" (Unused)
+ * 2: Event data
+ * 3: Radio data
+ * 4: Remote (Unused)
+ *
+ * Return Value:
+ * None
+ *
+ * Example:
+ * ["ACRE_WS38_ID_1", "setCurrentChannel", 5, _radioData, false] call acre_sys_ws38_fnc_setCurrentChannel
+ *
+ * Public: No
+ */
+
+TRACE_1("", _this);
+
+params ["_radioId", "", "_eventData", "_radioData", ""];
+
+TRACE_1("SETTING CURRENT CHANNEL",_this);
+
+private _frequencyData = [_eventData] call FUNC(getFrequencyForChannel);
+
+HASH_SET(_radioData,"currentChannel",_frequencyData select 1);
+HASH_SET(_radioData,"frequencyTX",_frequencyData select 0);
+HASH_SET(_radioData,"frequencyRX",_frequencyData select 0);
+HASH_SET(_radioData,"power",200);
diff --git a/addons/sys_ws38/radio/fnc_setOnOffState.sqf b/addons/sys_ws38/radio/fnc_setOnOffState.sqf
new file mode 100644
index 000000000..90ed59d84
--- /dev/null
+++ b/addons/sys_ws38/radio/fnc_setOnOffState.sqf
@@ -0,0 +1,24 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Sets the radio on (1) or off (0).
+ *
+ * Arguments:
+ * 0: Radio ID (Unused)
+ * 1: Event: "setOnOffState" (Unused)
+ * 2: Event data
+ * 3: Radio data
+ * 4: Remote (Unused)
+ *
+ * Return Value:
+ * None
+ *
+ * Example:
+ * ["ACRE_WS38_ID_1", "setOnOffState", 1, [], false] call acre_sys_ws38_fnc_setOnOffState
+ *
+ * Public: No
+ */
+
+params ["", "", "_eventData", "_radioData", ""];
+
+HASH_SET(_radioData,"radioOn",_eventData);
diff --git a/addons/sys_ws38/radio/fnc_setSpatial.sqf b/addons/sys_ws38/radio/fnc_setSpatial.sqf
new file mode 100644
index 000000000..adc739c38
--- /dev/null
+++ b/addons/sys_ws38/radio/fnc_setSpatial.sqf
@@ -0,0 +1,25 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Sets the spatial configuration of the radio. Possible values are -1 (left), 0 (center) and 1 (right).
+ * Values are not checked in this function.
+ *
+ * Arguments:
+ * 0: Radio ID
+ * 1: Event: "setSpatial" (Unused)
+ * 2: Event data
+ * 3: Radio data (Unused)
+ * 4: Remote (Unused)
+ *
+ * Return Value:
+ * None
+ *
+ * Example:
+ * ["ACRE_WS38_ID_1", "setSpatial", -1, [], false] call acre_sys_ws38_fnc_setSpatial
+ *
+ * Public: No
+ */
+
+params ["_radioId", "", "_eventData", "", ""];
+
+[_radioId, "setState", ["ACRE_INTERNAL_RADIOSPATIALIZATION", _eventData]] call EFUNC(sys_data,dataEvent);
diff --git a/addons/sys_ws38/radio/fnc_setState.sqf b/addons/sys_ws38/radio/fnc_setState.sqf
new file mode 100644
index 000000000..5a21adcb9
--- /dev/null
+++ b/addons/sys_ws38/radio/fnc_setState.sqf
@@ -0,0 +1,25 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Sets the a key pair content into the radioData hash.
+ *
+ * Arguments:
+ * 0: Radio ID (Unused)
+ * 1: Event: "setState" (Unused)
+ * 2: Event data key pair ["Key", value]
+ * 3: Radio data
+ * 4: Remote (Unused)
+ *
+ * Return Value:
+ * None
+ *
+ * Example:
+ * ["ACRE_WS38_ID_1", "setState", ["volume", 0.8], _radioData, false] call acre_sys_ws38_fnc_setState
+ * ["ACRE_WS38_ID_1", "setState", ["currentChannel", 1], _radioData, false] call acre_sys_ws38_fnc_setState
+ *
+ * Public: No
+ */
+
+params ["", "", "_eventData", "_radioData", ""];
+
+HASH_SET(_radioData, _eventData select 0, _eventData select 1);
diff --git a/addons/sys_ws38/radio/fnc_setVolume.sqf b/addons/sys_ws38/radio/fnc_setVolume.sqf
new file mode 100644
index 000000000..b1f4b66c1
--- /dev/null
+++ b/addons/sys_ws38/radio/fnc_setVolume.sqf
@@ -0,0 +1,27 @@
+#include "..\script_component.hpp"
+/*
+ * Author: ACRE2Team
+ * Sets the volume of the current radio.
+ *
+ * Arguments:
+ * 0: Radio ID (Unused)
+ * 1: Event: "setVolume" (Unused)
+ * 2: Event data
+ * 3: Radio data
+ * 4: Remote (Unused)
+ *
+ * Return Value:
+ * None
+ *
+ * Example:
+ * ["ACRE_WS38_ID_1", "volume", 0.8, _radioData, false] call acre_sys_ws38_fnc_setState] call acre_sys_ws38_fnc_setVolume
+ *
+ * Public: No
+ */
+
+TRACE_1("", _this);
+
+params ["", "", "_eventData", "_radioData", ""];
+
+TRACE_1("SETTING CURRENT VOLUME",_this);
+HASH_SET(_radioData,"volume",_eventData);
diff --git a/addons/sys_ws38/script_component.hpp b/addons/sys_ws38/script_component.hpp
new file mode 100644
index 000000000..f06efe1af
--- /dev/null
+++ b/addons/sys_ws38/script_component.hpp
@@ -0,0 +1,33 @@
+#define COMPONENT SYS_WS38
+#define COMPONENT_BEAUTIFIED WS38
+#include "\idi\acre\addons\main\script_mod.hpp"
+
+// #define DEBUG_MODE_FULL
+// #define DISABLE_COMPILE_CACHE
+// #define ENABLE_PERFORMANCE_COUNTERS
+// #define DEBUG_ENABLED_SYS_WS38
+
+#ifdef DEBUG_ENABLED_SYS_WS38
+ #define DEBUG_MODE_FULL
+#endif
+
+#ifdef DEBUG_ENABLED_SYS_WS38
+ #define DEBUG_SETTINGS DEBUG_SETTINGS_SYS_WS38
+#endif
+
+#include "\idi\acre\addons\main\script_macros.hpp"
+
+#define NAME_WS38 WS No. 38
+#define LONG_NAME Wireless Set No. 38 Mk. II
+
+#define GET_VAR(var1) acre_player getVariable QGVAR(var1)
+#define SET_VAR(var1,var2) acre_player setVariable [QGVAR(var1), var2]
+
+#define MAIN_DISPLAY (findDisplay 31337)
+
+#define MIN_FREQUENCY 7.4
+#define MAX_FREQUENCY 9.0
+#define INDEX_CONVERSION (MIN_FREQUENCY * 10)
+#define MAX_DIAL_INDICES (MAX_FREQUENCY * 10 - MIN_FREQUENCY * 10)
+
+#include "\idi\acre\addons\sys_components\script_acre_component_defines.hpp"
diff --git a/addons/sys_ws38/ws38_RadioDialog.hpp b/addons/sys_ws38/ws38_RadioDialog.hpp
new file mode 100644
index 000000000..de4b3e229
--- /dev/null
+++ b/addons/sys_ws38/ws38_RadioDialog.hpp
@@ -0,0 +1,74 @@
+#define CODE_SPACING 0.0245
+
+#define CONTROL_SetRelativePos(xpos,ypos) x = H_OFFSET + (xpos * 0.001); y = H_OFFSET + (ypos * 0.001);
+#define CONTROL_SetDimensions(width, height) w = width * 0.001; h = height * 0.001;
+
+#define BEGIN_CONTROL(name, parent, idval) class name: parent { idc = idval;
+#define END_CONTROL };
+
+#define NEW_SCALE 1
+#define SCALE (NEW_SCALE/0.9)
+
+
+class WS38_RadioDialog {
+ idd = 31337;
+ MovingEnable = 0;
+ onUnload = QUOTE(['closeGui'] call GUI_INTERACT_EVENT);
+ onLoad = QUOTE(_this call FUNC(render));
+ controlsBackground[] = {"WS38Background"};
+ objects[] = {};
+ class WS38Background {
+ type = CT_STATIC;
+ idc = 99999;
+ style = QUOTE(ST_PICTURE + ST_KEEP_ASPECT_RATIO);
+ colorBackground[] = {0, 0, 0, 0};
+ colorText[] = {1, 1, 1, 1};
+ font = FontM;
+ sizeEx = 0.04;
+ x = "safezoneX";
+ y = QUOTE((0.5-((1*safezoneW)/2)));
+ w = QUOTE(1*safezoneW);
+ h = QUOTE(1*safezoneW);
+
+ text = QPATHTOF(Data\static\ws38_ui_backplate.paa);
+ };
+ class controls {
+ BEGIN_CONTROL(ModeKnob,Ws38_RscPicture,106)
+ x = "safezoneX";
+ y = QUOTE((0.5-((1*safezoneW)/2)));
+ w = QUOTE(1*safezoneW);
+ h = QUOTE(1*safezoneW);
+ text = QPATHTOF(Data\knobs\mode\ws38_mode_0.paa);
+ END_CONTROL
+
+ BEGIN_CONTROL(ModeKnobButton,Ws38_RscButton,-1)
+ x = QUOTE((0.605 * safeZoneW) + safeZoneX);
+ y = QUOTE((0.305 * safeZoneW) + safeZoneX);
+ w = QUOTE(0.1*SafeZoneW);
+ h = QUOTE(0.19*SafeZoneW);
+ colorBackground[] = {1, 0, 0, 0};
+ text = "";
+ onMouseButtonUp = QUOTE(_this call acre_sys_ws38_fnc_onFunctionKnobPress);
+ toolTip = ECSTRING(sys_radio,ui_RadioMode);
+ END_CONTROL
+
+ BEGIN_CONTROL(FrequencyDial,Ws38_RscPicture,107)
+ x = "safezoneX";
+ y = QUOTE((0.5-((1*safezoneW)/2)));
+ w = QUOTE(1*safezoneW);
+ h = QUOTE(1*safezoneW);
+ text = QPATHTOF(Data\dials\frequency\ws38_frequency_0.paa);
+ END_CONTROL
+
+ BEGIN_CONTROL(FrequencyDialButton,Ws38_RscButton,-1)
+ x = QUOTE((0.409 * safeZoneW) + safeZoneX);
+ y = QUOTE((0.305 * safeZoneW) + safeZoneX);
+ w = QUOTE(0.20*SafeZoneW);
+ h = QUOTE(0.25*SafeZoneW);
+ colorBackground[] = {1, 0, 0, 0};
+ text = "";
+ onMouseButtonUp = QUOTE(_this call acre_sys_ws38_fnc_onFrequencyDialPress);
+ toolTip = ECSTRING(sys_radio,ui_changeFrequency);
+ END_CONTROL
+ };
+};
diff --git a/extras/antennas/AerialRod_12ft.nec b/extras/antennas/AerialRod_12ft.nec
new file mode 100644
index 000000000..545d23e78
--- /dev/null
+++ b/extras/antennas/AerialRod_12ft.nec
@@ -0,0 +1,13 @@
+CM Aerial Rod 12ft
+CM
+CM
+CM
+CE
+GW 1 4 0 0 0 0 0 3.66 .0015 'Wire 1, 9 segments, halve wavelength long.
+GE 1
+LD 4 1 1 4 50
+GN 1
+EK
+EX 0 1 1 0 1 0 0 'Voltage source (1+j0) at wire 1 segment 1.
+FR 0 482 0 0 7.4 1
+EN
diff --git a/extras/antennas/AerialRod_4ft.nec b/extras/antennas/AerialRod_4ft.nec
new file mode 100644
index 000000000..c9a77cb3d
--- /dev/null
+++ b/extras/antennas/AerialRod_4ft.nec
@@ -0,0 +1,14 @@
+CM Aerial Rod
+CM
+CM
+CM
+CM
+CE
+GW 1 2 0 0 0 0 0 1.22 .0015 'Wire 1, 1 segments, halve wavelength long.
+GE 1
+LD 4 1 1 2 50
+GN 1
+EK
+EX 0 1 1 0 1 0 0 'Voltage source (1+j0) at wire 1 segment 1.
+FR 0 482 0 0 7.4 1
+EN
diff --git a/extras/sounds/WS38/end.wav b/extras/sounds/WS38/end.wav
new file mode 100644
index 000000000..6fd18e9bc
Binary files /dev/null and b/extras/sounds/WS38/end.wav differ
diff --git a/extras/sounds/WS38/start.wav b/extras/sounds/WS38/start.wav
new file mode 100644
index 000000000..4f24335b3
Binary files /dev/null and b/extras/sounds/WS38/start.wav differ