class GVAR(stats) {
    class statBase {
        scope = 1;
        priority = 0;
        stats[] = {};
        displayName = "";
        showBar = 0;
        showText = 0;
        barStatement = "";
        textStatement = "";
        condition = QUOTE(true);
        tabs[] = {{}, {}};
    };
    class ACE_bananaPotassium: statBase {
        scope = 2;
        displayName = CSTRING(statPotassium);
        showBar = 1;
        barStatement = "1";
        condition = QUOTE((configName (_this select 1)) == 'ACE_Banana');
        tabs[] = {{}, {7}};
    };
    class ACE_mass: statBase {
        scope = 2;
        priority = 1.5;
        displayName = "$STR_a3_rscdisplayarsenal_stat_weight";
        showText = 1;
        textStatement = QUOTE([ARR_2(_this select 0,_this select 1)] call FUNC(statTextStatement_mass));
        tabs[] = {{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14}, {0,1,2,3,4,5,6,7}};
    };
    class ACE_rateOfFire: statBase {
        scope = 2;
        priority = 5;
        stats[] = {"reloadTime"};
        displayName = "$STR_a3_rscdisplayarsenal_stat_rof";
        showBar = 1;
        showText = 1;
        barStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_2([ARR_2(-1.4,0.31)],[ARR_2(1,0.01)])])] call FUNC(statBarStatement_rateOfFIre));
        textStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_2([ARR_2(-1.4,0.31)],false)])] call FUNC(statTextStatement_rateOfFire));
        tabs[] = {{0,1}, {}};
    };
    class ACE_accuracy: statBase {
        scope = 2;
        priority = 4;
        stats[] = {"dispersion"};
        displayName = "$STR_a3_rscdisplayarsenal_stat_dispersion";
        showBar = 1;
        showText = 1;
        barStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_3([ARR_2(-4,-1.7)],[ARR_2(1,0.01)],true)])] call FUNC(statBarStatement_accuracy));
        textStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_2([ARR_2(-4,-1.7)],false)])] call FUNC(statTextStatement_accuracy));
        tabs[] = {{0,1}, {}};
    };
    class ACE_maxZeroing: statBase {
        scope = 2;
        priority = 3.2;
        stats[] = {"maxZeroing"};
        displayName = "$STR_a3_rscdisplayarsenal_stat_range";
        showBar = 1;
        barStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_3([ARR_2(0,2500)],[ARR_2(0.01,1)],false)])] call FUNC(statBarStatement_default));
        tabs[] = {{0,1,2}, {}};
    };
    class ACE_impact: statBase {
        scope = 2;
        priority = 3.1;
        stats[] = {"hit", "initSpeed"};
        displayName = "$STR_a3_rscdisplayarsenal_stat_impact";
        showBar = 1;
        barStatement = QUOTE([ARR_3(_this select 0,_this select 1,[ARR_2([ARR_2(0,3.2)],[ARR_2(-1,1100)])])] call FUNC(statBarStatement_impact));
        tabs[] = {{0,1,2}, {}};
    };
    class ACE_scopeMagnification: statBase {
        scope = 2;
        priority = 2;
        displayName = CSTRING(statMagnification);
        showText = 1;
        textStatement = QUOTE(call FUNC(statTextStatement_scopeMag));
        tabs[] = {{}, {0}};
    };
    class ACE_binoMagnification: statBase {
        scope = 2;
        priority = 2;
        displayName = CSTRING(statMagnification);
        showText = 1;
        textStatement = QUOTE(call FUNC(statTextStatement_binoMag));
        tabs[] = {{9}, {}};
    };
    class ACE_scopeVisionMode: statBase {
        scope = 2;
        priority = 1.6;
        displayName = CSTRING(statVisionMode);
        showText = 1;
        textStatement = QUOTE(call FUNC(statTextStatement_scopeVisionMode));
        tabs[] = {{}, {0}};
    };
    class ACE_binoVisionMode: statBase {
        scope = 2;
        priority = 1.6;
        displayName = CSTRING(statVisionModeGeneric);
        showText = 1;
        textStatement = QUOTE(call FUNC(statTextStatement_binoVisionMode));
        tabs[] = {{8,9}, {}};
    };
    class ACE_ballisticProtection: statBase {
        scope = 2;
        priority = 5;
        stats[] = {"passthrough"};
        displayName = "$STR_a3_rscdisplayarsenal_stat_passthrough";
        showBar = 1;
        barStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_3([ARR_2(0,0.63)],[ARR_2(0.01,1)],false)])] call FUNC(statBarStatement_default));
        tabs[] = {{3,4,6}, {}};
    };
    class ACE_explosiveResistance: statBase {
        scope = 2;
        priority = 4;
        stats[] = {"armor"};
        displayName = "$STR_a3_rscdisplayarsenal_stat_armor";
        showBar = 1;
        barStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_3([ARR_2(0,0.80)],[ARR_2(0.01,1)],false)])] call FUNC(statBarStatement_default));
        tabs[] = {{3,4,6}, {}};
    };
    class ACE_load: statBase {
        scope = 2;
        priority = 3;
        stats[] = {"maximumLoad"};
        displayName = "$STR_a3_rscdisplayarsenal_stat_load";
        showBar = 1;
        showText = 1;
        barStatement = QUOTE([ARR_3((_this select 0) select 0,_this select 1,[ARR_3([ARR_2(0,500)],[ARR_2(0.01,1)],false)])] call FUNC(statBarStatement_default));
        textStatement = QUOTE(call FUNC(statTextStatement_load));
        tabs[] = {{3,4,5}, {}};
    };
    class ACE_smokeChemTTL: statBase {
        scope =  2;
        priority = 3;
        stats[] = {"ammo"};
        displayName = CSTRING(statTTL);
        showText = 1;
        textStatement = QUOTE(call FUNC(statTextStatement_smokeChemTTL));
        condition = QUOTE((configName (_this select 1)) isKindOf [ARR_2('smokeShell',configFile >> 'CfgMagazines')]);
        tabs[] = {{}, {5}};
    };
    class ACE_explosionTime: statBase {
        scope =  2;
        priority = 3;
        displayName = CSTRING(StatExplosionTime);
        showText = 1;
        textStatement = QUOTE(call FUNC(statTextStatement_explosionTime));
        tabs[] = {{}, {5}};
    };
    class ACE_magCount: statBase {
        scope = 2;
        priority = 1;
        displayName = CSTRING(statMagCount);
        showText = 1;
        textStatement = QUOTE(call FUNC(statTextStatement_magCount));
        tabs[] = {{}, {4}};
    };
    class ACE_illuminators: statBase {
        scope = 2;
        priority = 1;
        stats[] = {};
        displayName = CSTRING(statIlluminators);
        showText = 1;
        textStatement = QUOTE(call FUNC(statTextStatement_illuminators));
        tabs[] = {{}, {1}};
    };
};