/*%FSM<COMPILE "C:\Program Files (x86)\Bohemia Interactive\Tools\FSM Editor Personal Edition\scriptedFSM.cfg, copter_ai">*/
/*%FSM<HEAD>*/
/*
item0[] = {"copter",0,4346,77.124176,-2127.698242,167.124191,-2077.697266,0.000000,"copter"};
item1[] = {"update",2,250,76.399269,-1842.943848,166.399292,-1792.943848,0.000000,"update"};
item2[] = {"player_see",4,218,230.161133,-1924.389893,320.161102,-1874.389893,20.000000,"player see"};
item3[] = {"dead",4,218,-181.680664,-1843.368408,-91.680664,-1793.368408,100.000000,"dead"};
item4[] = {"end",1,250,-182.661209,-1721.283813,-92.661232,-1671.283813,0.000000,"end"};
item5[] = {"copter_move",2,250,465.176025,-1680.020264,555.176392,-1630.020264,0.000000,"copter move"};
item6[] = {"near_target_pos",4,218,75.965195,-1679.590576,165.965347,-1629.590576,90.000000,"near target pos"};
item7[] = {"wait_start",2,250,331.527832,-1758.595947,421.527863,-1708.595947,0.000000,"wait start"};
item8[] = {"fuel_check",4,218,-71.656715,-1773.208618,18.343246,-1723.208618,95.000000,"fuel check"};
item9[] = {"return_to_base",2,250,-71.634865,-1677.093506,18.365076,-1627.093506,0.000000,"return to base"};
item10[] = {"hunt",2,250,464.930634,-1924.511353,554.930969,-1874.511353,0.000000,"hunt"};
item11[] = {"target_in_range",4,218,-183.803268,-1931.368652,-93.803307,-1881.368652,40.000000,"target in range"};
item12[] = {"_",8,218,486.477631,-1832.104126,533.887329,-1803.399170,0.000000,""};
item13[] = {"out_of_sight",4,218,-72.170975,-1582.920410,17.829063,-1532.920410,1.000000,"out of sight"};
item14[] = {"player_lost",4,218,206.928253,-1843.067993,296.928223,-1793.067993,30.000000,"player lost"};
item15[] = {"player_hidden",4,218,167.131546,-1965.252563,257.131653,-1915.252075,10.000000,"player hidden"};
item16[] = {"search",2,250,333.506439,-1965.507813,423.506744,-1915.507813,0.000000,"search"};
item17[] = {"delete",2,250,-182.017578,-1584.171875,-92.017548,-1534.171875,0.000000,"delete"};
item18[] = {"_",8,218,-162.792191,-1649.780273,-110.753067,-1622.927124,0.000000,""};
item19[] = {"send_support",2,250,-183.828308,-2072.576172,-93.828339,-2022.575073,0.000000,"send support"};
item20[] = {"new_player",2,250,343.614227,-1843.289429,433.614288,-1793.289551,0.000000,"new player"};
item21[] = {"wait",4,218,172.726486,-1777.677124,262.726624,-1727.677124,1.000000,"wait"};
item22[] = {"_",8,218,97.991913,-1951.730469,145.401703,-1926.729126,0.000000,""};
item23[] = {"allow_arrival",2,250,200.448853,-1679.518433,290.448914,-1629.518433,0.000000,"allow arrival"};
item24[] = {"wait",4,218,328.046783,-1680.387085,418.046783,-1630.387085,1.000000,"wait"};
link0[] = {0,22};
link1[] = {1,2};
link2[] = {1,3};
link3[] = {1,6};
link4[] = {1,8};
link5[] = {1,11};
link6[] = {1,14};
link7[] = {1,15};
link8[] = {2,10};
link9[] = {3,4};
link10[] = {5,12};
link11[] = {6,23};
link12[] = {7,21};
link13[] = {8,9};
link14[] = {9,13};
link15[] = {10,12};
link16[] = {11,19};
link17[] = {12,7};
link18[] = {13,17};
link19[] = {14,20};
link20[] = {15,16};
link21[] = {16,12};
link22[] = {17,18};
link23[] = {18,4};
link24[] = {19,22};
link25[] = {20,12};
link26[] = {21,1};
link27[] = {22,1};
link28[] = {23,24};
link29[] = {24,5};
globals[] = {0.000000,0,0,0,0,640,480,1,55,0,1,-284.459595,633.086609,-1492.426025,-2128.185547,953,731,1};
window[] = {2,-1,-1,-1,-1,709,353,1397,89,3,971};
*//*%FSM</HEAD>*/
class FSM
{
  fsmName = "copter_ai";
  class States
  {
    /*%FSM<STATE "copter">*/
    class copter
    {
      name = "copter";
      init = /*%FSM<STATEINIT""">*/"_copter = _this select 0;" \n
       "_coptergrp = group _copter;" \n
       "_plyr= _this select 1;" \n
       "_copterRng = _this select 2;" \n
       "" \n
       "_troopsOnGround = false;" \n
       "_copterMinDist = getNumber (missionConfigFile >> ""CfgEpochUAV"" >> ""UAVMinDist"");" \n
       "_copterMaxDist = getNumber (missionConfigFile >> ""CfgEpochUAV"" >> ""UAVMaxDist"") min 400;" \n
       "_copterHeight = getNumber (missionConfigFile >> ""CfgEpochUAV"" >> ""UAVHeight"") min 280;" \n
       "_copterHeightActual = 600;" \n
       "_fuelLimit = 0.4;" \n
       "_lastSeen = time;" \n
       "_stillTime = time;" \n
       "" \n
       "//Check config vars" \n
       "if(_copterMinDist < 8)then{_copterMinDist = 48;};" \n
       "if(_copterMaxDist < 42)then{_copterMaxDist = 180;};" \n
       "if(_copterHeight < 42)then{_copterHeight = 100;};" \n
       "" \n
       "_trgt = _plyr;" \n
       "_wpIndex  = 0;" \n
       "_copterMoveTo=[0,0,0];" \n
       "_copterLastPos=[0,0,0];" \n
       "" \n
       "_copterPos = getPosATL _copter;" \n
       "" \n
       "" \n
       "_trgtPos = getPos _trgt;" \n
       "" \n
       "_copterMoveTo = [_trgtPos,_copterMinDist,_copterMaxDist,_copterHeight] call EPOCH_fnc_findSafePos;" \n
       "_copterMoveTo set [2,_copterHeight];" \n
       "_copter doMove _copterMoveTo;" \n
       "_copter flyinheight _copterHeight;" \n
       "" \n
       "//debug" \n
       "if (isNil ""axeDebug"") then {axeDebug = false;};" \n
       "if (axeDebug) then {" \n
       "axeTroopsSpawned = false;" \n
       "axeDebugCount = 0;" \n
       "axeCopter = _copter;" \n
       "//_debug = _this select 3;" \n
       "axeDebugProcedure=""start"";" \n
       "axeCopterMoveTo = _copterMoveTo;" \n
       "axeNewTargets = 0;" \n
       "hint format[""Copter Spawning on %1 at %2"",_trgt,_copterMoveTo];" \n
       "};" \n
       "" \n
       "" \n
       "" \n
       "" \n
       "" \n
       "" \n
       "" \n
       "" \n
       "" \n
       "" \n
       "" \n
       "" \n
       ""/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "_">*/
        class _
        {
          priority = 0.000000;
          to="update";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/""/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "update">*/
    class update
    {
      name = "update";
      init = /*%FSM<STATEINIT""">*/"_t = time;" \n
       "_2dDistPlyr = _plyr distance2D (getPos _copter);" \n
       "_canSeePlyr = (!lineIntersects [aimPos _plyr, aimPos _copter, _plyr, _copter]);" \n
       "_copterHeightActual = (getPosATL _copter) select 2;" \n
       "_copterPosActual = getPosATL _copter;" \n
       "_nrPlayers = _copter nearEntities[[""Epoch_Male_F"", ""Epoch_Female_F""], 250];" \n
       "" \n
       "" \n
       "//debug" \n
       "if (axeDebug) then {" \n
       "axePlayerCheck = _canSeePlyr;" \n
       "axeUAVFuel = fuel _copter;" \n
       "axeWaiting= false;" \n
       "axeDistanceCheck =  _copterMoveTo distance2D _copterPosActual" \n
       "};"/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "dead">*/
        class dead
        {
          priority = 100.000000;
          to="end";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"!alive _copter;"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
        /*%FSM<LINK "fuel_check">*/
        class fuel_check
        {
          priority = 95.000000;
          to="return_to_base";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"(fuel _copter) < _fuelLimit;"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
        /*%FSM<LINK "near_target_pos">*/
        class near_target_pos
        {
          priority = 90.000000;
          to="allow_arrival";
          precondition = /*%FSM<CONDPRECONDITION""">*/"_nrCheck =  _copterMoveTo distance2D _copterPosActual;" \n
           "_timeDif = _stillTime - time;"/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"(_nrCheck < 16) OR (_timeDif > 120);" \n
           ""/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
        /*%FSM<LINK "target_in_range">*/
        class target_in_range
        {
          priority = 40.000000;
          to="send_support";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"(_2dDistPlyr < 20) && _canSeePlyr && (!_troopsOnGround) && (_copterHeightActual < 50);" \n
           "" \n
           ""/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
        /*%FSM<LINK "player_lost">*/
        class player_lost
        {
          priority = 30.000000;
          to="new_player";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"(_2dDistPlyr > 800) && (count _nrPlayers > 0) && ((time -_lastSeen) > 480 );"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
        /*%FSM<LINK "player_see">*/
        class player_see
        {
          priority = 20.000000;
          to="hunt";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"_canSeePlyr;"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
        /*%FSM<LINK "player_hidden">*/
        class player_hidden
        {
          priority = 10.000000;
          to="search";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"!_canSeePlyr;"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "end">*/
    class end
    {
      name = "end";
      init = /*%FSM<STATEINIT""">*/"//hint format [""You got lucky %1 | Copter Finished !"",name _plyr ];" \n
       "" \n
       """I_UAV_01_F"" call EPOCH_unitSpawnDecrease;" \n
       "" \n
       "//debug" \n
       "if (axeDebug) then {" \n
       "axeCopter = objNull;" \n
       "};" \n
       "" \n
       ""/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "copter_move">*/
    class copter_move
    {
      name = "copter_move";
      init = /*%FSM<STATEINIT""">*/"_trgtPos = getPosATL _trgt;" \n
       "_copterMoveTo = [_trgtPos,_copterMinDist,_copterMaxDist,_copterHeight] call EPOCH_fnc_findSafePos;" \n
       "" \n
       "_copterLastPos = getPosATL _copter;" \n
       "_copter doMove _copterMoveTo;" \n
       "_copterHeight = (random 10) + _copterHeight;" \n
       "_copter flyinheight _copterHeight;" \n
       "_stillTime = time;" \n
       "" \n
       "//debug" \n
       "if (axeDebug) then {" \n
       "hint format[""Copter moving to:%1"",_copterMoveTo];" \n
       "axeCopterMoveTo = _copterMoveTo;" \n
       "axeDebugProcedure=""copter move"";" \n
       "};" \n
       "" \n
       "" \n
       "" \n
       "" \n
       ""/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "_">*/
        class _
        {
          priority = 0.000000;
          to="wait_start";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/""/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "wait_start">*/
    class wait_start
    {
      name = "wait_start";
      init = /*%FSM<STATEINIT""">*/"_t = time;" \n
       "if (axeDebug) then {" \n
       "axeWaiting= true;" \n
       "};"/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "wait">*/
        class wait
        {
          priority = 1.000000;
          to="update";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"time > _t + (1 + random 3);"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "return_to_base">*/
    class return_to_base
    {
      name = "return_to_base";
      init = /*%FSM<STATEINIT""">*/"_copterMoveTo = [_copterPosActual,600,1000,600] call EPOCH_fnc_findSafePos;" \n
       "" \n
       "_copter doMove _copterMoveTo;" \n
       "//_copter flyinheight 600;" \n
       "" \n
       "//debug" \n
       "if (axeDebug) then {" \n
       "hint ""You got away this time... Copter, Return to Base !"";" \n
       "axeDebugProcedure=""return to base"";" \n
       "};"/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "out_of_sight">*/
        class out_of_sight
        {
          priority = 1.000000;
          to="delete";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"(((getPos _copter) select 2) > 400) or (((getPos _copter) select 2) < 1);"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "hunt">*/
    class hunt
    {
      name = "hunt";
      init = /*%FSM<STATEINIT""">*/"_copterHeight = 32;" \n
       "_copterMinDist = 20;" \n
       "_copterMaxDist = 32;" \n
       "_trgtPos = getPos _plyr;" \n
       "_lastSeen = time;" \n
       "" \n
       "//debug" \n
       "if (axeDebug) then {" \n
       "axeDebugProcedure=""hunt mode"";" \n
       "};"/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "_">*/
        class _
        {
          priority = 0.000000;
          to="wait_start";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/""/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "search">*/
    class search
    {
      name = "search";
      init = /*%FSM<STATEINIT""">*/"_copterHeight = 42;" \n
       "_copterMinDist = 32;" \n
       "_copterMaxDist = 60;" \n
       "_trgtPos = getPos _copter;" \n
       "" \n
       "//debug" \n
       "if (axeDebug) then {" \n
       "axeDebugProcedure=""search mode"";" \n
       "};"/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "_">*/
        class _
        {
          priority = 0.000000;
          to="wait_start";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/""/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "delete">*/
    class delete
    {
      name = "delete";
      init = /*%FSM<STATEINIT""">*/"deleteVehicle _copter;" \n
       "" \n
       "//debug" \n
       "if (axeDebug) then {" \n
       "axeDebugProcedure=""delete"";" \n
       "};"/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "_">*/
        class _
        {
          priority = 0.000000;
          to="end";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/""/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "send_support">*/
    class send_support
    {
      name = "send_support";
      init = /*%FSM<STATEINIT""">*/"//_supportPos = [(_currentTargetPos select 0)+((random 10)-5),(_currentTargetPos select 1)+((random 10)-5),0];" \n
       "" \n
       "[[(getPos _trgt),80,150,1,true] call EPOCH_fnc_findSafePos,_copter] call EPOCH_supportCopter;" \n
       "" \n
       "_copter say3D ""drone_alert0"";" \n
       "EPOCH_say3D_PVS = [player, _copter, 10,Epoch_personalToken];" \n
       "publicVariableServer ""EPOCH_say3D_PVS"";" \n
       "" \n
       "_troopsOnGround = true;" \n
       "(driver _copter) action [""lightOn"", _copter];" \n
       "" \n
       "//debug" \n
       "if (axeDebug) then {" \n
       "axeTroopsOnGround = true;" \n
       "axeDebugProcedure=""send support"";" \n
       "};"/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "_">*/
        class _
        {
          priority = 0.000000;
          to="update";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/""/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "new_player">*/
    class new_player
    {
      name = "new_player";
      init = /*%FSM<STATEINIT""">*/"_trgt = _nrPlayers select (floor(random (count _nrPlayers)));" \n
       "_plyr = _trgt;" \n
       "" \n
       "//debug" \n
       "if (axeDebug) then {" \n
       "axeDebugProcedure=""select new target"";" \n
       "axeNewTargets = axeNewTargets + 1;" \n
       "axeDebugProcedure=""new player"";" \n
       "};" \n
       "" \n
       "//" \n
       "// A GOOD PLACE TO DEAL WITH OWNERSHIP TRANSFER.. (TODO: EPOCH_server_changeOwner;)" \n
       "//"/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "_">*/
        class _
        {
          priority = 0.000000;
          to="wait_start";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/""/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
    /*%FSM<STATE "allow_arrival">*/
    class allow_arrival
    {
      name = "allow_arrival";
      init = /*%FSM<STATEINIT""">*/"_t = time;" \n
       "if (axeDebug) then {" \n
       "axeWaiting= true;" \n
       "};"/*%FSM</STATEINIT""">*/;
      precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
      class Links
      {
        /*%FSM<LINK "wait">*/
        class wait
        {
          priority = 1.000000;
          to="copter_move";
          precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
          condition=/*%FSM<CONDITION""">*/"time > _t + (3 + random 3);"/*%FSM</CONDITION""">*/;
          action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
        };
        /*%FSM</LINK>*/
      };
    };
    /*%FSM</STATE>*/
  };
  initState="copter";
  finalStates[] =
  {
    "end"
  };
};
/*%FSM</COMPILE>*/