mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-13 19:52:38 +03:00
- Moved player_countMagazines to \compile\ folder - Removed several unused and obsolete files - Moved some epoch functions out of compiles.sqf into individual files - Synced order and formatting with 1.8.7. Much easier to compare now. Any changes I make to official DayZ Mod code and files I also submit as a pull request to them.
408 lines
18 KiB
Plaintext
408 lines
18 KiB
Plaintext
//Medical Event Handlers
|
|
"norrnRaLW" addPublicVariableEventHandler {(_this select 1) execVM "\z\addons\dayz_code\medical\publicEH\load_wounded.sqf"};
|
|
"norrnRLact" addPublicVariableEventHandler {(_this select 1) execVM "\z\addons\dayz_code\medical\load\load_wounded.sqf"};
|
|
"norrnRDead" addPublicVariableEventHandler {[_this select 1] execVM "\z\addons\dayz_code\medical\publicEH\deadState.sqf"};
|
|
//"usecBleed" addPublicVariableEventHandler {_id = (_this select 1) spawn fnc_usec_damageBleed};
|
|
//"usecBandage" addPublicVariableEventHandler {(_this select 1) call player_medBandage};
|
|
"usecInject" addPublicVariableEventHandler {(_this select 1) call player_medInject};
|
|
//"usecEpi" addPublicVariableEventHandler {(_this select 1) call player_medEpi};
|
|
//"usecTransfuse" addPublicVariableEventHandler {(_this select 1) call player_medTransfuse};
|
|
//"usecMorphine" addPublicVariableEventHandler {(_this select 1) call player_medMorphine};
|
|
//"usecPainK" addPublicVariableEventHandler {(_this select 1) call player_medPainkiller};
|
|
"PVDZE_plr_Hit" addPublicVariableEventHandler {(_this select 1) call fnc_usec_damageHandler};
|
|
//"usecBreakLegs" addPublicVariableEventHandler {(_this select 1) call player_breaklegs};
|
|
"PVDZ_hlt_Bleed" addPublicVariableEventHandler {(_this select 1) spawn fnc_usec_damageBleed};
|
|
"PVDZ_veh_SF" addPublicVariableEventHandler {(_this select 1) call fnc_veh_handleRepair}; // repair a part from a vehicle
|
|
|
|
//Both
|
|
"PVCDZE_veh_SetFuel" addPublicVariableEventHandler {(_this select 1) spawn local_setFuel};
|
|
"PVDZE_veh_SFix" addPublicVariableEventHandler {(_this select 1) call object_setFixServer};
|
|
"PVCDZE_plr_HideBody" addPublicVariableEventHandler {hideBody (_this select 1)};
|
|
"PVDZE_obj_Hide" addPublicVariableEventHandler {hideObject (_this select 1)};
|
|
"PVDZE_veh_Lock" addPublicVariableEventHandler {(_this select 1) spawn local_lockUnlock};
|
|
"PVCDZE_obj_GutBody" addPublicVariableEventHandler {(_this select 1) spawn local_gutObject};
|
|
"PVDZE_plr_GutBodyZ" addPublicVariableEventHandler {(_this select 1) spawn local_gutObjectZ};
|
|
"PVDZE_veh_Init" addPublicVariableEventHandler {(_this select 1) call fnc_veh_ResetEH};
|
|
//"PVDZE_plr_HumanityChange" addPublicVariableEventHandler {(_this select 1) spawn player_humanityChange};
|
|
"PVDZE_serverObjectMonitor" addPublicVariableEventHandler {PVDZE_serverObjectMonitor = dayz_safety};
|
|
/* PVS/PVC - Skaronator */
|
|
"PVCDZE_veh_SH" addPublicVariableEventHandler {(_this select 1) call fnc_veh_handleDam}; // set damage to vehicle part
|
|
|
|
//reset OpenTarget timer
|
|
"PVCDZE_OpenTarget_Reset" addPublicVariableEventHandler { OpenTarget_Time = diag_tickTime; };
|
|
|
|
"PVCDZE_veh_engineSwitch" addPublicVariableEventHandler {(_this select 1) spawn dayz_engineSwitch};
|
|
|
|
"PVDZE_Server_Simulation" addPublicVariableEventHandler {
|
|
_agent = ((_this select 1) select 0);
|
|
_control = ((_this select 1) select 1);
|
|
|
|
_agent enableSimulation _control;
|
|
};
|
|
|
|
{
|
|
private ["_building", "_fckingcode"];
|
|
|
|
_fckingcode = {
|
|
private [ "_building", "_part", "_dmgLvl", "_who", "_ammo", "_dist" ];
|
|
|
|
_building = _this select 0;
|
|
_part = _this select 1;
|
|
_dmgLvl = 1 min (_this select 2);
|
|
_who = _this select 3;
|
|
_ammo = _this select 4;
|
|
if (_part != 'glass' AND _dmgLvl > 0.01) then {
|
|
if (isServer) then {
|
|
diag_log ['Log building damage', _this];
|
|
}
|
|
else {
|
|
if (isNull _who) then {
|
|
if (_ammo != "" and _ammo isKindOf "HelicopterExploSmall") then {
|
|
_who = player;
|
|
_dist = round (_who distance _building);
|
|
PVDZ_sec_atp = format [ "UID#%1 d4maged %2 %5 to %3pct with ammo %4 at dist4nce %6m.",
|
|
getPlayerUID _who, typeOf _building, round (100 * _dmgLvl), _ammo, _part, _dist ];
|
|
publicVariableServer "PVDZ_sec_atp";
|
|
};
|
|
}
|
|
else {
|
|
if (_who == player) then {
|
|
_dist = round (_who distance _building);
|
|
PVDZ_sec_atp = format [ "UID#%1 d4maged %2 %5 to %3pct with ammo %4 at dist4nce %6m.",
|
|
getPlayerUID _who, typeOf _building, round (100 * _dmgLvl), _ammo, _part, _dist ];
|
|
publicVariableServer "PVDZ_sec_atp";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
if ((!isNull _who) and {(_who distance _building < 150)}) then {_dmgLvl} else {0}
|
|
};
|
|
_building = [_x select 0,_x select 1,0] nearestObject (_x select 2);
|
|
_building removeAllEventHandlers "handleDamage";
|
|
_building addEventHandler ["handleDamage", _fckingcode];
|
|
} forEach [
|
|
[7069,7727,206458], [6009,7815,203486], [10638,8016,272598], [6553,5598,223435], [6914,11431,141876],
|
|
[4660,9596,145234], [4788,10257,143923], [11467,7479,276453], [4628,10489,137736], [4551,6395,212964],
|
|
[3815,8948,132069], [3804,8925,132182], [11957,9120,261904], [12031,9158,261252], [12057,9103,261945],
|
|
[12227,9518,256625], [12237,9493,262727], [12256,9508,262732], [12275,9479,262631], [3064,7975,172476],
|
|
[3055,7855,172835], [12742,9593,259691], [11254,12210,236245], [12780,10128,257815], [12805,10089,258268],
|
|
[12803,10119,258288], [11251,4274,353940], [13100,7177,297715], [7098,2738,966951], [6817,2702,966613],
|
|
[6379,2791,965644], [6414,2760,965688], [6371,2747,965657], [6386,2735,965658], [6410,2716,965659],
|
|
[6383,2691,965643], [6899,2561,969372], [6854,2556,969371], [6770,2525,968272], [6901,2484,969736],
|
|
[6783,2485,968116], [6507,2532,967694], [6835,2388,969223], [6578,2402,968509], [6661,2345,968949],
|
|
[6679,2302,969332], [2587,5069,188570], [6537,2302,968797], [10424,2562,362226], [10420,2368,363222],
|
|
[10443,2345,363318], [10481,2358,363308], [10365,2241,363748], [10518,2288,364628], [10457,2256,363454],
|
|
[10174,1810,366820], [3589,2175,328944]
|
|
];
|
|
|
|
//Server only
|
|
if (isServer) then {
|
|
/* PVS/PVC - Skaronator */
|
|
"PVDZE_send" addPublicVariableEventHandler {(_this select 1) call server_sendToClient};
|
|
"PVDZE_maintainArea" addPublicVariableEventHandler {(_this select 1) spawn server_maintainArea};
|
|
|
|
"PVDZE_atp" addPublicVariableEventHandler {
|
|
_x = _this select 1;
|
|
if (typeName _x == "STRING") then {
|
|
diag_log _x;
|
|
};
|
|
};
|
|
"PVDZE_plr_Died" addPublicVariableEventHandler {_id = (_this select 1) spawn server_playerDied};
|
|
"PVDZE_plr_Save" addPublicVariableEventHandler {_id = (_this select 1) spawn server_playerSync;};
|
|
"PVDZE_obj_Publish" addPublicVariableEventHandler {(_this select 1) call server_publishObj};
|
|
"PVDZE_veh_Update" addPublicVariableEventHandler {_id = (_this select 1) spawn server_updateObject};
|
|
"PVDZE_plr_Login" addPublicVariableEventHandler {_id = (_this select 1) spawn server_playerLogin};
|
|
"PVDZE_plr_Login2" addPublicVariableEventHandler {(_this select 1) call server_playerSetup};
|
|
"PVDZE_plr_Morph" addPublicVariableEventHandler {(_this select 1) call server_playerMorph};
|
|
"PVDZE_plr_LoginRecord" addPublicVariableEventHandler {_id = (_this select 1) spawn dayz_recordLogin};
|
|
//Checking
|
|
"PVDZE_obj_Delete" addPublicVariableEventHandler {(_this select 1) spawn server_deleteObj};
|
|
"PVDZ_obj_Save" addPublicVariableEventHandler {(_this select 1) call server_updateObject; diag_log ("PublicEH");};
|
|
// upgrade && maintain
|
|
"PVDZE_obj_Swap" addPublicVariableEventHandler {(_this select 1) spawn server_swapObject};
|
|
// disable zombies server side
|
|
"PVDZE_zed_Spawn" addPublicVariableEventHandler {(_this select 1) spawn server_handleZedSpawn};
|
|
"PVDZ_dayzCarBomb" addPublicVariableEventHandler {[_this select 1] execVM "\z\addons\dayz_code\actions\detonate_bomb.sqf";};
|
|
"PVDZ_playerMedicalSync" addPublicVariableEventHandler { (_this select 1) call server_medicalSync; ((_this select 1) select 0) setVariable["Medical",((_this select 1) select 1),false]; }; //diag_log format["%1 - %2",((_this select 1) select 0),((_this select 1) select 1)]; };
|
|
"PVDZ_object_replace" addPublicVariableEventHandler {
|
|
_cursorTarget = _this select 1;
|
|
_vars = ((_this select 1)select 0) getVariable "MaintenanceVars";
|
|
|
|
if (!isnil "_vars" and _cursorTarget isKindOf "DZ_buildables") then {
|
|
deleteVehicle ((_this select 1)select 0);
|
|
_object = createVehicle [(_vars select 0), (_vars select 1), [], 0, if (_type in DayZ_nonCollide) then {"NONE"} else {"CAN_COLLIDE"}];
|
|
_object setVariable["Maintenance",false,true];
|
|
};
|
|
};
|
|
"PVDZ_sendUnconscious" addPublicVariableEventHandler {
|
|
_owner = ((_this select 1) select 0);
|
|
_duration = ((_this select 1) select 1);
|
|
|
|
diag_log format["%1,%2",_owner,_duration];
|
|
|
|
PVDZ_receiveUnconscious = [_owner,_duration];
|
|
(owner _owner) publicVariableClient "PVDZ_receiveUnconscious";
|
|
};
|
|
|
|
"PVDZ_gridsActive" addPublicVariableEventHandler {
|
|
_gridref = ((_this select 1) select 0);
|
|
_gridloc = ((_this select 1) select 1);
|
|
|
|
if (!(_gridref in dayz_gridsActive)) then {
|
|
dayz_gridsActive set [count dayz_gridsActive,_gridref];
|
|
dayz_seedloot set [count dayz_seedloot,[_gridloc,_gridref]];
|
|
};
|
|
diag_log format ["%1, %2, %3", _gridref, dayz_gridsActive, dayz_seedloot];
|
|
};
|
|
|
|
"PVDZ_gridsRemove" addPublicVariableEventHandler {
|
|
_gridref = ((_this select 1) select 0);
|
|
_gridloc = ((_this select 1) select 1);
|
|
|
|
if (_gridref in dayz_gridsActive) then {
|
|
dayz_gridsActive = dayz_gridsActive - [_gridref];
|
|
dayz_deseedloot set [count dayz_deseedloot,[_gridloc,_gridref]];
|
|
};
|
|
diag_log format ["%1, %2", _gridref, dayz_gridsActive];
|
|
};
|
|
|
|
|
|
"PVDZ_Server_Simulation" addPublicVariableEventHandler {
|
|
_agent = ((_this select 1) select 0);
|
|
_control = ((_this select 1) select 1);
|
|
|
|
_agent enableSimulation _control;
|
|
};
|
|
|
|
"PVDZ_obj_Delete" addPublicVariableEventHandler {
|
|
_obj = ((_this select 1) select 0);
|
|
_player = ((_this select 1) select 1);
|
|
_type = typeOf _obj;
|
|
_dis = _player distance _obj;
|
|
|
|
if (_type in Dayz_plants) then {
|
|
if (_dis < 3) then {
|
|
deleteVehicle _obj;
|
|
};
|
|
};
|
|
|
|
if (_type == "Blood_Trail_DZ") then {
|
|
deleteVehicle _obj;
|
|
};
|
|
|
|
//Make sure object is a cardboardbox and make sure the player distance is under 15 meters from object
|
|
if (_type iskindOf "CardboardBox") then {
|
|
if (_dis < 15) then {
|
|
deleteVehicle _obj;
|
|
};
|
|
};
|
|
};
|
|
|
|
"PVDZ_objgather_Knockdown" addPublicVariableEventHandler {
|
|
_tree = ((_this select 1) select 0);
|
|
_player = ((_this select 1) select 1);
|
|
_dis = _player distance _tree;
|
|
|
|
if (_dis < 30) then {
|
|
_tree setDamage 1;
|
|
deleteVehicle _tree;
|
|
};
|
|
};
|
|
|
|
"PVDZE_serverStoreVar" addPublicVariableEventHandler {
|
|
_obj = ((_this select 1) select 0);
|
|
_name = ((_this select 1) select 1);
|
|
_value = ((_this select 1) select 2);
|
|
|
|
|
|
_obj setVariable [_name, _value];
|
|
};
|
|
|
|
"PVDZ_receiveVar" addPublicVariableEventHandler {
|
|
_owner = ((_this select 1) select 0);
|
|
_object = ((_this select 1) select 1);
|
|
_name = ((_this select 1) select 2);
|
|
_value = ((_this select 1) select 3);
|
|
|
|
switch (_name) do {
|
|
case "looted": {
|
|
diag_log format ["%4 - %1, %2, %3", _object, _name, _value, "receive looted"];
|
|
};
|
|
case "zombieSpawn": {
|
|
//diag_log format ["%4 - %1, %2, %3", _object, _name, _value, "receive zombieSpawn"];
|
|
};
|
|
};
|
|
|
|
_ownerID = owner _owner;
|
|
_return = _object getVariable [_name,_value];
|
|
|
|
//diag_log format ["%1", _return];
|
|
|
|
PVCDZ_SetVar = [_object,_name,_return];
|
|
_ownerID publicVariableClient "PVCDZ_SetVar";
|
|
};
|
|
|
|
"PVDZ_Server_changeOwner" addPublicVariableEventHandler {
|
|
_agent = ((_this select 1) select 0);
|
|
_reciever = ((_this select 1) select 1);
|
|
_ownerID = owner _agent;
|
|
_newownerID = 1; //1 = server
|
|
|
|
if (typeName _reciever == "OBJECT") then {
|
|
_newownerID = owner _reciever;
|
|
};
|
|
if (isnil ("Owner")) then {
|
|
_agent setVariable ["Owner",_ownerID];
|
|
};
|
|
|
|
_agent setOwner _newownerID;
|
|
diag_log ("TRANSFER OWNERSHIP: " + (typeOf _agent) + " OF _unit: " + str(_agent) + " TO _client: " + str(_reciever) );
|
|
};
|
|
|
|
"PVDZ_Server_LogIt" addPublicVariableEventHandler {
|
|
_unitSending = (_this select 0);
|
|
_info = (_this select 1);
|
|
|
|
diag_log format["WARNING: %1",_info];
|
|
};
|
|
|
|
"PVDZ_Server_processCode" addPublicVariableEventHandler {(_this select 1) call pvs_processSetAccessCode};
|
|
|
|
"PVDZ_Server_processSetAccessCode" addPublicVariableEventHandler {
|
|
private ["_unitSending","_object","_object","_code"];
|
|
_unitSending = ((_this select 1) select 0);
|
|
_object = ((_this select 1) select 1);
|
|
_code = ((_this select 1) select 2);
|
|
|
|
//diag_log format["%1, %2-%3",_unitSending,_object,_code];
|
|
|
|
_ownerID = owner _unitSending;
|
|
_ownerArray = _object getVariable ["ownerArray",["0"]];
|
|
|
|
if ((_ownerArray select 0) == (getPlayerUID _unitSending)) then {
|
|
if (_unitSending distance _object < 5) then {
|
|
_object setVariable ["dayz_padlockCombination",_code,false];
|
|
|
|
PVCDZ_Client_processAccessCode = [_code];
|
|
_ownerID publicVariableClient "PVCDZ_Client_processAccessCode";
|
|
|
|
[_object,"accessCode",_code] call server_updateObject;
|
|
|
|
_object setVariable ["dayz_padlockHistory", [], true];
|
|
_object setVariable ["dayz_padlockLockStatus", true,true];
|
|
|
|
diag_log format["INFO: %1, %5 has changed the access code for %2 with %3 at time %4",(name _unitSending),(typeof _object),_code,time,(getPlayerUID _unitSending)];
|
|
} else {
|
|
diag_log format["WARNING: %1, %5 is asking to change access code of %2 from a distance of %3 at time %4",(name _unitSending),(typeof _object),(_unit distance _object),time,(getPlayerUID _unitSending)];
|
|
};
|
|
} else {
|
|
diag_log format["WARNING: %1, %2 is trying to set a code for a gate he does not own.",(name _unitSending),(getPlayerUID _unitSending)];
|
|
};
|
|
};
|
|
|
|
"PVDZ_Server_buildLock" addPublicVariableEventHandler {
|
|
_object = ((_this select 1) select 0);
|
|
|
|
[_object,"buildLock"] call server_updateObject;
|
|
};
|
|
|
|
// Dayz epoch custom
|
|
"PVDZE_veh_Publish" addPublicVariableEventHandler {(_this select 1) spawn server_publishVeh};
|
|
"PVDZE_veh_Publish2" addPublicVariableEventHandler {(_this select 1) spawn server_publishVeh2};
|
|
"PVDZE_veh_Upgrade" addPublicVariableEventHandler {(_this select 1) spawn server_publishVeh3};
|
|
"PVDZE_obj_Trade" addPublicVariableEventHandler {(_this select 1) spawn server_tradeObj};
|
|
"PVDZE_plr_TradeMenu" addPublicVariableEventHandler {(_this select 1) spawn server_traders};
|
|
"PVDZE_plr_DeathB" addPublicVariableEventHandler {(_this select 1) spawn server_deaths};
|
|
|
|
"PVDZE_log_lockUnlock" addPublicVariableEventHandler {(_this select 1) spawn server_logUnlockLockEvent};
|
|
};
|
|
|
|
//Client only
|
|
if (!isDedicated) then {
|
|
"PVDZE_plr_SetDate" addPublicVariableEventHandler {
|
|
_newdate = _this select 1;
|
|
_date = +(date); // [year, month, day, hour, minute].
|
|
//diag_log ['Date & time received:', _newdate, 'Local date on this client:', _date];
|
|
{
|
|
if (_x != _newdate select _forEachIndex) exitWith {
|
|
setDate _newdate;
|
|
//diag_log ['Date has been reset. Local date on this client:', date];
|
|
};
|
|
} forEach _date;
|
|
};
|
|
"PVDZE_plr_SetSaveTime" addPublicVariableEventHandler {DZE_SaveTime = (_this select 1)};
|
|
"PVDZE_obj_RoadFlare" addPublicVariableEventHandler {(_this select 1) spawn object_roadFlare};
|
|
"PVDZE_plr_Morph" addPublicVariableEventHandler {(_this select 1) call server_switchPlayer};
|
|
"PVDZE_obj_Fire" addPublicVariableEventHandler {nulexp=(_this select 1) spawn BIS_Effects_Burn};
|
|
"PVDZE_plr_FriendRQ" addPublicVariableEventHandler {if (player == ((_this select 1) select 0)) then {cutText[localize "str_epoch_player_2","PLAIN DOWN"];};};
|
|
"PVDZ_drg_RaDrag" addPublicVariableEventHandler {(_this select 1) execVM "\z\addons\dayz_code\medical\publicEH\animDrag.sqf"};
|
|
"PVDZ_dayzFlies" addPublicVariableEventHandler {(_this select 1) call spawn_flies};
|
|
//Medical
|
|
"PVCDZ_hlt_Morphine" addPublicVariableEventHandler {(_this select 1) call player_medMorphine};
|
|
"PVCDZ_hlt_Bandage" addPublicVariableEventHandler {(_this select 1) call player_medBandage};
|
|
"PVCDZ_hlt_Epi" addPublicVariableEventHandler {(_this select 1) call player_medEpi};
|
|
"PVCDZ_hlt_Transfuse" addPublicVariableEventHandler {(_this select 1) spawn player_medTransfuse; };
|
|
"PVCDZ_hlt_Transfuse_completed" addPublicVariableEventHandler {player setVariable["TransfusionCompleted",true]; };
|
|
"PVCDZ_hlt_PainK" addPublicVariableEventHandler {(_this select 1) call player_medPainkiller};
|
|
"PVCDZ_hlt_AntiB" addPublicVariableEventHandler {(_this select 1) call player_medAntiBiotics};
|
|
|
|
"norrnRaDrag" addPublicVariableEventHandler {(_this select 1) execVM "\z\addons\dayz_code\medical\publicEH\animDrag.sqf"};
|
|
"norrnRnoAnim" addPublicVariableEventHandler {(_this select 1) execVM "\z\addons\dayz_code\medical\publicEH\noAnim.sqf"};
|
|
"PVCDZ_plr_Humanity" addPublicVariableEventHandler {(_this select 1) spawn player_humanityChange};
|
|
"PVCDZ_plr_Legs" addPublicVariableEventHandler {
|
|
_entity = (_this select 1) select 0;
|
|
_entity setHit ["legs", 1];
|
|
|
|
if (isPlayer _entity) then {
|
|
_entity setVariable ["hit_legs", 2, true];
|
|
};
|
|
};
|
|
|
|
"PVCDZ_SetVar" addPublicVariableEventHandler {
|
|
_object = ((_this select 1) select 0);
|
|
_name = ((_this select 1) select 1);
|
|
_value = ((_this select 1) select 2);
|
|
|
|
_object setVariable [_name,_value];
|
|
};
|
|
|
|
"PVDZ_receiveUnconscious" addPublicVariableEventHandler {
|
|
_unit = ((_this select 1) select 0);
|
|
_duration = ((_this select 1) select 1);
|
|
|
|
diag_log format["%1,%2",_unit,_duration];
|
|
|
|
[_unit,_duration] call fnc_usec_damageUnconscious;
|
|
_unit setVariable ["NORRN_unconscious", true, true];
|
|
};
|
|
|
|
"PVCDZ_Client_processCode" addPublicVariableEventHandler {
|
|
// [_object,_result]
|
|
_object = ((_this select 1) select 0);
|
|
_result = ((_this select 1) select 1);
|
|
_codeGuess = ((_this select 1) select 2);
|
|
|
|
|
|
if (_result) then {
|
|
_object setVariable ["dayz_padlockLockStatus", false,true];
|
|
_object setVariable ["isOpen", "1", true];
|
|
_object setVariable ["dayz_padlockHistory", [], true];
|
|
titleText [format["%1 unlocked", (typeof _object)],"PLAIN DOWN"];
|
|
}
|
|
else
|
|
{
|
|
titleText ["Incorrect combination", "PLAIN DOWN"];
|
|
_object setVariable ["dayz_padlockHistory", _codeGuess, true];
|
|
};
|
|
};
|
|
|
|
"PVCDZ_Client_processAccessCode" addPublicVariableEventHandler {
|
|
_codeGuess = ((_this select 1) select 0);
|
|
|
|
titleText [format["You have set the combination to %1", _codeGuess],"PLAIN DOWN"];
|
|
};
|
|
|
|
// flies and swarm sound sync
|
|
call compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\client_flies.sqf";
|
|
};
|