public override TConfigClass GetConfiguration()
        {
            if (CachedConfig != null)
            {
                return(CachedConfig as TConfigClass);
            }

            var Config = CachedConfig = base.GetConfiguration();

            // Set max duration to 1 hour
            Config.MaxDuration = 60 * 60;

            // Get output filenames
            LocalOutputDirectory = Path.GetFullPath(Config.ProfileOutputDirectory);

            // Create the local profiling data directory if needed
            if (!Directory.Exists(LocalOutputDirectory))
            {
                Directory.CreateDirectory(LocalOutputDirectory);
            }

            ScreenshotDirectory = Config.ScreenshotDirectory;

            if (!String.IsNullOrEmpty(ScreenshotDirectory))
            {
                if (Directory.Exists(ScreenshotDirectory))
                {
                    Directory.Delete(ScreenshotDirectory, true);
                }

                Directory.CreateDirectory(ScreenshotDirectory);
            }

            PGOPlatform = PGOPlatformManager.GetPGOPlatform(Context.GetRoleContext(UnrealTargetRole.Client).Platform);
            PGOPlatform.ApplyConfiguration(Config);

            return(Config as TConfigClass);
        }