/// <summary>
    /// refreshes the settings after a config file was read
    /// </summary>
    /// <param name="adOrder">settings file</param>
    private void UpdateSettings(AdOrder adOrder)
    {
        bannerMediation       = adOrder.bannerMediation;
        interstitialMediation = adOrder.interstitialMediation;
        rewardedMediation     = adOrder.rewardedMediation;

        for (int i = 0; i < adOrder.advertisers.Count; i++)
        {
            for (int j = 0; j < allAdvertisers.Count; j++)
            {
                if (allAdvertisers[j].mediationSettings.GetAdvertiser() == adOrder.advertisers[i].GetAdvertiser())
                {
                    allAdvertisers[j].mediationSettings = adOrder.advertisers[i];
                }
            }
        }

        if (debug)
        {
            Debug.Log("File Config Loaded");
            ScreenWriter.Write("File Config Loaded");
        }

        ApplySettings();
    }
    /// <summary>
    /// Initializes all the advertisers from the plugin
    /// Should be called only once at the beginning of your app
    /// </summary>
    public void Initialize()
    {
        if (initialized == false)
        {
            adSettings = Resources.Load <AdSettings>("AdSettingsData");
            if (adSettings == null)
            {
                Debug.LogError("Gley Ads Plugin is not properly configured. Go to Window->Gley->Ads to set up the plugin. See the documentation");
                return;
            }
            bannerMediation       = adSettings.bannerMediation;
            interstitialMediation = adSettings.interstitialMediation;
            rewardedMediation     = adSettings.rewardedMediation;
            debug       = adSettings.debugMode;
            initialized = true;

            AdvertiserSettings currentAdvertiser = adSettings.advertiserSettings.FirstOrDefault(cond => cond.advertiser == SupportedAdvertisers.Admob);
            if (currentAdvertiser != null)
            {
                if (currentAdvertiser.useSDK)
                {
                    allAdvertisers.Add(new Advertiser(go.AddComponent <CustomAdmob>(), adSettings.GetAdvertiserSettings(SupportedAdvertisers.Admob), adSettings.GetPlaftormSettings(SupportedAdvertisers.Admob)));
                }
            }

            currentAdvertiser = adSettings.advertiserSettings.FirstOrDefault(cond => cond.advertiser == SupportedAdvertisers.Vungle);
            if (currentAdvertiser != null)
            {
                if (currentAdvertiser.useSDK)
                {
                    allAdvertisers.Add(new Advertiser(go.AddComponent <CustomVungle>(), adSettings.GetAdvertiserSettings(SupportedAdvertisers.Vungle), adSettings.GetPlaftormSettings(SupportedAdvertisers.Vungle)));
                }
            }

            currentAdvertiser = adSettings.advertiserSettings.FirstOrDefault(cond => cond.advertiser == SupportedAdvertisers.AdColony);
            if (currentAdvertiser != null)
            {
                if (currentAdvertiser.useSDK)
                {
                    allAdvertisers.Add(new Advertiser(go.AddComponent <CustomAdColony>(), adSettings.GetAdvertiserSettings(SupportedAdvertisers.AdColony), adSettings.GetPlaftormSettings(SupportedAdvertisers.AdColony)));
                }
            }

            currentAdvertiser = adSettings.advertiserSettings.FirstOrDefault(cond => cond.advertiser == SupportedAdvertisers.Chartboost);
            if (currentAdvertiser != null)
            {
                if (currentAdvertiser.useSDK)
                {
                    allAdvertisers.Add(new Advertiser(go.AddComponent <CustomChartboost>(), adSettings.GetAdvertiserSettings(SupportedAdvertisers.Chartboost), adSettings.GetPlaftormSettings(SupportedAdvertisers.Chartboost)));
                }
            }

            currentAdvertiser = adSettings.advertiserSettings.FirstOrDefault(cond => cond.advertiser == SupportedAdvertisers.Unity);
            if (currentAdvertiser != null)
            {
                if (currentAdvertiser.useSDK)
                {
                    allAdvertisers.Add(new Advertiser(go.AddComponent <CustomUnityAds>(), adSettings.GetAdvertiserSettings(SupportedAdvertisers.Unity), adSettings.GetPlaftormSettings(SupportedAdvertisers.Unity)));
                }
            }

            currentAdvertiser = adSettings.advertiserSettings.FirstOrDefault(cond => cond.advertiser == SupportedAdvertisers.Heyzap);
            if (currentAdvertiser != null)
            {
                if (currentAdvertiser.useSDK)
                {
                    allAdvertisers.Add(new Advertiser(go.AddComponent <CustomHeyzap>(), adSettings.GetAdvertiserSettings(SupportedAdvertisers.Heyzap), adSettings.GetPlaftormSettings(SupportedAdvertisers.Heyzap)));
                }
            }

            currentAdvertiser = adSettings.advertiserSettings.FirstOrDefault(cond => cond.advertiser == SupportedAdvertisers.AppLovin);
            if (currentAdvertiser != null)
            {
                if (currentAdvertiser.useSDK)
                {
                    allAdvertisers.Add(new Advertiser(go.AddComponent <CustomAppLovin>(), adSettings.GetAdvertiserSettings(SupportedAdvertisers.AppLovin), adSettings.GetPlaftormSettings(SupportedAdvertisers.AppLovin)));
                }
            }

            currentAdvertiser = adSettings.advertiserSettings.FirstOrDefault(cond => cond.advertiser == SupportedAdvertisers.Facebook);
            if (currentAdvertiser != null)
            {
                if (currentAdvertiser.useSDK)
                {
                    allAdvertisers.Add(new Advertiser(go.AddComponent <CustomFacebook>(), adSettings.GetAdvertiserSettings(SupportedAdvertisers.Facebook), adSettings.GetPlaftormSettings(SupportedAdvertisers.Facebook)));
                }
            }

            currentAdvertiser = adSettings.advertiserSettings.FirstOrDefault(cond => cond.advertiser == SupportedAdvertisers.MoPub);
            if (currentAdvertiser != null)
            {
                if (currentAdvertiser.useSDK)
                {
                    allAdvertisers.Add(new Advertiser(go.AddComponent <CustomMoPub>(), adSettings.GetAdvertiserSettings(SupportedAdvertisers.MoPub), adSettings.GetPlaftormSettings(SupportedAdvertisers.MoPub)));
                }
            }

            currentAdvertiser = adSettings.advertiserSettings.FirstOrDefault(cond => cond.advertiser == SupportedAdvertisers.IronSource);
            if (currentAdvertiser != null)
            {
                if (currentAdvertiser.useSDK)
                {
                    allAdvertisers.Add(new Advertiser(go.AddComponent <CustomIronSource>(), adSettings.GetAdvertiserSettings(SupportedAdvertisers.IronSource), adSettings.GetPlaftormSettings(SupportedAdvertisers.IronSource)));
                }
            }

            if (debug)
            {
                ScreenWriter.Write("User GDPR consent is set to: " + GetConsent(userConsent));
                ScreenWriter.Write("User CCPA consent is set to: " + GetConsent(ccpaConsent));
            }

            for (int i = 0; i < allAdvertisers.Count; i++)
            {
                allAdvertisers[i].advertiserScript.InitializeAds(GetConsent(userConsent), GetConsent(ccpaConsent), allAdvertisers[i].platformSettings);
            }

            ApplySettings();

            LoadFile();
        }
    }