diff options
452 files changed, 28841 insertions, 20024 deletions
diff --git a/Emby.Drawing/Emby.Drawing.csproj b/Emby.Drawing/Emby.Drawing.csproj index 8aba4263c..ab53f7550 100644 --- a/Emby.Drawing/Emby.Drawing.csproj +++ b/Emby.Drawing/Emby.Drawing.csproj @@ -69,7 +69,6 @@ <ItemGroup> <EmbeddedResource Include="ImageMagick\fonts\MontserratLight.otf" /> <EmbeddedResource Include="ImageMagick\fonts\robotoregular.ttf" /> - <EmbeddedResource Include="ImageMagick\fonts\webdings.ttf" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj"> diff --git a/Emby.Drawing/ImageMagick/ImageMagickEncoder.cs b/Emby.Drawing/ImageMagick/ImageMagickEncoder.cs index ff4a8f55b..6ff40d1cf 100644 --- a/Emby.Drawing/ImageMagick/ImageMagickEncoder.cs +++ b/Emby.Drawing/ImageMagick/ImageMagickEncoder.cs @@ -1,11 +1,13 @@ -using System.Linq; +using System.Threading.Tasks; using ImageMagickSharp; using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.Net; using MediaBrowser.Controller.Drawing; using MediaBrowser.Model.Drawing; using MediaBrowser.Model.Logging; using System; using System.IO; +using System.Linq; namespace Emby.Drawing.ImageMagick { @@ -13,11 +15,13 @@ namespace Emby.Drawing.ImageMagick { private readonly ILogger _logger; private readonly IApplicationPaths _appPaths; + private readonly IHttpClient _httpClient; - public ImageMagickEncoder(ILogger logger, IApplicationPaths appPaths) + public ImageMagickEncoder(ILogger logger, IApplicationPaths appPaths, IHttpClient httpClient) { _logger = logger; _appPaths = appPaths; + _httpClient = httpClient; LogImageMagickVersion(); } @@ -115,9 +119,17 @@ namespace Emby.Drawing.ImageMagick } } + private bool HasTransparency(string path) + { + var ext = Path.GetExtension(path); + + return string.Equals(ext, ".png", StringComparison.OrdinalIgnoreCase) || + string.Equals(ext, ".webp", StringComparison.OrdinalIgnoreCase); + } + public void EncodeImage(string inputPath, string outputPath, int width, int height, int quality, ImageProcessingOptions options) { - if (string.IsNullOrWhiteSpace(options.BackgroundColor)) + if (string.IsNullOrWhiteSpace(options.BackgroundColor) || !HasTransparency(inputPath)) { using (var originalImage = new MagickWand(inputPath)) { @@ -169,7 +181,8 @@ namespace Emby.Drawing.ImageMagick { var currentImageSize = new ImageSize(imageWidth, imageHeight); - new PlayedIndicatorDrawer(_appPaths).DrawPlayedIndicator(wand, currentImageSize); + var task = new PlayedIndicatorDrawer(_appPaths, _httpClient).DrawPlayedIndicator(wand, currentImageSize); + Task.WaitAll(task); } else if (options.UnplayedCount.HasValue) { diff --git a/Emby.Drawing/ImageMagick/PlayedIndicatorDrawer.cs b/Emby.Drawing/ImageMagick/PlayedIndicatorDrawer.cs index 5eeb15771..1c751de1f 100644 --- a/Emby.Drawing/ImageMagick/PlayedIndicatorDrawer.cs +++ b/Emby.Drawing/ImageMagick/PlayedIndicatorDrawer.cs @@ -1,8 +1,10 @@ using ImageMagickSharp; using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.Net; using MediaBrowser.Model.Drawing; using System; using System.IO; +using System.Threading.Tasks; namespace Emby.Drawing.ImageMagick { @@ -12,13 +14,15 @@ namespace Emby.Drawing.ImageMagick private const int OffsetFromTopRightCorner = 38; private readonly IApplicationPaths _appPaths; + private readonly IHttpClient _iHttpClient; - public PlayedIndicatorDrawer(IApplicationPaths appPaths) + public PlayedIndicatorDrawer(IApplicationPaths appPaths, IHttpClient iHttpClient) { _appPaths = appPaths; + _iHttpClient = iHttpClient; } - public void DrawPlayedIndicator(MagickWand wand, ImageSize imageSize) + public async Task DrawPlayedIndicator(MagickWand wand, ImageSize imageSize) { var x = imageSize.Width - OffsetFromTopRightCorner; @@ -34,7 +38,7 @@ namespace Emby.Drawing.ImageMagick pixel.Opacity = 0; pixel.Color = "white"; draw.FillColor = pixel; - draw.Font = ExtractFont("webdings.ttf", _appPaths); + draw.Font = await DownloadFont("webdings.ttf", "https://github.com/MediaBrowser/Emby.Resources/raw/master/fonts/webdings.ttf", _appPaths, _iHttpClient).ConfigureAwait(false); draw.FontSize = FontSize; draw.FontStyle = FontStyleType.NormalStyle; draw.TextAlignment = TextAlignType.CenterAlign; @@ -77,7 +81,37 @@ namespace Emby.Drawing.ImageMagick } catch (IOException) { - + + } + + return tempPath; + } + + internal static async Task<string> DownloadFont(string name, string url, IApplicationPaths paths, IHttpClient httpClient) + { + var filePath = Path.Combine(paths.ProgramDataPath, "fonts", name); + + if (File.Exists(filePath)) + { + return filePath; + } + + var tempPath = await httpClient.GetTempFile(new HttpRequestOptions + { + Url = url, + Progress = new Progress<double>() + + }).ConfigureAwait(false); + + Directory.CreateDirectory(Path.GetDirectoryName(filePath)); + + try + { + File.Copy(tempPath, filePath, false); + } + catch (IOException) + { + } return tempPath; diff --git a/MediaBrowser.Api/ApiEntryPoint.cs b/MediaBrowser.Api/ApiEntryPoint.cs index 2cd900754..68087309b 100644 --- a/MediaBrowser.Api/ApiEntryPoint.cs +++ b/MediaBrowser.Api/ApiEntryPoint.cs @@ -228,7 +228,7 @@ namespace MediaBrowser.Api { lock (_activeTranscodingJobs) { - var job = _activeTranscodingJobs.First(j => j.Type == type && j.Path.Equals(path, StringComparison.OrdinalIgnoreCase)); + var job = _activeTranscodingJobs.First(j => j.Type == type && string.Equals(j.Path, path, StringComparison.OrdinalIgnoreCase)); _activeTranscodingJobs.Remove(job); } @@ -254,15 +254,7 @@ namespace MediaBrowser.Api { lock (_activeTranscodingJobs) { - return _activeTranscodingJobs.FirstOrDefault(j => j.Type == type && j.Path.Equals(path, StringComparison.OrdinalIgnoreCase)); - } - } - - public TranscodingJob GetTranscodingJob(string id) - { - lock (_activeTranscodingJobs) - { - return _activeTranscodingJobs.FirstOrDefault(j => j.Id.Equals(id, StringComparison.OrdinalIgnoreCase)); + return _activeTranscodingJobs.FirstOrDefault(j => j.Type == type && string.Equals(j.Path, path, StringComparison.OrdinalIgnoreCase)); } } @@ -275,7 +267,7 @@ namespace MediaBrowser.Api { lock (_activeTranscodingJobs) { - var job = _activeTranscodingJobs.FirstOrDefault(j => j.Type == type && j.Path.Equals(path, StringComparison.OrdinalIgnoreCase)); + var job = _activeTranscodingJobs.FirstOrDefault(j => j.Type == type && string.Equals(j.Path, path, StringComparison.OrdinalIgnoreCase)); if (job == null) { @@ -339,14 +331,17 @@ namespace MediaBrowser.Api return; } - var timerDuration = job.Type == TranscodingJobType.Progressive ? - 1000 : - 1800000; + var timerDuration = 1000; - // We can really reduce the timeout for apps that are using the newer api - if (!string.IsNullOrWhiteSpace(job.PlaySessionId) && job.Type != TranscodingJobType.Progressive) + if (job.Type != TranscodingJobType.Progressive) { - timerDuration = 50000; + timerDuration = 1800000; + + // We can really reduce the timeout for apps that are using the newer api + if (!string.IsNullOrWhiteSpace(job.PlaySessionId)) + { + timerDuration = 120000; + } } job.PingTimeout = timerDuration; @@ -459,7 +454,7 @@ namespace MediaBrowser.Api job.DisposeKillTimer(); Logger.Debug("KillTranscodingJob - JobId {0} PlaySessionId {1}. Killing transcoding", job.Id, job.PlaySessionId); - + lock (_activeTranscodingJobs) { _activeTranscodingJobs.Remove(job); @@ -628,6 +623,9 @@ namespace MediaBrowser.Api /// </summary> /// <value>The live stream identifier.</value> public string LiveStreamId { get; set; } + + public bool IsLiveOutput { get; set; } + /// <summary> /// Gets or sets the path. /// </summary> diff --git a/MediaBrowser.Api/BaseApiService.cs b/MediaBrowser.Api/BaseApiService.cs index 66b2a314e..7a14ace77 100644 --- a/MediaBrowser.Api/BaseApiService.cs +++ b/MediaBrowser.Api/BaseApiService.cs @@ -1,5 +1,4 @@ -using System.Threading.Tasks; -using MediaBrowser.Controller.Dto; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Library; @@ -12,6 +11,7 @@ using ServiceStack.Web; using System; using System.Collections.Generic; using System.Linq; +using System.Threading.Tasks; namespace MediaBrowser.Api { @@ -198,15 +198,15 @@ namespace MediaBrowser.Api return libraryManager.GetPerson(DeSlugPersonName(name, libraryManager)); } - protected IList<BaseItem> GetAllLibraryItems(Guid? userId, IUserManager userManager, ILibraryManager libraryManager, string parentId, Func<BaseItem,bool> filter) + protected IList<BaseItem> GetAllLibraryItems(string userId, IUserManager userManager, ILibraryManager libraryManager, string parentId, Func<BaseItem,bool> filter) { if (!string.IsNullOrEmpty(parentId)) { var folder = (Folder)libraryManager.GetItemById(new Guid(parentId)); - if (userId.HasValue) + if (!string.IsNullOrWhiteSpace(userId)) { - var user = userManager.GetUserById(userId.Value); + var user = userManager.GetUserById(userId); if (user == null) { @@ -221,9 +221,9 @@ namespace MediaBrowser.Api return folder .GetRecursiveChildren(filter); } - if (userId.HasValue) + if (!string.IsNullOrWhiteSpace(userId)) { - var user = userManager.GetUserById(userId.Value); + var user = userManager.GetUserById(userId); if (user == null) { @@ -231,7 +231,7 @@ namespace MediaBrowser.Api } return userManager - .GetUserById(userId.Value) + .GetUserById(userId) .RootFolder .GetRecursiveChildren(user, filter) .ToList(); @@ -344,11 +344,7 @@ namespace MediaBrowser.Api return name; } - return libraryManager.RootFolder - .GetRecursiveChildren() - .SelectMany(i => i.People) - .Select(i => i.Name) - .DistinctNames() + return libraryManager.GetPeopleNames(new InternalPeopleQuery()) .FirstOrDefault(i => { i = _dashReplaceChars.Aggregate(i, (current, c) => current.Replace(c, SlugChar)); @@ -364,7 +360,8 @@ namespace MediaBrowser.Api var first = pathInfo.GetArgumentValue<string>(0); // backwards compatibility - if (string.Equals(first, "mediabrowser", StringComparison.OrdinalIgnoreCase)) + if (string.Equals(first, "mediabrowser", StringComparison.OrdinalIgnoreCase) || + string.Equals(first, "emby", StringComparison.OrdinalIgnoreCase)) { index++; } diff --git a/MediaBrowser.Api/BrandingService.cs b/MediaBrowser.Api/BrandingService.cs index ac491a997..c900e4d06 100644 --- a/MediaBrowser.Api/BrandingService.cs +++ b/MediaBrowser.Api/BrandingService.cs @@ -34,7 +34,8 @@ namespace MediaBrowser.Api { var result = _config.GetConfiguration<BrandingOptions>("branding"); - return ResultFactory.GetResult(result.CustomCss, "text/css"); + // When null this throws a 405 error under Mono OSX, so default to empty string + return ResultFactory.GetResult(result.CustomCss ?? string.Empty, "text/css"); } } } diff --git a/MediaBrowser.Api/DisplayPreferencesService.cs b/MediaBrowser.Api/DisplayPreferencesService.cs index 72b12020d..df04de79e 100644 --- a/MediaBrowser.Api/DisplayPreferencesService.cs +++ b/MediaBrowser.Api/DisplayPreferencesService.cs @@ -23,7 +23,7 @@ namespace MediaBrowser.Api public string DisplayPreferencesId { get; set; } [ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")] - public Guid UserId { get; set; } + public string UserId { get; set; } } [Route("/DisplayPreferences/{Id}", "GET", Summary = "Gets a user's display preferences for an item")] @@ -37,7 +37,7 @@ namespace MediaBrowser.Api public string Id { get; set; } [ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid UserId { get; set; } + public string UserId { get; set; } [ApiMember(Name = "Client", Description = "Client", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")] public string Client { get; set; } diff --git a/MediaBrowser.Api/Dlna/DlnaServerService.cs b/MediaBrowser.Api/Dlna/DlnaServerService.cs index bdf7d6b07..4f5e2ab25 100644 --- a/MediaBrowser.Api/Dlna/DlnaServerService.cs +++ b/MediaBrowser.Api/Dlna/DlnaServerService.cs @@ -109,7 +109,7 @@ namespace MediaBrowser.Api.Dlna private readonly IMediaReceiverRegistrar _mediaReceiverRegistrar; // TODO: Add utf-8 - private const string XMLContentType = "text/xml"; + private const string XMLContentType = "text/xml; charset=UTF-8"; public DlnaServerService(IDlnaManager dlnaManager, IContentDirectory contentDirectory, IConnectionManager connectionManager, IMediaReceiverRegistrar mediaReceiverRegistrar) { diff --git a/MediaBrowser.Api/GamesService.cs b/MediaBrowser.Api/GamesService.cs index c18c32920..93cc01079 100644 --- a/MediaBrowser.Api/GamesService.cs +++ b/MediaBrowser.Api/GamesService.cs @@ -32,7 +32,7 @@ namespace MediaBrowser.Api /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "Optional. Filter by user id", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid? UserId { get; set; } + public string UserId { get; set; } } /// <summary> @@ -46,7 +46,7 @@ namespace MediaBrowser.Api /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "Optional. Filter by user id", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid? UserId { get; set; } + public string UserId { get; set; } } /// <summary> @@ -106,7 +106,7 @@ namespace MediaBrowser.Api .Cast<GameSystem>() .ToList(); - var user = request.UserId == null ? null : _userManager.GetUserById(request.UserId.Value); + var user = request.UserId == null ? null : _userManager.GetUserById(request.UserId); var result = gameSystems .Select(i => GetSummary(i, user)) diff --git a/MediaBrowser.Api/Images/ImageService.cs b/MediaBrowser.Api/Images/ImageService.cs index 639c1f54b..b8ea62137 100644 --- a/MediaBrowser.Api/Images/ImageService.cs +++ b/MediaBrowser.Api/Images/ImageService.cs @@ -625,6 +625,8 @@ namespace MediaBrowser.Api.Images var file = await _imageProcessor.ProcessImage(options).ConfigureAwait(false); + headers["Vary"] = "Accept"; + return ResultFactory.GetStaticFileResult(Request, new StaticFileResultOptions { CacheDuration = cacheDuration, @@ -659,8 +661,10 @@ namespace MediaBrowser.Api.Images return ImageFormat.Png; } - if (string.Equals(Path.GetExtension(image.Path), ".jpg", StringComparison.OrdinalIgnoreCase) || - string.Equals(Path.GetExtension(image.Path), ".jpeg", StringComparison.OrdinalIgnoreCase)) + var extension = Path.GetExtension(image.Path); + + if (string.Equals(extension, ".jpg", StringComparison.OrdinalIgnoreCase) || + string.Equals(extension, ".jpeg", StringComparison.OrdinalIgnoreCase)) { return ImageFormat.Jpg; } @@ -671,10 +675,18 @@ namespace MediaBrowser.Api.Images private ImageFormat[] GetClientSupportedFormats() { - if ((Request.AcceptTypes ?? new string[] { }).Contains("image/webp", StringComparer.OrdinalIgnoreCase)) + var supportsWebP = (Request.AcceptTypes ?? new string[] {}).Contains("image/webp", StringComparer.OrdinalIgnoreCase); + + var userAgent = Request.UserAgent ?? string.Empty; + + if (userAgent.IndexOf("crosswalk", StringComparison.OrdinalIgnoreCase) != -1 && + userAgent.IndexOf("android", StringComparison.OrdinalIgnoreCase) != -1) { - var userAgent = Request.UserAgent ?? string.Empty; + supportsWebP = true; + } + if (supportsWebP) + { // Not displaying properly on iOS if (userAgent.IndexOf("cfnetwork", StringComparison.OrdinalIgnoreCase) == -1) { diff --git a/MediaBrowser.Api/ItemUpdateService.cs b/MediaBrowser.Api/ItemUpdateService.cs index 013838091..b8ae9392a 100644 --- a/MediaBrowser.Api/ItemUpdateService.cs +++ b/MediaBrowser.Api/ItemUpdateService.cs @@ -218,6 +218,11 @@ namespace MediaBrowser.Api await item.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false); + if (request.People != null) + { + await _libraryManager.UpdatePeople(item, request.People.Select(x => new PersonInfo { Name = x.Name, Role = x.Role, Type = x.Type }).ToList()); + } + if (isLockedChanged && item.IsFolder) { var folder = (Folder)item; @@ -303,11 +308,6 @@ namespace MediaBrowser.Api item.Studios = request.Studios.Select(x => x.Name).ToList(); } - if (request.People != null) - { - item.People = request.People.Select(x => new PersonInfo { Name = x.Name, Role = x.Role, Type = x.Type }).ToList(); - } - if (request.DateCreated.HasValue) { item.DateCreated = NormalizeDateTime(request.DateCreated.Value); @@ -389,22 +389,28 @@ namespace MediaBrowser.Api game.PlayersSupported = request.Players; } - var hasAlbumArtists = item as IHasAlbumArtist; - if (hasAlbumArtists != null) + if (request.AlbumArtists != null) { - hasAlbumArtists.AlbumArtists = request - .AlbumArtists - .Select(i => i.Name) - .ToList(); + var hasAlbumArtists = item as IHasAlbumArtist; + if (hasAlbumArtists != null) + { + hasAlbumArtists.AlbumArtists = request + .AlbumArtists + .Select(i => i.Name) + .ToList(); + } } - var hasArtists = item as IHasArtist; - if (hasArtists != null) + if (request.ArtistItems != null) { - hasArtists.Artists = request - .ArtistItems - .Select(i => i.Name) - .ToList(); + var hasArtists = item as IHasArtist; + if (hasArtists != null) + { + hasArtists.Artists = request + .ArtistItems + .Select(i => i.Name) + .ToList(); + } } var song = item as Audio; @@ -422,7 +428,7 @@ namespace MediaBrowser.Api var series = item as Series; if (series != null) { - series.Status = request.Status; + series.Status = request.SeriesStatus; series.AirDays = request.AirDays; series.AirTime = request.AirTime; diff --git a/MediaBrowser.Api/Library/LibraryService.cs b/MediaBrowser.Api/Library/LibraryService.cs index 269f4cb20..e8340a1cb 100644 --- a/MediaBrowser.Api/Library/LibraryService.cs +++ b/MediaBrowser.Api/Library/LibraryService.cs @@ -77,7 +77,7 @@ namespace MediaBrowser.Api.Library /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid? UserId { get; set; } + public string UserId { get; set; } /// <summary> /// Gets or sets the id. @@ -102,7 +102,7 @@ namespace MediaBrowser.Api.Library /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid? UserId { get; set; } + public string UserId { get; set; } /// <summary> /// Gets or sets the id. @@ -127,7 +127,7 @@ namespace MediaBrowser.Api.Library /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid? UserId { get; set; } + public string UserId { get; set; } /// <summary> /// Gets or sets the id. @@ -159,7 +159,7 @@ namespace MediaBrowser.Api.Library public class GetItemCounts : IReturn<ItemCounts> { [ApiMember(Name = "UserId", Description = "Optional. Get counts from a specific user's library.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid? UserId { get; set; } + public string UserId { get; set; } [ApiMember(Name = "IsFavorite", Description = "Optional. Get counts of favorite items", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")] public bool? IsFavorite { get; set; } @@ -174,7 +174,7 @@ namespace MediaBrowser.Api.Library /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid? UserId { get; set; } + public string UserId { get; set; } /// <summary> /// Gets or sets the id. @@ -193,7 +193,7 @@ namespace MediaBrowser.Api.Library /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid? UserId { get; set; } + public string UserId { get; set; } [ApiMember(Name = "IncludeItemTypes", Description = "Optional. If specified, results will be filtered based on item type. This allows multiple, comma delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] public string IncludeItemTypes { get; set; } @@ -412,7 +412,7 @@ namespace MediaBrowser.Api.Library var baseItemDtos = new List<BaseItemDto>(); - var user = request.UserId.HasValue ? _userManager.GetUserById(request.UserId.Value) : null; + var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null; var dtoOptions = GetDtoOptions(request); @@ -483,15 +483,15 @@ namespace MediaBrowser.Api.Library return ToOptimizedSerializedResultUsingCache(counts); } - private bool FilterItem(BaseItem item, GetItemCounts request, Guid? userId) + private bool FilterItem(BaseItem item, GetItemCounts request, string userId) { - if (userId.HasValue) + if (!string.IsNullOrWhiteSpace(userId)) { if (request.IsFavorite.HasValue) { var val = request.IsFavorite.Value; - if (_userDataManager.GetUserData(userId.Value, item.GetUserDataKey()).IsFavorite != val) + if (_userDataManager.GetUserData(userId, item.GetUserDataKey()).IsFavorite != val) { return false; } @@ -609,10 +609,10 @@ namespace MediaBrowser.Api.Library private ThemeMediaResult GetThemeSongs(GetThemeSongs request) { - var user = request.UserId.HasValue ? _userManager.GetUserById(request.UserId.Value) : null; + var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null; var item = string.IsNullOrEmpty(request.Id) - ? (request.UserId.HasValue + ? (!string.IsNullOrWhiteSpace(request.UserId) ? user.RootFolder : (Folder)_libraryManager.RootFolder) : _libraryManager.GetItemById(request.Id); @@ -652,10 +652,10 @@ namespace MediaBrowser.Api.Library public ThemeMediaResult GetThemeVideos(GetThemeVideos request) { - var user = request.UserId.HasValue ? _userManager.GetUserById(request.UserId.Value) : null; + var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null; var item = string.IsNullOrEmpty(request.Id) - ? (request.UserId.HasValue + ? (!string.IsNullOrWhiteSpace(request.UserId) ? user.RootFolder : (Folder)_libraryManager.RootFolder) : _libraryManager.GetItemById(request.Id); diff --git a/MediaBrowser.Api/LiveTv/LiveTvService.cs b/MediaBrowser.Api/LiveTv/LiveTvService.cs index b8b74369c..c474642d5 100644 --- a/MediaBrowser.Api/LiveTv/LiveTvService.cs +++ b/MediaBrowser.Api/LiveTv/LiveTvService.cs @@ -78,7 +78,7 @@ namespace MediaBrowser.Api.LiveTv [Route("/LiveTv/Recordings", "GET", Summary = "Gets live tv recordings")] [Authenticated] - public class GetRecordings : IReturn<QueryResult<RecordingInfoDto>> + public class GetRecordings : IReturn<QueryResult<BaseItemDto>> { [ApiMember(Name = "ChannelId", Description = "Optional filter by channel id.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] public string ChannelId { get; set; } @@ -107,7 +107,7 @@ namespace MediaBrowser.Api.LiveTv [Route("/LiveTv/Recordings/Groups", "GET", Summary = "Gets live tv recording groups")] [Authenticated] - public class GetRecordingGroups : IReturn<QueryResult<RecordingGroupDto>> + public class GetRecordingGroups : IReturn<QueryResult<BaseItemDto>> { [ApiMember(Name = "UserId", Description = "Optional filter by user and attach user data.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] public string UserId { get; set; } @@ -115,7 +115,7 @@ namespace MediaBrowser.Api.LiveTv [Route("/LiveTv/Recordings/{Id}", "GET", Summary = "Gets a live tv recording")] [Authenticated] - public class GetRecording : IReturn<RecordingInfoDto> + public class GetRecording : IReturn<BaseItemDto> { [ApiMember(Name = "Id", Description = "Recording Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] public string Id { get; set; } @@ -161,7 +161,7 @@ namespace MediaBrowser.Api.LiveTv [Route("/LiveTv/Programs", "GET,POST", Summary = "Gets available live tv epgs..")] [Authenticated] - public class GetPrograms : IReturn<QueryResult<ProgramInfoDto>> + public class GetPrograms : IReturn<QueryResult<BaseItemDto>> { [ApiMember(Name = "ChannelIds", Description = "The channels to return guide information for.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET,POST")] public string ChannelIds { get; set; } @@ -208,7 +208,7 @@ namespace MediaBrowser.Api.LiveTv [Route("/LiveTv/Programs/Recommended", "GET", Summary = "Gets available live tv epgs..")] [Authenticated] - public class GetRecommendedPrograms : IReturn<QueryResult<ProgramInfoDto>> + public class GetRecommendedPrograms : IReturn<QueryResult<BaseItemDto>> { [ApiMember(Name = "UserId", Description = "Optional filter by user id.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET,POST")] public string UserId { get; set; } @@ -231,7 +231,7 @@ namespace MediaBrowser.Api.LiveTv [Route("/LiveTv/Programs/{Id}", "GET", Summary = "Gets a live tv program")] [Authenticated] - public class GetProgram : IReturn<ProgramInfoDto> + public class GetProgram : IReturn<BaseItemDto> { [ApiMember(Name = "Id", Description = "Program Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] public string Id { get; set; } @@ -310,7 +310,7 @@ namespace MediaBrowser.Api.LiveTv [Route("/LiveTv/Recordings/Groups/{Id}", "GET", Summary = "Gets a recording group")] [Authenticated] - public class GetRecordingGroup : IReturn<RecordingGroupDto> + public class GetRecordingGroup : IReturn<BaseItemDto> { [ApiMember(Name = "Id", Description = "Recording group Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] public string Id { get; set; } diff --git a/MediaBrowser.Api/MediaBrowser.Api.csproj b/MediaBrowser.Api/MediaBrowser.Api.csproj index ab205d6eb..e79163d80 100644 --- a/MediaBrowser.Api/MediaBrowser.Api.csproj +++ b/MediaBrowser.Api/MediaBrowser.Api.csproj @@ -84,10 +84,29 @@ <Compile Include="Playback\MediaInfoService.cs" /> <Compile Include="Playback\TranscodingThrottler.cs" /> <Compile Include="PlaylistService.cs" /> - <Compile Include="Reports\ReportFieldType.cs" /> - <Compile Include="Reports\ReportResult.cs" /> - <Compile Include="Reports\ReportsService.cs" /> + <Compile Include="Reports\Common\HeaderMetadata.cs" /> + <Compile Include="Reports\Common\ItemViewType.cs" /> + <Compile Include="Reports\Common\ReportBuilderBase.cs" /> + <Compile Include="Reports\Common\ReportExportType.cs" /> + <Compile Include="Reports\Common\ReportFieldType.cs" /> + <Compile Include="Reports\Common\ReportHeaderIdType.cs" /> + <Compile Include="Reports\Common\ReportHelper.cs" /> + <Compile Include="Reports\Common\ReportViewType.cs" /> + <Compile Include="Reports\Data\ReportBuilder.cs" /> + <Compile Include="Reports\Data\ReportExport.cs" /> + <Compile Include="Reports\Data\ReportGroup.cs" /> + <Compile Include="Reports\Data\ReportHeader.cs" /> + <Compile Include="Reports\Data\ReportItem.cs" /> + <Compile Include="Reports\Data\ReportOptions.cs" /> + <Compile Include="Reports\Data\ReportResult.cs" /> + <Compile Include="Reports\Data\ReportRow.cs" /> <Compile Include="Reports\ReportRequests.cs" /> + <Compile Include="Reports\ReportsService.cs" /> + <Compile Include="Reports\Stat\ReportStatBuilder.cs" /> + <Compile Include="Reports\Stat\ReportStatGroup.cs" /> + <Compile Include="Reports\Stat\ReportStatItem.cs" /> + <Compile Include="Reports\Stat\ReportStatResult.cs" /> + <Compile Include="Social\SharingService.cs" /> <Compile Include="StartupWizardService.cs" /> <Compile Include="Subtitles\SubtitleService.cs" /> <Compile Include="Movies\CollectionService.cs" /> diff --git a/MediaBrowser.Api/Movies/CollectionService.cs b/MediaBrowser.Api/Movies/CollectionService.cs index ec3265b56..e8c33abc6 100644 --- a/MediaBrowser.Api/Movies/CollectionService.cs +++ b/MediaBrowser.Api/Movies/CollectionService.cs @@ -2,8 +2,6 @@ using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Net; using MediaBrowser.Model.Collections; -using MediaBrowser.Model.Dto; -using MediaBrowser.Model.Querying; using ServiceStack; using System; using System.Collections.Generic; @@ -22,7 +20,7 @@ namespace MediaBrowser.Api.Movies public string Name { get; set; } [ApiMember(Name = "ParentId", Description = "Optional - create the collection within a specific folder", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")] - public Guid? ParentId { get; set; } + public string ParentId { get; set; } [ApiMember(Name = "Ids", Description = "Item Ids to add to the collection", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST", AllowMultiple = true)] public string Ids { get; set; } @@ -35,7 +33,7 @@ namespace MediaBrowser.Api.Movies public string Ids { get; set; } [ApiMember(Name = "Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")] - public Guid Id { get; set; } + public string Id { get; set; } } [Route("/Collections/{Id}/Items", "DELETE", Summary = "Removes items from a collection")] @@ -45,7 +43,7 @@ namespace MediaBrowser.Api.Movies public string Ids { get; set; } [ApiMember(Name = "Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "DELETE")] - public Guid Id { get; set; } + public string Id { get; set; } } [Authenticated] @@ -64,11 +62,13 @@ namespace MediaBrowser.Api.Movies { var userId = AuthorizationContext.GetAuthorizationInfo(Request).UserId; + var parentId = string.IsNullOrWhiteSpace(request.ParentId) ? (Guid?)null : new Guid(request.ParentId); + var item = await _collectionManager.CreateCollection(new CollectionCreationOptions { IsLocked = request.IsLocked, Name = request.Name, - ParentId = request.ParentId, + ParentId = parentId, ItemIdList = (request.Ids ?? string.Empty).Split(',').Where(i => !string.IsNullOrWhiteSpace(i)).Select(i => new Guid(i)).ToList(), UserIds = new List<Guid> { new Guid(userId) } @@ -86,14 +86,14 @@ namespace MediaBrowser.Api.Movies public void Post(AddToCollection request) { - var task = _collectionManager.AddToCollection(request.Id, request.Ids.Split(',').Select(i => new Guid(i))); + var task = _collectionManager.AddToCollection(new Guid(request.Id), request.Ids.Split(',').Select(i => new Guid(i))); Task.WaitAll(task); } public void Delete(RemoveFromCollection request) { - var task = _collectionManager.RemoveFromCollection(request.Id, request.Ids.Split(',').Select(i => new Guid(i))); + var task = _collectionManager.RemoveFromCollection(new Guid(request.Id), request.Ids.Split(',').Select(i => new Guid(i))); Task.WaitAll(task); } diff --git a/MediaBrowser.Api/Movies/MoviesService.cs b/MediaBrowser.Api/Movies/MoviesService.cs index 1a7f6d8f4..97e9aa9c8 100644 --- a/MediaBrowser.Api/Movies/MoviesService.cs +++ b/MediaBrowser.Api/Movies/MoviesService.cs @@ -42,7 +42,7 @@ namespace MediaBrowser.Api.Movies /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid? UserId { get; set; } + public string UserId { get; set; } /// <summary> /// Specify this to localize the search to a specific item or folder. Omit to use the root. @@ -119,7 +119,7 @@ namespace MediaBrowser.Api.Movies public async Task<object> Get(GetMovieRecommendations request) { - var user = _userManager.GetUserById(request.UserId.Value); + var user = _userManager.GetUserById(request.UserId); IEnumerable<BaseItem> movies = GetAllLibraryItems(request.UserId, _userManager, _libraryManager, request.ParentId, i => i is Movie); @@ -165,12 +165,12 @@ namespace MediaBrowser.Api.Movies return ToOptimizedResult(result); } - private async Task<ItemsResult> GetSimilarItemsResult(BaseGetSimilarItemsFromItem request, Func<BaseItem, bool> includeInSearch, Func<BaseItem, BaseItem, int> getSimilarityScore) + private async Task<ItemsResult> GetSimilarItemsResult(BaseGetSimilarItemsFromItem request, Func<BaseItem, bool> includeInSearch, Func<BaseItem, List<PersonInfo>, List<PersonInfo>, BaseItem, int> getSimilarityScore) { - var user = request.UserId.HasValue ? _userManager.GetUserById(request.UserId.Value) : null; + var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null; var item = string.IsNullOrEmpty(request.Id) ? - (request.UserId.HasValue ? user.RootFolder : + (!string.IsNullOrWhiteSpace(request.UserId) ? user.RootFolder : _libraryManager.RootFolder) : _libraryManager.GetItemById(request.Id); Func<BaseItem, bool> filter = i => i.Id != item.Id && includeInSearch(i); @@ -214,7 +214,7 @@ namespace MediaBrowser.Api.Movies } } - var items = SimilarItemsHelper.GetSimilaritems(item, list, getSimilarityScore).ToList(); + var items = SimilarItemsHelper.GetSimilaritems(item, _libraryManager, list, getSimilarityScore).ToList(); IEnumerable<BaseItem> returnItems = items; @@ -339,7 +339,7 @@ namespace MediaBrowser.Api.Movies foreach (var director in directors) { var items = allMovies - .Where(i => i.People.Any(p => string.Equals(p.Type, PersonType.Director, StringComparison.OrdinalIgnoreCase) && string.Equals(p.Name, director, StringComparison.OrdinalIgnoreCase))) + .Where(i => _libraryManager.GetPeople(i).Any(p => string.Equals(p.Type, PersonType.Director, StringComparison.OrdinalIgnoreCase) && string.Equals(p.Name, director, StringComparison.OrdinalIgnoreCase))) .Take(itemLimit) .ToList(); @@ -358,12 +358,15 @@ namespace MediaBrowser.Api.Movies private IEnumerable<RecommendationDto> GetWithActor(User user, List<BaseItem> allMovies, IEnumerable<string> names, int itemLimit, DtoOptions dtoOptions, RecommendationType type) { - var userId = user.Id; - foreach (var name in names) { + var itemsWithActor = _libraryManager.GetItemIds(new InternalItemsQuery + { + Person = name + }); + var items = allMovies - .Where(i => i.People.Any(p => string.Equals(p.Name, name, StringComparison.OrdinalIgnoreCase))) + .Where(i => itemsWithActor.Contains(i.Id)) .Take(itemLimit) .ToList(); @@ -382,12 +385,10 @@ namespace MediaBrowser.Api.Movies private IEnumerable<RecommendationDto> GetSimilarTo(User user, List<BaseItem> allMovies, IEnumerable<BaseItem> baselineItems, int itemLimit, DtoOptions dtoOptions, RecommendationType type) { - var userId = user.Id; - foreach (var item in baselineItems) { var similar = SimilarItemsHelper - .GetSimilaritems(item, allMovies, SimilarItemsHelper.GetSimiliarityScore) + .GetSimilaritems(item, _libraryManager, allMovies, SimilarItemsHelper.GetSimiliarityScore) .Take(itemLimit) .ToList(); @@ -406,18 +407,37 @@ namespace MediaBrowser.Api.Movies private IEnumerable<string> GetActors(IEnumerable<BaseItem> items) { - // Get the two leading actors for all movies - return items - .SelectMany(i => i.People.Where(p => !string.Equals(PersonType.Director, p.Type, StringComparison.OrdinalIgnoreCase)).Take(2)) + var people = _libraryManager.GetPeople(new InternalPeopleQuery + { + ExcludePersonTypes = new List<string> + { + PersonType.Director + }, + MaxListOrder = 3 + }); + + var itemIds = items.Select(i => i.Id).ToList(); + + return people + .Where(i => itemIds.Contains(i.ItemId)) .Select(i => i.Name) .DistinctNames(); } private IEnumerable<string> GetDirectors(IEnumerable<BaseItem> items) { - return items - .Select(i => i.People.FirstOrDefault(p => string.Equals(PersonType.Director, p.Type, StringComparison.OrdinalIgnoreCase))) - .Where(i => i != null) + var people = _libraryManager.GetPeople(new InternalPeopleQuery + { + PersonTypes = new List<string> + { + PersonType.Director + } + }); + + var itemIds = items.Select(i => i.Id).ToList(); + + return people + .Where(i => itemIds.Contains(i.ItemId)) .Select(i => i.Name) .DistinctNames(); } diff --git a/MediaBrowser.Api/Movies/TrailersService.cs b/MediaBrowser.Api/Movies/TrailersService.cs index 3bee59a86..c807bfde6 100644 --- a/MediaBrowser.Api/Movies/TrailersService.cs +++ b/MediaBrowser.Api/Movies/TrailersService.cs @@ -34,7 +34,7 @@ namespace MediaBrowser.Api.Movies /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "User Id", IsRequired = false, DataType = "string", ParameterType = "path", Verb = "GET")] - public Guid? UserId { get; set; } + public string UserId { get; set; } } /// <summary> @@ -103,7 +103,7 @@ namespace MediaBrowser.Api.Movies public async Task<object> Get(Getrailers request) { - var user = request.UserId.HasValue ? _userManager.GetUserById(request.UserId.Value) : null; + var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null; var result = await GetAllTrailers(user).ConfigureAwait(false); IEnumerable<BaseItem> items = result.Items; diff --git a/MediaBrowser.Api/Music/AlbumsService.cs b/MediaBrowser.Api/Music/AlbumsService.cs index 37f79bf20..ea87c3ad3 100644 --- a/MediaBrowser.Api/Music/AlbumsService.cs +++ b/MediaBrowser.Api/Music/AlbumsService.cs @@ -6,6 +6,7 @@ using MediaBrowser.Controller.Net; using MediaBrowser.Controller.Persistence; using ServiceStack; using System; +using System.Collections.Generic; using System.Linq; namespace MediaBrowser.Api.Music @@ -68,11 +69,13 @@ namespace MediaBrowser.Api.Music /// Gets the album similarity score. /// </summary> /// <param name="item1">The item1.</param> + /// <param name="item1People">The item1 people.</param> + /// <param name="allPeople">All people.</param> /// <param name="item2">The item2.</param> /// <returns>System.Int32.</returns> - private int GetAlbumSimilarityScore(BaseItem item1, BaseItem item2) + private int GetAlbumSimilarityScore(BaseItem item1, List<PersonInfo> item1People, List<PersonInfo> allPeople, BaseItem item2) { - var points = SimilarItemsHelper.GetSimiliarityScore(item1, item2); + var points = SimilarItemsHelper.GetSimiliarityScore(item1, item1People, allPeople, item2); var album1 = (MusicAlbum)item1; var album2 = (MusicAlbum)item2; diff --git a/MediaBrowser.Api/Music/InstantMixService.cs b/MediaBrowser.Api/Music/InstantMixService.cs index 78c6a8bf4..506b7bc3a 100644 --- a/MediaBrowser.Api/Music/InstantMixService.cs +++ b/MediaBrowser.Api/Music/InstantMixService.cs @@ -50,7 +50,7 @@ namespace MediaBrowser.Api.Music [Route("/MusicGenres/InstantMix", "GET", Summary = "Creates an instant playlist based on a music genre")] public class GetInstantMixFromMusicGenreId : BaseGetSimilarItems { - [ApiMember(Name = "Id", Description = "The genre Id", IsRequired = true, DataType = "string", ParameterType = "querypath", Verb = "GET")] + [ApiMember(Name = "Id", Description = "The genre Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")] public string Id { get; set; } } @@ -75,7 +75,7 @@ namespace MediaBrowser.Api.Music { var item = _libraryManager.GetItemById(request.Id); - var user = _userManager.GetUserById(request.UserId.Value); + var user = _userManager.GetUserById(request.UserId); var items = _musicManager.GetInstantMixFromItem(item, user); @@ -86,7 +86,7 @@ namespace MediaBrowser.Api.Music { var item = _libraryManager.GetItemById(request.Id); - var user = _userManager.GetUserById(request.UserId.Value); + var user = _userManager.GetUserById(request.UserId); var items = _musicManager.GetInstantMixFromItem(item, user); @@ -97,7 +97,7 @@ namespace MediaBrowser.Api.Music { var item = _libraryManager.GetItemById(request.Id); - var user = _userManager.GetUserById(request.UserId.Value); + var user = _userManager.GetUserById(request.UserId); var items = _musicManager.GetInstantMixFromItem(item, user); @@ -108,7 +108,7 @@ namespace MediaBrowser.Api.Music { var album = _libraryManager.GetItemById(request.Id); - var user = _userManager.GetUserById(request.UserId.Value); + var user = _userManager.GetUserById(request.UserId); var items = _musicManager.GetInstantMixFromItem(album, user); @@ -119,7 +119,7 @@ namespace MediaBrowser.Api.Music { var playlist = (Playlist)_libraryManager.GetItemById(request.Id); - var user = _userManager.GetUserById(request.UserId.Value); + var user = _userManager.GetUserById(request.UserId); var items = _musicManager.GetInstantMixFromItem(playlist, user); @@ -128,7 +128,7 @@ namespace MediaBrowser.Api.Music public object Get(GetInstantMixFromMusicGenre request) { - var user = _userManager.GetUserById(request.UserId.Value); + var user = _userManager.GetUserById(request.UserId); var items = _musicManager.GetInstantMixFromGenres(new[] { request.Name }, user); @@ -137,7 +137,7 @@ namespace MediaBrowser.Api.Music public object Get(GetInstantMixFromArtist request) { - var user = _userManager.GetUserById(request.UserId.Value); + var user = _userManager.GetUserById(request.UserId); var items = _musicManager.GetInstantMixFromArtist(request.Name, user); diff --git a/MediaBrowser.Api/PackageService.cs b/MediaBrowser.Api/PackageService.cs index 1d792fbc1..5ef8b0987 100644 --- a/MediaBrowser.Api/PackageService.cs +++ b/MediaBrowser.Api/PackageService.cs @@ -56,6 +56,8 @@ namespace MediaBrowser.Api [ApiMember(Name = "IsAdult", Description = "Optional. Filter by package that contain adult content.", IsRequired = false, DataType = "boolean", ParameterType = "query", Verb = "GET")] public bool? IsAdult { get; set; } + + public bool? IsAppStoreEnabled { get; set; } } /// <summary> @@ -207,6 +209,11 @@ namespace MediaBrowser.Api packages = packages.Where(p => p.adult == request.IsAdult.Value); } + if (request.IsAppStoreEnabled.HasValue) + { + packages = packages.Where(p => p.enableInAppStore == request.IsAppStoreEnabled.Value); + } + return ToOptimizedResult(packages.ToList()); } diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs index 5e06ab1d0..dc5858e86 100644 --- a/MediaBrowser.Api/Playback/BaseStreamingService.cs +++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs @@ -8,12 +8,12 @@ using MediaBrowser.Controller.Library; using MediaBrowser.Controller.MediaEncoding; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Dlna; -using MediaBrowser.Model.Drawing; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Extensions; using MediaBrowser.Model.IO; using MediaBrowser.Model.MediaInfo; +using MediaBrowser.Model.Serialization; using System; using System.Collections.Generic; using System.Diagnostics; @@ -23,7 +23,6 @@ using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Model.Serialization; namespace MediaBrowser.Api.Playback { @@ -157,11 +156,11 @@ namespace MediaBrowser.Api.Playback /// <value>The fast seek command line parameter.</value> protected string GetFastSeekCommandLineParameter(StreamRequest request) { - var time = request.StartTimeTicks; + var time = request.StartTimeTicks ?? 0; - if (time.HasValue && time.Value > 0) + if (time > 0) { - return string.Format("-ss {0}", MediaEncoder.GetTimeParameter(time.Value)); + return string.Format("-ss {0}", MediaEncoder.GetTimeParameter(time)); } return string.Empty; @@ -633,7 +632,7 @@ namespace MediaBrowser.Api.Playback { var maxHeightParam = request.MaxHeight.Value.ToString(UsCulture); - filters.Add(string.Format("scale=trunc(oh*a*2)/2:min(ih\\,{0})", maxHeightParam)); + filters.Add(string.Format("scale=trunc(oh*a/2)*2:min(ih\\,{0})", maxHeightParam)); } if (string.Equals(outputVideoCodec, "h264_qsv", StringComparison.OrdinalIgnoreCase)) @@ -690,7 +689,7 @@ namespace MediaBrowser.Api.Playback // TODO: Perhaps also use original_size=1920x800 ?? return string.Format("subtitles=filename='{0}'{1},setpts=PTS -{2}/TB", - subtitlePath.Replace('\\', '/').Replace(":/", "\\:/"), + subtitlePath.Replace('\\', '/').Replace("'", "\\'").Replace(":/", "\\:/"), charsetParam, seconds.ToString(UsCulture)); } @@ -698,7 +697,7 @@ namespace MediaBrowser.Api.Playback var mediaPath = state.MediaPath ?? string.Empty; return string.Format("subtitles='{0}:si={1}',setpts=PTS -{2}/TB", - mediaPath.Replace('\\', '/').Replace(":/", "\\:/"), + mediaPath.Replace('\\', '/').Replace("'", "\\'").Replace(":/", "\\:/"), state.InternalSubtitleStreamOffset.ToString(UsCulture), seconds.ToString(UsCulture)); } @@ -769,26 +768,36 @@ namespace MediaBrowser.Api.Playback /// <returns>System.Nullable{System.Int32}.</returns> private int? GetNumAudioChannelsParam(StreamRequest request, MediaStream audioStream, string outputAudioCodec) { - if (audioStream != null) + var inputChannels = audioStream == null + ? null + : audioStream.Channels; + + if (inputChannels <= 0) { - var codec = outputAudioCodec ?? string.Empty; + inputChannels = null; + } - if (audioStream.Channels > 2 && codec.IndexOf("wma", StringComparison.OrdinalIgnoreCase) != -1) - { - // wmav2 currently only supports two channel output - return 2; - } + var codec = outputAudioCodec ?? string.Empty; + + if (codec.IndexOf("wma", StringComparison.OrdinalIgnoreCase) != -1) + { + // wmav2 currently only supports two channel output + return Math.Min(2, inputChannels ?? 2); } if (request.MaxAudioChannels.HasValue) { - if (audioStream != null && audioStream.Channels.HasValue) + if (inputChannels.HasValue) { - return Math.Min(request.MaxAudioChannels.Value, audioStream.Channels.Value); + return Math.Min(request.MaxAudioChannels.Value, inputChannels.Value); } + var channelLimit = codec.IndexOf("mp3", StringComparison.OrdinalIgnoreCase) != -1 + ? 2 + : 5; + // If we don't have any media info then limit it to 5 to prevent encoding errors due to asking for too many channels - return Math.Min(request.MaxAudioChannels.Value, 5); + return Math.Min(request.MaxAudioChannels.Value, channelLimit); } return request.AudioChannels; @@ -808,11 +817,11 @@ namespace MediaBrowser.Api.Playback } /// <summary> - /// Gets the name of the output audio codec + /// Gets the audio encoder. /// </summary> /// <param name="request">The request.</param> /// <returns>System.String.</returns> - private string GetAudioCodec(StreamRequest request) + protected string GetAudioEncoder(StreamRequest request) { var codec = request.AudioCodec; @@ -841,7 +850,7 @@ namespace MediaBrowser.Api.Playback /// </summary> /// <param name="request">The request.</param> /// <returns>System.String.</returns> - private string GetVideoCodec(VideoStreamRequest request) + protected string GetVideoEncoder(VideoStreamRequest request) { var codec = request.VideoCodec; @@ -1055,7 +1064,7 @@ namespace MediaBrowser.Api.Playback private void StartThrottler(StreamState state, TranscodingJob transcodingJob) { - if (state.InputProtocol == MediaProtocol.File && + if (EnableThrottling(state) && state.InputProtocol == MediaProtocol.File && state.RunTimeTicks.HasValue && state.VideoType == VideoType.VideoFile && !string.Equals(state.OutputVideoCodec, "copy", StringComparison.OrdinalIgnoreCase)) @@ -1068,6 +1077,11 @@ namespace MediaBrowser.Api.Playback } } + protected virtual bool EnableThrottling(StreamState state) + { + return true; + } + private async void StartStreamingLog(TranscodingJob transcodingJob, StreamState state, Stream source, Stream target) { try @@ -1655,13 +1669,13 @@ namespace MediaBrowser.Api.Playback state.OutputAudioBitrate = GetAudioBitrateParam(state.Request, state.AudioStream); state.OutputAudioSampleRate = request.AudioSampleRate; - state.OutputAudioCodec = GetAudioCodec(state.Request); + state.OutputAudioCodec = state.Request.AudioCodec; state.OutputAudioChannels = GetNumAudioChannelsParam(state.Request, state.AudioStream, state.OutputAudioCodec); if (videoRequest != null) { - state.OutputVideoCodec = GetVideoCodec(videoRequest); + state.OutputVideoCodec = state.VideoRequest.VideoCodec; state.OutputVideoBitrate = GetVideoBitrateParamValue(state.VideoRequest, state.VideoStream); if (state.OutputVideoBitrate.HasValue) @@ -1690,6 +1704,11 @@ namespace MediaBrowser.Api.Playback private void TryStreamCopy(StreamState state, VideoStreamRequest videoRequest) { + if (!EnableStreamCopy) + { + return; + } + if (state.VideoStream != null && CanStreamCopyVideo(videoRequest, state.VideoStream)) { state.OutputVideoCodec = "copy"; @@ -1701,6 +1720,14 @@ namespace MediaBrowser.Api.Playback } } + protected virtual bool EnableStreamCopy + { + get + { + return true; + } + } + private void AttachMediaSourceInfo(StreamState state, MediaSourceInfo mediaSource, VideoStreamRequest videoRequest, @@ -1745,6 +1772,12 @@ namespace MediaBrowser.Api.Playback state.InputAudioSync = "1"; } + if (string.Equals(mediaSource.Container, "wma", StringComparison.OrdinalIgnoreCase)) + { + // Seeing some stuttering when transcoding wma to audio-only HLS + state.InputAudioSync = "1"; + } + var mediaStreams = mediaSource.MediaStreams; if (videoRequest != null) @@ -2038,15 +2071,18 @@ namespace MediaBrowser.Api.Playback state.MimeType = mediaProfile.MimeType; } - var transcodingProfile = state.VideoRequest == null ? - profile.GetAudioTranscodingProfile(state.OutputContainer, audioCodec) : - profile.GetVideoTranscodingProfile(state.OutputContainer, audioCodec, videoCodec); - - if (transcodingProfile != null) + if (!state.Request.Static) { - state.EstimateContentLength = transcodingProfile.EstimateContentLength; - state.EnableMpegtsM2TsMode = transcodingProfile.EnableMpegtsM2TsMode; - state.TranscodeSeekInfo = transcodingProfile.TranscodeSeekInfo; + var transcodingProfile = state.VideoRequest == null ? + profile.GetAudioTranscodingProfile(state.OutputContainer, audioCodec) : + profile.GetVideoTranscodingProfile(state.OutputContainer, audioCodec, videoCodec); + + if (transcodingProfile != null) + { + state.EstimateContentLength = transcodingProfile.EstimateContentLength; + state.EnableMpegtsM2TsMode = transcodingProfile.EnableMpegtsM2TsMode; + state.TranscodeSeekInfo = transcodingProfile.TranscodeSeekInfo; + } } } @@ -2065,6 +2101,15 @@ namespace MediaBrowser.Api.Playback responseHeaders["transferMode.dlna.org"] = string.IsNullOrEmpty(transferMode) ? "Streaming" : transferMode; responseHeaders["realTimeInfo.dlna.org"] = "DLNA.ORG_TLAG=*"; + if (string.Equals(GetHeader("getMediaInfo.sec"), "1", StringComparison.OrdinalIgnoreCase)) + { + if (state.RunTimeTicks.HasValue) + { + var ms = TimeSpan.FromTicks(state.RunTimeTicks.Value).TotalMilliseconds; + responseHeaders["MediaInfo.sec"] = string.Format("SEC_Duration={0};", Convert.ToInt32(ms).ToString(CultureInfo.InvariantCulture)); + } + } + if (state.RunTimeTicks.HasValue && !isStaticallyStreamed && profile != null) { AddTimeSeekResponseHeaders(state, responseHeaders); diff --git a/MediaBrowser.Api/Playback/Dash/MpegDashService.cs b/MediaBrowser.Api/Playback/Dash/MpegDashService.cs index 1a90dbb53..47eb38b2d 100644 --- a/MediaBrowser.Api/Playback/Dash/MpegDashService.cs +++ b/MediaBrowser.Api/Playback/Dash/MpegDashService.cs @@ -378,9 +378,9 @@ namespace MediaBrowser.Api.Playback.Dash protected override string GetAudioArguments(StreamState state) { - var codec = state.OutputAudioCodec; + var codec = GetAudioEncoder(state.Request); - if (codec.Equals("copy", StringComparison.OrdinalIgnoreCase)) + if (string.Equals(codec, "copy", StringComparison.OrdinalIgnoreCase)) { return "-codec:a:0 copy"; } @@ -408,7 +408,7 @@ namespace MediaBrowser.Api.Playback.Dash protected override string GetVideoArguments(StreamState state) { - var codec = state.OutputVideoCodec; + var codec = GetVideoEncoder(state.VideoRequest); var args = "-codec:v:0 " + codec; diff --git a/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs b/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs index b10c02e17..b2ffeca3d 100644 --- a/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs @@ -7,13 +7,13 @@ using MediaBrowser.Controller.MediaEncoding; using MediaBrowser.Model.Extensions; using MediaBrowser.Model.IO; using MediaBrowser.Model.Net; +using MediaBrowser.Model.Serialization; using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Model.Serialization; namespace MediaBrowser.Api.Playback.Hls { @@ -100,6 +100,7 @@ namespace MediaBrowser.Api.Playback.Hls try { job = await StartFfMpeg(state, playlist, cancellationTokenSource).ConfigureAwait(false); + job.IsLiveOutput = isLive; } catch { @@ -133,7 +134,7 @@ namespace MediaBrowser.Api.Playback.Hls var appendBaselineStream = false; var baselineStreamBitrate = 64000; - var hlsVideoRequest = state.VideoRequest as GetHlsVideoStream; + var hlsVideoRequest = state.VideoRequest as GetHlsVideoStreamLegacy; if (hlsVideoRequest != null) { appendBaselineStream = hlsVideoRequest.AppendBaselineStream; @@ -244,7 +245,7 @@ namespace MediaBrowser.Api.Playback.Hls protected override string GetCommandLineArguments(string outputPath, StreamState state, bool isEncoding) { - var hlsVideoRequest = state.VideoRequest as GetHlsVideoStream; + var hlsVideoRequest = state.VideoRequest as GetHlsVideoStreamLegacy; var itsOffsetMs = hlsVideoRequest == null ? 0 diff --git a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs index 1f6bc242d..0a432a580 100644 --- a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs @@ -13,6 +13,7 @@ using MediaBrowser.Model.IO; using MediaBrowser.Model.Serialization; using ServiceStack; using System; +using System.Collections.Concurrent; using System.Collections.Generic; using System.Globalization; using System.IO; @@ -29,27 +30,60 @@ namespace MediaBrowser.Api.Playback.Hls /// </summary> [Route("/Videos/{Id}/master.m3u8", "GET", Summary = "Gets a video stream using HTTP live streaming.")] [Route("/Videos/{Id}/master.m3u8", "HEAD", Summary = "Gets a video stream using HTTP live streaming.")] - public class GetMasterHlsVideoStream : VideoStreamRequest + public class GetMasterHlsVideoPlaylist : VideoStreamRequest, IMasterHlsRequest { public bool EnableAdaptiveBitrateStreaming { get; set; } - public GetMasterHlsVideoStream() + public GetMasterHlsVideoPlaylist() { EnableAdaptiveBitrateStreaming = true; } } + [Route("/Audio/{Id}/master.m3u8", "GET", Summary = "Gets an audio stream using HTTP live streaming.")] + [Route("/Audio/{Id}/master.m3u8", "HEAD", Summary = "Gets an audio stream using HTTP live streaming.")] + public class GetMasterHlsAudioPlaylist : StreamRequest, IMasterHlsRequest + { + public bool EnableAdaptiveBitrateStreaming { get; set; } + + public GetMasterHlsAudioPlaylist() + { + EnableAdaptiveBitrateStreaming = true; + } + } + + public interface IMasterHlsRequest + { + bool EnableAdaptiveBitrateStreaming { get; set; } + } + [Route("/Videos/{Id}/main.m3u8", "GET", Summary = "Gets a video stream using HTTP live streaming.")] - public class GetMainHlsVideoStream : VideoStreamRequest + public class GetVariantHlsVideoPlaylist : VideoStreamRequest + { + } + + [Route("/Audio/{Id}/main.m3u8", "GET", Summary = "Gets an audio stream using HTTP live streaming.")] + public class GetVariantHlsAudioPlaylist : StreamRequest { } - /// <summary> - /// Class GetHlsVideoSegment - /// </summary> [Route("/Videos/{Id}/hlsdynamic/{PlaylistId}/{SegmentId}.ts", "GET")] [Api(Description = "Gets an Http live streaming segment file. Internal use only.")] - public class GetDynamicHlsVideoSegment : VideoStreamRequest + public class GetHlsVideoSegment : VideoStreamRequest + { + public string PlaylistId { get; set; } + + /// <summary> + /// Gets or sets the segment id. + /// </summary> + /// <value>The segment id.</value> + public string SegmentId { get; set; } + } + + [Route("/Audio/{Id}/hlsdynamic/{PlaylistId}/{SegmentId}.aac", "GET")] + [Route("/Audio/{Id}/hlsdynamic/{PlaylistId}/{SegmentId}.ts", "GET")] + [Api(Description = "Gets an Http live streaming segment file. Internal use only.")] + public class GetHlsAudioSegment : StreamRequest { public string PlaylistId { get; set; } @@ -62,34 +96,55 @@ namespace MediaBrowser.Api.Playback.Hls public class DynamicHlsService : BaseHlsService { - public DynamicHlsService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, IDlnaManager dlnaManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IMediaSourceManager mediaSourceManager, IZipClient zipClient, IJsonSerializer jsonSerializer, INetworkManager networkManager) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, dlnaManager, subtitleEncoder, deviceManager, mediaSourceManager, zipClient, jsonSerializer) + public DynamicHlsService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, IDlnaManager dlnaManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IMediaSourceManager mediaSourceManager, IZipClient zipClient, IJsonSerializer jsonSerializer, INetworkManager networkManager) + : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, dlnaManager, subtitleEncoder, deviceManager, mediaSourceManager, zipClient, jsonSerializer) { NetworkManager = networkManager; } protected INetworkManager NetworkManager { get; private set; } - public Task<object> Get(GetMasterHlsVideoStream request) + public Task<object> Get(GetMasterHlsVideoPlaylist request) + { + return GetMasterPlaylistInternal(request, "GET"); + } + + public Task<object> Head(GetMasterHlsVideoPlaylist request) + { + return GetMasterPlaylistInternal(request, "HEAD"); + } + + public Task<object> Get(GetMasterHlsAudioPlaylist request) { - return GetAsync(request, "GET"); + return GetMasterPlaylistInternal(request, "GET"); } - public Task<object> Head(GetMasterHlsVideoStream request) + public Task<object> Head(GetMasterHlsAudioPlaylist request) { - return GetAsync(request, "HEAD"); + return GetMasterPlaylistInternal(request, "HEAD"); } - public Task<object> Get(GetMainHlsVideoStream request) + public Task<object> Get(GetVariantHlsVideoPlaylist request) { - return GetPlaylistAsync(request, "main"); + return GetVariantPlaylistInternal(request, true, "main"); } - public Task<object> Get(GetDynamicHlsVideoSegment request) + public Task<object> Get(GetVariantHlsAudioPlaylist request) + { + return GetVariantPlaylistInternal(request, false, "main"); + } + + public Task<object> Get(GetHlsVideoSegment request) { return GetDynamicSegment(request, request.SegmentId); } - private async Task<object> GetDynamicSegment(VideoStreamRequest request, string segmentId) + public Task<object> Get(GetHlsAudioSegment request) + { + return GetDynamicSegment(request, request.SegmentId); + } + + private async Task<object> GetDynamicSegment(StreamRequest request, string segmentId) { if ((request.StartTimeTicks ?? 0) > 0) { @@ -105,7 +160,7 @@ namespace MediaBrowser.Api.Playback.Hls var playlistPath = Path.ChangeExtension(state.OutputFilePath, ".m3u8"); - var segmentPath = GetSegmentPath(playlistPath, requestedIndex); + var segmentPath = GetSegmentPath(state, playlistPath, requestedIndex); var segmentLength = state.SegmentLength; var segmentExtension = GetSegmentFileExtension(state); @@ -155,12 +210,14 @@ namespace MediaBrowser.Api.Playback.Hls { ApiEntryPoint.Instance.KillTranscodingJobs(request.DeviceId, request.PlaySessionId, p => false); + await ReadSegmentLengths(playlistPath).ConfigureAwait(false); + if (currentTranscodingIndex.HasValue) { DeleteLastFile(playlistPath, segmentExtension, 0); } - request.StartTimeTicks = GetSeekPositionTicks(state, requestedIndex); + request.StartTimeTicks = GetSeekPositionTicks(state, playlistPath, requestedIndex); job = await StartFfMpeg(state, playlistPath, cancellationTokenSource).ConfigureAwait(false); } @@ -187,22 +244,89 @@ namespace MediaBrowser.Api.Playback.Hls ApiEntryPoint.Instance.TranscodingStartLock.Release(); } - Logger.Info("waiting for {0}", segmentPath); - while (!File.Exists(segmentPath)) - { - await Task.Delay(50, cancellationToken).ConfigureAwait(false); - } + //Logger.Info("waiting for {0}", segmentPath); + //while (!File.Exists(segmentPath)) + //{ + // await Task.Delay(50, cancellationToken).ConfigureAwait(false); + //} Logger.Info("returning {0}", segmentPath); job = job ?? ApiEntryPoint.Instance.OnTranscodeBeginRequest(playlistPath, TranscodingJobType); return await GetSegmentResult(playlistPath, segmentPath, requestedIndex, segmentLength, job, cancellationToken).ConfigureAwait(false); } - private long GetSeekPositionTicks(StreamState state, int requestedIndex) + private static readonly ConcurrentDictionary<string, double> SegmentLengths = new ConcurrentDictionary<string, double>(StringComparer.OrdinalIgnoreCase); + private async Task ReadSegmentLengths(string playlist) { - var startSeconds = requestedIndex * state.SegmentLength; - var position = TimeSpan.FromSeconds(startSeconds).Ticks; + try + { + using (var fileStream = GetPlaylistFileStream(playlist)) + { + using (var reader = new StreamReader(fileStream)) + { + double duration = -1; + + while (!reader.EndOfStream) + { + var text = await reader.ReadLineAsync().ConfigureAwait(false); + + if (text.StartsWith("#EXTINF", StringComparison.OrdinalIgnoreCase)) + { + var parts = text.Split(new[] { ':' }, 2); + if (parts.Length == 2) + { + var time = parts[1].Trim(new[] { ',' }).Trim(); + double timeValue; + if (double.TryParse(time, NumberStyles.Any, CultureInfo.InvariantCulture, out timeValue)) + { + duration = timeValue; + continue; + } + } + } + else if (duration != -1) + { + SegmentLengths.AddOrUpdate(text, duration, (k, v) => duration); + Logger.Debug("Added segment length of {0} for {1}", duration, text); + } + + duration = -1; + } + } + } + } + catch (DirectoryNotFoundException) + { + + } + catch (FileNotFoundException) + { + + } + } + + private long GetSeekPositionTicks(StreamState state, string playlist, int requestedIndex) + { + double startSeconds = 0; + for (var i = 0; i < requestedIndex; i++) + { + var segmentPath = GetSegmentPath(state, playlist, i); + + //double length; + //if (SegmentLengths.TryGetValue(Path.GetFileName(segmentPath), out length)) + //{ + // Logger.Debug("Found segment length of {0} for index {1}", length, i); + // startSeconds += length; + //} + //else + //{ + // startSeconds += state.SegmentLength; + //} + startSeconds += state.SegmentLength; + } + + var position = TimeSpan.FromSeconds(startSeconds).Ticks; return position; } @@ -292,7 +416,7 @@ namespace MediaBrowser.Api.Playback.Hls { var segmentId = "0"; - var segmentRequest = request as GetDynamicHlsVideoSegment; + var segmentRequest = request as GetHlsVideoSegment; if (segmentRequest != null) { segmentId = segmentRequest.SegmentId; @@ -301,13 +425,13 @@ namespace MediaBrowser.Api.Playback.Hls return int.Parse(segmentId, NumberStyles.Integer, UsCulture); } - private string GetSegmentPath(string playlist, int index) + private string GetSegmentPath(StreamState state, string playlist, int index) { var folder = Path.GetDirectoryName(playlist); var filename = Path.GetFileNameWithoutExtension(playlist); - return Path.Combine(folder, filename + index.ToString(UsCulture) + ".ts"); + return Path.Combine(folder, filename + index.ToString(UsCulture) + GetSegmentFileExtension(state)); } private async Task<object> GetSegmentResult(string playlistPath, @@ -318,28 +442,44 @@ namespace MediaBrowser.Api.Playback.Hls CancellationToken cancellationToken) { // If all transcoding has completed, just return immediately - if (transcodingJob != null && transcodingJob.HasExited) + if (transcodingJob != null && transcodingJob.HasExited && File.Exists(segmentPath)) { return GetSegmentResult(segmentPath, segmentIndex, segmentLength, transcodingJob); } var segmentFilename = Path.GetFileName(segmentPath); - using (var fileStream = GetPlaylistFileStream(playlistPath)) + while (!cancellationToken.IsCancellationRequested) { - using (var reader = new StreamReader(fileStream)) + try { - while (!reader.EndOfStream) + using (var fileStream = GetPlaylistFileStream(playlistPath)) { - var text = await reader.ReadLineAsync().ConfigureAwait(false); - - // If it appears in the playlist, it's done - if (text.IndexOf(segmentFilename, StringComparison.OrdinalIgnoreCase) != -1) + using (var reader = new StreamReader(fileStream)) { - return GetSegmentResult(segmentPath, segmentIndex, segmentLength, transcodingJob); + while (!reader.EndOfStream) + { + var text = await reader.ReadLineAsync().ConfigureAwait(false); + + // If it appears in the playlist, it's done + if (text.IndexOf(segmentFilename, StringComparison.OrdinalIgnoreCase) != -1) + { + if (File.Exists(segmentPath)) + { + return GetSegmentResult(segmentPath, segmentIndex, segmentLength, transcodingJob); + } + break; + } + } } } } + catch (IOException) + { + // May get an error if the file is locked + } + + await Task.Delay(100, cancellationToken).ConfigureAwait(false); } // if a different file is encoding, it's done @@ -349,34 +489,35 @@ namespace MediaBrowser.Api.Playback.Hls //return GetSegmentResult(segmentPath, segmentIndex); //} - // Wait for the file to stop being written to, then stream it - var length = new FileInfo(segmentPath).Length; - var eofCount = 0; - - while (eofCount < 10) - { - var info = new FileInfo(segmentPath); - - if (!info.Exists) - { - break; - } - - var newLength = info.Length; + //// Wait for the file to stop being written to, then stream it + //var length = new FileInfo(segmentPath).Length; + //var eofCount = 0; - if (newLength == length) - { - eofCount++; - } - else - { - eofCount = 0; - } - - length = newLength; - await Task.Delay(100, cancellationToken).ConfigureAwait(false); - } + //while (eofCount < 10) + //{ + // var info = new FileInfo(segmentPath); + + // if (!info.Exists) + // { + // break; + // } + + // var newLength = info.Length; + + // if (newLength == length) + // { + // eofCount++; + // } + // else + // { + // eofCount = 0; + // } + + // length = newLength; + // await Task.Delay(100, cancellationToken).ConfigureAwait(false); + //} + cancellationToken.ThrowIfCancellationRequested(); return GetSegmentResult(segmentPath, segmentIndex, segmentLength, transcodingJob); } @@ -400,7 +541,7 @@ namespace MediaBrowser.Api.Playback.Hls }); } - private async Task<object> GetAsync(GetMasterHlsVideoStream request, string method) + private async Task<object> GetMasterPlaylistInternal(StreamRequest request, string method) { var state = await GetState(request, CancellationToken.None).ConfigureAwait(false); @@ -428,23 +569,25 @@ namespace MediaBrowser.Api.Playback.Hls builder.AppendLine("#EXTM3U"); + var isLiveStream = (state.RunTimeTicks ?? 0) == 0; + var queryStringIndex = Request.RawUrl.IndexOf('?'); var queryString = queryStringIndex == -1 ? string.Empty : Request.RawUrl.Substring(queryStringIndex); - var isLiveStream = (state.RunTimeTicks ?? 0) == 0; - // Main stream var playlistUrl = isLiveStream ? "live.m3u8" : "main.m3u8"; playlistUrl += queryString; - var request = (GetMasterHlsVideoStream)state.Request; + var request = state.Request; var subtitleStreams = state.MediaSource .MediaStreams .Where(i => i.IsTextSubtitleStream) .ToList(); - var subtitleGroup = subtitleStreams.Count > 0 && request.SubtitleMethod == SubtitleDeliveryMethod.Hls ? + var subtitleGroup = subtitleStreams.Count > 0 && + (request is GetMasterHlsVideoPlaylist) && + ((GetMasterHlsVideoPlaylist)request).SubtitleMethod == SubtitleDeliveryMethod.Hls ? "subs" : null; @@ -452,7 +595,7 @@ namespace MediaBrowser.Api.Playback.Hls if (EnableAdaptiveBitrateStreaming(state, isLiveStream)) { - var requestedVideoBitrate = state.VideoRequest.VideoBitRate.Value; + var requestedVideoBitrate = state.VideoRequest == null ? 0 : state.VideoRequest.VideoBitRate ?? 0; // By default, vary by just 200k var variation = GetBitrateVariation(totalBitrate); @@ -522,7 +665,7 @@ namespace MediaBrowser.Api.Playback.Hls return false; } - var request = state.Request as GetMasterHlsVideoStream; + var request = state.Request as IMasterHlsRequest; if (request != null && !request.EnableAdaptiveBitrateStreaming) { return false; @@ -544,6 +687,11 @@ namespace MediaBrowser.Api.Playback.Hls return false; } + if (!state.IsOutputVideo) + { + return false; + } + // Having problems in android return false; //return state.VideoRequest.VideoBitRate.HasValue; @@ -599,7 +747,7 @@ namespace MediaBrowser.Api.Playback.Hls return variation; } - private async Task<object> GetPlaylistAsync(VideoStreamRequest request, string name) + private async Task<object> GetVariantPlaylistInternal(StreamRequest request, bool isOutputVideo, string name) { var state = await GetState(request, CancellationToken.None).ConfigureAwait(false); @@ -607,7 +755,7 @@ namespace MediaBrowser.Api.Playback.Hls builder.AppendLine("#EXTM3U"); builder.AppendLine("#EXT-X-VERSION:3"); - builder.AppendLine("#EXT-X-TARGETDURATION:" + state.SegmentLength.ToString(UsCulture)); + builder.AppendLine("#EXT-X-TARGETDURATION:" + (state.SegmentLength).ToString(UsCulture)); builder.AppendLine("#EXT-X-MEDIA-SEQUENCE:0"); var queryStringIndex = Request.RawUrl.IndexOf('?'); @@ -623,10 +771,11 @@ namespace MediaBrowser.Api.Playback.Hls builder.AppendLine("#EXTINF:" + length.ToString(UsCulture) + ","); - builder.AppendLine(string.Format("hlsdynamic/{0}/{1}.ts{2}", + builder.AppendLine(string.Format("hlsdynamic/{0}/{1}{2}{3}", name, index.ToString(UsCulture), + GetSegmentFileExtension(isOutputVideo), queryString)); seconds -= state.SegmentLength; @@ -642,7 +791,37 @@ namespace MediaBrowser.Api.Playback.Hls protected override string GetAudioArguments(StreamState state) { - var codec = state.OutputAudioCodec; + var codec = GetAudioEncoder(state.Request); + + if (!state.IsOutputVideo) + { + if (string.Equals(codec, "copy", StringComparison.OrdinalIgnoreCase)) + { + return "-acodec copy"; + } + + var audioTranscodeParams = new List<string>(); + + audioTranscodeParams.Add("-acodec " + codec); + + if (state.OutputAudioBitrate.HasValue) + { + audioTranscodeParams.Add("-ab " + state.OutputAudioBitrate.Value.ToString(UsCulture)); + } + + if (state.OutputAudioChannels.HasValue) + { + audioTranscodeParams.Add("-ac " + state.OutputAudioChannels.Value.ToString(UsCulture)); + } + + if (state.OutputAudioSampleRate.HasValue) + { + audioTranscodeParams.Add("-ar " + state.OutputAudioSampleRate.Value.ToString(UsCulture)); + } + + audioTranscodeParams.Add("-vn"); + return string.Join(" ", audioTranscodeParams.ToArray()); + } if (string.Equals(codec, "copy", StringComparison.OrdinalIgnoreCase)) { @@ -672,7 +851,12 @@ namespace MediaBrowser.Api.Playback.Hls protected override string GetVideoArguments(StreamState state) { - var codec = state.OutputVideoCodec; + if (!state.IsOutputVideo) + { + return string.Empty; + } + + var codec = GetVideoEncoder(state.VideoRequest); var args = "-codec:v:0 " + codec; @@ -682,30 +866,44 @@ namespace MediaBrowser.Api.Playback.Hls } // See if we can save come cpu cycles by avoiding encoding - if (codec.Equals("copy", StringComparison.OrdinalIgnoreCase)) + if (string.Equals(codec, "copy", StringComparison.OrdinalIgnoreCase)) { - return state.VideoStream != null && IsH264(state.VideoStream) ? - args + " -bsf:v h264_mp4toannexb" : - args; + if (state.VideoStream != null && IsH264(state.VideoStream)) + { + args += " -bsf:v h264_mp4toannexb"; + } + + args += " -flags -global_header -sc_threshold 0"; } + else + { + var keyFrameArg = string.Format(" -force_key_frames expr:gte(t,n_forced*{0})", + state.SegmentLength.ToString(UsCulture)); - var keyFrameArg = string.Format(" -force_key_frames expr:gte(t,n_forced*{0})", - state.SegmentLength.ToString(UsCulture)); + var hasGraphicalSubs = state.SubtitleStream != null && !state.SubtitleStream.IsTextSubtitleStream; - var hasGraphicalSubs = state.SubtitleStream != null && !state.SubtitleStream.IsTextSubtitleStream; + args += " " + GetVideoQualityParam(state, H264Encoder, true) + keyFrameArg; - args += " " + GetVideoQualityParam(state, H264Encoder, true) + keyFrameArg; + //args += " -mixed-refs 0 -refs 3 -x264opts b_pyramid=0:weightb=0:weightp=0"; - // Add resolution params, if specified - if (!hasGraphicalSubs) - { - args += GetOutputSizeParam(state, codec, false); + // Add resolution params, if specified + if (!hasGraphicalSubs) + { + args += GetOutputSizeParam(state, codec, false); + } + + // This is for internal graphical subs + if (hasGraphicalSubs) + { + args += GetGraphicalSubtitleParam(state, codec); + } + + args += " -flags +loop-global_header -sc_threshold 0"; } - // This is for internal graphical subs - if (hasGraphicalSubs) + if (!EnableSplitTranscoding(state)) { - args += GetGraphicalSubtitleParam(state, codec); + //args += " -copyts"; } return args; @@ -715,43 +913,103 @@ namespace MediaBrowser.Api.Playback.Hls { var threads = GetNumberOfThreads(state, false); - var inputModifier = GetInputModifier(state); + var inputModifier = GetInputModifier(state, false); // If isEncoding is true we're actually starting ffmpeg var startNumberParam = isEncoding ? GetStartNumber(state).ToString(UsCulture) : "0"; - if (state.EnableGenericHlsSegmenter) + var toTimeParam = string.Empty; + var timestampOffsetParam = string.Empty; + + if (EnableSplitTranscoding(state)) { - var outputTsArg = Path.Combine(Path.GetDirectoryName(outputPath), Path.GetFileNameWithoutExtension(outputPath)) + "%d.ts"; + var startTime = state.Request.StartTimeTicks ?? 0; + var durationSeconds = ApiEntryPoint.Instance.GetEncodingOptions().ThrottleThresholdInSeconds; + + var endTime = startTime + TimeSpan.FromSeconds(durationSeconds).Ticks; + endTime = Math.Min(endTime, state.RunTimeTicks.Value); + + if (endTime < state.RunTimeTicks.Value) + { + //toTimeParam = " -to " + MediaEncoder.GetTimeParameter(endTime); + toTimeParam = " -t " + MediaEncoder.GetTimeParameter(TimeSpan.FromSeconds(durationSeconds).Ticks); + } + } - return string.Format("{0} {1} -map_metadata -1 -threads {2} {3} {4} -flags -global_header -sc_threshold 0 {5} -f segment -segment_time {6} -segment_start_number {7} -segment_list \"{8}\" -y \"{9}\"", - inputModifier, - GetInputArgument(state), - threads, - GetMapArgs(state), - GetVideoArguments(state), - GetAudioArguments(state), - state.SegmentLength.ToString(UsCulture), - startNumberParam, - outputPath, - outputTsArg - ).Trim(); + if (state.IsOutputVideo && !string.Equals(state.OutputVideoCodec, "copy", StringComparison.OrdinalIgnoreCase) && (state.Request.StartTimeTicks ?? 0) > 0) + { + timestampOffsetParam = " -output_ts_offset " + MediaEncoder.GetTimeParameter(state.Request.StartTimeTicks ?? 0).ToString(CultureInfo.InvariantCulture); } - return string.Format("{0} {1} -map_metadata -1 -threads {2} {3} {4} -flags -global_header -copyts -sc_threshold 0 {5} -hls_time {6} -start_number {7} -hls_list_size {8} -y \"{9}\"", + var mapArgs = state.IsOutputVideo ? GetMapArgs(state) : string.Empty; + + //var outputTsArg = Path.Combine(Path.GetDirectoryName(outputPath), Path.GetFileNameWithoutExtension(outputPath)) + "%d" + GetSegmentFileExtension(state); + + //return string.Format("{0} {11} {1}{10} -map_metadata -1 -threads {2} {3} {4} {5} -f segment -segment_time {6} -segment_format mpegts -segment_list_type m3u8 -segment_start_number {7} -segment_list \"{8}\" -y \"{9}\"", + // inputModifier, + // GetInputArgument(state), + // threads, + // mapArgs, + // GetVideoArguments(state), + // GetAudioArguments(state), + // state.SegmentLength.ToString(UsCulture), + // startNumberParam, + // outputPath, + // outputTsArg, + // slowSeekParam, + // toTimeParam + // ).Trim(); + + return string.Format("{0}{11} {1} -map_metadata -1 -threads {2} {3} {4}{5} {6} -hls_time {7} -start_number {8} -hls_list_size {9} -y \"{10}\"", inputModifier, GetInputArgument(state), threads, - GetMapArgs(state), + mapArgs, GetVideoArguments(state), + timestampOffsetParam, GetAudioArguments(state), state.SegmentLength.ToString(UsCulture), startNumberParam, state.HlsListSize.ToString(UsCulture), - outputPath + outputPath, + toTimeParam ).Trim(); } + protected override bool EnableThrottling(StreamState state) + { + return !EnableSplitTranscoding(state); + } + + private bool EnableSplitTranscoding(StreamState state) + { + return false; + if (string.Equals(Request.QueryString["EnableSplitTranscoding"], "false", StringComparison.OrdinalIgnoreCase)) + { + return false; + } + + if (string.Equals(state.OutputVideoCodec, "copy", StringComparison.OrdinalIgnoreCase)) + { + return false; + } + + if (string.Equals(state.OutputAudioCodec, "copy", StringComparison.OrdinalIgnoreCase)) + { + return false; + } + + return state.RunTimeTicks.HasValue && state.IsOutputVideo; + } + + protected override bool EnableStreamCopy + { + get + { + return false; + } + } + /// <summary> /// Gets the segment file extension. /// </summary> @@ -759,7 +1017,12 @@ namespace MediaBrowser.Api.Playback.Hls /// <returns>System.String.</returns> protected override string GetSegmentFileExtension(StreamState state) { - return ".ts"; + return GetSegmentFileExtension(state.IsOutputVideo); + } + + protected string GetSegmentFileExtension(bool isOutputVideo) + { + return isOutputVideo ? ".ts" : ".ts"; } } } diff --git a/MediaBrowser.Api/Playback/Hls/HlsSegmentService.cs b/MediaBrowser.Api/Playback/Hls/HlsSegmentService.cs index 5d8c67abe..b44d7f660 100644 --- a/MediaBrowser.Api/Playback/Hls/HlsSegmentService.cs +++ b/MediaBrowser.Api/Playback/Hls/HlsSegmentService.cs @@ -14,8 +14,10 @@ namespace MediaBrowser.Api.Playback.Hls [Route("/Audio/{Id}/hls/{SegmentId}/stream.mp3", "GET")] [Route("/Audio/{Id}/hls/{SegmentId}/stream.aac", "GET")] [Api(Description = "Gets an Http live streaming segment file. Internal use only.")] - public class GetHlsAudioSegment + public class GetHlsAudioSegmentLegacy { + // TODO: Deprecate with new iOS app + /// <summary> /// Gets or sets the id. /// </summary> @@ -30,11 +32,30 @@ namespace MediaBrowser.Api.Playback.Hls } /// <summary> + /// Class GetHlsVideoStream + /// </summary> + [Route("/Videos/{Id}/stream.m3u8", "GET")] + [Api(Description = "Gets a video stream using HTTP live streaming.")] + public class GetHlsVideoStreamLegacy : VideoStreamRequest + { + // TODO: Deprecate with new iOS app + + [ApiMember(Name = "BaselineStreamAudioBitRate", Description = "Optional. Specify the audio bitrate for the baseline stream.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] + public int? BaselineStreamAudioBitRate { get; set; } + + [ApiMember(Name = "AppendBaselineStream", Description = "Optional. Whether or not to include a baseline audio-only stream in the master playlist.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")] + public bool AppendBaselineStream { get; set; } + + [ApiMember(Name = "TimeStampOffsetMs", Description = "Optional. Alter the timestamps in the playlist by a given amount, in ms. Default is 1000.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] + public int TimeStampOffsetMs { get; set; } + } + + /// <summary> /// Class GetHlsVideoSegment /// </summary> [Route("/Videos/{Id}/hls/{PlaylistId}/stream.m3u8", "GET")] [Api(Description = "Gets an Http live streaming segment file. Internal use only.")] - public class GetHlsPlaylist + public class GetHlsPlaylistLegacy { // TODO: Deprecate with new iOS app @@ -63,8 +84,10 @@ namespace MediaBrowser.Api.Playback.Hls /// </summary> [Route("/Videos/{Id}/hls/{PlaylistId}/{SegmentId}.ts", "GET")] [Api(Description = "Gets an Http live streaming segment file. Internal use only.")] - public class GetHlsVideoSegment : VideoStreamRequest + public class GetHlsVideoSegmentLegacy : VideoStreamRequest { + // TODO: Deprecate with new iOS app + public string PlaylistId { get; set; } /// <summary> @@ -85,7 +108,7 @@ namespace MediaBrowser.Api.Playback.Hls _config = config; } - public object Get(GetHlsPlaylist request) + public object Get(GetHlsPlaylistLegacy request) { var file = request.PlaylistId + Path.GetExtension(Request.PathInfo); file = Path.Combine(_appPaths.TranscodingTempPath, file); @@ -103,7 +126,7 @@ namespace MediaBrowser.Api.Playback.Hls /// </summary> /// <param name="request">The request.</param> /// <returns>System.Object.</returns> - public object Get(GetHlsVideoSegment request) + public object Get(GetHlsVideoSegmentLegacy request) { var file = request.SegmentId + Path.GetExtension(Request.PathInfo); file = Path.Combine(_config.ApplicationPaths.TranscodingTempPath, file); @@ -121,7 +144,7 @@ namespace MediaBrowser.Api.Playback.Hls /// </summary> /// <param name="request">The request.</param> /// <returns>System.Object.</returns> - public object Get(GetHlsAudioSegment request) + public object Get(GetHlsAudioSegmentLegacy request) { // TODO: Deprecate with new iOS app var file = request.SegmentId + Path.GetExtension(Request.PathInfo); diff --git a/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs b/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs index 626df59f2..d8e3423fc 100644 --- a/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs @@ -11,25 +11,6 @@ using System; namespace MediaBrowser.Api.Playback.Hls { - /// <summary> - /// Class GetHlsVideoStream - /// </summary> - [Route("/Videos/{Id}/stream.m3u8", "GET")] - [Api(Description = "Gets a video stream using HTTP live streaming.")] - public class GetHlsVideoStream : VideoStreamRequest - { - // TODO: Deprecate with new iOS app - - [ApiMember(Name = "BaselineStreamAudioBitRate", Description = "Optional. Specify the audio bitrate for the baseline stream.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] - public int? BaselineStreamAudioBitRate { get; set; } - - [ApiMember(Name = "AppendBaselineStream", Description = "Optional. Whether or not to include a baseline audio-only stream in the master playlist.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")] - public bool AppendBaselineStream { get; set; } - - [ApiMember(Name = "TimeStampOffsetMs", Description = "Optional. Alter the timestamps in the playlist by a given amount, in ms. Default is 1000.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] - public int TimeStampOffsetMs { get; set; } - } - [Route("/Videos/{Id}/live.m3u8", "GET")] [Api(Description = "Gets a video stream using HTTP live streaming.")] public class GetLiveHlsStream : VideoStreamRequest @@ -50,7 +31,7 @@ namespace MediaBrowser.Api.Playback.Hls /// </summary> /// <param name="request">The request.</param> /// <returns>System.Object.</returns> - public object Get(GetHlsVideoStream request) + public object Get(GetHlsVideoStreamLegacy request) { return ProcessRequest(request, false); } @@ -67,9 +48,9 @@ namespace MediaBrowser.Api.Playback.Hls /// <returns>System.String.</returns> protected override string GetAudioArguments(StreamState state) { - var codec = state.OutputAudioCodec; + var codec = GetAudioEncoder(state.Request); - if (codec.Equals("copy", StringComparison.OrdinalIgnoreCase)) + if (string.Equals(codec, "copy", StringComparison.OrdinalIgnoreCase)) { return "-codec:a:0 copy"; } @@ -102,7 +83,7 @@ namespace MediaBrowser.Api.Playback.Hls /// <returns>System.String.</returns> protected override string GetVideoArguments(StreamState state) { - var codec = state.OutputVideoCodec; + var codec = GetVideoEncoder(state.VideoRequest); var args = "-codec:v:0 " + codec; diff --git a/MediaBrowser.Api/Playback/MediaInfoService.cs b/MediaBrowser.Api/Playback/MediaInfoService.cs index 72d4961cd..0b7b50134 100644 --- a/MediaBrowser.Api/Playback/MediaInfoService.cs +++ b/MediaBrowser.Api/Playback/MediaInfoService.cs @@ -46,7 +46,7 @@ namespace MediaBrowser.Api.Playback } [Route("/Playback/BitrateTest", "GET")] - public class GetBitrateTestBytes : IReturn<PlaybackInfoResponse> + public class GetBitrateTestBytes { [ApiMember(Name = "Size", Description = "Size", IsRequired = true, DataType = "int", ParameterType = "query", Verb = "GET")] public long Size { get; set; } diff --git a/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs b/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs index 041b4ea41..910ac18e7 100644 --- a/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs +++ b/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs @@ -1,12 +1,10 @@ -using System.Globalization; -using MediaBrowser.Common.IO; +using MediaBrowser.Common.IO; using MediaBrowser.Common.Net; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Devices; using MediaBrowser.Controller.Dlna; using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.MediaEncoding; using MediaBrowser.Controller.Net; using MediaBrowser.Model.IO; @@ -15,6 +13,7 @@ using MediaBrowser.Model.Serialization; using ServiceStack.Web; using System; using System.Collections.Generic; +using System.Globalization; using System.IO; using System.Threading; using System.Threading.Tasks; diff --git a/MediaBrowser.Api/Playback/Progressive/VideoService.cs b/MediaBrowser.Api/Playback/Progressive/VideoService.cs index 27482c50c..ebd72b2ce 100644 --- a/MediaBrowser.Api/Playback/Progressive/VideoService.cs +++ b/MediaBrowser.Api/Playback/Progressive/VideoService.cs @@ -15,7 +15,7 @@ using System.IO; namespace MediaBrowser.Api.Playback.Progressive { /// <summary> - /// Class GetAudioStream + /// Class GetVideoStream /// </summary> [Route("/Videos/{Id}/stream.ts", "GET")] [Route("/Videos/{Id}/stream.webm", "GET")] @@ -89,7 +89,7 @@ namespace MediaBrowser.Api.Playback.Progressive protected override string GetCommandLineArguments(string outputPath, StreamState state, bool isEncoding) { // Get the output codec name - var videoCodec = state.OutputVideoCodec; + var videoCodec = GetVideoEncoder(state.VideoRequest); var format = string.Empty; var keyFrame = string.Empty; @@ -183,11 +183,11 @@ namespace MediaBrowser.Api.Playback.Progressive } // Get the output codec name - var codec = state.OutputAudioCodec; + var codec = GetAudioEncoder(state.Request); var args = "-codec:a:0 " + codec; - if (codec.Equals("copy", StringComparison.OrdinalIgnoreCase)) + if (string.Equals(codec, "copy", StringComparison.OrdinalIgnoreCase)) { return args; } diff --git a/MediaBrowser.Api/Playback/StreamState.cs b/MediaBrowser.Api/Playback/StreamState.cs index 2d1e896db..02b7720a4 100644 --- a/MediaBrowser.Api/Playback/StreamState.cs +++ b/MediaBrowser.Api/Playback/StreamState.cs @@ -41,7 +41,7 @@ namespace MediaBrowser.Api.Playback public string InputContainer { get; set; } public MediaSourceInfo MediaSource { get; set; } - + public MediaStream AudioStream { get; set; } public MediaStream VideoStream { get; set; } public MediaStream SubtitleStream { get; set; } @@ -57,6 +57,10 @@ namespace MediaBrowser.Api.Playback public MediaProtocol InputProtocol { get; set; } + public bool IsOutputVideo + { + get { return Request is VideoStreamRequest; } + } public bool IsInputVideo { get; set; } public bool IsInputArchive { get; set; } @@ -66,7 +70,6 @@ namespace MediaBrowser.Api.Playback public List<string> PlayableStreamFileNames { get; set; } public int SegmentLength = 3; - public bool EnableGenericHlsSegmenter = false; public int HlsListSize { get diff --git a/MediaBrowser.Api/Playback/TranscodingThrottler.cs b/MediaBrowser.Api/Playback/TranscodingThrottler.cs index ece455009..fec3dda86 100644 --- a/MediaBrowser.Api/Playback/TranscodingThrottler.cs +++ b/MediaBrowser.Api/Playback/TranscodingThrottler.cs @@ -42,7 +42,7 @@ namespace MediaBrowser.Api.Playback var options = GetOptions(); - if (options.EnableThrottling && IsThrottleAllowed(_job, options.ThrottleThresholdSeconds)) + if (options.EnableThrottling && IsThrottleAllowed(_job, options.ThrottleThresholdInSeconds)) { PauseTranscoding(); } diff --git a/MediaBrowser.Api/PluginService.cs b/MediaBrowser.Api/PluginService.cs index 4bd78f1f5..eb49914eb 100644 --- a/MediaBrowser.Api/PluginService.cs +++ b/MediaBrowser.Api/PluginService.cs @@ -1,7 +1,9 @@ using MediaBrowser.Common; using MediaBrowser.Common.Extensions; +using MediaBrowser.Common.Net; using MediaBrowser.Common.Security; using MediaBrowser.Common.Updates; +using MediaBrowser.Controller.Devices; using MediaBrowser.Controller.Net; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Plugins; @@ -25,6 +27,7 @@ namespace MediaBrowser.Api [Authenticated] public class GetPlugins : IReturn<List<PluginInfo>> { + public bool? IsAppStoreEnabled { get; set; } } /// <summary> @@ -39,7 +42,7 @@ namespace MediaBrowser.Api /// </summary> /// <value>The id.</value> [ApiMember(Name = "Id", Description = "Plugin Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "DELETE")] - public Guid Id { get; set; } + public string Id { get; set; } } /// <summary> @@ -54,7 +57,7 @@ namespace MediaBrowser.Api /// </summary> /// <value>The id.</value> [ApiMember(Name = "Id", Description = "Plugin Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] - public Guid Id { get; set; } + public string Id { get; set; } } /// <summary> @@ -69,7 +72,7 @@ namespace MediaBrowser.Api /// </summary> /// <value>The id.</value> [ApiMember(Name = "Id", Description = "Plugin Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")] - public Guid Id { get; set; } + public string Id { get; set; } /// <summary> /// The raw Http Request Input Stream @@ -133,8 +136,10 @@ namespace MediaBrowser.Api private readonly ISecurityManager _securityManager; private readonly IInstallationManager _installationManager; + private readonly INetworkManager _network; + private readonly IDeviceManager _deviceManager; - public PluginService(IJsonSerializer jsonSerializer, IApplicationHost appHost, ISecurityManager securityManager, IInstallationManager installationManager) + public PluginService(IJsonSerializer jsonSerializer, IApplicationHost appHost, ISecurityManager securityManager, IInstallationManager installationManager, INetworkManager network, IDeviceManager deviceManager) : base() { if (jsonSerializer == null) @@ -145,6 +150,8 @@ namespace MediaBrowser.Api _appHost = appHost; _securityManager = securityManager; _installationManager = installationManager; + _network = network; + _deviceManager = deviceManager; _jsonSerializer = jsonSerializer; } @@ -164,13 +171,15 @@ namespace MediaBrowser.Api { var result = await _securityManager.GetRegistrationStatus(request.Name).ConfigureAwait(false); - return ToOptimizedResult(new RegistrationInfo + var info = new RegistrationInfo { ExpirationDate = result.ExpirationDate, IsRegistered = result.IsRegistered, IsTrial = result.TrialVersion, Name = request.Name - }); + }; + + return ToOptimizedResult(info); } /// <summary> @@ -181,6 +190,7 @@ namespace MediaBrowser.Api public async Task<object> Get(GetPlugins request) { var result = _appHost.Plugins.OrderBy(p => p.Name).Select(p => p.GetPluginInfo()).ToList(); + var requireAppStoreEnabled = request.IsAppStoreEnabled.HasValue && request.IsAppStoreEnabled.Value; // Don't fail just on account of image url's try @@ -197,10 +207,26 @@ namespace MediaBrowser.Api plugin.ImageUrl = pkg.thumbImage; } } + + if (requireAppStoreEnabled) + { + result = result + .Where(plugin => + { + var pkg = packages.FirstOrDefault(i => !string.IsNullOrWhiteSpace(i.guid) && new Guid(plugin.Id).Equals(new Guid(i.guid))); + return pkg != null && pkg.enableInAppStore; + + }) + .ToList(); + } } catch { - + // Play it safe here + if (requireAppStoreEnabled) + { + result = new List<PluginInfo>(); + } } return ToOptimizedSerializedResultUsingCache(result); @@ -213,7 +239,8 @@ namespace MediaBrowser.Api /// <returns>System.Object.</returns> public object Get(GetPluginConfiguration request) { - var plugin = _appHost.Plugins.First(p => p.Id == request.Id); + var guid = new Guid(request.Id); + var plugin = _appHost.Plugins.First(p => p.Id == guid); var dateModified = plugin.ConfigurationDateLastModified; @@ -272,7 +299,8 @@ namespace MediaBrowser.Api /// <param name="request">The request.</param> public void Delete(UninstallPlugin request) { - var plugin = _appHost.Plugins.First(p => p.Id == request.Id); + var guid = new Guid(request.Id); + var plugin = _appHost.Plugins.First(p => p.Id == guid); _installationManager.UninstallPlugin(plugin); } diff --git a/MediaBrowser.Api/Reports/Common/HeaderMetadata.cs b/MediaBrowser.Api/Reports/Common/HeaderMetadata.cs new file mode 100644 index 000000000..3cb8f722d --- /dev/null +++ b/MediaBrowser.Api/Reports/Common/HeaderMetadata.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace MediaBrowser.Api.Reports +{ + public enum HeaderMetadata + { + None, + Name, + PremiereDate, + DateAdded, + ReleaseDate, + Runtime, + PlayCount, + Season, + SeasonNumber, + Series, + Network, + Year, + ParentalRating, + CommunityRating, + Trailers, + Specials, + GameSystem, + Players, + AlbumArtist, + Album, + Disc, + Track, + Audio, + EmbeddedImage, + Video, + Resolution, + Subtitles, + Genres, + Countries, + StatusImage, + Tracks, + EpisodeSeries, + EpisodeSeason, + AudioAlbumArtist, + MusicArtist, + AudioAlbum, + Status + } +} diff --git a/MediaBrowser.Api/Reports/Common/ItemViewType.cs b/MediaBrowser.Api/Reports/Common/ItemViewType.cs new file mode 100644 index 000000000..3e09a290d --- /dev/null +++ b/MediaBrowser.Api/Reports/Common/ItemViewType.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace MediaBrowser.Api.Reports +{ + public enum ItemViewType + { + None, + Detail, + Edit, + List, + ItemByNameDetails, + StatusImage, + EmbeddedImage, + SubtitleImage, + TrailersImage, + SpecialsImage + } +} diff --git a/MediaBrowser.Api/Reports/Common/ReportBuilderBase.cs b/MediaBrowser.Api/Reports/Common/ReportBuilderBase.cs new file mode 100644 index 000000000..af6dc997c --- /dev/null +++ b/MediaBrowser.Api/Reports/Common/ReportBuilderBase.cs @@ -0,0 +1,229 @@ +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.Audio; +using MediaBrowser.Controller.Entities.TV; +using MediaBrowser.Controller.Library; +using MediaBrowser.Model.Channels; +using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MediaBrowser.Api.Reports +{ + /// <summary> A report builder base. </summary> + public class ReportBuilderBase + { + /// <summary> + /// Initializes a new instance of the MediaBrowser.Api.Reports.ReportBuilderBase class. </summary> + /// <param name="libraryManager"> Manager for library. </param> + public ReportBuilderBase(ILibraryManager libraryManager) + { + _libraryManager = libraryManager; + } + + /// <summary> Manager for library. </summary> + protected readonly ILibraryManager _libraryManager; + + /// <summary> Gets audio stream. </summary> + /// <param name="item"> The item. </param> + /// <returns> The audio stream. </returns> + protected string GetAudioStream(BaseItem item) + { + var stream = GetStream(item, MediaStreamType.Audio); + if (stream != null) + return stream.Codec.ToUpper() == "DCA" ? stream.Profile : stream.Codec. + ToUpper(); + + return string.Empty; + } + + /// <summary> Gets an episode. </summary> + /// <param name="item"> The item. </param> + /// <returns> The episode. </returns> + protected string GetEpisode(BaseItem item) + { + + if (item.GetClientTypeName() == ChannelMediaContentType.Episode.ToString() && item.ParentIndexNumber != null) + return "Season " + item.ParentIndexNumber; + else + return item.Name; + } + + /// <summary> Gets a genre. </summary> + /// <param name="name"> The name. </param> + /// <returns> The genre. </returns> + protected Genre GetGenre(string name) + { + if (string.IsNullOrEmpty(name)) + return null; + return _libraryManager.GetGenre(name); + } + + /// <summary> Gets genre identifier. </summary> + /// <param name="name"> The name. </param> + /// <returns> The genre identifier. </returns> + protected string GetGenreID(string name) + { + if (string.IsNullOrEmpty(name)) + return string.Empty; + return string.Format("{0:N}", + GetGenre(name).Id); + } + + /// <summary> Gets list as string. </summary> + /// <param name="items"> The items. </param> + /// <returns> The list as string. </returns> + protected string GetListAsString(List<string> items) + { + return String.Join("; ", items); + } + + /// <summary> Gets media source information. </summary> + /// <param name="item"> The item. </param> + /// <returns> The media source information. </returns> + protected MediaSourceInfo GetMediaSourceInfo(BaseItem item) + { + var mediaSource = item as IHasMediaSources; + if (mediaSource != null) + return mediaSource.GetMediaSources(false).FirstOrDefault(n => n.Type == MediaSourceType.Default); + + return null; + } + + /// <summary> Gets an object. </summary> + /// <typeparam name="T"> Generic type parameter. </typeparam> + /// <typeparam name="R"> Type of the r. </typeparam> + /// <param name="item"> The item. </param> + /// <param name="function"> The function. </param> + /// <param name="defaultValue"> The default value. </param> + /// <returns> The object. </returns> + protected R GetObject<T, R>(BaseItem item, Func<T, R> function, R defaultValue = default(R)) where T : class + { + var value = item as T; + if (value != null && function != null) + return function(value); + else + return defaultValue; + } + + /// <summary> Gets a person. </summary> + /// <param name="name"> The name. </param> + /// <returns> The person. </returns> + protected Person GetPerson(string name) + { + if (string.IsNullOrEmpty(name)) + return null; + return _libraryManager.GetPerson(name); + } + + /// <summary> Gets person identifier. </summary> + /// <param name="name"> The name. </param> + /// <returns> The person identifier. </returns> + protected string GetPersonID(string name) + { + if (string.IsNullOrEmpty(name)) + return string.Empty; + return string.Format("{0:N}", + GetPerson(name).Id); + } + + /// <summary> Gets runtime date time. </summary> + /// <param name="runtime"> The runtime. </param> + /// <returns> The runtime date time. </returns> + protected double? GetRuntimeDateTime(long? runtime) + { + if (runtime.HasValue) + return Math.Ceiling(new TimeSpan(runtime.Value).TotalMinutes); + return null; + } + + /// <summary> Gets series production year. </summary> + /// <param name="item"> The item. </param> + /// <returns> The series production year. </returns> + protected string GetSeriesProductionYear(BaseItem item) + { + + string productionYear = item.ProductionYear.ToString(); + var series = item as Series; + if (series == null) + { + if (item.ProductionYear == null || item.ProductionYear == 0) + return string.Empty; + return productionYear; + } + + if (series.Status == SeriesStatus.Continuing) + return productionYear += "-Present"; + + if (series.EndDate != null && series.EndDate.Value.Year != series.ProductionYear) + return productionYear += "-" + series.EndDate.Value.Year; + + return productionYear; + } + + /// <summary> Gets a stream. </summary> + /// <param name="item"> The item. </param> + /// <param name="streamType"> Type of the stream. </param> + /// <returns> The stream. </returns> + protected MediaStream GetStream(BaseItem item, MediaStreamType streamType) + { + var itemInfo = GetMediaSourceInfo(item); + if (itemInfo != null) + return itemInfo.MediaStreams.FirstOrDefault(n => n.Type == streamType); + + return null; + } + + /// <summary> Gets a studio. </summary> + /// <param name="name"> The name. </param> + /// <returns> The studio. </returns> + protected Studio GetStudio(string name) + { + if (string.IsNullOrEmpty(name)) + return null; + return _libraryManager.GetStudio(name); + } + + /// <summary> Gets studio identifier. </summary> + /// <param name="name"> The name. </param> + /// <returns> The studio identifier. </returns> + protected string GetStudioID(string name) + { + if (string.IsNullOrEmpty(name)) + return string.Empty; + return string.Format("{0:N}", + GetStudio(name).Id); + } + + /// <summary> Gets video resolution. </summary> + /// <param name="item"> The item. </param> + /// <returns> The video resolution. </returns> + protected string GetVideoResolution(BaseItem item) + { + var stream = GetStream(item, + MediaStreamType.Video); + if (stream != null && stream.Width != null) + return string.Format("{0} * {1}", + stream.Width, + (stream.Height != null ? stream.Height.ToString() : "-")); + + return string.Empty; + } + + /// <summary> Gets video stream. </summary> + /// <param name="item"> The item. </param> + /// <returns> The video stream. </returns> + protected string GetVideoStream(BaseItem item) + { + var stream = GetStream(item, MediaStreamType.Video); + if (stream != null) + return stream.Codec.ToUpper(); + + return string.Empty; + } + + } +} diff --git a/MediaBrowser.Api/Reports/Common/ReportExportType.cs b/MediaBrowser.Api/Reports/Common/ReportExportType.cs new file mode 100644 index 000000000..05f27f72e --- /dev/null +++ b/MediaBrowser.Api/Reports/Common/ReportExportType.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace MediaBrowser.Api.Reports +{ + public enum ReportExportType + { + CSV, + Excel + } +} diff --git a/MediaBrowser.Api/Reports/Common/ReportFieldType.cs b/MediaBrowser.Api/Reports/Common/ReportFieldType.cs new file mode 100644 index 000000000..58523657a --- /dev/null +++ b/MediaBrowser.Api/Reports/Common/ReportFieldType.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace MediaBrowser.Api.Reports +{ + public enum ReportFieldType + { + String, + Boolean, + Date, + Time, + DateTime, + Int, + Image, + Object, + Minutes + } +} diff --git a/MediaBrowser.Api/Reports/Common/ReportHeaderIdType.cs b/MediaBrowser.Api/Reports/Common/ReportHeaderIdType.cs new file mode 100644 index 000000000..58c118151 --- /dev/null +++ b/MediaBrowser.Api/Reports/Common/ReportHeaderIdType.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace MediaBrowser.Api.Reports +{ + public enum ReportHeaderIdType + { + Row, + Item + } +} diff --git a/MediaBrowser.Api/Reports/Common/ReportHelper.cs b/MediaBrowser.Api/Reports/Common/ReportHelper.cs new file mode 100644 index 000000000..a557248c6 --- /dev/null +++ b/MediaBrowser.Api/Reports/Common/ReportHelper.cs @@ -0,0 +1,101 @@ +using MediaBrowser.Controller.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MediaBrowser.Api.Reports +{ + public class ReportHelper + { + /// <summary> Gets java script localized string. </summary> + /// <param name="phrase"> The phrase. </param> + /// <returns> The java script localized string. </returns> + public static string GetJavaScriptLocalizedString(string phrase) + { + var dictionary = BaseItem.LocalizationManager.GetJavaScriptLocalizationDictionary(BaseItem.ConfigurationManager.Configuration.UICulture); + + string value; + + if (dictionary.TryGetValue(phrase, out value)) + { + return value; + } + + return phrase; + } + + /// <summary> Gets server localized string. </summary> + /// <param name="phrase"> The phrase. </param> + /// <returns> The server localized string. </returns> + public static string GetServerLocalizedString(string phrase) + { + return BaseItem.LocalizationManager.GetLocalizedString(phrase, BaseItem.ConfigurationManager.Configuration.UICulture); + } + + /// <summary> Gets row type. </summary> + /// <param name="rowType"> The type. </param> + /// <returns> The row type. </returns> + public static ReportViewType GetRowType(string rowType) + { + if (string.IsNullOrEmpty(rowType)) + return ReportViewType.BaseItem; + + ReportViewType rType; + + if (!Enum.TryParse<ReportViewType>(rowType, out rType)) + return ReportViewType.BaseItem; + + return rType; + } + + /// <summary> Gets header metadata type. </summary> + /// <param name="header"> The header. </param> + /// <returns> The header metadata type. </returns> + public static HeaderMetadata GetHeaderMetadataType(string header) + { + if (string.IsNullOrEmpty(header)) + return HeaderMetadata.None; + + HeaderMetadata rType; + + if (!Enum.TryParse<HeaderMetadata>(header, out rType)) + return HeaderMetadata.None; + + return rType; + } + + /// <summary> Convert field to string. </summary> + /// <typeparam name="T"> Generic type parameter. </typeparam> + /// <param name="value"> The value. </param> + /// <param name="fieldType"> Type of the field. </param> + /// <returns> The field converted to string. </returns> + public static string ConvertToString<T>(T value, ReportFieldType fieldType) + { + if (value == null) + return ""; + switch (fieldType) + { + case ReportFieldType.String: + return value.ToString(); + case ReportFieldType.Boolean: + return value.ToString(); + case ReportFieldType.Date: + return string.Format("{0:d}", value); + case ReportFieldType.Time: + return string.Format("{0:t}", value); + case ReportFieldType.DateTime: + return string.Format("{0:d}", value); + case ReportFieldType.Minutes: + return string.Format("{0}mn", value); + case ReportFieldType.Int: + return string.Format("", value); + default: + if (value is Guid) + return string.Format("{0:N}", value); + return value.ToString(); + } + } + } +} diff --git a/MediaBrowser.Api/Reports/Common/ReportViewType.cs b/MediaBrowser.Api/Reports/Common/ReportViewType.cs new file mode 100644 index 000000000..efdfcb0e7 --- /dev/null +++ b/MediaBrowser.Api/Reports/Common/ReportViewType.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace MediaBrowser.Api.Reports +{ + public enum ReportViewType + { + MusicArtist, + MusicAlbum, + Book, + BoxSet, + Episode, + Game, + Video, + Movie, + MusicVideo, + Trailer, + Season, + Series, + Audio, + BaseItem, + Artist + } +} diff --git a/MediaBrowser.Api/Reports/Data/ReportBuilder.cs b/MediaBrowser.Api/Reports/Data/ReportBuilder.cs new file mode 100644 index 000000000..00ce18317 --- /dev/null +++ b/MediaBrowser.Api/Reports/Data/ReportBuilder.cs @@ -0,0 +1,589 @@ +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.Audio; +using MediaBrowser.Controller.Entities.Movies; +using MediaBrowser.Controller.Entities.TV; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Localization; +using MediaBrowser.Model.Channels; +using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Querying; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Text; +using System.Threading.Tasks; + +namespace MediaBrowser.Api.Reports +{ + /// <summary> A report builder. </summary> + /// <seealso cref="T:MediaBrowser.Api.Reports.ReportBuilderBase"/> + public class ReportBuilder : ReportBuilderBase + { + + /// <summary> + /// Initializes a new instance of the MediaBrowser.Api.Reports.ReportBuilder class. </summary> + /// <param name="libraryManager"> Manager for library. </param> + public ReportBuilder(ILibraryManager libraryManager) + : base(libraryManager) + { + } + + private Func<bool, string> GetBoolString = s => s == true ? "x" : ""; + + public ReportResult GetReportResult(BaseItem[] items, ReportViewType reportRowType, BaseReportRequest request) + { + List<HeaderMetadata> headersMetadata = this.GetFilteredReportHeaderMetadata(reportRowType, request); + + var headers = GetReportHeaders(reportRowType, headersMetadata); + var rows = GetReportRows(items, headersMetadata); + + ReportResult result = new ReportResult { Headers = headers }; + HeaderMetadata groupBy = ReportHelper.GetHeaderMetadataType(request.GroupBy); + int i = headers.FindIndex(x => x.FieldName == groupBy); + if (groupBy != HeaderMetadata.None && i > 0) + { + var rowsGroup = rows.SelectMany(x => x.Columns[i].Name.Split(';'), (x, g) => new { Genre = g.Trim(), Rows = x }) + .GroupBy(x => x.Genre) + .OrderBy(x => x.Key) + .Select(x => new ReportGroup { Name = x.Key, Rows = x.Select(r => r.Rows).ToList() }); + + result.Groups = rowsGroup.ToList(); + result.IsGrouped = true; + } + else + { + result.Rows = rows; + result.IsGrouped = false; + } + + return result; + } + + public List<ReportHeader> GetReportHeaders(ReportViewType reportRowType, BaseReportRequest request) + { + List<ReportHeader> headersMetadata = this.GetReportHeaders(reportRowType); + if (request != null && !string.IsNullOrEmpty(request.ReportColumns)) + { + List<HeaderMetadata> headersMetadataFiltered = this.GetFilteredReportHeaderMetadata(reportRowType, request); + foreach (ReportHeader reportHeader in headersMetadata) + { + if (!headersMetadataFiltered.Contains(reportHeader.FieldName)) + { + reportHeader.Visible = false; + } + } + + + } + + return headersMetadata; + } + + public List<ReportHeader> GetReportHeaders(ReportViewType reportRowType, List<HeaderMetadata> headersMetadata = null) + { + if (headersMetadata == null) + headersMetadata = this.GetDefaultReportHeaderMetadata(reportRowType); + + List<ReportOptions<BaseItem>> options = new List<ReportOptions<BaseItem>>(); + foreach (HeaderMetadata header in headersMetadata) + { + options.Add(GetReportOption(header)); + } + + + List<ReportHeader> headers = new List<ReportHeader>(); + foreach (ReportOptions<BaseItem> option in options) + { + headers.Add(option.Header); + } + return headers; + } + + private List<ReportRow> GetReportRows(IEnumerable<BaseItem> items, List<HeaderMetadata> headersMetadata) + { + List<ReportOptions<BaseItem>> options = new List<ReportOptions<BaseItem>>(); + foreach (HeaderMetadata header in headersMetadata) + { + options.Add(GetReportOption(header)); + } + + var rows = new List<ReportRow>(); + + foreach (BaseItem item in items) + { + ReportRow rRow = GetRow(item); + foreach (ReportOptions<BaseItem> option in options) + { + object itemColumn = option.Column != null ? option.Column(item, rRow) : ""; + object itemId = option.ItemID != null ? option.ItemID(item) : ""; + ReportItem rItem = new ReportItem + { + Name = ReportHelper.ConvertToString(itemColumn, option.Header.HeaderFieldType), + Id = ReportHelper.ConvertToString(itemId, ReportFieldType.Object) + }; + rRow.Columns.Add(rItem); + } + + rows.Add(rRow); + } + + return rows; + } + + /// <summary> Gets a row. </summary> + /// <param name="item"> The item. </param> + /// <returns> The row. </returns> + private ReportRow GetRow(BaseItem item) + { + var hasTrailers = item as IHasTrailers; + var hasSpecialFeatures = item as IHasSpecialFeatures; + var video = item as Video; + ReportRow rRow = new ReportRow + { + Id = item.Id.ToString("N"), + HasLockData = item.IsLocked, + IsUnidentified = item.IsUnidentified, + HasLocalTrailer = hasTrailers != null ? hasTrailers.GetTrailerIds().Count() > 0 : false, + HasImageTagsPrimary = (item.ImageInfos != null && item.ImageInfos.Count(n => n.Type == ImageType.Primary) > 0), + HasImageTagsBackdrop = (item.ImageInfos != null && item.ImageInfos.Count(n => n.Type == ImageType.Backdrop) > 0), + HasImageTagsLogo = (item.ImageInfos != null && item.ImageInfos.Count(n => n.Type == ImageType.Logo) > 0), + HasSpecials = hasSpecialFeatures != null ? hasSpecialFeatures.SpecialFeatureIds.Count > 0 : false, + HasSubtitles = video != null ? video.HasSubtitles : false, + RowType = ReportHelper.GetRowType(item.GetClientTypeName()) + }; + return rRow; + } + public List<HeaderMetadata> GetFilteredReportHeaderMetadata(ReportViewType reportRowType, BaseReportRequest request) + { + if (request != null && !string.IsNullOrEmpty(request.ReportColumns)) + { + var s = request.ReportColumns.Split('|').Select(x => ReportHelper.GetHeaderMetadataType(x)).Where(x => x != HeaderMetadata.None); + return s.ToList(); + } + else + return this.GetDefaultReportHeaderMetadata(reportRowType); + + } + + public List<HeaderMetadata> GetDefaultReportHeaderMetadata(ReportViewType reportRowType) + { + switch (reportRowType) + { + case ReportViewType.Season: + return new List<HeaderMetadata> + { + HeaderMetadata.StatusImage, + HeaderMetadata.Series, + HeaderMetadata.Season, + HeaderMetadata.SeasonNumber, + HeaderMetadata.DateAdded, + HeaderMetadata.Year, + HeaderMetadata.Genres + }; + + case ReportViewType.Series: + return new List<HeaderMetadata> + { + HeaderMetadata.StatusImage, + HeaderMetadata.Name, + HeaderMetadata.Network, + HeaderMetadata.DateAdded, + HeaderMetadata.Year, + HeaderMetadata.Genres, + HeaderMetadata.ParentalRating, + HeaderMetadata.CommunityRating, + HeaderMetadata.Runtime, + HeaderMetadata.Trailers, + HeaderMetadata.Specials + }; + + case ReportViewType.MusicAlbum: + return new List<HeaderMetadata> + { + HeaderMetadata.StatusImage, + HeaderMetadata.Name, + HeaderMetadata.AlbumArtist, + HeaderMetadata.DateAdded, + HeaderMetadata.ReleaseDate, + HeaderMetadata.Tracks, + HeaderMetadata.Year, + HeaderMetadata.Genres + }; + + case ReportViewType.MusicArtist: + return new List<HeaderMetadata> + { + HeaderMetadata.StatusImage, + HeaderMetadata.MusicArtist, + HeaderMetadata.Countries, + HeaderMetadata.DateAdded, + HeaderMetadata.Year, + HeaderMetadata.Genres + }; + + case ReportViewType.Game: + return new List<HeaderMetadata> + { + HeaderMetadata.StatusImage, + HeaderMetadata.Name, + HeaderMetadata.GameSystem, + HeaderMetadata.DateAdded, + HeaderMetadata.ReleaseDate, + HeaderMetadata.ParentalRating, + HeaderMetadata.CommunityRating, + HeaderMetadata.Players, + HeaderMetadata.Year, + HeaderMetadata.Genres, + HeaderMetadata.Trailers + }; + + case ReportViewType.Movie: + return new List<HeaderMetadata> + { + HeaderMetadata.StatusImage, + HeaderMetadata.Name, + HeaderMetadata.DateAdded, + HeaderMetadata.ReleaseDate, + HeaderMetadata.Year, + HeaderMetadata.Genres, + HeaderMetadata.ParentalRating, + HeaderMetadata.CommunityRating, + HeaderMetadata.Runtime, + HeaderMetadata.Video, + HeaderMetadata.Resolution, + HeaderMetadata.Audio, + HeaderMetadata.Subtitles, + HeaderMetadata.Trailers, + HeaderMetadata.Specials + }; + + case ReportViewType.Book: + return new List<HeaderMetadata> + { + HeaderMetadata.StatusImage, + HeaderMetadata.Name, + HeaderMetadata.DateAdded, + HeaderMetadata.ReleaseDate, + HeaderMetadata.Year, + HeaderMetadata.Genres, + HeaderMetadata.ParentalRating, + HeaderMetadata.CommunityRating + }; + + case ReportViewType.BoxSet: + return new List<HeaderMetadata> + { + HeaderMetadata.StatusImage, + HeaderMetadata.Name, + HeaderMetadata.DateAdded, + HeaderMetadata.ReleaseDate, + HeaderMetadata.Year, + HeaderMetadata.Genres, + HeaderMetadata.ParentalRating, + HeaderMetadata.CommunityRating, + HeaderMetadata.Trailers + }; + + case ReportViewType.Audio: + return new List<HeaderMetadata> + { + HeaderMetadata.StatusImage, + HeaderMetadata.Name, + HeaderMetadata.AudioAlbumArtist, + HeaderMetadata.AudioAlbum, + HeaderMetadata.Disc, + HeaderMetadata.Track, + HeaderMetadata.DateAdded, + HeaderMetadata.ReleaseDate, + HeaderMetadata.Year, + HeaderMetadata.Genres, + HeaderMetadata.ParentalRating, + HeaderMetadata.CommunityRating, + HeaderMetadata.Runtime, + HeaderMetadata.Audio + }; + + case ReportViewType.Episode: + return new List<HeaderMetadata> + { + HeaderMetadata.StatusImage, + HeaderMetadata.Name, + HeaderMetadata.EpisodeSeries, + HeaderMetadata.Season, + HeaderMetadata.DateAdded, + HeaderMetadata.ReleaseDate, + HeaderMetadata.Year, + HeaderMetadata.Genres, + HeaderMetadata.ParentalRating, + HeaderMetadata.CommunityRating, + HeaderMetadata.Runtime, + HeaderMetadata.Video, + HeaderMetadata.Resolution, + HeaderMetadata.Audio, + HeaderMetadata.Subtitles, + HeaderMetadata.Trailers, + HeaderMetadata.Specials + }; + + case ReportViewType.Video: + case ReportViewType.MusicVideo: + case ReportViewType.Trailer: + case ReportViewType.BaseItem: + default: + return new List<HeaderMetadata> + { + HeaderMetadata.StatusImage, + HeaderMetadata.Name, + HeaderMetadata.DateAdded, + HeaderMetadata.ReleaseDate, + HeaderMetadata.Year, + HeaderMetadata.Genres, + HeaderMetadata.ParentalRating, + HeaderMetadata.CommunityRating, + HeaderMetadata.Runtime, + HeaderMetadata.Video, + HeaderMetadata.Resolution, + HeaderMetadata.Audio, + HeaderMetadata.Subtitles, + HeaderMetadata.Trailers, + HeaderMetadata.Specials + }; + + } + + } + + /// <summary> Gets report option. </summary> + /// <param name="header"> The header. </param> + /// <param name="sortField"> The sort field. </param> + /// <returns> The report option. </returns> + private ReportOptions<BaseItem> GetReportOption(HeaderMetadata header, string sortField = "") + { + ReportHeader reportHeader = new ReportHeader + { + HeaderFieldType = ReportFieldType.String, + SortField = sortField, + Type = "", + ItemViewType = ItemViewType.None + }; + + Func<BaseItem, ReportRow, object> column = null; + Func<BaseItem, object> itemId = null; + HeaderMetadata internalHeader = header; + + switch (header) + { + case HeaderMetadata.StatusImage: + reportHeader.ItemViewType = ItemViewType.StatusImage; + internalHeader = HeaderMetadata.Status; + reportHeader.CanGroup = false; + break; + + case HeaderMetadata.Name: + column = (i, r) => i.Name; + reportHeader.ItemViewType = ItemViewType.Detail; + reportHeader.SortField = "SortName"; + break; + + case HeaderMetadata.DateAdded: + column = (i, r) => i.DateCreated; + reportHeader.SortField = "DateCreated,SortName"; + reportHeader.HeaderFieldType = ReportFieldType.DateTime; + reportHeader.Type = ""; + break; + + case HeaderMetadata.PremiereDate: + case HeaderMetadata.ReleaseDate: + column = (i, r) => i.PremiereDate; + reportHeader.HeaderFieldType = ReportFieldType.DateTime; + reportHeader.SortField = "ProductionYear,PremiereDate,SortName"; + break; + + case HeaderMetadata.Runtime: + column = (i, r) => this.GetRuntimeDateTime(i.RunTimeTicks); + reportHeader.HeaderFieldType = ReportFieldType.Minutes; + reportHeader.SortField = "Runtime,SortName"; + break; + + case HeaderMetadata.PlayCount: + reportHeader.HeaderFieldType = ReportFieldType.Int; + break; + + case HeaderMetadata.Season: + column = (i, r) => this.GetEpisode(i); + reportHeader.ItemViewType = ItemViewType.Detail; + reportHeader.SortField = "SortName"; + break; + + case HeaderMetadata.SeasonNumber: + column = (i, r) => this.GetObject<Season, string>(i, (x) => x.IndexNumber == null ? "" : x.IndexNumber.ToString()); + reportHeader.SortField = "IndexNumber"; + reportHeader.HeaderFieldType = ReportFieldType.Int; + break; + + case HeaderMetadata.Series: + column = (i, r) => this.GetObject<IHasSeries, string>(i, (x) => x.SeriesName); + reportHeader.ItemViewType = ItemViewType.Detail; + reportHeader.SortField = "SeriesSortName,SortName"; + break; + + case HeaderMetadata.EpisodeSeries: + column = (i, r) => this.GetObject<IHasSeries, string>(i, (x) => x.SeriesName); + reportHeader.ItemViewType = ItemViewType.Detail; + itemId = (i) => + { + Series series = this.GetObject<Episode, Series>(i, (x) => x.Series); + if (series == null) + return string.Empty; + return series.Id; + }; + reportHeader.SortField = "SeriesSortName,SortName"; + internalHeader = HeaderMetadata.Series; + break; + + case HeaderMetadata.EpisodeSeason: + column = (i, r) => this.GetObject<IHasSeries, string>(i, (x) => x.SeriesName); + reportHeader.ItemViewType = ItemViewType.Detail; + itemId = (i) => + { + Season season = this.GetObject<Episode, Season>(i, (x) => x.Season); + if (season == null) + return string.Empty; + return season.Id; + }; + reportHeader.SortField = "SortName"; + internalHeader = HeaderMetadata.Season; + break; + + case HeaderMetadata.Network: + column = (i, r) => this.GetListAsString(i.Studios); + itemId = (i) => this.GetStudioID(i.Studios.FirstOrDefault()); + reportHeader.ItemViewType = ItemViewType.ItemByNameDetails; + reportHeader.SortField = "Studio,SortName"; + break; + + case HeaderMetadata.Year: + column = (i, r) => this.GetSeriesProductionYear(i); + reportHeader.SortField = "ProductionYear,PremiereDate,SortName"; + break; + + case HeaderMetadata.ParentalRating: + column = (i, r) => i.OfficialRating; + reportHeader.SortField = "OfficialRating,SortName"; + break; + + case HeaderMetadata.CommunityRating: + column = (i, r) => i.CommunityRating; + reportHeader.SortField = "CommunityRating,SortName"; + break; + + case HeaderMetadata.Trailers: + column = (i, r) => this.GetBoolString(r.HasLocalTrailer); + reportHeader.ItemViewType = ItemViewType.TrailersImage; + break; + + case HeaderMetadata.Specials: + column = (i, r) => this.GetBoolString(r.HasSpecials); + reportHeader.ItemViewType = ItemViewType.SpecialsImage; + break; + + case HeaderMetadata.GameSystem: + column = (i, r) => this.GetObject<Game, string>(i, (x) => x.GameSystem); + reportHeader.SortField = "GameSystem,SortName"; + break; + + case HeaderMetadata.Players: + column = (i, r) => this.GetObject<Game, int?>(i, (x) => x.PlayersSupported); + reportHeader.SortField = "Players,GameSystem,SortName"; + break; + + case HeaderMetadata.AlbumArtist: + column = (i, r) => this.GetObject<MusicAlbum, string>(i, (x) => x.AlbumArtist); + itemId = (i) => this.GetPersonID(this.GetObject<MusicAlbum, string>(i, (x) => x.AlbumArtist)); + reportHeader.ItemViewType = ItemViewType.Detail; + reportHeader.SortField = "AlbumArtist,Album,SortName"; + + break; + case HeaderMetadata.MusicArtist: + column = (i, r) => this.GetObject<MusicArtist, string>(i, (x) => x.GetLookupInfo().Name); + reportHeader.ItemViewType = ItemViewType.Detail; + reportHeader.SortField = "AlbumArtist,Album,SortName"; + internalHeader = HeaderMetadata.AlbumArtist; + break; + case HeaderMetadata.AudioAlbumArtist: + column = (i, r) => this.GetListAsString(this.GetObject<Audio, List<string>>(i, (x) => x.AlbumArtists)); + reportHeader.SortField = "AlbumArtist,Album,SortName"; + internalHeader = HeaderMetadata.AlbumArtist; + break; + + case HeaderMetadata.AudioAlbum: + column = (i, r) => this.GetObject<Audio, string>(i, (x) => x.Album); + reportHeader.SortField = "Album,SortName"; + internalHeader = HeaderMetadata.Album; + break; + + case HeaderMetadata.Countries: + column = (i, r) => this.GetListAsString(this.GetObject<IHasProductionLocations, List<string>>(i, (x) => x.ProductionLocations)); + break; + + case HeaderMetadata.Disc: + column = (i, r) => i.ParentIndexNumber; + break; + + case HeaderMetadata.Track: + column = (i, r) => i.IndexNumber; + break; + + case HeaderMetadata.Tracks: + column = (i, r) => this.GetObject<MusicAlbum, List<Audio>>(i, (x) => x.Tracks.ToList(), new List<Audio>()).Count(); + break; + + case HeaderMetadata.Audio: + column = (i, r) => this.GetAudioStream(i); + break; + + case HeaderMetadata.EmbeddedImage: + break; + + case HeaderMetadata.Video: + column = (i, r) => this.GetVideoStream(i); + break; + + case HeaderMetadata.Resolution: + column = (i, r) => this.GetVideoResolution(i); + break; + + case HeaderMetadata.Subtitles: + column = (i, r) => this.GetBoolString(r.HasSubtitles); + reportHeader.ItemViewType = ItemViewType.SubtitleImage; + break; + + case HeaderMetadata.Genres: + column = (i, r) => this.GetListAsString(i.Genres); + break; + + } + + string headerName = ""; + if (internalHeader != HeaderMetadata.None) + { + string localHeader = "Header" + internalHeader.ToString(); + headerName = internalHeader != HeaderMetadata.None ? ReportHelper.GetJavaScriptLocalizedString(localHeader) : ""; + if (string.Compare(localHeader, headerName, StringComparison.CurrentCultureIgnoreCase) == 0) + headerName = ReportHelper.GetServerLocalizedString(localHeader); + } + + reportHeader.Name = headerName; + reportHeader.FieldName = header; + ReportOptions<BaseItem> option = new ReportOptions<BaseItem>() + { + Header = reportHeader, + Column = column, + ItemID = itemId + }; + return option; + } + } +} diff --git a/MediaBrowser.Api/Reports/Data/ReportExport.cs b/MediaBrowser.Api/Reports/Data/ReportExport.cs new file mode 100644 index 000000000..f313cf252 --- /dev/null +++ b/MediaBrowser.Api/Reports/Data/ReportExport.cs @@ -0,0 +1,212 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MediaBrowser.Api.Reports +{ + /// <summary> A report export. </summary> + public class ReportExport + { + /// <summary> Export to CSV. </summary> + /// <param name="reportResult"> The report result. </param> + /// <returns> A string. </returns> + public string ExportToCsv(ReportResult reportResult) + { + StringBuilder returnValue = new StringBuilder(); + + returnValue.AppendLine(string.Join(";", reportResult.Headers.Select(s => s.Name.Replace(',', ' ')).ToArray())); + + if (reportResult.IsGrouped) + foreach (ReportGroup group in reportResult.Groups) + { + foreach (ReportRow row in reportResult.Rows) + { + returnValue.AppendLine(string.Join(";", row.Columns.Select(s => s.Name.Replace(',', ' ')).ToArray())); + } + } + else + foreach (ReportRow row in reportResult.Rows) + { + returnValue.AppendLine(string.Join(";", row.Columns.Select(s => s.Name.Replace(',', ' ')).ToArray())); + } + + return returnValue.ToString(); + } + + + /// <summary> Export to excel. </summary> + /// <param name="reportResult"> The report result. </param> + /// <returns> A string. </returns> + public string ExportToExcel(ReportResult reportResult) + { + + string style = @"<style type='text/css'> + BODY { + font-family: Arial; + font-size: 12px; + } + + TABLE { + font-family: Arial; + font-size: 12px; + } + + A { + font-family: Arial; + color: #144A86; + font-size: 12px; + cursor: pointer; + text-decoration: none; + font-weight: bold; + } + DIV { + font-family: Arial; + font-size: 12px; + margin-bottom: 0px; + } + P, LI, DIV { + font-size: 12px; + margin-bottom: 0px; + } + + P, UL { + font-size: 12px; + margin-bottom: 6px; + margin-top: 0px; + } + + H1 { + font-size: 18pt; + } + + H2 { + font-weight: bold; + font-size: 14pt; + COLOR: #C0C0C0; + } + + H3 { + font-weight: normal; + font-size: 14pt; + text-indent: +1em; + } + + H4 { + font-size: 10pt; + font-weight: normal; + } + + H5 { + font-size: 10pt; + font-weight: normal; + background: #A9A9A9; + COLOR: white; + display: inline; + } + + H6 { + padding: 2 1 2 5; + font-size: 11px; + font-weight: bold; + text-decoration: none; + margin-bottom: 1px; + } + + UL { + line-height: 1.5em; + list-style-type: disc; + } + + OL { + line-height: 1.5em; + } + + LI { + line-height: 1.5em; + } + + A IMG { + border: 0; + } + + table.gridtable { + color: #333333; + border-width: 0.1pt; + border-color: #666666; + border-collapse: collapse; + } + + table.gridtable th { + border-width: 0.1pt; + padding: 8px; + border-style: solid; + border-color: #666666; + background-color: #dedede; + } + table.gridtable tr { + background-color: #ffffff; + } + table.gridtable td { + border-width: 0.1pt; + padding: 8px; + border-style: solid; + border-color: #666666; + background-color: #ffffff; + } + </style>"; + + string Html = @"<!DOCTYPE html> + <html xmlns='http://www.w3.org/1999/xhtml'> + <head> + <meta http-equiv='X-UA-Compatible' content='IE=8, IE=9, IE=10' /> + <meta charset='utf-8'> + <title>Emby Reports Export</title>"; + Html += "\n" + style + "\n"; + Html += "</head>\n"; + Html += "<body>\n"; + + StringBuilder returnValue = new StringBuilder(); + returnValue.AppendLine("<table class='gridtable'>"); + returnValue.AppendLine("<tr>"); + returnValue.AppendLine(string.Join("", reportResult.Headers.Select(s => string.Format("<th>{0}</th>", s.Name)).ToArray())); + returnValue.AppendLine("</tr>"); + if (reportResult.IsGrouped) + foreach (ReportGroup group in reportResult.Groups) + { + returnValue.AppendLine("<tr>"); + returnValue.AppendLine("<th scope='rowgroup' colspan='" + reportResult.Headers.Count + "'>" + (string.IsNullOrEmpty(group.Name) ? " " : group.Name) + "</th>"); + returnValue.AppendLine("</tr>"); + foreach (ReportRow row in group.Rows) + { + ExportToExcelRow(reportResult, returnValue, row); + } + returnValue.AppendLine("<tr>"); + returnValue.AppendLine("<th style='background-color: #ffffff;' scope='rowgroup' colspan='" + reportResult.Headers.Count + "'>" + " " + "</th>"); + returnValue.AppendLine("</tr>"); + } + + else + foreach (ReportRow row in reportResult.Rows) + { + ExportToExcelRow(reportResult, returnValue, row); + } + returnValue.AppendLine("</table>"); + + Html += returnValue.ToString(); + Html += "</body>"; + Html += "</html>"; + return Html; + } + private static void ExportToExcelRow(ReportResult reportResult, + StringBuilder returnValue, + ReportRow row) + { + returnValue.AppendLine("<tr>"); + returnValue.AppendLine(string.Join("", row.Columns.Select(s => string.Format("<td>{0}</td>", s.Name)).ToArray())); + returnValue.AppendLine("</tr>"); + } + } + +} diff --git a/MediaBrowser.Api/Reports/Data/ReportGroup.cs b/MediaBrowser.Api/Reports/Data/ReportGroup.cs new file mode 100644 index 000000000..49c76c7ba --- /dev/null +++ b/MediaBrowser.Api/Reports/Data/ReportGroup.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MediaBrowser.Api.Reports +{ + + /// <summary> A report group. </summary> + public class ReportGroup + { + /// <summary> + /// Initializes a new instance of the MediaBrowser.Api.Reports.ReportGroup class. </summary> + public ReportGroup() + { + Rows = new List<ReportRow>(); + } + + /// <summary> + /// Initializes a new instance of the MediaBrowser.Api.Reports.ReportGroup class. </summary> + /// <param name="rows"> The rows. </param> + public ReportGroup(List<ReportRow> rows) + { + Rows = rows; + } + + /// <summary> Gets or sets the name. </summary> + /// <value> The name. </value> + public string Name { get; set; } + + /// <summary> Gets or sets the rows. </summary> + /// <value> The rows. </value> + public List<ReportRow> Rows { get; set; } + + /// <summary> Returns a string that represents the current object. </summary> + /// <returns> A string that represents the current object. </returns> + /// <seealso cref="M:System.Object.ToString()"/> + public override string ToString() + { + return Name; + } + } +} diff --git a/MediaBrowser.Api/Reports/Data/ReportHeader.cs b/MediaBrowser.Api/Reports/Data/ReportHeader.cs new file mode 100644 index 000000000..81b85954a --- /dev/null +++ b/MediaBrowser.Api/Reports/Data/ReportHeader.cs @@ -0,0 +1,54 @@ +using MediaBrowser.Controller.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MediaBrowser.Api.Reports +{ + /// <summary> A report header. </summary> + public class ReportHeader + { + /// <summary> Initializes a new instance of the ReportHeader class. </summary> + public ReportHeader() + { + ItemViewType = ItemViewType.None; + Visible = true; + CanGroup = true; + } + + /// <summary> Gets or sets the type of the header field. </summary> + /// <value> The type of the header field. </value> + public ReportFieldType HeaderFieldType { get; set; } + + /// <summary> Gets or sets the name of the header. </summary> + /// <value> The name of the header. </value> + public string Name { get; set; } + + /// <summary> Gets or sets the name of the field. </summary> + /// <value> The name of the field. </value> + public HeaderMetadata FieldName { get; set; } + + /// <summary> Gets or sets the sort field. </summary> + /// <value> The sort field. </value> + public string SortField { get; set; } + + /// <summary> Gets or sets the type. </summary> + /// <value> The type. </value> + public string Type { get; set; } + + /// <summary> Gets or sets the type of the item view. </summary> + /// <value> The type of the item view. </value> + public ItemViewType ItemViewType { get; set; } + + /// <summary> Gets or sets a value indicating whether this object is visible. </summary> + /// <value> true if visible, false if not. </value> + public bool Visible { get; set; } + + /// <summary> Gets or sets a value indicating whether we can group. </summary> + /// <value> true if we can group, false if not. </value> + public bool CanGroup { get; set; } + + } +} diff --git a/MediaBrowser.Api/Reports/Data/ReportItem.cs b/MediaBrowser.Api/Reports/Data/ReportItem.cs new file mode 100644 index 000000000..06d0b0c46 --- /dev/null +++ b/MediaBrowser.Api/Reports/Data/ReportItem.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MediaBrowser.Api.Reports +{ + /// <summary> A report item. </summary> + public class ReportItem + { + /// <summary> Gets or sets the identifier. </summary> + /// <value> The identifier. </value> + public string Id { get; set; } + + /// <summary> Gets or sets the name. </summary> + /// <value> The name. </value> + public string Name { get; set; } + + public string Image { get; set; } + + /// <summary> Gets or sets the custom tag. </summary> + /// <value> The custom tag. </value> + public string CustomTag { get; set; } + + /// <summary> Returns a string that represents the current object. </summary> + /// <returns> A string that represents the current object. </returns> + /// <seealso cref="M:System.Object.ToString()"/> + public override string ToString() + { + return Name; + } + } +} diff --git a/MediaBrowser.Api/Reports/Data/ReportOptions.cs b/MediaBrowser.Api/Reports/Data/ReportOptions.cs new file mode 100644 index 000000000..aed15d428 --- /dev/null +++ b/MediaBrowser.Api/Reports/Data/ReportOptions.cs @@ -0,0 +1,52 @@ +using MediaBrowser.Controller.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MediaBrowser.Api.Reports +{ + /// <summary> A report options. </summary> + internal class ReportOptions<I> + { + /// <summary> Initializes a new instance of the ReportOptions class. </summary> + public ReportOptions() + { + } + + /// <summary> Initializes a new instance of the ReportOptions class. </summary> + /// <param name="header"> . </param> + /// <param name="row"> . </param> + public ReportOptions(ReportHeader header, Func<I, ReportRow, object> column) + { + Header = header; + Column = column; + } + + /// <summary> + /// Initializes a new instance of the ReportOptions class. + /// </summary> + /// <param name="header"></param> + /// <param name="column"></param> + /// <param name="itemID"></param> + public ReportOptions(ReportHeader header, Func<I, ReportRow, object> column, Func<I, object> itemID) + { + Header = header; + Column = column; + ItemID = itemID; + } + + /// <summary> Gets or sets the header. </summary> + /// <value> The header. </value> + public ReportHeader Header { get; set; } + + /// <summary> Gets or sets the column. </summary> + /// <value> The column. </value> + public Func<I, ReportRow, object> Column { get; set; } + + /// <summary> Gets or sets the identifier of the item. </summary> + /// <value> The identifier of the item. </value> + public Func<I, object> ItemID { get; set; } + } +} diff --git a/MediaBrowser.Api/Reports/Data/ReportResult.cs b/MediaBrowser.Api/Reports/Data/ReportResult.cs new file mode 100644 index 000000000..a4bc95aa1 --- /dev/null +++ b/MediaBrowser.Api/Reports/Data/ReportResult.cs @@ -0,0 +1,53 @@ +using System.Collections.Generic; + +namespace MediaBrowser.Api.Reports +{ + + /// <summary> Encapsulates the result of a report. </summary> + public class ReportResult + { + /// <summary> + /// Initializes a new instance of the MediaBrowser.Api.Reports.ReportResult class. </summary> + public ReportResult() + { + Rows = new List<ReportRow>(); + Headers = new List<ReportHeader>(); + Groups = new List<ReportGroup>(); + TotalRecordCount = 0; + IsGrouped = false; + } + + /// <summary> + /// Initializes a new instance of the MediaBrowser.Api.Reports.ReportResult class. </summary> + /// <param name="headers"> The headers. </param> + /// <param name="rows"> The rows. </param> + public ReportResult(List<ReportHeader> headers, List<ReportRow> rows) + { + Rows = rows; + Headers = headers; + TotalRecordCount = 0; + } + + /// <summary> Gets or sets the rows. </summary> + /// <value> The rows. </value> + public List<ReportRow> Rows { get; set; } + + /// <summary> Gets or sets the headers. </summary> + /// <value> The headers. </value> + public List<ReportHeader> Headers { get; set; } + + /// <summary> Gets or sets the groups. </summary> + /// <value> The groups. </value> + public List<ReportGroup> Groups { get; set; } + + + /// <summary> Gets or sets the number of total records. </summary> + /// <value> The total number of record count. </value> + public int TotalRecordCount { get; set; } + + /// <summary> Gets or sets the is grouped. </summary> + /// <value> The is grouped. </value> + public bool IsGrouped { get; set; } + + } +} diff --git a/MediaBrowser.Api/Reports/Data/ReportRow.cs b/MediaBrowser.Api/Reports/Data/ReportRow.cs new file mode 100644 index 000000000..f2165344a --- /dev/null +++ b/MediaBrowser.Api/Reports/Data/ReportRow.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MediaBrowser.Api.Reports +{ + public class ReportRow + { + /// <summary> + /// Initializes a new instance of the ReportRow class. + /// </summary> + public ReportRow() + { + Columns = new List<ReportItem>(); + } + + /// <summary> Gets or sets the identifier. </summary> + /// <value> The identifier. </value> + public string Id { get; set; } + + /// <summary> + /// Gets or sets a value indicating whether this object has backdrop image. </summary> + /// <value> true if this object has backdrop image, false if not. </value> + public bool HasImageTagsBackdrop { get; set; } + + /// <summary> Gets or sets a value indicating whether this object has image tags. </summary> + /// <value> true if this object has image tags, false if not. </value> + public bool HasImageTagsPrimary { get; set; } + + /// <summary> + /// Gets or sets a value indicating whether this object has image tags logo. </summary> + /// <value> true if this object has image tags logo, false if not. </value> + public bool HasImageTagsLogo { get; set; } + + /// <summary> + /// Gets or sets a value indicating whether this object has local trailer. </summary> + /// <value> true if this object has local trailer, false if not. </value> + public bool HasLocalTrailer { get; set; } + + /// <summary> Gets or sets a value indicating whether this object has lock data. </summary> + /// <value> true if this object has lock data, false if not. </value> + public bool HasLockData { get; set; } + + /// <summary> + /// Gets or sets a value indicating whether this object has embedded image. </summary> + /// <value> true if this object has embedded image, false if not. </value> + public bool HasEmbeddedImage { get; set; } + + /// <summary> Gets or sets a value indicating whether this object has subtitles. </summary> + /// <value> true if this object has subtitles, false if not. </value> + public bool HasSubtitles { get; set; } + + /// <summary> Gets or sets a value indicating whether this object has specials. </summary> + /// <value> true if this object has specials, false if not. </value> + public bool HasSpecials { get; set; } + + /// <summary> Gets or sets a value indicating whether this object is unidentified. </summary> + /// <value> true if this object is unidentified, false if not. </value> + public bool IsUnidentified { get; set; } + + /// <summary> Gets or sets the columns. </summary> + /// <value> The columns. </value> + public List<ReportItem> Columns { get; set; } + + /// <summary> Gets or sets the type. </summary> + /// <value> The type. </value> + public ReportViewType RowType { get; set; } + } +} diff --git a/MediaBrowser.Api/Reports/ReportFieldType.cs b/MediaBrowser.Api/Reports/ReportFieldType.cs deleted file mode 100644 index d35c5cb2d..000000000 --- a/MediaBrowser.Api/Reports/ReportFieldType.cs +++ /dev/null @@ -1,9 +0,0 @@ - -namespace MediaBrowser.Api.Reports -{ - public enum ReportFieldType - { - String, - Boolean - } -} diff --git a/MediaBrowser.Api/Reports/ReportRequests.cs b/MediaBrowser.Api/Reports/ReportRequests.cs index 8dea00381..7fe0bfba1 100644 --- a/MediaBrowser.Api/Reports/ReportRequests.cs +++ b/MediaBrowser.Api/Reports/ReportRequests.cs @@ -1,33 +1,286 @@ -using ServiceStack; +using MediaBrowser.Api.UserLibrary; +using MediaBrowser.Model.Entities; +using ServiceStack; +using System; +using System.Collections.Generic; +using System.Linq; namespace MediaBrowser.Api.Reports { - public class BaseReportRequest : IReturn<ReportResult> - { + public class BaseReportRequest : BaseItemsRequest + { /// <summary> - /// Specify this to localize the search to a specific item or folder. Omit to use the root. + /// Gets or sets the user id. /// </summary> - /// <value>The parent id.</value> - [ApiMember(Name = "ParentId", Description = "Specify this to localize the search to a specific item or folder. Omit to use the root", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public string ParentId { get; set; } + /// <value>The user id.</value> + [ApiMember(Name = "UserId", Description = "User Id", IsRequired = false, DataType = "string", ParameterType = "path", Verb = "GET")] + public string UserId { get; set; } /// <summary> - /// Skips over a given number of items within the results. Use for paging. + /// Limit results to items containing a specific person /// </summary> - /// <value>The start index.</value> - [ApiMember(Name = "StartIndex", Description = "Optional. The record index to start at. All items with a lower index will be dropped from the results.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] - public int? StartIndex { get; set; } + /// <value>The person.</value> + [ApiMember(Name = "Person", Description = "Optional. If specified, results will be filtered to include only those containing the specified person.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public string Person { get; set; } + + [ApiMember(Name = "PersonIds", Description = "Optional. If specified, results will be filtered to include only those containing the specified person.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public string PersonIds { get; set; } /// <summary> - /// The maximum number of items to return + /// If the Person filter is used, this can also be used to restrict to a specific person type /// </summary> - /// <value>The limit.</value> - [ApiMember(Name = "Limit", Description = "Optional. The maximum number of records to return", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] - public int? Limit { get; set; } - } + /// <value>The type of the person.</value> + [ApiMember(Name = "PersonTypes", Description = "Optional. If specified, along with Person, results will be filtered to include only those containing the specified person and PersonType. Allows multiple, comma-delimited", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public string PersonTypes { get; set; } + + /// <summary> + /// Limit results to items containing specific studios + /// </summary> + /// <value>The studios.</value> + [ApiMember(Name = "Studios", Description = "Optional. If specified, results will be filtered based on studio. This allows multiple, pipe delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] + public string Studios { get; set; } + + [ApiMember(Name = "StudioIds", Description = "Optional. If specified, results will be filtered based on studio. This allows multiple, pipe delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] + public string StudioIds { get; set; } + + /// <summary> + /// Gets or sets the studios. + /// </summary> + /// <value>The studios.</value> + [ApiMember(Name = "Artists", Description = "Optional. If specified, results will be filtered based on artist. This allows multiple, pipe delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] + public string Artists { get; set; } + + [ApiMember(Name = "ArtistIds", Description = "Optional. If specified, results will be filtered based on artist. This allows multiple, pipe delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] + public string ArtistIds { get; set; } + + [ApiMember(Name = "Albums", Description = "Optional. If specified, results will be filtered based on album. This allows multiple, pipe delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] + public string Albums { get; set; } + + /// <summary> + /// Gets or sets the item ids. + /// </summary> + /// <value>The item ids.</value> + [ApiMember(Name = "Ids", Description = "Optional. If specific items are needed, specify a list of item id's to retrieve. This allows multiple, comma delimited.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] + public string Ids { get; set; } + + public bool HasQueryLimit { get; set; } + public string GroupBy { get; set; } + + public string ReportColumns { get; set; } + + /// <summary> + /// Gets or sets the video types. + /// </summary> + /// <value>The video types.</value> + [ApiMember(Name = "VideoTypes", Description = "Optional filter by VideoType (videofile, dvd, bluray, iso). Allows multiple, comma delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] + public string VideoTypes { get; set; } + + /// <summary> + /// Gets or sets the video formats. + /// </summary> + /// <value>The video formats.</value> + [ApiMember(Name = "Is3D", Description = "Optional filter by items that are 3D, or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")] + public bool? Is3D { get; set; } + + /// <summary> + /// Gets or sets the series status. + /// </summary> + /// <value>The series status.</value> + [ApiMember(Name = "SeriesStatus", Description = "Optional filter by Series Status. Allows multiple, comma delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] + public string SeriesStatus { get; set; } + + [ApiMember(Name = "NameStartsWithOrGreater", Description = "Optional filter by items whose name is sorted equally or greater than a given input string.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public string NameStartsWithOrGreater { get; set; } + + [ApiMember(Name = "NameStartsWith", Description = "Optional filter by items whose name is sorted equally than a given input string.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public string NameStartsWith { get; set; } + + [ApiMember(Name = "NameLessThan", Description = "Optional filter by items whose name is equally or lesser than a given input string.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public string NameLessThan { get; set; } + + [ApiMember(Name = "AlbumArtistStartsWithOrGreater", Description = "Optional filter by items whose album artist is sorted equally or greater than a given input string.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public string AlbumArtistStartsWithOrGreater { get; set; } + + /// <summary> + /// Gets or sets the air days. + /// </summary> + /// <value>The air days.</value> + [ApiMember(Name = "AirDays", Description = "Optional filter by Series Air Days. Allows multiple, comma delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] + public string AirDays { get; set; } + + /// <summary> + /// Gets or sets the min offical rating. + /// </summary> + /// <value>The min offical rating.</value> + [ApiMember(Name = "MinOfficialRating", Description = "Optional filter by minimum official rating (PG, PG-13, TV-MA, etc).", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public string MinOfficialRating { get; set; } + + /// <summary> + /// Gets or sets the max offical rating. + /// </summary> + /// <value>The max offical rating.</value> + [ApiMember(Name = "MaxOfficialRating", Description = "Optional filter by maximum official rating (PG, PG-13, TV-MA, etc).", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public string MaxOfficialRating { get; set; } + + [ApiMember(Name = "HasThemeSong", Description = "Optional filter by items with theme songs.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public bool? HasThemeSong { get; set; } + + [ApiMember(Name = "HasThemeVideo", Description = "Optional filter by items with theme videos.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public bool? HasThemeVideo { get; set; } + + [ApiMember(Name = "HasSubtitles", Description = "Optional filter by items with subtitles.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public bool? HasSubtitles { get; set; } + + [ApiMember(Name = "HasSpecialFeature", Description = "Optional filter by items with special features.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public bool? HasSpecialFeature { get; set; } + + [ApiMember(Name = "HasTrailer", Description = "Optional filter by items with trailers.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public bool? HasTrailer { get; set; } - [Route("/Reports/Items", "GET", Summary = "Gets reports based on library items")] - public class GetItemReport : BaseReportRequest - { + [ApiMember(Name = "AdjacentTo", Description = "Optional. Return items that are siblings of a supplied item.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public string AdjacentTo { get; set; } + + [ApiMember(Name = "MinIndexNumber", Description = "Optional filter by minimum index number.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] + public int? MinIndexNumber { get; set; } + + [ApiMember(Name = "MinPlayers", Description = "Optional filter by minimum number of game players.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] + public int? MinPlayers { get; set; } + + [ApiMember(Name = "MaxPlayers", Description = "Optional filter by maximum number of game players.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] + public int? MaxPlayers { get; set; } + + [ApiMember(Name = "ParentIndexNumber", Description = "Optional filter by parent index number.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] + public int? ParentIndexNumber { get; set; } + + [ApiMember(Name = "HasParentalRating", Description = "Optional filter by items that have or do not have a parental rating", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")] + public bool? HasParentalRating { get; set; } + + [ApiMember(Name = "IsHD", Description = "Optional filter by items that are HD or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")] + public bool? IsHD { get; set; } + + [ApiMember(Name = "LocationTypes", Description = "Optional. If specified, results will be filtered based on LocationType. This allows multiple, comma delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] + public string LocationTypes { get; set; } + + [ApiMember(Name = "ExcludeLocationTypes", Description = "Optional. If specified, results will be filtered based on LocationType. This allows multiple, comma delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] + public string ExcludeLocationTypes { get; set; } + + [ApiMember(Name = "IsMissing", Description = "Optional filter by items that are missing episodes or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")] + public bool? IsMissing { get; set; } + + [ApiMember(Name = "IsUnaired", Description = "Optional filter by items that are unaired episodes or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")] + public bool? IsUnaired { get; set; } + + [ApiMember(Name = "IsVirtualUnaired", Description = "Optional filter by items that are virtual unaired episodes or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")] + public bool? IsVirtualUnaired { get; set; } + + [ApiMember(Name = "MinCommunityRating", Description = "Optional filter by minimum community rating.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] + public double? MinCommunityRating { get; set; } + + [ApiMember(Name = "MinCriticRating", Description = "Optional filter by minimum critic rating.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] + public double? MinCriticRating { get; set; } + + [ApiMember(Name = "AiredDuringSeason", Description = "Gets all episodes that aired during a season, including specials.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] + public int? AiredDuringSeason { get; set; } + + [ApiMember(Name = "MinPremiereDate", Description = "Optional. The minimum premiere date. Format = ISO", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")] + public string MinPremiereDate { get; set; } + + [ApiMember(Name = "MaxPremiereDate", Description = "Optional. The maximum premiere date. Format = ISO", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")] + public string MaxPremiereDate { get; set; } + + [ApiMember(Name = "HasOverview", Description = "Optional filter by items that have an overview or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")] + public bool? HasOverview { get; set; } + + [ApiMember(Name = "HasImdbId", Description = "Optional filter by items that have an imdb id or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")] + public bool? HasImdbId { get; set; } + + [ApiMember(Name = "HasTmdbId", Description = "Optional filter by items that have a tmdb id or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")] + public bool? HasTmdbId { get; set; } + + [ApiMember(Name = "HasTvdbId", Description = "Optional filter by items that have a tvdb id or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")] + public bool? HasTvdbId { get; set; } + + [ApiMember(Name = "IsYearMismatched", Description = "Optional filter by items that are potentially misidentified.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")] + public bool? IsYearMismatched { get; set; } + + [ApiMember(Name = "IsInBoxSet", Description = "Optional filter by items that are in boxsets, or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")] + public bool? IsInBoxSet { get; set; } + + [ApiMember(Name = "IsLocked", Description = "Optional filter by items that are locked.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public bool? IsLocked { get; set; } + + [ApiMember(Name = "IsUnidentified", Description = "Optional filter by items that are unidentified by internet metadata providers.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public bool? IsUnidentified { get; set; } + + [ApiMember(Name = "IsPlaceHolder", Description = "Optional filter by items that are placeholders", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public bool? IsPlaceHolder { get; set; } + + [ApiMember(Name = "HasOfficialRating", Description = "Optional filter by items that have official ratings", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public bool? HasOfficialRating { get; set; } + + [ApiMember(Name = "CollapseBoxSetItems", Description = "Whether or not to hide items behind their boxsets.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")] + public bool? CollapseBoxSetItems { get; set; } + + public string[] GetStudios() + { + return (Studios ?? string.Empty).Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries); + } + + public string[] GetStudioIds() + { + return (StudioIds ?? string.Empty).Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries); + } + + public string[] GetPersonTypes() + { + return (PersonTypes ?? string.Empty).Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); + } + + public string[] GetPersonIds() + { + return (PersonIds ?? string.Empty).Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); + } + + public VideoType[] GetVideoTypes() + { + var val = VideoTypes; + + if (string.IsNullOrEmpty(val)) + { + return new VideoType[] { }; + } + + return val.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(v => (VideoType)Enum.Parse(typeof(VideoType), v, true)).ToArray(); + } } + + [Route("/Reports/Items", "GET", Summary = "Gets reports based on library items")] + public class GetItemReport : BaseReportRequest, IReturn<ReportResult> + { + + } + + [Route("/Reports/Headers", "GET", Summary = "Gets reports headers based on library items")] + public class GetReportHeaders : BaseReportRequest, IReturn<List<ReportHeader>> + { + } + + [Route("/Reports/Statistics", "GET", Summary = "Gets reports statistics based on library items")] + public class GetReportStatistics : BaseReportRequest, IReturn<ReportStatResult> + { + public int? TopItems { get; set; } + + } + + [Route("/Reports/Items/Download", "GET", Summary = "Downloads report")] + public class GetReportDownload : BaseReportRequest + { + public GetReportDownload() + { + ExportType = ReportExportType.CSV; + } + + public ReportExportType ExportType { get; set; } + } + } diff --git a/MediaBrowser.Api/Reports/ReportResult.cs b/MediaBrowser.Api/Reports/ReportResult.cs deleted file mode 100644 index c033ae8fb..000000000 --- a/MediaBrowser.Api/Reports/ReportResult.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System.Collections.Generic; - -namespace MediaBrowser.Api.Reports -{ - public class ReportResult - { - public List<List<string>> Rows { get; set; } - public List<ReportFieldType> Columns { get; set; } - - public ReportResult() - { - Rows = new List<List<string>>(); - Columns = new List<ReportFieldType>(); - } - } -} diff --git a/MediaBrowser.Api/Reports/ReportsService.cs b/MediaBrowser.Api/Reports/ReportsService.cs index 45bc4a889..ebf5183c5 100644 --- a/MediaBrowser.Api/Reports/ReportsService.cs +++ b/MediaBrowser.Api/Reports/ReportsService.cs @@ -1,64 +1,1162 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Dto; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Model.Querying; +using System.Collections.Generic; using System.Threading.Tasks; +using System.Globalization; +using System.Linq; +using MediaBrowser.Model.Dto; +using MediaBrowser.Controller.Localization; +using MediaBrowser.Controller.Entities.Movies; +using MediaBrowser.Controller.Persistence; +using MediaBrowser.Api.UserLibrary; +using MediaBrowser.Controller.Collections; +using MediaBrowser.Controller.Entities.TV; +using System; +using MediaBrowser.Controller.Entities.Audio; +using MediaBrowser.Model.Entities; +using MediaBrowser.Controller.Net; +using MediaBrowser.Model.Activity; +using MediaBrowser.Controller.Activity; +using System.IO; +using System.Text; namespace MediaBrowser.Api.Reports { - public class ReportsService : BaseApiService - { - private readonly ILibraryManager _libraryManager; + /// <summary> The reports service. </summary> + /// <seealso cref="T:MediaBrowser.Api.BaseApiService"/> + public class ReportsService : BaseApiService + { - public ReportsService(ILibraryManager libraryManager) - { - _libraryManager = libraryManager; - } - public async Task<object> Get(GetItemReport request) - { - var queryResult = await GetQueryResult(request).ConfigureAwait(false); + /// <summary> Manager for user. </summary> + private readonly IUserManager _userManager; - var reportResult = GetReportResult(queryResult); + /// <summary> Manager for library. </summary> + private readonly ILibraryManager _libraryManager; + /// <summary> The localization. </summary> + private readonly ILocalizationManager _localization; - return ToOptimizedResult(reportResult); - } + /// <summary> + /// Initializes a new instance of the MediaBrowser.Api.Reports.ReportsService class. </summary> + /// <param name="userManager"> Manager for user. </param> + /// <param name="libraryManager"> Manager for library. </param> + /// <param name="localization"> The localization. </param> + public ReportsService(IUserManager userManager, ILibraryManager libraryManager, ILocalizationManager localization) + { + _userManager = userManager; + _libraryManager = libraryManager; + _localization = localization; + } - private ReportResult GetReportResult(QueryResult<BaseItem> queryResult) - { - var reportResult = new ReportResult(); + /// <summary> Gets the given request. </summary> + /// <param name="request"> The request. </param> + /// <returns> A Task<object> </returns> + public async Task<object> Get(GetReportHeaders request) + { + if (string.IsNullOrEmpty(request.IncludeItemTypes)) + return null; - // Fill rows and columns + ReportViewType reportRowType = ReportHelper.GetRowType(request.IncludeItemTypes); + ReportBuilder reportBuilder = new ReportBuilder(_libraryManager); + var reportResult = reportBuilder.GetReportHeaders(reportRowType, request); - return reportResult; - } + return ToOptimizedResult(reportResult); - private Task<QueryResult<BaseItem>> GetQueryResult(BaseReportRequest request) - { - // Placeholder in case needed later - User user = null; + } - var parentItem = string.IsNullOrEmpty(request.ParentId) ? - (user == null ? _libraryManager.RootFolder : user.RootFolder) : - _libraryManager.GetItemById(request.ParentId); + /// <summary> Gets the given request. </summary> + /// <param name="request"> The request. </param> + /// <returns> A Task<object> </returns> + public async Task<object> Get(GetItemReport request) + { + if (string.IsNullOrEmpty(request.IncludeItemTypes)) + return null; - return ((Folder)parentItem).GetItems(GetItemsQuery(request, user)); - } + var reportResult = await GetReportResult(request); - private InternalItemsQuery GetItemsQuery(BaseReportRequest request, User user) - { - var query = new InternalItemsQuery - { - User = user, - CollapseBoxSetItems = false - }; + return ToOptimizedResult(reportResult); + } - // Set query values based on request + /// <summary> Gets the given request. </summary> + /// <param name="request"> The request. </param> + /// <returns> A Task<object> </returns> + public async Task<object> Get(GetReportDownload request) + { + if (string.IsNullOrEmpty(request.IncludeItemTypes)) + return null; - // Example - //query.IncludeItemTypes = new[] {"Movie"}; + var headers = new Dictionary<string, string>(); + string fileExtension = "csv"; + string contentType = "text/plain;charset='utf-8'"; + switch (request.ExportType) + { + case ReportExportType.CSV: + break; + case ReportExportType.Excel: + contentType = "application/vnd.ms-excel"; + fileExtension = "xls"; + break; + } - return query; - } - } + var filename = "ReportExport." + fileExtension; + headers["Content-Disposition"] = string.Format("attachment; filename=\"{0}\"", filename); + headers["Content-Encoding"] = "UTF-8"; + + ReportViewType reportRowType = ReportHelper.GetRowType(request.IncludeItemTypes); + ReportBuilder reportBuilder = new ReportBuilder(_libraryManager); + QueryResult<BaseItem> queryResult = await GetQueryResult(request).ConfigureAwait(false); + ReportResult reportResult = reportBuilder.GetReportResult(queryResult.Items, reportRowType, request); + + reportResult.TotalRecordCount = queryResult.TotalRecordCount; + + string result = string.Empty; + switch (request.ExportType) + { + case ReportExportType.CSV: + result = new ReportExport().ExportToCsv(reportResult); + break; + case ReportExportType.Excel: + result = new ReportExport().ExportToExcel(reportResult); + break; + } + + object ro = ResultFactory.GetResult(result, contentType, headers); + return ro; + } + + /// <summary> Gets the given request. </summary> + /// <param name="request"> The request. </param> + /// <returns> A Task<object> </returns> + public async Task<object> Get(GetReportStatistics request) + { + if (string.IsNullOrEmpty(request.IncludeItemTypes)) + return null; + var reportResult = await GetReportStatistic(request); + + return ToOptimizedResult(reportResult); + } + + /// <summary> Gets report statistic. </summary> + /// <param name="request"> The request. </param> + /// <returns> The report statistic. </returns> + private async Task<ReportStatResult> GetReportStatistic(GetReportStatistics request) + { + ReportViewType reportRowType = ReportHelper.GetRowType(request.IncludeItemTypes); + QueryResult<BaseItem> queryResult = await GetQueryResult(request).ConfigureAwait(false); + + ReportStatBuilder reportBuilder = new ReportStatBuilder(_libraryManager); + ReportStatResult reportResult = reportBuilder.GetReportStatResult(queryResult.Items, ReportHelper.GetRowType(request.IncludeItemTypes), request.TopItems ?? 5); + reportResult.TotalRecordCount = reportResult.Groups.Count(); + return reportResult; + } + + /// <summary> Gets report result. </summary> + /// <param name="request"> The request. </param> + /// <returns> The report result. </returns> + private async Task<ReportResult> GetReportResult(GetItemReport request) + { + + ReportViewType reportRowType = ReportHelper.GetRowType(request.IncludeItemTypes); + ReportBuilder reportBuilder = new ReportBuilder(_libraryManager); + QueryResult<BaseItem> queryResult = await GetQueryResult(request).ConfigureAwait(false); + ReportResult reportResult = reportBuilder.GetReportResult(queryResult.Items, reportRowType, request); + reportResult.TotalRecordCount = queryResult.TotalRecordCount; + + return reportResult; + } + + /// <summary> Gets query result. </summary> + /// <param name="request"> The request. </param> + /// <returns> The query result. </returns> + private async Task<QueryResult<BaseItem>> GetQueryResult(BaseReportRequest request) + { + // Placeholder in case needed later + request.Recursive = true; + var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null; + request.Fields = "MediaSources,DateCreated,Settings,Studios,SyncInfo,ItemCounts"; + + var parentItem = string.IsNullOrEmpty(request.ParentId) ? + (user == null ? _libraryManager.RootFolder : user.RootFolder) : + _libraryManager.GetItemById(request.ParentId); + + var item = string.IsNullOrEmpty(request.ParentId) ? + user == null ? _libraryManager.RootFolder : user.RootFolder : + parentItem; + + IEnumerable<BaseItem> items; + + if (request.Recursive) + { + var result = await ((Folder)item).GetItems(GetItemsQuery(request, user)).ConfigureAwait(false); + return result; + } + else + { + if (user == null) + { + var result = await ((Folder)item).GetItems(GetItemsQuery(request, null)).ConfigureAwait(false); + return result; + } + + var userRoot = item as UserRootFolder; + + if (userRoot == null) + { + var result = await ((Folder)item).GetItems(GetItemsQuery(request, user)).ConfigureAwait(false); + + return result; + } + + items = ((Folder)item).GetChildren(user, true); + } + + return new QueryResult<BaseItem> { Items = items.ToArray() }; + + } + + /// <summary> Gets items query. </summary> + /// <param name="request"> The request. </param> + /// <param name="user"> The user. </param> + /// <returns> The items query. </returns> + private InternalItemsQuery GetItemsQuery(BaseReportRequest request, User user) + { + var query = new InternalItemsQuery + { + User = user, + IsPlayed = request.IsPlayed, + MediaTypes = request.GetMediaTypes(), + IncludeItemTypes = request.GetIncludeItemTypes(), + ExcludeItemTypes = request.GetExcludeItemTypes(), + Recursive = true, + SortBy = request.GetOrderBy(), + SortOrder = request.SortOrder ?? SortOrder.Ascending, + + Filter = i => ApplyAdditionalFilters(request, i, user, true, _libraryManager), + StartIndex = request.StartIndex, + IsMissing = request.IsMissing, + IsVirtualUnaired = request.IsVirtualUnaired, + IsUnaired = request.IsUnaired, + CollapseBoxSetItems = request.CollapseBoxSetItems, + NameLessThan = request.NameLessThan, + NameStartsWith = request.NameStartsWith, + NameStartsWithOrGreater = request.NameStartsWithOrGreater, + HasImdbId = request.HasImdbId, + IsYearMismatched = request.IsYearMismatched, + IsUnidentified = request.IsUnidentified, + IsPlaceHolder = request.IsPlaceHolder, + IsLocked = request.IsLocked, + IsInBoxSet = request.IsInBoxSet, + IsHD = request.IsHD, + Is3D = request.Is3D, + HasTvdbId = request.HasTvdbId, + HasTmdbId = request.HasTmdbId, + HasOverview = request.HasOverview, + HasOfficialRating = request.HasOfficialRating, + HasParentalRating = request.HasParentalRating, + HasSpecialFeature = request.HasSpecialFeature, + HasSubtitles = request.HasSubtitles, + HasThemeSong = request.HasThemeSong, + HasThemeVideo = request.HasThemeVideo, + HasTrailer = request.HasTrailer, + Tags = request.GetTags(), + OfficialRatings = request.GetOfficialRatings(), + Genres = request.GetGenres(), + Studios = request.GetStudios(), + StudioIds = request.GetStudioIds(), + Person = request.Person, + PersonIds = request.GetPersonIds(), + PersonTypes = request.GetPersonTypes(), + Years = request.GetYears(), + ImageTypes = request.GetImageTypes().ToArray(), + VideoTypes = request.GetVideoTypes().ToArray(), + AdjacentTo = request.AdjacentTo + }; + + if (!string.IsNullOrWhiteSpace(request.Ids)) + { + query.CollapseBoxSetItems = false; + } + + foreach (var filter in request.GetFilters()) + { + switch (filter) + { + case ItemFilter.Dislikes: + query.IsLiked = false; + break; + case ItemFilter.IsFavorite: + query.IsFavorite = true; + break; + case ItemFilter.IsFavoriteOrLikes: + query.IsFavoriteOrLiked = true; + break; + case ItemFilter.IsFolder: + query.IsFolder = true; + break; + case ItemFilter.IsNotFolder: + query.IsFolder = false; + break; + case ItemFilter.IsPlayed: + query.IsPlayed = true; + break; + case ItemFilter.IsRecentlyAdded: + break; + case ItemFilter.IsResumable: + query.IsResumable = true; + break; + case ItemFilter.IsUnplayed: + query.IsPlayed = false; + break; + case ItemFilter.Likes: + query.IsLiked = true; + break; + } + } + + if (request.HasQueryLimit) + query.Limit = request.Limit; + return query; + } + + /// <summary> Applies filtering. </summary> + /// <param name="items"> The items. </param> + /// <param name="filter"> The filter. </param> + /// <param name="user"> The user. </param> + /// <param name="repository"> The repository. </param> + /// <returns> IEnumerable{BaseItem}. </returns> + internal static IEnumerable<BaseItem> ApplyFilter(IEnumerable<BaseItem> items, ItemFilter filter, User user, IUserDataManager repository) + { + // Avoid implicitly captured closure + var currentUser = user; + + switch (filter) + { + case ItemFilter.IsFavoriteOrLikes: + return items.Where(item => + { + var userdata = repository.GetUserData(user.Id, item.GetUserDataKey()); + + if (userdata == null) + { + return false; + } + + var likes = userdata.Likes ?? false; + var favorite = userdata.IsFavorite; + + return likes || favorite; + }); + + case ItemFilter.Likes: + return items.Where(item => + { + var userdata = repository.GetUserData(user.Id, item.GetUserDataKey()); + + return userdata != null && userdata.Likes.HasValue && userdata.Likes.Value; + }); + + case ItemFilter.Dislikes: + return items.Where(item => + { + var userdata = repository.GetUserData(user.Id, item.GetUserDataKey()); + + return userdata != null && userdata.Likes.HasValue && !userdata.Likes.Value; + }); + + case ItemFilter.IsFavorite: + return items.Where(item => + { + var userdata = repository.GetUserData(user.Id, item.GetUserDataKey()); + + return userdata != null && userdata.IsFavorite; + }); + + case ItemFilter.IsResumable: + return items.Where(item => + { + var userdata = repository.GetUserData(user.Id, item.GetUserDataKey()); + + return userdata != null && userdata.PlaybackPositionTicks > 0; + }); + + case ItemFilter.IsPlayed: + return items.Where(item => item.IsPlayed(currentUser)); + + case ItemFilter.IsUnplayed: + return items.Where(item => item.IsUnplayed(currentUser)); + + case ItemFilter.IsFolder: + return items.Where(item => item.IsFolder); + + case ItemFilter.IsNotFolder: + return items.Where(item => !item.IsFolder); + + case ItemFilter.IsRecentlyAdded: + return items.Where(item => (DateTime.UtcNow - item.DateCreated).TotalDays <= 10); + } + + return items; + } + + /// <summary> Applies the additional filters. </summary> + /// <param name="request"> The request. </param> + /// <param name="i"> Zero-based index of the. </param> + /// <param name="user"> The user. </param> + /// <param name="isPreFiltered"> true if this object is pre filtered. </param> + /// <param name="libraryManager"> Manager for library. </param> + /// <returns> true if it succeeds, false if it fails. </returns> + private bool ApplyAdditionalFilters(BaseReportRequest request, BaseItem i, User user, bool isPreFiltered, ILibraryManager libraryManager) + { + var video = i as Video; + + if (!isPreFiltered) + { + var mediaTypes = request.GetMediaTypes(); + if (mediaTypes.Length > 0) + { + if (!(!string.IsNullOrEmpty(i.MediaType) && mediaTypes.Contains(i.MediaType, StringComparer.OrdinalIgnoreCase))) + { + return false; + } + } + + if (request.IsPlayed.HasValue) + { + var val = request.IsPlayed.Value; + if (i.IsPlayed(user) != val) + { + return false; + } + } + + // Exclude item types + var excluteItemTypes = request.GetExcludeItemTypes(); + if (excluteItemTypes.Length > 0 && excluteItemTypes.Contains(i.GetType().Name, StringComparer.OrdinalIgnoreCase)) + { + return false; + } + + // Include item types + var includeItemTypes = request.GetIncludeItemTypes(); + if (includeItemTypes.Length > 0 && !includeItemTypes.Contains(i.GetType().Name, StringComparer.OrdinalIgnoreCase)) + { + return false; + } + + if (request.IsInBoxSet.HasValue) + { + var val = request.IsInBoxSet.Value; + if (i.Parents.OfType<BoxSet>().Any() != val) + { + return false; + } + } + + // Filter by Video3DFormat + if (request.Is3D.HasValue) + { + var val = request.Is3D.Value; + + if (video == null || val != video.Video3DFormat.HasValue) + { + return false; + } + } + + if (request.IsHD.HasValue) + { + var val = request.IsHD.Value; + + if (video == null || val != video.IsHD) + { + return false; + } + } + + if (request.IsUnidentified.HasValue) + { + var val = request.IsUnidentified.Value; + if (i.IsUnidentified != val) + { + return false; + } + } + + if (request.IsLocked.HasValue) + { + var val = request.IsLocked.Value; + if (i.IsLocked != val) + { + return false; + } + } + + if (request.HasOverview.HasValue) + { + var filterValue = request.HasOverview.Value; + + var hasValue = !string.IsNullOrEmpty(i.Overview); + + if (hasValue != filterValue) + { + return false; + } + } + + if (request.HasImdbId.HasValue) + { + var filterValue = request.HasImdbId.Value; + + var hasValue = !string.IsNullOrEmpty(i.GetProviderId(MetadataProviders.Imdb)); + + if (hasValue != filterValue) + { + return false; + } + } + + if (request.HasTmdbId.HasValue) + { + var filterValue = request.HasTmdbId.Value; + + var hasValue = !string.IsNullOrEmpty(i.GetProviderId(MetadataProviders.Tmdb)); + + if (hasValue != filterValue) + { + return false; + } + } + + if (request.HasTvdbId.HasValue) + { + var filterValue = request.HasTvdbId.Value; + + var hasValue = !string.IsNullOrEmpty(i.GetProviderId(MetadataProviders.Tvdb)); + + if (hasValue != filterValue) + { + return false; + } + } + + if (request.IsYearMismatched.HasValue) + { + var filterValue = request.IsYearMismatched.Value; + + if (UserViewBuilder.IsYearMismatched(i, libraryManager) != filterValue) + { + return false; + } + } + + if (request.HasOfficialRating.HasValue) + { + var filterValue = request.HasOfficialRating.Value; + + var hasValue = !string.IsNullOrEmpty(i.OfficialRating); + + if (hasValue != filterValue) + { + return false; + } + } + + if (request.IsPlaceHolder.HasValue) + { + var filterValue = request.IsPlaceHolder.Value; + + var isPlaceHolder = false; + + var hasPlaceHolder = i as ISupportsPlaceHolders; + + if (hasPlaceHolder != null) + { + isPlaceHolder = hasPlaceHolder.IsPlaceHolder; + } + + if (isPlaceHolder != filterValue) + { + return false; + } + } + + if (request.HasSpecialFeature.HasValue) + { + var filterValue = request.HasSpecialFeature.Value; + + var movie = i as IHasSpecialFeatures; + + if (movie != null) + { + var ok = filterValue + ? movie.SpecialFeatureIds.Count > 0 + : movie.SpecialFeatureIds.Count == 0; + + if (!ok) + { + return false; + } + } + else + { + return false; + } + } + + if (request.HasSubtitles.HasValue) + { + var val = request.HasSubtitles.Value; + + if (video == null || val != video.HasSubtitles) + { + return false; + } + } + + if (request.HasParentalRating.HasValue) + { + var val = request.HasParentalRating.Value; + + var rating = i.CustomRating; + + if (string.IsNullOrEmpty(rating)) + { + rating = i.OfficialRating; + } + + if (val) + { + if (string.IsNullOrEmpty(rating)) + { + return false; + } + } + else + { + if (!string.IsNullOrEmpty(rating)) + { + return false; + } + } + } + + if (request.HasTrailer.HasValue) + { + var val = request.HasTrailer.Value; + var trailerCount = 0; + + var hasTrailers = i as IHasTrailers; + if (hasTrailers != null) + { + trailerCount = hasTrailers.GetTrailerIds().Count; + } + + var ok = val ? trailerCount > 0 : trailerCount == 0; + + if (!ok) + { + return false; + } + } + + if (request.HasThemeSong.HasValue) + { + var filterValue = request.HasThemeSong.Value; + + var themeCount = 0; + var iHasThemeMedia = i as IHasThemeMedia; + + if (iHasThemeMedia != null) + { + themeCount = iHasThemeMedia.ThemeSongIds.Count; + } + var ok = filterValue ? themeCount > 0 : themeCount == 0; + + if (!ok) + { + return false; + } + } + + if (request.HasThemeVideo.HasValue) + { + var filterValue = request.HasThemeVideo.Value; + + var themeCount = 0; + var iHasThemeMedia = i as IHasThemeMedia; + + if (iHasThemeMedia != null) + { + themeCount = iHasThemeMedia.ThemeVideoIds.Count; + } + var ok = filterValue ? themeCount > 0 : themeCount == 0; + + if (!ok) + { + return false; + } + } + + // Apply tag filter + var tags = request.GetTags(); + if (tags.Length > 0) + { + var hasTags = i as IHasTags; + if (hasTags == null) + { + return false; + } + if (!(tags.Any(v => hasTags.Tags.Contains(v, StringComparer.OrdinalIgnoreCase)))) + { + return false; + } + } + + // Apply official rating filter + var officialRatings = request.GetOfficialRatings(); + if (officialRatings.Length > 0 && !officialRatings.Contains(i.OfficialRating ?? string.Empty)) + { + return false; + } + + // Apply genre filter + var genres = request.GetGenres(); + if (genres.Length > 0 && !(genres.Any(v => i.Genres.Contains(v, StringComparer.OrdinalIgnoreCase)))) + { + return false; + } + + // Filter by VideoType + var videoTypes = request.GetVideoTypes(); + if (videoTypes.Length > 0 && (video == null || !videoTypes.Contains(video.VideoType))) + { + return false; + } + + var imageTypes = request.GetImageTypes().ToList(); + if (imageTypes.Count > 0) + { + if (!(imageTypes.Any(i.HasImage))) + { + return false; + } + } + + // Apply studio filter + var studios = request.GetStudios(); + if (studios.Length > 0 && !studios.Any(v => i.Studios.Contains(v, StringComparer.OrdinalIgnoreCase))) + { + return false; + } + + // Apply studio filter + var studioIds = request.GetStudioIds(); + if (studioIds.Length > 0 && !studioIds.Any(id => + { + var studioItem = libraryManager.GetItemById(id); + return studioItem != null && i.Studios.Contains(studioItem.Name, StringComparer.OrdinalIgnoreCase); + })) + { + return false; + } + + // Apply year filter + var years = request.GetYears(); + if (years.Length > 0 && !(i.ProductionYear.HasValue && years.Contains(i.ProductionYear.Value))) + { + return false; + } + + // Apply person filter + var personIds = request.GetPersonIds(); + if (personIds.Length > 0) + { + var names = personIds + .Select(libraryManager.GetItemById) + .Select(p => p == null ? "-1" : p.Name) + .ToList(); + + if (!(names.Any(v => _libraryManager.GetPeople(i).Select(p => p.Name).Contains(v, StringComparer.OrdinalIgnoreCase)))) + { + return false; + } + } + + // Apply person filter + if (!string.IsNullOrEmpty(request.Person)) + { + var personTypes = request.GetPersonTypes(); + + if (personTypes.Length == 0) + { + if (!(_libraryManager.GetPeople(i).Any(p => string.Equals(p.Name, request.Person, StringComparison.OrdinalIgnoreCase)))) + { + return false; + } + } + else + { + var types = personTypes; + + var ok = new[] { i }.Any(item => + _libraryManager.GetPeople(i).Any(p => + p.Name.Equals(request.Person, StringComparison.OrdinalIgnoreCase) && (types.Contains(p.Type, StringComparer.OrdinalIgnoreCase) || types.Contains(p.Role, StringComparer.OrdinalIgnoreCase)))); + + if (!ok) + { + return false; + } + } + } + } + + if (request.MinCommunityRating.HasValue) + { + var val = request.MinCommunityRating.Value; + + if (!(i.CommunityRating.HasValue && i.CommunityRating >= val)) + { + return false; + } + } + + if (request.MinCriticRating.HasValue) + { + var val = request.MinCriticRating.Value; + + var hasCriticRating = i as IHasCriticRating; + + if (hasCriticRating != null) + { + if (!(hasCriticRating.CriticRating.HasValue && hasCriticRating.CriticRating >= val)) + { + return false; + } + } + else + { + return false; + } + } + + // Artists + if (!string.IsNullOrEmpty(request.ArtistIds)) + { + var artistIds = request.ArtistIds.Split('|'); + + var audio = i as IHasArtist; + + if (!(audio != null && artistIds.Any(id => + { + var artistItem = libraryManager.GetItemById(id); + return artistItem != null && audio.HasAnyArtist(artistItem.Name); + }))) + { + return false; + } + } + + // Artists + if (!string.IsNullOrEmpty(request.Artists)) + { + var artists = request.Artists.Split('|'); + + var audio = i as IHasArtist; + + if (!(audio != null && artists.Any(audio.HasAnyArtist))) + { + return false; + } + } + + // Albums + if (!string.IsNullOrEmpty(request.Albums)) + { + var albums = request.Albums.Split('|'); + + var audio = i as Audio; + + if (audio != null) + { + if (!albums.Any(a => string.Equals(a, audio.Album, StringComparison.OrdinalIgnoreCase))) + { + return false; + } + } + + var album = i as MusicAlbum; + + if (album != null) + { + if (!albums.Any(a => string.Equals(a, album.Name, StringComparison.OrdinalIgnoreCase))) + { + return false; + } + } + + var musicVideo = i as MusicVideo; + + if (musicVideo != null) + { + if (!albums.Any(a => string.Equals(a, musicVideo.Album, StringComparison.OrdinalIgnoreCase))) + { + return false; + } + } + + return false; + } + + // Min index number + if (request.MinIndexNumber.HasValue) + { + if (!(i.IndexNumber.HasValue && i.IndexNumber.Value >= request.MinIndexNumber.Value)) + { + return false; + } + } + + // Min official rating + if (!string.IsNullOrEmpty(request.MinOfficialRating)) + { + var level = _localization.GetRatingLevel(request.MinOfficialRating); + + if (level.HasValue) + { + var rating = i.CustomRating; + + if (string.IsNullOrEmpty(rating)) + { + rating = i.OfficialRating; + } + + if (!string.IsNullOrEmpty(rating)) + { + var itemLevel = _localization.GetRatingLevel(rating); + + if (!(!itemLevel.HasValue || itemLevel.Value >= level.Value)) + { + return false; + } + } + } + } + + // Max official rating + if (!string.IsNullOrEmpty(request.MaxOfficialRating)) + { + var level = _localization.GetRatingLevel(request.MaxOfficialRating); + + if (level.HasValue) + { + var rating = i.CustomRating; + + if (string.IsNullOrEmpty(rating)) + { + rating = i.OfficialRating; + } + + if (!string.IsNullOrEmpty(rating)) + { + var itemLevel = _localization.GetRatingLevel(rating); + + if (!(!itemLevel.HasValue || itemLevel.Value <= level.Value)) + { + return false; + } + } + } + } + + // LocationTypes + if (!string.IsNullOrEmpty(request.LocationTypes)) + { + var vals = request.LocationTypes.Split(','); + if (!vals.Contains(i.LocationType.ToString(), StringComparer.OrdinalIgnoreCase)) + { + return false; + } + } + + // ExcludeLocationTypes + if (!string.IsNullOrEmpty(request.ExcludeLocationTypes)) + { + var vals = request.ExcludeLocationTypes.Split(','); + if (vals.Contains(i.LocationType.ToString(), StringComparer.OrdinalIgnoreCase)) + { + return false; + } + } + + if (!string.IsNullOrEmpty(request.AlbumArtistStartsWithOrGreater)) + { + var ok = new[] { i }.OfType<IHasAlbumArtist>() + .Any(p => string.Compare(request.AlbumArtistStartsWithOrGreater, p.AlbumArtists.FirstOrDefault(), StringComparison.CurrentCultureIgnoreCase) < 1); + + if (!ok) + { + return false; + } + } + + // Filter by Series Status + if (!string.IsNullOrEmpty(request.SeriesStatus)) + { + var vals = request.SeriesStatus.Split(','); + + var ok = new[] { i }.OfType<Series>().Any(p => p.Status.HasValue && vals.Contains(p.Status.Value.ToString(), StringComparer.OrdinalIgnoreCase)); + + if (!ok) + { + return false; + } + } + + // Filter by Series AirDays + if (!string.IsNullOrEmpty(request.AirDays)) + { + var days = request.AirDays.Split(',').Select(d => (DayOfWeek)Enum.Parse(typeof(DayOfWeek), d, true)); + + var ok = new[] { i }.OfType<Series>().Any(p => p.AirDays != null && days.Any(d => p.AirDays.Contains(d))); + + if (!ok) + { + return false; + } + } + + if (request.MinPlayers.HasValue) + { + var filterValue = request.MinPlayers.Value; + + var game = i as Game; + + if (game != null) + { + var players = game.PlayersSupported ?? 1; + + var ok = players >= filterValue; + + if (!ok) + { + return false; + } + } + else + { + return false; + } + } + + if (request.MaxPlayers.HasValue) + { + var filterValue = request.MaxPlayers.Value; + + var game = i as Game; + + if (game != null) + { + var players = game.PlayersSupported ?? 1; + + var ok = players <= filterValue; + + if (!ok) + { + return false; + } + } + else + { + return false; + } + } + + if (request.ParentIndexNumber.HasValue) + { + var filterValue = request.ParentIndexNumber.Value; + + var episode = i as Episode; + + if (episode != null) + { + if (episode.ParentIndexNumber.HasValue && episode.ParentIndexNumber.Value != filterValue) + { + return false; + } + } + + var song = i as Audio; + + if (song != null) + { + if (song.ParentIndexNumber.HasValue && song.ParentIndexNumber.Value != filterValue) + { + return false; + } + } + } + + if (request.AiredDuringSeason.HasValue) + { + var episode = i as Episode; + + if (episode == null) + { + return false; + } + + if (!Series.FilterEpisodesBySeason(new[] { episode }, request.AiredDuringSeason.Value, true).Any()) + { + return false; + } + } + + if (!string.IsNullOrEmpty(request.MinPremiereDate)) + { + var date = DateTime.Parse(request.MinPremiereDate, null, DateTimeStyles.RoundtripKind).ToUniversalTime(); + + if (!(i.PremiereDate.HasValue && i.PremiereDate.Value >= date)) + { + return false; + } + } + + if (!string.IsNullOrEmpty(request.MaxPremiereDate)) + { + var date = DateTime.Parse(request.MaxPremiereDate, null, DateTimeStyles.RoundtripKind).ToUniversalTime(); + + if (!(i.PremiereDate.HasValue && i.PremiereDate.Value <= date)) + { + return false; + } + } + + return true; + } + + /// <summary> Applies the paging. </summary> + /// <param name="request"> The request. </param> + /// <param name="items"> The items. </param> + /// <returns> IEnumerable{BaseItem}. </returns> + private IEnumerable<BaseItem> ApplyPaging(GetItems request, IEnumerable<BaseItem> items) + { + // Start at + if (request.StartIndex.HasValue) + { + items = items.Skip(request.StartIndex.Value); + } + + // Return limit + if (request.Limit.HasValue) + { + items = items.Take(request.Limit.Value); + } + + return items; + } + + } } diff --git a/MediaBrowser.Api/Reports/Stat/ReportStatBuilder.cs b/MediaBrowser.Api/Reports/Stat/ReportStatBuilder.cs new file mode 100644 index 000000000..541bb92d9 --- /dev/null +++ b/MediaBrowser.Api/Reports/Stat/ReportStatBuilder.cs @@ -0,0 +1,214 @@ +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; +using MediaBrowser.Model.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MediaBrowser.Api.Reports +{ + /// <summary> A report stat builder. </summary> + /// <seealso cref="T:MediaBrowser.Api.Reports.ReportBuilderBase"/> + public class ReportStatBuilder : ReportBuilderBase + { + /// <summary> + /// Initializes a new instance of the MediaBrowser.Api.Reports.ReportStatBuilder class. </summary> + /// <param name="libraryManager"> Manager for library. </param> + public ReportStatBuilder(ILibraryManager libraryManager) + : base(libraryManager) + { + } + + /// <summary> Gets report stat result. </summary> + /// <param name="items"> The items. </param> + /// <param name="reportRowType"> Type of the report row. </param> + /// <param name="topItem"> The top item. </param> + /// <returns> The report stat result. </returns> + public ReportStatResult GetReportStatResult(BaseItem[] items, ReportViewType reportRowType, int topItem = 5) + { + ReportStatResult result = new ReportStatResult(); + result = this.GetResultGenres(result, items, topItem); + result = this.GetResultStudios(result, items, topItem); + result = this.GetResultPersons(result, items, topItem); + result = this.GetResultProductionYears(result, items, topItem); + result = this.GetResulProductionLocations(result, items, topItem); + result = this.GetResultCommunityRatings(result, items, topItem); + result = this.GetResultParentalRatings(result, items, topItem); + + switch (reportRowType) + { + case ReportViewType.Season: + case ReportViewType.Series: + case ReportViewType.MusicAlbum: + case ReportViewType.MusicArtist: + case ReportViewType.Game: + break; + case ReportViewType.Movie: + case ReportViewType.BoxSet: + + break; + case ReportViewType.Book: + case ReportViewType.Episode: + case ReportViewType.Video: + case ReportViewType.MusicVideo: + case ReportViewType.Trailer: + case ReportViewType.Audio: + case ReportViewType.BaseItem: + default: + break; + } + + result.Groups = result.Groups.OrderByDescending(n => n.Items.Count()).ToList(); + + return result; + } + + private ReportStatResult GetResultGenres(ReportStatResult result, BaseItem[] items, int topItem = 5) + { + this.GetGroups(result, ReportHelper.GetServerLocalizedString("HeaderGenres"), topItem, + items.SelectMany(x => x.Genres) + .GroupBy(x => x) + .OrderByDescending(x => x.Count()) + .Take(topItem) + .Select(x => new ReportStatItem + { + Name = x.Key, + Value = x.Count().ToString(), + Id = GetGenreID(x.Key) + })); + return result; + + } + + private ReportStatResult GetResultStudios(ReportStatResult result, BaseItem[] items, int topItem = 5) + { + this.GetGroups(result, ReportHelper.GetServerLocalizedString("HeaderStudios"), topItem, + items.SelectMany(x => x.Studios) + .GroupBy(x => x) + .OrderByDescending(x => x.Count()) + .Take(topItem) + .Select(x => new ReportStatItem + { + Name = x.Key, + Value = x.Count().ToString(), + Id = GetStudioID(x.Key) + }) + ); + + return result; + + } + + private ReportStatResult GetResultPersons(ReportStatResult result, BaseItem[] items, int topItem = 5) + { + List<string> t = new List<string> { PersonType.Actor, PersonType.Composer, PersonType.Director, PersonType.GuestStar, PersonType.Producer, PersonType.Writer, "Artist", "AlbumArtist" }; + foreach (var item in t) + { + this.GetGroups(result, ReportHelper.GetServerLocalizedString("Option" + item), topItem, + items.SelectMany(x => _libraryManager.GetPeople(x)) + .Where(n => n.Type == item) + .GroupBy(x => x.Name) + .OrderByDescending(x => x.Count()) + .Take(topItem) + .Select(x => new ReportStatItem + { + Name = x.Key, + Value = x.Count().ToString(), + Id = GetPersonID(x.Key) + }) + ); + } + + return result; + } + + private ReportStatResult GetResultCommunityRatings(ReportStatResult result, BaseItem[] items, int topItem = 5) + { + this.GetGroups(result, ReportHelper.GetServerLocalizedString("LabelCommunityRating"), topItem, + items.Where(x => x.CommunityRating != null && x.CommunityRating > 0) + .GroupBy(x => x.CommunityRating) + .OrderByDescending(x => x.Count()) + .Take(topItem) + .Select(x => new ReportStatItem + { + Name = x.Key.ToString(), + Value = x.Count().ToString() + }) + ); + + return result; + } + + private ReportStatResult GetResultParentalRatings(ReportStatResult result, BaseItem[] items, int topItem = 5) + { + this.GetGroups(result, ReportHelper.GetServerLocalizedString("HeaderParentalRatings"), topItem, + items.Where(x => x.OfficialRating != null) + .GroupBy(x => x.OfficialRating) + .OrderByDescending(x => x.Count()) + .Take(topItem) + .Select(x => new ReportStatItem + { + Name = x.Key.ToString(), + Value = x.Count().ToString() + }) + ); + + return result; + } + + + private ReportStatResult GetResultProductionYears(ReportStatResult result, BaseItem[] items, int topItem = 5) + { + this.GetGroups(result, ReportHelper.GetServerLocalizedString("HeaderYears"), topItem, + items.Where(x => x.ProductionYear != null && x.ProductionYear > 0) + .GroupBy(x => x.ProductionYear) + .OrderByDescending(x => x.Count()) + .Take(topItem) + .Select(x => new ReportStatItem + { + Name = x.Key.ToString(), + Value = x.Count().ToString() + }) + ); + + return result; + } + + private ReportStatResult GetResulProductionLocations(ReportStatResult result, BaseItem[] items, int topItem = 5) + { + this.GetGroups(result, ReportHelper.GetServerLocalizedString("HeaderCountries"), topItem, + items.OfType<IHasProductionLocations>() + .Where(x => x.ProductionLocations != null) + .SelectMany(x => x.ProductionLocations) + .GroupBy(x => x) + .OrderByDescending(x => x.Count()) + .Take(topItem) + .Select(x => new ReportStatItem + { + Name = x.Key.ToString(), + Value = x.Count().ToString() + }) + ); + + return result; + } + + + /// <summary> Gets the groups. </summary> + /// <param name="result"> The result. </param> + /// <param name="header"> The header. </param> + /// <param name="topItem"> The top item. </param> + /// <param name="top"> The top. </param> + private void GetGroups(ReportStatResult result, string header, int topItem, IEnumerable<ReportStatItem> top) + { + if (top.Count() > 0) + { + var group = new ReportStatGroup { Header = ReportStatGroup.FormatedHeader(header, topItem) }; + group.Items.AddRange(top); + result.Groups.Add(group); + } + } + } +} diff --git a/MediaBrowser.Api/Reports/Stat/ReportStatGroup.cs b/MediaBrowser.Api/Reports/Stat/ReportStatGroup.cs new file mode 100644 index 000000000..378eda935 --- /dev/null +++ b/MediaBrowser.Api/Reports/Stat/ReportStatGroup.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MediaBrowser.Api.Reports +{ + /// <summary> A report stat group. </summary> + public class ReportStatGroup + { + /// <summary> + /// Initializes a new instance of the MediaBrowser.Api.Reports.ReportStatGroup class. </summary> + public ReportStatGroup() + { + Items = new List<ReportStatItem>(); + TotalRecordCount = 0; + } + + /// <summary> Gets or sets the header. </summary> + /// <value> The header. </value> + public string Header { get; set; } + + /// <summary> Gets or sets the items. </summary> + /// <value> The items. </value> + public List<ReportStatItem> Items { get; set; } + + /// <summary> Gets or sets the number of total records. </summary> + /// <value> The total number of record count. </value> + public int TotalRecordCount { get; set; } + + internal static string FormatedHeader(string header, int topItem) + { + return string.Format("Top {0} {1}", topItem, header); + } + } +} diff --git a/MediaBrowser.Api/Reports/Stat/ReportStatItem.cs b/MediaBrowser.Api/Reports/Stat/ReportStatItem.cs new file mode 100644 index 000000000..c7b14511f --- /dev/null +++ b/MediaBrowser.Api/Reports/Stat/ReportStatItem.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MediaBrowser.Api.Reports +{ + /// <summary> A report stat item. </summary> + public class ReportStatItem + { + /// <summary> Gets or sets the name. </summary> + /// <value> The name. </value> + public string Name { get; set; } + + /// <summary> Gets or sets the image. </summary> + /// <value> The image. </value> + public string Image { get; set; } + + /// <summary> Gets or sets the value. </summary> + /// <value> The value. </value> + public string Value { get; set; } + + /// <summary> Gets or sets the identifier. </summary> + /// <value> The identifier. </value> + public string Id { get; set; } + + } +} diff --git a/MediaBrowser.Api/Reports/Stat/ReportStatResult.cs b/MediaBrowser.Api/Reports/Stat/ReportStatResult.cs new file mode 100644 index 000000000..66d5f16a4 --- /dev/null +++ b/MediaBrowser.Api/Reports/Stat/ReportStatResult.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MediaBrowser.Api.Reports +{ + /// <summary> Encapsulates the result of a report stat. </summary> + public class ReportStatResult + { + /// <summary> + /// Initializes a new instance of the MediaBrowser.Api.Reports.ReportStatResult class. </summary> + public ReportStatResult() + { + Groups = new List<ReportStatGroup>(); + TotalRecordCount = 0; + } + + /// <summary> Gets or sets the groups. </summary> + /// <value> The groups. </value> + public List<ReportStatGroup> Groups { get; set; } + + /// <summary> Gets or sets the number of total records. </summary> + /// <value> The total number of record count. </value> + public int TotalRecordCount { get; set; } + } +} diff --git a/MediaBrowser.Api/Session/SessionsService.cs b/MediaBrowser.Api/Session/SessionsService.cs index d4ea6a0eb..1160f685c 100644 --- a/MediaBrowser.Api/Session/SessionsService.cs +++ b/MediaBrowser.Api/Session/SessionsService.cs @@ -21,7 +21,7 @@ namespace MediaBrowser.Api.Session public class GetSessions : IReturn<List<SessionInfoDto>> { [ApiMember(Name = "ControllableByUserId", Description = "Optional. Filter by sessions that a given user is allowed to remote control.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid? ControllableByUserId { get; set; } + public string ControllableByUserId { get; set; } [ApiMember(Name = "DeviceId", Description = "Optional. Filter by device id.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] public string DeviceId { get; set; } @@ -200,7 +200,7 @@ namespace MediaBrowser.Api.Session public string Id { get; set; } [ApiMember(Name = "UserId", Description = "UserId Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")] - public Guid UserId { get; set; } + public string UserId { get; set; } } [Route("/Sessions/{Id}/Users/{UserId}", "DELETE", Summary = "Removes an additional user from a session")] @@ -211,7 +211,7 @@ namespace MediaBrowser.Api.Session public string Id { get; set; } [ApiMember(Name = "UserId", Description = "UserId Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")] - public Guid UserId { get; set; } + public string UserId { get; set; } } [Route("/Sessions/Capabilities", "POST", Summary = "Updates capabilities for a device")] @@ -375,15 +375,15 @@ namespace MediaBrowser.Api.Session result = result.Where(i => string.Equals(i.DeviceId, request.DeviceId, StringComparison.OrdinalIgnoreCase)); } - if (request.ControllableByUserId.HasValue) + if (!string.IsNullOrWhiteSpace(request.ControllableByUserId)) { result = result.Where(i => i.SupportsMediaControl); - var user = _userManager.GetUserById(request.ControllableByUserId.Value); + var user = _userManager.GetUserById(request.ControllableByUserId); if (!user.Policy.EnableRemoteControlOfOtherUsers) { - result = result.Where(i => !i.UserId.HasValue || i.ContainsUser(request.ControllableByUserId.Value)); + result = result.Where(i => !i.UserId.HasValue || i.ContainsUser(request.ControllableByUserId)); } if (!user.Policy.EnableSharedDeviceControl) diff --git a/MediaBrowser.Api/SimilarItemsHelper.cs b/MediaBrowser.Api/SimilarItemsHelper.cs index fb04dd030..d114446ee 100644 --- a/MediaBrowser.Api/SimilarItemsHelper.cs +++ b/MediaBrowser.Api/SimilarItemsHelper.cs @@ -32,7 +32,7 @@ namespace MediaBrowser.Api /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid? UserId { get; set; } + public string UserId { get; set; } /// <summary> /// The maximum number of items to return @@ -68,12 +68,12 @@ namespace MediaBrowser.Api /// <param name="includeInSearch">The include in search.</param> /// <param name="getSimilarityScore">The get similarity score.</param> /// <returns>ItemsResult.</returns> - internal static ItemsResult GetSimilarItemsResult(DtoOptions dtoOptions, IUserManager userManager, IItemRepository itemRepository, ILibraryManager libraryManager, IUserDataManager userDataRepository, IDtoService dtoService, ILogger logger, BaseGetSimilarItemsFromItem request, Func<BaseItem, bool> includeInSearch, Func<BaseItem, BaseItem, int> getSimilarityScore) + internal static ItemsResult GetSimilarItemsResult(DtoOptions dtoOptions, IUserManager userManager, IItemRepository itemRepository, ILibraryManager libraryManager, IUserDataManager userDataRepository, IDtoService dtoService, ILogger logger, BaseGetSimilarItemsFromItem request, Func<BaseItem, bool> includeInSearch, Func<BaseItem, List<PersonInfo>, List<PersonInfo>, BaseItem, int> getSimilarityScore) { - var user = request.UserId.HasValue ? userManager.GetUserById(request.UserId.Value) : null; + var user = !string.IsNullOrWhiteSpace(request.UserId) ? userManager.GetUserById(request.UserId) : null; var item = string.IsNullOrEmpty(request.Id) ? - (request.UserId.HasValue ? user.RootFolder : + (!string.IsNullOrWhiteSpace(request.UserId) ? user.RootFolder : libraryManager.RootFolder) : libraryManager.GetItemById(request.Id); Func<BaseItem, bool> filter = i => i.Id != item.Id && includeInSearch(i); @@ -82,7 +82,7 @@ namespace MediaBrowser.Api ? libraryManager.RootFolder.GetRecursiveChildren(filter) : user.RootFolder.GetRecursiveChildren(user, filter); - var items = GetSimilaritems(item, inputItems, getSimilarityScore) + var items = GetSimilaritems(item, libraryManager, inputItems, getSimilarityScore) .ToList(); IEnumerable<BaseItem> returnItems = items; @@ -106,15 +106,21 @@ namespace MediaBrowser.Api /// Gets the similaritems. /// </summary> /// <param name="item">The item.</param> + /// <param name="libraryManager">The library manager.</param> /// <param name="inputItems">The input items.</param> /// <param name="getSimilarityScore">The get similarity score.</param> /// <returns>IEnumerable{BaseItem}.</returns> - internal static IEnumerable<BaseItem> GetSimilaritems(BaseItem item, IEnumerable<BaseItem> inputItems, Func<BaseItem, BaseItem, int> getSimilarityScore) + internal static IEnumerable<BaseItem> GetSimilaritems(BaseItem item, ILibraryManager libraryManager, IEnumerable<BaseItem> inputItems, Func<BaseItem, List<PersonInfo>, List<PersonInfo>, BaseItem, int> getSimilarityScore) { var itemId = item.Id; inputItems = inputItems.Where(i => i.Id != itemId); + var itemPeople = libraryManager.GetPeople(item); + var allPeople = libraryManager.GetPeople(new InternalPeopleQuery + { + AppearsInItemId = item.Id + }); - return inputItems.Select(i => new Tuple<BaseItem, int>(i, getSimilarityScore(item, i))) + return inputItems.Select(i => new Tuple<BaseItem, int>(i, getSimilarityScore(item, itemPeople, allPeople, i))) .Where(i => i.Item2 > 2) .OrderByDescending(i => i.Item2) .Select(i => i.Item1); @@ -146,9 +152,11 @@ namespace MediaBrowser.Api /// Gets the similiarity score. /// </summary> /// <param name="item1">The item1.</param> + /// <param name="item1People">The item1 people.</param> + /// <param name="allPeople">All people.</param> /// <param name="item2">The item2.</param> /// <returns>System.Int32.</returns> - internal static int GetSimiliarityScore(BaseItem item1, BaseItem item2) + internal static int GetSimiliarityScore(BaseItem item1, List<PersonInfo> item1People, List<PersonInfo> allPeople, BaseItem item2) { var points = 0; @@ -169,11 +177,13 @@ namespace MediaBrowser.Api // Find common studios points += item1.Studios.Where(i => item2.Studios.Contains(i, StringComparer.OrdinalIgnoreCase)).Sum(i => 3); - var item2PeopleNames = item2.People.Select(i => i.Name) + var item2PeopleNames = allPeople.Where(i => i.ItemId == item2.Id) + .Select(i => i.Name) + .Where(i => !string.IsNullOrWhiteSpace(i)) .DistinctNames() .ToDictionary(i => i, StringComparer.OrdinalIgnoreCase); - points += item1.People.Where(i => item2PeopleNames.ContainsKey(i.Name)).Sum(i => + points += item1People.Where(i => item2PeopleNames.ContainsKey(i.Name)).Sum(i => { if (string.Equals(i.Type, PersonType.Director, StringComparison.OrdinalIgnoreCase) || string.Equals(i.Role, PersonType.Director, StringComparison.OrdinalIgnoreCase)) { diff --git a/MediaBrowser.Api/Social/SharingService.cs b/MediaBrowser.Api/Social/SharingService.cs new file mode 100644 index 000000000..608008455 --- /dev/null +++ b/MediaBrowser.Api/Social/SharingService.cs @@ -0,0 +1,164 @@ +using MediaBrowser.Common.Extensions; +using MediaBrowser.Controller.Dlna; +using MediaBrowser.Controller.Dto; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Net; +using MediaBrowser.Controller.Social; +using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Social; +using ServiceStack; +using System; +using System.IO; +using System.Threading.Tasks; + +namespace MediaBrowser.Api.Social +{ + [Route("/Social/Shares/{Id}", "GET", Summary = "Gets a share")] + [Authenticated] + public class GetSocialShareInfo : IReturn<SocialShareInfo> + { + [ApiMember(Name = "Id", Description = "The id of the item", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] + public string Id { get; set; } + } + + [Route("/Social/Shares/Public/{Id}", "GET", Summary = "Gets a share")] + public class GetPublicSocialShareInfo : IReturn<SocialShareInfo> + { + [ApiMember(Name = "Id", Description = "The id of the item", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] + public string Id { get; set; } + } + + [Route("/Social/Shares/Public/{Id}/Image", "GET", Summary = "Gets a share")] + public class GetShareImage + { + [ApiMember(Name = "Id", Description = "The id of the item", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] + public string Id { get; set; } + } + + [Route("/Social/Shares", "POST", Summary = "Creates a share")] + [Authenticated] + public class CreateShare : IReturn<SocialShareInfo> + { + [ApiMember(Name = "ItemId", Description = "The id of the item", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")] + public string ItemId { get; set; } + + [ApiMember(Name = "UserId", Description = "The user id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")] + public string UserId { get; set; } + } + + [Route("/Social/Shares/{Id}", "DELETE", Summary = "Deletes a share")] + [Authenticated] + public class DeleteShare : IReturnVoid + { + [ApiMember(Name = "Id", Description = "The id of the item", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "DELETE")] + public string Id { get; set; } + } + + [Route("/Social/Shares/Public/{Id}/Item", "GET", Summary = "Gets a share")] + public class GetSharedLibraryItem + { + [ApiMember(Name = "Id", Description = "The id of the item", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] + public string Id { get; set; } + } + + public class SharingService : BaseApiService + { + private readonly ISharingManager _sharingManager; + private readonly ILibraryManager _libraryManager; + private readonly IDlnaManager _dlnaManager; + private readonly IDtoService _dtoService; + + public SharingService(ISharingManager sharingManager, IDlnaManager dlnaManager, ILibraryManager libraryManager, IDtoService dtoService) + { + _sharingManager = sharingManager; + _dlnaManager = dlnaManager; + _libraryManager = libraryManager; + _dtoService = dtoService; + } + + public object Get(GetSocialShareInfo request) + { + var info = _sharingManager.GetShareInfo(request.Id); + + return ToOptimizedResult(info); + } + + public object Get(GetSharedLibraryItem request) + { + var info = _sharingManager.GetShareInfo(request.Id); + + if (info.ExpirationDate <= DateTime.UtcNow) + { + throw new ResourceNotFoundException(); + } + + var item = _libraryManager.GetItemById(info.ItemId); + + var dto = _dtoService.GetBaseItemDto(item, new DtoOptions()); + + return ToOptimizedResult(dto); + } + + public object Get(GetPublicSocialShareInfo request) + { + var info = _sharingManager.GetShareInfo(request.Id); + + if (info.ExpirationDate <= DateTime.UtcNow) + { + throw new ResourceNotFoundException(); + } + + return ToOptimizedResult(info); + } + + public async Task<object> Post(CreateShare request) + { + var info = await _sharingManager.CreateShare(request.ItemId, request.UserId).ConfigureAwait(false); + + return ToOptimizedResult(info); + } + + public void Delete(DeleteShare request) + { + var task = _sharingManager.DeleteShare(request.Id); + Task.WaitAll(task); + } + + public object Get(GetShareImage request) + { + var share = _sharingManager.GetShareInfo(request.Id); + + if (share == null) + { + throw new ResourceNotFoundException(); + } + if (share.ExpirationDate <= DateTime.UtcNow) + { + throw new ResourceNotFoundException(); + } + + var item = _libraryManager.GetItemById(share.ItemId); + + var image = item.GetImageInfo(ImageType.Primary, 0); + + if (image != null) + { + return ToStaticFileResult(image.Path); + } + + // Grab a dlna icon if nothing else is available + using (var response = _dlnaManager.GetIcon("logo240.jpg")) + { + using (var ms = new MemoryStream()) + { + response.Stream.CopyTo(ms); + + ms.Position = 0; + var bytes = ms.ToArray(); + return ResultFactory.GetResult(bytes, "image/" + response.Format.ToString().ToLower()); + } + } + + } + } +} diff --git a/MediaBrowser.Api/TvShowsService.cs b/MediaBrowser.Api/TvShowsService.cs index 9c9feead5..29a4a8bb5 100644 --- a/MediaBrowser.Api/TvShowsService.cs +++ b/MediaBrowser.Api/TvShowsService.cs @@ -77,7 +77,7 @@ namespace MediaBrowser.Api /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid UserId { get; set; } + public string UserId { get; set; } /// <summary> /// Skips over a given number of items within the results. Use for paging. @@ -130,7 +130,7 @@ namespace MediaBrowser.Api /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid UserId { get; set; } + public string UserId { get; set; } /// <summary> /// Fields to return within the items, in addition to basic information @@ -140,7 +140,7 @@ namespace MediaBrowser.Api public string Fields { get; set; } [ApiMember(Name = "Id", Description = "The series id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid Id { get; set; } + public string Id { get; set; } [ApiMember(Name = "Season", Description = "Optional filter by season number.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] public int? Season { get; set; } @@ -183,7 +183,7 @@ namespace MediaBrowser.Api /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid UserId { get; set; } + public string UserId { get; set; } /// <summary> /// Fields to return within the items, in addition to basic information @@ -193,7 +193,7 @@ namespace MediaBrowser.Api public string Fields { get; set; } [ApiMember(Name = "Id", Description = "The series id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid Id { get; set; } + public string Id { get; set; } [ApiMember(Name = "IsSpecialSeason", Description = "Optional. Filter by special season.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")] public bool? IsSpecialSeason { get; set; } diff --git a/MediaBrowser.Api/UserLibrary/ArtistsService.cs b/MediaBrowser.Api/UserLibrary/ArtistsService.cs index 9f3f17465..2393d0533 100644 --- a/MediaBrowser.Api/UserLibrary/ArtistsService.cs +++ b/MediaBrowser.Api/UserLibrary/ArtistsService.cs @@ -40,7 +40,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid? UserId { get; set; } + public string UserId { get; set; } } /// <summary> @@ -84,9 +84,9 @@ namespace MediaBrowser.Api.UserLibrary var dtoOptions = GetDtoOptions(request); - if (request.UserId.HasValue) + if (!string.IsNullOrWhiteSpace(request.UserId)) { - var user = UserManager.GetUserById(request.UserId.Value); + var user = UserManager.GetUserById(request.UserId); return DtoService.GetBaseItemDto(item, dtoOptions, user); } diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs index b2364ce3c..8084fd083 100644 --- a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs +++ b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs @@ -61,9 +61,9 @@ namespace MediaBrowser.Api.UserLibrary BaseItem parentItem; List<BaseItem> libraryItems = null; - if (request.UserId.HasValue) + if (!string.IsNullOrWhiteSpace(request.UserId)) { - user = UserManager.GetUserById(request.UserId.Value); + user = UserManager.GetUserById(request.UserId); parentItem = string.IsNullOrEmpty(request.ParentId) ? user.RootFolder : LibraryManager.GetItemById(request.ParentId); if (RequiresLibraryItems(request, dtoOptions)) @@ -92,7 +92,7 @@ namespace MediaBrowser.Api.UserLibrary { var folder = (Folder)parentItem; - if (request.UserId.HasValue) + if (!string.IsNullOrWhiteSpace(request.UserId)) { items = request.Recursive ? folder.GetRecursiveChildren(user, filter) : @@ -388,7 +388,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid? UserId { get; set; } + public string UserId { get; set; } [ApiMember(Name = "NameStartsWithOrGreater", Description = "Optional filter by items whose name is sorted equally or greater than a given input string.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] public string NameStartsWithOrGreater { get; set; } diff --git a/MediaBrowser.Api/UserLibrary/GameGenresService.cs b/MediaBrowser.Api/UserLibrary/GameGenresService.cs index 2f7430d33..f9d0f0d0f 100644 --- a/MediaBrowser.Api/UserLibrary/GameGenresService.cs +++ b/MediaBrowser.Api/UserLibrary/GameGenresService.cs @@ -37,7 +37,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid? UserId { get; set; } + public string UserId { get; set; } } [Authenticated] @@ -71,9 +71,9 @@ namespace MediaBrowser.Api.UserLibrary var dtoOptions = GetDtoOptions(request); - if (request.UserId.HasValue) + if (!string.IsNullOrWhiteSpace(request.UserId)) { - var user = UserManager.GetUserById(request.UserId.Value); + var user = UserManager.GetUserById(request.UserId); return DtoService.GetBaseItemDto(item, dtoOptions, user); } diff --git a/MediaBrowser.Api/UserLibrary/GenresService.cs b/MediaBrowser.Api/UserLibrary/GenresService.cs index 63c0575bf..070246886 100644 --- a/MediaBrowser.Api/UserLibrary/GenresService.cs +++ b/MediaBrowser.Api/UserLibrary/GenresService.cs @@ -39,7 +39,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid? UserId { get; set; } + public string UserId { get; set; } } /// <summary> @@ -76,9 +76,9 @@ namespace MediaBrowser.Api.UserLibrary var dtoOptions = GetDtoOptions(request); - if (request.UserId.HasValue) + if (!string.IsNullOrWhiteSpace(request.UserId)) { - var user = UserManager.GetUserById(request.UserId.Value); + var user = UserManager.GetUserById(request.UserId); return DtoService.GetBaseItemDto(item, dtoOptions, user); } diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs index 51f88d574..7120f3604 100644 --- a/MediaBrowser.Api/UserLibrary/ItemsService.cs +++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs @@ -30,7 +30,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "User Id", IsRequired = false, DataType = "string", ParameterType = "path", Verb = "GET")] - public Guid? UserId { get; set; } + public string UserId { get; set; } /// <summary> /// Limit results to items containing a specific person @@ -325,7 +325,7 @@ namespace MediaBrowser.Api.UserLibrary private async Task<ItemsResult> GetItems(GetItems request) { var parentItem = string.IsNullOrEmpty(request.ParentId) ? null : _libraryManager.GetItemById(request.ParentId); - var user = request.UserId.HasValue ? _userManager.GetUserById(request.UserId.Value) : null; + var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null; var result = await GetItemsToSerialize(request, user, parentItem).ConfigureAwait(false); @@ -990,7 +990,7 @@ namespace MediaBrowser.Api.UserLibrary .Select(p => p == null ? "-1" : p.Name) .ToList(); - if (!(names.Any(v => i.People.Select(p => p.Name).Contains(v, StringComparer.OrdinalIgnoreCase)))) + if (!(names.Any(v => libraryManager.GetPeople(i).Select(p => p.Name).Contains(v, StringComparer.OrdinalIgnoreCase)))) { return false; } @@ -1003,7 +1003,7 @@ namespace MediaBrowser.Api.UserLibrary if (personTypes.Length == 0) { - if (!(i.People.Any(p => string.Equals(p.Name, request.Person, StringComparison.OrdinalIgnoreCase)))) + if (!(libraryManager.GetPeople(i).Any(p => string.Equals(p.Name, request.Person, StringComparison.OrdinalIgnoreCase)))) { return false; } @@ -1013,8 +1013,7 @@ namespace MediaBrowser.Api.UserLibrary var types = personTypes; var ok = new[] { i }.Any(item => - item.People != null && - item.People.Any(p => + libraryManager.GetPeople(item).Any(p => p.Name.Equals(request.Person, StringComparison.OrdinalIgnoreCase) && (types.Contains(p.Type, StringComparer.OrdinalIgnoreCase) || types.Contains(p.Role, StringComparer.OrdinalIgnoreCase)))); if (!ok) diff --git a/MediaBrowser.Api/UserLibrary/MusicGenresService.cs b/MediaBrowser.Api/UserLibrary/MusicGenresService.cs index 1fe9dfaaa..e63d6c0f4 100644 --- a/MediaBrowser.Api/UserLibrary/MusicGenresService.cs +++ b/MediaBrowser.Api/UserLibrary/MusicGenresService.cs @@ -37,7 +37,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid? UserId { get; set; } + public string UserId { get; set; } } [Authenticated] @@ -71,9 +71,9 @@ namespace MediaBrowser.Api.UserLibrary var dtoOptions = GetDtoOptions(request); - if (request.UserId.HasValue) + if (!string.IsNullOrWhiteSpace(request.UserId)) { - var user = UserManager.GetUserById(request.UserId.Value); + var user = UserManager.GetUserById(request.UserId); return DtoService.GetBaseItemDto(item, dtoOptions, user); } diff --git a/MediaBrowser.Api/UserLibrary/PersonsService.cs b/MediaBrowser.Api/UserLibrary/PersonsService.cs index 08ee6e462..bd9898dcd 100644 --- a/MediaBrowser.Api/UserLibrary/PersonsService.cs +++ b/MediaBrowser.Api/UserLibrary/PersonsService.cs @@ -5,7 +5,6 @@ using MediaBrowser.Controller.Net; using MediaBrowser.Controller.Persistence; using MediaBrowser.Model.Dto; using ServiceStack; -using System; using System.Collections.Generic; using System.Linq; @@ -43,7 +42,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid? UserId { get; set; } + public string UserId { get; set; } } /// <summary> @@ -87,9 +86,9 @@ namespace MediaBrowser.Api.UserLibrary var dtoOptions = GetDtoOptions(request); - if (request.UserId.HasValue) + if (!string.IsNullOrWhiteSpace(request.UserId)) { - var user = UserManager.GetUserById(request.UserId.Value); + var user = UserManager.GetUserById(request.UserId); return DtoService.GetBaseItemDto(item, dtoOptions, user); } @@ -151,18 +150,16 @@ namespace MediaBrowser.Api.UserLibrary /// <param name="itemsList">The items list.</param> /// <param name="personTypes">The person types.</param> /// <returns>IEnumerable{PersonInfo}.</returns> - private IEnumerable<PersonInfo> GetAllPeople(IEnumerable<BaseItem> itemsList, string[] personTypes) + private IEnumerable<PersonInfo> GetAllPeople(IEnumerable<BaseItem> itemsList, IEnumerable<string> personTypes) { - var people = itemsList.SelectMany(i => i.People.OrderBy(p => p.SortOrder ?? int.MaxValue).ThenBy(p => p.Type)); + var allIds = itemsList.Select(i => i.Id).ToList(); - if (personTypes.Length > 0) + var allPeople = LibraryManager.GetPeople(new InternalPeopleQuery { - people = people.Where(p => - personTypes.Contains(p.Type ?? string.Empty, StringComparer.OrdinalIgnoreCase) || - personTypes.Contains(p.Role ?? string.Empty, StringComparer.OrdinalIgnoreCase)); - } + PersonTypes = personTypes.ToList() + }); - return people; + return allPeople.Where(i => allIds.Contains(i.ItemId)).OrderBy(p => p.SortOrder ?? int.MaxValue).ThenBy(p => p.Type); } } } diff --git a/MediaBrowser.Api/UserLibrary/PlaystateService.cs b/MediaBrowser.Api/UserLibrary/PlaystateService.cs index f66f307db..5f32725d8 100644 --- a/MediaBrowser.Api/UserLibrary/PlaystateService.cs +++ b/MediaBrowser.Api/UserLibrary/PlaystateService.cs @@ -23,7 +23,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")] - public Guid UserId { get; set; } + public string UserId { get; set; } [ApiMember(Name = "DatePlayed", Description = "The date the item was played (if any). Format = yyyyMMddHHmmss", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")] public string DatePlayed { get; set; } @@ -47,7 +47,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "DELETE")] - public Guid UserId { get; set; } + public string UserId { get; set; } /// <summary> /// Gets or sets the id. @@ -90,7 +90,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")] - public Guid UserId { get; set; } + public string UserId { get; set; } /// <summary> /// Gets or sets the id. @@ -143,7 +143,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")] - public Guid UserId { get; set; } + public string UserId { get; set; } /// <summary> /// Gets or sets the id. @@ -198,7 +198,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "DELETE")] - public Guid UserId { get; set; } + public string UserId { get; set; } /// <summary> /// Gets or sets the id. diff --git a/MediaBrowser.Api/UserLibrary/StudiosService.cs b/MediaBrowser.Api/UserLibrary/StudiosService.cs index ae1da0346..d6a7db14f 100644 --- a/MediaBrowser.Api/UserLibrary/StudiosService.cs +++ b/MediaBrowser.Api/UserLibrary/StudiosService.cs @@ -38,7 +38,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid? UserId { get; set; } + public string UserId { get; set; } } /// <summary> @@ -75,9 +75,9 @@ namespace MediaBrowser.Api.UserLibrary var dtoOptions = GetDtoOptions(request); - if (request.UserId.HasValue) + if (!string.IsNullOrWhiteSpace(request.UserId)) { - var user = UserManager.GetUserById(request.UserId.Value); + var user = UserManager.GetUserById(request.UserId); return DtoService.GetBaseItemDto(item, dtoOptions, user); } diff --git a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs index aa6e227d8..c2c481cb6 100644 --- a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs +++ b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs @@ -5,9 +5,7 @@ using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Net; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; -using MediaBrowser.Model.Library; using MediaBrowser.Model.Querying; -using MoreLinq; using ServiceStack; using System; using System.Collections.Generic; @@ -28,7 +26,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] - public Guid UserId { get; set; } + public string UserId { get; set; } /// <summary> /// Gets or sets the id. @@ -49,7 +47,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] - public Guid UserId { get; set; } + public string UserId { get; set; } } /// <summary> @@ -63,7 +61,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] - public Guid UserId { get; set; } + public string UserId { get; set; } /// <summary> /// Gets or sets the item id. @@ -84,7 +82,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")] - public Guid UserId { get; set; } + public string UserId { get; set; } /// <summary> /// Gets or sets the id. @@ -105,7 +103,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "DELETE")] - public Guid UserId { get; set; } + public string UserId { get; set; } /// <summary> /// Gets or sets the id. @@ -126,7 +124,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "DELETE")] - public Guid UserId { get; set; } + public string UserId { get; set; } /// <summary> /// Gets or sets the id. @@ -147,7 +145,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")] - public Guid UserId { get; set; } + public string UserId { get; set; } /// <summary> /// Gets or sets the id. @@ -175,7 +173,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] - public Guid UserId { get; set; } + public string UserId { get; set; } /// <summary> /// Gets or sets the id. @@ -196,7 +194,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] - public Guid UserId { get; set; } + public string UserId { get; set; } /// <summary> /// Gets or sets the id. @@ -515,7 +513,7 @@ namespace MediaBrowser.Api.UserLibrary /// <param name="itemId">The item id.</param> /// <param name="isFavorite">if set to <c>true</c> [is favorite].</param> /// <returns>Task{UserItemDataDto}.</returns> - private async Task<UserItemDataDto> MarkFavorite(Guid userId, string itemId, bool isFavorite) + private async Task<UserItemDataDto> MarkFavorite(string userId, string itemId, bool isFavorite) { var user = _userManager.GetUserById(userId); @@ -563,7 +561,7 @@ namespace MediaBrowser.Api.UserLibrary /// <param name="itemId">The item id.</param> /// <param name="likes">if set to <c>true</c> [likes].</param> /// <returns>Task{UserItemDataDto}.</returns> - private async Task<UserItemDataDto> UpdateUserItemRating(Guid userId, string itemId, bool? likes) + private async Task<UserItemDataDto> UpdateUserItemRating(string userId, string itemId, bool? likes) { var user = _userManager.GetUserById(userId); diff --git a/MediaBrowser.Api/UserLibrary/YearsService.cs b/MediaBrowser.Api/UserLibrary/YearsService.cs index d95496333..859b9f959 100644 --- a/MediaBrowser.Api/UserLibrary/YearsService.cs +++ b/MediaBrowser.Api/UserLibrary/YearsService.cs @@ -38,7 +38,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid? UserId { get; set; } + public string UserId { get; set; } } /// <summary> @@ -75,9 +75,9 @@ namespace MediaBrowser.Api.UserLibrary var dtoOptions = GetDtoOptions(request); - if (request.UserId.HasValue) + if (!string.IsNullOrWhiteSpace(request.UserId)) { - var user = UserManager.GetUserById(request.UserId.Value); + var user = UserManager.GetUserById(request.UserId); return DtoService.GetBaseItemDto(item, dtoOptions, user); } diff --git a/MediaBrowser.Api/VideosService.cs b/MediaBrowser.Api/VideosService.cs index d1b0eb05f..a65bee7ef 100644 --- a/MediaBrowser.Api/VideosService.cs +++ b/MediaBrowser.Api/VideosService.cs @@ -19,7 +19,7 @@ namespace MediaBrowser.Api public class GetAdditionalParts : IReturn<ItemsResult> { [ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid? UserId { get; set; } + public string UserId { get; set; } /// <summary> /// Gets or sets the id. @@ -71,10 +71,10 @@ namespace MediaBrowser.Api /// <returns>System.Object.</returns> public object Get(GetAdditionalParts request) { - var user = request.UserId.HasValue ? _userManager.GetUserById(request.UserId.Value) : null; + var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null; var item = string.IsNullOrEmpty(request.Id) - ? (request.UserId.HasValue + ? (!string.IsNullOrWhiteSpace(request.UserId) ? user.RootFolder : _libraryManager.RootFolder) : _libraryManager.GetItemById(request.Id); diff --git a/MediaBrowser.Common.Implementations/BaseApplicationPaths.cs b/MediaBrowser.Common.Implementations/BaseApplicationPaths.cs index 4ad63b2e3..9ba2effd3 100644 --- a/MediaBrowser.Common.Implementations/BaseApplicationPaths.cs +++ b/MediaBrowser.Common.Implementations/BaseApplicationPaths.cs @@ -24,7 +24,10 @@ namespace MediaBrowser.Common.Implementations /// <summary> /// Gets the path to the system folder /// </summary> - public string ProgramSystemPath { get { return Path.Combine(ProgramDataPath, "system"); } } + public string ProgramSystemPath + { + get { return Path.GetDirectoryName(ApplicationPath); } + } /// <summary> /// The _data directory diff --git a/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs b/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs index 94c91c55a..ae2148f08 100644 --- a/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs +++ b/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs @@ -105,6 +105,23 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager return client; } + private WebRequest CreateWebRequest(string url) + { + try + { + return WebRequest.Create(url); + } + catch (NotSupportedException) + { + //Webrequest creation does fail on MONO randomly when using WebRequest.Create + //the issue occurs in the GetCreator method here: http://www.oschina.net/code/explore/mono-2.8.1/mcs/class/System/System.Net/WebRequest.cs + + var type = Type.GetType("System.Net.HttpRequestCreator, System, Version=4.0.0.0,Culture=neutral, PublicKeyToken=b77a5c561934e089"); + var creator = Activator.CreateInstance(type, nonPublic: true) as IWebRequestCreate; + return creator.Create(new Uri(url)) as HttpWebRequest; + } + } + private WebRequest GetRequest(HttpRequestOptions options, string method, bool enableHttpCompression) { var request = WebRequest.Create(options.Url); @@ -723,9 +740,20 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager /// <returns>System.String.</returns> private string GetHostFromUrl(string url) { - var start = url.IndexOf("://", StringComparison.OrdinalIgnoreCase) + 3; - var len = url.IndexOf('/', start) - start; - return url.Substring(start, len); + var index = url.IndexOf("://", StringComparison.OrdinalIgnoreCase); + + if (index != -1) + { + url = url.Substring(index + 3); + var host = url.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries).FirstOrDefault(); + + if (!string.IsNullOrWhiteSpace(host)) + { + return host; + } + } + + return url; } /// <summary> diff --git a/MediaBrowser.Common.Implementations/Logging/NlogManager.cs b/MediaBrowser.Common.Implementations/Logging/NlogManager.cs index 77d9f80f9..698792802 100644 --- a/MediaBrowser.Common.Implementations/Logging/NlogManager.cs +++ b/MediaBrowser.Common.Implementations/Logging/NlogManager.cs @@ -85,6 +85,13 @@ namespace MediaBrowser.Common.Implementations.Logging { rule.EnableLoggingForLevel(level); } + foreach (var lev in rule.Levels.ToArray()) + { + if (lev < level) + { + rule.DisableLoggingForLevel(lev); + } + } } } diff --git a/MediaBrowser.Controller/Channels/ChannelAudioItem.cs b/MediaBrowser.Controller/Channels/ChannelAudioItem.cs index 82fe66c7b..aa4b6731c 100644 --- a/MediaBrowser.Controller/Channels/ChannelAudioItem.cs +++ b/MediaBrowser.Controller/Channels/ChannelAudioItem.cs @@ -15,7 +15,6 @@ namespace MediaBrowser.Controller.Channels { public string ExternalId { get; set; } - public string ChannelId { get; set; } public string DataVersion { get; set; } public ChannelItemType ChannelItemType { get; set; } diff --git a/MediaBrowser.Controller/Channels/ChannelFolderItem.cs b/MediaBrowser.Controller/Channels/ChannelFolderItem.cs index 641d37161..7e9da52a9 100644 --- a/MediaBrowser.Controller/Channels/ChannelFolderItem.cs +++ b/MediaBrowser.Controller/Channels/ChannelFolderItem.cs @@ -12,7 +12,6 @@ namespace MediaBrowser.Controller.Channels { public string ExternalId { get; set; } - public string ChannelId { get; set; } public string DataVersion { get; set; } public ChannelItemType ChannelItemType { get; set; } diff --git a/MediaBrowser.Controller/Channels/ChannelVideoItem.cs b/MediaBrowser.Controller/Channels/ChannelVideoItem.cs index ef3cc7cba..ca5e343f8 100644 --- a/MediaBrowser.Controller/Channels/ChannelVideoItem.cs +++ b/MediaBrowser.Controller/Channels/ChannelVideoItem.cs @@ -16,7 +16,6 @@ namespace MediaBrowser.Controller.Channels { public string ExternalId { get; set; } - public string ChannelId { get; set; } public string DataVersion { get; set; } public ChannelItemType ChannelItemType { get; set; } diff --git a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs index c060f53a6..8a77d7616 100644 --- a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs +++ b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs @@ -121,6 +121,15 @@ namespace MediaBrowser.Controller.Entities.Audio .Select(i => i.GetLookupInfo()) .ToList(); + var album = id.SongInfos + .Select(i => i.Album) + .FirstOrDefault(i => !string.IsNullOrWhiteSpace(i)); + + if (!string.IsNullOrWhiteSpace(album)) + { + id.Name = album; + } + return id; } } diff --git a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs index 4185590ab..f6d1d32a4 100644 --- a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs +++ b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs @@ -216,5 +216,14 @@ namespace MediaBrowser.Controller.Entities.Audio return hasArtist != null && hasArtist.HasAnyArtist(Name); }; } + + [IgnoreDataMember] + public override bool SupportsPeople + { + get + { + return false; + } + } } } diff --git a/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs b/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs index 971c09236..5f24dbf67 100644 --- a/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs +++ b/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs @@ -71,5 +71,14 @@ namespace MediaBrowser.Controller.Entities.Audio { return i => (i is IHasMusicGenres) && i.Genres.Contains(Name, StringComparer.OrdinalIgnoreCase); } + + [IgnoreDataMember] + public override bool SupportsPeople + { + get + { + return false; + } + } } } diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 8b6cbdc93..41329608e 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -35,7 +35,6 @@ namespace MediaBrowser.Controller.Entities { Genres = new List<string>(); Studios = new List<string>(); - People = new List<PersonInfo>(); ProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); LockedFields = new List<MetadataFields>(); ImageInfos = new List<ItemImageInfo>(); @@ -59,6 +58,12 @@ namespace MediaBrowser.Controller.Entities public List<ItemImageInfo> ImageInfos { get; set; } + /// <summary> + /// Gets or sets the channel identifier. + /// </summary> + /// <value>The channel identifier.</value> + public string ChannelId { get; set; } + [IgnoreDataMember] public virtual bool SupportsAddingToPlaylist { @@ -407,15 +412,6 @@ namespace MediaBrowser.Controller.Entities } } - public bool ContainsPerson(string name) - { - if (string.IsNullOrWhiteSpace(name)) - { - throw new ArgumentNullException("name"); - } - return People.Any(i => string.Equals(i.Name, name, StringComparison.OrdinalIgnoreCase)); - } - public string GetInternalMetadataPath() { var basePath = ConfigurationManager.ApplicationPaths.InternalMetadataPath; @@ -468,6 +464,8 @@ namespace MediaBrowser.Controller.Entities return sortable; } + public Guid ParentId { get; set; } + /// <summary> /// Gets or sets the parent. /// </summary> @@ -475,6 +473,12 @@ namespace MediaBrowser.Controller.Entities [IgnoreDataMember] public Folder Parent { get; set; } + public void SetParent(Folder parent) + { + Parent = parent; + ParentId = parent == null ? Guid.Empty : parent.Id; + } + [IgnoreDataMember] public IEnumerable<Folder> Parents { @@ -779,6 +783,12 @@ namespace MediaBrowser.Controller.Entities get { return IsFolder || Parent != null; } } + [IgnoreDataMember] + public virtual bool SupportsPeople + { + get { return true; } + } + /// <summary> /// Refreshes owned items such as trailers, theme videos, special features, etc. /// Returns true or false indicating if changes were found. @@ -1242,83 +1252,6 @@ namespace MediaBrowser.Controller.Entities /// <exception cref="System.ArgumentNullException"></exception> public void AddPerson(PersonInfo person) { - if (person == null) - { - throw new ArgumentNullException("person"); - } - - if (string.IsNullOrWhiteSpace(person.Name)) - { - throw new ArgumentNullException(); - } - - // Normalize - if (string.Equals(person.Role, PersonType.GuestStar, StringComparison.OrdinalIgnoreCase)) - { - person.Type = PersonType.GuestStar; - } - else if (string.Equals(person.Role, PersonType.Director, StringComparison.OrdinalIgnoreCase)) - { - person.Type = PersonType.Director; - } - else if (string.Equals(person.Role, PersonType.Producer, StringComparison.OrdinalIgnoreCase)) - { - person.Type = PersonType.Producer; - } - else if (string.Equals(person.Role, PersonType.Writer, StringComparison.OrdinalIgnoreCase)) - { - person.Type = PersonType.Writer; - } - - // If the type is GuestStar and there's already an Actor entry, then update it to avoid dupes - if (string.Equals(person.Type, PersonType.GuestStar, StringComparison.OrdinalIgnoreCase)) - { - var existing = People.FirstOrDefault(p => p.Name.Equals(person.Name, StringComparison.OrdinalIgnoreCase) && p.Type.Equals(PersonType.Actor, StringComparison.OrdinalIgnoreCase)); - - if (existing != null) - { - existing.Type = PersonType.GuestStar; - existing.SortOrder = person.SortOrder ?? existing.SortOrder; - return; - } - } - - if (string.Equals(person.Type, PersonType.Actor, StringComparison.OrdinalIgnoreCase)) - { - // If the actor already exists without a role and we have one, fill it in - var existing = People.FirstOrDefault(p => p.Name.Equals(person.Name, StringComparison.OrdinalIgnoreCase) && (p.Type.Equals(PersonType.Actor, StringComparison.OrdinalIgnoreCase) || p.Type.Equals(PersonType.GuestStar, StringComparison.OrdinalIgnoreCase))); - if (existing == null) - { - // Wasn't there - add it - People.Add(person); - } - else - { - // Was there, if no role and we have one - fill it in - if (string.IsNullOrWhiteSpace(existing.Role) && !string.IsNullOrWhiteSpace(person.Role)) - { - existing.Role = person.Role; - } - - existing.SortOrder = person.SortOrder ?? existing.SortOrder; - } - } - else - { - var existing = People.FirstOrDefault(p => - string.Equals(p.Name, person.Name, StringComparison.OrdinalIgnoreCase) && - string.Equals(p.Type, person.Type, StringComparison.OrdinalIgnoreCase)); - - // Check for dupes based on the combination of Name and Type - if (existing == null) - { - People.Add(person); - } - else - { - existing.SortOrder = person.SortOrder ?? existing.SortOrder; - } - } } /// <summary> diff --git a/MediaBrowser.Controller/Entities/BasePluginFolder.cs b/MediaBrowser.Controller/Entities/BasePluginFolder.cs index 1cc547790..5a1ad6b15 100644 --- a/MediaBrowser.Controller/Entities/BasePluginFolder.cs +++ b/MediaBrowser.Controller/Entities/BasePluginFolder.cs @@ -1,4 +1,6 @@ +using System.Runtime.Serialization; + namespace MediaBrowser.Controller.Entities { /// <summary> @@ -21,5 +23,14 @@ namespace MediaBrowser.Controller.Entities { return true; } + + [IgnoreDataMember] + public override bool SupportsPeople + { + get + { + return false; + } + } } } diff --git a/MediaBrowser.Controller/Entities/CollectionFolder.cs b/MediaBrowser.Controller/Entities/CollectionFolder.cs index bcf68263a..3a610be64 100644 --- a/MediaBrowser.Controller/Entities/CollectionFolder.cs +++ b/MediaBrowser.Controller/Entities/CollectionFolder.cs @@ -194,5 +194,14 @@ namespace MediaBrowser.Controller.Entities .Where(i => i.Path != null && PhysicalLocations.Contains(i.Path, StringComparer.OrdinalIgnoreCase)) .SelectMany(c => c.Children); } + + [IgnoreDataMember] + public override bool SupportsPeople + { + get + { + return false; + } + } } } diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index 821e6b5ca..22efb09e1 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -134,7 +134,7 @@ namespace MediaBrowser.Controller.Entities /// <exception cref="System.InvalidOperationException">Unable to add + item.Name</exception> public async Task AddChild(BaseItem item, CancellationToken cancellationToken) { - item.Parent = this; + item.SetParent(this); if (item.Id == Guid.Empty) { @@ -230,7 +230,7 @@ namespace MediaBrowser.Controller.Entities { RemoveChildrenInternal(new[] { item }); - item.Parent = null; + item.SetParent(null); return ItemRepository.SaveChildren(Id, ActualChildren.Select(i => i.Id).ToList(), cancellationToken); } @@ -783,11 +783,11 @@ namespace MediaBrowser.Controller.Entities return LibraryManager.GetOrAddByReferenceItem(item); } - item.Parent = this; + item.SetParent(this); } else { - child.Parent = this; + child.SetParent(this); LibraryManager.RegisterItem(child); item = child; } diff --git a/MediaBrowser.Controller/Entities/GameGenre.cs b/MediaBrowser.Controller/Entities/GameGenre.cs index c91acbe3f..bf448da0d 100644 --- a/MediaBrowser.Controller/Entities/GameGenre.cs +++ b/MediaBrowser.Controller/Entities/GameGenre.cs @@ -62,5 +62,14 @@ namespace MediaBrowser.Controller.Entities { return i => (i is Game) && i.Genres.Contains(Name, StringComparer.OrdinalIgnoreCase); } + + [IgnoreDataMember] + public override bool SupportsPeople + { + get + { + return false; + } + } } } diff --git a/MediaBrowser.Controller/Entities/GameSystem.cs b/MediaBrowser.Controller/Entities/GameSystem.cs index cf6916763..35f7e3350 100644 --- a/MediaBrowser.Controller/Entities/GameSystem.cs +++ b/MediaBrowser.Controller/Entities/GameSystem.cs @@ -58,5 +58,14 @@ namespace MediaBrowser.Controller.Entities return id; } + + [IgnoreDataMember] + public override bool SupportsPeople + { + get + { + return false; + } + } } } diff --git a/MediaBrowser.Controller/Entities/Genre.cs b/MediaBrowser.Controller/Entities/Genre.cs index cb68e5dae..233e1e0fd 100644 --- a/MediaBrowser.Controller/Entities/Genre.cs +++ b/MediaBrowser.Controller/Entities/Genre.cs @@ -66,5 +66,14 @@ namespace MediaBrowser.Controller.Entities { return i => !(i is Game) && !(i is IHasMusicGenres) && i.Genres.Contains(Name, StringComparer.OrdinalIgnoreCase); } + + [IgnoreDataMember] + public override bool SupportsPeople + { + get + { + return false; + } + } } } diff --git a/MediaBrowser.Controller/Entities/IHasId.cs b/MediaBrowser.Controller/Entities/IHasId.cs new file mode 100644 index 000000000..9698adf7a --- /dev/null +++ b/MediaBrowser.Controller/Entities/IHasId.cs @@ -0,0 +1,9 @@ +using System; + +namespace MediaBrowser.Controller.Entities +{ + public interface IHasId + { + Guid Id { get; } + } +} diff --git a/MediaBrowser.Controller/Entities/IHasImages.cs b/MediaBrowser.Controller/Entities/IHasImages.cs index 1871d7b68..ffb351c94 100644 --- a/MediaBrowser.Controller/Entities/IHasImages.cs +++ b/MediaBrowser.Controller/Entities/IHasImages.cs @@ -1,13 +1,12 @@ using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; -using System; using System.Collections.Generic; using System.IO; using System.Threading.Tasks; namespace MediaBrowser.Controller.Entities { - public interface IHasImages : IHasProviderIds + public interface IHasImages : IHasProviderIds, IHasId { /// <summary> /// Gets the name. @@ -28,12 +27,6 @@ namespace MediaBrowser.Controller.Entities string FileNameWithoutExtension { get; } /// <summary> - /// Gets the identifier. - /// </summary> - /// <value>The identifier.</value> - Guid Id { get; } - - /// <summary> /// Gets the type of the location. /// </summary> /// <value>The type of the location.</value> diff --git a/MediaBrowser.Controller/Entities/IHasMediaSources.cs b/MediaBrowser.Controller/Entities/IHasMediaSources.cs index 17a147806..85ce3c781 100644 --- a/MediaBrowser.Controller/Entities/IHasMediaSources.cs +++ b/MediaBrowser.Controller/Entities/IHasMediaSources.cs @@ -1,18 +1,11 @@ using MediaBrowser.Model.Dto; -using System; using System.Collections.Generic; namespace MediaBrowser.Controller.Entities { - public interface IHasMediaSources + public interface IHasMediaSources : IHasId { /// <summary> - /// Gets the identifier. - /// </summary> - /// <value>The identifier.</value> - Guid Id { get; } - - /// <summary> /// Gets the media sources. /// </summary> /// <param name="enablePathSubstitution">if set to <c>true</c> [enable path substitution].</param> diff --git a/MediaBrowser.Controller/Entities/IHasMetadata.cs b/MediaBrowser.Controller/Entities/IHasMetadata.cs index 3643c58b3..158bcb6d1 100644 --- a/MediaBrowser.Controller/Entities/IHasMetadata.cs +++ b/MediaBrowser.Controller/Entities/IHasMetadata.cs @@ -59,5 +59,11 @@ namespace MediaBrowser.Controller.Entities /// Afters the metadata refresh. /// </summary> void AfterMetadataRefresh(); + + /// <summary> + /// Gets a value indicating whether [supports people]. + /// </summary> + /// <value><c>true</c> if [supports people]; otherwise, <c>false</c>.</value> + bool SupportsPeople { get; } } } diff --git a/MediaBrowser.Controller/Entities/IHasProgramAttributes.cs b/MediaBrowser.Controller/Entities/IHasProgramAttributes.cs new file mode 100644 index 000000000..391c8f7a7 --- /dev/null +++ b/MediaBrowser.Controller/Entities/IHasProgramAttributes.cs @@ -0,0 +1,19 @@ +using MediaBrowser.Model.LiveTv; +using System; + +namespace MediaBrowser.Controller.Entities +{ + public interface IHasProgramAttributes + { + bool IsMovie { get; set; } + bool IsSports { get; set; } + bool IsNews { get; set; } + bool IsKids { get; set; } + bool IsRepeat { get; set; } + bool? IsHD { get; set; } + bool IsLive { get; set; } + bool IsPremiere { get; set; } + ProgramAudio? Audio { get; set; } + DateTime? OriginalAirDate { get; set; } + } +} diff --git a/MediaBrowser.Controller/Entities/IHasStartDate.cs b/MediaBrowser.Controller/Entities/IHasStartDate.cs new file mode 100644 index 000000000..a6714fb96 --- /dev/null +++ b/MediaBrowser.Controller/Entities/IHasStartDate.cs @@ -0,0 +1,9 @@ +using System; + +namespace MediaBrowser.Controller.Entities +{ + public interface IHasStartDate + { + DateTime StartDate { get; set; } + } +} diff --git a/MediaBrowser.Controller/Entities/IHasUserData.cs b/MediaBrowser.Controller/Entities/IHasUserData.cs index d576d90c4..34a820853 100644 --- a/MediaBrowser.Controller/Entities/IHasUserData.cs +++ b/MediaBrowser.Controller/Entities/IHasUserData.cs @@ -1,20 +1,13 @@ using MediaBrowser.Model.Dto; -using System; namespace MediaBrowser.Controller.Entities { /// <summary> /// Interface IHasUserData /// </summary> - public interface IHasUserData + public interface IHasUserData : IHasId { /// <summary> - /// Gets or sets the identifier. - /// </summary> - /// <value>The identifier.</value> - Guid Id { get; set; } - - /// <summary> /// Gets the user data key. /// </summary> /// <returns>System.String.</returns> diff --git a/MediaBrowser.Controller/Entities/IItemByName.cs b/MediaBrowser.Controller/Entities/IItemByName.cs index 14b69b8fd..e6667290c 100644 --- a/MediaBrowser.Controller/Entities/IItemByName.cs +++ b/MediaBrowser.Controller/Entities/IItemByName.cs @@ -6,7 +6,7 @@ namespace MediaBrowser.Controller.Entities /// <summary> /// Marker interface /// </summary> - public interface IItemByName + public interface IItemByName : IHasMetadata { /// <summary> /// Gets the tagged items. diff --git a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs index 727f756f1..faa9bc875 100644 --- a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs +++ b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs @@ -73,6 +73,18 @@ namespace MediaBrowser.Controller.Entities public string[] Tags { get; set; } public string[] OfficialRatings { get; set; } + public DateTime? MinStartDate { get; set; } + public DateTime? MaxStartDate { get; set; } + public DateTime? MinEndDate { get; set; } + public DateTime? MaxEndDate { get; set; } + public bool? IsAiring { get; set; } + + public bool? IsMovie { get; set; } + public bool? IsSports { get; set; } + public bool? IsKids { get; set; } + + public string[] ChannelIds { get; set; } + public InternalItemsQuery() { Tags = new string[] { }; @@ -89,6 +101,7 @@ namespace MediaBrowser.Controller.Entities Years = new int[] { }; PersonTypes = new string[] { }; PersonIds = new string[] { }; + ChannelIds = new string[] { }; } } } diff --git a/MediaBrowser.Controller/Entities/InternalPeopleQuery.cs b/MediaBrowser.Controller/Entities/InternalPeopleQuery.cs new file mode 100644 index 000000000..05d23d986 --- /dev/null +++ b/MediaBrowser.Controller/Entities/InternalPeopleQuery.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; + +namespace MediaBrowser.Controller.Entities +{ + public class InternalPeopleQuery + { + public Guid ItemId { get; set; } + public List<string> PersonTypes { get; set; } + public List<string> ExcludePersonTypes { get; set; } + public int? MaxListOrder { get; set; } + public Guid AppearsInItemId { get; set; } + public string NameContains { get; set; } + + public InternalPeopleQuery() + { + PersonTypes = new List<string>(); + ExcludePersonTypes = new List<string>(); + } + } +} diff --git a/MediaBrowser.Controller/Entities/PeopleHelper.cs b/MediaBrowser.Controller/Entities/PeopleHelper.cs new file mode 100644 index 000000000..3468ca2d5 --- /dev/null +++ b/MediaBrowser.Controller/Entities/PeopleHelper.cs @@ -0,0 +1,100 @@ +using MediaBrowser.Model.Entities; +using System; +using System.Collections.Generic; +using System.Linq; + +namespace MediaBrowser.Controller.Entities +{ + public static class PeopleHelper + { + public static void AddPerson(List<PersonInfo> people, PersonInfo person) + { + if (person == null) + { + throw new ArgumentNullException("person"); + } + + if (string.IsNullOrWhiteSpace(person.Name)) + { + throw new ArgumentNullException(); + } + + // Normalize + if (string.Equals(person.Role, PersonType.GuestStar, StringComparison.OrdinalIgnoreCase)) + { + person.Type = PersonType.GuestStar; + } + else if (string.Equals(person.Role, PersonType.Director, StringComparison.OrdinalIgnoreCase)) + { + person.Type = PersonType.Director; + } + else if (string.Equals(person.Role, PersonType.Producer, StringComparison.OrdinalIgnoreCase)) + { + person.Type = PersonType.Producer; + } + else if (string.Equals(person.Role, PersonType.Writer, StringComparison.OrdinalIgnoreCase)) + { + person.Type = PersonType.Writer; + } + + // If the type is GuestStar and there's already an Actor entry, then update it to avoid dupes + if (string.Equals(person.Type, PersonType.GuestStar, StringComparison.OrdinalIgnoreCase)) + { + var existing = people.FirstOrDefault(p => p.Name.Equals(person.Name, StringComparison.OrdinalIgnoreCase) && p.Type.Equals(PersonType.Actor, StringComparison.OrdinalIgnoreCase)); + + if (existing != null) + { + existing.Type = PersonType.GuestStar; + existing.SortOrder = person.SortOrder ?? existing.SortOrder; + return; + } + } + + if (string.Equals(person.Type, PersonType.Actor, StringComparison.OrdinalIgnoreCase)) + { + // If the actor already exists without a role and we have one, fill it in + var existing = people.FirstOrDefault(p => p.Name.Equals(person.Name, StringComparison.OrdinalIgnoreCase) && (p.Type.Equals(PersonType.Actor, StringComparison.OrdinalIgnoreCase) || p.Type.Equals(PersonType.GuestStar, StringComparison.OrdinalIgnoreCase))); + if (existing == null) + { + // Wasn't there - add it + people.Add(person); + } + else + { + // Was there, if no role and we have one - fill it in + if (string.IsNullOrWhiteSpace(existing.Role) && !string.IsNullOrWhiteSpace(person.Role)) + { + existing.Role = person.Role; + } + + existing.SortOrder = person.SortOrder ?? existing.SortOrder; + } + } + else + { + var existing = people.FirstOrDefault(p => + string.Equals(p.Name, person.Name, StringComparison.OrdinalIgnoreCase) && + string.Equals(p.Type, person.Type, StringComparison.OrdinalIgnoreCase)); + + // Check for dupes based on the combination of Name and Type + if (existing == null) + { + people.Add(person); + } + else + { + existing.SortOrder = person.SortOrder ?? existing.SortOrder; + } + } + } + + public static bool ContainsPerson(List<PersonInfo> people, string name) + { + if (string.IsNullOrWhiteSpace(name)) + { + throw new ArgumentNullException("name"); + } + return people.Any(i => string.Equals(i.Name, name, StringComparison.OrdinalIgnoreCase)); + } + } +} diff --git a/MediaBrowser.Controller/Entities/Person.cs b/MediaBrowser.Controller/Entities/Person.cs index ef24d4347..0a62655ee 100644 --- a/MediaBrowser.Controller/Entities/Person.cs +++ b/MediaBrowser.Controller/Entities/Person.cs @@ -70,13 +70,27 @@ namespace MediaBrowser.Controller.Entities public IEnumerable<BaseItem> GetTaggedItems(IEnumerable<BaseItem> inputItems) { - return inputItems.Where(GetItemFilter()); + var itemsWithPerson = LibraryManager.GetItemIds(new InternalItemsQuery + { + Person = Name + }); + + return inputItems.Where(i => itemsWithPerson.Contains(i.Id)); } public Func<BaseItem, bool> GetItemFilter() { - return i => i.People.Any(p => string.Equals(p.Name, Name, StringComparison.OrdinalIgnoreCase)); + return i => LibraryManager.GetPeople(i).Any(p => string.Equals(p.Name, Name, StringComparison.OrdinalIgnoreCase)); + } + + [IgnoreDataMember] + public override bool SupportsPeople + { + get + { + return false; + } } } @@ -85,6 +99,8 @@ namespace MediaBrowser.Controller.Entities /// </summary> public class PersonInfo { + public Guid ItemId { get; set; } + /// <summary> /// Gets or sets the name. /// </summary> diff --git a/MediaBrowser.Controller/Entities/Studio.cs b/MediaBrowser.Controller/Entities/Studio.cs index b8d359369..822f305ed 100644 --- a/MediaBrowser.Controller/Entities/Studio.cs +++ b/MediaBrowser.Controller/Entities/Studio.cs @@ -72,5 +72,14 @@ namespace MediaBrowser.Controller.Entities { return i => i.Studios.Contains(Name, StringComparer.OrdinalIgnoreCase); } + + [IgnoreDataMember] + public override bool SupportsPeople + { + get + { + return false; + } + } } } diff --git a/MediaBrowser.Controller/Entities/User.cs b/MediaBrowser.Controller/Entities/User.cs index 5b70ee5f4..71e3d1ce0 100644 --- a/MediaBrowser.Controller/Entities/User.cs +++ b/MediaBrowser.Controller/Entities/User.cs @@ -295,5 +295,14 @@ namespace MediaBrowser.Controller.Entities return config.GroupedFolders.Select(i => new Guid(i)).Contains(id); } + + [IgnoreDataMember] + public override bool SupportsPeople + { + get + { + return false; + } + } } } diff --git a/MediaBrowser.Controller/Entities/UserView.cs b/MediaBrowser.Controller/Entities/UserView.cs index 9be30273a..dad6de01a 100644 --- a/MediaBrowser.Controller/Entities/UserView.cs +++ b/MediaBrowser.Controller/Entities/UserView.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Playlists; +using System.Runtime.Serialization; +using MediaBrowser.Controller.Playlists; using MediaBrowser.Controller.TV; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Querying; @@ -93,5 +94,14 @@ namespace MediaBrowser.Controller.Entities return standaloneTypes.Contains(collectionFolder.CollectionType ?? string.Empty); } + + [IgnoreDataMember] + public override bool SupportsPeople + { + get + { + return false; + } + } } } diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs index 3e4dff033..62c71d169 100644 --- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs +++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs @@ -1699,8 +1699,7 @@ namespace MediaBrowser.Controller.Entities .Select(i => i == null ? "-1" : i.Name) .ToList(); - if (!(names.Any( - v => item.People.Select(i => i.Name).Contains(v, StringComparer.OrdinalIgnoreCase)))) + if (!(names.Any(v => libraryManager.GetPeople(item).Select(i => i.Name).Contains(v, StringComparer.OrdinalIgnoreCase)))) { return false; } @@ -1713,7 +1712,7 @@ namespace MediaBrowser.Controller.Entities if (personTypes.Length == 0) { - if (!(item.People.Any(p => string.Equals(p.Name, query.Person, StringComparison.OrdinalIgnoreCase)))) + if (!(libraryManager.GetPeople(item).Any(p => string.Equals(p.Name, query.Person, StringComparison.OrdinalIgnoreCase)))) { return false; } @@ -1723,8 +1722,7 @@ namespace MediaBrowser.Controller.Entities var types = personTypes; var ok = new[] { item }.Any(i => - i.People != null && - i.People.Any(p => + libraryManager.GetPeople(i).Any(p => string.Equals(p.Name, query.Person, StringComparison.OrdinalIgnoreCase) && (types.Contains(p.Type ?? string.Empty, StringComparer.OrdinalIgnoreCase) || types.Contains(p.Role ?? string.Empty, StringComparer.OrdinalIgnoreCase)))); if (!ok) diff --git a/MediaBrowser.Controller/Entities/Year.cs b/MediaBrowser.Controller/Entities/Year.cs index a1a152387..163dcd667 100644 --- a/MediaBrowser.Controller/Entities/Year.cs +++ b/MediaBrowser.Controller/Entities/Year.cs @@ -88,5 +88,14 @@ namespace MediaBrowser.Controller.Entities var val = GetYearValue(); return i => i.ProductionYear.HasValue && val.HasValue && i.ProductionYear.Value == val.Value; } + + [IgnoreDataMember] + public override bool SupportsPeople + { + get + { + return false; + } + } } } diff --git a/MediaBrowser.Controller/Library/ILibraryManager.cs b/MediaBrowser.Controller/Library/ILibraryManager.cs index c00912115..f0bfaaf66 100644 --- a/MediaBrowser.Controller/Library/ILibraryManager.cs +++ b/MediaBrowser.Controller/Library/ILibraryManager.cs @@ -10,6 +10,7 @@ using System.Collections.Generic; using System.IO; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Model.Querying; namespace MediaBrowser.Controller.Library { @@ -133,6 +134,13 @@ namespace MediaBrowser.Controller.Library BaseItem GetItemById(Guid id); /// <summary> + /// Gets the items. + /// </summary> + /// <param name="query">The query.</param> + /// <returns>QueryResult<BaseItem>.</returns> + QueryResult<BaseItem> GetItems(InternalItemsQuery query); + + /// <summary> /// Gets the memory item by identifier. /// </summary> /// <param name="id">The identifier.</param> @@ -404,5 +412,54 @@ namespace MediaBrowser.Controller.Library /// <param name="item">The item.</param> /// <returns>IEnumerable<Folder>.</returns> IEnumerable<Folder> GetCollectionFolders(BaseItem item); + + /// <summary> + /// Gets the people. + /// </summary> + /// <param name="item">The item.</param> + /// <returns>List<PersonInfo>.</returns> + List<PersonInfo> GetPeople(BaseItem item); + + /// <summary> + /// Gets the people. + /// </summary> + /// <param name="query">The query.</param> + /// <returns>List<PersonInfo>.</returns> + List<PersonInfo> GetPeople(InternalPeopleQuery query); + + /// <summary> + /// Gets the people items. + /// </summary> + /// <param name="query">The query.</param> + /// <returns>List<Person>.</returns> + List<Person> GetPeopleItems(InternalPeopleQuery query); + + /// <summary> + /// Gets all people names. + /// </summary> + /// <returns>List<System.String>.</returns> + List<PersonInfo> GetAllPeople(); + + /// <summary> + /// Updates the people. + /// </summary> + /// <param name="item">The item.</param> + /// <param name="people">The people.</param> + /// <returns>Task.</returns> + Task UpdatePeople(BaseItem item, List<PersonInfo> people); + + /// <summary> + /// Gets the item ids. + /// </summary> + /// <param name="query">The query.</param> + /// <returns>List<Guid>.</returns> + List<Guid> GetItemIds(InternalItemsQuery query); + + /// <summary> + /// Gets the people names. + /// </summary> + /// <param name="query">The query.</param> + /// <returns>List<System.String>.</returns> + List<string> GetPeopleNames(InternalPeopleQuery query); } }
\ No newline at end of file diff --git a/MediaBrowser.Controller/Library/IUserDataManager.cs b/MediaBrowser.Controller/Library/IUserDataManager.cs index f230f1472..56ac14e9d 100644 --- a/MediaBrowser.Controller/Library/IUserDataManager.cs +++ b/MediaBrowser.Controller/Library/IUserDataManager.cs @@ -35,6 +35,14 @@ namespace MediaBrowser.Controller.Library /// <param name="userId">The user id.</param> /// <param name="key">The key.</param> /// <returns>Task{UserItemData}.</returns> + UserItemData GetUserData(string userId, string key); + + /// <summary> + /// Gets the user data. + /// </summary> + /// <param name="userId">The user id.</param> + /// <param name="key">The key.</param> + /// <returns>Task{UserItemData}.</returns> UserItemData GetUserData(Guid userId, string key); /// <summary> diff --git a/MediaBrowser.Controller/LiveTv/ILiveTvItem.cs b/MediaBrowser.Controller/LiveTv/ILiveTvItem.cs index 6c277a2e1..36727f4ae 100644 --- a/MediaBrowser.Controller/LiveTv/ILiveTvItem.cs +++ b/MediaBrowser.Controller/LiveTv/ILiveTvItem.cs @@ -1,10 +1,10 @@ -using System; +using MediaBrowser.Controller.Entities; namespace MediaBrowser.Controller.LiveTv { - public interface ILiveTvItem + public interface ILiveTvItem : IHasId { - Guid Id { get; } string ServiceName { get; set; } + string ExternalId { get; set; } } } diff --git a/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs b/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs index 4ee0565f9..3aa1f66ef 100644 --- a/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs +++ b/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs @@ -79,7 +79,7 @@ namespace MediaBrowser.Controller.LiveTv /// <param name="cancellationToken">The cancellation token.</param> /// <param name="user">The user.</param> /// <returns>Task{RecordingInfoDto}.</returns> - Task<RecordingInfoDto> GetRecording(string id, DtoOptions options, CancellationToken cancellationToken, User user = null); + Task<BaseItemDto> GetRecording(string id, DtoOptions options, CancellationToken cancellationToken, User user = null); /// <summary> /// Gets the channel. @@ -113,7 +113,7 @@ namespace MediaBrowser.Controller.LiveTv /// <param name="options">The options.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>QueryResult{RecordingInfoDto}.</returns> - Task<QueryResult<RecordingInfoDto>> GetRecordings(RecordingQuery query, DtoOptions options, CancellationToken cancellationToken); + Task<QueryResult<BaseItemDto>> GetRecordings(RecordingQuery query, DtoOptions options, CancellationToken cancellationToken); /// <summary> /// Gets the timers. @@ -158,9 +158,10 @@ namespace MediaBrowser.Controller.LiveTv /// Gets the channel stream. /// </summary> /// <param name="id">The identifier.</param> + /// <param name="mediaSourceId">The media source identifier.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task{StreamResponseInfo}.</returns> - Task<MediaSourceInfo> GetChannelStream(string id, CancellationToken cancellationToken); + Task<MediaSourceInfo> GetChannelStream(string id, string mediaSourceId, CancellationToken cancellationToken); /// <summary> /// Gets the program. @@ -169,7 +170,7 @@ namespace MediaBrowser.Controller.LiveTv /// <param name="cancellationToken">The cancellation token.</param> /// <param name="user">The user.</param> /// <returns>Task{ProgramInfoDto}.</returns> - Task<ProgramInfoDto> GetProgram(string id, CancellationToken cancellationToken, User user = null); + Task<BaseItemDto> GetProgram(string id, CancellationToken cancellationToken, User user = null); /// <summary> /// Gets the programs. @@ -177,7 +178,7 @@ namespace MediaBrowser.Controller.LiveTv /// <param name="query">The query.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>IEnumerable{ProgramInfo}.</returns> - Task<QueryResult<ProgramInfoDto>> GetPrograms(ProgramQuery query, CancellationToken cancellationToken); + Task<QueryResult<BaseItemDto>> GetPrograms(ProgramQuery query, CancellationToken cancellationToken); /// <summary> /// Updates the timer. @@ -217,7 +218,7 @@ namespace MediaBrowser.Controller.LiveTv /// <param name="query">The query.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task{QueryResult{RecordingGroupDto}}.</returns> - Task<QueryResult<RecordingGroupDto>> GetRecordingGroups(RecordingGroupQuery query, CancellationToken cancellationToken); + Task<QueryResult<BaseItemDto>> GetRecordingGroups(RecordingGroupQuery query, CancellationToken cancellationToken); /// <summary> /// Closes the live stream. @@ -239,7 +240,7 @@ namespace MediaBrowser.Controller.LiveTv /// <param name="query">The query.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task{QueryResult{ProgramInfoDto}}.</returns> - Task<QueryResult<ProgramInfoDto>> GetRecommendedPrograms(RecommendedProgramQuery query, + Task<QueryResult<BaseItemDto>> GetRecommendedPrograms(RecommendedProgramQuery query, CancellationToken cancellationToken); /// <summary> @@ -320,5 +321,21 @@ namespace MediaBrowser.Controller.LiveTv /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task<IEnumerable<MediaSourceInfo>>.</returns> Task<IEnumerable<MediaSourceInfo>> GetChannelMediaSources(string id, CancellationToken cancellationToken); + + /// <summary> + /// Adds the information to recording dto. + /// </summary> + /// <param name="item">The item.</param> + /// <param name="dto">The dto.</param> + /// <param name="user">The user.</param> + void AddInfoToRecordingDto(BaseItem item, BaseItemDto dto, User user = null); + + /// <summary> + /// Adds the information to program dto. + /// </summary> + /// <param name="item">The item.</param> + /// <param name="dto">The dto.</param> + /// <param name="user">The user.</param> + void AddInfoToProgramDto(BaseItem item, BaseItemDto dto, User user = null); } } diff --git a/MediaBrowser.Controller/LiveTv/ILiveTvRecording.cs b/MediaBrowser.Controller/LiveTv/ILiveTvRecording.cs index 93e1e576a..1dd267c93 100644 --- a/MediaBrowser.Controller/LiveTv/ILiveTvRecording.cs +++ b/MediaBrowser.Controller/LiveTv/ILiveTvRecording.cs @@ -2,19 +2,21 @@ using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Library; +using MediaBrowser.Model.LiveTv; +using System; using System.Threading; using System.Threading.Tasks; namespace MediaBrowser.Controller.LiveTv { - public interface ILiveTvRecording : IHasImages, IHasMediaSources, IHasUserData, ILiveTvItem + public interface ILiveTvRecording : IHasImages, IHasMediaSources, IHasUserData, ILiveTvItem, IHasStartDate, IHasProgramAttributes { + string ChannelId { get; } + string ProgramId { get; set; } string MediaType { get; } string Container { get; } - RecordingInfo RecordingInfo { get; set; } - long? RunTimeTicks { get; set; } string GetClientTypeName(); @@ -28,5 +30,17 @@ namespace MediaBrowser.Controller.LiveTv bool CanDelete(); bool CanDelete(User user); + + string ProviderImagePath { get; set; } + + string ProviderImageUrl { get; set; } + + string ExternalId { get; set; } + string EpisodeTitle { get; set; } + bool IsSeries { get; set; } + string SeriesTimerId { get; set; } + RecordingStatus Status { get; set; } + DateTime? EndDate { get; set; } + ChannelType ChannelType { get; set; } } } diff --git a/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs b/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs index 0dc296d5a..2179c5ecd 100644 --- a/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs +++ b/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs @@ -3,7 +3,9 @@ using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; +using MediaBrowser.Model.LiveTv; using MediaBrowser.Model.Users; +using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; @@ -12,6 +14,27 @@ namespace MediaBrowser.Controller.LiveTv { public class LiveTvAudioRecording : Audio, ILiveTvRecording { + public string ExternalId { get; set; } + public string ProviderImagePath { get; set; } + public string ProviderImageUrl { get; set; } + public string EpisodeTitle { get; set; } + public bool IsSeries { get; set; } + public string SeriesTimerId { get; set; } + public DateTime StartDate { get; set; } + public RecordingStatus Status { get; set; } + public bool IsSports { get; set; } + public bool IsNews { get; set; } + public bool IsKids { get; set; } + public bool IsRepeat { get; set; } + public bool IsMovie { get; set; } + public bool? IsHD { get; set; } + public bool IsLive { get; set; } + public bool IsPremiere { get; set; } + public ChannelType ChannelType { get; set; } + public string ProgramId { get; set; } + public ProgramAudio? Audio { get; set; } + public DateTime? OriginalAirDate { get; set; } + /// <summary> /// Gets the user data key. /// </summary> @@ -20,16 +43,14 @@ namespace MediaBrowser.Controller.LiveTv { var name = GetClientTypeName(); - if (!string.IsNullOrEmpty(RecordingInfo.ProgramId)) + if (!string.IsNullOrEmpty(ProgramId)) { - return name + "-" + RecordingInfo.ProgramId; + return name + "-" + ProgramId; } - return name + "-" + RecordingInfo.Name + (RecordingInfo.EpisodeTitle ?? string.Empty); + return name + "-" + Name + (EpisodeTitle ?? string.Empty); } - public RecordingInfo RecordingInfo { get; set; } - public string ServiceName { get; set; } /// <summary> @@ -97,6 +118,11 @@ namespace MediaBrowser.Controller.LiveTv return System.IO.Path.Combine(basePath, "livetv", Id.ToString("N")); } + public override bool CanDelete() + { + return true; + } + public override bool IsAuthorizedToDelete(User user) { return user.Policy.EnableLiveTvManagement; diff --git a/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs b/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs index 0609df4c6..8232c5c7a 100644 --- a/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs +++ b/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs @@ -1,5 +1,4 @@ using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.LiveTv; @@ -7,12 +6,10 @@ using MediaBrowser.Model.Users; using System; using System.Linq; using System.Runtime.Serialization; -using System.Threading; -using System.Threading.Tasks; namespace MediaBrowser.Controller.LiveTv { - public class LiveTvProgram : BaseItem, ILiveTvItem, IHasLookupInfo<LiveTvProgramLookupInfo> + public class LiveTvProgram : BaseItem, ILiveTvItem, IHasLookupInfo<LiveTvProgramLookupInfo>, IHasStartDate, IHasProgramAttributes { /// <summary> /// Gets the user data key. @@ -29,12 +26,6 @@ namespace MediaBrowser.Controller.LiveTv public string ExternalId { get; set; } /// <summary> - /// Gets or sets the channel identifier. - /// </summary> - /// <value>The channel identifier.</value> - public string ExternalChannelId { get; set; } - - /// <summary> /// Gets or sets the original air date. /// </summary> /// <value>The original air date.</value> @@ -204,15 +195,6 @@ namespace MediaBrowser.Controller.LiveTv return "Program"; } - public override Task UpdateToRepository(ItemUpdateType updateReason, CancellationToken cancellationToken) - { - DateLastSaved = DateTime.UtcNow; - - // Avoid library manager and keep out of in-memory cache - // Not great that this class has to know about that, but we'll improve that later. - return ItemRepository.SaveItem(this, cancellationToken); - } - protected override bool GetBlockUnratedValue(UserPolicy config) { return config.BlockUnratedItems.Contains(UnratedItem.LiveTvProgram); diff --git a/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs b/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs index 3669f9440..aaaff6bdb 100644 --- a/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs +++ b/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs @@ -2,7 +2,9 @@ using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; +using MediaBrowser.Model.LiveTv; using MediaBrowser.Model.Users; +using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; @@ -11,6 +13,27 @@ namespace MediaBrowser.Controller.LiveTv { public class LiveTvVideoRecording : Video, ILiveTvRecording { + public string ExternalId { get; set; } + public string ProviderImagePath { get; set; } + public string ProviderImageUrl { get; set; } + public string EpisodeTitle { get; set; } + public bool IsSeries { get; set; } + public string SeriesTimerId { get; set; } + public DateTime StartDate { get; set; } + public RecordingStatus Status { get; set; } + public bool IsSports { get; set; } + public bool IsNews { get; set; } + public bool IsKids { get; set; } + public bool IsRepeat { get; set; } + public bool IsMovie { get; set; } + public bool? IsHD { get; set; } + public bool IsLive { get; set; } + public bool IsPremiere { get; set; } + public ChannelType ChannelType { get; set; } + public string ProgramId { get; set; } + public ProgramAudio? Audio { get; set; } + public DateTime? OriginalAirDate { get; set; } + /// <summary> /// Gets the user data key. /// </summary> @@ -19,16 +42,14 @@ namespace MediaBrowser.Controller.LiveTv { var name = GetClientTypeName(); - if (!string.IsNullOrEmpty(RecordingInfo.ProgramId)) + if (!string.IsNullOrEmpty(ProgramId)) { - return name + "-" + RecordingInfo.ProgramId; + return name + "-" + ProgramId; } - return name + "-" + RecordingInfo.Name + (RecordingInfo.EpisodeTitle ?? string.Empty); + return name + "-" + Name + (EpisodeTitle ?? string.Empty); } - public RecordingInfo RecordingInfo { get; set; } - public string ServiceName { get; set; } [IgnoreDataMember] @@ -95,6 +116,11 @@ namespace MediaBrowser.Controller.LiveTv return System.IO.Path.Combine(basePath, "livetv", Id.ToString("N")); } + public override bool CanDelete() + { + return true; + } + public override bool IsAuthorizedToDelete(User user) { return user.Policy.EnableLiveTvManagement; diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index b66e6b9c8..fcde6d8c0 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -142,6 +142,7 @@ <Compile Include="Entities\IHasBudget.cs" /> <Compile Include="Entities\IHasCriticRating.cs" /> <Compile Include="Entities\IHasDisplayOrder.cs" /> + <Compile Include="Entities\IHasId.cs" /> <Compile Include="Entities\IHasImages.cs" /> <Compile Include="Entities\IHasKeywords.cs" /> <Compile Include="Entities\IHasMediaSources.cs" /> @@ -149,10 +150,12 @@ <Compile Include="Entities\IHasOriginalTitle.cs" /> <Compile Include="Entities\IHasPreferredMetadataLanguage.cs" /> <Compile Include="Entities\IHasProductionLocations.cs" /> + <Compile Include="Entities\IHasProgramAttributes.cs" /> <Compile Include="Entities\IHasScreenshots.cs" /> <Compile Include="Entities\IHasSeries.cs" /> <Compile Include="Entities\IHasShortOverview.cs" /> <Compile Include="Entities\IHasSpecialFeatures.cs" /> + <Compile Include="Entities\IHasStartDate.cs" /> <Compile Include="Entities\IHasTaglines.cs" /> <Compile Include="Entities\IHasTags.cs" /> <Compile Include="Entities\IHasThemeMedia.cs" /> @@ -163,6 +166,7 @@ <Compile Include="Entities\ImageSourceInfo.cs" /> <Compile Include="Entities\IMetadataContainer.cs" /> <Compile Include="Entities\InternalItemsQuery.cs" /> + <Compile Include="Entities\InternalPeopleQuery.cs" /> <Compile Include="Entities\ISupportsBoxSetGrouping.cs" /> <Compile Include="Entities\ISupportsPlaceHolders.cs" /> <Compile Include="Entities\ItemImageInfo.cs" /> @@ -170,6 +174,7 @@ <Compile Include="Entities\LinkedChild.cs" /> <Compile Include="Entities\MusicVideo.cs" /> <Compile Include="Entities\IHasAwards.cs" /> + <Compile Include="Entities\PeopleHelper.cs" /> <Compile Include="Entities\Photo.cs" /> <Compile Include="Entities\PhotoAlbum.cs" /> <Compile Include="Entities\Share.cs" /> @@ -325,6 +330,7 @@ <Compile Include="Security\IAuthenticationRepository.cs" /> <Compile Include="Security\IEncryptionManager.cs" /> <Compile Include="Session\AuthenticationRequest.cs" /> + <Compile Include="Social\ISharingManager.cs" /> <Compile Include="Subtitles\ISubtitleManager.cs" /> <Compile Include="Subtitles\ISubtitleProvider.cs" /> <Compile Include="Providers\ItemIdentifier.cs" /> @@ -408,6 +414,7 @@ <Compile Include="Sync\ISyncProvider.cs" /> <Compile Include="Sync\ISyncRepository.cs" /> <Compile Include="Sync\SyncedFileInfo.cs" /> + <Compile Include="Sync\SyncedItemProgress.cs" /> <Compile Include="Themes\IAppThemeManager.cs" /> <Compile Include="Themes\InternalThemeImage.cs" /> <Compile Include="TV\ITVSeriesManager.cs" /> diff --git a/MediaBrowser.Controller/Persistence/IDisplayPreferencesRepository.cs b/MediaBrowser.Controller/Persistence/IDisplayPreferencesRepository.cs index 66fac3462..17de730cb 100644 --- a/MediaBrowser.Controller/Persistence/IDisplayPreferencesRepository.cs +++ b/MediaBrowser.Controller/Persistence/IDisplayPreferencesRepository.cs @@ -25,9 +25,9 @@ namespace MediaBrowser.Controller.Persistence /// <param name="client">The client.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task.</returns> - Task SaveDisplayPreferences(DisplayPreferences displayPreferences, Guid userId, string client, + Task SaveDisplayPreferences(DisplayPreferences displayPreferences, string userId, string client, CancellationToken cancellationToken); - + /// <summary> /// Saves all display preferences for a user /// </summary> @@ -44,7 +44,7 @@ namespace MediaBrowser.Controller.Persistence /// <param name="userId">The user id.</param> /// <param name="client">The client.</param> /// <returns>Task{DisplayPreferences}.</returns> - DisplayPreferences GetDisplayPreferences(string displayPreferencesId, Guid userId, string client); + DisplayPreferences GetDisplayPreferences(string displayPreferencesId, string userId, string client); /// <summary> /// Gets all display preferences for the given user. diff --git a/MediaBrowser.Controller/Persistence/IItemRepository.cs b/MediaBrowser.Controller/Persistence/IItemRepository.cs index aa5376ec3..a4b9bf120 100644 --- a/MediaBrowser.Controller/Persistence/IItemRepository.cs +++ b/MediaBrowser.Controller/Persistence/IItemRepository.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Model.Querying; namespace MediaBrowser.Controller.Persistence { @@ -103,13 +104,6 @@ namespace MediaBrowser.Controller.Persistence IEnumerable<Guid> GetChildren(Guid parentId); /// <summary> - /// Gets the type of the items of. - /// </summary> - /// <param name="type">The type.</param> - /// <returns>IEnumerable{Guid}.</returns> - IEnumerable<Guid> GetItemIdsOfType(Type type); - - /// <summary> /// Saves the children. /// </summary> /// <param name="parentId">The parent id.</param> @@ -135,11 +129,46 @@ namespace MediaBrowser.Controller.Persistence Task SaveMediaStreams(Guid id, IEnumerable<MediaStream> streams, CancellationToken cancellationToken); /// <summary> - /// Gets the type of the items of. + /// Gets the item ids. /// </summary> - /// <param name="type">The type.</param> - /// <returns>IEnumerable<BaseItem>.</returns> - IEnumerable<BaseItem> GetItemsOfType(Type type); + /// <param name="query">The query.</param> + /// <returns>IEnumerable<Guid>.</returns> + QueryResult<Guid> GetItemIds(InternalItemsQuery query); + /// <summary> + /// Gets the items. + /// </summary> + /// <param name="query">The query.</param> + /// <returns>QueryResult<BaseItem>.</returns> + QueryResult<BaseItem> GetItems(InternalItemsQuery query); + + /// <summary> + /// Gets the item ids list. + /// </summary> + /// <param name="query">The query.</param> + /// <returns>List<Guid>.</returns> + List<Guid> GetItemIdsList(InternalItemsQuery query); + + /// <summary> + /// Gets the people. + /// </summary> + /// <param name="query">The query.</param> + /// <returns>List<PersonInfo>.</returns> + List<PersonInfo> GetPeople(InternalPeopleQuery query); + + /// <summary> + /// Updates the people. + /// </summary> + /// <param name="itemId">The item identifier.</param> + /// <param name="people">The people.</param> + /// <returns>Task.</returns> + Task UpdatePeople(Guid itemId, List<PersonInfo> people); + + /// <summary> + /// Gets the people names. + /// </summary> + /// <param name="query">The query.</param> + /// <returns>List<System.String>.</returns> + List<string> GetPeopleNames(InternalPeopleQuery query); } } diff --git a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs index a8a3e88ab..c1a4fa765 100644 --- a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs +++ b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs @@ -40,7 +40,7 @@ namespace MediaBrowser.Controller.Providers /// <param name="metadataFile">The metadata file.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <exception cref="System.ArgumentNullException"></exception> - public void Fetch(T item, string metadataFile, CancellationToken cancellationToken) + public void Fetch(MetadataResult<T> item, string metadataFile, CancellationToken cancellationToken) { if (item == null) { @@ -72,7 +72,7 @@ namespace MediaBrowser.Controller.Providers /// <param name="settings">The settings.</param> /// <param name="encoding">The encoding.</param> /// <param name="cancellationToken">The cancellation token.</param> - private void Fetch(T item, string metadataFile, XmlReaderSettings settings, Encoding encoding, CancellationToken cancellationToken) + private void Fetch(MetadataResult<T> item, string metadataFile, XmlReaderSettings settings, Encoding encoding, CancellationToken cancellationToken) { using (var streamReader = new StreamReader(metadataFile, encoding)) { @@ -101,9 +101,11 @@ namespace MediaBrowser.Controller.Providers /// Fetches metadata from one Xml Element /// </summary> /// <param name="reader">The reader.</param> - /// <param name="item">The item.</param> - protected virtual void FetchDataFromXmlNode(XmlReader reader, T item) + /// <param name="itemResult">The item result.</param> + protected virtual void FetchDataFromXmlNode(XmlReader reader, MetadataResult<T> itemResult) { + var item = itemResult.Item; + switch (reader.Name) { // DateCreated @@ -490,7 +492,7 @@ namespace MediaBrowser.Controller.Providers { continue; } - item.AddPerson(p); + PeopleHelper.AddPerson(itemResult.People, p); } break; } @@ -502,7 +504,7 @@ namespace MediaBrowser.Controller.Providers { continue; } - item.AddPerson(p); + PeopleHelper.AddPerson(itemResult.People, p); } break; } @@ -516,7 +518,7 @@ namespace MediaBrowser.Controller.Providers { // This is one of the mis-named "Actors" full nodes created by MB2 // Create a reader and pass it to the persons node processor - FetchDataFromPersonsNode(new XmlTextReader(new StringReader("<Persons>" + actors + "</Persons>")), item); + FetchDataFromPersonsNode(new XmlTextReader(new StringReader("<Persons>" + actors + "</Persons>")), itemResult); } else { @@ -527,7 +529,7 @@ namespace MediaBrowser.Controller.Providers { continue; } - item.AddPerson(p); + PeopleHelper.AddPerson(itemResult.People, p); } } break; @@ -541,7 +543,7 @@ namespace MediaBrowser.Controller.Providers { continue; } - item.AddPerson(p); + PeopleHelper.AddPerson(itemResult.People, p); } break; } @@ -833,7 +835,7 @@ namespace MediaBrowser.Controller.Providers { using (var subtree = reader.ReadSubtree()) { - FetchDataFromPersonsNode(subtree, item); + FetchDataFromPersonsNode(subtree, itemResult); } break; } @@ -1133,7 +1135,7 @@ namespace MediaBrowser.Controller.Providers /// </summary> /// <param name="reader">The reader.</param> /// <param name="item">The item.</param> - private void FetchDataFromPersonsNode(XmlReader reader, T item) + private void FetchDataFromPersonsNode(XmlReader reader, MetadataResult<T> item) { reader.MoveToContent(); @@ -1154,7 +1156,7 @@ namespace MediaBrowser.Controller.Providers { continue; } - item.AddPerson(person); + PeopleHelper.AddPerson(item.People, person); } } break; diff --git a/MediaBrowser.Controller/Providers/ItemInfo.cs b/MediaBrowser.Controller/Providers/ItemInfo.cs index 113a7bb8e..78f352057 100644 --- a/MediaBrowser.Controller/Providers/ItemInfo.cs +++ b/MediaBrowser.Controller/Providers/ItemInfo.cs @@ -1,9 +1,30 @@ +using MediaBrowser.Controller.Entities; +using MediaBrowser.Model.Entities; + namespace MediaBrowser.Controller.Providers { public class ItemInfo { - public string Path { get; set; } + public ItemInfo() + { + } + + public ItemInfo(IHasMetadata item) + { + Path = item.Path; + ContainingFolderPath = item.ContainingFolderPath; + IsInMixedFolder = item.IsInMixedFolder; + var video = item as Video; + if (video != null) + { + VideoType = video.VideoType; + } + } + + public string Path { get; set; } + public string ContainingFolderPath { get; set; } + public VideoType VideoType { get; set; } public bool IsInMixedFolder { get; set; } } }
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/LocalMetadataResult.cs b/MediaBrowser.Controller/Providers/LocalMetadataResult.cs index 8be3ee7aa..76b7a3136 100644 --- a/MediaBrowser.Controller/Providers/LocalMetadataResult.cs +++ b/MediaBrowser.Controller/Providers/LocalMetadataResult.cs @@ -1,23 +1,17 @@ -using System.Collections.Generic; using MediaBrowser.Controller.Entities; -using MediaBrowser.Model.Entities; +using System.Collections.Generic; namespace MediaBrowser.Controller.Providers { - public class LocalMetadataResult<T> + public class LocalMetadataResult<T> : MetadataResult<T> where T : IHasMetadata { - public bool HasMetadata { get; set; } - public T Item { get; set; } - public List<LocalImageInfo> Images { get; set; } - public List<ChapterInfo> Chapters { get; set; } public List<UserItemData> UserDataLIst { get; set; } public LocalMetadataResult() { Images = new List<LocalImageInfo>(); - Chapters = new List<ChapterInfo>(); UserDataLIst = new List<UserItemData>(); } } diff --git a/MediaBrowser.Controller/Providers/MetadataResult.cs b/MediaBrowser.Controller/Providers/MetadataResult.cs index 756458cfa..a18dd83e8 100644 --- a/MediaBrowser.Controller/Providers/MetadataResult.cs +++ b/MediaBrowser.Controller/Providers/MetadataResult.cs @@ -1,8 +1,18 @@ +using MediaBrowser.Controller.Entities; +using System.Collections.Generic; + namespace MediaBrowser.Controller.Providers { public class MetadataResult<T> { + public List<PersonInfo> People { get; set; } + public bool HasMetadata { get; set; } public T Item { get; set; } + + public MetadataResult() + { + People = new List<PersonInfo>(); + } } }
\ No newline at end of file diff --git a/MediaBrowser.Controller/Session/ISessionManager.cs b/MediaBrowser.Controller/Session/ISessionManager.cs index 80025171d..dc9612c84 100644 --- a/MediaBrowser.Controller/Session/ISessionManager.cs +++ b/MediaBrowser.Controller/Session/ISessionManager.cs @@ -220,14 +220,14 @@ namespace MediaBrowser.Controller.Session /// </summary> /// <param name="sessionId">The session identifier.</param> /// <param name="userId">The user identifier.</param> - void AddAdditionalUser(string sessionId, Guid userId); + void AddAdditionalUser(string sessionId, string userId); /// <summary> /// Removes the additional user. /// </summary> /// <param name="sessionId">The session identifier.</param> /// <param name="userId">The user identifier.</param> - void RemoveAdditionalUser(string sessionId, Guid userId); + void RemoveAdditionalUser(string sessionId, string userId); /// <summary> /// Reports the now viewing item. diff --git a/MediaBrowser.Controller/Social/ISharingManager.cs b/MediaBrowser.Controller/Social/ISharingManager.cs new file mode 100644 index 000000000..ded37771a --- /dev/null +++ b/MediaBrowser.Controller/Social/ISharingManager.cs @@ -0,0 +1,28 @@ +using MediaBrowser.Model.Social; +using System.Threading.Tasks; + +namespace MediaBrowser.Controller.Social +{ + public interface ISharingManager + { + /// <summary> + /// Creates the share. + /// </summary> + /// <param name="itemId">The item identifier.</param> + /// <param name="userId">The user identifier.</param> + /// <returns>Task<SocialShareInfo>.</returns> + Task<SocialShareInfo> CreateShare(string itemId, string userId); + /// <summary> + /// Gets the share information. + /// </summary> + /// <param name="id">The identifier.</param> + /// <returns>SocialShareInfo.</returns> + SocialShareInfo GetShareInfo(string id); + /// <summary> + /// Deletes the share. + /// </summary> + /// <param name="id">The identifier.</param> + /// <returns>Task.</returns> + Task DeleteShare(string id); + } +} diff --git a/MediaBrowser.Controller/Subtitles/ISubtitleProvider.cs b/MediaBrowser.Controller/Subtitles/ISubtitleProvider.cs index dceea0cc6..5cb106fec 100644 --- a/MediaBrowser.Controller/Subtitles/ISubtitleProvider.cs +++ b/MediaBrowser.Controller/Subtitles/ISubtitleProvider.cs @@ -1,4 +1,5 @@ using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Dto; using MediaBrowser.Model.Providers; using System.Collections.Generic; using System.Threading; @@ -35,5 +36,12 @@ namespace MediaBrowser.Controller.Subtitles /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task{SubtitleResponse}.</returns> Task<SubtitleResponse> GetSubtitles(string id, CancellationToken cancellationToken); + + /// <summary> + /// Gets the supported languages. + /// </summary> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>Task<IEnumerable<NameIdPair>>.</returns> + Task<IEnumerable<NameIdPair>> GetSupportedLanguages(CancellationToken cancellationToken); } } diff --git a/MediaBrowser.Controller/Sync/IServerSyncProvider.cs b/MediaBrowser.Controller/Sync/IServerSyncProvider.cs index 2635a4cbf..860c736ea 100644 --- a/MediaBrowser.Controller/Sync/IServerSyncProvider.cs +++ b/MediaBrowser.Controller/Sync/IServerSyncProvider.cs @@ -49,4 +49,18 @@ namespace MediaBrowser.Controller.Sync /// <returns>Task<QueryResult<FileMetadata>>.</returns> Task<QueryResult<FileMetadata>> GetFiles(FileQuery query, SyncTarget target, CancellationToken cancellationToken); } + + public interface ISupportsDirectCopy + { + /// <summary> + /// Sends the file. + /// </summary> + /// <param name="path">The path.</param> + /// <param name="pathParts">The path parts.</param> + /// <param name="target">The target.</param> + /// <param name="progress">The progress.</param> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>Task<SyncedFileInfo>.</returns> + Task<SyncedFileInfo> SendFile(string path, string[] pathParts, SyncTarget target, IProgress<double> progress, CancellationToken cancellationToken); + } } diff --git a/MediaBrowser.Controller/Sync/ISyncManager.cs b/MediaBrowser.Controller/Sync/ISyncManager.cs index 97591551c..fd373050f 100644 --- a/MediaBrowser.Controller/Sync/ISyncManager.cs +++ b/MediaBrowser.Controller/Sync/ISyncManager.cs @@ -152,7 +152,7 @@ namespace MediaBrowser.Controller.Sync /// </summary> /// <param name="query">The query.</param> /// <returns>QueryResult<System.String>.</returns> - QueryResult<string> GetLibraryItemIds(SyncJobItemQuery query); + QueryResult<SyncedItemProgress> GetSyncedItemProgresses(SyncJobItemQuery query); /// <summary> /// Reports the synchronize job item transfer beginning. diff --git a/MediaBrowser.Controller/Sync/ISyncRepository.cs b/MediaBrowser.Controller/Sync/ISyncRepository.cs index 315f5f541..2af09dbaa 100644 --- a/MediaBrowser.Controller/Sync/ISyncRepository.cs +++ b/MediaBrowser.Controller/Sync/ISyncRepository.cs @@ -74,6 +74,6 @@ namespace MediaBrowser.Controller.Sync /// </summary> /// <param name="query">The query.</param> /// <returns>QueryResult<System.String>.</returns> - QueryResult<string> GetLibraryItemIds(SyncJobItemQuery query); + QueryResult<SyncedItemProgress> GetSyncedItemProgresses(SyncJobItemQuery query); } } diff --git a/MediaBrowser.Controller/Sync/SyncedItemProgress.cs b/MediaBrowser.Controller/Sync/SyncedItemProgress.cs new file mode 100644 index 000000000..edb42eb0f --- /dev/null +++ b/MediaBrowser.Controller/Sync/SyncedItemProgress.cs @@ -0,0 +1,10 @@ +using MediaBrowser.Model.Sync; + +namespace MediaBrowser.Controller.Sync +{ + public class SyncedItemProgress + { + public string ItemId { get; set; } + public SyncJobItemStatus Status { get; set; } + } +} diff --git a/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs b/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs index 246c23462..72040c8ae 100644 --- a/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs +++ b/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs @@ -58,7 +58,7 @@ namespace MediaBrowser.Dlna.ContentDirectory _profile = profile; _config = config; - _didlBuilder = new DidlBuilder(profile, user, imageProcessor, serverAddress, accessToken, userDataManager, localization, mediaSourceManager, Logger); + _didlBuilder = new DidlBuilder(profile, user, imageProcessor, serverAddress, accessToken, userDataManager, localization, mediaSourceManager, Logger, libraryManager); } protected override IEnumerable<KeyValuePair<string, string>> GetResult(string methodName, Headers methodParams) @@ -410,18 +410,11 @@ namespace MediaBrowser.Dlna.ContentDirectory { if (stubType.Value == StubType.People) { - var items = item.People.Select(i => + var items = _libraryManager.GetPeopleItems(new InternalPeopleQuery { - try - { - return _libraryManager.GetPerson(i.Name); - } - catch - { - return null; - } + ItemId = item.Id - }).Where(i => i != null).ToArray(); + }).ToArray(); var result = new QueryResult<ServerItem> { @@ -443,7 +436,7 @@ namespace MediaBrowser.Dlna.ContentDirectory var person = item as Person; if (person != null) { - return await GetItemsFromPerson(person, user, startIndex, limit).ConfigureAwait(false); + return GetItemsFromPerson(person, user, startIndex, limit); } return ApplyPaging(new QueryResult<ServerItem>(), startIndex, limit); @@ -486,38 +479,19 @@ namespace MediaBrowser.Dlna.ContentDirectory }; } - private async Task<QueryResult<ServerItem>> GetItemsFromPerson(Person person, User user, int? startIndex, int? limit) + private QueryResult<ServerItem> GetItemsFromPerson(Person person, User user, int? startIndex, int? limit) { - var items = user.RootFolder.GetRecursiveChildren(user, i => i is Movie || i is Series && i.ContainsPerson(person.Name)) - .ToList(); - - var trailerResult = await _channelManager.GetAllMediaInternal(new AllChannelMediaQuery + var itemsWithPerson = _libraryManager.GetItems(new InternalItemsQuery { - ContentTypes = new[] { ChannelMediaContentType.MovieExtra }, - ExtraTypes = new[] { ExtraType.Trailer }, - UserId = user.Id.ToString("N") + Person = person.Name - }, CancellationToken.None).ConfigureAwait(false); + }).Items; - var currentIds = items.Select(i => i.GetProviderId(MetadataProviders.Imdb)) + var items = itemsWithPerson + .Where(i => i is Movie || i is Series || i is IChannelItem) + .Where(i => i.IsVisibleStandalone(user)) .ToList(); - var trailersToAdd = trailerResult.Items - .Where(i => i.ContainsPerson(person.Name)) - .Where(i => - { - // Try to filter out dupes using imdb id - var imdb = i.GetProviderId(MetadataProviders.Imdb); - if (!string.IsNullOrWhiteSpace(imdb) && - currentIds.Contains(imdb, StringComparer.OrdinalIgnoreCase)) - { - return false; - } - return true; - }); - - items.AddRange(trailersToAdd); - items = _libraryManager.Sort(items, user, new[] { ItemSortBy.SortName }, SortOrder.Ascending) .Skip(startIndex ?? 0) .Take(limit ?? int.MaxValue) @@ -569,7 +543,11 @@ namespace MediaBrowser.Dlna.ContentDirectory private bool EnablePeopleDisplay(BaseItem item) { - if (item.People.Count > 0) + if (_libraryManager.GetPeopleNames(new InternalPeopleQuery + { + ItemId = item.Id + + }).Count > 0) { return item is Movie; } diff --git a/MediaBrowser.Dlna/Didl/DidlBuilder.cs b/MediaBrowser.Dlna/Didl/DidlBuilder.cs index 08f770735..50a6f3ba6 100644 --- a/MediaBrowser.Dlna/Didl/DidlBuilder.cs +++ b/MediaBrowser.Dlna/Didl/DidlBuilder.cs @@ -40,8 +40,9 @@ namespace MediaBrowser.Dlna.Didl private readonly ILocalizationManager _localization; private readonly IMediaSourceManager _mediaSourceManager; private readonly ILogger _logger; + private readonly ILibraryManager _libraryManager; - public DidlBuilder(DeviceProfile profile, User user, IImageProcessor imageProcessor, string serverAddress, string accessToken, IUserDataManager userDataManager, ILocalizationManager localization, IMediaSourceManager mediaSourceManager, ILogger logger) + public DidlBuilder(DeviceProfile profile, User user, IImageProcessor imageProcessor, string serverAddress, string accessToken, IUserDataManager userDataManager, ILocalizationManager localization, IMediaSourceManager mediaSourceManager, ILogger logger, ILibraryManager libraryManager) { _profile = profile; _imageProcessor = imageProcessor; @@ -50,6 +51,7 @@ namespace MediaBrowser.Dlna.Didl _localization = localization; _mediaSourceManager = mediaSourceManager; _logger = logger; + _libraryManager = libraryManager; _accessToken = accessToken; _user = user; } @@ -654,7 +656,9 @@ namespace MediaBrowser.Dlna.Didl { var types = new[] { PersonType.Director, PersonType.Writer, PersonType.Producer, PersonType.Composer, "Creator" }; - foreach (var actor in item.People) + var people = _libraryManager.GetPeople(item); + + foreach (var actor in people) { var type = types.FirstOrDefault(i => string.Equals(i, actor.Type, StringComparison.OrdinalIgnoreCase) || string.Equals(i, actor.Role, StringComparison.OrdinalIgnoreCase)) ?? PersonType.Actor; diff --git a/MediaBrowser.Dlna/DlnaManager.cs b/MediaBrowser.Dlna/DlnaManager.cs index 2d2525919..9ce62034b 100644 --- a/MediaBrowser.Dlna/DlnaManager.cs +++ b/MediaBrowser.Dlna/DlnaManager.cs @@ -525,6 +525,7 @@ namespace MediaBrowser.Dlna new Xbox360Profile(), new XboxOneProfile(), new SonyPs3Profile(), + new SonyPs4Profile(), new SonyBravia2010Profile(), new SonyBravia2011Profile(), new SonyBravia2012Profile(), diff --git a/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj b/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj index 204872e7b..06aaff734 100644 --- a/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj +++ b/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj @@ -82,6 +82,7 @@ <Compile Include="Profiles\DirectTvProfile.cs" /> <Compile Include="Profiles\DishHopperJoeyProfile.cs" /> <Compile Include="Profiles\PopcornHourProfile.cs" /> + <Compile Include="Profiles\SonyPs4Profile.cs" /> <Compile Include="Profiles\VlcProfile.cs" /> <Compile Include="Ssdp\DeviceDiscoveryInfo.cs" /> <Compile Include="Ssdp\Extensions.cs" /> @@ -210,6 +211,9 @@ <EmbeddedResource Include="Profiles\Xml\BubbleUPnp.xml" /> <EmbeddedResource Include="Profiles\Xml\Vlc.xml" /> </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="Profiles\Xml\Sony PlayStation 4.xml" /> + </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets. diff --git a/MediaBrowser.Dlna/PlayTo/Device.cs b/MediaBrowser.Dlna/PlayTo/Device.cs index c41aa73a9..222a52736 100644 --- a/MediaBrowser.Dlna/PlayTo/Device.cs +++ b/MediaBrowser.Dlna/PlayTo/Device.cs @@ -635,15 +635,25 @@ namespace MediaBrowser.Dlna.PlayTo } XElement uPnpResponse; - + + // Handle different variations sent back by devices try { uPnpResponse = XElement.Parse(trackString); } - catch (Exception ex) + catch (Exception) { - _logger.ErrorException("Unable to parse xml {0}", ex, trackString); - return new Tuple<bool, uBaseObject>(true, null); + // first try to add a root node with a dlna namesapce + try + { + uPnpResponse = XElement.Parse("<data xmlns:dlna=\"urn:schemas-dlna-org:device-1-0\">" + trackString + "</data>"); + uPnpResponse = uPnpResponse.Descendants().First(); + } + catch (Exception ex) + { + _logger.ErrorException("Unable to parse xml {0}", ex, trackString); + return new Tuple<bool, uBaseObject>(true, null); + } } var e = uPnpResponse.Element(uPnpNamespaces.items); diff --git a/MediaBrowser.Dlna/PlayTo/PlayToController.cs b/MediaBrowser.Dlna/PlayTo/PlayToController.cs index cf21211f4..f6cf2f02d 100644 --- a/MediaBrowser.Dlna/PlayTo/PlayToController.cs +++ b/MediaBrowser.Dlna/PlayTo/PlayToController.cs @@ -265,7 +265,7 @@ namespace MediaBrowser.Dlna.PlayTo { var ticks = _device.Position.Ticks; - if (!info.IsDirectStream) + if (!EnableClientSideSeek(info)) { ticks += info.StartPositionTicks; } @@ -376,23 +376,28 @@ namespace MediaBrowser.Dlna.PlayTo { var info = StreamParams.ParseFromUrl(media.Url, _libraryManager, _mediaSourceManager); - if (info.Item != null && !info.IsDirectStream) + if (info.Item != null && !EnableClientSideSeek(info)) { var user = _session.UserId.HasValue ? _userManager.GetUserById(_session.UserId.Value) : null; var newItem = CreatePlaylistItem(info.Item, user, newPosition, info.MediaSourceId, info.AudioStreamIndex, info.SubtitleStreamIndex); await _device.SetAvTransport(newItem.StreamUrl, GetDlnaHeaders(newItem), newItem.Didl).ConfigureAwait(false); - - if (newItem.StreamInfo.IsDirectStream) - { - await _device.Seek(TimeSpan.FromTicks(newPosition)).ConfigureAwait(false); - } return; } - await _device.Seek(TimeSpan.FromTicks(newPosition)).ConfigureAwait(false); + await SeekAfterTransportChange(newPosition).ConfigureAwait(false); } } + private bool EnableClientSideSeek(StreamParams info) + { + return info.IsDirectStream; + } + + private bool EnableClientSideSeek(StreamInfo info) + { + return info.IsDirectStream; + } + public Task SendUserDataChangeInfo(UserDataChangeInfo info, CancellationToken cancellationToken) { return Task.FromResult(true); @@ -473,7 +478,7 @@ namespace MediaBrowser.Dlna.PlayTo playlistItem.StreamUrl = playlistItem.StreamInfo.ToDlnaUrl(_serverAddress, _accessToken); - var itemXml = new DidlBuilder(profile, user, _imageProcessor, _serverAddress, _accessToken, _userDataManager, _localization, _mediaSourceManager, _logger) + var itemXml = new DidlBuilder(profile, user, _imageProcessor, _serverAddress, _accessToken, _userDataManager, _localization, _mediaSourceManager, _logger, _libraryManager) .GetItemDidl(item, null, _session.DeviceId, new Filter(), playlistItem.StreamInfo); playlistItem.Didl = itemXml; @@ -607,8 +612,10 @@ namespace MediaBrowser.Dlna.PlayTo await _device.SetAvTransport(currentitem.StreamUrl, GetDlnaHeaders(currentitem), currentitem.Didl); var streamInfo = currentitem.StreamInfo; - if (streamInfo.StartPositionTicks > 0 && streamInfo.IsDirectStream) - await _device.Seek(TimeSpan.FromTicks(streamInfo.StartPositionTicks)); + if (streamInfo.StartPositionTicks > 0 && EnableClientSideSeek(streamInfo)) + { + await SeekAfterTransportChange(streamInfo.StartPositionTicks).ConfigureAwait(false); + } } #endregion @@ -742,9 +749,9 @@ namespace MediaBrowser.Dlna.PlayTo await _device.SetAvTransport(newItem.StreamUrl, GetDlnaHeaders(newItem), newItem.Didl).ConfigureAwait(false); - if (newItem.StreamInfo.IsDirectStream) + if (EnableClientSideSeek(newItem.StreamInfo)) { - await _device.Seek(TimeSpan.FromTicks(newPosition)).ConfigureAwait(false); + await SeekAfterTransportChange(newPosition).ConfigureAwait(false); } } } @@ -768,17 +775,28 @@ namespace MediaBrowser.Dlna.PlayTo await _device.SetAvTransport(newItem.StreamUrl, GetDlnaHeaders(newItem), newItem.Didl).ConfigureAwait(false); - if (newItem.StreamInfo.IsDirectStream && newPosition > 0) + if (EnableClientSideSeek(newItem.StreamInfo) && newPosition > 0) { - // This is rather arbitrary, but give the player time to start playing - await Task.Delay(2000).ConfigureAwait(false); - - await _device.Seek(TimeSpan.FromTicks(newPosition)).ConfigureAwait(false); + await SeekAfterTransportChange(newPosition).ConfigureAwait(false); } } } } + private async Task SeekAfterTransportChange(long positionTicks) + { + const int maxWait = 15000000; + const int interval = 500; + var currentWait = 0; + while (_device.TransportState != TRANSPORTSTATE.PLAYING && currentWait < maxWait) + { + await Task.Delay(interval).ConfigureAwait(false); + currentWait += interval; + } + + await _device.Seek(TimeSpan.FromTicks(positionTicks)).ConfigureAwait(false); + } + private class StreamParams { public string ItemId { get; set; } diff --git a/MediaBrowser.Dlna/Profiles/DefaultProfile.cs b/MediaBrowser.Dlna/Profiles/DefaultProfile.cs index 819de59fc..18a595d5b 100644 --- a/MediaBrowser.Dlna/Profiles/DefaultProfile.cs +++ b/MediaBrowser.Dlna/Profiles/DefaultProfile.cs @@ -31,8 +31,8 @@ namespace MediaBrowser.Dlna.Profiles MaxIconWidth = 48; MaxIconHeight = 48; - MaxStreamingBitrate = 8000000; - MaxStaticBitrate = 8000000; + MaxStreamingBitrate = 10000000; + MaxStaticBitrate = 10000000; MusicStreamingTranscodingBitrate = 128000; MusicSyncBitrate = 128000; diff --git a/MediaBrowser.Dlna/Profiles/SamsungSmartTvProfile.cs b/MediaBrowser.Dlna/Profiles/SamsungSmartTvProfile.cs index d2aa005c3..e26c3c443 100644 --- a/MediaBrowser.Dlna/Profiles/SamsungSmartTvProfile.cs +++ b/MediaBrowser.Dlna/Profiles/SamsungSmartTvProfile.cs @@ -42,7 +42,8 @@ namespace MediaBrowser.Dlna.Profiles Container = "ts", AudioCodec = "ac3", VideoCodec = "h264", - Type = DlnaProfileType.Video + Type = DlnaProfileType.Video, + EstimateContentLength = true }, new TranscodingProfile { diff --git a/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs index 3a1086d3c..a7f74b369 100644 --- a/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs +++ b/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs @@ -54,7 +54,7 @@ namespace MediaBrowser.Dlna.Profiles { Container = "ts", VideoCodec = "h264", - AudioCodec = "ac3,aac", + AudioCodec = "ac3", Type = DlnaProfileType.Video, EnableMpegtsM2TsMode = true }, @@ -333,6 +333,22 @@ namespace MediaBrowser.Dlna.Profiles Value = "he-aac" } } + }, + + new CodecProfile + { + Type = CodecType.VideoAudio, + Codec = "mp3,mp2", + + Conditions = new [] + { + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.AudioChannels, + Value = "2" + } + } } }; } diff --git a/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs index 34b2dc325..fa258dd60 100644 --- a/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs +++ b/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs @@ -51,7 +51,7 @@ namespace MediaBrowser.Dlna.Profiles { Container = "ts", VideoCodec = "h264", - AudioCodec = "ac3,aac", + AudioCodec = "ac3", Type = DlnaProfileType.Video, EnableMpegtsM2TsMode = true }, @@ -75,21 +75,21 @@ namespace MediaBrowser.Dlna.Profiles { Container = "ts", VideoCodec = "mpeg2video", - AudioCodec = "mp3,mp2", + AudioCodec = "mp3", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp4", VideoCodec = "h264,mpeg4", - AudioCodec = "ac3,aac,mp3,mp2", + AudioCodec = "ac3,aac,mp3", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mpeg", VideoCodec = "mpeg2video,mpeg1video", - AudioCodec = "mp3,mp2", + AudioCodec = "mp3", Type = DlnaProfileType.Video }, new DirectPlayProfile @@ -350,6 +350,22 @@ namespace MediaBrowser.Dlna.Profiles Value = "he-aac" } } + }, + + new CodecProfile + { + Type = CodecType.VideoAudio, + Codec = "mp3,mp2", + + Conditions = new [] + { + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.AudioChannels, + Value = "2" + } + } } }; } diff --git a/MediaBrowser.Dlna/Profiles/SonyBravia2012Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBravia2012Profile.cs index c56663d43..a35cfc0df 100644 --- a/MediaBrowser.Dlna/Profiles/SonyBravia2012Profile.cs +++ b/MediaBrowser.Dlna/Profiles/SonyBravia2012Profile.cs @@ -51,7 +51,7 @@ namespace MediaBrowser.Dlna.Profiles { Container = "ts", VideoCodec = "h264", - AudioCodec = "ac3,aac", + AudioCodec = "ac3", Type = DlnaProfileType.Video, EnableMpegtsM2TsMode = true }, @@ -268,6 +268,22 @@ namespace MediaBrowser.Dlna.Profiles Value = "6" } } + }, + + new CodecProfile + { + Type = CodecType.VideoAudio, + Codec = "mp3,mp2", + + Conditions = new [] + { + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.AudioChannels, + Value = "2" + } + } } }; } diff --git a/MediaBrowser.Dlna/Profiles/SonyBravia2013Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBravia2013Profile.cs index d19ca1a91..16ff5dac5 100644 --- a/MediaBrowser.Dlna/Profiles/SonyBravia2013Profile.cs +++ b/MediaBrowser.Dlna/Profiles/SonyBravia2013Profile.cs @@ -50,7 +50,7 @@ namespace MediaBrowser.Dlna.Profiles { Container = "ts", VideoCodec = "h264", - AudioCodec = "ac3,aac", + AudioCodec = "ac3", Type = DlnaProfileType.Video, EnableMpegtsM2TsMode = true }, @@ -286,6 +286,22 @@ namespace MediaBrowser.Dlna.Profiles Value = "30" } } + }, + + new CodecProfile + { + Type = CodecType.VideoAudio, + Codec = "mp3,mp2", + + Conditions = new [] + { + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.AudioChannels, + Value = "2" + } + } } }; } diff --git a/MediaBrowser.Dlna/Profiles/SonyPs4Profile.cs b/MediaBrowser.Dlna/Profiles/SonyPs4Profile.cs new file mode 100644 index 000000000..dd974d252 --- /dev/null +++ b/MediaBrowser.Dlna/Profiles/SonyPs4Profile.cs @@ -0,0 +1,260 @@ +using MediaBrowser.Model.Dlna; +using System.Xml.Serialization; + +namespace MediaBrowser.Dlna.Profiles +{ + [XmlRoot("Profile")] + public class SonyPs4Profile : DefaultProfile + { + public SonyPs4Profile() + { + Name = "Sony PlayStation 4"; + + Identification = new DeviceIdentification + { + FriendlyName = "PLAYSTATION 4", + + Headers = new[] + { + new HttpHeaderInfo + { + Name = "User-Agent", + Value = @"PLAYSTATION 4", + Match = HeaderMatchType.Substring + }, + + new HttpHeaderInfo + { + Name = "X-AV-Client-Info", + Value = @"PLAYSTATION 4", + Match = HeaderMatchType.Substring + } + } + }; + + AlbumArtPn = "JPEG_TN"; + + SonyAggregationFlags = "10"; + XDlnaDoc = "DMS-1.50"; + EnableSingleAlbumArtLimit = true; + + DirectPlayProfiles = new[] + { + new DirectPlayProfile + { + Container = "avi", + Type = DlnaProfileType.Video, + VideoCodec = "mpeg4", + AudioCodec = "mp2,mp3" + }, + new DirectPlayProfile + { + Container = "ts", + Type = DlnaProfileType.Video, + VideoCodec = "mpeg1video,mpeg2video,h264", + AudioCodec = "ac3,mp2,mp3,aac" + }, + new DirectPlayProfile + { + Container = "mpeg", + Type = DlnaProfileType.Video, + VideoCodec = "mpeg1video,mpeg2video", + AudioCodec = "mp2" + }, + new DirectPlayProfile + { + Container = "mp4,mkv", + Type = DlnaProfileType.Video, + VideoCodec = "h264,mpeg4", + AudioCodec = "aac,ac3" + }, + new DirectPlayProfile + { + Container = "aac,mp3,wav", + Type = DlnaProfileType.Audio + }, + new DirectPlayProfile + { + Container = "jpeg,png,gif,bmp,tiff", + Type = DlnaProfileType.Photo + } + }; + + TranscodingProfiles = new[] + { + new TranscodingProfile + { + Container = "mp3", + AudioCodec = "mp3", + Type = DlnaProfileType.Audio + }, + new TranscodingProfile + { + Container = "ts", + VideoCodec = "h264", + AudioCodec = "mp3", + Type = DlnaProfileType.Video + }, + new TranscodingProfile + { + Container = "jpeg", + Type = DlnaProfileType.Photo + } + }; + + ContainerProfiles = new[] + { + new ContainerProfile + { + Type = DlnaProfileType.Photo, + + Conditions = new [] + { + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.Width, + Value = "1920" + }, + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.Height, + Value = "1080" + } + } + } + }; + + CodecProfiles = new[] + { + new CodecProfile + { + Type = CodecType.Video, + Codec = "h264", + + Conditions = new [] + { + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.Width, + Value = "1920" + }, + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.Height, + Value = "1080" + }, + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.VideoFramerate, + Value = "30", + IsRequired = false + }, + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.VideoBitrate, + Value = "15360000", + IsRequired = false + }, + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.VideoLevel, + Value = "41", + IsRequired = false + } + } + }, + + new CodecProfile + { + Type = CodecType.VideoAudio, + Codec = "ac3", + + Conditions = new [] + { + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.AudioChannels, + Value = "6", + IsRequired = false + }, + + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.AudioBitrate, + Value = "640000", + IsRequired = false + } + } + }, + + new CodecProfile + { + Type = CodecType.VideoAudio, + Codec = "wmapro", + + Conditions = new [] + { + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.AudioChannels, + Value = "2" + } + } + }, + + new CodecProfile + { + Type = CodecType.VideoAudio, + Codec = "aac", + + Conditions = new [] + { + new ProfileCondition + { + Condition = ProfileConditionType.NotEquals, + Property = ProfileConditionValue.AudioProfile, + Value = "he-aac", + IsRequired = false + } + } + } + }; + + ResponseProfiles = new[] + { + new ResponseProfile + { + Container = "mp4,mov", + AudioCodec="aac", + MimeType = "video/mp4", + Type = DlnaProfileType.Video + }, + + new ResponseProfile + { + Container = "avi", + MimeType = "video/divx", + OrgPn="AVI", + Type = DlnaProfileType.Video + }, + + new ResponseProfile + { + Container = "wav", + MimeType = "audio/wav", + Type = DlnaProfileType.Audio + } + }; + } + } +} diff --git a/MediaBrowser.Dlna/Profiles/WdtvLiveProfile.cs b/MediaBrowser.Dlna/Profiles/WdtvLiveProfile.cs index a26c43911..63bb0b52a 100644 --- a/MediaBrowser.Dlna/Profiles/WdtvLiveProfile.cs +++ b/MediaBrowser.Dlna/Profiles/WdtvLiveProfile.cs @@ -15,7 +15,7 @@ namespace MediaBrowser.Dlna.Profiles Identification = new DeviceIdentification { - ModelName = "WD TV HD Live", + ModelName = "WD TV", Headers = new [] { diff --git a/MediaBrowser.Dlna/Profiles/Xml/BubbleUPnp.xml b/MediaBrowser.Dlna/Profiles/Xml/BubbleUPnp.xml index 644e1d7ef..a537cbfcf 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/BubbleUPnp.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/BubbleUPnp.xml @@ -22,8 +22,8 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>8000000</MaxStreamingBitrate> - <MaxStaticBitrate>8000000</MaxStaticBitrate> + <MaxStreamingBitrate>10000000</MaxStreamingBitrate> + <MaxStaticBitrate>10000000</MaxStaticBitrate> <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> <MusicSyncBitrate>128000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> @@ -34,7 +34,6 @@ <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests> <EnableDlnaProtocol>true</EnableDlnaProtocol> - <EnableUrlBase>false</EnableUrlBase> <XmlRootAttributes /> <DirectPlayProfiles> <DirectPlayProfile container="avi,mpeg,mkv,ts,mp4,mov,m4v,asf,webm,ogg,ogv,iso" type="Video" /> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Default.xml b/MediaBrowser.Dlna/Profiles/Xml/Default.xml index 1ec01a8a6..72cad4513 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Default.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Default.xml @@ -16,8 +16,8 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>8000000</MaxStreamingBitrate> - <MaxStaticBitrate>8000000</MaxStaticBitrate> + <MaxStreamingBitrate>10000000</MaxStreamingBitrate> + <MaxStaticBitrate>10000000</MaxStaticBitrate> <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> <MusicSyncBitrate>128000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> @@ -28,7 +28,6 @@ <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests> <EnableDlnaProtocol>true</EnableDlnaProtocol> - <EnableUrlBase>false</EnableUrlBase> <XmlRootAttributes /> <DirectPlayProfiles> <DirectPlayProfile container="mp3,wma" type="Audio" /> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml b/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml index 75250b053..bbaf23cc5 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml @@ -21,8 +21,8 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>8000000</MaxStreamingBitrate> - <MaxStaticBitrate>8000000</MaxStaticBitrate> + <MaxStreamingBitrate>10000000</MaxStreamingBitrate> + <MaxStaticBitrate>10000000</MaxStaticBitrate> <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> <MusicSyncBitrate>128000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> @@ -33,7 +33,6 @@ <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests> <EnableDlnaProtocol>true</EnableDlnaProtocol> - <EnableUrlBase>false</EnableUrlBase> <XmlRootAttributes /> <DirectPlayProfiles> <DirectPlayProfile container="mp3,flac,m4a,wma" type="Audio" /> diff --git a/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml b/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml index 7e61e9174..5de643b02 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml @@ -22,8 +22,8 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>8000000</MaxStreamingBitrate> - <MaxStaticBitrate>8000000</MaxStaticBitrate> + <MaxStreamingBitrate>10000000</MaxStreamingBitrate> + <MaxStaticBitrate>10000000</MaxStaticBitrate> <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> <MusicSyncBitrate>128000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> @@ -34,7 +34,6 @@ <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests> <EnableDlnaProtocol>true</EnableDlnaProtocol> - <EnableUrlBase>false</EnableUrlBase> <XmlRootAttributes /> <DirectPlayProfiles> <DirectPlayProfile container="mpeg" audioCodec="mp2" videoCodec="mpeg2video" type="Video" /> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml b/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml index 8e8f41a8d..bf65212b9 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml @@ -23,8 +23,8 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>8000000</MaxStreamingBitrate> - <MaxStaticBitrate>8000000</MaxStaticBitrate> + <MaxStreamingBitrate>10000000</MaxStreamingBitrate> + <MaxStaticBitrate>10000000</MaxStaticBitrate> <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> <MusicSyncBitrate>128000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> @@ -35,7 +35,6 @@ <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests> <EnableDlnaProtocol>true</EnableDlnaProtocol> - <EnableUrlBase>false</EnableUrlBase> <XmlRootAttributes /> <DirectPlayProfiles> <DirectPlayProfile container="mp4,mkv,mpeg,ts" audioCodec="mp3,ac3,aac,he-aac,pcm" videoCodec="h264,mpeg2video" type="Video" /> diff --git a/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml b/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml index 58f9dbcd1..044baaa70 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml @@ -22,8 +22,8 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>8000000</MaxStreamingBitrate> - <MaxStaticBitrate>8000000</MaxStaticBitrate> + <MaxStreamingBitrate>10000000</MaxStreamingBitrate> + <MaxStaticBitrate>10000000</MaxStaticBitrate> <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> <MusicSyncBitrate>128000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> @@ -34,7 +34,6 @@ <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests> <EnableDlnaProtocol>true</EnableDlnaProtocol> - <EnableUrlBase>false</EnableUrlBase> <XmlRootAttributes /> <DirectPlayProfiles> <DirectPlayProfile container="ts" audioCodec="aac,ac3,mp3" videoCodec="h264" type="Video" /> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml b/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml index 8fa282a36..ca64d36d4 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml @@ -20,8 +20,8 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>8000000</MaxStreamingBitrate> - <MaxStaticBitrate>8000000</MaxStaticBitrate> + <MaxStreamingBitrate>10000000</MaxStreamingBitrate> + <MaxStaticBitrate>10000000</MaxStaticBitrate> <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> <MusicSyncBitrate>128000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> @@ -32,7 +32,6 @@ <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests> <EnableDlnaProtocol>true</EnableDlnaProtocol> - <EnableUrlBase>false</EnableUrlBase> <XmlRootAttributes /> <DirectPlayProfiles> <DirectPlayProfile container="mp3,flac,m4a,wma" type="Audio" /> diff --git a/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml b/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml index 876ce93b5..61e7fedf8 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml @@ -22,8 +22,8 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>8000000</MaxStreamingBitrate> - <MaxStaticBitrate>8000000</MaxStaticBitrate> + <MaxStreamingBitrate>10000000</MaxStreamingBitrate> + <MaxStaticBitrate>10000000</MaxStaticBitrate> <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> <MusicSyncBitrate>128000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> @@ -34,7 +34,6 @@ <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests> <EnableDlnaProtocol>true</EnableDlnaProtocol> - <EnableUrlBase>false</EnableUrlBase> <XmlRootAttributes /> <DirectPlayProfiles> <DirectPlayProfile container="mp3" audioCodec="mp2,mp3" type="Audio" /> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml b/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml index ed2321771..147182b7e 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml @@ -23,8 +23,8 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>8000000</MaxStreamingBitrate> - <MaxStaticBitrate>8000000</MaxStaticBitrate> + <MaxStreamingBitrate>10000000</MaxStreamingBitrate> + <MaxStaticBitrate>10000000</MaxStaticBitrate> <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> <MusicSyncBitrate>128000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> @@ -35,7 +35,6 @@ <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests> <EnableDlnaProtocol>true</EnableDlnaProtocol> - <EnableUrlBase>false</EnableUrlBase> <XmlRootAttributes> <XmlAttribute name="xmlns:pv" value="http://www.pv.com/pvns/" /> </XmlRootAttributes> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml b/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml index ebcfd2a22..1378341fb 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml @@ -16,8 +16,8 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>8000000</MaxStreamingBitrate> - <MaxStaticBitrate>8000000</MaxStaticBitrate> + <MaxStreamingBitrate>10000000</MaxStreamingBitrate> + <MaxStaticBitrate>10000000</MaxStaticBitrate> <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> <MusicSyncBitrate>128000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> @@ -28,7 +28,6 @@ <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests> <EnableDlnaProtocol>true</EnableDlnaProtocol> - <EnableUrlBase>false</EnableUrlBase> <XmlRootAttributes /> <DirectPlayProfiles> <DirectPlayProfile container="mp4,mov" audioCodec="aac" videoCodec="h264,mpeg4" type="Video" /> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml b/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml index b77197659..c9f139eaa 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml @@ -22,8 +22,8 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>8000000</MaxStreamingBitrate> - <MaxStaticBitrate>8000000</MaxStaticBitrate> + <MaxStreamingBitrate>10000000</MaxStreamingBitrate> + <MaxStaticBitrate>10000000</MaxStaticBitrate> <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> <MusicSyncBitrate>128000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> @@ -34,7 +34,6 @@ <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests> <EnableDlnaProtocol>true</EnableDlnaProtocol> - <EnableUrlBase>false</EnableUrlBase> <XmlRootAttributes> <XmlAttribute name="xmlns:sec" value="http://www.sec.co.kr/" /> </XmlRootAttributes> @@ -53,7 +52,7 @@ </DirectPlayProfiles> <TranscodingProfiles> <TranscodingProfile container="mp3" type="Audio" audioCodec="mp3" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" context="Streaming" /> - <TranscodingProfile container="ts" type="Video" videoCodec="h264" audioCodec="ac3" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" context="Streaming" /> + <TranscodingProfile container="ts" type="Video" videoCodec="h264" audioCodec="ac3" estimateContentLength="true" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" context="Streaming" /> <TranscodingProfile container="jpeg" type="Photo" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" context="Streaming" /> </TranscodingProfiles> <ContainerProfiles> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml index 32b482fa2..7eb9db7f6 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml @@ -22,8 +22,8 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>8000000</MaxStreamingBitrate> - <MaxStaticBitrate>8000000</MaxStaticBitrate> + <MaxStreamingBitrate>10000000</MaxStreamingBitrate> + <MaxStaticBitrate>10000000</MaxStaticBitrate> <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> <MusicSyncBitrate>128000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> @@ -34,7 +34,6 @@ <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests> <EnableDlnaProtocol>true</EnableDlnaProtocol> - <EnableUrlBase>false</EnableUrlBase> <XmlRootAttributes> <XmlAttribute name="xmlns:av" value="urn:schemas-sony-com:av" /> </XmlRootAttributes> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml index 038936e8b..013600f87 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml @@ -24,8 +24,8 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>8000000</MaxStreamingBitrate> - <MaxStaticBitrate>8000000</MaxStaticBitrate> + <MaxStreamingBitrate>10000000</MaxStreamingBitrate> + <MaxStaticBitrate>10000000</MaxStaticBitrate> <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> <MusicSyncBitrate>128000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> @@ -36,7 +36,6 @@ <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests> <EnableDlnaProtocol>true</EnableDlnaProtocol> - <EnableUrlBase>false</EnableUrlBase> <XmlRootAttributes> <XmlAttribute name="xmlns:av" value="urn:schemas-sony-com:av" /> </XmlRootAttributes> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml index 4ef4ecb53..65252f749 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml @@ -23,8 +23,8 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>8000000</MaxStreamingBitrate> - <MaxStaticBitrate>8000000</MaxStaticBitrate> + <MaxStreamingBitrate>10000000</MaxStreamingBitrate> + <MaxStaticBitrate>10000000</MaxStaticBitrate> <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> <MusicSyncBitrate>128000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> @@ -36,7 +36,6 @@ <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests> <EnableDlnaProtocol>true</EnableDlnaProtocol> - <EnableUrlBase>false</EnableUrlBase> <XmlRootAttributes> <XmlAttribute name="xmlns:av" value="urn:schemas-sony-com:av" /> </XmlRootAttributes> @@ -48,7 +47,7 @@ </DirectPlayProfiles> <TranscodingProfiles> <TranscodingProfile container="mp3" type="Audio" audioCodec="mp3" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" context="Streaming" /> - <TranscodingProfile container="ts" type="Video" videoCodec="h264" audioCodec="ac3,aac" estimateContentLength="false" enableMpegtsM2TsMode="true" transcodeSeekInfo="Auto" context="Streaming" /> + <TranscodingProfile container="ts" type="Video" videoCodec="h264" audioCodec="ac3" estimateContentLength="false" enableMpegtsM2TsMode="true" transcodeSeekInfo="Auto" context="Streaming" /> <TranscodingProfile container="jpeg" type="Photo" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" context="Streaming" /> </TranscodingProfiles> <ContainerProfiles> @@ -95,6 +94,11 @@ <ProfileCondition condition="NotEquals" property="AudioProfile" value="he-aac" isRequired="true" /> </Conditions> </CodecProfile> + <CodecProfile type="VideoAudio" codec="mp3,mp2"> + <Conditions> + <ProfileCondition condition="LessThanEqual" property="AudioChannels" value="2" isRequired="true" /> + </Conditions> + </CodecProfile> </CodecProfiles> <ResponseProfiles> <ResponseProfile container="ts" audioCodec="ac3,aac,mp3" videoCodec="h264" type="Video" orgPn="AVC_TS_HD_24_AC3_T,AVC_TS_HD_50_AC3_T,AVC_TS_HD_60_AC3_T,AVC_TS_HD_EU_T" mimeType="video/vnd.dlna.mpeg-tts"> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml index 3df34da65..5f7f0a2ee 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml @@ -23,8 +23,8 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>8000000</MaxStreamingBitrate> - <MaxStaticBitrate>8000000</MaxStaticBitrate> + <MaxStreamingBitrate>10000000</MaxStreamingBitrate> + <MaxStaticBitrate>10000000</MaxStaticBitrate> <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> <MusicSyncBitrate>128000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> @@ -36,22 +36,21 @@ <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests> <EnableDlnaProtocol>true</EnableDlnaProtocol> - <EnableUrlBase>false</EnableUrlBase> <XmlRootAttributes> <XmlAttribute name="xmlns:av" value="urn:schemas-sony-com:av" /> </XmlRootAttributes> <DirectPlayProfiles> <DirectPlayProfile container="ts" audioCodec="ac3,aac,mp3" videoCodec="h264" type="Video" /> - <DirectPlayProfile container="ts" audioCodec="mp3,mp2" videoCodec="mpeg2video" type="Video" /> - <DirectPlayProfile container="mp4" audioCodec="ac3,aac,mp3,mp2" videoCodec="h264,mpeg4" type="Video" /> - <DirectPlayProfile container="mpeg" audioCodec="mp3,mp2" videoCodec="mpeg2video,mpeg1video" type="Video" /> + <DirectPlayProfile container="ts" audioCodec="mp3" videoCodec="mpeg2video" type="Video" /> + <DirectPlayProfile container="mp4" audioCodec="ac3,aac,mp3" videoCodec="h264,mpeg4" type="Video" /> + <DirectPlayProfile container="mpeg" audioCodec="mp3" videoCodec="mpeg2video,mpeg1video" type="Video" /> <DirectPlayProfile container="asf" audioCodec="wmav2,wmapro,wmavoice" videoCodec="wmv2,wmv3,vc1" type="Video" /> <DirectPlayProfile container="mp3" audioCodec="mp3" type="Audio" /> <DirectPlayProfile container="asf" audioCodec="wmav2,wmapro,wmavoice" type="Audio" /> </DirectPlayProfiles> <TranscodingProfiles> <TranscodingProfile container="mp3" type="Audio" audioCodec="mp3" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" context="Streaming" /> - <TranscodingProfile container="ts" type="Video" videoCodec="h264" audioCodec="ac3,aac" estimateContentLength="false" enableMpegtsM2TsMode="true" transcodeSeekInfo="Auto" context="Streaming" /> + <TranscodingProfile container="ts" type="Video" videoCodec="h264" audioCodec="ac3" estimateContentLength="false" enableMpegtsM2TsMode="true" transcodeSeekInfo="Auto" context="Streaming" /> <TranscodingProfile container="jpeg" type="Photo" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" context="Streaming" /> </TranscodingProfiles> <ContainerProfiles> @@ -98,6 +97,11 @@ <ProfileCondition condition="NotEquals" property="AudioProfile" value="he-aac" isRequired="true" /> </Conditions> </CodecProfile> + <CodecProfile type="VideoAudio" codec="mp3,mp2"> + <Conditions> + <ProfileCondition condition="LessThanEqual" property="AudioChannels" value="2" isRequired="true" /> + </Conditions> + </CodecProfile> </CodecProfiles> <ResponseProfiles> <ResponseProfile container="ts" audioCodec="ac3,aac,mp3" videoCodec="h264" type="Video" orgPn="AVC_TS_HD_24_AC3_T,AVC_TS_HD_50_AC3_T,AVC_TS_HD_60_AC3_T,AVC_TS_HD_EU_T" mimeType="video/vnd.dlna.mpeg-tts"> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml index 073708cd5..0951d5e0e 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml @@ -23,8 +23,8 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>8000000</MaxStreamingBitrate> - <MaxStaticBitrate>8000000</MaxStaticBitrate> + <MaxStreamingBitrate>10000000</MaxStreamingBitrate> + <MaxStaticBitrate>10000000</MaxStaticBitrate> <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> <MusicSyncBitrate>128000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> @@ -36,7 +36,6 @@ <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests> <EnableDlnaProtocol>true</EnableDlnaProtocol> - <EnableUrlBase>false</EnableUrlBase> <XmlRootAttributes> <XmlAttribute name="xmlns:av" value="urn:schemas-sony-com:av" /> </XmlRootAttributes> @@ -53,7 +52,7 @@ </DirectPlayProfiles> <TranscodingProfiles> <TranscodingProfile container="mp3" type="Audio" audioCodec="mp3" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" context="Streaming" /> - <TranscodingProfile container="ts" type="Video" videoCodec="h264" audioCodec="ac3,aac" estimateContentLength="false" enableMpegtsM2TsMode="true" transcodeSeekInfo="Auto" context="Streaming" /> + <TranscodingProfile container="ts" type="Video" videoCodec="h264" audioCodec="ac3" estimateContentLength="false" enableMpegtsM2TsMode="true" transcodeSeekInfo="Auto" context="Streaming" /> <TranscodingProfile container="jpeg" type="Photo" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" context="Streaming" /> </TranscodingProfiles> <ContainerProfiles> @@ -77,6 +76,11 @@ <ProfileCondition condition="LessThanEqual" property="AudioChannels" value="6" isRequired="true" /> </Conditions> </CodecProfile> + <CodecProfile type="VideoAudio" codec="mp3,mp2"> + <Conditions> + <ProfileCondition condition="LessThanEqual" property="AudioChannels" value="2" isRequired="true" /> + </Conditions> + </CodecProfile> </CodecProfiles> <ResponseProfiles> <ResponseProfile container="ts" audioCodec="ac3,aac,mp3" videoCodec="h264" type="Video" orgPn="AVC_TS_HD_24_AC3_T,AVC_TS_HD_50_AC3_T,AVC_TS_HD_60_AC3_T,AVC_TS_HD_EU_T" mimeType="video/vnd.dlna.mpeg-tts"> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml index 531564937..d3a7dbab9 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml @@ -23,8 +23,8 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>8000000</MaxStreamingBitrate> - <MaxStaticBitrate>8000000</MaxStaticBitrate> + <MaxStreamingBitrate>10000000</MaxStreamingBitrate> + <MaxStaticBitrate>10000000</MaxStaticBitrate> <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> <MusicSyncBitrate>128000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> @@ -36,7 +36,6 @@ <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests> <EnableDlnaProtocol>true</EnableDlnaProtocol> - <EnableUrlBase>false</EnableUrlBase> <XmlRootAttributes> <XmlAttribute name="xmlns:av" value="urn:schemas-sony-com:av" /> </XmlRootAttributes> @@ -58,7 +57,7 @@ </DirectPlayProfiles> <TranscodingProfiles> <TranscodingProfile container="mp3" type="Audio" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" context="Streaming" /> - <TranscodingProfile container="ts" type="Video" videoCodec="h264" audioCodec="ac3,aac" estimateContentLength="false" enableMpegtsM2TsMode="true" transcodeSeekInfo="Auto" context="Streaming" /> + <TranscodingProfile container="ts" type="Video" videoCodec="h264" audioCodec="ac3" estimateContentLength="false" enableMpegtsM2TsMode="true" transcodeSeekInfo="Auto" context="Streaming" /> <TranscodingProfile container="jpeg" type="Photo" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" context="Streaming" /> </TranscodingProfiles> <ContainerProfiles> @@ -77,6 +76,11 @@ <ProfileCondition condition="LessThanEqual" property="VideoFramerate" value="30" isRequired="true" /> </Conditions> </CodecProfile> + <CodecProfile type="VideoAudio" codec="mp3,mp2"> + <Conditions> + <ProfileCondition condition="LessThanEqual" property="AudioChannels" value="2" isRequired="true" /> + </Conditions> + </CodecProfile> </CodecProfiles> <ResponseProfiles> <ResponseProfile container="ts" audioCodec="ac3,aac,mp3" videoCodec="h264" type="Video" orgPn="AVC_TS_HD_24_AC3_T,AVC_TS_HD_50_AC3_T,AVC_TS_HD_60_AC3_T,AVC_TS_HD_EU_T" mimeType="video/vnd.dlna.mpeg-tts"> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml index e92f7eed7..33066d8ef 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml @@ -23,8 +23,8 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>8000000</MaxStreamingBitrate> - <MaxStaticBitrate>8000000</MaxStaticBitrate> + <MaxStreamingBitrate>10000000</MaxStreamingBitrate> + <MaxStaticBitrate>10000000</MaxStaticBitrate> <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> <MusicSyncBitrate>128000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> @@ -36,7 +36,6 @@ <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests> <EnableDlnaProtocol>true</EnableDlnaProtocol> - <EnableUrlBase>false</EnableUrlBase> <XmlRootAttributes /> <DirectPlayProfiles> <DirectPlayProfile container="avi" audioCodec="mp2,mp3" videoCodec="mpeg4" type="Video" /> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Generic Device.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 4.xml index 1c611d47a..3b372aec5 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Generic Device.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 4.xml @@ -1,6 +1,13 @@ <?xml version="1.0"?> <Profile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> - <Name>Generic Device</Name> + <Name>Sony PlayStation 4</Name> + <Identification> + <FriendlyName>PLAYSTATION 4</FriendlyName> + <Headers> + <HttpHeaderInfo name="User-Agent" value="PLAYSTATION 4" match="Substring" /> + <HttpHeaderInfo name="X-AV-Client-Info" value="PLAYSTATION 4" match="Substring" /> + </Headers> + </Identification> <FriendlyName>Emby</FriendlyName> <Manufacturer>Emby</Manufacturer> <ManufacturerUrl>http://emby.media/</ManufacturerUrl> @@ -9,35 +16,85 @@ <ModelNumber>Emby</ModelNumber> <ModelUrl>http://emby.media/</ModelUrl> <EnableAlbumArtInDidl>false</EnableAlbumArtInDidl> - <EnableSingleAlbumArtLimit>false</EnableSingleAlbumArtLimit> + <EnableSingleAlbumArtLimit>true</EnableSingleAlbumArtLimit> <SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes> - <AlbumArtPn>JPEG_SM</AlbumArtPn> + <AlbumArtPn>JPEG_TN</AlbumArtPn> <MaxAlbumArtWidth>480</MaxAlbumArtWidth> <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>8000000</MaxStreamingBitrate> - <MaxStaticBitrate>8000000</MaxStaticBitrate> + <MaxStreamingBitrate>10000000</MaxStreamingBitrate> + <MaxStaticBitrate>10000000</MaxStaticBitrate> <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> <MusicSyncBitrate>128000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> + <SonyAggregationFlags>10</SonyAggregationFlags> <ProtocolInfo>http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_50_AC3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_BASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_FULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-matroska:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_720p_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_HP_HD_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_LPCM;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_L6_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_NDSD;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_LPCM_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000</ProtocolInfo> <TimelineOffsetSeconds>0</TimelineOffsetSeconds> <RequiresPlainVideoItems>false</RequiresPlainVideoItems> <RequiresPlainFolders>false</RequiresPlainFolders> <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> + <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests> + <EnableDlnaProtocol>true</EnableDlnaProtocol> <XmlRootAttributes /> <DirectPlayProfiles> - <DirectPlayProfile container="mp3,wma" type="Audio" /> - <DirectPlayProfile container="avi,mp4" type="Video" /> + <DirectPlayProfile container="avi" audioCodec="mp2,mp3" videoCodec="mpeg4" type="Video" /> + <DirectPlayProfile container="ts" audioCodec="ac3,mp2,mp3,aac" videoCodec="mpeg1video,mpeg2video,h264" type="Video" /> + <DirectPlayProfile container="mpeg" audioCodec="mp2" videoCodec="mpeg1video,mpeg2video" type="Video" /> + <DirectPlayProfile container="mp4,mkv" audioCodec="aac,ac3" videoCodec="h264,mpeg4" type="Video" /> + <DirectPlayProfile container="aac,mp3,wav" type="Audio" /> + <DirectPlayProfile container="jpeg,png,gif,bmp,tiff" type="Photo" /> </DirectPlayProfiles> <TranscodingProfiles> <TranscodingProfile container="mp3" type="Audio" audioCodec="mp3" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" context="Streaming" /> - <TranscodingProfile container="ts" type="Video" videoCodec="h264" audioCodec="aac" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" context="Streaming" /> + <TranscodingProfile container="ts" type="Video" videoCodec="h264" audioCodec="mp3" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" context="Streaming" /> <TranscodingProfile container="jpeg" type="Photo" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" context="Streaming" /> </TranscodingProfiles> - <ContainerProfiles /> - <CodecProfiles /> - <ResponseProfiles /> + <ContainerProfiles> + <ContainerProfile type="Photo"> + <Conditions> + <ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" /> + <ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" /> + </Conditions> + </ContainerProfile> + </ContainerProfiles> + <CodecProfiles> + <CodecProfile type="Video" codec="h264"> + <Conditions> + <ProfileCondition condition="LessThanEqual" property="Width" value="1920" isRequired="true" /> + <ProfileCondition condition="LessThanEqual" property="Height" value="1080" isRequired="true" /> + <ProfileCondition condition="LessThanEqual" property="VideoFramerate" value="30" isRequired="false" /> + <ProfileCondition condition="LessThanEqual" property="VideoBitrate" value="15360000" isRequired="false" /> + <ProfileCondition condition="LessThanEqual" property="VideoLevel" value="41" isRequired="false" /> + </Conditions> + </CodecProfile> + <CodecProfile type="VideoAudio" codec="ac3"> + <Conditions> + <ProfileCondition condition="LessThanEqual" property="AudioChannels" value="6" isRequired="false" /> + <ProfileCondition condition="LessThanEqual" property="AudioBitrate" value="640000" isRequired="false" /> + </Conditions> + </CodecProfile> + <CodecProfile type="VideoAudio" codec="wmapro"> + <Conditions> + <ProfileCondition condition="LessThanEqual" property="AudioChannels" value="2" isRequired="true" /> + </Conditions> + </CodecProfile> + <CodecProfile type="VideoAudio" codec="aac"> + <Conditions> + <ProfileCondition condition="NotEquals" property="AudioProfile" value="he-aac" isRequired="false" /> + </Conditions> + </CodecProfile> + </CodecProfiles> + <ResponseProfiles> + <ResponseProfile container="mp4,mov" audioCodec="aac" type="Video" mimeType="video/mp4"> + <Conditions /> + </ResponseProfile> + <ResponseProfile container="avi" type="Video" orgPn="AVI" mimeType="video/divx"> + <Conditions /> + </ResponseProfile> + <ResponseProfile container="wav" type="Audio" mimeType="audio/wav"> + <Conditions /> + </ResponseProfile> + </ResponseProfiles> <SubtitleProfiles /> </Profile>
\ No newline at end of file diff --git a/MediaBrowser.Dlna/Profiles/Xml/Vlc.xml b/MediaBrowser.Dlna/Profiles/Xml/Vlc.xml index 3ebfdaa72..6b341671c 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Vlc.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Vlc.xml @@ -22,8 +22,8 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>8000000</MaxStreamingBitrate> - <MaxStaticBitrate>8000000</MaxStaticBitrate> + <MaxStreamingBitrate>10000000</MaxStreamingBitrate> + <MaxStaticBitrate>10000000</MaxStaticBitrate> <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> <MusicSyncBitrate>128000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> @@ -34,7 +34,6 @@ <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests> <EnableDlnaProtocol>true</EnableDlnaProtocol> - <EnableUrlBase>false</EnableUrlBase> <XmlRootAttributes /> <DirectPlayProfiles> <DirectPlayProfile container="avi,mpeg,mkv,ts,mp4,mov,m4v,asf,webm,ogg,ogv,iso" type="Video" /> diff --git a/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml b/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml index accaa33a4..7f216a65c 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml @@ -2,7 +2,7 @@ <Profile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Name>WDTV Live</Name> <Identification> - <ModelName>WD TV HD Live</ModelName> + <ModelName>WD TV</ModelName> <Headers> <HttpHeaderInfo name="User-Agent" value="alphanetworks" match="Substring" /> <HttpHeaderInfo name="User-Agent" value="ALPHA Networks" match="Substring" /> @@ -23,8 +23,8 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>8000000</MaxStreamingBitrate> - <MaxStaticBitrate>8000000</MaxStaticBitrate> + <MaxStreamingBitrate>10000000</MaxStreamingBitrate> + <MaxStaticBitrate>10000000</MaxStaticBitrate> <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> <MusicSyncBitrate>128000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> @@ -35,7 +35,6 @@ <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <IgnoreTranscodeByteRangeRequests>true</IgnoreTranscodeByteRangeRequests> <EnableDlnaProtocol>true</EnableDlnaProtocol> - <EnableUrlBase>false</EnableUrlBase> <XmlRootAttributes /> <DirectPlayProfiles> <DirectPlayProfile container="avi" audioCodec="ac3,dca,mp2,mp3,pcm" videoCodec="mpeg1video,mpeg2video,mpeg4,h264,vc1" type="Video" /> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml b/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml index ab6f816a7..118224380 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml @@ -23,8 +23,8 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>8000000</MaxStreamingBitrate> - <MaxStaticBitrate>8000000</MaxStaticBitrate> + <MaxStreamingBitrate>10000000</MaxStreamingBitrate> + <MaxStaticBitrate>10000000</MaxStaticBitrate> <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> <MusicSyncBitrate>128000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> @@ -35,7 +35,6 @@ <EnableMSMediaReceiverRegistrar>true</EnableMSMediaReceiverRegistrar> <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests> <EnableDlnaProtocol>false</EnableDlnaProtocol> - <EnableUrlBase>true</EnableUrlBase> <XmlRootAttributes /> <DirectPlayProfiles> <DirectPlayProfile container="avi" audioCodec="ac3,mp3" videoCodec="mpeg4" type="Video" /> diff --git a/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml b/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml index 43301458a..4c6287442 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml @@ -23,8 +23,8 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>8000000</MaxStreamingBitrate> - <MaxStaticBitrate>8000000</MaxStaticBitrate> + <MaxStreamingBitrate>10000000</MaxStreamingBitrate> + <MaxStaticBitrate>10000000</MaxStaticBitrate> <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> <MusicSyncBitrate>128000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> @@ -35,7 +35,6 @@ <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests> <EnableDlnaProtocol>true</EnableDlnaProtocol> - <EnableUrlBase>false</EnableUrlBase> <XmlRootAttributes /> <DirectPlayProfiles> <DirectPlayProfile container="ts" audioCodec="ac3" videoCodec="h264" type="Video" /> diff --git a/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml b/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml index d085db407..ca95ecde3 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml @@ -22,8 +22,8 @@ <MaxAlbumArtHeight>480</MaxAlbumArtHeight> <MaxIconWidth>48</MaxIconWidth> <MaxIconHeight>48</MaxIconHeight> - <MaxStreamingBitrate>8000000</MaxStreamingBitrate> - <MaxStaticBitrate>8000000</MaxStaticBitrate> + <MaxStreamingBitrate>10000000</MaxStreamingBitrate> + <MaxStaticBitrate>10000000</MaxStaticBitrate> <MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate> <MusicSyncBitrate>128000</MusicSyncBitrate> <XDlnaDoc>DMS-1.50</XDlnaDoc> @@ -34,7 +34,6 @@ <EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar> <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests> <EnableDlnaProtocol>true</EnableDlnaProtocol> - <EnableUrlBase>false</EnableUrlBase> <XmlRootAttributes /> <DirectPlayProfiles> <DirectPlayProfile container="mp3" audioCodec="mp2,mp3" type="Audio" /> diff --git a/MediaBrowser.LocalMetadata/BaseXmlProvider.cs b/MediaBrowser.LocalMetadata/BaseXmlProvider.cs index 154d02600..57358fe62 100644 --- a/MediaBrowser.LocalMetadata/BaseXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/BaseXmlProvider.cs @@ -58,7 +58,7 @@ namespace MediaBrowser.LocalMetadata public bool HasChanged(IHasMetadata item, IDirectoryService directoryService, DateTime date) { - var file = GetXmlFile(new ItemInfo { IsInMixedFolder = item.IsInMixedFolder, Path = item.Path }, directoryService); + var file = GetXmlFile(new ItemInfo(item), directoryService); if (file == null) { diff --git a/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj b/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj index 894be8799..14cec3627 100644 --- a/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj +++ b/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj @@ -58,8 +58,6 @@ <Compile Include="Parsers\SeasonXmlParser.cs" /> <Compile Include="Parsers\SeriesXmlParser.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> - <Compile Include="Providers\AlbumXmlProvider.cs" /> - <Compile Include="Providers\ArtistXmlProvider.cs" /> <Compile Include="Providers\BoxSetXmlProvider.cs" /> <Compile Include="Providers\EpisodeXmlProvider.cs" /> <Compile Include="Providers\FolderXmlProvider.cs" /> @@ -80,7 +78,6 @@ <Compile Include="Savers\MovieXmlSaver.cs" /> <Compile Include="Savers\PersonXmlSaver.cs" /> <Compile Include="Savers\PlaylistXmlSaver.cs" /> - <Compile Include="Savers\SeasonXmlSaver.cs" /> <Compile Include="Savers\SeriesXmlSaver.cs" /> <Compile Include="Savers\XmlSaverHelpers.cs" /> </ItemGroup> diff --git a/MediaBrowser.LocalMetadata/Parsers/BoxSetXmlParser.cs b/MediaBrowser.LocalMetadata/Parsers/BoxSetXmlParser.cs index f89e29d54..772af0673 100644 --- a/MediaBrowser.LocalMetadata/Parsers/BoxSetXmlParser.cs +++ b/MediaBrowser.LocalMetadata/Parsers/BoxSetXmlParser.cs @@ -14,7 +14,7 @@ namespace MediaBrowser.LocalMetadata.Parsers { } - protected override void FetchDataFromXmlNode(XmlReader reader, BoxSet item) + protected override void FetchDataFromXmlNode(XmlReader reader, MetadataResult<BoxSet> item) { switch (reader.Name) { @@ -32,7 +32,7 @@ namespace MediaBrowser.LocalMetadata.Parsers } } - private void FetchFromCollectionItemsNode(XmlReader reader, BoxSet item) + private void FetchFromCollectionItemsNode(XmlReader reader, MetadataResult<BoxSet> item) { reader.MoveToContent(); @@ -66,7 +66,7 @@ namespace MediaBrowser.LocalMetadata.Parsers } } - item.LinkedChildren = list; + item.Item.LinkedChildren = list; } } } diff --git a/MediaBrowser.LocalMetadata/Parsers/EpisodeXmlParser.cs b/MediaBrowser.LocalMetadata/Parsers/EpisodeXmlParser.cs index 8430f3b3c..08454c8e7 100644 --- a/MediaBrowser.LocalMetadata/Parsers/EpisodeXmlParser.cs +++ b/MediaBrowser.LocalMetadata/Parsers/EpisodeXmlParser.cs @@ -1,13 +1,13 @@ -using System; +using MediaBrowser.Controller.Entities.TV; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Logging; +using System; using System.Collections.Generic; using System.Globalization; using System.IO; using System.Threading; using System.Xml; -using MediaBrowser.Controller.Entities.TV; -using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Entities; -using MediaBrowser.Model.Logging; namespace MediaBrowser.LocalMetadata.Parsers { @@ -17,7 +17,6 @@ namespace MediaBrowser.LocalMetadata.Parsers public class EpisodeXmlParser : BaseItemXmlParser<Episode> { private List<LocalImageInfo> _imagesFound; - private List<ChapterInfo> _chaptersFound; public EpisodeXmlParser(ILogger logger) : base(logger) @@ -26,14 +25,12 @@ namespace MediaBrowser.LocalMetadata.Parsers private string _xmlPath; - public void Fetch(Episode item, + public void Fetch(MetadataResult<Episode> item, List<LocalImageInfo> images, - List<ChapterInfo> chapters, string metadataFile, CancellationToken cancellationToken) { _imagesFound = images; - _chaptersFound = chapters; _xmlPath = metadataFile; Fetch(item, metadataFile, cancellationToken); @@ -45,16 +42,13 @@ namespace MediaBrowser.LocalMetadata.Parsers /// Fetches the data from XML node. /// </summary> /// <param name="reader">The reader.</param> - /// <param name="item">The item.</param> - protected override void FetchDataFromXmlNode(XmlReader reader, Episode item) + /// <param name="result">The result.</param> + protected override void FetchDataFromXmlNode(XmlReader reader, MetadataResult<Episode> result) { + var item = result.Item; + switch (reader.Name) { - case "Chapters": - - _chaptersFound.AddRange(FetchChaptersFromXmlNode(item, reader.ReadSubtree())); - break; - case "Episode": //MB generated metadata is within an "Episode" node @@ -67,7 +61,7 @@ namespace MediaBrowser.LocalMetadata.Parsers { if (subTree.NodeType == XmlNodeType.Element) { - FetchDataFromXmlNode(subTree, item); + FetchDataFromXmlNode(subTree, result); } } @@ -263,7 +257,7 @@ namespace MediaBrowser.LocalMetadata.Parsers default: - base.FetchDataFromXmlNode(reader, item); + base.FetchDataFromXmlNode(reader, result); break; } } diff --git a/MediaBrowser.LocalMetadata/Parsers/GameSystemXmlParser.cs b/MediaBrowser.LocalMetadata/Parsers/GameSystemXmlParser.cs index d449108c4..8ae0eafec 100644 --- a/MediaBrowser.LocalMetadata/Parsers/GameSystemXmlParser.cs +++ b/MediaBrowser.LocalMetadata/Parsers/GameSystemXmlParser.cs @@ -16,7 +16,7 @@ namespace MediaBrowser.LocalMetadata.Parsers } private readonly Task _cachedTask = Task.FromResult(true); - public Task FetchAsync(GameSystem item, string metadataFile, CancellationToken cancellationToken) + public Task FetchAsync(MetadataResult<GameSystem> item, string metadataFile, CancellationToken cancellationToken) { Fetch(item, metadataFile, cancellationToken); @@ -29,9 +29,11 @@ namespace MediaBrowser.LocalMetadata.Parsers /// Fetches the data from XML node. /// </summary> /// <param name="reader">The reader.</param> - /// <param name="item">The item.</param> - protected override void FetchDataFromXmlNode(XmlReader reader, GameSystem item) + /// <param name="result">The result.</param> + protected override void FetchDataFromXmlNode(XmlReader reader, MetadataResult<GameSystem> result) { + var item = result.Item; + switch (reader.Name) { case "GameSystem": @@ -56,7 +58,7 @@ namespace MediaBrowser.LocalMetadata.Parsers default: - base.FetchDataFromXmlNode(reader, item); + base.FetchDataFromXmlNode(reader, result); break; } } diff --git a/MediaBrowser.LocalMetadata/Parsers/GameXmlParser.cs b/MediaBrowser.LocalMetadata/Parsers/GameXmlParser.cs index 2caced8a9..b5a68c61f 100644 --- a/MediaBrowser.LocalMetadata/Parsers/GameXmlParser.cs +++ b/MediaBrowser.LocalMetadata/Parsers/GameXmlParser.cs @@ -22,7 +22,7 @@ namespace MediaBrowser.LocalMetadata.Parsers } private readonly Task _cachedTask = Task.FromResult(true); - public Task FetchAsync(Game item, string metadataFile, CancellationToken cancellationToken) + public Task FetchAsync(MetadataResult<Game> item, string metadataFile, CancellationToken cancellationToken) { Fetch(item, metadataFile, cancellationToken); @@ -35,9 +35,11 @@ namespace MediaBrowser.LocalMetadata.Parsers /// Fetches the data from XML node. /// </summary> /// <param name="reader">The reader.</param> - /// <param name="item">The item.</param> - protected override void FetchDataFromXmlNode(XmlReader reader, Game item) + /// <param name="result">The result.</param> + protected override void FetchDataFromXmlNode(XmlReader reader, MetadataResult<Game> result) { + var item = result.Item; + switch (reader.Name) { case "GameSystem": @@ -97,7 +99,7 @@ namespace MediaBrowser.LocalMetadata.Parsers default: - base.FetchDataFromXmlNode(reader, item); + base.FetchDataFromXmlNode(reader, result); break; } } diff --git a/MediaBrowser.LocalMetadata/Parsers/MovieXmlParser.cs b/MediaBrowser.LocalMetadata/Parsers/MovieXmlParser.cs index 388a0d20d..0b434231f 100644 --- a/MediaBrowser.LocalMetadata/Parsers/MovieXmlParser.cs +++ b/MediaBrowser.LocalMetadata/Parsers/MovieXmlParser.cs @@ -1,43 +1,31 @@ -using System.Collections.Generic; -using System.Threading; -using System.Xml; -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; +using System.Xml; namespace MediaBrowser.LocalMetadata.Parsers { /// <summary> /// Class EpisodeXmlParser /// </summary> - public class MovieXmlParser : BaseItemXmlParser<Video> + public class BaseVideoXmlParser<T> : BaseItemXmlParser<T> + where T : Video { - private List<ChapterInfo> _chaptersFound; - - public MovieXmlParser(ILogger logger) + public BaseVideoXmlParser(ILogger logger) : base(logger) { } - public void Fetch(Video item, - List<ChapterInfo> chapters, - string metadataFile, - CancellationToken cancellationToken) - { - _chaptersFound = chapters; - - Fetch(item, metadataFile, cancellationToken); - } - /// <summary> /// Fetches the data from XML node. /// </summary> /// <param name="reader">The reader.</param> - /// <param name="item">The item.</param> - protected override void FetchDataFromXmlNode(XmlReader reader, Video item) + /// <param name="result">The result.</param> + protected override void FetchDataFromXmlNode(XmlReader reader, MetadataResult<T> result) { + var item = result.Item; + switch (reader.Name) { case "TmdbCollectionName": @@ -53,15 +41,25 @@ namespace MediaBrowser.LocalMetadata.Parsers break; } - case "Chapters": - - _chaptersFound.AddRange(FetchChaptersFromXmlNode(item, reader.ReadSubtree())); - break; - default: - base.FetchDataFromXmlNode(reader, item); + base.FetchDataFromXmlNode(reader, result); break; } } } + + public class MovieXmlParser : BaseVideoXmlParser<Movie> + { + public MovieXmlParser(ILogger logger) : base(logger) + { + } + } + + public class VideoXmlParser : BaseVideoXmlParser<Video> + { + public VideoXmlParser(ILogger logger) + : base(logger) + { + } + } } diff --git a/MediaBrowser.LocalMetadata/Parsers/MusicVideoXmlParser.cs b/MediaBrowser.LocalMetadata/Parsers/MusicVideoXmlParser.cs index f695487c5..d93746aa0 100644 --- a/MediaBrowser.LocalMetadata/Parsers/MusicVideoXmlParser.cs +++ b/MediaBrowser.LocalMetadata/Parsers/MusicVideoXmlParser.cs @@ -6,7 +6,7 @@ using System.Xml; namespace MediaBrowser.LocalMetadata.Parsers { - public class MusicVideoXmlParser : BaseItemXmlParser<MusicVideo> + public class MusicVideoXmlParser : BaseVideoXmlParser<MusicVideo> { /// <summary> /// Initializes a new instance of the <see cref="BaseItemXmlParser{T}" /> class. @@ -21,9 +21,11 @@ namespace MediaBrowser.LocalMetadata.Parsers /// Fetches the data from XML node. /// </summary> /// <param name="reader">The reader.</param> - /// <param name="item">The item.</param> - protected override void FetchDataFromXmlNode(XmlReader reader, MusicVideo item) + /// <param name="result">The result.</param> + protected override void FetchDataFromXmlNode(XmlReader reader, MetadataResult<MusicVideo> result) { + var item = result.Item; + switch (reader.Name) { case "Artist": @@ -44,7 +46,7 @@ namespace MediaBrowser.LocalMetadata.Parsers break; default: - base.FetchDataFromXmlNode(reader, item); + base.FetchDataFromXmlNode(reader, result); break; } } diff --git a/MediaBrowser.LocalMetadata/Parsers/PlaylistXmlParser.cs b/MediaBrowser.LocalMetadata/Parsers/PlaylistXmlParser.cs index 02457ee73..d4552fe12 100644 --- a/MediaBrowser.LocalMetadata/Parsers/PlaylistXmlParser.cs +++ b/MediaBrowser.LocalMetadata/Parsers/PlaylistXmlParser.cs @@ -16,8 +16,10 @@ namespace MediaBrowser.LocalMetadata.Parsers { } - protected override void FetchDataFromXmlNode(XmlReader reader, Playlist item) + protected override void FetchDataFromXmlNode(XmlReader reader, MetadataResult<Playlist> result) { + var item = result.Item; + switch (reader.Name) { case "OwnerUserId": @@ -59,7 +61,7 @@ namespace MediaBrowser.LocalMetadata.Parsers break; default: - base.FetchDataFromXmlNode(reader, item); + base.FetchDataFromXmlNode(reader, result); break; } } diff --git a/MediaBrowser.LocalMetadata/Parsers/SeasonXmlParser.cs b/MediaBrowser.LocalMetadata/Parsers/SeasonXmlParser.cs index 62a7d37cf..7fd60d3f7 100644 --- a/MediaBrowser.LocalMetadata/Parsers/SeasonXmlParser.cs +++ b/MediaBrowser.LocalMetadata/Parsers/SeasonXmlParser.cs @@ -16,9 +16,11 @@ namespace MediaBrowser.LocalMetadata.Parsers /// Fetches the data from XML node. /// </summary> /// <param name="reader">The reader.</param> - /// <param name="item">The item.</param> - protected override void FetchDataFromXmlNode(XmlReader reader, Season item) + /// <param name="result">The result.</param> + protected override void FetchDataFromXmlNode(XmlReader reader, MetadataResult<Season> result) { + var item = result.Item; + switch (reader.Name) { case "SeasonNumber": @@ -38,7 +40,7 @@ namespace MediaBrowser.LocalMetadata.Parsers } default: - base.FetchDataFromXmlNode(reader, item); + base.FetchDataFromXmlNode(reader, result); break; } } diff --git a/MediaBrowser.LocalMetadata/Parsers/SeriesXmlParser.cs b/MediaBrowser.LocalMetadata/Parsers/SeriesXmlParser.cs index a3d45034e..8133bd9fe 100644 --- a/MediaBrowser.LocalMetadata/Parsers/SeriesXmlParser.cs +++ b/MediaBrowser.LocalMetadata/Parsers/SeriesXmlParser.cs @@ -26,9 +26,11 @@ namespace MediaBrowser.LocalMetadata.Parsers /// Fetches the data from XML node. /// </summary> /// <param name="reader">The reader.</param> - /// <param name="item">The item.</param> - protected override void FetchDataFromXmlNode(XmlReader reader, Series item) + /// <param name="result">The result.</param> + protected override void FetchDataFromXmlNode(XmlReader reader, MetadataResult<Series> result) { + var item = result.Item; + switch (reader.Name) { case "Series": @@ -42,7 +44,7 @@ namespace MediaBrowser.LocalMetadata.Parsers { if (subTree.NodeType == XmlNodeType.Element) { - FetchDataFromXmlNode(subTree, item); + FetchDataFromXmlNode(subTree, result); } } @@ -110,7 +112,7 @@ namespace MediaBrowser.LocalMetadata.Parsers } default: - base.FetchDataFromXmlNode(reader, item); + base.FetchDataFromXmlNode(reader, result); break; } } diff --git a/MediaBrowser.LocalMetadata/Providers/AlbumXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/AlbumXmlProvider.cs deleted file mode 100644 index 646922769..000000000 --- a/MediaBrowser.LocalMetadata/Providers/AlbumXmlProvider.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System.IO; -using System.Threading; -using MediaBrowser.Common.IO; -using MediaBrowser.Controller.Entities.Audio; -using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Logging; - -namespace MediaBrowser.LocalMetadata.Providers -{ - public class AlbumXmlProvider : BaseXmlProvider<MusicAlbum> - { - private readonly ILogger _logger; - - public AlbumXmlProvider(IFileSystem fileSystem, ILogger logger) - : base(fileSystem) - { - _logger = logger; - } - - protected override void Fetch(LocalMetadataResult<MusicAlbum> result, string path, CancellationToken cancellationToken) - { - new BaseItemXmlParser<MusicAlbum>(_logger).Fetch(result.Item, path, cancellationToken); - } - - protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) - { - return directoryService.GetFile(Path.Combine(info.Path, "album.xml")); - } - } -} diff --git a/MediaBrowser.LocalMetadata/Providers/ArtistXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/ArtistXmlProvider.cs deleted file mode 100644 index 0b5ebfb11..000000000 --- a/MediaBrowser.LocalMetadata/Providers/ArtistXmlProvider.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System.IO; -using System.Threading; -using MediaBrowser.Common.IO; -using MediaBrowser.Controller.Entities.Audio; -using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Logging; - -namespace MediaBrowser.LocalMetadata.Providers -{ - class ArtistXmlProvider : BaseXmlProvider<MusicArtist> - { - private readonly ILogger _logger; - - public ArtistXmlProvider(IFileSystem fileSystem, ILogger logger) - : base(fileSystem) - { - _logger = logger; - } - - protected override void Fetch(LocalMetadataResult<MusicArtist> result, string path, CancellationToken cancellationToken) - { - new BaseItemXmlParser<MusicArtist>(_logger).Fetch(result.Item, path, cancellationToken); - } - - protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) - { - return directoryService.GetFile(Path.Combine(info.Path, "artist.xml")); - } - } -} diff --git a/MediaBrowser.LocalMetadata/Providers/BoxSetXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/BoxSetXmlProvider.cs index 6e40c3594..98a5d5e91 100644 --- a/MediaBrowser.LocalMetadata/Providers/BoxSetXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/Providers/BoxSetXmlProvider.cs @@ -23,7 +23,7 @@ namespace MediaBrowser.LocalMetadata.Providers protected override void Fetch(LocalMetadataResult<BoxSet> result, string path, CancellationToken cancellationToken) { - new BoxSetXmlParser(_logger).Fetch(result.Item, path, cancellationToken); + new BoxSetXmlParser(_logger).Fetch(result, path, cancellationToken); } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) diff --git a/MediaBrowser.LocalMetadata/Providers/EpisodeXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/EpisodeXmlProvider.cs index d80009330..c1fc1ba5e 100644 --- a/MediaBrowser.LocalMetadata/Providers/EpisodeXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/Providers/EpisodeXmlProvider.cs @@ -25,10 +25,9 @@ namespace MediaBrowser.LocalMetadata.Providers var images = new List<LocalImageInfo>(); var chapters = new List<ChapterInfo>(); - new EpisodeXmlParser(_logger).Fetch(result.Item, images, chapters, path, cancellationToken); + new EpisodeXmlParser(_logger).Fetch(result, images, path, cancellationToken); result.Images = images; - result.Chapters = chapters; } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) diff --git a/MediaBrowser.LocalMetadata/Providers/FolderXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/FolderXmlProvider.cs index 0a2b33744..d18e92f16 100644 --- a/MediaBrowser.LocalMetadata/Providers/FolderXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/Providers/FolderXmlProvider.cs @@ -22,7 +22,7 @@ namespace MediaBrowser.LocalMetadata.Providers protected override void Fetch(LocalMetadataResult<Folder> result, string path, CancellationToken cancellationToken) { - new BaseItemXmlParser<Folder>(_logger).Fetch(result.Item, path, cancellationToken); + new BaseItemXmlParser<Folder>(_logger).Fetch(result, path, cancellationToken); } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) diff --git a/MediaBrowser.LocalMetadata/Providers/GameSystemXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/GameSystemXmlProvider.cs index dd486da1d..9d86edbf9 100644 --- a/MediaBrowser.LocalMetadata/Providers/GameSystemXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/Providers/GameSystemXmlProvider.cs @@ -20,7 +20,7 @@ namespace MediaBrowser.LocalMetadata.Providers protected override void Fetch(LocalMetadataResult<GameSystem> result, string path, CancellationToken cancellationToken) { - new GameSystemXmlParser(_logger).Fetch(result.Item, path, cancellationToken); + new GameSystemXmlParser(_logger).Fetch(result, path, cancellationToken); } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) diff --git a/MediaBrowser.LocalMetadata/Providers/GameXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/GameXmlProvider.cs index 0a25ce9b6..97a3da147 100644 --- a/MediaBrowser.LocalMetadata/Providers/GameXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/Providers/GameXmlProvider.cs @@ -20,7 +20,7 @@ namespace MediaBrowser.LocalMetadata.Providers protected override void Fetch(LocalMetadataResult<Game> result, string path, CancellationToken cancellationToken) { - new GameXmlParser(_logger).Fetch(result.Item, path, cancellationToken); + new GameXmlParser(_logger).Fetch(result, path, cancellationToken); } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) diff --git a/MediaBrowser.LocalMetadata/Providers/MovieXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/MovieXmlProvider.cs index fb3a01bf2..09f13b2ea 100644 --- a/MediaBrowser.LocalMetadata/Providers/MovieXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/Providers/MovieXmlProvider.cs @@ -2,9 +2,7 @@ using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Providers; using MediaBrowser.LocalMetadata.Parsers; -using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; -using System.Collections.Generic; using System.IO; using System.Threading; @@ -22,11 +20,7 @@ namespace MediaBrowser.LocalMetadata.Providers protected override void Fetch(LocalMetadataResult<Movie> result, string path, CancellationToken cancellationToken) { - var chapters = new List<ChapterInfo>(); - - new MovieXmlParser(_logger).Fetch(result.Item, chapters, path, cancellationToken); - - result.Chapters = chapters; + new MovieXmlParser(_logger).Fetch(result, path, cancellationToken); } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) diff --git a/MediaBrowser.LocalMetadata/Providers/MusicVideoXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/MusicVideoXmlProvider.cs index 6289dcb56..b3476c03b 100644 --- a/MediaBrowser.LocalMetadata/Providers/MusicVideoXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/Providers/MusicVideoXmlProvider.cs @@ -20,7 +20,7 @@ namespace MediaBrowser.LocalMetadata.Providers protected override void Fetch(LocalMetadataResult<MusicVideo> result, string path, CancellationToken cancellationToken) { - new MusicVideoXmlParser(_logger).Fetch(result.Item, path, cancellationToken); + new MusicVideoXmlParser(_logger).Fetch(result, path, cancellationToken); } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) diff --git a/MediaBrowser.LocalMetadata/Providers/PersonXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/PersonXmlProvider.cs index 9f27d6c7d..a97d86406 100644 --- a/MediaBrowser.LocalMetadata/Providers/PersonXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/Providers/PersonXmlProvider.cs @@ -19,7 +19,7 @@ namespace MediaBrowser.LocalMetadata.Providers protected override void Fetch(LocalMetadataResult<Person> result, string path, CancellationToken cancellationToken) { - new BaseItemXmlParser<Person>(_logger).Fetch(result.Item, path, cancellationToken); + new BaseItemXmlParser<Person>(_logger).Fetch(result, path, cancellationToken); } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) diff --git a/MediaBrowser.LocalMetadata/Providers/PlaylistXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/PlaylistXmlProvider.cs index 2279ae052..f4c2a6afb 100644 --- a/MediaBrowser.LocalMetadata/Providers/PlaylistXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/Providers/PlaylistXmlProvider.cs @@ -20,7 +20,7 @@ namespace MediaBrowser.LocalMetadata.Providers protected override void Fetch(LocalMetadataResult<Playlist> result, string path, CancellationToken cancellationToken) { - new PlaylistXmlParser(_logger).Fetch(result.Item, path, cancellationToken); + new PlaylistXmlParser(_logger).Fetch(result, path, cancellationToken); } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) diff --git a/MediaBrowser.LocalMetadata/Providers/SeasonXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/SeasonXmlProvider.cs index 2320982c3..ab68e1e86 100644 --- a/MediaBrowser.LocalMetadata/Providers/SeasonXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/Providers/SeasonXmlProvider.cs @@ -23,7 +23,7 @@ namespace MediaBrowser.LocalMetadata.Providers protected override void Fetch(LocalMetadataResult<Season> result, string path, CancellationToken cancellationToken) { - new SeasonXmlParser(_logger).Fetch(result.Item, path, cancellationToken); + new SeasonXmlParser(_logger).Fetch(result, path, cancellationToken); } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) diff --git a/MediaBrowser.LocalMetadata/Providers/SeriesXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/SeriesXmlProvider.cs index 311c10287..f27612f2f 100644 --- a/MediaBrowser.LocalMetadata/Providers/SeriesXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/Providers/SeriesXmlProvider.cs @@ -23,7 +23,7 @@ namespace MediaBrowser.LocalMetadata.Providers protected override void Fetch(LocalMetadataResult<Series> result, string path, CancellationToken cancellationToken) { - new SeriesXmlParser(_logger).Fetch(result.Item, path, cancellationToken); + new SeriesXmlParser(_logger).Fetch(result, path, cancellationToken); } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) diff --git a/MediaBrowser.LocalMetadata/Providers/VideoXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/VideoXmlProvider.cs index 25aa61baf..9ba64164e 100644 --- a/MediaBrowser.LocalMetadata/Providers/VideoXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/Providers/VideoXmlProvider.cs @@ -1,12 +1,10 @@ -using System.Collections.Generic; -using System.IO; -using System.Threading; -using MediaBrowser.Common.IO; +using MediaBrowser.Common.IO; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Providers; using MediaBrowser.LocalMetadata.Parsers; -using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; +using System.IO; +using System.Threading; namespace MediaBrowser.LocalMetadata.Providers { @@ -22,11 +20,7 @@ namespace MediaBrowser.LocalMetadata.Providers protected override void Fetch(LocalMetadataResult<Video> result, string path, CancellationToken cancellationToken) { - var chapters = new List<ChapterInfo>(); - - new MovieXmlParser(_logger).Fetch(result.Item, chapters, path, cancellationToken); - - result.Chapters = chapters; + new VideoXmlParser(_logger).Fetch(result, path, cancellationToken); } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) diff --git a/MediaBrowser.LocalMetadata/Savers/BoxSetXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/BoxSetXmlSaver.cs index f04175654..e6ae84169 100644 --- a/MediaBrowser.LocalMetadata/Savers/BoxSetXmlSaver.cs +++ b/MediaBrowser.LocalMetadata/Savers/BoxSetXmlSaver.cs @@ -20,10 +20,12 @@ namespace MediaBrowser.LocalMetadata.Savers } private readonly IServerConfigurationManager _config; + private readonly ILibraryManager _libraryManager; - public BoxSetXmlSaver(IServerConfigurationManager config) + public BoxSetXmlSaver(IServerConfigurationManager config, ILibraryManager libraryManager) { _config = config; + _libraryManager = libraryManager; } /// <summary> @@ -54,7 +56,7 @@ namespace MediaBrowser.LocalMetadata.Savers builder.Append("<Item>"); - XmlSaverHelpers.AddCommonNodes((BoxSet)item, builder); + XmlSaverHelpers.AddCommonNodes((BoxSet)item, _libraryManager, builder); builder.Append("</Item>"); diff --git a/MediaBrowser.LocalMetadata/Savers/EpisodeXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/EpisodeXmlSaver.cs index 673d8bc41..7a2a97c0c 100644 --- a/MediaBrowser.LocalMetadata/Savers/EpisodeXmlSaver.cs +++ b/MediaBrowser.LocalMetadata/Savers/EpisodeXmlSaver.cs @@ -18,11 +18,13 @@ namespace MediaBrowser.LocalMetadata.Savers private readonly CultureInfo _usCulture = new CultureInfo("en-US"); private readonly IServerConfigurationManager _config; + private readonly ILibraryManager _libraryManager; - public EpisodeXmlSaver(IItemRepository itemRepository, IServerConfigurationManager config) + public EpisodeXmlSaver(IItemRepository itemRepository, IServerConfigurationManager config, ILibraryManager libraryManager) { _itemRepository = itemRepository; _config = config; + _libraryManager = libraryManager; } /// <summary> @@ -116,7 +118,7 @@ namespace MediaBrowser.LocalMetadata.Savers builder.Append("<FirstAired>" + SecurityElement.Escape(episode.PremiereDate.Value.ToLocalTime().ToString("yyyy-MM-dd")) + "</FirstAired>"); } - XmlSaverHelpers.AddCommonNodes(episode, builder); + XmlSaverHelpers.AddCommonNodes(episode, _libraryManager, builder); XmlSaverHelpers.AddMediaInfo(episode, builder, _itemRepository); builder.Append("</Item>"); diff --git a/MediaBrowser.LocalMetadata/Savers/FolderXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/FolderXmlSaver.cs index 67fa12b55..ac56f0864 100644 --- a/MediaBrowser.LocalMetadata/Savers/FolderXmlSaver.cs +++ b/MediaBrowser.LocalMetadata/Savers/FolderXmlSaver.cs @@ -23,10 +23,12 @@ namespace MediaBrowser.LocalMetadata.Savers } private readonly IServerConfigurationManager _config; + private readonly ILibraryManager _libraryManager; - public FolderXmlSaver(IServerConfigurationManager config) + public FolderXmlSaver(IServerConfigurationManager config, ILibraryManager libraryManager) { _config = config; + _libraryManager = libraryManager; } /// <summary> @@ -68,7 +70,7 @@ namespace MediaBrowser.LocalMetadata.Savers builder.Append("<Item>"); - XmlSaverHelpers.AddCommonNodes((Folder)item, builder); + XmlSaverHelpers.AddCommonNodes((Folder)item, _libraryManager, builder); builder.Append("</Item>"); diff --git a/MediaBrowser.LocalMetadata/Savers/GameSystemXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/GameSystemXmlSaver.cs index ebb401f54..770f1d7f9 100644 --- a/MediaBrowser.LocalMetadata/Savers/GameSystemXmlSaver.cs +++ b/MediaBrowser.LocalMetadata/Savers/GameSystemXmlSaver.cs @@ -20,10 +20,12 @@ namespace MediaBrowser.LocalMetadata.Savers } private readonly IServerConfigurationManager _config; + private readonly ILibraryManager _libraryManager; - public GameSystemXmlSaver(IServerConfigurationManager config) + public GameSystemXmlSaver(IServerConfigurationManager config, ILibraryManager libraryManager) { _config = config; + _libraryManager = libraryManager; } /// <summary> @@ -61,7 +63,7 @@ namespace MediaBrowser.LocalMetadata.Savers builder.Append("<GameSystem>" + SecurityElement.Escape(gameSystem.GameSystemName) + "</GameSystem>"); } - XmlSaverHelpers.AddCommonNodes(gameSystem, builder); + XmlSaverHelpers.AddCommonNodes(gameSystem, _libraryManager, builder); builder.Append("</Item>"); diff --git a/MediaBrowser.LocalMetadata/Savers/GameXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/GameXmlSaver.cs index 108c6a9e2..26c4ff395 100644 --- a/MediaBrowser.LocalMetadata/Savers/GameXmlSaver.cs +++ b/MediaBrowser.LocalMetadata/Savers/GameXmlSaver.cs @@ -25,12 +25,14 @@ namespace MediaBrowser.LocalMetadata.Savers } private readonly IServerConfigurationManager _config; + private readonly ILibraryManager _libraryManager; - public GameXmlSaver(IServerConfigurationManager config) + public GameXmlSaver(IServerConfigurationManager config, ILibraryManager libraryManager) { _config = config; + _libraryManager = libraryManager; } - + /// <summary> /// Determines whether [is enabled for] [the specified item]. /// </summary> @@ -87,7 +89,7 @@ namespace MediaBrowser.LocalMetadata.Savers builder.Append("<NesBoxRom>" + SecurityElement.Escape(val) + "</NesBoxRom>"); } - XmlSaverHelpers.AddCommonNodes(game, builder); + XmlSaverHelpers.AddCommonNodes(game, _libraryManager, builder); builder.Append("</Item>"); diff --git a/MediaBrowser.LocalMetadata/Savers/MovieXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/MovieXmlSaver.cs index eb1a0b78c..dc5b45259 100644 --- a/MediaBrowser.LocalMetadata/Savers/MovieXmlSaver.cs +++ b/MediaBrowser.LocalMetadata/Savers/MovieXmlSaver.cs @@ -74,7 +74,7 @@ namespace MediaBrowser.LocalMetadata.Savers builder.Append("<Title>"); - XmlSaverHelpers.AddCommonNodes(video, builder); + XmlSaverHelpers.AddCommonNodes(video, _libraryManager, builder); var musicVideo = item as MusicVideo; diff --git a/MediaBrowser.LocalMetadata/Savers/PersonXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/PersonXmlSaver.cs index 9c6fb39bd..9d943bfa4 100644 --- a/MediaBrowser.LocalMetadata/Savers/PersonXmlSaver.cs +++ b/MediaBrowser.LocalMetadata/Savers/PersonXmlSaver.cs @@ -23,10 +23,12 @@ namespace MediaBrowser.LocalMetadata.Savers } private readonly IServerConfigurationManager _config; + private readonly ILibraryManager _libraryManager; - public PersonXmlSaver(IServerConfigurationManager config) + public PersonXmlSaver(IServerConfigurationManager config, ILibraryManager libraryManager) { _config = config; + _libraryManager = libraryManager; } /// <summary> @@ -59,7 +61,7 @@ namespace MediaBrowser.LocalMetadata.Savers builder.Append("<Item>"); - XmlSaverHelpers.AddCommonNodes(person, builder); + XmlSaverHelpers.AddCommonNodes(person, _libraryManager, builder); if (!string.IsNullOrEmpty(person.PlaceOfBirth)) { diff --git a/MediaBrowser.LocalMetadata/Savers/PlaylistXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/PlaylistXmlSaver.cs index 76ef4d4bf..7dfe59b4b 100644 --- a/MediaBrowser.LocalMetadata/Savers/PlaylistXmlSaver.cs +++ b/MediaBrowser.LocalMetadata/Savers/PlaylistXmlSaver.cs @@ -21,10 +21,12 @@ namespace MediaBrowser.LocalMetadata.Savers } private readonly IServerConfigurationManager _config; + private readonly ILibraryManager _libraryManager; - public PlaylistXmlSaver(IServerConfigurationManager config) + public PlaylistXmlSaver(IServerConfigurationManager config, ILibraryManager libraryManager) { _config = config; + _libraryManager = libraryManager; } /// <summary> @@ -61,8 +63,8 @@ namespace MediaBrowser.LocalMetadata.Savers { builder.Append("<PlaylistMediaType>" + SecurityElement.Escape(playlist.PlaylistMediaType) + "</PlaylistMediaType>"); } - - XmlSaverHelpers.AddCommonNodes(playlist, builder); + + XmlSaverHelpers.AddCommonNodes(playlist, _libraryManager, builder); builder.Append("</Item>"); diff --git a/MediaBrowser.LocalMetadata/Savers/SeasonXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/SeasonXmlSaver.cs deleted file mode 100644 index a112f22fa..000000000 --- a/MediaBrowser.LocalMetadata/Savers/SeasonXmlSaver.cs +++ /dev/null @@ -1,95 +0,0 @@ -using MediaBrowser.Controller.Configuration; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Entities.TV; -using MediaBrowser.Controller.Library; -using System.Collections.Generic; -using System.Globalization; -using System.IO; -using System.Security; -using System.Text; -using System.Threading; - -namespace MediaBrowser.LocalMetadata.Savers -{ - public class SeasonXmlSaver : IMetadataFileSaver - { - public string Name - { - get - { - return XmlProviderUtils.Name; - } - } - - private readonly IServerConfigurationManager _config; - - public SeasonXmlSaver(IServerConfigurationManager config) - { - _config = config; - } - - /// <summary> - /// Determines whether [is enabled for] [the specified item]. - /// </summary> - /// <param name="item">The item.</param> - /// <param name="updateType">Type of the update.</param> - /// <returns><c>true</c> if [is enabled for] [the specified item]; otherwise, <c>false</c>.</returns> - public bool IsEnabledFor(IHasMetadata item, ItemUpdateType updateType) - { - if (!item.SupportsLocalMetadata) - { - return false; - } - - if (!(item is Season)) - { - return false; - } - - return updateType >= ItemUpdateType.MetadataDownload || (updateType >= ItemUpdateType.MetadataImport && File.Exists(GetSavePath(item))); - } - - private readonly CultureInfo _usCulture = new CultureInfo("en-US"); - - /// <summary> - /// Saves the specified item. - /// </summary> - /// <param name="item">The item.</param> - /// <param name="cancellationToken">The cancellation token.</param> - /// <returns>Task.</returns> - public void Save(IHasMetadata item, CancellationToken cancellationToken) - { - var builder = new StringBuilder(); - - builder.Append("<Item>"); - - var season = (Season)item; - - if (season.IndexNumber.HasValue) - { - builder.Append("<SeasonNumber>" + SecurityElement.Escape(season.IndexNumber.Value.ToString(_usCulture)) + "</SeasonNumber>"); - } - - XmlSaverHelpers.AddCommonNodes((Season)item, builder); - - builder.Append("</Item>"); - - var xmlFilePath = GetSavePath(item); - - XmlSaverHelpers.Save(builder, xmlFilePath, new List<string> - { - "SeasonNumber" - }, _config); - } - - /// <summary> - /// Gets the save path. - /// </summary> - /// <param name="item">The item.</param> - /// <returns>System.String.</returns> - public string GetSavePath(IHasMetadata item) - { - return Path.Combine(item.Path, "season.xml"); - } - } -} diff --git a/MediaBrowser.LocalMetadata/Savers/SeriesXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/SeriesXmlSaver.cs index c94770bdb..45aff5e2c 100644 --- a/MediaBrowser.LocalMetadata/Savers/SeriesXmlSaver.cs +++ b/MediaBrowser.LocalMetadata/Savers/SeriesXmlSaver.cs @@ -15,12 +15,14 @@ namespace MediaBrowser.LocalMetadata.Savers public class SeriesXmlSaver : IMetadataFileSaver { private readonly IServerConfigurationManager _config; + private readonly ILibraryManager _libraryManager; - public SeriesXmlSaver(IServerConfigurationManager config) + public SeriesXmlSaver(IServerConfigurationManager config, ILibraryManager libraryManager) { _config = config; + _libraryManager = libraryManager; } - + public string Name { get @@ -105,7 +107,7 @@ namespace MediaBrowser.LocalMetadata.Savers builder.Append("<AnimeSeriesIndex>" + SecurityElement.Escape(series.AnimeSeriesIndex.Value.ToString(UsCulture)) + "</AnimeSeriesIndex>"); } - XmlSaverHelpers.AddCommonNodes(series, builder); + XmlSaverHelpers.AddCommonNodes(series, _libraryManager, builder); builder.Append("</Series>"); diff --git a/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs b/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs index 1b98e75be..091d59469 100644 --- a/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs +++ b/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs @@ -2,6 +2,7 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.TV; +using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; using MediaBrowser.Controller.Playlists; using MediaBrowser.Model.Entities; @@ -230,7 +231,7 @@ namespace MediaBrowser.LocalMetadata.Savers /// </summary> /// <param name="item">The item.</param> /// <param name="builder">The builder.</param> - public static void AddCommonNodes(BaseItem item, StringBuilder builder) + public static void AddCommonNodes(BaseItem item, ILibraryManager libraryManager, StringBuilder builder) { if (!string.IsNullOrEmpty(item.OfficialRating)) { @@ -627,11 +628,13 @@ namespace MediaBrowser.LocalMetadata.Savers } } - if (item.People.Count > 0) + var people = libraryManager.GetPeople(item); + + if (people.Count > 0) { builder.Append("<Persons>"); - foreach (var person in item.People) + foreach (var person in people) { builder.Append("<Person>"); builder.Append("<Name>" + SecurityElement.Escape(person.Name) + "</Name>"); diff --git a/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs index e25537362..97c5aecd0 100644 --- a/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs +++ b/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs @@ -2,13 +2,10 @@ using MediaBrowser.Common.IO; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.MediaEncoding; using MediaBrowser.Controller.Session; using MediaBrowser.MediaEncoding.Subtitles; using MediaBrowser.Model.Configuration; -using MediaBrowser.Model.Dlna; -using MediaBrowser.Model.Drawing; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.IO; @@ -39,7 +36,7 @@ namespace MediaBrowser.MediaEncoding.Encoder protected readonly CultureInfo UsCulture = new CultureInfo("en-US"); - public BaseEncoder(MediaEncoder mediaEncoder, + protected BaseEncoder(MediaEncoder mediaEncoder, ILogger logger, IServerConfigurationManager configurationManager, IFileSystem fileSystem, @@ -64,7 +61,7 @@ namespace MediaBrowser.MediaEncoding.Encoder IProgress<double> progress, CancellationToken cancellationToken) { - var encodingJob = await new EncodingJobFactory(Logger, LibraryManager, MediaSourceManager) + var encodingJob = await new EncodingJobFactory(Logger, LibraryManager, MediaSourceManager, ConfigurationManager) .CreateJob(options, IsVideoEncoder, progress, cancellationToken).ConfigureAwait(false); encodingJob.OutputFilePath = GetOutputFilePath(encodingJob); @@ -305,25 +302,6 @@ namespace MediaBrowser.MediaEncoding.Encoder return job.Options.CpuCoreLimit ?? 0; } - protected EncodingQuality GetQualitySetting() - { - var quality = GetEncodingOptions().EncodingQuality; - - if (quality == EncodingQuality.Auto) - { - var cpuCount = Environment.ProcessorCount; - - if (cpuCount >= 4) - { - //return EncodingQuality.HighQuality; - } - - return EncodingQuality.HighSpeed; - } - - return quality; - } - protected string GetInputModifier(EncodingJob job, bool genPts = true) { var inputModifier = string.Empty; @@ -543,7 +521,7 @@ namespace MediaBrowser.MediaEncoding.Encoder var isVc1 = state.VideoStream != null && string.Equals(state.VideoStream.Codec, "vc1", StringComparison.OrdinalIgnoreCase); - var qualitySetting = GetQualitySetting(); + var qualitySetting = state.Quality; if (string.Equals(videoCodec, "libx264", StringComparison.OrdinalIgnoreCase)) { @@ -856,7 +834,7 @@ namespace MediaBrowser.MediaEncoding.Encoder { var heightParam = request.Height.Value.ToString(UsCulture); - filters.Add(string.Format("scale=trunc(oh*a*2)/2:{0}", heightParam)); + filters.Add(string.Format("scale=trunc(oh*a/2)*2:{0}", heightParam)); } // If a max width was requested @@ -872,7 +850,7 @@ namespace MediaBrowser.MediaEncoding.Encoder { var maxHeightParam = request.MaxHeight.Value.ToString(UsCulture); - filters.Add(string.Format("scale=trunc(oh*a*2)/2:min(ih\\,{0})", maxHeightParam)); + filters.Add(string.Format("scale=trunc(oh*a/2)*2:min(ih\\,{0})", maxHeightParam)); } var output = string.Empty; @@ -924,13 +902,13 @@ namespace MediaBrowser.MediaEncoding.Encoder // TODO: Perhaps also use original_size=1920x800 ?? return string.Format("subtitles=filename='{0}'{1},setpts=PTS -{2}/TB", - subtitlePath.Replace('\\', '/').Replace(":/", "\\:/"), + subtitlePath.Replace('\\', '/').Replace("'", "\\'").Replace(":/", "\\:/"), charsetParam, seconds.ToString(UsCulture)); } return string.Format("subtitles='{0}:si={1}',setpts=PTS -{2}/TB", - state.MediaPath.Replace('\\', '/').Replace(":/", "\\:/"), + state.MediaPath.Replace('\\', '/').Replace("'", "\\'").Replace(":/", "\\:/"), state.InternalSubtitleStreamOffset.ToString(UsCulture), seconds.ToString(UsCulture)); } diff --git a/MediaBrowser.MediaEncoding/Encoder/EncodingJob.cs b/MediaBrowser.MediaEncoding/Encoder/EncodingJob.cs index 767f3f829..efce5abb0 100644 --- a/MediaBrowser.MediaEncoding/Encoder/EncodingJob.cs +++ b/MediaBrowser.MediaEncoding/Encoder/EncodingJob.cs @@ -1,5 +1,6 @@ using MediaBrowser.Controller.Library; using MediaBrowser.Controller.MediaEncoding; +using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Drawing; using MediaBrowser.Model.Dto; @@ -24,7 +25,7 @@ namespace MediaBrowser.MediaEncoding.Encoder public Stream LogFileStream { get; set; } public IProgress<double> Progress { get; set; } public TaskCompletionSource<bool> TaskCompletionSource; - + public EncodingQuality Quality { get; set; } public EncodingJobOptions Options { get; set; } public string InputContainer { get; set; } public MediaSourceInfo MediaSource { get; set; } diff --git a/MediaBrowser.MediaEncoding/Encoder/EncodingJobFactory.cs b/MediaBrowser.MediaEncoding/Encoder/EncodingJobFactory.cs index 44b85a77d..d56838c8b 100644 --- a/MediaBrowser.MediaEncoding/Encoder/EncodingJobFactory.cs +++ b/MediaBrowser.MediaEncoding/Encoder/EncodingJobFactory.cs @@ -1,8 +1,7 @@ -using System.IO; -using MediaBrowser.Controller.Entities; +using MediaBrowser.Common.Configuration; using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.MediaEncoding; +using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; @@ -22,14 +21,16 @@ namespace MediaBrowser.MediaEncoding.Encoder private readonly ILogger _logger; private readonly ILibraryManager _libraryManager; private readonly IMediaSourceManager _mediaSourceManager; + private readonly IConfigurationManager _config; protected static readonly CultureInfo UsCulture = new CultureInfo("en-US"); - public EncodingJobFactory(ILogger logger, ILibraryManager libraryManager, IMediaSourceManager mediaSourceManager) + public EncodingJobFactory(ILogger logger, ILibraryManager libraryManager, IMediaSourceManager mediaSourceManager, IConfigurationManager config) { _logger = logger; _libraryManager = libraryManager; _mediaSourceManager = mediaSourceManager; + _config = config; } public async Task<EncodingJob> CreateJob(EncodingJobOptions options, bool isVideoRequest, IProgress<double> progress, CancellationToken cancellationToken) @@ -95,6 +96,10 @@ namespace MediaBrowser.MediaEncoding.Encoder TryStreamCopy(state, request); + state.Quality = options.Context == EncodingContext.Static ? + EncodingQuality.MaxQuality : + GetQualitySetting(); + return state; } @@ -194,6 +199,30 @@ namespace MediaBrowser.MediaEncoding.Encoder state.MediaSource = mediaSource; } + protected EncodingQuality GetQualitySetting() + { + var quality = GetEncodingOptions().EncodingQuality; + + if (quality == EncodingQuality.Auto) + { + var cpuCount = Environment.ProcessorCount; + + if (cpuCount >= 4) + { + //return EncodingQuality.HighQuality; + } + + return EncodingQuality.HighSpeed; + } + + return quality; + } + + protected EncodingOptions GetEncodingOptions() + { + return _config.GetConfiguration<EncodingOptions>("encoding"); + } + /// <summary> /// Infers the video codec. /// </summary> diff --git a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs index 4d5b669e2..c059a8b54 100644 --- a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs +++ b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs @@ -199,7 +199,7 @@ namespace MediaBrowser.MediaEncoding.Encoder await _ffProbeResourcePool.WaitAsync(cancellationToken).ConfigureAwait(false); - using (var processWrapper = new ProcessWrapper(process, this)) + using (var processWrapper = new ProcessWrapper(process, this, _logger)) { try { @@ -308,7 +308,7 @@ namespace MediaBrowser.MediaEncoding.Encoder _logger.Debug("{0} {1}", process.StartInfo.FileName, process.StartInfo.Arguments); - using (var processWrapper = new ProcessWrapper(process, this)) + using (var processWrapper = new ProcessWrapper(process, this, _logger)) { StartProcess(processWrapper); @@ -492,7 +492,7 @@ namespace MediaBrowser.MediaEncoding.Encoder await resourcePool.WaitAsync(cancellationToken).ConfigureAwait(false); - using (var processWrapper = new ProcessWrapper(process, this)) + using (var processWrapper = new ProcessWrapper(process, this, _logger)) { bool ranToCompletion; @@ -607,7 +607,7 @@ namespace MediaBrowser.MediaEncoding.Encoder bool ranToCompletion = false; - using (var processWrapper = new ProcessWrapper(process, this)) + using (var processWrapper = new ProcessWrapper(process, this, _logger)) { try { @@ -792,11 +792,13 @@ namespace MediaBrowser.MediaEncoding.Encoder public bool HasExited; public int? ExitCode; private readonly MediaEncoder _mediaEncoder; + private readonly ILogger _logger; - public ProcessWrapper(Process process, MediaEncoder mediaEncoder) + public ProcessWrapper(Process process, MediaEncoder mediaEncoder, ILogger logger) { Process = process; this._mediaEncoder = mediaEncoder; + _logger = logger; Process.Exited += Process_Exited; } @@ -806,7 +808,14 @@ namespace MediaBrowser.MediaEncoding.Encoder HasExited = true; - ExitCode = process.ExitCode; + try + { + ExitCode = process.ExitCode; + } + catch (Exception ex) + { + _logger.ErrorException("Error determing process exit code", ex); + } lock (_mediaEncoder._runningProcesses) { diff --git a/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs b/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs index 4c34b5a95..33b703611 100644 --- a/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs +++ b/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs @@ -56,10 +56,33 @@ namespace MediaBrowser.MediaEncoding.Probing { SetAudioRuntimeTicks(data, info); + var tags = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); + + // tags are normally located under data.format, but we've seen some cases with ogg where they're part of the audio stream + // so let's create a combined list of both + + if (data.streams != null) + { + var audioStream = data.streams.FirstOrDefault(i => string.Equals(i.codec_type, "audio", StringComparison.OrdinalIgnoreCase)); + + if (audioStream != null && audioStream.tags != null) + { + foreach (var pair in audioStream.tags) + { + tags[pair.Key] = pair.Value; + } + } + } + if (data.format != null && data.format.tags != null) { - SetAudioInfoFromTags(info, data.format.tags); + foreach (var pair in data.format.tags) + { + tags[pair.Key] = pair.Value; + } } + + SetAudioInfoFromTags(info, tags); } else { @@ -129,7 +152,7 @@ namespace MediaBrowser.MediaEncoding.Probing } else if (string.Equals(streamInfo.codec_type, "video", StringComparison.OrdinalIgnoreCase)) { - stream.Type = isAudio + stream.Type = isAudio || string.Equals(stream.Codec, "mjpeg", StringComparison.OrdinalIgnoreCase) ? MediaStreamType.EmbeddedImage : MediaStreamType.Video; @@ -146,44 +169,8 @@ namespace MediaBrowser.MediaEncoding.Probing // string.Equals(stream.AspectRatio, "2.35:1", StringComparison.OrdinalIgnoreCase) || // string.Equals(stream.AspectRatio, "2.40:1", StringComparison.OrdinalIgnoreCase); - if (string.Equals(streamInfo.sample_aspect_ratio, "1:1", StringComparison.OrdinalIgnoreCase)) - { - stream.IsAnamorphic = false; - } - else if (!((string.IsNullOrWhiteSpace(streamInfo.sample_aspect_ratio) || string.Equals(streamInfo.sample_aspect_ratio, "0:1", StringComparison.OrdinalIgnoreCase)))) - { - stream.IsAnamorphic = true; - } - else if (string.IsNullOrWhiteSpace(streamInfo.display_aspect_ratio) || string.Equals(streamInfo.display_aspect_ratio, "0:1", StringComparison.OrdinalIgnoreCase)) - { - stream.IsAnamorphic = false; - } - else - { - var ratioParts = streamInfo.display_aspect_ratio.Split(':'); - if (ratioParts.Length != 2) - { - stream.IsAnamorphic = false; - } - else - { - int ratio0; - int ratio1; - if (!Int32.TryParse(ratioParts[0], NumberStyles.Any, CultureInfo.InvariantCulture, out ratio0)) - { - stream.IsAnamorphic = false; - } - else if (!Int32.TryParse(ratioParts[1], NumberStyles.Any, CultureInfo.InvariantCulture, out ratio1)) - { - stream.IsAnamorphic = false; - } - else - { - stream.IsAnamorphic = ((streamInfo.width * ratio1) != (stream.Height * ratio0)); - } - } - } - + // http://stackoverflow.com/questions/17353387/how-to-detect-anamorphic-video-with-ffprobe + stream.IsAnamorphic = string.Equals(streamInfo.sample_aspect_ratio, "0:1", StringComparison.OrdinalIgnoreCase); } else { @@ -519,6 +506,7 @@ namespace MediaBrowser.MediaEncoding.Probing FetchStudios(audio, tags, "organization"); FetchStudios(audio, tags, "ensemble"); FetchStudios(audio, tags, "publisher"); + FetchStudios(audio, tags, "label"); // These support mulitple values, but for now we only store the first. audio.SetProviderId(MetadataProviders.MusicBrainzAlbumArtist, GetMultipleMusicBrainzId(FFProbeHelpers.GetDictionaryValue(tags, "MusicBrainz Album Artist Id"))); diff --git a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj index f70fe628e..a1b7ce396 100644 --- a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj +++ b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj @@ -89,6 +89,9 @@ <Compile Include="..\MediaBrowser.Model\ApiClient\ConnectionState.cs"> <Link>ApiClient\ConnectionState.cs</Link> </Compile> + <Compile Include="..\MediaBrowser.Model\ApiClient\ConnectSignupResponse.cs"> + <Link>ApiClient\ConnectSignupResponse.cs</Link> + </Compile> <Compile Include="..\MediaBrowser.Model\ApiClient\GeneralCommandEventArgs.cs"> <Link>ApiClient\GeneralCommandEventArgs.cs</Link> </Compile> @@ -179,6 +182,9 @@ <Compile Include="..\MediaBrowser.Model\Configuration\AccessSchedule.cs"> <Link>Configuration\AccessSchedule.cs</Link> </Compile> + <Compile Include="..\MediaBrowser.Model\Configuration\AutoOnOff.cs"> + <Link>Configuration\AutoOnOff.cs</Link> + </Compile> <Compile Include="..\MediaBrowser.Model\Configuration\BaseApplicationConfiguration.cs"> <Link>Configuration\BaseApplicationConfiguration.cs</Link> </Compile> @@ -743,24 +749,15 @@ <Compile Include="..\MediaBrowser.Model\LiveTv\ProgramAudio.cs"> <Link>LiveTv\ProgramAudio.cs</Link> </Compile> - <Compile Include="..\MediaBrowser.Model\LiveTv\ProgramInfoDto.cs"> - <Link>LiveTv\ProgramInfoDto.cs</Link> - </Compile> <Compile Include="..\MediaBrowser.Model\LiveTv\ProgramQuery.cs"> <Link>LiveTv\ProgramQuery.cs</Link> </Compile> <Compile Include="..\MediaBrowser.Model\LiveTv\RecommendedProgramQuery.cs"> <Link>LiveTv\RecommendedProgramQuery.cs</Link> </Compile> - <Compile Include="..\MediaBrowser.Model\LiveTv\RecordingGroupDto.cs"> - <Link>LiveTv\RecordingGroupDto.cs</Link> - </Compile> <Compile Include="..\MediaBrowser.Model\LiveTv\RecordingGroupQuery.cs"> <Link>LiveTv\RecordingGroupQuery.cs</Link> </Compile> - <Compile Include="..\MediaBrowser.Model\LiveTv\RecordingInfoDto.cs"> - <Link>LiveTv\RecordingInfoDto.cs</Link> - </Compile> <Compile Include="..\MediaBrowser.Model\LiveTv\RecordingQuery.cs"> <Link>LiveTv\RecordingQuery.cs</Link> </Compile> @@ -1079,6 +1076,9 @@ <Compile Include="..\MediaBrowser.Model\Session\UserDataChangeInfo.cs"> <Link>Session\UserDataChangeInfo.cs</Link> </Compile> + <Compile Include="..\MediaBrowser.Model\Social\SocialShareInfo.cs"> + <Link>Social\SocialShareInfo.cs</Link> + </Compile> <Compile Include="..\MediaBrowser.Model\Sync\CompleteSyncJobInfo.cs"> <Link>Sync\CompleteSyncJobInfo.cs</Link> </Compile> diff --git a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj index bb8b09682..d4a373733 100644 --- a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj +++ b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj @@ -66,6 +66,9 @@ <Compile Include="..\MediaBrowser.Model\ApiClient\ConnectionState.cs"> <Link>ApiClient\ConnectionState.cs</Link> </Compile> + <Compile Include="..\MediaBrowser.Model\ApiClient\ConnectSignupResponse.cs"> + <Link>ApiClient\ConnectSignupResponse.cs</Link> + </Compile> <Compile Include="..\MediaBrowser.Model\ApiClient\GeneralCommandEventArgs.cs"> <Link>ApiClient\GeneralCommandEventArgs.cs</Link> </Compile> @@ -144,6 +147,9 @@ <Compile Include="..\MediaBrowser.Model\Configuration\AccessSchedule.cs"> <Link>Configuration\AccessSchedule.cs</Link> </Compile> + <Compile Include="..\MediaBrowser.Model\Configuration\AutoOnOff.cs"> + <Link>Configuration\AutoOnOff.cs</Link> + </Compile> <Compile Include="..\MediaBrowser.Model\Configuration\BaseApplicationConfiguration.cs"> <Link>Configuration\BaseApplicationConfiguration.cs</Link> </Compile> @@ -699,24 +705,15 @@ <Compile Include="..\MediaBrowser.Model\LiveTv\ProgramAudio.cs"> <Link>LiveTv\ProgramAudio.cs</Link> </Compile> - <Compile Include="..\MediaBrowser.Model\LiveTv\ProgramInfoDto.cs"> - <Link>LiveTv\ProgramInfoDto.cs</Link> - </Compile> <Compile Include="..\MediaBrowser.Model\LiveTv\ProgramQuery.cs"> <Link>LiveTv\ProgramQuery.cs</Link> </Compile> <Compile Include="..\MediaBrowser.Model\LiveTv\RecommendedProgramQuery.cs"> <Link>LiveTv\RecommendedProgramQuery.cs</Link> </Compile> - <Compile Include="..\MediaBrowser.Model\LiveTv\RecordingGroupDto.cs"> - <Link>LiveTv\RecordingGroupDto.cs</Link> - </Compile> <Compile Include="..\MediaBrowser.Model\LiveTv\RecordingGroupQuery.cs"> <Link>LiveTv\RecordingGroupQuery.cs</Link> </Compile> - <Compile Include="..\MediaBrowser.Model\LiveTv\RecordingInfoDto.cs"> - <Link>LiveTv\RecordingInfoDto.cs</Link> - </Compile> <Compile Include="..\MediaBrowser.Model\LiveTv\RecordingQuery.cs"> <Link>LiveTv\RecordingQuery.cs</Link> </Compile> @@ -1035,6 +1032,9 @@ <Compile Include="..\MediaBrowser.Model\Session\UserDataChangeInfo.cs"> <Link>Session\UserDataChangeInfo.cs</Link> </Compile> + <Compile Include="..\mediabrowser.model\social\SocialShareInfo.cs"> + <Link>Social\SocialShareInfo.cs</Link> + </Compile> <Compile Include="..\MediaBrowser.Model\Sync\CompleteSyncJobInfo.cs"> <Link>Sync\CompleteSyncJobInfo.cs</Link> </Compile> diff --git a/MediaBrowser.Model/ApiClient/ConnectSignupResponse.cs b/MediaBrowser.Model/ApiClient/ConnectSignupResponse.cs new file mode 100644 index 000000000..a34165b23 --- /dev/null +++ b/MediaBrowser.Model/ApiClient/ConnectSignupResponse.cs @@ -0,0 +1,10 @@ +namespace MediaBrowser.Model.ApiClient +{ + public enum ConnectSignupResponse + { + Failure, + Success, + EmailInUse, + UsernameInUser + } +} diff --git a/MediaBrowser.Model/ApiClient/IApiClient.cs b/MediaBrowser.Model/ApiClient/IApiClient.cs index 026e65ec4..e52e7535b 100644 --- a/MediaBrowser.Model/ApiClient/IApiClient.cs +++ b/MediaBrowser.Model/ApiClient/IApiClient.cs @@ -930,22 +930,6 @@ namespace MediaBrowser.Model.ApiClient string GetImageUrl(ChannelInfoDto item, ImageOptions options); /// <summary> - /// Gets the image URL. - /// </summary> - /// <param name="item">The item.</param> - /// <param name="options">The options.</param> - /// <returns>System.String.</returns> - string GetImageUrl(RecordingInfoDto item, ImageOptions options); - - /// <summary> - /// Gets the image URL. - /// </summary> - /// <param name="item">The item.</param> - /// <param name="options">The options.</param> - /// <returns>System.String.</returns> - string GetImageUrl(ProgramInfoDto item, ImageOptions options); - - /// <summary> /// Gets the subtitle URL. /// </summary> /// <param name="options">The options.</param> @@ -1077,7 +1061,7 @@ namespace MediaBrowser.Model.ApiClient /// <param name="query">The query.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task{QueryResult{RecordingInfoDto}}.</returns> - Task<QueryResult<RecordingInfoDto>> GetLiveTvRecordingsAsync(RecordingQuery query, CancellationToken cancellationToken = default(CancellationToken)); + Task<QueryResult<BaseItemDto>> GetLiveTvRecordingsAsync(RecordingQuery query, CancellationToken cancellationToken = default(CancellationToken)); /// <summary> /// Gets the live tv recording asynchronous. @@ -1086,7 +1070,7 @@ namespace MediaBrowser.Model.ApiClient /// <param name="userId">The user identifier.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task{RecordingInfoDto}.</returns> - Task<RecordingInfoDto> GetLiveTvRecordingAsync(string id, string userId, CancellationToken cancellationToken = default(CancellationToken)); + Task<BaseItemDto> GetLiveTvRecordingAsync(string id, string userId, CancellationToken cancellationToken = default(CancellationToken)); /// <summary> /// Gets the live tv recording groups asynchronous. @@ -1094,7 +1078,7 @@ namespace MediaBrowser.Model.ApiClient /// <param name="query">The query.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task{QueryResult{RecordingGroupDto}}.</returns> - Task<QueryResult<RecordingGroupDto>> GetLiveTvRecordingGroupsAsync(RecordingGroupQuery query, CancellationToken cancellationToken = default(CancellationToken)); + Task<QueryResult<BaseItemDto>> GetLiveTvRecordingGroupsAsync(RecordingGroupQuery query, CancellationToken cancellationToken = default(CancellationToken)); /// <summary> /// Gets the live tv recording group asynchronous. @@ -1103,7 +1087,7 @@ namespace MediaBrowser.Model.ApiClient /// <param name="userId">The user identifier.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task{RecordingGroupDto}.</returns> - Task<RecordingGroupDto> GetLiveTvRecordingGroupAsync(string id, string userId, CancellationToken cancellationToken = default(CancellationToken)); + Task<BaseItemDto> GetLiveTvRecordingGroupAsync(string id, string userId, CancellationToken cancellationToken = default(CancellationToken)); /// <summary> /// Gets the live tv timers asynchronous. @@ -1119,7 +1103,7 @@ namespace MediaBrowser.Model.ApiClient /// <param name="query">The query.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task{QueryResult{ProgramInfoDto}}.</returns> - Task<QueryResult<ProgramInfoDto>> GetLiveTvProgramsAsync(ProgramQuery query, CancellationToken cancellationToken = default(CancellationToken)); + Task<QueryResult<BaseItemDto>> GetLiveTvProgramsAsync(ProgramQuery query, CancellationToken cancellationToken = default(CancellationToken)); /// <summary> /// Gets the live tv program asynchronous. @@ -1128,7 +1112,7 @@ namespace MediaBrowser.Model.ApiClient /// <param name="userId">The user identifier.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task{ProgramInfoDto}.</returns> - Task<ProgramInfoDto> GetLiveTvProgramAsync(string id, string userId, CancellationToken cancellationToken = default(CancellationToken)); + Task<BaseItemDto> GetLiveTvProgramAsync(string id, string userId, CancellationToken cancellationToken = default(CancellationToken)); /// <summary> /// Gets the recommended live tv programs asynchronous. @@ -1136,7 +1120,7 @@ namespace MediaBrowser.Model.ApiClient /// <param name="query">The query.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task{QueryResult{ProgramInfoDto}}.</returns> - Task<QueryResult<ProgramInfoDto>> GetRecommendedLiveTvProgramsAsync(RecommendedProgramQuery query, CancellationToken cancellationToken = default(CancellationToken)); + Task<QueryResult<BaseItemDto>> GetRecommendedLiveTvProgramsAsync(RecommendedProgramQuery query, CancellationToken cancellationToken = default(CancellationToken)); /// <summary> /// Creates the live tv timer asynchronous. diff --git a/MediaBrowser.Model/ApiClient/IConnectionManager.cs b/MediaBrowser.Model/ApiClient/IConnectionManager.cs index f8837f15d..083f230bc 100644 --- a/MediaBrowser.Model/ApiClient/IConnectionManager.cs +++ b/MediaBrowser.Model/ApiClient/IConnectionManager.cs @@ -178,5 +178,15 @@ namespace MediaBrowser.Model.ApiClient /// </summary> /// <returns>Task<List<UserDto>>.</returns> Task<List<UserDto>> GetOfflineUsers(); + + /// <summary> + /// Signups for connect. + /// </summary> + /// <param name="email">The email.</param> + /// <param name="username">The username.</param> + /// <param name="password">The password.</param> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>Task.</returns> + Task<ConnectSignupResponse> SignupForConnect(string email, string username, string password, CancellationToken cancellationToken = default(CancellationToken)); } } diff --git a/MediaBrowser.Model/Configuration/AutoOnOff.cs b/MediaBrowser.Model/Configuration/AutoOnOff.cs new file mode 100644 index 000000000..e911a0ff1 --- /dev/null +++ b/MediaBrowser.Model/Configuration/AutoOnOff.cs @@ -0,0 +1,10 @@ + +namespace MediaBrowser.Model.Configuration +{ + public enum AutoOnOff + { + Auto, + Enabled, + Disabled + } +} diff --git a/MediaBrowser.Model/Configuration/EncodingOptions.cs b/MediaBrowser.Model/Configuration/EncodingOptions.cs index 7f1607217..ae714a84e 100644 --- a/MediaBrowser.Model/Configuration/EncodingOptions.cs +++ b/MediaBrowser.Model/Configuration/EncodingOptions.cs @@ -9,7 +9,7 @@ namespace MediaBrowser.Model.Configuration public string H264Encoder { get; set; } public bool EnableDebugLogging { get; set; } public bool EnableThrottling { get; set; } - public int ThrottleThresholdSeconds { get; set; } + public int ThrottleThresholdInSeconds { get; set; } public EncodingOptions() { @@ -17,7 +17,7 @@ namespace MediaBrowser.Model.Configuration DownMixAudioBoost = 2; EncodingQuality = EncodingQuality.Auto; EnableThrottling = true; - ThrottleThresholdSeconds = 110; + ThrottleThresholdInSeconds = 120; } } } diff --git a/MediaBrowser.Model/Configuration/ServerConfiguration.cs b/MediaBrowser.Model/Configuration/ServerConfiguration.cs index 2833e7167..19403a55e 100644 --- a/MediaBrowser.Model/Configuration/ServerConfiguration.cs +++ b/MediaBrowser.Model/Configuration/ServerConfiguration.cs @@ -25,7 +25,7 @@ namespace MediaBrowser.Model.Configuration /// </summary> /// <value>The public HTTPS port.</value> public int PublicHttpsPort { get; set; } - + /// <summary> /// Gets or sets the HTTP server port number. /// </summary> @@ -49,7 +49,7 @@ namespace MediaBrowser.Model.Configuration /// </summary> /// <value><c>true</c> if [enable user specific user views]; otherwise, <c>false</c>.</value> public bool EnableUserSpecificUserViews { get; set; } - + /// <summary> /// Gets or sets the value pointing to the file system where the ssl certiifcate is located.. /// </summary> @@ -103,7 +103,7 @@ namespace MediaBrowser.Model.Configuration /// </summary> /// <value><c>true</c> if [enable library metadata sub folder]; otherwise, <c>false</c>.</value> public bool EnableLibraryMetadataSubFolder { get; set; } - + /// <summary> /// Gets or sets the preferred metadata language. /// </summary> @@ -187,7 +187,6 @@ namespace MediaBrowser.Model.Configuration public bool EnableAutomaticRestart { get; set; } - public bool EnableRealtimeMonitor { get; set; } public PathSubstitution[] PathSubstitutions { get; set; } public string ServerName { get; set; } @@ -208,6 +207,12 @@ namespace MediaBrowser.Model.Configuration public bool EnableVideoArchiveFiles { get; set; } public int RemoteClientBitrateLimit { get; set; } + public bool DenyIFrameEmbedding { get; set; } + + public AutoOnOff EnableLibraryMonitor { get; set; } + + public int SharingExpirationDays { get; set; } + /// <summary> /// Initializes a new instance of the <see cref="ServerConfiguration" /> class. /// </summary> @@ -224,15 +229,18 @@ namespace MediaBrowser.Model.Configuration EnableDashboardResourceMinification = true; EnableAutomaticRestart = true; + DenyIFrameEmbedding = true; EnableUPnP = true; + SharingExpirationDays = 30; MinResumePct = 5; MaxResumePct = 90; // 5 minutes MinResumeDurationSeconds = 300; + EnableLibraryMonitor = AutoOnOff.Auto; RealtimeLibraryMonitorDelay = 40; EnableInternetProviders = true; @@ -250,8 +258,6 @@ namespace MediaBrowser.Model.Configuration SeasonZeroDisplayName = "Specials"; - EnableRealtimeMonitor = true; - UICulture = "en-us"; PeopleMetadataOptions = new PeopleMetadataOptions(); @@ -277,7 +283,7 @@ namespace MediaBrowser.Model.Configuration { new ImageOption { - Limit = 3, + Limit = 2, MinWidth = 1280, Type = ImageType.Backdrop }, @@ -304,7 +310,7 @@ namespace MediaBrowser.Model.Configuration new ImageOption { - Limit = 1, + Limit = 0, Type = ImageType.Banner }, @@ -374,7 +380,7 @@ namespace MediaBrowser.Model.Configuration { new ImageOption { - Limit = 1, + Limit = 0, MinWidth = 1280, Type = ImageType.Backdrop }, @@ -414,11 +420,22 @@ namespace MediaBrowser.Model.Configuration { Limit = 0, Type = ImageType.Art + }, + + // Don't download this by default + // Generally not used + new ImageOption + { + Limit = 0, + Type = ImageType.Logo } } }, - new MetadataOptions(0, 1280) {ItemType = "Season"} + new MetadataOptions(0, 1280) + { + ItemType = "Season" + } }; } } diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs index 8400b204f..340af3ac1 100644 --- a/MediaBrowser.Model/Dlna/StreamBuilder.cs +++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs @@ -148,6 +148,7 @@ namespace MediaBrowser.Model.Dlna { if (!conditionProcessor.IsAudioConditionSatisfied(c, audioChannels, audioBitrate)) { + LogConditionFailure(options.Profile, "AudioCodecProfile", c, item); all = false; break; } @@ -274,14 +275,21 @@ namespace MediaBrowser.Model.Dlna { playMethods.Add(PlayMethod.DirectStream); } - + // The profile describes what the device supports // If device requirements are satisfied then allow both direct stream and direct play - if (item.SupportsDirectPlay && IsAudioEligibleForDirectPlay(item, GetBitrateForDirectPlayCheck(item, options))) + if (item.SupportsDirectPlay && + IsAudioEligibleForDirectPlay(item, GetBitrateForDirectPlayCheck(item, options))) { playMethods.Add(PlayMethod.DirectPlay); } } + else + { + _logger.Debug("Profile: {0}, No direct play profiles found for Path: {1}", + options.Profile.Name ?? "Unknown Profile", + item.Path ?? "Unknown path"); + } return playMethods; } @@ -485,7 +493,7 @@ namespace MediaBrowser.Model.Dlna if (targetAudioChannels.HasValue) { - if (targetAudioChannels.Value >= 5 && (maxTotalBitrate ?? 0) >= 1500000) + if (targetAudioChannels.Value >= 5 && (maxTotalBitrate ?? 0) >= 2000000) { defaultBitrate = 320000; } @@ -745,10 +753,9 @@ namespace MediaBrowser.Model.Dlna } } + // Look for supported embedded subs that we can just mux into the output foreach (SubtitleProfile profile in subtitleProfiles) { - bool requiresConversion = !StringHelper.EqualsIgnoreCase(subtitleStream.Codec, profile.Format); - if (!profile.SupportsLanguage(subtitleStream.Language)) { continue; @@ -756,11 +763,6 @@ namespace MediaBrowser.Model.Dlna if (profile.Method == SubtitleDeliveryMethod.Embed && subtitleStream.IsTextSubtitleStream == MediaStream.IsTextFormat(profile.Format)) { - if (!requiresConversion) - { - return profile; - } - return profile; } } @@ -774,8 +776,13 @@ namespace MediaBrowser.Model.Dlna private bool IsAudioEligibleForDirectPlay(MediaSourceInfo item, int? maxBitrate) { - // Honor the max bitrate setting - return !maxBitrate.HasValue || (item.Bitrate.HasValue && item.Bitrate.Value <= maxBitrate.Value); + if (!maxBitrate.HasValue || (item.Bitrate.HasValue && item.Bitrate.Value <= maxBitrate.Value)) + { + return true; + } + + _logger.Debug("Audio Bitrate exceeds DirectPlay limit"); + return false; } private void ValidateInput(VideoOptions options) diff --git a/MediaBrowser.Model/Dlna/StreamInfo.cs b/MediaBrowser.Model/Dlna/StreamInfo.cs index 645c1c7d0..92eb0372c 100644 --- a/MediaBrowser.Model/Dlna/StreamInfo.cs +++ b/MediaBrowser.Model/Dlna/StreamInfo.cs @@ -158,6 +158,11 @@ namespace MediaBrowser.Model.Dlna if (MediaType == DlnaProfileType.Audio) { + if (StringHelper.EqualsIgnoreCase(SubProtocol, "hls")) + { + return string.Format("{0}/audio/{1}/master.m3u8?{2}", baseUrl, ItemId, queryString); + } + return string.Format("{0}/audio/{1}/stream{2}?{3}", baseUrl, ItemId, extension, queryString); } diff --git a/MediaBrowser.Model/Dto/BaseItemDto.cs b/MediaBrowser.Model/Dto/BaseItemDto.cs index c772692a2..7c5d9e9a1 100644 --- a/MediaBrowser.Model/Dto/BaseItemDto.cs +++ b/MediaBrowser.Model/Dto/BaseItemDto.cs @@ -2,6 +2,7 @@ using MediaBrowser.Model.Entities; using MediaBrowser.Model.Extensions; using MediaBrowser.Model.Library; +using MediaBrowser.Model.LiveTv; using MediaBrowser.Model.Providers; using MediaBrowser.Model.Sync; using System; @@ -99,6 +100,11 @@ namespace MediaBrowser.Model.Dto /// </summary> /// <value>The synchronize status.</value> public SyncJobItemStatus? SyncStatus { get; set; } + /// <summary> + /// Gets or sets the synchronize percent. + /// </summary> + /// <value>The synchronize percent.</value> + public double? SyncPercent { get; set; } /// <summary> /// Gets or sets the DVD season number. @@ -442,7 +448,57 @@ namespace MediaBrowser.Model.Dto /// Gets or sets the status. /// </summary> /// <value>The status.</value> - public SeriesStatus? Status { get; set; } + public string Status { get; set; } + + [IgnoreDataMember] + public SeriesStatus? SeriesStatus + { + get + { + if (string.IsNullOrEmpty(Status)) + { + return null; + } + + return (SeriesStatus)Enum.Parse(typeof(SeriesStatus), Status, true); + } + set + { + if (value == null) + { + Status = null; + } + else + { + Status = value.Value.ToString(); + } + } + } + + [IgnoreDataMember] + public RecordingStatus? RecordingStatus + { + get + { + if (string.IsNullOrEmpty(Status)) + { + return null; + } + + return (RecordingStatus)Enum.Parse(typeof(RecordingStatus), Status, true); + } + set + { + if (value == null) + { + Status = null; + } + else + { + Status = value.Value.ToString(); + } + } + } /// <summary> /// Gets or sets the air time. @@ -798,6 +854,17 @@ namespace MediaBrowser.Model.Dto public int? IsoSpeedRating { get; set; } /// <summary> + /// Used by RecordingGroup + /// </summary> + public int? RecordingCount { get; set; } + + /// <summary> + /// Gets or sets the series timer identifier. + /// </summary> + /// <value>The series timer identifier.</value> + public string SeriesTimerId { get; set; } + + /// <summary> /// Gets a value indicating whether this instance can resume. /// </summary> /// <value><c>true</c> if this instance can resume; otherwise, <c>false</c>.</value> @@ -1017,5 +1084,107 @@ namespace MediaBrowser.Model.Dto /// Occurs when [property changed]. /// </summary> public event PropertyChangedEventHandler PropertyChanged; + + /// <summary> + /// Gets or sets the program identifier. + /// </summary> + /// <value>The program identifier.</value> + public string ProgramId { get; set; } + + /// <summary> + /// Gets or sets the channel primary image tag. + /// </summary> + /// <value>The channel primary image tag.</value> + public string ChannelPrimaryImageTag { get; set; } + + /// <summary> + /// The start date of the recording, in UTC. + /// </summary> + public DateTime? StartDate { get; set; } + + /// <summary> + /// Gets or sets the original air date. + /// </summary> + /// <value>The original air date.</value> + public DateTime? OriginalAirDate { get; set; } + + /// <summary> + /// Gets or sets the completion percentage. + /// </summary> + /// <value>The completion percentage.</value> + public double? CompletionPercentage { get; set; } + + /// <summary> + /// Gets or sets a value indicating whether this instance is repeat. + /// </summary> + /// <value><c>true</c> if this instance is repeat; otherwise, <c>false</c>.</value> + public bool? IsRepeat { get; set; } + + /// <summary> + /// Gets or sets the episode title. + /// </summary> + /// <value>The episode title.</value> + public string EpisodeTitle { get; set; } + + /// <summary> + /// Gets or sets the type of the channel. + /// </summary> + /// <value>The type of the channel.</value> + public ChannelType? ChannelType { get; set; } + + /// <summary> + /// Gets or sets the audio. + /// </summary> + /// <value>The audio.</value> + public ProgramAudio? Audio { get; set; } + + /// <summary> + /// Gets or sets a value indicating whether this instance is movie. + /// </summary> + /// <value><c>true</c> if this instance is movie; otherwise, <c>false</c>.</value> + public bool? IsMovie { get; set; } + + /// <summary> + /// Gets or sets a value indicating whether this instance is sports. + /// </summary> + /// <value><c>true</c> if this instance is sports; otherwise, <c>false</c>.</value> + public bool? IsSports { get; set; } + + /// <summary> + /// Gets or sets a value indicating whether this instance is series. + /// </summary> + /// <value><c>true</c> if this instance is series; otherwise, <c>false</c>.</value> + public bool? IsSeries { get; set; } + + /// <summary> + /// Gets or sets a value indicating whether this instance is live. + /// </summary> + /// <value><c>true</c> if this instance is live; otherwise, <c>false</c>.</value> + public bool? IsLive { get; set; } + + /// <summary> + /// Gets or sets a value indicating whether this instance is news. + /// </summary> + /// <value><c>true</c> if this instance is news; otherwise, <c>false</c>.</value> + public bool? IsNews { get; set; } + + /// <summary> + /// Gets or sets a value indicating whether this instance is kids. + /// </summary> + /// <value><c>true</c> if this instance is kids; otherwise, <c>false</c>.</value> + public bool? IsKids { get; set; } + + /// <summary> + /// Gets or sets a value indicating whether this instance is premiere. + /// </summary> + /// <value><c>true</c> if this instance is premiere; otherwise, <c>false</c>.</value> + public bool? IsPremiere { get; set; } + + /// <summary> + /// Gets or sets the timer identifier. + /// </summary> + /// <value>The timer identifier.</value> + public string TimerId { get; set; } + } } diff --git a/MediaBrowser.Model/Entities/MediaStream.cs b/MediaBrowser.Model/Entities/MediaStream.cs index f842a9e3a..0aaa8035c 100644 --- a/MediaBrowser.Model/Entities/MediaStream.cs +++ b/MediaBrowser.Model/Entities/MediaStream.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using MediaBrowser.Model.Dlna; +using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Extensions; using System.Diagnostics; diff --git a/MediaBrowser.Model/LiveTv/BaseTimerInfoDto.cs b/MediaBrowser.Model/LiveTv/BaseTimerInfoDto.cs index 49e572418..296ead5c2 100644 --- a/MediaBrowser.Model/LiveTv/BaseTimerInfoDto.cs +++ b/MediaBrowser.Model/LiveTv/BaseTimerInfoDto.cs @@ -1,7 +1,7 @@ -using System; -using System.ComponentModel; -using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Dto; using MediaBrowser.Model.Extensions; +using System; +using System.ComponentModel; namespace MediaBrowser.Model.LiveTv { diff --git a/MediaBrowser.Model/LiveTv/ChannelInfoDto.cs b/MediaBrowser.Model/LiveTv/ChannelInfoDto.cs index 667ad4f14..fd901f29e 100644 --- a/MediaBrowser.Model/LiveTv/ChannelInfoDto.cs +++ b/MediaBrowser.Model/LiveTv/ChannelInfoDto.cs @@ -97,7 +97,7 @@ namespace MediaBrowser.Model.LiveTv /// Gets or sets the now playing program. /// </summary> /// <value>The now playing program.</value> - public ProgramInfoDto CurrentProgram { get; set; } + public BaseItemDto CurrentProgram { get; set; } /// <summary> /// Gets or sets the primary image aspect ratio, after image enhancements. diff --git a/MediaBrowser.Model/LiveTv/ProgramInfoDto.cs b/MediaBrowser.Model/LiveTv/ProgramInfoDto.cs deleted file mode 100644 index 06136459f..000000000 --- a/MediaBrowser.Model/LiveTv/ProgramInfoDto.cs +++ /dev/null @@ -1,250 +0,0 @@ -using MediaBrowser.Model.Dto; -using MediaBrowser.Model.Entities; -using MediaBrowser.Model.Extensions; -using MediaBrowser.Model.Library; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Diagnostics; -using System.Runtime.Serialization; - -namespace MediaBrowser.Model.LiveTv -{ - [DebuggerDisplay("Name = {Name}, StartTime = {StartDate}, EndTime = {EndDate}")] - public class ProgramInfoDto : IHasPropertyChangedEvent, IItemDto, IHasServerId - { - /// <summary> - /// Id of the program. - /// </summary> - public string Id { get; set; } - - /// <summary> - /// Gets or sets the primary image aspect ratio. - /// </summary> - /// <value>The primary image aspect ratio.</value> - public double? PrimaryImageAspectRatio { get; set; } - - /// <summary> - /// Gets or sets the server identifier. - /// </summary> - /// <value>The server identifier.</value> - public string ServerId { get; set; } - - /// <summary> - /// Gets or sets the original primary image aspect ratio. - /// </summary> - /// <value>The original primary image aspect ratio.</value> - public double? OriginalPrimaryImageAspectRatio { get; set; } - - /// <summary> - /// Gets or sets the type of the media. - /// </summary> - /// <value>The type of the media.</value> - public string MediaType { get; set; } - - /// <summary> - /// Gets or sets the timer identifier. - /// </summary> - /// <value>The timer identifier.</value> - public string TimerId { get; set; } - - /// <summary> - /// Gets or sets the series timer identifier. - /// </summary> - /// <value>The series timer identifier.</value> - public string SeriesTimerId { get; set; } - - /// <summary> - /// Gets or sets the external identifier. - /// </summary> - /// <value>The external identifier.</value> - public string ExternalId { get; set; } - - /// <summary> - /// Gets or sets the channel identifier. - /// </summary> - /// <value>The channel identifier.</value> - public string ChannelId { get; set; } - - /// <summary> - /// Gets or sets the channel primary image tag. - /// </summary> - /// <value>The channel primary image tag.</value> - public string ChannelPrimaryImageTag { get; set; } - - /// <summary> - /// Gets or sets the play access. - /// </summary> - /// <value>The play access.</value> - public PlayAccess PlayAccess { get; set; } - - /// <summary> - /// Gets or sets the name of the channel. - /// </summary> - /// <value>The name of the channel.</value> - public string ChannelName { get; set; } - - /// <summary> - /// Gets or sets the community rating. - /// </summary> - /// <value>The community rating.</value> - public float? CommunityRating { get; set; } - - /// <summary> - /// Gets or sets the official rating. - /// </summary> - /// <value>The official rating.</value> - public string OfficialRating { get; set; } - - /// <summary> - /// Gets or sets the production year. - /// </summary> - /// <value>The production year.</value> - public int? ProductionYear { get; set; } - - /// <summary> - /// Gets or sets the name of the service. - /// </summary> - /// <value>The name of the service.</value> - public string ServiceName { get; set; } - - /// <summary> - /// Name of the program - /// </summary> - public string Name { get; set; } - - /// <summary> - /// Overview of the recording. - /// </summary> - public string Overview { get; set; } - - /// <summary> - /// The start date of the program, in UTC. - /// </summary> - public DateTime StartDate { get; set; } - - /// <summary> - /// The end date of the program, in UTC. - /// </summary> - public DateTime EndDate { get; set; } - - /// <summary> - /// Genre of the program. - /// </summary> - public List<string> Genres { get; set; } - - /// <summary> - /// Gets or sets a value indicating whether this instance is hd. - /// </summary> - /// <value><c>true</c> if this instance is hd; otherwise, <c>false</c>.</value> - public bool? IsHD { get; set; } - - /// <summary> - /// Gets or sets the audio. - /// </summary> - /// <value>The audio.</value> - public ProgramAudio? Audio { get; set; } - - /// <summary> - /// Gets or sets the original air date. - /// </summary> - /// <value>The original air date.</value> - public DateTime? OriginalAirDate { get; set; } - - /// <summary> - /// Gets or sets a value indicating whether this instance is repeat. - /// </summary> - /// <value><c>true</c> if this instance is repeat; otherwise, <c>false</c>.</value> - public bool IsRepeat { get; set; } - - /// <summary> - /// Gets or sets the episode title. - /// </summary> - /// <value>The episode title.</value> - public string EpisodeTitle { get; set; } - - /// <summary> - /// Gets or sets the image tags. - /// </summary> - /// <value>The image tags.</value> - public Dictionary<ImageType, string> ImageTags { get; set; } - - /// <summary> - /// Gets or sets the user data. - /// </summary> - /// <value>The user data.</value> - public UserItemDataDto UserData { get; set; } - - /// <summary> - /// Gets or sets a value indicating whether this instance is movie. - /// </summary> - /// <value><c>true</c> if this instance is movie; otherwise, <c>false</c>.</value> - public bool IsMovie { get; set; } - - /// <summary> - /// Gets or sets a value indicating whether this instance is sports. - /// </summary> - /// <value><c>true</c> if this instance is sports; otherwise, <c>false</c>.</value> - public bool IsSports { get; set; } - - /// <summary> - /// Gets or sets a value indicating whether this instance is series. - /// </summary> - /// <value><c>true</c> if this instance is series; otherwise, <c>false</c>.</value> - public bool IsSeries { get; set; } - - /// <summary> - /// Gets or sets a value indicating whether this instance is live. - /// </summary> - /// <value><c>true</c> if this instance is live; otherwise, <c>false</c>.</value> - public bool IsLive { get; set; } - - /// <summary> - /// Gets or sets the type. - /// </summary> - /// <value>The type.</value> - public string Type { get; set; } - - /// <summary> - /// Gets or sets the run time ticks. - /// </summary> - /// <value>The run time ticks.</value> - public long? RunTimeTicks { get; set; } - - /// <summary> - /// Gets or sets a value indicating whether this instance is news. - /// </summary> - /// <value><c>true</c> if this instance is news; otherwise, <c>false</c>.</value> - public bool IsNews { get; set; } - - /// <summary> - /// Gets or sets a value indicating whether this instance is kids. - /// </summary> - /// <value><c>true</c> if this instance is kids; otherwise, <c>false</c>.</value> - public bool IsKids { get; set; } - - /// <summary> - /// Gets or sets a value indicating whether this instance is premiere. - /// </summary> - /// <value><c>true</c> if this instance is premiere; otherwise, <c>false</c>.</value> - public bool IsPremiere { get; set; } - - /// <summary> - /// Gets a value indicating whether this instance has primary image. - /// </summary> - /// <value><c>true</c> if this instance has primary image; otherwise, <c>false</c>.</value> - [IgnoreDataMember] - public bool HasPrimaryImage - { - get { return ImageTags != null && ImageTags.ContainsKey(ImageType.Primary); } - } - - public ProgramInfoDto() - { - Genres = new List<string>(); - ImageTags = new Dictionary<ImageType, string>(); - } - - public event PropertyChangedEventHandler PropertyChanged; - } -}
\ No newline at end of file diff --git a/MediaBrowser.Model/LiveTv/RecordingGroupDto.cs b/MediaBrowser.Model/LiveTv/RecordingGroupDto.cs deleted file mode 100644 index 8a0b488cc..000000000 --- a/MediaBrowser.Model/LiveTv/RecordingGroupDto.cs +++ /dev/null @@ -1,40 +0,0 @@ -using MediaBrowser.Model.Dto; -using MediaBrowser.Model.Extensions; -using System.ComponentModel; -using System.Diagnostics; - -namespace MediaBrowser.Model.LiveTv -{ - /// <summary> - /// Class RecordingGroupDto. - /// </summary> - [DebuggerDisplay("Name = {Name}, Count = {RecordingCount}")] - public class RecordingGroupDto : IHasPropertyChangedEvent, IHasServerId - { - /// <summary> - /// Gets or sets the server identifier. - /// </summary> - /// <value>The server identifier.</value> - public string ServerId { get; set; } - - /// <summary> - /// Gets or sets the name. - /// </summary> - /// <value>The name.</value> - public string Name { get; set; } - - /// <summary> - /// Gets or sets the identifier. - /// </summary> - /// <value>The identifier.</value> - public string Id { get; set; } - - /// <summary> - /// Gets or sets the recording count. - /// </summary> - /// <value>The recording count.</value> - public int RecordingCount { get; set; } - - public event PropertyChangedEventHandler PropertyChanged; - } -} diff --git a/MediaBrowser.Model/LiveTv/RecordingInfoDto.cs b/MediaBrowser.Model/LiveTv/RecordingInfoDto.cs deleted file mode 100644 index 0988b11a6..000000000 --- a/MediaBrowser.Model/LiveTv/RecordingInfoDto.cs +++ /dev/null @@ -1,313 +0,0 @@ -using MediaBrowser.Model.Dto; -using MediaBrowser.Model.Entities; -using MediaBrowser.Model.Extensions; -using MediaBrowser.Model.Library; -using MediaBrowser.Model.Sync; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Diagnostics; -using System.Runtime.Serialization; - -namespace MediaBrowser.Model.LiveTv -{ - [DebuggerDisplay("Name = {Name}, ChannelName = {ChannelName}")] - public class RecordingInfoDto : IHasPropertyChangedEvent, IItemDto, IHasServerId, IHasSyncInfo - { - /// <summary> - /// Id of the recording. - /// </summary> - public string Id { get; set; } - - /// <summary> - /// Gets or sets the primary image aspect ratio. - /// </summary> - /// <value>The primary image aspect ratio.</value> - public double? PrimaryImageAspectRatio { get; set; } - - /// <summary> - /// Gets or sets the server identifier. - /// </summary> - /// <value>The server identifier.</value> - public string ServerId { get; set; } - - /// <summary> - /// Gets or sets the original primary image aspect ratio. - /// </summary> - /// <value>The original primary image aspect ratio.</value> - public double? OriginalPrimaryImageAspectRatio { get; set; } - - /// <summary> - /// Gets or sets a value indicating whether [supports synchronize]. - /// </summary> - /// <value><c>null</c> if [supports synchronize] contains no value, <c>true</c> if [supports synchronize]; otherwise, <c>false</c>.</value> - public bool? SupportsSync { get; set; } - /// <summary> - /// Gets or sets a value indicating whether this instance has synchronize job. - /// </summary> - /// <value><c>null</c> if [has synchronize job] contains no value, <c>true</c> if [has synchronize job]; otherwise, <c>false</c>.</value> - public bool? HasSyncJob { get; set; } - /// <summary> - /// Gets or sets a value indicating whether this instance is synced. - /// </summary> - /// <value><c>null</c> if [is synced] contains no value, <c>true</c> if [is synced]; otherwise, <c>false</c>.</value> - public bool? IsSynced { get; set; } - /// <summary> - /// Gets or sets the synchronize status. - /// </summary> - /// <value>The synchronize status.</value> - public SyncJobItemStatus? SyncStatus { get; set; } - - /// <summary> - /// Gets or sets the series timer identifier. - /// </summary> - /// <value>The series timer identifier.</value> - public string SeriesTimerId { get; set; } - - /// <summary> - /// Gets or sets the external identifier. - /// </summary> - /// <value>The external identifier.</value> - public string ExternalId { get; set; } - - /// <summary> - /// Gets or sets the program identifier. - /// </summary> - /// <value>The program identifier.</value> - public string ProgramId { get; set; } - - /// <summary> - /// ChannelId of the recording. - /// </summary> - public string ChannelId { get; set; } - - /// <summary> - /// Gets or sets the play access. - /// </summary> - /// <value>The play access.</value> - public PlayAccess PlayAccess { get; set; } - - /// <summary> - /// Gets or sets the channel primary image tag. - /// </summary> - /// <value>The channel primary image tag.</value> - public string ChannelPrimaryImageTag { get; set; } - - /// <summary> - /// ChannelName of the recording. - /// </summary> - public string ChannelName { get; set; } - - /// <summary> - /// Gets or sets the name of the service. - /// </summary> - /// <value>The name of the service.</value> - public string ServiceName { get; set; } - - /// <summary> - /// Name of the recording. - /// </summary> - public string Name { get; set; } - - /// <summary> - /// Gets or sets the media streams. - /// </summary> - /// <value>The media streams.</value> - public List<MediaStream> MediaStreams { get; set; } - - /// <summary> - /// Gets or sets the path. - /// </summary> - /// <value>The path.</value> - public string Path { get; set; } - - /// <summary> - /// Gets or sets a value indicating whether this instance can delete. - /// </summary> - /// <value><c>null</c> if [can delete] contains no value, <c>true</c> if [can delete]; otherwise, <c>false</c>.</value> - public bool? CanDelete { get; set; } - - /// <summary> - /// Overview of the recording. - /// </summary> - public string Overview { get; set; } - - /// <summary> - /// The start date of the recording, in UTC. - /// </summary> - public DateTime StartDate { get; set; } - - /// <summary> - /// The end date of the recording, in UTC. - /// </summary> - public DateTime EndDate { get; set; } - - /// <summary> - /// Gets or sets the original air date. - /// </summary> - /// <value>The original air date.</value> - public DateTime? OriginalAirDate { get; set; } - - /// <summary> - /// Gets or sets the status. - /// </summary> - /// <value>The status.</value> - public RecordingStatus Status { get; set; } - - /// <summary> - /// Gets or sets the name of the status. - /// </summary> - /// <value>The name of the status.</value> - public string StatusName { get; set; } - - /// <summary> - /// Gets or sets the completion percentage. - /// </summary> - /// <value>The completion percentage.</value> - public double? CompletionPercentage { get; set; } - - /// <summary> - /// Genre of the program. - /// </summary> - public List<string> Genres { get; set; } - - /// <summary> - /// Gets or sets a value indicating whether this instance is repeat. - /// </summary> - /// <value><c>true</c> if this instance is repeat; otherwise, <c>false</c>.</value> - public bool IsRepeat { get; set; } - - /// <summary> - /// Gets or sets the episode title. - /// </summary> - /// <value>The episode title.</value> - public string EpisodeTitle { get; set; } - - /// <summary> - /// Gets or sets the run time ticks. - /// </summary> - /// <value>The run time ticks.</value> - public long? RunTimeTicks { get; set; } - - /// <summary> - /// Gets or sets the type of the media. - /// </summary> - /// <value>The type of the media.</value> - public string MediaType { get; set; } - - /// <summary> - /// Gets or sets the type of the channel. - /// </summary> - /// <value>The type of the channel.</value> - public ChannelType ChannelType { get; set; } - - /// <summary> - /// Gets or sets the official rating. - /// </summary> - /// <value>The official rating.</value> - public string OfficialRating { get; set; } - - /// <summary> - /// Gets or sets the community rating. - /// </summary> - /// <value>The community rating.</value> - public float? CommunityRating { get; set; } - - /// <summary> - /// Gets or sets a value indicating whether this instance is hd. - /// </summary> - /// <value><c>true</c> if this instance is hd; otherwise, <c>false</c>.</value> - public bool? IsHD { get; set; } - - /// <summary> - /// Gets or sets the audio. - /// </summary> - /// <value>The audio.</value> - public ProgramAudio? Audio { get; set; } - - /// <summary> - /// Gets or sets a value indicating whether this instance is movie. - /// </summary> - /// <value><c>true</c> if this instance is movie; otherwise, <c>false</c>.</value> - public bool IsMovie { get; set; } - - /// <summary> - /// Gets or sets a value indicating whether this instance is sports. - /// </summary> - /// <value><c>true</c> if this instance is sports; otherwise, <c>false</c>.</value> - public bool IsSports { get; set; } - - /// <summary> - /// Gets or sets a value indicating whether this instance is series. - /// </summary> - /// <value><c>true</c> if this instance is series; otherwise, <c>false</c>.</value> - public bool IsSeries { get; set; } - - /// <summary> - /// Gets or sets a value indicating whether this instance is live. - /// </summary> - /// <value><c>true</c> if this instance is live; otherwise, <c>false</c>.</value> - public bool IsLive { get; set; } - - /// <summary> - /// Gets or sets a value indicating whether this instance is news. - /// </summary> - /// <value><c>true</c> if this instance is news; otherwise, <c>false</c>.</value> - public bool IsNews { get; set; } - - /// <summary> - /// Gets or sets a value indicating whether this instance is kids. - /// </summary> - /// <value><c>true</c> if this instance is kids; otherwise, <c>false</c>.</value> - public bool IsKids { get; set; } - - /// <summary> - /// Gets or sets a value indicating whether this instance is premiere. - /// </summary> - /// <value><c>true</c> if this instance is premiere; otherwise, <c>false</c>.</value> - public bool IsPremiere { get; set; } - - /// <summary> - /// Gets or sets the image tags. - /// </summary> - /// <value>The image tags.</value> - public Dictionary<ImageType, string> ImageTags { get; set; } - - /// <summary> - /// Gets or sets the user data. - /// </summary> - /// <value>The user data.</value> - public UserItemDataDto UserData { get; set; } - - /// <summary> - /// Gets a value indicating whether this instance has primary image. - /// </summary> - /// <value><c>true</c> if this instance has primary image; otherwise, <c>false</c>.</value> - [IgnoreDataMember] - public bool HasPrimaryImage - { - get { return ImageTags != null && ImageTags.ContainsKey(ImageType.Primary); } - } - - /// <summary> - /// Gets or sets the type. - /// </summary> - /// <value>The type.</value> - public string Type { get; set; } - - /// <summary> - /// Gets or sets the media sources. - /// </summary> - /// <value>The media sources.</value> - public List<MediaSourceInfo> MediaSources { get; set; } - - public RecordingInfoDto() - { - Genres = new List<string>(); - ImageTags = new Dictionary<ImageType, string>(); - MediaSources = new List<MediaSourceInfo>(); - } - - public event PropertyChangedEventHandler PropertyChanged; - } -}
\ No newline at end of file diff --git a/MediaBrowser.Model/LiveTv/TimerInfoDto.cs b/MediaBrowser.Model/LiveTv/TimerInfoDto.cs index 16cac945f..c33535a3d 100644 --- a/MediaBrowser.Model/LiveTv/TimerInfoDto.cs +++ b/MediaBrowser.Model/LiveTv/TimerInfoDto.cs @@ -1,4 +1,6 @@ -namespace MediaBrowser.Model.LiveTv +using MediaBrowser.Model.Dto; + +namespace MediaBrowser.Model.LiveTv { public class TimerInfoDto : BaseTimerInfoDto { @@ -30,7 +32,7 @@ /// Gets or sets the program information. /// </summary> /// <value>The program information.</value> - public ProgramInfoDto ProgramInfo { get; set; } + public BaseItemDto ProgramInfo { get; set; } } } diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj index 340bd9462..b36fa2362 100644 --- a/MediaBrowser.Model/MediaBrowser.Model.csproj +++ b/MediaBrowser.Model/MediaBrowser.Model.csproj @@ -64,6 +64,7 @@ <Compile Include="ApiClient\ConnectionMode.cs" /> <Compile Include="ApiClient\ConnectionResult.cs" /> <Compile Include="ApiClient\ConnectionState.cs" /> + <Compile Include="ApiClient\ConnectSignupResponse.cs" /> <Compile Include="ApiClient\HttpResponseEventArgs.cs" /> <Compile Include="ApiClient\IApiClient.cs" /> <Compile Include="ApiClient\ApiClientExtensions.cs" /> @@ -95,6 +96,7 @@ <Compile Include="Chapters\RemoteChapterResult.cs" /> <Compile Include="Collections\CollectionCreationResult.cs" /> <Compile Include="Configuration\AccessSchedule.cs" /> + <Compile Include="Configuration\AutoOnOff.cs" /> <Compile Include="Configuration\ChannelOptions.cs" /> <Compile Include="Configuration\ChapterOptions.cs" /> <Compile Include="Configuration\CinemaModeConfiguration.cs" /> @@ -259,10 +261,8 @@ <Compile Include="LiveTv\LiveTvTunerInfoDto.cs" /> <Compile Include="LiveTv\LiveTvTunerStatus.cs" /> <Compile Include="LiveTv\ProgramAudio.cs" /> - <Compile Include="LiveTv\ProgramInfoDto.cs" /> <Compile Include="LiveTv\ProgramQuery.cs" /> <Compile Include="LiveTv\RecommendedProgramQuery.cs" /> - <Compile Include="LiveTv\RecordingGroupDto.cs" /> <Compile Include="LiveTv\RecordingGroupQuery.cs" /> <Compile Include="LiveTv\RecordingQuery.cs" /> <Compile Include="LiveTv\RecordingStatus.cs" /> @@ -299,7 +299,6 @@ <Compile Include="IO\IIsoMounter.cs" /> <Compile Include="LiveTv\ChannelType.cs" /> <Compile Include="LiveTv\LiveTvServiceInfo.cs" /> - <Compile Include="LiveTv\RecordingInfoDto.cs" /> <Compile Include="Net\WebSocketMessage.cs" /> <Compile Include="Net\WebSocketMessageType.cs" /> <Compile Include="Net\WebSocketState.cs" /> @@ -380,6 +379,7 @@ <Compile Include="Session\TranscodingInfo.cs" /> <Compile Include="Session\UserDataChangeInfo.cs" /> <Compile Include="Devices\ContentUploadHistory.cs" /> + <Compile Include="Social\SocialShareInfo.cs" /> <Compile Include="Sync\CompleteSyncJobInfo.cs" /> <Compile Include="Sync\DeviceFileInfo.cs" /> <Compile Include="Sync\ItemFIleInfo.cs" /> diff --git a/MediaBrowser.Model/Net/MimeTypes.cs b/MediaBrowser.Model/Net/MimeTypes.cs index 56cfff733..efa5a5217 100644 --- a/MediaBrowser.Model/Net/MimeTypes.cs +++ b/MediaBrowser.Model/Net/MimeTypes.cs @@ -1,4 +1,5 @@ -using System; +using MediaBrowser.Model.Extensions; +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -45,33 +46,50 @@ namespace MediaBrowser.Model.Net ".rec" }; - private static readonly Dictionary<string, string> VideoFileExtensionsDictionary = VideoFileExtensions.ToDictionary(i => i, StringComparer.OrdinalIgnoreCase); + private static Dictionary<string, string> GetVideoFileExtensionsDictionary() + { + Dictionary<string, string> dict = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); + + foreach (string ext in VideoFileExtensions) + { + dict[ext] = ext; + } + + return dict; + } + + private static readonly Dictionary<string, string> VideoFileExtensionsDictionary = GetVideoFileExtensionsDictionary(); // http://en.wikipedia.org/wiki/Internet_media_type // Add more as needed - private static readonly Dictionary<string, string> MimeTypeLookup = - new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase) - { - {".jpg", "image/jpeg"}, - {".jpeg", "image/jpeg"}, - {".tbn", "image/jpeg"}, - {".png", "image/png"}, - {".gif", "image/gif"}, - {".webp", "image/webp"}, - {".ico", "image/vnd.microsoft.icon"}, - {".mpg", "video/mpeg"}, - {".mpeg", "video/mpeg"}, - {".ogv", "video/ogg"}, - {".mov", "video/quicktime"}, - {".webm", "video/webm"}, - {".mkv", "video/x-matroska"}, - {".wmv", "video/x-ms-wmv"}, - {".flv", "video/x-flv"}, - {".avi", "video/x-msvideo"}, - {".asf", "video/x-ms-asf"}, - {".m4v", "video/x-m4v"} - }; + private static Dictionary<string, string> GetMimeTypeLookup() + { + Dictionary<string, string> dict = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); + + dict.Add(".jpg", "image/jpeg"); + dict.Add(".jpeg", "image/jpeg"); + dict.Add(".tbn", "image/jpeg"); + dict.Add(".png", "image/png"); + dict.Add(".gif", "image/gif"); + dict.Add(".webp", "image/webp"); + dict.Add(".ico", "image/vnd.microsoft.icon"); + dict.Add(".mpg", "video/mpeg"); + dict.Add(".mpeg", "video/mpeg"); + dict.Add(".ogv", "video/ogg"); + dict.Add(".mov", "video/quicktime"); + dict.Add(".webm", "video/webm"); + dict.Add(".mkv", "video/x-matroska"); + dict.Add(".wmv", "video/x-ms-wmv"); + dict.Add(".flv", "video/x-flv"); + dict.Add(".avi", "video/x-msvideo"); + dict.Add(".asf", "video/x-ms-asf"); + dict.Add(".m4v", "video/x-m4v"); + + return dict; + } + + private static readonly Dictionary<string, string> MimeTypeLookup = GetMimeTypeLookup(); private static readonly Dictionary<string, string> ExtensionLookup = CreateExtensionLookup(); @@ -109,19 +127,19 @@ namespace MediaBrowser.Model.Net } // Type video - if (ext.Equals(".3gp", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".3gp")) { return "video/3gpp"; } - if (ext.Equals(".3g2", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".3g2")) { return "video/3gpp2"; } - if (ext.Equals(".ts", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".ts")) { return "video/mp2t"; } - if (ext.Equals(".mpd", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".mpd")) { return "video/vnd.mpeg.dash.mpd"; } @@ -133,134 +151,154 @@ namespace MediaBrowser.Model.Net } // Type text - if (ext.Equals(".css", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".css")) { return "text/css"; } - if (ext.Equals(".csv", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".csv")) { return "text/csv"; } - if (ext.Equals(".html", StringComparison.OrdinalIgnoreCase) || ext.Equals(".htm", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".html")) + { + return "text/html; charset=UTF-8"; + } + if (StringHelper.EqualsIgnoreCase(ext, ".htm")) { return "text/html; charset=UTF-8"; } - if (ext.Equals(".txt", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".txt")) { return "text/plain"; } - if (ext.Equals(".xml", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".xml")) { return "application/xml"; } // Type document - if (ext.Equals(".pdf", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".pdf")) { return "application/pdf"; } - if (ext.Equals(".mobi", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".mobi")) { return "application/x-mobipocket-ebook"; } - if (ext.Equals(".epub", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".epub")) + { + return "application/epub+zip"; + } + if (StringHelper.EqualsIgnoreCase(ext, ".cbz")) { return "application/epub+zip"; } - if (ext.Equals(".cbz", StringComparison.OrdinalIgnoreCase) || ext.Equals(".cbr", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".cbr")) { - return "application/x-cdisplay"; + return "application/epub+zip"; } // Type audio - if (ext.Equals(".mp3", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".mp3")) { return "audio/mpeg"; } - if (ext.Equals(".m4a", StringComparison.OrdinalIgnoreCase) || ext.Equals(".aac", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".m4a")) { return "audio/mp4"; } - if (ext.Equals(".webma", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".aac")) + { + return "audio/mp4"; + } + if (StringHelper.EqualsIgnoreCase(ext, ".webma")) { return "audio/webm"; } - if (ext.Equals(".wav", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".wav")) { return "audio/wav"; } - if (ext.Equals(".wma", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".wma")) { return "audio/x-ms-wma"; } - if (ext.Equals(".flac", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".flac")) { return "audio/flac"; } - if (ext.Equals(".aac", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".aac")) { return "audio/x-aac"; } - if (ext.Equals(".ogg", StringComparison.OrdinalIgnoreCase) || ext.Equals(".oga", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".ogg")) + { + return "audio/ogg"; + } + if (StringHelper.EqualsIgnoreCase(ext, ".oga")) { return "audio/ogg"; } // Playlists - if (ext.Equals(".m3u8", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".m3u8")) { return "application/x-mpegURL"; } // Misc - if (ext.Equals(".dll", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".dll")) { return "application/octet-stream"; } // Web - if (ext.Equals(".js", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".js")) { return "application/x-javascript"; } - if (ext.Equals(".json", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".json")) { return "application/json"; } - if (ext.Equals(".map", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".map")) { return "application/x-javascript"; } - if (ext.Equals(".woff", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".woff")) { return "font/woff"; } - if (ext.Equals(".ttf", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".ttf")) { return "font/ttf"; } - if (ext.Equals(".eot", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".eot")) { return "application/vnd.ms-fontobject"; } - if (ext.Equals(".svg", StringComparison.OrdinalIgnoreCase) || ext.Equals(".svgz", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".svg")) + { + return "image/svg+xml"; + } + if (StringHelper.EqualsIgnoreCase(ext, ".svgz")) { return "image/svg+xml"; } - if (ext.Equals(".srt", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".srt")) { return "text/plain"; } - if (ext.Equals(".vtt", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".vtt")) { return "text/vtt"; } - if (ext.Equals(".ttml", StringComparison.OrdinalIgnoreCase)) + if (StringHelper.EqualsIgnoreCase(ext, ".ttml")) { return "application/ttml+xml"; } diff --git a/MediaBrowser.Model/Social/SocialShareInfo.cs b/MediaBrowser.Model/Social/SocialShareInfo.cs new file mode 100644 index 000000000..1b1c225c4 --- /dev/null +++ b/MediaBrowser.Model/Social/SocialShareInfo.cs @@ -0,0 +1,16 @@ +using System; + +namespace MediaBrowser.Model.Social +{ + public class SocialShareInfo + { + public string Id { get; set; } + public string Url { get; set; } + public string ItemId { get; set; } + public string UserId { get; set; } + public DateTime ExpirationDate { get; set; } + public string Name { get; set; } + public string ImageUrl { get; set; } + public string Overview { get; set; } + } +} diff --git a/MediaBrowser.Model/Updates/PackageInfo.cs b/MediaBrowser.Model/Updates/PackageInfo.cs index 429144f36..5945f87ad 100644 --- a/MediaBrowser.Model/Updates/PackageInfo.cs +++ b/MediaBrowser.Model/Updates/PackageInfo.cs @@ -154,6 +154,12 @@ namespace MediaBrowser.Model.Updates public List<PackageVersionInfo> versions { get; set; } /// <summary> + /// Gets or sets a value indicating whether [enable in application store]. + /// </summary> + /// <value><c>true</c> if [enable in application store]; otherwise, <c>false</c>.</value> + public bool enableInAppStore { get; set; } + + /// <summary> /// Initializes a new instance of the <see cref="PackageInfo"/> class. /// </summary> public PackageInfo() diff --git a/MediaBrowser.Providers/Books/BookMetadataService.cs b/MediaBrowser.Providers/Books/BookMetadataService.cs index 53e2af3a5..311082d96 100644 --- a/MediaBrowser.Providers/Books/BookMetadataService.cs +++ b/MediaBrowser.Providers/Books/BookMetadataService.cs @@ -12,25 +12,17 @@ namespace MediaBrowser.Providers.Books { public class BookMetadataService : MetadataService<Book, BookInfo> { - public BookMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public BookMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(Book source, Book target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + protected override void MergeData(MetadataResult<Book> source, MetadataResult<Book> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) { ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); - if (replaceData || string.IsNullOrEmpty(target.SeriesName)) + if (replaceData || string.IsNullOrEmpty(target.Item.SeriesName)) { - target.SeriesName = source.SeriesName; + target.Item.SeriesName = source.Item.SeriesName; } } } diff --git a/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs b/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs index 69b78b5f1..8b405302e 100644 --- a/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs +++ b/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs @@ -15,33 +15,10 @@ namespace MediaBrowser.Providers.BoxSets { public class BoxSetMetadataService : MetadataService<BoxSet, BoxSetInfo> { - public BoxSetMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public BoxSetMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(BoxSet source, BoxSet target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) - { - ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); - - if (mergeMetadataSettings) - { - var list = source.LinkedChildren.Where(i => i.Type != LinkedChildType.Manual).ToList(); - - list.AddRange(target.LinkedChildren.Where(i => i.Type == LinkedChildType.Manual)); - - target.LinkedChildren = list; - target.Shares = source.Shares; - } - } - protected override async Task<ItemUpdateType> BeforeSave(BoxSet item, bool isFullRefresh, ItemUpdateType currentUpdateType) { var updateType = await base.BeforeSave(item, isFullRefresh, currentUpdateType).ConfigureAwait(false); @@ -59,5 +36,23 @@ namespace MediaBrowser.Providers.BoxSets return updateType; } + + protected override void MergeData(MetadataResult<BoxSet> source, MetadataResult<BoxSet> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + { + ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); + + var sourceItem = source.Item; + var targetItem = target.Item; + + if (mergeMetadataSettings) + { + var list = sourceItem.LinkedChildren.Where(i => i.Type != LinkedChildType.Manual).ToList(); + + list.AddRange(targetItem.LinkedChildren.Where(i => i.Type == LinkedChildType.Manual)); + + targetItem.LinkedChildren = list; + targetItem.Shares = sourceItem.Shares; + } + } } } diff --git a/MediaBrowser.Providers/Channels/AudioChannelItemMetadataService.cs b/MediaBrowser.Providers/Channels/AudioChannelItemMetadataService.cs index 70a72fba5..9d80559f1 100644 --- a/MediaBrowser.Providers/Channels/AudioChannelItemMetadataService.cs +++ b/MediaBrowser.Providers/Channels/AudioChannelItemMetadataService.cs @@ -12,19 +12,11 @@ namespace MediaBrowser.Providers.Channels { public class AudioChannelItemMetadataService : MetadataService<ChannelAudioItem, ItemLookupInfo> { - public AudioChannelItemMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public AudioChannelItemMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(ChannelAudioItem source, ChannelAudioItem target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + protected override void MergeData(MetadataResult<ChannelAudioItem> source, MetadataResult<ChannelAudioItem> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) { ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); } diff --git a/MediaBrowser.Providers/Channels/ChannelMetadataService.cs b/MediaBrowser.Providers/Channels/ChannelMetadataService.cs index 957fc2d93..faa35b379 100644 --- a/MediaBrowser.Providers/Channels/ChannelMetadataService.cs +++ b/MediaBrowser.Providers/Channels/ChannelMetadataService.cs @@ -12,19 +12,11 @@ namespace MediaBrowser.Providers.Channels { public class ChannelMetadataService : MetadataService<Channel, ItemLookupInfo> { - public ChannelMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public ChannelMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(Channel source, Channel target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + protected override void MergeData(MetadataResult<Channel> source, MetadataResult<Channel> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) { ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); } diff --git a/MediaBrowser.Providers/Channels/VideoChannelItemMetadataService.cs b/MediaBrowser.Providers/Channels/VideoChannelItemMetadataService.cs index b815f3ccd..1e7b5aca8 100644 --- a/MediaBrowser.Providers/Channels/VideoChannelItemMetadataService.cs +++ b/MediaBrowser.Providers/Channels/VideoChannelItemMetadataService.cs @@ -12,19 +12,11 @@ namespace MediaBrowser.Providers.Channels { public class VideoChannelItemMetadataService : MetadataService<ChannelVideoItem, ChannelItemLookupInfo> { - public VideoChannelItemMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public VideoChannelItemMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(ChannelVideoItem source, ChannelVideoItem target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + protected override void MergeData(MetadataResult<ChannelVideoItem> source, MetadataResult<ChannelVideoItem> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) { ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); } diff --git a/MediaBrowser.Providers/Folders/FolderMetadataService.cs b/MediaBrowser.Providers/Folders/FolderMetadataService.cs index 3f4691aa0..d54093da6 100644 --- a/MediaBrowser.Providers/Folders/FolderMetadataService.cs +++ b/MediaBrowser.Providers/Folders/FolderMetadataService.cs @@ -12,23 +12,10 @@ namespace MediaBrowser.Providers.Folders { public class FolderMetadataService : MetadataService<Folder, ItemLookupInfo> { - public FolderMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public FolderMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(Folder source, Folder target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) - { - ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); - } - public override int Order { get @@ -37,5 +24,10 @@ namespace MediaBrowser.Providers.Folders return 10; } } + + protected override void MergeData(MetadataResult<Folder> source, MetadataResult<Folder> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + { + ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); + } } } diff --git a/MediaBrowser.Providers/Folders/UserViewMetadataService.cs b/MediaBrowser.Providers/Folders/UserViewMetadataService.cs index 97ac78a82..1dc09e01d 100644 --- a/MediaBrowser.Providers/Folders/UserViewMetadataService.cs +++ b/MediaBrowser.Providers/Folders/UserViewMetadataService.cs @@ -12,20 +12,11 @@ namespace MediaBrowser.Providers.Folders { public class UserViewMetadataService : MetadataService<UserView, ItemLookupInfo> { - public UserViewMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) - : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public UserViewMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(UserView source, UserView target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + protected override void MergeData(MetadataResult<UserView> source, MetadataResult<UserView> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) { ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); } diff --git a/MediaBrowser.Providers/GameGenres/GameGenreMetadataService.cs b/MediaBrowser.Providers/GameGenres/GameGenreMetadataService.cs index 3e94de95a..957596a30 100644 --- a/MediaBrowser.Providers/GameGenres/GameGenreMetadataService.cs +++ b/MediaBrowser.Providers/GameGenres/GameGenreMetadataService.cs @@ -12,19 +12,11 @@ namespace MediaBrowser.Providers.GameGenres { public class GameGenreMetadataService : MetadataService<GameGenre, ItemLookupInfo> { - public GameGenreMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public GameGenreMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(GameGenre source, GameGenre target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + protected override void MergeData(MetadataResult<GameGenre> source, MetadataResult<GameGenre> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) { ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); } diff --git a/MediaBrowser.Providers/Games/GameMetadataService.cs b/MediaBrowser.Providers/Games/GameMetadataService.cs index 46715fcbd..b9403aaa6 100644 --- a/MediaBrowser.Providers/Games/GameMetadataService.cs +++ b/MediaBrowser.Providers/Games/GameMetadataService.cs @@ -12,30 +12,25 @@ namespace MediaBrowser.Providers.Games { public class GameMetadataService : MetadataService<Game, GameInfo> { - public GameMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public GameMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(Game source, Game target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + protected override void MergeData(MetadataResult<Game> source, MetadataResult<Game> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) { ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); - if (replaceData || string.IsNullOrEmpty(target.GameSystem)) + var sourceItem = source.Item; + var targetItem = target.Item; + + if (replaceData || string.IsNullOrEmpty(targetItem.GameSystem)) { - target.GameSystem = source.GameSystem; + targetItem.GameSystem = sourceItem.GameSystem; } - if (replaceData || !target.PlayersSupported.HasValue) + if (replaceData || !targetItem.PlayersSupported.HasValue) { - target.PlayersSupported = source.PlayersSupported; + targetItem.PlayersSupported = sourceItem.PlayersSupported; } } } diff --git a/MediaBrowser.Providers/Games/GameSystemMetadataService.cs b/MediaBrowser.Providers/Games/GameSystemMetadataService.cs index 963b2e49f..24786034d 100644 --- a/MediaBrowser.Providers/Games/GameSystemMetadataService.cs +++ b/MediaBrowser.Providers/Games/GameSystemMetadataService.cs @@ -14,25 +14,20 @@ namespace MediaBrowser.Providers.Games { public class GameSystemMetadataService : MetadataService<GameSystem, GameSystemInfo> { - public GameSystemMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public GameSystemMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(GameSystem source, GameSystem target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + protected override void MergeData(MetadataResult<GameSystem> source, MetadataResult<GameSystem> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) { ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); - if (replaceData || string.IsNullOrEmpty(target.GameSystemName)) + var sourceItem = source.Item; + var targetItem = target.Item; + + if (replaceData || string.IsNullOrEmpty(targetItem.GameSystemName)) { - target.GameSystemName = source.GameSystemName; + targetItem.GameSystemName = sourceItem.GameSystemName; } } } diff --git a/MediaBrowser.Providers/Genres/GenreMetadataService.cs b/MediaBrowser.Providers/Genres/GenreMetadataService.cs index abe025577..5cdd6d847 100644 --- a/MediaBrowser.Providers/Genres/GenreMetadataService.cs +++ b/MediaBrowser.Providers/Genres/GenreMetadataService.cs @@ -12,19 +12,11 @@ namespace MediaBrowser.Providers.Genres { public class GenreMetadataService : MetadataService<Genre, ItemLookupInfo> { - public GenreMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public GenreMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(Genre source, Genre target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + protected override void MergeData(MetadataResult<Genre> source, MetadataResult<Genre> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) { ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); } diff --git a/MediaBrowser.Providers/LiveTv/AudioRecordingService.cs b/MediaBrowser.Providers/LiveTv/AudioRecordingService.cs index 4fc5ba40d..b3d9d6a72 100644 --- a/MediaBrowser.Providers/LiveTv/AudioRecordingService.cs +++ b/MediaBrowser.Providers/LiveTv/AudioRecordingService.cs @@ -14,18 +14,11 @@ namespace MediaBrowser.Providers.LiveTv { public class AudioRecordingService : MetadataService<LiveTvAudioRecording, ItemLookupInfo> { - public AudioRecordingService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public AudioRecordingService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - protected override void MergeData(LiveTvAudioRecording source, LiveTvAudioRecording target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + protected override void MergeData(MetadataResult<LiveTvAudioRecording> source, MetadataResult<LiveTvAudioRecording> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) { ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); } diff --git a/MediaBrowser.Providers/LiveTv/ChannelMetadataService.cs b/MediaBrowser.Providers/LiveTv/ChannelMetadataService.cs index 37bfe4107..231017cd9 100644 --- a/MediaBrowser.Providers/LiveTv/ChannelMetadataService.cs +++ b/MediaBrowser.Providers/LiveTv/ChannelMetadataService.cs @@ -14,14 +14,11 @@ namespace MediaBrowser.Providers.LiveTv { public class ChannelMetadataService : MetadataService<LiveTvChannel, ItemLookupInfo> { - public ChannelMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public ChannelMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - protected override void MergeData(LiveTvChannel source, LiveTvChannel target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + protected override void MergeData(MetadataResult<LiveTvChannel> source, MetadataResult<LiveTvChannel> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) { ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); } diff --git a/MediaBrowser.Providers/LiveTv/ProgramMetadataService.cs b/MediaBrowser.Providers/LiveTv/ProgramMetadataService.cs index f17389615..8576993fd 100644 --- a/MediaBrowser.Providers/LiveTv/ProgramMetadataService.cs +++ b/MediaBrowser.Providers/LiveTv/ProgramMetadataService.cs @@ -12,23 +12,11 @@ namespace MediaBrowser.Providers.LiveTv { public class ProgramMetadataService : MetadataService<LiveTvProgram, LiveTvProgramLookupInfo> { - public ProgramMetadataService( - IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, - IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) - : base( - serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public ProgramMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings"></param> - protected override void MergeData(LiveTvProgram source, LiveTvProgram target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + protected override void MergeData(MetadataResult<LiveTvProgram> source, MetadataResult<LiveTvProgram> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) { ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); } diff --git a/MediaBrowser.Providers/LiveTv/VideoRecordingService.cs b/MediaBrowser.Providers/LiveTv/VideoRecordingService.cs index c47297d9c..4d8b27285 100644 --- a/MediaBrowser.Providers/LiveTv/VideoRecordingService.cs +++ b/MediaBrowser.Providers/LiveTv/VideoRecordingService.cs @@ -14,18 +14,11 @@ namespace MediaBrowser.Providers.LiveTv { public class VideoRecordingService : MetadataService<LiveTvVideoRecording, ItemLookupInfo> { - public VideoRecordingService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public VideoRecordingService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - protected override void MergeData(LiveTvVideoRecording source, LiveTvVideoRecording target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + protected override void MergeData(MetadataResult<LiveTvVideoRecording> source, MetadataResult<LiveTvVideoRecording> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) { ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); } diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index 71bc9c065..de41a0f96 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/MediaBrowser.Providers/Manager/MetadataService.cs @@ -24,8 +24,9 @@ namespace MediaBrowser.Providers.Manager protected readonly IProviderRepository ProviderRepo; protected readonly IFileSystem FileSystem; protected readonly IUserDataManager UserDataManager; + protected readonly ILibraryManager LibraryManager; - protected MetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) + protected MetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) { ServerConfigurationManager = serverConfigurationManager; Logger = logger; @@ -33,6 +34,7 @@ namespace MediaBrowser.Providers.Manager ProviderRepo = providerRepo; FileSystem = fileSystem; UserDataManager = userDataManager; + LibraryManager = libraryManager; } /// <summary> @@ -118,6 +120,11 @@ namespace MediaBrowser.Providers.Manager refreshResult.AddStatus(ProviderRefreshStatus.Failure, ex.Message); } + var metadataResult = new MetadataResult<TItemType> + { + Item = itemOfType + }; + // Next run metadata providers if (refreshOptions.MetadataRefreshMode != MetadataRefreshMode.None) { @@ -136,7 +143,7 @@ namespace MediaBrowser.Providers.Manager { var id = await CreateInitialLookupInfo(itemOfType, cancellationToken).ConfigureAwait(false); - var result = await RefreshWithProviders(itemOfType, id, refreshOptions, providers, itemImageProvider, cancellationToken).ConfigureAwait(false); + var result = await RefreshWithProviders(metadataResult, id, refreshOptions, providers, itemImageProvider, cancellationToken).ConfigureAwait(false); updateType = updateType | result.UpdateType; refreshResult.AddStatus(result.Status, result.ErrorMessage); @@ -174,7 +181,7 @@ namespace MediaBrowser.Providers.Manager } // Save to database - await SaveItem(itemOfType, updateType, cancellationToken); + await SaveItem(metadataResult, updateType, cancellationToken).ConfigureAwait(false); } if (updateType > ItemUpdateType.None || refreshResult.IsDirty) @@ -321,9 +328,14 @@ namespace MediaBrowser.Providers.Manager return providers; } - protected Task SaveItem(TItemType item, ItemUpdateType reason, CancellationToken cancellationToken) + protected async Task SaveItem(MetadataResult<TItemType> result, ItemUpdateType reason, CancellationToken cancellationToken) { - return item.UpdateToRepository(reason, cancellationToken); + await result.Item.UpdateToRepository(reason, cancellationToken).ConfigureAwait(false); + + if (result.Item.SupportsPeople) + { + await LibraryManager.UpdatePeople(result.Item as BaseItem, result.People); + } } public bool CanRefresh(IHasMetadata item) @@ -331,7 +343,7 @@ namespace MediaBrowser.Providers.Manager return item is TItemType; } - protected virtual async Task<RefreshResult> RefreshWithProviders(TItemType item, + protected virtual async Task<RefreshResult> RefreshWithProviders(MetadataResult<TItemType> metadata, TIdType id, MetadataRefreshOptions options, List<IMetadataProvider> providers, @@ -344,6 +356,8 @@ namespace MediaBrowser.Providers.Manager Providers = providers.Select(i => i.GetType().FullName.GetMD5()).ToList() }; + var item = metadata.Item; + var customProviders = providers.OfType<ICustomMetadataProvider<TItemType>>().ToList(); var logName = item.LocationType == LocationType.Remote ? item.Name ?? item.Path : item.Path ?? item.Name; @@ -352,11 +366,16 @@ namespace MediaBrowser.Providers.Manager await RunCustomProvider(provider, item, logName, options, refreshResult, cancellationToken).ConfigureAwait(false); } - var temp = CreateNew(); - temp.Path = item.Path; + var temp = new MetadataResult<TItemType> + { + Item = CreateNew() + }; + temp.Item.Path = item.Path; var successfulProviderCount = 0; var failedProviderCount = 0; + var userDataList = new List<UserItemData>(); + // If replacing all metadata, run internet providers first if (options.ReplaceAllMetadata) { @@ -371,14 +390,13 @@ namespace MediaBrowser.Providers.Manager } var hasLocalMetadata = false; - var userDataList = new List<UserItemData>(); foreach (var provider in providers.OfType<ILocalMetadataProvider<TItemType>>().ToList()) { var providerName = provider.GetType().Name; Logger.Debug("Running {0} for {1}", providerName, logName); - var itemInfo = new ItemInfo { Path = item.Path, IsInMixedFolder = item.IsInMixedFolder }; + var itemInfo = new ItemInfo(item); try { @@ -393,7 +411,7 @@ namespace MediaBrowser.Providers.Manager userDataList = localItem.UserDataLIst; - MergeData(localItem.Item, temp, new List<MetadataFields>(), !options.ReplaceAllMetadata, true); + MergeData(localItem, temp, new List<MetadataFields>(), !options.ReplaceAllMetadata, true); refreshResult.UpdateType = refreshResult.UpdateType | ItemUpdateType.MetadataImport; // Only one local provider allowed per item @@ -452,10 +470,10 @@ namespace MediaBrowser.Providers.Manager if (!hasLocalMetadata) { // TODO: If the new metadata from above has some blank data, this can cause old data to get filled into those empty fields - MergeData(item, temp, new List<MetadataFields>(), false, true); + MergeData(metadata, temp, new List<MetadataFields>(), false, true); } - MergeData(temp, item, item.LockedFields, true, true); + MergeData(temp, metadata, item.LockedFields, true, true); } } @@ -526,7 +544,7 @@ namespace MediaBrowser.Providers.Manager return new TItemType(); } - private async Task<RefreshResult> ExecuteRemoteProviders(TItemType temp, string logName, TIdType id, IEnumerable<IRemoteMetadataProvider<TItemType, TIdType>> providers, CancellationToken cancellationToken) + private async Task<RefreshResult> ExecuteRemoteProviders(MetadataResult<TItemType> temp, string logName, TIdType id, IEnumerable<IRemoteMetadataProvider<TItemType, TIdType>> providers, CancellationToken cancellationToken) { var refreshResult = new RefreshResult(); @@ -537,7 +555,7 @@ namespace MediaBrowser.Providers.Manager if (id != null) { - MergeNewData(temp, id); + MergeNewData(temp.Item, id); } try @@ -548,7 +566,7 @@ namespace MediaBrowser.Providers.Manager { NormalizeRemoteResult(result.Item); - MergeData(result.Item, temp, new List<MetadataFields>(), false, false); + MergeData(result, temp, new List<MetadataFields>(), false, false); refreshResult.UpdateType = refreshResult.UpdateType | ItemUpdateType.MetadataDownload; @@ -624,8 +642,8 @@ namespace MediaBrowser.Providers.Manager } } - protected abstract void MergeData(TItemType source, - TItemType target, + protected abstract void MergeData(MetadataResult<TItemType> source, + MetadataResult<TItemType> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings); diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs index 01a89bf26..14009a94f 100644 --- a/MediaBrowser.Providers/Manager/ProviderManager.cs +++ b/MediaBrowser.Providers/Manager/ProviderManager.cs @@ -150,6 +150,11 @@ namespace MediaBrowser.Providers.Manager public Task SaveImage(IHasImages item, string source, string mimeType, ImageType type, int? imageIndex, string internalCacheKey, CancellationToken cancellationToken) { + if (string.IsNullOrWhiteSpace(source)) + { + throw new ArgumentNullException("source"); + } + var fileStream = _fileSystem.GetFileStream(source, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, true); return new ImageSaver(ConfigurationManager, _libraryMonitor, _fileSystem, _logger).SaveImage(item, fileStream, mimeType, type, imageIndex, internalCacheKey, cancellationToken); @@ -480,12 +485,11 @@ namespace MediaBrowser.Providers.Manager // Give it a dummy path just so that it looks like a file system item var dummy = new T() { - Path = Path.Combine(_appPaths.InternalMetadataPath, "dummy"), - - // Dummy this up to fool the local trailer check - Parent = new Folder() + Path = Path.Combine(_appPaths.InternalMetadataPath, "dummy") }; + dummy.SetParent(new Folder()); + var options = GetMetadataOptions(dummy); var summary = new MetadataPluginSummary @@ -722,12 +726,11 @@ namespace MediaBrowser.Providers.Manager // Give it a dummy path just so that it looks like a file system item var dummy = new TItemType { - Path = Path.Combine(_appPaths.InternalMetadataPath, "dummy"), - - // Dummy this up to fool the local trailer check - Parent = new Folder() + Path = Path.Combine(_appPaths.InternalMetadataPath, "dummy") }; + dummy.SetParent(new Folder()); + var options = GetMetadataOptions(dummy); var providers = GetMetadataProvidersInternal<TItemType>(dummy, options, searchInfo.IncludeDisabledProviders) diff --git a/MediaBrowser.Providers/Manager/ProviderUtils.cs b/MediaBrowser.Providers/Manager/ProviderUtils.cs index 1c526b4db..a0a0493d5 100644 --- a/MediaBrowser.Providers/Manager/ProviderUtils.cs +++ b/MediaBrowser.Providers/Manager/ProviderUtils.cs @@ -1,5 +1,6 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; +using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; using System; using System.Collections.Generic; @@ -8,12 +9,16 @@ namespace MediaBrowser.Providers.Manager { public static class ProviderUtils { - public static void MergeBaseItemData(BaseItem source, - BaseItem target, + public static void MergeBaseItemData<T>(MetadataResult<T> sourceResult, + MetadataResult<T> targetResult, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + where T : BaseItem { + var source = sourceResult.Item; + var target = targetResult.Item; + if (source == null) { throw new ArgumentNullException("source"); @@ -100,9 +105,9 @@ namespace MediaBrowser.Providers.Manager if (!lockedFields.Contains(MetadataFields.Cast)) { - if (replaceData || target.People.Count == 0) + if (replaceData || targetResult.People.Count == 0) { - target.People = source.People; + targetResult.People = sourceResult.People; } } diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfo.cs b/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfo.cs index 33f35450d..f2f1663e4 100644 --- a/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfo.cs +++ b/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfo.cs @@ -8,6 +8,7 @@ using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Entities; using MediaBrowser.Model.MediaInfo; using MediaBrowser.Model.Serialization; +using System.Collections.Generic; using System.Globalization; using System.IO; using System.Linq; @@ -22,15 +23,17 @@ namespace MediaBrowser.Providers.MediaInfo private readonly IItemRepository _itemRepo; private readonly IApplicationPaths _appPaths; private readonly IJsonSerializer _json; + private readonly ILibraryManager _libraryManager; private readonly CultureInfo _usCulture = new CultureInfo("en-US"); - public FFProbeAudioInfo(IMediaEncoder mediaEncoder, IItemRepository itemRepo, IApplicationPaths appPaths, IJsonSerializer json) + public FFProbeAudioInfo(IMediaEncoder mediaEncoder, IItemRepository itemRepo, IApplicationPaths appPaths, IJsonSerializer json, ILibraryManager libraryManager) { _mediaEncoder = mediaEncoder; _itemRepo = itemRepo; _appPaths = appPaths; _json = json; + _libraryManager = libraryManager; } public async Task<ItemUpdateType> Probe<T>(T item, CancellationToken cancellationToken) @@ -96,7 +99,7 @@ namespace MediaBrowser.Providers.MediaInfo /// <param name="cancellationToken">The cancellation token.</param> /// <param name="mediaInfo">The media information.</param> /// <returns>Task.</returns> - protected Task Fetch(Audio audio, CancellationToken cancellationToken, Model.MediaInfo.MediaInfo mediaInfo) + protected async Task Fetch(Audio audio, CancellationToken cancellationToken, Model.MediaInfo.MediaInfo mediaInfo) { var mediaStreams = mediaInfo.MediaStreams; @@ -110,9 +113,9 @@ namespace MediaBrowser.Providers.MediaInfo var extension = (Path.GetExtension(audio.Path) ?? string.Empty).TrimStart('.'); audio.Container = extension; - FetchDataFromTags(audio, mediaInfo); + await FetchDataFromTags(audio, mediaInfo).ConfigureAwait(false); - return _itemRepo.SaveMediaStreams(audio.Id, mediaStreams, cancellationToken); + await _itemRepo.SaveMediaStreams(audio.Id, mediaStreams, cancellationToken).ConfigureAwait(false); } /// <summary> @@ -120,7 +123,7 @@ namespace MediaBrowser.Providers.MediaInfo /// </summary> /// <param name="audio">The audio.</param> /// <param name="data">The data.</param> - private void FetchDataFromTags(Audio audio, Model.MediaInfo.MediaInfo data) + private async Task FetchDataFromTags(Audio audio, Model.MediaInfo.MediaInfo data) { // Only set Name if title was found in the dictionary if (!string.IsNullOrEmpty(data.Title)) @@ -130,17 +133,19 @@ namespace MediaBrowser.Providers.MediaInfo if (!audio.LockedFields.Contains(MetadataFields.Cast)) { - audio.People.Clear(); + var people = new List<PersonInfo>(); foreach (var person in data.People) { - audio.AddPerson(new PersonInfo + PeopleHelper.AddPerson(people, new PersonInfo { Name = person.Name, Type = person.Type, Role = person.Role }); } + + await _libraryManager.UpdatePeople(audio, people).ConfigureAwait(false); } audio.Album = data.Album; diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs b/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs index a6d3c0271..af7fc3df4 100644 --- a/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs +++ b/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs @@ -51,6 +51,7 @@ namespace MediaBrowser.Providers.MediaInfo private readonly IServerConfigurationManager _config; private readonly ISubtitleManager _subtitleManager; private readonly IChapterManager _chapterManager; + private readonly ILibraryManager _libraryManager; public string Name { @@ -92,7 +93,7 @@ namespace MediaBrowser.Providers.MediaInfo return FetchAudioInfo(item, cancellationToken); } - public FFProbeProvider(ILogger logger, IIsoManager isoManager, IMediaEncoder mediaEncoder, IItemRepository itemRepo, IBlurayExaminer blurayExaminer, ILocalizationManager localization, IApplicationPaths appPaths, IJsonSerializer json, IEncodingManager encodingManager, IFileSystem fileSystem, IServerConfigurationManager config, ISubtitleManager subtitleManager, IChapterManager chapterManager) + public FFProbeProvider(ILogger logger, IIsoManager isoManager, IMediaEncoder mediaEncoder, IItemRepository itemRepo, IBlurayExaminer blurayExaminer, ILocalizationManager localization, IApplicationPaths appPaths, IJsonSerializer json, IEncodingManager encodingManager, IFileSystem fileSystem, IServerConfigurationManager config, ISubtitleManager subtitleManager, IChapterManager chapterManager, ILibraryManager libraryManager) { _logger = logger; _isoManager = isoManager; @@ -107,6 +108,7 @@ namespace MediaBrowser.Providers.MediaInfo _config = config; _subtitleManager = subtitleManager; _chapterManager = chapterManager; + _libraryManager = libraryManager; } private readonly Task<ItemUpdateType> _cachedTask = Task.FromResult(ItemUpdateType.None); @@ -138,8 +140,8 @@ namespace MediaBrowser.Providers.MediaInfo FetchShortcutInfo(item); return Task.FromResult(ItemUpdateType.MetadataEdit); } - - var prober = new FFProbeVideoInfo(_logger, _isoManager, _mediaEncoder, _itemRepo, _blurayExaminer, _localization, _appPaths, _json, _encodingManager, _fileSystem, _config, _subtitleManager, _chapterManager); + + var prober = new FFProbeVideoInfo(_logger, _isoManager, _mediaEncoder, _itemRepo, _blurayExaminer, _localization, _appPaths, _json, _encodingManager, _fileSystem, _config, _subtitleManager, _chapterManager, _libraryManager); return prober.ProbeVideo(item, options, cancellationToken); } @@ -157,7 +159,7 @@ namespace MediaBrowser.Providers.MediaInfo return _cachedTask; } - var prober = new FFProbeAudioInfo(_mediaEncoder, _itemRepo, _appPaths, _json); + var prober = new FFProbeAudioInfo(_mediaEncoder, _itemRepo, _appPaths, _json, _libraryManager); return prober.Probe(item, cancellationToken); } diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs index b53e31316..395d95cc5 100644 --- a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs +++ b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs @@ -46,10 +46,11 @@ namespace MediaBrowser.Providers.MediaInfo private readonly IServerConfigurationManager _config; private readonly ISubtitleManager _subtitleManager; private readonly IChapterManager _chapterManager; + private readonly ILibraryManager _libraryManager; private readonly CultureInfo _usCulture = new CultureInfo("en-US"); - public FFProbeVideoInfo(ILogger logger, IIsoManager isoManager, IMediaEncoder mediaEncoder, IItemRepository itemRepo, IBlurayExaminer blurayExaminer, ILocalizationManager localization, IApplicationPaths appPaths, IJsonSerializer json, IEncodingManager encodingManager, IFileSystem fileSystem, IServerConfigurationManager config, ISubtitleManager subtitleManager, IChapterManager chapterManager) + public FFProbeVideoInfo(ILogger logger, IIsoManager isoManager, IMediaEncoder mediaEncoder, IItemRepository itemRepo, IBlurayExaminer blurayExaminer, ILocalizationManager localization, IApplicationPaths appPaths, IJsonSerializer json, IEncodingManager encodingManager, IFileSystem fileSystem, IServerConfigurationManager config, ISubtitleManager subtitleManager, IChapterManager chapterManager, ILibraryManager libraryManager) { _logger = logger; _isoManager = isoManager; @@ -64,6 +65,7 @@ namespace MediaBrowser.Providers.MediaInfo _config = config; _subtitleManager = subtitleManager; _chapterManager = chapterManager; + _libraryManager = libraryManager; } public async Task<ItemUpdateType> ProbeVideo<T>(T item, @@ -130,7 +132,7 @@ namespace MediaBrowser.Providers.MediaInfo return ItemUpdateType.MetadataImport; } - private const string SchemaVersion = "4"; + private const string SchemaVersion = "5"; private async Task<Model.MediaInfo.MediaInfo> GetMediaInfo(Video item, IIsoMount isoMount, @@ -219,6 +221,7 @@ namespace MediaBrowser.Providers.MediaInfo await AddExternalSubtitles(video, mediaStreams, options, cancellationToken).ConfigureAwait(false); FetchEmbeddedInfo(video, mediaInfo, options); + await FetchPeople(video, mediaInfo, options).ConfigureAwait(false); video.IsHD = mediaStreams.Any(i => i.Type == MediaStreamType.Video && i.Width.HasValue && i.Width.Value >= 1270); @@ -370,24 +373,6 @@ namespace MediaBrowser.Providers.MediaInfo } } - if (!video.LockedFields.Contains(MetadataFields.Cast)) - { - if (video.People.Count == 0 || isFullRefresh) - { - video.People.Clear(); - - foreach (var person in data.People) - { - video.AddPerson(new PersonInfo - { - Name = person.Name, - Type = person.Type, - Role = person.Role - }); - } - } - } - if (!video.LockedFields.Contains(MetadataFields.Genres)) { if (video.Genres.Count == 0 || isFullRefresh) @@ -458,6 +443,31 @@ namespace MediaBrowser.Providers.MediaInfo } } + private async Task FetchPeople(Video video, Model.MediaInfo.MediaInfo data, MetadataRefreshOptions options) + { + var isFullRefresh = options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh; + + if (!video.LockedFields.Contains(MetadataFields.Cast)) + { + if (isFullRefresh || _libraryManager.GetPeople(video).Count == 0) + { + var people = new List<PersonInfo>(); + + foreach (var person in data.People) + { + PeopleHelper.AddPerson(people, new PersonInfo + { + Name = person.Name, + Type = person.Type, + Role = person.Role + }); + } + + await _libraryManager.UpdatePeople(video, people); + } + } + } + private SubtitleOptions GetOptions() { return _config.GetConfiguration<SubtitleOptions>("subtitles"); diff --git a/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs b/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs index c23ed3786..6854ff12b 100644 --- a/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs +++ b/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs @@ -34,8 +34,6 @@ namespace MediaBrowser.Providers.Movies public async Task<MetadataResult<T>> GetMetadata(ItemLookupInfo itemId, CancellationToken cancellationToken) { - var result = new MetadataResult<T>(); - var tmdbId = itemId.GetProviderId(MetadataProviders.Tmdb); var imdbId = itemId.GetProviderId(MetadataProviders.Imdb); @@ -56,12 +54,10 @@ namespace MediaBrowser.Providers.Movies { cancellationToken.ThrowIfCancellationRequested(); - result.Item = await FetchMovieData(tmdbId, imdbId, itemId.MetadataLanguage, itemId.MetadataCountryCode, cancellationToken).ConfigureAwait(false); - - result.HasMetadata = result.Item != null; + return await FetchMovieData(tmdbId, imdbId, itemId.MetadataLanguage, itemId.MetadataCountryCode, cancellationToken).ConfigureAwait(false); } - return result; + return new MetadataResult<T>(); } /// <summary> @@ -73,8 +69,13 @@ namespace MediaBrowser.Providers.Movies /// <param name="preferredCountryCode">The preferred country code.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task{`0}.</returns> - private async Task<T> FetchMovieData(string tmdbId, string imdbId, string language, string preferredCountryCode, CancellationToken cancellationToken) + private async Task<MetadataResult<T>> FetchMovieData(string tmdbId, string imdbId, string language, string preferredCountryCode, CancellationToken cancellationToken) { + var item = new MetadataResult<T> + { + Item = new T() + }; + string dataFilePath = null; MovieDbProvider.CompleteMovieData movieInfo = null; @@ -82,7 +83,7 @@ namespace MediaBrowser.Providers.Movies if (string.IsNullOrEmpty(tmdbId)) { movieInfo = await MovieDbProvider.Current.FetchMainResult(imdbId, false, language, cancellationToken).ConfigureAwait(false); - if (movieInfo == null) return null; + if (movieInfo == null) return item; tmdbId = movieInfo.id.ToString(_usCulture); @@ -96,9 +97,8 @@ namespace MediaBrowser.Providers.Movies dataFilePath = dataFilePath ?? MovieDbProvider.Current.GetDataFilePath(tmdbId, language); movieInfo = movieInfo ?? _jsonSerializer.DeserializeFromFile<MovieDbProvider.CompleteMovieData>(dataFilePath); - var item = new T(); - ProcessMainInfo(item, preferredCountryCode, movieInfo); + item.HasMetadata = true; return item; } @@ -106,11 +106,13 @@ namespace MediaBrowser.Providers.Movies /// <summary> /// Processes the main info. /// </summary> - /// <param name="movie">The movie.</param> + /// <param name="resultItem">The result item.</param> /// <param name="preferredCountryCode">The preferred country code.</param> /// <param name="movieData">The movie data.</param> - private void ProcessMainInfo(T movie, string preferredCountryCode, MovieDbProvider.CompleteMovieData movieData) + private void ProcessMainInfo(MetadataResult<T> resultItem, string preferredCountryCode, MovieDbProvider.CompleteMovieData movieData) { + var movie = resultItem.Item; + movie.Name = movieData.GetTitle() ?? movie.Name; var hasOriginalTitle = movie as IHasOriginalTitle; @@ -233,13 +235,19 @@ namespace MediaBrowser.Providers.Movies //actors come from cast if (movieData.casts != null && movieData.casts.cast != null) { - foreach (var actor in movieData.casts.cast.OrderBy(a => a.order)) movie.AddPerson(new PersonInfo { Name = actor.name.Trim(), Role = actor.character, Type = PersonType.Actor, SortOrder = actor.order }); + foreach (var actor in movieData.casts.cast.OrderBy(a => a.order)) + { + PeopleHelper.AddPerson(resultItem.People, new PersonInfo { Name = actor.name.Trim(), Role = actor.character, Type = PersonType.Actor, SortOrder = actor.order }); + } } //and the rest from crew if (movieData.casts != null && movieData.casts.crew != null) { - foreach (var person in movieData.casts.crew) movie.AddPerson(new PersonInfo { Name = person.name.Trim(), Role = person.job, Type = person.department }); + foreach (var person in movieData.casts.crew) + { + PeopleHelper.AddPerson(resultItem.People, new PersonInfo { Name = person.name.Trim(), Role = person.job, Type = person.department }); + } } if (movieData.keywords != null && movieData.keywords.keywords != null) diff --git a/MediaBrowser.Providers/Movies/MovieDbSearch.cs b/MediaBrowser.Providers/Movies/MovieDbSearch.cs index 8a59d7a1b..6fb795411 100644 --- a/MediaBrowser.Providers/Movies/MovieDbSearch.cs +++ b/MediaBrowser.Providers/Movies/MovieDbSearch.cs @@ -58,10 +58,13 @@ namespace MediaBrowser.Providers.Movies var tmdbImageUrl = tmdbSettings.images.base_url + "original"; - var parsedName = _libraryManager.ParseName(name); - var yearInName = parsedName.Year; - name = parsedName.Name; - year = year ?? yearInName; + if (!string.IsNullOrWhiteSpace(name)) + { + var parsedName = _libraryManager.ParseName(name); + var yearInName = parsedName.Year; + name = parsedName.Name; + year = year ?? yearInName; + } _logger.Info("MovieDbProvider: Finding id for item: " + name); var language = idInfo.MetadataLanguage.ToLower(); diff --git a/MediaBrowser.Providers/Movies/MovieMetadataService.cs b/MediaBrowser.Providers/Movies/MovieMetadataService.cs index f886deb00..e96e89a78 100644 --- a/MediaBrowser.Providers/Movies/MovieMetadataService.cs +++ b/MediaBrowser.Providers/Movies/MovieMetadataService.cs @@ -12,28 +12,10 @@ namespace MediaBrowser.Providers.Movies { public class MovieMetadataService : MetadataService<Movie, MovieInfo> { - public MovieMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public MovieMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(Movie source, Movie target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) - { - ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); - - if (replaceData || string.IsNullOrEmpty(target.TmdbCollectionName)) - { - target.TmdbCollectionName = source.TmdbCollectionName; - } - } - protected override bool IsFullLocalMetadata(Movie item) { if (string.IsNullOrWhiteSpace(item.Overview)) @@ -46,5 +28,18 @@ namespace MediaBrowser.Providers.Movies } return base.IsFullLocalMetadata(item); } + + protected override void MergeData(MetadataResult<Movie> source, MetadataResult<Movie> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + { + ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); + + var sourceItem = source.Item; + var targetItem = target.Item; + + if (replaceData || string.IsNullOrEmpty(targetItem.TmdbCollectionName)) + { + targetItem.TmdbCollectionName = sourceItem.TmdbCollectionName; + } + } } } diff --git a/MediaBrowser.Providers/Music/AlbumMetadataService.cs b/MediaBrowser.Providers/Music/AlbumMetadataService.cs index 90248e418..859db37ba 100644 --- a/MediaBrowser.Providers/Music/AlbumMetadataService.cs +++ b/MediaBrowser.Providers/Music/AlbumMetadataService.cs @@ -15,28 +15,10 @@ namespace MediaBrowser.Providers.Music { public class AlbumMetadataService : MetadataService<MusicAlbum, AlbumInfo> { - public AlbumMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public AlbumMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(MusicAlbum source, MusicAlbum target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) - { - ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); - - if (replaceData || target.Artists.Count == 0) - { - target.Artists = source.Artists; - } - } - protected override async Task<ItemUpdateType> BeforeSave(MusicAlbum item, bool isFullRefresh, ItemUpdateType currentUpdateType) { var updateType = await base.BeforeSave(item, isFullRefresh, currentUpdateType).ConfigureAwait(false); @@ -171,5 +153,18 @@ namespace MediaBrowser.Providers.Music return updateType; } + + protected override void MergeData(MetadataResult<MusicAlbum> source, MetadataResult<MusicAlbum> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + { + ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); + + var sourceItem = source.Item; + var targetItem = target.Item; + + if (replaceData || targetItem.Artists.Count == 0) + { + targetItem.Artists = sourceItem.Artists; + } + } } } diff --git a/MediaBrowser.Providers/Music/ArtistMetadataService.cs b/MediaBrowser.Providers/Music/ArtistMetadataService.cs index 790529371..0032aac62 100644 --- a/MediaBrowser.Providers/Music/ArtistMetadataService.cs +++ b/MediaBrowser.Providers/Music/ArtistMetadataService.cs @@ -15,24 +15,8 @@ namespace MediaBrowser.Providers.Music { public class ArtistMetadataService : MetadataService<MusicArtist, ArtistInfo> { - private readonly ILibraryManager _libraryManager; - - public ArtistMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public ArtistMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { - _libraryManager = libraryManager; - } - - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(MusicArtist source, MusicArtist target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) - { - ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); } protected override async Task<ItemUpdateType> BeforeSave(MusicArtist item, bool isFullRefresh, ItemUpdateType currentUpdateType) @@ -46,7 +30,7 @@ namespace MediaBrowser.Providers.Music var itemFilter = item.GetItemFilter(); var taggedItems = item.IsAccessedByName ? - _libraryManager.RootFolder.GetRecursiveChildren(i => !i.IsFolder && itemFilter(i)).ToList() : + LibraryManager.RootFolder.GetRecursiveChildren(i => !i.IsFolder && itemFilter(i)).ToList() : item.GetRecursiveChildren(i => i is IHasArtist && !i.IsFolder).ToList(); if (!item.LockedFields.Contains(MetadataFields.Genres)) @@ -67,5 +51,10 @@ namespace MediaBrowser.Providers.Music return updateType; } + + protected override void MergeData(MetadataResult<MusicArtist> source, MetadataResult<MusicArtist> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + { + ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); + } } } diff --git a/MediaBrowser.Providers/Music/AudioMetadataService.cs b/MediaBrowser.Providers/Music/AudioMetadataService.cs index 908913910..b4d50a173 100644 --- a/MediaBrowser.Providers/Music/AudioMetadataService.cs +++ b/MediaBrowser.Providers/Music/AudioMetadataService.cs @@ -12,30 +12,25 @@ namespace MediaBrowser.Providers.Music { public class AudioMetadataService : MetadataService<Audio, SongInfo> { - public AudioMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public AudioMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(Audio source, Audio target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + protected override void MergeData(MetadataResult<Audio> source, MetadataResult<Audio> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) { ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); - if (replaceData || target.Artists.Count == 0) + var sourceItem = source.Item; + var targetItem = target.Item; + + if (replaceData || targetItem.Artists.Count == 0) { - target.Artists = source.Artists; + targetItem.Artists = sourceItem.Artists; } - if (replaceData || string.IsNullOrEmpty(target.Album)) + if (replaceData || string.IsNullOrEmpty(targetItem.Album)) { - target.Album = source.Album; + targetItem.Album = sourceItem.Album; } } } diff --git a/MediaBrowser.Providers/Music/FanArtAlbumProvider.cs b/MediaBrowser.Providers/Music/FanArtAlbumProvider.cs index 734ee74b6..0676d93d1 100644 --- a/MediaBrowser.Providers/Music/FanArtAlbumProvider.cs +++ b/MediaBrowser.Providers/Music/FanArtAlbumProvider.cs @@ -7,6 +7,7 @@ using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Providers; +using MediaBrowser.Providers.TV; using System; using System.Collections.Generic; using System.Globalization; @@ -16,7 +17,6 @@ using System.Text; using System.Threading; using System.Threading.Tasks; using System.Xml; -using MediaBrowser.Providers.TV; namespace MediaBrowser.Providers.Music { diff --git a/MediaBrowser.Providers/Music/FanArtArtistProvider.cs b/MediaBrowser.Providers/Music/FanArtArtistProvider.cs index 0ed654962..597c5c0bc 100644 --- a/MediaBrowser.Providers/Music/FanArtArtistProvider.cs +++ b/MediaBrowser.Providers/Music/FanArtArtistProvider.cs @@ -8,6 +8,7 @@ using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Providers; +using MediaBrowser.Providers.TV; using System; using System.Collections.Generic; using System.Globalization; @@ -17,7 +18,6 @@ using System.Text; using System.Threading; using System.Threading.Tasks; using System.Xml; -using MediaBrowser.Providers.TV; namespace MediaBrowser.Providers.Music { diff --git a/MediaBrowser.Providers/Music/MusicVideoMetadataService.cs b/MediaBrowser.Providers/Music/MusicVideoMetadataService.cs index bbb456b2b..0456dbfba 100644 --- a/MediaBrowser.Providers/Music/MusicVideoMetadataService.cs +++ b/MediaBrowser.Providers/Music/MusicVideoMetadataService.cs @@ -13,30 +13,25 @@ namespace MediaBrowser.Providers.Music { class MusicVideoMetadataService : MetadataService<MusicVideo, MusicVideoInfo> { - public MusicVideoMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public MusicVideoMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(MusicVideo source, MusicVideo target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + protected override void MergeData(MetadataResult<MusicVideo> source, MetadataResult<MusicVideo> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) { ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); - if (replaceData || string.IsNullOrEmpty(target.Album)) + var sourceItem = source.Item; + var targetItem = target.Item; + + if (replaceData || string.IsNullOrEmpty(targetItem.Album)) { - target.Album = source.Album; + targetItem.Album = sourceItem.Album; } - if (replaceData || target.Artists.Count == 0) + if (replaceData || targetItem.Artists.Count == 0) { - target.Artists = source.Artists.ToList(); + targetItem.Artists = sourceItem.Artists.ToList(); } } } diff --git a/MediaBrowser.Providers/MusicGenres/MusicGenreMetadataService.cs b/MediaBrowser.Providers/MusicGenres/MusicGenreMetadataService.cs index b3c0427bf..107b76609 100644 --- a/MediaBrowser.Providers/MusicGenres/MusicGenreMetadataService.cs +++ b/MediaBrowser.Providers/MusicGenres/MusicGenreMetadataService.cs @@ -12,19 +12,11 @@ namespace MediaBrowser.Providers.MusicGenres { public class MusicGenreMetadataService : MetadataService<MusicGenre, ItemLookupInfo> { - public MusicGenreMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public MusicGenreMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(MusicGenre source, MusicGenre target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + protected override void MergeData(MetadataResult<MusicGenre> source, MetadataResult<MusicGenre> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) { ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); } diff --git a/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs b/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs index 859a8e8e2..dffabd83c 100644 --- a/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs +++ b/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs @@ -4,17 +4,17 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Channels; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Providers; using MediaBrowser.Model.Serialization; -using MediaBrowser.Providers.Movies; -using MediaBrowser.Providers.TV; using System; using System.Collections.Generic; using System.Globalization; +using System.Linq; using System.Net; using System.Threading; using System.Threading.Tasks; @@ -22,7 +22,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.Omdb { public class OmdbItemProvider : IRemoteMetadataProvider<Series, SeriesInfo>, - IRemoteMetadataProvider<Movie, MovieInfo>, IRemoteMetadataProvider<ChannelVideoItem, ChannelItemLookupInfo> + IRemoteMetadataProvider<Movie, MovieInfo>, IRemoteMetadataProvider<ChannelVideoItem, ChannelItemLookupInfo>, IRemoteMetadataProvider<LiveTvProgram, LiveTvProgramLookupInfo> { private readonly IJsonSerializer _jsonSerializer; private readonly IHttpClient _httpClient; @@ -47,33 +47,49 @@ namespace MediaBrowser.Providers.Omdb return GetSearchResults(searchInfo, "movie", cancellationToken); } + public Task<IEnumerable<RemoteSearchResult>> GetSearchResults(LiveTvProgramLookupInfo searchInfo, CancellationToken cancellationToken) + { + if (!searchInfo.IsMovie) + { + return Task.FromResult<IEnumerable<RemoteSearchResult>>(new List<RemoteSearchResult>()); + } + + return GetSearchResults(searchInfo, "movie", cancellationToken); + } + public async Task<IEnumerable<RemoteSearchResult>> GetSearchResults(ItemLookupInfo searchInfo, string type, CancellationToken cancellationToken) { var list = new List<RemoteSearchResult>(); var imdbId = searchInfo.GetProviderId(MetadataProviders.Imdb); - if (!string.IsNullOrWhiteSpace(imdbId)) - { - return list; - } var url = "http://www.omdbapi.com/?plot=short&r=json"; var name = searchInfo.Name; var year = searchInfo.Year; - var parsedName = _libraryManager.ParseName(name); - var yearInName = parsedName.Year; - name = parsedName.Name; - year = year ?? yearInName; - - if (year.HasValue) + if (!string.IsNullOrWhiteSpace(name)) { - url += "&y=" + year.Value.ToString(CultureInfo.InvariantCulture); + var parsedName = _libraryManager.ParseName(name); + var yearInName = parsedName.Year; + name = parsedName.Name; + year = year ?? yearInName; } + + if (string.IsNullOrWhiteSpace(imdbId)) + { + if (year.HasValue) + { + url += "&y=" + year.Value.ToString(CultureInfo.InvariantCulture); + } - url += "&t=" + WebUtility.UrlEncode(name); - url += "&type=" + type; + url += "&t=" + WebUtility.UrlEncode(name); + url += "&type=" + type; + } + else + { + url += "&i=" + imdbId; + } using (var stream = await _httpClient.Get(new HttpRequestOptions { @@ -81,7 +97,7 @@ namespace MediaBrowser.Providers.Omdb ResourcePool = OmdbProvider.ResourcePool, CancellationToken = cancellationToken, CacheMode = CacheMode.Unconditional, - CacheLength = TimeSpan.FromDays(7) + CacheLength = TimeSpan.FromDays(2) }).ConfigureAwait(false)) { @@ -145,45 +161,39 @@ namespace MediaBrowser.Providers.Omdb Item = new Series() }; - var searchResult = await GetSeriesImdbId(info, cancellationToken).ConfigureAwait(false); - result.Item.Name = searchResult.Item4; - - if (!string.IsNullOrEmpty(searchResult.Item1)) - { - result.Item.SetProviderId(MetadataProviders.Imdb, searchResult.Item1); - } - - if (!string.IsNullOrEmpty(searchResult.Item2)) - { - result.Item.SetProviderId(MetadataProviders.Tmdb, searchResult.Item2); - } - - if (!string.IsNullOrEmpty(searchResult.Item3)) + var imdbId = info.GetProviderId(MetadataProviders.Imdb); + if (string.IsNullOrWhiteSpace(imdbId)) { - result.Item.SetProviderId(MetadataProviders.Tvdb, searchResult.Item3); + imdbId = await GetSeriesImdbId(info, cancellationToken).ConfigureAwait(false); } - var imdbId = result.Item.GetProviderId(MetadataProviders.Imdb); - - if (!string.IsNullOrEmpty(info.GetProviderId(MetadataProviders.Imdb))) + if (!string.IsNullOrEmpty(imdbId)) { result.Item.SetProviderId(MetadataProviders.Imdb, imdbId); result.HasMetadata = true; - await new OmdbProvider(_jsonSerializer, _httpClient).Fetch(result.Item, imdbId, cancellationToken) - .ConfigureAwait(false); + await new OmdbProvider(_jsonSerializer, _httpClient).Fetch(result.Item, imdbId, info.MetadataLanguage, cancellationToken).ConfigureAwait(false); } return result; } + public Task<MetadataResult<LiveTvProgram>> GetMetadata(LiveTvProgramLookupInfo info, CancellationToken cancellationToken) + { + if (!info.IsMovie) + { + return Task.FromResult(new MetadataResult<LiveTvProgram>()); + } + return GetMovieResult<LiveTvProgram>(info, cancellationToken); + } + public Task<MetadataResult<Movie>> GetMetadata(MovieInfo info, CancellationToken cancellationToken) { return GetMovieResult<Movie>(info, cancellationToken); } private async Task<MetadataResult<T>> GetMovieResult<T>(ItemLookupInfo info, CancellationToken cancellationToken) - where T : Video, new() + where T : BaseItem, new() { var result = new MetadataResult<T> { @@ -191,18 +201,9 @@ namespace MediaBrowser.Providers.Omdb }; var imdbId = info.GetProviderId(MetadataProviders.Imdb); - - var searchResult = await GetMovieImdbId(info, cancellationToken).ConfigureAwait(false); - result.Item.Name = searchResult.Item3; - - if (string.IsNullOrEmpty(imdbId)) + if (string.IsNullOrWhiteSpace(imdbId)) { - imdbId = searchResult.Item1; - - if (!string.IsNullOrEmpty(searchResult.Item2)) - { - result.Item.SetProviderId(MetadataProviders.Tmdb, searchResult.Item2); - } + imdbId = await GetMovieImdbId(info, cancellationToken).ConfigureAwait(false); } if (!string.IsNullOrEmpty(imdbId)) @@ -210,45 +211,24 @@ namespace MediaBrowser.Providers.Omdb result.Item.SetProviderId(MetadataProviders.Imdb, imdbId); result.HasMetadata = true; - await new OmdbProvider(_jsonSerializer, _httpClient).Fetch(result.Item, imdbId, cancellationToken) - .ConfigureAwait(false); + await new OmdbProvider(_jsonSerializer, _httpClient).Fetch(result.Item, imdbId, info.MetadataLanguage, cancellationToken).ConfigureAwait(false); } return result; } - private async Task<Tuple<string, string, string>> GetMovieImdbId(ItemLookupInfo info, CancellationToken cancellationToken) + private async Task<string> GetMovieImdbId(ItemLookupInfo info, CancellationToken cancellationToken) { - var result = await new GenericMovieDbInfo<Movie>(_logger, _jsonSerializer, _libraryManager).GetMetadata(info, cancellationToken) - .ConfigureAwait(false); - - var imdb = result.HasMetadata ? result.Item.GetProviderId(MetadataProviders.Imdb) : null; - var tmdb = result.HasMetadata ? result.Item.GetProviderId(MetadataProviders.Tmdb) : null; - var name = result.HasMetadata ? result.Item.Name : null; - - return new Tuple<string, string, string>(imdb, tmdb, name); + var results = await GetSearchResults(info, "movie", cancellationToken).ConfigureAwait(false); + var first = results.FirstOrDefault(); + return first == null ? null : first.GetProviderId(MetadataProviders.Imdb); } - private async Task<Tuple<string, string, string, string>> GetSeriesImdbId(SeriesInfo info, CancellationToken cancellationToken) + private async Task<string> GetSeriesImdbId(SeriesInfo info, CancellationToken cancellationToken) { - //var result = await TvdbSeriesProvider.Current.GetMetadata(info, cancellationToken) - // .ConfigureAwait(false); - - //var imdb = result.HasMetadata ? result.Item.GetProviderId(MetadataProviders.Imdb) : null; - //var tvdb = result.HasMetadata ? result.Item.GetProviderId(MetadataProviders.Tvdb) : null; - //var name = result.HasMetadata ? result.Item.Name : null; - - //return new Tuple<string, string, string>(imdb, tvdb, name); - - var result = await MovieDbSeriesProvider.Current.GetMetadata(info, cancellationToken) - .ConfigureAwait(false); - - var imdb = result.HasMetadata ? result.Item.GetProviderId(MetadataProviders.Imdb) : null; - var tmdb = result.HasMetadata ? result.Item.GetProviderId(MetadataProviders.Tmdb) : null; - var tvdb = result.HasMetadata ? result.Item.GetProviderId(MetadataProviders.Tvdb) : null; - var name = result.HasMetadata ? result.Item.Name : null; - - return new Tuple<string, string, string, string>(imdb, tmdb, tvdb, name); + var results = await GetSearchResults(info, cancellationToken).ConfigureAwait(false); + var first = results.FirstOrDefault(); + return first == null ? null : first.GetProviderId(MetadataProviders.Imdb); } public Task<HttpResponseInfo> GetImageResponse(string url, CancellationToken cancellationToken) diff --git a/MediaBrowser.Providers/Omdb/OmdbProvider.cs b/MediaBrowser.Providers/Omdb/OmdbProvider.cs index 2d6c0e3d7..aee1abd72 100644 --- a/MediaBrowser.Providers/Omdb/OmdbProvider.cs +++ b/MediaBrowser.Providers/Omdb/OmdbProvider.cs @@ -1,5 +1,6 @@ using MediaBrowser.Common.Net; using MediaBrowser.Controller.Entities; +using MediaBrowser.Model.Entities; using MediaBrowser.Model.Serialization; using System; using System.Globalization; @@ -27,8 +28,13 @@ namespace MediaBrowser.Providers.Omdb Current = this; } - public async Task Fetch(BaseItem item, string imdbId, CancellationToken cancellationToken) + public async Task Fetch(BaseItem item, string imdbId, string language, CancellationToken cancellationToken) { + if (string.IsNullOrWhiteSpace(imdbId)) + { + throw new ArgumentNullException("imdbId"); + } + var imdbParam = imdbId.StartsWith("tt", StringComparison.OrdinalIgnoreCase) ? imdbId : "tt" + imdbId; var url = string.Format("http://www.omdbapi.com/?i={0}&tomatoes=true", imdbParam); @@ -45,6 +51,24 @@ namespace MediaBrowser.Providers.Omdb { var result = _jsonSerializer.DeserializeFromStream<RootObject>(stream); + // Only take the name if the user's language is set to english, since Omdb has no localization + if (string.Equals(language, "en", StringComparison.OrdinalIgnoreCase)) + { + item.Name = result.Title; + } + + int year; + + if (!string.IsNullOrEmpty(result.Year) + && int.TryParse(result.Year, NumberStyles.Number, _usCulture, out year) + && year >= 0) + { + item.ProductionYear = year; + } + + item.OfficialRating = result.Rated; + + var hasCriticRating = item as IHasCriticRating; if (hasCriticRating != null) { @@ -91,6 +115,12 @@ namespace MediaBrowser.Providers.Omdb item.HomePageUrl = result.Website; } + if (!string.IsNullOrWhiteSpace(result.imdbID) + && !string.Equals(result.imdbID, "n/a", StringComparison.OrdinalIgnoreCase)) + { + item.SetProviderId(MetadataProviders.Imdb, result.imdbID); + } + ParseAdditionalMetadata(item, result); } } @@ -148,7 +178,7 @@ namespace MediaBrowser.Providers.Omdb return string.Equals(lang, "en", StringComparison.OrdinalIgnoreCase); } - public class RootObject + private class RootObject { public string Title { get; set; } public string Year { get; set; } diff --git a/MediaBrowser.Providers/People/PersonMetadataService.cs b/MediaBrowser.Providers/People/PersonMetadataService.cs index dff5a7e61..9961ff8dc 100644 --- a/MediaBrowser.Providers/People/PersonMetadataService.cs +++ b/MediaBrowser.Providers/People/PersonMetadataService.cs @@ -14,25 +14,20 @@ namespace MediaBrowser.Providers.People { public class PersonMetadataService : MetadataService<Person, PersonLookupInfo> { - public PersonMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public PersonMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(Person source, Person target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + protected override void MergeData(MetadataResult<Person> source, MetadataResult<Person> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) { ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); - if (replaceData || string.IsNullOrEmpty(target.PlaceOfBirth)) + var sourceItem = source.Item; + var targetItem = target.Item; + + if (replaceData || string.IsNullOrEmpty(targetItem.PlaceOfBirth)) { - target.PlaceOfBirth = source.PlaceOfBirth; + targetItem.PlaceOfBirth = sourceItem.PlaceOfBirth; } } } diff --git a/MediaBrowser.Providers/People/TvdbPersonImageProvider.cs b/MediaBrowser.Providers/People/TvdbPersonImageProvider.cs index 0258fd539..86e2cfaf7 100644 --- a/MediaBrowser.Providers/People/TvdbPersonImageProvider.cs +++ b/MediaBrowser.Providers/People/TvdbPersonImageProvider.cs @@ -21,13 +21,13 @@ namespace MediaBrowser.Providers.People public class TvdbPersonImageProvider : IRemoteImageProvider, IHasOrder { private readonly IServerConfigurationManager _config; - private readonly ILibraryManager _library; + private readonly ILibraryManager _libraryManager; private readonly IHttpClient _httpClient; - public TvdbPersonImageProvider(IServerConfigurationManager config, ILibraryManager library, IHttpClient httpClient) + public TvdbPersonImageProvider(IServerConfigurationManager config, ILibraryManager libraryManager, IHttpClient httpClient) { _config = config; - _library = library; + _libraryManager = libraryManager; _httpClient = httpClient; } @@ -59,9 +59,13 @@ namespace MediaBrowser.Providers.People // Avoid implicitly captured closure var itemName = item.Name; - var seriesWithPerson = _library.RootFolder - .GetRecursiveChildren(i => i is Series && !string.IsNullOrEmpty(i.GetProviderId(MetadataProviders.Tvdb)) && i.People.Any(p => string.Equals(p.Name, itemName, StringComparison.OrdinalIgnoreCase))) - .Cast<Series>() + var seriesWithPerson = _libraryManager.GetItems(new InternalItemsQuery + { + IncludeItemTypes = new[] { typeof(Series).Name }, + Person = itemName + + }).Items.Cast<Series>() + .Where(i => !string.IsNullOrEmpty(i.GetProviderId(MetadataProviders.Tvdb))) .ToList(); var infos = seriesWithPerson.Select(i => GetImageFromSeriesData(i, item.Name, cancellationToken)) diff --git a/MediaBrowser.Providers/Photos/PhotoAlbumMetadataService.cs b/MediaBrowser.Providers/Photos/PhotoAlbumMetadataService.cs index 822961d81..1c5d7f1b5 100644 --- a/MediaBrowser.Providers/Photos/PhotoAlbumMetadataService.cs +++ b/MediaBrowser.Providers/Photos/PhotoAlbumMetadataService.cs @@ -12,20 +12,11 @@ namespace MediaBrowser.Providers.Photos { class PhotoAlbumMetadataService : MetadataService<PhotoAlbum, ItemLookupInfo> { - public PhotoAlbumMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) - : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public PhotoAlbumMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(PhotoAlbum source, PhotoAlbum target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + protected override void MergeData(MetadataResult<PhotoAlbum> source, MetadataResult<PhotoAlbum> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) { ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); } diff --git a/MediaBrowser.Providers/Photos/PhotoMetadataService.cs b/MediaBrowser.Providers/Photos/PhotoMetadataService.cs index 5e903bdc3..22a60ea08 100644 --- a/MediaBrowser.Providers/Photos/PhotoMetadataService.cs +++ b/MediaBrowser.Providers/Photos/PhotoMetadataService.cs @@ -12,19 +12,11 @@ namespace MediaBrowser.Providers.Photos { class PhotoMetadataService : MetadataService<Photo, ItemLookupInfo> { - public PhotoMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public PhotoMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(Photo source, Photo target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + protected override void MergeData(MetadataResult<Photo> source, MetadataResult<Photo> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) { ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); } diff --git a/MediaBrowser.Providers/Playlists/PlaylistMetadataService.cs b/MediaBrowser.Providers/Playlists/PlaylistMetadataService.cs index c53a89db7..af4393d18 100644 --- a/MediaBrowser.Providers/Playlists/PlaylistMetadataService.cs +++ b/MediaBrowser.Providers/Playlists/PlaylistMetadataService.cs @@ -12,31 +12,26 @@ namespace MediaBrowser.Providers.Playlists { class PlaylistMetadataService : MetadataService<Playlist, ItemLookupInfo> { - public PlaylistMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public PlaylistMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(Playlist source, Playlist target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + protected override void MergeData(MetadataResult<Playlist> source, MetadataResult<Playlist> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) { ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); - if (replaceData || string.IsNullOrEmpty(target.PlaylistMediaType)) + var sourceItem = source.Item; + var targetItem = target.Item; + + if (replaceData || string.IsNullOrEmpty(targetItem.PlaylistMediaType)) { - target.PlaylistMediaType = source.PlaylistMediaType; + targetItem.PlaylistMediaType = sourceItem.PlaylistMediaType; } if (mergeMetadataSettings) { - target.LinkedChildren = source.LinkedChildren; - target.Shares = source.Shares; + targetItem.LinkedChildren = sourceItem.LinkedChildren; + targetItem.Shares = sourceItem.Shares; } } } diff --git a/MediaBrowser.Providers/Studios/StudioMetadataService.cs b/MediaBrowser.Providers/Studios/StudioMetadataService.cs index dcd90ecf6..5b273d8ca 100644 --- a/MediaBrowser.Providers/Studios/StudioMetadataService.cs +++ b/MediaBrowser.Providers/Studios/StudioMetadataService.cs @@ -14,18 +14,11 @@ namespace MediaBrowser.Providers.Studios { public class StudioMetadataService : MetadataService<Studio, ItemLookupInfo> { - public StudioMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public StudioMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - protected override void MergeData(Studio source, Studio target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + protected override void MergeData(MetadataResult<Studio> source, MetadataResult<Studio> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) { ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); } diff --git a/MediaBrowser.Providers/Subtitles/OpenSubtitleDownloader.cs b/MediaBrowser.Providers/Subtitles/OpenSubtitleDownloader.cs index 289c5661f..54db0d5fa 100644 --- a/MediaBrowser.Providers/Subtitles/OpenSubtitleDownloader.cs +++ b/MediaBrowser.Providers/Subtitles/OpenSubtitleDownloader.cs @@ -5,10 +5,11 @@ using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Security; using MediaBrowser.Controller.Subtitles; -using MediaBrowser.Model.Configuration; +using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Providers; +using MediaBrowser.Model.Serialization; using OpenSubtitlesHandler; using System; using System.Collections.Generic; @@ -38,17 +39,23 @@ namespace MediaBrowser.Providers.Subtitles // And the user may restart the server private const int MaxDownloadsPerDay = 150; - public OpenSubtitleDownloader(ILogManager logManager, IHttpClient httpClient, IServerConfigurationManager config, IEncryptionManager encryption) + private readonly IJsonSerializer _json; + + public OpenSubtitleDownloader(ILogManager logManager, IHttpClient httpClient, IServerConfigurationManager config, IEncryptionManager encryption, IJsonSerializer json) { _logger = logManager.GetLogger(GetType().Name); _httpClient = httpClient; _config = config; _encryption = encryption; + _json = json; _config.NamedConfigurationUpdating += _config_NamedConfigurationUpdating; // Reset the count every 24 hours _dailyTimer = new Timer(state => _dailyDownloadCount = 0, null, TimeSpan.FromHours(24), TimeSpan.FromHours(24)); + + Utilities.HttpClient = httpClient; + OpenSubtitles.SetUserAgent("mediabrowser.tv"); } private const string PasswordHashPrefix = "h:"; @@ -195,6 +202,26 @@ namespace MediaBrowser.Providers.Subtitles _lastLogin = DateTime.UtcNow; } + public async Task<IEnumerable<NameIdPair>> GetSupportedLanguages(CancellationToken cancellationToken) + { + await Login(cancellationToken).ConfigureAwait(false); + + var result = OpenSubtitles.GetSubLanguages("en"); + if (!(result is MethodResponseGetSubLanguages)) + { + _logger.Error("Invalid response type"); + return new List<NameIdPair>(); + } + + var results = ((MethodResponseGetSubLanguages)result).Languages; + + return results.Select(i => new NameIdPair + { + Name = i.LanguageName, + Id = i.SubLanguageID + }); + } + public async Task<IEnumerable<RemoteSubtitleInfo>> Search(SubtitleSearchRequest request, CancellationToken cancellationToken) { var imdbIdText = request.GetProviderId(MetadataProviders.Imdb); @@ -229,9 +256,6 @@ namespace MediaBrowser.Providers.Subtitles return new List<RemoteSubtitleInfo>(); } - Utilities.HttpClient = _httpClient; - OpenSubtitles.SetUserAgent("mediabrowser.tv"); - await Login(cancellationToken).ConfigureAwait(false); var subLanguageId = request.Language; @@ -260,7 +284,7 @@ namespace MediaBrowser.Providers.Subtitles var result = await OpenSubtitles.SearchSubtitlesAsync(parms.ToArray(), cancellationToken).ConfigureAwait(false); if (!(result is MethodResponseSubtitleSearch)) { - _logger.Debug("Invalid response type"); + _logger.Error("Invalid response type"); return new List<RemoteSubtitleInfo>(); } diff --git a/MediaBrowser.Providers/TV/DummySeasonProvider.cs b/MediaBrowser.Providers/TV/DummySeasonProvider.cs index fb5282551..426ff4318 100644 --- a/MediaBrowser.Providers/TV/DummySeasonProvider.cs +++ b/MediaBrowser.Providers/TV/DummySeasonProvider.cs @@ -111,10 +111,11 @@ namespace MediaBrowser.Providers.TV { Name = seasonName, IndexNumber = seasonNumber, - Parent = series, Id = (series.Id + (seasonNumber ?? -1).ToString(_usCulture) + seasonName).GetMBId(typeof(Season)) }; + season.SetParent(series); + await series.AddChild(season, cancellationToken).ConfigureAwait(false); await season.RefreshMetadata(new MetadataRefreshOptions(), cancellationToken).ConfigureAwait(false); diff --git a/MediaBrowser.Providers/TV/EpisodeMetadataService.cs b/MediaBrowser.Providers/TV/EpisodeMetadataService.cs index 616db8d86..339967eeb 100644 --- a/MediaBrowser.Providers/TV/EpisodeMetadataService.cs +++ b/MediaBrowser.Providers/TV/EpisodeMetadataService.cs @@ -12,55 +12,50 @@ namespace MediaBrowser.Providers.TV { public class EpisodeMetadataService : MetadataService<Episode, EpisodeInfo> { - public EpisodeMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public EpisodeMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(Episode source, Episode target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + protected override void MergeData(MetadataResult<Episode> source, MetadataResult<Episode> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) { ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); - if (replaceData || !target.AirsBeforeSeasonNumber.HasValue) + var sourceItem = source.Item; + var targetItem = target.Item; + + if (replaceData || !targetItem.AirsBeforeSeasonNumber.HasValue) { - target.AirsBeforeSeasonNumber = source.AirsBeforeSeasonNumber; + targetItem.AirsBeforeSeasonNumber = sourceItem.AirsBeforeSeasonNumber; } - if (replaceData || !target.AirsAfterSeasonNumber.HasValue) + if (replaceData || !targetItem.AirsAfterSeasonNumber.HasValue) { - target.AirsAfterSeasonNumber = source.AirsAfterSeasonNumber; + targetItem.AirsAfterSeasonNumber = sourceItem.AirsAfterSeasonNumber; } - if (replaceData || !target.AirsBeforeEpisodeNumber.HasValue) + if (replaceData || !targetItem.AirsBeforeEpisodeNumber.HasValue) { - target.AirsBeforeEpisodeNumber = source.AirsBeforeEpisodeNumber; + targetItem.AirsBeforeEpisodeNumber = sourceItem.AirsBeforeEpisodeNumber; } - if (replaceData || !target.DvdSeasonNumber.HasValue) + if (replaceData || !targetItem.DvdSeasonNumber.HasValue) { - target.DvdSeasonNumber = source.DvdSeasonNumber; + targetItem.DvdSeasonNumber = sourceItem.DvdSeasonNumber; } - if (replaceData || !target.DvdEpisodeNumber.HasValue) + if (replaceData || !targetItem.DvdEpisodeNumber.HasValue) { - target.DvdEpisodeNumber = source.DvdEpisodeNumber; + targetItem.DvdEpisodeNumber = sourceItem.DvdEpisodeNumber; } - if (replaceData || !target.AbsoluteEpisodeNumber.HasValue) + if (replaceData || !targetItem.AbsoluteEpisodeNumber.HasValue) { - target.AbsoluteEpisodeNumber = source.AbsoluteEpisodeNumber; + targetItem.AbsoluteEpisodeNumber = sourceItem.AbsoluteEpisodeNumber; } - if (replaceData || !target.IndexNumberEnd.HasValue) + if (replaceData || !targetItem.IndexNumberEnd.HasValue) { - target.IndexNumberEnd = source.IndexNumberEnd; + targetItem.IndexNumberEnd = sourceItem.IndexNumberEnd; } } } diff --git a/MediaBrowser.Providers/TV/FanArtTvUpdatesPostScanTask.cs b/MediaBrowser.Providers/TV/FanArtTvUpdatesPostScanTask.cs index 115b80434..64c6488fb 100644 --- a/MediaBrowser.Providers/TV/FanArtTvUpdatesPostScanTask.cs +++ b/MediaBrowser.Providers/TV/FanArtTvUpdatesPostScanTask.cs @@ -130,7 +130,7 @@ namespace MediaBrowser.Providers.TV { var json = await reader.ReadToEndAsync().ConfigureAwait(false); - if (string.Equals(json, "null", StringComparison.OrdinalIgnoreCase)) + if (string.Equals(json, "null", StringComparison.OrdinalIgnoreCase) || string.IsNullOrWhiteSpace(json)) { return new List<string>(); } diff --git a/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs b/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs index d45128288..957345607 100644 --- a/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs +++ b/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs @@ -406,10 +406,11 @@ namespace MediaBrowser.Providers.TV Name = name, IndexNumber = episodeNumber, ParentIndexNumber = seasonNumber, - Parent = season, Id = (series.Id + seasonNumber.ToString(_usCulture) + name).GetMBId(typeof(Episode)) }; + episode.SetParent(season); + await season.AddChild(episode, cancellationToken).ConfigureAwait(false); await episode.RefreshMetadata(new MetadataRefreshOptions diff --git a/MediaBrowser.Providers/TV/SeasonMetadataService.cs b/MediaBrowser.Providers/TV/SeasonMetadataService.cs index 8955b224e..800960c09 100644 --- a/MediaBrowser.Providers/TV/SeasonMetadataService.cs +++ b/MediaBrowser.Providers/TV/SeasonMetadataService.cs @@ -14,23 +14,10 @@ namespace MediaBrowser.Providers.TV { public class SeasonMetadataService : MetadataService<Season, SeasonInfo> { - public SeasonMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public SeasonMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(Season source, Season target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) - { - ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); - } - protected override async Task<ItemUpdateType> BeforeSave(Season item, bool isFullRefresh, ItemUpdateType currentUpdateType) { var updateType = await base.BeforeSave(item, isFullRefresh, currentUpdateType).ConfigureAwait(false); @@ -46,5 +33,10 @@ namespace MediaBrowser.Providers.TV return updateType; } + + protected override void MergeData(MetadataResult<Season> source, MetadataResult<Season> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + { + ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); + } } } diff --git a/MediaBrowser.Providers/TV/SeriesMetadataService.cs b/MediaBrowser.Providers/TV/SeriesMetadataService.cs index eeff03703..0b2aaa5a0 100644 --- a/MediaBrowser.Providers/TV/SeriesMetadataService.cs +++ b/MediaBrowser.Providers/TV/SeriesMetadataService.cs @@ -7,6 +7,7 @@ using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using MediaBrowser.Providers.Manager; +using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; @@ -16,76 +17,75 @@ namespace MediaBrowser.Providers.TV public class SeriesMetadataService : MetadataService<Series, SeriesInfo> { private readonly ILocalizationManager _localization; - private readonly ILibraryManager _libraryManager; - public SeriesMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILocalizationManager localization, ILibraryManager libraryManager) - : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public SeriesMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager, ILocalizationManager localization) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { _localization = localization; - _libraryManager = libraryManager; } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(Series source, Series target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + protected override async Task AfterMetadataRefresh(Series item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken) { - ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); + await base.AfterMetadataRefresh(item, refreshOptions, cancellationToken).ConfigureAwait(false); - if (replaceData || target.SeasonCount == 0) + if (refreshOptions.IsPostRecursiveRefresh) { - target.SeasonCount = source.SeasonCount; + var provider = new DummySeasonProvider(ServerConfigurationManager, Logger, _localization, LibraryManager); + + try + { + await provider.Run(item, CancellationToken.None).ConfigureAwait(false); + } + catch (Exception ex) + { + Logger.ErrorException("Error in DummySeasonProvider", ex); + } } + } - if (replaceData || string.IsNullOrEmpty(target.AirTime)) + protected override bool IsFullLocalMetadata(Series item) + { + if (string.IsNullOrWhiteSpace(item.Overview)) { - target.AirTime = source.AirTime; + return false; } - - if (replaceData || !target.Status.HasValue) + if (!item.ProductionYear.HasValue) { - target.Status = source.Status; + return false; } + return base.IsFullLocalMetadata(item); + } + + protected override void MergeData(MetadataResult<Series> source, MetadataResult<Series> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + { + ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); + + var sourceItem = source.Item; + var targetItem = target.Item; - if (replaceData || target.AirDays == null || target.AirDays.Count == 0) + if (replaceData || targetItem.SeasonCount == 0) { - target.AirDays = source.AirDays; + targetItem.SeasonCount = sourceItem.SeasonCount; } - if (mergeMetadataSettings) + if (replaceData || string.IsNullOrEmpty(targetItem.AirTime)) { - target.DisplaySpecialsWithSeasons = source.DisplaySpecialsWithSeasons; + targetItem.AirTime = sourceItem.AirTime; } - } - protected override async Task AfterMetadataRefresh(Series item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken) - { - await base.AfterMetadataRefresh(item, refreshOptions, cancellationToken).ConfigureAwait(false); - - if (refreshOptions.IsPostRecursiveRefresh) + if (replaceData || !targetItem.Status.HasValue) { - var provider = new DummySeasonProvider(ServerConfigurationManager, Logger, _localization, _libraryManager); - - await provider.Run(item, CancellationToken.None).ConfigureAwait(false); + targetItem.Status = sourceItem.Status; } - } - protected override bool IsFullLocalMetadata(Series item) - { - if (string.IsNullOrWhiteSpace(item.Overview)) + if (replaceData || targetItem.AirDays == null || targetItem.AirDays.Count == 0) { - return false; + targetItem.AirDays = sourceItem.AirDays; } - if (!item.ProductionYear.HasValue) + + if (mergeMetadataSettings) { - return false; + targetItem.DisplaySpecialsWithSeasons = sourceItem.DisplaySpecialsWithSeasons; } - return base.IsFullLocalMetadata(item); } } } diff --git a/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs b/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs index 68601b6b2..f36de88c9 100644 --- a/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs +++ b/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs @@ -56,10 +56,12 @@ namespace MediaBrowser.Providers.TV try { - var item = FetchEpisodeData(searchInfo, identity, seriesDataPath, searchInfo.SeriesProviderIds, cancellationToken); + var metadataResult = FetchEpisodeData(searchInfo, identity, seriesDataPath, searchInfo.SeriesProviderIds, cancellationToken); - if (item != null) + if (metadataResult.HasMetadata) { + var item = metadataResult.Item; + list.Add(new RemoteSearchResult { IndexNumber = item.IndexNumber, @@ -103,9 +105,7 @@ namespace MediaBrowser.Providers.TV try { - result.Item = FetchEpisodeData(searchInfo, identity, seriesDataPath, searchInfo.SeriesProviderIds, - cancellationToken); - result.HasMetadata = result.Item != null; + result = FetchEpisodeData(searchInfo, identity, seriesDataPath, searchInfo.SeriesProviderIds, cancellationToken); } catch (FileNotFoundException) { @@ -231,21 +231,23 @@ namespace MediaBrowser.Providers.TV /// <param name="seriesProviderIds">The series provider ids.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task{System.Boolean}.</returns> - private Episode FetchEpisodeData(EpisodeInfo id, EpisodeIdentity identity, string seriesDataPath, Dictionary<string, string> seriesProviderIds, CancellationToken cancellationToken) + private MetadataResult<Episode> FetchEpisodeData(EpisodeInfo id, EpisodeIdentity identity, string seriesDataPath, Dictionary<string, string> seriesProviderIds, CancellationToken cancellationToken) { var episodeNumber = identity.IndexNumber; var seasonOffset = TvdbSeriesProvider.GetSeriesOffset(seriesProviderIds) ?? 0; var seasonNumber = identity.SeasonIndex + seasonOffset; string file; - var success = false; var usingAbsoluteData = false; - var episode = new Episode + var result = new MetadataResult<Episode>() { - IndexNumber = id.IndexNumber, - ParentIndexNumber = id.ParentIndexNumber, - IndexNumberEnd = id.IndexNumberEnd + Item = new Episode + { + IndexNumber = id.IndexNumber, + ParentIndexNumber = id.ParentIndexNumber, + IndexNumberEnd = id.IndexNumberEnd + } }; try @@ -253,9 +255,9 @@ namespace MediaBrowser.Providers.TV if (seasonNumber != null) { file = Path.Combine(seriesDataPath, string.Format("episode-{0}-{1}.xml", seasonNumber.Value, episodeNumber)); - FetchMainEpisodeInfo(episode, file, cancellationToken); + FetchMainEpisodeInfo(result, file, cancellationToken); - success = true; + result.HasMetadata = true; } } catch (FileNotFoundException) @@ -267,11 +269,12 @@ namespace MediaBrowser.Providers.TV } } - if (!success) + if (!result.HasMetadata) { file = Path.Combine(seriesDataPath, string.Format("episode-abs-{0}.xml", episodeNumber)); - FetchMainEpisodeInfo(episode, file, cancellationToken); + FetchMainEpisodeInfo(result, file, cancellationToken); + result.HasMetadata = true; usingAbsoluteData = true; } @@ -291,7 +294,7 @@ namespace MediaBrowser.Providers.TV try { - FetchAdditionalPartInfo(episode, file, cancellationToken); + FetchAdditionalPartInfo(result, file, cancellationToken); } catch (FileNotFoundException) { @@ -305,20 +308,17 @@ namespace MediaBrowser.Providers.TV episodeNumber++; } - return episode; + return result; } private readonly CultureInfo _usCulture = new CultureInfo("en-US"); - private void FetchMainEpisodeInfo(Episode item, string xmlFile, CancellationToken cancellationToken) + private void FetchMainEpisodeInfo(MetadataResult<Episode> result, string xmlFile, CancellationToken cancellationToken) { + var item = result.Item; + using (var streamReader = new StreamReader(xmlFile, Encoding.UTF8)) { - if (!item.LockedFields.Contains(MetadataFields.Cast)) - { - item.People.Clear(); - } - // Use XmlReader for best performance using (var reader = XmlReader.Create(streamReader, new XmlReaderSettings { @@ -551,7 +551,7 @@ namespace MediaBrowser.Providers.TV { if (!item.LockedFields.Contains(MetadataFields.Cast)) { - AddPeople(item, val, PersonType.Director); + AddPeople(result, val, PersonType.Director); } } @@ -565,7 +565,7 @@ namespace MediaBrowser.Providers.TV { if (!item.LockedFields.Contains(MetadataFields.Cast)) { - AddGuestStars(item, val); + AddGuestStars(result, val); } } @@ -579,7 +579,7 @@ namespace MediaBrowser.Providers.TV { if (!item.LockedFields.Contains(MetadataFields.Cast)) { - AddPeople(item, val, PersonType.Writer); + AddPeople(result, val, PersonType.Writer); } } @@ -596,18 +596,19 @@ namespace MediaBrowser.Providers.TV } } - private void AddPeople(BaseItem item, string val, string personType) + private void AddPeople<T>(MetadataResult<T> result, string val, string personType) { // Sometimes tvdb actors have leading spaces foreach (var person in val.Split(new[] { '|', ',' }, StringSplitOptions.RemoveEmptyEntries) .Where(i => !string.IsNullOrWhiteSpace(i)) .Select(str => new PersonInfo { Type = personType, Name = str.Trim() })) { - item.AddPerson(person); + PeopleHelper.AddPerson(result.People, person); } } - private void AddGuestStars(BaseItem item, string val) + private void AddGuestStars<T>(MetadataResult<T> result, string val) + where T : BaseItem { // Sometimes tvdb actors have leading spaces //Regex Info: @@ -631,13 +632,15 @@ namespace MediaBrowser.Providers.TV { if (!string.IsNullOrWhiteSpace(person.Name)) { - item.AddPerson(person); + PeopleHelper.AddPerson(result.People, person); } } } - private void FetchAdditionalPartInfo(Episode item, string xmlFile, CancellationToken cancellationToken) + private void FetchAdditionalPartInfo(MetadataResult<Episode> result, string xmlFile, CancellationToken cancellationToken) { + var item = result.Item; + using (var streamReader = new StreamReader(xmlFile, Encoding.UTF8)) { // Use XmlReader for best performance @@ -693,7 +696,7 @@ namespace MediaBrowser.Providers.TV { if (!item.LockedFields.Contains(MetadataFields.Cast)) { - AddPeople(item, val, PersonType.Director); + AddPeople(result, val, PersonType.Director); } } @@ -707,7 +710,7 @@ namespace MediaBrowser.Providers.TV { if (!item.LockedFields.Contains(MetadataFields.Cast)) { - AddGuestStars(item, val); + AddGuestStars(result, val); } } @@ -721,7 +724,7 @@ namespace MediaBrowser.Providers.TV { if (!item.LockedFields.Contains(MetadataFields.Cast)) { - AddPeople(item, val, PersonType.Writer); + AddPeople(result, val, PersonType.Writer); } } diff --git a/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs b/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs index a31cc1e0c..4c93bd57c 100644 --- a/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs +++ b/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs @@ -121,7 +121,7 @@ namespace MediaBrowser.Providers.TV result.Item = new Series(); result.HasMetadata = true; - FetchSeriesData(result.Item, seriesId, cancellationToken); + FetchSeriesData(result, seriesId, cancellationToken); await FindAnimeSeriesIndex(result.Item, itemId).ConfigureAwait(false); } @@ -159,12 +159,14 @@ namespace MediaBrowser.Providers.TV /// <summary> /// Fetches the series data. /// </summary> - /// <param name="series">The series.</param> + /// <param name="result">The result.</param> /// <param name="seriesId">The series id.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task{System.Boolean}.</returns> - private void FetchSeriesData(Series series, string seriesId, CancellationToken cancellationToken) + private void FetchSeriesData(MetadataResult<Series> result, string seriesId, CancellationToken cancellationToken) { + var series = result.Item; + series.SetProviderId(MetadataProviders.Tvdb, seriesId); var seriesDataPath = GetSeriesDataPath(_config.ApplicationPaths, seriesId); @@ -178,7 +180,7 @@ namespace MediaBrowser.Providers.TV cancellationToken.ThrowIfCancellationRequested(); - FetchActors(series, actorsXmlPath); + FetchActors(result, actorsXmlPath); } /// <summary> @@ -398,28 +400,32 @@ namespace MediaBrowser.Providers.TV } } - if (titles.Any(t => string.Equals(t, comparableName, StringComparison.OrdinalIgnoreCase))) + foreach (var title in titles) { - var id = node.SelectSingleNode("./seriesid") ?? - node.SelectSingleNode("./id"); - - if (id != null) + if (string.Equals(title, comparableName, StringComparison.OrdinalIgnoreCase)) { - searchResult.Name = titles.FirstOrDefault(); - searchResult.SetProviderId(MetadataProviders.Tvdb, id.InnerText); - searchResults.Add(searchResult); - } - } + var id = node.SelectSingleNode("./seriesid") ?? + node.SelectSingleNode("./id"); - foreach (var title in titles) - { + if (id != null) + { + searchResult.Name = title; + searchResult.SetProviderId(MetadataProviders.Tvdb, id.InnerText); + searchResults.Add(searchResult); + } + break; + } _logger.Info("TVDb Provider - " + title + " did not match " + comparableName); } } } } - _logger.Info("TVDb Provider - Could not find " + name + ". Check name on Thetvdb.org."); + if (searchResults.Count == 0) + { + _logger.Info("TVDb Provider - Could not find " + name + ". Check name on Thetvdb.org."); + } + return searchResults; } @@ -614,9 +620,9 @@ namespace MediaBrowser.Providers.TV /// <summary> /// Fetches the actors. /// </summary> - /// <param name="series">The series.</param> + /// <param name="result">The result.</param> /// <param name="actorsXmlPath">The actors XML path.</param> - private void FetchActors(Series series, string actorsXmlPath) + private void FetchActors(MetadataResult<Series> result, string actorsXmlPath) { var settings = new XmlReaderSettings { @@ -644,7 +650,7 @@ namespace MediaBrowser.Providers.TV { using (var subtree = reader.ReadSubtree()) { - FetchDataFromActorNode(series, subtree); + FetchDataFromActorNode(result, subtree); } break; } @@ -661,9 +667,9 @@ namespace MediaBrowser.Providers.TV /// <summary> /// Fetches the data from actor node. /// </summary> - /// <param name="series">The series.</param> + /// <param name="result">The result.</param> /// <param name="reader">The reader.</param> - private void FetchDataFromActorNode(Series series, XmlReader reader) + private void FetchDataFromActorNode(MetadataResult<Series> result, XmlReader reader) { reader.MoveToContent(); @@ -715,7 +721,7 @@ namespace MediaBrowser.Providers.TV if (!string.IsNullOrWhiteSpace(personInfo.Name)) { - series.AddPerson(personInfo); + PeopleHelper.AddPerson(result.People, personInfo); } } diff --git a/MediaBrowser.Providers/Users/UserMetadataService.cs b/MediaBrowser.Providers/Users/UserMetadataService.cs index 4062c5b9f..84f2b0380 100644 --- a/MediaBrowser.Providers/Users/UserMetadataService.cs +++ b/MediaBrowser.Providers/Users/UserMetadataService.cs @@ -14,19 +14,11 @@ namespace MediaBrowser.Providers.Users { public class UserMetadataService : MetadataService<User, ItemLookupInfo> { - public UserMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public UserMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(User source, User target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + protected override void MergeData(MetadataResult<User> source, MetadataResult<User> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) { ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); } diff --git a/MediaBrowser.Providers/Videos/VideoMetadataService.cs b/MediaBrowser.Providers/Videos/VideoMetadataService.cs index 4fed9cff4..68c36a84c 100644 --- a/MediaBrowser.Providers/Videos/VideoMetadataService.cs +++ b/MediaBrowser.Providers/Videos/VideoMetadataService.cs @@ -7,30 +7,15 @@ using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using MediaBrowser.Providers.Manager; using System.Collections.Generic; -using System.Threading; -using System.Threading.Tasks; namespace MediaBrowser.Providers.Videos { public class VideoMetadataService : MetadataService<Video, ItemLookupInfo> { - public VideoMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public VideoMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(Video source, Video target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) - { - ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); - } - public override int Order { get @@ -39,5 +24,10 @@ namespace MediaBrowser.Providers.Videos return 10; } } + + protected override void MergeData(MetadataResult<Video> source, MetadataResult<Video> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + { + ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); + } } } diff --git a/MediaBrowser.Providers/Years/YearMetadataService.cs b/MediaBrowser.Providers/Years/YearMetadataService.cs index 057434db0..3e6db7629 100644 --- a/MediaBrowser.Providers/Years/YearMetadataService.cs +++ b/MediaBrowser.Providers/Years/YearMetadataService.cs @@ -14,19 +14,11 @@ namespace MediaBrowser.Providers.Years { public class YearMetadataService : MetadataService<Year, ItemLookupInfo> { - public YearMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public YearMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager, libraryManager) { } - /// <summary> - /// Merges the specified source. - /// </summary> - /// <param name="source">The source.</param> - /// <param name="target">The target.</param> - /// <param name="lockedFields">The locked fields.</param> - /// <param name="replaceData">if set to <c>true</c> [replace data].</param> - /// <param name="mergeMetadataSettings">if set to <c>true</c> [merge metadata settings].</param> - protected override void MergeData(Year source, Year target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) + protected override void MergeData(MetadataResult<Year> source, MetadataResult<Year> target, List<MetadataFields> lockedFields, bool replaceData, bool mergeMetadataSettings) { ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); } diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs index 6a0e1208a..0cd4b0a5c 100644 --- a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs +++ b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs @@ -1237,7 +1237,6 @@ namespace MediaBrowser.Server.Implementations.Channels item.Overview = info.Overview; item.IndexNumber = info.IndexNumber; item.ParentIndexNumber = info.ParentIndexNumber; - item.People = info.People; item.PremiereDate = info.PremiereDate; item.ProductionYear = info.ProductionYear; item.ProviderIds = info.ProviderIds; @@ -1277,6 +1276,8 @@ namespace MediaBrowser.Server.Implementations.Channels { await _libraryManager.CreateItem(item, cancellationToken).ConfigureAwait(false); _libraryManager.RegisterItem(item); + + await _libraryManager.UpdatePeople(item, info.People ?? new List<PersonInfo>()).ConfigureAwait(false); } return item; diff --git a/MediaBrowser.Server.Implementations/Collections/CollectionManager.cs b/MediaBrowser.Server.Implementations/Collections/CollectionManager.cs index 796d5f651..04f82db6f 100644 --- a/MediaBrowser.Server.Implementations/Collections/CollectionManager.cs +++ b/MediaBrowser.Server.Implementations/Collections/CollectionManager.cs @@ -75,7 +75,6 @@ namespace MediaBrowser.Server.Implementations.Collections var collection = new BoxSet { Name = name, - Parent = parentFolder, Path = path, IsLocked = options.IsLocked, ProviderIds = options.ProviderIds, diff --git a/MediaBrowser.Server.Implementations/Connect/ConnectEntryPoint.cs b/MediaBrowser.Server.Implementations/Connect/ConnectEntryPoint.cs index 52ec5c9b1..973519a77 100644 --- a/MediaBrowser.Server.Implementations/Connect/ConnectEntryPoint.cs +++ b/MediaBrowser.Server.Implementations/Connect/ConnectEntryPoint.cs @@ -1,8 +1,10 @@ -using MediaBrowser.Common.Configuration; +using MediaBrowser.Common; +using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Net; using MediaBrowser.Controller.Connect; using MediaBrowser.Controller.Plugins; using MediaBrowser.Model.Logging; +using MediaBrowser.Model.Net; using System; using System.IO; using System.Net; @@ -20,14 +22,16 @@ namespace MediaBrowser.Server.Implementations.Connect private readonly IConnectManager _connectManager; private readonly INetworkManager _networkManager; + private readonly IApplicationHost _appHost; - public ConnectEntryPoint(IHttpClient httpClient, IApplicationPaths appPaths, ILogger logger, INetworkManager networkManager, IConnectManager connectManager) + public ConnectEntryPoint(IHttpClient httpClient, IApplicationPaths appPaths, ILogger logger, INetworkManager networkManager, IConnectManager connectManager, IApplicationHost appHost) { _httpClient = httpClient; _appPaths = appPaths; _logger = logger; _networkManager = networkManager; _connectManager = connectManager; + _appHost = appHost; } public void Run() @@ -37,30 +41,41 @@ namespace MediaBrowser.Server.Implementations.Connect _timer = new Timer(TimerCallback, null, TimeSpan.FromSeconds(5), TimeSpan.FromHours(3)); } + private readonly string[] _ipLookups = { "http://bot.whatismyipaddress.com", "https://connect.mediabrowser.tv/service/ip" }; + private async void TimerCallback(object state) { - try + foreach (var ipLookupUrl in _ipLookups) { - using (var stream = await _httpClient.Get(new HttpRequestOptions - { - Url = "http://bot.whatismyipaddress.com/" - - }).ConfigureAwait(false)) + try { - using (var reader = new StreamReader(stream)) + using (var stream = await _httpClient.Get(new HttpRequestOptions { - var address = await reader.ReadToEndAsync().ConfigureAwait(false); + Url = ipLookupUrl, + UserAgent = "Emby Server/" + _appHost.ApplicationVersion - if (IsValid(address)) + }).ConfigureAwait(false)) + { + using (var reader = new StreamReader(stream)) { - ((ConnectManager) _connectManager).OnWanAddressResolved(address); - CacheAddress(address); + var address = await reader.ReadToEndAsync().ConfigureAwait(false); + + if (IsValid(address)) + { + ((ConnectManager)_connectManager).OnWanAddressResolved(address); + CacheAddress(address); + return; + } } } } - } - catch - { + catch (HttpException) + { + } + catch (Exception ex) + { + _logger.ErrorException("Error getting connection info", ex); + } } } @@ -110,7 +125,14 @@ namespace MediaBrowser.Server.Implementations.Connect private bool IsValid(string address) { IPAddress ipAddress; - return IPAddress.TryParse(address, out ipAddress); + var valid = IPAddress.TryParse(address, out ipAddress); + + if (!valid) + { + _logger.Error("{0} is not a valid ip address", address); + } + + return valid; } public void Dispose() diff --git a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs index 2d39f760e..4569503c0 100644 --- a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs +++ b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs @@ -130,7 +130,7 @@ namespace MediaBrowser.Server.Implementations.Connect UpdateConnectInfo(); } - private async void UpdateConnectInfo() + private async Task UpdateConnectInfo() { await _operationLock.WaitAsync().ConfigureAwait(false); @@ -376,6 +376,11 @@ namespace MediaBrowser.Server.Implementations.Connect public async Task<UserLinkResult> LinkUser(string userId, string connectUsername) { + if (string.IsNullOrWhiteSpace(ConnectServerId)) + { + await UpdateConnectInfo().ConfigureAwait(false); + } + await _operationLock.WaitAsync().ConfigureAwait(false); try @@ -470,6 +475,11 @@ namespace MediaBrowser.Server.Implementations.Connect public async Task<UserLinkResult> InviteUser(ConnectAuthorizationRequest request) { + if (string.IsNullOrWhiteSpace(ConnectServerId)) + { + await UpdateConnectInfo().ConfigureAwait(false); + } + await _operationLock.WaitAsync().ConfigureAwait(false); try diff --git a/MediaBrowser.Server.Implementations/Devices/DeviceManager.cs b/MediaBrowser.Server.Implementations/Devices/DeviceManager.cs index b65b7d11b..04337dda6 100644 --- a/MediaBrowser.Server.Implementations/Devices/DeviceManager.cs +++ b/MediaBrowser.Server.Implementations/Devices/DeviceManager.cs @@ -1,6 +1,7 @@ using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Events; using MediaBrowser.Common.IO; +using MediaBrowser.Common.Net; using MediaBrowser.Controller.Devices; using MediaBrowser.Controller.Library; using MediaBrowser.Model.Devices; @@ -26,6 +27,7 @@ namespace MediaBrowser.Server.Implementations.Devices private readonly ILibraryMonitor _libraryMonitor; private readonly IConfigurationManager _config; private readonly ILogger _logger; + private readonly INetworkManager _network; public event EventHandler<GenericEventArgs<CameraImageUploadInfo>> CameraImageUploaded; @@ -34,7 +36,7 @@ namespace MediaBrowser.Server.Implementations.Devices /// </summary> public event EventHandler<GenericEventArgs<DeviceInfo>> DeviceOptionsUpdated; - public DeviceManager(IDeviceRepository repo, IUserManager userManager, IFileSystem fileSystem, ILibraryMonitor libraryMonitor, IConfigurationManager config, ILogger logger) + public DeviceManager(IDeviceRepository repo, IUserManager userManager, IFileSystem fileSystem, ILibraryMonitor libraryMonitor, IConfigurationManager config, ILogger logger, INetworkManager network) { _repo = repo; _userManager = userManager; @@ -42,6 +44,7 @@ namespace MediaBrowser.Server.Implementations.Devices _libraryMonitor = libraryMonitor; _config = config; _logger = logger; + _network = network; } public async Task<DeviceInfo> RegisterDevice(string reportedId, string name, string appName, string appVersion, string usedByUserId) @@ -233,6 +236,12 @@ namespace MediaBrowser.Server.Implementations.Devices } var user = _userManager.GetUserById(userId); + + if (user == null) + { + throw new ArgumentException("user not found"); + } + if (!CanAccessDevice(user.Policy, deviceId)) { var capabilities = GetCapabilities(deviceId); diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs index 1b55f47d5..bdc758d8e 100644 --- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs +++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs @@ -46,8 +46,9 @@ namespace MediaBrowser.Server.Implementations.Dto private readonly IApplicationHost _appHost; private readonly Func<IDeviceManager> _deviceManager; private readonly Func<IMediaSourceManager> _mediaSourceManager; + private readonly Func<ILiveTvManager> _livetvManager; - public DtoService(ILogger logger, ILibraryManager libraryManager, IUserDataManager userDataRepository, IItemRepository itemRepo, IImageProcessor imageProcessor, IServerConfigurationManager config, IFileSystem fileSystem, IProviderManager providerManager, Func<IChannelManager> channelManagerFactory, ISyncManager syncManager, IApplicationHost appHost, Func<IDeviceManager> deviceManager, Func<IMediaSourceManager> mediaSourceManager) + public DtoService(ILogger logger, ILibraryManager libraryManager, IUserDataManager userDataRepository, IItemRepository itemRepo, IImageProcessor imageProcessor, IServerConfigurationManager config, IFileSystem fileSystem, IProviderManager providerManager, Func<IChannelManager> channelManagerFactory, ISyncManager syncManager, IApplicationHost appHost, Func<IDeviceManager> deviceManager, Func<IMediaSourceManager> mediaSourceManager, Func<ILiveTvManager> livetvManager) { _logger = logger; _libraryManager = libraryManager; @@ -62,6 +63,7 @@ namespace MediaBrowser.Server.Implementations.Dto _appHost = appHost; _deviceManager = deviceManager; _mediaSourceManager = mediaSourceManager; + _livetvManager = livetvManager; } /// <summary> @@ -85,13 +87,14 @@ namespace MediaBrowser.Server.Implementations.Dto public IEnumerable<BaseItemDto> GetBaseItemDtos(IEnumerable<BaseItem> items, DtoOptions options, User user = null, BaseItem owner = null) { - var tuple = GetItemIdsWithSyncJobs(options); + var syncJobItems = GetSyncedItemProgress(options); + var syncDictionary = syncJobItems.ToDictionary(i => i.ItemId); var list = new List<BaseItemDto>(); foreach (var item in items) { - var dto = GetBaseItemDtoInternal(item, options, user, owner); + var dto = GetBaseItemDtoInternal(item, options, syncDictionary, user, owner); var byName = item as IItemByName; @@ -109,7 +112,7 @@ namespace MediaBrowser.Server.Implementations.Dto } } - FillSyncInfo(dto, item, tuple.Item1, tuple.Item2, options, user); + FillSyncInfo(dto, item, syncJobItems, options, user); list.Add(dto); } @@ -119,7 +122,9 @@ namespace MediaBrowser.Server.Implementations.Dto public BaseItemDto GetBaseItemDto(BaseItem item, DtoOptions options, User user = null, BaseItem owner = null) { - var dto = GetBaseItemDtoInternal(item, options, user, owner); + var syncProgress = GetSyncedItemProgress(options); + + var dto = GetBaseItemDtoInternal(item, options, syncProgress.ToDictionary(i => i.ItemId), user, owner); var byName = item as IItemByName; @@ -127,44 +132,65 @@ namespace MediaBrowser.Server.Implementations.Dto { if (options.Fields.Contains(ItemFields.ItemCounts)) { - var itemFilter = byName.GetItemFilter(); - - var libraryItems = user != null ? - user.RootFolder.GetRecursiveChildren(user, itemFilter) : - _libraryManager.RootFolder.GetRecursiveChildren(itemFilter); - - SetItemByNameInfo(item, dto, libraryItems.ToList(), user); + SetItemByNameInfo(item, dto, GetTaggedItems(byName, user), user); } - FillSyncInfo(dto, item, options, user); + FillSyncInfo(dto, item, options, user, syncProgress); return dto; } - FillSyncInfo(dto, item, options, user); + FillSyncInfo(dto, item, options, user, syncProgress); return dto; } - private Tuple<IEnumerable<string>, IEnumerable<string>> GetItemIdsWithSyncJobs(DtoOptions options) + private List<BaseItem> GetTaggedItems(IItemByName byName, User user) + { + var person = byName as Person; + + if (person != null) + { + var items = _libraryManager.GetItems(new InternalItemsQuery + { + Person = byName.Name + + }).Items; + + if (user != null) + { + return items.Where(i => i.IsVisibleStandalone(user)).ToList(); + } + + return items.ToList(); + } + + var itemFilter = byName.GetItemFilter(); + + return user != null ? + user.RootFolder.GetRecursiveChildren(user, itemFilter).ToList() : + _libraryManager.RootFolder.GetRecursiveChildren(itemFilter).ToList(); + } + + private SyncedItemProgress[] GetSyncedItemProgress(DtoOptions options) { if (!options.Fields.Contains(ItemFields.SyncInfo)) { - return new Tuple<IEnumerable<string>, IEnumerable<string>>(new List<string>(), new List<string>()); + return new SyncedItemProgress[]{}; } var deviceId = options.DeviceId; if (string.IsNullOrWhiteSpace(deviceId)) { - return new Tuple<IEnumerable<string>, IEnumerable<string>>(new List<string>(), new List<string>()); + return new SyncedItemProgress[] { }; } var caps = _deviceManager().GetCapabilities(deviceId); if (caps == null || !caps.SupportsSync) { - return new Tuple<IEnumerable<string>, IEnumerable<string>>(new List<string>(), new List<string>()); + return new SyncedItemProgress[] { }; } - var result1 = _syncManager.GetLibraryItemIds(new SyncJobItemQuery + return _syncManager.GetSyncedItemProgresses(new SyncJobItemQuery { TargetId = deviceId, Statuses = new[] @@ -172,38 +198,28 @@ namespace MediaBrowser.Server.Implementations.Dto SyncJobItemStatus.Converting, SyncJobItemStatus.Queued, SyncJobItemStatus.Transferring, - SyncJobItemStatus.ReadyToTransfer - } - }); - - var result2 = _syncManager.GetLibraryItemIds(new SyncJobItemQuery - { - TargetId = deviceId, - Statuses = new[] - { + SyncJobItemStatus.ReadyToTransfer, SyncJobItemStatus.Synced } - }); - - return new Tuple<IEnumerable<string>, IEnumerable<string>>(result1.Items, result2.Items); + }).Items; } public void FillSyncInfo(IEnumerable<IHasSyncInfo> dtos, DtoOptions options, User user) { if (options.Fields.Contains(ItemFields.SyncInfo)) { - var tuple = GetItemIdsWithSyncJobs(options); + var syncProgress = GetSyncedItemProgress(options); foreach (var dto in dtos) { var item = _libraryManager.GetItemById(dto.Id); - FillSyncInfo(dto, item, tuple.Item1, tuple.Item2, options, user); + FillSyncInfo(dto, item, syncProgress, options, user); } } } - private void FillSyncInfo(IHasSyncInfo dto, BaseItem item, DtoOptions options, User user) + private void FillSyncInfo(IHasSyncInfo dto, BaseItem item, DtoOptions options, User user, SyncedItemProgress[] syncProgress) { if (options.Fields.Contains(ItemFields.SyncInfo)) { @@ -213,10 +229,8 @@ namespace MediaBrowser.Server.Implementations.Dto if (dto.SupportsSync ?? false) { - var tuple = GetItemIdsWithSyncJobs(options); - - dto.HasSyncJob = tuple.Item1.Contains(dto.Id, StringComparer.OrdinalIgnoreCase); - dto.IsSynced = tuple.Item2.Contains(dto.Id, StringComparer.OrdinalIgnoreCase); + dto.HasSyncJob = syncProgress.Any(i => i.Status != SyncJobItemStatus.Synced && string.Equals(i.ItemId, dto.Id, StringComparison.OrdinalIgnoreCase)); + dto.IsSynced = syncProgress.Any(i => i.Status == SyncJobItemStatus.Synced && string.Equals(i.ItemId, dto.Id, StringComparison.OrdinalIgnoreCase)); if (dto.IsSynced.Value) { @@ -230,7 +244,7 @@ namespace MediaBrowser.Server.Implementations.Dto } } - private void FillSyncInfo(IHasSyncInfo dto, BaseItem item, IEnumerable<string> itemIdsWithPendingSyncJobs, IEnumerable<string> syncedItemIds, DtoOptions options, User user) + private void FillSyncInfo(IHasSyncInfo dto, BaseItem item, SyncedItemProgress[] syncProgress, DtoOptions options, User user) { if (options.Fields.Contains(ItemFields.SyncInfo)) { @@ -240,8 +254,8 @@ namespace MediaBrowser.Server.Implementations.Dto if (dto.SupportsSync ?? false) { - dto.HasSyncJob = itemIdsWithPendingSyncJobs.Contains(dto.Id, StringComparer.OrdinalIgnoreCase); - dto.IsSynced = syncedItemIds.Contains(dto.Id, StringComparer.OrdinalIgnoreCase); + dto.HasSyncJob = syncProgress.Any(i => i.Status != SyncJobItemStatus.Synced && string.Equals(i.ItemId, dto.Id, StringComparison.OrdinalIgnoreCase)); + dto.IsSynced = syncProgress.Any(i => i.Status == SyncJobItemStatus.Synced && string.Equals(i.ItemId, dto.Id, StringComparison.OrdinalIgnoreCase)); if (dto.IsSynced.Value) { @@ -255,7 +269,7 @@ namespace MediaBrowser.Server.Implementations.Dto } } - private BaseItemDto GetBaseItemDtoInternal(BaseItem item, DtoOptions options, User user = null, BaseItem owner = null) + private BaseItemDto GetBaseItemDtoInternal(BaseItem item, DtoOptions options, Dictionary<string,SyncedItemProgress> syncProgress, User user = null, BaseItem owner = null) { var fields = options.Fields; @@ -299,7 +313,7 @@ namespace MediaBrowser.Server.Implementations.Dto if (user != null) { - AttachUserSpecificInfo(dto, item, user, fields); + AttachUserSpecificInfo(dto, item, user, fields, syncProgress); } var hasMediaSources = item as IHasMediaSources; @@ -350,20 +364,32 @@ namespace MediaBrowser.Server.Implementations.Dto dto.Etag = item.GetEtag(user); } + if (item is ILiveTvRecording) + { + _livetvManager().AddInfoToRecordingDto(item, dto, user); + } + + else if (item is LiveTvProgram) + { + _livetvManager().AddInfoToProgramDto(item, dto, user); + } + return dto; } public BaseItemDto GetItemByNameDto<T>(T item, DtoOptions options, List<BaseItem> taggedItems, User user = null) where T : BaseItem, IItemByName { - var dto = GetBaseItemDtoInternal(item, options, user); + var syncProgress = GetSyncedItemProgress(options); + + var dto = GetBaseItemDtoInternal(item, options, syncProgress.ToDictionary(i => i.ItemId), user); if (options.Fields.Contains(ItemFields.ItemCounts)) { SetItemByNameInfo(item, dto, taggedItems, user); } - FillSyncInfo(dto, item, options, user); + FillSyncInfo(dto, item, options, user, syncProgress); return dto; } @@ -403,7 +429,8 @@ namespace MediaBrowser.Server.Implementations.Dto /// <param name="item">The item.</param> /// <param name="user">The user.</param> /// <param name="fields">The fields.</param> - private void AttachUserSpecificInfo(BaseItemDto dto, BaseItem item, User user, List<ItemFields> fields) + /// <param name="syncProgress">The synchronize progress.</param> + private void AttachUserSpecificInfo(BaseItemDto dto, BaseItem item, User user, List<ItemFields> fields, Dictionary<string, SyncedItemProgress> syncProgress) { if (item.IsFolder) { @@ -421,7 +448,7 @@ namespace MediaBrowser.Server.Implementations.Dto // TODO: Disable for CollectionFolder if (!(folder is UserRootFolder) && !(folder is UserView)) { - SetSpecialCounts(folder, user, dto, fields); + SetSpecialCounts(folder, user, dto, fields, syncProgress); } dto.UserData.Played = dto.UserData.PlayedPercentage.HasValue && dto.UserData.PlayedPercentage.Value >= 100; @@ -630,7 +657,7 @@ namespace MediaBrowser.Server.Implementations.Dto // Ordering by person type to ensure actors and artists are at the front. // This is taking advantage of the fact that they both begin with A // This should be improved in the future - var people = item.People.OrderBy(i => i.SortOrder ?? int.MaxValue) + var people = _libraryManager.GetPeople(item).OrderBy(i => i.SortOrder ?? int.MaxValue) .ThenBy(i => { if (i.IsType(PersonType.Actor)) @@ -678,7 +705,7 @@ namespace MediaBrowser.Server.Implementations.Dto } }).Where(i => i != null) - .DistinctBy(i => i.Name) + .DistinctBy(i => i.Name, StringComparer.OrdinalIgnoreCase) .ToDictionary(i => i.Name, StringComparer.OrdinalIgnoreCase); for (var i = 0; i < people.Count; i++) @@ -730,6 +757,7 @@ namespace MediaBrowser.Server.Implementations.Dto } }) .Where(i => i != null) + .DistinctBy(i => i.Name, StringComparer.OrdinalIgnoreCase) .ToDictionary(i => i.Name, StringComparer.OrdinalIgnoreCase); for (var i = 0; i < studios.Count; i++) @@ -1384,7 +1412,7 @@ namespace MediaBrowser.Server.Implementations.Dto { dto.AirDays = series.AirDays; dto.AirTime = series.AirTime; - dto.Status = series.Status; + dto.SeriesStatus = series.Status; dto.SeasonCount = series.SeasonCount; @@ -1587,8 +1615,9 @@ namespace MediaBrowser.Server.Implementations.Dto /// <param name="user">The user.</param> /// <param name="dto">The dto.</param> /// <param name="fields">The fields.</param> + /// <param name="syncProgress">The synchronize progress.</param> /// <returns>Task.</returns> - private void SetSpecialCounts(Folder folder, User user, BaseItemDto dto, List<ItemFields> fields) + private void SetSpecialCounts(Folder folder, User user, BaseItemDto dto, List<ItemFields> fields, Dictionary<string,SyncedItemProgress> syncProgress) { var recursiveItemCount = 0; var unplayed = 0; @@ -1596,6 +1625,8 @@ namespace MediaBrowser.Server.Implementations.Dto DateTime? dateLastMediaAdded = null; double totalPercentPlayed = 0; + double totalSyncPercent = 0; + var addSyncInfo = fields.Contains(ItemFields.SyncInfo); IEnumerable<BaseItem> children; @@ -1654,6 +1685,27 @@ namespace MediaBrowser.Server.Implementations.Dto } runtime += child.RunTimeTicks ?? 0; + + if (addSyncInfo) + { + double percent = 0; + SyncedItemProgress syncItemProgress; + if (syncProgress.TryGetValue(child.Id.ToString("N"), out syncItemProgress)) + { + switch (syncItemProgress.Status) + { + case SyncJobItemStatus.Synced: + percent = 100; + break; + case SyncJobItemStatus.Converting: + case SyncJobItemStatus.ReadyToTransfer: + case SyncJobItemStatus.Transferring: + percent = 50; + break; + } + } + totalSyncPercent += percent; + } } dto.RecursiveItemCount = recursiveItemCount; @@ -1662,6 +1714,15 @@ namespace MediaBrowser.Server.Implementations.Dto if (recursiveItemCount > 0) { dto.UserData.PlayedPercentage = totalPercentPlayed / recursiveItemCount; + + if (addSyncInfo) + { + var pct = totalSyncPercent / recursiveItemCount; + if (pct > 0) + { + dto.SyncPercent = pct; + } + } } if (runtime > 0 && fields.Contains(ItemFields.CumulativeRunTimeTicks)) diff --git a/MediaBrowser.Server.Implementations/FileOrganization/TvFolderOrganizer.cs b/MediaBrowser.Server.Implementations/FileOrganization/TvFolderOrganizer.cs index e3c8e6d25..557b531b4 100644 --- a/MediaBrowser.Server.Implementations/FileOrganization/TvFolderOrganizer.cs +++ b/MediaBrowser.Server.Implementations/FileOrganization/TvFolderOrganizer.cs @@ -59,11 +59,18 @@ namespace MediaBrowser.Server.Implementations.FileOrganization var organizer = new EpisodeFileOrganizer(_organizationService, _config, _fileSystem, _logger, _libraryManager, _libraryMonitor, _providerManager); - var result = await organizer.OrganizeEpisodeFile(file.FullName, options, options.OverwriteExistingEpisodes, cancellationToken).ConfigureAwait(false); + try + { + var result = await organizer.OrganizeEpisodeFile(file.FullName, options, options.OverwriteExistingEpisodes, cancellationToken).ConfigureAwait(false); - if (result.Status == FileSortingStatus.Success) + if (result.Status == FileSortingStatus.Success) + { + scanLibrary = true; + } + } + catch (Exception ex) { - scanLibrary = true; + _logger.ErrorException("Error organizing episode {0}", ex, file); } numComplete++; diff --git a/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs b/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs index dc9656f80..3795f4b15 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs @@ -1,6 +1,7 @@ using Funq; using MediaBrowser.Common; using MediaBrowser.Common.Extensions; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Net; using MediaBrowser.Model.Logging; using MediaBrowser.Server.Implementations.HttpServer.SocketSharp; @@ -43,6 +44,8 @@ namespace MediaBrowser.Server.Implementations.HttpServer public string CertificatePath { get; private set; } + private readonly IServerConfigurationManager _config; + /// <summary> /// Gets the local end points. /// </summary> @@ -62,13 +65,14 @@ namespace MediaBrowser.Server.Implementations.HttpServer } public HttpListenerHost(IApplicationHost applicationHost, - ILogManager logManager, + ILogManager logManager, + IServerConfigurationManager config, string serviceName, - string defaultRedirectPath, - params Assembly[] assembliesWithServices) + string defaultRedirectPath, params Assembly[] assembliesWithServices) : base(serviceName, assembliesWithServices) { DefaultRedirectPath = defaultRedirectPath; + _config = config; _logger = logManager.GetLogger("HttpServer"); @@ -100,7 +104,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer container.Adapter = _containerAdapter; Plugins.Add(new SwaggerFeature()); - Plugins.Add(new CorsFeature(allowedHeaders: "Content-Type, Authorization, Range, X-MediaBrowser-Token")); + Plugins.Add(new CorsFeature(allowedHeaders: "Content-Type, Authorization, Range, X-MediaBrowser-Token, X-Emby-Authorization")); //Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] { // new SessionAuthProvider(_containerAdapter.Resolve<ISessionContext>()), @@ -115,7 +119,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer } }); - HostContext.GlobalResponseFilters.Add(new ResponseFilter(_logger).FilterResponse); + HostContext.GlobalResponseFilters.Add(new ResponseFilter(_logger, () => _config.Configuration.DenyIFrameEmbedding).FilterResponse); } public override void OnAfterInit() diff --git a/MediaBrowser.Server.Implementations/HttpServer/LoggerUtils.cs b/MediaBrowser.Server.Implementations/HttpServer/LoggerUtils.cs index 955c4ed2d..5558c24d7 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/LoggerUtils.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/LoggerUtils.cs @@ -1,6 +1,6 @@ using MediaBrowser.Model.Logging; using System; -using System.Net; +using System.Globalization; using System.Text; namespace MediaBrowser.Server.Implementations.HttpServer @@ -23,7 +23,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer //log.AppendLine("Headers: " + string.Join(",", response.Headers.AllKeys.Select(k => k + "=" + response.Headers[k]))); - var responseTime = string.Format(". Response time: {0} ms.", duration.TotalMilliseconds); + var responseTime = string.Format(". Response time: {0} ms.", duration.TotalMilliseconds.ToString(CultureInfo.InvariantCulture)); var msg = "HTTP Response " + statusCode + " to " + endPoint + responseTime; diff --git a/MediaBrowser.Server.Implementations/HttpServer/ResponseFilter.cs b/MediaBrowser.Server.Implementations/HttpServer/ResponseFilter.cs index 23ecde191..0da34efc6 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/ResponseFilter.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/ResponseFilter.cs @@ -1,6 +1,5 @@ using MediaBrowser.Model.Logging; using MediaBrowser.Server.Implementations.HttpServer.SocketSharp; -using ServiceStack; using ServiceStack.Web; using System; using System.Globalization; @@ -13,10 +12,12 @@ namespace MediaBrowser.Server.Implementations.HttpServer { private static readonly CultureInfo UsCulture = new CultureInfo("en-US"); private readonly ILogger _logger; + private readonly Func<bool> _denyIframeEmbedding; - public ResponseFilter(ILogger logger) + public ResponseFilter(ILogger logger, Func<bool> denyIframeEmbedding) { _logger = logger; + _denyIframeEmbedding = denyIframeEmbedding; } /// <summary> @@ -30,6 +31,11 @@ namespace MediaBrowser.Server.Implementations.HttpServer // Try to prevent compatibility view res.AddHeader("X-UA-Compatible", "IE=Edge"); + if (_denyIframeEmbedding()) + { + res.AddHeader("X-Frame-Options", "SAMEORIGIN"); + } + var exception = dto as Exception; if (exception != null) @@ -45,19 +51,15 @@ namespace MediaBrowser.Server.Implementations.HttpServer } } - if (dto is CompressedResult) - { - // Per Google PageSpeed - // This instructs the proxies to cache two versions of the resource: one compressed, and one uncompressed. - // The correct version of the resource is delivered based on the client request header. - // This is a good choice for applications that are singly homed and depend on public proxies for user locality. - res.AddHeader("Vary", "Accept-Encoding"); - } + var vary = "Accept-Encoding"; var hasOptions = dto as IHasOptions; + var sharpResponse = res as WebSocketSharpResponse; if (hasOptions != null) { + hasOptions.Options["Server"] = "Mono-HTTPAPI/1.1"; + // Content length has to be explicitly set on on HttpListenerResponse or it won't be happy string contentLength; @@ -79,14 +81,29 @@ namespace MediaBrowser.Server.Implementations.HttpServer return; } - var sharpResponse = res as WebSocketSharpResponse; if (sharpResponse != null) { sharpResponse.SendChunked = false; } } } + + string hasOptionsVary; + if (hasOptions.Options.TryGetValue("Vary", out hasOptionsVary)) + { + vary = hasOptionsVary; + } + + hasOptions.Options["Vary"] = vary; } + + //res.KeepAlive = false; + + // Per Google PageSpeed + // This instructs the proxies to cache two versions of the resource: one compressed, and one uncompressed. + // The correct version of the resource is delivered based on the client request header. + // This is a good choice for applications that are singly homed and depend on public proxies for user locality. + res.AddHeader("Vary", vary); } /// <summary> diff --git a/MediaBrowser.Server.Implementations/HttpServer/Security/AuthorizationContext.cs b/MediaBrowser.Server.Implementations/HttpServer/Security/AuthorizationContext.cs index 9461143a8..80892b96c 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/Security/AuthorizationContext.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/Security/AuthorizationContext.cs @@ -170,7 +170,12 @@ namespace MediaBrowser.Server.Implementations.HttpServer.Security /// <returns>Dictionary{System.StringSystem.String}.</returns> private Dictionary<string, string> GetAuthorizationDictionary(IServiceRequest httpReq) { - var auth = httpReq.Headers["Authorization"]; + var auth = httpReq.Headers["X-Emby-Authorization"]; + + if (string.IsNullOrWhiteSpace(auth)) + { + auth = httpReq.Headers["Authorization"]; + } return GetAuthorization(auth); } diff --git a/MediaBrowser.Server.Implementations/HttpServer/Security/SessionContext.cs b/MediaBrowser.Server.Implementations/HttpServer/Security/SessionContext.cs index f40d117c4..a498d32fa 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/Security/SessionContext.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/Security/SessionContext.cs @@ -34,8 +34,8 @@ namespace MediaBrowser.Server.Implementations.HttpServer.Security // } //} - var session = _sessionManager.GetSession(authorization.DeviceId, authorization.Client, authorization.Version); - return Task.FromResult(session); + var user = string.IsNullOrWhiteSpace(authorization.UserId) ? null : _userManager.GetUserById(authorization.UserId); + return _sessionManager.LogSessionActivity(authorization.Client, authorization.Version, authorization.DeviceId, authorization.Device, requestContext.RemoteIp, user); } private AuthenticationInfo GetTokenInfo(IServiceRequest request) diff --git a/MediaBrowser.Server.Implementations/HttpServer/ServerFactory.cs b/MediaBrowser.Server.Implementations/HttpServer/ServerFactory.cs index d1222ab74..4d81ec157 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/ServerFactory.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/ServerFactory.cs @@ -1,4 +1,5 @@ using MediaBrowser.Common; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Net; using MediaBrowser.Model.Logging; using ServiceStack.Logging; @@ -15,17 +16,19 @@ namespace MediaBrowser.Server.Implementations.HttpServer /// </summary> /// <param name="applicationHost">The application host.</param> /// <param name="logManager">The log manager.</param> + /// <param name="config">The configuration.</param> /// <param name="serverName">Name of the server.</param> /// <param name="defaultRedirectpath">The default redirectpath.</param> /// <returns>IHttpServer.</returns> - public static IHttpServer CreateServer(IApplicationHost applicationHost, - ILogManager logManager, + public static IHttpServer CreateServer(IApplicationHost applicationHost, + ILogManager logManager, + IServerConfigurationManager config, string serverName, string defaultRedirectpath) { LogManager.LogFactory = new ServerLogFactory(logManager); - return new HttpListenerHost(applicationHost, logManager, serverName, defaultRedirectpath); + return new HttpListenerHost(applicationHost, logManager, config, serverName, defaultRedirectpath); } } } diff --git a/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs b/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs index 2d4770fac..d6a1be962 100644 --- a/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs +++ b/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs @@ -3,6 +3,7 @@ using MediaBrowser.Common.ScheduledTasks; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; +using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Logging; using MediaBrowser.Server.Implementations.ScheduledTasks; using Microsoft.Win32; @@ -81,10 +82,10 @@ namespace MediaBrowser.Server.Implementations.IO throw new ArgumentNullException("path"); } - // This is an arbitraty amount of time, but delay it because file system writes often trigger events after RemoveTempIgnore has been called. - // Seeing long delays in some situations, especially over the network. - // Seeing delays up to 40 seconds, but not going to ignore changes for that long. - await Task.Delay(5000).ConfigureAwait(false); + // This is an arbitraty amount of time, but delay it because file system writes often trigger events long after the file was actually written to. + // Seeing long delays in some situations, especially over the network, sometimes up to 45 seconds + // But if we make this delay too high, we risk missing legitimate changes, such as user adding a new file, or hand-editing metadata + await Task.Delay(20000).ConfigureAwait(false); string val; _tempIgnoredPaths.TryRemove(path, out val); @@ -147,9 +148,25 @@ namespace MediaBrowser.Server.Implementations.IO Start(); } + private bool EnableLibraryMonitor + { + get + { + switch (ConfigurationManager.Configuration.EnableLibraryMonitor) + { + case AutoOnOff.Auto: + return Environment.OSVersion.Platform == PlatformID.Win32NT; + case AutoOnOff.Enabled: + return true; + default: + return false; + } + } + } + public void Start() { - if (ConfigurationManager.Configuration.EnableRealtimeMonitor) + if (EnableLibraryMonitor) { StartInternal(); } diff --git a/MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs b/MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs index 2af6e5588..db9841f9d 100644 --- a/MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs +++ b/MediaBrowser.Server.Implementations/Intros/DefaultIntroProvider.cs @@ -71,6 +71,12 @@ namespace MediaBrowser.Server.Implementations.Intros var candidates = new List<ItemWithTrailer>(); + var itemPeople = _libraryManager.GetPeople(item); + var allPeople = _libraryManager.GetPeople(new InternalPeopleQuery + { + AppearsInItemId = item.Id + }); + if (config.EnableIntrosFromMoviesInLibrary) { var itemsWithTrailers = user.RootFolder @@ -94,7 +100,10 @@ namespace MediaBrowser.Server.Implementations.Intros Type = ItemWithTrailerType.ItemWithTrailer, User = user, WatchingItem = item, - Random = random + WatchingItemPeople = itemPeople, + AllPeople = allPeople, + Random = random, + LibraryManager = _libraryManager })); } @@ -134,7 +143,10 @@ namespace MediaBrowser.Server.Implementations.Intros Type = ItemWithTrailerType.ChannelTrailer, User = user, WatchingItem = item, - Random = random + WatchingItemPeople = itemPeople, + AllPeople = allPeople, + Random = random, + LibraryManager = _libraryManager })); } @@ -239,7 +251,7 @@ namespace MediaBrowser.Server.Implementations.Intros return true; } - internal static int GetSimiliarityScore(BaseItem item1, BaseItem item2, Random random) + internal static int GetSimiliarityScore(BaseItem item1, List<PersonInfo> item1People, List<PersonInfo> allPeople, BaseItem item2, Random random, ILibraryManager libraryManager) { var points = 0; @@ -260,11 +272,13 @@ namespace MediaBrowser.Server.Implementations.Intros // Find common studios points += item1.Studios.Where(i => item2.Studios.Contains(i, StringComparer.OrdinalIgnoreCase)).Sum(i => 5); - var item2PeopleNames = item2.People.Select(i => i.Name) - .Distinct(StringComparer.OrdinalIgnoreCase) + var item2PeopleNames = allPeople.Where(i => i.ItemId == item2.Id) + .Select(i => i.Name) + .Where(i => !string.IsNullOrWhiteSpace(i)) + .DistinctNames() .ToDictionary(i => i, StringComparer.OrdinalIgnoreCase); - points += item1.People.Where(i => item2PeopleNames.ContainsKey(i.Name)).Sum(i => + points += item1People.Where(i => item2PeopleNames.ContainsKey(i.Name)).Sum(i => { if (string.Equals(i.Type, PersonType.Director, StringComparison.OrdinalIgnoreCase) || string.Equals(i.Role, PersonType.Director, StringComparison.OrdinalIgnoreCase)) { @@ -339,7 +353,10 @@ namespace MediaBrowser.Server.Implementations.Intros internal ItemWithTrailerType Type; internal User User; internal BaseItem WatchingItem; + internal List<PersonInfo> WatchingItemPeople; + internal List<PersonInfo> AllPeople; internal Random Random; + internal ILibraryManager LibraryManager; private bool? _isPlayed; public bool IsPlayed @@ -361,7 +378,7 @@ namespace MediaBrowser.Server.Implementations.Intros { if (!_score.HasValue) { - _score = GetSimiliarityScore(WatchingItem, Item, Random); + _score = GetSimiliarityScore(WatchingItem, WatchingItemPeople, AllPeople, Item, Random, LibraryManager); } return _score.Value; } diff --git a/MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs b/MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs index 3dda3f158..be8c1cfbd 100644 --- a/MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs +++ b/MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs @@ -32,6 +32,7 @@ namespace MediaBrowser.Server.Implementations.Library ".wd_tv", // Synology + "@eaDir", "eaDir" }; diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index ee0bf354f..c3793b3a3 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -16,6 +16,7 @@ using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; +using MediaBrowser.Model.Querying; using MediaBrowser.Naming.Audio; using MediaBrowser.Naming.Common; using MediaBrowser.Naming.TV; @@ -31,6 +32,7 @@ using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; +using MoreLinq; using SortOrder = MediaBrowser.Model.Entities.SortOrder; namespace MediaBrowser.Server.Implementations.Library @@ -1106,6 +1108,8 @@ namespace MediaBrowser.Server.Implementations.Library progress.Report(innerPercent); }); + _logger.Debug("Running post-scan task {0}", task.GetType().Name); + try { await task.Run(innerProgress, cancellationToken).ConfigureAwait(false); @@ -1209,6 +1213,23 @@ namespace MediaBrowser.Server.Implementations.Library return item; } + public QueryResult<BaseItem> GetItems(InternalItemsQuery query) + { + var result = ItemRepository.GetItemIdsList(query); + + var items = result.Select(GetItemById).ToArray(); + + return new QueryResult<BaseItem> + { + Items = items + }; + } + + public List<Guid> GetItemIds(InternalItemsQuery query) + { + return ItemRepository.GetItemIdsList(query); + } + /// <summary> /// Gets the intros. /// </summary> @@ -2042,5 +2063,58 @@ namespace MediaBrowser.Server.Implementations.Library item.ExtraType = ExtraType.Clip; } } + + public List<PersonInfo> GetPeople(InternalPeopleQuery query) + { + return ItemRepository.GetPeople(query); + } + + public List<PersonInfo> GetPeople(BaseItem item) + { + return item.People ?? GetPeople(new InternalPeopleQuery + { + ItemId = item.Id + }); + } + + public List<Person> GetPeopleItems(InternalPeopleQuery query) + { + return ItemRepository.GetPeopleNames(query).Select(i => + { + try + { + return GetPerson(i); + } + catch (Exception ex) + { + _logger.ErrorException("Error getting person", ex); + return null; + } + + }).Where(i => i != null).ToList(); + } + + public List<string> GetPeopleNames(InternalPeopleQuery query) + { + return ItemRepository.GetPeopleNames(query); + } + + public List<PersonInfo> GetAllPeople() + { + return GetPeople(new InternalPeopleQuery()) + .DistinctBy(i => i.Name, StringComparer.OrdinalIgnoreCase) + .ToList(); + } + + public async Task UpdatePeople(BaseItem item, List<PersonInfo> people) + { + await ItemRepository.UpdatePeople(item.Id, people).ConfigureAwait(false); + + if (item.People != null) + { + item.People = null; + await item.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false); + } + } } } diff --git a/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs b/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs index 71fd4127b..b6441053d 100644 --- a/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs +++ b/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs @@ -474,7 +474,7 @@ namespace MediaBrowser.Server.Implementations.Library } private Timer _closeTimer; - private readonly TimeSpan _openStreamMaxAge = TimeSpan.FromSeconds(40); + private readonly TimeSpan _openStreamMaxAge = TimeSpan.FromSeconds(60); private void StartCloseTimer() { diff --git a/MediaBrowser.Server.Implementations/Library/ResolverHelper.cs b/MediaBrowser.Server.Implementations/Library/ResolverHelper.cs index b6a93408a..dac658095 100644 --- a/MediaBrowser.Server.Implementations/Library/ResolverHelper.cs +++ b/MediaBrowser.Server.Implementations/Library/ResolverHelper.cs @@ -34,7 +34,7 @@ namespace MediaBrowser.Server.Implementations.Library // If the resolver didn't specify this if (parent != null) { - item.Parent = parent; + item.SetParent(parent); } item.Id = libraryManager.GetNewItemId(item.Path, item.GetType()); @@ -68,7 +68,7 @@ namespace MediaBrowser.Server.Implementations.Library // If the resolver didn't specify this if (args.Parent != null) { - item.Parent = args.Parent; + item.SetParent(args.Parent); } item.Id = libraryManager.GetNewItemId(item.Path, item.GetType()); diff --git a/MediaBrowser.Server.Implementations/Library/SearchEngine.cs b/MediaBrowser.Server.Implementations/Library/SearchEngine.cs index 72bbefae4..05dde5b3e 100644 --- a/MediaBrowser.Server.Implementations/Library/SearchEngine.cs +++ b/MediaBrowser.Server.Implementations/Library/SearchEngine.cs @@ -256,10 +256,15 @@ namespace MediaBrowser.Server.Implementations.Library if (query.IncludePeople) { + var itemIds = items.Select(i => i.Id).ToList(); + // Find persons - var persons = items.SelectMany(i => i.People) + var persons = _libraryManager.GetPeople(new InternalPeopleQuery + { + NameContains = searchTerm + }) + .Where(i => itemIds.Contains(i.ItemId)) .Select(i => i.Name) - .Where(i => !string.IsNullOrWhiteSpace(i)) .Distinct(StringComparer.OrdinalIgnoreCase) .ToList(); diff --git a/MediaBrowser.Server.Implementations/Library/UserDataManager.cs b/MediaBrowser.Server.Implementations/Library/UserDataManager.cs index 8cbb2eb1a..ae737d244 100644 --- a/MediaBrowser.Server.Implementations/Library/UserDataManager.cs +++ b/MediaBrowser.Server.Implementations/Library/UserDataManager.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using MediaBrowser.Common.Events; +using MediaBrowser.Common.Events; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; @@ -10,6 +9,7 @@ using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using System; using System.Collections.Concurrent; +using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; @@ -262,5 +262,9 @@ namespace MediaBrowser.Server.Implementations.Library return playedToCompletion; } + public UserItemData GetUserData(string userId, string key) + { + return GetUserData(new Guid(userId), key); + } } } diff --git a/MediaBrowser.Server.Implementations/Library/Validators/PeopleValidator.cs b/MediaBrowser.Server.Implementations/Library/Validators/PeopleValidator.cs index 059ad2481..ef9dee8b5 100644 --- a/MediaBrowser.Server.Implementations/Library/Validators/PeopleValidator.cs +++ b/MediaBrowser.Server.Implementations/Library/Validators/PeopleValidator.cs @@ -72,39 +72,6 @@ namespace MediaBrowser.Server.Implementations.Library.Validators return options.DownloadOtherPeopleMetadata; } - private IEnumerable<PersonInfo> GetPeopleToValidate(BaseItem item, PeopleMetadataOptions options) - { - return item.People.Where(i => - { - if (i.IsType(PersonType.Actor)) - { - return options.DownloadActorMetadata; - } - if (i.IsType(PersonType.Director)) - { - return options.DownloadDirectorMetadata; - } - if (i.IsType(PersonType.Composer)) - { - return options.DownloadComposerMetadata; - } - if (i.IsType(PersonType.Writer)) - { - return options.DownloadWriterMetadata; - } - if (i.IsType(PersonType.Producer)) - { - return options.DownloadProducerMetadata; - } - if (i.IsType(PersonType.GuestStar)) - { - return options.DownloadGuestStarMetadata; - } - - return options.DownloadOtherPeopleMetadata; - }); - } - /// <summary> /// Validates the people. /// </summary> @@ -119,10 +86,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators var peopleOptions = _config.Configuration.PeopleMetadataOptions; - var people = _libraryManager.RootFolder.GetRecursiveChildren() - .SelectMany(i => i.People) - .Where(i => !string.IsNullOrWhiteSpace(i.Name)) - .ToList(); + var people = _libraryManager.GetAllPeople(); var dict = new Dictionary<string, bool>(StringComparer.OrdinalIgnoreCase); diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs index 00c15fdfc..72fea2c79 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs @@ -68,7 +68,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv if (program != null) { - dto.ProgramInfo = GetProgramInfoDto(program, channel); + dto.ProgramInfo = _dtoService.GetBaseItemDto(program, new DtoOptions()); dto.ProgramInfo.TimerId = dto.Id; dto.ProgramInfo.SeriesTimerId = dto.SeriesTimerId; @@ -167,122 +167,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv return val.Value; } - public string GetStatusName(RecordingStatus status) - { - if (status == RecordingStatus.InProgress) - { - return "In Progress"; - } - - if (status == RecordingStatus.ConflictedNotOk) - { - return "Conflicted"; - } - - if (status == RecordingStatus.ConflictedOk) - { - return "Scheduled"; - } - - return status.ToString(); - } - - public RecordingInfoDto GetRecordingInfoDto(ILiveTvRecording recording, LiveTvChannel channel, ILiveTvService service, User user = null) - { - var info = recording.RecordingInfo; - - var dto = new RecordingInfoDto - { - Id = GetInternalRecordingId(service.Name, info.Id).ToString("N"), - SeriesTimerId = string.IsNullOrEmpty(info.SeriesTimerId) ? null : GetInternalSeriesTimerId(service.Name, info.SeriesTimerId).ToString("N"), - Type = recording.GetClientTypeName(), - Overview = info.Overview, - EndDate = info.EndDate, - Name = info.Name, - StartDate = info.StartDate, - ExternalId = info.Id, - ChannelId = GetInternalChannelId(service.Name, info.ChannelId).ToString("N"), - Status = info.Status, - StatusName = GetStatusName(info.Status), - Path = info.Path, - Genres = info.Genres, - IsRepeat = info.IsRepeat, - EpisodeTitle = info.EpisodeTitle, - ChannelType = info.ChannelType, - MediaType = info.ChannelType == ChannelType.Radio ? MediaType.Audio : MediaType.Video, - CommunityRating = GetClientCommunityRating(info.CommunityRating), - OfficialRating = info.OfficialRating, - Audio = info.Audio, - IsHD = info.IsHD, - ServiceName = service.Name, - IsMovie = info.IsMovie, - IsSeries = info.IsSeries, - IsSports = info.IsSports, - IsLive = info.IsLive, - IsNews = info.IsNews, - IsKids = info.IsKids, - IsPremiere = info.IsPremiere, - RunTimeTicks = (info.EndDate - info.StartDate).Ticks, - OriginalAirDate = info.OriginalAirDate, - - MediaSources = recording.GetMediaSources(true).ToList(), - ServerId = _appHost.SystemId - }; - - dto.CanDelete = user == null - ? recording.CanDelete() - : recording.CanDelete(user); - - dto.MediaStreams = dto.MediaSources.SelectMany(i => i.MediaStreams).ToList(); - - if (info.Status == RecordingStatus.InProgress) - { - var now = DateTime.UtcNow.Ticks; - var start = info.StartDate.Ticks; - var end = info.EndDate.Ticks; - - var pct = now - start; - pct /= end; - pct *= 100; - dto.CompletionPercentage = pct; - } - - var imageTag = GetImageTag(recording); - - if (imageTag != null) - { - dto.ImageTags[ImageType.Primary] = imageTag; - _dtoService.AttachPrimaryImageAspectRatio(dto, recording, new List<ItemFields> - { - ItemFields.PrimaryImageAspectRatio - }); - } - - if (user != null) - { - dto.UserData = _userDataManager.GetUserDataDto(recording, user); - - dto.PlayAccess = recording.GetPlayAccess(user); - } - - if (!string.IsNullOrEmpty(info.ProgramId)) - { - dto.ProgramId = GetInternalProgramId(service.Name, info.ProgramId).ToString("N"); - } - - if (channel != null) - { - dto.ChannelName = channel.Name; - - if (!string.IsNullOrEmpty(channel.PrimaryImagePath)) - { - dto.ChannelPrimaryImageTag = GetImageTag(channel); - } - } - - return dto; - } - public LiveTvTunerInfoDto GetTunerInfoDto(string serviceName, LiveTvTunerInfo info, string channelName) { var dto = new LiveTvTunerInfoDto @@ -354,83 +238,13 @@ namespace MediaBrowser.Server.Implementations.LiveTv if (currentProgram != null) { - dto.CurrentProgram = GetProgramInfoDto(currentProgram, info, user); + dto.CurrentProgram = _dtoService.GetBaseItemDto(currentProgram, new DtoOptions(), user); } return dto; } - public ProgramInfoDto GetProgramInfoDto(LiveTvProgram item, LiveTvChannel channel, User user = null) - { - var dto = new ProgramInfoDto - { - Id = GetInternalProgramId(item.ServiceName, item.ExternalId).ToString("N"), - ChannelId = GetInternalChannelId(item.ServiceName, item.ExternalChannelId).ToString("N"), - Overview = item.Overview, - Genres = item.Genres, - ExternalId = item.ExternalId, - Name = item.Name, - ServiceName = item.ServiceName, - StartDate = item.StartDate, - OfficialRating = item.OfficialRating, - IsHD = item.IsHD, - OriginalAirDate = item.OriginalAirDate, - Audio = item.Audio, - CommunityRating = GetClientCommunityRating(item.CommunityRating), - IsRepeat = item.IsRepeat, - EpisodeTitle = item.EpisodeTitle, - IsMovie = item.IsMovie, - IsSeries = item.IsSeries, - IsSports = item.IsSports, - IsLive = item.IsLive, - IsNews = item.IsNews, - IsKids = item.IsKids, - IsPremiere = item.IsPremiere, - Type = "Program", - MediaType = item.MediaType, - ServerId = _appHost.SystemId, - ProductionYear = item.ProductionYear - }; - - if (item.EndDate.HasValue) - { - dto.EndDate = item.EndDate.Value; - - dto.RunTimeTicks = (item.EndDate.Value - item.StartDate).Ticks; - } - - if (channel != null) - { - dto.ChannelName = channel.Name; - - if (!string.IsNullOrEmpty(channel.PrimaryImagePath)) - { - dto.ChannelPrimaryImageTag = GetImageTag(channel); - } - } - - var imageTag = GetImageTag(item); - - if (imageTag != null) - { - dto.ImageTags[ImageType.Primary] = imageTag; - _dtoService.AttachPrimaryImageAspectRatio(dto, item, new List<ItemFields> - { - ItemFields.PrimaryImageAspectRatio - }); - } - - if (user != null) - { - dto.UserData = _userDataManager.GetUserDataDto(item, user); - - dto.PlayAccess = item.GetPlayAccess(user); - } - - return dto; - } - - private string GetImageTag(IHasImages info) + internal string GetImageTag(IHasImages info) { try { @@ -476,12 +290,12 @@ namespace MediaBrowser.Server.Implementations.LiveTv public Guid GetInternalRecordingId(string serviceName, string externalId) { - var name = serviceName + externalId + InternalVersionNumber; + var name = serviceName + externalId + InternalVersionNumber + "0"; return name.ToLower().GetMBId(typeof(ILiveTvRecording)); } - public async Task<TimerInfo> GetTimerInfo(TimerInfoDto dto, bool isNew, ILiveTvManager liveTv, CancellationToken cancellationToken) + public async Task<TimerInfo> GetTimerInfo(TimerInfoDto dto, bool isNew, LiveTvManager liveTv, CancellationToken cancellationToken) { var info = new TimerInfo { @@ -521,7 +335,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv if (!string.IsNullOrEmpty(dto.ProgramId) && string.IsNullOrEmpty(info.ProgramId)) { - var program = await liveTv.GetProgram(dto.ProgramId, cancellationToken).ConfigureAwait(false); + var program = liveTv.GetInternalProgram(dto.ProgramId); if (program != null) { @@ -542,7 +356,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv return info; } - public async Task<SeriesTimerInfo> GetSeriesTimerInfo(SeriesTimerInfoDto dto, bool isNew, ILiveTvManager liveTv, CancellationToken cancellationToken) + public async Task<SeriesTimerInfo> GetSeriesTimerInfo(SeriesTimerInfoDto dto, bool isNew, LiveTvManager liveTv, CancellationToken cancellationToken) { var info = new SeriesTimerInfo { @@ -584,7 +398,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv if (!string.IsNullOrEmpty(dto.ProgramId) && string.IsNullOrEmpty(info.ProgramId)) { - var program = await liveTv.GetProgram(dto.ProgramId, cancellationToken).ConfigureAwait(false); + var program = liveTv.GetInternalProgram(dto.ProgramId); if (program != null) { diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs index 6aea6fcaa..f6c69d8d6 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs @@ -53,9 +53,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv private readonly ConcurrentDictionary<string, LiveStreamData> _openStreams = new ConcurrentDictionary<string, LiveStreamData>(); - private List<Guid> _channelIdList = new List<Guid>(); - private Dictionary<Guid, LiveTvProgram> _programs; - private readonly ConcurrentDictionary<Guid, bool> _refreshedPrograms = new ConcurrentDictionary<Guid, bool>(); + private readonly SemaphoreSlim _refreshRecordingsLock = new SemaphoreSlim(1, 1); public LiveTvManager(IApplicationHost appHost, IServerConfigurationManager config, ILogger logger, IItemRepository itemRepo, IImageProcessor imageProcessor, IUserDataManager userDataManager, IDtoService dtoService, IUserManager userManager, ILibraryManager libraryManager, ITaskManager taskManager, ILocalizationManager localization, IJsonSerializer jsonSerializer, IProviderManager providerManager) { @@ -107,44 +105,15 @@ namespace MediaBrowser.Server.Implementations.LiveTv _taskManager.CancelIfRunningAndQueue<RefreshChannelsScheduledTask>(); } - private readonly object _programsDataLock = new object(); - private Dictionary<Guid, LiveTvProgram> GetProgramsDictionary() - { - if (_programs == null) - { - lock (_programsDataLock) - { - if (_programs == null) - { - var dict = new Dictionary<Guid, LiveTvProgram>(); - - foreach (var item in _itemRepo.GetItemsOfType(typeof (LiveTvProgram)) - .Cast<LiveTvProgram>() - .ToList()) - { - dict[item.Id] = item; - } - - _programs = dict; - } - } - } - - return _programs; - } - - private IEnumerable<LiveTvProgram> GetPrograms() - { - return GetProgramsDictionary().Values; - } - public async Task<QueryResult<LiveTvChannel>> GetInternalChannels(LiveTvChannelQuery query, CancellationToken cancellationToken) { var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(query.UserId); - var channels = _channelIdList.Select(_libraryManager.GetItemById) - .Where(i => i != null) - .OfType<LiveTvChannel>(); + var channels = _libraryManager.GetItems(new InternalItemsQuery + { + IncludeItemTypes = new[] { typeof(LiveTvChannel).Name } + + }).Items.Cast<LiveTvChannel>(); if (user != null) { @@ -257,9 +226,20 @@ namespace MediaBrowser.Server.Implementations.LiveTv var returnList = new List<ChannelInfoDto>(); + var now = DateTime.UtcNow; + + var programs = _libraryManager.GetItems(new InternalItemsQuery + { + IncludeItemTypes = new[] { typeof(LiveTvProgram).Name }, + MaxStartDate = now, + MinEndDate = now + + }).Items.Cast<LiveTvProgram>().OrderBy(i => i.StartDate).ToList(); + foreach (var channel in internalResult.Items) { - var currentProgram = GetCurrentProgram(channel.ExternalId); + var channelIdString = channel.Id.ToString("N"); + var currentProgram = programs.FirstOrDefault(i => string.Equals(i.ChannelId, channelIdString, StringComparison.OrdinalIgnoreCase)); returnList.Add(_tvDtoService.GetChannelInfoDto(channel, currentProgram, user)); } @@ -283,36 +263,14 @@ namespace MediaBrowser.Server.Implementations.LiveTv return _libraryManager.GetItemById(id) as LiveTvChannel; } - private LiveTvProgram GetInternalProgram(string id) + internal LiveTvProgram GetInternalProgram(string id) { - var guid = new Guid(id); - - LiveTvProgram obj = null; - - GetProgramsDictionary().TryGetValue(guid, out obj); - - if (obj != null) - { - RefreshIfNeeded(obj); - } - return obj; + return _libraryManager.GetItemById(id) as LiveTvProgram; } - private void RefreshIfNeeded(LiveTvProgram program) + internal LiveTvProgram GetInternalProgram(Guid id) { - if (!_refreshedPrograms.ContainsKey(program.Id)) - { - _refreshedPrograms.TryAdd(program.Id, true); - _providerManager.QueueRefresh(program.Id, new MetadataRefreshOptions()); - } - } - - private void RefreshIfNeeded(IEnumerable<LiveTvProgram> programs) - { - foreach (var program in programs) - { - RefreshIfNeeded(program); - } + return _libraryManager.GetItemById(id) as LiveTvProgram; } public async Task<ILiveTvRecording> GetInternalRecording(string id, CancellationToken cancellationToken) @@ -330,12 +288,12 @@ namespace MediaBrowser.Server.Implementations.LiveTv public async Task<MediaSourceInfo> GetRecordingStream(string id, CancellationToken cancellationToken) { - return await GetLiveStream(id, false, cancellationToken).ConfigureAwait(false); + return await GetLiveStream(id, null, false, cancellationToken).ConfigureAwait(false); } - public async Task<MediaSourceInfo> GetChannelStream(string id, CancellationToken cancellationToken) + public async Task<MediaSourceInfo> GetChannelStream(string id, string mediaSourceId, CancellationToken cancellationToken) { - return await GetLiveStream(id, true, cancellationToken).ConfigureAwait(false); + return await GetLiveStream(id, mediaSourceId, true, cancellationToken).ConfigureAwait(false); } public async Task<IEnumerable<MediaSourceInfo>> GetRecordingMediaSources(string id, CancellationToken cancellationToken) @@ -351,7 +309,15 @@ namespace MediaBrowser.Server.Implementations.LiveTv var item = GetInternalChannel(id); var service = GetService(item); - return await service.GetChannelStreamMediaSources(id, cancellationToken).ConfigureAwait(false); + var sources = await service.GetChannelStreamMediaSources(item.ExternalId, cancellationToken).ConfigureAwait(false); + var list = sources.ToList(); + + foreach (var source in list) + { + Normalize(source, item.ChannelType == ChannelType.TV); + } + + return list; } private ILiveTvService GetService(ILiveTvItem item) @@ -364,7 +330,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv return _services.FirstOrDefault(i => string.Equals(i.Name, name, StringComparison.OrdinalIgnoreCase)); } - private async Task<MediaSourceInfo> GetLiveStream(string id, bool isChannel, CancellationToken cancellationToken) + private async Task<MediaSourceInfo> GetLiveStream(string id, string mediaSourceId, bool isChannel, CancellationToken cancellationToken) { await _liveStreamSemaphore.WaitAsync(cancellationToken).ConfigureAwait(false); @@ -379,7 +345,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv isVideo = channel.ChannelType == ChannelType.TV; var service = GetService(channel); _logger.Info("Opening channel stream from {0}, external channel Id: {1}", service.Name, channel.ExternalId); - info = await service.GetChannelStream(channel.ExternalId, null, cancellationToken).ConfigureAwait(false); + info = await service.GetChannelStream(channel.ExternalId, mediaSourceId, cancellationToken).ConfigureAwait(false); info.RequiresClosing = true; if (info.RequiresClosing) @@ -395,8 +361,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv isVideo = !string.Equals(recording.MediaType, MediaType.Audio, StringComparison.OrdinalIgnoreCase); var service = GetService(recording); - _logger.Info("Opening recording stream from {0}, external recording Id: {1}", service.Name, recording.RecordingInfo.Id); - info = await service.GetRecordingStream(recording.RecordingInfo.Id, null, cancellationToken).ConfigureAwait(false); + _logger.Info("Opening recording stream from {0}, external recording Id: {1}", service.Name, recording.ExternalId); + info = await service.GetRecordingStream(recording.ExternalId, null, cancellationToken).ConfigureAwait(false); info.RequiresClosing = true; if (info.RequiresClosing) @@ -519,6 +485,17 @@ namespace MediaBrowser.Server.Implementations.LiveTv stream.Index = -1; } } + + // Set the total bitrate if not already supplied + if (!mediaSource.Bitrate.HasValue) + { + var total = mediaSource.MediaStreams.Select(i => i.BitRate ?? 0).Sum(); + + if (total > 0) + { + mediaSource.Bitrate = total; + } + } } private async Task<LiveTvChannel> GetChannel(ChannelInfo channelInfo, string serviceName, CancellationToken cancellationToken) @@ -578,14 +555,16 @@ namespace MediaBrowser.Server.Implementations.LiveTv return item; } - private async Task<LiveTvProgram> GetProgram(ProgramInfo info, ChannelType channelType, string serviceName, CancellationToken cancellationToken) + private async Task<LiveTvProgram> GetProgram(ProgramInfo info, string channelId, ChannelType channelType, string serviceName, CancellationToken cancellationToken) { var id = _tvDtoService.GetInternalProgramId(serviceName, info.Id); var item = _libraryManager.GetItemById(id) as LiveTvProgram; + var isNew = false; if (item == null) { + isNew = true; item = new LiveTvProgram { Name = info.Name, @@ -599,8 +578,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv item.ServiceName = serviceName; item.Audio = info.Audio; - item.ExternalChannelId = info.ChannelId; - item.CommunityRating = info.CommunityRating; + item.ChannelId = channelId; + item.CommunityRating = item.CommunityRating ?? info.CommunityRating; item.EndDate = info.EndDate; item.EpisodeTitle = info.EpisodeTitle; item.ExternalId = info.Id; @@ -616,8 +595,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv item.IsSeries = info.IsSeries; item.IsSports = info.IsSports; item.Name = info.Name; - item.OfficialRating = info.OfficialRating; - item.Overview = info.Overview; + item.OfficialRating = item.OfficialRating ?? info.OfficialRating; + item.Overview = item.Overview ?? info.Overview; item.OriginalAirDate = info.OriginalAirDate; item.ProviderImagePath = info.ImagePath; item.ProviderImageUrl = info.ImageUrl; @@ -627,18 +606,27 @@ namespace MediaBrowser.Server.Implementations.LiveTv item.ProductionYear = info.ProductionYear; item.PremiereDate = item.PremiereDate ?? info.OriginalAirDate; - await item.UpdateToRepository(ItemUpdateType.MetadataImport, cancellationToken).ConfigureAwait(false); + if (isNew) + { + await _libraryManager.CreateItem(item, cancellationToken).ConfigureAwait(false); + } + else + { + await _libraryManager.UpdateItem(item, ItemUpdateType.MetadataImport, cancellationToken).ConfigureAwait(false); + } + + _providerManager.QueueRefresh(item.Id, new MetadataRefreshOptions()); return item; } - private async Task<ILiveTvRecording> GetRecording(RecordingInfo info, string serviceName, CancellationToken cancellationToken) + private async Task<Guid> CreateRecordingRecord(RecordingInfo info, string serviceName, CancellationToken cancellationToken) { var isNew = false; var id = _tvDtoService.GetInternalRecordingId(serviceName, info.Id); - var item = _itemRepo.RetrieveItem(id) as ILiveTvRecording; + var item = _itemRepo.RetrieveItem(id); if (item == null) { @@ -667,8 +655,39 @@ namespace MediaBrowser.Server.Implementations.LiveTv isNew = true; } - item.RecordingInfo = info; - item.ServiceName = serviceName; + item.ChannelId = _tvDtoService.GetInternalChannelId(serviceName, info.ChannelId).ToString("N"); + item.CommunityRating = info.CommunityRating; + item.OfficialRating = info.OfficialRating; + item.Overview = info.Overview; + item.EndDate = info.EndDate; + item.Genres = info.Genres; + + var recording = (ILiveTvRecording)item; + + recording.ExternalId = info.Id; + + recording.ProgramId = _tvDtoService.GetInternalProgramId(serviceName, info.ProgramId).ToString("N"); + recording.Audio = info.Audio; + recording.ChannelType = info.ChannelType; + recording.EndDate = info.EndDate; + recording.EpisodeTitle = info.EpisodeTitle; + recording.ProviderImagePath = info.ImagePath; + recording.ProviderImageUrl = info.ImageUrl; + recording.IsHD = info.IsHD; + recording.IsKids = info.IsKids; + recording.IsLive = info.IsLive; + recording.IsMovie = info.IsMovie; + recording.IsNews = info.IsNews; + recording.IsPremiere = info.IsPremiere; + recording.IsRepeat = info.IsRepeat; + recording.IsSeries = info.IsSeries; + recording.IsSports = info.IsSports; + recording.OriginalAirDate = info.OriginalAirDate; + recording.SeriesTimerId = info.SeriesTimerId; + recording.StartDate = info.StartDate; + recording.Status = info.Status; + + recording.ServiceName = serviceName; var originalPath = item.Path; @@ -683,101 +702,58 @@ namespace MediaBrowser.Server.Implementations.LiveTv var pathChanged = !string.Equals(originalPath, item.Path); - await item.RefreshMetadata(new MetadataRefreshOptions + if (isNew) { - ForceSave = isNew || pathChanged - - }, cancellationToken); - - _libraryManager.RegisterItem((BaseItem)item); - - return item; - } - - private LiveTvChannel GetChannel(LiveTvProgram program) - { - var programChannelId = program.ExternalChannelId; - - if (string.IsNullOrWhiteSpace(programChannelId)) return null; + await _libraryManager.CreateItem(item, cancellationToken).ConfigureAwait(false); + } + else if (pathChanged) + { + await _libraryManager.UpdateItem(item, ItemUpdateType.MetadataImport, cancellationToken).ConfigureAwait(false); + } - var internalProgramChannelId = _tvDtoService.GetInternalChannelId(program.ServiceName, programChannelId); + _providerManager.QueueRefresh(item.Id, new MetadataRefreshOptions()); - return GetInternalChannel(internalProgramChannelId); + return item.Id; } - public async Task<ProgramInfoDto> GetProgram(string id, CancellationToken cancellationToken, User user = null) + public async Task<BaseItemDto> GetProgram(string id, CancellationToken cancellationToken, User user = null) { var program = GetInternalProgram(id); - var channel = GetChannel(program); - - var dto = _tvDtoService.GetProgramInfoDto(program, channel, user); + var dto = _dtoService.GetBaseItemDto(program, new DtoOptions(), user); await AddRecordingInfo(new[] { dto }, cancellationToken).ConfigureAwait(false); return dto; } - public async Task<QueryResult<ProgramInfoDto>> GetPrograms(ProgramQuery query, CancellationToken cancellationToken) + public async Task<QueryResult<BaseItemDto>> GetPrograms(ProgramQuery query, CancellationToken cancellationToken) { - IEnumerable<LiveTvProgram> programs = GetPrograms(); - - if (query.MinEndDate.HasValue) - { - var val = query.MinEndDate.Value; - - programs = programs.Where(i => i.EndDate.HasValue && i.EndDate.Value >= val); - } - - if (query.MinStartDate.HasValue) - { - var val = query.MinStartDate.Value; - - programs = programs.Where(i => i.StartDate >= val); - } - - if (query.MaxEndDate.HasValue) - { - var val = query.MaxEndDate.Value; - - programs = programs.Where(i => i.EndDate.HasValue && i.EndDate.Value <= val); - } - - if (query.MaxStartDate.HasValue) + var internalQuery = new InternalItemsQuery { - var val = query.MaxStartDate.Value; - - programs = programs.Where(i => i.StartDate <= val); - } + IncludeItemTypes = new[] { typeof(LiveTvProgram).Name }, + MinEndDate = query.MinEndDate, + MinStartDate = query.MinStartDate, + MaxEndDate = query.MaxEndDate, + MaxStartDate = query.MaxStartDate, + ChannelIds = query.ChannelIds, + IsMovie = query.IsMovie, + IsSports = query.IsSports + }; if (query.HasAired.HasValue) { - var val = query.HasAired.Value; - programs = programs.Where(i => i.HasAired == val); - } - - if (query.ChannelIds.Length > 0) - { - var guids = query.ChannelIds.Select(i => new Guid(i)).ToList(); - - programs = programs.Where(i => + if (query.HasAired.Value) { - var programChannelId = i.ExternalChannelId; - - var service = GetService(i); - var internalProgramChannelId = _tvDtoService.GetInternalChannelId(service.Name, programChannelId); - - return guids.Contains(internalProgramChannelId); - }); + internalQuery.MaxEndDate = DateTime.UtcNow; + } + else + { + internalQuery.MinEndDate = DateTime.UtcNow; + } } - var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(query.UserId); - if (user != null) - { - // Avoid implicitly captured closure - var currentUser = user; - programs = programs.Where(i => i.IsVisible(currentUser)); - } + IEnumerable<LiveTvProgram> programs = _libraryManager.GetItems(internalQuery).Items.Cast<LiveTvProgram>(); // Apply genre filter if (query.Genres.Length > 0) @@ -785,14 +761,12 @@ namespace MediaBrowser.Server.Implementations.LiveTv programs = programs.Where(p => p.Genres.Any(g => query.Genres.Contains(g, StringComparer.OrdinalIgnoreCase))); } - if (query.IsMovie.HasValue) - { - programs = programs.Where(p => p.IsMovie == query.IsMovie); - } - - if (query.IsSports.HasValue) + var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(query.UserId); + if (user != null) { - programs = programs.Where(p => p.IsSports == query.IsSports); + // Avoid implicitly captured closure + var currentUser = user; + programs = programs.Where(i => i.IsVisible(currentUser)); } programs = _libraryManager.Sort(programs, user, query.SortBy, query.SortOrder ?? SortOrder.Ascending) @@ -812,19 +786,12 @@ namespace MediaBrowser.Server.Implementations.LiveTv } var returnArray = returnPrograms - .Select(i => - { - var channel = GetChannel(i); - - return _tvDtoService.GetProgramInfoDto(i, channel, user); - }) + .Select(i => _dtoService.GetBaseItemDto(i, new DtoOptions(), user)) .ToArray(); - RefreshIfNeeded(programList); - await AddRecordingInfo(returnArray, cancellationToken).ConfigureAwait(false); - var result = new QueryResult<ProgramInfoDto> + var result = new QueryResult<BaseItemDto> { Items = returnArray, TotalRecordCount = programList.Count @@ -835,35 +802,33 @@ namespace MediaBrowser.Server.Implementations.LiveTv public async Task<QueryResult<LiveTvProgram>> GetRecommendedProgramsInternal(RecommendedProgramQuery query, CancellationToken cancellationToken) { - IEnumerable<LiveTvProgram> programs = GetPrograms(); - - var user = _userManager.GetUserById(query.UserId); - - // Avoid implicitly captured closure - var currentUser = user; - programs = programs.Where(i => i.IsVisible(currentUser)); - - if (query.IsAiring.HasValue) + var internalQuery = new InternalItemsQuery { - var val = query.IsAiring.Value; - programs = programs.Where(i => i.IsAiring == val); - } + IncludeItemTypes = new[] { typeof(LiveTvProgram).Name }, + IsAiring = query.IsAiring, + IsMovie = query.IsMovie, + IsSports = query.IsSports + }; if (query.HasAired.HasValue) { - var val = query.HasAired.Value; - programs = programs.Where(i => i.HasAired == val); + if (query.HasAired.Value) + { + internalQuery.MaxEndDate = DateTime.UtcNow; + } + else + { + internalQuery.MinEndDate = DateTime.UtcNow; + } } - if (query.IsMovie.HasValue) - { - programs = programs.Where(p => p.IsMovie == query.IsMovie.Value); - } + IEnumerable<LiveTvProgram> programs = _libraryManager.GetItems(internalQuery).Items.Cast<LiveTvProgram>(); - if (query.IsSports.HasValue) - { - programs = programs.Where(p => p.IsSports == query.IsSports.Value); - } + var user = _userManager.GetUserById(query.UserId); + + // Avoid implicitly captured closure + var currentUser = user; + programs = programs.Where(i => i.IsVisible(currentUser)); var programList = programs.ToList(); @@ -884,8 +849,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv programList = programs.ToList(); - RefreshIfNeeded(programList); - var returnArray = programList.ToArray(); var result = new QueryResult<LiveTvProgram> @@ -897,24 +860,19 @@ namespace MediaBrowser.Server.Implementations.LiveTv return result; } - public async Task<QueryResult<ProgramInfoDto>> GetRecommendedPrograms(RecommendedProgramQuery query, CancellationToken cancellationToken) + public async Task<QueryResult<BaseItemDto>> GetRecommendedPrograms(RecommendedProgramQuery query, CancellationToken cancellationToken) { var internalResult = await GetRecommendedProgramsInternal(query, cancellationToken).ConfigureAwait(false); var user = _userManager.GetUserById(query.UserId); var returnArray = internalResult.Items - .Select(i => - { - var channel = GetChannel(i); - - return _tvDtoService.GetProgramInfoDto(i, channel, user); - }) + .Select(i => _dtoService.GetBaseItemDto(i, new DtoOptions(), user)) .ToArray(); await AddRecordingInfo(returnArray, cancellationToken).ConfigureAwait(false); - var result = new QueryResult<ProgramInfoDto> + var result = new QueryResult<BaseItemDto> { Items = returnArray, TotalRecordCount = internalResult.TotalRecordCount @@ -937,8 +895,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv score++; } - var internalChannelId = _tvDtoService.GetInternalChannelId(program.ServiceName, program.ExternalChannelId); - var channel = GetInternalChannel(internalChannelId); + var channel = GetInternalChannel(program.ChannelId); var channelUserdata = _userDataManager.GetUserData(userId, channel.GetUserDataKey()); @@ -993,54 +950,49 @@ namespace MediaBrowser.Server.Implementations.LiveTv }).Sum(); } - private async Task AddRecordingInfo(IEnumerable<ProgramInfoDto> programs, CancellationToken cancellationToken) + private async Task AddRecordingInfo(IEnumerable<BaseItemDto> programs, CancellationToken cancellationToken) { var timers = new Dictionary<string, List<TimerInfo>>(); foreach (var program in programs) { + var internalProgram = GetInternalProgram(program.Id); + List<TimerInfo> timerList; - if (!timers.TryGetValue(program.ServiceName, out timerList)) + if (!timers.TryGetValue(internalProgram.ServiceName, out timerList)) { try { - var tempTimers = await GetService(program.ServiceName).GetTimersAsync(cancellationToken).ConfigureAwait(false); - timers[program.ServiceName] = timerList = tempTimers.ToList(); + var tempTimers = await GetService(internalProgram.ServiceName).GetTimersAsync(cancellationToken).ConfigureAwait(false); + timers[internalProgram.ServiceName] = timerList = tempTimers.ToList(); } catch (Exception ex) { _logger.ErrorException("Error getting timer infos", ex); - timers[program.ServiceName] = timerList = new List<TimerInfo>(); + timers[internalProgram.ServiceName] = timerList = new List<TimerInfo>(); } } - var timer = timerList.FirstOrDefault(i => string.Equals(i.ProgramId, program.ExternalId, StringComparison.OrdinalIgnoreCase)); + + var timer = timerList.FirstOrDefault(i => string.Equals(i.ProgramId, internalProgram.ExternalId, StringComparison.OrdinalIgnoreCase)); if (timer != null) { - program.TimerId = _tvDtoService.GetInternalTimerId(program.ServiceName, timer.Id) + program.TimerId = _tvDtoService.GetInternalTimerId(internalProgram.ServiceName, timer.Id) .ToString("N"); if (!string.IsNullOrEmpty(timer.SeriesTimerId)) { - program.SeriesTimerId = _tvDtoService.GetInternalSeriesTimerId(program.ServiceName, timer.SeriesTimerId) + program.SeriesTimerId = _tvDtoService.GetInternalSeriesTimerId(internalProgram.ServiceName, timer.SeriesTimerId) .ToString("N"); } } } } - internal async Task RefreshChannels(IProgress<double> progress, CancellationToken cancellationToken) + internal Task RefreshChannels(IProgress<double> progress, CancellationToken cancellationToken) { - var innerProgress = new ActionableProgress<double>(); - innerProgress.RegisterAction(p => progress.Report(p * .9)); - await RefreshChannelsInternal(innerProgress, cancellationToken).ConfigureAwait(false); - - innerProgress = new ActionableProgress<double>(); - innerProgress.RegisterAction(p => progress.Report(90 + (p * .1))); - await CleanDatabaseInternal(progress, cancellationToken).ConfigureAwait(false); - - RefreshIfNeeded(GetPrograms().ToList()); + return RefreshChannelsInternal(progress, cancellationToken); } private async Task RefreshChannelsInternal(IProgress<double> progress, CancellationToken cancellationToken) @@ -1050,6 +1002,9 @@ namespace MediaBrowser.Server.Implementations.LiveTv ? 0 : 1 / _services.Count; + var newChannelIdList = new List<Guid>(); + var newProgramIdList = new List<Guid>(); + foreach (var service in _services) { cancellationToken.ThrowIfCancellationRequested(); @@ -1059,7 +1014,10 @@ namespace MediaBrowser.Server.Implementations.LiveTv var innerProgress = new ActionableProgress<double>(); innerProgress.RegisterAction(p => progress.Report(p * progressPerService)); - await RefreshChannelsInternal(service, innerProgress, cancellationToken).ConfigureAwait(false); + var idList = await RefreshChannelsInternal(service, innerProgress, cancellationToken).ConfigureAwait(false); + + newChannelIdList.AddRange(idList.Item1); + newProgramIdList.AddRange(idList.Item2); } catch (OperationCanceledException) { @@ -1077,10 +1035,18 @@ namespace MediaBrowser.Server.Implementations.LiveTv progress.Report(100 * percent); } + await CleanDatabaseInternal(newChannelIdList, new[] { typeof(LiveTvChannel).Name }, progress, cancellationToken).ConfigureAwait(false); + await CleanDatabaseInternal(newProgramIdList, new[] { typeof(LiveTvProgram).Name }, progress, cancellationToken).ConfigureAwait(false); + + // Load these now which will prefetch metadata + var dtoOptions = new DtoOptions(); + dtoOptions.Fields.Remove(ItemFields.SyncInfo); + await GetRecordings(new RecordingQuery(), dtoOptions, cancellationToken).ConfigureAwait(false); + progress.Report(100); } - private async Task RefreshChannelsInternal(ILiveTvService service, IProgress<double> progress, CancellationToken cancellationToken) + private async Task<Tuple<List<Guid>, List<Guid>>> RefreshChannelsInternal(ILiveTvService service, IProgress<double> progress, CancellationToken cancellationToken) { progress.Report(10); @@ -1119,23 +1085,21 @@ namespace MediaBrowser.Server.Implementations.LiveTv progress.Report(5 * percent + 10); } - _channelIdList = list.Select(i => i.Id).ToList(); progress.Report(15); numComplete = 0; - var programs = new List<LiveTvProgram>(); + var programs = new List<Guid>(); + var channels = new List<Guid>(); var guideDays = GetGuideDays(list.Count); cancellationToken.ThrowIfCancellationRequested(); - foreach (var item in list) + foreach (var currentChannel in list) { + channels.Add(currentChannel.Id); cancellationToken.ThrowIfCancellationRequested(); - // Avoid implicitly captured closure - var currentChannel = item; - try { var start = DateTime.UtcNow.AddHours(-1); @@ -1143,9 +1107,12 @@ namespace MediaBrowser.Server.Implementations.LiveTv var channelPrograms = await service.GetProgramsAsync(currentChannel.ExternalId, start, end, cancellationToken).ConfigureAwait(false); + var channelId = currentChannel.Id.ToString("N"); + foreach (var program in channelPrograms) { - programs.Add(await GetProgram(program, currentChannel.ChannelType, service.Name, cancellationToken).ConfigureAwait(false)); + var programItem = await GetProgram(program, channelId, currentChannel.ChannelType, service.Name, cancellationToken).ConfigureAwait(false); + programs.Add(programItem.Id); } } catch (OperationCanceledException) @@ -1163,44 +1130,36 @@ namespace MediaBrowser.Server.Implementations.LiveTv progress.Report(80 * percent + 10); } - - lock (_programsDataLock) - { - _programs = programs.ToDictionary(i => i.Id); - } - - _refreshedPrograms.Clear(); - progress.Report(90); - - // Load these now which will prefetch metadata - var dtoOptions = new DtoOptions(); - dtoOptions.Fields.Remove(ItemFields.SyncInfo); - await GetRecordings(new RecordingQuery(), dtoOptions, cancellationToken).ConfigureAwait(false); progress.Report(100); - } - private Task CleanDatabaseInternal(IProgress<double> progress, CancellationToken cancellationToken) - { - return DeleteOldPrograms(GetProgramsDictionary().Keys.ToList(), progress, cancellationToken); + return new Tuple<List<Guid>, List<Guid>>(channels, programs); } - private async Task DeleteOldPrograms(List<Guid> currentIdList, IProgress<double> progress, CancellationToken cancellationToken) + private async Task CleanDatabaseInternal(List<Guid> currentIdList, string[] validTypes, IProgress<double> progress, CancellationToken cancellationToken) { - var list = _itemRepo.GetItemIdsOfType(typeof(LiveTvProgram)).ToList(); + var list = _itemRepo.GetItemIds(new InternalItemsQuery + { + IncludeItemTypes = validTypes + + }).Items.ToList(); var numComplete = 0; - foreach (var programId in list) + foreach (var itemId in list) { cancellationToken.ThrowIfCancellationRequested(); - if (!currentIdList.Contains(programId)) + if (!currentIdList.Contains(itemId)) { - var program = _libraryManager.GetItemById(programId); + var item = _libraryManager.GetItemById(itemId); - if (program != null) + if (item != null) { - await _libraryManager.DeleteItem(program).ConfigureAwait(false); + await _libraryManager.DeleteItem(item, new DeleteOptions + { + DeleteFileLocation = false + + }).ConfigureAwait(false); } } @@ -1237,64 +1196,103 @@ namespace MediaBrowser.Server.Implementations.LiveTv return channels.Select(i => new Tuple<string, ChannelInfo>(service.Name, i)); } - public async Task<QueryResult<BaseItem>> GetInternalRecordings(RecordingQuery query, CancellationToken cancellationToken) + private DateTime _lastRecordingRefreshTime; + private async Task RefreshRecordings(CancellationToken cancellationToken) { - var tasks = _services.Select(async i => + const int cacheMinutes = 5; + + if ((DateTime.UtcNow - _lastRecordingRefreshTime).TotalMinutes < cacheMinutes) { - try + return; + } + + await _refreshRecordingsLock.WaitAsync(cancellationToken).ConfigureAwait(false); + + try + { + if ((DateTime.UtcNow - _lastRecordingRefreshTime).TotalMinutes < cacheMinutes) { - var recs = await i.GetRecordingsAsync(cancellationToken).ConfigureAwait(false); - return recs.Select(r => new Tuple<RecordingInfo, ILiveTvService>(r, i)); + return; } - catch (Exception ex) + + var tasks = _services.Select(async i => { - _logger.ErrorException("Error getting recordings", ex); - return new List<Tuple<RecordingInfo, ILiveTvService>>(); - } - }); - var results = await Task.WhenAll(tasks).ConfigureAwait(false); - var recordings = results.SelectMany(i => i.ToList()); + try + { + var recs = await i.GetRecordingsAsync(cancellationToken).ConfigureAwait(false); + return recs.Select(r => new Tuple<RecordingInfo, ILiveTvService>(r, i)); + } + catch (Exception ex) + { + _logger.ErrorException("Error getting recordings", ex); + return new List<Tuple<RecordingInfo, ILiveTvService>>(); + } + }); - var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(query.UserId); + var results = await Task.WhenAll(tasks).ConfigureAwait(false); + var recordingTasks = results.SelectMany(i => i.ToList()).Select(i => CreateRecordingRecord(i.Item1, i.Item2.Name, cancellationToken)); + + var idList = await Task.WhenAll(recordingTasks).ConfigureAwait(false); + + CleanDatabaseInternal(idList.ToList(), new[] { typeof(LiveTvVideoRecording).Name, typeof(LiveTvAudioRecording).Name }, new Progress<double>(), cancellationToken).ConfigureAwait(false); + + _lastRecordingRefreshTime = DateTime.UtcNow; + } + finally + { + _refreshRecordingsLock.Release(); + } + } + + public async Task<QueryResult<BaseItem>> GetInternalRecordings(RecordingQuery query, CancellationToken cancellationToken) + { + var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(query.UserId); if (user != null && !IsLiveTvEnabled(user)) { - recordings = new List<Tuple<RecordingInfo, ILiveTvService>>(); + return new QueryResult<BaseItem>(); } - if (!string.IsNullOrEmpty(query.ChannelId)) + await RefreshRecordings(cancellationToken).ConfigureAwait(false); + + var internalQuery = new InternalItemsQuery { - var guid = new Guid(query.ChannelId); + IncludeItemTypes = new[] { typeof(LiveTvVideoRecording).Name, typeof(LiveTvAudioRecording).Name } + }; - recordings = recordings - .Where(i => _tvDtoService.GetInternalChannelId(i.Item2.Name, i.Item1.ChannelId) == guid); + if (!string.IsNullOrEmpty(query.ChannelId)) + { + internalQuery.ChannelIds = new[] { query.ChannelId }; } + var queryResult = _libraryManager.GetItems(internalQuery); + IEnumerable<ILiveTvRecording> recordings = queryResult.Items.Cast<ILiveTvRecording>(); + if (!string.IsNullOrEmpty(query.Id)) { var guid = new Guid(query.Id); recordings = recordings - .Where(i => _tvDtoService.GetInternalRecordingId(i.Item2.Name, i.Item1.Id) == guid); + .Where(i => i.Id == guid); } if (!string.IsNullOrEmpty(query.GroupId)) { var guid = new Guid(query.GroupId); - recordings = recordings.Where(i => GetRecordingGroupIds(i.Item1).Contains(guid)); + recordings = recordings.Where(i => GetRecordingGroupIds(i).Contains(guid)); } if (query.IsInProgress.HasValue) { var val = query.IsInProgress.Value; - recordings = recordings.Where(i => (i.Item1.Status == RecordingStatus.InProgress) == val); + recordings = recordings.Where(i => (i.Status == RecordingStatus.InProgress) == val); } if (query.Status.HasValue) { var val = query.Status.Value; - recordings = recordings.Where(i => (i.Item1.Status == val)); + recordings = recordings.Where(i => (i.Status == val)); } if (!string.IsNullOrEmpty(query.SeriesTimerId)) @@ -1302,21 +1300,19 @@ namespace MediaBrowser.Server.Implementations.LiveTv var guid = new Guid(query.SeriesTimerId); recordings = recordings - .Where(i => _tvDtoService.GetInternalSeriesTimerId(i.Item2.Name, i.Item1.SeriesTimerId) == guid); + .Where(i => _tvDtoService.GetInternalSeriesTimerId(i.ServiceName, i.SeriesTimerId) == guid); } - recordings = recordings.OrderByDescending(i => i.Item1.StartDate); - - IEnumerable<ILiveTvRecording> entities = await GetEntities(recordings, cancellationToken).ConfigureAwait(false); - if (user != null) { var currentUser = user; - entities = entities.Where(i => i.IsParentalAllowed(currentUser)); + recordings = recordings.Where(i => i.IsParentalAllowed(currentUser)); } - var entityList = entities.ToList(); - entities = entityList; + recordings = recordings.OrderByDescending(i => i.StartDate); + + var entityList = recordings.ToList(); + IEnumerable<ILiveTvRecording> entities = entityList; if (query.StartIndex.HasValue) { @@ -1335,20 +1331,122 @@ namespace MediaBrowser.Server.Implementations.LiveTv }; } - public async Task<QueryResult<RecordingInfoDto>> GetRecordings(RecordingQuery query, DtoOptions options, CancellationToken cancellationToken) + public void AddInfoToProgramDto(BaseItem item, BaseItemDto dto, User user = null) { - var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(query.UserId); + var program = (LiveTvProgram)item; + var service = GetService(program); - var internalResult = await GetInternalRecordings(query, cancellationToken).ConfigureAwait(false); + var channel = GetInternalChannel(program.ChannelId); - var returnArray = internalResult.Items.Cast<ILiveTvRecording>() - .Select(i => + dto.Id = _tvDtoService.GetInternalProgramId(service.Name, program.ExternalId).ToString("N"); + + dto.ChannelId = item.ChannelId; + + dto.StartDate = program.StartDate; + dto.IsRepeat = program.IsRepeat; + dto.EpisodeTitle = program.EpisodeTitle; + dto.ChannelType = program.ChannelType; + dto.Audio = program.Audio; + dto.IsHD = program.IsHD; + dto.IsMovie = program.IsMovie; + dto.IsSeries = program.IsSeries; + dto.IsSports = program.IsSports; + dto.IsLive = program.IsLive; + dto.IsNews = program.IsNews; + dto.IsKids = program.IsKids; + dto.IsPremiere = program.IsPremiere; + dto.OriginalAirDate = program.OriginalAirDate; + + if (channel != null) + { + dto.ChannelName = channel.Name; + + if (!string.IsNullOrEmpty(channel.PrimaryImagePath)) { - var service = GetService(i); + dto.ChannelPrimaryImageTag = _tvDtoService.GetImageTag(channel); + } + } + } - var channel = string.IsNullOrEmpty(i.RecordingInfo.ChannelId) ? null : GetInternalChannel(_tvDtoService.GetInternalChannelId(service.Name, i.RecordingInfo.ChannelId)); - return _tvDtoService.GetRecordingInfoDto(i, channel, service, user); - }) + public void AddInfoToRecordingDto(BaseItem item, BaseItemDto dto, User user = null) + { + var recording = (ILiveTvRecording)item; + var service = GetService(recording); + + var channel = string.IsNullOrWhiteSpace(recording.ChannelId) ? null : GetInternalChannel(recording.ChannelId); + + var info = recording; + + dto.Id = item.Id.ToString("N"); + dto.SeriesTimerId = string.IsNullOrEmpty(info.SeriesTimerId) + ? null + : _tvDtoService.GetInternalSeriesTimerId(service.Name, info.SeriesTimerId).ToString("N"); + + dto.ChannelId = item.ChannelId; + + dto.StartDate = info.StartDate; + dto.RecordingStatus = info.Status; + dto.IsRepeat = info.IsRepeat; + dto.EpisodeTitle = info.EpisodeTitle; + dto.ChannelType = info.ChannelType; + dto.Audio = info.Audio; + dto.IsHD = info.IsHD; + dto.IsMovie = info.IsMovie; + dto.IsSeries = info.IsSeries; + dto.IsSports = info.IsSports; + dto.IsLive = info.IsLive; + dto.IsNews = info.IsNews; + dto.IsKids = info.IsKids; + dto.IsPremiere = info.IsPremiere; + dto.OriginalAirDate = info.OriginalAirDate; + + dto.CanDelete = user == null + ? recording.CanDelete() + : recording.CanDelete(user); + + if (dto.MediaSources == null) + { + dto.MediaSources = recording.GetMediaSources(true).ToList(); + } + + if (dto.MediaStreams == null) + { + dto.MediaStreams = dto.MediaSources.SelectMany(i => i.MediaStreams).ToList(); + } + + if (info.Status == RecordingStatus.InProgress && info.EndDate.HasValue) + { + var now = DateTime.UtcNow.Ticks; + var start = info.StartDate.Ticks; + var end = info.EndDate.Value.Ticks; + + var pct = now - start; + pct /= end; + pct *= 100; + dto.CompletionPercentage = pct; + } + + dto.ProgramId = info.ProgramId; + + if (channel != null) + { + dto.ChannelName = channel.Name; + + if (!string.IsNullOrEmpty(channel.PrimaryImagePath)) + { + dto.ChannelPrimaryImageTag = _tvDtoService.GetImageTag(channel); + } + } + } + + public async Task<QueryResult<BaseItemDto>> GetRecordings(RecordingQuery query, DtoOptions options, CancellationToken cancellationToken) + { + var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(query.UserId); + + var internalResult = await GetInternalRecordings(query, cancellationToken).ConfigureAwait(false); + + var returnArray = internalResult.Items + .Select(i => _dtoService.GetBaseItemDto(i, options, user)) .ToArray(); if (user != null) @@ -1356,20 +1454,13 @@ namespace MediaBrowser.Server.Implementations.LiveTv _dtoService.FillSyncInfo(returnArray, new DtoOptions(), user); } - return new QueryResult<RecordingInfoDto> + return new QueryResult<BaseItemDto> { Items = returnArray, TotalRecordCount = internalResult.TotalRecordCount }; } - private Task<ILiveTvRecording[]> GetEntities(IEnumerable<Tuple<RecordingInfo, ILiveTvService>> recordings, CancellationToken cancellationToken) - { - var tasks = recordings.Select(i => GetRecording(i.Item1, i.Item2.Name, cancellationToken)); - - return Task.WhenAll(tasks); - } - public async Task<QueryResult<TimerInfoDto>> GetTimers(TimerQuery query, CancellationToken cancellationToken) { var tasks = _services.Select(async i => @@ -1428,10 +1519,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv public async Task DeleteRecording(string recordingId) { - var dtoOptions = new DtoOptions(); - dtoOptions.Fields.Remove(ItemFields.SyncInfo); - - var recording = await GetRecording(recordingId, dtoOptions, CancellationToken.None).ConfigureAwait(false); + var recording = await GetInternalRecording(recordingId, CancellationToken.None).ConfigureAwait(false); if (recording == null) { @@ -1441,6 +1529,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv var service = GetService(recording.ServiceName); await service.DeleteRecordingAsync(recording.ExternalId, CancellationToken.None).ConfigureAwait(false); + _lastRecordingRefreshTime = DateTime.MinValue; } public async Task CancelTimer(string id) @@ -1455,6 +1544,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv var service = GetService(timer.ServiceName); await service.CancelTimerAsync(timer.ExternalId, CancellationToken.None).ConfigureAwait(false); + _lastRecordingRefreshTime = DateTime.MinValue; } public async Task CancelSeriesTimer(string id) @@ -1469,18 +1559,19 @@ namespace MediaBrowser.Server.Implementations.LiveTv var service = GetService(timer.ServiceName); await service.CancelSeriesTimerAsync(timer.ExternalId, CancellationToken.None).ConfigureAwait(false); + _lastRecordingRefreshTime = DateTime.MinValue; } - public async Task<RecordingInfoDto> GetRecording(string id, DtoOptions options, CancellationToken cancellationToken, User user = null) + public async Task<BaseItemDto> GetRecording(string id, DtoOptions options, CancellationToken cancellationToken, User user = null) { - var results = await GetRecordings(new RecordingQuery - { - UserId = user == null ? null : user.Id.ToString("N"), - Id = id + var item = await GetInternalRecording(id, cancellationToken).ConfigureAwait(false); - }, options, cancellationToken).ConfigureAwait(false); + if (item == null) + { + return null; + } - return results.Items.FirstOrDefault(); + return _dtoService.GetBaseItemDto((BaseItem)item, options, user); } public async Task<TimerInfoDto> GetTimer(string id, CancellationToken cancellationToken) @@ -1556,29 +1647,25 @@ namespace MediaBrowser.Server.Implementations.LiveTv { var channel = GetInternalChannel(id); - var currentProgram = GetCurrentProgram(channel.ExternalId); - - var dto = _tvDtoService.GetChannelInfoDto(channel, currentProgram, user); + var now = DateTime.UtcNow; - return dto; - } + var programs = _libraryManager.GetItems(new InternalItemsQuery + { + IncludeItemTypes = new[] { typeof(LiveTvProgram).Name }, + ChannelIds = new[] { id }, + MaxStartDate = now, + MinEndDate = now, + Limit = 1 - private LiveTvProgram GetCurrentProgram(string externalChannelId) - { - var now = DateTime.UtcNow; + }).Items.Cast<LiveTvProgram>(); - var program = GetPrograms() - .Where(i => string.Equals(externalChannelId, i.ExternalChannelId, StringComparison.OrdinalIgnoreCase)) + var currentProgram = programs .OrderBy(i => i.StartDate) - .SkipWhile(i => now >= (i.EndDate ?? DateTime.MinValue)) .FirstOrDefault(); - if (program != null) - { - RefreshIfNeeded(program); - } + var dto = _tvDtoService.GetChannelInfoDto(channel, currentProgram, user); - return program; + return dto; } private async Task<Tuple<SeriesTimerInfo, ILiveTvService>> GetNewTimerDefaultsInternal(CancellationToken cancellationToken, LiveTvProgram program = null) @@ -1591,10 +1678,12 @@ namespace MediaBrowser.Server.Implementations.LiveTv if (program != null) { + var channel = GetInternalChannel(program.ChannelId); + programInfo = new ProgramInfo { Audio = program.Audio, - ChannelId = program.ExternalChannelId, + ChannelId = channel.ExternalId, CommunityRating = program.CommunityRating, EndDate = program.EndDate ?? DateTime.MinValue, EpisodeTitle = program.EpisodeTitle, @@ -1658,7 +1747,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv info.Name = program.Name; info.Overview = program.Overview; info.ProgramId = programDto.Id; - info.ExternalProgramId = programDto.ExternalId; + info.ExternalProgramId = program.ExternalId; if (program.EndDate.HasValue) { @@ -1679,6 +1768,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv info.Priority = defaultValues.Priority; await service.CreateTimerAsync(info, cancellationToken).ConfigureAwait(false); + _lastRecordingRefreshTime = DateTime.MinValue; } public async Task CreateSeriesTimer(SeriesTimerInfoDto timer, CancellationToken cancellationToken) @@ -1692,6 +1782,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv info.Priority = defaultValues.Priority; await service.CreateSeriesTimerAsync(info, cancellationToken).ConfigureAwait(false); + _lastRecordingRefreshTime = DateTime.MinValue; } public async Task UpdateTimer(TimerInfoDto timer, CancellationToken cancellationToken) @@ -1701,6 +1792,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv var service = GetService(timer.ServiceName); await service.UpdateTimerAsync(info, cancellationToken).ConfigureAwait(false); + _lastRecordingRefreshTime = DateTime.MinValue; } public async Task UpdateSeriesTimer(SeriesTimerInfoDto timer, CancellationToken cancellationToken) @@ -1710,9 +1802,10 @@ namespace MediaBrowser.Server.Implementations.LiveTv var service = GetService(timer.ServiceName); await service.UpdateSeriesTimerAsync(info, cancellationToken).ConfigureAwait(false); + _lastRecordingRefreshTime = DateTime.MinValue; } - private IEnumerable<string> GetRecordingGroupNames(RecordingInfo recording) + private IEnumerable<string> GetRecordingGroupNames(ILiveTvRecording recording) { var list = new List<string>(); @@ -1749,64 +1842,61 @@ namespace MediaBrowser.Server.Implementations.LiveTv return list; } - private List<Guid> GetRecordingGroupIds(RecordingInfo recording) + private List<Guid> GetRecordingGroupIds(ILiveTvRecording recording) { return GetRecordingGroupNames(recording).Select(i => i.ToLower() .GetMD5()) .ToList(); } - public async Task<QueryResult<RecordingGroupDto>> GetRecordingGroups(RecordingGroupQuery query, CancellationToken cancellationToken) + public async Task<QueryResult<BaseItemDto>> GetRecordingGroups(RecordingGroupQuery query, CancellationToken cancellationToken) { - var dtoOptions = new DtoOptions(); - dtoOptions.Fields.Remove(ItemFields.SyncInfo); - - var recordingResult = await GetRecordings(new RecordingQuery + var recordingResult = await GetInternalRecordings(new RecordingQuery { UserId = query.UserId - }, dtoOptions, cancellationToken).ConfigureAwait(false); + }, cancellationToken).ConfigureAwait(false); - var recordings = recordingResult.Items; + var recordings = recordingResult.Items.Cast<ILiveTvRecording>().ToList(); - var groups = new List<RecordingGroupDto>(); + var groups = new List<BaseItemDto>(); var series = recordings .Where(i => i.IsSeries) .ToLookup(i => i.Name, StringComparer.OrdinalIgnoreCase) .ToList(); - groups.AddRange(series.OrderByString(i => i.Key).Select(i => new RecordingGroupDto + groups.AddRange(series.OrderByString(i => i.Key).Select(i => new BaseItemDto { Name = i.Key, RecordingCount = i.Count() })); - groups.Add(new RecordingGroupDto + groups.Add(new BaseItemDto { Name = "Kids", RecordingCount = recordings.Count(i => i.IsKids) }); - groups.Add(new RecordingGroupDto + groups.Add(new BaseItemDto { Name = "Movies", RecordingCount = recordings.Count(i => i.IsMovie) }); - groups.Add(new RecordingGroupDto + groups.Add(new BaseItemDto { Name = "News", RecordingCount = recordings.Count(i => i.IsNews) }); - groups.Add(new RecordingGroupDto + groups.Add(new BaseItemDto { Name = "Sports", RecordingCount = recordings.Count(i => i.IsSports) }); - groups.Add(new RecordingGroupDto + groups.Add(new BaseItemDto { Name = "Others", RecordingCount = recordings.Count(i => !i.IsSports && !i.IsNews && !i.IsMovie && !i.IsKids && !i.IsSeries) @@ -1821,7 +1911,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv group.Id = group.Name.ToLower().GetMD5().ToString("N"); } - return new QueryResult<RecordingGroupDto> + return new QueryResult<BaseItemDto> { Items = groups.ToArray(), TotalRecordCount = groups.Count @@ -1873,15 +1963,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv public GuideInfo GetGuideInfo() { - var programs = GetPrograms().OrderBy(i => i.StartDate).ToList(); - - var startDate = programs.Count == 0 ? - DateTime.MinValue : - programs[0].StartDate; - - var endDate = programs.Count == 0 ? - DateTime.MinValue : - programs[programs.Count - 1].StartDate; + var startDate = DateTime.UtcNow; + var endDate = startDate.AddDays(14); return new GuideInfo { diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs index 38c93a696..b26732441 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs @@ -1,10 +1,11 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.MediaEncoding; -using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Logging; +using MediaBrowser.Model.MediaInfo; using MediaBrowser.Model.Serialization; using System; using System.Collections.Generic; @@ -21,13 +22,15 @@ namespace MediaBrowser.Server.Implementations.LiveTv private readonly ILogger _logger; private readonly IMediaSourceManager _mediaSourceManager; private readonly IMediaEncoder _mediaEncoder; + private readonly IServerApplicationHost _appHost; - public LiveTvMediaSourceProvider(ILiveTvManager liveTvManager, IJsonSerializer jsonSerializer, ILogManager logManager, IMediaSourceManager mediaSourceManager, IMediaEncoder mediaEncoder) + public LiveTvMediaSourceProvider(ILiveTvManager liveTvManager, IJsonSerializer jsonSerializer, ILogManager logManager, IMediaSourceManager mediaSourceManager, IMediaEncoder mediaEncoder, IServerApplicationHost appHost) { _liveTvManager = liveTvManager; _jsonSerializer = jsonSerializer; _mediaSourceManager = mediaSourceManager; _mediaEncoder = mediaEncoder; + _appHost = appHost; _logger = logManager.GetLogger(GetType().Name); } @@ -74,6 +77,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv } var list = sources.ToList(); + var serverUrl = _appHost.LocalApiUrl; foreach (var source in list) { @@ -84,7 +88,14 @@ namespace MediaBrowser.Server.Implementations.LiveTv var openKeys = new List<string>(); openKeys.Add(item.GetType().Name); openKeys.Add(item.Id.ToString("N")); + openKeys.Add(source.Id ?? string.Empty); source.OpenToken = string.Join("|", openKeys.ToArray()); + + // Dummy this up so that direct play checks can still run + if (string.IsNullOrEmpty(source.Path) && source.Protocol == MediaProtocol.Http) + { + source.Path = serverUrl; + } } _logger.Debug("MediaSources: {0}", _jsonSerializer.SerializeToString(list)); @@ -95,13 +106,14 @@ namespace MediaBrowser.Server.Implementations.LiveTv public async Task<MediaSourceInfo> OpenMediaSource(string openToken, CancellationToken cancellationToken) { MediaSourceInfo stream; - var isAudio = false; + const bool isAudio = false; - var keys = openToken.Split(new[] { '|' }, 2); + var keys = openToken.Split(new[] { '|' }, 3); + var mediaSourceId = keys.Length >= 3 ? keys[2] : null; if (string.Equals(keys[0], typeof(LiveTvChannel).Name, StringComparison.OrdinalIgnoreCase)) { - stream = await _liveTvManager.GetChannelStream(keys[1], cancellationToken).ConfigureAwait(false); + stream = await _liveTvManager.GetChannelStream(keys[1], mediaSourceId, cancellationToken).ConfigureAwait(false); } else { @@ -124,25 +136,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv { var originalRuntime = mediaSource.RunTimeTicks; - var info = await _mediaEncoder.GetMediaInfo(new MediaInfoRequest - { - InputPath = mediaSource.Path, - Protocol = mediaSource.Protocol, - MediaType = isAudio ? DlnaProfileType.Audio : DlnaProfileType.Video, - ExtractChapters = false - - }, cancellationToken).ConfigureAwait(false); - - mediaSource.Bitrate = info.Bitrate; - mediaSource.Container = info.Container; - mediaSource.Formats = info.Formats; - mediaSource.MediaStreams = info.MediaStreams; - mediaSource.RunTimeTicks = info.RunTimeTicks; - mediaSource.Size = info.Size; - mediaSource.Timestamp = info.Timestamp; - mediaSource.Video3DFormat = info.Video3DFormat; - mediaSource.VideoType = info.VideoType; - mediaSource.DefaultSubtitleStreamIndex = null; // Null this out so that it will be treated like a live stream @@ -162,30 +155,40 @@ namespace MediaBrowser.Server.Implementations.LiveTv mediaSource.DefaultAudioStreamIndex = audioStream.Index; } - // Try to estimate this - if (!mediaSource.Bitrate.HasValue) + var videoStream = mediaSource.MediaStreams.FirstOrDefault(i => i.Type == Model.Entities.MediaStreamType.Video); + if (videoStream != null) { - var videoStream = mediaSource.MediaStreams.FirstOrDefault(i => i.Type == Model.Entities.MediaStreamType.Video); - if (videoStream != null) + if (!videoStream.BitRate.HasValue) { var width = videoStream.Width ?? 1920; if (width >= 1900) { - mediaSource.Bitrate = 10000000; + videoStream.BitRate = 8000000; } else if (width >= 1260) { - mediaSource.Bitrate = 6000000; + videoStream.BitRate = 3000000; } else if (width >= 700) { - mediaSource.Bitrate = 4000000; + videoStream.BitRate = 1000000; } } } + + // Try to estimate this + if (!mediaSource.Bitrate.HasValue) + { + var total = mediaSource.MediaStreams.Select(i => i.BitRate ?? 0).Sum(); + + if (total > 0) + { + mediaSource.Bitrate = total; + } + } } public Task CloseMediaSource(string liveStreamId, CancellationToken cancellationToken) diff --git a/MediaBrowser.Server.Implementations/LiveTv/ProgramImageProvider.cs b/MediaBrowser.Server.Implementations/LiveTv/ProgramImageProvider.cs index b01dddb94..134e24ef0 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/ProgramImageProvider.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/ProgramImageProvider.cs @@ -70,7 +70,9 @@ namespace MediaBrowser.Server.Implementations.LiveTv { try { - var response = await service.GetProgramImageAsync(liveTvItem.ExternalId, liveTvItem.ExternalChannelId, cancellationToken).ConfigureAwait(false); + var channel = _liveTvManager.GetInternalChannel(liveTvItem.ChannelId); + + var response = await service.GetProgramImageAsync(liveTvItem.ExternalId, channel.ExternalId, cancellationToken).ConfigureAwait(false); if (response != null) { diff --git a/MediaBrowser.Server.Implementations/LiveTv/RecordingImageProvider.cs b/MediaBrowser.Server.Implementations/LiveTv/RecordingImageProvider.cs index 710247da7..adf1e7516 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/RecordingImageProvider.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/RecordingImageProvider.cs @@ -36,17 +36,17 @@ namespace MediaBrowser.Server.Implementations.LiveTv var imageResponse = new DynamicImageResponse(); - if (!string.IsNullOrEmpty(liveTvItem.RecordingInfo.ImagePath)) + if (!string.IsNullOrEmpty(liveTvItem.ProviderImagePath)) { - imageResponse.Path = liveTvItem.RecordingInfo.ImagePath; + imageResponse.Path = liveTvItem.ProviderImagePath; imageResponse.HasImage = true; } - else if (!string.IsNullOrEmpty(liveTvItem.RecordingInfo.ImageUrl)) + else if (!string.IsNullOrEmpty(liveTvItem.ProviderImageUrl)) { var options = new HttpRequestOptions { CancellationToken = cancellationToken, - Url = liveTvItem.RecordingInfo.ImageUrl + Url = liveTvItem.ProviderImageUrl }; var response = await _httpClient.GetResponse(options).ConfigureAwait(false); @@ -62,7 +62,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv _logger.Error("Provider did not return an image content type."); } } - else if (liveTvItem.RecordingInfo.HasImage ?? true) + else { var service = _liveTvManager.Services.FirstOrDefault(i => string.Equals(i.Name, liveTvItem.ServiceName, StringComparison.OrdinalIgnoreCase)); @@ -70,7 +70,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv { try { - var response = await service.GetRecordingImageAsync(liveTvItem.RecordingInfo.Id, cancellationToken).ConfigureAwait(false); + var response = await service.GetRecordingImageAsync(liveTvItem.ExternalId, cancellationToken).ConfigureAwait(false); if (response != null) { @@ -109,7 +109,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv if (liveTvItem != null) { - return !liveTvItem.HasImage(ImageType.Primary) && (liveTvItem.RecordingInfo.HasImage ?? true); + return !liveTvItem.HasImage(ImageType.Primary) && (!string.IsNullOrWhiteSpace(liveTvItem.ProviderImagePath) || !string.IsNullOrWhiteSpace(liveTvItem.ProviderImageUrl)); } return false; } diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json index b7defb678..e808931d6 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json @@ -38,8 +38,11 @@ "HeaderSupportTheTeam": "Support the Emby Team", "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", + "ButtonCancelSyncJob": "Cancel sync job", "TitleSync": "Sync", + "HeaderSelectDate": "Select Date", "ButtonDonate": "Donate", + "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderMyMedia": "My Media", "TitleNotifications": "Notifications", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", "ButtonTakeTheTour": "Take the tour", "HeaderWelcomeBack": "Welcome back!", "TitlePlugins": "Plugins", "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "ButtonPlayTrailer": "Play trailer", "HeaderLibraryAccess": "Library Access", "HeaderChannelAccess": "Channel Access", "HeaderDeviceAccess": "Device Access", @@ -143,7 +147,6 @@ "ButtonPlay": "Play", "ButtonEdit": "Edit", "ButtonQueue": "Queue", - "ButtonPlayTrailer": "Play trailer", "ButtonPlaylist": "Playlist", "ButtonPreviousTrack": "Previous Track", "LabelEnabled": "Enabled", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Transcoding", "LabelPlayMethodDirectStream": "Direct Streaming", "LabelPlayMethodDirectPlay": "Direct Playing", + "LabelEpisodeNumber": "Episode number:", "LabelAudioCodec": "Audio: {0}", "LabelVideoCodec": "Video: {0}", "LabelLocalAccessUrl": "Local access: {0}", @@ -307,6 +311,7 @@ "HeaderArtist": "Artist", "LabelAddedOnDate": "Added {0}", "ButtonStart": "Start", + "LabelSeasonNumber": "Season number:", "HeaderChannels": "Channels", "HeaderMediaFolders": "Media Folders", "HeaderBlockItemsWithNoRating": "Block content with no rating information:", @@ -335,6 +340,7 @@ "ButtonNextPage": "Next Page", "ButtonPreviousPage": "Previous Page", "ButtonMoveLeft": "Move left", + "OptionReleaseDate": "Release date", "ButtonMoveRight": "Move right", "ButtonBrowseOnlineImages": "Browse online images", "HeaderDeleteItem": "Delete Item", @@ -477,11 +483,8 @@ "PersonTypePerson": "Person", "LabelTitleDisplayOrder": "Title display order:", "OptionSortName": "Sort name", - "OptionReleaseDate": "Release date", - "LabelSeasonNumber": "Season number:", "LabelDiscNumber": "Disc number", "LabelParentNumber": "Parent number", - "LabelEpisodeNumber": "Episode number:", "LabelTrackNumber": "Track number:", "LabelNumber": "Number:", "LabelReleaseDate": "Release date:", @@ -712,7 +715,7 @@ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", "HeaderConnectionFailure": "Connection Failure", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", - "ButtonSelectServer": "Select server", + "ButtonSelectServer": "Select Server", "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", "DefaultErrorMessage": "There was an error processing the request. Please try again later.", @@ -740,7 +743,7 @@ "LabelQuality": "Quality:", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", - "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", "LabelItemLimit": "Item limit:", @@ -762,5 +765,45 @@ "ButtonSignInWithConnect": "Sign in with Emby Connect", "HeaderNewServer": "New Server", "MyDevice": "My Device", - "ButtonRemote": "Remote" + "ButtonRemote": "Remote", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Advanced", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/be-BY.json index e201984d4..f0a9ac9de 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/be-BY.json @@ -38,8 +38,11 @@ "HeaderSupportTheTeam": "Support the Emby Team", "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", + "ButtonCancelSyncJob": "Cancel sync job", "TitleSync": "Sync", + "HeaderSelectDate": "Select Date", "ButtonDonate": "Donate", + "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderMyMedia": "My Media", "TitleNotifications": "Notifications", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", "ButtonTakeTheTour": "Take the tour", "HeaderWelcomeBack": "Welcome back!", "TitlePlugins": "Plugins", "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "ButtonPlayTrailer": "Play trailer", "HeaderLibraryAccess": "Library Access", "HeaderChannelAccess": "Channel Access", "HeaderDeviceAccess": "Device Access", @@ -143,7 +147,6 @@ "ButtonPlay": "Play", "ButtonEdit": "Edit", "ButtonQueue": "Queue", - "ButtonPlayTrailer": "Play trailer", "ButtonPlaylist": "Playlist", "ButtonPreviousTrack": "Previous Track", "LabelEnabled": "Enabled", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Transcoding", "LabelPlayMethodDirectStream": "Direct Streaming", "LabelPlayMethodDirectPlay": "Direct Playing", + "LabelEpisodeNumber": "Episode number:", "LabelAudioCodec": "Audio: {0}", "LabelVideoCodec": "Video: {0}", "LabelLocalAccessUrl": "Local access: {0}", @@ -307,6 +311,7 @@ "HeaderArtist": "Artist", "LabelAddedOnDate": "Added {0}", "ButtonStart": "Start", + "LabelSeasonNumber": "Season number:", "HeaderChannels": "Channels", "HeaderMediaFolders": "Media Folders", "HeaderBlockItemsWithNoRating": "Block content with no rating information:", @@ -335,6 +340,7 @@ "ButtonNextPage": "Next Page", "ButtonPreviousPage": "Previous Page", "ButtonMoveLeft": "Move left", + "OptionReleaseDate": "Release date", "ButtonMoveRight": "Move right", "ButtonBrowseOnlineImages": "Browse online images", "HeaderDeleteItem": "Delete Item", @@ -477,11 +483,8 @@ "PersonTypePerson": "Person", "LabelTitleDisplayOrder": "Title display order:", "OptionSortName": "Sort name", - "OptionReleaseDate": "Release date", - "LabelSeasonNumber": "Season number:", "LabelDiscNumber": "Disc number", "LabelParentNumber": "Parent number", - "LabelEpisodeNumber": "Episode number:", "LabelTrackNumber": "Track number:", "LabelNumber": "Number:", "LabelReleaseDate": "Release date:", @@ -712,7 +715,7 @@ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", "HeaderConnectionFailure": "Connection Failure", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", - "ButtonSelectServer": "Select server", + "ButtonSelectServer": "Select Server", "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", "DefaultErrorMessage": "There was an error processing the request. Please try again later.", @@ -740,7 +743,7 @@ "LabelQuality": "Quality:", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", - "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", "LabelItemLimit": "Item limit:", @@ -762,5 +765,45 @@ "ButtonSignInWithConnect": "Sign in with Emby Connect", "HeaderNewServer": "New Server", "MyDevice": "My Device", - "ButtonRemote": "Remote" + "ButtonRemote": "Remote", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Advanced", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/bg_BG.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/bg-BG.json index 9600c4668..ef7e31385 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/bg_BG.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/bg-BG.json @@ -38,8 +38,11 @@ "HeaderSupportTheTeam": "\u041f\u043e\u0434\u043a\u0440\u0435\u043f\u0435\u0442\u0435 Emby \u041e\u0442\u0431\u043e\u0440\u044a\u0442", "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "\u0422V \u043d\u0430 \u0436\u0438\u0432\u043e", + "ButtonCancelSyncJob": "Cancel sync job", "TitleSync": "Sync", + "HeaderSelectDate": "Select Date", "ButtonDonate": "Donate", + "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderMyMedia": "My Media", "TitleNotifications": "\u0418\u0437\u0432\u0435\u0441\u0442\u0438\u044f", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", "ButtonTakeTheTour": "\u0420\u0430\u0437\u0433\u043b\u0435\u0434\u0430\u0439 \u043d\u0430\u043e\u043a\u043e\u043b\u043e", "HeaderWelcomeBack": "Welcome back!", "TitlePlugins": "Plugins", "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "ButtonPlayTrailer": "Play trailer", "HeaderLibraryAccess": "Library Access", "HeaderChannelAccess": "Channel Access", "HeaderDeviceAccess": "\u0414\u043e\u0441\u0442\u044a\u043f \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0442\u0430", @@ -143,7 +147,6 @@ "ButtonPlay": "\u041f\u0443\u0441\u043d\u0438", "ButtonEdit": "\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439", "ButtonQueue": "Queue", - "ButtonPlayTrailer": "\u041f\u0443\u0441\u043d\u0438 \u0442\u0440\u0435\u0439\u043b\u044a\u0440\u0430", "ButtonPlaylist": "Playlist", "ButtonPreviousTrack": "\u041f\u0440\u0435\u0434\u0438\u0448\u043d\u0430 \u043f\u044a\u0442\u0435\u043a\u0430", "LabelEnabled": "Enabled", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Transcoding", "LabelPlayMethodDirectStream": "Direct Streaming", "LabelPlayMethodDirectPlay": "Direct Playing", + "LabelEpisodeNumber": "Episode number:", "LabelAudioCodec": "Audio: {0}", "LabelVideoCodec": "Video: {0}", "LabelLocalAccessUrl": "Local access: {0}", @@ -307,6 +311,7 @@ "HeaderArtist": "Artist", "LabelAddedOnDate": "Added {0}", "ButtonStart": "Start", + "LabelSeasonNumber": "Season number:", "HeaderChannels": "\u041a\u0430\u043d\u0430\u043b\u0438", "HeaderMediaFolders": "\u041c\u0435\u0434\u0438\u0439\u043d\u0438 \u041f\u0430\u043f\u043a\u0438", "HeaderBlockItemsWithNoRating": "Block content with no rating information:", @@ -335,6 +340,7 @@ "ButtonNextPage": "Next Page", "ButtonPreviousPage": "Previous Page", "ButtonMoveLeft": "Move left", + "OptionReleaseDate": "Release date", "ButtonMoveRight": "Move right", "ButtonBrowseOnlineImages": "Browse online images", "HeaderDeleteItem": "Delete Item", @@ -477,11 +483,8 @@ "PersonTypePerson": "Person", "LabelTitleDisplayOrder": "Title display order:", "OptionSortName": "Sort name", - "OptionReleaseDate": "\u0414\u0430\u0442\u0430 \u043d\u0430 \u0438\u0437\u0434\u0430\u0432\u0430\u043d\u0435", - "LabelSeasonNumber": "Season number:", "LabelDiscNumber": "Disc number", "LabelParentNumber": "Parent number", - "LabelEpisodeNumber": "Episode number:", "LabelTrackNumber": "Track number:", "LabelNumber": "Number:", "LabelReleaseDate": "Release date:", @@ -712,7 +715,7 @@ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", "HeaderConnectionFailure": "Connection Failure", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", - "ButtonSelectServer": "Select server", + "ButtonSelectServer": "Select Server", "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", "DefaultErrorMessage": "There was an error processing the request. Please try again later.", @@ -740,7 +743,7 @@ "LabelQuality": "Quality:", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", - "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", "LabelItemLimit": "Item limit:", @@ -762,5 +765,45 @@ "ButtonSignInWithConnect": "Sign in with Emby Connect", "HeaderNewServer": "New Server", "MyDevice": "My Device", - "ButtonRemote": "Remote" + "ButtonRemote": "Remote", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Advanced", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json index 0d6607f3a..ceabbe4d2 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json @@ -38,8 +38,11 @@ "HeaderSupportTheTeam": "Support the Emby Team", "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", + "ButtonCancelSyncJob": "Cancel sync job", "TitleSync": "Sync", + "HeaderSelectDate": "Select Date", "ButtonDonate": "Donate", + "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderMyMedia": "My Media", "TitleNotifications": "Notifications", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", "ButtonTakeTheTour": "Take the tour", "HeaderWelcomeBack": "Welcome back!", "TitlePlugins": "Plugins", "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "ButtonPlayTrailer": "Play trailer", "HeaderLibraryAccess": "Library Access", "HeaderChannelAccess": "Channel Access", "HeaderDeviceAccess": "Device Access", @@ -143,7 +147,6 @@ "ButtonPlay": "Play", "ButtonEdit": "Edit", "ButtonQueue": "Queue", - "ButtonPlayTrailer": "Play trailer", "ButtonPlaylist": "Playlist", "ButtonPreviousTrack": "Previous Track", "LabelEnabled": "Enabled", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Transcoding", "LabelPlayMethodDirectStream": "Direct Streaming", "LabelPlayMethodDirectPlay": "Direct Playing", + "LabelEpisodeNumber": "Episode number:", "LabelAudioCodec": "Audio: {0}", "LabelVideoCodec": "Video: {0}", "LabelLocalAccessUrl": "Local access: {0}", @@ -307,6 +311,7 @@ "HeaderArtist": "Artist", "LabelAddedOnDate": "Added {0}", "ButtonStart": "Start", + "LabelSeasonNumber": "Season number:", "HeaderChannels": "Channels", "HeaderMediaFolders": "Media Folders", "HeaderBlockItemsWithNoRating": "Block content with no rating information:", @@ -335,6 +340,7 @@ "ButtonNextPage": "Next Page", "ButtonPreviousPage": "Previous Page", "ButtonMoveLeft": "Move left", + "OptionReleaseDate": "Release date", "ButtonMoveRight": "Move right", "ButtonBrowseOnlineImages": "Browse online images", "HeaderDeleteItem": "Delete Item", @@ -477,11 +483,8 @@ "PersonTypePerson": "Person", "LabelTitleDisplayOrder": "Title display order:", "OptionSortName": "Sort name", - "OptionReleaseDate": "Release date", - "LabelSeasonNumber": "Season number:", "LabelDiscNumber": "Disc number", "LabelParentNumber": "Parent number", - "LabelEpisodeNumber": "Episode number:", "LabelTrackNumber": "Track number:", "LabelNumber": "Number:", "LabelReleaseDate": "Release date:", @@ -712,7 +715,7 @@ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", "HeaderConnectionFailure": "Connection Failure", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", - "ButtonSelectServer": "Select server", + "ButtonSelectServer": "Select Server", "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", "DefaultErrorMessage": "There was an error processing the request. Please try again later.", @@ -740,7 +743,7 @@ "LabelQuality": "Quality:", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", - "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", "LabelItemLimit": "Item limit:", @@ -762,5 +765,45 @@ "ButtonSignInWithConnect": "Sign in with Emby Connect", "HeaderNewServer": "New Server", "MyDevice": "My Device", - "ButtonRemote": "Remote" + "ButtonRemote": "Remote", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Advanced", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json index 0cfc133bc..03c6168fe 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json @@ -38,8 +38,11 @@ "HeaderSupportTheTeam": "Support the Emby Team", "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "\u017div\u00e1 TV", + "ButtonCancelSyncJob": "Cancel sync job", "TitleSync": "Sync", + "HeaderSelectDate": "Select Date", "ButtonDonate": "Donate", + "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderMyMedia": "My Media", "TitleNotifications": "Notifications", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", @@ -67,10 +70,10 @@ "LabelMovie": "Film", "LabelMusicVideo": "Hudebn\u00ed video", "LabelEpisode": "Epizoda", - "LabelSeries": "Series", + "LabelSeries": "S\u00e9rie", "LabelStopping": "Stopping", "LabelCancelled": "(zru\u0161eno)", - "LabelFailed": "(failed)", + "LabelFailed": "(ne\u00fasp\u011b\u0161n\u00e9)", "ButtonHelp": "Help", "ButtonSave": "Ulo\u017eit", "ButtonDownload": "St\u00e1hnout", @@ -84,10 +87,10 @@ "SyncJobStatusCompletedWithError": "Synced with errors", "SyncJobItemStatusReadyToTransfer": "Ready to Transfer", "LabelCollection": "Collection", - "HeaderAddToCollection": "Add to Collection", + "HeaderAddToCollection": "P\u0159idat do kolekce", "NewCollectionNameExample": "P\u0159\u00edklad: Kolekce Star Wars", "OptionSearchForInternetMetadata": "Prohledat internet pro nalezen\u00ed metadat a obalu.", - "LabelSelectCollection": "Select collection:", + "LabelSelectCollection": "Vybrat kolekce:", "HeaderDevices": "Devices", "ButtonScheduledTasks": "Scheduled tasks", "MessageItemsAdded": "Items added", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", "ButtonTakeTheTour": "Take the tour", "HeaderWelcomeBack": "Welcome back!", "TitlePlugins": "Plugins", "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "ButtonPlayTrailer": "Play trailer", "HeaderLibraryAccess": "Library Access", "HeaderChannelAccess": "Channel Access", "HeaderDeviceAccess": "Device Access", @@ -138,12 +142,11 @@ "ButtonMute": "Mute", "ButtonUnmute": "Unmute", "ButtonStop": "Stop", - "ButtonNextTrack": "Next Track", + "ButtonNextTrack": "Dal\u0161\u00ed stopa", "ButtonPause": "Pause", "ButtonPlay": "P\u0159ehr\u00e1t", "ButtonEdit": "Upravit", "ButtonQueue": "Queue", - "ButtonPlayTrailer": "Play trailer", "ButtonPlaylist": "Playlist", "ButtonPreviousTrack": "P\u0159edchod\u00ed stopa", "LabelEnabled": "Enabled", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Transcoding", "LabelPlayMethodDirectStream": "Direct Streaming", "LabelPlayMethodDirectPlay": "Direct Playing", + "LabelEpisodeNumber": "Episode number:", "LabelAudioCodec": "Audio: {0}", "LabelVideoCodec": "Video: {0}", "LabelLocalAccessUrl": "Local access: {0}", @@ -307,6 +311,7 @@ "HeaderArtist": "Um\u011blec", "LabelAddedOnDate": "Added {0}", "ButtonStart": "Start", + "LabelSeasonNumber": "Season number:", "HeaderChannels": "Kan\u00e1ly", "HeaderMediaFolders": "Slo\u017eky m\u00e9di\u00ed", "HeaderBlockItemsWithNoRating": "Block content with no rating information:", @@ -335,6 +340,7 @@ "ButtonNextPage": "Next Page", "ButtonPreviousPage": "Previous Page", "ButtonMoveLeft": "Move left", + "OptionReleaseDate": "Release date", "ButtonMoveRight": "Move right", "ButtonBrowseOnlineImages": "Browse online images", "HeaderDeleteItem": "Delete Item", @@ -403,8 +409,8 @@ "TabAdvanced": "Pokro\u010dil\u00e9", "TabHelp": "Help", "TabScheduledTasks": "Scheduled Tasks", - "ButtonFullscreen": "Fullscreen", - "ButtonAudioTracks": "Audio Tracks", + "ButtonFullscreen": "Cel\u00e1 obrazovka", + "ButtonAudioTracks": "Audio stopy", "ButtonSubtitles": "Titulky", "ButtonScenes": "Sc\u00e9ny", "ButtonQuality": "Quality", @@ -427,7 +433,7 @@ "ButtonRemoveFromPlaylist": "Remove from playlist", "HeaderSpecials": "Specials", "HeaderTrailers": "Trailers", - "HeaderAudio": "Audio", + "HeaderAudio": "Zvuk", "HeaderResolution": "Resolution", "HeaderVideo": "Video", "HeaderRuntime": "Runtime", @@ -477,11 +483,8 @@ "PersonTypePerson": "Person", "LabelTitleDisplayOrder": "Title display order:", "OptionSortName": "Sort name", - "OptionReleaseDate": "Release date", - "LabelSeasonNumber": "Season number:", "LabelDiscNumber": "Disc number", "LabelParentNumber": "Parent number", - "LabelEpisodeNumber": "Episode number:", "LabelTrackNumber": "Track number:", "LabelNumber": "Number:", "LabelReleaseDate": "Release date:", @@ -621,7 +624,7 @@ "HeaderAlbums": "Albums", "HeaderGames": "Games", "HeaderBooks": "Books", - "HeaderEpisodes": "Episodes", + "HeaderEpisodes": "Epizody", "HeaderSeasons": "Seasons", "HeaderTracks": "Tracks", "HeaderItems": "Items", @@ -712,7 +715,7 @@ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", "HeaderConnectionFailure": "Connection Failure", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", - "ButtonSelectServer": "Select server", + "ButtonSelectServer": "Select Server", "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", "DefaultErrorMessage": "There was an error processing the request. Please try again later.", @@ -740,7 +743,7 @@ "LabelQuality": "Quality:", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", - "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", "LabelItemLimit": "Item limit:", @@ -762,5 +765,45 @@ "ButtonSignInWithConnect": "Sign in with Emby Connect", "HeaderNewServer": "New Server", "MyDevice": "My Device", - "ButtonRemote": "Remote" + "ButtonRemote": "Remote", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Advanced", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json index 856790702..b10c84217 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json @@ -4,174 +4,177 @@ "Users": "Brugere", "Delete": "Slet", "Administrator": "Administrator", - "Password": "Kode", - "DeleteImage": "Slet Image", - "MessageThankYouForSupporting": "Thank you for supporting Emby.", - "MessagePleaseSupportProject": "Please support Emby.", - "DeleteImageConfirmation": "Er du sikker p\u00e5 du vil slette dette image?", - "FileReadCancelled": "L\u00e6sning af filen er annulleret", - "FileNotFound": "Filen blev ikke fundet", - "FileReadError": "Der opstod en fejl i fors\u00f8get p\u00e5 at l\u00e6se filen", - "DeleteUser": "Slet bruger", + "Password": "Adgangskode", + "DeleteImage": "Slet billede", + "MessageThankYouForSupporting": "Tak for at du st\u00f8tter Emby.", + "MessagePleaseSupportProject": "V\u00e6r venlig at st\u00f8tte Emby.", + "DeleteImageConfirmation": "Er du sikker p\u00e5 du vil slette dette billede?", + "FileReadCancelled": "L\u00e6sning af filen er annulleret.", + "FileNotFound": "Filen blev ikke fundet.", + "FileReadError": "Der opstod en fejl i fors\u00f8get p\u00e5 at l\u00e6se filen.", + "DeleteUser": "Slet bruger.", "DeleteUserConfirmation": "Er du sikker p\u00e5 du \u00f8nsker at slette denne bruger?", - "PasswordResetHeader": "Reset Password", - "PasswordResetComplete": "Koden er blevet nulstillet", - "PinCodeResetComplete": "The pin code has been reset.", - "PasswordResetConfirmation": "Er du sikker p\u00e5 at koden skal nulstilles", - "PinCodeResetConfirmation": "Are you sure you wish to reset the pin code?", - "HeaderPinCodeReset": "Reset Pin Code", - "PasswordSaved": "Koden er gemt", - "PasswordMatchError": "Kode og kode bekr\u00e6ftelse skal v\u00e6re ens.", - "OptionRelease": "Officiel Udgivelse", + "PasswordResetHeader": "Nulstil adgangskode", + "PasswordResetComplete": "Adgangskoden er blevet nulstillet.", + "PinCodeResetComplete": "Pinkoden er blevet nulstillet.", + "PasswordResetConfirmation": "Er du sikker p\u00e5 at adgangskoden skal nulstilles?", + "PinCodeResetConfirmation": "Er du sikker p\u00e5 at pinkoden skal nulstilles?", + "HeaderPinCodeReset": "Nulstil pinkode", + "PasswordSaved": "Adgangskoden er gemt.", + "PasswordMatchError": "Adgangskode og bekr\u00e6ft adgangskode skal v\u00e6re ens.", + "OptionRelease": "Officiel udgivelse", "OptionBeta": "Beta", "OptionDev": "Dev (Ustabil)", "UninstallPluginHeader": "Afinstaller plugin", - "UninstallPluginConfirmation": "Er du sikker p\u00e5 du \u00f8nsker at afinstallere {0}?", - "NoPluginConfigurationMessage": "Der er igenting at konfigurere i dette plugin.", - "NoPluginsInstalledMessage": "Der er ikke installeret nogle plugins", - "BrowsePluginCatalogMessage": "Gennemse vores katalog med tilf\u00f8jelser for at se tilg\u00e6ngelige tilf\u00f8jelser.", - "MessageKeyEmailedTo": "Key emailed to {0}.", - "MessageKeysLinked": "Keys linked.", - "HeaderConfirmation": "Confirmation", - "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", - "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", - "HeaderSupportTheTeam": "Support the Emby Team", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", - "TitleLiveTV": "Direkte TV", + "UninstallPluginConfirmation": "Er du sikker p\u00e5 du vil afinstallere {0}?", + "NoPluginConfigurationMessage": "Der er ingenting at konfigurere i dette plugin.", + "NoPluginsInstalledMessage": "Der er ikke installeret nogle plugins.", + "BrowsePluginCatalogMessage": "Gennemse vores plugin-katalog for at se tilg\u00e6ngelige plugins.", + "MessageKeyEmailedTo": "N\u00f8gle sendt med e-mail til {0}.", + "MessageKeysLinked": "N\u00f8gler sammenknyttet.", + "HeaderConfirmation": "Bekr\u00e6ftelse", + "MessageKeyUpdated": "Tak. Din supporter n\u00f8gle er nu opdateret.", + "MessageKeyRemoved": "Tak. Din supporter n\u00f8gle er fjernet.", + "HeaderSupportTheTeam": "St\u00f8t Emby-holdet", + "TextEnjoyBonusFeatures": "F\u00e5 bonus funktioner", + "TitleLiveTV": "Live TV", + "ButtonCancelSyncJob": "Cancel sync job", "TitleSync": "Sync", - "ButtonDonate": "Donate", - "HeaderMyMedia": "My Media", - "TitleNotifications": "Notifications", - "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", - "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", - "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Emby Connect members to enjoy free access to the following apps:", - "HeaderConfirmRemoveUser": "Remove User", - "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Select the device to control by clicking the cast icon in the upper right corner. Swipe down anywhere on this screen to go back to where you came from.", - "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", - "ValueTimeLimitSingleHour": "Time limit: 1 hour", - "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderSelectDate": "V\u00e6lg dato", + "ButtonDonate": "Don\u00e9r", + "LabelRecurringDonationCanBeCancelledHelp": "Tilbagevendende donationer kan afmeldes n\u00e5r som helst fra din PayPal konto.", + "HeaderMyMedia": "Mine medier", + "TitleNotifications": "Underretninger", + "ErrorLaunchingChromecast": "Der opstod en fejl ved start af cromecast. Tjek venligst at din enhed er forbundet til det tr\u00e5dl\u00f8se netv\u00e6rk.", + "MessageErrorLoadingSupporterInfo": "Det opstod en fejl ved indl\u00e6sning at supporter information. Pr\u00f8v igen senere.", + "MessageLinkYourSupporterKey": "Sammenk\u00e6d din supporter n\u00f8gle med op til {0} Emby Connect medlemmer for at f\u00e5 gratis adgang til disse apps:", + "HeaderConfirmRemoveUser": "Fjern bruger", + "MessageSwipeDownOnRemoteControl": "Velkommen til fjernstyring. V\u00e6lg hvilken enhed du vil styre ved at klikke cast ikonet i \u00f8verste h\u00f8jre hj\u00f8rne. Tr\u00e6k ned hvor som helst p\u00e5 sk\u00e6rmen for at g\u00e5 tilbage til hvor du kom fra.", + "MessageConfirmRemoveConnectSupporter": "Er du sikker p\u00e5 at du vil fjerne supporter fordelene fra denne bruger?", + "ValueTimeLimitSingleHour": "Tidsbegr\u00e6nsning: 1 time", + "ValueTimeLimitMultiHour": "Tidsbegr\u00e6nsning: {0} timer", "HeaderUsers": "Brugere", - "PluginCategoryGeneral": "General", - "PluginCategoryContentProvider": "Content Providers", - "PluginCategoryScreenSaver": "Screen Savers", - "PluginCategoryTheme": "Themes", + "PluginCategoryGeneral": "Generelt", + "PluginCategoryContentProvider": "Indholdsydbydere", + "PluginCategoryScreenSaver": "Pausesk\u00e6rme", + "PluginCategoryTheme": "Temaer", "PluginCategorySync": "Sync", - "PluginCategorySocialIntegration": "Social Networks", - "PluginCategoryNotifications": "Notifications", + "PluginCategorySocialIntegration": "Sociale netv\u00e6rk", + "PluginCategoryNotifications": "Underretninger", "PluginCategoryMetadata": "Metadata", "PluginCategoryLiveTV": "Live TV", - "PluginCategoryChannel": "Channels", - "HeaderSearch": "Search", - "ValueDateCreated": "Date created: {0}", + "PluginCategoryChannel": "Kanaler", + "HeaderSearch": "S\u00f8g", + "ValueDateCreated": "Oprettelsesdato: {0}", "LabelArtist": "Artist", - "LabelMovie": "Movie", - "LabelMusicVideo": "Music Video", + "LabelMovie": "Film", + "LabelMusicVideo": "Musikvideo", "LabelEpisode": "Episode", "LabelSeries": "Serier", - "LabelStopping": "Stopping", - "LabelCancelled": "(cancelled)", + "LabelStopping": "Standser", + "LabelCancelled": "(annulleret)", "LabelFailed": "(fejlede)", - "ButtonHelp": "Help", + "ButtonHelp": "Hj\u00e6lp", "ButtonSave": "Gem", - "ButtonDownload": "Download", - "SyncJobStatusQueued": "Queued", - "SyncJobStatusConverting": "Converting", - "SyncJobStatusFailed": "Failed", - "SyncJobStatusCancelled": "Cancelled", - "SyncJobStatusCompleted": "Synced", - "SyncJobStatusReadyToTransfer": "Ready to Transfer", - "SyncJobStatusTransferring": "Transferring", - "SyncJobStatusCompletedWithError": "Synced with errors", - "SyncJobItemStatusReadyToTransfer": "Ready to Transfer", - "LabelCollection": "Collection", + "ButtonDownload": "Hent", + "SyncJobStatusQueued": "Sat i k\u00f8", + "SyncJobStatusConverting": "Konverterer", + "SyncJobStatusFailed": "Fejlet", + "SyncJobStatusCancelled": "Annuleret", + "SyncJobStatusCompleted": "Synkroniseret", + "SyncJobStatusReadyToTransfer": "Klar til overf\u00f8rsel", + "SyncJobStatusTransferring": "Overf\u00f8rer", + "SyncJobStatusCompletedWithError": "Synkroniseret med fejl", + "SyncJobItemStatusReadyToTransfer": "Klar til overf\u00f8rsel", + "LabelCollection": "Samling", "HeaderAddToCollection": "Tilf\u00f8j til samling", - "NewCollectionNameExample": "Eksempel: Star Wars Collection", - "OptionSearchForInternetMetadata": "Search the internet for artwork and metadata", - "LabelSelectCollection": "Select collection:", - "HeaderDevices": "Devices", - "ButtonScheduledTasks": "Scheduled tasks", - "MessageItemsAdded": "Items added", - "ButtonAddToCollection": "Add to collection", - "HeaderSelectCertificatePath": "Select Certificate Path", - "ConfirmMessageScheduledTaskButton": "This operation normally runs automatically as a scheduled task. It can also be run manually here. To configure the scheduled task, see:", - "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", - "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", - "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", - "ButtonTakeTheTour": "Take the tour", - "HeaderWelcomeBack": "Welcome back!", - "TitlePlugins": "Plugins", - "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", - "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", - "HeaderLibraryAccess": "Library Access", - "HeaderChannelAccess": "Channel Access", - "HeaderDeviceAccess": "Device Access", - "HeaderSelectDevices": "Select Devices", - "ButtonCancelItem": "Cancel item", - "ButtonQueueForRetry": "Queue for retry", - "ButtonReenable": "Re-enable", - "ButtonLearnMore": "Learn more", - "SyncJobItemStatusSyncedMarkForRemoval": "Marked for removal", - "LabelAbortedByServerShutdown": "(Aborted by server shutdown)", - "LabelScheduledTaskLastRan": "Last ran {0}, taking {1}.", - "HeaderDeleteTaskTrigger": "Delete Task Trigger", + "NewCollectionNameExample": "Eksempel: Star Wars samling", + "OptionSearchForInternetMetadata": "S\u00f8g p\u00e5 internettet efter billeder og metadata", + "LabelSelectCollection": "V\u00e6lg samling:", + "HeaderDevices": "Enheder", + "ButtonScheduledTasks": "Planlagte opgaver", + "MessageItemsAdded": "Elementer tilf\u00f8jet", + "ButtonAddToCollection": "Tilf\u00f8j til samling", + "HeaderSelectCertificatePath": "V\u00e6lg certifikatsti", + "ConfirmMessageScheduledTaskButton": "Denne operation k\u00f8rer normalt som en planlagt opgave. Den kan ogs\u00e5 k\u00f8res manuelt her. For at konfigurere den planlage opgave, se:", + "HeaderSupporterBenefit": "Med et supporter medlemskab opn\u00e5r du ekstra fordele s\u00e5 som adgang til sync, premium plugins, internet kanaler samt meget mere. {0}L\u00e6r mere{1}.", + "LabelSyncNoTargetsHelp": "Det ser ud til at du for \u00f8jeblikket ikke har nogle enheder ser underst\u00f8tter sync.", + "HeaderWelcomeToProjectServerDashboard": "Velkommen til Emby betjeningspanel", + "HeaderWelcomeToProjectWebClient": "Velkommen til Emby", + "ButtonTakeTheTour": "Vis introduktion", + "HeaderWelcomeBack": "Velkommen tilbage!", + "TitlePlugins": "Tilf\u00f8jelser", + "ButtonTakeTheTourToSeeWhatsNew": "Tag en rundvisning for at se hvad der er nyt", + "MessageNoSyncJobsFound": "Intet sync job blev fundet. Opret sync jobs ved at benytte Sync knapper som findes gennem web-interfacet.", + "ButtonPlayTrailer": "Play trailer", + "HeaderLibraryAccess": "Adgang til biblioteker", + "HeaderChannelAccess": "Adgang til kanaler", + "HeaderDeviceAccess": "Enhedsadgang", + "HeaderSelectDevices": "V\u00e6lg enheder", + "ButtonCancelItem": "Annuller genstand", + "ButtonQueueForRetry": "S\u00e6t et nyt fors\u00f8g i k\u00f8", + "ButtonReenable": "Genaktiver", + "ButtonLearnMore": "L\u00e6r mere", + "SyncJobItemStatusSyncedMarkForRemoval": "Markeret til sletning", + "LabelAbortedByServerShutdown": "(Annulleret grundet server nedlukning)", + "LabelScheduledTaskLastRan": "Sidst k\u00f8rt {0}, og tog {1}.", + "HeaderDeleteTaskTrigger": "Slet Task Trigger", "HeaderTaskTriggers": "Task Triggers", - "MessageDeleteTaskTrigger": "Are you sure you wish to delete this task trigger?", - "MessageNoPluginsInstalled": "You have no plugins installed.", - "LabelVersionInstalled": "{0} installed", - "LabelNumberReviews": "{0} Reviews", - "LabelFree": "Free", - "HeaderPlaybackError": "Playback Error", - "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", - "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", - "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", - "HeaderSelectAudio": "Select Audio", - "HeaderSelectSubtitles": "Select Subtitles", - "ButtonMarkForRemoval": "Remove from device", - "ButtonUnmarkForRemoval": "Cancel removal from device", - "LabelDefaultStream": "(Default)", - "LabelForcedStream": "(Forced)", - "LabelDefaultForcedStream": "(Default\/Forced)", - "LabelUnknownLanguage": "Unknown language", - "MessageConfirmSyncJobItemCancellation": "Are you sure you wish to cancel this item?", - "ButtonMute": "Mute", - "ButtonUnmute": "Unmute", + "MessageDeleteTaskTrigger": "Er du sikker p\u00e5 du \u00f8nsker at slette denne task trigger?", + "MessageNoPluginsInstalled": "Du har ingen plugins installeret.", + "LabelVersionInstalled": "{0} installeret", + "LabelNumberReviews": "{0} Anmeldelser", + "LabelFree": "Gratis", + "HeaderPlaybackError": "Fejl i afspilning", + "MessagePlaybackErrorNotAllowed": "Du er p\u00e5 nuv\u00e6rende tidspunkt ikke autoriseret til at afspille dette indhold. Kontakt venligst din systemadministrator for flere detaljer.", + "MessagePlaybackErrorNoCompatibleStream": "Ingen kompatible streams er tilg\u00e6ngelige p\u00e5 nuv\u00e6rende tidspunkt. Pr\u00f8v igen senere eller kontakt din systemadministrator for flere detaljer.", + "MessagePlaybackErrorRateLimitExceeded": "Din afspilningskvote er blevet overskredet. Kontakt venligst din systemadministrator for flere detaljer.", + "MessagePlaybackErrorPlaceHolder": "Det valgte indhold kan ikke afspilles fra denne enhed.", + "HeaderSelectAudio": "V\u00e6lg lydspor", + "HeaderSelectSubtitles": "V\u00e6lg undertekster", + "ButtonMarkForRemoval": "Fjern fra enhed", + "ButtonUnmarkForRemoval": "Annuller fjernelse fra enhed", + "LabelDefaultStream": "(Standard)", + "LabelForcedStream": "(Tvungen)", + "LabelDefaultForcedStream": "(Standard\/Tvungen)", + "LabelUnknownLanguage": "Ukendt sprog", + "MessageConfirmSyncJobItemCancellation": "Er du sikker p\u00e5 du \u00f8nsker at annullere denne genstand?", + "ButtonMute": "Lyd fra", + "ButtonUnmute": "Sl\u00e5 lyd til", "ButtonStop": "Stop", - "ButtonNextTrack": "Next Track", + "ButtonNextTrack": "N\u00e6ste spor", "ButtonPause": "Pause", "ButtonPlay": "Afspil", "ButtonEdit": "Rediger", - "ButtonQueue": "Queue", - "ButtonPlayTrailer": "Afspil trailer", - "ButtonPlaylist": "Playlist", - "ButtonPreviousTrack": "Previous Track", - "LabelEnabled": "Enabled", - "LabelDisabled": "Disabled", - "ButtonMoreInformation": "More Information", - "LabelNoUnreadNotifications": "No unread notifications.", - "ButtonViewNotifications": "View notifications", - "ButtonMarkTheseRead": "Mark these read", - "ButtonClose": "Close", - "LabelAllPlaysSentToPlayer": "All plays will be sent to the selected player.", - "MessageInvalidUser": "Invalid username or password. Please try again.", - "HeaderLoginFailure": "Login Failure", - "HeaderAllRecordings": "Alle Optagelser", - "RecommendationBecauseYouLike": "Because you like {0}", - "RecommendationBecauseYouWatched": "Because you watched {0}", - "RecommendationDirectedBy": "Directed by {0}", - "RecommendationStarring": "Starring {0}", - "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", - "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", - "MessageRecordingCancelled": "Recording cancelled.", - "HeaderConfirmSeriesCancellation": "Confirm Series Cancellation", - "MessageConfirmSeriesCancellation": "Are you sure you wish to cancel this series?", - "MessageSeriesCancelled": "Series cancelled.", - "HeaderConfirmRecordingDeletion": "Confirm Recording Deletion", - "MessageConfirmRecordingDeletion": "Are you sure you wish to delete this recording?", - "MessageRecordingDeleted": "Recording deleted.", - "ButonCancelRecording": "Cancel Recording", - "MessageRecordingSaved": "Recording saved.", + "ButtonQueue": "K\u00f8", + "ButtonPlaylist": "Afspilningsliste", + "ButtonPreviousTrack": "Forrige spor", + "LabelEnabled": "Sl\u00e5et til", + "LabelDisabled": "Sl\u00e5et fra", + "ButtonMoreInformation": "Mere information", + "LabelNoUnreadNotifications": "Ingen ul\u00e6ste notifikationer", + "ButtonViewNotifications": "Se notifikationer", + "ButtonMarkTheseRead": "Marker disse som l\u00e6st", + "ButtonClose": "Luk", + "LabelAllPlaysSentToPlayer": "Alle afspilninger vil blive sendt til den valgte afspiller.", + "MessageInvalidUser": "Ukendt brugernavn eller adgangskode. Pr\u00f8v igen.", + "HeaderLoginFailure": "Login fejl", + "HeaderAllRecordings": "Alle optagelser", + "RecommendationBecauseYouLike": "Fordi du kan lide {0}", + "RecommendationBecauseYouWatched": "Fordi du har set {0}", + "RecommendationDirectedBy": "Instrueret af {0}", + "RecommendationStarring": "Hovedrolleindehavere {0}", + "HeaderConfirmRecordingCancellation": "Bekr\u00e6ft annullering af optagelse", + "MessageConfirmRecordingCancellation": "Er du sikker p\u00e5 du \u00f8nsker at annullere denne optagelse?", + "MessageRecordingCancelled": "Optagelse annulleret.", + "HeaderConfirmSeriesCancellation": "Bekr\u00e6ft annullering af serie", + "MessageConfirmSeriesCancellation": "Er du sikker p\u00e5 du \u00f8nsker at annullere denne serie?", + "MessageSeriesCancelled": "Serie annulleret.", + "HeaderConfirmRecordingDeletion": "Bekr\u00e6ft sletning af optagelse", + "MessageConfirmRecordingDeletion": "Er du sikker p\u00e5 du \u00f8nsker at slette denne optagelse?", + "MessageRecordingDeleted": "Optagelse slettet.", + "ButonCancelRecording": "Annuller optagelse", + "MessageRecordingSaved": "Optagelse gemt.", "OptionSunday": "S\u00f8ndag", "OptionMonday": "Mandag", "OptionTuesday": "Tirsdag", @@ -179,333 +182,333 @@ "OptionThursday": "Torsdag", "OptionFriday": "Fredag", "OptionSaturday": "L\u00f8rdag", - "OptionEveryday": "Every day", - "OptionWeekend": "Weekends", - "OptionWeekday": "Weekdays", - "HeaderConfirmDeletion": "Confirm Deletion", - "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", - "LiveTvUpdateAvailable": "(Update available)", - "LabelVersionUpToDate": "Up to date!", + "OptionEveryday": "Hver dag", + "OptionWeekend": "Weekender", + "OptionWeekday": "Hverdage", + "HeaderConfirmDeletion": "Bekr\u00e6ft sletning", + "MessageConfirmPathSubstitutionDeletion": "Er du sikker p\u00e5 du \u00f8nsker at slette denne stisubstitution?", + "LiveTvUpdateAvailable": "(Opdatering tilg\u00e6ngelig)", + "LabelVersionUpToDate": "Opdateret!", "ButtonResetTuner": "Reset tuner", - "HeaderResetTuner": "Reset Tuner", - "MessageConfirmResetTuner": "Are you sure you wish to reset this tuner? Any active players or recordings will be abruptly stopped.", - "ButtonCancelSeries": "Cancel Series", - "HeaderSeriesRecordings": "Series Recordings", - "LabelAnytime": "Any time", - "StatusRecording": "Recording", - "StatusWatching": "Watching", - "StatusRecordingProgram": "Recording {0}", - "StatusWatchingProgram": "Watching {0}", - "HeaderSplitMedia": "Split Media Apart", - "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", - "HeaderError": "Error", - "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", - "MessagePleaseSelectOneItem": "Please select at least one item.", - "MessagePleaseSelectTwoItems": "Please select at least two items.", - "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", - "MessageConfirmItemGrouping": "Emby apps will automatically choose the optimal version to play based on device and network performance. Are you sure you wish to continue?", + "HeaderResetTuner": "Reset tuner", + "MessageConfirmResetTuner": "Er du sikker p\u00e5 du \u00f8nsker at resette denne tuner? Alle aktive afspilninger eller optagelser vil stoppe pludseligt.", + "ButtonCancelSeries": "Annuller serie", + "HeaderSeriesRecordings": "Serieoptagelser", + "LabelAnytime": "Alle tidspunkter", + "StatusRecording": "Optagelse", + "StatusWatching": "Ser", + "StatusRecordingProgram": "Optager {0}", + "StatusWatchingProgram": "Ser {0}", + "HeaderSplitMedia": "Opsplit medie", + "MessageConfirmSplitMedia": "Er du sikker p\u00e5 du \u00f8nsker at opsplitte mediekilderne til separate klilder?", + "HeaderError": "Fejl", + "MessageChromecastConnectionError": "Din Chromecast modtager kan ikke forbinde til din Emby Server. Tjek venligst deres forbindelse og pr\u00f8v igen.", + "MessagePleaseSelectOneItem": "V\u00e6lg venligst mindst \u00e9t element.", + "MessagePleaseSelectTwoItems": "V\u00e6lg venligst mindst to elementer.", + "MessageTheFollowingItemsWillBeGrouped": "F\u00f8lgende elementer vil blive grupperet til et element:", + "MessageConfirmItemGrouping": "Emby apps vil automatisk fors\u00f8ge at afspille den optimale version baseret p\u00e5 enheden og netv\u00e6rksydelse. Er du sikker p\u00e5 du \u00f8nsker at forts\u00e6tte?", "HeaderResume": "Fors\u00e6t", - "HeaderMyViews": "My Views", - "HeaderLibraryFolders": "Media Folders", - "HeaderLatestMedia": "Latest Media", - "ButtonMoreItems": "More...", - "ButtonMore": "More", - "HeaderFavoriteMovies": "Favorite Movies", - "HeaderFavoriteShows": "Favorite Shows", - "HeaderFavoriteEpisodes": "Favorite Episodes", - "HeaderFavoriteGames": "Favorite Games", - "HeaderRatingsDownloads": "Rating \/ Downloads", - "HeaderConfirmProfileDeletion": "Confirm Profile Deletion", - "MessageConfirmProfileDeletion": "Are you sure you wish to delete this profile?", - "HeaderSelectServerCachePath": "Select Server Cache Path", - "HeaderSelectTranscodingPath": "Select Transcoding Temporary Path", - "HeaderSelectImagesByNamePath": "Select Images By Name Path", - "HeaderSelectMetadataPath": "Select Metadata Path", - "HeaderSelectServerCachePathHelp": "Browse or enter the path to use for server cache files. The folder must be writeable.", - "HeaderSelectTranscodingPathHelp": "Browse or enter the path to use for transcoding temporary files. The folder must be writeable.", - "HeaderSelectImagesByNamePathHelp": "Browse or enter the path to your items by name folder. The folder must be writeable.", - "HeaderSelectMetadataPathHelp": "Browse or enter the path you'd like to store metadata within. The folder must be writeable.", - "HeaderSelectChannelDownloadPath": "Select Channel Download Path", - "HeaderSelectChannelDownloadPathHelp": "Browse or enter the path to use for storing channel cache files. The folder must be writeable.", - "OptionNewCollection": "New...", + "HeaderMyViews": "Mine visninger", + "HeaderLibraryFolders": "Mediemapper", + "HeaderLatestMedia": "Seneste medier", + "ButtonMoreItems": "Mere...", + "ButtonMore": "Mere", + "HeaderFavoriteMovies": "Favorit film", + "HeaderFavoriteShows": "Favorit serier", + "HeaderFavoriteEpisodes": "Favorit episoder", + "HeaderFavoriteGames": "Favorit spil", + "HeaderRatingsDownloads": "Bed\u00f8mmelser \/ Downloads", + "HeaderConfirmProfileDeletion": "Bekr\u00e6ft sletning af profil", + "MessageConfirmProfileDeletion": "Er du sikker p\u00e5 du \u00f8nsker at slette denne profil?", + "HeaderSelectServerCachePath": "V\u00e6lg \"Server Cache Path\"", + "HeaderSelectTranscodingPath": "V\u00e6lg \"Transcoding Temporary Path\"", + "HeaderSelectImagesByNamePath": "V\u00e6lg billeder efter navn-sti:", + "HeaderSelectMetadataPath": "V\u00e6lg Metadata Path", + "HeaderSelectServerCachePathHelp": "V\u00e6lg eller indtast stien som skal benyttes til serverens cache filer. Mappen m\u00e5 ikke v\u00e6re skrivebeskyttet.", + "HeaderSelectTranscodingPathHelp": "V\u00e6lg eller indtast stien som skal benyttes til midlertidige transkodningsfiler. Mappen m\u00e5 ikke v\u00e6re skrivebeskyttet.", + "HeaderSelectImagesByNamePathHelp": "V\u00e6lg eller indtast stien som f\u00f8rer til mappen med dine elmenter per navn. Mappen m\u00e5 ikke v\u00e6re skrivebeskyttet.", + "HeaderSelectMetadataPathHelp": "V\u00e6lg eller indtast stien for hvor du \u00f8nsker at gemme din metadata. Mappen m\u00e5 ikke v\u00e6re skrivebeskyttet.", + "HeaderSelectChannelDownloadPath": "V\u00e6lg sti for hentning af kanalindhold", + "HeaderSelectChannelDownloadPathHelp": "V\u00e6lg eller indtast stien for hvor du \u00f8nsker at gemme kanalindholds cache filer. Mappen m\u00e5 ikke v\u00e6re skrivebeskyttet.", + "OptionNewCollection": "Ny...", "ButtonAdd": "Tilf\u00f8j", "ButtonRemove": "Fjern", - "LabelChapterDownloaders": "Chapter downloaders:", - "LabelChapterDownloadersHelp": "Enable and rank your preferred chapter downloaders in order of priority. Lower priority downloaders will only be used to fill in missing information.", - "HeaderFavoriteAlbums": "Favorite Albums", - "HeaderLatestChannelMedia": "Latest Channel Items", - "ButtonOrganizeFile": "Organize File", - "ButtonDeleteFile": "Delete File", - "HeaderOrganizeFile": "Organize File", - "HeaderDeleteFile": "Delete File", - "StatusSkipped": "Skipped", - "StatusFailed": "Failed", - "StatusSuccess": "Success", - "MessageFileWillBeDeleted": "The following file will be deleted:", - "MessageSureYouWishToProceed": "Are you sure you wish to proceed?", - "MessageDuplicatesWillBeDeleted": "In addition the following dupliates will be deleted:", - "MessageFollowingFileWillBeMovedFrom": "The following file will be moved from:", - "MessageDestinationTo": "to:", - "HeaderSelectWatchFolder": "Select Watch Folder", - "HeaderSelectWatchFolderHelp": "Browse or enter the path to your watch folder. The folder must be writeable.", - "OrganizePatternResult": "Result: {0}", - "HeaderRestart": "Restart", - "HeaderShutdown": "Shutdown", - "MessageConfirmRestart": "Are you sure you wish to restart Emby Server?", - "MessageConfirmShutdown": "Are you sure you wish to shutdown Emby Server?", - "ButtonUpdateNow": "Update Now", - "ValueItemCount": "{0} item", - "ValueItemCountPlural": "{0} items", - "NewVersionOfSomethingAvailable": "A new version of {0} is available!", - "VersionXIsAvailableForDownload": "Version {0} is now available for download.", + "LabelChapterDownloaders": "Kapitel downloadere:", + "LabelChapterDownloadersHelp": "Aktiver og ranger dine fortrukne kapitel downloadere i en prioriteret r\u00e6kkef\u00f8lge. Lavt rangerende downloadere bliver kun benyttet til at udfylde manglende information.", + "HeaderFavoriteAlbums": "Favoritalbums", + "HeaderLatestChannelMedia": "Seneste kanalenheder", + "ButtonOrganizeFile": "Organiser fil", + "ButtonDeleteFile": "Slet fil", + "HeaderOrganizeFile": "Organiser fil", + "HeaderDeleteFile": "Slet fil", + "StatusSkipped": "Oversprunget", + "StatusFailed": "Fejlet", + "StatusSuccess": "Succes", + "MessageFileWillBeDeleted": "Den f\u00f8lgende fil vil blive slettet:", + "MessageSureYouWishToProceed": "\u00d8nsker du at forts\u00e6tte?", + "MessageDuplicatesWillBeDeleted": "Derudover vil f\u00f8lgende duplikater blive slettet:", + "MessageFollowingFileWillBeMovedFrom": "Den f\u00f8lgende fil vil blive flyttet fra:", + "MessageDestinationTo": "til:", + "HeaderSelectWatchFolder": "V\u00e6lg en Watch Folder", + "HeaderSelectWatchFolderHelp": "V\u00e6lg eller indtast stien til din \"watch folder\". Mappen m\u00e5 ikke v\u00e6re skrivebeskyttet.", + "OrganizePatternResult": "Resultat: {0}", + "HeaderRestart": "Genstart", + "HeaderShutdown": "Luk", + "MessageConfirmRestart": "Er du sikker p\u00e5 du \u00f8nsker at genstarte Emby?", + "MessageConfirmShutdown": "Er du sikker p\u00e5 du \u00f8nsker at lukke Emby?", + "ButtonUpdateNow": "Opdater nu", + "ValueItemCount": "{0} elment", + "ValueItemCountPlural": "{0} elementer", + "NewVersionOfSomethingAvailable": "En ny version af {0} er tilg\u00e6ngelig!", + "VersionXIsAvailableForDownload": "Version {0} kan nu downloades.", "LabelVersionNumber": "Version {0}", - "LabelPlayMethodTranscoding": "Transcoding", - "LabelPlayMethodDirectStream": "Direct Streaming", - "LabelPlayMethodDirectPlay": "Direct Playing", - "LabelAudioCodec": "Audio: {0}", + "LabelPlayMethodTranscoding": "Transkoding", + "LabelPlayMethodDirectStream": "Direkte streaming", + "LabelPlayMethodDirectPlay": "Direkte afspilning", + "LabelEpisodeNumber": "Episode number:", + "LabelAudioCodec": "Lyd: {0}", "LabelVideoCodec": "Video: {0}", - "LabelLocalAccessUrl": "Local access: {0}", - "LabelRemoteAccessUrl": "Remote access: {0}", - "LabelRunningOnPort": "Running on http port {0}.", - "LabelRunningOnPorts": "Running on http port {0}, and https port {1}.", - "HeaderLatestFromChannel": "Latest from {0}", - "LabelUnknownLanaguage": "Unknown language", - "HeaderCurrentSubtitles": "Current Subtitles", - "MessageDownloadQueued": "The download has been queued.", - "MessageAreYouSureDeleteSubtitles": "Are you sure you wish to delete this subtitle file?", - "ButtonRemoteControl": "Remote Control", - "HeaderLatestTvRecordings": "Latest Recordings", + "LabelLocalAccessUrl": "Lokal adgang: {0}", + "LabelRemoteAccessUrl": "Fjernadgang: {0}", + "LabelRunningOnPort": "K\u00f8rer p\u00e5 http port {0}.", + "LabelRunningOnPorts": "K\u00f8rer p\u00e5 http port {0}, og https port {1}.", + "HeaderLatestFromChannel": "Seneste fra {0}", + "LabelUnknownLanaguage": "Ukendt sprog", + "HeaderCurrentSubtitles": "Nuv\u00e6rende undertekster", + "MessageDownloadQueued": "Downloadet er sat i k\u00f8.", + "MessageAreYouSureDeleteSubtitles": "Er du sikker p\u00e5 du \u00f8nsker at slette denne undertekstfil?", + "ButtonRemoteControl": "Fjernstyring", + "HeaderLatestTvRecordings": "Seneste optagelser", "ButtonOk": "Ok", "ButtonCancel": "Annuller", - "ButtonRefresh": "Refresh", - "LabelCurrentPath": "Current path:", - "HeaderSelectMediaPath": "Select Media Path", - "HeaderSelectPath": "Select Path", - "ButtonNetwork": "Network", - "MessageDirectoryPickerInstruction": "Network paths can be entered manually in the event the Network button fails to locate your devices. For example, {0} or {1}.", + "ButtonRefresh": "Opdater", + "LabelCurrentPath": "Nuv\u00e6rende sti:", + "HeaderSelectMediaPath": "V\u00e6lg mediesti", + "HeaderSelectPath": "V\u00e6lg sti", + "ButtonNetwork": "Netv\u00e6rk", + "MessageDirectoryPickerInstruction": "Netv\u00e6rksstier kan indtastes manuelt i tilf\u00e6lde af at netv\u00e6rksknappen ikke kan lokalisere dine enheder. Foreksempel, {0} eller {1}.", "HeaderMenu": "Menu", - "ButtonOpen": "Open", - "ButtonOpenInNewTab": "Open in new tab", - "ButtonShuffle": "Shuffle", - "ButtonInstantMix": "Instant mix", - "ButtonResume": "Resume", - "HeaderScenes": "Scenes", - "HeaderAudioTracks": "Audio Tracks", - "HeaderLibraries": "Libraries", - "HeaderSubtitles": "Subtitles", - "HeaderVideoQuality": "Video Quality", - "MessageErrorPlayingVideo": "There was an error playing the video.", - "MessageEnsureOpenTuner": "Please ensure there is an open tuner availalble.", + "ButtonOpen": "\u00c5ben", + "ButtonOpenInNewTab": "\u00c5ben i ny fane", + "ButtonShuffle": "Bland", + "ButtonInstantMix": "Instant Mix", + "ButtonResume": "Genoptag", + "HeaderScenes": "Scener", + "HeaderAudioTracks": "Lydspor", + "HeaderLibraries": "Bibliotekter", + "HeaderSubtitles": "Undertekster", + "HeaderVideoQuality": "Videokvalitet", + "MessageErrorPlayingVideo": "Der opstod en fejl under afspilning af videoen.", + "MessageEnsureOpenTuner": "Sikre dig at en \u00e5ben tuner er tilg\u00e6ngelig.", "ButtonHome": "Hjem", - "ButtonDashboard": "Dashboard", - "ButtonReports": "Reports", + "ButtonDashboard": "Betjeningspanel", + "ButtonReports": "Rapporter", "ButtonMetadataManager": "Metadata Manager", - "HeaderTime": "Time", - "HeaderName": "Name", + "HeaderTime": "Tid", + "HeaderName": "Navn", "HeaderAlbum": "Album", - "HeaderAlbumArtist": "Album Artist", + "HeaderAlbumArtist": "Album kunstner", "HeaderArtist": "Artist", - "LabelAddedOnDate": "Added {0}", + "LabelAddedOnDate": "Tilf\u00f8jet {0}", "ButtonStart": "Start", + "LabelSeasonNumber": "Season number:", "HeaderChannels": "Kanaler", - "HeaderMediaFolders": "Media Folders", - "HeaderBlockItemsWithNoRating": "Block content with no rating information:", - "OptionBlockOthers": "Others", - "OptionBlockTvShows": "TV Shows", - "OptionBlockTrailers": "Trailers", - "OptionBlockMusic": "Music", - "OptionBlockMovies": "Movies", - "OptionBlockBooks": "Books", - "OptionBlockGames": "Games", - "OptionBlockLiveTvPrograms": "Live TV Programs", - "OptionBlockLiveTvChannels": "Live TV Channels", - "OptionBlockChannelContent": "Internet Channel Content", - "ButtonRevoke": "Revoke", - "MessageConfirmRevokeApiKey": "Are you sure you wish to revoke this api key? The application's connection to Emby Server will be abruptly terminated.", - "HeaderConfirmRevokeApiKey": "Revoke Api Key", - "ValueContainer": "Container: {0}", - "ValueAudioCodec": "Audio Codec: {0}", + "HeaderMediaFolders": "Mediemapper", + "HeaderBlockItemsWithNoRating": "Bloker indhold uden bed\u00f8mmelser:", + "OptionBlockOthers": "Andre", + "OptionBlockTvShows": "TV serier", + "OptionBlockTrailers": "Trailere", + "OptionBlockMusic": "Musik", + "OptionBlockMovies": "Film", + "OptionBlockBooks": "B\u00f8ger", + "OptionBlockGames": "Spil", + "OptionBlockLiveTvPrograms": "Live TV-programmer", + "OptionBlockLiveTvChannels": "Live TV-kanaler", + "OptionBlockChannelContent": "Internet kanalindhold", + "ButtonRevoke": "Invalider", + "MessageConfirmRevokeApiKey": "Er du sikker p\u00e5 du \u00f8nsker at invalidere denne api n\u00f8gle? Applikationens forbindelse til Emby vil blive afbrudt \u00f8jeblikkeligt.", + "HeaderConfirmRevokeApiKey": "Invalider Api n\u00f8gle", + "ValueContainer": "Beholder: {0}", + "ValueAudioCodec": "Audio codec: {0}", "ValueVideoCodec": "Video Codec: {0}", "ValueCodec": "Codec: {0}", - "ValueConditions": "Conditions: {0}", - "LabelAll": "All", - "HeaderDeleteImage": "Delete Image", - "MessageFileNotFound": "File not found.", - "MessageFileReadError": "An error occurred reading this file.", - "ButtonNextPage": "Next Page", - "ButtonPreviousPage": "Previous Page", - "ButtonMoveLeft": "Move left", - "ButtonMoveRight": "Move right", - "ButtonBrowseOnlineImages": "Browse online images", - "HeaderDeleteItem": "Delete Item", - "ConfirmDeleteItem": "Deleting this item will delete it from both the file system and your media library. Are you sure you wish to continue?", - "MessagePleaseEnterNameOrId": "Please enter a name or an external Id.", - "MessageValueNotCorrect": "The value entered is not correct. Please try again.", - "MessageItemSaved": "Item saved.", - "MessagePleaseAcceptTermsOfServiceBeforeContinuing": "Please accept the terms of service before continuing.", + "ValueConditions": "Forhold: {0}", + "LabelAll": "Alle", + "HeaderDeleteImage": "Slet billede", + "MessageFileNotFound": "Fil blev ikke fundet.", + "MessageFileReadError": "Der opstod en fejl i fors\u00f8get p\u00e5 at l\u00e6se filen.", + "ButtonNextPage": "N\u00e6ste side", + "ButtonPreviousPage": "Forrige side", + "ButtonMoveLeft": "Flyt til venstre", + "OptionReleaseDate": "Release date", + "ButtonMoveRight": "Flyt til h\u00f8jre", + "ButtonBrowseOnlineImages": "Gennemse online billeder", + "HeaderDeleteItem": "Slet element", + "ConfirmDeleteItem": "Hvis dette element slettes, fjernes det b\u00e5de fra dit filsystem samt din mediebibliotek. Er du sikker p\u00e5 du \u00f8nsker at forts\u00e6tte?", + "MessagePleaseEnterNameOrId": "Indtast venligst et navn eller eksternt Id.", + "MessageValueNotCorrect": "Det indtastede v\u00e6rdi er ikke korrekt. Pr\u00f8v igen.", + "MessageItemSaved": "Element gemt.", + "MessagePleaseAcceptTermsOfServiceBeforeContinuing": "Accepter venligst tjenestevilk\u00e5rene f\u00f8r du forts\u00e6tter.", "OptionEnded": "F\u00e6rdig", "OptionContinuing": "Fors\u00e6ttes", "OptionOff": "Off", "OptionOn": "On", "ButtonSettings": "Indstillinger", - "ButtonUninstall": "Uninstall", - "HeaderFields": "Fields", - "HeaderFieldsHelp": "Slide a field to 'off' to lock it and prevent it's data from being changed.", + "ButtonUninstall": "Afinstaller", + "HeaderFields": "Felter", + "HeaderFieldsHelp": "\u00c6ndre et felt til \"afbrudt\" for at l\u00e5se det og forhindre dets data i at blive \u00e6ndret.", "HeaderLiveTV": "Live TV", - "MissingLocalTrailer": "Missing local trailer.", - "MissingPrimaryImage": "Missing primary image.", - "MissingBackdropImage": "Missing backdrop image.", - "MissingLogoImage": "Missing logo image.", - "MissingEpisode": "Missing episode.", - "OptionScreenshots": "Screenshots", - "OptionBackdrops": "Backdrops", - "OptionImages": "Images", - "OptionKeywords": "Keywords", + "MissingLocalTrailer": "Mangler lokal trailer.", + "MissingPrimaryImage": "Mangler prim\u00e6rt billede", + "MissingBackdropImage": "Mangler baggrundsbillede.", + "MissingLogoImage": "Mangler logo.", + "MissingEpisode": "Mangler episode.", + "OptionScreenshots": "Sk\u00e6rmbilleder", + "OptionBackdrops": "Baggrunde", + "OptionImages": "Billeder", + "OptionKeywords": "N\u00f8gleord", "OptionTags": "Tags", - "OptionStudios": "Studios", - "OptionName": "Name", - "OptionOverview": "Overview", - "OptionGenres": "Genres", - "OptionParentalRating": "Parental Rating", - "OptionPeople": "People", + "OptionStudios": "Studier", + "OptionName": "Navn", + "OptionOverview": "Oversigt", + "OptionGenres": "Genrer", + "OptionParentalRating": "Aldersgr\u00e6nse", + "OptionPeople": "Personer", "OptionRuntime": "Varighed", - "OptionProductionLocations": "Production Locations", - "OptionBirthLocation": "Birth Location", - "LabelAllChannels": "All channels", - "LabelLiveProgram": "LIVE", - "LabelNewProgram": "NEW", - "LabelPremiereProgram": "PREMIERE", + "OptionProductionLocations": "Produktionslokationer", + "OptionBirthLocation": "F\u00f8dselssted", + "LabelAllChannels": "Alle kanaler", + "LabelLiveProgram": "DIREKTE", + "LabelNewProgram": "NY", + "LabelPremiereProgram": "PR\u00c6MIERE", "LabelHDProgram": "HD", - "HeaderChangeFolderType": "Change Content Type", - "HeaderChangeFolderTypeHelp": "To change the type, please remove and rebuild the folder with the new type.", - "HeaderAlert": "Alert", - "MessagePleaseRestart": "Please restart to finish updating.", - "ButtonRestart": "Restart", - "MessagePleaseRefreshPage": "Please refresh this page to receive new updates from the server.", - "ButtonHide": "Hide", - "MessageSettingsSaved": "Settings saved.", - "ButtonSignOut": "Sign Out", - "ButtonMyProfile": "My Profile", - "ButtonMyPreferences": "My Preferences", - "MessageBrowserDoesNotSupportWebSockets": "This browser does not support web sockets. For a better experience, try a newer browser such as Chrome, Firefox, IE10+, Safari (iOS) or Opera.", - "LabelInstallingPackage": "Installing {0}", - "LabelPackageInstallCompleted": "{0} installation completed.", - "LabelPackageInstallFailed": "{0} installation failed.", - "LabelPackageInstallCancelled": "{0} installation cancelled.", + "HeaderChangeFolderType": "\u00c6ndre indholdstype", + "HeaderChangeFolderTypeHelp": "For at \u00e6ndre typen bedes du fjerne og gendanne mappen med den nye type.", + "HeaderAlert": "Advarsel", + "MessagePleaseRestart": "Genstart venligst for at afslutte opdateringen.", + "ButtonRestart": "Genstart", + "MessagePleaseRefreshPage": "Genindl\u00e6s venligst denne side for at modtage nye opdateringer fra serveren.", + "ButtonHide": "Gem", + "MessageSettingsSaved": "Indstillinger er gemt.", + "ButtonSignOut": "Log af", + "ButtonMyProfile": "Min profil", + "ButtonMyPreferences": "Mine indstillinger", + "MessageBrowserDoesNotSupportWebSockets": "Denne browser underst\u00f8tter ikke \"web sockets\". For en bedre oplevelse benyt da en nyere browser s\u00e5 som Chrome, Firefox, IE10+, Safari (iOS) eller Opera.", + "LabelInstallingPackage": "Installerer {0}", + "LabelPackageInstallCompleted": "{0} installation udf\u00f8rt.", + "LabelPackageInstallFailed": "{0} installationen mislykkedes.", + "LabelPackageInstallCancelled": "{0} installation afbrudt.", "TabServer": "Server", - "TabUsers": "Users", - "TabLibrary": "Library", + "TabUsers": "Brugere", + "TabLibrary": "Bibliotek", "TabMetadata": "Metadata", "TabDLNA": "DLNA", "TabLiveTV": "Live TV", - "TabAutoOrganize": "Auto-Organize", - "TabPlugins": "Plugins", - "TabAdvanced": "Advanceret", - "TabHelp": "Help", - "TabScheduledTasks": "Scheduled Tasks", - "ButtonFullscreen": "Fuld sk\u00e6rm", - "ButtonAudioTracks": "Audio Tracks", + "TabAutoOrganize": "Organiser automatisk", + "TabPlugins": "Tilf\u00f8jelser", + "TabAdvanced": "Avanceret", + "TabHelp": "Hj\u00e6lp", + "TabScheduledTasks": "Planlagte opgaver", + "ButtonFullscreen": "Fuldsk\u00e6rm", + "ButtonAudioTracks": "Lydpor", "ButtonSubtitles": "Undertekster", "ButtonScenes": "Scener", - "ButtonQuality": "Quality", - "HeaderNotifications": "Notifications", - "HeaderSelectPlayer": "Select Player:", + "ButtonQuality": "Kvalitet", + "HeaderNotifications": "Notifikationer", + "HeaderSelectPlayer": "V\u00e6lg afspiller:", "ButtonSelect": "V\u00e6lg", "ButtonNew": "Ny", - "MessageInternetExplorerWebm": "For best results with Internet Explorer please install the WebM playback plugin.", - "HeaderVideoError": "Video Error", - "ButtonAddToPlaylist": "Add to playlist", - "HeaderAddToPlaylist": "Add to Playlist", + "MessageInternetExplorerWebm": "For at opn\u00e5 de bedste resultater med Internet Explorer bedes du installere WebM afspilningstilf\u00f8jelsen.", + "HeaderVideoError": "Video fejl", + "ButtonAddToPlaylist": "Tilf\u00f8j til afspilningsliste", + "HeaderAddToPlaylist": "Tilf\u00f8j til afspilningsliste", "LabelName": "Navn:", - "ButtonSubmit": "Submit", - "LabelSelectPlaylist": "Playlist:", - "OptionNewPlaylist": "New playlist...", + "ButtonSubmit": "Indsend", + "LabelSelectPlaylist": "Afspilningsliste:", + "OptionNewPlaylist": "Ny afspilningsliste...", "MessageAddedToPlaylistSuccess": "Ok", - "ButtonView": "View", - "ButtonViewSeriesRecording": "View series recording", - "ValueOriginalAirDate": "Original air date: {0}", - "ButtonRemoveFromPlaylist": "Remove from playlist", - "HeaderSpecials": "Specials", - "HeaderTrailers": "Trailers", - "HeaderAudio": "Audio", - "HeaderResolution": "Resolution", + "ButtonView": "Visning", + "ButtonViewSeriesRecording": "Vis serieoptagelse", + "ValueOriginalAirDate": "Blev sendt f\u00f8rste gang: {0}", + "ButtonRemoveFromPlaylist": "Fjer fra afspilningsliste", + "HeaderSpecials": "S\u00e6rudsendelser", + "HeaderTrailers": "Trailere", + "HeaderAudio": "Lyd", + "HeaderResolution": "Opl\u00f8sning", "HeaderVideo": "Video", - "HeaderRuntime": "Runtime", - "HeaderCommunityRating": "Community rating", - "HeaderPasswordReset": "Password Reset", - "HeaderParentalRating": "Parental rating", - "HeaderReleaseDate": "Release date", - "HeaderDateAdded": "Date added", - "HeaderSeries": "Series", - "HeaderSeason": "Season", - "HeaderSeasonNumber": "Season number", - "HeaderNetwork": "Network", - "HeaderYear": "Year", - "HeaderGameSystem": "Game system", - "HeaderPlayers": "Players", - "HeaderEmbeddedImage": "Embedded image", - "HeaderTrack": "Track", - "HeaderDisc": "Disc", + "HeaderRuntime": "Varighed", + "HeaderCommunityRating": "F\u00e6llesskabsvurdering", + "HeaderPasswordReset": "Nulstil adgangskode", + "HeaderParentalRating": "Aldersgr\u00e6nse", + "HeaderReleaseDate": "Udgivelsesdato", + "HeaderDateAdded": "Dato for tilf\u00f8jelse", + "HeaderSeries": "Serier", + "HeaderSeason": "S\u00e6son", + "HeaderSeasonNumber": "S\u00e6sonnummer", + "HeaderNetwork": "Netv\u00e6rk", + "HeaderYear": "\u00c5r", + "HeaderGameSystem": "Spilsystem", + "HeaderPlayers": "Afspillere", + "HeaderEmbeddedImage": "Indlejret billede", + "HeaderTrack": "Spor", + "HeaderDisc": "Disk", "OptionMovies": "Film", - "OptionCollections": "Collections", - "OptionSeries": "Series", - "OptionSeasons": "Seasons", + "OptionCollections": "Samlinger", + "OptionSeries": "Serier", + "OptionSeasons": "S\u00e6soner", "OptionEpisodes": "Episoder", - "OptionGames": "Games", - "OptionGameSystems": "Game systems", - "OptionMusicArtists": "Music artists", - "OptionMusicAlbums": "Music albums", - "OptionMusicVideos": "Music videos", - "OptionSongs": "Songs", - "OptionHomeVideos": "Home videos", - "OptionBooks": "Books", - "OptionAdultVideos": "Adult videos", - "ButtonUp": "Up", - "ButtonDown": "Down", - "LabelMetadataReaders": "Metadata readers:", - "LabelMetadataReadersHelp": "Rank your preferred local metadata sources in order of priority. The first file found will be read.", - "LabelMetadataDownloaders": "Metadata downloaders:", - "LabelMetadataDownloadersHelp": "Enable and rank your preferred metadata downloaders in order of priority. Lower priority downloaders will only be used to fill in missing information.", - "LabelMetadataSavers": "Metadata savers:", - "LabelMetadataSaversHelp": "Choose the file formats to save your metadata to.", - "LabelImageFetchers": "Image fetchers:", - "LabelImageFetchersHelp": "Enable and rank your preferred image fetchers in order of priority.", - "ButtonQueueAllFromHere": "Queue all from here", - "ButtonPlayAllFromHere": "Play all from here", + "OptionGames": "Spil", + "OptionGameSystems": "Spilsystemer", + "OptionMusicArtists": "Musikartister", + "OptionMusicAlbums": "Musikalbummer", + "OptionMusicVideos": "Musikvideoer", + "OptionSongs": "Sange", + "OptionHomeVideos": "Hjemmevideoer", + "OptionBooks": "B\u00f8ger", + "OptionAdultVideos": "Voksenfilm", + "ButtonUp": "Op", + "ButtonDown": "Ned", + "LabelMetadataReaders": "Metadata afl\u00e6sere:", + "LabelMetadataReadersHelp": "Ranger dine fortrukne lokale metadatakilder i prioriteret r\u00e6kkef\u00f8lge. Den f\u00f8rst fundne fil vil blive afl\u00e6st.", + "LabelMetadataDownloaders": "Metadata downloadere:", + "LabelMetadataDownloadersHelp": "Aktiver og ranger dine fortrukne metadata downloadere i en prioriteret r\u00e6kkef\u00f8lge. Lavt rangerende downloadere bliver kun benyttet til at udfylde manglende information.", + "LabelMetadataSavers": "Metadata-gemmer:", + "LabelMetadataSaversHelp": "V\u00e6lg de filformater du \u00f8nsker din metadata gemmes som.", + "LabelImageFetchers": "Billede-henter:", + "LabelImageFetchersHelp": "Aktiver og ranger dine fortrukne billede-hentere i en prioriteret r\u00e6kkef\u00f8lge.", + "ButtonQueueAllFromHere": "Set alt her i k\u00f8", + "ButtonPlayAllFromHere": "Afspil alt fra her", "LabelDynamicExternalId": "{0} Id:", - "HeaderIdentify": "Identify Item", + "HeaderIdentify": "Identificer genstand", "PersonTypePerson": "Person", - "LabelTitleDisplayOrder": "Title display order:", - "OptionSortName": "Sort name", - "OptionReleaseDate": "Udgivelsesdato", - "LabelSeasonNumber": "Season number:", - "LabelDiscNumber": "Disc number", - "LabelParentNumber": "Parent number", - "LabelEpisodeNumber": "Episode number:", - "LabelTrackNumber": "Track number:", - "LabelNumber": "Number:", - "LabelReleaseDate": "Release date:", - "LabelEndDate": "End date:", - "LabelYear": "Year:", - "LabelDateOfBirth": "Date of birth:", - "LabelBirthYear": "Birth year:", - "LabelBirthDate": "Birth date:", - "LabelDeathDate": "Death date:", - "HeaderRemoveMediaLocation": "Remove Media Location", - "MessageConfirmRemoveMediaLocation": "Are you sure you wish to remove this location?", - "HeaderRenameMediaFolder": "Rename Media Folder", - "LabelNewName": "New name:", - "HeaderAddMediaFolder": "Add Media Folder", - "HeaderAddMediaFolderHelp": "Name (Movies, Music, TV, etc):", - "HeaderRemoveMediaFolder": "Remove Media Folder", - "MessageTheFollowingLocationWillBeRemovedFromLibrary": "The following media locations will be removed from your library:", - "MessageAreYouSureYouWishToRemoveMediaFolder": "Are you sure you wish to remove this media folder?", - "ButtonRename": "Rename", - "ButtonChangeType": "Change type", - "HeaderMediaLocations": "Media Locations", - "LabelContentTypeValue": "Content type: {0}", - "LabelPathSubstitutionHelp": "Optional: Path substitution can map server paths to network shares that clients can access for direct playback.", - "FolderTypeUnset": "Unset (mixed content)", + "LabelTitleDisplayOrder": "Titelvisningsorden:", + "OptionSortName": "Sorteringsnavn", + "LabelDiscNumber": "Disk nummer", + "LabelParentNumber": "Parent nummer", + "LabelTrackNumber": "Spor nummer:", + "LabelNumber": "Nummer:", + "LabelReleaseDate": "Udgivelsesdato:", + "LabelEndDate": "Slutdato:", + "LabelYear": "\u00c5r:", + "LabelDateOfBirth": "F\u00f8dselsdato:", + "LabelBirthYear": "F\u00f8dsels\u00e5r:", + "LabelBirthDate": "F\u00f8dselsdato:", + "LabelDeathDate": "D\u00f8dsdato:", + "HeaderRemoveMediaLocation": "Fjern medielokalisation", + "MessageConfirmRemoveMediaLocation": "Er du sikker p\u00e5 du \u00f8nsker at fjerne denne lokalisation?", + "HeaderRenameMediaFolder": "Omd\u00f8b mediemappe", + "LabelNewName": "Nyt navn:", + "HeaderAddMediaFolder": "Tilf\u00f8j mediemappe", + "HeaderAddMediaFolderHelp": "Navn (Film, Musik, TV, osv.):", + "HeaderRemoveMediaFolder": "Fjern mediemappe", + "MessageTheFollowingLocationWillBeRemovedFromLibrary": "F\u00f8lgende medielokationer vil blive fjerne fra dit bibliotek:", + "MessageAreYouSureYouWishToRemoveMediaFolder": "Er du sikker p\u00e5 du \u00f8nsker at fjerne denne mediemappe?", + "ButtonRename": "Omd\u00f8b", + "ButtonChangeType": "\u00c6ndre type", + "HeaderMediaLocations": "Medielokationer", + "LabelContentTypeValue": "Indholdstype: {0}", + "LabelPathSubstitutionHelp": "Valgfri: Stisubstitution kan sammenk\u00e6de serverstier til netv\u00e6rksstier som klienter derved kan tilg\u00e5 for direkte afspilning.", + "FolderTypeUnset": "Ikke valgt (blandet indhold)", "FolderTypeMovies": "FIlm", "FolderTypeMusic": "Musik", "FolderTypeAdultVideos": "Voksenfilm", @@ -522,245 +525,285 @@ "TabGames": "Spil", "TabAlbums": "Albums", "TabSongs": "Sange", - "TabMusicVideos": "Musik Videoer", - "BirthPlaceValue": "Birth place: {0}", - "DeathDateValue": "Died: {0}", - "BirthDateValue": "Born: {0}", - "HeaderLatestReviews": "Latest Reviews", - "HeaderPluginInstallation": "Plugin Installation", - "MessageAlreadyInstalled": "This version is already installed.", - "ValueReviewCount": "{0} Reviews", - "MessageYouHaveVersionInstalled": "You currently have version {0} installed.", - "MessageTrialExpired": "The trial period for this feature has expired", - "MessageTrialWillExpireIn": "The trial period for this feature will expire in {0} day(s)", - "MessageInstallPluginFromApp": "This plugin must be installed from with in the app you intend to use it in.", - "ValuePriceUSD": "Price: {0} (USD)", - "MessageFeatureIncludedWithSupporter": "You are registered for this feature, and will be able to continue using it with an active supporter membership.", - "MessageChangeRecurringPlanConfirm": "After completing this transaction you will need to cancel your previous recurring donation from within your PayPal account. Thank you for supporting Emby.", - "MessageSupporterMembershipExpiredOn": "Your supporter membership expired on {0}.", - "MessageYouHaveALifetimeMembership": "You have a lifetime supporter membership. You can provide additional donations on a one-time or recurring basis using the options below. Thank you for supporting Emby.", - "MessageYouHaveAnActiveRecurringMembership": "You have an active {0} membership. You can upgrade your plan using the options below.", + "TabMusicVideos": "Musikvideoer", + "BirthPlaceValue": "F\u00f8dselssted: {0}", + "DeathDateValue": "D\u00f8dsdato: {0}", + "BirthDateValue": "F\u00f8dt: {0}", + "HeaderLatestReviews": "Seneste anmeldeser", + "HeaderPluginInstallation": "Plugin installation", + "MessageAlreadyInstalled": "Denne version er allerede installeret.", + "ValueReviewCount": "{0} Anmeldelser", + "MessageYouHaveVersionInstalled": "Du har version {0} installeret.", + "MessageTrialExpired": "Pr\u00f8veperioden for denne funktion er udl\u00f8bet", + "MessageTrialWillExpireIn": "Pr\u00f8veperioden for denne funktion udl\u00f8ber om {0} dag(e)", + "MessageInstallPluginFromApp": "Dette plugin skal v\u00e6re installeret inde i den app du \u00f8nsker at benytte det fra.", + "ValuePriceUSD": "Pris: {0} (USD)", + "MessageFeatureIncludedWithSupporter": "Du er registreret til at benytte denne funktion, og kan blive ved med at benytte den under foruds\u00e6tning af et aktivt supporter medlemsskab.", + "MessageChangeRecurringPlanConfirm": "Efter denne transaktion er udf\u00f8rt skal du afmelde din tidligere l\u00f8bende donation inde fra din PayPal konto. Tak fordi du st\u00f8tter Emby.", + "MessageSupporterMembershipExpiredOn": "Dit supporter medlemskab udl\u00f8b den {0}.", + "MessageYouHaveALifetimeMembership": "Du har et livstidsmedlemskab. Du kan give yderligere donationer via en engangsydelse eller p\u00e5 l\u00f8bende basis ved at benytte mulighederne nedenfor. Tak fordi du st\u00f8tter Emby.", + "MessageYouHaveAnActiveRecurringMembership": "Du har et aktivt {0} medlemsskab. Du kan opgradere dette via mulighederne nedenfor.", "ButtonDelete": "Slet", - "HeaderEmbyAccountAdded": "Emby Account Added", - "MessageEmbyAccountAdded": "The Emby account has been added to this user.", - "MessagePendingEmbyAccountAdded": "The Emby account has been added to this user. An email will be sent to the owner of the account. The invitation will need to be confirmed by clicking a link within the email.", - "HeaderEmbyAccountRemoved": "Emby Account Removed", - "MessageEmbyAccontRemoved": "The Emby account has been removed from this user.", - "TooltipLinkedToEmbyConnect": "Linked to Emby Connect", - "HeaderUnrated": "Unrated", - "ValueDiscNumber": "Disc {0}", - "HeaderUnknownDate": "Unknown Date", - "HeaderUnknownYear": "Unknown Year", + "HeaderEmbyAccountAdded": "Emby konto tilf\u00f8jet", + "MessageEmbyAccountAdded": "Emby kontoen er blevet tilf\u00f8jet til denne bruger.", + "MessagePendingEmbyAccountAdded": "Emby kontoen er blevet tilf\u00f8jet denne bruger. En email sendes til ejeren af kontoen. Invitationen skal bekr\u00e6ftes ved at klikke p\u00e5 linket i emailen.", + "HeaderEmbyAccountRemoved": "Emby konto fjernet", + "MessageEmbyAccontRemoved": "Emby kontoen er blevet fjernet fra denne bruger.", + "TooltipLinkedToEmbyConnect": "Koblet til Emby Connect", + "HeaderUnrated": "Ingen bed\u00f8mmelse", + "ValueDiscNumber": "Disk {0}", + "HeaderUnknownDate": "Ukendt dato", + "HeaderUnknownYear": "Ukendt \u00e5r", "ValueMinutes": "{0} min", - "ButtonPlayExternalPlayer": "Play with external player", - "HeaderSelectExternalPlayer": "Select External Player", - "HeaderExternalPlayerPlayback": "External Player Playback", - "ButtonImDone": "I'm Done", - "OptionWatched": "Watched", - "OptionUnwatched": "Unwatched", - "ExternalPlayerPlaystateOptionsHelp": "Specify how you would like to resume playing this video next time.", - "LabelMarkAs": "Mark as:", - "OptionInProgress": "In-Progress", - "LabelResumePoint": "Resume point:", - "ValueOneMovie": "1 movie", - "ValueMovieCount": "{0} movies", + "ButtonPlayExternalPlayer": "Afspil med ekstern afspiller", + "HeaderSelectExternalPlayer": "V\u00e6lg ekstern afspiller", + "HeaderExternalPlayerPlayback": "Ekstern afspiller afspilning", + "ButtonImDone": "Jeg er f\u00e6rdig", + "OptionWatched": "Set", + "OptionUnwatched": "Ikke set", + "ExternalPlayerPlaystateOptionsHelp": "Specificer hvordan du gerne vil genoptage afspilningen af denne video n\u00e6ste gang.", + "LabelMarkAs": "Marker som:", + "OptionInProgress": "I gang", + "LabelResumePoint": "Genoptagelsespunkt:", + "ValueOneMovie": "1 film", + "ValueMovieCount": "{0} film", "ValueOneTrailer": "1 trailer", - "ValueTrailerCount": "{0} trailers", - "ValueOneSeries": "1 series", - "ValueSeriesCount": "{0} series", + "ValueTrailerCount": "{0} trailere", + "ValueOneSeries": "1 serie", + "ValueSeriesCount": "{0} serier", "ValueOneEpisode": "1 episode", - "ValueEpisodeCount": "{0} episodes", - "ValueOneGame": "1 game", - "ValueGameCount": "{0} games", + "ValueEpisodeCount": "{0} episoder", + "ValueOneGame": "1 spil", + "ValueGameCount": "{0} spil", "ValueOneAlbum": "1 album", - "ValueAlbumCount": "{0} albums", - "ValueOneSong": "1 song", - "ValueSongCount": "{0} songs", - "ValueOneMusicVideo": "1 music video", - "ValueMusicVideoCount": "{0} music videos", + "ValueAlbumCount": "{0} album", + "ValueOneSong": "1 sang", + "ValueSongCount": "{0} sange", + "ValueOneMusicVideo": "1 musikvideo", + "ValueMusicVideoCount": "{0} musikvideoer", "HeaderOffline": "Offline", - "HeaderUnaired": "Unaired", - "HeaderMissing": "Missing", - "ButtonWebsite": "Website", - "TooltipFavorite": "Favorite", + "HeaderUnaired": "Ikke sendt", + "HeaderMissing": "Mangler", + "ButtonWebsite": "Hjemmeside", + "TooltipFavorite": "Favorit", "TooltipLike": "Like", "TooltipDislike": "Dislike", - "TooltipPlayed": "Played", - "ValueSeriesYearToPresent": "{0}-Present", - "ValueAwards": "Awards: {0}", + "TooltipPlayed": "Afspillet", + "ValueSeriesYearToPresent": "{0}-Nu", + "ValueAwards": "Priser: {0}", "ValueBudget": "Budget: {0}", - "ValueRevenue": "Revenue: {0}", - "ValuePremiered": "Premiered {0}", - "ValuePremieres": "Premieres {0}", - "ValueStudio": "Studio: {0}", - "ValueStudios": "Studios: {0}", + "ValueRevenue": "Indtjening: {0}", + "ValuePremiered": "Pr\u00e6miere {0}", + "ValuePremieres": "Pr\u00e6miere {0}", + "ValueStudio": "Studie: {0}", + "ValueStudios": "Studier: {0}", "ValueStatus": "Status: {0}", "ValueSpecialEpisodeName": "Special - {0}", - "LabelLimit": "Limit:", + "LabelLimit": "Gr\u00e6nse:", "ValueLinks": "Links: {0}", - "HeaderPeople": "People", - "HeaderCastAndCrew": "Cast & Crew", - "ValueArtist": "Artist: {0}", - "ValueArtists": "Artists: {0}", + "HeaderPeople": "Mennesker", + "HeaderCastAndCrew": "Medvirkende", + "ValueArtist": "Kunstner: {0}", + "ValueArtists": "Kunstnere: {0}", "HeaderTags": "Tags", - "MediaInfoCameraMake": "Camera make", - "MediaInfoCameraModel": "Camera model", - "MediaInfoAltitude": "Altitude", - "MediaInfoAperture": "Aperture", - "MediaInfoExposureTime": "Exposure time", - "MediaInfoFocalLength": "Focal length", - "MediaInfoOrientation": "Orientation", - "MediaInfoIsoSpeedRating": "Iso speed rating", - "MediaInfoLatitude": "Latitude", - "MediaInfoLongitude": "Longitude", - "MediaInfoShutterSpeed": "Shutter speed", + "MediaInfoCameraMake": "Kameram\u00e6rke", + "MediaInfoCameraModel": "Kameramodel", + "MediaInfoAltitude": "H\u00f8jde", + "MediaInfoAperture": "Bl\u00e6nde", + "MediaInfoExposureTime": "Eksponering", + "MediaInfoFocalLength": "Br\u00e6ndvidde", + "MediaInfoOrientation": "Orientering", + "MediaInfoIsoSpeedRating": "Iso hastigheds rating", + "MediaInfoLatitude": "Breddegrad", + "MediaInfoLongitude": "H\u00f8jdegrad", + "MediaInfoShutterSpeed": "Lukkehastighed", "MediaInfoSoftware": "Software", - "HeaderIfYouLikeCheckTheseOut": "If you like {0}, check these out...", - "HeaderPlotKeywords": "Plot Keywords", - "HeaderMovies": "Movies", + "HeaderIfYouLikeCheckTheseOut": "Hvis du kan lide {0}, s\u00e5 tjek disse...", + "HeaderPlotKeywords": "Plot n\u00f8gleord", + "HeaderMovies": "Film", "HeaderAlbums": "Albums", - "HeaderGames": "Games", - "HeaderBooks": "Books", + "HeaderGames": "Spil", + "HeaderBooks": "B\u00f8ger", "HeaderEpisodes": "Afsnit", - "HeaderSeasons": "Seasons", - "HeaderTracks": "Tracks", - "HeaderItems": "Items", - "HeaderOtherItems": "Other Items", - "ButtonFullReview": "Full review", - "ValueAsRole": "as {0}", - "ValueGuestStar": "Guest star", - "MediaInfoSize": "Size", - "MediaInfoPath": "Path", + "HeaderSeasons": "S\u00e6soner", + "HeaderTracks": "Spor", + "HeaderItems": "Element", + "HeaderOtherItems": "Andre elementer", + "ButtonFullReview": "Fuld anmeldelse", + "ValueAsRole": "som {0}", + "ValueGuestStar": "G\u00e6stestjerne", + "MediaInfoSize": "St\u00f8rrelse", + "MediaInfoPath": "Sti", "MediaInfoFormat": "Format", - "MediaInfoContainer": "Container", - "MediaInfoDefault": "Default", - "MediaInfoForced": "Forced", - "MediaInfoExternal": "External", - "MediaInfoTimestamp": "Timestamp", - "MediaInfoPixelFormat": "Pixel format", - "MediaInfoBitDepth": "Bit depth", + "MediaInfoContainer": "Beholder", + "MediaInfoDefault": "Standard", + "MediaInfoForced": "Tvungen", + "MediaInfoExternal": "Ekstern", + "MediaInfoTimestamp": "Tidsstempel", + "MediaInfoPixelFormat": "Pixelformat", + "MediaInfoBitDepth": "Bit dybde", "MediaInfoSampleRate": "Sample rate", "MediaInfoBitrate": "Bitrate", - "MediaInfoChannels": "Channels", + "MediaInfoChannels": "Kanaler", "MediaInfoLayout": "Layout", - "MediaInfoLanguage": "Language", + "MediaInfoLanguage": "Sprog", "MediaInfoCodec": "Codec", - "MediaInfoProfile": "Profile", - "MediaInfoLevel": "Level", - "MediaInfoAspectRatio": "Aspect ratio", - "MediaInfoResolution": "Resolution", - "MediaInfoAnamorphic": "Anamorphic", + "MediaInfoProfile": "Profil", + "MediaInfoLevel": "Niveau", + "MediaInfoAspectRatio": "Formatforhold", + "MediaInfoResolution": "Opl\u00f8sning", + "MediaInfoAnamorphic": "Anamorfisk", "MediaInfoInterlaced": "Interlaced", "MediaInfoFramerate": "Framerate", - "MediaInfoStreamTypeAudio": "Audio", + "MediaInfoStreamTypeAudio": "Lyd", "MediaInfoStreamTypeData": "Data", "MediaInfoStreamTypeVideo": "Video", - "MediaInfoStreamTypeSubtitle": "Subtitle", - "MediaInfoStreamTypeEmbeddedImage": "Embedded Image", + "MediaInfoStreamTypeSubtitle": "Undertekster", + "MediaInfoStreamTypeEmbeddedImage": "Indlejret billede", "MediaInfoRefFrames": "Ref frames", - "TabPlayback": "Playback", - "TabNotifications": "Notifikationer", - "TabExpert": "Expert", - "HeaderSelectCustomIntrosPath": "Select Custom Intros Path", - "HeaderRateAndReview": "Rate and Review", - "HeaderThankYou": "Thank You", - "MessageThankYouForYourReview": "Thank you for your review.", - "LabelYourRating": "Your rating:", - "LabelFullReview": "Full review:", - "LabelShortRatingDescription": "Short rating summary:", - "OptionIRecommendThisItem": "I recommend this item", - "WebClientTourContent": "View your recently added media, next episodes, and more. The green circles indicate how many unplayed items you have.", - "WebClientTourMovies": "Play movies, trailers and more from any device with a web browser", - "WebClientTourMouseOver": "Hold the mouse over any poster for quick access to important information", - "WebClientTourTapHold": "Tap and hold or right click any poster for a context menu", - "WebClientTourMetadataManager": "Click edit to open the metadata manager", - "WebClientTourPlaylists": "Easily create playlists and instant mixes, and play them on any device", - "WebClientTourCollections": "Create movie collections to group box sets together", - "WebClientTourUserPreferences1": "User preferences allow you to customize the way your library is presented in all of your Emby apps", - "WebClientTourUserPreferences2": "Configure your audio and subtitle language settings once, for every Emby app", - "WebClientTourUserPreferences3": "Design the web client home page to your liking", - "WebClientTourUserPreferences4": "Configure backdrops, theme songs and external players", - "WebClientTourMobile1": "The web client works great on smartphones and tablets...", - "WebClientTourMobile2": "and easily controls other devices and Emby apps", - "WebClientTourMySync": "Sync your personal media to your devices for offline viewing.", - "MessageEnjoyYourStay": "Enjoy your stay", - "DashboardTourDashboard": "The server dashboard allows you to monitor your server and your users. You'll always know who is doing what and where they are.", - "DashboardTourHelp": "In-app help provides easy buttons to open wiki pages relating to the on-screen content.", - "DashboardTourUsers": "Easily create user accounts for your friends and family, each with their own permissions, library access, parental controls and more.", - "DashboardTourCinemaMode": "Cinema mode brings the theater experience straight to your living room with the ability to play trailers and custom intros before the main feature.", - "DashboardTourChapters": "Enable chapter image generation for your videos for a more pleasing presentation while viewing.", - "DashboardTourSubtitles": "Automatically download subtitles for your videos in any language.", - "DashboardTourPlugins": "Install plugins such as internet video channels, live tv, metadata scanners, and more.", - "DashboardTourNotifications": "Automatically send notifications of server events to your mobile device, email and more.", - "DashboardTourScheduledTasks": "Easily manage long running operations with scheduled tasks. Decide when they run, and how often.", - "DashboardTourMobile": "The Emby Server dashboard works great on smartphones and tablets. Manage your server from the palm of your hand anytime, anywhere.", - "DashboardTourSync": "Sync your personal media to your devices for offline viewing.", - "MessageRefreshQueued": "Refresh queued", - "TabDevices": "Devices", - "TabExtras": "Extras", - "DeviceLastUsedByUserName": "Last used by {0}", - "HeaderDeleteDevice": "Delete Device", - "DeleteDeviceConfirmation": "Are you sure you wish to delete this device? It will reappear the next time a user signs in with it.", - "LabelEnableCameraUploadFor": "Enable camera upload for:", - "HeaderSelectUploadPath": "Select Upload Path", - "LabelEnableCameraUploadForHelp": "Uploads will occur automatically in the background when signed into Emby.", - "ErrorMessageStartHourGreaterThanEnd": "End time must be greater than the start time.", - "ButtonLibraryAccess": "Library access", - "ButtonParentalControl": "Parental control", - "HeaderInvitationSent": "Invitation Sent", - "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", - "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", - "HeaderConnectionFailure": "Connection Failure", - "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", - "ButtonSelectServer": "Select server", - "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", - "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", - "DefaultErrorMessage": "There was an error processing the request. Please try again later.", - "ButtonAccept": "Accept", - "ButtonReject": "Reject", - "HeaderForgotPassword": "Forgot Password", - "MessageContactAdminToResetPassword": "Please contact your system administrator to reset your password.", - "MessageForgotPasswordInNetworkRequired": "Please try again within your home network to initiate the password reset process.", - "MessageForgotPasswordFileCreated": "The following file has been created on your server and contains instructions on how to proceed:", - "MessageForgotPasswordFileExpiration": "The reset pin will expire at {0}.", - "MessageInvalidForgotPasswordPin": "An invalid or expired pin was entered. Please try again.", - "MessagePasswordResetForUsers": "Passwords have been removed for the following users:", - "HeaderInviteGuest": "Invite Guest", - "ButtonLinkMyEmbyAccount": "Link my account now", - "MessageConnectAccountRequiredToInviteGuest": "In order to invite guests you need to first link your Emby account to this server.", + "TabPlayback": "Afspilning", + "TabNotifications": "Underretninger", + "TabExpert": "Ekspert", + "HeaderSelectCustomIntrosPath": "V\u00e6lg sti til brugerdefinerede introduktioner", + "HeaderRateAndReview": "Bed\u00f8m og anmeld", + "HeaderThankYou": "Tak", + "MessageThankYouForYourReview": "Tak for din anmeldelse", + "LabelYourRating": "Din bed\u00f8mmelse:", + "LabelFullReview": "Fuld anmeldelse:", + "LabelShortRatingDescription": "Kort bed\u00f8mmelsesresum\u00e9:", + "OptionIRecommendThisItem": "Jeg anbefaler dette", + "WebClientTourContent": "Se dit seneste tilf\u00f8jet media, kommende episoder samt mere. Den gr\u00f8nne cirkel indikerer hvor mange uafspillet elementer du har.", + "WebClientTourMovies": "Afspil film, trailere samt andet fra hvilken som helst enhed med en browser", + "WebClientTourMouseOver": "Hold musen over enhver plakat for hurtig adgang til vigtig information", + "WebClientTourTapHold": "Tryk og hold eller h\u00f8jreklik p\u00e5 enhver plakat for at \u00e5bne en menu for det valgte element", + "WebClientTourMetadataManager": "Klik p\u00e5 rediger for at \u00e5bne metadata manageren", + "WebClientTourPlaylists": "Opret afspilningslister og instant mixes, og afspil dem p\u00e5 enhver enhed", + "WebClientTourCollections": "Opret filmsamlinger s\u00e5 film kan grupperes sammen", + "WebClientTourUserPreferences1": "Brugerindstillinger g\u00f8r det muligt for dig at skr\u00e6ddersy m\u00e5den dit bibliotek pr\u00e6senteres i alle dine Emby apps", + "WebClientTourUserPreferences2": "Konfigurer sproget p\u00e5 dine lyd og undertekstindstillinger \u00e9n gang for alle Emby apps", + "WebClientTourUserPreferences3": "Design webklient hjemmesiden til din egen smag", + "WebClientTourUserPreferences4": "V\u00e6lg baggrunde, temasange og eksterne afspillere", + "WebClientTourMobile1": "Webklienten virker perfekt p\u00e5 smartphones og tablets...", + "WebClientTourMobile2": "og styr let andre enheder og Emby apps", + "WebClientTourMySync": "Synkroniser dine personlige mediefiler til dine enheder s\u00e5 det kan ses offline.", + "MessageEnjoyYourStay": "Nyd dit bes\u00f8g", + "DashboardTourDashboard": "Betjeningspanelet g\u00f8r det muligt at monitorere din server og dine brugere. Du vil altid v\u00e6re i stand til at vide hvem der g\u00f8r hvad samt hvor de er.", + "DashboardTourHelp": "Hj\u00e6lp inde i app'en s\u00f8rger for knapper der let \u00e5bner de wiki-sider der er relateret til hvad der er p\u00e5 din sk\u00e6rm i det \u00f8jeblik.", + "DashboardTourUsers": "Opret let brugerkonti til dine venner og familie, hver med deres egne rettigheder, adgang til biblioteket, for\u00e6ldre-indstillinger samt meget mere.", + "DashboardTourCinemaMode": "Biograftilstand giver dig biografoplevelsen direkte ind i din stue, med muligheden for at vise trailere og brugerdefinerede introduktioner f\u00f8r hovedfilmen.", + "DashboardTourChapters": "Aktiver kapitelbillede-oprettelse for dine videoer for en mere behagelig pr\u00e6sentation mens du afspiller.", + "DashboardTourSubtitles": "Download automatisk undertekster til dine videoer in ethvert sprog.", + "DashboardTourPlugins": "Installer tilf\u00f8jelser s\u00e5 som internet videokanaler, live tv, metadata skannere samt meget mere.", + "DashboardTourNotifications": "Send automatisk notifikationer vedr\u00f8rende serverbegivenheder til dine mobile enheder, din email samt andre tjenester.", + "DashboardTourScheduledTasks": "Administrer let processer der l\u00f8ber over l\u00e6ngere tid via planlagte opgaver. Bestem hvorn\u00e5r de udf\u00f8res samt hvor ofte.", + "DashboardTourMobile": "Emby betjeningspanelet virker uden problemer p\u00e5 b\u00e5de smartphones og tablets. Kontrol over din server er altid ved dine fingrespidser hvor som helst, n\u00e5r som helst.", + "DashboardTourSync": "Synkroniser dine personlige mediefiler til dine enheder s\u00e5 det kan ses offline.", + "MessageRefreshQueued": "Opdatering sat i k\u00f8", + "TabDevices": "Enheder", + "TabExtras": "Ekstra", + "DeviceLastUsedByUserName": "Sidst brugt af {0}", + "HeaderDeleteDevice": "Slet enhed", + "DeleteDeviceConfirmation": "Er du sikker p\u00e5 du \u00f8nsker at slette denne enhed? Den vil dukke op igen n\u00e6ste gang en bruger logger ind med den.", + "LabelEnableCameraUploadFor": "Aktiver kamera upload for:", + "HeaderSelectUploadPath": "V\u00e6lg upload sti", + "LabelEnableCameraUploadForHelp": "Uploads sker automatisk i baggrunden n\u00e5r du er logget p\u00e5 Emby", + "ErrorMessageStartHourGreaterThanEnd": "Slut tid skal v\u00e6re st\u00f8rre end start tid.", + "ButtonLibraryAccess": "Biblioteksadgang", + "ButtonParentalControl": "For\u00e6ldrekontrol", + "HeaderInvitationSent": "Invitation sendt", + "MessageInvitationSentToUser": "En email er blevet sendt til {0}, hvori de er blevet anmodet om at acceptere din invitation.", + "MessageInvitationSentToNewUser": "En email er blevet sendt til {0} med en invitation til at oprette sig hos Emby.", + "HeaderConnectionFailure": "Forbindelsesfejl", + "MessageUnableToConnectToServer": "Vi kan ikke forbinde til den valgte server p\u00e5 nuv\u00e6rende tidspunkt. Sikrer dig venligst at serveren k\u00f8rer og pr\u00f8v igen.", + "ButtonSelectServer": "V\u00e6lg server", + "MessagePluginConfigurationRequiresLocalAccess": "For at konfigurerer dette plugin log da venligst direkte ind p\u00e5 din lokale server.", + "MessageLoggedOutParentalControl": "Adgang er begr\u00e6nset p\u00e5 nuv\u00e6rende tidspunkt. Pr\u00f8v igen senere.", + "DefaultErrorMessage": "Det opstod en fejl ved behandlingen af foresp\u00f8rgslen. Pr\u00f8v igen senere.", + "ButtonAccept": "Accepter", + "ButtonReject": "Afvis", + "HeaderForgotPassword": "Glemt adgangskode", + "MessageContactAdminToResetPassword": "Kontakt venligst din systemadministrator for at nulstille din adgangskode.", + "MessageForgotPasswordInNetworkRequired": "Pr\u00f8v igen inde i dit hjemmenetv\u00e6rk for at igangs\u00e6tte nulstilling af din adgangskode.", + "MessageForgotPasswordFileCreated": "Den f\u00f8lgende fil er blevet oprettet p\u00e5 din server og indeholder instruktioner vedr\u00f8rende hvordan du skal forts\u00e6tte:", + "MessageForgotPasswordFileExpiration": "Nulstillings pinkoden udl\u00f8ber {0}.", + "MessageInvalidForgotPasswordPin": "En ugyldig eller udl\u00f8bet pinkode blev indtastet. Pr\u00f8v igen.", + "MessagePasswordResetForUsers": "Adgangskoder er blevet fjernet fra f\u00f8lgende brugere:", + "HeaderInviteGuest": "Inviter g\u00e6st", + "ButtonLinkMyEmbyAccount": "Link min konto nu", + "MessageConnectAccountRequiredToInviteGuest": "For at invitere g\u00e6ster skal du f\u00f8rst k\u00e6de din Emby konto til denne server.", "ButtonSync": "Sync", - "SyncMedia": "Sync Media", - "HeaderCancelSyncJob": "Cancel Sync", - "CancelSyncJobConfirmation": "Cancelling the sync job will remove synced media from the device during the next sync process. Are you sure you wish to proceed?", + "SyncMedia": "Synkroniser medier", + "HeaderCancelSyncJob": "Afbryd synkronisering", + "CancelSyncJobConfirmation": "Afbrydelse af synkroniseringen vil fjerne medier fra enheden under n\u00e6ste synkroniseringsproces. Er du sikker p\u00e5 du \u00f8nsker at forts\u00e6tte?", "TabSync": "Sync", - "MessagePleaseSelectDeviceToSyncTo": "Please select a device to sync to.", - "MessageSyncJobCreated": "Sync job created.", - "LabelSyncTo": "Sync to:", - "LabelSyncJobName": "Sync job name:", - "LabelQuality": "Quality:", - "HeaderSettings": "Settings", - "OptionAutomaticallySyncNewContent": "Automatically sync new content", - "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", - "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", - "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", - "LabelItemLimit": "Item limit:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be synced.", - "MessageBookPluginRequired": "Requires installation of the Bookshelf plugin", - "MessageGamePluginRequired": "Requires installation of the GameBrowser plugin", - "MessageUnsetContentHelp": "Content will be displayed as plain folders. For best results use the metadata manager to set the content types of sub-folders.", - "SyncJobItemStatusQueued": "Queued", - "SyncJobItemStatusConverting": "Converting", - "SyncJobItemStatusTransferring": "Transferring", - "SyncJobItemStatusSynced": "Synced", - "SyncJobItemStatusFailed": "Failed", - "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "Cancelled", - "LabelProfile": "Profile:", + "MessagePleaseSelectDeviceToSyncTo": "V\u00e6lg en enhed at synkroniserer til.", + "MessageSyncJobCreated": "Synkroniserings job oprettet", + "LabelSyncTo": "Synkroniser til:", + "LabelSyncJobName": "Navn til synkroniserings job:", + "LabelQuality": "Kvalitet:", + "HeaderSettings": "Indstillinger", + "OptionAutomaticallySyncNewContent": "Synkroniser automatisk nyt indhold", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", + "OptionSyncUnwatchedVideosOnly": "Synkroniser kun usete videoer", + "OptionSyncUnwatchedVideosOnlyHelp": "Kun usete videoer vil blive synkroniseret, og videoer vil blive fjernet fra enheden n\u00e5r de er blevet set.", + "LabelItemLimit": "Maks. filer:", + "LabelItemLimitHelp": "Valgfri. S\u00e6t en gr\u00e6nse for antallet af filer der synkroniseres.", + "MessageBookPluginRequired": "Kr\u00e6ver installation af Bookshelf tilf\u00f8jelsen", + "MessageGamePluginRequired": "Kr\u00e6ver installation af GameBrowser tilf\u00f8jelsen", + "MessageUnsetContentHelp": "Indhold vil blive vist som almindelige mapper. For det bedste resultat benyt metadata manageren til at v\u00e6lge indholdstypen i undermapper.", + "SyncJobItemStatusQueued": "Sat i k\u00f8", + "SyncJobItemStatusConverting": "Konverterer", + "SyncJobItemStatusTransferring": "Overf\u00f8rer", + "SyncJobItemStatusSynced": "Synkroniseret", + "SyncJobItemStatusFailed": "Fejlet", + "SyncJobItemStatusRemovedFromDevice": "Fjernet fra enhed", + "SyncJobItemStatusCancelled": "Annulleret", + "LabelProfile": "Profil:", "LabelBitrateMbps": "Bitrate (Mbps):", - "EmbyIntroDownloadMessage": "To download and install Emby Server visit {0}.", - "ButtonNewServer": "New Server", - "ButtonSignInWithConnect": "Sign in with Emby Connect", - "HeaderNewServer": "New Server", - "MyDevice": "My Device", - "ButtonRemote": "Remote" + "EmbyIntroDownloadMessage": "For at downloade og installere Emby bes\u00f8g {0}.", + "ButtonNewServer": "Ny server", + "ButtonSignInWithConnect": "Log ind med Emby Connect", + "HeaderNewServer": "Ny server", + "MyDevice": "Min enhed", + "ButtonRemote": "Fjernbetjening", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scener", + "HeaderUnlockApp": "Opl\u00e5s app", + "MessageUnlockAppWithPurchase": "L\u00e5s alle funktionerne i denne app op med en lille engangsbetaling.", + "MessageUnlockAppWithPurchaseOrSupporter": "L\u00e5s alle funktionerne i denne app op med en lille engangsbetaling eller ved at logge ind med et aktivt Emby Supporter medlemsskab.", + "MessageUnlockAppWithSupporter": "L\u00e5s alle funktionerne i denne app op ved at logge ind med et aktivt Emby Supporter medlemsskab.", + "MessageToValidateSupporter": "Hvis du har et aktivt Emby Supporter medlemsskab skal du blot logge ind i app'en mens du er p\u00e5 din Wifi forbindelse i dit eget hjem.", + "MessagePaymentServicesUnavailable": "Betalingsservicen er ikke tilg\u00e6ngelig p\u00e5 nuv\u00e6rende tidspunkt. Pr\u00f8v igen senere.", + "ButtonUnlockWithSupporter": "Log ind med et Emby Supporter medlemsskab", + "MessagePleaseSignInLocalNetwork": "F\u00f8r du forts\u00e6tter bedes du sikre dig at du har forbindelse til dit lokale netv\u00e6rk via Wifi eller Lan forbindelse.", + "ButtonUnlockWithPurchase": "L\u00e5s op gennem k\u00f8b", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "Live TV Guiden er p\u00e5 nuv\u00e6rende tidspunkt begr\u00e6nset til {0} kanaler. Klik p\u00e5 \"L\u00e5s op\" knappen for at f\u00e5 mere at vide omkring hvordan du kan f\u00e5 den fulde oplevelse.", + "OptionEnableFullscreen": "Aktiver fuldsk\u00e6rm", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Bibliotek", + "HeaderMedia": "Medier", + "ButtonInbox": "Indbakke", + "HeaderAdvanced": "Avanceret", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json index ea8c19fee..b79623ed0 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json @@ -38,15 +38,18 @@ "HeaderSupportTheTeam": "Unterst\u00fctzen Sie das Emby Team", "TextEnjoyBonusFeatures": "Erleben Sie Bonus Funktionen", "TitleLiveTV": "Live-TV", + "ButtonCancelSyncJob": "Synchronisationsjob abbrechen", "TitleSync": "Synchronisation", + "HeaderSelectDate": "Datum w\u00e4hlen", "ButtonDonate": "Spenden", + "LabelRecurringDonationCanBeCancelledHelp": "Fortlaufende Spenden k\u00f6nnen jederzeit \u00fcber deinen PayPal Account gek\u00fcndigt werden.", "HeaderMyMedia": "Meine Medien", "TitleNotifications": "Benachrichtigungen", "ErrorLaunchingChromecast": "W\u00e4hrend des startens von Chromecast ist ein Fehler aufgetreten. Bitte stelle sicher, dass dein Ger\u00e4te mit dem WLAN verbunden ist.", "MessageErrorLoadingSupporterInfo": "Es trat ein Fehler beim laden der Unterst\u00fctzer-Informationen auf. Bitte versuchen Sie es sp\u00e4ter erneut.", "MessageLinkYourSupporterKey": "Verbinden Sie Ihren Unterst\u00fctzer-Schl\u00fcssel mit bis zu {0} Emby Connect Benutzern um kostenfreien Zugriff auf die folgenden Apps zu erhalten:", "HeaderConfirmRemoveUser": "Entferne Benutzer", - "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Select the device to control by clicking the cast icon in the upper right corner. Swipe down anywhere on this screen to go back to where you came from.", + "MessageSwipeDownOnRemoteControl": "Willkommen zur Fernbedienung. W\u00e4hlen Sie ein Ger\u00e4t durch Klick auf das Cast-Icon in der rechten oberen Ecke, um es fernzusteuern. Streichen Sie irgendwo auf dem Bildschirm nach unten um zur\u00fcck zu gehen.", "MessageConfirmRemoveConnectSupporter": "M\u00f6chten Sie wirklich zus\u00e4tzliche Unterst\u00fctzer-Features von diesem Anwender entfernen?", "ValueTimeLimitSingleHour": "Zeitlimit: 1 Stunde", "ValueTimeLimitMultiHour": "Zeitlimit: {0} Stunden", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "Eine Unterst\u00fctzer-Mitgliedschaft bietet weitere Funktionen wie z.B. Zugriff auf die Synchronisation, Premium-Plugins, Internet Kan\u00e4le und mehr. {0}Erfahren Sie mehr{1}.", "LabelSyncNoTargetsHelp": "Es sieht so aus als w\u00fcrden Sie aktuell keine Apps verwenden, die Synchronisation unterst\u00fctzen.", "HeaderWelcomeToProjectServerDashboard": "Willkommen zur Emby Server \u00dcbersicht", - "HeaderWelcomeToProjectWebClient": "Willkommen im Emby Web-Client", + "HeaderWelcomeToProjectWebClient": "Willkommen zu Emby", "ButtonTakeTheTour": "Mache die Tour", "HeaderWelcomeBack": "Willkommen zur\u00fcck!", "TitlePlugins": "Plugins", "ButtonTakeTheTourToSeeWhatsNew": "Gehen Sie auf Erkundung und erfahren Sie was neu ist", "MessageNoSyncJobsFound": "Keine Synchronisierungs-Aufgaben gefunden. Um Synchronisierungs-Aufgaben zu erstellen verwenden Sie die dazugeh\u00f6rige Funktion im Web-Interface.", + "ButtonPlayTrailer": "Trailer abspielen", "HeaderLibraryAccess": "Bibliothekszugriff", "HeaderChannelAccess": "Channelzugriff", "HeaderDeviceAccess": "Ger\u00e4te Zugang", @@ -123,7 +127,7 @@ "LabelFree": "Frei", "HeaderPlaybackError": "Wiedergabefehler", "MessagePlaybackErrorNotAllowed": "Sie sind nicht befugt diese Inhalte wiederzugeben. Bitte kontaktieren Sie Ihren Systemadministrator f\u00fcr weitere Details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", + "MessagePlaybackErrorNoCompatibleStream": "Es sind keine kompatiblen Streams verf\u00fcgbar. Bitte versuchen Sie es sp\u00e4ter erneut oder kontaktieren Sie Ihren Systemadministrator f\u00fcr weitere Details.", "MessagePlaybackErrorRateLimitExceeded": "Ihr Wiedergabelimit wurde \u00fcberschritten. Bitte kontaktieren Sie Ihren Systemadministrator f\u00fcr weitere Details.", "MessagePlaybackErrorPlaceHolder": "Der gew\u00e4hlte Inhalt kann auf diesem Ger\u00e4t nicht abgespielt werden.", "HeaderSelectAudio": "W\u00e4hle Audio", @@ -143,7 +147,6 @@ "ButtonPlay": "Abspielen", "ButtonEdit": "Bearbeiten", "ButtonQueue": "Warteschlange", - "ButtonPlayTrailer": "Trailer abspielen", "ButtonPlaylist": "Wiedergabeliste", "ButtonPreviousTrack": "Vorheriges St\u00fcck", "LabelEnabled": "Aktivieren", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Transkodieren", "LabelPlayMethodDirectStream": "Direktes Streaming", "LabelPlayMethodDirectPlay": "Direktes Abspielen", + "LabelEpisodeNumber": "Episodennummer:", "LabelAudioCodec": "Audio: {0}", "LabelVideoCodec": "Video: {0}", "LabelLocalAccessUrl": "Lokale Adresse: {0}", @@ -307,6 +311,7 @@ "HeaderArtist": "Interpret", "LabelAddedOnDate": "Hinzugef\u00fcgt {0}", "ButtonStart": "Start", + "LabelSeasonNumber": "Staffelnummer:", "HeaderChannels": "Kan\u00e4le", "HeaderMediaFolders": "Medienverzeichnisse", "HeaderBlockItemsWithNoRating": "Blockiere Inhalte ohne Altersfreigabe:", @@ -335,6 +340,7 @@ "ButtonNextPage": "N\u00e4chste Seite", "ButtonPreviousPage": "Vorherige Seite", "ButtonMoveLeft": "Nach links", + "OptionReleaseDate": "Ver\u00f6ffentlichungsdatum", "ButtonMoveRight": "Nach rechts", "ButtonBrowseOnlineImages": "Durchsuche Onlinebilder", "HeaderDeleteItem": "L\u00f6sche Element", @@ -398,7 +404,7 @@ "TabMetadata": "Metadata", "TabDLNA": "DLNA", "TabLiveTV": "Live-TV", - "TabAutoOrganize": "Automatische Organisation", + "TabAutoOrganize": "Autom.Organisation", "TabPlugins": "Plugins", "TabAdvanced": "Erweitert", "TabHelp": "Hilfe", @@ -477,11 +483,8 @@ "PersonTypePerson": "Person", "LabelTitleDisplayOrder": "Reihenfolge Titeldarstellung:", "OptionSortName": "Sortiername", - "OptionReleaseDate": "Ver\u00f6ffentlichungsdatum", - "LabelSeasonNumber": "Staffelnummer:", "LabelDiscNumber": "Disc Nummer", "LabelParentNumber": "Ursprungsnummer", - "LabelEpisodeNumber": "Episodennummer:", "LabelTrackNumber": "St\u00fcck Nummer:", "LabelNumber": "Nummer:", "LabelReleaseDate": "Ver\u00f6ffentlichungsdatum:", @@ -586,7 +589,7 @@ "TooltipLike": "Like", "TooltipDislike": "Dislike", "TooltipPlayed": "Gespielt", - "ValueSeriesYearToPresent": "{0}-vorhanden", + "ValueSeriesYearToPresent": "{0}-heute", "ValueAwards": "Auszeichnungen: {0}", "ValueBudget": "Budget: {0}", "ValueRevenue": "Einnahmen: {0}", @@ -688,7 +691,7 @@ "DashboardTourHelp": "Die In-App-Hilfe Schaltfl\u00e4che bietet eine schnelle M\u00f6glichkeit um eine Wiki-Seite zum aktuellen Inhalt zu \u00f6ffnen.", "DashboardTourUsers": "Erstelle einfach Benutzeraccounts f\u00fcr Freunde und Familie. Jeder mit seinen individuellen Einstellungen bei Berechtigungen, Blibliothekenzugriff, Kindersicherung und mehr.", "DashboardTourCinemaMode": "Der Kino-Modus bringt das Kinoerlebnis direkt in dein Wohnzimmer, mit der F\u00e4higkeit Trailer und benutzerdefinierte Intros vor dem Hauptfilm zu spielen.", - "DashboardTourChapters": "Aktiviere die Bildgenerierung f\u00fcr die Kapitel deiner Videos f\u00fcr eine bessere Darstellung w\u00e4hrend des Ansehens.", + "DashboardTourChapters": "Aktiviere Kapitel-Bilder Generierung f\u00fcr Videos f\u00fcr eine bessere Darstellung.", "DashboardTourSubtitles": "Lade automatisch Untertitel f\u00fcr jede Sprache f\u00fcr deine Videos herunter.", "DashboardTourPlugins": "Installiere Plugins wie Internet Videoportale, Live-TV, Metadatenscanner und mehr.", "DashboardTourNotifications": "Sende automatisch Benachrichtigungen von Serverereignissen auf dein mobiles Endger\u00e4t, per E-Mail und mehr.", @@ -740,7 +743,7 @@ "LabelQuality": "Qualit\u00e4t:", "HeaderSettings": "Einstellungen", "OptionAutomaticallySyncNewContent": "Synchronisiere neue Inhalte automatisch", - "OptionAutomaticallySyncNewContentHelp": "Neue Inhalte dieser Kategorie werden automatisch mit dem Ger\u00e4t synchronisiert.", + "OptionAutomaticallySyncNewContentHelp": "Neu hinzugef\u00fcgte Inhalte werden automatisch zum Ger\u00e4t synchronisiert.", "OptionSyncUnwatchedVideosOnly": "Synchronisiere nur ungesehene Videos.", "OptionSyncUnwatchedVideosOnlyHelp": "Nur ungesehene Video werden synchronisiert. Videos werden entfernt sobald diese auf dem Ger\u00e4t angeschaut wurden.", "LabelItemLimit": "Maximale Anzahl:", @@ -757,10 +760,50 @@ "SyncJobItemStatusCancelled": "Abgebrochen", "LabelProfile": "Profil:", "LabelBitrateMbps": "Datenrate (Mbps):", - "EmbyIntroDownloadMessage": "To download and install Emby Server visit {0}.", - "ButtonNewServer": "New Server", - "ButtonSignInWithConnect": "Sign in with Emby Connect", - "HeaderNewServer": "New Server", - "MyDevice": "My Device", - "ButtonRemote": "Remote" + "EmbyIntroDownloadMessage": "Um Emby herunterzuladen und zu installieren, besuchen Sie: {0}.", + "ButtonNewServer": "Neuer Server", + "ButtonSignInWithConnect": "Anmelden mit Emby Connect", + "HeaderNewServer": "Neuer Server", + "MyDevice": "Mein Ger\u00e4t", + "ButtonRemote": "Fernbedienung", + "TabInfo": "Info", + "TabCast": "Darsteller", + "TabScenes": "Szenen", + "HeaderUnlockApp": "App freischalten", + "MessageUnlockAppWithPurchase": "Schalten Sie weitere Funktionen mit einem kleinen & einmaligen Kauf frei.", + "MessageUnlockAppWithPurchaseOrSupporter": "Schalten Sie alle Funktionen mit einem einmaligen kleinen Kauf frei. Alternativ k\u00f6nnen Sie sich auch mit einer aktiven Emby Unterst\u00fctzer-Mitgliedschaft anmelden.", + "MessageUnlockAppWithSupporter": "Schalten Sie alle Funktionen der Anwendung frei, indem Sie sich mit einer aktiven Emby Unterst\u00fctzer-Mitgliedschaft anmelden.", + "MessageToValidateSupporter": "Wenn Sie bereits ein aktiver Emby Suporter sind, melden Sie sich einfach mit der App in Ihrem Heimnetzwerk via WLAN an.", + "MessagePaymentServicesUnavailable": "Die Zahlungsdienste stehen leider gerade nicht zur Verf\u00fcgung. Bitte versuchen Sie es sp\u00e4ter erneut.", + "ButtonUnlockWithSupporter": "Anmelden mit Emby Unterst\u00fctzer Mitgliedschaft", + "MessagePleaseSignInLocalNetwork": "Bevor Sie fortsetzen sollten Sie sicher sein, dass Sie mit Ihrem Heimnetzwerk verbunden sind.", + "ButtonUnlockWithPurchase": "Freischalten durch Kauf", + "ButtonUnlockPrice": "Freischalten {0}", + "MessageLiveTvGuideRequiresUnlock": "Ihr TV-Guide ist begrenzt auf {0} Kan\u00e4le. Klicken Sie auf die Freischalten Schaltfl\u00e4che um weitere Informationen zu erhalten.", + "OptionEnableFullscreen": "Aktivieren Vollbild", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Bibliothek", + "HeaderMedia": "Medien", + "ButtonInbox": "Posteingang", + "HeaderAdvanced": "Erweitert", + "HeaderGroupVersions": "Gruppen Versionen", + "HeaderSaySomethingLike": "Sagen Sie etwas wie...", + "ButtonTryAgain": "Erneut versuchen", + "HeaderYouSaid": "Sie sagten....", + "MessageWeDidntRecognizeCommand": "Entschuldigung, dieses Kommando konnten wir nicht erkennen.", + "MessageIfYouBlockedVoice": "Wenn Sie die Sprachsteuerung f\u00fcr die App nicht erlaubt haben so m\u00fcssen Sie dies zuvor \u00e4ndern bevor Sie es erneut probieren.", + "MessageNoItemsFound": "Keine Eintr\u00e4ge gefunden.", + "ButtonManageServer": "Konfiguriere Server", + "ButtonPreferences": "Einstellungen", + "ButtonViewArtist": "Zeige Darsteller", + "ButtonViewAlbum": "Zeige Album", + "ErrorMessagePasswordNotMatchConfirm": "Das Passwort und die Passwort-Best\u00e4tigung m\u00fcssen \u00fcbereinstimmen.", + "ErrorMessageUsernameInUse": "Der Benutzername wird bereits verwenden. Bitte w\u00e4hlen Sie einen neuen Namen und versuchen Sie es erneut.", + "ErrorMessageEmailInUse": "Die Emailadresse wird bereits verwendet. Bitte verwenden Sie eine neue Emailadresse und versuchen Sie es erneut oder benutzen Sie die \"Passwort vergessen\" Funktion.", + "MessageThankYouForConnectSignUp": "Vielen Dank f\u00fcr Ihre Anmeldung bei Emby Connect. Eine Emails mit weiteren Schritten zur Anmeldung Ihres neuen Kontos wird Ihnen in K\u00fcrze zugestellt. Bitte best\u00e4tigen Sie Ihr Konto und kehren Sie dann hier her zur\u00fcck um sich anzumelden.", + "HeaderShare": "Teilen", + "ButtonShareHelp": "Teilen Sie eine Website mit Medieninformationen in einem sozialen Netzwerk. Medien werden niemals \u00f6ffentlich geteilt.", + "ButtonShare": "Teilen", + "HeaderConfirm": "Best\u00e4tigen" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/el.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/el.json index ec64a0f80..1381344f7 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/el.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/el.json @@ -38,8 +38,11 @@ "HeaderSupportTheTeam": "Support the Emby Team", "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", + "ButtonCancelSyncJob": "Cancel sync job", "TitleSync": "Sync", + "HeaderSelectDate": "Select Date", "ButtonDonate": "Donate", + "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderMyMedia": "My Media", "TitleNotifications": "\u0395\u03b9\u03b4\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03b9\u03c2", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", "ButtonTakeTheTour": "\u039a\u03ac\u03bd\u03c4\u03b5 \u03c4\u03b7\u03bd \u039e\u03b5\u03bd\u03ac\u03b3\u03b7\u03c3\u03b7", "HeaderWelcomeBack": "Welcome back!", "TitlePlugins": "\u03a0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03b1", "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "ButtonPlayTrailer": "Play trailer", "HeaderLibraryAccess": "Library Access", "HeaderChannelAccess": "Channel Access", "HeaderDeviceAccess": "\u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03a3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2", @@ -143,7 +147,6 @@ "ButtonPlay": "Play", "ButtonEdit": "Edit", "ButtonQueue": "Queue", - "ButtonPlayTrailer": "\u0391\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03ae trailer", "ButtonPlaylist": "Playlist", "ButtonPreviousTrack": "\u03a0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf \u039a\u03bf\u03bc\u03bc\u03ac\u03c4\u03b9", "LabelEnabled": "Enabled", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Transcoding", "LabelPlayMethodDirectStream": "Direct Streaming", "LabelPlayMethodDirectPlay": "Direct Playing", + "LabelEpisodeNumber": "Episode number:", "LabelAudioCodec": "Audio: {0}", "LabelVideoCodec": "Video: {0}", "LabelLocalAccessUrl": "Local access: {0}", @@ -307,6 +311,7 @@ "HeaderArtist": "Artist", "LabelAddedOnDate": "Added {0}", "ButtonStart": "Start", + "LabelSeasonNumber": "Season number:", "HeaderChannels": "\u039a\u03b1\u03bd\u03ac\u03bb\u03b9\u03b1", "HeaderMediaFolders": "\u03a6\u03ac\u03ba\u03b5\u03bb\u03bf\u03b9 \u03a0\u03bf\u03bb\u03c5\u03bc\u03ad\u03c3\u03c9\u03bd", "HeaderBlockItemsWithNoRating": "Block content with no rating information:", @@ -335,6 +340,7 @@ "ButtonNextPage": "Next Page", "ButtonPreviousPage": "Previous Page", "ButtonMoveLeft": "Move left", + "OptionReleaseDate": "Release date", "ButtonMoveRight": "Move right", "ButtonBrowseOnlineImages": "Browse online images", "HeaderDeleteItem": "Delete Item", @@ -477,11 +483,8 @@ "PersonTypePerson": "Person", "LabelTitleDisplayOrder": "Title display order:", "OptionSortName": "Sort name", - "OptionReleaseDate": "\u03a0\u03c1\u03ce\u03c4\u03b7 \u03a0\u03c1\u03bf\u03b2\u03bf\u03bb\u03ae", - "LabelSeasonNumber": "Season number:", "LabelDiscNumber": "Disc number", "LabelParentNumber": "Parent number", - "LabelEpisodeNumber": "Episode number:", "LabelTrackNumber": "Track number:", "LabelNumber": "Number:", "LabelReleaseDate": "Release date:", @@ -712,7 +715,7 @@ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", "HeaderConnectionFailure": "Connection Failure", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", - "ButtonSelectServer": "Select server", + "ButtonSelectServer": "Select Server", "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", "DefaultErrorMessage": "There was an error processing the request. Please try again later.", @@ -740,7 +743,7 @@ "LabelQuality": "Quality:", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", - "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", "LabelItemLimit": "Item limit:", @@ -762,5 +765,45 @@ "ButtonSignInWithConnect": "Sign in with Emby Connect", "HeaderNewServer": "New Server", "MyDevice": "My Device", - "ButtonRemote": "Remote" + "ButtonRemote": "Remote", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Advanced", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_GB.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/en-GB.json index af54e6dc2..9dbdfe995 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_GB.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/en-GB.json @@ -38,8 +38,11 @@ "HeaderSupportTheTeam": "Support the Emby Team", "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", + "ButtonCancelSyncJob": "Cancel sync job", "TitleSync": "Sync", + "HeaderSelectDate": "Select Date", "ButtonDonate": "Donate", + "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderMyMedia": "My Media", "TitleNotifications": "Notifications", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", "ButtonTakeTheTour": "Take the tour", "HeaderWelcomeBack": "Welcome back!", "TitlePlugins": "Plugins", "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "ButtonPlayTrailer": "Play trailer", "HeaderLibraryAccess": "Library Access", "HeaderChannelAccess": "Channel Access", "HeaderDeviceAccess": "Device Access", @@ -143,7 +147,6 @@ "ButtonPlay": "Play", "ButtonEdit": "Edit", "ButtonQueue": "Queue", - "ButtonPlayTrailer": "Play trailer", "ButtonPlaylist": "Playlist", "ButtonPreviousTrack": "Previous Track", "LabelEnabled": "Enabled", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Transcoding", "LabelPlayMethodDirectStream": "Direct Streaming", "LabelPlayMethodDirectPlay": "Direct Playing", + "LabelEpisodeNumber": "Episode number:", "LabelAudioCodec": "Audio: {0}", "LabelVideoCodec": "Video: {0}", "LabelLocalAccessUrl": "Local access: {0}", @@ -307,6 +311,7 @@ "HeaderArtist": "Artist", "LabelAddedOnDate": "Added {0}", "ButtonStart": "Start", + "LabelSeasonNumber": "Season number:", "HeaderChannels": "Channels", "HeaderMediaFolders": "Media Folders", "HeaderBlockItemsWithNoRating": "Block content with no rating information:", @@ -335,6 +340,7 @@ "ButtonNextPage": "Next Page", "ButtonPreviousPage": "Previous Page", "ButtonMoveLeft": "Move left", + "OptionReleaseDate": "Release date", "ButtonMoveRight": "Move right", "ButtonBrowseOnlineImages": "Browse online images", "HeaderDeleteItem": "Delete Item", @@ -477,11 +483,8 @@ "PersonTypePerson": "Person", "LabelTitleDisplayOrder": "Title display order:", "OptionSortName": "Sort name", - "OptionReleaseDate": "Release date", - "LabelSeasonNumber": "Season number:", "LabelDiscNumber": "Disc number", "LabelParentNumber": "Parent number", - "LabelEpisodeNumber": "Episode number:", "LabelTrackNumber": "Track number:", "LabelNumber": "Number:", "LabelReleaseDate": "Release date:", @@ -712,7 +715,7 @@ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", "HeaderConnectionFailure": "Connection Failure", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", - "ButtonSelectServer": "Select server", + "ButtonSelectServer": "Select Server", "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", "DefaultErrorMessage": "There was an error processing the request. Please try again later.", @@ -740,7 +743,7 @@ "LabelQuality": "Quality:", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", - "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", "LabelItemLimit": "Item limit:", @@ -762,5 +765,45 @@ "ButtonSignInWithConnect": "Sign in with Emby Connect", "HeaderNewServer": "New Server", "MyDevice": "My Device", - "ButtonRemote": "Remote" + "ButtonRemote": "Remote", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Advanced", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/be_BY.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/en-US.json index b96a7997e..f0a9ac9de 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/be_BY.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/en-US.json @@ -38,8 +38,11 @@ "HeaderSupportTheTeam": "Support the Emby Team", "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", + "ButtonCancelSyncJob": "Cancel sync job", "TitleSync": "Sync", + "HeaderSelectDate": "Select Date", "ButtonDonate": "Donate", + "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderMyMedia": "My Media", "TitleNotifications": "Notifications", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", "ButtonTakeTheTour": "Take the tour", "HeaderWelcomeBack": "Welcome back!", "TitlePlugins": "Plugins", "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "ButtonPlayTrailer": "Play trailer", "HeaderLibraryAccess": "Library Access", "HeaderChannelAccess": "Channel Access", "HeaderDeviceAccess": "Device Access", @@ -143,7 +147,6 @@ "ButtonPlay": "Play", "ButtonEdit": "Edit", "ButtonQueue": "Queue", - "ButtonPlayTrailer": "Play trailer", "ButtonPlaylist": "Playlist", "ButtonPreviousTrack": "Previous Track", "LabelEnabled": "Enabled", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Transcoding", "LabelPlayMethodDirectStream": "Direct Streaming", "LabelPlayMethodDirectPlay": "Direct Playing", + "LabelEpisodeNumber": "Episode number:", "LabelAudioCodec": "Audio: {0}", "LabelVideoCodec": "Video: {0}", "LabelLocalAccessUrl": "Local access: {0}", @@ -307,6 +311,7 @@ "HeaderArtist": "Artist", "LabelAddedOnDate": "Added {0}", "ButtonStart": "Start", + "LabelSeasonNumber": "Season number:", "HeaderChannels": "Channels", "HeaderMediaFolders": "Media Folders", "HeaderBlockItemsWithNoRating": "Block content with no rating information:", @@ -335,6 +340,7 @@ "ButtonNextPage": "Next Page", "ButtonPreviousPage": "Previous Page", "ButtonMoveLeft": "Move left", + "OptionReleaseDate": "Release date", "ButtonMoveRight": "Move right", "ButtonBrowseOnlineImages": "Browse online images", "HeaderDeleteItem": "Delete Item", @@ -477,11 +483,8 @@ "PersonTypePerson": "Person", "LabelTitleDisplayOrder": "Title display order:", "OptionSortName": "Sort name", - "OptionReleaseDate": "\u0414\u0430\u0442\u0430 \u0432\u044b\u0445\u043e\u0434\u0430", - "LabelSeasonNumber": "Season number:", "LabelDiscNumber": "Disc number", "LabelParentNumber": "Parent number", - "LabelEpisodeNumber": "Episode number:", "LabelTrackNumber": "Track number:", "LabelNumber": "Number:", "LabelReleaseDate": "Release date:", @@ -712,7 +715,7 @@ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", "HeaderConnectionFailure": "Connection Failure", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", - "ButtonSelectServer": "Select server", + "ButtonSelectServer": "Select Server", "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", "DefaultErrorMessage": "There was an error processing the request. Please try again later.", @@ -740,7 +743,7 @@ "LabelQuality": "Quality:", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", - "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", "LabelItemLimit": "Item limit:", @@ -762,5 +765,45 @@ "ButtonSignInWithConnect": "Sign in with Emby Connect", "HeaderNewServer": "New Server", "MyDevice": "My Device", - "ButtonRemote": "Remote" + "ButtonRemote": "Remote", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Advanced", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/es-AR.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/es-AR.json new file mode 100644 index 000000000..cfab42cd1 --- /dev/null +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/es-AR.json @@ -0,0 +1,809 @@ +{ + "SettingsSaved": "Settings saved.", + "AddUser": "Add User", + "Users": "Users", + "Delete": "Delete", + "Administrator": "Administrator", + "Password": "Password", + "DeleteImage": "Delete Image", + "MessageThankYouForSupporting": "Thank you for supporting Emby.", + "MessagePleaseSupportProject": "Please support Emby.", + "DeleteImageConfirmation": "Are you sure you wish to delete this image?", + "FileReadCancelled": "The file read has been canceled.", + "FileNotFound": "File not found.", + "FileReadError": "An error occurred while reading the file.", + "DeleteUser": "Delete User", + "DeleteUserConfirmation": "Are you sure you wish to delete this user?", + "PasswordResetHeader": "Reset Password", + "PasswordResetComplete": "The password has been reset.", + "PinCodeResetComplete": "The pin code has been reset.", + "PasswordResetConfirmation": "Are you sure you wish to reset the password?", + "PinCodeResetConfirmation": "Are you sure you wish to reset the pin code?", + "HeaderPinCodeReset": "Reset Pin Code", + "PasswordSaved": "Password saved.", + "PasswordMatchError": "Password and password confirmation must match.", + "OptionRelease": "Official Release", + "OptionBeta": "Beta", + "OptionDev": "Dev (Unstable)", + "UninstallPluginHeader": "Uninstall Plugin", + "UninstallPluginConfirmation": "Are you sure you wish to uninstall {0}?", + "NoPluginConfigurationMessage": "This plugin has nothing to configure.", + "NoPluginsInstalledMessage": "You have no plugins installed.", + "BrowsePluginCatalogMessage": "Browse our plugin catalog to view available plugins.", + "MessageKeyEmailedTo": "Key emailed to {0}.", + "MessageKeysLinked": "Keys linked.", + "HeaderConfirmation": "Confirmation", + "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", + "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "Disfrute los extras", + "TitleLiveTV": "Live TV", + "ButtonCancelSyncJob": "Cancel sync job", + "TitleSync": "Sync", + "HeaderSelectDate": "Select Date", + "ButtonDonate": "Donate", + "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Notifications", + "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Emby Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Select the device to control by clicking the cast icon in the upper right corner. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", + "ValueTimeLimitSingleHour": "Time limit: 1 hour", + "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "Users", + "PluginCategoryGeneral": "General", + "PluginCategoryContentProvider": "Content Providers", + "PluginCategoryScreenSaver": "Screen Savers", + "PluginCategoryTheme": "Themes", + "PluginCategorySync": "Sync", + "PluginCategorySocialIntegration": "Social Networks", + "PluginCategoryNotifications": "Notifications", + "PluginCategoryMetadata": "Metadata", + "PluginCategoryLiveTV": "Live TV", + "PluginCategoryChannel": "Channels", + "HeaderSearch": "Search", + "ValueDateCreated": "Date created: {0}", + "LabelArtist": "Artist", + "LabelMovie": "Movie", + "LabelMusicVideo": "Music Video", + "LabelEpisode": "Episode", + "LabelSeries": "Series", + "LabelStopping": "Stopping", + "LabelCancelled": "(cancelled)", + "LabelFailed": "(fallido)", + "ButtonHelp": "Help", + "ButtonSave": "Save", + "ButtonDownload": "Download", + "SyncJobStatusQueued": "Queued", + "SyncJobStatusConverting": "Converting", + "SyncJobStatusFailed": "Failed", + "SyncJobStatusCancelled": "Cancelled", + "SyncJobStatusCompleted": "Synced", + "SyncJobStatusReadyToTransfer": "Ready to Transfer", + "SyncJobStatusTransferring": "Transferring", + "SyncJobStatusCompletedWithError": "Synced with errors", + "SyncJobItemStatusReadyToTransfer": "Ready to Transfer", + "LabelCollection": "Collection", + "HeaderAddToCollection": "Agregar a la colecci\u00f3n", + "NewCollectionNameExample": "Ejemplo: Colecci\u00f3n de Star Wars", + "OptionSearchForInternetMetadata": "Search the internet for artwork and metadata", + "LabelSelectCollection": "Seleccionar colecci\u00f3n:", + "HeaderDevices": "Devices", + "ButtonScheduledTasks": "Scheduled tasks", + "MessageItemsAdded": "Items added", + "ButtonAddToCollection": "Add to collection", + "HeaderSelectCertificatePath": "Select Certificate Path", + "ConfirmMessageScheduledTaskButton": "This operation normally runs automatically as a scheduled task. It can also be run manually here. To configure the scheduled task, see:", + "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", + "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", + "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", + "ButtonTakeTheTour": "Take the tour", + "HeaderWelcomeBack": "Welcome back!", + "TitlePlugins": "Plugins", + "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", + "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "ButtonPlayTrailer": "Play trailer", + "HeaderLibraryAccess": "Library Access", + "HeaderChannelAccess": "Channel Access", + "HeaderDeviceAccess": "Device Access", + "HeaderSelectDevices": "Select Devices", + "ButtonCancelItem": "Cancel item", + "ButtonQueueForRetry": "Queue for retry", + "ButtonReenable": "Re-enable", + "ButtonLearnMore": "Learn more", + "SyncJobItemStatusSyncedMarkForRemoval": "Marked for removal", + "LabelAbortedByServerShutdown": "(Aborted by server shutdown)", + "LabelScheduledTaskLastRan": "Last ran {0}, taking {1}.", + "HeaderDeleteTaskTrigger": "Delete Task Trigger", + "HeaderTaskTriggers": "Task Triggers", + "MessageDeleteTaskTrigger": "Are you sure you wish to delete this task trigger?", + "MessageNoPluginsInstalled": "You have no plugins installed.", + "LabelVersionInstalled": "{0} installed", + "LabelNumberReviews": "{0} Reviews", + "LabelFree": "Free", + "HeaderPlaybackError": "Playback Error", + "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", + "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", + "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", + "HeaderSelectAudio": "Select Audio", + "HeaderSelectSubtitles": "Select Subtitles", + "ButtonMarkForRemoval": "Remove from device", + "ButtonUnmarkForRemoval": "Cancel removal from device", + "LabelDefaultStream": "(Default)", + "LabelForcedStream": "(Forced)", + "LabelDefaultForcedStream": "(Default\/Forced)", + "LabelUnknownLanguage": "Unknown language", + "MessageConfirmSyncJobItemCancellation": "Are you sure you wish to cancel this item?", + "ButtonMute": "Mute", + "ButtonUnmute": "Unmute", + "ButtonStop": "Stop", + "ButtonNextTrack": "Tema Siguiente", + "ButtonPause": "Pause", + "ButtonPlay": "Play", + "ButtonEdit": "Edit", + "ButtonQueue": "Queue", + "ButtonPlaylist": "Playlist", + "ButtonPreviousTrack": "Tema Anterior", + "LabelEnabled": "Enabled", + "LabelDisabled": "Disabled", + "ButtonMoreInformation": "More Information", + "LabelNoUnreadNotifications": "No unread notifications.", + "ButtonViewNotifications": "View notifications", + "ButtonMarkTheseRead": "Mark these read", + "ButtonClose": "Close", + "LabelAllPlaysSentToPlayer": "All plays will be sent to the selected player.", + "MessageInvalidUser": "Invalid username or password. Please try again.", + "HeaderLoginFailure": "Login Failure", + "HeaderAllRecordings": "All Recordings", + "RecommendationBecauseYouLike": "Because you like {0}", + "RecommendationBecauseYouWatched": "Because you watched {0}", + "RecommendationDirectedBy": "Directed by {0}", + "RecommendationStarring": "Starring {0}", + "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", + "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", + "MessageRecordingCancelled": "Recording cancelled.", + "HeaderConfirmSeriesCancellation": "Confirm Series Cancellation", + "MessageConfirmSeriesCancellation": "Are you sure you wish to cancel this series?", + "MessageSeriesCancelled": "Series cancelled.", + "HeaderConfirmRecordingDeletion": "Confirm Recording Deletion", + "MessageConfirmRecordingDeletion": "Are you sure you wish to delete this recording?", + "MessageRecordingDeleted": "Recording deleted.", + "ButonCancelRecording": "Cancel Recording", + "MessageRecordingSaved": "Recording saved.", + "OptionSunday": "Sunday", + "OptionMonday": "Monday", + "OptionTuesday": "Tuesday", + "OptionWednesday": "Wednesday", + "OptionThursday": "Thursday", + "OptionFriday": "Friday", + "OptionSaturday": "Saturday", + "OptionEveryday": "Every day", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", + "HeaderConfirmDeletion": "Confirm Deletion", + "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", + "LiveTvUpdateAvailable": "(Update available)", + "LabelVersionUpToDate": "Up to date!", + "ButtonResetTuner": "Reset tuner", + "HeaderResetTuner": "Reset Tuner", + "MessageConfirmResetTuner": "Are you sure you wish to reset this tuner? Any active players or recordings will be abruptly stopped.", + "ButtonCancelSeries": "Cancel Series", + "HeaderSeriesRecordings": "Series Recordings", + "LabelAnytime": "Any time", + "StatusRecording": "Recording", + "StatusWatching": "Watching", + "StatusRecordingProgram": "Recording {0}", + "StatusWatchingProgram": "Watching {0}", + "HeaderSplitMedia": "Split Media Apart", + "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", + "HeaderError": "Error", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", + "MessagePleaseSelectOneItem": "Please select at least one item.", + "MessagePleaseSelectTwoItems": "Please select at least two items.", + "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", + "MessageConfirmItemGrouping": "Emby apps will automatically choose the optimal version to play based on device and network performance. Are you sure you wish to continue?", + "HeaderResume": "Resume", + "HeaderMyViews": "My Views", + "HeaderLibraryFolders": "Media Folders", + "HeaderLatestMedia": "Latest Media", + "ButtonMoreItems": "More...", + "ButtonMore": "More", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteGames": "Favorite Games", + "HeaderRatingsDownloads": "Rating \/ Downloads", + "HeaderConfirmProfileDeletion": "Confirm Profile Deletion", + "MessageConfirmProfileDeletion": "Are you sure you wish to delete this profile?", + "HeaderSelectServerCachePath": "Select Server Cache Path", + "HeaderSelectTranscodingPath": "Select Transcoding Temporary Path", + "HeaderSelectImagesByNamePath": "Select Images By Name Path", + "HeaderSelectMetadataPath": "Select Metadata Path", + "HeaderSelectServerCachePathHelp": "Browse or enter the path to use for server cache files. The folder must be writeable.", + "HeaderSelectTranscodingPathHelp": "Browse or enter the path to use for transcoding temporary files. The folder must be writeable.", + "HeaderSelectImagesByNamePathHelp": "Browse or enter the path to your items by name folder. The folder must be writeable.", + "HeaderSelectMetadataPathHelp": "Browse or enter the path you'd like to store metadata within. The folder must be writeable.", + "HeaderSelectChannelDownloadPath": "Select Channel Download Path", + "HeaderSelectChannelDownloadPathHelp": "Browse or enter the path to use for storing channel cache files. The folder must be writeable.", + "OptionNewCollection": "New...", + "ButtonAdd": "Add", + "ButtonRemove": "Remove", + "LabelChapterDownloaders": "Chapter downloaders:", + "LabelChapterDownloadersHelp": "Enable and rank your preferred chapter downloaders in order of priority. Lower priority downloaders will only be used to fill in missing information.", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderLatestChannelMedia": "Latest Channel Items", + "ButtonOrganizeFile": "Organize File", + "ButtonDeleteFile": "Delete File", + "HeaderOrganizeFile": "Organize File", + "HeaderDeleteFile": "Delete File", + "StatusSkipped": "Skipped", + "StatusFailed": "Failed", + "StatusSuccess": "Success", + "MessageFileWillBeDeleted": "The following file will be deleted:", + "MessageSureYouWishToProceed": "Are you sure you wish to proceed?", + "MessageDuplicatesWillBeDeleted": "In addition the following dupliates will be deleted:", + "MessageFollowingFileWillBeMovedFrom": "The following file will be moved from:", + "MessageDestinationTo": "to:", + "HeaderSelectWatchFolder": "Select Watch Folder", + "HeaderSelectWatchFolderHelp": "Browse or enter the path to your watch folder. The folder must be writeable.", + "OrganizePatternResult": "Result: {0}", + "HeaderRestart": "Restart", + "HeaderShutdown": "Shutdown", + "MessageConfirmRestart": "Are you sure you wish to restart Emby Server?", + "MessageConfirmShutdown": "Are you sure you wish to shutdown Emby Server?", + "ButtonUpdateNow": "Update Now", + "ValueItemCount": "{0} item", + "ValueItemCountPlural": "{0} items", + "NewVersionOfSomethingAvailable": "A new version of {0} is available!", + "VersionXIsAvailableForDownload": "Version {0} is now available for download.", + "LabelVersionNumber": "Version {0}", + "LabelPlayMethodTranscoding": "Transcoding", + "LabelPlayMethodDirectStream": "Direct Streaming", + "LabelPlayMethodDirectPlay": "Direct Playing", + "LabelEpisodeNumber": "Episode number:", + "LabelAudioCodec": "Audio: {0}", + "LabelVideoCodec": "Video: {0}", + "LabelLocalAccessUrl": "Local access: {0}", + "LabelRemoteAccessUrl": "Remote access: {0}", + "LabelRunningOnPort": "Running on http port {0}.", + "LabelRunningOnPorts": "Running on http port {0}, and https port {1}.", + "HeaderLatestFromChannel": "Latest from {0}", + "LabelUnknownLanaguage": "Unknown language", + "HeaderCurrentSubtitles": "Current Subtitles", + "MessageDownloadQueued": "The download has been queued.", + "MessageAreYouSureDeleteSubtitles": "Are you sure you wish to delete this subtitle file?", + "ButtonRemoteControl": "Remote Control", + "HeaderLatestTvRecordings": "Latest Recordings", + "ButtonOk": "Ok", + "ButtonCancel": "Cancel", + "ButtonRefresh": "Refresh", + "LabelCurrentPath": "Current path:", + "HeaderSelectMediaPath": "Select Media Path", + "HeaderSelectPath": "Select Path", + "ButtonNetwork": "Network", + "MessageDirectoryPickerInstruction": "Network paths can be entered manually in the event the Network button fails to locate your devices. For example, {0} or {1}.", + "HeaderMenu": "Menu", + "ButtonOpen": "Open", + "ButtonOpenInNewTab": "Open in new tab", + "ButtonShuffle": "Shuffle", + "ButtonInstantMix": "Instant mix", + "ButtonResume": "Resume", + "HeaderScenes": "Scenes", + "HeaderAudioTracks": "Audio Tracks", + "HeaderLibraries": "Libraries", + "HeaderSubtitles": "Subtitles", + "HeaderVideoQuality": "Video Quality", + "MessageErrorPlayingVideo": "There was an error playing the video.", + "MessageEnsureOpenTuner": "Please ensure there is an open tuner availalble.", + "ButtonHome": "Home", + "ButtonDashboard": "Dashboard", + "ButtonReports": "Reports", + "ButtonMetadataManager": "Metadata Manager", + "HeaderTime": "Time", + "HeaderName": "Name", + "HeaderAlbum": "Album", + "HeaderAlbumArtist": "Album Artist", + "HeaderArtist": "Artist", + "LabelAddedOnDate": "Added {0}", + "ButtonStart": "Start", + "LabelSeasonNumber": "Season number:", + "HeaderChannels": "Channels", + "HeaderMediaFolders": "Media Folders", + "HeaderBlockItemsWithNoRating": "Block content with no rating information:", + "OptionBlockOthers": "Others", + "OptionBlockTvShows": "TV Shows", + "OptionBlockTrailers": "Trailers", + "OptionBlockMusic": "Music", + "OptionBlockMovies": "Movies", + "OptionBlockBooks": "Books", + "OptionBlockGames": "Games", + "OptionBlockLiveTvPrograms": "Live TV Programs", + "OptionBlockLiveTvChannels": "Live TV Channels", + "OptionBlockChannelContent": "Internet Channel Content", + "ButtonRevoke": "Revoke", + "MessageConfirmRevokeApiKey": "Are you sure you wish to revoke this api key? The application's connection to Emby Server will be abruptly terminated.", + "HeaderConfirmRevokeApiKey": "Revoke Api Key", + "ValueContainer": "Container: {0}", + "ValueAudioCodec": "C\u00f3dec de audio: {0}", + "ValueVideoCodec": "C\u00f3dec de video: {0}", + "ValueCodec": "C\u00f3dec: {0}", + "ValueConditions": "Condiciones: {0}", + "LabelAll": "Todo", + "HeaderDeleteImage": "Borrar imagen", + "MessageFileNotFound": "File not found.", + "MessageFileReadError": "An error occurred reading this file.", + "ButtonNextPage": "P\u00e1gina siguiente", + "ButtonPreviousPage": "P\u00e1gina anterior", + "ButtonMoveLeft": "Move left", + "OptionReleaseDate": "Release date", + "ButtonMoveRight": "Move right", + "ButtonBrowseOnlineImages": "Browse online images", + "HeaderDeleteItem": "Delete Item", + "ConfirmDeleteItem": "Deleting this item will delete it from both the file system and your media library. Are you sure you wish to continue?", + "MessagePleaseEnterNameOrId": "Please enter a name or an external Id.", + "MessageValueNotCorrect": "The value entered is not correct. Please try again.", + "MessageItemSaved": "Item saved.", + "MessagePleaseAcceptTermsOfServiceBeforeContinuing": "Please accept the terms of service before continuing.", + "OptionEnded": "Ended", + "OptionContinuing": "Continuing", + "OptionOff": "Off", + "OptionOn": "On", + "ButtonSettings": "Settings", + "ButtonUninstall": "Uninstall", + "HeaderFields": "Fields", + "HeaderFieldsHelp": "Slide a field to 'off' to lock it and prevent it's data from being changed.", + "HeaderLiveTV": "TV en vivo", + "MissingLocalTrailer": "Missing local trailer.", + "MissingPrimaryImage": "Missing primary image.", + "MissingBackdropImage": "Missing backdrop image.", + "MissingLogoImage": "Missing logo image.", + "MissingEpisode": "Falta cap\u00edtulo.", + "OptionScreenshots": "Screenshots", + "OptionBackdrops": "Backdrops", + "OptionImages": "Im\u00e1genes", + "OptionKeywords": "Palabras clave", + "OptionTags": "Etiquetas", + "OptionStudios": "Estudios", + "OptionName": "Nombre", + "OptionOverview": "Overview", + "OptionGenres": "Genres", + "OptionParentalRating": "Parental Rating", + "OptionPeople": "People", + "OptionRuntime": "Runtime", + "OptionProductionLocations": "Production Locations", + "OptionBirthLocation": "Lugar de nacimiento", + "LabelAllChannels": "Todos los canales", + "LabelLiveProgram": "EN VIVO", + "LabelNewProgram": "NUEVO", + "LabelPremiereProgram": "ESTRENO", + "LabelHDProgram": "HD", + "HeaderChangeFolderType": "Change Content Type", + "HeaderChangeFolderTypeHelp": "To change the type, please remove and rebuild the folder with the new type.", + "HeaderAlert": "Alert", + "MessagePleaseRestart": "Please restart to finish updating.", + "ButtonRestart": "Restart", + "MessagePleaseRefreshPage": "Please refresh this page to receive new updates from the server.", + "ButtonHide": "Hide", + "MessageSettingsSaved": "Settings saved.", + "ButtonSignOut": "Sign Out", + "ButtonMyProfile": "My Profile", + "ButtonMyPreferences": "My Preferences", + "MessageBrowserDoesNotSupportWebSockets": "This browser does not support web sockets. For a better experience, try a newer browser such as Chrome, Firefox, IE10+, Safari (iOS) or Opera.", + "LabelInstallingPackage": "Installing {0}", + "LabelPackageInstallCompleted": "{0} installation completed.", + "LabelPackageInstallFailed": "{0} installation failed.", + "LabelPackageInstallCancelled": "{0} installation cancelled.", + "TabServer": "Server", + "TabUsers": "Users", + "TabLibrary": "Library", + "TabMetadata": "Metadata", + "TabDLNA": "DLNA", + "TabLiveTV": "Live TV", + "TabAutoOrganize": "Auto-Organize", + "TabPlugins": "Plugins", + "TabAdvanced": "Advanced", + "TabHelp": "Help", + "TabScheduledTasks": "Scheduled Tasks", + "ButtonFullscreen": "Pantalla Completa", + "ButtonAudioTracks": "Pistas de Audio", + "ButtonSubtitles": "Subtitles", + "ButtonScenes": "Scenes", + "ButtonQuality": "Quality", + "HeaderNotifications": "Notifications", + "HeaderSelectPlayer": "Select Player:", + "ButtonSelect": "Select", + "ButtonNew": "New", + "MessageInternetExplorerWebm": "For best results with Internet Explorer please install the WebM playback plugin.", + "HeaderVideoError": "Video Error", + "ButtonAddToPlaylist": "Add to playlist", + "HeaderAddToPlaylist": "Add to Playlist", + "LabelName": "Name:", + "ButtonSubmit": "Submit", + "LabelSelectPlaylist": "Playlist:", + "OptionNewPlaylist": "New playlist...", + "MessageAddedToPlaylistSuccess": "Ok", + "ButtonView": "View", + "ButtonViewSeriesRecording": "View series recording", + "ValueOriginalAirDate": "Original air date: {0}", + "ButtonRemoveFromPlaylist": "Remove from playlist", + "HeaderSpecials": "Specials", + "HeaderTrailers": "Trailers", + "HeaderAudio": "Audio", + "HeaderResolution": "Resolution", + "HeaderVideo": "Video", + "HeaderRuntime": "Runtime", + "HeaderCommunityRating": "Community rating", + "HeaderPasswordReset": "Password Reset", + "HeaderParentalRating": "Parental rating", + "HeaderReleaseDate": "Release date", + "HeaderDateAdded": "Date added", + "HeaderSeries": "Series", + "HeaderSeason": "Season", + "HeaderSeasonNumber": "Season number", + "HeaderNetwork": "Network", + "HeaderYear": "Year", + "HeaderGameSystem": "Game system", + "HeaderPlayers": "Players", + "HeaderEmbeddedImage": "Embedded image", + "HeaderTrack": "Track", + "HeaderDisc": "Disc", + "OptionMovies": "Movies", + "OptionCollections": "Collections", + "OptionSeries": "Series", + "OptionSeasons": "Seasons", + "OptionEpisodes": "Episodes", + "OptionGames": "Games", + "OptionGameSystems": "Game systems", + "OptionMusicArtists": "Music artists", + "OptionMusicAlbums": "Music albums", + "OptionMusicVideos": "Music videos", + "OptionSongs": "Songs", + "OptionHomeVideos": "Home videos", + "OptionBooks": "Books", + "OptionAdultVideos": "Adult videos", + "ButtonUp": "Up", + "ButtonDown": "Down", + "LabelMetadataReaders": "Metadata readers:", + "LabelMetadataReadersHelp": "Rank your preferred local metadata sources in order of priority. The first file found will be read.", + "LabelMetadataDownloaders": "Metadata downloaders:", + "LabelMetadataDownloadersHelp": "Enable and rank your preferred metadata downloaders in order of priority. Lower priority downloaders will only be used to fill in missing information.", + "LabelMetadataSavers": "Metadata savers:", + "LabelMetadataSaversHelp": "Choose the file formats to save your metadata to.", + "LabelImageFetchers": "Image fetchers:", + "LabelImageFetchersHelp": "Enable and rank your preferred image fetchers in order of priority.", + "ButtonQueueAllFromHere": "Queue all from here", + "ButtonPlayAllFromHere": "Play all from here", + "LabelDynamicExternalId": "{0} Id:", + "HeaderIdentify": "Identify Item", + "PersonTypePerson": "Person", + "LabelTitleDisplayOrder": "Title display order:", + "OptionSortName": "Sort name", + "LabelDiscNumber": "Disc number", + "LabelParentNumber": "Parent number", + "LabelTrackNumber": "Track number:", + "LabelNumber": "Number:", + "LabelReleaseDate": "Release date:", + "LabelEndDate": "End date:", + "LabelYear": "Year:", + "LabelDateOfBirth": "Date of birth:", + "LabelBirthYear": "Birth year:", + "LabelBirthDate": "Birth date:", + "LabelDeathDate": "Death date:", + "HeaderRemoveMediaLocation": "Remove Media Location", + "MessageConfirmRemoveMediaLocation": "Are you sure you wish to remove this location?", + "HeaderRenameMediaFolder": "Rename Media Folder", + "LabelNewName": "New name:", + "HeaderAddMediaFolder": "Add Media Folder", + "HeaderAddMediaFolderHelp": "Name (Movies, Music, TV, etc):", + "HeaderRemoveMediaFolder": "Remove Media Folder", + "MessageTheFollowingLocationWillBeRemovedFromLibrary": "The following media locations will be removed from your library:", + "MessageAreYouSureYouWishToRemoveMediaFolder": "Are you sure you wish to remove this media folder?", + "ButtonRename": "Rename", + "ButtonChangeType": "Change type", + "HeaderMediaLocations": "Media Locations", + "LabelContentTypeValue": "Content type: {0}", + "LabelPathSubstitutionHelp": "Optional: Path substitution can map server paths to network shares that clients can access for direct playback.", + "FolderTypeUnset": "Unset (mixed content)", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "TabMovies": "Movies", + "TabSeries": "Series", + "TabEpisodes": "Cap\u00edtulos", + "TabTrailers": "Trailers", + "TabGames": "Games", + "TabAlbums": "Albums", + "TabSongs": "Songs", + "TabMusicVideos": "Music Videos", + "BirthPlaceValue": "Birth place: {0}", + "DeathDateValue": "Died: {0}", + "BirthDateValue": "Born: {0}", + "HeaderLatestReviews": "Latest Reviews", + "HeaderPluginInstallation": "Plugin Installation", + "MessageAlreadyInstalled": "This version is already installed.", + "ValueReviewCount": "{0} Reviews", + "MessageYouHaveVersionInstalled": "You currently have version {0} installed.", + "MessageTrialExpired": "The trial period for this feature has expired", + "MessageTrialWillExpireIn": "The trial period for this feature will expire in {0} day(s)", + "MessageInstallPluginFromApp": "This plugin must be installed from with in the app you intend to use it in.", + "ValuePriceUSD": "Price: {0} (USD)", + "MessageFeatureIncludedWithSupporter": "You are registered for this feature, and will be able to continue using it with an active supporter membership.", + "MessageChangeRecurringPlanConfirm": "After completing this transaction you will need to cancel your previous recurring donation from within your PayPal account. Thank you for supporting Emby.", + "MessageSupporterMembershipExpiredOn": "Your supporter membership expired on {0}.", + "MessageYouHaveALifetimeMembership": "You have a lifetime supporter membership. You can provide additional donations on a one-time or recurring basis using the options below. Thank you for supporting Emby.", + "MessageYouHaveAnActiveRecurringMembership": "You have an active {0} membership. You can upgrade your plan using the options below.", + "ButtonDelete": "Delete", + "HeaderEmbyAccountAdded": "Emby Account Added", + "MessageEmbyAccountAdded": "The Emby account has been added to this user.", + "MessagePendingEmbyAccountAdded": "The Emby account has been added to this user. An email will be sent to the owner of the account. The invitation will need to be confirmed by clicking a link within the email.", + "HeaderEmbyAccountRemoved": "Emby Account Removed", + "MessageEmbyAccontRemoved": "The Emby account has been removed from this user.", + "TooltipLinkedToEmbyConnect": "Linked to Emby Connect", + "HeaderUnrated": "Unrated", + "ValueDiscNumber": "Disc {0}", + "HeaderUnknownDate": "Unknown Date", + "HeaderUnknownYear": "Unknown Year", + "ValueMinutes": "{0} min", + "ButtonPlayExternalPlayer": "Play with external player", + "HeaderSelectExternalPlayer": "Select External Player", + "HeaderExternalPlayerPlayback": "External Player Playback", + "ButtonImDone": "I'm Done", + "OptionWatched": "Watched", + "OptionUnwatched": "Unwatched", + "ExternalPlayerPlaystateOptionsHelp": "Specify how you would like to resume playing this video next time.", + "LabelMarkAs": "Mark as:", + "OptionInProgress": "In-Progress", + "LabelResumePoint": "Resume point:", + "ValueOneMovie": "1 movie", + "ValueMovieCount": "{0} movies", + "ValueOneTrailer": "1 trailer", + "ValueTrailerCount": "{0} trailers", + "ValueOneSeries": "1 series", + "ValueSeriesCount": "{0} series", + "ValueOneEpisode": "1 episode", + "ValueEpisodeCount": "{0} episodes", + "ValueOneGame": "1 game", + "ValueGameCount": "{0} games", + "ValueOneAlbum": "1 album", + "ValueAlbumCount": "{0} albums", + "ValueOneSong": "1 song", + "ValueSongCount": "{0} songs", + "ValueOneMusicVideo": "1 music video", + "ValueMusicVideoCount": "{0} music videos", + "HeaderOffline": "Offline", + "HeaderUnaired": "Unaired", + "HeaderMissing": "Missing", + "ButtonWebsite": "Website", + "TooltipFavorite": "Favorite", + "TooltipLike": "Like", + "TooltipDislike": "Dislike", + "TooltipPlayed": "Played", + "ValueSeriesYearToPresent": "{0}-Present", + "ValueAwards": "Awards: {0}", + "ValueBudget": "Budget: {0}", + "ValueRevenue": "Revenue: {0}", + "ValuePremiered": "Premiered {0}", + "ValuePremieres": "Premieres {0}", + "ValueStudio": "Studio: {0}", + "ValueStudios": "Studios: {0}", + "ValueStatus": "Status: {0}", + "ValueSpecialEpisodeName": "Special - {0}", + "LabelLimit": "Limit:", + "ValueLinks": "Links: {0}", + "HeaderPeople": "People", + "HeaderCastAndCrew": "Cast & Crew", + "ValueArtist": "Artist: {0}", + "ValueArtists": "Artists: {0}", + "HeaderTags": "Tags", + "MediaInfoCameraMake": "Camera make", + "MediaInfoCameraModel": "Camera model", + "MediaInfoAltitude": "Altitude", + "MediaInfoAperture": "Aperture", + "MediaInfoExposureTime": "Exposure time", + "MediaInfoFocalLength": "Focal length", + "MediaInfoOrientation": "Orientation", + "MediaInfoIsoSpeedRating": "Iso speed rating", + "MediaInfoLatitude": "Latitude", + "MediaInfoLongitude": "Longitude", + "MediaInfoShutterSpeed": "Shutter speed", + "MediaInfoSoftware": "Software", + "HeaderIfYouLikeCheckTheseOut": "If you like {0}, check these out...", + "HeaderPlotKeywords": "Plot Keywords", + "HeaderMovies": "Movies", + "HeaderAlbums": "Albums", + "HeaderGames": "Games", + "HeaderBooks": "Books", + "HeaderEpisodes": "Cap\u00edtulos", + "HeaderSeasons": "Seasons", + "HeaderTracks": "Tracks", + "HeaderItems": "Items", + "HeaderOtherItems": "Other Items", + "ButtonFullReview": "Full review", + "ValueAsRole": "as {0}", + "ValueGuestStar": "Guest star", + "MediaInfoSize": "Size", + "MediaInfoPath": "Path", + "MediaInfoFormat": "Format", + "MediaInfoContainer": "Container", + "MediaInfoDefault": "Default", + "MediaInfoForced": "Forced", + "MediaInfoExternal": "External", + "MediaInfoTimestamp": "Timestamp", + "MediaInfoPixelFormat": "Pixel format", + "MediaInfoBitDepth": "Bit depth", + "MediaInfoSampleRate": "Sample rate", + "MediaInfoBitrate": "Bitrate", + "MediaInfoChannels": "Channels", + "MediaInfoLayout": "Layout", + "MediaInfoLanguage": "Language", + "MediaInfoCodec": "Codec", + "MediaInfoProfile": "Profile", + "MediaInfoLevel": "Level", + "MediaInfoAspectRatio": "Aspect ratio", + "MediaInfoResolution": "Resolution", + "MediaInfoAnamorphic": "Anamorphic", + "MediaInfoInterlaced": "Interlaced", + "MediaInfoFramerate": "Framerate", + "MediaInfoStreamTypeAudio": "Audio", + "MediaInfoStreamTypeData": "Data", + "MediaInfoStreamTypeVideo": "Video", + "MediaInfoStreamTypeSubtitle": "Subtitle", + "MediaInfoStreamTypeEmbeddedImage": "Embedded Image", + "MediaInfoRefFrames": "Ref frames", + "TabPlayback": "Playback", + "TabNotifications": "Notifications", + "TabExpert": "Expert", + "HeaderSelectCustomIntrosPath": "Select Custom Intros Path", + "HeaderRateAndReview": "Rate and Review", + "HeaderThankYou": "Thank You", + "MessageThankYouForYourReview": "Thank you for your review.", + "LabelYourRating": "Your rating:", + "LabelFullReview": "Full review:", + "LabelShortRatingDescription": "Short rating summary:", + "OptionIRecommendThisItem": "I recommend this item", + "WebClientTourContent": "View your recently added media, next episodes, and more. The green circles indicate how many unplayed items you have.", + "WebClientTourMovies": "Play movies, trailers and more from any device with a web browser", + "WebClientTourMouseOver": "Hold the mouse over any poster for quick access to important information", + "WebClientTourTapHold": "Tap and hold or right click any poster for a context menu", + "WebClientTourMetadataManager": "Click edit to open the metadata manager", + "WebClientTourPlaylists": "Easily create playlists and instant mixes, and play them on any device", + "WebClientTourCollections": "Create movie collections to group box sets together", + "WebClientTourUserPreferences1": "User preferences allow you to customize the way your library is presented in all of your Emby apps", + "WebClientTourUserPreferences2": "Configure your audio and subtitle language settings once, for every Emby app", + "WebClientTourUserPreferences3": "Design the web client home page to your liking", + "WebClientTourUserPreferences4": "Configure backdrops, theme songs and external players", + "WebClientTourMobile1": "The web client works great on smartphones and tablets...", + "WebClientTourMobile2": "and easily controls other devices and Emby apps", + "WebClientTourMySync": "Sync your personal media to your devices for offline viewing.", + "MessageEnjoyYourStay": "Enjoy your stay", + "DashboardTourDashboard": "The server dashboard allows you to monitor your server and your users. You'll always know who is doing what and where they are.", + "DashboardTourHelp": "In-app help provides easy buttons to open wiki pages relating to the on-screen content.", + "DashboardTourUsers": "Easily create user accounts for your friends and family, each with their own permissions, library access, parental controls and more.", + "DashboardTourCinemaMode": "Cinema mode brings the theater experience straight to your living room with the ability to play trailers and custom intros before the main feature.", + "DashboardTourChapters": "Enable chapter image generation for your videos for a more pleasing presentation while viewing.", + "DashboardTourSubtitles": "Automatically download subtitles for your videos in any language.", + "DashboardTourPlugins": "Install plugins such as internet video channels, live tv, metadata scanners, and more.", + "DashboardTourNotifications": "Automatically send notifications of server events to your mobile device, email and more.", + "DashboardTourScheduledTasks": "Easily manage long running operations with scheduled tasks. Decide when they run, and how often.", + "DashboardTourMobile": "The Emby Server dashboard works great on smartphones and tablets. Manage your server from the palm of your hand anytime, anywhere.", + "DashboardTourSync": "Sync your personal media to your devices for offline viewing.", + "MessageRefreshQueued": "Refresh queued", + "TabDevices": "Devices", + "TabExtras": "Extras", + "DeviceLastUsedByUserName": "Last used by {0}", + "HeaderDeleteDevice": "Delete Device", + "DeleteDeviceConfirmation": "Are you sure you wish to delete this device? It will reappear the next time a user signs in with it.", + "LabelEnableCameraUploadFor": "Enable camera upload for:", + "HeaderSelectUploadPath": "Select Upload Path", + "LabelEnableCameraUploadForHelp": "Uploads will occur automatically in the background when signed into Emby.", + "ErrorMessageStartHourGreaterThanEnd": "End time must be greater than the start time.", + "ButtonLibraryAccess": "Library access", + "ButtonParentalControl": "Parental control", + "HeaderInvitationSent": "Invitation Sent", + "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", + "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", + "ButtonSelectServer": "Select Server", + "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", + "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", + "DefaultErrorMessage": "There was an error processing the request. Please try again later.", + "ButtonAccept": "Accept", + "ButtonReject": "Reject", + "HeaderForgotPassword": "Forgot Password", + "MessageContactAdminToResetPassword": "Please contact your system administrator to reset your password.", + "MessageForgotPasswordInNetworkRequired": "Please try again within your home network to initiate the password reset process.", + "MessageForgotPasswordFileCreated": "The following file has been created on your server and contains instructions on how to proceed:", + "MessageForgotPasswordFileExpiration": "The reset pin will expire at {0}.", + "MessageInvalidForgotPasswordPin": "An invalid or expired pin was entered. Please try again.", + "MessagePasswordResetForUsers": "Passwords have been removed for the following users:", + "HeaderInviteGuest": "Invite Guest", + "ButtonLinkMyEmbyAccount": "Link my account now", + "MessageConnectAccountRequiredToInviteGuest": "In order to invite guests you need to first link your Emby account to this server.", + "ButtonSync": "Sync", + "SyncMedia": "Sync Media", + "HeaderCancelSyncJob": "Cancel Sync", + "CancelSyncJobConfirmation": "Cancelling the sync job will remove synced media from the device during the next sync process. Are you sure you wish to proceed?", + "TabSync": "Sync", + "MessagePleaseSelectDeviceToSyncTo": "Please select a device to sync to.", + "MessageSyncJobCreated": "Sync job created.", + "LabelSyncTo": "Sync to:", + "LabelSyncJobName": "Sync job name:", + "LabelQuality": "Quality:", + "HeaderSettings": "Settings", + "OptionAutomaticallySyncNewContent": "Automatically sync new content", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", + "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", + "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", + "LabelItemLimit": "Item limit:", + "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be synced.", + "MessageBookPluginRequired": "Requires installation of the Bookshelf plugin", + "MessageGamePluginRequired": "Requires installation of the GameBrowser plugin", + "MessageUnsetContentHelp": "Content will be displayed as plain folders. For best results use the metadata manager to set the content types of sub-folders.", + "SyncJobItemStatusQueued": "Queued", + "SyncJobItemStatusConverting": "Converting", + "SyncJobItemStatusTransferring": "Transferring", + "SyncJobItemStatusSynced": "Synced", + "SyncJobItemStatusFailed": "Failed", + "SyncJobItemStatusRemovedFromDevice": "Removed from device", + "SyncJobItemStatusCancelled": "Cancelled", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):", + "EmbyIntroDownloadMessage": "To download and install Emby Server visit {0}.", + "ButtonNewServer": "New Server", + "ButtonSignInWithConnect": "Sign in with Emby Connect", + "HeaderNewServer": "New Server", + "MyDevice": "My Device", + "ButtonRemote": "Remote", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Advanced", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" +}
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/es-MX.json index a39083786..d4ce5c824 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/es-MX.json @@ -38,15 +38,18 @@ "HeaderSupportTheTeam": "Apoye al equipo de Emby", "TextEnjoyBonusFeatures": "Disfruta de Caracter\u00edsticas Premium", "TitleLiveTV": "TV en Vivo", + "ButtonCancelSyncJob": "Cancelar trabajo de Sinc.", "TitleSync": "Sinc", + "HeaderSelectDate": "Seleccionar fecha", "ButtonDonate": "Donar", + "LabelRecurringDonationCanBeCancelledHelp": "Las donaciones recurrentes pueden ser canceladas en cualquier momento desde su cuenta PayPal.", "HeaderMyMedia": "Mis Medios", "TitleNotifications": "Notificaciones", "ErrorLaunchingChromecast": "Hubo un error iniciando chromecast. Por favor aseg\u00farate de que tu dispositivo este conectado a tu red inalambrica", "MessageErrorLoadingSupporterInfo": "Se present\u00f3 un error al cargar la informaci\u00f3n del aficionado. Por favor int\u00e9ntelo m\u00e1s tarde.", "MessageLinkYourSupporterKey": "Enlaza tu clave de aficionado con hasta {0} miembros de Emby Connect para disfrutar de acceso gratuito a la siguientes aplicaciones:", "HeaderConfirmRemoveUser": "Eliminar Usuario", - "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Select the device to control by clicking the cast icon in the upper right corner. Swipe down anywhere on this screen to go back to where you came from.", + "MessageSwipeDownOnRemoteControl": "Bienvenidos al control remoto. Seleccione el equipo para controlar haciendo clic en el icono en la esquina de arriba de la parte derecha. Deslizar hacia abajo en cualquier parte de la pantalla para regresar a donde usted estaba anteriormente.", "MessageConfirmRemoveConnectSupporter": "\u00bfEst\u00e1 seguro de querer eliminar los beneficios adicionales de aficionado de este usuario?", "ValueTimeLimitSingleHour": "L\u00edmite de tiempo: 1 hora", "ValueTimeLimitMultiHour": "L\u00edmite de tiempo: {0} horas", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "La membres\u00eda de aficionado proporciona beneficios adicionales tales como acceso a sincronizaci\u00f3n, complementos premium, contenido de canales de Internet y m\u00e1s. {0}Conocer m\u00e1s{1}.", "LabelSyncNoTargetsHelp": "Parece que actualmente no cuentas con ninguna app que soporte sinc.", "HeaderWelcomeToProjectServerDashboard": "Bienvenido al Panel de Control de Emby", - "HeaderWelcomeToProjectWebClient": "Bienvenido al Cliente Web de Emby", + "HeaderWelcomeToProjectWebClient": "Bienvenido a Emby", "ButtonTakeTheTour": "Haga el recorrido", "HeaderWelcomeBack": "\u00a1Bienvenido nuevamente!", "TitlePlugins": "Complementos", "ButtonTakeTheTourToSeeWhatsNew": "Inice el tour para ver que hay de nuevo", "MessageNoSyncJobsFound": "No se han encontrado trabajos de sincronizaci\u00f3n. Cree trabajos de sincronizaci\u00f3n empleando los botones de Sinc que se encuentran en la intergface web.", + "ButtonPlayTrailer": "Reproducir Avance", "HeaderLibraryAccess": "Acceso a la Biblioteca", "HeaderChannelAccess": "Acceso a los Canales", "HeaderDeviceAccess": "Acceso a Dispositivos", @@ -143,7 +147,6 @@ "ButtonPlay": "Reproducir", "ButtonEdit": "Editar", "ButtonQueue": "A cola", - "ButtonPlayTrailer": "Reproducir trailer", "ButtonPlaylist": "Lista de Reprod.", "ButtonPreviousTrack": "Pista Anterior", "LabelEnabled": "Habilitado", @@ -207,7 +210,7 @@ "HeaderResume": "Continuar", "HeaderMyViews": "Mis Vistas", "HeaderLibraryFolders": "Carpetas de Medios", - "HeaderLatestMedia": "Medios Recientes", + "HeaderLatestMedia": "Agregadas Recientemente", "ButtonMoreItems": "M\u00e1s...", "ButtonMore": "M\u00e1s", "HeaderFavoriteMovies": "Pel\u00edculas Preferidas", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Trasncodificado", "LabelPlayMethodDirectStream": "Transmisi\u00f3n Directa", "LabelPlayMethodDirectPlay": "Reproducci\u00f3n Directa", + "LabelEpisodeNumber": "N\u00famero de episodio:", "LabelAudioCodec": "Audio: {0}", "LabelVideoCodec": "Video: {0}", "LabelLocalAccessUrl": "Direcci\u00f3n local: {0}", @@ -307,12 +311,13 @@ "HeaderArtist": "Artista", "LabelAddedOnDate": "Agregado {0}", "ButtonStart": "Iniciar", + "LabelSeasonNumber": "N\u00famero de temporada:", "HeaderChannels": "Canales", "HeaderMediaFolders": "Carpetas de Medios", "HeaderBlockItemsWithNoRating": "Bloquear contenido sin informaci\u00f3n de clasificaci\u00f3n:", "OptionBlockOthers": "Otros", "OptionBlockTvShows": "Programas de TV", - "OptionBlockTrailers": "Avances", + "OptionBlockTrailers": "Tr\u00e1ilers", "OptionBlockMusic": "M\u00fasica", "OptionBlockMovies": "Pel\u00edculas", "OptionBlockBooks": "Libros", @@ -335,6 +340,7 @@ "ButtonNextPage": "P\u00e1gina Siguiente", "ButtonPreviousPage": "P\u00e1gina Anterior", "ButtonMoveLeft": "Mover a la izquierda", + "OptionReleaseDate": "Fecha de estreno", "ButtonMoveRight": "Mover a la derecha", "ButtonBrowseOnlineImages": "Buscar im\u00e1genes en l\u00ednea", "HeaderDeleteItem": "Eliminar \u00cdtem", @@ -352,7 +358,7 @@ "HeaderFields": "Campos", "HeaderFieldsHelp": "Deslice un campo hacia \"apagado\" para bloquearlo y evitar que sus datos sean modificados.", "HeaderLiveTV": "TV en Vivo", - "MissingLocalTrailer": "Falta avance local.", + "MissingLocalTrailer": "Falta tr\u00e1iler local.", "MissingPrimaryImage": "Falta im\u00e1gen principal.", "MissingBackdropImage": "Falta im\u00e1gen de fondo.", "MissingLogoImage": "Falta im\u00e1gen de logo.", @@ -426,7 +432,7 @@ "ValueOriginalAirDate": "Fecha de transmisi\u00f3n original: {0}", "ButtonRemoveFromPlaylist": "Eliminar de la lista de reproducci\u00f3n", "HeaderSpecials": "Especiales", - "HeaderTrailers": "Avances", + "HeaderTrailers": "Tr\u00e1ilers", "HeaderAudio": "Audio", "HeaderResolution": "Resoluci\u00f3n", "HeaderVideo": "Video", @@ -477,11 +483,8 @@ "PersonTypePerson": "Persona", "LabelTitleDisplayOrder": "Ordenamiento de despliegue de t\u00edtulos:", "OptionSortName": "Nombre para ordenar", - "OptionReleaseDate": "Fecha de estreno", - "LabelSeasonNumber": "N\u00famero de temporada:", "LabelDiscNumber": "N\u00famero de disco", "LabelParentNumber": "N\u00famero antecesor", - "LabelEpisodeNumber": "N\u00famero de episodio:", "LabelTrackNumber": "N\u00famero de Pista:", "LabelNumber": "N\u00famero:", "LabelReleaseDate": "Fecha de estreno:", @@ -518,7 +521,7 @@ "TabMovies": "Pel\u00edculas", "TabSeries": "Series", "TabEpisodes": "Episodios", - "TabTrailers": "Avances", + "TabTrailers": "Tr\u00e1ilers", "TabGames": "Juegos", "TabAlbums": "\u00c1lbumes", "TabSongs": "Canciones", @@ -564,8 +567,8 @@ "LabelResumePoint": "Punto de reinicio:", "ValueOneMovie": "1 pel\u00edcula", "ValueMovieCount": "{0} pel\u00edculas", - "ValueOneTrailer": "1 avance", - "ValueTrailerCount": "{0} avances", + "ValueOneTrailer": "1 tr\u00e1iler", + "ValueTrailerCount": "{0} tr\u00e1ilers", "ValueOneSeries": "1 serie", "ValueSeriesCount": "{0} series", "ValueOneEpisode": "1 episodio", @@ -670,7 +673,7 @@ "LabelShortRatingDescription": "Res\u00famen corto de calificaci\u00f3n:", "OptionIRecommendThisItem": "Yo recomiendo este \u00edtem", "WebClientTourContent": "Vea sus medios recientemente a\u00f1adidos, siguientes ep\u00ecsodios y m\u00e1s. Los c\u00edrculos verdes indican cuantos medios sin reproducir tiene.", - "WebClientTourMovies": "Reproduzca pel\u00edculas, avances y m\u00e1s desde cualquier dispositivo con un navegador web.", + "WebClientTourMovies": "Reproduzca pel\u00edculas, tr\u00e1ilers y m\u00e1s desde cualquier dispositivo con un navegador web.", "WebClientTourMouseOver": "Mantenga el rat\u00f3n sobre cualquier p\u00f3ster para un acceso r\u00e1pido a informaci\u00f3n importante.", "WebClientTourTapHold": "Mantenga presionado o haga clic derecho en cualquier p\u00f3ster para mostrar un men\u00fa contextual", "WebClientTourMetadataManager": "Haga clic en editar para abrir el administrador de metadatos", @@ -687,7 +690,7 @@ "DashboardTourDashboard": "El panel de control del servidor le permite monitorear su servidor y sus usuarios. Siempre sabr\u00e1 quien est\u00e1 haciendo qu\u00e9 y donde se encuentran.", "DashboardTourHelp": "La ayuda dentro de la app proporciona botones simples para abrir p\u00e1ginas de la wiki relacionadas con el contenido en pantalla.", "DashboardTourUsers": "Cree cuentas f\u00e1cilmente para sus amigos y familia, cada una con sus propios permisos, accesos a la biblioteca, controles parentales y m\u00e1s.", - "DashboardTourCinemaMode": "El modo cine trae la experiencia del cine directo a su sala de TV con la capacidad de reproducir avances e intros personalizados antes de la presentaci\u00f3n estelar.", + "DashboardTourCinemaMode": "El modo cine trae la experiencia del cine directo a su sala de TV con la capacidad de reproducir tr\u00e1ilers e intros personalizados antes de la presentaci\u00f3n estelar.", "DashboardTourChapters": "Active la generaci\u00f3n de im\u00e1genes de cap\u00edtulos de sus videos para una presentaci\u00f3n m\u00e1s agradable al desplegar.", "DashboardTourSubtitles": "Descargue autom\u00e1ticamente subt\u00edtulos para sus videos en cualquier idioma.", "DashboardTourPlugins": "Instale complementos como canales de video de Internet, TV en vivo, buscadores de metadatos y m\u00e1s.", @@ -712,7 +715,7 @@ "MessageInvitationSentToNewUser": "Un correo electr\u00f3nico se ha enviado a {0} invit\u00e1ndolos a registrarse en Emby.", "HeaderConnectionFailure": "Falla de Conexi\u00f3n", "MessageUnableToConnectToServer": "No es posible conectarse al servidor seleccionado en este momento. Por favor aseg\u00farese de que se encuentra en ejecuci\u00f3n e int\u00e9ntelo nuevamente.", - "ButtonSelectServer": "Seleccionar servidor", + "ButtonSelectServer": "Seleccionar Servidor", "MessagePluginConfigurationRequiresLocalAccess": "Para configurar este complemento por favor inicie sesi\u00f3n en su servidor local directamente.", "MessageLoggedOutParentalControl": "El acceso se encuentra restringido en este momento. Por favor int\u00e9ntelo de nuevo mas tarde.", "DefaultErrorMessage": "Ha ocurrido un error al procesar la solicitud. Por favor int\u00e9ntelo de nuevo mas tarde.", @@ -728,19 +731,19 @@ "HeaderInviteGuest": "Agregar un Invitado", "ButtonLinkMyEmbyAccount": "Enlazar mi cuenta ahora", "MessageConnectAccountRequiredToInviteGuest": "Para poder enviar invitaciones necesita primero enlazar su cuenta Emby con este servidor.", - "ButtonSync": "SInc", + "ButtonSync": "Sinc", "SyncMedia": "Sincronizar Medios", "HeaderCancelSyncJob": "Cancelar Sinc.", "CancelSyncJobConfirmation": "Cancelando el trabajo de sincronizaci\u00f3n eliminara los medios sincronizados del dispositivo durante el pr\u00f3ximo proceso de sincronizaci\u00f3n. \u00bfEsta seguro de que desea continuar?", "TabSync": "Sinc", "MessagePleaseSelectDeviceToSyncTo": "Por favor seleccione un dispositivo con el que desea sincronizar.", - "MessageSyncJobCreated": "Trabajo de sinc. creado.", + "MessageSyncJobCreated": "Trabajo de sincronizaci\u00f3n creado.", "LabelSyncTo": "Sincronizar con:", "LabelSyncJobName": "Nombre del trabajo de sinc:", "LabelQuality": "Calidad:", "HeaderSettings": "Configuraci\u00f3n", "OptionAutomaticallySyncNewContent": "Sincronizar autom\u00e1ticamente nuevos contenidos", - "OptionAutomaticallySyncNewContentHelp": "Los contenidos nuevos agregados a esta categor\u00eda ser\u00e1n sincronizados autom\u00e1ticamente con el dispositivo.", + "OptionAutomaticallySyncNewContentHelp": "Los contenidos nuevos agregados ser\u00e1n sincronizados autom\u00e1ticamente con el dispositivo.", "OptionSyncUnwatchedVideosOnly": "Sincronizar \u00fanicamente videos no vistos", "OptionSyncUnwatchedVideosOnlyHelp": "Solamente los videos a\u00fan no vistos ser\u00e1n sincronizados, se eliminar\u00e1n los videos del dispositivo conforme \u00e9stos sean vistos.", "LabelItemLimit": "L\u00edmite de \u00cdtems:", @@ -757,10 +760,50 @@ "SyncJobItemStatusCancelled": "Cancelado", "LabelProfile": "Perf\u00edl:", "LabelBitrateMbps": "Tasa de bits (Mbps):", - "EmbyIntroDownloadMessage": "To download and install Emby Server visit {0}.", - "ButtonNewServer": "New Server", - "ButtonSignInWithConnect": "Sign in with Emby Connect", - "HeaderNewServer": "New Server", - "MyDevice": "My Device", - "ButtonRemote": "Remote" + "EmbyIntroDownloadMessage": "Para descargar e instalar el Servidor Emby visite {0}.", + "ButtonNewServer": "Nuevo Servidor", + "ButtonSignInWithConnect": "Inicie con su cuenta de Emby Connect", + "HeaderNewServer": "Nuevo Servidor", + "MyDevice": "Mi Dispositivo", + "ButtonRemote": "Remoto", + "TabInfo": "Info", + "TabCast": "Reparto", + "TabScenes": "Escenas", + "HeaderUnlockApp": "Desbloquear App", + "MessageUnlockAppWithPurchase": "Desbloquear todas las caracter\u00edsticas de la app con una peque\u00f1a compra \u00fanica.", + "MessageUnlockAppWithPurchaseOrSupporter": "Desbloquear todas las caracter\u00edsticas de la app con un peque\u00f1a compra \u00fanica, o iniciando sesi\u00f3n con una cuenta activa de Miembro Aficionado Emby.", + "MessageUnlockAppWithSupporter": "Desbloquear todas las caracter\u00edsticas de la app iniciando sesi\u00f3n con una cuenta activa de Miembro Aficionado Emby.", + "MessageToValidateSupporter": "Si tiene una cuenta activa de Miembro Aficionado Emby, solo inicie sesi\u00f3n en la app usando la conexi\u00f3n Wifi dentro de su red de hogar.", + "MessagePaymentServicesUnavailable": "Los servicios de pago no se encuentran disponibles actualmente. Por favor intente de nuevo mas tarde.", + "ButtonUnlockWithSupporter": "Iniciar sesi\u00f3n con una Membres\u00eda de Aficionado Emby", + "MessagePleaseSignInLocalNetwork": "Antes de continuar, por favor aseg\u00farese de que esta conectado a su red local usando una conexi\u00f3n Wifi o LAN.", + "ButtonUnlockWithPurchase": "Desbloquear con una compra", + "ButtonUnlockPrice": "Desbloquear {0}", + "MessageLiveTvGuideRequiresUnlock": "La Guia de TV en Vivo actualmente esta limitada a {0} canales. De clic en el bot\u00f3n Desbloquear para saber como desbloquear la experiencia completa.", + "OptionEnableFullscreen": "Habilitar Pantalla Completa", + "ButtonServer": "Servidor", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Biblioteca", + "HeaderMedia": "Medios", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Avanzado", + "HeaderGroupVersions": "Agrupar Versiones", + "HeaderSaySomethingLike": "Decir Algo Como...", + "ButtonTryAgain": "Intentar de Nuevo", + "HeaderYouSaid": "Ha Dicho...", + "MessageWeDidntRecognizeCommand": "Lo sentimos, no reconocimos ese comando.", + "MessageIfYouBlockedVoice": "Si ha negado el acceso a la voz a la aplicaci\u00f3n necesitara reconfigurar antes de intentarlo de nuevo.", + "MessageNoItemsFound": "No se encontraron \u00edtems.", + "ButtonManageServer": "Administrar Servidor", + "ButtonPreferences": "Preferencias", + "ButtonViewArtist": "Ver artista", + "ButtonViewAlbum": "Ver album", + "ErrorMessagePasswordNotMatchConfirm": "La Contrase\u00f1a y la confirmaci\u00f3n de la contrase\u00f1a deben coincidir.", + "ErrorMessageUsernameInUse": "El Nombre de Usuario ya esta en uso. Por favor seleccione un nuevo nombre e intente de nuevo.", + "ErrorMessageEmailInUse": "La direcci\u00f3n de correo electr\u00f3nico ya esta en uso. Por favor ingrese un correo electr\u00f3nico nuevo e intente de nuevo, o si olvido la contrase\u00f1a use la opci\u00f3n \"Olvide mi contrase\u00f1a\".", + "MessageThankYouForConnectSignUp": "Gracias por registrarse a Emby Connect. Un correo electr\u00f3nico sera enviado a su direcci\u00f3n con instrucciones de como confirmar su nueva cuenta. Por favor confirme la cuente y regrese aqu\u00ed para iniciar sesi\u00f3n.", + "HeaderShare": "Compartir", + "ButtonShareHelp": "Compartir paginas web que contengan informaci\u00f3n sobre los medios con redes sociales. Los archivos de los medios nunca son compartidos p\u00fablicamente.", + "ButtonShare": "Compartir", + "HeaderConfirm": "Confirmar" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/es-VE.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/es-VE.json new file mode 100644 index 000000000..f0a9ac9de --- /dev/null +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/es-VE.json @@ -0,0 +1,809 @@ +{ + "SettingsSaved": "Settings saved.", + "AddUser": "Add User", + "Users": "Users", + "Delete": "Delete", + "Administrator": "Administrator", + "Password": "Password", + "DeleteImage": "Delete Image", + "MessageThankYouForSupporting": "Thank you for supporting Emby.", + "MessagePleaseSupportProject": "Please support Emby.", + "DeleteImageConfirmation": "Are you sure you wish to delete this image?", + "FileReadCancelled": "The file read has been canceled.", + "FileNotFound": "File not found.", + "FileReadError": "An error occurred while reading the file.", + "DeleteUser": "Delete User", + "DeleteUserConfirmation": "Are you sure you wish to delete this user?", + "PasswordResetHeader": "Reset Password", + "PasswordResetComplete": "The password has been reset.", + "PinCodeResetComplete": "The pin code has been reset.", + "PasswordResetConfirmation": "Are you sure you wish to reset the password?", + "PinCodeResetConfirmation": "Are you sure you wish to reset the pin code?", + "HeaderPinCodeReset": "Reset Pin Code", + "PasswordSaved": "Password saved.", + "PasswordMatchError": "Password and password confirmation must match.", + "OptionRelease": "Official Release", + "OptionBeta": "Beta", + "OptionDev": "Dev (Unstable)", + "UninstallPluginHeader": "Uninstall Plugin", + "UninstallPluginConfirmation": "Are you sure you wish to uninstall {0}?", + "NoPluginConfigurationMessage": "This plugin has nothing to configure.", + "NoPluginsInstalledMessage": "You have no plugins installed.", + "BrowsePluginCatalogMessage": "Browse our plugin catalog to view available plugins.", + "MessageKeyEmailedTo": "Key emailed to {0}.", + "MessageKeysLinked": "Keys linked.", + "HeaderConfirmation": "Confirmation", + "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", + "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "Enjoy Bonus Features", + "TitleLiveTV": "Live TV", + "ButtonCancelSyncJob": "Cancel sync job", + "TitleSync": "Sync", + "HeaderSelectDate": "Select Date", + "ButtonDonate": "Donate", + "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Notifications", + "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Emby Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Select the device to control by clicking the cast icon in the upper right corner. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", + "ValueTimeLimitSingleHour": "Time limit: 1 hour", + "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "Users", + "PluginCategoryGeneral": "General", + "PluginCategoryContentProvider": "Content Providers", + "PluginCategoryScreenSaver": "Screen Savers", + "PluginCategoryTheme": "Themes", + "PluginCategorySync": "Sync", + "PluginCategorySocialIntegration": "Social Networks", + "PluginCategoryNotifications": "Notifications", + "PluginCategoryMetadata": "Metadata", + "PluginCategoryLiveTV": "Live TV", + "PluginCategoryChannel": "Channels", + "HeaderSearch": "Search", + "ValueDateCreated": "Date created: {0}", + "LabelArtist": "Artist", + "LabelMovie": "Movie", + "LabelMusicVideo": "Music Video", + "LabelEpisode": "Episode", + "LabelSeries": "Series", + "LabelStopping": "Stopping", + "LabelCancelled": "(cancelled)", + "LabelFailed": "(failed)", + "ButtonHelp": "Help", + "ButtonSave": "Save", + "ButtonDownload": "Download", + "SyncJobStatusQueued": "Queued", + "SyncJobStatusConverting": "Converting", + "SyncJobStatusFailed": "Failed", + "SyncJobStatusCancelled": "Cancelled", + "SyncJobStatusCompleted": "Synced", + "SyncJobStatusReadyToTransfer": "Ready to Transfer", + "SyncJobStatusTransferring": "Transferring", + "SyncJobStatusCompletedWithError": "Synced with errors", + "SyncJobItemStatusReadyToTransfer": "Ready to Transfer", + "LabelCollection": "Collection", + "HeaderAddToCollection": "Add to Collection", + "NewCollectionNameExample": "Example: Star Wars Collection", + "OptionSearchForInternetMetadata": "Search the internet for artwork and metadata", + "LabelSelectCollection": "Select collection:", + "HeaderDevices": "Devices", + "ButtonScheduledTasks": "Scheduled tasks", + "MessageItemsAdded": "Items added", + "ButtonAddToCollection": "Add to collection", + "HeaderSelectCertificatePath": "Select Certificate Path", + "ConfirmMessageScheduledTaskButton": "This operation normally runs automatically as a scheduled task. It can also be run manually here. To configure the scheduled task, see:", + "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", + "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", + "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", + "ButtonTakeTheTour": "Take the tour", + "HeaderWelcomeBack": "Welcome back!", + "TitlePlugins": "Plugins", + "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", + "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "ButtonPlayTrailer": "Play trailer", + "HeaderLibraryAccess": "Library Access", + "HeaderChannelAccess": "Channel Access", + "HeaderDeviceAccess": "Device Access", + "HeaderSelectDevices": "Select Devices", + "ButtonCancelItem": "Cancel item", + "ButtonQueueForRetry": "Queue for retry", + "ButtonReenable": "Re-enable", + "ButtonLearnMore": "Learn more", + "SyncJobItemStatusSyncedMarkForRemoval": "Marked for removal", + "LabelAbortedByServerShutdown": "(Aborted by server shutdown)", + "LabelScheduledTaskLastRan": "Last ran {0}, taking {1}.", + "HeaderDeleteTaskTrigger": "Delete Task Trigger", + "HeaderTaskTriggers": "Task Triggers", + "MessageDeleteTaskTrigger": "Are you sure you wish to delete this task trigger?", + "MessageNoPluginsInstalled": "You have no plugins installed.", + "LabelVersionInstalled": "{0} installed", + "LabelNumberReviews": "{0} Reviews", + "LabelFree": "Free", + "HeaderPlaybackError": "Playback Error", + "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", + "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", + "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", + "HeaderSelectAudio": "Select Audio", + "HeaderSelectSubtitles": "Select Subtitles", + "ButtonMarkForRemoval": "Remove from device", + "ButtonUnmarkForRemoval": "Cancel removal from device", + "LabelDefaultStream": "(Default)", + "LabelForcedStream": "(Forced)", + "LabelDefaultForcedStream": "(Default\/Forced)", + "LabelUnknownLanguage": "Unknown language", + "MessageConfirmSyncJobItemCancellation": "Are you sure you wish to cancel this item?", + "ButtonMute": "Mute", + "ButtonUnmute": "Unmute", + "ButtonStop": "Stop", + "ButtonNextTrack": "Next Track", + "ButtonPause": "Pause", + "ButtonPlay": "Play", + "ButtonEdit": "Edit", + "ButtonQueue": "Queue", + "ButtonPlaylist": "Playlist", + "ButtonPreviousTrack": "Previous Track", + "LabelEnabled": "Enabled", + "LabelDisabled": "Disabled", + "ButtonMoreInformation": "More Information", + "LabelNoUnreadNotifications": "No unread notifications.", + "ButtonViewNotifications": "View notifications", + "ButtonMarkTheseRead": "Mark these read", + "ButtonClose": "Close", + "LabelAllPlaysSentToPlayer": "All plays will be sent to the selected player.", + "MessageInvalidUser": "Invalid username or password. Please try again.", + "HeaderLoginFailure": "Login Failure", + "HeaderAllRecordings": "All Recordings", + "RecommendationBecauseYouLike": "Because you like {0}", + "RecommendationBecauseYouWatched": "Because you watched {0}", + "RecommendationDirectedBy": "Directed by {0}", + "RecommendationStarring": "Starring {0}", + "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", + "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", + "MessageRecordingCancelled": "Recording cancelled.", + "HeaderConfirmSeriesCancellation": "Confirm Series Cancellation", + "MessageConfirmSeriesCancellation": "Are you sure you wish to cancel this series?", + "MessageSeriesCancelled": "Series cancelled.", + "HeaderConfirmRecordingDeletion": "Confirm Recording Deletion", + "MessageConfirmRecordingDeletion": "Are you sure you wish to delete this recording?", + "MessageRecordingDeleted": "Recording deleted.", + "ButonCancelRecording": "Cancel Recording", + "MessageRecordingSaved": "Recording saved.", + "OptionSunday": "Sunday", + "OptionMonday": "Monday", + "OptionTuesday": "Tuesday", + "OptionWednesday": "Wednesday", + "OptionThursday": "Thursday", + "OptionFriday": "Friday", + "OptionSaturday": "Saturday", + "OptionEveryday": "Every day", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", + "HeaderConfirmDeletion": "Confirm Deletion", + "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", + "LiveTvUpdateAvailable": "(Update available)", + "LabelVersionUpToDate": "Up to date!", + "ButtonResetTuner": "Reset tuner", + "HeaderResetTuner": "Reset Tuner", + "MessageConfirmResetTuner": "Are you sure you wish to reset this tuner? Any active players or recordings will be abruptly stopped.", + "ButtonCancelSeries": "Cancel Series", + "HeaderSeriesRecordings": "Series Recordings", + "LabelAnytime": "Any time", + "StatusRecording": "Recording", + "StatusWatching": "Watching", + "StatusRecordingProgram": "Recording {0}", + "StatusWatchingProgram": "Watching {0}", + "HeaderSplitMedia": "Split Media Apart", + "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", + "HeaderError": "Error", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", + "MessagePleaseSelectOneItem": "Please select at least one item.", + "MessagePleaseSelectTwoItems": "Please select at least two items.", + "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", + "MessageConfirmItemGrouping": "Emby apps will automatically choose the optimal version to play based on device and network performance. Are you sure you wish to continue?", + "HeaderResume": "Resume", + "HeaderMyViews": "My Views", + "HeaderLibraryFolders": "Media Folders", + "HeaderLatestMedia": "Latest Media", + "ButtonMoreItems": "More...", + "ButtonMore": "More", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteGames": "Favorite Games", + "HeaderRatingsDownloads": "Rating \/ Downloads", + "HeaderConfirmProfileDeletion": "Confirm Profile Deletion", + "MessageConfirmProfileDeletion": "Are you sure you wish to delete this profile?", + "HeaderSelectServerCachePath": "Select Server Cache Path", + "HeaderSelectTranscodingPath": "Select Transcoding Temporary Path", + "HeaderSelectImagesByNamePath": "Select Images By Name Path", + "HeaderSelectMetadataPath": "Select Metadata Path", + "HeaderSelectServerCachePathHelp": "Browse or enter the path to use for server cache files. The folder must be writeable.", + "HeaderSelectTranscodingPathHelp": "Browse or enter the path to use for transcoding temporary files. The folder must be writeable.", + "HeaderSelectImagesByNamePathHelp": "Browse or enter the path to your items by name folder. The folder must be writeable.", + "HeaderSelectMetadataPathHelp": "Browse or enter the path you'd like to store metadata within. The folder must be writeable.", + "HeaderSelectChannelDownloadPath": "Select Channel Download Path", + "HeaderSelectChannelDownloadPathHelp": "Browse or enter the path to use for storing channel cache files. The folder must be writeable.", + "OptionNewCollection": "New...", + "ButtonAdd": "Add", + "ButtonRemove": "Remove", + "LabelChapterDownloaders": "Chapter downloaders:", + "LabelChapterDownloadersHelp": "Enable and rank your preferred chapter downloaders in order of priority. Lower priority downloaders will only be used to fill in missing information.", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderLatestChannelMedia": "Latest Channel Items", + "ButtonOrganizeFile": "Organize File", + "ButtonDeleteFile": "Delete File", + "HeaderOrganizeFile": "Organize File", + "HeaderDeleteFile": "Delete File", + "StatusSkipped": "Skipped", + "StatusFailed": "Failed", + "StatusSuccess": "Success", + "MessageFileWillBeDeleted": "The following file will be deleted:", + "MessageSureYouWishToProceed": "Are you sure you wish to proceed?", + "MessageDuplicatesWillBeDeleted": "In addition the following dupliates will be deleted:", + "MessageFollowingFileWillBeMovedFrom": "The following file will be moved from:", + "MessageDestinationTo": "to:", + "HeaderSelectWatchFolder": "Select Watch Folder", + "HeaderSelectWatchFolderHelp": "Browse or enter the path to your watch folder. The folder must be writeable.", + "OrganizePatternResult": "Result: {0}", + "HeaderRestart": "Restart", + "HeaderShutdown": "Shutdown", + "MessageConfirmRestart": "Are you sure you wish to restart Emby Server?", + "MessageConfirmShutdown": "Are you sure you wish to shutdown Emby Server?", + "ButtonUpdateNow": "Update Now", + "ValueItemCount": "{0} item", + "ValueItemCountPlural": "{0} items", + "NewVersionOfSomethingAvailable": "A new version of {0} is available!", + "VersionXIsAvailableForDownload": "Version {0} is now available for download.", + "LabelVersionNumber": "Version {0}", + "LabelPlayMethodTranscoding": "Transcoding", + "LabelPlayMethodDirectStream": "Direct Streaming", + "LabelPlayMethodDirectPlay": "Direct Playing", + "LabelEpisodeNumber": "Episode number:", + "LabelAudioCodec": "Audio: {0}", + "LabelVideoCodec": "Video: {0}", + "LabelLocalAccessUrl": "Local access: {0}", + "LabelRemoteAccessUrl": "Remote access: {0}", + "LabelRunningOnPort": "Running on http port {0}.", + "LabelRunningOnPorts": "Running on http port {0}, and https port {1}.", + "HeaderLatestFromChannel": "Latest from {0}", + "LabelUnknownLanaguage": "Unknown language", + "HeaderCurrentSubtitles": "Current Subtitles", + "MessageDownloadQueued": "The download has been queued.", + "MessageAreYouSureDeleteSubtitles": "Are you sure you wish to delete this subtitle file?", + "ButtonRemoteControl": "Remote Control", + "HeaderLatestTvRecordings": "Latest Recordings", + "ButtonOk": "Ok", + "ButtonCancel": "Cancel", + "ButtonRefresh": "Refresh", + "LabelCurrentPath": "Current path:", + "HeaderSelectMediaPath": "Select Media Path", + "HeaderSelectPath": "Select Path", + "ButtonNetwork": "Network", + "MessageDirectoryPickerInstruction": "Network paths can be entered manually in the event the Network button fails to locate your devices. For example, {0} or {1}.", + "HeaderMenu": "Menu", + "ButtonOpen": "Open", + "ButtonOpenInNewTab": "Open in new tab", + "ButtonShuffle": "Shuffle", + "ButtonInstantMix": "Instant mix", + "ButtonResume": "Resume", + "HeaderScenes": "Scenes", + "HeaderAudioTracks": "Audio Tracks", + "HeaderLibraries": "Libraries", + "HeaderSubtitles": "Subtitles", + "HeaderVideoQuality": "Video Quality", + "MessageErrorPlayingVideo": "There was an error playing the video.", + "MessageEnsureOpenTuner": "Please ensure there is an open tuner availalble.", + "ButtonHome": "Home", + "ButtonDashboard": "Dashboard", + "ButtonReports": "Reports", + "ButtonMetadataManager": "Metadata Manager", + "HeaderTime": "Time", + "HeaderName": "Name", + "HeaderAlbum": "Album", + "HeaderAlbumArtist": "Album Artist", + "HeaderArtist": "Artist", + "LabelAddedOnDate": "Added {0}", + "ButtonStart": "Start", + "LabelSeasonNumber": "Season number:", + "HeaderChannels": "Channels", + "HeaderMediaFolders": "Media Folders", + "HeaderBlockItemsWithNoRating": "Block content with no rating information:", + "OptionBlockOthers": "Others", + "OptionBlockTvShows": "TV Shows", + "OptionBlockTrailers": "Trailers", + "OptionBlockMusic": "Music", + "OptionBlockMovies": "Movies", + "OptionBlockBooks": "Books", + "OptionBlockGames": "Games", + "OptionBlockLiveTvPrograms": "Live TV Programs", + "OptionBlockLiveTvChannels": "Live TV Channels", + "OptionBlockChannelContent": "Internet Channel Content", + "ButtonRevoke": "Revoke", + "MessageConfirmRevokeApiKey": "Are you sure you wish to revoke this api key? The application's connection to Emby Server will be abruptly terminated.", + "HeaderConfirmRevokeApiKey": "Revoke Api Key", + "ValueContainer": "Container: {0}", + "ValueAudioCodec": "Audio Codec: {0}", + "ValueVideoCodec": "Video Codec: {0}", + "ValueCodec": "Codec: {0}", + "ValueConditions": "Conditions: {0}", + "LabelAll": "All", + "HeaderDeleteImage": "Delete Image", + "MessageFileNotFound": "File not found.", + "MessageFileReadError": "An error occurred reading this file.", + "ButtonNextPage": "Next Page", + "ButtonPreviousPage": "Previous Page", + "ButtonMoveLeft": "Move left", + "OptionReleaseDate": "Release date", + "ButtonMoveRight": "Move right", + "ButtonBrowseOnlineImages": "Browse online images", + "HeaderDeleteItem": "Delete Item", + "ConfirmDeleteItem": "Deleting this item will delete it from both the file system and your media library. Are you sure you wish to continue?", + "MessagePleaseEnterNameOrId": "Please enter a name or an external Id.", + "MessageValueNotCorrect": "The value entered is not correct. Please try again.", + "MessageItemSaved": "Item saved.", + "MessagePleaseAcceptTermsOfServiceBeforeContinuing": "Please accept the terms of service before continuing.", + "OptionEnded": "Ended", + "OptionContinuing": "Continuing", + "OptionOff": "Off", + "OptionOn": "On", + "ButtonSettings": "Settings", + "ButtonUninstall": "Uninstall", + "HeaderFields": "Fields", + "HeaderFieldsHelp": "Slide a field to 'off' to lock it and prevent it's data from being changed.", + "HeaderLiveTV": "Live TV", + "MissingLocalTrailer": "Missing local trailer.", + "MissingPrimaryImage": "Missing primary image.", + "MissingBackdropImage": "Missing backdrop image.", + "MissingLogoImage": "Missing logo image.", + "MissingEpisode": "Missing episode.", + "OptionScreenshots": "Screenshots", + "OptionBackdrops": "Backdrops", + "OptionImages": "Images", + "OptionKeywords": "Keywords", + "OptionTags": "Tags", + "OptionStudios": "Studios", + "OptionName": "Name", + "OptionOverview": "Overview", + "OptionGenres": "Genres", + "OptionParentalRating": "Parental Rating", + "OptionPeople": "People", + "OptionRuntime": "Runtime", + "OptionProductionLocations": "Production Locations", + "OptionBirthLocation": "Birth Location", + "LabelAllChannels": "All channels", + "LabelLiveProgram": "LIVE", + "LabelNewProgram": "NEW", + "LabelPremiereProgram": "PREMIERE", + "LabelHDProgram": "HD", + "HeaderChangeFolderType": "Change Content Type", + "HeaderChangeFolderTypeHelp": "To change the type, please remove and rebuild the folder with the new type.", + "HeaderAlert": "Alert", + "MessagePleaseRestart": "Please restart to finish updating.", + "ButtonRestart": "Restart", + "MessagePleaseRefreshPage": "Please refresh this page to receive new updates from the server.", + "ButtonHide": "Hide", + "MessageSettingsSaved": "Settings saved.", + "ButtonSignOut": "Sign Out", + "ButtonMyProfile": "My Profile", + "ButtonMyPreferences": "My Preferences", + "MessageBrowserDoesNotSupportWebSockets": "This browser does not support web sockets. For a better experience, try a newer browser such as Chrome, Firefox, IE10+, Safari (iOS) or Opera.", + "LabelInstallingPackage": "Installing {0}", + "LabelPackageInstallCompleted": "{0} installation completed.", + "LabelPackageInstallFailed": "{0} installation failed.", + "LabelPackageInstallCancelled": "{0} installation cancelled.", + "TabServer": "Server", + "TabUsers": "Users", + "TabLibrary": "Library", + "TabMetadata": "Metadata", + "TabDLNA": "DLNA", + "TabLiveTV": "Live TV", + "TabAutoOrganize": "Auto-Organize", + "TabPlugins": "Plugins", + "TabAdvanced": "Advanced", + "TabHelp": "Help", + "TabScheduledTasks": "Scheduled Tasks", + "ButtonFullscreen": "Fullscreen", + "ButtonAudioTracks": "Audio Tracks", + "ButtonSubtitles": "Subtitles", + "ButtonScenes": "Scenes", + "ButtonQuality": "Quality", + "HeaderNotifications": "Notifications", + "HeaderSelectPlayer": "Select Player:", + "ButtonSelect": "Select", + "ButtonNew": "New", + "MessageInternetExplorerWebm": "For best results with Internet Explorer please install the WebM playback plugin.", + "HeaderVideoError": "Video Error", + "ButtonAddToPlaylist": "Add to playlist", + "HeaderAddToPlaylist": "Add to Playlist", + "LabelName": "Name:", + "ButtonSubmit": "Submit", + "LabelSelectPlaylist": "Playlist:", + "OptionNewPlaylist": "New playlist...", + "MessageAddedToPlaylistSuccess": "Ok", + "ButtonView": "View", + "ButtonViewSeriesRecording": "View series recording", + "ValueOriginalAirDate": "Original air date: {0}", + "ButtonRemoveFromPlaylist": "Remove from playlist", + "HeaderSpecials": "Specials", + "HeaderTrailers": "Trailers", + "HeaderAudio": "Audio", + "HeaderResolution": "Resolution", + "HeaderVideo": "Video", + "HeaderRuntime": "Runtime", + "HeaderCommunityRating": "Community rating", + "HeaderPasswordReset": "Password Reset", + "HeaderParentalRating": "Parental rating", + "HeaderReleaseDate": "Release date", + "HeaderDateAdded": "Date added", + "HeaderSeries": "Series", + "HeaderSeason": "Season", + "HeaderSeasonNumber": "Season number", + "HeaderNetwork": "Network", + "HeaderYear": "Year", + "HeaderGameSystem": "Game system", + "HeaderPlayers": "Players", + "HeaderEmbeddedImage": "Embedded image", + "HeaderTrack": "Track", + "HeaderDisc": "Disc", + "OptionMovies": "Movies", + "OptionCollections": "Collections", + "OptionSeries": "Series", + "OptionSeasons": "Seasons", + "OptionEpisodes": "Episodes", + "OptionGames": "Games", + "OptionGameSystems": "Game systems", + "OptionMusicArtists": "Music artists", + "OptionMusicAlbums": "Music albums", + "OptionMusicVideos": "Music videos", + "OptionSongs": "Songs", + "OptionHomeVideos": "Home videos", + "OptionBooks": "Books", + "OptionAdultVideos": "Adult videos", + "ButtonUp": "Up", + "ButtonDown": "Down", + "LabelMetadataReaders": "Metadata readers:", + "LabelMetadataReadersHelp": "Rank your preferred local metadata sources in order of priority. The first file found will be read.", + "LabelMetadataDownloaders": "Metadata downloaders:", + "LabelMetadataDownloadersHelp": "Enable and rank your preferred metadata downloaders in order of priority. Lower priority downloaders will only be used to fill in missing information.", + "LabelMetadataSavers": "Metadata savers:", + "LabelMetadataSaversHelp": "Choose the file formats to save your metadata to.", + "LabelImageFetchers": "Image fetchers:", + "LabelImageFetchersHelp": "Enable and rank your preferred image fetchers in order of priority.", + "ButtonQueueAllFromHere": "Queue all from here", + "ButtonPlayAllFromHere": "Play all from here", + "LabelDynamicExternalId": "{0} Id:", + "HeaderIdentify": "Identify Item", + "PersonTypePerson": "Person", + "LabelTitleDisplayOrder": "Title display order:", + "OptionSortName": "Sort name", + "LabelDiscNumber": "Disc number", + "LabelParentNumber": "Parent number", + "LabelTrackNumber": "Track number:", + "LabelNumber": "Number:", + "LabelReleaseDate": "Release date:", + "LabelEndDate": "End date:", + "LabelYear": "Year:", + "LabelDateOfBirth": "Date of birth:", + "LabelBirthYear": "Birth year:", + "LabelBirthDate": "Birth date:", + "LabelDeathDate": "Death date:", + "HeaderRemoveMediaLocation": "Remove Media Location", + "MessageConfirmRemoveMediaLocation": "Are you sure you wish to remove this location?", + "HeaderRenameMediaFolder": "Rename Media Folder", + "LabelNewName": "New name:", + "HeaderAddMediaFolder": "Add Media Folder", + "HeaderAddMediaFolderHelp": "Name (Movies, Music, TV, etc):", + "HeaderRemoveMediaFolder": "Remove Media Folder", + "MessageTheFollowingLocationWillBeRemovedFromLibrary": "The following media locations will be removed from your library:", + "MessageAreYouSureYouWishToRemoveMediaFolder": "Are you sure you wish to remove this media folder?", + "ButtonRename": "Rename", + "ButtonChangeType": "Change type", + "HeaderMediaLocations": "Media Locations", + "LabelContentTypeValue": "Content type: {0}", + "LabelPathSubstitutionHelp": "Optional: Path substitution can map server paths to network shares that clients can access for direct playback.", + "FolderTypeUnset": "Unset (mixed content)", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "TabMovies": "Movies", + "TabSeries": "Series", + "TabEpisodes": "Episodes", + "TabTrailers": "Trailers", + "TabGames": "Games", + "TabAlbums": "Albums", + "TabSongs": "Songs", + "TabMusicVideos": "Music Videos", + "BirthPlaceValue": "Birth place: {0}", + "DeathDateValue": "Died: {0}", + "BirthDateValue": "Born: {0}", + "HeaderLatestReviews": "Latest Reviews", + "HeaderPluginInstallation": "Plugin Installation", + "MessageAlreadyInstalled": "This version is already installed.", + "ValueReviewCount": "{0} Reviews", + "MessageYouHaveVersionInstalled": "You currently have version {0} installed.", + "MessageTrialExpired": "The trial period for this feature has expired", + "MessageTrialWillExpireIn": "The trial period for this feature will expire in {0} day(s)", + "MessageInstallPluginFromApp": "This plugin must be installed from with in the app you intend to use it in.", + "ValuePriceUSD": "Price: {0} (USD)", + "MessageFeatureIncludedWithSupporter": "You are registered for this feature, and will be able to continue using it with an active supporter membership.", + "MessageChangeRecurringPlanConfirm": "After completing this transaction you will need to cancel your previous recurring donation from within your PayPal account. Thank you for supporting Emby.", + "MessageSupporterMembershipExpiredOn": "Your supporter membership expired on {0}.", + "MessageYouHaveALifetimeMembership": "You have a lifetime supporter membership. You can provide additional donations on a one-time or recurring basis using the options below. Thank you for supporting Emby.", + "MessageYouHaveAnActiveRecurringMembership": "You have an active {0} membership. You can upgrade your plan using the options below.", + "ButtonDelete": "Delete", + "HeaderEmbyAccountAdded": "Emby Account Added", + "MessageEmbyAccountAdded": "The Emby account has been added to this user.", + "MessagePendingEmbyAccountAdded": "The Emby account has been added to this user. An email will be sent to the owner of the account. The invitation will need to be confirmed by clicking a link within the email.", + "HeaderEmbyAccountRemoved": "Emby Account Removed", + "MessageEmbyAccontRemoved": "The Emby account has been removed from this user.", + "TooltipLinkedToEmbyConnect": "Linked to Emby Connect", + "HeaderUnrated": "Unrated", + "ValueDiscNumber": "Disc {0}", + "HeaderUnknownDate": "Unknown Date", + "HeaderUnknownYear": "Unknown Year", + "ValueMinutes": "{0} min", + "ButtonPlayExternalPlayer": "Play with external player", + "HeaderSelectExternalPlayer": "Select External Player", + "HeaderExternalPlayerPlayback": "External Player Playback", + "ButtonImDone": "I'm Done", + "OptionWatched": "Watched", + "OptionUnwatched": "Unwatched", + "ExternalPlayerPlaystateOptionsHelp": "Specify how you would like to resume playing this video next time.", + "LabelMarkAs": "Mark as:", + "OptionInProgress": "In-Progress", + "LabelResumePoint": "Resume point:", + "ValueOneMovie": "1 movie", + "ValueMovieCount": "{0} movies", + "ValueOneTrailer": "1 trailer", + "ValueTrailerCount": "{0} trailers", + "ValueOneSeries": "1 series", + "ValueSeriesCount": "{0} series", + "ValueOneEpisode": "1 episode", + "ValueEpisodeCount": "{0} episodes", + "ValueOneGame": "1 game", + "ValueGameCount": "{0} games", + "ValueOneAlbum": "1 album", + "ValueAlbumCount": "{0} albums", + "ValueOneSong": "1 song", + "ValueSongCount": "{0} songs", + "ValueOneMusicVideo": "1 music video", + "ValueMusicVideoCount": "{0} music videos", + "HeaderOffline": "Offline", + "HeaderUnaired": "Unaired", + "HeaderMissing": "Missing", + "ButtonWebsite": "Website", + "TooltipFavorite": "Favorite", + "TooltipLike": "Like", + "TooltipDislike": "Dislike", + "TooltipPlayed": "Played", + "ValueSeriesYearToPresent": "{0}-Present", + "ValueAwards": "Awards: {0}", + "ValueBudget": "Budget: {0}", + "ValueRevenue": "Revenue: {0}", + "ValuePremiered": "Premiered {0}", + "ValuePremieres": "Premieres {0}", + "ValueStudio": "Studio: {0}", + "ValueStudios": "Studios: {0}", + "ValueStatus": "Status: {0}", + "ValueSpecialEpisodeName": "Special - {0}", + "LabelLimit": "Limit:", + "ValueLinks": "Links: {0}", + "HeaderPeople": "People", + "HeaderCastAndCrew": "Cast & Crew", + "ValueArtist": "Artist: {0}", + "ValueArtists": "Artists: {0}", + "HeaderTags": "Tags", + "MediaInfoCameraMake": "Camera make", + "MediaInfoCameraModel": "Camera model", + "MediaInfoAltitude": "Altitude", + "MediaInfoAperture": "Aperture", + "MediaInfoExposureTime": "Exposure time", + "MediaInfoFocalLength": "Focal length", + "MediaInfoOrientation": "Orientation", + "MediaInfoIsoSpeedRating": "Iso speed rating", + "MediaInfoLatitude": "Latitude", + "MediaInfoLongitude": "Longitude", + "MediaInfoShutterSpeed": "Shutter speed", + "MediaInfoSoftware": "Software", + "HeaderIfYouLikeCheckTheseOut": "If you like {0}, check these out...", + "HeaderPlotKeywords": "Plot Keywords", + "HeaderMovies": "Movies", + "HeaderAlbums": "Albums", + "HeaderGames": "Games", + "HeaderBooks": "Books", + "HeaderEpisodes": "Episodes", + "HeaderSeasons": "Seasons", + "HeaderTracks": "Tracks", + "HeaderItems": "Items", + "HeaderOtherItems": "Other Items", + "ButtonFullReview": "Full review", + "ValueAsRole": "as {0}", + "ValueGuestStar": "Guest star", + "MediaInfoSize": "Size", + "MediaInfoPath": "Path", + "MediaInfoFormat": "Format", + "MediaInfoContainer": "Container", + "MediaInfoDefault": "Default", + "MediaInfoForced": "Forced", + "MediaInfoExternal": "External", + "MediaInfoTimestamp": "Timestamp", + "MediaInfoPixelFormat": "Pixel format", + "MediaInfoBitDepth": "Bit depth", + "MediaInfoSampleRate": "Sample rate", + "MediaInfoBitrate": "Bitrate", + "MediaInfoChannels": "Channels", + "MediaInfoLayout": "Layout", + "MediaInfoLanguage": "Language", + "MediaInfoCodec": "Codec", + "MediaInfoProfile": "Profile", + "MediaInfoLevel": "Level", + "MediaInfoAspectRatio": "Aspect ratio", + "MediaInfoResolution": "Resolution", + "MediaInfoAnamorphic": "Anamorphic", + "MediaInfoInterlaced": "Interlaced", + "MediaInfoFramerate": "Framerate", + "MediaInfoStreamTypeAudio": "Audio", + "MediaInfoStreamTypeData": "Data", + "MediaInfoStreamTypeVideo": "Video", + "MediaInfoStreamTypeSubtitle": "Subtitle", + "MediaInfoStreamTypeEmbeddedImage": "Embedded Image", + "MediaInfoRefFrames": "Ref frames", + "TabPlayback": "Playback", + "TabNotifications": "Notifications", + "TabExpert": "Expert", + "HeaderSelectCustomIntrosPath": "Select Custom Intros Path", + "HeaderRateAndReview": "Rate and Review", + "HeaderThankYou": "Thank You", + "MessageThankYouForYourReview": "Thank you for your review.", + "LabelYourRating": "Your rating:", + "LabelFullReview": "Full review:", + "LabelShortRatingDescription": "Short rating summary:", + "OptionIRecommendThisItem": "I recommend this item", + "WebClientTourContent": "View your recently added media, next episodes, and more. The green circles indicate how many unplayed items you have.", + "WebClientTourMovies": "Play movies, trailers and more from any device with a web browser", + "WebClientTourMouseOver": "Hold the mouse over any poster for quick access to important information", + "WebClientTourTapHold": "Tap and hold or right click any poster for a context menu", + "WebClientTourMetadataManager": "Click edit to open the metadata manager", + "WebClientTourPlaylists": "Easily create playlists and instant mixes, and play them on any device", + "WebClientTourCollections": "Create movie collections to group box sets together", + "WebClientTourUserPreferences1": "User preferences allow you to customize the way your library is presented in all of your Emby apps", + "WebClientTourUserPreferences2": "Configure your audio and subtitle language settings once, for every Emby app", + "WebClientTourUserPreferences3": "Design the web client home page to your liking", + "WebClientTourUserPreferences4": "Configure backdrops, theme songs and external players", + "WebClientTourMobile1": "The web client works great on smartphones and tablets...", + "WebClientTourMobile2": "and easily controls other devices and Emby apps", + "WebClientTourMySync": "Sync your personal media to your devices for offline viewing.", + "MessageEnjoyYourStay": "Enjoy your stay", + "DashboardTourDashboard": "The server dashboard allows you to monitor your server and your users. You'll always know who is doing what and where they are.", + "DashboardTourHelp": "In-app help provides easy buttons to open wiki pages relating to the on-screen content.", + "DashboardTourUsers": "Easily create user accounts for your friends and family, each with their own permissions, library access, parental controls and more.", + "DashboardTourCinemaMode": "Cinema mode brings the theater experience straight to your living room with the ability to play trailers and custom intros before the main feature.", + "DashboardTourChapters": "Enable chapter image generation for your videos for a more pleasing presentation while viewing.", + "DashboardTourSubtitles": "Automatically download subtitles for your videos in any language.", + "DashboardTourPlugins": "Install plugins such as internet video channels, live tv, metadata scanners, and more.", + "DashboardTourNotifications": "Automatically send notifications of server events to your mobile device, email and more.", + "DashboardTourScheduledTasks": "Easily manage long running operations with scheduled tasks. Decide when they run, and how often.", + "DashboardTourMobile": "The Emby Server dashboard works great on smartphones and tablets. Manage your server from the palm of your hand anytime, anywhere.", + "DashboardTourSync": "Sync your personal media to your devices for offline viewing.", + "MessageRefreshQueued": "Refresh queued", + "TabDevices": "Devices", + "TabExtras": "Extras", + "DeviceLastUsedByUserName": "Last used by {0}", + "HeaderDeleteDevice": "Delete Device", + "DeleteDeviceConfirmation": "Are you sure you wish to delete this device? It will reappear the next time a user signs in with it.", + "LabelEnableCameraUploadFor": "Enable camera upload for:", + "HeaderSelectUploadPath": "Select Upload Path", + "LabelEnableCameraUploadForHelp": "Uploads will occur automatically in the background when signed into Emby.", + "ErrorMessageStartHourGreaterThanEnd": "End time must be greater than the start time.", + "ButtonLibraryAccess": "Library access", + "ButtonParentalControl": "Parental control", + "HeaderInvitationSent": "Invitation Sent", + "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", + "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", + "ButtonSelectServer": "Select Server", + "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", + "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", + "DefaultErrorMessage": "There was an error processing the request. Please try again later.", + "ButtonAccept": "Accept", + "ButtonReject": "Reject", + "HeaderForgotPassword": "Forgot Password", + "MessageContactAdminToResetPassword": "Please contact your system administrator to reset your password.", + "MessageForgotPasswordInNetworkRequired": "Please try again within your home network to initiate the password reset process.", + "MessageForgotPasswordFileCreated": "The following file has been created on your server and contains instructions on how to proceed:", + "MessageForgotPasswordFileExpiration": "The reset pin will expire at {0}.", + "MessageInvalidForgotPasswordPin": "An invalid or expired pin was entered. Please try again.", + "MessagePasswordResetForUsers": "Passwords have been removed for the following users:", + "HeaderInviteGuest": "Invite Guest", + "ButtonLinkMyEmbyAccount": "Link my account now", + "MessageConnectAccountRequiredToInviteGuest": "In order to invite guests you need to first link your Emby account to this server.", + "ButtonSync": "Sync", + "SyncMedia": "Sync Media", + "HeaderCancelSyncJob": "Cancel Sync", + "CancelSyncJobConfirmation": "Cancelling the sync job will remove synced media from the device during the next sync process. Are you sure you wish to proceed?", + "TabSync": "Sync", + "MessagePleaseSelectDeviceToSyncTo": "Please select a device to sync to.", + "MessageSyncJobCreated": "Sync job created.", + "LabelSyncTo": "Sync to:", + "LabelSyncJobName": "Sync job name:", + "LabelQuality": "Quality:", + "HeaderSettings": "Settings", + "OptionAutomaticallySyncNewContent": "Automatically sync new content", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", + "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", + "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", + "LabelItemLimit": "Item limit:", + "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be synced.", + "MessageBookPluginRequired": "Requires installation of the Bookshelf plugin", + "MessageGamePluginRequired": "Requires installation of the GameBrowser plugin", + "MessageUnsetContentHelp": "Content will be displayed as plain folders. For best results use the metadata manager to set the content types of sub-folders.", + "SyncJobItemStatusQueued": "Queued", + "SyncJobItemStatusConverting": "Converting", + "SyncJobItemStatusTransferring": "Transferring", + "SyncJobItemStatusSynced": "Synced", + "SyncJobItemStatusFailed": "Failed", + "SyncJobItemStatusRemovedFromDevice": "Removed from device", + "SyncJobItemStatusCancelled": "Cancelled", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):", + "EmbyIntroDownloadMessage": "To download and install Emby Server visit {0}.", + "ButtonNewServer": "New Server", + "ButtonSignInWithConnect": "Sign in with Emby Connect", + "HeaderNewServer": "New Server", + "MyDevice": "My Device", + "ButtonRemote": "Remote", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Advanced", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" +}
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json index d578b208a..d6402c7c8 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json @@ -16,15 +16,15 @@ "DeleteUserConfirmation": "Are you sure you wish to delete this user?", "PasswordResetHeader": "Reset Password", "PasswordResetComplete": "La contrase\u00f1a se ha restablecido.", - "PinCodeResetComplete": "The pin code has been reset.", + "PinCodeResetComplete": "El c\u00f3digo PIN se ha restablecido.", "PasswordResetConfirmation": "Esta seguro que desea restablecer la contrase\u00f1a?", - "PinCodeResetConfirmation": "Are you sure you wish to reset the pin code?", - "HeaderPinCodeReset": "Reset Pin Code", + "PinCodeResetConfirmation": "\u00bfEst\u00e1 seguro que desea restablecer el c\u00f3digo PIN?", + "HeaderPinCodeReset": "Restablecer C\u00f3digo PIN", "PasswordSaved": "Contrase\u00f1a guardada.", "PasswordMatchError": "La contrase\u00f1a y la confirmaci\u00f3n de la contrase\u00f1a deben de ser iguales.", "OptionRelease": "Release Oficial", "OptionBeta": "Beta", - "OptionDev": "Dev (Unstable)", + "OptionDev": "Desarrollo (inestable)", "UninstallPluginHeader": "Desinstalar Plugin", "UninstallPluginConfirmation": "Esta seguro que desea desinstalar {0}?", "NoPluginConfigurationMessage": "El plugin no requiere configuraci\u00f3n", @@ -35,13 +35,16 @@ "HeaderConfirmation": "Confirmaci\u00f3n", "MessageKeyUpdated": "Gracias. Su clave de seguidor ha sido actualizada.", "MessageKeyRemoved": "Gracias. Su clave de seguidor ha sido eliminada.", - "HeaderSupportTheTeam": "Support the Emby Team", + "HeaderSupportTheTeam": "Apoye al equipo de Emby", "TextEnjoyBonusFeatures": "Disfrute los extras", "TitleLiveTV": "Tv en vivo", + "ButtonCancelSyncJob": "Cancel sync job", "TitleSync": "Sync", + "HeaderSelectDate": "Select Date", "ButtonDonate": "Donate", + "LabelRecurringDonationCanBeCancelledHelp": "Donaciones recurrentes se pueden cancelar en cualquier momento desde su cuenta de PayPal.", "HeaderMyMedia": "My Media", - "TitleNotifications": "Notifications", + "TitleNotifications": "Notificaciones", "ErrorLaunchingChromecast": "Ha habido un error al lanzar chromecast. Asegurese que su dispositivo est\u00e1 conectado a su red inal\u00e1mbrica.", "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Emby Connect members to enjoy free access to the following apps:", @@ -71,7 +74,7 @@ "LabelStopping": "Deteniendo", "LabelCancelled": "(cancelado)", "LabelFailed": "(fallido)", - "ButtonHelp": "Help", + "ButtonHelp": "Ayuda", "ButtonSave": "Grabar", "ButtonDownload": "Descargar", "SyncJobStatusQueued": "Queued", @@ -97,15 +100,16 @@ "HeaderSupporterBenefit": "Una membres\u00eda de soporte provee beneficios adicionales como acceso a Sync (Sincronizar), extensiones premium, contenidos de canales por internet, y mas. {0}Aprender m\u00e1s{1}.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", - "ButtonTakeTheTour": "Hacer u n recorrido", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", + "ButtonTakeTheTour": "Hacer un recorrido", "HeaderWelcomeBack": "Welcome back!", - "TitlePlugins": "Plugins", + "TitlePlugins": "Complementos", "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "ButtonPlayTrailer": "Play trailer", "HeaderLibraryAccess": "Library Access", "HeaderChannelAccess": "Channel Access", - "HeaderDeviceAccess": "Device Access", + "HeaderDeviceAccess": "Acceso de Equipo", "HeaderSelectDevices": "Select Devices", "ButtonCancelItem": "Cancel item", "ButtonQueueForRetry": "Queue for retry", @@ -138,14 +142,13 @@ "ButtonMute": "Silencio", "ButtonUnmute": "Activar audio", "ButtonStop": "Detener", - "ButtonNextTrack": "Tema Siguiente", + "ButtonNextTrack": "Siguiente pista", "ButtonPause": "Pausa", "ButtonPlay": "Reproducir", "ButtonEdit": "Editar", "ButtonQueue": "En cola", - "ButtonPlayTrailer": "Iniciar cortos", "ButtonPlaylist": "Lista de reproducci\u00f3n", - "ButtonPreviousTrack": "Tema Anterior", + "ButtonPreviousTrack": "Pista anterior", "LabelEnabled": "Activado", "LabelDisabled": "Desactivado", "ButtonMoreInformation": "M\u00e1s informaci\u00f3n", @@ -187,7 +190,7 @@ "LiveTvUpdateAvailable": "(Actualizaci\u00f3n disponible)", "LabelVersionUpToDate": "\u00a1Actualizado!", "ButtonResetTuner": "Reiniciar sintonizador", - "HeaderResetTuner": "Reinicio del sintonizador", + "HeaderResetTuner": "Restablecer el sintonizador", "MessageConfirmResetTuner": "\u00bfEst\u00e1 seguro que desea reiniciar este sintonizador? Cualquier reproducci\u00f3n o grabaci\u00f3n activa se detendr\u00e1 inmediatamente.", "ButtonCancelSeries": "Cancelar serie", "HeaderSeriesRecordings": "Grabaciones de series", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Transcodificaci\u00f3n", "LabelPlayMethodDirectStream": "Streaming directo", "LabelPlayMethodDirectPlay": "Reproducci\u00f3n directa", + "LabelEpisodeNumber": "Episode number:", "LabelAudioCodec": "Audio: {0}", "LabelVideoCodec": "Video: {0}", "LabelLocalAccessUrl": "Local access: {0}", @@ -302,11 +306,12 @@ "ButtonMetadataManager": "Metadata Manager", "HeaderTime": "Duraci\u00f3n", "HeaderName": "Nombre", - "HeaderAlbum": "Album", + "HeaderAlbum": "\u00c1lbum", "HeaderAlbumArtist": "Artista del album", "HeaderArtist": "Artista", "LabelAddedOnDate": "A\u00f1adido {0}", "ButtonStart": "Inicio", + "LabelSeasonNumber": "Season number:", "HeaderChannels": "Canales", "HeaderMediaFolders": "Carpetas de medios", "HeaderBlockItemsWithNoRating": "Block content with no rating information:", @@ -335,6 +340,7 @@ "ButtonNextPage": "P\u00e1gina siguiente", "ButtonPreviousPage": "P\u00e1gina anterior", "ButtonMoveLeft": "Mover izquierda", + "OptionReleaseDate": "Release date", "ButtonMoveRight": "Mover derecha", "ButtonBrowseOnlineImages": "Navegar im\u00e1genes online", "HeaderDeleteItem": "Borrar elemento", @@ -395,7 +401,7 @@ "TabServer": "Servidor", "TabUsers": "Users", "TabLibrary": "Library", - "TabMetadata": "Metadata", + "TabMetadata": "Metadatos", "TabDLNA": "DLNA", "TabLiveTV": "Live TV", "TabAutoOrganize": "Auto-Organize", @@ -477,11 +483,8 @@ "PersonTypePerson": "Person", "LabelTitleDisplayOrder": "Title display order:", "OptionSortName": "Sort name", - "OptionReleaseDate": "Fecha de estreno", - "LabelSeasonNumber": "Temporada n\u00famero:", "LabelDiscNumber": "Disc number", "LabelParentNumber": "Parent number", - "LabelEpisodeNumber": "Episodio n\u00famero:", "LabelTrackNumber": "Track number:", "LabelNumber": "Number:", "LabelReleaseDate": "Release date:", @@ -506,21 +509,21 @@ "LabelContentTypeValue": "Content type: {0}", "LabelPathSubstitutionHelp": "Optional: Path substitution can map server paths to network shares that clients can access for direct playback.", "FolderTypeUnset": "Unset (mixed content)", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", + "FolderTypeMovies": "Peliculas", + "FolderTypeMusic": "Musica", + "FolderTypeAdultVideos": "Videos para adultos", + "FolderTypePhotos": "Fotos", + "FolderTypeMusicVideos": "Videos Musicales", + "FolderTypeHomeVideos": "Videos caseros", + "FolderTypeGames": "Juegos", + "FolderTypeBooks": "Libros", "FolderTypeTvShows": "TV", "TabMovies": "Pel\u00edculas", "TabSeries": "Series", "TabEpisodes": "Episodios", "TabTrailers": "Trailers", "TabGames": "Juegos", - "TabAlbums": "Albums", + "TabAlbums": "\u00c1lbumes", "TabSongs": "Canciones", "TabMusicVideos": "Videos Musicales", "BirthPlaceValue": "Birth place: {0}", @@ -712,7 +715,7 @@ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", "HeaderConnectionFailure": "Connection Failure", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", - "ButtonSelectServer": "Select server", + "ButtonSelectServer": "Select Server", "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", "DefaultErrorMessage": "There was an error processing the request. Please try again later.", @@ -723,7 +726,7 @@ "MessageForgotPasswordInNetworkRequired": "Please try again within your home network to initiate the password reset process.", "MessageForgotPasswordFileCreated": "The following file has been created on your server and contains instructions on how to proceed:", "MessageForgotPasswordFileExpiration": "The reset pin will expire at {0}.", - "MessageInvalidForgotPasswordPin": "An invalid or expired pin was entered. Please try again.", + "MessageInvalidForgotPasswordPin": "Se ingres\u00f3 un c\u00f3digo PIN inv\u00e1lido o expirado. Por favor, int\u00e9ntelo de nuevo.", "MessagePasswordResetForUsers": "Passwords have been removed for the following users:", "HeaderInviteGuest": "Invite Guest", "ButtonLinkMyEmbyAccount": "Link my account now", @@ -740,7 +743,7 @@ "LabelQuality": "Quality:", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", - "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", "LabelItemLimit": "Item limit:", @@ -762,5 +765,45 @@ "ButtonSignInWithConnect": "Sign in with Emby Connect", "HeaderNewServer": "New Server", "MyDevice": "My Device", - "ButtonRemote": "Remote" + "ButtonRemote": "Remote", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Advanced", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/fi.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/fi.json index 870647eb5..4b858141b 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/fi.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/fi.json @@ -38,8 +38,11 @@ "HeaderSupportTheTeam": "Support the Emby Team", "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", + "ButtonCancelSyncJob": "Cancel sync job", "TitleSync": "Sync", + "HeaderSelectDate": "Select Date", "ButtonDonate": "Donate", + "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderMyMedia": "My Media", "TitleNotifications": "Notifications", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", "ButtonTakeTheTour": "Take the tour", "HeaderWelcomeBack": "Welcome back!", "TitlePlugins": "Plugins", "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "ButtonPlayTrailer": "Play trailer", "HeaderLibraryAccess": "Library Access", "HeaderChannelAccess": "Channel Access", "HeaderDeviceAccess": "Device Access", @@ -143,7 +147,6 @@ "ButtonPlay": "Play", "ButtonEdit": "Edit", "ButtonQueue": "Queue", - "ButtonPlayTrailer": "Play trailer", "ButtonPlaylist": "Playlist", "ButtonPreviousTrack": "Previous Track", "LabelEnabled": "Enabled", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Transcoding", "LabelPlayMethodDirectStream": "Direct Streaming", "LabelPlayMethodDirectPlay": "Direct Playing", + "LabelEpisodeNumber": "Episode number:", "LabelAudioCodec": "Audio: {0}", "LabelVideoCodec": "Video: {0}", "LabelLocalAccessUrl": "Local access: {0}", @@ -307,6 +311,7 @@ "HeaderArtist": "Artist", "LabelAddedOnDate": "Added {0}", "ButtonStart": "Start", + "LabelSeasonNumber": "Season number:", "HeaderChannels": "Channels", "HeaderMediaFolders": "Media Folders", "HeaderBlockItemsWithNoRating": "Block content with no rating information:", @@ -335,6 +340,7 @@ "ButtonNextPage": "Next Page", "ButtonPreviousPage": "Previous Page", "ButtonMoveLeft": "Move left", + "OptionReleaseDate": "Release date", "ButtonMoveRight": "Move right", "ButtonBrowseOnlineImages": "Browse online images", "HeaderDeleteItem": "Delete Item", @@ -477,11 +483,8 @@ "PersonTypePerson": "Person", "LabelTitleDisplayOrder": "Title display order:", "OptionSortName": "Sort name", - "OptionReleaseDate": "Release date", - "LabelSeasonNumber": "Season number:", "LabelDiscNumber": "Disc number", "LabelParentNumber": "Parent number", - "LabelEpisodeNumber": "Episode number:", "LabelTrackNumber": "Track number:", "LabelNumber": "Number:", "LabelReleaseDate": "Release date:", @@ -712,7 +715,7 @@ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", "HeaderConnectionFailure": "Connection Failure", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", - "ButtonSelectServer": "Select server", + "ButtonSelectServer": "Select Server", "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", "DefaultErrorMessage": "There was an error processing the request. Please try again later.", @@ -740,7 +743,7 @@ "LabelQuality": "Quality:", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", - "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", "LabelItemLimit": "Item limit:", @@ -762,5 +765,45 @@ "ButtonSignInWithConnect": "Sign in with Emby Connect", "HeaderNewServer": "New Server", "MyDevice": "My Device", - "ButtonRemote": "Remote" + "ButtonRemote": "Remote", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Advanced", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json index 670bdf36c..4a12ae55c 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json @@ -38,15 +38,18 @@ "HeaderSupportTheTeam": "Aidez l'\u00e9quipe Emby", "TextEnjoyBonusFeatures": "Profitez bien des fonctionnalit\u00e9s bonus", "TitleLiveTV": "TV en direct", + "ButtonCancelSyncJob": "Annuler la t\u00e2che de synchro", "TitleSync": "Sync.", + "HeaderSelectDate": "S\u00e9lectionnez la date", "ButtonDonate": "Faire un don", + "LabelRecurringDonationCanBeCancelledHelp": "Des donations r\u00e9currentes peuvent \u00eatre annul\u00e9es \u00e0 tout moment depuis votre compte PayPal.", "HeaderMyMedia": "Mes medias", "TitleNotifications": "Notifications", "ErrorLaunchingChromecast": "Une erreur a \u00e9t\u00e9 rencontr\u00e9e lors du lancement de Chromecast. Veuillez vous assurer que votre appareil est bien connect\u00e9 \u00e0 votre r\u00e9seau sans-fil.", "MessageErrorLoadingSupporterInfo": "Il y a eu une erreur lors du chargement des informations de supporter. Veuillez r\u00e9essayer plus tard.", "MessageLinkYourSupporterKey": "Liez votre cl\u00e9 de supporteur avec un maximum de {0} membres Emby Connect pour b\u00e9n\u00e9ficier de l'acc\u00e8s gratuit aux applications suivantes :", "HeaderConfirmRemoveUser": "Supprimer l'utilisateur", - "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Select the device to control by clicking the cast icon in the upper right corner. Swipe down anywhere on this screen to go back to where you came from.", + "MessageSwipeDownOnRemoteControl": "Bienvenue dans votre t\u00e9l\u00e9commande. S\u00e9lectionnez l'appareil \u00e0 contr\u00f4ler en cliquant sur l'ic\u00f4ne cast dans le coin en haut \u00e0 droite. Faites glissez votre doigt vers le bas depuis n'importe o\u00f9 sur cet \u00e9cran pour revenir d'o\u00f9 vous veniez.", "MessageConfirmRemoveConnectSupporter": "Etes-vous s\u00fbr de vouloir supprimer les avantages additionnels de supporteur pour cet utilisateur ?", "ValueTimeLimitSingleHour": "Limite de temps : 1 heure", "ValueTimeLimitMultiHour": "Limite de temps : {0} heures", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "Un partenariat de membre supporteur apporte des avantages suppl\u00e9mentaires, comme l'acc\u00e8s \u00e0 la synchronisation, aux plugins premiums, aux contenus des cha\u00eenes Internet, et plus encore. {0}En savoir plus{1}.", "LabelSyncNoTargetsHelp": "Il semble que vous n'ayez actuellement aucune application qui supporte la synchronisation.", "HeaderWelcomeToProjectServerDashboard": "Bienvenue dans le tableau de bord du serveur Emby", - "HeaderWelcomeToProjectWebClient": "Bienvenue dans client Web Emby", + "HeaderWelcomeToProjectWebClient": "Bienvenue dans Emby", "ButtonTakeTheTour": "Visite guid\u00e9e", "HeaderWelcomeBack": "Bienvenue !", "TitlePlugins": "Plugins", "ButtonTakeTheTourToSeeWhatsNew": "Suivez le guide pour d\u00e9couvrir les nouveaut\u00e9s", "MessageNoSyncJobsFound": "Aucune t\u00e2che de synchronisation trouv\u00e9e. Vous pouvez cr\u00e9er des t\u00e2ches de synchronisation gr\u00e2ce aux boutons 'Synchroniser' partout dans l'interface web.", + "ButtonPlayTrailer": "Lire la bande-annonce", "HeaderLibraryAccess": "Acc\u00e8s \u00e0 la librairie", "HeaderChannelAccess": "Acc\u00e8s Cha\u00eene", "HeaderDeviceAccess": "Acc\u00e8s \u00e0 l'appareil", @@ -143,7 +147,6 @@ "ButtonPlay": "Lire", "ButtonEdit": "Modifier", "ButtonQueue": "En file d'attente", - "ButtonPlayTrailer": "Lire la bande-annonce", "ButtonPlaylist": "Liste de lecture", "ButtonPreviousTrack": "Piste pr\u00e9c\u00e9dente", "LabelEnabled": "Activ\u00e9", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Transcodage", "LabelPlayMethodDirectStream": "Direct Stream", "LabelPlayMethodDirectPlay": "Direct Play", + "LabelEpisodeNumber": "Episode number:", "LabelAudioCodec": "Audio : {0}", "LabelVideoCodec": "Vid\u00e9o : {0}", "LabelLocalAccessUrl": "Acc\u00e8s local : {0}", @@ -307,6 +311,7 @@ "HeaderArtist": "Artiste", "LabelAddedOnDate": "Ajout\u00e9 {0}", "ButtonStart": "Commencer", + "LabelSeasonNumber": "Season number:", "HeaderChannels": "Cha\u00eenes", "HeaderMediaFolders": "R\u00e9pertoires de m\u00e9dias", "HeaderBlockItemsWithNoRating": "Bloquer le contenu ne comportant aucune information de classement :", @@ -335,6 +340,7 @@ "ButtonNextPage": "Page suivante", "ButtonPreviousPage": "Page pr\u00e9c\u00e9dente", "ButtonMoveLeft": "D\u00e9placer \u00e0 gauche", + "OptionReleaseDate": "Date de diffusion", "ButtonMoveRight": "D\u00e9placer \u00e0 droite", "ButtonBrowseOnlineImages": "Parcourir les images en ligne", "HeaderDeleteItem": "Supprimer l'\u00e9l\u00e9ment", @@ -477,11 +483,8 @@ "PersonTypePerson": "Personne", "LabelTitleDisplayOrder": "Ordre d'affichage des titres:", "OptionSortName": "Clef de tri", - "OptionReleaseDate": "Date de sortie ", - "LabelSeasonNumber": "Num\u00e9ro de la saison:", "LabelDiscNumber": "Num\u00e9ro de disque", "LabelParentNumber": "Num\u00e9ro parent", - "LabelEpisodeNumber": "Num\u00e9ro de l'\u00e9pisode:", "LabelTrackNumber": "Num\u00e9ro de piste:", "LabelNumber": "Num\u00e9ro:", "LabelReleaseDate": "Date de sortie", @@ -740,7 +743,7 @@ "LabelQuality": "Qualit\u00e9:", "HeaderSettings": "Param\u00e8tres", "OptionAutomaticallySyncNewContent": "Synchroniser automatiquement le nouveau contenu", - "OptionAutomaticallySyncNewContentHelp": "Les nouveaux contenus ajout\u00e9s \u00e0 cette cat\u00e9gorie seront automatiquement synchronis\u00e9s avec le p\u00e9riph\u00e9rique.", + "OptionAutomaticallySyncNewContentHelp": "Les nouveaux contenus ajout\u00e9s \u00e0 cette cat\u00e9gorie seront automatiquement synchronis\u00e9s avec l'appareil.", "OptionSyncUnwatchedVideosOnly": "Synchroniser seulement les vid\u00e9os non lues.", "OptionSyncUnwatchedVideosOnlyHelp": "Seulement les vid\u00e9os non lus seront synchronis\u00e9es et seront supprim\u00e9es du p\u00e9riph\u00e9rique au fur et \u00e0 mesure qu'elles sont lus.", "LabelItemLimit": "Maximum d'\u00e9l\u00e9ments :", @@ -757,10 +760,50 @@ "SyncJobItemStatusCancelled": "Annul\u00e9", "LabelProfile": "Profil :", "LabelBitrateMbps": "D\u00e9bit (Mbps) :", - "EmbyIntroDownloadMessage": "To download and install Emby Server visit {0}.", - "ButtonNewServer": "New Server", - "ButtonSignInWithConnect": "Sign in with Emby Connect", - "HeaderNewServer": "New Server", - "MyDevice": "My Device", - "ButtonRemote": "Remote" + "EmbyIntroDownloadMessage": "Pour t\u00e9l\u00e9charger et installer le serveur Emby, visitez {0}.", + "ButtonNewServer": "Nouveau serveur", + "ButtonSignInWithConnect": "Se connecter avec Emby Connect", + "HeaderNewServer": "Nouveau serveur", + "MyDevice": "Mon appareil", + "ButtonRemote": "T\u00e9l\u00e9commande", + "TabInfo": "Info", + "TabCast": "Distribution", + "TabScenes": "Sc\u00e8nes", + "HeaderUnlockApp": "D\u00e9verrouiller l'App", + "MessageUnlockAppWithPurchase": "D\u00e9verrouillez toutes les fonctionnalit\u00e9s de l'app en un seul petit achat.", + "MessageUnlockAppWithPurchaseOrSupporter": "D\u00e9verrouillez toutes les fonctionnalit\u00e9s de l'app en un seul petit achat, ou en vous connectant avec un compte de supporteur actif d'Emby.", + "MessageUnlockAppWithSupporter": "D\u00e9verrouillez toutes les fonctionnalit\u00e9s de l'app en vous connectant avec un compte de supporteur actif d'Emby.", + "MessageToValidateSupporter": "Si vos poss\u00e9dez un compte actif de supporteur Emby, connectez-vous simplement avec la connexion Wifi de votre r\u00e9seau domestique.", + "MessagePaymentServicesUnavailable": "Les services de paiement sont actuellement indisponibles. Merci de r\u00e9essayer ult\u00e9rieurement", + "ButtonUnlockWithSupporter": "Connectez-vous avec votre compte de supporteur Emby.", + "MessagePleaseSignInLocalNetwork": "Avant de continuer, veuillez vous assurer que vous \u00eates connect\u00e9s sur votre r\u00e9seau local en Wifi ou LAN.", + "ButtonUnlockWithPurchase": "D\u00e9verrouillez par un achat.", + "ButtonUnlockPrice": "D\u00e9verrouiller {0}", + "MessageLiveTvGuideRequiresUnlock": "Le Guide TV en direct est actuellement limit\u00e9 \u00e0 {0} cha\u00eenes. Cliquez sur le bouton d\u00e9verrouiller pour d\u00e9couvrir comment profiter de l'ensemble.", + "OptionEnableFullscreen": "Activer le plein \u00e9cran", + "ButtonServer": "Serveur", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Biblioth\u00e8que", + "HeaderMedia": "M\u00e9dia", + "ButtonInbox": "Bo\u00eete de r\u00e9ception", + "HeaderAdvanced": "Avanc\u00e9", + "HeaderGroupVersions": "Versions des groupes", + "HeaderSaySomethingLike": "Dites quelque chose...", + "ButtonTryAgain": "Veuillez r\u00e9essayer", + "HeaderYouSaid": "Vous avez dit...", + "MessageWeDidntRecognizeCommand": "D\u00e9sol\u00e9, cette commande n'a pas \u00e9t\u00e9 reconnue.", + "MessageIfYouBlockedVoice": "Si vous avez supprim\u00e9 l'acc\u00e8s par commande vocale \u00e0 l'application, vous devrez reconfigurer avant de r\u00e9essayer.", + "MessageNoItemsFound": "Aucun \u00e9l\u00e9ment trouv\u00e9", + "ButtonManageServer": "G\u00e9rer le serveur", + "ButtonPreferences": "Pr\u00e9f\u00e9rences", + "ButtonViewArtist": "Voir l'artiste", + "ButtonViewAlbum": "Voir l'album", + "ErrorMessagePasswordNotMatchConfirm": "Le mot de passe et sa confirmation doivent correspondre.", + "ErrorMessageUsernameInUse": "Ce nom d'utilisateur est d\u00e9j\u00e0 utilis\u00e9. Veuillez en choisir un autre et r\u00e9essayer.", + "ErrorMessageEmailInUse": "Cette adresse email est d\u00e9j\u00e0 utilis\u00e9e. Veuillez en saisir une autre et r\u00e9essayer, ou bien utiliser la fonction du mot de passe oubli\u00e9.", + "MessageThankYouForConnectSignUp": "Merci de vous inscrire sur Emby Connect. Un email va vous \u00eatre envoy\u00e9, avec les instructions pour confirmer votre nouveau compte. Merci de confirmer ce compte puis de revenir \u00e0 cet endroit pour vous connecter.", + "HeaderShare": "Partager", + "ButtonShareHelp": "Partager un page web contenant les informations sur les m\u00e9dias \u00e0 travers les m\u00e9dias sociaux. Les fichiers de m\u00e9dias ne sont jamais partag\u00e9s publiquement.", + "ButtonShare": "Partager", + "HeaderConfirm": "Confirmer" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/gsw.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/gsw.json new file mode 100644 index 000000000..47a1ae711 --- /dev/null +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/gsw.json @@ -0,0 +1,809 @@ +{ + "SettingsSaved": "Settings saved.", + "AddUser": "Add User", + "Users": "Users", + "Delete": "Delete", + "Administrator": "Administrator", + "Password": "Password", + "DeleteImage": "Delete Image", + "MessageThankYouForSupporting": "Thank you for supporting Emby.", + "MessagePleaseSupportProject": "Please support Emby.", + "DeleteImageConfirmation": "Are you sure you wish to delete this image?", + "FileReadCancelled": "The file read has been canceled.", + "FileNotFound": "File not found.", + "FileReadError": "An error occurred while reading the file.", + "DeleteUser": "Delete User", + "DeleteUserConfirmation": "Are you sure you wish to delete this user?", + "PasswordResetHeader": "Reset Password", + "PasswordResetComplete": "The password has been reset.", + "PinCodeResetComplete": "The pin code has been reset.", + "PasswordResetConfirmation": "Are you sure you wish to reset the password?", + "PinCodeResetConfirmation": "Are you sure you wish to reset the pin code?", + "HeaderPinCodeReset": "Reset Pin Code", + "PasswordSaved": "Password saved.", + "PasswordMatchError": "Password and password confirmation must match.", + "OptionRelease": "Official Release", + "OptionBeta": "Beta", + "OptionDev": "Dev (Unstable)", + "UninstallPluginHeader": "Uninstall Plugin", + "UninstallPluginConfirmation": "Are you sure you wish to uninstall {0}?", + "NoPluginConfigurationMessage": "This plugin has nothing to configure.", + "NoPluginsInstalledMessage": "You have no plugins installed.", + "BrowsePluginCatalogMessage": "Browse our plugin catalog to view available plugins.", + "MessageKeyEmailedTo": "Key emailed to {0}.", + "MessageKeysLinked": "Keys linked.", + "HeaderConfirmation": "Confirmation", + "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", + "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "Erleb di ganze Bonis", + "TitleLiveTV": "Live TV", + "ButtonCancelSyncJob": "Cancel sync job", + "TitleSync": "Sync", + "HeaderSelectDate": "Select Date", + "ButtonDonate": "Donate", + "LabelRecurringDonationCanBeCancelledHelp": "Gmachti Spende ch\u00f6nt jederziit abbroche werde mithilf vo dim PayPal Account.", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Mitteilige", + "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Emby Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Select the device to control by clicking the cast icon in the upper right corner. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", + "ValueTimeLimitSingleHour": "Time limit: 1 hour", + "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "User", + "PluginCategoryGeneral": "General", + "PluginCategoryContentProvider": "Content Providers", + "PluginCategoryScreenSaver": "Screen Savers", + "PluginCategoryTheme": "Themes", + "PluginCategorySync": "Sync", + "PluginCategorySocialIntegration": "Social Networks", + "PluginCategoryNotifications": "Notifications", + "PluginCategoryMetadata": "Metadata", + "PluginCategoryLiveTV": "Live TV", + "PluginCategoryChannel": "Channels", + "HeaderSearch": "Search", + "ValueDateCreated": "Date created: {0}", + "LabelArtist": "Artist", + "LabelMovie": "Movie", + "LabelMusicVideo": "Music Video", + "LabelEpisode": "Episode", + "LabelSeries": "Serie", + "LabelStopping": "Stopping", + "LabelCancelled": "(cancelled)", + "LabelFailed": "(fehlgschlage)", + "ButtonHelp": "Help", + "ButtonSave": "Speichere", + "ButtonDownload": "Download", + "SyncJobStatusQueued": "Queued", + "SyncJobStatusConverting": "Converting", + "SyncJobStatusFailed": "Failed", + "SyncJobStatusCancelled": "Cancelled", + "SyncJobStatusCompleted": "Synced", + "SyncJobStatusReadyToTransfer": "Ready to Transfer", + "SyncJobStatusTransferring": "Transferring", + "SyncJobStatusCompletedWithError": "Synced with errors", + "SyncJobItemStatusReadyToTransfer": "Ready to Transfer", + "LabelCollection": "Collection", + "HeaderAddToCollection": "Zur Sammlig hinzue f\u00fcege", + "NewCollectionNameExample": "Biispell: Star Wars Sammlig", + "OptionSearchForInternetMetadata": "Dursuechs Internet nach Bilder und Metadate", + "LabelSelectCollection": "W\u00e4hl Sammlig:", + "HeaderDevices": "Devices", + "ButtonScheduledTasks": "Scheduled tasks", + "MessageItemsAdded": "Items added", + "ButtonAddToCollection": "Add to collection", + "HeaderSelectCertificatePath": "Select Certificate Path", + "ConfirmMessageScheduledTaskButton": "This operation normally runs automatically as a scheduled task. It can also be run manually here. To configure the scheduled task, see:", + "HeaderSupporterBenefit": "En Supporter-Mitgliedschaft git dir zues\u00e4tzlichi M\u00f6glichkeite wie de Zuegriff uf Synchronisierig, Premium Plugins, Internet Kan\u00e4l und meh. {0}Meh erfahre{1}", + "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", + "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", + "ButtonTakeTheTour": "Mach d'Tour", + "HeaderWelcomeBack": "Welcome back!", + "TitlePlugins": "Plugins", + "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", + "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "ButtonPlayTrailer": "Play trailer", + "HeaderLibraryAccess": "Library Access", + "HeaderChannelAccess": "Channel Access", + "HeaderDeviceAccess": "Gr\u00e4t Zuegriff", + "HeaderSelectDevices": "Select Devices", + "ButtonCancelItem": "Cancel item", + "ButtonQueueForRetry": "Queue for retry", + "ButtonReenable": "Re-enable", + "ButtonLearnMore": "Learn more", + "SyncJobItemStatusSyncedMarkForRemoval": "Marked for removal", + "LabelAbortedByServerShutdown": "(Aborted by server shutdown)", + "LabelScheduledTaskLastRan": "Last ran {0}, taking {1}.", + "HeaderDeleteTaskTrigger": "Delete Task Trigger", + "HeaderTaskTriggers": "Task Triggers", + "MessageDeleteTaskTrigger": "Are you sure you wish to delete this task trigger?", + "MessageNoPluginsInstalled": "You have no plugins installed.", + "LabelVersionInstalled": "{0} installed", + "LabelNumberReviews": "{0} Reviews", + "LabelFree": "Free", + "HeaderPlaybackError": "Playback Error", + "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", + "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", + "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", + "HeaderSelectAudio": "Select Audio", + "HeaderSelectSubtitles": "Select Subtitles", + "ButtonMarkForRemoval": "Remove from device", + "ButtonUnmarkForRemoval": "Cancel removal from device", + "LabelDefaultStream": "(Default)", + "LabelForcedStream": "(Forced)", + "LabelDefaultForcedStream": "(Default\/Forced)", + "LabelUnknownLanguage": "Unknown language", + "MessageConfirmSyncJobItemCancellation": "Are you sure you wish to cancel this item?", + "ButtonMute": "Mute", + "ButtonUnmute": "Unmute", + "ButtonStop": "Stop", + "ButtonNextTrack": "N\u00f6chsti Track", + "ButtonPause": "Pause", + "ButtonPlay": "Play", + "ButtonEdit": "Edit", + "ButtonQueue": "Queue", + "ButtonPlaylist": "Playlist", + "ButtonPreviousTrack": "Vorherigi Track", + "LabelEnabled": "Enabled", + "LabelDisabled": "Disabled", + "ButtonMoreInformation": "More Information", + "LabelNoUnreadNotifications": "No unread notifications.", + "ButtonViewNotifications": "View notifications", + "ButtonMarkTheseRead": "Mark these read", + "ButtonClose": "Close", + "LabelAllPlaysSentToPlayer": "All plays will be sent to the selected player.", + "MessageInvalidUser": "Invalid username or password. Please try again.", + "HeaderLoginFailure": "Login Failure", + "HeaderAllRecordings": "All Recordings", + "RecommendationBecauseYouLike": "Because you like {0}", + "RecommendationBecauseYouWatched": "Because you watched {0}", + "RecommendationDirectedBy": "Directed by {0}", + "RecommendationStarring": "Starring {0}", + "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", + "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", + "MessageRecordingCancelled": "Recording cancelled.", + "HeaderConfirmSeriesCancellation": "Confirm Series Cancellation", + "MessageConfirmSeriesCancellation": "Are you sure you wish to cancel this series?", + "MessageSeriesCancelled": "Series cancelled.", + "HeaderConfirmRecordingDeletion": "Confirm Recording Deletion", + "MessageConfirmRecordingDeletion": "Are you sure you wish to delete this recording?", + "MessageRecordingDeleted": "Recording deleted.", + "ButonCancelRecording": "Cancel Recording", + "MessageRecordingSaved": "Recording saved.", + "OptionSunday": "Sonntig", + "OptionMonday": "M\u00e4ntig", + "OptionTuesday": "Tsischtig", + "OptionWednesday": "Mittwoch", + "OptionThursday": "Donnstig", + "OptionFriday": "Friitig", + "OptionSaturday": "Samstig", + "OptionEveryday": "Every day", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", + "HeaderConfirmDeletion": "Confirm Deletion", + "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", + "LiveTvUpdateAvailable": "(Update available)", + "LabelVersionUpToDate": "Up to date!", + "ButtonResetTuner": "Reset tuner", + "HeaderResetTuner": "Reset Tuner", + "MessageConfirmResetTuner": "Are you sure you wish to reset this tuner? Any active players or recordings will be abruptly stopped.", + "ButtonCancelSeries": "Cancel Series", + "HeaderSeriesRecordings": "Series Recordings", + "LabelAnytime": "Any time", + "StatusRecording": "Recording", + "StatusWatching": "Watching", + "StatusRecordingProgram": "Recording {0}", + "StatusWatchingProgram": "Watching {0}", + "HeaderSplitMedia": "Split Media Apart", + "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", + "HeaderError": "Error", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", + "MessagePleaseSelectOneItem": "Please select at least one item.", + "MessagePleaseSelectTwoItems": "Please select at least two items.", + "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", + "MessageConfirmItemGrouping": "Emby apps will automatically choose the optimal version to play based on device and network performance. Are you sure you wish to continue?", + "HeaderResume": "Fortsetze", + "HeaderMyViews": "My Views", + "HeaderLibraryFolders": "Media Folders", + "HeaderLatestMedia": "Latest Media", + "ButtonMoreItems": "More...", + "ButtonMore": "More", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteGames": "Favorite Games", + "HeaderRatingsDownloads": "Rating \/ Downloads", + "HeaderConfirmProfileDeletion": "Confirm Profile Deletion", + "MessageConfirmProfileDeletion": "Are you sure you wish to delete this profile?", + "HeaderSelectServerCachePath": "Select Server Cache Path", + "HeaderSelectTranscodingPath": "Select Transcoding Temporary Path", + "HeaderSelectImagesByNamePath": "Select Images By Name Path", + "HeaderSelectMetadataPath": "Select Metadata Path", + "HeaderSelectServerCachePathHelp": "Browse or enter the path to use for server cache files. The folder must be writeable.", + "HeaderSelectTranscodingPathHelp": "Browse or enter the path to use for transcoding temporary files. The folder must be writeable.", + "HeaderSelectImagesByNamePathHelp": "Browse or enter the path to your items by name folder. The folder must be writeable.", + "HeaderSelectMetadataPathHelp": "Browse or enter the path you'd like to store metadata within. The folder must be writeable.", + "HeaderSelectChannelDownloadPath": "Select Channel Download Path", + "HeaderSelectChannelDownloadPathHelp": "Browse or enter the path to use for storing channel cache files. The folder must be writeable.", + "OptionNewCollection": "New...", + "ButtonAdd": "Add", + "ButtonRemove": "Remove", + "LabelChapterDownloaders": "Chapter downloaders:", + "LabelChapterDownloadersHelp": "Enable and rank your preferred chapter downloaders in order of priority. Lower priority downloaders will only be used to fill in missing information.", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderLatestChannelMedia": "Latest Channel Items", + "ButtonOrganizeFile": "Organize File", + "ButtonDeleteFile": "Delete File", + "HeaderOrganizeFile": "Organize File", + "HeaderDeleteFile": "Delete File", + "StatusSkipped": "Skipped", + "StatusFailed": "Failed", + "StatusSuccess": "Success", + "MessageFileWillBeDeleted": "The following file will be deleted:", + "MessageSureYouWishToProceed": "Are you sure you wish to proceed?", + "MessageDuplicatesWillBeDeleted": "In addition the following dupliates will be deleted:", + "MessageFollowingFileWillBeMovedFrom": "The following file will be moved from:", + "MessageDestinationTo": "to:", + "HeaderSelectWatchFolder": "Select Watch Folder", + "HeaderSelectWatchFolderHelp": "Browse or enter the path to your watch folder. The folder must be writeable.", + "OrganizePatternResult": "Result: {0}", + "HeaderRestart": "Restart", + "HeaderShutdown": "Shutdown", + "MessageConfirmRestart": "Are you sure you wish to restart Emby Server?", + "MessageConfirmShutdown": "Are you sure you wish to shutdown Emby Server?", + "ButtonUpdateNow": "Update Now", + "ValueItemCount": "{0} item", + "ValueItemCountPlural": "{0} items", + "NewVersionOfSomethingAvailable": "A new version of {0} is available!", + "VersionXIsAvailableForDownload": "Version {0} is now available for download.", + "LabelVersionNumber": "Version {0}", + "LabelPlayMethodTranscoding": "Transcoding", + "LabelPlayMethodDirectStream": "Direct Streaming", + "LabelPlayMethodDirectPlay": "Direct Playing", + "LabelEpisodeNumber": "Episode number:", + "LabelAudioCodec": "Audio: {0}", + "LabelVideoCodec": "Video: {0}", + "LabelLocalAccessUrl": "Local access: {0}", + "LabelRemoteAccessUrl": "Remote access: {0}", + "LabelRunningOnPort": "Running on http port {0}.", + "LabelRunningOnPorts": "Running on http port {0}, and https port {1}.", + "HeaderLatestFromChannel": "Latest from {0}", + "LabelUnknownLanaguage": "Unknown language", + "HeaderCurrentSubtitles": "Current Subtitles", + "MessageDownloadQueued": "The download has been queued.", + "MessageAreYouSureDeleteSubtitles": "Are you sure you wish to delete this subtitle file?", + "ButtonRemoteControl": "Remote Control", + "HeaderLatestTvRecordings": "Latest Recordings", + "ButtonOk": "OK", + "ButtonCancel": "Abbreche", + "ButtonRefresh": "Refresh", + "LabelCurrentPath": "Current path:", + "HeaderSelectMediaPath": "Select Media Path", + "HeaderSelectPath": "Select Path", + "ButtonNetwork": "Network", + "MessageDirectoryPickerInstruction": "Network paths can be entered manually in the event the Network button fails to locate your devices. For example, {0} or {1}.", + "HeaderMenu": "Menu", + "ButtonOpen": "Open", + "ButtonOpenInNewTab": "Open in new tab", + "ButtonShuffle": "Shuffle", + "ButtonInstantMix": "Instant mix", + "ButtonResume": "Resume", + "HeaderScenes": "Scenes", + "HeaderAudioTracks": "Audio Tracks", + "HeaderLibraries": "Libraries", + "HeaderSubtitles": "Subtitles", + "HeaderVideoQuality": "Video Quality", + "MessageErrorPlayingVideo": "There was an error playing the video.", + "MessageEnsureOpenTuner": "Please ensure there is an open tuner availalble.", + "ButtonHome": "Home", + "ButtonDashboard": "Dashboard", + "ButtonReports": "Reports", + "ButtonMetadataManager": "Metadata Manager", + "HeaderTime": "Time", + "HeaderName": "Name", + "HeaderAlbum": "Album", + "HeaderAlbumArtist": "Album Artist", + "HeaderArtist": "Artist", + "LabelAddedOnDate": "Added {0}", + "ButtonStart": "Start", + "LabelSeasonNumber": "Season number:", + "HeaderChannels": "Channels", + "HeaderMediaFolders": "Media Folders", + "HeaderBlockItemsWithNoRating": "Block content with no rating information:", + "OptionBlockOthers": "Others", + "OptionBlockTvShows": "TV Shows", + "OptionBlockTrailers": "Trailers", + "OptionBlockMusic": "Music", + "OptionBlockMovies": "Movies", + "OptionBlockBooks": "Books", + "OptionBlockGames": "Games", + "OptionBlockLiveTvPrograms": "Live TV Programs", + "OptionBlockLiveTvChannels": "Live TV Channels", + "OptionBlockChannelContent": "Internet Channel Content", + "ButtonRevoke": "Revoke", + "MessageConfirmRevokeApiKey": "Are you sure you wish to revoke this api key? The application's connection to Emby Server will be abruptly terminated.", + "HeaderConfirmRevokeApiKey": "Revoke Api Key", + "ValueContainer": "Container: {0}", + "ValueAudioCodec": "Audio Codec: {0}", + "ValueVideoCodec": "Video Codec: {0}", + "ValueCodec": "Codec: {0}", + "ValueConditions": "Conditions: {0}", + "LabelAll": "All", + "HeaderDeleteImage": "Delete Image", + "MessageFileNotFound": "File not found.", + "MessageFileReadError": "An error occurred reading this file.", + "ButtonNextPage": "Next Page", + "ButtonPreviousPage": "Previous Page", + "ButtonMoveLeft": "Move left", + "OptionReleaseDate": "Release date", + "ButtonMoveRight": "Move right", + "ButtonBrowseOnlineImages": "Browse online images", + "HeaderDeleteItem": "Delete Item", + "ConfirmDeleteItem": "Deleting this item will delete it from both the file system and your media library. Are you sure you wish to continue?", + "MessagePleaseEnterNameOrId": "Please enter a name or an external Id.", + "MessageValueNotCorrect": "The value entered is not correct. Please try again.", + "MessageItemSaved": "Item saved.", + "MessagePleaseAcceptTermsOfServiceBeforeContinuing": "Please accept the terms of service before continuing.", + "OptionEnded": "Beendent", + "OptionContinuing": "Fortlaufend", + "OptionOff": "Off", + "OptionOn": "On", + "ButtonSettings": "Settings", + "ButtonUninstall": "Uninstall", + "HeaderFields": "Fields", + "HeaderFieldsHelp": "Slide a field to 'off' to lock it and prevent it's data from being changed.", + "HeaderLiveTV": "Live TV", + "MissingLocalTrailer": "Missing local trailer.", + "MissingPrimaryImage": "Missing primary image.", + "MissingBackdropImage": "Missing backdrop image.", + "MissingLogoImage": "Missing logo image.", + "MissingEpisode": "Missing episode.", + "OptionScreenshots": "Screenshots", + "OptionBackdrops": "Backdrops", + "OptionImages": "Images", + "OptionKeywords": "Keywords", + "OptionTags": "Tags", + "OptionStudios": "Studios", + "OptionName": "Name", + "OptionOverview": "Overview", + "OptionGenres": "Genres", + "OptionParentalRating": "Altersfriigab", + "OptionPeople": "People", + "OptionRuntime": "Laufziit", + "OptionProductionLocations": "Production Locations", + "OptionBirthLocation": "Birth Location", + "LabelAllChannels": "All channels", + "LabelLiveProgram": "LIVE", + "LabelNewProgram": "NEW", + "LabelPremiereProgram": "PREMIERE", + "LabelHDProgram": "HD", + "HeaderChangeFolderType": "Change Content Type", + "HeaderChangeFolderTypeHelp": "To change the type, please remove and rebuild the folder with the new type.", + "HeaderAlert": "Alert", + "MessagePleaseRestart": "Please restart to finish updating.", + "ButtonRestart": "Restart", + "MessagePleaseRefreshPage": "Please refresh this page to receive new updates from the server.", + "ButtonHide": "Hide", + "MessageSettingsSaved": "Settings saved.", + "ButtonSignOut": "Sign Out", + "ButtonMyProfile": "My Profile", + "ButtonMyPreferences": "My Preferences", + "MessageBrowserDoesNotSupportWebSockets": "This browser does not support web sockets. For a better experience, try a newer browser such as Chrome, Firefox, IE10+, Safari (iOS) or Opera.", + "LabelInstallingPackage": "Installing {0}", + "LabelPackageInstallCompleted": "{0} installation completed.", + "LabelPackageInstallFailed": "{0} installation failed.", + "LabelPackageInstallCancelled": "{0} installation cancelled.", + "TabServer": "Server", + "TabUsers": "Users", + "TabLibrary": "Library", + "TabMetadata": "Metadate", + "TabDLNA": "DLNA", + "TabLiveTV": "Live TV", + "TabAutoOrganize": "Auto-Organize", + "TabPlugins": "Plugins", + "TabAdvanced": "Erwiitert", + "TabHelp": "Help", + "TabScheduledTasks": "Scheduled Tasks", + "ButtonFullscreen": "Vollbeld", + "ButtonAudioTracks": "Audio Tracks", + "ButtonSubtitles": "Subtitles", + "ButtonScenes": "Scenes", + "ButtonQuality": "Quality", + "HeaderNotifications": "Notifications", + "HeaderSelectPlayer": "Select Player:", + "ButtonSelect": "Select", + "ButtonNew": "Neu", + "MessageInternetExplorerWebm": "For best results with Internet Explorer please install the WebM playback plugin.", + "HeaderVideoError": "Video Error", + "ButtonAddToPlaylist": "Add to playlist", + "HeaderAddToPlaylist": "Add to Playlist", + "LabelName": "Name:", + "ButtonSubmit": "Submit", + "LabelSelectPlaylist": "Playlist:", + "OptionNewPlaylist": "New playlist...", + "MessageAddedToPlaylistSuccess": "Ok", + "ButtonView": "View", + "ButtonViewSeriesRecording": "View series recording", + "ValueOriginalAirDate": "Original air date: {0}", + "ButtonRemoveFromPlaylist": "Remove from playlist", + "HeaderSpecials": "Specials", + "HeaderTrailers": "Trailers", + "HeaderAudio": "Audio", + "HeaderResolution": "Resolution", + "HeaderVideo": "Video", + "HeaderRuntime": "Runtime", + "HeaderCommunityRating": "Community rating", + "HeaderPasswordReset": "Password Reset", + "HeaderParentalRating": "Parental rating", + "HeaderReleaseDate": "Release date", + "HeaderDateAdded": "Date added", + "HeaderSeries": "Series", + "HeaderSeason": "Season", + "HeaderSeasonNumber": "Season number", + "HeaderNetwork": "Network", + "HeaderYear": "Year", + "HeaderGameSystem": "Game system", + "HeaderPlayers": "Players", + "HeaderEmbeddedImage": "Embedded image", + "HeaderTrack": "Track", + "HeaderDisc": "Disc", + "OptionMovies": "Movies", + "OptionCollections": "Collections", + "OptionSeries": "Series", + "OptionSeasons": "Seasons", + "OptionEpisodes": "Episodes", + "OptionGames": "Games", + "OptionGameSystems": "Game systems", + "OptionMusicArtists": "Music artists", + "OptionMusicAlbums": "Music albums", + "OptionMusicVideos": "Music videos", + "OptionSongs": "Songs", + "OptionHomeVideos": "Home videos", + "OptionBooks": "Books", + "OptionAdultVideos": "Adult videos", + "ButtonUp": "Up", + "ButtonDown": "Down", + "LabelMetadataReaders": "Metadata readers:", + "LabelMetadataReadersHelp": "Rank your preferred local metadata sources in order of priority. The first file found will be read.", + "LabelMetadataDownloaders": "Metadata downloaders:", + "LabelMetadataDownloadersHelp": "Enable and rank your preferred metadata downloaders in order of priority. Lower priority downloaders will only be used to fill in missing information.", + "LabelMetadataSavers": "Metadata savers:", + "LabelMetadataSaversHelp": "Choose the file formats to save your metadata to.", + "LabelImageFetchers": "Image fetchers:", + "LabelImageFetchersHelp": "Enable and rank your preferred image fetchers in order of priority.", + "ButtonQueueAllFromHere": "Queue all from here", + "ButtonPlayAllFromHere": "Play all from here", + "LabelDynamicExternalId": "{0} Id:", + "HeaderIdentify": "Identify Item", + "PersonTypePerson": "Person", + "LabelTitleDisplayOrder": "Title display order:", + "OptionSortName": "Sort name", + "LabelDiscNumber": "Disc number", + "LabelParentNumber": "Parent number", + "LabelTrackNumber": "Track number:", + "LabelNumber": "Number:", + "LabelReleaseDate": "Release date:", + "LabelEndDate": "End date:", + "LabelYear": "Year:", + "LabelDateOfBirth": "Date of birth:", + "LabelBirthYear": "Birth year:", + "LabelBirthDate": "Birth date:", + "LabelDeathDate": "Death date:", + "HeaderRemoveMediaLocation": "Remove Media Location", + "MessageConfirmRemoveMediaLocation": "Are you sure you wish to remove this location?", + "HeaderRenameMediaFolder": "Rename Media Folder", + "LabelNewName": "New name:", + "HeaderAddMediaFolder": "Add Media Folder", + "HeaderAddMediaFolderHelp": "Name (Movies, Music, TV, etc):", + "HeaderRemoveMediaFolder": "Remove Media Folder", + "MessageTheFollowingLocationWillBeRemovedFromLibrary": "The following media locations will be removed from your library:", + "MessageAreYouSureYouWishToRemoveMediaFolder": "Are you sure you wish to remove this media folder?", + "ButtonRename": "Rename", + "ButtonChangeType": "Change type", + "HeaderMediaLocations": "Media Locations", + "LabelContentTypeValue": "Content type: {0}", + "LabelPathSubstitutionHelp": "Optional: Path substitution can map server paths to network shares that clients can access for direct playback.", + "FolderTypeUnset": "Unset (mixed content)", + "FolderTypeMovies": "Film", + "FolderTypeMusic": "Musig", + "FolderTypeAdultVideos": "Erwachseni Film", + "FolderTypePhotos": "F\u00f6teli", + "FolderTypeMusicVideos": "Musigvideos", + "FolderTypeHomeVideos": "Heimvideos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "B\u00fcecher", + "FolderTypeTvShows": "TV", + "TabMovies": "Film", + "TabSeries": "Series", + "TabEpisodes": "Episode", + "TabTrailers": "Trailers", + "TabGames": "Games", + "TabAlbums": "Albene", + "TabSongs": "Songs", + "TabMusicVideos": "Musigvideos", + "BirthPlaceValue": "Birth place: {0}", + "DeathDateValue": "Died: {0}", + "BirthDateValue": "Born: {0}", + "HeaderLatestReviews": "Latest Reviews", + "HeaderPluginInstallation": "Plugin Installation", + "MessageAlreadyInstalled": "This version is already installed.", + "ValueReviewCount": "{0} Reviews", + "MessageYouHaveVersionInstalled": "You currently have version {0} installed.", + "MessageTrialExpired": "The trial period for this feature has expired", + "MessageTrialWillExpireIn": "The trial period for this feature will expire in {0} day(s)", + "MessageInstallPluginFromApp": "This plugin must be installed from with in the app you intend to use it in.", + "ValuePriceUSD": "Price: {0} (USD)", + "MessageFeatureIncludedWithSupporter": "You are registered for this feature, and will be able to continue using it with an active supporter membership.", + "MessageChangeRecurringPlanConfirm": "After completing this transaction you will need to cancel your previous recurring donation from within your PayPal account. Thank you for supporting Emby.", + "MessageSupporterMembershipExpiredOn": "Your supporter membership expired on {0}.", + "MessageYouHaveALifetimeMembership": "You have a lifetime supporter membership. You can provide additional donations on a one-time or recurring basis using the options below. Thank you for supporting Emby.", + "MessageYouHaveAnActiveRecurringMembership": "You have an active {0} membership. You can upgrade your plan using the options below.", + "ButtonDelete": "Delete", + "HeaderEmbyAccountAdded": "Emby Account Added", + "MessageEmbyAccountAdded": "The Emby account has been added to this user.", + "MessagePendingEmbyAccountAdded": "The Emby account has been added to this user. An email will be sent to the owner of the account. The invitation will need to be confirmed by clicking a link within the email.", + "HeaderEmbyAccountRemoved": "Emby Account Removed", + "MessageEmbyAccontRemoved": "The Emby account has been removed from this user.", + "TooltipLinkedToEmbyConnect": "Linked to Emby Connect", + "HeaderUnrated": "Unrated", + "ValueDiscNumber": "Disc {0}", + "HeaderUnknownDate": "Unknown Date", + "HeaderUnknownYear": "Unknown Year", + "ValueMinutes": "{0} min", + "ButtonPlayExternalPlayer": "Play with external player", + "HeaderSelectExternalPlayer": "Select External Player", + "HeaderExternalPlayerPlayback": "External Player Playback", + "ButtonImDone": "I'm Done", + "OptionWatched": "Watched", + "OptionUnwatched": "Unwatched", + "ExternalPlayerPlaystateOptionsHelp": "Specify how you would like to resume playing this video next time.", + "LabelMarkAs": "Mark as:", + "OptionInProgress": "In-Progress", + "LabelResumePoint": "Resume point:", + "ValueOneMovie": "1 movie", + "ValueMovieCount": "{0} movies", + "ValueOneTrailer": "1 trailer", + "ValueTrailerCount": "{0} trailers", + "ValueOneSeries": "1 series", + "ValueSeriesCount": "{0} series", + "ValueOneEpisode": "1 episode", + "ValueEpisodeCount": "{0} episodes", + "ValueOneGame": "1 game", + "ValueGameCount": "{0} games", + "ValueOneAlbum": "1 album", + "ValueAlbumCount": "{0} albums", + "ValueOneSong": "1 song", + "ValueSongCount": "{0} songs", + "ValueOneMusicVideo": "1 music video", + "ValueMusicVideoCount": "{0} music videos", + "HeaderOffline": "Offline", + "HeaderUnaired": "Unaired", + "HeaderMissing": "Missing", + "ButtonWebsite": "Website", + "TooltipFavorite": "Favorite", + "TooltipLike": "Like", + "TooltipDislike": "Dislike", + "TooltipPlayed": "Played", + "ValueSeriesYearToPresent": "{0}-Present", + "ValueAwards": "Awards: {0}", + "ValueBudget": "Budget: {0}", + "ValueRevenue": "Revenue: {0}", + "ValuePremiered": "Premiered {0}", + "ValuePremieres": "Premieres {0}", + "ValueStudio": "Studio: {0}", + "ValueStudios": "Studios: {0}", + "ValueStatus": "Status: {0}", + "ValueSpecialEpisodeName": "Special - {0}", + "LabelLimit": "Limit:", + "ValueLinks": "Links: {0}", + "HeaderPeople": "People", + "HeaderCastAndCrew": "Cast & Crew", + "ValueArtist": "Artist: {0}", + "ValueArtists": "Artists: {0}", + "HeaderTags": "Tags", + "MediaInfoCameraMake": "Camera make", + "MediaInfoCameraModel": "Camera model", + "MediaInfoAltitude": "Altitude", + "MediaInfoAperture": "Aperture", + "MediaInfoExposureTime": "Exposure time", + "MediaInfoFocalLength": "Focal length", + "MediaInfoOrientation": "Orientation", + "MediaInfoIsoSpeedRating": "Iso speed rating", + "MediaInfoLatitude": "Latitude", + "MediaInfoLongitude": "Longitude", + "MediaInfoShutterSpeed": "Shutter speed", + "MediaInfoSoftware": "Software", + "HeaderIfYouLikeCheckTheseOut": "If you like {0}, check these out...", + "HeaderPlotKeywords": "Plot Keywords", + "HeaderMovies": "Movies", + "HeaderAlbums": "Albums", + "HeaderGames": "Games", + "HeaderBooks": "Books", + "HeaderEpisodes": "Episodene", + "HeaderSeasons": "Seasons", + "HeaderTracks": "Tracks", + "HeaderItems": "Items", + "HeaderOtherItems": "Other Items", + "ButtonFullReview": "Full review", + "ValueAsRole": "as {0}", + "ValueGuestStar": "Guest star", + "MediaInfoSize": "Size", + "MediaInfoPath": "Path", + "MediaInfoFormat": "Format", + "MediaInfoContainer": "Container", + "MediaInfoDefault": "Default", + "MediaInfoForced": "Forced", + "MediaInfoExternal": "External", + "MediaInfoTimestamp": "Timestamp", + "MediaInfoPixelFormat": "Pixel format", + "MediaInfoBitDepth": "Bit depth", + "MediaInfoSampleRate": "Sample rate", + "MediaInfoBitrate": "Bitrate", + "MediaInfoChannels": "Channels", + "MediaInfoLayout": "Layout", + "MediaInfoLanguage": "Language", + "MediaInfoCodec": "Codec", + "MediaInfoProfile": "Profile", + "MediaInfoLevel": "Level", + "MediaInfoAspectRatio": "Aspect ratio", + "MediaInfoResolution": "Resolution", + "MediaInfoAnamorphic": "Anamorphic", + "MediaInfoInterlaced": "Interlaced", + "MediaInfoFramerate": "Framerate", + "MediaInfoStreamTypeAudio": "Audio", + "MediaInfoStreamTypeData": "Data", + "MediaInfoStreamTypeVideo": "Video", + "MediaInfoStreamTypeSubtitle": "Subtitle", + "MediaInfoStreamTypeEmbeddedImage": "Embedded Image", + "MediaInfoRefFrames": "Ref frames", + "TabPlayback": "Playback", + "TabNotifications": "Mitteilige", + "TabExpert": "Expert", + "HeaderSelectCustomIntrosPath": "Select Custom Intros Path", + "HeaderRateAndReview": "Rate and Review", + "HeaderThankYou": "Thank You", + "MessageThankYouForYourReview": "Thank you for your review.", + "LabelYourRating": "Your rating:", + "LabelFullReview": "Full review:", + "LabelShortRatingDescription": "Short rating summary:", + "OptionIRecommendThisItem": "I recommend this item", + "WebClientTourContent": "View your recently added media, next episodes, and more. The green circles indicate how many unplayed items you have.", + "WebClientTourMovies": "Play movies, trailers and more from any device with a web browser", + "WebClientTourMouseOver": "Hold the mouse over any poster for quick access to important information", + "WebClientTourTapHold": "Tap and hold or right click any poster for a context menu", + "WebClientTourMetadataManager": "Click edit to open the metadata manager", + "WebClientTourPlaylists": "Easily create playlists and instant mixes, and play them on any device", + "WebClientTourCollections": "Create movie collections to group box sets together", + "WebClientTourUserPreferences1": "User preferences allow you to customize the way your library is presented in all of your Emby apps", + "WebClientTourUserPreferences2": "Configure your audio and subtitle language settings once, for every Emby app", + "WebClientTourUserPreferences3": "Design the web client home page to your liking", + "WebClientTourUserPreferences4": "Configure backdrops, theme songs and external players", + "WebClientTourMobile1": "The web client works great on smartphones and tablets...", + "WebClientTourMobile2": "and easily controls other devices and Emby apps", + "WebClientTourMySync": "Sync your personal media to your devices for offline viewing.", + "MessageEnjoyYourStay": "Enjoy your stay", + "DashboardTourDashboard": "The server dashboard allows you to monitor your server and your users. You'll always know who is doing what and where they are.", + "DashboardTourHelp": "In-app help provides easy buttons to open wiki pages relating to the on-screen content.", + "DashboardTourUsers": "Easily create user accounts for your friends and family, each with their own permissions, library access, parental controls and more.", + "DashboardTourCinemaMode": "Cinema mode brings the theater experience straight to your living room with the ability to play trailers and custom intros before the main feature.", + "DashboardTourChapters": "Enable chapter image generation for your videos for a more pleasing presentation while viewing.", + "DashboardTourSubtitles": "Automatically download subtitles for your videos in any language.", + "DashboardTourPlugins": "Install plugins such as internet video channels, live tv, metadata scanners, and more.", + "DashboardTourNotifications": "Automatically send notifications of server events to your mobile device, email and more.", + "DashboardTourScheduledTasks": "Easily manage long running operations with scheduled tasks. Decide when they run, and how often.", + "DashboardTourMobile": "The Emby Server dashboard works great on smartphones and tablets. Manage your server from the palm of your hand anytime, anywhere.", + "DashboardTourSync": "Sync your personal media to your devices for offline viewing.", + "MessageRefreshQueued": "Refresh queued", + "TabDevices": "Devices", + "TabExtras": "Extras", + "DeviceLastUsedByUserName": "Last used by {0}", + "HeaderDeleteDevice": "Delete Device", + "DeleteDeviceConfirmation": "Are you sure you wish to delete this device? It will reappear the next time a user signs in with it.", + "LabelEnableCameraUploadFor": "Enable camera upload for:", + "HeaderSelectUploadPath": "Select Upload Path", + "LabelEnableCameraUploadForHelp": "Uploads will occur automatically in the background when signed into Emby.", + "ErrorMessageStartHourGreaterThanEnd": "End time must be greater than the start time.", + "ButtonLibraryAccess": "Library access", + "ButtonParentalControl": "Parental control", + "HeaderInvitationSent": "Invitation Sent", + "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", + "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", + "ButtonSelectServer": "Select Server", + "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", + "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", + "DefaultErrorMessage": "There was an error processing the request. Please try again later.", + "ButtonAccept": "Accept", + "ButtonReject": "Reject", + "HeaderForgotPassword": "Forgot Password", + "MessageContactAdminToResetPassword": "Please contact your system administrator to reset your password.", + "MessageForgotPasswordInNetworkRequired": "Please try again within your home network to initiate the password reset process.", + "MessageForgotPasswordFileCreated": "The following file has been created on your server and contains instructions on how to proceed:", + "MessageForgotPasswordFileExpiration": "The reset pin will expire at {0}.", + "MessageInvalidForgotPasswordPin": "An invalid or expired pin was entered. Please try again.", + "MessagePasswordResetForUsers": "Passwords have been removed for the following users:", + "HeaderInviteGuest": "Invite Guest", + "ButtonLinkMyEmbyAccount": "Link my account now", + "MessageConnectAccountRequiredToInviteGuest": "In order to invite guests you need to first link your Emby account to this server.", + "ButtonSync": "Sync", + "SyncMedia": "Sync Media", + "HeaderCancelSyncJob": "Cancel Sync", + "CancelSyncJobConfirmation": "Cancelling the sync job will remove synced media from the device during the next sync process. Are you sure you wish to proceed?", + "TabSync": "Sync", + "MessagePleaseSelectDeviceToSyncTo": "Please select a device to sync to.", + "MessageSyncJobCreated": "Sync job created.", + "LabelSyncTo": "Sync to:", + "LabelSyncJobName": "Sync job name:", + "LabelQuality": "Quality:", + "HeaderSettings": "Settings", + "OptionAutomaticallySyncNewContent": "Automatically sync new content", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", + "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", + "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", + "LabelItemLimit": "Item limit:", + "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be synced.", + "MessageBookPluginRequired": "Requires installation of the Bookshelf plugin", + "MessageGamePluginRequired": "Requires installation of the GameBrowser plugin", + "MessageUnsetContentHelp": "Content will be displayed as plain folders. For best results use the metadata manager to set the content types of sub-folders.", + "SyncJobItemStatusQueued": "Queued", + "SyncJobItemStatusConverting": "Converting", + "SyncJobItemStatusTransferring": "Transferring", + "SyncJobItemStatusSynced": "Synced", + "SyncJobItemStatusFailed": "Failed", + "SyncJobItemStatusRemovedFromDevice": "Removed from device", + "SyncJobItemStatusCancelled": "Cancelled", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):", + "EmbyIntroDownloadMessage": "To download and install Emby Server visit {0}.", + "ButtonNewServer": "New Server", + "ButtonSignInWithConnect": "Sign in with Emby Connect", + "HeaderNewServer": "New Server", + "MyDevice": "My Device", + "ButtonRemote": "Remote", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Advanced", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" +}
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/he.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/he.json index 4f4e1fca0..8e1e90e56 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/he.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/he.json @@ -38,8 +38,11 @@ "HeaderSupportTheTeam": "Support the Emby Team", "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "\u05d8\u05dc\u05d5\u05d5\u05d9\u05d6\u05d9\u05d4 \u05d7\u05d9\u05d9\u05d4", + "ButtonCancelSyncJob": "Cancel sync job", "TitleSync": "Sync", + "HeaderSelectDate": "Select Date", "ButtonDonate": "Donate", + "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderMyMedia": "My Media", "TitleNotifications": "Notifications", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", "ButtonTakeTheTour": "Take the tour", "HeaderWelcomeBack": "Welcome back!", "TitlePlugins": "Plugins", "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "ButtonPlayTrailer": "Play trailer", "HeaderLibraryAccess": "Library Access", "HeaderChannelAccess": "Channel Access", "HeaderDeviceAccess": "Device Access", @@ -143,7 +147,6 @@ "ButtonPlay": "\u05e0\u05d2\u05df", "ButtonEdit": "\u05e2\u05e8\u05d5\u05da", "ButtonQueue": "Queue", - "ButtonPlayTrailer": "Play trailer", "ButtonPlaylist": "Playlist", "ButtonPreviousTrack": "Previous Track", "LabelEnabled": "Enabled", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Transcoding", "LabelPlayMethodDirectStream": "Direct Streaming", "LabelPlayMethodDirectPlay": "Direct Playing", + "LabelEpisodeNumber": "Episode number:", "LabelAudioCodec": "Audio: {0}", "LabelVideoCodec": "Video: {0}", "LabelLocalAccessUrl": "Local access: {0}", @@ -307,6 +311,7 @@ "HeaderArtist": "Artist", "LabelAddedOnDate": "Added {0}", "ButtonStart": "Start", + "LabelSeasonNumber": "Season number:", "HeaderChannels": "\u05e2\u05e8\u05d5\u05e6\u05d9\u05dd", "HeaderMediaFolders": "\u05e1\u05e4\u05e8\u05d9\u05d5\u05ea \u05de\u05d3\u05d9\u05d4", "HeaderBlockItemsWithNoRating": "Block content with no rating information:", @@ -335,6 +340,7 @@ "ButtonNextPage": "Next Page", "ButtonPreviousPage": "Previous Page", "ButtonMoveLeft": "Move left", + "OptionReleaseDate": "Release date", "ButtonMoveRight": "Move right", "ButtonBrowseOnlineImages": "Browse online images", "HeaderDeleteItem": "Delete Item", @@ -477,11 +483,8 @@ "PersonTypePerson": "Person", "LabelTitleDisplayOrder": "Title display order:", "OptionSortName": "Sort name", - "OptionReleaseDate": "Release date", - "LabelSeasonNumber": "\u05de\u05e1\u05e4\u05e8 \u05e2\u05d5\u05e0\u05d4:", "LabelDiscNumber": "Disc number", "LabelParentNumber": "Parent number", - "LabelEpisodeNumber": "\u05de\u05e1\u05e4\u05e8 \u05e4\u05e8\u05e7:", "LabelTrackNumber": "Track number:", "LabelNumber": "Number:", "LabelReleaseDate": "Release date:", @@ -712,7 +715,7 @@ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", "HeaderConnectionFailure": "Connection Failure", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", - "ButtonSelectServer": "Select server", + "ButtonSelectServer": "Select Server", "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", "DefaultErrorMessage": "There was an error processing the request. Please try again later.", @@ -740,7 +743,7 @@ "LabelQuality": "Quality:", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", - "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", "LabelItemLimit": "Item limit:", @@ -762,5 +765,45 @@ "ButtonSignInWithConnect": "Sign in with Emby Connect", "HeaderNewServer": "New Server", "MyDevice": "My Device", - "ButtonRemote": "Remote" + "ButtonRemote": "Remote", + "TabInfo": "\u05de\u05d9\u05d3\u05e2", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Advanced", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/hr.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/hr.json index 647e0d760..69704fb2d 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/hr.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/hr.json @@ -38,8 +38,11 @@ "HeaderSupportTheTeam": "Support the Emby Team", "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "TV", + "ButtonCancelSyncJob": "Cancel sync job", "TitleSync": "Sync", + "HeaderSelectDate": "Select Date", "ButtonDonate": "Donate", + "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderMyMedia": "My Media", "TitleNotifications": "Notifications", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", "ButtonTakeTheTour": "Take the tour", "HeaderWelcomeBack": "Welcome back!", "TitlePlugins": "Plugins", "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "ButtonPlayTrailer": "Play trailer", "HeaderLibraryAccess": "Library Access", "HeaderChannelAccess": "Channel Access", "HeaderDeviceAccess": "Device Access", @@ -143,7 +147,6 @@ "ButtonPlay": "Pokreni", "ButtonEdit": "Izmjeni", "ButtonQueue": "Queue", - "ButtonPlayTrailer": "Play trailer", "ButtonPlaylist": "Playlist", "ButtonPreviousTrack": "Prethodna traka", "LabelEnabled": "Enabled", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Transcoding", "LabelPlayMethodDirectStream": "Direct Streaming", "LabelPlayMethodDirectPlay": "Direct Playing", + "LabelEpisodeNumber": "Episode number:", "LabelAudioCodec": "Audio: {0}", "LabelVideoCodec": "Video: {0}", "LabelLocalAccessUrl": "Local access: {0}", @@ -307,6 +311,7 @@ "HeaderArtist": "Artist", "LabelAddedOnDate": "Added {0}", "ButtonStart": "Start", + "LabelSeasonNumber": "Season number:", "HeaderChannels": "Channels", "HeaderMediaFolders": "Medijska mapa", "HeaderBlockItemsWithNoRating": "Block content with no rating information:", @@ -335,6 +340,7 @@ "ButtonNextPage": "Next Page", "ButtonPreviousPage": "Previous Page", "ButtonMoveLeft": "Move left", + "OptionReleaseDate": "Release date", "ButtonMoveRight": "Move right", "ButtonBrowseOnlineImages": "Browse online images", "HeaderDeleteItem": "Delete Item", @@ -477,11 +483,8 @@ "PersonTypePerson": "Person", "LabelTitleDisplayOrder": "Title display order:", "OptionSortName": "Sort name", - "OptionReleaseDate": "Release date", - "LabelSeasonNumber": "Broj sezone:", "LabelDiscNumber": "Disc number", "LabelParentNumber": "Parent number", - "LabelEpisodeNumber": "Broj epizode:", "LabelTrackNumber": "Track number:", "LabelNumber": "Number:", "LabelReleaseDate": "Release date:", @@ -712,7 +715,7 @@ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", "HeaderConnectionFailure": "Connection Failure", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", - "ButtonSelectServer": "Select server", + "ButtonSelectServer": "Select Server", "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", "DefaultErrorMessage": "There was an error processing the request. Please try again later.", @@ -740,7 +743,7 @@ "LabelQuality": "Quality:", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", - "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", "LabelItemLimit": "Item limit:", @@ -762,5 +765,45 @@ "ButtonSignInWithConnect": "Sign in with Emby Connect", "HeaderNewServer": "New Server", "MyDevice": "My Device", - "ButtonRemote": "Remote" + "ButtonRemote": "Remote", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Advanced", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/hu.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/hu.json index 90279b20b..97fce04bc 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/hu.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/hu.json @@ -38,8 +38,11 @@ "HeaderSupportTheTeam": "Support the Emby Team", "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", + "ButtonCancelSyncJob": "Cancel sync job", "TitleSync": "Sync", + "HeaderSelectDate": "Select Date", "ButtonDonate": "Donate", + "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderMyMedia": "My Media", "TitleNotifications": "Notifications", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", "ButtonTakeTheTour": "Take the tour", "HeaderWelcomeBack": "Welcome back!", "TitlePlugins": "Plugins", "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "ButtonPlayTrailer": "Play trailer", "HeaderLibraryAccess": "Library Access", "HeaderChannelAccess": "Channel Access", "HeaderDeviceAccess": "Device Access", @@ -143,7 +147,6 @@ "ButtonPlay": "Play", "ButtonEdit": "Edit", "ButtonQueue": "Queue", - "ButtonPlayTrailer": "Play trailer", "ButtonPlaylist": "Playlist", "ButtonPreviousTrack": "Previous Track", "LabelEnabled": "Enabled", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Transcoding", "LabelPlayMethodDirectStream": "Direct Streaming", "LabelPlayMethodDirectPlay": "Direct Playing", + "LabelEpisodeNumber": "Episode number:", "LabelAudioCodec": "Audio: {0}", "LabelVideoCodec": "Video: {0}", "LabelLocalAccessUrl": "Local access: {0}", @@ -307,6 +311,7 @@ "HeaderArtist": "Artist", "LabelAddedOnDate": "Added {0}", "ButtonStart": "Start", + "LabelSeasonNumber": "Season number:", "HeaderChannels": "Channels", "HeaderMediaFolders": "Media Folders", "HeaderBlockItemsWithNoRating": "Block content with no rating information:", @@ -335,6 +340,7 @@ "ButtonNextPage": "Next Page", "ButtonPreviousPage": "Previous Page", "ButtonMoveLeft": "Move left", + "OptionReleaseDate": "Release date", "ButtonMoveRight": "Move right", "ButtonBrowseOnlineImages": "Browse online images", "HeaderDeleteItem": "Delete Item", @@ -477,11 +483,8 @@ "PersonTypePerson": "Person", "LabelTitleDisplayOrder": "Title display order:", "OptionSortName": "Sort name", - "OptionReleaseDate": "Release date", - "LabelSeasonNumber": "Season number:", "LabelDiscNumber": "Disc number", "LabelParentNumber": "Parent number", - "LabelEpisodeNumber": "Episode number:", "LabelTrackNumber": "Track number:", "LabelNumber": "Number:", "LabelReleaseDate": "Release date:", @@ -712,7 +715,7 @@ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", "HeaderConnectionFailure": "Connection Failure", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", - "ButtonSelectServer": "Select server", + "ButtonSelectServer": "Select Server", "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", "DefaultErrorMessage": "There was an error processing the request. Please try again later.", @@ -740,7 +743,7 @@ "LabelQuality": "Quality:", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", - "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", "LabelItemLimit": "Item limit:", @@ -762,5 +765,45 @@ "ButtonSignInWithConnect": "Sign in with Emby Connect", "HeaderNewServer": "New Server", "MyDevice": "My Device", - "ButtonRemote": "Remote" + "ButtonRemote": "Remote", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Advanced", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json index 645dc5513..ff4bdb0a0 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json @@ -38,8 +38,11 @@ "HeaderSupportTheTeam": "Supporta il Team di Emby", "TextEnjoyBonusFeatures": "Goditi le caratteristiche aggiuntive", "TitleLiveTV": "Tv in diretta", + "ButtonCancelSyncJob": "Cancel sync job", "TitleSync": "Sincronizza", + "HeaderSelectDate": "Seleziona la data", "ButtonDonate": "Donazione", + "LabelRecurringDonationCanBeCancelledHelp": "Donazioni ricorrenti possono essere cancellati in qualsiasi momento dal tuo conto PayPal.", "HeaderMyMedia": "I mei media", "TitleNotifications": "Notifiche", "ErrorLaunchingChromecast": "Si \u00e8 verificato un errore all'avvio di chromecast. Assicurati che il tuo dispositivo sia connesso alla rete wireless.", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "L'iscrizione come supporter garantisce benefici aggiuntivi, come l'accesso alla sincronizzazione, i plugin premium, canali con contenuto internet, e altro ancora. {0}Scopri di pi\u00f9{1}.", "LabelSyncNoTargetsHelp": "Sembra che al momento non avete applicazioni che supportano la sincronizzazione.", "HeaderWelcomeToProjectServerDashboard": "Benvenuto nel Pannello di controllo del Server Emby", - "HeaderWelcomeToProjectWebClient": "Benvenuto nel client web Emby", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", "ButtonTakeTheTour": "Fai una visita", "HeaderWelcomeBack": "Ben tornato!", "TitlePlugins": "Plugin", "ButtonTakeTheTourToSeeWhatsNew": "Fai un tour per vedere cosa \u00e8 cambiato", "MessageNoSyncJobsFound": "Nessuna sincronizzazione pianificata. Creane una utilizzando i pulsanti sull'interfaccia web", + "ButtonPlayTrailer": "Visualizza Trailer", "HeaderLibraryAccess": "Accesso libreria", "HeaderChannelAccess": "Accesso canali", "HeaderDeviceAccess": "Accesso al dispositivo", @@ -143,7 +147,6 @@ "ButtonPlay": "Riproduci", "ButtonEdit": "Modifica", "ButtonQueue": "In coda", - "ButtonPlayTrailer": "Riproduci trailer", "ButtonPlaylist": "Playlist", "ButtonPreviousTrack": "Traccia Precedente", "LabelEnabled": "Abilitato", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Trascodifica", "LabelPlayMethodDirectStream": "Streaming Diretto", "LabelPlayMethodDirectPlay": "Riproduzione Diretta", + "LabelEpisodeNumber": "Episode number:", "LabelAudioCodec": "Audio: {0}", "LabelVideoCodec": "Video: {0}", "LabelLocalAccessUrl": "Accesso locale {0}", @@ -307,6 +311,7 @@ "HeaderArtist": "Artista", "LabelAddedOnDate": "Aggiunto {0}", "ButtonStart": "Avvio", + "LabelSeasonNumber": "Season number:", "HeaderChannels": "Canali", "HeaderMediaFolders": "Cartelle dei media", "HeaderBlockItemsWithNoRating": "Bloccare i contenuti senza informazioni valutazione:", @@ -335,6 +340,7 @@ "ButtonNextPage": "Prossima pagina", "ButtonPreviousPage": "Pagina precedente", "ButtonMoveLeft": "Muovi a sinistra", + "OptionReleaseDate": "data di rilascio", "ButtonMoveRight": "Muovi a destra", "ButtonBrowseOnlineImages": "Sfoglia le immagini Online", "HeaderDeleteItem": "Elimina elemento", @@ -477,11 +483,8 @@ "PersonTypePerson": "Persona", "LabelTitleDisplayOrder": "Titolo mostrato in ordine:", "OptionSortName": "Nome ordinato", - "OptionReleaseDate": "Data di rilascio", - "LabelSeasonNumber": "Numero Stagione:", "LabelDiscNumber": "Disco numero", "LabelParentNumber": "Numero superiore", - "LabelEpisodeNumber": "Numero Episodio :", "LabelTrackNumber": "Traccia numero:", "LabelNumber": "Numero:", "LabelReleaseDate": "Data di rilascio:", @@ -712,7 +715,7 @@ "MessageInvitationSentToNewUser": "Un'email \u00e8 stata inviata a {0} invitandolo a registrarsi a Emby", "HeaderConnectionFailure": "Errore di connessione", "MessageUnableToConnectToServer": "Non siamo in grado di connettersi al server selezionato al momento. Per favore assicurati che sia in esecuzione e riprova.", - "ButtonSelectServer": "Selezionare il server", + "ButtonSelectServer": "Select Server", "MessagePluginConfigurationRequiresLocalAccess": "Per configurare questo plugin si prega di accedere al proprio server locale direttamente.", "MessageLoggedOutParentalControl": "L'accesso \u00e8 attualmente limitato. Si prega di riprovare pi\u00f9 tardi.", "DefaultErrorMessage": "Si \u00e8 verificato un errore durante l'elaborazione della richiesta. Si prega di riprovare pi\u00f9 tardi.", @@ -740,7 +743,7 @@ "LabelQuality": "Qualit\u00e0:", "HeaderSettings": "Configurazione", "OptionAutomaticallySyncNewContent": "Sincronizza automaticamente nuovi contenuti", - "OptionAutomaticallySyncNewContentHelp": "Nuovi contenuti aggiunti a questa categoria viene sincronizzata automaticamente al dispositivo.", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", "OptionSyncUnwatchedVideosOnly": "Sincronizza solo i video non visti", "OptionSyncUnwatchedVideosOnlyHelp": "Solo i video non visti saranno sincronizzati, e video saranno rimossi dal dispositivo in cui sono guardato.", "LabelItemLimit": "limite elementi:", @@ -762,5 +765,45 @@ "ButtonSignInWithConnect": "Sign in with Emby Connect", "HeaderNewServer": "New Server", "MyDevice": "My Device", - "ButtonRemote": "Remote" + "ButtonRemote": "Remote", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Avanzato", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json index 27884a012..b82bd29a7 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json @@ -38,8 +38,11 @@ "HeaderSupportTheTeam": "Support the Emby Team", "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", + "ButtonCancelSyncJob": "Cancel sync job", "TitleSync": "Sync", + "HeaderSelectDate": "Select Date", "ButtonDonate": "Donate", + "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderMyMedia": "My Media", "TitleNotifications": "Notifications", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", @@ -97,7 +100,7 @@ "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", "ButtonTakeTheTour": "Take the tour", "HeaderWelcomeBack": "Welcome back!", "TitlePlugins": "Plugins", @@ -722,7 +725,7 @@ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", "HeaderConnectionFailure": "Connection Failure", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", - "ButtonSelectServer": "Select server", + "ButtonSelectServer": "Select Server", "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", "DefaultErrorMessage": "There was an error processing the request. Please try again later.", @@ -750,7 +753,7 @@ "LabelQuality": "Quality:", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", - "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", "LabelItemLimit": "Item limit:", @@ -772,5 +775,45 @@ "ButtonSignInWithConnect": "Sign in with Emby Connect", "HeaderNewServer": "New Server", "MyDevice": "My Device", - "ButtonRemote": "Remote" + "ButtonRemote": "Remote", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Advanced", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" } diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json index 96297f707..b3b36ebf3 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json @@ -38,15 +38,18 @@ "HeaderSupportTheTeam": "Emby \u0442\u043e\u0431\u044b\u043d \u049b\u043e\u043b\u0434\u0430\u04a3\u044b\u0437", "TextEnjoyBonusFeatures": "\u0421\u044b\u0439\u0430\u049b\u044b \u0435\u0440\u0435\u043a\u0448\u0435\u043b\u0456\u043a\u0442\u0435\u0440\u0434\u0456 \u0442\u0430\u043c\u0430\u0448\u0430\u043b\u0430\u043d\u044b\u04a3\u044b\u0437", "TitleLiveTV": "\u042d\u0444\u0438\u0440\u043b\u0456\u043a \u0422\u0414", + "ButtonCancelSyncJob": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443\u0434\u0456 \u0431\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443", "TitleSync": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443", + "HeaderSelectDate": "\u041a\u04af\u043d\u0434\u0456 \u0442\u0430\u04a3\u0434\u0430\u0443", "ButtonDonate": "\u049a\u0430\u0439\u044b\u0440\u043c\u0430\u043b\u0430\u0443", + "LabelRecurringDonationCanBeCancelledHelp": "\u049a\u0430\u0439\u0442\u0430\u043b\u0430\u043c\u0430 \u049b\u0430\u0439\u044b\u0440\u043c\u0430\u043b\u0434\u044b\u049b\u0442\u0430\u0440 PayPal \u0435\u0441\u0435\u043f \u0448\u043e\u0442\u044b \u0430\u0440\u049b\u044b\u043b\u044b \u04d9\u0440 \u0443\u0430\u049b\u044b\u0442\u0442\u0430 \u0434\u0430 \u0431\u043e\u043b\u0434\u044b\u0440\u044b\u043b\u043c\u0430\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d.", "HeaderMyMedia": "\u041c\u0435\u043d\u0456\u04a3 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456\u043c", "TitleNotifications": "\u0425\u0430\u0431\u0430\u0440\u043b\u0430\u043d\u0434\u044b\u0440\u0443\u043b\u0430\u0440", "ErrorLaunchingChromecast": "Chromecast \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0443 \u043a\u0435\u0437\u0456\u043d\u0434\u0435 \u049b\u0430\u0442\u0435 \u043e\u0440\u044b\u043d \u0430\u043b\u0434\u044b. \u049a\u04b1\u0440\u044b\u043b\u0493\u044b\u04a3\u044b\u0437 \u0441\u044b\u043c\u0441\u044b\u0437 \u0436\u0435\u043b\u0456\u0433\u0435 \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u044b\u043d\u0430 \u043a\u04e9\u0437 \u0436\u0435\u0442\u043a\u0456\u0437\u0456\u04a3\u0456\u0437.", "MessageErrorLoadingSupporterInfo": "\u0416\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u0430\u049b\u043f\u0430\u0440\u0430\u0442\u044b\u043d \u0436\u04af\u043a\u0442\u0435\u0443 \u043a\u0435\u0437\u0456\u043d\u0434\u0435 \u049b\u0430\u0442\u0435 \u043e\u0440\u044b\u043d \u0430\u043b\u0434\u044b. \u04d8\u0440\u0435\u043a\u0435\u0442\u0442\u0456 \u043a\u0435\u0439\u0456\u043d \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u04a3\u044b\u0437.", "MessageLinkYourSupporterKey": "\u041a\u0435\u043b\u0435\u0441\u0456 \u0431\u0430\u0493\u0434\u0430\u0440\u043b\u0430\u043c\u0430\u043b\u0430\u0440\u0493\u0430 \u0442\u0435\u0433\u0456\u043d \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u0434\u044b \u0442\u0430\u043c\u0430\u0448\u0430\u043b\u0430\u0443 \u04af\u0448\u0456\u043d {0} Emby Connect \u043c\u04af\u0448\u0435\u0441\u0456\u043d\u0435 \u0434\u0435\u0439\u0456\u043d \u0431\u0430\u0439\u043b\u0430\u043d\u044b\u0441\u0442\u044b\u0440\u044b\u04a3\u044b\u0437.", "HeaderConfirmRemoveUser": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u0430\u043b\u0430\u0441\u0442\u0430\u0443", - "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Select the device to control by clicking the cast icon in the upper right corner. Swipe down anywhere on this screen to go back to where you came from.", + "MessageSwipeDownOnRemoteControl": "\u049a\u0430\u0448\u044b\u049b\u0442\u0430\u043d \u0431\u0430\u0441\u049b\u0430\u0440\u0443\u0493\u0430 \u049b\u043e\u0448 \u043a\u0435\u043b\u0434\u0456\u04a3\u0456\u0437. \u0411\u0430\u0441\u049b\u0430\u0440\u044b\u043b\u0430\u0442\u044b\u043d \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043d\u044b \u0436\u043e\u0493\u0430\u0440\u044b \u043e\u04a3 \u0431\u04b1\u0440\u044b\u0448\u0442\u0430\u0493\u044b \u0442\u0430\u0440\u0430\u0442\u0443 \u0431\u0435\u043b\u0433\u0456\u0448\u0435\u0441\u0456\u043d \u043d\u04b1\u049b\u044b\u043f \u0442\u0430\u043d\u0434\u0430\u04a3\u044b\u0437. \u041e\u0441\u044b \u044d\u043a\u0440\u0430\u043d\u0434\u044b\u04a3 \u049b\u0430\u0439 \u0436\u0435\u0440\u0456\u043d\u0434\u0435 \u0442\u04e9\u043c\u0435\u043d\u0433\u0435 \u0441\u0438\u043f\u0430\u043f \u043e\u0442\u0456\u043f \u043a\u0435\u043b\u0433\u0435\u043d \u0436\u0435\u0440\u0456\u04a3\u0456\u0437\u0433\u0435 \u049b\u0430\u0439\u0442\u0430 \u043e\u0440\u0430\u043b\u044b\u04a3\u044b\u0437.", "MessageConfirmRemoveConnectSupporter": "\u0428\u044b\u043d\u044b\u043c\u0435\u043d \u043e\u0441\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0434\u0430\u043d \u0436\u0430\u049b\u0442\u0430\u0443\u0448\u044b\u043d\u044b\u04a3 \u049b\u043e\u0441\u044b\u043c\u0448\u0430 \u0430\u0440\u0442\u044b\u049b\u0448\u044b\u043b\u044b\u049b\u0442\u0430\u0440\u044b\u043d \u0430\u043b\u0430\u0441\u0442\u0430\u0443 \u049b\u0430\u0436\u0435\u0442 \u043f\u0435?", "ValueTimeLimitSingleHour": "\u0423\u0430\u049b\u044b\u0442 \u0448\u0435\u0433\u0456: 1 \u0441\u0430\u0493\u0430\u0442", "ValueTimeLimitMultiHour": "\u0423\u0430\u049b\u044b\u0442 \u0448\u0435\u0433\u0456: {0} \u0441\u0430\u0493\u0430\u0442", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "\u0416\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u043c\u04af\u0448\u0435\u043b\u0456\u043a \u049b\u043e\u0441\u044b\u043c\u0448\u0430 \u0430\u0440\u0442\u044b\u049b\u0448\u044b\u043b\u044b\u049b\u0442\u0430\u0440\u0434\u044b (\u043c\u044b\u0441\u0430\u043b\u044b, \u04af\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443\u0433\u0435 \u049b\u0430\u0442\u044b\u043d\u0430\u0443, \u0441\u044b\u0439\u0430\u049b\u044b\u043b\u044b\u049b \u043f\u043b\u0430\u0433\u0438\u043d\u0434\u0435\u0440, \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0430\u0440\u043d\u0430\u0441\u044b\u043d\u044b\u04a3 \u043c\u0430\u0437\u043c\u04b1\u043d\u044b \u0436\u0430\u04a3\u0435 \u0442.\u0431.) \u049b\u0430\u043c\u0442\u0430\u043c\u0430\u0441\u044b\u0437 \u0435\u0442\u0435\u0434\u0456. {0}\u041a\u04e9\u0431\u0456\u0440\u0435\u043a \u0431\u0456\u043b\u0443{1}.", "LabelSyncNoTargetsHelp": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443\u0434\u0456 \u049b\u043e\u043b\u0434\u0430\u0439\u0442\u044b\u043d \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430 \u0442\u0430\u0431\u044b\u043b\u043c\u0430\u0434\u044b.", "HeaderWelcomeToProjectServerDashboard": "Emby Server \u0431\u0430\u049b\u044b\u043b\u0430\u0443 \u0442\u0430\u049b\u0442\u0430\u0441\u044b\u043d\u0430 \u049b\u043e\u0448 \u043a\u0435\u043b\u0434\u0456\u04a3\u0456\u0437!", - "HeaderWelcomeToProjectWebClient": "Emby \u0493\u0430\u043b\u0430\u043c\u0442\u043e\u0440 \u043a\u043b\u0438\u0435\u043d\u0442\u0456\u043d\u0435 \u049b\u043e\u0448 \u043a\u0435\u043b\u0434\u0456\u04a3\u0456\u0437!", + "HeaderWelcomeToProjectWebClient": "Emby \u0456\u0448\u0456\u043d\u0435 \u049b\u043e\u0448 \u043a\u0435\u043b\u0434\u0456\u04a3\u0456\u0437!", "ButtonTakeTheTour": "\u0410\u0440\u0430\u043b\u0430\u043f \u0448\u044b\u0493\u044b\u04a3\u044b\u0437", "HeaderWelcomeBack": "\u049a\u0430\u0439\u0442\u0430 \u043a\u0435\u043b\u0443\u0456\u04a3\u0456\u0437\u0431\u0435\u043d!", "TitlePlugins": "\u041f\u043b\u0430\u0433\u0438\u043d\u0434\u0435\u0440", "ButtonTakeTheTourToSeeWhatsNew": "\u0411\u043e\u043b\u0493\u0430\u043d \u0436\u0430\u04a3\u0430\u043b\u044b\u049b\u0442\u0430\u0440\u043c\u0435\u043d \u0442\u0430\u043d\u044b\u0441\u0443", "MessageNoSyncJobsFound": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u0436\u04b1\u043c\u044b\u0441\u044b \u0442\u0430\u0431\u044b\u043b\u043c\u0430\u0434\u044b. \u0412\u0435\u0431-\u0442\u0456\u043b\u0434\u0435\u0441\u0443\u0434\u0435 \u0442\u0430\u0431\u044b\u043b\u0430\u0442\u044b\u043d \u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u0442\u04af\u0439\u043c\u0435\u0448\u0456\u043a\u0442\u0435\u0440\u0456\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043f \u04af\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u0436\u04b1\u043c\u044b\u0441\u0442\u0430\u0440\u044b\u043d \u0436\u0430\u0441\u0430\u04a3\u044b\u0437.", + "ButtonPlayTrailer": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440\u0434\u0456 \u043e\u0439\u043d\u0430\u0442\u0443", "HeaderLibraryAccess": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u0493\u0430 \u049b\u0430\u0442\u044b\u043d\u0430\u0443", "HeaderChannelAccess": "\u0410\u0440\u043d\u0430\u0493\u0430 \u049b\u0430\u0442\u044b\u043d\u0430\u0443", "HeaderDeviceAccess": "\u049a\u04b1\u0440\u044b\u043b\u0493\u044b\u0493\u0430 \u049b\u0430\u0442\u044b\u043d\u0430\u0443", @@ -143,7 +147,6 @@ "ButtonPlay": "\u041e\u0439\u043d\u0430\u0442\u0443", "ButtonEdit": "\u04e8\u04a3\u0434\u0435\u0443", "ButtonQueue": "\u041a\u0435\u0437\u0435\u043a\u043a\u0435", - "ButtonPlayTrailer": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440\u0434\u0456 \u043e\u0439\u043d\u0430\u0442\u0443", "ButtonPlaylist": "\u041e\u0439\u043d\u0430\u0442\u0443 \u0442\u0456\u0437\u0456\u043c\u0456", "ButtonPreviousTrack": "\u0410\u043b\u0434\u044b\u04a3\u0493\u044b \u0436\u043e\u043b\u0448\u044b\u049b\u049b\u0430", "LabelEnabled": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "\u049a\u0430\u0439\u0442\u0430 \u043a\u043e\u0434\u0442\u0430\u0443\u0434\u0430", "LabelPlayMethodDirectStream": "\u0422\u0456\u043a\u0435\u043b\u0435\u0439 \u0430\u0493\u044b\u043d\u043c\u0435\u043d \u0442\u0430\u0441\u044b\u043c\u0430\u043b\u0434\u0430\u0443\u0434\u0430", "LabelPlayMethodDirectPlay": "\u0422\u0456\u043a\u0435\u043b\u0435\u0439 \u043e\u0439\u043d\u0430\u0442\u0443\u0434\u0430", + "LabelEpisodeNumber": "\u042d\u043f\u0438\u0437\u043e\u0434 \u043d\u04e9\u043c\u0456\u0440\u0456:", "LabelAudioCodec": "\u0414\u044b\u0431\u044b\u0441: {0}", "LabelVideoCodec": "\u0411\u0435\u0439\u043d\u0435: {0}", "LabelLocalAccessUrl": "\u0416\u0435\u0440\u0433\u0456\u043b\u0456\u043a\u0442\u0456 \u049b\u0430\u0442\u044b\u043d\u0430\u0443: {0}", @@ -307,6 +311,7 @@ "HeaderArtist": "\u041e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b", "LabelAddedOnDate": "\u04ae\u0441\u0442\u0435\u043b\u0433\u0435\u043d\u0456 {0}", "ButtonStart": "\u0411\u0430\u0441\u0442\u0430\u0443", + "LabelSeasonNumber": "\u041c\u0430\u0443\u0441\u044b\u043c \u043d\u04e9\u043c\u0456\u0440\u0456:", "HeaderChannels": "\u0410\u0440\u043d\u0430\u043b\u0430\u0440", "HeaderMediaFolders": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448 \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u044b", "HeaderBlockItemsWithNoRating": "\u0416\u0430\u0441\u0442\u044b\u049b \u0441\u0430\u043d\u0430\u0442\u044b \u0436\u043e\u049b \u043c\u0430\u0437\u04b1\u043d\u0434\u044b \u049b\u04b1\u0440\u0441\u0430\u0443\u043b\u0430\u0443:", @@ -335,6 +340,7 @@ "ButtonNextPage": "\u041a\u0435\u043b\u0435\u0441\u0456 \u0431\u0435\u0442\u043a\u0435", "ButtonPreviousPage": "\u0410\u043b\u0434\u044b\u043d\u0493\u044b \u0431\u0435\u0442\u043a\u0435", "ButtonMoveLeft": "\u0421\u043e\u043b\u0493\u0430 \u0436\u044b\u043b\u0436\u044b\u0442\u0443", + "OptionReleaseDate": "\u0428\u044b\u0493\u0430\u0440\u0443 \u043a\u04af\u043d\u0456", "ButtonMoveRight": "\u041e\u04a3\u0493\u0430 \u0436\u044b\u043b\u0436\u044b\u0442\u0443", "ButtonBrowseOnlineImages": "\u0416\u0435\u043b\u0456\u0434\u0435\u0433\u0456 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0434\u0456 \u0448\u043e\u043b\u0443", "HeaderDeleteItem": "\u0422\u0430\u0440\u043c\u0430\u049b\u0442\u044b \u0436\u043e\u044e", @@ -425,7 +431,7 @@ "ButtonViewSeriesRecording": "\u0422\u0435\u043b\u0435\u0445\u0438\u043a\u0430\u044f \u0436\u0430\u0437\u0431\u0430\u0441\u044b\u043d \u049b\u0430\u0440\u0430\u0443", "ValueOriginalAirDate": "\u0411\u0430\u0441\u0442\u0430\u043f\u049b\u044b \u044d\u0444\u0438\u0440: {0}", "ButtonRemoveFromPlaylist": "\u041e\u0439\u043d\u0430\u0442\u0443 \u0442\u0456\u0437\u0456\u043c\u0456\u043d\u0435\u043d \u0430\u043b\u0430\u0441\u0442\u0430\u0443", - "HeaderSpecials": "\u0410\u0440\u043d\u0430\u0439\u044b\u043b\u0430\u0440", + "HeaderSpecials": "\u0410\u0440\u043d\u0430\u0439\u044b \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0434\u0430\u0440", "HeaderTrailers": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440\u043b\u0435\u0440", "HeaderAudio": "\u0414\u044b\u0431\u044b\u0441", "HeaderResolution": "\u0410\u0436\u044b\u0440\u0430\u0442\u044b\u043c\u0434\u044b\u043b\u044b\u0493\u044b", @@ -477,11 +483,8 @@ "PersonTypePerson": "\u0422\u04b1\u043b\u0493\u0430", "LabelTitleDisplayOrder": "\u0422\u0443\u044b\u043d\u0434\u044b \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443 \u0440\u0435\u0442\u0456:", "OptionSortName": "\u0421\u04b1\u0440\u044b\u043f\u0442\u0430\u043b\u0430\u0442\u044b\u043d \u0430\u0442\u044b", - "OptionReleaseDate": "\u0428\u044b\u0493\u0430\u0440\u0443 \u043a\u04af\u043d\u0456", - "LabelSeasonNumber": "\u041c\u0430\u0443\u0441\u044b\u043c \u043d\u04e9\u043c\u0456\u0440\u0456:", "LabelDiscNumber": "\u0414\u0438\u0441\u043a\u0456 \u043d\u04e9\u043c\u0456\u0440\u0456", "LabelParentNumber": "\u0422\u0435\u043a\u0442\u0456\u043a \u043d\u04e9\u043c\u0456\u0440:", - "LabelEpisodeNumber": "\u0411\u04e9\u043b\u0456\u043c \u043d\u04e9\u043c\u0456\u0440\u0456:", "LabelTrackNumber": "\u0416\u043e\u043b\u0448\u044b\u049b \u043d\u04e9\u043c\u0456\u0440\u0456:", "LabelNumber": "\u041d\u04e9\u043c\u0456\u0440\u0456:", "LabelReleaseDate": "\u0428\u044b\u0493\u0430\u0440\u0443 \u043a\u04af\u043d\u0456:", @@ -740,7 +743,7 @@ "LabelQuality": "\u0421\u0430\u043f\u0430\u0441\u044b:", "HeaderSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440", "OptionAutomaticallySyncNewContent": "\u0416\u0430\u04a3\u0430 \u043c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b \u04af\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443", - "OptionAutomaticallySyncNewContentHelp": "\u041e\u0441\u044b \u0441\u0430\u043d\u0430\u0442\u049b\u0430 \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d \u0436\u0430\u04a3\u0430 \u043c\u0430\u0437\u043c\u04b1\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u049b\u04b1\u0440-\u043c\u0435\u043d \u04af\u043d\u0434-\u0434\u0456.", + "OptionAutomaticallySyncNewContentHelp": "\u0416\u0430\u04a3\u0430\u0434\u0430\u043d \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d \u043c\u0430\u0437\u043c\u04b1\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u043e\u0441\u044b \u049b\u04b1\u0440-\u043c\u0435\u043d \u04af\u043d\u0434-\u0434\u0456.", "OptionSyncUnwatchedVideosOnly": "\u049a\u0430\u0440\u0430\u043b\u043c\u0430\u0493\u0430\u043d \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440\u0434\u0456 \u04af\u043d\u0434-\u0456\u0440\u0443", "OptionSyncUnwatchedVideosOnlyHelp": "\u0422\u0435\u043a \u049b\u0430\u043d\u0430 \u049b\u0430\u0440\u0430\u043b\u043c\u0430\u0493\u0430\u043d \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440 \u04af\u043d\u0434-\u0434\u0456, \u049b\u0430\u0440\u0430\u043b\u0493\u0430\u043d\u043d\u0430\u043d \u043a\u0435\u0439\u0456\u043d \u049b\u04b1\u0440-\u0434\u0430\u043d \u0430\u043b\u0430\u0441\u0442\u0430\u043b\u0430\u0434\u044b.", "LabelItemLimit": "\u0422\u0430\u0440\u043c\u0430\u049b\u0442\u0430\u0440 \u0448\u0435\u0433\u0456:", @@ -757,10 +760,50 @@ "SyncJobItemStatusCancelled": "\u0411\u043e\u043b\u0434\u044b\u0440\u044b\u043b\u043c\u0430\u0434\u044b", "LabelProfile": "\u041f\u0440\u043e\u0444\u0430\u0439\u043b:", "LabelBitrateMbps": "\u049a\u0430\u0440\u049b\u044b\u043d\u044b (\u041c\u0431\u0438\u0442\/\u0441):", - "EmbyIntroDownloadMessage": "To download and install Emby Server visit {0}.", - "ButtonNewServer": "New Server", - "ButtonSignInWithConnect": "Sign in with Emby Connect", - "HeaderNewServer": "New Server", - "MyDevice": "My Device", - "ButtonRemote": "Remote" + "EmbyIntroDownloadMessage": "Emby Server \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443 \u043c\u0435\u043d \u043e\u0440\u043d\u0430\u0442\u0443 \u04af\u0448\u0456\u043d {0} \u0431\u0430\u0440\u044b\u043f \u0448\u044b\u0493\u044b\u04a3\u044b\u0437.", + "ButtonNewServer": "\u0416\u0430\u04a3\u0430 \u0441\u0435\u0440\u0432\u0435\u0440", + "ButtonSignInWithConnect": "Emby Connect \u0430\u0440\u049b\u044b\u043b\u044b \u049b\u043e\u0441\u044b\u043b\u0443", + "HeaderNewServer": "\u0416\u0430\u04a3\u0430 \u0441\u0435\u0440\u0432\u0435\u0440", + "MyDevice": "\u041c\u0435\u043d\u0456\u04a3 \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043c", + "ButtonRemote": "\u0411\u0430\u0441\u049b\u0430\u0440\u0443", + "TabInfo": "\u041f\u0440\u043e\u0444\u0430\u0439\u043b \u0442\u0443\u0440\u0430\u043b\u044b", + "TabCast": "\u0420\u04e9\u043b\u0434\u0435\u0440", + "TabScenes": "\u0421\u0430\u0445\u043d\u0430\u043b\u0430\u0440", + "HeaderUnlockApp": "\u049a\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u043d\u044b \u049b\u04b1\u0440\u0441\u0430\u0443\u0434\u0430\u043d \u0431\u043e\u0441\u0430\u0442\u0443", + "MessageUnlockAppWithPurchase": "\u0428\u0430\u0493\u044b\u043d \u0431\u0456\u0440 \u0436\u043e\u043b\u0493\u044b \u0441\u0430\u0442\u044b\u043f \u0430\u043b\u0443 \u0430\u0440\u049b\u044b\u043b\u044b \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u043d\u044b\u04a3 \u0442\u043e\u043b\u044b\u049b \u043c\u04af\u043c\u043a\u0456\u043d\u0434\u0456\u043a\u0442\u0435\u0440 \u049b\u04b1\u0440\u0441\u0430\u0443\u044b\u043d \u0431\u043e\u0441\u0430\u0442\u0443.", + "MessageUnlockAppWithPurchaseOrSupporter": "\u0428\u0430\u0493\u044b\u043d \u0431\u0456\u0440 \u0436\u043e\u043b\u0493\u044b \u0441\u0430\u0442\u044b\u043f \u0430\u043b\u0443 \u0430\u0440\u049b\u044b\u043b\u044b, \u043d\u0435\u043c\u0435\u0441\u0435 \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456 Emby \u0436\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u043c\u04af\u0448\u0435\u043b\u0456\u0433\u0456\u043c\u0435\u043d \u043a\u0456\u0440\u0456\u043f \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u043d\u044b\u04a3 \u0442\u043e\u043b\u044b\u049b \u043c\u04af\u043c\u043a\u0456\u043d\u0434\u0456\u043a\u0442\u0435\u0440 \u049b\u04b1\u0440\u0441\u0430\u0443\u044b\u043d \u0431\u043e\u0441\u0430\u0442\u0443.", + "MessageUnlockAppWithSupporter": "\u0411\u0435\u043b\u0441\u0435\u043d\u0434\u0456 Emby \u0436\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u043c\u04af\u0448\u0435\u043b\u0456\u0433\u0456\u043c\u0435\u043d \u043a\u0456\u0440\u0456\u043f \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u043d\u044b\u04a3 \u0442\u043e\u043b\u044b\u049b \u043c\u04af\u043c\u043a\u0456\u043d\u0434\u0456\u043a\u0442\u0435\u0440 \u049b\u04b1\u0440\u0441\u0430\u0443\u044b\u043d \u0431\u043e\u0441\u0430\u0442\u0443.", + "MessageToValidateSupporter": "\u0415\u0433\u0435\u0440 \u0441\u0456\u0437\u0434\u0435 \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456 Emby \u0436\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u043c\u04af\u0448\u0435\u043b\u0456\u0433\u0456 \u0431\u043e\u043b\u0441\u0430, \u04e9\u0437 \u04af\u0439\u0456\u04a3\u0456\u0437\u0434\u0456\u04a3 \u0436\u0435\u043b\u0456\u0441\u0456\u043d\u0435 Wifi \u0431\u0430\u0439\u043b\u0430\u043d\u044b\u0441\u0442\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043f \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u0493\u0430 \u0436\u0430\u0439 \u0493\u0430\u043d\u0430 \u043a\u0456\u0440\u0456\u04a3\u0456\u0437.", + "MessagePaymentServicesUnavailable": "\u0422\u04e9\u043b\u0435\u043c \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440\u0456 \u049b\u0430\u0437\u0456\u0440\u0433\u0456 \u0443\u0430\u049b\u044b\u0442\u0442\u0430 \u049b\u043e\u043b \u0436\u0435\u0442\u0456\u043c\u0434\u0456 \u0435\u043c\u0435\u0441. \u04d8\u0440\u0435\u043a\u0435\u0442\u0442\u0456 \u043a\u0435\u0439\u0456\u043d \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u04a3\u044b\u0437.", + "ButtonUnlockWithSupporter": "Emby \u0436\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u043c\u04af\u0448\u0435\u043b\u0456\u0433\u0456\u043c\u0435\u043d \u043a\u0456\u0440\u0443", + "MessagePleaseSignInLocalNetwork": "\u041e\u0440\u044b\u043d\u0434\u0430\u043c\u0430\u0441 \u0431\u04b1\u0440\u044b\u043d, \u0436\u0435\u0440\u0433\u0456\u043b\u0456\u043a\u0442\u0456 \u0436\u0435\u043b\u0456\u0433\u0435 Wifi \u043d\u0435\u043c\u0435\u0441\u0435 LAN \u0431\u0430\u0439\u043b\u0430\u043d\u044b\u0441\u044b\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043f \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u044b\u04a3\u044b\u0437\u0434\u044b \u049b\u0430\u043c\u0442\u0430\u043c\u0430\u0441\u044b\u0437 \u0435\u0442\u0456\u04a3\u0456\u0437.", + "ButtonUnlockWithPurchase": "\u0421\u0430\u0442\u044b\u043f \u0430\u043b\u0443\u043c\u0435\u043d \u049b\u04b1\u0440\u0441\u0430\u0443\u0434\u0430\u043d \u0431\u043e\u0441\u0430\u0442\u0443", + "ButtonUnlockPrice": "{0} \u049b\u04b1\u043b\u044b\u043f\u0442\u0430\u043c\u0430\u0443", + "MessageLiveTvGuideRequiresUnlock": "\u042d\u0444\u0438\u0440\u043b\u0456\u043a \u0422\u0414 \u0430\u043d\u044b\u049b\u0442\u0430\u0493\u044b\u0448\u044b \u049b\u0430\u0437\u0456\u0440\u0433\u0456 \u0443\u0430\u049b\u044b\u0442\u0442\u0430 {0} \u0430\u0440\u043d\u0430\u043b\u0430\u0440 \u0448\u0435\u043a\u0442\u0435\u043b\u0435\u0434\u0456. \u0422\u043e\u043b\u044b\u049b \u0442\u04d9\u0436\u0440\u0438\u0431\u0435\u0441\u0456\u043d \u04af\u0439\u0440\u0435\u043d\u0443 \u04af\u0448\u0456\u043d \u049a\u04b1\u0440\u0441\u0430\u0443\u044b\u043d \u0431\u043e\u0441\u0430\u0442\u0443 \u0442\u04af\u0439\u043c\u0435\u0448\u0456\u0433\u0456\u043d \u0431\u0430\u0441\u044b\u04a3\u044b\u0437.", + "OptionEnableFullscreen": "\u0422\u043e\u043b\u044b\u049b \u044d\u043a\u0440\u0430\u043d\u0434\u044b \u049b\u043e\u0441\u0443", + "ButtonServer": "\u0421\u0435\u0440\u0432\u0435\u0440", + "HeaderAdmin": "\u0411\u0430\u0441\u049b\u0430\u0440\u0443", + "HeaderLibrary": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430", + "HeaderMedia": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440", + "ButtonInbox": "\u041a\u0456\u0440\u0435\u0441\u0456\u043d", + "HeaderAdvanced": "\u041a\u0435\u04a3\u0435\u0439\u0442\u0456\u043b\u0433\u0435\u043d", + "HeaderGroupVersions": "\u041d\u04b1\u0441\u049b\u0430\u043b\u0430\u0440\u0434\u044b \u0442\u043e\u043f\u0442\u0430\u0441\u0442\u044b\u0440\u0443", + "HeaderSaySomethingLike": "\u041e\u0441\u044b\u043d\u0434\u0430\u0439 \u0441\u0438\u044f\u049b\u0442\u044b\u043d\u044b \u0430\u0439\u0442\u044b\u04a3\u044b\u0437...", + "ButtonTryAgain": "\u04d8\u0440\u0435\u043a\u0435\u0442\u0442\u0456 \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u0443", + "HeaderYouSaid": "\u0421\u0456\u0437 \u0430\u0439\u0442\u049b\u0430\u043d\u044b\u04a3\u044b\u0437...", + "MessageWeDidntRecognizeCommand": "\u041e\u0441\u044b\u043d\u0434\u0430\u0439 \u043f\u04d9\u0440\u043c\u0435\u043d\u0434\u0456 \u0442\u0430\u043d\u044b\u043f \u0430\u0439\u044b\u0440\u043c\u0430\u0434\u044b\u049b.", + "MessageIfYouBlockedVoice": "\u0415\u0433\u0435\u0440 \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u0493\u0430 \u0434\u0430\u0443\u044b\u0441\u0442\u044b\u049b \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u0434\u0430\u043d \u0431\u0430\u0441 \u0442\u0430\u0440\u0442\u0441\u0430\u04a3\u044b\u0437, \u049b\u0430\u0439\u0442\u0430 \u04d9\u0440\u0435\u043a\u0435\u0442\u0442\u0435\u043d\u0443\u0456\u04a3\u0456\u0437\u0434\u0435\u043d \u0430\u043b\u0434\u044b\u043d\u0430\u043d \u049b\u0430\u0439\u0442\u0430 \u0442\u0435\u04a3\u0448\u0435\u0443\u0456\u04a3\u0456\u0437 \u049b\u0430\u0436\u0435\u0442 \u0431\u043e\u043b\u0430\u0434\u044b.", + "MessageNoItemsFound": "\u0415\u0448\u049b\u0430\u043d\u0434\u0430\u0439 \u0442\u0430\u0440\u043c\u0430\u049b\u0442\u0430\u0440 \u0442\u0430\u0431\u044b\u043b\u043c\u0430\u0434\u044b.", + "ButtonManageServer": "\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u0431\u0430\u0441\u049b\u0430\u0440\u0443", + "ButtonPreferences": "\u0422\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440", + "ButtonViewArtist": "\u041e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043d\u044b \u049b\u0430\u0440\u0430\u0443", + "ButtonViewAlbum": "\u0410\u043b\u044c\u0431\u043e\u043c\u0434\u044b \u049b\u0430\u0440\u0430\u0443", + "ErrorMessagePasswordNotMatchConfirm": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437 \u0431\u0435\u043d \u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437 \u0440\u0430\u0441\u0442\u0430\u0443 \u04e9\u0440\u0456\u0441\u0442\u0435\u0440\u0456 \u0441\u04d9\u0439\u043a\u0435\u0441 \u0431\u043e\u043b\u0443\u044b \u049b\u0430\u0436\u0435\u0442.", + "ErrorMessageUsernameInUse": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0430\u0442\u044b \u04d9\u043b\u0434\u0435\u049b\u0430\u0448\u0430\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043b\u0443\u0434\u0430. \u0416\u0430\u04a3\u0430 \u0430\u0442\u044b\u043d \u0442\u0430\u04a3\u0434\u0430\u04a3\u044b\u0437 \u0434\u0430 \u04d9\u0440\u0435\u043a\u0435\u0442\u0442\u0456 \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u04a3\u044b\u0437.", + "ErrorMessageEmailInUse": "\u042d-\u043f\u043e\u0448\u0442\u0430 \u043c\u0435\u043a\u0435\u043d\u0436\u0430\u0439\u044b \u04d9\u043b\u0434\u0435\u049b\u0430\u0448\u0430\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043b\u0443\u0434\u0430. \u0416\u0430\u04a3\u0430 \u042d-\u043f\u043e\u0448\u0442\u0430 \u043c\u0435\u043a\u0435\u043d\u0436\u0430\u0439\u044b\u043d \u0442\u0430\u04a3\u0434\u0430\u04a3\u044b\u0437 \u0434\u0430 \u04d9\u0440\u0435\u043a\u0435\u0442\u0442\u0456 \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u04a3\u044b\u0437, \u043d\u0435\u043c\u0435\u0441\u0435 \u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0456 \u0435\u0441\u043a\u0435 \u0441\u0430\u043b\u0443 \u043c\u04af\u043c\u043a\u0456\u043d\u0434\u0456\u0433\u0456\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u04a3\u044b\u0437.", + "MessageThankYouForConnectSignUp": "Emby Connect \u04af\u0448\u0456\u043d \u0442\u0456\u0440\u043a\u0435\u043b\u0433\u0435\u043d\u0433\u0435 \u0430\u043b\u0493\u044b\u0441. \u041c\u0435\u043a\u0435\u043d\u0436\u0430\u0439\u044b\u04a3\u044b\u0437\u0493\u0430 \u0436\u0456\u0431\u0435\u0440\u0456\u043b\u0435\u0442\u0456\u043d \u042d-\u043f\u043e\u0448\u0442\u0430 \u0445\u0430\u0431\u0430\u0440\u044b\u043d\u0434\u0430 \u0436\u0430\u04a3\u0430 \u0442\u0456\u0440\u043a\u0435\u043b\u0433\u0456\u04a3\u0456\u0437\u0434\u0456 \u049b\u0430\u043b\u0430\u0439 \u0440\u0430\u0441\u0442\u0430\u0443 \u0442\u0443\u0440\u0430\u043b\u044b \u043d\u04b1\u0441\u049b\u0430\u0443\u043b\u0430\u0440 \u0431\u043e\u043b\u0430\u0434\u044b. \u041a\u0456\u0440\u0443 \u04af\u0448\u0456\u043d \u0442\u0456\u0440\u043a\u0435\u043b\u0433\u0456\u043d\u0456 \u0440\u0430\u0441\u0442\u0430\u04a3\u044b\u0437 \u0436\u04d9\u043d\u0435 \u043a\u0435\u0439\u0456\u043d \u043e\u0441\u044b\u043d\u0434\u0430 \u049b\u0430\u0439\u0442\u0430 \u043e\u0440\u0430\u043b\u044b\u04a3\u044b\u0437.", + "HeaderShare": "\u041e\u0440\u0442\u0430\u049b\u0442\u0430\u0441\u0443", + "ButtonShareHelp": "\u04d8\u043b\u0435\u0443\u043c\u0435\u0442\u0442\u0456\u043a \u0436\u0435\u043b\u0456\u043b\u0435\u0440\u0456\u043c\u0435\u043d \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u0442\u0443\u0440\u0430\u043b\u044b \u0430\u049b\u043f\u0430\u0440\u0430\u0442\u0442\u044b \u049b\u0430\u043c\u0442\u0438\u0442\u044b\u043d \u0432\u0435\u0431-\u0431\u0435\u0442\u0456\u043c\u0435\u043d \u043e\u0440\u0442\u0430\u049b\u0442\u0430\u0441\u0443. \u0422\u0430\u0441\u044b\u0493\u044b\u0448 \u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b \u0435\u0448\u049b\u0430\u0448\u0430\u043d \u043e\u0440\u0442\u0430\u049b \u0436\u0430\u0440\u0438\u044f\u043b\u0430\u043d\u0431\u0430\u0439\u0434\u044b.", + "ButtonShare": "\u041e\u0440\u0442\u0430\u049b\u0442\u0430\u0441\u0443", + "HeaderConfirm": "\u0420\u0430\u0441\u0442\u0430\u0443" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json index 4ac3138f2..4ca416c2c 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json @@ -38,8 +38,11 @@ "HeaderSupportTheTeam": "Support the Emby Team", "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", + "ButtonCancelSyncJob": "Cancel sync job", "TitleSync": "Sync", + "HeaderSelectDate": "Select Date", "ButtonDonate": "Donate", + "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderMyMedia": "My Media", "TitleNotifications": "Notifications", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", "ButtonTakeTheTour": "Take the tour", "HeaderWelcomeBack": "Welcome back!", "TitlePlugins": "Plugins", "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "ButtonPlayTrailer": "Play trailer", "HeaderLibraryAccess": "Library Access", "HeaderChannelAccess": "Channel Access", "HeaderDeviceAccess": "Device Access", @@ -143,7 +147,6 @@ "ButtonPlay": "Play", "ButtonEdit": "Edit", "ButtonQueue": "Queue", - "ButtonPlayTrailer": "Play trailer", "ButtonPlaylist": "Playlist", "ButtonPreviousTrack": "Previous Track", "LabelEnabled": "Enabled", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Transcoding", "LabelPlayMethodDirectStream": "Direct Streaming", "LabelPlayMethodDirectPlay": "Direct Playing", + "LabelEpisodeNumber": "Episode number:", "LabelAudioCodec": "Audio: {0}", "LabelVideoCodec": "Video: {0}", "LabelLocalAccessUrl": "Local access: {0}", @@ -307,6 +311,7 @@ "HeaderArtist": "Artist", "LabelAddedOnDate": "Added {0}", "ButtonStart": "Start", + "LabelSeasonNumber": "Season number:", "HeaderChannels": "Channels", "HeaderMediaFolders": "Media Folders", "HeaderBlockItemsWithNoRating": "Block content with no rating information:", @@ -335,6 +340,7 @@ "ButtonNextPage": "Next Page", "ButtonPreviousPage": "Previous Page", "ButtonMoveLeft": "Move left", + "OptionReleaseDate": "Release date", "ButtonMoveRight": "Move right", "ButtonBrowseOnlineImages": "Browse online images", "HeaderDeleteItem": "Delete Item", @@ -477,11 +483,8 @@ "PersonTypePerson": "Person", "LabelTitleDisplayOrder": "Title display order:", "OptionSortName": "Sort name", - "OptionReleaseDate": "Release date", - "LabelSeasonNumber": "Season number:", "LabelDiscNumber": "Disc number", "LabelParentNumber": "Parent number", - "LabelEpisodeNumber": "Episode number:", "LabelTrackNumber": "Track number:", "LabelNumber": "Number:", "LabelReleaseDate": "Release date:", @@ -712,7 +715,7 @@ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", "HeaderConnectionFailure": "Connection Failure", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", - "ButtonSelectServer": "Select server", + "ButtonSelectServer": "Select Server", "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", "DefaultErrorMessage": "There was an error processing the request. Please try again later.", @@ -740,7 +743,7 @@ "LabelQuality": "Quality:", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", - "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", "LabelItemLimit": "Item limit:", @@ -762,5 +765,45 @@ "ButtonSignInWithConnect": "Sign in with Emby Connect", "HeaderNewServer": "New Server", "MyDevice": "My Device", - "ButtonRemote": "Remote" + "ButtonRemote": "Remote", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Advanced", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json index cdeaecc83..6d60c6250 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json @@ -6,8 +6,8 @@ "Administrator": "Administrator", "Password": "Passord", "DeleteImage": "Slett bilde", - "MessageThankYouForSupporting": "Thank you for supporting Emby.", - "MessagePleaseSupportProject": "Please support Emby.", + "MessageThankYouForSupporting": "Takk for at du st\u00f8tter Emby.", + "MessagePleaseSupportProject": "Vennligst st\u00f8tt Emby.", "DeleteImageConfirmation": "Er du sikker p\u00e5 at du vil slette bildet?", "FileReadCancelled": "Lesing av filen kansellert.", "FileNotFound": "Fil ikke funnet", @@ -35,32 +35,35 @@ "HeaderConfirmation": "Bekreftelse", "MessageKeyUpdated": "Takk. Din supportern\u00f8kkel har blitt oppdatert.", "MessageKeyRemoved": "Takk. Din supportern\u00f8kkel har blitt fjernet.", - "HeaderSupportTheTeam": "Support the Emby Team", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", + "HeaderSupportTheTeam": "St\u00f8tt Emby teamet!", + "TextEnjoyBonusFeatures": "Nyt bonusfunksjonene", "TitleLiveTV": "Live TV", + "ButtonCancelSyncJob": "Cancel sync job", "TitleSync": "Synk", + "HeaderSelectDate": "Velg dato", "ButtonDonate": "Don\u00e9r", - "HeaderMyMedia": "My Media", + "LabelRecurringDonationCanBeCancelledHelp": "Gjentakende donasjoner kan avbrytes n\u00e5r som helst fra din PayPal-konto.", + "HeaderMyMedia": "Mine media", "TitleNotifications": "Beskjeder", "ErrorLaunchingChromecast": "Det var en feil ved start av Chromecast. Vennligst forsikre deg om at enheten har korrekt forbindelse til ditt tr\u00e5dl\u00f8se nettverk.", - "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageErrorLoadingSupporterInfo": "Det oppstod en feil under innlasting supporterinformasjon. Vennligst pr\u00f8v igjen senere.", "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Emby Connect members to enjoy free access to the following apps:", - "HeaderConfirmRemoveUser": "Remove User", + "HeaderConfirmRemoveUser": "Fjern bruker", "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Select the device to control by clicking the cast icon in the upper right corner. Swipe down anywhere on this screen to go back to where you came from.", "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", - "ValueTimeLimitSingleHour": "Time limit: 1 hour", - "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "ValueTimeLimitSingleHour": "Tidsgrense: 1 time", + "ValueTimeLimitMultiHour": "Tidsgrense: {0} time", "HeaderUsers": "Brukere", - "PluginCategoryGeneral": "General", - "PluginCategoryContentProvider": "Content Providers", - "PluginCategoryScreenSaver": "Screen Savers", - "PluginCategoryTheme": "Themes", - "PluginCategorySync": "Sync", - "PluginCategorySocialIntegration": "Social Networks", - "PluginCategoryNotifications": "Notifications", + "PluginCategoryGeneral": "Generelt", + "PluginCategoryContentProvider": "Innholdstilbydere", + "PluginCategoryScreenSaver": "Skjermspar", + "PluginCategoryTheme": "Temaer", + "PluginCategorySync": "Synk", + "PluginCategorySocialIntegration": "Sosiale nettverk", + "PluginCategoryNotifications": "Varslinger", "PluginCategoryMetadata": "Metadata", "PluginCategoryLiveTV": "Live TV", - "PluginCategoryChannel": "Channels", + "PluginCategoryChannel": "Kanaler", "HeaderSearch": "S\u00f8k", "ValueDateCreated": "Dato opprettet: {0}", "LabelArtist": "Artist", @@ -96,13 +99,14 @@ "ConfirmMessageScheduledTaskButton": "Dette kj\u00f8res vanligvis automatisk som en planlagt oppgave. Den kan ogs\u00e5 kj\u00f8res manuelt herfra. For \u00e5 konfigurere planlagte oppgaver, se:", "HeaderSupporterBenefit": "St\u00f8ttemedlemskap gir ytterligere fordeler som for eksempel tilgang til synkronisering, premium plugins, internett-kanaler og mer. {0}L\u00e6r mer{1}.", "LabelSyncNoTargetsHelp": "Det ser ikke ut til at du har noen applikasjoner som st\u00f8tter synkronisering.", - "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", + "HeaderWelcomeToProjectServerDashboard": "Velkommen til Emby Server Dashboard", + "HeaderWelcomeToProjectWebClient": "Velkommen til Emby", "ButtonTakeTheTour": "Bli med p\u00e5 omvisning", "HeaderWelcomeBack": "Velkommen tilbake!", - "TitlePlugins": "Plugins", + "TitlePlugins": "Programtillegg", "ButtonTakeTheTourToSeeWhatsNew": "Ta en titt p\u00e5 hva som er nytt", "MessageNoSyncJobsFound": "Ingen synkroniseringsjobber funnet. Opprett en synkroniseringsjobb ved hjelp av Synkroniseringsknappene i biblioteket", + "ButtonPlayTrailer": "Spill trailer", "HeaderLibraryAccess": "Bibliotek tilgang", "HeaderChannelAccess": "Kanal tilgang", "HeaderDeviceAccess": "Enhetstilgang", @@ -121,11 +125,11 @@ "LabelVersionInstalled": "{0} installert.", "LabelNumberReviews": "{0} Anmeldelser", "LabelFree": "Gratis", - "HeaderPlaybackError": "Playback Error", - "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", - "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", - "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", + "HeaderPlaybackError": "Avspillingsfeil", + "MessagePlaybackErrorNotAllowed": "Du er for \u00f8yeblikket ikke autorisert til \u00e5 spille dette innholdet. Ta kontakt med systemadministratoren for mer informasjon.", + "MessagePlaybackErrorNoCompatibleStream": "Ingen kompatible streamer er tilgjengelig for \u00f8yeblikket. Vennligst pr\u00f8v igjen senere eller kontakt systemadministratoren for mer informasjon.", + "MessagePlaybackErrorRateLimitExceeded": "Avspillingshastighet grensen er overskredet. Ta kontakt med systemadministratoren for mer informasjon.", + "MessagePlaybackErrorPlaceHolder": "Valgt innholdet, kan ikke avspilles fra denne enheten.", "HeaderSelectAudio": "Velg Lyd", "HeaderSelectSubtitles": "Velg Undertekst", "ButtonMarkForRemoval": "Fjern fra enheten.", @@ -143,7 +147,6 @@ "ButtonPlay": "Spill", "ButtonEdit": "Rediger", "ButtonQueue": "K\u00f8", - "ButtonPlayTrailer": "Spill trailer", "ButtonPlaylist": "Spilleliste", "ButtonPreviousTrack": "Forrige Spor", "LabelEnabled": "Aktivert", @@ -180,8 +183,8 @@ "OptionFriday": "Fredag", "OptionSaturday": "L\u00f8rdag", "OptionEveryday": "Hver dag", - "OptionWeekend": "Weekends", - "OptionWeekday": "Weekdays", + "OptionWeekend": "Helger", + "OptionWeekday": "Ukedager", "HeaderConfirmDeletion": "Bekreft Kansellering", "MessageConfirmPathSubstitutionDeletion": "Er du sikker p\u00e5 at du vil slette sti erstatter?", "LiveTvUpdateAvailable": "(Oppdatering tilgjengelig)", @@ -199,11 +202,11 @@ "HeaderSplitMedia": "Del Media Fra Hverandre", "MessageConfirmSplitMedia": "Er du sikker at du vil splitte mediakilden i separerte elementer?", "HeaderError": "Feil", - "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", + "MessageChromecastConnectionError": "Chromecastmottakeren din klarer ikke \u00e5 koble til Emby Server. Vennligst sjekk deres internettforbindelser og pr\u00f8v igjen.", "MessagePleaseSelectOneItem": "Vennligst velg minst ett element.", "MessagePleaseSelectTwoItems": "Vennligst velg minst to elementer.", "MessageTheFollowingItemsWillBeGrouped": "F\u00f8lgende titler vil bli gruppert til ett element:", - "MessageConfirmItemGrouping": "Emby apps will automatically choose the optimal version to play based on device and network performance. Are you sure you wish to continue?", + "MessageConfirmItemGrouping": "Emby apps vil automatisk velge den optimale versjonen for \u00e5 spille av, basert p\u00e5 enheten og nettverksytelse. Er du sikker p\u00e5 at du vil fortsette?", "HeaderResume": "Fortsette", "HeaderMyViews": "Mitt Syn", "HeaderLibraryFolders": "Media Mapper", @@ -251,8 +254,8 @@ "OrganizePatternResult": "Resultat: {0}", "HeaderRestart": "Omstart", "HeaderShutdown": "Sl\u00e5 Av", - "MessageConfirmRestart": "Are you sure you wish to restart Emby Server?", - "MessageConfirmShutdown": "Are you sure you wish to shutdown Emby Server?", + "MessageConfirmRestart": "Er du sikker p\u00e5 at du vil starte Emby Server p\u00e5 ny?", + "MessageConfirmShutdown": "Er du sikker p\u00e5 at du vil avslutte Emby Server", "ButtonUpdateNow": "Oppdater N\u00e5", "ValueItemCount": "{0} element", "ValueItemCountPlural": "{0} elementer", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Transcoding", "LabelPlayMethodDirectStream": "Direkte Streaming", "LabelPlayMethodDirectPlay": "Direkte Avspilling", + "LabelEpisodeNumber": "Episode number:", "LabelAudioCodec": "Lyd: {0}", "LabelVideoCodec": "Video: {0}", "LabelLocalAccessUrl": "Lokal tilgang: {0}", @@ -307,6 +311,7 @@ "HeaderArtist": "Artist", "LabelAddedOnDate": "Lagt til {0}", "ButtonStart": "Start", + "LabelSeasonNumber": "Season number:", "HeaderChannels": "Kanaler", "HeaderMediaFolders": "Mediemapper", "HeaderBlockItemsWithNoRating": "Blokker innhold uten rating:", @@ -335,6 +340,7 @@ "ButtonNextPage": "Neste Side", "ButtonPreviousPage": "Forrige Side", "ButtonMoveLeft": "Flytt til venstre", + "OptionReleaseDate": "Utgivelsesdato", "ButtonMoveRight": "Flytt til h\u00f8yre", "ButtonBrowseOnlineImages": "Bla igjennom bilder online", "HeaderDeleteItem": "Slett element", @@ -477,11 +483,8 @@ "PersonTypePerson": "Person", "LabelTitleDisplayOrder": "Tittel visnings rekkef\u00f8lge:", "OptionSortName": "Sorterings navn", - "OptionReleaseDate": "Lanseringsdato", - "LabelSeasonNumber": "Sesong nummer:", "LabelDiscNumber": "Disk nummer", "LabelParentNumber": "Forelder-ID", - "LabelEpisodeNumber": "Episode nummer:", "LabelTrackNumber": "Spor nummer:", "LabelNumber": "Nummer:", "LabelReleaseDate": "Utgivelsesdato:", @@ -536,17 +539,17 @@ "MessageInstallPluginFromApp": "Dette programtillegget m\u00e5 installeres direkte i appen du har tenkt \u00e5 bruke den i.", "ValuePriceUSD": "Pris: {0} (USD)", "MessageFeatureIncludedWithSupporter": "Du er registrert for denne funksjonen, og vil kunne fortsette \u00e5 bruke den med et aktiv supporter medlemskap.", - "MessageChangeRecurringPlanConfirm": "After completing this transaction you will need to cancel your previous recurring donation from within your PayPal account. Thank you for supporting Emby.", + "MessageChangeRecurringPlanConfirm": "Etter \u00e5 ha fullf\u00f8rt denne transaksjonen vil du m\u00e5tte avbestille din forrige gjentagende donasjon fra din PayPal-konto. Takk for at du st\u00f8tter Emby.", "MessageSupporterMembershipExpiredOn": "Ditt supporter medlemskap utl\u00f8p den {0}.", - "MessageYouHaveALifetimeMembership": "You have a lifetime supporter membership. You can provide additional donations on a one-time or recurring basis using the options below. Thank you for supporting Emby.", + "MessageYouHaveALifetimeMembership": "Du har et levetid supporter medlemskap. Du kan gi ytterligere donasjoner engangs eller periodisk basis ved hjelp av alternativene nedenfor. Takk for at du st\u00f8tter Emby.", "MessageYouHaveAnActiveRecurringMembership": "Du har et aktivt {0} medlemskap. Du kan oppgradere din plan ved hjelp av alternativene nedenfor.", "ButtonDelete": "Slett", - "HeaderEmbyAccountAdded": "Emby Account Added", - "MessageEmbyAccountAdded": "The Emby account has been added to this user.", + "HeaderEmbyAccountAdded": "Emby konto lagt til", + "MessageEmbyAccountAdded": "Emby-konto er blitt lagt til denne brukeren.", "MessagePendingEmbyAccountAdded": "The Emby account has been added to this user. An email will be sent to the owner of the account. The invitation will need to be confirmed by clicking a link within the email.", - "HeaderEmbyAccountRemoved": "Emby Account Removed", + "HeaderEmbyAccountRemoved": "Embykonto er fjernet", "MessageEmbyAccontRemoved": "The Emby account has been removed from this user.", - "TooltipLinkedToEmbyConnect": "Linked to Emby Connect", + "TooltipLinkedToEmbyConnect": "Knyttet til Emby Connect.", "HeaderUnrated": "Uvurdert", "ValueDiscNumber": "Disk {0}", "HeaderUnknownDate": "Ukjent dato", @@ -726,7 +729,7 @@ "MessageInvalidForgotPasswordPin": "Ugyldig eller utg\u00e5tt PIN kode angitt. Vennligst pr\u00f8v igjen.", "MessagePasswordResetForUsers": "Passordet er fjernet for f\u00f8lgende brukere:", "HeaderInviteGuest": "Inviter gjest", - "ButtonLinkMyEmbyAccount": "Link my account now", + "ButtonLinkMyEmbyAccount": "Link kontoen min n\u00e5", "MessageConnectAccountRequiredToInviteGuest": "In order to invite guests you need to first link your Emby account to this server.", "ButtonSync": "Synk", "SyncMedia": "Synkroniser media", @@ -740,7 +743,7 @@ "LabelQuality": "Kvalitet:", "HeaderSettings": "Innstillinger", "OptionAutomaticallySyncNewContent": "Automatisk synkroniser nytt innhold", - "OptionAutomaticallySyncNewContentHelp": "Nytt innhold lagt til i denne kategorien vil bli automatisk synkronisert til enheten.", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", "OptionSyncUnwatchedVideosOnly": "Synkroniser kun usette videoer", "OptionSyncUnwatchedVideosOnlyHelp": "Kun usette videoer blir synkronisert, og videoer blir fjernet fra enheten s\u00e5 snart de er sett.", "LabelItemLimit": "Begrenset antall:", @@ -755,12 +758,52 @@ "SyncJobItemStatusFailed": "Feilet", "SyncJobItemStatusRemovedFromDevice": "Fjernet fra enheten", "SyncJobItemStatusCancelled": "Kansellert", - "LabelProfile": "Profile:", + "LabelProfile": "Profil:", "LabelBitrateMbps": "Bitrate (Mbps):", - "EmbyIntroDownloadMessage": "To download and install Emby Server visit {0}.", - "ButtonNewServer": "New Server", - "ButtonSignInWithConnect": "Sign in with Emby Connect", - "HeaderNewServer": "New Server", - "MyDevice": "My Device", - "ButtonRemote": "Remote" + "EmbyIntroDownloadMessage": "For \u00e5 laste ned og installere Emby Server bes\u00f8k {0}.", + "ButtonNewServer": "Ny server", + "ButtonSignInWithConnect": "Logg inn med Emby Connect", + "HeaderNewServer": "Ny server", + "MyDevice": "Min(e) enhet(er)", + "ButtonRemote": "Fjernkont.", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scener", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Avansert", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json index 95bd5135a..f910316fd 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json @@ -6,7 +6,7 @@ "Administrator": "Beheerder", "Password": "Wachtwoord", "DeleteImage": "Verwijder afbeelding", - "MessageThankYouForSupporting": "Dank u voor uw steun aan Emby", + "MessageThankYouForSupporting": "Bedankt voor uw steun aan Emby", "MessagePleaseSupportProject": "Steun Emby a.u.b.", "DeleteImageConfirmation": "Weet u zeker dat u deze afbeelding wilt verwijderen?", "FileReadCancelled": "Bestand lezen is geannuleerd.", @@ -36,17 +36,20 @@ "MessageKeyUpdated": "Dank u. Uw supporter sleutel is bijgewerkt.", "MessageKeyRemoved": "Dank u. Uw supporter sleutel is verwijderd.", "HeaderSupportTheTeam": "Ondersteun het Emby Team", - "TextEnjoyBonusFeatures": "Geniet van Bonus Features", + "TextEnjoyBonusFeatures": "Profiteer van extra mogelijkheden", "TitleLiveTV": "Live TV", + "ButtonCancelSyncJob": "Annuleer synchronisatie opdracht", "TitleSync": "Synchroniseer", + "HeaderSelectDate": "Selecteer Datum", "ButtonDonate": "Doneren", + "LabelRecurringDonationCanBeCancelledHelp": "Terugkerende donaties kunnen op elk moment stop gezet worden in uw PayPal account.", "HeaderMyMedia": "Mijn media", "TitleNotifications": "Meldingen", "ErrorLaunchingChromecast": "Er is een fout opgetreden bij het starten van chromecast. Zorg ervoor dat uw apparaat is aangesloten op uw draadloze netwerk.", "MessageErrorLoadingSupporterInfo": "Er is een fout opgetreden bij het laden van uw supporter informatie. Probeer het later opnieuw.", "MessageLinkYourSupporterKey": "Koppel uw supporters sleutel met maximaal {0} Emby Connect leden om te genieten van gratis toegang tot de volgende apps:", "HeaderConfirmRemoveUser": "Gebruiker verwijderen", - "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Select the device to control by clicking the cast icon in the upper right corner. Swipe down anywhere on this screen to go back to where you came from.", + "MessageSwipeDownOnRemoteControl": "Welkom bij afstandbediening. Selecteer het apparaat dat u wilt bedienen door op het icoon rechtsboven te klikken. Swipe ergens op dit scherm naar beneden om terug te gaan.", "MessageConfirmRemoveConnectSupporter": "Bent u zeker dat u de extra supporter voordelen van deze gebruiker wilt verwijderen?", "ValueTimeLimitSingleHour": "Tijdslimiet: 1 uur", "ValueTimeLimitMultiHour": "Tijdslimiet: {0} uren", @@ -73,7 +76,7 @@ "LabelFailed": "(mislukt)", "ButtonHelp": "Hulp", "ButtonSave": "Opslaan", - "ButtonDownload": "Download", + "ButtonDownload": "Downloaden", "SyncJobStatusQueued": "In wachtrij", "SyncJobStatusConverting": "Converteren", "SyncJobStatusFailed": "Mislukt", @@ -91,18 +94,19 @@ "HeaderDevices": "Apparaten", "ButtonScheduledTasks": "Geplande taken", "MessageItemsAdded": "Items toegevoegd", - "ButtonAddToCollection": "Voeg toe aan collectie", + "ButtonAddToCollection": "Toevoegen aan Collectie", "HeaderSelectCertificatePath": "Selecteer Certificaat Pad", "ConfirmMessageScheduledTaskButton": "Deze operatie loopt normaal gesproken automatisch als een geplande taak. Het kan hier ook handmatig worden uitgevoerd. Om de geplande taak te configureren, zie:", "HeaderSupporterBenefit": "Een supporter lidmaatschap biedt voordelen zoals toegang tot synchronisatie, premium plug-ins, internet kanalen en meer. {0}Meer weten{1}.", - "LabelSyncNoTargetsHelp": "Het lijkt erop dat je momenteel geen apps hebt die synchroniseren ondersteunen.", + "LabelSyncNoTargetsHelp": "Het lijkt erop dat u momenteel geen apps heeft die synchroniseren ondersteunen.", "HeaderWelcomeToProjectServerDashboard": "Welkom bij het Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welkom bij de Emby Web Client", + "HeaderWelcomeToProjectWebClient": "Welkom bij Emby", "ButtonTakeTheTour": "Volg de tour", "HeaderWelcomeBack": "Welkom terug!", "TitlePlugins": "Plugins", "ButtonTakeTheTourToSeeWhatsNew": "Volg de tour om te zien wat nieuw is", "MessageNoSyncJobsFound": "Geen sync opdrachten gevonden. Maak sync opdrachten via de Synchronisatie knoppen in de web interface.", + "ButtonPlayTrailer": "Trailer afspelen", "HeaderLibraryAccess": "Bibliotheek toegang", "HeaderChannelAccess": "Kanaal toegang", "HeaderDeviceAccess": "Apparaat Toegang", @@ -124,7 +128,7 @@ "HeaderPlaybackError": "Afspeel Fout", "MessagePlaybackErrorNotAllowed": "U bent niet bevoegd om deze content af te spelen. Neem contact op met uw systeembeheerder voor meer informatie.", "MessagePlaybackErrorNoCompatibleStream": "Geen compatibele streams beschikbaar. Probeer het later opnieuw of neem contact op met de serverbeheerder.", - "MessagePlaybackErrorRateLimitExceeded": "Je afspeel rate limiet is overschreden. Neem contact op met de beheerder van de server voor details.", + "MessagePlaybackErrorRateLimitExceeded": "Uw afspeel rate limiet is overschreden. Neem contact op met de beheerder van de server voor details.", "MessagePlaybackErrorPlaceHolder": "De gekozen content is niet af te spelen vanaf dit apparaat.", "HeaderSelectAudio": "Selecteer Audio", "HeaderSelectSubtitles": "Selecteer Ondertitels", @@ -143,7 +147,6 @@ "ButtonPlay": "Afspelen", "ButtonEdit": "Bewerken", "ButtonQueue": "Wachtrij", - "ButtonPlayTrailer": "Trailer afspelen", "ButtonPlaylist": "Afspeellijst", "ButtonPreviousTrack": "Vorig Nummer", "LabelEnabled": "Ingeschakeld", @@ -154,7 +157,7 @@ "ButtonMarkTheseRead": "Markeer deze gelezen", "ButtonClose": "Sluiten", "LabelAllPlaysSentToPlayer": "Alles zal worden verzonden naar de geselecteerde speler.", - "MessageInvalidUser": "Foutiefe gebruikersnaam of wachtwoord. Probeer opnieuw.", + "MessageInvalidUser": "Foutieve gebruikersnaam of wachtwoord. Probeer opnieuw.", "HeaderLoginFailure": "Aanmeld fout", "HeaderAllRecordings": "Alle Opnames", "RecommendationBecauseYouLike": "Omdat u {0} leuk vond.", @@ -199,7 +202,7 @@ "HeaderSplitMedia": "Splits Media Apart", "MessageConfirmSplitMedia": "Weet u zeker dat u de media bronnen wilt splitsen in afzonderlijke items?", "HeaderError": "Fout", - "MessageChromecastConnectionError": "Je Chromcast ontvanger kan niet met je Emby server verbinden. Controleer je verbindingen en probeer het opnieuw.", + "MessageChromecastConnectionError": "Uw Chromecast ontvanger kan niet met uw Emby Server verbinden. Controleer de verbindingen en probeer het opnieuw.", "MessagePleaseSelectOneItem": "Selecteer ten minste een item.", "MessagePleaseSelectTwoItems": "Selecteer ten minste twee items.", "MessageTheFollowingItemsWillBeGrouped": "De volgende titels worden gegroepeerd in \u00e9\u00e9n item:", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Transcoderen", "LabelPlayMethodDirectStream": "Direct Streamen", "LabelPlayMethodDirectPlay": "Direct Afspelen", + "LabelEpisodeNumber": "Afleveringsnummer:", "LabelAudioCodec": "Audio: {0}", "LabelVideoCodec": "Video: {0}", "LabelLocalAccessUrl": "Lokale toegang: {0}", @@ -293,7 +297,7 @@ "HeaderAudioTracks": "Audio sporen", "HeaderLibraries": "Bibliotheken", "HeaderSubtitles": "Ondertitels", - "HeaderVideoQuality": "Video Kwalitet", + "HeaderVideoQuality": "Video Kwaliteit", "MessageErrorPlayingVideo": "Er ging iets mis bij het afspelen van de video.", "MessageEnsureOpenTuner": "Wees er a.u.b. zeker van dat er een open tuner beschikbaar is.", "ButtonHome": "Start", @@ -307,6 +311,7 @@ "HeaderArtist": "Artiest", "LabelAddedOnDate": "Toegevoegd {0}", "ButtonStart": "Start", + "LabelSeasonNumber": "Seizoennummer:", "HeaderChannels": "Kanalen", "HeaderMediaFolders": "Media Mappen", "HeaderBlockItemsWithNoRating": "Blokkeer inhoud zonder classificatiegegevens:", @@ -321,7 +326,7 @@ "OptionBlockLiveTvChannels": "Live TV Kanalen", "OptionBlockChannelContent": "Internet kanaal Inhoud", "ButtonRevoke": "Herroepen", - "MessageConfirmRevokeApiKey": "Weet je zeker dat je deze api key in wilt trekken? De verbinding met Emby Server zal direct afgebroken worden.", + "MessageConfirmRevokeApiKey": "Weet u zeker dat u deze api key in wilt trekken? De verbinding met Emby Server zal direct verbroken worden.", "HeaderConfirmRevokeApiKey": "Intrekken Api Sleutel", "ValueContainer": "Container: {0}", "ValueAudioCodec": "Audio Codec: {0}", @@ -335,6 +340,7 @@ "ButtonNextPage": "Volgende pagina", "ButtonPreviousPage": "Vorige Pagina", "ButtonMoveLeft": "Verplaats naar links", + "OptionReleaseDate": "Uitgave datum", "ButtonMoveRight": "Verplaats naar rechts", "ButtonBrowseOnlineImages": "Blader door online afbeeldingen", "HeaderDeleteItem": "Item verwijderen", @@ -477,11 +483,8 @@ "PersonTypePerson": "Persoon", "LabelTitleDisplayOrder": "Titel weergave volgorde:", "OptionSortName": "Sorteerbaar", - "OptionReleaseDate": "Uitgave datum", - "LabelSeasonNumber": "Seizoen nummer:", "LabelDiscNumber": "Disc nummer", "LabelParentNumber": "Bovenliggend nummer", - "LabelEpisodeNumber": "Aflevering nummer:", "LabelTrackNumber": "Tracknummer:", "LabelNumber": "Nummer:", "LabelReleaseDate": "Uitgave datum:", @@ -536,9 +539,9 @@ "MessageInstallPluginFromApp": "Deze plugin moet ge\u00efnstalleerd worden vanuit de app waarin u het wilt gebruiken.", "ValuePriceUSD": "Prijs {0} (USD)", "MessageFeatureIncludedWithSupporter": "U bent geregistreerd voor deze functie, en zal deze kunnen blijven gebruiken met uw actieve supporter lidmaatschap.", - "MessageChangeRecurringPlanConfirm": "Na het voltooien van deze transactie zal je de eerdere terugkerende donatie in je PayPal account moeten annuleren. Bedankt voor de ondersteuning aan Emby.", + "MessageChangeRecurringPlanConfirm": "Na het voltooien van deze transactie zult u de eerdere terugkerende donatie in uw PayPal account moeten annuleren. Bedankt voor de ondersteuning aan Emby.", "MessageSupporterMembershipExpiredOn": "Uw supporter lidmaatschap is verlopen op {0}", - "MessageYouHaveALifetimeMembership": "Je hebt een levenslang supporter lidmaatschap. Je kan eenmalige- en terugkerende donaties doen met onderstaande opties. Bedankt voor de ondersteuning aan Emby.", + "MessageYouHaveALifetimeMembership": "U hebt een levenslang supporter lidmaatschap. U kunt eenmalige en terugkerende donaties doen met onderstaande opties. Bedankt voor de ondersteuning aan Emby.", "MessageYouHaveAnActiveRecurringMembership": "U hebt een actief {0} lidmaatschap. U kunt met de opties hieronder uw lidmaatschap upgraden.", "ButtonDelete": "Verwijderen", "HeaderEmbyAccountAdded": "Emby Account Toegevoegd", @@ -649,7 +652,7 @@ "MediaInfoLevel": "Niveau", "MediaInfoAspectRatio": "Beeld verhouding", "MediaInfoResolution": "Resolutie", - "MediaInfoAnamorphic": "Anamorfe", + "MediaInfoAnamorphic": "Anamorf", "MediaInfoInterlaced": "Interlaced", "MediaInfoFramerate": "Framerate", "MediaInfoStreamTypeAudio": "Geluid", @@ -676,13 +679,13 @@ "WebClientTourMetadataManager": "Klik wijzigen om de metadata manager te openen", "WebClientTourPlaylists": "Maak eenvoudig een afspeellijst en mixlijst, en speel deze op elk apparaat", "WebClientTourCollections": "Maak film Collecties door boxsets samen te voegen", - "WebClientTourUserPreferences1": "Met gebruikersvoorkeuren kan je de manier waarop je bibliotheek getoond wordt in alle Emby apps aanpassen", - "WebClientTourUserPreferences2": "Stel eenmalig je voorkeuren voor je audio- en ondertitelingstaal voor elke Emby app", + "WebClientTourUserPreferences1": "Met gebruikersvoorkeuren kunt u de manier waarop uw bibliotheek getoond wordt in alle Emby apps aanpassen", + "WebClientTourUserPreferences2": "Stel eenmalig uw voorkeuren in voor uw audio- en ondertitelingstaal voor elke Emby app", "WebClientTourUserPreferences3": "Ontwerp de startpagina van de web client volgens uw wensen", "WebClientTourUserPreferences4": "Configureer achtergronden, theme songs en externe spelers", "WebClientTourMobile1": "De web client werk perfect op smartphones en tablets...", - "WebClientTourMobile2": "en bedien eenvoudig je andere apparaten en Emby apps", - "WebClientTourMySync": "Synchroniseer je persoonlijke media naar je apparaten om het offline te bekijken.", + "WebClientTourMobile2": "en bedien eenvoudig uw andere apparaten en Emby apps", + "WebClientTourMySync": "Synchroniseer uw persoonlijke media naar uw apparaten om het offline te bekijken.", "MessageEnjoyYourStay": "Geniet van uw verblijf", "DashboardTourDashboard": "Het server-dashboard steld u in staat uw server en uw gebruikers te monitoren . U zult altijd weten wie wat doet en waar ze zijn.", "DashboardTourHelp": "De in-app hulp bevat handige knoppen om wiki pagina's te openen die gaan over de informatie op het scherm.", @@ -693,8 +696,8 @@ "DashboardTourPlugins": "Installeer plugins zoals Internet videokanalen, live tv, metadata, scanners en meer.", "DashboardTourNotifications": "Meldingen van de server gebeurtenissen automatisch verzenden naar uw mobiele apparaat, e-mail en meer.", "DashboardTourScheduledTasks": "Beheer eenvoudig langlopende transacties met geplande taken. Beslis zelf wanneer ze worden uitgevoerd en hoe vaak.", - "DashboardTourMobile": "Het Emby Server dashboard werkt goed op smartphones en tablets. Beheer je server in de palm van je hand, altijd en overal.", - "DashboardTourSync": "Synchroniseer je persoonlijke media naar je apparaten om het offline te bekijken.", + "DashboardTourMobile": "Het Emby Server dashboard werkt goed op smartphones en tablets. Beheer uw server vanuit uw handpalm, altijd en overal.", + "DashboardTourSync": "Synchroniseer uw persoonlijke media naar uw apparaten om het offline te bekijken.", "MessageRefreshQueued": "Vernieuwen wachtrij", "TabDevices": "Apparaten", "TabExtras": "Extra's", @@ -712,7 +715,7 @@ "MessageInvitationSentToNewUser": "Een email is verzonden naar {0} met een uitnodiging om aan te melden bij Emby.", "HeaderConnectionFailure": "Verbindingsfout", "MessageUnableToConnectToServer": "Het is momenteel niet mogelijk met de geselecteerde server te verbinden. Controleer dat deze draait en probeer het opnieuw.", - "ButtonSelectServer": "Selecteer server", + "ButtonSelectServer": "Server Selecteren", "MessagePluginConfigurationRequiresLocalAccess": "Meld svp. op de lokale server aan om deze plugin te configureren.", "MessageLoggedOutParentalControl": "Toegang is momenteel bepertk, probeer later opnieuw.", "DefaultErrorMessage": "Er is een fout opgetreden. Probeer later opnieuw.", @@ -722,16 +725,16 @@ "MessageContactAdminToResetPassword": "Neem contact op met de server beheerder om uw wachtwoord te resetten.", "MessageForgotPasswordInNetworkRequired": "Probeer de wachtwoord herstel procedure opnieuw vanuit uw thuisnetwerk.", "MessageForgotPasswordFileCreated": "Het volgende bestand met instructies hoe nu verder te gaan is gemaakt:", - "MessageForgotPasswordFileExpiration": "De hertsel pincode verloopt {0}.", + "MessageForgotPasswordFileExpiration": "De herstel pincode verloopt {0}.", "MessageInvalidForgotPasswordPin": "Er is een ongeldige of verlopen pincode ingegeven. Probeer opnieuw.", "MessagePasswordResetForUsers": "Wachtwoorden zijn verwijderd van de volgende gebruikers:", "HeaderInviteGuest": "Nodig gast uit", "ButtonLinkMyEmbyAccount": "Koppel mijn account nu", - "MessageConnectAccountRequiredToInviteGuest": "Om gasten uit te kunnen nodigen moet je je Emby account aan deze server koppelen.", + "MessageConnectAccountRequiredToInviteGuest": "Om gasten uit te kunnen nodigen moet u uw Emby account aan deze server koppelen.", "ButtonSync": "Synchronisatie", "SyncMedia": "Synchroniseer media", "HeaderCancelSyncJob": "Annuleer synchronisatie", - "CancelSyncJobConfirmation": "Als je de synchroniseertaak annuleert wordt de gesynchroniseerde media bij de volgende synchroniseertaak van het apparaat verwijderd. Weet je zeker dat je door wilt gaan?", + "CancelSyncJobConfirmation": "Als u de synchroniseertaak annuleert wordt de gesynchroniseerde media bij de volgende synchroniseertaak van het apparaat verwijderd. Weet u zeker dat u door wilt gaan?", "TabSync": "Synchronisatie", "MessagePleaseSelectDeviceToSyncTo": "Selecteer een apparaat om mee te synchroniseren.", "MessageSyncJobCreated": "Synchronisatie taak gemaakt.", @@ -740,7 +743,7 @@ "LabelQuality": "Kwaliteit", "HeaderSettings": "Instellingen", "OptionAutomaticallySyncNewContent": "Nieuwe inhoud automatisch synchroniseren", - "OptionAutomaticallySyncNewContentHelp": "Nieuwe inhoud toegevoegd aan deze categorie wordt automatisch gesynchroniseerd met het apparaat.", + "OptionAutomaticallySyncNewContentHelp": "Nieuwe inhoud zal automatisch met het apparaat gesynchroniseerd worden.", "OptionSyncUnwatchedVideosOnly": "Synchroniseer alleen onbekeken video's", "OptionSyncUnwatchedVideosOnlyHelp": "Alleen onbekeken video's zullen worden gesynchroniseerd en van het apparaat worden verwijderd als ze bekeken zijn.", "LabelItemLimit": "Item limiet:", @@ -757,10 +760,50 @@ "SyncJobItemStatusCancelled": "Geannuleerd", "LabelProfile": "profiel:", "LabelBitrateMbps": "Bitrate (Mbps):", - "EmbyIntroDownloadMessage": "To download and install Emby Server visit {0}.", - "ButtonNewServer": "New Server", - "ButtonSignInWithConnect": "Sign in with Emby Connect", - "HeaderNewServer": "New Server", - "MyDevice": "My Device", - "ButtonRemote": "Remote" + "EmbyIntroDownloadMessage": "Ga naar {0} om Emby Server te downloaden en te installeren.", + "ButtonNewServer": "Nieuwe server", + "ButtonSignInWithConnect": "Aanmelden met Emby Connect", + "HeaderNewServer": "Nieuwe Server", + "MyDevice": "Mijn apparaat", + "ButtonRemote": "Afstandsbediening", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "App vrijgeven", + "MessageUnlockAppWithPurchase": "Geef alle mogelijkheden van deze app vrij met een enkele kleine aankoop.", + "MessageUnlockAppWithPurchaseOrSupporter": "Geef alle mogelijkheden van deze app vrij met een enkele kleine aankoop of door met een actief Emby Supporter Lidmaatschap aan te melden.", + "MessageUnlockAppWithSupporter": "Geef alle mogelijkheden van deze app vrij door met een actief Emby Supporter Lidmaatschap aan te melden.", + "MessageToValidateSupporter": "Als u een actief Emby Supporter Lidmaatschap hebt, meld de app dan aan op uw eigen wifi netwerk.", + "MessagePaymentServicesUnavailable": "Betaal services zijn momenteel niet beschikbaar, Probeer het later svp. nog eens.", + "ButtonUnlockWithSupporter": "Meld aan met uw Emby Supporter Lidmaatschap", + "MessagePleaseSignInLocalNetwork": "Controleer of u verbonden bent met uw lokale netwerk voordat u verder gaat.", + "ButtonUnlockWithPurchase": "Geef vrij met een aankoop", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "De Live TV Gids is momenteel gelimiteerd tot {0} kanalen. Klik op de Geef vrij knop om te zien hoe u deze limiet op kunt heffen.", + "OptionEnableFullscreen": "Schakel volledig scherm in", + "ButtonServer": "Server", + "HeaderAdmin": "Beheerder", + "HeaderLibrary": "Bibliotheek", + "HeaderMedia": "Media", + "ButtonInbox": "inbox", + "HeaderAdvanced": "Geavanceerd", + "HeaderGroupVersions": "Versies Groeperen", + "HeaderSaySomethingLike": "Zeg iets zoals...", + "ButtonTryAgain": "Opnieuw Proberen", + "HeaderYouSaid": "U zei...", + "MessageWeDidntRecognizeCommand": "Sorry, dat commande herkennen we niet.", + "MessageIfYouBlockedVoice": "Als u spraak toegang uitgeschakeld hebt moet u dit opnieuw configureren voordat u verder gaat.", + "MessageNoItemsFound": "Geen items gevonden.", + "ButtonManageServer": "Beheer server", + "ButtonPreferences": "Voorkeuren", + "ButtonViewArtist": "Bekijk artiest", + "ButtonViewAlbum": "Bekijk album", + "ErrorMessagePasswordNotMatchConfirm": "Het wachtwoord en de wachtwoordbevestiging moeten overeenkomen.", + "ErrorMessageUsernameInUse": "Deze gebruikersnaam is al in gebruik. Kies een andere en probeer het opnieuw.", + "ErrorMessageEmailInUse": "Dit emailadres is al in gebruik. Kies een ander en probeer het opnieuw, of gebruik de vergeten wachtwoord functie.", + "MessageThankYouForConnectSignUp": "Bedankt voor het aanmelden bij Emby Connect. Een email met instructies hoe je account bevestigd moet worden wordt verstuurd. Bevestig het account en keer terug om aan te melden.", + "HeaderShare": "Delen", + "ButtonShareHelp": "Deel een webpagina met media-informatie met sociale media. Media-bestanden worden nooit publiekelijk gedeeld.", + "ButtonShare": "Delen", + "HeaderConfirm": "bevestigen" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json index cff3c78b9..b00323084 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json @@ -38,8 +38,11 @@ "HeaderSupportTheTeam": "Support the Emby Team", "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", + "ButtonCancelSyncJob": "Cancel sync job", "TitleSync": "Sync", + "HeaderSelectDate": "Select Date", "ButtonDonate": "Donate", + "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderMyMedia": "My Media", "TitleNotifications": "Notifications", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", "ButtonTakeTheTour": "Take the tour", "HeaderWelcomeBack": "Welcome back!", "TitlePlugins": "Plugins", "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "ButtonPlayTrailer": "Play trailer", "HeaderLibraryAccess": "Library Access", "HeaderChannelAccess": "Channel Access", "HeaderDeviceAccess": "Device Access", @@ -143,7 +147,6 @@ "ButtonPlay": "Play", "ButtonEdit": "Edit", "ButtonQueue": "Queue", - "ButtonPlayTrailer": "Play trailer", "ButtonPlaylist": "Playlist", "ButtonPreviousTrack": "Previous Track", "LabelEnabled": "Enabled", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Transcoding", "LabelPlayMethodDirectStream": "Direct Streaming", "LabelPlayMethodDirectPlay": "Direct Playing", + "LabelEpisodeNumber": "Episode number:", "LabelAudioCodec": "Audio: {0}", "LabelVideoCodec": "Video: {0}", "LabelLocalAccessUrl": "Local access: {0}", @@ -307,6 +311,7 @@ "HeaderArtist": "Artist", "LabelAddedOnDate": "Added {0}", "ButtonStart": "Start", + "LabelSeasonNumber": "Season number:", "HeaderChannels": "Channels", "HeaderMediaFolders": "Media Folders", "HeaderBlockItemsWithNoRating": "Block content with no rating information:", @@ -335,6 +340,7 @@ "ButtonNextPage": "Next Page", "ButtonPreviousPage": "Previous Page", "ButtonMoveLeft": "Move left", + "OptionReleaseDate": "Release date", "ButtonMoveRight": "Move right", "ButtonBrowseOnlineImages": "Browse online images", "HeaderDeleteItem": "Delete Item", @@ -477,11 +483,8 @@ "PersonTypePerson": "Person", "LabelTitleDisplayOrder": "Title display order:", "OptionSortName": "Sort name", - "OptionReleaseDate": "Data wydania", - "LabelSeasonNumber": "Season number:", "LabelDiscNumber": "Disc number", "LabelParentNumber": "Parent number", - "LabelEpisodeNumber": "Episode number:", "LabelTrackNumber": "Track number:", "LabelNumber": "Number:", "LabelReleaseDate": "Release date:", @@ -712,7 +715,7 @@ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", "HeaderConnectionFailure": "Connection Failure", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", - "ButtonSelectServer": "Select server", + "ButtonSelectServer": "Select Server", "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", "DefaultErrorMessage": "There was an error processing the request. Please try again later.", @@ -740,7 +743,7 @@ "LabelQuality": "Quality:", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", - "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", "LabelItemLimit": "Item limit:", @@ -762,5 +765,45 @@ "ButtonSignInWithConnect": "Sign in with Emby Connect", "HeaderNewServer": "New Server", "MyDevice": "My Device", - "ButtonRemote": "Remote" + "ButtonRemote": "Remote", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Advanced", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt-BR.json index 0d8f90a63..5eb463fe4 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt-BR.json @@ -38,15 +38,18 @@ "HeaderSupportTheTeam": "Colabore com o Time do Emby", "TextEnjoyBonusFeatures": "Aproveite Funcionalidades Extras", "TitleLiveTV": "TV ao Vivo", + "ButtonCancelSyncJob": "Cancelar tarefa de sincroniza\u00e7\u00e3o", "TitleSync": "Sinc", + "HeaderSelectDate": "Selecionar Data", "ButtonDonate": "Doar", + "LabelRecurringDonationCanBeCancelledHelp": "Doa\u00e7\u00f5es recorrentes podem ser canceladas a qualquer momento dentro da conta do PayPal.", "HeaderMyMedia": "Minha M\u00eddia", "TitleNotifications": "Notifica\u00e7\u00f5es", "ErrorLaunchingChromecast": "Ocorreu um erro ao iniciar o chromecast. Por favor verifique se seu dispositivo est\u00e1 conectado \u00e0 sua rede sem fio.", "MessageErrorLoadingSupporterInfo": "Ocorreu um erro ao carregar a informa\u00e7\u00e3o do colaborador. Por favor, tente novamente mais tarde.", "MessageLinkYourSupporterKey": "Associe sua chave de colaborador com at\u00e9 {0} membros do Emby Connect para desfrutar acesso gr\u00e1tis \u00e0s seguintes apps:", "HeaderConfirmRemoveUser": "Remover Usu\u00e1rio", - "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Select the device to control by clicking the cast icon in the upper right corner. Swipe down anywhere on this screen to go back to where you came from.", + "MessageSwipeDownOnRemoteControl": "Bem vindo ao controle remoto. Selecione o dispositivo que deseja controlar clicando no \u00edcone de transmiss\u00e3o no canto superior direito. Deslize para baixo em qualquer lugar da tela para voltar \u00e0 tela anterior.", "MessageConfirmRemoveConnectSupporter": "Deseja realmente remover os benef\u00edcios adicionais de colaborador deste usu\u00e1rio?", "ValueTimeLimitSingleHour": "Limite de tempo: 1 hora", "ValueTimeLimitMultiHour": "Limite de tempo: {0} horas", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "A ades\u00e3o de colaborador fornece benef\u00edcios adicionais como acesso a sincroniza\u00e7\u00e3o, plugins premium, canais de conte\u00fado da internet e mais. {0}Saiba mais{1}.", "LabelSyncNoTargetsHelp": "Parece que voc\u00ea n\u00e3o possui nenhuma app que suporta sincroniza\u00e7\u00e3o.", "HeaderWelcomeToProjectServerDashboard": "Bem vindo ao Painel do Servidor Emby", - "HeaderWelcomeToProjectWebClient": "Bem vindo ao Emby Web Client", + "HeaderWelcomeToProjectWebClient": "Bem vindo ao Emby", "ButtonTakeTheTour": "Fa\u00e7a o tour", "HeaderWelcomeBack": "Bem-vindo novamente!", "TitlePlugins": "Plugins", "ButtonTakeTheTourToSeeWhatsNew": "Fa\u00e7a o tour para ver as novidades", "MessageNoSyncJobsFound": "Nenhuma tarefa de sincroniza\u00e7\u00e3o encontrada. Crie uma tarefa de sincroniza\u00e7\u00e3o usando os bot\u00f5es Sincroniza\u00e7\u00e3o encontrados na interface web.", + "ButtonPlayTrailer": "Reproduzir trailer", "HeaderLibraryAccess": "Acesso \u00e0 Biblioteca", "HeaderChannelAccess": "Acesso ao Canal", "HeaderDeviceAccess": "Acesso ao Dispositivo", @@ -143,7 +147,6 @@ "ButtonPlay": "Reproduzir", "ButtonEdit": "Editar", "ButtonQueue": "Adicionar \u00e0 fila", - "ButtonPlayTrailer": "Reproduzir trailer", "ButtonPlaylist": "Lista de reprodu\u00e7\u00e3o", "ButtonPreviousTrack": "Faixa Anterior", "LabelEnabled": "Ativada", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Transcodifica\u00e7\u00e3o", "LabelPlayMethodDirectStream": "Streaming Direto", "LabelPlayMethodDirectPlay": "Reprodu\u00e7\u00e3o Direta", + "LabelEpisodeNumber": "N\u00famero do epis\u00f3dio:", "LabelAudioCodec": "\u00c1udio: {0}", "LabelVideoCodec": "V\u00eddeo: {0}", "LabelLocalAccessUrl": "Acesso local: {0}", @@ -307,6 +311,7 @@ "HeaderArtist": "Artista", "LabelAddedOnDate": "Adicionado {0}", "ButtonStart": "Iniciar", + "LabelSeasonNumber": "N\u00famero da temporada:", "HeaderChannels": "Canais", "HeaderMediaFolders": "Pastas de M\u00eddia", "HeaderBlockItemsWithNoRating": "Bloquear conte\u00fado sem informa\u00e7\u00e3o de classifica\u00e7\u00e3o:", @@ -335,6 +340,7 @@ "ButtonNextPage": "Pr\u00f3xima P\u00e1gina", "ButtonPreviousPage": "P\u00e1gina Anterior", "ButtonMoveLeft": "Mover \u00e0 esquerda", + "OptionReleaseDate": "Data de lan\u00e7amento", "ButtonMoveRight": "Mover \u00e0 direita", "ButtonBrowseOnlineImages": "Procurar imagens online", "HeaderDeleteItem": "Excluir item", @@ -477,11 +483,8 @@ "PersonTypePerson": "Pessoa", "LabelTitleDisplayOrder": "Ordem de exibi\u00e7\u00e3o do t\u00edtulo: ", "OptionSortName": "Nome para ordena\u00e7\u00e3o", - "OptionReleaseDate": "Data de lan\u00e7amento", - "LabelSeasonNumber": "N\u00famero da temporada:", "LabelDiscNumber": "N\u00famero do disco", "LabelParentNumber": "N\u00famero do superior", - "LabelEpisodeNumber": "N\u00famero do epis\u00f3dio:", "LabelTrackNumber": "N\u00famero da faixa:", "LabelNumber": "N\u00famero:", "LabelReleaseDate": "Data do lan\u00e7amento:", @@ -712,7 +715,7 @@ "MessageInvitationSentToNewUser": "Um email foi enviado para {0} convidando para inscrever-se no Emby.", "HeaderConnectionFailure": "Falha na Conex\u00e3o", "MessageUnableToConnectToServer": "N\u00e3o foi poss\u00edvel conectar ao servidor selecionado. Por favor, certifique-se que esteja sendo executado e tente novamente.", - "ButtonSelectServer": "Selecionar servidor", + "ButtonSelectServer": "Selecionar Servidor", "MessagePluginConfigurationRequiresLocalAccess": "Para configurar este plugin, por favor entre em seu servidor local diretamente.", "MessageLoggedOutParentalControl": "O acesso est\u00e1 atualmente restrito. Por favor, tente mais tarde.", "DefaultErrorMessage": "Ocorreu um erro ao processar o pedido. Por favor, tente novamente mais tarde.", @@ -740,7 +743,7 @@ "LabelQuality": "Qualidade:", "HeaderSettings": "Ajustes", "OptionAutomaticallySyncNewContent": "Sincronizar novo conte\u00fado automaticamente", - "OptionAutomaticallySyncNewContentHelp": "Novo conte\u00fado adicionado a esta categoria ser\u00e1 automaticamente sincronizado com o dispositivo.", + "OptionAutomaticallySyncNewContentHelp": "Novo conte\u00fado adicionado ser\u00e1 automaticamente sincronizado com o dispositivo.", "OptionSyncUnwatchedVideosOnly": "Sincronizar apenas v\u00eddeos n\u00e3o assistidos", "OptionSyncUnwatchedVideosOnlyHelp": "Apenas v\u00eddeos n\u00e3o assistidos ser\u00e3o sincronizados, e os v\u00eddeos ser\u00e3o removidos do dispositivo assim que forem assistidos.", "LabelItemLimit": "Limite de itens:", @@ -757,10 +760,50 @@ "SyncJobItemStatusCancelled": "Cancelado", "LabelProfile": "Perfil:", "LabelBitrateMbps": "Taxa (Mbps):", - "EmbyIntroDownloadMessage": "To download and install Emby Server visit {0}.", - "ButtonNewServer": "New Server", - "ButtonSignInWithConnect": "Sign in with Emby Connect", - "HeaderNewServer": "New Server", - "MyDevice": "My Device", - "ButtonRemote": "Remote" + "EmbyIntroDownloadMessage": "Para fazer o download e instalar o Servidor Emby visite {0}.", + "ButtonNewServer": "Novo Servidor", + "ButtonSignInWithConnect": "Entrar no Emby Connect", + "HeaderNewServer": "Novo Servidor", + "MyDevice": "Meu Dispositivo", + "ButtonRemote": "Remoto", + "TabInfo": "Info", + "TabCast": "Elenco", + "TabScenes": "Cenas", + "HeaderUnlockApp": "Desbloquear App", + "MessageUnlockAppWithPurchase": "Desbloquear as caracter\u00edsticas completas da app com uma compra f\u00e1cil \u00fanica.", + "MessageUnlockAppWithPurchaseOrSupporter": "Desbloquear as caracter\u00edsticas completas da app com uma compra f\u00e1cil \u00fanica ou entrando com uma Ades\u00e3o ativa de Colaborador do Emby.", + "MessageUnlockAppWithSupporter": "Desbloquear as caracter\u00edsticas completas da app com uma Conta ativa de Colaborador do Emby.", + "MessageToValidateSupporter": "Se voc\u00ea possui uma Conta ativa de Colaborador do Emby, simplesmente entre na app usando a conex\u00e3o de Wifi de sua rede dom\u00e9stica.", + "MessagePaymentServicesUnavailable": "Servi\u00e7os de pagamento est\u00e3o indispon\u00edveis no momento. Por favor, tente novamente mais tarde.", + "ButtonUnlockWithSupporter": "Entre com a Conta de Colaborador do Emby", + "MessagePleaseSignInLocalNetwork": "Antes de continuar, por favor assegure-se que esteja conectado \u00e0 sua rede local usando Wifi ou uma conex\u00e3o de rede.", + "ButtonUnlockWithPurchase": "Desbloquear com Compra", + "ButtonUnlockPrice": "Desbloquear {0}", + "MessageLiveTvGuideRequiresUnlock": "O Guia de TV ao Vivo est\u00e1 atualmente limitado a {0} canais. Clique no bot\u00e3o desbloquear para saber como aproveitar a experi\u00eancia completa.", + "OptionEnableFullscreen": "Ativar Tela Cheia", + "ButtonServer": "Servidor", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Biblioteca", + "HeaderMedia": "M\u00eddia", + "ButtonInbox": "Caixa de Entrada", + "HeaderAdvanced": "Avan\u00e7ado", + "HeaderGroupVersions": "Agrupar Vers\u00f5es", + "HeaderSaySomethingLike": "Diga Alguma Coisa Como...", + "ButtonTryAgain": "Tente Novamente", + "HeaderYouSaid": "Voc\u00ea Disse...", + "MessageWeDidntRecognizeCommand": "Desculpe, n\u00e3o reconhecemos este comando.", + "MessageIfYouBlockedVoice": "Se voc\u00ea negou o acesso de voz \u00e0 app, voc\u00ea necessitar\u00e1 reconfigurar antes de tentar novamente.", + "MessageNoItemsFound": "Nenhum item encontrado.", + "ButtonManageServer": "Gerenciar Servidor", + "ButtonPreferences": "Prefer\u00eancias", + "ButtonViewArtist": "Ver artista", + "ButtonViewAlbum": "Ver \u00e1lbum", + "ErrorMessagePasswordNotMatchConfirm": "A senha e a confirma\u00e7\u00e3o de senha devem ser iguais.", + "ErrorMessageUsernameInUse": "O nome do usu\u00e1rio j\u00e1 est\u00e1 em uso. Por favor, escolha um novo nome e tente novamente.", + "ErrorMessageEmailInUse": "O endere\u00e7o de email j\u00e1 est\u00e1 em uso. Por favor, digite um novo endere\u00e7o de email e tente novamente ou use o recurso de senha esquecida.", + "MessageThankYouForConnectSignUp": "Obrigado por inscrever-se no Emby Connect. Um email ser\u00e1 enviado para seu endere\u00e7o com as instru\u00e7\u00f5es para confirmar sua nova conta. Por favor, confirme a conta e ent\u00e3o volte aqui para entrar.", + "HeaderShare": "Compartilhar", + "ButtonShareHelp": "Compartilhe uma p\u00e1gina web contendo informa\u00e7\u00f5es de m\u00eddia com uma m\u00eddia social. Os arquivos de m\u00eddia nunca ser\u00e3o compartilhados publicamente.", + "ButtonShare": "Compartilhar", + "HeaderConfirm": "Confirmar" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt-PT.json index b15be61ad..6248bb099 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt-PT.json @@ -6,7 +6,7 @@ "Administrator": "Administrador", "Password": "Senha", "DeleteImage": "Apagar Imagem", - "MessageThankYouForSupporting": "Thank you for supporting Emby.", + "MessageThankYouForSupporting": "Obrigado por suportar o Emby.", "MessagePleaseSupportProject": "Please support Emby.", "DeleteImageConfirmation": "Tem a certeza que deseja apagar a imagem?", "FileReadCancelled": "A leitura do ficheiro foi cancelada.", @@ -35,11 +35,14 @@ "HeaderConfirmation": "Confirmation", "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", - "HeaderSupportTheTeam": "Support the Emby Team", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", + "HeaderSupportTheTeam": "Suporte a Equipa do Emby", + "TextEnjoyBonusFeatures": "Aproveite os Extras", "TitleLiveTV": "TV ao Vivo", - "TitleSync": "Sync", + "ButtonCancelSyncJob": "Cancel sync job", + "TitleSync": "Sincronizar", + "HeaderSelectDate": "Selecionar Data", "ButtonDonate": "Donate", + "LabelRecurringDonationCanBeCancelledHelp": "Doa\u00e7\u00f5es recorrentes podem ser canceladas a qualquer momento dentro da sua conta do PayPal.", "HeaderMyMedia": "My Media", "TitleNotifications": "Notifications", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", @@ -51,16 +54,16 @@ "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", "HeaderUsers": "Utilizadores", - "PluginCategoryGeneral": "General", + "PluginCategoryGeneral": "Geral", "PluginCategoryContentProvider": "Content Providers", "PluginCategoryScreenSaver": "Screen Savers", - "PluginCategoryTheme": "Themes", - "PluginCategorySync": "Sync", + "PluginCategoryTheme": "Temas", + "PluginCategorySync": "Sincroniza\u00e7\u00e3o", "PluginCategorySocialIntegration": "Social Networks", "PluginCategoryNotifications": "Notifications", - "PluginCategoryMetadata": "Metadata", - "PluginCategoryLiveTV": "Live TV", - "PluginCategoryChannel": "Channels", + "PluginCategoryMetadata": "Metadados", + "PluginCategoryLiveTV": "TV ao Vivo", + "PluginCategoryChannel": "Canais", "HeaderSearch": "Search", "ValueDateCreated": "Date created: {0}", "LabelArtist": "Artist", @@ -71,38 +74,39 @@ "LabelStopping": "Stopping", "LabelCancelled": "(cancelled)", "LabelFailed": "(falhou)", - "ButtonHelp": "Help", + "ButtonHelp": "Ajuda", "ButtonSave": "Guardar", "ButtonDownload": "Download", - "SyncJobStatusQueued": "Queued", - "SyncJobStatusConverting": "Converting", - "SyncJobStatusFailed": "Failed", - "SyncJobStatusCancelled": "Cancelled", - "SyncJobStatusCompleted": "Synced", - "SyncJobStatusReadyToTransfer": "Ready to Transfer", - "SyncJobStatusTransferring": "Transferring", - "SyncJobStatusCompletedWithError": "Synced with errors", - "SyncJobItemStatusReadyToTransfer": "Ready to Transfer", + "SyncJobStatusQueued": "Em lista de espera", + "SyncJobStatusConverting": "A Converter", + "SyncJobStatusFailed": "Falhou", + "SyncJobStatusCancelled": "Cancelado", + "SyncJobStatusCompleted": "Sincronizado", + "SyncJobStatusReadyToTransfer": "Pronto para Transferir", + "SyncJobStatusTransferring": "A Transferir", + "SyncJobStatusCompletedWithError": "Sincronizado com erros", + "SyncJobItemStatusReadyToTransfer": "Pronto para Transferir", "LabelCollection": "Collection", "HeaderAddToCollection": "Adicionar \u00e0 Cole\u00e7\u00e3o", "NewCollectionNameExample": "Exemplo: Cole\u00e7\u00e3o Guerra das Estrelas", "OptionSearchForInternetMetadata": "Procurar na internet por imagens e metadados", - "LabelSelectCollection": "Select collection:", - "HeaderDevices": "Devices", - "ButtonScheduledTasks": "Scheduled tasks", + "LabelSelectCollection": "Selecione a cole\u00e7\u00e3o:", + "HeaderDevices": "Dispositivos", + "ButtonScheduledTasks": "Tarefas agendadas", "MessageItemsAdded": "Items added", "ButtonAddToCollection": "Add to collection", "HeaderSelectCertificatePath": "Select Certificate Path", "ConfirmMessageScheduledTaskButton": "This operation normally runs automatically as a scheduled task. It can also be run manually here. To configure the scheduled task, see:", - "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", + "HeaderSupporterBenefit": "Uma conta de Apoiante fornece benef\u00edcios adicionais como acesso \u00e0 sincroniza\u00e7\u00e3o, extens\u00f5es premium, conte\u00fados de canais da internet e mais. {0}Saiba mais{1}.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", "ButtonTakeTheTour": "Fa\u00e7a o tour", - "HeaderWelcomeBack": "Welcome back!", - "TitlePlugins": "Plugins", + "HeaderWelcomeBack": "Bem-vindo!", + "TitlePlugins": "Extens\u00f5es", "ButtonTakeTheTourToSeeWhatsNew": "Fa\u00e7a o tour para ver as novidades", "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "ButtonPlayTrailer": "Play trailer", "HeaderLibraryAccess": "Library Access", "HeaderChannelAccess": "Channel Access", "HeaderDeviceAccess": "Device Access", @@ -111,7 +115,7 @@ "ButtonQueueForRetry": "Queue for retry", "ButtonReenable": "Re-enable", "ButtonLearnMore": "Learn more", - "SyncJobItemStatusSyncedMarkForRemoval": "Marked for removal", + "SyncJobItemStatusSyncedMarkForRemoval": "Marcado para remo\u00e7\u00e3o", "LabelAbortedByServerShutdown": "(Aborted by server shutdown)", "LabelScheduledTaskLastRan": "Last ran {0}, taking {1}.", "HeaderDeleteTaskTrigger": "Delete Task Trigger", @@ -143,7 +147,6 @@ "ButtonPlay": "Reproduzir", "ButtonEdit": "Editar", "ButtonQueue": "Queue", - "ButtonPlayTrailer": "Reproduzir trailer", "ButtonPlaylist": "Playlist", "ButtonPreviousTrack": "Faixa Anterior", "LabelEnabled": "Enabled", @@ -157,10 +160,10 @@ "MessageInvalidUser": "Invalid username or password. Please try again.", "HeaderLoginFailure": "Login Failure", "HeaderAllRecordings": "Todas as Grava\u00e7\u00f5es", - "RecommendationBecauseYouLike": "Because you like {0}", - "RecommendationBecauseYouWatched": "Because you watched {0}", - "RecommendationDirectedBy": "Directed by {0}", - "RecommendationStarring": "Starring {0}", + "RecommendationBecauseYouLike": "Porque gosta de {0}", + "RecommendationBecauseYouWatched": "Porque viu {0}", + "RecommendationDirectedBy": "Realizado por {0}", + "RecommendationStarring": "{0} como protagonista", "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", "MessageRecordingCancelled": "Recording cancelled.", @@ -208,7 +211,7 @@ "HeaderMyViews": "My Views", "HeaderLibraryFolders": "Pastas multim\u00e9dia", "HeaderLatestMedia": "Latest Media", - "ButtonMoreItems": "More...", + "ButtonMoreItems": "Mais...", "ButtonMore": "More", "HeaderFavoriteMovies": "Favorite Movies", "HeaderFavoriteShows": "Favorite Shows", @@ -233,7 +236,7 @@ "LabelChapterDownloaders": "Chapter downloaders:", "LabelChapterDownloadersHelp": "Enable and rank your preferred chapter downloaders in order of priority. Lower priority downloaders will only be used to fill in missing information.", "HeaderFavoriteAlbums": "Favorite Albums", - "HeaderLatestChannelMedia": "Latest Channel Items", + "HeaderLatestChannelMedia": "\u00daltimos Itens de Canais", "ButtonOrganizeFile": "Organize File", "ButtonDeleteFile": "Delete File", "HeaderOrganizeFile": "Organize File", @@ -262,13 +265,14 @@ "LabelPlayMethodTranscoding": "Transcoding", "LabelPlayMethodDirectStream": "Direct Streaming", "LabelPlayMethodDirectPlay": "Direct Playing", + "LabelEpisodeNumber": "Episode number:", "LabelAudioCodec": "Audio: {0}", "LabelVideoCodec": "Video: {0}", "LabelLocalAccessUrl": "Local access: {0}", "LabelRemoteAccessUrl": "Remote access: {0}", "LabelRunningOnPort": "Running on http port {0}.", "LabelRunningOnPorts": "Running on http port {0}, and https port {1}.", - "HeaderLatestFromChannel": "Latest from {0}", + "HeaderLatestFromChannel": "Mais recentes de {0}", "LabelUnknownLanaguage": "Unknown language", "HeaderCurrentSubtitles": "Current Subtitles", "MessageDownloadQueued": "The download has been queued.", @@ -307,6 +311,7 @@ "HeaderArtist": "Artist", "LabelAddedOnDate": "Added {0}", "ButtonStart": "Start", + "LabelSeasonNumber": "Season number:", "HeaderChannels": "Canais", "HeaderMediaFolders": "Pastas Multim\u00e9dia", "HeaderBlockItemsWithNoRating": "Block content with no rating information:", @@ -335,6 +340,7 @@ "ButtonNextPage": "Next Page", "ButtonPreviousPage": "Previous Page", "ButtonMoveLeft": "Move left", + "OptionReleaseDate": "Release date", "ButtonMoveRight": "Move right", "ButtonBrowseOnlineImages": "Browse online images", "HeaderDeleteItem": "Delete Item", @@ -351,7 +357,7 @@ "ButtonUninstall": "Uninstall", "HeaderFields": "Fields", "HeaderFieldsHelp": "Slide a field to 'off' to lock it and prevent it's data from being changed.", - "HeaderLiveTV": "Live TV", + "HeaderLiveTV": "TV ao Vivo", "MissingLocalTrailer": "Missing local trailer.", "MissingPrimaryImage": "Missing primary image.", "MissingBackdropImage": "Missing backdrop image.", @@ -393,16 +399,16 @@ "LabelPackageInstallFailed": "{0} installation failed.", "LabelPackageInstallCancelled": "{0} installation cancelled.", "TabServer": "Servidor", - "TabUsers": "Users", + "TabUsers": "Utilizadores", "TabLibrary": "Biblioteca", "TabMetadata": "Metadados", "TabDLNA": "DLNA", - "TabLiveTV": "Live TV", - "TabAutoOrganize": "Auto-Organize", - "TabPlugins": "Plugins", + "TabLiveTV": "TV ao Vivo", + "TabAutoOrganize": "Organiza\u00e7\u00e3o Autom\u00e1tica", + "TabPlugins": "Extens\u00f5es", "TabAdvanced": "Avan\u00e7ado", "TabHelp": "Help", - "TabScheduledTasks": "Scheduled Tasks", + "TabScheduledTasks": "Tarefas Agendadas", "ButtonFullscreen": "Ecr\u00e3 cheio", "ButtonAudioTracks": "Faixas de \u00e1udio", "ButtonSubtitles": "Legendas", @@ -427,9 +433,9 @@ "ButtonRemoveFromPlaylist": "Remove from playlist", "HeaderSpecials": "Specials", "HeaderTrailers": "Trailers", - "HeaderAudio": "Audio", + "HeaderAudio": "\u00c1udio", "HeaderResolution": "Resolution", - "HeaderVideo": "Video", + "HeaderVideo": "V\u00eddeo", "HeaderRuntime": "Runtime", "HeaderCommunityRating": "Community rating", "HeaderPasswordReset": "Password Reset", @@ -477,11 +483,8 @@ "PersonTypePerson": "Person", "LabelTitleDisplayOrder": "Title display order:", "OptionSortName": "Sort name", - "OptionReleaseDate": "Data de lan\u00e7amento", - "LabelSeasonNumber": "N\u00famero da temporada:", "LabelDiscNumber": "Disc number", "LabelParentNumber": "Parent number", - "LabelEpisodeNumber": "N\u00famero do epis\u00f3dio:", "LabelTrackNumber": "Track number:", "LabelNumber": "Number:", "LabelReleaseDate": "Release date:", @@ -506,14 +509,14 @@ "LabelContentTypeValue": "Content type: {0}", "LabelPathSubstitutionHelp": "Optional: Path substitution can map server paths to network shares that clients can access for direct playback.", "FolderTypeUnset": "Unset (mixed content)", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", + "FolderTypeMovies": "Filmes", + "FolderTypeMusic": "M\u00fasica", + "FolderTypeAdultVideos": "V\u00eddeos adultos", + "FolderTypePhotos": "Fotos", + "FolderTypeMusicVideos": "V\u00eddeos musicais", + "FolderTypeHomeVideos": "V\u00eddeos caseiros", + "FolderTypeGames": "Jogos", + "FolderTypeBooks": "Livros", "FolderTypeTvShows": "TV", "TabMovies": "Filmes", "TabSeries": "S\u00e9ries", @@ -696,7 +699,7 @@ "DashboardTourMobile": "The Emby Server dashboard works great on smartphones and tablets. Manage your server from the palm of your hand anytime, anywhere.", "DashboardTourSync": "Sync your personal media to your devices for offline viewing.", "MessageRefreshQueued": "Refresh queued", - "TabDevices": "Devices", + "TabDevices": "Dispositivos", "TabExtras": "Extras", "DeviceLastUsedByUserName": "Last used by {0}", "HeaderDeleteDevice": "Delete Device", @@ -712,7 +715,7 @@ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", "HeaderConnectionFailure": "Connection Failure", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", - "ButtonSelectServer": "Select server", + "ButtonSelectServer": "Select Server", "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", "DefaultErrorMessage": "There was an error processing the request. Please try again later.", @@ -732,7 +735,7 @@ "SyncMedia": "Sync Media", "HeaderCancelSyncJob": "Cancel Sync", "CancelSyncJobConfirmation": "Cancelling the sync job will remove synced media from the device during the next sync process. Are you sure you wish to proceed?", - "TabSync": "Sync", + "TabSync": "Sincroniza\u00e7\u00e3o", "MessagePleaseSelectDeviceToSyncTo": "Please select a device to sync to.", "MessageSyncJobCreated": "Sync job created.", "LabelSyncTo": "Sync to:", @@ -740,7 +743,7 @@ "LabelQuality": "Quality:", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", - "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", "LabelItemLimit": "Item limit:", @@ -752,9 +755,9 @@ "SyncJobItemStatusConverting": "Converting", "SyncJobItemStatusTransferring": "Transferring", "SyncJobItemStatusSynced": "Synced", - "SyncJobItemStatusFailed": "Failed", - "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "Cancelled", + "SyncJobItemStatusFailed": "Falhou", + "SyncJobItemStatusRemovedFromDevice": "Removido do dispositivo", + "SyncJobItemStatusCancelled": "Cancelado", "LabelProfile": "Profile:", "LabelBitrateMbps": "Bitrate (Mbps):", "EmbyIntroDownloadMessage": "To download and install Emby Server visit {0}.", @@ -762,5 +765,45 @@ "ButtonSignInWithConnect": "Sign in with Emby Connect", "HeaderNewServer": "New Server", "MyDevice": "My Device", - "ButtonRemote": "Remote" + "ButtonRemote": "Remote", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Avan\u00e7ado", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ro.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ro.json new file mode 100644 index 000000000..ee4c6610e --- /dev/null +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ro.json @@ -0,0 +1,809 @@ +{ + "SettingsSaved": "Settings saved.", + "AddUser": "Add User", + "Users": "Users", + "Delete": "Delete", + "Administrator": "Administrator", + "Password": "Password", + "DeleteImage": "Delete Image", + "MessageThankYouForSupporting": "Thank you for supporting Emby.", + "MessagePleaseSupportProject": "Please support Emby.", + "DeleteImageConfirmation": "Are you sure you wish to delete this image?", + "FileReadCancelled": "The file read has been canceled.", + "FileNotFound": "File not found.", + "FileReadError": "An error occurred while reading the file.", + "DeleteUser": "Delete User", + "DeleteUserConfirmation": "Are you sure you wish to delete this user?", + "PasswordResetHeader": "Reset Password", + "PasswordResetComplete": "The password has been reset.", + "PinCodeResetComplete": "The pin code has been reset.", + "PasswordResetConfirmation": "Are you sure you wish to reset the password?", + "PinCodeResetConfirmation": "Are you sure you wish to reset the pin code?", + "HeaderPinCodeReset": "Reset Pin Code", + "PasswordSaved": "Password saved.", + "PasswordMatchError": "Password and password confirmation must match.", + "OptionRelease": "Official Release", + "OptionBeta": "Beta", + "OptionDev": "Dev (Unstable)", + "UninstallPluginHeader": "Uninstall Plugin", + "UninstallPluginConfirmation": "Are you sure you wish to uninstall {0}?", + "NoPluginConfigurationMessage": "This plugin has nothing to configure.", + "NoPluginsInstalledMessage": "You have no plugins installed.", + "BrowsePluginCatalogMessage": "Browse our plugin catalog to view available plugins.", + "MessageKeyEmailedTo": "Key emailed to {0}.", + "MessageKeysLinked": "Keys linked.", + "HeaderConfirmation": "Confirmation", + "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", + "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "Bucura\u021bi-v\u0103 de caracteristicile Bonus", + "TitleLiveTV": "Live TV", + "ButtonCancelSyncJob": "Cancel sync job", + "TitleSync": "Sync", + "HeaderSelectDate": "Select Date", + "ButtonDonate": "Donate", + "LabelRecurringDonationCanBeCancelledHelp": "Dona\u021biile recurente pot fi anulate \u00een orice moment din contul dvs. PayPal.", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Notificari", + "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Emby Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Select the device to control by clicking the cast icon in the upper right corner. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", + "ValueTimeLimitSingleHour": "Time limit: 1 hour", + "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "Utilizatori", + "PluginCategoryGeneral": "General", + "PluginCategoryContentProvider": "Content Providers", + "PluginCategoryScreenSaver": "Screen Savers", + "PluginCategoryTheme": "Themes", + "PluginCategorySync": "Sync", + "PluginCategorySocialIntegration": "Social Networks", + "PluginCategoryNotifications": "Notifications", + "PluginCategoryMetadata": "Metadata", + "PluginCategoryLiveTV": "Live TV", + "PluginCategoryChannel": "Channels", + "HeaderSearch": "Search", + "ValueDateCreated": "Date created: {0}", + "LabelArtist": "Artist", + "LabelMovie": "Movie", + "LabelMusicVideo": "Music Video", + "LabelEpisode": "Episode", + "LabelSeries": "Seriale", + "LabelStopping": "Stopping", + "LabelCancelled": "(cancelled)", + "LabelFailed": "(eroare)", + "ButtonHelp": "Ajutor", + "ButtonSave": "Salveaza", + "ButtonDownload": "Download", + "SyncJobStatusQueued": "Queued", + "SyncJobStatusConverting": "Converting", + "SyncJobStatusFailed": "Failed", + "SyncJobStatusCancelled": "Cancelled", + "SyncJobStatusCompleted": "Synced", + "SyncJobStatusReadyToTransfer": "Ready to Transfer", + "SyncJobStatusTransferring": "Transferring", + "SyncJobStatusCompletedWithError": "Synced with errors", + "SyncJobItemStatusReadyToTransfer": "Ready to Transfer", + "LabelCollection": "Collection", + "HeaderAddToCollection": "Adauga la colectie", + "NewCollectionNameExample": "Exemplu: Star Wars Collection", + "OptionSearchForInternetMetadata": "C\u0103utare pe internet pentru postere \u0219i metadate", + "LabelSelectCollection": "Selecteaza colectia:", + "HeaderDevices": "Devices", + "ButtonScheduledTasks": "Scheduled tasks", + "MessageItemsAdded": "Items added", + "ButtonAddToCollection": "Add to collection", + "HeaderSelectCertificatePath": "Select Certificate Path", + "ConfirmMessageScheduledTaskButton": "This operation normally runs automatically as a scheduled task. It can also be run manually here. To configure the scheduled task, see:", + "HeaderSupporterBenefit": "Un membru sus\u021bin\u0103tor ofer\u0103 beneficii suplimentare, cum ar fi accesul la sincronizare, plugin-uri premium, con\u021binut internet, \u0219i multe altele. {0} Afla\u021bi mai multe {1}.", + "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", + "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", + "ButtonTakeTheTour": "Fa turul", + "HeaderWelcomeBack": "Welcome back!", + "TitlePlugins": "Plugin-uri", + "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", + "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "ButtonPlayTrailer": "Play trailer", + "HeaderLibraryAccess": "Library Access", + "HeaderChannelAccess": "Channel Access", + "HeaderDeviceAccess": "Accesul Dispozitivelor", + "HeaderSelectDevices": "Select Devices", + "ButtonCancelItem": "Cancel item", + "ButtonQueueForRetry": "Queue for retry", + "ButtonReenable": "Re-enable", + "ButtonLearnMore": "Learn more", + "SyncJobItemStatusSyncedMarkForRemoval": "Marked for removal", + "LabelAbortedByServerShutdown": "(Aborted by server shutdown)", + "LabelScheduledTaskLastRan": "Last ran {0}, taking {1}.", + "HeaderDeleteTaskTrigger": "Delete Task Trigger", + "HeaderTaskTriggers": "Task Triggers", + "MessageDeleteTaskTrigger": "Are you sure you wish to delete this task trigger?", + "MessageNoPluginsInstalled": "You have no plugins installed.", + "LabelVersionInstalled": "{0} installed", + "LabelNumberReviews": "{0} Reviews", + "LabelFree": "Free", + "HeaderPlaybackError": "Playback Error", + "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", + "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", + "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", + "HeaderSelectAudio": "Select Audio", + "HeaderSelectSubtitles": "Select Subtitles", + "ButtonMarkForRemoval": "Remove from device", + "ButtonUnmarkForRemoval": "Cancel removal from device", + "LabelDefaultStream": "(Default)", + "LabelForcedStream": "(Forced)", + "LabelDefaultForcedStream": "(Default\/Forced)", + "LabelUnknownLanguage": "Unknown language", + "MessageConfirmSyncJobItemCancellation": "Are you sure you wish to cancel this item?", + "ButtonMute": "Mute", + "ButtonUnmute": "Unmute", + "ButtonStop": "Stop", + "ButtonNextTrack": "Pista urmatoare", + "ButtonPause": "Pause", + "ButtonPlay": "Play", + "ButtonEdit": "Edit", + "ButtonQueue": "Queue", + "ButtonPlaylist": "Playlist", + "ButtonPreviousTrack": "Pista anterioara", + "LabelEnabled": "Enabled", + "LabelDisabled": "Disabled", + "ButtonMoreInformation": "More Information", + "LabelNoUnreadNotifications": "No unread notifications.", + "ButtonViewNotifications": "View notifications", + "ButtonMarkTheseRead": "Mark these read", + "ButtonClose": "Close", + "LabelAllPlaysSentToPlayer": "All plays will be sent to the selected player.", + "MessageInvalidUser": "Invalid username or password. Please try again.", + "HeaderLoginFailure": "Login Failure", + "HeaderAllRecordings": "All Recordings", + "RecommendationBecauseYouLike": "Because you like {0}", + "RecommendationBecauseYouWatched": "Because you watched {0}", + "RecommendationDirectedBy": "Directed by {0}", + "RecommendationStarring": "Starring {0}", + "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", + "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", + "MessageRecordingCancelled": "Recording cancelled.", + "HeaderConfirmSeriesCancellation": "Confirm Series Cancellation", + "MessageConfirmSeriesCancellation": "Are you sure you wish to cancel this series?", + "MessageSeriesCancelled": "Series cancelled.", + "HeaderConfirmRecordingDeletion": "Confirm Recording Deletion", + "MessageConfirmRecordingDeletion": "Are you sure you wish to delete this recording?", + "MessageRecordingDeleted": "Recording deleted.", + "ButonCancelRecording": "Cancel Recording", + "MessageRecordingSaved": "Recording saved.", + "OptionSunday": "Duminica", + "OptionMonday": "Luni", + "OptionTuesday": "Marti", + "OptionWednesday": "Miercuri", + "OptionThursday": "Joi", + "OptionFriday": "Vineri", + "OptionSaturday": "Sambata", + "OptionEveryday": "Every day", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", + "HeaderConfirmDeletion": "Confirm Deletion", + "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", + "LiveTvUpdateAvailable": "(Update available)", + "LabelVersionUpToDate": "Up to date!", + "ButtonResetTuner": "Reset tuner", + "HeaderResetTuner": "Reset Tuner", + "MessageConfirmResetTuner": "Are you sure you wish to reset this tuner? Any active players or recordings will be abruptly stopped.", + "ButtonCancelSeries": "Cancel Series", + "HeaderSeriesRecordings": "Series Recordings", + "LabelAnytime": "Any time", + "StatusRecording": "Recording", + "StatusWatching": "Watching", + "StatusRecordingProgram": "Recording {0}", + "StatusWatchingProgram": "Watching {0}", + "HeaderSplitMedia": "Split Media Apart", + "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", + "HeaderError": "Error", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", + "MessagePleaseSelectOneItem": "Please select at least one item.", + "MessagePleaseSelectTwoItems": "Please select at least two items.", + "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", + "MessageConfirmItemGrouping": "Emby apps will automatically choose the optimal version to play based on device and network performance. Are you sure you wish to continue?", + "HeaderResume": "Reluare", + "HeaderMyViews": "My Views", + "HeaderLibraryFolders": "Media Folders", + "HeaderLatestMedia": "Latest Media", + "ButtonMoreItems": "More...", + "ButtonMore": "More", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteGames": "Favorite Games", + "HeaderRatingsDownloads": "Rating \/ Downloads", + "HeaderConfirmProfileDeletion": "Confirm Profile Deletion", + "MessageConfirmProfileDeletion": "Are you sure you wish to delete this profile?", + "HeaderSelectServerCachePath": "Select Server Cache Path", + "HeaderSelectTranscodingPath": "Select Transcoding Temporary Path", + "HeaderSelectImagesByNamePath": "Select Images By Name Path", + "HeaderSelectMetadataPath": "Select Metadata Path", + "HeaderSelectServerCachePathHelp": "Browse or enter the path to use for server cache files. The folder must be writeable.", + "HeaderSelectTranscodingPathHelp": "Browse or enter the path to use for transcoding temporary files. The folder must be writeable.", + "HeaderSelectImagesByNamePathHelp": "Browse or enter the path to your items by name folder. The folder must be writeable.", + "HeaderSelectMetadataPathHelp": "Browse or enter the path you'd like to store metadata within. The folder must be writeable.", + "HeaderSelectChannelDownloadPath": "Select Channel Download Path", + "HeaderSelectChannelDownloadPathHelp": "Browse or enter the path to use for storing channel cache files. The folder must be writeable.", + "OptionNewCollection": "New...", + "ButtonAdd": "Add", + "ButtonRemove": "Remove", + "LabelChapterDownloaders": "Chapter downloaders:", + "LabelChapterDownloadersHelp": "Enable and rank your preferred chapter downloaders in order of priority. Lower priority downloaders will only be used to fill in missing information.", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderLatestChannelMedia": "Latest Channel Items", + "ButtonOrganizeFile": "Organize File", + "ButtonDeleteFile": "Delete File", + "HeaderOrganizeFile": "Organize File", + "HeaderDeleteFile": "Delete File", + "StatusSkipped": "Skipped", + "StatusFailed": "Failed", + "StatusSuccess": "Success", + "MessageFileWillBeDeleted": "The following file will be deleted:", + "MessageSureYouWishToProceed": "Are you sure you wish to proceed?", + "MessageDuplicatesWillBeDeleted": "In addition the following dupliates will be deleted:", + "MessageFollowingFileWillBeMovedFrom": "The following file will be moved from:", + "MessageDestinationTo": "to:", + "HeaderSelectWatchFolder": "Select Watch Folder", + "HeaderSelectWatchFolderHelp": "Browse or enter the path to your watch folder. The folder must be writeable.", + "OrganizePatternResult": "Result: {0}", + "HeaderRestart": "Restart", + "HeaderShutdown": "Shutdown", + "MessageConfirmRestart": "Are you sure you wish to restart Emby Server?", + "MessageConfirmShutdown": "Are you sure you wish to shutdown Emby Server?", + "ButtonUpdateNow": "Update Now", + "ValueItemCount": "{0} item", + "ValueItemCountPlural": "{0} items", + "NewVersionOfSomethingAvailable": "A new version of {0} is available!", + "VersionXIsAvailableForDownload": "Version {0} is now available for download.", + "LabelVersionNumber": "Version {0}", + "LabelPlayMethodTranscoding": "Transcoding", + "LabelPlayMethodDirectStream": "Direct Streaming", + "LabelPlayMethodDirectPlay": "Direct Playing", + "LabelEpisodeNumber": "Episode number:", + "LabelAudioCodec": "Audio: {0}", + "LabelVideoCodec": "Video: {0}", + "LabelLocalAccessUrl": "Local access: {0}", + "LabelRemoteAccessUrl": "Remote access: {0}", + "LabelRunningOnPort": "Running on http port {0}.", + "LabelRunningOnPorts": "Running on http port {0}, and https port {1}.", + "HeaderLatestFromChannel": "Latest from {0}", + "LabelUnknownLanaguage": "Unknown language", + "HeaderCurrentSubtitles": "Current Subtitles", + "MessageDownloadQueued": "The download has been queued.", + "MessageAreYouSureDeleteSubtitles": "Are you sure you wish to delete this subtitle file?", + "ButtonRemoteControl": "Remote Control", + "HeaderLatestTvRecordings": "Latest Recordings", + "ButtonOk": "Ok", + "ButtonCancel": "Anuleaza", + "ButtonRefresh": "Refresh", + "LabelCurrentPath": "Current path:", + "HeaderSelectMediaPath": "Select Media Path", + "HeaderSelectPath": "Select Path", + "ButtonNetwork": "Network", + "MessageDirectoryPickerInstruction": "Network paths can be entered manually in the event the Network button fails to locate your devices. For example, {0} or {1}.", + "HeaderMenu": "Menu", + "ButtonOpen": "Open", + "ButtonOpenInNewTab": "Open in new tab", + "ButtonShuffle": "Shuffle", + "ButtonInstantMix": "Instant mix", + "ButtonResume": "Resume", + "HeaderScenes": "Scenes", + "HeaderAudioTracks": "Audio Tracks", + "HeaderLibraries": "Libraries", + "HeaderSubtitles": "Subtitles", + "HeaderVideoQuality": "Video Quality", + "MessageErrorPlayingVideo": "There was an error playing the video.", + "MessageEnsureOpenTuner": "Please ensure there is an open tuner availalble.", + "ButtonHome": "Home", + "ButtonDashboard": "Dashboard", + "ButtonReports": "Reports", + "ButtonMetadataManager": "Metadata Manager", + "HeaderTime": "Time", + "HeaderName": "Name", + "HeaderAlbum": "Album", + "HeaderAlbumArtist": "Album Artist", + "HeaderArtist": "Artist", + "LabelAddedOnDate": "Added {0}", + "ButtonStart": "Start", + "LabelSeasonNumber": "Season number:", + "HeaderChannels": "Channels", + "HeaderMediaFolders": "Media Folders", + "HeaderBlockItemsWithNoRating": "Block content with no rating information:", + "OptionBlockOthers": "Others", + "OptionBlockTvShows": "TV Shows", + "OptionBlockTrailers": "Trailers", + "OptionBlockMusic": "Music", + "OptionBlockMovies": "Movies", + "OptionBlockBooks": "Books", + "OptionBlockGames": "Games", + "OptionBlockLiveTvPrograms": "Live TV Programs", + "OptionBlockLiveTvChannels": "Live TV Channels", + "OptionBlockChannelContent": "Internet Channel Content", + "ButtonRevoke": "Revoke", + "MessageConfirmRevokeApiKey": "Are you sure you wish to revoke this api key? The application's connection to Emby Server will be abruptly terminated.", + "HeaderConfirmRevokeApiKey": "Revoke Api Key", + "ValueContainer": "Container: {0}", + "ValueAudioCodec": "Audio Codec: {0}", + "ValueVideoCodec": "Video Codec: {0}", + "ValueCodec": "Codec: {0}", + "ValueConditions": "Conditions: {0}", + "LabelAll": "All", + "HeaderDeleteImage": "Delete Image", + "MessageFileNotFound": "File not found.", + "MessageFileReadError": "An error occurred reading this file.", + "ButtonNextPage": "Next Page", + "ButtonPreviousPage": "Previous Page", + "ButtonMoveLeft": "Move left", + "OptionReleaseDate": "Release date", + "ButtonMoveRight": "Move right", + "ButtonBrowseOnlineImages": "Browse online images", + "HeaderDeleteItem": "Delete Item", + "ConfirmDeleteItem": "Deleting this item will delete it from both the file system and your media library. Are you sure you wish to continue?", + "MessagePleaseEnterNameOrId": "Please enter a name or an external Id.", + "MessageValueNotCorrect": "The value entered is not correct. Please try again.", + "MessageItemSaved": "Item saved.", + "MessagePleaseAcceptTermsOfServiceBeforeContinuing": "Please accept the terms of service before continuing.", + "OptionEnded": "S-a sfarsit", + "OptionContinuing": "Continua", + "OptionOff": "Off", + "OptionOn": "On", + "ButtonSettings": "Settings", + "ButtonUninstall": "Uninstall", + "HeaderFields": "Fields", + "HeaderFieldsHelp": "Slide a field to 'off' to lock it and prevent it's data from being changed.", + "HeaderLiveTV": "Live TV", + "MissingLocalTrailer": "Missing local trailer.", + "MissingPrimaryImage": "Missing primary image.", + "MissingBackdropImage": "Missing backdrop image.", + "MissingLogoImage": "Missing logo image.", + "MissingEpisode": "Missing episode.", + "OptionScreenshots": "Screenshots", + "OptionBackdrops": "Backdrops", + "OptionImages": "Images", + "OptionKeywords": "Keywords", + "OptionTags": "Tags", + "OptionStudios": "Studios", + "OptionName": "Name", + "OptionOverview": "Overview", + "OptionGenres": "Genres", + "OptionParentalRating": "Rating Parental", + "OptionPeople": "People", + "OptionRuntime": "Timp Rulare", + "OptionProductionLocations": "Production Locations", + "OptionBirthLocation": "Birth Location", + "LabelAllChannels": "All channels", + "LabelLiveProgram": "LIVE", + "LabelNewProgram": "NEW", + "LabelPremiereProgram": "PREMIERE", + "LabelHDProgram": "HD", + "HeaderChangeFolderType": "Change Content Type", + "HeaderChangeFolderTypeHelp": "To change the type, please remove and rebuild the folder with the new type.", + "HeaderAlert": "Alert", + "MessagePleaseRestart": "Please restart to finish updating.", + "ButtonRestart": "Restart", + "MessagePleaseRefreshPage": "Please refresh this page to receive new updates from the server.", + "ButtonHide": "Hide", + "MessageSettingsSaved": "Settings saved.", + "ButtonSignOut": "Sign Out", + "ButtonMyProfile": "My Profile", + "ButtonMyPreferences": "My Preferences", + "MessageBrowserDoesNotSupportWebSockets": "This browser does not support web sockets. For a better experience, try a newer browser such as Chrome, Firefox, IE10+, Safari (iOS) or Opera.", + "LabelInstallingPackage": "Installing {0}", + "LabelPackageInstallCompleted": "{0} installation completed.", + "LabelPackageInstallFailed": "{0} installation failed.", + "LabelPackageInstallCancelled": "{0} installation cancelled.", + "TabServer": "Server", + "TabUsers": "Users", + "TabLibrary": "Library", + "TabMetadata": "Metadate", + "TabDLNA": "DLNA", + "TabLiveTV": "Live TV", + "TabAutoOrganize": "Auto-Organize", + "TabPlugins": "Plugins", + "TabAdvanced": "Avansat", + "TabHelp": "Help", + "TabScheduledTasks": "Scheduled Tasks", + "ButtonFullscreen": "Pe tot ecranul", + "ButtonAudioTracks": "Piste audio", + "ButtonSubtitles": "Subtitles", + "ButtonScenes": "Scenes", + "ButtonQuality": "Quality", + "HeaderNotifications": "Notifications", + "HeaderSelectPlayer": "Select Player:", + "ButtonSelect": "Select", + "ButtonNew": "Nou", + "MessageInternetExplorerWebm": "For best results with Internet Explorer please install the WebM playback plugin.", + "HeaderVideoError": "Video Error", + "ButtonAddToPlaylist": "Add to playlist", + "HeaderAddToPlaylist": "Add to Playlist", + "LabelName": "Nume:", + "ButtonSubmit": "Submit", + "LabelSelectPlaylist": "Playlist:", + "OptionNewPlaylist": "New playlist...", + "MessageAddedToPlaylistSuccess": "Ok", + "ButtonView": "View", + "ButtonViewSeriesRecording": "View series recording", + "ValueOriginalAirDate": "Original air date: {0}", + "ButtonRemoveFromPlaylist": "Remove from playlist", + "HeaderSpecials": "Specials", + "HeaderTrailers": "Trailers", + "HeaderAudio": "Muzica", + "HeaderResolution": "Resolution", + "HeaderVideo": "Filme", + "HeaderRuntime": "Runtime", + "HeaderCommunityRating": "Community rating", + "HeaderPasswordReset": "Password Reset", + "HeaderParentalRating": "Parental rating", + "HeaderReleaseDate": "Release date", + "HeaderDateAdded": "Date added", + "HeaderSeries": "Series", + "HeaderSeason": "Season", + "HeaderSeasonNumber": "Season number", + "HeaderNetwork": "Network", + "HeaderYear": "Year", + "HeaderGameSystem": "Game system", + "HeaderPlayers": "Players", + "HeaderEmbeddedImage": "Embedded image", + "HeaderTrack": "Track", + "HeaderDisc": "Disc", + "OptionMovies": "Movies", + "OptionCollections": "Collections", + "OptionSeries": "Series", + "OptionSeasons": "Seasons", + "OptionEpisodes": "Episodes", + "OptionGames": "Games", + "OptionGameSystems": "Game systems", + "OptionMusicArtists": "Music artists", + "OptionMusicAlbums": "Music albums", + "OptionMusicVideos": "Music videos", + "OptionSongs": "Songs", + "OptionHomeVideos": "Home videos", + "OptionBooks": "Books", + "OptionAdultVideos": "Adult videos", + "ButtonUp": "Up", + "ButtonDown": "Down", + "LabelMetadataReaders": "Metadata readers:", + "LabelMetadataReadersHelp": "Rank your preferred local metadata sources in order of priority. The first file found will be read.", + "LabelMetadataDownloaders": "Metadata downloaders:", + "LabelMetadataDownloadersHelp": "Enable and rank your preferred metadata downloaders in order of priority. Lower priority downloaders will only be used to fill in missing information.", + "LabelMetadataSavers": "Metadata savers:", + "LabelMetadataSaversHelp": "Choose the file formats to save your metadata to.", + "LabelImageFetchers": "Image fetchers:", + "LabelImageFetchersHelp": "Enable and rank your preferred image fetchers in order of priority.", + "ButtonQueueAllFromHere": "Queue all from here", + "ButtonPlayAllFromHere": "Play all from here", + "LabelDynamicExternalId": "{0} Id:", + "HeaderIdentify": "Identify Item", + "PersonTypePerson": "Person", + "LabelTitleDisplayOrder": "Title display order:", + "OptionSortName": "Sort name", + "LabelDiscNumber": "Disc number", + "LabelParentNumber": "Parent number", + "LabelTrackNumber": "Track number:", + "LabelNumber": "Number:", + "LabelReleaseDate": "Release date:", + "LabelEndDate": "End date:", + "LabelYear": "Year:", + "LabelDateOfBirth": "Date of birth:", + "LabelBirthYear": "Birth year:", + "LabelBirthDate": "Birth date:", + "LabelDeathDate": "Death date:", + "HeaderRemoveMediaLocation": "Remove Media Location", + "MessageConfirmRemoveMediaLocation": "Are you sure you wish to remove this location?", + "HeaderRenameMediaFolder": "Rename Media Folder", + "LabelNewName": "New name:", + "HeaderAddMediaFolder": "Add Media Folder", + "HeaderAddMediaFolderHelp": "Name (Movies, Music, TV, etc):", + "HeaderRemoveMediaFolder": "Remove Media Folder", + "MessageTheFollowingLocationWillBeRemovedFromLibrary": "The following media locations will be removed from your library:", + "MessageAreYouSureYouWishToRemoveMediaFolder": "Are you sure you wish to remove this media folder?", + "ButtonRename": "Rename", + "ButtonChangeType": "Change type", + "HeaderMediaLocations": "Media Locations", + "LabelContentTypeValue": "Content type: {0}", + "LabelPathSubstitutionHelp": "Optional: Path substitution can map server paths to network shares that clients can access for direct playback.", + "FolderTypeUnset": "Unset (mixed content)", + "FolderTypeMovies": "Filme", + "FolderTypeMusic": "Muzica", + "FolderTypeAdultVideos": "Filme Porno", + "FolderTypePhotos": "Fotografii", + "FolderTypeMusicVideos": "Videoclipuri", + "FolderTypeHomeVideos": "Video Personale", + "FolderTypeGames": "Jocuri", + "FolderTypeBooks": "Carti", + "FolderTypeTvShows": "Seriale TV", + "TabMovies": "Filme", + "TabSeries": "Series", + "TabEpisodes": "Episoade", + "TabTrailers": "Trailere", + "TabGames": "Games", + "TabAlbums": "Albume", + "TabSongs": "Cantece", + "TabMusicVideos": "Videoclipuri", + "BirthPlaceValue": "Birth place: {0}", + "DeathDateValue": "Died: {0}", + "BirthDateValue": "Born: {0}", + "HeaderLatestReviews": "Latest Reviews", + "HeaderPluginInstallation": "Plugin Installation", + "MessageAlreadyInstalled": "This version is already installed.", + "ValueReviewCount": "{0} Reviews", + "MessageYouHaveVersionInstalled": "You currently have version {0} installed.", + "MessageTrialExpired": "The trial period for this feature has expired", + "MessageTrialWillExpireIn": "The trial period for this feature will expire in {0} day(s)", + "MessageInstallPluginFromApp": "This plugin must be installed from with in the app you intend to use it in.", + "ValuePriceUSD": "Price: {0} (USD)", + "MessageFeatureIncludedWithSupporter": "You are registered for this feature, and will be able to continue using it with an active supporter membership.", + "MessageChangeRecurringPlanConfirm": "After completing this transaction you will need to cancel your previous recurring donation from within your PayPal account. Thank you for supporting Emby.", + "MessageSupporterMembershipExpiredOn": "Your supporter membership expired on {0}.", + "MessageYouHaveALifetimeMembership": "You have a lifetime supporter membership. You can provide additional donations on a one-time or recurring basis using the options below. Thank you for supporting Emby.", + "MessageYouHaveAnActiveRecurringMembership": "You have an active {0} membership. You can upgrade your plan using the options below.", + "ButtonDelete": "Delete", + "HeaderEmbyAccountAdded": "Emby Account Added", + "MessageEmbyAccountAdded": "The Emby account has been added to this user.", + "MessagePendingEmbyAccountAdded": "The Emby account has been added to this user. An email will be sent to the owner of the account. The invitation will need to be confirmed by clicking a link within the email.", + "HeaderEmbyAccountRemoved": "Emby Account Removed", + "MessageEmbyAccontRemoved": "The Emby account has been removed from this user.", + "TooltipLinkedToEmbyConnect": "Linked to Emby Connect", + "HeaderUnrated": "Unrated", + "ValueDiscNumber": "Disc {0}", + "HeaderUnknownDate": "Unknown Date", + "HeaderUnknownYear": "Unknown Year", + "ValueMinutes": "{0} min", + "ButtonPlayExternalPlayer": "Play with external player", + "HeaderSelectExternalPlayer": "Select External Player", + "HeaderExternalPlayerPlayback": "External Player Playback", + "ButtonImDone": "I'm Done", + "OptionWatched": "Watched", + "OptionUnwatched": "Unwatched", + "ExternalPlayerPlaystateOptionsHelp": "Specify how you would like to resume playing this video next time.", + "LabelMarkAs": "Mark as:", + "OptionInProgress": "In-Progress", + "LabelResumePoint": "Resume point:", + "ValueOneMovie": "1 movie", + "ValueMovieCount": "{0} movies", + "ValueOneTrailer": "1 trailer", + "ValueTrailerCount": "{0} trailers", + "ValueOneSeries": "1 series", + "ValueSeriesCount": "{0} series", + "ValueOneEpisode": "1 episode", + "ValueEpisodeCount": "{0} episodes", + "ValueOneGame": "1 game", + "ValueGameCount": "{0} games", + "ValueOneAlbum": "1 album", + "ValueAlbumCount": "{0} albums", + "ValueOneSong": "1 song", + "ValueSongCount": "{0} songs", + "ValueOneMusicVideo": "1 music video", + "ValueMusicVideoCount": "{0} music videos", + "HeaderOffline": "Offline", + "HeaderUnaired": "Unaired", + "HeaderMissing": "Missing", + "ButtonWebsite": "Website", + "TooltipFavorite": "Favorite", + "TooltipLike": "Like", + "TooltipDislike": "Dislike", + "TooltipPlayed": "Played", + "ValueSeriesYearToPresent": "{0}-Present", + "ValueAwards": "Awards: {0}", + "ValueBudget": "Budget: {0}", + "ValueRevenue": "Revenue: {0}", + "ValuePremiered": "Premiered {0}", + "ValuePremieres": "Premieres {0}", + "ValueStudio": "Studio: {0}", + "ValueStudios": "Studios: {0}", + "ValueStatus": "Status: {0}", + "ValueSpecialEpisodeName": "Special - {0}", + "LabelLimit": "Limit:", + "ValueLinks": "Links: {0}", + "HeaderPeople": "People", + "HeaderCastAndCrew": "Cast & Crew", + "ValueArtist": "Artist: {0}", + "ValueArtists": "Artists: {0}", + "HeaderTags": "Tags", + "MediaInfoCameraMake": "Camera make", + "MediaInfoCameraModel": "Camera model", + "MediaInfoAltitude": "Altitude", + "MediaInfoAperture": "Aperture", + "MediaInfoExposureTime": "Exposure time", + "MediaInfoFocalLength": "Focal length", + "MediaInfoOrientation": "Orientation", + "MediaInfoIsoSpeedRating": "Iso speed rating", + "MediaInfoLatitude": "Latitude", + "MediaInfoLongitude": "Longitude", + "MediaInfoShutterSpeed": "Shutter speed", + "MediaInfoSoftware": "Software", + "HeaderIfYouLikeCheckTheseOut": "If you like {0}, check these out...", + "HeaderPlotKeywords": "Plot Keywords", + "HeaderMovies": "Movies", + "HeaderAlbums": "Albums", + "HeaderGames": "Games", + "HeaderBooks": "Books", + "HeaderEpisodes": "Episoade", + "HeaderSeasons": "Seasons", + "HeaderTracks": "Tracks", + "HeaderItems": "Items", + "HeaderOtherItems": "Other Items", + "ButtonFullReview": "Full review", + "ValueAsRole": "as {0}", + "ValueGuestStar": "Guest star", + "MediaInfoSize": "Size", + "MediaInfoPath": "Path", + "MediaInfoFormat": "Format", + "MediaInfoContainer": "Container", + "MediaInfoDefault": "Default", + "MediaInfoForced": "Forced", + "MediaInfoExternal": "External", + "MediaInfoTimestamp": "Timestamp", + "MediaInfoPixelFormat": "Pixel format", + "MediaInfoBitDepth": "Bit depth", + "MediaInfoSampleRate": "Sample rate", + "MediaInfoBitrate": "Bitrate", + "MediaInfoChannels": "Channels", + "MediaInfoLayout": "Layout", + "MediaInfoLanguage": "Language", + "MediaInfoCodec": "Codec", + "MediaInfoProfile": "Profile", + "MediaInfoLevel": "Level", + "MediaInfoAspectRatio": "Aspect ratio", + "MediaInfoResolution": "Resolution", + "MediaInfoAnamorphic": "Anamorphic", + "MediaInfoInterlaced": "Interlaced", + "MediaInfoFramerate": "Framerate", + "MediaInfoStreamTypeAudio": "Audio", + "MediaInfoStreamTypeData": "Data", + "MediaInfoStreamTypeVideo": "Video", + "MediaInfoStreamTypeSubtitle": "Subtitle", + "MediaInfoStreamTypeEmbeddedImage": "Embedded Image", + "MediaInfoRefFrames": "Ref frames", + "TabPlayback": "Playback", + "TabNotifications": "Notificari", + "TabExpert": "Expert", + "HeaderSelectCustomIntrosPath": "Select Custom Intros Path", + "HeaderRateAndReview": "Rate and Review", + "HeaderThankYou": "Thank You", + "MessageThankYouForYourReview": "Thank you for your review.", + "LabelYourRating": "Your rating:", + "LabelFullReview": "Full review:", + "LabelShortRatingDescription": "Short rating summary:", + "OptionIRecommendThisItem": "I recommend this item", + "WebClientTourContent": "View your recently added media, next episodes, and more. The green circles indicate how many unplayed items you have.", + "WebClientTourMovies": "Play movies, trailers and more from any device with a web browser", + "WebClientTourMouseOver": "Hold the mouse over any poster for quick access to important information", + "WebClientTourTapHold": "Tap and hold or right click any poster for a context menu", + "WebClientTourMetadataManager": "Click edit to open the metadata manager", + "WebClientTourPlaylists": "Easily create playlists and instant mixes, and play them on any device", + "WebClientTourCollections": "Create movie collections to group box sets together", + "WebClientTourUserPreferences1": "User preferences allow you to customize the way your library is presented in all of your Emby apps", + "WebClientTourUserPreferences2": "Configure your audio and subtitle language settings once, for every Emby app", + "WebClientTourUserPreferences3": "Design the web client home page to your liking", + "WebClientTourUserPreferences4": "Configure backdrops, theme songs and external players", + "WebClientTourMobile1": "The web client works great on smartphones and tablets...", + "WebClientTourMobile2": "and easily controls other devices and Emby apps", + "WebClientTourMySync": "Sync your personal media to your devices for offline viewing.", + "MessageEnjoyYourStay": "Enjoy your stay", + "DashboardTourDashboard": "The server dashboard allows you to monitor your server and your users. You'll always know who is doing what and where they are.", + "DashboardTourHelp": "In-app help provides easy buttons to open wiki pages relating to the on-screen content.", + "DashboardTourUsers": "Easily create user accounts for your friends and family, each with their own permissions, library access, parental controls and more.", + "DashboardTourCinemaMode": "Cinema mode brings the theater experience straight to your living room with the ability to play trailers and custom intros before the main feature.", + "DashboardTourChapters": "Enable chapter image generation for your videos for a more pleasing presentation while viewing.", + "DashboardTourSubtitles": "Automatically download subtitles for your videos in any language.", + "DashboardTourPlugins": "Install plugins such as internet video channels, live tv, metadata scanners, and more.", + "DashboardTourNotifications": "Automatically send notifications of server events to your mobile device, email and more.", + "DashboardTourScheduledTasks": "Easily manage long running operations with scheduled tasks. Decide when they run, and how often.", + "DashboardTourMobile": "The Emby Server dashboard works great on smartphones and tablets. Manage your server from the palm of your hand anytime, anywhere.", + "DashboardTourSync": "Sync your personal media to your devices for offline viewing.", + "MessageRefreshQueued": "Refresh queued", + "TabDevices": "Devices", + "TabExtras": "Extras", + "DeviceLastUsedByUserName": "Last used by {0}", + "HeaderDeleteDevice": "Delete Device", + "DeleteDeviceConfirmation": "Are you sure you wish to delete this device? It will reappear the next time a user signs in with it.", + "LabelEnableCameraUploadFor": "Enable camera upload for:", + "HeaderSelectUploadPath": "Select Upload Path", + "LabelEnableCameraUploadForHelp": "Uploads will occur automatically in the background when signed into Emby.", + "ErrorMessageStartHourGreaterThanEnd": "End time must be greater than the start time.", + "ButtonLibraryAccess": "Library access", + "ButtonParentalControl": "Parental control", + "HeaderInvitationSent": "Invitation Sent", + "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", + "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", + "ButtonSelectServer": "Select Server", + "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", + "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", + "DefaultErrorMessage": "There was an error processing the request. Please try again later.", + "ButtonAccept": "Accept", + "ButtonReject": "Reject", + "HeaderForgotPassword": "Forgot Password", + "MessageContactAdminToResetPassword": "Please contact your system administrator to reset your password.", + "MessageForgotPasswordInNetworkRequired": "Please try again within your home network to initiate the password reset process.", + "MessageForgotPasswordFileCreated": "The following file has been created on your server and contains instructions on how to proceed:", + "MessageForgotPasswordFileExpiration": "The reset pin will expire at {0}.", + "MessageInvalidForgotPasswordPin": "An invalid or expired pin was entered. Please try again.", + "MessagePasswordResetForUsers": "Passwords have been removed for the following users:", + "HeaderInviteGuest": "Invite Guest", + "ButtonLinkMyEmbyAccount": "Link my account now", + "MessageConnectAccountRequiredToInviteGuest": "In order to invite guests you need to first link your Emby account to this server.", + "ButtonSync": "Sync", + "SyncMedia": "Sync Media", + "HeaderCancelSyncJob": "Cancel Sync", + "CancelSyncJobConfirmation": "Cancelling the sync job will remove synced media from the device during the next sync process. Are you sure you wish to proceed?", + "TabSync": "Sync", + "MessagePleaseSelectDeviceToSyncTo": "Please select a device to sync to.", + "MessageSyncJobCreated": "Sync job created.", + "LabelSyncTo": "Sync to:", + "LabelSyncJobName": "Sync job name:", + "LabelQuality": "Quality:", + "HeaderSettings": "Settings", + "OptionAutomaticallySyncNewContent": "Automatically sync new content", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", + "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", + "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", + "LabelItemLimit": "Item limit:", + "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be synced.", + "MessageBookPluginRequired": "Requires installation of the Bookshelf plugin", + "MessageGamePluginRequired": "Requires installation of the GameBrowser plugin", + "MessageUnsetContentHelp": "Content will be displayed as plain folders. For best results use the metadata manager to set the content types of sub-folders.", + "SyncJobItemStatusQueued": "Queued", + "SyncJobItemStatusConverting": "Converting", + "SyncJobItemStatusTransferring": "Transferring", + "SyncJobItemStatusSynced": "Synced", + "SyncJobItemStatusFailed": "Failed", + "SyncJobItemStatusRemovedFromDevice": "Removed from device", + "SyncJobItemStatusCancelled": "Cancelled", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):", + "EmbyIntroDownloadMessage": "To download and install Emby Server visit {0}.", + "ButtonNewServer": "New Server", + "ButtonSignInWithConnect": "Sign in with Emby Connect", + "HeaderNewServer": "New Server", + "MyDevice": "My Device", + "ButtonRemote": "Remote", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Advanced", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" +}
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json index 8898e8d90..7b4d0f7ae 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json @@ -24,7 +24,7 @@ "PasswordMatchError": "\u041f\u0430\u0440\u043e\u043b\u044c \u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u043e\u043b\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c", "OptionRelease": "\u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a", "OptionBeta": "\u0411\u0435\u0442\u0430-\u0432\u0435\u0440\u0441\u0438\u044f", - "OptionDev": "\u0412\u0435\u0440\u0441\u0438\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 (\u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0430\u044f)", + "OptionDev": "\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043e\u0447\u043d\u0430\u044f (\u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0430\u044f)", "UninstallPluginHeader": "\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430", "UninstallPluginConfirmation": "\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c {0}?", "NoPluginConfigurationMessage": "\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u0435 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a.", @@ -36,17 +36,20 @@ "MessageKeyUpdated": "\u041a\u043b\u044e\u0447 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430 \u0431\u044b\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d.", "MessageKeyRemoved": "\u041a\u043b\u044e\u0447 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430 \u0431\u044b\u043b \u0443\u0434\u0430\u043b\u0451\u043d.", "HeaderSupportTheTeam": "\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 Emby", - "TextEnjoyBonusFeatures": "\u0412\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u0431\u043e\u043d\u0443\u0441\u043d\u044b\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438", + "TextEnjoyBonusFeatures": "\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0431\u043e\u043d\u0443\u0441\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438", "TitleLiveTV": "\u0422\u0412-\u044d\u0444\u0438\u0440", + "ButtonCancelSyncJob": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e", "TitleSync": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f", + "HeaderSelectDate": "\u0412\u044b\u0431\u043e\u0440 \u0434\u0430\u0442\u044b", "ButtonDonate": "\u041f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u0442\u044c", + "LabelRecurringDonationCanBeCancelledHelp": "\u0420\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u043f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0447\u0435\u0440\u0435\u0437 \u0432\u0430\u0448\u0443 \u0443\u0447\u0451\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c PayPal.", "HeaderMyMedia": "\u041c\u043e\u0438 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435", "TitleNotifications": "\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f", "ErrorLaunchingChromecast": "\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 Chromecast. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u0430\u0448\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u043a \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u043e\u0439 \u0441\u0435\u0442\u0438.", "MessageErrorLoadingSupporterInfo": "\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0435. \u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u043f\u043e\u0437\u0436\u0435.", - "MessageLinkYourSupporterKey": "\u0421\u0432\u044f\u0436\u0438\u0442\u0435 \u0432\u0430\u0448 \u043a\u043b\u044e\u0447 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430 \u0441\u043e \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e {0} \u0447\u043b\u0435\u043d\u043e\u0432 Emby Connect, \u0447\u0442\u043e\u0431\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c:", + "MessageLinkYourSupporterKey": "\u0421\u0432\u044f\u0436\u0438\u0442\u0435 \u0432\u0430\u0448 \u043a\u043b\u044e\u0447 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430 \u0441\u043e \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e {0} \u0447\u043b\u0435\u043d\u043e\u0432 Emby Connect, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c:", "HeaderConfirmRemoveUser": "\u0418\u0437\u044a\u044f\u0442\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", - "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Select the device to control by clicking the cast icon in the upper right corner. Swipe down anywhere on this screen to go back to where you came from.", + "MessageSwipeDownOnRemoteControl": "\u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c. \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u043d\u0430\u0436\u0430\u0432 \u043d\u0430 \u0437\u043d\u0430\u0447\u043e\u043a \u043a\u0430\u0441\u0442\u0430 \u0432 \u043f\u0440\u0430\u0432\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0433\u043b\u0443. \u041f\u0440\u043e\u0432\u0435\u0434\u0438\u0442\u0435 \u0432\u043d\u0438\u0437 \u0432 \u043b\u044e\u0431\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u043a\u0440\u0430\u043d\u0435, \u0447\u0442\u043e\u0431\u044b \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u0442\u0443\u0434\u0430, \u043e\u0442\u043a\u0443\u0434\u0430 \u0432\u044b \u043f\u0440\u0438\u0448\u043b\u0438.", "MessageConfirmRemoveConnectSupporter": "\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0437\u044a\u044f\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430 \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f?", "ValueTimeLimitSingleHour": "\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438: 1 \u0447\u0430\u0441", "ValueTimeLimitMultiHour": "\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438: {0} \u0447\u0430\u0441(\u0430\/\u043e\u0432)", @@ -71,7 +74,7 @@ "LabelStopping": "\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430", "LabelCancelled": "(\u043e\u0442\u043c\u0435\u043d\u0435\u043d\u043e)", "LabelFailed": "(\u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e)", - "ButtonHelp": "\u041a \u0441\u043f\u0440\u0430\u0432\u043a\u0435 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435", + "ButtonHelp": "\u0421\u043f\u0440\u0430\u0432\u043a\u0430...", "ButtonSave": "\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c", "ButtonDownload": "\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c", "SyncJobStatusQueued": "\u0412 \u043e\u0447\u0435\u0440\u0435\u0434\u0438", @@ -79,17 +82,17 @@ "SyncJobStatusFailed": "\u041d\u0435\u0443\u0434\u0430\u0447\u043d\u043e", "SyncJobStatusCancelled": "\u041e\u0442\u043c\u0435\u043d\u0435\u043d\u043e", "SyncJobStatusCompleted": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043e", - "SyncJobStatusReadyToTransfer": "\u0413\u043e\u0442\u043e\u0432 \u043a \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0443", - "SyncJobStatusTransferring": "\u041f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u0441\u044f", + "SyncJobStatusReadyToTransfer": "\u0413\u043e\u0442\u043e\u0432\u043e \u043a \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0443", + "SyncJobStatusTransferring": "\u041f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u0441\u044f", "SyncJobStatusCompletedWithError": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0441 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438", - "SyncJobItemStatusReadyToTransfer": "\u0413\u043e\u0442\u043e\u0432 \u043a \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0443", + "SyncJobItemStatusReadyToTransfer": "\u0413\u043e\u0442\u043e\u0432\u043e \u043a \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0443", "LabelCollection": "\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f", - "HeaderAddToCollection": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e", + "HeaderAddToCollection": "\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438", "NewCollectionNameExample": "\u041f\u0440\u0438\u043c\u0435\u0440: \u0417\u0432\u0451\u0437\u0434\u043d\u044b\u0435 \u0432\u043e\u0439\u043d\u044b (\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f)", - "OptionSearchForInternetMetadata": "\u0418\u0441\u043a\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435", + "OptionSearchForInternetMetadata": "\u0418\u0441\u043a\u0430\u0442\u044c \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435", "LabelSelectCollection": "\u0412\u044b\u0431\u043e\u0440 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438:", "HeaderDevices": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430", - "ButtonScheduledTasks": "\u041a \u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0443", + "ButtonScheduledTasks": "\u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a...", "MessageItemsAdded": "\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b", "ButtonAddToCollection": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438", "HeaderSelectCertificatePath": "\u0412\u044b\u0431\u043e\u0440 \u043f\u0443\u0442\u0438 \u043a \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0443", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "\u0427\u043b\u0435\u043d\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438, \u043f\u0440\u0435\u043c\u0438\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044e \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0438 \u0442.\u0434. {0}\u0423\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435{1}.", "LabelSyncNoTargetsHelp": "\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0445 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e, \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043e.", "HeaderWelcomeToProjectServerDashboard": "\u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0418\u043d\u0444\u043e\u043f\u0430\u043d\u0435\u043b\u0438 Emby Server", - "HeaderWelcomeToProjectWebClient": "\u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442\u0435 Emby", + "HeaderWelcomeToProjectWebClient": "\u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u044b \u0432 Emby", "ButtonTakeTheTour": "\u041e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f", "HeaderWelcomeBack": "\u0417\u0430\u0445\u043e\u0434\u0438\u0442\u0435 \u0435\u0449\u0451!", "TitlePlugins": "\u041f\u043b\u0430\u0433\u0438\u043d\u044b", "ButtonTakeTheTourToSeeWhatsNew": "\u041e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043d\u043e\u0432\u0430\u0446\u0438\u044f\u043c\u0438", "MessageNoSyncJobsFound": "\u0417\u0430\u0434\u0430\u043d\u0438\u0439 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e. \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043d\u043e\u043f\u043e\u043a \u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0445\u0441\u044f \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443.", + "ButtonPlayTrailer": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0442\u0440\u0435\u0439\u043b\u0435\u0440", "HeaderLibraryAccess": "\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435", "HeaderChannelAccess": "\u0414\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u043a\u0430\u043d\u0430\u043b\u0430\u043c", "HeaderDeviceAccess": "\u0414\u043e\u0441\u0442\u0443\u043f \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430", @@ -138,17 +142,16 @@ "ButtonMute": "\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0437\u0432\u0443\u043a", "ButtonUnmute": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0437\u0432\u0443\u043a", "ButtonStop": "\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c", - "ButtonNextTrack": "\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0442\u0440\u0435\u043a", + "ButtonNextTrack": "\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0434\u043e\u0440\u043e\u0436\u043a\u0430...", "ButtonPause": "\u041f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c", - "ButtonPlay": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438", - "ButtonEdit": "\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440.", - "ButtonQueue": "\u0412 \u043e\u0447\u0435\u0440\u0435\u0434\u044c", - "ButtonPlayTrailer": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0442\u0440\u0435\u0439\u043b\u0435\u0440", - "ButtonPlaylist": "\u041a \u0441\u043f\u0438\u0441\u043a\u0443 \u0432\u043e\u0441\u043f\u0440-\u0438\u044f", - "ButtonPreviousTrack": "\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0442\u0440\u0435\u043a", + "ButtonPlay": "\u0412\u043e\u0441\u043f\u0440.", + "ButtonEdit": "\u041f\u0440\u0430\u0432\u0438\u0442\u044c", + "ButtonQueue": "\u0412 \u043e\u0447\u0435\u0440\u0435\u0434\u044c...", + "ButtonPlaylist": "\u0421\u043f\u0438\u0441\u043e\u043a \u0432\u043e\u0441\u043f\u0440-\u0438\u044f...", + "ButtonPreviousTrack": "\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0434\u043e\u0440\u043e\u0436\u043a\u0430...", "LabelEnabled": "\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u043e", "LabelDisabled": "\u0412\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043e", - "ButtonMoreInformation": "\u041a \u0434\u043e\u043f. \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438", + "ButtonMoreInformation": "\u0414\u043e\u043f. \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f...", "LabelNoUnreadNotifications": "\u041d\u0435\u0442 \u043d\u0435\u043f\u0440\u043e\u0447\u0442\u0451\u043d\u043d\u044b\u0445 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439.", "ButtonViewNotifications": "\u0421\u043c. \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f", "ButtonMarkTheseRead": "\u041e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u043a\u0430\u043a \u043f\u0440\u043e\u0447\u0442\u0451\u043d\u043d\u044b\u0435", @@ -209,7 +212,7 @@ "HeaderLibraryFolders": "\u041c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043a\u0438", "HeaderLatestMedia": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435", "ButtonMoreItems": "\u0415\u0449\u0451...", - "ButtonMore": "\u0415\u0449\u0451", + "ButtonMore": "\u0415\u0449\u0451...", "HeaderFavoriteMovies": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0444\u0438\u043b\u044c\u043c\u044b", "HeaderFavoriteShows": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0422\u0412-\u0446\u0438\u043a\u043b\u044b", "HeaderFavoriteEpisodes": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b", @@ -229,7 +232,7 @@ "HeaderSelectChannelDownloadPathHelp": "\u041d\u0430\u0439\u0434\u0438\u0442\u0435 \u0438\u043b\u0438 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043f\u0443\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u043a\u0435\u0448\u0430 \u043a\u0430\u043d\u0430\u043b\u043e\u0432. \u041f\u0430\u043f\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438.", "OptionNewCollection": "\u041d\u043e\u0432\u0430\u044f...", "ButtonAdd": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c", - "ButtonRemove": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c", + "ButtonRemove": "\u0418\u0437\u044a\u044f\u0442\u044c", "LabelChapterDownloaders": "\u0417\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0438 \u0441\u0446\u0435\u043d:", "LabelChapterDownloadersHelp": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0438 \u0440\u0430\u043d\u0436\u0438\u0440\u0443\u0439\u0442\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0438 \u0441\u0446\u0435\u043d \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430. \u0417\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0438 \u043d\u0438\u0437\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0435\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.", "HeaderFavoriteAlbums": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0430\u043b\u044c\u0431\u043e\u043c\u044b", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "\u041f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442\u0441\u044f", "LabelPlayMethodDirectStream": "\u0422\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e", "LabelPlayMethodDirectPlay": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e", + "LabelEpisodeNumber": "\u041d\u043e\u043c\u0435\u0440 \u044d\u043f\u0438\u0437\u043e\u0434\u0430", "LabelAudioCodec": "\u0410\u0443\u0434\u0438\u043e: {0}", "LabelVideoCodec": "\u0412\u0438\u0434\u0435\u043e: {0}", "LabelLocalAccessUrl": "\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f: {0}", @@ -273,42 +277,43 @@ "HeaderCurrentSubtitles": "\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044b", "MessageDownloadQueued": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u044b\u043b\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c.", "MessageAreYouSureDeleteSubtitles": "\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0441\u0443\u0431\u0438\u0442\u0440\u043e\u0432?", - "ButtonRemoteControl": "\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e", + "ButtonRemoteControl": "\u0423\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435...", "HeaderLatestTvRecordings": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438", "ButtonOk": "\u041e\u041a", "ButtonCancel": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c", - "ButtonRefresh": "\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c", + "ButtonRefresh": "\u041f\u043e\u0434\u043d\u043e\u0432\u0438\u0442\u044c", "LabelCurrentPath": "\u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u0443\u0442\u044c:", "HeaderSelectMediaPath": "\u0412\u044b\u0431\u043e\u0440 \u043f\u0443\u0442\u0438 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445", "HeaderSelectPath": "\u0412\u044b\u0431\u043e\u0440 \u043f\u0443\u0442\u0438", - "ButtonNetwork": "\u041a \u0441\u0435\u0442\u0438", + "ButtonNetwork": "\u0421\u0435\u0442\u044c...", "MessageDirectoryPickerInstruction": "\u0421\u0435\u0442\u0435\u0432\u044b\u0435 \u043f\u0443\u0442\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432\u0432\u0435\u0441\u0442\u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043a\u043d\u043e\u043f\u043a\u0438 \u00ab\u0421\u0435\u0442\u044c\u00bb \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u0431\u043e\u0439 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: {0} \u0438\u043b\u0438 {1}.", "HeaderMenu": "\u041c\u0435\u043d\u044e", "ButtonOpen": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c", "ButtonOpenInNewTab": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u043d\u043e\u0432\u043e\u0439 \u0432\u043a\u043b\u0430\u0434\u043a\u0435", "ButtonShuffle": "\u041f\u0435\u0440\u0435\u043c\u0435\u0448\u0430\u0442\u044c", - "ButtonInstantMix": "\u0410\u0432\u0442\u043e\u043c\u0438\u043a\u0441", + "ButtonInstantMix": "\u0410\u0432\u0442\u043e\u043c\u0438\u043a\u0441...", "ButtonResume": "\u0412\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c", "HeaderScenes": "\u0421\u0446\u0435\u043d\u044b", "HeaderAudioTracks": "\u0410\u0443\u0434\u0438\u043e\u0434\u043e\u0440\u043e\u0436\u043a\u0438", "HeaderLibraries": "\u041c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438", - "HeaderSubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u044b", + "HeaderSubtitles": "\u0421\u0443\u0431\u0442.", "HeaderVideoQuality": "\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0438\u0434\u0435\u043e", "MessageErrorPlayingVideo": "\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u0432\u0438\u0434\u0435\u043e.", "MessageEnsureOpenTuner": "\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u044e\u043d\u0435\u0440.", - "ButtonHome": "\u0413\u043b\u0430\u0432\u043d\u043e\u0435", - "ButtonDashboard": "\u041a \u0418\u043d\u0444\u043e\u043f\u0430\u043d\u0435\u043b\u0438", - "ButtonReports": "\u041a \u043e\u0442\u0447\u0451\u0442\u0430\u043c", - "ButtonMetadataManager": "\u041a \u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0443 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445", + "ButtonHome": "\u0413\u043b\u0430\u0432\u043d\u043e\u0435...", + "ButtonDashboard": "\u0418\u043d\u0444\u043e\u043f\u0430\u043d\u0435\u043b\u044c...", + "ButtonReports": "\u041e\u0442\u0447\u0451\u0442\u044b...", + "ButtonMetadataManager": "\u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445...", "HeaderTime": "\u0412\u0440\u0435\u043c\u044f", "HeaderName": "\u0418\u043c\u044f (\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435)", "HeaderAlbum": "\u0410\u043b\u044c\u0431\u043e\u043c", - "HeaderAlbumArtist": "\u0410\u043b\u044c\u0431\u043e\u043c\u043d\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c", + "HeaderAlbumArtist": "\u0410\u043b\u044c\u0431\u043e\u043c. \u0438\u0441\u043f-\u043b\u044c", "HeaderArtist": "\u0418\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c", "LabelAddedOnDate": "\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e {0}", "ButtonStart": "\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c", + "LabelSeasonNumber": "\u041d\u043e\u043c\u0435\u0440 \u0441\u0435\u0437\u043e\u043d\u0430:", "HeaderChannels": "\u041a\u0430\u043d\u0430\u043b\u044b", - "HeaderMediaFolders": "\u041f\u0430\u043f\u043a\u0438 \u0441 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438", + "HeaderMediaFolders": "\u041c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043a\u0438", "HeaderBlockItemsWithNoRating": "\u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0431\u0435\u0437 \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u043d\u043e\u0439 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438:", "OptionBlockOthers": "\u0414\u0440\u0443\u0433\u0438\u0435", "OptionBlockTvShows": "\u0422\u0412-\u0446\u0438\u043a\u043b\u044b", @@ -332,11 +337,12 @@ "HeaderDeleteImage": "\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u0430", "MessageFileNotFound": "\u0424\u0430\u0439\u043b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d.", "MessageFileReadError": "\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430.", - "ButtonNextPage": "\u041a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435", - "ButtonPreviousPage": "\u041a \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435", + "ButtonNextPage": "\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430...", + "ButtonPreviousPage": "\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430...", "ButtonMoveLeft": "\u0414\u0432\u0438\u0433\u0430\u0442\u044c \u0432\u043b\u0435\u0432\u043e", + "OptionReleaseDate": "\u0414\u0430\u0442\u0430 \u0432\u044b\u043f\u0443\u0441\u043a\u0430", "ButtonMoveRight": "\u0414\u0432\u0438\u0433\u0430\u0442\u044c \u0432\u043f\u0440\u0430\u0432\u043e", - "ButtonBrowseOnlineImages": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0440\u0438\u0441\u0443\u043d\u043a\u0438 \u0432 \u0441\u0435\u0442\u0438", + "ButtonBrowseOnlineImages": "\u0421\u043c. \u0440\u0438\u0441\u0443\u043d\u043a\u0438 \u0432 \u0441\u0435\u0442\u0438", "HeaderDeleteItem": "\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430", "ConfirmDeleteItem": "\u041f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u043e\u043d \u0443\u0434\u0430\u043b\u0438\u0442\u0441\u044f \u0438 \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0438 \u0438\u0437 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438. \u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c?", "MessagePleaseEnterNameOrId": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0438\u043b\u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 ID.", @@ -347,7 +353,7 @@ "OptionContinuing": "\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0441\u044f", "OptionOff": "\u0412\u044b\u043a\u043b", "OptionOn": "\u0412\u043a\u043b", - "ButtonSettings": "\u041a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c", + "ButtonSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b...", "ButtonUninstall": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c", "HeaderFields": "\u041f\u043e\u043b\u044f", "HeaderFieldsHelp": "\u0421\u0434\u0432\u0438\u043d\u044c\u0442\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u043a \u00ab\u0412\u042b\u041a\u041b\u00bb, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0435 \u0438 \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0434\u0430\u043d\u043d\u044b\u043c \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f.", @@ -385,8 +391,8 @@ "ButtonHide": "\u0421\u043a\u0440\u044b\u0442\u044c", "MessageSettingsSaved": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b.", "ButtonSignOut": "\u0412\u044b\u0439\u0442\u0438", - "ButtonMyProfile": "\u041a \u043c\u043e\u0435\u043c\u0443 \u043f\u0440\u043e\u0444\u0438\u043b\u044e", - "ButtonMyPreferences": "\u041a \u043c\u043e\u0438\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c", + "ButtonMyProfile": "\u041c\u043e\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c...", + "ButtonMyPreferences": "\u041c\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438...", "MessageBrowserDoesNotSupportWebSockets": "\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0432\u0435\u0431-\u0441\u043e\u043a\u0435\u0442\u043e\u0432. \u0414\u043b\u044f \u043b\u0443\u0447\u0448\u0435\u0433\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u0441 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c \u043f\u043e\u043d\u043e\u0432\u0435\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Chrome, Firefox, IE10+, Safari (iOS) \u0438\u043b\u0438 Opera.", "LabelInstallingPackage": "\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f {0}", "LabelPackageInstallCompleted": "\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 {0} \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430.", @@ -403,18 +409,18 @@ "TabAdvanced": "\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0435", "TabHelp": "\u0421\u043f\u0440\u0430\u0432\u043a\u0430", "TabScheduledTasks": "\u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a", - "ButtonFullscreen": "\u041a \u043f\u043e\u043b\u043d\u043e\u043c\u0443 \u044d\u043a\u0440\u0430\u043d\u0443", - "ButtonAudioTracks": "\u0410\u0443\u0434\u0438\u043e\u0434\u043e\u0440\u043e\u0436\u043a\u0438", - "ButtonSubtitles": "\u041a \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0430\u043c", - "ButtonScenes": "\u041a \u0441\u0446\u0435\u043d\u0430\u043c", - "ButtonQuality": "\u041a\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0443", + "ButtonFullscreen": "\u041f\u043e\u043b\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d...", + "ButtonAudioTracks": "\u0410\u0443\u0434\u0438\u043e\u0434\u043e\u0440\u043e\u0436\u043a\u0438...", + "ButtonSubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u044b...", + "ButtonScenes": "\u0421\u0446\u0435\u043d\u044b...", + "ButtonQuality": "\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e...", "HeaderNotifications": "\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f", "HeaderSelectPlayer": "\u0412\u044b\u0431\u043e\u0440 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u044f:", "ButtonSelect": "\u0412\u044b\u0431\u0440\u0430\u0442\u044c", - "ButtonNew": "\u041d\u043e\u0432\u044b\u0439", + "ButtonNew": "\u0421\u043e\u0437\u0434\u0430\u0442\u044c", "MessageInternetExplorerWebm": "\u0414\u043b\u044f \u043b\u0443\u0447\u0448\u0435\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0432 Internet Explorer, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u043b\u0430\u0433\u0438\u043d \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f WebM.", "HeaderVideoError": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0432\u0438\u0434\u0435\u043e", - "ButtonAddToPlaylist": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442", + "ButtonAddToPlaylist": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a \u0441\u043f\u0438\u0441\u043a\u0443 \u0432\u043e\u0441\u043f\u0440-\u0438\u044f", "HeaderAddToPlaylist": "\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a \u0441\u043f\u0438\u0441\u043a\u0443 \u0432\u043e\u0441\u043f\u0440-\u0438\u044f", "LabelName": "\u0418\u043c\u044f (\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435):", "ButtonSubmit": "\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c", @@ -425,32 +431,32 @@ "ButtonViewSeriesRecording": "\u0421\u043c. \u0437\u0430\u043f\u0438\u0441\u044c \u0441\u0435\u0440\u0438\u0430\u043b\u0430", "ValueOriginalAirDate": "\u0414\u0430\u0442\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u044d\u0444\u0438\u0440\u0430: {0}", "ButtonRemoveFromPlaylist": "\u0418\u0437\u044a\u044f\u0442\u044c \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u043e\u0441\u043f\u0440-\u0438\u044f", - "HeaderSpecials": "\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435", - "HeaderTrailers": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440\u044b", + "HeaderSpecials": "\u0421\u043f\u0435\u0446.", + "HeaderTrailers": "\u0422\u0440\u0435\u0439\u043b.", "HeaderAudio": "\u0410\u0443\u0434\u0438\u043e", - "HeaderResolution": "\u0420\u0430\u0437\u0440-\u0438\u0435", + "HeaderResolution": "\u0420\u0430\u0437\u0440.", "HeaderVideo": "\u0412\u0438\u0434\u0435\u043e", - "HeaderRuntime": "\u0414\u043b\u0438\u0442-c\u0442\u044c", - "HeaderCommunityRating": "\u041e\u0431\u0449-\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430", + "HeaderRuntime": "\u0414\u043b\u0438\u0442.", + "HeaderCommunityRating": "\u041e\u0431\u0449. \u043e\u0446\u0435\u043d\u043a\u0430", "HeaderPasswordReset": "\u0421\u0431\u0440\u043e\u0441 \u043f\u0430\u0440\u043e\u043b\u044f", - "HeaderParentalRating": "\u0412\u043e\u0437\u0440-\u0430\u044f \u043a\u0430\u0442-\u0438\u044f", - "HeaderReleaseDate": "\u0414\u0430\u0442\u0430 \u0432\u044b\u0445\u043e\u0434\u0430", - "HeaderDateAdded": "\u0414\u0430\u0442\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f", + "HeaderParentalRating": "\u0412\u043e\u0437\u0440. \u043a\u0430\u0442.", + "HeaderReleaseDate": "\u0414\u0430\u0442\u0430 \u0432\u044b\u043f.", + "HeaderDateAdded": "\u0414\u0430\u0442\u0430 \u0434\u043e\u0431.", "HeaderSeries": "\u0421\u0435\u0440\u0438\u0430\u043b\u044b", "HeaderSeason": "\u0421\u0435\u0437\u043e\u043d", "HeaderSeasonNumber": "\u041d\u043e\u043c\u0435\u0440 \u0441\u0435\u0437\u043e\u043d\u0430", "HeaderNetwork": "\u0422\u0435\u043b\u0435\u0441\u0435\u0442\u044c", "HeaderYear": "\u0413\u043e\u0434", - "HeaderGameSystem": "\u0418\u0433\u0440\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430", - "HeaderPlayers": "\u041f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u0438", - "HeaderEmbeddedImage": "\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435", - "HeaderTrack": "\u0414\u043e\u0440\u043e\u0436\u043a\u0430", + "HeaderGameSystem": "\u0418\u0433\u0440. \u0441\u0438\u0441\u0442.", + "HeaderPlayers": "\u0418\u0433\u0440\u043e\u043a\u0438", + "HeaderEmbeddedImage": "\u0412\u043d\u0435\u0434\u0440\u0451\u043d\u043d\u044b\u0439 \u0440\u0438\u0441\u0443\u043d\u043e\u043a", + "HeaderTrack": "\u0414\u043e\u0440-\u043a\u0430", "HeaderDisc": "\u0414\u0438\u0441\u043a", "OptionMovies": "\u0424\u0438\u043b\u044c\u043c\u044b", "OptionCollections": "\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438", "OptionSeries": "\u0422\u0412-\u0441\u0435\u0440\u0438\u0430\u043b\u044b", "OptionSeasons": "\u0422\u0412-\u0441\u0435\u0437\u043e\u043d\u044b", - "OptionEpisodes": "\u042d\u043f\u0438\u0437\u043e\u0434\u044b", + "OptionEpisodes": "\u0422\u0412-\u044d\u043f\u0438\u0437\u043e\u0434\u044b", "OptionGames": "\u0418\u0433\u0440\u044b", "OptionGameSystems": "\u0418\u0433\u0440\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b", "OptionMusicArtists": "\u041c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0438", @@ -471,17 +477,14 @@ "LabelImageFetchers": "\u041e\u0442\u0431\u043e\u0440\u0449\u0438\u043a\u0438 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432:", "LabelImageFetchersHelp": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0438 \u0440\u0430\u043d\u0436\u0438\u0440\u0443\u0439\u0442\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0435 \u043e\u0442\u0431\u043e\u0440\u0449\u0438\u043a\u0438 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430.", "ButtonQueueAllFromHere": "\u0412 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0432\u0441\u0435 \u043e\u0442\u0441\u044e\u0434\u0430", - "ButtonPlayAllFromHere": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0432\u0441\u0435 \u043e\u0442\u0441\u044e\u0434\u0430", + "ButtonPlayAllFromHere": "\u0412\u043e\u0441\u043f\u0440. \u0432\u0441\u0435 \u043e\u0442\u0441\u044e\u0434\u0430", "LabelDynamicExternalId": "{0} Id:", "HeaderIdentify": "\u0420\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430", "PersonTypePerson": "\u041f\u0435\u0440\u0441\u043e\u043d\u0430", "LabelTitleDisplayOrder": "\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0439:", "OptionSortName": "\u0421\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435", - "OptionReleaseDate": "\u0414\u0430\u0442\u0430 \u0432\u044b\u0445\u043e\u0434\u0430", - "LabelSeasonNumber": "\u041d\u043e\u043c\u0435\u0440 \u0441\u0435\u0437\u043e\u043d\u0430:", "LabelDiscNumber": "\u041d\u043e\u043c\u0435\u0440 \u0434\u0438\u0441\u043a\u0430", "LabelParentNumber": "\u0420\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043d\u043e\u043c\u0435\u0440", - "LabelEpisodeNumber": "\u041d\u043e\u043c\u0435\u0440 \u044d\u043f\u0438\u0437\u043e\u0434\u0430:", "LabelTrackNumber": "\u041d\u043e\u043c\u0435\u0440 \u0434\u043e\u0440\u043e\u0436\u043a\u0438:", "LabelNumber": "\u041d\u043e\u043c\u0435\u0440:", "LabelReleaseDate": "\u0414\u0430\u0442\u0430 \u0432\u044b\u043f\u0443\u0441\u043a\u0430:", @@ -508,7 +511,7 @@ "FolderTypeUnset": "\u041d\u0435\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 (\u0440\u0430\u0437\u043d\u043e\u0442\u0438\u043f\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435)", "FolderTypeMovies": "\u041a\u0438\u043d\u043e", "FolderTypeMusic": "\u041c\u0443\u0437\u044b\u043a\u0430", - "FolderTypeAdultVideos": "\u0412\u0438\u0434\u0435\u043e \u0434\u043b\u044f \u0432\u0437\u0440\u043e\u0441\u043b\u044b\u0445", + "FolderTypeAdultVideos": "\u0412\u0437\u0440\u043e\u0441\u043b\u044b\u0435 \u0432\u0438\u0434\u0435\u043e", "FolderTypePhotos": "\u0424\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438", "FolderTypeMusicVideos": "\u041c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0438\u0434\u0435\u043e", "FolderTypeHomeVideos": "\u0414\u043e\u043c\u0430\u0448\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u043e", @@ -516,7 +519,7 @@ "FolderTypeBooks": "\u041a\u043d\u0438\u0433\u0438", "FolderTypeTvShows": "\u0422\u0412", "TabMovies": "\u0424\u0438\u043b\u044c\u043c\u044b", - "TabSeries": "\u0422\u0412-\u0441\u0435\u0440\u0438\u0430\u043b\u044b", + "TabSeries": "\u0421\u0435\u0440\u0438\u0430\u043b\u044b", "TabEpisodes": "\u042d\u043f\u0438\u0437\u043e\u0434\u044b", "TabTrailers": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440\u044b", "TabGames": "\u0418\u0433\u0440\u044b", @@ -558,7 +561,7 @@ "ButtonImDone": "\u042f \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b", "OptionWatched": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e", "OptionUnwatched": "\u041d\u0435 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e", - "ExternalPlayerPlaystateOptionsHelp": "\u0423\u043a\u0430\u0436\u0438\u0442\u0435, \u043a\u0430\u043a \u0432\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0431\u044b \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437.", + "ExternalPlayerPlaystateOptionsHelp": "\u0423\u043a\u0430\u0436\u0438\u0442\u0435, \u043a\u0430\u043a \u0432\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0431\u044b \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e \u0432\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437.", "LabelMarkAs": "\u041e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u043a\u0430\u043a:", "OptionInProgress": "\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f", "LabelResumePoint": "\u0422\u043e\u0447\u043a\u0430 \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f:", @@ -581,12 +584,12 @@ "HeaderOffline": "\u0410\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e", "HeaderUnaired": "\u041e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f", "HeaderMissing": "\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442", - "ButtonWebsite": "\u041a \u0432\u0435\u0431\u0441\u0430\u0439\u0442\u0443", + "ButtonWebsite": "\u0412\u0435\u0431\u0441\u0430\u0439\u0442...", "TooltipFavorite": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u043e\u0435", "TooltipLike": "\u041d\u0440\u0430\u0432\u0438\u0442\u0441\u044f", "TooltipDislike": "\u041d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f", "TooltipPlayed": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u043e", - "ValueSeriesYearToPresent": "{0} - \u043d\u0430\u0441\u0442. \u0432\u0440\u0435\u043c\u044f", + "ValueSeriesYearToPresent": "{0} - \u041d.\u0412.", "ValueAwards": "\u041f\u0440\u0438\u0437\u044b: {0}", "ValueBudget": "\u0411\u044e\u0434\u0436\u0435\u0442: {0}", "ValueRevenue": "\u0412\u044b\u0440\u0443\u0447\u043a\u0430: {0}", @@ -623,12 +626,12 @@ "HeaderBooks": "\u041a\u043d\u0438\u0433\u0438", "HeaderEpisodes": "\u042d\u043f\u0438\u0437\u043e\u0434\u044b", "HeaderSeasons": "\u0421\u0435\u0437\u043e\u043d\u044b", - "HeaderTracks": "\u0414\u043e\u0440\u043e\u0436\u043a\u0438", + "HeaderTracks": "\u0414\u043e\u0440-\u043a\u0438", "HeaderItems": "\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b", "HeaderOtherItems": "\u0414\u0440\u0443\u0433\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b", - "ButtonFullReview": "\u041a \u043f\u043e\u043b\u043d\u043e\u0439 \u0440\u0435\u0446\u0435\u043d\u0437\u0438\u0438", + "ButtonFullReview": "\u041f\u043e\u043b\u043d\u0430\u044f \u0440\u0435\u0446\u0435\u043d\u0437\u0438\u044f...", "ValueAsRole": "\u043a\u0430\u043a {0}", - "ValueGuestStar": "\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0451\u043d\u043d\u044b\u0439 \u0430\u043a\u0442\u0451\u0440", + "ValueGuestStar": "\u041f\u0440\u0438\u0433\u043b. \u0430\u043a\u0442\u0451\u0440", "MediaInfoSize": "\u0420\u0430\u0437\u043c\u0435\u0440", "MediaInfoPath": "\u041f\u0443\u0442\u044c", "MediaInfoFormat": "\u0424\u043e\u0440\u043c\u0430\u0442", @@ -639,7 +642,7 @@ "MediaInfoTimestamp": "\u041c\u0435\u0442\u043a\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438", "MediaInfoPixelFormat": "\u041f\u0438\u043a\u0441. \u0444\u043e\u0440\u043c\u0430\u0442", "MediaInfoBitDepth": "\u0413\u043b\u0443\u0431\u0438\u043d\u0430 \u0446\u0432\u0435\u0442\u0430", - "MediaInfoSampleRate": "\u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u0438", + "MediaInfoSampleRate": "\u0427-\u0442\u0430 \u0434\u0438\u0441\u043a\u0440-\u0438\u0438", "MediaInfoBitrate": "\u041f\u043e\u0442\u043e\u043a. \u0441\u043a-\u0442\u044c", "MediaInfoChannels": "\u041a\u0430\u043d\u0430\u043b\u044b", "MediaInfoLayout": "\u041a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0430", @@ -677,7 +680,7 @@ "WebClientTourPlaylists": "\u0411\u0435\u0437 \u0443\u0441\u0438\u043b\u0438\u0439 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043f\u0438\u0441\u043a\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0438 \u0430\u0432\u0442\u043e\u043c\u0438\u043a\u0441\u044b, \u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435 \u0438\u0445 \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435", "WebClientTourCollections": "\u0421\u043e\u0437\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0444\u0438\u043b\u044c\u043c\u043e\u0432\u044b\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u044b \u0432\u043c\u0435\u0441\u0442\u0435", "WebClientTourUserPreferences1": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0432\u043e \u0432\u0441\u0435\u0445 \u0432\u0430\u0448\u0438\u0445 Emby-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445.", - "WebClientTourUserPreferences2": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0430\u0443\u0434\u0438\u043e \u0438 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432 \u0441\u0432\u043e\u0435\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u0435\u0434\u0438\u043d\u043e\u0436\u0434\u044b, \u0434\u043b\u044f \u0432\u0441\u044f\u043a\u043e\u0433\u043e Emby-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f", + "WebClientTourUserPreferences2": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0430\u0443\u0434\u0438\u043e \u0438 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432 \u0441\u0432\u043e\u0435\u0433\u043e \u044f\u0437\u044b\u043a\u0430, \u0435\u0434\u0438\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e Emby-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f", "WebClientTourUserPreferences3": "\u041e\u0444\u043e\u0440\u044c\u043c\u0442\u0435 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043f\u043e \u0441\u0432\u043e\u0438\u043c \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0435\u043d\u0438\u044f\u043c", "WebClientTourUserPreferences4": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0437\u0430\u0434\u043d\u0438\u043a\u0438, \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u0435\u043b\u043e\u0434\u0438\u0438 \u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u0438", "WebClientTourMobile1": "\u0412\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043d\u0430 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430\u0445 \u0438 \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u0430\u0445...", @@ -686,14 +689,14 @@ "MessageEnjoyYourStay": "\u041f\u0440\u0438\u044f\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0431\u044b\u0432\u0430\u043d\u0438\u044f", "DashboardTourDashboard": "\u0421\u0435\u0440\u0432\u0435\u0440\u043d\u0430\u044f \u0418\u043d\u0444\u043e\u043f\u0430\u043d\u0435\u043b\u044c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0441\u043b\u0435\u0436\u0435\u043d\u0438\u044f \u0437\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0438 \u0432\u0430\u0448\u0438\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438. \u0412\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442\u0435 \u0437\u043d\u0430\u0442\u044c, \u043a\u0442\u043e \u0447\u0435\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f, \u0438 \u043a\u0442\u043e \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f.", "DashboardTourHelp": "\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u0441\u043f\u0440\u0430\u0432\u043a\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043a\u043d\u043e\u043f\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0432\u0438\u043a\u0438-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0445\u0441\u044f \u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044e \u044d\u043a\u0440\u0430\u043d\u0430.", - "DashboardTourUsers": "\u0411\u0435\u0437 \u0443\u0441\u0438\u043b\u0438\u0439 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0443\u0447\u0451\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u0430\u0448\u0438\u0445 \u0434\u0440\u0443\u0437\u0435\u0439 \u0438 \u0447\u043b\u0435\u043d\u043e\u0432 \u0441\u0435\u043c\u044c\u0438, \u043a\u0430\u0436\u0434\u0443\u044e \u0441 \u0438\u0445 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u0430\u0432\u0430\u043c\u0438, \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\u043c \u0438 \u0442.\u0434.", + "DashboardTourUsers": "\u0411\u0435\u0437 \u0443\u0441\u0438\u043b\u0438\u0439 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0443\u0447\u0451\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u0440\u0443\u0437\u0435\u0439 \u0438 \u0447\u043b\u0435\u043d\u043e\u0432 \u0441\u0435\u043c\u044c\u0438, \u043a\u0430\u0436\u0434\u0443\u044e \u0441 \u0438\u0445 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u044f\u043c\u0438, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c\u044e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\u043c \u0438 \u0442.\u0434.", "DashboardTourCinemaMode": "\u0420\u0435\u0436\u0438\u043c \u043a\u0438\u043d\u043e\u0442\u0435\u0430\u0442\u0440\u0430 \u043f\u0440\u0438\u0432\u043d\u043e\u0441\u0438\u0442 \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435 \u043a\u0438\u043d\u043e\u0437\u0430\u043b\u0430 \u043f\u0440\u044f\u043c\u0438\u043a\u043e\u043c \u0432\u043e \u0432\u0430\u0448\u0443 \u0433\u043e\u0441\u0442\u0438\u043d\u0443\u044e, \u0432\u043c\u0435\u0441\u0442\u0435 \u0441\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u044b \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0435\u0440\u0435\u0434 \u0433\u043b\u0430\u0432\u043d\u044b\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u043c.", "DashboardTourChapters": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432 \u0441\u0446\u0435\u043d \u043a \u0432\u0438\u0434\u0435\u043e, \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430.", "DashboardTourSubtitles": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044b \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u0434\u043b\u044f \u0432\u0430\u0448\u0438\u0445 \u0432\u0438\u0434\u0435\u043e.", "DashboardTourPlugins": "\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0432\u0438\u0434\u0435\u043e, \u0422\u0412-\u044d\u0444\u0438\u0440\u0430, \u0441\u043a\u0430\u043d\u043d\u0435\u0440\u043e\u0432 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0442.\u0434.", "DashboardTourNotifications": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043e \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0445 \u043d\u0430 \u0432\u0430\u0448\u0435 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u044d-\u043f\u043e\u0447\u0442\u0443 \u0438 \u0442.\u0434.", "DashboardTourScheduledTasks": "\u0411\u0435\u0437 \u0443\u0441\u0438\u043b\u0438\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u0434\u043e\u043b\u0433\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447. \u041f\u0440\u0438\u043d\u0438\u043c\u0430\u0439\u0442\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b, \u0438 \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u043e.", - "DashboardTourMobile": "\u0418\u043d\u0444\u043e\u043f\u0430\u043d\u0435\u043b\u044c Emby Server \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430\u0445 \u0438 \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u0430\u0445. \u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u0441\u0432\u043e\u0438\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0441 \u043b\u0430\u0434\u043e\u043d\u0438 \u0432 \u043b\u044e\u0431\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u0441 \u043b\u044e\u0431\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430.", + "DashboardTourMobile": "\u0418\u043d\u0444\u043e\u043f\u0430\u043d\u0435\u043b\u044c Emby Server \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043d\u0430 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430\u0445 \u0438 \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u0430\u0445. \u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u0441\u0432\u043e\u0438\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0441 \u043b\u0430\u0434\u043e\u043d\u0438 \u0432 \u043b\u044e\u0431\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u0441 \u043b\u044e\u0431\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430.", "DashboardTourSync": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u0439\u0442\u0435 \u0441\u0432\u043e\u0438 \u043b\u0438\u0447\u043d\u044b\u0435 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u0432\u0430\u0448\u0438\u043c\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430.", "MessageRefreshQueued": "\u041f\u043e\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438", "TabDevices": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430", @@ -705,8 +708,8 @@ "HeaderSelectUploadPath": "\u0412\u044b\u0431\u043e\u0440 \u043f\u0443\u0442\u0438 \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e", "LabelEnableCameraUploadForHelp": "\u0412\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0443\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u043e \u0444\u043e\u043d\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u043f\u0440\u0438 \u0432\u0445\u043e\u0434\u0435 \u0432 Emby.", "ErrorMessageStartHourGreaterThanEnd": "\u041a\u043e\u043d\u0435\u0447\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043f\u043e\u0437\u0436\u0435, \u0447\u0435\u043c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f.", - "ButtonLibraryAccess": "\u041a \u0434\u043e\u0441\u0442\u0443\u043f\u0443 \u043a \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435", - "ButtonParentalControl": "\u041a \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\u043c", + "ButtonLibraryAccess": "\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435...", + "ButtonParentalControl": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\u043c...", "HeaderInvitationSent": "\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e", "MessageInvitationSentToUser": "\u042d-\u043f\u043e\u0447\u0442\u0430 \u0431\u044b\u043b\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u043a {0}, \u0441 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043a \u043e\u0431\u0449\u0435\u043c\u0443 \u0434\u043e\u0441\u0442\u0443\u043f\u0443.", "MessageInvitationSentToNewUser": "\u042d-\u043f\u043e\u0447\u0442\u0430 \u0431\u044b\u043b\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u043a {0}, \u0441 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 Emby.", @@ -724,12 +727,12 @@ "MessageForgotPasswordFileCreated": "\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0444\u0430\u0439\u043b \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u0442\u044c:", "MessageForgotPasswordFileExpiration": "\u0421\u0431\u0440\u043e\u0441 PIN-\u043a\u043e\u0434\u0430 \u0438\u0441\u0442\u0435\u043a\u0430\u0435\u0442 {0}.", "MessageInvalidForgotPasswordPin": "\u0411\u044b\u043b \u0432\u0432\u0435\u0434\u0451\u043d \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0438\u043b\u0438 \u0438\u0441\u0442\u0451\u043a\u0448\u0438\u0439 PIN-\u043a\u043e\u0434. \u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443.", - "MessagePasswordResetForUsers": "\u041f\u0430\u0440\u043e\u043b\u0438 \u0431\u044b\u043b\u0438 \u0438\u0437\u044a\u044f\u0442\u044b \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439:", + "MessagePasswordResetForUsers": "\u041f\u0430\u0440\u043e\u043b\u0438 \u0431\u044b\u043b\u0438 \u0438\u0437\u044a\u044f\u0442\u044b \u0443 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439:", "HeaderInviteGuest": "\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u0433\u043e\u0441\u0442\u044f", "ButtonLinkMyEmbyAccount": "\u0421\u0432\u044f\u0437\u0430\u0442\u044c \u043c\u043e\u044e \u0443\u0447\u0451\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c", "MessageConnectAccountRequiredToInviteGuest": "\u0427\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u0442\u044c \u0433\u043e\u0441\u0442\u0435\u0439, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u0432\u0430\u0448\u0443 \u0443\u0447\u0451\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c Emby \u0441 \u0434\u0430\u043d\u043d\u044b\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c.", - "ButtonSync": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c", - "SyncMedia": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f", + "ButtonSync": "\u0421\u0438\u043d\u0445\u0440\u043e...", + "SyncMedia": "\u0421\u0438\u043d\u0445\u0440-\u0438\u044f", "HeaderCancelSyncJob": "\u041e\u0442\u043c\u0435\u043d\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438", "CancelSyncJobConfirmation": "\u041e\u0442\u043c\u0435\u043d\u0430 \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438. \u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c?", "TabSync": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f", @@ -740,7 +743,7 @@ "LabelQuality": "\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e:", "HeaderSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b", "OptionAutomaticallySyncNewContent": "\u0421\u0438\u043d\u0445\u0440-\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435", - "OptionAutomaticallySyncNewContentHelp": "\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0435 \u0432 \u044d\u0442\u0443 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044e, \u0430\u0432\u0442\u043e-\u043a\u0438 \u0441\u0438\u043d\u0445\u0440-\u0442\u0441\u044f \u0441 \u0443\u0441\u0442\u0440-\u043e\u043c.", + "OptionAutomaticallySyncNewContentHelp": "\u041d\u043e\u0432\u043e\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0430\u0432\u0442\u043e-\u043a\u0438 \u0441\u0438\u043d\u0445\u0440-\u0442\u0441\u044f \u0441 \u0434\u0430\u043d\u043d\u044b\u043c \u0443\u0441\u0442\u0440-\u043e\u043c.", "OptionSyncUnwatchedVideosOnly": "\u0421\u0438\u043d\u0445\u0440-\u0442\u044c \u043d\u0435\u043f\u0440\u043e\u0441\u043c-\u044b\u0435 \u0432\u0438\u0434\u0435\u043e", "OptionSyncUnwatchedVideosOnlyHelp": "\u0421\u0438\u043d\u0445\u0440-\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043f\u0440\u043e\u0441\u043c-\u044b\u0435 \u0432\u0438\u0434\u0435\u043e, \u0430 \u043f\u0440\u043e\u0441\u043c-\u044b\u0435 \u0438\u0437\u044b\u043c\u0430\u044e\u0442\u0441\u044f \u0441 \u0443\u0441\u0442\u0440-\u0432\u0430.", "LabelItemLimit": "\u041f\u0440\u0435\u0434\u0435\u043b \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432:", @@ -750,17 +753,57 @@ "MessageUnsetContentHelp": "\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u043f\u0430\u043f\u043a\u0438. \u0414\u043b\u044f \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0438\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u0442\u0438\u043f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u043f\u043e\u0434\u043f\u0430\u043f\u043e\u043a.", "SyncJobItemStatusQueued": "\u0412 \u043e\u0447\u0435\u0440\u0435\u0434\u0438", "SyncJobItemStatusConverting": "\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f", - "SyncJobItemStatusTransferring": "\u041f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u0441\u044f", + "SyncJobItemStatusTransferring": "\u041f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u0441\u044f", "SyncJobItemStatusSynced": "\u0421\u0438\u043d\u0445\u0440-\u043d\u043e", "SyncJobItemStatusFailed": "\u041d\u0435\u0443\u0434\u0430\u0447\u043d\u043e", "SyncJobItemStatusRemovedFromDevice": "\u0418\u0437\u044a\u044f\u0442\u043e \u0438\u0437 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430", "SyncJobItemStatusCancelled": "\u041e\u0442\u043c\u0435\u043d\u0435\u043d\u043e", "LabelProfile": "\u041f\u0440\u043e\u0444\u0438\u043b\u044c:", "LabelBitrateMbps": "\u041f\u043e\u0442\u043e\u043a\u043e\u0432\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c, \u041c\u0431\u0438\u0442\/\u0441:", - "EmbyIntroDownloadMessage": "To download and install Emby Server visit {0}.", - "ButtonNewServer": "New Server", - "ButtonSignInWithConnect": "Sign in with Emby Connect", - "HeaderNewServer": "New Server", - "MyDevice": "My Device", - "ButtonRemote": "Remote" + "EmbyIntroDownloadMessage": "\u0427\u0442\u043e\u0431\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Emby Server \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043d\u0430 {0}.", + "ButtonNewServer": "\u041d\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440...", + "ButtonSignInWithConnect": "\u0412\u043e\u0439\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 Connect", + "HeaderNewServer": "\u041d\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440", + "MyDevice": "\u041c\u043e\u0451 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e", + "ButtonRemote": "\u041f\u0443\u043b\u044c\u0442...", + "TabInfo": "\u0418\u043d\u0444\u043e", + "TabCast": "\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438", + "TabScenes": "\u0421\u0446\u0435\u043d\u044b", + "HeaderUnlockApp": "\u0420\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435", + "MessageUnlockAppWithPurchase": "\u0420\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u043e\u0439 \u043e\u043f\u043b\u0430\u0442\u044b.", + "MessageUnlockAppWithPurchaseOrSupporter": "\u0420\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u043e\u0439 \u043e\u043f\u043b\u0430\u0442\u044b \u0438\u043b\u0438 \u043f\u0440\u0438 \u0432\u0445\u043e\u0434\u0435 \u0441 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0447\u043b\u0435\u043d\u0441\u0442\u0432\u043e\u043c \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430.", + "MessageUnlockAppWithSupporter": "\u0420\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u0432\u0445\u043e\u0434\u0435 \u0441 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0447\u043b\u0435\u043d\u0441\u0442\u0432\u043e\u043c \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430.", + "MessageToValidateSupporter": "\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0447\u043b\u0435\u043d\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430, \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043e\u0439\u0434\u0438\u0442\u0435 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f WiFi-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0441\u0435\u0442\u0438.", + "MessagePaymentServicesUnavailable": "\u0421\u043b\u0443\u0436\u0431\u0430 \u043e\u043f\u043b\u0430\u0442\u044b \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430. \u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u043f\u043e\u0437\u0436\u0435.", + "ButtonUnlockWithSupporter": "\u0412\u043e\u0439\u0442\u0438 \u0441 \u0447\u043b\u0435\u043d\u0441\u0442\u0432\u043e\u043c \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430 Emby", + "MessagePleaseSignInLocalNetwork": "\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c, \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043a \u0432\u0430\u0448\u0435\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 Wifi- \u0438\u043b\u0438 LAN-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435.", + "ButtonUnlockWithPurchase": "\u0420\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u043e\u043f\u043b\u0430\u0442\u044b", + "ButtonUnlockPrice": "\u0420\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c {0}", + "MessageLiveTvGuideRequiresUnlock": "\u0413\u0438\u0434 \u044d\u0444\u0438\u0440\u043d\u043e\u0433\u043e \u0422\u0412 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d \u0434\u043e {0} \u043a\u0430\u043d\u0430\u043b\u043e\u0432. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u0440\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438.", + "OptionEnableFullscreen": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d", + "ButtonServer": "\u0421\u0435\u0440\u0432\u0435\u0440...", + "HeaderAdmin": "\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435", + "HeaderLibrary": "\u041c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0430", + "HeaderMedia": "\u041c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435", + "ButtonInbox": "\u0412\u0445\u043e\u0434\u044f\u0449\u0438\u0435...", + "HeaderAdvanced": "\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0435", + "HeaderGroupVersions": "\u0421\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u0438", + "HeaderSaySomethingLike": "\u0421\u043a\u0430\u0436\u0438\u0442\u0435 \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435...", + "ButtonTryAgain": "\u041f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u043d\u043e\u0432\u0430", + "HeaderYouSaid": "\u0412\u044b \u0441\u043a\u0430\u0437\u0430\u043b\u0438...", + "MessageWeDidntRecognizeCommand": "\u0414\u0430\u043d\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043d\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043d\u0430.", + "MessageIfYouBlockedVoice": "\u0415\u0441\u043b\u0438 \u043e\u0442\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e, \u043f\u0435\u0440\u0435\u0434 \u043d\u043e\u0432\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u043e\u0439 \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u043f\u0435\u0440\u0435\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430.", + "MessageNoItemsFound": "\u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e.", + "ButtonManageServer": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c...", + "ButtonPreferences": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438", + "ButtonViewArtist": "\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f", + "ButtonViewAlbum": "\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0430\u043b\u044c\u0431\u043e\u043c", + "ErrorMessagePasswordNotMatchConfirm": "\u041f\u043e\u043b\u044f \u041f\u0430\u0440\u043e\u043b\u044c \u0438 \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u043e\u043b\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c.", + "ErrorMessageUsernameInUse": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f. \u041f\u043e\u0434\u0431\u0435\u0440\u0438\u0442\u0435 \u043d\u043e\u0432\u043e\u0435 \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0441\u043d\u043e\u0432\u0430.", + "ErrorMessageEmailInUse": "\u0410\u0434\u0440\u0435\u0441 \u042d-\u043f\u043e\u0447\u0442\u044b \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f. \u041f\u043e\u0434\u0431\u0435\u0440\u0438\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u042d-\u043f\u043e\u0447\u0442\u044b \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0441\u043d\u043e\u0432\u0430, \u0438\u043b\u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u041d\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c.", + "MessageThankYouForConnectSignUp": "\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u0438\u043c \u0437\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044e \u0432 Emby Connect. \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u042d-\u043f\u043e\u0447\u0442\u044b \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438 \u043a\u0430\u043a \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u0432\u0430\u0448\u0443 \u043d\u043e\u0432\u0443\u044e \u0443\u0447\u0451\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u043d\u0430 \u0432\u0430\u0448 \u0430\u0434\u0440\u0435\u0441. \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u0443\u0447\u0451\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c, \u0430 \u043f\u043e\u0442\u043e\u043c \u0432\u0435\u0440\u043d\u0438\u0442\u0435\u0441\u044c \u0441\u044e\u0434\u0430, \u0447\u0442\u043e\u0431\u044b \u0432\u043e\u0439\u0442\u0438.", + "HeaderShare": "\u041e\u0431\u0449\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f", + "ButtonShareHelp": "\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043e\u0431\u0449\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0441\u043e \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f\u043c\u0438 \u043e \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445, \u0434\u043b\u044f \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439. \u041c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u044b \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043e\u0431\u0449\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435.", + "ButtonShare": "\u041f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f", + "HeaderConfirm": "\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/sl_SI.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/sl-SI.json index c5521697b..3b3b2d185 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/sl_SI.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/sl-SI.json @@ -38,8 +38,11 @@ "HeaderSupportTheTeam": "Support the Emby Team", "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", + "ButtonCancelSyncJob": "Cancel sync job", "TitleSync": "Sync", + "HeaderSelectDate": "Select Date", "ButtonDonate": "Donate", + "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderMyMedia": "My Media", "TitleNotifications": "Notifications", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", "ButtonTakeTheTour": "Take the tour", "HeaderWelcomeBack": "Welcome back!", "TitlePlugins": "Plugins", "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "ButtonPlayTrailer": "Play trailer", "HeaderLibraryAccess": "Library Access", "HeaderChannelAccess": "Channel Access", "HeaderDeviceAccess": "Device Access", @@ -143,7 +147,6 @@ "ButtonPlay": "Play", "ButtonEdit": "Edit", "ButtonQueue": "Queue", - "ButtonPlayTrailer": "Predvajaj napovednik", "ButtonPlaylist": "Playlist", "ButtonPreviousTrack": "Previous Track", "LabelEnabled": "Enabled", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Transcoding", "LabelPlayMethodDirectStream": "Direct Streaming", "LabelPlayMethodDirectPlay": "Direct Playing", + "LabelEpisodeNumber": "Episode number:", "LabelAudioCodec": "Audio: {0}", "LabelVideoCodec": "Video: {0}", "LabelLocalAccessUrl": "Local access: {0}", @@ -307,6 +311,7 @@ "HeaderArtist": "Artist", "LabelAddedOnDate": "Added {0}", "ButtonStart": "Start", + "LabelSeasonNumber": "Season number:", "HeaderChannels": "Channels", "HeaderMediaFolders": "Media Folders", "HeaderBlockItemsWithNoRating": "Block content with no rating information:", @@ -335,6 +340,7 @@ "ButtonNextPage": "Next Page", "ButtonPreviousPage": "Previous Page", "ButtonMoveLeft": "Move left", + "OptionReleaseDate": "Release date", "ButtonMoveRight": "Move right", "ButtonBrowseOnlineImages": "Browse online images", "HeaderDeleteItem": "Delete Item", @@ -477,11 +483,8 @@ "PersonTypePerson": "Person", "LabelTitleDisplayOrder": "Title display order:", "OptionSortName": "Sort name", - "OptionReleaseDate": "Datum izdaje", - "LabelSeasonNumber": "Season number:", "LabelDiscNumber": "Disc number", "LabelParentNumber": "Parent number", - "LabelEpisodeNumber": "Episode number:", "LabelTrackNumber": "Track number:", "LabelNumber": "Number:", "LabelReleaseDate": "Release date:", @@ -712,7 +715,7 @@ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", "HeaderConnectionFailure": "Connection Failure", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", - "ButtonSelectServer": "Select server", + "ButtonSelectServer": "Select Server", "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", "DefaultErrorMessage": "There was an error processing the request. Please try again later.", @@ -740,7 +743,7 @@ "LabelQuality": "Kvaliteta:", "HeaderSettings": "Nastavitve", "OptionAutomaticallySyncNewContent": "Samodejno sinhroniziraj nove vsebine", - "OptionAutomaticallySyncNewContentHelp": "Nova vsebina, dodana v to kategorijo, bo samodejno sinhronizirana v napravo", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", "LabelItemLimit": "Item limit:", @@ -762,5 +765,45 @@ "ButtonSignInWithConnect": "Sign in with Emby Connect", "HeaderNewServer": "New Server", "MyDevice": "My Device", - "ButtonRemote": "Remote" + "ButtonRemote": "Remote", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Advanced", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/sv.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/sv.json index 094329d7d..a5a6cd4c0 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/sv.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/sv.json @@ -38,8 +38,11 @@ "HeaderSupportTheTeam": "Support the Emby Team", "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live-TV", + "ButtonCancelSyncJob": "Cancel sync job", "TitleSync": "Sync", + "HeaderSelectDate": "Select Date", "ButtonDonate": "Donera", + "LabelRecurringDonationCanBeCancelledHelp": "St\u00e5ende donationer kan avbrytas n\u00e4r som helst via ditt PayPal-konto.", "HeaderMyMedia": "My Media", "TitleNotifications": "Notifications", "ErrorLaunchingChromecast": "Det gick inte att starta Chromecast. Kontrollera att enheten \u00e4r ansluten till det tr\u00e5dl\u00f6sa n\u00e4tverket.", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", "ButtonTakeTheTour": "Ta en rundtur", "HeaderWelcomeBack": "Welcome back!", "TitlePlugins": "Plugins", "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", "MessageNoSyncJobsFound": "Inga synkjobb hittades. Skapa synkjobb med hj\u00e4lp av Synk-knapparna som finns i hela gr\u00e4nssnittet.", + "ButtonPlayTrailer": "Visa trailer", "HeaderLibraryAccess": "Library Access", "HeaderChannelAccess": "Channel Access", "HeaderDeviceAccess": "Enhets\u00e5tkomst", @@ -143,7 +147,6 @@ "ButtonPlay": "Spela upp", "ButtonEdit": "\u00c4ndra", "ButtonQueue": "K\u00f6", - "ButtonPlayTrailer": "Visa trailer", "ButtonPlaylist": "Spellista", "ButtonPreviousTrack": "F\u00f6reg\u00e5ende sp\u00e5r", "LabelEnabled": "Aktiverad", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Omkodning", "LabelPlayMethodDirectStream": "Direkt str\u00f6mning", "LabelPlayMethodDirectPlay": "Direktuppspelning", + "LabelEpisodeNumber": "Episode number:", "LabelAudioCodec": "Ljud: {0}", "LabelVideoCodec": "Video: {0}", "LabelLocalAccessUrl": "Local access: {0}", @@ -307,6 +311,7 @@ "HeaderArtist": "Artist", "LabelAddedOnDate": "{0} tillagd", "ButtonStart": "Start", + "LabelSeasonNumber": "Season number:", "HeaderChannels": "Kanaler", "HeaderMediaFolders": "Mediamappar", "HeaderBlockItemsWithNoRating": "Block content with no rating information:", @@ -335,6 +340,7 @@ "ButtonNextPage": "N\u00e4sta sida", "ButtonPreviousPage": "F\u00f6reg\u00e5ende sida", "ButtonMoveLeft": "V\u00e4nster", + "OptionReleaseDate": "Premi\u00e4rdatum", "ButtonMoveRight": "H\u00f6ger", "ButtonBrowseOnlineImages": "Bl\u00e4ddra bland bilder online", "HeaderDeleteItem": "Radera objekt", @@ -477,11 +483,8 @@ "PersonTypePerson": "Person", "LabelTitleDisplayOrder": "Visningsordning f\u00f6r titlar", "OptionSortName": "Sorteringstitel", - "OptionReleaseDate": "Premi\u00e4rdatum:", - "LabelSeasonNumber": "Season number:", "LabelDiscNumber": "Skiva nr", "LabelParentNumber": "F\u00f6r\u00e4lder nr", - "LabelEpisodeNumber": "Episode number:", "LabelTrackNumber": "Sp\u00e5r nr", "LabelNumber": "Nr:", "LabelReleaseDate": "Premi\u00e4rdatum:", @@ -712,7 +715,7 @@ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", "HeaderConnectionFailure": "Connection Failure", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", - "ButtonSelectServer": "Select server", + "ButtonSelectServer": "Select Server", "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", "DefaultErrorMessage": "There was an error processing the request. Please try again later.", @@ -740,7 +743,7 @@ "LabelQuality": "Quality:", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Synkronisera automatiskt nytt inneh\u00e5ll", - "OptionAutomaticallySyncNewContentHelp": "Nytt inneh\u00e5ll som l\u00e4ggs till i denna kategori kommer automatiskt synkroniseras till enheten.", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", "OptionSyncUnwatchedVideosOnly": "Synkronisera endast osedda videos", "OptionSyncUnwatchedVideosOnlyHelp": "Endast osedda videos kommer att synkroniseras, och videos kommer att tas bort fr\u00e5n enheten n\u00e4r de har tittats p\u00e5.", "LabelItemLimit": "Item limit:", @@ -762,5 +765,45 @@ "ButtonSignInWithConnect": "Sign in with Emby Connect", "HeaderNewServer": "New Server", "MyDevice": "My Device", - "ButtonRemote": "Remote" + "ButtonRemote": "Remote", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Avancerat", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json index b0009cf86..59fb12008 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json @@ -38,8 +38,11 @@ "HeaderSupportTheTeam": "Support the Emby Team", "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Canl\u0131 TV", + "ButtonCancelSyncJob": "Cancel sync job", "TitleSync": "Sync", + "HeaderSelectDate": "Select Date", "ButtonDonate": "Donate", + "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderMyMedia": "My Media", "TitleNotifications": "Notifications", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", "ButtonTakeTheTour": "Take the tour", "HeaderWelcomeBack": "Welcome back!", "TitlePlugins": "Plugins", "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "ButtonPlayTrailer": "Play trailer", "HeaderLibraryAccess": "Library Access", "HeaderChannelAccess": "Channel Access", "HeaderDeviceAccess": "Device Access", @@ -143,7 +147,6 @@ "ButtonPlay": "\u00c7al", "ButtonEdit": "D\u00fczenle", "ButtonQueue": "Queue", - "ButtonPlayTrailer": "Play trailer", "ButtonPlaylist": "Playlist", "ButtonPreviousTrack": "\u00d6nceki Par\u00e7a", "LabelEnabled": "Enabled", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Transcoding", "LabelPlayMethodDirectStream": "Direct Streaming", "LabelPlayMethodDirectPlay": "Direct Playing", + "LabelEpisodeNumber": "Episode number:", "LabelAudioCodec": "Audio: {0}", "LabelVideoCodec": "Video: {0}", "LabelLocalAccessUrl": "Local access: {0}", @@ -307,6 +311,7 @@ "HeaderArtist": "Artist", "LabelAddedOnDate": "Added {0}", "ButtonStart": "Start", + "LabelSeasonNumber": "Season number:", "HeaderChannels": "Kanallar", "HeaderMediaFolders": "Media Klas\u00f6rleri", "HeaderBlockItemsWithNoRating": "Block content with no rating information:", @@ -335,6 +340,7 @@ "ButtonNextPage": "Next Page", "ButtonPreviousPage": "Previous Page", "ButtonMoveLeft": "Move left", + "OptionReleaseDate": "Release date", "ButtonMoveRight": "Move right", "ButtonBrowseOnlineImages": "Browse online images", "HeaderDeleteItem": "Delete Item", @@ -477,11 +483,8 @@ "PersonTypePerson": "Person", "LabelTitleDisplayOrder": "Title display order:", "OptionSortName": "Sort name", - "OptionReleaseDate": "Release date", - "LabelSeasonNumber": "Season number:", "LabelDiscNumber": "Disc number", "LabelParentNumber": "Parent number", - "LabelEpisodeNumber": "Episode number:", "LabelTrackNumber": "Track number:", "LabelNumber": "Number:", "LabelReleaseDate": "Release date:", @@ -712,7 +715,7 @@ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", "HeaderConnectionFailure": "Connection Failure", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", - "ButtonSelectServer": "Select server", + "ButtonSelectServer": "Select Server", "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", "DefaultErrorMessage": "There was an error processing the request. Please try again later.", @@ -740,7 +743,7 @@ "LabelQuality": "Quality:", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", - "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", "LabelItemLimit": "Item limit:", @@ -762,5 +765,45 @@ "ButtonSignInWithConnect": "Sign in with Emby Connect", "HeaderNewServer": "New Server", "MyDevice": "My Device", - "ButtonRemote": "Remote" + "ButtonRemote": "Remote", + "TabInfo": "Bilgi", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Advanced", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/uk.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/uk.json index 3e47e9433..2b5c4b11b 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/uk.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/uk.json @@ -38,8 +38,11 @@ "HeaderSupportTheTeam": "Support the Emby Team", "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", + "ButtonCancelSyncJob": "Cancel sync job", "TitleSync": "Sync", + "HeaderSelectDate": "Select Date", "ButtonDonate": "Donate", + "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderMyMedia": "My Media", "TitleNotifications": "\u041f\u043e\u0432\u0456\u0434\u043e\u043c\u043b\u0435\u043d\u043d\u044f", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", "ButtonTakeTheTour": "Take the tour", "HeaderWelcomeBack": "Welcome back!", "TitlePlugins": "Plugins", "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "ButtonPlayTrailer": "Play trailer", "HeaderLibraryAccess": "Library Access", "HeaderChannelAccess": "Channel Access", "HeaderDeviceAccess": "Device Access", @@ -143,7 +147,6 @@ "ButtonPlay": "Play", "ButtonEdit": "Edit", "ButtonQueue": "Queue", - "ButtonPlayTrailer": "\u0412\u0456\u0434\u0442\u0432\u043e\u0440\u0438\u0442\u0438 \u0442\u0440\u0435\u0439\u043b\u0435\u0440", "ButtonPlaylist": "Playlist", "ButtonPreviousTrack": "\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439 \u0437\u0430\u043f\u0438\u0441", "LabelEnabled": "Enabled", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Transcoding", "LabelPlayMethodDirectStream": "Direct Streaming", "LabelPlayMethodDirectPlay": "Direct Playing", + "LabelEpisodeNumber": "Episode number:", "LabelAudioCodec": "Audio: {0}", "LabelVideoCodec": "Video: {0}", "LabelLocalAccessUrl": "Local access: {0}", @@ -307,6 +311,7 @@ "HeaderArtist": "Artist", "LabelAddedOnDate": "Added {0}", "ButtonStart": "Start", + "LabelSeasonNumber": "Season number:", "HeaderChannels": "Channels", "HeaderMediaFolders": "Media Folders", "HeaderBlockItemsWithNoRating": "Block content with no rating information:", @@ -335,6 +340,7 @@ "ButtonNextPage": "Next Page", "ButtonPreviousPage": "Previous Page", "ButtonMoveLeft": "Move left", + "OptionReleaseDate": "Release date", "ButtonMoveRight": "Move right", "ButtonBrowseOnlineImages": "Browse online images", "HeaderDeleteItem": "Delete Item", @@ -477,11 +483,8 @@ "PersonTypePerson": "Person", "LabelTitleDisplayOrder": "Title display order:", "OptionSortName": "Sort name", - "OptionReleaseDate": "\u0414\u0430\u0442\u0430 \u0432\u0438\u043f\u0443\u0441\u043a\u0443", - "LabelSeasonNumber": "Season number:", "LabelDiscNumber": "Disc number", "LabelParentNumber": "Parent number", - "LabelEpisodeNumber": "Episode number:", "LabelTrackNumber": "Track number:", "LabelNumber": "Number:", "LabelReleaseDate": "Release date:", @@ -712,7 +715,7 @@ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", "HeaderConnectionFailure": "Connection Failure", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", - "ButtonSelectServer": "\u041e\u0431\u0435\u0440\u0456\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440", + "ButtonSelectServer": "Select Server", "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", "DefaultErrorMessage": "There was an error processing the request. Please try again later.", @@ -740,7 +743,7 @@ "LabelQuality": "Quality:", "HeaderSettings": "\u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f", "OptionAutomaticallySyncNewContent": "Automatically sync new content", - "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", "LabelItemLimit": "Item limit:", @@ -762,5 +765,45 @@ "ButtonSignInWithConnect": "Sign in with Emby Connect", "HeaderNewServer": "New Server", "MyDevice": "My Device", - "ButtonRemote": "Remote" + "ButtonRemote": "Remote", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Advanced", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json index 07af56256..0a3a9bdea 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json @@ -38,8 +38,11 @@ "HeaderSupportTheTeam": "Support the Emby Team", "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", + "ButtonCancelSyncJob": "Cancel sync job", "TitleSync": "Sync", + "HeaderSelectDate": "Select Date", "ButtonDonate": "Donate", + "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderMyMedia": "My Media", "TitleNotifications": "Notifications", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", "ButtonTakeTheTour": "Take the tour", "HeaderWelcomeBack": "Welcome back!", "TitlePlugins": "Plugins", "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "ButtonPlayTrailer": "Play trailer", "HeaderLibraryAccess": "Library Access", "HeaderChannelAccess": "Channel Access", "HeaderDeviceAccess": "Device Access", @@ -143,7 +147,6 @@ "ButtonPlay": "Play", "ButtonEdit": "Edit", "ButtonQueue": "Queue", - "ButtonPlayTrailer": "Play trailer", "ButtonPlaylist": "Playlist", "ButtonPreviousTrack": "Previous Track", "LabelEnabled": "Enabled", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Transcoding", "LabelPlayMethodDirectStream": "Direct Streaming", "LabelPlayMethodDirectPlay": "Direct Playing", + "LabelEpisodeNumber": "Episode number:", "LabelAudioCodec": "Audio: {0}", "LabelVideoCodec": "Video: {0}", "LabelLocalAccessUrl": "Local access: {0}", @@ -307,6 +311,7 @@ "HeaderArtist": "Artist", "LabelAddedOnDate": "Added {0}", "ButtonStart": "Start", + "LabelSeasonNumber": "Season number:", "HeaderChannels": "Channels", "HeaderMediaFolders": "Media Folders", "HeaderBlockItemsWithNoRating": "Block content with no rating information:", @@ -335,6 +340,7 @@ "ButtonNextPage": "Next Page", "ButtonPreviousPage": "Previous Page", "ButtonMoveLeft": "Move left", + "OptionReleaseDate": "Release date", "ButtonMoveRight": "Move right", "ButtonBrowseOnlineImages": "Browse online images", "HeaderDeleteItem": "Delete Item", @@ -477,11 +483,8 @@ "PersonTypePerson": "Person", "LabelTitleDisplayOrder": "Title display order:", "OptionSortName": "Sort name", - "OptionReleaseDate": "Release date", - "LabelSeasonNumber": "Season number:", "LabelDiscNumber": "Disc number", "LabelParentNumber": "Parent number", - "LabelEpisodeNumber": "Episode number:", "LabelTrackNumber": "Track number:", "LabelNumber": "Number:", "LabelReleaseDate": "Release date:", @@ -712,7 +715,7 @@ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", "HeaderConnectionFailure": "Connection Failure", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", - "ButtonSelectServer": "Select server", + "ButtonSelectServer": "Select Server", "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", "DefaultErrorMessage": "There was an error processing the request. Please try again later.", @@ -740,7 +743,7 @@ "LabelQuality": "Quality:", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", - "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", "LabelItemLimit": "Item limit:", @@ -762,5 +765,45 @@ "ButtonSignInWithConnect": "Sign in with Emby Connect", "HeaderNewServer": "New Server", "MyDevice": "My Device", - "ButtonRemote": "Remote" + "ButtonRemote": "Remote", + "TabInfo": "Info", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Advanced", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_CN.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh-CN.json index 4ad637fa8..fd7795dcb 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_CN.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh-CN.json @@ -38,8 +38,11 @@ "HeaderSupportTheTeam": "Support the Emby Team", "TextEnjoyBonusFeatures": "\u4eab\u53d7\u5956\u52b1\u529f\u80fd", "TitleLiveTV": "\u7535\u89c6\u76f4\u64ad", + "ButtonCancelSyncJob": "Cancel sync job", "TitleSync": "\u540c\u6b65", + "HeaderSelectDate": "Select Date", "ButtonDonate": "\u6350\u8d60", + "LabelRecurringDonationCanBeCancelledHelp": "\u5728\u60a8\u7684PayPal\u8d26\u6237\u5185\u4efb\u4f55\u65f6\u5019\u90fd\u53ef\u4ee5\u53d6\u6d88\u7ecf\u5e38\u6027\u6350\u8d60\u3002", "HeaderMyMedia": "My Media", "TitleNotifications": "\u901a\u77e5", "ErrorLaunchingChromecast": "\u542f\u52a8chromecast\u9047\u5230\u9519\u8bef\uff0c\u8bf7\u786e\u8ba4\u8bbe\u5907\u5df2\u7ecf\u8fde\u63a5\u5230\u4f60\u7684\u65e0\u7ebf\u7f51\u7edc\u3002", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", "ButtonTakeTheTour": "\u8fdb\u884c\u53c2\u89c2", "HeaderWelcomeBack": "\u6b22\u8fce\u56de\u6765\uff01", "TitlePlugins": "Plugins", "ButtonTakeTheTourToSeeWhatsNew": "\u8fdb\u884c\u53c2\u89c2\uff0c\u770b\u770b\u6709\u4ec0\u4e48\u65b0\u4e1c\u897f", "MessageNoSyncJobsFound": "\u6ca1\u6709\u53d1\u73b0\u540c\u6b65\u4f5c\u4e1a\u3002\u4f7f\u7528Web\u754c\u9762\u4e2d\u7684\u540c\u6b65\u6309\u94ae\u6765\u521b\u5efa\u540c\u6b65\u4f5c\u4e1a\u3002", + "ButtonPlayTrailer": "Play trailer", "HeaderLibraryAccess": "Library Access", "HeaderChannelAccess": "Channel Access", "HeaderDeviceAccess": "\u8bbe\u5907\u8bbf\u95ee", @@ -143,7 +147,6 @@ "ButtonPlay": "\u64ad\u653e", "ButtonEdit": "\u7f16\u8f91", "ButtonQueue": "\u52a0\u5165\u961f\u5217", - "ButtonPlayTrailer": "\u64ad\u653e\u9884\u544a\u7247", "ButtonPlaylist": "\u64ad\u653e\u5217\u8868", "ButtonPreviousTrack": "\u4e0a\u4e00\u97f3\u8f68", "LabelEnabled": "\u5df2\u542f\u7528", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "\u8f6c\u7801", "LabelPlayMethodDirectStream": "\u76f4\u63a5\u7528\u5a92\u4f53\u6d41", "LabelPlayMethodDirectPlay": "\u76f4\u63a5\u64ad\u653e", + "LabelEpisodeNumber": "Episode number:", "LabelAudioCodec": "\u97f3\u9891\uff1a {0}", "LabelVideoCodec": "\u89c6\u9891\uff1a{0}", "LabelLocalAccessUrl": "\u672c\u5730\u8bbf\u95ee\uff1a {0}", @@ -307,6 +311,7 @@ "HeaderArtist": "\u827a\u672f\u5bb6", "LabelAddedOnDate": "\u6dfb\u52a0 {0}", "ButtonStart": "\u5f00\u59cb", + "LabelSeasonNumber": "Season number:", "HeaderChannels": "\u9891\u9053", "HeaderMediaFolders": "\u5a92\u4f53\u6587\u4ef6\u5939", "HeaderBlockItemsWithNoRating": "Block content with no rating information:", @@ -335,6 +340,7 @@ "ButtonNextPage": "\u4e0b\u4e00\u9875", "ButtonPreviousPage": "\u524d\u4e00\u9875", "ButtonMoveLeft": "\u5de6\u79fb", + "OptionReleaseDate": "Release date", "ButtonMoveRight": "\u53f3\u79fb", "ButtonBrowseOnlineImages": "\u6d4f\u89c8\u5728\u7ebf\u56fe\u7247", "HeaderDeleteItem": "\u5220\u9664\u9879\u76ee", @@ -477,11 +483,8 @@ "PersonTypePerson": "\u4eba\u7269", "LabelTitleDisplayOrder": "\u6807\u9898\u663e\u793a\u7684\u987a\u5e8f\uff1a", "OptionSortName": "\u6392\u5e8f\u540d\u79f0", - "OptionReleaseDate": "\u53d1\u5e03\u65e5\u671f", - "LabelSeasonNumber": "\u591a\u5c11\u5b63\uff1a", "LabelDiscNumber": "\u5149\u76d8\u53f7", "LabelParentNumber": "\u6bcd\u5e26\u53f7", - "LabelEpisodeNumber": "\u591a\u5c11\u96c6\uff1a", "LabelTrackNumber": "\u97f3\u8f68\u53f7\u7801\uff1a", "LabelNumber": "\u7f16\u53f7\uff1a", "LabelReleaseDate": "\u53d1\u884c\u65e5\u671f\uff1a", @@ -712,7 +715,7 @@ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", "HeaderConnectionFailure": "Connection Failure", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", - "ButtonSelectServer": "Select server", + "ButtonSelectServer": "Select Server", "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", "DefaultErrorMessage": "There was an error processing the request. Please try again later.", @@ -740,7 +743,7 @@ "LabelQuality": "Quality:", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", - "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", "LabelItemLimit": "Item limit:", @@ -762,5 +765,45 @@ "ButtonSignInWithConnect": "Sign in with Emby Connect", "HeaderNewServer": "New Server", "MyDevice": "My Device", - "ButtonRemote": "Remote" + "ButtonRemote": "Remote", + "TabInfo": "\u4fe1\u606f", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "\u9ad8\u7ea7", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh-TW.json index 86114ad68..b0ebf81d5 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh-TW.json @@ -38,8 +38,11 @@ "HeaderSupportTheTeam": "Support the Emby Team", "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "\u96fb\u8996\u529f\u80fd", + "ButtonCancelSyncJob": "Cancel sync job", "TitleSync": "Sync", + "HeaderSelectDate": "Select Date", "ButtonDonate": "Donate", + "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderMyMedia": "My Media", "TitleNotifications": "Notifications", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", @@ -97,12 +100,13 @@ "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", + "HeaderWelcomeToProjectWebClient": "Welcome to Emby", "ButtonTakeTheTour": "Take the tour", "HeaderWelcomeBack": "Welcome back!", "TitlePlugins": "Plugins", "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "ButtonPlayTrailer": "Play trailer", "HeaderLibraryAccess": "Library Access", "HeaderChannelAccess": "Channel Access", "HeaderDeviceAccess": "Device Access", @@ -143,7 +147,6 @@ "ButtonPlay": "\u64ad\u653e", "ButtonEdit": "\u7de8\u8f2f", "ButtonQueue": "Queue", - "ButtonPlayTrailer": "Play trailer", "ButtonPlaylist": "Playlist", "ButtonPreviousTrack": "Previous Track", "LabelEnabled": "Enabled", @@ -262,6 +265,7 @@ "LabelPlayMethodTranscoding": "Transcoding", "LabelPlayMethodDirectStream": "Direct Streaming", "LabelPlayMethodDirectPlay": "Direct Playing", + "LabelEpisodeNumber": "Episode number:", "LabelAudioCodec": "Audio: {0}", "LabelVideoCodec": "Video: {0}", "LabelLocalAccessUrl": "Local access: {0}", @@ -307,6 +311,7 @@ "HeaderArtist": "Artist", "LabelAddedOnDate": "Added {0}", "ButtonStart": "Start", + "LabelSeasonNumber": "Season number:", "HeaderChannels": "\u983b\u5ea6", "HeaderMediaFolders": "\u5a92\u9ad4\u6587\u4ef6\u593e", "HeaderBlockItemsWithNoRating": "Block content with no rating information:", @@ -335,6 +340,7 @@ "ButtonNextPage": "Next Page", "ButtonPreviousPage": "Previous Page", "ButtonMoveLeft": "Move left", + "OptionReleaseDate": "Release date", "ButtonMoveRight": "Move right", "ButtonBrowseOnlineImages": "Browse online images", "HeaderDeleteItem": "Delete Item", @@ -477,11 +483,8 @@ "PersonTypePerson": "Person", "LabelTitleDisplayOrder": "Title display order:", "OptionSortName": "Sort name", - "OptionReleaseDate": "Release date", - "LabelSeasonNumber": "Season number:", "LabelDiscNumber": "Disc number", "LabelParentNumber": "Parent number", - "LabelEpisodeNumber": "Episode number:", "LabelTrackNumber": "Track number:", "LabelNumber": "Number:", "LabelReleaseDate": "Release date:", @@ -712,7 +715,7 @@ "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", "HeaderConnectionFailure": "Connection Failure", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", - "ButtonSelectServer": "Select server", + "ButtonSelectServer": "Select Server", "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", "DefaultErrorMessage": "There was an error processing the request. Please try again later.", @@ -740,7 +743,7 @@ "LabelQuality": "Quality:", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", - "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", + "OptionAutomaticallySyncNewContentHelp": "New content added to will be automatically synced to the device.", "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", "LabelItemLimit": "Item limit:", @@ -762,5 +765,45 @@ "ButtonSignInWithConnect": "Sign in with Emby Connect", "HeaderNewServer": "New Server", "MyDevice": "My Device", - "ButtonRemote": "Remote" + "ButtonRemote": "Remote", + "TabInfo": "\u8cc7\u8a0a", + "TabCast": "Cast", + "TabScenes": "Scenes", + "HeaderUnlockApp": "Unlock App", + "MessageUnlockAppWithPurchase": "Unlock the full features of the app with a small one-time purchase.", + "MessageUnlockAppWithPurchaseOrSupporter": "Unlock the full features of the app with a small one-time purchase, or by signing in with an active Emby Supporter Membership.", + "MessageUnlockAppWithSupporter": "Unlock the full features of the app by signing in with an active Emby Supporter Membership.", + "MessageToValidateSupporter": "If you have an active Emby Supporter Membership, simply sign into the app using your Wifi connection within your home network.", + "MessagePaymentServicesUnavailable": "Payment services are currently unavailable. Please try again later.", + "ButtonUnlockWithSupporter": "Sign in with Emby Supporter Membership", + "MessagePleaseSignInLocalNetwork": "Before proceeding, please ensure that you're connected to your local network using a Wifi or LAN connection.", + "ButtonUnlockWithPurchase": "Unlock with Purchase", + "ButtonUnlockPrice": "Unlock {0}", + "MessageLiveTvGuideRequiresUnlock": "The Live TV Guide is currently limited to {0} channels. Click the unlock button to learn how to enjoy the full experience.", + "OptionEnableFullscreen": "Enable Fullscreen", + "ButtonServer": "Server", + "HeaderAdmin": "Admin", + "HeaderLibrary": "Library", + "HeaderMedia": "Media", + "ButtonInbox": "Inbox", + "HeaderAdvanced": "Advanced", + "HeaderGroupVersions": "Group Versions", + "HeaderSaySomethingLike": "Say Something Like...", + "ButtonTryAgain": "Try Again", + "HeaderYouSaid": "You Said...", + "MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.", + "MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.", + "MessageNoItemsFound": "No items found.", + "ButtonManageServer": "Manage Server", + "ButtonPreferences": "Preferences", + "ButtonViewArtist": "View artist", + "ButtonViewAlbum": "View album", + "ErrorMessagePasswordNotMatchConfirm": "The password and password confirmation must match.", + "ErrorMessageUsernameInUse": "The username is already in use. Please choose a new name and try again.", + "ErrorMessageEmailInUse": "The email address is already in use. Please enter a new email address and try again, or use the forgot password feature.", + "MessageThankYouForConnectSignUp": "Thank you for signing up for Emby Connect. An email will be sent to your address with instructions on how to confirm your new account. Please confirm the account and then return here to sign in.", + "HeaderShare": "Share", + "ButtonShareHelp": "Share a web page containing media information with social media. Media files are never shared publicly.", + "ButtonShare": "Share", + "HeaderConfirm": "Confirm" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/LocalizationManager.cs b/MediaBrowser.Server.Implementations/Localization/LocalizationManager.cs index e1dd5c618..a259e7edc 100644 --- a/MediaBrowser.Server.Implementations/Localization/LocalizationManager.cs +++ b/MediaBrowser.Server.Implementations/Localization/LocalizationManager.cs @@ -347,7 +347,7 @@ namespace MediaBrowser.Server.Implementations.Localization if (parts.Length == 2) { - culture = parts[0].ToLower() + "_" + parts[1].ToUpper(); + culture = parts[0].ToLower() + "-" + parts[1].ToUpper(); } else { diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ar.json b/MediaBrowser.Server.Implementations/Localization/Server/ar.json index 6de9139cf..76a65c489 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ar.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ar.json @@ -1,5 +1,147 @@ { - "TabWebClient": "Web Client", + "LabelExit": "\u062e\u0631\u0648\u062c", + "LabelVisitCommunity": "\u0632\u064a\u0627\u0631\u0629 \u0627\u0644\u0645\u062c\u062a\u0645\u0639", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "\u0642\u064a\u0627\u0633\u0649", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "\u062a\u0635\u0641\u062d \u0627\u0644\u0645\u0643\u062a\u0628\u0629", + "LabelConfigureServer": "Configure Emby", + "LabelOpenLibraryViewer": "\u0641\u062a\u062d \u0645\u062a\u0635\u062d\u0641 \u0627\u0644\u0645\u0643\u062a\u0628\u0629", + "LabelRestartServer": "\u0627\u0639\u0627\u062f\u0629 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u062e\u0627\u062f\u0645", + "LabelShowLogWindow": "\u0639\u0631\u0636 \u0646\u0627\u0641\u0630\u0629 \u0627\u0644\u0633\u062c\u0644", + "LabelPrevious": "\u0627\u0644\u0633\u0627\u0628\u0642", + "LabelFinish": "\u0627\u0646\u062a\u0647\u0627\u0621", + "FolderTypeMixed": "Mixed content", + "LabelNext": "\u0627\u0644\u062a\u0627\u0644\u0649", + "LabelYoureDone": "\u062a\u0645 \u0627\u0644\u0627\u0646\u062a\u0647\u0627\u0621!", + "WelcomeToProject": "Welcome to Emby!", + "ThisWizardWillGuideYou": "\u0645\u0631\u0634\u062f \u0627\u0644\u0627\u0639\u062f\u0627\u062f\u0627\u062a \u0633\u064a\u0633\u0627\u0639\u062f\u0643 \u062e\u0644\u0627\u0644 \u062e\u0637\u0648\u0627\u062a \u0639\u0645\u0644\u064a\u0629 \u0627\u0644\u0627\u0639\u062f\u0627\u062f\u0627\u062a. \u0644\u0644\u0628\u062f\u0621, \u0627\u0644\u0631\u062c\u0627\u0621 \u0627\u062e\u062a\u064a\u0627\u0631 \u0644\u063a\u062a\u0643 \u0627\u0644\u0645\u0641\u0636\u0644\u0629.", + "TellUsAboutYourself": "\u0627\u062e\u0628\u0631\u0646\u0627 \u0639\u0646 \u0646\u0641\u0633\u0643", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "\u0627\u0633\u0645\u0643 \u0627\u0644\u0627\u0648\u0644:", + "MoreUsersCanBeAddedLater": "\u0627\u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646 \u064a\u0645\u0643\u0646 \u0627\u0636\u0627\u0641\u062a\u0647\u0645 \u0644\u0627\u062d\u0642\u0627 \u0645\u0646 \u0644\u0648\u062d\u0629 \u0627\u0644\u0627\u0639\u062f\u0627\u062f\u0627\u062a.", + "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", + "LabelWindowsService": "\u062e\u062f\u0645\u0629 \u0627\u0644\u0648\u0646\u062f\u0648\u0632", + "AWindowsServiceHasBeenInstalled": "\u062a\u0645 \u062a\u062b\u0628\u064a\u062a \u062e\u062f\u0645\u0629 \u0627\u0644\u0648\u0646\u062f\u0648\u0632", + "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", + "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", + "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", + "LabelConfigureSettings": "\u0636\u0628\u0637 \u0627\u0644\u0627\u0639\u062f\u0627\u062f\u0627\u062a", + "LabelEnableVideoImageExtraction": "\u062a\u0641\u0639\u064a\u0644 \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u0635\u0648\u0631 \u0627\u0644\u0641\u064a\u062f\u064a\u0648", + "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", + "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", + "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", + "HeaderTermsOfService": "Emby Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToEmbyConnect": "Linked to Emby Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", + "ButtonOk": "\u0645\u0648\u0627\u0641\u0642", + "ButtonCancel": "\u0627\u0644\u063a\u0627\u0621", + "ButtonExit": "Exit", + "ButtonNew": "New", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "Username or email:", + "LabelEnterConnectUserNameHelp": "This is your Emby online account username or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "\u0627\u0639\u062f\u0627\u062f \u0645\u0643\u062a\u0628\u0629 \u0627\u0644\u0648\u0633\u0627\u0626\u0637", + "ButtonAddMediaFolder": "\u0627\u0636\u0627\u0641\u0629 \u0645\u062c\u0644\u062f \u0644\u0644\u0648\u0633\u0627\u0626\u0637", + "LabelFolderType": "\u0646\u0648\u0639 \u0627\u0644\u0645\u062c\u0644\u062f:", + "ReferToMediaLibraryWiki": "\u0627\u0644\u0631\u062c\u0648\u0639 \u0627\u0644\u0649 wiki \u0644\u0645\u0643\u062a\u0628\u0629 \u0627\u0644\u0648\u0633\u0627\u0626\u0637", + "LabelCountry": "\u0627\u0644\u0628\u0644\u062f:", + "LabelLanguage": "\u0627\u0644\u0644\u063a\u0629:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "\u0627\u0644\u0644\u063a\u0629 \u0627\u0644\u0645\u0641\u0636\u0644\u0629 \u0644\u0648\u0627\u0635\u0641\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a:", + "LabelSaveLocalMetadata": "\u062d\u0641\u0638 \u0627\u0644\u0627\u0639\u0645\u0627\u0644 \u0627\u0644\u0641\u0646\u064a\u0629 \u0648\u0648\u0627\u0635\u0641\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0641\u0649 \u0645\u062c\u0644\u062f\u0627\u062a \u0627\u0644\u0648\u0633\u0627\u0626\u0637", + "LabelSaveLocalMetadataHelp": "\u0628\u062d\u0642\u0638 \u0627\u0644\u0627\u0639\u0645\u0627\u0644 \u0627\u0644\u0641\u0646\u064a\u0629 \u0648\u0648\u0627\u0635\u0641\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0645\u0628\u0627\u0634\u0631\u0629 \u0641\u0649 \u0645\u062c\u0644\u062f\u0627\u062a \u0627\u0644\u0648\u0633\u0627\u0626\u0637 \u0633\u064a\u0633\u0647\u0644 \u0639\u0644\u064a\u0643 \u0627\u0644\u0648\u0635\u0648\u0644 \u0648\u0639\u0645\u0644 \u0627\u0644\u062a\u0639\u062f\u064a\u0644\u0627\u0627\u062a \u0639\u0644\u064a\u0647\u0627.", + "LabelDownloadInternetMetadata": "\u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0627\u0639\u0645\u0627\u0644 \u0627\u0644\u0641\u0646\u064a\u0629 \u0648\u0648\u0627\u0635\u0641\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0645\u0646 \u0627\u0644\u0627\u0646\u062a\u0631\u0646\u062a", + "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", + "TabPreferences": "\u062a\u0641\u0636\u064a\u0644\u0627\u062a", + "TabPassword": "\u0643\u0644\u0645\u0629 \u0627\u0644\u0633\u0631", + "TabLibraryAccess": "\u0627\u0644\u062f\u062e\u0648\u0644 \u0627\u0644\u0649 \u0627\u0644\u0645\u0643\u062a\u0628\u0629", + "TabAccess": "Access", + "TabImage": "\u0635\u0648\u0631\u0629", + "TabProfile": "\u0633\u062c\u0644", + "TabMetadata": "Metadata", + "TabImages": "Images", + "TabNotifications": "Notifications", + "TabCollectionTitles": "Titles", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", + "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", + "HeaderVideoPlaybackSettings": "\u0627\u0639\u062f\u0627\u062f\u0627\u062a \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0641\u064a\u062f\u064a\u0648", + "HeaderPlaybackSettings": "Playback Settings", + "LabelAudioLanguagePreference": "\u0627\u0644\u0644\u063a\u0629 \u0627\u0644\u0645\u0641\u0636\u0644\u0629 \u0644\u0644\u0635\u0648\u062a:", + "LabelSubtitleLanguagePreference": "\u0627\u0644\u0644\u063a\u0629 \u0627\u0644\u0645\u0641\u0636\u0644\u0629 \u0644\u0644\u062a\u0631\u062c\u0645\u0629:", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Only forced subtitles", + "OptionAlwaysPlaySubtitles": "Always play subtitles", + "OptionNoSubtitles": "No Subtitles", + "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", @@ -145,7 +287,9 @@ "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", "TabGeneral": "General", "TitleSupport": "Support", + "LabelSeasonNumber": "Season number", "TabLog": "Log", + "LabelEpisodeNumber": "Episode number", "TabAbout": "About", "TabSupporterKey": "Supporter Key", "TabBecomeSupporter": "Become a Supporter", @@ -171,6 +315,9 @@ "OptionAllowRemoteControlOthers": "Allow remote control of other users", "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", "HeaderRemoteControl": "Remote Control", "OptionMissingTmdbId": "Missing Tmdb Id", "OptionIsHD": "HD", @@ -439,8 +586,6 @@ "LabelSkipped": "Skipped", "HeaderEpisodeOrganization": "Episode Organization", "LabelSeries": "Series:", - "LabelSeasonNumber": "Season number:", - "LabelEpisodeNumber": "Episode number:", "LabelEndingEpisodeNumber": "Ending episode number:", "LabelEndingEpisodeNumberHelp": "Only required for multi-episode files", "HeaderSupportTheTeam": "Support the Emby Team", @@ -728,6 +873,7 @@ "HeaderTypeText": "Enter Text", "LabelTypeText": "Text", "HeaderSearchForSubtitles": "Search for Subtitles", + "ButtonMore": "More", "MessageNoSubtitleSearchResultsFound": "No search results founds.", "TabDisplay": "Display", "TabLanguages": "Languages", @@ -758,7 +904,7 @@ "HeaderLiveTv": "Live TV", "HeaderReports": "Reports", "HeaderMetadataManager": "Metadata Manager", - "HeaderPreferences": "Preferences", + "HeaderSettings": "Settings", "MessageLoadingChannels": "Loading channel content...", "MessageLoadingContent": "Loading content...", "ButtonMarkRead": "Mark Read", @@ -956,7 +1102,6 @@ "OptionReportArtists": "Artists", "OptionReportAlbums": "Albums", "OptionReportAdultVideos": "Adult videos", - "ButtonMore": "More", "HeaderActivity": "Activity", "ScheduledTaskStartedWithName": "{0} started", "ScheduledTaskCancelledWithName": "{0} was cancelled", @@ -1086,6 +1231,7 @@ "OptionNoThemeVideo": "No Theme Video", "LabelOneTimeDonationAmount": "Donation amount:", "ButtonDonate": "Donate", + "ButtonPurchase": "Purchase", "OptionActor": "Actor", "OptionComposer": "Composer", "OptionDirector": "Director", @@ -1105,7 +1251,6 @@ "HeaderDeveloperInfo": "Developer Info", "HeaderRevisionHistory": "Revision History", "ButtonViewWebsite": "View website", - "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderXmlSettings": "Xml Settings", "HeaderXmlDocumentAttributes": "Xml Document Attributes", "HeaderXmlDocumentAttribute": "Xml Document Attribute", @@ -1119,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", "LabelExternalPlayers": "External players:", "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", "HeaderSubtitleProfile": "Subtitle Profile", "HeaderSubtitleProfiles": "Subtitle Profiles", "HeaderSubtitleProfilesHelp": "Subtitle profiles describe the subtitle formats supported by the device.", @@ -1247,7 +1395,7 @@ "HeaderUpcomingMovies": "Upcoming Movies", "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", - "ButtonMoreItems": "More...", + "ButtonMoreItems": "More", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", @@ -1266,14 +1414,6 @@ "OptionEnableFullSpeedConversion": "Enable full speed conversion", "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", "HeaderViewStyles": "View Styles", "LabelSelectViewStyles": "Enable enhanced presentations for:", "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", @@ -1291,147 +1431,24 @@ "HeaderNewServer": "New Server", "ButtonChangeServer": "Change Server", "HeaderConnectToServer": "Connect to Server", - "LabelExit": "\u062e\u0631\u0648\u062c", - "LabelVisitCommunity": "\u0632\u064a\u0627\u0631\u0629 \u0627\u0644\u0645\u062c\u062a\u0645\u0639", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "\u0642\u064a\u0627\u0633\u0649", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "\u062a\u0635\u0641\u062d \u0627\u0644\u0645\u0643\u062a\u0628\u0629", - "LabelConfigureServer": "Configure Emby", - "LabelOpenLibraryViewer": "\u0641\u062a\u062d \u0645\u062a\u0635\u062d\u0641 \u0627\u0644\u0645\u0643\u062a\u0628\u0629", - "LabelRestartServer": "\u0627\u0639\u0627\u062f\u0629 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u062e\u0627\u062f\u0645", - "LabelShowLogWindow": "\u0639\u0631\u0636 \u0646\u0627\u0641\u0630\u0629 \u0627\u0644\u0633\u062c\u0644", - "LabelPrevious": "\u0627\u0644\u0633\u0627\u0628\u0642", - "LabelFinish": "\u0627\u0646\u062a\u0647\u0627\u0621", - "LabelNext": "\u0627\u0644\u062a\u0627\u0644\u0649", - "LabelYoureDone": "\u062a\u0645 \u0627\u0644\u0627\u0646\u062a\u0647\u0627\u0621!", - "WelcomeToProject": "Welcome to Emby!", - "ThisWizardWillGuideYou": "\u0645\u0631\u0634\u062f \u0627\u0644\u0627\u0639\u062f\u0627\u062f\u0627\u062a \u0633\u064a\u0633\u0627\u0639\u062f\u0643 \u062e\u0644\u0627\u0644 \u062e\u0637\u0648\u0627\u062a \u0639\u0645\u0644\u064a\u0629 \u0627\u0644\u0627\u0639\u062f\u0627\u062f\u0627\u062a. \u0644\u0644\u0628\u062f\u0621, \u0627\u0644\u0631\u062c\u0627\u0621 \u0627\u062e\u062a\u064a\u0627\u0631 \u0644\u063a\u062a\u0643 \u0627\u0644\u0645\u0641\u0636\u0644\u0629.", - "TellUsAboutYourself": "\u0627\u062e\u0628\u0631\u0646\u0627 \u0639\u0646 \u0646\u0641\u0633\u0643", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "\u0627\u0633\u0645\u0643 \u0627\u0644\u0627\u0648\u0644:", - "MoreUsersCanBeAddedLater": "\u0627\u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646 \u064a\u0645\u0643\u0646 \u0627\u0636\u0627\u0641\u062a\u0647\u0645 \u0644\u0627\u062d\u0642\u0627 \u0645\u0646 \u0644\u0648\u062d\u0629 \u0627\u0644\u0627\u0639\u062f\u0627\u062f\u0627\u062a.", - "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "\u062e\u062f\u0645\u0629 \u0627\u0644\u0648\u0646\u062f\u0648\u0632", - "AWindowsServiceHasBeenInstalled": "\u062a\u0645 \u062a\u062b\u0628\u064a\u062a \u062e\u062f\u0645\u0629 \u0627\u0644\u0648\u0646\u062f\u0648\u0632", - "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", - "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", - "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", - "LabelConfigureSettings": "\u0636\u0628\u0637 \u0627\u0644\u0627\u0639\u062f\u0627\u062f\u0627\u062a", - "LabelEnableVideoImageExtraction": "\u062a\u0641\u0639\u064a\u0644 \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u0635\u0648\u0631 \u0627\u0644\u0641\u064a\u062f\u064a\u0648", - "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", - "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", - "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "HeaderTermsOfService": "Emby Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LinkedToEmbyConnect": "Linked to Emby Connect", - "HeaderSupporterBenefits": "Supporter Benefits", - "HeaderAddUser": "Add User", - "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", - "LabelPinCode": "Pin code:", - "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", - "HeaderSync": "Sync", - "ButtonOk": "\u0645\u0648\u0627\u0641\u0642", - "ButtonCancel": "\u0627\u0644\u063a\u0627\u0621", - "ButtonExit": "Exit", - "ButtonNew": "New", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "TabPlaylist": "Playlist", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Emby online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "\u0627\u0639\u062f\u0627\u062f \u0645\u0643\u062a\u0628\u0629 \u0627\u0644\u0648\u0633\u0627\u0626\u0637", - "ButtonAddMediaFolder": "\u0627\u0636\u0627\u0641\u0629 \u0645\u062c\u0644\u062f \u0644\u0644\u0648\u0633\u0627\u0626\u0637", - "LabelFolderType": "\u0646\u0648\u0639 \u0627\u0644\u0645\u062c\u0644\u062f:", - "ReferToMediaLibraryWiki": "\u0627\u0644\u0631\u062c\u0648\u0639 \u0627\u0644\u0649 wiki \u0644\u0645\u0643\u062a\u0628\u0629 \u0627\u0644\u0648\u0633\u0627\u0626\u0637", - "LabelCountry": "\u0627\u0644\u0628\u0644\u062f:", - "LabelLanguage": "\u0627\u0644\u0644\u063a\u0629:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "\u0627\u0644\u0644\u063a\u0629 \u0627\u0644\u0645\u0641\u0636\u0644\u0629 \u0644\u0648\u0627\u0635\u0641\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a:", - "LabelSaveLocalMetadata": "\u062d\u0641\u0638 \u0627\u0644\u0627\u0639\u0645\u0627\u0644 \u0627\u0644\u0641\u0646\u064a\u0629 \u0648\u0648\u0627\u0635\u0641\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0641\u0649 \u0645\u062c\u0644\u062f\u0627\u062a \u0627\u0644\u0648\u0633\u0627\u0626\u0637", - "LabelSaveLocalMetadataHelp": "\u0628\u062d\u0642\u0638 \u0627\u0644\u0627\u0639\u0645\u0627\u0644 \u0627\u0644\u0641\u0646\u064a\u0629 \u0648\u0648\u0627\u0635\u0641\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0645\u0628\u0627\u0634\u0631\u0629 \u0641\u0649 \u0645\u062c\u0644\u062f\u0627\u062a \u0627\u0644\u0648\u0633\u0627\u0626\u0637 \u0633\u064a\u0633\u0647\u0644 \u0639\u0644\u064a\u0643 \u0627\u0644\u0648\u0635\u0648\u0644 \u0648\u0639\u0645\u0644 \u0627\u0644\u062a\u0639\u062f\u064a\u0644\u0627\u0627\u062a \u0639\u0644\u064a\u0647\u0627.", - "LabelDownloadInternetMetadata": "\u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0627\u0639\u0645\u0627\u0644 \u0627\u0644\u0641\u0646\u064a\u0629 \u0648\u0648\u0627\u0635\u0641\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0645\u0646 \u0627\u0644\u0627\u0646\u062a\u0631\u0646\u062a", - "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", - "TabPreferences": "\u062a\u0641\u0636\u064a\u0644\u0627\u062a", - "TabPassword": "\u0643\u0644\u0645\u0629 \u0627\u0644\u0633\u0631", - "TabLibraryAccess": "\u0627\u0644\u062f\u062e\u0648\u0644 \u0627\u0644\u0649 \u0627\u0644\u0645\u0643\u062a\u0628\u0629", - "TabAccess": "Access", - "TabImage": "\u0635\u0648\u0631\u0629", - "TabProfile": "\u0633\u062c\u0644", - "TabMetadata": "Metadata", - "TabImages": "Images", - "TabNotifications": "Notifications", - "TabCollectionTitles": "Titles", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", - "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", - "HeaderVideoPlaybackSettings": "\u0627\u0639\u062f\u0627\u062f\u0627\u062a \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0641\u064a\u062f\u064a\u0648", - "HeaderPlaybackSettings": "Playback Settings", - "LabelAudioLanguagePreference": "\u0627\u0644\u0644\u063a\u0629 \u0627\u0644\u0645\u0641\u0636\u0644\u0629 \u0644\u0644\u0635\u0648\u062a:", - "LabelSubtitleLanguagePreference": "\u0627\u0644\u0644\u063a\u0629 \u0627\u0644\u0645\u0641\u0636\u0644\u0629 \u0644\u0644\u062a\u0631\u062c\u0645\u0629:", - "OptionDefaultSubtitles": "Default", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "No Subtitles", - "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language." + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "HeaderExport": "Export", + "HeaderColumns": "Columns", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/bg_BG.json b/MediaBrowser.Server.Implementations/Localization/Server/bg-BG.json index e1621b6b1..fc0b3eddb 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/bg_BG.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/bg-BG.json @@ -1,5 +1,180 @@ { - "TabWebClient": "Web Client", + "LabelExit": "\u0418\u0437\u043b\u0435\u0437", + "LabelVisitCommunity": "\u041f\u043e\u0441\u0435\u0442\u0438 \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u0442\u043e", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e", + "LabelApiDocumentation": "API \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f", + "LabelDeveloperResources": "\u0420\u0435\u0441\u0443\u0440\u0441\u0438 \u0437\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u0446\u0438", + "LabelBrowseLibrary": "\u0420\u0430\u0437\u0433\u043b\u0435\u0434\u0430\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0442\u0430", + "LabelConfigureServer": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0439 Emby", + "LabelOpenLibraryViewer": "\u041e\u0442\u0432\u043e\u0440\u0438 \u043f\u0440\u0435\u0433\u043b\u0435\u0434 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0442\u0430", + "LabelRestartServer": "\u0420\u0435\u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u0439 \u0441\u044a\u0440\u0432\u044a\u0440\u0430", + "LabelShowLogWindow": "\u041f\u043e\u043a\u0430\u0436\u0438 \u043b\u043e\u0433\u043e\u0432\u0438\u044f \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446", + "LabelPrevious": "\u041f\u0440\u0435\u0434\u0438\u0448\u0435\u043d", + "LabelFinish": "\u041a\u0440\u0430\u0439", + "FolderTypeMixed": "Mixed content", + "LabelNext": "\u0421\u043b\u0435\u0434\u0432\u0430\u0449", + "LabelYoureDone": "\u0413\u043e\u0442\u043e\u0432\u0438 \u0441\u0442\u0435!", + "WelcomeToProject": "\u0414\u043e\u0431\u0440\u0435 \u0434\u043e\u0448\u043b\u0438 \u0432 Emby!", + "ThisWizardWillGuideYou": "\u0422\u043e\u0437\u0438 \u043c\u0430\u0433\u044c\u043e\u0441\u043d\u0438\u043a \u0449\u0435 \u0432\u0438 \u043d\u0430\u043f\u044a\u0442\u0441\u0442\u0432\u0430 \u043f\u0440\u0435\u0437 \u043f\u0440\u043e\u0446\u0435\u0441\u0430 \u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f. \u0417\u0430 \u0434\u0430 \u0437\u0430\u043f\u043e\u0447\u043d\u0435\u0442\u0435, \u043c\u043e\u043b\u044f \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d\u0438\u044f \u043e\u0442 \u0432\u0430\u0441 \u0435\u0437\u0438\u043a.", + "TellUsAboutYourself": "\u0420\u0430\u0437\u043a\u0430\u0436\u0435\u0442\u0435 \u0437\u0430 \u0441\u0435\u0431\u0435 \u0441\u0438", + "ButtonQuickStartGuide": "\u0420\u044a\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0437\u0430 \u0431\u044a\u0440\u0437\u043e \u0437\u0430\u043f\u043e\u0447\u0432\u0430\u043d\u0435", + "LabelYourFirstName": "\u041f\u044a\u0440\u0432\u043e\u0442\u043e \u0432\u0438 \u0438\u043c\u0435:", + "MoreUsersCanBeAddedLater": "\u041f\u043e\u0432\u0435\u0447\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0431\u044a\u0434\u0430\u0442 \u0434\u043e\u0431\u0430\u0432\u0435\u043d\u0438 \u043f\u043e-\u043a\u044a\u0441\u043d\u043e \u043e\u0442 \u0433\u043b\u0430\u0432\u043d\u0438\u044f \u043f\u0430\u043d\u0435\u043b.", + "UserProfilesIntro": "Emby \u0432\u043a\u043b\u044e\u0447\u0432\u0430 \u0432\u0433\u0440\u0430\u0434\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0440\u044a\u0436\u043a\u0430 \u043d\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u0438, \u043a\u043e\u0438\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0432\u0430\u0442 \u043d\u0430 \u0432\u0441\u0435\u043a\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0442\u0435\u043b \u0434\u0430 \u0438\u043c\u0430 \u0441\u0432\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u0430\u0442\u0430, \u043c\u044f\u0441\u0442\u043e \u043d\u0430 \u043f\u0443\u0441\u043a\u0430\u043d\u0435 \u0438 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0441\u043a\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438.", + "LabelWindowsService": "Windows Service", + "AWindowsServiceHasBeenInstalled": "Windows Service \u0431\u0435\u0448\u0435 \u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d.", + "WindowsServiceIntro1": "\u041d\u043e\u0440\u043c\u0430\u043b\u043d\u043e, Emby \u0421\u044a\u0440\u0432\u044a\u0440 \u0440\u0430\u0431\u043e\u0442\u0438 \u043a\u0430\u0442\u043e \u0434\u0435\u0441\u043a\u0442\u043e\u043f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u0430 \u0441 \u0442\u0440\u0435\u0439 \u0438\u043a\u043e\u043d\u0430, \u043d\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0439, \u0447\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u0430 \u043a\u0430\u0442\u043e \u0443\u0441\u043b\u0443\u0433\u0430 \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0430 \u0433\u043e \u043f\u0443\u0441\u043d\u0435\u0442\u0435 \u043e\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043d\u0438\u044f \u043f\u0430\u043d\u0435\u043b \u043d\u0430 windows \u0443\u0441\u043b\u0443\u0433\u0438\u0442\u0435.", + "WindowsServiceIntro2": "\u0410\u043a\u043e \u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 Windows \u0443\u0441\u043b\u0443\u0433\u0430\u0442\u0430, \u043c\u043e\u043b\u044f, \u0438\u043c\u0430\u0439\u0442\u0435 \u043f\u0440\u0435\u0434\u0432\u0438\u0434, \u0447\u0435 \u0442\u043e\u0439 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0431\u044a\u0434\u0435 \u043f\u0443\u0441\u043d\u0430\u0442 \u0434\u043e\u043a\u0430\u0442\u043e \u044f \u0438\u043c\u0430 \u0438\u043a\u043e\u043d\u0430\u0442\u0430 \u0432 \u043b\u0435\u043d\u0442\u0430\u0442\u0430 ,\u0442\u0430\u043a\u0430 \u0447\u0435 \u0449\u0435 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0438\u0437\u043b\u0435\u0437\u0435\u0442\u0435 \u043e\u0442 \u043d\u0435\u044f, \u0437\u0430 \u0434\u0430 \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430 \u0443\u0441\u043b\u0443\u0433\u0430\u0442\u0430. \u0423\u0441\u043b\u0443\u0433\u0430\u0442\u0430 \u0441\u044a\u0449\u043e \u0442\u0430\u043a\u0430 \u0449\u0435 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0431\u044a\u0434\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u0430 \u0441 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u0438 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0438 \u0447\u0440\u0435\u0437 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043d\u0438\u044f \u043f\u0430\u043d\u0435\u043b. \u041c\u043e\u043b\u044f, \u0438\u043c\u0430\u0439\u0442\u0435 \u043f\u0440\u0435\u0434\u0432\u0438\u0434, \u0447\u0435 \u0432 \u0442\u043e\u0437\u0438 \u043c\u043e\u043c\u0435\u043d\u0442 \u0443\u0441\u043b\u0443\u0433\u0430\u0442\u0430 \u043d\u0435 \u0435 \u0432 \u0441\u044a\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u0430 \u0441\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0430 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u043d\u043e, \u0442\u0430\u043a\u0430 \u0447\u0435 \u043d\u043e\u0432\u0438\u0442\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0449\u0435 \u0438\u0437\u0438\u0441\u043a\u0432\u0430\u0442 \u0440\u044a\u0447\u043d\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435.", + "WizardCompleted": "\u0422\u043e\u0432\u0430 \u0435 \u0432\u0441\u0438\u0447\u043a\u043e \u043e\u0442 \u043a\u043e\u0435\u0442\u043e \u0441\u0435 \u043d\u0443\u0436\u0434\u0430\u0435\u043c \u0437\u0430 \u043c\u043e\u043c\u0435\u043d\u0442\u0430. Emby \u0435 \u0437\u0430\u043f\u043e\u0447\u043d\u0430\u043b \u0434\u0430 \u0441\u044a\u0431\u0438\u0440\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u043c\u0435\u0434\u0438\u0439\u043d\u0430\u0442\u0430 \u0432\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430. \u0420\u0430\u0437\u0433\u043b\u0435\u0434\u0430\u0439\u0442\u0435 \u043d\u044f\u043a\u043e\u0438 \u043e\u0442 \u043d\u0430\u0448\u0438\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0442\u0438\u0441\u043d\u0435\u0442\u0435 <b>\u0413\u043e\u0442\u043e\u0432\u043e<\/b>, \u0437\u0430 \u0434\u0430 \u0432\u0438\u0434\u0438\u0442\u0435 <b>Server Dashboard<\/b>.", + "LabelConfigureSettings": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438", + "LabelEnableVideoImageExtraction": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0438\u0437\u0432\u043b\u0438\u0447\u0430\u043d\u0435 \u043d\u0430 \u0432\u0438\u0434\u0435\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f.", + "VideoImageExtractionHelp": "\u0417\u0430 \u0432\u0438\u0434\u0435\u043e\u043a\u043b\u0438\u043f\u043e\u0432\u0435, \u043a\u043e\u0438\u0442\u043e \u0432\u0441\u0435 \u043e\u0449\u0435 \u043d\u0435 \u0440\u0430\u0437\u043f\u043e\u043b\u0430\u0433\u0430\u0442 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0438 \u0437\u0430 \u043a\u043e\u0438\u0442\u043e \u043d\u0435 \u0441\u043c\u0435 \u0432 \u0441\u044a\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u0430 \u043d\u0430\u043c\u0435\u0440\u0438\u043c \u0442\u0430\u043a\u0438\u0432\u0430. \u0422\u043e\u0432\u0430 \u0449\u0435 \u0434\u043e\u0431\u0430\u0432\u0438 \u0434\u043e\u043f\u044a\u043b\u043d\u0438\u0442\u0435\u043b\u043d\u043e \u0432\u0440\u0435\u043c\u0435 \u043a\u044a\u043c \u043f\u044a\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u043d\u043e\u0442\u043e \u0441\u043a\u0430\u043d\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0442\u0430, \u043d\u043e \u0449\u0435 \u0434\u043e\u0432\u0435\u0434\u0435 \u0434\u043e \u043f\u043e-\u043f\u0440\u0438\u044f\u0442\u0435\u043d \u0432\u0438\u0434.", + "LabelEnableChapterImageExtractionForMovies": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u0435 \u0438\u0437\u0432\u043b\u0438\u0447\u0430\u043d\u0435 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0433\u043b\u0430\u0432\u0438\u0442\u0435 \u0437\u0430 \u0424\u0438\u043b\u043c\u0438.", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043d\u0430 \u043f\u043e\u0440\u0442\u043e\u0432\u0435\u0442\u0435", + "LabelEnableAutomaticPortMappingHelp": "UPnP \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0432\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043d\u0430 \u0440\u0443\u0442\u0435\u0440\u0430 \u0437\u0430 \u043b\u0435\u0441\u0435\u043d \u043e\u0442\u0434\u0430\u043b\u0435\u0447\u0435\u043d \u0434\u043e\u0441\u0442\u044a\u043f. \u0422\u043e\u0432\u0430 \u043c\u043e\u0436\u0435 \u0434\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0438 \u0441 \u043d\u044f\u043a\u043e\u0438 \u0440\u0443\u0442\u0435\u0440\u0438.", + "HeaderTermsOfService": "Emby \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0437\u0430 \u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435", + "MessagePleaseAcceptTermsOfService": "\u041c\u043e\u043b\u044f \u043f\u0440\u0438\u0435\u043c\u0435\u0442\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0442\u0430 \u0437\u0430 \u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435 \u0438 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u044f\u0442\u0430 \u0437\u0430 \u043f\u043e\u0432\u0435\u0440\u0438\u0442\u0435\u043b\u043d\u043e\u0441\u0442, \u043f\u0440\u0435\u0434\u0438 \u0434\u0430 \u043f\u0440\u043e\u0434\u044a\u043b\u0436\u0438\u0442\u0435.", + "OptionIAcceptTermsOfService": "\u041f\u0440\u0438\u0435\u043c\u0430\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0442\u0430 \u0437\u0430 \u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435", + "ButtonPrivacyPolicy": "\u0414\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u044f \u0437\u0430 \u043f\u043e\u0432\u0435\u0440\u0438\u0442\u0435\u043b\u043d\u043e\u0441\u0442", + "ButtonTermsOfService": "\u0423\u0441\u043b\u043e\u0432\u0438\u044f \u0437\u0430 \u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435", + "HeaderDeveloperOptions": "\u041e\u043f\u0446\u0438\u0438 \u0437\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u0446\u0438", + "OptionEnableWebClientResponseCache": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u0435 \u043a\u0435\u0448\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043e\u0442\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0435 \u043d\u0430 \u0443\u0435\u0431 \u043a\u043b\u0438\u0435\u043d\u0442\u0438\u0442\u0435", + "OptionDisableForDevelopmentHelp": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0439\u0442\u0435 \u0442\u0435\u0437\u0438 \u0441\u043f\u043e\u0440\u0435\u0434 \u043d\u0443\u0436\u0434\u0438\u0442\u0435 \u0437\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0430 \u0443\u0435\u0431 \u043a\u043b\u0438\u0435\u043d\u0442\u0438.", + "OptionEnableWebClientResourceMinification": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u0435 \u0441\u043c\u0430\u043b\u044f\u0432\u0430\u043d\u0435(\u043c\u0438\u043d\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f) \u043d\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u0438\u0442\u0435 \u043d\u0430 \u0443\u0435\u0431 \u043a\u043b\u0438\u0435\u043d\u0442\u0430", + "LabelDashboardSourcePath": "\u0413\u043b\u0430\u0432\u0435\u043d \u043f\u044a\u0442 \u043a\u044a\u043c \u0443\u0435\u0431 \u043a\u043b\u0438\u0435\u043d\u0442\u0430", + "LabelDashboardSourcePathHelp": "\u0410\u043a\u043e \u043f\u0443\u0441\u043a\u0430\u0442\u0435 \u0441\u044a\u0440\u0432\u044a\u0440\u0430 \u043e\u0442 \u0438\u0437\u0445\u043e\u0434\u0435\u043d \u043a\u043e\u0434, \u043f\u043e\u0441\u043e\u0447\u0435\u0442\u0435 \u043f\u044a\u0442\u044f \u043a\u044a\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0442\u043e \u0442\u0430\u0431\u043b\u043e. \u0412\u0441\u0438\u0447\u043a\u0438 \u0443\u0435\u0431 \u043a\u043b\u0438\u0435\u043d\u0442\u0438 \u0449\u0435 \u0431\u044a\u0434\u0430\u0442 \u043e\u0431\u0441\u043b\u0443\u0436\u0432\u0430\u043d\u0438 \u043e\u0442 \u0442\u0430\u043c.", + "ButtonConvertMedia": "\u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0430\u0439 \u043c\u0435\u0434\u0438\u044f\u0442\u0430", + "ButtonOrganize": "\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0438\u0440\u0430\u0439", + "LinkedToEmbyConnect": "Linked to Emby Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "\u0417\u0430 \u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b \u043a\u043e\u0439\u0442\u043e \u043d\u0435 \u0435 \u0432 \u043b\u0438\u0441\u0442\u0438\u0442\u0435, \u0449\u0435 \u0442\u0440\u044f\u0431\u0432\u0430 \u043f\u044a\u0440\u0432\u043e \u0434\u0430 \u0437\u0430\u043a\u0430\u0447\u0438\u0442\u0435 \u0442\u0435\u0445\u043d\u0438\u044f \u043f\u0440\u043e\u0444\u0438\u043b \u043a\u044a\u043c Emby Connect \u043e\u0442 \u0442\u044f\u0445\u043d\u0430\u0442\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430.", + "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", + "ButtonOk": "\u041e\u043a", + "ButtonCancel": "\u041e\u0442\u043c\u0435\u043d\u0438", + "ButtonExit": "Exit", + "ButtonNew": "\u041d\u043e\u0432", + "HeaderTV": "TV", + "HeaderAudio": "\u0410\u0443\u0434\u0438\u043e", + "HeaderVideo": "\u0412\u0438\u0434\u0435\u043e", + "HeaderPaths": "\u041f\u044a\u0442\u0438\u0449\u0430", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "\u0418\u0437\u0432\u0435\u0441\u0442\u0438\u044f", + "ButtonDonateWithPayPal": "\u041d\u0430\u043f\u0440\u0430\u0432\u0438 \u0434\u0430\u0440\u0435\u043d\u0438\u0435 \u0441 PayPal", + "OptionDetectArchiveFilesAsMedia": "\u0420\u0430\u0437\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u0430\u0440\u0445\u0438\u0432\u0438 \u043a\u0430\u0442\u043e \u043c\u0435\u0434\u0438\u0439\u043d\u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u0435", + "OptionDetectArchiveFilesAsMediaHelp": "\u0410\u043a\u043e \u0435 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u043e, \u0444\u0430\u0439\u043b\u043e\u0432\u0435 \u0441 \u0440\u0430\u0437\u0448\u0438\u0440\u0435\u043d\u0438\u044f .rar \u0438 .zip \u0449\u0435 \u0431\u044a\u0434\u0430\u0442 \u0440\u0430\u0437\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438 \u043a\u0430\u0442\u043e \u043c\u0435\u0434\u0438\u0439\u043d\u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u0435.", + "LabelEnterConnectUserName": "Username or email:", + "LabelEnterConnectUserNameHelp": "This is your Emby online account username or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "\u0421\u0438\u043d\u0445\u0440. \u0417\u0430\u0434\u0430\u0447\u0430", + "FolderTypeMovies": "\u0424\u0438\u043b\u043c\u0438", + "FolderTypeMusic": "\u041c\u0443\u0437\u0438\u043a\u0430", + "FolderTypeAdultVideos": "\u041a\u043b\u0438\u043f\u043e\u0432\u0435 \u0437\u0430 \u0432\u044a\u0437\u0440\u0430\u0441\u0442\u043d\u0438", + "FolderTypePhotos": "\u0421\u043d\u0438\u043c\u043a\u0438", + "FolderTypeMusicVideos": "\u041c\u0443\u0437\u0438\u043a\u0430\u043b\u043d\u0438 \u043a\u043b\u0438\u043f\u043e\u0432\u0435", + "FolderTypeHomeVideos": "\u0414\u043e\u043c\u0430\u0448\u043d\u0438 \u043a\u043b\u0438\u043f\u043e\u0432\u0435", + "FolderTypeGames": "\u0418\u0433\u0440\u0438", + "FolderTypeBooks": "\u041a\u043d\u0438\u0433\u0438", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "\u041d\u0430\u0441\u043b\u0435\u0434\u0438", + "LabelContentType": "\u0422\u0438\u043f \u043d\u0430 \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435\u0442\u043e:", + "TitleScheduledTasks": "\u041f\u043b\u0430\u043d\u0438\u0440\u0430\u043d\u0438 \u0437\u0430\u0434\u0430\u0447\u0438", + "HeaderSetupLibrary": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u043c\u0435\u0434\u0438\u0439\u043d\u0430\u0442\u0430 \u0441\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430", + "ButtonAddMediaFolder": "\u0414\u043e\u0431\u0430\u0432\u0438 \u043c\u0435\u0434\u0438\u0439\u043d\u0430 \u043f\u0430\u043f\u043a\u0430", + "LabelFolderType": "\u0422\u0438\u043f \u043d\u0430 \u043f\u0430\u043f\u043a\u0430\u0442\u0430:", + "ReferToMediaLibraryWiki": "\u0414\u043e\u043f\u0438\u0442\u0430\u0439\u0442\u0435 \u0441\u0435 \u0434\u043e wiki \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0442\u0430 \u043d\u0430 \u043c\u0435\u0434\u0438\u0439\u043d\u0430\u0442\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430", + "LabelCountry": "\u0421\u0442\u0440\u0430\u043d\u0430:", + "LabelLanguage": "\u0415\u0437\u0438\u043a:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "\u041f\u0440\u0438\u0441\u044a\u0435\u0434\u0438\u043d\u0435\u0442\u0435 \u0441\u0435 \u043a\u044a\u043c \u043e\u0442\u0431\u043e\u0440\u0430 \u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u0446\u0438\u0442\u0435", + "HeaderPreferredMetadataLanguage": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d \u0435\u0437\u0438\u043a \u043d\u0430 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u0442\u0430:", + "LabelSaveLocalMetadata": "\u0417\u0430\u043f\u043e\u043c\u043d\u0438 \u0438\u0437\u043a\u0443\u0441\u0442\u0432\u043e \u0438 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0432 \u043f\u0430\u043f\u043a\u0430\u0442\u0430 \u043d\u0430 \u043c\u0435\u0434\u0438\u044f\u0442\u0430", + "LabelSaveLocalMetadataHelp": "\u0417\u0430\u043f\u043e\u043c\u043d\u044f\u043d\u0435\u0442\u043e \u043d\u0430 \u0438\u0437\u043a\u0443\u0441\u0442\u0432\u043e \u0438 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0434\u0438\u0440\u0435\u043a\u0442\u043d\u043e \u0432 \u043c\u0435\u0434\u0438\u0439\u043d\u0438\u0442\u0435 \u043f\u0430\u043f\u043a\u0438 \u0449\u0435 \u0433\u0438 \u0441\u043b\u043e\u0436\u0438 \u043d\u0430 \u043c\u044f\u0441\u0442\u043e, \u043a\u044a\u0434\u0435\u0442\u043e \u043b\u0435\u0441\u043d\u043e \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0431\u044a\u0434\u0430\u0442 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0438.", + "LabelDownloadInternetMetadata": "\u0421\u0432\u0430\u043b\u044f\u0439 \u0438\u0437\u043a\u0443\u0441\u0442\u0432\u043e \u0438 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442", + "LabelDownloadInternetMetadataHelp": "Emby Server \u043c\u043e\u0436\u0435 \u0434\u0430 \u0441\u0432\u0430\u043b\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u043a\u0440\u0430\u0441\u0438\u0432\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0432\u0430\u0448\u0430\u0442\u0430 \u043c\u0435\u0434\u0438\u044f.", + "TabPreferences": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d\u0438\u044f", + "TabPassword": "\u041f\u0430\u0440\u043e\u043b\u0430", + "TabLibraryAccess": "\u0414\u043e\u0441\u044a\u043f \u0434\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0442\u0430", + "TabAccess": "\u0414\u043e\u0441\u0442\u044a\u043f", + "TabImage": "\u041a\u0430\u0440\u0442\u0438\u043d\u0430", + "TabProfile": "\u041f\u0440\u043e\u0444\u0438\u043b", + "TabMetadata": "\u041c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f", + "TabImages": "\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f", + "TabNotifications": "\u0418\u0437\u0432\u0435\u0441\u0442\u0438\u044f", + "TabCollectionTitles": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u044f", + "HeaderDeviceAccess": "\u0414\u043e\u0441\u0442\u044a\u043f \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0442\u0430", + "OptionEnableAccessFromAllDevices": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u0439 \u0434\u043e\u0441\u0442\u044a\u043f \u043e\u0442 \u0432\u0441\u0438\u0447\u043a\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430", + "OptionEnableAccessToAllChannels": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u0439 \u0434\u043e\u0441\u0442\u044a\u043f \u0434\u043e \u0432\u0441\u0438\u0447\u043a\u0438 \u043a\u0430\u043d\u0430\u043b\u0438", + "OptionEnableAccessToAllLibraries": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u0439 \u0434\u043e\u0441\u0442\u044a\u043f \u0434\u043e \u0432\u0441\u0438\u0447\u043a\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438", + "DeviceAccessHelp": "\u0422\u043e\u0432\u0430 \u0441\u0435 \u043e\u0442\u043d\u0430\u0441\u044f \u0441\u0430\u043c\u043e \u0437\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043a\u043e\u0438\u0442\u043e \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0431\u044a\u0434\u0430\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u0435\u043d\u0438 \u0438 \u043d\u044f\u043c\u0430 \u0434\u0430 \u043f\u043e\u043f\u0440\u0435\u0447\u0438 \u043d\u0430 \u0434\u043e\u0441\u0442\u044a\u043f \u043e\u0442 \u0431\u0440\u0430\u0443\u0437\u044a\u0440. \u0424\u0438\u043b\u0442\u0440\u0438\u0440\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0449\u0435 \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0442\u0438 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435\u0442\u043e \u0438\u043c \u0434\u043e\u043a\u0430\u0442\u043e \u043d\u0435 \u0431\u044a\u0434\u0430\u0442 \u043e\u0434\u043e\u0431\u0440\u0435\u043d\u0438 \u0442\u0443\u043a.", + "LabelDisplayMissingEpisodesWithinSeasons": "\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u0439 \u043b\u0438\u043f\u0441\u0432\u0430\u0449\u0438 \u0435\u043f\u0438\u0437\u043e\u0434\u0438 \u0432 \u0441\u0435\u0437\u043e\u043d\u0438\u0442\u0435", + "LabelUnairedMissingEpisodesWithinSeasons": "\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u0439 \u043d\u0435\u0438\u0437\u043b\u044a\u0447\u0435\u043d\u0438 \u0435\u043f\u0438\u0437\u043e\u0434\u0438 \u0432 \u0441\u0435\u0437\u043e\u043d\u0438\u0442\u0435", + "HeaderVideoPlaybackSettings": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u0432\u044a\u0437\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0436\u0434\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0432\u0438\u0434\u0435\u043e", + "HeaderPlaybackSettings": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u0432\u044a\u0437\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0436\u0434\u0430\u043d\u0435\u0442\u043e", + "LabelAudioLanguagePreference": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d \u0435\u0437\u0438\u043a \u043d\u0430 \u0430\u0443\u0434\u0438\u043e\u0442\u043e:", + "LabelSubtitleLanguagePreference": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d \u0435\u0437\u0438\u043a \u043d\u0430 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438\u0442\u0435:", + "OptionDefaultSubtitles": "\u041f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435", + "OptionOnlyForcedSubtitles": "\u0421\u0430\u043c\u043e \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u043d\u0438 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438", + "OptionAlwaysPlaySubtitles": "\u0412\u0438\u043d\u0430\u0433\u0438 \u043f\u043e\u043a\u0430\u0437\u0432\u0430\u0439 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438", + "OptionNoSubtitles": "\u0411\u0435\u0437 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438", + "OptionDefaultSubtitlesHelp": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u0438 \u043e\u0442\u0433\u043e\u0432\u0430\u0440\u044f\u0449\u0438 \u043d\u0430 \u0435\u0437\u0438\u043a\u043e\u0432\u0438\u0442\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d\u0438\u044f \u0449\u0435 \u0431\u044a\u0434\u0430\u0442 \u043f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0438, \u043a\u043e\u0433\u0430\u0442\u043e \u0430\u0443\u0434\u0438\u043e\u0442\u043e \u0435 \u043d\u0430 \u0434\u0440\u0443\u0433 \u0435\u0437\u0438\u043a.", + "OptionOnlyForcedSubtitlesHelp": "\u0421\u0430\u043c\u043e \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438, \u043c\u0430\u0440\u043a\u0438\u0440\u0430\u043d\u0438 \u043a\u0430\u0442\u043e \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u043d\u0438, \u0449\u0435 \u0431\u044a\u0434\u0430\u0442 \u0437\u0430\u0440\u0435\u0436\u0434\u0430\u043d\u0438", + "OptionAlwaysPlaySubtitlesHelp": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u0438, \u043e\u0442\u0433\u043e\u0432\u0430\u0440\u044f\u0449\u0438 \u043d\u0430 \u0435\u0437\u0438\u043a\u043e\u0432\u043e\u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d\u0438\u0435, \u0449\u0435 \u0431\u044a\u0434\u0430\u0442 \u0437\u0430\u0440\u0435\u0436\u0434\u0430\u043d\u0438 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0435\u0437\u0438\u043a\u0430 \u043d\u0430 \u0430\u0443\u0434\u0438\u043e\u0442\u043e.", + "OptionNoSubtitlesHelp": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u0438 \u043d\u044f\u043c\u0430 \u0434\u0430 \u0431\u044a\u0434\u0430\u0442 \u0437\u0430\u0440\u0435\u0436\u0434\u0430\u043d\u0438 \u043f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435.", + "TabProfiles": "\u041f\u0440\u043e\u0444\u0438\u043b\u0438", + "TabSecurity": "\u0417\u0430\u0449\u0438\u0442\u0430", + "ButtonAddUser": "\u0414\u043e\u0431\u0430\u0432\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b", + "ButtonAddLocalUser": "\u0414\u043e\u0431\u0430\u0432\u0438 \u043b\u043e\u043a\u0430\u043b\u0435\u043d \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b", + "ButtonInviteUser": "\u041f\u043e\u043a\u0430\u043d\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b", + "ButtonSave": "\u0417\u0430\u043f\u043e\u043c\u043d\u0438", + "ButtonResetPassword": "\u041d\u0443\u043b\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043f\u0430\u0440\u043e\u043b\u0430", + "LabelNewPassword": "\u041d\u043e\u0432\u0430 \u043f\u0430\u0440\u043e\u043b\u0430:", + "LabelNewPasswordConfirm": "\u041d\u043e\u0432\u0430 \u043f\u0430\u0440\u043e\u043b\u0430(\u043e\u0442\u043d\u043e\u0432\u043e):", + "HeaderCreatePassword": "\u041d\u0430\u043f\u0440\u0430\u0432\u0438 \u043f\u0430\u0440\u043e\u043b\u0430", + "LabelCurrentPassword": "\u0422\u0435\u043a\u0443\u0449\u0430 \u043f\u0430\u0440\u043e\u043b\u0430:", + "LabelMaxParentalRating": "\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u043d\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0441\u043a\u0438 \u0440\u0435\u0439\u0442\u0438\u043d\u0433:", + "MaxParentalRatingHelp": "\u0421\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435 \u0441 \u043f\u043e-\u0432\u0438\u0441\u043e\u043a \u0440\u0435\u0439\u0442\u0438\u043d\u0433 \u0449\u0435 \u0431\u044a\u0434\u0435 \u0441\u043a\u0440\u0438\u0442\u043e \u043e\u0442 \u0442\u043e\u0437\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b.", + "LibraryAccessHelp": "\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043c\u0435\u0434\u0438\u0439\u043d\u0438\u0442\u0435 \u043f\u0430\u043f\u043a\u0438, \u043a\u043e\u0438\u0442\u043e \u0434\u0430 \u0441\u043f\u043e\u0434\u0435\u043b\u0438\u0442\u0435 \u0441 \u0442\u043e\u0437\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b. \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0438\u0442\u0435 \u0449\u0435 \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0442 \u0432\u0441\u0438\u0447\u043a\u0438 \u043f\u0430\u043f\u043a\u0438 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u043a\u0438 \u043c\u0435\u043d\u0438\u0434\u0436\u044a\u0440\u0430 \u043d\u0430 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f.", + "ChannelAccessHelp": "\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u0430\u043d\u0430\u043b\u0438\u0442\u0435, \u043a\u043e\u0438\u0442\u043e \u0434\u0430 \u0441\u043f\u043e\u0434\u0435\u043b\u0438\u0442\u0435 \u0441 \u0442\u043e\u0437\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b. \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0438\u0442\u0435 \u0449\u0435 \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0442 \u0432\u0441\u0438\u0447\u043a\u0438 \u043a\u0430\u043d\u0430\u043b\u0438 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u043a\u0438 \u043c\u0435\u043d\u0438\u0434\u0436\u044a\u0440\u0430 \u043d\u0430 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f.", + "ButtonDeleteImage": "\u0418\u0437\u0442\u0440\u0438\u0439 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435", + "LabelSelectUsers": "\u0418\u0437\u0431\u0435\u0440\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438:", + "ButtonUpload": "\u041a\u0430\u0447\u0438:", + "HeaderUploadNewImage": "\u041a\u0430\u0447\u0438 \u041d\u043e\u0432\u043e \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435:", + "LabelDropImageHere": "\u041f\u0443\u0441\u043d\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0442\u043e \u0442\u0443\u043a", + "ImageUploadAspectRatioHelp": "1:1 \u043f\u0440\u0435\u043f\u043e\u0440\u044a\u0447\u0430\u043d\u0430 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u044f. \u0421\u0430\u043c\u043e JPG\/PNG", + "MessageNothingHere": "\u0422\u0443\u043a \u043d\u044f\u043c\u0430 \u043d\u0438\u0449\u043e.", + "MessagePleaseEnsureInternetMetadata": "\u041c\u043e\u043b\u044f, \u0443\u0432\u0435\u0440\u0435\u0442\u0435 \u0441\u0435 \u0447\u0435 \u0441\u0432\u0430\u043b\u044f\u043d\u0435\u0442\u043e \u043d\u0430 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e.", + "TabSuggested": "\u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f", + "TabSuggestions": "Suggestions", + "TabLatest": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438", + "TabUpcoming": "\u041f\u0440\u0435\u0434\u0441\u0442\u043e\u044f\u0449\u0438", + "TabShows": "\u041f\u0440\u0435\u0434\u0430\u0432\u0430\u043d\u0438\u044f", + "TabEpisodes": "\u0415\u043f\u0438\u0437\u043e\u0434\u0438", + "TabGenres": "\u0416\u0430\u043d\u0440\u043e\u0432\u0435", "TabPeople": "\u0425\u043e\u0440\u0430", "TabNetworks": "\u041c\u0440\u0435\u0436\u0438", "HeaderUsers": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438", @@ -112,7 +287,9 @@ "OptionFileMetadataYearMismatch": "\u0420\u0430\u0437\u043b\u0438\u0447\u0438\u0435 \u043d\u0430 \u0433\u043e\u0434\u0438\u043d\u0430 \u0432\u044a\u0432 \u0424\u0430\u0439\u043b\/\u041c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f", "TabGeneral": "\u0413\u043b\u0430\u0432\u043d\u043e", "TitleSupport": "\u041f\u043e\u0434\u0434\u0440\u044a\u0436\u043a\u0430", + "LabelSeasonNumber": "Season number", "TabLog": "\u041b\u043e\u0433", + "LabelEpisodeNumber": "Episode number", "TabAbout": "\u041e\u0442\u043d\u043e\u0441\u043d\u043e", "TabSupporterKey": "\u041f\u043e\u0434\u0434\u0440\u044a\u0436\u043d\u0438\u043a\u043e\u0432 \u043a\u043b\u044e\u0447", "TabBecomeSupporter": "\u0421\u0442\u0430\u043d\u0438 \u043f\u043e\u0434\u0434\u0440\u044a\u0436\u043d\u0438\u043a", @@ -138,6 +315,9 @@ "OptionAllowRemoteControlOthers": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438 \u043e\u0442\u0434\u0430\u043b\u0435\u0447\u0435\u043d \u043a\u043e\u043d\u0442\u0440\u043e\u043b \u043d\u0430 \u0434\u0440\u0443\u0433\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438", "OptionAllowRemoteSharedDevices": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438 \u043e\u0442\u0434\u0430\u043b\u0435\u0447\u0435\u043d \u043a\u043e\u043d\u0442\u0440\u043e\u043b \u043d\u0430 \u0441\u043f\u043e\u0434\u0435\u043b\u0435\u043d\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430", "OptionAllowRemoteSharedDevicesHelp": "DLNA \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u0435 \u0441\u0447\u0438\u0442\u0430\u0442 \u0437\u0430 \u0441\u043f\u043e\u0434\u0435\u043b\u0435\u043d\u0438 \u0434\u043e\u043a\u0430\u0442\u043e \u043d\u044f\u043a\u043e\u0439 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b \u043d\u0435 \u0437\u0430\u043f\u043e\u0447\u043d\u0435 \u0434\u0430 \u0433\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0430.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", "HeaderRemoteControl": "\u041e\u0442\u0434\u0430\u043b\u0435\u0447\u0435\u043d \u041a\u043e\u043d\u0442\u0440\u043e\u043b", "OptionMissingTmdbId": "\u041b\u0438\u043f\u0441\u0432\u0430\u0449\u043e Tmdb ID", "OptionIsHD": "HD", @@ -406,8 +586,6 @@ "LabelSkipped": "Skipped", "HeaderEpisodeOrganization": "Episode Organization", "LabelSeries": "Series:", - "LabelSeasonNumber": "Season number:", - "LabelEpisodeNumber": "Episode number:", "LabelEndingEpisodeNumber": "Ending episode number:", "LabelEndingEpisodeNumberHelp": "Only required for multi-episode files", "HeaderSupportTheTeam": "\u041f\u043e\u0434\u043a\u0440\u0435\u043f\u0435\u0442\u0435 Emby \u041e\u0442\u0431\u043e\u0440\u044a\u0442", @@ -695,6 +873,7 @@ "HeaderTypeText": "Enter Text", "LabelTypeText": "Text", "HeaderSearchForSubtitles": "Search for Subtitles", + "ButtonMore": "More", "MessageNoSubtitleSearchResultsFound": "No search results founds.", "TabDisplay": "Display", "TabLanguages": "Languages", @@ -725,7 +904,7 @@ "HeaderLiveTv": "Live TV", "HeaderReports": "Reports", "HeaderMetadataManager": "Metadata Manager", - "HeaderPreferences": "Preferences", + "HeaderSettings": "Settings", "MessageLoadingChannels": "Loading channel content...", "MessageLoadingContent": "Loading content...", "ButtonMarkRead": "Mark Read", @@ -923,7 +1102,6 @@ "OptionReportArtists": "Artists", "OptionReportAlbums": "Albums", "OptionReportAdultVideos": "Adult videos", - "ButtonMore": "More", "HeaderActivity": "Activity", "ScheduledTaskStartedWithName": "{0} started", "ScheduledTaskCancelledWithName": "{0} was cancelled", @@ -1053,6 +1231,7 @@ "OptionNoThemeVideo": "No Theme Video", "LabelOneTimeDonationAmount": "Donation amount:", "ButtonDonate": "Donate", + "ButtonPurchase": "Purchase", "OptionActor": "Actor", "OptionComposer": "Composer", "OptionDirector": "Director", @@ -1072,7 +1251,6 @@ "HeaderDeveloperInfo": "Developer Info", "HeaderRevisionHistory": "Revision History", "ButtonViewWebsite": "View website", - "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderXmlSettings": "Xml Settings", "HeaderXmlDocumentAttributes": "Xml Document Attributes", "HeaderXmlDocumentAttribute": "Xml Document Attribute", @@ -1086,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", "LabelExternalPlayers": "External players:", "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", "HeaderSubtitleProfile": "Subtitle Profile", "HeaderSubtitleProfiles": "Subtitle Profiles", "HeaderSubtitleProfilesHelp": "Subtitle profiles describe the subtitle formats supported by the device.", @@ -1214,7 +1395,7 @@ "HeaderUpcomingMovies": "Upcoming Movies", "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", - "ButtonMoreItems": "More...", + "ButtonMoreItems": "More", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", @@ -1233,14 +1414,6 @@ "OptionEnableFullSpeedConversion": "Enable full speed conversion", "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", "HeaderViewStyles": "View Styles", "LabelSelectViewStyles": "Enable enhanced presentations for:", "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", @@ -1258,180 +1431,24 @@ "HeaderNewServer": "New Server", "ButtonChangeServer": "Change Server", "HeaderConnectToServer": "Connect to Server", - "LabelExit": "\u0418\u0437\u043b\u0435\u0437", - "LabelVisitCommunity": "\u041f\u043e\u0441\u0435\u0442\u0438 \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u0442\u043e", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e", - "LabelApiDocumentation": "API \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f", - "LabelDeveloperResources": "\u0420\u0435\u0441\u0443\u0440\u0441\u0438 \u0437\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u0446\u0438", - "LabelBrowseLibrary": "\u0420\u0430\u0437\u0433\u043b\u0435\u0434\u0430\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0442\u0430", - "LabelConfigureServer": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0439 Emby", - "LabelOpenLibraryViewer": "\u041e\u0442\u0432\u043e\u0440\u0438 \u043f\u0440\u0435\u0433\u043b\u0435\u0434 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0442\u0430", - "LabelRestartServer": "\u0420\u0435\u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u0439 \u0441\u044a\u0440\u0432\u044a\u0440\u0430", - "LabelShowLogWindow": "\u041f\u043e\u043a\u0430\u0436\u0438 \u043b\u043e\u0433\u043e\u0432\u0438\u044f \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446", - "LabelPrevious": "\u041f\u0440\u0435\u0434\u0438\u0448\u0435\u043d", - "LabelFinish": "\u041a\u0440\u0430\u0439", - "LabelNext": "\u0421\u043b\u0435\u0434\u0432\u0430\u0449", - "LabelYoureDone": "\u0413\u043e\u0442\u043e\u0432\u0438 \u0441\u0442\u0435!", - "WelcomeToProject": "\u0414\u043e\u0431\u0440\u0435 \u0434\u043e\u0448\u043b\u0438 \u0432 Emby!", - "ThisWizardWillGuideYou": "\u0422\u043e\u0437\u0438 \u043c\u0430\u0433\u044c\u043e\u0441\u043d\u0438\u043a \u0449\u0435 \u0432\u0438 \u043d\u0430\u043f\u044a\u0442\u0441\u0442\u0432\u0430 \u043f\u0440\u0435\u0437 \u043f\u0440\u043e\u0446\u0435\u0441\u0430 \u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f. \u0417\u0430 \u0434\u0430 \u0437\u0430\u043f\u043e\u0447\u043d\u0435\u0442\u0435, \u043c\u043e\u043b\u044f \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d\u0438\u044f \u043e\u0442 \u0432\u0430\u0441 \u0435\u0437\u0438\u043a.", - "TellUsAboutYourself": "\u0420\u0430\u0437\u043a\u0430\u0436\u0435\u0442\u0435 \u0437\u0430 \u0441\u0435\u0431\u0435 \u0441\u0438", - "ButtonQuickStartGuide": "\u0420\u044a\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0437\u0430 \u0431\u044a\u0440\u0437\u043e \u0437\u0430\u043f\u043e\u0447\u0432\u0430\u043d\u0435", - "LabelYourFirstName": "\u041f\u044a\u0440\u0432\u043e\u0442\u043e \u0432\u0438 \u0438\u043c\u0435:", - "MoreUsersCanBeAddedLater": "\u041f\u043e\u0432\u0435\u0447\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0431\u044a\u0434\u0430\u0442 \u0434\u043e\u0431\u0430\u0432\u0435\u043d\u0438 \u043f\u043e-\u043a\u044a\u0441\u043d\u043e \u043e\u0442 \u0433\u043b\u0430\u0432\u043d\u0438\u044f \u043f\u0430\u043d\u0435\u043b.", - "UserProfilesIntro": "Emby \u0432\u043a\u043b\u044e\u0447\u0432\u0430 \u0432\u0433\u0440\u0430\u0434\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0440\u044a\u0436\u043a\u0430 \u043d\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u0438, \u043a\u043e\u0438\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0432\u0430\u0442 \u043d\u0430 \u0432\u0441\u0435\u043a\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0442\u0435\u043b \u0434\u0430 \u0438\u043c\u0430 \u0441\u0432\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u0430\u0442\u0430, \u043c\u044f\u0441\u0442\u043e \u043d\u0430 \u043f\u0443\u0441\u043a\u0430\u043d\u0435 \u0438 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0441\u043a\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438.", - "LabelWindowsService": "Windows Service", - "AWindowsServiceHasBeenInstalled": "Windows Service \u0431\u0435\u0448\u0435 \u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d.", - "WindowsServiceIntro1": "\u041d\u043e\u0440\u043c\u0430\u043b\u043d\u043e, Emby \u0421\u044a\u0440\u0432\u044a\u0440 \u0440\u0430\u0431\u043e\u0442\u0438 \u043a\u0430\u0442\u043e \u0434\u0435\u0441\u043a\u0442\u043e\u043f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u0430 \u0441 \u0442\u0440\u0435\u0439 \u0438\u043a\u043e\u043d\u0430, \u043d\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0439, \u0447\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u0430 \u043a\u0430\u0442\u043e \u0443\u0441\u043b\u0443\u0433\u0430 \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0430 \u0433\u043e \u043f\u0443\u0441\u043d\u0435\u0442\u0435 \u043e\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043d\u0438\u044f \u043f\u0430\u043d\u0435\u043b \u043d\u0430 windows \u0443\u0441\u043b\u0443\u0433\u0438\u0442\u0435.", - "WindowsServiceIntro2": "\u0410\u043a\u043e \u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 Windows \u0443\u0441\u043b\u0443\u0433\u0430\u0442\u0430, \u043c\u043e\u043b\u044f, \u0438\u043c\u0430\u0439\u0442\u0435 \u043f\u0440\u0435\u0434\u0432\u0438\u0434, \u0447\u0435 \u0442\u043e\u0439 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0431\u044a\u0434\u0435 \u043f\u0443\u0441\u043d\u0430\u0442 \u0434\u043e\u043a\u0430\u0442\u043e \u044f \u0438\u043c\u0430 \u0438\u043a\u043e\u043d\u0430\u0442\u0430 \u0432 \u043b\u0435\u043d\u0442\u0430\u0442\u0430 ,\u0442\u0430\u043a\u0430 \u0447\u0435 \u0449\u0435 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0438\u0437\u043b\u0435\u0437\u0435\u0442\u0435 \u043e\u0442 \u043d\u0435\u044f, \u0437\u0430 \u0434\u0430 \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430 \u0443\u0441\u043b\u0443\u0433\u0430\u0442\u0430. \u0423\u0441\u043b\u0443\u0433\u0430\u0442\u0430 \u0441\u044a\u0449\u043e \u0442\u0430\u043a\u0430 \u0449\u0435 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0431\u044a\u0434\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u0430 \u0441 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u0438 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0438 \u0447\u0440\u0435\u0437 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043d\u0438\u044f \u043f\u0430\u043d\u0435\u043b. \u041c\u043e\u043b\u044f, \u0438\u043c\u0430\u0439\u0442\u0435 \u043f\u0440\u0435\u0434\u0432\u0438\u0434, \u0447\u0435 \u0432 \u0442\u043e\u0437\u0438 \u043c\u043e\u043c\u0435\u043d\u0442 \u0443\u0441\u043b\u0443\u0433\u0430\u0442\u0430 \u043d\u0435 \u0435 \u0432 \u0441\u044a\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u0430 \u0441\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0430 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u043d\u043e, \u0442\u0430\u043a\u0430 \u0447\u0435 \u043d\u043e\u0432\u0438\u0442\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0449\u0435 \u0438\u0437\u0438\u0441\u043a\u0432\u0430\u0442 \u0440\u044a\u0447\u043d\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435.", - "WizardCompleted": "\u0422\u043e\u0432\u0430 \u0435 \u0432\u0441\u0438\u0447\u043a\u043e \u043e\u0442 \u043a\u043e\u0435\u0442\u043e \u0441\u0435 \u043d\u0443\u0436\u0434\u0430\u0435\u043c \u0437\u0430 \u043c\u043e\u043c\u0435\u043d\u0442\u0430. Emby \u0435 \u0437\u0430\u043f\u043e\u0447\u043d\u0430\u043b \u0434\u0430 \u0441\u044a\u0431\u0438\u0440\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u043c\u0435\u0434\u0438\u0439\u043d\u0430\u0442\u0430 \u0432\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430. \u0420\u0430\u0437\u0433\u043b\u0435\u0434\u0430\u0439\u0442\u0435 \u043d\u044f\u043a\u043e\u0438 \u043e\u0442 \u043d\u0430\u0448\u0438\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0442\u0438\u0441\u043d\u0435\u0442\u0435 <b>\u0413\u043e\u0442\u043e\u0432\u043e<\/b>, \u0437\u0430 \u0434\u0430 \u0432\u0438\u0434\u0438\u0442\u0435 <b>Server Dashboard<\/b>.", - "LabelConfigureSettings": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438", - "LabelEnableVideoImageExtraction": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0438\u0437\u0432\u043b\u0438\u0447\u0430\u043d\u0435 \u043d\u0430 \u0432\u0438\u0434\u0435\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f.", - "VideoImageExtractionHelp": "\u0417\u0430 \u0432\u0438\u0434\u0435\u043e\u043a\u043b\u0438\u043f\u043e\u0432\u0435, \u043a\u043e\u0438\u0442\u043e \u0432\u0441\u0435 \u043e\u0449\u0435 \u043d\u0435 \u0440\u0430\u0437\u043f\u043e\u043b\u0430\u0433\u0430\u0442 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0438 \u0437\u0430 \u043a\u043e\u0438\u0442\u043e \u043d\u0435 \u0441\u043c\u0435 \u0432 \u0441\u044a\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u0430 \u043d\u0430\u043c\u0435\u0440\u0438\u043c \u0442\u0430\u043a\u0438\u0432\u0430. \u0422\u043e\u0432\u0430 \u0449\u0435 \u0434\u043e\u0431\u0430\u0432\u0438 \u0434\u043e\u043f\u044a\u043b\u043d\u0438\u0442\u0435\u043b\u043d\u043e \u0432\u0440\u0435\u043c\u0435 \u043a\u044a\u043c \u043f\u044a\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u043d\u043e\u0442\u043e \u0441\u043a\u0430\u043d\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0442\u0430, \u043d\u043e \u0449\u0435 \u0434\u043e\u0432\u0435\u0434\u0435 \u0434\u043e \u043f\u043e-\u043f\u0440\u0438\u044f\u0442\u0435\u043d \u0432\u0438\u0434.", - "LabelEnableChapterImageExtractionForMovies": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u0435 \u0438\u0437\u0432\u043b\u0438\u0447\u0430\u043d\u0435 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0433\u043b\u0430\u0432\u0438\u0442\u0435 \u0437\u0430 \u0424\u0438\u043b\u043c\u0438.", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043d\u0430 \u043f\u043e\u0440\u0442\u043e\u0432\u0435\u0442\u0435", - "LabelEnableAutomaticPortMappingHelp": "UPnP \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0432\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043d\u0430 \u0440\u0443\u0442\u0435\u0440\u0430 \u0437\u0430 \u043b\u0435\u0441\u0435\u043d \u043e\u0442\u0434\u0430\u043b\u0435\u0447\u0435\u043d \u0434\u043e\u0441\u0442\u044a\u043f. \u0422\u043e\u0432\u0430 \u043c\u043e\u0436\u0435 \u0434\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0438 \u0441 \u043d\u044f\u043a\u043e\u0438 \u0440\u0443\u0442\u0435\u0440\u0438.", - "HeaderTermsOfService": "Emby \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0437\u0430 \u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435", - "MessagePleaseAcceptTermsOfService": "\u041c\u043e\u043b\u044f \u043f\u0440\u0438\u0435\u043c\u0435\u0442\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0442\u0430 \u0437\u0430 \u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435 \u0438 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u044f\u0442\u0430 \u0437\u0430 \u043f\u043e\u0432\u0435\u0440\u0438\u0442\u0435\u043b\u043d\u043e\u0441\u0442, \u043f\u0440\u0435\u0434\u0438 \u0434\u0430 \u043f\u0440\u043e\u0434\u044a\u043b\u0436\u0438\u0442\u0435.", - "OptionIAcceptTermsOfService": "\u041f\u0440\u0438\u0435\u043c\u0430\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0442\u0430 \u0437\u0430 \u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435", - "ButtonPrivacyPolicy": "\u0414\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u044f \u0437\u0430 \u043f\u043e\u0432\u0435\u0440\u0438\u0442\u0435\u043b\u043d\u043e\u0441\u0442", - "ButtonTermsOfService": "\u0423\u0441\u043b\u043e\u0432\u0438\u044f \u0437\u0430 \u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435", - "HeaderDeveloperOptions": "\u041e\u043f\u0446\u0438\u0438 \u0437\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u0446\u0438", - "OptionEnableWebClientResponseCache": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u0435 \u043a\u0435\u0448\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043e\u0442\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0435 \u043d\u0430 \u0443\u0435\u0431 \u043a\u043b\u0438\u0435\u043d\u0442\u0438\u0442\u0435", - "OptionDisableForDevelopmentHelp": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0439\u0442\u0435 \u0442\u0435\u0437\u0438 \u0441\u043f\u043e\u0440\u0435\u0434 \u043d\u0443\u0436\u0434\u0438\u0442\u0435 \u0437\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0430 \u0443\u0435\u0431 \u043a\u043b\u0438\u0435\u043d\u0442\u0438.", - "OptionEnableWebClientResourceMinification": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u0435 \u0441\u043c\u0430\u043b\u044f\u0432\u0430\u043d\u0435(\u043c\u0438\u043d\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f) \u043d\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u0438\u0442\u0435 \u043d\u0430 \u0443\u0435\u0431 \u043a\u043b\u0438\u0435\u043d\u0442\u0430", - "LabelDashboardSourcePath": "\u0413\u043b\u0430\u0432\u0435\u043d \u043f\u044a\u0442 \u043a\u044a\u043c \u0443\u0435\u0431 \u043a\u043b\u0438\u0435\u043d\u0442\u0430", - "LabelDashboardSourcePathHelp": "\u0410\u043a\u043e \u043f\u0443\u0441\u043a\u0430\u0442\u0435 \u0441\u044a\u0440\u0432\u044a\u0440\u0430 \u043e\u0442 \u0438\u0437\u0445\u043e\u0434\u0435\u043d \u043a\u043e\u0434, \u043f\u043e\u0441\u043e\u0447\u0435\u0442\u0435 \u043f\u044a\u0442\u044f \u043a\u044a\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0442\u043e \u0442\u0430\u0431\u043b\u043e. \u0412\u0441\u0438\u0447\u043a\u0438 \u0443\u0435\u0431 \u043a\u043b\u0438\u0435\u043d\u0442\u0438 \u0449\u0435 \u0431\u044a\u0434\u0430\u0442 \u043e\u0431\u0441\u043b\u0443\u0436\u0432\u0430\u043d\u0438 \u043e\u0442 \u0442\u0430\u043c.", - "ButtonConvertMedia": "\u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0430\u0439 \u043c\u0435\u0434\u0438\u044f\u0442\u0430", - "ButtonOrganize": "\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0438\u0440\u0430\u0439", - "LinkedToEmbyConnect": "Linked to Emby Connect", - "HeaderSupporterBenefits": "Supporter Benefits", - "HeaderAddUser": "Add User", - "LabelAddConnectSupporterHelp": "\u0417\u0430 \u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b \u043a\u043e\u0439\u0442\u043e \u043d\u0435 \u0435 \u0432 \u043b\u0438\u0441\u0442\u0438\u0442\u0435, \u0449\u0435 \u0442\u0440\u044f\u0431\u0432\u0430 \u043f\u044a\u0440\u0432\u043e \u0434\u0430 \u0437\u0430\u043a\u0430\u0447\u0438\u0442\u0435 \u0442\u0435\u0445\u043d\u0438\u044f \u043f\u0440\u043e\u0444\u0438\u043b \u043a\u044a\u043c Emby Connect \u043e\u0442 \u0442\u044f\u0445\u043d\u0430\u0442\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430.", - "LabelPinCode": "Pin code:", - "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", - "HeaderSync": "Sync", - "ButtonOk": "\u041e\u043a", - "ButtonCancel": "\u041e\u0442\u043c\u0435\u043d\u0438", - "ButtonExit": "Exit", - "ButtonNew": "\u041d\u043e\u0432", - "HeaderTV": "TV", - "HeaderAudio": "\u0410\u0443\u0434\u0438\u043e", - "HeaderVideo": "\u0412\u0438\u0434\u0435\u043e", - "HeaderPaths": "\u041f\u044a\u0442\u0438\u0449\u0430", - "CategorySync": "Sync", - "TabPlaylist": "Playlist", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "\u0418\u0437\u0432\u0435\u0441\u0442\u0438\u044f", - "ButtonDonateWithPayPal": "\u041d\u0430\u043f\u0440\u0430\u0432\u0438 \u0434\u0430\u0440\u0435\u043d\u0438\u0435 \u0441 PayPal", - "OptionDetectArchiveFilesAsMedia": "\u0420\u0430\u0437\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u0430\u0440\u0445\u0438\u0432\u0438 \u043a\u0430\u0442\u043e \u043c\u0435\u0434\u0438\u0439\u043d\u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u0435", - "OptionDetectArchiveFilesAsMediaHelp": "\u0410\u043a\u043e \u0435 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u043e, \u0444\u0430\u0439\u043b\u043e\u0432\u0435 \u0441 \u0440\u0430\u0437\u0448\u0438\u0440\u0435\u043d\u0438\u044f .rar \u0438 .zip \u0449\u0435 \u0431\u044a\u0434\u0430\u0442 \u0440\u0430\u0437\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438 \u043a\u0430\u0442\u043e \u043c\u0435\u0434\u0438\u0439\u043d\u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u0435.", - "LabelEnterConnectUserName": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u043e \u0438\u043c\u0435 \u0438\u043b\u0438 email:", - "LabelEnterConnectUserNameHelp": "\u0422\u043e\u0432\u0430 \u0441\u0430 \u0432\u0430\u0448\u0438\u0442\u0435 Emby \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u043e \u0438\u043c\u0435 \u0438 \u043f\u0430\u0440\u043e\u043b\u0430.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "\u0421\u0438\u043d\u0445\u0440. \u0417\u0430\u0434\u0430\u0447\u0430", - "FolderTypeMixed": "\u0421\u043c\u0435\u0441\u0435\u043d\u043e \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435", - "FolderTypeMovies": "\u0424\u0438\u043b\u043c\u0438", - "FolderTypeMusic": "\u041c\u0443\u0437\u0438\u043a\u0430", - "FolderTypeAdultVideos": "\u041a\u043b\u0438\u043f\u043e\u0432\u0435 \u0437\u0430 \u0432\u044a\u0437\u0440\u0430\u0441\u0442\u043d\u0438", - "FolderTypePhotos": "\u0421\u043d\u0438\u043c\u043a\u0438", - "FolderTypeMusicVideos": "\u041c\u0443\u0437\u0438\u043a\u0430\u043b\u043d\u0438 \u043a\u043b\u0438\u043f\u043e\u0432\u0435", - "FolderTypeHomeVideos": "\u0414\u043e\u043c\u0430\u0448\u043d\u0438 \u043a\u043b\u0438\u043f\u043e\u0432\u0435", - "FolderTypeGames": "\u0418\u0433\u0440\u0438", - "FolderTypeBooks": "\u041a\u043d\u0438\u0433\u0438", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "\u041d\u0430\u0441\u043b\u0435\u0434\u0438", - "LabelContentType": "\u0422\u0438\u043f \u043d\u0430 \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435\u0442\u043e:", - "TitleScheduledTasks": "\u041f\u043b\u0430\u043d\u0438\u0440\u0430\u043d\u0438 \u0437\u0430\u0434\u0430\u0447\u0438", - "HeaderSetupLibrary": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u043c\u0435\u0434\u0438\u0439\u043d\u0430\u0442\u0430 \u0441\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430", - "ButtonAddMediaFolder": "\u0414\u043e\u0431\u0430\u0432\u0438 \u043c\u0435\u0434\u0438\u0439\u043d\u0430 \u043f\u0430\u043f\u043a\u0430", - "LabelFolderType": "\u0422\u0438\u043f \u043d\u0430 \u043f\u0430\u043f\u043a\u0430\u0442\u0430:", - "ReferToMediaLibraryWiki": "\u0414\u043e\u043f\u0438\u0442\u0430\u0439\u0442\u0435 \u0441\u0435 \u0434\u043e wiki \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0442\u0430 \u043d\u0430 \u043c\u0435\u0434\u0438\u0439\u043d\u0430\u0442\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430", - "LabelCountry": "\u0421\u0442\u0440\u0430\u043d\u0430:", - "LabelLanguage": "\u0415\u0437\u0438\u043a:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "\u041f\u0440\u0438\u0441\u044a\u0435\u0434\u0438\u043d\u0435\u0442\u0435 \u0441\u0435 \u043a\u044a\u043c \u043e\u0442\u0431\u043e\u0440\u0430 \u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u0446\u0438\u0442\u0435", - "HeaderPreferredMetadataLanguage": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d \u0435\u0437\u0438\u043a \u043d\u0430 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u0442\u0430:", - "LabelSaveLocalMetadata": "\u0417\u0430\u043f\u043e\u043c\u043d\u0438 \u0438\u0437\u043a\u0443\u0441\u0442\u0432\u043e \u0438 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0432 \u043f\u0430\u043f\u043a\u0430\u0442\u0430 \u043d\u0430 \u043c\u0435\u0434\u0438\u044f\u0442\u0430", - "LabelSaveLocalMetadataHelp": "\u0417\u0430\u043f\u043e\u043c\u043d\u044f\u043d\u0435\u0442\u043e \u043d\u0430 \u0438\u0437\u043a\u0443\u0441\u0442\u0432\u043e \u0438 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0434\u0438\u0440\u0435\u043a\u0442\u043d\u043e \u0432 \u043c\u0435\u0434\u0438\u0439\u043d\u0438\u0442\u0435 \u043f\u0430\u043f\u043a\u0438 \u0449\u0435 \u0433\u0438 \u0441\u043b\u043e\u0436\u0438 \u043d\u0430 \u043c\u044f\u0441\u0442\u043e, \u043a\u044a\u0434\u0435\u0442\u043e \u043b\u0435\u0441\u043d\u043e \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0431\u044a\u0434\u0430\u0442 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0438.", - "LabelDownloadInternetMetadata": "\u0421\u0432\u0430\u043b\u044f\u0439 \u0438\u0437\u043a\u0443\u0441\u0442\u0432\u043e \u0438 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442", - "LabelDownloadInternetMetadataHelp": "Emby Server \u043c\u043e\u0436\u0435 \u0434\u0430 \u0441\u0432\u0430\u043b\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u043a\u0440\u0430\u0441\u0438\u0432\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0432\u0430\u0448\u0430\u0442\u0430 \u043c\u0435\u0434\u0438\u044f.", - "TabPreferences": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d\u0438\u044f", - "TabPassword": "\u041f\u0430\u0440\u043e\u043b\u0430", - "TabLibraryAccess": "\u0414\u043e\u0441\u044a\u043f \u0434\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0442\u0430", - "TabAccess": "\u0414\u043e\u0441\u0442\u044a\u043f", - "TabImage": "\u041a\u0430\u0440\u0442\u0438\u043d\u0430", - "TabProfile": "\u041f\u0440\u043e\u0444\u0438\u043b", - "TabMetadata": "\u041c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f", - "TabImages": "\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f", - "TabNotifications": "\u0418\u0437\u0432\u0435\u0441\u0442\u0438\u044f", - "TabCollectionTitles": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u044f", - "HeaderDeviceAccess": "\u0414\u043e\u0441\u0442\u044a\u043f \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0442\u0430", - "OptionEnableAccessFromAllDevices": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u0439 \u0434\u043e\u0441\u0442\u044a\u043f \u043e\u0442 \u0432\u0441\u0438\u0447\u043a\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430", - "OptionEnableAccessToAllChannels": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u0439 \u0434\u043e\u0441\u0442\u044a\u043f \u0434\u043e \u0432\u0441\u0438\u0447\u043a\u0438 \u043a\u0430\u043d\u0430\u043b\u0438", - "OptionEnableAccessToAllLibraries": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u0439 \u0434\u043e\u0441\u0442\u044a\u043f \u0434\u043e \u0432\u0441\u0438\u0447\u043a\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438", - "DeviceAccessHelp": "\u0422\u043e\u0432\u0430 \u0441\u0435 \u043e\u0442\u043d\u0430\u0441\u044f \u0441\u0430\u043c\u043e \u0437\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043a\u043e\u0438\u0442\u043e \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0431\u044a\u0434\u0430\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u0435\u043d\u0438 \u0438 \u043d\u044f\u043c\u0430 \u0434\u0430 \u043f\u043e\u043f\u0440\u0435\u0447\u0438 \u043d\u0430 \u0434\u043e\u0441\u0442\u044a\u043f \u043e\u0442 \u0431\u0440\u0430\u0443\u0437\u044a\u0440. \u0424\u0438\u043b\u0442\u0440\u0438\u0440\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0449\u0435 \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0442\u0438 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435\u0442\u043e \u0438\u043c \u0434\u043e\u043a\u0430\u0442\u043e \u043d\u0435 \u0431\u044a\u0434\u0430\u0442 \u043e\u0434\u043e\u0431\u0440\u0435\u043d\u0438 \u0442\u0443\u043a.", - "LabelDisplayMissingEpisodesWithinSeasons": "\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u0439 \u043b\u0438\u043f\u0441\u0432\u0430\u0449\u0438 \u0435\u043f\u0438\u0437\u043e\u0434\u0438 \u0432 \u0441\u0435\u0437\u043e\u043d\u0438\u0442\u0435", - "LabelUnairedMissingEpisodesWithinSeasons": "\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u0439 \u043d\u0435\u0438\u0437\u043b\u044a\u0447\u0435\u043d\u0438 \u0435\u043f\u0438\u0437\u043e\u0434\u0438 \u0432 \u0441\u0435\u0437\u043e\u043d\u0438\u0442\u0435", - "HeaderVideoPlaybackSettings": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u0432\u044a\u0437\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0436\u0434\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0432\u0438\u0434\u0435\u043e", - "HeaderPlaybackSettings": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u0432\u044a\u0437\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0436\u0434\u0430\u043d\u0435\u0442\u043e", - "LabelAudioLanguagePreference": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d \u0435\u0437\u0438\u043a \u043d\u0430 \u0430\u0443\u0434\u0438\u043e\u0442\u043e:", - "LabelSubtitleLanguagePreference": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d \u0435\u0437\u0438\u043a \u043d\u0430 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438\u0442\u0435:", - "OptionDefaultSubtitles": "\u041f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435", - "OptionOnlyForcedSubtitles": "\u0421\u0430\u043c\u043e \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u043d\u0438 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438", - "OptionAlwaysPlaySubtitles": "\u0412\u0438\u043d\u0430\u0433\u0438 \u043f\u043e\u043a\u0430\u0437\u0432\u0430\u0439 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438", - "OptionNoSubtitles": "\u0411\u0435\u0437 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438", - "OptionDefaultSubtitlesHelp": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u0438 \u043e\u0442\u0433\u043e\u0432\u0430\u0440\u044f\u0449\u0438 \u043d\u0430 \u0435\u0437\u0438\u043a\u043e\u0432\u0438\u0442\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d\u0438\u044f \u0449\u0435 \u0431\u044a\u0434\u0430\u0442 \u043f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0438, \u043a\u043e\u0433\u0430\u0442\u043e \u0430\u0443\u0434\u0438\u043e\u0442\u043e \u0435 \u043d\u0430 \u0434\u0440\u0443\u0433 \u0435\u0437\u0438\u043a.", - "OptionOnlyForcedSubtitlesHelp": "\u0421\u0430\u043c\u043e \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438, \u043c\u0430\u0440\u043a\u0438\u0440\u0430\u043d\u0438 \u043a\u0430\u0442\u043e \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u043d\u0438, \u0449\u0435 \u0431\u044a\u0434\u0430\u0442 \u0437\u0430\u0440\u0435\u0436\u0434\u0430\u043d\u0438", - "OptionAlwaysPlaySubtitlesHelp": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u0438, \u043e\u0442\u0433\u043e\u0432\u0430\u0440\u044f\u0449\u0438 \u043d\u0430 \u0435\u0437\u0438\u043a\u043e\u0432\u043e\u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d\u0438\u0435, \u0449\u0435 \u0431\u044a\u0434\u0430\u0442 \u0437\u0430\u0440\u0435\u0436\u0434\u0430\u043d\u0438 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0435\u0437\u0438\u043a\u0430 \u043d\u0430 \u0430\u0443\u0434\u0438\u043e\u0442\u043e.", - "OptionNoSubtitlesHelp": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u0438 \u043d\u044f\u043c\u0430 \u0434\u0430 \u0431\u044a\u0434\u0430\u0442 \u0437\u0430\u0440\u0435\u0436\u0434\u0430\u043d\u0438 \u043f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435.", - "TabProfiles": "\u041f\u0440\u043e\u0444\u0438\u043b\u0438", - "TabSecurity": "\u0417\u0430\u0449\u0438\u0442\u0430", - "ButtonAddUser": "\u0414\u043e\u0431\u0430\u0432\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b", - "ButtonAddLocalUser": "\u0414\u043e\u0431\u0430\u0432\u0438 \u043b\u043e\u043a\u0430\u043b\u0435\u043d \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b", - "ButtonInviteUser": "\u041f\u043e\u043a\u0430\u043d\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b", - "ButtonSave": "\u0417\u0430\u043f\u043e\u043c\u043d\u0438", - "ButtonResetPassword": "\u041d\u0443\u043b\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043f\u0430\u0440\u043e\u043b\u0430", - "LabelNewPassword": "\u041d\u043e\u0432\u0430 \u043f\u0430\u0440\u043e\u043b\u0430:", - "LabelNewPasswordConfirm": "\u041d\u043e\u0432\u0430 \u043f\u0430\u0440\u043e\u043b\u0430(\u043e\u0442\u043d\u043e\u0432\u043e):", - "HeaderCreatePassword": "\u041d\u0430\u043f\u0440\u0430\u0432\u0438 \u043f\u0430\u0440\u043e\u043b\u0430", - "LabelCurrentPassword": "\u0422\u0435\u043a\u0443\u0449\u0430 \u043f\u0430\u0440\u043e\u043b\u0430:", - "LabelMaxParentalRating": "\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u043d\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0441\u043a\u0438 \u0440\u0435\u0439\u0442\u0438\u043d\u0433:", - "MaxParentalRatingHelp": "\u0421\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435 \u0441 \u043f\u043e-\u0432\u0438\u0441\u043e\u043a \u0440\u0435\u0439\u0442\u0438\u043d\u0433 \u0449\u0435 \u0431\u044a\u0434\u0435 \u0441\u043a\u0440\u0438\u0442\u043e \u043e\u0442 \u0442\u043e\u0437\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b.", - "LibraryAccessHelp": "\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043c\u0435\u0434\u0438\u0439\u043d\u0438\u0442\u0435 \u043f\u0430\u043f\u043a\u0438, \u043a\u043e\u0438\u0442\u043e \u0434\u0430 \u0441\u043f\u043e\u0434\u0435\u043b\u0438\u0442\u0435 \u0441 \u0442\u043e\u0437\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b. \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0438\u0442\u0435 \u0449\u0435 \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0442 \u0432\u0441\u0438\u0447\u043a\u0438 \u043f\u0430\u043f\u043a\u0438 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u043a\u0438 \u043c\u0435\u043d\u0438\u0434\u0436\u044a\u0440\u0430 \u043d\u0430 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f.", - "ChannelAccessHelp": "\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u0430\u043d\u0430\u043b\u0438\u0442\u0435, \u043a\u043e\u0438\u0442\u043e \u0434\u0430 \u0441\u043f\u043e\u0434\u0435\u043b\u0438\u0442\u0435 \u0441 \u0442\u043e\u0437\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b. \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0438\u0442\u0435 \u0449\u0435 \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0442 \u0432\u0441\u0438\u0447\u043a\u0438 \u043a\u0430\u043d\u0430\u043b\u0438 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u043a\u0438 \u043c\u0435\u043d\u0438\u0434\u0436\u044a\u0440\u0430 \u043d\u0430 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f.", - "ButtonDeleteImage": "\u0418\u0437\u0442\u0440\u0438\u0439 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435", - "LabelSelectUsers": "\u0418\u0437\u0431\u0435\u0440\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438:", - "ButtonUpload": "\u041a\u0430\u0447\u0438:", - "HeaderUploadNewImage": "\u041a\u0430\u0447\u0438 \u041d\u043e\u0432\u043e \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435:", - "LabelDropImageHere": "\u041f\u0443\u0441\u043d\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0442\u043e \u0442\u0443\u043a", - "ImageUploadAspectRatioHelp": "1:1 \u043f\u0440\u0435\u043f\u043e\u0440\u044a\u0447\u0430\u043d\u0430 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u044f. \u0421\u0430\u043c\u043e JPG\/PNG", - "MessageNothingHere": "\u0422\u0443\u043a \u043d\u044f\u043c\u0430 \u043d\u0438\u0449\u043e.", - "MessagePleaseEnsureInternetMetadata": "\u041c\u043e\u043b\u044f, \u0443\u0432\u0435\u0440\u0435\u0442\u0435 \u0441\u0435 \u0447\u0435 \u0441\u0432\u0430\u043b\u044f\u043d\u0435\u0442\u043e \u043d\u0430 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e.", - "TabSuggested": "\u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f", - "TabSuggestions": "Suggestions", - "TabLatest": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438", - "TabUpcoming": "\u041f\u0440\u0435\u0434\u0441\u0442\u043e\u044f\u0449\u0438", - "TabShows": "\u041f\u0440\u0435\u0434\u0430\u0432\u0430\u043d\u0438\u044f", - "TabEpisodes": "\u0415\u043f\u0438\u0437\u043e\u0434\u0438", - "TabGenres": "\u0416\u0430\u043d\u0440\u043e\u0432\u0435" + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "HeaderExport": "Export", + "HeaderColumns": "Columns", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ca.json b/MediaBrowser.Server.Implementations/Localization/Server/ca.json index 67eb8d406..3a2757227 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ca.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ca.json @@ -1,5 +1,133 @@ { - "TabWebClient": "Web Client", + "LabelExit": "Sortir", + "LabelVisitCommunity": "Visitar la comunitat", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Est\u00e0ndard", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Examinar la biblioteca", + "LabelConfigureServer": "Configure Emby", + "LabelOpenLibraryViewer": "Obrir el visor de la biblioteca", + "LabelRestartServer": "Reiniciar el servidor", + "LabelShowLogWindow": "Veure la finestra del registre", + "LabelPrevious": "Anterior", + "LabelFinish": "Finalitzar", + "FolderTypeMixed": "Mixed content", + "LabelNext": "Seg\u00fcent", + "LabelYoureDone": "Ja est\u00e0!", + "WelcomeToProject": "Welcome to Emby!", + "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", + "TellUsAboutYourself": "Expliqui'ns sobre vost\u00e8", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "El seu nom:", + "MoreUsersCanBeAddedLater": "M\u00e9s usuaris es poden afegir m\u00e9s tard en el tauler d'instruments.", + "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", + "LabelWindowsService": "Servei de Windows", + "AWindowsServiceHasBeenInstalled": "El servei de Windows s'ha instal \u00b7 lat.", + "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", + "WindowsServiceIntro2": "Si s'utilitza el servei de Windows, tingui en compte que no es pot executar a la vegada que la icona de la safata, de manera que haur\u00e0 de sortir de la safata per tal d'executar el servei. Tamb\u00e9 haur\u00e0 de ser configurat amb privilegis administratius a trav\u00e9s del panell de control del servei. Tingueu en compte que en aquest moment el servei no \u00e9s capa\u00e7 d'auto-actualitzaci\u00f3, de manera que les noves versions requereixen la interacci\u00f3 manual.", + "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", + "LabelConfigureSettings": "Configure settings", + "LabelEnableVideoImageExtraction": "Enable video image extraction", + "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", + "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", + "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", + "HeaderTermsOfService": "Emby Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToEmbyConnect": "Linked to Emby Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", + "ButtonOk": "Ok", + "ButtonCancel": "Cancel", + "ButtonExit": "Exit", + "ButtonNew": "New", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "Username or email:", + "LabelEnterConnectUserNameHelp": "This is your Emby online account username or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "Setup your media library", + "ButtonAddMediaFolder": "Add media folder", + "LabelFolderType": "Folder type:", + "ReferToMediaLibraryWiki": "Refer to the media library wiki.", + "LabelCountry": "Country:", + "LabelLanguage": "Language:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "Preferred metadata language:", + "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", + "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", + "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", + "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", + "TabPreferences": "Preferences", + "TabPassword": "Password", + "TabLibraryAccess": "Library Access", + "TabAccess": "Access", + "TabImage": "Image", + "TabProfile": "Profile", + "TabMetadata": "Metadata", + "TabImages": "Images", + "TabNotifications": "Notifications", + "TabCollectionTitles": "Titles", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", "OptionEnableAccessToAllChannels": "Enable access to all channels", "OptionEnableAccessToAllLibraries": "Enable access to all libraries", "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", @@ -159,7 +287,9 @@ "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", "TabGeneral": "General", "TitleSupport": "Support", + "LabelSeasonNumber": "Season number", "TabLog": "Log", + "LabelEpisodeNumber": "Episode number", "TabAbout": "About", "TabSupporterKey": "Supporter Key", "TabBecomeSupporter": "Become a Supporter", @@ -185,6 +315,9 @@ "OptionAllowRemoteControlOthers": "Allow remote control of other users", "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", "HeaderRemoteControl": "Remote Control", "OptionMissingTmdbId": "Missing Tmdb Id", "OptionIsHD": "HD", @@ -453,8 +586,6 @@ "LabelSkipped": "Skipped", "HeaderEpisodeOrganization": "Episode Organization", "LabelSeries": "Series:", - "LabelSeasonNumber": "Season number:", - "LabelEpisodeNumber": "Episode number:", "LabelEndingEpisodeNumber": "Ending episode number:", "LabelEndingEpisodeNumberHelp": "Only required for multi-episode files", "HeaderSupportTheTeam": "Support the Emby Team", @@ -742,6 +873,7 @@ "HeaderTypeText": "Enter Text", "LabelTypeText": "Text", "HeaderSearchForSubtitles": "Search for Subtitles", + "ButtonMore": "More", "MessageNoSubtitleSearchResultsFound": "No search results founds.", "TabDisplay": "Display", "TabLanguages": "Languages", @@ -772,7 +904,7 @@ "HeaderLiveTv": "Live TV", "HeaderReports": "Reports", "HeaderMetadataManager": "Metadata Manager", - "HeaderPreferences": "Preferences", + "HeaderSettings": "Settings", "MessageLoadingChannels": "Loading channel content...", "MessageLoadingContent": "Loading content...", "ButtonMarkRead": "Mark Read", @@ -970,7 +1102,6 @@ "OptionReportArtists": "Artists", "OptionReportAlbums": "Albums", "OptionReportAdultVideos": "Adult videos", - "ButtonMore": "More", "HeaderActivity": "Activity", "ScheduledTaskStartedWithName": "{0} started", "ScheduledTaskCancelledWithName": "{0} was cancelled", @@ -1100,6 +1231,7 @@ "OptionNoThemeVideo": "No Theme Video", "LabelOneTimeDonationAmount": "Donation amount:", "ButtonDonate": "Donate", + "ButtonPurchase": "Purchase", "OptionActor": "Actor", "OptionComposer": "Composer", "OptionDirector": "Director", @@ -1119,7 +1251,6 @@ "HeaderDeveloperInfo": "Developer Info", "HeaderRevisionHistory": "Revision History", "ButtonViewWebsite": "View website", - "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderXmlSettings": "Xml Settings", "HeaderXmlDocumentAttributes": "Xml Document Attributes", "HeaderXmlDocumentAttribute": "Xml Document Attribute", @@ -1133,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", "LabelExternalPlayers": "External players:", "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", "HeaderSubtitleProfile": "Subtitle Profile", "HeaderSubtitleProfiles": "Subtitle Profiles", "HeaderSubtitleProfilesHelp": "Subtitle profiles describe the subtitle formats supported by the device.", @@ -1261,7 +1395,7 @@ "HeaderUpcomingMovies": "Upcoming Movies", "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", - "ButtonMoreItems": "More...", + "ButtonMoreItems": "More", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", @@ -1280,14 +1414,6 @@ "OptionEnableFullSpeedConversion": "Enable full speed conversion", "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", "HeaderViewStyles": "View Styles", "LabelSelectViewStyles": "Enable enhanced presentations for:", "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", @@ -1305,133 +1431,24 @@ "HeaderNewServer": "New Server", "ButtonChangeServer": "Change Server", "HeaderConnectToServer": "Connect to Server", - "LabelExit": "Sortir", - "LabelVisitCommunity": "Visitar la comunitat", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Est\u00e0ndard", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Examinar la biblioteca", - "LabelConfigureServer": "Configure Emby", - "LabelOpenLibraryViewer": "Obrir el visor de la biblioteca", - "LabelRestartServer": "Reiniciar el servidor", - "LabelShowLogWindow": "Veure la finestra del registre", - "LabelPrevious": "Anterior", - "LabelFinish": "Finalitzar", - "LabelNext": "Seg\u00fcent", - "LabelYoureDone": "Ja est\u00e0!", - "WelcomeToProject": "Welcome to Emby!", - "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", - "TellUsAboutYourself": "Expliqui'ns sobre vost\u00e8", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "El seu nom:", - "MoreUsersCanBeAddedLater": "M\u00e9s usuaris es poden afegir m\u00e9s tard en el tauler d'instruments.", - "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "Servei de Windows", - "AWindowsServiceHasBeenInstalled": "El servei de Windows s'ha instal \u00b7 lat.", - "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", - "WindowsServiceIntro2": "Si s'utilitza el servei de Windows, tingui en compte que no es pot executar a la vegada que la icona de la safata, de manera que haur\u00e0 de sortir de la safata per tal d'executar el servei. Tamb\u00e9 haur\u00e0 de ser configurat amb privilegis administratius a trav\u00e9s del panell de control del servei. Tingueu en compte que en aquest moment el servei no \u00e9s capa\u00e7 d'auto-actualitzaci\u00f3, de manera que les noves versions requereixen la interacci\u00f3 manual.", - "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", - "LabelConfigureSettings": "Configure settings", - "LabelEnableVideoImageExtraction": "Enable video image extraction", - "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", - "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", - "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "HeaderTermsOfService": "Emby Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LinkedToEmbyConnect": "Linked to Emby Connect", - "HeaderSupporterBenefits": "Supporter Benefits", - "HeaderAddUser": "Add User", - "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", - "LabelPinCode": "Pin code:", - "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", - "HeaderSync": "Sync", - "ButtonOk": "Ok", - "ButtonCancel": "Cancel", - "ButtonExit": "Exit", - "ButtonNew": "New", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "TabPlaylist": "Playlist", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Emby online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "Setup your media library", - "ButtonAddMediaFolder": "Add media folder", - "LabelFolderType": "Folder type:", - "ReferToMediaLibraryWiki": "Refer to the media library wiki.", - "LabelCountry": "Country:", - "LabelLanguage": "Language:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "Preferred metadata language:", - "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", - "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", - "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", - "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", - "TabPreferences": "Preferences", - "TabPassword": "Password", - "TabLibraryAccess": "Library Access", - "TabAccess": "Access", - "TabImage": "Image", - "TabProfile": "Profile", - "TabMetadata": "Metadata", - "TabImages": "Images", - "TabNotifications": "Notifications", - "TabCollectionTitles": "Titles", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices" + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "HeaderExport": "Export", + "HeaderColumns": "Columns", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/cs.json b/MediaBrowser.Server.Implementations/Localization/Server/cs.json index f23734c6a..f04072f38 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/cs.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/cs.json @@ -1,6 +1,68 @@ { - "TabWebClient": "Web klient", - "HeaderPaths": "Paths", + "LabelExit": "Zav\u0159\u00edt", + "LabelVisitCommunity": "Nav\u0161t\u00edvit komunitu", + "LabelGithub": "GitHub", + "LabelSwagger": "Swagger", + "LabelStandard": "Standardn\u00ed", + "LabelApiDocumentation": "Dokumentace API", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Proch\u00e1zet knihovnu", + "LabelConfigureServer": "Konfigurovat Emby", + "LabelOpenLibraryViewer": "Otev\u0159\u00edt knihovnu", + "LabelRestartServer": "Restartovat server", + "LabelShowLogWindow": "Zobrazit okno z\u00e1znam\u016f", + "LabelPrevious": "P\u0159edchoz\u00ed", + "LabelFinish": "Dokon\u010dit", + "FolderTypeMixed": "Mixed content", + "LabelNext": "Dal\u0161\u00ed", + "LabelYoureDone": "Hotovo!", + "WelcomeToProject": "V\u00edtejte v Emby!", + "ThisWizardWillGuideYou": "Tento pr\u016fvodce V\u00e1m pom\u016f\u017ee proj\u00edt procesem nastaven\u00ed. Pro za\u010d\u00e1tek vyberte jazyk.", + "TellUsAboutYourself": "\u0158ekn\u011bte n\u00e1m n\u011bco o sob\u011b", + "ButtonQuickStartGuide": "Rychl\u00fd pr\u016fvodce", + "LabelYourFirstName": "Va\u0161e k\u0159estn\u00ed jm\u00e9no:", + "MoreUsersCanBeAddedLater": "Dal\u0161\u00ed u\u017eivatele m\u016f\u017eete p\u0159idat pozd\u011bji na n\u00e1st\u011bnce.", + "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", + "LabelWindowsService": "Slu\u017eba Windows", + "AWindowsServiceHasBeenInstalled": "Slu\u017eba Windows byla nainstalov\u00e1na.", + "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", + "WindowsServiceIntro2": "Pokud pou\u017e\u00edv\u00e1te Slu\u017ebu Windows berte na v\u011bdom\u00ed, \u017ee nem\u016f\u017ee b\u00fdt spu\u0161t\u011bna z\u00e1rove\u0148 s programem v oznamovac\u00ed oblasti. Bude nutn\u00e9 b\u011b\u017e\u00edc\u00ed aplikaci v oznamovac\u00ed oblasti ukon\u010dit. Slu\u017eba Windows mus\u00ed b\u00fdt z\u00e1rove\u0148 nakonfigurov\u00e1na s pr\u00e1vy administr\u00e1tora v ovl\u00e1dac\u00edch panelech. V tuto chv\u00edli slu\u017eba neumo\u017e\u0148uje automatickou aktualizaci, bude proto nutn\u00e9 novou verzi nainstalovat ru\u010dn\u011b.", + "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", + "LabelConfigureSettings": "Konfigurovat nastaven\u00ed", + "LabelEnableVideoImageExtraction": "Povolit extrahov\u00e1n\u00ed obr\u00e1zku ze souboru", + "VideoImageExtractionHelp": "Pro videa, kter\u00e9 je\u0161t\u011b nemaj\u00ed obr\u00e1zky obalu, a zat\u00edm nejsme schopni je dohledat. Tato operace vy\u017eaduje n\u011bjak\u00fd ten \u010das nav\u00edc, ve v\u00fdsledku ale p\u0159isp\u011bje k hez\u010d\u00edmu zobrazen\u00ed knihovny.", + "LabelEnableChapterImageExtractionForMovies": "Extrahov\u00e1n\u00ed obr\u00e1zk\u016f sc\u00e9n pro Filmy", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Povolit automatick\u00e9 mapov\u00e1n\u00ed port\u016f", + "LabelEnableAutomaticPortMappingHelp": "UPnP umo\u017e\u0148uje automatick\u00e9 nastaven\u00ed routeru pro vzd\u00e1len\u00fd p\u0159\u00edstup. Nemus\u00ed fungovat s n\u011bkter\u00fdmi typy router\u016f.", + "HeaderTermsOfService": "Emby Podm\u00ednky slu\u017eby", + "MessagePleaseAcceptTermsOfService": "Ne\u017e budete pokra\u010dovat, p\u0159ijm\u011bte pros\u00edm podm\u00ednky slu\u017eby a z\u00e1sady ochrany osobn\u00edch \u00fadaj\u016f.", + "OptionIAcceptTermsOfService": "Souhlas\u00edm s podm\u00ednkami slu\u017eby", + "ButtonPrivacyPolicy": "Ochrana osobn\u00edch \u00fadaj\u016f", + "ButtonTermsOfService": "Podm\u00ednky slu\u017eby", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Povolit ukl\u00e1d\u00e1n\u00ed do mezipam\u011bti webov\u00e9 odezvy klienta", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organizovat", + "LinkedToEmbyConnect": "Linked to Emby Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "P\u0159idat u\u017eivatele", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", + "LabelPinCode": "Pin k\u00f3d:", + "OptionHideWatchedContentFromLatestMedia": "Skr\u00fdt p\u0159ehr\u00e1n obsah ze seznamu naposledy p\u0159idan\u00fdch m\u00e9di\u00ed", + "HeaderSync": "Sync", + "ButtonOk": "Ok", + "ButtonCancel": "Zru\u0161it", + "ButtonExit": "Zav\u0159\u00edt", + "ButtonNew": "Nov\u00e9", + "HeaderTV": "TV", + "HeaderAudio": "Zvuk", + "HeaderVideo": "Video", + "HeaderPaths": "Cesty", "CategorySync": "Sync", "TabPlaylist": "Playlist", "HeaderEasyPinCode": "Easy Pin Code", @@ -24,12 +86,11 @@ "ButtonDonateWithPayPal": "Donate with PayPal", "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Emby online account user name or password.", + "LabelEnterConnectUserName": "Username or email:", + "LabelEnterConnectUserNameHelp": "This is your Emby online account username or password.", "LabelEnableEnhancedMovies": "Enable enhanced movie displays", "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", "FolderTypeMovies": "Movies", "FolderTypeMusic": "Music", "FolderTypeAdultVideos": "Adult videos", @@ -71,7 +132,7 @@ "OptionEnableAccessToAllLibraries": "Enable access to all libraries", "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", "LabelDisplayMissingEpisodesWithinSeasons": "Zobrazit chyb\u011bj\u00edc\u00ed epizody", - "LabelUnairedMissingEpisodesWithinSeasons": "Zobrazit neprov\u011btran\u00e9 epizody v r\u00e1mci sez\u00f3n", + "LabelUnairedMissingEpisodesWithinSeasons": "Zobrazit neodvys\u00edlan\u00e9 epizody v r\u00e1mci sez\u00f3n", "HeaderVideoPlaybackSettings": "Nastaven\u00ed p\u0159ehr\u00e1v\u00e1n\u00ed videa", "HeaderPlaybackSettings": "Playback Settings", "LabelAudioLanguagePreference": "Up\u0159ednost\u0148ovan\u00fd jazyk videa:", @@ -226,7 +287,9 @@ "OptionFileMetadataYearMismatch": "Neodpov\u00edd\u00e1 rok v metadatech a v souboru.", "TabGeneral": "Obecn\u00e9", "TitleSupport": "Podpora", + "LabelSeasonNumber": "Season number", "TabLog": "Z\u00e1znam", + "LabelEpisodeNumber": "Episode number", "TabAbout": "O programu", "TabSupporterKey": "Kl\u00ed\u010d sponzora", "TabBecomeSupporter": "Sta\u0148te se sponzorem", @@ -252,6 +315,9 @@ "OptionAllowRemoteControlOthers": "Allow remote control of other users", "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", "HeaderRemoteControl": "Remote Control", "OptionMissingTmdbId": "Chyb\u011bj\u00edc\u00ed Tmdb Id", "OptionIsHD": "HD", @@ -438,7 +504,7 @@ "ButtonAddPathSubstitution": "P\u0159idat p\u0159emapov\u00e1n\u00ed", "OptionSpecialEpisode": "Speci\u00e1ln\u00ed", "OptionMissingEpisode": "Chyb\u011bj\u00edc\u00ed episody", - "OptionUnairedEpisode": "Neprov\u011btran\u00e9 epizody", + "OptionUnairedEpisode": "Neodvys\u00edlan\u00e9 epizody", "OptionEpisodeSortName": "Se\u0159azen\u00ed n\u00e1zvu epizod", "OptionSeriesSortName": "Jm\u00e9no serie", "OptionTvdbRating": "Tvdb hodnocen\u00ed", @@ -520,8 +586,6 @@ "LabelSkipped": "P\u0159esko\u010deno", "HeaderEpisodeOrganization": "Organizace epizod", "LabelSeries": "Series:", - "LabelSeasonNumber": "Season number:", - "LabelEpisodeNumber": "Episode number:", "LabelEndingEpisodeNumber": "Ending episode number:", "LabelEndingEpisodeNumberHelp": "Vy\u017eadovan\u00e9 jenom pro s\u00fabory s v\u00edce epizodami", "HeaderSupportTheTeam": "Support the Emby Team", @@ -675,7 +739,7 @@ "ButtonPause": "Pause", "ButtonNext": "Next", "ButtonPrevious": "Previous", - "LabelGroupMoviesIntoCollections": "Group movies into collections", + "LabelGroupMoviesIntoCollections": "Zoskupit filmy do kolekc\u00ed.", "LabelGroupMoviesIntoCollectionsHelp": "When displaying movie lists, movies belonging to a collection will be displayed as one grouped item.", "NotificationOptionPluginError": "Plugin failure", "ButtonVolumeUp": "Volume up", @@ -809,6 +873,7 @@ "HeaderTypeText": "Vlo\u017ete text", "LabelTypeText": "Text", "HeaderSearchForSubtitles": "Vyhledat titulky", + "ButtonMore": "More", "MessageNoSubtitleSearchResultsFound": "No search results founds.", "TabDisplay": "Display", "TabLanguages": "Jazyky", @@ -839,7 +904,7 @@ "HeaderLiveTv": "Live TV", "HeaderReports": "Hl\u00e1\u0161en\u00ed", "HeaderMetadataManager": "Spr\u00e1vce metadat", - "HeaderPreferences": "Preferences", + "HeaderSettings": "Settings", "MessageLoadingChannels": "Loading channel content...", "MessageLoadingContent": "Loading content...", "ButtonMarkRead": "Ozna\u010dit jako p\u0159e\u010dten\u00e9", @@ -1037,7 +1102,6 @@ "OptionReportArtists": "Artists", "OptionReportAlbums": "Albums", "OptionReportAdultVideos": "Adult videos", - "ButtonMore": "More", "HeaderActivity": "Activity", "ScheduledTaskStartedWithName": "{0} started", "ScheduledTaskCancelledWithName": "{0} was cancelled", @@ -1167,6 +1231,7 @@ "OptionNoThemeVideo": "No Theme Video", "LabelOneTimeDonationAmount": "Donation amount:", "ButtonDonate": "Donate", + "ButtonPurchase": "Purchase", "OptionActor": "Actor", "OptionComposer": "Composer", "OptionDirector": "Director", @@ -1186,7 +1251,6 @@ "HeaderDeveloperInfo": "Developer Info", "HeaderRevisionHistory": "Revision History", "ButtonViewWebsite": "View website", - "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderXmlSettings": "Xml Settings", "HeaderXmlDocumentAttributes": "Xml Document Attributes", "HeaderXmlDocumentAttribute": "Xml Document Attribute", @@ -1200,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", "LabelExternalPlayers": "External players:", "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", "HeaderSubtitleProfile": "Subtitle Profile", "HeaderSubtitleProfiles": "Subtitle Profiles", "HeaderSubtitleProfilesHelp": "Subtitle profiles describe the subtitle formats supported by the device.", @@ -1328,7 +1395,7 @@ "HeaderUpcomingMovies": "Upcoming Movies", "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", - "ButtonMoreItems": "More...", + "ButtonMoreItems": "More", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", @@ -1347,14 +1414,6 @@ "OptionEnableFullSpeedConversion": "Enable full speed conversion", "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", "HeaderViewStyles": "View Styles", "LabelSelectViewStyles": "Enable enhanced presentations for:", "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", @@ -1372,66 +1431,24 @@ "HeaderNewServer": "New Server", "ButtonChangeServer": "Change Server", "HeaderConnectToServer": "Connect to Server", - "LabelExit": "Zav\u0159\u00edt", - "LabelVisitCommunity": "Nav\u0161t\u00edvit komunitu", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standardn\u00ed", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Proch\u00e1zet knihovnu", - "LabelConfigureServer": "Configure Emby", - "LabelOpenLibraryViewer": "Otev\u0159\u00edt knihovnu", - "LabelRestartServer": "Restartovat server", - "LabelShowLogWindow": "Zobrazit okno z\u00e1znam\u016f", - "LabelPrevious": "P\u0159edchoz\u00ed", - "LabelFinish": "Dokon\u010dit", - "LabelNext": "Dal\u0161\u00ed", - "LabelYoureDone": "Hotovo!", - "WelcomeToProject": "Welcome to Emby!", - "ThisWizardWillGuideYou": "Tento pr\u016fvodce V\u00e1m pom\u016f\u017ee proj\u00edt procesem nastaven\u00ed. Pro za\u010d\u00e1tek vyberte jazyk.", - "TellUsAboutYourself": "\u0158ekn\u011bte n\u00e1m n\u011bco o sob\u011b", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "Va\u0161e k\u0159estn\u00ed jm\u00e9no:", - "MoreUsersCanBeAddedLater": "Dal\u0161\u00ed u\u017eivatele m\u016f\u017eete p\u0159idat pozd\u011bji na n\u00e1st\u011bnce.", - "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "Slu\u017eba Windows", - "AWindowsServiceHasBeenInstalled": "Slu\u017eba Windows byla nainstalov\u00e1na.", - "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", - "WindowsServiceIntro2": "Pokud pou\u017e\u00edv\u00e1te Slu\u017ebu Windows berte na v\u011bdom\u00ed, \u017ee nem\u016f\u017ee b\u00fdt spu\u0161t\u011bna z\u00e1rove\u0148 s programem v oznamovac\u00ed oblasti. Bude nutn\u00e9 b\u011b\u017e\u00edc\u00ed aplikaci v oznamovac\u00ed oblasti ukon\u010dit. Slu\u017eba Windows mus\u00ed b\u00fdt z\u00e1rove\u0148 nakonfigurov\u00e1na s pr\u00e1vy administr\u00e1tora v ovl\u00e1dac\u00edch panelech. V tuto chv\u00edli slu\u017eba neumo\u017e\u0148uje automatickou aktualizaci, bude proto nutn\u00e9 novou verzi nainstalovat ru\u010dn\u011b.", - "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", - "LabelConfigureSettings": "Konfigurovat nastaven\u00ed", - "LabelEnableVideoImageExtraction": "Povolit extrahov\u00e1n\u00ed obr\u00e1zku ze souboru", - "VideoImageExtractionHelp": "Pro videa, kter\u00e9 je\u0161t\u011b nemaj\u00ed obr\u00e1zky obalu, a zat\u00edm nejsme schopni je dohledat. Tato operace vy\u017eaduje n\u011bjak\u00fd ten \u010das nav\u00edc, ve v\u00fdsledku ale p\u0159isp\u011bje k hez\u010d\u00edmu zobrazen\u00ed knihovny.", - "LabelEnableChapterImageExtractionForMovies": "Extrahov\u00e1n\u00ed obr\u00e1zk\u016f sc\u00e9n pro Filmy", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Povolit automatick\u00e9 mapov\u00e1n\u00ed port\u016f", - "LabelEnableAutomaticPortMappingHelp": "UPnP umo\u017e\u0148uje automatick\u00e9 nastaven\u00ed routeru pro vzd\u00e1len\u00fd p\u0159\u00edstup. Nemus\u00ed fungovat s n\u011bkter\u00fdmi typy router\u016f.", - "HeaderTermsOfService": "Emby Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LinkedToEmbyConnect": "Linked to Emby Connect", - "HeaderSupporterBenefits": "Supporter Benefits", - "HeaderAddUser": "Add User", - "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", - "LabelPinCode": "Pin code:", - "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", - "HeaderSync": "Sync", - "ButtonOk": "Ok", - "ButtonCancel": "Zru\u0161it", - "ButtonExit": "Exit", - "ButtonNew": "Nov\u00e9", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video" + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "HeaderExport": "Export", + "HeaderColumns": "Columns", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/da.json b/MediaBrowser.Server.Implementations/Localization/Server/da.json index f7de0613e..5cd14b57e 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/da.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/da.json @@ -1,45 +1,178 @@ { - "TabWebClient": "Web Client", - "HeaderVideoPlaybackSettings": "Video afspilnings indstillinger", - "HeaderPlaybackSettings": "Playback Settings", - "LabelAudioLanguagePreference": "Foretrukket lyd sprog:", - "LabelSubtitleLanguagePreference": "Foretrukket undertekst sprog:", - "OptionDefaultSubtitles": "Default", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", + "LabelExit": "Afslut", + "LabelVisitCommunity": "Bes\u00f8g F\u00e6lleskab", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standard", + "LabelApiDocumentation": "Api dokumentation", + "LabelDeveloperResources": "Udviklerressourcer", + "LabelBrowseLibrary": "Gennemse bibliotek", + "LabelConfigureServer": "Konfigurer Emby", + "LabelOpenLibraryViewer": "\u00c5ben Biblioteksfremviser", + "LabelRestartServer": "Genstart Server", + "LabelShowLogWindow": "Vis Log", + "LabelPrevious": "Forrige", + "LabelFinish": "Slut", + "FolderTypeMixed": "Mixed content", + "LabelNext": "N\u00e6ste", + "LabelYoureDone": "Du er f\u00e6rdig!", + "WelcomeToProject": "Velkommen til Emby!", + "ThisWizardWillGuideYou": "Denne guide vil hj\u00e6lpe dig igennem ops\u00e6tningen. For at begynde, v\u00e6lg venligst dit fortrukne sprog.", + "TellUsAboutYourself": "Fort\u00e6l os lidt om dig selv", + "ButtonQuickStartGuide": "Hurtig-start guide", + "LabelYourFirstName": "Dit fornavn", + "MoreUsersCanBeAddedLater": "Flere brugere kan tilf\u00f8jes senere i betjeningspanelet.", + "UserProfilesIntro": "Emby har indbygget underst\u00f8ttelse af brugerprofiler. Dette giver hver bruger sine egne indstillinger for visning, afspilningsstatus og for\u00e6ldrekontrol.", + "LabelWindowsService": "Windows Service", + "AWindowsServiceHasBeenInstalled": "Der er blevet installeret en Windows Service.", + "WindowsServiceIntro1": "Emby Server k\u00f8rer normalt som en desktop applikation med et statusbar ikon, men hvis du \u00f8nsker at k\u00f8rer det som en baggrundsservice kan programmet startes fra windows services kontrolpanel istedet.", + "WindowsServiceIntro2": "Hvis Windows servicen bruges skal du v\u00e6re opm\u00e6rksom p\u00e5, at servicen ikke kan k\u00f8re p\u00e5 samme tid som bakkeikonet. Det er derfor n\u00f8dvendigt at afslutte bakkeikonet f\u00f8r servicen startes. Det er n\u00f8dvendigt at konfigurere servicen til at k\u00f8re med administrative privileger, som kan g\u00f8res via Windows Service kontrolpanelet. V\u00e6r opm\u00e6rksom p\u00e5 at servicen p\u00e5 nuv\u00e6rende tidspunkt ikke er i stand til at autoopdatere, s\u00e5 opdatering vil kr\u00e6ve manuel handling.", + "WizardCompleted": "Det er alt vi beh\u00f8ver for nu. Emby er begyndt at indsamle information omkring dit mediebibliotek. Tjek nogle af vores apps og klik derefter p\u00e5 <b>F\u00e6rdig<\/b> for at se <b>Server betjeningspanelet<\/b>.", + "LabelConfigureSettings": "Konfigurer indstillinger", + "LabelEnableVideoImageExtraction": "Aktiver udtr\u00e6kning af video billede", + "VideoImageExtractionHelp": "For videoer der ikke allerede har billeder, og som vi ikke kan finde internet billeder til. Dette vil g\u00f8re den indledende biblioteksskanning l\u00e6ngere, men vil resulterer i en p\u00e6nere pr\u00e6sentation.", + "LabelEnableChapterImageExtractionForMovies": "Aktiver udtr\u00e6kning af kapitelbilleder for Film", + "LabelChapterImageExtractionForMoviesHelp": "Udtr\u00e6kning af kapitelbilleder lader klienter vise billeder i scenev\u00e6lgeren. Denne proces kan v\u00e6re langsom og processorbelastende, og kan kr\u00e6ve adskillige gigabytes harddiskplads. Processen k\u00f8rer som en natlig planlagt opgave, selv om dette kan \u00e6ndres i planl\u00e6ggeren. Det anbefales ikke at k\u00f8re denne proces i tidsrum hvor der er brugere p\u00e5 systemet.", + "LabelEnableAutomaticPortMapping": "Aktiver automatisk port kortl\u00e6gning", + "LabelEnableAutomaticPortMappingHelp": "UPnP tillader automatisk routerkonfiguration for nem fjernadgang. Dette virker muligvis ikke med alle routere.", + "HeaderTermsOfService": "Emby tjenestevilk\u00e5r", + "MessagePleaseAcceptTermsOfService": "Accepter venligst tjenestevilk\u00e5rene og privatlivspolitikken f\u00f8r du forts\u00e6tter.", + "OptionIAcceptTermsOfService": "Jeg accepterer tjenestevilk\u00e5rene", + "ButtonPrivacyPolicy": "Privatlivspolitik", + "ButtonTermsOfService": "Tjenestevilk\u00e5r", + "HeaderDeveloperOptions": "Indstillinger for udviklere", + "OptionEnableWebClientResponseCache": "Aktiver webklient svar-caching", + "OptionDisableForDevelopmentHelp": "Konfigurer disse som n\u00f8dvendigt for udviklingsform\u00e5l af webklienten", + "OptionEnableWebClientResourceMinification": "Aktiver formindskelse af webklientens forbrug af ressourcer", + "LabelDashboardSourcePath": "Webklient kildesti:", + "LabelDashboardSourcePathHelp": "Hvis serveren k\u00f8rer fra kilden, specificer da stien til dashboard-ui mappen. Alle webklient-filer vil blive leveret fra denne lokation.", + "ButtonConvertMedia": "Konverter medie", + "ButtonOrganize": "Organiser", + "LinkedToEmbyConnect": "Koblet til Emby Connect", + "HeaderSupporterBenefits": "Supporter fordele", + "HeaderAddUser": "Tilf\u00f8j bruger", + "LabelAddConnectSupporterHelp": "For at tilf\u00f8je en bruger som ikke er angivet skal du f\u00f8rst sammenk\u00e6de deres konto til Emby Connect fra deres brugers profilside.", + "LabelPinCode": "Pinkode:", + "OptionHideWatchedContentFromLatestMedia": "Skjul sete fra seneste", + "HeaderSync": "Sync", + "ButtonOk": "Ok", + "ButtonCancel": "Annuller", + "ButtonExit": "Afslut", + "ButtonNew": "Ny", + "HeaderTV": "TV", + "HeaderAudio": "Lyd", + "HeaderVideo": "Video", + "HeaderPaths": "Stier", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Nem pinkode", + "HeaderGrownupsOnly": "Kun for voksne!", + "DividerOr": "-- eller --", + "HeaderInstalledServices": "Installerede tjenester", + "HeaderAvailableServices": "Tilg\u00e6ngelige tjenester", + "MessageNoServicesInstalled": "Ingen tjenester er installeret.", + "HeaderToAccessPleaseEnterEasyPinCode": "Indtast din pinkode for adgang", + "KidsModeAdultInstruction": "Klik p\u00e5 l\u00e5seikonet i nederste h\u00f8jre hj\u00f8rne for at konfigurere eller forlade b\u00f8rnetilstand. Du vil blive bedt om din pinkode.", + "ButtonConfigurePinCode": "Konfigurer pinkode", + "HeaderAdultsReadHere": "Voksne l\u00e6s her!", + "RegisterWithPayPal": "Registrer med PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync kr\u00e6ver medlemsskab", + "HeaderEnjoyDayTrial": "Nyd en 14-dages gratis pr\u00f8veperiode", + "LabelSyncTempPath": "Sti for midlertidige filer:", + "LabelSyncTempPathHelp": "Specificer en brugerdefineret synkroniserings arbejds-mappe. Konverterede filer vil under synkroniseringsprocessen blive gemt her.", + "LabelCustomCertificatePath": "Sti til eget certifikat:", + "LabelCustomCertificatePathHelp": "Angiv dit eget ssl certifikat som .pfx fil. Hvis du undlader dette, danner serveren et selvsigneret certifikat.", + "TitleNotifications": "Underretninger", + "ButtonDonateWithPayPal": "Doner via PayPal", + "OptionDetectArchiveFilesAsMedia": "Opfat arkiver som medier", + "OptionDetectArchiveFilesAsMediaHelp": "Aktiver dette for at f\u00e5 filer med .zip og .rar endelser genkendt dom medier.", + "LabelEnterConnectUserName": "Brugernavn eller email:", + "LabelEnterConnectUserNameHelp": "Dette er dit Emby online brugernavn eller kodeord.", + "LabelEnableEnhancedMovies": "Aktiver udvidede filmvisninger", + "LabelEnableEnhancedMoviesHelp": "Aktiver dette for at f\u00e5 vist film som mapper med trailere, medvirkende og andet relateret inhold.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMovies": "FIlm", + "FolderTypeMusic": "Musik", + "FolderTypeAdultVideos": "Voksenfilm", + "FolderTypePhotos": "Fotos", + "FolderTypeMusicVideos": "Musikvideoer", + "FolderTypeHomeVideos": "Hjemmevideoer", + "FolderTypeGames": "Spil", + "FolderTypeBooks": "B\u00f8ger", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Nedarv", + "LabelContentType": "Indholdstype:", + "TitleScheduledTasks": "Planlagte opgaver", + "HeaderSetupLibrary": "Konfigurer dit mediebibliotek", + "ButtonAddMediaFolder": "Tilf\u00f8j mediemappe", + "LabelFolderType": "Mappetype:", + "ReferToMediaLibraryWiki": "Der henvises til mediebibliotekets wiki.", + "LabelCountry": "Land:", + "LabelLanguage": "Sprog:", + "LabelTimeLimitHours": "Tidsgr\u00e6nse (timer):", + "ButtonJoinTheDevelopmentTeam": "Bliv medlem af Teamet bag Emby", + "HeaderPreferredMetadataLanguage": "Foretrukket sprog for metadata:", + "LabelSaveLocalMetadata": "Gem illustrationer og metadata i mediemapper", + "LabelSaveLocalMetadataHelp": "Lagring af illustrationer og metadata i mediemapper vil placerer dem et sted hvor de nemt kan redigeres.", + "LabelDownloadInternetMetadata": "Hent illustrationer og metadata fra internettet", + "LabelDownloadInternetMetadataHelp": "Emby Server kan hente informationer om dine medier, der kan give mere indholdsrige visninger.", + "TabPreferences": "Indstillinger", + "TabPassword": "Adgangskode", + "TabLibraryAccess": "Biblioteksadgang", + "TabAccess": "Adgang", + "TabImage": "Billede", + "TabProfile": "Profil", + "TabMetadata": "Metadata", + "TabImages": "Billeder", + "TabNotifications": "Underretninger", + "TabCollectionTitles": "Titler", + "HeaderDeviceAccess": "Enhedsadgang", + "OptionEnableAccessFromAllDevices": "Tillad adgang fra alle enheder", + "OptionEnableAccessToAllChannels": "Tillad adgang til alle kanaler", + "OptionEnableAccessToAllLibraries": "Tillad adgang til alle biblioteker", + "DeviceAccessHelp": "Dette g\u00e6lder kun for enheder, der kan identificeres unikt, og vil ikke forhindre adgang fra en browser. Ved at filtrere brugeres adgang fra enheder, kan du forhindre dem i at bruge nye enheder f\u00f8r de er blevet godkendt her.", + "LabelDisplayMissingEpisodesWithinSeasons": "Vis manglende episoder i s\u00e6soner", + "LabelUnairedMissingEpisodesWithinSeasons": "Vis endnu ikke sendte episoder i s\u00e6soner", + "HeaderVideoPlaybackSettings": "Indstillinger for videoafspilning", + "HeaderPlaybackSettings": "Indstillinger for afspilning", + "LabelAudioLanguagePreference": "Foretrukket lydsprog:", + "LabelSubtitleLanguagePreference": "Foretrukket undertekstsprog:", + "OptionDefaultSubtitles": "Standard", + "OptionOnlyForcedSubtitles": "Kun tvungne undertekster", + "OptionAlwaysPlaySubtitles": "Altid", "OptionNoSubtitles": "Ingen undertekster", - "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", + "OptionDefaultSubtitlesHelp": "Undertekster p\u00e5 det foretrukne sprog vil blive vist n\u00e5r lyden er p\u00e5 et fremmedsprog.", + "OptionOnlyForcedSubtitlesHelp": "Kun undertekster, der er markeret som tvungne, vil blive vist.", + "OptionAlwaysPlaySubtitlesHelp": "Undertekster p\u00e5 det foretrukne sprog vil blive vist uanset lydsproget.", + "OptionNoSubtitlesHelp": "Undertekster vil ikke blive vist som standard.", "TabProfiles": "Profiler", "TabSecurity": "Sikkerhed", "ButtonAddUser": "Tilf\u00f8j bruger", "ButtonAddLocalUser": "Tilf\u00f8j lokal bruger", "ButtonInviteUser": "Inviter bruger", "ButtonSave": "Gem", - "ButtonResetPassword": "Nulstil kode", + "ButtonResetPassword": "Nulstil adgangskode", "LabelNewPassword": "Ny kode:", - "LabelNewPasswordConfirm": "Bekr\u00e6ft ny kode:", - "HeaderCreatePassword": "Opret kode", + "LabelNewPasswordConfirm": "Gentag ny adgangskode:", + "HeaderCreatePassword": "Opret adgangskode", "LabelCurrentPassword": "Nuv\u00e6rende kode:", "LabelMaxParentalRating": "H\u00f8jst tilladte aldersgr\u00e6nse:", "MaxParentalRatingHelp": "Indhold med en h\u00f8jere gr\u00e6nse, skjules for denne bruger.", - "LibraryAccessHelp": "V\u00e6lg hvilke medie mapper der skal deles med denne bruger. Administratorer vil kunne redigere alle mapper ved hj\u00e6lp af metadata administratoren.", - "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", - "ButtonDeleteImage": "Slet Billede", + "LibraryAccessHelp": "V\u00e6lg hvilke mediemapper der skal deles med denne bruger. Administratorer vil kunne redigere alle mapper ved hj\u00e6lp af metadata administratoren.", + "ChannelAccessHelp": "V\u00e6lg hvilke kanaler der skal deles med denne bruger. Administratorer vil kunne redigere alle kanaler ved hj\u00e6lp af metadata administratoren.", + "ButtonDeleteImage": "Slet billede", "LabelSelectUsers": "V\u00e6lg brugere:", "ButtonUpload": "Upload", - "HeaderUploadNewImage": "Upload Nyt Billede", - "LabelDropImageHere": "Drop image here", - "ImageUploadAspectRatioHelp": "1:1 formatforhold anbefalet. Kun JPG\/PNG.", + "HeaderUploadNewImage": "Upload nyt billede", + "LabelDropImageHere": "Tr\u00e6k billede hertil og slip", + "ImageUploadAspectRatioHelp": "1:1 h\u00f8jde\/breddeforhold anbefalet. Kun JPG\/PNG.", "MessageNothingHere": "Her er ingenting.", - "MessagePleaseEnsureInternetMetadata": "V\u00e6r venligst sikker p\u00e5 at hentning af internet metadata er aktiveret.", + "MessagePleaseEnsureInternetMetadata": "S\u00f8rg venligst for at hentning af metadata fra internettet er aktiveret.", "TabSuggested": "Foresl\u00e5et", - "TabSuggestions": "Suggestions", + "TabSuggestions": "Forslag", "TabLatest": "Seneste", "TabUpcoming": "Kommende", - "TabShows": "Shows", + "TabShows": "Serier", "TabEpisodes": "Episoder", "TabGenres": "Genre", "TabPeople": "Personer", @@ -51,20 +184,20 @@ "OptionLikes": "Likes", "OptionDislikes": "Dislikes", "OptionActors": "Skuespillere", - "OptionGuestStars": "G\u00e6ste Stjerner", + "OptionGuestStars": "G\u00e6stestjerner", "OptionDirectors": "Instrukt\u00f8rer", "OptionWriters": "Forfattere", "OptionProducers": "Producenter", "HeaderResume": "Fors\u00e6t", "HeaderNextUp": "N\u00e6ste", "NoNextUpItemsMessage": "Ingen fundet. Se dine serier!", - "HeaderLatestEpisodes": "Sidste Episode", - "HeaderPersonTypes": "Person typer:", + "HeaderLatestEpisodes": "Sidste episoder", + "HeaderPersonTypes": "Persontyper:", "TabSongs": "Sange", "TabAlbums": "Albums", "TabArtists": "Artister", - "TabAlbumArtists": "Album Artister", - "TabMusicVideos": "Musik Videoer", + "TabAlbumArtists": "Album-artister", + "TabMusicVideos": "Musikvideoer", "ButtonSort": "Sort\u00e9r", "HeaderSortBy": "Sort\u00e9r efter:", "HeaderSortOrder": "Sorteringsr\u00e6kkef\u00f8lge:", @@ -73,72 +206,72 @@ "OptionAscending": "Stigende", "OptionDescending": "Faldende", "OptionRuntime": "Varighed", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "Gange Afspillet", - "OptionDatePlayed": "Dato Afspillet", - "OptionDateAdded": "Dato Tilf\u00f8jet", - "OptionAlbumArtist": "Album Artist", + "OptionReleaseDate": "Udgivelsesdato", + "OptionPlayCount": "Gange afspillet", + "OptionDatePlayed": "Dato for afspilning", + "OptionDateAdded": "Dato for tilf\u00f8jelse", + "OptionAlbumArtist": "Album-artist", "OptionArtist": "Artist", "OptionAlbum": "Album", - "OptionTrackName": "Nummerets Navn", - "OptionCommunityRating": "Community Rating", + "OptionTrackName": "Nummerets navn", + "OptionCommunityRating": "F\u00e6llesskabsvurdering", "OptionNameSort": "Navn", "OptionFolderSort": "Mapper", "OptionBudget": "Budget", "OptionRevenue": "Indt\u00e6gt", "OptionPoster": "Plakat", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "Backdrop", + "OptionPosterCard": "Plakat", + "OptionBackdrop": "Baggrund", "OptionTimeline": "Tidslinje", - "OptionThumb": "Thumb", - "OptionThumbCard": "Thumb card", + "OptionThumb": "Miniature", + "OptionThumbCard": "Miniature kort", "OptionBanner": "Banner", - "OptionCriticRating": "Kritisk Vurdering", + "OptionCriticRating": "Kritikervurdering", "OptionVideoBitrate": "Video Bitrate", - "OptionResumable": "Resumable", + "OptionResumable": "Kan genoptages", "ScheduledTasksHelp": "Klik p\u00e5 en opgave for at tilpasse dens tidsplan", - "ScheduledTasksTitle": "Planlagte Opgaver", - "TabMyPlugins": "Mine Tilf\u00f8jelser", + "ScheduledTasksTitle": "Planlagte opgaver", + "TabMyPlugins": "Mine tilf\u00f8jelser", "TabCatalog": "Katalog", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Automatisk Opdateringer", - "HeaderNowPlaying": "Afspilles Nu", - "HeaderLatestAlbums": "Seneste Albums", - "HeaderLatestSongs": "Seneste Sange", - "HeaderRecentlyPlayed": "Afspillet For Nyligt", - "HeaderFrequentlyPlayed": "Ofte Afspillet", - "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", - "LabelVideoType": "Video Type:", + "TitlePlugins": "Tilf\u00f8jelser", + "HeaderAutomaticUpdates": "Automatiske opdateringer", + "HeaderNowPlaying": "Afspilles nu", + "HeaderLatestAlbums": "Seneste albums", + "HeaderLatestSongs": "Seneste sange", + "HeaderRecentlyPlayed": "Afspillet for nyligt", + "HeaderFrequentlyPlayed": "Ofte afspillet", + "DevBuildWarning": "Udviklerversionen er bleeding edge. Nye versioner bliver ofte udgivet og bliver ikke testet inden. Applikationen kan risikere at lukke ned og funktioner kan nogle gange slet ikke virke.", + "LabelVideoType": "Video type:", "OptionBluray": "Bluray", "OptionDvd": "Dvd", "OptionIso": "Iso", "Option3D": "3D", "LabelFeatures": "Egenskaber:", - "LabelService": "Service:", + "LabelService": "Tjeneste:", "LabelStatus": "Status:", "LabelVersion": "Version:", - "LabelLastResult": "Last result:", + "LabelLastResult": "Sidste resultat:", "OptionHasSubtitles": "Undertekster", "OptionHasTrailer": "Trailer", - "OptionHasThemeSong": "Tema Sang", - "OptionHasThemeVideo": "Tema Video", + "OptionHasThemeSong": "Temasang", + "OptionHasThemeVideo": "Temavideo", "TabMovies": "Film", "TabStudios": "Studier", "TabTrailers": "Trailere", - "LabelArtists": "Artists:", - "LabelArtistsHelp": "Separate multiple using ;", - "HeaderLatestMovies": "Seneste Film", - "HeaderLatestTrailers": "Seneste Trailere", - "OptionHasSpecialFeatures": "Specielle Egenskaber", - "OptionImdbRating": "IMDB Bed\u00f8mmelse", - "OptionParentalRating": "Parental Rating", - "OptionPremiereDate": "Pr\u00e6miere Dato", + "LabelArtists": "Artister:", + "LabelArtistsHelp": "Angiv flere ved at s\u00e6tte ; mellem dem.", + "HeaderLatestMovies": "Seneste film", + "HeaderLatestTrailers": "Seneste trailere", + "OptionHasSpecialFeatures": "Specielle egenskaber", + "OptionImdbRating": "IMDd bed\u00f8mmelse", + "OptionParentalRating": "Aldersgr\u00e6nse", + "OptionPremiereDate": "Pr\u00e6mieredato", "TabBasic": "Simpel", - "TabAdvanced": "Advanceret", + "TabAdvanced": "Avanceret", "HeaderStatus": "Status", "OptionContinuing": "Fors\u00e6ttes", "OptionEnded": "F\u00e6rdig", - "HeaderAirDays": "Sende Dage", + "HeaderAirDays": "Sendedage", "OptionSunday": "S\u00f8ndag", "OptionMonday": "Mandag", "OptionTuesday": "Tirsdag", @@ -150,1288 +283,1172 @@ "LabelManagement": "Management:", "OptionMissingImdbId": "Manglende IMDB Id", "OptionMissingTvdbId": "Manglende TheTVDB Id", - "OptionMissingOverview": "Manglende Overblik", - "OptionFileMetadataYearMismatch": "Fil\/Metadata \u00c5r Uoverensstemmelse", - "TabGeneral": "Generalt", + "OptionMissingOverview": "Manglende overblik", + "OptionFileMetadataYearMismatch": "Uoverensstemmelse i \u00e5rstal mellem fil og metadata", + "TabGeneral": "Generelt", "TitleSupport": "Support", + "LabelSeasonNumber": "Season number", "TabLog": "Log", + "LabelEpisodeNumber": "Episode number", "TabAbout": "Om", - "TabSupporterKey": "Supporter N\u00f8gle", + "TabSupporterKey": "Supporter n\u00f8gle", "TabBecomeSupporter": "Bliv Supporter", - "ProjectHasCommunity": "Emby has a thriving community of users and contributors.", - "CheckoutKnowledgeBase": "Check out our knowledge base to help you get the most out of Emby.", + "ProjectHasCommunity": "Emby har et blomstrende f\u00e6llesskab af brugere og bidragsydere.", + "CheckoutKnowledgeBase": "Tjek vores vidensdatabase for at f\u00e5 det meste ud af Emby.", "SearchKnowledgeBase": "S\u00f8g i vidensdatabasen", - "VisitTheCommunity": "Bes\u00f8g F\u00e6llesskabet", - "VisitProjectWebsite": "Visit the Emby Web Site", - "VisitProjectWebsiteLong": "Visit the Emby Web site to catch the latest news and keep up with the developer blog.", - "OptionHideUser": "Vis ikke denne bruger p\u00e5 logind siden", - "OptionHideUserFromLoginHelp": "Useful for private or hidden administrator accounts. The user will need to sign in manually by entering their username and password.", + "VisitTheCommunity": "Bes\u00f8g f\u00e6llesskabet", + "VisitProjectWebsite": "Bes\u00f8g Embys hjemmeside", + "VisitProjectWebsiteLong": "Bes\u00f8g Emby hjemmesiden for at blive opdateret p\u00e5 de seneste nyheder og holde dig opdateret med udviklernes blog.", + "OptionHideUser": "Vis ikke denne bruger p\u00e5 loginsiden", + "OptionHideUserFromLoginHelp": "Nyttigt for private kontoer eller skjulte administratorkontoer. Brugeren skal logge ind ved at skive sit brugernavn og adgangskode.", "OptionDisableUser": "Deaktiver denne bruger", - "OptionDisableUserHelp": "Hvis deaktiveret vil serveren ikke tillade forbindelser fra denne bruger. Eksisterende forbindelser vil blive afbrudt.", - "HeaderAdvancedControl": "Avanceret Kontrol", + "OptionDisableUserHelp": "Hvis deaktiveret vil serveren ikke tillade forbindelser fra denne bruger. Eksisterende forbindelser vil blive afbrudt \u00f8jeblikkeligt.", + "HeaderAdvancedControl": "Avanceret kontrol", "LabelName": "Navn:", - "ButtonHelp": "Help", + "ButtonHelp": "Hj\u00e6lp", "OptionAllowUserToManageServer": "Tillad denne bruger at administrere serveren", - "HeaderFeatureAccess": "Funktion Adgang", - "OptionAllowMediaPlayback": "Allow media playback", - "OptionAllowBrowsingLiveTv": "Allow Live TV access", - "OptionAllowDeleteLibraryContent": "Allow media deletion", - "OptionAllowManageLiveTv": "Allow Live TV recording management", - "OptionAllowRemoteControlOthers": "Allow remote control of other users", - "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", - "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", - "HeaderRemoteControl": "Remote Control", + "HeaderFeatureAccess": "Adgang til funktioner", + "OptionAllowMediaPlayback": "Tillad afspilning ad medier", + "OptionAllowBrowsingLiveTv": "Tillad adgang til live TV", + "OptionAllowDeleteLibraryContent": "Tillad sletning af medier", + "OptionAllowManageLiveTv": "Tillad administration af live TV optagelser", + "OptionAllowRemoteControlOthers": "Tillad fjernstyring af andre brugere", + "OptionAllowRemoteSharedDevices": "Tillad fjernstyring af delte enheder", + "OptionAllowRemoteSharedDevicesHelp": "DLNA-enheder er delte indtil en bruger begynder at bruge den.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", + "HeaderRemoteControl": "Fjernstyring", "OptionMissingTmdbId": "Manglende Tmdb Id", "OptionIsHD": "HD", "OptionIsSD": "SD", "OptionMetascore": "Metascore", "ButtonSelect": "V\u00e6lg", - "ButtonGroupVersions": "Grupp\u00e9r Versioner", - "ButtonAddToCollection": "Add to Collection", + "ButtonGroupVersions": "Grupp\u00e9r versioner", + "ButtonAddToCollection": "Tilf\u00f8j til samling", "PismoMessage": "Utilizing Pismo File Mount through a donated license.", "TangibleSoftwareMessage": "Utilizing Tangible Solutions Java\/C# converters through a donated license.", - "HeaderCredits": "Credits", + "HeaderCredits": "Anerkendelser", "PleaseSupportOtherProduces": "St\u00f8t venligst andre gratis produkter vi bruger:", "VersionNumber": "Version {0}", "TabPaths": "Stier", "TabServer": "Server", - "TabTranscoding": "Transcoding", + "TabTranscoding": "Transkodning", "TitleAdvanced": "Avanceret", - "LabelAutomaticUpdateLevel": "Automatisk opdaterings niveau", - "OptionRelease": "Officiel Udgivelse", + "LabelAutomaticUpdateLevel": "Automatisk opdateringsniveau", + "OptionRelease": "Officiel udgivelse", "OptionBeta": "Beta", "OptionDev": "Dev (Ustabil)", "LabelAllowServerAutoRestart": "Tillad serveren at genstarte automatisk for at p\u00e5f\u00f8re opdateringer", "LabelAllowServerAutoRestartHelp": "Serveren vil kun genstarte i inaktive perioder, n\u00e5r ingen brugere er aktive", - "LabelEnableDebugLogging": "Aktiver fejlfindings logning", + "LabelEnableDebugLogging": "Aktiver fejlfindingslogning", "LabelRunServerAtStartup": "Start serveren ved opstart", - "LabelRunServerAtStartupHelp": "Dette vil starte bakkeikonet ved opstart af Windows. For at starte Windows tjenesten skal du fjerne markeringen og k\u00f8re tjenesten fra Windows Kontrolpanelet. Bem\u00e6rk: Du ikke kan k\u00f8re begge dele p\u00e5 samme tid, s\u00e5 du bliver n\u00f8dt til at afslutte bakkeikonet f\u00f8r du starter tjenesten.", - "ButtonSelectDirectory": "V\u00e6lg Mappe", - "LabelCustomPaths": "Angiv brugerdefinerede stier, hvor det \u00f8nskes. Lad felter tomme for at bruge standardindstillingerne.", - "LabelCachePath": "Cache sti:", - "LabelCachePathHelp": "Definer en alternativ mappe til serverens cache filer, s\u00e5som billeder.", - "LabelImagesByNamePath": "Billeder efter navn sti:", - "LabelImagesByNamePathHelp": "Specify a custom location for downloaded actor, genre and studio images.", - "LabelMetadataPath": "Metadata sti:", - "LabelMetadataPathHelp": "Specify a custom location for downloaded artwork and metadata, if not saving within media folders.", - "LabelTranscodingTempPath": "Transcoding temporary path:", - "LabelTranscodingTempPathHelp": "This folder contains working files used by the transcoder. Specify a custom path, or leave empty to use the default within the server's data folder.", + "LabelRunServerAtStartupHelp": "Dette vil starte bakkeikonet ved opstart af Windows. For at starte Windows tjenesten skal du fjerne markeringen og k\u00f8re tjenesten fra Windows kontrolpanelet. Bem\u00e6rk: Du ikke kan k\u00f8re begge dele p\u00e5 samme tid, s\u00e5 du bliver n\u00f8dt til at afslutte bakkeikonet f\u00f8r du starter tjenesten.", + "ButtonSelectDirectory": "V\u00e6lg mappe", + "LabelCustomPaths": "Angiv brugerdefinerede stier, hvor det \u00f8nskes. Lad felter st\u00e5 tomme for at bruge standardindstillingerne.", + "LabelCachePath": "Cachesti:", + "LabelCachePathHelp": "Definer en alternativ mappe til serverens cachefiler, s\u00e5som billeder.", + "LabelImagesByNamePath": "Billeder efter navn-sti:", + "LabelImagesByNamePathHelp": "Definer en alternativ mappe til nedhentede billeder af skuespillere, genrer og studier.", + "LabelMetadataPath": "Metadatasti:", + "LabelMetadataPathHelp": "Definer en alternativ sti til nedhentede billeder og metadata, hvis de ikke gemmes i mediemapperne.", + "LabelTranscodingTempPath": "Midlertidig sti til transkodning:", + "LabelTranscodingTempPathHelp": "Denne mappe indeholder transkoderens arbejdsfiler. Definer en alternativ sti eller lad den st\u00e5 tom for at bruge standardmappen i serverens datamappe.", "TabBasics": "Basale", "TabTV": "TV", "TabGames": "Spil", "TabMusic": "Musik", "TabOthers": "Andre", - "HeaderExtractChapterImagesFor": "Udtr\u00e6k kapitel billeder for:", + "HeaderExtractChapterImagesFor": "Udtr\u00e6k kapitelbilleder for:", "OptionMovies": "Film", "OptionEpisodes": "Episoder", - "OptionOtherVideos": "Andre Videoer", + "OptionOtherVideos": "Andre videoer", "TitleMetadata": "Metadata", - "LabelAutomaticUpdates": "Enable automatic updates", + "LabelAutomaticUpdates": "Aktiver automatiske opdateringer", "LabelAutomaticUpdatesTmdb": "Aktiver automatiske opdateringer fra TheMovieDB.org", "LabelAutomaticUpdatesTvdb": "Aktiver automatiske opdateringer fra TheTVDB.com", - "LabelAutomaticUpdatesFanartHelp": "Hvis aktiveret, vil nye billeder blive hentet automatisk n\u00e5r de bliver tilf\u00f8jet til fanart.tv. Eksisterende billeder vil ikke bliver over skrevet.", - "LabelAutomaticUpdatesTmdbHelp": "Hvis aktiveret, vil nye billeder blive hentet automatisk n\u00e5r de bliver tilf\u00f8jet til TheMovieDB.org. Eksisterende billeder vil ikke bliver over skrevet.", - "LabelAutomaticUpdatesTvdbHelp": "Hvis aktiveret, vil nye billeder blive hentet automatisk n\u00e5r de bliver tilf\u00f8jet til TheTVDB.com. Eksisterende billeder vil ikke bliver over skrevet.", - "LabelFanartApiKey": "Personal api key:", - "LabelFanartApiKeyHelp": "Requests to fanart without a personal API key return results that were approved over 7 days ago. With a personal API key that drops to 48 hours and if you are also a fanart VIP member that will further drop to around 10 minutes.", - "ExtractChapterImagesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs when videos are discovered, and also as a nightly scheduled task. The schedule is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelMetadataDownloadLanguage": "Preferred download language:", - "ButtonAutoScroll": "Auto-scroll", - "LabelImageSavingConvention": "Image saving convention:", - "LabelImageSavingConventionHelp": "Emby recognizes images from most major media applications. Choosing your downloading convention is useful if you also use other products.", - "OptionImageSavingCompatible": "Compatible - Emby\/Kodi\/Plex", + "LabelAutomaticUpdatesFanartHelp": "Hvis aktiveret, vil nye billeder blive hentet automatisk n\u00e5r de bliver tilf\u00f8jet til fanart.tv. Eksisterende billeder vil ikke bliver overskrevet.", + "LabelAutomaticUpdatesTmdbHelp": "Hvis aktiveret, vil nye billeder blive hentet automatisk n\u00e5r de bliver tilf\u00f8jet til TheMovieDB.org. Eksisterende billeder vil ikke bliver overskrevet.", + "LabelAutomaticUpdatesTvdbHelp": "Hvis aktiveret, vil nye billeder blive hentet automatisk n\u00e5r de bliver tilf\u00f8jet til TheTVDB.com. Eksisterende billeder vil ikke bliver overskrevet.", + "LabelFanartApiKey": "Personlig api n\u00f8gle:", + "LabelFanartApiKeyHelp": "Foresp\u00f8rgsler til fanart uden en personlig api n\u00f8gle returnerer resultater godkendt for over 7 dage siden. Med en personlig api n\u00f8gle falder dette til 48 timer, og hvis du er fanart VIP medlem falder dette yderligere til omkring 10 minutter.", + "ExtractChapterImagesHelp": "Udtr\u00e6kning af kapitelbilleder lader klienter vise billeder i scenev\u00e6lgeren. Denne proces kan v\u00e6re langsom og processorbelastende, og kan kr\u00e6ve adskillige gigabytes harddiskplads. Processen k\u00f8rer som en natlig planlagt opgave, selv om dette kan \u00e6ndres i planl\u00e6ggeren. Det anbefales ikke at k\u00f8re denne proces i tidsrum hvor der er brugere p\u00e5 systemet.", + "LabelMetadataDownloadLanguage": "Foretrukket sprog for nedhentning:", + "ButtonAutoScroll": "Rul automatisk", + "LabelImageSavingConvention": "Konvention for lagring af billeder:", + "LabelImageSavingConventionHelp": "Emby genkender billeder fra de fleste store medieapplikationer. Valg af konvention for hentning af billeder er nyttefuld hvis du ogs\u00e5 benytter dig af andre produkter.", + "OptionImageSavingCompatible": "Kompatibel - Emby\/Kodi\/Plex", "OptionImageSavingStandard": "Standard - MB2", "ButtonSignIn": "Log Ind", "TitleSignIn": "Log Ind", "HeaderPleaseSignIn": "Log venligst ind", "LabelUser": "Bruger:", - "LabelPassword": "Kode:", - "ButtonManualLogin": "Manuelt Log Ind", - "PasswordLocalhostMessage": "Koder er ikke kr\u00e6vet n\u00e5r der logges ind fra localhost.", + "LabelPassword": "Adgangskode:", + "ButtonManualLogin": "Manuel Login", + "PasswordLocalhostMessage": "Adgangskoder er ikke p\u00e5kr\u00e6vet n\u00e5r der logges ind fra localhost.", "TabGuide": "Guide", "TabChannels": "Kanaler", - "TabCollections": "Collections", + "TabCollections": "Samlinger", "HeaderChannels": "Kanaler", "TabRecordings": "Optagelser", "TabScheduled": "Planlagt", "TabSeries": "Serier", - "TabFavorites": "Favorites", - "TabMyLibrary": "My Library", - "ButtonCancelRecording": "Annuller Optagelse", - "HeaderPrePostPadding": "Pre\/Post Padding", - "LabelPrePaddingMinutes": "Pre-padding minutes:", - "OptionPrePaddingRequired": "Pre-padding is required in order to record.", - "LabelPostPaddingMinutes": "Post-padding minutes:", - "OptionPostPaddingRequired": "Post-padding is required in order to record.", - "HeaderWhatsOnTV": "What's On", + "TabFavorites": "Favoritter", + "TabMyLibrary": "Mit bibliotek", + "ButtonCancelRecording": "Annuller optagelse", + "HeaderPrePostPadding": "F\u00f8r\/efter tidstilf\u00f8jelse", + "LabelPrePaddingMinutes": "Start minutter f\u00f8r:", + "OptionPrePaddingRequired": "Tidstilf\u00f8jelse f\u00f8r er kr\u00e6vet for at optage.", + "LabelPostPaddingMinutes": "Stop optagelse minutter efter:", + "OptionPostPaddingRequired": "Tidstilf\u00f8jelse efter er kr\u00e6vet for at optage.", + "HeaderWhatsOnTV": "Vises nu", "HeaderUpcomingTV": "Kommende TV", "TabStatus": "Status", "TabSettings": "Indstillinger", - "ButtonRefreshGuideData": "Opdater Guide Data", - "ButtonRefresh": "Refresh", - "ButtonAdvancedRefresh": "Advanced Refresh", + "ButtonRefreshGuideData": "Opdater Guide data", + "ButtonRefresh": "Opdater", + "ButtonAdvancedRefresh": "Avanceret opdatering", "OptionPriority": "Prioritet", - "OptionRecordOnAllChannels": "Record on all channels", - "OptionRecordAnytime": "Record at any time", + "OptionRecordOnAllChannels": "Optag fra alle kanaler", + "OptionRecordAnytime": "Optag p\u00e5 ethverts tidspunkt", "OptionRecordOnlyNewEpisodes": "Optag kun nye episoder", - "HeaderRepeatingOptions": "Repeating Options", + "HeaderRepeatingOptions": "Indstillinger for gentagelse", "HeaderDays": "Dage", - "HeaderActiveRecordings": "Aktive Optagelser", - "HeaderLatestRecordings": "Seneste Optagelse", - "HeaderAllRecordings": "Alle Optagelser", + "HeaderActiveRecordings": "Aktive optagelser", + "HeaderLatestRecordings": "Seneste optagelse", + "HeaderAllRecordings": "Alle optagelser", "ButtonPlay": "Afspil", "ButtonEdit": "Rediger", "ButtonRecord": "Optag", "ButtonDelete": "Slet", "ButtonRemove": "Fjern", - "OptionRecordSeries": "Optag Serie", + "OptionRecordSeries": "Optag serie", "HeaderDetails": "Detaljer", - "TitleLiveTV": "Direkte TV", - "LabelNumberOfGuideDays": "Antal dage af program guide data til download:", - "LabelNumberOfGuideDaysHelp": "Hentning af flere dages program guide data giver mulighed for at planl\u00e6gge l\u00e6ngere ud i fremtiden, og se flere programoversigter, men det vil ogs\u00e5 tage l\u00e6ngere tid at downloade. Auto vil v\u00e6lge baseret p\u00e5 antallet af kanaler.", + "TitleLiveTV": "Live TV", + "LabelNumberOfGuideDays": "Antal dage af programguide data der skal hentes:", + "LabelNumberOfGuideDaysHelp": "Hentning af flere dages programguide data giver mulighed for at planl\u00e6gge l\u00e6ngere ud i fremtiden, og se flere programoversigter, men det vil ogs\u00e5 tage l\u00e6ngere tid at hente. Auto vil v\u00e6lge baseret p\u00e5 antallet af kanaler.", "OptionAutomatic": "Auto", - "HeaderServices": "Services", - "LiveTvPluginRequired": "A Live TV service provider plugin is required in order to continue.", - "LiveTvPluginRequiredHelp": "Please install one of our available plugins, such as Next Pvr or ServerWmc.", - "LabelCustomizeOptionsPerMediaType": "Customize for media type:", - "OptionDownloadThumbImage": "Thumb", + "HeaderServices": "Tjenester", + "LiveTvPluginRequired": "Der kr\u00e6ves et Live TV udbyder-plugin for at forts\u00e6tte", + "LiveTvPluginRequiredHelp": "Installer venligst et af vores tilg\u00e6ngelige plugins, s\u00e5 som NextPVR eller ServerWMC.", + "LabelCustomizeOptionsPerMediaType": "Tilpas til medietype:", + "OptionDownloadThumbImage": "Miniature", "OptionDownloadMenuImage": "Menu", "OptionDownloadLogoImage": "Logo", "OptionDownloadBoxImage": "Boks", - "OptionDownloadDiscImage": "Disc", + "OptionDownloadDiscImage": "Disk", "OptionDownloadBannerImage": "Banner", - "OptionDownloadBackImage": "Tilbage", - "OptionDownloadArtImage": "Art", - "OptionDownloadPrimaryImage": "Primary", - "HeaderFetchImages": "Hent Billeder:", - "HeaderImageSettings": "Billede Indstillinger", - "TabOther": "Other", + "OptionDownloadBackImage": "Bagside", + "OptionDownloadArtImage": "Kunst", + "OptionDownloadPrimaryImage": "Prim\u00e6r", + "HeaderFetchImages": "Hent billeder:", + "HeaderImageSettings": "Billedindstillinger", + "TabOther": "Andet", "LabelMaxBackdropsPerItem": "Maksimum antal af bagt\u00e6pper per element:", "LabelMaxScreenshotsPerItem": "Maksimum antal af sk\u00e6rmbilleder per element:", - "LabelMinBackdropDownloadWidth": "Minimum bagt\u00e6ppe vidde:", - "LabelMinScreenshotDownloadWidth": "Minimum screenshot download width:", - "ButtonAddScheduledTaskTrigger": "Add Trigger", - "HeaderAddScheduledTaskTrigger": "Add Trigger", + "LabelMinBackdropDownloadWidth": "Minimum bagt\u00e6ppe bredde:", + "LabelMinScreenshotDownloadWidth": "Minimum sk\u00e6rmbillede bredde:", + "ButtonAddScheduledTaskTrigger": "Tilf\u00f8j udl\u00f8ser", + "HeaderAddScheduledTaskTrigger": "Tilf\u00f8j udl\u00f8ser", "ButtonAdd": "Tilf\u00f8j", - "LabelTriggerType": "Trigger Type:", - "OptionDaily": "Daily", - "OptionWeekly": "Weekly", - "OptionOnInterval": "On an interval", - "OptionOnAppStartup": "On application startup", - "OptionAfterSystemEvent": "After a system event", - "LabelDay": "Day:", - "LabelTime": "Time:", - "LabelEvent": "Event:", - "OptionWakeFromSleep": "Wake from sleep", - "LabelEveryXMinutes": "Every:", - "HeaderTvTuners": "Tuners", - "HeaderGallery": "Gallery", - "HeaderLatestGames": "Latest Games", - "HeaderRecentlyPlayedGames": "Recently Played Games", - "TabGameSystems": "Game Systems", - "TitleMediaLibrary": "Media Library", - "TabFolders": "Folders", - "TabPathSubstitution": "Path Substitution", - "LabelSeasonZeroDisplayName": "Season 0 display name:", - "LabelEnableRealtimeMonitor": "Enable real time monitoring", - "LabelEnableRealtimeMonitorHelp": "Changes will be processed immediately, on supported file systems.", - "ButtonScanLibrary": "Scan Library", - "HeaderNumberOfPlayers": "Players:", - "OptionAnyNumberOfPlayers": "Any", + "LabelTriggerType": "Udl\u00f8sertype", + "OptionDaily": "Daglig", + "OptionWeekly": "Ugentlig", + "OptionOnInterval": "Interval", + "OptionOnAppStartup": "Ved opstart", + "OptionAfterSystemEvent": "Efter en systemh\u00e6ndelse", + "LabelDay": "Dag:", + "LabelTime": "Tid:", + "LabelEvent": "H\u00e6ndelse:", + "OptionWakeFromSleep": "V\u00e5gner fra dvale", + "LabelEveryXMinutes": "Hver:", + "HeaderTvTuners": "Tunere", + "HeaderGallery": "Galleri", + "HeaderLatestGames": "Nyeste spil", + "HeaderRecentlyPlayedGames": "Spillet for nylig", + "TabGameSystems": "Spilsystemer", + "TitleMediaLibrary": "Mediebibliotek", + "TabFolders": "Mapper", + "TabPathSubstitution": "Stisubstitution", + "LabelSeasonZeroDisplayName": "S\u00e6son 0 vist navn:", + "LabelEnableRealtimeMonitor": "Aktiver realtidsoverv\u00e5gning", + "LabelEnableRealtimeMonitorHelp": "\u00c6ndringer vil blive behandlet \u00f8jeblikkeligt p\u00e5 underst\u00f8ttede filsystemer.", + "ButtonScanLibrary": "Skan bibliotek", + "HeaderNumberOfPlayers": "Afspillere:", + "OptionAnyNumberOfPlayers": "Enhver", "Option1Player": "1+", "Option2Player": "2+", "Option3Player": "3+", "Option4Player": "4+", - "HeaderMediaFolders": "Media Folders", - "HeaderThemeVideos": "Theme Videos", - "HeaderThemeSongs": "Theme Songs", - "HeaderScenes": "Scenes", - "HeaderAwardsAndReviews": "Awards and Reviews", + "HeaderMediaFolders": "Mediemapper", + "HeaderThemeVideos": "Temavideoer", + "HeaderThemeSongs": "Temasange", + "HeaderScenes": "Scener", + "HeaderAwardsAndReviews": "Priser og anmelselser", "HeaderSoundtracks": "Soundtracks", - "HeaderMusicVideos": "Music Videos", - "HeaderSpecialFeatures": "Special Features", - "HeaderCastCrew": "Cast & Crew", - "HeaderAdditionalParts": "Additional Parts", - "ButtonSplitVersionsApart": "Split Versions Apart", + "HeaderMusicVideos": "Musikvideoer", + "HeaderSpecialFeatures": "Specielle egenskaber", + "HeaderCastCrew": "Medvirkende", + "HeaderAdditionalParts": "Andre stier:", + "ButtonSplitVersionsApart": "Opdel versioner", "ButtonPlayTrailer": "Trailer", - "LabelMissing": "Missing", + "LabelMissing": "Mangler", "LabelOffline": "Offline", - "PathSubstitutionHelp": "Path substitutions are used for mapping a path on the server to a path that clients are able to access. By allowing clients direct access to media on the server they may be able to play them directly over the network and avoid using server resources to stream and transcode them.", - "HeaderFrom": "From", - "HeaderTo": "To", - "LabelFrom": "From:", - "LabelFromHelp": "Example: D:\\Movies (on the server)", - "LabelTo": "To:", - "LabelToHelp": "Example: \\\\MyServer\\Movies (a path clients can access)", - "ButtonAddPathSubstitution": "Add Substitution", - "OptionSpecialEpisode": "Specials", - "OptionMissingEpisode": "Manglende Episoder", - "OptionUnairedEpisode": "Ikke Sendte Episoder", - "OptionEpisodeSortName": "Episode Sort Name", - "OptionSeriesSortName": "Seriens Navn", - "OptionTvdbRating": "Tvdb Bed\u00f8mmelse", - "HeaderTranscodingQualityPreference": "Transcoding Quality Preference:", + "PathSubstitutionHelp": "Stisubstitutioner bruges til at \u00e6ndre en sti p\u00e5 serveren til en sti klienterne kan tilg\u00e5. Ved at tillade klienterne direkte adgang til medier p\u00e5 serveren, kan de m\u00e5ske afpille dem direkte over netv\u00e6rket uden at skulle bruge serverens ressourcer til at streame og transkode dem.", + "HeaderFrom": "Fra", + "HeaderTo": "Til", + "LabelFrom": "Fra:", + "LabelFromHelp": "F. eks. D:\\Movies (p\u00e5 serveren)", + "LabelTo": "Til:", + "LabelToHelp": "F. eks. \\\\MyServer\\Movies (en sti klienterne kan tilg\u00e5)", + "ButtonAddPathSubstitution": "Tilf\u00f8j substitution", + "OptionSpecialEpisode": "S\u00e6rudsendelser", + "OptionMissingEpisode": "Manglende episoder", + "OptionUnairedEpisode": "Ikke sendte episoder", + "OptionEpisodeSortName": "Navn for sortering af episoder", + "OptionSeriesSortName": "Seriens navn", + "OptionTvdbRating": "Tvdb bed\u00f8mmelse", + "HeaderTranscodingQualityPreference": "Foretrukken kvalitet for transkodning:", "OptionAutomaticTranscodingHelp": "Serveren vil bestemme kvalitet og hastighed", "OptionHighSpeedTranscodingHelp": "Lavere kvalitet, men hurtigere omkodning", "OptionHighQualityTranscodingHelp": "H\u00f8jere kvalitet, men langsommere omkodning", "OptionMaxQualityTranscodingHelp": "Bedste kvalitet med langsommere omkodning og h\u00f8jere CPU forbrug", "OptionHighSpeedTranscoding": "H\u00f8jere hastighed", - "OptionHighQualityTranscoding": "H\u00f8jere kvalietet", + "OptionHighQualityTranscoding": "H\u00f8jere kvalitet", "OptionMaxQualityTranscoding": "H\u00f8jeste kvalitet", - "OptionEnableDebugTranscodingLogging": "Enable debug transcoding logging", - "OptionEnableDebugTranscodingLoggingHelp": "Dette lave generer meget store log filer, og er kun anbefalet at bruge til fejlfindings form\u00e5l.", - "EditCollectionItemsHelp": "Tilf\u00f8j eller fjern hvilken som helst film, serier, albums, bog eller spil, du har lyst til at tilf\u00f8je til denne samling.", - "HeaderAddTitles": "Tilf\u00f8j Titler", + "OptionEnableDebugTranscodingLogging": "Aktiver debug logning af transkodning", + "OptionEnableDebugTranscodingLoggingHelp": "Dette generer meget store logfiler, og er kun anbefalet at bruge til fejlfindingsform\u00e5l.", + "EditCollectionItemsHelp": "Tilf\u00f8j eller fjern hvilken som helst film, serie, albums, bog eller spil, du har lyst til at tilf\u00f8je til denne samling.", + "HeaderAddTitles": "Tilf\u00f8j titler", "LabelEnableDlnaPlayTo": "Aktiver DLNA \"Afspil Til\"", - "LabelEnableDlnaPlayToHelp": "Emby can detect devices within your network and offer the ability to remote control them.", - "LabelEnableDlnaDebugLogging": "Enable DLNA debug logging", - "LabelEnableDlnaDebugLoggingHelp": "This will create large log files and should only be used as needed for troubleshooting purposes.", - "LabelEnableDlnaClientDiscoveryInterval": "Client discovery interval (seconds)", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determines the duration in seconds between SSDP searches performed by Emby.", - "HeaderCustomDlnaProfiles": "Custom Profiles", - "HeaderSystemDlnaProfiles": "System Profiles", - "CustomDlnaProfilesHelp": "Create a custom profile to target a new device or override a system profile.", - "SystemDlnaProfilesHelp": "System profiles are read-only. Changes to a system profile will be saved to a new custom profile.", - "TitleDashboard": "Dashboard", - "TabHome": "Home", + "LabelEnableDlnaPlayToHelp": "Emby kan finde enheder i dit netv\u00e6rk og tilbyde at kontrollere dem.", + "LabelEnableDlnaDebugLogging": "Aktiver debu logning af DLNA", + "LabelEnableDlnaDebugLoggingHelp": "Dette generer meget store logfiler, og er kun anbefalet at bruge til fejlfindingsform\u00e5l.", + "LabelEnableDlnaClientDiscoveryInterval": "Interval for klients\u00f8gning (sekunder)", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "angiver intervallet i sekunder mellem Embys SSDP s\u00f8gninger.", + "HeaderCustomDlnaProfiles": "Brugerdefinerede profiler", + "HeaderSystemDlnaProfiles": "Systemprofiler", + "CustomDlnaProfilesHelp": "Lav brugerdefinerede profiler til nye enheder eller for at overstyre en systemprofil.", + "SystemDlnaProfilesHelp": "Systemprofiler kan ikke overskrives. \u00c6ndringer i en systemprofil vil blive gemt i en ny brugerdefineret profil.", + "TitleDashboard": "Betjeningspanel", + "TabHome": "Hjem", "TabInfo": "Info", "HeaderLinks": "Links", - "HeaderSystemPaths": "System Paths", - "LinkCommunity": "Community", + "HeaderSystemPaths": "Systemstier", + "LinkCommunity": "F\u00e6llesskab", "LinkGithub": "Github", "LinkApi": "Api", - "LinkApiDocumentation": "Api Documentation", - "LabelFriendlyServerName": "Friendly server name:", - "LabelFriendlyServerNameHelp": "This name will be used to identify this server. If left blank, the computer name will be used.", - "LabelPreferredDisplayLanguage": "Preferred display language:", - "LabelPreferredDisplayLanguageHelp": "Translating Emby is an ongoing project and is not yet complete.", - "LabelReadHowYouCanContribute": "Read about how you can contribute.", - "HeaderNewCollection": "New Collection", - "ButtonSubmit": "Submit", - "ButtonCreate": "Create", - "LabelCustomCss": "Custom css:", - "LabelCustomCssHelp": "Apply your own custom css to the web interface.", - "LabelLocalHttpServerPortNumber": "Local http port number:", - "LabelLocalHttpServerPortNumberHelp": "The tcp port number that Emby's http server should bind to.", - "LabelPublicHttpPort": "Public http port number:", - "LabelPublicHttpPortHelp": "The public port number that should be mapped to the local http port.", - "LabelPublicHttpsPort": "Public https port number:", - "LabelPublicHttpsPortHelp": "The public port number that should be mapped to the local https port.", - "LabelEnableHttps": "Report https as external address", - "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", - "LabelHttpsPort": "Local https port number:", - "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", - "LabelWebSocketPortNumber": "Web socket port number:", - "LabelEnableAutomaticPortMap": "Enable automatic port mapping", - "LabelEnableAutomaticPortMapHelp": "Attempt to automatically map the public port to the local port via UPnP. This may not work with some router models.", - "LabelExternalDDNS": "External WAN Address:", - "LabelExternalDDNSHelp": "If you have a dynamic DNS enter it here. Emby apps will use it when connecting remotely. Leave empty for automatic detection.", - "TabResume": "Resume", - "TabWeather": "Weather", - "TitleAppSettings": "App Settings", - "LabelMinResumePercentage": "Min resume percentage:", - "LabelMaxResumePercentage": "Max resume percentage:", - "LabelMinResumeDuration": "Min resume duration (seconds):", - "LabelMinResumePercentageHelp": "Titles are assumed unplayed if stopped before this time", - "LabelMaxResumePercentageHelp": "Titles are assumed fully played if stopped after this time", - "LabelMinResumeDurationHelp": "Titles shorter than this will not be resumable", - "TitleAutoOrganize": "Auto-Organize", - "TabActivityLog": "Activity Log", - "HeaderName": "Name", - "HeaderDate": "Date", - "HeaderSource": "Source", + "LinkApiDocumentation": "Api dokumentation", + "LabelFriendlyServerName": "Nemt servernavn", + "LabelFriendlyServerNameHelp": "Dette navn bruges til at identificere serveren. Hvis det ikke udfyldes, bruges computerens navn.", + "LabelPreferredDisplayLanguage": "Foretrukket sprog til visning:", + "LabelPreferredDisplayLanguageHelp": "Overs\u00e6ttelse af Emby er en igangv\u00e6rende proces og er endnu ikke komplet.", + "LabelReadHowYouCanContribute": "L\u00e6s om hvordan du kan bidrage.", + "HeaderNewCollection": "Ny samling", + "ButtonSubmit": "Indsend", + "ButtonCreate": "Skab", + "LabelCustomCss": "Brugerdefineret css", + "LabelCustomCssHelp": "Anvend din egen css til webinterfacet.", + "LabelLocalHttpServerPortNumber": "Lokalt http portnummer:", + "LabelLocalHttpServerPortNumberHelp": "Det portnummer Embys http-server bruger.", + "LabelPublicHttpPort": "Offentligt http portnummer:", + "LabelPublicHttpPortHelp": "Det offentlige portnummer som bliver knyttet til det lokale http portnummer.", + "LabelPublicHttpsPort": "Offentligt https portnummer:", + "LabelPublicHttpsPortHelp": "Det offentlige portnummer som bliver knyttet til det lokale https portnummer.", + "LabelEnableHttps": "Angiv https til den eksterne adresse", + "LabelEnableHttpsHelp": "Aktiver dette for at f\u00e5 serveren til at oplyse en https url som eksterne adresse til klienter.", + "LabelHttpsPort": "Lokalt https portnummer", + "LabelHttpsPortHelp": "Det portnummer Embys https-server bruger.", + "LabelWebSocketPortNumber": "Web socket portnummer:", + "LabelEnableAutomaticPortMap": "Aktiver automatisk port mapping", + "LabelEnableAutomaticPortMapHelp": "Fors\u00f8g at mappe den offentlige port til den lokale port med uPnP. Dette virker ikke med alle routere.", + "LabelExternalDDNS": "Ekstern WAN adresse:", + "LabelExternalDDNSHelp": "Hvis du bruger en dynamisk DNS service, s\u00e5 skriv dit hostnavn her. Emby apps vil bruge det til at forbinde eksternt. Efterlad feltet tomt for at bruge automatisk opdagelse.", + "TabResume": "Forts\u00e6t", + "TabWeather": "Vejr", + "TitleAppSettings": "App indstillinger", + "LabelMinResumePercentage": "Min. forts\u00e6t procentdel:", + "LabelMaxResumePercentage": "Maks. forts\u00e6t procentdel:", + "LabelMinResumeDuration": "Min. forts\u00e6t tidsrum (sekunder):", + "LabelMinResumePercentageHelp": "Medier anses om ikke afspillet, hvis de stoppes inden denne tid.", + "LabelMaxResumePercentageHelp": "Medier anses som fuldt afspillet, hvis de stoppes efter denne tid.", + "LabelMinResumeDurationHelp": "Medier med kortere afspilningstid en denne kan ikke forts\u00e6ttes.", + "TitleAutoOrganize": "Organiser automatisk", + "TabActivityLog": "Aktivitetslog", + "HeaderName": "Navn", + "HeaderDate": "Dato", + "HeaderSource": "Kilde", "HeaderDestination": "Destination", "HeaderProgram": "Program", - "HeaderClients": "Clients", - "LabelCompleted": "Completed", - "LabelFailed": "Failed", - "LabelSkipped": "Skipped", - "HeaderEpisodeOrganization": "Episode Organization", - "LabelSeries": "Series:", - "LabelSeasonNumber": "Season number:", - "LabelEpisodeNumber": "Episode number:", - "LabelEndingEpisodeNumber": "Ending episode number:", - "LabelEndingEpisodeNumberHelp": "Only required for multi-episode files", - "HeaderSupportTheTeam": "Support the Emby Team", - "LabelSupportAmount": "Amount (USD)", - "HeaderSupportTheTeamHelp": "Help ensure the continued development of this project by donating. A portion of all donations will be contributed to other free tools we depend on.", - "ButtonEnterSupporterKey": "Enter supporter key", - "DonationNextStep": "Once complete, please return and enter your supporter key, which you will receive by email.", - "AutoOrganizeHelp": "Auto-organize monitors your download folders for new files and moves them to your media directories.", - "AutoOrganizeTvHelp": "TV file organizing will only add episodes to existing series. It will not create new series folders.", - "OptionEnableEpisodeOrganization": "Enable new episode organization", - "LabelWatchFolder": "Watch folder:", - "LabelWatchFolderHelp": "The server will poll this folder during the 'Organize new media files' scheduled task.", - "ButtonViewScheduledTasks": "View scheduled tasks", - "LabelMinFileSizeForOrganize": "Minimum file size (MB):", - "LabelMinFileSizeForOrganizeHelp": "Files under this size will be ignored.", - "LabelSeasonFolderPattern": "Season folder pattern:", - "LabelSeasonZeroFolderName": "Season zero folder name:", - "HeaderEpisodeFilePattern": "Episode file pattern", - "LabelEpisodePattern": "Episode pattern:", - "LabelMultiEpisodePattern": "Multi-Episode pattern:", - "HeaderSupportedPatterns": "Supported Patterns", - "HeaderTerm": "Term", - "HeaderPattern": "Pattern", - "HeaderResult": "Result", - "LabelDeleteEmptyFolders": "Delete empty folders after organizing", - "LabelDeleteEmptyFoldersHelp": "Enable this to keep the download directory clean.", - "LabelDeleteLeftOverFiles": "Delete left over files with the following extensions:", - "LabelDeleteLeftOverFilesHelp": "Separate with ;. For example: .nfo;.txt", - "OptionOverwriteExistingEpisodes": "Overwrite existing episodes", - "LabelTransferMethod": "Transfer method", - "OptionCopy": "Copy", - "OptionMove": "Move", - "LabelTransferMethodHelp": "Copy or move files from the watch folder", - "HeaderLatestNews": "Latest News", - "HeaderHelpImproveProject": "Help Improve Emby", - "HeaderRunningTasks": "Running Tasks", - "HeaderActiveDevices": "Active Devices", - "HeaderPendingInstallations": "Pending Installations", - "HeaderServerInformation": "Server Information", - "ButtonRestartNow": "Restart Now", - "ButtonRestart": "Restart", - "ButtonShutdown": "Shutdown", - "ButtonUpdateNow": "Update Now", + "HeaderClients": "Klienter", + "LabelCompleted": "F\u00e6rdig", + "LabelFailed": "Fejlet", + "LabelSkipped": "Oversprunget", + "HeaderEpisodeOrganization": "Organisation af episoder", + "LabelSeries": "Serier", + "LabelEndingEpisodeNumber": "Nummer p\u00e5 sidste episode", + "LabelEndingEpisodeNumberHelp": "Kun n\u00f8dvendig for filer med flere episoder.", + "HeaderSupportTheTeam": "St\u00f8t Emby-holdet", + "LabelSupportAmount": "Bel\u00f8b (USD)", + "HeaderSupportTheTeamHelp": "Hj\u00e6lp med den fortsatte udvikling af dette projekt ved at donere. Den del af alle donationer vil g\u00e5 til andre gratis v\u00e6rkt\u00f8jer vi er afh\u00e6ngige af.", + "ButtonEnterSupporterKey": "Indtast supporter n\u00f8gle", + "DonationNextStep": "Vend tilbage og indtast din supporter n\u00f8gle, n\u00e5r du har modtaget den p\u00e5 e-mail.", + "AutoOrganizeHelp": "Organiser automatisk overv\u00e5ger de mapper, du henter til, og flytter filerne til dine mediemapper.", + "AutoOrganizeTvHelp": "TV-fil organisering vil kun tilf\u00f8je episoder til eksisterende serier. Der oprettes ikke mapper til nye serier.", + "OptionEnableEpisodeOrganization": "Aktiver organisering af nye episoder.", + "LabelWatchFolder": "Overv\u00e5get mappe:", + "LabelWatchFolderHelp": "Serveren vil unders\u00f8ge denne mappe n\u00e5r den planlagte opgave 'Organiser nye mediefiler' k\u00f8rer.", + "ButtonViewScheduledTasks": "Vis planlagte opgaver.", + "LabelMinFileSizeForOrganize": "Mindste filst\u00f8rrelse (MB):", + "LabelMinFileSizeForOrganizeHelp": "Filer under denne st\u00f8rrelse vil blive ignoreret.", + "LabelSeasonFolderPattern": "S\u00e6sonmappe m\u00f8nster:", + "LabelSeasonZeroFolderName": "S\u00e6son 0 mappenavn:", + "HeaderEpisodeFilePattern": "Episode film\u00f8nster", + "LabelEpisodePattern": "Episode m\u00f8nster:", + "LabelMultiEpisodePattern": "Multi-episode m\u00f8nster:", + "HeaderSupportedPatterns": "Underst\u00f8ttede m\u00f8nstre", + "HeaderTerm": "Udtryk", + "HeaderPattern": "M\u00f8nster", + "HeaderResult": "Resultat", + "LabelDeleteEmptyFolders": "Slet tomme mapper efter organisering", + "LabelDeleteEmptyFoldersHelp": "Aktiver dette for at hole mapperne, du henter til, ryddelige.", + "LabelDeleteLeftOverFiles": "Slet efterladte filer med disse endelser:", + "LabelDeleteLeftOverFilesHelp": "Adskil med ;. F. eks. .nfo;.txt", + "OptionOverwriteExistingEpisodes": "Overskriv eksisterende episoder", + "LabelTransferMethod": "Overf\u00f8rselsmetode", + "OptionCopy": "Kopier", + "OptionMove": "Flyt", + "LabelTransferMethodHelp": "Kopier eller flyt filer fra den overv\u00e5gede mappe.", + "HeaderLatestNews": "Sidste nyt", + "HeaderHelpImproveProject": "Hj\u00e6lp med at forbedre Emvy", + "HeaderRunningTasks": "K\u00f8rende opgaver", + "HeaderActiveDevices": "Aktive enheder", + "HeaderPendingInstallations": "Ventende installationer", + "HeaderServerInformation": "Information om serveren", + "ButtonRestartNow": "Genstart nu", + "ButtonRestart": "Genstart", + "ButtonShutdown": "Luk", + "ButtonUpdateNow": "Opdater nu", "TabHosting": "Hosting", - "PleaseUpdateManually": "Please shutdown the server and update manually.", - "NewServerVersionAvailable": "A new version of Emby Server is available!", - "ServerUpToDate": "Emby Server is up to date", - "LabelComponentsUpdated": "The following components have been installed or updated:", - "MessagePleaseRestartServerToFinishUpdating": "Please restart the server to finish applying updates.", - "LabelDownMixAudioScale": "Audio boost when downmixing:", - "LabelDownMixAudioScaleHelp": "Boost audio when downmixing. Set to 1 to preserve original volume value.", - "ButtonLinkKeys": "Transfer Key", - "LabelOldSupporterKey": "Old supporter key", - "LabelNewSupporterKey": "New supporter key", - "HeaderMultipleKeyLinking": "Transfer to New Key", - "MultipleKeyLinkingHelp": "If you received a new supporter key, use this form to transfer the old key's registrations to your new one.", - "LabelCurrentEmailAddress": "Current email address", - "LabelCurrentEmailAddressHelp": "The current email address to which your new key was sent.", - "HeaderForgotKey": "Forgot Key", - "LabelEmailAddress": "Email address", - "LabelSupporterEmailAddress": "The email address that was used to purchase the key.", - "ButtonRetrieveKey": "Retrieve Key", - "LabelSupporterKey": "Supporter Key (paste from email)", - "LabelSupporterKeyHelp": "Enter your supporter key to start enjoying additional benefits the community has developed for Emby.", - "MessageInvalidKey": "Supporter key is missing or invalid.", - "ErrorMessageInvalidKey": "In order for any premium content to be registered, you must also be an Emby Supporter. Please donate and support the continued development of the core product. Thank you.", - "HeaderDisplaySettings": "Display Settings", - "TabPlayTo": "Play To", - "LabelEnableDlnaServer": "Enable Dlna server", - "LabelEnableDlnaServerHelp": "Allows UPnP devices on your network to browse and play Emby content.", - "LabelEnableBlastAliveMessages": "Blast alive messages", - "LabelEnableBlastAliveMessagesHelp": "Enable this if the server is not detected reliably by other UPnP devices on your network.", - "LabelBlastMessageInterval": "Alive message interval (seconds)", - "LabelBlastMessageIntervalHelp": "Determines the duration in seconds between server alive messages.", - "LabelDefaultUser": "Default user:", - "LabelDefaultUserHelp": "Determines which user library should be displayed on connected devices. This can be overridden for each device using profiles.", + "PleaseUpdateManually": "Luk venligst serveren og opdater manuelt.", + "NewServerVersionAvailable": "En ny version af Emby serveren er tilg\u00e6ngelig!", + "ServerUpToDate": "Emby serveren er opdateret", + "LabelComponentsUpdated": "F\u00f8lgende komponenter er blevet installeret eller opdateret:", + "MessagePleaseRestartServerToFinishUpdating": "Genstart venligt serveret for at afslutte opdateringen.", + "LabelDownMixAudioScale": "For\u00f8g lydstyrke ved nedmiksning:", + "LabelDownMixAudioScaleHelp": "For\u00f8g lydstyrken n\u00e5r der nedmikses. S\u00e6t v\u00e6rdien til 1 for at beholde den originale lydstyrke.", + "ButtonLinkKeys": "Overf\u00f8rselsn\u00f8gle", + "LabelOldSupporterKey": "Dammel supporter n\u00f8gle", + "LabelNewSupporterKey": "Ny supporter n\u00f8gle", + "HeaderMultipleKeyLinking": "Overf\u00f8r til ny n\u00f8gle", + "MultipleKeyLinkingHelp": "Hvis du f\u00e5r en ny supporter n\u00f8gle, brug s\u00e5 denne formular til af overf\u00f8re den gamle n\u00f8gles registreringer til den nye.", + "LabelCurrentEmailAddress": "Nuv\u00e6rende e-mail adresse", + "LabelCurrentEmailAddressHelp": "Den e-mail adresse, den nye n\u00f8gle er sendt til.", + "HeaderForgotKey": "Glemt n\u00f8gle", + "LabelEmailAddress": "E-mail adresse", + "LabelSupporterEmailAddress": "Den e-mailadresse , du brugte da du k\u00f8bte n\u00f8glen.", + "ButtonRetrieveKey": "Hent n\u00f8gle", + "LabelSupporterKey": "Supporter n\u00f8gle (Kopier fra e-mail og inds\u00e6t)", + "LabelSupporterKeyHelp": "Inds\u00e6t din supporter n\u00f8gle for at f\u00e5 yderligere fordele, f\u00e6llesskabet har udviklet til Emby.", + "MessageInvalidKey": "Supporter n\u00f8glen manler eller er ugyldig.", + "ErrorMessageInvalidKey": "For at registrere premium indhold skal du v\u00e6re en Emby Supporter. Doner venligst for at st\u00f8tte den l\u00f8bende udvikling af vores kerneprodukt. Mange tak.", + "HeaderDisplaySettings": "Indstillinger for visning", + "TabPlayTo": "Afspil til", + "LabelEnableDlnaServer": "Aktiver DNLA server", + "LabelEnableDlnaServerHelp": "Tillader UPnP enheder i dit netv\u00e6rk at gennemse og afspille Embys indhold.", + "LabelEnableBlastAliveMessages": "Masseudsend 'i live' beskeder", + "LabelEnableBlastAliveMessagesHelp": "Aktiverd dette hvis UPnP enheder har problemer med forbindelsen til serveren.", + "LabelBlastMessageInterval": "Interval mellem 'i live' beskeder (sekunder)", + "LabelBlastMessageIntervalHelp": "Angiver intervallet i sekunder mellem serverens 'i live' beskeder.", + "LabelDefaultUser": "Standardbruger:", + "LabelDefaultUserHelp": "Bestemmer hvilken brugers bibliotek der bliver vist p\u00e5 tilkoblede enheder. Dette kan \u00e6ndres ved at bruge profiler.", "TitleDlna": "DLNA", - "TitleChannels": "Channels", - "HeaderServerSettings": "Server Settings", - "LabelWeatherDisplayLocation": "Weather display location:", - "LabelWeatherDisplayLocationHelp": "US zip code \/ City, State, Country \/ City, Country", - "LabelWeatherDisplayUnit": "Weather display unit:", + "TitleChannels": "Kanaler", + "HeaderServerSettings": "Serverindstillinger", + "LabelWeatherDisplayLocation": "Lokation for vejrvisning:", + "LabelWeatherDisplayLocationHelp": "USA postnummer \/ by, stat, land \/ by, land", + "LabelWeatherDisplayUnit": "Temperaturenhed", "OptionCelsius": "Celsius", "OptionFahrenheit": "Fahrenheit", - "HeaderRequireManualLogin": "Require manual username entry for:", - "HeaderRequireManualLoginHelp": "When disabled clients may present a login screen with a visual selection of users.", - "OptionOtherApps": "Other apps", + "HeaderRequireManualLogin": "Kr\u00e6v manuel indtastning af brugernavn for:", + "HeaderRequireManualLoginHelp": "N\u00e5r dette ikke bruges, kan klienter vise en loginsk\u00e6rm med billeder af brugerne.", + "OptionOtherApps": "Andre apps", "OptionMobileApps": "Mobile apps", - "HeaderNotificationList": "Click on a notification to configure it's sending options.", - "NotificationOptionApplicationUpdateAvailable": "Application update available", - "NotificationOptionApplicationUpdateInstalled": "Application update installed", - "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionPluginInstalled": "Plugin installed", - "NotificationOptionPluginUninstalled": "Plugin uninstalled", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionInstallationFailed": "Installation failure", - "NotificationOptionNewLibraryContent": "New content added", + "HeaderNotificationList": "Klik p\u00e5 en underretning for at indstille hvordan den sender.", + "NotificationOptionApplicationUpdateAvailable": "Programopdatering tilg\u00e6ngelig", + "NotificationOptionApplicationUpdateInstalled": "Programopdatering installeret", + "NotificationOptionPluginUpdateInstalled": "Opdatering til plugin installeret", + "NotificationOptionPluginInstalled": "Plugin installeret", + "NotificationOptionPluginUninstalled": "Plugin afinstalleret", + "NotificationOptionVideoPlayback": "Videoafspilning startet", + "NotificationOptionAudioPlayback": "Lydafspilning startet", + "NotificationOptionGamePlayback": "Spilafspilning startet", + "NotificationOptionVideoPlaybackStopped": "Videoafspilning stoppet", + "NotificationOptionAudioPlaybackStopped": "Lydafspilning stoppet", + "NotificationOptionGamePlaybackStopped": "Spilafspilning stoppet", + "NotificationOptionTaskFailed": "Fejl i planlagt opgave", + "NotificationOptionInstallationFailed": "Fejl ved installation", + "NotificationOptionNewLibraryContent": "Nyt indhold tilf\u00f8jet", "NotificationOptionNewLibraryContentMultiple": "Nyt indhold tilf\u00f8jet (flere)", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionUserLockedOut": "User locked out", - "HeaderSendNotificationHelp": "By default, notifications are delivered to your dashboard inbox. Browse the plugin catalog to install additional notification options.", - "NotificationOptionServerRestartRequired": "Server restart required", - "LabelNotificationEnabled": "Enable this notification", - "LabelMonitorUsers": "Monitor activity from:", - "LabelSendNotificationToUsers": "Send the notification to:", - "LabelUseNotificationServices": "Use the following services:", - "CategoryUser": "User", + "NotificationOptionCameraImageUploaded": "Kamerabillede tilf\u00f8jet", + "NotificationOptionUserLockedOut": "Bruger l\u00e5st", + "HeaderSendNotificationHelp": "Som standard sendes underretninger til indbakken p\u00e5 betjeningspanelet. Kig i plugin-kataloget for at f\u00e5 flere muligheder for underretninger.", + "NotificationOptionServerRestartRequired": "Genstart af serveren p\u00e5kr\u00e6vet", + "LabelNotificationEnabled": "Aktiver denne underretning", + "LabelMonitorUsers": "Overv\u00e5g aktivitet fra:", + "LabelSendNotificationToUsers": "Send underretning til:", + "LabelUseNotificationServices": "Brug f\u00f8lgende tjenester:", + "CategoryUser": "Bruger", "CategorySystem": "System", "CategoryApplication": "Program", "CategoryPlugin": "Plugin", - "LabelMessageTitle": "Message title:", - "LabelAvailableTokens": "Available tokens:", - "AdditionalNotificationServices": "Browse the plugin catalog to install additional notification services.", - "OptionAllUsers": "All users", - "OptionAdminUsers": "Administrators", - "OptionCustomUsers": "Custom", + "LabelMessageTitle": "Titel p\u00e5 besked", + "LabelAvailableTokens": "Tilg\u00e6ngelige tokens:", + "AdditionalNotificationServices": "Kig i plugin-kataloget for at f\u00e5 yderligere uderretnings-tjenester", + "OptionAllUsers": "Alle brugere", + "OptionAdminUsers": "Administratore", + "OptionCustomUsers": "Brugerdefineret", "ButtonArrowUp": "Op", "ButtonArrowDown": "Ned", "ButtonArrowLeft": "Venstre", "ButtonArrowRight": "H\u00f8jre", "ButtonBack": "Tilbage", "ButtonInfo": "Info", - "ButtonOsd": "On screen display", + "ButtonOsd": "Vis p\u00e5 sk\u00e6rmen", "ButtonPageUp": "Side op", "ButtonPageDown": "Side ned", "PageAbbreviation": "PG", "ButtonHome": "Hjem", "ButtonSearch": "S\u00f8g", "ButtonSettings": "Indstillinger", - "ButtonTakeScreenshot": "Capture Screenshot", + "ButtonTakeScreenshot": "Gem sk\u00e6rmbillede", "ButtonLetterUp": "Bogstav op", "ButtonLetterDown": "Bogstav ned", "PageButtonAbbreviation": "PG", "LetterButtonAbbreviation": "A", - "TabNowPlaying": "Spiler nu", + "TabNowPlaying": "Spiller nu", "TabNavigation": "Navigation", - "TabControls": "Controls", - "ButtonFullscreen": "Toggle fullscreen", + "TabControls": "Kontroller", + "ButtonFullscreen": "Skift fuldsk\u00e6rm", "ButtonScenes": "Scener", "ButtonSubtitles": "Undertekster", - "ButtonAudioTracks": "Audio tracks", - "ButtonPreviousTrack": "Previous track", - "ButtonNextTrack": "Next track", + "ButtonAudioTracks": "Lydspor", + "ButtonPreviousTrack": "Forrige spor", + "ButtonNextTrack": "N\u00e6ste spor", "ButtonStop": "Stop", "ButtonPause": "Pause", - "ButtonNext": "Next", - "ButtonPrevious": "Previous", - "LabelGroupMoviesIntoCollections": "Group movies into collections", - "LabelGroupMoviesIntoCollectionsHelp": "When displaying movie lists, movies belonging to a collection will be displayed as one grouped item.", + "ButtonNext": "N\u00e6ste", + "ButtonPrevious": "Forrige", + "LabelGroupMoviesIntoCollections": "Grupper film i samlinger", + "LabelGroupMoviesIntoCollectionsHelp": "Film i samlinger vil blive vist som en samlet enhed i filmlister.", "NotificationOptionPluginError": "Plugin fejl", - "ButtonVolumeUp": "Volume up", - "ButtonVolumeDown": "Volume down", - "ButtonMute": "Mute", - "HeaderLatestMedia": "Latest Media", - "OptionSpecialFeatures": "Special Features", - "HeaderCollections": "Collections", - "LabelProfileCodecsHelp": "Separated by comma. This can be left empty to apply to all codecs.", - "LabelProfileContainersHelp": "Separated by comma. This can be left empty to apply to all containers.", - "HeaderResponseProfile": "Response Profile", + "ButtonVolumeUp": "Volume +", + "ButtonVolumeDown": "Volume -", + "ButtonMute": "Lyd fra", + "HeaderLatestMedia": "Seneste medier", + "OptionSpecialFeatures": "Specielle egenskaber", + "HeaderCollections": "Samlinger", + "LabelProfileCodecsHelp": "Adskil med komma. Kan efterlades tom for at g\u00e6lde for alle codecs.", + "LabelProfileContainersHelp": "Adskil med komma. Kan efterlades tom for at g\u00e6lde for alle containere.", + "HeaderResponseProfile": "Svarprofil", "LabelType": "Type:", - "LabelPersonRole": "Role:", - "LabelPersonRoleHelp": "Role is generally only applicable to actors.", + "LabelPersonRole": "Rolle:", + "LabelPersonRoleHelp": "Rolle g\u00e6lder generelt kun for skuespillere.", "LabelProfileContainer": "Container:", "LabelProfileVideoCodecs": "Video codecs:", "LabelProfileAudioCodecs": "Audio codecs:", "LabelProfileCodecs": "Codecs:", - "HeaderDirectPlayProfile": "Direct Play Profile", - "HeaderTranscodingProfile": "Transcoding Profile", - "HeaderCodecProfile": "Codec Profile", - "HeaderCodecProfileHelp": "Codec profiles indicate the limitations of a device when playing specific codecs. If a limitation applies then the media will be transcoded, even if the codec is configured for direct play.", - "HeaderContainerProfile": "Container Profile", - "HeaderContainerProfileHelp": "Container profiles indicate the limitations of a device when playing specific formats. If a limitation applies then the media will be transcoded, even if the format is configured for direct play.", + "HeaderDirectPlayProfile": "Profil for direkte afspilning", + "HeaderTranscodingProfile": "Transkodningsprofil", + "HeaderCodecProfile": "Codec profil", + "HeaderCodecProfileHelp": "Codec profiler angiver begr\u00e6nsninger p\u00e5 en enhed for et specifikt codec. Hvis en begr\u00e6nsning n\u00e5s, vil indholdet blive transkodet, selv om codec'et er angivet til direkte afspilning.", + "HeaderContainerProfile": "Container profil", + "HeaderContainerProfileHelp": "Container profiler angiver begr\u00e6nsninger p\u00e5 en enhed for et specifikt codec. Hvis en begr\u00e6nsning n\u00e5s, vil indholdet blive transkodet, selv om formatet er angivet til direkte afspilning.", "OptionProfileVideo": "Video", "OptionProfileAudio": "Lyd", "OptionProfileVideoAudio": "Video lyd", "OptionProfilePhoto": "Foto", - "LabelUserLibrary": "bruger bibliotek", - "LabelUserLibraryHelp": "Select which user library to display to the device. Leave empty to inherit the default setting.", - "OptionPlainStorageFolders": "Display all folders as plain storage folders", - "OptionPlainStorageFoldersHelp": "If enabled, all folders are represented in DIDL as \"object.container.storageFolder\" instead of a more specific type, such as \"object.container.person.musicArtist\".", - "OptionPlainVideoItems": "Display all videos as plain video items", - "OptionPlainVideoItemsHelp": "If enabled, all videos are represented in DIDL as \"object.item.videoItem\" instead of a more specific type, such as \"object.item.videoItem.movie\".", - "LabelSupportedMediaTypes": "Supported Media Types:", - "TabIdentification": "Identification", - "HeaderIdentification": "Identification", - "TabDirectPlay": "Direct Play", - "TabContainers": "Containers", + "LabelUserLibrary": "Brugerbibliotek", + "LabelUserLibraryHelp": "V\u00e6lg hvilket brugerbibliotek der skal vises p\u00e5 enheden. efterlad tom for at arve standardindstillingen.", + "OptionPlainStorageFolders": "Vis alle mapper som standardmapper", + "OptionPlainStorageFoldersHelp": "N\u00e5r dette er aktiveret, bliver alle mapper vist i DIDL som \"object.container.storageFolder\" i stedet for mere specifikke typer, som f. eks. \"object.container.person.musicArtist\".", + "OptionPlainVideoItems": "Vis alle videoer som standardvideo", + "OptionPlainVideoItemsHelp": "N\u00e5r dette er aktiveret, bliver alle videoer vist i DIDL som \"object.item.videoItem\" i stedet for mere specifikke typer, som f. eks. \"object.item.videoItem.movie\".", + "LabelSupportedMediaTypes": "Underst\u00f8ttede medieformater", + "TabIdentification": "Identifikation", + "HeaderIdentification": "Identifikation", + "TabDirectPlay": "Direkte afspilning", + "TabContainers": "Containere", "TabCodecs": "Codecs", - "TabResponses": "Responses", - "HeaderProfileInformation": "Profile Information", - "LabelEmbedAlbumArtDidl": "Embed album art in Didl", - "LabelEmbedAlbumArtDidlHelp": "Some devices prefer this method for obtaining album art. Others may fail to play with this option enabled.", + "TabResponses": "Svar", + "HeaderProfileInformation": "Profilinformation", + "LabelEmbedAlbumArtDidl": "Inds\u00e6t album art i DIDL", + "LabelEmbedAlbumArtDidlHelp": "Nogle en\u00b4heder foretr\u00e6kker denne metode til overf\u00f8rsel af album art. Andre kan fejle n\u00e5r dette er aktiveret.", "LabelAlbumArtPN": "Album art PN:", - "LabelAlbumArtHelp": "PN used for album art, within the dlna:profileID attribute on upnp:albumArtURI. Some clients require a specific value, regardless of the size of the image.", - "LabelAlbumArtMaxWidth": "Album art max width:", - "LabelAlbumArtMaxWidthHelp": "Max resolution of album art exposed via upnp:albumArtURI.", - "LabelAlbumArtMaxHeight": "Album art max height:", - "LabelAlbumArtMaxHeightHelp": "Max resolution of album art exposed via upnp:albumArtURI.", - "LabelIconMaxWidth": "Icon max width:", - "LabelIconMaxWidthHelp": "Max resolution of icons exposed via upnp:icon.", - "LabelIconMaxHeight": "Icon max height:", - "LabelIconMaxHeightHelp": "Max resolution of icons exposed via upnp:icon.", - "LabelIdentificationFieldHelp": "A case-insensitive substring or regex expression.", - "HeaderProfileServerSettingsHelp": "These values control how Emby Server will present itself to the device.", + "LabelAlbumArtHelp": "PN til album art, brugt i dlna:profileID attributten upnp:albumArtURI. Nogle klienter kr\u00e6ver en specifik v\u00e6rdi, uanset st\u00f8rrelsen p\u00e5 billedet.", + "LabelAlbumArtMaxWidth": "Album art max. bredde:", + "LabelAlbumArtMaxWidthHelp": "Maksimumopl\u00f8sningen p\u00e5 album art der bliver vist med upnp:albumArtURI", + "LabelAlbumArtMaxHeight": "Album art max. h\u00f8jde:", + "LabelAlbumArtMaxHeightHelp": "Maksimumopl\u00f8sningen p\u00e5 album art der bliver vist med upnp:albumArtURI", + "LabelIconMaxWidth": "Max bredde p\u00e5 ikoner:", + "LabelIconMaxWidthHelp": "Maksimumopl\u00f8sningen p\u00e5 ikoner der bliver vist med upnp:icon", + "LabelIconMaxHeight": "Max h\u00f8jde p\u00e5 ikoner:", + "LabelIconMaxHeightHelp": "Maksimumopl\u00f8sningen p\u00e5 ikoner der bliver vist med upnp:icon", + "LabelIdentificationFieldHelp": "En case-insensitive substring eller regex ekspression.", + "HeaderProfileServerSettingsHelp": "Disse v\u00e6rdier kontrollerer hvordan Emby pr\u00e6senterer sig til enheden.", "LabelMaxBitrate": "Max bitrate:", - "LabelMaxBitrateHelp": "Specify a max bitrate in bandwidth constrained environments, or if the device imposes it's own limit.", + "LabelMaxBitrateHelp": "Angiv en maksimal bitrate i omr\u00e5der med begr\u00e6nset b\u00e5ndbredde, eller hvis enheden selv har begr\u00e6nsninger.", "LabelMaxStreamingBitrate": "Max streaming bitrate:", - "LabelMaxStreamingBitrateHelp": "Specify a max bitrate when streaming.", + "LabelMaxStreamingBitrateHelp": "Angiv en maksimal bitrate til streaming.", "LabelMaxChromecastBitrate": "Max Chromecast bitrate:", "LabelMaxStaticBitrate": "Max sync bitrate:", - "LabelMaxStaticBitrateHelp": "Specify a max bitrate when syncing content at high quality.", - "LabelMusicStaticBitrate": "Music sync bitrate:", - "LabelMusicStaticBitrateHelp": "Specify a max bitrate when syncing music", - "LabelMusicStreamingTranscodingBitrate": "Music transcoding bitrate:", - "LabelMusicStreamingTranscodingBitrateHelp": "Specify a max bitrate when streaming music", - "OptionIgnoreTranscodeByteRangeRequests": "Ignore transcode byte range requests", - "OptionIgnoreTranscodeByteRangeRequestsHelp": "If enabled, these requests will be honored but will ignore the byte range header.", + "LabelMaxStaticBitrateHelp": "Angiv en maksimal bitrate n\u00e5r der synkroniseres indhold med h\u00f8j kvalitet.", + "LabelMusicStaticBitrate": "Musik sync bitrate:", + "LabelMusicStaticBitrateHelp": "Angiv en maksimal bitrate n\u00e5r der synkroniseres musik.", + "LabelMusicStreamingTranscodingBitrate": "Bitrate for musiktranskodning", + "LabelMusicStreamingTranscodingBitrateHelp": "Angiv en maksimal bitrate n\u00e5r der streames musik.", + "OptionIgnoreTranscodeByteRangeRequests": "Ignorer foresp\u00f8rgsler vedr\u00f8rende transcode byte interval", + "OptionIgnoreTranscodeByteRangeRequestsHelp": "Hvis aktiveret vil disse foresp\u00f8rgsler blive efterkommet, men byte range headeren ignoreret.", "LabelFriendlyName": "System venligt navn", "LabelManufacturer": "Producent", "LabelManufacturerUrl": "Producent url", - "LabelModelName": "Model navn", - "LabelModelNumber": "Model nummer", - "LabelModelDescription": "Model beskrivelse", + "LabelModelName": "Modelnavn", + "LabelModelNumber": "Modelnummer", + "LabelModelDescription": "Modelbeskrivelse", "LabelModelUrl": "Model url", - "LabelSerialNumber": "Serial number", - "LabelDeviceDescription": "Device description", - "HeaderIdentificationCriteriaHelp": "Enter at least one identification criteria.", - "HeaderDirectPlayProfileHelp": "Add direct play profiles to indicate which formats the device can handle natively.", - "HeaderTranscodingProfileHelp": "Add transcoding profiles to indicate which formats should be used when transcoding is required.", - "HeaderResponseProfileHelp": "Response profiles provide a way to customize information sent to the device when playing certain kinds of media.", + "LabelSerialNumber": "Serienummer", + "LabelDeviceDescription": "Beskrivelse af enhed", + "HeaderIdentificationCriteriaHelp": "Indtast mindst et indetifikationskriterie.", + "HeaderDirectPlayProfileHelp": "Tilf\u00f8j profiler for direkte afspilning for at angive hvilke formater enheden selv kan h\u00e5ndtere.", + "HeaderTranscodingProfileHelp": "Tilf\u00f8j profiler for transkodning foe at angive hvilke formater der skal anvendes n\u00e5r transkodning er n\u00f8dvendig.", + "HeaderResponseProfileHelp": "Svarprofiler giver en metode til at tilpasse hvilken information der sendes til enheden n\u00e5r der afspilles visse typer medier.", "LabelXDlnaCap": "X-Dlna cap:", - "LabelXDlnaCapHelp": "Determines the content of the X_DLNACAP element in the urn:schemas-dlna-org:device-1-0 namespace.", + "LabelXDlnaCapHelp": "Angiver indholdet i X_DLNACAP elementet i urn:schemas-dlna-org:device-1-0", "LabelXDlnaDoc": "X-Dlna doc:", - "LabelXDlnaDocHelp": "Determines the content of the X_DLNADOC element in the urn:schemas-dlna-org:device-1-0 namespace.", + "LabelXDlnaDocHelp": "Angiver indholdet i X_DLNADOC elementet i urn:schemas-dlna-org:device-1-0", "LabelSonyAggregationFlags": "Sony aggregation flags:", - "LabelSonyAggregationFlagsHelp": "Determines the content of the aggregationFlags element in the urn:schemas-sonycom:av namespace.", + "LabelSonyAggregationFlagsHelp": "Angiver indholdet i aggregationFlags elementet i urn:schemas-sonycom:av", "LabelTranscodingContainer": "Container:", "LabelTranscodingVideoCodec": "Video codec:", - "LabelTranscodingVideoProfile": "Video profile:", + "LabelTranscodingVideoProfile": "Videoprofil:", "LabelTranscodingAudioCodec": "Audio codec:", - "OptionEnableM2tsMode": "Enable M2ts mode", - "OptionEnableM2tsModeHelp": "Enable m2ts mode when encoding to mpegts.", - "OptionEstimateContentLength": "Estimate content length when transcoding", - "OptionReportByteRangeSeekingWhenTranscoding": "Report that the server supports byte seeking when transcoding", - "OptionReportByteRangeSeekingWhenTranscodingHelp": "This is required for some devices that don't time seek very well.", - "HeaderSubtitleDownloadingHelp": "When Emby scans your video files it can search for missing subtitles, and download them using a subtitle provider such as OpenSubtitles.org.", - "HeaderDownloadSubtitlesFor": "Download subtitles for:", - "MessageNoChapterProviders": "Install a chapter provider plugin such as ChapterDb to enable additional chapter options.", - "LabelSkipIfGraphicalSubsPresent": "Spring over hvis videioen allerede indeholder grafiske undertekster", - "LabelSkipIfGraphicalSubsPresentHelp": "Keeping text versions of subtitles will result in more efficient delivery and decrease the likelihood of video transcoding.", + "OptionEnableM2tsMode": "Aktiver M2ts tilstand", + "OptionEnableM2tsModeHelp": "Aktiver M2ts tilstand n\u00e5r der omkodes til mpegts.", + "OptionEstimateContentLength": "Estimer l\u00e6ngden af indholdet n\u00e5r der transkodes", + "OptionReportByteRangeSeekingWhenTranscoding": "Angiv at serveren underst\u00f8tter bytes \u00f8gning nrde\u00e5 r transkodes", + "OptionReportByteRangeSeekingWhenTranscodingHelp": "Dette er kr\u00e6vet for nogle enheder der ikke er s\u00e6rligt gode til tidss\u00f8gning.", + "HeaderSubtitleDownloadingHelp": "N\u00e5r Emby skanner dine videofiler, kan den s\u00f8ge efter manglende undertekster, og hente dem fra en undertekstudbyder, som f. eks. OpenSubtitles.org.", + "HeaderDownloadSubtitlesFor": "Hent undertekster til:", + "MessageNoChapterProviders": "Installer et kapiteludbyder-plugin, som f. ekst. ChapterDb, for at f\u00e5 yderligere muligheder med kapitler.", + "LabelSkipIfGraphicalSubsPresent": "Spring over hvis videoen allerede indeholder grafiske undertekster", + "LabelSkipIfGraphicalSubsPresentHelp": "Ved at bruger tekstbaserede undertekster kan du f\u00e5 en mere effektive levering og neds\u00e6tte sandsynligheden for transkodning.", "TabSubtitles": "Undertekster", - "TabChapters": "Chapters", - "HeaderDownloadChaptersFor": "Download chapter names for:", + "TabChapters": "Kapitler", + "HeaderDownloadChaptersFor": "Hent kapitelnavne til:", "LabelOpenSubtitlesUsername": "Open Subtitles brugernavn:", - "LabelOpenSubtitlesPassword": "Open Subtitles kode:", - "HeaderChapterDownloadingHelp": "When Emby scans your video files it can download friendly chapter names from the internet using chapter plugins such as ChapterDb.", - "LabelPlayDefaultAudioTrack": "Play default audio track regardless of language", - "LabelSubtitlePlaybackMode": "Subtitle mode:", - "LabelDownloadLanguages": "Download languages:", + "LabelOpenSubtitlesPassword": "Open Subtitles adgangskode:", + "HeaderChapterDownloadingHelp": "N\u00e5r Emby skanner dine videofiler, kan den hente kapitelnavne fra internettet med kapitel-plugins, som f. eks. ChapterDb.", + "LabelPlayDefaultAudioTrack": "Afspil standardlydsporet uanset sproget", + "LabelSubtitlePlaybackMode": "Underteksttilstand:", + "LabelDownloadLanguages": "Hent sprog:", "ButtonRegister": "Register", - "LabelSkipIfAudioTrackPresent": "Skip if the default audio track matches the download language", - "LabelSkipIfAudioTrackPresentHelp": "Uncheck dette for at sikre at alle videoer har undertekster, uanset hvilket sprog lydsporet anvender.", + "LabelSkipIfAudioTrackPresent": "Undlad hvis standardlydsporet er det samme sprog", + "LabelSkipIfAudioTrackPresentHelp": "Angiv ikke dette for at sikre at alle videoer har undertekster, uanset hvilket sprog lydsporet anvender.", "HeaderSendMessage": "Send besked", "ButtonSend": "Send", - "LabelMessageText": "Tekst besked", - "MessageNoAvailablePlugins": "No available plugins.", - "LabelDisplayPluginsFor": "Display plugins for:", + "LabelMessageText": "Beskedtekst:", + "MessageNoAvailablePlugins": "Ingen tilg\u00e6ngelige plugins.", + "LabelDisplayPluginsFor": "Vis plugins til:", "PluginTabAppClassic": "Emby Classic", "PluginTabAppTheater": "Emby Theater", - "LabelEpisodeNamePlain": "Episode name", - "LabelSeriesNamePlain": "Series name", - "ValueSeriesNamePeriod": "Series.name", - "ValueSeriesNameUnderscore": "Series_name", - "ValueEpisodeNamePeriod": "Episode.name", - "ValueEpisodeNameUnderscore": "Episode_name", - "LabelSeasonNumberPlain": "Season number", - "LabelEpisodeNumberPlain": "Episode number", - "LabelEndingEpisodeNumberPlain": "Ending episode number", - "HeaderTypeText": "Enter Text", - "LabelTypeText": "Text", - "HeaderSearchForSubtitles": "Search for Subtitles", - "MessageNoSubtitleSearchResultsFound": "No search results founds.", - "TabDisplay": "Display", - "TabLanguages": "Languages", - "TabAppSettings": "App Settings", - "LabelEnableThemeSongs": "Enable theme songs", - "LabelEnableBackdrops": "Enable backdrops", - "LabelEnableThemeSongsHelp": "If enabled, theme songs will be played in the background while browsing the library.", - "LabelEnableBackdropsHelp": "If enabled, backdrops will be displayed in the background of some pages while browsing the library.", - "HeaderHomePage": "Home Page", - "HeaderSettingsForThisDevice": "Settings for This Device", + "LabelEpisodeNamePlain": "Episodenavn", + "LabelSeriesNamePlain": "Serienavn", + "ValueSeriesNamePeriod": "Serie.navn", + "ValueSeriesNameUnderscore": "Serie_navn", + "ValueEpisodeNamePeriod": "Episode.navn", + "ValueEpisodeNameUnderscore": "Episode_navn", + "LabelSeasonNumberPlain": "S\u00e6sonnummer", + "LabelEpisodeNumberPlain": "Episodenummer", + "LabelEndingEpisodeNumberPlain": "Nummer p\u00e5 sidste episode", + "HeaderTypeText": "Indtast tekst", + "LabelTypeText": "Tekst", + "HeaderSearchForSubtitles": "S\u00f8g efter undertekster", + "ButtonMore": "More", + "MessageNoSubtitleSearchResultsFound": "Ingenting fundet.", + "TabDisplay": "Visning", + "TabLanguages": "Sprog", + "TabAppSettings": "App-indstillinger", + "LabelEnableThemeSongs": "Aktiver temasange", + "LabelEnableBackdrops": "Aktiver backdrops", + "LabelEnableThemeSongsHelp": "N\u00e5r dette er aktiveret vil der blive afspillet temasange mens man kigger i biblioteket.", + "LabelEnableBackdropsHelp": "N\u00e5r dette er aktiveret vil der blive vist backdrops i baggrunden af nogle sider n\u00e5r man kigger i biblioteket.", + "HeaderHomePage": "Hjemmeside", + "HeaderSettingsForThisDevice": "Indstillinger for denne enhed", "OptionAuto": "Auto", - "OptionYes": "Yes", - "OptionNo": "No", - "HeaderOptions": "Options", - "HeaderIdentificationResult": "Identification Result", - "LabelHomePageSection1": "Home page section 1:", - "LabelHomePageSection2": "Home page section 2:", - "LabelHomePageSection3": "Home page section 3:", - "LabelHomePageSection4": "Home page section 4:", - "OptionMyMediaButtons": "My media (buttons)", - "OptionMyMedia": "My media", - "OptionMyMediaSmall": "My media (small)", - "OptionResumablemedia": "Resume", - "OptionLatestMedia": "Latest media", - "OptionLatestChannelMedia": "Latest channel items", - "HeaderLatestChannelItems": "Latest Channel Items", - "OptionNone": "None", + "OptionYes": "Ja", + "OptionNo": "Nej", + "HeaderOptions": "Indstillinger", + "HeaderIdentificationResult": "Identifikationsresultat", + "LabelHomePageSection1": "Hjemmeside sektion 1", + "LabelHomePageSection2": "Hjemmeside sektion 2", + "LabelHomePageSection3": "Hjemmeside sektion 3", + "LabelHomePageSection4": "Hjemmeside sektion 4", + "OptionMyMediaButtons": "Mine medier (knapper)", + "OptionMyMedia": "Mine medier", + "OptionMyMediaSmall": "Mine medier (lille)", + "OptionResumablemedia": "Forts\u00e6t", + "OptionLatestMedia": "Seneste medier", + "OptionLatestChannelMedia": "Seneste kanalenheder", + "HeaderLatestChannelItems": "Seneste kanalenheder", + "OptionNone": "Ingen", "HeaderLiveTv": "Live TV", - "HeaderReports": "Reports", + "HeaderReports": "Rapporter", "HeaderMetadataManager": "Metadata Manager", - "HeaderPreferences": "Preferences", - "MessageLoadingChannels": "Loading channel content...", - "MessageLoadingContent": "Loading content...", - "ButtonMarkRead": "Mark Read", - "OptionDefaultSort": "Default", - "OptionCommunityMostWatchedSort": "Most Watched", - "TabNextUp": "Next Up", - "PlaceholderUsername": "Username", - "HeaderBecomeProjectSupporter": "Become an Emby Supporter", - "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", - "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", - "MessageNoPlaylistsAvailable": "Playlists allow you to create lists of content to play consecutively at a time. To add items to playlists, right click or tap and hold, then select Add to Playlist.", - "MessageNoPlaylistItemsAvailable": "This playlist is currently empty.", - "ButtonDismiss": "Dismiss", - "ButtonEditOtherUserPreferences": "Edit this user's profile, image and personal preferences.", - "LabelChannelStreamQuality": "Preferred internet stream quality:", - "LabelChannelStreamQualityHelp": "In a low bandwidth environment, limiting quality can help ensure a smooth streaming experience.", - "OptionBestAvailableStreamQuality": "Best available", - "LabelEnableChannelContentDownloadingFor": "Enable channel content downloading for:", - "LabelEnableChannelContentDownloadingForHelp": "Some channels support downloading content prior to viewing. Enable this in low bandwidth enviornments to download channel content during off hours. Content is downloaded as part of the channel download scheduled task.", - "LabelChannelDownloadPath": "Channel content download path:", - "LabelChannelDownloadPathHelp": "Specify a custom download path if desired. Leave empty to download to an internal program data folder.", - "LabelChannelDownloadAge": "Delete content after: (days)", - "LabelChannelDownloadAgeHelp": "Downloaded content older than this will be deleted. It will remain playable via internet streaming.", - "ChannelSettingsFormHelp": "Install channels such as Trailers and Vimeo in the plugin catalog.", - "ButtonOptions": "Options", - "ViewTypePlaylists": "Playlists", - "ViewTypeMovies": "Movies", + "HeaderSettings": "Indstillinger", + "MessageLoadingChannels": "Henter kanalindhold...", + "MessageLoadingContent": "Henter indhold...", + "ButtonMarkRead": "Marker som l\u00e6st", + "OptionDefaultSort": "Standard", + "OptionCommunityMostWatchedSort": "Mest sete", + "TabNextUp": "N\u00e6ste", + "PlaceholderUsername": "Brugernavn", + "HeaderBecomeProjectSupporter": "Bliv en Emby supporter", + "MessageNoMovieSuggestionsAvailable": "Ingen filmforslag er tilg\u00e6ngelige. Begynd at se og vurder dine film, og kom tilbage for at se dine anbefalinger.", + "MessageNoCollectionsAvailable": "Samlinger tillader dig at lave personlige grupperinger affi lm, serier, albums, b\u00f8ger og spil. Klik p\u00e5 + knappen for at starte med at lave samlinger.", + "MessageNoPlaylistsAvailable": "Afspilningslister lader dig lave lister af indhold der kan afspilles lige efter hinanden. For at tilf\u00f8je indhold til afspilningslisten, skal du h\u00f8jreklikke, eller trykke og holde, og derefter v\u00e6lge Tilf\u00f8j til afspilningsliste.", + "MessageNoPlaylistItemsAvailable": "Denne afspilningsliste er tom.", + "ButtonDismiss": "Afvis", + "ButtonEditOtherUserPreferences": "Rediger denne brugers profil, billede og personlige indstillinger.", + "LabelChannelStreamQuality": "Foretrukken internet stream kvalitet:", + "LabelChannelStreamQualityHelp": "I omr\u00e5der med lav b\u00e5ndbredde kan begr\u00e6nsning af kvaliteten sikre en flydende streamingoplevelse.", + "OptionBestAvailableStreamQuality": "Bedst mulige", + "LabelEnableChannelContentDownloadingFor": "Aktiver kanalindhold for:", + "LabelEnableChannelContentDownloadingForHelp": "Nogle kanaler underst\u00f8tter hentning af indhold f\u00f8r afspilningen. Aktiver dette i omr\u00e5der med lav b\u00e5ndbredde for at hente kanalindholdet i perioder uden aktivitet. Indholdet hentes s\u00e5 n\u00e5r den planlagte opgave for hentning af kanaindhold k\u00f8rer.", + "LabelChannelDownloadPath": "Sti for hentning af kanalindhold:", + "LabelChannelDownloadPathHelp": "Angiv en brugerdefineret sti hvis det \u00f8nskes. Hvis den efterlades tom, bliver data hentet til en intern programdatamappe.", + "LabelChannelDownloadAge": "Slet indhold efter (dage):", + "LabelChannelDownloadAgeHelp": "Hentet indhold \u00e6ldre end dette vil blive slettet. Det kan stadig afspilles med internet streaming.", + "ChannelSettingsFormHelp": "Installer kanaler som f. eks. Trailers og Vimeo fra plugin-kataloget.", + "ButtonOptions": "Indstillinger", + "ViewTypePlaylists": "Afspilningslister", + "ViewTypeMovies": "Film", "ViewTypeTvShows": "TV", - "ViewTypeGames": "Games", - "ViewTypeMusic": "Music", - "ViewTypeMusicGenres": "Genres", - "ViewTypeMusicArtists": "Artists", - "ViewTypeBoxSets": "Collections", - "ViewTypeChannels": "Channels", + "ViewTypeGames": "Spil", + "ViewTypeMusic": "Musik", + "ViewTypeMusicGenres": "Genrer", + "ViewTypeMusicArtists": "Artister", + "ViewTypeBoxSets": "Samlinger", + "ViewTypeChannels": "Kanaler", "ViewTypeLiveTV": "Live TV", - "ViewTypeLiveTvNowPlaying": "Now Airing", - "ViewTypeLatestGames": "Latest Games", - "ViewTypeRecentlyPlayedGames": "Recently Played", - "ViewTypeGameFavorites": "Favorites", - "ViewTypeGameSystems": "Game Systems", - "ViewTypeGameGenres": "Genres", - "ViewTypeTvResume": "Resume", - "ViewTypeTvNextUp": "Next Up", - "ViewTypeTvLatest": "Latest", - "ViewTypeTvShowSeries": "Series", - "ViewTypeTvGenres": "Genres", - "ViewTypeTvFavoriteSeries": "Favorite Series", - "ViewTypeTvFavoriteEpisodes": "Favorite Episodes", - "ViewTypeMovieResume": "Resume", - "ViewTypeMovieLatest": "Latest", - "ViewTypeMovieMovies": "Movies", - "ViewTypeMovieCollections": "Collections", - "ViewTypeMovieFavorites": "Favorites", - "ViewTypeMovieGenres": "Genres", - "ViewTypeMusicLatest": "Latest", - "ViewTypeMusicPlaylists": "Playlists", + "ViewTypeLiveTvNowPlaying": "Vises nu", + "ViewTypeLatestGames": "Seneste spil", + "ViewTypeRecentlyPlayedGames": "Afspillet for nylig", + "ViewTypeGameFavorites": "Favoritter", + "ViewTypeGameSystems": "Spilsystemer", + "ViewTypeGameGenres": "Genrer", + "ViewTypeTvResume": "Forts\u00e6t", + "ViewTypeTvNextUp": "N\u00e6ste", + "ViewTypeTvLatest": "Seneste", + "ViewTypeTvShowSeries": "Serier", + "ViewTypeTvGenres": "Genrer", + "ViewTypeTvFavoriteSeries": "Favoritserier", + "ViewTypeTvFavoriteEpisodes": "Favoritepisoder", + "ViewTypeMovieResume": "Forts\u00e6t", + "ViewTypeMovieLatest": "Seneste", + "ViewTypeMovieMovies": "Film", + "ViewTypeMovieCollections": "Samlinger", + "ViewTypeMovieFavorites": "Favoritter", + "ViewTypeMovieGenres": "Genrer", + "ViewTypeMusicLatest": "Seneste", + "ViewTypeMusicPlaylists": "Afspilningslister", "ViewTypeMusicAlbums": "Albums", - "ViewTypeMusicAlbumArtists": "Album Artists", - "HeaderOtherDisplaySettings": "Display Settings", - "ViewTypeMusicSongs": "Songs", - "ViewTypeMusicFavorites": "Favorites", - "ViewTypeMusicFavoriteAlbums": "Favorite Albums", - "ViewTypeMusicFavoriteArtists": "Favorite Artists", - "ViewTypeMusicFavoriteSongs": "Favorite Songs", - "HeaderMyViews": "My Views", - "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", - "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", - "OptionDisplayAdultContent": "Display adult content", - "OptionLibraryFolders": "Media folders", - "TitleRemoteControl": "Remote Control", - "OptionLatestTvRecordings": "Latest recordings", - "LabelProtocolInfo": "Protocol info:", - "LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.", + "ViewTypeMusicAlbumArtists": "Albumartister", + "HeaderOtherDisplaySettings": "Indstillinger for visning", + "ViewTypeMusicSongs": "Sange", + "ViewTypeMusicFavorites": "Favoritter", + "ViewTypeMusicFavoriteAlbums": "Favoritalbums", + "ViewTypeMusicFavoriteArtists": "Favoritartister", + "ViewTypeMusicFavoriteSongs": "Favoritsange", + "HeaderMyViews": "Mine visninger", + "LabelSelectFolderGroups": "Grupper automatisk indhold i visninger, som f. eks. film, musik og TV:", + "LabelSelectFolderGroupsHelp": "Mapper der ikke er markeret bliver sot for sig selv i deres egen visning.", + "OptionDisplayAdultContent": "Vis voksenindhold", + "OptionLibraryFolders": "Mediemapper", + "TitleRemoteControl": "Fjernstyring", + "OptionLatestTvRecordings": "Seneste optagelser", + "LabelProtocolInfo": "Protokolinformation:", + "LabelProtocolInfoHelp": "Den v\u00e6rdi der bruges til svar p\u00e5 GetProtocolInfo-foresp\u00f8rgsler fra enheden.", "TabNfo": "Nfo", - "HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Advanced tab to configure options for your media types.", - "LabelKodiMetadataUser": "Sync user watch data to nfo's for:", - "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.", - "LabelKodiMetadataDateFormat": "Release date format:", - "LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.", - "LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files", - "LabelKodiMetadataSaveImagePathsHelp": "This is recommended if you have image file names that don't conform to Kodi guidelines.", - "LabelKodiMetadataEnablePathSubstitution": "Enable path substitution", - "LabelKodiMetadataEnablePathSubstitutionHelp": "Enables path substitution of image paths using the server's path substitution settings.", - "LabelKodiMetadataEnablePathSubstitutionHelp2": "See path substitution.", - "LabelGroupChannelsIntoViews": "Display the following channels directly within my views:", - "LabelGroupChannelsIntoViewsHelp": "If enabled, these channels will be displayed directly alongside other views. If disabled, they'll be displayed within a separate Channels view.", - "LabelDisplayCollectionsView": "Display a collections view to show movie collections", - "LabelDisplayCollectionsViewHelp": "This will create a separate view to display collections that you've created or have access to. To create a collection, right-click or tap-hold any movie and select 'Add to Collection'. ", - "LabelKodiMetadataEnableExtraThumbs": "Copy extrafanart into extrathumbs", - "LabelKodiMetadataEnableExtraThumbsHelp": "When downloading images they can be saved into both extrafanart and extrathumbs for maximum Kodi skin compatibility.", - "TabServices": "Services", + "HeaderKodiMetadataHelp": "Emby har indbygget underst\u00f8ttelse af Nfo metadatafiler.For at sl\u00e5 Nfo metadata til eller fra, skal du bruge indstillinger for medietyper p\u00e5 Avanceret-fanen.", + "LabelKodiMetadataUser": "Synkroniser brugerdata til Nfo'er for:", + "LabelKodiMetadataUserHelp": "Aktiver dette for at sikre data er ens i Emby og Nfo-filer.", + "LabelKodiMetadataDateFormat": "Format for udgivelsesdato:", + "LabelKodiMetadataDateFormatHelp": "Alle datoer i Nfo-filer vil blive l\u00e6st og skrevet med dette format.", + "LabelKodiMetadataSaveImagePaths": "Gem stier til billeder i Nfo-filer", + "LabelKodiMetadataSaveImagePathsHelp": "Dette er anbefalet hvis du har billedfiler med navne der ikke lever op til Kodis retningslinjer.", + "LabelKodiMetadataEnablePathSubstitution": "Aktiver stisubstitution", + "LabelKodiMetadataEnablePathSubstitutionHelp": "Aktiverer stisubstitution for billedstier med serverens stisubstitutionsindstillinger.", + "LabelKodiMetadataEnablePathSubstitutionHelp2": "Se stisubstitution.", + "LabelGroupChannelsIntoViews": "Vis disse kanaler direkte i mine visninger:", + "LabelGroupChannelsIntoViewsHelp": "Aktiver dette for at se disse kanaler sammen med andre visninger. Hvis det ikke er aktiveret, bliver de vist i en separat Kanaler visning.", + "LabelDisplayCollectionsView": "Vis en Samlinger visning til filmsamlinger", + "LabelDisplayCollectionsViewHelp": "Dette skaber en separat visning til samlinger du har skabt eller har adgang til. Du skaber samlinger ved at h\u00f8jreklikke, eller trykke og holde, p\u00e5 en film og v\u00e6lge 'Tilf\u00f8j til samling'. ", + "LabelKodiMetadataEnableExtraThumbs": "kopier extrafanart til extrathumbs", + "LabelKodiMetadataEnableExtraThumbsHelp": "Ved hentning af billeder, kan de gemmes i b\u00e5de extrafanart og extrathumbs. Dette giver maksimal Kodi skin kompatibilitet.", + "TabServices": "Tjenester", "TabLogs": "Logs", - "HeaderServerLogFiles": "Server log files:", + "HeaderServerLogFiles": "Serverlogfiler:", "TabBranding": "Branding", - "HeaderBrandingHelp": "Customize the appearance of Emby to fit the needs of your group or organization.", - "LabelLoginDisclaimer": "Login disclaimer:", - "LabelLoginDisclaimerHelp": "This will be displayed at the bottom of the login page.", - "LabelAutomaticallyDonate": "Automatically donate this amount every month", - "LabelAutomaticallyDonateHelp": "You can cancel at any time via your PayPal account.", - "OptionList": "List", - "TabDashboard": "Dashboard", + "HeaderBrandingHelp": "Brugertilpas udseendet af Emby s\u00e5 den passer til dine behov.", + "LabelLoginDisclaimer": "Login ansvarsfraskrivelse:", + "LabelLoginDisclaimerHelp": "Dette bliver vist i bunden af loginsiden.", + "LabelAutomaticallyDonate": "Doner automatisk dette bel\u00f8b hver m\u00e5ned", + "LabelAutomaticallyDonateHelp": "Du kan opsige n\u00e5r som helst fra din PayPal-konto.", + "OptionList": "Liste", + "TabDashboard": "Betjeningspanel", "TitleServer": "Server", "LabelCache": "Cache:", "LabelLogs": "Logs:", "LabelMetadata": "Metadata:", - "LabelImagesByName": "Images by name:", - "LabelTranscodingTemporaryFiles": "Transcoding temporary files:", - "HeaderLatestMusic": "Latest Music", + "LabelImagesByName": "Billeder pr. navn:", + "LabelTranscodingTemporaryFiles": "Midlertidige filer for transkodning:", + "HeaderLatestMusic": "Seneste musik", "HeaderBranding": "Branding", - "HeaderApiKeys": "Api Keys", - "HeaderApiKeysHelp": "External applications are required to have an Api key in order to communicate with Emby Server. Keys are issued by logging in with an Emby account, or by manually granting the application a key.", - "HeaderApiKey": "Api Key", + "HeaderApiKeys": "Api n\u00f8gler", + "HeaderApiKeysHelp": "Eksterne applikationer skal have en Api n\u00f8gle for at kunne kommunikere med Emby. N\u00f8gler udstedes ved at logge ind med en Emby konto, eller ved manuelt at tildele applikationen en n\u00f8gle.", + "HeaderApiKey": "Api n\u00f8gle", "HeaderApp": "App", - "HeaderDevice": "Device", - "HeaderUser": "User", - "HeaderDateIssued": "Date Issued", - "LabelChapterName": "Chapter {0}", - "HeaderNewApiKey": "New Api Key", - "LabelAppName": "App name", - "LabelAppNameExample": "Example: Sickbeard, NzbDrone", - "HeaderNewApiKeyHelp": "Grant an application permission to communicate with Emby Server.", + "HeaderDevice": "Enhed", + "HeaderUser": "Bruger", + "HeaderDateIssued": "Udstedelsesdato", + "LabelChapterName": "Kapitel {0}", + "HeaderNewApiKey": "Ny Api n\u00f8gle", + "LabelAppName": "App navn", + "LabelAppNameExample": "F. eks: Sickbeard, NzbDrone", + "HeaderNewApiKeyHelp": "Giv applikationen tilladelse til at kommunikere med Emby.", "HeaderHttpHeaders": "Http Headers", "HeaderIdentificationHeader": "Identification Header", - "LabelValue": "Value:", + "LabelValue": "V\u00e6rdi:", "LabelMatchType": "Match type:", - "OptionEquals": "Equals", + "OptionEquals": "Lig med", "OptionRegex": "Regex", - "OptionSubstring": "Substring", - "TabView": "View", - "TabSort": "Sort", - "TabFilter": "Filter", - "ButtonView": "View", - "LabelPageSize": "Item limit:", - "LabelPath": "Path:", - "LabelView": "View:", - "TabUsers": "Users", - "LabelSortName": "Sort name:", - "LabelDateAdded": "Date added:", - "HeaderFeatures": "Features", - "HeaderAdvanced": "Advanced", + "OptionSubstring": "Delstreng", + "TabView": "Visning", + "TabSort": "Sorter", + "TabFilter": "Filtrer", + "ButtonView": "Visning", + "LabelPageSize": "Maks. enheder:", + "LabelPath": "Sti:", + "LabelView": "Vis:", + "TabUsers": "Brugere", + "LabelSortName": "Sorteringsnavn:", + "LabelDateAdded": "Dato for tilf\u00f8jelse:", + "HeaderFeatures": "Egenskaber", + "HeaderAdvanced": "Avanceret", "ButtonSync": "Sync", - "TabScheduledTasks": "Scheduled Tasks", - "HeaderChapters": "Chapters", - "HeaderResumeSettings": "Resume Settings", + "TabScheduledTasks": "Planlagte opgaver", + "HeaderChapters": "Kapitler", + "HeaderResumeSettings": "Indstillinger for forts\u00e6t", "TabSync": "Sync", - "TitleUsers": "Users", - "LabelProtocol": "Protocol:", + "TitleUsers": "Brugere", + "LabelProtocol": "Protokol:", "OptionProtocolHttp": "Http", "OptionProtocolHls": "Http Live Streaming", - "LabelContext": "Context:", + "LabelContext": "Kontekst:", "OptionContextStreaming": "Streaming", "OptionContextStatic": "Sync", - "ButtonAddToPlaylist": "Add to playlist", - "TabPlaylists": "Playlists", - "ButtonClose": "Close", - "LabelAllLanguages": "All languages", - "HeaderBrowseOnlineImages": "Browse Online Images", - "LabelSource": "Source:", - "OptionAll": "All", - "LabelImage": "Image:", - "ButtonBrowseImages": "Browse Images", - "HeaderImages": "Images", + "ButtonAddToPlaylist": "Tilf\u00f8j til afspilningsliste", + "TabPlaylists": "Afspilningslister", + "ButtonClose": "Luk", + "LabelAllLanguages": "Alle sprog", + "HeaderBrowseOnlineImages": "Gennemse online billeder", + "LabelSource": "Kilde:", + "OptionAll": "Alle", + "LabelImage": "Billede:", + "ButtonBrowseImages": "Gennemse billeder", + "HeaderImages": "Billeder", "HeaderBackdrops": "Backdrops", - "HeaderScreenshots": "Screenshots", - "HeaderAddUpdateImage": "Add\/Update Image", - "LabelJpgPngOnly": "JPG\/PNG only", - "LabelImageType": "Image type:", - "OptionPrimary": "Primary", - "OptionArt": "Art", - "OptionBox": "Box", - "OptionBoxRear": "Box rear", - "OptionDisc": "Disc", - "OptionIcon": "Icon", + "HeaderScreenshots": "Sk\u00e6rmbilleder", + "HeaderAddUpdateImage": "Tilf\u00f8j\/opdater billede", + "LabelJpgPngOnly": "Kun JPG\/PNG", + "LabelImageType": "Billedtype:", + "OptionPrimary": "PrIm\u00e6r", + "OptionArt": "Kunst", + "OptionBox": "\u00c6ske", + "OptionBoxRear": "\u00c6ske bag", + "OptionDisc": "Disk", + "OptionIcon": "Ikon", "OptionLogo": "Logo", "OptionMenu": "Menu", - "OptionScreenshot": "Screenshot", - "OptionLocked": "Locked", - "OptionUnidentified": "Unidentified", - "OptionMissingParentalRating": "Missing parental rating", - "OptionStub": "Stub", - "HeaderEpisodes": "Episodes:", - "OptionSeason0": "Season 0", - "LabelReport": "Report:", - "OptionReportSongs": "Songs", - "OptionReportSeries": "Series", - "OptionReportSeasons": "Seasons", - "OptionReportTrailers": "Trailers", - "OptionReportMusicVideos": "Music videos", - "OptionReportMovies": "Movies", - "OptionReportHomeVideos": "Home videos", - "OptionReportGames": "Games", - "OptionReportEpisodes": "Episodes", - "OptionReportCollections": "Collections", - "OptionReportBooks": "Books", - "OptionReportArtists": "Artists", + "OptionScreenshot": "Sk\u00e6rmbillede", + "OptionLocked": "L\u00e5st", + "OptionUnidentified": "Uidentificeret", + "OptionMissingParentalRating": "Mangler aldersgr\u00e6nse", + "OptionStub": "P\u00e5begyndt", + "HeaderEpisodes": "Episoder:", + "OptionSeason0": "S\u00e6son 0", + "LabelReport": "Rapport:", + "OptionReportSongs": "Sange", + "OptionReportSeries": "Serier", + "OptionReportSeasons": "S\u00e6soner", + "OptionReportTrailers": "Trailere", + "OptionReportMusicVideos": "Musikvideoer", + "OptionReportMovies": "Film", + "OptionReportHomeVideos": "Hjemmevideoer", + "OptionReportGames": "Spil", + "OptionReportEpisodes": "Episoder", + "OptionReportCollections": "Samlinger", + "OptionReportBooks": "B\u00f8ger", + "OptionReportArtists": "Artister", "OptionReportAlbums": "Albums", - "OptionReportAdultVideos": "Adult videos", - "ButtonMore": "More", - "HeaderActivity": "Activity", - "ScheduledTaskStartedWithName": "{0} started", - "ScheduledTaskCancelledWithName": "{0} was cancelled", - "ScheduledTaskCompletedWithName": "{0} completed", - "ScheduledTaskFailed": "Scheduled task completed", - "PluginInstalledWithName": "{0} was installed", - "PluginUpdatedWithName": "{0} was updated", - "PluginUninstalledWithName": "{0} was uninstalled", - "ScheduledTaskFailedWithName": "{0} failed", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "DeviceOnlineWithName": "{0} is connected", - "UserOnlineFromDevice": "{0} is online from {1}", - "DeviceOfflineWithName": "{0} has disconnected", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "LabelRunningTimeValue": "Running time: {0}", - "LabelIpAddressValue": "Ip address: {0}", - "UserLockedOutWithName": "User {0} has been locked out", - "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", - "UserCreatedWithName": "User {0} has been created", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserDeletedWithName": "User {0} has been deleted", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageApplicationUpdated": "Emby Server has been updated", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "UserStartedPlayingItemWithValues": "{0} has started playing {1}", - "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", - "AppDeviceValues": "App: {0}, Device: {1}", - "ProviderValue": "Provider: {0}", - "LabelChannelDownloadSizeLimit": "Download size limit (GB):", - "LabelChannelDownloadSizeLimitHelpText": "Limit the size of the channel download folder.", - "HeaderRecentActivity": "Recent Activity", - "HeaderPeople": "People", - "HeaderDownloadPeopleMetadataFor": "Download biography and images for:", - "OptionComposers": "Composers", - "OptionOthers": "Others", - "HeaderDownloadPeopleMetadataForHelp": "Enabling additional options will provide more on-screen information but will result in slower library scans.", - "ViewTypeFolders": "Folders", - "LabelDisplayFoldersView": "Display a folders view to show plain media folders", - "ViewTypeLiveTvRecordingGroups": "Recordings", - "ViewTypeLiveTvChannels": "Channels", - "LabelEasyPinCode": "Easy pin code:", - "EasyPasswordHelp": "Your easy pin code is used for offline access with supported Emby apps, and can also be used for easy in-network sign in.", - "LabelInNetworkSignInWithEasyPassword": "Enable in-network sign in with my easy pin code", - "LabelInNetworkSignInWithEasyPasswordHelp": "If enabled, you'll be able to use your easy pin code to sign in to Emby apps from inside your home network. Your regular password will only be needed away from home. If the pin code is left blank, you won't need a password within your home network.", - "HeaderPassword": "Password", - "HeaderLocalAccess": "Local Access", - "HeaderViewOrder": "View Order", - "ButtonResetEasyPassword": "Reset easy pin code", - "LabelSelectUserViewOrder": "Choose the order your views will be displayed in within Emby apps", - "LabelMetadataRefreshMode": "Metadata refresh mode:", - "LabelImageRefreshMode": "Image refresh mode:", - "OptionDownloadMissingImages": "Download missing images", - "OptionReplaceExistingImages": "Replace existing images", - "OptionRefreshAllData": "Refresh all data", - "OptionAddMissingDataOnly": "Add missing data only", - "OptionLocalRefreshOnly": "Local refresh only", - "HeaderRefreshMetadata": "Refresh Metadata", - "HeaderPersonInfo": "Person Info", - "HeaderIdentifyItem": "Identify Item", - "HeaderIdentifyItemHelp": "Enter one or more search criteria. Remove criteria to increase search results.", - "HeaderConfirmDeletion": "Confirm Deletion", - "LabelFollowingFileWillBeDeleted": "The following file will be deleted:", - "LabelIfYouWishToContinueWithDeletion": "If you wish to continue, please confirm by entering the value of:", - "ButtonIdentify": "Identify", - "LabelAlbumArtist": "Album artist:", - "LabelAlbumArtists": "Album artists:", + "OptionReportAdultVideos": "Voksenfilm", + "HeaderActivity": "Aktivitet", + "ScheduledTaskStartedWithName": "{0} startet", + "ScheduledTaskCancelledWithName": "{0} blev afbrudt", + "ScheduledTaskCompletedWithName": "{0} f\u00e6rdig", + "ScheduledTaskFailed": "Planlagt opgave udf\u00f8rt", + "PluginInstalledWithName": "{0} blev installeret", + "PluginUpdatedWithName": "{0} blev opdateret", + "PluginUninstalledWithName": "{0} blev afinstalleret", + "ScheduledTaskFailedWithName": "{0} fejlede", + "ItemAddedWithName": "{0} blev tilf\u00f8jet til biblioteket", + "ItemRemovedWithName": "{0} blev fjernet fra biblioteket", + "DeviceOnlineWithName": "{0} er forbundet", + "UserOnlineFromDevice": "{0} er online fra {1}", + "DeviceOfflineWithName": "{0} har afbrudt forbindelsen", + "UserOfflineFromDevice": "{0} har afbrudt forbindelsen fra {1}", + "SubtitlesDownloadedForItem": "Undertekster hentet til {0}", + "SubtitleDownloadFailureForItem": "Hentning af undertekster til {0} fejlede", + "LabelRunningTimeValue": "K\u00f8rselstid: {0}", + "LabelIpAddressValue": "IP-adresse: {0}", + "UserLockedOutWithName": "Bruger {0} er blevet l\u00e5st", + "UserConfigurationUpdatedWithName": "Brugerkonfigurationen for {0} er blevet opdateret", + "UserCreatedWithName": "Bruger {0} er skabt", + "UserPasswordChangedWithName": "Adgangskoden for {0} er blevet \u00e6ndret", + "UserDeletedWithName": "Bruger {0} er slettet", + "MessageServerConfigurationUpdated": "Serverkonfigurationen er opdateret", + "MessageNamedServerConfigurationUpdatedWithValue": "Serverkonfiguration sektion {0} er opdateret", + "MessageApplicationUpdated": "Emby er blevet opdateret", + "AuthenticationSucceededWithUserName": "{0} autentificeret", + "FailedLoginAttemptWithUserName": "Fejlslagent loginfors\u00f8g fra {0}", + "UserDownloadingItemWithValues": "{0} henter {1}", + "UserStartedPlayingItemWithValues": "{0} afspiller {1}", + "UserStoppedPlayingItemWithValues": "{0} har stoppet afpilningen af {1}", + "AppDeviceValues": "App: {0}, Enhed: {1}", + "ProviderValue": "Udbyder: {0}", + "LabelChannelDownloadSizeLimit": "St\u00f8rrelsesbegr\u00e6nsning for hentning (GB):", + "LabelChannelDownloadSizeLimitHelpText": "Begr\u00e6ns st\u00f8rrelsen af mappen med kanalindhold.", + "HeaderRecentActivity": "Seneste aktivitet", + "HeaderPeople": "Mennesker", + "HeaderDownloadPeopleMetadataFor": "Hent biografil og billeder for:", + "OptionComposers": "Komponenter", + "OptionOthers": "Andre", + "HeaderDownloadPeopleMetadataForHelp": "Ved at aktivere yderligere muligheder s\u00e5r du mere informatin p\u00e5 sk\u00e6rmen, men biblioteksskanninger bliver langsommere.", + "ViewTypeFolders": "Mapper", + "LabelDisplayFoldersView": "Vis en mappevisning til visning af enkle mediemapper", + "ViewTypeLiveTvRecordingGroups": "Optagelser", + "ViewTypeLiveTvChannels": "Kanaler", + "LabelEasyPinCode": "Pinkode:", + "EasyPasswordHelp": "Din pinkode bruges til offline adgang til underst\u00f8ttede Emby apps, og kan ogs\u00e5 bruges til nemt login inden for eget netv\u00e6rk.", + "LabelInNetworkSignInWithEasyPassword": "Tillad login inden for eget netv\u00e6rk med pinkode", + "LabelInNetworkSignInWithEasyPasswordHelp": "Aktiver dette for at loge ind i Emby apps med din pinkode inden for dit eget netv\u00e6rk. Din almindelige adgangskode skal du s\u00e5 kun bruge n\u00e5r du ikke er hjemme. Hvis pinkoden er tom, kan du logge ind uden adgangskode inden for dit eget netv\u00e6rk.", + "HeaderPassword": "Adgangskode", + "HeaderLocalAccess": "Lokal adgang", + "HeaderViewOrder": "Visningorden", + "ButtonResetEasyPassword": "Nulstil pinkode", + "LabelSelectUserViewOrder": "V\u00e6lg hvilken r\u00e6kkef\u00f8lge dine visninger skal v\u00e6re i i Emby apps", + "LabelMetadataRefreshMode": "Opdateringstilstand for metadata:", + "LabelImageRefreshMode": "Opdateringstilstand for billeder:", + "OptionDownloadMissingImages": "Hent manglende billeder", + "OptionReplaceExistingImages": "Erstat eksisterende billeder", + "OptionRefreshAllData": "Opdater alle data", + "OptionAddMissingDataOnly": "Hent kun manglende data", + "OptionLocalRefreshOnly": "Opdater kun lokalt", + "HeaderRefreshMetadata": "Opdater metadata", + "HeaderPersonInfo": "Personinformation", + "HeaderIdentifyItem": "Identificer genstand", + "HeaderIdentifyItemHelp": "Indtast et eller flere s\u00f8gekriterier.Fjern kriterier for at f\u00e5 flere s\u00f8geresultater.", + "HeaderConfirmDeletion": "Bekr\u00e6ft sletning", + "LabelFollowingFileWillBeDeleted": "F\u00f8lgende filer bliver slettet:", + "LabelIfYouWishToContinueWithDeletion": "Hvis du \u00f8nsker at forts\u00e6tte, bekr\u00e6ft venligst ved at indtaste v\u00e6rdien af:", + "ButtonIdentify": "Identificer", + "LabelAlbumArtist": "Albumartist:", + "LabelAlbumArtists": "Albumartister:", "LabelAlbum": "Album:", - "LabelCommunityRating": "Community rating:", - "LabelVoteCount": "Vote count:", + "LabelCommunityRating": "F\u00e6llesskabsvurdering:", + "LabelVoteCount": "Antal stemmer:", "LabelMetascore": "Metascore:", - "LabelCriticRating": "Critic rating:", - "LabelCriticRatingSummary": "Critic rating summary:", - "LabelAwardSummary": "Award summary:", - "LabelWebsite": "Website:", + "LabelCriticRating": "Kritikervurdering:", + "LabelCriticRatingSummary": "Resum\u00e9 af kritikervurderinger:", + "LabelAwardSummary": "Resum\u00e9 af priser:", + "LabelWebsite": "Hjemmeside:", "LabelTagline": "Tagline:", - "LabelOverview": "Overview:", - "LabelShortOverview": "Short overview:", - "LabelReleaseDate": "Release date:", - "LabelYear": "Year:", - "LabelPlaceOfBirth": "Place of birth:", - "LabelEndDate": "End date:", - "LabelAirDate": "Air days:", - "LabelAirTime:": "Air time:", - "LabelRuntimeMinutes": "Run time (minutes):", - "LabelParentalRating": "Parental rating:", - "LabelCustomRating": "Custom rating:", + "LabelOverview": "Oversigt:", + "LabelShortOverview": "Kort oversigt:", + "LabelReleaseDate": "Udgivelsesdato:", + "LabelYear": "\u00c5r:", + "LabelPlaceOfBirth": "F\u00f8dselssted:", + "LabelEndDate": "Slutdato:", + "LabelAirDate": "Sendedage:", + "LabelAirTime:": "Sendetid:", + "LabelRuntimeMinutes": "Spilletid (minutter):", + "LabelParentalRating": "Aldersgr\u00e6nse:", + "LabelCustomRating": "Brugerdefineret bed\u00f8mmelse:", "LabelBudget": "Budget", - "LabelRevenue": "Revenue ($):", - "LabelOriginalAspectRatio": "Original aspect ratio:", - "LabelPlayers": "Players:", + "LabelRevenue": "Indt\u00e6gter ($):", + "LabelOriginalAspectRatio": "Originalt formatforhold:", + "LabelPlayers": "Afspillere:", "Label3DFormat": "3D format:", - "HeaderAlternateEpisodeNumbers": "Alternate Episode Numbers", - "HeaderSpecialEpisodeInfo": "Special Episode Info", - "HeaderExternalIds": "External Id's:", - "LabelDvdSeasonNumber": "Dvd season number:", - "LabelDvdEpisodeNumber": "Dvd episode number:", - "LabelAbsoluteEpisodeNumber": "Absolute episode number:", - "LabelAirsBeforeSeason": "Airs before season:", - "LabelAirsAfterSeason": "Airs after season:", - "LabelAirsBeforeEpisode": "Airs before episode:", - "LabelTreatImageAs": "Treat image as:", - "LabelDisplayOrder": "Display order:", - "LabelDisplaySpecialsWithinSeasons": "Display specials within seasons they aired in", - "HeaderCountries": "Countries", - "HeaderGenres": "Genres", - "HeaderPlotKeywords": "Plot Keywords", - "HeaderStudios": "Studios", + "HeaderAlternateEpisodeNumbers": "Alternative episodenumre", + "HeaderSpecialEpisodeInfo": "Information om specialepisoder", + "HeaderExternalIds": "Eksterne ID'er:", + "LabelDvdSeasonNumber": "DVD s\u00e6sonnummer", + "LabelDvdEpisodeNumber": "DVD episodenummer:", + "LabelAbsoluteEpisodeNumber": "Absolut episodenummer:", + "LabelAirsBeforeSeason": "Sendes f\u00f8r s\u00e6son:", + "LabelAirsAfterSeason": "Sendes efter s\u00e6son:", + "LabelAirsBeforeEpisode": "Sendes f\u00f8r episode:", + "LabelTreatImageAs": "Opfat billede som:", + "LabelDisplayOrder": "Visningsorden:", + "LabelDisplaySpecialsWithinSeasons": "Vis specialepisoder sammen med den s\u00e6son de blev sent i", + "HeaderCountries": "Lande", + "HeaderGenres": "Genrer", + "HeaderPlotKeywords": "Plot n\u00f8gleord", + "HeaderStudios": "Studier", "HeaderTags": "Tags", - "HeaderMetadataSettings": "Metadata Settings", - "LabelLockItemToPreventChanges": "Lock this item to prevent future changes", - "MessageLeaveEmptyToInherit": "Leave empty to inherit settings from a parent item, or the global default value.", - "TabDonate": "Donate", - "HeaderDonationType": "Donation type:", - "OptionMakeOneTimeDonation": "Make a separate donation", - "OptionOneTimeDescription": "This is an additional donation to the team to show your support. It does not have any additional benefits and will not produce a supporter key.", - "OptionLifeTimeSupporterMembership": "Lifetime supporter membership", - "OptionYearlySupporterMembership": "Yearly supporter membership", - "OptionMonthlySupporterMembership": "Monthly supporter membership", - "OptionNoTrailer": "No Trailer", - "OptionNoThemeSong": "No Theme Song", - "OptionNoThemeVideo": "No Theme Video", - "LabelOneTimeDonationAmount": "Donation amount:", - "ButtonDonate": "Donate", - "OptionActor": "Actor", - "OptionComposer": "Composer", - "OptionDirector": "Director", - "OptionGuestStar": "Guest star", - "OptionProducer": "Producer", - "OptionWriter": "Writer", - "LabelAirDays": "Air days:", - "LabelAirTime": "Air time:", - "HeaderMediaInfo": "Media Info", - "HeaderPhotoInfo": "Photo Info", - "HeaderInstall": "Install", - "LabelSelectVersionToInstall": "Select version to install:", - "LinkSupporterMembership": "Learn about the Supporter Membership", - "MessageSupporterPluginRequiresMembership": "This plugin will require an active supporter membership after the 14 day free trial.", - "MessagePremiumPluginRequiresMembership": "This plugin will require an active supporter membership in order to purchase after the 14 day free trial.", - "HeaderReviews": "Reviews", - "HeaderDeveloperInfo": "Developer Info", - "HeaderRevisionHistory": "Revision History", - "ButtonViewWebsite": "View website", - "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", - "HeaderXmlSettings": "Xml Settings", - "HeaderXmlDocumentAttributes": "Xml Document Attributes", - "HeaderXmlDocumentAttribute": "Xml Document Attribute", - "XmlDocumentAttributeListHelp": "These attributes are applied to the root element of every xml response.", - "OptionSaveMetadataAsHidden": "Save metadata and images as hidden files", - "LabelExtractChaptersDuringLibraryScan": "Extract chapter images during the library scan", - "LabelExtractChaptersDuringLibraryScanHelp": "If enabled, chapter images will be extracted when videos are imported during the library scan. If disabled they will be extracted during the chapter images scheduled task, allowing the regular library scan to complete faster.", - "LabelConnectGuestUserName": "Their Emby username or email address:", - "LabelConnectUserName": "Emby username\/email:", - "LabelConnectUserNameHelp": "Connect this user to an Emby account to enable easy sign-in access from any Emby app without having to know the server ip address.", - "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", - "LabelExternalPlayers": "External players:", - "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", - "HeaderSubtitleProfile": "Subtitle Profile", - "HeaderSubtitleProfiles": "Subtitle Profiles", - "HeaderSubtitleProfilesHelp": "Subtitle profiles describe the subtitle formats supported by the device.", + "HeaderMetadataSettings": "Indstillinger for metadata", + "LabelLockItemToPreventChanges": "L\u00e5s for at undg\u00e5 fremtidige \u00e6ndringer", + "MessageLeaveEmptyToInherit": "Efterlad tom for at arve indstillinger fra en overliggende post eller den globale standardv\u00e6rdi.", + "TabDonate": "Don\u00e9r", + "HeaderDonationType": "Donationstype:", + "OptionMakeOneTimeDonation": "Giv en enkeltst\u00e5ende donation", + "OptionOneTimeDescription": "Dette er en yderligere donation til holdet for at vise din st\u00f8tte. Det giver ikke nogen andre fordele og vil ikke udl\u00f8se en supporter n\u00f8gle.", + "OptionLifeTimeSupporterMembership": "Livstid supporter medlemskab", + "OptionYearlySupporterMembership": "\u00c5rligt supporter medlemskab", + "OptionMonthlySupporterMembership": "M\u00e5nedligt supporter medlemskab", + "OptionNoTrailer": "Ingen trailer", + "OptionNoThemeSong": "Ingen temasang", + "OptionNoThemeVideo": "Ingen temavideo", + "LabelOneTimeDonationAmount": "Donationsbel\u00f8b:", + "ButtonDonate": "Don\u00e9r", + "ButtonPurchase": "K\u00f8b", + "OptionActor": "Skuespiller", + "OptionComposer": "Komponist", + "OptionDirector": "Instrukt\u00f8r", + "OptionGuestStar": "G\u00e6stestjerne", + "OptionProducer": "Producent", + "OptionWriter": "Forfatter", + "LabelAirDays": "Sendedage:", + "LabelAirTime": "Sendetid:", + "HeaderMediaInfo": "Medieinformation", + "HeaderPhotoInfo": "Fotoinformation", + "HeaderInstall": "Installer", + "LabelSelectVersionToInstall": "V\u00e6lg hvilken version der skal installeres:", + "LinkSupporterMembership": "L\u00e6r om supporter medlemskab", + "MessageSupporterPluginRequiresMembership": "Dette plugin kr\u00e6ver et aktivt supporter medlemskab efter den gratis 14-dages pr\u00f8veperiode.", + "MessagePremiumPluginRequiresMembership": "For at k\u00f8be dette plugin kr\u00e6ves et aktivt supporter medlemskab efter den gratis 14-dages pr\u00f8veperiode.", + "HeaderReviews": "Anmeldelser", + "HeaderDeveloperInfo": "Information om udvikleren", + "HeaderRevisionHistory": "Revisionshistorik", + "ButtonViewWebsite": "Bes\u00f8g hjemmeside", + "HeaderXmlSettings": "XML indstillinger", + "HeaderXmlDocumentAttributes": "XML dokumentattributter", + "HeaderXmlDocumentAttribute": "XML dokumentattribut", + "XmlDocumentAttributeListHelp": "Disse attributter bliver tilf\u00f8jet til rodelementet i alle XML svar.", + "OptionSaveMetadataAsHidden": "Gem metadata og billeder som skjulte filer", + "LabelExtractChaptersDuringLibraryScan": "Udtr\u00e6k kapitelbilleder under biblioteksskanning", + "LabelExtractChaptersDuringLibraryScanHelp": "Aktiver dette for at udtr\u00e6kke kapitelbillleder mens videofiler bliver importeret under biblioteksskanningen. Hvi det ikke er aktiveret, bliver de udtrukket n\u00e5r den planlagte opgave kapitelbilleder k\u00f8rer, og lader den almindelige biblioteksskanning afslutte hurtigere.", + "LabelConnectGuestUserName": "Hans\/hendes Emby brugernavn eller e-mailadresse:", + "LabelConnectUserName": "Emby brugernavn\/e-mail:", + "LabelConnectUserNameHelp": "Forbind denne bruger til en Emby konto for at tillade nem adgang fra enhver Emby app uden at skulle kende serverens IP-adresse.", + "ButtonLearnMoreAboutEmbyConnect": "L\u00e6r mere om Emby Connect", + "LabelExternalPlayers": "Eksterne afspillere:", + "LabelExternalPlayersHelp": "Vis knapper til afspilning af indhold i eksterne afspillere. Dette er kun tilg\u00e6ngeligt p\u00e5 enheder der underst\u00f8tter URL skemaer, almindeligvis Android og iOS. Med eksterne afspillere er der generelt gen underst\u00f8ttelse for fjernstyring eller forts\u00e6ttelse.", + "LabelNativeExternalPlayersHelp": "Hvis knapper til at afspille indhold i eksterne afspillere.", + "LabelEnableItemPreviews": "Aktiver forh\u00e5ndsvisning af elementer", + "LabelEnableItemPreviewsHelp": "Hvis aktiveret vil der blive vist glidende forh\u00e5ndsvisninger n\u00e5r der klikkes p\u00e5 elementer p\u00e5 visse sk\u00e6rme.", + "HeaderSubtitleProfile": "Undertekstprofil", + "HeaderSubtitleProfiles": "Undertekstprofiler", + "HeaderSubtitleProfilesHelp": "Undertekstprofiler beskriver hvilke undertekstformater der unders\u00f8ttes af enheden.", "LabelFormat": "Format:", - "LabelMethod": "Method:", - "LabelDidlMode": "Didl mode:", + "LabelMethod": "Metode:", + "LabelDidlMode": "DIDL tilstand:", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", "OptionResElement": "res element", - "OptionEmbedSubtitles": "Embed within container", - "OptionExternallyDownloaded": "External download", - "OptionHlsSegmentedSubtitles": "Hls segmented subtitles", - "LabelSubtitleFormatHelp": "Example: srt", - "ButtonLearnMore": "Learn more", - "TabPlayback": "Playback", - "HeaderLanguagePreferences": "Language Preferences", - "TabCinemaMode": "Cinema Mode", - "TitlePlayback": "Playback", - "LabelEnableCinemaModeFor": "Enable cinema mode for:", - "CinemaModeConfigurationHelp": "Cinema mode brings the theater experience straight to your living room with the ability to play trailers and custom intros before the main feature.", - "OptionTrailersFromMyMovies": "Include trailers from movies in my library", - "OptionUpcomingMoviesInTheaters": "Include trailers from new and upcoming movies", - "LabelLimitIntrosToUnwatchedContent": "Only use trailers from unwatched content", - "LabelEnableIntroParentalControl": "Enable smart parental control", - "LabelEnableIntroParentalControlHelp": "Trailers will only be selected with a parental rating equal to or less than the content being watched.", - "LabelTheseFeaturesRequireSupporterHelpAndTrailers": "These features require an active supporter membership and installation of the Trailer channel plugin.", - "OptionTrailersFromMyMoviesHelp": "Requires setup of local trailers.", - "LabelCustomIntrosPath": "Custom intros path:", - "LabelCustomIntrosPathHelp": "A folder containing video files. A video will be randomly selected and played after trailers.", + "OptionEmbedSubtitles": "Inlejr i containeren", + "OptionExternallyDownloaded": "Ekstern hentning", + "OptionHlsSegmentedSubtitles": "Hls segmented undertekster", + "LabelSubtitleFormatHelp": "F. eks: srt", + "ButtonLearnMore": "L\u00e6r mere", + "TabPlayback": "Afspilning", + "HeaderLanguagePreferences": "Sprogpr\u00e6ferencer", + "TabCinemaMode": "Biograftilstand", + "TitlePlayback": "Afspilning", + "LabelEnableCinemaModeFor": "Aktiver biograftilstand for:", + "CinemaModeConfigurationHelp": "Biograftilstand giver dig biografoplevelsen direkte ind i din stue, med muligheden for at vise trailere og brugerdefinerede introduktioner f\u00f8r hovedfilmen.", + "OptionTrailersFromMyMovies": "Brug trailere fra film i mit bibliotek", + "OptionUpcomingMoviesInTheaters": "Brug trailere for nye og kommende film", + "LabelLimitIntrosToUnwatchedContent": "Brug kun trailere for ikke sete film", + "LabelEnableIntroParentalControl": "Aktiver smart for\u00e6ldrekontrol", + "LabelEnableIntroParentalControlHelp": "Vis kun trailere med samme eller lavere aldersgr\u00e6nse end hovedfilmen.", + "LabelTheseFeaturesRequireSupporterHelpAndTrailers": "Disse funktioner kr\u00e6ver et aktivt supporter medlemskab", + "OptionTrailersFromMyMoviesHelp": "Kr\u00e6ver ops\u00e6tning af lokale trailere.", + "LabelCustomIntrosPath": "Sti til brugerdefinerede introduktioner:", + "LabelCustomIntrosPathHelp": "En mappe med videofiler. En tilf\u00e6ldig video vil blive vist efter trailerne.", "ValueSpecialEpisodeName": "Special - {0}", - "LabelSelectInternetTrailersForCinemaMode": "Internet trailers:", - "OptionUpcomingDvdMovies": "Include trailers from new and upcoming movies on Dvd & Blu-ray", - "OptionUpcomingStreamingMovies": "Include trailers from new and upcoming movies on Netflix", - "LabelDisplayTrailersWithinMovieSuggestions": "Display trailers within movie suggestions", - "LabelDisplayTrailersWithinMovieSuggestionsHelp": "Requires installation of the Trailer channel.", - "CinemaModeConfigurationHelp2": "Individual users will have the ability to disable cinema mode within their own preferences.", - "LabelEnableCinemaMode": "Enable cinema mode", - "HeaderCinemaMode": "Cinema Mode", - "LabelDateAddedBehavior": "Date added behavior for new content:", - "OptionDateAddedImportTime": "Use date scanned into the library", - "OptionDateAddedFileTime": "Use file creation date", - "LabelDateAddedBehaviorHelp": "If a metadata value is present it will always be used before either of these options.", - "LabelNumberTrailerToPlay": "Number of trailers to play:", - "TitleDevices": "Devices", - "TabCameraUpload": "Camera Upload", - "TabDevices": "Devices", - "HeaderCameraUploadHelp": "Automatically upload photos and videos taken from your mobile devices into Emby.", - "MessageNoDevicesSupportCameraUpload": "You currently don't have any devices that support camera upload.", - "LabelCameraUploadPath": "Camera upload path:", - "LabelCameraUploadPathHelp": "Select a custom upload path, if desired. If unspecified a default folder will be used. If using a custom path it will also need to be added in the library setup area.", - "LabelCreateCameraUploadSubfolder": "Create a subfolder for each device", - "LabelCreateCameraUploadSubfolderHelp": "Specific folders can be assigned to a device by clicking on it from the Devices page.", - "LabelCustomDeviceDisplayName": "Display name:", - "LabelCustomDeviceDisplayNameHelp": "Supply a custom display name or leave empty to use the name reported by the device.", - "HeaderInviteUser": "Invite User", - "LabelConnectGuestUserNameHelp": "This is the username that your friend uses to sign in to the Emby website, or their email address.", - "HeaderInviteUserHelp": "Sharing your media with friends is easier than ever before with Emby Connect.", - "ButtonSendInvitation": "Send Invitation", - "HeaderSignInWithConnect": "Sign in with Emby Connect", - "HeaderGuests": "Guests", - "HeaderLocalUsers": "Local Users", - "HeaderPendingInvitations": "Pending Invitations", - "TabParentalControl": "Parental Control", - "HeaderAccessSchedule": "Access Schedule", - "HeaderAccessScheduleHelp": "Create an access schedule to limit access to certain hours.", - "ButtonAddSchedule": "Add Schedule", - "LabelAccessDay": "Day of week:", - "LabelAccessStart": "Start time:", - "LabelAccessEnd": "End time:", - "HeaderSchedule": "Schedule", - "OptionEveryday": "Every day", - "OptionWeekdays": "Weekdays", - "OptionWeekends": "Weekends", - "MessageProfileInfoSynced": "User profile information synced with Emby Connect.", - "HeaderOptionalLinkEmbyAccount": "Optional: Link your Emby account", - "ButtonTrailerReel": "Trailer reel", - "HeaderTrailerReel": "Trailer Reel", - "OptionPlayUnwatchedTrailersOnly": "Play only unwatched trailers", - "HeaderTrailerReelHelp": "Start a trailer reel to play a long running playlist of trailers.", - "MessageNoTrailersFound": "No trailers found. Install the Trailer channel to enhance your movie experience by adding a library of internet trailers.", - "HeaderNewUsers": "New Users", - "ButtonSignUp": "Sign up", - "ButtonForgotPassword": "Forgot password", - "OptionDisableUserPreferences": "Disable access to user preferences", - "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", - "HeaderSelectServer": "Select Server", - "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to accept it below or by clicking the link in the email.", - "TitleNewUser": "New User", - "ButtonConfigurePassword": "Configure Password", - "HeaderDashboardUserPassword": "User passwords are managed within each user's personal profile settings.", - "HeaderLibraryAccess": "Library Access", - "HeaderChannelAccess": "Channel Access", - "HeaderLatestItems": "Latest Items", - "LabelSelectLastestItemsFolders": "Include media from the following sections in Latest Items", - "HeaderShareMediaFolders": "Share Media Folders", - "MessageGuestSharingPermissionsHelp": "Most features are initially unavailable to guests but can be enabled as needed.", - "HeaderInvitations": "Invitations", - "LabelForgotPasswordUsernameHelp": "Enter your username, if you remember it.", - "HeaderForgotPassword": "Forgot Password", - "TitleForgotPassword": "Forgot Password", - "TitlePasswordReset": "Password Reset", - "LabelPasswordRecoveryPinCode": "Pin code:", - "HeaderPasswordReset": "Password Reset", - "HeaderParentalRatings": "Parental Ratings", - "HeaderVideoTypes": "Video Types", - "HeaderYears": "Years", - "HeaderAddTag": "Add Tag", - "LabelBlockContentWithTags": "Block content with tags:", + "LabelSelectInternetTrailersForCinemaMode": "Internet trailere:", + "OptionUpcomingDvdMovies": "Brug trailere for nye og kommende DVD'er og Blu-ray", + "OptionUpcomingStreamingMovies": "Brug trailere for nye og kommende film p\u00e5 Netflix", + "LabelDisplayTrailersWithinMovieSuggestions": "Vis trailere mellem filmforslag", + "LabelDisplayTrailersWithinMovieSuggestionsHelp": "Kr\u00e6ver installation af Trailer kanalen.", + "CinemaModeConfigurationHelp2": "Enkelte brugere kan frav\u00e6lge biograftilstand i deres personlige indstillinger.", + "LabelEnableCinemaMode": "Aktiver biograftilstand", + "HeaderCinemaMode": "Biograftilstand", + "LabelDateAddedBehavior": "Dato tilf\u00f8jet opf\u00f8rsel for nyt indhold:", + "OptionDateAddedImportTime": "Brug datoen for indskanning", + "OptionDateAddedFileTime": "Brug filen oprettelsesdato", + "LabelDateAddedBehaviorHelp": "Hvis der findes en metadata-v\u00e6rdi, vil den altid blive brugt f\u00f8r nogle af ovenst\u00e5ende muligheder.", + "LabelNumberTrailerToPlay": "Antal trailere, der skal afspilles:", + "TitleDevices": "Enheder", + "TabCameraUpload": "Kamera upload", + "TabDevices": "Enheder", + "HeaderCameraUploadHelp": "Upload automatisk fotos og videoer optaget med din enhed til Emby.", + "MessageNoDevicesSupportCameraUpload": "Du har for \u00f8jeblikket ingen enheder der underst\u00f8tter kamera upload.", + "LabelCameraUploadPath": "Kamera upload sti:", + "LabelCameraUploadPathHelp": "Angiv en brugerdefineret upload sti om \u00f8nsket. Hvis der angives en sti, skal den ogs\u00e5 tilf\u00f8jes i biblioteksops\u00e6tningen. Hvis der ikke angives en sti, vil der blive brugt en standardmappe.", + "LabelCreateCameraUploadSubfolder": "Skab en undermappe for hver enhed", + "LabelCreateCameraUploadSubfolderHelp": "Bestemte mapper kan tildeles til enheden, hvis der klikkes p\u00e5 den p\u00e5 enhedssiden.", + "LabelCustomDeviceDisplayName": "Vist navn:", + "LabelCustomDeviceDisplayNameHelp": "Angiv en brugerdefineret navn. hvis der ikke angives et navn, bruges det navn enheden sender.", + "HeaderInviteUser": "Inviter bruger", + "LabelConnectGuestUserNameHelp": "Dette er din vens brugernavn eller e-mailadresse der bruges til login p\u00e5 Embys hjemmeside.", + "HeaderInviteUserHelp": "At dele dine medier med venner er nemmere en nogensinde med Emby Connect.", + "ButtonSendInvitation": "Send invitation", + "HeaderSignInWithConnect": "Log ind med Emby Connect", + "HeaderGuests": "G\u00e6ster", + "HeaderLocalUsers": "Lokale brugere", + "HeaderPendingInvitations": "Ventende invitationer", + "TabParentalControl": "For\u00e6ldrekontrol", + "HeaderAccessSchedule": "Adgangsskema", + "HeaderAccessScheduleHelp": "Skab et adgangsskema for at begr\u00e6nse adgangen til bestemte tidsrum.", + "ButtonAddSchedule": "Tilf\u00f8j skema", + "LabelAccessDay": "Ugedag:", + "LabelAccessStart": "Starttid:", + "LabelAccessEnd": "Sluttid:", + "HeaderSchedule": "Skema", + "OptionEveryday": "Hver dag", + "OptionWeekdays": "Hverdage", + "OptionWeekends": "Weekender", + "MessageProfileInfoSynced": "Brugerprofil synkroniseret med Emby Connect", + "HeaderOptionalLinkEmbyAccount": "Valgfrit: Forbind din Emby konto", + "ButtonTrailerReel": "Trailer rulle", + "HeaderTrailerReel": "Trailer rulle", + "OptionPlayUnwatchedTrailersOnly": "Afspil kun ikke sete trailere", + "HeaderTrailerReelHelp": "Start en trailer rulle for at afspille en lang afspilningsliste med forfilm.", + "MessageNoTrailersFound": "Ingen trailere fundet. Installer Trailer kanalen for at tilf\u00f8je et bibliotek med trailere fra internettet.", + "HeaderNewUsers": "Nye brugere", + "ButtonSignUp": "Tilmeld dig", + "ButtonForgotPassword": "Glemt adgangskode", + "OptionDisableUserPreferences": "Fjern adgang til brugerindstillinger", + "OptionDisableUserPreferencesHelp": "Hvis dette er aktiveret, er det kun administratorer der kan \u00e6ndre brugerbilleder, adgangskoder og sprogpr\u00e6ferencer.", + "HeaderSelectServer": "V\u00e6lg server", + "MessageNoServersAvailableToConnect": "Der er ingen servere, der kan forbindes til. Hvis du er blevet inviteret til at dele en server, skal du acceptere nedenfor eller klikke p\u00e5 linket i e-mailen.", + "TitleNewUser": "Ny bruger", + "ButtonConfigurePassword": "Angiv adgangskode", + "HeaderDashboardUserPassword": "Brugeres adgangskoder administreres i hver bruges personlige indstillinger.", + "HeaderLibraryAccess": "Adgang til biblioteker", + "HeaderChannelAccess": "Adgang til kanaler", + "HeaderLatestItems": "Seneste", + "LabelSelectLastestItemsFolders": "Inkluder medier fra disse sektioner til seneste", + "HeaderShareMediaFolders": "Del mediemapper", + "MessageGuestSharingPermissionsHelp": "De fleste funktioner er indledningsvis utilg\u00e6ngelige for g\u00e6ster, men de kan sl\u00e5s til efter behov.", + "HeaderInvitations": "Invitationer", + "LabelForgotPasswordUsernameHelp": "Indtast dit brugernavn, hvis du kan huske det.", + "HeaderForgotPassword": "Glemt adgangskode", + "TitleForgotPassword": "Glemt adgangskode", + "TitlePasswordReset": "Nulstil adgangskode", + "LabelPasswordRecoveryPinCode": "Pinkode", + "HeaderPasswordReset": "Nulstil adgangskode", + "HeaderParentalRatings": "Aldersgr\u00e6nser", + "HeaderVideoTypes": "Videotyper", + "HeaderYears": "\u00c5r", + "HeaderAddTag": "Tilf\u00f8j tag", + "LabelBlockContentWithTags": "Bloker indhold med disse tags:", "LabelTag": "Tag:", - "LabelEnableSingleImageInDidlLimit": "Limit to single embedded image", - "LabelEnableSingleImageInDidlLimitHelp": "Some devices will not render properly if multiple images are embedded within Didl.", - "TabActivity": "Activity", + "LabelEnableSingleImageInDidlLimit": "Begr\u00e6ns til et enkelt indlejret billede", + "LabelEnableSingleImageInDidlLimitHelp": "Nogle enheder viser ikke rigtigt, hvis der er flere indlejrede billeder i DIDL.", + "TabActivity": "Aktivitet", "TitleSync": "Sync", - "OptionAllowSyncContent": "Allow Sync", - "OptionAllowContentDownloading": "Allow media downloading", - "NameSeasonUnknown": "Season Unknown", - "NameSeasonNumber": "Season {0}", - "LabelNewUserNameHelp": "Usernames can contain letters (a-z), numbers (0-9), dashes (-), underscores (_), apostrophes ('), and periods (.)", - "TabJobs": "Jobs", - "TabSyncJobs": "Sync Jobs", - "LabelTagFilterMode": "Mode:", - "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", - "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", - "MessageReenableUser": "See below to reenable", - "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", - "OptionTVMovies": "TV Movies", - "HeaderUpcomingMovies": "Upcoming Movies", - "HeaderUpcomingSports": "Upcoming Sports", - "HeaderUpcomingPrograms": "Upcoming Programs", - "ButtonMoreItems": "More...", - "LabelShowLibraryTileNames": "Show library tile names", - "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", - "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", - "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", - "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", - "HeaderPlayback": "Media Playback", - "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", - "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", - "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "OptionAllowSyncContent": "Tillad Sync", + "OptionAllowContentDownloading": "Tillad hentning af medier", + "NameSeasonUnknown": "Ukendt s\u00e6son", + "NameSeasonNumber": "S\u00e6son {0}", + "LabelNewUserNameHelp": "Brugernavne kan indeholde bogstaver (a-z), tal (0-9), bindestreg (-), apostrof (') og punktum (.)", + "TabJobs": "Opgaver", + "TabSyncJobs": "Sync opgaver", + "LabelTagFilterMode": "Tilstand:", + "LabelTagFilterAllowModeHelp": "Hvis godkendte tags bliver brugt som en del af en meget forgrenet mappestruktur, kr\u00e6ver tagget indhold at parent mappen ogs\u00e5 tagges.", + "HeaderThisUserIsCurrentlyDisabled": "Denne bruger er for \u00f8jeblikket deaktiveret.", + "MessageReenableUser": "Se nedenfor om genaktivering", + "LabelEnableInternetMetadataForTvPrograms": "Hent internet metadata for:", + "OptionTVMovies": "TV film", + "HeaderUpcomingMovies": "Kommende film", + "HeaderUpcomingSports": "Kommende sportsudsendelser", + "HeaderUpcomingPrograms": "Kommende programmer", + "ButtonMoreItems": "More", + "LabelShowLibraryTileNames": "Vis navne p\u00e5 fliser i biblioteket", + "LabelShowLibraryTileNamesHelp": "Afg\u00f8r om der vises navn under hver flise p\u00e5 hjemmesiden", + "OptionEnableTranscodingThrottle": "Aktiver neddrosling", + "OptionEnableTranscodingThrottleHelp": "Neddrosling vil automatisk justere hastigheden af transkodning for at minimere serverens CPU brug under afspilning.", + "LabelUploadSpeedLimit": "Hastighedsgr\u00e6nse for upload (Mbps):", + "OptionAllowSyncTranscoding": "Tillad synkronisering der kr\u00e6ver transkodning", + "HeaderPlayback": "Medieafspilning", + "OptionAllowAudioPlaybackTranscoding": "Tillad lydafspilning der kr\u00e6ver transkodning", + "OptionAllowVideoPlaybackTranscoding": "Tillad videoafspilning der kr\u00e6ver transkodning", + "OptionAllowMediaPlaybackTranscodingHelp": "Brugere vil modtage en venlig besked n\u00e5r indhold ikke kan afspilles grundet ovenst\u00e5ende politikker.", "TabStreaming": "Streaming", - "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", - "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", - "LabelConversionCpuCoreLimit": "CPU core limit:", - "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", - "OptionEnableFullSpeedConversion": "Enable full speed conversion", - "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", - "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", - "HeaderViewStyles": "View Styles", - "LabelSelectViewStyles": "Enable enhanced presentations for:", - "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", - "TabPhotos": "Photos", - "TabVideos": "Videos", - "HeaderWelcomeToEmby": "Welcome to Emby", - "EmbyIntroMessage": "With Emby you can easily stream videos, music and photos to smart phones, tablets and other devices from your Emby Server.", - "ButtonSkip": "Skip", - "TextConnectToServerManually": "Connect to server manually", - "ButtonSignInWithConnect": "Sign in with Emby Connect", - "ButtonConnect": "Connect", + "LabelRemoteClientBitrateLimit": "Fjernklient birate gr\u00e6nse (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "En valgfri streaming bitrate gr\u00e6nse for alle fjernklienter. Dette kan bruges til at forhindre fjernklienter i at bede om en h\u00f8jere bitrate end din forbindelse kan klare.", + "LabelConversionCpuCoreLimit": "CPU kerne gr\u00e6nse:", + "LabelConversionCpuCoreLimitHelp": "Begr\u00e6ns antallet af CPU kerner der bruges under synkroniseringskonvertering.", + "OptionEnableFullSpeedConversion": "Aktiver konvertering med fuld hastighed", + "OptionEnableFullSpeedConversionHelp": "Som standard udf\u00f8res synkronseringskonverteringer ved lav hastighed for at minimere ressourceforbrug.", + "HeaderPlaylists": "Afspilningslister", + "HeaderViewStyles": "Visningsstiler", + "LabelSelectViewStyles": "Aktiver udvidet pr\u00e6sentation for:", + "LabelSelectViewStylesHelp": "Aktiver dette for at f\u00e5 visninger med kategorier som forslag, seneste, genrer, m.m. Hvis det ikke er aktiveret, bliver der vist almindelige mapper.", + "TabPhotos": "Fotos", + "TabVideos": "Videoer", + "HeaderWelcomeToEmby": "Velkommen til Emby", + "EmbyIntroMessage": "Med Emby kan du nemt streame videoer, musik og fotos til din smartphone, tablet eller andre enheder.", + "ButtonSkip": "Spring over", + "TextConnectToServerManually": "Forbind til en server manuelt", + "ButtonSignInWithConnect": "Log ind med Emby Connect", + "ButtonConnect": "Forbind", "LabelServerHost": "Host:", - "LabelServerHostHelp": "192.168.1.100 or https:\/\/myserver.com", + "LabelServerHostHelp": "F. eks: 192.168.1.100 eller https:\/\/myserver.com", "LabelServerPort": "Port:", - "HeaderNewServer": "New Server", - "ButtonChangeServer": "Change Server", - "HeaderConnectToServer": "Connect to Server", - "LabelExit": "Afslut", - "LabelVisitCommunity": "Bes\u00f8g F\u00e6lleskab", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standard", - "LabelApiDocumentation": "Api dokumentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Gennemse biblitek", - "LabelConfigureServer": "Configure Emby", - "LabelOpenLibraryViewer": "\u00c5ben Biblioteks Fremviser", - "LabelRestartServer": "Genstart Server", - "LabelShowLogWindow": "Vis Log", - "LabelPrevious": "Tidligere", - "LabelFinish": "Slut", - "LabelNext": "N\u00e6ste", - "LabelYoureDone": "Du er f\u00e6rdig!", - "WelcomeToProject": "Velkommen til Emby!", - "ThisWizardWillGuideYou": "Denne guide vil hj\u00e6lpe dig igennem ops\u00e6tningen. For at begynde, venligst v\u00e6lg dit fortrukne sprog.", - "TellUsAboutYourself": "Fort\u00e6l os lidt om dig selv", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "Dit fornavn", - "MoreUsersCanBeAddedLater": "Flere brugere kan tilf\u00f8jes senere i Betjeningspanelet.", - "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "Windows Service", - "AWindowsServiceHasBeenInstalled": "Der er blevet installeret en Windows Service.", - "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", - "WindowsServiceIntro2": "Hvis windows servicen bruges skal du v\u00e6re opm\u00e6rksom p\u00e5, at servicen ikke kan k\u00f8re p\u00e5 samme tid som tray ikonet. Det er derfor n\u00f8dvendigt at afslutte tray ikonet f\u00f8r servicen startes. Det er n\u00f8dvendigt at konfigurere servicen til at k\u00f8re med administrative privileger, som kan g\u00f8res via Windows Service kontrol panelet. V\u00e6r opm\u00e6rksom p\u00e5 at servicen p\u00e5 nuv\u00e6rende tidspunkt ikke er i stand til at auto opdatere, s\u00e5 opdatering vil kr\u00e6ve manuel handling.", - "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", - "LabelConfigureSettings": "Konfigurer indstillinger", - "LabelEnableVideoImageExtraction": "Aktiver udtr\u00e6kning af video billede", - "VideoImageExtractionHelp": "For videoer der ikke allerede har billeder, og som vi ikke kan finde internet billeder til. Dette vil g\u00f8re den indledende biblioteks skanning l\u00e6ngere, men vil resulterer i en p\u00e6nere pr\u00e6sentation.", - "LabelEnableChapterImageExtractionForMovies": "Aktiver udtr\u00e6kning af kapitel billeder for Film", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Aktiver automatisk port kortl\u00e6gning", - "LabelEnableAutomaticPortMappingHelp": "UPnP tillader automatisk router konfiguration for nem fjern adgang. Dette virker muligvis ikke med alle routere.", - "HeaderTermsOfService": "Emby Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LinkedToEmbyConnect": "Linked to Emby Connect", - "HeaderSupporterBenefits": "Supporter Benefits", - "HeaderAddUser": "Tilf\u00f8j bruger", - "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", - "LabelPinCode": "Pin kode:", - "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", - "HeaderSync": "Sync", - "ButtonOk": "Ok", - "ButtonCancel": "Annuller", - "ButtonExit": "Afslut", - "ButtonNew": "Ny", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Stier", - "CategorySync": "Sync", - "TabPlaylist": "Playlist", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Doner via PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "Brugernavn eller e-mail:", - "LabelEnterConnectUserNameHelp": "This is your Emby online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "FIlm", - "FolderTypeMusic": "Musik", - "FolderTypeAdultVideos": "Voksenfilm", - "FolderTypePhotos": "Fotos", - "FolderTypeMusicVideos": "Musikvideoer", - "FolderTypeHomeVideos": "Hjemmevideoer", - "FolderTypeGames": "Spil", - "FolderTypeBooks": "B\u00f8ger", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "Konfigurer dit medie bibliotek", - "ButtonAddMediaFolder": "Tilf\u00f8j medie mappe", - "LabelFolderType": "Mappe type:", - "ReferToMediaLibraryWiki": "Der henvises til medie bibliotekets wiki.", - "LabelCountry": "Land:", - "LabelLanguage": "Sprog:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "Foretrukket metadata sprog:", - "LabelSaveLocalMetadata": "Gem illustrationer og metadata i medie mapper", - "LabelSaveLocalMetadataHelp": "Lagring af illustrationer og metadata i medie mapper, vil placerer dem et sted hvor de nemt kan redigeres.", - "LabelDownloadInternetMetadata": "Hent illustrationer og metadata fra internettet", - "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", - "TabPreferences": "Indstillinger", - "TabPassword": "Kode", - "TabLibraryAccess": "Bibliotek adgang", - "TabAccess": "Access", - "TabImage": "Billede", - "TabProfile": "Profil", - "TabMetadata": "Metadata", - "TabImages": "Billeder", - "TabNotifications": "Notifikationer", - "TabCollectionTitles": "Titler", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Vis manglende episoder i s\u00e6soner", - "LabelUnairedMissingEpisodesWithinSeasons": "Vis endnu ikke sendte episoder i s\u00e6soner" + "HeaderNewServer": "Ny server", + "ButtonChangeServer": "Skift server", + "HeaderConnectToServer": "Forbind til server", + "OptionReportList": "Liste visning", + "OptionReportStatistics": "Statistik", + "OptionReportGrouping": "Gruppering", + "HeaderExport": "Eksporter", + "HeaderColumns": "S\u00f8jler", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Aktiver eksterne afspillere", + "ButtonUnlockGuide": "Opl\u00e5s guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/de.json b/MediaBrowser.Server.Implementations/Localization/Server/de.json index 3e40992d7..592b80fd8 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/de.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/de.json @@ -1,5 +1,4 @@ { - "TabWebClient": "Webclient", "LabelExit": "Beenden", "LabelVisitCommunity": "Besuche die Community", "LabelGithub": "Github", @@ -14,6 +13,7 @@ "LabelShowLogWindow": "Zeige Log Fenster", "LabelPrevious": "Vorheriges", "LabelFinish": "Fertig", + "FolderTypeMixed": "Mixed content", "LabelNext": "N\u00e4chstes", "LabelYoureDone": "Du bist fertig!", "WelcomeToProject": "Willkommen bei Emby!", @@ -79,7 +79,7 @@ "HeaderSyncRequiresSupporterMembership": "Synchronisation ben\u00f6tigt eine Supporter-Mitgliedschaft", "HeaderEnjoyDayTrial": "Genie\u00dfen Sie eine 14 Tage Testversion", "LabelSyncTempPath": "Verzeichnis f\u00fcr tempor\u00e4re Dateien", - "LabelSyncTempPathHelp": "Legen Sie einen eigenen Synchronisations-Arbeits Verzeichnis fest. Konvertierte Medien werden w\u00e4hrend der Synchronisation hier gespeichert.", + "LabelSyncTempPathHelp": "Legen Sie ein eigenes Synchronisations-Arbeits Verzeichnis fest. Konvertierte Medien werden w\u00e4hrend der Synchronisation hier gespeichert.", "LabelCustomCertificatePath": "Eigener Zertifikats Ordner:", "LabelCustomCertificatePathHelp": "F\u00fcgen Sie ihr eigenes SSL Zertifikat als .pfx Datei hinzu. Wenn ausgelassen, wird der Server ein selbst signiertes Zertifikat f\u00fcr Sie erstellen.", "TitleNotifications": "Benachrichtigungen", @@ -87,11 +87,10 @@ "OptionDetectArchiveFilesAsMedia": "Behandle Archive wie Medien", "OptionDetectArchiveFilesAsMediaHelp": "Wenn aktiviert werden .rar und .zip Datei-Erweiterungen wie Medien behandelt.", "LabelEnterConnectUserName": "Benutzername oder Email:", - "LabelEnterConnectUserNameHelp": "Dies ist Ihr Emby online Konto Benutzername oder Passwort.", + "LabelEnterConnectUserNameHelp": "Dies ist Ihr Emby online Zugangs Benutzername oder Passwort.", "LabelEnableEnhancedMovies": "Aktiviere erweiterte Filmdarstellung.", "LabelEnableEnhancedMoviesHelp": "Wenn aktiviert, werden Filme als Verzeichnisse dargestellt, welche Trailer, Extras, Besetzung & Crew sowie weitere Inhalte enth\u00e4lt.", "HeaderSyncJobInfo": "Synchronisations-Aufgabe", - "FolderTypeMixed": "Gemischte Inhalte", "FolderTypeMovies": "Filme", "FolderTypeMusic": "Musik", "FolderTypeAdultVideos": "Videos f\u00fcr Erwachsene", @@ -288,7 +287,9 @@ "OptionFileMetadataYearMismatch": "Datei \/ Metadaten Jahre stimmen nicht \u00fcberein", "TabGeneral": "Allgemein", "TitleSupport": "Support", + "LabelSeasonNumber": "Staffelnummer", "TabLog": "Log", + "LabelEpisodeNumber": "Episodennummer", "TabAbout": "\u00dcber", "TabSupporterKey": "Unterst\u00fctzerschl\u00fcssel", "TabBecomeSupporter": "Werde ein Unterst\u00fctzer", @@ -314,6 +315,9 @@ "OptionAllowRemoteControlOthers": "Erlaube Fernsteuerung anderer Benutzer", "OptionAllowRemoteSharedDevices": "Erlaube Fernsteuerung geteilter Ger\u00e4te", "OptionAllowRemoteSharedDevicesHelp": "DLNA-Ger\u00e4te werden gemeinsam genutzt, bis ein Benutzer die Steuerung \u00fcbernimmt.", + "OptionAllowLinkSharing": "Erlaube das Teilen in sozialen Netzwerken", + "OptionAllowLinkSharingHelp": "Es werden nur Web-Seiten mit Medieninformationen geteilt. Medien werden niemals \u00f6ffentlich geteilt. Die geteilten Inhalte sind nur begrenzt zug\u00e4nglich und werden basieren auf den Servereinstellungen ung\u00fcltig.", + "HeaderSharing": "Teilen", "HeaderRemoteControl": "Fernsteuerung", "OptionMissingTmdbId": "Fehlende Tmdb Id", "OptionIsHD": "HD", @@ -405,8 +409,8 @@ "ButtonRefresh": "Aktualisieren", "ButtonAdvancedRefresh": "Erweiterte Aktualiserung", "OptionPriority": "Priorit\u00e4t", - "OptionRecordOnAllChannels": "Record on all channels", - "OptionRecordAnytime": "Record at any time", + "OptionRecordOnAllChannels": "Auf allen Kan\u00e4len aufzeichnen", + "OptionRecordAnytime": "Zu jeder Zeit aufzeichnen", "OptionRecordOnlyNewEpisodes": "Nehme nur neue Episoden auf", "HeaderRepeatingOptions": "Wiederholungs Einstellungen", "HeaderDays": "Tage", @@ -552,7 +556,7 @@ "LabelPublicHttpsPort": "\u00d6ffentliche HTTPS Portnummer:", "LabelPublicHttpsPortHelp": "Die \u00f6ffentliche Portnummer sollte einem lokalen HTTPS Port zugewiesen werden.", "LabelEnableHttps": "Gebe HTTPS als externe Adresse aus", - "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", + "LabelEnableHttpsHelp": "Wenn eingeschaltet, wird der Server eine https url als externe Adresse an alle Clients melden.", "LabelHttpsPort": "Lokale HTTPS Portnummer:", "LabelHttpsPortHelp": "Die TCP Port-Nummer f\u00fcr sichere Emby https Verbindungen.", "LabelWebSocketPortNumber": "Web Socket Port Nummer:", @@ -582,8 +586,6 @@ "LabelSkipped": "\u00dcbersprungen", "HeaderEpisodeOrganization": "Episodensortierung", "LabelSeries": "Serien:", - "LabelSeasonNumber": "Staffelnummer:", - "LabelEpisodeNumber": "Episodennummer:", "LabelEndingEpisodeNumber": "Nummer der letzten Episode:", "LabelEndingEpisodeNumberHelp": "Nur erforderlich f\u00fcr Mehrfachepisoden", "HeaderSupportTheTeam": "Unterst\u00fctzen Sie das Emby Team", @@ -798,7 +800,7 @@ "LabelMaxBitrateHelp": "Lege eine maximale Bitrate, f\u00fcr Anwendungsgebiete mit begrenzter Bandbreite oder bei durch die Endger\u00e4te auferlegten Banbdbreitenbegrenzungen, fest", "LabelMaxStreamingBitrate": "Maximale Streamingbitrate", "LabelMaxStreamingBitrateHelp": "W\u00e4hle die maximale Bitrate w\u00e4hrend des streamens.", - "LabelMaxChromecastBitrate": "Max Chromecast bitrate:", + "LabelMaxChromecastBitrate": "Max Chromcast Datenrate:", "LabelMaxStaticBitrate": "Maximale Synchronisierungsbitrate ", "LabelMaxStaticBitrateHelp": "W\u00e4hle die maximale Bitrate f\u00fcr das synchronisieren von Inhalten mit hoher Qualit\u00e4t.", "LabelMusicStaticBitrate": "Musik Synchronisierungsbitrate:", @@ -871,10 +873,11 @@ "HeaderTypeText": "Texteingabe", "LabelTypeText": "Text", "HeaderSearchForSubtitles": "Suche nach Untertiteln", + "ButtonMore": "More", "MessageNoSubtitleSearchResultsFound": "Keine Suchergebnisse gefunden", "TabDisplay": "Anzeige", "TabLanguages": "Sprachen", - "TabAppSettings": "App Settings", + "TabAppSettings": "App Einstellungen", "LabelEnableThemeSongs": "Aktiviere Titelmelodie", "LabelEnableBackdrops": "Aktiviere Hintergr\u00fcnde", "LabelEnableThemeSongsHelp": "Wenn aktiviert, wird die Titelmusik w\u00e4hrend dem Durchsuchen durch die Bibliothek im Hintergrund abgespielt", @@ -901,7 +904,7 @@ "HeaderLiveTv": "Live-TV", "HeaderReports": "Berichte", "HeaderMetadataManager": "Metadaten-Manager", - "HeaderPreferences": "Einstellungen", + "HeaderSettings": "Einstellungen", "MessageLoadingChannels": "Lade Kanalinhalt...", "MessageLoadingContent": "Lade Inhalt...", "ButtonMarkRead": "Als gelesen markieren", @@ -1099,7 +1102,6 @@ "OptionReportArtists": "Interpreten", "OptionReportAlbums": "Alben", "OptionReportAdultVideos": "Videos f\u00fcr Erwachsene", - "ButtonMore": "Mehr", "HeaderActivity": "Aktivit\u00e4ten", "ScheduledTaskStartedWithName": "{0} gestartet", "ScheduledTaskCancelledWithName": "{0} wurde abgebrochen", @@ -1229,6 +1231,7 @@ "OptionNoThemeVideo": "Kein Theme Video", "LabelOneTimeDonationAmount": "Spendenbetrag:", "ButtonDonate": "Spenden", + "ButtonPurchase": "Kaufen", "OptionActor": "Schauspieler", "OptionComposer": "Komponist", "OptionDirector": "Regisseur", @@ -1248,7 +1251,6 @@ "HeaderDeveloperInfo": "Entwicklerinformationen", "HeaderRevisionHistory": "Versionsverlauf", "ButtonViewWebsite": "Besuche die Website", - "LabelRecurringDonationCanBeCancelledHelp": "Fortlaufende Spenden k\u00f6nnen jederzeit \u00fcber deinen PayPal Account gek\u00fcndigt werden.", "HeaderXmlSettings": "XML Einstellungen", "HeaderXmlDocumentAttributes": "XML-Dokument Eigenschaften", "HeaderXmlDocumentAttribute": "XML-Dokument Eigenschaft", @@ -1262,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Erfahren Sie mehr \u00fcber Emby-Connect", "LabelExternalPlayers": "Externe Abspielger\u00e4te:", "LabelExternalPlayersHelp": "Zeige Buttons um Inhalt auf externen Ger\u00e4te abzuspielen. Dies ist nur auf Ger\u00e4ten verf\u00fcgbar, die URL Schemes unterst\u00fctzen (Generell Android und iOS). In Verbindung mit externen Abspielern gibt es generell keine Unterst\u00fctzung f\u00fcr die Fernbedienung oder die Fortsetzung von gesehenen Inhalten.", + "LabelNativeExternalPlayersHelp": "Zeige Schaltfl\u00e4chen f\u00fcr Wiedergabe in externen Playern.", + "LabelEnableItemPreviews": "Aktiviere Vorschaubild f\u00fcr Eintrag", + "LabelEnableItemPreviewsHelp": "Wenn aktiviert, wird bei bestimmten Darstellungen eine Vorschauen bei Klick angezeigt.", "HeaderSubtitleProfile": "Untertitel Profil", "HeaderSubtitleProfiles": "Untertitel Profile", "HeaderSubtitleProfilesHelp": "Untertitel Profile beschreiben die vom Ger\u00e4t unterst\u00fctzten Untertitelformate.", @@ -1390,48 +1395,60 @@ "HeaderUpcomingMovies": "Bevorstehende Filme", "HeaderUpcomingSports": "Folgende Sportveranstaltungen", "HeaderUpcomingPrograms": "Bevorstehende Programme", - "ButtonMoreItems": "Mehr...", + "ButtonMoreItems": "Mehr", "LabelShowLibraryTileNames": "Zeige Bibliothek Kachelnamen.", "LabelShowLibraryTileNamesHelp": "Legen Sie fest, ob Beschriftungen unter den Kacheln der Startseite angezeigt werden sollen.", "OptionEnableTranscodingThrottle": "aktiviere Drosselung", "OptionEnableTranscodingThrottleHelp": "Die Drosselung justiert die Transkodier-Geschwindigkeit, um die Server CPU Auslastung w\u00e4hrend der Wiedergabe zu minimieren.", - "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "LabelUploadSpeedLimit": "Upload Geschwindigkeitslimit (Mbps):", "OptionAllowSyncTranscoding": "Erlaube Synchronisation die Transkodierung ben\u00f6tigen", "HeaderPlayback": "Medien Wiedergabe", "OptionAllowAudioPlaybackTranscoding": "Erlaube Audio-Wiedergabe die Transkodierung ben\u00f6tigt", "OptionAllowVideoPlaybackTranscoding": "Erlaube Video-Wiedergabe die Transkodierung ben\u00f6tigt", - "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "OptionAllowMediaPlaybackTranscodingHelp": "Benutzer werden, basierend auf deren Einstellungen, eine aussagekr\u00e4ftige Nachricht erhalten, wenn Inhalte nicht abgespielt werden k\u00f6nnen.", "TabStreaming": "Streaming", - "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimit": "Entfernte Client Datenraten-Begrenzung (Mbps):", "LabelRemoteClientBitrateLimitHelp": "Eine optionale Streaming Datengrenze f\u00fcr alle Clients mit Fernzugriff. Dies verhindert, dass Clients eine h\u00f6here Bandbreite als die zur Verf\u00fcgung stehende Verbindung, anfragen.", "LabelConversionCpuCoreLimit": "CPU Kerne Limit:", "LabelConversionCpuCoreLimitHelp": "Begrenzt die Anzahl der verwendeten CPU Kerne w\u00e4hrend der Konvertierung f\u00fcr die Synchronisation.", "OptionEnableFullSpeedConversion": "Aktiviere Hochleistung-Konvertierung.", - "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "OptionEnableFullSpeedConversionHelp": "Standardm\u00e4\u00dfig werden Synchronisations-Konvertierungen bei geringer Geschwindigkeit durchgef\u00fchrt um Ressourcen zu sparen.", "HeaderPlaylists": "Wiedergabeliste", - "HeaderSelectDate": "Datum w\u00e4hlen", - "HeaderWelcomeExclamation": "Willkommen!", - "HeaderMyPreferences": "Meine Einstellungen", - "ButtonMyPreferencesWelcomeYes": "Ja, ich m\u00f6chte meine Einstellungen nun festlegen.", - "ButtonMyPreferencesWelcomeNo": "Nein danke, das mache ich sp\u00e4ter.", - "MyPreferencesWelcomeMessage1": "Wir pr\u00e4sentieren Ihnen Ihre Bibliothek in einer Art, wie wir denken, dass es Ihnen gefallen d\u00fcrfte. Die Darstellung und Gruppierung des Inhaltes kann jederzeit in Ihren Einstellungen angepasst werden. Ihre Einstellungen werden auf alle Empy Apps \u00fcbertragen.", - "MyPreferencesWelcomeMessage2": "M\u00f6chten Sie Ihre Einstellungen nun festlegen?", - "ToAccessPreferencesHelp": "Um Ihre Einstellungen sp\u00e4ter zu \u00e4ndern, klicken Sie ihr Benutzer-Icon im oberen rechten Bereich oder w\u00e4hlen Sie \"Meine Einstellungen\".", "HeaderViewStyles": "Zeige Stiele", - "LabelSelectViewStyles": "Enable enhanced presentations for:", + "LabelSelectViewStyles": "Aktiviere erweiterte Ansichten f\u00fcr:", "LabelSelectViewStylesHelp": "Wenn aktiviert werden Darstellungen von Kategorien mit Medieninformationen wie Empfehlungen, k\u00fcrzlich hinzugef\u00fcgt, Genres und weitere, angereichert. Wenn deaktiviert werden diese nur als simple Verzeichnisse dargestellt.", - "TabPhotos": "Photos", + "TabPhotos": "Fotos", "TabVideos": "Videos", - "HeaderWelcomeToEmby": "Welcome to Emby", - "EmbyIntroMessage": "With Emby you can easily stream videos, music and photos to smart phones, tablets and other devices from your Emby Server.", - "ButtonSkip": "Skip", - "TextConnectToServerManually": "Connect to server manually", - "ButtonSignInWithConnect": "Sign in with Emby Connect", - "ButtonConnect": "Connect", - "LabelServerHost": "Host:", - "LabelServerHostHelp": "192.168.1.100 or https:\/\/myserver.com", + "HeaderWelcomeToEmby": "Willkommen zu Emby", + "EmbyIntroMessage": "Mit Emby k\u00f6nnen Sie auf auf einfache Art und Weise Videos, Musik und Fotos zu Smartphones, Tablets und anderen Ger\u00e4ten von Ihrem Emby-Server senden.", + "ButtonSkip": "\u00dcberspringen", + "TextConnectToServerManually": "Verbinde manuell zum Server", + "ButtonSignInWithConnect": "Anmelden mit Emby Connect", + "ButtonConnect": "Verbinde", + "LabelServerHost": "Adresse:", + "LabelServerHostHelp": "192.168.1.100 oder https:\/\/myserver.com", "LabelServerPort": "Port:", - "HeaderNewServer": "New Server", - "ButtonChangeServer": "Change Server", - "HeaderConnectToServer": "Connect to Server" + "HeaderNewServer": "Neuer Server", + "ButtonChangeServer": "Wechsel Server", + "HeaderConnectToServer": "Verbinde zu Server", + "OptionReportList": "Listenanzeige", + "OptionReportStatistics": "Statistik", + "OptionReportGrouping": "Gruppierung", + "HeaderExport": "Export", + "HeaderColumns": "Spalten", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Aktiviere externe Videoplayer", + "ButtonUnlockGuide": "Guide freischalten", + "LabelEnableFullScreen": "Aktiviere Vollbild", + "LabelEnableChromecastAc3Passthrough": "Aktiviere direkte Chromcast AC3 Weiterleitung", + "LabelSyncPath": "Pfad der synchronisierten Medien:", + "LabelEmail": "Email:", + "LabelUsername": "Benutzername:", + "HeaderSignUp": "Anmelden", + "LabelPasswordConfirm": "Passwort (Best\u00e4tigung):", + "ButtonAddServer": "Server hinzuf\u00fcgen", + "TabHomeScreen": "Startseite", + "HeaderDisplay": "Anzeigen", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "Diese Einstellungen werden mit allen Ger\u00e4ten geteilt" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/el.json b/MediaBrowser.Server.Implementations/Localization/Server/el.json index 31e198295..351664681 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/el.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/el.json @@ -1,5 +1,116 @@ { - "TabWebClient": "Web Client", + "LabelExit": "\u0388\u03be\u03bf\u03b4\u03bf\u03c2", + "LabelVisitCommunity": "\u039a\u03bf\u03b9\u03bd\u03cc\u03c4\u03b7\u03c4\u03b1", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "\u03a0\u03c1\u03cc\u03c4\u03c5\u03c0\u03bf", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "\u03a0\u03b7\u03b3\u03ad\u03c2 \u03a0\u03c1\u03bf\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ae", + "LabelBrowseLibrary": "\u03a0\u03b5\u03c1\u03b9\u03b7\u03b3\u03b7\u03b8\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03b7 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7", + "LabelConfigureServer": "\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 Emby", + "LabelOpenLibraryViewer": "\u03b1\u03bd\u03bf\u03af\u03be\u03b5\u03c4\u03b5 \u03c4\u03b7\u03bd \u0392\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7 \u03b8\u03b5\u03b1\u03c4\u03ae", + "LabelRestartServer": "\u0395\u03c0\u03b1\u03bd\u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7 \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae", + "LabelShowLogWindow": "\u0391\u03c1\u03c7\u03b5\u03af\u03bf \u039a\u03b1\u03c4\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2", + "LabelPrevious": "\u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf\u03c2", + "LabelFinish": "\u03a4\u03ad\u03bb\u03bf\u03c2", + "FolderTypeMixed": "Mixed content", + "LabelNext": "\u0395\u03c0\u03cc\u03bc\u03b5\u03bd\u03bf", + "LabelYoureDone": "\u0395\u03af\u03c3\u03c4\u03b5 \u0388\u03c4\u03bf\u03b9\u03bc\u03bf\u03b9!", + "WelcomeToProject": "\u039a\u03b1\u03bb\u03c9\u03c2 \u03ae\u03c1\u03b8\u03b1\u03c4\u03b5 \u03c3\u03c4\u03bf Emby!", + "ThisWizardWillGuideYou": "\u0391\u03c5\u03c4\u03cc\u03c2 \u03bf \u03bf\u03b4\u03b7\u03b3\u03cc\u03c2 \u03b8\u03b1 \u03c3\u03b1\u03c2 \u03ba\u03b1\u03b8\u03bf\u03b4\u03b7\u03b3\u03ae\u03c3\u03b5\u03b9 \u03bc\u03ad\u03c3\u03c9 \u03c4\u03b7\u03c2 \u03b4\u03b9\u03b1\u03b4\u03b9\u03ba\u03b1\u03c3\u03af\u03b1\u03c2 \u03b5\u03b3\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7\u03c2. \u0393\u03b9\u03b1 \u03bd\u03b1 \u03be\u03b5\u03ba\u03b9\u03bd\u03ae\u03c3\u03b5\u03c4\u03b5, \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03c4\u03b7 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1 \u03c4\u03b7\u03c2 \u03c0\u03c1\u03bf\u03c4\u03af\u03bc\u03b7\u03c3\u03ae\u03c2 \u03c3\u03b1\u03c2.", + "TellUsAboutYourself": "\u03a0\u03b5\u03af\u03c4\u03b5 \u03bc\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03b5\u03c3\u03ac\u03c2", + "ButtonQuickStartGuide": "\u039f\u03b4\u03b7\u03b3\u03cc\u03c2 \u03b3\u03c1\u03ae\u03b3\u03bf\u03c1\u03b7\u03c2 \u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7\u03c2", + "LabelYourFirstName": "\u03a4\u03bf \u03cc\u03bd\u03bf\u03bc\u03ac \u03c3\u03b1\u03c2", + "MoreUsersCanBeAddedLater": "\u03a0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03bf\u03c5\u03c2 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b5\u03c2 \u03bc\u03c0\u03bf\u03c1\u03bf\u03cd\u03bd \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03c4\u03b5\u03b8\u03bf\u03cd\u03bd \u03b1\u03c1\u03b3\u03cc\u03c4\u03b5\u03c1\u03b1 \u03bc\u03b5 \u03c4\u03bf \u03c4\u03b1\u03bc\u03c0\u03bb\u03cc", + "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", + "LabelWindowsService": "\u03a5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 Windows", + "AWindowsServiceHasBeenInstalled": "\u039c\u03b9\u03b1 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 Windows \u03ad\u03c7\u03b5\u03b9 \u03b5\u03b3\u03ba\u03b1\u03c4\u03b1\u03c3\u03c4\u03b1\u03b8\u03b5\u03af", + "WindowsServiceIntro1": "\u039f \u0394\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae\u03c2 Emby \u03ba\u03b1\u03bd\u03bf\u03bd\u03b9\u03ba\u03ac \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03b5\u03af \u03c3\u03b1\u03bd \u03bc\u03b9\u03b1 \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae \u03bc\u03b5 \u03b5\u03b9\u03ba\u03bf\u03bd\u03af\u03b4\u03b9\u03bf, \u03b1\u03bb\u03bb\u03ac \u03b1\u03bd \u03c0\u03c1\u03bf\u03c4\u03b9\u03bc\u03ac\u03c4\u03b5 \u03bd\u03b1 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03b5\u03af \u03c3\u03b1\u03bd \u03bc\u03b9\u03b1 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03c3\u03c4\u03bf \u03b2\u03ac\u03b8\u03bf\u03c2, \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03b5\u03ba\u03ba\u03b9\u03bd\u03b7\u03b8\u03b5\u03af \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c0\u03af\u03bd\u03b1\u03ba\u03b1 \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5 \u03c4\u03c9\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03b9\u03ce\u03bd \u03c4\u03c9\u03bd Windows", + "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", + "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", + "LabelConfigureSettings": "\u0394\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03ce\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2", + "LabelEnableVideoImageExtraction": "\u0395\u03be\u03b1\u03b3\u03c9\u03b3\u03ae \u0395\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2 \u03b1\u03c0\u03cc \u0392\u03af\u03bd\u03c4\u03b5\u03bf", + "VideoImageExtractionHelp": "\u0393\u03b9\u03b1 \u03c4\u03b1 \u03b2\u03af\u03bd\u03c4\u03b5\u03bf \u03c0\u03bf\u03c5 \u03b4\u03b5\u03bd \u03ad\u03c7\u03bf\u03c5\u03bd \u03ae\u03b4\u03b7 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b5\u03c2, \u03ba\u03b1\u03b9 \u03b4\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03ad\u03c3\u03b1\u03bc\u03b5 \u03bd\u03b1 \u03b2\u03c1\u03bf\u03cd\u03bc\u03b5 \u03c3\u03c4\u03bf \u03b4\u03b9\u03b1\u03b4\u03af\u03ba\u03c4\u03c5\u03bf. \u0391\u03c5\u03c4\u03cc \u03b8\u03b1 \u03ba\u03b1\u03b8\u03c5\u03c3\u03c4\u03b5\u03c1\u03ae\u03c3\u03b5\u03b9 \u03bb\u03af\u03b3\u03bf \u03c4\u03b7\u03bd \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7 \u03c3\u03c4\u03b7\u03bd \u03b1\u03c1\u03c7\u03b9\u03ba\u03ae \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7 \u03b1\u03bb\u03bb\u03b1 \u03b8\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b7 \u03c4\u03b5\u03bb\u03b9\u03ba\u03ae \u03bc\u03bf\u03c1\u03c6\u03ae \u03c0\u03b9\u03bf \u03cc\u03bc\u03bf\u03c1\u03c6\u03b7.", + "LabelEnableChapterImageExtractionForMovies": "\u0395\u03be\u03b1\u03b3\u03c9\u03b3\u03ae \u0395\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2 \u039a\u03b5\u03c6\u03b1\u03bb\u03bb\u03b1\u03af\u03c9\u03bd \u03b3\u03b9\u03b1 \u03c4\u03b9\u03c2 \u03a4\u03b1\u03b9\u03bd\u03af\u03b5\u03c2", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7\u03c2 \u03ba\u03b1\u03c4\u03b1\u03c7\u03ce\u03c1\u03b7\u03c3\u03b7\u03c2 \u0398\u03c5\u03c1\u03ce\u03bd", + "LabelEnableAutomaticPortMappingHelp": "To UPnP \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03b9 \u03c4\u03b7\u03bd \u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03c1\u03cd\u03b8\u03bc\u03b9\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03b4\u03c1\u03bf\u03bc\u03bf\u03bb\u03bf\u03b3\u03b7\u03c4\u03ae \u03b3\u03b9\u03b1 \u03b5\u03cd\u03ba\u03bf\u03bb\u03b7 \u03b1\u03c0\u03bf\u03bc\u03b1\u03ba\u03c1\u03c5\u03c3\u03bc\u03ad\u03bd\u03b7 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7. \u0391\u03c5\u03c4\u03ae \u03b7 \u03c1\u03cd\u03b8\u03bc\u03b9\u03c3\u03b7 \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03bc\u03b7\u03bd \u03b4\u03bf\u03c5\u03bb\u03ad\u03c8\u03b5\u03b9 \u03bc\u03b5 \u03ba\u03ac\u03c0\u03bf\u03b9\u03b1 \u03bc\u03bf\u03bd\u03c4\u03ad\u03bb\u03b1 \u03b4\u03c1\u03bf\u03bc\u03bf\u03bb\u03bf\u03b3\u03b7\u03c4\u03ce\u03bd", + "HeaderTermsOfService": "Emby Terms of Service", + "MessagePleaseAcceptTermsOfService": "\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b1\u03c0\u03bf\u03b4\u03b5\u03c7\u03c4\u03b5\u03af\u03c4\u03b5 \u03c4\u03bf\u03c5\u03c2 \u038c\u03c1\u03bf\u03c5\u03c2 \u03a7\u03c1\u03ae\u03c3\u03b7\u03c2 \u03ba\u03b1\u03b9 \u03a0\u03c1\u03bf\u03c3\u03c4\u03b1\u03c3\u03af\u03b1\u03c2 \u0394\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd \u03c0\u03c1\u03b9\u03bd \u03c0\u03c1\u03bf\u03c7\u03c9\u03c1\u03ae\u03c3\u03b5\u03c4\u03b5.", + "OptionIAcceptTermsOfService": "\u0391\u03c0\u03cc\u03b4\u03b5\u03c7\u03bf\u03bc\u03b1\u03b9 \u03c4\u03bf\u03c5\u03c2 \u038c\u03c1\u03bf\u03c5\u03c2 \u03a7\u03c1\u03ae\u03c3\u03b7\u03c2", + "ButtonPrivacyPolicy": "\u03a0\u03c1\u03bf\u03c3\u03c4\u03b1\u03c3\u03af\u03b1 \u0394\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd", + "ButtonTermsOfService": "\u038c\u03c1\u03bf\u03b9 \u03a7\u03c1\u03ae\u03c3\u03b7\u03c2", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Ene", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "\u039f\u03c1\u03b3\u03ac\u03bd\u03c9\u03c3\u03b7", + "LinkedToEmbyConnect": "Linked to Emby Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "\u03a0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7 \u03a7\u03c1\u03ae\u03c3\u03c4\u03b7", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", + "ButtonOk": "\u0395\u03bd\u03c4\u03ac\u03be\u03b5\u03b9", + "ButtonCancel": "\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7 ", + "ButtonExit": "\u0388\u03be\u03bf\u03b4\u03bf\u03c2", + "ButtonNew": "\u039d\u03ad\u03bf", + "HeaderTV": "\u03a4\u03b7\u03bb\u03b5\u03cc\u03c1\u03b1\u03c3\u03b7", + "HeaderAudio": "\u0389\u03c7\u03bf\u03c2", + "HeaderVideo": "\u0392\u03af\u03bd\u03c4\u03b5\u03bf", + "HeaderPaths": "\u0394\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae", + "CategorySync": "\u03a3\u03c5\u03c7\u03c1\u03bf\u03bd\u03b9\u03c3\u03bc\u03cc\u03c2", + "TabPlaylist": "\u039b\u03af\u03c3\u03c4\u03b1", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "\u0395\u03bd\u03ae\u03bb\u03b9\u03ba\u03bf\u03b9 \u03bc\u03cc\u03bd\u03bf!", + "DividerOr": "--\u03ae--", + "HeaderInstalledServices": "\u0395\u03b3\u03ba\u03b1\u03c4\u03b5\u03c3\u03c4\u03b7\u03bc\u03ad\u03bd\u03b5\u03c2 \u03a5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b5\u03c2", + "HeaderAvailableServices": "\u0394\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b5\u03c2 \u03a5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b5\u03c2", + "MessageNoServicesInstalled": "\u039a\u03b1\u03bc\u03af\u03b1 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03b3\u03ba\u03b1\u03c4\u03b5\u03c3\u03c4\u03b7\u03bc\u03ad\u03bd\u03b7.", + "HeaderToAccessPleaseEnterEasyPinCode": "\u0393\u03b9\u03b1 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7, \u03c0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b4\u03ce\u03c3\u03c4\u03b5 \u03c4\u03bf\u03bd \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c3\u03b1\u03c2", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "\u039f\u03b9 \u03b5\u03bd\u03ae\u03bb\u03b9\u03ba\u03bf\u03b9 \u03b4\u03b9\u03b1\u03b2\u03ac\u03c3\u03c4\u03b5!", + "RegisterWithPayPal": "\u0395\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae \u03bc\u03b5 Paypal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "\u0391\u03c0\u03bf\u03bb\u03b1\u03cd\u03c3\u03c4\u03b5 14 \u039c\u03ad\u03c1\u03b5\u03c2 \u0394\u03bf\u03ba\u03b9\u03bc\u03b1\u03c3\u03c4\u03b9\u03ba\u03ae\u03c2 \u03a0\u03b5\u03c1\u03b9\u03cc\u03b4\u03bf\u03c5", + "LabelSyncTempPath": "\u03a6\u03ac\u03ba\u03b5\u03bb\u03bf\u03c2 \u03a0\u03c1\u03bf\u03c3\u03c9\u03c1\u03b9\u03bd\u03ce\u03bd \u0391\u03c1\u03c7\u03b5\u03af\u03c9\u03bd", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "\u0395\u03b9\u03b4\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03b9\u03c2", + "ButtonDonateWithPayPal": "\u0394\u03c9\u03c1\u03b5\u03ac \u03bc\u03ad\u03c3\u03c9 Paypal", + "OptionDetectArchiveFilesAsMedia": "\u0391\u03bd\u03b1\u03b3\u03bd\u03ce\u03c1\u03b9\u03c3\u03b5 \u03a3\u03c5\u03bc\u03c0\u03b9\u03b5\u03c3\u03bc\u03ad\u03bd\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03b1 \u03c9\u03c2 \u03c0\u03bf\u03bb\u03c5\u03bc\u03ad\u03c3\u03b1.", + "OptionDetectArchiveFilesAsMediaHelp": "\u0391\u03c1\u03c7\u03b5\u03af\u03b1 \u03bc\u03b5 .rar \u03ba\u03b1\u03b9 .zip \u03ba\u03b1\u03c4\u03b1\u03bb\u03ae\u03be\u03b5\u03b9\u03c2 \u03b8\u03b1 \u03b1\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03af\u03b6\u03bf\u03bd\u03c4\u03b1\u03b9 \u03c9\u03c2 \u03b1\u03c1\u03c7\u03b5\u03af\u03b1 \u03c0\u03bf\u03bb\u03c5\u03bc\u03ad\u03c3\u03c9\u03bd.", + "LabelEnterConnectUserName": "Username or email:", + "LabelEnterConnectUserNameHelp": "This is your Emby online account username or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "\u0395\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03a3\u03c5\u03b3\u03c7\u03c1\u03bf\u03bd\u03b9\u03c3\u03bc\u03bf\u03cd", + "FolderTypeMovies": "\u03a4\u03b1\u03b9\u03bd\u03af\u03b5\u03c2", + "FolderTypeMusic": "\u039c\u03bf\u03c5\u03c3\u03b9\u03ba\u03ae", + "FolderTypeAdultVideos": "\u03a4\u03b1\u03b9\u03bd\u03af\u03b5\u03c2 \u0395\u03bd\u03b7\u03bb\u03af\u03ba\u03c9\u03bd", + "FolderTypePhotos": "\u03a6\u03c9\u03c4\u03bf\u03b3\u03c1\u03b1\u03c6\u03af\u03b5\u03c2", + "FolderTypeMusicVideos": "\u039c\u03bf\u03c5\u03c3\u03b9\u03ba\u03ac \u0392\u03af\u03bd\u03c4\u03b5\u03bf", + "FolderTypeHomeVideos": "\u03a0\u03c1\u03bf\u03c3\u03c9\u03c0\u03b9\u03ba\u03ac \u0392\u03af\u03bd\u03c4\u03b5\u03bf", + "FolderTypeGames": "\u03a0\u03b1\u03b9\u03c7\u03bd\u03af\u03b4\u03b9\u03b1", + "FolderTypeBooks": "\u0392\u03b9\u03b2\u03bb\u03af\u03b1", + "FolderTypeTvShows": "\u03a4\u03b7\u03bb\u03b5\u03cc\u03c1\u03b1\u03c3\u03b7", + "FolderTypeInherit": "Inherit", + "LabelContentType": "\u03a4\u03cd\u03c0\u03bf\u03c2 \u03b1\u03c1\u03c7\u03b5\u03af\u03c9\u03bd:", + "TitleScheduledTasks": "\u03a0\u03c1\u03bf\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03b9\u03c3\u03bc\u03ad\u03bd\u03b5\u03c2 \u0395\u03c1\u03b3\u03b1\u03c3\u03af\u03b5\u03c2", + "HeaderSetupLibrary": "Setup your media library", + "ButtonAddMediaFolder": "\u03a0\u03c1\u03bf\u03c3\u03b8\u03ad\u03c3\u03c4\u03b5 \u03c4\u03bf \u03c6\u03ac\u03ba\u03b5\u03bb\u03bf \u03c4\u03bf\u03c5 Media", + "LabelFolderType": "\u03a4\u03cd\u03c0\u03bf\u03c2 \u03c6\u03b1\u03ba\u03ad\u03bb\u03bf\u03c5", + "ReferToMediaLibraryWiki": "\u0391\u03bd\u03b1\u03c4\u03c1\u03b5\u03be\u03c4\u03b5 \u03c3\u03c4\u03bf media \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7 wiki", + "LabelCountry": "\u03a7\u03ce\u03c1\u03b1", + "LabelLanguage": "\u0393\u03bb\u03ce\u03c3\u03c3\u03b1", + "LabelTimeLimitHours": "\u038c\u03c1\u03b9\u03bf \u03a7\u03c1\u03cc\u03bd\u03bf\u03c5 (\u038f\u03c1\u03b5\u03c2)", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", "HeaderPreferredMetadataLanguage": "\u03a0\u03c1\u03bf\u03c4\u03b9\u03bc\u03ce\u03bc\u03b5\u03bd\u03b7 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1 \u03bc\u03b5\u03c4\u03b1", "LabelSaveLocalMetadata": "\u0391\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03cd\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03ad\u03c1\u03b3\u03bf \u03c4\u03ad\u03c7\u03bd\u03b7\u03c2 \u03ba\u03b1\u03b9 \u03c4\u03b1 \u03bc\u03b5\u03c4\u03b1\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03c3\u03b5 \u03c6\u03b1\u03ba\u03ad\u03bb\u03bf\u03c5\u03c2 \u03c0\u03bf\u03bb\u03c5\u03bc\u03ad\u03c3\u03c9\u03bd", "LabelSaveLocalMetadataHelp": "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 artwork \u03ba\u03b1\u03b9 \u03bc\u03b5\u03c4\u03b1-\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03b1\u03c0\u03b5\u03c5\u03b8\u03b5\u03af\u03b1\u03c2 \u03c3\u03b5 \u03c6\u03b1\u03ba\u03ad\u03bb\u03bf\u03c5\u03c2 \u03bc\u03ad\u03c3\u03c9\u03bd \u03b8\u03b1 \u03c4\u03bf\u03c5\u03c2 \u03b8\u03ad\u03c3\u03b5\u03b9 \u03c3\u03b5 \u03ad\u03bd\u03b1 \u03c4\u03cc\u03c0\u03bf \u03cc\u03c0\u03bf\u03c5 \u03bc\u03c0\u03bf\u03c1\u03bf\u03cd\u03bd \u03b5\u03cd\u03ba\u03bf\u03bb\u03b1 \u03bd\u03b1 \u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03c4\u03b5\u03af\u03c4\u03b5.", @@ -176,7 +287,9 @@ "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", "TabGeneral": "General", "TitleSupport": "Support", + "LabelSeasonNumber": "Season number", "TabLog": "\u0391\u03c1\u03c7\u03b5\u03af\u03bf \u039a\u03b1\u03c4\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2", + "LabelEpisodeNumber": "Episode number", "TabAbout": "\u03a0\u03b5\u03c1\u03af..", "TabSupporterKey": "\u03a3\u03b5\u03b9\u03c1\u03b9\u03b1\u03ba\u03cc\u03c2 \u03a5\u03c0\u03bf\u03c3\u03c4\u03ae\u03c1\u03b9\u03be\u03b7\u03c2", "TabBecomeSupporter": "\u0393\u03af\u03bd\u03b5 \u03a5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03b9\u03ba\u03c4\u03ae\u03c2", @@ -202,6 +315,9 @@ "OptionAllowRemoteControlOthers": "Allow remote control of other users", "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", "HeaderRemoteControl": "\u03a4\u03b7\u03bb\u03b5\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae\u03c1\u03b9\u03bf", "OptionMissingTmdbId": "Missing Tmdb Id", "OptionIsHD": "HD", @@ -470,8 +586,6 @@ "LabelSkipped": "Skipped", "HeaderEpisodeOrganization": "Episode Organization", "LabelSeries": "Series:", - "LabelSeasonNumber": "Season number:", - "LabelEpisodeNumber": "Episode number:", "LabelEndingEpisodeNumber": "Ending episode number:", "LabelEndingEpisodeNumberHelp": "Only required for multi-episode files", "HeaderSupportTheTeam": "Support the Emby Team", @@ -759,6 +873,7 @@ "HeaderTypeText": "Enter Text", "LabelTypeText": "Text", "HeaderSearchForSubtitles": "Search for Subtitles", + "ButtonMore": "More", "MessageNoSubtitleSearchResultsFound": "No search results founds.", "TabDisplay": "Display", "TabLanguages": "Languages", @@ -789,7 +904,7 @@ "HeaderLiveTv": "Live TV", "HeaderReports": "Reports", "HeaderMetadataManager": "Metadata Manager", - "HeaderPreferences": "Preferences", + "HeaderSettings": "Settings", "MessageLoadingChannels": "Loading channel content...", "MessageLoadingContent": "Loading content...", "ButtonMarkRead": "Mark Read", @@ -987,7 +1102,6 @@ "OptionReportArtists": "Artists", "OptionReportAlbums": "Albums", "OptionReportAdultVideos": "Adult videos", - "ButtonMore": "More", "HeaderActivity": "Activity", "ScheduledTaskStartedWithName": "{0} started", "ScheduledTaskCancelledWithName": "{0} was cancelled", @@ -1117,6 +1231,7 @@ "OptionNoThemeVideo": "No Theme Video", "LabelOneTimeDonationAmount": "Donation amount:", "ButtonDonate": "Donate", + "ButtonPurchase": "Purchase", "OptionActor": "Actor", "OptionComposer": "Composer", "OptionDirector": "Director", @@ -1136,7 +1251,6 @@ "HeaderDeveloperInfo": "Developer Info", "HeaderRevisionHistory": "Revision History", "ButtonViewWebsite": "View website", - "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderXmlSettings": "Xml Settings", "HeaderXmlDocumentAttributes": "Xml Document Attributes", "HeaderXmlDocumentAttribute": "Xml Document Attribute", @@ -1150,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", "LabelExternalPlayers": "External players:", "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", "HeaderSubtitleProfile": "Subtitle Profile", "HeaderSubtitleProfiles": "Subtitle Profiles", "HeaderSubtitleProfilesHelp": "Subtitle profiles describe the subtitle formats supported by the device.", @@ -1278,7 +1395,7 @@ "HeaderUpcomingMovies": "Upcoming Movies", "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", - "ButtonMoreItems": "More...", + "ButtonMoreItems": "More", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", @@ -1297,14 +1414,6 @@ "OptionEnableFullSpeedConversion": "Enable full speed conversion", "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", "HeaderViewStyles": "View Styles", "LabelSelectViewStyles": "Enable enhanced presentations for:", "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", @@ -1322,116 +1431,24 @@ "HeaderNewServer": "New Server", "ButtonChangeServer": "Change Server", "HeaderConnectToServer": "Connect to Server", - "LabelExit": "\u0388\u03be\u03bf\u03b4\u03bf\u03c2", - "LabelVisitCommunity": "\u039a\u03bf\u03b9\u03bd\u03cc\u03c4\u03b7\u03c4\u03b1", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "\u03a0\u03c1\u03cc\u03c4\u03c5\u03c0\u03bf", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "\u03a0\u03b7\u03b3\u03ad\u03c2 \u03a0\u03c1\u03bf\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ae", - "LabelBrowseLibrary": "\u03a0\u03b5\u03c1\u03b9\u03b7\u03b3\u03b7\u03b8\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03b7 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7", - "LabelConfigureServer": "\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 Emby", - "LabelOpenLibraryViewer": "\u03b1\u03bd\u03bf\u03af\u03be\u03b5\u03c4\u03b5 \u03c4\u03b7\u03bd \u0392\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7 \u03b8\u03b5\u03b1\u03c4\u03ae", - "LabelRestartServer": "\u0395\u03c0\u03b1\u03bd\u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7 \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae", - "LabelShowLogWindow": "\u0391\u03c1\u03c7\u03b5\u03af\u03bf \u039a\u03b1\u03c4\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2", - "LabelPrevious": "\u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf\u03c2", - "LabelFinish": "\u03a4\u03ad\u03bb\u03bf\u03c2", - "LabelNext": "\u0395\u03c0\u03cc\u03bc\u03b5\u03bd\u03bf", - "LabelYoureDone": "\u0395\u03af\u03c3\u03c4\u03b5 \u0388\u03c4\u03bf\u03b9\u03bc\u03bf\u03b9!", - "WelcomeToProject": "\u039a\u03b1\u03bb\u03c9\u03c2 \u03ae\u03c1\u03b8\u03b1\u03c4\u03b5 \u03c3\u03c4\u03bf Emby!", - "ThisWizardWillGuideYou": "\u0391\u03c5\u03c4\u03cc\u03c2 \u03bf \u03bf\u03b4\u03b7\u03b3\u03cc\u03c2 \u03b8\u03b1 \u03c3\u03b1\u03c2 \u03ba\u03b1\u03b8\u03bf\u03b4\u03b7\u03b3\u03ae\u03c3\u03b5\u03b9 \u03bc\u03ad\u03c3\u03c9 \u03c4\u03b7\u03c2 \u03b4\u03b9\u03b1\u03b4\u03b9\u03ba\u03b1\u03c3\u03af\u03b1\u03c2 \u03b5\u03b3\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7\u03c2. \u0393\u03b9\u03b1 \u03bd\u03b1 \u03be\u03b5\u03ba\u03b9\u03bd\u03ae\u03c3\u03b5\u03c4\u03b5, \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03c4\u03b7 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1 \u03c4\u03b7\u03c2 \u03c0\u03c1\u03bf\u03c4\u03af\u03bc\u03b7\u03c3\u03ae\u03c2 \u03c3\u03b1\u03c2.", - "TellUsAboutYourself": "\u03a0\u03b5\u03af\u03c4\u03b5 \u03bc\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03b5\u03c3\u03ac\u03c2", - "ButtonQuickStartGuide": "\u039f\u03b4\u03b7\u03b3\u03cc\u03c2 \u03b3\u03c1\u03ae\u03b3\u03bf\u03c1\u03b7\u03c2 \u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7\u03c2", - "LabelYourFirstName": "\u03a4\u03bf \u03cc\u03bd\u03bf\u03bc\u03ac \u03c3\u03b1\u03c2", - "MoreUsersCanBeAddedLater": "\u03a0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03bf\u03c5\u03c2 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b5\u03c2 \u03bc\u03c0\u03bf\u03c1\u03bf\u03cd\u03bd \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03c4\u03b5\u03b8\u03bf\u03cd\u03bd \u03b1\u03c1\u03b3\u03cc\u03c4\u03b5\u03c1\u03b1 \u03bc\u03b5 \u03c4\u03bf \u03c4\u03b1\u03bc\u03c0\u03bb\u03cc", - "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "\u03a5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 Windows", - "AWindowsServiceHasBeenInstalled": "\u039c\u03b9\u03b1 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 Windows \u03ad\u03c7\u03b5\u03b9 \u03b5\u03b3\u03ba\u03b1\u03c4\u03b1\u03c3\u03c4\u03b1\u03b8\u03b5\u03af", - "WindowsServiceIntro1": "\u039f \u0394\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae\u03c2 Emby \u03ba\u03b1\u03bd\u03bf\u03bd\u03b9\u03ba\u03ac \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03b5\u03af \u03c3\u03b1\u03bd \u03bc\u03b9\u03b1 \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae \u03bc\u03b5 \u03b5\u03b9\u03ba\u03bf\u03bd\u03af\u03b4\u03b9\u03bf, \u03b1\u03bb\u03bb\u03ac \u03b1\u03bd \u03c0\u03c1\u03bf\u03c4\u03b9\u03bc\u03ac\u03c4\u03b5 \u03bd\u03b1 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03b5\u03af \u03c3\u03b1\u03bd \u03bc\u03b9\u03b1 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03c3\u03c4\u03bf \u03b2\u03ac\u03b8\u03bf\u03c2, \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03b5\u03ba\u03ba\u03b9\u03bd\u03b7\u03b8\u03b5\u03af \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c0\u03af\u03bd\u03b1\u03ba\u03b1 \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5 \u03c4\u03c9\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03b9\u03ce\u03bd \u03c4\u03c9\u03bd Windows", - "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", - "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", - "LabelConfigureSettings": "\u0394\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03ce\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2", - "LabelEnableVideoImageExtraction": "\u0395\u03be\u03b1\u03b3\u03c9\u03b3\u03ae \u0395\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2 \u03b1\u03c0\u03cc \u0392\u03af\u03bd\u03c4\u03b5\u03bf", - "VideoImageExtractionHelp": "\u0393\u03b9\u03b1 \u03c4\u03b1 \u03b2\u03af\u03bd\u03c4\u03b5\u03bf \u03c0\u03bf\u03c5 \u03b4\u03b5\u03bd \u03ad\u03c7\u03bf\u03c5\u03bd \u03ae\u03b4\u03b7 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b5\u03c2, \u03ba\u03b1\u03b9 \u03b4\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03ad\u03c3\u03b1\u03bc\u03b5 \u03bd\u03b1 \u03b2\u03c1\u03bf\u03cd\u03bc\u03b5 \u03c3\u03c4\u03bf \u03b4\u03b9\u03b1\u03b4\u03af\u03ba\u03c4\u03c5\u03bf. \u0391\u03c5\u03c4\u03cc \u03b8\u03b1 \u03ba\u03b1\u03b8\u03c5\u03c3\u03c4\u03b5\u03c1\u03ae\u03c3\u03b5\u03b9 \u03bb\u03af\u03b3\u03bf \u03c4\u03b7\u03bd \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7 \u03c3\u03c4\u03b7\u03bd \u03b1\u03c1\u03c7\u03b9\u03ba\u03ae \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7 \u03b1\u03bb\u03bb\u03b1 \u03b8\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b7 \u03c4\u03b5\u03bb\u03b9\u03ba\u03ae \u03bc\u03bf\u03c1\u03c6\u03ae \u03c0\u03b9\u03bf \u03cc\u03bc\u03bf\u03c1\u03c6\u03b7.", - "LabelEnableChapterImageExtractionForMovies": "\u0395\u03be\u03b1\u03b3\u03c9\u03b3\u03ae \u0395\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2 \u039a\u03b5\u03c6\u03b1\u03bb\u03bb\u03b1\u03af\u03c9\u03bd \u03b3\u03b9\u03b1 \u03c4\u03b9\u03c2 \u03a4\u03b1\u03b9\u03bd\u03af\u03b5\u03c2", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7\u03c2 \u03ba\u03b1\u03c4\u03b1\u03c7\u03ce\u03c1\u03b7\u03c3\u03b7\u03c2 \u0398\u03c5\u03c1\u03ce\u03bd", - "LabelEnableAutomaticPortMappingHelp": "To UPnP \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03b9 \u03c4\u03b7\u03bd \u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03c1\u03cd\u03b8\u03bc\u03b9\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03b4\u03c1\u03bf\u03bc\u03bf\u03bb\u03bf\u03b3\u03b7\u03c4\u03ae \u03b3\u03b9\u03b1 \u03b5\u03cd\u03ba\u03bf\u03bb\u03b7 \u03b1\u03c0\u03bf\u03bc\u03b1\u03ba\u03c1\u03c5\u03c3\u03bc\u03ad\u03bd\u03b7 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7. \u0391\u03c5\u03c4\u03ae \u03b7 \u03c1\u03cd\u03b8\u03bc\u03b9\u03c3\u03b7 \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03bc\u03b7\u03bd \u03b4\u03bf\u03c5\u03bb\u03ad\u03c8\u03b5\u03b9 \u03bc\u03b5 \u03ba\u03ac\u03c0\u03bf\u03b9\u03b1 \u03bc\u03bf\u03bd\u03c4\u03ad\u03bb\u03b1 \u03b4\u03c1\u03bf\u03bc\u03bf\u03bb\u03bf\u03b3\u03b7\u03c4\u03ce\u03bd", - "HeaderTermsOfService": "Emby Terms of Service", - "MessagePleaseAcceptTermsOfService": "\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b1\u03c0\u03bf\u03b4\u03b5\u03c7\u03c4\u03b5\u03af\u03c4\u03b5 \u03c4\u03bf\u03c5\u03c2 \u038c\u03c1\u03bf\u03c5\u03c2 \u03a7\u03c1\u03ae\u03c3\u03b7\u03c2 \u03ba\u03b1\u03b9 \u03a0\u03c1\u03bf\u03c3\u03c4\u03b1\u03c3\u03af\u03b1\u03c2 \u0394\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd \u03c0\u03c1\u03b9\u03bd \u03c0\u03c1\u03bf\u03c7\u03c9\u03c1\u03ae\u03c3\u03b5\u03c4\u03b5.", - "OptionIAcceptTermsOfService": "\u0391\u03c0\u03cc\u03b4\u03b5\u03c7\u03bf\u03bc\u03b1\u03b9 \u03c4\u03bf\u03c5\u03c2 \u038c\u03c1\u03bf\u03c5\u03c2 \u03a7\u03c1\u03ae\u03c3\u03b7\u03c2", - "ButtonPrivacyPolicy": "\u03a0\u03c1\u03bf\u03c3\u03c4\u03b1\u03c3\u03af\u03b1 \u0394\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd", - "ButtonTermsOfService": "\u038c\u03c1\u03bf\u03b9 \u03a7\u03c1\u03ae\u03c3\u03b7\u03c2", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Ene", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "\u039f\u03c1\u03b3\u03ac\u03bd\u03c9\u03c3\u03b7", - "LinkedToEmbyConnect": "Linked to Emby Connect", - "HeaderSupporterBenefits": "Supporter Benefits", - "HeaderAddUser": "\u03a0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7 \u03a7\u03c1\u03ae\u03c3\u03c4\u03b7", - "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", - "LabelPinCode": "Pin code:", - "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", - "HeaderSync": "Sync", - "ButtonOk": "\u0395\u03bd\u03c4\u03ac\u03be\u03b5\u03b9", - "ButtonCancel": "\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7 ", - "ButtonExit": "\u0388\u03be\u03bf\u03b4\u03bf\u03c2", - "ButtonNew": "\u039d\u03ad\u03bf", - "HeaderTV": "\u03a4\u03b7\u03bb\u03b5\u03cc\u03c1\u03b1\u03c3\u03b7", - "HeaderAudio": "\u0389\u03c7\u03bf\u03c2", - "HeaderVideo": "\u0392\u03af\u03bd\u03c4\u03b5\u03bf", - "HeaderPaths": "\u0394\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae", - "CategorySync": "\u03a3\u03c5\u03c7\u03c1\u03bf\u03bd\u03b9\u03c3\u03bc\u03cc\u03c2", - "TabPlaylist": "\u039b\u03af\u03c3\u03c4\u03b1", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "\u0395\u03bd\u03ae\u03bb\u03b9\u03ba\u03bf\u03b9 \u03bc\u03cc\u03bd\u03bf!", - "DividerOr": "--\u03ae--", - "HeaderInstalledServices": "\u0395\u03b3\u03ba\u03b1\u03c4\u03b5\u03c3\u03c4\u03b7\u03bc\u03ad\u03bd\u03b5\u03c2 \u03a5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b5\u03c2", - "HeaderAvailableServices": "\u0394\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b5\u03c2 \u03a5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b5\u03c2", - "MessageNoServicesInstalled": "\u039a\u03b1\u03bc\u03af\u03b1 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03b3\u03ba\u03b1\u03c4\u03b5\u03c3\u03c4\u03b7\u03bc\u03ad\u03bd\u03b7.", - "HeaderToAccessPleaseEnterEasyPinCode": "\u0393\u03b9\u03b1 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7, \u03c0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b4\u03ce\u03c3\u03c4\u03b5 \u03c4\u03bf\u03bd \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c3\u03b1\u03c2", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "\u039f\u03b9 \u03b5\u03bd\u03ae\u03bb\u03b9\u03ba\u03bf\u03b9 \u03b4\u03b9\u03b1\u03b2\u03ac\u03c3\u03c4\u03b5!", - "RegisterWithPayPal": "\u0395\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae \u03bc\u03b5 Paypal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "\u0391\u03c0\u03bf\u03bb\u03b1\u03cd\u03c3\u03c4\u03b5 14 \u039c\u03ad\u03c1\u03b5\u03c2 \u0394\u03bf\u03ba\u03b9\u03bc\u03b1\u03c3\u03c4\u03b9\u03ba\u03ae\u03c2 \u03a0\u03b5\u03c1\u03b9\u03cc\u03b4\u03bf\u03c5", - "LabelSyncTempPath": "\u03a6\u03ac\u03ba\u03b5\u03bb\u03bf\u03c2 \u03a0\u03c1\u03bf\u03c3\u03c9\u03c1\u03b9\u03bd\u03ce\u03bd \u0391\u03c1\u03c7\u03b5\u03af\u03c9\u03bd", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "\u0395\u03b9\u03b4\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03b9\u03c2", - "ButtonDonateWithPayPal": "\u0394\u03c9\u03c1\u03b5\u03ac \u03bc\u03ad\u03c3\u03c9 Paypal", - "OptionDetectArchiveFilesAsMedia": "\u0391\u03bd\u03b1\u03b3\u03bd\u03ce\u03c1\u03b9\u03c3\u03b5 \u03a3\u03c5\u03bc\u03c0\u03b9\u03b5\u03c3\u03bc\u03ad\u03bd\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03b1 \u03c9\u03c2 \u03c0\u03bf\u03bb\u03c5\u03bc\u03ad\u03c3\u03b1.", - "OptionDetectArchiveFilesAsMediaHelp": "\u0391\u03c1\u03c7\u03b5\u03af\u03b1 \u03bc\u03b5 .rar \u03ba\u03b1\u03b9 .zip \u03ba\u03b1\u03c4\u03b1\u03bb\u03ae\u03be\u03b5\u03b9\u03c2 \u03b8\u03b1 \u03b1\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03af\u03b6\u03bf\u03bd\u03c4\u03b1\u03b9 \u03c9\u03c2 \u03b1\u03c1\u03c7\u03b5\u03af\u03b1 \u03c0\u03bf\u03bb\u03c5\u03bc\u03ad\u03c3\u03c9\u03bd.", - "LabelEnterConnectUserName": "\u038c\u03bd\u03bf\u03bc\u03b1 \u03a7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03ae email:", - "LabelEnterConnectUserNameHelp": "This is your Emby online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "\u0395\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03a3\u03c5\u03b3\u03c7\u03c1\u03bf\u03bd\u03b9\u03c3\u03bc\u03bf\u03cd", - "FolderTypeMixed": "\u0391\u03bd\u03ac\u03bc\u03b5\u03b9\u03ba\u03c4\u03bf \u03a0\u03b5\u03c1\u03b9\u03b5\u03c7\u03cc\u03bc\u03b5\u03bd\u03bf", - "FolderTypeMovies": "\u03a4\u03b1\u03b9\u03bd\u03af\u03b5\u03c2", - "FolderTypeMusic": "\u039c\u03bf\u03c5\u03c3\u03b9\u03ba\u03ae", - "FolderTypeAdultVideos": "\u03a4\u03b1\u03b9\u03bd\u03af\u03b5\u03c2 \u0395\u03bd\u03b7\u03bb\u03af\u03ba\u03c9\u03bd", - "FolderTypePhotos": "\u03a6\u03c9\u03c4\u03bf\u03b3\u03c1\u03b1\u03c6\u03af\u03b5\u03c2", - "FolderTypeMusicVideos": "\u039c\u03bf\u03c5\u03c3\u03b9\u03ba\u03ac \u0392\u03af\u03bd\u03c4\u03b5\u03bf", - "FolderTypeHomeVideos": "\u03a0\u03c1\u03bf\u03c3\u03c9\u03c0\u03b9\u03ba\u03ac \u0392\u03af\u03bd\u03c4\u03b5\u03bf", - "FolderTypeGames": "\u03a0\u03b1\u03b9\u03c7\u03bd\u03af\u03b4\u03b9\u03b1", - "FolderTypeBooks": "\u0392\u03b9\u03b2\u03bb\u03af\u03b1", - "FolderTypeTvShows": "\u03a4\u03b7\u03bb\u03b5\u03cc\u03c1\u03b1\u03c3\u03b7", - "FolderTypeInherit": "Inherit", - "LabelContentType": "\u03a4\u03cd\u03c0\u03bf\u03c2 \u03b1\u03c1\u03c7\u03b5\u03af\u03c9\u03bd:", - "TitleScheduledTasks": "\u03a0\u03c1\u03bf\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03b9\u03c3\u03bc\u03ad\u03bd\u03b5\u03c2 \u0395\u03c1\u03b3\u03b1\u03c3\u03af\u03b5\u03c2", - "HeaderSetupLibrary": "Setup your media library", - "ButtonAddMediaFolder": "\u03a0\u03c1\u03bf\u03c3\u03b8\u03ad\u03c3\u03c4\u03b5 \u03c4\u03bf \u03c6\u03ac\u03ba\u03b5\u03bb\u03bf \u03c4\u03bf\u03c5 Media", - "LabelFolderType": "\u03a4\u03cd\u03c0\u03bf\u03c2 \u03c6\u03b1\u03ba\u03ad\u03bb\u03bf\u03c5", - "ReferToMediaLibraryWiki": "\u0391\u03bd\u03b1\u03c4\u03c1\u03b5\u03be\u03c4\u03b5 \u03c3\u03c4\u03bf media \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7 wiki", - "LabelCountry": "\u03a7\u03ce\u03c1\u03b1", - "LabelLanguage": "\u0393\u03bb\u03ce\u03c3\u03c3\u03b1", - "LabelTimeLimitHours": "\u038c\u03c1\u03b9\u03bf \u03a7\u03c1\u03cc\u03bd\u03bf\u03c5 (\u038f\u03c1\u03b5\u03c2)", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team" + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "HeaderExport": "Export", + "HeaderColumns": "Columns", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/en_GB.json b/MediaBrowser.Server.Implementations/Localization/Server/en-GB.json index 45db6fa6c..1c8cea090 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/en_GB.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/en-GB.json @@ -1,5 +1,211 @@ { - "TabWebClient": "Web Client", + "LabelExit": "Exit", + "LabelVisitCommunity": "Visit Community", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standard", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Browse Library", + "LabelConfigureServer": "Configure Emby", + "LabelOpenLibraryViewer": "Open Library Viewer", + "LabelRestartServer": "Restart Server", + "LabelShowLogWindow": "Show Log Window", + "LabelPrevious": "Previous", + "LabelFinish": "Finish", + "FolderTypeMixed": "Mixed content", + "LabelNext": "Next", + "LabelYoureDone": "You're Done!", + "WelcomeToProject": "Welcome to Emby!", + "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", + "TellUsAboutYourself": "Tell us about yourself", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "Your first name:", + "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", + "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", + "LabelWindowsService": "Windows Service", + "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", + "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", + "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", + "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", + "LabelConfigureSettings": "Configure settings", + "LabelEnableVideoImageExtraction": "Enable video image extraction", + "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", + "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", + "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", + "HeaderTermsOfService": "Emby Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organise", + "LinkedToEmbyConnect": "Linked to Emby Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", + "ButtonOk": "Ok", + "ButtonCancel": "Cancel", + "ButtonExit": "Exit", + "ButtonNew": "New", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "Username or email:", + "LabelEnterConnectUserNameHelp": "This is your Emby online account username or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "Setup your media library", + "ButtonAddMediaFolder": "Add media folder", + "LabelFolderType": "Folder type:", + "ReferToMediaLibraryWiki": "Refer to the media library wiki.", + "LabelCountry": "Country:", + "LabelLanguage": "Language:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "Preferred metadata language:", + "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", + "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", + "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", + "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", + "TabPreferences": "Preferences", + "TabPassword": "Password", + "TabLibraryAccess": "Library Access", + "TabAccess": "Access", + "TabImage": "Image", + "TabProfile": "Profile", + "TabMetadata": "Metadata", + "TabImages": "Images", + "TabNotifications": "Notifications", + "TabCollectionTitles": "Titles", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", + "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", + "HeaderVideoPlaybackSettings": "Video Playback Settings", + "HeaderPlaybackSettings": "Playback Settings", + "LabelAudioLanguagePreference": "Audio language preference:", + "LabelSubtitleLanguagePreference": "Subtitle language preference:", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Only forced subtitles", + "OptionAlwaysPlaySubtitles": "Always play subtitles", + "OptionNoSubtitles": "No Subtitles", + "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", + "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", + "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", + "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", + "TabProfiles": "Profiles", + "TabSecurity": "Security", + "ButtonAddUser": "Add User", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "Save", + "ButtonResetPassword": "Reset Password", + "LabelNewPassword": "New password:", + "LabelNewPasswordConfirm": "New password confirm:", + "HeaderCreatePassword": "Create Password", + "LabelCurrentPassword": "Current password:", + "LabelMaxParentalRating": "Maximum allowed parental rating:", + "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", + "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", + "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", + "ButtonDeleteImage": "Delete Image", + "LabelSelectUsers": "Select users:", + "ButtonUpload": "Upload", + "HeaderUploadNewImage": "Upload New Image", + "LabelDropImageHere": "Drop image here", + "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", + "MessageNothingHere": "Nothing here.", + "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", + "TabSuggested": "Suggested", + "TabSuggestions": "Suggestions", + "TabLatest": "Latest", + "TabUpcoming": "Upcoming", + "TabShows": "Shows", + "TabEpisodes": "Episodes", + "TabGenres": "Genres", + "TabPeople": "People", + "TabNetworks": "Networks", + "HeaderUsers": "Users", + "HeaderFilters": "Filters:", + "ButtonFilter": "Filter", + "OptionFavorite": "Favourites", + "OptionLikes": "Likes", + "OptionDislikes": "Dislikes", + "OptionActors": "Actors", + "OptionGuestStars": "Guest Stars", + "OptionDirectors": "Directors", + "OptionWriters": "Writers", + "OptionProducers": "Producers", + "HeaderResume": "Resume", + "HeaderNextUp": "Next Up", + "NoNextUpItemsMessage": "None found. Start watching your shows!", + "HeaderLatestEpisodes": "Latest Episodes", + "HeaderPersonTypes": "Person Types:", + "TabSongs": "Songs", + "TabAlbums": "Albums", + "TabArtists": "Artists", + "TabAlbumArtists": "Album Artists", + "TabMusicVideos": "Music Videos", + "ButtonSort": "Sort", + "HeaderSortBy": "Sort By:", + "HeaderSortOrder": "Sort Order:", + "OptionPlayed": "Played", + "OptionUnplayed": "Unplayed", + "OptionAscending": "Ascending", + "OptionDescending": "Descending", + "OptionRuntime": "Runtime", "OptionReleaseDate": "Release Date", "OptionPlayCount": "Play Count", "OptionDatePlayed": "Date Played", @@ -81,7 +287,9 @@ "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", "TabGeneral": "General", "TitleSupport": "Support", + "LabelSeasonNumber": "Season number", "TabLog": "Log", + "LabelEpisodeNumber": "Episode number", "TabAbout": "About", "TabSupporterKey": "Supporter Key", "TabBecomeSupporter": "Become a Supporter", @@ -107,6 +315,9 @@ "OptionAllowRemoteControlOthers": "Allow remote control of other users", "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", "HeaderRemoteControl": "Remote Control", "OptionMissingTmdbId": "Missing Tmdb Id", "OptionIsHD": "HD", @@ -375,8 +586,6 @@ "LabelSkipped": "Skipped", "HeaderEpisodeOrganization": "Episode Organisation", "LabelSeries": "Series:", - "LabelSeasonNumber": "Season number:", - "LabelEpisodeNumber": "Episode number:", "LabelEndingEpisodeNumber": "Ending episode number:", "LabelEndingEpisodeNumberHelp": "Only required for multi-episode files", "HeaderSupportTheTeam": "Support the Emby Team", @@ -664,6 +873,7 @@ "HeaderTypeText": "Enter Text", "LabelTypeText": "Text", "HeaderSearchForSubtitles": "Search for Subtitles", + "ButtonMore": "More", "MessageNoSubtitleSearchResultsFound": "No search results founds.", "TabDisplay": "Display", "TabLanguages": "Languages", @@ -694,7 +904,7 @@ "HeaderLiveTv": "Live TV", "HeaderReports": "Reports", "HeaderMetadataManager": "Metadata Manager", - "HeaderPreferences": "Preferences", + "HeaderSettings": "Settings", "MessageLoadingChannels": "Loading channel content...", "MessageLoadingContent": "Loading content...", "ButtonMarkRead": "Mark Read", @@ -892,7 +1102,6 @@ "OptionReportArtists": "Artists", "OptionReportAlbums": "Albums", "OptionReportAdultVideos": "Adult videos", - "ButtonMore": "More", "HeaderActivity": "Activity", "ScheduledTaskStartedWithName": "{0} started", "ScheduledTaskCancelledWithName": "{0} was cancelled", @@ -1022,6 +1231,7 @@ "OptionNoThemeVideo": "No Theme Video", "LabelOneTimeDonationAmount": "Donation amount:", "ButtonDonate": "Donate", + "ButtonPurchase": "Purchase", "OptionActor": "Actor", "OptionComposer": "Composer", "OptionDirector": "Director", @@ -1041,7 +1251,6 @@ "HeaderDeveloperInfo": "Developer Info", "HeaderRevisionHistory": "Revision History", "ButtonViewWebsite": "View website", - "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderXmlSettings": "Xml Settings", "HeaderXmlDocumentAttributes": "Xml Document Attributes", "HeaderXmlDocumentAttribute": "Xml Document Attribute", @@ -1055,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", "LabelExternalPlayers": "External players:", "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", "HeaderSubtitleProfile": "Subtitle Profile", "HeaderSubtitleProfiles": "Subtitle Profiles", "HeaderSubtitleProfilesHelp": "Subtitle profiles describe the subtitle formats supported by the device.", @@ -1183,7 +1395,7 @@ "HeaderUpcomingMovies": "Upcoming Movies", "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", - "ButtonMoreItems": "More...", + "ButtonMoreItems": "More", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", @@ -1202,14 +1414,6 @@ "OptionEnableFullSpeedConversion": "Enable full speed conversion", "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", "HeaderViewStyles": "View Styles", "LabelSelectViewStyles": "Enable enhanced presentations for:", "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", @@ -1227,211 +1431,24 @@ "HeaderNewServer": "New Server", "ButtonChangeServer": "Change Server", "HeaderConnectToServer": "Connect to Server", - "LabelExit": "Exit", - "LabelVisitCommunity": "Visit Community", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standard", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Browse Library", - "LabelConfigureServer": "Configure Emby", - "LabelOpenLibraryViewer": "Open Library Viewer", - "LabelRestartServer": "Restart Server", - "LabelShowLogWindow": "Show Log Window", - "LabelPrevious": "Previous", - "LabelFinish": "Finish", - "LabelNext": "Next", - "LabelYoureDone": "You're Done!", - "WelcomeToProject": "Welcome to Emby!", - "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", - "TellUsAboutYourself": "Tell us about yourself", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "Your first name:", - "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", - "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "Windows Service", - "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", - "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", - "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", - "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", - "LabelConfigureSettings": "Configure settings", - "LabelEnableVideoImageExtraction": "Enable video image extraction", - "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", - "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", - "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "HeaderTermsOfService": "Emby Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organise", - "LinkedToEmbyConnect": "Linked to Emby Connect", - "HeaderSupporterBenefits": "Supporter Benefits", - "HeaderAddUser": "Add User", - "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", - "LabelPinCode": "Pin code:", - "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", - "HeaderSync": "Sync", - "ButtonOk": "Ok", - "ButtonCancel": "Cancel", - "ButtonExit": "Exit", - "ButtonNew": "New", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "TabPlaylist": "Playlist", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Emby online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "Setup your media library", - "ButtonAddMediaFolder": "Add media folder", - "LabelFolderType": "Folder type:", - "ReferToMediaLibraryWiki": "Refer to the media library wiki.", - "LabelCountry": "Country:", - "LabelLanguage": "Language:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "Preferred metadata language:", - "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", - "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", - "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", - "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", - "TabPreferences": "Preferences", - "TabPassword": "Password", - "TabLibraryAccess": "Library Access", - "TabAccess": "Access", - "TabImage": "Image", - "TabProfile": "Profile", - "TabMetadata": "Metadata", - "TabImages": "Images", - "TabNotifications": "Notifications", - "TabCollectionTitles": "Titles", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", - "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", - "HeaderVideoPlaybackSettings": "Video Playback Settings", - "HeaderPlaybackSettings": "Playback Settings", - "LabelAudioLanguagePreference": "Audio language preference:", - "LabelSubtitleLanguagePreference": "Subtitle language preference:", - "OptionDefaultSubtitles": "Default", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "No Subtitles", - "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", - "TabProfiles": "Profiles", - "TabSecurity": "Security", - "ButtonAddUser": "Add User", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "Save", - "ButtonResetPassword": "Reset Password", - "LabelNewPassword": "New password:", - "LabelNewPasswordConfirm": "New password confirm:", - "HeaderCreatePassword": "Create Password", - "LabelCurrentPassword": "Current password:", - "LabelMaxParentalRating": "Maximum allowed parental rating:", - "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", - "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", - "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", - "ButtonDeleteImage": "Delete Image", - "LabelSelectUsers": "Select users:", - "ButtonUpload": "Upload", - "HeaderUploadNewImage": "Upload New Image", - "LabelDropImageHere": "Drop image here", - "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", - "MessageNothingHere": "Nothing here.", - "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", - "TabSuggested": "Suggested", - "TabSuggestions": "Suggestions", - "TabLatest": "Latest", - "TabUpcoming": "Upcoming", - "TabShows": "Shows", - "TabEpisodes": "Episodes", - "TabGenres": "Genres", - "TabPeople": "People", - "TabNetworks": "Networks", - "HeaderUsers": "Users", - "HeaderFilters": "Filters:", - "ButtonFilter": "Filter", - "OptionFavorite": "Favourites", - "OptionLikes": "Likes", - "OptionDislikes": "Dislikes", - "OptionActors": "Actors", - "OptionGuestStars": "Guest Stars", - "OptionDirectors": "Directors", - "OptionWriters": "Writers", - "OptionProducers": "Producers", - "HeaderResume": "Resume", - "HeaderNextUp": "Next Up", - "NoNextUpItemsMessage": "None found. Start watching your shows!", - "HeaderLatestEpisodes": "Latest Episodes", - "HeaderPersonTypes": "Person Types:", - "TabSongs": "Songs", - "TabAlbums": "Albums", - "TabArtists": "Artists", - "TabAlbumArtists": "Album Artists", - "TabMusicVideos": "Music Videos", - "ButtonSort": "Sort", - "HeaderSortBy": "Sort By:", - "HeaderSortOrder": "Sort Order:", - "OptionPlayed": "Played", - "OptionUnplayed": "Unplayed", - "OptionAscending": "Ascending", - "OptionDescending": "Descending", - "OptionRuntime": "Runtime" + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "HeaderExport": "Export", + "HeaderColumns": "Columns", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/en_US.json b/MediaBrowser.Server.Implementations/Localization/Server/en-US.json index a9a5ca8d7..6ad65ba6c 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/en_US.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/en-US.json @@ -1,5 +1,433 @@ { - "TabWebClient": "Web Client", + "LabelExit": "Exit", + "LabelVisitCommunity": "Visit Community", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standard", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Browse Library", + "LabelConfigureServer": "Configure Emby", + "LabelOpenLibraryViewer": "Open Library Viewer", + "LabelRestartServer": "Restart Server", + "LabelShowLogWindow": "Show Log Window", + "LabelPrevious": "Previous", + "LabelFinish": "Finish", + "FolderTypeMixed": "Mixed content", + "LabelNext": "Next", + "LabelYoureDone": "You're Done!", + "WelcomeToProject": "Welcome to Emby!", + "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", + "TellUsAboutYourself": "Tell us about yourself", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "Your first name:", + "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", + "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", + "LabelWindowsService": "Windows Service", + "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", + "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", + "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", + "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", + "LabelConfigureSettings": "Configure settings", + "LabelEnableVideoImageExtraction": "Enable video image extraction", + "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", + "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", + "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", + "HeaderTermsOfService": "Emby Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToEmbyConnect": "Linked to Emby Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", + "ButtonOk": "Ok", + "ButtonCancel": "Cancel", + "ButtonExit": "Exit", + "ButtonNew": "New", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "Username or email:", + "LabelEnterConnectUserNameHelp": "This is your Emby online account username or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "Setup your media library", + "ButtonAddMediaFolder": "Add media folder", + "LabelFolderType": "Folder type:", + "ReferToMediaLibraryWiki": "Refer to the media library wiki.", + "LabelCountry": "Country:", + "LabelLanguage": "Language:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "Preferred metadata language:", + "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", + "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", + "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", + "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", + "TabPreferences": "Preferences", + "TabPassword": "Password", + "TabLibraryAccess": "Library Access", + "TabAccess": "Access", + "TabImage": "Image", + "TabProfile": "Profile", + "TabMetadata": "Metadata", + "TabImages": "Images", + "TabNotifications": "Notifications", + "TabCollectionTitles": "Titles", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", + "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", + "HeaderVideoPlaybackSettings": "Video Playback Settings", + "HeaderPlaybackSettings": "Playback Settings", + "LabelAudioLanguagePreference": "Audio language preference:", + "LabelSubtitleLanguagePreference": "Subtitle language preference:", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Only forced subtitles", + "OptionAlwaysPlaySubtitles": "Always play subtitles", + "OptionNoSubtitles": "No Subtitles", + "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", + "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", + "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", + "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", + "TabProfiles": "Profiles", + "TabSecurity": "Security", + "ButtonAddUser": "Add User", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "Save", + "ButtonResetPassword": "Reset Password", + "LabelNewPassword": "New password:", + "LabelNewPasswordConfirm": "New password confirm:", + "HeaderCreatePassword": "Create Password", + "LabelCurrentPassword": "Current password:", + "LabelMaxParentalRating": "Maximum allowed parental rating:", + "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", + "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", + "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", + "ButtonDeleteImage": "Delete Image", + "LabelSelectUsers": "Select users:", + "ButtonUpload": "Upload", + "HeaderUploadNewImage": "Upload New Image", + "LabelDropImageHere": "Drop image here", + "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", + "MessageNothingHere": "Nothing here.", + "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", + "TabSuggested": "Suggested", + "TabSuggestions": "Suggestions", + "TabLatest": "Latest", + "TabUpcoming": "Upcoming", + "TabShows": "Shows", + "TabEpisodes": "Episodes", + "TabGenres": "Genres", + "TabPeople": "People", + "TabNetworks": "Networks", + "HeaderUsers": "Users", + "HeaderFilters": "Filters:", + "ButtonFilter": "Filter", + "OptionFavorite": "Favorites", + "OptionLikes": "Likes", + "OptionDislikes": "Dislikes", + "OptionActors": "Actors", + "OptionGuestStars": "Guest Stars", + "OptionDirectors": "Directors", + "OptionWriters": "Writers", + "OptionProducers": "Producers", + "HeaderResume": "Resume", + "HeaderNextUp": "Next Up", + "NoNextUpItemsMessage": "None found. Start watching your shows!", + "HeaderLatestEpisodes": "Latest Episodes", + "HeaderPersonTypes": "Person Types:", + "TabSongs": "Songs", + "TabAlbums": "Albums", + "TabArtists": "Artists", + "TabAlbumArtists": "Album Artists", + "TabMusicVideos": "Music Videos", + "ButtonSort": "Sort", + "HeaderSortBy": "Sort By:", + "HeaderSortOrder": "Sort Order:", + "OptionPlayed": "Played", + "OptionUnplayed": "Unplayed", + "OptionAscending": "Ascending", + "OptionDescending": "Descending", + "OptionRuntime": "Runtime", + "OptionReleaseDate": "Release Date", + "OptionPlayCount": "Play Count", + "OptionDatePlayed": "Date Played", + "OptionDateAdded": "Date Added", + "OptionAlbumArtist": "Album Artist", + "OptionArtist": "Artist", + "OptionAlbum": "Album", + "OptionTrackName": "Track Name", + "OptionCommunityRating": "Community Rating", + "OptionNameSort": "Name", + "OptionFolderSort": "Folders", + "OptionBudget": "Budget", + "OptionRevenue": "Revenue", + "OptionPoster": "Poster", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "Backdrop", + "OptionTimeline": "Timeline", + "OptionThumb": "Thumb", + "OptionThumbCard": "Thumb card", + "OptionBanner": "Banner", + "OptionCriticRating": "Critic Rating", + "OptionVideoBitrate": "Video Bitrate", + "OptionResumable": "Resumable", + "ScheduledTasksHelp": "Click a task to adjust its schedule.", + "ScheduledTasksTitle": "Scheduled Tasks", + "TabMyPlugins": "My Plugins", + "TabCatalog": "Catalog", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "Automatic Updates", + "HeaderNowPlaying": "Now Playing", + "HeaderLatestAlbums": "Latest Albums", + "HeaderLatestSongs": "Latest Songs", + "HeaderRecentlyPlayed": "Recently Played", + "HeaderFrequentlyPlayed": "Frequently Played", + "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", + "LabelVideoType": "Video Type:", + "OptionBluray": "Bluray", + "OptionDvd": "Dvd", + "OptionIso": "Iso", + "Option3D": "3D", + "LabelFeatures": "Features:", + "LabelService": "Service:", + "LabelStatus": "Status:", + "LabelVersion": "Version:", + "LabelLastResult": "Last result:", + "OptionHasSubtitles": "Subtitles", + "OptionHasTrailer": "Trailer", + "OptionHasThemeSong": "Theme Song", + "OptionHasThemeVideo": "Theme Video", + "TabMovies": "Movies", + "TabStudios": "Studios", + "TabTrailers": "Trailers", + "LabelArtists": "Artists:", + "LabelArtistsHelp": "Separate multiple using ;", + "HeaderLatestMovies": "Latest Movies", + "HeaderLatestTrailers": "Latest Trailers", + "OptionHasSpecialFeatures": "Special Features", + "OptionImdbRating": "IMDb Rating", + "OptionParentalRating": "Parental Rating", + "OptionPremiereDate": "Premiere Date", + "TabBasic": "Basic", + "TabAdvanced": "Advanced", + "HeaderStatus": "Status", + "OptionContinuing": "Continuing", + "OptionEnded": "Ended", + "HeaderAirDays": "Air Days", + "OptionSunday": "Sunday", + "OptionMonday": "Monday", + "OptionTuesday": "Tuesday", + "OptionWednesday": "Wednesday", + "OptionThursday": "Thursday", + "OptionFriday": "Friday", + "OptionSaturday": "Saturday", + "HeaderManagement": "Management", + "LabelManagement": "Management:", + "OptionMissingImdbId": "Missing IMDb Id", + "OptionMissingTvdbId": "Missing TheTVDB Id", + "OptionMissingOverview": "Missing Overview", + "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", + "TabGeneral": "General", + "TitleSupport": "Support", + "LabelSeasonNumber": "Season number", + "TabLog": "Log", + "LabelEpisodeNumber": "Episode number", + "TabAbout": "About", + "TabSupporterKey": "Supporter Key", + "TabBecomeSupporter": "Become a Supporter", + "ProjectHasCommunity": "Emby has a thriving community of users and contributors.", + "CheckoutKnowledgeBase": "Check out our knowledge base to help you get the most out of Emby.", + "SearchKnowledgeBase": "Search the Knowledge Base", + "VisitTheCommunity": "Visit the Community", + "VisitProjectWebsite": "Visit the Emby Web Site", + "VisitProjectWebsiteLong": "Visit the Emby Web site to catch the latest news and keep up with the developer blog.", + "OptionHideUser": "Hide this user from login screens", + "OptionHideUserFromLoginHelp": "Useful for private or hidden administrator accounts. The user will need to sign in manually by entering their username and password.", + "OptionDisableUser": "Disable this user", + "OptionDisableUserHelp": "If disabled the server will not allow any connections from this user. Existing connections will be abruptly terminated.", + "HeaderAdvancedControl": "Advanced Control", + "LabelName": "Name:", + "ButtonHelp": "Help", + "OptionAllowUserToManageServer": "Allow this user to manage the server", + "HeaderFeatureAccess": "Feature Access", + "OptionAllowMediaPlayback": "Allow media playback", + "OptionAllowBrowsingLiveTv": "Allow Live TV access", + "OptionAllowDeleteLibraryContent": "Allow media deletion", + "OptionAllowManageLiveTv": "Allow Live TV recording management", + "OptionAllowRemoteControlOthers": "Allow remote control of other users", + "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", + "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", + "HeaderRemoteControl": "Remote Control", + "OptionMissingTmdbId": "Missing Tmdb Id", + "OptionIsHD": "HD", + "OptionIsSD": "SD", + "OptionMetascore": "Metascore", + "ButtonSelect": "Select", + "ButtonGroupVersions": "Group Versions", + "ButtonAddToCollection": "Add to Collection", + "PismoMessage": "Utilizing Pismo File Mount through a donated license.", + "TangibleSoftwareMessage": "Utilizing Tangible Solutions Java\/C# converters through a donated license.", + "HeaderCredits": "Credits", + "PleaseSupportOtherProduces": "Please support other free products we utilize:", + "VersionNumber": "Version {0}", + "TabPaths": "Paths", + "TabServer": "Server", + "TabTranscoding": "Transcoding", + "TitleAdvanced": "Advanced", + "LabelAutomaticUpdateLevel": "Automatic update level", + "OptionRelease": "Official Release", + "OptionBeta": "Beta", + "OptionDev": "Dev (Unstable)", + "LabelAllowServerAutoRestart": "Allow the server to restart automatically to apply updates", + "LabelAllowServerAutoRestartHelp": "The server will only restart during idle periods, when no users are active.", + "LabelEnableDebugLogging": "Enable debug logging", + "LabelRunServerAtStartup": "Run server at startup", + "LabelRunServerAtStartupHelp": "This will start the tray icon on windows startup. To start the windows service, uncheck this and run the service from the windows control panel. Please note that you cannot run both at the same time, so you will need to exit the tray icon before starting the service.", + "ButtonSelectDirectory": "Select Directory", + "LabelCustomPaths": "Specify custom paths where desired. Leave fields empty to use the defaults.", + "LabelCachePath": "Cache path:", + "LabelCachePathHelp": "Specify a custom location for server cache files, such as images.", + "LabelImagesByNamePath": "Images by name path:", + "LabelImagesByNamePathHelp": "Specify a custom location for downloaded actor, genre and studio images.", + "LabelMetadataPath": "Metadata path:", + "LabelMetadataPathHelp": "Specify a custom location for downloaded artwork and metadata, if not saving within media folders.", + "LabelTranscodingTempPath": "Transcoding temporary path:", + "LabelTranscodingTempPathHelp": "This folder contains working files used by the transcoder. Specify a custom path, or leave empty to use the default within the server's data folder.", + "TabBasics": "Basics", + "TabTV": "TV", + "TabGames": "Games", + "TabMusic": "Music", + "TabOthers": "Others", + "HeaderExtractChapterImagesFor": "Extract chapter images for:", + "OptionMovies": "Movies", + "OptionEpisodes": "Episodes", + "OptionOtherVideos": "Other Videos", + "TitleMetadata": "Metadata", + "LabelAutomaticUpdates": "Enable automatic updates", + "LabelAutomaticUpdatesTmdb": "Enable automatic updates from TheMovieDB.org", + "LabelAutomaticUpdatesTvdb": "Enable automatic updates from TheTVDB.com", + "LabelAutomaticUpdatesFanartHelp": "If enabled, new images will be downloaded automatically as they're added to fanart.tv. Existing images will not be replaced.", + "LabelAutomaticUpdatesTmdbHelp": "If enabled, new images will be downloaded automatically as they're added to TheMovieDB.org. Existing images will not be replaced.", + "LabelAutomaticUpdatesTvdbHelp": "If enabled, new images will be downloaded automatically as they're added to TheTVDB.com. Existing images will not be replaced.", + "LabelFanartApiKey": "Personal api key:", + "LabelFanartApiKeyHelp": "Requests to fanart without a personal API key return results that were approved over 7 days ago. With a personal API key that drops to 48 hours and if you are also a fanart VIP member that will further drop to around 10 minutes.", + "ExtractChapterImagesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs when videos are discovered, and also as a nightly scheduled task. The schedule is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelMetadataDownloadLanguage": "Preferred download language:", + "ButtonAutoScroll": "Auto-scroll", + "LabelImageSavingConvention": "Image saving convention:", + "LabelImageSavingConventionHelp": "Emby recognizes images from most major media applications. Choosing your downloading convention is useful if you also use other products.", + "OptionImageSavingCompatible": "Compatible - Emby\/Kodi\/Plex", + "OptionImageSavingStandard": "Standard - MB2", + "ButtonSignIn": "Sign In", + "TitleSignIn": "Sign In", + "HeaderPleaseSignIn": "Please sign in", + "LabelUser": "User:", + "LabelPassword": "Password:", + "ButtonManualLogin": "Manual Login", + "PasswordLocalhostMessage": "Passwords are not required when logging in from localhost.", + "TabGuide": "Guide", + "TabChannels": "Channels", + "TabCollections": "Collections", + "HeaderChannels": "Channels", + "TabRecordings": "Recordings", + "TabScheduled": "Scheduled", + "TabSeries": "Series", + "TabFavorites": "Favorites", + "TabMyLibrary": "My Library", + "ButtonCancelRecording": "Cancel Recording", + "HeaderPrePostPadding": "Pre\/Post Padding", + "LabelPrePaddingMinutes": "Pre-padding minutes:", + "OptionPrePaddingRequired": "Pre-padding is required in order to record.", + "LabelPostPaddingMinutes": "Post-padding minutes:", + "OptionPostPaddingRequired": "Post-padding is required in order to record.", + "HeaderWhatsOnTV": "What's On", + "HeaderUpcomingTV": "Upcoming TV", + "TabStatus": "Status", + "TabSettings": "Settings", + "ButtonRefreshGuideData": "Refresh Guide Data", + "ButtonRefresh": "Refresh", + "ButtonAdvancedRefresh": "Advanced Refresh", + "OptionPriority": "Priority", + "OptionRecordOnAllChannels": "Record on all channels", + "OptionRecordAnytime": "Record at any time", + "OptionRecordOnlyNewEpisodes": "Record only new episodes", + "HeaderRepeatingOptions": "Repeating Options", + "HeaderDays": "Days", + "HeaderActiveRecordings": "Active Recordings", + "HeaderLatestRecordings": "Latest Recordings", + "HeaderAllRecordings": "All Recordings", + "ButtonPlay": "Play", + "ButtonEdit": "Edit", + "ButtonRecord": "Record", + "ButtonDelete": "Delete", + "ButtonRemove": "Remove", + "OptionRecordSeries": "Record Series", + "HeaderDetails": "Details", + "TitleLiveTV": "Live TV", + "LabelNumberOfGuideDays": "Number of days of guide data to download:", + "LabelNumberOfGuideDaysHelp": "Downloading more days worth of guide data provides the ability to schedule out further in advance and view more listings, but it will also take longer to download. Auto will choose based on the number of channels.", + "OptionAutomatic": "Auto", "HeaderServices": "Services", "LiveTvPluginRequired": "A Live TV service provider plugin is required in order to continue.", "LiveTvPluginRequiredHelp": "Please install one of our available plugins, such as Next Pvr or ServerWmc.", @@ -158,8 +586,6 @@ "LabelSkipped": "Skipped", "HeaderEpisodeOrganization": "Episode Organization", "LabelSeries": "Series:", - "LabelSeasonNumber": "Season number:", - "LabelEpisodeNumber": "Episode number:", "LabelEndingEpisodeNumber": "Ending episode number:", "LabelEndingEpisodeNumberHelp": "Only required for multi-episode files", "HeaderSupportTheTeam": "Support the Emby Team", @@ -447,6 +873,7 @@ "HeaderTypeText": "Enter Text", "LabelTypeText": "Text", "HeaderSearchForSubtitles": "Search for Subtitles", + "ButtonMore": "More", "MessageNoSubtitleSearchResultsFound": "No search results founds.", "TabDisplay": "Display", "TabLanguages": "Languages", @@ -477,7 +904,7 @@ "HeaderLiveTv": "Live TV", "HeaderReports": "Reports", "HeaderMetadataManager": "Metadata Manager", - "HeaderPreferences": "Preferences", + "HeaderSettings": "Settings", "MessageLoadingChannels": "Loading channel content...", "MessageLoadingContent": "Loading content...", "ButtonMarkRead": "Mark Read", @@ -675,7 +1102,6 @@ "OptionReportArtists": "Artists", "OptionReportAlbums": "Albums", "OptionReportAdultVideos": "Adult videos", - "ButtonMore": "More", "HeaderActivity": "Activity", "ScheduledTaskStartedWithName": "{0} started", "ScheduledTaskCancelledWithName": "{0} was cancelled", @@ -805,6 +1231,7 @@ "OptionNoThemeVideo": "No Theme Video", "LabelOneTimeDonationAmount": "Donation amount:", "ButtonDonate": "Donate", + "ButtonPurchase": "Purchase", "OptionActor": "Actor", "OptionComposer": "Composer", "OptionDirector": "Director", @@ -824,7 +1251,6 @@ "HeaderDeveloperInfo": "Developer Info", "HeaderRevisionHistory": "Revision History", "ButtonViewWebsite": "View website", - "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderXmlSettings": "Xml Settings", "HeaderXmlDocumentAttributes": "Xml Document Attributes", "HeaderXmlDocumentAttribute": "Xml Document Attribute", @@ -838,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", "LabelExternalPlayers": "External players:", "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", "HeaderSubtitleProfile": "Subtitle Profile", "HeaderSubtitleProfiles": "Subtitle Profiles", "HeaderSubtitleProfilesHelp": "Subtitle profiles describe the subtitle formats supported by the device.", @@ -966,7 +1395,7 @@ "HeaderUpcomingMovies": "Upcoming Movies", "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", - "ButtonMoreItems": "More...", + "ButtonMoreItems": "More", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", @@ -985,14 +1414,6 @@ "OptionEnableFullSpeedConversion": "Enable full speed conversion", "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", "HeaderViewStyles": "View Styles", "LabelSelectViewStyles": "Enable enhanced presentations for:", "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", @@ -1010,428 +1431,24 @@ "HeaderNewServer": "New Server", "ButtonChangeServer": "Change Server", "HeaderConnectToServer": "Connect to Server", - "LabelExit": "Exit", - "LabelVisitCommunity": "Visit Community", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standard", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Browse Library", - "LabelConfigureServer": "Configure Emby", - "LabelOpenLibraryViewer": "Open Library Viewer", - "LabelRestartServer": "Restart Server", - "LabelShowLogWindow": "Show Log Window", - "LabelPrevious": "Previous", - "LabelFinish": "Finish", - "LabelNext": "Next", - "LabelYoureDone": "You're Done!", - "WelcomeToProject": "Welcome to Emby!", - "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", - "TellUsAboutYourself": "Tell us about yourself", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "Your first name:", - "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", - "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "Windows Service", - "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", - "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", - "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", - "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", - "LabelConfigureSettings": "Configure settings", - "LabelEnableVideoImageExtraction": "Enable video image extraction", - "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", - "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", - "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "HeaderTermsOfService": "Emby Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LinkedToEmbyConnect": "Linked to Emby Connect", - "HeaderSupporterBenefits": "Supporter Benefits", - "HeaderAddUser": "Add User", - "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", - "LabelPinCode": "Pin code:", - "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", - "HeaderSync": "Sync", - "ButtonOk": "Ok", - "ButtonCancel": "Cancel", - "ButtonExit": "Exit", - "ButtonNew": "New", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "TabPlaylist": "Playlist", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Emby online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "Setup your media library", - "ButtonAddMediaFolder": "Add media folder", - "LabelFolderType": "Folder type:", - "ReferToMediaLibraryWiki": "Refer to the media library wiki.", - "LabelCountry": "Country:", - "LabelLanguage": "Language:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "Preferred metadata language:", - "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", - "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", - "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", - "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", - "TabPreferences": "Preferences", - "TabPassword": "Password", - "TabLibraryAccess": "Library Access", - "TabAccess": "Access", - "TabImage": "Image", - "TabProfile": "Profile", - "TabMetadata": "Metadata", - "TabImages": "Images", - "TabNotifications": "Notifications", - "TabCollectionTitles": "Titles", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", - "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", - "HeaderVideoPlaybackSettings": "Video Playback Settings", - "HeaderPlaybackSettings": "Playback Settings", - "LabelAudioLanguagePreference": "Audio language preference:", - "LabelSubtitleLanguagePreference": "Subtitle language preference:", - "OptionDefaultSubtitles": "Default", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "No Subtitles", - "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", - "TabProfiles": "Profiles", - "TabSecurity": "Security", - "ButtonAddUser": "Add User", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "Save", - "ButtonResetPassword": "Reset Password", - "LabelNewPassword": "New password:", - "LabelNewPasswordConfirm": "New password confirm:", - "HeaderCreatePassword": "Create Password", - "LabelCurrentPassword": "Current password:", - "LabelMaxParentalRating": "Maximum allowed parental rating:", - "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", - "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", - "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", - "ButtonDeleteImage": "Delete Image", - "LabelSelectUsers": "Select users:", - "ButtonUpload": "Upload", - "HeaderUploadNewImage": "Upload New Image", - "LabelDropImageHere": "Drop image here", - "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", - "MessageNothingHere": "Nothing here.", - "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", - "TabSuggested": "Suggested", - "TabSuggestions": "Suggestions", - "TabLatest": "Latest", - "TabUpcoming": "Upcoming", - "TabShows": "Shows", - "TabEpisodes": "Episodes", - "TabGenres": "Genres", - "TabPeople": "People", - "TabNetworks": "Networks", - "HeaderUsers": "Users", - "HeaderFilters": "Filters:", - "ButtonFilter": "Filter", - "OptionFavorite": "Favorites", - "OptionLikes": "Likes", - "OptionDislikes": "Dislikes", - "OptionActors": "Actors", - "OptionGuestStars": "Guest Stars", - "OptionDirectors": "Directors", - "OptionWriters": "Writers", - "OptionProducers": "Producers", - "HeaderResume": "Resume", - "HeaderNextUp": "Next Up", - "NoNextUpItemsMessage": "None found. Start watching your shows!", - "HeaderLatestEpisodes": "Latest Episodes", - "HeaderPersonTypes": "Person Types:", - "TabSongs": "Songs", - "TabAlbums": "Albums", - "TabArtists": "Artists", - "TabAlbumArtists": "Album Artists", - "TabMusicVideos": "Music Videos", - "ButtonSort": "Sort", - "HeaderSortBy": "Sort By:", - "HeaderSortOrder": "Sort Order:", - "OptionPlayed": "Played", - "OptionUnplayed": "Unplayed", - "OptionAscending": "Ascending", - "OptionDescending": "Descending", - "OptionRuntime": "Runtime", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "Play Count", - "OptionDatePlayed": "Date Played", - "OptionDateAdded": "Date Added", - "OptionAlbumArtist": "Album Artist", - "OptionArtist": "Artist", - "OptionAlbum": "Album", - "OptionTrackName": "Track Name", - "OptionCommunityRating": "Community Rating", - "OptionNameSort": "Name", - "OptionFolderSort": "Folders", - "OptionBudget": "Budget", - "OptionRevenue": "Revenue", - "OptionPoster": "Poster", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "Backdrop", - "OptionTimeline": "Timeline", - "OptionThumb": "Thumb", - "OptionThumbCard": "Thumb card", - "OptionBanner": "Banner", - "OptionCriticRating": "Critic Rating", - "OptionVideoBitrate": "Video Bitrate", - "OptionResumable": "Resumable", - "ScheduledTasksHelp": "Click a task to adjust its schedule.", - "ScheduledTasksTitle": "Scheduled Tasks", - "TabMyPlugins": "My Plugins", - "TabCatalog": "Catalog", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Automatic Updates", - "HeaderNowPlaying": "Now Playing", - "HeaderLatestAlbums": "Latest Albums", - "HeaderLatestSongs": "Latest Songs", - "HeaderRecentlyPlayed": "Recently Played", - "HeaderFrequentlyPlayed": "Frequently Played", - "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", - "LabelVideoType": "Video Type:", - "OptionBluray": "Bluray", - "OptionDvd": "Dvd", - "OptionIso": "Iso", - "Option3D": "3D", - "LabelFeatures": "Features:", - "LabelService": "Service:", - "LabelStatus": "Status:", - "LabelVersion": "Version:", - "LabelLastResult": "Last result:", - "OptionHasSubtitles": "Subtitles", - "OptionHasTrailer": "Trailer", - "OptionHasThemeSong": "Theme Song", - "OptionHasThemeVideo": "Theme Video", - "TabMovies": "Movies", - "TabStudios": "Studios", - "TabTrailers": "Trailers", - "LabelArtists": "Artists:", - "LabelArtistsHelp": "Separate multiple using ;", - "HeaderLatestMovies": "Latest Movies", - "HeaderLatestTrailers": "Latest Trailers", - "OptionHasSpecialFeatures": "Special Features", - "OptionImdbRating": "IMDb Rating", - "OptionParentalRating": "Parental Rating", - "OptionPremiereDate": "Premiere Date", - "TabBasic": "Basic", - "TabAdvanced": "Advanced", - "HeaderStatus": "Status", - "OptionContinuing": "Continuing", - "OptionEnded": "Ended", - "HeaderAirDays": "Air Days", - "OptionSunday": "Sunday", - "OptionMonday": "Monday", - "OptionTuesday": "Tuesday", - "OptionWednesday": "Wednesday", - "OptionThursday": "Thursday", - "OptionFriday": "Friday", - "OptionSaturday": "Saturday", - "HeaderManagement": "Management", - "LabelManagement": "Management:", - "OptionMissingImdbId": "Missing IMDb Id", - "OptionMissingTvdbId": "Missing TheTVDB Id", - "OptionMissingOverview": "Missing Overview", - "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", - "TabGeneral": "General", - "TitleSupport": "Support", - "TabLog": "Log", - "TabAbout": "About", - "TabSupporterKey": "Supporter Key", - "TabBecomeSupporter": "Become a Supporter", - "ProjectHasCommunity": "Emby has a thriving community of users and contributors.", - "CheckoutKnowledgeBase": "Check out our knowledge base to help you get the most out of Emby.", - "SearchKnowledgeBase": "Search the Knowledge Base", - "VisitTheCommunity": "Visit the Community", - "VisitProjectWebsite": "Visit the Emby Web Site", - "VisitProjectWebsiteLong": "Visit the Emby Web site to catch the latest news and keep up with the developer blog.", - "OptionHideUser": "Hide this user from login screens", - "OptionHideUserFromLoginHelp": "Useful for private or hidden administrator accounts. The user will need to sign in manually by entering their username and password.", - "OptionDisableUser": "Disable this user", - "OptionDisableUserHelp": "If disabled the server will not allow any connections from this user. Existing connections will be abruptly terminated.", - "HeaderAdvancedControl": "Advanced Control", - "LabelName": "Name:", - "ButtonHelp": "Help", - "OptionAllowUserToManageServer": "Allow this user to manage the server", - "HeaderFeatureAccess": "Feature Access", - "OptionAllowMediaPlayback": "Allow media playback", - "OptionAllowBrowsingLiveTv": "Allow Live TV access", - "OptionAllowDeleteLibraryContent": "Allow media deletion", - "OptionAllowManageLiveTv": "Allow Live TV recording management", - "OptionAllowRemoteControlOthers": "Allow remote control of other users", - "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", - "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", - "HeaderRemoteControl": "Remote Control", - "OptionMissingTmdbId": "Missing Tmdb Id", - "OptionIsHD": "HD", - "OptionIsSD": "SD", - "OptionMetascore": "Metascore", - "ButtonSelect": "Select", - "ButtonGroupVersions": "Group Versions", - "ButtonAddToCollection": "Add to Collection", - "PismoMessage": "Utilizing Pismo File Mount through a donated license.", - "TangibleSoftwareMessage": "Utilizing Tangible Solutions Java\/C# converters through a donated license.", - "HeaderCredits": "Credits", - "PleaseSupportOtherProduces": "Please support other free products we utilize:", - "VersionNumber": "Version {0}", - "TabPaths": "Paths", - "TabServer": "Server", - "TabTranscoding": "Transcoding", - "TitleAdvanced": "Advanced", - "LabelAutomaticUpdateLevel": "Automatic update level", - "OptionRelease": "Official Release", - "OptionBeta": "Beta", - "OptionDev": "Dev (Unstable)", - "LabelAllowServerAutoRestart": "Allow the server to restart automatically to apply updates", - "LabelAllowServerAutoRestartHelp": "The server will only restart during idle periods, when no users are active.", - "LabelEnableDebugLogging": "Enable debug logging", - "LabelRunServerAtStartup": "Run server at startup", - "LabelRunServerAtStartupHelp": "This will start the tray icon on windows startup. To start the windows service, uncheck this and run the service from the windows control panel. Please note that you cannot run both at the same time, so you will need to exit the tray icon before starting the service.", - "ButtonSelectDirectory": "Select Directory", - "LabelCustomPaths": "Specify custom paths where desired. Leave fields empty to use the defaults.", - "LabelCachePath": "Cache path:", - "LabelCachePathHelp": "Specify a custom location for server cache files, such as images.", - "LabelImagesByNamePath": "Images by name path:", - "LabelImagesByNamePathHelp": "Specify a custom location for downloaded actor, genre and studio images.", - "LabelMetadataPath": "Metadata path:", - "LabelMetadataPathHelp": "Specify a custom location for downloaded artwork and metadata, if not saving within media folders.", - "LabelTranscodingTempPath": "Transcoding temporary path:", - "LabelTranscodingTempPathHelp": "This folder contains working files used by the transcoder. Specify a custom path, or leave empty to use the default within the server's data folder.", - "TabBasics": "Basics", - "TabTV": "TV", - "TabGames": "Games", - "TabMusic": "Music", - "TabOthers": "Others", - "HeaderExtractChapterImagesFor": "Extract chapter images for:", - "OptionMovies": "Movies", - "OptionEpisodes": "Episodes", - "OptionOtherVideos": "Other Videos", - "TitleMetadata": "Metadata", - "LabelAutomaticUpdates": "Enable automatic updates", - "LabelAutomaticUpdatesTmdb": "Enable automatic updates from TheMovieDB.org", - "LabelAutomaticUpdatesTvdb": "Enable automatic updates from TheTVDB.com", - "LabelAutomaticUpdatesFanartHelp": "If enabled, new images will be downloaded automatically as they're added to fanart.tv. Existing images will not be replaced.", - "LabelAutomaticUpdatesTmdbHelp": "If enabled, new images will be downloaded automatically as they're added to TheMovieDB.org. Existing images will not be replaced.", - "LabelAutomaticUpdatesTvdbHelp": "If enabled, new images will be downloaded automatically as they're added to TheTVDB.com. Existing images will not be replaced.", - "LabelFanartApiKey": "Personal api key:", - "LabelFanartApiKeyHelp": "Requests to fanart without a personal API key return results that were approved over 7 days ago. With a personal API key that drops to 48 hours and if you are also a fanart VIP member that will further drop to around 10 minutes.", - "ExtractChapterImagesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs when videos are discovered, and also as a nightly scheduled task. The schedule is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelMetadataDownloadLanguage": "Preferred download language:", - "ButtonAutoScroll": "Auto-scroll", - "LabelImageSavingConvention": "Image saving convention:", - "LabelImageSavingConventionHelp": "Emby recognizes images from most major media applications. Choosing your downloading convention is useful if you also use other products.", - "OptionImageSavingCompatible": "Compatible - Emby\/Kodi\/Plex", - "OptionImageSavingStandard": "Standard - MB2", - "ButtonSignIn": "Sign In", - "TitleSignIn": "Sign In", - "HeaderPleaseSignIn": "Please sign in", - "LabelUser": "User:", - "LabelPassword": "Password:", - "ButtonManualLogin": "Manual Login", - "PasswordLocalhostMessage": "Passwords are not required when logging in from localhost.", - "TabGuide": "Guide", - "TabChannels": "Channels", - "TabCollections": "Collections", - "HeaderChannels": "Channels", - "TabRecordings": "Recordings", - "TabScheduled": "Scheduled", - "TabSeries": "Series", - "TabFavorites": "Favorites", - "TabMyLibrary": "My Library", - "ButtonCancelRecording": "Cancel Recording", - "HeaderPrePostPadding": "Pre\/Post Padding", - "LabelPrePaddingMinutes": "Pre-padding minutes:", - "OptionPrePaddingRequired": "Pre-padding is required in order to record.", - "LabelPostPaddingMinutes": "Post-padding minutes:", - "OptionPostPaddingRequired": "Post-padding is required in order to record.", - "HeaderWhatsOnTV": "What's On", - "HeaderUpcomingTV": "Upcoming TV", - "TabStatus": "Status", - "TabSettings": "Settings", - "ButtonRefreshGuideData": "Refresh Guide Data", - "ButtonRefresh": "Refresh", - "ButtonAdvancedRefresh": "Advanced Refresh", - "OptionPriority": "Priority", - "OptionRecordOnAllChannels": "Record on all channels", - "OptionRecordAnytime": "Record at any time", - "OptionRecordOnlyNewEpisodes": "Record only new episodes", - "HeaderRepeatingOptions": "Repeating Options", - "HeaderDays": "Days", - "HeaderActiveRecordings": "Active Recordings", - "HeaderLatestRecordings": "Latest Recordings", - "HeaderAllRecordings": "All Recordings", - "ButtonPlay": "Play", - "ButtonEdit": "Edit", - "ButtonRecord": "Record", - "ButtonDelete": "Delete", - "ButtonRemove": "Remove", - "OptionRecordSeries": "Record Series", - "HeaderDetails": "Details", - "TitleLiveTV": "Live TV", - "LabelNumberOfGuideDays": "Number of days of guide data to download:", - "LabelNumberOfGuideDaysHelp": "Downloading more days worth of guide data provides the ability to schedule out further in advance and view more listings, but it will also take longer to download. Auto will choose based on the number of channels.", - "OptionAutomatic": "Auto" + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "HeaderExport": "Export", + "HeaderColumns": "Columns", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/es-AR.json b/MediaBrowser.Server.Implementations/Localization/Server/es-AR.json new file mode 100644 index 000000000..ee8ec5693 --- /dev/null +++ b/MediaBrowser.Server.Implementations/Localization/Server/es-AR.json @@ -0,0 +1,1454 @@ +{ + "LabelExit": "Salir", + "LabelVisitCommunity": "Visit Community", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Est\u00e1ndar", + "LabelApiDocumentation": "Documentaci\u00f3n API", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Browse Library", + "LabelConfigureServer": "Configurar Emby", + "LabelOpenLibraryViewer": "Open Library Viewer", + "LabelRestartServer": "Reiniciar el servidor", + "LabelShowLogWindow": "Show Log Window", + "LabelPrevious": "Previous", + "LabelFinish": "Finish", + "FolderTypeMixed": "Mixed content", + "LabelNext": "Next", + "LabelYoureDone": "Ha terminado!", + "WelcomeToProject": "Bienvenidos a Emby!", + "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", + "TellUsAboutYourself": "Tell us about yourself", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "Your first name:", + "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", + "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", + "LabelWindowsService": "Windows Service", + "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", + "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", + "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", + "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", + "LabelConfigureSettings": "Configure settings", + "LabelEnableVideoImageExtraction": "Enable video image extraction", + "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", + "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", + "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", + "HeaderTermsOfService": "T\u00e9rminos de servicios de Emby", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organizar", + "LinkedToEmbyConnect": "Linked to Emby Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Agregar Usuario", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", + "ButtonOk": "Ok", + "ButtonCancel": "Cancel", + "ButtonExit": "Exit", + "ButtonNew": "New", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "Username or email:", + "LabelEnterConnectUserNameHelp": "This is your Emby online account username or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "Setup your media library", + "ButtonAddMediaFolder": "Add media folder", + "LabelFolderType": "Folder type:", + "ReferToMediaLibraryWiki": "Refer to the media library wiki.", + "LabelCountry": "Country:", + "LabelLanguage": "Language:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "Preferred metadata language:", + "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", + "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", + "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", + "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", + "TabPreferences": "Preferences", + "TabPassword": "Password", + "TabLibraryAccess": "Library Access", + "TabAccess": "Access", + "TabImage": "Image", + "TabProfile": "Profile", + "TabMetadata": "Metadata", + "TabImages": "Images", + "TabNotifications": "Notifications", + "TabCollectionTitles": "Titles", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "Mostar cap\u00edtulos no disponibles en temporadas", + "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", + "HeaderVideoPlaybackSettings": "Video Playback Settings", + "HeaderPlaybackSettings": "Playback Settings", + "LabelAudioLanguagePreference": "Audio language preference:", + "LabelSubtitleLanguagePreference": "Subtitle language preference:", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Only forced subtitles", + "OptionAlwaysPlaySubtitles": "Always play subtitles", + "OptionNoSubtitles": "No Subtitles", + "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", + "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", + "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", + "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", + "TabProfiles": "Profiles", + "TabSecurity": "Security", + "ButtonAddUser": "Add User", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "Save", + "ButtonResetPassword": "Reset Password", + "LabelNewPassword": "New password:", + "LabelNewPasswordConfirm": "New password confirm:", + "HeaderCreatePassword": "Create Password", + "LabelCurrentPassword": "Current password:", + "LabelMaxParentalRating": "Maximum allowed parental rating:", + "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", + "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", + "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", + "ButtonDeleteImage": "Delete Image", + "LabelSelectUsers": "Select users:", + "ButtonUpload": "Upload", + "HeaderUploadNewImage": "Upload New Image", + "LabelDropImageHere": "Drop image here", + "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", + "MessageNothingHere": "Nothing here.", + "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", + "TabSuggested": "Suggested", + "TabSuggestions": "Suggestions", + "TabLatest": "Latest", + "TabUpcoming": "Upcoming", + "TabShows": "Shows", + "TabEpisodes": "Cap\u00edtulos", + "TabGenres": "Genres", + "TabPeople": "People", + "TabNetworks": "Networks", + "HeaderUsers": "Users", + "HeaderFilters": "Filters:", + "ButtonFilter": "Filter", + "OptionFavorite": "Favorites", + "OptionLikes": "Likes", + "OptionDislikes": "Dislikes", + "OptionActors": "Actors", + "OptionGuestStars": "Guest Stars", + "OptionDirectors": "Directors", + "OptionWriters": "Writers", + "OptionProducers": "Producers", + "HeaderResume": "Resume", + "HeaderNextUp": "Next Up", + "NoNextUpItemsMessage": "None found. Start watching your shows!", + "HeaderLatestEpisodes": "\u00daltimos cap\u00edtulos", + "HeaderPersonTypes": "Person Types:", + "TabSongs": "Songs", + "TabAlbums": "Albums", + "TabArtists": "Artists", + "TabAlbumArtists": "Album Artists", + "TabMusicVideos": "Music Videos", + "ButtonSort": "Sort", + "HeaderSortBy": "Sort By:", + "HeaderSortOrder": "Sort Order:", + "OptionPlayed": "Played", + "OptionUnplayed": "Unplayed", + "OptionAscending": "Ascending", + "OptionDescending": "Descending", + "OptionRuntime": "Runtime", + "OptionReleaseDate": "Release Date", + "OptionPlayCount": "Play Count", + "OptionDatePlayed": "Date Played", + "OptionDateAdded": "Date Added", + "OptionAlbumArtist": "Album Artist", + "OptionArtist": "Artist", + "OptionAlbum": "Album", + "OptionTrackName": "Track Name", + "OptionCommunityRating": "Community Rating", + "OptionNameSort": "Name", + "OptionFolderSort": "Folders", + "OptionBudget": "Budget", + "OptionRevenue": "Revenue", + "OptionPoster": "Poster", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "Backdrop", + "OptionTimeline": "Timeline", + "OptionThumb": "Thumb", + "OptionThumbCard": "Thumb card", + "OptionBanner": "Banner", + "OptionCriticRating": "Critic Rating", + "OptionVideoBitrate": "Video Bitrate", + "OptionResumable": "Resumable", + "ScheduledTasksHelp": "Click a task to adjust its schedule.", + "ScheduledTasksTitle": "Scheduled Tasks", + "TabMyPlugins": "My Plugins", + "TabCatalog": "Catalog", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "Automatic Updates", + "HeaderNowPlaying": "Now Playing", + "HeaderLatestAlbums": "Latest Albums", + "HeaderLatestSongs": "Latest Songs", + "HeaderRecentlyPlayed": "Recently Played", + "HeaderFrequentlyPlayed": "Frequently Played", + "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", + "LabelVideoType": "Video Type:", + "OptionBluray": "Bluray", + "OptionDvd": "Dvd", + "OptionIso": "Iso", + "Option3D": "3D", + "LabelFeatures": "Features:", + "LabelService": "Service:", + "LabelStatus": "Status:", + "LabelVersion": "Version:", + "LabelLastResult": "Last result:", + "OptionHasSubtitles": "Subtitles", + "OptionHasTrailer": "Trailer", + "OptionHasThemeSong": "Theme Song", + "OptionHasThemeVideo": "Theme Video", + "TabMovies": "Movies", + "TabStudios": "Studios", + "TabTrailers": "Trailers", + "LabelArtists": "Artists:", + "LabelArtistsHelp": "Separate multiple using ;", + "HeaderLatestMovies": "Latest Movies", + "HeaderLatestTrailers": "Latest Trailers", + "OptionHasSpecialFeatures": "Special Features", + "OptionImdbRating": "IMDb Rating", + "OptionParentalRating": "Parental Rating", + "OptionPremiereDate": "Premiere Date", + "TabBasic": "Basic", + "TabAdvanced": "Advanced", + "HeaderStatus": "Status", + "OptionContinuing": "Continuing", + "OptionEnded": "Ended", + "HeaderAirDays": "Air Days", + "OptionSunday": "Sunday", + "OptionMonday": "Monday", + "OptionTuesday": "Tuesday", + "OptionWednesday": "Wednesday", + "OptionThursday": "Thursday", + "OptionFriday": "Friday", + "OptionSaturday": "Saturday", + "HeaderManagement": "Management", + "LabelManagement": "Management:", + "OptionMissingImdbId": "Missing IMDb Id", + "OptionMissingTvdbId": "Missing TheTVDB Id", + "OptionMissingOverview": "Missing Overview", + "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", + "TabGeneral": "General", + "TitleSupport": "Support", + "LabelSeasonNumber": "Season number", + "TabLog": "Log", + "LabelEpisodeNumber": "Episode number", + "TabAbout": "About", + "TabSupporterKey": "Supporter Key", + "TabBecomeSupporter": "Become a Supporter", + "ProjectHasCommunity": "Emby has a thriving community of users and contributors.", + "CheckoutKnowledgeBase": "Check out our knowledge base to help you get the most out of Emby.", + "SearchKnowledgeBase": "Search the Knowledge Base", + "VisitTheCommunity": "Visit the Community", + "VisitProjectWebsite": "Visit the Emby Web Site", + "VisitProjectWebsiteLong": "Visit the Emby Web site to catch the latest news and keep up with the developer blog.", + "OptionHideUser": "Hide this user from login screens", + "OptionHideUserFromLoginHelp": "Useful for private or hidden administrator accounts. The user will need to sign in manually by entering their username and password.", + "OptionDisableUser": "Disable this user", + "OptionDisableUserHelp": "If disabled the server will not allow any connections from this user. Existing connections will be abruptly terminated.", + "HeaderAdvancedControl": "Advanced Control", + "LabelName": "Name:", + "ButtonHelp": "Help", + "OptionAllowUserToManageServer": "Allow this user to manage the server", + "HeaderFeatureAccess": "Feature Access", + "OptionAllowMediaPlayback": "Allow media playback", + "OptionAllowBrowsingLiveTv": "Allow Live TV access", + "OptionAllowDeleteLibraryContent": "Allow media deletion", + "OptionAllowManageLiveTv": "Allow Live TV recording management", + "OptionAllowRemoteControlOthers": "Allow remote control of other users", + "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", + "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", + "HeaderRemoteControl": "Remote Control", + "OptionMissingTmdbId": "Missing Tmdb Id", + "OptionIsHD": "HD", + "OptionIsSD": "SD", + "OptionMetascore": "Metascore", + "ButtonSelect": "Select", + "ButtonGroupVersions": "Group Versions", + "ButtonAddToCollection": "Add to Collection", + "PismoMessage": "Utilizing Pismo File Mount through a donated license.", + "TangibleSoftwareMessage": "Utilizing Tangible Solutions Java\/C# converters through a donated license.", + "HeaderCredits": "Credits", + "PleaseSupportOtherProduces": "Please support other free products we utilize:", + "VersionNumber": "Version {0}", + "TabPaths": "Paths", + "TabServer": "Server", + "TabTranscoding": "Transcoding", + "TitleAdvanced": "Advanced", + "LabelAutomaticUpdateLevel": "Automatic update level", + "OptionRelease": "Official Release", + "OptionBeta": "Beta", + "OptionDev": "Dev (Unstable)", + "LabelAllowServerAutoRestart": "Allow the server to restart automatically to apply updates", + "LabelAllowServerAutoRestartHelp": "The server will only restart during idle periods, when no users are active.", + "LabelEnableDebugLogging": "Enable debug logging", + "LabelRunServerAtStartup": "Run server at startup", + "LabelRunServerAtStartupHelp": "This will start the tray icon on windows startup. To start the windows service, uncheck this and run the service from the windows control panel. Please note that you cannot run both at the same time, so you will need to exit the tray icon before starting the service.", + "ButtonSelectDirectory": "Select Directory", + "LabelCustomPaths": "Specify custom paths where desired. Leave fields empty to use the defaults.", + "LabelCachePath": "Cache path:", + "LabelCachePathHelp": "Specify a custom location for server cache files, such as images.", + "LabelImagesByNamePath": "Images by name path:", + "LabelImagesByNamePathHelp": "Specify a custom location for downloaded actor, genre and studio images.", + "LabelMetadataPath": "Metadata path:", + "LabelMetadataPathHelp": "Specify a custom location for downloaded artwork and metadata, if not saving within media folders.", + "LabelTranscodingTempPath": "Transcoding temporary path:", + "LabelTranscodingTempPathHelp": "This folder contains working files used by the transcoder. Specify a custom path, or leave empty to use the default within the server's data folder.", + "TabBasics": "Basics", + "TabTV": "TV", + "TabGames": "Games", + "TabMusic": "Music", + "TabOthers": "Others", + "HeaderExtractChapterImagesFor": "Extract chapter images for:", + "OptionMovies": "Movies", + "OptionEpisodes": "Episodes", + "OptionOtherVideos": "Other Videos", + "TitleMetadata": "Metadata", + "LabelAutomaticUpdates": "Enable automatic updates", + "LabelAutomaticUpdatesTmdb": "Enable automatic updates from TheMovieDB.org", + "LabelAutomaticUpdatesTvdb": "Enable automatic updates from TheTVDB.com", + "LabelAutomaticUpdatesFanartHelp": "If enabled, new images will be downloaded automatically as they're added to fanart.tv. Existing images will not be replaced.", + "LabelAutomaticUpdatesTmdbHelp": "If enabled, new images will be downloaded automatically as they're added to TheMovieDB.org. Existing images will not be replaced.", + "LabelAutomaticUpdatesTvdbHelp": "If enabled, new images will be downloaded automatically as they're added to TheTVDB.com. Existing images will not be replaced.", + "LabelFanartApiKey": "Personal api key:", + "LabelFanartApiKeyHelp": "Requests to fanart without a personal API key return results that were approved over 7 days ago. With a personal API key that drops to 48 hours and if you are also a fanart VIP member that will further drop to around 10 minutes.", + "ExtractChapterImagesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs when videos are discovered, and also as a nightly scheduled task. The schedule is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelMetadataDownloadLanguage": "Preferred download language:", + "ButtonAutoScroll": "Auto-scroll", + "LabelImageSavingConvention": "Image saving convention:", + "LabelImageSavingConventionHelp": "Emby recognizes images from most major media applications. Choosing your downloading convention is useful if you also use other products.", + "OptionImageSavingCompatible": "Compatible - Emby\/Kodi\/Plex", + "OptionImageSavingStandard": "Standard - MB2", + "ButtonSignIn": "Sign In", + "TitleSignIn": "Sign In", + "HeaderPleaseSignIn": "Please sign in", + "LabelUser": "User:", + "LabelPassword": "Password:", + "ButtonManualLogin": "Manual Login", + "PasswordLocalhostMessage": "Passwords are not required when logging in from localhost.", + "TabGuide": "Guide", + "TabChannels": "Channels", + "TabCollections": "Collections", + "HeaderChannels": "Channels", + "TabRecordings": "Recordings", + "TabScheduled": "Scheduled", + "TabSeries": "Series", + "TabFavorites": "Favorites", + "TabMyLibrary": "My Library", + "ButtonCancelRecording": "Cancel Recording", + "HeaderPrePostPadding": "Pre\/Post Padding", + "LabelPrePaddingMinutes": "Pre-padding minutes:", + "OptionPrePaddingRequired": "Pre-padding is required in order to record.", + "LabelPostPaddingMinutes": "Post-padding minutes:", + "OptionPostPaddingRequired": "Post-padding is required in order to record.", + "HeaderWhatsOnTV": "What's On", + "HeaderUpcomingTV": "Upcoming TV", + "TabStatus": "Status", + "TabSettings": "Settings", + "ButtonRefreshGuideData": "Refresh Guide Data", + "ButtonRefresh": "Refresh", + "ButtonAdvancedRefresh": "Advanced Refresh", + "OptionPriority": "Priority", + "OptionRecordOnAllChannels": "Record on all channels", + "OptionRecordAnytime": "Record at any time", + "OptionRecordOnlyNewEpisodes": "Grabar s\u00f3lo nuevos cap\u00edtulos", + "HeaderRepeatingOptions": "Repeating Options", + "HeaderDays": "Days", + "HeaderActiveRecordings": "Active Recordings", + "HeaderLatestRecordings": "Latest Recordings", + "HeaderAllRecordings": "All Recordings", + "ButtonPlay": "Play", + "ButtonEdit": "Edit", + "ButtonRecord": "Record", + "ButtonDelete": "Delete", + "ButtonRemove": "Remove", + "OptionRecordSeries": "Record Series", + "HeaderDetails": "Details", + "TitleLiveTV": "Live TV", + "LabelNumberOfGuideDays": "Number of days of guide data to download:", + "LabelNumberOfGuideDaysHelp": "Downloading more days worth of guide data provides the ability to schedule out further in advance and view more listings, but it will also take longer to download. Auto will choose based on the number of channels.", + "OptionAutomatic": "Auto", + "HeaderServices": "Services", + "LiveTvPluginRequired": "A Live TV service provider plugin is required in order to continue.", + "LiveTvPluginRequiredHelp": "Please install one of our available plugins, such as Next Pvr or ServerWmc.", + "LabelCustomizeOptionsPerMediaType": "Customize for media type:", + "OptionDownloadThumbImage": "Thumb", + "OptionDownloadMenuImage": "Menu", + "OptionDownloadLogoImage": "Logo", + "OptionDownloadBoxImage": "Box", + "OptionDownloadDiscImage": "Disc", + "OptionDownloadBannerImage": "Banner", + "OptionDownloadBackImage": "Back", + "OptionDownloadArtImage": "Art", + "OptionDownloadPrimaryImage": "Primary", + "HeaderFetchImages": "Fetch Images:", + "HeaderImageSettings": "Image Settings", + "TabOther": "Other", + "LabelMaxBackdropsPerItem": "Maximum number of backdrops per item:", + "LabelMaxScreenshotsPerItem": "Maximum number of screenshots per item:", + "LabelMinBackdropDownloadWidth": "Minimum backdrop download width:", + "LabelMinScreenshotDownloadWidth": "Minimum screenshot download width:", + "ButtonAddScheduledTaskTrigger": "Add Trigger", + "HeaderAddScheduledTaskTrigger": "Add Trigger", + "ButtonAdd": "Add", + "LabelTriggerType": "Trigger Type:", + "OptionDaily": "Daily", + "OptionWeekly": "Weekly", + "OptionOnInterval": "On an interval", + "OptionOnAppStartup": "On application startup", + "OptionAfterSystemEvent": "After a system event", + "LabelDay": "Day:", + "LabelTime": "Time:", + "LabelEvent": "Event:", + "OptionWakeFromSleep": "Wake from sleep", + "LabelEveryXMinutes": "Every:", + "HeaderTvTuners": "Tuners", + "HeaderGallery": "Gallery", + "HeaderLatestGames": "Latest Games", + "HeaderRecentlyPlayedGames": "Recently Played Games", + "TabGameSystems": "Game Systems", + "TitleMediaLibrary": "Media Library", + "TabFolders": "Folders", + "TabPathSubstitution": "Path Substitution", + "LabelSeasonZeroDisplayName": "Season 0 display name:", + "LabelEnableRealtimeMonitor": "Enable real time monitoring", + "LabelEnableRealtimeMonitorHelp": "Changes will be processed immediately, on supported file systems.", + "ButtonScanLibrary": "Scan Library", + "HeaderNumberOfPlayers": "Players:", + "OptionAnyNumberOfPlayers": "Any", + "Option1Player": "1+", + "Option2Player": "2+", + "Option3Player": "3+", + "Option4Player": "4+", + "HeaderMediaFolders": "Media Folders", + "HeaderThemeVideos": "Theme Videos", + "HeaderThemeSongs": "Theme Songs", + "HeaderScenes": "Scenes", + "HeaderAwardsAndReviews": "Awards and Reviews", + "HeaderSoundtracks": "Soundtracks", + "HeaderMusicVideos": "Music Videos", + "HeaderSpecialFeatures": "Special Features", + "HeaderCastCrew": "Cast & Crew", + "HeaderAdditionalParts": "Additional Parts", + "ButtonSplitVersionsApart": "Split Versions Apart", + "ButtonPlayTrailer": "Trailer", + "LabelMissing": "Missing", + "LabelOffline": "Offline", + "PathSubstitutionHelp": "Path substitutions are used for mapping a path on the server to a path that clients are able to access. By allowing clients direct access to media on the server they may be able to play them directly over the network and avoid using server resources to stream and transcode them.", + "HeaderFrom": "From", + "HeaderTo": "To", + "LabelFrom": "From:", + "LabelFromHelp": "Example: D:\\Movies (on the server)", + "LabelTo": "To:", + "LabelToHelp": "Example: \\\\MyServer\\Movies (a path clients can access)", + "ButtonAddPathSubstitution": "Add Substitution", + "OptionSpecialEpisode": "Specials", + "OptionMissingEpisode": "Cap\u00edtulos faltantes", + "OptionUnairedEpisode": "Cap\u00edtulos no emitidos", + "OptionEpisodeSortName": "Nombre corto del cap\u00edtulo", + "OptionSeriesSortName": "Series Name", + "OptionTvdbRating": "Tvdb Rating", + "HeaderTranscodingQualityPreference": "Transcoding Quality Preference:", + "OptionAutomaticTranscodingHelp": "The server will decide quality and speed", + "OptionHighSpeedTranscodingHelp": "Lower quality, but faster encoding", + "OptionHighQualityTranscodingHelp": "Higher quality, but slower encoding", + "OptionMaxQualityTranscodingHelp": "Best quality with slower encoding and high CPU usage", + "OptionHighSpeedTranscoding": "Higher speed", + "OptionHighQualityTranscoding": "Higher quality", + "OptionMaxQualityTranscoding": "Max quality", + "OptionEnableDebugTranscodingLogging": "Enable debug transcoding logging", + "OptionEnableDebugTranscodingLoggingHelp": "This will create very large log files and is only recommended as needed for troubleshooting purposes.", + "EditCollectionItemsHelp": "Add or remove any movies, series, albums, books or games you wish to group within this collection.", + "HeaderAddTitles": "Add Titles", + "LabelEnableDlnaPlayTo": "Enable DLNA Play To", + "LabelEnableDlnaPlayToHelp": "Emby can detect devices within your network and offer the ability to remote control them.", + "LabelEnableDlnaDebugLogging": "Enable DLNA debug logging", + "LabelEnableDlnaDebugLoggingHelp": "This will create large log files and should only be used as needed for troubleshooting purposes.", + "LabelEnableDlnaClientDiscoveryInterval": "Client discovery interval (seconds)", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determines the duration in seconds between SSDP searches performed by Emby.", + "HeaderCustomDlnaProfiles": "Custom Profiles", + "HeaderSystemDlnaProfiles": "System Profiles", + "CustomDlnaProfilesHelp": "Create a custom profile to target a new device or override a system profile.", + "SystemDlnaProfilesHelp": "System profiles are read-only. Changes to a system profile will be saved to a new custom profile.", + "TitleDashboard": "Dashboard", + "TabHome": "Home", + "TabInfo": "Info", + "HeaderLinks": "Links", + "HeaderSystemPaths": "System Paths", + "LinkCommunity": "Community", + "LinkGithub": "Github", + "LinkApi": "Api", + "LinkApiDocumentation": "Api Documentation", + "LabelFriendlyServerName": "Friendly server name:", + "LabelFriendlyServerNameHelp": "This name will be used to identify this server. If left blank, the computer name will be used.", + "LabelPreferredDisplayLanguage": "Preferred display language:", + "LabelPreferredDisplayLanguageHelp": "Translating Emby is an ongoing project and is not yet complete.", + "LabelReadHowYouCanContribute": "Read about how you can contribute.", + "HeaderNewCollection": "New Collection", + "ButtonSubmit": "Submit", + "ButtonCreate": "Create", + "LabelCustomCss": "Custom css:", + "LabelCustomCssHelp": "Apply your own custom css to the web interface.", + "LabelLocalHttpServerPortNumber": "Local http port number:", + "LabelLocalHttpServerPortNumberHelp": "The tcp port number that Emby's http server should bind to.", + "LabelPublicHttpPort": "Public http port number:", + "LabelPublicHttpPortHelp": "The public port number that should be mapped to the local http port.", + "LabelPublicHttpsPort": "Public https port number:", + "LabelPublicHttpsPortHelp": "The public port number that should be mapped to the local https port.", + "LabelEnableHttps": "Report https as external address", + "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", + "LabelHttpsPort": "Local https port number:", + "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", + "LabelWebSocketPortNumber": "Web socket port number:", + "LabelEnableAutomaticPortMap": "Enable automatic port mapping", + "LabelEnableAutomaticPortMapHelp": "Attempt to automatically map the public port to the local port via UPnP. This may not work with some router models.", + "LabelExternalDDNS": "External WAN Address:", + "LabelExternalDDNSHelp": "If you have a dynamic DNS enter it here. Emby apps will use it when connecting remotely. Leave empty for automatic detection.", + "TabResume": "Resume", + "TabWeather": "Weather", + "TitleAppSettings": "App Settings", + "LabelMinResumePercentage": "Min resume percentage:", + "LabelMaxResumePercentage": "Max resume percentage:", + "LabelMinResumeDuration": "Min resume duration (seconds):", + "LabelMinResumePercentageHelp": "Titles are assumed unplayed if stopped before this time", + "LabelMaxResumePercentageHelp": "Titles are assumed fully played if stopped after this time", + "LabelMinResumeDurationHelp": "Titles shorter than this will not be resumable", + "TitleAutoOrganize": "Auto-Organize", + "TabActivityLog": "Activity Log", + "HeaderName": "Name", + "HeaderDate": "Date", + "HeaderSource": "Source", + "HeaderDestination": "Destination", + "HeaderProgram": "Program", + "HeaderClients": "Clients", + "LabelCompleted": "Completed", + "LabelFailed": "Failed", + "LabelSkipped": "Skipped", + "HeaderEpisodeOrganization": "Episode Organization", + "LabelSeries": "Series:", + "LabelEndingEpisodeNumber": "Ending episode number:", + "LabelEndingEpisodeNumberHelp": "Only required for multi-episode files", + "HeaderSupportTheTeam": "Support the Emby Team", + "LabelSupportAmount": "Amount (USD)", + "HeaderSupportTheTeamHelp": "Help ensure the continued development of this project by donating. A portion of all donations will be contributed to other free tools we depend on.", + "ButtonEnterSupporterKey": "Enter supporter key", + "DonationNextStep": "Once complete, please return and enter your supporter key, which you will receive by email.", + "AutoOrganizeHelp": "Auto-organize monitors your download folders for new files and moves them to your media directories.", + "AutoOrganizeTvHelp": "TV file organizing will only add episodes to existing series. It will not create new series folders.", + "OptionEnableEpisodeOrganization": "Enable new episode organization", + "LabelWatchFolder": "Watch folder:", + "LabelWatchFolderHelp": "The server will poll this folder during the 'Organize new media files' scheduled task.", + "ButtonViewScheduledTasks": "View scheduled tasks", + "LabelMinFileSizeForOrganize": "Minimum file size (MB):", + "LabelMinFileSizeForOrganizeHelp": "Files under this size will be ignored.", + "LabelSeasonFolderPattern": "Season folder pattern:", + "LabelSeasonZeroFolderName": "Season zero folder name:", + "HeaderEpisodeFilePattern": "Episode file pattern", + "LabelEpisodePattern": "Episode pattern:", + "LabelMultiEpisodePattern": "Multi-Episode pattern:", + "HeaderSupportedPatterns": "Supported Patterns", + "HeaderTerm": "Term", + "HeaderPattern": "Pattern", + "HeaderResult": "Result", + "LabelDeleteEmptyFolders": "Delete empty folders after organizing", + "LabelDeleteEmptyFoldersHelp": "Enable this to keep the download directory clean.", + "LabelDeleteLeftOverFiles": "Delete left over files with the following extensions:", + "LabelDeleteLeftOverFilesHelp": "Separate with ;. For example: .nfo;.txt", + "OptionOverwriteExistingEpisodes": "Overwrite existing episodes", + "LabelTransferMethod": "Transfer method", + "OptionCopy": "Copy", + "OptionMove": "Move", + "LabelTransferMethodHelp": "Copy or move files from the watch folder", + "HeaderLatestNews": "Latest News", + "HeaderHelpImproveProject": "Help Improve Emby", + "HeaderRunningTasks": "Running Tasks", + "HeaderActiveDevices": "Active Devices", + "HeaderPendingInstallations": "Pending Installations", + "HeaderServerInformation": "Server Information", + "ButtonRestartNow": "Restart Now", + "ButtonRestart": "Restart", + "ButtonShutdown": "Shutdown", + "ButtonUpdateNow": "Update Now", + "TabHosting": "Hosting", + "PleaseUpdateManually": "Please shutdown the server and update manually.", + "NewServerVersionAvailable": "A new version of Emby Server is available!", + "ServerUpToDate": "Emby Server is up to date", + "LabelComponentsUpdated": "The following components have been installed or updated:", + "MessagePleaseRestartServerToFinishUpdating": "Please restart the server to finish applying updates.", + "LabelDownMixAudioScale": "Audio boost when downmixing:", + "LabelDownMixAudioScaleHelp": "Boost audio when downmixing. Set to 1 to preserve original volume value.", + "ButtonLinkKeys": "Transfer Key", + "LabelOldSupporterKey": "Old supporter key", + "LabelNewSupporterKey": "New supporter key", + "HeaderMultipleKeyLinking": "Transfer to New Key", + "MultipleKeyLinkingHelp": "If you received a new supporter key, use this form to transfer the old key's registrations to your new one.", + "LabelCurrentEmailAddress": "Current email address", + "LabelCurrentEmailAddressHelp": "The current email address to which your new key was sent.", + "HeaderForgotKey": "Forgot Key", + "LabelEmailAddress": "Email address", + "LabelSupporterEmailAddress": "The email address that was used to purchase the key.", + "ButtonRetrieveKey": "Retrieve Key", + "LabelSupporterKey": "Supporter Key (paste from email)", + "LabelSupporterKeyHelp": "Enter your supporter key to start enjoying additional benefits the community has developed for Emby.", + "MessageInvalidKey": "Supporter key is missing or invalid.", + "ErrorMessageInvalidKey": "In order for any premium content to be registered, you must also be an Emby Supporter. Please donate and support the continued development of the core product. Thank you.", + "HeaderDisplaySettings": "Display Settings", + "TabPlayTo": "Play To", + "LabelEnableDlnaServer": "Enable Dlna server", + "LabelEnableDlnaServerHelp": "Allows UPnP devices on your network to browse and play Emby content.", + "LabelEnableBlastAliveMessages": "Blast alive messages", + "LabelEnableBlastAliveMessagesHelp": "Enable this if the server is not detected reliably by other UPnP devices on your network.", + "LabelBlastMessageInterval": "Alive message interval (seconds)", + "LabelBlastMessageIntervalHelp": "Determines the duration in seconds between server alive messages.", + "LabelDefaultUser": "Default user:", + "LabelDefaultUserHelp": "Determines which user library should be displayed on connected devices. This can be overridden for each device using profiles.", + "TitleDlna": "DLNA", + "TitleChannels": "Channels", + "HeaderServerSettings": "Server Settings", + "LabelWeatherDisplayLocation": "Weather display location:", + "LabelWeatherDisplayLocationHelp": "US zip code \/ City, State, Country \/ City, Country", + "LabelWeatherDisplayUnit": "Weather display unit:", + "OptionCelsius": "Cent\u00edgrado", + "OptionFahrenheit": "Fahrenheit", + "HeaderRequireManualLogin": "Require manual username entry for:", + "HeaderRequireManualLoginHelp": "When disabled clients may present a login screen with a visual selection of users.", + "OptionOtherApps": "Other apps", + "OptionMobileApps": "Mobile apps", + "HeaderNotificationList": "Click on a notification to configure it's sending options.", + "NotificationOptionApplicationUpdateAvailable": "Application update available", + "NotificationOptionApplicationUpdateInstalled": "Application update installed", + "NotificationOptionPluginUpdateInstalled": "Plugin update installed", + "NotificationOptionPluginInstalled": "Plugin installed", + "NotificationOptionPluginUninstalled": "Plugin uninstalled", + "NotificationOptionVideoPlayback": "Video playback started", + "NotificationOptionAudioPlayback": "Audio playback started", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionVideoPlaybackStopped": "Video playback stopped", + "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionTaskFailed": "Scheduled task failure", + "NotificationOptionInstallationFailed": "Installation failure", + "NotificationOptionNewLibraryContent": "New content added", + "NotificationOptionNewLibraryContentMultiple": "New content added (multiple)", + "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionUserLockedOut": "User locked out", + "HeaderSendNotificationHelp": "By default, notifications are delivered to your dashboard inbox. Browse the plugin catalog to install additional notification options.", + "NotificationOptionServerRestartRequired": "Server restart required", + "LabelNotificationEnabled": "Enable this notification", + "LabelMonitorUsers": "Monitor activity from:", + "LabelSendNotificationToUsers": "Send the notification to:", + "LabelUseNotificationServices": "Use the following services:", + "CategoryUser": "User", + "CategorySystem": "System", + "CategoryApplication": "Application", + "CategoryPlugin": "Plugin", + "LabelMessageTitle": "Message title:", + "LabelAvailableTokens": "Available tokens:", + "AdditionalNotificationServices": "Browse the plugin catalog to install additional notification services.", + "OptionAllUsers": "All users", + "OptionAdminUsers": "Administrators", + "OptionCustomUsers": "Custom", + "ButtonArrowUp": "Up", + "ButtonArrowDown": "Down", + "ButtonArrowLeft": "Left", + "ButtonArrowRight": "Right", + "ButtonBack": "Back", + "ButtonInfo": "Info", + "ButtonOsd": "On screen display", + "ButtonPageUp": "Page Up", + "ButtonPageDown": "Page Down", + "PageAbbreviation": "PG", + "ButtonHome": "Home", + "ButtonSearch": "Search", + "ButtonSettings": "Settings", + "ButtonTakeScreenshot": "Capture Screenshot", + "ButtonLetterUp": "Letter Up", + "ButtonLetterDown": "Letter Down", + "PageButtonAbbreviation": "PG", + "LetterButtonAbbreviation": "A", + "TabNowPlaying": "Now Playing", + "TabNavigation": "Navigation", + "TabControls": "Controls", + "ButtonFullscreen": "Toggle fullscreen", + "ButtonScenes": "Scenes", + "ButtonSubtitles": "Subtitles", + "ButtonAudioTracks": "Audio tracks", + "ButtonPreviousTrack": "Previous track", + "ButtonNextTrack": "Next track", + "ButtonStop": "Stop", + "ButtonPause": "Pause", + "ButtonNext": "Next", + "ButtonPrevious": "Previous", + "LabelGroupMoviesIntoCollections": "Group movies into collections", + "LabelGroupMoviesIntoCollectionsHelp": "When displaying movie lists, movies belonging to a collection will be displayed as one grouped item.", + "NotificationOptionPluginError": "Plugin failure", + "ButtonVolumeUp": "Volume up", + "ButtonVolumeDown": "Volume down", + "ButtonMute": "Mute", + "HeaderLatestMedia": "Latest Media", + "OptionSpecialFeatures": "Special Features", + "HeaderCollections": "Collections", + "LabelProfileCodecsHelp": "Separated by comma. This can be left empty to apply to all codecs.", + "LabelProfileContainersHelp": "Separated by comma. This can be left empty to apply to all containers.", + "HeaderResponseProfile": "Response Profile", + "LabelType": "Type:", + "LabelPersonRole": "Role:", + "LabelPersonRoleHelp": "Role is generally only applicable to actors.", + "LabelProfileContainer": "Container:", + "LabelProfileVideoCodecs": "Video codecs:", + "LabelProfileAudioCodecs": "Audio codecs:", + "LabelProfileCodecs": "Codecs:", + "HeaderDirectPlayProfile": "Direct Play Profile", + "HeaderTranscodingProfile": "Transcoding Profile", + "HeaderCodecProfile": "Codec Profile", + "HeaderCodecProfileHelp": "Codec profiles indicate the limitations of a device when playing specific codecs. If a limitation applies then the media will be transcoded, even if the codec is configured for direct play.", + "HeaderContainerProfile": "Container Profile", + "HeaderContainerProfileHelp": "Container profiles indicate the limitations of a device when playing specific formats. If a limitation applies then the media will be transcoded, even if the format is configured for direct play.", + "OptionProfileVideo": "Video", + "OptionProfileAudio": "Audio", + "OptionProfileVideoAudio": "Video Audio", + "OptionProfilePhoto": "Photo", + "LabelUserLibrary": "User library:", + "LabelUserLibraryHelp": "Select which user library to display to the device. Leave empty to inherit the default setting.", + "OptionPlainStorageFolders": "Display all folders as plain storage folders", + "OptionPlainStorageFoldersHelp": "If enabled, all folders are represented in DIDL as \"object.container.storageFolder\" instead of a more specific type, such as \"object.container.person.musicArtist\".", + "OptionPlainVideoItems": "Display all videos as plain video items", + "OptionPlainVideoItemsHelp": "If enabled, all videos are represented in DIDL as \"object.item.videoItem\" instead of a more specific type, such as \"object.item.videoItem.movie\".", + "LabelSupportedMediaTypes": "Supported Media Types:", + "TabIdentification": "Identification", + "HeaderIdentification": "Identification", + "TabDirectPlay": "Direct Play", + "TabContainers": "Containers", + "TabCodecs": "Codecs", + "TabResponses": "Responses", + "HeaderProfileInformation": "Profile Information", + "LabelEmbedAlbumArtDidl": "Embed album art in Didl", + "LabelEmbedAlbumArtDidlHelp": "Some devices prefer this method for obtaining album art. Others may fail to play with this option enabled.", + "LabelAlbumArtPN": "Album art PN:", + "LabelAlbumArtHelp": "PN used for album art, within the dlna:profileID attribute on upnp:albumArtURI. Some clients require a specific value, regardless of the size of the image.", + "LabelAlbumArtMaxWidth": "Album art max width:", + "LabelAlbumArtMaxWidthHelp": "Max resolution of album art exposed via upnp:albumArtURI.", + "LabelAlbumArtMaxHeight": "Album art max height:", + "LabelAlbumArtMaxHeightHelp": "Max resolution of album art exposed via upnp:albumArtURI.", + "LabelIconMaxWidth": "Icon max width:", + "LabelIconMaxWidthHelp": "Max resolution of icons exposed via upnp:icon.", + "LabelIconMaxHeight": "Icon max height:", + "LabelIconMaxHeightHelp": "Max resolution of icons exposed via upnp:icon.", + "LabelIdentificationFieldHelp": "A case-insensitive substring or regex expression.", + "HeaderProfileServerSettingsHelp": "These values control how Emby Server will present itself to the device.", + "LabelMaxBitrate": "Max bitrate:", + "LabelMaxBitrateHelp": "Specify a max bitrate in bandwidth constrained environments, or if the device imposes it's own limit.", + "LabelMaxStreamingBitrate": "Max streaming bitrate:", + "LabelMaxStreamingBitrateHelp": "Specify a max bitrate when streaming.", + "LabelMaxChromecastBitrate": "Max Chromecast bitrate:", + "LabelMaxStaticBitrate": "Max sync bitrate:", + "LabelMaxStaticBitrateHelp": "Specify a max bitrate when syncing content at high quality.", + "LabelMusicStaticBitrate": "Music sync bitrate:", + "LabelMusicStaticBitrateHelp": "Specify a max bitrate when syncing music", + "LabelMusicStreamingTranscodingBitrate": "Music transcoding bitrate:", + "LabelMusicStreamingTranscodingBitrateHelp": "Specify a max bitrate when streaming music", + "OptionIgnoreTranscodeByteRangeRequests": "Ignore transcode byte range requests", + "OptionIgnoreTranscodeByteRangeRequestsHelp": "If enabled, these requests will be honored but will ignore the byte range header.", + "LabelFriendlyName": "Friendly name", + "LabelManufacturer": "Manufacturer", + "LabelManufacturerUrl": "Manufacturer url", + "LabelModelName": "Model name", + "LabelModelNumber": "Model number", + "LabelModelDescription": "Model description", + "LabelModelUrl": "Model url", + "LabelSerialNumber": "Serial number", + "LabelDeviceDescription": "Device description", + "HeaderIdentificationCriteriaHelp": "Enter at least one identification criteria.", + "HeaderDirectPlayProfileHelp": "Add direct play profiles to indicate which formats the device can handle natively.", + "HeaderTranscodingProfileHelp": "Add transcoding profiles to indicate which formats should be used when transcoding is required.", + "HeaderResponseProfileHelp": "Response profiles provide a way to customize information sent to the device when playing certain kinds of media.", + "LabelXDlnaCap": "X-Dlna cap:", + "LabelXDlnaCapHelp": "Determines the content of the X_DLNACAP element in the urn:schemas-dlna-org:device-1-0 namespace.", + "LabelXDlnaDoc": "X-Dlna doc:", + "LabelXDlnaDocHelp": "Determines the content of the X_DLNADOC element in the urn:schemas-dlna-org:device-1-0 namespace.", + "LabelSonyAggregationFlags": "Sony aggregation flags:", + "LabelSonyAggregationFlagsHelp": "Determines the content of the aggregationFlags element in the urn:schemas-sonycom:av namespace.", + "LabelTranscodingContainer": "Container:", + "LabelTranscodingVideoCodec": "Video codec:", + "LabelTranscodingVideoProfile": "Video profile:", + "LabelTranscodingAudioCodec": "Audio codec:", + "OptionEnableM2tsMode": "Enable M2ts mode", + "OptionEnableM2tsModeHelp": "Enable m2ts mode when encoding to mpegts.", + "OptionEstimateContentLength": "Estimate content length when transcoding", + "OptionReportByteRangeSeekingWhenTranscoding": "Report that the server supports byte seeking when transcoding", + "OptionReportByteRangeSeekingWhenTranscodingHelp": "This is required for some devices that don't time seek very well.", + "HeaderSubtitleDownloadingHelp": "When Emby scans your video files it can search for missing subtitles, and download them using a subtitle provider such as OpenSubtitles.org.", + "HeaderDownloadSubtitlesFor": "Download subtitles for:", + "MessageNoChapterProviders": "Install a chapter provider plugin such as ChapterDb to enable additional chapter options.", + "LabelSkipIfGraphicalSubsPresent": "Skip if the video already contains graphical subtitles", + "LabelSkipIfGraphicalSubsPresentHelp": "Keeping text versions of subtitles will result in more efficient delivery and decrease the likelihood of video transcoding.", + "TabSubtitles": "Subtitles", + "TabChapters": "Chapters", + "HeaderDownloadChaptersFor": "Download chapter names for:", + "LabelOpenSubtitlesUsername": "Open Subtitles username:", + "LabelOpenSubtitlesPassword": "Open Subtitles password:", + "HeaderChapterDownloadingHelp": "When Emby scans your video files it can download friendly chapter names from the internet using chapter plugins such as ChapterDb.", + "LabelPlayDefaultAudioTrack": "Play default audio track regardless of language", + "LabelSubtitlePlaybackMode": "Subtitle mode:", + "LabelDownloadLanguages": "Download languages:", + "ButtonRegister": "Register", + "LabelSkipIfAudioTrackPresent": "Skip if the default audio track matches the download language", + "LabelSkipIfAudioTrackPresentHelp": "Uncheck this to ensure all videos have subtitles, regardless of audio language.", + "HeaderSendMessage": "Send Message", + "ButtonSend": "Send", + "LabelMessageText": "Message text:", + "MessageNoAvailablePlugins": "No available plugins.", + "LabelDisplayPluginsFor": "Display plugins for:", + "PluginTabAppClassic": "Emby Classic", + "PluginTabAppTheater": "Emby Theater", + "LabelEpisodeNamePlain": "Episode name", + "LabelSeriesNamePlain": "Series name", + "ValueSeriesNamePeriod": "Series.name", + "ValueSeriesNameUnderscore": "Series_name", + "ValueEpisodeNamePeriod": "Episode.name", + "ValueEpisodeNameUnderscore": "Episode_name", + "LabelSeasonNumberPlain": "Season number", + "LabelEpisodeNumberPlain": "Episode number", + "LabelEndingEpisodeNumberPlain": "Ending episode number", + "HeaderTypeText": "Enter Text", + "LabelTypeText": "Text", + "HeaderSearchForSubtitles": "Search for Subtitles", + "ButtonMore": "More", + "MessageNoSubtitleSearchResultsFound": "No search results founds.", + "TabDisplay": "Display", + "TabLanguages": "Languages", + "TabAppSettings": "App Settings", + "LabelEnableThemeSongs": "Enable theme songs", + "LabelEnableBackdrops": "Enable backdrops", + "LabelEnableThemeSongsHelp": "If enabled, theme songs will be played in the background while browsing the library.", + "LabelEnableBackdropsHelp": "If enabled, backdrops will be displayed in the background of some pages while browsing the library.", + "HeaderHomePage": "Home Page", + "HeaderSettingsForThisDevice": "Settings for This Device", + "OptionAuto": "Auto", + "OptionYes": "Yes", + "OptionNo": "No", + "HeaderOptions": "Options", + "HeaderIdentificationResult": "Identification Result", + "LabelHomePageSection1": "Home page section 1:", + "LabelHomePageSection2": "Home page section 2:", + "LabelHomePageSection3": "Home page section 3:", + "LabelHomePageSection4": "Home page section 4:", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", + "OptionResumablemedia": "Resume", + "OptionLatestMedia": "Latest media", + "OptionLatestChannelMedia": "Latest channel items", + "HeaderLatestChannelItems": "Latest Channel Items", + "OptionNone": "None", + "HeaderLiveTv": "Live TV", + "HeaderReports": "Reports", + "HeaderMetadataManager": "Metadata Manager", + "HeaderSettings": "Settings", + "MessageLoadingChannels": "Loading channel content...", + "MessageLoadingContent": "Loading content...", + "ButtonMarkRead": "Mark Read", + "OptionDefaultSort": "Default", + "OptionCommunityMostWatchedSort": "Most Watched", + "TabNextUp": "Next Up", + "PlaceholderUsername": "Username", + "HeaderBecomeProjectSupporter": "Become an Emby Supporter", + "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", + "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", + "MessageNoPlaylistsAvailable": "Playlists allow you to create lists of content to play consecutively at a time. To add items to playlists, right click or tap and hold, then select Add to Playlist.", + "MessageNoPlaylistItemsAvailable": "This playlist is currently empty.", + "ButtonDismiss": "Dismiss", + "ButtonEditOtherUserPreferences": "Edit this user's profile, image and personal preferences.", + "LabelChannelStreamQuality": "Preferred internet stream quality:", + "LabelChannelStreamQualityHelp": "In a low bandwidth environment, limiting quality can help ensure a smooth streaming experience.", + "OptionBestAvailableStreamQuality": "Best available", + "LabelEnableChannelContentDownloadingFor": "Enable channel content downloading for:", + "LabelEnableChannelContentDownloadingForHelp": "Some channels support downloading content prior to viewing. Enable this in low bandwidth enviornments to download channel content during off hours. Content is downloaded as part of the channel download scheduled task.", + "LabelChannelDownloadPath": "Channel content download path:", + "LabelChannelDownloadPathHelp": "Specify a custom download path if desired. Leave empty to download to an internal program data folder.", + "LabelChannelDownloadAge": "Delete content after: (days)", + "LabelChannelDownloadAgeHelp": "Downloaded content older than this will be deleted. It will remain playable via internet streaming.", + "ChannelSettingsFormHelp": "Install channels such as Trailers and Vimeo in the plugin catalog.", + "ButtonOptions": "Options", + "ViewTypePlaylists": "Playlists", + "ViewTypeMovies": "Movies", + "ViewTypeTvShows": "TV", + "ViewTypeGames": "Games", + "ViewTypeMusic": "Music", + "ViewTypeMusicGenres": "Genres", + "ViewTypeMusicArtists": "Artists", + "ViewTypeBoxSets": "Collections", + "ViewTypeChannels": "Channels", + "ViewTypeLiveTV": "Live TV", + "ViewTypeLiveTvNowPlaying": "Now Airing", + "ViewTypeLatestGames": "Latest Games", + "ViewTypeRecentlyPlayedGames": "Recently Played", + "ViewTypeGameFavorites": "Favorites", + "ViewTypeGameSystems": "Game Systems", + "ViewTypeGameGenres": "Genres", + "ViewTypeTvResume": "Resume", + "ViewTypeTvNextUp": "Next Up", + "ViewTypeTvLatest": "Latest", + "ViewTypeTvShowSeries": "Series", + "ViewTypeTvGenres": "Genres", + "ViewTypeTvFavoriteSeries": "Favorite Series", + "ViewTypeTvFavoriteEpisodes": "Favorite Episodes", + "ViewTypeMovieResume": "Resume", + "ViewTypeMovieLatest": "Latest", + "ViewTypeMovieMovies": "Movies", + "ViewTypeMovieCollections": "Collections", + "ViewTypeMovieFavorites": "Favorites", + "ViewTypeMovieGenres": "Genres", + "ViewTypeMusicLatest": "Latest", + "ViewTypeMusicPlaylists": "Playlists", + "ViewTypeMusicAlbums": "Albums", + "ViewTypeMusicAlbumArtists": "Album Artists", + "HeaderOtherDisplaySettings": "Display Settings", + "ViewTypeMusicSongs": "Songs", + "ViewTypeMusicFavorites": "Favorites", + "ViewTypeMusicFavoriteAlbums": "Favorite Albums", + "ViewTypeMusicFavoriteArtists": "Favorite Artists", + "ViewTypeMusicFavoriteSongs": "Favorite Songs", + "HeaderMyViews": "My Views", + "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", + "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", + "OptionDisplayAdultContent": "Display adult content", + "OptionLibraryFolders": "Media folders", + "TitleRemoteControl": "Remote Control", + "OptionLatestTvRecordings": "Latest recordings", + "LabelProtocolInfo": "Protocol info:", + "LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.", + "TabNfo": "Nfo", + "HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Advanced tab to configure options for your media types.", + "LabelKodiMetadataUser": "Sync user watch data to nfo's for:", + "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.", + "LabelKodiMetadataDateFormat": "Release date format:", + "LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.", + "LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files", + "LabelKodiMetadataSaveImagePathsHelp": "This is recommended if you have image file names that don't conform to Kodi guidelines.", + "LabelKodiMetadataEnablePathSubstitution": "Enable path substitution", + "LabelKodiMetadataEnablePathSubstitutionHelp": "Enables path substitution of image paths using the server's path substitution settings.", + "LabelKodiMetadataEnablePathSubstitutionHelp2": "See path substitution.", + "LabelGroupChannelsIntoViews": "Display the following channels directly within my views:", + "LabelGroupChannelsIntoViewsHelp": "If enabled, these channels will be displayed directly alongside other views. If disabled, they'll be displayed within a separate Channels view.", + "LabelDisplayCollectionsView": "Display a collections view to show movie collections", + "LabelDisplayCollectionsViewHelp": "This will create a separate view to display collections that you've created or have access to. To create a collection, right-click or tap-hold any movie and select 'Add to Collection'. ", + "LabelKodiMetadataEnableExtraThumbs": "Copy extrafanart into extrathumbs", + "LabelKodiMetadataEnableExtraThumbsHelp": "When downloading images they can be saved into both extrafanart and extrathumbs for maximum Kodi skin compatibility.", + "TabServices": "Services", + "TabLogs": "Logs", + "HeaderServerLogFiles": "Server log files:", + "TabBranding": "Branding", + "HeaderBrandingHelp": "Customize the appearance of Emby to fit the needs of your group or organization.", + "LabelLoginDisclaimer": "Login disclaimer:", + "LabelLoginDisclaimerHelp": "This will be displayed at the bottom of the login page.", + "LabelAutomaticallyDonate": "Automatically donate this amount every month", + "LabelAutomaticallyDonateHelp": "You can cancel at any time via your PayPal account.", + "OptionList": "List", + "TabDashboard": "Dashboard", + "TitleServer": "Server", + "LabelCache": "Cache:", + "LabelLogs": "Logs:", + "LabelMetadata": "Metadata:", + "LabelImagesByName": "Images by name:", + "LabelTranscodingTemporaryFiles": "Transcoding temporary files:", + "HeaderLatestMusic": "Latest Music", + "HeaderBranding": "Branding", + "HeaderApiKeys": "Api Keys", + "HeaderApiKeysHelp": "External applications are required to have an Api key in order to communicate with Emby Server. Keys are issued by logging in with an Emby account, or by manually granting the application a key.", + "HeaderApiKey": "Api Key", + "HeaderApp": "App", + "HeaderDevice": "Device", + "HeaderUser": "User", + "HeaderDateIssued": "Date Issued", + "LabelChapterName": "Chapter {0}", + "HeaderNewApiKey": "New Api Key", + "LabelAppName": "App name", + "LabelAppNameExample": "Example: Sickbeard, NzbDrone", + "HeaderNewApiKeyHelp": "Grant an application permission to communicate with Emby Server.", + "HeaderHttpHeaders": "Http Headers", + "HeaderIdentificationHeader": "Identification Header", + "LabelValue": "Value:", + "LabelMatchType": "Match type:", + "OptionEquals": "Equals", + "OptionRegex": "Regex", + "OptionSubstring": "Substring", + "TabView": "View", + "TabSort": "Sort", + "TabFilter": "Filter", + "ButtonView": "View", + "LabelPageSize": "Item limit:", + "LabelPath": "Path:", + "LabelView": "View:", + "TabUsers": "Users", + "LabelSortName": "Sort name:", + "LabelDateAdded": "Date added:", + "HeaderFeatures": "Features", + "HeaderAdvanced": "Advanced", + "ButtonSync": "Sync", + "TabScheduledTasks": "Scheduled Tasks", + "HeaderChapters": "Chapters", + "HeaderResumeSettings": "Resume Settings", + "TabSync": "Sync", + "TitleUsers": "Users", + "LabelProtocol": "Protocol:", + "OptionProtocolHttp": "Http", + "OptionProtocolHls": "Http Live Streaming", + "LabelContext": "Context:", + "OptionContextStreaming": "Streaming", + "OptionContextStatic": "Sync", + "ButtonAddToPlaylist": "Add to playlist", + "TabPlaylists": "Playlists", + "ButtonClose": "Close", + "LabelAllLanguages": "All languages", + "HeaderBrowseOnlineImages": "Browse Online Images", + "LabelSource": "Source:", + "OptionAll": "All", + "LabelImage": "Image:", + "ButtonBrowseImages": "Browse Images", + "HeaderImages": "Images", + "HeaderBackdrops": "Backdrops", + "HeaderScreenshots": "Screenshots", + "HeaderAddUpdateImage": "Add\/Update Image", + "LabelJpgPngOnly": "JPG\/PNG only", + "LabelImageType": "Image type:", + "OptionPrimary": "Primary", + "OptionArt": "Art", + "OptionBox": "Box", + "OptionBoxRear": "Box rear", + "OptionDisc": "Disc", + "OptionIcon": "Icon", + "OptionLogo": "Logo", + "OptionMenu": "Menu", + "OptionScreenshot": "Screenshot", + "OptionLocked": "Locked", + "OptionUnidentified": "Unidentified", + "OptionMissingParentalRating": "Missing parental rating", + "OptionStub": "Stub", + "HeaderEpisodes": "Episodes:", + "OptionSeason0": "Season 0", + "LabelReport": "Report:", + "OptionReportSongs": "Songs", + "OptionReportSeries": "Series", + "OptionReportSeasons": "Seasons", + "OptionReportTrailers": "Trailers", + "OptionReportMusicVideos": "Music videos", + "OptionReportMovies": "Movies", + "OptionReportHomeVideos": "Home videos", + "OptionReportGames": "Games", + "OptionReportEpisodes": "Episodes", + "OptionReportCollections": "Collections", + "OptionReportBooks": "Books", + "OptionReportArtists": "Artists", + "OptionReportAlbums": "Albums", + "OptionReportAdultVideos": "Adult videos", + "HeaderActivity": "Activity", + "ScheduledTaskStartedWithName": "{0} started", + "ScheduledTaskCancelledWithName": "{0} was cancelled", + "ScheduledTaskCompletedWithName": "{0} completed", + "ScheduledTaskFailed": "Scheduled task completed", + "PluginInstalledWithName": "{0} was installed", + "PluginUpdatedWithName": "{0} was updated", + "PluginUninstalledWithName": "{0} was uninstalled", + "ScheduledTaskFailedWithName": "{0} failed", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "DeviceOnlineWithName": "{0} is connected", + "UserOnlineFromDevice": "{0} is online from {1}", + "DeviceOfflineWithName": "{0} has disconnected", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", + "LabelRunningTimeValue": "Running time: {0}", + "LabelIpAddressValue": "Ip address: {0}", + "UserLockedOutWithName": "User {0} has been locked out", + "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", + "UserCreatedWithName": "User {0} has been created", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserDeletedWithName": "User {0} has been deleted", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageApplicationUpdated": "Emby Server has been updated", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "UserDownloadingItemWithValues": "{0} is downloading {1}", + "UserStartedPlayingItemWithValues": "{0} has started playing {1}", + "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", + "AppDeviceValues": "App: {0}, Device: {1}", + "ProviderValue": "Provider: {0}", + "LabelChannelDownloadSizeLimit": "Download size limit (GB):", + "LabelChannelDownloadSizeLimitHelpText": "Limit the size of the channel download folder.", + "HeaderRecentActivity": "Recent Activity", + "HeaderPeople": "People", + "HeaderDownloadPeopleMetadataFor": "Download biography and images for:", + "OptionComposers": "Composers", + "OptionOthers": "Others", + "HeaderDownloadPeopleMetadataForHelp": "Enabling additional options will provide more on-screen information but will result in slower library scans.", + "ViewTypeFolders": "Folders", + "LabelDisplayFoldersView": "Display a folders view to show plain media folders", + "ViewTypeLiveTvRecordingGroups": "Recordings", + "ViewTypeLiveTvChannels": "Channels", + "LabelEasyPinCode": "Easy pin code:", + "EasyPasswordHelp": "Your easy pin code is used for offline access with supported Emby apps, and can also be used for easy in-network sign in.", + "LabelInNetworkSignInWithEasyPassword": "Enable in-network sign in with my easy pin code", + "LabelInNetworkSignInWithEasyPasswordHelp": "If enabled, you'll be able to use your easy pin code to sign in to Emby apps from inside your home network. Your regular password will only be needed away from home. If the pin code is left blank, you won't need a password within your home network.", + "HeaderPassword": "Password", + "HeaderLocalAccess": "Local Access", + "HeaderViewOrder": "View Order", + "ButtonResetEasyPassword": "Reset easy pin code", + "LabelSelectUserViewOrder": "Choose the order your views will be displayed in within Emby apps", + "LabelMetadataRefreshMode": "Metadata refresh mode:", + "LabelImageRefreshMode": "Image refresh mode:", + "OptionDownloadMissingImages": "Download missing images", + "OptionReplaceExistingImages": "Replace existing images", + "OptionRefreshAllData": "Refresh all data", + "OptionAddMissingDataOnly": "Add missing data only", + "OptionLocalRefreshOnly": "Local refresh only", + "HeaderRefreshMetadata": "Refresh Metadata", + "HeaderPersonInfo": "Person Info", + "HeaderIdentifyItem": "Identify Item", + "HeaderIdentifyItemHelp": "Enter one or more search criteria. Remove criteria to increase search results.", + "HeaderConfirmDeletion": "Confirm Deletion", + "LabelFollowingFileWillBeDeleted": "The following file will be deleted:", + "LabelIfYouWishToContinueWithDeletion": "If you wish to continue, please confirm by entering the value of:", + "ButtonIdentify": "Identify", + "LabelAlbumArtist": "Album artist:", + "LabelAlbumArtists": "Album artists:", + "LabelAlbum": "Album:", + "LabelCommunityRating": "Community rating:", + "LabelVoteCount": "Vote count:", + "LabelMetascore": "Metascore:", + "LabelCriticRating": "Critic rating:", + "LabelCriticRatingSummary": "Critic rating summary:", + "LabelAwardSummary": "Award summary:", + "LabelWebsite": "Website:", + "LabelTagline": "Tagline:", + "LabelOverview": "Overview:", + "LabelShortOverview": "Short overview:", + "LabelReleaseDate": "Release date:", + "LabelYear": "Year:", + "LabelPlaceOfBirth": "Place of birth:", + "LabelEndDate": "End date:", + "LabelAirDate": "Air days:", + "LabelAirTime:": "Air time:", + "LabelRuntimeMinutes": "Run time (minutes):", + "LabelParentalRating": "Parental rating:", + "LabelCustomRating": "Custom rating:", + "LabelBudget": "Budget", + "LabelRevenue": "Revenue ($):", + "LabelOriginalAspectRatio": "Original aspect ratio:", + "LabelPlayers": "Players:", + "Label3DFormat": "3D format:", + "HeaderAlternateEpisodeNumbers": "Alternate Episode Numbers", + "HeaderSpecialEpisodeInfo": "Special Episode Info", + "HeaderExternalIds": "External Id's:", + "LabelDvdSeasonNumber": "Dvd season number:", + "LabelDvdEpisodeNumber": "Dvd episode number:", + "LabelAbsoluteEpisodeNumber": "Absolute episode number:", + "LabelAirsBeforeSeason": "Airs before season:", + "LabelAirsAfterSeason": "Airs after season:", + "LabelAirsBeforeEpisode": "Airs before episode:", + "LabelTreatImageAs": "Treat image as:", + "LabelDisplayOrder": "Display order:", + "LabelDisplaySpecialsWithinSeasons": "Display specials within seasons they aired in", + "HeaderCountries": "Countries", + "HeaderGenres": "Genres", + "HeaderPlotKeywords": "Plot Keywords", + "HeaderStudios": "Studios", + "HeaderTags": "Tags", + "HeaderMetadataSettings": "Metadata Settings", + "LabelLockItemToPreventChanges": "Lock this item to prevent future changes", + "MessageLeaveEmptyToInherit": "Leave empty to inherit settings from a parent item, or the global default value.", + "TabDonate": "Donate", + "HeaderDonationType": "Donation type:", + "OptionMakeOneTimeDonation": "Make a separate donation", + "OptionOneTimeDescription": "This is an additional donation to the team to show your support. It does not have any additional benefits and will not produce a supporter key.", + "OptionLifeTimeSupporterMembership": "Lifetime supporter membership", + "OptionYearlySupporterMembership": "Yearly supporter membership", + "OptionMonthlySupporterMembership": "Monthly supporter membership", + "OptionNoTrailer": "No Trailer", + "OptionNoThemeSong": "No Theme Song", + "OptionNoThemeVideo": "No Theme Video", + "LabelOneTimeDonationAmount": "Donation amount:", + "ButtonDonate": "Donate", + "ButtonPurchase": "Purchase", + "OptionActor": "Actor", + "OptionComposer": "Composer", + "OptionDirector": "Director", + "OptionGuestStar": "Guest star", + "OptionProducer": "Producer", + "OptionWriter": "Writer", + "LabelAirDays": "Air days:", + "LabelAirTime": "Air time:", + "HeaderMediaInfo": "Media Info", + "HeaderPhotoInfo": "Photo Info", + "HeaderInstall": "Install", + "LabelSelectVersionToInstall": "Select version to install:", + "LinkSupporterMembership": "Learn about the Supporter Membership", + "MessageSupporterPluginRequiresMembership": "This plugin will require an active supporter membership after the 14 day free trial.", + "MessagePremiumPluginRequiresMembership": "This plugin will require an active supporter membership in order to purchase after the 14 day free trial.", + "HeaderReviews": "Reviews", + "HeaderDeveloperInfo": "Developer Info", + "HeaderRevisionHistory": "Revision History", + "ButtonViewWebsite": "View website", + "HeaderXmlSettings": "Xml Settings", + "HeaderXmlDocumentAttributes": "Xml Document Attributes", + "HeaderXmlDocumentAttribute": "Xml Document Attribute", + "XmlDocumentAttributeListHelp": "These attributes are applied to the root element of every xml response.", + "OptionSaveMetadataAsHidden": "Save metadata and images as hidden files", + "LabelExtractChaptersDuringLibraryScan": "Extract chapter images during the library scan", + "LabelExtractChaptersDuringLibraryScanHelp": "If enabled, chapter images will be extracted when videos are imported during the library scan. If disabled they will be extracted during the chapter images scheduled task, allowing the regular library scan to complete faster.", + "LabelConnectGuestUserName": "Their Emby username or email address:", + "LabelConnectUserName": "Emby username\/email:", + "LabelConnectUserNameHelp": "Connect this user to an Emby account to enable easy sign-in access from any Emby app without having to know the server ip address.", + "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", + "LabelExternalPlayers": "External players:", + "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", + "HeaderSubtitleProfile": "Subtitle Profile", + "HeaderSubtitleProfiles": "Subtitle Profiles", + "HeaderSubtitleProfilesHelp": "Subtitle profiles describe the subtitle formats supported by the device.", + "LabelFormat": "Format:", + "LabelMethod": "Method:", + "LabelDidlMode": "Didl mode:", + "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", + "OptionResElement": "res element", + "OptionEmbedSubtitles": "Embed within container", + "OptionExternallyDownloaded": "External download", + "OptionHlsSegmentedSubtitles": "Hls segmented subtitles", + "LabelSubtitleFormatHelp": "Example: srt", + "ButtonLearnMore": "Learn more", + "TabPlayback": "Playback", + "HeaderLanguagePreferences": "Language Preferences", + "TabCinemaMode": "Cinema Mode", + "TitlePlayback": "Playback", + "LabelEnableCinemaModeFor": "Enable cinema mode for:", + "CinemaModeConfigurationHelp": "Cinema mode brings the theater experience straight to your living room with the ability to play trailers and custom intros before the main feature.", + "OptionTrailersFromMyMovies": "Include trailers from movies in my library", + "OptionUpcomingMoviesInTheaters": "Include trailers from new and upcoming movies", + "LabelLimitIntrosToUnwatchedContent": "Only use trailers from unwatched content", + "LabelEnableIntroParentalControl": "Enable smart parental control", + "LabelEnableIntroParentalControlHelp": "Trailers will only be selected with a parental rating equal to or less than the content being watched.", + "LabelTheseFeaturesRequireSupporterHelpAndTrailers": "These features require an active supporter membership and installation of the Trailer channel plugin.", + "OptionTrailersFromMyMoviesHelp": "Requires setup of local trailers.", + "LabelCustomIntrosPath": "Custom intros path:", + "LabelCustomIntrosPathHelp": "A folder containing video files. A video will be randomly selected and played after trailers.", + "ValueSpecialEpisodeName": "Special - {0}", + "LabelSelectInternetTrailersForCinemaMode": "Internet trailers:", + "OptionUpcomingDvdMovies": "Include trailers from new and upcoming movies on Dvd & Blu-ray", + "OptionUpcomingStreamingMovies": "Include trailers from new and upcoming movies on Netflix", + "LabelDisplayTrailersWithinMovieSuggestions": "Display trailers within movie suggestions", + "LabelDisplayTrailersWithinMovieSuggestionsHelp": "Requires installation of the Trailer channel.", + "CinemaModeConfigurationHelp2": "Individual users will have the ability to disable cinema mode within their own preferences.", + "LabelEnableCinemaMode": "Enable cinema mode", + "HeaderCinemaMode": "Cinema Mode", + "LabelDateAddedBehavior": "Date added behavior for new content:", + "OptionDateAddedImportTime": "Use date scanned into the library", + "OptionDateAddedFileTime": "Use file creation date", + "LabelDateAddedBehaviorHelp": "If a metadata value is present it will always be used before either of these options.", + "LabelNumberTrailerToPlay": "Number of trailers to play:", + "TitleDevices": "Devices", + "TabCameraUpload": "Camera Upload", + "TabDevices": "Devices", + "HeaderCameraUploadHelp": "Automatically upload photos and videos taken from your mobile devices into Emby.", + "MessageNoDevicesSupportCameraUpload": "You currently don't have any devices that support camera upload.", + "LabelCameraUploadPath": "Camera upload path:", + "LabelCameraUploadPathHelp": "Select a custom upload path, if desired. If unspecified a default folder will be used. If using a custom path it will also need to be added in the library setup area.", + "LabelCreateCameraUploadSubfolder": "Create a subfolder for each device", + "LabelCreateCameraUploadSubfolderHelp": "Specific folders can be assigned to a device by clicking on it from the Devices page.", + "LabelCustomDeviceDisplayName": "Display name:", + "LabelCustomDeviceDisplayNameHelp": "Supply a custom display name or leave empty to use the name reported by the device.", + "HeaderInviteUser": "Invite User", + "LabelConnectGuestUserNameHelp": "This is the username that your friend uses to sign in to the Emby website, or their email address.", + "HeaderInviteUserHelp": "Sharing your media with friends is easier than ever before with Emby Connect.", + "ButtonSendInvitation": "Send Invitation", + "HeaderSignInWithConnect": "Sign in with Emby Connect", + "HeaderGuests": "Guests", + "HeaderLocalUsers": "Local Users", + "HeaderPendingInvitations": "Pending Invitations", + "TabParentalControl": "Parental Control", + "HeaderAccessSchedule": "Access Schedule", + "HeaderAccessScheduleHelp": "Create an access schedule to limit access to certain hours.", + "ButtonAddSchedule": "Add Schedule", + "LabelAccessDay": "Day of week:", + "LabelAccessStart": "Start time:", + "LabelAccessEnd": "End time:", + "HeaderSchedule": "Schedule", + "OptionEveryday": "Every day", + "OptionWeekdays": "Weekdays", + "OptionWeekends": "Weekends", + "MessageProfileInfoSynced": "User profile information synced with Emby Connect.", + "HeaderOptionalLinkEmbyAccount": "Optional: Link your Emby account", + "ButtonTrailerReel": "Trailer reel", + "HeaderTrailerReel": "Trailer Reel", + "OptionPlayUnwatchedTrailersOnly": "Play only unwatched trailers", + "HeaderTrailerReelHelp": "Start a trailer reel to play a long running playlist of trailers.", + "MessageNoTrailersFound": "No trailers found. Install the Trailer channel to enhance your movie experience by adding a library of internet trailers.", + "HeaderNewUsers": "New Users", + "ButtonSignUp": "Sign up", + "ButtonForgotPassword": "Forgot password", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to accept it below or by clicking the link in the email.", + "TitleNewUser": "New User", + "ButtonConfigurePassword": "Configure Password", + "HeaderDashboardUserPassword": "User passwords are managed within each user's personal profile settings.", + "HeaderLibraryAccess": "Library Access", + "HeaderChannelAccess": "Channel Access", + "HeaderLatestItems": "Latest Items", + "LabelSelectLastestItemsFolders": "Include media from the following sections in Latest Items", + "HeaderShareMediaFolders": "Share Media Folders", + "MessageGuestSharingPermissionsHelp": "Most features are initially unavailable to guests but can be enabled as needed.", + "HeaderInvitations": "Invitations", + "LabelForgotPasswordUsernameHelp": "Enter your username, if you remember it.", + "HeaderForgotPassword": "Forgot Password", + "TitleForgotPassword": "Forgot Password", + "TitlePasswordReset": "Password Reset", + "LabelPasswordRecoveryPinCode": "Pin code:", + "HeaderPasswordReset": "Password Reset", + "HeaderParentalRatings": "Parental Ratings", + "HeaderVideoTypes": "Video Types", + "HeaderYears": "Years", + "HeaderAddTag": "Add Tag", + "LabelBlockContentWithTags": "Block content with tags:", + "LabelTag": "Tag:", + "LabelEnableSingleImageInDidlLimit": "Limit to single embedded image", + "LabelEnableSingleImageInDidlLimitHelp": "Some devices will not render properly if multiple images are embedded within Didl.", + "TabActivity": "Activity", + "TitleSync": "Sync", + "OptionAllowSyncContent": "Allow Sync", + "OptionAllowContentDownloading": "Allow media downloading", + "NameSeasonUnknown": "Season Unknown", + "NameSeasonNumber": "Season {0}", + "LabelNewUserNameHelp": "Usernames can contain letters (a-z), numbers (0-9), dashes (-), underscores (_), apostrophes ('), and periods (.)", + "TabJobs": "Jobs", + "TabSyncJobs": "Sync Jobs", + "LabelTagFilterMode": "Mode:", + "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", + "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "More", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "OptionEnableTranscodingThrottle": "Enable throttling", + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable enhanced presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", + "TabPhotos": "Photos", + "TabVideos": "Videos", + "HeaderWelcomeToEmby": "Welcome to Emby", + "EmbyIntroMessage": "With Emby you can easily stream videos, music and photos to smart phones, tablets and other devices from your Emby Server.", + "ButtonSkip": "Skip", + "TextConnectToServerManually": "Connect to server manually", + "ButtonSignInWithConnect": "Sign in with Emby Connect", + "ButtonConnect": "Connect", + "LabelServerHost": "Host:", + "LabelServerHostHelp": "192.168.1.100 or https:\/\/myserver.com", + "LabelServerPort": "Port:", + "HeaderNewServer": "New Server", + "ButtonChangeServer": "Change Server", + "HeaderConnectToServer": "Connect to Server", + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "HeaderExport": "Export", + "HeaderColumns": "Columns", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" +}
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/es_MX.json b/MediaBrowser.Server.Implementations/Localization/Server/es-MX.json index 0fa0c9123..74e127e6a 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/es_MX.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/es-MX.json @@ -1,5 +1,376 @@ { - "TabWebClient": "Cliente Web", + "LabelExit": "Salir", + "LabelVisitCommunity": "Visitar la Comunidad", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Est\u00e1ndar", + "LabelApiDocumentation": "Documentaci\u00f3n del API", + "LabelDeveloperResources": "Recursos para Desarrolladores", + "LabelBrowseLibrary": "Explorar Biblioteca", + "LabelConfigureServer": "Configurar Emby", + "LabelOpenLibraryViewer": "Abrir el Visor de la Biblioteca", + "LabelRestartServer": "Reiniciar el Servidor", + "LabelShowLogWindow": "Mostrar Ventana de Bit\u00e1cora", + "LabelPrevious": "Anterior", + "LabelFinish": "Terminar", + "FolderTypeMixed": "Mixed content", + "LabelNext": "Siguiente", + "LabelYoureDone": "Ha Terminado!", + "WelcomeToProject": "Bienvenido a Emby!", + "ThisWizardWillGuideYou": "Este asistente le guiar\u00e1 a trav\u00e9s del proceso de instalaci\u00f3n. Para comenzar, por favor seleccione su lenguaje preferido.", + "TellUsAboutYourself": "D\u00edganos sobre usted", + "ButtonQuickStartGuide": "Gu\u00eda de inicio r\u00e1pido", + "LabelYourFirstName": "Su nombre:", + "MoreUsersCanBeAddedLater": "Se pueden agregar m\u00e1s usuarios posteriormente en el Panel de Control.", + "UserProfilesIntro": "Emby incluye soporte integrado para perfiles de usuario, habilitando a cada usuario para tener sus propias configuraciones de visualizaci\u00f3n, reproducci\u00f3n y controles parentales.", + "LabelWindowsService": "Servicio de Windows", + "AWindowsServiceHasBeenInstalled": "Se ha instalado un Servicio de Windows.", + "WindowsServiceIntro1": "El Servidor Emby normalmente se ejecuta como una aplicaci\u00f3n de escritorio con un icono de bandeja, pero si prefiere ejecutarlo como un servicio de fondo, puede en su lugar ser iniciado en los servicios desde el panel de control de windows.", + "WindowsServiceIntro2": "Si utiliza el servicio de Windows, tenga en cuenta que no se puede ejecutar simult\u00e1neamiente con el icono en el \u00e1rea de notificaci\u00f3n, por lo que tendr\u00e1 que finalizar desde el icono para poder ejecutar el servicio. Adicionalmente, el servicio deber\u00e1 ser configurado con privilegios administrativos a trav\u00e9s del panel de control del servicio. Tenga en cuenta que en este momento el servicio no es capaz de actualizarse a s\u00ed mismo, por lo que las nuevas versiones requerir\u00e1n de interacci\u00f3n manual.", + "WizardCompleted": "Eso es todo lo que necesitamos por ahora, Emby ha comenzado a recolectar informaci\u00f3n sobre su biblioteca de medios. Revise algunas de nuestras aplicaciones, y haga clic en <b>Finalizar<\/b> para ver el <b>Panel de Control<\/b>", + "LabelConfigureSettings": "Configuraci\u00f3n de opciones", + "LabelEnableVideoImageExtraction": "Habilitar extracci\u00f3n de im\u00e1genes de video", + "VideoImageExtractionHelp": "Para videos que no cuenten con im\u00e1genes, y para los que no podemos encontrar im\u00e1genes en Internet. Esto incrementar\u00e1 un poco el tiempo de la exploraci\u00f3n inicial de las bibliotecas, pero resultar\u00e1 en una presentaci\u00f3n m\u00e1s agradable.", + "LabelEnableChapterImageExtractionForMovies": "Extraer im\u00e1genes de cap\u00edtulos para Pel\u00edculas", + "LabelChapterImageExtractionForMoviesHelp": "Extraer las im\u00e1genes de los cap\u00edtulos permitir\u00e1 a sus clientes mostrar gr\u00e1ficamente los men\u00fas de selecci\u00f3n de escenas. El proceso puede ser lento, hacer uso intensivo del cpu y requerir el uso de varios gigabytes de espacio. Se ejecuta como una tarea nocturna programada, aunque puede configurarse en el \u00e1rea de tareas programadas. No se recomienda ejecutarlo durante un horario de uso intensivo.", + "LabelEnableAutomaticPortMapping": "Habilitar mapeo autom\u00e1tico de puertos", + "LabelEnableAutomaticPortMappingHelp": "UPnP permite la configuraci\u00f3n de ruteador de manera autom\u00e1tica, para acceso remoto de manera f\u00e1cil. Eso puede no funcionar con algunos modelos de ruteadores.", + "HeaderTermsOfService": "T\u00e9rminos de Servicio de Emby", + "MessagePleaseAcceptTermsOfService": "Por favor acepte los t\u00e9rminos del servicio y la pol\u00edtica de privacidad antes de continuar.", + "OptionIAcceptTermsOfService": "Acepto los t\u00e9rminos del servicio.", + "ButtonPrivacyPolicy": "Pol\u00edtica de privacidad", + "ButtonTermsOfService": "T\u00e9rminos del Servicio", + "HeaderDeveloperOptions": "Opciones de Desarrollador", + "OptionEnableWebClientResponseCache": "Habilitar la cache de respuestas del cliente web", + "OptionDisableForDevelopmentHelp": "Configuralos como sean necesarios para prop\u00f3sitos de desarrollo en el cliente web.", + "OptionEnableWebClientResourceMinification": "Habilitar minificacion de recursos del cliente web", + "LabelDashboardSourcePath": "Ruta de origen del cliente web:", + "LabelDashboardSourcePathHelp": "Si esta ejecutando el servidor desde la fuente, especifique la ruta de acceso a la carpeta dashboard-ui. Todos los archivos de cliente web ser\u00e1n atendidos desde esta ruta.", + "ButtonConvertMedia": "Convertir Medios", + "ButtonOrganize": "Organizar", + "LinkedToEmbyConnect": "Enlazado a Emby Connect", + "HeaderSupporterBenefits": "Beneficios del Aficionado", + "HeaderAddUser": "Agregar Usuario", + "LabelAddConnectSupporterHelp": "Para agregar un usuario que no esta listado, necesita primero enlazar su cuenta a Emby Connect desde su pagina de perfil de usuario.", + "LabelPinCode": "C\u00f3digo pin:", + "OptionHideWatchedContentFromLatestMedia": "Ocultar contenido ya visto de Agregadas Recientemente", + "HeaderSync": "Sinc", + "ButtonOk": "Ok", + "ButtonCancel": "Cancelar", + "ButtonExit": "Salir", + "ButtonNew": "Nuevo", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Rutas", + "CategorySync": "Sinc.", + "TabPlaylist": "Lista de Reproducci\u00f3n", + "HeaderEasyPinCode": "C\u00f3digo Pin Sencillo", + "HeaderGrownupsOnly": "\u00a1Solo Adultos!", + "DividerOr": "--o--", + "HeaderInstalledServices": "Servicios Instalados", + "HeaderAvailableServices": "Servicios Disponibles", + "MessageNoServicesInstalled": "No hay servicios instalados en este momento.", + "HeaderToAccessPleaseEnterEasyPinCode": "Para acceder, por favor introduzca su c\u00f3digo pin sencillo", + "KidsModeAdultInstruction": "Haga clic en el icono de candado en la esquina inferior derecha para configurar o abandonar el modo para ni\u00f1os.", + "ButtonConfigurePinCode": "Configurar c\u00f3digo pin", + "HeaderAdultsReadHere": "\u00a1Adultos Leer Esto!", + "RegisterWithPayPal": "Registrar con PayPal", + "HeaderSyncRequiresSupporterMembership": "Sinc requiere de una Membres\u00eda de Aficionado", + "HeaderEnjoyDayTrial": "Disfrute de una Prueba Gratuita por 14 D\u00edas", + "LabelSyncTempPath": "Trayectoria de archivos temporales:", + "LabelSyncTempPathHelp": "Especifique una carpeta de trabajo personalizada para sinc. Los medios convertidos creados durante el proceso de sinc ser\u00e1n almacenados en este lugar.", + "LabelCustomCertificatePath": "Trayectoria del certificado personalizado:", + "LabelCustomCertificatePathHelp": "Proporcione su archivo de certificado .pfx personalizado. Si se omite, el servidor crear\u00e1 un certificado auto firmado.", + "TitleNotifications": "Notificaciones", + "ButtonDonateWithPayPal": "Donar con PayPal", + "OptionDetectArchiveFilesAsMedia": "Detectar archivos comprimidos como medios", + "OptionDetectArchiveFilesAsMediaHelp": "Al habilitarlo, los archivos con extensiones .rar y .zip ser\u00e1n detectados como archivos de medios.", + "LabelEnterConnectUserName": "Nombre de usuario o correo:", + "LabelEnterConnectUserNameHelp": "Este es su nombre de usuario o contrase\u00f1a de su cuenta Emby en linea.", + "LabelEnableEnhancedMovies": "Habilitar visualizaci\u00f3n mejorada de pel\u00edculas", + "LabelEnableEnhancedMoviesHelp": "Cuando se activa, la pel\u00edculas ser\u00e1n mostradas como carpetas para incluir tr\u00e1ilers, extras, elenco y equipo, y otros contenidos relacionados.", + "HeaderSyncJobInfo": "Trabajo de Sinc", + "FolderTypeMovies": "Pel\u00edculas", + "FolderTypeMusic": "M\u00fasica", + "FolderTypeAdultVideos": "Videos para adultos", + "FolderTypePhotos": "Fotos", + "FolderTypeMusicVideos": "Videos musicales", + "FolderTypeHomeVideos": "Videos caseros", + "FolderTypeGames": "Juegos", + "FolderTypeBooks": "Libros", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Heredar", + "LabelContentType": "Tipo de Contenido:", + "TitleScheduledTasks": "Tareas Programadas", + "HeaderSetupLibrary": "Configurar su biblioteca de medios", + "ButtonAddMediaFolder": "Agregar carpeta de medios", + "LabelFolderType": "Tipo de carpeta:", + "ReferToMediaLibraryWiki": "Consultar la wiki de la biblioteca de medios.", + "LabelCountry": "Pa\u00eds:", + "LabelLanguage": "Idioma:", + "LabelTimeLimitHours": "L\u00edmite de Tiempo (horas):", + "ButtonJoinTheDevelopmentTeam": "Unirse al Equipo de Desarrollo.", + "HeaderPreferredMetadataLanguage": "Idioma preferido para metadatos:", + "LabelSaveLocalMetadata": "Guardar im\u00e1genes y metadatos en las carpetas de medios", + "LabelSaveLocalMetadataHelp": "Guardar im\u00e1genes y metadatos directamente en las carpetas de medios los colocar\u00e1 en un lugar donde se pueden editar f\u00e1cilmente.", + "LabelDownloadInternetMetadata": "Descargar im\u00e1genes y metadatos de internet", + "LabelDownloadInternetMetadataHelp": "El servidor Emby puede descargar informaci\u00f3n sobre sus medios para habilitar presentaciones mas enriquecidas.", + "TabPreferences": "Preferencias", + "TabPassword": "Contrase\u00f1a", + "TabLibraryAccess": "Acceso a biblioteca", + "TabAccess": "Acceso", + "TabImage": "Imagen", + "TabProfile": "Perf\u00edl", + "TabMetadata": "Metadatos", + "TabImages": "Im\u00e1genes", + "TabNotifications": "Notificaciones", + "TabCollectionTitles": "T\u00edtulos", + "HeaderDeviceAccess": "Acceso a Dispositivos", + "OptionEnableAccessFromAllDevices": "Habilitar acceso desde todos los dispositivos", + "OptionEnableAccessToAllChannels": "Habilitar acceso a todos los canales", + "OptionEnableAccessToAllLibraries": "Habilitar el acceso a todas las bibliotecas", + "DeviceAccessHelp": "Esto solo aplica a dispositivos que pueden ser identificados de manera individual y no evitar\u00e1 acceso al navegador. Al filtrar el acceso de usuarios a dispositivos se impedir\u00e1 que utilicen nuevos dispositivos hasta que hayan sido aprobados aqu\u00ed.", + "LabelDisplayMissingEpisodesWithinSeasons": "Mostar episodios no disponibles en las temporadas", + "LabelUnairedMissingEpisodesWithinSeasons": "Mostrar episodios a\u00fan no emitidos en las temporadas", + "HeaderVideoPlaybackSettings": "Ajustes de Reproducci\u00f3n de Video", + "HeaderPlaybackSettings": "Configuraci\u00f3n de Reproducci\u00f3n", + "LabelAudioLanguagePreference": "Preferencia de idioma de audio:", + "LabelSubtitleLanguagePreference": "Preferencia de idioma de subt\u00edtulos:", + "OptionDefaultSubtitles": "Por Defecto", + "OptionOnlyForcedSubtitles": "\u00danicamente subt\u00edtulos forzados", + "OptionAlwaysPlaySubtitles": "Siempre mostrar subt\u00edtulos", + "OptionNoSubtitles": "Sin Subtitulos", + "OptionDefaultSubtitlesHelp": "Los subt\u00edtulos que coincidan con el lenguaje preferido ser\u00e1n cargados cuando el audio se encuentre en un lenguaje extranjero.", + "OptionOnlyForcedSubtitlesHelp": "Se cargar\u00e1n \u00fanicamente subt\u00edtulos marcados como forzados.", + "OptionAlwaysPlaySubtitlesHelp": "Los subt\u00edtulos que coincidan con el lenguaje preferido ser\u00e1n cargados independientemente del lenguaje del audio.", + "OptionNoSubtitlesHelp": "Los subt\u00edtulos no ser\u00e1n cargados por defecto.", + "TabProfiles": "Perfiles", + "TabSecurity": "Seguridad", + "ButtonAddUser": "Agregar Usuario", + "ButtonAddLocalUser": "Agregar Usuario Local", + "ButtonInviteUser": "Invitar Usuario", + "ButtonSave": "Guardar", + "ButtonResetPassword": "Restablecer Contrase\u00f1a", + "LabelNewPassword": "Nueva contrase\u00f1a:", + "LabelNewPasswordConfirm": "Confirmaci\u00f3n de contrase\u00f1a nueva:", + "HeaderCreatePassword": "Crear Contrase\u00f1a", + "LabelCurrentPassword": "Contrase\u00f1a actual:", + "LabelMaxParentalRating": "M\u00e1xima clasificaci\u00f3n parental permitida:", + "MaxParentalRatingHelp": "El contenido con clasificaci\u00f3n parental superior se ocultar\u00e1 para este usuario.", + "LibraryAccessHelp": "Seleccione las carpetas de medios para compartir con este usuario. Los administradores podr\u00e1n editar todas las carpetas usando el administrador de metadatos.", + "ChannelAccessHelp": "Seleccione los canales a compartir con este usuario. Los administradores podr\u00e1n editar todos los canales empleando el administrador de metadatos.", + "ButtonDeleteImage": "Eliminar Imagen", + "LabelSelectUsers": "Seleccionar Usuarios:", + "ButtonUpload": "Subir", + "HeaderUploadNewImage": "Subir Nueva Imagen", + "LabelDropImageHere": "Depositar imagen aqu\u00ed", + "ImageUploadAspectRatioHelp": "Se Recomienda una Proporci\u00f3n de Aspecto 1:1. Solo JPG\/PNG.", + "MessageNothingHere": "Nada aqu\u00ed.", + "MessagePleaseEnsureInternetMetadata": "Por favor aseg\u00farese que la descarga de metadatos de internet esta habilitada.", + "TabSuggested": "Sugerencias", + "TabSuggestions": "Sugerencias", + "TabLatest": "Recientes", + "TabUpcoming": "Proximamente", + "TabShows": "Programas", + "TabEpisodes": "Episodios", + "TabGenres": "G\u00e9neros", + "TabPeople": "Personas", + "TabNetworks": "Cadenas", + "HeaderUsers": "Usuarios", + "HeaderFilters": "Filtros:", + "ButtonFilter": "Filtro", + "OptionFavorite": "Favoritos", + "OptionLikes": "Me gusta", + "OptionDislikes": "No me gusta", + "OptionActors": "Actores", + "OptionGuestStars": "Estrellas Invitadas", + "OptionDirectors": "Directores", + "OptionWriters": "Guionistas", + "OptionProducers": "Productores", + "HeaderResume": "Continuar", + "HeaderNextUp": "A Continuaci\u00f3n", + "NoNextUpItemsMessage": "No se encontr\u00f3 nada. \u00a1Comienza a ver tus programas!", + "HeaderLatestEpisodes": "Episodios Recientes", + "HeaderPersonTypes": "Tipos de Personas:", + "TabSongs": "Canciones", + "TabAlbums": "\u00c1lbumes", + "TabArtists": "Artistas", + "TabAlbumArtists": "Artistas del \u00c1lbum", + "TabMusicVideos": "Videos Musicales", + "ButtonSort": "Ordenar", + "HeaderSortBy": "Ordenar Por:", + "HeaderSortOrder": "Ordenado Por:", + "OptionPlayed": "Reproducido", + "OptionUnplayed": "No reproducido", + "OptionAscending": "Ascendente", + "OptionDescending": "Descendente", + "OptionRuntime": "Duraci\u00f3n", + "OptionReleaseDate": "Fecha de Liberaci\u00f3n", + "OptionPlayCount": "N\u00famero de Reproducc.", + "OptionDatePlayed": "Fecha de Reproducci\u00f3n", + "OptionDateAdded": "Fecha de Adici\u00f3n", + "OptionAlbumArtist": "Artista del \u00c1lbum", + "OptionArtist": "Artista", + "OptionAlbum": "\u00c1lbum", + "OptionTrackName": "Nombre de la Pista", + "OptionCommunityRating": "Calificaci\u00f3n de la Comunidad", + "OptionNameSort": "Nombre", + "OptionFolderSort": "Carpetas", + "OptionBudget": "Presupuesto", + "OptionRevenue": "Recaudaci\u00f3n", + "OptionPoster": "P\u00f3ster", + "OptionPosterCard": "Tarjeta de P\u00f3ster", + "OptionBackdrop": "Imagen de Fondo", + "OptionTimeline": "L\u00ednea de Tiempo", + "OptionThumb": "Miniatura", + "OptionThumbCard": "Tarjeta de Miniatura", + "OptionBanner": "Cart\u00e9l", + "OptionCriticRating": "Calificaci\u00f3n de la Cr\u00edtica", + "OptionVideoBitrate": "Tasa de bits de Video", + "OptionResumable": "Reanudable", + "ScheduledTasksHelp": "Haga clic en una tarea para ajustar su programaci\u00f3n.", + "ScheduledTasksTitle": "Tareas Programadas", + "TabMyPlugins": "Mis Complementos", + "TabCatalog": "Cat\u00e1logo", + "TitlePlugins": "Complementos", + "HeaderAutomaticUpdates": "Actualizaciones Autom\u00e1ticas", + "HeaderNowPlaying": "Reproduciendo Ahora", + "HeaderLatestAlbums": "\u00c1lbumes Recientes", + "HeaderLatestSongs": "Canciones Recientes", + "HeaderRecentlyPlayed": "Reproducido Recientemente", + "HeaderFrequentlyPlayed": "Reproducido Frecuentemente", + "DevBuildWarning": "Las compilaciones de Desarrollo son la punta de lanza. Se publican frecuentemente, estas compilaciones no se han probado. La aplicaci\u00f3n se puede bloquear y caracter\u00edsticas completas pueden no funcionar.", + "LabelVideoType": "Tipo de Video:", + "OptionBluray": "Bluray", + "OptionDvd": "DVD", + "OptionIso": "ISO", + "Option3D": "3D", + "LabelFeatures": "Caracter\u00edsticas:", + "LabelService": "Servicio:", + "LabelStatus": "Estado:", + "LabelVersion": "Versi\u00f3n:", + "LabelLastResult": "\u00daltimo resultado:", + "OptionHasSubtitles": "Subt\u00edtulos", + "OptionHasTrailer": "Tr\u00e1iler", + "OptionHasThemeSong": "Canci\u00f3n del Tema", + "OptionHasThemeVideo": "Video del Tema", + "TabMovies": "Pel\u00edculas", + "TabStudios": "Estudios", + "TabTrailers": "Tr\u00e1ilers", + "LabelArtists": "Artistas:", + "LabelArtistsHelp": "Separar m\u00faltiples empleando:", + "HeaderLatestMovies": "Pel\u00edculas Recientes", + "HeaderLatestTrailers": "Tr\u00e1ilers Recientes", + "OptionHasSpecialFeatures": "Caracter\u00edsticas Especiales", + "OptionImdbRating": "Calificaci\u00f3n de IMDb", + "OptionParentalRating": "Clasificaci\u00f3n Parental", + "OptionPremiereDate": "Fecha de Estreno", + "TabBasic": "B\u00e1sico", + "TabAdvanced": "Avanzado", + "HeaderStatus": "Estado", + "OptionContinuing": "Continuando", + "OptionEnded": "Finalizado", + "HeaderAirDays": "D\u00edas de Emisi\u00f3n", + "OptionSunday": "Domingo", + "OptionMonday": "Lunes", + "OptionTuesday": "Martes", + "OptionWednesday": "Mi\u00e9rcoles", + "OptionThursday": "Jueves", + "OptionFriday": "Viernes", + "OptionSaturday": "S\u00e1bado", + "HeaderManagement": "Administraci\u00f3n", + "LabelManagement": "Administraci\u00f3n:", + "OptionMissingImdbId": "Falta Id de IMDb", + "OptionMissingTvdbId": "Falta Id de TheTVDB", + "OptionMissingOverview": "Falta Sinopsis", + "OptionFileMetadataYearMismatch": "No coincide el A\u00f1o del Archivo con los Metadatos", + "TabGeneral": "General", + "TitleSupport": "Soporte", + "LabelSeasonNumber": "Season number", + "TabLog": "Bit\u00e1cora", + "LabelEpisodeNumber": "Episode number", + "TabAbout": "Acerca de", + "TabSupporterKey": "Clave de Aficionado", + "TabBecomeSupporter": "Convertirse en Aficionado", + "ProjectHasCommunity": "Emby cuenta con una pr\u00f3spera comunidad de usuarios y colaboradores.", + "CheckoutKnowledgeBase": "Eche un vistazo a nuestra base de conocimiento para ayudarle a sacar el m\u00e1ximo provecho a Emby", + "SearchKnowledgeBase": "Buscar en la Base de Conocimiento", + "VisitTheCommunity": "Visitar la Comunidad", + "VisitProjectWebsite": "Visitar el Sitio Web de Emby", + "VisitProjectWebsiteLong": "Visite el sitio Web para conocer las ultimas noticias y mantenerse al d\u00eda con el blog de desarrolladores.", + "OptionHideUser": "Ocultar este usuario en las pantallas de inicio de sesi\u00f3n", + "OptionHideUserFromLoginHelp": "\u00datil para cuentas privadas o de administrador ocultas. El usuario tendr\u00e1 que iniciar sesi\u00f3n manualmente introduciendo su nombre de usuario y contrase\u00f1a.", + "OptionDisableUser": "Desactivar este usuario", + "OptionDisableUserHelp": "Si est\u00e1 desactivado, el servidor no aceptar\u00e1 conexiones de este usuario. Las conexiones existentes ser\u00e1n finalizadas abruptamente.", + "HeaderAdvancedControl": "Control Avanzado", + "LabelName": "Nombre:", + "ButtonHelp": "Ayuda", + "OptionAllowUserToManageServer": "Permitir a este usuario administrar el servidor", + "HeaderFeatureAccess": "Permisos de acceso", + "OptionAllowMediaPlayback": "Permitir reproducci\u00f3n de medios", + "OptionAllowBrowsingLiveTv": "Permitir acceso a TV en Vivo", + "OptionAllowDeleteLibraryContent": "Permitir eliminaci\u00f3n de medios", + "OptionAllowManageLiveTv": "Permitir gesti\u00f3n de grabaci\u00f3n de TV en Vivo", + "OptionAllowRemoteControlOthers": "Permitir control remoto de otros usuarios", + "OptionAllowRemoteSharedDevices": "Permitir control remoto de dispositivos compartidos", + "OptionAllowRemoteSharedDevicesHelp": "Los dispositivos dnla son considerados como compartidos hasta que alg\u00fan usuario comienza a controlarlo.", + "OptionAllowLinkSharing": "Permitir compartir medios en redes sociales.", + "OptionAllowLinkSharingHelp": "Solo son compartidas paginas web que contengan informaci\u00f3n sobre los medios. Los archivos de medios nunca son compartidos p\u00fablicamente. Son compartidos por un tiempo limitado y expiraran basados en las configuraciones para compartir de su servidor.", + "HeaderSharing": "Compartido", + "HeaderRemoteControl": "Control Remoto", + "OptionMissingTmdbId": "Falta Id de Tmdb", + "OptionIsHD": "HD", + "OptionIsSD": "SD", + "OptionMetascore": "Metascore", + "ButtonSelect": "Seleccionar", + "ButtonGroupVersions": "Agrupar Versiones", + "ButtonAddToCollection": "Agregar a Colecci\u00f3n", + "PismoMessage": "Utilizando Pismo File Mount a trav\u00e9s de una licencia donada.", + "TangibleSoftwareMessage": "Utilizando convertidores Java\/C# de Tangible Solutions por medio de una licencia donada.", + "HeaderCredits": "Cr\u00e9ditos", + "PleaseSupportOtherProduces": "Por favor apoye otros productos libres que utilizamos:", + "VersionNumber": "Versi\u00f3n {0}", + "TabPaths": "Rutas", + "TabServer": "Servidor", + "TabTranscoding": "Transcodificaci\u00f3n", + "TitleAdvanced": "Avanzado", + "LabelAutomaticUpdateLevel": "Nivel de actualizaci\u00f3n autom\u00e1tico", + "OptionRelease": "Versi\u00f3n Oficial", + "OptionBeta": "Beta", + "OptionDev": "Desarrollo (Inestable)", + "LabelAllowServerAutoRestart": "Permite al servidor reiniciar autom\u00e1ticamente para aplicar actualizaciones", + "LabelAllowServerAutoRestartHelp": "El servidor reiniciar\u00e1 \u00fanicamente durante periodos ociosos, cuando no haya usuarios activos.", + "LabelEnableDebugLogging": "Habilitar bit\u00e1coras de depuraci\u00f3n", + "LabelRunServerAtStartup": "Ejecutar el servidor al iniciar", + "LabelRunServerAtStartupHelp": "Esto iniciar\u00e1 el icono en el \u00e1rea de notificaci\u00f3n cuando windows arranque. Para iniciar el servicio de windows, desmarque esta opci\u00f3n y ejecute el servicio desde el panel de control de windows. Por favor tome en cuenta que no puede ejecutar ambos simult\u00e1neamente, por lo que deber\u00e1 finalizar el icono del \u00e1rea de notificaci\u00f3n antes de iniciar el servicio.", + "ButtonSelectDirectory": "Seleccionar Carpeta", + "LabelCustomPaths": "Especificar rutas personalizadas cuando se desee. Deje los campos vac\u00edos para usar los valores predeterminados.", + "LabelCachePath": "Ruta para el Cach\u00e9:", + "LabelCachePathHelp": "Especifique una ubicaci\u00f3n personalizada para los archivos de cach\u00e9 del servidor, tales como im\u00e1genes.", + "LabelImagesByNamePath": "Ruta para Im\u00e1genes por nombre:", + "LabelImagesByNamePathHelp": "Especifique una ubicaci\u00f3n personalizada para im\u00e1genes descargadas de actores, artistas, g\u00e9neros y estudios.", + "LabelMetadataPath": "Ruta para metadatos:", + "LabelMetadataPathHelp": "Especifique una ubicaci\u00f3n personalizada para ilustraciones descargadas y metadatos cuando no han sido configurados para almacenarse en carpetas de medios.", + "LabelTranscodingTempPath": "Ruta para transcodificaci\u00f3n temporal:", + "LabelTranscodingTempPathHelp": "Esta carpeta contiene archivos de trabajo usados por el transcodificador. Especifique una trayectoria personalizada, o d\u00e9jela vac\u00eda para utilizar su valor por omisi\u00f3n en la carpeta de datos del servidor.", + "TabBasics": "B\u00e1sicos", + "TabTV": "TV", + "TabGames": "Juegos", + "TabMusic": "M\u00fasica", + "TabOthers": "Otros", + "HeaderExtractChapterImagesFor": "Extraer im\u00e1genes de cap\u00edtulos para:", + "OptionMovies": "Pel\u00edculas", + "OptionEpisodes": "Episodios", + "OptionOtherVideos": "Otros Videos", + "TitleMetadata": "Metadatos", + "LabelAutomaticUpdates": "Habilitar actualizaciones autom\u00e1ticas", + "LabelAutomaticUpdatesTmdb": "Habilitar actualizaciones autom\u00e1ticas desde TheMovieDB.org", + "LabelAutomaticUpdatesTvdb": "Habilitar actualizaciones autom\u00e1ticas desde TheTVDB.com", + "LabelAutomaticUpdatesFanartHelp": "Al habilitarlo, se descargar\u00e1n autom\u00e1ticamente nuevas im\u00e1genes conforme son a\u00f1adidas a fanart.tv. Las Im\u00e1genes existentes no ser\u00e1n reemplazadas.", + "LabelAutomaticUpdatesTmdbHelp": "Al habilitarlo, se descargar\u00e1n autom\u00e1ticamente nuevas im\u00e1genes conforme son a\u00f1adidas a TheMovieDB.org. Las im\u00e1genes existentes no ser\u00e1n reemplazadas.", + "LabelAutomaticUpdatesTvdbHelp": "Al habilitarlo, se descargar\u00e1n autom\u00e1ticamente nuevas im\u00e1genes conforme son a\u00f1adidas a TheTVDB.com. Las im\u00e1genes existentes no ser\u00e1n reemplazadas.", + "LabelFanartApiKey": "Clave api personal:", "LabelFanartApiKeyHelp": "Solicitar fanart sin una clave API personal muestra los resultados que fueron aprobados hace 7 d\u00edas. Con una clave API personal se reduce a 48 horas y si eres miembro VIP de fanart ser\u00e1 alrededor de 10 minutos.", "ExtractChapterImagesHelp": "Extraer las im\u00e1genes de los cap\u00edtulos permitir\u00e1 a sus clientes mostrar gr\u00e1ficamente los men\u00fas de selecci\u00f3n de escenas. El proceso puede ser lento, hacer uso intensivo del cpu y requerir el uso de varios gigabytes de espacio. Se ejecuta como una tarea nocturna programada, aunque puede configurarse en el \u00e1rea de tareas programadas. No se recomienda ejecutarlo durante un horario de uso intensivo.", "LabelMetadataDownloadLanguage": "Lenguaje preferido para descargas:", @@ -120,7 +491,7 @@ "HeaderCastCrew": "Reparto y Personal", "HeaderAdditionalParts": "Partes Adicionales", "ButtonSplitVersionsApart": "Separar Versiones", - "ButtonPlayTrailer": "Avance", + "ButtonPlayTrailer": "Tr\u00e1iler", "LabelMissing": "Falta", "LabelOffline": "Desconectado", "PathSubstitutionHelp": "Las rutas alternativas se utilizan para mapear una ruta en el servidor a la que los clientes puedan acceder. Al permitir a los clientes acceder directamente a los medios en el servidor podr\u00e1n reproducirlos directamente a trav\u00e9s de la red evitando el uso de recursos del servidor para transmitirlos y transcodificarlos.", @@ -215,8 +586,6 @@ "LabelSkipped": "Omitido", "HeaderEpisodeOrganization": "Organizaci\u00f3n de Episodios", "LabelSeries": "Series:", - "LabelSeasonNumber": "N\u00famero de temporada:", - "LabelEpisodeNumber": "N\u00famero de episodio:", "LabelEndingEpisodeNumber": "N\u00famero episodio final:", "LabelEndingEpisodeNumberHelp": "S\u00f3lo requerido para archivos multi-episodio", "HeaderSupportTheTeam": "Apoye al equipo de Emby", @@ -376,7 +745,7 @@ "ButtonVolumeUp": "Subir Volumen", "ButtonVolumeDown": "Bajar Volumen", "ButtonMute": "Mudo", - "HeaderLatestMedia": "Medios Recientes", + "HeaderLatestMedia": "Agregadas Recientemente", "OptionSpecialFeatures": "Caracter\u00edsticas Especiales", "HeaderCollections": "Colecciones", "LabelProfileCodecsHelp": "Separados por comas. Puede dejarse vaci\u00f3 para aplicarlo a todos los codecs.", @@ -431,7 +800,7 @@ "LabelMaxBitrateHelp": "Especifique la tasa de bits m\u00e1xima para ambientes con un ancho de banda limitado, o si el dispositivo impone sus propios l\u00edmites.", "LabelMaxStreamingBitrate": "Tasa de bits m\u00e1xima para transmisi\u00f3n:", "LabelMaxStreamingBitrateHelp": "Especifique una tasa de bits m\u00e1xima al transferir en tiempo real.", - "LabelMaxChromecastBitrate": "Max Chromecast bitrate:", + "LabelMaxChromecastBitrate": "Tasa maxima de bits para El Chromecast:", "LabelMaxStaticBitrate": "Tasa m\u00e1xima de bits de sinc", "LabelMaxStaticBitrateHelp": "Especifique una tasa de bits cuando al sincronizar contenido en alta calidad.", "LabelMusicStaticBitrate": "Tasa de bits de sinc de m\u00fascia", @@ -504,10 +873,11 @@ "HeaderTypeText": "Introduzca Texto", "LabelTypeText": "Texto", "HeaderSearchForSubtitles": "Buscar Subtitulos", + "ButtonMore": "M\u00e1s", "MessageNoSubtitleSearchResultsFound": "No se encontraron resultados en la b\u00fasqueda.", "TabDisplay": "Pantalla", "TabLanguages": "Idiomas", - "TabAppSettings": "App Settings", + "TabAppSettings": "Configuracion", "LabelEnableThemeSongs": "Habilitar canciones de tema", "LabelEnableBackdrops": "Habilitar im\u00e1genes de fondo", "LabelEnableThemeSongsHelp": "Al activarse, las canciones de tema ser\u00e1n reproducidas en segundo plano mientras se navega en la biblioteca.", @@ -527,14 +897,14 @@ "OptionMyMedia": "Mis medios", "OptionMyMediaSmall": "Mis medios (peque\u00f1o)", "OptionResumablemedia": "Continuar", - "OptionLatestMedia": "Medios recientes", + "OptionLatestMedia": "Agregadas recientemente", "OptionLatestChannelMedia": "Elementos recientes de canales", "HeaderLatestChannelItems": "Elementos Recientes de Canales", "OptionNone": "Ninguno", "HeaderLiveTv": "TV en Vivo", "HeaderReports": "Reportes", "HeaderMetadataManager": "Administrador de Metadatos", - "HeaderPreferences": "Preferencias", + "HeaderSettings": "Configuraci\u00f3n", "MessageLoadingChannels": "Cargando contenidos del canal...", "MessageLoadingContent": "Cargando contenido...", "ButtonMarkRead": "Marcar como Le\u00eddo", @@ -558,7 +928,7 @@ "LabelChannelDownloadPathHelp": "Especifique una ruta personalizada para descargas si as\u00ed lo desea. D\u00e9jelo vac\u00edo para descargar a una carpeta de datos interna del programa.", "LabelChannelDownloadAge": "Eliminar contenido despu\u00e9s de: (d\u00edas)", "LabelChannelDownloadAgeHelp": "El contenido descargado anterior a esto ser\u00e1 eliminado. Permanecer\u00e1 reproducible via transmisi\u00f3n en tiempo real por Internet.", - "ChannelSettingsFormHelp": "Instale canales tales como Avances y Vimeo desde el cat\u00e1logo de complementos.", + "ChannelSettingsFormHelp": "Instale canales tales como Tr\u00e1ilers y Vimeo desde el cat\u00e1logo de complementos.", "ButtonOptions": "Opciones", "ViewTypePlaylists": "Listas de Reproducci\u00f3n", "ViewTypeMovies": "Pel\u00edculas", @@ -630,7 +1000,7 @@ "HeaderServerLogFiles": "Archivos de registro del servidor:", "TabBranding": "Establecer Marca", "HeaderBrandingHelp": "Personaliza la apariencia de Emby para ajustarla a su grupo u organizaci\u00f3n.", - "LabelLoginDisclaimer": "Aviso de Inicio de Sesi\u00f3n:", + "LabelLoginDisclaimer": "Aviso legal de Inicio de Sesi\u00f3n:", "LabelLoginDisclaimerHelp": "Esto se mostrara al final de la pagina de inicio de sesi\u00f3n.", "LabelAutomaticallyDonate": "Donar autom\u00e1ticamente este monto cada mes", "LabelAutomaticallyDonateHelp": "Puedes cancelarlo en cualquier momento por medio de tu cuenta PayPal.", @@ -675,7 +1045,7 @@ "LabelDateAdded": "Fecha de adici\u00f3n:", "HeaderFeatures": "Caracter\u00edsticas", "HeaderAdvanced": "Avanzado", - "ButtonSync": "SInc", + "ButtonSync": "Sinc", "TabScheduledTasks": "Tareas Programadas", "HeaderChapters": "Cap\u00edtulos", "HeaderResumeSettings": "Configuraci\u00f3n para Continuar", @@ -721,7 +1091,7 @@ "OptionReportSongs": "Canciones", "OptionReportSeries": "Series", "OptionReportSeasons": "Temporadas", - "OptionReportTrailers": "Avances", + "OptionReportTrailers": "Tr\u00e1ilers", "OptionReportMusicVideos": "Videos Musicales", "OptionReportMovies": "Pel\u00edculas", "OptionReportHomeVideos": "Videos caseros", @@ -732,7 +1102,6 @@ "OptionReportArtists": "Artistas", "OptionReportAlbums": "\u00c1lbumes", "OptionReportAdultVideos": "Videos para Adultos", - "ButtonMore": "M\u00e1s", "HeaderActivity": "Actividad", "ScheduledTaskStartedWithName": "{0} Iniciado", "ScheduledTaskCancelledWithName": "{0} fue cancelado", @@ -862,6 +1231,7 @@ "OptionNoThemeVideo": "Sin Video del Tema", "LabelOneTimeDonationAmount": "Cantidad a donar:", "ButtonDonate": "Donar", + "ButtonPurchase": "Comprar", "OptionActor": "Actor", "OptionComposer": "Compositor", "OptionDirector": "Director", @@ -881,7 +1251,6 @@ "HeaderDeveloperInfo": "Info del desarrollador", "HeaderRevisionHistory": "Historial de Versiones", "ButtonViewWebsite": "Ver sitio web", - "LabelRecurringDonationCanBeCancelledHelp": "Las donaciones recurrentes pueden ser canceladas en cualquier momento desde su cuenta PayPal.", "HeaderXmlSettings": "Configuraci\u00f3n XML", "HeaderXmlDocumentAttributes": "Atributos del Documento XML", "HeaderXmlDocumentAttribute": "Atributo del Documento XML", @@ -895,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Conocer mas acerca de Emby Connect", "LabelExternalPlayers": "Reproductores Externos:", "LabelExternalPlayersHelp": "Despliega botones para reproducir contenido en reproductores externos. Esto s\u00f3lo est\u00e1 disponible en dispositivos que soporten esquemas URL, generalmente Android e iOS. Con reproductores externos normalmente no se cuenta con soporte para control remoto o reinicio.", + "LabelNativeExternalPlayersHelp": "Mostrar botones para reproducir contenido en reproductores externos.", + "LabelEnableItemPreviews": "Habilitar la vista previa de \u00edtems", + "LabelEnableItemPreviewsHelp": "Si se habilita, aparecer\u00e1n las vistas previas desliz\u00e1ndose al dar clic a los \u00edtems en ciertas pantallas.", "HeaderSubtitleProfile": "Perf\u00edl de Subt\u00edtulo", "HeaderSubtitleProfiles": "Perfiles de Subt\u00edtulos", "HeaderSubtitleProfilesHelp": "Los perfiles de subt\u00edtulos describen el formato del subt\u00edtulo soportado por el dispositivo.", @@ -913,22 +1285,22 @@ "TabCinemaMode": "Modo Cine", "TitlePlayback": "Reproducci\u00f3n", "LabelEnableCinemaModeFor": "Habilitar modo cine para:", - "CinemaModeConfigurationHelp": "El modo cine trae la experiencia del cine directo al la sala de TV con la habilidad de reproducir avances e intros personalizados antes de la presentaci\u00f3n estelar.", - "OptionTrailersFromMyMovies": "Incluir avances de pel\u00edculas en mi biblioteca", - "OptionUpcomingMoviesInTheaters": "Incluir avances para pel\u00edculas nuevas y por estrenar", - "LabelLimitIntrosToUnwatchedContent": "Solo usar avances de contenido no reproducido", + "CinemaModeConfigurationHelp": "El modo cine trae la experiencia del cine directo al la sala de TV con la habilidad de reproducir tr\u00e1ilers e intros personalizados antes de la presentaci\u00f3n estelar.", + "OptionTrailersFromMyMovies": "Incluir tr\u00e1ilers de pel\u00edculas en mi biblioteca", + "OptionUpcomingMoviesInTheaters": "Incluir tr\u00e1ilers para pel\u00edculas nuevas y por estrenar", + "LabelLimitIntrosToUnwatchedContent": "Solo usar tr\u00e1ilers de contenido no reproducido", "LabelEnableIntroParentalControl": "Habilitar control parental inteligente", - "LabelEnableIntroParentalControlHelp": "Los avances s\u00f3lo ser\u00e1n seleccionados con una clasificaci\u00f3n parental igual o menor a la del contenido que se est\u00e1 reproduciendo.", - "LabelTheseFeaturesRequireSupporterHelpAndTrailers": "Estas caractwr\u00edsticas requieren de una membres\u00eda de aficionado activa y de la instalaci\u00f3n del complemento del canal de avances.", - "OptionTrailersFromMyMoviesHelp": "Requiere configurar avances locales.", + "LabelEnableIntroParentalControlHelp": "Los tr\u00e1ilers s\u00f3lo ser\u00e1n seleccionados con una clasificaci\u00f3n parental igual o menor a la del contenido que se est\u00e1 reproduciendo.", + "LabelTheseFeaturesRequireSupporterHelpAndTrailers": "Estas caractwr\u00edsticas requieren de una membres\u00eda de aficionado activa y de la instalaci\u00f3n del complemento del canal de tr\u00e1ilers.", + "OptionTrailersFromMyMoviesHelp": "Requiere configurar tr\u00e1ilers locales.", "LabelCustomIntrosPath": "Trayectoria para intros personalizados:", - "LabelCustomIntrosPathHelp": "Un folder que contiene archivos de video. Un video ser\u00e1 seleccionado aleatoriamente y reproducido despu\u00e9s de los avances.", + "LabelCustomIntrosPathHelp": "Un folder que contiene archivos de video. Un video ser\u00e1 seleccionado aleatoriamente y reproducido despu\u00e9s de los tr\u00e1ilers.", "ValueSpecialEpisodeName": "Especial: {0}", - "LabelSelectInternetTrailersForCinemaMode": "Avances de Internet", - "OptionUpcomingDvdMovies": "Incluir avances de pel\u00edculas en DVD y Blu-ray nuevas y por estrenar", - "OptionUpcomingStreamingMovies": "Incluir avances de pel\u00edculas nuevas o por estrenar en Netflix", - "LabelDisplayTrailersWithinMovieSuggestions": "Desplegar avances dentro de las sugerencias de pel\u00edculas", - "LabelDisplayTrailersWithinMovieSuggestionsHelp": "Requiere la instalaci\u00f3n del canal de avances.", + "LabelSelectInternetTrailersForCinemaMode": "Tr\u00e1ilers de Internet", + "OptionUpcomingDvdMovies": "Incluir tr\u00e1ilers de pel\u00edculas en DVD y Blu-ray nuevas y por estrenar", + "OptionUpcomingStreamingMovies": "Incluir tr\u00e1ilers de pel\u00edculas nuevas o por estrenar en Netflix", + "LabelDisplayTrailersWithinMovieSuggestions": "Desplegar tr\u00e1ilers dentro de las sugerencias de pel\u00edculas", + "LabelDisplayTrailersWithinMovieSuggestionsHelp": "Requiere la instalaci\u00f3n del canal de tr\u00e1ilers.", "CinemaModeConfigurationHelp2": "Los usuarios individuales podr\u00e1n desactivar el modo cine desde sus preferencias personales.", "LabelEnableCinemaMode": "Activar modo cine", "HeaderCinemaMode": "Modo cine", @@ -936,7 +1308,7 @@ "OptionDateAddedImportTime": "Emplear la fecha de escaneo en la biblioteca", "OptionDateAddedFileTime": "Emplear fecha de creaci\u00f3n del archivo", "LabelDateAddedBehaviorHelp": "Si se encuentra un valor en los metadados siempre ser\u00e1 empleado antes que cualquiera de estas opciones.", - "LabelNumberTrailerToPlay": "N\u00famero de avances a reproducir:", + "LabelNumberTrailerToPlay": "N\u00famero de tr\u00e1ilers a reproducir:", "TitleDevices": "Dispositivos", "TabCameraUpload": "Subir desde la C\u00e1mara", "TabDevices": "Dispositivos", @@ -969,11 +1341,11 @@ "OptionWeekends": "Fines de semana", "MessageProfileInfoSynced": "Informaci\u00f3n de perfil de usuario sincronizada con Emby Connect.", "HeaderOptionalLinkEmbyAccount": "Opcional: Enlazar su cuenta Emby", - "ButtonTrailerReel": "Carrete de Avances", - "HeaderTrailerReel": "Carrete de Avances", - "OptionPlayUnwatchedTrailersOnly": "Reproducir \u00fanicamente avances no vistos", - "HeaderTrailerReelHelp": "Iniciar un carrete de avances para reproducir una lista de reproducci\u00f3n de larga duraci\u00f3n de avances.", - "MessageNoTrailersFound": "No se encontraron avances. Instale el canal de avances para mejorar su experiencia con pel\u00edculas al agregar una biblioteca de avances desde el Internet.", + "ButtonTrailerReel": "Carrete de Tr\u00e1ilers", + "HeaderTrailerReel": "Carrete de Tr\u00e1ilers", + "OptionPlayUnwatchedTrailersOnly": "Reproducir \u00fanicamente tr\u00e1ilers no vistos", + "HeaderTrailerReelHelp": "Iniciar un carrete de tr\u00e1ilers para reproducir una lista de reproducci\u00f3n de larga duraci\u00f3n de tr\u00e1ilers.", + "MessageNoTrailersFound": "No se encontraron tr\u00e1ilers. Instale el canal de tr\u00e1ilers para mejorar su experiencia con pel\u00edculas al agregar una biblioteca de tr\u00e1ilers desde el Internet.", "HeaderNewUsers": "Nuevos Usuarios", "ButtonSignUp": "Registrarse", "ButtonForgotPassword": "Olvid\u00e9 contrase\u00f1a", @@ -1023,7 +1395,7 @@ "HeaderUpcomingMovies": "Pel\u00edculas por Estrenar", "HeaderUpcomingSports": "Deportes por Estrenar", "HeaderUpcomingPrograms": "Programas por Estrenar", - "ButtonMoreItems": "M\u00e1s...", + "ButtonMoreItems": "Mas", "LabelShowLibraryTileNames": "Mostrar nombres de t\u00edtulo de las bibliotecas", "LabelShowLibraryTileNamesHelp": "Determina si se desplegar\u00e1n etiquetas debajo de los t\u00edtulos de las bibliotecas con la p\u00e1gina principal", "OptionEnableTranscodingThrottle": "Habilitar contenci\u00f3n", @@ -1042,396 +1414,41 @@ "OptionEnableFullSpeedConversion": "Habilitar conversi\u00f3n a m\u00e1xima velocidad", "OptionEnableFullSpeedConversionHelp": "Por defecto, la conversi\u00f3n es realizada a baja velocidad para minimizar el consumo de recursos.", "HeaderPlaylists": "Listas", - "HeaderSelectDate": "Seleccionar fecha", - "HeaderWelcomeExclamation": "\u00a1Bienvenido!", - "HeaderMyPreferences": "Mi Configuraci\u00f3n", - "ButtonMyPreferencesWelcomeYes": "Si, me gustar\u00eda ajustar mi configuraci\u00f3n ahora.", - "ButtonMyPreferencesWelcomeNo": "No gracias, lo har\u00e9 luego.", - "MyPreferencesWelcomeMessage1": "Configuramos la apariencia de tu biblioteca de una forma que pensamos que te gustar\u00eda. Puedes cambiar la apariencia y agrupaci\u00f3n del contenido cuando quieras en tu configuraci\u00f3n. Tu configuraci\u00f3n se aplicar\u00e1 a todas las aplicaciones de Emby.", - "MyPreferencesWelcomeMessage2": "\u00bfTe gustar\u00eda ajustar tu configuraci\u00f3n ahora?", - "ToAccessPreferencesHelp": "Para acceder a tu configuraci\u00f3n luego, haz clic en tu icono de usuario en la esquina superior derecha y selecciona Mi Configuraci\u00f3n.", "HeaderViewStyles": "Ver Estilos", - "LabelSelectViewStyles": "Enable enhanced presentations for:", + "LabelSelectViewStyles": "Abilitar presentaciones mejoradas para:", "LabelSelectViewStylesHelp": "Si se activa, las diferentes vistas usar\u00e1n metada para mostrar categor\u00edas como Sugerencias, \u00daltimos, G\u00e9neros, y m\u00e1s. Si est\u00e1 desactivado, se mostrar\u00e1n como carpetas comunes.", - "TabPhotos": "Photos", + "TabPhotos": "Fotos", "TabVideos": "Videos", - "HeaderWelcomeToEmby": "Welcome to Emby", - "EmbyIntroMessage": "With Emby you can easily stream videos, music and photos to smart phones, tablets and other devices from your Emby Server.", - "ButtonSkip": "Skip", - "TextConnectToServerManually": "Connect to server manually", - "ButtonSignInWithConnect": "Sign in with Emby Connect", - "ButtonConnect": "Connect", - "LabelServerHost": "Host:", - "LabelServerHostHelp": "192.168.1.100 or https:\/\/myserver.com", - "LabelServerPort": "Port:", - "HeaderNewServer": "New Server", - "ButtonChangeServer": "Change Server", - "HeaderConnectToServer": "Connect to Server", - "LabelExit": "Salir", - "LabelVisitCommunity": "Visitar la Comunidad", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Est\u00e1ndar", - "LabelApiDocumentation": "Documentaci\u00f3n del API", - "LabelDeveloperResources": "Recursos para Desarrolladores", - "LabelBrowseLibrary": "Explorar Biblioteca", - "LabelConfigureServer": "Configurar Emby", - "LabelOpenLibraryViewer": "Abrir el Visor de la Biblioteca", - "LabelRestartServer": "Reiniciar el Servidor", - "LabelShowLogWindow": "Mostrar Ventana de Bit\u00e1cora", - "LabelPrevious": "Anterior", - "LabelFinish": "Terminar", - "LabelNext": "Siguiente", - "LabelYoureDone": "Ha Terminado!", - "WelcomeToProject": "Bienvenido a Emby!", - "ThisWizardWillGuideYou": "Este asistente le guiar\u00e1 a trav\u00e9s del proceso de instalaci\u00f3n. Para comenzar, por favor seleccione su lenguaje preferido.", - "TellUsAboutYourself": "D\u00edganos sobre usted", - "ButtonQuickStartGuide": "Gu\u00eda de inicio r\u00e1pido", - "LabelYourFirstName": "Su nombre:", - "MoreUsersCanBeAddedLater": "Se pueden agregar m\u00e1s usuarios posteriormente en el Panel de Control.", - "UserProfilesIntro": "Emby incluye soporte integrado para perfiles de usuario, habilitando a cada usuario para tener sus propias configuraciones de visualizaci\u00f3n, reproducci\u00f3n y controles parentales.", - "LabelWindowsService": "Servicio de Windows", - "AWindowsServiceHasBeenInstalled": "Se ha instalado un Servicio de Windows.", - "WindowsServiceIntro1": "El Servidor Emby normalmente se ejecuta como una aplicaci\u00f3n de escritorio con un icono de bandeja, pero si prefiere ejecutarlo como un servicio de fondo, puede en su lugar ser iniciado del panel de control de servicios de windows.", - "WindowsServiceIntro2": "Si utiliza el servicio de Windows, tenga en cuenta que no se puede ejecutar simult\u00e1neamiente con el icono en el \u00e1rea de notificaci\u00f3n, por lo que tendr\u00e1 que finalizar desde el icono para poder ejecutar el servicio. Adicionalmente, el servicio deber\u00e1 ser configurado con privilegios administrativos a trav\u00e9s del panel de control del servicio. Tenga en cuenta que en este momento el servicio no es capaz de actualizarse a s\u00ed mismo, por lo que las nuevas versiones requerir\u00e1n de interacci\u00f3n manual.", - "WizardCompleted": "Eso es todo lo que necesitamos por ahora, Emby ha comenzado a recolectar informaci\u00f3n sobre su biblioteca de medios. Revise algunas de nuestras aplicaciones, y haga clic en <b>Finalizar<\/b> para ver el <b>Panel de Control<\/b>", - "LabelConfigureSettings": "Configuraci\u00f3n de opciones", - "LabelEnableVideoImageExtraction": "Habilitar extracci\u00f3n de im\u00e1genes de video", - "VideoImageExtractionHelp": "Para videos que no cuenten con im\u00e1genes, y para los que no podemos encontrar im\u00e1genes en Internet. Esto incrementar\u00e1 un poco el tiempo de la exploraci\u00f3n inicial de las bibliotecas, pero resultar\u00e1 en una presentaci\u00f3n m\u00e1s agradable.", - "LabelEnableChapterImageExtractionForMovies": "Extraer im\u00e1genes de cap\u00edtulos para Pel\u00edculas", - "LabelChapterImageExtractionForMoviesHelp": "Extraer las im\u00e1genes de los cap\u00edtulos permitir\u00e1 a sus clientes mostrar gr\u00e1ficamente los men\u00fas de selecci\u00f3n de escenas. El proceso puede ser lento, hacer uso intensivo del cpu y requerir el uso de varios gigabytes de espacio. Se ejecuta como una tarea nocturna programada, aunque puede configurarse en el \u00e1rea de tareas programadas. No se recomienda ejecutarlo durante un horario de uso intensivo.", - "LabelEnableAutomaticPortMapping": "Habilitar mapeo autom\u00e1tico de puertos", - "LabelEnableAutomaticPortMappingHelp": "UPnP permite la configuraci\u00f3n de ruteador de manera autom\u00e1tica, para acceso remoto de manera f\u00e1cil. Eso puede no funcionar con algunos modelos de ruteadores.", - "HeaderTermsOfService": "T\u00e9rminos de Servicio de Emby", - "MessagePleaseAcceptTermsOfService": "Por favor acepte los t\u00e9rminos del servicio y la pol\u00edtica de privacidad antes de continuar.", - "OptionIAcceptTermsOfService": "Acepto los t\u00e9rminos del servicio.", - "ButtonPrivacyPolicy": "Pol\u00edtica de privacidad", - "ButtonTermsOfService": "T\u00e9rminos del Servicio", - "HeaderDeveloperOptions": "Opciones de Desarrollador", - "OptionEnableWebClientResponseCache": "Habilitar la cache de respuestas del cliente web", - "OptionDisableForDevelopmentHelp": "Configuralos como sean necesarios para prop\u00f3sitos de desarrollo en el cliente web.", - "OptionEnableWebClientResourceMinification": "Habilitar minificacion de recursos del cliente web", - "LabelDashboardSourcePath": "Ruta de origen del cliente web:", - "LabelDashboardSourcePathHelp": "Si esta ejecutando el servidor desde la fuente, especifique la ruta de acceso a la carpeta dashboard-ui. Todos los archivos de cliente web ser\u00e1n atendidos desde esta ruta.", - "ButtonConvertMedia": "Convertir Medios", - "ButtonOrganize": "Organizar", - "LinkedToEmbyConnect": "Enlazado a Emby Connect", - "HeaderSupporterBenefits": "Beneficios del Aficionado", - "HeaderAddUser": "Agregar Usuario", - "LabelAddConnectSupporterHelp": "Para agregar un usuario que no esta listado, necesita primero enlazar su cuenta a Emby Connect desde su pagina de perfil de usuario.", - "LabelPinCode": "C\u00f3digo pin:", - "OptionHideWatchedContentFromLatestMedia": "Ocultar contenido ya visto de medios recientes", - "HeaderSync": "Sinc", - "ButtonOk": "Ok", - "ButtonCancel": "Cancelar", - "ButtonExit": "Salir", - "ButtonNew": "Nuevo", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Rutas", - "CategorySync": "Sinc.", - "TabPlaylist": "Lista de Reproducci\u00f3n", - "HeaderEasyPinCode": "C\u00f3digo Pin Sencillo", - "HeaderGrownupsOnly": "\u00a1Solo Adultos!", - "DividerOr": "--o--", - "HeaderInstalledServices": "Servicios Instalados", - "HeaderAvailableServices": "Servicios Disponibles", - "MessageNoServicesInstalled": "No hay servicios instalados en este momento.", - "HeaderToAccessPleaseEnterEasyPinCode": "Para acceder, por favor introduzca su c\u00f3digo pin sencillo", - "KidsModeAdultInstruction": "Haga clic en el icono de candado en la esquina inferior derecha para configurar o abandonar el modo para ni\u00f1os.", - "ButtonConfigurePinCode": "Configurar c\u00f3digo pin", - "HeaderAdultsReadHere": "\u00a1Adultos Leer Esto!", - "RegisterWithPayPal": "Registrar con PayPal", - "HeaderSyncRequiresSupporterMembership": "Sinc requiere de una Membres\u00eda de Aficionado", - "HeaderEnjoyDayTrial": "Disfrute de una Prueba Gratuita por 14 D\u00edas", - "LabelSyncTempPath": "Trayectoria de archivos temporales:", - "LabelSyncTempPathHelp": "Especifique una carpeta de trabajo personalizada para sinc. Los medios convertidos creados durante el proceso de sinc ser\u00e1n almacenados en este lugar.", - "LabelCustomCertificatePath": "Trayectoria del certificado personalizado:", - "LabelCustomCertificatePathHelp": "Proporcione su archivo de certificado .pfx personalizado. Si se omite, el servidor crear\u00e1 un certificado auto firmado.", - "TitleNotifications": "Notificaciones", - "ButtonDonateWithPayPal": "Donar con PayPal", - "OptionDetectArchiveFilesAsMedia": "Detectar archivos comprimidos como medios", - "OptionDetectArchiveFilesAsMediaHelp": "Al habilitarlo, los archivos con extensiones .rar y .zip ser\u00e1n detectados como archivos de medios.", - "LabelEnterConnectUserName": "Nombre de usuario o correo:", - "LabelEnterConnectUserNameHelp": "Este es su nombre de usuario o contrase\u00f1a de su cuenta Emby en linea.", - "LabelEnableEnhancedMovies": "Habilitar visualizaci\u00f3n mejorada de pel\u00edculas", - "LabelEnableEnhancedMoviesHelp": "Cuando se activa, la pel\u00edculas ser\u00e1n mostradas como carpetas para incluir trailers, extras, elenco y equipo, y otros contenidos relacionados.", - "HeaderSyncJobInfo": "Trabajo de Sinc", - "FolderTypeMixed": "Contenido mezclado", - "FolderTypeMovies": "Pel\u00edculas", - "FolderTypeMusic": "M\u00fasica", - "FolderTypeAdultVideos": "Videos para adultos", - "FolderTypePhotos": "Fotos", - "FolderTypeMusicVideos": "Videos musicales", - "FolderTypeHomeVideos": "Videos caseros", - "FolderTypeGames": "Juegos", - "FolderTypeBooks": "Libros", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Heredar", - "LabelContentType": "Tipo de Contenido:", - "TitleScheduledTasks": "Tareas Programadas", - "HeaderSetupLibrary": "Configurar su biblioteca de medios", - "ButtonAddMediaFolder": "Agregar carpeta de medios", - "LabelFolderType": "Tipo de carpeta:", - "ReferToMediaLibraryWiki": "Consultar la wiki de la biblioteca de medios.", - "LabelCountry": "Pa\u00eds:", - "LabelLanguage": "Idioma:", - "LabelTimeLimitHours": "L\u00edmite de Tiempo (horas):", - "ButtonJoinTheDevelopmentTeam": "Unirse al Equipo de Desarrollo.", - "HeaderPreferredMetadataLanguage": "Idioma preferido para metadatos:", - "LabelSaveLocalMetadata": "Guardar im\u00e1genes y metadatos en las carpetas de medios", - "LabelSaveLocalMetadataHelp": "Guardar im\u00e1genes y metadatos directamente en las carpetas de medios los colocar\u00e1 en un lugar donde se pueden editar f\u00e1cilmente.", - "LabelDownloadInternetMetadata": "Descargar im\u00e1genes y metadatos de internet", - "LabelDownloadInternetMetadataHelp": "El servidor Emby puede descargar informaci\u00f3n sobre sus medios para habilitar presentaciones mas enriquecidas.", - "TabPreferences": "Preferencias", - "TabPassword": "Contrase\u00f1a", - "TabLibraryAccess": "Acceso a biblioteca", - "TabAccess": "Acceso", - "TabImage": "Imagen", - "TabProfile": "Perf\u00edl", - "TabMetadata": "Metadatos", - "TabImages": "Im\u00e1genes", - "TabNotifications": "Notificaciones", - "TabCollectionTitles": "T\u00edtulos", - "HeaderDeviceAccess": "Acceso a Dispositivos", - "OptionEnableAccessFromAllDevices": "Habilitar acceso desde todos los dispositivos", - "OptionEnableAccessToAllChannels": "Habilitar acceso a todos los canales", - "OptionEnableAccessToAllLibraries": "Habilitar el acceso a todas las bibliotecas", - "DeviceAccessHelp": "Esto solo aplica a dispositivos que pueden ser identificados de manera individual y no evitar\u00e1 acceso al navegador. Al filtrar el acceso de usuarios a dispositivos se impedir\u00e1 que utilicen nuevos dispositivos hasta que hayan sido aprobados aqu\u00ed.", - "LabelDisplayMissingEpisodesWithinSeasons": "Mostar episodios no disponibles en las temporadas", - "LabelUnairedMissingEpisodesWithinSeasons": "Mostrar episodios a\u00fan no emitidos en las temporadas", - "HeaderVideoPlaybackSettings": "Ajustes de Reproducci\u00f3n de Video", - "HeaderPlaybackSettings": "Configuraci\u00f3n de Reproducci\u00f3n", - "LabelAudioLanguagePreference": "Preferencia de idioma de audio:", - "LabelSubtitleLanguagePreference": "Preferencia de idioma de subt\u00edtulos:", - "OptionDefaultSubtitles": "Por Defecto", - "OptionOnlyForcedSubtitles": "\u00danicamente subt\u00edtulos forzados", - "OptionAlwaysPlaySubtitles": "Siempre mostrar subt\u00edtulos", - "OptionNoSubtitles": "Sin Subtitulos", - "OptionDefaultSubtitlesHelp": "Los subt\u00edtulos que coincidan con el lenguaje preferido ser\u00e1n cargados cuando el audio se encuentre en un lenguaje extranjero.", - "OptionOnlyForcedSubtitlesHelp": "Se cargar\u00e1n \u00fanicamente subt\u00edtulos marcados como forzados.", - "OptionAlwaysPlaySubtitlesHelp": "Los subt\u00edtulos que coincidan con el lenguaje preferido ser\u00e1n cargados independientemente del lenguaje del audio.", - "OptionNoSubtitlesHelp": "Los subt\u00edtulos no ser\u00e1n cargados por defecto.", - "TabProfiles": "Perfiles", - "TabSecurity": "Seguridad", - "ButtonAddUser": "Agregar Usuario", - "ButtonAddLocalUser": "Agregar Usuario Local", - "ButtonInviteUser": "Invitar Usuario", - "ButtonSave": "Guardar", - "ButtonResetPassword": "Restablecer Contrase\u00f1a", - "LabelNewPassword": "Nueva contrase\u00f1a:", - "LabelNewPasswordConfirm": "Confirmaci\u00f3n de contrase\u00f1a nueva:", - "HeaderCreatePassword": "Crear Contrase\u00f1a", - "LabelCurrentPassword": "Contrase\u00f1a actual:", - "LabelMaxParentalRating": "M\u00e1xima clasificaci\u00f3n parental permitida:", - "MaxParentalRatingHelp": "El contenido con clasificaci\u00f3n parental superior se ocultar\u00e1 para este usuario.", - "LibraryAccessHelp": "Seleccione las carpetas de medios para compartir con este usuario. Los administradores podr\u00e1n editar todas las carpetas usando el administrador de metadatos.", - "ChannelAccessHelp": "Seleccione los canales a compartir con este usuario. Los administradores podr\u00e1n editar todos los canales empleando el administrador de metadatos.", - "ButtonDeleteImage": "Eliminar Imagen", - "LabelSelectUsers": "Seleccionar Usuarios:", - "ButtonUpload": "Subir", - "HeaderUploadNewImage": "Subir Nueva Imagen", - "LabelDropImageHere": "Depositar imagen aqu\u00ed", - "ImageUploadAspectRatioHelp": "Se Recomienda una Proporci\u00f3n de Aspecto 1:1. Solo JPG\/PNG.", - "MessageNothingHere": "Nada aqu\u00ed.", - "MessagePleaseEnsureInternetMetadata": "Por favor aseg\u00farese que la descarga de metadatos de internet esta habilitada.", - "TabSuggested": "Sugerencias", - "TabSuggestions": "Sugerencias", - "TabLatest": "Recientes", - "TabUpcoming": "Por Estrenar", - "TabShows": "Programas", - "TabEpisodes": "Episodios", - "TabGenres": "G\u00e9neros", - "TabPeople": "Personas", - "TabNetworks": "Cadenas", - "HeaderUsers": "Usuarios", - "HeaderFilters": "Filtros:", - "ButtonFilter": "Filtro", - "OptionFavorite": "Favoritos", - "OptionLikes": "Me gusta", - "OptionDislikes": "No me gusta", - "OptionActors": "Actores", - "OptionGuestStars": "Estrellas Invitadas", - "OptionDirectors": "Directores", - "OptionWriters": "Guionistas", - "OptionProducers": "Productores", - "HeaderResume": "Continuar", - "HeaderNextUp": "A Continuaci\u00f3n", - "NoNextUpItemsMessage": "No se encontr\u00f3 nada. \u00a1Comienza a ver tus programas!", - "HeaderLatestEpisodes": "Episodios Recientes", - "HeaderPersonTypes": "Tipos de Personas:", - "TabSongs": "Canciones", - "TabAlbums": "\u00c1lbumes", - "TabArtists": "Artistas", - "TabAlbumArtists": "Artistas del \u00c1lbum", - "TabMusicVideos": "Videos Musicales", - "ButtonSort": "Ordenar", - "HeaderSortBy": "Ordenar Por:", - "HeaderSortOrder": "Ordenado Por:", - "OptionPlayed": "Reproducido", - "OptionUnplayed": "No reproducido", - "OptionAscending": "Ascendente", - "OptionDescending": "Descendente", - "OptionRuntime": "Duraci\u00f3n", - "OptionReleaseDate": "Fecha de Liberaci\u00f3n", - "OptionPlayCount": "N\u00famero de Reproducc.", - "OptionDatePlayed": "Fecha de Reproducci\u00f3n", - "OptionDateAdded": "Fecha de Adici\u00f3n", - "OptionAlbumArtist": "Artista del \u00c1lbum", - "OptionArtist": "Artista", - "OptionAlbum": "\u00c1lbum", - "OptionTrackName": "Nombre de la Pista", - "OptionCommunityRating": "Calificaci\u00f3n de la Comunidad", - "OptionNameSort": "Nombre", - "OptionFolderSort": "Carpetas", - "OptionBudget": "Presupuesto", - "OptionRevenue": "Recaudaci\u00f3n", - "OptionPoster": "P\u00f3ster", - "OptionPosterCard": "Tarjeta de P\u00f3ster", - "OptionBackdrop": "Imagen de Fondo", - "OptionTimeline": "L\u00ednea de Tiempo", - "OptionThumb": "Miniatura", - "OptionThumbCard": "Tarjeta de Miniatura", - "OptionBanner": "Cart\u00e9l", - "OptionCriticRating": "Calificaci\u00f3n de la Cr\u00edtica", - "OptionVideoBitrate": "Tasa de bits de Video", - "OptionResumable": "Reanudable", - "ScheduledTasksHelp": "Haga clic en una tarea para ajustar su programaci\u00f3n.", - "ScheduledTasksTitle": "Tareas Programadas", - "TabMyPlugins": "Mis Complementos", - "TabCatalog": "Cat\u00e1logo", - "TitlePlugins": "Complementos", - "HeaderAutomaticUpdates": "Actualizaciones Autom\u00e1ticas", - "HeaderNowPlaying": "Reproduciendo Ahora", - "HeaderLatestAlbums": "\u00c1lbumes Recientes", - "HeaderLatestSongs": "Canciones Recientes", - "HeaderRecentlyPlayed": "Reproducido Recientemente", - "HeaderFrequentlyPlayed": "Reproducido Frecuentemente", - "DevBuildWarning": "Las compilaciones de Desarrollo son la punta de lanza. Se publican frecuentemente, estas compilaciones no se han probado. La aplicaci\u00f3n se puede bloquear y caracter\u00edsticas completas pueden no funcionar.", - "LabelVideoType": "Tipo de Video:", - "OptionBluray": "Bluray", - "OptionDvd": "DVD", - "OptionIso": "ISO", - "Option3D": "3D", - "LabelFeatures": "Caracter\u00edsticas:", - "LabelService": "Servicio:", - "LabelStatus": "Estado:", - "LabelVersion": "Versi\u00f3n:", - "LabelLastResult": "\u00daltimo resultado:", - "OptionHasSubtitles": "Subt\u00edtulos", - "OptionHasTrailer": "Avance", - "OptionHasThemeSong": "Canci\u00f3n del Tema", - "OptionHasThemeVideo": "Video del Tema", - "TabMovies": "Pel\u00edculas", - "TabStudios": "Estudios", - "TabTrailers": "Avances", - "LabelArtists": "Artistas:", - "LabelArtistsHelp": "Separar m\u00faltiples empleando:", - "HeaderLatestMovies": "Pel\u00edculas Recientes", - "HeaderLatestTrailers": "Avances Recientes", - "OptionHasSpecialFeatures": "Caracter\u00edsticas Especiales", - "OptionImdbRating": "Calificaci\u00f3n de IMDb", - "OptionParentalRating": "Clasificaci\u00f3n Parental", - "OptionPremiereDate": "Fecha de Estreno", - "TabBasic": "B\u00e1sico", - "TabAdvanced": "Avanzado", - "HeaderStatus": "Estado", - "OptionContinuing": "Continuando", - "OptionEnded": "Finalizado", - "HeaderAirDays": "D\u00edas de Emisi\u00f3n", - "OptionSunday": "Domingo", - "OptionMonday": "Lunes", - "OptionTuesday": "Martes", - "OptionWednesday": "Mi\u00e9rcoles", - "OptionThursday": "Jueves", - "OptionFriday": "Viernes", - "OptionSaturday": "S\u00e1bado", - "HeaderManagement": "Administraci\u00f3n", - "LabelManagement": "Administraci\u00f3n:", - "OptionMissingImdbId": "Falta Id de IMDb", - "OptionMissingTvdbId": "Falta Id de TheTVDB", - "OptionMissingOverview": "Falta Sinopsis", - "OptionFileMetadataYearMismatch": "No coincide el A\u00f1o del Archivo con los Metadatos", - "TabGeneral": "General", - "TitleSupport": "Soporte", - "TabLog": "Bit\u00e1cora", - "TabAbout": "Acerca de", - "TabSupporterKey": "Clave de Aficionado", - "TabBecomeSupporter": "Convertirse en Aficionado", - "ProjectHasCommunity": "Emby cuenta con una pr\u00f3spera comunidad de usuarios y colaboradores.", - "CheckoutKnowledgeBase": "Eche un vistazo a nuestra base de conocimiento para ayudarle a sacar el m\u00e1ximo provecho a Emby", - "SearchKnowledgeBase": "Buscar en la Base de Conocimiento", - "VisitTheCommunity": "Visitar la Comunidad", - "VisitProjectWebsite": "Visitar el Sitio Web de Emby", - "VisitProjectWebsiteLong": "Visite el sitio Web para conocer las ultimas noticias y mantenerse al d\u00eda con el blog de desarrolladores.", - "OptionHideUser": "Ocultar este usuario en las pantallas de inicio de sesi\u00f3n", - "OptionHideUserFromLoginHelp": "\u00datil para cuentas privadas o de administrador ocultas. El usuario tendr\u00e1 que iniciar sesi\u00f3n manualmente introduciendo su nombre de usuario y contrase\u00f1a.", - "OptionDisableUser": "Desactivar este usuario", - "OptionDisableUserHelp": "Si est\u00e1 desactivado, el servidor no aceptar\u00e1 conexiones de este usuario. Las conexiones existentes ser\u00e1n finalizadas abruptamente.", - "HeaderAdvancedControl": "Control Avanzado", - "LabelName": "Nombre:", - "ButtonHelp": "Ayuda", - "OptionAllowUserToManageServer": "Permitir a este usuario administrar el servidor", - "HeaderFeatureAccess": "Permisos de acceso", - "OptionAllowMediaPlayback": "Permitir reproducci\u00f3n de medios", - "OptionAllowBrowsingLiveTv": "Permitir acceso a TV en Vivo", - "OptionAllowDeleteLibraryContent": "Permitir eliminaci\u00f3n de medios", - "OptionAllowManageLiveTv": "Permitir gesti\u00f3n de grabaci\u00f3n de TV en Vivo", - "OptionAllowRemoteControlOthers": "Permitir control remoto de otros usuarios", - "OptionAllowRemoteSharedDevices": "Permitir control remoto de dispositivos compartidos", - "OptionAllowRemoteSharedDevicesHelp": "Los dispositivos dnla son considerados como compartidos hasta que alg\u00fan usuario comienza a controlarlo.", - "HeaderRemoteControl": "Control Remoto", - "OptionMissingTmdbId": "Falta Id de Tmdb", - "OptionIsHD": "HD", - "OptionIsSD": "SD", - "OptionMetascore": "Metascore", - "ButtonSelect": "Seleccionar", - "ButtonGroupVersions": "Agrupar Versiones", - "ButtonAddToCollection": "Agregar a Colecci\u00f3n", - "PismoMessage": "Utilizando Pismo File Mount a trav\u00e9s de una licencia donada.", - "TangibleSoftwareMessage": "Utilizando convertidores Java\/C# de Tangible Solutions por medio de una licencia donada.", - "HeaderCredits": "Cr\u00e9ditos", - "PleaseSupportOtherProduces": "Por favor apoye otros productos libres que utilizamos:", - "VersionNumber": "Versi\u00f3n {0}", - "TabPaths": "Rutas", - "TabServer": "Servidor", - "TabTranscoding": "Transcodificaci\u00f3n", - "TitleAdvanced": "Avanzado", - "LabelAutomaticUpdateLevel": "Nivel de actualizaci\u00f3n autom\u00e1tico", - "OptionRelease": "Versi\u00f3n Oficial", - "OptionBeta": "Beta", - "OptionDev": "Desarrollo (Inestable)", - "LabelAllowServerAutoRestart": "Permite al servidor reiniciar autom\u00e1ticamente para aplicar actualizaciones", - "LabelAllowServerAutoRestartHelp": "El servidor reiniciar\u00e1 \u00fanicamente durante periodos ociosos, cuando no haya usuarios activos.", - "LabelEnableDebugLogging": "Habilitar bit\u00e1coras de depuraci\u00f3n", - "LabelRunServerAtStartup": "Ejecutar el servidor al iniciar", - "LabelRunServerAtStartupHelp": "Esto iniciar\u00e1 el icono en el \u00e1rea de notificaci\u00f3n cuando windows arranque. Para iniciar el servicio de windows, desmarque esta opci\u00f3n y ejecute el servicio desde el panel de control de windows. Por favor tome en cuenta que no puede ejecutar ambos simult\u00e1neamente, por lo que deber\u00e1 finalizar el icono del \u00e1rea de notificaci\u00f3n antes de iniciar el servicio.", - "ButtonSelectDirectory": "Seleccionar Carpeta", - "LabelCustomPaths": "Especificar rutas personalizadas cuando se desee. Deje los campos vac\u00edos para usar los valores predeterminados.", - "LabelCachePath": "Ruta para el Cach\u00e9:", - "LabelCachePathHelp": "Especifique una ubicaci\u00f3n personalizada para los archivos de cach\u00e9 del servidor, tales como im\u00e1genes.", - "LabelImagesByNamePath": "Ruta para Im\u00e1genes por nombre:", - "LabelImagesByNamePathHelp": "Especifique una ubicaci\u00f3n personalizada para im\u00e1genes descargadas de actores, artistas, g\u00e9neros y estudios.", - "LabelMetadataPath": "Ruta para metadatos:", - "LabelMetadataPathHelp": "Especifique una ubicaci\u00f3n personalizada para ilustraciones descargadas y metadatos cuando no han sido configurados para almacenarse en carpetas de medios.", - "LabelTranscodingTempPath": "Ruta para transcodificaci\u00f3n temporal:", - "LabelTranscodingTempPathHelp": "Esta carpeta contiene archivos de trabajo usados por el transcodificador. Especifique una trayectoria personalizada, o d\u00e9jela vac\u00eda para utilizar su valor por omisi\u00f3n en la carpeta de datos del servidor.", - "TabBasics": "B\u00e1sicos", - "TabTV": "TV", - "TabGames": "Juegos", - "TabMusic": "M\u00fasica", - "TabOthers": "Otros", - "HeaderExtractChapterImagesFor": "Extraer im\u00e1genes de cap\u00edtulos para:", - "OptionMovies": "Pel\u00edculas", - "OptionEpisodes": "Episodios", - "OptionOtherVideos": "Otros Videos", - "TitleMetadata": "Metadatos", - "LabelAutomaticUpdates": "Habilitar actualizaciones autom\u00e1ticas", - "LabelAutomaticUpdatesTmdb": "Habilitar actualizaciones autom\u00e1ticas desde TheMovieDB.org", - "LabelAutomaticUpdatesTvdb": "Habilitar actualizaciones autom\u00e1ticas desde TheTVDB.com", - "LabelAutomaticUpdatesFanartHelp": "Al habilitarlo, se descargar\u00e1n autom\u00e1ticamente nuevas im\u00e1genes conforme son a\u00f1adidas a fanart.tv. Las Im\u00e1genes existentes no ser\u00e1n reemplazadas.", - "LabelAutomaticUpdatesTmdbHelp": "Al habilitarlo, se descargar\u00e1n autom\u00e1ticamente nuevas im\u00e1genes conforme son a\u00f1adidas a TheMovieDB.org. Las im\u00e1genes existentes no ser\u00e1n reemplazadas.", - "LabelAutomaticUpdatesTvdbHelp": "Al habilitarlo, se descargar\u00e1n autom\u00e1ticamente nuevas im\u00e1genes conforme son a\u00f1adidas a TheTVDB.com. Las im\u00e1genes existentes no ser\u00e1n reemplazadas.", - "LabelFanartApiKey": "Clave api personal:" + "HeaderWelcomeToEmby": "Bienvenidos a Emby", + "EmbyIntroMessage": "Con Emby usted puede transmitir videos, musica y fotos hacia su telefono inteligente, tabla u otros equipos desde su Servidor Emby.", + "ButtonSkip": "Omitir", + "TextConnectToServerManually": "Conectar al servidor manualmente", + "ButtonSignInWithConnect": "Inicie con su cuenta de Emby Connect", + "ButtonConnect": "Conectar", + "LabelServerHost": "Servidor:", + "LabelServerHostHelp": "192.168.1.100 O https:\/\/miservidor.com", + "LabelServerPort": "Puerto:", + "HeaderNewServer": "Nuevo Servidor", + "ButtonChangeServer": "Cambiar Servidor", + "HeaderConnectToServer": "Conectarse al servidor", + "OptionReportList": "Vista en Lista", + "OptionReportStatistics": "Estad\u00edsticas", + "OptionReportGrouping": "Agrupado", + "HeaderExport": "Exportar", + "HeaderColumns": "Columnas", + "ButtonReset": "Resetear", + "OptionEnableExternalVideoPlayers": "Habilitar reproductores externos de video", + "ButtonUnlockGuide": "Desbloquear Gu\u00eda", + "LabelEnableFullScreen": "Habilitar modo de pantalla completa", + "LabelEnableChromecastAc3Passthrough": "Habilitar transferencia directa de AC3 en Chromecast", + "LabelSyncPath": "Ruta para contenido sincronizado:", + "LabelEmail": "Email:", + "LabelUsername": "Nombre Usuario:", + "HeaderSignUp": "Registrarse", + "LabelPasswordConfirm": "Contrase\u00f1a (confirmar):", + "ButtonAddServer": "Agregar Servidor", + "TabHomeScreen": "Pantalla de Inicio", + "HeaderDisplay": "Pantalla", + "HeaderNavigation": "Navegaci\u00f3n", + "LegendTheseSettingsShared": "Estas configuraciones son compartidas en todos los dispositivos" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/es.json b/MediaBrowser.Server.Implementations/Localization/Server/es.json index a5ed15445..019e84b5d 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/es.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/es.json @@ -1,10 +1,344 @@ { - "TabWebClient": "Cliente web", + "LabelExit": "Salir", + "LabelVisitCommunity": "Visitar la comunidad", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Est\u00e1ndar", + "LabelApiDocumentation": "Documentaci\u00f3n API", + "LabelDeveloperResources": "Recursos del Desarrollador", + "LabelBrowseLibrary": "Navegar biblioteca", + "LabelConfigureServer": "Configurar Emby", + "LabelOpenLibraryViewer": "Abrir el visor de la biblioteca", + "LabelRestartServer": "Reiniciar el servidor", + "LabelShowLogWindow": "Mostrar la ventana del log", + "LabelPrevious": "Anterior", + "LabelFinish": "Terminar", + "FolderTypeMixed": "Mixed content", + "LabelNext": "Siguiente", + "LabelYoureDone": "Ha Terminado!", + "WelcomeToProject": "Bienvenidos a Emby!", + "ThisWizardWillGuideYou": "Este asistente lo guiar\u00e1 por el proceso de instalaci\u00f3n. Para comenzar, seleccione su idioma preferido.", + "TellUsAboutYourself": "D\u00edganos acerca de usted", + "ButtonQuickStartGuide": "Gu\u00eda de inicio r\u00e1pido", + "LabelYourFirstName": "Su primer nombre:", + "MoreUsersCanBeAddedLater": "M\u00e1s usuarios pueden agregarse m\u00e1s tarde en el panel de control.", + "UserProfilesIntro": "Emby incluye soporte interno para perfiles de usuarios, permitiendo que cada usuario tenga sus propios ajustes, estado de reproducci\u00f3n y control parental.", + "LabelWindowsService": "Servicio de Windows", + "AWindowsServiceHasBeenInstalled": "Un servicio de Windows se ha instalado", + "WindowsServiceIntro1": "El Servidor Emby normalmente se inicia como una aplicacion con un icono en la bandeja, pero si usted prefiere que inicie como un servicio de fondo, entonces puede ser iniciado desde los servicios de Windows en el panel de control.", + "WindowsServiceIntro2": "Si se utiliza el servicio de Windows, tenga en cuenta que no se puede ejecutar al mismo tiempo que el icono de la bandeja, por lo que tendr\u00e1 que salir de la bandeja con el fin de ejecutar el servicio. Tambi\u00e9n tendr\u00e1 que ser configurado con privilegios administrativos a trav\u00e9s del panel de control del servicio. Tenga en cuenta que en este momento el servicio no es capaz de auto-actualizaci\u00f3n, por lo que las nuevas versiones requieren la interacci\u00f3n manual.", + "WizardCompleted": "Eso es todo lo que necesitamos por ahora. Emby a iniciado la colecci\u00f3n de su biblioteca digital. Vea algunos de nuestras aplicaciones, y despu\u00e9s haga clic <b>Finalizar<\/b>para ver el <b>Panel de Servidor<\/b>.", + "LabelConfigureSettings": "Configuraci\u00f3n de opciones", + "LabelEnableVideoImageExtraction": "Habilitar extracci\u00f3n de im\u00e1genes de video", + "VideoImageExtractionHelp": "Para los v\u00eddeos que no dispongan de im\u00e1genes y que no podemos encontrar en Internet. Esto agregar\u00e1 un tiempo adicional para la exploraci\u00f3n inicial de bibliotecas, pero resultar\u00e1 en una presentaci\u00f3n m\u00e1s agradable.", + "LabelEnableChapterImageExtractionForMovies": "Extraer im\u00e1genes de cap\u00edtulos para pel\u00edculas", + "LabelChapterImageExtractionForMoviesHelp": "Extraer imagenes de capitulos permitir\u00e1 a los usuarios ver escenas gr\u00e1ficas en la seleccion de men\u00fa. El proceso puede ser lento, cpu-intenso y puede requerir algunos gigabytes de espacio.", + "LabelEnableAutomaticPortMapping": "Habilitar asignaci\u00f3n de puertos autom\u00e1tico", + "LabelEnableAutomaticPortMappingHelp": "UPnP permite la configuraci\u00f3n del router para acceso externo de forma f\u00e1cil y autom\u00e1tica. Esto puede no funcionar en algunos modelos de routers.", + "HeaderTermsOfService": "T\u00e9rminos de servicios de Emby", + "MessagePleaseAcceptTermsOfService": "Por favor aceptar los terminos de servicios y politica de privacidad antes de continuar.", + "OptionIAcceptTermsOfService": "Acepto los terminos de servicio", + "ButtonPrivacyPolicy": "Politica de privacidad", + "ButtonTermsOfService": "Terminos de servicios", + "HeaderDeveloperOptions": "Recursos del Desarrollador", + "OptionEnableWebClientResponseCache": "Habilitar almacenamiento de cach\u00e9 de respuestas del cliente web.", + "OptionDisableForDevelopmentHelp": "Configure cuantas veces sea nesesario para propositos del desarrollo de cliente de la red.", + "OptionEnableWebClientResourceMinification": "Habilitar minificaci\u00f3n de recursos para la aplicacion en linea", + "LabelDashboardSourcePath": "Localizaci\u00f3n de la fuente del cliente web:", + "LabelDashboardSourcePathHelp": "Si est\u00e1 ejecutando el servidor desde la fuente, especifique la ruta de acceso a la carpeta dashboard-ui. Todos los archivos del cliente web ser\u00e1n atendidos desde esta ruta.", + "ButtonConvertMedia": "Convertir medios", + "ButtonOrganize": "Organizar", + "LinkedToEmbyConnect": "Vincular a Emby Connect", + "HeaderSupporterBenefits": "Beneficios del partidario", + "HeaderAddUser": "Agregar Usuario", + "LabelAddConnectSupporterHelp": "Para agregar a un usuario que no est\u00e1 en el listado, usted tiene primero que conectar su cuenta con Emby Connect desde la p\u00e1gina de perfil del usuario.", + "LabelPinCode": "C\u00f3digo PIN:", + "OptionHideWatchedContentFromLatestMedia": "Esconder medios vistos de los medios m\u00e1s recientes", + "HeaderSync": "Sincronizar", + "ButtonOk": "OK", + "ButtonCancel": "Cancelar", + "ButtonExit": "Salir", + "ButtonNew": "Nuevo", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Ruta", + "CategorySync": "Sincronizar", + "TabPlaylist": "Lista de reproducci\u00f3n", + "HeaderEasyPinCode": "F\u00e1cil c\u00f3digo PIN:", + "HeaderGrownupsOnly": "Adultos solamente!", + "DividerOr": "-- y --", + "HeaderInstalledServices": "Servicios Instalados", + "HeaderAvailableServices": "Servicios Disponibles", + "MessageNoServicesInstalled": "No hay servicios instalados.", + "HeaderToAccessPleaseEnterEasyPinCode": "Para acceder, por favor introduzca su f\u00e1cil c\u00f3digo PIN.", + "KidsModeAdultInstruction": "Haga clic en el icono en la parte de abajo derecha para configurar o salir del modo de menores. Su codigo PIN es requerido.", + "ButtonConfigurePinCode": "Configurar contrase\u00f1a", + "HeaderAdultsReadHere": "Adultos Leer Aqui!", + "RegisterWithPayPal": "Registrese con PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync requiere membres\u00eda de partidario", + "HeaderEnjoyDayTrial": "Disfrute 14 Dias Gratis de Prueba", + "LabelSyncTempPath": "Localizaci\u00f3n del archivo temporal:", + "LabelSyncTempPathHelp": "Especificar una carpeta personalizada para achivos en sincronizaci\u00f3n. Medios convertidos creados durante el proceso de sincronizaci\u00f3n ser\u00e1n guardados aqu\u00ed.", + "LabelCustomCertificatePath": "Lugar del certificado personalizado:", + "LabelCustomCertificatePathHelp": "Aplique su propio certificado ssl or archivo .pfx. Si lo omite el servidor crear\u00e1 un certificado auto-registrador.", + "TitleNotifications": "Notificaciones", + "ButtonDonateWithPayPal": "Done usando Paypal", + "OptionDetectArchiveFilesAsMedia": "Detectar archivos come medios", + "OptionDetectArchiveFilesAsMediaHelp": "Si es habilitado, archivos con extensiones .rar y .zip ser\u00e1n detectados como medios.", + "LabelEnterConnectUserName": "Nombre de usuario o email:", + "LabelEnterConnectUserNameHelp": "Este es su nombre de usuario y contrase\u00f1a para la cuenta de Emby en linea.", + "LabelEnableEnhancedMovies": "Habilite presentaciones de peliculas mejoradas", + "LabelEnableEnhancedMoviesHelp": "Cuando est\u00e9 habilitado, las peliculas seran mostradas como folderes para incluir trailers, extras, elenco y equipo, y otros contenidos relacionados.", + "HeaderSyncJobInfo": "Trabajo de Sync", + "FolderTypeMovies": "Peliculas", + "FolderTypeMusic": "Musica", + "FolderTypeAdultVideos": "Videos para adultos", + "FolderTypePhotos": "Fotos", + "FolderTypeMusicVideos": "Videos Musicales", + "FolderTypeHomeVideos": "Videos caseros", + "FolderTypeGames": "Juegos", + "FolderTypeBooks": "Libros", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Heredado ", + "LabelContentType": "Tipo de contenido:", + "TitleScheduledTasks": "Programar una tarea", + "HeaderSetupLibrary": "Configurar biblioteca de medios", + "ButtonAddMediaFolder": "Agregar una carpeta de medios", + "LabelFolderType": "Tipo de carpeta:", + "ReferToMediaLibraryWiki": "Consultar el wiki de la biblioteca de medios", + "LabelCountry": "Pa\u00eds:", + "LabelLanguage": "Idioma:", + "LabelTimeLimitHours": "Limite de tiempo (horas):", + "ButtonJoinTheDevelopmentTeam": "Unace al equipo de desarrolladores", + "HeaderPreferredMetadataLanguage": "Idioma preferido para metadata", + "LabelSaveLocalMetadata": "Guardar im\u00e1genes y metadata en las carpetas de medios", + "LabelSaveLocalMetadataHelp": "Guardar im\u00e1genes y metadata directamente en las carpetas de medios, permitir\u00e1 colocarlas en un lugar donde se pueden editar f\u00e1cilmente.", + "LabelDownloadInternetMetadata": "Descargar imagenes y metadata de internet", + "LabelDownloadInternetMetadataHelp": "El Servidor Emby puede bajar informaci\u00f3n acerca de sus medios para habilitar los contenidos de alta calidad.", + "TabPreferences": "Preferencias", + "TabPassword": "Contrase\u00f1a", + "TabLibraryAccess": "Acceso a biblioteca", + "TabAccess": "Acceso", + "TabImage": "imagen", + "TabProfile": "Perfil", + "TabMetadata": "Metadatos", + "TabImages": "Im\u00e1genes", + "TabNotifications": "Notificaciones", + "TabCollectionTitles": "T\u00edtulos", + "HeaderDeviceAccess": "Acceso de Equipo", + "OptionEnableAccessFromAllDevices": "Habilitar acceso de cualquier equipo", + "OptionEnableAccessToAllChannels": "Habilitar acceso a todos los canales", + "OptionEnableAccessToAllLibraries": "Habilitar acceso a todas las bibliotecas", + "DeviceAccessHelp": "Esto solo aplica a equipos que puedan ser singularmente identificados y no prevendr\u00e1 acceso al navegador. Filtrar el acceso de equipos del usuario les prevendr\u00e1 que usen nuevos equipos hasta que sean aprobados aqui.", + "LabelDisplayMissingEpisodesWithinSeasons": "Mostar episodios no disponibles en temporadas", + "LabelUnairedMissingEpisodesWithinSeasons": "Mostrar episodios a\u00fan no emitidos en temporadas", + "HeaderVideoPlaybackSettings": "Ajustes de Reproducci\u00f3n de Video", + "HeaderPlaybackSettings": "Ajustes de reproducci\u00f3n", + "LabelAudioLanguagePreference": "Preferencia de idioma de audio", + "LabelSubtitleLanguagePreference": "Preferencia de idioma de subtitulos", + "OptionDefaultSubtitles": "Por defecto", + "OptionOnlyForcedSubtitles": "S\u00f3lo subt\u00edtulos forzados", + "OptionAlwaysPlaySubtitles": "Mostrar siempre subt\u00edtulos", + "OptionNoSubtitles": "Sin subt\u00edtulos", + "OptionDefaultSubtitlesHelp": "Los subt\u00edtulos que concuerden con la preferencia de idioma se cargar\u00e1n cuando el audio est\u00e9 en un idioma extranjero.", + "OptionOnlyForcedSubtitlesHelp": "S\u00f3lo se cargar\u00e1n los subt\u00edtulos marcados como forzados.", + "OptionAlwaysPlaySubtitlesHelp": "Los subt\u00edtulos que concuerden con la preferencia de idioma se cargar\u00e1n independientemente del idioma de audio.", + "OptionNoSubtitlesHelp": "Los subt\u00edtulos no se cargar\u00e1n de forma predeterminada.", + "TabProfiles": "Perfiles", + "TabSecurity": "Seguridad", + "ButtonAddUser": "Agregar Usuario", + "ButtonAddLocalUser": "Agregar usuario local", + "ButtonInviteUser": "Invitar usuario", + "ButtonSave": "Grabar", + "ButtonResetPassword": "Reiniciar Contrase\u00f1a", + "LabelNewPassword": "Nueva Contrase\u00f1a:", + "LabelNewPasswordConfirm": "Confirmaci\u00f3n de contrase\u00f1a nueva:", + "HeaderCreatePassword": "Crear Contrase\u00f1a", + "LabelCurrentPassword": "Contrase\u00f1a actual", + "LabelMaxParentalRating": "M\u00e1xima clasificaci\u00f3n permitida", + "MaxParentalRatingHelp": "El contenido con clasificaci\u00f3n parental superior se ocultar\u00e1 para este usuario.", + "LibraryAccessHelp": "Seleccione las carpetas de medios para compartir con este usuario. Los administradores podr\u00e1n editar todas las carpetas usando el gestor de metadata.", + "ChannelAccessHelp": "Seleccione los canales para compartir con este usuario. Los administradores podr\u00e1n editar todos los canales mediante el gestor de metadatos.", + "ButtonDeleteImage": "Borrar imagen", + "LabelSelectUsers": "Seleccionar usuarios:", + "ButtonUpload": "Subir", + "HeaderUploadNewImage": "Subir nueva imagen", + "LabelDropImageHere": "Poner imagen aqui", + "ImageUploadAspectRatioHelp": "Se Recomienda una Proporci\u00f3n de Aspecto 1:1. Solo JPG\/PNG", + "MessageNothingHere": "Nada aqu\u00ed.", + "MessagePleaseEnsureInternetMetadata": "Por favor aseg\u00farese que la descarga de metadata de internet esta habilitada", + "TabSuggested": "Sugerencia", + "TabSuggestions": "Sugerencias", + "TabLatest": "Novedades", + "TabUpcoming": "Pr\u00f3ximos", + "TabShows": "Programas", + "TabEpisodes": "Episodios", + "TabGenres": "G\u00e9neros", + "TabPeople": "Gente", + "TabNetworks": "redes", + "HeaderUsers": "Usuarios", + "HeaderFilters": "Filtros:", + "ButtonFilter": "Filtro", + "OptionFavorite": "Favoritos", + "OptionLikes": "Me gusta", + "OptionDislikes": "No me gusta", + "OptionActors": "Actores", + "OptionGuestStars": "Estrellas invitadas", + "OptionDirectors": "Directores", + "OptionWriters": "Guionistas", + "OptionProducers": "Productores", + "HeaderResume": "Continuar", + "HeaderNextUp": "Siguiendo", + "NoNextUpItemsMessage": "Nada encontrado. \u00a1Comienza a ver tus programas!", + "HeaderLatestEpisodes": "Ultimos episodios", + "HeaderPersonTypes": "Tipos de personas:", + "TabSongs": "Canciones", + "TabAlbums": "\u00c1lbumes", + "TabArtists": "Artistas", + "TabAlbumArtists": "Album Artistas", + "TabMusicVideos": "Videos Musicales", + "ButtonSort": "Ordenar", + "HeaderSortBy": "Ordenar por:", + "HeaderSortOrder": "Ordenado por:", + "OptionPlayed": "Reproducido", + "OptionUnplayed": "No reproducido", + "OptionAscending": "Ascendente", + "OptionDescending": "Descendente", + "OptionRuntime": "Tiempo", + "OptionReleaseDate": "Fecha de Lanzamiento", + "OptionPlayCount": "N\u00famero de reproducc.", + "OptionDatePlayed": "Fecha de reproducci\u00f3n", + "OptionDateAdded": "A\u00f1adido el", + "OptionAlbumArtist": "Album Artista", + "OptionArtist": "Artista", + "OptionAlbum": "\u00c1lbum", + "OptionTrackName": "Nombre de pista", + "OptionCommunityRating": "Valoraci\u00f3n comunidad", + "OptionNameSort": "Nombre", + "OptionFolderSort": "Carpetas", + "OptionBudget": "Presupuesto", + "OptionRevenue": "Recaudaci\u00f3n", + "OptionPoster": "Poster", + "OptionPosterCard": "Cartel", + "OptionBackdrop": "Imagen de fondo", + "OptionTimeline": "L\u00ednea de tiempo", + "OptionThumb": "Miniatura", + "OptionThumbCard": "Cartel postal", + "OptionBanner": "Banner", + "OptionCriticRating": "Valoraci\u00f3n cr\u00edtica", + "OptionVideoBitrate": "Video Bitrate", + "OptionResumable": "Se puede continuar", + "ScheduledTasksHelp": "Click en una tarea para ajustar su programaci\u00f3n", + "ScheduledTasksTitle": "Programar tarea", + "TabMyPlugins": "Mis Plugins", + "TabCatalog": "Cat\u00e1logo", + "TitlePlugins": "Complementos", + "HeaderAutomaticUpdates": "Actualizaciones autom\u00e1ticas", + "HeaderNowPlaying": "Reproduciendo ahora", + "HeaderLatestAlbums": "\u00dcltimos Albums", + "HeaderLatestSongs": "\u00daltimas canciones", + "HeaderRecentlyPlayed": "Reproducido recientemente", + "HeaderFrequentlyPlayed": "Reproducido frequentemente", + "DevBuildWarning": "Las actualizaciones en desarrollo no est\u00e1n convenientemente probadas. La aplicaci\u00f3n se puede bloquear y caracter\u00edsticas completas pueden no funcionar del todo.", + "LabelVideoType": "Tipo de video", + "OptionBluray": "Bluray", + "OptionDvd": "Dvd", + "OptionIso": "Iso", + "Option3D": "3D", + "LabelFeatures": "Caracter\u00edsticas", + "LabelService": "Servicio:", + "LabelStatus": "Estado:", + "LabelVersion": "Versi\u00f3n:", + "LabelLastResult": "\u00daltimo resultado:", + "OptionHasSubtitles": "Subt\u00edtulos", + "OptionHasTrailer": "Trailer", + "OptionHasThemeSong": "Banda sonora", + "OptionHasThemeVideo": "Viideotema", + "TabMovies": "Pel\u00edculas", + "TabStudios": "Estudios", + "TabTrailers": "Trailers", + "LabelArtists": "Artistas:", + "LabelArtistsHelp": "Separar multiples usando ;", + "HeaderLatestMovies": "\u00daltimas pel\u00edculas", + "HeaderLatestTrailers": "\u00daltimos trailers", + "OptionHasSpecialFeatures": "Caracter\u00edsticas especiales", + "OptionImdbRating": "Valoraci\u00f3n IMDb", + "OptionParentalRating": "Clasificaci\u00f3n parental", + "OptionPremiereDate": "Fecha de estreno", + "TabBasic": "B\u00e1sico", + "TabAdvanced": "Avanzado", + "HeaderStatus": "Estado", + "OptionContinuing": "Continuando", + "OptionEnded": "Finalizado", + "HeaderAirDays": "Dias al aire", + "OptionSunday": "Domingo", + "OptionMonday": "Lunes", + "OptionTuesday": "Martes", + "OptionWednesday": "Mi\u00e9rcoles", + "OptionThursday": "Jueves", + "OptionFriday": "Viernes", + "OptionSaturday": "S\u00e1bado", + "HeaderManagement": "administraci\u00f3n", + "LabelManagement": "administraci\u00f3n:", + "OptionMissingImdbId": "Falta IMDb Id", + "OptionMissingTvdbId": "Falta TheTVDB Id", + "OptionMissingOverview": "Falta argumento", + "OptionFileMetadataYearMismatch": "Archivo\/Metadata a\u00f1os no coinciden", + "TabGeneral": "General", + "TitleSupport": "Soporte", + "LabelSeasonNumber": "Season number", + "TabLog": "Log", + "LabelEpisodeNumber": "Episode number", + "TabAbout": "Acerca de", + "TabSupporterKey": "Clave de Seguidor", + "TabBecomeSupporter": "Hazte Seguidor", + "ProjectHasCommunity": "Emby tiene una pr\u00f3spera comunidad de usuarios y contribuidores.", + "CheckoutKnowledgeBase": "Vea nuestra base de conocimientos que le ayudar\u00e1 a obtener lo mejor de Emby.", + "SearchKnowledgeBase": "Buscar en la base de conocimiento", + "VisitTheCommunity": "Visitar la comunidad", + "VisitProjectWebsite": "Visite la pagina de Emby", + "VisitProjectWebsiteLong": "Visite la p\u00e1gina Emby para obtener lo m\u00e1s reciente y mantenerse al d\u00eda con el blog de desarrolladores.", + "OptionHideUser": "Ocultar este usuario en las pantallas de inicio de sesi\u00f3n", + "OptionHideUserFromLoginHelp": "\u00datil para privado o cuentas de administradores escondidos. El usuario tendr\u00e1 que acceder entrando su nombre de usuario y contrase\u00f1a manualmente.", + "OptionDisableUser": "Deshabilitar este usuario", + "OptionDisableUserHelp": "Si est\u00e1 deshabilitado, el servidor no aceptar\u00e1 conexiones de este usuario. Si existen conexiones de este usuario, finalizar\u00e1n inmediatamente.", + "HeaderAdvancedControl": "Control avanzado", + "LabelName": "Nombre:", + "ButtonHelp": "Ayuda", + "OptionAllowUserToManageServer": "Permite a este usuario administrar el servidor", + "HeaderFeatureAccess": "Permisos de acceso", + "OptionAllowMediaPlayback": "Permitir la reproducci\u00f3n de medios", + "OptionAllowBrowsingLiveTv": "Permitir acceso a la TV en vivo", + "OptionAllowDeleteLibraryContent": "Permitir la supresi\u00f3n de medios", + "OptionAllowManageLiveTv": "Habilitar la administraci\u00f3n de grabaci\u00f3n de TV en vivo", + "OptionAllowRemoteControlOthers": "Habilitar el control remote de otros usuarios", + "OptionAllowRemoteSharedDevices": "Habilitar el control remote de otros equipos compartidos", + "OptionAllowRemoteSharedDevicesHelp": "Los equipos DLNA son considerados compartidos hasta que un usuario empiece a controlarlo.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", + "HeaderRemoteControl": "Control Remoto", + "OptionMissingTmdbId": "Falta Tmdb Id", + "OptionIsHD": "HD", + "OptionIsSD": "SD", + "OptionMetascore": "Metavalor", + "ButtonSelect": "Seleccionar", + "ButtonGroupVersions": "Versiones de Grupo", + "ButtonAddToCollection": "Agregar a la colecci\u00f3n", + "PismoMessage": "Usando Pismo File Mount a trav\u00e9s de una licencia donada.", + "TangibleSoftwareMessage": "Utilizamos convertidores Java\/C# de Tangible Solutions a trav\u00e9s de una licencia donada.", + "HeaderCredits": "Cr\u00e9ditos", + "PleaseSupportOtherProduces": "Por favor apoye otros productos gratuitos que utilizamos:", + "VersionNumber": "Versi\u00f3n {0}", + "TabPaths": "Ruta", + "TabServer": "Servidor", + "TabTranscoding": "Transcodificaci\u00f3n", "TitleAdvanced": "Avanzado", "LabelAutomaticUpdateLevel": "Actualizaci\u00f3n de nivel autom\u00e1tica", "OptionRelease": "Release Oficial", "OptionBeta": "Beta", - "OptionDev": "Dev (Unstable)", + "OptionDev": "Desarrollo (inestable)", "LabelAllowServerAutoRestart": "Permitir al servidor reiniciarse autom\u00e1ticamente para aplicar las actualizaciones", "LabelAllowServerAutoRestartHelp": "El servidor s\u00f3lo se reiniciar\u00e1 durante periodos de reposo, cuando no hayan usuarios activos.", "LabelEnableDebugLogging": "Habilitar entrada de debug", @@ -13,13 +347,13 @@ "ButtonSelectDirectory": "Seleccionar directorio", "LabelCustomPaths": "Especificar las rutas personalizadas que desee. D\u00e9jelo en blanco para usar las rutas por defecto.", "LabelCachePath": "Ruta del cach\u00e9:", - "LabelCachePathHelp": "Specify a custom location for server cache files, such as images.", + "LabelCachePathHelp": "Especifique una localizaci\u00f3n personalizada para los archivos de cache para el servidor, como imagenes.", "LabelImagesByNamePath": "Ruta de im\u00e1genes:", - "LabelImagesByNamePathHelp": "Specify a custom location for downloaded actor, genre and studio images.", + "LabelImagesByNamePathHelp": "Especifique una localizaci\u00f3n personalizada para bajar imagenes de actor, genero y estudio.", "LabelMetadataPath": "Ruta de Metadata:", - "LabelMetadataPathHelp": "Specify a custom location for downloaded artwork and metadata, if not saving within media folders.", + "LabelMetadataPathHelp": "Especifique una localizaci\u00f3n personalizada para bajar imagenes y metadatos, si no son guardadas dentro de las carpetas de los medios.", "LabelTranscodingTempPath": "Ruta temporal de transcodificaci\u00f3n:", - "LabelTranscodingTempPathHelp": "This folder contains working files used by the transcoder. Specify a custom path, or leave empty to use the default within the server's data folder.", + "LabelTranscodingTempPathHelp": "Esta carpeta contiene achivos en uso por el transcodificador. Especificar una ruta personalizada, o dejarla vac\u00eda para usar la ruta predeterminada en la carpeta de datos del servidor.", "TabBasics": "Basicos", "TabTV": "TV", "TabGames": "Juegos", @@ -29,28 +363,28 @@ "OptionMovies": "Pel\u00edculas", "OptionEpisodes": "Episodios", "OptionOtherVideos": "Otros v\u00eddeos", - "TitleMetadata": "Metadata", - "LabelAutomaticUpdates": "Enable automatic updates", + "TitleMetadata": "Metadatos", + "LabelAutomaticUpdates": "Habilite actualizaciones automaticas", "LabelAutomaticUpdatesTmdb": "Activar actualizaciones autom\u00e1ticas desde TheMovieDB.org", "LabelAutomaticUpdatesTvdb": "Activar actualizaciones autom\u00e1ticas desde TheTVDB.com", "LabelAutomaticUpdatesFanartHelp": "Si est\u00e1 activado, las nuevas im\u00e1genes se descargan autom\u00e1ticamente a medida que se a\u00f1aden a fanart.tv. Im\u00e1genes existentes no ser\u00e1n reemplazadas.", "LabelAutomaticUpdatesTmdbHelp": "Si est\u00e1 activado, las nuevas im\u00e1genes se descargan autom\u00e1ticamente a medida que se a\u00f1aden a TheMovieDB.org. Im\u00e1genes existentes no ser\u00e1n reemplazados.", "LabelAutomaticUpdatesTvdbHelp": "Si est\u00e1 activado, las nuevas im\u00e1genes se descargan autom\u00e1ticamente a medida que se a\u00f1aden a TheTVDB.com. Im\u00e1genes existentes no ser\u00e1n reemplazados.", - "LabelFanartApiKey": "Personal api key:", + "LabelFanartApiKey": "Clave personal de API:", "LabelFanartApiKeyHelp": "Requests to fanart without a personal API key return results that were approved over 7 days ago. With a personal API key that drops to 48 hours and if you are also a fanart VIP member that will further drop to around 10 minutes.", "ExtractChapterImagesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs when videos are discovered, and also as a nightly scheduled task. The schedule is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelMetadataDownloadLanguage": "Preferred download language:", + "LabelMetadataDownloadLanguage": "Idioma preferido visualizado", "ButtonAutoScroll": "Auto-desplazamiento", "LabelImageSavingConvention": "Sistema de guardado de im\u00e1genes:", - "LabelImageSavingConventionHelp": "Emby recognizes images from most major media applications. Choosing your downloading convention is useful if you also use other products.", + "LabelImageSavingConventionHelp": "Emby reconoce im\u00e1genes de la mayor\u00eda de las principales aplicaciones de medios. Seleccionar su convenci\u00f3n de descarga es \u00fatil si tambi\u00e9n usa otros productos.", "OptionImageSavingCompatible": "Compatible - Emby\/Kodi\/Plex", - "OptionImageSavingStandard": "Standard - MB2", + "OptionImageSavingStandard": "Est\u00e1ndar - MB2", "ButtonSignIn": "Registrarse", "TitleSignIn": "Registrarse", "HeaderPleaseSignIn": "Por favor reg\u00edstrese", "LabelUser": "Usuario:", "LabelPassword": "Contrase\u00f1a:", - "ButtonManualLogin": "Manual Login", + "ButtonManualLogin": "Acceder manualmente", "PasswordLocalhostMessage": "No se necesitan contrase\u00f1as al iniciar sesi\u00f3n desde localhost.", "TabGuide": "Gu\u00eda", "TabChannels": "Canales", @@ -73,12 +407,12 @@ "TabSettings": "Opciones", "ButtonRefreshGuideData": "Actualizar datos de la gu\u00eda", "ButtonRefresh": "Refrescar", - "ButtonAdvancedRefresh": "Advanced Refresh", + "ButtonAdvancedRefresh": "Actualizar Manualmente", "OptionPriority": "Prioridad", "OptionRecordOnAllChannels": "Grabar en cualquier canal", "OptionRecordAnytime": "Grabar a cualquier hora", "OptionRecordOnlyNewEpisodes": "Grabar s\u00f3lo nuevos episodios", - "HeaderRepeatingOptions": "Repeating Options", + "HeaderRepeatingOptions": "Opciones Repetitivas", "HeaderDays": "D\u00edas", "HeaderActiveRecordings": "Grabaciones activas", "HeaderLatestRecordings": "\u00daltimas grabaciones", @@ -94,7 +428,7 @@ "LabelNumberOfGuideDays": "N\u00famero de d\u00edas de descarga de la gu\u00eda.", "LabelNumberOfGuideDaysHelp": "Descargar m\u00e1s d\u00edas de la gu\u00eda ofrece la posibilidad de programar grabaciones con mayor antelaci\u00f3n y ver m\u00e1s listas, pero tambi\u00e9n tarda m\u00e1s en descargarse. Auto elegir\u00e1 en funci\u00f3n del n\u00famero de canales.", "OptionAutomatic": "Auto", - "HeaderServices": "Services", + "HeaderServices": "Servicios", "LiveTvPluginRequired": "El servicio de TV en vivo es necesario para poder continuar.", "LiveTvPluginRequiredHelp": "Instale uno de los plugins disponibles, como Next Pvr o ServerVmc.", "LabelCustomizeOptionsPerMediaType": "Personalizar por tipo de medio:", @@ -114,7 +448,7 @@ "LabelMaxScreenshotsPerItem": "M\u00e1ximo n\u00famero de capturas de pantalla por \u00edtem:", "LabelMinBackdropDownloadWidth": "Anchura m\u00ednima de descarga de im\u00e1genes de fondo:", "LabelMinScreenshotDownloadWidth": "Anchura m\u00ednima de descarga de capturas de pantalla:", - "ButtonAddScheduledTaskTrigger": "Add Trigger", + "ButtonAddScheduledTaskTrigger": "Agregar Activador", "HeaderAddScheduledTaskTrigger": "Agregar Activador", "ButtonAdd": "A\u00f1adir", "LabelTriggerType": "Tipo de evento:", @@ -187,15 +521,15 @@ "EditCollectionItemsHelp": "Agregar o quitar pel\u00edculas, series, discos, libros o juegos que desee agrupar dentro de esta colecci\u00f3n.", "HeaderAddTitles": "A\u00f1adir T\u00edtulos", "LabelEnableDlnaPlayTo": "Actvar la reproducci\u00f3n en DLNAi", - "LabelEnableDlnaPlayToHelp": "Emby can detect devices within your network and offer the ability to remote control them.", + "LabelEnableDlnaPlayToHelp": "Emby puede detectar equipos dentro de su red y puede ofrecer la habilidad de controlarlos remotamente.", "LabelEnableDlnaDebugLogging": "Activar el registro de depuraci\u00f3n de DLNA", "LabelEnableDlnaDebugLoggingHelp": "Esto crear\u00e1 archivos de registro de gran tama\u00f1o y s\u00f3lo debe ser utilizado cuando sea necesario para solucionar problemas.", "LabelEnableDlnaClientDiscoveryInterval": "Intervalo de detecci\u00f3n de cliente (segundos)", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determines the duration in seconds between SSDP searches performed by Emby.", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determina la duraci\u00f3n in segundos entre la b\u00fasqueda SSDP hechas por Emby.", "HeaderCustomDlnaProfiles": "Perfiles personalizados", "HeaderSystemDlnaProfiles": "Perfiles del sistema", "CustomDlnaProfilesHelp": "Crear un perfil personalizado para un nuevo dispositivo o reemplazar un perfil del sistema.", - "SystemDlnaProfilesHelp": "System profiles are read-only. Changes to a system profile will be saved to a new custom profile.", + "SystemDlnaProfilesHelp": "El perfil del Sistema es solo lectura. Cambios al perfil del sistema seran guardados en un perfil nuevo modificado.", "TitleDashboard": "Panel de control", "TabHome": "Inicio", "TabInfo": "Info", @@ -203,33 +537,33 @@ "HeaderSystemPaths": "Rutas del sistema", "LinkCommunity": "Comunidad", "LinkGithub": "Github", - "LinkApi": "Api", + "LinkApi": "API", "LinkApiDocumentation": "Documentaci\u00f3n API", "LabelFriendlyServerName": "Nombre informal del servidor:", "LabelFriendlyServerNameHelp": "Este nombre se podr\u00e1 utilizar para identificar este servidor. Si se deja en blanco se usar\u00e1 el nombre del ordenador.", - "LabelPreferredDisplayLanguage": "Preferred display language:", - "LabelPreferredDisplayLanguageHelp": "Translating Emby is an ongoing project and is not yet complete.", + "LabelPreferredDisplayLanguage": "Idioma preferido visualizado", + "LabelPreferredDisplayLanguageHelp": "Traducir Emby es un proyecto continuo que no ha sido completado.", "LabelReadHowYouCanContribute": "Lea acerca de c\u00f3mo usted puede contribuir.", "HeaderNewCollection": "Nueva colecci\u00f3n", "ButtonSubmit": "Enviar", "ButtonCreate": "Crear", - "LabelCustomCss": "Custom css:", - "LabelCustomCssHelp": "Apply your own custom css to the web interface.", - "LabelLocalHttpServerPortNumber": "Local http port number:", - "LabelLocalHttpServerPortNumberHelp": "The tcp port number that Emby's http server should bind to.", - "LabelPublicHttpPort": "Public http port number:", - "LabelPublicHttpPortHelp": "The public port number that should be mapped to the local http port.", - "LabelPublicHttpsPort": "Public https port number:", - "LabelPublicHttpsPortHelp": "The public port number that should be mapped to the local https port.", - "LabelEnableHttps": "Report https as external address", - "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", - "LabelHttpsPort": "Local https port number:", - "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", + "LabelCustomCss": "css modificado:", + "LabelCustomCssHelp": "Aplique su propio css modificado a la interfaz de la web.", + "LabelLocalHttpServerPortNumber": "Numero local de puerto de http:", + "LabelLocalHttpServerPortNumberHelp": "N\u00famero de puerto al que el servidor de http de Emby debe de ser enlazado.", + "LabelPublicHttpPort": "N\u00famero de puerto p\u00fablico de http:", + "LabelPublicHttpPortHelp": "El n\u00famero de puerto p\u00fablico que debe ser enlazado al puerto local http:", + "LabelPublicHttpsPort": "N\u00famero de puerto p\u00fablico de https:", + "LabelPublicHttpsPortHelp": "El n\u00famero de puerto p\u00fablico que debe ser enlazado al puerto local https:", + "LabelEnableHttps": "Reportar el https como una direccion externa", + "LabelEnableHttpsHelp": "Si es habilitado, el servidor reportara un enlaze https a los clientes como una direccion externa.", + "LabelHttpsPort": "N\u00famero de puerto local de https:", + "LabelHttpsPortHelp": "N\u00famero de puerto al que el servidor de tcp de Emby debe de ser enlazado.", "LabelWebSocketPortNumber": "N\u00famero de puerto WebSocket:", - "LabelEnableAutomaticPortMap": "Enable automatic port mapping", - "LabelEnableAutomaticPortMapHelp": "Attempt to automatically map the public port to the local port via UPnP. This may not work with some router models.", - "LabelExternalDDNS": "External WAN Address:", - "LabelExternalDDNSHelp": "If you have a dynamic DNS enter it here. Emby apps will use it when connecting remotely. Leave empty for automatic detection.", + "LabelEnableAutomaticPortMap": "Habilitar asignaci\u00f3n de puertos autom\u00e1tico", + "LabelEnableAutomaticPortMapHelp": "UPnP permite la configuraci\u00f3n del router para acceso externo de forma f\u00e1cil y autom\u00e1tica. Esto puede no funcionar en algunos modelos de routers.", + "LabelExternalDDNS": "Direccion externa del WAN:", + "LabelExternalDDNSHelp": "Ponga aqui su DNS dinamico si tiene uno. las aplicaciones de Emby lo usar\u00e1n para conectarse remotamente. Deje en blanco para detecci\u00f3n autom\u00e1tica.", "TabResume": "Continuar", "TabWeather": "El tiempo", "TitleAppSettings": "Opciones de la App", @@ -252,11 +586,9 @@ "LabelSkipped": "Omitido", "HeaderEpisodeOrganization": "Organizaci\u00f3n de episodios", "LabelSeries": "Series:", - "LabelSeasonNumber": "Temporada n\u00famero:", - "LabelEpisodeNumber": "Episodio n\u00famero:", "LabelEndingEpisodeNumber": "N\u00famero episodio final:", "LabelEndingEpisodeNumberHelp": "S\u00f3lo requerido para archivos multi-episodio", - "HeaderSupportTheTeam": "Support the Emby Team", + "HeaderSupportTheTeam": "Apoye al equipo de Emby", "LabelSupportAmount": "Importe (USD)", "HeaderSupportTheTeamHelp": "Ayude a garantizar el desarrollo continuo de este proyecto mediante una donaci\u00f3n. Una parte de todas las donaciones ir\u00e1n a parar a otras herramientas gratuitas de las que dependemos.", "ButtonEnterSupporterKey": "Entre la Key de Seguidor", @@ -288,28 +620,28 @@ "OptionMove": "Mover", "LabelTransferMethodHelp": "Copiar o mover archivos desde la carpeta de inspecci\u00f3n", "HeaderLatestNews": "Ultimas noticias", - "HeaderHelpImproveProject": "Help Improve Emby", + "HeaderHelpImproveProject": "Ayude a mejorar a Emby", "HeaderRunningTasks": "Tareas en ejecuci\u00f3n", "HeaderActiveDevices": "Dispositivos activos", "HeaderPendingInstallations": "Instalaciones pendientes", - "HeaderServerInformation": "Server Information", + "HeaderServerInformation": "Informaci\u00f3n del servidor", "ButtonRestartNow": "Reiniciar ahora", "ButtonRestart": "Reiniciar", "ButtonShutdown": "Apagar", "ButtonUpdateNow": "Actualizar ahora", - "TabHosting": "Hosting", + "TabHosting": "Servidor", "PleaseUpdateManually": "Por favor cierre el servidor y actualice manualmente.", - "NewServerVersionAvailable": "A new version of Emby Server is available!", - "ServerUpToDate": "Emby Server is up to date", + "NewServerVersionAvailable": "Una nueva versi\u00f3n de Emby est\u00e1 disponible!", + "ServerUpToDate": "El Servidor Emby est\u00e1 actualizado", "LabelComponentsUpdated": "Los componentes siguientes se han instalado o actualizado:", "MessagePleaseRestartServerToFinishUpdating": "Reinicie el servidor para acabar de aplicar las actualizaciones.", "LabelDownMixAudioScale": "Audio boost when downmixing:", "LabelDownMixAudioScaleHelp": "Potenciador de audio. Establecer a 1 para preservar el volumen original.", - "ButtonLinkKeys": "Transfer Key", + "ButtonLinkKeys": "Transferir Clave", "LabelOldSupporterKey": "Antigua clave de seguidor", "LabelNewSupporterKey": "Nueva clave de seguidor", - "HeaderMultipleKeyLinking": "Transfer to New Key", - "MultipleKeyLinkingHelp": "If you received a new supporter key, use this form to transfer the old key's registrations to your new one.", + "HeaderMultipleKeyLinking": "Trasferir a una Clave Nueva", + "MultipleKeyLinkingHelp": "Si usted recivio una nueva clave de partidiario, use este formulario para trasferir la registracion de la clave vieja a la nueva.", "LabelCurrentEmailAddress": "Cuenta de correo actual", "LabelCurrentEmailAddressHelp": "La direcci\u00f3n de correo electr\u00f3nico actual a la que se envi\u00f3 la nueva clave.", "HeaderForgotKey": "Perd\u00ed mi clave", @@ -317,13 +649,13 @@ "LabelSupporterEmailAddress": "La direcci\u00f3n de correo que utliz\u00f3 para comprar la clave.", "ButtonRetrieveKey": "Recuperar clave", "LabelSupporterKey": "Clave de seguidor (pegar desde el correo)", - "LabelSupporterKeyHelp": "Enter your supporter key to start enjoying additional benefits the community has developed for Emby.", - "MessageInvalidKey": "Supporter key is missing or invalid.", - "ErrorMessageInvalidKey": "In order for any premium content to be registered, you must also be an Emby Supporter. Please donate and support the continued development of the core product. Thank you.", + "LabelSupporterKeyHelp": "Agregue su clave de partidiario para empezar a disfrutar beneficios adicionales que la comunidad a creado para Emby.", + "MessageInvalidKey": "Clave de partidiario no se encuentra o es invalido.", + "ErrorMessageInvalidKey": "Para que cualquier contenido premium sea registrado, usted debe ser un pardidiario de Emby. Porfavor done y ayude a continuar con el desarrollo del producto principal. Gracias.", "HeaderDisplaySettings": "Opciones de pantalla", "TabPlayTo": "Reproducir en", "LabelEnableDlnaServer": "Habilitar servidor Dlna", - "LabelEnableDlnaServerHelp": "Allows UPnP devices on your network to browse and play Emby content.", + "LabelEnableDlnaServerHelp": "Permite que los aparatos con tecnologia UPnP en su red local pudan acceder los contenidos en Emby.", "LabelEnableBlastAliveMessages": "Explotar mensajes en vivo", "LabelEnableBlastAliveMessagesHelp": "Active aqu\u00ed si el servidor no es detectado correctamente por otros dispositivos UPnP en su red.", "LabelBlastMessageInterval": "Intervalo para mensajes en vivo (segundos)", @@ -348,9 +680,9 @@ "NotificationOptionPluginUpdateInstalled": "Se ha instalado la actualizaci\u00f3n del plugin", "NotificationOptionPluginInstalled": "Plugin instalado", "NotificationOptionPluginUninstalled": "Plugin desinstalado", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionVideoPlayback": "Reproduccion de video a iniciado", + "NotificationOptionAudioPlayback": "Reproduccion de audio a iniciado", + "NotificationOptionGamePlayback": "Reproduccion de video juego a iniciado", "NotificationOptionVideoPlaybackStopped": "Reproducci\u00f3n de video detenida", "NotificationOptionAudioPlaybackStopped": "Reproducci\u00f3n de audio detenida", "NotificationOptionGamePlaybackStopped": "Reproducci\u00f3n de juego detenida", @@ -358,8 +690,8 @@ "NotificationOptionInstallationFailed": "Fallo en la instalaci\u00f3n", "NotificationOptionNewLibraryContent": "Nuevo contenido a\u00f1adido", "NotificationOptionNewLibraryContentMultiple": "Nuevo contenido a\u00f1adido (multiple)", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionCameraImageUploaded": "Imagen de camara se a carcado", + "NotificationOptionUserLockedOut": "Usuario bloqueado", "HeaderSendNotificationHelp": "By default, notifications are delivered to your dashboard inbox. Browse the plugin catalog to install additional notification options.", "NotificationOptionServerRestartRequired": "Se requiere el reinicio del servidor", "LabelNotificationEnabled": "Activar esta notificaci\u00f3n", @@ -400,13 +732,13 @@ "ButtonFullscreen": "Toggle fullscreen", "ButtonScenes": "Escenas", "ButtonSubtitles": "Subt\u00edtulos", - "ButtonAudioTracks": "Audio tracks", + "ButtonAudioTracks": "Pistas de Audio", "ButtonPreviousTrack": "Pista anterior", "ButtonNextTrack": "Pista siguiente", "ButtonStop": "Detener", "ButtonPause": "Pausa", - "ButtonNext": "Next", - "ButtonPrevious": "Previous", + "ButtonNext": "Siguiente", + "ButtonPrevious": "Anterior", "LabelGroupMoviesIntoCollections": "Agrupar pel\u00edculas en colecciones", "LabelGroupMoviesIntoCollectionsHelp": "Cuando se muestran las listas de pel\u00edculas, las pel\u00edculas pertenecientes a una colecci\u00f3n se mostrar\u00e1n como un elemento agrupado.", "NotificationOptionPluginError": "Error en plugin", @@ -425,7 +757,7 @@ "LabelProfileContainer": "Contenedor:", "LabelProfileVideoCodecs": "Codecs de video:", "LabelProfileAudioCodecs": "Codecs de audio:", - "LabelProfileCodecs": "Codecs:", + "LabelProfileCodecs": "C\u00f3decs:", "HeaderDirectPlayProfile": "Perfil de reproducci\u00f3n directa", "HeaderTranscodingProfile": "Perfil de transcodificaci\u00f3n", "HeaderCodecProfile": "Perfil de codec", @@ -444,10 +776,10 @@ "OptionPlainVideoItemsHelp": "Si est\u00e1 habilitado, todos los v\u00eddeos est\u00e1n representados en DIDL como \"object.item.videoItem\" en lugar de un tipo m\u00e1s espec\u00edfico, como por ejemplo \"object.item.videoItem.movie\".", "LabelSupportedMediaTypes": "Tipos de medio soportados:", "TabIdentification": "Identificaci\u00f3n", - "HeaderIdentification": "Identification", + "HeaderIdentification": "Identificaci\u00f3n", "TabDirectPlay": "Reproducci\u00f3n directa", "TabContainers": "Contenedores", - "TabCodecs": "Codecs", + "TabCodecs": "C\u00f3decs", "TabResponses": "Respuestas", "HeaderProfileInformation": "Informaci\u00f3n del perfil", "LabelEmbedAlbumArtDidl": "Incorporar la car\u00e1tula del \u00e1lbum en didl", @@ -466,9 +798,9 @@ "HeaderProfileServerSettingsHelp": "These values control how Emby Server will present itself to the device.", "LabelMaxBitrate": "Bitrate m\u00e1ximo:", "LabelMaxBitrateHelp": "Especificar una tasa de bits m\u00e1xima en entornos de ancho de banda limitado, o si el dispositivo impone su propio l\u00edmite.", - "LabelMaxStreamingBitrate": "Max streaming bitrate:", + "LabelMaxStreamingBitrate": "Bitrate m\u00e1ximo:", "LabelMaxStreamingBitrateHelp": "Specify a max bitrate when streaming.", - "LabelMaxChromecastBitrate": "Max Chromecast bitrate:", + "LabelMaxChromecastBitrate": "Bitrate de reproducci\u00f3n Chromecast", "LabelMaxStaticBitrate": "Max sync bitrate:", "LabelMaxStaticBitrateHelp": "Specify a max bitrate when syncing content at high quality.", "LabelMusicStaticBitrate": "Music sync bitrate:", @@ -541,6 +873,7 @@ "HeaderTypeText": "Entrar texto", "LabelTypeText": "Texto", "HeaderSearchForSubtitles": "B\u00fasqueda de Subt\u00edtulos", + "ButtonMore": "More", "MessageNoSubtitleSearchResultsFound": "No se han encontrado resultados en la b\u00fasqueda.", "TabDisplay": "Pantalla", "TabLanguages": "Idiomas", @@ -571,7 +904,7 @@ "HeaderLiveTv": "TV en vivo", "HeaderReports": "Informes", "HeaderMetadataManager": "Metadata Manager", - "HeaderPreferences": "Preferencias", + "HeaderSettings": "Settings", "MessageLoadingChannels": "Cargando contenidos del canal...", "MessageLoadingContent": "Loading content...", "ButtonMarkRead": "Marcar como le\u00eddo", @@ -769,7 +1102,6 @@ "OptionReportArtists": "Artists", "OptionReportAlbums": "Albums", "OptionReportAdultVideos": "Adult videos", - "ButtonMore": "More", "HeaderActivity": "Activity", "ScheduledTaskStartedWithName": "{0} started", "ScheduledTaskCancelledWithName": "{0} was cancelled", @@ -816,14 +1148,14 @@ "LabelDisplayFoldersView": "Display a folders view to show plain media folders", "ViewTypeLiveTvRecordingGroups": "Recordings", "ViewTypeLiveTvChannels": "Channels", - "LabelEasyPinCode": "Easy pin code:", + "LabelEasyPinCode": "F\u00e1cil c\u00f3digo PIN:", "EasyPasswordHelp": "Your easy pin code is used for offline access with supported Emby apps, and can also be used for easy in-network sign in.", "LabelInNetworkSignInWithEasyPassword": "Enable in-network sign in with my easy pin code", "LabelInNetworkSignInWithEasyPasswordHelp": "If enabled, you'll be able to use your easy pin code to sign in to Emby apps from inside your home network. Your regular password will only be needed away from home. If the pin code is left blank, you won't need a password within your home network.", "HeaderPassword": "Password", "HeaderLocalAccess": "Local Access", "HeaderViewOrder": "View Order", - "ButtonResetEasyPassword": "Reset easy pin code", + "ButtonResetEasyPassword": "Restablecer f\u00e1cil c\u00f3digo PIN", "LabelSelectUserViewOrder": "Choose the order your views will be displayed in within Emby apps", "LabelMetadataRefreshMode": "Metadata refresh mode:", "LabelImageRefreshMode": "Image refresh mode:", @@ -899,6 +1231,7 @@ "OptionNoThemeVideo": "No Theme Video", "LabelOneTimeDonationAmount": "Donation amount:", "ButtonDonate": "Donate", + "ButtonPurchase": "Purchase", "OptionActor": "Actor", "OptionComposer": "Composer", "OptionDirector": "Director", @@ -918,7 +1251,6 @@ "HeaderDeveloperInfo": "Developer Info", "HeaderRevisionHistory": "Revision History", "ButtonViewWebsite": "View website", - "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderXmlSettings": "Xml Settings", "HeaderXmlDocumentAttributes": "Xml Document Attributes", "HeaderXmlDocumentAttribute": "Xml Document Attribute", @@ -932,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", "LabelExternalPlayers": "External players:", "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", "HeaderSubtitleProfile": "Subtitle Profile", "HeaderSubtitleProfiles": "Subtitle Profiles", "HeaderSubtitleProfilesHelp": "Subtitle profiles describe the subtitle formats supported by the device.", @@ -1032,7 +1367,7 @@ "HeaderForgotPassword": "Forgot Password", "TitleForgotPassword": "Forgot Password", "TitlePasswordReset": "Password Reset", - "LabelPasswordRecoveryPinCode": "Pin code:", + "LabelPasswordRecoveryPinCode": "C\u00f3digo PIN:", "HeaderPasswordReset": "Password Reset", "HeaderParentalRatings": "Parental Ratings", "HeaderVideoTypes": "Video Types", @@ -1060,7 +1395,7 @@ "HeaderUpcomingMovies": "Upcoming Movies", "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", - "ButtonMoreItems": "More...", + "ButtonMoreItems": "More", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", @@ -1079,14 +1414,6 @@ "OptionEnableFullSpeedConversion": "Enable full speed conversion", "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", "HeaderViewStyles": "View Styles", "LabelSelectViewStyles": "Enable enhanced presentations for:", "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", @@ -1104,334 +1431,24 @@ "HeaderNewServer": "New Server", "ButtonChangeServer": "Change Server", "HeaderConnectToServer": "Connect to Server", - "LabelExit": "Salir", - "LabelVisitCommunity": "Visitar la comunidad", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Est\u00e1ndar", - "LabelApiDocumentation": "Documentacion de Componentes", - "LabelDeveloperResources": "Recursos del Desarrollador", - "LabelBrowseLibrary": "Navegar biblioteca", - "LabelConfigureServer": "Configurar Emby", - "LabelOpenLibraryViewer": "Abrir el visor de la biblioteca", - "LabelRestartServer": "Reiniciar el servidor", - "LabelShowLogWindow": "Mostrar la ventana del log", - "LabelPrevious": "Anterior", - "LabelFinish": "Terminar", - "LabelNext": "Siguiente", - "LabelYoureDone": "Ha Terminado!", - "WelcomeToProject": "Bienvenidos a Emby!", - "ThisWizardWillGuideYou": "Este asistente lo guiar\u00e1 por el proceso de instalaci\u00f3n. Para comenzar, seleccione su idioma preferido.", - "TellUsAboutYourself": "D\u00edganos acerca de usted", - "ButtonQuickStartGuide": "Guia de inicio rapido", - "LabelYourFirstName": "Su primer nombre:", - "MoreUsersCanBeAddedLater": "M\u00e1s usuarios pueden agregarse m\u00e1s tarde en el panel de control.", - "UserProfilesIntro": "Emby incluye soporte interno para perfiles de usuarios, permitiendo que cada usuario tenga sus propios ajustes, estado de reproducci\u00f3n y control parental.", - "LabelWindowsService": "Servicio de Windows", - "AWindowsServiceHasBeenInstalled": "Un servicio de Windows se ha instalado", - "WindowsServiceIntro1": "El Servidor Emby normalmente se inicia como una aplicacion con un icono en la bandeja, pero si usted prefiere que inicie como un servicio de fondo, entonces puede ser iniciado desde los servicios de Windows en el panel de control.", - "WindowsServiceIntro2": "Si se utiliza el servicio de Windows, tenga en cuenta que no se puede ejecutar al mismo tiempo que el icono de la bandeja, por lo que tendr\u00e1 que salir de la bandeja con el fin de ejecutar el servicio. Tambi\u00e9n tendr\u00e1 que ser configurado con privilegios administrativos a trav\u00e9s del panel de control del servicio. Tenga en cuenta que en este momento el servicio no es capaz de auto-actualizaci\u00f3n, por lo que las nuevas versiones requieren la interacci\u00f3n manual.", - "WizardCompleted": "Eso es todo lo que necesitamos por ahora. Emby a iniciado la colecci\u00f3n de su biblioteca digital. Vea algunos de nuestras aplicaciones, y despu\u00e9s haga clic <b>Finalizar<\/b>para ver el <b>Panel de Servidor<\/b>.", - "LabelConfigureSettings": "Configuraci\u00f3n de opciones", - "LabelEnableVideoImageExtraction": "Habilitar extracci\u00f3n de im\u00e1genes de video", - "VideoImageExtractionHelp": "Para los v\u00eddeos que no dispongan de im\u00e1genes y que no podemos encontrar en Internet. Esto agregar\u00e1 un tiempo adicional para la exploraci\u00f3n inicial de bibliotecas, pero resultar\u00e1 en una presentaci\u00f3n m\u00e1s agradable.", - "LabelEnableChapterImageExtractionForMovies": "Extraer im\u00e1genes de cap\u00edtulos para pel\u00edculas", - "LabelChapterImageExtractionForMoviesHelp": "Extraer imagenes de capitulos permitir\u00e1 a los usuarios ver escenas gr\u00e1ficas en la seleccion de men\u00fa. El proceso puede ser lento, cpu-intenso y puede requerir algunos gigabytes de espacio.", - "LabelEnableAutomaticPortMapping": "Habilitar asignaci\u00f3n de puertos autom\u00e1tico", - "LabelEnableAutomaticPortMappingHelp": "UPnP permite la configuraci\u00f3n del router para acceso externo de forma f\u00e1cil y autom\u00e1tica. Esto puede no funcionar en algunos modelos de routers.", - "HeaderTermsOfService": "Emby Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LinkedToEmbyConnect": "Linked to Emby Connect", - "HeaderSupporterBenefits": "Supporter Benefits", - "HeaderAddUser": "Add User", - "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", - "LabelPinCode": "Pin code:", - "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", - "HeaderSync": "Sync", - "ButtonOk": "OK", - "ButtonCancel": "Cancelar", - "ButtonExit": "Exit", - "ButtonNew": "Nuevo", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "TabPlaylist": "Playlist", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Emby online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "Configurar biblioteca de medios", - "ButtonAddMediaFolder": "Agregar una carpeta de medios", - "LabelFolderType": "Tipo de carpeta:", - "ReferToMediaLibraryWiki": "Consultar el wiki de la biblioteca de medios", - "LabelCountry": "Pa\u00eds:", - "LabelLanguage": "Idioma:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "Idioma preferido para metadata", - "LabelSaveLocalMetadata": "Guardar im\u00e1genes y metadata en las carpetas de medios", - "LabelSaveLocalMetadataHelp": "Guardar im\u00e1genes y metadata directamente en las carpetas de medios, permitir\u00e1 colocarlas en un lugar donde se pueden editar f\u00e1cilmente.", - "LabelDownloadInternetMetadata": "Descargar imagenes y metadata de internet", - "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", - "TabPreferences": "Preferencias", - "TabPassword": "Contrase\u00f1a", - "TabLibraryAccess": "Acceso a biblioteca", - "TabAccess": "Access", - "TabImage": "imagen", - "TabProfile": "Perfil", - "TabMetadata": "Metadata", - "TabImages": "Im\u00e1genes", - "TabNotifications": "Notificaciones", - "TabCollectionTitles": "T\u00edtulos", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Mostar episodios no disponibles en temporadas", - "LabelUnairedMissingEpisodesWithinSeasons": "Mostrar episodios a\u00fan no emitidos en temporadas", - "HeaderVideoPlaybackSettings": "Ajustes de Reproducci\u00f3n de Video", - "HeaderPlaybackSettings": "Ajustes de reproducci\u00f3n", - "LabelAudioLanguagePreference": "Preferencia de idioma de audio", - "LabelSubtitleLanguagePreference": "Preferencia de idioma de subtitulos", - "OptionDefaultSubtitles": "Por defecto", - "OptionOnlyForcedSubtitles": "S\u00f3lo subt\u00edtulos forzados", - "OptionAlwaysPlaySubtitles": "Mostrar siempre subt\u00edtulos", - "OptionNoSubtitles": "Sin subt\u00edtulos", - "OptionDefaultSubtitlesHelp": "Los subt\u00edtulos que concuerden con la preferencia de idioma se cargar\u00e1n cuando el audio est\u00e9 en un idioma extranjero.", - "OptionOnlyForcedSubtitlesHelp": "S\u00f3lo se cargar\u00e1n los subt\u00edtulos marcados como forzados.", - "OptionAlwaysPlaySubtitlesHelp": "Los subt\u00edtulos que concuerden con la preferencia de idioma se cargar\u00e1n independientemente del idioma de audio.", - "OptionNoSubtitlesHelp": "Los subt\u00edtulos no se cargar\u00e1n de forma predeterminada.", - "TabProfiles": "Perfiles", - "TabSecurity": "Seguridad", - "ButtonAddUser": "Agregar Usuario", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "Grabar", - "ButtonResetPassword": "Reiniciar Contrase\u00f1a", - "LabelNewPassword": "Nueva Contrase\u00f1a:", - "LabelNewPasswordConfirm": "Confirmaci\u00f3n de contrase\u00f1a nueva:", - "HeaderCreatePassword": "Crear Contrase\u00f1a", - "LabelCurrentPassword": "Contrase\u00f1a actual", - "LabelMaxParentalRating": "M\u00e1xima clasificaci\u00f3n permitida", - "MaxParentalRatingHelp": "El contenido con clasificaci\u00f3n parental superior se ocultar\u00e1 para este usuario.", - "LibraryAccessHelp": "Seleccione las carpetas de medios para compartir con este usuario. Los administradores podr\u00e1n editar todas las carpetas usando el gestor de metadata.", - "ChannelAccessHelp": "Seleccione los canales para compartir con este usuario. Los administradores podr\u00e1n editar todos los canales mediante el gestor de metadatos.", - "ButtonDeleteImage": "Borrar imagen", - "LabelSelectUsers": "Seleccionar usuarios:", - "ButtonUpload": "Subir", - "HeaderUploadNewImage": "Subir nueva imagen", - "LabelDropImageHere": "Drop image here", - "ImageUploadAspectRatioHelp": "Se Recomienda una Proporci\u00f3n de Aspecto 1:1. Solo JPG\/PNG", - "MessageNothingHere": "Nada aqu\u00ed.", - "MessagePleaseEnsureInternetMetadata": "Por favor aseg\u00farese que la descarga de metadata de internet esta habilitada", - "TabSuggested": "Sugerencia", - "TabSuggestions": "Suggestions", - "TabLatest": "Novedades", - "TabUpcoming": "Pr\u00f3ximos", - "TabShows": "Programas", - "TabEpisodes": "Episodios", - "TabGenres": "G\u00e9neros", - "TabPeople": "Gente", - "TabNetworks": "redes", - "HeaderUsers": "Usuarios", - "HeaderFilters": "Filtros:", - "ButtonFilter": "Filtro", - "OptionFavorite": "Favoritos", - "OptionLikes": "Me gusta", - "OptionDislikes": "No me gusta", - "OptionActors": "Actores", - "OptionGuestStars": "Estrellas invitadas", - "OptionDirectors": "Directores", - "OptionWriters": "Guionistas", - "OptionProducers": "Productores", - "HeaderResume": "Continuar", - "HeaderNextUp": "Siguiendo", - "NoNextUpItemsMessage": "Nada encontrado. \u00a1Comienza a ver tus programas!", - "HeaderLatestEpisodes": "Ultimos episodios", - "HeaderPersonTypes": "Tipos de personas:", - "TabSongs": "Canciones", - "TabAlbums": "Albums", - "TabArtists": "Artistas", - "TabAlbumArtists": "Album Artistas", - "TabMusicVideos": "Videos Musicales", - "ButtonSort": "Ordenar", - "HeaderSortBy": "Ordenar por:", - "HeaderSortOrder": "Ordenado por:", - "OptionPlayed": "Reproducido", - "OptionUnplayed": "No reproducido", - "OptionAscending": "Ascendente", - "OptionDescending": "Descendente", - "OptionRuntime": "Tiempo", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "N\u00famero de reproducc.", - "OptionDatePlayed": "Fecha de reproducci\u00f3n", - "OptionDateAdded": "A\u00f1adido el", - "OptionAlbumArtist": "Album Artista", - "OptionArtist": "Artista", - "OptionAlbum": "Album", - "OptionTrackName": "Nombre de pista", - "OptionCommunityRating": "Valoraci\u00f3n comunidad", - "OptionNameSort": "Nombre", - "OptionFolderSort": "Carpetas", - "OptionBudget": "Presupuesto", - "OptionRevenue": "Recaudaci\u00f3n", - "OptionPoster": "Poster", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "Imagen de fondo", - "OptionTimeline": "L\u00ednea de tiempo", - "OptionThumb": "Miniatura", - "OptionThumbCard": "Thumb card", - "OptionBanner": "Banner", - "OptionCriticRating": "Valoraci\u00f3n cr\u00edtica", - "OptionVideoBitrate": "Video Bitrate", - "OptionResumable": "Se puede continuar", - "ScheduledTasksHelp": "Click en una tarea para ajustar su programaci\u00f3n", - "ScheduledTasksTitle": "Scheduled Tasks", - "TabMyPlugins": "Mis Plugins", - "TabCatalog": "Cat\u00e1logo", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Actualizaciones autom\u00e1ticas", - "HeaderNowPlaying": "Reproduciendo ahora", - "HeaderLatestAlbums": "\u00dcltimos Albums", - "HeaderLatestSongs": "\u00daltimas canciones", - "HeaderRecentlyPlayed": "Reproducido recientemente", - "HeaderFrequentlyPlayed": "Reproducido frequentemente", - "DevBuildWarning": "Las actualizaciones en desarrollo no est\u00e1n convenientemente probadas. La aplicaci\u00f3n se puede bloquear y caracter\u00edsticas completas pueden no funcionar del todo.", - "LabelVideoType": "Tipo de video", - "OptionBluray": "Bluray", - "OptionDvd": "Dvd", - "OptionIso": "Iso", - "Option3D": "3D", - "LabelFeatures": "Caracter\u00edsticas", - "LabelService": "Servicio:", - "LabelStatus": "Estado:", - "LabelVersion": "Versi\u00f3n:", - "LabelLastResult": "\u00daltimo resultado:", - "OptionHasSubtitles": "Subt\u00edtulos", - "OptionHasTrailer": "Trailer", - "OptionHasThemeSong": "Banda sonora", - "OptionHasThemeVideo": "Viideotema", - "TabMovies": "Pel\u00edculas", - "TabStudios": "Estudios", - "TabTrailers": "Trailers", - "LabelArtists": "Artists:", - "LabelArtistsHelp": "Separate multiple using ;", - "HeaderLatestMovies": "\u00daltimas pel\u00edculas", - "HeaderLatestTrailers": "\u00daltimos trailers", - "OptionHasSpecialFeatures": "Caracter\u00edsticas especiales", - "OptionImdbRating": "Valoraci\u00f3n IMDb", - "OptionParentalRating": "Clasificaci\u00f3n parental", - "OptionPremiereDate": "Fecha de estreno", - "TabBasic": "B\u00e1sico", - "TabAdvanced": "Avanzado", - "HeaderStatus": "Estado", - "OptionContinuing": "Continuando", - "OptionEnded": "Finalizado", - "HeaderAirDays": "Air Days", - "OptionSunday": "Domingo", - "OptionMonday": "Lunes", - "OptionTuesday": "Martes", - "OptionWednesday": "Mi\u00e9rcoles", - "OptionThursday": "Jueves", - "OptionFriday": "Viernes", - "OptionSaturday": "S\u00e1bado", - "HeaderManagement": "Management", - "LabelManagement": "Management:", - "OptionMissingImdbId": "Falta IMDb Id", - "OptionMissingTvdbId": "Falta TheTVDB Id", - "OptionMissingOverview": "Falta argumento", - "OptionFileMetadataYearMismatch": "Archivo\/Metadata a\u00f1os no coinciden", - "TabGeneral": "General", - "TitleSupport": "Soporte", - "TabLog": "Log", - "TabAbout": "Acerca de", - "TabSupporterKey": "Clave de Seguidor", - "TabBecomeSupporter": "Hazte Seguidor", - "ProjectHasCommunity": "Emby has a thriving community of users and contributors.", - "CheckoutKnowledgeBase": "Check out our knowledge base to help you get the most out of Emby.", - "SearchKnowledgeBase": "Buscar en la base de conocimiento", - "VisitTheCommunity": "Visitar la comunidad", - "VisitProjectWebsite": "Visit the Emby Web Site", - "VisitProjectWebsiteLong": "Visit the Emby Web site to catch the latest news and keep up with the developer blog.", - "OptionHideUser": "Ocultar este usuario en las pantallas de inicio de sesi\u00f3n", - "OptionHideUserFromLoginHelp": "Useful for private or hidden administrator accounts. The user will need to sign in manually by entering their username and password.", - "OptionDisableUser": "Deshabilitar este usuario", - "OptionDisableUserHelp": "Si est\u00e1 deshabilitado, el servidor no aceptar\u00e1 conexiones de este usuario. Si existen conexiones de este usuario, finalizar\u00e1n inmediatamente.", - "HeaderAdvancedControl": "Control avanzado", - "LabelName": "Nombre:", - "ButtonHelp": "Help", - "OptionAllowUserToManageServer": "Permite a este usuario administrar el servidor", - "HeaderFeatureAccess": "Permisos de acceso", - "OptionAllowMediaPlayback": "Allow media playback", - "OptionAllowBrowsingLiveTv": "Allow Live TV access", - "OptionAllowDeleteLibraryContent": "Allow media deletion", - "OptionAllowManageLiveTv": "Allow Live TV recording management", - "OptionAllowRemoteControlOthers": "Allow remote control of other users", - "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", - "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", - "HeaderRemoteControl": "Remote Control", - "OptionMissingTmdbId": "Falta Tmdb Id", - "OptionIsHD": "HD", - "OptionIsSD": "SD", - "OptionMetascore": "Metavalor", - "ButtonSelect": "Seleccionar", - "ButtonGroupVersions": "Versiones de Grupo", - "ButtonAddToCollection": "Add to Collection", - "PismoMessage": "Usando Pismo File Mount a trav\u00e9s de una licencia donada.", - "TangibleSoftwareMessage": "Utilizamos convertidores Java\/C# de Tangible Solutions a trav\u00e9s de una licencia donada.", - "HeaderCredits": "Cr\u00e9ditos", - "PleaseSupportOtherProduces": "Por favor apoye otros productos gratuitos que utilizamos:", - "VersionNumber": "Versi\u00f3n {0}", - "TabPaths": "Ruta", - "TabServer": "Servidor", - "TabTranscoding": "Transcodificaci\u00f3n" + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "HeaderExport": "Export", + "HeaderColumns": "Columns", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/fi.json b/MediaBrowser.Server.Implementations/Localization/Server/fi.json index 3e6df8b6a..f4d1a31d3 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/fi.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/fi.json @@ -1,5 +1,104 @@ { - "TabWebClient": "Web Client", + "LabelExit": "Poistu", + "LabelVisitCommunity": "K\u00e4y Yhteis\u00f6ss\u00e4", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Normaali", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Selaa Kirjastoa", + "LabelConfigureServer": "Configure Emby", + "LabelOpenLibraryViewer": "Avaa Library Viewer", + "LabelRestartServer": "K\u00e4ynnist\u00e4 Palvelin uudelleen", + "LabelShowLogWindow": "N\u00e4yt\u00e4 Loki Ikkuna", + "LabelPrevious": "Edellinen", + "LabelFinish": "Valmis", + "FolderTypeMixed": "Mixed content", + "LabelNext": "Seuraava", + "LabelYoureDone": "Olet valmis!", + "WelcomeToProject": "Welcome to Emby!", + "ThisWizardWillGuideYou": "T\u00e4m\u00e4 ty\u00f6kalu auttaa sinua asennus prosessin aikana. loittaaksesi valitse kieli.", + "TellUsAboutYourself": "Kerro meille itsest\u00e4si", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "Sinun ensimm\u00e4inen nimi:", + "MoreUsersCanBeAddedLater": "K\u00e4ytt\u00e4ji\u00e4 voi lis\u00e4t\u00e4 lis\u00e4\u00e4 my\u00f6hemmin Dashboardista", + "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", + "LabelWindowsService": "Windows Service", + "AWindowsServiceHasBeenInstalled": "Windows Service on asennettu.", + "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", + "WindowsServiceIntro2": "Jos k\u00e4yt\u00e4t windows service\u00e4, ole hyv\u00e4 ja ota huomioon ettet voi k\u00e4ytt\u00e4\u00e4 ohjelmaa yht\u00e4aikaa teht\u00e4v\u00e4palkissa ja servicen\u00e4, joten sinun t\u00e4ytyy sulkea teht\u00e4v\u00e4palkin ikoni ensin kuin voit k\u00e4ytt\u00e4\u00e4 palvelinta servicen kautta. Service pit\u00e4\u00e4 konfiguroida my\u00f6s j\u00e4rjestelm\u00e4nvalvojan oikeuksilla ohjaus paneelista. Ota my\u00f6s huomioon, ett\u00e4 ohjelma pit\u00e4\u00e4 my\u00f6s p\u00e4ivitt\u00e4\u00e4 service palvelussa manuaalisesti.", + "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", + "LabelConfigureSettings": "Muuta asetuksia", + "LabelEnableVideoImageExtraction": "Ota video kuvan purku k\u00e4ytt\u00f6\u00f6n", + "VideoImageExtractionHelp": "Videot jotka eiv\u00e4t sisll\u00e4 valmiiksi kuvaa ja emme voi lis\u00e4t\u00e4 kuvaa automaattisesti internetist\u00e4. T\u00e4m\u00e4 lis\u00e4\u00e4 v\u00e4h\u00e4n lataus aikaa kirjaston tarkastuksessa.", + "LabelEnableChapterImageExtractionForMovies": "Valitse luvun kuva Elokuville", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Ota automaattinen porttien mapping k\u00e4ytt\u00f6\u00f6n", + "LabelEnableAutomaticPortMappingHelp": "UPnP sallii automaattisen reitittimen asetusten muuttamisen. T\u00e4m\u00e4 ei mahdollisesti toimi joidenkin retititin mallien kanssa.", + "HeaderTermsOfService": "Emby Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToEmbyConnect": "Linked to Emby Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", + "ButtonOk": "Ok", + "ButtonCancel": "Lopeta", + "ButtonExit": "Exit", + "ButtonNew": "New", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "Username or email:", + "LabelEnterConnectUserNameHelp": "This is your Emby online account username or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", "FolderTypeTvShows": "TV", "FolderTypeInherit": "Inherit", "LabelContentType": "Content type:", @@ -188,7 +287,9 @@ "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", "TabGeneral": "General", "TitleSupport": "Support", + "LabelSeasonNumber": "Season number", "TabLog": "Log", + "LabelEpisodeNumber": "Episode number", "TabAbout": "About", "TabSupporterKey": "Supporter Key", "TabBecomeSupporter": "Become a Supporter", @@ -214,6 +315,9 @@ "OptionAllowRemoteControlOthers": "Allow remote control of other users", "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", "HeaderRemoteControl": "Remote Control", "OptionMissingTmdbId": "Missing Tmdb Id", "OptionIsHD": "HD", @@ -482,8 +586,6 @@ "LabelSkipped": "Skipped", "HeaderEpisodeOrganization": "Episode Organization", "LabelSeries": "Series:", - "LabelSeasonNumber": "Season number:", - "LabelEpisodeNumber": "Episode number:", "LabelEndingEpisodeNumber": "Ending episode number:", "LabelEndingEpisodeNumberHelp": "Only required for multi-episode files", "HeaderSupportTheTeam": "Support the Emby Team", @@ -771,6 +873,7 @@ "HeaderTypeText": "Enter Text", "LabelTypeText": "Text", "HeaderSearchForSubtitles": "Search for Subtitles", + "ButtonMore": "More", "MessageNoSubtitleSearchResultsFound": "No search results founds.", "TabDisplay": "Display", "TabLanguages": "Languages", @@ -801,7 +904,7 @@ "HeaderLiveTv": "Live TV", "HeaderReports": "Reports", "HeaderMetadataManager": "Metadata Manager", - "HeaderPreferences": "Preferences", + "HeaderSettings": "Settings", "MessageLoadingChannels": "Loading channel content...", "MessageLoadingContent": "Loading content...", "ButtonMarkRead": "Mark Read", @@ -999,7 +1102,6 @@ "OptionReportArtists": "Artists", "OptionReportAlbums": "Albums", "OptionReportAdultVideos": "Adult videos", - "ButtonMore": "More", "HeaderActivity": "Activity", "ScheduledTaskStartedWithName": "{0} started", "ScheduledTaskCancelledWithName": "{0} was cancelled", @@ -1129,6 +1231,7 @@ "OptionNoThemeVideo": "No Theme Video", "LabelOneTimeDonationAmount": "Donation amount:", "ButtonDonate": "Donate", + "ButtonPurchase": "Purchase", "OptionActor": "Actor", "OptionComposer": "Composer", "OptionDirector": "Director", @@ -1148,7 +1251,6 @@ "HeaderDeveloperInfo": "Developer Info", "HeaderRevisionHistory": "Revision History", "ButtonViewWebsite": "View website", - "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderXmlSettings": "Xml Settings", "HeaderXmlDocumentAttributes": "Xml Document Attributes", "HeaderXmlDocumentAttribute": "Xml Document Attribute", @@ -1162,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", "LabelExternalPlayers": "External players:", "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", "HeaderSubtitleProfile": "Subtitle Profile", "HeaderSubtitleProfiles": "Subtitle Profiles", "HeaderSubtitleProfilesHelp": "Subtitle profiles describe the subtitle formats supported by the device.", @@ -1290,7 +1395,7 @@ "HeaderUpcomingMovies": "Upcoming Movies", "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", - "ButtonMoreItems": "More...", + "ButtonMoreItems": "More", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", @@ -1309,14 +1414,6 @@ "OptionEnableFullSpeedConversion": "Enable full speed conversion", "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", "HeaderViewStyles": "View Styles", "LabelSelectViewStyles": "Enable enhanced presentations for:", "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", @@ -1334,104 +1431,24 @@ "HeaderNewServer": "New Server", "ButtonChangeServer": "Change Server", "HeaderConnectToServer": "Connect to Server", - "LabelExit": "Poistu", - "LabelVisitCommunity": "K\u00e4y Yhteis\u00f6ss\u00e4", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Normaali", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Selaa Kirjastoa", - "LabelConfigureServer": "Configure Emby", - "LabelOpenLibraryViewer": "Avaa Library Viewer", - "LabelRestartServer": "K\u00e4ynnist\u00e4 Palvelin uudelleen", - "LabelShowLogWindow": "N\u00e4yt\u00e4 Loki Ikkuna", - "LabelPrevious": "Edellinen", - "LabelFinish": "Valmis", - "LabelNext": "Seuraava", - "LabelYoureDone": "Olet valmis!", - "WelcomeToProject": "Welcome to Emby!", - "ThisWizardWillGuideYou": "T\u00e4m\u00e4 ty\u00f6kalu auttaa sinua asennus prosessin aikana. loittaaksesi valitse kieli.", - "TellUsAboutYourself": "Kerro meille itsest\u00e4si", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "Sinun ensimm\u00e4inen nimi:", - "MoreUsersCanBeAddedLater": "K\u00e4ytt\u00e4ji\u00e4 voi lis\u00e4t\u00e4 lis\u00e4\u00e4 my\u00f6hemmin Dashboardista", - "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "Windows Service", - "AWindowsServiceHasBeenInstalled": "Windows Service on asennettu.", - "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", - "WindowsServiceIntro2": "Jos k\u00e4yt\u00e4t windows service\u00e4, ole hyv\u00e4 ja ota huomioon ettet voi k\u00e4ytt\u00e4\u00e4 ohjelmaa yht\u00e4aikaa teht\u00e4v\u00e4palkissa ja servicen\u00e4, joten sinun t\u00e4ytyy sulkea teht\u00e4v\u00e4palkin ikoni ensin kuin voit k\u00e4ytt\u00e4\u00e4 palvelinta servicen kautta. Service pit\u00e4\u00e4 konfiguroida my\u00f6s j\u00e4rjestelm\u00e4nvalvojan oikeuksilla ohjaus paneelista. Ota my\u00f6s huomioon, ett\u00e4 ohjelma pit\u00e4\u00e4 my\u00f6s p\u00e4ivitt\u00e4\u00e4 service palvelussa manuaalisesti.", - "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", - "LabelConfigureSettings": "Muuta asetuksia", - "LabelEnableVideoImageExtraction": "Ota video kuvan purku k\u00e4ytt\u00f6\u00f6n", - "VideoImageExtractionHelp": "Videot jotka eiv\u00e4t sisll\u00e4 valmiiksi kuvaa ja emme voi lis\u00e4t\u00e4 kuvaa automaattisesti internetist\u00e4. T\u00e4m\u00e4 lis\u00e4\u00e4 v\u00e4h\u00e4n lataus aikaa kirjaston tarkastuksessa.", - "LabelEnableChapterImageExtractionForMovies": "Valitse luvun kuva Elokuville", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Ota automaattinen porttien mapping k\u00e4ytt\u00f6\u00f6n", - "LabelEnableAutomaticPortMappingHelp": "UPnP sallii automaattisen reitittimen asetusten muuttamisen. T\u00e4m\u00e4 ei mahdollisesti toimi joidenkin retititin mallien kanssa.", - "HeaderTermsOfService": "Emby Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LinkedToEmbyConnect": "Linked to Emby Connect", - "HeaderSupporterBenefits": "Supporter Benefits", - "HeaderAddUser": "Add User", - "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", - "LabelPinCode": "Pin code:", - "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", - "HeaderSync": "Sync", - "ButtonOk": "Ok", - "ButtonCancel": "Lopeta", - "ButtonExit": "Exit", - "ButtonNew": "New", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "TabPlaylist": "Playlist", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Emby online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books" + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "HeaderExport": "Export", + "HeaderColumns": "Columns", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/fr.json b/MediaBrowser.Server.Implementations/Localization/Server/fr.json index d35df7b1b..54fda4a37 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/fr.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/fr.json @@ -1,5 +1,4 @@ { - "TabWebClient": "Client Web", "LabelExit": "Quitter", "LabelVisitCommunity": "Visiter la Communaut\u00e9", "LabelGithub": "Github", @@ -14,6 +13,7 @@ "LabelShowLogWindow": "Afficher la fen\u00eatre du journal d'\u00e9v\u00e8nements", "LabelPrevious": "Pr\u00e9c\u00e9dent", "LabelFinish": "Terminer", + "FolderTypeMixed": "Mixed content", "LabelNext": "Suivant", "LabelYoureDone": "Vous avez Termin\u00e9!", "WelcomeToProject": "Bienvenue dans Emby !", @@ -86,12 +86,11 @@ "ButtonDonateWithPayPal": "Faire un don avec Paypal", "OptionDetectArchiveFilesAsMedia": "Reconna\u00eetre les fichiers archives comme m\u00e9dias", "OptionDetectArchiveFilesAsMediaHelp": "Activez cette option pour reconna\u00eetre les fichiers portant l'extension .rar ou .zip comme des fichiers de m\u00e9dias. ", - "LabelEnterConnectUserName": "Nom d'utilisateur ou adresse email :", - "LabelEnterConnectUserNameHelp": "C'est votre nom d'utilisateur et mot de passe de votre compte Emby en ligne.", + "LabelEnterConnectUserName": "Nom d'utilisateur ou adresse mail :", + "LabelEnterConnectUserNameHelp": "C'est le nom d'utilisateur ou mot de passe de votre compte Emby en ligne.", "LabelEnableEnhancedMovies": "Activer le mode d'affichage \u00e9tendu des films", "LabelEnableEnhancedMoviesHelp": "Lorsque ce mode est activ\u00e9, les films seront affich\u00e9s comme des dossiers et incluront les bandes-annonces, les extras, l'\u00e9quipe de tournage et les autre contenus li\u00e9s.", "HeaderSyncJobInfo": "T\u00e2che de synchronisation", - "FolderTypeMixed": "Contenus m\u00e9lang\u00e9s", "FolderTypeMovies": "Films", "FolderTypeMusic": "Musique", "FolderTypeAdultVideos": "Vid\u00e9os Adultes", @@ -288,7 +287,9 @@ "OptionFileMetadataYearMismatch": "Conflit entre nom du fichier et les m\u00e9tadonn\u00e9es sur l'ann\u00e9e", "TabGeneral": "G\u00e9n\u00e9ral", "TitleSupport": "Assistance", + "LabelSeasonNumber": "Season number", "TabLog": "Journal d'\u00e9v\u00e9nements", + "LabelEpisodeNumber": "Episode number", "TabAbout": "\u00c0 propos", "TabSupporterKey": "Cl\u00e9 de membre supporteur", "TabBecomeSupporter": "Devenir un suporteur", @@ -314,6 +315,9 @@ "OptionAllowRemoteControlOthers": "Autoriser le contr\u00f4le \u00e0 distance des autres utilisateurs", "OptionAllowRemoteSharedDevices": "Autoriser le contr\u00f4le \u00e0 distance des appareils partag\u00e9s", "OptionAllowRemoteSharedDevicesHelp": "Les p\u00e9riph\u00e9riques Dlna sont consid\u00e9r\u00e9s comme partag\u00e9s tant qu'un utilisateur ne commence pas \u00e0 le contr\u00f4ler.", + "OptionAllowLinkSharing": "Autoriser le partage sur les r\u00e9seaux sociaux", + "OptionAllowLinkSharingHelp": "Seul les pages web contenant des informations sur les m\u00e9dias sont partag\u00e9s. Les fichiers de m\u00e9dias ne sont jamais publi\u00e9s publiquement. Les partages ont un temps limit\u00e9s et expirent en fonctions de vos param\u00e8tres de paratage du serveur.", + "HeaderSharing": "Partage", "HeaderRemoteControl": "Contr\u00f4le \u00e0 distance", "OptionMissingTmdbId": "ID TMDb manquant", "OptionIsHD": "HD", @@ -582,8 +586,6 @@ "LabelSkipped": "Saut\u00e9", "HeaderEpisodeOrganization": "Organisation des \u00e9pisodes", "LabelSeries": "S\u00e9ries :", - "LabelSeasonNumber": "Num\u00e9ro de la saison:", - "LabelEpisodeNumber": "Num\u00e9ro de l'\u00e9pisode:", "LabelEndingEpisodeNumber": "Num\u00e9ro d'\u00e9pisode final:", "LabelEndingEpisodeNumberHelp": "Uniquement requis pour les fichiers multi-\u00e9pisodes", "HeaderSupportTheTeam": "Aidez l'\u00e9quipe Emby", @@ -798,7 +800,7 @@ "LabelMaxBitrateHelp": "Sp\u00e9cifiez un d\u00e9bit maximum dans les environnements avec bande passante limit\u00e9e ou si l'appareil impose sa propre limite.", "LabelMaxStreamingBitrate": "D\u00e9bit max de streaming :", "LabelMaxStreamingBitrateHelp": "Sp\u00e9cifiez le d\u00e9bit max lors du streaming.", - "LabelMaxChromecastBitrate": "Max Chromecast bitrate:", + "LabelMaxChromecastBitrate": "D\u00e9bit Chromecast maximum", "LabelMaxStaticBitrate": "D\u00e9bit max de synchronisation :", "LabelMaxStaticBitrateHelp": "Sp\u00e9cifiez un d\u00e9bit max pour la synchronisation de contenu en haute qualit\u00e9.", "LabelMusicStaticBitrate": "D\u00e9bit de synchronisation de la musique", @@ -871,10 +873,11 @@ "HeaderTypeText": "Entrer texte", "LabelTypeText": "Texte", "HeaderSearchForSubtitles": "Rechercher des sous-titres", + "ButtonMore": "More", "MessageNoSubtitleSearchResultsFound": "Aucun r\u00e9sultat trouv\u00e9.", "TabDisplay": "Affichage", "TabLanguages": "Langues", - "TabAppSettings": "App Settings", + "TabAppSettings": "Param\u00e8tres de l'applications", "LabelEnableThemeSongs": "Activer les chansons th\u00e8mes", "LabelEnableBackdrops": "Activer les images d'arri\u00e8re-plans", "LabelEnableThemeSongsHelp": "Si activ\u00e9, les chansons th\u00e8mes seront lues en arri\u00e8re-plan pendant la navigation dans les biblioth\u00e8ques.", @@ -901,7 +904,7 @@ "HeaderLiveTv": "TV en direct", "HeaderReports": "Rapports", "HeaderMetadataManager": "Gestionnaire de m\u00e9tadonn\u00e9es", - "HeaderPreferences": "Pr\u00e9f\u00e9rences", + "HeaderSettings": "Param\u00e8tres", "MessageLoadingChannels": "Chargement du contenu de la cha\u00eene...", "MessageLoadingContent": "Chargement du contenu...", "ButtonMarkRead": "Marquer comme lu", @@ -1099,7 +1102,6 @@ "OptionReportArtists": "Artistes", "OptionReportAlbums": "Albums", "OptionReportAdultVideos": "Vid\u00e9os adultes", - "ButtonMore": "Voir la suite", "HeaderActivity": "Activit\u00e9", "ScheduledTaskStartedWithName": "{0} a commenc\u00e9", "ScheduledTaskCancelledWithName": "{0} a \u00e9t\u00e9 annul\u00e9", @@ -1229,6 +1231,7 @@ "OptionNoThemeVideo": "Pas de th\u00e8me vid\u00e9o", "LabelOneTimeDonationAmount": "Montant du don :", "ButtonDonate": "Faire un don", + "ButtonPurchase": "Acheter", "OptionActor": "Acteur(trice)", "OptionComposer": "Compositeur:", "OptionDirector": "R\u00e9alisateur:", @@ -1248,7 +1251,6 @@ "HeaderDeveloperInfo": "Info d\u00e9velopeur", "HeaderRevisionHistory": "Historique des r\u00e9visions", "ButtonViewWebsite": "Voir le site", - "LabelRecurringDonationCanBeCancelledHelp": "Des donations r\u00e9currentes peuvent \u00eatre annul\u00e9es \u00e0 tout moment depuis votre compte PayPal.", "HeaderXmlSettings": "R\u00e9glages Xml", "HeaderXmlDocumentAttributes": "Attributs des documents Xml", "HeaderXmlDocumentAttribute": "Attribut des documents Xml", @@ -1262,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Plus d'infos sur Emby Connect", "LabelExternalPlayers": "Lecteurs externes:", "LabelExternalPlayersHelp": "Afficher les boutons pour lire du contenu sur le lecteur externe. Ceci est valable uniquement sur des appareils supportant les URLs, g\u00e9n\u00e9ralement Android et iOS. Avec les lecteurs externes il n'y a g\u00e9n\u00e9ralement pas de support pour le contr\u00f4le \u00e0 distance ou la reprise.", + "LabelNativeExternalPlayersHelp": "Afficher les boutons pour lire le contenu sur les lecteurs externes.", + "LabelEnableItemPreviews": "Activer les aper\u00e7us des \u00e9l\u00e9ments", + "LabelEnableItemPreviewsHelp": "Activez cette option pour faire appara\u00eetre des aper\u00e7us d\u00e9roulants lorsque vous cliquez sur les \u00e9l\u00e9ments de certains \u00e9crans", "HeaderSubtitleProfile": "Profil de sous-titre", "HeaderSubtitleProfiles": "Profils de sous-titre", "HeaderSubtitleProfilesHelp": "Les profils de sous-titre d\u00e9crivent les formats de sous-titre support\u00e9s par l'appareil.", @@ -1390,7 +1395,7 @@ "HeaderUpcomingMovies": "Films \u00e0 venir", "HeaderUpcomingSports": "Ev\u00e9nements sportifs \u00e0 venir", "HeaderUpcomingPrograms": "Programmes \u00e0 venir", - "ButtonMoreItems": "Plus...", + "ButtonMoreItems": "Plus", "LabelShowLibraryTileNames": "Voir les noms des affiches de la biblioth\u00e8que", "LabelShowLibraryTileNamesHelp": "D\u00e9termine si les noms doivent \u00eatre affich\u00e9s en dessous des affiches de la biblioth\u00e8que sur la page d'accueil", "OptionEnableTranscodingThrottle": "Activer le throttling", @@ -1409,29 +1414,41 @@ "OptionEnableFullSpeedConversion": "Autoriser le transcodage rapide", "OptionEnableFullSpeedConversionHelp": "Par d\u00e9faut, le transcodage est r\u00e9alis\u00e9 de mani\u00e8re lente pour minimiser la consommation de ressources.", "HeaderPlaylists": "Listes de lecture", - "HeaderSelectDate": "S\u00e9lectionnez la date", - "HeaderWelcomeExclamation": "Bienvenue !", - "HeaderMyPreferences": "Mes pr\u00e9f\u00e9rences", - "ButtonMyPreferencesWelcomeYes": "Oui, je voudrais d\u00e9finir mes pr\u00e9f\u00e9rences maintenant.", - "ButtonMyPreferencesWelcomeNo": "Non merci, je le ferai plus tard.", - "MyPreferencesWelcomeMessage1": "Nous avons pr\u00e9sent\u00e9 votre biblioth\u00e8que d'une mani\u00e8re que nous pensons agr\u00e9able. L'apparence et les regroupements de contenus peuvent \u00eatre modifi\u00e9s \u00e0 tout moment en ajustant vos pr\u00e9f\u00e9rences. Vos pr\u00e9f\u00e9rences s'appliqueront \u00e0 toutes vos applications Emby.", - "MyPreferencesWelcomeMessage2": "Voulez-vous d\u00e9finir vos pr\u00e9f\u00e9rences maintenant ?", - "ToAccessPreferencesHelp": "Pour acc\u00e9der plus tard \u00e0 vos pr\u00e9f\u00e9rences, cliquez sur l'ic\u00f4ne utilisateur dans le bandeau en haut \u00e0 droite et s\u00e9lectionnez Mes pr\u00e9f\u00e9rences.", "HeaderViewStyles": "Styles d'affichage", - "LabelSelectViewStyles": "Enable enhanced presentations for:", + "LabelSelectViewStyles": "Activer les pr\u00e9sentations am\u00e9lior\u00e9es pour :", "LabelSelectViewStylesHelp": "Si vous activez cette option, l'affichage utilisera les m\u00e9tadonn\u00e9es pour ajouter des cat\u00e9gories telles que Suggestions, Derni\u00e8res, Genres, ... Si vous d\u00e9sactivez cette option, l'affichage sera simplement bas\u00e9 sur les dossiers.", "TabPhotos": "Photos", - "TabVideos": "Videos", - "HeaderWelcomeToEmby": "Welcome to Emby", - "EmbyIntroMessage": "With Emby you can easily stream videos, music and photos to smart phones, tablets and other devices from your Emby Server.", - "ButtonSkip": "Skip", - "TextConnectToServerManually": "Connect to server manually", - "ButtonSignInWithConnect": "Sign in with Emby Connect", - "ButtonConnect": "Connect", - "LabelServerHost": "Host:", - "LabelServerHostHelp": "192.168.1.100 or https:\/\/myserver.com", - "LabelServerPort": "Port:", - "HeaderNewServer": "New Server", - "ButtonChangeServer": "Change Server", - "HeaderConnectToServer": "Connect to Server" + "TabVideos": "Vid\u00e9os", + "HeaderWelcomeToEmby": "Bienvenue sur Emby", + "EmbyIntroMessage": "Avec Emby, vous pouvez facilement diffuser vid\u00e9os, musique et photos sur Android et autres p\u00e9riph\u00e9riques de votre serveur Emby.", + "ButtonSkip": "Passer", + "TextConnectToServerManually": "Connexion manuelle \u00e0 mon serveur", + "ButtonSignInWithConnect": "Se connecter avec Emby Connect", + "ButtonConnect": "Connexion", + "LabelServerHost": "Nom d'h\u00f4te :", + "LabelServerHostHelp": "192.168.1.1 ou https:\/\/monserveur.com", + "LabelServerPort": "Port :", + "HeaderNewServer": "Nouveau serveur", + "ButtonChangeServer": "Changer de serveur", + "HeaderConnectToServer": "Connexion au serveur", + "OptionReportList": "Vue en liste", + "OptionReportStatistics": "Statistiques", + "OptionReportGrouping": "Groupement", + "HeaderExport": "Exporter", + "HeaderColumns": "Colonnes", + "ButtonReset": "R\u00e9initialiser", + "OptionEnableExternalVideoPlayers": "Activer les lecteurs vid\u00e9o externes", + "ButtonUnlockGuide": "D\u00e9verrouiller le Guide", + "LabelEnableFullScreen": "Activer le mode plein \u00e9cran", + "LabelEnableChromecastAc3Passthrough": "Activer le mode Chromecast AC3 Passthrough", + "LabelSyncPath": "Chemin du contenu synchronis\u00e9:", + "LabelEmail": "Email :", + "LabelUsername": "Nom d'utilisateur :", + "HeaderSignUp": "S'inscrire", + "LabelPasswordConfirm": "Mot de passe (confirmation) :", + "ButtonAddServer": "Ajouter un serveur", + "TabHomeScreen": "Ecran d'accueil", + "HeaderDisplay": "Afficher", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "Ces param\u00e8tres sont partag\u00e9s sur tous les p\u00e9riph\u00e9riques." }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/gsw.json b/MediaBrowser.Server.Implementations/Localization/Server/gsw.json new file mode 100644 index 000000000..f97cb7771 --- /dev/null +++ b/MediaBrowser.Server.Implementations/Localization/Server/gsw.json @@ -0,0 +1,1454 @@ +{ + "LabelExit": "Verlasse", + "LabelVisitCommunity": "Bsuech d'Community", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standard", + "LabelApiDocumentation": "API Dokumentatione", + "LabelDeveloperResources": "Entwickler Ressurce", + "LabelBrowseLibrary": "Dursuech d'Bibliothek", + "LabelConfigureServer": "Konfigurier Emby", + "LabelOpenLibraryViewer": "\u00d6ffne d'Asicht f\u00f6r Bibliotheke", + "LabelRestartServer": "Server neustarte", + "LabelShowLogWindow": "Zeig Log-Feischter", + "LabelPrevious": "Vorher", + "LabelFinish": "Beende", + "FolderTypeMixed": "Mixed content", + "LabelNext": "N\u00f6chst", + "LabelYoureDone": "Du besch fertig!", + "WelcomeToProject": "Willkomme bi Emby!", + "ThisWizardWillGuideYou": "De Assistent hilft der dur de Installations Prozess. Zum afange, w\u00e4hl bitte dini Sproch us.", + "TellUsAboutYourself": "Verzell was \u00fcber dech selber", + "ButtonQuickStartGuide": "Schnellstart Instruktione", + "LabelYourFirstName": "Din Vorname:", + "MoreUsersCanBeAddedLater": "Meh User ch\u00f6nt sp\u00f6ter im Dashboard hinzuegf\u00fcegt werde.", + "UserProfilesIntro": "Emby beinhaltet iibauti Unterst\u00fctzig f\u00f6r User-Profil, wo mer siini eigene Asichte, Spellst\u00e4nd und Altersfriigobe iistelle chan.", + "LabelWindowsService": "Windows Dienst", + "AWindowsServiceHasBeenInstalled": "En Windows Dienst esch installiert worde.", + "WindowsServiceIntro1": "Emby Server lauft normalerwiis als Desktop-Software mit emene Icon i de Taskliiste, aber falls es du vorziehsch das ganze als Dienst laufe z'loh, chasch es i de Windows Dienst under de Systemst\u00fcrig finde und starte.", + "WindowsServiceIntro2": "Falls de Windows Dienst verwendet wird, merk der bitte, dass es n\u00f6d gliichziitig au als Icon i de Taskliiste laufe chan, also muesch erst di normal Software beende um de Dienst ch\u00f6ne z'starte. De Dienst muess usserdem mit Adminrecht \u00fcber d'Systemst\u00fcrig verf\u00fcege. Merk der usserdem, dass de Windows Dienst sich ned selber chan update, also muesch jedes Update vo Hand us dure f\u00fcehre.", + "WizardCompleted": "Das esch alles wo mer momentan m\u00fcend w\u00fcsse. Emby het i de zw\u00fcscheziit agfange informatione \u00fcber diini medie-bibliothek z'sammle. Lueg der es paar vo eusne Apps a und denn klick uf <b>Beende<\/b> um zum <b>Server Dashboard<\/b> z'cho.", + "LabelConfigureSettings": "Bearbeite iistellige", + "LabelEnableVideoImageExtraction": "Aktiviere d'Extrahierig f\u00f6r Videobilder", + "VideoImageExtractionHelp": "F\u00f6r Videos wo ned bereits scho Bilder hend und wo kei M\u00f6glichkeite hend die im \u00a3Internet z'finde. Das verbrucht chli meh Ziit f\u00f6r de ersti Scan vo de Bibliothek, gseht aber schlussament besser us.", + "LabelEnableChapterImageExtractionForMovies": "Aktiviere d'Extrahierig f\u00f6r Kapitelbilder vo diine Film", + "LabelChapterImageExtractionForMoviesHelp": "Extrahierig vo de Kapitelbilder zeigt der denn es Bild i de Scene als Uswahl im Men\u00fc. De Prozess chan langsam sii, CPU-lastig und verbrutzled m\u00f6glicherwiis mehreri Gigabyte a Speicherplatz. I de Regel lauft das i de Nacht als planti Ufgab, alternativ chasch es au selber konfiguriere i de Planti Ufgabe siite. Es esch n\u00f6d empfohle die Ufgab w\u00e4hrend h\u00f6che Uslastige dure z'f\u00fcehre.", + "LabelEnableAutomaticPortMapping": "Aktiviere s'automaitsche Port Mapping", + "LabelEnableAutomaticPortMappingHelp": "UPnP erlaubt en automatischi Routeriistellig f\u00f6r eifache Remote-Zuegang. Das chan under umst\u00e4nde mit es paar Router ned funktioniere.", + "HeaderTermsOfService": "Emby Nutzigsbedingige", + "MessagePleaseAcceptTermsOfService": "Bitte akzeptiere z'erst no d'Nutzigsbedingige und Datenutzig-Richtlinie bevor du wiiter machsch.", + "OptionIAcceptTermsOfService": "Ich akzeptiere d'Nutzigsbedingige", + "ButtonPrivacyPolicy": "Datenutzig-Richtlinie", + "ButtonTermsOfService": "Nutzigsbedingige", + "HeaderDeveloperOptions": "Entwickler Optione", + "OptionEnableWebClientResponseCache": "Aktiviere d'Antwort zw\u00fcschespeicherig vom Web Client.", + "OptionDisableForDevelopmentHelp": "Konfiguriere das falls n\u00f6tig f\u00fcr jeglichi Entwicklerzweck.", + "OptionEnableWebClientResourceMinification": "Aktiviere d'Minimierig vo de Ressource vom Web Client.", + "LabelDashboardSourcePath": "Web Client Sourcepfad:", + "LabelDashboardSourcePathHelp": "Falls de Server vonere andere Source bedient s\u00f6ll werde, geb bitte de genaui Pfad zum dashboard-ui Ordner a. Alli Date vom Web Client werded vo dem Verzeichnis us bedient werde.", + "ButtonConvertMedia": "Konvertiere Medie", + "ButtonOrganize": "Organisiere", + "LinkedToEmbyConnect": "Verbunde zu Emby Connect", + "HeaderSupporterBenefits": "Supporter Vorteil", + "HeaderAddUser": "Erstell en User", + "LabelAddConnectSupporterHelp": "Um en User wo ned ufglistet esch us z'w\u00e4hle, muesch z'erst no sin Account mit Emby Connect im Userprofil verbinde.", + "LabelPinCode": "Pin Code:", + "OptionHideWatchedContentFromLatestMedia": "Versteck bereits agluegti Medie i de Rubrik neui Medie", + "HeaderSync": "synchronisiere", + "ButtonOk": "OK", + "ButtonCancel": "Abbreche", + "ButtonExit": "Verlasse", + "ButtonNew": "Neu", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Pfad", + "CategorySync": "Synchronisierig", + "TabPlaylist": "Playliste", + "HeaderEasyPinCode": "Eifache Pin Code", + "HeaderGrownupsOnly": "Nur Erwachseni!", + "DividerOr": "-- odr --", + "HeaderInstalledServices": "Installierti Dienst", + "HeaderAvailableServices": "Verf\u00fcegbari Dienst", + "MessageNoServicesInstalled": "Es sind momentan kei Dienst installiert.", + "HeaderToAccessPleaseEnterEasyPinCode": "Um Zuegriff z'ha, gib bitte diin eifache Pin Code i", + "KidsModeAdultInstruction": "Klick ufs Schloss-Icon im undere rechte Egge zum konfiguriere oder verlasse vom Kinder Modus. Diin Pin Code wird erforderlich sii.", + "ButtonConfigurePinCode": "Konfigurier de Pin Code", + "HeaderAdultsReadHere": "Erwachseni bitte do lese!", + "RegisterWithPayPal": "Registrier di mit PayPal", + "HeaderSyncRequiresSupporterMembership": "Synchronisierig brucht en Supporter Mitgliedschaft", + "HeaderEnjoyDayTrial": "Gn\u00fcss diin 14-T\u00e4g gratis Ziit zum teste", + "LabelSyncTempPath": "Pfad f\u00f6r tempor\u00e4ri Date:", + "LabelSyncTempPathHelp": "Gib en eigene Arbetsordner f\u00f6r d'Synchronisierig a. Konvertierti Medie werded w\u00e4hrend em Sync-Prozess det gspeichered.", + "LabelCustomCertificatePath": "Eigene Pfad f\u00f6r Zertifikat:", + "LabelCustomCertificatePathHelp": "Gib en eigene Pfad f\u00fcr SSL-Zertifikat (*.pfx) a. Falls ned, wird de Server es selber signierts Zertifikat erstelle.", + "TitleNotifications": "Mitteilige", + "ButtonDonateWithPayPal": "Spende mit PayPal", + "OptionDetectArchiveFilesAsMedia": "Erkenn Archiv als Mediedateie", + "OptionDetectArchiveFilesAsMediaHelp": "Falls aktiviert, werded *.rar und *.zip Date als Medie erkennt.", + "LabelEnterConnectUserName": "Username or email:", + "LabelEnterConnectUserNameHelp": "This is your Emby online account username or password.", + "LabelEnableEnhancedMovies": "Aktivier erwiiterti Filmasichte", + "LabelEnableEnhancedMoviesHelp": "Falls aktiviert, werded Film als ganzi Ordner inkl Trailer, Extras wie Casting & Crew und anderi wichtigi Date azeigt.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMovies": "Film", + "FolderTypeMusic": "Musig", + "FolderTypeAdultVideos": "Erwachseni Film", + "FolderTypePhotos": "F\u00f6teli", + "FolderTypeMusicVideos": "Musigvideos", + "FolderTypeHomeVideos": "Heimvideos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "B\u00fcecher", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "erbf\u00e4hig", + "LabelContentType": "Date Art:", + "TitleScheduledTasks": "Planti Ufgabe", + "HeaderSetupLibrary": "Stell diini Mediebibliothek i", + "ButtonAddMediaFolder": "F\u00fceg en Medieordner dezue.", + "LabelFolderType": "Ordner Art:", + "ReferToMediaLibraryWiki": "Lueg im Wiki f\u00f6r Mediebiblithek noh.", + "LabelCountry": "Land:", + "LabelLanguage": "Sproch:", + "LabelTimeLimitHours": "Ziitlimit (h):", + "ButtonJoinTheDevelopmentTeam": "Tritt eusem Entwicklerteam bi", + "HeaderPreferredMetadataLanguage": "Bevorzuegti Metadate Sproch:", + "LabelSaveLocalMetadata": "Speicher Bilder und Metadate i d'Medieordner", + "LabelSaveLocalMetadataHelp": "Wennd Bilder und Metadate direkt i d'Medieordner speicherisch, chasch sie eifach weder finde und au bearbeite.", + "LabelDownloadInternetMetadata": "Lade Bilder und Metadate vom Internet abe", + "LabelDownloadInternetMetadataHelp": "Emby Server chan Infos vo diine Medie abelade um gr\u00f6sseri und sch\u00f6neri Asichte z'generiere.", + "TabPreferences": "iistellige", + "TabPassword": "Passwort", + "TabLibraryAccess": "Bibliothek Zuegriff", + "TabAccess": "Zuegriff", + "TabImage": "Bild", + "TabProfile": "Profil", + "TabMetadata": "Metadate", + "TabImages": "Bilder", + "TabNotifications": "Mitteilige", + "TabCollectionTitles": "Titel", + "HeaderDeviceAccess": "Gr\u00e4t Zuegriff", + "OptionEnableAccessFromAllDevices": "Aktiviere de Zuegriff vo allne Gr\u00e4t", + "OptionEnableAccessToAllChannels": "Aktiviere de Zuegriff zu allne Kan\u00e4l", + "OptionEnableAccessToAllLibraries": "Aktiviere de Zuegriff zu allne Bibliotheke", + "DeviceAccessHelp": "Das betrifft nur Gr\u00e4t wo einzigartig indentifiziert werded und tuet ned Browser Zuegriff verhindere. En Filter f\u00f6r Gr\u00e4t Zuegriff verhindered, dass neui Gr\u00e4t dezue gf\u00fcegt werded, bovor si ned \u00fcberpr\u00fcefd worde sind.", + "LabelDisplayMissingEpisodesWithinSeasons": "Zeig fehlendi Episode innerhalb vo de einzelne Staffle", + "LabelUnairedMissingEpisodesWithinSeasons": "Zeig ned usgstrahlti Episode innerhalb vo de einzelne Staffle", + "HeaderVideoPlaybackSettings": "Video Abspell iistellige", + "HeaderPlaybackSettings": "Abspell iistellige", + "LabelAudioLanguagePreference": "Audio Sproch iistellig:", + "LabelSubtitleLanguagePreference": "Undertitel Sproch iistellig:", + "OptionDefaultSubtitles": "Normal", + "OptionOnlyForcedSubtitles": "Nur erzwungeni Undertitel", + "OptionAlwaysPlaySubtitles": "Zeig immer Undertitel a", + "OptionNoSubtitles": "Kei Undertitel", + "OptionDefaultSubtitlesHelp": "Undertitel wo de Sproch iistellige gliich sind, werded nur glade, wenn d'Audiospur inere fr\u00f6mde Sproch esch.", + "OptionOnlyForcedSubtitlesHelp": "Nur Undertitel wo erzwunge werded, werded glade.", + "OptionAlwaysPlaySubtitlesHelp": "Undertitel wo de Sprochiistellige gliich sind, werded usnahmslos glade, egal uf d'Audiospur.", + "OptionNoSubtitlesHelp": "Undertitel werded normalerwiis ned glade.", + "TabProfiles": "Profil", + "TabSecurity": "Sicherheit", + "ButtonAddUser": "Erstell en User", + "ButtonAddLocalUser": "Erstell en lokale User", + "ButtonInviteUser": "Lad en User i", + "ButtonSave": "Speichere", + "ButtonResetPassword": "Passwort zrug setze", + "LabelNewPassword": "Neus Passwort:", + "LabelNewPasswordConfirm": "Neus Passwort best\u00e4tige:", + "HeaderCreatePassword": "Erstell es Passwort", + "LabelCurrentPassword": "Jetzigs Passwort:", + "LabelMaxParentalRating": "Maximum erlaubti Kindersicherig:", + "MaxParentalRatingHelp": "Date mit enere h\u00f6here Kindersicherig werded vo dem User versteckt.", + "LibraryAccessHelp": "W\u00e4hl en Medieordner us, um de mit dem User z'teile. Administratore werded immer d'M\u00f6glichkeit ha alli Verzeichnis mitm Metadate Manager z'bearbeite.", + "ChannelAccessHelp": "W\u00e4hl en Kanal us, um de mit dem User z'teile. Administratore werded immer d'M\u00f6glichkeit ha alli Kan\u00e4l mitm Metadate Manager z'bearbeite.", + "ButtonDeleteImage": "L\u00f6sch Bild", + "LabelSelectUsers": "W\u00e4hl User:", + "ButtonUpload": "Upload", + "HeaderUploadNewImage": "Lad es neus Bild ue", + "LabelDropImageHere": "Leg es Bild do ab.", + "ImageUploadAspectRatioHelp": "1:1 Siiteverh\u00e4ltnis w\u00e4r vo Vorteil - nur JPG\/PNG.", + "MessageNothingHere": "Nix da.", + "MessagePleaseEnsureInternetMetadata": "Bitte stell sicher, dass Abelade vo Metadate vom Internet aktiviert worde esch.", + "TabSuggested": "Vorgschlage", + "TabSuggestions": "Vorschl\u00e4g", + "TabLatest": "Letschti", + "TabUpcoming": "Usstehend", + "TabShows": "Serie", + "TabEpisodes": "Episode", + "TabGenres": "Genre", + "TabPeople": "Persone", + "TabNetworks": "Studios", + "HeaderUsers": "User", + "HeaderFilters": "Filter:", + "ButtonFilter": "Filter", + "OptionFavorite": "Favorite", + "OptionLikes": "Likes", + "OptionDislikes": "Dislikes", + "OptionActors": "Darsteller", + "OptionGuestStars": "Gast Stars", + "OptionDirectors": "Regisseur", + "OptionWriters": "Autor", + "OptionProducers": "Produzent", + "HeaderResume": "Fortsetze", + "HeaderNextUp": "Als n\u00f6chsts", + "NoNextUpItemsMessage": "Nix da. Fang mal a Serie luege!", + "HeaderLatestEpisodes": "Letschti Episode", + "HeaderPersonTypes": "Persone Art:", + "TabSongs": "Songs", + "TabAlbums": "Albene", + "TabArtists": "Artist", + "TabAlbumArtists": "Album-Artist", + "TabMusicVideos": "Musigvideos", + "ButtonSort": "Sortiere", + "HeaderSortBy": "Sortier nach:", + "HeaderSortOrder": "Sortier Reihefolg:", + "OptionPlayed": "Gspellt", + "OptionUnplayed": "Ungspellt", + "OptionAscending": "Ufstiigend", + "OptionDescending": "Abstiigend", + "OptionRuntime": "Laufziit", + "OptionReleaseDate": "Release Ziit:", + "OptionPlayCount": "Z\u00e4hler", + "OptionDatePlayed": "Abgspellt am", + "OptionDateAdded": "Dezue gf\u00fcegt am", + "OptionAlbumArtist": "Album-Artist", + "OptionArtist": "Artist", + "OptionAlbum": "Album", + "OptionTrackName": "Track Name", + "OptionCommunityRating": "Community Bewertig", + "OptionNameSort": "Name", + "OptionFolderSort": "Ordner", + "OptionBudget": "Budget", + "OptionRevenue": "iinahme", + "OptionPoster": "Poster", + "OptionPosterCard": "Postercharte", + "OptionBackdrop": "Hindergrund", + "OptionTimeline": "Ziitlinie", + "OptionThumb": "Thumb", + "OptionThumbCard": "Thumbcharte", + "OptionBanner": "Banner", + "OptionCriticRating": "Kritiker Bewertig", + "OptionVideoBitrate": "Video Bitrate", + "OptionResumable": "Chan fortgsetzt werde", + "ScheduledTasksHelp": "Klick uf en Ufgab zum di entsprechend Planig iistelle.", + "ScheduledTasksTitle": "Planti Ufgabe", + "TabMyPlugins": "Miini Plugins", + "TabCatalog": "Katalog", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "Automatischi Updates", + "HeaderNowPlaying": "Jetz am spelle", + "HeaderLatestAlbums": "Letschti Albene", + "HeaderLatestSongs": "Letschti Songs", + "HeaderRecentlyPlayed": "Erst grad dezue gf\u00fcegt", + "HeaderFrequentlyPlayed": "Vell gspellt", + "DevBuildWarning": "Dev-Builds sind experimentell, werded vell versione releasd und sind \u00f6ppe die mal ned tested worde. Die Software chan abst\u00fcrze und die komplette Features m\u00fcend ned zwingend funktioniere laufe.", + "LabelVideoType": "Video Art:", + "OptionBluray": "BluRay", + "OptionDvd": "DVD", + "OptionIso": "ISO", + "Option3D": "3D", + "LabelFeatures": "Features:", + "LabelService": "Service:", + "LabelStatus": "Status:", + "LabelVersion": "Version:", + "LabelLastResult": "Letschti Ergebnis:", + "OptionHasSubtitles": "Undertitel", + "OptionHasTrailer": "Trailer", + "OptionHasThemeSong": "Theme Song", + "OptionHasThemeVideo": "Theme Video", + "TabMovies": "Film", + "TabStudios": "Studios", + "TabTrailers": "Trailers", + "LabelArtists": "Artist:", + "LabelArtistsHelp": "Trenn mehreri iistr\u00e4g dur es ;", + "HeaderLatestMovies": "Letschti Film", + "HeaderLatestTrailers": "Letschti Trailer", + "OptionHasSpecialFeatures": "Special Features", + "OptionImdbRating": "IMDB Bewertig", + "OptionParentalRating": "Altersfriigab", + "OptionPremiereDate": "Premiere Datum", + "TabBasic": "Eifach", + "TabAdvanced": "Erwiitert", + "HeaderStatus": "Status", + "OptionContinuing": "Fortlaufend", + "OptionEnded": "Beendent", + "HeaderAirDays": "Usstrahligs T\u00e4g", + "OptionSunday": "Sonntig", + "OptionMonday": "M\u00e4ntig", + "OptionTuesday": "Tsischtig", + "OptionWednesday": "Mittwoch", + "OptionThursday": "Donnstig", + "OptionFriday": "Friitig", + "OptionSaturday": "Samstig", + "HeaderManagement": "Verwaltig", + "LabelManagement": "Verwaltig:", + "OptionMissingImdbId": "Fehlendi IMDB ID", + "OptionMissingTvdbId": "Missing TheTVDB Id", + "OptionMissingOverview": "Missing Overview", + "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", + "TabGeneral": "General", + "TitleSupport": "Support", + "LabelSeasonNumber": "Season number", + "TabLog": "Log", + "LabelEpisodeNumber": "Episode number", + "TabAbout": "About", + "TabSupporterKey": "Supporter Key", + "TabBecomeSupporter": "Become a Supporter", + "ProjectHasCommunity": "Emby has a thriving community of users and contributors.", + "CheckoutKnowledgeBase": "Check out our knowledge base to help you get the most out of Emby.", + "SearchKnowledgeBase": "Search the Knowledge Base", + "VisitTheCommunity": "Visit the Community", + "VisitProjectWebsite": "Visit the Emby Web Site", + "VisitProjectWebsiteLong": "Visit the Emby Web site to catch the latest news and keep up with the developer blog.", + "OptionHideUser": "Hide this user from login screens", + "OptionHideUserFromLoginHelp": "Useful for private or hidden administrator accounts. The user will need to sign in manually by entering their username and password.", + "OptionDisableUser": "Disable this user", + "OptionDisableUserHelp": "If disabled the server will not allow any connections from this user. Existing connections will be abruptly terminated.", + "HeaderAdvancedControl": "Advanced Control", + "LabelName": "Name:", + "ButtonHelp": "Help", + "OptionAllowUserToManageServer": "Allow this user to manage the server", + "HeaderFeatureAccess": "Feature Access", + "OptionAllowMediaPlayback": "Allow media playback", + "OptionAllowBrowsingLiveTv": "Allow Live TV access", + "OptionAllowDeleteLibraryContent": "Allow media deletion", + "OptionAllowManageLiveTv": "Allow Live TV recording management", + "OptionAllowRemoteControlOthers": "Allow remote control of other users", + "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", + "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", + "HeaderRemoteControl": "Remote Control", + "OptionMissingTmdbId": "Missing Tmdb Id", + "OptionIsHD": "HD", + "OptionIsSD": "SD", + "OptionMetascore": "Metascore", + "ButtonSelect": "Select", + "ButtonGroupVersions": "Group Versions", + "ButtonAddToCollection": "Add to Collection", + "PismoMessage": "Utilizing Pismo File Mount through a donated license.", + "TangibleSoftwareMessage": "Utilizing Tangible Solutions Java\/C# converters through a donated license.", + "HeaderCredits": "Credits", + "PleaseSupportOtherProduces": "Please support other free products we utilize:", + "VersionNumber": "Version {0}", + "TabPaths": "Paths", + "TabServer": "Server", + "TabTranscoding": "Transcoding", + "TitleAdvanced": "Advanced", + "LabelAutomaticUpdateLevel": "Automatic update level", + "OptionRelease": "Official Release", + "OptionBeta": "Beta", + "OptionDev": "Dev (Unstable)", + "LabelAllowServerAutoRestart": "Allow the server to restart automatically to apply updates", + "LabelAllowServerAutoRestartHelp": "The server will only restart during idle periods, when no users are active.", + "LabelEnableDebugLogging": "Enable debug logging", + "LabelRunServerAtStartup": "Run server at startup", + "LabelRunServerAtStartupHelp": "This will start the tray icon on windows startup. To start the windows service, uncheck this and run the service from the windows control panel. Please note that you cannot run both at the same time, so you will need to exit the tray icon before starting the service.", + "ButtonSelectDirectory": "Select Directory", + "LabelCustomPaths": "Specify custom paths where desired. Leave fields empty to use the defaults.", + "LabelCachePath": "Cache path:", + "LabelCachePathHelp": "Specify a custom location for server cache files, such as images.", + "LabelImagesByNamePath": "Images by name path:", + "LabelImagesByNamePathHelp": "Specify a custom location for downloaded actor, genre and studio images.", + "LabelMetadataPath": "Metadata path:", + "LabelMetadataPathHelp": "Specify a custom location for downloaded artwork and metadata, if not saving within media folders.", + "LabelTranscodingTempPath": "Transcoding temporary path:", + "LabelTranscodingTempPathHelp": "This folder contains working files used by the transcoder. Specify a custom path, or leave empty to use the default within the server's data folder.", + "TabBasics": "Basics", + "TabTV": "TV", + "TabGames": "Games", + "TabMusic": "Music", + "TabOthers": "Others", + "HeaderExtractChapterImagesFor": "Extract chapter images for:", + "OptionMovies": "Movies", + "OptionEpisodes": "Episodes", + "OptionOtherVideos": "Other Videos", + "TitleMetadata": "Metadata", + "LabelAutomaticUpdates": "Enable automatic updates", + "LabelAutomaticUpdatesTmdb": "Enable automatic updates from TheMovieDB.org", + "LabelAutomaticUpdatesTvdb": "Enable automatic updates from TheTVDB.com", + "LabelAutomaticUpdatesFanartHelp": "If enabled, new images will be downloaded automatically as they're added to fanart.tv. Existing images will not be replaced.", + "LabelAutomaticUpdatesTmdbHelp": "If enabled, new images will be downloaded automatically as they're added to TheMovieDB.org. Existing images will not be replaced.", + "LabelAutomaticUpdatesTvdbHelp": "If enabled, new images will be downloaded automatically as they're added to TheTVDB.com. Existing images will not be replaced.", + "LabelFanartApiKey": "Personal api key:", + "LabelFanartApiKeyHelp": "Requests to fanart without a personal API key return results that were approved over 7 days ago. With a personal API key that drops to 48 hours and if you are also a fanart VIP member that will further drop to around 10 minutes.", + "ExtractChapterImagesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs when videos are discovered, and also as a nightly scheduled task. The schedule is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelMetadataDownloadLanguage": "Preferred download language:", + "ButtonAutoScroll": "Auto-scroll", + "LabelImageSavingConvention": "Image saving convention:", + "LabelImageSavingConventionHelp": "Emby recognizes images from most major media applications. Choosing your downloading convention is useful if you also use other products.", + "OptionImageSavingCompatible": "Compatible - Emby\/Kodi\/Plex", + "OptionImageSavingStandard": "Standard - MB2", + "ButtonSignIn": "Sign In", + "TitleSignIn": "Sign In", + "HeaderPleaseSignIn": "Please sign in", + "LabelUser": "User:", + "LabelPassword": "Password:", + "ButtonManualLogin": "Manual Login", + "PasswordLocalhostMessage": "Passwords are not required when logging in from localhost.", + "TabGuide": "Guide", + "TabChannels": "Channels", + "TabCollections": "Collections", + "HeaderChannels": "Channels", + "TabRecordings": "Recordings", + "TabScheduled": "Scheduled", + "TabSeries": "Series", + "TabFavorites": "Favorites", + "TabMyLibrary": "My Library", + "ButtonCancelRecording": "Cancel Recording", + "HeaderPrePostPadding": "Pre\/Post Padding", + "LabelPrePaddingMinutes": "Pre-padding minutes:", + "OptionPrePaddingRequired": "Pre-padding is required in order to record.", + "LabelPostPaddingMinutes": "Post-padding minutes:", + "OptionPostPaddingRequired": "Post-padding is required in order to record.", + "HeaderWhatsOnTV": "What's On", + "HeaderUpcomingTV": "Upcoming TV", + "TabStatus": "Status", + "TabSettings": "Settings", + "ButtonRefreshGuideData": "Refresh Guide Data", + "ButtonRefresh": "Refresh", + "ButtonAdvancedRefresh": "Advanced Refresh", + "OptionPriority": "Priority", + "OptionRecordOnAllChannels": "Record on all channels", + "OptionRecordAnytime": "Record at any time", + "OptionRecordOnlyNewEpisodes": "Record only new episodes", + "HeaderRepeatingOptions": "Repeating Options", + "HeaderDays": "Days", + "HeaderActiveRecordings": "Active Recordings", + "HeaderLatestRecordings": "Latest Recordings", + "HeaderAllRecordings": "All Recordings", + "ButtonPlay": "Play", + "ButtonEdit": "Edit", + "ButtonRecord": "Record", + "ButtonDelete": "Delete", + "ButtonRemove": "Remove", + "OptionRecordSeries": "Record Series", + "HeaderDetails": "Details", + "TitleLiveTV": "Live TV", + "LabelNumberOfGuideDays": "Number of days of guide data to download:", + "LabelNumberOfGuideDaysHelp": "Downloading more days worth of guide data provides the ability to schedule out further in advance and view more listings, but it will also take longer to download. Auto will choose based on the number of channels.", + "OptionAutomatic": "Auto", + "HeaderServices": "Services", + "LiveTvPluginRequired": "A Live TV service provider plugin is required in order to continue.", + "LiveTvPluginRequiredHelp": "Please install one of our available plugins, such as Next Pvr or ServerWmc.", + "LabelCustomizeOptionsPerMediaType": "Customize for media type:", + "OptionDownloadThumbImage": "Thumb", + "OptionDownloadMenuImage": "Menu", + "OptionDownloadLogoImage": "Logo", + "OptionDownloadBoxImage": "Box", + "OptionDownloadDiscImage": "Disc", + "OptionDownloadBannerImage": "Banner", + "OptionDownloadBackImage": "Back", + "OptionDownloadArtImage": "Art", + "OptionDownloadPrimaryImage": "Primary", + "HeaderFetchImages": "Fetch Images:", + "HeaderImageSettings": "Image Settings", + "TabOther": "Other", + "LabelMaxBackdropsPerItem": "Maximum number of backdrops per item:", + "LabelMaxScreenshotsPerItem": "Maximum number of screenshots per item:", + "LabelMinBackdropDownloadWidth": "Minimum backdrop download width:", + "LabelMinScreenshotDownloadWidth": "Minimum screenshot download width:", + "ButtonAddScheduledTaskTrigger": "Add Trigger", + "HeaderAddScheduledTaskTrigger": "Add Trigger", + "ButtonAdd": "Add", + "LabelTriggerType": "Trigger Type:", + "OptionDaily": "Daily", + "OptionWeekly": "Weekly", + "OptionOnInterval": "On an interval", + "OptionOnAppStartup": "On application startup", + "OptionAfterSystemEvent": "After a system event", + "LabelDay": "Day:", + "LabelTime": "Time:", + "LabelEvent": "Event:", + "OptionWakeFromSleep": "Wake from sleep", + "LabelEveryXMinutes": "Every:", + "HeaderTvTuners": "Tuners", + "HeaderGallery": "Gallery", + "HeaderLatestGames": "Latest Games", + "HeaderRecentlyPlayedGames": "Recently Played Games", + "TabGameSystems": "Game Systems", + "TitleMediaLibrary": "Media Library", + "TabFolders": "Folders", + "TabPathSubstitution": "Path Substitution", + "LabelSeasonZeroDisplayName": "Season 0 display name:", + "LabelEnableRealtimeMonitor": "Enable real time monitoring", + "LabelEnableRealtimeMonitorHelp": "Changes will be processed immediately, on supported file systems.", + "ButtonScanLibrary": "Scan Library", + "HeaderNumberOfPlayers": "Players:", + "OptionAnyNumberOfPlayers": "Any", + "Option1Player": "1+", + "Option2Player": "2+", + "Option3Player": "3+", + "Option4Player": "4+", + "HeaderMediaFolders": "Media Folders", + "HeaderThemeVideos": "Theme Videos", + "HeaderThemeSongs": "Theme Songs", + "HeaderScenes": "Scenes", + "HeaderAwardsAndReviews": "Awards and Reviews", + "HeaderSoundtracks": "Soundtracks", + "HeaderMusicVideos": "Music Videos", + "HeaderSpecialFeatures": "Special Features", + "HeaderCastCrew": "Cast & Crew", + "HeaderAdditionalParts": "Additional Parts", + "ButtonSplitVersionsApart": "Split Versions Apart", + "ButtonPlayTrailer": "Trailer", + "LabelMissing": "Missing", + "LabelOffline": "Offline", + "PathSubstitutionHelp": "Path substitutions are used for mapping a path on the server to a path that clients are able to access. By allowing clients direct access to media on the server they may be able to play them directly over the network and avoid using server resources to stream and transcode them.", + "HeaderFrom": "From", + "HeaderTo": "To", + "LabelFrom": "From:", + "LabelFromHelp": "Example: D:\\Movies (on the server)", + "LabelTo": "To:", + "LabelToHelp": "Example: \\\\MyServer\\Movies (a path clients can access)", + "ButtonAddPathSubstitution": "Add Substitution", + "OptionSpecialEpisode": "Specials", + "OptionMissingEpisode": "Missing Episodes", + "OptionUnairedEpisode": "Unaired Episodes", + "OptionEpisodeSortName": "Episode Sort Name", + "OptionSeriesSortName": "Series Name", + "OptionTvdbRating": "Tvdb Rating", + "HeaderTranscodingQualityPreference": "Transcoding Quality Preference:", + "OptionAutomaticTranscodingHelp": "The server will decide quality and speed", + "OptionHighSpeedTranscodingHelp": "Lower quality, but faster encoding", + "OptionHighQualityTranscodingHelp": "Higher quality, but slower encoding", + "OptionMaxQualityTranscodingHelp": "Best quality with slower encoding and high CPU usage", + "OptionHighSpeedTranscoding": "Higher speed", + "OptionHighQualityTranscoding": "Higher quality", + "OptionMaxQualityTranscoding": "Max quality", + "OptionEnableDebugTranscodingLogging": "Enable debug transcoding logging", + "OptionEnableDebugTranscodingLoggingHelp": "This will create very large log files and is only recommended as needed for troubleshooting purposes.", + "EditCollectionItemsHelp": "Add or remove any movies, series, albums, books or games you wish to group within this collection.", + "HeaderAddTitles": "Add Titles", + "LabelEnableDlnaPlayTo": "Enable DLNA Play To", + "LabelEnableDlnaPlayToHelp": "Emby can detect devices within your network and offer the ability to remote control them.", + "LabelEnableDlnaDebugLogging": "Enable DLNA debug logging", + "LabelEnableDlnaDebugLoggingHelp": "This will create large log files and should only be used as needed for troubleshooting purposes.", + "LabelEnableDlnaClientDiscoveryInterval": "Client discovery interval (seconds)", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determines the duration in seconds between SSDP searches performed by Emby.", + "HeaderCustomDlnaProfiles": "Custom Profiles", + "HeaderSystemDlnaProfiles": "System Profiles", + "CustomDlnaProfilesHelp": "Create a custom profile to target a new device or override a system profile.", + "SystemDlnaProfilesHelp": "System profiles are read-only. Changes to a system profile will be saved to a new custom profile.", + "TitleDashboard": "Dashboard", + "TabHome": "Home", + "TabInfo": "Info", + "HeaderLinks": "Links", + "HeaderSystemPaths": "System Paths", + "LinkCommunity": "Community", + "LinkGithub": "Github", + "LinkApi": "Api", + "LinkApiDocumentation": "Api Documentation", + "LabelFriendlyServerName": "Friendly server name:", + "LabelFriendlyServerNameHelp": "This name will be used to identify this server. If left blank, the computer name will be used.", + "LabelPreferredDisplayLanguage": "Preferred display language:", + "LabelPreferredDisplayLanguageHelp": "Translating Emby is an ongoing project and is not yet complete.", + "LabelReadHowYouCanContribute": "Read about how you can contribute.", + "HeaderNewCollection": "New Collection", + "ButtonSubmit": "Submit", + "ButtonCreate": "Create", + "LabelCustomCss": "Custom css:", + "LabelCustomCssHelp": "Apply your own custom css to the web interface.", + "LabelLocalHttpServerPortNumber": "Local http port number:", + "LabelLocalHttpServerPortNumberHelp": "The tcp port number that Emby's http server should bind to.", + "LabelPublicHttpPort": "Public http port number:", + "LabelPublicHttpPortHelp": "The public port number that should be mapped to the local http port.", + "LabelPublicHttpsPort": "Public https port number:", + "LabelPublicHttpsPortHelp": "The public port number that should be mapped to the local https port.", + "LabelEnableHttps": "Report https as external address", + "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", + "LabelHttpsPort": "Local https port number:", + "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", + "LabelWebSocketPortNumber": "Web socket port number:", + "LabelEnableAutomaticPortMap": "Enable automatic port mapping", + "LabelEnableAutomaticPortMapHelp": "Attempt to automatically map the public port to the local port via UPnP. This may not work with some router models.", + "LabelExternalDDNS": "External WAN Address:", + "LabelExternalDDNSHelp": "If you have a dynamic DNS enter it here. Emby apps will use it when connecting remotely. Leave empty for automatic detection.", + "TabResume": "Resume", + "TabWeather": "Weather", + "TitleAppSettings": "App Settings", + "LabelMinResumePercentage": "Min resume percentage:", + "LabelMaxResumePercentage": "Max resume percentage:", + "LabelMinResumeDuration": "Min resume duration (seconds):", + "LabelMinResumePercentageHelp": "Titles are assumed unplayed if stopped before this time", + "LabelMaxResumePercentageHelp": "Titles are assumed fully played if stopped after this time", + "LabelMinResumeDurationHelp": "Titles shorter than this will not be resumable", + "TitleAutoOrganize": "Auto-Organize", + "TabActivityLog": "Activity Log", + "HeaderName": "Name", + "HeaderDate": "Date", + "HeaderSource": "Source", + "HeaderDestination": "Destination", + "HeaderProgram": "Program", + "HeaderClients": "Clients", + "LabelCompleted": "Completed", + "LabelFailed": "Failed", + "LabelSkipped": "Skipped", + "HeaderEpisodeOrganization": "Episode Organization", + "LabelSeries": "Series:", + "LabelEndingEpisodeNumber": "Ending episode number:", + "LabelEndingEpisodeNumberHelp": "Only required for multi-episode files", + "HeaderSupportTheTeam": "Support the Emby Team", + "LabelSupportAmount": "Amount (USD)", + "HeaderSupportTheTeamHelp": "Help ensure the continued development of this project by donating. A portion of all donations will be contributed to other free tools we depend on.", + "ButtonEnterSupporterKey": "Enter supporter key", + "DonationNextStep": "Once complete, please return and enter your supporter key, which you will receive by email.", + "AutoOrganizeHelp": "Auto-organize monitors your download folders for new files and moves them to your media directories.", + "AutoOrganizeTvHelp": "TV file organizing will only add episodes to existing series. It will not create new series folders.", + "OptionEnableEpisodeOrganization": "Enable new episode organization", + "LabelWatchFolder": "Watch folder:", + "LabelWatchFolderHelp": "The server will poll this folder during the 'Organize new media files' scheduled task.", + "ButtonViewScheduledTasks": "View scheduled tasks", + "LabelMinFileSizeForOrganize": "Minimum file size (MB):", + "LabelMinFileSizeForOrganizeHelp": "Files under this size will be ignored.", + "LabelSeasonFolderPattern": "Season folder pattern:", + "LabelSeasonZeroFolderName": "Season zero folder name:", + "HeaderEpisodeFilePattern": "Episode file pattern", + "LabelEpisodePattern": "Episode pattern:", + "LabelMultiEpisodePattern": "Multi-Episode pattern:", + "HeaderSupportedPatterns": "Supported Patterns", + "HeaderTerm": "Term", + "HeaderPattern": "Pattern", + "HeaderResult": "Result", + "LabelDeleteEmptyFolders": "Delete empty folders after organizing", + "LabelDeleteEmptyFoldersHelp": "Enable this to keep the download directory clean.", + "LabelDeleteLeftOverFiles": "Delete left over files with the following extensions:", + "LabelDeleteLeftOverFilesHelp": "Separate with ;. For example: .nfo;.txt", + "OptionOverwriteExistingEpisodes": "Overwrite existing episodes", + "LabelTransferMethod": "Transfer method", + "OptionCopy": "Copy", + "OptionMove": "Move", + "LabelTransferMethodHelp": "Copy or move files from the watch folder", + "HeaderLatestNews": "Latest News", + "HeaderHelpImproveProject": "Help Improve Emby", + "HeaderRunningTasks": "Running Tasks", + "HeaderActiveDevices": "Active Devices", + "HeaderPendingInstallations": "Pending Installations", + "HeaderServerInformation": "Server Information", + "ButtonRestartNow": "Restart Now", + "ButtonRestart": "Restart", + "ButtonShutdown": "Shutdown", + "ButtonUpdateNow": "Update Now", + "TabHosting": "Hosting", + "PleaseUpdateManually": "Please shutdown the server and update manually.", + "NewServerVersionAvailable": "A new version of Emby Server is available!", + "ServerUpToDate": "Emby Server is up to date", + "LabelComponentsUpdated": "The following components have been installed or updated:", + "MessagePleaseRestartServerToFinishUpdating": "Please restart the server to finish applying updates.", + "LabelDownMixAudioScale": "Audio boost when downmixing:", + "LabelDownMixAudioScaleHelp": "Boost audio when downmixing. Set to 1 to preserve original volume value.", + "ButtonLinkKeys": "Transfer Key", + "LabelOldSupporterKey": "Old supporter key", + "LabelNewSupporterKey": "New supporter key", + "HeaderMultipleKeyLinking": "Transfer to New Key", + "MultipleKeyLinkingHelp": "If you received a new supporter key, use this form to transfer the old key's registrations to your new one.", + "LabelCurrentEmailAddress": "Current email address", + "LabelCurrentEmailAddressHelp": "The current email address to which your new key was sent.", + "HeaderForgotKey": "Forgot Key", + "LabelEmailAddress": "Email address", + "LabelSupporterEmailAddress": "The email address that was used to purchase the key.", + "ButtonRetrieveKey": "Retrieve Key", + "LabelSupporterKey": "Supporter Key (paste from email)", + "LabelSupporterKeyHelp": "Enter your supporter key to start enjoying additional benefits the community has developed for Emby.", + "MessageInvalidKey": "Supporter key is missing or invalid.", + "ErrorMessageInvalidKey": "In order for any premium content to be registered, you must also be an Emby Supporter. Please donate and support the continued development of the core product. Thank you.", + "HeaderDisplaySettings": "Display Settings", + "TabPlayTo": "Play To", + "LabelEnableDlnaServer": "Enable Dlna server", + "LabelEnableDlnaServerHelp": "Allows UPnP devices on your network to browse and play Emby content.", + "LabelEnableBlastAliveMessages": "Blast alive messages", + "LabelEnableBlastAliveMessagesHelp": "Enable this if the server is not detected reliably by other UPnP devices on your network.", + "LabelBlastMessageInterval": "Alive message interval (seconds)", + "LabelBlastMessageIntervalHelp": "Determines the duration in seconds between server alive messages.", + "LabelDefaultUser": "Default user:", + "LabelDefaultUserHelp": "Determines which user library should be displayed on connected devices. This can be overridden for each device using profiles.", + "TitleDlna": "DLNA", + "TitleChannels": "Channels", + "HeaderServerSettings": "Server Settings", + "LabelWeatherDisplayLocation": "Weather display location:", + "LabelWeatherDisplayLocationHelp": "US zip code \/ City, State, Country \/ City, Country", + "LabelWeatherDisplayUnit": "Weather display unit:", + "OptionCelsius": "Celsius", + "OptionFahrenheit": "Fahrenheit", + "HeaderRequireManualLogin": "Require manual username entry for:", + "HeaderRequireManualLoginHelp": "When disabled clients may present a login screen with a visual selection of users.", + "OptionOtherApps": "Other apps", + "OptionMobileApps": "Mobile apps", + "HeaderNotificationList": "Click on a notification to configure it's sending options.", + "NotificationOptionApplicationUpdateAvailable": "Application update available", + "NotificationOptionApplicationUpdateInstalled": "Application update installed", + "NotificationOptionPluginUpdateInstalled": "Plugin update installed", + "NotificationOptionPluginInstalled": "Plugin installed", + "NotificationOptionPluginUninstalled": "Plugin uninstalled", + "NotificationOptionVideoPlayback": "Video playback started", + "NotificationOptionAudioPlayback": "Audio playback started", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionVideoPlaybackStopped": "Video playback stopped", + "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionTaskFailed": "Scheduled task failure", + "NotificationOptionInstallationFailed": "Installation failure", + "NotificationOptionNewLibraryContent": "New content added", + "NotificationOptionNewLibraryContentMultiple": "New content added (multiple)", + "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionUserLockedOut": "User locked out", + "HeaderSendNotificationHelp": "By default, notifications are delivered to your dashboard inbox. Browse the plugin catalog to install additional notification options.", + "NotificationOptionServerRestartRequired": "Server restart required", + "LabelNotificationEnabled": "Enable this notification", + "LabelMonitorUsers": "Monitor activity from:", + "LabelSendNotificationToUsers": "Send the notification to:", + "LabelUseNotificationServices": "Use the following services:", + "CategoryUser": "User", + "CategorySystem": "System", + "CategoryApplication": "Application", + "CategoryPlugin": "Plugin", + "LabelMessageTitle": "Message title:", + "LabelAvailableTokens": "Available tokens:", + "AdditionalNotificationServices": "Browse the plugin catalog to install additional notification services.", + "OptionAllUsers": "All users", + "OptionAdminUsers": "Administrators", + "OptionCustomUsers": "Custom", + "ButtonArrowUp": "Up", + "ButtonArrowDown": "Down", + "ButtonArrowLeft": "Left", + "ButtonArrowRight": "Right", + "ButtonBack": "Back", + "ButtonInfo": "Info", + "ButtonOsd": "On screen display", + "ButtonPageUp": "Page Up", + "ButtonPageDown": "Page Down", + "PageAbbreviation": "PG", + "ButtonHome": "Home", + "ButtonSearch": "Search", + "ButtonSettings": "Settings", + "ButtonTakeScreenshot": "Capture Screenshot", + "ButtonLetterUp": "Letter Up", + "ButtonLetterDown": "Letter Down", + "PageButtonAbbreviation": "PG", + "LetterButtonAbbreviation": "A", + "TabNowPlaying": "Now Playing", + "TabNavigation": "Navigation", + "TabControls": "Controls", + "ButtonFullscreen": "Toggle fullscreen", + "ButtonScenes": "Scenes", + "ButtonSubtitles": "Subtitles", + "ButtonAudioTracks": "Audio tracks", + "ButtonPreviousTrack": "Previous track", + "ButtonNextTrack": "Next track", + "ButtonStop": "Stop", + "ButtonPause": "Pause", + "ButtonNext": "Next", + "ButtonPrevious": "Previous", + "LabelGroupMoviesIntoCollections": "Group movies into collections", + "LabelGroupMoviesIntoCollectionsHelp": "When displaying movie lists, movies belonging to a collection will be displayed as one grouped item.", + "NotificationOptionPluginError": "Plugin failure", + "ButtonVolumeUp": "Volume up", + "ButtonVolumeDown": "Volume down", + "ButtonMute": "Mute", + "HeaderLatestMedia": "Latest Media", + "OptionSpecialFeatures": "Special Features", + "HeaderCollections": "Collections", + "LabelProfileCodecsHelp": "Separated by comma. This can be left empty to apply to all codecs.", + "LabelProfileContainersHelp": "Separated by comma. This can be left empty to apply to all containers.", + "HeaderResponseProfile": "Response Profile", + "LabelType": "Type:", + "LabelPersonRole": "Role:", + "LabelPersonRoleHelp": "Role is generally only applicable to actors.", + "LabelProfileContainer": "Container:", + "LabelProfileVideoCodecs": "Video codecs:", + "LabelProfileAudioCodecs": "Audio codecs:", + "LabelProfileCodecs": "Codecs:", + "HeaderDirectPlayProfile": "Direct Play Profile", + "HeaderTranscodingProfile": "Transcoding Profile", + "HeaderCodecProfile": "Codec Profile", + "HeaderCodecProfileHelp": "Codec profiles indicate the limitations of a device when playing specific codecs. If a limitation applies then the media will be transcoded, even if the codec is configured for direct play.", + "HeaderContainerProfile": "Container Profile", + "HeaderContainerProfileHelp": "Container profiles indicate the limitations of a device when playing specific formats. If a limitation applies then the media will be transcoded, even if the format is configured for direct play.", + "OptionProfileVideo": "Video", + "OptionProfileAudio": "Audio", + "OptionProfileVideoAudio": "Video Audio", + "OptionProfilePhoto": "Photo", + "LabelUserLibrary": "User library:", + "LabelUserLibraryHelp": "Select which user library to display to the device. Leave empty to inherit the default setting.", + "OptionPlainStorageFolders": "Display all folders as plain storage folders", + "OptionPlainStorageFoldersHelp": "If enabled, all folders are represented in DIDL as \"object.container.storageFolder\" instead of a more specific type, such as \"object.container.person.musicArtist\".", + "OptionPlainVideoItems": "Display all videos as plain video items", + "OptionPlainVideoItemsHelp": "If enabled, all videos are represented in DIDL as \"object.item.videoItem\" instead of a more specific type, such as \"object.item.videoItem.movie\".", + "LabelSupportedMediaTypes": "Supported Media Types:", + "TabIdentification": "Identification", + "HeaderIdentification": "Identification", + "TabDirectPlay": "Direct Play", + "TabContainers": "Containers", + "TabCodecs": "Codecs", + "TabResponses": "Responses", + "HeaderProfileInformation": "Profile Information", + "LabelEmbedAlbumArtDidl": "Embed album art in Didl", + "LabelEmbedAlbumArtDidlHelp": "Some devices prefer this method for obtaining album art. Others may fail to play with this option enabled.", + "LabelAlbumArtPN": "Album art PN:", + "LabelAlbumArtHelp": "PN used for album art, within the dlna:profileID attribute on upnp:albumArtURI. Some clients require a specific value, regardless of the size of the image.", + "LabelAlbumArtMaxWidth": "Album art max width:", + "LabelAlbumArtMaxWidthHelp": "Max resolution of album art exposed via upnp:albumArtURI.", + "LabelAlbumArtMaxHeight": "Album art max height:", + "LabelAlbumArtMaxHeightHelp": "Max resolution of album art exposed via upnp:albumArtURI.", + "LabelIconMaxWidth": "Icon max width:", + "LabelIconMaxWidthHelp": "Max resolution of icons exposed via upnp:icon.", + "LabelIconMaxHeight": "Icon max height:", + "LabelIconMaxHeightHelp": "Max resolution of icons exposed via upnp:icon.", + "LabelIdentificationFieldHelp": "A case-insensitive substring or regex expression.", + "HeaderProfileServerSettingsHelp": "These values control how Emby Server will present itself to the device.", + "LabelMaxBitrate": "Max bitrate:", + "LabelMaxBitrateHelp": "Specify a max bitrate in bandwidth constrained environments, or if the device imposes it's own limit.", + "LabelMaxStreamingBitrate": "Max streaming bitrate:", + "LabelMaxStreamingBitrateHelp": "Specify a max bitrate when streaming.", + "LabelMaxChromecastBitrate": "Max Chromecast bitrate:", + "LabelMaxStaticBitrate": "Max sync bitrate:", + "LabelMaxStaticBitrateHelp": "Specify a max bitrate when syncing content at high quality.", + "LabelMusicStaticBitrate": "Music sync bitrate:", + "LabelMusicStaticBitrateHelp": "Specify a max bitrate when syncing music", + "LabelMusicStreamingTranscodingBitrate": "Music transcoding bitrate:", + "LabelMusicStreamingTranscodingBitrateHelp": "Specify a max bitrate when streaming music", + "OptionIgnoreTranscodeByteRangeRequests": "Ignore transcode byte range requests", + "OptionIgnoreTranscodeByteRangeRequestsHelp": "If enabled, these requests will be honored but will ignore the byte range header.", + "LabelFriendlyName": "Friendly name", + "LabelManufacturer": "Manufacturer", + "LabelManufacturerUrl": "Manufacturer url", + "LabelModelName": "Model name", + "LabelModelNumber": "Model number", + "LabelModelDescription": "Model description", + "LabelModelUrl": "Model url", + "LabelSerialNumber": "Serial number", + "LabelDeviceDescription": "Device description", + "HeaderIdentificationCriteriaHelp": "Enter at least one identification criteria.", + "HeaderDirectPlayProfileHelp": "Add direct play profiles to indicate which formats the device can handle natively.", + "HeaderTranscodingProfileHelp": "Add transcoding profiles to indicate which formats should be used when transcoding is required.", + "HeaderResponseProfileHelp": "Response profiles provide a way to customize information sent to the device when playing certain kinds of media.", + "LabelXDlnaCap": "X-Dlna cap:", + "LabelXDlnaCapHelp": "Determines the content of the X_DLNACAP element in the urn:schemas-dlna-org:device-1-0 namespace.", + "LabelXDlnaDoc": "X-Dlna doc:", + "LabelXDlnaDocHelp": "Determines the content of the X_DLNADOC element in the urn:schemas-dlna-org:device-1-0 namespace.", + "LabelSonyAggregationFlags": "Sony aggregation flags:", + "LabelSonyAggregationFlagsHelp": "Determines the content of the aggregationFlags element in the urn:schemas-sonycom:av namespace.", + "LabelTranscodingContainer": "Container:", + "LabelTranscodingVideoCodec": "Video codec:", + "LabelTranscodingVideoProfile": "Video profile:", + "LabelTranscodingAudioCodec": "Audio codec:", + "OptionEnableM2tsMode": "Enable M2ts mode", + "OptionEnableM2tsModeHelp": "Enable m2ts mode when encoding to mpegts.", + "OptionEstimateContentLength": "Estimate content length when transcoding", + "OptionReportByteRangeSeekingWhenTranscoding": "Report that the server supports byte seeking when transcoding", + "OptionReportByteRangeSeekingWhenTranscodingHelp": "This is required for some devices that don't time seek very well.", + "HeaderSubtitleDownloadingHelp": "When Emby scans your video files it can search for missing subtitles, and download them using a subtitle provider such as OpenSubtitles.org.", + "HeaderDownloadSubtitlesFor": "Download subtitles for:", + "MessageNoChapterProviders": "Install a chapter provider plugin such as ChapterDb to enable additional chapter options.", + "LabelSkipIfGraphicalSubsPresent": "Skip if the video already contains graphical subtitles", + "LabelSkipIfGraphicalSubsPresentHelp": "Keeping text versions of subtitles will result in more efficient delivery and decrease the likelihood of video transcoding.", + "TabSubtitles": "Subtitles", + "TabChapters": "Chapters", + "HeaderDownloadChaptersFor": "Download chapter names for:", + "LabelOpenSubtitlesUsername": "Open Subtitles username:", + "LabelOpenSubtitlesPassword": "Open Subtitles password:", + "HeaderChapterDownloadingHelp": "When Emby scans your video files it can download friendly chapter names from the internet using chapter plugins such as ChapterDb.", + "LabelPlayDefaultAudioTrack": "Play default audio track regardless of language", + "LabelSubtitlePlaybackMode": "Subtitle mode:", + "LabelDownloadLanguages": "Download languages:", + "ButtonRegister": "Register", + "LabelSkipIfAudioTrackPresent": "Skip if the default audio track matches the download language", + "LabelSkipIfAudioTrackPresentHelp": "Uncheck this to ensure all videos have subtitles, regardless of audio language.", + "HeaderSendMessage": "Send Message", + "ButtonSend": "Send", + "LabelMessageText": "Message text:", + "MessageNoAvailablePlugins": "No available plugins.", + "LabelDisplayPluginsFor": "Display plugins for:", + "PluginTabAppClassic": "Emby Classic", + "PluginTabAppTheater": "Emby Theater", + "LabelEpisodeNamePlain": "Episode name", + "LabelSeriesNamePlain": "Series name", + "ValueSeriesNamePeriod": "Series.name", + "ValueSeriesNameUnderscore": "Series_name", + "ValueEpisodeNamePeriod": "Episode.name", + "ValueEpisodeNameUnderscore": "Episode_name", + "LabelSeasonNumberPlain": "Season number", + "LabelEpisodeNumberPlain": "Episode number", + "LabelEndingEpisodeNumberPlain": "Ending episode number", + "HeaderTypeText": "Enter Text", + "LabelTypeText": "Text", + "HeaderSearchForSubtitles": "Search for Subtitles", + "ButtonMore": "More", + "MessageNoSubtitleSearchResultsFound": "No search results founds.", + "TabDisplay": "Display", + "TabLanguages": "Languages", + "TabAppSettings": "App Settings", + "LabelEnableThemeSongs": "Enable theme songs", + "LabelEnableBackdrops": "Enable backdrops", + "LabelEnableThemeSongsHelp": "If enabled, theme songs will be played in the background while browsing the library.", + "LabelEnableBackdropsHelp": "If enabled, backdrops will be displayed in the background of some pages while browsing the library.", + "HeaderHomePage": "Home Page", + "HeaderSettingsForThisDevice": "Settings for This Device", + "OptionAuto": "Auto", + "OptionYes": "Yes", + "OptionNo": "No", + "HeaderOptions": "Options", + "HeaderIdentificationResult": "Identification Result", + "LabelHomePageSection1": "Home page section 1:", + "LabelHomePageSection2": "Home page section 2:", + "LabelHomePageSection3": "Home page section 3:", + "LabelHomePageSection4": "Home page section 4:", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", + "OptionResumablemedia": "Resume", + "OptionLatestMedia": "Latest media", + "OptionLatestChannelMedia": "Latest channel items", + "HeaderLatestChannelItems": "Latest Channel Items", + "OptionNone": "None", + "HeaderLiveTv": "Live TV", + "HeaderReports": "Reports", + "HeaderMetadataManager": "Metadata Manager", + "HeaderSettings": "Settings", + "MessageLoadingChannels": "Loading channel content...", + "MessageLoadingContent": "Loading content...", + "ButtonMarkRead": "Mark Read", + "OptionDefaultSort": "Default", + "OptionCommunityMostWatchedSort": "Most Watched", + "TabNextUp": "Next Up", + "PlaceholderUsername": "Username", + "HeaderBecomeProjectSupporter": "Become an Emby Supporter", + "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", + "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", + "MessageNoPlaylistsAvailable": "Playlists allow you to create lists of content to play consecutively at a time. To add items to playlists, right click or tap and hold, then select Add to Playlist.", + "MessageNoPlaylistItemsAvailable": "This playlist is currently empty.", + "ButtonDismiss": "Dismiss", + "ButtonEditOtherUserPreferences": "Edit this user's profile, image and personal preferences.", + "LabelChannelStreamQuality": "Preferred internet stream quality:", + "LabelChannelStreamQualityHelp": "In a low bandwidth environment, limiting quality can help ensure a smooth streaming experience.", + "OptionBestAvailableStreamQuality": "Best available", + "LabelEnableChannelContentDownloadingFor": "Enable channel content downloading for:", + "LabelEnableChannelContentDownloadingForHelp": "Some channels support downloading content prior to viewing. Enable this in low bandwidth enviornments to download channel content during off hours. Content is downloaded as part of the channel download scheduled task.", + "LabelChannelDownloadPath": "Channel content download path:", + "LabelChannelDownloadPathHelp": "Specify a custom download path if desired. Leave empty to download to an internal program data folder.", + "LabelChannelDownloadAge": "Delete content after: (days)", + "LabelChannelDownloadAgeHelp": "Downloaded content older than this will be deleted. It will remain playable via internet streaming.", + "ChannelSettingsFormHelp": "Install channels such as Trailers and Vimeo in the plugin catalog.", + "ButtonOptions": "Options", + "ViewTypePlaylists": "Playlists", + "ViewTypeMovies": "Movies", + "ViewTypeTvShows": "TV", + "ViewTypeGames": "Games", + "ViewTypeMusic": "Music", + "ViewTypeMusicGenres": "Genres", + "ViewTypeMusicArtists": "Artists", + "ViewTypeBoxSets": "Collections", + "ViewTypeChannels": "Channels", + "ViewTypeLiveTV": "Live TV", + "ViewTypeLiveTvNowPlaying": "Now Airing", + "ViewTypeLatestGames": "Latest Games", + "ViewTypeRecentlyPlayedGames": "Recently Played", + "ViewTypeGameFavorites": "Favorites", + "ViewTypeGameSystems": "Game Systems", + "ViewTypeGameGenres": "Genres", + "ViewTypeTvResume": "Resume", + "ViewTypeTvNextUp": "Next Up", + "ViewTypeTvLatest": "Latest", + "ViewTypeTvShowSeries": "Series", + "ViewTypeTvGenres": "Genres", + "ViewTypeTvFavoriteSeries": "Favorite Series", + "ViewTypeTvFavoriteEpisodes": "Favorite Episodes", + "ViewTypeMovieResume": "Resume", + "ViewTypeMovieLatest": "Latest", + "ViewTypeMovieMovies": "Movies", + "ViewTypeMovieCollections": "Collections", + "ViewTypeMovieFavorites": "Favorites", + "ViewTypeMovieGenres": "Genres", + "ViewTypeMusicLatest": "Latest", + "ViewTypeMusicPlaylists": "Playlists", + "ViewTypeMusicAlbums": "Albums", + "ViewTypeMusicAlbumArtists": "Album Artists", + "HeaderOtherDisplaySettings": "Display Settings", + "ViewTypeMusicSongs": "Songs", + "ViewTypeMusicFavorites": "Favorites", + "ViewTypeMusicFavoriteAlbums": "Favorite Albums", + "ViewTypeMusicFavoriteArtists": "Favorite Artists", + "ViewTypeMusicFavoriteSongs": "Favorite Songs", + "HeaderMyViews": "My Views", + "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", + "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", + "OptionDisplayAdultContent": "Display adult content", + "OptionLibraryFolders": "Media folders", + "TitleRemoteControl": "Remote Control", + "OptionLatestTvRecordings": "Latest recordings", + "LabelProtocolInfo": "Protocol info:", + "LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.", + "TabNfo": "Nfo", + "HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Advanced tab to configure options for your media types.", + "LabelKodiMetadataUser": "Sync user watch data to nfo's for:", + "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.", + "LabelKodiMetadataDateFormat": "Release date format:", + "LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.", + "LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files", + "LabelKodiMetadataSaveImagePathsHelp": "This is recommended if you have image file names that don't conform to Kodi guidelines.", + "LabelKodiMetadataEnablePathSubstitution": "Enable path substitution", + "LabelKodiMetadataEnablePathSubstitutionHelp": "Enables path substitution of image paths using the server's path substitution settings.", + "LabelKodiMetadataEnablePathSubstitutionHelp2": "See path substitution.", + "LabelGroupChannelsIntoViews": "Display the following channels directly within my views:", + "LabelGroupChannelsIntoViewsHelp": "If enabled, these channels will be displayed directly alongside other views. If disabled, they'll be displayed within a separate Channels view.", + "LabelDisplayCollectionsView": "Display a collections view to show movie collections", + "LabelDisplayCollectionsViewHelp": "This will create a separate view to display collections that you've created or have access to. To create a collection, right-click or tap-hold any movie and select 'Add to Collection'. ", + "LabelKodiMetadataEnableExtraThumbs": "Copy extrafanart into extrathumbs", + "LabelKodiMetadataEnableExtraThumbsHelp": "When downloading images they can be saved into both extrafanart and extrathumbs for maximum Kodi skin compatibility.", + "TabServices": "Services", + "TabLogs": "Logs", + "HeaderServerLogFiles": "Server log files:", + "TabBranding": "Branding", + "HeaderBrandingHelp": "Customize the appearance of Emby to fit the needs of your group or organization.", + "LabelLoginDisclaimer": "Login disclaimer:", + "LabelLoginDisclaimerHelp": "This will be displayed at the bottom of the login page.", + "LabelAutomaticallyDonate": "Automatically donate this amount every month", + "LabelAutomaticallyDonateHelp": "You can cancel at any time via your PayPal account.", + "OptionList": "List", + "TabDashboard": "Dashboard", + "TitleServer": "Server", + "LabelCache": "Cache:", + "LabelLogs": "Logs:", + "LabelMetadata": "Metadata:", + "LabelImagesByName": "Images by name:", + "LabelTranscodingTemporaryFiles": "Transcoding temporary files:", + "HeaderLatestMusic": "Latest Music", + "HeaderBranding": "Branding", + "HeaderApiKeys": "Api Keys", + "HeaderApiKeysHelp": "External applications are required to have an Api key in order to communicate with Emby Server. Keys are issued by logging in with an Emby account, or by manually granting the application a key.", + "HeaderApiKey": "Api Key", + "HeaderApp": "App", + "HeaderDevice": "Device", + "HeaderUser": "User", + "HeaderDateIssued": "Date Issued", + "LabelChapterName": "Chapter {0}", + "HeaderNewApiKey": "New Api Key", + "LabelAppName": "App name", + "LabelAppNameExample": "Example: Sickbeard, NzbDrone", + "HeaderNewApiKeyHelp": "Grant an application permission to communicate with Emby Server.", + "HeaderHttpHeaders": "Http Headers", + "HeaderIdentificationHeader": "Identification Header", + "LabelValue": "Value:", + "LabelMatchType": "Match type:", + "OptionEquals": "Equals", + "OptionRegex": "Regex", + "OptionSubstring": "Substring", + "TabView": "View", + "TabSort": "Sort", + "TabFilter": "Filter", + "ButtonView": "View", + "LabelPageSize": "Item limit:", + "LabelPath": "Path:", + "LabelView": "View:", + "TabUsers": "Users", + "LabelSortName": "Sort name:", + "LabelDateAdded": "Date added:", + "HeaderFeatures": "Features", + "HeaderAdvanced": "Advanced", + "ButtonSync": "Sync", + "TabScheduledTasks": "Scheduled Tasks", + "HeaderChapters": "Chapters", + "HeaderResumeSettings": "Resume Settings", + "TabSync": "Sync", + "TitleUsers": "Users", + "LabelProtocol": "Protocol:", + "OptionProtocolHttp": "Http", + "OptionProtocolHls": "Http Live Streaming", + "LabelContext": "Context:", + "OptionContextStreaming": "Streaming", + "OptionContextStatic": "Sync", + "ButtonAddToPlaylist": "Add to playlist", + "TabPlaylists": "Playlists", + "ButtonClose": "Close", + "LabelAllLanguages": "All languages", + "HeaderBrowseOnlineImages": "Browse Online Images", + "LabelSource": "Source:", + "OptionAll": "All", + "LabelImage": "Image:", + "ButtonBrowseImages": "Browse Images", + "HeaderImages": "Images", + "HeaderBackdrops": "Backdrops", + "HeaderScreenshots": "Screenshots", + "HeaderAddUpdateImage": "Add\/Update Image", + "LabelJpgPngOnly": "JPG\/PNG only", + "LabelImageType": "Image type:", + "OptionPrimary": "Primary", + "OptionArt": "Art", + "OptionBox": "Box", + "OptionBoxRear": "Box rear", + "OptionDisc": "Disc", + "OptionIcon": "Icon", + "OptionLogo": "Logo", + "OptionMenu": "Menu", + "OptionScreenshot": "Screenshot", + "OptionLocked": "Locked", + "OptionUnidentified": "Unidentified", + "OptionMissingParentalRating": "Missing parental rating", + "OptionStub": "Stub", + "HeaderEpisodes": "Episodes:", + "OptionSeason0": "Season 0", + "LabelReport": "Report:", + "OptionReportSongs": "Songs", + "OptionReportSeries": "Series", + "OptionReportSeasons": "Seasons", + "OptionReportTrailers": "Trailers", + "OptionReportMusicVideos": "Music videos", + "OptionReportMovies": "Movies", + "OptionReportHomeVideos": "Home videos", + "OptionReportGames": "Games", + "OptionReportEpisodes": "Episodes", + "OptionReportCollections": "Collections", + "OptionReportBooks": "Books", + "OptionReportArtists": "Artists", + "OptionReportAlbums": "Albums", + "OptionReportAdultVideos": "Adult videos", + "HeaderActivity": "Activity", + "ScheduledTaskStartedWithName": "{0} started", + "ScheduledTaskCancelledWithName": "{0} was cancelled", + "ScheduledTaskCompletedWithName": "{0} completed", + "ScheduledTaskFailed": "Scheduled task completed", + "PluginInstalledWithName": "{0} was installed", + "PluginUpdatedWithName": "{0} was updated", + "PluginUninstalledWithName": "{0} was uninstalled", + "ScheduledTaskFailedWithName": "{0} failed", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "DeviceOnlineWithName": "{0} is connected", + "UserOnlineFromDevice": "{0} is online from {1}", + "DeviceOfflineWithName": "{0} has disconnected", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", + "LabelRunningTimeValue": "Running time: {0}", + "LabelIpAddressValue": "Ip address: {0}", + "UserLockedOutWithName": "User {0} has been locked out", + "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", + "UserCreatedWithName": "User {0} has been created", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserDeletedWithName": "User {0} has been deleted", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageApplicationUpdated": "Emby Server has been updated", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "UserDownloadingItemWithValues": "{0} is downloading {1}", + "UserStartedPlayingItemWithValues": "{0} has started playing {1}", + "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", + "AppDeviceValues": "App: {0}, Device: {1}", + "ProviderValue": "Provider: {0}", + "LabelChannelDownloadSizeLimit": "Download size limit (GB):", + "LabelChannelDownloadSizeLimitHelpText": "Limit the size of the channel download folder.", + "HeaderRecentActivity": "Recent Activity", + "HeaderPeople": "People", + "HeaderDownloadPeopleMetadataFor": "Download biography and images for:", + "OptionComposers": "Composers", + "OptionOthers": "Others", + "HeaderDownloadPeopleMetadataForHelp": "Enabling additional options will provide more on-screen information but will result in slower library scans.", + "ViewTypeFolders": "Folders", + "LabelDisplayFoldersView": "Display a folders view to show plain media folders", + "ViewTypeLiveTvRecordingGroups": "Recordings", + "ViewTypeLiveTvChannels": "Channels", + "LabelEasyPinCode": "Easy pin code:", + "EasyPasswordHelp": "Your easy pin code is used for offline access with supported Emby apps, and can also be used for easy in-network sign in.", + "LabelInNetworkSignInWithEasyPassword": "Enable in-network sign in with my easy pin code", + "LabelInNetworkSignInWithEasyPasswordHelp": "If enabled, you'll be able to use your easy pin code to sign in to Emby apps from inside your home network. Your regular password will only be needed away from home. If the pin code is left blank, you won't need a password within your home network.", + "HeaderPassword": "Password", + "HeaderLocalAccess": "Local Access", + "HeaderViewOrder": "View Order", + "ButtonResetEasyPassword": "Reset easy pin code", + "LabelSelectUserViewOrder": "Choose the order your views will be displayed in within Emby apps", + "LabelMetadataRefreshMode": "Metadata refresh mode:", + "LabelImageRefreshMode": "Image refresh mode:", + "OptionDownloadMissingImages": "Download missing images", + "OptionReplaceExistingImages": "Replace existing images", + "OptionRefreshAllData": "Refresh all data", + "OptionAddMissingDataOnly": "Add missing data only", + "OptionLocalRefreshOnly": "Local refresh only", + "HeaderRefreshMetadata": "Refresh Metadata", + "HeaderPersonInfo": "Person Info", + "HeaderIdentifyItem": "Identify Item", + "HeaderIdentifyItemHelp": "Enter one or more search criteria. Remove criteria to increase search results.", + "HeaderConfirmDeletion": "Confirm Deletion", + "LabelFollowingFileWillBeDeleted": "The following file will be deleted:", + "LabelIfYouWishToContinueWithDeletion": "If you wish to continue, please confirm by entering the value of:", + "ButtonIdentify": "Identify", + "LabelAlbumArtist": "Album artist:", + "LabelAlbumArtists": "Album artists:", + "LabelAlbum": "Album:", + "LabelCommunityRating": "Community rating:", + "LabelVoteCount": "Vote count:", + "LabelMetascore": "Metascore:", + "LabelCriticRating": "Critic rating:", + "LabelCriticRatingSummary": "Critic rating summary:", + "LabelAwardSummary": "Award summary:", + "LabelWebsite": "Website:", + "LabelTagline": "Tagline:", + "LabelOverview": "Overview:", + "LabelShortOverview": "Short overview:", + "LabelReleaseDate": "Release date:", + "LabelYear": "Year:", + "LabelPlaceOfBirth": "Place of birth:", + "LabelEndDate": "End date:", + "LabelAirDate": "Air days:", + "LabelAirTime:": "Air time:", + "LabelRuntimeMinutes": "Run time (minutes):", + "LabelParentalRating": "Parental rating:", + "LabelCustomRating": "Custom rating:", + "LabelBudget": "Budget", + "LabelRevenue": "Revenue ($):", + "LabelOriginalAspectRatio": "Original aspect ratio:", + "LabelPlayers": "Players:", + "Label3DFormat": "3D format:", + "HeaderAlternateEpisodeNumbers": "Alternate Episode Numbers", + "HeaderSpecialEpisodeInfo": "Special Episode Info", + "HeaderExternalIds": "External Id's:", + "LabelDvdSeasonNumber": "Dvd season number:", + "LabelDvdEpisodeNumber": "Dvd episode number:", + "LabelAbsoluteEpisodeNumber": "Absolute episode number:", + "LabelAirsBeforeSeason": "Airs before season:", + "LabelAirsAfterSeason": "Airs after season:", + "LabelAirsBeforeEpisode": "Airs before episode:", + "LabelTreatImageAs": "Treat image as:", + "LabelDisplayOrder": "Display order:", + "LabelDisplaySpecialsWithinSeasons": "Display specials within seasons they aired in", + "HeaderCountries": "Countries", + "HeaderGenres": "Genres", + "HeaderPlotKeywords": "Plot Keywords", + "HeaderStudios": "Studios", + "HeaderTags": "Tags", + "HeaderMetadataSettings": "Metadata Settings", + "LabelLockItemToPreventChanges": "Lock this item to prevent future changes", + "MessageLeaveEmptyToInherit": "Leave empty to inherit settings from a parent item, or the global default value.", + "TabDonate": "Donate", + "HeaderDonationType": "Donation type:", + "OptionMakeOneTimeDonation": "Make a separate donation", + "OptionOneTimeDescription": "This is an additional donation to the team to show your support. It does not have any additional benefits and will not produce a supporter key.", + "OptionLifeTimeSupporterMembership": "Lifetime supporter membership", + "OptionYearlySupporterMembership": "Yearly supporter membership", + "OptionMonthlySupporterMembership": "Monthly supporter membership", + "OptionNoTrailer": "No Trailer", + "OptionNoThemeSong": "No Theme Song", + "OptionNoThemeVideo": "No Theme Video", + "LabelOneTimeDonationAmount": "Donation amount:", + "ButtonDonate": "Donate", + "ButtonPurchase": "Purchase", + "OptionActor": "Actor", + "OptionComposer": "Composer", + "OptionDirector": "Director", + "OptionGuestStar": "Guest star", + "OptionProducer": "Producer", + "OptionWriter": "Writer", + "LabelAirDays": "Air days:", + "LabelAirTime": "Air time:", + "HeaderMediaInfo": "Media Info", + "HeaderPhotoInfo": "Photo Info", + "HeaderInstall": "Install", + "LabelSelectVersionToInstall": "Select version to install:", + "LinkSupporterMembership": "Learn about the Supporter Membership", + "MessageSupporterPluginRequiresMembership": "This plugin will require an active supporter membership after the 14 day free trial.", + "MessagePremiumPluginRequiresMembership": "This plugin will require an active supporter membership in order to purchase after the 14 day free trial.", + "HeaderReviews": "Reviews", + "HeaderDeveloperInfo": "Developer Info", + "HeaderRevisionHistory": "Revision History", + "ButtonViewWebsite": "View website", + "HeaderXmlSettings": "Xml Settings", + "HeaderXmlDocumentAttributes": "Xml Document Attributes", + "HeaderXmlDocumentAttribute": "Xml Document Attribute", + "XmlDocumentAttributeListHelp": "These attributes are applied to the root element of every xml response.", + "OptionSaveMetadataAsHidden": "Save metadata and images as hidden files", + "LabelExtractChaptersDuringLibraryScan": "Extract chapter images during the library scan", + "LabelExtractChaptersDuringLibraryScanHelp": "If enabled, chapter images will be extracted when videos are imported during the library scan. If disabled they will be extracted during the chapter images scheduled task, allowing the regular library scan to complete faster.", + "LabelConnectGuestUserName": "Their Emby username or email address:", + "LabelConnectUserName": "Emby username\/email:", + "LabelConnectUserNameHelp": "Connect this user to an Emby account to enable easy sign-in access from any Emby app without having to know the server ip address.", + "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", + "LabelExternalPlayers": "External players:", + "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", + "HeaderSubtitleProfile": "Subtitle Profile", + "HeaderSubtitleProfiles": "Subtitle Profiles", + "HeaderSubtitleProfilesHelp": "Subtitle profiles describe the subtitle formats supported by the device.", + "LabelFormat": "Format:", + "LabelMethod": "Method:", + "LabelDidlMode": "Didl mode:", + "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", + "OptionResElement": "res element", + "OptionEmbedSubtitles": "Embed within container", + "OptionExternallyDownloaded": "External download", + "OptionHlsSegmentedSubtitles": "Hls segmented subtitles", + "LabelSubtitleFormatHelp": "Example: srt", + "ButtonLearnMore": "Learn more", + "TabPlayback": "Playback", + "HeaderLanguagePreferences": "Language Preferences", + "TabCinemaMode": "Cinema Mode", + "TitlePlayback": "Playback", + "LabelEnableCinemaModeFor": "Enable cinema mode for:", + "CinemaModeConfigurationHelp": "Cinema mode brings the theater experience straight to your living room with the ability to play trailers and custom intros before the main feature.", + "OptionTrailersFromMyMovies": "Include trailers from movies in my library", + "OptionUpcomingMoviesInTheaters": "Include trailers from new and upcoming movies", + "LabelLimitIntrosToUnwatchedContent": "Only use trailers from unwatched content", + "LabelEnableIntroParentalControl": "Enable smart parental control", + "LabelEnableIntroParentalControlHelp": "Trailers will only be selected with a parental rating equal to or less than the content being watched.", + "LabelTheseFeaturesRequireSupporterHelpAndTrailers": "These features require an active supporter membership and installation of the Trailer channel plugin.", + "OptionTrailersFromMyMoviesHelp": "Requires setup of local trailers.", + "LabelCustomIntrosPath": "Custom intros path:", + "LabelCustomIntrosPathHelp": "A folder containing video files. A video will be randomly selected and played after trailers.", + "ValueSpecialEpisodeName": "Special - {0}", + "LabelSelectInternetTrailersForCinemaMode": "Internet trailers:", + "OptionUpcomingDvdMovies": "Include trailers from new and upcoming movies on Dvd & Blu-ray", + "OptionUpcomingStreamingMovies": "Include trailers from new and upcoming movies on Netflix", + "LabelDisplayTrailersWithinMovieSuggestions": "Display trailers within movie suggestions", + "LabelDisplayTrailersWithinMovieSuggestionsHelp": "Requires installation of the Trailer channel.", + "CinemaModeConfigurationHelp2": "Individual users will have the ability to disable cinema mode within their own preferences.", + "LabelEnableCinemaMode": "Enable cinema mode", + "HeaderCinemaMode": "Cinema Mode", + "LabelDateAddedBehavior": "Date added behavior for new content:", + "OptionDateAddedImportTime": "Use date scanned into the library", + "OptionDateAddedFileTime": "Use file creation date", + "LabelDateAddedBehaviorHelp": "If a metadata value is present it will always be used before either of these options.", + "LabelNumberTrailerToPlay": "Number of trailers to play:", + "TitleDevices": "Devices", + "TabCameraUpload": "Camera Upload", + "TabDevices": "Devices", + "HeaderCameraUploadHelp": "Automatically upload photos and videos taken from your mobile devices into Emby.", + "MessageNoDevicesSupportCameraUpload": "You currently don't have any devices that support camera upload.", + "LabelCameraUploadPath": "Camera upload path:", + "LabelCameraUploadPathHelp": "Select a custom upload path, if desired. If unspecified a default folder will be used. If using a custom path it will also need to be added in the library setup area.", + "LabelCreateCameraUploadSubfolder": "Create a subfolder for each device", + "LabelCreateCameraUploadSubfolderHelp": "Specific folders can be assigned to a device by clicking on it from the Devices page.", + "LabelCustomDeviceDisplayName": "Display name:", + "LabelCustomDeviceDisplayNameHelp": "Supply a custom display name or leave empty to use the name reported by the device.", + "HeaderInviteUser": "Invite User", + "LabelConnectGuestUserNameHelp": "This is the username that your friend uses to sign in to the Emby website, or their email address.", + "HeaderInviteUserHelp": "Sharing your media with friends is easier than ever before with Emby Connect.", + "ButtonSendInvitation": "Send Invitation", + "HeaderSignInWithConnect": "Sign in with Emby Connect", + "HeaderGuests": "Guests", + "HeaderLocalUsers": "Local Users", + "HeaderPendingInvitations": "Pending Invitations", + "TabParentalControl": "Parental Control", + "HeaderAccessSchedule": "Access Schedule", + "HeaderAccessScheduleHelp": "Create an access schedule to limit access to certain hours.", + "ButtonAddSchedule": "Add Schedule", + "LabelAccessDay": "Day of week:", + "LabelAccessStart": "Start time:", + "LabelAccessEnd": "End time:", + "HeaderSchedule": "Schedule", + "OptionEveryday": "Every day", + "OptionWeekdays": "Weekdays", + "OptionWeekends": "Weekends", + "MessageProfileInfoSynced": "User profile information synced with Emby Connect.", + "HeaderOptionalLinkEmbyAccount": "Optional: Link your Emby account", + "ButtonTrailerReel": "Trailer reel", + "HeaderTrailerReel": "Trailer Reel", + "OptionPlayUnwatchedTrailersOnly": "Play only unwatched trailers", + "HeaderTrailerReelHelp": "Start a trailer reel to play a long running playlist of trailers.", + "MessageNoTrailersFound": "No trailers found. Install the Trailer channel to enhance your movie experience by adding a library of internet trailers.", + "HeaderNewUsers": "New Users", + "ButtonSignUp": "Sign up", + "ButtonForgotPassword": "Forgot password", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to accept it below or by clicking the link in the email.", + "TitleNewUser": "New User", + "ButtonConfigurePassword": "Configure Password", + "HeaderDashboardUserPassword": "User passwords are managed within each user's personal profile settings.", + "HeaderLibraryAccess": "Library Access", + "HeaderChannelAccess": "Channel Access", + "HeaderLatestItems": "Latest Items", + "LabelSelectLastestItemsFolders": "Include media from the following sections in Latest Items", + "HeaderShareMediaFolders": "Share Media Folders", + "MessageGuestSharingPermissionsHelp": "Most features are initially unavailable to guests but can be enabled as needed.", + "HeaderInvitations": "Invitations", + "LabelForgotPasswordUsernameHelp": "Enter your username, if you remember it.", + "HeaderForgotPassword": "Forgot Password", + "TitleForgotPassword": "Forgot Password", + "TitlePasswordReset": "Password Reset", + "LabelPasswordRecoveryPinCode": "Pin code:", + "HeaderPasswordReset": "Password Reset", + "HeaderParentalRatings": "Parental Ratings", + "HeaderVideoTypes": "Video Types", + "HeaderYears": "Years", + "HeaderAddTag": "Add Tag", + "LabelBlockContentWithTags": "Block content with tags:", + "LabelTag": "Tag:", + "LabelEnableSingleImageInDidlLimit": "Limit to single embedded image", + "LabelEnableSingleImageInDidlLimitHelp": "Some devices will not render properly if multiple images are embedded within Didl.", + "TabActivity": "Activity", + "TitleSync": "Sync", + "OptionAllowSyncContent": "Allow Sync", + "OptionAllowContentDownloading": "Allow media downloading", + "NameSeasonUnknown": "Season Unknown", + "NameSeasonNumber": "Season {0}", + "LabelNewUserNameHelp": "Usernames can contain letters (a-z), numbers (0-9), dashes (-), underscores (_), apostrophes ('), and periods (.)", + "TabJobs": "Jobs", + "TabSyncJobs": "Sync Jobs", + "LabelTagFilterMode": "Mode:", + "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", + "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "More", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "OptionEnableTranscodingThrottle": "Enable throttling", + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable enhanced presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", + "TabPhotos": "Photos", + "TabVideos": "Videos", + "HeaderWelcomeToEmby": "Welcome to Emby", + "EmbyIntroMessage": "With Emby you can easily stream videos, music and photos to smart phones, tablets and other devices from your Emby Server.", + "ButtonSkip": "Skip", + "TextConnectToServerManually": "Connect to server manually", + "ButtonSignInWithConnect": "Sign in with Emby Connect", + "ButtonConnect": "Connect", + "LabelServerHost": "Host:", + "LabelServerHostHelp": "192.168.1.100 or https:\/\/myserver.com", + "LabelServerPort": "Port:", + "HeaderNewServer": "New Server", + "ButtonChangeServer": "Change Server", + "HeaderConnectToServer": "Connect to Server", + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "HeaderExport": "Export", + "HeaderColumns": "Columns", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" +}
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/he.json b/MediaBrowser.Server.Implementations/Localization/Server/he.json index d773ae921..9d1107c08 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/he.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/he.json @@ -1,5 +1,196 @@ { - "TabWebClient": "Web Client", + "LabelExit": "\u05d9\u05e6\u05d9\u05d0\u05d4", + "LabelVisitCommunity": "\u05d1\u05e7\u05e8 \u05d1\u05e7\u05d4\u05d9\u05dc\u05d4", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "\u05e8\u05d2\u05d9\u05dc", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "\u05d3\u05e4\u05d3\u05e3 \u05d1\u05ea\u05d9\u05e7\u05d9\u05d9\u05d4", + "LabelConfigureServer": "Configure Emby", + "LabelOpenLibraryViewer": "\u05e4\u05ea\u05d7 \u05de\u05e6\u05d9\u05d2 \u05ea\u05d9\u05e7\u05d9\u05d5\u05ea", + "LabelRestartServer": "\u05d0\u05ea\u05d7\u05dc \u05d0\u05ea \u05d4\u05e9\u05e8\u05ea", + "LabelShowLogWindow": "\u05d4\u05e8\u05d0\u05d4 \u05d7\u05dc\u05d5\u05df \u05dc\u05d5\u05d2", + "LabelPrevious": "\u05d4\u05e7\u05d5\u05d3\u05dd", + "LabelFinish": "\u05e1\u05d9\u05d9\u05dd", + "FolderTypeMixed": "Mixed content", + "LabelNext": "\u05d4\u05d1\u05d0", + "LabelYoureDone": "\u05e1\u05d9\u05d9\u05de\u05ea!", + "WelcomeToProject": "Welcome to Emby!", + "ThisWizardWillGuideYou": "\u05d0\u05e9\u05e3 \u05d6\u05d4 \u05d9\u05e2\u05d6\u05d5\u05e8 \u05dc\u05da \u05d1\u05d4\u05ea\u05dc\u05d9\u05da \u05d4\u05d4\u05ea\u05e7\u05e0\u05d4.", + "TellUsAboutYourself": "\u05e1\u05e4\u05e8 \u05dc\u05e0\u05d5 \u05e2\u05dc \u05e2\u05e6\u05de\u05da", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "\u05e9\u05de\u05da \u05d4\u05e4\u05e8\u05d8\u05d9:", + "MoreUsersCanBeAddedLater": "\u05e0\u05d9\u05ea\u05df \u05dc\u05d4\u05d2\u05d3\u05d9\u05e8 \u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd \u05e0\u05d5\u05e1\u05e4\u05d9\u05dd \u05de\u05d0\u05d5\u05d7\u05e8 \u05d9\u05d5\u05ea\u05e8 \u05d3\u05e8\u05da \u05dc\u05d5\u05d7 \u05d4\u05d1\u05e7\u05e8\u05d4.", + "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", + "LabelWindowsService": "\u05e9\u05d9\u05e8\u05d5\u05ea \u05d5\u05d5\u05d9\u05e0\u05d3\u05d5\u05e1", + "AWindowsServiceHasBeenInstalled": "\u05e9\u05d9\u05e8\u05d5\u05ea \u05d5\u05d5\u05d9\u05e0\u05d3\u05d5\u05e1 \u05d4\u05d5\u05ea\u05e7\u05df", + "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", + "WindowsServiceIntro2": "\u05d0\u05dd \u05d0\u05ea\u05d4 \u05de\u05e4\u05e2\u05d9\u05dc \u05d0\u05ea \u05d4\u05e9\u05d9\u05e8\u05d5\u05ea \u05d5\u05d5\u05d9\u05e0\u05d3\u05d5\u05e1, \u05d1\u05d1\u05e7\u05e9\u05d4 \u05e9\u05d9\u05dd \u05dc\u05d1 \u05e9\u05d4\u05d5\u05d0 \u05dc\u05d0 \u05d9\u05db\u05d5\u05dc \u05dc\u05e8\u05d5\u05e5 \u05d1\u05d0\u05d5\u05ea\u05d5 \u05d6\u05de\u05df \u05e9\u05d4\u05e9\u05e8\u05ea \u05db\u05d1\u05e8 \u05e2\u05d5\u05d1\u05d3 \u05d1\u05e8\u05e7\u05e2. \u05dc\u05db\u05df \u05ea\u05e6\u05d8\u05e8\u05da \u05dc\u05e1\u05d2\u05d5\u05e8 \u05d0\u05ea \u05d4\u05e9\u05e8\u05ea \u05e2\u05dc \u05de\u05e0\u05ea \u05dc\u05d4\u05e4\u05e2\u05d9\u05dc \u05d0\u05ea \u05d4\u05e9\u05d9\u05e8\u05d5\u05ea. \u05d4\u05e9\u05d9\u05e8\u05d5\u05ea \u05d2\u05dd \u05e6\u05e8\u05d9\u05da \u05dc\u05d4\u05d9\u05d5\u05ea \u05de\u05d5\u05d2\u05d3\u05e8 \u05e2\u05dd \u05d4\u05e8\u05e9\u05d0\u05d5\u05ea \u05de\u05e0\u05d4\u05dc \u05d3\u05e8\u05da \u05dc\u05d5\u05d7 \u05d4\u05d1\u05e7\u05e8\u05d4. \u05d1\u05d1\u05e7\u05e9\u05d4 \u05e7\u05d7 \u05d1\u05d7\u05e9\u05d1\u05d5\u05df \u05e9\u05db\u05e8\u05d2\u05e2 \u05d4\u05e9\u05d9\u05e8\u05d5\u05ea \u05dc\u05d0 \u05d9\u05db\u05d5\u05dc \u05dc\u05e2\u05d3\u05db\u05df \u05d0\u05ea \u05e2\u05e6\u05de\u05d5 \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9\u05ea, \u05d5\u05dc\u05db\u05df \u05d2\u05d9\u05e8\u05e1\u05d0\u05d5\u05ea \u05d7\u05d3\u05e9\u05d5\u05ea \u05d9\u05e6\u05e8\u05d9\u05db\u05d5 \u05e2\u05d9\u05d3\u05db\u05d5\u05df \u05d9\u05d3\u05e0\u05d9.", + "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", + "LabelConfigureSettings": "\u05e7\u05d1\u05e2 \u05d0\u05ea \u05ea\u05e6\u05d5\u05e8\u05ea \u05d4\u05d4\u05d2\u05d3\u05e8\u05d5\u05ea", + "LabelEnableVideoImageExtraction": "\u05d0\u05e4\u05e9\u05e8 \u05e9\u05dc\u05d9\u05e4\u05ea \u05ea\u05de\u05d5\u05e0\u05d4 \u05de\u05e1\u05e8\u05d8", + "VideoImageExtractionHelp": "\u05e2\u05d1\u05d5\u05e8 \u05e1\u05e8\u05d8\u05d9\u05dd \u05e9\u05d0\u05d9\u05df \u05dc\u05d4\u05dd \u05db\u05d1\u05e8 \u05ea\u05de\u05d5\u05e0\u05d4, \u05d5\u05dc\u05d0 \u05e0\u05de\u05e6\u05d0\u05d4 \u05dc\u05d4\u05dd \u05d0\u05d7\u05ea \u05d1\u05d0\u05d9\u05e0\u05d8\u05e8\u05e0\u05d8. \u05d4\u05d2\u05d3\u05e8\u05d4 \u05d6\u05d5 \u05ea\u05d5\u05e1\u05d9\u05e3 \u05de\u05e2\u05d8 \u05d6\u05de\u05df \u05dc\u05ea\u05d4\u05dc\u05d9\u05da \u05e1\u05e8\u05d9\u05e7\u05ea \u05d4\u05ea\u05e7\u05d9\u05d9\u05d4 \u05d4\u05e8\u05d0\u05e9\u05d5\u05e0\u05d9, \u05d0\u05da \u05ea\u05e1\u05e4\u05e7 \u05ea\u05e6\u05d5\u05d2\u05d4 \u05d9\u05d5\u05ea\u05e8 \u05d9\u05e4\u05d4.", + "LabelEnableChapterImageExtractionForMovies": "\u05d7\u05dc\u05e5 \u05ea\u05de\u05d5\u05e0\u05ea \u05e4\u05e8\u05e7 \u05dc\u05e1\u05e8\u05d8\u05d9\u05dd", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "\u05d0\u05e4\u05e9\u05e8 \u05de\u05d9\u05e4\u05d5\u05d9 \u05e4\u05d5\u05e8\u05d8\u05d9\u05dd \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9", + "LabelEnableAutomaticPortMappingHelp": "UPnP \u05de\u05d0\u05e4\u05e9\u05e8 \u05d4\u05d2\u05d3\u05e8\u05d5\u05ea \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9\u05d5\u05ea \u05e9\u05dc \u05d4\u05e8\u05d0\u05d5\u05d8\u05e8 \u05dc\u05d0\u05e4\u05e9\u05e8 \u05d2\u05d9\u05e9\u05d4 \u05de\u05e8\u05d5\u05d7\u05e7\u05ea \u05d1\u05e7\u05dc\u05d5\u05ea. \u05d0\u05e4\u05e9\u05e8\u05d5\u05ea \u05d6\u05d5 \u05e2\u05dc\u05d5\u05dc\u05d4 \u05dc\u05d0 \u05dc\u05e2\u05d1\u05d5\u05d3 \u05e2\u05dd \u05db\u05dc \u05d3\u05d2\u05de\u05d9 \u05d4\u05e8\u05d0\u05d5\u05d8\u05e8\u05d9\u05dd.", + "HeaderTermsOfService": "Emby Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToEmbyConnect": "Linked to Emby Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", + "ButtonOk": "\u05d0\u05e9\u05e8", + "ButtonCancel": "\u05d1\u05d8\u05dc", + "ButtonExit": "Exit", + "ButtonNew": "\u05d7\u05d3\u05e9", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "Username or email:", + "LabelEnterConnectUserNameHelp": "This is your Emby online account username or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "\u05d4\u05d2\u05d3\u05e8 \u05d0\u05ea \u05e1\u05e4\u05e8\u05d9\u05d9\u05ea \u05d4\u05de\u05d3\u05d9\u05d4 \u05e9\u05dc\u05da", + "ButtonAddMediaFolder": "\u05d4\u05d5\u05e1\u05e3 \u05ea\u05d9\u05e7\u05d9\u05d9\u05ea \u05de\u05d3\u05d9\u05d4", + "LabelFolderType": "\u05e1\u05d5\u05d2 \u05d4\u05ea\u05d9\u05e7\u05d9\u05d9\u05d4:", + "ReferToMediaLibraryWiki": "\u05e4\u05e0\u05d4 \u05dc\u05de\u05d9\u05d3\u05e2 \u05d0\u05d5\u05d3\u05d5\u05ea \u05e1\u05e4\u05e8\u05d9\u05d9\u05ea \u05d4\u05de\u05d3\u05d9\u05d4.", + "LabelCountry": "\u05de\u05d3\u05d9\u05e0\u05d4:", + "LabelLanguage": "\u05e9\u05e4\u05d4:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "\u05e9\u05e4\u05ea \u05de\u05d9\u05d3\u05e2 \u05de\u05d5\u05e2\u05d3\u05e4\u05ea:", + "LabelSaveLocalMetadata": "\u05e9\u05de\u05d5\u05e8 \u05ea\u05de\u05d5\u05e0\u05d5\u05ea \u05e8\u05e7\u05e2 \u05d5\u05de\u05d9\u05d3\u05e2 \u05d1\u05ea\u05d5\u05da \u05e1\u05e4\u05e8\u05d9\u05d5\u05ea \u05d4\u05de\u05d3\u05d9\u05d4", + "LabelSaveLocalMetadataHelp": "\u05e9\u05de\u05d9\u05e8\u05ea \u05ea\u05de\u05d5\u05e0\u05d5\u05ea \u05e8\u05e7\u05e2 \u05d5\u05de\u05d9\u05d3\u05e2 \u05d9\u05e9\u05d9\u05e8\u05d5\u05ea \u05d1\u05e1\u05e4\u05e8\u05d9\u05d5\u05ea \u05d4\u05de\u05d3\u05d9\u05d4 \u05ea\u05d0\u05e4\u05e9\u05e8 \u05e2\u05e8\u05d9\u05db\u05d4 \u05e0\u05d5\u05d7\u05d4 \u05d5\u05e7\u05dc\u05d4 \u05e9\u05dc\u05d4\u05dd.", + "LabelDownloadInternetMetadata": "\u05d4\u05d5\u05e8\u05d3 \u05ea\u05de\u05d5\u05e0\u05d5\u05ea \u05e8\u05e7\u05e2 \u05d5\u05de\u05d9\u05d3\u05e2 \u05de\u05d4\u05d0\u05d9\u05e0\u05e8\u05e0\u05d8", + "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", + "TabPreferences": "\u05d4\u05e2\u05d3\u05e4\u05d5\u05ea", + "TabPassword": "\u05e1\u05d9\u05e1\u05de\u05d0", + "TabLibraryAccess": "\u05d2\u05d9\u05e9\u05d4 \u05dc\u05ea\u05d9\u05e7\u05d9\u05d5\u05ea", + "TabAccess": "Access", + "TabImage": "\u05ea\u05de\u05d5\u05e0\u05d4", + "TabProfile": "\u05e4\u05e8\u05d5\u05e4\u05d9\u05dc", + "TabMetadata": "Metadata", + "TabImages": "\u05ea\u05de\u05d5\u05e0\u05d5\u05ea", + "TabNotifications": "\u05d4\u05ea\u05e8\u05d0\u05d5\u05ea", + "TabCollectionTitles": "\u05db\u05d5\u05ea\u05e8\u05d9\u05dd", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "\u05d4\u05e6\u05d2 \u05e4\u05e8\u05e7\u05d9\u05dd \u05d7\u05e1\u05e8\u05d9\u05dd \u05d1\u05ea\u05d5\u05da \u05d4\u05e2\u05d5\u05e0\u05d5\u05ea", + "LabelUnairedMissingEpisodesWithinSeasons": "\u05d4\u05e6\u05d2 \u05e4\u05e8\u05e7\u05d9\u05dd \u05e9\u05e2\u05d3\u05d9\u05df \u05d0\u05dc \u05e9\u05d5\u05d3\u05e8\u05d5 \u05d1\u05ea\u05d5\u05da \u05d4\u05e2\u05d5\u05e0\u05d5\u05ea", + "HeaderVideoPlaybackSettings": "\u05d4\u05d2\u05d3\u05e8\u05d5\u05ea \u05e0\u05d9\u05d2\u05d5\u05df", + "HeaderPlaybackSettings": "\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05e0\u05d9\u05d2\u05d5\u05df", + "LabelAudioLanguagePreference": "\u05e9\u05e4\u05ea \u05e7\u05d5\u05dc \u05de\u05d5\u05e2\u05d3\u05e4\u05ea:", + "LabelSubtitleLanguagePreference": "\u05e9\u05e4\u05ea \u05db\u05ea\u05d5\u05d1\u05d9\u05d5\u05ea \u05de\u05d5\u05e2\u05d3\u05e4\u05ea:", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Only forced subtitles", + "OptionAlwaysPlaySubtitles": "Always play subtitles", + "OptionNoSubtitles": "No Subtitles", + "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", + "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", + "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", + "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", + "TabProfiles": "\u05e4\u05e8\u05d5\u05e4\u05d9\u05dc\u05d9\u05dd", + "TabSecurity": "\u05d1\u05d8\u05d9\u05d7\u05d5\u05ea", + "ButtonAddUser": "\u05d4\u05d5\u05e1\u05e3 \u05de\u05e9\u05ea\u05de\u05e9", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "\u05e9\u05de\u05d5\u05e8", + "ButtonResetPassword": "\u05d0\u05d9\u05e4\u05d5\u05e1 \u05e1\u05d9\u05e1\u05de\u05d0", + "LabelNewPassword": "\u05e1\u05d9\u05e1\u05de\u05d0 \u05d7\u05d3\u05e9\u05d4:", + "LabelNewPasswordConfirm": "\u05d0\u05d9\u05de\u05d5\u05ea \u05e1\u05d9\u05e1\u05de\u05d0 \u05d7\u05d3\u05e9\u05d4:", + "HeaderCreatePassword": "\u05e6\u05d5\u05e8 \u05e1\u05d9\u05e1\u05de\u05d0", + "LabelCurrentPassword": "\u05e1\u05d9\u05e1\u05de\u05d0 \u05e0\u05d5\u05db\u05d7\u05d9\u05ea:", + "LabelMaxParentalRating": "\u05d3\u05d9\u05e8\u05d5\u05d2 \u05d4\u05d5\u05e8\u05d9\u05dd \u05de\u05e7\u05e1\u05d9\u05de\u05d0\u05dc\u05d9:", + "MaxParentalRatingHelp": "\u05ea\u05d5\u05db\u05df \u05e2\u05dd \u05d3\u05d9\u05e8\u05d5\u05d2 \u05d2\u05d5\u05d1\u05d4 \u05d9\u05d5\u05ea\u05e8 \u05d9\u05d5\u05e1\u05ea\u05e8 \u05de\u05d4\u05de\u05e9\u05ea\u05de\u05e9.", + "LibraryAccessHelp": "\u05d1\u05d7\u05e8 \u05d0\u05ea \u05e1\u05e4\u05e8\u05d9\u05d5\u05ea \u05d4\u05de\u05d3\u05d9\u05d4 \u05d0\u05e9\u05e8 \u05d9\u05e9\u05d5\u05ea\u05e4\u05d5 \u05e2\u05dd \u05d4\u05de\u05e9\u05ea\u05de\u05e9. \u05de\u05e0\u05d4\u05dc\u05d9\u05dd \u05d9\u05d5\u05db\u05dc\u05d5 \u05dc\u05e2\u05e8\u05d5\u05ea \u05d0\u05ea \u05db\u05dc \u05d4\u05ea\u05d9\u05e7\u05d9\u05d5\u05ea \u05d1\u05d0\u05de\u05e6\u05e2\u05d5\u05ea \u05e2\u05d5\u05e8\u05da \u05d4\u05de\u05d9\u05d3\u05e2.", + "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", + "ButtonDeleteImage": "\u05de\u05d7\u05e7 \u05ea\u05de\u05d5\u05e0\u05d4", + "LabelSelectUsers": "\u05d1\u05d7\u05e8 \u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd:", + "ButtonUpload": "\u05d4\u05e2\u05dc\u05d4", + "HeaderUploadNewImage": "\u05d4\u05e2\u05dc\u05d4 \u05ea\u05de\u05d5\u05e0\u05d4 \u05d7\u05d3\u05e9\u05d4", + "LabelDropImageHere": "Drop image here", + "ImageUploadAspectRatioHelp": "\u05de\u05d5\u05de\u05dc\u05e5 \u05d9\u05d7\u05e1 \u05d2\u05d5\u05d1\u05d4 \u05e9\u05dc 1:1. \u05e8\u05e7 JPG\/PNG.", + "MessageNothingHere": "\u05d0\u05d9\u05df \u05db\u05d0\u05df \u05db\u05dc\u05d5\u05dd.", + "MessagePleaseEnsureInternetMetadata": "\u05d1\u05d1\u05e7\u05e9\u05d4 \u05d5\u05d5\u05d3\u05d0 \u05db\u05d9 \u05d4\u05d5\u05e8\u05d3\u05ea \u05de\u05d9\u05d3\u05e2 \u05de\u05d4\u05d0\u05d9\u05e0\u05d8\u05e8\u05e0\u05d8 \u05de\u05d0\u05d5\u05e4\u05e9\u05e8\u05ea", + "TabSuggested": "\u05de\u05de\u05d5\u05dc\u05e5", + "TabSuggestions": "Suggestions", + "TabLatest": "\u05d0\u05d7\u05e8\u05d5\u05df", + "TabUpcoming": "\u05d1\u05e7\u05e8\u05d5\u05d1", + "TabShows": "\u05ea\u05d5\u05db\u05e0\u05d9\u05d5\u05ea", + "TabEpisodes": "\u05e4\u05e8\u05e7\u05d9\u05dd", + "TabGenres": "\u05d6\u05d0\u05e0\u05e8\u05d9\u05dd", + "TabPeople": "\u05d0\u05e0\u05e9\u05d9\u05dd", + "TabNetworks": "\u05e8\u05e9\u05ea\u05d5\u05ea", + "HeaderUsers": "\u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd", + "HeaderFilters": "\u05de\u05e1\u05e0\u05e0\u05d9\u05dd:", + "ButtonFilter": "\u05de\u05e1\u05e0\u05df", + "OptionFavorite": "\u05de\u05d5\u05e2\u05d3\u05e4\u05d9\u05dd", + "OptionLikes": "\u05e0\u05d1\u05d7\u05e8\u05d9\u05dd", + "OptionDislikes": "\u05dc\u05d0 \u05d0\u05d5\u05d4\u05d1", + "OptionActors": "\u05e9\u05d7\u05e7\u05e0\u05d9\u05dd", + "OptionGuestStars": "\u05e9\u05d7\u05e7\u05df \u05d0\u05d5\u05e8\u05d7", + "OptionDirectors": "\u05d1\u05de\u05d0\u05d9\u05dd", + "OptionWriters": "\u05db\u05d5\u05ea\u05d1\u05d9\u05dd", + "OptionProducers": "\u05de\u05e4\u05d9\u05e7\u05d9\u05dd", + "HeaderResume": "\u05d4\u05de\u05e9\u05da", + "HeaderNextUp": "\u05d4\u05d1\u05d0 \u05d1\u05ea\u05d5\u05e8", + "NoNextUpItemsMessage": "\u05dc\u05d0 \u05e0\u05de\u05e6\u05d0 \u05db\u05dc\u05d5\u05dd. \u05d4\u05ea\u05d7\u05dc\u05ea \u05dc\u05e6\u05e4\u05d5\u05ea \u05d1\u05e1\u05d3\u05e8\u05d5\u05ea \u05e9\u05dc\u05da!", "HeaderLatestEpisodes": "\u05e4\u05e8\u05e7\u05d9\u05dd \u05d0\u05d7\u05e8\u05d5\u05e0\u05d9\u05dd", "HeaderPersonTypes": "\u05e1\u05d5\u05d2\u05d9 \u05d0\u05e0\u05e9\u05d9\u05dd:", "TabSongs": "\u05e9\u05d9\u05e8\u05d9\u05dd", @@ -96,7 +287,9 @@ "OptionFileMetadataYearMismatch": "\u05d4\u05e9\u05e0\u05d4 \u05dc\u05d0 \u05de\u05ea\u05d0\u05d9\u05de\u05d4 \u05d1\u05d9\u05df \u05d4\u05de\u05d9\u05d3\u05e2 \u05dc\u05e7\u05d5\u05d1\u05e5", "TabGeneral": "\u05db\u05dc\u05dc\u05d9", "TitleSupport": "\u05ea\u05de\u05d9\u05db\u05d4", + "LabelSeasonNumber": "Season number", "TabLog": "\u05dc\u05d5\u05d2", + "LabelEpisodeNumber": "Episode number", "TabAbout": "\u05d0\u05d5\u05d3\u05d5\u05ea", "TabSupporterKey": "\u05de\u05e4\u05ea\u05d7 \u05ea\u05d5\u05de\u05da", "TabBecomeSupporter": "\u05d4\u05e4\u05d5\u05da \u05dc\u05ea\u05d5\u05de\u05da", @@ -122,6 +315,9 @@ "OptionAllowRemoteControlOthers": "Allow remote control of other users", "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", "HeaderRemoteControl": "Remote Control", "OptionMissingTmdbId": "\u05d7\u05d6\u05e8 \u05de\u05d6\u05d4\u05d4 Tmdb", "OptionIsHD": "HD", @@ -390,8 +586,6 @@ "LabelSkipped": "\u05d3\u05d5\u05dc\u05d2", "HeaderEpisodeOrganization": "\u05d0\u05d9\u05e8\u05d2\u05d5\u05df \u05e4\u05e8\u05e7\u05d9\u05dd", "LabelSeries": "Series:", - "LabelSeasonNumber": "\u05de\u05e1\u05e4\u05e8 \u05e2\u05d5\u05e0\u05d4:", - "LabelEpisodeNumber": "\u05de\u05e1\u05e4\u05e8 \u05e4\u05e8\u05e7:", "LabelEndingEpisodeNumber": "\u05de\u05e1\u05e4\u05e8 \u05e1\u05d9\u05d5\u05dd \u05e4\u05e8\u05e7:", "LabelEndingEpisodeNumberHelp": "\u05d4\u05db\u05e8\u05d7\u05d9 \u05e8\u05e7 \u05e2\u05d1\u05d5\u05e8 \u05e7\u05d1\u05e6\u05d9\u05dd \u05e9\u05dc \u05e4\u05e8\u05e7\u05d9\u05dd \u05de\u05d7\u05d5\u05d1\u05e8\u05d9\u05dd", "HeaderSupportTheTeam": "Support the Emby Team", @@ -679,6 +873,7 @@ "HeaderTypeText": "Enter Text", "LabelTypeText": "Text", "HeaderSearchForSubtitles": "Search for Subtitles", + "ButtonMore": "More", "MessageNoSubtitleSearchResultsFound": "No search results founds.", "TabDisplay": "Display", "TabLanguages": "Languages", @@ -709,7 +904,7 @@ "HeaderLiveTv": "Live TV", "HeaderReports": "Reports", "HeaderMetadataManager": "Metadata Manager", - "HeaderPreferences": "Preferences", + "HeaderSettings": "Settings", "MessageLoadingChannels": "Loading channel content...", "MessageLoadingContent": "Loading content...", "ButtonMarkRead": "Mark Read", @@ -907,7 +1102,6 @@ "OptionReportArtists": "Artists", "OptionReportAlbums": "Albums", "OptionReportAdultVideos": "Adult videos", - "ButtonMore": "More", "HeaderActivity": "Activity", "ScheduledTaskStartedWithName": "{0} started", "ScheduledTaskCancelledWithName": "{0} was cancelled", @@ -1037,6 +1231,7 @@ "OptionNoThemeVideo": "No Theme Video", "LabelOneTimeDonationAmount": "Donation amount:", "ButtonDonate": "Donate", + "ButtonPurchase": "Purchase", "OptionActor": "Actor", "OptionComposer": "Composer", "OptionDirector": "Director", @@ -1056,7 +1251,6 @@ "HeaderDeveloperInfo": "Developer Info", "HeaderRevisionHistory": "Revision History", "ButtonViewWebsite": "View website", - "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderXmlSettings": "Xml Settings", "HeaderXmlDocumentAttributes": "Xml Document Attributes", "HeaderXmlDocumentAttribute": "Xml Document Attribute", @@ -1070,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", "LabelExternalPlayers": "External players:", "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", "HeaderSubtitleProfile": "Subtitle Profile", "HeaderSubtitleProfiles": "Subtitle Profiles", "HeaderSubtitleProfilesHelp": "Subtitle profiles describe the subtitle formats supported by the device.", @@ -1198,7 +1395,7 @@ "HeaderUpcomingMovies": "Upcoming Movies", "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", - "ButtonMoreItems": "More...", + "ButtonMoreItems": "More", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", @@ -1217,14 +1414,6 @@ "OptionEnableFullSpeedConversion": "Enable full speed conversion", "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", "HeaderViewStyles": "View Styles", "LabelSelectViewStyles": "Enable enhanced presentations for:", "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", @@ -1242,196 +1431,24 @@ "HeaderNewServer": "New Server", "ButtonChangeServer": "Change Server", "HeaderConnectToServer": "Connect to Server", - "LabelExit": "\u05d9\u05e6\u05d9\u05d0\u05d4", - "LabelVisitCommunity": "\u05d1\u05e7\u05e8 \u05d1\u05e7\u05d4\u05d9\u05dc\u05d4", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "\u05e8\u05d2\u05d9\u05dc", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "\u05d3\u05e4\u05d3\u05e3 \u05d1\u05ea\u05d9\u05e7\u05d9\u05d9\u05d4", - "LabelConfigureServer": "Configure Emby", - "LabelOpenLibraryViewer": "\u05e4\u05ea\u05d7 \u05de\u05e6\u05d9\u05d2 \u05ea\u05d9\u05e7\u05d9\u05d5\u05ea", - "LabelRestartServer": "\u05d0\u05ea\u05d7\u05dc \u05d0\u05ea \u05d4\u05e9\u05e8\u05ea", - "LabelShowLogWindow": "\u05d4\u05e8\u05d0\u05d4 \u05d7\u05dc\u05d5\u05df \u05dc\u05d5\u05d2", - "LabelPrevious": "\u05d4\u05e7\u05d5\u05d3\u05dd", - "LabelFinish": "\u05e1\u05d9\u05d9\u05dd", - "LabelNext": "\u05d4\u05d1\u05d0", - "LabelYoureDone": "\u05e1\u05d9\u05d9\u05de\u05ea!", - "WelcomeToProject": "Welcome to Emby!", - "ThisWizardWillGuideYou": "\u05d0\u05e9\u05e3 \u05d6\u05d4 \u05d9\u05e2\u05d6\u05d5\u05e8 \u05dc\u05da \u05d1\u05d4\u05ea\u05dc\u05d9\u05da \u05d4\u05d4\u05ea\u05e7\u05e0\u05d4.", - "TellUsAboutYourself": "\u05e1\u05e4\u05e8 \u05dc\u05e0\u05d5 \u05e2\u05dc \u05e2\u05e6\u05de\u05da", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "\u05e9\u05de\u05da \u05d4\u05e4\u05e8\u05d8\u05d9:", - "MoreUsersCanBeAddedLater": "\u05e0\u05d9\u05ea\u05df \u05dc\u05d4\u05d2\u05d3\u05d9\u05e8 \u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd \u05e0\u05d5\u05e1\u05e4\u05d9\u05dd \u05de\u05d0\u05d5\u05d7\u05e8 \u05d9\u05d5\u05ea\u05e8 \u05d3\u05e8\u05da \u05dc\u05d5\u05d7 \u05d4\u05d1\u05e7\u05e8\u05d4.", - "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "\u05e9\u05d9\u05e8\u05d5\u05ea \u05d5\u05d5\u05d9\u05e0\u05d3\u05d5\u05e1", - "AWindowsServiceHasBeenInstalled": "\u05e9\u05d9\u05e8\u05d5\u05ea \u05d5\u05d5\u05d9\u05e0\u05d3\u05d5\u05e1 \u05d4\u05d5\u05ea\u05e7\u05df", - "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", - "WindowsServiceIntro2": "\u05d0\u05dd \u05d0\u05ea\u05d4 \u05de\u05e4\u05e2\u05d9\u05dc \u05d0\u05ea \u05d4\u05e9\u05d9\u05e8\u05d5\u05ea \u05d5\u05d5\u05d9\u05e0\u05d3\u05d5\u05e1, \u05d1\u05d1\u05e7\u05e9\u05d4 \u05e9\u05d9\u05dd \u05dc\u05d1 \u05e9\u05d4\u05d5\u05d0 \u05dc\u05d0 \u05d9\u05db\u05d5\u05dc \u05dc\u05e8\u05d5\u05e5 \u05d1\u05d0\u05d5\u05ea\u05d5 \u05d6\u05de\u05df \u05e9\u05d4\u05e9\u05e8\u05ea \u05db\u05d1\u05e8 \u05e2\u05d5\u05d1\u05d3 \u05d1\u05e8\u05e7\u05e2. \u05dc\u05db\u05df \u05ea\u05e6\u05d8\u05e8\u05da \u05dc\u05e1\u05d2\u05d5\u05e8 \u05d0\u05ea \u05d4\u05e9\u05e8\u05ea \u05e2\u05dc \u05de\u05e0\u05ea \u05dc\u05d4\u05e4\u05e2\u05d9\u05dc \u05d0\u05ea \u05d4\u05e9\u05d9\u05e8\u05d5\u05ea. \u05d4\u05e9\u05d9\u05e8\u05d5\u05ea \u05d2\u05dd \u05e6\u05e8\u05d9\u05da \u05dc\u05d4\u05d9\u05d5\u05ea \u05de\u05d5\u05d2\u05d3\u05e8 \u05e2\u05dd \u05d4\u05e8\u05e9\u05d0\u05d5\u05ea \u05de\u05e0\u05d4\u05dc \u05d3\u05e8\u05da \u05dc\u05d5\u05d7 \u05d4\u05d1\u05e7\u05e8\u05d4. \u05d1\u05d1\u05e7\u05e9\u05d4 \u05e7\u05d7 \u05d1\u05d7\u05e9\u05d1\u05d5\u05df \u05e9\u05db\u05e8\u05d2\u05e2 \u05d4\u05e9\u05d9\u05e8\u05d5\u05ea \u05dc\u05d0 \u05d9\u05db\u05d5\u05dc \u05dc\u05e2\u05d3\u05db\u05df \u05d0\u05ea \u05e2\u05e6\u05de\u05d5 \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9\u05ea, \u05d5\u05dc\u05db\u05df \u05d2\u05d9\u05e8\u05e1\u05d0\u05d5\u05ea \u05d7\u05d3\u05e9\u05d5\u05ea \u05d9\u05e6\u05e8\u05d9\u05db\u05d5 \u05e2\u05d9\u05d3\u05db\u05d5\u05df \u05d9\u05d3\u05e0\u05d9.", - "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", - "LabelConfigureSettings": "\u05e7\u05d1\u05e2 \u05d0\u05ea \u05ea\u05e6\u05d5\u05e8\u05ea \u05d4\u05d4\u05d2\u05d3\u05e8\u05d5\u05ea", - "LabelEnableVideoImageExtraction": "\u05d0\u05e4\u05e9\u05e8 \u05e9\u05dc\u05d9\u05e4\u05ea \u05ea\u05de\u05d5\u05e0\u05d4 \u05de\u05e1\u05e8\u05d8", - "VideoImageExtractionHelp": "\u05e2\u05d1\u05d5\u05e8 \u05e1\u05e8\u05d8\u05d9\u05dd \u05e9\u05d0\u05d9\u05df \u05dc\u05d4\u05dd \u05db\u05d1\u05e8 \u05ea\u05de\u05d5\u05e0\u05d4, \u05d5\u05dc\u05d0 \u05e0\u05de\u05e6\u05d0\u05d4 \u05dc\u05d4\u05dd \u05d0\u05d7\u05ea \u05d1\u05d0\u05d9\u05e0\u05d8\u05e8\u05e0\u05d8. \u05d4\u05d2\u05d3\u05e8\u05d4 \u05d6\u05d5 \u05ea\u05d5\u05e1\u05d9\u05e3 \u05de\u05e2\u05d8 \u05d6\u05de\u05df \u05dc\u05ea\u05d4\u05dc\u05d9\u05da \u05e1\u05e8\u05d9\u05e7\u05ea \u05d4\u05ea\u05e7\u05d9\u05d9\u05d4 \u05d4\u05e8\u05d0\u05e9\u05d5\u05e0\u05d9, \u05d0\u05da \u05ea\u05e1\u05e4\u05e7 \u05ea\u05e6\u05d5\u05d2\u05d4 \u05d9\u05d5\u05ea\u05e8 \u05d9\u05e4\u05d4.", - "LabelEnableChapterImageExtractionForMovies": "\u05d7\u05dc\u05e5 \u05ea\u05de\u05d5\u05e0\u05ea \u05e4\u05e8\u05e7 \u05dc\u05e1\u05e8\u05d8\u05d9\u05dd", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "\u05d0\u05e4\u05e9\u05e8 \u05de\u05d9\u05e4\u05d5\u05d9 \u05e4\u05d5\u05e8\u05d8\u05d9\u05dd \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9", - "LabelEnableAutomaticPortMappingHelp": "UPnP \u05de\u05d0\u05e4\u05e9\u05e8 \u05d4\u05d2\u05d3\u05e8\u05d5\u05ea \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9\u05d5\u05ea \u05e9\u05dc \u05d4\u05e8\u05d0\u05d5\u05d8\u05e8 \u05dc\u05d0\u05e4\u05e9\u05e8 \u05d2\u05d9\u05e9\u05d4 \u05de\u05e8\u05d5\u05d7\u05e7\u05ea \u05d1\u05e7\u05dc\u05d5\u05ea. \u05d0\u05e4\u05e9\u05e8\u05d5\u05ea \u05d6\u05d5 \u05e2\u05dc\u05d5\u05dc\u05d4 \u05dc\u05d0 \u05dc\u05e2\u05d1\u05d5\u05d3 \u05e2\u05dd \u05db\u05dc \u05d3\u05d2\u05de\u05d9 \u05d4\u05e8\u05d0\u05d5\u05d8\u05e8\u05d9\u05dd.", - "HeaderTermsOfService": "Emby Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LinkedToEmbyConnect": "Linked to Emby Connect", - "HeaderSupporterBenefits": "Supporter Benefits", - "HeaderAddUser": "Add User", - "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", - "LabelPinCode": "Pin code:", - "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", - "HeaderSync": "Sync", - "ButtonOk": "\u05d0\u05e9\u05e8", - "ButtonCancel": "\u05d1\u05d8\u05dc", - "ButtonExit": "Exit", - "ButtonNew": "\u05d7\u05d3\u05e9", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "TabPlaylist": "Playlist", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Emby online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "\u05d4\u05d2\u05d3\u05e8 \u05d0\u05ea \u05e1\u05e4\u05e8\u05d9\u05d9\u05ea \u05d4\u05de\u05d3\u05d9\u05d4 \u05e9\u05dc\u05da", - "ButtonAddMediaFolder": "\u05d4\u05d5\u05e1\u05e3 \u05ea\u05d9\u05e7\u05d9\u05d9\u05ea \u05de\u05d3\u05d9\u05d4", - "LabelFolderType": "\u05e1\u05d5\u05d2 \u05d4\u05ea\u05d9\u05e7\u05d9\u05d9\u05d4:", - "ReferToMediaLibraryWiki": "\u05e4\u05e0\u05d4 \u05dc\u05de\u05d9\u05d3\u05e2 \u05d0\u05d5\u05d3\u05d5\u05ea \u05e1\u05e4\u05e8\u05d9\u05d9\u05ea \u05d4\u05de\u05d3\u05d9\u05d4.", - "LabelCountry": "\u05de\u05d3\u05d9\u05e0\u05d4:", - "LabelLanguage": "\u05e9\u05e4\u05d4:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "\u05e9\u05e4\u05ea \u05de\u05d9\u05d3\u05e2 \u05de\u05d5\u05e2\u05d3\u05e4\u05ea:", - "LabelSaveLocalMetadata": "\u05e9\u05de\u05d5\u05e8 \u05ea\u05de\u05d5\u05e0\u05d5\u05ea \u05e8\u05e7\u05e2 \u05d5\u05de\u05d9\u05d3\u05e2 \u05d1\u05ea\u05d5\u05da \u05e1\u05e4\u05e8\u05d9\u05d5\u05ea \u05d4\u05de\u05d3\u05d9\u05d4", - "LabelSaveLocalMetadataHelp": "\u05e9\u05de\u05d9\u05e8\u05ea \u05ea\u05de\u05d5\u05e0\u05d5\u05ea \u05e8\u05e7\u05e2 \u05d5\u05de\u05d9\u05d3\u05e2 \u05d9\u05e9\u05d9\u05e8\u05d5\u05ea \u05d1\u05e1\u05e4\u05e8\u05d9\u05d5\u05ea \u05d4\u05de\u05d3\u05d9\u05d4 \u05ea\u05d0\u05e4\u05e9\u05e8 \u05e2\u05e8\u05d9\u05db\u05d4 \u05e0\u05d5\u05d7\u05d4 \u05d5\u05e7\u05dc\u05d4 \u05e9\u05dc\u05d4\u05dd.", - "LabelDownloadInternetMetadata": "\u05d4\u05d5\u05e8\u05d3 \u05ea\u05de\u05d5\u05e0\u05d5\u05ea \u05e8\u05e7\u05e2 \u05d5\u05de\u05d9\u05d3\u05e2 \u05de\u05d4\u05d0\u05d9\u05e0\u05e8\u05e0\u05d8", - "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", - "TabPreferences": "\u05d4\u05e2\u05d3\u05e4\u05d5\u05ea", - "TabPassword": "\u05e1\u05d9\u05e1\u05de\u05d0", - "TabLibraryAccess": "\u05d2\u05d9\u05e9\u05d4 \u05dc\u05ea\u05d9\u05e7\u05d9\u05d5\u05ea", - "TabAccess": "Access", - "TabImage": "\u05ea\u05de\u05d5\u05e0\u05d4", - "TabProfile": "\u05e4\u05e8\u05d5\u05e4\u05d9\u05dc", - "TabMetadata": "Metadata", - "TabImages": "\u05ea\u05de\u05d5\u05e0\u05d5\u05ea", - "TabNotifications": "\u05d4\u05ea\u05e8\u05d0\u05d5\u05ea", - "TabCollectionTitles": "\u05db\u05d5\u05ea\u05e8\u05d9\u05dd", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "\u05d4\u05e6\u05d2 \u05e4\u05e8\u05e7\u05d9\u05dd \u05d7\u05e1\u05e8\u05d9\u05dd \u05d1\u05ea\u05d5\u05da \u05d4\u05e2\u05d5\u05e0\u05d5\u05ea", - "LabelUnairedMissingEpisodesWithinSeasons": "\u05d4\u05e6\u05d2 \u05e4\u05e8\u05e7\u05d9\u05dd \u05e9\u05e2\u05d3\u05d9\u05df \u05d0\u05dc \u05e9\u05d5\u05d3\u05e8\u05d5 \u05d1\u05ea\u05d5\u05da \u05d4\u05e2\u05d5\u05e0\u05d5\u05ea", - "HeaderVideoPlaybackSettings": "\u05d4\u05d2\u05d3\u05e8\u05d5\u05ea \u05e0\u05d9\u05d2\u05d5\u05df", - "HeaderPlaybackSettings": "\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05e0\u05d9\u05d2\u05d5\u05df", - "LabelAudioLanguagePreference": "\u05e9\u05e4\u05ea \u05e7\u05d5\u05dc \u05de\u05d5\u05e2\u05d3\u05e4\u05ea:", - "LabelSubtitleLanguagePreference": "\u05e9\u05e4\u05ea \u05db\u05ea\u05d5\u05d1\u05d9\u05d5\u05ea \u05de\u05d5\u05e2\u05d3\u05e4\u05ea:", - "OptionDefaultSubtitles": "Default", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "No Subtitles", - "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", - "TabProfiles": "\u05e4\u05e8\u05d5\u05e4\u05d9\u05dc\u05d9\u05dd", - "TabSecurity": "\u05d1\u05d8\u05d9\u05d7\u05d5\u05ea", - "ButtonAddUser": "\u05d4\u05d5\u05e1\u05e3 \u05de\u05e9\u05ea\u05de\u05e9", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "\u05e9\u05de\u05d5\u05e8", - "ButtonResetPassword": "\u05d0\u05d9\u05e4\u05d5\u05e1 \u05e1\u05d9\u05e1\u05de\u05d0", - "LabelNewPassword": "\u05e1\u05d9\u05e1\u05de\u05d0 \u05d7\u05d3\u05e9\u05d4:", - "LabelNewPasswordConfirm": "\u05d0\u05d9\u05de\u05d5\u05ea \u05e1\u05d9\u05e1\u05de\u05d0 \u05d7\u05d3\u05e9\u05d4:", - "HeaderCreatePassword": "\u05e6\u05d5\u05e8 \u05e1\u05d9\u05e1\u05de\u05d0", - "LabelCurrentPassword": "\u05e1\u05d9\u05e1\u05de\u05d0 \u05e0\u05d5\u05db\u05d7\u05d9\u05ea:", - "LabelMaxParentalRating": "\u05d3\u05d9\u05e8\u05d5\u05d2 \u05d4\u05d5\u05e8\u05d9\u05dd \u05de\u05e7\u05e1\u05d9\u05de\u05d0\u05dc\u05d9:", - "MaxParentalRatingHelp": "\u05ea\u05d5\u05db\u05df \u05e2\u05dd \u05d3\u05d9\u05e8\u05d5\u05d2 \u05d2\u05d5\u05d1\u05d4 \u05d9\u05d5\u05ea\u05e8 \u05d9\u05d5\u05e1\u05ea\u05e8 \u05de\u05d4\u05de\u05e9\u05ea\u05de\u05e9.", - "LibraryAccessHelp": "\u05d1\u05d7\u05e8 \u05d0\u05ea \u05e1\u05e4\u05e8\u05d9\u05d5\u05ea \u05d4\u05de\u05d3\u05d9\u05d4 \u05d0\u05e9\u05e8 \u05d9\u05e9\u05d5\u05ea\u05e4\u05d5 \u05e2\u05dd \u05d4\u05de\u05e9\u05ea\u05de\u05e9. \u05de\u05e0\u05d4\u05dc\u05d9\u05dd \u05d9\u05d5\u05db\u05dc\u05d5 \u05dc\u05e2\u05e8\u05d5\u05ea \u05d0\u05ea \u05db\u05dc \u05d4\u05ea\u05d9\u05e7\u05d9\u05d5\u05ea \u05d1\u05d0\u05de\u05e6\u05e2\u05d5\u05ea \u05e2\u05d5\u05e8\u05da \u05d4\u05de\u05d9\u05d3\u05e2.", - "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", - "ButtonDeleteImage": "\u05de\u05d7\u05e7 \u05ea\u05de\u05d5\u05e0\u05d4", - "LabelSelectUsers": "\u05d1\u05d7\u05e8 \u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd:", - "ButtonUpload": "\u05d4\u05e2\u05dc\u05d4", - "HeaderUploadNewImage": "\u05d4\u05e2\u05dc\u05d4 \u05ea\u05de\u05d5\u05e0\u05d4 \u05d7\u05d3\u05e9\u05d4", - "LabelDropImageHere": "Drop image here", - "ImageUploadAspectRatioHelp": "\u05de\u05d5\u05de\u05dc\u05e5 \u05d9\u05d7\u05e1 \u05d2\u05d5\u05d1\u05d4 \u05e9\u05dc 1:1. \u05e8\u05e7 JPG\/PNG.", - "MessageNothingHere": "\u05d0\u05d9\u05df \u05db\u05d0\u05df \u05db\u05dc\u05d5\u05dd.", - "MessagePleaseEnsureInternetMetadata": "\u05d1\u05d1\u05e7\u05e9\u05d4 \u05d5\u05d5\u05d3\u05d0 \u05db\u05d9 \u05d4\u05d5\u05e8\u05d3\u05ea \u05de\u05d9\u05d3\u05e2 \u05de\u05d4\u05d0\u05d9\u05e0\u05d8\u05e8\u05e0\u05d8 \u05de\u05d0\u05d5\u05e4\u05e9\u05e8\u05ea", - "TabSuggested": "\u05de\u05de\u05d5\u05dc\u05e5", - "TabSuggestions": "Suggestions", - "TabLatest": "\u05d0\u05d7\u05e8\u05d5\u05df", - "TabUpcoming": "\u05d1\u05e7\u05e8\u05d5\u05d1", - "TabShows": "\u05ea\u05d5\u05db\u05e0\u05d9\u05d5\u05ea", - "TabEpisodes": "\u05e4\u05e8\u05e7\u05d9\u05dd", - "TabGenres": "\u05d6\u05d0\u05e0\u05e8\u05d9\u05dd", - "TabPeople": "\u05d0\u05e0\u05e9\u05d9\u05dd", - "TabNetworks": "\u05e8\u05e9\u05ea\u05d5\u05ea", - "HeaderUsers": "\u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd", - "HeaderFilters": "\u05de\u05e1\u05e0\u05e0\u05d9\u05dd:", - "ButtonFilter": "\u05de\u05e1\u05e0\u05df", - "OptionFavorite": "\u05de\u05d5\u05e2\u05d3\u05e4\u05d9\u05dd", - "OptionLikes": "\u05e0\u05d1\u05d7\u05e8\u05d9\u05dd", - "OptionDislikes": "\u05dc\u05d0 \u05d0\u05d5\u05d4\u05d1", - "OptionActors": "\u05e9\u05d7\u05e7\u05e0\u05d9\u05dd", - "OptionGuestStars": "\u05e9\u05d7\u05e7\u05df \u05d0\u05d5\u05e8\u05d7", - "OptionDirectors": "\u05d1\u05de\u05d0\u05d9\u05dd", - "OptionWriters": "\u05db\u05d5\u05ea\u05d1\u05d9\u05dd", - "OptionProducers": "\u05de\u05e4\u05d9\u05e7\u05d9\u05dd", - "HeaderResume": "\u05d4\u05de\u05e9\u05da", - "HeaderNextUp": "\u05d4\u05d1\u05d0 \u05d1\u05ea\u05d5\u05e8", - "NoNextUpItemsMessage": "\u05dc\u05d0 \u05e0\u05de\u05e6\u05d0 \u05db\u05dc\u05d5\u05dd. \u05d4\u05ea\u05d7\u05dc\u05ea \u05dc\u05e6\u05e4\u05d5\u05ea \u05d1\u05e1\u05d3\u05e8\u05d5\u05ea \u05e9\u05dc\u05da!" + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "HeaderExport": "Export", + "HeaderColumns": "Columns", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/hr.json b/MediaBrowser.Server.Implementations/Localization/Server/hr.json index 2a74b65ec..3fb9d6977 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/hr.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/hr.json @@ -1,5 +1,127 @@ { - "TabWebClient": "Web Client", + "LabelExit": "Izlaz", + "LabelVisitCommunity": "Posjeti zajednicu", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standard", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Pregledaj biblioteku", + "LabelConfigureServer": "Configure Emby", + "LabelOpenLibraryViewer": "Otvori preglednik bibilioteke", + "LabelRestartServer": "Restartiraj Server", + "LabelShowLogWindow": "Prika\u017ei Log Zapis", + "LabelPrevious": "Prethodni", + "LabelFinish": "Kraj", + "FolderTypeMixed": "Mixed content", + "LabelNext": "Sljede\u0107i", + "LabelYoureDone": "Zavr\u0161eno!", + "WelcomeToProject": "Welcome to Emby!", + "ThisWizardWillGuideYou": "Ovaj pomo\u0107nik \u0107e Vas voditi kroz proces pode\u0161avanja. Za po\u010detak, odaberite \u017eeljeni jezik.", + "TellUsAboutYourself": "Recite nam ne\u0161to o sebi", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "Ime:", + "MoreUsersCanBeAddedLater": "Vi\u0161e korisnika mo\u017eete dodati naknadno preko nadzorne plo\u010de.", + "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", + "LabelWindowsService": "Windows servis", + "AWindowsServiceHasBeenInstalled": "Windows servis je instaliran.", + "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", + "WindowsServiceIntro2": "Ako koristite windows servis uslugu, imajte na umu da nemo\u017ee raditi u isto vrijeme kad i aplikacija na alatnoj traci. Stoga morate ugasiti aplikaciju na altanoj traci da bi mogli pokrenuti servis. Servis \u0107e te morati postaviti sa administrativnim dopu\u0161tenjima preko windows upravlja\u010dke plo\u010de. Tako\u0111er imajte na umu da se u ovom trenutku servis nemo\u017ee automatizirano nadograditi, ve\u0107 je za nove verzije potrebna interakcija korisnika.", + "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", + "LabelConfigureSettings": "Konfiguracija postavki", + "LabelEnableVideoImageExtraction": "Omogu\u0107i preuzimanje slika iz videa", + "VideoImageExtractionHelp": "Za videa koja jo\u0161 nemaju slike, i za koja nismo uspijeli na\u0107i slike na internetu ovo \u0107e dodati jo\u0161 malo vremena na po\u010detno skeniranje biblioteke ali \u0107e biti ugodnija prezentacija naslova.", + "LabelEnableChapterImageExtractionForMovies": "Izvuci slike poglavlja za Filmove", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Omogu\u0107i automatsko mapiranje porta", + "LabelEnableAutomaticPortMappingHelp": "UPnP omogu\u0107uje automatsku konfiguraciju usmjeriva\u010da (router \/ modem) za lak\u0161i pristup na daljinu. Ovo mo\u017eda ne\u0107e raditi sa nekim modelima usmjeriva\u010da.", + "HeaderTermsOfService": "Emby Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToEmbyConnect": "Linked to Emby Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", + "ButtonOk": "Ok", + "ButtonCancel": "Odustani", + "ButtonExit": "Exit", + "ButtonNew": "Novo", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "Username or email:", + "LabelEnterConnectUserNameHelp": "This is your Emby online account username or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "Postavi svoju medijsku biblioteku", + "ButtonAddMediaFolder": "Dodaj mapu sa medijem", + "LabelFolderType": "Tip mape:", + "ReferToMediaLibraryWiki": "Informirajte se o medijskoj bibilioteci wiki", + "LabelCountry": "Zemlja:", + "LabelLanguage": "Jezik:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "\u017deljeni metadata jezik:", + "LabelSaveLocalMetadata": "Snimi ilustracije i metadata u medijske mape", + "LabelSaveLocalMetadataHelp": "Snimljene ilustracije i metadata u medijskim mapama \u0107e biti postavljene na lokaciju gdje \u0107e se mo\u0107i jednostavno mjenjati.", + "LabelDownloadInternetMetadata": "Preuzmi ilustracije i metadata (opise) sa interneta", + "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", + "TabPreferences": "Postavke", + "TabPassword": "Lozinka", + "TabLibraryAccess": "Pristup biblioteci", + "TabAccess": "Access", + "TabImage": "Slika", + "TabProfile": "Profil", "TabMetadata": "Metadata", "TabImages": "Slike", "TabNotifications": "Obavijesti", @@ -165,7 +287,9 @@ "OptionFileMetadataYearMismatch": "Nepravilna godina, Datoteke\/Metadata", "TabGeneral": "Op\u0107e", "TitleSupport": "Podr\u0161ka", + "LabelSeasonNumber": "Season number", "TabLog": "Log", + "LabelEpisodeNumber": "Episode number", "TabAbout": "O ovome...", "TabSupporterKey": "Klju\u010d pobornika", "TabBecomeSupporter": "Postani pobornik", @@ -191,6 +315,9 @@ "OptionAllowRemoteControlOthers": "Allow remote control of other users", "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", "HeaderRemoteControl": "Remote Control", "OptionMissingTmdbId": "Nedostaje Tmdb Id", "OptionIsHD": "HD", @@ -459,8 +586,6 @@ "LabelSkipped": "Presko\u010deno", "HeaderEpisodeOrganization": "Organizacija epizoda", "LabelSeries": "Series:", - "LabelSeasonNumber": "Broj sezone:", - "LabelEpisodeNumber": "Broj epizode:", "LabelEndingEpisodeNumber": "Broj kraja epizode:", "LabelEndingEpisodeNumberHelp": "Potrebno samo za datoteke sa vi\u0161e epizoda", "HeaderSupportTheTeam": "Support the Emby Team", @@ -748,6 +873,7 @@ "HeaderTypeText": "Enter Text", "LabelTypeText": "Text", "HeaderSearchForSubtitles": "Search for Subtitles", + "ButtonMore": "More", "MessageNoSubtitleSearchResultsFound": "No search results founds.", "TabDisplay": "Display", "TabLanguages": "Languages", @@ -778,7 +904,7 @@ "HeaderLiveTv": "Live TV", "HeaderReports": "Reports", "HeaderMetadataManager": "Metadata Manager", - "HeaderPreferences": "Preferences", + "HeaderSettings": "Settings", "MessageLoadingChannels": "Loading channel content...", "MessageLoadingContent": "Loading content...", "ButtonMarkRead": "Mark Read", @@ -976,7 +1102,6 @@ "OptionReportArtists": "Artists", "OptionReportAlbums": "Albums", "OptionReportAdultVideos": "Adult videos", - "ButtonMore": "More", "HeaderActivity": "Activity", "ScheduledTaskStartedWithName": "{0} started", "ScheduledTaskCancelledWithName": "{0} was cancelled", @@ -1106,6 +1231,7 @@ "OptionNoThemeVideo": "No Theme Video", "LabelOneTimeDonationAmount": "Donation amount:", "ButtonDonate": "Donate", + "ButtonPurchase": "Purchase", "OptionActor": "Actor", "OptionComposer": "Composer", "OptionDirector": "Director", @@ -1125,7 +1251,6 @@ "HeaderDeveloperInfo": "Developer Info", "HeaderRevisionHistory": "Revision History", "ButtonViewWebsite": "View website", - "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderXmlSettings": "Xml Settings", "HeaderXmlDocumentAttributes": "Xml Document Attributes", "HeaderXmlDocumentAttribute": "Xml Document Attribute", @@ -1139,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", "LabelExternalPlayers": "External players:", "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", "HeaderSubtitleProfile": "Subtitle Profile", "HeaderSubtitleProfiles": "Subtitle Profiles", "HeaderSubtitleProfilesHelp": "Subtitle profiles describe the subtitle formats supported by the device.", @@ -1267,7 +1395,7 @@ "HeaderUpcomingMovies": "Upcoming Movies", "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", - "ButtonMoreItems": "More...", + "ButtonMoreItems": "More", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", @@ -1286,14 +1414,6 @@ "OptionEnableFullSpeedConversion": "Enable full speed conversion", "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", "HeaderViewStyles": "View Styles", "LabelSelectViewStyles": "Enable enhanced presentations for:", "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", @@ -1311,127 +1431,24 @@ "HeaderNewServer": "New Server", "ButtonChangeServer": "Change Server", "HeaderConnectToServer": "Connect to Server", - "LabelExit": "Izlaz", - "LabelVisitCommunity": "Posjeti zajednicu", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standard", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Pregledaj biblioteku", - "LabelConfigureServer": "Configure Emby", - "LabelOpenLibraryViewer": "Otvori preglednik bibilioteke", - "LabelRestartServer": "Restartiraj Server", - "LabelShowLogWindow": "Prika\u017ei Log Zapis", - "LabelPrevious": "Prethodni", - "LabelFinish": "Kraj", - "LabelNext": "Sljede\u0107i", - "LabelYoureDone": "Zavr\u0161eno!", - "WelcomeToProject": "Welcome to Emby!", - "ThisWizardWillGuideYou": "Ovaj pomo\u0107nik \u0107e Vas voditi kroz proces pode\u0161avanja. Za po\u010detak, odaberite \u017eeljeni jezik.", - "TellUsAboutYourself": "Recite nam ne\u0161to o sebi", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "Ime:", - "MoreUsersCanBeAddedLater": "Vi\u0161e korisnika mo\u017eete dodati naknadno preko nadzorne plo\u010de.", - "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "Windows servis", - "AWindowsServiceHasBeenInstalled": "Windows servis je instaliran.", - "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", - "WindowsServiceIntro2": "Ako koristite windows servis uslugu, imajte na umu da nemo\u017ee raditi u isto vrijeme kad i aplikacija na alatnoj traci. Stoga morate ugasiti aplikaciju na altanoj traci da bi mogli pokrenuti servis. Servis \u0107e te morati postaviti sa administrativnim dopu\u0161tenjima preko windows upravlja\u010dke plo\u010de. Tako\u0111er imajte na umu da se u ovom trenutku servis nemo\u017ee automatizirano nadograditi, ve\u0107 je za nove verzije potrebna interakcija korisnika.", - "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", - "LabelConfigureSettings": "Konfiguracija postavki", - "LabelEnableVideoImageExtraction": "Omogu\u0107i preuzimanje slika iz videa", - "VideoImageExtractionHelp": "Za videa koja jo\u0161 nemaju slike, i za koja nismo uspijeli na\u0107i slike na internetu ovo \u0107e dodati jo\u0161 malo vremena na po\u010detno skeniranje biblioteke ali \u0107e biti ugodnija prezentacija naslova.", - "LabelEnableChapterImageExtractionForMovies": "Izvuci slike poglavlja za Filmove", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Omogu\u0107i automatsko mapiranje porta", - "LabelEnableAutomaticPortMappingHelp": "UPnP omogu\u0107uje automatsku konfiguraciju usmjeriva\u010da (router \/ modem) za lak\u0161i pristup na daljinu. Ovo mo\u017eda ne\u0107e raditi sa nekim modelima usmjeriva\u010da.", - "HeaderTermsOfService": "Emby Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LinkedToEmbyConnect": "Linked to Emby Connect", - "HeaderSupporterBenefits": "Supporter Benefits", - "HeaderAddUser": "Add User", - "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", - "LabelPinCode": "Pin code:", - "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", - "HeaderSync": "Sync", - "ButtonOk": "Ok", - "ButtonCancel": "Odustani", - "ButtonExit": "Exit", - "ButtonNew": "Novo", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "TabPlaylist": "Playlist", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Emby online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "Postavi svoju medijsku biblioteku", - "ButtonAddMediaFolder": "Dodaj mapu sa medijem", - "LabelFolderType": "Tip mape:", - "ReferToMediaLibraryWiki": "Informirajte se o medijskoj bibilioteci wiki", - "LabelCountry": "Zemlja:", - "LabelLanguage": "Jezik:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "\u017deljeni metadata jezik:", - "LabelSaveLocalMetadata": "Snimi ilustracije i metadata u medijske mape", - "LabelSaveLocalMetadataHelp": "Snimljene ilustracije i metadata u medijskim mapama \u0107e biti postavljene na lokaciju gdje \u0107e se mo\u0107i jednostavno mjenjati.", - "LabelDownloadInternetMetadata": "Preuzmi ilustracije i metadata (opise) sa interneta", - "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", - "TabPreferences": "Postavke", - "TabPassword": "Lozinka", - "TabLibraryAccess": "Pristup biblioteci", - "TabAccess": "Access", - "TabImage": "Slika", - "TabProfile": "Profil" + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "HeaderExport": "Export", + "HeaderColumns": "Columns", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/it.json b/MediaBrowser.Server.Implementations/Localization/Server/it.json index 84f3b0c76..1396807c1 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/it.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/it.json @@ -1,5 +1,24 @@ { - "TabWebClient": "Dispositivi Web", + "LabelExit": "Esci", + "LabelVisitCommunity": "Visita la Community", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standard", + "LabelApiDocumentation": "Documentazione sulle Api", + "LabelDeveloperResources": "Risorse per i programmatori", + "LabelBrowseLibrary": "Esplora la libreria", + "LabelConfigureServer": "Configura Emby", + "LabelOpenLibraryViewer": "Apri visualizzatore libreria", + "LabelRestartServer": "Riavvia Server", + "LabelShowLogWindow": "Mostra finestra dei log", + "LabelPrevious": "Precedente", + "LabelFinish": "Finito", + "FolderTypeMixed": "Mixed content", + "LabelNext": "Prossimo", + "LabelYoureDone": "Hai Finito!", + "WelcomeToProject": "Benvenuto in Emby", + "ThisWizardWillGuideYou": "Questa procedura ti guider\u00e0 durante il processo di installazione. Per cominciare, per favore seleziona la tua lingua preferita", + "TellUsAboutYourself": "Parlaci di te", "ButtonQuickStartGuide": "Guida rapida", "LabelYourFirstName": "Nome", "MoreUsersCanBeAddedLater": "Puoi aggiungere altri utenti in un secondo momento all'interno del pannello di configurazione", @@ -67,12 +86,11 @@ "ButtonDonateWithPayPal": "Effettua una donazione con PayPal", "OptionDetectArchiveFilesAsMedia": "Considera gli archivi come file multimediali", "OptionDetectArchiveFilesAsMediaHelp": "se attivato, i file con estensione .rar e .zip saranno considerati come file multimediali.", - "LabelEnterConnectUserName": "Nome Utente o email:", - "LabelEnterConnectUserNameHelp": "Questa \u00e8 la username o la password del tuo account online Emby", + "LabelEnterConnectUserName": "Username or email:", + "LabelEnterConnectUserNameHelp": "This is your Emby online account username or password.", "LabelEnableEnhancedMovies": "Abilita le visuali film migliorate", "LabelEnableEnhancedMoviesHelp": "Quando abilitato, i film verranno mostrati come cartelle che includono i trailer, gli extra, il cast & crew, e altri contenuti correlati.", "HeaderSyncJobInfo": "Attiv. di Sinc.", - "FolderTypeMixed": "contenuto misto", "FolderTypeMovies": "Film", "FolderTypeMusic": "Musica", "FolderTypeAdultVideos": "Video per adulti", @@ -269,7 +287,9 @@ "OptionFileMetadataYearMismatch": "File\/Metadata anni errati", "TabGeneral": "Generale", "TitleSupport": "Supporto", + "LabelSeasonNumber": "Season number", "TabLog": "Eventi", + "LabelEpisodeNumber": "Episode number", "TabAbout": "Info", "TabSupporterKey": "Chiave del Supporter", "TabBecomeSupporter": "Diventa un Supporter", @@ -295,6 +315,9 @@ "OptionAllowRemoteControlOthers": "Consenti controllo remoto di altri utenti", "OptionAllowRemoteSharedDevices": "Consenti controllo remoto di dispositivi condivisi", "OptionAllowRemoteSharedDevicesHelp": "Dispositivi DLNA sono considerati condivisi fino a quando un utente non inizia a controllarli.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", "HeaderRemoteControl": "telecomando", "OptionMissingTmdbId": "Tmdb Id mancante", "OptionIsHD": "HD", @@ -563,8 +586,6 @@ "LabelSkipped": "Saltato", "HeaderEpisodeOrganization": "Organizzazione Episodi", "LabelSeries": "Serie:", - "LabelSeasonNumber": "Numero Stagione:", - "LabelEpisodeNumber": "Numero Episodio :", "LabelEndingEpisodeNumber": "Numero ultimo episodio:", "LabelEndingEpisodeNumberHelp": "Richiesto solo se ci sono pi\u00f9 file per espisodio", "HeaderSupportTheTeam": "Supporta il Team di Emby", @@ -852,6 +873,7 @@ "HeaderTypeText": "Inserisci il testo", "LabelTypeText": "Testo", "HeaderSearchForSubtitles": "Ricerca per sottotitoli", + "ButtonMore": "More", "MessageNoSubtitleSearchResultsFound": "Nessun elemento trovato", "TabDisplay": "Schermo", "TabLanguages": "Lingue", @@ -882,7 +904,7 @@ "HeaderLiveTv": "Diretta TV", "HeaderReports": "Rapporti", "HeaderMetadataManager": "Manager Metadati", - "HeaderPreferences": "Preferenze", + "HeaderSettings": "Configurazione", "MessageLoadingChannels": "Sto caricando il contenuto del canale", "MessageLoadingContent": "Caricamento contenuto....", "ButtonMarkRead": "Segna come letto", @@ -1080,7 +1102,6 @@ "OptionReportArtists": "Cantanti", "OptionReportAlbums": "Album", "OptionReportAdultVideos": "Video x adulti", - "ButtonMore": "Dettagli", "HeaderActivity": "Attivit\u00e0", "ScheduledTaskStartedWithName": "{0} Avviati", "ScheduledTaskCancelledWithName": "{0} cancellati", @@ -1210,6 +1231,7 @@ "OptionNoThemeVideo": "No tema video", "LabelOneTimeDonationAmount": "Importo della donazione:", "ButtonDonate": "Donazione", + "ButtonPurchase": "Purchase", "OptionActor": "Attore", "OptionComposer": "Compositore", "OptionDirector": "Regista", @@ -1229,7 +1251,6 @@ "HeaderDeveloperInfo": "Info sviluppatore", "HeaderRevisionHistory": "Cronologia delle revisioni", "ButtonViewWebsite": "Visualizza sito web", - "LabelRecurringDonationCanBeCancelledHelp": "Donazioni ricorrenti possono essere cancellati in qualsiasi momento dal tuo conto PayPal.", "HeaderXmlSettings": "Impostazioni Xml", "HeaderXmlDocumentAttributes": "Attributi Documento Xml", "HeaderXmlDocumentAttribute": "Attributo Documento Xml", @@ -1243,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Scopri di pi\u00f9 su Emby Connect", "LabelExternalPlayers": "Player esterni:", "LabelExternalPlayersHelp": "Pulsanti di visualizzazione di riprodurre contenuti in lettori esterni. Questo \u00e8 disponibile solo su dispositivi che supportano schemi URL, generalmente Android e iOS. Con i giocatori esterni vi \u00e8 generalmente alcun supporto per il controllo remoto o ripresa.", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", "HeaderSubtitleProfile": "Profilo sottotitolo", "HeaderSubtitleProfiles": "Profili sottotitoli", "HeaderSubtitleProfilesHelp": "Profili sottotitoli descrivono i formati di sottotitoli supportati dal dispositivo.", @@ -1371,7 +1395,7 @@ "HeaderUpcomingMovies": "Film in arrivo", "HeaderUpcomingSports": "Sport in arrivo", "HeaderUpcomingPrograms": "Programmi in arrivo", - "ButtonMoreItems": "Pi\u00f9...", + "ButtonMoreItems": "More", "LabelShowLibraryTileNames": "Mostra i nomi di file di libreria", "LabelShowLibraryTileNamesHelp": "Determina se le etichette vengono visualizzate sotto le locandine della libreria sulla home page", "OptionEnableTranscodingThrottle": "Abilita il throttling", @@ -1390,14 +1414,6 @@ "OptionEnableFullSpeedConversion": "Abilita conversione a velocit\u00e0 piena", "OptionEnableFullSpeedConversionHelp": "Per default, la sincronizzazione viene eseguita a bassa velocit\u00e0 per minimizzare il consumo di risorse", "HeaderPlaylists": "Playlist", - "HeaderSelectDate": "Seleziona la data", - "HeaderWelcomeExclamation": "Benvenuto!", - "HeaderMyPreferences": "Le miei preferenze", - "ButtonMyPreferencesWelcomeYes": "Grazie, preferisco impostare le mie preferenze adesso", - "ButtonMyPreferencesWelcomeNo": "No grazie, provveder\u00f2 in seguito.", - "MyPreferencesWelcomeMessage1": "Abbiamo presentato la tua libreria in un modo in cui pensiamo ti possa piacere. L'aspetto e il raggruppamento dei contenuti possono essere cambiati in qualsiasi momento modificando le preferenze. Le preferenze si applicano a tutte le app Emby.", - "MyPreferencesWelcomeMessage2": "Desideri impostare le tue preferenze ora?", - "ToAccessPreferencesHelp": "Per accedere alle preferenze in un secondo tempo, fare clic sull'icona utente presente in alto a destra e seleziona Le Mie Preferenze.", "HeaderViewStyles": "Stili Viste", "LabelSelectViewStyles": "Enable enhanced presentations for:", "LabelSelectViewStylesHelp": "Se abilitato, le viste verranno create con i metadati per offrire categorie come Suggeriti, Recenti, Generi e altro. Se disabilitato, verranno mostrate come semplici cartelle.", @@ -1415,23 +1431,24 @@ "HeaderNewServer": "New Server", "ButtonChangeServer": "Change Server", "HeaderConnectToServer": "Connect to Server", - "LabelExit": "Esci", - "LabelVisitCommunity": "Visita la Community", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standard", - "LabelApiDocumentation": "Documentazione sulle Api", - "LabelDeveloperResources": "Risorse per i programmatori", - "LabelBrowseLibrary": "Esplora la libreria", - "LabelConfigureServer": "Configura Emby", - "LabelOpenLibraryViewer": "Apri visualizzatore libreria", - "LabelRestartServer": "Riavvia Server", - "LabelShowLogWindow": "Mostra finestra dei log", - "LabelPrevious": "Precedente", - "LabelFinish": "Finito", - "LabelNext": "Prossimo", - "LabelYoureDone": "Hai Finito!", - "WelcomeToProject": "Benvenuto in Emby", - "ThisWizardWillGuideYou": "Questa procedura ti guider\u00e0 durante il processo di installazione. Per cominciare, per favore seleziona la tua lingua preferita", - "TellUsAboutYourself": "Parlaci di te" + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "HeaderExport": "Export", + "HeaderColumns": "Columns", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/kk.json b/MediaBrowser.Server.Implementations/Localization/Server/kk.json index a6ff519be..415c30704 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/kk.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/kk.json @@ -1,5 +1,416 @@ { - "TabWebClient": "\u0432\u0435\u0431 \u043a\u043b\u0438\u0435\u043d\u0442", + "LabelExit": "\u0428\u044b\u0493\u0443", + "LabelVisitCommunity": "\u049a\u0430\u0443\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u049b\u049b\u0430 \u0431\u0430\u0440\u0443", + "LabelGithub": "GitHub \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439\u0456", + "LabelSwagger": "Swagger \u0442\u0456\u043b\u0434\u0435\u0441\u0443\u0456", + "LabelStandard": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0442\u044b", + "LabelApiDocumentation": "API \u049b\u04b1\u0436\u0430\u0442\u0442\u0430\u043c\u0430\u0441\u044b", + "LabelDeveloperResources": "\u0416\u0430\u0441\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u043a\u04e9\u0437\u0434\u0435\u0440\u0456", + "LabelBrowseLibrary": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043d\u044b \u0448\u043e\u043b\u0443", + "LabelConfigureServer": "Emby \u0442\u0435\u04a3\u0448\u0435\u0443", + "LabelOpenLibraryViewer": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043d\u044b \u049b\u0430\u0440\u0430\u0443 \u049b\u04b1\u0440\u0430\u043b\u044b", + "LabelRestartServer": "\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u049b\u0430\u0439\u0442\u0430 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u0443", + "LabelShowLogWindow": "\u0416\u04b1\u0440\u043d\u0430\u043b \u0442\u0435\u0440\u0435\u0437\u0435\u0441\u0456\u043d \u043a\u04e9\u0440\u0441\u0435\u0442\u0443", + "LabelPrevious": "\u0410\u043b\u0434\u044b\u04a3\u0493\u044b", + "LabelFinish": "\u0410\u044f\u049b\u0442\u0430\u0443", + "FolderTypeMixed": "\u0410\u0440\u0430\u043b\u0430\u0441 \u043c\u0430\u0437\u043c\u04b1\u043d", + "LabelNext": "\u041a\u0435\u043b\u0435\u0441\u0456", + "LabelYoureDone": "\u0411\u04d9\u0440\u0456 \u0434\u0430\u0439\u044b\u043d!", + "WelcomeToProject": "Emby \u04af\u0448\u0456\u043d \u049b\u043e\u0448 \u043a\u0435\u043b\u0434\u0456\u04a3\u0456\u0437!", + "ThisWizardWillGuideYou": "\u0411\u04b1\u043b \u043a\u043e\u043c\u0435\u043a\u0448\u0456 \u043e\u0440\u043d\u0430\u0442\u0443 \u0436\u04d9\u043d\u0435 \u0442\u0435\u04a3\u0448\u0435\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0456 \u0441\u0430\u0442\u044b\u043b\u0430\u0440\u044b\u043c\u0435\u043d \u04e9\u0442\u043a\u0456\u0437\u0435\u0434\u0456. \u0411\u0430\u0441\u0442\u0430\u0443 \u04af\u0448\u0456\u043d \u04e9\u0437\u0456\u04a3\u0456\u0437\u0433\u0435 \u0442\u0456\u043b \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456\u043d \u0442\u0430\u04a3\u0434\u0430\u04a3\u044b\u0437.", + "TellUsAboutYourself": "\u04e8\u0437\u0456\u04a3\u0456\u0437 \u0442\u0443\u0440\u0430\u043b\u044b \u0430\u0439\u0442\u044b\u04a3\u044b\u0437", + "ButtonQuickStartGuide": "\u0422\u0435\u0437 \u0431\u0430\u0441\u0442\u0430\u0443 \u043d\u04b1\u0441\u049b\u0430\u0443\u043b\u044b\u0493\u044b\u043d\u0430", + "LabelYourFirstName": "\u0410\u0442\u044b\u04a3\u044b\u0437:", + "MoreUsersCanBeAddedLater": "\u041a\u04e9\u0431\u0456\u0440\u0435\u043a \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440\u0434\u044b \u043a\u0435\u0439\u0456\u043d \u0411\u0430\u049b\u044b\u043b\u0430\u0443 \u0442\u0430\u049b\u0442\u0430\u0441\u044b \u0430\u0440\u049b\u044b\u043b\u044b \u04af\u0441\u0442\u0435\u0443\u0456\u04a3\u0456\u0437 \u043c\u04af\u043c\u043a\u0456\u043d.", + "UserProfilesIntro": "Emby \u0456\u0448\u0456\u043d\u0434\u0435 \u04d9\u0440\u049b\u0430\u0439\u0441\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0493\u0430 \u04e9\u0437\u0456\u043d\u0456\u04a3 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456 \u043e\u0439\u043d\u0430\u0442\u0443 \u043a\u04af\u0439\u0456 \u0436\u04d9\u043d\u0435 \u043c\u0430\u0437\u043c\u04b1\u043d \u0431\u0430\u0441\u049b\u0430\u0440\u0443\u044b \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u044b\u049b \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b\u043d\u044b\u04a3 \u043a\u0456\u0440\u0456\u043a\u0442\u0456\u0440\u0456\u043b\u0433\u0435\u043d \u049b\u043e\u043b\u0434\u0430\u0443\u044b \u0431\u0430\u0440.", + "LabelWindowsService": "Windows \u049b\u044b\u0437\u043c\u0435\u0442\u0456", + "AWindowsServiceHasBeenInstalled": "Windows \u049b\u044b\u0437\u043c\u0435\u0442\u0456 \u043e\u0440\u043d\u0430\u0442\u044b\u043b\u0434\u044b.", + "WindowsServiceIntro1": "Emby Server \u04d9\u0434\u0435\u0442\u0442\u0435 \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u0442\u0430\u049b\u0442\u0430\u0434\u0430\u0493\u044b \u0431\u0435\u043b\u0433\u0456\u0448\u0435\u0441\u0456\u043c\u0435\u043d \u0436\u04b1\u043c\u044b\u0441 \u04af\u0441\u0442\u0435\u043b\u0456\u043d\u0456\u04a3 \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u0441\u044b \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u0439\u0434\u0456, \u0431\u0456\u0440\u0430\u049b \u0435\u0433\u0435\u0440 \u043e\u043d\u044b\u04a3 \u0436\u04b1\u043c\u044b\u0441\u044b\u043d \u04e9\u04a3\u0434\u0456\u043a \u049b\u044b\u0437\u043c\u0435\u0442\u0456 \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u04b1\u043d\u0430\u0442\u0441\u0430\u04a3\u044b\u0437, \u043e\u0441\u044b\u043d\u044b\u04a3 \u043e\u0440\u043d\u044b\u043d\u0430 \u0431\u04b1\u043b Windows \u049a\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440 \u0440\u0435\u0442\u0442\u0435\u0443\u0456\u0448\u0456 \u0430\u0440\u049b\u044b\u043b\u044b \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d.", + "WindowsServiceIntro2": "\u0415\u0433\u0435\u0440 Windows \u049b\u044b\u0437\u043c\u0435\u0442\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0434\u0430 \u0431\u043e\u043b\u0441\u0430, \u0435\u0441\u043a\u0435\u0440\u0456\u04a3\u0456\u0437, \u0431\u04b1\u043b \u0441\u043e\u043b \u043c\u0435\u0437\u0433\u0456\u043b\u0434\u0435 \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u0442\u0430\u049b\u0442\u0430\u0434\u0430\u0493\u044b \u0431\u0435\u043b\u0433\u0456\u0448\u0435\u0434\u0435\u0439 \u0436\u04af\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d \u0435\u043c\u0435\u0441, \u0441\u043e\u043d\u044b\u043c\u0435\u043d \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0456 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u0443 \u04af\u0448\u0456\u043d \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u0442\u0430\u049b\u0442\u0430\u0434\u0430\u043d \u0448\u044b\u0493\u0443\u044b\u04a3\u044b\u0437 \u049b\u0430\u0436\u0435\u0442. \u0421\u043e\u0493\u0430\u043d \u049b\u0430\u0442\u0430\u0440, \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0456 \u04d9\u043a\u0456\u043c\u0448\u0456 \u049b\u04b1\u049b\u044b\u049b\u0442\u0430\u0440\u044b\u043d\u0430 \u0438\u0435 \u0431\u043e\u043b\u044b\u043f \u049a\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440 \u0440\u0435\u0442\u0442\u0435\u0443\u0456\u0448\u0456 \u0430\u0440\u049b\u044b\u043b\u044b \u0442\u0435\u04a3\u0448\u0435\u0443 \u049b\u0430\u0436\u0435\u0442. \u041d\u0430\u0437\u0430\u0440 \u0430\u0443\u0434\u0430\u0440\u044b\u04a3\u044b\u0437! \u049a\u0430\u0437\u0456\u0440\u0433\u0456 \u0443\u0430\u049b\u044b\u0442\u0442\u0430 \u0431\u04b1\u043b \u049b\u044b\u0437\u043c\u0435\u0442 \u04e9\u0437\u0456\u043d\u0435\u043d-\u04e9\u0437\u0456 \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u043c\u0430\u0439\u0434\u044b, \u0441\u043e\u043d\u0434\u044b\u049b\u0442\u0430\u043d \u0436\u0430\u04a3\u0430 \u043d\u04b1\u0441\u049b\u0430\u043b\u0430\u0440 \u049b\u043e\u043b\u043c\u0435\u043d \u04e9\u0437\u0430\u0440\u0430 \u04d9\u0440\u0435\u043a\u0435\u0442\u0442\u0435\u0441\u0443\u0434\u0456 \u049b\u0430\u0436\u0435\u0442 \u0435\u0442\u0435\u0434\u0456.", + "WizardCompleted": "\u04d8\u0437\u0456\u0440\u0448\u0435 \u0431\u04b1\u043b \u0431\u0456\u0437\u0433\u0435 \u043a\u0435\u0440\u0435\u0433\u0456\u043d\u0456\u04a3 \u0431\u04d9\u0440\u0456 \u0431\u043e\u043b\u044b\u043f \u0442\u0430\u0431\u044b\u043b\u0430\u0434\u044b. Emby \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u04a3\u044b\u0437 \u0442\u0443\u0440\u0430\u043b\u044b \u043c\u04d9\u043b\u0456\u043c\u0435\u0442\u0442\u0435\u0440\u0434\u0456 \u0436\u0438\u043d\u0430\u0439 \u0431\u0430\u0441\u0442\u0430\u0434\u044b. \u0415\u043d\u0434\u0456 \u043a\u0435\u0439\u0431\u0456\u0440 \u0431\u0456\u0437\u0434\u0456\u04a3 \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u043b\u0430\u0440\u044b\u043c\u044b\u0437\u0431\u0435\u043d \u0442\u0430\u043d\u044b\u0441\u044b\u04a3\u044b\u0437, \u0436\u04d9\u043d\u0435 \u043a\u0435\u0439\u0456\u043d <b>\u0414\u0430\u0439\u044b\u043d<\/b> \u0442\u04af\u0439\u043c\u0435\u0448\u0456\u0433\u0456\u043d \u0431\u0430\u0441\u044b\u04a3\u044b\u0437, \u0441\u043e\u043d\u0434\u0430 <b>\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456\u04a3 \u0411\u0430\u049b\u044b\u043b\u0430\u0443 \u0442\u0430\u049b\u0442\u0430\u0441\u044b<\/b> \u049b\u0430\u0440\u0430\u0443\u0493\u0430 \u0448\u044b\u0493\u044b \u043a\u0435\u043b\u0435\u0434\u0456.", + "LabelConfigureSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0434\u0456 \u0442\u0435\u04a3\u0448\u0435\u0443", + "LabelEnableVideoImageExtraction": "\u0411\u0435\u0439\u043d\u0435 \u0441\u0443\u0440\u0435\u0442\u0456\u043d \u0448\u044b\u0493\u0430\u0440\u044b\u043f \u0430\u043b\u0443\u0434\u044b \u049b\u043e\u0441\u0443", + "VideoImageExtractionHelp": "\u04d8\u043b\u0456 \u0434\u0435 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456 \u0436\u043e\u049b, \u0436\u04d9\u043d\u0435 \u043e\u043b\u0430\u0440 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0442\u0435 \u0442\u0430\u0431\u044b\u043b\u043c\u0430\u0493\u0430\u043d \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440 \u04af\u0448\u0456\u043d. \u0411\u04b1\u043b \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043d\u044b\u04a3 \u0431\u0430\u0441\u0442\u0430\u043f\u049b\u044b \u0441\u043a\u0430\u043d\u0435\u0440\u043b\u0435\u0443\u0456 \u04af\u0448\u0456\u043d \u049b\u043e\u0441\u044b\u043c\u0448\u0430 \u0443\u0430\u049b\u044b\u0442 \u04af\u0441\u0442\u0435\u0439\u0434\u0456, \u0431\u0456\u0440\u0430\u049b \u043d\u04d9\u0442\u0438\u0436\u0435\u0441\u0456\u043d\u0434\u0435 \u04b1\u043d\u0430\u043c\u0434\u044b\u043b\u0430\u0443 \u043a\u04e9\u0440\u0441\u0435\u0442\u0456\u043c \u0431\u043e\u043b\u0430\u0434\u044b.", + "LabelEnableChapterImageExtractionForMovies": "\u0424\u0438\u043b\u044c\u043c\u0434\u0435\u0440 \u04af\u0448\u0456\u043d \u0441\u0430\u0445\u043d\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456\u043d \u0448\u044b\u0493\u0430\u0440\u044b\u043f \u0430\u043b\u0443\u0434\u044b \u049b\u043e\u0441\u0443", + "LabelChapterImageExtractionForMoviesHelp": "\u0421\u0430\u0445\u043d\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456\u043d \u0448\u044b\u0493\u0430\u0440\u044b\u043f \u0430\u043b\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0442\u0435\u0440\u0433\u0435 \u0441\u0430\u0445\u043d\u0430 \u0431\u04e9\u043b\u0435\u043a\u0442\u0435\u0443\u0433\u0435 \u0430\u0440\u043d\u0430\u043b\u0493\u0430\u043d \u0441\u044b\u0437\u0431\u0430\u043b\u044b\u049b \u043c\u04d9\u0437\u0456\u0440\u043b\u0435\u0440\u0434\u0456 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0435\u0434\u0456. \u0411\u04b1\u043b \u043f\u0440\u043e\u0446\u0435\u0441 \u0431\u0430\u044f\u0443, \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0434\u044b \u0442\u043e\u0437\u0434\u044b\u0440\u0430\u0442\u044b\u043d \u0436\u04d9\u043d\u0435 \u0431\u0456\u0440\u0430\u0437 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442 \u043a\u0435\u04a3\u0456\u0441\u0442\u0456\u043a\u0442\u0456 \u049b\u0430\u0436\u0435\u0442 \u0435\u0442\u0435\u0442\u0456\u043d \u0431\u043e\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d. \u0411\u04b1\u043b \u0442\u04af\u043d\u0433\u0456 \u0443\u0430\u049b\u044b\u0442\u044b\u043d\u0430 \u0436\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u0430\u043d \u0442\u0430\u043f\u0441\u044b\u0440\u043c\u0430 \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u0439\u0434\u0456, \u0434\u0435\u0433\u0435\u043d\u043c\u0435\u043d \u0431\u04b1\u043b \u0416\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0443\u0448\u044b \u0430\u0439\u043c\u0430\u0493\u044b\u043d\u0434\u0430 \u0442\u0435\u04a3\u0448\u0435\u043b\u0435\u0434\u0456. \u0411\u04b1\u043b \u0442\u0430\u043f\u0441\u044b\u0440\u043c\u0430\u043d\u044b \u049b\u0430\u0440\u0431\u0430\u043b\u0430\u0441 \u0441\u0430\u0493\u0430\u0442\u0442\u0430\u0440\u044b\u043d\u0434\u0430 \u043e\u0440\u044b\u043d\u0434\u0430\u0443 \u04b1\u0441\u044b\u043d\u044b\u043b\u043c\u0430\u0439\u0434\u044b.", + "LabelEnableAutomaticPortMapping": "\u041f\u043e\u0440\u0442 \u0430\u0432\u0442\u043e\u0441\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u0443\u044b\u043d \u049b\u043e\u0441\u0443", + "LabelEnableAutomaticPortMappingHelp": "\u049a\u0430\u0448\u044b\u049b\u0442\u0430\u043d \u043e\u04a3\u0430\u0439\u0442\u044b\u043b\u044b\u043f \u049b\u0430\u0442\u044b\u043d\u0430\u0443 \u04af\u0448\u0456\u043d UPnP \u0436\u043e\u043b \u0436\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u044b\u0448\u0442\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0442\u0435\u04a3\u0448\u0435\u0443\u0433\u0435 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0435\u0434\u0456. \u0411\u04b1\u043b \u043a\u0435\u0439\u0431\u0456\u0440 \u0436\u043e\u043b \u0436\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u044b\u0448 \u04af\u043b\u0433\u0456\u043b\u0435\u0440\u0456\u043c\u0435\u043d \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u043c\u0435\u0439\u0442\u0456\u043d\u0456 \u043c\u04af\u043c\u043a\u0456\u043d.", + "HeaderTermsOfService": "Emby \u049b\u044b\u0437\u043c\u0435\u0442 \u0448\u0430\u0440\u0442\u0442\u0430\u0440\u044b", + "MessagePleaseAcceptTermsOfService": "\u0416\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u043c\u0430\u0441 \u0431\u04b1\u0440\u044b\u043d \u049a\u044b\u0437\u043c\u0435\u0442 \u0448\u0430\u0440\u0442\u0442\u0430\u0440\u044b\u043d \u0436\u04d9\u043d\u0435 \u049a\u04b1\u043f\u0438\u044f\u043b\u044b\u043b\u044b\u049b \u0441\u0430\u044f\u0441\u0430\u0442\u044b\u043d \u049b\u0430\u0431\u044b\u043b\u0434\u0430\u04a3\u044b\u0437.", + "OptionIAcceptTermsOfService": "\u049a\u044b\u0437\u043c\u0435\u0442 \u0448\u0430\u0440\u0442\u0442\u0430\u0440\u044b\u043d \u049b\u0430\u0431\u044b\u043b\u0434\u0430\u0439\u043c\u044b\u043d", + "ButtonPrivacyPolicy": "\u049a\u04b1\u043f\u0438\u044f\u043b\u044b\u043b\u044b\u049b \u0441\u0430\u044f\u0441\u0430\u0442\u044b\u043d\u0430", + "ButtonTermsOfService": "\u049a\u044b\u0437\u043c\u0435\u0442 \u0448\u0430\u0440\u0442\u0442\u0430\u0440\u044b\u043d\u0430", + "HeaderDeveloperOptions": "\u0416\u0430\u0441\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456", + "OptionEnableWebClientResponseCache": "\u0412\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442 \u04af\u043d \u049b\u0430\u0442\u0443 \u043a\u044d\u0448\u0442\u0435\u0443\u0456\u043d \u049b\u043e\u0441\u0443", + "OptionDisableForDevelopmentHelp": "\u0412\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442 \u0436\u0430\u0441\u0430\u049b\u0442\u0430\u0443 \u04af\u0448\u0456\u043d \u049b\u0430\u0436\u0435\u0442 \u0431\u043e\u043b\u0493\u0430\u043d\u0434\u0430 \u043c\u044b\u043d\u0430\u043b\u0430\u0440\u0434\u044b \u0442\u0435\u04a3\u0448\u0435\u04a3\u0456\u0437.", + "OptionEnableWebClientResourceMinification": "\u0412\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442 \u049b\u043e\u0440\u044b\u043d \u0430\u0437\u0430\u0439\u0442\u0443\u0434\u044b \u049b\u043e\u0441\u0443", + "LabelDashboardSourcePath": "\u0412\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442 \u043a\u04e9\u0437\u0456\u043d\u0456\u04a3 \u0436\u043e\u043b\u044b:", + "LabelDashboardSourcePathHelp": "\u0415\u0433\u0435\u0440 \u0441\u0435\u0440\u0432\u0435\u0440 \u049b\u0430\u0439\u043d\u0430\u0440 \u043a\u043e\u0434\u044b\u043d\u0430\u043d \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u0441\u0435, dashboard-ui \u049b\u0430\u043b\u0442\u0430\u0441\u044b\u043d\u0430 \u0436\u043e\u043b\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437. \u0412\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442\u0442\u0456\u04a3 \u0431\u0430\u0440\u043b\u044b\u049b \u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b \u043e\u0441\u044b \u0436\u0430\u0439\u0493\u0430\u0441\u044b\u043c\u0434\u0430\u043d \u0448\u044b\u0493\u0430\u0440\u044b\u043b\u0430\u0434\u044b.", + "ButtonConvertMedia": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0443", + "ButtonOrganize": "\u04b0\u0439\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u0440\u0443", + "LinkedToEmbyConnect": "Emby Connect \u04af\u0448\u0456\u043d \u0431\u0430\u0439\u043b\u0430\u043d\u044b\u0441\u0442\u044b\u0440\u044b\u043b\u0493\u0430\u043d", + "HeaderSupporterBenefits": "\u0416\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u0430\u0440\u0442\u044b\u049b\u0448\u044b\u043b\u044b\u049b\u0442\u0430\u0440\u044b", + "HeaderAddUser": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u04af\u0441\u0442\u0435\u0443", + "LabelAddConnectSupporterHelp": "\u0422\u0456\u0437\u0456\u043c\u0434\u0435 \u0436\u043e\u049b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u04af\u0441\u0442\u0435\u0443 \u04af\u0448\u0456\u043d, \u0430\u043b\u0434\u044b\u043c\u0435\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u044b\u049b \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u044b \u0431\u0435\u0442\u0456\u043d\u0435\u043d Emby Connect \u0430\u0440\u0430\u0441\u044b\u043d\u0434\u0430 \u043e\u043d\u044b\u04a3 \u0442\u0456\u0440\u043a\u0435\u043b\u0433\u0456\u0441\u0456\u043d \u0431\u0430\u0439\u043b\u0430\u043d\u044b\u0441\u0442\u0440\u0443\u044b\u04a3\u044b\u0437 \u049b\u0430\u0436\u0435\u0442.", + "LabelPinCode": "PIN-\u043a\u043e\u0434:", + "OptionHideWatchedContentFromLatestMedia": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0435\u043d \u049b\u0430\u0440\u0430\u043b\u0493\u0430\u043d \u043c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b \u0436\u0430\u0441\u044b\u0440\u0443", + "HeaderSync": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443", + "ButtonOk": "\u0416\u0430\u0440\u0430\u0439\u0434\u044b", + "ButtonCancel": "\u0411\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443", + "ButtonExit": "\u0428\u044b\u0493\u0443", + "ButtonNew": "\u0416\u0430\u0441\u0430\u0443", + "HeaderTV": "\u0422\u0414", + "HeaderAudio": "\u0414\u044b\u0431\u044b\u0441", + "HeaderVideo": "\u0411\u0435\u0439\u043d\u0435", + "HeaderPaths": "\u0416\u043e\u043b\u0434\u0430\u0440", + "CategorySync": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443", + "TabPlaylist": "\u041e\u0439\u043d\u0430\u0442\u0443 \u0442\u0456\u0437\u0456\u043c\u0456", + "HeaderEasyPinCode": "\u041e\u04a3\u0430\u0439\u0442\u044b\u043b\u0493\u0430\u043d PIN-\u043a\u043e\u0434", + "HeaderGrownupsOnly": "\u0422\u0435\u043a \u0435\u0440\u0435\u0441\u0435\u043a\u0442\u0435\u0440!", + "DividerOr": "-- \u043d\u0435\u043c\u0435\u0441\u0435 --", + "HeaderInstalledServices": "\u041e\u0440\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440", + "HeaderAvailableServices": "\u049a\u0430\u0442\u044b\u043d\u0430\u0443\u043b\u044b \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440", + "MessageNoServicesInstalled": "\u049a\u0430\u0437\u0456\u0440\u0433\u0456 \u0443\u0430\u049b\u044b\u0442\u0442\u0430 \u0435\u0448\u049b\u0430\u043d\u0434\u0430\u0439 \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440 \u043e\u0440\u043d\u0430\u0442\u044b\u043b\u043c\u0430\u0493\u0430\u043d", + "HeaderToAccessPleaseEnterEasyPinCode": "\u049a\u0430\u0442\u044b\u043d\u0430\u0443 \u04af\u0448\u0456\u043d \u043e\u04a3\u0430\u0439\u0442\u044b\u043b\u0493\u0430\u043d PIN-\u043a\u043e\u0434\u0442\u044b \u0435\u043d\u0433\u0456\u0437\u0456\u04a3\u0456\u0437", + "KidsModeAdultInstruction": "\u0422\u0435\u04a3\u0448\u0435\u0443 \u04af\u0448\u0456\u043d \u0442\u04e9\u043c\u0435\u0434\u0435\u0433\u0456 \u043e\u04a3 \u0436\u0430\u049b\u0442\u0430\u0493\u044b \u049b\u04b1\u043b\u044b\u043f \u0431\u0435\u043b\u0433\u0456\u0448\u0435\u0441\u0456\u043d \u043d\u04b1\u049b\u044b\u04a3\u044b\u0437 \u043d\u0435\u043c\u0435\u0441\u0435 \u0431\u0430\u043b\u0430\u043b\u044b\u049b \u0440\u0435\u0436\u0456\u043c\u0456\u043d \u049b\u0430\u043b\u0434\u044b\u0440\u044b\u04a3\u044b\u0437. PIN-\u043a\u043e\u0434\u044b\u04a3\u044b\u0437 \u049b\u0430\u0436\u0435\u0442 \u0431\u043e\u043b\u0430\u0434\u044b.", + "ButtonConfigurePinCode": "PIN-\u043a\u043e\u0434\u0442\u044b \u0442\u0435\u04a3\u0448\u0435\u0443", + "HeaderAdultsReadHere": "\u0415\u0440\u0435\u0441\u0435\u043a\u0442\u0435\u0440, \u043c\u044b\u043d\u0430\u043d\u044b \u043e\u049b\u044b\u04a3\u044b\u0437!", + "RegisterWithPayPal": "PayPal \u0430\u0440\u049b\u044b\u043b\u044b \u0442\u0456\u0440\u043a\u0435\u043b\u0443", + "HeaderSyncRequiresSupporterMembership": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u04af\u0448\u0456\u043d \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u043b\u044b\u049b \u043c\u04af\u0448\u0435\u043b\u0456\u043a \u049b\u0430\u0436\u0435\u0442", + "HeaderEnjoyDayTrial": "\u0422\u0435\u0433\u0456\u043d \u0441\u044b\u043d\u0430\u0443\u0434\u044b 14 \u043a\u04af\u043d \u0442\u0430\u043c\u0430\u0448\u0430\u043b\u0430\u04a3\u044b\u0456\u0437", + "LabelSyncTempPath": "\u0423\u0430\u049b\u044b\u0442\u0448\u0430 \u0444\u0430\u0439\u043b \u0436\u043e\u043b\u044b:", + "LabelSyncTempPathHelp": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u04af\u0448\u0456\u043d \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u0436\u04b1\u043c\u044b\u0441 \u049b\u0430\u043b\u0442\u0430\u043d\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437. \u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0456 \u043a\u0435\u0437\u0456\u043d\u0434\u0435 \u0436\u0430\u0441\u0430\u043b\u0493\u0430\u043d \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0456\u043b\u0433\u0435\u043d \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u043e\u0441\u044b \u043e\u0440\u044b\u043d\u0434\u0430 \u0441\u0430\u049b\u0442\u0430\u043b\u0430\u0434\u044b.", + "LabelCustomCertificatePath": "\u041a\u0443\u04d9\u043b\u0456\u043a \u0436\u043e\u043b\u044b:", + "LabelCustomCertificatePathHelp": "\u04e8\u0437 SSL-\u043a\u0443\u04d9\u043b\u0456\u0433\u0456\u04a3\u0456\u0437\u0434\u0456\u04a3 .pfx \u0444\u0430\u0439\u043b\u044b\u043d \u0436\u0435\u0442\u043a\u0456\u0437\u0456\u04a3\u0456\u0437. \u0415\u0433\u0435\u0440 \u0442\u04af\u0441\u0456\u0440\u0456\u043b\u0441\u0435, \u0441\u0435\u0440\u0432\u0435\u0440 \u043c\u0435\u043d\u0448\u0456\u043a \u049b\u043e\u043b\u0442\u0430\u04a3\u0431\u0430\u0441\u044b \u0431\u0430\u0440 \u043a\u0443\u04d9\u043b\u0456\u043a\u0442\u0456 \u0436\u0430\u0441\u0430\u0439\u0434\u044b.", + "TitleNotifications": "\u0425\u0430\u0431\u0430\u0440\u043b\u0430\u043d\u0434\u044b\u0440\u0443\u043b\u0430\u0440", + "ButtonDonateWithPayPal": "PayPal \u0430\u0440\u049b\u044b\u043b\u044b \u049b\u0430\u0439\u044b\u0440\u043c\u0430\u043b\u0430\u0443", + "OptionDetectArchiveFilesAsMedia": "\u041c\u04b1\u0440\u0430\u0493\u0430\u0442\u0442\u0430\u043b\u0493\u0430\u043d \u0444\u0430\u0439\u043b\u0434\u0430\u0440\u0434\u044b \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0442\u0430\u0431\u0443", + "OptionDetectArchiveFilesAsMediaHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, .rar \u0436\u04d9\u043d\u0435 .zip \u043a\u0435\u04a3\u0435\u0439\u0442\u0456\u043c\u0434\u0435\u0440\u0456 \u0431\u0430\u0440 \u0444\u0430\u0439\u043b\u0434\u0430\u0440 \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0442\u0430\u0431\u044b\u043b\u0430\u0434\u044b.", + "LabelEnterConnectUserName": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0430\u0442\u044b \u043d\u0435\u043c\u0435\u0441\u0435 \u042d-\u043f\u043e\u0448\u0442\u0430:", + "LabelEnterConnectUserNameHelp": "\u0411\u04b1\u043b \u0441\u0456\u0437\u0434\u0456\u04a3 Emby \u0436\u0435\u043b\u0456\u043b\u0456\u043a \u0442\u0456\u0440\u043a\u0435\u043b\u0433\u0456\u04a3\u0456\u0437\u0434\u0456\u04a3 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0430\u0442\u044b \u043d\u0435 \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437 \u0431\u043e\u043b\u044b\u043f \u0442\u0430\u0431\u044b\u043b\u0430\u0434\u044b.", + "LabelEnableEnhancedMovies": "\u0424\u0438\u043b\u044c\u043c\u0434\u0435\u0440\u0434\u0456\u04a3 \u0436\u0430\u049b\u0441\u0430\u0440\u0442\u044b\u043b\u0493\u0430\u043d \u0431\u0435\u0439\u043d\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u043d \u049b\u043e\u0441\u0443", + "LabelEnableEnhancedMoviesHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u043b\u0435\u0440\u0434\u0456, \u049b\u043e\u0441\u044b\u043c\u0448\u0430\u043b\u0430\u0440\u0434\u044b, \u0442\u04af\u0441\u0456\u0440\u0443\u0433\u0435 \u049b\u0430\u0442\u044b\u0441\u049b\u0430\u043d\u0434\u0430\u0440\u0434\u044b \u0436\u04d9\u043d\u0435 \u0431\u0430\u0441\u049b\u0430 \u049b\u0430\u0442\u044b\u0441\u0442\u044b \u043c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b \u049b\u0430\u043c\u0442\u0443 \u04af\u0448\u0456\u043d, \u0444\u0438\u043b\u044c\u043c\u0434\u0435\u0440 \u049b\u0430\u043b\u0442\u0430 \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u043d\u0435\u0434\u0456", + "HeaderSyncJobInfo": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u0436\u04b1\u043c\u044b\u0441\u044b", + "FolderTypeMovies": "\u041a\u0438\u043d\u043e", + "FolderTypeMusic": "\u041c\u0443\u0437\u044b\u043a\u0430", + "FolderTypeAdultVideos": "\u0415\u0440\u0435\u0441\u0435\u043a\u0442\u0456\u043a \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440", + "FolderTypePhotos": "\u0424\u043e\u0442\u043e\u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440", + "FolderTypeMusicVideos": "\u041c\u0443\u0437\u044b\u043a\u0430\u043b\u044b\u049b \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440", + "FolderTypeHomeVideos": "\u04ae\u0439 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440\u0456", + "FolderTypeGames": "\u041e\u0439\u044b\u043d\u0434\u0430\u0440", + "FolderTypeBooks": "\u041a\u0456\u0442\u0430\u043f\u0442\u0430\u0440", + "FolderTypeTvShows": "\u0422\u0414", + "FolderTypeInherit": "\u041c\u04b1\u0440\u0430\u0493\u0430 \u0438\u0435\u043b\u0435\u043d\u0443", + "LabelContentType": "\u041c\u0430\u0437\u043c\u04b1\u043d \u0442\u04af\u0440\u0456:", + "TitleScheduledTasks": "\u0416\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u0430\u043d \u0442\u0430\u043f\u0441\u044b\u0440\u043c\u0430\u043b\u0430\u0440", + "HeaderSetupLibrary": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043d\u044b \u043e\u0440\u043d\u0430\u0442\u0443 \u0436\u04d9\u043d\u0435 \u0442\u0435\u04a3\u0448\u0435\u0443", + "ButtonAddMediaFolder": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448 \u049b\u0430\u043b\u0442\u0430\u0441\u044b\u043d \u04af\u0441\u0442\u0435\u0443", + "LabelFolderType": "\u049a\u0430\u043b\u0442\u0430 \u0442\u04af\u0440\u0456:", + "ReferToMediaLibraryWiki": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430 \u0442\u0443\u0440\u0430\u043b\u044b \u0443\u0438\u043a\u0438 \u0456\u0448\u0456\u043d\u0435\u043d \u049b\u0430\u0440\u0430\u04a3\u044b\u0437.", + "LabelCountry": "\u0415\u043b:", + "LabelLanguage": "\u0422\u0456\u043b:", + "LabelTimeLimitHours": "\u0423\u0430\u049b\u044b\u0442 \u0448\u0435\u0433\u0456 (\u0441\u0430\u0493\u0430\u0442):", + "ButtonJoinTheDevelopmentTeam": "\u0416\u0430\u0441\u0430\u049b\u0442\u0430\u0443\u0448\u044b\u043b\u0430\u0440 \u0442\u043e\u0431\u044b\u043d\u0430 \u043a\u0456\u0440\u0443", + "HeaderPreferredMetadataLanguage": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u0442\u0456\u043b\u0456\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456:", + "LabelSaveLocalMetadata": "\u0421\u0443\u0440\u0435\u0442\u0442\u0435\u043c\u0435\u043b\u0435\u0440 \u0431\u0435\u043d \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u044b \u0456\u0448\u0456\u043d\u0434\u0435 \u0441\u0430\u049b\u0442\u0430\u0443", + "LabelSaveLocalMetadataHelp": "\u0421\u0443\u0440\u0435\u0442\u0442\u0435\u043c\u0435\u043b\u0435\u0440 \u0431\u0435\u043d \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0442\u0456\u043a\u0435\u043b\u0435\u0439 \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u044b \u0456\u0448\u0456\u043d\u0434\u0435 \u0441\u0430\u049b\u0442\u0430\u043b\u0443\u044b \u043e\u043b\u0430\u0440\u0434\u044b \u0436\u0435\u04a3\u0456\u043b \u04e9\u04a3\u0434\u0435\u0439 \u0430\u043b\u0430\u0442\u044b\u043d \u043e\u0440\u044b\u043d\u0493\u0430 \u049b\u043e\u044f\u0434\u044b.", + "LabelDownloadInternetMetadata": "\u0421\u0443\u0440\u0435\u0442\u0442\u0435\u043c\u0435\u043b\u0435\u0440 \u0431\u0435\u043d \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0442\u0435\u043d \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443", + "LabelDownloadInternetMetadataHelp": "\u041c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b \u043a\u04e9\u0440\u043c\u0435\u043b\u0435\u0440\u0434\u0456 \u049b\u043e\u0441\u0443 \u04af\u0448\u0456\u043d Emby Server \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u0442\u0443\u0440\u0430\u043b\u044b \u043c\u04d9\u043b\u0456\u043c\u0435\u0442\u0442\u0435\u0440\u0434\u0456 \u0436\u04af\u043a\u0442\u0435\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d.", + "TabPreferences": "\u0422\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440", + "TabPassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437", + "TabLibraryAccess": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u0493\u0430 \u049b\u0430\u0442\u044b\u043d\u0430\u0443", + "TabAccess": "\u049a\u0430\u0442\u044b\u043d\u0430\u0443", + "TabImage": "\u0421\u0443\u0440\u0435\u0442", + "TabProfile": "\u041f\u0440\u043e\u0444\u0430\u0439\u043b", + "TabMetadata": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440", + "TabImages": "\u0421\u0443\u0440\u0435\u0442\u0442\u0435\u0440", + "TabNotifications": "\u0425\u0430\u0431\u0430\u0440\u043b\u0430\u043d\u0434\u044b\u0440\u0443\u043b\u0430\u0440", + "TabCollectionTitles": "\u0422\u0443\u044b\u043d\u0434\u044b\u043b\u0430\u0440", + "HeaderDeviceAccess": "\u049a\u04b1\u0440\u044b\u043b\u0493\u044b\u0493\u0430 \u049b\u0430\u0442\u044b\u043d\u0430\u0443", + "OptionEnableAccessFromAllDevices": "\u0411\u0430\u0440\u043b\u044b\u049b \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440\u0434\u0430\u043d \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u0434\u044b \u049b\u043e\u0441\u0443", + "OptionEnableAccessToAllChannels": "\u0411\u0430\u0440\u043b\u044b\u049b \u0430\u0440\u043d\u0430\u043b\u0430\u0440\u0493\u0430 \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u0434\u044b \u049b\u043e\u0441\u0443", + "OptionEnableAccessToAllLibraries": "\u0411\u0430\u0440\u043b\u044b\u049b \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043b\u0430\u0440\u0493\u0430 \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u0434\u044b \u049b\u043e\u0441\u0443", + "DeviceAccessHelp": "\u0411\u04b1\u043b \u0442\u0435\u043a \u049b\u0430\u043d\u0430 \u0431\u0456\u0440\u0435\u0433\u0435\u0439 \u0430\u043d\u044b\u049b\u0442\u0430\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440 \u04af\u0448\u0456\u043d \u049b\u043e\u043b\u0434\u0430\u043d\u044b\u043b\u0430\u0434\u044b \u0436\u04d9\u043d\u0435 \u0448\u043e\u043b\u0493\u044b\u0448\u043f\u0435\u043d \u049b\u0430\u043d\u0442\u044b\u043d\u0430\u0443\u0493\u0430 \u0442\u044b\u0439\u044b\u043c \u0441\u0430\u043b\u043c\u0430\u0439\u0434\u044b. \u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u0441\u044b\u043d\u0430\u043d \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u0434\u044b \u0441\u04af\u0437\u0433\u0456\u043b\u0435\u0443\u0456 \u0436\u0430\u04a3\u0430 \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440\u0434\u044b \u043c\u04b1\u043d\u0434\u0430 \u0431\u0435\u043a\u0456\u0442\u0456\u043b\u0433\u0435\u043d\u0448\u0435 \u0434\u0435\u0439\u0456\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0493\u0430 \u0442\u044b\u0439\u044b\u043c \u0441\u0430\u043b\u0430\u0434\u044b.", + "LabelDisplayMissingEpisodesWithinSeasons": "\u0416\u043e\u049b \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u043c\u0430\u0443\u0441\u044b\u043c \u0456\u0448\u0456\u043d\u0434\u0435 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443", + "LabelUnairedMissingEpisodesWithinSeasons": "\u041a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u043c\u0435\u0433\u0435\u043d \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u043c\u0430\u0443\u0441\u044b\u043c \u0456\u0448\u0456\u043d\u0434\u0435 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443", + "HeaderVideoPlaybackSettings": "\u0411\u0435\u0439\u043d\u0435 \u043e\u0439\u043d\u0430\u0442\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456", + "HeaderPlaybackSettings": "\u041e\u0439\u043d\u0430\u0442\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456", + "LabelAudioLanguagePreference": "\u0414\u044b\u0431\u044b\u0441 \u0442\u0456\u043b\u0456\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456:", + "LabelSubtitleLanguagePreference": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440 \u0442\u0456\u043b\u0456\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456:", + "OptionDefaultSubtitles": "\u04d8\u0434\u0435\u043f\u043a\u0456", + "OptionOnlyForcedSubtitles": "\u0422\u0435\u043a \u049b\u0430\u043d\u0430 \u043c\u04d9\u0436\u0431\u04af\u0440\u043b\u0456 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440", + "OptionAlwaysPlaySubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440\u0434\u0456 \u04d9\u0440\u049b\u0430\u0448\u0430\u043d \u043e\u0439\u043d\u0430\u0442\u0443", + "OptionNoSubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u0436\u043e\u049b", + "OptionDefaultSubtitlesHelp": "\u0422\u0456\u043b \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456\u043d\u0435 \u0441\u04d9\u0439\u043a\u0435\u0441 \u043a\u0435\u043b\u0433\u0435\u043d \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u0434\u044b\u0431\u044b\u0441 \u0448\u0435\u0442\u0435\u043b \u0442\u0456\u043b\u0456\u043d\u0434\u0435 \u0431\u043e\u043b\u0493\u0430\u043d\u0434\u0430 \u0436\u04af\u043a\u0442\u0435\u043b\u0435\u0434\u0456.", + "OptionOnlyForcedSubtitlesHelp": "\u0422\u0435\u043a \u049b\u0430\u043d\u0430 \u043c\u04d9\u0436\u0431\u04af\u0440\u043b\u0456 \u0434\u0435\u043f \u0431\u0435\u043b\u0433\u0456\u043b\u0435\u043d\u0433\u0435\u043d \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u0436\u04af\u043a\u0442\u0435\u043b\u0435\u0434\u0456.", + "OptionAlwaysPlaySubtitlesHelp": "\u0422\u0456\u043b \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456\u043d\u0435 \u0441\u04d9\u0439\u043a\u0435\u0441 \u043a\u0435\u043b\u0433\u0435\u043d \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u0434\u044b\u0431\u044b\u0441 \u0442\u0456\u043b\u0456\u043d\u0435 \u049b\u0430\u0442\u044b\u0441\u0441\u044b\u0437 \u0436\u04af\u043a\u0442\u0435\u043b\u0435\u0434\u0456.", + "OptionNoSubtitlesHelp": "\u04d8\u0434\u0435\u043f\u043a\u0456\u0434\u0435 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u0436\u04af\u043a\u0442\u0435\u043b\u043c\u0435\u0439\u0434\u0456.", + "TabProfiles": "\u041f\u0440\u043e\u0444\u0430\u0439\u043b\u0434\u0430\u0440", + "TabSecurity": "\u049a\u0430\u0443\u0456\u043f\u0441\u0456\u0437\u0434\u0456\u043a", + "ButtonAddUser": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u04af\u0441\u0442\u0435\u0443", + "ButtonAddLocalUser": "\u0416\u0435\u0440\u0433\u0456\u043b\u0456\u043a\u0442\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u04af\u0441\u0442\u0435\u0443", + "ButtonInviteUser": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u0448\u0430\u049b\u044b\u0440\u0443", + "ButtonSave": "\u0421\u0430\u049b\u0442\u0430\u0443", + "ButtonResetPassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0456 \u044b\u0441\u044b\u0440\u0443", + "LabelNewPassword": "\u0416\u0430\u04a3\u0430 \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437", + "LabelNewPasswordConfirm": "\u0416\u0430\u04a3\u0430 \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0456 \u0440\u0430\u0441\u0442\u0430\u0443:", + "HeaderCreatePassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0456 \u0436\u0430\u0441\u0430\u0443", + "LabelCurrentPassword": "\u0410\u0493\u044b\u043c\u0434\u0430\u0493\u044b \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437:", + "LabelMaxParentalRating": "\u0415\u04a3 \u0436\u043e\u0493\u0430\u0440\u044b \u04b1\u0439\u0493\u0430\u0440\u044b\u043d\u0434\u044b \u0436\u0430\u0441\u0442\u0430\u0441 \u0441\u0430\u043d\u0430\u0442\u044b:", + "MaxParentalRatingHelp": "\u0411\u04b1\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0434\u0430\u043d \u0436\u043e\u0493\u0430\u0440\u044b\u043b\u0430\u0443 \u0436\u0430\u0441\u0442\u0430\u0441 \u0441\u0430\u043d\u0430\u0442\u044b \u0431\u0430\u0440 \u043c\u0430\u0437\u043c\u04b1\u043d \u0436\u0430\u0441\u044b\u0440\u044b\u043b\u0430\u0434\u044b", + "LibraryAccessHelp": "\u0411\u04b1\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043c\u0435\u043d \u043e\u0440\u0442\u0430\u049b\u0442\u0430\u0441\u0443 \u04af\u0448\u0456\u043d \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u0434\u044b \u0431\u04e9\u043b\u0435\u043a\u0442\u0435\u04a3\u0456\u0437. \u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a \u0440\u0435\u0442\u0442\u0435\u0443\u0448\u0456\u043d\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043f \u04d9\u043a\u0456\u043c\u0448\u0456\u043b\u0435\u0440 \u0431\u0430\u0440\u043b\u044b\u049b \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u0434\u044b \u04e9\u04a3\u0434\u0435\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d.", + "ChannelAccessHelp": "\u0411\u04b1\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043c\u0435\u043d \u043e\u0440\u0442\u0430\u049b\u0442\u0430\u0441\u0443 \u04af\u0448\u0456\u043d \u0430\u0440\u043d\u0430\u043b\u0430\u0440\u0434\u044b \u0431\u04e9\u043b\u0435\u043a\u0442\u0435\u04a3\u0456\u0437. \u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a \u0440\u0435\u0442\u0442\u0435\u0443\u0448\u0456\u043d\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043f \u04d9\u043a\u0456\u043c\u0448\u0456\u043b\u0435\u0440 \u0431\u0430\u0440\u043b\u044b\u049b \u0430\u0440\u043d\u0430\u043b\u0430\u0440\u0434\u044b \u04e9\u04a3\u0434\u0435\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d.", + "ButtonDeleteImage": "\u0421\u0443\u0440\u0435\u0442\u0442\u0456 \u0436\u043e\u044e", + "LabelSelectUsers": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440\u0434\u044b \u0442\u0430\u04a3\u0434\u0430\u0443:", + "ButtonUpload": "\u041a\u0435\u0440\u0456 \u049b\u043e\u0442\u0430\u0440\u0443", + "HeaderUploadNewImage": "\u0416\u0430\u04a3\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0456 \u043a\u0435\u0440\u0456 \u049b\u043e\u0442\u0430\u0440\u0443", + "LabelDropImageHere": "\u0421\u0443\u0440\u0435\u0442\u0442\u0456 \u043c\u04b1\u043d\u0434\u0430 \u0441\u04af\u0439\u0440\u0435\u0442\u0456\u04a3\u0456\u0437", + "ImageUploadAspectRatioHelp": "1:1 \u043f\u0456\u0448\u0456\u043c\u0434\u0456\u043a \u0430\u0440\u0430\u049b\u0430\u0442\u044b\u043d\u0430\u0441\u044b \u04b1\u0441\u044b\u043d\u044b\u043b\u0430\u0434\u044b. \u0422\u0435\u043a \u049b\u0430\u043d\u0430 JPG\/PNG.", + "MessageNothingHere": "\u041e\u0441\u044b\u043d\u0434\u0430 \u0435\u0448\u0442\u0435\u043c\u0435 \u0436\u043e\u049b.", + "MessagePleaseEnsureInternetMetadata": "\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0442\u0435\u043d \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0456 \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443\u044b \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u044b\u043d\u0430 \u043a\u04e9\u0437 \u0436\u0435\u0442\u043a\u0456\u0437\u0456\u04a3\u0456\u0437.", + "TabSuggested": "\u04b0\u0441\u044b\u043d\u044b\u043b\u0493\u0430\u043d", + "TabSuggestions": "\u04b0\u0441\u044b\u043d\u044b\u0441\u0442\u0430\u0440", + "TabLatest": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456", + "TabUpcoming": "\u041a\u04af\u0442\u0456\u043b\u0433\u0435\u043d", + "TabShows": "\u041a\u04e9\u0440\u0441\u0435\u0442\u0456\u043c\u0434\u0435\u0440", + "TabEpisodes": "\u0422\u0414-\u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440", + "TabGenres": "\u0416\u0430\u043d\u0440\u043b\u0430\u0440", + "TabPeople": "\u0410\u0434\u0430\u043c\u0434\u0430\u0440", + "TabNetworks": "\u0416\u0435\u043b\u0456\u043b\u0435\u0440", + "HeaderUsers": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440", + "HeaderFilters": "\u0421\u04af\u0437\u0433\u0456\u043b\u0435\u0440:", + "ButtonFilter": "\u0421\u04af\u0437\u0443", + "OptionFavorite": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b\u043b\u0430\u0440", + "OptionLikes": "\u04b0\u043d\u0430\u0442\u0443\u043b\u0430\u0440", + "OptionDislikes": "\u04b0\u043d\u0430\u0442\u043f\u0430\u0443\u043b\u0430\u0440", + "OptionActors": "\u0410\u043a\u0442\u0435\u0440\u043b\u0435\u0440", + "OptionGuestStars": "\u0428\u0430\u049b\u044b\u0440\u044b\u043b\u0493\u0430\u043d \u0430\u043a\u0442\u0435\u0440\u043b\u0435\u0440", + "OptionDirectors": "\u0420\u0435\u0436\u0438\u0441\u0441\u0435\u0440\u043b\u0435\u0440", + "OptionWriters": "\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439\u0448\u0456\u043b\u0435\u0440", + "OptionProducers": "\u041f\u0440\u043e\u0434\u044e\u0441\u0435\u0440\u043b\u0435\u0440", + "HeaderResume": "\u0416\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u0443", + "HeaderNextUp": "\u041a\u0435\u0437\u0435\u043a\u0442\u0456", + "NoNextUpItemsMessage": "\u0415\u0448\u0442\u0435\u04a3\u0435 \u0442\u0430\u0431\u044b\u043b\u043c\u0430\u0434\u044b. \u041a\u04e9\u0440\u0441\u0435\u0442\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u049b\u0430\u0440\u0430\u0439 \u0431\u0430\u0441\u0442\u0430\u04a3\u044b\u0437!", + "HeaderLatestEpisodes": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456 \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440", + "HeaderPersonTypes": "\u0422\u04b1\u043b\u0493\u0430 \u0442\u04af\u0440\u043b\u0435\u0440\u0456:", + "TabSongs": "\u04d8\u0443\u0435\u043d\u0434\u0435\u0440", + "TabAlbums": "\u0410\u043b\u044c\u0431\u043e\u043c\u0434\u0435\u0440", + "TabArtists": "\u041e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440", + "TabAlbumArtists": "\u0410\u043b\u044c\u0431\u043e\u043c \u043e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440\u044b", + "TabMusicVideos": "\u041c\u0443\u0437\u044b\u043a\u0430\u043b\u044b\u049b \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440", + "ButtonSort": "\u0421\u04b1\u0440\u044b\u043f\u0442\u0430\u0443", + "HeaderSortBy": "\u0421\u04b1\u0440\u044b\u043f\u0442\u0430\u0443 \u0442\u04d9\u0441\u0456\u043b\u0456:", + "HeaderSortOrder": "\u0421\u04b1\u0440\u044b\u043f\u0442\u0430\u0443 \u0440\u0435\u0442\u0456:", + "OptionPlayed": "\u041e\u0439\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d", + "OptionUnplayed": "\u041e\u0439\u043d\u0430\u0442\u044b\u043b\u043c\u0430\u0493\u0430\u043d", + "OptionAscending": "\u0410\u0440\u0442\u0443\u044b \u0431\u043e\u0439\u044b\u043d\u0448\u0430", + "OptionDescending": "\u041a\u0435\u043c\u0443\u0456 \u0431\u043e\u0439\u044b\u043d\u0448\u0430", + "OptionRuntime": "\u04b0\u0437\u0430\u049b\u0442\u044b\u0493\u044b", + "OptionReleaseDate": "\u0428\u044b\u0493\u0430\u0440\u0443 \u043a\u04af\u043d\u0456", + "OptionPlayCount": "\u041e\u0439\u043d\u0430\u0442\u0443 \u0435\u0441\u0435\u0431\u0456", + "OptionDatePlayed": "\u041e\u0439\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d \u043a\u04af\u043d\u0456", + "OptionDateAdded": "\u04ae\u0441\u0442\u0435\u043b\u0433\u0435\u043d \u043a\u04af\u043d\u0456", + "OptionAlbumArtist": "\u0410\u043b\u044c\u0431\u043e\u043c \u043e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u0441\u044b", + "OptionArtist": "\u041e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b", + "OptionAlbum": "\u0410\u043b\u044c\u0431\u043e\u043c", + "OptionTrackName": "\u0416\u043e\u043b\u0448\u044b\u049b \u0430\u0442\u044b", + "OptionCommunityRating": "\u049a\u0430\u0443\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u049b \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u044b", + "OptionNameSort": "\u0410\u0442\u044b", + "OptionFolderSort": "\u049a\u0430\u043b\u0442\u0430\u043b\u0430\u0440", + "OptionBudget": "\u0411\u044e\u0434\u0436\u0435\u0442", + "OptionRevenue": "\u0422\u0430\u0431\u044b\u0441", + "OptionPoster": "\u0416\u0430\u0440\u049b\u0430\u0493\u0430\u0437", + "OptionPosterCard": "\u0416\u0430\u0440\u049b\u0430\u0493\u0430\u0437-\u043a\u0430\u0440\u0442\u0430", + "OptionBackdrop": "\u0410\u0440\u0442\u049b\u044b \u0441\u0443\u0440\u0435\u0442", + "OptionTimeline": "\u0423\u0430\u049b\u044b\u0442 \u0448\u043a\u0430\u043b\u0430\u0441\u044b", + "OptionThumb": "\u041d\u043e\u0431\u0430\u0439", + "OptionThumbCard": "\u041d\u043e\u0431\u0430\u0439-\u043a\u0430\u0440\u0442\u0430", + "OptionBanner": "\u0411\u0430\u043d\u043d\u0435\u0440", + "OptionCriticRating": "\u0421\u044b\u043d\u0448\u044b\u043b\u0430\u0440 \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u044b", + "OptionVideoBitrate": "\u0411\u0435\u0439\u043d\u0435 \u049b\u0430\u0440\u049b\u044b\u043d\u044b", + "OptionResumable": "\u0416\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u0430\u043b\u0430\u0442\u044b\u043d", + "ScheduledTasksHelp": "\u0416\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0443\u044b\u043d \u043b\u0430\u0439\u044b\u049b\u0442\u0430\u0443 \u04af\u0448\u0456\u043d \u0442\u0430\u043f\u0441\u044b\u0440\u043c\u0430\u043d\u044b \u043d\u04b1\u049b\u044b\u04a3\u044b\u0437.", + "ScheduledTasksTitle": "\u0416\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0443\u0448\u044b", + "TabMyPlugins": "\u041c\u0435\u043d\u0456\u04a3 \u043f\u043b\u0430\u0433\u0438\u043d\u0434\u0435\u0440\u0456\u043c", + "TabCatalog": "\u0422\u0456\u0437\u0456\u043c\u0434\u0435\u043c\u0435", + "TitlePlugins": "\u041f\u043b\u0430\u0433\u0438\u043d\u0434\u0435\u0440", + "HeaderAutomaticUpdates": "\u0410\u0432\u0442\u043e\u0436\u0430\u04a3\u0430\u0440\u0442\u0443\u043b\u0430\u0440", + "HeaderNowPlaying": "\u049a\u0430\u0437\u0456\u0440 \u043e\u0439\u043d\u0430\u0442\u044b\u043b\u0443\u0434\u0430", + "HeaderLatestAlbums": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u04a3\u0433\u0456 \u0430\u043b\u044c\u0431\u043e\u043c\u0434\u0430\u0440", + "HeaderLatestSongs": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u04a3\u0433\u0456 \u04d9\u0443\u0435\u043d\u0434\u0435\u0440", + "HeaderRecentlyPlayed": "\u0416\u0430\u049b\u044b\u043d\u0434\u0430 \u043e\u0439\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d\u0434\u0430\u0440", + "HeaderFrequentlyPlayed": "\u0416\u0438\u0456 \u043e\u0439\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d\u0434\u0430\u0440", + "DevBuildWarning": "\u0416\u0430\u0441\u0430\u049b\u0442\u0430\u0443 \u049b\u04b1\u0440\u0430\u0441\u0442\u044b\u0440\u043c\u0430\u043b\u0430\u0440 \u0435\u04a3 \u0430\u043b\u0434\u044b\u04a3\u0493\u044b \u049b\u0430\u0442\u0430\u0440\u043b\u044b \u0431\u043e\u043b\u044b\u043f \u0442\u0430\u0431\u044b\u043b\u0430\u0434\u044b. \u0416\u0438\u0456 \u0448\u044b\u0493\u0430\u0440\u043b\u044b\u043f \u043c\u044b\u043d\u0430 \u049b\u04b1\u0440\u0430\u0441\u0442\u044b\u0440\u043c\u0430\u043b\u0430\u0440 \u0442\u043e\u043b\u044b\u049b \u0441\u044b\u043d\u0430\u049b\u0442\u0430\u043c\u0430\u043b\u0430\u0443\u0434\u0430\u043d \u04e9\u0442\u043f\u0435\u0433\u0435\u043d. \u049a\u043e\u043b\u0434\u0430\u043d\u0431\u0430 \u0431\u04b1\u0437\u044b\u043b\u0443 \u043c\u04af\u043c\u043a\u0456\u043d \u0436\u04d9\u043d\u0435 \u0430\u049b\u044b\u0440 \u0430\u044f\u0493\u044b\u043d\u0434\u0430 \u0435\u0440\u0435\u043a\u0448\u0435\u043b\u0456\u043a\u0442\u0435\u0440 \u0431\u04af\u0442\u0456\u043d\u0434\u0435\u0439 \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u043c\u0435\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d.", + "LabelVideoType": "\u0411\u0435\u0439\u043d\u0435 \u0442\u04af\u0440\u0456:", + "OptionBluray": "BluRay", + "OptionDvd": "DVD", + "OptionIso": "ISO", + "Option3D": "3D", + "LabelFeatures": "\u0415\u0440\u0435\u043a\u0448\u0435\u043b\u0456\u043a\u0442\u0435\u0440:", + "LabelService": "\u049a\u044b\u0437\u043c\u0435\u0442:", + "LabelStatus": "\u041a\u04af\u0439:", + "LabelVersion": "\u041d\u04b1\u0441\u049b\u0430:", + "LabelLastResult": "\u0421\u043e\u04a3\u0493\u044b \u043d\u04d9\u0442\u0438\u0436\u0435:", + "OptionHasSubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440", + "OptionHasTrailer": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440", + "OptionHasThemeSong": "\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0442\u044b\u049b \u04d9\u0443\u0435\u043d", + "OptionHasThemeVideo": "\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0442\u044b\u049b \u0431\u0435\u0439\u043d\u0435", + "TabMovies": "\u0424\u0438\u043b\u044c\u043c\u0434\u0435\u0440", + "TabStudios": "\u0421\u0442\u0443\u0434\u0438\u044f\u043b\u0430\u0440", + "TabTrailers": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440\u043b\u0435\u0440", + "LabelArtists": "\u041e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440:", + "LabelArtistsHelp": "\u0411\u0456\u0440\u043d\u0435\u0448\u0443\u0456\u043d (;) \u0430\u0440\u049b\u044b\u043b\u044b \u0431\u04e9\u043b\u0456\u04a3\u0456\u0437", + "HeaderLatestMovies": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456 \u0444\u0438\u043b\u044c\u043c\u0434\u0435\u0440", + "HeaderLatestTrailers": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456 \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u043b\u0435\u0440", + "OptionHasSpecialFeatures": "\u0410\u0440\u043d\u0430\u0439\u044b \u0435\u0440\u0435\u043a\u0448\u0435\u043b\u0456\u043a\u0442\u0435\u0440", + "OptionImdbRating": "IMDb \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u044b", + "OptionParentalRating": "\u0416\u0430\u0441\u0442\u0430\u0441 \u0441\u0430\u043d\u0430\u0442", + "OptionPremiereDate": "\u0422\u04b1\u0441\u0430\u0443\u043a\u0435\u0441\u0435\u0440 \u043a\u04af\u043d-\u0430\u0439\u044b", + "TabBasic": "\u041d\u0435\u0433\u0456\u0437\u0433\u0456\u043b\u0435\u0440", + "TabAdvanced": "\u041a\u0435\u04a3\u0435\u0439\u0442\u0456\u043b\u0433\u0435\u043d", + "HeaderStatus": "\u041a\u04af\u0439", + "OptionContinuing": "\u0416\u0430\u043b\u0493\u0430\u0441\u0443\u0434\u0430", + "OptionEnded": "\u0410\u044f\u049b\u0442\u0430\u043b\u0434\u044b", + "HeaderAirDays": "\u042d\u0444\u0438\u0440 \u043a\u04af\u043d\u0434\u0435\u0440\u0456", + "OptionSunday": "\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456", + "OptionMonday": "\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456", + "OptionTuesday": "\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456", + "OptionWednesday": "\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456", + "OptionThursday": "\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456", + "OptionFriday": "\u0436\u04b1\u043c\u0430", + "OptionSaturday": "\u0441\u0435\u043d\u0431\u0456", + "HeaderManagement": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440", + "LabelManagement": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440", + "OptionMissingImdbId": "IMDb Id \u0436\u043e\u049b", + "OptionMissingTvdbId": "TheTVDB Id \u0436\u043e\u049b", + "OptionMissingOverview": "\u0416\u0430\u043b\u043f\u044b \u0448\u043e\u043b\u0443 \u0436\u043e\u049b", + "OptionFileMetadataYearMismatch": "\u0424\u0430\u0439\u043b\/\u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a \u0436\u044b\u043b\u044b \u0441\u04d9\u0439\u043a\u0435\u0441 \u0435\u043c\u0435\u0441", + "TabGeneral": "\u0416\u0430\u043b\u043f\u044b", + "TitleSupport": "\u0416\u0430\u049b\u0442\u0430\u0443", + "LabelSeasonNumber": "\u041c\u0430\u0443\u0441\u044b\u043c \u043d\u04e9\u043c\u0456\u0440\u0456", + "TabLog": "\u0416\u04b1\u0440\u043d\u0430\u043b", + "LabelEpisodeNumber": "\u042d\u043f\u0438\u0437\u043e\u0434 \u043d\u04e9\u043c\u0456\u0440\u0456", + "TabAbout": "\u0422\u0443\u0440\u0430\u043b\u044b", + "TabSupporterKey": "\u0416\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u043a\u0456\u043b\u0442\u0456", + "TabBecomeSupporter": "\u0416\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u0431\u043e\u043b\u0443", + "ProjectHasCommunity": "Emby \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440\u044b \u043c\u0435\u043d \u049b\u043e\u043b\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440\u0434\u044b\u04a3 \u0434\u0430\u043c\u0443\u0434\u0430\u0493\u044b \u049b\u0430\u0443\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u0493\u044b \u0431\u0430\u0440.", + "CheckoutKnowledgeBase": "Emby \u0435\u04a3 \u04af\u043b\u043a\u0435\u043d \u049b\u0430\u0439\u0442\u0430\u0440\u044b\u043c\u0434\u044b\u043b\u044b\u0493\u044b\u043d \u0430\u043b\u0443 \u0436\u04e9\u043d\u0456\u043d\u0434\u0435 \u043a\u04e9\u043c\u0435\u043a\u0442\u0435\u0441\u0443 \u04af\u0448\u0456\u043d \u0411\u0456\u043b\u0456\u043c \u049b\u043e\u0440\u044b\u043d \u049b\u0430\u0440\u0430\u043f \u0448\u044b\u0493\u044b\u04a3\u044b\u0437.", + "SearchKnowledgeBase": "\u0411\u0456\u043b\u0456\u043c \u049b\u043e\u0440\u044b\u043d\u0430\u043d \u0456\u0437\u0434\u0435\u0443", + "VisitTheCommunity": "\u049a\u0430\u0443\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u049b\u049b\u0430 \u0431\u0430\u0440\u0443", + "VisitProjectWebsite": "Emby \u0493\u0430\u043b\u0430\u043c\u0442\u043e\u0440 \u0441\u0430\u0439\u0442\u044b\u043d\u0430 \u0431\u0430\u0440\u0443", + "VisitProjectWebsiteLong": "\u0421\u043e\u04a3\u0493\u044b \u0436\u0430\u04a3\u0430\u043b\u044b\u049b\u0442\u0430\u0440\u0434\u044b \u0431\u0456\u043b\u0456\u043f \u0430\u043b\u0443 \u04af\u0448\u0456\u043d \u0436\u04d9\u043d\u0435 \u0436\u0430\u0441\u0430\u049b\u0442\u0430\u0443\u0448\u044b\u043b\u0430\u0440 \u0431\u043b\u043e\u0433\u0456\u043c\u0435\u043d \u0442\u0430\u043d\u044b\u0441\u044b\u043f \u0442\u04b1\u0440\u0443 \u04af\u0448\u0456\u043d Emby \u0493\u0430\u043b\u0430\u043c\u0442\u043e\u0440 \u0441\u0430\u0439\u0442\u044b\u043d\u0430 \u0431\u0430\u0440\u044b\u04a3\u044b\u0437.", + "OptionHideUser": "\u0411\u04b1\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u043a\u0456\u0440\u0443 \u044d\u043a\u0440\u0430\u043d\u0434\u0430\u0440\u044b\u043d\u0430\u043d \u0436\u0430\u0441\u044b\u0440\u0443", + "OptionHideUserFromLoginHelp": "\u0416\u0435\u043a\u0435 \u043d\u0435\u043c\u0435\u0441\u0435 \u0436\u0430\u0441\u044b\u0440\u044b\u043d \u04d9\u043a\u0456\u043c\u0448\u0456 \u0442\u0456\u0440\u043a\u0435\u043b\u0433\u0456\u043b\u0435\u0440\u0456 \u04af\u0448\u0456\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u044b. \u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0430\u0442\u044b \u043c\u0435\u043d \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0456 \u0435\u043d\u0433\u0456\u0437\u0443 \u0430\u0440\u049b\u044b\u043b\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0493\u0430 \u049b\u043e\u043b\u043c\u0435\u043d \u043a\u0456\u0440\u0443 \u049b\u0430\u0436\u0435\u0442 \u0431\u043e\u043b\u0430\u0434\u044b.", + "OptionDisableUser": "\u0411\u04b1\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0493\u0430 \u0442\u044b\u0439\u044b\u043c \u0441\u0430\u043b\u0443", + "OptionDisableUserHelp": "\u0415\u0433\u0435\u0440 \u0442\u044b\u0439\u044b\u043c \u0441\u0430\u043b\u044b\u043d\u0441\u0430, \u0441\u0435\u0440\u0432\u0435\u0440 \u0431\u04b1\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0434\u0430\u043d \u0435\u0448\u049b\u0430\u043d\u0434\u0430\u0439 \u049b\u043e\u0441\u044b\u043b\u044b\u043c\u0493\u0430 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u043f\u0435\u0439\u0434\u0456. \u0411\u0430\u0440 \u049b\u043e\u0441\u044b\u043b\u044b\u043c\u0434\u0430\u0440 \u043a\u0435\u043d\u0435\u0442 \u04af\u0437\u0456\u043b\u0435\u0434\u0456.", + "HeaderAdvancedControl": "\u041a\u0435\u04a3\u0435\u0439\u0442\u0456\u043b\u0433\u0435\u043d \u0431\u0430\u0441\u049b\u0430\u0440\u0443", + "LabelName": "\u0410\u0442\u044b:", + "ButtonHelp": "\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0442\u0435\u0433\u0456 \u0430\u043d\u044b\u049b\u0442\u0430\u043c\u0430\u0493\u0430", + "OptionAllowUserToManageServer": "\u0411\u0443\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0493\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u0431\u0430\u0441\u049b\u0430\u0440\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", + "HeaderFeatureAccess": "\u0415\u0440\u0435\u043a\u0448\u0435\u043b\u0456\u043a\u0442\u0435\u0440\u0433\u0435 \u049b\u0430\u0442\u044b\u043d\u0430\u0443", + "OptionAllowMediaPlayback": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u043e\u0439\u043d\u0430\u0442\u0443\u0493\u0430 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", + "OptionAllowBrowsingLiveTv": "\u042d\u0444\u0438\u0440\u043b\u0456\u043a \u0422\u0414 \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u0493\u0430 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", + "OptionAllowDeleteLibraryContent": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0436\u043e\u044e\u0493\u0430 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", + "OptionAllowManageLiveTv": "\u042d\u0444\u0438\u0440\u043b\u0456\u043a \u0422\u0414 \u0436\u0430\u0437\u0443\u044b\u043d \u0431\u0430\u0441\u049b\u0430\u0440\u0443\u0493\u0430 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", + "OptionAllowRemoteControlOthers": "\u0411\u0430\u0441\u049b\u0430 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440\u0434\u044b \u049b\u0430\u0448\u044b\u049b\u0442\u0430\u043d \u0431\u0430\u0441\u049b\u0430\u0440\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", + "OptionAllowRemoteSharedDevices": "\u041e\u0440\u0442\u0430\u049b \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440\u0434\u044b \u049b\u0430\u0448\u044b\u049b\u0442\u0430\u043d \u0431\u0430\u0441\u049b\u0430\u0440\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", + "OptionAllowRemoteSharedDevicesHelp": "DLNA-\u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0431\u0430\u0441\u049b\u0430\u0440\u0493\u0430\u043d\u0448\u0430 \u0434\u0435\u0439\u0456\u043d \u043e\u0440\u0442\u0430\u049b \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0435\u0441\u0435\u043f\u0442\u0435\u043b\u0456\u043d\u0435\u0434\u0456.", + "OptionAllowLinkSharing": "\u04d8\u043b\u0435\u0443\u043c\u0435\u0442\u0442\u0456\u043a \u0436\u0435\u043b\u0456\u043b\u0435\u0440\u0456\u043c\u0435\u043d \u043e\u0440\u0442\u0430\u049b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0493\u0430 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", + "OptionAllowLinkSharingHelp": "\u0422\u0435\u043a \u049b\u0430\u043d\u0430 \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u0442\u0443\u0440\u0430\u043b\u044b \u0430\u049b\u043f\u0430\u0440\u0430\u0442\u0442\u044b \u049b\u0430\u043c\u0442\u0438\u0442\u044b\u043d \u0432\u0435\u0431-\u0431\u0435\u0442\u0442\u0435\u0440\u0456 \u043e\u0440\u0442\u0430\u049b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043b\u0430\u0434\u044b. \u0422\u0430\u0441\u044b\u0493\u044b\u0448 \u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b \u0435\u0448\u049b\u0430\u0448\u0430\u043d \u043e\u0440\u0442\u0430\u049b \u0436\u0430\u0440\u0438\u044f\u043b\u0430\u043d\u0431\u0430\u0439\u0434\u044b. \u041e\u0440\u0442\u0430\u049b\u0442\u0430\u0441\u0443 \u0443\u0430\u049b\u044b\u0442\u043f\u0435\u043d \u0448\u0435\u043a\u0442\u0435\u043b\u0435\u0434\u0456 \u0436\u04d9\u043d\u0435 \u043c\u0435\u0440\u0437\u0456\u043c\u0456 \u0441\u0435\u0440\u0432\u0435\u0440\u0456\u04a3\u0456\u0437\u0434\u0456\u04a3 \u043e\u0440\u0442\u0430\u049b\u0442\u0430\u0441\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456\u043d\u0456\u04a3 \u043d\u0435\u0433\u0456\u0437\u0456\u043d\u0434\u0435 \u0430\u044f\u049b\u0442\u0430\u043b\u0430\u0434\u044b.", + "HeaderSharing": "\u041e\u0440\u0442\u0430\u049b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443", + "HeaderRemoteControl": "\u049a\u0430\u0448\u044b\u049b\u0442\u0430\u043d \u0431\u0430\u0441\u049b\u0430\u0440\u0443", + "OptionMissingTmdbId": "TMDb Id \u0436\u043e\u049b", + "OptionIsHD": "HD", + "OptionIsSD": "SD", + "OptionMetascore": "Metascore \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u044b", + "ButtonSelect": "\u0411\u04e9\u043b\u0435\u043a\u0442\u0435\u0443", + "ButtonGroupVersions": "\u041d\u04b1\u0441\u049b\u0430\u043b\u0430\u0440\u0434\u044b \u0442\u043e\u043f\u0442\u0430\u0441\u0442\u044b\u0440\u0443", + "ButtonAddToCollection": "\u0416\u0438\u044b\u043d\u0442\u044b\u049b\u049b\u0430 \u04af\u0441\u0442\u0435\u0443", + "PismoMessage": "\u0421\u044b\u0439\u043b\u0430\u043d\u0493\u0430\u043d \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u0430\u0440\u049b\u044b\u043b\u044b Pismo File Mount \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0434\u0430.", + "TangibleSoftwareMessage": "\u0421\u044b\u0439\u043b\u0430\u043d\u0493\u0430\u043d \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u0430\u0440\u049b\u044b\u043b\u044b Tangible Solutions Java\/C# \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0433\u0456\u0448\u0442\u0435\u0440\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0434\u0430.", + "HeaderCredits": "\u049a\u04b1\u049b\u044b\u049b \u0438\u0435\u043b\u0435\u043d\u0443\u0448\u0456\u043b\u0435\u0440", + "PleaseSupportOtherProduces": "\u0411\u0456\u0437 \u049b\u043e\u043b\u0434\u0430\u043d\u0430\u0442\u044b\u043d \u0431\u0430\u0441\u049b\u0430 \u0442\u0435\u0433\u0456\u043d \u04e9\u043d\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u0436\u0430\u049b\u0442\u0430\u04a3\u044b\u0437:", + "VersionNumber": "\u041d\u04b1\u0441\u049b\u0430\u0441\u044b: {0}", + "TabPaths": "\u0416\u043e\u043b\u0434\u0430\u0440", + "TabServer": "\u0421\u0435\u0440\u0432\u0435\u0440", + "TabTranscoding": "\u049a\u0430\u0439\u0442\u0430 \u043a\u043e\u0434\u0442\u0430\u0443", + "TitleAdvanced": "\u041a\u0435\u04a3\u0435\u0439\u0442\u0456\u043b\u0433\u0435\u043d", + "LabelAutomaticUpdateLevel": "\u0410\u0432\u0442\u043e\u0436\u0430\u04a3\u0430\u0440\u0442\u0443 \u0434\u0435\u04a3\u0433\u0435\u0439\u0456", + "OptionRelease": "\u0420\u0435\u0441\u043c\u0438 \u0448\u044b\u0493\u0430\u0440\u044b\u043b\u044b\u043c", + "OptionBeta": "\u0411\u0435\u0442\u0430 \u043d\u04b1\u0441\u049b\u0430", + "OptionDev": "\u0416\u0430\u0441\u0430\u049b\u0442\u0430\u0443 (\u0442\u04b1\u0440\u0430\u049b\u0441\u044b\u0437)", + "LabelAllowServerAutoRestart": "\u0416\u0430\u04a3\u0430\u0440\u0442\u0443\u043b\u0430\u0440\u0434\u044b \u049b\u043e\u043b\u0434\u0430\u043d\u0443 \u04af\u0448\u0456\u043d \u0441\u0435\u0440\u0432\u0435\u0440\u0433\u0435 \u049b\u0430\u0439\u0442\u0430 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0443\u0434\u044b \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", + "LabelAllowServerAutoRestartHelp": "\u0422\u0435\u043a \u049b\u0430\u043d\u0430 \u0435\u0448\u049b\u0430\u043d\u0434\u0430\u0439 \u043f\u0430\u0439\u0434\u0430\u043b\u0443\u043d\u0448\u044b\u043b\u0430\u0440 \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456 \u0435\u043c\u0435\u0441, \u04d9\u0440\u0435\u043a\u0435\u0442\u0441\u0456\u0437 \u043c\u0435\u0437\u0433\u0456\u043b\u0434\u0435\u0440\u0434\u0435 \u0441\u0435\u0440\u0432\u0435\u0440 \u049b\u0430\u0439\u0442\u0430 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0430\u0434\u044b.", + "LabelEnableDebugLogging": "\u041a\u04af\u0439\u043a\u0435\u043b\u0442\u0456\u0440\u0443 \u0436\u0430\u0437\u0431\u0430\u043b\u0430\u0440\u044b\u043d \u0436\u04b1\u0440\u043d\u0430\u043b\u0434\u0430 \u049b\u043e\u0441\u0443", + "LabelRunServerAtStartup": "\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0443\u0434\u0430\u043d \u0431\u0430\u0441\u0442\u0430\u043f \u043e\u0440\u044b\u043d\u0434\u0430\u0443", + "LabelRunServerAtStartupHelp": "\u0411\u04b1\u043b Windows \u0436\u04b1\u043c\u044b\u0441\u044b\u043d \u0431\u0430\u0441\u0442\u0430\u0493\u0430\u043d\u0434\u0430 \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u0442\u0430\u049b\u0442\u0430\u0434\u0430\u0493\u044b \u0431\u0435\u043b\u0433\u0456\u0448\u0435 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0430\u0434\u044b. Windows \u049b\u044b\u0437\u043c\u0435\u0442\u0456\u043d \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u0443 \u04af\u0448\u0456\u043d, \u049b\u04b1\u0441\u0431\u0435\u043b\u0433\u0456\u043d\u0456 \u0430\u043b\u044b\u04a3\u044b\u0437 \u0436\u04d9\u043d\u0435 \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0456 Windows \u049a\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0456 \u0430\u0440\u049b\u044b\u043b\u044b \u043e\u0440\u044b\u043d\u0434\u0430\u04a3\u044b\u0437. \u041d\u0430\u0437\u0430\u0440 \u0430\u0443\u0434\u0430\u0440\u044b\u04a3\u044b\u0437! \u0411\u04b1\u043b \u0435\u043a\u0435\u0443\u0456\u043d \u0441\u043e\u043b \u043c\u0435\u0437\u0433\u0456\u043b\u0434\u0435 \u0431\u0456\u0440\u0433\u0435 \u043e\u0440\u044b\u043d\u0434\u0430\u0443 \u043c\u04af\u043c\u043a\u0456\u043d \u0435\u043c\u0435\u0441, \u0441\u043e\u043d\u044b\u043c\u0435\u043d \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0456 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u0443 \u0430\u043b\u0434\u044b\u043d\u0430\u043d \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u0442\u0430\u049b\u0442\u0430\u0434\u0430\u0493\u044b \u0431\u0435\u043b\u0433\u0456\u0448\u0435\u0434\u0435\u043d \u0448\u044b\u0493\u044b\u04a3\u044b\u0437.", + "ButtonSelectDirectory": "\u049a\u0430\u0442\u0430\u043b\u043e\u0433\u0442\u044b \u0431\u04e9\u043b\u0435\u043a\u0442\u0435\u0443", + "LabelCustomPaths": "\u049a\u0430\u043b\u0430\u0443\u044b\u04a3\u044b\u0437 \u0431\u043e\u0439\u044b\u043d\u0448\u0430 \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u0436\u043e\u043b\u0434\u0430\u0440\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437. \u04d8\u0434\u0435\u043f\u043a\u0456\u043b\u0435\u0440\u0434\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443 \u04af\u0448\u0456\u043d \u04e9\u0440\u0456\u0441\u0442\u0435\u0440\u0434\u0456 \u0431\u043e\u0441 \u049b\u0430\u043b\u0434\u044b\u0440\u044b\u04a3\u044b\u0437.", + "LabelCachePath": "\u041a\u044d\u0448\u043a\u0435 \u049b\u0430\u0440\u0430\u0439 \u0436\u043e\u043b:", + "LabelCachePathHelp": "\u0421\u0443\u0440\u0435\u0442 \u0441\u0438\u044f\u049b\u0442\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0434\u0456\u04a3 \u043a\u044d\u0448 \u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b \u04af\u0448\u0456\u043d \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u0436\u0430\u0439\u0493\u0430\u0441\u044b\u043c\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437.", + "LabelImagesByNamePath": "\u0410\u0442\u044b \u0431\u043e\u0439\u044b\u043d\u0448\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0433\u0435 \u049b\u0430\u0440\u0430\u0439 \u0436\u043e\u043b:", + "LabelImagesByNamePathHelp": "\u0416\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u044b\u043d\u0493\u0430\u043d \u0430\u043a\u0442\u0435\u0440, \u0436\u0430\u043d\u0440, \u0436\u04d9\u043d\u0435 \u0441\u0442\u0443\u0434\u0438\u044f \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456 \u04af\u0448\u0456\u043d \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u0436\u0430\u0439\u0493\u0430\u0441\u044b\u043c\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437.", + "LabelMetadataPath": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0433\u0435 \u049b\u0430\u0440\u0430\u0439 \u0436\u043e\u043b:", + "LabelMetadataPathHelp": "\u0415\u0433\u0435\u0440 \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u044b \u0456\u0448\u0456\u043d\u0434\u0435 \u0441\u0430\u049b\u0442\u0430\u043b\u043c\u0430\u0441\u0430, \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u044b\u043d\u0493\u0430\u043d \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u043c\u0435\u043b\u0435\u0440 \u0431\u0435\u043d \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u04af\u0448\u0456\u043d \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u0436\u0430\u0439\u0493\u0430\u0441\u044b\u043c\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437.", + "LabelTranscodingTempPath": "Transcoding temporary \u049b\u0430\u043b\u0442\u0430\u0441\u044b\u043d\u044b\u04a3 \u0436\u043e\u043b\u044b:", + "LabelTranscodingTempPathHelp": "\u0411\u04b1\u043b \u049b\u0430\u043b\u0442\u0430 \u049b\u04b1\u0440\u0430\u043c\u044b\u043d\u0434\u0430 \u049b\u0430\u0439\u0442\u0430 \u043a\u043e\u0434\u0442\u0430\u0443 \u049b\u04b1\u0440\u0430\u043b\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0430\u0442\u044b\u043d \u0436\u04b1\u043c\u044b\u0441 \u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b \u0431\u0430\u0440. \u0422\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u0436\u043e\u043b\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437, \u043d\u0435\u043c\u0435\u0441\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0434\u0456\u04a3 \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u049b\u0430\u043b\u0442\u0430\u0441\u044b \u0456\u0448\u0456\u043d\u0434\u0435\u0433\u0456 \u04d9\u0434\u0435\u043f\u043a\u0456\u0441\u0456\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443 \u04af\u0448\u0456\u043d \u0431\u043e\u0441 \u049b\u0430\u043b\u0434\u044b\u0440\u044b\u04a3\u044b\u0437.", + "TabBasics": "\u041d\u0435\u0433\u0456\u0437\u0433\u0456\u043b\u0435\u0440", + "TabTV": "\u0422\u0414", + "TabGames": "\u041e\u0439\u044b\u043d\u0434\u0430\u0440", + "TabMusic": "\u041c\u0443\u0437\u044b\u043a\u0430", + "TabOthers": "\u0411\u0430\u0441\u049b\u0430\u043b\u0430\u0440", + "HeaderExtractChapterImagesFor": "\u0421\u0430\u0445\u043d\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456\u043d \u0448\u044b\u0493\u0430\u0440\u044b\u043f \u0430\u043b\u0443 \u043c\u0430\u043a\u0441\u0430\u0442\u044b:", + "OptionMovies": "\u0424\u0438\u043b\u044c\u043c\u0434\u0435\u0440", + "OptionEpisodes": "\u0422\u0414-\u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440", + "OptionOtherVideos": "\u0411\u0430\u0441\u049b\u0430 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440", + "TitleMetadata": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440", + "LabelAutomaticUpdates": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0436\u0430\u04a3\u0430\u0440\u0442\u0443\u043b\u0430\u0440\u0434\u044b \u049b\u043e\u0441\u0443", + "LabelAutomaticUpdatesTmdb": "TheMovieDB.org \u043a\u04e9\u0437\u0456\u043d\u0435\u043d \u0430\u0432\u0442\u043e\u0436\u0430\u04a3\u0430\u0440\u0442\u0443\u0434\u044b \u049b\u043e\u0441\u0443", + "LabelAutomaticUpdatesTvdb": "TheTVDB.com \u043a\u04e9\u0437\u0456\u043d\u0435\u043d \u0430\u0432\u0442\u043e\u0436\u0430\u04a3\u0430\u0440\u0442\u0443\u0434\u044b \u049b\u043e\u0441\u0443", + "LabelAutomaticUpdatesFanartHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u0436\u0430\u04a3\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 fanart.tv \u0434\u0435\u0440\u0435\u049b\u043e\u0440\u044b\u043d\u0430 \u04af\u0441\u0442\u0435\u043b\u0433\u0435\u043d \u0431\u043e\u0439\u0434\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0436\u04af\u043a\u0442\u0435\u043b\u0456\u043f \u0430\u043b\u044b\u043d\u0430\u0434\u044b. \u0411\u0430\u0440 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 \u0430\u0443\u044b\u0441\u0442\u044b\u0440\u044b\u043b\u043c\u0430\u0439\u0434\u044b.", + "LabelAutomaticUpdatesTmdbHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u0436\u0430\u04a3\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 TheMovieDB.org \u0434\u0435\u0440\u0435\u049b\u043e\u0440\u044b\u043d\u0430 \u04af\u0441\u0442\u0435\u043b\u0433\u0435\u043d \u0431\u043e\u0439\u0434\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0436\u04af\u043a\u0442\u0435\u043b\u0456\u043f \u0430\u043b\u044b\u043d\u0430\u0434\u044b. \u0411\u0430\u0440 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 \u0430\u0443\u044b\u0441\u0442\u044b\u0440\u044b\u043b\u043c\u0430\u0439\u0434\u044b.", + "LabelAutomaticUpdatesTvdbHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u0436\u0430\u04a3\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 TheTVDB.com \u0434\u0435\u0440\u0435\u049b\u043e\u0440\u044b\u043d\u0430 \u04af\u0441\u0442\u0435\u043b\u0433\u0435\u043d \u0431\u043e\u0439\u0434\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0436\u04af\u043a\u0442\u0435\u043b\u0456\u043f \u0430\u043b\u044b\u043d\u0430\u0434\u044b. \u0411\u0430\u0440 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 \u0430\u0443\u044b\u0441\u0442\u044b\u0440\u044b\u043b\u043c\u0430\u0439\u0434\u044b.", + "LabelFanartApiKey": "\u04e8\u0437\u0456\u043d\u0434\u0456\u043a API-\u043a\u0456\u043b\u0442:", + "LabelFanartApiKeyHelp": "\u04e8\u0437\u0456\u043d\u0434\u0456\u043a API-\u043a\u0456\u043b\u0442\u0456\u0441\u0456\u0437 Fanart \u04af\u0448\u0456\u043d \u0436\u0456\u0431\u0435\u0440\u0456\u043b\u0433\u0435\u043d \u0441\u0430\u0443\u0430\u043b\u0434\u0430\u0440\u0493\u0430 7 \u043a\u04af\u043d\u0456\u043d\u0435\u043d \u0431\u04b1\u0440\u044b\u043d \u0440\u0430\u0441\u0442\u0430\u043b\u0493\u0430\u043d \u043d\u04d9\u0442\u0438\u0436\u0435\u043b\u0435\u0440 \u049b\u0430\u0439\u0442\u0430\u0440\u044b\u043b\u0430\u0434\u044b. \u04e8\u0437\u0456\u043d\u0434\u0456\u043a API-\u043a\u0456\u043b\u0442\u0456\u043c\u0435\u043d \u0431\u04b1\u043b 48 \u0441\u0430\u0493\u0430\u0442\u049b\u0430 \u0434\u0435\u0439\u0456\u043d \u049b\u044b\u0441\u049b\u0430\u0440\u0442\u044b\u043b\u0430\u0434\u044b, \u0430\u043b,\u0441\u043e\u043d\u0434\u0430\u0439-\u0430\u049b, Fanart VIP-\u043c\u04af\u0448\u0435\u0441\u0456 \u0431\u043e\u043b\u0441\u0430\u04a3\u044b\u0437, \u0431\u04b1\u043b \u0448\u0430\u043c\u0430\u043c\u0435\u043d 10 \u043c\u0438\u043d\u04e9\u0442\u043a\u0435 \u0434\u0435\u0439\u0456\u043d \u0442\u0430\u0493\u044b \u0434\u0430 \u049b\u044b\u0441\u049b\u0430\u0440\u0442\u044b\u043b\u0430\u0434\u044b.", + "ExtractChapterImagesHelp": "\u0421\u0430\u0445\u043d\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456\u043d \u0448\u044b\u0493\u0430\u0440\u044b\u043f \u0430\u043b\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0442\u0435\u0440\u0433\u0435 \u0441\u0430\u0445\u043d\u0430 \u0431\u04e9\u043b\u0435\u043a\u0442\u0435\u0443\u0433\u0435 \u0430\u0440\u043d\u0430\u043b\u0493\u0430\u043d \u0441\u044b\u0437\u0431\u0430\u043b\u044b\u049b \u043c\u04d9\u0437\u0456\u0440\u043b\u0435\u0440\u0434\u0456 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0435\u0434\u0456. \u0411\u04b1\u043b \u043f\u0440\u043e\u0446\u0435\u0441 \u0431\u0430\u044f\u0443, \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0434\u044b \u0442\u043e\u0437\u0434\u044b\u0440\u0430\u0442\u044b\u043d \u0436\u04d9\u043d\u0435 \u0431\u0456\u0440\u0430\u0437 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442 \u043a\u0435\u04a3\u0456\u0441\u0442\u0456\u043a\u0442\u0456 \u049b\u0430\u0436\u0435\u0442 \u0435\u0442\u0435\u0442\u0456\u043d \u0431\u043e\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d. \u041e\u043b \u0431\u0435\u0439\u043d\u0435\u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b \u0442\u0430\u0431\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u0436\u04d9\u043d\u0435 \u0442\u04af\u043d\u0433\u0456 \u0443\u0430\u049b\u044b\u0442\u044b\u043d\u0430 \u0436\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u0430\u043d \u0442\u0430\u043f\u0441\u044b\u0440\u043c\u0430 \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u0439\u0434\u0456. \u041e\u0440\u044b\u043d\u0434\u0430\u0443 \u043a\u0435\u0441\u0442\u0435\u0441\u0456 \u0416\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0443\u0448\u044b \u0430\u0439\u043c\u0430\u0493\u044b\u043d\u0434\u0430 \u0442\u0435\u04a3\u0448\u0435\u043b\u0435\u0434\u0456. \u0411\u04b1\u043b \u0442\u0430\u043f\u0441\u044b\u0440\u043c\u0430\u043d\u044b \u049b\u0430\u0440\u0431\u0430\u043b\u0430\u0441 \u0441\u0430\u0493\u0430\u0442\u0442\u0430\u0440\u044b\u043d\u0434\u0430 \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u0442\u043a\u0456\u0437\u0443 \u04b1\u0441\u044b\u043d\u044b\u043b\u043c\u0430\u0439\u0434\u044b.", + "LabelMetadataDownloadLanguage": "\u0416\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443 \u0442\u0456\u043b\u0456\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456:", + "ButtonAutoScroll": "\u0410\u0432\u0442\u043e\u0430\u0439\u043d\u0430\u043b\u0434\u044b\u0440\u0443", + "LabelImageSavingConvention": "\u0421\u0443\u0440\u0435\u0442 \u0441\u0430\u049b\u0442\u0430\u0443 \u043a\u0435\u043b\u0456\u0441\u0456\u043c\u0456:", + "LabelImageSavingConventionHelp": "Emby \u0435\u04a3 \u04d9\u0439\u0433\u0456\u043b\u0456 \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430 \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u043b\u0430\u0440\u0434\u0430\u0493\u044b \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0434\u0456 \u0442\u0430\u043d\u0438\u0434\u044b. \u0415\u0433\u0435\u0440 \u0431\u0430\u0441\u049b\u0430 \u0434\u0430 \u04e9\u043d\u0456\u043c\u0434\u0435\u0440\u0434\u0456, \u0441\u043e\u043d\u0434\u0430\u0439-\u0430\u049b, \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0493\u0430\u043d\u0434\u0430, \u0436\u04af\u043a\u0442\u0435\u0443 \u0448\u0430\u0440\u0442\u044b\u043d \u0442\u0430\u04a3\u0434\u0430\u043f \u0430\u043b\u0443 \u043f\u0430\u0439\u0434\u0430\u043b\u044b \u0431\u043e\u043b\u044b\u043f \u0442\u0430\u0431\u044b\u043b\u0430\u0434\u044b.", + "OptionImageSavingCompatible": "\u0421\u044b\u0438\u0441\u044b\u043c\u0434\u044b - Emby\/Kodi\/Plex", + "OptionImageSavingStandard": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0442\u044b - MB2", + "ButtonSignIn": "\u041a\u0456\u0440\u0443", + "TitleSignIn": "\u041a\u0456\u0440\u0443", + "HeaderPleaseSignIn": "\u041a\u0456\u0440\u0456\u04a3\u0456\u0437", + "LabelUser": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b:", + "LabelPassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437:", + "ButtonManualLogin": "\u049a\u043e\u043b\u043c\u0435\u043d \u043a\u0456\u0440\u0443", + "PasswordLocalhostMessage": "\u0416\u0435\u0440\u0433\u0456\u043b\u0456\u043a\u0442\u0456 (localhost) \u043e\u0440\u044b\u043d\u0434\u0430\u043d \u043a\u0456\u0440\u0433\u0435\u043d\u0434\u0435 \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0435\u0440 \u049b\u0430\u0436\u0435\u0442 \u0435\u043c\u0435\u0441.", + "TabGuide": "\u0410\u043d\u044b\u049b\u0442\u0430\u0493\u044b\u0448", + "TabChannels": "\u0410\u0440\u043d\u0430\u043b\u0430\u0440", + "TabCollections": "\u0416\u0438\u044b\u043d\u0442\u044b\u049b\u0442\u0430\u0440", + "HeaderChannels": "\u0410\u0440\u043d\u0430\u043b\u0430\u0440", + "TabRecordings": "\u0416\u0430\u0437\u0431\u0430\u043b\u0430\u0440", + "TabScheduled": "\u0416\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u0430\u043d", + "TabSeries": "\u0422\u0435\u043b\u0435\u0445\u0438\u043a\u0430\u044f\u043b\u0430\u0440", + "TabFavorites": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b\u043b\u0430\u0440", + "TabMyLibrary": "\u041c\u0435\u043d\u0456\u04a3 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043c", + "ButtonCancelRecording": "\u0416\u0430\u0437\u0443\u0434\u044b \u0431\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443", + "HeaderPrePostPadding": "\u0410\u043b\u0493\u0430\/\u0410\u0440\u0442\u049b\u0430 \u0448\u0435\u0433\u0456\u043d\u0456\u0441", + "LabelPrePaddingMinutes": "\u0410\u043b\u0493\u0430 \u0448\u0435\u0433\u0456\u043d\u0456\u0441, \u043c\u0438\u043d:", + "OptionPrePaddingRequired": "\u0410\u043b\u0493\u0430 \u0448\u0435\u0433\u0456\u043d\u0456\u0441 \u0436\u0430\u0437\u0443 \u04af\u0448\u0456\u043d \u043a\u0435\u0440\u0435\u043a.", + "LabelPostPaddingMinutes": "\u0410\u0440\u0442\u049b\u0430 \u0448\u0435\u0433\u0456\u043d\u0456\u0441, \u043c\u0438\u043d:", + "OptionPostPaddingRequired": "\u0410\u0440\u0442\u049b\u0430 \u0448\u0435\u0433\u0456\u043d\u0456\u0441 \u0436\u0430\u0437\u0443 \u04af\u0448\u0456\u043d \u043a\u0435\u0440\u0435\u043a.", + "HeaderWhatsOnTV": "\u042d\u0444\u0438\u0440\u0434\u0435", + "HeaderUpcomingTV": "\u041a\u04af\u0442\u0456\u043b\u0433\u0435\u043d \u0422\u0414", + "TabStatus": "\u041a\u04af\u0439", + "TabSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440", + "ButtonRefreshGuideData": "\u0410\u043d\u044b\u049b\u0442\u0430\u0493\u044b\u0448 \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456\u043d \u0436\u0430\u04a3\u0493\u044b\u0440\u0442\u0443", + "ButtonRefresh": "\u0416\u0430\u04a3\u0493\u044b\u0440\u0442\u0443", + "ButtonAdvancedRefresh": "\u041a\u0435\u04a3\u0435\u0439\u0442\u0456\u043b\u0433\u0435\u043d \u0436\u0430\u04a3\u0493\u044b\u0440\u0442\u0443", + "OptionPriority": "\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442", + "OptionRecordOnAllChannels": "\u0411\u0430\u0440\u043b\u044b\u049b \u0430\u0440\u043d\u0430\u043b\u0430\u0440\u0434\u0430\u043d \u0436\u0430\u0437\u044b\u043f \u0430\u043b\u0443", + "OptionRecordAnytime": "\u04d8\u0440 \u0443\u0430\u049b\u044b\u0442\u0442\u0430 \u0436\u0430\u0437\u044b\u043f \u0430\u043b\u0443", "OptionRecordOnlyNewEpisodes": "\u0422\u0435\u043a \u049b\u0430\u043d\u0430 \u0436\u0430\u04a3\u0430 \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u0436\u0430\u0437\u044b\u043f \u0430\u043b\u0443", "HeaderRepeatingOptions": "\u049a\u0430\u0439\u0442\u0430\u043b\u0430\u043c\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456", "HeaderDays": "\u041a\u04af\u043d\u0434\u0435\u0440", @@ -91,7 +502,7 @@ "LabelTo": "\u049a\u0430\u0439\u0434\u0430:", "LabelToHelp": "\u041c\u044b\u0441\u0430\u043b: \\\\MyServer\\Movies (\u043a\u043b\u0438\u0435\u043d\u0442\u0442\u0435\u0440 \u049b\u0430\u0442\u044b\u043d\u0430\u0443 \u043c\u04af\u043c\u043a\u0456\u043d \u0436\u043e\u043b)", "ButtonAddPathSubstitution": "\u0410\u043b\u043c\u0430\u0441\u0442\u044b\u0440\u0443\u0434\u044b \u04af\u0441\u0442\u0435\u0443", - "OptionSpecialEpisode": "\u0410\u0440\u043d\u0430\u0439\u044b\u043b\u0430\u0440", + "OptionSpecialEpisode": "\u0410\u0440\u043d\u0430\u0439\u044b \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440", "OptionMissingEpisode": "\u0416\u043e\u049b \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440", "OptionUnairedEpisode": "\u041a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u043c\u0435\u0433\u0435\u043d \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440", "OptionEpisodeSortName": "\u0411\u04e9\u043b\u0456\u043c\u0434\u0456\u04a3 \u0441\u04b1\u0440\u044b\u043f\u0442\u0430\u043b\u0430\u0442\u044b\u043d \u0430\u0442\u044b", @@ -145,7 +556,7 @@ "LabelPublicHttpsPort": "\u0416\u0430\u0440\u0438\u044f https-\u043f\u043e\u0440\u0442 \u043d\u04e9\u043c\u0456\u0440\u0456:", "LabelPublicHttpsPortHelp": "\u0416\u0435\u0440\u0433\u0456\u043b\u0456\u043a\u0442\u0456 https-\u043f\u043e\u0440\u0442\u044b\u043d\u0430 \u0441\u0430\u043b\u044b\u0441\u0442\u044b\u0440\u044b\u043b\u0443\u044b \u0442\u0438\u0456\u0441 \u0436\u0430\u0440\u0438\u044f \u043f\u043e\u0440\u0442 \u043d\u04e9\u043c\u0456\u0440\u0456.", "LabelEnableHttps": "HTTPS \u0445\u0430\u0442\u0442\u0430\u043c\u0430\u0441\u044b \u0441\u044b\u0440\u0442\u049b\u044b \u043c\u0435\u043a\u0435\u043d\u0435\u0436\u0430\u0439 \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0431\u0430\u044f\u043d\u0434\u0430\u0443", - "LabelEnableHttpsHelp": "\u0415\u0433\u0435\u0440 \u049b\u043e\u0441\u044b\u043b\u0441\u0430, \u043a\u043b\u0438\u0435\u043d\u0442\u0442\u0435\u0440 \u04af\u0448\u0456\u043d \u0441\u0435\u0440\u0432\u0435\u0440 HTTPS URL \u0441\u044b\u0440\u0442\u049b\u044b \u043c\u0435\u043a\u0435\u043d\u0436\u0430\u0439 \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0431\u0430\u044f\u043d\u0434\u0430\u0439\u0434\u044b.", + "LabelEnableHttpsHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u043a\u043b\u0438\u0435\u043d\u0442\u0442\u0435\u0440 \u04af\u0448\u0456\u043d \u0441\u0435\u0440\u0432\u0435\u0440 HTTPS URL \u0441\u044b\u0440\u0442\u049b\u044b \u043c\u0435\u043a\u0435\u043d\u0436\u0430\u0439 \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0431\u0430\u044f\u043d\u0434\u0430\u0439\u0434\u044b.", "LabelHttpsPort": "\u0416\u0435\u0440\u0433\u0456\u043b\u0456\u043a\u0442\u0456 https-\u043f\u043e\u0440\u0442 \u043d\u04e9\u043c\u0456\u0440\u0456:", "LabelHttpsPortHelp": "Emby HTTPS-\u0441\u0435\u0440\u0432\u0435\u0440\u0456 \u0431\u0430\u0439\u043b\u0430\u0441\u0442\u044b\u0440\u044b\u043b\u0443\u0493\u0430 \u0442\u0438\u0456\u0441\u0442\u0456 TCP-\u043f\u043e\u0440\u0442 \u043d\u04e9\u043c\u0456\u0440\u0456.", "LabelWebSocketPortNumber": "\u0412\u0435\u0431-\u0441\u043e\u043a\u0435\u0442 \u043f\u043e\u0440\u0442\u044b\u043d\u044b\u04a3 \u043d\u04e9\u043c\u0456\u0440\u0456:", @@ -175,8 +586,6 @@ "LabelSkipped": "\u04e8\u0442\u043a\u0456\u0437\u0456\u043b\u0433\u0435\u043d", "HeaderEpisodeOrganization": "\u0411\u04e9\u043b\u0456\u043c\u0434\u0456 \u04b1\u0439\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u0440\u0443", "LabelSeries": "\u0422\u0435\u043b\u0435\u0445\u0438\u043a\u0430\u044f:", - "LabelSeasonNumber": "\u041c\u0430\u0443\u0441\u044b\u043c \u043d\u04e9\u043c\u0456\u0440\u0456:", - "LabelEpisodeNumber": "\u0411\u04e9\u043b\u0456\u043c \u043d\u04e9\u043c\u0456\u0440\u0456:", "LabelEndingEpisodeNumber": "\u0410\u044f\u049b\u0442\u0430\u0443\u0448\u044b \u0431\u04e9\u043b\u0456\u043c\u0434\u0456\u04a3 \u043d\u04e9\u043c\u0456\u0440\u0456:", "LabelEndingEpisodeNumberHelp": "\u0411\u04b1\u043b \u0442\u0435\u043a \u049b\u0430\u043d\u0430 \u0431\u0456\u0440\u043d\u0435\u0448\u0435 \u0431\u04e9\u043b\u0456\u043c\u0456 \u0431\u0430\u0440 \u0444\u0430\u0439\u043b\u0434\u0430\u0440 \u04af\u0448\u0456\u043d", "HeaderSupportTheTeam": "Emby \u0442\u043e\u0431\u044b\u043d \u049b\u043e\u043b\u0434\u0430\u04a3\u044b\u0437", @@ -364,7 +773,7 @@ "OptionPlainStorageFolders": "\u0411\u0430\u0440\u043b\u044b\u049b \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u0434\u044b \u043a\u04d9\u0434\u0456\u043c\u0433\u0456 \u0441\u0430\u049b\u0442\u0430\u043c\u0430 \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u044b \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443", "OptionPlainStorageFoldersHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u0431\u0430\u0440\u043b\u044b\u049b \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440 DIDL \u0456\u0448\u0456\u043d\u0434\u0435 \"object.container.person.musicArtist\" \u0441\u0438\u044f\u049b\u0442\u044b \u043d\u0430\u049b\u0442\u044b\u043b\u0430\u0443 \u0442\u04af\u0440\u0456\u043d\u0456\u04a3 \u043e\u0440\u043d\u044b\u043d\u0430 \"object.container.storageFolder\" \u0431\u043e\u043b\u044b\u043f \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u043d\u0435\u0434\u0456.", "OptionPlainVideoItems": "\u0411\u0430\u0440\u043b\u044b\u049b \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440\u0434\u0456 \u043a\u04d9\u0434\u0456\u043c\u0433\u0456 \u0431\u0435\u0439\u043d\u0435 \u0442\u0430\u0440\u043c\u0430\u049b\u0442\u0430\u0440\u044b \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443", - "OptionPlainVideoItemsHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u0431\u0430\u0440\u043b\u044b\u049b \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440 DIDL \u0456\u0448\u0456\u043d\u0434\u0435 \"object.item.videoItem.movie\" \u0441\u0438\u044f\u049b\u0442\u044b \u043d\u0430\u049b\u0442\u044b\u043b\u0430\u0443 \u0442\u04af\u0440\u0456\u043d\u0456\u04a3 \u043e\u0440\u043d\u044b\u043d\u0430 \"object.item.videoItem\" \u0431\u043e\u043b\u044b\u043f \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u043d\u0435\u0434\u0456.", + "OptionPlainVideoItemsHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u0431\u0430\u0440\u043b\u044b\u049b \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440 DIDL \u0456\u0448\u0456\u043d\u0434\u0435 \"object.item.videoItem.movie\" \u0441\u0438\u044f\u049b\u0442\u044b \u043d\u0430\u049b\u0442\u044b\u043b\u0430\u0443 \u0442\u04af\u0440\u0456\u043d\u0456\u04a3 \u043e\u0440\u043d\u044b\u043d\u0430 \"object.item.videoItem\" \u0431\u043e\u043b\u044b\u043f \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u043d\u0435\u0434\u0456.", "LabelSupportedMediaTypes": "\u049a\u043e\u043b\u0434\u0430\u0443\u0434\u0430\u0493\u044b \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u0442\u04af\u0440\u043b\u0435\u0440\u0456:", "TabIdentification": "\u0410\u043d\u044b\u049b\u0442\u0430\u0443", "HeaderIdentification": "\u0410\u043d\u044b\u049b\u0442\u0430\u0443", @@ -391,7 +800,7 @@ "LabelMaxBitrateHelp": "\u04e8\u0442\u043a\u0456\u0437\u0443 \u043c\u04af\u043c\u043a\u0456\u043d\u0434\u0456\u0433\u0456 \u0448\u0435\u043a\u0442\u0435\u043b\u0433\u0435\u043d \u043e\u0440\u0442\u0430\u043b\u0430\u0440\u0434\u0430\u0493\u044b \u0435\u04a3 \u0436\u043e\u0493\u0430\u0440\u044b \u049b\u0430\u0440\u049b\u044b\u043d\u044b\u043d, \u043d\u0435\u043c\u0435\u0441\u0435 \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u0493\u0430 \u049b\u0430\u0436\u0435\u0442 \u0431\u043e\u043b\u0441\u0430 - \u04e9\u0437 \u0448\u0435\u0433\u0456\u043d \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437.", "LabelMaxStreamingBitrate": "\u0415\u04a3 \u0436\u043e\u0493\u0430\u0440\u044b \u0430\u0493\u044b\u043d\u043c\u0435\u043d \u0442\u0430\u0441\u044b\u043c\u0430\u043b\u0434\u0430\u0443 \u049b\u0430\u0440\u049b\u044b\u043d\u044b:", "LabelMaxStreamingBitrateHelp": "\u0410\u0493\u044b\u043d\u043c\u0435\u043d \u0442\u0430\u0441\u044b\u043c\u0430\u043b\u0434\u0430\u0443 \u043a\u0435\u0437\u0456\u043d\u0434\u0435 \u0435\u04a3 \u0436\u043e\u0493\u0430\u0440\u044b \u049b\u0430\u0440\u049b\u044b\u043d\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437.", - "LabelMaxChromecastBitrate": "Max Chromecast bitrate:", + "LabelMaxChromecastBitrate": "Chromecast \u04af\u0448\u0456\u043d \u0435\u04a3 \u0436\u043e\u0493\u0430\u0440\u044b \u049b\u0430\u0440\u049b\u044b\u043d:", "LabelMaxStaticBitrate": "\u0415\u04a3 \u0436\u043e\u0493\u0430\u0440\u044b \u04af\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u049b\u0430\u0440\u049b\u044b\u043d\u044b:", "LabelMaxStaticBitrateHelp": "\u0416\u043e\u0493\u0430\u0440\u044b \u0441\u0430\u043f\u0430\u043c\u0435\u043d \u043c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b \u04af\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u043a\u0435\u0437\u0456\u043d\u0434\u0435 \u0435\u04a3 \u0436\u043e\u0493\u0430\u0440\u044b \u049b\u0430\u0440\u049b\u044b\u043d\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437.", "LabelMusicStaticBitrate": "\u041c\u0443\u0437\u044b\u043a\u0430\u043d\u044b \u04af\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u049b\u0430\u0440\u049b\u044b\u043d\u044b:", @@ -464,14 +873,15 @@ "HeaderTypeText": "\u041c\u04d9\u0442\u0456\u043d\u0434\u0456 \u0435\u043d\u0433\u0456\u0437\u0443", "LabelTypeText": "\u041c\u04d9\u0442\u0456\u043d", "HeaderSearchForSubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440\u0434\u0456 \u0456\u0437\u0434\u0435\u0443", + "ButtonMore": "\u041a\u04e9\u0431\u0456\u0440\u0435\u043a", "MessageNoSubtitleSearchResultsFound": "\u0406\u0437\u0434\u0435\u0433\u0435\u043d\u0434\u0435 \u0435\u0448\u049b\u0430\u043d\u0434\u0430\u0439 \u043d\u04d9\u0442\u0438\u0436\u0435\u043b\u0435\u0440 \u0442\u0430\u0431\u044b\u043b\u043c\u0430\u0434\u044b.", "TabDisplay": "\u0411\u0435\u0439\u043d\u0435\u043b\u0435\u0443", "TabLanguages": "\u0422\u0456\u043b\u0434\u0435\u0440", - "TabAppSettings": "App Settings", + "TabAppSettings": "\u049a\u043e\u043b\u0434\u0430\u043d\u0431\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456", "LabelEnableThemeSongs": "\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0442\u044b\u049b \u04d9\u0443\u0435\u043d\u0434\u0435\u0440\u0434\u0456 \u049b\u043e\u0441\u0443", "LabelEnableBackdrops": "\u0410\u0440\u0442\u049b\u044b \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0434\u0456 \u049b\u043e\u0441\u0443", - "LabelEnableThemeSongsHelp": "\u0415\u0433\u0435\u0440 \u049b\u043e\u0441\u044b\u043b\u0441\u0430, \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043d\u044b \u0448\u043e\u043b\u044b\u0493\u0430\u043d\u0434\u0430 \u0442\u0430\u049b\u044b\u0440\u044b\u043f\u0442\u044b\u049b \u04d9\u0443\u0435\u043d\u0434\u0435\u0440 \u04e9\u04a3\u0434\u0435 \u043e\u0439\u043d\u0430\u0442\u044b\u043b\u0430\u0434\u044b.", - "LabelEnableBackdropsHelp": "\u0415\u0433\u0435\u0440 \u049b\u043e\u0441\u044b\u043b\u0441\u0430, \u0430\u0440\u0442\u049b\u044b \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043d\u044b \u0448\u043e\u043b\u044b\u0493\u0430\u043d\u0434\u0430 \u043a\u0435\u0439\u0431\u0456\u0440 \u0431\u0435\u0442\u0442\u0435\u0440\u0434\u0435 \u04e9\u04a3\u0434\u0435 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u043d\u0435\u0434\u0456.", + "LabelEnableThemeSongsHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043d\u044b \u0448\u043e\u043b\u0443 \u043a\u0435\u0437\u0456\u043d\u0434\u0435 \u0442\u0430\u049b\u044b\u0440\u044b\u043f\u0442\u044b\u049b \u04d9\u0443\u0435\u043d\u0434\u0435\u0440 \u04e9\u04a3\u0434\u0435 \u043e\u0439\u043d\u0430\u0442\u044b\u043b\u0430\u0434\u044b.", + "LabelEnableBackdropsHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u0430\u0440\u0442\u049b\u044b \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043d\u044b \u0448\u043e\u043b\u0443 \u043a\u0435\u0437\u0456\u043d\u0434\u0435 \u043a\u0435\u0439\u0431\u0456\u0440 \u0431\u0435\u0442\u0442\u0435\u0440\u0434\u0435 \u04e9\u04a3\u0434\u0435 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u043d\u0435\u0434\u0456.", "HeaderHomePage": "\u0411\u0430\u0441\u0442\u044b \u0431\u0435\u0442", "HeaderSettingsForThisDevice": "\u041e\u0441\u044b \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u0493\u0430 \u0430\u0440\u043d\u0430\u043b\u0493\u0430\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440", "OptionAuto": "\u0410\u0432\u0442\u043e", @@ -494,7 +904,7 @@ "HeaderLiveTv": "\u042d\u0444\u0438\u0440\u043b\u0456\u043a \u0422\u0414", "HeaderReports": "\u0411\u0430\u044f\u043d\u0430\u0442\u0442\u0430\u0440", "HeaderMetadataManager": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a \u0440\u0435\u0442\u0442\u0435\u0443\u0448\u0456", - "HeaderPreferences": "\u0422\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440", + "HeaderSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440", "MessageLoadingChannels": "\u0410\u0440\u043d\u0430\u043d\u044b\u04a3 \u043c\u0430\u0437\u043c\u04b1\u043d\u044b\u043d \u0436\u04af\u043a\u0442\u0435\u0443\u0434\u0435...", "MessageLoadingContent": "\u041c\u0430\u0437\u043c\u04b1\u043d \u0436\u04af\u043a\u0442\u0435\u043b\u0443\u0434\u0435...", "ButtonMarkRead": "\u041e\u049b\u044b\u043b\u0493\u0430\u043d \u0434\u0435\u043f \u0431\u0435\u043b\u0433\u0456\u043b\u0435\u0443", @@ -580,7 +990,7 @@ "LabelKodiMetadataEnablePathSubstitutionHelp": "\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456\u04a3 \u0436\u043e\u043b \u0430\u043b\u043c\u0430\u0441\u0442\u044b\u0440\u0443 \u0442\u0435\u04a3\u0448\u0435\u0443\u0456\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043f \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0434\u0456\u04a3 \u0436\u043e\u043b \u0430\u043b\u043c\u0430\u0441\u0442\u044b\u0440\u0443\u044b\u043d \u049b\u043e\u0441\u0430\u0434\u044b.", "LabelKodiMetadataEnablePathSubstitutionHelp2": "\u0416\u043e\u043b \u0430\u043b\u043c\u0430\u0441\u0442\u044b\u0440\u0443\u0434\u044b \u049b\u0430\u0440\u0430\u0443.", "LabelGroupChannelsIntoViews": "\u041c\u0435\u043d\u0456\u04a3 \u0430\u0441\u043f\u0435\u043a\u0442\u0442\u0435\u0440\u0456\u043c\u0434\u0435 \u0442\u0456\u043a\u0435\u043b\u0435\u0439 \u043a\u0435\u043b\u0435\u0441\u0456 \u0430\u0440\u043d\u0430\u043b\u0430\u0440\u0434\u044b \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443:", - "LabelGroupChannelsIntoViewsHelp": "\u0415\u0433\u0435\u0440 \u049b\u043e\u0441\u044b\u043b\u0441\u0430, \u043e\u0441\u044b \u0430\u0440\u043d\u0430\u043b\u0430\u0440 \u0431\u0430\u0441\u049b\u0430 \u0430\u0441\u043f\u0435\u043a\u0442\u0442\u0435\u0440\u043c\u0435\u043d \u049b\u0430\u0442\u0430\u0440 \u0442\u0456\u043a\u0435\u043b\u0435\u0439 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u043d\u0435\u0434\u0456. \u0415\u0433\u0435\u0440 \u0430\u0436\u044b\u0440\u0430\u0442\u044b\u043b\u0441\u0430, \u043e\u043b\u0430\u0440 \u0431\u04e9\u043b\u0435\u043a \u0410\u0440\u043d\u0430\u043b\u0430\u0440 \u043a\u04e9\u0440\u0456\u043d\u0456\u0441\u0456\u043d\u0434\u0435 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u043d\u0435\u0434\u0456.", + "LabelGroupChannelsIntoViewsHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u043e\u0441\u044b \u0430\u0440\u043d\u0430\u043b\u0430\u0440 \u0431\u0430\u0441\u049b\u0430 \u0430\u0441\u043f\u0435\u043a\u0442\u0442\u0435\u0440\u043c\u0435\u043d \u049b\u0430\u0442\u0430\u0440 \u0442\u0456\u043a\u0435\u043b\u0435\u0439 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u043d\u0435\u0434\u0456. \u0415\u0433\u0435\u0440 \u0430\u0436\u044b\u0440\u0430\u0442\u044b\u043b\u0441\u0430, \u043e\u043b\u0430\u0440 \u0431\u04e9\u043b\u0435\u043a \u0410\u0440\u043d\u0430\u043b\u0430\u0440 \u043a\u04e9\u0440\u0456\u043d\u0456\u0441\u0456\u043d\u0434\u0435 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u043d\u0435\u0434\u0456.", "LabelDisplayCollectionsView": "\u0424\u0438\u043b\u044c\u043c\u0434\u0435\u0440 \u0436\u0438\u043d\u0430\u049b\u0442\u0430\u0440\u044b\u043d \u043a\u04e9\u0440\u0441\u0435\u0442\u0443 \u04af\u0448\u0456\u043d \u0416\u0438\u044b\u043d\u0442\u044b\u049b\u0442\u0430\u0440 \u0430\u0441\u043f\u0435\u043a\u0442\u0456\u043d \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443", "LabelDisplayCollectionsViewHelp": "\u0411\u04b1\u043b \u0441\u0456\u0437 \u0436\u0430\u0441\u0430\u0493\u0430\u043d \u043d\u0435\u043c\u0435\u0441\u0435 \u049b\u0430\u0442\u044b\u043d\u0430\u0443 \u043c\u04af\u043c\u043a\u0456\u043d \u0436\u0438\u044b\u043d\u0442\u044b\u049b\u0442\u0430\u0440\u0434\u044b \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443 \u04af\u0448\u0456\u043d \u0431\u04e9\u043b\u0435\u043a \u0430\u0441\u043f\u0435\u043a\u0442\u0442\u0456 \u0436\u0430\u0441\u0430\u0439\u0434\u044b. \u0416\u0438\u044b\u043d\u0442\u044b\u049b\u0442\u044b \u0436\u0430\u0441\u0430\u0443 \u04af\u0448\u0456\u043d, \u043a\u0435\u0437 \u043a\u0435\u043b\u0433\u0435\u043d \u0444\u0438\u043b\u044c\u043c\u043d\u0456\u04a3 \u04af\u0441\u0442\u0456\u043d\u0434\u0435 \u0442\u0456\u043d\u0442\u0443\u0456\u0440\u0434\u0456\u04a3 \u043e\u04a3 \u0436\u0430\u049b \u0442\u04af\u0439\u043c\u0435\u0448\u0456\u0433\u043d \u0431\u0430\u0441\u044b\u04a3\u044b\u0437 \u043d\u0435\u043c\u0435\u0441\u0435 \u0442\u04af\u0440\u0442\u0456\u04a3\u0456\u0437 \u0434\u0435 \u04b1\u0441\u0442\u0430\u043f \u0442\u04b1\u0440\u044b\u04a3\u044b\u0437 \u0436\u04d9\u043d\u0435 \"\u0416\u0438\u044b\u043d\u0442\u044b\u049b\u049b\u0430 \u04af\u0441\u0442\u0435\u0443\" \u0434\u0435\u0433\u0435\u043d\u0434\u0456 \u0442\u0430\u04a3\u0434\u0430\u04a3\u044b\u0437.", "LabelKodiMetadataEnableExtraThumbs": "\u04d8\u0434\u0435\u043f\u043a\u0456 extrafanart \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456\u043d extrathumbs \u0456\u0448\u0456\u043d\u0435 \u043a\u04e9\u0448\u0456\u0440\u0443", @@ -692,7 +1102,6 @@ "OptionReportArtists": "\u041e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440", "OptionReportAlbums": "\u0410\u043b\u044c\u0431\u043e\u043c\u0434\u0430\u0440", "OptionReportAdultVideos": "\u0415\u0440\u0435\u0441\u0435\u043a \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440\u0456", - "ButtonMore": "\u041a\u04e9\u0431\u0456\u0440\u0435\u043a", "HeaderActivity": "\u04d8\u0440\u0435\u043a\u0435\u0442\u0442\u0435\u0440", "ScheduledTaskStartedWithName": "{0} \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0434\u044b", "ScheduledTaskCancelledWithName": "{0} \u0431\u043e\u043b\u0434\u044b\u0440\u044b\u043b\u043c\u0430\u0434\u044b", @@ -742,7 +1151,7 @@ "LabelEasyPinCode": "\u041e\u04a3\u0430\u0439\u0442\u044b\u043b\u0493\u0430\u043d PIN-\u043a\u043e\u0434:", "EasyPasswordHelp": "\u041e\u04a3\u0430\u0439\u0442\u044b\u043b\u0493\u0430\u043d PIN-\u043a\u043e\u0434\u044b\u04a3\u044b\u0437 \u049b\u043e\u043b\u0434\u0430\u0443\u0434\u0430\u0493\u044b Emby \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u043b\u0430\u0440\u044b\u043d\u0430\u043d \u0434\u0435\u0440\u0431\u0435\u0441 \u049b\u0430\u0442\u044b\u043d\u0430\u0443 \u04af\u0448\u0456\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043b\u0430\u0434\u044b, \u0436\u04d9\u043d\u0435 \u0436\u0435\u043b\u0456 \u0456\u0448\u0456\u043d\u0434\u0435 \u043e\u04a3\u0430\u0439\u0442\u044b\u043b\u044b\u043f \u043a\u0456\u0440\u0443 \u04af\u0448\u0456\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d.", "LabelInNetworkSignInWithEasyPassword": "\u041e\u04a3\u0430\u0439\u0442\u044b\u043b\u0493\u0430\u043d PIN-\u043a\u043e\u0434\u044b\u043c \u0430\u0440\u049b\u044b\u043b\u044b \u0436\u0435\u043b\u0456 \u0456\u0448\u0456\u043d\u0434\u0435 \u043e\u04a3\u0430\u0439\u0442\u044b\u043b\u044b\u043f \u043a\u0456\u0440\u0443\u0434\u0456 \u049b\u043e\u0441\u0443", - "LabelInNetworkSignInWithEasyPasswordHelp": "\u0415\u0433\u0435\u0440 \u049b\u043e\u0441\u044b\u043b\u0441\u0430, \u04af\u0439 \u0436\u0435\u043b\u0456\u0441\u0456 \u0456\u0448\u0456\u043d\u0435\u043d Emby \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u043b\u0430\u0440\u044b\u043d\u0430 \u043a\u0456\u0440\u0443 \u04af\u0448\u0456\u043d \u043e\u04a3\u0430\u0439\u0442\u044b\u043b\u0493\u0430\u043d PIN-\u043a\u043e\u0434\u044b\u04a3\u044b\u0437\u0434\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u044b\u04a3\u044b\u0437 \u043c\u04af\u043c\u043a\u0456\u043d. \u0421\u0456\u0437\u0434\u0456\u04a3 \u049b\u0430\u043b\u044b\u043f\u0442\u044b \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0456\u04a3\u0456\u0437 \u0442\u0435\u043a \u049b\u0430\u043d\u0430 \u04af\u0439 \u0441\u044b\u0440\u0442\u044b\u043d\u0434\u0430 \u049b\u0430\u0436\u0435\u0442 \u0431\u043e\u043b\u0430\u0434\u044b. \u0415\u0433\u0435\u0440 PIN-\u043a\u043e\u0434 \u0431\u043e\u0441 \u049b\u0430\u043b\u0434\u044b\u0440\u044b\u043b\u0441\u0430, \u04af\u0439 \u0436\u0435\u043b\u0456\u0441\u0456\u043d\u0434\u0435 \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0456\u04a3\u0456\u0437 \u049b\u0430\u0436\u0435\u0442 \u0431\u043e\u043b\u043c\u0430\u0439\u0434\u044b.", + "LabelInNetworkSignInWithEasyPasswordHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u04af\u0439 \u0436\u0435\u043b\u0456\u0441\u0456 \u0456\u0448\u0456\u043d\u0435\u043d Emby \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u043b\u0430\u0440\u044b\u043d\u0430 \u043a\u0456\u0440\u0443 \u04af\u0448\u0456\u043d \u043e\u04a3\u0430\u0439\u0442\u044b\u043b\u0493\u0430\u043d PIN-\u043a\u043e\u0434\u044b\u04a3\u044b\u0437\u0434\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u044b\u04a3\u044b\u0437 \u043c\u04af\u043c\u043a\u0456\u043d. \u0421\u0456\u0437\u0434\u0456\u04a3 \u049b\u0430\u043b\u044b\u043f\u0442\u044b \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0456\u04a3\u0456\u0437 \u0442\u0435\u043a \u049b\u0430\u043d\u0430 \u04af\u0439 \u0441\u044b\u0440\u0442\u044b\u043d\u0434\u0430 \u049b\u0430\u0436\u0435\u0442 \u0431\u043e\u043b\u0430\u0434\u044b. \u0415\u0433\u0435\u0440 PIN-\u043a\u043e\u0434 \u0431\u043e\u0441 \u049b\u0430\u043b\u0434\u044b\u0440\u044b\u043b\u0441\u0430, \u04af\u0439 \u0436\u0435\u043b\u0456\u0441\u0456\u043d\u0434\u0435 \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0456\u04a3\u0456\u0437 \u049b\u0430\u0436\u0435\u0442 \u0431\u043e\u043b\u043c\u0430\u0439\u0434\u044b.", "HeaderPassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437", "HeaderLocalAccess": "\u0416\u0435\u0440\u0433\u0456\u043b\u0456\u043a\u0442\u0456 \u049b\u0430\u0442\u044b\u043d\u0430\u0443", "HeaderViewOrder": "\u0410\u0441\u043f\u0435\u043a\u0442\u0442\u0435\u0440 \u0440\u0435\u0442\u0456", @@ -801,7 +1210,7 @@ "LabelAirsBeforeEpisode": "\"Airs after\" \u0431\u04e9\u043b\u0456\u043c\u0456", "LabelTreatImageAs": "\u041a\u0435\u0441\u043a\u0456\u043d \u049b\u0430\u0440\u0430\u0441\u0442\u044b\u0440\u0443\u044b:", "LabelDisplayOrder": "\u0411\u0435\u0439\u043d\u0435\u043b\u0435\u0443 \u0440\u0435\u0442\u0456:", - "LabelDisplaySpecialsWithinSeasons": "\u0410\u0440\u043d\u0430\u0439\u044b\u043b\u0430\u0440\u0434\u044b \u044d\u0444\u0438\u0440\u0434\u0435 \u0431\u043e\u043b\u0493\u0430\u043d \u043c\u0430\u0443\u0441\u044b\u043c \u0456\u0448\u0456\u043d\u0434\u0435 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443", + "LabelDisplaySpecialsWithinSeasons": "\u0410\u0440\u043d\u0430\u0439\u044b \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u044d\u0444\u0438\u0440\u0434\u0435 \u0431\u043e\u043b\u0493\u0430\u043d \u043c\u0430\u0443\u0441\u044b\u043c \u0456\u0448\u0456\u043d\u0434\u0435 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443", "HeaderCountries": "\u0415\u043b\u0434\u0435\u0440", "HeaderGenres": "\u0416\u0430\u043d\u0440\u043b\u0430\u0440", "HeaderPlotKeywords": "\u0421\u044e\u0436\u0435\u0442\u0442\u0456\u043d \u043a\u0456\u043b\u0442 \u0441\u04e9\u0437\u0434\u0435\u0440\u0456", @@ -822,6 +1231,7 @@ "OptionNoThemeVideo": "\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0442\u044b\u049b \u0431\u0435\u0439\u043d\u0435\u0441\u0456\u0437", "LabelOneTimeDonationAmount": "\u049a\u0430\u0439\u044b\u0440\u043c\u0430\u043b\u0434\u044b\u049b \u049b\u043e\u0440\u044b\u0442\u044b\u043d\u0434\u044b\u0441\u044b:", "ButtonDonate": "\u049a\u0430\u0439\u044b\u0440\u043c\u0430\u043b\u0430\u0443", + "ButtonPurchase": "\u0421\u0430\u0442\u044b\u043f \u0430\u043b\u0443", "OptionActor": "\u0410\u043a\u0442\u0435\u0440", "OptionComposer": "\u041a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043e\u0440", "OptionDirector": "\u0420\u0435\u0436\u0438\u0441\u0441\u0435\u0440", @@ -841,7 +1251,6 @@ "HeaderDeveloperInfo": "\u0416\u0430\u0441\u0430\u049b\u0442\u0430\u0443\u0448\u044b\u043b\u0430\u0440 \u0442\u0443\u0440\u0430\u043b\u044b", "HeaderRevisionHistory": "\u04e8\u0437\u0433\u0435\u0440\u0456\u0441\u0442\u0435\u0440 \u0442\u0430\u0440\u0438\u0445\u044b", "ButtonViewWebsite": "\u0421\u0430\u0439\u0442\u044b\u043d\u0430", - "LabelRecurringDonationCanBeCancelledHelp": "\u049a\u0430\u0439\u0442\u0430\u043b\u0430\u043c\u0430 \u049b\u0430\u0439\u044b\u0440\u043c\u0430\u043b\u0434\u044b\u049b\u0442\u0430\u0440 PayPal \u0435\u0441\u0435\u043f \u0448\u043e\u0442\u044b \u0430\u0440\u049b\u044b\u043b\u044b \u04d9\u0440 \u0443\u0430\u049b\u044b\u0442\u0442\u0430 \u0434\u0430 \u0431\u043e\u043b\u0434\u044b\u0440\u044b\u043b\u043c\u0430\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d.", "HeaderXmlSettings": "XML \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456", "HeaderXmlDocumentAttributes": "XML-\u049b\u04b1\u0436\u0430\u0442 \u0442\u04e9\u043b\u0441\u0438\u043f\u0430\u0442\u0442\u0430\u0440\u044b", "HeaderXmlDocumentAttribute": "XML-\u049b\u04b1\u0436\u0430\u0442 \u0442\u04e9\u043b\u0441\u0438\u043f\u0430\u0442\u044b", @@ -855,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Emby Connect \u0442\u0443\u0440\u0430\u043b\u044b \u043a\u04e9\u0431\u0456\u0440\u0435\u043a \u0431\u0456\u043b\u0443", "LabelExternalPlayers": "\u0421\u044b\u0440\u0442\u049b\u044b \u043e\u0439\u043d\u0430\u0442\u049b\u044b\u0448\u0442\u0430\u0440:", "LabelExternalPlayersHelp": "\u0421\u044b\u0440\u0442\u049b\u044b \u043e\u0439\u043d\u0430\u0442\u049b\u044b\u0448\u0442\u0430\u0440\u0434\u0430 \u043c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b \u043e\u0439\u043d\u0430\u0442\u0443 \u04af\u0448\u0456\u043d \u0442\u04af\u0439\u043c\u0435\u0448\u0456\u043a\u0442\u0435\u0440\u0434\u0456 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443. \u0411\u04b1\u043b \u0442\u0435\u043a \u049b\u0430\u043d\u0430 URL \u0441\u0445\u0435\u043c\u0430\u043b\u0430\u0440\u044b\u043d \u049b\u043e\u043b\u0434\u0430\u0439\u0442\u044b\u043d, \u04d9\u0434\u0435\u0442\u0442\u0435, Android \u0436\u04d9\u043d\u0435 iOS, \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440\u0434\u0430 \u049b\u043e\u043b \u0436\u0435\u0442\u0456\u043c\u0434\u0456. \u0421\u044b\u0440\u0442\u049b\u044b \u043e\u0439\u043d\u0430\u0442\u049b\u044b\u0448\u0442\u0430\u0440, \u049b\u0430\u0493\u0438\u0434\u0430 \u0431\u043e\u0439\u044b\u043d\u0448\u0430, \u0430\u043b\u044b\u0441\u0442\u0430\u043d \u0431\u0430\u0441\u049b\u0430\u0440\u0443\u0434\u044b \u0436\u04d9\u043d\u0435 \u0436\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u0443\u0434\u044b \u049b\u043e\u043b\u0434\u0430\u043c\u0430\u0439\u0434\u044b.", + "LabelNativeExternalPlayersHelp": "\u041c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b \u0441\u044b\u0440\u0442\u049b\u044b \u043e\u0439\u043d\u0430\u0442\u049b\u044b\u0448\u0442\u0430\u0440\u043c\u0435\u043d \u043e\u0439\u043d\u0430\u0442\u0443\u0493\u0430 \u0430\u0440\u043d\u0430\u043b\u0493\u0430\u043d \u0442\u04af\u0439\u043c\u0435\u0448\u0456\u043a\u0442\u0435\u0440\u0434\u0456 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443.", + "LabelEnableItemPreviews": "\u0422\u0430\u0440\u043c\u0430\u049b \u043d\u043e\u0431\u0430\u0439\u043b\u0430\u0440\u044b\u043d \u049b\u043e\u0441\u0443", + "LabelEnableItemPreviewsHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u049b\u0430\u0439\u0441\u044b\u0431\u0456\u0440 \u044d\u043a\u0440\u0430\u043d\u0434\u0430\u0440\u0434\u0430 \u0442\u0430\u0440\u043c\u0430\u049b\u0442\u0430\u0440\u0434\u044b \u043d\u04b1\u049b\u044b\u0493\u0430\u043d \u043a\u0435\u0437\u0456\u043d\u0434\u0435 \u0441\u044b\u0440\u0493\u044b\u043c\u0430\u043b\u044b \u043d\u043e\u0431\u0430\u0439\u043b\u0430\u0440 \u0448\u044b\u0493\u0430 \u043a\u0435\u043b\u0435\u0434\u0456.", "HeaderSubtitleProfile": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u044b", "HeaderSubtitleProfiles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b", "HeaderSubtitleProfilesHelp": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u044b \u043e\u0441\u044b \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u0434\u0430 \u049b\u043e\u043b\u0434\u0430\u0443\u044b \u0431\u0430\u0440 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u043f\u0456\u0448\u0456\u043c\u0434\u0435\u0440\u0456\u043d \u0441\u0438\u043f\u0430\u0442\u0442\u0430\u0439\u0434\u044b.", @@ -938,7 +1350,7 @@ "ButtonSignUp": "\u0422\u0456\u0440\u043a\u0435\u043b\u0443", "ButtonForgotPassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0456 \u0435\u0441\u043a\u0435 \u0441\u0430\u043b\u0443", "OptionDisableUserPreferences": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u043d\u0435 \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u0434\u044b \u0430\u0436\u044b\u0440\u0430\u0442\u0443", - "OptionDisableUserPreferencesHelp": "\u0415\u0433\u0435\u0440 \u049b\u043e\u0441\u044b\u043b\u0441\u0430, \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u044b\u043d, \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456\u043d, \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0435\u0440\u0456\u043d \u0436\u04d9\u043d\u0435 \u0442\u0456\u043b\u0434\u0456\u043a \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u043d \u0442\u0435\u043a \u049b\u0430\u043d\u0430 \u04d9\u043a\u0456\u043c\u0448\u0456\u043b\u0435\u0440 \u0442\u0435\u04a3\u0448\u0435\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d.", + "OptionDisableUserPreferencesHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u044b\u043d, \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456\u043d, \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0435\u0440\u0456\u043d \u0436\u04d9\u043d\u0435 \u0442\u0456\u043b\u0434\u0456\u043a \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u043d \u0442\u0435\u043a \u049b\u0430\u043d\u0430 \u04d9\u043a\u0456\u043c\u0448\u0456\u043b\u0435\u0440 \u0442\u0435\u04a3\u0448\u0435\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d.", "HeaderSelectServer": "\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u0442\u0430\u04a3\u0434\u0430\u0443", "MessageNoServersAvailableToConnect": "\u049a\u043e\u0441\u044b\u043b\u0443 \u04af\u0448\u0456\u043d \u0435\u0448\u049b\u0430\u043d\u0434\u0430\u0439 \u0441\u0435\u0440\u0432\u0435\u0440\u043b\u0435\u0440 \u049b\u043e\u043b \u0436\u0435\u0442\u0456\u043c\u0434\u0456 \u0435\u043c\u0435\u0441. \u0415\u0433\u0435\u0440 \u0441\u0435\u0440\u0432\u0435\u0440\u043c\u0435\u043d \u043e\u0440\u0442\u0430\u049b\u0442\u0430\u0441\u0443\u0493\u0430 \u0448\u0430\u049b\u044b\u0440\u044b\u043b\u0441\u0430\u04a3\u044b\u0437, \u049b\u0430\u0431\u044b\u043b\u0434\u0430\u0443\u044b\u043d \u0442\u04e9\u043c\u0435\u043d\u0434\u0435 \u043d\u0435\u043c\u0435\u0441\u0435 \u044d-\u043f\u043e\u0448\u0442\u0430\u0434\u0430\u0493\u044b \u0441\u0456\u043b\u0442\u0435\u043c\u0435\u043d\u0456 \u043d\u04b1\u049b\u044b\u043f \u043d\u0430\u049b\u0442\u044b\u043b\u0430\u04a3\u044b\u0437.", "TitleNewUser": "\u0416\u0430\u04a3\u0430 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b", @@ -983,7 +1395,7 @@ "HeaderUpcomingMovies": "\u041a\u04af\u0442\u0456\u043b\u0433\u0435\u043d \u0444\u0438\u043b\u044c\u043c\u0434\u0435\u0440", "HeaderUpcomingSports": "\u041a\u04af\u0442\u0456\u043b\u0433\u0435\u043d \u0441\u043f\u043e\u0440\u0442", "HeaderUpcomingPrograms": "\u041a\u04af\u0442\u0456\u043b\u0433\u0435\u043d \u0431\u0435\u0440\u043b\u0456\u043c\u0434\u0435\u0440", - "ButtonMoreItems": "\u041a\u04e9\u0431\u0456\u0440\u0435\u043a...", + "ButtonMoreItems": "\u041a\u04e9\u0431\u0456\u0440\u0435\u043a", "LabelShowLibraryTileNames": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430 \u0442\u0430\u049b\u0442\u0430\u0439\u0448\u0430\u043b\u0430\u0440\u044b\u043d\u044b\u04a3 \u0430\u0442\u0430\u0443\u043b\u0430\u0440\u044b\u043d \u043a\u04e9\u0440\u0441\u0435\u0442\u0443", "LabelShowLibraryTileNamesHelp": "\u0411\u0430\u0441\u0442\u044b \u0431\u0435\u0442\u0442\u0435 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430 \u0442\u0430\u049b\u0442\u0430\u0439\u0448\u0430\u043b\u0430\u0440\u044b \u0430\u0441\u0442\u044b\u043d\u0434\u0430 \u0436\u0430\u0437\u0443\u043b\u0430\u0440 \u043a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u0435 \u043c\u0435 \u0435\u043a\u0435\u043d\u0456 \u0430\u043d\u044b\u049b\u0442\u0430\u043b\u0430\u0434\u044b.", "OptionEnableTranscodingThrottle": "\u0420\u0435\u0442\u0442\u0435\u0443\u0434\u0456 \u049b\u043e\u0441\u0443", @@ -1002,436 +1414,41 @@ "OptionEnableFullSpeedConversion": "\u0422\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0443\u0434\u0456\u04a3 \u0442\u043e\u043b\u044b\u049b \u0436\u044b\u043b\u0434\u0430\u043c\u043b\u044b\u0493\u044b\u043d \u049b\u043e\u0441\u0443", "OptionEnableFullSpeedConversionHelp": "\u0420\u0435\u0441\u0443\u0440\u0441\u0442\u0430\u0440 \u0442\u04b1\u0442\u044b\u043d\u0443\u0434\u044b \u0431\u0430\u0440\u044b\u043d\u0448\u0430 \u0430\u0437\u0430\u0439\u0442\u0443 \u04af\u0448\u0456\u043d \u04af\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443\u043b\u0456\u043a \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0443 \u04d9\u0434\u0435\u043f\u043a\u0456\u0434\u0435 \u0442\u04e9\u043c\u0435\u043d \u0436\u044b\u043b\u0434\u0430\u043c\u0434\u044b\u049b\u043f\u0435\u043d \u043e\u0440\u044b\u043d\u0434\u0430\u043b\u0430\u0434\u044b.", "HeaderPlaylists": "\u041e\u0439\u043d\u0430\u0442\u0443 \u0442\u0456\u0437\u0456\u043c\u0434\u0435\u0440", - "HeaderSelectDate": "\u041a\u04af\u043d\u0434\u0456 \u0442\u0430\u04a3\u0434\u0430\u0443", - "HeaderWelcomeExclamation": "\u049a\u043e\u0448 \u043a\u0435\u043b\u0434\u0456\u04a3\u0456\u0437!", - "HeaderMyPreferences": "\u041c\u0435\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u043c", - "ButtonMyPreferencesWelcomeYes": "\u0418\u04d9, \u043c\u0435\u043d \u0435\u043d\u0434\u0456 \u043c\u0435\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u043c\u0434\u0456 \u043e\u0440\u043d\u0430\u0442\u0443\u044b\u043d \u049b\u0430\u043b\u0430\u0439\u043c\u044b\u043d.", - "ButtonMyPreferencesWelcomeNo": "\u0416\u043e\u049b, \u0440\u0430\u0445\u043c\u0435\u0442, \u043c\u0435\u043d \u043e\u043d\u044b \u043a\u0435\u0439\u0456\u043d\u0456\u0440\u0435\u043a \u0456\u0441\u0442\u0435\u0439\u043c\u0456\u043d.", - "MyPreferencesWelcomeMessage1": "\u0421\u0456\u0437 \u049b\u0430\u043b\u0430\u0439 \u0442\u0430\u043c\u0430\u0448\u0430\u043b\u0430\u0439\u0442\u044b\u043d\u044b\u043d \u043e\u0439\u043b\u0430\u0441\u0442\u044b\u0440\u044b\u043f \u0441\u0456\u0437\u0434\u0456\u04a3 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u04a3\u044b\u0437\u0434\u044b \u043a\u04e9\u0440\u0441\u0435\u0442\u0442\u0456\u043c\u0456\u0437. \u0422\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u04a3\u0456\u0437\u0434\u0456 \u0440\u0435\u0442\u0442\u0435\u0443 \u0430\u0440\u049b\u044b\u043b\u044b \u043c\u0430\u0437\u043c\u04b1\u043d \u0431\u0435\u0437\u0435\u043d\u0434\u0456\u0440\u0443\u0456 \u043c\u0435\u043d \u0442\u043e\u043f\u0442\u0430\u0441\u0442\u044b\u0440\u0443\u044b \u043a\u0435\u0437 \u043a\u0435\u043b\u0433\u0435\u043d \u0443\u0430\u049b\u044b\u0442\u0442\u0430 \u04e9\u0437\u0433\u0435\u0440\u0442\u0456\u043b\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d. \u0421\u0456\u0437\u0434\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u04a3\u0456\u0437 \u0431\u0430\u0440\u043b\u044b\u049b Emby \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u043b\u0430\u0440\u044b\u043d\u0434\u0430 \u049b\u043e\u043b\u0434\u0430\u043d\u044b\u043b\u0430\u0434\u044b.", - "MyPreferencesWelcomeMessage2": "\u0421\u0456\u0437 \u0435\u043d\u0434\u0456 \u04e9\u0437 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u043d\u0456\u0437\u0434\u0456 \u043e\u0440\u043d\u0430\u0442\u0443\u044b\u043d \u049b\u0430\u043b\u0430\u0439\u0441\u044b\u0437 \u0431\u0430?", - "ToAccessPreferencesHelp": "\u0422\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u04a3\u0456\u0437\u0433\u0435 \u043a\u0435\u0439\u0456\u043d\u0456\u0440\u0435\u043a \u049b\u0430\u0442\u044b\u043d\u0430\u0443 \u04af\u0448\u0456\u043d, \u04af\u0441\u0442\u0456\u04a3\u0433\u0456 \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u043c\u0435\u0441\u0456 \u043e\u04a3 \u0436\u0430\u0493\u044b\u043d\u0434\u0430\u0493\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0431\u0435\u043b\u0433\u0456\u0448\u0435\u0441\u0456\u043d \u0431\u0430\u0441\u044b\u04a3\u044b\u0437 \u0436\u04d9\u043d\u0435 \u041c\u0435\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u043c\u0434\u0456 \u0442\u0430\u04a3\u0434\u0430\u04a3\u044b\u0437.", "HeaderViewStyles": "\u0410\u0441\u043f\u0435\u043a\u0442 \u043c\u04d9\u043d\u0435\u0440\u043b\u0435\u0440\u0456", - "LabelSelectViewStyles": "Enable enhanced presentations for:", - "LabelSelectViewStylesHelp": "\u049a\u043e\u0441\u044b\u043b\u0441\u0430, \u043c\u04b1\u043d\u0434\u0430\u0439 \u04b0\u0441\u044b\u043d\u044b\u0441\u0442\u0430\u0440, \u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456, \u0416\u0430\u043d\u0440\u043b\u0430\u0440\u0434\u044b \u0436\u04d9\u043d\u0435 \u0431\u0430\u0441\u049b\u0430 \u0434\u0430 \u0441\u0430\u043d\u0430\u0442\u0442\u0430\u0440\u044b\u043d \u04b1\u0441\u044b\u043d\u0443 \u04af\u0448\u0456\u043d \u0430\u0441\u043f\u0435\u043a\u0442\u0442\u0435\u0440 \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u0430\u0440\u049b\u044b\u043b\u044b \u049b\u04b1\u0440\u044b\u043b\u0430\u0434\u044b. \u0410\u0436\u044b\u0440\u0430\u0442\u044b\u043b\u0441\u0430, \u043e\u043b\u0430\u0440 \u049b\u0430\u0440\u0430\u043f\u0430\u0439\u044b\u043c \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440 \u0430\u0440\u049b\u044b\u043b\u044b \u043a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u0435\u0434\u0456.", - "TabPhotos": "Photos", - "TabVideos": "Videos", - "HeaderWelcomeToEmby": "Welcome to Emby", - "EmbyIntroMessage": "With Emby you can easily stream videos, music and photos to smart phones, tablets and other devices from your Emby Server.", - "ButtonSkip": "Skip", - "TextConnectToServerManually": "Connect to server manually", - "ButtonSignInWithConnect": "Sign in with Emby Connect", - "ButtonConnect": "Connect", - "LabelServerHost": "Host:", - "LabelServerHostHelp": "192.168.1.100 or https:\/\/myserver.com", - "LabelServerPort": "Port:", - "HeaderNewServer": "New Server", - "ButtonChangeServer": "Change Server", - "HeaderConnectToServer": "Connect to Server", - "LabelExit": "\u0428\u044b\u0493\u0443", - "LabelVisitCommunity": "\u049a\u0430\u0443\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u049b\u049b\u0430 \u0431\u0430\u0440\u0443", - "LabelGithub": "GitHub \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439\u0456", - "LabelSwagger": "Swagger \u0442\u0456\u043b\u0434\u0435\u0441\u0443\u0456", - "LabelStandard": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0442\u044b", - "LabelApiDocumentation": "API \u049b\u04b1\u0436\u0430\u0442\u0442\u0430\u043c\u0430\u0441\u044b", - "LabelDeveloperResources": "\u0416\u0430\u0441\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u043a\u04e9\u0437\u0434\u0435\u0440\u0456", - "LabelBrowseLibrary": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043d\u044b \u0448\u043e\u043b\u0443", - "LabelConfigureServer": "Emby \u0442\u0435\u04a3\u0448\u0435\u0443", - "LabelOpenLibraryViewer": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043d\u044b \u049b\u0430\u0440\u0430\u0443 \u049b\u04b1\u0440\u0430\u043b\u044b", - "LabelRestartServer": "\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u049b\u0430\u0439\u0442\u0430 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u0443", - "LabelShowLogWindow": "\u0416\u04b1\u0440\u043d\u0430\u043b \u0442\u0435\u0440\u0435\u0437\u0435\u0441\u0456\u043d \u043a\u04e9\u0440\u0441\u0435\u0442\u0443", - "LabelPrevious": "\u0410\u043b\u0434\u044b\u04a3\u0493\u044b", - "LabelFinish": "\u0410\u044f\u049b\u0442\u0430\u0443", - "LabelNext": "\u041a\u0435\u043b\u0435\u0441\u0456", - "LabelYoureDone": "\u0411\u04d9\u0440\u0456 \u0434\u0430\u0439\u044b\u043d!", - "WelcomeToProject": "Emby \u04af\u0448\u0456\u043d \u049b\u043e\u0448 \u043a\u0435\u043b\u0434\u0456\u04a3\u0456\u0437!", - "ThisWizardWillGuideYou": "\u0411\u04b1\u043b \u043a\u043e\u043c\u0435\u043a\u0448\u0456 \u043e\u0440\u043d\u0430\u0442\u0443 \u0436\u04d9\u043d\u0435 \u0442\u0435\u04a3\u0448\u0435\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0456 \u0441\u0430\u0442\u044b\u043b\u0430\u0440\u044b\u043c\u0435\u043d \u04e9\u0442\u043a\u0456\u0437\u0435\u0434\u0456. \u0411\u0430\u0441\u0442\u0430\u0443 \u04af\u0448\u0456\u043d \u04e9\u0437\u0456\u04a3\u0456\u0437\u0433\u0435 \u0442\u0456\u043b \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456\u043d \u0442\u0430\u04a3\u0434\u0430\u04a3\u044b\u0437.", - "TellUsAboutYourself": "\u04e8\u0437\u0456\u04a3\u0456\u0437 \u0442\u0443\u0440\u0430\u043b\u044b \u0430\u0439\u0442\u044b\u04a3\u044b\u0437", - "ButtonQuickStartGuide": "\u0422\u0435\u0437 \u0431\u0430\u0441\u0442\u0430\u0443 \u043d\u04b1\u0441\u049b\u0430\u0443\u043b\u044b\u0493\u044b\u043d\u0430", - "LabelYourFirstName": "\u0410\u0442\u044b\u04a3\u044b\u0437:", - "MoreUsersCanBeAddedLater": "\u041a\u04e9\u0431\u0456\u0440\u0435\u043a \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440\u0434\u044b \u043a\u0435\u0439\u0456\u043d \u0411\u0430\u049b\u044b\u043b\u0430\u0443 \u0442\u0430\u049b\u0442\u0430\u0441\u044b \u0430\u0440\u049b\u044b\u043b\u044b \u04af\u0441\u0442\u0435\u0443\u0456\u04a3\u0456\u0437 \u043c\u04af\u043c\u043a\u0456\u043d.", - "UserProfilesIntro": "Emby \u0456\u0448\u0456\u043d\u0434\u0435 \u04d9\u0440\u049b\u0430\u0439\u0441\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0493\u0430 \u04e9\u0437\u0456\u043d\u0456\u04a3 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456 \u043e\u0439\u043d\u0430\u0442\u0443 \u043a\u04af\u0439\u0456 \u0436\u04d9\u043d\u0435 \u043c\u0430\u0437\u043c\u04b1\u043d \u0431\u0430\u0441\u049b\u0430\u0440\u0443\u044b \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u044b\u049b \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b\u043d\u044b\u04a3 \u043a\u0456\u0440\u0456\u043a\u0442\u0456\u0440\u0456\u043b\u0433\u0435\u043d \u049b\u043e\u043b\u0434\u0430\u0443\u044b \u0431\u0430\u0440.", - "LabelWindowsService": "Windows \u049b\u044b\u0437\u043c\u0435\u0442\u0456", - "AWindowsServiceHasBeenInstalled": "Windows \u049b\u044b\u0437\u043c\u0435\u0442\u0456 \u043e\u0440\u043d\u0430\u0442\u044b\u043b\u0434\u044b.", - "WindowsServiceIntro1": "Emby Server \u04d9\u0434\u0435\u0442\u0442\u0435 \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u0442\u0430\u049b\u0442\u0430\u0434\u0430\u0493\u044b \u0431\u0435\u043b\u0433\u0456\u0448\u0435\u0441\u0456\u043c\u0435\u043d \u0436\u04b1\u043c\u044b\u0441 \u04af\u0441\u0442\u0435\u043b\u0456\u043d\u0456\u04a3 \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u0441\u044b \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u0439\u0434\u0456, \u0431\u0456\u0440\u0430\u049b \u0435\u0433\u0435\u0440 \u043e\u043d\u044b\u04a3 \u0436\u04b1\u043c\u044b\u0441\u044b\u043d \u04e9\u04a3\u0434\u0456\u043a \u049b\u044b\u0437\u043c\u0435\u0442\u0456 \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u04b1\u043d\u0430\u0442\u0441\u0430\u04a3\u044b\u0437, \u043e\u0441\u044b\u043d\u044b\u04a3 \u043e\u0440\u043d\u044b\u043d\u0430 \u0431\u04b1\u043b Windows \u049a\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440 \u0440\u0435\u0442\u0442\u0435\u0443\u0456\u0448\u0456 \u0430\u0440\u049b\u044b\u043b\u044b \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d.", - "WindowsServiceIntro2": "\u0415\u0433\u0435\u0440 Windows \u049b\u044b\u0437\u043c\u0435\u0442\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0434\u0430 \u0431\u043e\u043b\u0441\u0430, \u0435\u0441\u043a\u0435\u0440\u0456\u04a3\u0456\u0437, \u0431\u04b1\u043b \u0441\u043e\u043b \u043c\u0435\u0437\u0433\u0456\u043b\u0434\u0435 \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u0442\u0430\u049b\u0442\u0430\u0434\u0430\u0493\u044b \u0431\u0435\u043b\u0433\u0456\u0448\u0435\u0434\u0435\u0439 \u0436\u04af\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d \u0435\u043c\u0435\u0441, \u0441\u043e\u043d\u044b\u043c\u0435\u043d \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0456 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u0443 \u04af\u0448\u0456\u043d \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u0442\u0430\u049b\u0442\u0430\u0434\u0430\u043d \u0448\u044b\u0493\u0443\u044b\u04a3\u044b\u0437 \u049b\u0430\u0436\u0435\u0442. \u0421\u043e\u0493\u0430\u043d \u049b\u0430\u0442\u0430\u0440, \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0456 \u04d9\u043a\u0456\u043c\u0448\u0456 \u049b\u04b1\u049b\u044b\u049b\u0442\u0430\u0440\u044b\u043d\u0430 \u0438\u0435 \u0431\u043e\u043b\u044b\u043f \u049a\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440 \u0440\u0435\u0442\u0442\u0435\u0443\u0456\u0448\u0456 \u0430\u0440\u049b\u044b\u043b\u044b \u0442\u0435\u04a3\u0448\u0435\u0443 \u049b\u0430\u0436\u0435\u0442. \u041d\u0430\u0437\u0430\u0440 \u0430\u0443\u0434\u0430\u0440\u044b\u04a3\u044b\u0437! \u049a\u0430\u0437\u0456\u0440\u0433\u0456 \u0443\u0430\u049b\u044b\u0442\u0442\u0430 \u0431\u04b1\u043b \u049b\u044b\u0437\u043c\u0435\u0442 \u04e9\u0437\u0456\u043d\u0435\u043d-\u04e9\u0437\u0456 \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u043c\u0430\u0439\u0434\u044b, \u0441\u043e\u043d\u0434\u044b\u049b\u0442\u0430\u043d \u0436\u0430\u04a3\u0430 \u043d\u04b1\u0441\u049b\u0430\u043b\u0430\u0440 \u049b\u043e\u043b\u043c\u0435\u043d \u04e9\u0437\u0430\u0440\u0430 \u04d9\u0440\u0435\u043a\u0435\u0442\u0442\u0435\u0441\u0443\u0434\u0456 \u049b\u0430\u0436\u0435\u0442 \u0435\u0442\u0435\u0434\u0456.", - "WizardCompleted": "\u04d8\u0437\u0456\u0440\u0448\u0435 \u0431\u04b1\u043b \u0431\u0456\u0437\u0433\u0435 \u043a\u0435\u0440\u0435\u0433\u0456\u043d\u0456\u04a3 \u0431\u04d9\u0440\u0456 \u0431\u043e\u043b\u044b\u043f \u0442\u0430\u0431\u044b\u043b\u0430\u0434\u044b. Emby \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u04a3\u044b\u0437 \u0442\u0443\u0440\u0430\u043b\u044b \u043c\u04d9\u043b\u0456\u043c\u0435\u0442\u0442\u0435\u0440\u0434\u0456 \u0436\u0438\u043d\u0430\u0439 \u0431\u0430\u0441\u0442\u0430\u0434\u044b. \u0415\u043d\u0434\u0456 \u043a\u0435\u0439\u0431\u0456\u0440 \u0431\u0456\u0437\u0434\u0456\u04a3 \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u043b\u0430\u0440\u044b\u043c\u044b\u0437\u0431\u0435\u043d \u0442\u0430\u043d\u044b\u0441\u044b\u04a3\u044b\u0437, \u0436\u04d9\u043d\u0435 \u043a\u0435\u0439\u0456\u043d <b>\u0414\u0430\u0439\u044b\u043d<\/b> \u0442\u04af\u0439\u043c\u0435\u0448\u0456\u0433\u0456\u043d \u0431\u0430\u0441\u044b\u04a3\u044b\u0437, \u0441\u043e\u043d\u0434\u0430 <b>\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456\u04a3 \u0411\u0430\u049b\u044b\u043b\u0430\u0443 \u0442\u0430\u049b\u0442\u0430\u0441\u044b<\/b> \u049b\u0430\u0440\u0430\u0443\u0493\u0430 \u0448\u044b\u0493\u044b \u043a\u0435\u043b\u0435\u0434\u0456.", - "LabelConfigureSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0434\u0456 \u0442\u0435\u04a3\u0448\u0435\u0443", - "LabelEnableVideoImageExtraction": "\u0411\u0435\u0439\u043d\u0435 \u0441\u0443\u0440\u0435\u0442\u0456\u043d \u0448\u044b\u0493\u0430\u0440\u044b\u043f \u0430\u043b\u0443\u0434\u044b \u049b\u043e\u0441\u0443", - "VideoImageExtractionHelp": "\u04d8\u043b\u0456 \u0434\u0435 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456 \u0436\u043e\u049b, \u0436\u04d9\u043d\u0435 \u043e\u043b\u0430\u0440 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0442\u0435 \u0442\u0430\u0431\u044b\u043b\u043c\u0430\u0493\u0430\u043d \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440 \u04af\u0448\u0456\u043d. \u0411\u04b1\u043b \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043d\u044b\u04a3 \u0431\u0430\u0441\u0442\u0430\u043f\u049b\u044b \u0441\u043a\u0430\u043d\u0435\u0440\u043b\u0435\u0443\u0456 \u04af\u0448\u0456\u043d \u049b\u043e\u0441\u044b\u043c\u0448\u0430 \u0443\u0430\u049b\u044b\u0442 \u04af\u0441\u0442\u0435\u0439\u0434\u0456, \u0431\u0456\u0440\u0430\u049b \u043d\u04d9\u0442\u0438\u0436\u0435\u0441\u0456\u043d\u0434\u0435 \u04b1\u043d\u0430\u043c\u0434\u044b\u043b\u0430\u0443 \u043a\u04e9\u0440\u0441\u0435\u0442\u0456\u043c \u0431\u043e\u043b\u0430\u0434\u044b.", - "LabelEnableChapterImageExtractionForMovies": "\u0424\u0438\u043b\u044c\u043c\u0434\u0435\u0440 \u04af\u0448\u0456\u043d \u0441\u0430\u0445\u043d\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456\u043d \u0448\u044b\u0493\u0430\u0440\u044b\u043f \u0430\u043b\u0443\u0434\u044b \u049b\u043e\u0441\u0443", - "LabelChapterImageExtractionForMoviesHelp": "\u0421\u0430\u0445\u043d\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456\u043d \u0448\u044b\u0493\u0430\u0440\u044b\u043f \u0430\u043b\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0442\u0435\u0440\u0433\u0435 \u0441\u0430\u0445\u043d\u0430 \u0431\u04e9\u043b\u0435\u043a\u0442\u0435\u0443\u0433\u0435 \u0430\u0440\u043d\u0430\u043b\u0493\u0430\u043d \u0441\u044b\u0437\u0431\u0430\u043b\u044b\u049b \u043c\u04d9\u0437\u0456\u0440\u043b\u0435\u0440\u0434\u0456 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0435\u0434\u0456. \u0411\u04b1\u043b \u043f\u0440\u043e\u0446\u0435\u0441 \u0431\u0430\u044f\u0443, \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0434\u044b \u0442\u043e\u0437\u0434\u044b\u0440\u0430\u0442\u044b\u043d \u0436\u04d9\u043d\u0435 \u0431\u0456\u0440\u0430\u0437 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442 \u043a\u0435\u04a3\u0456\u0441\u0442\u0456\u043a\u0442\u0456 \u049b\u0430\u0436\u0435\u0442 \u0435\u0442\u0435\u0442\u0456\u043d \u0431\u043e\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d. \u0411\u04b1\u043b \u0442\u04af\u043d\u0433\u0456 \u0443\u0430\u049b\u044b\u0442\u044b\u043d\u0430 \u0436\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u0430\u043d \u0442\u0430\u043f\u0441\u044b\u0440\u043c\u0430 \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u0439\u0434\u0456, \u0434\u0435\u0433\u0435\u043d\u043c\u0435\u043d \u0431\u04b1\u043b \u0416\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0443\u0448\u044b \u0430\u0439\u043c\u0430\u0493\u044b\u043d\u0434\u0430 \u0442\u0435\u04a3\u0448\u0435\u043b\u0435\u0434\u0456. \u0411\u04b1\u043b \u0442\u0430\u043f\u0441\u044b\u0440\u043c\u0430\u043d\u044b \u049b\u0430\u0440\u0431\u0430\u043b\u0430\u0441 \u0441\u0430\u0493\u0430\u0442\u0442\u0430\u0440\u044b\u043d\u0434\u0430 \u043e\u0440\u044b\u043d\u0434\u0430\u0443 \u04b1\u0441\u044b\u043d\u044b\u043b\u043c\u0430\u0439\u0434\u044b.", - "LabelEnableAutomaticPortMapping": "\u041f\u043e\u0440\u0442 \u0430\u0432\u0442\u043e\u0441\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u0443\u044b\u043d \u049b\u043e\u0441\u0443", - "LabelEnableAutomaticPortMappingHelp": "\u049a\u0430\u0448\u044b\u049b\u0442\u0430\u043d \u043e\u04a3\u0430\u0439\u0442\u044b\u043b\u044b\u043f \u049b\u0430\u0442\u044b\u043d\u0430\u0443 \u04af\u0448\u0456\u043d UPnP \u0436\u043e\u043b \u0436\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u044b\u0448\u0442\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0442\u0435\u04a3\u0448\u0435\u0443\u0433\u0435 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0435\u0434\u0456. \u0411\u04b1\u043b \u043a\u0435\u0439\u0431\u0456\u0440 \u0436\u043e\u043b \u0436\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u044b\u0448 \u04af\u043b\u0433\u0456\u043b\u0435\u0440\u0456\u043c\u0435\u043d \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u043c\u0435\u0439\u0442\u0456\u043d\u0456 \u043c\u04af\u043c\u043a\u0456\u043d.", - "HeaderTermsOfService": "Emby \u049b\u044b\u0437\u043c\u0435\u0442 \u0448\u0430\u0440\u0442\u0442\u0430\u0440\u044b", - "MessagePleaseAcceptTermsOfService": "\u0416\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u043c\u0430\u0441 \u0431\u04b1\u0440\u044b\u043d \u049a\u044b\u0437\u043c\u0435\u0442 \u0448\u0430\u0440\u0442\u0442\u0430\u0440\u044b\u043d \u0436\u04d9\u043d\u0435 \u049a\u04b1\u043f\u0438\u044f\u043b\u044b\u043b\u044b\u049b \u0441\u0430\u044f\u0441\u0430\u0442\u044b\u043d \u049b\u0430\u0431\u044b\u043b\u0434\u0430\u04a3\u044b\u0437.", - "OptionIAcceptTermsOfService": "\u049a\u044b\u0437\u043c\u0435\u0442 \u0448\u0430\u0440\u0442\u0442\u0430\u0440\u044b\u043d \u049b\u0430\u0431\u044b\u043b\u0434\u0430\u0439\u043c\u044b\u043d", - "ButtonPrivacyPolicy": "\u049a\u04b1\u043f\u0438\u044f\u043b\u044b\u043b\u044b\u049b \u0441\u0430\u044f\u0441\u0430\u0442\u044b\u043d\u0430", - "ButtonTermsOfService": "\u049a\u044b\u0437\u043c\u0435\u0442 \u0448\u0430\u0440\u0442\u0442\u0430\u0440\u044b\u043d\u0430", - "HeaderDeveloperOptions": "\u0416\u0430\u0441\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456", - "OptionEnableWebClientResponseCache": "\u0412\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442 \u04af\u043d \u049b\u0430\u0442\u0443 \u043a\u044d\u0448\u0442\u0435\u0443\u0456\u043d \u049b\u043e\u0441\u0443", - "OptionDisableForDevelopmentHelp": "\u0412\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442 \u0436\u0430\u0441\u0430\u049b\u0442\u0430\u0443 \u04af\u0448\u0456\u043d \u049b\u0430\u0436\u0435\u0442 \u0431\u043e\u043b\u0493\u0430\u043d\u0434\u0430 \u043c\u044b\u043d\u0430\u043b\u0430\u0440\u0434\u044b \u0442\u0435\u04a3\u0448\u0435\u04a3\u0456\u0437.", - "OptionEnableWebClientResourceMinification": "\u0412\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442 \u049b\u043e\u0440\u044b\u043d \u0430\u0437\u0430\u0439\u0442\u0443\u0434\u044b \u049b\u043e\u0441\u0443", - "LabelDashboardSourcePath": "\u0412\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442 \u043a\u04e9\u0437\u0456\u043d\u0456\u04a3 \u0436\u043e\u043b\u044b:", - "LabelDashboardSourcePathHelp": "\u0415\u0433\u0435\u0440 \u0441\u0435\u0440\u0432\u0435\u0440 \u049b\u0430\u0439\u043d\u0430\u0440 \u043a\u043e\u0434\u044b\u043d\u0430\u043d \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u0441\u0435, dashboard-ui \u049b\u0430\u043b\u0442\u0430\u0441\u044b\u043d\u0430 \u0436\u043e\u043b\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437. \u0412\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442\u0442\u0456\u04a3 \u0431\u0430\u0440\u043b\u044b\u049b \u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b \u043e\u0441\u044b \u0436\u0430\u0439\u0493\u0430\u0441\u044b\u043c\u0434\u0430\u043d \u0448\u044b\u0493\u0430\u0440\u044b\u043b\u0430\u0434\u044b.", - "ButtonConvertMedia": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0443", - "ButtonOrganize": "\u04b0\u0439\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u0440\u0443", - "LinkedToEmbyConnect": "Emby Connect \u04af\u0448\u0456\u043d \u0431\u0430\u0439\u043b\u0430\u043d\u044b\u0441\u0442\u044b\u0440\u044b\u043b\u0493\u0430\u043d", - "HeaderSupporterBenefits": "\u0416\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u0430\u0440\u0442\u044b\u049b\u0448\u044b\u043b\u044b\u049b\u0442\u0430\u0440\u044b", - "HeaderAddUser": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u04af\u0441\u0442\u0435\u0443", - "LabelAddConnectSupporterHelp": "\u0422\u0456\u0437\u0456\u043c\u0434\u0435 \u0436\u043e\u049b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u04af\u0441\u0442\u0435\u0443 \u04af\u0448\u0456\u043d, \u0430\u043b\u0434\u044b\u043c\u0435\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u044b\u049b \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u044b \u0431\u0435\u0442\u0456\u043d\u0435\u043d Emby Connect \u0430\u0440\u0430\u0441\u044b\u043d\u0434\u0430 \u043e\u043d\u044b\u04a3 \u0442\u0456\u0440\u043a\u0435\u043b\u0433\u0456\u0441\u0456\u043d \u0431\u0430\u0439\u043b\u0430\u043d\u044b\u0441\u0442\u0440\u0443\u044b\u04a3\u044b\u0437 \u049b\u0430\u0436\u0435\u0442.", - "LabelPinCode": "PIN-\u043a\u043e\u0434:", - "OptionHideWatchedContentFromLatestMedia": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0435\u043d \u049b\u0430\u0440\u0430\u043b\u0493\u0430\u043d \u043c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b \u0436\u0430\u0441\u044b\u0440\u0443", - "HeaderSync": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443", - "ButtonOk": "\u0416\u0430\u0440\u0430\u0439\u0434\u044b", - "ButtonCancel": "\u0411\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443", - "ButtonExit": "\u0428\u044b\u0493\u0443", - "ButtonNew": "\u0416\u0430\u0441\u0430\u0443", - "HeaderTV": "\u0422\u0414", - "HeaderAudio": "\u0414\u044b\u0431\u044b\u0441", - "HeaderVideo": "\u0411\u0435\u0439\u043d\u0435", - "HeaderPaths": "\u0416\u043e\u043b\u0434\u0430\u0440", - "CategorySync": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443", - "TabPlaylist": "\u041e\u0439\u043d\u0430\u0442\u0443 \u0442\u0456\u0437\u0456\u043c\u0456", - "HeaderEasyPinCode": "\u041e\u04a3\u0430\u0439\u0442\u044b\u043b\u0493\u0430\u043d PIN-\u043a\u043e\u0434", - "HeaderGrownupsOnly": "\u0422\u0435\u043a \u0435\u0440\u0435\u0441\u0435\u043a\u0442\u0435\u0440!", - "DividerOr": "-- \u043d\u0435\u043c\u0435\u0441\u0435 --", - "HeaderInstalledServices": "\u041e\u0440\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440", - "HeaderAvailableServices": "\u049a\u0430\u0442\u044b\u043d\u0430\u0443\u043b\u044b \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440", - "MessageNoServicesInstalled": "\u049a\u0430\u0437\u0456\u0440\u0433\u0456 \u0443\u0430\u049b\u044b\u0442\u0442\u0430 \u0435\u0448\u049b\u0430\u043d\u0434\u0430\u0439 \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440 \u043e\u0440\u043d\u0430\u0442\u044b\u043b\u043c\u0430\u0493\u0430\u043d", - "HeaderToAccessPleaseEnterEasyPinCode": "\u049a\u0430\u0442\u044b\u043d\u0430\u0443 \u04af\u0448\u0456\u043d \u043e\u04a3\u0430\u0439\u0442\u044b\u043b\u0493\u0430\u043d PIN-\u043a\u043e\u0434\u0442\u044b \u0435\u043d\u0433\u0456\u0437\u0456\u04a3\u0456\u0437", - "KidsModeAdultInstruction": "\u0422\u0435\u04a3\u0448\u0435\u0443 \u04af\u0448\u0456\u043d \u0442\u04e9\u043c\u0435\u0434\u0435\u0433\u0456 \u043e\u04a3 \u0436\u0430\u049b\u0442\u0430\u0493\u044b \u049b\u04b1\u043b\u044b\u043f \u0431\u0435\u043b\u0433\u0456\u0448\u0435\u0441\u0456\u043d \u043d\u04b1\u049b\u044b\u04a3\u044b\u0437 \u043d\u0435\u043c\u0435\u0441\u0435 \u0431\u0430\u043b\u0430\u043b\u044b\u049b \u0440\u0435\u0436\u0456\u043c\u0456\u043d \u049b\u0430\u043b\u0434\u044b\u0440\u044b\u04a3\u044b\u0437. PIN-\u043a\u043e\u0434\u044b\u04a3\u044b\u0437 \u049b\u0430\u0436\u0435\u0442 \u0431\u043e\u043b\u0430\u0434\u044b.", - "ButtonConfigurePinCode": "PIN-\u043a\u043e\u0434\u0442\u044b \u0442\u0435\u04a3\u0448\u0435\u0443", - "HeaderAdultsReadHere": "\u0415\u0440\u0435\u0441\u0435\u043a\u0442\u0435\u0440, \u043c\u044b\u043d\u0430\u043d\u044b \u043e\u049b\u044b\u04a3\u044b\u0437!", - "RegisterWithPayPal": "PayPal \u0430\u0440\u049b\u044b\u043b\u044b \u0442\u0456\u0440\u043a\u0435\u043b\u0443", - "HeaderSyncRequiresSupporterMembership": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u04af\u0448\u0456\u043d \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u043b\u044b\u049b \u043c\u04af\u0448\u0435\u043b\u0456\u043a \u049b\u0430\u0436\u0435\u0442", - "HeaderEnjoyDayTrial": "\u0422\u0435\u0433\u0456\u043d \u0441\u044b\u043d\u0430\u0443\u0434\u044b 14 \u043a\u04af\u043d \u0442\u0430\u043c\u0430\u0448\u0430\u043b\u0430\u04a3\u044b\u0456\u0437", - "LabelSyncTempPath": "\u0423\u0430\u049b\u044b\u0442\u0448\u0430 \u0444\u0430\u0439\u043b \u0436\u043e\u043b\u044b:", - "LabelSyncTempPathHelp": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u04af\u0448\u0456\u043d \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u0436\u04b1\u043c\u044b\u0441 \u049b\u0430\u043b\u0442\u0430\u043d\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437. \u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0456 \u043a\u0435\u0437\u0456\u043d\u0434\u0435 \u0436\u0430\u0441\u0430\u043b\u0493\u0430\u043d \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0456\u043b\u0433\u0435\u043d \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u043e\u0441\u044b \u043e\u0440\u044b\u043d\u0434\u0430 \u0441\u0430\u049b\u0442\u0430\u043b\u0430\u0434\u044b.", - "LabelCustomCertificatePath": "\u041a\u0443\u04d9\u043b\u0456\u043a \u0436\u043e\u043b\u044b:", - "LabelCustomCertificatePathHelp": "\u04e8\u0437 SSL-\u043a\u0443\u04d9\u043b\u0456\u0433\u0456\u04a3\u0456\u0437\u0434\u0456\u04a3 .pfx \u0444\u0430\u0439\u043b\u044b\u043d \u0436\u0435\u0442\u043a\u0456\u0437\u0456\u04a3\u0456\u0437. \u0415\u0433\u0435\u0440 \u0442\u04af\u0441\u0456\u0440\u0456\u043b\u0441\u0435, \u0441\u0435\u0440\u0432\u0435\u0440 \u043c\u0435\u043d\u0448\u0456\u043a \u049b\u043e\u043b\u0442\u0430\u04a3\u0431\u0430\u0441\u044b \u0431\u0430\u0440 \u043a\u0443\u04d9\u043b\u0456\u043a\u0442\u0456 \u0436\u0430\u0441\u0430\u0439\u0434\u044b.", - "TitleNotifications": "\u0425\u0430\u0431\u0430\u0440\u043b\u0430\u043d\u0434\u044b\u0440\u0443\u043b\u0430\u0440", - "ButtonDonateWithPayPal": "PayPal \u0430\u0440\u049b\u044b\u043b\u044b \u049b\u0430\u0439\u044b\u0440\u043c\u0430\u043b\u0430\u0443", - "OptionDetectArchiveFilesAsMedia": "\u041c\u04b1\u0440\u0430\u0493\u0430\u0442\u0442\u0430\u043b\u0493\u0430\u043d \u0444\u0430\u0439\u043b\u0434\u0430\u0440\u0434\u044b \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0442\u0430\u0431\u0443", - "OptionDetectArchiveFilesAsMediaHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, .rar \u0436\u04d9\u043d\u0435 .zip \u043a\u0435\u04a3\u0435\u0439\u0442\u0456\u043c\u0434\u0435\u0440\u0456 \u0431\u0430\u0440 \u0444\u0430\u0439\u043b\u0434\u0430\u0440 \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0442\u0430\u0431\u044b\u043b\u0430\u0434\u044b.", - "LabelEnterConnectUserName": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0430\u0442\u044b \u043d\u0435\u043c\u0435\u0441\u0435 \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0456", - "LabelEnterConnectUserNameHelp": "\u0411\u04b1\u043b Emby \u0436\u0435\u043b\u0456\u043b\u0456\u043a \u0442\u0456\u0440\u043a\u0435\u043b\u0433\u0456\u04a3\u0456\u0437\u0434\u0435\u0433\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0430\u0442\u044b\u04a3\u044b\u0437 \u043d\u0435\u043c\u0435\u0441\u0435 \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437 \u0431\u043e\u043b\u044b\u043f \u0442\u0430\u0431\u044b\u043b\u0430\u0434\u044b.", - "LabelEnableEnhancedMovies": "\u0424\u0438\u043b\u044c\u043c\u0434\u0435\u0440\u0434\u0456\u04a3 \u0436\u0430\u049b\u0441\u0430\u0440\u0442\u044b\u043b\u0493\u0430\u043d \u0431\u0435\u0439\u043d\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u043d \u049b\u043e\u0441\u0443", - "LabelEnableEnhancedMoviesHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u043b\u0435\u0440\u0434\u0456, \u049b\u043e\u0441\u044b\u043c\u0448\u0430\u043b\u0430\u0440\u0434\u044b, \u0442\u04af\u0441\u0456\u0440\u0443\u0433\u0435 \u049b\u0430\u0442\u044b\u0441\u049b\u0430\u043d\u0434\u0430\u0440\u0434\u044b \u0436\u04d9\u043d\u0435 \u0431\u0430\u0441\u049b\u0430 \u049b\u0430\u0442\u044b\u0441\u0442\u044b \u043c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b \u049b\u0430\u043c\u0442\u0443 \u04af\u0448\u0456\u043d, \u0444\u0438\u043b\u044c\u043c\u0434\u0435\u0440 \u049b\u0430\u043b\u0442\u0430 \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u043d\u0435\u0434\u0456", - "HeaderSyncJobInfo": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u0436\u04b1\u043c\u044b\u0441\u044b", - "FolderTypeMixed": "\u0410\u0440\u0430\u043b\u0430\u0441 \u043c\u0430\u0437\u043c\u04b1\u043d", - "FolderTypeMovies": "\u041a\u0438\u043d\u043e", - "FolderTypeMusic": "\u041c\u0443\u0437\u044b\u043a\u0430", - "FolderTypeAdultVideos": "\u0415\u0440\u0435\u0441\u0435\u043a\u0442\u0456\u043a \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440", - "FolderTypePhotos": "\u0424\u043e\u0442\u043e\u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440", - "FolderTypeMusicVideos": "\u041c\u0443\u0437\u044b\u043a\u0430\u043b\u044b\u049b \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440", - "FolderTypeHomeVideos": "\u04ae\u0439 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440\u0456", - "FolderTypeGames": "\u041e\u0439\u044b\u043d\u0434\u0430\u0440", - "FolderTypeBooks": "\u041a\u0456\u0442\u0430\u043f\u0442\u0430\u0440", - "FolderTypeTvShows": "\u0422\u0414", - "FolderTypeInherit": "\u041c\u04b1\u0440\u0430\u0493\u0430 \u0438\u0435\u043b\u0435\u043d\u0443", - "LabelContentType": "\u041c\u0430\u0437\u043c\u04b1\u043d \u0442\u04af\u0440\u0456:", - "TitleScheduledTasks": "\u0416\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u0430\u043d \u0442\u0430\u043f\u0441\u044b\u0440\u043c\u0430\u043b\u0430\u0440", - "HeaderSetupLibrary": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043d\u044b \u043e\u0440\u043d\u0430\u0442\u0443 \u0436\u04d9\u043d\u0435 \u0442\u0435\u04a3\u0448\u0435\u0443", - "ButtonAddMediaFolder": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448 \u049b\u0430\u043b\u0442\u0430\u0441\u044b\u043d \u04af\u0441\u0442\u0435\u0443", - "LabelFolderType": "\u049a\u0430\u043b\u0442\u0430 \u0442\u04af\u0440\u0456:", - "ReferToMediaLibraryWiki": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430 \u0442\u0443\u0440\u0430\u043b\u044b \u0443\u0438\u043a\u0438 \u0456\u0448\u0456\u043d\u0435\u043d \u049b\u0430\u0440\u0430\u04a3\u044b\u0437.", - "LabelCountry": "\u0415\u043b:", - "LabelLanguage": "\u0422\u0456\u043b:", - "LabelTimeLimitHours": "\u0423\u0430\u049b\u044b\u0442 \u0448\u0435\u0433\u0456 (\u0441\u0430\u0493\u0430\u0442):", - "ButtonJoinTheDevelopmentTeam": "\u0416\u0430\u0441\u0430\u049b\u0442\u0430\u0443\u0448\u044b\u043b\u0430\u0440 \u0442\u043e\u0431\u044b\u043d\u0430 \u043a\u0456\u0440\u0443", - "HeaderPreferredMetadataLanguage": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u0442\u0456\u043b\u0456\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456:", - "LabelSaveLocalMetadata": "\u0421\u0443\u0440\u0435\u0442\u0442\u0435\u043c\u0435\u043b\u0435\u0440 \u0431\u0435\u043d \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u044b \u0456\u0448\u0456\u043d\u0434\u0435 \u0441\u0430\u049b\u0442\u0430\u0443", - "LabelSaveLocalMetadataHelp": "\u0421\u0443\u0440\u0435\u0442\u0442\u0435\u043c\u0435\u043b\u0435\u0440 \u0431\u0435\u043d \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0442\u0456\u043a\u0435\u043b\u0435\u0439 \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u044b \u0456\u0448\u0456\u043d\u0434\u0435 \u0441\u0430\u049b\u0442\u0430\u043b\u0443\u044b \u043e\u043b\u0430\u0440\u0434\u044b \u0436\u0435\u04a3\u0456\u043b \u04e9\u04a3\u0434\u0435\u0439 \u0430\u043b\u0430\u0442\u044b\u043d \u043e\u0440\u044b\u043d\u0493\u0430 \u049b\u043e\u044f\u0434\u044b.", - "LabelDownloadInternetMetadata": "\u0421\u0443\u0440\u0435\u0442\u0442\u0435\u043c\u0435\u043b\u0435\u0440 \u0431\u0435\u043d \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0442\u0435\u043d \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443", - "LabelDownloadInternetMetadataHelp": "\u041c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b \u043a\u04e9\u0440\u043c\u0435\u043b\u0435\u0440\u0434\u0456 \u049b\u043e\u0441\u0443 \u04af\u0448\u0456\u043d Emby Server \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u0442\u0443\u0440\u0430\u043b\u044b \u043c\u04d9\u043b\u0456\u043c\u0435\u0442\u0442\u0435\u0440\u0434\u0456 \u0436\u04af\u043a\u0442\u0435\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d.", - "TabPreferences": "\u0422\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440", - "TabPassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437", - "TabLibraryAccess": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u0493\u0430 \u049b\u0430\u0442\u044b\u043d\u0430\u0443", - "TabAccess": "\u049a\u0430\u0442\u044b\u043d\u0430\u0443", - "TabImage": "\u0421\u0443\u0440\u0435\u0442", - "TabProfile": "\u041f\u0440\u043e\u0444\u0430\u0439\u043b", - "TabMetadata": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440", - "TabImages": "\u0421\u0443\u0440\u0435\u0442\u0442\u0435\u0440", - "TabNotifications": "\u0425\u0430\u0431\u0430\u0440\u043b\u0430\u043d\u0434\u044b\u0440\u0443\u043b\u0430\u0440", - "TabCollectionTitles": "\u0422\u0443\u044b\u043d\u0434\u044b\u043b\u0430\u0440", - "HeaderDeviceAccess": "\u049a\u04b1\u0440\u044b\u043b\u0493\u044b\u0493\u0430 \u049b\u0430\u0442\u044b\u043d\u0430\u0443", - "OptionEnableAccessFromAllDevices": "\u0411\u0430\u0440\u043b\u044b\u049b \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440\u0434\u0430\u043d \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u0434\u044b \u049b\u043e\u0441\u0443", - "OptionEnableAccessToAllChannels": "\u0411\u0430\u0440\u043b\u044b\u049b \u0430\u0440\u043d\u0430\u043b\u0430\u0440\u0493\u0430 \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u0434\u044b \u049b\u043e\u0441\u0443", - "OptionEnableAccessToAllLibraries": "\u0411\u0430\u0440\u043b\u044b\u049b \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043b\u0430\u0440\u0493\u0430 \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u0434\u044b \u049b\u043e\u0441\u0443", - "DeviceAccessHelp": "\u0411\u04b1\u043b \u0442\u0435\u043a \u049b\u0430\u043d\u0430 \u0431\u0456\u0440\u0435\u0433\u0435\u0439 \u0430\u043d\u044b\u049b\u0442\u0430\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440 \u04af\u0448\u0456\u043d \u049b\u043e\u043b\u0434\u0430\u043d\u044b\u043b\u0430\u0434\u044b \u0436\u04d9\u043d\u0435 \u0448\u043e\u043b\u0493\u044b\u0448\u043f\u0435\u043d \u049b\u0430\u043d\u0442\u044b\u043d\u0430\u0443\u0493\u0430 \u0442\u044b\u0439\u044b\u043c \u0441\u0430\u043b\u043c\u0430\u0439\u0434\u044b. \u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u0441\u044b\u043d\u0430\u043d \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u0434\u044b \u0441\u04af\u0437\u0433\u0456\u043b\u0435\u0443\u0456 \u0436\u0430\u04a3\u0430 \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440\u0434\u044b \u043c\u04b1\u043d\u0434\u0430 \u0431\u0435\u043a\u0456\u0442\u0456\u043b\u0433\u0435\u043d\u0448\u0435 \u0434\u0435\u0439\u0456\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0493\u0430 \u0442\u044b\u0439\u044b\u043c \u0441\u0430\u043b\u0430\u0434\u044b.", - "LabelDisplayMissingEpisodesWithinSeasons": "\u0416\u043e\u049b \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u043c\u0430\u0443\u0441\u044b\u043c \u0456\u0448\u0456\u043d\u0434\u0435 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443", - "LabelUnairedMissingEpisodesWithinSeasons": "\u041a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u043c\u0435\u0433\u0435\u043d \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u043c\u0430\u0443\u0441\u044b\u043c \u0456\u0448\u0456\u043d\u0434\u0435 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443", - "HeaderVideoPlaybackSettings": "\u0411\u0435\u0439\u043d\u0435 \u043e\u0439\u043d\u0430\u0442\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456", - "HeaderPlaybackSettings": "\u041e\u0439\u043d\u0430\u0442\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456", - "LabelAudioLanguagePreference": "\u0414\u044b\u0431\u044b\u0441 \u0442\u0456\u043b\u0456\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456:", - "LabelSubtitleLanguagePreference": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440 \u0442\u0456\u043b\u0456\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456:", - "OptionDefaultSubtitles": "\u04d8\u0434\u0435\u043f\u043a\u0456", - "OptionOnlyForcedSubtitles": "\u0422\u0435\u043a \u049b\u0430\u043d\u0430 \u043c\u04d9\u0436\u0431\u04af\u0440\u043b\u0456 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440", - "OptionAlwaysPlaySubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440\u0434\u0456 \u04d9\u0440\u049b\u0430\u0448\u0430\u043d \u043e\u0439\u043d\u0430\u0442\u0443", - "OptionNoSubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u0436\u043e\u049b", - "OptionDefaultSubtitlesHelp": "\u0422\u0456\u043b \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456\u043d\u0435 \u0441\u04d9\u0439\u043a\u0435\u0441 \u043a\u0435\u043b\u0433\u0435\u043d \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u0434\u044b\u0431\u044b\u0441 \u0448\u0435\u0442\u0435\u043b \u0442\u0456\u043b\u0456\u043d\u0434\u0435 \u0431\u043e\u043b\u0493\u0430\u043d\u0434\u0430 \u0436\u04af\u043a\u0442\u0435\u043b\u0435\u0434\u0456.", - "OptionOnlyForcedSubtitlesHelp": "\u0422\u0435\u043a \u049b\u0430\u043d\u0430 \u043c\u04d9\u0436\u0431\u04af\u0440\u043b\u0456 \u0434\u0435\u043f \u0431\u0435\u043b\u0433\u0456\u043b\u0435\u043d\u0433\u0435\u043d \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u0436\u04af\u043a\u0442\u0435\u043b\u0435\u0434\u0456.", - "OptionAlwaysPlaySubtitlesHelp": "\u0422\u0456\u043b \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456\u043d\u0435 \u0441\u04d9\u0439\u043a\u0435\u0441 \u043a\u0435\u043b\u0433\u0435\u043d \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u0434\u044b\u0431\u044b\u0441 \u0442\u0456\u043b\u0456\u043d\u0435 \u049b\u0430\u0442\u044b\u0441\u0441\u044b\u0437 \u0436\u04af\u043a\u0442\u0435\u043b\u0435\u0434\u0456.", - "OptionNoSubtitlesHelp": "\u04d8\u0434\u0435\u043f\u043a\u0456\u0434\u0435 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u0436\u04af\u043a\u0442\u0435\u043b\u043c\u0435\u0439\u0434\u0456.", - "TabProfiles": "\u041f\u0440\u043e\u0444\u0430\u0439\u043b\u0434\u0430\u0440", - "TabSecurity": "\u049a\u0430\u0443\u0456\u043f\u0441\u0456\u0437\u0434\u0456\u043a", - "ButtonAddUser": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u04af\u0441\u0442\u0435\u0443", - "ButtonAddLocalUser": "\u0416\u0435\u0440\u0433\u0456\u043b\u0456\u043a\u0442\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u04af\u0441\u0442\u0435\u0443", - "ButtonInviteUser": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u0448\u0430\u049b\u044b\u0440\u0443", - "ButtonSave": "\u0421\u0430\u049b\u0442\u0430\u0443", - "ButtonResetPassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0456 \u044b\u0441\u044b\u0440\u0443", - "LabelNewPassword": "\u0416\u0430\u04a3\u0430 \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437", - "LabelNewPasswordConfirm": "\u0416\u0430\u04a3\u0430 \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0456 \u0440\u0430\u0441\u0442\u0430\u0443:", - "HeaderCreatePassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0456 \u0436\u0430\u0441\u0430\u0443", - "LabelCurrentPassword": "\u0410\u0493\u044b\u043c\u0434\u0430\u0493\u044b \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437:", - "LabelMaxParentalRating": "\u0415\u04a3 \u0436\u043e\u0493\u0430\u0440\u044b \u04b1\u0439\u0493\u0430\u0440\u044b\u043d\u0434\u044b \u0436\u0430\u0441\u0442\u0430\u0441 \u0441\u0430\u043d\u0430\u0442\u044b:", - "MaxParentalRatingHelp": "\u0411\u04b1\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0434\u0430\u043d \u0436\u043e\u0493\u0430\u0440\u044b\u043b\u0430\u0443 \u0436\u0430\u0441\u0442\u0430\u0441 \u0441\u0430\u043d\u0430\u0442\u044b \u0431\u0430\u0440 \u043c\u0430\u0437\u043c\u04b1\u043d \u0436\u0430\u0441\u044b\u0440\u044b\u043b\u0430\u0434\u044b", - "LibraryAccessHelp": "\u0411\u04b1\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043c\u0435\u043d \u043e\u0440\u0442\u0430\u049b\u0442\u0430\u0441\u0443 \u04af\u0448\u0456\u043d \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u0434\u044b \u0431\u04e9\u043b\u0435\u043a\u0442\u0435\u04a3\u0456\u0437. \u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a \u0440\u0435\u0442\u0442\u0435\u0443\u0448\u0456\u043d\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043f \u04d9\u043a\u0456\u043c\u0448\u0456\u043b\u0435\u0440 \u0431\u0430\u0440\u043b\u044b\u049b \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u0434\u044b \u04e9\u04a3\u0434\u0435\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d.", - "ChannelAccessHelp": "\u0411\u04b1\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043c\u0435\u043d \u043e\u0440\u0442\u0430\u049b\u0442\u0430\u0441\u0443 \u04af\u0448\u0456\u043d \u0430\u0440\u043d\u0430\u043b\u0430\u0440\u0434\u044b \u0431\u04e9\u043b\u0435\u043a\u0442\u0435\u04a3\u0456\u0437. \u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a \u0440\u0435\u0442\u0442\u0435\u0443\u0448\u0456\u043d\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043f \u04d9\u043a\u0456\u043c\u0448\u0456\u043b\u0435\u0440 \u0431\u0430\u0440\u043b\u044b\u049b \u0430\u0440\u043d\u0430\u043b\u0430\u0440\u0434\u044b \u04e9\u04a3\u0434\u0435\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d.", - "ButtonDeleteImage": "\u0421\u0443\u0440\u0435\u0442\u0442\u0456 \u0436\u043e\u044e", - "LabelSelectUsers": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440\u0434\u044b \u0442\u0430\u04a3\u0434\u0430\u0443:", - "ButtonUpload": "\u041a\u0435\u0440\u0456 \u049b\u043e\u0442\u0430\u0440\u0443", - "HeaderUploadNewImage": "\u0416\u0430\u04a3\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0456 \u043a\u0435\u0440\u0456 \u049b\u043e\u0442\u0430\u0440\u0443", - "LabelDropImageHere": "\u0421\u0443\u0440\u0435\u0442\u0442\u0456 \u043c\u04b1\u043d\u0434\u0430 \u0441\u04af\u0439\u0440\u0435\u0442\u0456\u04a3\u0456\u0437", - "ImageUploadAspectRatioHelp": "1:1 \u043f\u0456\u0448\u0456\u043c\u0434\u0456\u043a \u0430\u0440\u0430\u049b\u0430\u0442\u044b\u043d\u0430\u0441\u044b \u04b1\u0441\u044b\u043d\u044b\u043b\u0430\u0434\u044b. \u0422\u0435\u043a \u049b\u0430\u043d\u0430 JPG\/PNG.", - "MessageNothingHere": "\u041e\u0441\u044b\u043d\u0434\u0430 \u0435\u0448\u0442\u0435\u043c\u0435 \u0436\u043e\u049b.", - "MessagePleaseEnsureInternetMetadata": "\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0442\u0435\u043d \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0456 \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443\u044b \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u044b\u043d\u0430 \u043a\u04e9\u0437 \u0436\u0435\u0442\u043a\u0456\u0437\u0456\u04a3\u0456\u0437.", - "TabSuggested": "\u04b0\u0441\u044b\u043d\u044b\u043b\u0493\u0430\u043d", - "TabSuggestions": "\u04b0\u0441\u044b\u043d\u044b\u0441\u0442\u0430\u0440", - "TabLatest": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456", - "TabUpcoming": "\u041a\u04af\u0442\u0456\u043b\u0433\u0435\u043d", - "TabShows": "\u041a\u04e9\u0440\u0441\u0435\u0442\u0456\u043c\u0434\u0435\u0440", - "TabEpisodes": "\u0422\u0414-\u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440", - "TabGenres": "\u0416\u0430\u043d\u0440\u043b\u0430\u0440", - "TabPeople": "\u0410\u0434\u0430\u043c\u0434\u0430\u0440", - "TabNetworks": "\u0416\u0435\u043b\u0456\u043b\u0435\u0440", - "HeaderUsers": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440", - "HeaderFilters": "\u0421\u04af\u0437\u0433\u0456\u043b\u0435\u0440:", - "ButtonFilter": "\u0421\u04af\u0437\u0443", - "OptionFavorite": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b\u043b\u0430\u0440", - "OptionLikes": "\u04b0\u043d\u0430\u0442\u0443\u043b\u0430\u0440", - "OptionDislikes": "\u04b0\u043d\u0430\u0442\u043f\u0430\u0443\u043b\u0430\u0440", - "OptionActors": "\u0410\u043a\u0442\u0435\u0440\u043b\u0435\u0440", - "OptionGuestStars": "\u0428\u0430\u049b\u044b\u0440\u044b\u043b\u0493\u0430\u043d \u0430\u043a\u0442\u0435\u0440\u043b\u0435\u0440", - "OptionDirectors": "\u0420\u0435\u0436\u0438\u0441\u0441\u0435\u0440\u043b\u0435\u0440", - "OptionWriters": "\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439\u0448\u0456\u043b\u0435\u0440", - "OptionProducers": "\u041f\u0440\u043e\u0434\u044e\u0441\u0435\u0440\u043b\u0435\u0440", - "HeaderResume": "\u0416\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u0443", - "HeaderNextUp": "\u041a\u0435\u0437\u0435\u043a\u0442\u0456", - "NoNextUpItemsMessage": "\u0415\u0448\u0442\u0435\u04a3\u0435 \u0442\u0430\u0431\u044b\u043b\u043c\u0430\u0434\u044b. \u041a\u04e9\u0440\u0441\u0435\u0442\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u049b\u0430\u0440\u0430\u0439 \u0431\u0430\u0441\u0442\u0430\u04a3\u044b\u0437!", - "HeaderLatestEpisodes": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456 \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440", - "HeaderPersonTypes": "\u0422\u04b1\u043b\u0493\u0430 \u0442\u04af\u0440\u043b\u0435\u0440\u0456:", - "TabSongs": "\u04d8\u0443\u0435\u043d\u0434\u0435\u0440", - "TabAlbums": "\u0410\u043b\u044c\u0431\u043e\u043c\u0434\u0435\u0440", - "TabArtists": "\u041e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440", - "TabAlbumArtists": "\u0410\u043b\u044c\u0431\u043e\u043c \u043e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440\u044b", - "TabMusicVideos": "\u041c\u0443\u0437\u044b\u043a\u0430\u043b\u044b\u049b \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440", - "ButtonSort": "\u0421\u04b1\u0440\u044b\u043f\u0442\u0430\u0443", - "HeaderSortBy": "\u0421\u04b1\u0440\u044b\u043f\u0442\u0430\u0443 \u0442\u04d9\u0441\u0456\u043b\u0456:", - "HeaderSortOrder": "\u0421\u04b1\u0440\u044b\u043f\u0442\u0430\u0443 \u0440\u0435\u0442\u0456:", - "OptionPlayed": "\u041e\u0439\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d", - "OptionUnplayed": "\u041e\u0439\u043d\u0430\u0442\u044b\u043b\u043c\u0430\u0493\u0430\u043d", - "OptionAscending": "\u0410\u0440\u0442\u0443\u044b \u0431\u043e\u0439\u044b\u043d\u0448\u0430", - "OptionDescending": "\u041a\u0435\u043c\u0443\u0456 \u0431\u043e\u0439\u044b\u043d\u0448\u0430", - "OptionRuntime": "\u04b0\u0437\u0430\u049b\u0442\u044b\u0493\u044b", - "OptionReleaseDate": "\u0428\u044b\u0493\u0430\u0440\u0443 \u043a\u04af\u043d\u0456", - "OptionPlayCount": "\u041e\u0439\u043d\u0430\u0442\u0443 \u0435\u0441\u0435\u0431\u0456", - "OptionDatePlayed": "\u041e\u0439\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d \u043a\u04af\u043d\u0456", - "OptionDateAdded": "\u04ae\u0441\u0442\u0435\u043b\u0433\u0435\u043d \u043a\u04af\u043d\u0456", - "OptionAlbumArtist": "\u0410\u043b\u044c\u0431\u043e\u043c \u043e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u0441\u044b", - "OptionArtist": "\u041e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b", - "OptionAlbum": "\u0410\u043b\u044c\u0431\u043e\u043c", - "OptionTrackName": "\u0416\u043e\u043b\u0448\u044b\u049b \u0430\u0442\u044b", - "OptionCommunityRating": "\u049a\u0430\u0443\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u049b \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u044b", - "OptionNameSort": "\u0410\u0442\u044b", - "OptionFolderSort": "\u049a\u0430\u043b\u0442\u0430\u043b\u0430\u0440", - "OptionBudget": "\u0411\u044e\u0434\u0436\u0435\u0442", - "OptionRevenue": "\u0422\u0430\u0431\u044b\u0441", - "OptionPoster": "\u0416\u0430\u0440\u049b\u0430\u0493\u0430\u0437", - "OptionPosterCard": "\u0416\u0430\u0440\u049b\u0430\u0493\u0430\u0437-\u043a\u0430\u0440\u0442\u0430", - "OptionBackdrop": "\u0410\u0440\u0442\u049b\u044b \u0441\u0443\u0440\u0435\u0442", - "OptionTimeline": "\u0423\u0430\u049b\u044b\u0442 \u0448\u043a\u0430\u043b\u0430\u0441\u044b", - "OptionThumb": "\u041d\u043e\u0431\u0430\u0439", - "OptionThumbCard": "\u041d\u043e\u0431\u0430\u0439-\u043a\u0430\u0440\u0442\u0430", - "OptionBanner": "\u0411\u0430\u043d\u043d\u0435\u0440", - "OptionCriticRating": "\u0421\u044b\u043d\u0448\u044b\u043b\u0430\u0440 \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u044b", - "OptionVideoBitrate": "\u0411\u0435\u0439\u043d\u0435 \u049b\u0430\u0440\u049b\u044b\u043d\u044b", - "OptionResumable": "\u0416\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u0430\u043b\u0430\u0442\u044b\u043d", - "ScheduledTasksHelp": "\u0416\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0443\u044b\u043d \u043b\u0430\u0439\u044b\u049b\u0442\u0430\u0443 \u04af\u0448\u0456\u043d \u0442\u0430\u043f\u0441\u044b\u0440\u043c\u0430\u043d\u044b \u043d\u04b1\u049b\u044b\u04a3\u044b\u0437.", - "ScheduledTasksTitle": "\u0416\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0443\u0448\u044b", - "TabMyPlugins": "\u041c\u0435\u043d\u0456\u04a3 \u043f\u043b\u0430\u0433\u0438\u043d\u0434\u0435\u0440\u0456\u043c", - "TabCatalog": "\u0422\u0456\u0437\u0456\u043c\u0434\u0435\u043c\u0435", - "TitlePlugins": "\u041f\u043b\u0430\u0433\u0438\u043d\u0434\u0435\u0440", - "HeaderAutomaticUpdates": "\u0410\u0432\u0442\u043e\u0436\u0430\u04a3\u0430\u0440\u0442\u0443\u043b\u0430\u0440", - "HeaderNowPlaying": "\u049a\u0430\u0437\u0456\u0440 \u043e\u0439\u043d\u0430\u0442\u044b\u043b\u0443\u0434\u0430", - "HeaderLatestAlbums": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u04a3\u0433\u0456 \u0430\u043b\u044c\u0431\u043e\u043c\u0434\u0430\u0440", - "HeaderLatestSongs": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u04a3\u0433\u0456 \u04d9\u0443\u0435\u043d\u0434\u0435\u0440", - "HeaderRecentlyPlayed": "\u0416\u0430\u049b\u044b\u043d\u0434\u0430 \u043e\u0439\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d\u0434\u0430\u0440", - "HeaderFrequentlyPlayed": "\u0416\u0438\u0456 \u043e\u0439\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d\u0434\u0430\u0440", - "DevBuildWarning": "\u0416\u0430\u0441\u0430\u049b\u0442\u0430\u0443 \u049b\u04b1\u0440\u0430\u0441\u0442\u044b\u0440\u043c\u0430\u043b\u0430\u0440 \u0435\u04a3 \u0430\u043b\u0434\u044b\u04a3\u0493\u044b \u049b\u0430\u0442\u0430\u0440\u043b\u044b \u0431\u043e\u043b\u044b\u043f \u0442\u0430\u0431\u044b\u043b\u0430\u0434\u044b. \u0416\u0438\u0456 \u0448\u044b\u0493\u0430\u0440\u043b\u044b\u043f \u043c\u044b\u043d\u0430 \u049b\u04b1\u0440\u0430\u0441\u0442\u044b\u0440\u043c\u0430\u043b\u0430\u0440 \u0442\u043e\u043b\u044b\u049b \u0441\u044b\u043d\u0430\u049b\u0442\u0430\u043c\u0430\u043b\u0430\u0443\u0434\u0430\u043d \u04e9\u0442\u043f\u0435\u0433\u0435\u043d. \u049a\u043e\u043b\u0434\u0430\u043d\u0431\u0430 \u0431\u04b1\u0437\u044b\u043b\u0443 \u043c\u04af\u043c\u043a\u0456\u043d \u0436\u04d9\u043d\u0435 \u0430\u049b\u044b\u0440 \u0430\u044f\u0493\u044b\u043d\u0434\u0430 \u0435\u0440\u0435\u043a\u0448\u0435\u043b\u0456\u043a\u0442\u0435\u0440 \u0431\u04af\u0442\u0456\u043d\u0434\u0435\u0439 \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u043c\u0435\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d.", - "LabelVideoType": "\u0411\u0435\u0439\u043d\u0435 \u0442\u04af\u0440\u0456:", - "OptionBluray": "BluRay", - "OptionDvd": "DVD", - "OptionIso": "ISO", - "Option3D": "3D", - "LabelFeatures": "\u0415\u0440\u0435\u043a\u0448\u0435\u043b\u0456\u043a\u0442\u0435\u0440:", - "LabelService": "\u049a\u044b\u0437\u043c\u0435\u0442:", - "LabelStatus": "\u041a\u04af\u0439:", - "LabelVersion": "\u041d\u04b1\u0441\u049b\u0430:", - "LabelLastResult": "\u0421\u043e\u04a3\u0493\u044b \u043d\u04d9\u0442\u0438\u0436\u0435:", - "OptionHasSubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440", - "OptionHasTrailer": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440", - "OptionHasThemeSong": "\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0442\u044b\u049b \u04d9\u0443\u0435\u043d", - "OptionHasThemeVideo": "\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0442\u044b\u049b \u0431\u0435\u0439\u043d\u0435", - "TabMovies": "\u0424\u0438\u043b\u044c\u043c\u0434\u0435\u0440", - "TabStudios": "\u0421\u0442\u0443\u0434\u0438\u044f\u043b\u0430\u0440", - "TabTrailers": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440\u043b\u0435\u0440", - "LabelArtists": "\u041e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440:", - "LabelArtistsHelp": "\u0411\u0456\u0440\u043d\u0435\u0448\u0443\u0456\u043d (;) \u0430\u0440\u049b\u044b\u043b\u044b \u0431\u04e9\u043b\u0456\u04a3\u0456\u0437", - "HeaderLatestMovies": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456 \u0444\u0438\u043b\u044c\u043c\u0434\u0435\u0440", - "HeaderLatestTrailers": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456 \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u043b\u0435\u0440", - "OptionHasSpecialFeatures": "\u0410\u0440\u043d\u0430\u0439\u044b \u0435\u0440\u0435\u043a\u0448\u0435\u043b\u0456\u043a\u0442\u0435\u0440", - "OptionImdbRating": "IMDb \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u044b", - "OptionParentalRating": "\u0416\u0430\u0441\u0442\u0430\u0441 \u0441\u0430\u043d\u0430\u0442", - "OptionPremiereDate": "\u0422\u04b1\u0441\u0430\u0443\u043a\u0435\u0441\u0435\u0440 \u043a\u04af\u043d-\u0430\u0439\u044b", - "TabBasic": "\u041d\u0435\u0433\u0456\u0437\u0433\u0456\u043b\u0435\u0440", - "TabAdvanced": "\u041a\u0435\u04a3\u0435\u0439\u0442\u0456\u043b\u0433\u0435\u043d", - "HeaderStatus": "\u041a\u04af\u0439", - "OptionContinuing": "\u0416\u0430\u043b\u0493\u0430\u0441\u0443\u0434\u0430", - "OptionEnded": "\u0410\u044f\u049b\u0442\u0430\u043b\u0434\u044b", - "HeaderAirDays": "\u042d\u0444\u0438\u0440 \u043a\u04af\u043d\u0434\u0435\u0440\u0456", - "OptionSunday": "\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456", - "OptionMonday": "\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456", - "OptionTuesday": "\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456", - "OptionWednesday": "\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456", - "OptionThursday": "\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456", - "OptionFriday": "\u0436\u04b1\u043c\u0430", - "OptionSaturday": "\u0441\u0435\u043d\u0431\u0456", - "HeaderManagement": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440", - "LabelManagement": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440", - "OptionMissingImdbId": "IMDb Id \u0436\u043e\u049b", - "OptionMissingTvdbId": "TheTVDB Id \u0436\u043e\u049b", - "OptionMissingOverview": "\u0416\u0430\u043b\u043f\u044b \u0448\u043e\u043b\u0443 \u0436\u043e\u049b", - "OptionFileMetadataYearMismatch": "\u0424\u0430\u0439\u043b\/\u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a \u0436\u044b\u043b\u044b \u0441\u04d9\u0439\u043a\u0435\u0441 \u0435\u043c\u0435\u0441", - "TabGeneral": "\u0416\u0430\u043b\u043f\u044b", - "TitleSupport": "\u0416\u0430\u049b\u0442\u0430\u0443", - "TabLog": "\u0416\u04b1\u0440\u043d\u0430\u043b", - "TabAbout": "\u0422\u0443\u0440\u0430\u043b\u044b", - "TabSupporterKey": "\u0416\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u043a\u0456\u043b\u0442\u0456", - "TabBecomeSupporter": "\u0416\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u0431\u043e\u043b\u0443", - "ProjectHasCommunity": "Emby \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440\u044b \u043c\u0435\u043d \u049b\u043e\u043b\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440\u0434\u044b\u04a3 \u0434\u0430\u043c\u0443\u0434\u0430\u0493\u044b \u049b\u0430\u0443\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u0493\u044b \u0431\u0430\u0440.", - "CheckoutKnowledgeBase": "Emby \u0435\u04a3 \u04af\u043b\u043a\u0435\u043d \u049b\u0430\u0439\u0442\u0430\u0440\u044b\u043c\u0434\u044b\u043b\u044b\u0493\u044b\u043d \u0430\u043b\u0443 \u0436\u04e9\u043d\u0456\u043d\u0434\u0435 \u043a\u04e9\u043c\u0435\u043a\u0442\u0435\u0441\u0443 \u04af\u0448\u0456\u043d \u0411\u0456\u043b\u0456\u043c \u049b\u043e\u0440\u044b\u043d \u049b\u0430\u0440\u0430\u043f \u0448\u044b\u0493\u044b\u04a3\u044b\u0437.", - "SearchKnowledgeBase": "\u0411\u0456\u043b\u0456\u043c \u049b\u043e\u0440\u044b\u043d\u0430\u043d \u0456\u0437\u0434\u0435\u0443", - "VisitTheCommunity": "\u049a\u0430\u0443\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u049b\u049b\u0430 \u0431\u0430\u0440\u0443", - "VisitProjectWebsite": "Emby \u0493\u0430\u043b\u0430\u043c\u0442\u043e\u0440 \u0441\u0430\u0439\u0442\u044b\u043d\u0430 \u0431\u0430\u0440\u0443", - "VisitProjectWebsiteLong": "\u0421\u043e\u04a3\u0493\u044b \u0436\u0430\u04a3\u0430\u043b\u044b\u049b\u0442\u0430\u0440\u0434\u044b \u0431\u0456\u043b\u0456\u043f \u0430\u043b\u0443 \u04af\u0448\u0456\u043d \u0436\u04d9\u043d\u0435 \u0436\u0430\u0441\u0430\u049b\u0442\u0430\u0443\u0448\u044b\u043b\u0430\u0440 \u0431\u043b\u043e\u0433\u0456\u043c\u0435\u043d \u0442\u0430\u043d\u044b\u0441\u044b\u043f \u0442\u04b1\u0440\u0443 \u04af\u0448\u0456\u043d Emby \u0493\u0430\u043b\u0430\u043c\u0442\u043e\u0440 \u0441\u0430\u0439\u0442\u044b\u043d\u0430 \u0431\u0430\u0440\u044b\u04a3\u044b\u0437.", - "OptionHideUser": "\u0411\u04b1\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u043a\u0456\u0440\u0443 \u044d\u043a\u0440\u0430\u043d\u0434\u0430\u0440\u044b\u043d\u0430\u043d \u0436\u0430\u0441\u044b\u0440\u0443", - "OptionHideUserFromLoginHelp": "\u0416\u0435\u043a\u0435 \u043d\u0435\u043c\u0435\u0441\u0435 \u0436\u0430\u0441\u044b\u0440\u044b\u043d \u04d9\u043a\u0456\u043c\u0448\u0456 \u0442\u0456\u0440\u043a\u0435\u043b\u0433\u0456\u043b\u0435\u0440\u0456 \u04af\u0448\u0456\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u044b. \u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0430\u0442\u044b \u043c\u0435\u043d \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0456 \u0435\u043d\u0433\u0456\u0437\u0443 \u0430\u0440\u049b\u044b\u043b\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0493\u0430 \u049b\u043e\u043b\u043c\u0435\u043d \u043a\u0456\u0440\u0443 \u049b\u0430\u0436\u0435\u0442 \u0431\u043e\u043b\u0430\u0434\u044b.", - "OptionDisableUser": "\u0411\u04b1\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0493\u0430 \u0442\u044b\u0439\u044b\u043c \u0441\u0430\u043b\u0443", - "OptionDisableUserHelp": "\u0415\u0433\u0435\u0440 \u0442\u044b\u0439\u044b\u043c \u0441\u0430\u043b\u044b\u043d\u0441\u0430, \u0441\u0435\u0440\u0432\u0435\u0440 \u0431\u04b1\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0434\u0430\u043d \u0435\u0448\u049b\u0430\u043d\u0434\u0430\u0439 \u049b\u043e\u0441\u044b\u043b\u044b\u043c\u0493\u0430 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u043f\u0435\u0439\u0434\u0456. \u0411\u0430\u0440 \u049b\u043e\u0441\u044b\u043b\u044b\u043c\u0434\u0430\u0440 \u043a\u0435\u043d\u0435\u0442 \u04af\u0437\u0456\u043b\u0435\u0434\u0456.", - "HeaderAdvancedControl": "\u041a\u0435\u04a3\u0435\u0439\u0442\u0456\u043b\u0433\u0435\u043d \u0431\u0430\u0441\u049b\u0430\u0440\u0443", - "LabelName": "\u0410\u0442\u044b:", - "ButtonHelp": "\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0442\u0435\u0433\u0456 \u0430\u043d\u044b\u049b\u0442\u0430\u043c\u0430\u0493\u0430", - "OptionAllowUserToManageServer": "\u0411\u0443\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0493\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u0431\u0430\u0441\u049b\u0430\u0440\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", - "HeaderFeatureAccess": "\u0415\u0440\u0435\u043a\u0448\u0435\u043b\u0456\u043a\u0442\u0435\u0440\u0433\u0435 \u049b\u0430\u0442\u044b\u043d\u0430\u0443", - "OptionAllowMediaPlayback": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u043e\u0439\u043d\u0430\u0442\u0443\u0493\u0430 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", - "OptionAllowBrowsingLiveTv": "\u042d\u0444\u0438\u0440\u043b\u0456\u043a \u0422\u0414 \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u0493\u0430 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", - "OptionAllowDeleteLibraryContent": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0436\u043e\u044e\u0493\u0430 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", - "OptionAllowManageLiveTv": "\u042d\u0444\u0438\u0440\u043b\u0456\u043a \u0422\u0414 \u0436\u0430\u0437\u0443\u044b\u043d \u0431\u0430\u0441\u049b\u0430\u0440\u0443\u0493\u0430 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", - "OptionAllowRemoteControlOthers": "\u0411\u0430\u0441\u049b\u0430 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440\u0434\u044b \u049b\u0430\u0448\u044b\u049b\u0442\u0430\u043d \u0431\u0430\u0441\u049b\u0430\u0440\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", - "OptionAllowRemoteSharedDevices": "\u041e\u0440\u0442\u0430\u049b \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440\u0434\u044b \u049b\u0430\u0448\u044b\u049b\u0442\u0430\u043d \u0431\u0430\u0441\u049b\u0430\u0440\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", - "OptionAllowRemoteSharedDevicesHelp": "DLNA-\u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0431\u0430\u0441\u049b\u0430\u0440\u0493\u0430\u043d\u0448\u0430 \u0434\u0435\u0439\u0456\u043d \u043e\u0440\u0442\u0430\u049b \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0435\u0441\u0435\u043f\u0442\u0435\u043b\u0456\u043d\u0435\u0434\u0456.", - "HeaderRemoteControl": "\u049a\u0430\u0448\u044b\u049b\u0442\u0430\u043d \u0431\u0430\u0441\u049b\u0430\u0440\u0443", - "OptionMissingTmdbId": "TMDb Id \u0436\u043e\u049b", - "OptionIsHD": "HD", - "OptionIsSD": "SD", - "OptionMetascore": "Metascore \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u044b", - "ButtonSelect": "\u0411\u04e9\u043b\u0435\u043a\u0442\u0435\u0443", - "ButtonGroupVersions": "\u041d\u04b1\u0441\u049b\u0430\u043b\u0430\u0440\u0434\u044b \u0442\u043e\u043f\u0442\u0430\u0441\u0442\u044b\u0440\u0443", - "ButtonAddToCollection": "\u0416\u0438\u044b\u043d\u0442\u044b\u049b\u049b\u0430 \u04af\u0441\u0442\u0435\u0443", - "PismoMessage": "\u0421\u044b\u0439\u043b\u0430\u043d\u0493\u0430\u043d \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u0430\u0440\u049b\u044b\u043b\u044b Pismo File Mount \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0434\u0430.", - "TangibleSoftwareMessage": "\u0421\u044b\u0439\u043b\u0430\u043d\u0493\u0430\u043d \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u0430\u0440\u049b\u044b\u043b\u044b Tangible Solutions Java\/C# \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0433\u0456\u0448\u0442\u0435\u0440\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0434\u0430.", - "HeaderCredits": "\u049a\u04b1\u049b\u044b\u049b \u0438\u0435\u043b\u0435\u043d\u0443\u0448\u0456\u043b\u0435\u0440", - "PleaseSupportOtherProduces": "\u0411\u0456\u0437 \u049b\u043e\u043b\u0434\u0430\u043d\u0430\u0442\u044b\u043d \u0431\u0430\u0441\u049b\u0430 \u0442\u0435\u0433\u0456\u043d \u04e9\u043d\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u0436\u0430\u049b\u0442\u0430\u04a3\u044b\u0437:", - "VersionNumber": "\u041d\u04b1\u0441\u049b\u0430\u0441\u044b: {0}", - "TabPaths": "\u0416\u043e\u043b\u0434\u0430\u0440", - "TabServer": "\u0421\u0435\u0440\u0432\u0435\u0440", - "TabTranscoding": "\u049a\u0430\u0439\u0442\u0430 \u043a\u043e\u0434\u0442\u0430\u0443", - "TitleAdvanced": "\u041a\u0435\u04a3\u0435\u0439\u0442\u0456\u043b\u0433\u0435\u043d", - "LabelAutomaticUpdateLevel": "\u0410\u0432\u0442\u043e\u0436\u0430\u04a3\u0430\u0440\u0442\u0443 \u0434\u0435\u04a3\u0433\u0435\u0439\u0456", - "OptionRelease": "\u0420\u0435\u0441\u043c\u0438 \u0448\u044b\u0493\u0430\u0440\u044b\u043b\u044b\u043c", - "OptionBeta": "\u0411\u0435\u0442\u0430 \u043d\u04b1\u0441\u049b\u0430", - "OptionDev": "\u0416\u0430\u0441\u0430\u049b\u0442\u0430\u0443 (\u0442\u04b1\u0440\u0430\u049b\u0441\u044b\u0437)", - "LabelAllowServerAutoRestart": "\u0416\u0430\u04a3\u0430\u0440\u0442\u0443\u043b\u0430\u0440\u0434\u044b \u049b\u043e\u043b\u0434\u0430\u043d\u0443 \u04af\u0448\u0456\u043d \u0441\u0435\u0440\u0432\u0435\u0440\u0433\u0435 \u049b\u0430\u0439\u0442\u0430 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0443\u0434\u044b \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", - "LabelAllowServerAutoRestartHelp": "\u0422\u0435\u043a \u049b\u0430\u043d\u0430 \u0435\u0448\u049b\u0430\u043d\u0434\u0430\u0439 \u043f\u0430\u0439\u0434\u0430\u043b\u0443\u043d\u0448\u044b\u043b\u0430\u0440 \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456 \u0435\u043c\u0435\u0441, \u04d9\u0440\u0435\u043a\u0435\u0442\u0441\u0456\u0437 \u043c\u0435\u0437\u0433\u0456\u043b\u0434\u0435\u0440\u0434\u0435 \u0441\u0435\u0440\u0432\u0435\u0440 \u049b\u0430\u0439\u0442\u0430 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0430\u0434\u044b.", - "LabelEnableDebugLogging": "\u041a\u04af\u0439\u043a\u0435\u043b\u0442\u0456\u0440\u0443 \u0436\u0430\u0437\u0431\u0430\u043b\u0430\u0440\u044b\u043d \u0436\u04b1\u0440\u043d\u0430\u043b\u0434\u0430 \u049b\u043e\u0441\u0443", - "LabelRunServerAtStartup": "\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0443\u0434\u0430\u043d \u0431\u0430\u0441\u0442\u0430\u043f \u043e\u0440\u044b\u043d\u0434\u0430\u0443", - "LabelRunServerAtStartupHelp": "\u0411\u04b1\u043b Windows \u0436\u04b1\u043c\u044b\u0441\u044b\u043d \u0431\u0430\u0441\u0442\u0430\u0493\u0430\u043d\u0434\u0430 \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u0442\u0430\u049b\u0442\u0430\u0434\u0430\u0493\u044b \u0431\u0435\u043b\u0433\u0456\u0448\u0435 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0430\u0434\u044b. Windows \u049b\u044b\u0437\u043c\u0435\u0442\u0456\u043d \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u0443 \u04af\u0448\u0456\u043d, \u049b\u04b1\u0441\u0431\u0435\u043b\u0433\u0456\u043d\u0456 \u0430\u043b\u044b\u04a3\u044b\u0437 \u0436\u04d9\u043d\u0435 \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0456 Windows \u049a\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0456 \u0430\u0440\u049b\u044b\u043b\u044b \u043e\u0440\u044b\u043d\u0434\u0430\u04a3\u044b\u0437. \u041d\u0430\u0437\u0430\u0440 \u0430\u0443\u0434\u0430\u0440\u044b\u04a3\u044b\u0437! \u0411\u04b1\u043b \u0435\u043a\u0435\u0443\u0456\u043d \u0441\u043e\u043b \u043c\u0435\u0437\u0433\u0456\u043b\u0434\u0435 \u0431\u0456\u0440\u0433\u0435 \u043e\u0440\u044b\u043d\u0434\u0430\u0443 \u043c\u04af\u043c\u043a\u0456\u043d \u0435\u043c\u0435\u0441, \u0441\u043e\u043d\u044b\u043c\u0435\u043d \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0456 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u0443 \u0430\u043b\u0434\u044b\u043d\u0430\u043d \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u0442\u0430\u049b\u0442\u0430\u0434\u0430\u0493\u044b \u0431\u0435\u043b\u0433\u0456\u0448\u0435\u0434\u0435\u043d \u0448\u044b\u0493\u044b\u04a3\u044b\u0437.", - "ButtonSelectDirectory": "\u049a\u0430\u0442\u0430\u043b\u043e\u0433\u0442\u044b \u0431\u04e9\u043b\u0435\u043a\u0442\u0435\u0443", - "LabelCustomPaths": "\u049a\u0430\u043b\u0430\u0443\u044b\u04a3\u044b\u0437 \u0431\u043e\u0439\u044b\u043d\u0448\u0430 \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u0436\u043e\u043b\u0434\u0430\u0440\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437. \u04d8\u0434\u0435\u043f\u043a\u0456\u043b\u0435\u0440\u0434\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443 \u04af\u0448\u0456\u043d \u04e9\u0440\u0456\u0441\u0442\u0435\u0440\u0434\u0456 \u0431\u043e\u0441 \u049b\u0430\u043b\u0434\u044b\u0440\u044b\u04a3\u044b\u0437.", - "LabelCachePath": "\u041a\u044d\u0448\u043a\u0435 \u049b\u0430\u0440\u0430\u0439 \u0436\u043e\u043b:", - "LabelCachePathHelp": "\u0421\u0443\u0440\u0435\u0442 \u0441\u0438\u044f\u049b\u0442\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0434\u0456\u04a3 \u043a\u044d\u0448 \u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b \u04af\u0448\u0456\u043d \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u0436\u0430\u0439\u0493\u0430\u0441\u044b\u043c\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437.", - "LabelImagesByNamePath": "\u0410\u0442\u044b \u0431\u043e\u0439\u044b\u043d\u0448\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0433\u0435 \u049b\u0430\u0440\u0430\u0439 \u0436\u043e\u043b:", - "LabelImagesByNamePathHelp": "\u0416\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u044b\u043d\u0493\u0430\u043d \u0430\u043a\u0442\u0435\u0440, \u0436\u0430\u043d\u0440, \u0436\u04d9\u043d\u0435 \u0441\u0442\u0443\u0434\u0438\u044f \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456 \u04af\u0448\u0456\u043d \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u0436\u0430\u0439\u0493\u0430\u0441\u044b\u043c\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437.", - "LabelMetadataPath": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0433\u0435 \u049b\u0430\u0440\u0430\u0439 \u0436\u043e\u043b:", - "LabelMetadataPathHelp": "\u0415\u0433\u0435\u0440 \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u044b \u0456\u0448\u0456\u043d\u0434\u0435 \u0441\u0430\u049b\u0442\u0430\u043b\u043c\u0430\u0441\u0430, \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u044b\u043d\u0493\u0430\u043d \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u043c\u0435\u043b\u0435\u0440 \u0431\u0435\u043d \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u04af\u0448\u0456\u043d \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u0436\u0430\u0439\u0493\u0430\u0441\u044b\u043c\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437.", - "LabelTranscodingTempPath": "Transcoding temporary \u049b\u0430\u043b\u0442\u0430\u0441\u044b\u043d\u044b\u04a3 \u0436\u043e\u043b\u044b:", - "LabelTranscodingTempPathHelp": "\u0411\u04b1\u043b \u049b\u0430\u043b\u0442\u0430 \u049b\u04b1\u0440\u0430\u043c\u044b\u043d\u0434\u0430 \u049b\u0430\u0439\u0442\u0430 \u043a\u043e\u0434\u0442\u0430\u0443 \u049b\u04b1\u0440\u0430\u043b\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0430\u0442\u044b\u043d \u0436\u04b1\u043c\u044b\u0441 \u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b \u0431\u0430\u0440. \u0422\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u0436\u043e\u043b\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437, \u043d\u0435\u043c\u0435\u0441\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0434\u0456\u04a3 \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u049b\u0430\u043b\u0442\u0430\u0441\u044b \u0456\u0448\u0456\u043d\u0434\u0435\u0433\u0456 \u04d9\u0434\u0435\u043f\u043a\u0456\u0441\u0456\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443 \u04af\u0448\u0456\u043d \u0431\u043e\u0441 \u049b\u0430\u043b\u0434\u044b\u0440\u044b\u04a3\u044b\u0437.", - "TabBasics": "\u041d\u0435\u0433\u0456\u0437\u0433\u0456\u043b\u0435\u0440", - "TabTV": "\u0422\u0414", - "TabGames": "\u041e\u0439\u044b\u043d\u0434\u0430\u0440", - "TabMusic": "\u041c\u0443\u0437\u044b\u043a\u0430", - "TabOthers": "\u0411\u0430\u0441\u049b\u0430\u043b\u0430\u0440", - "HeaderExtractChapterImagesFor": "\u0421\u0430\u0445\u043d\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456\u043d \u0448\u044b\u0493\u0430\u0440\u044b\u043f \u0430\u043b\u0443 \u043c\u0430\u043a\u0441\u0430\u0442\u044b:", - "OptionMovies": "\u0424\u0438\u043b\u044c\u043c\u0434\u0435\u0440", - "OptionEpisodes": "\u0422\u0414-\u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440", - "OptionOtherVideos": "\u0411\u0430\u0441\u049b\u0430 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440", - "TitleMetadata": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440", - "LabelAutomaticUpdates": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0436\u0430\u04a3\u0430\u0440\u0442\u0443\u043b\u0430\u0440\u0434\u044b \u049b\u043e\u0441\u0443", - "LabelAutomaticUpdatesTmdb": "TheMovieDB.org \u043a\u04e9\u0437\u0456\u043d\u0435\u043d \u0430\u0432\u0442\u043e\u0436\u0430\u04a3\u0430\u0440\u0442\u0443\u0434\u044b \u049b\u043e\u0441\u0443", - "LabelAutomaticUpdatesTvdb": "TheTVDB.com \u043a\u04e9\u0437\u0456\u043d\u0435\u043d \u0430\u0432\u0442\u043e\u0436\u0430\u04a3\u0430\u0440\u0442\u0443\u0434\u044b \u049b\u043e\u0441\u0443", - "LabelAutomaticUpdatesFanartHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u0436\u0430\u04a3\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 fanart.tv \u0434\u0435\u0440\u0435\u049b\u043e\u0440\u044b\u043d\u0430 \u04af\u0441\u0442\u0435\u043b\u0433\u0435\u043d \u0431\u043e\u0439\u0434\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0436\u04af\u043a\u0442\u0435\u043b\u0456\u043f \u0430\u043b\u044b\u043d\u0430\u0434\u044b. \u0411\u0430\u0440 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 \u0430\u0443\u044b\u0441\u0442\u044b\u0440\u044b\u043b\u043c\u0430\u0439\u0434\u044b.", - "LabelAutomaticUpdatesTmdbHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u0436\u0430\u04a3\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 TheMovieDB.org \u0434\u0435\u0440\u0435\u049b\u043e\u0440\u044b\u043d\u0430 \u04af\u0441\u0442\u0435\u043b\u0433\u0435\u043d \u0431\u043e\u0439\u0434\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0436\u04af\u043a\u0442\u0435\u043b\u0456\u043f \u0430\u043b\u044b\u043d\u0430\u0434\u044b. \u0411\u0430\u0440 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 \u0430\u0443\u044b\u0441\u0442\u044b\u0440\u044b\u043b\u043c\u0430\u0439\u0434\u044b.", - "LabelAutomaticUpdatesTvdbHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u0436\u0430\u04a3\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 TheTVDB.com \u0434\u0435\u0440\u0435\u049b\u043e\u0440\u044b\u043d\u0430 \u04af\u0441\u0442\u0435\u043b\u0433\u0435\u043d \u0431\u043e\u0439\u0434\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0436\u04af\u043a\u0442\u0435\u043b\u0456\u043f \u0430\u043b\u044b\u043d\u0430\u0434\u044b. \u0411\u0430\u0440 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 \u0430\u0443\u044b\u0441\u0442\u044b\u0440\u044b\u043b\u043c\u0430\u0439\u0434\u044b.", - "LabelFanartApiKey": "\u04e8\u0437\u0456\u043d\u0434\u0456\u043a API-\u043a\u0456\u043b\u0442:", - "LabelFanartApiKeyHelp": "\u04e8\u0437\u0456\u043d\u0434\u0456\u043a API-\u043a\u0456\u043b\u0442\u0456\u0441\u0456\u0437 Fanart \u04af\u0448\u0456\u043d \u0436\u0456\u0431\u0435\u0440\u0456\u043b\u0433\u0435\u043d \u0441\u0430\u0443\u0430\u043b\u0434\u0430\u0440\u0493\u0430 7 \u043a\u04af\u043d\u0456\u043d\u0435\u043d \u0431\u04b1\u0440\u044b\u043d \u0440\u0430\u0441\u0442\u0430\u043b\u0493\u0430\u043d \u043d\u04d9\u0442\u0438\u0436\u0435\u043b\u0435\u0440 \u049b\u0430\u0439\u0442\u0430\u0440\u044b\u043b\u0430\u0434\u044b. \u04e8\u0437\u0456\u043d\u0434\u0456\u043a API-\u043a\u0456\u043b\u0442\u0456\u043c\u0435\u043d \u0431\u04b1\u043b 48 \u0441\u0430\u0493\u0430\u0442\u049b\u0430 \u0434\u0435\u0439\u0456\u043d \u049b\u044b\u0441\u049b\u0430\u0440\u0442\u044b\u043b\u0430\u0434\u044b, \u0430\u043b,\u0441\u043e\u043d\u0434\u0430\u0439-\u0430\u049b, Fanart VIP-\u043c\u04af\u0448\u0435\u0441\u0456 \u0431\u043e\u043b\u0441\u0430\u04a3\u044b\u0437, \u0431\u04b1\u043b \u0448\u0430\u043c\u0430\u043c\u0435\u043d 10 \u043c\u0438\u043d\u04e9\u0442\u043a\u0435 \u0434\u0435\u0439\u0456\u043d \u0442\u0430\u0493\u044b \u0434\u0430 \u049b\u044b\u0441\u049b\u0430\u0440\u0442\u044b\u043b\u0430\u0434\u044b.", - "ExtractChapterImagesHelp": "\u0421\u0430\u0445\u043d\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456\u043d \u0448\u044b\u0493\u0430\u0440\u044b\u043f \u0430\u043b\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0442\u0435\u0440\u0433\u0435 \u0441\u0430\u0445\u043d\u0430 \u0431\u04e9\u043b\u0435\u043a\u0442\u0435\u0443\u0433\u0435 \u0430\u0440\u043d\u0430\u043b\u0493\u0430\u043d \u0441\u044b\u0437\u0431\u0430\u043b\u044b\u049b \u043c\u04d9\u0437\u0456\u0440\u043b\u0435\u0440\u0434\u0456 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0435\u0434\u0456. \u0411\u04b1\u043b \u043f\u0440\u043e\u0446\u0435\u0441 \u0431\u0430\u044f\u0443, \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0434\u044b \u0442\u043e\u0437\u0434\u044b\u0440\u0430\u0442\u044b\u043d \u0436\u04d9\u043d\u0435 \u0431\u0456\u0440\u0430\u0437 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442 \u043a\u0435\u04a3\u0456\u0441\u0442\u0456\u043a\u0442\u0456 \u049b\u0430\u0436\u0435\u0442 \u0435\u0442\u0435\u0442\u0456\u043d \u0431\u043e\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d. \u041e\u043b \u0431\u0435\u0439\u043d\u0435\u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b \u0442\u0430\u0431\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u0436\u04d9\u043d\u0435 \u0442\u04af\u043d\u0433\u0456 \u0443\u0430\u049b\u044b\u0442\u044b\u043d\u0430 \u0436\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u0430\u043d \u0442\u0430\u043f\u0441\u044b\u0440\u043c\u0430 \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u0439\u0434\u0456. \u041e\u0440\u044b\u043d\u0434\u0430\u0443 \u043a\u0435\u0441\u0442\u0435\u0441\u0456 \u0416\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0443\u0448\u044b \u0430\u0439\u043c\u0430\u0493\u044b\u043d\u0434\u0430 \u0442\u0435\u04a3\u0448\u0435\u043b\u0435\u0434\u0456. \u0411\u04b1\u043b \u0442\u0430\u043f\u0441\u044b\u0440\u043c\u0430\u043d\u044b \u049b\u0430\u0440\u0431\u0430\u043b\u0430\u0441 \u0441\u0430\u0493\u0430\u0442\u0442\u0430\u0440\u044b\u043d\u0434\u0430 \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u0442\u043a\u0456\u0437\u0443 \u04b1\u0441\u044b\u043d\u044b\u043b\u043c\u0430\u0439\u0434\u044b.", - "LabelMetadataDownloadLanguage": "\u0416\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443 \u0442\u0456\u043b\u0456\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456:", - "ButtonAutoScroll": "\u0410\u0432\u0442\u043e\u0430\u0439\u043d\u0430\u043b\u0434\u044b\u0440\u0443", - "LabelImageSavingConvention": "\u0421\u0443\u0440\u0435\u0442 \u0441\u0430\u049b\u0442\u0430\u0443 \u043a\u0435\u043b\u0456\u0441\u0456\u043c\u0456:", - "LabelImageSavingConventionHelp": "Emby \u0435\u04a3 \u04d9\u0439\u0433\u0456\u043b\u0456 \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430 \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u043b\u0430\u0440\u0434\u0430\u0493\u044b \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0434\u0456 \u0442\u0430\u043d\u0438\u0434\u044b. \u0415\u0433\u0435\u0440 \u0431\u0430\u0441\u049b\u0430 \u0434\u0430 \u04e9\u043d\u0456\u043c\u0434\u0435\u0440\u0434\u0456, \u0441\u043e\u043d\u0434\u0430\u0439-\u0430\u049b, \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0493\u0430\u043d\u0434\u0430, \u0436\u04af\u043a\u0442\u0435\u0443 \u0448\u0430\u0440\u0442\u044b\u043d \u0442\u0430\u04a3\u0434\u0430\u043f \u0430\u043b\u0443 \u043f\u0430\u0439\u0434\u0430\u043b\u044b \u0431\u043e\u043b\u044b\u043f \u0442\u0430\u0431\u044b\u043b\u0430\u0434\u044b.", - "OptionImageSavingCompatible": "\u0421\u044b\u0438\u0441\u044b\u043c\u0434\u044b - Emby\/Kodi\/Plex", - "OptionImageSavingStandard": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0442\u044b - MB2", - "ButtonSignIn": "\u041a\u0456\u0440\u0443", - "TitleSignIn": "\u041a\u0456\u0440\u0443", - "HeaderPleaseSignIn": "\u041a\u0456\u0440\u0456\u04a3\u0456\u0437", - "LabelUser": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b:", - "LabelPassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437:", - "ButtonManualLogin": "\u049a\u043e\u043b\u043c\u0435\u043d \u043a\u0456\u0440\u0443", - "PasswordLocalhostMessage": "\u0416\u0435\u0440\u0433\u0456\u043b\u0456\u043a\u0442\u0456 (localhost) \u043e\u0440\u044b\u043d\u0434\u0430\u043d \u043a\u0456\u0440\u0433\u0435\u043d\u0434\u0435 \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0435\u0440 \u049b\u0430\u0436\u0435\u0442 \u0435\u043c\u0435\u0441.", - "TabGuide": "\u0410\u043d\u044b\u049b\u0442\u0430\u0493\u044b\u0448", - "TabChannels": "\u0410\u0440\u043d\u0430\u043b\u0430\u0440", - "TabCollections": "\u0416\u0438\u044b\u043d\u0442\u044b\u049b\u0442\u0430\u0440", - "HeaderChannels": "\u0410\u0440\u043d\u0430\u043b\u0430\u0440", - "TabRecordings": "\u0416\u0430\u0437\u0431\u0430\u043b\u0430\u0440", - "TabScheduled": "\u0416\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u0430\u043d", - "TabSeries": "\u0422\u0435\u043b\u0435\u0445\u0438\u043a\u0430\u044f\u043b\u0430\u0440", - "TabFavorites": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b\u043b\u0430\u0440", - "TabMyLibrary": "\u041c\u0435\u043d\u0456\u04a3 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043c", - "ButtonCancelRecording": "\u0416\u0430\u0437\u0443\u0434\u044b \u0431\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443", - "HeaderPrePostPadding": "\u0410\u043b\u0493\u0430\/\u0410\u0440\u0442\u049b\u0430 \u0448\u0435\u0433\u0456\u043d\u0456\u0441", - "LabelPrePaddingMinutes": "\u0410\u043b\u0493\u0430 \u0448\u0435\u0433\u0456\u043d\u0456\u0441, \u043c\u0438\u043d:", - "OptionPrePaddingRequired": "\u0410\u043b\u0493\u0430 \u0448\u0435\u0433\u0456\u043d\u0456\u0441 \u0436\u0430\u0437\u0443 \u04af\u0448\u0456\u043d \u043a\u0435\u0440\u0435\u043a.", - "LabelPostPaddingMinutes": "\u0410\u0440\u0442\u049b\u0430 \u0448\u0435\u0433\u0456\u043d\u0456\u0441, \u043c\u0438\u043d:", - "OptionPostPaddingRequired": "\u0410\u0440\u0442\u049b\u0430 \u0448\u0435\u0433\u0456\u043d\u0456\u0441 \u0436\u0430\u0437\u0443 \u04af\u0448\u0456\u043d \u043a\u0435\u0440\u0435\u043a.", - "HeaderWhatsOnTV": "\u042d\u0444\u0438\u0440\u0434\u0435", - "HeaderUpcomingTV": "\u041a\u04af\u0442\u0456\u043b\u0433\u0435\u043d \u0422\u0414", - "TabStatus": "\u041a\u04af\u0439", - "TabSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440", - "ButtonRefreshGuideData": "\u0410\u043d\u044b\u049b\u0442\u0430\u0493\u044b\u0448 \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456\u043d \u0436\u0430\u04a3\u0493\u044b\u0440\u0442\u0443", - "ButtonRefresh": "\u0416\u0430\u04a3\u0493\u044b\u0440\u0442\u0443", - "ButtonAdvancedRefresh": "\u041a\u0435\u04a3\u0435\u0439\u0442\u0456\u043b\u0433\u0435\u043d \u0436\u0430\u04a3\u0493\u044b\u0440\u0442\u0443", - "OptionPriority": "\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442", - "OptionRecordOnAllChannels": "\u0411\u0430\u0440\u043b\u044b\u049b \u0430\u0440\u043d\u0430\u043b\u0430\u0440\u0434\u0430\u043d \u0436\u0430\u0437\u044b\u043f \u0430\u043b\u0443", - "OptionRecordAnytime": "\u04d8\u0440 \u0443\u0430\u049b\u044b\u0442\u0442\u0430 \u0436\u0430\u0437\u044b\u043f \u0430\u043b\u0443" + "LabelSelectViewStyles": "\u041c\u044b\u043d\u0430\u0443 \u04af\u0448\u0456\u043d \u0436\u0430\u049b\u0441\u0430\u0440\u0442\u044b\u043b\u0493\u0430\u043d \u0431\u0435\u0439\u043d\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u043d \u049b\u043e\u0441\u0443:", + "LabelSelectViewStylesHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u043c\u04b1\u043d\u0434\u0430\u0439 \u04b0\u0441\u044b\u043d\u044b\u0441\u0442\u0430\u0440, \u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456, \u0416\u0430\u043d\u0440\u043b\u0430\u0440\u0434\u044b \u0436\u04d9\u043d\u0435 \u0431\u0430\u0441\u049b\u0430 \u0434\u0430 \u0441\u0430\u043d\u0430\u0442\u0442\u0430\u0440\u044b\u043d \u04b1\u0441\u044b\u043d\u0443 \u04af\u0448\u0456\u043d \u0430\u0441\u043f\u0435\u043a\u0442\u0442\u0435\u0440 \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u0430\u0440\u049b\u044b\u043b\u044b \u049b\u04b1\u0440\u044b\u043b\u0430\u0434\u044b. \u0410\u0436\u044b\u0440\u0430\u0442\u044b\u043b\u0441\u0430, \u043e\u043b\u0430\u0440 \u049b\u0430\u0440\u0430\u043f\u0430\u0439\u044b\u043c \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440 \u0430\u0440\u049b\u044b\u043b\u044b \u043a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u0435\u0434\u0456.", + "TabPhotos": "\u0424\u043e\u0442\u043e\u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440", + "TabVideos": "\u0411\u0435\u0439\u043d\u0435\u043b\u0435\u0440", + "HeaderWelcomeToEmby": "Emby \u0456\u0448\u0456\u043d\u0435 \u049b\u043e\u0448 \u043a\u0435\u043b\u0434\u0456\u04a3\u0456\u0437!", + "EmbyIntroMessage": "Emby \u0430\u0440\u049b\u044b\u043b\u044b \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440\u0434\u0456, \u043c\u0443\u0437\u044b\u043a\u0430\u043d\u044b \u0436\u04d9\u043d\u0435 \u0444\u043e\u0442\u043e\u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0434\u0456 Emby Server \u0436\u0430\u0493\u044b\u043d\u0430\u043d \u049b\u0430\u043b\u0442\u0430\u0444\u043e\u043d\u0434\u0430\u0440\u0493\u0430, \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u0442\u0435\u0440\u0433\u0435 \u0436\u04d9\u043d\u0435 \u0442\u0430\u0493\u044b \u0431\u0430\u0441\u049b\u0430 \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440\u0493\u0430 \u0430\u0493\u044b\u043d\u043c\u0435\u043d \u0436\u0435\u04a3\u0456\u043b \u0442\u0430\u0441\u044b\u043c\u0430\u043b\u0434\u0430\u0443\u044b\u04a3\u044b\u0437 \u043c\u04af\u043c\u043a\u0456\u043d", + "ButtonSkip": "\u04e8\u0442\u043a\u0456\u0437\u0443", + "TextConnectToServerManually": "\u0421\u0435\u0440\u0432\u0435\u0440\u0433\u0435 \u049b\u043e\u043b\u043c\u0435\u043d \u049b\u043e\u0441\u044b\u043b\u0443", + "ButtonSignInWithConnect": "Emby Connect \u0430\u0440\u049b\u044b\u043b\u044b \u049b\u043e\u0441\u044b\u043b\u0443", + "ButtonConnect": "\u049a\u043e\u0441\u044b\u043b\u0443", + "LabelServerHost": "\u0425\u043e\u0441\u0442:", + "LabelServerHostHelp": "192.168.1.100 \u043d\u0435\u043c\u0435\u0441\u0435 https:\/\/myserver.com", + "LabelServerPort": "\u041f\u043e\u0440\u0442:", + "HeaderNewServer": "\u0416\u0430\u04a3\u0430 \u0441\u0435\u0440\u0432\u0435\u0440", + "ButtonChangeServer": "\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u0430\u0443\u044b\u0441\u0442\u044b\u0440\u0443", + "HeaderConnectToServer": "\u0421\u0435\u0440\u0432\u0435\u0440\u0433\u0435 \u049b\u043e\u0441\u044b\u043b\u0443", + "OptionReportList": "\u0422\u0456\u0437\u0456\u043c\u0434\u0435\u0440", + "OptionReportStatistics": "\u0421\u0430\u043d\u0430\u049b\u0442\u0430\u0440", + "OptionReportGrouping": "\u0422\u043e\u043f\u0442\u0430\u0441\u0442\u044b\u0440\u0443", + "HeaderExport": "\u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0442\u0430\u0443", + "HeaderColumns": "\u0411\u0430\u0493\u0430\u043d\u0434\u0430\u0440", + "ButtonReset": "\u042b\u0441\u044b\u0440\u0443", + "OptionEnableExternalVideoPlayers": "\u0421\u044b\u0440\u0442\u049b\u044b \u043e\u0439\u043d\u0430\u0442\u049b\u044b\u0448\u0442\u0430\u0440\u0434\u044b \u049b\u043e\u0441\u0443", + "ButtonUnlockGuide": "\u0410\u043d\u044b\u049b\u0442\u0430\u0493\u044b\u0448\u0442\u044b \u049b\u04b1\u0440\u0441\u0430\u0443\u0434\u0430\u043d \u0431\u043e\u0441\u0430\u0442\u0443", + "LabelEnableFullScreen": "\u0422\u043e\u043b\u044b\u049b \u044d\u043a\u0440\u0430\u043d \u0440\u0435\u0436\u0456\u043c\u0456\u043d \u049b\u043e\u0441\u0443", + "LabelEnableChromecastAc3Passthrough": "Chromecast \u04e9\u0442\u043a\u0456\u043d\u0448\u0456 AC3 \u049b\u043e\u0441\u0443", + "LabelSyncPath": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0456\u043b\u0433\u0435\u043d \u043c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b\u04a3 \u0436\u043e\u043b\u044b:", + "LabelEmail": "\u042d-\u043f\u043e\u0448\u0442\u0430:", + "LabelUsername": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0430\u0442\u044b:", + "HeaderSignUp": "\u0422\u0456\u0440\u043a\u0435\u043b\u0443", + "LabelPasswordConfirm": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437 (\u0440\u0430\u0441\u0442\u0430\u0443)", + "ButtonAddServer": "\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u04af\u0441\u0442\u0435\u0443", + "TabHomeScreen": "\u0411\u0430\u0441\u0442\u044b \u044d\u043a\u0440\u0430\u043d", + "HeaderDisplay": "\u0411\u0435\u0439\u043d\u0435\u043b\u0435\u0443", + "HeaderNavigation": "\u0428\u0430\u0440\u043b\u0430\u0443", + "LegendTheseSettingsShared": "\u041e\u0441\u044b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440 \u0431\u0430\u0440\u043b\u044b\u049b \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440\u0434\u0430 \u043e\u0440\u0442\u0430\u049b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043b\u0430\u0434\u044b." }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ko.json b/MediaBrowser.Server.Implementations/Localization/Server/ko.json index aedc61071..b335850a4 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ko.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ko.json @@ -1,8 +1,19 @@ { - "TabWebClient": "Web Client", + "LabelExit": "Schweinsteiger", + "LabelVisitCommunity": "Visit Community", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standard", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Browse Library", + "LabelConfigureServer": "Configure Emby", + "LabelOpenLibraryViewer": "Open Library Viewer", + "LabelRestartServer": "Restart Server", "LabelShowLogWindow": "Show Log Window", "LabelPrevious": "Previous", "LabelFinish": "Finish", + "FolderTypeMixed": "Mixed content", "LabelNext": "Next", "LabelYoureDone": "You're Done!", "WelcomeToProject": "Welcome to Emby!", @@ -75,12 +86,11 @@ "ButtonDonateWithPayPal": "Donate with PayPal", "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Emby online account user name or password.", + "LabelEnterConnectUserName": "Username or email:", + "LabelEnterConnectUserNameHelp": "This is your Emby online account username or password.", "LabelEnableEnhancedMovies": "Enable enhanced movie displays", "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", "FolderTypeMovies": "Movies", "FolderTypeMusic": "Music", "FolderTypeAdultVideos": "Adult videos", @@ -277,7 +287,9 @@ "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", "TabGeneral": "General", "TitleSupport": "Support", + "LabelSeasonNumber": "Season number", "TabLog": "Log", + "LabelEpisodeNumber": "Episode number", "TabAbout": "About", "TabSupporterKey": "Supporter Key", "TabBecomeSupporter": "Become a Supporter", @@ -303,6 +315,9 @@ "OptionAllowRemoteControlOthers": "Allow remote control of other users", "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", "HeaderRemoteControl": "Remote Control", "OptionMissingTmdbId": "Missing Tmdb Id", "OptionIsHD": "HD", @@ -571,8 +586,6 @@ "LabelSkipped": "Skipped", "HeaderEpisodeOrganization": "Episode Organization", "LabelSeries": "Series:", - "LabelSeasonNumber": "Season number:", - "LabelEpisodeNumber": "Episode number:", "LabelEndingEpisodeNumber": "Ending episode number:", "LabelEndingEpisodeNumberHelp": "Only required for multi-episode files", "HeaderSupportTheTeam": "Support the Emby Team", @@ -860,6 +873,7 @@ "HeaderTypeText": "Enter Text", "LabelTypeText": "Text", "HeaderSearchForSubtitles": "Search for Subtitles", + "ButtonMore": "More", "MessageNoSubtitleSearchResultsFound": "No search results founds.", "TabDisplay": "Display", "TabLanguages": "Languages", @@ -890,7 +904,7 @@ "HeaderLiveTv": "Live TV", "HeaderReports": "Reports", "HeaderMetadataManager": "Metadata Manager", - "HeaderPreferences": "Preferences", + "HeaderSettings": "Settings", "MessageLoadingChannels": "Loading channel content...", "MessageLoadingContent": "Loading content...", "ButtonMarkRead": "Mark Read", @@ -1088,7 +1102,6 @@ "OptionReportArtists": "Artists", "OptionReportAlbums": "Albums", "OptionReportAdultVideos": "Adult videos", - "ButtonMore": "More", "HeaderActivity": "Activity", "ScheduledTaskStartedWithName": "{0} started", "ScheduledTaskCancelledWithName": "{0} was cancelled", @@ -1218,6 +1231,7 @@ "OptionNoThemeVideo": "No Theme Video", "LabelOneTimeDonationAmount": "Donation amount:", "ButtonDonate": "Donate", + "ButtonPurchase": "Purchase", "OptionActor": "Actor", "OptionComposer": "Composer", "OptionDirector": "Director", @@ -1237,7 +1251,6 @@ "HeaderDeveloperInfo": "Developer Info", "HeaderRevisionHistory": "Revision History", "ButtonViewWebsite": "View website", - "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderXmlSettings": "Xml Settings", "HeaderXmlDocumentAttributes": "Xml Document Attributes", "HeaderXmlDocumentAttribute": "Xml Document Attribute", @@ -1251,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", "LabelExternalPlayers": "External players:", "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", "HeaderSubtitleProfile": "Subtitle Profile", "HeaderSubtitleProfiles": "Subtitle Profiles", "HeaderSubtitleProfilesHelp": "Subtitle profiles describe the subtitle formats supported by the device.", @@ -1379,7 +1395,7 @@ "HeaderUpcomingMovies": "Upcoming Movies", "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", - "ButtonMoreItems": "More...", + "ButtonMoreItems": "More", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", @@ -1398,14 +1414,6 @@ "OptionEnableFullSpeedConversion": "Enable full speed conversion", "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", "HeaderViewStyles": "View Styles", "LabelSelectViewStyles": "Enable enhanced presentations for:", "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", @@ -1423,15 +1431,24 @@ "HeaderNewServer": "New Server", "ButtonChangeServer": "Change Server", "HeaderConnectToServer": "Connect to Server", - "LabelExit": "Schweinsteiger", - "LabelVisitCommunity": "Visit Community", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standard", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Browse Library", - "LabelConfigureServer": "Configure Emby", - "LabelOpenLibraryViewer": "Open Library Viewer", - "LabelRestartServer": "Restart Server" + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "HeaderExport": "Export", + "HeaderColumns": "Columns", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ms.json b/MediaBrowser.Server.Implementations/Localization/Server/ms.json index 39faa541d..0d9ef6063 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ms.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ms.json @@ -1,5 +1,255 @@ { - "TabWebClient": "Web Client", + "LabelExit": "Tutup", + "LabelVisitCommunity": "Melawat Masyarakat", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Biasa", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Imbas Pengumpulan", + "LabelConfigureServer": "Configure Emby", + "LabelOpenLibraryViewer": "Open Library Viewer", + "LabelRestartServer": "Restart Server", + "LabelShowLogWindow": "Show Log Window", + "LabelPrevious": "Sebelumnya", + "LabelFinish": "Habis", + "FolderTypeMixed": "Mixed content", + "LabelNext": "Seterusnya", + "LabelYoureDone": "Kamu Selesai!", + "WelcomeToProject": "Welcome to Emby!", + "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", + "TellUsAboutYourself": "Tell us about yourself", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "Your first name:", + "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", + "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", + "LabelWindowsService": "Windows Service", + "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", + "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", + "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", + "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", + "LabelConfigureSettings": "Configure settings", + "LabelEnableVideoImageExtraction": "Enable video image extraction", + "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", + "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", + "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", + "HeaderTermsOfService": "Emby Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToEmbyConnect": "Linked to Emby Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", + "ButtonOk": "Ok", + "ButtonCancel": "Cancel", + "ButtonExit": "Exit", + "ButtonNew": "New", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "Username or email:", + "LabelEnterConnectUserNameHelp": "This is your Emby online account username or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "Setup your media library", + "ButtonAddMediaFolder": "Add media folder", + "LabelFolderType": "Folder type:", + "ReferToMediaLibraryWiki": "Refer to the media library wiki.", + "LabelCountry": "Country:", + "LabelLanguage": "Language:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "Preferred metadata language:", + "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", + "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", + "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", + "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", + "TabPreferences": "Preferences", + "TabPassword": "Password", + "TabLibraryAccess": "Library Access", + "TabAccess": "Access", + "TabImage": "Image", + "TabProfile": "Profile", + "TabMetadata": "Metadata", + "TabImages": "Images", + "TabNotifications": "Notifications", + "TabCollectionTitles": "Titles", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", + "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", + "HeaderVideoPlaybackSettings": "Video Playback Settings", + "HeaderPlaybackSettings": "Playback Settings", + "LabelAudioLanguagePreference": "Audio language preference:", + "LabelSubtitleLanguagePreference": "Subtitle language preference:", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Only forced subtitles", + "OptionAlwaysPlaySubtitles": "Always play subtitles", + "OptionNoSubtitles": "No Subtitles", + "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", + "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", + "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", + "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", + "TabProfiles": "Profiles", + "TabSecurity": "Security", + "ButtonAddUser": "Add User", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "Save", + "ButtonResetPassword": "Reset Password", + "LabelNewPassword": "New password:", + "LabelNewPasswordConfirm": "New password confirm:", + "HeaderCreatePassword": "Create Password", + "LabelCurrentPassword": "Current password:", + "LabelMaxParentalRating": "Maximum allowed parental rating:", + "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", + "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", + "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", + "ButtonDeleteImage": "Delete Image", + "LabelSelectUsers": "Select users:", + "ButtonUpload": "Upload", + "HeaderUploadNewImage": "Upload New Image", + "LabelDropImageHere": "Drop image here", + "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", + "MessageNothingHere": "Nothing here.", + "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", + "TabSuggested": "Suggested", + "TabSuggestions": "Suggestions", + "TabLatest": "Latest", + "TabUpcoming": "Upcoming", + "TabShows": "Shows", + "TabEpisodes": "Episodes", + "TabGenres": "Genres", + "TabPeople": "People", + "TabNetworks": "Networks", + "HeaderUsers": "Users", + "HeaderFilters": "Filters:", + "ButtonFilter": "Filter", + "OptionFavorite": "Favorites", + "OptionLikes": "Likes", + "OptionDislikes": "Dislikes", + "OptionActors": "Actors", + "OptionGuestStars": "Guest Stars", + "OptionDirectors": "Directors", + "OptionWriters": "Writers", + "OptionProducers": "Producers", + "HeaderResume": "Resume", + "HeaderNextUp": "Next Up", + "NoNextUpItemsMessage": "None found. Start watching your shows!", + "HeaderLatestEpisodes": "Latest Episodes", + "HeaderPersonTypes": "Person Types:", + "TabSongs": "Songs", + "TabAlbums": "Albums", + "TabArtists": "Artists", + "TabAlbumArtists": "Album Artists", + "TabMusicVideos": "Music Videos", + "ButtonSort": "Sort", + "HeaderSortBy": "Sort By:", + "HeaderSortOrder": "Sort Order:", + "OptionPlayed": "Played", + "OptionUnplayed": "Unplayed", + "OptionAscending": "Ascending", + "OptionDescending": "Descending", + "OptionRuntime": "Runtime", + "OptionReleaseDate": "Release Date", + "OptionPlayCount": "Play Count", + "OptionDatePlayed": "Date Played", + "OptionDateAdded": "Date Added", + "OptionAlbumArtist": "Album Artist", + "OptionArtist": "Artist", + "OptionAlbum": "Album", + "OptionTrackName": "Track Name", + "OptionCommunityRating": "Community Rating", + "OptionNameSort": "Name", + "OptionFolderSort": "Folders", + "OptionBudget": "Budget", + "OptionRevenue": "Revenue", + "OptionPoster": "Poster", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "Backdrop", + "OptionTimeline": "Timeline", + "OptionThumb": "Thumb", + "OptionThumbCard": "Thumb card", + "OptionBanner": "Banner", + "OptionCriticRating": "Critic Rating", + "OptionVideoBitrate": "Video Bitrate", + "OptionResumable": "Resumable", + "ScheduledTasksHelp": "Click a task to adjust its schedule.", + "ScheduledTasksTitle": "Scheduled Tasks", + "TabMyPlugins": "My Plugins", + "TabCatalog": "Catalog", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "Automatic Updates", + "HeaderNowPlaying": "Now Playing", + "HeaderLatestAlbums": "Latest Albums", + "HeaderLatestSongs": "Latest Songs", + "HeaderRecentlyPlayed": "Recently Played", + "HeaderFrequentlyPlayed": "Frequently Played", + "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", + "LabelVideoType": "Video Type:", + "OptionBluray": "Bluray", + "OptionDvd": "Dvd", + "OptionIso": "Iso", + "Option3D": "3D", + "LabelFeatures": "Features:", + "LabelService": "Service:", + "LabelStatus": "Status:", + "LabelVersion": "Version:", "LabelLastResult": "Last result:", "OptionHasSubtitles": "Subtitles", "OptionHasTrailer": "Trailer", @@ -37,7 +287,9 @@ "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", "TabGeneral": "General", "TitleSupport": "Support", + "LabelSeasonNumber": "Season number", "TabLog": "Log", + "LabelEpisodeNumber": "Episode number", "TabAbout": "About", "TabSupporterKey": "Supporter Key", "TabBecomeSupporter": "Become a Supporter", @@ -63,6 +315,9 @@ "OptionAllowRemoteControlOthers": "Allow remote control of other users", "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", "HeaderRemoteControl": "Remote Control", "OptionMissingTmdbId": "Missing Tmdb Id", "OptionIsHD": "HD", @@ -331,8 +586,6 @@ "LabelSkipped": "Skipped", "HeaderEpisodeOrganization": "Episode Organization", "LabelSeries": "Series:", - "LabelSeasonNumber": "Season number:", - "LabelEpisodeNumber": "Episode number:", "LabelEndingEpisodeNumber": "Ending episode number:", "LabelEndingEpisodeNumberHelp": "Only required for multi-episode files", "HeaderSupportTheTeam": "Support the Emby Team", @@ -620,6 +873,7 @@ "HeaderTypeText": "Enter Text", "LabelTypeText": "Text", "HeaderSearchForSubtitles": "Search for Subtitles", + "ButtonMore": "More", "MessageNoSubtitleSearchResultsFound": "No search results founds.", "TabDisplay": "Display", "TabLanguages": "Languages", @@ -650,7 +904,7 @@ "HeaderLiveTv": "Live TV", "HeaderReports": "Reports", "HeaderMetadataManager": "Metadata Manager", - "HeaderPreferences": "Preferences", + "HeaderSettings": "Settings", "MessageLoadingChannels": "Loading channel content...", "MessageLoadingContent": "Loading content...", "ButtonMarkRead": "Mark Read", @@ -848,7 +1102,6 @@ "OptionReportArtists": "Artists", "OptionReportAlbums": "Albums", "OptionReportAdultVideos": "Adult videos", - "ButtonMore": "More", "HeaderActivity": "Activity", "ScheduledTaskStartedWithName": "{0} started", "ScheduledTaskCancelledWithName": "{0} was cancelled", @@ -978,6 +1231,7 @@ "OptionNoThemeVideo": "No Theme Video", "LabelOneTimeDonationAmount": "Donation amount:", "ButtonDonate": "Donate", + "ButtonPurchase": "Purchase", "OptionActor": "Actor", "OptionComposer": "Composer", "OptionDirector": "Director", @@ -997,7 +1251,6 @@ "HeaderDeveloperInfo": "Developer Info", "HeaderRevisionHistory": "Revision History", "ButtonViewWebsite": "View website", - "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderXmlSettings": "Xml Settings", "HeaderXmlDocumentAttributes": "Xml Document Attributes", "HeaderXmlDocumentAttribute": "Xml Document Attribute", @@ -1011,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", "LabelExternalPlayers": "External players:", "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", "HeaderSubtitleProfile": "Subtitle Profile", "HeaderSubtitleProfiles": "Subtitle Profiles", "HeaderSubtitleProfilesHelp": "Subtitle profiles describe the subtitle formats supported by the device.", @@ -1139,7 +1395,7 @@ "HeaderUpcomingMovies": "Upcoming Movies", "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", - "ButtonMoreItems": "More...", + "ButtonMoreItems": "More", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", @@ -1158,14 +1414,6 @@ "OptionEnableFullSpeedConversion": "Enable full speed conversion", "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", "HeaderViewStyles": "View Styles", "LabelSelectViewStyles": "Enable enhanced presentations for:", "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", @@ -1183,255 +1431,24 @@ "HeaderNewServer": "New Server", "ButtonChangeServer": "Change Server", "HeaderConnectToServer": "Connect to Server", - "LabelExit": "Tutup", - "LabelVisitCommunity": "Melawat Masyarakat", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Biasa", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Imbas Pengumpulan", - "LabelConfigureServer": "Configure Emby", - "LabelOpenLibraryViewer": "Open Library Viewer", - "LabelRestartServer": "Restart Server", - "LabelShowLogWindow": "Show Log Window", - "LabelPrevious": "Sebelumnya", - "LabelFinish": "Habis", - "LabelNext": "Seterusnya", - "LabelYoureDone": "Kamu Selesai!", - "WelcomeToProject": "Welcome to Emby!", - "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", - "TellUsAboutYourself": "Tell us about yourself", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "Your first name:", - "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", - "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "Windows Service", - "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", - "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", - "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", - "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", - "LabelConfigureSettings": "Configure settings", - "LabelEnableVideoImageExtraction": "Enable video image extraction", - "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", - "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", - "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "HeaderTermsOfService": "Emby Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LinkedToEmbyConnect": "Linked to Emby Connect", - "HeaderSupporterBenefits": "Supporter Benefits", - "HeaderAddUser": "Add User", - "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", - "LabelPinCode": "Pin code:", - "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", - "HeaderSync": "Sync", - "ButtonOk": "Ok", - "ButtonCancel": "Cancel", - "ButtonExit": "Exit", - "ButtonNew": "New", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "TabPlaylist": "Playlist", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Emby online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "Setup your media library", - "ButtonAddMediaFolder": "Add media folder", - "LabelFolderType": "Folder type:", - "ReferToMediaLibraryWiki": "Refer to the media library wiki.", - "LabelCountry": "Country:", - "LabelLanguage": "Language:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "Preferred metadata language:", - "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", - "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", - "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", - "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", - "TabPreferences": "Preferences", - "TabPassword": "Password", - "TabLibraryAccess": "Library Access", - "TabAccess": "Access", - "TabImage": "Image", - "TabProfile": "Profile", - "TabMetadata": "Metadata", - "TabImages": "Images", - "TabNotifications": "Notifications", - "TabCollectionTitles": "Titles", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", - "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", - "HeaderVideoPlaybackSettings": "Video Playback Settings", - "HeaderPlaybackSettings": "Playback Settings", - "LabelAudioLanguagePreference": "Audio language preference:", - "LabelSubtitleLanguagePreference": "Subtitle language preference:", - "OptionDefaultSubtitles": "Default", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "No Subtitles", - "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", - "TabProfiles": "Profiles", - "TabSecurity": "Security", - "ButtonAddUser": "Add User", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "Save", - "ButtonResetPassword": "Reset Password", - "LabelNewPassword": "New password:", - "LabelNewPasswordConfirm": "New password confirm:", - "HeaderCreatePassword": "Create Password", - "LabelCurrentPassword": "Current password:", - "LabelMaxParentalRating": "Maximum allowed parental rating:", - "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", - "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", - "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", - "ButtonDeleteImage": "Delete Image", - "LabelSelectUsers": "Select users:", - "ButtonUpload": "Upload", - "HeaderUploadNewImage": "Upload New Image", - "LabelDropImageHere": "Drop image here", - "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", - "MessageNothingHere": "Nothing here.", - "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", - "TabSuggested": "Suggested", - "TabSuggestions": "Suggestions", - "TabLatest": "Latest", - "TabUpcoming": "Upcoming", - "TabShows": "Shows", - "TabEpisodes": "Episodes", - "TabGenres": "Genres", - "TabPeople": "People", - "TabNetworks": "Networks", - "HeaderUsers": "Users", - "HeaderFilters": "Filters:", - "ButtonFilter": "Filter", - "OptionFavorite": "Favorites", - "OptionLikes": "Likes", - "OptionDislikes": "Dislikes", - "OptionActors": "Actors", - "OptionGuestStars": "Guest Stars", - "OptionDirectors": "Directors", - "OptionWriters": "Writers", - "OptionProducers": "Producers", - "HeaderResume": "Resume", - "HeaderNextUp": "Next Up", - "NoNextUpItemsMessage": "None found. Start watching your shows!", - "HeaderLatestEpisodes": "Latest Episodes", - "HeaderPersonTypes": "Person Types:", - "TabSongs": "Songs", - "TabAlbums": "Albums", - "TabArtists": "Artists", - "TabAlbumArtists": "Album Artists", - "TabMusicVideos": "Music Videos", - "ButtonSort": "Sort", - "HeaderSortBy": "Sort By:", - "HeaderSortOrder": "Sort Order:", - "OptionPlayed": "Played", - "OptionUnplayed": "Unplayed", - "OptionAscending": "Ascending", - "OptionDescending": "Descending", - "OptionRuntime": "Runtime", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "Play Count", - "OptionDatePlayed": "Date Played", - "OptionDateAdded": "Date Added", - "OptionAlbumArtist": "Album Artist", - "OptionArtist": "Artist", - "OptionAlbum": "Album", - "OptionTrackName": "Track Name", - "OptionCommunityRating": "Community Rating", - "OptionNameSort": "Name", - "OptionFolderSort": "Folders", - "OptionBudget": "Budget", - "OptionRevenue": "Revenue", - "OptionPoster": "Poster", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "Backdrop", - "OptionTimeline": "Timeline", - "OptionThumb": "Thumb", - "OptionThumbCard": "Thumb card", - "OptionBanner": "Banner", - "OptionCriticRating": "Critic Rating", - "OptionVideoBitrate": "Video Bitrate", - "OptionResumable": "Resumable", - "ScheduledTasksHelp": "Click a task to adjust its schedule.", - "ScheduledTasksTitle": "Scheduled Tasks", - "TabMyPlugins": "My Plugins", - "TabCatalog": "Catalog", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Automatic Updates", - "HeaderNowPlaying": "Now Playing", - "HeaderLatestAlbums": "Latest Albums", - "HeaderLatestSongs": "Latest Songs", - "HeaderRecentlyPlayed": "Recently Played", - "HeaderFrequentlyPlayed": "Frequently Played", - "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", - "LabelVideoType": "Video Type:", - "OptionBluray": "Bluray", - "OptionDvd": "Dvd", - "OptionIso": "Iso", - "Option3D": "3D", - "LabelFeatures": "Features:", - "LabelService": "Service:", - "LabelStatus": "Status:", - "LabelVersion": "Version:" + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "HeaderExport": "Export", + "HeaderColumns": "Columns", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/nb.json b/MediaBrowser.Server.Implementations/Localization/Server/nb.json index b78455ba5..9460bf637 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/nb.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/nb.json @@ -1,5 +1,324 @@ { - "TabWebClient": "Web Klient", + "LabelExit": "Avslutt", + "LabelVisitCommunity": "Bes\u00f8k oss", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standard", + "LabelApiDocumentation": "API-dokumentasjon", + "LabelDeveloperResources": "Ressurser for Utviklere", + "LabelBrowseLibrary": "Browse biblioteket", + "LabelConfigureServer": "Konfigurer Emby", + "LabelOpenLibraryViewer": "\u00c5pne Biblioteket", + "LabelRestartServer": "Restart serveren", + "LabelShowLogWindow": "Se logg-vinduet", + "LabelPrevious": "Forrige", + "LabelFinish": "Ferdig", + "FolderTypeMixed": "Mixed content", + "LabelNext": "Neste", + "LabelYoureDone": "Ferdig!", + "WelcomeToProject": "Velkommen til Emby", + "ThisWizardWillGuideYou": "Denne wizarden vil guide deg gjennom server-konfigurasjonen. For \u00e5 begynne, vennligst velg spr\u00e5k.", + "TellUsAboutYourself": "Fortell om deg selv", + "ButtonQuickStartGuide": "Hurtigstartveiledning", + "LabelYourFirstName": "Ditt fornavn", + "MoreUsersCanBeAddedLater": "Du kan legge til flere brukere senere via Dashbord", + "UserProfilesIntro": "Emby har innebygd st\u00f8tte for brukerprofiler, slik at hver bruker har sine egne skjerminnstillinger, playstation og foreldrekontroll.", + "LabelWindowsService": "Windows Service", + "AWindowsServiceHasBeenInstalled": "Windows Service har blitt installert", + "WindowsServiceIntro1": "Emby Server normalt kj\u00f8rer som en desktop applikasjon, men hvis du foretrekker \u00e5 kj\u00f8re det som en bakgrunnstjeneste, kan det i stedet startes fra Windows Services i kontrollpanelet.", + "WindowsServiceIntro2": "Hvis du bruker Windows, v\u00e6r oppmerksom p\u00e5 at det ikke kan kj\u00f8res samtidig som ikonet, slik at du trenger \u00e5 g\u00e5 ut av \"trayen\" for \u00e5 kj\u00f8re tjenesten. Tjenesten m\u00e5 ogs\u00e5 konfigureres med administratorrettigheter via kontrollpanelet. V\u00e6r oppmerksom p\u00e5 at p\u00e5 denne tiden tjenesten ikke er i stand til selv-oppdatering, s\u00e5 nye versjoner vil kreve manuell interaksjon.", + "WizardCompleted": "Det er alt vi trenger for n\u00e5. Emby har begynt \u00e5 samle informasjon om mediebiblioteket. Sjekk ut noen av v\u00e5re programmer, og klikk deretter <b> Fullf\u00f8r <\/b> for \u00e5 se <b> Server Dashboard<\/b>.", + "LabelConfigureSettings": "Konfigurer innstillinger", + "LabelEnableVideoImageExtraction": "Aktiv\u00e9r uthenting av stillbilder fra video", + "VideoImageExtractionHelp": "For videoer som ikke allerede har bilder, og som vi ikke klarer \u00e5 finne internettbilder for. Dette gj\u00f8r at det f\u00f8rste biblioteks\u00f8ket tar noe lenger tid, men vil resultere i en mer tiltalende presentasjon.", + "LabelEnableChapterImageExtractionForMovies": "Generer kapittelbilde for Filmer", + "LabelChapterImageExtractionForMoviesHelp": "Uthenting av kapittelbilder gj\u00f8r klientene i stand til \u00e5 vise grafiske menyer for valg av scene. Prosessen kan v\u00e6re treg, CPU-intensiv og kan kreve sv\u00e6rt mange gigabytes lagringsplass. Dette kj\u00f8res som en nattlig oppgave, og kan konfigureres under Planlagte Aktiviteter. Det anbefales ikke \u00e5 kj\u00f8re denne jobben n\u00e5r serveren brukes til annet.", + "LabelEnableAutomaticPortMapping": "Sl\u00e5 p\u00e5 automatisk port-mapping", + "LabelEnableAutomaticPortMappingHelp": "UPnP tillater automatisert router-konfigurasjon for enkel ekstern tilgang. Denne funksjonen st\u00f8ttes ikke av alle routere.", + "HeaderTermsOfService": "Emby vilk\u00e5r for bruk.", + "MessagePleaseAcceptTermsOfService": "Vennligst aksepter v\u00e5re servicevilk\u00e5r og personvernpolicy f\u00f8r du fortsetter.", + "OptionIAcceptTermsOfService": "Jeg aksepterer servicevilk\u00e5rene", + "ButtonPrivacyPolicy": "Personvernpolicy", + "ButtonTermsOfService": "Servicevilk\u00e5r", + "HeaderDeveloperOptions": "Utvikler-innstillinger", + "OptionEnableWebClientResponseCache": "Aktiver webklient respons-caching", + "OptionDisableForDevelopmentHelp": "Konfigurer disse i forbindelse med utvikling av web-klienten.", + "OptionEnableWebClientResourceMinification": "Aktiver ressursminimering for webklient", + "LabelDashboardSourcePath": "Webklient kildesti:", + "LabelDashboardSourcePathHelp": "Hvis serveren kj\u00f8rer fra kildekode, angi sti til mappe for dashboard-ui. Alle filer for webklienten kommer fra denne mappen.", + "ButtonConvertMedia": "Konverter media", + "ButtonOrganize": "Organiser", + "LinkedToEmbyConnect": "Knyttet til Emby Connect.", + "HeaderSupporterBenefits": "Supporter fordeler", + "HeaderAddUser": "Ny bruker", + "LabelAddConnectSupporterHelp": "For \u00e5 legge til en bruker som ikke er oppf\u00f8rt, m\u00e5 du f\u00f8rst koble sin konto til Emby Connect fra deres brukerprofilside.", + "LabelPinCode": "Pin kode:", + "OptionHideWatchedContentFromLatestMedia": "Skjul sett innhold fra siste media.", + "HeaderSync": "Synk.", + "ButtonOk": "Ok", + "ButtonCancel": "Avbryt", + "ButtonExit": "Avslutt", + "ButtonNew": "Ny", + "HeaderTV": "TV", + "HeaderAudio": "Lyd", + "HeaderVideo": "Video", + "HeaderPaths": "Stier", + "CategorySync": "Synk", + "TabPlaylist": "Spilleliste", + "HeaderEasyPinCode": "Enkel PIN-kode", + "HeaderGrownupsOnly": "Bare for voksne!", + "DividerOr": "-- eller --", + "HeaderInstalledServices": "Installerte programtillegg", + "HeaderAvailableServices": "Tilgjengelige tjenester", + "MessageNoServicesInstalled": "Ingen programtillegg er installert.", + "HeaderToAccessPleaseEnterEasyPinCode": "Oppgi din enkle PIN-kode for \u00e5 f\u00e5 tilgang", + "KidsModeAdultInstruction": "Klikk p\u00e5 l\u00e5s-ikonet nede til h\u00f8yre for \u00e5 konfigurere eller forlate barnamodus. PIN-koden vil v\u00e6re n\u00f8dvendig.", + "ButtonConfigurePinCode": "Konfigurer PIN-kode", + "HeaderAdultsReadHere": "Voksne les her!", + "RegisterWithPayPal": "Registrer med PayPal", + "HeaderSyncRequiresSupporterMembership": "Synkronisering krever st\u00f8ttemedlemskap", + "HeaderEnjoyDayTrial": "Hygg deg med en 14-dagers gratis pr\u00f8veperiode", + "LabelSyncTempPath": "Midlertidig fil-sti:", + "LabelSyncTempPathHelp": "Spesifiser din egen synk-mappe. Konverterte mediefiler opprettet ved synkronisering vil lagres her.", + "LabelCustomCertificatePath": "Sti for eget sertifikat:", + "LabelCustomCertificatePathHelp": "Angi ditt eget SSL-sertifikats .ptx-fil. Hvis feltet er blankt vil serveren opprette et eget selv-signert sertifikat.", + "TitleNotifications": "Beskjeder", + "ButtonDonateWithPayPal": "Don\u00e9r med PayPal", + "OptionDetectArchiveFilesAsMedia": "Behandle arkivfiler som media", + "OptionDetectArchiveFilesAsMediaHelp": "Hvis aktivert blir .rar- og .zipfiler behandlet som mediafiler.", + "LabelEnterConnectUserName": "Brukernavn eller epostadresse:", + "LabelEnterConnectUserNameHelp": "Dette er Emby Online-konto brukernavn eller passordet ditt.", + "LabelEnableEnhancedMovies": "Aktiver forbedrede filmvisning", + "LabelEnableEnhancedMoviesHelp": "N\u00e5r den er aktivert, vil filmene bli vist som mapper for \u00e5 inkludere trailere, statister, cast og crew, og annet relatert innhold.", + "HeaderSyncJobInfo": "Synk.jobb", + "FolderTypeMovies": "Filmer", + "FolderTypeMusic": "Musikk", + "FolderTypeAdultVideos": "Voksen-videoer", + "FolderTypePhotos": "Foto", + "FolderTypeMusicVideos": "Musikk-videoer", + "FolderTypeHomeVideos": "Hjemme-videoer", + "FolderTypeGames": "Spill", + "FolderTypeBooks": "B\u00f8ker", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Arve", + "LabelContentType": "Innholdstype:", + "TitleScheduledTasks": "Planlagt oppgaver", + "HeaderSetupLibrary": "Konfigurer media-biblioteket", + "ButtonAddMediaFolder": "Legg til media-mappe", + "LabelFolderType": "Mappetype", + "ReferToMediaLibraryWiki": "Se i wik for media-biblioteket.", + "LabelCountry": "Land:", + "LabelLanguage": "Spr\u00e5k:", + "LabelTimeLimitHours": "Tidsbegrensning (timer):", + "ButtonJoinTheDevelopmentTeam": "Bli med i utvikler-teamet", + "HeaderPreferredMetadataLanguage": "Foretrukket spr\u00e5k for metadata", + "LabelSaveLocalMetadata": "Lagre cover og metadata i medie-mappene", + "LabelSaveLocalMetadataHelp": "Lagring av artwork og metadata direkte gjennom mediemapper vil legge dem et sted hvor de lett kan editeres.", + "LabelDownloadInternetMetadata": "Last ned cover og metadata fra internett", + "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", + "TabPreferences": "Preferanser", + "TabPassword": "Passord", + "TabLibraryAccess": "Bibliotektilgang", + "TabAccess": "Tilgang", + "TabImage": "Bilde", + "TabProfile": "Profil", + "TabMetadata": "Metadata", + "TabImages": "Bilder", + "TabNotifications": "Varslinger", + "TabCollectionTitles": "Titler", + "HeaderDeviceAccess": "Enhetstilgang", + "OptionEnableAccessFromAllDevices": "Gi tilgang fra alle enheter", + "OptionEnableAccessToAllChannels": "Gi tilgang til alle kanaler", + "OptionEnableAccessToAllLibraries": "Gi tilgang til alle bibliotek", + "DeviceAccessHelp": "Dette gjelder bare for enheter som som kan unikt identifiseres og vil ikke forindre tilgang fra nettleser. Filtrering av brukerens enhet vil forhindre dem fra \u00e5 bruke nye enheter inntil de har blitt godkjent her.", + "LabelDisplayMissingEpisodesWithinSeasons": "Vis episoder som mangler fra sesongen", + "LabelUnairedMissingEpisodesWithinSeasons": "Vis episoder som enn\u00e5 ikke har blitt sendt", + "HeaderVideoPlaybackSettings": "Innstillinger for video-avspilling", + "HeaderPlaybackSettings": "Avspillingsinnstillinger", + "LabelAudioLanguagePreference": "Foretrukket lydspor:", + "LabelSubtitleLanguagePreference": "Foretrukket undertekst:", + "OptionDefaultSubtitles": "Standard", + "OptionOnlyForcedSubtitles": "Kun tvungede undertekster", + "OptionAlwaysPlaySubtitles": "Alltid vis undertekster", + "OptionNoSubtitles": "Ingen undertekster", + "OptionDefaultSubtitlesHelp": "Undertekster som samsvarer med foretrukket spr\u00e5k vil bli vist n\u00e5r lyden er p\u00e5 et fremmed spr\u00e5k.", + "OptionOnlyForcedSubtitlesHelp": "Kun undertekster markert som tvunget vil bli vist.", + "OptionAlwaysPlaySubtitlesHelp": "Undertekster som samsvarer med foretrukket spr\u00e5k vil bli vist uavhengig lydens spr\u00e5k.", + "OptionNoSubtitlesHelp": "Undertekster vil ikke bli lastet som standard.", + "TabProfiles": "Profiler", + "TabSecurity": "Sikkerhet", + "ButtonAddUser": "Ny bruker", + "ButtonAddLocalUser": "Legg til lokal bruker", + "ButtonInviteUser": "Invit\u00e9r Bruker", + "ButtonSave": "Lagre", + "ButtonResetPassword": "Tilbakestill passord", + "LabelNewPassword": "Nytt passord:", + "LabelNewPasswordConfirm": "Bekreft nytt passord:", + "HeaderCreatePassword": "Lag nytt passord", + "LabelCurrentPassword": "N\u00e5v\u00e6rende passord:", + "LabelMaxParentalRating": "Maks tillatt sensur:", + "MaxParentalRatingHelp": "Innhold med h\u00f8yere aldersgrense vil bli skjult for brukeren", + "LibraryAccessHelp": "Velg media mappe som skal deles med denne brukren. Administrator vil ha mulighet for \u00e5 endre alle mapper ved \u00e5 bruke metadata behandler.", + "ChannelAccessHelp": "Velg kanaler som skal deler med denne brukeren. Administratorer har mulighet til \u00e5 editere p\u00e5 alle kanaler som benytter metadata behandleren.", + "ButtonDeleteImage": "Slett bilde", + "LabelSelectUsers": "Velg brukere:", + "ButtonUpload": "Last opp", + "HeaderUploadNewImage": "Last opp nytt bilde", + "LabelDropImageHere": "Slipp bilde her", + "ImageUploadAspectRatioHelp": "1:1 sideforhold anbefales. Kun JPG\/PNG.", + "MessageNothingHere": "Ingeting her.", + "MessagePleaseEnsureInternetMetadata": "P\u00e5se at nedlasting av internet-metadata er sl\u00e5tt p\u00e5.", + "TabSuggested": "Forslag", + "TabSuggestions": "Forslag", + "TabLatest": "Siste", + "TabUpcoming": "Kommer", + "TabShows": "Show", + "TabEpisodes": "Episoder", + "TabGenres": "Sjangre", + "TabPeople": "Folk", + "TabNetworks": "Nettverk", + "HeaderUsers": "Brukere", + "HeaderFilters": "Filtre", + "ButtonFilter": "Filter", + "OptionFavorite": "Favoritter", + "OptionLikes": "Liker", + "OptionDislikes": "Misliker", + "OptionActors": "Skuespillere", + "OptionGuestStars": "Gjeste-opptredener", + "OptionDirectors": "Regis\u00f8r", + "OptionWriters": "Manus", + "OptionProducers": "Produsent", + "HeaderResume": "Fortsette", + "HeaderNextUp": "Neste", + "NoNextUpItemsMessage": "Ingen funnet. Begyn \u00e5 se det du har", + "HeaderLatestEpisodes": "Siste episoder", + "HeaderPersonTypes": "Persontyper:", + "TabSongs": "Sanger", + "TabAlbums": "Album", + "TabArtists": "Artister", + "TabAlbumArtists": "Album Artister", + "TabMusicVideos": "Musikk-videoer", + "ButtonSort": "Sorter", + "HeaderSortBy": "Sorter etter:", + "HeaderSortOrder": "Sorter Etter:", + "OptionPlayed": "Sett", + "OptionUnplayed": "Ikke sett", + "OptionAscending": "\u00d8kende", + "OptionDescending": "Synkende", + "OptionRuntime": "Spilletid", + "OptionReleaseDate": "Uttgitt dato", + "OptionPlayCount": "Antall avspillinger", + "OptionDatePlayed": "Dato spilt", + "OptionDateAdded": "Dato lagt til", + "OptionAlbumArtist": "Album Artist", + "OptionArtist": "Artist", + "OptionAlbum": "Album", + "OptionTrackName": "L\u00e5tnavn", + "OptionCommunityRating": "Community Rangering", + "OptionNameSort": "Navn", + "OptionFolderSort": "Mapper", + "OptionBudget": "Budsjett", + "OptionRevenue": "Inntjening", + "OptionPoster": "Plakat", + "OptionPosterCard": "Plakatkort", + "OptionBackdrop": "Bakgrunn", + "OptionTimeline": "Tidslinje", + "OptionThumb": "Thumb", + "OptionThumbCard": "Thumb-kort", + "OptionBanner": "Banner", + "OptionCriticRating": "Kritikervurdering", + "OptionVideoBitrate": "Video bitrate", + "OptionResumable": "Kan fortsettes", + "ScheduledTasksHelp": "Klikk p\u00e5 en oppgave for \u00e5 tilpasse tidsplan", + "ScheduledTasksTitle": "Planlagte Oppgaver", + "TabMyPlugins": "Mine programtillegg", + "TabCatalog": "Katalog", + "TitlePlugins": "Programtillegg", + "HeaderAutomaticUpdates": "Automatiske oppdateringer", + "HeaderNowPlaying": "Spiller n\u00e5", + "HeaderLatestAlbums": "Siste album", + "HeaderLatestSongs": "Siste l\u00e5ter", + "HeaderRecentlyPlayed": "Nylig avspilt", + "HeaderFrequentlyPlayed": "Ofte avspilt", + "DevBuildWarning": "Dev builds er \u00e5 anses som ustabile. Disse har ikke blitt testet. Dette vil kunne medf\u00f8re til at applikasjonen kan krasje og komplette funksjoner ikke fungerer.", + "LabelVideoType": "Video-type:", + "OptionBluray": "Bluray", + "OptionDvd": "DVD", + "OptionIso": "ISO", + "Option3D": "3D", + "LabelFeatures": "Funksjoner:", + "LabelService": "Service:", + "LabelStatus": "Status:", + "LabelVersion": "Versjon:", + "LabelLastResult": "Siste resultat:", + "OptionHasSubtitles": "Undertekster", + "OptionHasTrailer": "Trailer", + "OptionHasThemeSong": "Temasang", + "OptionHasThemeVideo": "Temavideo", + "TabMovies": "Filmer", + "TabStudios": "Studio", + "TabTrailers": "Trailere", + "LabelArtists": "Artister:", + "LabelArtistsHelp": "Skill flere med semikolon ;", + "HeaderLatestMovies": "Siste Filmer", + "HeaderLatestTrailers": "Siste Trailers", + "OptionHasSpecialFeatures": "Spesialfunksjoner", + "OptionImdbRating": "IMDb Rangering", + "OptionParentalRating": "Foreldresensur", + "OptionPremiereDate": "Premieredato", + "TabBasic": "Enkel", + "TabAdvanced": "Avansert", + "HeaderStatus": "Status", + "OptionContinuing": "Fortsetter", + "OptionEnded": "Avsluttet", + "HeaderAirDays": "Vises dager", + "OptionSunday": "S\u00f8ndag", + "OptionMonday": "Mandag", + "OptionTuesday": "Tirsdag", + "OptionWednesday": "Onsdag", + "OptionThursday": "Torsdag", + "OptionFriday": "Fredag", + "OptionSaturday": "L\u00f8rdag", + "HeaderManagement": "Strying", + "LabelManagement": "Administrasjon", + "OptionMissingImdbId": "Mangler IMDb ID", + "OptionMissingTvdbId": "Mangler TVDB ID", + "OptionMissingOverview": "Mangler oversikt", + "OptionFileMetadataYearMismatch": "Fil\/Metadata \u00e5r mismatch", + "TabGeneral": "Genrelt", + "TitleSupport": "Support", + "LabelSeasonNumber": "Season number", + "TabLog": "Logg", + "LabelEpisodeNumber": "Episode number", + "TabAbout": "Om", + "TabSupporterKey": "Supporter-n\u00f8kkel", + "TabBecomeSupporter": "Bli en supporter", + "ProjectHasCommunity": "Emby har et voksende fellesskap av brukere og bidragsytere.", + "CheckoutKnowledgeBase": "Sjekk ut v\u00e5r kunnskapsbase for \u00e5 hjelpe deg til \u00e5 f\u00e5 mest mulig ut av Emby.", + "SearchKnowledgeBase": "S\u00f8k kunnskapsbasen", + "VisitTheCommunity": "Bes\u00f8k oss", + "VisitProjectWebsite": "Bes\u00f8k Emby Media", + "VisitProjectWebsiteLong": "Bes\u00f8k Emby.media for \u00e5 f\u00e5 de siste nyhetene og holde tritt med utviklerbloggen.", + "OptionHideUser": "Skjul brukere fra logginn-skjermen", + "OptionHideUserFromLoginHelp": "Praktisk for private eller skjulte administratorer. Brukeren vil m\u00e5tte logge inn manuelt ved \u00e5 skrive inn brukernavn og passord.", + "OptionDisableUser": "Deaktiver denne brukeren", + "OptionDisableUserHelp": "Hvis avsl\u00e5tt vil ikke serveren godta noen forbindelser fra denne brukeren. Eksisterende forbindelser vil avsluttes umiddelbart.", + "HeaderAdvancedControl": "Avansert Kontroll", + "LabelName": "Navn", + "ButtonHelp": "Hjelp", + "OptionAllowUserToManageServer": "TIllatt denne brukeren \u00e5 administrere serveren", + "HeaderFeatureAccess": "Funksjonstilgang", + "OptionAllowMediaPlayback": "Tillate avspilling av media", + "OptionAllowBrowsingLiveTv": "Tillate Live TV", + "OptionAllowDeleteLibraryContent": "Tillate sletting av media", + "OptionAllowManageLiveTv": "Tillate administrasjon av Live TV", + "OptionAllowRemoteControlOthers": "Tillat fjernstyring av andre brukere", + "OptionAllowRemoteSharedDevices": "Tillate fjernstyring av delte enheter", + "OptionAllowRemoteSharedDevicesHelp": "DLNA-enheter betraktes som delte inntil en bruker begynner \u00e5 styre dem.", + "OptionAllowLinkSharing": "Tillat deling p\u00e5 sosiale media", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", + "HeaderRemoteControl": "Fjernstyring", "OptionMissingTmdbId": "Mangler Tmdb ID", "OptionIsHD": "HD", "OptionIsSD": "SD", @@ -58,7 +377,7 @@ "ButtonAutoScroll": "Auto-scroll", "LabelImageSavingConvention": "Bilde besparende konvensjon:", "LabelImageSavingConventionHelp": "Emby recognizes images from most major media applications. Choosing your downloading convention is useful if you also use other products.", - "OptionImageSavingCompatible": "Compatible - Emby\/Kodi\/Plex", + "OptionImageSavingCompatible": "Kompatibel - Emby\/Kodi\/Plex", "OptionImageSavingStandard": "Standard - MB2", "ButtonSignIn": "Logg inn", "TitleSignIn": "Logg inn", @@ -93,7 +412,7 @@ "OptionRecordOnAllChannels": "Ta opptak p\u00e5 alle kanaler", "OptionRecordAnytime": "Ta opptak n\u00e5r som helst", "OptionRecordOnlyNewEpisodes": "Ta opptak kun av nye episoder", - "HeaderRepeatingOptions": "Repeating Options", + "HeaderRepeatingOptions": "Gjenta alternativer", "HeaderDays": "Dager", "HeaderActiveRecordings": "Aktive opptak", "HeaderLatestRecordings": "Siste opptak", @@ -109,7 +428,7 @@ "LabelNumberOfGuideDays": "Antall dager av guide data som skal lastes ned", "LabelNumberOfGuideDaysHelp": "Nedlasting av guide data for flere dager gir muligheten for \u00e5 planlegge i forveien og for \u00e5 se flere listinger. Dette vil ogs\u00e5 ta lengre tid for nedlasting. Auto vil velge basert p\u00e5 antall kanaler.", "OptionAutomatic": "Auto", - "HeaderServices": "Services", + "HeaderServices": "Tjenester", "LiveTvPluginRequired": "En Live TV tilbyder trengs for \u00e5 kunne fortsette.", "LiveTvPluginRequiredHelp": "Vennligst installer en av v\u00e5re tilgjengelige programtillegg, f.eks Next Pvr eller ServerWmc.", "LabelCustomizeOptionsPerMediaType": "Tilpass for media type:", @@ -223,7 +542,7 @@ "LabelFriendlyServerName": "Vennlig server navn:", "LabelFriendlyServerNameHelp": "Dette navnet vil bli brukt for \u00e5 identifisere denne serveren. Hvis feltet er tomt, vil maskinens navn bli brukt.", "LabelPreferredDisplayLanguage": "Foretrukket spr\u00e5k:", - "LabelPreferredDisplayLanguageHelp": "Translating Emby is an ongoing project and is not yet complete.", + "LabelPreferredDisplayLanguageHelp": "Oversettelse av Emby er et p\u00e5g\u00e5ende prosjekt, og er enn\u00e5 ikke fullf\u00f8rt.", "LabelReadHowYouCanContribute": "Les mer om hvordan du kan bidra.", "HeaderNewCollection": "Ny Samling", "ButtonSubmit": "Send", @@ -231,7 +550,7 @@ "LabelCustomCss": "Tilpass CSS:", "LabelCustomCssHelp": "Bruk din egen CSS p\u00e5 web-grensesnittet.", "LabelLocalHttpServerPortNumber": "Lokal HTTP port:", - "LabelLocalHttpServerPortNumberHelp": "The tcp port number that Emby's http server should bind to.", + "LabelLocalHttpServerPortNumberHelp": "TCP-portnummeret som Emby sin http server skal koble seg til.", "LabelPublicHttpPort": "Offentlig HTTP port:", "LabelPublicHttpPortHelp": "Den offentlige porten som kobles til den lokale porten.", "LabelPublicHttpsPort": "Offentlig HTTPS port:", @@ -239,12 +558,12 @@ "LabelEnableHttps": "Oppgi HTTPS som ekstern adresse", "LabelEnableHttpsHelp": "Hvis denne er aktivert vil serveren oppgi en HTTPS URL som sin eksterne adresse. Dette kan \u00f8delegge for klienter som enda ikke st\u00f8tter HTTPS", "LabelHttpsPort": "Lokal HTTPS port:", - "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", + "LabelHttpsPortHelp": "TCP-portnummeret som Emby sin https server skal koble seg til.", "LabelWebSocketPortNumber": "Web socket portnummer:", "LabelEnableAutomaticPortMap": "Aktiver automatisk portmapping", "LabelEnableAutomaticPortMapHelp": "Fors\u00f8k automatisk mapping av den offentlige port til den lokale port via UPnP. Dette fungerer ikke med alle rutere.", "LabelExternalDDNS": "Ekstern WAN-adresse:", - "LabelExternalDDNSHelp": "If you have a dynamic DNS enter it here. Emby apps will use it when connecting remotely. Leave empty for automatic detection.", + "LabelExternalDDNSHelp": "Hvis du har en dynamisk DNS skriver du det her. Emby apps vil bruke den n\u00e5r du kobler til eksternt. La st\u00e5 tom for automatisk gjenkjenning.", "TabResume": "Forsette", "TabWeather": "V\u00e6r", "TitleAppSettings": "App-innstillinger", @@ -267,11 +586,9 @@ "LabelSkipped": "Hoppet over", "HeaderEpisodeOrganization": "Organisering av episoder", "LabelSeries": "Serie:", - "LabelSeasonNumber": "Sesong nummer:", - "LabelEpisodeNumber": "Episode nummer:", "LabelEndingEpisodeNumber": "Ending av episode nummer:", "LabelEndingEpisodeNumberHelp": "Kun n\u00f8dvendig for multi-episode filer", - "HeaderSupportTheTeam": "Support the Emby Team", + "HeaderSupportTheTeam": "St\u00f8tt Emby teamet!", "LabelSupportAmount": "Sum (USD)", "HeaderSupportTheTeamHelp": "Bidra til \u00e5 sikre fortsatt utvikling av dette prosjektet ved \u00e5 donere. En del av alle donasjoner vil v\u00e6re bidratt til andre gratis verkt\u00f8y vi er avhengige av.", "ButtonEnterSupporterKey": "Skriv supportn\u00f8kkel", @@ -303,7 +620,7 @@ "OptionMove": "Flytt", "LabelTransferMethodHelp": "Kopier eller flytt filer fra watch mappen", "HeaderLatestNews": "Siste nyheter", - "HeaderHelpImproveProject": "Help Improve Emby", + "HeaderHelpImproveProject": "Hjelp med \u00e5 forbedre Emby", "HeaderRunningTasks": "Kj\u00f8rende oppgaver", "HeaderActiveDevices": "Aktive enheter", "HeaderPendingInstallations": "Installeringer i k\u00f8", @@ -314,8 +631,8 @@ "ButtonUpdateNow": "Oppdater N\u00e5", "TabHosting": "Hosting", "PleaseUpdateManually": "Vennligst sl\u00e5 av serveren og oppdater manuelt.", - "NewServerVersionAvailable": "A new version of Emby Server is available!", - "ServerUpToDate": "Emby Server is up to date", + "NewServerVersionAvailable": "En ny versjon av Emby Server er tilgjengelig!", + "ServerUpToDate": "Emby Server er oppdatert med seneste versjon", "LabelComponentsUpdated": "F\u00f8lgende komponenter har blitt installert eller oppdatert:", "MessagePleaseRestartServerToFinishUpdating": "Vennligst restart serveren for \u00e5 fullf\u00f8re installasjon av oppdateringer.", "LabelDownMixAudioScale": "Lyd boost ved downmixing:", @@ -332,13 +649,13 @@ "LabelSupporterEmailAddress": "Epostadressen som ble brukt for \u00e5 kj\u00f8pe n\u00f8kkelen.", "ButtonRetrieveKey": "Motta N\u00f8kkel", "LabelSupporterKey": "Supporter N\u00f8kkel (Lim inn fra mottatt epost)", - "LabelSupporterKeyHelp": "Enter your supporter key to start enjoying additional benefits the community has developed for Emby.", + "LabelSupporterKeyHelp": "Skriv inn din st\u00f8ttespiller-n\u00f8kkelen, slik av du f\u00e5r tilgang til flere fordeler utviklet for Emby.", "MessageInvalidKey": "Supportern\u00f8kkel mangler eller er feil.", - "ErrorMessageInvalidKey": "In order for any premium content to be registered, you must also be an Emby Supporter. Please donate and support the continued development of the core product. Thank you.", + "ErrorMessageInvalidKey": "For \u00e5 benytte premium-innhold, m\u00e5 du ogs\u00e5 v\u00e6re en Emby Supporter. Vennligst donere og st\u00f8tte den videre utviklingen av kjerneproduktet. Takk.", "HeaderDisplaySettings": "Visnings innstillinger", "TabPlayTo": "Spill Til", "LabelEnableDlnaServer": "Sl\u00e5 p\u00e5 Dlna server", - "LabelEnableDlnaServerHelp": "Allows UPnP devices on your network to browse and play Emby content.", + "LabelEnableDlnaServerHelp": "Lar UPnP-enheter p\u00e5 nettverket til \u00e5 bla gjennom og spille Emby innhold.", "LabelEnableBlastAliveMessages": "Spreng levende meldinger", "LabelEnableBlastAliveMessagesHelp": "Sl\u00e5 p\u00e5 hvis serveren ikke regelmessig blir oppdaget av andre UPnP-enheter p\u00e5 ditt nettverk.", "LabelBlastMessageInterval": "Intervall mellom keepalive meldinger (sekunder)", @@ -374,8 +691,8 @@ "NotificationOptionNewLibraryContent": "Nytt innhold er lagt til", "NotificationOptionNewLibraryContentMultiple": "Nytt innhold lagt til (flere)", "NotificationOptionCameraImageUploaded": "Bilde fra kamera lastet opp", - "NotificationOptionUserLockedOut": "User locked out", - "HeaderSendNotificationHelp": "By default, notifications are delivered to your dashboard inbox. Browse the plugin catalog to install additional notification options.", + "NotificationOptionUserLockedOut": "Bruker er utestengt", + "HeaderSendNotificationHelp": "Som standard blir meldinger levert til dashbordet innboks. Bla i plugin-katalogen for installere andre varslingsalternativer.", "NotificationOptionServerRestartRequired": "Server m\u00e5 startes p\u00e5 nytt", "LabelNotificationEnabled": "Sl\u00e5 p\u00e5 denne varslingen", "LabelMonitorUsers": "Monitorer aktivitet fra:", @@ -520,7 +837,7 @@ "OptionEstimateContentLength": "Estimer innholdslengde n\u00e5r transcoding.", "OptionReportByteRangeSeekingWhenTranscoding": "Rapporter at serveren st\u00f8tter byte s\u00f8king n\u00e5r transcoding.", "OptionReportByteRangeSeekingWhenTranscodingHelp": "Dette kreves for noen enheter som ikke tidss\u00f8ker veldig godt.", - "HeaderSubtitleDownloadingHelp": "When Emby scans your video files it can search for missing subtitles, and download them using a subtitle provider such as OpenSubtitles.org.", + "HeaderSubtitleDownloadingHelp": "N\u00e5r Emby skanner videofilene dine, kan den s\u00f8ke etter manglende undertekster, og laste dem ned ved hjelp av en undertekst-leverand\u00f8r som OpenSubtitles.org.", "HeaderDownloadSubtitlesFor": "Last ned undertekster for:", "MessageNoChapterProviders": "Installer en kapittel tilbyder som eksempelvis ChapterDb for \u00e5 aktivere kapittel muligheter.", "LabelSkipIfGraphicalSubsPresent": "Hopp om videoen inneholder allerede grafiske undertekster", @@ -556,10 +873,11 @@ "HeaderTypeText": "Skriv Tekst", "LabelTypeText": "Tekst", "HeaderSearchForSubtitles": "S\u00f8k etter undertekster", + "ButtonMore": "Mer", "MessageNoSubtitleSearchResultsFound": "Ingen s\u00f8k funnet.", "TabDisplay": "Skjerm", "TabLanguages": "Spr\u00e5k", - "TabAppSettings": "App Settings", + "TabAppSettings": "App-innstillinger", "LabelEnableThemeSongs": "Sl\u00e5 p\u00e5 tema sanger", "LabelEnableBackdrops": "Sl\u00e5 p\u00e5 backdrops", "LabelEnableThemeSongsHelp": "Hvis p\u00e5sl\u00e5tt vil tema sanger bli avspilt i bakgrunnen mens man blar igjennom biblioteket.", @@ -569,7 +887,7 @@ "OptionAuto": "Auto", "OptionYes": "Ja", "OptionNo": "Nei", - "HeaderOptions": "Options", + "HeaderOptions": "Alternativer", "HeaderIdentificationResult": "Identification Result", "LabelHomePageSection1": "Hjemme side seksjon 1:", "LabelHomePageSection2": "Hjemme side seksjon 2:", @@ -586,15 +904,15 @@ "HeaderLiveTv": "Live TV", "HeaderReports": "Rapporter", "HeaderMetadataManager": "Metadata Behandler", - "HeaderPreferences": "Preferanser", + "HeaderSettings": "Innstillinger", "MessageLoadingChannels": "Laster kanal innhold...", "MessageLoadingContent": "Laster innhold...", "ButtonMarkRead": "Marker Som Lest", "OptionDefaultSort": "Standard", "OptionCommunityMostWatchedSort": "Mest Sett", "TabNextUp": "Neste", - "PlaceholderUsername": "Username", - "HeaderBecomeProjectSupporter": "Become an Emby Supporter", + "PlaceholderUsername": "Brukernavn", + "HeaderBecomeProjectSupporter": "Bli en Emby Supporter", "MessageNoMovieSuggestionsAvailable": "Ingen film forslag er forel\u00f8pig tilgjengelig. Start med \u00e5 se og ranger filmer. Kom deretter tilbake for \u00e5 f\u00e5 forslag p\u00e5 anbefalinger.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", "MessageNoPlaylistsAvailable": "Spillelister tillater deg \u00e5 lage lister over innhold til \u00e5 spille etter hverandre p\u00e5 en gang. For \u00e5 legge til elementer i spillelister, h\u00f8yreklikk eller trykk og hold, og velg Legg til i spilleliste.", @@ -612,13 +930,13 @@ "LabelChannelDownloadAgeHelp": "Nedlastet innhold eldre enn dette vil bli slettet. Det vil v\u00e6re avspillbart via internett streaming.", "ChannelSettingsFormHelp": "Installer kanaler som eksempel Trailers og Vimeo i programtillegg katalogen.", "ButtonOptions": "Alternativer", - "ViewTypePlaylists": "Playlists", + "ViewTypePlaylists": "Spillelister", "ViewTypeMovies": "Filmer", "ViewTypeTvShows": "TV", "ViewTypeGames": "Spill", "ViewTypeMusic": "Musikk", - "ViewTypeMusicGenres": "Genres", - "ViewTypeMusicArtists": "Artists", + "ViewTypeMusicGenres": "Sjangere", + "ViewTypeMusicArtists": "Artist", "ViewTypeBoxSets": "Samlinger", "ViewTypeChannels": "Kanaler", "ViewTypeLiveTV": "Live TV", @@ -642,7 +960,7 @@ "ViewTypeMovieFavorites": "Favoritter", "ViewTypeMovieGenres": "Sjangere", "ViewTypeMusicLatest": "Siste", - "ViewTypeMusicPlaylists": "Playlists", + "ViewTypeMusicPlaylists": "Spillelister", "ViewTypeMusicAlbums": "Albumer", "ViewTypeMusicAlbumArtists": "Album artister", "HeaderOtherDisplaySettings": "Visnings Innstillinger", @@ -759,7 +1077,7 @@ "OptionBox": "Boks", "OptionBoxRear": "Boks bak", "OptionDisc": "Disk", - "OptionIcon": "Icon", + "OptionIcon": "Ikon", "OptionLogo": "Logo", "OptionMenu": "Meny", "OptionScreenshot": "Screenshot", @@ -784,7 +1102,6 @@ "OptionReportArtists": "Artisert", "OptionReportAlbums": "Albumer", "OptionReportAdultVideos": "Voksen videoer", - "ButtonMore": "Mer", "HeaderActivity": "Aktivitet", "ScheduledTaskStartedWithName": "{0} startet", "ScheduledTaskCancelledWithName": "{0} ble avbrutt", @@ -811,7 +1128,7 @@ "UserDeletedWithName": "Bruker {0} har blitt slettet", "MessageServerConfigurationUpdated": "Server konfigurasjon har blitt oppdatert", "MessageNamedServerConfigurationUpdatedWithValue": "Server konfigurasjon seksjon {0} har blitt oppdatert", - "MessageApplicationUpdated": "Emby Server has been updated", + "MessageApplicationUpdated": "Emby server har blitt oppdatert", "AuthenticationSucceededWithUserName": "{0} autentisert med suksess", "FailedLoginAttemptWithUserName": "P\u00e5loggingsfors\u00f8k feilet fra {0}", "UserDownloadingItemWithValues": "{0} laster ned {1}", @@ -914,6 +1231,7 @@ "OptionNoThemeVideo": "Ingen tema video", "LabelOneTimeDonationAmount": "Donasjons bel\u00f8p:", "ButtonDonate": "Don\u00e9r", + "ButtonPurchase": "Purchase", "OptionActor": "Skuespiller", "OptionComposer": "Komponist", "OptionDirector": "Regiss\u00f8r", @@ -933,7 +1251,6 @@ "HeaderDeveloperInfo": "Utvikler informasjon", "HeaderRevisionHistory": "Revisjonshistorikk", "ButtonViewWebsite": "Vis nettsted", - "LabelRecurringDonationCanBeCancelledHelp": "Gjentakende donasjoner kan avbrytes n\u00e5r som helst fra din PayPal-konto.", "HeaderXmlSettings": "Xml innstillinger", "HeaderXmlDocumentAttributes": "Xml dokument attributter", "HeaderXmlDocumentAttribute": "Xml dokument attributt", @@ -941,12 +1258,15 @@ "OptionSaveMetadataAsHidden": "Lagre metadata og bilder som skjulte filer", "LabelExtractChaptersDuringLibraryScan": "Hent ut kapittel bilder under bibliotek skann", "LabelExtractChaptersDuringLibraryScanHelp": "Hvis aktivert, vil kapittel bilder bli hentet ut mens videoer importeres under bibliotek skanning.\nHvis deaktivert, vil de bli hentet ut under planlagte oppgaver for kapittel bilder, som medf\u00f8rer at vanlig bibliotek skanning blir fortere ferdig.", - "LabelConnectGuestUserName": "Their Emby username or email address:", - "LabelConnectUserName": "Emby username\/email:", - "LabelConnectUserNameHelp": "Connect this user to an Emby account to enable easy sign-in access from any Emby app without having to know the server ip address.", - "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", + "LabelConnectGuestUserName": "Emby brukernavn eller epostadresse:", + "LabelConnectUserName": "Emby brukernavn\/epost", + "LabelConnectUserNameHelp": "Koble denne brukeren til en Emby konto for \u00e5 aktivere enkel p\u00e5loggingstilgang fra alle Emby app uten \u00e5 vite serveren ip-adresse.", + "ButtonLearnMoreAboutEmbyConnect": "L\u00e6r mer om Emby Connect", "LabelExternalPlayers": "Eksterne avspillere:", "LabelExternalPlayersHelp": "Vis knapper for \u00e5 spille av innhold i eksterne avspillere. Dette er bare tilgjengelig p\u00e5 enheter som st\u00f8tter url oppsett, i hovedsak Android og iOS. Med eksterne spillere er det vanligvis ingen st\u00f8tte for fjernkontroll eller gjenopptaking.", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", "HeaderSubtitleProfile": "Undertekst Profil", "HeaderSubtitleProfiles": "Undertekst Profiler", "HeaderSubtitleProfilesHelp": "Undertekst profiler beskriver undertekst formater som er suportert av enheten.", @@ -992,7 +1312,7 @@ "TitleDevices": "Enheter", "TabCameraUpload": "Kameraopplasting", "TabDevices": "Enheter", - "HeaderCameraUploadHelp": "Automatically upload photos and videos taken from your mobile devices into Emby.", + "HeaderCameraUploadHelp": "Automatisk opplasting av bilder og videoer tatt fra dine mobile enheter til Emby.", "MessageNoDevicesSupportCameraUpload": "Du har for \u00f8yeblikket ingen enheter som st\u00f8tter kameraopplasting.", "LabelCameraUploadPath": "Sti til kameraopplasting:", "LabelCameraUploadPathHelp": "Velg en tilpasset sti for opplasting dersom du \u00f8nsker det. Hvis intet er spesifiser vil standardmappen brukes. Hvis du bruker en tilpasset sti vil denne ogs\u00e5 m\u00e5tte legges til i innstillingene for bibliotek.", @@ -1001,16 +1321,16 @@ "LabelCustomDeviceDisplayName": "Visningsnavn:", "LabelCustomDeviceDisplayNameHelp": "Oppgi et egendefinert visningsnavn eller la det v\u00e6re tomt for \u00e5 bruke navnet som enheten rapporterer.", "HeaderInviteUser": "Invit\u00e9r Bruker", - "LabelConnectGuestUserNameHelp": "This is the username that your friend uses to sign in to the Emby website, or their email address.", - "HeaderInviteUserHelp": "Sharing your media with friends is easier than ever before with Emby Connect.", + "LabelConnectGuestUserNameHelp": "Dette er brukernavnet som dine venner bruker til \u00e5 logge seg p\u00e5 Emby nettside, eller bruk e-postadresse.", + "HeaderInviteUserHelp": "Dele media med venner er enklere enn noensinne med Emby Connect.", "ButtonSendInvitation": "Send Invitasjon", - "HeaderSignInWithConnect": "Sign in with Emby Connect", + "HeaderSignInWithConnect": "Logg inn med Emby Connect", "HeaderGuests": "Gjester", "HeaderLocalUsers": "Lokale Brukere", "HeaderPendingInvitations": "Ventende invitasjoner", "TabParentalControl": "Foreldrekontroll", "HeaderAccessSchedule": "Access Schedule", - "HeaderAccessScheduleHelp": "Create an access schedule to limit access to certain hours.", + "HeaderAccessScheduleHelp": "Lag en tilgang tidsplan for \u00e5 begrense tilgangen til visse tider.", "ButtonAddSchedule": "Legg til timeplan", "LabelAccessDay": "Ukedag:", "LabelAccessStart": "Starttid:", @@ -1019,12 +1339,12 @@ "OptionEveryday": "Hver dag", "OptionWeekdays": "Ukedager", "OptionWeekends": "Helger", - "MessageProfileInfoSynced": "User profile information synced with Emby Connect.", - "HeaderOptionalLinkEmbyAccount": "Optional: Link your Emby account", - "ButtonTrailerReel": "Trailer reel", - "HeaderTrailerReel": "Trailer Reel", - "OptionPlayUnwatchedTrailersOnly": "Play only unwatched trailers", - "HeaderTrailerReelHelp": "Start a trailer reel to play a long running playlist of trailers.", + "MessageProfileInfoSynced": "Brukerprofilinformasjon er synkronisert med Emby Connect.", + "HeaderOptionalLinkEmbyAccount": "Valgfritt: Link til din konto p\u00e5 Emby Media", + "ButtonTrailerReel": "Start trailerserie", + "HeaderTrailerReel": "Trailerserie", + "OptionPlayUnwatchedTrailersOnly": "Bare spill usette trailere", + "HeaderTrailerReelHelp": "Spiller av trailere fra din spilleliste.", "MessageNoTrailersFound": "No trailers found. Install the Trailer channel to enhance your movie experience by adding a library of internet trailers.", "HeaderNewUsers": "Nye Brukere", "ButtonSignUp": "Registrering", @@ -1068,370 +1388,67 @@ "TabSyncJobs": "Synk-jobber", "LabelTagFilterMode": "Modus", "LabelTagFilterAllowModeHelp": "Hvis tillatte tagger brukes som del av mappestrukturen, vil innhold som er tagget kreve at foreldre-mappene ogs\u00e5 er tagget.", - "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", - "MessageReenableUser": "See below to reenable", - "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", - "OptionTVMovies": "TV Movies", - "HeaderUpcomingMovies": "Upcoming Movies", - "HeaderUpcomingSports": "Upcoming Sports", - "HeaderUpcomingPrograms": "Upcoming Programs", - "ButtonMoreItems": "Mer...", + "HeaderThisUserIsCurrentlyDisabled": "Denne brukeren er deaktivert", + "MessageReenableUser": "Se under for \u00e5 aktivere", + "LabelEnableInternetMetadataForTvPrograms": "Last ned internet metadata for:", + "OptionTVMovies": "TV serier", + "HeaderUpcomingMovies": "Kommende filmer", + "HeaderUpcomingSports": "Kommende sport", + "HeaderUpcomingPrograms": "Kommende programmer", + "ButtonMoreItems": "More", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", - "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", - "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", - "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", - "HeaderPlayback": "Media Playback", - "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", - "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionEnableTranscodingThrottle": "Aktiver struping", + "OptionEnableTranscodingThrottleHelp": "Struping vil automatisk justere transkoding hastighet for \u00e5 minimere server cpu utnyttelse under avspilling.", + "LabelUploadSpeedLimit": "Last opp hastighetsgrensen (Mbps):", + "OptionAllowSyncTranscoding": "Tillat synkronisering som krever transkoding", + "HeaderPlayback": "Media avspilling", + "OptionAllowAudioPlaybackTranscoding": "Tillat lydavspilling som krever transkoding", + "OptionAllowVideoPlaybackTranscoding": "Tillat filmavspilling som krever transkoding", "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", "TabStreaming": "Streaming", - "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", - "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", - "LabelConversionCpuCoreLimit": "CPU core limit:", - "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", - "OptionEnableFullSpeedConversion": "Enable full speed conversion", - "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", - "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", - "HeaderViewStyles": "View Styles", + "LabelRemoteClientBitrateLimit": "Ekstern klient bitrate grense (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "En valgfri streaming bitrate grense for alle eksterne klienter. Dette er nyttig for \u00e5 hindre klienter fra \u00e5 be om en h\u00f8yere bitrate enn tilkoblingen kan h\u00e5ndtere.", + "LabelConversionCpuCoreLimit": "CPU kjerne grense:", + "LabelConversionCpuCoreLimitHelp": "Begrenser antall CPU-kjerner som skal brukes under synk-konvertering.", + "OptionEnableFullSpeedConversion": "Aktiver full hastighetskonvertering", + "OptionEnableFullSpeedConversionHelp": "Som standard er synk-konvertering utf\u00f8res ved en lav hastighet for \u00e5 minimere ressursforbruk.", + "HeaderPlaylists": "Spillelister", + "HeaderViewStyles": "Se stiler", "LabelSelectViewStyles": "Enable enhanced presentations for:", "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", - "TabPhotos": "Photos", - "TabVideos": "Videos", - "HeaderWelcomeToEmby": "Welcome to Emby", + "TabPhotos": "Bilder", + "TabVideos": "Filmer", + "HeaderWelcomeToEmby": "Velkommen til Emby", "EmbyIntroMessage": "With Emby you can easily stream videos, music and photos to smart phones, tablets and other devices from your Emby Server.", - "ButtonSkip": "Skip", - "TextConnectToServerManually": "Connect to server manually", - "ButtonSignInWithConnect": "Sign in with Emby Connect", - "ButtonConnect": "Connect", - "LabelServerHost": "Host:", - "LabelServerHostHelp": "192.168.1.100 or https:\/\/myserver.com", + "ButtonSkip": "Hopp over", + "TextConnectToServerManually": "Koble til server manuelt", + "ButtonSignInWithConnect": "Logg inn med Emby Connect", + "ButtonConnect": "Koble til", + "LabelServerHost": "Vert", + "LabelServerHostHelp": "192.168.1.100 eller \"https:\/\/dinserver.no\"", "LabelServerPort": "Port:", - "HeaderNewServer": "New Server", - "ButtonChangeServer": "Change Server", - "HeaderConnectToServer": "Connect to Server", - "LabelExit": "Avslutt", - "LabelVisitCommunity": "Bes\u00f8k oss", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standard", - "LabelApiDocumentation": "API-dokumentasjon", - "LabelDeveloperResources": "Ressurser for Utviklere", - "LabelBrowseLibrary": "Browse biblioteket", - "LabelConfigureServer": "Konfigurer Emby", - "LabelOpenLibraryViewer": "\u00c5pne Biblioteket", - "LabelRestartServer": "Restart serveren", - "LabelShowLogWindow": "Se logg-vinduet", - "LabelPrevious": "Forrige", - "LabelFinish": "Ferdig", - "LabelNext": "Neste", - "LabelYoureDone": "Ferdig!", - "WelcomeToProject": "Velkommen til Emby", - "ThisWizardWillGuideYou": "Denne wizarden vil guide deg gjennom server-konfigurasjonen. For \u00e5 begynne, vennligst velg spr\u00e5k.", - "TellUsAboutYourself": "Fortell om deg selv", - "ButtonQuickStartGuide": "Hurtigstartveiledning", - "LabelYourFirstName": "Ditt fornavn", - "MoreUsersCanBeAddedLater": "Du kan legge til flere brukere senere via Dashbord", - "UserProfilesIntro": "Emby har innebygd st\u00f8tte for brukerprofiler, slik at hver bruker har sine egne skjerminnstillinger, playstation og foreldrekontroll.", - "LabelWindowsService": "Windows Service", - "AWindowsServiceHasBeenInstalled": "Windows Service har blitt installert", - "WindowsServiceIntro1": "Emby Server normalt kj\u00f8rer som en desktop applikasjon, men hvis du foretrekker \u00e5 kj\u00f8re det som en bakgrunnstjeneste, kan det i stedet startes fra Windows Services i kontrollpanelet.", - "WindowsServiceIntro2": "Hvis du bruker Windows, v\u00e6r oppmerksom p\u00e5 at det ikke kan kj\u00f8res samtidig som ikonet, slik at du trenger \u00e5 g\u00e5 ut av \"trayen\" for \u00e5 kj\u00f8re tjenesten. Tjenesten m\u00e5 ogs\u00e5 konfigureres med administratorrettigheter via kontrollpanelet. V\u00e6r oppmerksom p\u00e5 at p\u00e5 denne tiden tjenesten ikke er i stand til selv-oppdatering, s\u00e5 nye versjoner vil kreve manuell interaksjon.", - "WizardCompleted": "Det er alt vi trenger for n\u00e5. Emby har begynt \u00e5 samle informasjon om mediebiblioteket. Sjekk ut noen av v\u00e5re programmer, og klikk deretter <b> Fullf\u00f8r <\/b> for \u00e5 se <b> Server Dashboard<\/b>.", - "LabelConfigureSettings": "Konfigurer innstillinger", - "LabelEnableVideoImageExtraction": "Aktiv\u00e9r uthenting av stillbilder fra video", - "VideoImageExtractionHelp": "For videoer som ikke allerede har bilder, og som vi ikke klarer \u00e5 finne internettbilder for. Dette gj\u00f8r at det f\u00f8rste biblioteks\u00f8ket tar noe lenger tid, men vil resultere i en mer tiltalende presentasjon.", - "LabelEnableChapterImageExtractionForMovies": "Generer kapittelbilde for Filmer", - "LabelChapterImageExtractionForMoviesHelp": "Uthenting av kapittelbilder gj\u00f8r klientene i stand til \u00e5 vise grafiske menyer for valg av scene. Prosessen kan v\u00e6re treg, CPU-intensiv og kan kreve sv\u00e6rt mange gigabytes lagringsplass. Dette kj\u00f8res som en nattlig oppgave, og kan konfigureres under Planlagte Aktiviteter. Det anbefales ikke \u00e5 kj\u00f8re denne jobben n\u00e5r serveren brukes til annet.", - "LabelEnableAutomaticPortMapping": "Sl\u00e5 p\u00e5 automatisk port-mapping", - "LabelEnableAutomaticPortMappingHelp": "UPnP tillater automatisert router-konfigurasjon for enkel ekstern tilgang. Denne funksjonen st\u00f8ttes ikke av alle routere.", - "HeaderTermsOfService": "Emby vilk\u00e5r for bruk.", - "MessagePleaseAcceptTermsOfService": "Vennligst aksepter v\u00e5re servicevilk\u00e5r og personvernpolicy f\u00f8r du fortsetter.", - "OptionIAcceptTermsOfService": "Jeg aksepterer servicevilk\u00e5rene", - "ButtonPrivacyPolicy": "Personvernpolicy", - "ButtonTermsOfService": "Servicevilk\u00e5r", - "HeaderDeveloperOptions": "Utvikler-innstillinger", - "OptionEnableWebClientResponseCache": "Aktiver webklient respons-caching", - "OptionDisableForDevelopmentHelp": "Konfigurer disse i forbindelse med utvikling av web-klienten.", - "OptionEnableWebClientResourceMinification": "Aktiver ressursminimering for webklient", - "LabelDashboardSourcePath": "Webklient kildesti:", - "LabelDashboardSourcePathHelp": "Hvis serveren kj\u00f8rer fra kildekode, angi sti til mappe for dashboard-ui. Alle filer for webklienten kommer fra denne mappen.", - "ButtonConvertMedia": "Konverter media", - "ButtonOrganize": "Organiser", - "LinkedToEmbyConnect": "Knyttet til Emby Connect.", - "HeaderSupporterBenefits": "Supporter Benefits", - "HeaderAddUser": "Ny bruker", - "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", - "LabelPinCode": "Pin kode:", - "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", - "HeaderSync": "Synk.", - "ButtonOk": "Ok", - "ButtonCancel": "Avbryt", - "ButtonExit": "Avslutt", - "ButtonNew": "Ny", - "HeaderTV": "TV", - "HeaderAudio": "Lyd", - "HeaderVideo": "Video", - "HeaderPaths": "Stier", - "CategorySync": "Synk", - "TabPlaylist": "Spilleliste", - "HeaderEasyPinCode": "Enkel PIN-kode", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- eller --", - "HeaderInstalledServices": "Installerte programtillegg", - "HeaderAvailableServices": "Tilgjengelige tjenester", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Registrer med PayPal", - "HeaderSyncRequiresSupporterMembership": "Synkronisering krever st\u00f8ttemedlemskap", - "HeaderEnjoyDayTrial": "Hygg deg med en 14-dagers gratis pr\u00f8veperiode", - "LabelSyncTempPath": "Midlertidig fil-sti:", - "LabelSyncTempPathHelp": "Spesifiser din egen synk-mappe. Konverterte mediefiler opprettet ved synkronisering vil lagres her.", - "LabelCustomCertificatePath": "Sti for eget sertifikat:", - "LabelCustomCertificatePathHelp": "Angi ditt eget SSL-sertifikats .ptx-fil. Hvis feltet er blankt vil serveren opprette et eget selv-signert sertifikat.", - "TitleNotifications": "Beskjeder", - "ButtonDonateWithPayPal": "Don\u00e9r med PayPal", - "OptionDetectArchiveFilesAsMedia": "Behandle arkivfiler som media", - "OptionDetectArchiveFilesAsMediaHelp": "Hvis aktivert blir .rar- og .zipfiler behandlet som mediafiler.", - "LabelEnterConnectUserName": "Brukernavn eller epost:", - "LabelEnterConnectUserNameHelp": "This is your Emby online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Synk.jobb", - "FolderTypeMixed": "Forskjellig innhold", - "FolderTypeMovies": "Filmer", - "FolderTypeMusic": "Musikk", - "FolderTypeAdultVideos": "Voksen-videoer", - "FolderTypePhotos": "Foto", - "FolderTypeMusicVideos": "Musikk-videoer", - "FolderTypeHomeVideos": "Hjemme-videoer", - "FolderTypeGames": "Spill", - "FolderTypeBooks": "B\u00f8ker", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Arve", - "LabelContentType": "Innholdstype:", - "TitleScheduledTasks": "Planlagt oppgaver", - "HeaderSetupLibrary": "Konfigurer media-biblioteket", - "ButtonAddMediaFolder": "Legg til media-mappe", - "LabelFolderType": "Mappetype", - "ReferToMediaLibraryWiki": "Se i wik for media-biblioteket.", - "LabelCountry": "Land:", - "LabelLanguage": "Spr\u00e5k:", - "LabelTimeLimitHours": "Tidsbegrensning (timer):", - "ButtonJoinTheDevelopmentTeam": "Bli med i utvikler-teamet", - "HeaderPreferredMetadataLanguage": "Foretrukket spr\u00e5k for metadata", - "LabelSaveLocalMetadata": "Lagre cover og metadata i medie-mappene", - "LabelSaveLocalMetadataHelp": "Lagring av artwork og metadata direkte gjennom mediemapper vil legge dem et sted hvor de lett kan editeres.", - "LabelDownloadInternetMetadata": "Last ned cover og metadata fra internett", - "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", - "TabPreferences": "Preferanser", - "TabPassword": "Passord", - "TabLibraryAccess": "Bibliotektilgang", - "TabAccess": "Tilgang", - "TabImage": "Bilde", - "TabProfile": "Profil", - "TabMetadata": "Metadata", - "TabImages": "Bilder", - "TabNotifications": "Varslinger", - "TabCollectionTitles": "Titler", - "HeaderDeviceAccess": "Enhetstilgang", - "OptionEnableAccessFromAllDevices": "Gi tilgang fra alle enheter", - "OptionEnableAccessToAllChannels": "Gi tilgang til alle kanaler", - "OptionEnableAccessToAllLibraries": "Gi tilgang til alle bibliotek", - "DeviceAccessHelp": "Dette gjelder bare for enheter som som kan unikt identifiseres og vil ikke forindre tilgang fra nettleser. Filtrering av brukerens enhet vil forhindre dem fra \u00e5 bruke nye enheter inntil de har blitt godkjent her.", - "LabelDisplayMissingEpisodesWithinSeasons": "Vis episoder som mangler fra sesongen", - "LabelUnairedMissingEpisodesWithinSeasons": "Vis episoder som enn\u00e5 ikke har blitt sendt", - "HeaderVideoPlaybackSettings": "Innstillinger for video-avspilling", - "HeaderPlaybackSettings": "Avspillingsinnstillinger", - "LabelAudioLanguagePreference": "Foretrukket lydspor:", - "LabelSubtitleLanguagePreference": "Foretrukket undertekst:", - "OptionDefaultSubtitles": "Standard", - "OptionOnlyForcedSubtitles": "Kun tvungede undertekster", - "OptionAlwaysPlaySubtitles": "Alltid vis undertekster", - "OptionNoSubtitles": "Ingen undertekster", - "OptionDefaultSubtitlesHelp": "Undertekster som samsvarer med foretrukket spr\u00e5k vil bli vist n\u00e5r lyden er p\u00e5 et fremmed spr\u00e5k.", - "OptionOnlyForcedSubtitlesHelp": "Kun undertekster markert som tvunget vil bli vist.", - "OptionAlwaysPlaySubtitlesHelp": "Undertekster som samsvarer med foretrukket spr\u00e5k vil bli vist uavhengig lydens spr\u00e5k.", - "OptionNoSubtitlesHelp": "Undertekster vil ikke bli lastet som standard.", - "TabProfiles": "Profiler", - "TabSecurity": "Sikkerhet", - "ButtonAddUser": "Ny bruker", - "ButtonAddLocalUser": "Legg til lokal bruker", - "ButtonInviteUser": "Invit\u00e9r Bruker", - "ButtonSave": "Lagre", - "ButtonResetPassword": "Tilbakestill passord", - "LabelNewPassword": "Nytt passord:", - "LabelNewPasswordConfirm": "Bekreft nytt passord:", - "HeaderCreatePassword": "Lag nytt passord", - "LabelCurrentPassword": "N\u00e5v\u00e6rende passord:", - "LabelMaxParentalRating": "Maks tillatt sensur:", - "MaxParentalRatingHelp": "Innhold med h\u00f8yere aldersgrense vil bli skjult for brukeren", - "LibraryAccessHelp": "Velg media mappe som skal deles med denne brukren. Administrator vil ha mulighet for \u00e5 endre alle mapper ved \u00e5 bruke metadata behandler.", - "ChannelAccessHelp": "Velg kanaler som skal deler med denne brukeren. Administratorer har mulighet til \u00e5 editere p\u00e5 alle kanaler som benytter metadata behandleren.", - "ButtonDeleteImage": "Slett bilde", - "LabelSelectUsers": "Velg brukere:", - "ButtonUpload": "Last opp", - "HeaderUploadNewImage": "Last opp nytt bilde", - "LabelDropImageHere": "Slipp bilde her", - "ImageUploadAspectRatioHelp": "1:1 sideforhold anbefales. Kun JPG\/PNG.", - "MessageNothingHere": "Ingeting her.", - "MessagePleaseEnsureInternetMetadata": "P\u00e5se at nedlasting av internet-metadata er sl\u00e5tt p\u00e5.", - "TabSuggested": "Forslag", - "TabSuggestions": "Suggestions", - "TabLatest": "Siste", - "TabUpcoming": "Kommer", - "TabShows": "Show", - "TabEpisodes": "Episoder", - "TabGenres": "Sjangre", - "TabPeople": "Folk", - "TabNetworks": "Nettverk", - "HeaderUsers": "Brukere", - "HeaderFilters": "Filtre", - "ButtonFilter": "Filter", - "OptionFavorite": "Favoritter", - "OptionLikes": "Liker", - "OptionDislikes": "Misliker", - "OptionActors": "Skuespillere", - "OptionGuestStars": "Gjeste-opptredener", - "OptionDirectors": "Regis\u00f8r", - "OptionWriters": "Manus", - "OptionProducers": "Produsent", - "HeaderResume": "Fortsette", - "HeaderNextUp": "Neste", - "NoNextUpItemsMessage": "Ingen funnet. Begyn \u00e5 se det du har", - "HeaderLatestEpisodes": "Siste episoder", - "HeaderPersonTypes": "Persontyper:", - "TabSongs": "Sanger", - "TabAlbums": "Album", - "TabArtists": "Artister", - "TabAlbumArtists": "Album Artister", - "TabMusicVideos": "Musikk-videoer", - "ButtonSort": "Sorter", - "HeaderSortBy": "Sorter etter:", - "HeaderSortOrder": "Sorter Etter:", - "OptionPlayed": "Sett", - "OptionUnplayed": "Ikke sett", - "OptionAscending": "\u00d8kende", - "OptionDescending": "Synkende", - "OptionRuntime": "Spilletid", - "OptionReleaseDate": "Uttgitt dato", - "OptionPlayCount": "Antall avspillinger", - "OptionDatePlayed": "Dato spilt", - "OptionDateAdded": "Dato lagt til", - "OptionAlbumArtist": "Album Artist", - "OptionArtist": "Artist", - "OptionAlbum": "Album", - "OptionTrackName": "L\u00e5tnavn", - "OptionCommunityRating": "Community Rangering", - "OptionNameSort": "Navn", - "OptionFolderSort": "Mapper", - "OptionBudget": "Budsjett", - "OptionRevenue": "Inntjening", - "OptionPoster": "Plakat", - "OptionPosterCard": "Plakatkort", - "OptionBackdrop": "Bakgrunn", - "OptionTimeline": "Tidslinje", - "OptionThumb": "Thumb", - "OptionThumbCard": "Thumb-kort", - "OptionBanner": "Banner", - "OptionCriticRating": "Kritikervurdering", - "OptionVideoBitrate": "Video bitrate", - "OptionResumable": "Kan fortsettes", - "ScheduledTasksHelp": "Klikk p\u00e5 en oppgave for \u00e5 tilpasse tidsplan", - "ScheduledTasksTitle": "Planlagte Oppgaver", - "TabMyPlugins": "Mine programtillegg", - "TabCatalog": "Katalog", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Automatiske oppdateringer", - "HeaderNowPlaying": "Spiller n\u00e5", - "HeaderLatestAlbums": "Siste album", - "HeaderLatestSongs": "Siste l\u00e5ter", - "HeaderRecentlyPlayed": "Nylig avspilt", - "HeaderFrequentlyPlayed": "Ofte avspilt", - "DevBuildWarning": "Dev builds er \u00e5 anses som ustabile. Disse har ikke blitt testet. Dette vil kunne medf\u00f8re til at applikasjonen kan krasje og komplette funksjoner ikke fungerer.", - "LabelVideoType": "Video-type:", - "OptionBluray": "Bluray", - "OptionDvd": "DVD", - "OptionIso": "ISO", - "Option3D": "3D", - "LabelFeatures": "Funksjoner:", - "LabelService": "Service:", - "LabelStatus": "Status:", - "LabelVersion": "Versjon:", - "LabelLastResult": "Siste resultat:", - "OptionHasSubtitles": "Undertekster", - "OptionHasTrailer": "Trailer", - "OptionHasThemeSong": "Temasang", - "OptionHasThemeVideo": "Temavideo", - "TabMovies": "Filmer", - "TabStudios": "Studio", - "TabTrailers": "Trailere", - "LabelArtists": "Artister:", - "LabelArtistsHelp": "Skill flere med semikolon ;", - "HeaderLatestMovies": "Siste Filmer", - "HeaderLatestTrailers": "Siste Trailers", - "OptionHasSpecialFeatures": "Spesialfunksjoner", - "OptionImdbRating": "IMDb Rangering", - "OptionParentalRating": "Foreldresensur", - "OptionPremiereDate": "Premieredato", - "TabBasic": "Enkel", - "TabAdvanced": "Avansert", - "HeaderStatus": "Status", - "OptionContinuing": "Fortsetter", - "OptionEnded": "Avsluttet", - "HeaderAirDays": "Vises dager", - "OptionSunday": "S\u00f8ndag", - "OptionMonday": "Mandag", - "OptionTuesday": "Tirsdag", - "OptionWednesday": "Onsdag", - "OptionThursday": "Torsdag", - "OptionFriday": "Fredag", - "OptionSaturday": "L\u00f8rdag", - "HeaderManagement": "Strying", - "LabelManagement": "Administrasjon", - "OptionMissingImdbId": "Mangler IMDb ID", - "OptionMissingTvdbId": "Mangler TVDB ID", - "OptionMissingOverview": "Mangler oversikt", - "OptionFileMetadataYearMismatch": "Fil\/Metadata \u00e5r mismatch", - "TabGeneral": "Genrelt", - "TitleSupport": "Support", - "TabLog": "Logg", - "TabAbout": "Om", - "TabSupporterKey": "Supporter-n\u00f8kkel", - "TabBecomeSupporter": "Bli en supporter", - "ProjectHasCommunity": "Emby has a thriving community of users and contributors.", - "CheckoutKnowledgeBase": "Check out our knowledge base to help you get the most out of Emby.", - "SearchKnowledgeBase": "S\u00f8k kunnskapsbasen", - "VisitTheCommunity": "Bes\u00f8k oss", - "VisitProjectWebsite": "Bes\u00f8k Emby Media", - "VisitProjectWebsiteLong": "Visit the Emby Web site to catch the latest news and keep up with the developer blog.", - "OptionHideUser": "Skjul brukere fra logginn-skjermen", - "OptionHideUserFromLoginHelp": "Praktisk for private eller skjulte administratorer. Brukeren vil m\u00e5tte logge inn manuelt ved \u00e5 skrive inn brukernavn og passord.", - "OptionDisableUser": "Deaktiver denne brukeren", - "OptionDisableUserHelp": "Hvis avsl\u00e5tt vil ikke serveren godta noen forbindelser fra denne brukeren. Eksisterende forbindelser vil avsluttes umiddelbart.", - "HeaderAdvancedControl": "Avansert Kontroll", - "LabelName": "Navn", - "ButtonHelp": "Hjelp", - "OptionAllowUserToManageServer": "TIllatt denne brukeren \u00e5 administrere serveren", - "HeaderFeatureAccess": "Funksjonstilgang", - "OptionAllowMediaPlayback": "Tillate avspilling av media", - "OptionAllowBrowsingLiveTv": "Tillate Live TV", - "OptionAllowDeleteLibraryContent": "Tillate sletting av media", - "OptionAllowManageLiveTv": "Tillate administrasjon av Live TV", - "OptionAllowRemoteControlOthers": "Tillat fjernstyring av andre brukere", - "OptionAllowRemoteSharedDevices": "Tillate fjernstyring av delte enheter", - "OptionAllowRemoteSharedDevicesHelp": "DLNA-enheter betraktes som delte inntil en bruker begynner \u00e5 styre dem.", - "HeaderRemoteControl": "Fjernstyring" + "HeaderNewServer": "Ny server", + "ButtonChangeServer": "Endre server", + "HeaderConnectToServer": "Koble til server", + "OptionReportList": "List View", + "OptionReportStatistics": "Statistikk", + "OptionReportGrouping": "Gruppering", + "HeaderExport": "Eksporter", + "HeaderColumns": "Kolonner", + "ButtonReset": "Resett", + "OptionEnableExternalVideoPlayers": "Aktiver eksterne videoavspillere", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/nl.json b/MediaBrowser.Server.Implementations/Localization/Server/nl.json index cd99db9c1..19ac8bca3 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/nl.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/nl.json @@ -1,8 +1,57 @@ { - "TabWebClient": "Web Client", + "LabelExit": "Afsluiten", + "LabelVisitCommunity": "Bezoek Gemeenschap", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standaard", + "LabelApiDocumentation": "Api documentatie", + "LabelDeveloperResources": "Ontwikkelaars bronnen", + "LabelBrowseLibrary": "Bekijk bibliotheek", + "LabelConfigureServer": "Emby Configureren", + "LabelOpenLibraryViewer": "Open bibliotheek verkenner", + "LabelRestartServer": "Server herstarten", + "LabelShowLogWindow": "Toon log venster", + "LabelPrevious": "Vorige", + "LabelFinish": "Voltooien", + "FolderTypeMixed": "Mixed content", + "LabelNext": "Volgende", + "LabelYoureDone": "Gereed!", + "WelcomeToProject": "Welkom bij Emby!", + "ThisWizardWillGuideYou": "Deze wizard helpt u door het setup-proces.", + "TellUsAboutYourself": "Vertel ons over uzelf", + "ButtonQuickStartGuide": "Snel start gids", + "LabelYourFirstName": "Uw voornaam:", + "MoreUsersCanBeAddedLater": "Meer gebruikers kunnen later via het dashboard worden toegevoegd.", + "UserProfilesIntro": "Emby heeft ingebouwde ondersteuning voor gebruikersprofielen die het mogelijk maken om elke gebruiker eigen scherminstellingen, afspeelinstellingen en ouderlijk toezicht te geven.", + "LabelWindowsService": "Windows Service", + "AWindowsServiceHasBeenInstalled": "Er is een Windows service ge\u00efnstalleerd.", + "WindowsServiceIntro1": "Emby Server draait normaalgesproken als een desktop applicatie met een icoon in het systeemvaak, maar als u dat wilt kunt u het als een achtergrondproces draaien. Het kan daarvoor worden gestart vanuit het Windows Services configuratiescherm.", + "WindowsServiceIntro2": "Wanneer u de Windows-service gebruikt, dan dient u er rekening mee te houden dat het niet op hetzelfde moment als de desktop applicatie kan worden uitgevoerd. Het is daarom vereist de desktop applicatie eerst af te sluiten voordat u de service gebruikt. De service moet worden geconfigureerd met beheerdersrechten via het configuratie scherm. Houd er rekening mee dat op dit moment de service niet automatisch kan worden bijgewerkt, zodat nieuwe versies dus handmatige interactie vereisen.", + "WizardCompleted": "Dat is alles wat we nu nodig hebben. Emby is begonnen met het verzamelen van informatie over uw media bibliotheek. Probeer sommige van onze apps en klik dan <b>Finish<\/b> om het <b>Server Dashboard<\/b> te bekijken.", + "LabelConfigureSettings": "Configureer instellingen", + "LabelEnableVideoImageExtraction": "Videobeeld uitpakken inschakelen", + "VideoImageExtractionHelp": "Voor video's die nog geen afbeeldingen hebben, en waarvoor geen afbeeldingen op Internet te vinden zijn. Dit voegt extra tijd toe aan de oorspronkelijke bibliotheek scan, maar resulteert in een mooiere weergave.", + "LabelEnableChapterImageExtractionForMovies": "Hoofdstuk afbeeldingen uitpakken voor Films", + "LabelChapterImageExtractionForMoviesHelp": "Uitpakken van hoofdstuk afbeeldingen biedt clients grafische scene selectie menu's. Het proces kan langzaam en processor intensief zijn en kan enkele gigabytes aan vrije ruimte vereisen. Het draait 's nachts als geplande taak, hoewel dit aangepast kan worden bij de geplande taken. Het wordt niet aanbevolen om deze taak tijdens piekuren te draaien.", + "LabelEnableAutomaticPortMapping": "Automatische poorttoewijzing inschakelen", + "LabelEnableAutomaticPortMappingHelp": "UPnP zorgt voor geautomatiseerde configuratie van de router voor gemakkelijke toegang op afstand. Dit werkt mogelijk niet met sommige routers.", + "HeaderTermsOfService": "Emby Service Voorwaarden", + "MessagePleaseAcceptTermsOfService": "Accepteer a.u.b. de voorwaarden en Privacybeleid voordat u doorgaat.", + "OptionIAcceptTermsOfService": "Ik accepteer de voorwaarden", + "ButtonPrivacyPolicy": "Privacybeleid", + "ButtonTermsOfService": "Service voorwaarden", + "HeaderDeveloperOptions": "Ontwikkelaar Opties", + "OptionEnableWebClientResponseCache": "Web client reactie caching inschakelen", + "OptionDisableForDevelopmentHelp": "Configureer deze zonodig voor web client ontwikkelingsdoeleinden.", + "OptionEnableWebClientResourceMinification": "Web client bron verkleining inschakelen", + "LabelDashboardSourcePath": "Web client bron pad:", + "LabelDashboardSourcePathHelp": "Wanneer u de server draait vanaf de bron, geeft u het pad naar de map dashboard-ui op. Alle web client bestanden worden geladen vanaf deze locatie.", + "ButtonConvertMedia": "Converteer media", + "ButtonOrganize": "Organiseren", + "LinkedToEmbyConnect": "Gekoppeld aan Emby Connect", "HeaderSupporterBenefits": "Voordelen voor Supporters", "HeaderAddUser": "Gebruiker Toevoegen", - "LabelAddConnectSupporterHelp": "Om een \u200b\u200bgebruiker toe te voegen die niet in de lijst voorkomt, moet je eerst hun account koppelen aan Emby Connect uit hun gebruikersprofiel pagina.", + "LabelAddConnectSupporterHelp": "Om een \u200b\u200bgebruiker toe te voegen die niet in de lijst voorkomt, moet u eerst hun account koppelen aan Emby Connect vanuit hun gebruikersprofiel pagina.", "LabelPinCode": "Pincode:", "OptionHideWatchedContentFromLatestMedia": "Verberg bekeken inhoud van recent toegevoegd", "HeaderSync": "Sync", @@ -23,7 +72,7 @@ "HeaderAvailableServices": "Beschikbare diensten", "MessageNoServicesInstalled": "Er zijn momenteel geen diensten ge\u00efnstalleerd.", "HeaderToAccessPleaseEnterEasyPinCode": "Voor toegang toets uw pincode", - "KidsModeAdultInstruction": "Klik op het slotje in de rechterbenedenhoek om te configureren of blijf in de kindermodus. Uw pincode nodig zal zijn", + "KidsModeAdultInstruction": "Klik op het slotje in de rechterbenedenhoek om te configureren of blijf in de kindermodus. Uw pincode is vereist.", "ButtonConfigurePinCode": "Configureer pincode", "HeaderAdultsReadHere": "Volwassenen Lees hier!", "RegisterWithPayPal": "Registreer met PayPal", @@ -37,12 +86,11 @@ "ButtonDonateWithPayPal": "Doneer met PayPal", "OptionDetectArchiveFilesAsMedia": "Herken archief bestanden als media", "OptionDetectArchiveFilesAsMediaHelp": "Indien ingeschakeld zullen bestanden met .rar en .zip extensies herkend worden als media bestanden.", - "LabelEnterConnectUserName": "Gebruikersnaam of e-mail:", - "LabelEnterConnectUserNameHelp": "Dit is uw Emby online account gebruikersnaam en wachtwoord.", + "LabelEnterConnectUserName": "Gebruikersnaam of email:", + "LabelEnterConnectUserNameHelp": "Dit is uw Emby Online account naam of wachtwoord.", "LabelEnableEnhancedMovies": "Verbeterde film displays inschakelen", "LabelEnableEnhancedMoviesHelp": "Wanneer ingeschakeld, zullen films worden weergegeven als mappen inclusief trailers, extra's, cast & crew en andere gerelateerde inhoud.", "HeaderSyncJobInfo": "Sync Opdrachten", - "FolderTypeMixed": "Gemengde inhoud", "FolderTypeMovies": "Films", "FolderTypeMusic": "Muziek", "FolderTypeAdultVideos": "Adult video's", @@ -239,13 +287,15 @@ "OptionFileMetadataYearMismatch": "Jaartal in Bestands\/metadata komt niet overeen", "TabGeneral": "Algemeen", "TitleSupport": "Ondersteuning", + "LabelSeasonNumber": "Seizoensnummer", "TabLog": "Logboek", + "LabelEpisodeNumber": "Afleveringsnummer", "TabAbout": "Over", "TabSupporterKey": "Supporter Sleutel", "TabBecomeSupporter": "Word Supporter", - "ProjectHasCommunity": "Emby heeft een bloeiende gemeenschap van gebruikers en medewerkers", + "ProjectHasCommunity": "Emby heeft een bloeiende gemeenschap van gebruikers en medewerkers.", "CheckoutKnowledgeBase": "Bekijk onze knowledge base om u te helpen het meeste uit Emby halen.", - "SearchKnowledgeBase": "Zoeken in de Kennisbank", + "SearchKnowledgeBase": "Zoek in de Kennisbank", "VisitTheCommunity": "Bezoek de Gemeenschap", "VisitProjectWebsite": "Bezoek de Emby Website", "VisitProjectWebsiteLong": "Bezoek de Emby Web-website voor het laatste nieuws en blijf op de hoogte via het ontwikkelaars blog.", @@ -261,10 +311,13 @@ "OptionAllowMediaPlayback": "Media afspelen toestaan", "OptionAllowBrowsingLiveTv": "Live TV toegang toestaan", "OptionAllowDeleteLibraryContent": "Media verwijderen toestaan", - "OptionAllowManageLiveTv": "Sta Live TV opname beheer toe", + "OptionAllowManageLiveTv": "Live TV opname beheer toestaan", "OptionAllowRemoteControlOthers": "Op afstand besturen van andere gebruikers toestaan", "OptionAllowRemoteSharedDevices": "Op afstand besturen van gedeelde apparaten toestaan", "OptionAllowRemoteSharedDevicesHelp": "Dlna apparaten worden als gedeeld apparaat gezien totdat een gebruiker deze gaat gebruiken.", + "OptionAllowLinkSharing": "Sta social media delen toe", + "OptionAllowLinkSharingHelp": "Alleen webpagina's met media-informatie worden gedeeld. Media-bestanden worden nooit publiekelijk gedeeld. Aandelen zijn beperkt in de tijd en zal verlopen op basis van uw instellingen voor delen server.", + "HeaderSharing": "Delen", "HeaderRemoteControl": "Gebruik op afstand", "OptionMissingTmdbId": "TMDB Id ontbreekt", "OptionIsHD": "HD", @@ -272,17 +325,17 @@ "OptionMetascore": "Metascore", "ButtonSelect": "Selecteer", "ButtonGroupVersions": "Groepeer Versies", - "ButtonAddToCollection": "Voeg toe aan Collectie", + "ButtonAddToCollection": "Toevoegen aan Collectie", "PismoMessage": "Pismo File Mount (met een geschonken licentie).", "TangibleSoftwareMessage": "Gebruik makend van concrete oplossingen als Java \/ C converters door een geschonken licentie.", "HeaderCredits": "Credits", - "PleaseSupportOtherProduces": "Steun A.U.B. ook de andere gratis producten die wij gebruiken:", + "PleaseSupportOtherProduces": "Steun a.u.b. ook andere gratis producten die wij gebruiken:", "VersionNumber": "Versie {0}", "TabPaths": "Paden", "TabServer": "Server", "TabTranscoding": "Transcoderen", "TitleAdvanced": "Geavanceerd", - "LabelAutomaticUpdateLevel": "Automatische update niveau", + "LabelAutomaticUpdateLevel": "Niveau automatische update", "OptionRelease": "Offici\u00eble Release", "OptionBeta": "Beta", "OptionDev": "Dev (Instabiel)", @@ -299,8 +352,8 @@ "LabelImagesByNamePathHelp": "Geef een locatie op voor gedownloade afbeeldingen van acteurs, genre en studio.", "LabelMetadataPath": "Metadata pad:", "LabelMetadataPathHelp": "Geef een aangepaste locatie op voor gedownloade afbeeldingen en metadata, indien niet opgeslagen in mediamappen.", - "LabelTranscodingTempPath": "Tijdelijk Transcodeer pad:", - "LabelTranscodingTempPathHelp": "Deze map bevat werkbestanden die worden gebruikt door de transcoder. Geef een eigen locatie op of laat leeg om de standaardlocatie te gebruiken.", + "LabelTranscodingTempPath": "Tijdelijk transcodeer pad:", + "LabelTranscodingTempPathHelp": "Deze map bevat werkbestanden die worden gebruikt door de transcoder. Geef een eigen locatie op of laat het leeg om de standaardlocatie te gebruiken.", "TabBasics": "Basis", "TabTV": "TV", "TabGames": "Games", @@ -328,10 +381,10 @@ "OptionImageSavingStandard": "Standaard - MB2", "ButtonSignIn": "Aanmelden", "TitleSignIn": "Aanmelden", - "HeaderPleaseSignIn": "Wachtwoord in geven", + "HeaderPleaseSignIn": "Aanmelden", "LabelUser": "Gebruiker:", "LabelPassword": "Wachtwoord:", - "ButtonManualLogin": "Handmatige aanmelding:", + "ButtonManualLogin": "Handmatige Aanmelding", "PasswordLocalhostMessage": "Wachtwoorden zijn niet vereist bij het aanmelden van localhost.", "TabGuide": "Gids", "TabChannels": "Kanalen", @@ -463,16 +516,16 @@ "OptionHighSpeedTranscoding": "Hogere snelheid", "OptionHighQualityTranscoding": "Hogere kwaliteit", "OptionMaxQualityTranscoding": "Max kwaliteit", - "OptionEnableDebugTranscodingLogging": "Transcodeer Foutopsporings logboek inschakelen", - "OptionEnableDebugTranscodingLoggingHelp": "Dit zal zeer grote logboekbestanden maken en wordt alleen aanbevolen wanneer het nodig is voor het oplossen van problemen.", + "OptionEnableDebugTranscodingLogging": "Transcodeer foutopsporings logboek inschakelen", + "OptionEnableDebugTranscodingLoggingHelp": "Dit zal zeer grote logboekbestanden genereren en wordt alleen aanbevolen wanneer het nodig is voor het oplossen van problemen.", "EditCollectionItemsHelp": "Toevoegen of verwijderen van alle films, series, albums, boeken of games die u wilt groeperen in deze collectie.", "HeaderAddTitles": "Titels toevoegen", - "LabelEnableDlnaPlayTo": "DLNA Afspelen met inschakelen", + "LabelEnableDlnaPlayTo": "DLNA Afspelen Met inschakelen", "LabelEnableDlnaPlayToHelp": "Emby kan apparaten detecteren binnen uw netwerk en biedt de mogelijkheid om ze op afstand te controleren", "LabelEnableDlnaDebugLogging": "DLNA foutopsporings logboek inschakelen", "LabelEnableDlnaDebugLoggingHelp": "Dit zal grote logboekbestanden maken en mag alleen worden gebruikt als dat nodig is voor het oplossen van problemen.", "LabelEnableDlnaClientDiscoveryInterval": "Interval voor het zoeken naar clients (seconden)", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Bepalend voor de duur in seconden tussen SSDP zoekopdrachten uitgevoerd door Emby.", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Bepaalt de duur in seconden tussen SSDP zoekopdrachten uitgevoerd door Emby.", "HeaderCustomDlnaProfiles": "Aangepaste profielen", "HeaderSystemDlnaProfiles": "Systeem Profielen", "CustomDlnaProfilesHelp": "Maak een aangepast profiel om een \u200b\u200bnieuw apparaat aan te maken of overschrijf een systeemprofiel.", @@ -508,17 +561,17 @@ "LabelHttpsPortHelp": "Het tcp poort nummer waar Emby's http server aan moet verbinden.", "LabelWebSocketPortNumber": "Web socket poortnummer:", "LabelEnableAutomaticPortMap": "Schakel automatisch poort vertalen in", - "LabelEnableAutomaticPortMapHelp": "Probeer om de publieke poort automatisch te vertalen naar de lokale poort via UPnP. Dit werk niet op alle routers.", + "LabelEnableAutomaticPortMapHelp": "Probeer om de publieke poort automatisch te vertalen naar de lokale poort via UPnP. Dit werkt niet op alle routers.", "LabelExternalDDNS": "Extern WAN Adres:", "LabelExternalDDNSHelp": "Als u een dynamische DNS heeft moet dit hier worden ingevoerd. Emby apps zullen het gebruiken als externe verbinding. Laat leeg voor automatische detectie", "TabResume": "Hervatten", "TabWeather": "Weer", "TitleAppSettings": "App Instellingen", - "LabelMinResumePercentage": "Percentage (Min):", - "LabelMaxResumePercentage": "Percentage (Max):", - "LabelMinResumeDuration": "Minimale duur (In seconden):", + "LabelMinResumePercentage": "Percentage (min.):", + "LabelMaxResumePercentage": "Percentage (max.):", + "LabelMinResumeDuration": "Minimale duur (seconden):", "LabelMinResumePercentageHelp": "Titels worden ingesteld als onafgespeeld indien gestopt voor deze tijd", - "LabelMaxResumePercentageHelp": "Titels worden ingesteld als volledig afgespeeld als gestopt na deze tijd", + "LabelMaxResumePercentageHelp": "Titels worden ingesteld als volledig afgespeeld indien gestopt na deze tijd", "LabelMinResumeDurationHelp": "Titels korter dan dit zullen niet hervatbaar zijn", "TitleAutoOrganize": "Automatisch Organiseren", "TabActivityLog": "Activiteiten Logboek", @@ -533,13 +586,11 @@ "LabelSkipped": "Overgeslagen", "HeaderEpisodeOrganization": "Afleveringen Organisatie", "LabelSeries": "Series:", - "LabelSeasonNumber": "Seizoen nummer:", - "LabelEpisodeNumber": "Aflevering nummer:", "LabelEndingEpisodeNumber": "Laatste aflevering nummer:", "LabelEndingEpisodeNumberHelp": "Alleen vereist voor bestanden met meerdere afleveringen", "HeaderSupportTheTeam": "Ondersteun het Emby Team", "LabelSupportAmount": "Bedrag (USD)", - "HeaderSupportTheTeamHelp": "Door te doneren draagt u mee aan de verdere ontwikkeling van dit project. Een deel van alle donaties zal worden bijgedragen aan de andere gratis tools waarvan we afhankelijk zijn.", + "HeaderSupportTheTeamHelp": "Door te doneren draagt u bij aan de verdere ontwikkeling van dit project. Een deel van alle donaties zal worden bijgedragen aan de andere gratis tools waarvan we afhankelijk zijn.", "ButtonEnterSupporterKey": "Voer supporter sleutel in", "DonationNextStep": "Eenmaal voltooid gaat u terug en voert u de supporter sleutel in die u per e-mail zult ontvangen.", "AutoOrganizeHelp": "Automatisch organiseren monitort de download mappen op nieuwe bestanden en verplaatst ze naar uw mediamappen.", @@ -603,9 +654,9 @@ "ErrorMessageInvalidKey": "Om premium inhoud te registreren moet u ook Emby Supporter zijn. Doneer alstublieft en ondersteun daarmee de voortdurende ontwikkeling van het kernproduct. Bedankt.", "HeaderDisplaySettings": "Weergave-instellingen", "TabPlayTo": "Afspelen met", - "LabelEnableDlnaServer": "DLNA Server inschakelen", + "LabelEnableDlnaServer": "DLNA server inschakelen", "LabelEnableDlnaServerHelp": "Sta UPnP apparaten op uw netwerk toe om door Emby inhoud te bladeren en af te spelen.", - "LabelEnableBlastAliveMessages": "Zend alive berichten", + "LabelEnableBlastAliveMessages": "Alive berichten zenden", "LabelEnableBlastAliveMessagesHelp": "Zet dit aan als de server niet betrouwbaar door andere UPnP-apparaten op uw netwerk wordt gedetecteerd.", "LabelBlastMessageInterval": "Alive bericht interval (seconden)", "LabelBlastMessageIntervalHelp": "Bepaalt de duur in seconden tussen server Alive berichten.", @@ -623,7 +674,7 @@ "HeaderRequireManualLoginHelp": "Indien uitgeschakeld toont de client een aanmeldscherm met een visuele selectie van gebruikers.", "OptionOtherApps": "Overige apps", "OptionMobileApps": "Mobiele apps", - "HeaderNotificationList": "Klik op een melding om de opties voor het versturen ervan te configureren .", + "HeaderNotificationList": "Klik op een melding om de opties voor het versturen ervan te configureren.", "NotificationOptionApplicationUpdateAvailable": "Programma-update beschikbaar", "NotificationOptionApplicationUpdateInstalled": "Programma-update ge\u00efnstalleerd", "NotificationOptionPluginUpdateInstalled": "Plug-in-update ge\u00efnstalleerd", @@ -689,7 +740,7 @@ "ButtonNext": "Volgende", "ButtonPrevious": "Vorige", "LabelGroupMoviesIntoCollections": "Groepeer films in collecties", - "LabelGroupMoviesIntoCollectionsHelp": "Bij de weergave van film lijsten, zullen films die behoren tot een collectie worden weergegeven als een gegroepeerd object.", + "LabelGroupMoviesIntoCollectionsHelp": "Bij de weergave van film lijsten, zullen films die tot een collectie behoren worden weergegeven als een gegroepeerd object.", "NotificationOptionPluginError": "Plug-in fout", "ButtonVolumeUp": "Volume omhoog", "ButtonVolumeDown": "Volume omlaag", @@ -749,7 +800,7 @@ "LabelMaxBitrateHelp": "Geef een max. bitrate in bandbreedte beperkte omgevingen, of als het apparaat zijn eigen limiet heeft.", "LabelMaxStreamingBitrate": "Maximale streaming bitrate:", "LabelMaxStreamingBitrateHelp": "Geef een maximale bitrate voor streaming op.", - "LabelMaxChromecastBitrate": "Max Chromecast bitrate:", + "LabelMaxChromecastBitrate": "Maximale bitrate Chromecast:", "LabelMaxStaticBitrate": "Maximale Synchronisatie bitrate:", "LabelMaxStaticBitrateHelp": "Geef een maximale bitrate op voor synchroniseren in hoge kwaliteit.", "LabelMusicStaticBitrate": "Muzieksynchronisatie bitrate:", @@ -786,7 +837,7 @@ "OptionEstimateContentLength": "Lengte schatten van de inhoud bij het transcoderen", "OptionReportByteRangeSeekingWhenTranscoding": "Rapporteer dat de server byte zoeken tijdens transcoderen ondersteunt", "OptionReportByteRangeSeekingWhenTranscodingHelp": "Dit is vereist voor bepaalde apparaten die zo goed op tijd zoeken.", - "HeaderSubtitleDownloadingHelp": "Wanneer Emby uw videobestanden scant kan het zoeken naar missende ondertitels, en download ze met behulp van een ondertitel provider zoals OpenSubtitlesorg", + "HeaderSubtitleDownloadingHelp": "Tijdens het scannen van uw videobestanden kan Emby zoeken naar missende ondertitels en deze downloaden met behulp van een ondertitel provider zoals OpenSubtitles.org.", "HeaderDownloadSubtitlesFor": "Download ondertiteling voor:", "MessageNoChapterProviders": "Installeer een hoofdstuk provider Plug-in zoals ChapterDb om extra hoofdstuk opties in te schakelen.", "LabelSkipIfGraphicalSubsPresent": "Overslaan als de video al grafische ondertitels bevat", @@ -796,13 +847,13 @@ "HeaderDownloadChaptersFor": "Download hoofdstuk namen voor:", "LabelOpenSubtitlesUsername": "Gebruikersnaam Open Subtitles:", "LabelOpenSubtitlesPassword": "Wachtwoord Open Subtitles:", - "HeaderChapterDownloadingHelp": "Wanneer Emby uw videobestanden scant kan het vriendelijke hoofdstuk namen downloaden van het internet met behulp van hoofdstuk plugins zoals ChapterDb", + "HeaderChapterDownloadingHelp": "Wanneer Emby uw videobestanden scant kan het vriendelijke hoofdstuk namen downloaden van het internet met behulp van hoofdstuk plugins zoals ChapterDb.", "LabelPlayDefaultAudioTrack": "Speel standaard audio spoor ongeacht taal", "LabelSubtitlePlaybackMode": "Ondertitelingsmode:", "LabelDownloadLanguages": "Download talen:", "ButtonRegister": "Aanmelden", "LabelSkipIfAudioTrackPresent": "Overslaan als het standaard audio spoor overeenkomt met de taal van de download", - "LabelSkipIfAudioTrackPresentHelp": "Uitvinken om ervoor te zorgen dat alle video's ondertitels krijgen, ongeacht de gesproken taal.", + "LabelSkipIfAudioTrackPresentHelp": "Vink dit uit om ervoor te zorgen dat alle video's ondertitels krijgen, ongeacht de audiotaal.", "HeaderSendMessage": "Stuur bericht", "ButtonSend": "Stuur", "LabelMessageText": "Bericht tekst:", @@ -822,10 +873,11 @@ "HeaderTypeText": "Voer tekst in", "LabelTypeText": "Tekst", "HeaderSearchForSubtitles": "Zoeken naar Ondertitels", + "ButtonMore": "Meer", "MessageNoSubtitleSearchResultsFound": "Geen zoekresultaten gevonden.", "TabDisplay": "Weergave", "TabLanguages": "Talen", - "TabAppSettings": "App Settings", + "TabAppSettings": "App Instellingen", "LabelEnableThemeSongs": "Theme songs inschakelen:", "LabelEnableBackdrops": "Achtergronden inschakelen:", "LabelEnableThemeSongsHelp": "Indien ingeschakeld, zullen theme songs in de achtergrond worden afgespeeld tijdens het browsen door de bibliotheek.", @@ -852,7 +904,7 @@ "HeaderLiveTv": "Live TV", "HeaderReports": "Rapporten", "HeaderMetadataManager": "Metadata Manager", - "HeaderPreferences": "Voorkeuren", + "HeaderSettings": "Instellingen", "MessageLoadingChannels": "Laden kanaal inhoud ...", "MessageLoadingContent": "Inhoud wordt geladen ...", "ButtonMarkRead": "Markeren als gelezen", @@ -860,7 +912,7 @@ "OptionCommunityMostWatchedSort": "Meest bekeken", "TabNextUp": "Volgend", "PlaceholderUsername": "Gebruikersnaam", - "HeaderBecomeProjectSupporter": "Wordt Emby Supporter", + "HeaderBecomeProjectSupporter": "Word Emby Supporter", "MessageNoMovieSuggestionsAvailable": "Er zijn momenteel geen film suggesties beschikbaar. Begin met het bekijken en waardeer uw films, kom daarna terug om uw aanbevelingen te bekijken.", "MessageNoCollectionsAvailable": "Collecties maken het u mogelijk om Films, Series, Albums, Boeken en Games te groeperen. Klik op de + knop om Collecties aan te maken.", "MessageNoPlaylistsAvailable": "Met afspeellijsten kunt u een lijst maken waarvan de items achter elkaar afgespeeld worden. Om een item toe te voegen klikt u met rechts of tik en houd het vast om het te selecteren, klik vervolgens op Toevoegen aan afspeellijst.", @@ -927,9 +979,9 @@ "LabelProtocolInfo": "Protocol info:", "LabelProtocolInfoHelp": "De waarde die wordt gebruikt bij het reageren op GetProtocolInfo verzoeken van het apparaat.", "TabNfo": "Nfo", - "HeaderKodiMetadataHelp": "Emby omvat native ondersteuning voor Nfo metadata bestanden. Om Nfo metadata in- of uit te schakelen, gebruikt u het tabblad Geavanceerd om opties te configureren voor uw mediatypen.", - "LabelKodiMetadataUser": "Synchroniseer gekeken informatie toe aan NFO's voor (gebruiker):", - "LabelKodiMetadataUserHelp": "Schakel dit in om gemonitorde gegevens in sync te houden tussen Emby Server en Nfo bestanden.", + "HeaderKodiMetadataHelp": "Emby omvat ondersteunt Nfo metadata bestanden. Om Nfo metadata in- of uit te schakelen, gebruikt u het tabblad Geavanceerd om opties voor uw mediatypen in te stellen.", + "LabelKodiMetadataUser": "Synchroniseer kijk informatie naar nfo's voor:", + "LabelKodiMetadataUserHelp": "Schakel dit in om gemonitorde gegevens tussen Emby Server en Nfo bestanden te synchroniseren", "LabelKodiMetadataDateFormat": "Uitgave datum formaat:", "LabelKodiMetadataDateFormatHelp": "Alle datums in NFO's zullen gelezen en geschreven worden met dit formaat.", "LabelKodiMetadataSaveImagePaths": "Bewaar afbeeldingspaden in NFO-bestanden", @@ -940,9 +992,9 @@ "LabelGroupChannelsIntoViews": "Toon de volgende kanalen binnen mijn overzichten:", "LabelGroupChannelsIntoViewsHelp": "Indien ingeschakeld, zullen deze kanalen direct naast andere overzichten worden weergegeven. Indien uitgeschakeld, zullen ze worden weergegeven in een aparte kanalen overzicht.", "LabelDisplayCollectionsView": "Toon collecties in mijn overzichten om film verzamelingen weer te geven", - "LabelDisplayCollectionsViewHelp": "Hiermee wordt een aparte weergave gemaakt waarin collecties worden weergegeven die u hebt aangemaakt of toegang toe hebt. Klik rechts op een film of druk en houd vast en kies 'Voeg toe aan Collectie'. ", + "LabelDisplayCollectionsViewHelp": "Hiermee wordt een aparte weergave gemaakt waarin collecties worden weergegeven die u hebt aangemaakt of toegang toe hebt. Klik rechts op een film of druk en houd vast en kies 'Toevoegen aan Collectie'. ", "LabelKodiMetadataEnableExtraThumbs": "Kopieer extrafanart naar extrathumbs", - "LabelKodiMetadataEnableExtraThumbsHelp": "Als er afbeeldingen gedownload worden kunnen deze direct in extrafanart en extrathumbs opgeslagen worden voor maximale Kodi skin compatibiliteit.", + "LabelKodiMetadataEnableExtraThumbsHelp": "Gedownloade afbeeldingen kunnen direct in extrafanart en extrathumbs opgeslagen worden voor maximale Kodi skin compatibiliteit.", "TabServices": "Meta Diensten", "TabLogs": "Logboeken", "HeaderServerLogFiles": "Server logboek bestanden:", @@ -1050,7 +1102,6 @@ "OptionReportArtists": "Artiesten", "OptionReportAlbums": "Albums", "OptionReportAdultVideos": "Adult video's", - "ButtonMore": "Meer", "HeaderActivity": "Activiteit", "ScheduledTaskStartedWithName": "{0} is gestart", "ScheduledTaskCancelledWithName": "{0} is geannuleerd", @@ -1100,7 +1151,7 @@ "LabelEasyPinCode": "Eenvoudige pincode:", "EasyPasswordHelp": "Uw gemakkelijk pincode wordt gebruikt voor offline toegang met ondersteunde Emby apps, en kan ook worden gebruikt voor eenvoudige in-netwerk aanmelden.", "LabelInNetworkSignInWithEasyPassword": "Schakel eenvoudige lokale aanmelding in met mijn easy pin code", - "LabelInNetworkSignInWithEasyPasswordHelp": "Indien ingeschakeld, zult u in staat zijn om uw gemakkelijke pincode gebruiken om u aan te melden bij Emby apps van binnen uw thuisnetwerk. Uw reguliere wachtwoord is nodig buiten uw thuisnetwerk. Als U de pincode leeg laat, heeft U geen wachtwoord nodig in uw thuisnetwerk.", + "LabelInNetworkSignInWithEasyPasswordHelp": "Indien ingeschakeld, zult u in staat zijn om uw gemakkelijke pincode gebruiken om u aan te melden bij Emby apps van binnen uw thuisnetwerk. Uw reguliere wachtwoord is nodig buiten uw thuisnetwerk. Als u de pincode leeg laat, heeft u geen wachtwoord nodig in uw thuisnetwerk.", "HeaderPassword": "Wachtwoord", "HeaderLocalAccess": "Lokale toegang", "HeaderViewOrder": "Weergave volgorde", @@ -1173,13 +1224,14 @@ "OptionMakeOneTimeDonation": "Doe een aparte donatie", "OptionOneTimeDescription": "Dit is een extra donatie voor het team om te laten zien dat u hen steunt. Het geeft geen extra voordelen en geeft u geen supporter sleutel.", "OptionLifeTimeSupporterMembership": "Levenslang supporter lidmaatschap", - "OptionYearlySupporterMembership": "Jaarlijkse supporter lidmaatschap", - "OptionMonthlySupporterMembership": "maandelijks supporter lidmaatschap", + "OptionYearlySupporterMembership": "Jaarlijks supporter lidmaatschap", + "OptionMonthlySupporterMembership": "Maandelijks supporter lidmaatschap", "OptionNoTrailer": "Geen trailer", "OptionNoThemeSong": "Geen thema muziek", "OptionNoThemeVideo": "Geen thema film", "LabelOneTimeDonationAmount": "Donatie bedrag:", "ButtonDonate": "Doneren", + "ButtonPurchase": "Aankoop", "OptionActor": "Acteur", "OptionComposer": "Componist", "OptionDirector": "Regiseur", @@ -1199,7 +1251,6 @@ "HeaderDeveloperInfo": "Informatie ontwikkelaar", "HeaderRevisionHistory": "Versie geschiedenis", "ButtonViewWebsite": "Bekijk website", - "LabelRecurringDonationCanBeCancelledHelp": "Terugkerende donaties kunnen op elk moment stop gezet worden in uw PayPal account.", "HeaderXmlSettings": "Xml Instellingen", "HeaderXmlDocumentAttributes": "Xml Document Attributen", "HeaderXmlDocumentAttribute": "Xml Document Attribuut", @@ -1213,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Leer meer over Emby Connect", "LabelExternalPlayers": "Externe spelers:", "LabelExternalPlayersHelp": "Toon knoppen om inhoud in externe spelers of te spelen. Dit is alleen mogelijk op apparaten die 'url schemes' ondersteunen, meest Android en iOS. Met externe spelers is er over het algemeen geen ondersteuning voor afstandsbediening of hervatten.", + "LabelNativeExternalPlayersHelp": "Toon knoppen om media in externe spelers te kunnen spelen.", + "LabelEnableItemPreviews": "Schakel item preview in", + "LabelEnableItemPreviewsHelp": "Bij inschakelen zal op sommige schermen een preview getoond worden als op een item geklikt wordt.", "HeaderSubtitleProfile": "Ondertitelingsprofiel", "HeaderSubtitleProfiles": "Ondertitelingsprofielen", "HeaderSubtitleProfilesHelp": "Ondertitelingsprofielen beschrijven de ondertitelings formaten ondersteund door het apparaat.", @@ -1253,7 +1307,7 @@ "LabelDateAddedBehavior": "Datum toegevoegd gedrag voor nieuwe content:", "OptionDateAddedImportTime": "Gebruik scan datum", "OptionDateAddedFileTime": "Gebruik aanmaak datum bestand", - "LabelDateAddedBehaviorHelp": "Als er metadata gegevens zijn hebben deze voorrang op deze opties.", + "LabelDateAddedBehaviorHelp": "Als metadata gegevens aanwezig zijn hebben deze voorrang op deze opties.", "LabelNumberTrailerToPlay": "Aantal af te spelen trailers:", "TitleDevices": "Apparaten", "TabCameraUpload": "Camera upload", @@ -1267,10 +1321,10 @@ "LabelCustomDeviceDisplayName": "Weergave naam:", "LabelCustomDeviceDisplayNameHelp": "Geef een eigen weergave naam op of laat deze leeg om de naam te gebruiken die het apparaat opgeeft.", "HeaderInviteUser": "Nodig gebruiker uit", - "LabelConnectGuestUserNameHelp": "Dit is de gebruikersnaam die je vriend gebruikt om zich aan te melden bij de Emby website, of hun e-mailadres", - "HeaderInviteUserHelp": "Het delen van je media met vrienden is eenvoudiger dan ooit met Emby Connect.", + "LabelConnectGuestUserNameHelp": "Dit is de gebruikersnaam die uw vriend gebruikt om zich aan te melden bij de Emby website, of hun e-mailadres", + "HeaderInviteUserHelp": "Delen van uw media met vrienden is eenvoudiger dan ooit met Emby Connect.", "ButtonSendInvitation": "Stuur uitnodiging", - "HeaderSignInWithConnect": "Meld je aan met Emby Connect", + "HeaderSignInWithConnect": "Aanmelden met Emby Connect", "HeaderGuests": "Gasten", "HeaderLocalUsers": "Lokale gebruikers", "HeaderPendingInvitations": "Uitstaande uitnodigingen", @@ -1296,7 +1350,7 @@ "ButtonSignUp": "Aanmelden", "ButtonForgotPassword": "Wachtwoord vergeten", "OptionDisableUserPreferences": "Voorkom toegang tot gebruikers voorkeuren", - "OptionDisableUserPreferencesHelp": "Indien ingeschakeld kunnen alleen beheerders profiel afbeeldingen, wachtwoorden en taalinstellingen wijzigen.", + "OptionDisableUserPreferencesHelp": "Indien ingeschakeld kunnen alleen beheerders profielafbeeldingen, wachtwoorden en taalinstellingen wijzigen.", "HeaderSelectServer": "Selecteer server", "MessageNoServersAvailableToConnect": "Er zijn geen servers beschikbaar om mee te verbinden. Als u uitgenodigd bent om een server te delen accepteer dit hieronder of door op de link in het emailbericht te klikken.", "TitleNewUser": "Nieuwe gebruiker", @@ -1341,97 +1395,60 @@ "HeaderUpcomingMovies": "Aankomende Films", "HeaderUpcomingSports": "Sport binnenkort", "HeaderUpcomingPrograms": "Aankomende Programma's", - "ButtonMoreItems": "Meer...", + "ButtonMoreItems": "Meer", "LabelShowLibraryTileNames": "Toon bibliotheek tegel namen", "LabelShowLibraryTileNamesHelp": "Bepaalt of labels onder de bibliotheek tegels zullen worden weergegeven op de startpagina", "OptionEnableTranscodingThrottle": "Throtteling inschakelen", "OptionEnableTranscodingThrottleHelp": "Throtteling zal automatisch de snelheid van het transcoderen aanpassen om de cpu belasting laag te houden tijdens het afspelen.", "LabelUploadSpeedLimit": "Upload limiet (Mbps):", - "OptionAllowSyncTranscoding": "Sta synchronisatie toe die transcodering vereist", + "OptionAllowSyncTranscoding": "Synchronisatie die transcodering vereist toestaan", "HeaderPlayback": "Media afspelen", - "OptionAllowAudioPlaybackTranscoding": "Sta het afspelen van audio wat transcoding vereist toe", - "OptionAllowVideoPlaybackTranscoding": "Sta het afspelen van video wat transcoding vereist toe", + "OptionAllowAudioPlaybackTranscoding": "Afspelen van audio via transcoding toestaan", + "OptionAllowVideoPlaybackTranscoding": "Afspelen van video via transcoding toestaan", "OptionAllowMediaPlaybackTranscodingHelp": "Gebruikers zullen een bericht ontvangen als afspelen niet is toegestaan op basis van het beleid", "TabStreaming": "Streaming", "LabelRemoteClientBitrateLimit": "Client bitrate limiet (Mbps):", "LabelRemoteClientBitrateLimitHelp": "Een optionele streaming bitrate limiet voor alle clients. Dit wordt gebruikt om te voorkomen dat clients een hogere bitrate aanvragen dan de internet connectie kan leveren.", "LabelConversionCpuCoreLimit": "CPU core limiet:", - "LabelConversionCpuCoreLimitHelp": "Limiteer het aantal CPU cores wat gebruikt mag worden bij een omzetteing om te synchroniseren.", - "OptionEnableFullSpeedConversion": "Schakel hoge converteren op hoge snelheid in", - "OptionEnableFullSpeedConversionHelp": "Standaard wordt het converteren voor synchronisatie opdrachten op lage snelheid uitgevoerd zodat er zo min mogelijke impact is op de server.", + "LabelConversionCpuCoreLimitHelp": "Limiteer het aantal CPU cores dat gebruikt mag worden bij een omzetting om te synchroniseren.", + "OptionEnableFullSpeedConversion": "Inschakelen conversie op hoge snelheid", + "OptionEnableFullSpeedConversionHelp": "Standaard wordt het converteren voor synchronisatie opdrachten op lage snelheid uitgevoerd zodat er zo min mogelijk impact is op de server.", "HeaderPlaylists": "Afspeellijsten", - "HeaderSelectDate": "Selecteer Datum", - "HeaderWelcomeExclamation": "Welkom!", - "HeaderMyPreferences": "Mijn voorkeuren", - "ButtonMyPreferencesWelcomeYes": "Ja, ik wil mijn voorkeuren nu instellen.", - "ButtonMyPreferencesWelcomeNo": "Nee, bedankt, dat doe ik later.", - "MyPreferencesWelcomeMessage1": "We tonen je bibliotheek op een manier waarvan we denken dat je het fijn vindt. De weergave en groepering kan altijd aangepast worden aan jouw voorkeur. Je voorkeur wordt op al je Emby apps toegepast.", - "MyPreferencesWelcomeMessage2": "Wil je nu je voorkeuren instellen?", - "ToAccessPreferencesHelp": "Om je voorkeuren later te wijzigen, klik je op je gebruikersicoon rechtsboven en kies je Mijn voorkeuren.", "HeaderViewStyles": "Bekijk stijlen", - "LabelSelectViewStyles": "Enable enhanced presentations for:", - "LabelSelectViewStylesHelp": "Bij inschakelen zullen overzichten met met categori\u00ebn zolas suggesties, recente, genres en meer getoond worden. Bij uitschakelen worden simpele mappen getoond.", - "TabPhotos": "Photos", - "TabVideos": "Videos", - "HeaderWelcomeToEmby": "Welcome to Emby", - "EmbyIntroMessage": "With Emby you can easily stream videos, music and photos to smart phones, tablets and other devices from your Emby Server.", - "ButtonSkip": "Skip", - "TextConnectToServerManually": "Connect to server manually", - "ButtonSignInWithConnect": "Sign in with Emby Connect", - "ButtonConnect": "Connect", - "LabelServerHost": "Host:", - "LabelServerHostHelp": "192.168.1.100 or https:\/\/myserver.com", - "LabelServerPort": "Port:", - "HeaderNewServer": "New Server", - "ButtonChangeServer": "Change Server", - "HeaderConnectToServer": "Connect to Server", - "LabelExit": "Afsluiten", - "LabelVisitCommunity": "Bezoek Gemeenschap", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standaard", - "LabelApiDocumentation": "Api documentatie", - "LabelDeveloperResources": "Ontwikkelaars bronnen", - "LabelBrowseLibrary": "Bekijk bibliotheek", - "LabelConfigureServer": "Emby Configureren", - "LabelOpenLibraryViewer": "Open bibliotheek verkenner", - "LabelRestartServer": "Server herstarten", - "LabelShowLogWindow": "Toon log venster", - "LabelPrevious": "Vorige", - "LabelFinish": "Voltooien", - "LabelNext": "Volgende", - "LabelYoureDone": "Gereed!", - "WelcomeToProject": "Welkom bij Emby!", - "ThisWizardWillGuideYou": "Deze wizard helpt u door het setup-proces.", - "TellUsAboutYourself": "Vertel ons over uzelf", - "ButtonQuickStartGuide": "Snel start gids", - "LabelYourFirstName": "Uw voornaam:", - "MoreUsersCanBeAddedLater": "Meer gebruikers kunnen later via het dashboard worden toegevoegd.", - "UserProfilesIntro": "Emby heeft ingebouwde ondersteuning voor gebruikersprofielen die het mogelijk maken om elke gebruiker eigen scherminstellingen, afspeelinstellingen en ouderlijk toezicht te geven.", - "LabelWindowsService": "Windows Service", - "AWindowsServiceHasBeenInstalled": "Er is een Windows service ge\u00efnstalleerd.", - "WindowsServiceIntro1": "Emby Server draait normaalgesproken als een desktop applicatie met een icoon in het systeemvaak, maar als u dat wilt kunt u het als een achtergrondproces draaien. Het kan daarvoor worden gestart vanuit het Windows Services configuratiescherm.", - "WindowsServiceIntro2": "Wanneer u de Windows-service gebruikt, dan dient u er rekening mee te houden dat het niet op hetzelfde moment als de desktop applicatie kan worden uitgevoerd. Het is daarom vereist de desktop applicatie eerst af te sluiten voordat u de service gebruikt. De service moet worden geconfigureerd met beheerdersrechten via het configuratie scherm. Houd er rekening mee dat op dit moment de service niet automatisch kan worden bijgewerkt, zodat nieuwe versies dus handmatige interactie vereisen.", - "WizardCompleted": "Dat is alles wat we nu nodig hebben. Emby is begonnen met het verzamelen van informatie over uw media bibliotheek. Probeer sommige van onze apps en klik dan <b>Finish<\/b> om het <b>Server Dashboard<\/b> te bekijken.", - "LabelConfigureSettings": "Configureer instellingen", - "LabelEnableVideoImageExtraction": "Videobeeld uitpakken inschakelen", - "VideoImageExtractionHelp": "Voor video's die nog geen afbeeldingen hebben, en waarvoor geen afbeeldingen op Internet te vinden zijn. Dit voegt extra tijd toe aan de oorspronkelijke bibliotheek scan, maar resulteert in een mooiere weergave.", - "LabelEnableChapterImageExtractionForMovies": "Hoofdstuk afbeeldingen uitpakken voor Films", - "LabelChapterImageExtractionForMoviesHelp": "Uitpakken van hoofdstuk afbeeldingen biedt clients grafische scene selectie menu's. Het proces kan langzaam en processor intensief zijn en kan enkele gigabytes aan vrije ruimte vereisen. Het draait 's nachts als geplande taak, hoewel dit aangepast kan worden bij de geplande taken. Het wordt niet aanbevolen om deze taak tijdens piekuren te draaien.", - "LabelEnableAutomaticPortMapping": "Automatische poorttoewijzing inschakelen", - "LabelEnableAutomaticPortMappingHelp": "UPnP zorgt voor geautomatiseerde configuratie van de router voor gemakkelijke toegang op afstand. Dit werkt mogelijk niet met sommige routers.", - "HeaderTermsOfService": "Emby Service Voorwaarden", - "MessagePleaseAcceptTermsOfService": "Accepteer a.u.b. de voorwaarden en Privacybeleid voordat u doorgaat.", - "OptionIAcceptTermsOfService": "Ik accepteer de voorwaarden", - "ButtonPrivacyPolicy": "Privacybeleid", - "ButtonTermsOfService": "Service voorwaarden", - "HeaderDeveloperOptions": "Ontwikkelaar Opties", - "OptionEnableWebClientResponseCache": "Web client reactie caching inschakelen", - "OptionDisableForDevelopmentHelp": "Configureer deze zonodig voor web client ontwikkelingsdoeleinden.", - "OptionEnableWebClientResourceMinification": "Web client bron verkleining inschakelen", - "LabelDashboardSourcePath": "Web client bron pad:", - "LabelDashboardSourcePathHelp": "Wanneer u de server draait vanaf de bron, geeft u het pad naar de map dashboard-ui op. Alle web client bestanden worden geladen vanaf deze locatie.", - "ButtonConvertMedia": "Converteer media", - "ButtonOrganize": "Organiseren", - "LinkedToEmbyConnect": "Gekoppeld aan Emby Connect" + "LabelSelectViewStyles": "Schakel verbeterde presentatie in voor:", + "LabelSelectViewStylesHelp": "Bij inschakelen zullen overzichten met met categorie\u00ebn zoals suggesties, recente, genres en meer getoond worden. Bij uitschakelen worden simpele mappen getoond.", + "TabPhotos": "Foto's", + "TabVideos": "Video's", + "HeaderWelcomeToEmby": "Welkom bij Emby", + "EmbyIntroMessage": "Met Emby kunt u eenvoudig films, muziek en foto's naar uw telefoon, tablet en andere apparatuur streamen.", + "ButtonSkip": "Overslaan", + "TextConnectToServerManually": "Verbind handmatig met de server", + "ButtonSignInWithConnect": "Aanmelden met Emby Connect", + "ButtonConnect": "Verbind", + "LabelServerHost": "Server:", + "LabelServerHostHelp": "192.168.1.100 of https:\/\/myserver.com", + "LabelServerPort": "Poort:", + "HeaderNewServer": "Nieuwe Server", + "ButtonChangeServer": "Wijzig server", + "HeaderConnectToServer": "Verbind met server", + "OptionReportList": "Lijst weergave", + "OptionReportStatistics": "Statistieken", + "OptionReportGrouping": "Groepering", + "HeaderExport": "Export", + "HeaderColumns": "Kolommen", + "ButtonReset": "Rest", + "OptionEnableExternalVideoPlayers": "Inschakelen van externe video-spelers", + "ButtonUnlockGuide": "Gids vrijgeven", + "LabelEnableFullScreen": "Schakel Full Screen in", + "LabelEnableChromecastAc3Passthrough": "Schakel Chromecast AC3 Passthrough in", + "LabelSyncPath": "Gesynchroniseerde inhoud pad:", + "LabelEmail": "Email adres:", + "LabelUsername": "Gebruikersnaam:", + "HeaderSignUp": "Meld aan", + "LabelPasswordConfirm": "Wachtworod (Bevestig)", + "ButtonAddServer": "Voeg server toe", + "TabHomeScreen": "Start scherm", + "HeaderDisplay": "Weergave", + "HeaderNavigation": "Navigatie", + "LegendTheseSettingsShared": "Deze instellingen worden gedeeld op alle apparaten" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/pl.json b/MediaBrowser.Server.Implementations/Localization/Server/pl.json index e3133f7ba..3285c627b 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/pl.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/pl.json @@ -1,17 +1,96 @@ { - "TabWebClient": "Web Client", + "LabelExit": "Wyj\u015b\u0107", + "LabelVisitCommunity": "Odwied\u017a spo\u0142eczno\u015b\u0107", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standardowy", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Przejrzyj bibliotek\u0119", + "LabelConfigureServer": "Configure Emby", + "LabelOpenLibraryViewer": "Otw\u00f3rz przegl\u0105dark\u0119 biblioteki", + "LabelRestartServer": "Uruchom serwer ponownie", + "LabelShowLogWindow": "Show Log Window", + "LabelPrevious": "Wstecz", + "LabelFinish": "Koniec", + "FolderTypeMixed": "Mixed content", + "LabelNext": "Dalej", + "LabelYoureDone": "Sko\u0144czy\u0142e\u015b!", + "WelcomeToProject": "Welcome to Emby!", + "ThisWizardWillGuideYou": "Asystent pomo\u017ce Ci podczas instalacji. Na pocz\u0105tku, wybierz tw\u00f3j preferowany j\u0119zyk.", + "TellUsAboutYourself": "Opowiedz nam o sobie", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "Twoje imi\u0119:", + "MoreUsersCanBeAddedLater": "Mo\u017cesz doda\u0107 wi\u0119cej u\u017cytkownik\u00f3w p\u00f3\u017aniej przez tablic\u0119 rozdzielcz\u0105.", + "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", + "LabelWindowsService": "Serwis Windows", + "AWindowsServiceHasBeenInstalled": "Serwis Windows zosta\u0142 zainstalowany.", + "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", + "WindowsServiceIntro2": "Je\u015bli u\u017cywacie serwisu windows, to nie mo\u017ce on by\u0107 w\u0142\u0105czony r\u00f3wnocze\u015bnie z ikon\u0105 na pasku wi\u0119c b\u0119dziecie musieli j\u0105 wy\u0142\u0105czy\u0107 \u017ceby serwis dzia\u0142a\u0142. Nale\u017cy r\u00f3wnie\u017c ten serwis skonfigurowa\u0107 z uprawnieniami administracyjnymi poprzez panel sterowania. Prosz\u0119 wzi\u0105\u0107 pod uwag\u0119, \u017ce w tym momencie nie ma samo aktualizacji, nowe wersje b\u0119d\u0105 wi\u0119c potrzebowa\u0142y manualnej interwencji.", + "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", + "LabelConfigureSettings": "Skonfiguruj ustawienia", + "LabelEnableVideoImageExtraction": "W\u0142\u0105cz ekstrakcj\u0119 obrazu wideo", + "VideoImageExtractionHelp": "Dla filmik\u00f3w kt\u00f3re nie maj\u0105 jeszcze obraz\u00f3w i dla kt\u00f3rych nie mo\u017cemy \u017cadnych znale\u017a\u0107 na internecie. Zwi\u0119kszy to czas wst\u0119pnego skanowania biblioteki ale wynikiem b\u0119dzie \u0142adniejsza prezentacja.", + "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "W\u0142\u0105cz automatyczne mapowanie port\u00f3w", + "LabelEnableAutomaticPortMappingHelp": "UPnP umo\u017cliwia automatyczne ustawienie routera dla \u0142atwego zdalnego dost\u0119pu. Ta opcja mo\u017ce nie dzia\u0142a\u0107 na niekt\u00f3rych modelach router\u00f3w.", + "HeaderTermsOfService": "Emby Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToEmbyConnect": "Linked to Emby Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", + "ButtonOk": "Ok", + "ButtonCancel": "Anuluj", + "ButtonExit": "Exit", + "ButtonNew": "New", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", "LabelCustomCertificatePath": "Custom certificate path:", "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", "TitleNotifications": "Notifications", "ButtonDonateWithPayPal": "Donate with PayPal", "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Emby online account user name or password.", + "LabelEnterConnectUserName": "Username or email:", + "LabelEnterConnectUserNameHelp": "This is your Emby online account username or password.", "LabelEnableEnhancedMovies": "Enable enhanced movie displays", "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", "FolderTypeMovies": "Movies", "FolderTypeMusic": "Music", "FolderTypeAdultVideos": "Adult videos", @@ -208,7 +287,9 @@ "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", "TabGeneral": "Og\u00f3lne", "TitleSupport": "Wesprzyj", + "LabelSeasonNumber": "Season number", "TabLog": "Log", + "LabelEpisodeNumber": "Episode number", "TabAbout": "A propos", "TabSupporterKey": "Supporter Key", "TabBecomeSupporter": "Become a Supporter", @@ -234,6 +315,9 @@ "OptionAllowRemoteControlOthers": "Allow remote control of other users", "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", "HeaderRemoteControl": "Remote Control", "OptionMissingTmdbId": "Missing Tmdb Id", "OptionIsHD": "HD", @@ -502,8 +586,6 @@ "LabelSkipped": "Skipped", "HeaderEpisodeOrganization": "Episode Organization", "LabelSeries": "Series:", - "LabelSeasonNumber": "Season number:", - "LabelEpisodeNumber": "Episode number:", "LabelEndingEpisodeNumber": "Ending episode number:", "LabelEndingEpisodeNumberHelp": "Only required for multi-episode files", "HeaderSupportTheTeam": "Support the Emby Team", @@ -791,6 +873,7 @@ "HeaderTypeText": "Enter Text", "LabelTypeText": "Text", "HeaderSearchForSubtitles": "Search for Subtitles", + "ButtonMore": "More", "MessageNoSubtitleSearchResultsFound": "No search results founds.", "TabDisplay": "Display", "TabLanguages": "Languages", @@ -821,7 +904,7 @@ "HeaderLiveTv": "Live TV", "HeaderReports": "Reports", "HeaderMetadataManager": "Metadata Manager", - "HeaderPreferences": "Preferences", + "HeaderSettings": "Settings", "MessageLoadingChannels": "Loading channel content...", "MessageLoadingContent": "Loading content...", "ButtonMarkRead": "Mark Read", @@ -1019,7 +1102,6 @@ "OptionReportArtists": "Artists", "OptionReportAlbums": "Albums", "OptionReportAdultVideos": "Adult videos", - "ButtonMore": "More", "HeaderActivity": "Activity", "ScheduledTaskStartedWithName": "{0} started", "ScheduledTaskCancelledWithName": "{0} was cancelled", @@ -1149,6 +1231,7 @@ "OptionNoThemeVideo": "No Theme Video", "LabelOneTimeDonationAmount": "Donation amount:", "ButtonDonate": "Donate", + "ButtonPurchase": "Purchase", "OptionActor": "Actor", "OptionComposer": "Composer", "OptionDirector": "Director", @@ -1168,7 +1251,6 @@ "HeaderDeveloperInfo": "Developer Info", "HeaderRevisionHistory": "Revision History", "ButtonViewWebsite": "View website", - "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderXmlSettings": "Xml Settings", "HeaderXmlDocumentAttributes": "Xml Document Attributes", "HeaderXmlDocumentAttribute": "Xml Document Attribute", @@ -1182,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", "LabelExternalPlayers": "External players:", "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", "HeaderSubtitleProfile": "Subtitle Profile", "HeaderSubtitleProfiles": "Subtitle Profiles", "HeaderSubtitleProfilesHelp": "Subtitle profiles describe the subtitle formats supported by the device.", @@ -1310,7 +1395,7 @@ "HeaderUpcomingMovies": "Upcoming Movies", "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", - "ButtonMoreItems": "More...", + "ButtonMoreItems": "More", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", @@ -1329,14 +1414,6 @@ "OptionEnableFullSpeedConversion": "Enable full speed conversion", "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", "HeaderViewStyles": "View Styles", "LabelSelectViewStyles": "Enable enhanced presentations for:", "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", @@ -1354,84 +1431,24 @@ "HeaderNewServer": "New Server", "ButtonChangeServer": "Change Server", "HeaderConnectToServer": "Connect to Server", - "LabelExit": "Wyj\u015b\u0107", - "LabelVisitCommunity": "Odwied\u017a spo\u0142eczno\u015b\u0107", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standardowy", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Przejrzyj bibliotek\u0119", - "LabelConfigureServer": "Configure Emby", - "LabelOpenLibraryViewer": "Otw\u00f3rz przegl\u0105dark\u0119 biblioteki", - "LabelRestartServer": "Uruchom serwer ponownie", - "LabelShowLogWindow": "Show Log Window", - "LabelPrevious": "Wstecz", - "LabelFinish": "Koniec", - "LabelNext": "Dalej", - "LabelYoureDone": "Sko\u0144czy\u0142e\u015b!", - "WelcomeToProject": "Welcome to Emby!", - "ThisWizardWillGuideYou": "Asystent pomo\u017ce Ci podczas instalacji. Na pocz\u0105tku, wybierz tw\u00f3j preferowany j\u0119zyk.", - "TellUsAboutYourself": "Opowiedz nam o sobie", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "Twoje imi\u0119:", - "MoreUsersCanBeAddedLater": "Mo\u017cesz doda\u0107 wi\u0119cej u\u017cytkownik\u00f3w p\u00f3\u017aniej przez tablic\u0119 rozdzielcz\u0105.", - "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "Serwis Windows", - "AWindowsServiceHasBeenInstalled": "Serwis Windows zosta\u0142 zainstalowany.", - "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", - "WindowsServiceIntro2": "Je\u015bli u\u017cywacie serwisu windows, to nie mo\u017ce on by\u0107 w\u0142\u0105czony r\u00f3wnocze\u015bnie z ikon\u0105 na pasku wi\u0119c b\u0119dziecie musieli j\u0105 wy\u0142\u0105czy\u0107 \u017ceby serwis dzia\u0142a\u0142. Nale\u017cy r\u00f3wnie\u017c ten serwis skonfigurowa\u0107 z uprawnieniami administracyjnymi poprzez panel sterowania. Prosz\u0119 wzi\u0105\u0107 pod uwag\u0119, \u017ce w tym momencie nie ma samo aktualizacji, nowe wersje b\u0119d\u0105 wi\u0119c potrzebowa\u0142y manualnej interwencji.", - "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", - "LabelConfigureSettings": "Skonfiguruj ustawienia", - "LabelEnableVideoImageExtraction": "W\u0142\u0105cz ekstrakcj\u0119 obrazu wideo", - "VideoImageExtractionHelp": "Dla filmik\u00f3w kt\u00f3re nie maj\u0105 jeszcze obraz\u00f3w i dla kt\u00f3rych nie mo\u017cemy \u017cadnych znale\u017a\u0107 na internecie. Zwi\u0119kszy to czas wst\u0119pnego skanowania biblioteki ale wynikiem b\u0119dzie \u0142adniejsza prezentacja.", - "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "W\u0142\u0105cz automatyczne mapowanie port\u00f3w", - "LabelEnableAutomaticPortMappingHelp": "UPnP umo\u017cliwia automatyczne ustawienie routera dla \u0142atwego zdalnego dost\u0119pu. Ta opcja mo\u017ce nie dzia\u0142a\u0107 na niekt\u00f3rych modelach router\u00f3w.", - "HeaderTermsOfService": "Emby Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LinkedToEmbyConnect": "Linked to Emby Connect", - "HeaderSupporterBenefits": "Supporter Benefits", - "HeaderAddUser": "Add User", - "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", - "LabelPinCode": "Pin code:", - "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", - "HeaderSync": "Sync", - "ButtonOk": "Ok", - "ButtonCancel": "Anuluj", - "ButtonExit": "Exit", - "ButtonNew": "New", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "TabPlaylist": "Playlist", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here." + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "HeaderExport": "Export", + "HeaderColumns": "Columns", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json b/MediaBrowser.Server.Implementations/Localization/Server/pt-BR.json index 1082bce8f..d6644e363 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/pt-BR.json @@ -1,5 +1,307 @@ { - "TabWebClient": "Cliente Web", + "LabelExit": "Sair", + "LabelVisitCommunity": "Visitar a Comunidade", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Padr\u00e3o", + "LabelApiDocumentation": "Documenta\u00e7\u00e3o da Api", + "LabelDeveloperResources": "Recursos do Desenvolvedor", + "LabelBrowseLibrary": "Explorar Biblioteca", + "LabelConfigureServer": "Configurar o Emby", + "LabelOpenLibraryViewer": "Abrir Visualizador da Biblioteca", + "LabelRestartServer": "Reiniciar Servidor", + "LabelShowLogWindow": "Exibir Janela de Log", + "LabelPrevious": "Anterior", + "LabelFinish": "Finalizar", + "FolderTypeMixed": "Mixed content", + "LabelNext": "Pr\u00f3ximo", + "LabelYoureDone": "Pronto!", + "WelcomeToProject": "Bem vindo ao Emby!", + "ThisWizardWillGuideYou": "Este assistente ir\u00e1 gui\u00e1-lo pelo processo de instala\u00e7\u00e3o. Para come\u00e7ar, por favor selecione seu idioma preferido.", + "TellUsAboutYourself": "Conte-nos sobre voc\u00ea", + "ButtonQuickStartGuide": "Guia r\u00e1pido", + "LabelYourFirstName": "Seu primeiro nome:", + "MoreUsersCanBeAddedLater": "Mais usu\u00e1rios poder\u00e3o ser adicionados depois dentro do Painel.", + "UserProfilesIntro": "Emby inclui suporte nativo para perfis de usu\u00e1rios, permitindo que cada usu\u00e1rio tenha seus pr\u00f3prios ajustes de visualiza\u00e7\u00e3o, estado da reprodu\u00e7\u00e3o e controles parentais.", + "LabelWindowsService": "Servi\u00e7o do Windows", + "AWindowsServiceHasBeenInstalled": "Foi instalado um Servi\u00e7o do Windows.", + "WindowsServiceIntro1": "O Servidor Emby normalmente \u00e9 executado como uma aplica\u00e7\u00e3o de desktop com um \u00edcone na bandeja do sistema, mas se preferir executar como um servi\u00e7o em segundo plano, pode ser iniciado no painel de controle de servi\u00e7os do windows.", + "WindowsServiceIntro2": "Se usar o servi\u00e7o do Windows, por favor certifique-se que n\u00e3o esteja sendo executado ao mesmo tempo que o \u00edcone na bandeja, se estiver ter\u00e1 que sair da app antes de executar o servi\u00e7o. O servi\u00e7o necessita ser configurado com privil\u00e9gios de administrador no painel de controle. Neste momento o servi\u00e7o n\u00e3o pode se auto-atualizar, por isso novas vers\u00f5es exigir\u00e3o intera\u00e7\u00e3o manual.", + "WizardCompleted": "Isto \u00e9 tudo no momento. Emby come\u00e7ou a coletar informa\u00e7\u00f5es de sua biblioteca de m\u00eddias. Confira algumas de nossas apps e ent\u00e3o clique<b>Terminar<\/b> para ver o <b>Painel do Servidor<\/b>.", + "LabelConfigureSettings": "Configurar ajustes", + "LabelEnableVideoImageExtraction": "Ativar extra\u00e7\u00e3o de imagens de v\u00eddeo", + "VideoImageExtractionHelp": "Para v\u00eddeos que n\u00e3o tenham imagens e que n\u00e3o possamos encontrar imagens na internet. Isto aumentar\u00e1 o tempo do rastreamento inicial da biblioteca mas resultar\u00e1 em uma apresenta\u00e7\u00e3o mais bonita.", + "LabelEnableChapterImageExtractionForMovies": "Extrair imagens de cap\u00edtulos dos Filmes", + "LabelChapterImageExtractionForMoviesHelp": "Extrair imagens de cap\u00edtulos permitir\u00e1 aos clientes exibir menus gr\u00e1ficos de sele\u00e7\u00e3o de cenas. O processo pode ser lento, ocasionar uso intensivo de cpu e pode exigir bastante espa\u00e7o em disco. Ele ser\u00e1 executado como uma tarefa noturna, embora isto possa ser configur\u00e1vel na \u00e1rea de tarefas agendadas. N\u00e3o \u00e9 recomendado executar esta tarefa durante as horas de pico de uso.", + "LabelEnableAutomaticPortMapping": "Ativar mapeamento de porta autom\u00e1tico", + "LabelEnableAutomaticPortMappingHelp": "UPnP permite uma configura\u00e7\u00e3o automatizada do roteador para acesso remoto f\u00e1cil. Isto pode n\u00e3o funcionar em alguns modelos de roteadores.", + "HeaderTermsOfService": "Termos de Servi\u00e7o do Emby", + "MessagePleaseAcceptTermsOfService": "Por favor, aceite os termos de servi\u00e7o e pol\u00edtica de privacidade antes de continuar.", + "OptionIAcceptTermsOfService": "Aceito os termos de servi\u00e7o", + "ButtonPrivacyPolicy": "Pol\u00edtica de privacidade", + "ButtonTermsOfService": "Termos de Servi\u00e7o", + "HeaderDeveloperOptions": "Op\u00e7\u00f5es de Desenvolvedor", + "OptionEnableWebClientResponseCache": "Ativar o cache de resposta do client web", + "OptionDisableForDevelopmentHelp": "Configure esta op\u00e7\u00e3o de acordo ao prop\u00f3sito de desenvolvimento do cliente web", + "OptionEnableWebClientResourceMinification": "Ativar a minimiza\u00e7\u00e3o de recursos do cliente web", + "LabelDashboardSourcePath": "Caminho fonte do cliente web:", + "LabelDashboardSourcePathHelp": "Se executar o servidor a partir do c\u00f3digo, especifique o caminho para a pasta da interface do painel. Todos os arquivos do cliente web ser\u00e3o usados nesta localiza\u00e7\u00e3o.", + "ButtonConvertMedia": "Converter m\u00eddia", + "ButtonOrganize": "Organizar", + "LinkedToEmbyConnect": "Associado ao Emby Connect", + "HeaderSupporterBenefits": "Benef\u00edcios do Colaborador", + "HeaderAddUser": "Adicionar Usu\u00e1rio", + "LabelAddConnectSupporterHelp": "Para adicionar um usu\u00e1rio que n\u00e3o esteja listado, voc\u00ea precisar\u00e1 associar sua conta ao Emby Connect na sua p\u00e1gina de perfil.", + "LabelPinCode": "C\u00f3digo Pin:", + "OptionHideWatchedContentFromLatestMedia": "Ocultar conte\u00fado j\u00e1 assistido das m\u00eddias recentes", + "HeaderSync": "Sincroniza\u00e7\u00e3o", + "ButtonOk": "Ok", + "ButtonCancel": "Cancelar", + "ButtonExit": "Sair", + "ButtonNew": "Novo", + "HeaderTV": "TV", + "HeaderAudio": "\u00c1udio", + "HeaderVideo": "V\u00eddeo", + "HeaderPaths": "Caminhos", + "CategorySync": "Sincroniza\u00e7\u00e3o", + "TabPlaylist": "Lista de Reprodu\u00e7\u00e3o", + "HeaderEasyPinCode": "C\u00f3digo de Pin Facil", + "HeaderGrownupsOnly": "Adultos Apenas!", + "DividerOr": "-- ou --", + "HeaderInstalledServices": "Servi\u00e7os Instalados", + "HeaderAvailableServices": "Servi\u00e7os Dispon\u00edveis", + "MessageNoServicesInstalled": "N\u00e3o existem servi\u00e7os instalados atualmente.", + "HeaderToAccessPleaseEnterEasyPinCode": "Para acessar, por favor digite seu c\u00f3digo pin f\u00e1cil", + "KidsModeAdultInstruction": "Clique no \u00edcone de bloqueio no canto inferior direito para configurar ou deixar o modo infantil. Seu c\u00f3digo pin ser\u00e1 necess\u00e1rio.", + "ButtonConfigurePinCode": "Configurar c\u00f3digo pin", + "HeaderAdultsReadHere": "Adultos Leiam Aqui!", + "RegisterWithPayPal": "Registrar com PayPal", + "HeaderSyncRequiresSupporterMembership": "Sincroniza\u00e7\u00e3o Necessita de uma Ades\u00e3o de Colaborador", + "HeaderEnjoyDayTrial": "Aproveite um per\u00edodo de 14 dias gr\u00e1tis para testes", + "LabelSyncTempPath": "Caminho de arquivo tempor\u00e1rio:", + "LabelSyncTempPathHelp": "Especifique uma pasta de trabalho para a sincroniza\u00e7\u00e3o personalizada. M\u00eddias convertidas criadas durante o processo de sincroniza\u00e7\u00e3o ser\u00e3o aqui armazenadas.", + "LabelCustomCertificatePath": "Caminho do certificado personalizado:", + "LabelCustomCertificatePathHelp": "Forne\u00e7a seu pr\u00f3prio arquivo .pfx do certificado ssl. Se omitido, o servidor criar\u00e1 um certificado auto-assinado.", + "TitleNotifications": "Notifica\u00e7\u00f5es", + "ButtonDonateWithPayPal": "Doe atrav\u00e9s do PayPal", + "OptionDetectArchiveFilesAsMedia": "Detectar arquivos compactados como m\u00eddia", + "OptionDetectArchiveFilesAsMediaHelp": "Se ativado, arquivos com extens\u00f5es .rar e .zip ser\u00e3o detectados como arquivos de m\u00eddia.", + "LabelEnterConnectUserName": "Nome de usu\u00e1rio ou e-mail:", + "LabelEnterConnectUserNameHelp": "Este \u00e9 o nome do usu\u00e1rio ou a senha da sua conta online do Emby.", + "LabelEnableEnhancedMovies": "Ativar exibi\u00e7\u00f5es de filme avan\u00e7adas", + "LabelEnableEnhancedMoviesHelp": "Quando ativado, os filmes ser\u00e3o exibidos como pastas para incluir trailers, extras, elenco & equipe e outros conte\u00fados relacionados.", + "HeaderSyncJobInfo": "Tarefa de Sincroniza\u00e7\u00e3o", + "FolderTypeMovies": "Filmes", + "FolderTypeMusic": "M\u00fasica", + "FolderTypeAdultVideos": "V\u00eddeos adultos", + "FolderTypePhotos": "Fotos", + "FolderTypeMusicVideos": "V\u00eddeos musicais", + "FolderTypeHomeVideos": "V\u00eddeos caseiros", + "FolderTypeGames": "Jogos", + "FolderTypeBooks": "Livros", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Herdar", + "LabelContentType": "Tipo de conte\u00fado:", + "TitleScheduledTasks": "Tarefas Agendadas", + "HeaderSetupLibrary": "Configurar sua biblioteca de m\u00eddias", + "ButtonAddMediaFolder": "Adicionar pasta de m\u00eddias", + "LabelFolderType": "Tipo de pasta:", + "ReferToMediaLibraryWiki": "Consultar wiki da biblioteca de m\u00eddias", + "LabelCountry": "Pa\u00eds:", + "LabelLanguage": "Idioma:", + "LabelTimeLimitHours": "Limite de tempo (horas):", + "ButtonJoinTheDevelopmentTeam": "Junte-se ao Time de Desenvolvimento", + "HeaderPreferredMetadataLanguage": "Idioma preferido dos metadados:", + "LabelSaveLocalMetadata": "Salvar artwork e metadados dentro das pastas da m\u00eddia", + "LabelSaveLocalMetadataHelp": "Salvar artwork e metadados diretamente nas pastas da m\u00eddia as deixar\u00e1 em um local f\u00e1cil para edit\u00e1-las.", + "LabelDownloadInternetMetadata": "Fazer download das imagens e metadados da internet", + "LabelDownloadInternetMetadataHelp": "O Servidor Emby pode fazer download das informa\u00e7\u00f5es de sua m\u00eddia para possibilitar belas apresenta\u00e7\u00f5es.", + "TabPreferences": "Prefer\u00eancias", + "TabPassword": "Senha", + "TabLibraryAccess": "Acesso \u00e0 Biblioteca", + "TabAccess": "Acesso", + "TabImage": "Imagem", + "TabProfile": "Perfil", + "TabMetadata": "Metadados", + "TabImages": "Imagens", + "TabNotifications": "Notifica\u00e7\u00f5es", + "TabCollectionTitles": "T\u00edtulos", + "HeaderDeviceAccess": "Acesso ao Dispositivo", + "OptionEnableAccessFromAllDevices": "Ativar o acesso de todos os dispositivos", + "OptionEnableAccessToAllChannels": "Ativar o acesso a todos os canais", + "OptionEnableAccessToAllLibraries": "Ativar o acesso a todas as bibliotecas", + "DeviceAccessHelp": "Isto apenas aplica para dispositivos que podem ser identificados como \u00fanicos e n\u00e3o evitar\u00e3o o acesso do navegador. Filtrar o acesso ao dispositivo do usu\u00e1rio evitar\u00e1 que sejam usados novos dispositivos at\u00e9 que sejam aprovados aqui.", + "LabelDisplayMissingEpisodesWithinSeasons": "Exibir epis\u00f3dios que faltam dentro das temporadas", + "LabelUnairedMissingEpisodesWithinSeasons": "Exibir epis\u00f3dios por estrear dentro das temporadas", + "HeaderVideoPlaybackSettings": "Ajustes da Reprodu\u00e7\u00e3o de V\u00eddeo", + "HeaderPlaybackSettings": "Ajustes de Reprodu\u00e7\u00e3o", + "LabelAudioLanguagePreference": "Prefer\u00eancia do idioma do \u00e1udio:", + "LabelSubtitleLanguagePreference": "Prefer\u00eancia do idioma da legenda:", + "OptionDefaultSubtitles": "Padr\u00e3o", + "OptionOnlyForcedSubtitles": "Apenas legendas for\u00e7adas", + "OptionAlwaysPlaySubtitles": "Sempre reproduzir legendas", + "OptionNoSubtitles": "Nenhuma legenda", + "OptionDefaultSubtitlesHelp": "As legendas que forem iguais ao idioma preferido ser\u00e3o carregadas quando o \u00e1udio estiver em um idioma estrangeiro.", + "OptionOnlyForcedSubtitlesHelp": "Apenas legendas marcadas como for\u00e7adas ser\u00e3o carregadas.", + "OptionAlwaysPlaySubtitlesHelp": "As legendas que forem iguais ao idioma preferido ser\u00e3o carregadas independente do idioma do \u00e1udio.", + "OptionNoSubtitlesHelp": "As legendas n\u00e3o ser\u00e3o carregadas por padr\u00e3o.", + "TabProfiles": "Perfis", + "TabSecurity": "Seguran\u00e7a", + "ButtonAddUser": "Adicionar Usu\u00e1rio", + "ButtonAddLocalUser": "Adicionar Usu\u00e1rio Local", + "ButtonInviteUser": "Convidar Usu\u00e1rio", + "ButtonSave": "Salvar", + "ButtonResetPassword": "Redefinir Senha", + "LabelNewPassword": "Nova senha:", + "LabelNewPasswordConfirm": "Confirmar nova senha:", + "HeaderCreatePassword": "Criar Senha", + "LabelCurrentPassword": "Senha atual:", + "LabelMaxParentalRating": "Classifica\u00e7\u00e3o parental m\u00e1xima permitida:", + "MaxParentalRatingHelp": "Conte\u00fado com classifica\u00e7\u00e3o maior ser\u00e1 ocultado do usu\u00e1rio.", + "LibraryAccessHelp": "Selecione as pastas de m\u00eddia para compartilhar com este usu\u00e1rio. Administradores poder\u00e3o editar todas as pastas usando o gerenciador de metadados.", + "ChannelAccessHelp": "Selecione os canais a compartilhar com este usu\u00e1rio. Administradores poder\u00e3o editar todos os canais usando o gerenciador de metadados.", + "ButtonDeleteImage": "Excluir Imagem", + "LabelSelectUsers": "Selecionar usu\u00e1rios:", + "ButtonUpload": "Carregar", + "HeaderUploadNewImage": "Carregar Nova Imagem", + "LabelDropImageHere": "Soltar imagem aqui", + "ImageUploadAspectRatioHelp": "Propor\u00e7\u00e3o de Imagem 1:1 Recomendada. Apenas JPG\/PNG", + "MessageNothingHere": "Nada aqui.", + "MessagePleaseEnsureInternetMetadata": "Por favor, certifique-se que o download de metadados da internet est\u00e1 habilitado.", + "TabSuggested": "Sugeridos", + "TabSuggestions": "Sugest\u00f5es", + "TabLatest": "Recentes", + "TabUpcoming": "Por Estrear", + "TabShows": "S\u00e9ries", + "TabEpisodes": "Epis\u00f3dios", + "TabGenres": "G\u00eaneros", + "TabPeople": "Pessoas", + "TabNetworks": "Redes", + "HeaderUsers": "Usu\u00e1rios", + "HeaderFilters": "Filtros:", + "ButtonFilter": "Filtro", + "OptionFavorite": "Favoritos", + "OptionLikes": "Gostei", + "OptionDislikes": "N\u00e3o Gostei", + "OptionActors": "Atores", + "OptionGuestStars": "Convidados Especiais", + "OptionDirectors": "Diretores", + "OptionWriters": "Escritores", + "OptionProducers": "Produtores", + "HeaderResume": "Retomar", + "HeaderNextUp": "Pr\u00f3ximo", + "NoNextUpItemsMessage": "Nenhum encontrado. Comece assistindo suas s\u00e9ries!", + "HeaderLatestEpisodes": "Epis\u00f3dios Recentes", + "HeaderPersonTypes": "Tipos de Pessoa:", + "TabSongs": "M\u00fasicas", + "TabAlbums": "\u00c1lbuns", + "TabArtists": "Artistas", + "TabAlbumArtists": "Artistas do \u00c1lbum", + "TabMusicVideos": "V\u00eddeos Musicais", + "ButtonSort": "Ordenar", + "HeaderSortBy": "Ordenar Por:", + "HeaderSortOrder": "Forma para Ordenar:", + "OptionPlayed": "Reproduzido", + "OptionUnplayed": "N\u00e3o-reproduzido", + "OptionAscending": "Crescente", + "OptionDescending": "Decrescente", + "OptionRuntime": "Dura\u00e7\u00e3o", + "OptionReleaseDate": "Data de Lan\u00e7amento", + "OptionPlayCount": "N\u00famero Reprodu\u00e7\u00f5es", + "OptionDatePlayed": "Data da Reprodu\u00e7\u00e3o", + "OptionDateAdded": "Data da Adi\u00e7\u00e3o", + "OptionAlbumArtist": "Artista do \u00c1lbum", + "OptionArtist": "Artista", + "OptionAlbum": "\u00c1lbum", + "OptionTrackName": "Nome da Faixa", + "OptionCommunityRating": "Avalia\u00e7\u00e3o da Comunidade", + "OptionNameSort": "Nome", + "OptionFolderSort": "Pastas", + "OptionBudget": "Or\u00e7amento", + "OptionRevenue": "Faturamento", + "OptionPoster": "Capa", + "OptionPosterCard": "Cart\u00e3o da capa", + "OptionBackdrop": "Imagem de Fundo", + "OptionTimeline": "Linha do tempo", + "OptionThumb": "\u00cdcone", + "OptionThumbCard": "Cart\u00e3o do \u00edcone", + "OptionBanner": "Banner", + "OptionCriticRating": "Avalia\u00e7\u00e3o da Cr\u00edtica", + "OptionVideoBitrate": "Taxa do V\u00eddeo", + "OptionResumable": "Por retomar", + "ScheduledTasksHelp": "Clique em uma tarefa para ajustar quando ser\u00e1 executada.", + "ScheduledTasksTitle": "Tarefas Agendadas", + "TabMyPlugins": "Meus Plugins", + "TabCatalog": "Cat\u00e1logo", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "Atualiza\u00e7\u00f5es Autom\u00e1ticas", + "HeaderNowPlaying": "Reproduzindo Agora", + "HeaderLatestAlbums": "\u00c1lbuns Recentes", + "HeaderLatestSongs": "M\u00fasicas Recentes", + "HeaderRecentlyPlayed": "Reprodu\u00e7\u00f5es Recentes", + "HeaderFrequentlyPlayed": "Reprodu\u00e7\u00f5es Frequentes", + "DevBuildWarning": "Vers\u00f5es Dev s\u00e3o as mais atuais. Lan\u00e7adas frequentemente, estas vers\u00f5es n\u00e3o foram testadas. A aplica\u00e7\u00e3o pode falhar e v\u00e1rios recursos podem n\u00e3o funcionar.", + "LabelVideoType": "Tipo de V\u00eddeo:", + "OptionBluray": "Bluray", + "OptionDvd": "Dvd", + "OptionIso": "Iso", + "Option3D": "3D", + "LabelFeatures": "Recursos:", + "LabelService": "Servi\u00e7o:", + "LabelStatus": "Status:", + "LabelVersion": "Vers\u00e3o:", + "LabelLastResult": "\u00daltimo resultado:", + "OptionHasSubtitles": "Legendas", + "OptionHasTrailer": "Trailer", + "OptionHasThemeSong": "M\u00fasica-Tema", + "OptionHasThemeVideo": "V\u00eddeo-Tema", + "TabMovies": "Filmes", + "TabStudios": "Est\u00fadios", + "TabTrailers": "Trailers", + "LabelArtists": "Artistas:", + "LabelArtistsHelp": "Separar m\u00faltiplos usando ;", + "HeaderLatestMovies": "Filmes Recentes", + "HeaderLatestTrailers": "Trailers Recentes", + "OptionHasSpecialFeatures": "Recursos Especiais", + "OptionImdbRating": "Avalia\u00e7\u00e3o IMDb", + "OptionParentalRating": "Classifica\u00e7\u00e3o Parental", + "OptionPremiereDate": "Data da Estr\u00e9ia", + "TabBasic": "B\u00e1sico", + "TabAdvanced": "Avan\u00e7ado", + "HeaderStatus": "Status", + "OptionContinuing": "Em Exibi\u00e7\u00e3o", + "OptionEnded": "Finalizada", + "HeaderAirDays": "Dias da Exibi\u00e7\u00e3o", + "OptionSunday": "Domingo", + "OptionMonday": "Segunda-feira", + "OptionTuesday": "Ter\u00e7a-feira", + "OptionWednesday": "Quarta-feira", + "OptionThursday": "Quinta-feira", + "OptionFriday": "Sexta-feira", + "OptionSaturday": "S\u00e1bado", + "HeaderManagement": "Gerenciamento", + "LabelManagement": "Administra\u00e7\u00e3o:", + "OptionMissingImdbId": "Faltando Id IMDb", + "OptionMissingTvdbId": "Faltando Id TheTVDB", + "OptionMissingOverview": "Faltando Sinopse", + "OptionFileMetadataYearMismatch": "Anos do Arquivo e Metadados n\u00e3o conferem", + "TabGeneral": "Geral", + "TitleSupport": "Suporte", + "LabelSeasonNumber": "N\u00famero da temporada", + "TabLog": "Log", + "LabelEpisodeNumber": "N\u00famero do epis\u00f3dio", + "TabAbout": "Sobre", + "TabSupporterKey": "Chave de Colaborador", + "TabBecomeSupporter": "Torne-se um Colaborador", + "ProjectHasCommunity": "Emby tem uma comunidade crescente de usu\u00e1rios e contribuidores.", + "CheckoutKnowledgeBase": "Visite nossa base de conhecimento para obter ajuda para extrair o m\u00e1ximo do Emby.", + "SearchKnowledgeBase": "Pesquisar na Base de Conhecimento", + "VisitTheCommunity": "Visitar a Comunidade", + "VisitProjectWebsite": "Visite o Web Site do Emby", + "VisitProjectWebsiteLong": "Visite o web site do Emby para obter as \u00faltimas novidades e se manter informado com o blog dos desenvolvedores.", + "OptionHideUser": "Ocultar este usu\u00e1rio das telas de login", + "OptionHideUserFromLoginHelp": "\u00datil para contas de administrador privadas ou ocultas. O usu\u00e1rio necessitar\u00e1 entrar manualmente, digitando seu nome de usu\u00e1rio e senha.", + "OptionDisableUser": "Desativar este usu\u00e1rio", "OptionDisableUserHelp": "Se estiver desativado o servidor n\u00e3o permitir\u00e1 nenhuma conex\u00e3o deste usu\u00e1rio. Conex\u00f5es existentes ser\u00e3o abruptamente terminadas.", "HeaderAdvancedControl": "Controle Avan\u00e7ado", "LabelName": "Nome:", @@ -13,6 +315,9 @@ "OptionAllowRemoteControlOthers": "Permitir controle remoto de outros usu\u00e1rios", "OptionAllowRemoteSharedDevices": "Permitir controle remoto de dispositivos compartilhados", "OptionAllowRemoteSharedDevicesHelp": "Dispositivos dlna s\u00e3o considerados compartilhados at\u00e9 que um usu\u00e1rio comece a control\u00e1-lo.", + "OptionAllowLinkSharing": "Permitir compartilhamento com m\u00eddia social", + "OptionAllowLinkSharingHelp": "Apenas p\u00e1ginas web que contenham informa\u00e7\u00f5es de m\u00eddia ser\u00e3o compartilhadas. Arquivos de m\u00eddia nunca ser\u00e3o compartilhados publicamente. Os compartilhamentos ter\u00e3o um limite de tempo e expirar\u00e3o com base nas defini\u00e7\u00f5es de compartilhamento do seu servidor.", + "HeaderSharing": "Compartilhar", "HeaderRemoteControl": "Controle Remoto", "OptionMissingTmdbId": "Faltando Id Tmdb", "OptionIsHD": "HD", @@ -281,8 +586,6 @@ "LabelSkipped": "Ignorada", "HeaderEpisodeOrganization": "Organiza\u00e7\u00e3o do Epis\u00f3dio", "LabelSeries": "S\u00e9rie:", - "LabelSeasonNumber": "N\u00famero da temporada:", - "LabelEpisodeNumber": "N\u00famero do epis\u00f3dio:", "LabelEndingEpisodeNumber": "N\u00famero do epis\u00f3dio final:", "LabelEndingEpisodeNumberHelp": "Necess\u00e1rio s\u00f3 para arquivos multi-epis\u00f3dios", "HeaderSupportTheTeam": "Colabore com o Time do Emby", @@ -295,7 +598,7 @@ "OptionEnableEpisodeOrganization": "Ativar a organiza\u00e7\u00e3o de novos epis\u00f3dios", "LabelWatchFolder": "Pasta de Monitora\u00e7\u00e3o:", "LabelWatchFolderHelp": "O servidor ir\u00e1 pesquisar esta pasta durante a tarefa agendada 'Organizar novos arquivos de m\u00eddia'.", - "ButtonViewScheduledTasks": "Visualizar tarefas agendadas", + "ButtonViewScheduledTasks": "Ver tarefas agendadas", "LabelMinFileSizeForOrganize": "Tamanho m\u00ednimo de arquivo (MB):", "LabelMinFileSizeForOrganizeHelp": "Arquivos menores que este tamanho ser\u00e3o ignorados.", "LabelSeasonFolderPattern": "Padr\u00e3o da pasta de temporada:", @@ -497,7 +800,7 @@ "LabelMaxBitrateHelp": "Especifique uma taxa de bits m\u00e1xima para ambientes com restri\u00e7\u00e3o de tamanho de banda, ou se o dispositivo imp\u00f5e esse limite.", "LabelMaxStreamingBitrate": "Taxa m\u00e1xima para streaming:", "LabelMaxStreamingBitrateHelp": "Defina uma taxa m\u00e1xima para fazer streaming.", - "LabelMaxChromecastBitrate": "Max Chromecast bitrate:", + "LabelMaxChromecastBitrate": "Taxa de bits m\u00e1xima do Chromecast:", "LabelMaxStaticBitrate": "Taxa m\u00e1xima para sincronizar:", "LabelMaxStaticBitrateHelp": "Defina uma taxa m\u00e1xima quando sincronizar conte\u00fado em alta qualidade.", "LabelMusicStaticBitrate": "Taxa de sincroniza\u00e7\u00e3o das m\u00fasicas:", @@ -570,10 +873,11 @@ "HeaderTypeText": "Digitar texto", "LabelTypeText": "Texto", "HeaderSearchForSubtitles": "Buscar Legendas", + "ButtonMore": "Mais", "MessageNoSubtitleSearchResultsFound": "N\u00e3o foi encontrado nenhum resultado.", "TabDisplay": "Exibi\u00e7\u00e3o", "TabLanguages": "Idiomas", - "TabAppSettings": "App Settings", + "TabAppSettings": "Configura\u00e7\u00f5es da App", "LabelEnableThemeSongs": "Ativar m\u00fasicas-tema", "LabelEnableBackdrops": "Ativar imagens de fundo", "LabelEnableThemeSongsHelp": "Se ativadas, m\u00fasicas-tema ser\u00e3o reproduzidas em segundo plano ao navegar pela biblioteca.", @@ -600,7 +904,7 @@ "HeaderLiveTv": "TV ao Vivo", "HeaderReports": "Relat\u00f3rios", "HeaderMetadataManager": "Gerenciador de Metadados", - "HeaderPreferences": "Prefer\u00eancias", + "HeaderSettings": "Ajustes", "MessageLoadingChannels": "Carregando conte\u00fado do canal...", "MessageLoadingContent": "Carregando conte\u00fado...", "ButtonMarkRead": "Marcar com lido", @@ -798,7 +1102,6 @@ "OptionReportArtists": "Artistas", "OptionReportAlbums": "\u00c1lbuns", "OptionReportAdultVideos": "V\u00eddeos adultos", - "ButtonMore": "Mais", "HeaderActivity": "Atividade", "ScheduledTaskStartedWithName": "{0} iniciado", "ScheduledTaskCancelledWithName": "{0} foi cancelado", @@ -928,6 +1231,7 @@ "OptionNoThemeVideo": "Nenhum V\u00eddeo-tema", "LabelOneTimeDonationAmount": "Valor da doa\u00e7\u00e3o:", "ButtonDonate": "Doar", + "ButtonPurchase": "Comprar", "OptionActor": "Ator", "OptionComposer": "Compositor", "OptionDirector": "Diretor", @@ -947,7 +1251,6 @@ "HeaderDeveloperInfo": "Info do desenvolvedor", "HeaderRevisionHistory": "Hist\u00f3rico de Vers\u00f5es", "ButtonViewWebsite": "Ver website", - "LabelRecurringDonationCanBeCancelledHelp": "Doa\u00e7\u00f5es recorrentes podem ser canceladas a qualquer momento dentro da conta do PayPal.", "HeaderXmlSettings": "Ajustes do Xml", "HeaderXmlDocumentAttributes": "Atributos do Documento Xml", "HeaderXmlDocumentAttribute": "Atributo do Documento Xml", @@ -961,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Saiba mais sobre o Emby Connect", "LabelExternalPlayers": "Reprodutores externos:", "LabelExternalPlayersHelp": "Exibir bot\u00f5es para reproduzir conte\u00fado em reprodutores externos. Isto est\u00e1 dispon\u00edvel apenas em dispositivos que suportam esquemas url, geralmente Android e iOS. Com os reprodutores externos, geralmente n\u00e3o existe suporte para controle remoto ou para retomar.", + "LabelNativeExternalPlayersHelp": "Exibir bot\u00f5es para reproduzir o conte\u00fado em reprodutores externos.", + "LabelEnableItemPreviews": "Ativar pr\u00e9-visualiza\u00e7\u00e3o de itens", + "LabelEnableItemPreviewsHelp": "Se ativada, pr\u00e9-visualiza\u00e7\u00f5es deslizantes ser\u00e3o exibidas ao clicar nos itens em certas telas.", "HeaderSubtitleProfile": "Perfil da Legenda", "HeaderSubtitleProfiles": "Perfis da Legenda", "HeaderSubtitleProfilesHelp": "Perfis da legenda descrevem os formatos da legenda suportados pelo dispositivo.", @@ -1089,9 +1395,9 @@ "HeaderUpcomingMovies": "Filmes Por Estrear", "HeaderUpcomingSports": "Esportes Por Estrear", "HeaderUpcomingPrograms": "Programas Por Estrear", - "ButtonMoreItems": "Mais...", - "LabelShowLibraryTileNames": "Mostrar os nomes das tiles da biblioteca", - "LabelShowLibraryTileNamesHelp": "Determina se os t\u00edtulos ser\u00e3o exibidos embaixo das tiles da biblioteca na p\u00e1gina in\u00edcio", + "ButtonMoreItems": "Mais", + "LabelShowLibraryTileNames": "Mostrar os nomes dos mosaicos da biblioteca", + "LabelShowLibraryTileNamesHelp": "Determina se os t\u00edtulos ser\u00e3o exibidos embaixo dos mosaicos da biblioteca na p\u00e1gina in\u00edcio", "OptionEnableTranscodingThrottle": "Ativar controlador de fluxo", "OptionEnableTranscodingThrottleHelp": "O controlador de fluxo ajustar\u00e1 automaticamente a velocidade de transcodifica\u00e7\u00e3o para minimizar o uso da cpu no servidor durante a reprodu\u00e7\u00e3o.", "LabelUploadSpeedLimit": "Limite de velocidade de upload (Mbps):", @@ -1108,330 +1414,41 @@ "OptionEnableFullSpeedConversion": "Ativar convers\u00e3o de alta velocidade", "OptionEnableFullSpeedConversionHelp": "Por padr\u00e3o, a convers\u00e3o na sincroniza\u00e7\u00e3o \u00e9 executada em uma velocidade baixa para minimizar o consumo de recursos.", "HeaderPlaylists": "Listas de reprodu\u00e7\u00e3o", - "HeaderSelectDate": "Selecionar Data", - "HeaderWelcomeExclamation": "Bem Vindo!", - "HeaderMyPreferences": "Minhas Prefer\u00eancias", - "ButtonMyPreferencesWelcomeYes": "Sim, gostaria de definir minhas prefer\u00eancias agora.", - "ButtonMyPreferencesWelcomeNo": "N\u00e3o, obrigado. Farei mais tarde.", - "MyPreferencesWelcomeMessage1": "N\u00f3s exibimos sua biblioteca de uma forma que pensamos que ir\u00e1 gostar. A apar\u00eancia e o agrupamento de conte\u00fado podem ser mudados a qualquer hora ajustando suas prefer\u00eancias. Suas prefer\u00eancias ser\u00e3o aplicadas a todas as apps do Emby.", - "MyPreferencesWelcomeMessage2": "Gostaria de definir suas prefer\u00eancias agora?", - "ToAccessPreferencesHelp": "Para acessar suas prefer\u00eancias mais tarde, clique no \u00edcone do usu\u00e1rio no canto superior direito e selecione Minhas Prefer\u00eancias.", "HeaderViewStyles": "Visualizar Estilos", - "LabelSelectViewStyles": "Enable enhanced presentations for:", + "LabelSelectViewStyles": "Ativar apresenta\u00e7\u00f5es aprimoradas para:", "LabelSelectViewStylesHelp": "Se ativada, as visualiza\u00e7\u00f5es ser\u00e3o feitas com metadados para oferecer categorias como Sugest\u00f5es, Recentes, G\u00eaneros e mais. Se desativada, elas ser\u00e3o exibidas como pastas simples.", - "TabPhotos": "Photos", - "TabVideos": "Videos", - "HeaderWelcomeToEmby": "Welcome to Emby", - "EmbyIntroMessage": "With Emby you can easily stream videos, music and photos to smart phones, tablets and other devices from your Emby Server.", - "ButtonSkip": "Skip", - "TextConnectToServerManually": "Connect to server manually", - "ButtonSignInWithConnect": "Sign in with Emby Connect", - "ButtonConnect": "Connect", - "LabelServerHost": "Host:", - "LabelServerHostHelp": "192.168.1.100 or https:\/\/myserver.com", - "LabelServerPort": "Port:", - "HeaderNewServer": "New Server", - "ButtonChangeServer": "Change Server", - "HeaderConnectToServer": "Connect to Server", - "LabelExit": "Sair", - "LabelVisitCommunity": "Visitar a Comunidade", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Padr\u00e3o", - "LabelApiDocumentation": "Documenta\u00e7\u00e3o da Api", - "LabelDeveloperResources": "Recursos do Desenvolvedor", - "LabelBrowseLibrary": "Explorar Biblioteca", - "LabelConfigureServer": "Configurar o Emby", - "LabelOpenLibraryViewer": "Abrir Visualizador da Biblioteca", - "LabelRestartServer": "Reiniciar Servidor", - "LabelShowLogWindow": "Exibir Janela de Log", - "LabelPrevious": "Anterior", - "LabelFinish": "Finalizar", - "LabelNext": "Pr\u00f3ximo", - "LabelYoureDone": "Pronto!", - "WelcomeToProject": "Bem vindo ao Emby!", - "ThisWizardWillGuideYou": "Este assistente ir\u00e1 gui\u00e1-lo pelo processo de instala\u00e7\u00e3o. Para come\u00e7ar, por favor selecione seu idioma preferido.", - "TellUsAboutYourself": "Conte-nos sobre voc\u00ea", - "ButtonQuickStartGuide": "Guia r\u00e1pido", - "LabelYourFirstName": "Seu primeiro nome:", - "MoreUsersCanBeAddedLater": "Mais usu\u00e1rios poder\u00e3o ser adicionados depois dentro do Painel.", - "UserProfilesIntro": "Emby inclui suporte nativo para perfis de usu\u00e1rios, permitindo que cada usu\u00e1rio tenha seus pr\u00f3prios ajustes de visualiza\u00e7\u00e3o, estado da reprodu\u00e7\u00e3o e controles parentais.", - "LabelWindowsService": "Servi\u00e7o do Windows", - "AWindowsServiceHasBeenInstalled": "Foi instalado um Servi\u00e7o do Windows.", - "WindowsServiceIntro1": "O Servidor Emby normalmente \u00e9 executado como uma aplica\u00e7\u00e3o de desktop com um \u00edcone na bandeja do sistema, mas se preferir executar como um servi\u00e7o em segundo plano, pode ser iniciado no painel de controle de servi\u00e7os do windows.", - "WindowsServiceIntro2": "Se usar o servi\u00e7o do Windows, por favor certifique-se que n\u00e3o esteja sendo executado ao mesmo tempo que o \u00edcone na bandeja, se estiver ter\u00e1 que sair da app antes de executar o servi\u00e7o. O servi\u00e7o necessita ser configurado com privil\u00e9gios de administrador no painel de controle. Neste momento o servi\u00e7o n\u00e3o pode se auto-atualizar, por isso novas vers\u00f5es exigir\u00e3o intera\u00e7\u00e3o manual.", - "WizardCompleted": "Isto \u00e9 tudo no momento. Emby come\u00e7ou a coletar informa\u00e7\u00f5es de sua biblioteca de m\u00eddias. Confira algumas de nossas apps e ent\u00e3o clique<b>Terminar<\/b> para ver o <b>Painel do Servidor<\/b>.", - "LabelConfigureSettings": "Configurar ajustes", - "LabelEnableVideoImageExtraction": "Ativar extra\u00e7\u00e3o de imagens de v\u00eddeo", - "VideoImageExtractionHelp": "Para v\u00eddeos que n\u00e3o tenham imagens e que n\u00e3o possamos encontrar imagens na internet. Isto aumentar\u00e1 o tempo do rastreamento inicial da biblioteca mas resultar\u00e1 em uma apresenta\u00e7\u00e3o mais bonita.", - "LabelEnableChapterImageExtractionForMovies": "Extrair imagens de cap\u00edtulos dos Filmes", - "LabelChapterImageExtractionForMoviesHelp": "Extrair imagens de cap\u00edtulos permitir\u00e1 aos clientes exibir menus gr\u00e1ficos de sele\u00e7\u00e3o de cenas. O processo pode ser lento, ocasionar uso intensivo de cpu e pode exigir bastante espa\u00e7o em disco. Ele ser\u00e1 executado como uma tarefa noturna, embora isto possa ser configur\u00e1vel na \u00e1rea de tarefas agendadas. N\u00e3o \u00e9 recomendado executar esta tarefa durante as horas de pico de uso.", - "LabelEnableAutomaticPortMapping": "Ativar mapeamento de porta autom\u00e1tico", - "LabelEnableAutomaticPortMappingHelp": "UPnP permite uma configura\u00e7\u00e3o automatizada do roteador para acesso remoto f\u00e1cil. Isto pode n\u00e3o funcionar em alguns modelos de roteadores.", - "HeaderTermsOfService": "Termos de Servi\u00e7o do Emby", - "MessagePleaseAcceptTermsOfService": "Por favor, aceite os termos de servi\u00e7o e pol\u00edtica de privacidade antes de continuar.", - "OptionIAcceptTermsOfService": "Aceito os termos de servi\u00e7o", - "ButtonPrivacyPolicy": "Pol\u00edtica de privacidade", - "ButtonTermsOfService": "Termos de Servi\u00e7o", - "HeaderDeveloperOptions": "Op\u00e7\u00f5es de Desenvolvedor", - "OptionEnableWebClientResponseCache": "Ativar o cache de resposta do client web", - "OptionDisableForDevelopmentHelp": "Configure esta op\u00e7\u00e3o de acordo ao prop\u00f3sito de desenvolvimento do cliente web", - "OptionEnableWebClientResourceMinification": "Ativar a minimiza\u00e7\u00e3o de recursos do cliente web", - "LabelDashboardSourcePath": "Caminho fonte do cliente web:", - "LabelDashboardSourcePathHelp": "Se executar o servidor a partir do c\u00f3digo, especifique o caminho para a pasta da interface do painel. Todos os arquivos do cliente web ser\u00e3o usados nesta localiza\u00e7\u00e3o.", - "ButtonConvertMedia": "Converter m\u00eddia", - "ButtonOrganize": "Organizar", - "LinkedToEmbyConnect": "Associado ao Emby Connect", - "HeaderSupporterBenefits": "Benef\u00edcios do Colaborador", - "HeaderAddUser": "Adicionar Usu\u00e1rio", - "LabelAddConnectSupporterHelp": "Para adicionar um usu\u00e1rio que n\u00e3o esteja listado, voc\u00ea precisar\u00e1 associar sua conta ao Emby Connect na sua p\u00e1gina de perfil.", - "LabelPinCode": "C\u00f3digo Pin:", - "OptionHideWatchedContentFromLatestMedia": "Ocultar conte\u00fado j\u00e1 assistido das m\u00eddias recentes", - "HeaderSync": "Sincroniza\u00e7\u00e3o", - "ButtonOk": "Ok", - "ButtonCancel": "Cancelar", - "ButtonExit": "Sair", - "ButtonNew": "Novo", - "HeaderTV": "TV", - "HeaderAudio": "\u00c1udio", - "HeaderVideo": "V\u00eddeo", - "HeaderPaths": "Caminhos", - "CategorySync": "Sincroniza\u00e7\u00e3o", - "TabPlaylist": "Lista de Reprodu\u00e7\u00e3o", - "HeaderEasyPinCode": "C\u00f3digo de Pin Facil", - "HeaderGrownupsOnly": "Adultos Apenas!", - "DividerOr": "-- ou --", - "HeaderInstalledServices": "Servi\u00e7os Instalados", - "HeaderAvailableServices": "Servi\u00e7os Dispon\u00edveis", - "MessageNoServicesInstalled": "N\u00e3o existem servi\u00e7os instalados atualmente.", - "HeaderToAccessPleaseEnterEasyPinCode": "Para acessar, por favor digite seu c\u00f3digo pin f\u00e1cil", - "KidsModeAdultInstruction": "Clique no \u00edcone de bloqueio no canto inferior direito para configurar ou deixar o modo infantil. Seu c\u00f3digo pin ser\u00e1 necess\u00e1rio.", - "ButtonConfigurePinCode": "Configurar c\u00f3digo pin", - "HeaderAdultsReadHere": "Adultos Leiam Aqui!", - "RegisterWithPayPal": "Registrar com PayPal", - "HeaderSyncRequiresSupporterMembership": "Sincroniza\u00e7\u00e3o Necessita de uma Ades\u00e3o de Colaborador", - "HeaderEnjoyDayTrial": "Aproveite um per\u00edodo de 14 dias gr\u00e1tis para testes", - "LabelSyncTempPath": "Caminho de arquivo tempor\u00e1rio:", - "LabelSyncTempPathHelp": "Especifique uma pasta de trabalho para a sincroniza\u00e7\u00e3o personalizada. M\u00eddias convertidas criadas durante o processo de sincroniza\u00e7\u00e3o ser\u00e3o aqui armazenadas.", - "LabelCustomCertificatePath": "Caminho do certificado personalizado:", - "LabelCustomCertificatePathHelp": "Forne\u00e7a seu pr\u00f3prio arquivo .pfx do certificado ssl. Se omitido, o servidor criar\u00e1 um certificado auto-assinado.", - "TitleNotifications": "Notifica\u00e7\u00f5es", - "ButtonDonateWithPayPal": "Doe atrav\u00e9s do PayPal", - "OptionDetectArchiveFilesAsMedia": "Detectar arquivos compactados como m\u00eddia", - "OptionDetectArchiveFilesAsMediaHelp": "Se ativado, arquivos com extens\u00f5es .rar e .zip ser\u00e3o detectados como arquivos de m\u00eddia.", - "LabelEnterConnectUserName": "Nome de usu\u00e1rio ou email:", - "LabelEnterConnectUserNameHelp": "Esta \u00e9 a senha e o nome de usu\u00e1rio da sua conta online do Emby.", - "LabelEnableEnhancedMovies": "Ativar exibi\u00e7\u00f5es de filme avan\u00e7adas", - "LabelEnableEnhancedMoviesHelp": "Quando ativado, os filmes ser\u00e3o exibidos como pastas para incluir trailers, extras, elenco & equipe e outros conte\u00fados relacionados.", - "HeaderSyncJobInfo": "Tarefa de Sincroniza\u00e7\u00e3o", - "FolderTypeMixed": "Conte\u00fado misto", - "FolderTypeMovies": "Filmes", - "FolderTypeMusic": "M\u00fasica", - "FolderTypeAdultVideos": "V\u00eddeos adultos", - "FolderTypePhotos": "Fotos", - "FolderTypeMusicVideos": "V\u00eddeos musicais", - "FolderTypeHomeVideos": "V\u00eddeos caseiros", - "FolderTypeGames": "Jogos", - "FolderTypeBooks": "Livros", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Herdar", - "LabelContentType": "Tipo de conte\u00fado:", - "TitleScheduledTasks": "Tarefas Agendadas", - "HeaderSetupLibrary": "Configurar sua biblioteca de m\u00eddias", - "ButtonAddMediaFolder": "Adicionar pasta de m\u00eddias", - "LabelFolderType": "Tipo de pasta:", - "ReferToMediaLibraryWiki": "Consultar wiki da biblioteca de m\u00eddias", - "LabelCountry": "Pa\u00eds:", - "LabelLanguage": "Idioma:", - "LabelTimeLimitHours": "Limite de tempo (horas):", - "ButtonJoinTheDevelopmentTeam": "Junte-se ao Time de Desenvolvimento", - "HeaderPreferredMetadataLanguage": "Idioma preferido dos metadados:", - "LabelSaveLocalMetadata": "Salvar artwork e metadados dentro das pastas da m\u00eddia", - "LabelSaveLocalMetadataHelp": "Salvar artwork e metadados diretamente nas pastas da m\u00eddia as deixar\u00e1 em um local f\u00e1cil para edit\u00e1-las.", - "LabelDownloadInternetMetadata": "Fazer download das imagens e metadados da internet", - "LabelDownloadInternetMetadataHelp": "O Servidor Emby pode fazer download das informa\u00e7\u00f5es de sua m\u00eddia para possibilitar belas apresenta\u00e7\u00f5es.", - "TabPreferences": "Prefer\u00eancias", - "TabPassword": "Senha", - "TabLibraryAccess": "Acesso \u00e0 Biblioteca", - "TabAccess": "Acesso", - "TabImage": "Imagem", - "TabProfile": "Perfil", - "TabMetadata": "Metadados", - "TabImages": "Imagens", - "TabNotifications": "Notifica\u00e7\u00f5es", - "TabCollectionTitles": "T\u00edtulos", - "HeaderDeviceAccess": "Acesso ao Dispositivo", - "OptionEnableAccessFromAllDevices": "Ativar o acesso de todos os dispositivos", - "OptionEnableAccessToAllChannels": "Ativar o acesso a todos os canais", - "OptionEnableAccessToAllLibraries": "Ativar o acesso a todas as bibliotecas", - "DeviceAccessHelp": "Isto apenas aplica para dispositivos que podem ser identificados como \u00fanicos e n\u00e3o evitar\u00e3o o acesso do navegador. Filtrar o acesso ao dispositivo do usu\u00e1rio evitar\u00e1 que sejam usados novos dispositivos at\u00e9 que sejam aprovados aqui.", - "LabelDisplayMissingEpisodesWithinSeasons": "Exibir epis\u00f3dios que faltam dentro das temporadas", - "LabelUnairedMissingEpisodesWithinSeasons": "Exibir epis\u00f3dios por estrear dentro das temporadas", - "HeaderVideoPlaybackSettings": "Ajustes da Reprodu\u00e7\u00e3o de V\u00eddeo", - "HeaderPlaybackSettings": "Ajustes de Reprodu\u00e7\u00e3o", - "LabelAudioLanguagePreference": "Prefer\u00eancia do idioma do \u00e1udio:", - "LabelSubtitleLanguagePreference": "Prefer\u00eancia do idioma da legenda:", - "OptionDefaultSubtitles": "Padr\u00e3o", - "OptionOnlyForcedSubtitles": "Apenas legendas for\u00e7adas", - "OptionAlwaysPlaySubtitles": "Sempre reproduzir legendas", - "OptionNoSubtitles": "Nenhuma legenda", - "OptionDefaultSubtitlesHelp": "As legendas que forem iguais ao idioma preferido ser\u00e3o carregadas quando o \u00e1udio estiver em um idioma estrangeiro.", - "OptionOnlyForcedSubtitlesHelp": "Apenas legendas marcadas como for\u00e7adas ser\u00e3o carregadas.", - "OptionAlwaysPlaySubtitlesHelp": "As legendas que forem iguais ao idioma preferido ser\u00e3o carregadas independente do idioma do \u00e1udio.", - "OptionNoSubtitlesHelp": "As legendas n\u00e3o ser\u00e3o carregadas por padr\u00e3o.", - "TabProfiles": "Perfis", - "TabSecurity": "Seguran\u00e7a", - "ButtonAddUser": "Adicionar Usu\u00e1rio", - "ButtonAddLocalUser": "Adicionar Usu\u00e1rio Local", - "ButtonInviteUser": "Convidar Usu\u00e1rio", - "ButtonSave": "Salvar", - "ButtonResetPassword": "Redefinir Senha", - "LabelNewPassword": "Nova senha:", - "LabelNewPasswordConfirm": "Confirmar nova senha:", - "HeaderCreatePassword": "Criar Senha", - "LabelCurrentPassword": "Senha atual:", - "LabelMaxParentalRating": "Classifica\u00e7\u00e3o parental m\u00e1xima permitida:", - "MaxParentalRatingHelp": "Conte\u00fado com classifica\u00e7\u00e3o maior ser\u00e1 ocultado do usu\u00e1rio.", - "LibraryAccessHelp": "Selecione as pastas de m\u00eddia para compartilhar com este usu\u00e1rio. Administradores poder\u00e3o editar todas as pastas usando o gerenciador de metadados.", - "ChannelAccessHelp": "Selecione os canais a compartilhar com este usu\u00e1rio. Administradores poder\u00e3o editar todos os canais usando o gerenciador de metadados.", - "ButtonDeleteImage": "Excluir Imagem", - "LabelSelectUsers": "Selecionar usu\u00e1rios:", - "ButtonUpload": "Carregar", - "HeaderUploadNewImage": "Carregar Nova Imagem", - "LabelDropImageHere": "Soltar imagem aqui", - "ImageUploadAspectRatioHelp": "Propor\u00e7\u00e3o de Imagem 1:1 Recomendada. Apenas JPG\/PNG", - "MessageNothingHere": "Nada aqui.", - "MessagePleaseEnsureInternetMetadata": "Por favor, certifique-se que o download de metadados da internet est\u00e1 habilitado.", - "TabSuggested": "Sugeridos", - "TabSuggestions": "Sugest\u00f5es", - "TabLatest": "Recentes", - "TabUpcoming": "Por Estrear", - "TabShows": "S\u00e9ries", - "TabEpisodes": "Epis\u00f3dios", - "TabGenres": "G\u00eaneros", - "TabPeople": "Pessoas", - "TabNetworks": "Redes", - "HeaderUsers": "Usu\u00e1rios", - "HeaderFilters": "Filtros:", - "ButtonFilter": "Filtro", - "OptionFavorite": "Favoritos", - "OptionLikes": "Gostei", - "OptionDislikes": "N\u00e3o Gostei", - "OptionActors": "Atores", - "OptionGuestStars": "Convidados Especiais", - "OptionDirectors": "Diretores", - "OptionWriters": "Escritores", - "OptionProducers": "Produtores", - "HeaderResume": "Retomar", - "HeaderNextUp": "Pr\u00f3ximo", - "NoNextUpItemsMessage": "Nenhum encontrado. Comece assistindo suas s\u00e9ries!", - "HeaderLatestEpisodes": "Epis\u00f3dios Recentes", - "HeaderPersonTypes": "Tipos de Pessoa:", - "TabSongs": "M\u00fasicas", - "TabAlbums": "\u00c1lbuns", - "TabArtists": "Artistas", - "TabAlbumArtists": "Artistas do \u00c1lbum", - "TabMusicVideos": "V\u00eddeos Musicais", - "ButtonSort": "Ordenar", - "HeaderSortBy": "Ordenar Por:", - "HeaderSortOrder": "Forma para Ordenar:", - "OptionPlayed": "Reproduzido", - "OptionUnplayed": "N\u00e3o-reproduzido", - "OptionAscending": "Crescente", - "OptionDescending": "Decrescente", - "OptionRuntime": "Dura\u00e7\u00e3o", - "OptionReleaseDate": "Data de Lan\u00e7amento", - "OptionPlayCount": "N\u00famero Reprodu\u00e7\u00f5es", - "OptionDatePlayed": "Data da Reprodu\u00e7\u00e3o", - "OptionDateAdded": "Data da Adi\u00e7\u00e3o", - "OptionAlbumArtist": "Artista do \u00c1lbum", - "OptionArtist": "Artista", - "OptionAlbum": "\u00c1lbum", - "OptionTrackName": "Nome da Faixa", - "OptionCommunityRating": "Avalia\u00e7\u00e3o da Comunidade", - "OptionNameSort": "Nome", - "OptionFolderSort": "Pastas", - "OptionBudget": "Or\u00e7amento", - "OptionRevenue": "Faturamento", - "OptionPoster": "Capa", - "OptionPosterCard": "Cart\u00e3o da capa", - "OptionBackdrop": "Imagem de Fundo", - "OptionTimeline": "Linha do tempo", - "OptionThumb": "\u00cdcone", - "OptionThumbCard": "Cart\u00e3o do \u00edcone", - "OptionBanner": "Banner", - "OptionCriticRating": "Avalia\u00e7\u00e3o da Cr\u00edtica", - "OptionVideoBitrate": "Taxa do V\u00eddeo", - "OptionResumable": "Por retomar", - "ScheduledTasksHelp": "Clique em uma tarefa para ajustar quando ser\u00e1 executada.", - "ScheduledTasksTitle": "Tarefas Agendadas", - "TabMyPlugins": "Meus Plugins", - "TabCatalog": "Cat\u00e1logo", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Atualiza\u00e7\u00f5es Autom\u00e1ticas", - "HeaderNowPlaying": "Reproduzindo Agora", - "HeaderLatestAlbums": "\u00c1lbuns Recentes", - "HeaderLatestSongs": "M\u00fasicas Recentes", - "HeaderRecentlyPlayed": "Reprodu\u00e7\u00f5es Recentes", - "HeaderFrequentlyPlayed": "Reprodu\u00e7\u00f5es Frequentes", - "DevBuildWarning": "Vers\u00f5es Dev s\u00e3o as mais atuais. Lan\u00e7adas frequentemente, estas vers\u00f5es n\u00e3o foram testadas. A aplica\u00e7\u00e3o pode falhar e v\u00e1rios recursos podem n\u00e3o funcionar.", - "LabelVideoType": "Tipo de V\u00eddeo:", - "OptionBluray": "Bluray", - "OptionDvd": "Dvd", - "OptionIso": "Iso", - "Option3D": "3D", - "LabelFeatures": "Recursos:", - "LabelService": "Servi\u00e7o:", - "LabelStatus": "Status:", - "LabelVersion": "Vers\u00e3o:", - "LabelLastResult": "\u00daltimo resultado:", - "OptionHasSubtitles": "Legendas", - "OptionHasTrailer": "Trailer", - "OptionHasThemeSong": "M\u00fasica-Tema", - "OptionHasThemeVideo": "V\u00eddeo-Tema", - "TabMovies": "Filmes", - "TabStudios": "Est\u00fadios", - "TabTrailers": "Trailers", - "LabelArtists": "Artistas:", - "LabelArtistsHelp": "Separar m\u00faltiplos usando ;", - "HeaderLatestMovies": "Filmes Recentes", - "HeaderLatestTrailers": "Trailers Recentes", - "OptionHasSpecialFeatures": "Recursos Especiais", - "OptionImdbRating": "Avalia\u00e7\u00e3o IMDb", - "OptionParentalRating": "Classifica\u00e7\u00e3o Parental", - "OptionPremiereDate": "Data da Estr\u00e9ia", - "TabBasic": "B\u00e1sico", - "TabAdvanced": "Avan\u00e7ado", - "HeaderStatus": "Status", - "OptionContinuing": "Em Exibi\u00e7\u00e3o", - "OptionEnded": "Finalizada", - "HeaderAirDays": "Dias da Exibi\u00e7\u00e3o", - "OptionSunday": "Domingo", - "OptionMonday": "Segunda-feira", - "OptionTuesday": "Ter\u00e7a-feira", - "OptionWednesday": "Quarta-feira", - "OptionThursday": "Quinta-feira", - "OptionFriday": "Sexta-feira", - "OptionSaturday": "S\u00e1bado", - "HeaderManagement": "Gerenciamento", - "LabelManagement": "Administra\u00e7\u00e3o:", - "OptionMissingImdbId": "Faltando Id IMDb", - "OptionMissingTvdbId": "Faltando Id TheTVDB", - "OptionMissingOverview": "Faltando Sinopse", - "OptionFileMetadataYearMismatch": "Anos do Arquivo e Metadados n\u00e3o conferem", - "TabGeneral": "Geral", - "TitleSupport": "Suporte", - "TabLog": "Log", - "TabAbout": "Sobre", - "TabSupporterKey": "Chave de Colaborador", - "TabBecomeSupporter": "Torne-se um Colaborador", - "ProjectHasCommunity": "Emby tem uma comunidade crescente de usu\u00e1rios e contribuidores.", - "CheckoutKnowledgeBase": "Visite nossa base de conhecimento para obter ajuda para extrair o m\u00e1ximo do Emby.", - "SearchKnowledgeBase": "Pesquisar na Base de Conhecimento", - "VisitTheCommunity": "Visitar a Comunidade", - "VisitProjectWebsite": "Visite o Web Site do Emby", - "VisitProjectWebsiteLong": "Visite o web site do Emby para obter as \u00faltimas novidades e se manter informado com o blog dos desenvolvedores.", - "OptionHideUser": "Ocultar este usu\u00e1rio das telas de login", - "OptionHideUserFromLoginHelp": "\u00datil para contas de administrador privadas ou ocultas. O usu\u00e1rio necessitar\u00e1 entrar manualmente, digitando seu nome de usu\u00e1rio e senha.", - "OptionDisableUser": "Desativar este usu\u00e1rio" + "TabPhotos": "Fotos", + "TabVideos": "V\u00eddeos", + "HeaderWelcomeToEmby": "Bem vindo ao Emby", + "EmbyIntroMessage": "Com o Emby voc\u00ea pode facilmente fazer streaming de v\u00eddeos, m\u00fasicas e fotos do Servidor Emby para smartphones, tablets e outros dispositivos.", + "ButtonSkip": "Ignorar", + "TextConnectToServerManually": "Conectar ao servidor manualmente", + "ButtonSignInWithConnect": "Entrar no Emby Connect", + "ButtonConnect": "Conectar", + "LabelServerHost": "Servidor:", + "LabelServerHostHelp": "192.168.1.100 ou https:\/\/meuservidor.com", + "LabelServerPort": "Porta:", + "HeaderNewServer": "Novo Servidor", + "ButtonChangeServer": "Alterar Servidor", + "HeaderConnectToServer": "Conectar ao Servidor", + "OptionReportList": "Visualiza\u00e7\u00e3o de Lista", + "OptionReportStatistics": "Estat\u00edsticas", + "OptionReportGrouping": "Agrupamento", + "HeaderExport": "Exportar", + "HeaderColumns": "Colunas", + "ButtonReset": "Redefinir", + "OptionEnableExternalVideoPlayers": "Ativar reprodutores de v\u00eddeo externos", + "ButtonUnlockGuide": "Desbloquear Guia", + "LabelEnableFullScreen": "Ativar modo tela cheia", + "LabelEnableChromecastAc3Passthrough": "Ativar a assagem direta de AC3 para o Chromecast", + "LabelSyncPath": "Caminho do conte\u00fado sincronizado:", + "LabelEmail": "Email:", + "LabelUsername": "Nome do Usu\u00e1rio:", + "HeaderSignUp": "Inscrever-se", + "LabelPasswordConfirm": "Senha (confirmar):", + "ButtonAddServer": "Adicionar Servidor", + "TabHomeScreen": "Tela In\u00edcio", + "HeaderDisplay": "Exibi\u00e7\u00e3o", + "HeaderNavigation": "Navega\u00e7\u00e3o", + "LegendTheseSettingsShared": "Estas defini\u00e7\u00f5es ser\u00e3o compartilhadas em todos os dispositivos" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json b/MediaBrowser.Server.Implementations/Localization/Server/pt-PT.json index 4dfe1596c..e55fe5caa 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/pt-PT.json @@ -1,5 +1,7 @@ { - "TabWebClient": "Web Client", + "LabelExit": "Sair", + "LabelVisitCommunity": "Visitar a Comunidade", + "LabelGithub": "Github", "LabelSwagger": "Swagger", "LabelStandard": "Padr\u00e3o", "LabelApiDocumentation": "Documenta\u00e7\u00e3o da API", @@ -11,6 +13,7 @@ "LabelShowLogWindow": "Mostrar Janela de Log", "LabelPrevious": "Anterior", "LabelFinish": "Terminar", + "FolderTypeMixed": "Mixed content", "LabelNext": "Seguinte", "LabelYoureDone": "Concluiu!", "WelcomeToProject": "Bem-vindo ao Emby!", @@ -24,20 +27,20 @@ "AWindowsServiceHasBeenInstalled": "Foi instalado um Servi\u00e7o do Windows.", "WindowsServiceIntro1": "O Servidor Emby \u00e9 normalmente executado como uma aplica\u00e7\u00e3o de ambiente de trabalho com um \u00edcone na barra de tarefas, mas se o preferir executar como um servi\u00e7o em segundo plano, pode ser iniciado no painel de controlo de servi\u00e7os do windows.", "WindowsServiceIntro2": "Por favor tome aten\u00e7\u00e3o que se estiver a usar o servi\u00e7o, este n\u00e3o pode estar a correr ao mesmo tempo que o \u00edcone na bandeja. Por isso, ter\u00e1 de sair da aplca\u00e7\u00e3o da bandeja para poder correr o servi\u00e7o. Note, ainda, que o servi\u00e7o necessita de privil\u00e9gios administrativos via Painel de Controlo. De momento, n\u00e3o \u00e9 poss\u00edvel utilizar a fun\u00e7\u00e3o de auto-actualiza\u00e7\u00e3o ao mesmo tempo que est\u00e1 em utiliza\u00e7\u00e3o o servi\u00e7o, por isso, novas vers\u00f5es necessitam de interac\u00e7\u00e3o manual.", - "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", + "WizardCompleted": "\u00c9 tudo, de momento. O Emby come\u00e7ou a recolher informa\u00e7\u00f5es da sua biblioteca multim\u00e9dia. Confira algumas das nossas apps e de seguida clique <b>Terminar<\/b> para ver o <b>Painel Principal do Servidor<\/b>", "LabelConfigureSettings": "Configura\u00e7\u00f5es", "LabelEnableVideoImageExtraction": "Activar extrac\u00e7\u00e3o de imagens dos v\u00eddeos.", "VideoImageExtractionHelp": "Para os v\u00eddeos ainda sem imagens e que n\u00e3o se encontram imagens na internet. Esta funcionalidade vai acrescentar mais algum tempo na leitura inicial da biblioteca, mas resultar\u00e1 numa apresenta\u00e7\u00e3o melhorada,", "LabelEnableChapterImageExtractionForMovies": "Extrair imagens dos cap\u00edtulos dos Filmes", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelChapterImageExtractionForMoviesHelp": "Extrair imagens de cap\u00edtulos permitir\u00e1 aos clientes exibir menus gr\u00e1ficos de sele\u00e7\u00e3o de cenas. O processo pode ser lento, ocasionar uso intensivo do cpu e pode exigir bastante espa\u00e7o em disco. Ser\u00e1 executada como uma tarefa noturna, embora seja configur\u00e1vel na \u00e1rea de tarefas agendadas. N\u00e3o \u00e9 recomendado executar esta tarefa durante as horas de maior uso.", "LabelEnableAutomaticPortMapping": "Activar mapeamento autom\u00e1tico de portas", "LabelEnableAutomaticPortMappingHelp": "UPnP permite configurar automaticamente o router, para um acesso remoto mais facilitado. Pode n\u00e3o suportar todos os modelos de routers.", "HeaderTermsOfService": "Termos de Servi\u00e7o do Emby", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", + "MessagePleaseAcceptTermsOfService": "Por favor, aceite os termos de servi\u00e7o e pol\u00edtica de privacidade antes de continuar.", + "OptionIAcceptTermsOfService": "Aceito os termos de servi\u00e7o", + "ButtonPrivacyPolicy": "Pol\u00edtica de privacidade", + "ButtonTermsOfService": "Termos de Servi\u00e7o", + "HeaderDeveloperOptions": "Op\u00e7\u00f5es do Programador", "OptionEnableWebClientResponseCache": "Enable web client response caching", "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", "OptionEnableWebClientResourceMinification": "Enable web client resource minification", @@ -51,20 +54,20 @@ "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", "LabelPinCode": "Pin code:", "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", - "HeaderSync": "Sync", + "HeaderSync": "Sincroniza\u00e7\u00e3o", "ButtonOk": "Ok", "ButtonCancel": "Cancelar", - "ButtonExit": "Exit", + "ButtonExit": "Sair", "ButtonNew": "Novo", "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "TabPlaylist": "Playlist", + "HeaderAudio": "\u00c1udio", + "HeaderVideo": "V\u00eddeo", + "HeaderPaths": "Localiza\u00e7\u00f5es", + "CategorySync": "Sincroniza\u00e7\u00e3o", + "TabPlaylist": "Lista de Reprodu\u00e7\u00e3o", "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", + "HeaderGrownupsOnly": "Adultos Apenas!", + "DividerOr": "-- ou --", "HeaderInstalledServices": "Installed Services", "HeaderAvailableServices": "Available Services", "MessageNoServicesInstalled": "No services are currently installed.", @@ -72,35 +75,34 @@ "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", "ButtonConfigurePinCode": "Configure pin code", "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "RegisterWithPayPal": "Registar com PayPal", + "HeaderSyncRequiresSupporterMembership": "A sincroniza\u00e7\u00e3o necessita de uma conta de Apoiante", "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", + "LabelSyncTempPath": "Caminho de arquivo tempor\u00e1rio:", + "LabelSyncTempPathHelp": "Especifique uma pasta de trabalho para a sincroniza\u00e7\u00e3o personalizada. Multim\u00e9dia convertida, criada durante o processo de sincroniza\u00e7\u00e3o, ser\u00e1 aqui armazenada.", + "LabelCustomCertificatePath": "Localiza\u00e7\u00e3o do certificado personalizado:", "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", "TitleNotifications": "Notifications", "ButtonDonateWithPayPal": "Donate with PayPal", "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Emby online account user name or password.", + "LabelEnterConnectUserName": "Username or email:", + "LabelEnterConnectUserNameHelp": "This is your Emby online account username or password.", "LabelEnableEnhancedMovies": "Enable enhanced movie displays", "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", + "HeaderSyncJobInfo": "Tarefa de Sincroniza\u00e7\u00e3o", + "FolderTypeMovies": "Filmes", + "FolderTypeMusic": "M\u00fasica", + "FolderTypeAdultVideos": "V\u00eddeos adultos", + "FolderTypePhotos": "Fotos", + "FolderTypeMusicVideos": "V\u00eddeos musicais", + "FolderTypeHomeVideos": "V\u00eddeos caseiros", + "FolderTypeGames": "Jogos", + "FolderTypeBooks": "Livros", "FolderTypeTvShows": "TV", "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", + "LabelContentType": "Tipo de conte\u00fado:", + "TitleScheduledTasks": "Tarefas Agendadas", "HeaderSetupLibrary": "Configurar biblioteca", "ButtonAddMediaFolder": "Adicionar pasta de media", "LabelFolderType": "Tipo de pasta", @@ -125,7 +127,7 @@ "TabNotifications": "Notifica\u00e7\u00f5es", "TabCollectionTitles": "T\u00edtulos", "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessFromAllDevices": "Ativar acesso de todos os dispositivos", "OptionEnableAccessToAllChannels": "Enable access to all channels", "OptionEnableAccessToAllLibraries": "Enable access to all libraries", "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", @@ -167,12 +169,12 @@ "MessageNothingHere": "Nada aqui.", "MessagePleaseEnsureInternetMetadata": "Certifique-se que a transfer\u00eancia de metadados da internet est\u00e1 activa.", "TabSuggested": "Sugest\u00f5es", - "TabSuggestions": "Suggestions", + "TabSuggestions": "Sugest\u00f5es", "TabLatest": "Mais recente", "TabUpcoming": "Pr\u00f3ximos", "TabShows": "S\u00e9ries", "TabEpisodes": "Epis\u00f3dios", - "TabGenres": "G\u00e9neros Art\u00edsticos", + "TabGenres": "G\u00e9neros", "TabPeople": "Pessoas", "TabNetworks": "Redes", "HeaderUsers": "Utilizadores", @@ -231,7 +233,7 @@ "ScheduledTasksTitle": "Tarefas Agendadas", "TabMyPlugins": "As minhas extens\u00f5es", "TabCatalog": "Cat\u00e1logo", - "TitlePlugins": "Plugins", + "TitlePlugins": "Extens\u00f5es", "HeaderAutomaticUpdates": "Atualiza\u00e7\u00f5es autom\u00e1ticas", "HeaderNowPlaying": "A reproduzir", "HeaderLatestAlbums": "\u00daltimos \u00c1lbuns", @@ -285,7 +287,9 @@ "OptionFileMetadataYearMismatch": "Anos do Ficheiro\/Metadados n\u00e3o coincidem", "TabGeneral": "Geral", "TitleSupport": "Suporte", + "LabelSeasonNumber": "Season number", "TabLog": "Log", + "LabelEpisodeNumber": "Episode number", "TabAbout": "Acerca", "TabSupporterKey": "Chave de Apoiante", "TabBecomeSupporter": "Torne-se um Apoiante", @@ -293,7 +297,7 @@ "CheckoutKnowledgeBase": "Check out our knowledge base to help you get the most out of Emby.", "SearchKnowledgeBase": "Procurar na Base de Conhecimento", "VisitTheCommunity": "Visite a Comunidade", - "VisitProjectWebsite": "Visit the Emby Web Site", + "VisitProjectWebsite": "Visite a p\u00e1gina web do Emby", "VisitProjectWebsiteLong": "Visit the Emby Web site to catch the latest news and keep up with the developer blog.", "OptionHideUser": "Ocultar este utilizador dos formul\u00e1rios de in\u00edcio de sess\u00e3o", "OptionHideUserFromLoginHelp": "Useful for private or hidden administrator accounts. The user will need to sign in manually by entering their username and password.", @@ -301,7 +305,7 @@ "OptionDisableUserHelp": "Se desativado, o servidor n\u00e3o permite nenhuma conex\u00e3o deste utilizador. Conex\u00f5es existentes ser\u00e3o terminadas.", "HeaderAdvancedControl": "Controlo Avan\u00e7ado", "LabelName": "Nome:", - "ButtonHelp": "Help", + "ButtonHelp": "Ajuda", "OptionAllowUserToManageServer": "Permitir a este utilizador gerir o servidor", "HeaderFeatureAccess": "Acesso a Caracter\u00edsticas", "OptionAllowMediaPlayback": "Allow media playback", @@ -311,6 +315,9 @@ "OptionAllowRemoteControlOthers": "Permitir controlo remoto de outros utilizadores", "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", "HeaderRemoteControl": "Remote Control", "OptionMissingTmdbId": "Id Tmdb em falta", "OptionIsHD": "HD", @@ -370,7 +377,7 @@ "ButtonAutoScroll": "Scroll autom\u00e1tico", "LabelImageSavingConvention": "Conven\u00e7\u00e3o para guardar imagens:", "LabelImageSavingConventionHelp": "Emby recognizes images from most major media applications. Choosing your downloading convention is useful if you also use other products.", - "OptionImageSavingCompatible": "Compatible - Emby\/Kodi\/Plex", + "OptionImageSavingCompatible": "Compat\u00edvel - Emby\/Kodi\/Plex", "OptionImageSavingStandard": "Padr\u00e3o - MB2", "ButtonSignIn": "Iniciar Sess\u00e3o", "TitleSignIn": "Iniciar Sess\u00e3o", @@ -540,7 +547,7 @@ "HeaderNewCollection": "Nova Cole\u00e7\u00e3o", "ButtonSubmit": "Submit", "ButtonCreate": "Criar", - "LabelCustomCss": "Custom css:", + "LabelCustomCss": "CSS personalizado:", "LabelCustomCssHelp": "Apply your own custom css to the web interface.", "LabelLocalHttpServerPortNumber": "Local http port number:", "LabelLocalHttpServerPortNumberHelp": "The tcp port number that Emby's http server should bind to.", @@ -555,7 +562,7 @@ "LabelWebSocketPortNumber": "N\u00famero da porta da Web socket:", "LabelEnableAutomaticPortMap": "Enable automatic port mapping", "LabelEnableAutomaticPortMapHelp": "Attempt to automatically map the public port to the local port via UPnP. This may not work with some router models.", - "LabelExternalDDNS": "External WAN Address:", + "LabelExternalDDNS": "Endere\u00e7o WAN Externo:", "LabelExternalDDNSHelp": "If you have a dynamic DNS enter it here. Emby apps will use it when connecting remotely. Leave empty for automatic detection.", "TabResume": "Retomar", "TabWeather": "Tempo", @@ -579,16 +586,14 @@ "LabelSkipped": "Ignorado", "HeaderEpisodeOrganization": "Organiza\u00e7\u00e3o dos Epis\u00f3dios", "LabelSeries": "Series:", - "LabelSeasonNumber": "N\u00famero da temporada:", - "LabelEpisodeNumber": "N\u00famero do epis\u00f3dio:", "LabelEndingEpisodeNumber": "N\u00famero do epis\u00f3dio final:", "LabelEndingEpisodeNumberHelp": "Necess\u00e1rio s\u00f3 para arquivos multi-epis\u00f3dios", - "HeaderSupportTheTeam": "Support the Emby Team", + "HeaderSupportTheTeam": "Suporte a Equipa do Emby", "LabelSupportAmount": "Quantia (USD)", "HeaderSupportTheTeamHelp": "Ajude a garantir o desenvolvimento continuado deste projeto, doando. Uma parte de todas as doa\u00e7\u00f5es ser\u00e1 para contribuir para outras ferramentas gratuitas em que dependemos.", "ButtonEnterSupporterKey": "Insira a chave de apoiante", "DonationNextStep": "Assim que termine, por favor volte e insira a sua chave de apoiante, a qual ir\u00e1 receber por email.", - "AutoOrganizeHelp": "O auto-organizar monitoriza as suas pastas de transfer\u00eancias em busca de novos ficheiros e move-os para as suas pastas multim\u00e9dia.", + "AutoOrganizeHelp": "A organiza\u00e7\u00e3o autom\u00e1tica monitoriza as suas pastas de transfer\u00eancias em busca de novos ficheiros e move-os para as suas pastas multim\u00e9dia.", "AutoOrganizeTvHelp": "A organiza\u00e7\u00e3o de ficheiros de TV s\u00f3 ir\u00e1 adicionar ficheiros \u00e0s s\u00e9ries existentes. Ela n\u00e3o ir\u00e1 criar novas pastas de s\u00e9ries.", "OptionEnableEpisodeOrganization": "Ativar a organiza\u00e7\u00e3o de novos epis\u00f3dios", "LabelWatchFolder": "Observar pasta:", @@ -606,7 +611,7 @@ "HeaderPattern": "Padr\u00e3o", "HeaderResult": "Resultado", "LabelDeleteEmptyFolders": "Remover pastas vazias depois de organizar", - "LabelDeleteEmptyFoldersHelp": "Ative isto para manter a pasta de downloads limpa.", + "LabelDeleteEmptyFoldersHelp": "Ative esta op\u00e7\u00e3o para manter a pasta de transfer\u00eancias limpa.", "LabelDeleteLeftOverFiles": "Apagar os ficheiros deixados com as seguintes extens\u00f5es:", "LabelDeleteLeftOverFilesHelp": "Separar com ;. Por exemplo: .nfo;.txt", "OptionOverwriteExistingEpisodes": "Sobrepor epis\u00f3dios existentes", @@ -619,7 +624,7 @@ "HeaderRunningTasks": "Tarefas em Execu\u00e7\u00e3o", "HeaderActiveDevices": "Dispositivos Ativos", "HeaderPendingInstallations": "Instala\u00e7\u00f5es Pendentes", - "HeaderServerInformation": "Server Information", + "HeaderServerInformation": "Informa\u00e7\u00e3o do Servidor", "ButtonRestartNow": "Reiniciar Agora", "ButtonRestart": "Reiniciar", "ButtonShutdown": "Encerrar", @@ -687,7 +692,7 @@ "NotificationOptionNewLibraryContentMultiple": "Novo conte\u00fado adicionado (m\u00faltiplo)", "NotificationOptionCameraImageUploaded": "Camera image uploaded", "NotificationOptionUserLockedOut": "User locked out", - "HeaderSendNotificationHelp": "By default, notifications are delivered to your dashboard inbox. Browse the plugin catalog to install additional notification options.", + "HeaderSendNotificationHelp": "Por padr\u00e3o, as notifica\u00e7\u00f5es s\u00e3o mostradas na caixa de entrada do painel principal. Explore o cat\u00e1logo das extens\u00f5es para instalar op\u00e7\u00f5es de notifica\u00e7\u00e3o adicionais.", "NotificationOptionServerRestartRequired": "\u00c9 necess\u00e1rio reiniciar o servidor", "LabelNotificationEnabled": "Ativar esta notifica\u00e7\u00e3o", "LabelMonitorUsers": "Monitor activity from:", @@ -699,7 +704,7 @@ "CategoryPlugin": "Extens\u00e3o", "LabelMessageTitle": "Titulo da mensagem:", "LabelAvailableTokens": "Tokens dispon\u00edveis:", - "AdditionalNotificationServices": "Browse the plugin catalog to install additional notification services.", + "AdditionalNotificationServices": "Explore o cat\u00e1logo de extens\u00f5es para instalar servi\u00e7os adicionais de notifica\u00e7\u00e3o.", "OptionAllUsers": "Todos os utilizadores", "OptionAdminUsers": "Administradores", "OptionCustomUsers": "Personalizado", @@ -868,6 +873,7 @@ "HeaderTypeText": "Inserir texto", "LabelTypeText": "Texto", "HeaderSearchForSubtitles": "Search for Subtitles", + "ButtonMore": "More", "MessageNoSubtitleSearchResultsFound": "No search results founds.", "TabDisplay": "Display", "TabLanguages": "Languages", @@ -895,10 +901,10 @@ "OptionLatestChannelMedia": "Latest channel items", "HeaderLatestChannelItems": "Latest Channel Items", "OptionNone": "None", - "HeaderLiveTv": "Live TV", + "HeaderLiveTv": "TV ao Vivo", "HeaderReports": "Reports", "HeaderMetadataManager": "Metadata Manager", - "HeaderPreferences": "Preferences", + "HeaderSettings": "Settings", "MessageLoadingChannels": "Loading channel content...", "MessageLoadingContent": "Loading content...", "ButtonMarkRead": "Mark Read", @@ -933,27 +939,27 @@ "ViewTypeMusicArtists": "Artists", "ViewTypeBoxSets": "Collections", "ViewTypeChannels": "Channels", - "ViewTypeLiveTV": "Live TV", + "ViewTypeLiveTV": "TV ao Vivo", "ViewTypeLiveTvNowPlaying": "Now Airing", "ViewTypeLatestGames": "Latest Games", - "ViewTypeRecentlyPlayedGames": "Recently Played", + "ViewTypeRecentlyPlayedGames": "Reproduzido Recentemente", "ViewTypeGameFavorites": "Favorites", "ViewTypeGameSystems": "Game Systems", "ViewTypeGameGenres": "Genres", "ViewTypeTvResume": "Resume", "ViewTypeTvNextUp": "Next Up", - "ViewTypeTvLatest": "Latest", + "ViewTypeTvLatest": "\u00daltimas", "ViewTypeTvShowSeries": "Series", "ViewTypeTvGenres": "Genres", "ViewTypeTvFavoriteSeries": "Favorite Series", "ViewTypeTvFavoriteEpisodes": "Favorite Episodes", "ViewTypeMovieResume": "Resume", - "ViewTypeMovieLatest": "Latest", + "ViewTypeMovieLatest": "\u00daltimas", "ViewTypeMovieMovies": "Movies", "ViewTypeMovieCollections": "Collections", "ViewTypeMovieFavorites": "Favorites", "ViewTypeMovieGenres": "Genres", - "ViewTypeMusicLatest": "Latest", + "ViewTypeMusicLatest": "\u00daltimas", "ViewTypeMusicPlaylists": "Playlists", "ViewTypeMusicAlbums": "Albums", "ViewTypeMusicAlbumArtists": "Album Artists", @@ -1006,13 +1012,13 @@ "LabelMetadata": "Metadata:", "LabelImagesByName": "Images by name:", "LabelTranscodingTemporaryFiles": "Transcoding temporary files:", - "HeaderLatestMusic": "Latest Music", + "HeaderLatestMusic": "\u00daltimas M\u00fasicas", "HeaderBranding": "Branding", "HeaderApiKeys": "Api Keys", "HeaderApiKeysHelp": "External applications are required to have an Api key in order to communicate with Emby Server. Keys are issued by logging in with an Emby account, or by manually granting the application a key.", "HeaderApiKey": "Api Key", "HeaderApp": "App", - "HeaderDevice": "Device", + "HeaderDevice": "Dispositivo", "HeaderUser": "User", "HeaderDateIssued": "Date Issued", "LabelChapterName": "Chapter {0}", @@ -1034,17 +1040,17 @@ "LabelPageSize": "Item limit:", "LabelPath": "Path:", "LabelView": "Visualizar:", - "TabUsers": "Users", + "TabUsers": "Utilizadores", "LabelSortName": "Sort name:", "LabelDateAdded": "Date added:", "HeaderFeatures": "Features", "HeaderAdvanced": "Avan\u00e7ado", "ButtonSync": "Sincronizar", - "TabScheduledTasks": "Scheduled Tasks", + "TabScheduledTasks": "Tarefas Agendadas", "HeaderChapters": "Cap\u00edtulos", "HeaderResumeSettings": "Resume Settings", - "TabSync": "Sync", - "TitleUsers": "Users", + "TabSync": "Sincroniza\u00e7\u00e3o", + "TitleUsers": "Utilizadores", "LabelProtocol": "Protocol:", "OptionProtocolHttp": "Http", "OptionProtocolHls": "Http Live Streaming", @@ -1096,19 +1102,18 @@ "OptionReportArtists": "Artists", "OptionReportAlbums": "Albums", "OptionReportAdultVideos": "Adult videos", - "ButtonMore": "More", "HeaderActivity": "Activity", "ScheduledTaskStartedWithName": "{0} started", "ScheduledTaskCancelledWithName": "{0} was cancelled", "ScheduledTaskCompletedWithName": "{0} completed", "ScheduledTaskFailed": "Scheduled task completed", - "PluginInstalledWithName": "{0} was installed", - "PluginUpdatedWithName": "{0} was updated", - "PluginUninstalledWithName": "{0} was uninstalled", + "PluginInstalledWithName": "{0} foi instalado", + "PluginUpdatedWithName": "{0} foi atualizado", + "PluginUninstalledWithName": "{0} foi desinstalado", "ScheduledTaskFailedWithName": "{0} failed", "ItemAddedWithName": "{0} foi adicionado \u00e0 biblioteca", "ItemRemovedWithName": "{0} foi removido da biblioteca", - "DeviceOnlineWithName": "{0} is connected", + "DeviceOnlineWithName": "{0} est\u00e1 conectado", "UserOnlineFromDevice": "{0} is online from {1}", "DeviceOfflineWithName": "{0} has disconnected", "UserOfflineFromDevice": "{0} has disconnected from {1}", @@ -1133,7 +1138,7 @@ "ProviderValue": "Provider: {0}", "LabelChannelDownloadSizeLimit": "Download size limit (GB):", "LabelChannelDownloadSizeLimitHelpText": "Limit the size of the channel download folder.", - "HeaderRecentActivity": "Recent Activity", + "HeaderRecentActivity": "Atividade Recente", "HeaderPeople": "People", "HeaderDownloadPeopleMetadataFor": "Download biography and images for:", "OptionComposers": "Composers", @@ -1218,14 +1223,15 @@ "HeaderDonationType": "Donation type:", "OptionMakeOneTimeDonation": "Make a separate donation", "OptionOneTimeDescription": "This is an additional donation to the team to show your support. It does not have any additional benefits and will not produce a supporter key.", - "OptionLifeTimeSupporterMembership": "Lifetime supporter membership", - "OptionYearlySupporterMembership": "Yearly supporter membership", - "OptionMonthlySupporterMembership": "Monthly supporter membership", + "OptionLifeTimeSupporterMembership": "Conta de Apoiante vital\u00edcia", + "OptionYearlySupporterMembership": "Conta de Apoiante anual", + "OptionMonthlySupporterMembership": "Conta de Apoiante mensal", "OptionNoTrailer": "No Trailer", "OptionNoThemeSong": "No Theme Song", "OptionNoThemeVideo": "No Theme Video", "LabelOneTimeDonationAmount": "Donation amount:", "ButtonDonate": "Donate", + "ButtonPurchase": "Purchase", "OptionActor": "Actor", "OptionComposer": "Composer", "OptionDirector": "Director", @@ -1238,14 +1244,13 @@ "HeaderPhotoInfo": "Photo Info", "HeaderInstall": "Install", "LabelSelectVersionToInstall": "Select version to install:", - "LinkSupporterMembership": "Learn about the Supporter Membership", + "LinkSupporterMembership": "Saiba mais sobre a conta de Apoiante", "MessageSupporterPluginRequiresMembership": "This plugin will require an active supporter membership after the 14 day free trial.", "MessagePremiumPluginRequiresMembership": "This plugin will require an active supporter membership in order to purchase after the 14 day free trial.", "HeaderReviews": "Reviews", - "HeaderDeveloperInfo": "Developer Info", + "HeaderDeveloperInfo": "Informa\u00e7\u00e3o do Programador", "HeaderRevisionHistory": "Revision History", "ButtonViewWebsite": "View website", - "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderXmlSettings": "Xml Settings", "HeaderXmlDocumentAttributes": "Xml Document Attributes", "HeaderXmlDocumentAttribute": "Xml Document Attribute", @@ -1259,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Saiba mais sobre o Emby Connect", "LabelExternalPlayers": "External players:", "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", "HeaderSubtitleProfile": "Subtitle Profile", "HeaderSubtitleProfiles": "Subtitle Profiles", "HeaderSubtitleProfilesHelp": "Subtitle profiles describe the subtitle formats supported by the device.", @@ -1301,9 +1309,9 @@ "OptionDateAddedFileTime": "Use file creation date", "LabelDateAddedBehaviorHelp": "If a metadata value is present it will always be used before either of these options.", "LabelNumberTrailerToPlay": "Number of trailers to play:", - "TitleDevices": "Devices", + "TitleDevices": "Dispositivos", "TabCameraUpload": "Camera Upload", - "TabDevices": "Devices", + "TabDevices": "Dispositivos", "HeaderCameraUploadHelp": "Automatically upload photos and videos taken from your mobile devices into Emby.", "MessageNoDevicesSupportCameraUpload": "You currently don't have any devices that support camera upload.", "LabelCameraUploadPath": "Camera upload path:", @@ -1331,7 +1339,7 @@ "OptionEveryday": "Every day", "OptionWeekdays": "Weekdays", "OptionWeekends": "Weekends", - "MessageProfileInfoSynced": "User profile information synced with Emby Connect.", + "MessageProfileInfoSynced": "A informa\u00e7\u00e3o do perfil do utilizador foi sincronizada com o Emby Connect.", "HeaderOptionalLinkEmbyAccount": "Optional: Link your Emby account", "ButtonTrailerReel": "Trailer reel", "HeaderTrailerReel": "Trailer Reel", @@ -1350,7 +1358,7 @@ "HeaderDashboardUserPassword": "As senhas do utilizador s\u00e3o geridas dentro das prefer\u00eancias do seu perfil pessoal.", "HeaderLibraryAccess": "Library Access", "HeaderChannelAccess": "Channel Access", - "HeaderLatestItems": "Latest Items", + "HeaderLatestItems": "\u00daltimos Itens", "LabelSelectLastestItemsFolders": "Include media from the following sections in Latest Items", "HeaderShareMediaFolders": "Share Media Folders", "MessageGuestSharingPermissionsHelp": "Most features are initially unavailable to guests but can be enabled as needed.", @@ -1370,14 +1378,14 @@ "LabelEnableSingleImageInDidlLimit": "Limit to single embedded image", "LabelEnableSingleImageInDidlLimitHelp": "Some devices will not render properly if multiple images are embedded within Didl.", "TabActivity": "Activity", - "TitleSync": "Sync", - "OptionAllowSyncContent": "Allow Sync", + "TitleSync": "Sincronizar", + "OptionAllowSyncContent": "Permitir Sincroniza\u00e7\u00e3o", "OptionAllowContentDownloading": "Allow media downloading", "NameSeasonUnknown": "Season Unknown", "NameSeasonNumber": "Season {0}", "LabelNewUserNameHelp": "Usernames can contain letters (a-z), numbers (0-9), dashes (-), underscores (_), apostrophes ('), and periods (.)", "TabJobs": "Jobs", - "TabSyncJobs": "Sync Jobs", + "TabSyncJobs": "Tarefas de Sincroniza\u00e7\u00e3o", "LabelTagFilterMode": "Mode:", "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", @@ -1387,13 +1395,13 @@ "HeaderUpcomingMovies": "Upcoming Movies", "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", - "ButtonMoreItems": "More...", + "ButtonMoreItems": "More", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", - "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "OptionAllowSyncTranscoding": "Permitir sincroniza\u00e7\u00e3o que necessite de transcodifica\u00e7\u00e3o", "HeaderPlayback": "Media Playback", "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", @@ -1406,14 +1414,6 @@ "OptionEnableFullSpeedConversion": "Enable full speed conversion", "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", "HeaderViewStyles": "View Styles", "LabelSelectViewStyles": "Enable enhanced presentations for:", "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", @@ -1431,7 +1431,24 @@ "HeaderNewServer": "New Server", "ButtonChangeServer": "Change Server", "HeaderConnectToServer": "Connect to Server", - "LabelExit": "Sair", - "LabelVisitCommunity": "Visitar a Comunidade", - "LabelGithub": "Github" + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "HeaderExport": "Export", + "HeaderColumns": "Columns", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Caminho do conte\u00fado sincronizado:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ro.json b/MediaBrowser.Server.Implementations/Localization/Server/ro.json new file mode 100644 index 000000000..b1ae764ff --- /dev/null +++ b/MediaBrowser.Server.Implementations/Localization/Server/ro.json @@ -0,0 +1,1454 @@ +{ + "LabelExit": "Iesire", + "LabelVisitCommunity": "Viziteaza comunitatea", + "LabelGithub": "Github", + "LabelSwagger": "F\u0103le\u0219te-te", + "LabelStandard": "Standard", + "LabelApiDocumentation": "Documentatie Api", + "LabelDeveloperResources": "Resurse Dezvoltator", + "LabelBrowseLibrary": "Rasfoieste Librarie", + "LabelConfigureServer": "Configureaza Emby", + "LabelOpenLibraryViewer": "Deschide Vizualizatorul Librariei", + "LabelRestartServer": "Restarteaza Server", + "LabelShowLogWindow": "Arata Fereastra de Log", + "LabelPrevious": "Anteriorul", + "LabelFinish": "Termina", + "FolderTypeMixed": "Mixed content", + "LabelNext": "Urmatorul", + "LabelYoureDone": "Esti Gata!", + "WelcomeToProject": "Bine a\u021bi venit la Emby!", + "ThisWizardWillGuideYou": "Acest asistent v\u0103 va ajuta s\u0103 va ghidati prin procesul de configurare. Pentru a \u00eencepe, v\u0103 rug\u0103m s\u0103 selecta\u021bi limba preferat\u0103.", + "TellUsAboutYourself": "Spune-ne despre tine", + "ButtonQuickStartGuide": "Ghid rapid de Start", + "LabelYourFirstName": "Numele tau:", + "MoreUsersCanBeAddedLater": "Mai mul\u021bi utilizatori pot fi ad\u0103ugati mai t\u00e2rziu \u00een Tabloul de Bord.", + "UserProfilesIntro": "Emby include sprijin pentru profile de utilizator, permi\u021b\u00e2nd fiec\u0103rui utilizator s\u0103 isi faca set\u0103rile de afi\u0219are proprii, playstate \u0219i control parental.", + "LabelWindowsService": "Serviciul Windows", + "AWindowsServiceHasBeenInstalled": "Un Serviciu Windows a fost intalat.", + "WindowsServiceIntro1": "Emby Server ruleaza in mod normal ca o aplicatie desktop cu o pictograma in bara de activitati, dar dac\u0103 prefera\u021bi s\u0103-l rulati ca un serviciu de fundal, acesta poate fi pornit de la windows services control panel.", + "WindowsServiceIntro2": "Dac\u0103 folosi\u021bi serviciul Windows, v\u0103 rug\u0103m s\u0103 re\u021bine\u021bi c\u0103 nu se poate rula \u00een acela\u0219i timp cu pictograma din bara de activitati, astfel \u00eenc\u00e2t ve\u021bi fi nevoit sa ie\u0219iti din bara de activitati pentru a executa serviciul. Serviciul va trebui, de asemenea, s\u0103 fie configurat cu privilegii administrative prin panoul de control. V\u0103 rug\u0103m s\u0103 re\u021bine\u021bi c\u0103 \u00een acest moment serviciul este \u00een imposibilitatea de auto-actualizare, astfel \u00eenc\u00e2t noile versiuni necesit\u0103 interac\u021biune manual\u0103.", + "WizardCompleted": "Asta e tot ce avem nevoie pentru moment. Emby a \u00eenceput colectarea de informa\u021bii despre biblioteca media. Verifica unele din aplica\u021biile noastre, \u0219i apoi face\u021bi clic pe <b>Finalizare<\/b> pentru a vizualiza <b>Tabloul de bord al Serverului <\/b>.", + "LabelConfigureSettings": "Configureaza setari", + "LabelEnableVideoImageExtraction": "Activeaza extractia de imagini video", + "VideoImageExtractionHelp": "Videoclipurile care nu au deja imagini, \u0219i pe care nu le putem g\u0103si pe Internet . Aceasta va ad\u0103uga ceva timp suplimentar pentru scanarea ini\u021bial\u0103 a bibliotecii, dar va conduce la o prezentare mai pl\u0103cuta.", + "LabelEnableChapterImageExtractionForMovies": "Extrage imagini de capitol pentru Filme", + "LabelChapterImageExtractionForMoviesHelp": "Extragerea imaginilor de capitol va permite clien\u021bilor s\u0103 afi\u0219eze scene grafice la selectarea meniurilor. Procesul poate fi lent, intensiv-CPU \u0219i poate necesita mai multi gigabiti de spa\u021biu. Se ruleaza ca o sarcin\u0103 programat\u0103 de noapte, de\u0219i acest lucru este configurabil \u00een zona sarcinilor programate. Nu este recomandat s\u0103 rula\u021bi acest task \u00een timpul orelor de v\u00e2rf de utilizare.", + "LabelEnableAutomaticPortMapping": "Activeaza maparea automata a porturilor", + "LabelEnableAutomaticPortMappingHelp": "UPnP permite configurarea router-ului automat pentru acces u\u0219or la distan\u021b\u0103. Acest lucru nu poate lucra cu unele modele de router.", + "HeaderTermsOfService": "Termeni de Utilizare Emby", + "MessagePleaseAcceptTermsOfService": "V\u0103 rug\u0103m s\u0103 accepta\u021bi termenii de utilizare si Politica de confiden\u021bialitate \u00eenainte de a continua.", + "OptionIAcceptTermsOfService": "Accept termenii de utilizare", + "ButtonPrivacyPolicy": "Politica de confiden\u021bialitate", + "ButtonTermsOfService": "Conditii de Utilizare", + "HeaderDeveloperOptions": "Obtiuni Dezvoltator", + "OptionEnableWebClientResponseCache": "Activa\u021bi r\u0103spunsul cache client web", + "OptionDisableForDevelopmentHelp": "Configura\u021bi acestea cum este necesar \u00een scopuri de dezvoltare client web.", + "OptionEnableWebClientResourceMinification": "Activa\u021bi minimizare a resurselor clientului web", + "LabelDashboardSourcePath": "Calea sursa a clientului Web:", + "LabelDashboardSourcePathHelp": "Dac\u0103 ruleaz\u0103 serverul de la surs\u0103, specifica\u021bi calea c\u0103tre directorul tabloul de bord. Toate fi\u0219ierele clientului web va fi servit de la aceast\u0103 loca\u021bie.", + "ButtonConvertMedia": "Converteste media", + "ButtonOrganize": "Organizeaza", + "LinkedToEmbyConnect": "Legat la Emby Connect", + "HeaderSupporterBenefits": "Beneficii Suporter", + "HeaderAddUser": "Adauga User", + "LabelAddConnectSupporterHelp": "Pentru a ad\u0103uga un utilizator care nu este listat, va trebui s\u0103 legati \u00eent\u00e2i contul lor la Emby Connect de la pagina lor de profil de utilizator.", + "LabelPinCode": "Codul Pin:", + "OptionHideWatchedContentFromLatestMedia": "Ascunde continutul vizualizat din Noutati Media", + "HeaderSync": "Sincronizeaza", + "ButtonOk": "Ok", + "ButtonCancel": "Anuleaza", + "ButtonExit": "Iesire", + "ButtonNew": "Nou", + "HeaderTV": "Seriale TV", + "HeaderAudio": "Muzica", + "HeaderVideo": "Filme", + "HeaderPaths": "Cai", + "CategorySync": "Sincronizeaza", + "TabPlaylist": "Lista de redare", + "HeaderEasyPinCode": "Cod Pin Usor", + "HeaderGrownupsOnly": "Doar Adultii!", + "DividerOr": "--sau--", + "HeaderInstalledServices": "Servicii Instalate", + "HeaderAvailableServices": "Servicii Disponibile", + "MessageNoServicesInstalled": "Niciun Serviciu nu este instalat", + "HeaderToAccessPleaseEnterEasyPinCode": "Pentru a accesa, introduceti va rog codul pin usor", + "KidsModeAdultInstruction": "Apasa pe iconita de blocare din partea dreapta jos pentru a configura sau lasati modul Copii. Pinul Dvs. va fi necesar.", + "ButtonConfigurePinCode": "Configureaza codul pin", + "HeaderAdultsReadHere": "Adultii Cititi Aici!", + "RegisterWithPayPal": "Inregistreaza-te cu PayPal", + "HeaderSyncRequiresSupporterMembership": "Sincronizarea necesita a fi Membru Cotizant", + "HeaderEnjoyDayTrial": "Bucurati-va de 14 zile de Incercare Gratuita", + "LabelSyncTempPath": "Cale fisier temporara", + "LabelSyncTempPathHelp": "Specifica\u021bi un dosar de sincronizare personalizat de lucru. Media convertite create \u00een timpul procesului de sincronizare vor fi stocate aici.", + "LabelCustomCertificatePath": "Calea catre certificatul personalizat:", + "LabelCustomCertificatePathHelp": "Furnizati propriul certificat ssl in format .pfx. Daca este omis, serverul ca creea un certificat semnat propriu.", + "TitleNotifications": "Notificari", + "ButtonDonateWithPayPal": "Doneaza cu PayPal", + "OptionDetectArchiveFilesAsMedia": "Detecteza fisierele arhiva ca media", + "OptionDetectArchiveFilesAsMediaHelp": "Dac\u0103 este activat\u0103, fi\u0219ierele cu extensiile .rar \u0219i .zip vor fi detectate ca fi\u0219iere media.", + "LabelEnterConnectUserName": "Username or email:", + "LabelEnterConnectUserNameHelp": "This is your Emby online account username or password.", + "LabelEnableEnhancedMovies": "Activati afisarea imbunatatita a filmelor", + "LabelEnableEnhancedMoviesHelp": "C\u00e2nd este activat, filmele vor fi afi\u0219ate ca dosare pentru a include trailere, figuranti, distributie si echipa, si alte tipuri de con\u021binut.", + "HeaderSyncJobInfo": "Activitate de sincronizare", + "FolderTypeMovies": "Filme", + "FolderTypeMusic": "Muzica", + "FolderTypeAdultVideos": "Filme Porno", + "FolderTypePhotos": "Fotografii", + "FolderTypeMusicVideos": "Videoclipuri", + "FolderTypeHomeVideos": "Video Personale", + "FolderTypeGames": "Jocuri", + "FolderTypeBooks": "Carti", + "FolderTypeTvShows": "Seriale TV", + "FolderTypeInherit": "Relationat", + "LabelContentType": "Tip continut:", + "TitleScheduledTasks": "Sarcini Programate", + "HeaderSetupLibrary": "Setari libraria media", + "ButtonAddMediaFolder": "Adaugati dosar media", + "LabelFolderType": "Tip dosar:", + "ReferToMediaLibraryWiki": "Consultati biblioteca media wiki.", + "LabelCountry": "Tara:", + "LabelLanguage": "Limba:", + "LabelTimeLimitHours": "Limita de timp(ore):", + "ButtonJoinTheDevelopmentTeam": "Inscrie-te in Echipa de Dezvoltare", + "HeaderPreferredMetadataLanguage": "Limba preferata a metadatelor.", + "LabelSaveLocalMetadata": "Salveaza posterele si metadatele in dosarele media", + "LabelSaveLocalMetadataHelp": "Salvand posterele si metadatele direct in dosarele media vor fi puse intr-un loc in care pot fi usor editate.", + "LabelDownloadInternetMetadata": "Descarca postere si metadatele dupa Internet", + "LabelDownloadInternetMetadataHelp": "Serverul Emby poate descarca informatii despre continutul Dvs. media pentru a activa prezentari imbogatite.", + "TabPreferences": "Preferinte", + "TabPassword": "Parola", + "TabLibraryAccess": "Acces Librarie", + "TabAccess": "Acces", + "TabImage": "Imagine", + "TabProfile": "Profil", + "TabMetadata": "Metadate", + "TabImages": "Imagini", + "TabNotifications": "Notificari", + "TabCollectionTitles": "Titluri", + "HeaderDeviceAccess": "Accesul Dispozitivelor", + "OptionEnableAccessFromAllDevices": "Activeaza accesul dupa toate Dispozitivele", + "OptionEnableAccessToAllChannels": "Activeaza accesul la toate Canalele", + "OptionEnableAccessToAllLibraries": "Activeaza accesul la toate librariile", + "DeviceAccessHelp": "Aceasta se aplic\u0103 numai pentru dispozitive care pot fi identificate \u00een mod unic \u0219i nu va \u00eempiedica accesul browser. Filtrand accesul dispozitivelor utilizatorului va \u00eempiedica utilizarea noilor dispozitive p\u00e2n\u0103 c\u00e2nd nu au fost aprobate aici.", + "LabelDisplayMissingEpisodesWithinSeasons": "Afiseaza episoadele lipsa din sezoane", + "LabelUnairedMissingEpisodesWithinSeasons": "Afiseaza episoadele nedifuzate din sezoane", + "HeaderVideoPlaybackSettings": "Setari Playback Video", + "HeaderPlaybackSettings": "Setari Playback", + "LabelAudioLanguagePreference": "Preferinte limba audio:", + "LabelSubtitleLanguagePreference": "Preferinte limba subtitrare:", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Doar subtitrari fortate", + "OptionAlwaysPlaySubtitles": "Ruleaza intotdeauna subtitrari", + "OptionNoSubtitles": "Fara Subtitrare", + "OptionDefaultSubtitlesHelp": "Subtitrarile care se potrivesc cu preferintele limbii vor fi incarcate cand pista audio este intr-o limba straina.", + "OptionOnlyForcedSubtitlesHelp": "Doar subtitrarile marcate ca fortat vor fi incarcate.", + "OptionAlwaysPlaySubtitlesHelp": "Subtitrarile care se potrivesc cu preferintele limbii vor fi incarcate indiferent de limba pistei audio.", + "OptionNoSubtitlesHelp": "Subtitrarile nuvor fi incarcate default.", + "TabProfiles": "Profile", + "TabSecurity": "Securitate", + "ButtonAddUser": "Adauga Utilizator", + "ButtonAddLocalUser": "Adauga Utilizator Local", + "ButtonInviteUser": "Invita Utilizator", + "ButtonSave": "Salveaza", + "ButtonResetPassword": "Reseteaza parola", + "LabelNewPassword": "Parola noua:", + "LabelNewPasswordConfirm": "Confirma parola noua:", + "HeaderCreatePassword": "Creeaza parola", + "LabelCurrentPassword": "Parola curenta:", + "LabelMaxParentalRating": "Rating parental maxim permis:", + "MaxParentalRatingHelp": "Continutul cu un rating mare va fi ascuns pentru acest utilizator.", + "LibraryAccessHelp": "Selecteaza dosarele media impartasite cu acest utilizator. Administratorii vor avea posibilitatea sa editeze toate dosarele utilizand managerul de metadate.", + "ChannelAccessHelp": "Selecteaza canalele pe care vrei sa le impartasesti cu acest utilizator. Administratorii vor avea posibilitatea sa editeze canalele folosind managerul de metadate.", + "ButtonDeleteImage": "Sterge Imaginea", + "LabelSelectUsers": "Selectare urilizatori:", + "ButtonUpload": "Incarca", + "HeaderUploadNewImage": "Incarca o imagine noua", + "LabelDropImageHere": "Trage imaginea aici", + "ImageUploadAspectRatioHelp": "Ratie Aspect Recomandat 1:1.Doar fisiere JPG\/PNG.", + "MessageNothingHere": "Nimic aici.", + "MessagePleaseEnsureInternetMetadata": "Va rugam sa va asigurati ca descarcarea metadatelor dupa internet este activata.", + "TabSuggested": "Sugerat", + "TabSuggestions": "Recomandari", + "TabLatest": "Cele mai noi", + "TabUpcoming": "Urmeaza sa apara", + "TabShows": "Seriale", + "TabEpisodes": "Episoade", + "TabGenres": "Genuri", + "TabPeople": "Oameni", + "TabNetworks": "Retele TV", + "HeaderUsers": "Utilizatori", + "HeaderFilters": "Filtre:", + "ButtonFilter": "Filtreaza", + "OptionFavorite": "Favorite", + "OptionLikes": "Like-uri", + "OptionDislikes": "Dislike-uri", + "OptionActors": "Actori", + "OptionGuestStars": "Guest Stars", + "OptionDirectors": "Directori", + "OptionWriters": "Scriitori", + "OptionProducers": "Producatori", + "HeaderResume": "Reluare", + "HeaderNextUp": "Urmeaza", + "NoNextUpItemsMessage": "Nu s-a gasit nimic. Incepe sa urmaresti seriale!", + "HeaderLatestEpisodes": "Cele mai noi Episoade", + "HeaderPersonTypes": "Tipuri Persoane:", + "TabSongs": "Cantece", + "TabAlbums": "Albume", + "TabArtists": "Artisti", + "TabAlbumArtists": "Albume Artisti", + "TabMusicVideos": "Videoclipuri", + "ButtonSort": "Sorteaza", + "HeaderSortBy": "Sorteaza dupa:", + "HeaderSortOrder": "Ordine Sortare:", + "OptionPlayed": "Rulat", + "OptionUnplayed": "Nerulat", + "OptionAscending": "Crescator", + "OptionDescending": "Descrescator", + "OptionRuntime": "Timp Rulare", + "OptionReleaseDate": "Data Aparitie", + "OptionPlayCount": "Contorizari rulari", + "OptionDatePlayed": "Data Rulare", + "OptionDateAdded": "Data Adaugare", + "OptionAlbumArtist": "Album Artist", + "OptionArtist": "Artist", + "OptionAlbum": "Album", + "OptionTrackName": "Nume melodie", + "OptionCommunityRating": "Rating Comunitate", + "OptionNameSort": "Nume", + "OptionFolderSort": "Dosare", + "OptionBudget": "Buget", + "OptionRevenue": "Incasari", + "OptionPoster": "Poster", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "Backdrop", + "OptionTimeline": "Timeline", + "OptionThumb": "Thumb", + "OptionThumbCard": "Thumb card", + "OptionBanner": "Baner", + "OptionCriticRating": "Rating Critic", + "OptionVideoBitrate": "Bitrate Video", + "OptionResumable": "Care poate fi continuat", + "ScheduledTasksHelp": "Da-ti click pe o sarcina pentru a ajusta programarea", + "ScheduledTasksTitle": "Programul de Activitati", + "TabMyPlugins": "Plugin-urile mele", + "TabCatalog": "Catalog", + "TitlePlugins": "Plugin-uri", + "HeaderAutomaticUpdates": "Update Automat", + "HeaderNowPlaying": "Ruleaza Acum", + "HeaderLatestAlbums": "Cele mai noi Albume", + "HeaderLatestSongs": "Cele mai noi Cantece", + "HeaderRecentlyPlayed": "Rulate Recent", + "HeaderFrequentlyPlayed": "Rulate Frecvent", + "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", + "LabelVideoType": "Tipul Video:", + "OptionBluray": "Bluray", + "OptionDvd": "DVD", + "OptionIso": "ISO", + "Option3D": "3D", + "LabelFeatures": "Caracteristici:", + "LabelService": "Service:", + "LabelStatus": "Status:", + "LabelVersion": "Versiune:", + "LabelLastResult": "Ultimul rezultat:", + "OptionHasSubtitles": "Subtitrari", + "OptionHasTrailer": "Trailer", + "OptionHasThemeSong": "Cantec Fundal", + "OptionHasThemeVideo": "Video Fundal", + "TabMovies": "Filme", + "TabStudios": "Studiouri", + "TabTrailers": "Trailere", + "LabelArtists": "Artisti:", + "LabelArtistsHelp": "Folosire separata multipla", + "HeaderLatestMovies": "Cele mai noi Filme", + "HeaderLatestTrailers": "Cele mai noi Trailere", + "OptionHasSpecialFeatures": "Caracteristici Speciale", + "OptionImdbRating": "Rating IMDb", + "OptionParentalRating": "Rating Parental", + "OptionPremiereDate": "Data Premierei", + "TabBasic": "De baza", + "TabAdvanced": "Avansat", + "HeaderStatus": "Status", + "OptionContinuing": "Continua", + "OptionEnded": "S-a sfarsit", + "HeaderAirDays": "Zile difuzare", + "OptionSunday": "Duminica", + "OptionMonday": "Luni", + "OptionTuesday": "Marti", + "OptionWednesday": "Miercuri", + "OptionThursday": "Joi", + "OptionFriday": "Vineri", + "OptionSaturday": "Sambata", + "HeaderManagement": "Management", + "LabelManagement": "Management:", + "OptionMissingImdbId": "Id IMDb lipseste", + "OptionMissingTvdbId": "Id-ul IMDb lipseste", + "OptionMissingOverview": "Lipseste Prezentarea Generala", + "OptionFileMetadataYearMismatch": "Anii Fisierelor\/Metadatelor gresite", + "TabGeneral": "General", + "TitleSupport": "Suport", + "LabelSeasonNumber": "Season number", + "TabLog": "Log", + "LabelEpisodeNumber": "Episode number", + "TabAbout": "Despre", + "TabSupporterKey": "Cheie Suporter", + "TabBecomeSupporter": "Devino Suporter", + "ProjectHasCommunity": "Emby has a thriving community of users and contributors.", + "CheckoutKnowledgeBase": "Emby are o comunitate \u00eenfloritoare de utilizatori \u0219i colaboratori.", + "SearchKnowledgeBase": "C\u0103uta\u021bi \u00een Baza de cuno\u0219tin\u021be", + "VisitTheCommunity": "Vizita\u021bi Comunitatea", + "VisitProjectWebsite": "Vizita\u021bi site-ul Web Emby", + "VisitProjectWebsiteLong": "Vizita\u021bi site-ul Web Emby pentru a prinde cele mai recente \u0219tiri \u0219i a \u021bine pasul cu blog-ul dezvoltator.", + "OptionHideUser": "Ascunde acest utilizator din pagina de autentificare", + "OptionHideUserFromLoginHelp": "Util pentru conturi private sau ascunse de administrator. Utilizatorul va trebui s\u0103 v\u0103 conecta\u021bi manual prin introducerea numelui de utilizator \u0219i parola.", + "OptionDisableUser": "Dezactiva\u021bi acest utilizator", + "OptionDisableUserHelp": "Dac\u0103 este dezactivat, serverul nu va permite nicio conexiune de la acest utilizator. Conexiunile existente vor fi terminate brusc.", + "HeaderAdvancedControl": "Control Avansat", + "LabelName": "Nume:", + "ButtonHelp": "Ajutor", + "OptionAllowUserToManageServer": "Allow this user to manage the server", + "HeaderFeatureAccess": "Feature Access", + "OptionAllowMediaPlayback": "Allow media playback", + "OptionAllowBrowsingLiveTv": "Allow Live TV access", + "OptionAllowDeleteLibraryContent": "Allow media deletion", + "OptionAllowManageLiveTv": "Allow Live TV recording management", + "OptionAllowRemoteControlOthers": "Allow remote control of other users", + "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", + "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", + "HeaderRemoteControl": "Remote Control", + "OptionMissingTmdbId": "Missing Tmdb Id", + "OptionIsHD": "HD", + "OptionIsSD": "SD", + "OptionMetascore": "Metascore", + "ButtonSelect": "Select", + "ButtonGroupVersions": "Group Versions", + "ButtonAddToCollection": "Add to Collection", + "PismoMessage": "Utilizing Pismo File Mount through a donated license.", + "TangibleSoftwareMessage": "Utilizing Tangible Solutions Java\/C# converters through a donated license.", + "HeaderCredits": "Credits", + "PleaseSupportOtherProduces": "Please support other free products we utilize:", + "VersionNumber": "Version {0}", + "TabPaths": "Paths", + "TabServer": "Server", + "TabTranscoding": "Transcoding", + "TitleAdvanced": "Advanced", + "LabelAutomaticUpdateLevel": "Automatic update level", + "OptionRelease": "Official Release", + "OptionBeta": "Beta", + "OptionDev": "Dev (Unstable)", + "LabelAllowServerAutoRestart": "Allow the server to restart automatically to apply updates", + "LabelAllowServerAutoRestartHelp": "The server will only restart during idle periods, when no users are active.", + "LabelEnableDebugLogging": "Enable debug logging", + "LabelRunServerAtStartup": "Run server at startup", + "LabelRunServerAtStartupHelp": "This will start the tray icon on windows startup. To start the windows service, uncheck this and run the service from the windows control panel. Please note that you cannot run both at the same time, so you will need to exit the tray icon before starting the service.", + "ButtonSelectDirectory": "Select Directory", + "LabelCustomPaths": "Specify custom paths where desired. Leave fields empty to use the defaults.", + "LabelCachePath": "Cache path:", + "LabelCachePathHelp": "Specify a custom location for server cache files, such as images.", + "LabelImagesByNamePath": "Images by name path:", + "LabelImagesByNamePathHelp": "Specify a custom location for downloaded actor, genre and studio images.", + "LabelMetadataPath": "Metadata path:", + "LabelMetadataPathHelp": "Specify a custom location for downloaded artwork and metadata, if not saving within media folders.", + "LabelTranscodingTempPath": "Transcoding temporary path:", + "LabelTranscodingTempPathHelp": "This folder contains working files used by the transcoder. Specify a custom path, or leave empty to use the default within the server's data folder.", + "TabBasics": "Basics", + "TabTV": "TV", + "TabGames": "Games", + "TabMusic": "Music", + "TabOthers": "Others", + "HeaderExtractChapterImagesFor": "Extract chapter images for:", + "OptionMovies": "Movies", + "OptionEpisodes": "Episodes", + "OptionOtherVideos": "Other Videos", + "TitleMetadata": "Metadata", + "LabelAutomaticUpdates": "Enable automatic updates", + "LabelAutomaticUpdatesTmdb": "Enable automatic updates from TheMovieDB.org", + "LabelAutomaticUpdatesTvdb": "Enable automatic updates from TheTVDB.com", + "LabelAutomaticUpdatesFanartHelp": "If enabled, new images will be downloaded automatically as they're added to fanart.tv. Existing images will not be replaced.", + "LabelAutomaticUpdatesTmdbHelp": "If enabled, new images will be downloaded automatically as they're added to TheMovieDB.org. Existing images will not be replaced.", + "LabelAutomaticUpdatesTvdbHelp": "If enabled, new images will be downloaded automatically as they're added to TheTVDB.com. Existing images will not be replaced.", + "LabelFanartApiKey": "Personal api key:", + "LabelFanartApiKeyHelp": "Requests to fanart without a personal API key return results that were approved over 7 days ago. With a personal API key that drops to 48 hours and if you are also a fanart VIP member that will further drop to around 10 minutes.", + "ExtractChapterImagesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs when videos are discovered, and also as a nightly scheduled task. The schedule is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelMetadataDownloadLanguage": "Preferred download language:", + "ButtonAutoScroll": "Auto-scroll", + "LabelImageSavingConvention": "Image saving convention:", + "LabelImageSavingConventionHelp": "Emby recognizes images from most major media applications. Choosing your downloading convention is useful if you also use other products.", + "OptionImageSavingCompatible": "Compatible - Emby\/Kodi\/Plex", + "OptionImageSavingStandard": "Standard - MB2", + "ButtonSignIn": "Sign In", + "TitleSignIn": "Sign In", + "HeaderPleaseSignIn": "Please sign in", + "LabelUser": "User:", + "LabelPassword": "Password:", + "ButtonManualLogin": "Manual Login", + "PasswordLocalhostMessage": "Passwords are not required when logging in from localhost.", + "TabGuide": "Guide", + "TabChannels": "Channels", + "TabCollections": "Collections", + "HeaderChannels": "Channels", + "TabRecordings": "Recordings", + "TabScheduled": "Scheduled", + "TabSeries": "Series", + "TabFavorites": "Favorites", + "TabMyLibrary": "My Library", + "ButtonCancelRecording": "Cancel Recording", + "HeaderPrePostPadding": "Pre\/Post Padding", + "LabelPrePaddingMinutes": "Pre-padding minutes:", + "OptionPrePaddingRequired": "Pre-padding is required in order to record.", + "LabelPostPaddingMinutes": "Post-padding minutes:", + "OptionPostPaddingRequired": "Post-padding is required in order to record.", + "HeaderWhatsOnTV": "What's On", + "HeaderUpcomingTV": "Upcoming TV", + "TabStatus": "Status", + "TabSettings": "Settings", + "ButtonRefreshGuideData": "Refresh Guide Data", + "ButtonRefresh": "Refresh", + "ButtonAdvancedRefresh": "Advanced Refresh", + "OptionPriority": "Priority", + "OptionRecordOnAllChannels": "Record on all channels", + "OptionRecordAnytime": "Record at any time", + "OptionRecordOnlyNewEpisodes": "Record only new episodes", + "HeaderRepeatingOptions": "Repeating Options", + "HeaderDays": "Days", + "HeaderActiveRecordings": "Active Recordings", + "HeaderLatestRecordings": "Latest Recordings", + "HeaderAllRecordings": "All Recordings", + "ButtonPlay": "Play", + "ButtonEdit": "Edit", + "ButtonRecord": "Record", + "ButtonDelete": "Delete", + "ButtonRemove": "Remove", + "OptionRecordSeries": "Record Series", + "HeaderDetails": "Details", + "TitleLiveTV": "Live TV", + "LabelNumberOfGuideDays": "Number of days of guide data to download:", + "LabelNumberOfGuideDaysHelp": "Downloading more days worth of guide data provides the ability to schedule out further in advance and view more listings, but it will also take longer to download. Auto will choose based on the number of channels.", + "OptionAutomatic": "Auto", + "HeaderServices": "Services", + "LiveTvPluginRequired": "A Live TV service provider plugin is required in order to continue.", + "LiveTvPluginRequiredHelp": "Please install one of our available plugins, such as Next Pvr or ServerWmc.", + "LabelCustomizeOptionsPerMediaType": "Customize for media type:", + "OptionDownloadThumbImage": "Thumb", + "OptionDownloadMenuImage": "Menu", + "OptionDownloadLogoImage": "Logo", + "OptionDownloadBoxImage": "Box", + "OptionDownloadDiscImage": "Disc", + "OptionDownloadBannerImage": "Banner", + "OptionDownloadBackImage": "Back", + "OptionDownloadArtImage": "Art", + "OptionDownloadPrimaryImage": "Primary", + "HeaderFetchImages": "Fetch Images:", + "HeaderImageSettings": "Image Settings", + "TabOther": "Other", + "LabelMaxBackdropsPerItem": "Maximum number of backdrops per item:", + "LabelMaxScreenshotsPerItem": "Maximum number of screenshots per item:", + "LabelMinBackdropDownloadWidth": "Minimum backdrop download width:", + "LabelMinScreenshotDownloadWidth": "Minimum screenshot download width:", + "ButtonAddScheduledTaskTrigger": "Add Trigger", + "HeaderAddScheduledTaskTrigger": "Add Trigger", + "ButtonAdd": "Add", + "LabelTriggerType": "Trigger Type:", + "OptionDaily": "Daily", + "OptionWeekly": "Weekly", + "OptionOnInterval": "On an interval", + "OptionOnAppStartup": "On application startup", + "OptionAfterSystemEvent": "After a system event", + "LabelDay": "Day:", + "LabelTime": "Time:", + "LabelEvent": "Event:", + "OptionWakeFromSleep": "Wake from sleep", + "LabelEveryXMinutes": "Every:", + "HeaderTvTuners": "Tuners", + "HeaderGallery": "Gallery", + "HeaderLatestGames": "Latest Games", + "HeaderRecentlyPlayedGames": "Recently Played Games", + "TabGameSystems": "Game Systems", + "TitleMediaLibrary": "Media Library", + "TabFolders": "Folders", + "TabPathSubstitution": "Path Substitution", + "LabelSeasonZeroDisplayName": "Season 0 display name:", + "LabelEnableRealtimeMonitor": "Enable real time monitoring", + "LabelEnableRealtimeMonitorHelp": "Changes will be processed immediately, on supported file systems.", + "ButtonScanLibrary": "Scan Library", + "HeaderNumberOfPlayers": "Players:", + "OptionAnyNumberOfPlayers": "Any", + "Option1Player": "1+", + "Option2Player": "2+", + "Option3Player": "3+", + "Option4Player": "4+", + "HeaderMediaFolders": "Media Folders", + "HeaderThemeVideos": "Theme Videos", + "HeaderThemeSongs": "Theme Songs", + "HeaderScenes": "Scenes", + "HeaderAwardsAndReviews": "Awards and Reviews", + "HeaderSoundtracks": "Soundtracks", + "HeaderMusicVideos": "Music Videos", + "HeaderSpecialFeatures": "Special Features", + "HeaderCastCrew": "Cast & Crew", + "HeaderAdditionalParts": "Additional Parts", + "ButtonSplitVersionsApart": "Split Versions Apart", + "ButtonPlayTrailer": "Trailer", + "LabelMissing": "Missing", + "LabelOffline": "Offline", + "PathSubstitutionHelp": "Path substitutions are used for mapping a path on the server to a path that clients are able to access. By allowing clients direct access to media on the server they may be able to play them directly over the network and avoid using server resources to stream and transcode them.", + "HeaderFrom": "From", + "HeaderTo": "To", + "LabelFrom": "From:", + "LabelFromHelp": "Example: D:\\Movies (on the server)", + "LabelTo": "To:", + "LabelToHelp": "Example: \\\\MyServer\\Movies (a path clients can access)", + "ButtonAddPathSubstitution": "Add Substitution", + "OptionSpecialEpisode": "Specials", + "OptionMissingEpisode": "Missing Episodes", + "OptionUnairedEpisode": "Unaired Episodes", + "OptionEpisodeSortName": "Episode Sort Name", + "OptionSeriesSortName": "Series Name", + "OptionTvdbRating": "Tvdb Rating", + "HeaderTranscodingQualityPreference": "Transcoding Quality Preference:", + "OptionAutomaticTranscodingHelp": "The server will decide quality and speed", + "OptionHighSpeedTranscodingHelp": "Lower quality, but faster encoding", + "OptionHighQualityTranscodingHelp": "Higher quality, but slower encoding", + "OptionMaxQualityTranscodingHelp": "Best quality with slower encoding and high CPU usage", + "OptionHighSpeedTranscoding": "Higher speed", + "OptionHighQualityTranscoding": "Higher quality", + "OptionMaxQualityTranscoding": "Max quality", + "OptionEnableDebugTranscodingLogging": "Enable debug transcoding logging", + "OptionEnableDebugTranscodingLoggingHelp": "This will create very large log files and is only recommended as needed for troubleshooting purposes.", + "EditCollectionItemsHelp": "Add or remove any movies, series, albums, books or games you wish to group within this collection.", + "HeaderAddTitles": "Add Titles", + "LabelEnableDlnaPlayTo": "Enable DLNA Play To", + "LabelEnableDlnaPlayToHelp": "Emby can detect devices within your network and offer the ability to remote control them.", + "LabelEnableDlnaDebugLogging": "Enable DLNA debug logging", + "LabelEnableDlnaDebugLoggingHelp": "This will create large log files and should only be used as needed for troubleshooting purposes.", + "LabelEnableDlnaClientDiscoveryInterval": "Client discovery interval (seconds)", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determines the duration in seconds between SSDP searches performed by Emby.", + "HeaderCustomDlnaProfiles": "Custom Profiles", + "HeaderSystemDlnaProfiles": "System Profiles", + "CustomDlnaProfilesHelp": "Create a custom profile to target a new device or override a system profile.", + "SystemDlnaProfilesHelp": "System profiles are read-only. Changes to a system profile will be saved to a new custom profile.", + "TitleDashboard": "Dashboard", + "TabHome": "Home", + "TabInfo": "Info", + "HeaderLinks": "Links", + "HeaderSystemPaths": "System Paths", + "LinkCommunity": "Community", + "LinkGithub": "Github", + "LinkApi": "Api", + "LinkApiDocumentation": "Api Documentation", + "LabelFriendlyServerName": "Friendly server name:", + "LabelFriendlyServerNameHelp": "This name will be used to identify this server. If left blank, the computer name will be used.", + "LabelPreferredDisplayLanguage": "Preferred display language:", + "LabelPreferredDisplayLanguageHelp": "Translating Emby is an ongoing project and is not yet complete.", + "LabelReadHowYouCanContribute": "Read about how you can contribute.", + "HeaderNewCollection": "New Collection", + "ButtonSubmit": "Submit", + "ButtonCreate": "Create", + "LabelCustomCss": "Custom css:", + "LabelCustomCssHelp": "Apply your own custom css to the web interface.", + "LabelLocalHttpServerPortNumber": "Local http port number:", + "LabelLocalHttpServerPortNumberHelp": "The tcp port number that Emby's http server should bind to.", + "LabelPublicHttpPort": "Public http port number:", + "LabelPublicHttpPortHelp": "The public port number that should be mapped to the local http port.", + "LabelPublicHttpsPort": "Public https port number:", + "LabelPublicHttpsPortHelp": "The public port number that should be mapped to the local https port.", + "LabelEnableHttps": "Report https as external address", + "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", + "LabelHttpsPort": "Local https port number:", + "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", + "LabelWebSocketPortNumber": "Web socket port number:", + "LabelEnableAutomaticPortMap": "Enable automatic port mapping", + "LabelEnableAutomaticPortMapHelp": "Attempt to automatically map the public port to the local port via UPnP. This may not work with some router models.", + "LabelExternalDDNS": "External WAN Address:", + "LabelExternalDDNSHelp": "If you have a dynamic DNS enter it here. Emby apps will use it when connecting remotely. Leave empty for automatic detection.", + "TabResume": "Resume", + "TabWeather": "Weather", + "TitleAppSettings": "App Settings", + "LabelMinResumePercentage": "Min resume percentage:", + "LabelMaxResumePercentage": "Max resume percentage:", + "LabelMinResumeDuration": "Min resume duration (seconds):", + "LabelMinResumePercentageHelp": "Titles are assumed unplayed if stopped before this time", + "LabelMaxResumePercentageHelp": "Titles are assumed fully played if stopped after this time", + "LabelMinResumeDurationHelp": "Titles shorter than this will not be resumable", + "TitleAutoOrganize": "Auto-Organize", + "TabActivityLog": "Activity Log", + "HeaderName": "Name", + "HeaderDate": "Date", + "HeaderSource": "Source", + "HeaderDestination": "Destination", + "HeaderProgram": "Program", + "HeaderClients": "Clients", + "LabelCompleted": "Completed", + "LabelFailed": "Failed", + "LabelSkipped": "Skipped", + "HeaderEpisodeOrganization": "Episode Organization", + "LabelSeries": "Series:", + "LabelEndingEpisodeNumber": "Ending episode number:", + "LabelEndingEpisodeNumberHelp": "Only required for multi-episode files", + "HeaderSupportTheTeam": "Support the Emby Team", + "LabelSupportAmount": "Amount (USD)", + "HeaderSupportTheTeamHelp": "Help ensure the continued development of this project by donating. A portion of all donations will be contributed to other free tools we depend on.", + "ButtonEnterSupporterKey": "Enter supporter key", + "DonationNextStep": "Once complete, please return and enter your supporter key, which you will receive by email.", + "AutoOrganizeHelp": "Auto-organize monitors your download folders for new files and moves them to your media directories.", + "AutoOrganizeTvHelp": "TV file organizing will only add episodes to existing series. It will not create new series folders.", + "OptionEnableEpisodeOrganization": "Enable new episode organization", + "LabelWatchFolder": "Watch folder:", + "LabelWatchFolderHelp": "The server will poll this folder during the 'Organize new media files' scheduled task.", + "ButtonViewScheduledTasks": "View scheduled tasks", + "LabelMinFileSizeForOrganize": "Minimum file size (MB):", + "LabelMinFileSizeForOrganizeHelp": "Files under this size will be ignored.", + "LabelSeasonFolderPattern": "Season folder pattern:", + "LabelSeasonZeroFolderName": "Season zero folder name:", + "HeaderEpisodeFilePattern": "Episode file pattern", + "LabelEpisodePattern": "Episode pattern:", + "LabelMultiEpisodePattern": "Multi-Episode pattern:", + "HeaderSupportedPatterns": "Supported Patterns", + "HeaderTerm": "Term", + "HeaderPattern": "Pattern", + "HeaderResult": "Result", + "LabelDeleteEmptyFolders": "Delete empty folders after organizing", + "LabelDeleteEmptyFoldersHelp": "Enable this to keep the download directory clean.", + "LabelDeleteLeftOverFiles": "Delete left over files with the following extensions:", + "LabelDeleteLeftOverFilesHelp": "Separate with ;. For example: .nfo;.txt", + "OptionOverwriteExistingEpisodes": "Overwrite existing episodes", + "LabelTransferMethod": "Transfer method", + "OptionCopy": "Copy", + "OptionMove": "Move", + "LabelTransferMethodHelp": "Copy or move files from the watch folder", + "HeaderLatestNews": "Latest News", + "HeaderHelpImproveProject": "Help Improve Emby", + "HeaderRunningTasks": "Running Tasks", + "HeaderActiveDevices": "Active Devices", + "HeaderPendingInstallations": "Pending Installations", + "HeaderServerInformation": "Server Information", + "ButtonRestartNow": "Restart Now", + "ButtonRestart": "Restart", + "ButtonShutdown": "Shutdown", + "ButtonUpdateNow": "Update Now", + "TabHosting": "Hosting", + "PleaseUpdateManually": "Please shutdown the server and update manually.", + "NewServerVersionAvailable": "A new version of Emby Server is available!", + "ServerUpToDate": "Emby Server is up to date", + "LabelComponentsUpdated": "The following components have been installed or updated:", + "MessagePleaseRestartServerToFinishUpdating": "Please restart the server to finish applying updates.", + "LabelDownMixAudioScale": "Audio boost when downmixing:", + "LabelDownMixAudioScaleHelp": "Boost audio when downmixing. Set to 1 to preserve original volume value.", + "ButtonLinkKeys": "Transfer Key", + "LabelOldSupporterKey": "Old supporter key", + "LabelNewSupporterKey": "New supporter key", + "HeaderMultipleKeyLinking": "Transfer to New Key", + "MultipleKeyLinkingHelp": "If you received a new supporter key, use this form to transfer the old key's registrations to your new one.", + "LabelCurrentEmailAddress": "Current email address", + "LabelCurrentEmailAddressHelp": "The current email address to which your new key was sent.", + "HeaderForgotKey": "Forgot Key", + "LabelEmailAddress": "Email address", + "LabelSupporterEmailAddress": "The email address that was used to purchase the key.", + "ButtonRetrieveKey": "Retrieve Key", + "LabelSupporterKey": "Supporter Key (paste from email)", + "LabelSupporterKeyHelp": "Enter your supporter key to start enjoying additional benefits the community has developed for Emby.", + "MessageInvalidKey": "Supporter key is missing or invalid.", + "ErrorMessageInvalidKey": "In order for any premium content to be registered, you must also be an Emby Supporter. Please donate and support the continued development of the core product. Thank you.", + "HeaderDisplaySettings": "Display Settings", + "TabPlayTo": "Play To", + "LabelEnableDlnaServer": "Enable Dlna server", + "LabelEnableDlnaServerHelp": "Allows UPnP devices on your network to browse and play Emby content.", + "LabelEnableBlastAliveMessages": "Blast alive messages", + "LabelEnableBlastAliveMessagesHelp": "Enable this if the server is not detected reliably by other UPnP devices on your network.", + "LabelBlastMessageInterval": "Alive message interval (seconds)", + "LabelBlastMessageIntervalHelp": "Determines the duration in seconds between server alive messages.", + "LabelDefaultUser": "Default user:", + "LabelDefaultUserHelp": "Determines which user library should be displayed on connected devices. This can be overridden for each device using profiles.", + "TitleDlna": "DLNA", + "TitleChannels": "Channels", + "HeaderServerSettings": "Server Settings", + "LabelWeatherDisplayLocation": "Weather display location:", + "LabelWeatherDisplayLocationHelp": "US zip code \/ City, State, Country \/ City, Country", + "LabelWeatherDisplayUnit": "Weather display unit:", + "OptionCelsius": "Celsius", + "OptionFahrenheit": "Fahrenheit", + "HeaderRequireManualLogin": "Require manual username entry for:", + "HeaderRequireManualLoginHelp": "When disabled clients may present a login screen with a visual selection of users.", + "OptionOtherApps": "Other apps", + "OptionMobileApps": "Mobile apps", + "HeaderNotificationList": "Click on a notification to configure it's sending options.", + "NotificationOptionApplicationUpdateAvailable": "Application update available", + "NotificationOptionApplicationUpdateInstalled": "Application update installed", + "NotificationOptionPluginUpdateInstalled": "Plugin update installed", + "NotificationOptionPluginInstalled": "Plugin installed", + "NotificationOptionPluginUninstalled": "Plugin uninstalled", + "NotificationOptionVideoPlayback": "Video playback started", + "NotificationOptionAudioPlayback": "Audio playback started", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionVideoPlaybackStopped": "Video playback stopped", + "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionTaskFailed": "Scheduled task failure", + "NotificationOptionInstallationFailed": "Installation failure", + "NotificationOptionNewLibraryContent": "New content added", + "NotificationOptionNewLibraryContentMultiple": "New content added (multiple)", + "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionUserLockedOut": "User locked out", + "HeaderSendNotificationHelp": "By default, notifications are delivered to your dashboard inbox. Browse the plugin catalog to install additional notification options.", + "NotificationOptionServerRestartRequired": "Server restart required", + "LabelNotificationEnabled": "Enable this notification", + "LabelMonitorUsers": "Monitor activity from:", + "LabelSendNotificationToUsers": "Send the notification to:", + "LabelUseNotificationServices": "Use the following services:", + "CategoryUser": "User", + "CategorySystem": "System", + "CategoryApplication": "Application", + "CategoryPlugin": "Plugin", + "LabelMessageTitle": "Message title:", + "LabelAvailableTokens": "Available tokens:", + "AdditionalNotificationServices": "Browse the plugin catalog to install additional notification services.", + "OptionAllUsers": "All users", + "OptionAdminUsers": "Administrators", + "OptionCustomUsers": "Custom", + "ButtonArrowUp": "Up", + "ButtonArrowDown": "Down", + "ButtonArrowLeft": "Left", + "ButtonArrowRight": "Right", + "ButtonBack": "Back", + "ButtonInfo": "Info", + "ButtonOsd": "On screen display", + "ButtonPageUp": "Page Up", + "ButtonPageDown": "Page Down", + "PageAbbreviation": "PG", + "ButtonHome": "Home", + "ButtonSearch": "Search", + "ButtonSettings": "Settings", + "ButtonTakeScreenshot": "Capture Screenshot", + "ButtonLetterUp": "Letter Up", + "ButtonLetterDown": "Letter Down", + "PageButtonAbbreviation": "PG", + "LetterButtonAbbreviation": "A", + "TabNowPlaying": "Now Playing", + "TabNavigation": "Navigation", + "TabControls": "Controls", + "ButtonFullscreen": "Toggle fullscreen", + "ButtonScenes": "Scenes", + "ButtonSubtitles": "Subtitles", + "ButtonAudioTracks": "Audio tracks", + "ButtonPreviousTrack": "Previous track", + "ButtonNextTrack": "Next track", + "ButtonStop": "Stop", + "ButtonPause": "Pause", + "ButtonNext": "Next", + "ButtonPrevious": "Previous", + "LabelGroupMoviesIntoCollections": "Group movies into collections", + "LabelGroupMoviesIntoCollectionsHelp": "When displaying movie lists, movies belonging to a collection will be displayed as one grouped item.", + "NotificationOptionPluginError": "Plugin failure", + "ButtonVolumeUp": "Volume up", + "ButtonVolumeDown": "Volume down", + "ButtonMute": "Mute", + "HeaderLatestMedia": "Latest Media", + "OptionSpecialFeatures": "Special Features", + "HeaderCollections": "Collections", + "LabelProfileCodecsHelp": "Separated by comma. This can be left empty to apply to all codecs.", + "LabelProfileContainersHelp": "Separated by comma. This can be left empty to apply to all containers.", + "HeaderResponseProfile": "Response Profile", + "LabelType": "Type:", + "LabelPersonRole": "Role:", + "LabelPersonRoleHelp": "Role is generally only applicable to actors.", + "LabelProfileContainer": "Container:", + "LabelProfileVideoCodecs": "Video codecs:", + "LabelProfileAudioCodecs": "Audio codecs:", + "LabelProfileCodecs": "Codecs:", + "HeaderDirectPlayProfile": "Direct Play Profile", + "HeaderTranscodingProfile": "Transcoding Profile", + "HeaderCodecProfile": "Codec Profile", + "HeaderCodecProfileHelp": "Codec profiles indicate the limitations of a device when playing specific codecs. If a limitation applies then the media will be transcoded, even if the codec is configured for direct play.", + "HeaderContainerProfile": "Container Profile", + "HeaderContainerProfileHelp": "Container profiles indicate the limitations of a device when playing specific formats. If a limitation applies then the media will be transcoded, even if the format is configured for direct play.", + "OptionProfileVideo": "Video", + "OptionProfileAudio": "Audio", + "OptionProfileVideoAudio": "Video Audio", + "OptionProfilePhoto": "Photo", + "LabelUserLibrary": "User library:", + "LabelUserLibraryHelp": "Select which user library to display to the device. Leave empty to inherit the default setting.", + "OptionPlainStorageFolders": "Display all folders as plain storage folders", + "OptionPlainStorageFoldersHelp": "If enabled, all folders are represented in DIDL as \"object.container.storageFolder\" instead of a more specific type, such as \"object.container.person.musicArtist\".", + "OptionPlainVideoItems": "Display all videos as plain video items", + "OptionPlainVideoItemsHelp": "If enabled, all videos are represented in DIDL as \"object.item.videoItem\" instead of a more specific type, such as \"object.item.videoItem.movie\".", + "LabelSupportedMediaTypes": "Supported Media Types:", + "TabIdentification": "Identification", + "HeaderIdentification": "Identification", + "TabDirectPlay": "Direct Play", + "TabContainers": "Containers", + "TabCodecs": "Codecs", + "TabResponses": "Responses", + "HeaderProfileInformation": "Profile Information", + "LabelEmbedAlbumArtDidl": "Embed album art in Didl", + "LabelEmbedAlbumArtDidlHelp": "Some devices prefer this method for obtaining album art. Others may fail to play with this option enabled.", + "LabelAlbumArtPN": "Album art PN:", + "LabelAlbumArtHelp": "PN used for album art, within the dlna:profileID attribute on upnp:albumArtURI. Some clients require a specific value, regardless of the size of the image.", + "LabelAlbumArtMaxWidth": "Album art max width:", + "LabelAlbumArtMaxWidthHelp": "Max resolution of album art exposed via upnp:albumArtURI.", + "LabelAlbumArtMaxHeight": "Album art max height:", + "LabelAlbumArtMaxHeightHelp": "Max resolution of album art exposed via upnp:albumArtURI.", + "LabelIconMaxWidth": "Icon max width:", + "LabelIconMaxWidthHelp": "Max resolution of icons exposed via upnp:icon.", + "LabelIconMaxHeight": "Icon max height:", + "LabelIconMaxHeightHelp": "Max resolution of icons exposed via upnp:icon.", + "LabelIdentificationFieldHelp": "A case-insensitive substring or regex expression.", + "HeaderProfileServerSettingsHelp": "These values control how Emby Server will present itself to the device.", + "LabelMaxBitrate": "Max bitrate:", + "LabelMaxBitrateHelp": "Specify a max bitrate in bandwidth constrained environments, or if the device imposes it's own limit.", + "LabelMaxStreamingBitrate": "Max streaming bitrate:", + "LabelMaxStreamingBitrateHelp": "Specify a max bitrate when streaming.", + "LabelMaxChromecastBitrate": "Max Chromecast bitrate:", + "LabelMaxStaticBitrate": "Max sync bitrate:", + "LabelMaxStaticBitrateHelp": "Specify a max bitrate when syncing content at high quality.", + "LabelMusicStaticBitrate": "Music sync bitrate:", + "LabelMusicStaticBitrateHelp": "Specify a max bitrate when syncing music", + "LabelMusicStreamingTranscodingBitrate": "Music transcoding bitrate:", + "LabelMusicStreamingTranscodingBitrateHelp": "Specify a max bitrate when streaming music", + "OptionIgnoreTranscodeByteRangeRequests": "Ignore transcode byte range requests", + "OptionIgnoreTranscodeByteRangeRequestsHelp": "If enabled, these requests will be honored but will ignore the byte range header.", + "LabelFriendlyName": "Friendly name", + "LabelManufacturer": "Manufacturer", + "LabelManufacturerUrl": "Manufacturer url", + "LabelModelName": "Model name", + "LabelModelNumber": "Model number", + "LabelModelDescription": "Model description", + "LabelModelUrl": "Model url", + "LabelSerialNumber": "Serial number", + "LabelDeviceDescription": "Device description", + "HeaderIdentificationCriteriaHelp": "Enter at least one identification criteria.", + "HeaderDirectPlayProfileHelp": "Add direct play profiles to indicate which formats the device can handle natively.", + "HeaderTranscodingProfileHelp": "Add transcoding profiles to indicate which formats should be used when transcoding is required.", + "HeaderResponseProfileHelp": "Response profiles provide a way to customize information sent to the device when playing certain kinds of media.", + "LabelXDlnaCap": "X-Dlna cap:", + "LabelXDlnaCapHelp": "Determines the content of the X_DLNACAP element in the urn:schemas-dlna-org:device-1-0 namespace.", + "LabelXDlnaDoc": "X-Dlna doc:", + "LabelXDlnaDocHelp": "Determines the content of the X_DLNADOC element in the urn:schemas-dlna-org:device-1-0 namespace.", + "LabelSonyAggregationFlags": "Sony aggregation flags:", + "LabelSonyAggregationFlagsHelp": "Determines the content of the aggregationFlags element in the urn:schemas-sonycom:av namespace.", + "LabelTranscodingContainer": "Container:", + "LabelTranscodingVideoCodec": "Video codec:", + "LabelTranscodingVideoProfile": "Video profile:", + "LabelTranscodingAudioCodec": "Audio codec:", + "OptionEnableM2tsMode": "Enable M2ts mode", + "OptionEnableM2tsModeHelp": "Enable m2ts mode when encoding to mpegts.", + "OptionEstimateContentLength": "Estimate content length when transcoding", + "OptionReportByteRangeSeekingWhenTranscoding": "Report that the server supports byte seeking when transcoding", + "OptionReportByteRangeSeekingWhenTranscodingHelp": "This is required for some devices that don't time seek very well.", + "HeaderSubtitleDownloadingHelp": "When Emby scans your video files it can search for missing subtitles, and download them using a subtitle provider such as OpenSubtitles.org.", + "HeaderDownloadSubtitlesFor": "Download subtitles for:", + "MessageNoChapterProviders": "Install a chapter provider plugin such as ChapterDb to enable additional chapter options.", + "LabelSkipIfGraphicalSubsPresent": "Skip if the video already contains graphical subtitles", + "LabelSkipIfGraphicalSubsPresentHelp": "Keeping text versions of subtitles will result in more efficient delivery and decrease the likelihood of video transcoding.", + "TabSubtitles": "Subtitles", + "TabChapters": "Chapters", + "HeaderDownloadChaptersFor": "Download chapter names for:", + "LabelOpenSubtitlesUsername": "Open Subtitles username:", + "LabelOpenSubtitlesPassword": "Open Subtitles password:", + "HeaderChapterDownloadingHelp": "When Emby scans your video files it can download friendly chapter names from the internet using chapter plugins such as ChapterDb.", + "LabelPlayDefaultAudioTrack": "Play default audio track regardless of language", + "LabelSubtitlePlaybackMode": "Subtitle mode:", + "LabelDownloadLanguages": "Download languages:", + "ButtonRegister": "Register", + "LabelSkipIfAudioTrackPresent": "Skip if the default audio track matches the download language", + "LabelSkipIfAudioTrackPresentHelp": "Uncheck this to ensure all videos have subtitles, regardless of audio language.", + "HeaderSendMessage": "Send Message", + "ButtonSend": "Send", + "LabelMessageText": "Message text:", + "MessageNoAvailablePlugins": "No available plugins.", + "LabelDisplayPluginsFor": "Display plugins for:", + "PluginTabAppClassic": "Emby Classic", + "PluginTabAppTheater": "Emby Theater", + "LabelEpisodeNamePlain": "Episode name", + "LabelSeriesNamePlain": "Series name", + "ValueSeriesNamePeriod": "Series.name", + "ValueSeriesNameUnderscore": "Series_name", + "ValueEpisodeNamePeriod": "Episode.name", + "ValueEpisodeNameUnderscore": "Episode_name", + "LabelSeasonNumberPlain": "Season number", + "LabelEpisodeNumberPlain": "Episode number", + "LabelEndingEpisodeNumberPlain": "Ending episode number", + "HeaderTypeText": "Enter Text", + "LabelTypeText": "Text", + "HeaderSearchForSubtitles": "Search for Subtitles", + "ButtonMore": "More", + "MessageNoSubtitleSearchResultsFound": "No search results founds.", + "TabDisplay": "Display", + "TabLanguages": "Languages", + "TabAppSettings": "App Settings", + "LabelEnableThemeSongs": "Enable theme songs", + "LabelEnableBackdrops": "Enable backdrops", + "LabelEnableThemeSongsHelp": "If enabled, theme songs will be played in the background while browsing the library.", + "LabelEnableBackdropsHelp": "If enabled, backdrops will be displayed in the background of some pages while browsing the library.", + "HeaderHomePage": "Home Page", + "HeaderSettingsForThisDevice": "Settings for This Device", + "OptionAuto": "Auto", + "OptionYes": "Yes", + "OptionNo": "No", + "HeaderOptions": "Options", + "HeaderIdentificationResult": "Identification Result", + "LabelHomePageSection1": "Home page section 1:", + "LabelHomePageSection2": "Home page section 2:", + "LabelHomePageSection3": "Home page section 3:", + "LabelHomePageSection4": "Home page section 4:", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", + "OptionResumablemedia": "Resume", + "OptionLatestMedia": "Latest media", + "OptionLatestChannelMedia": "Latest channel items", + "HeaderLatestChannelItems": "Latest Channel Items", + "OptionNone": "None", + "HeaderLiveTv": "Live TV", + "HeaderReports": "Reports", + "HeaderMetadataManager": "Metadata Manager", + "HeaderSettings": "Settings", + "MessageLoadingChannels": "Loading channel content...", + "MessageLoadingContent": "Loading content...", + "ButtonMarkRead": "Mark Read", + "OptionDefaultSort": "Default", + "OptionCommunityMostWatchedSort": "Most Watched", + "TabNextUp": "Next Up", + "PlaceholderUsername": "Username", + "HeaderBecomeProjectSupporter": "Become an Emby Supporter", + "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", + "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", + "MessageNoPlaylistsAvailable": "Playlists allow you to create lists of content to play consecutively at a time. To add items to playlists, right click or tap and hold, then select Add to Playlist.", + "MessageNoPlaylistItemsAvailable": "This playlist is currently empty.", + "ButtonDismiss": "Dismiss", + "ButtonEditOtherUserPreferences": "Edit this user's profile, image and personal preferences.", + "LabelChannelStreamQuality": "Preferred internet stream quality:", + "LabelChannelStreamQualityHelp": "In a low bandwidth environment, limiting quality can help ensure a smooth streaming experience.", + "OptionBestAvailableStreamQuality": "Best available", + "LabelEnableChannelContentDownloadingFor": "Enable channel content downloading for:", + "LabelEnableChannelContentDownloadingForHelp": "Some channels support downloading content prior to viewing. Enable this in low bandwidth enviornments to download channel content during off hours. Content is downloaded as part of the channel download scheduled task.", + "LabelChannelDownloadPath": "Channel content download path:", + "LabelChannelDownloadPathHelp": "Specify a custom download path if desired. Leave empty to download to an internal program data folder.", + "LabelChannelDownloadAge": "Delete content after: (days)", + "LabelChannelDownloadAgeHelp": "Downloaded content older than this will be deleted. It will remain playable via internet streaming.", + "ChannelSettingsFormHelp": "Install channels such as Trailers and Vimeo in the plugin catalog.", + "ButtonOptions": "Options", + "ViewTypePlaylists": "Playlists", + "ViewTypeMovies": "Movies", + "ViewTypeTvShows": "TV", + "ViewTypeGames": "Games", + "ViewTypeMusic": "Music", + "ViewTypeMusicGenres": "Genres", + "ViewTypeMusicArtists": "Artists", + "ViewTypeBoxSets": "Collections", + "ViewTypeChannels": "Channels", + "ViewTypeLiveTV": "Live TV", + "ViewTypeLiveTvNowPlaying": "Now Airing", + "ViewTypeLatestGames": "Latest Games", + "ViewTypeRecentlyPlayedGames": "Recently Played", + "ViewTypeGameFavorites": "Favorites", + "ViewTypeGameSystems": "Game Systems", + "ViewTypeGameGenres": "Genres", + "ViewTypeTvResume": "Resume", + "ViewTypeTvNextUp": "Next Up", + "ViewTypeTvLatest": "Latest", + "ViewTypeTvShowSeries": "Series", + "ViewTypeTvGenres": "Genres", + "ViewTypeTvFavoriteSeries": "Favorite Series", + "ViewTypeTvFavoriteEpisodes": "Favorite Episodes", + "ViewTypeMovieResume": "Resume", + "ViewTypeMovieLatest": "Latest", + "ViewTypeMovieMovies": "Movies", + "ViewTypeMovieCollections": "Collections", + "ViewTypeMovieFavorites": "Favorites", + "ViewTypeMovieGenres": "Genres", + "ViewTypeMusicLatest": "Latest", + "ViewTypeMusicPlaylists": "Playlists", + "ViewTypeMusicAlbums": "Albums", + "ViewTypeMusicAlbumArtists": "Album Artists", + "HeaderOtherDisplaySettings": "Display Settings", + "ViewTypeMusicSongs": "Songs", + "ViewTypeMusicFavorites": "Favorites", + "ViewTypeMusicFavoriteAlbums": "Favorite Albums", + "ViewTypeMusicFavoriteArtists": "Favorite Artists", + "ViewTypeMusicFavoriteSongs": "Favorite Songs", + "HeaderMyViews": "My Views", + "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", + "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", + "OptionDisplayAdultContent": "Display adult content", + "OptionLibraryFolders": "Media folders", + "TitleRemoteControl": "Remote Control", + "OptionLatestTvRecordings": "Latest recordings", + "LabelProtocolInfo": "Protocol info:", + "LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.", + "TabNfo": "Nfo", + "HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Advanced tab to configure options for your media types.", + "LabelKodiMetadataUser": "Sync user watch data to nfo's for:", + "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.", + "LabelKodiMetadataDateFormat": "Release date format:", + "LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.", + "LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files", + "LabelKodiMetadataSaveImagePathsHelp": "This is recommended if you have image file names that don't conform to Kodi guidelines.", + "LabelKodiMetadataEnablePathSubstitution": "Enable path substitution", + "LabelKodiMetadataEnablePathSubstitutionHelp": "Enables path substitution of image paths using the server's path substitution settings.", + "LabelKodiMetadataEnablePathSubstitutionHelp2": "See path substitution.", + "LabelGroupChannelsIntoViews": "Display the following channels directly within my views:", + "LabelGroupChannelsIntoViewsHelp": "If enabled, these channels will be displayed directly alongside other views. If disabled, they'll be displayed within a separate Channels view.", + "LabelDisplayCollectionsView": "Display a collections view to show movie collections", + "LabelDisplayCollectionsViewHelp": "This will create a separate view to display collections that you've created or have access to. To create a collection, right-click or tap-hold any movie and select 'Add to Collection'. ", + "LabelKodiMetadataEnableExtraThumbs": "Copy extrafanart into extrathumbs", + "LabelKodiMetadataEnableExtraThumbsHelp": "When downloading images they can be saved into both extrafanart and extrathumbs for maximum Kodi skin compatibility.", + "TabServices": "Services", + "TabLogs": "Logs", + "HeaderServerLogFiles": "Server log files:", + "TabBranding": "Branding", + "HeaderBrandingHelp": "Customize the appearance of Emby to fit the needs of your group or organization.", + "LabelLoginDisclaimer": "Login disclaimer:", + "LabelLoginDisclaimerHelp": "This will be displayed at the bottom of the login page.", + "LabelAutomaticallyDonate": "Automatically donate this amount every month", + "LabelAutomaticallyDonateHelp": "You can cancel at any time via your PayPal account.", + "OptionList": "List", + "TabDashboard": "Dashboard", + "TitleServer": "Server", + "LabelCache": "Cache:", + "LabelLogs": "Logs:", + "LabelMetadata": "Metadata:", + "LabelImagesByName": "Images by name:", + "LabelTranscodingTemporaryFiles": "Transcoding temporary files:", + "HeaderLatestMusic": "Latest Music", + "HeaderBranding": "Branding", + "HeaderApiKeys": "Api Keys", + "HeaderApiKeysHelp": "External applications are required to have an Api key in order to communicate with Emby Server. Keys are issued by logging in with an Emby account, or by manually granting the application a key.", + "HeaderApiKey": "Api Key", + "HeaderApp": "App", + "HeaderDevice": "Device", + "HeaderUser": "User", + "HeaderDateIssued": "Date Issued", + "LabelChapterName": "Chapter {0}", + "HeaderNewApiKey": "New Api Key", + "LabelAppName": "App name", + "LabelAppNameExample": "Example: Sickbeard, NzbDrone", + "HeaderNewApiKeyHelp": "Grant an application permission to communicate with Emby Server.", + "HeaderHttpHeaders": "Http Headers", + "HeaderIdentificationHeader": "Identification Header", + "LabelValue": "Value:", + "LabelMatchType": "Match type:", + "OptionEquals": "Equals", + "OptionRegex": "Regex", + "OptionSubstring": "Substring", + "TabView": "View", + "TabSort": "Sort", + "TabFilter": "Filter", + "ButtonView": "View", + "LabelPageSize": "Item limit:", + "LabelPath": "Path:", + "LabelView": "View:", + "TabUsers": "Users", + "LabelSortName": "Sort name:", + "LabelDateAdded": "Date added:", + "HeaderFeatures": "Features", + "HeaderAdvanced": "Advanced", + "ButtonSync": "Sync", + "TabScheduledTasks": "Scheduled Tasks", + "HeaderChapters": "Chapters", + "HeaderResumeSettings": "Resume Settings", + "TabSync": "Sync", + "TitleUsers": "Users", + "LabelProtocol": "Protocol:", + "OptionProtocolHttp": "Http", + "OptionProtocolHls": "Http Live Streaming", + "LabelContext": "Context:", + "OptionContextStreaming": "Streaming", + "OptionContextStatic": "Sync", + "ButtonAddToPlaylist": "Add to playlist", + "TabPlaylists": "Playlists", + "ButtonClose": "Close", + "LabelAllLanguages": "All languages", + "HeaderBrowseOnlineImages": "Browse Online Images", + "LabelSource": "Source:", + "OptionAll": "All", + "LabelImage": "Image:", + "ButtonBrowseImages": "Browse Images", + "HeaderImages": "Images", + "HeaderBackdrops": "Backdrops", + "HeaderScreenshots": "Screenshots", + "HeaderAddUpdateImage": "Add\/Update Image", + "LabelJpgPngOnly": "JPG\/PNG only", + "LabelImageType": "Image type:", + "OptionPrimary": "Primary", + "OptionArt": "Art", + "OptionBox": "Box", + "OptionBoxRear": "Box rear", + "OptionDisc": "Disc", + "OptionIcon": "Icon", + "OptionLogo": "Logo", + "OptionMenu": "Menu", + "OptionScreenshot": "Screenshot", + "OptionLocked": "Locked", + "OptionUnidentified": "Unidentified", + "OptionMissingParentalRating": "Missing parental rating", + "OptionStub": "Stub", + "HeaderEpisodes": "Episodes:", + "OptionSeason0": "Season 0", + "LabelReport": "Report:", + "OptionReportSongs": "Songs", + "OptionReportSeries": "Series", + "OptionReportSeasons": "Seasons", + "OptionReportTrailers": "Trailers", + "OptionReportMusicVideos": "Music videos", + "OptionReportMovies": "Movies", + "OptionReportHomeVideos": "Home videos", + "OptionReportGames": "Games", + "OptionReportEpisodes": "Episodes", + "OptionReportCollections": "Collections", + "OptionReportBooks": "Books", + "OptionReportArtists": "Artists", + "OptionReportAlbums": "Albums", + "OptionReportAdultVideos": "Adult videos", + "HeaderActivity": "Activity", + "ScheduledTaskStartedWithName": "{0} started", + "ScheduledTaskCancelledWithName": "{0} was cancelled", + "ScheduledTaskCompletedWithName": "{0} completed", + "ScheduledTaskFailed": "Scheduled task completed", + "PluginInstalledWithName": "{0} was installed", + "PluginUpdatedWithName": "{0} was updated", + "PluginUninstalledWithName": "{0} was uninstalled", + "ScheduledTaskFailedWithName": "{0} failed", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "DeviceOnlineWithName": "{0} is connected", + "UserOnlineFromDevice": "{0} is online from {1}", + "DeviceOfflineWithName": "{0} has disconnected", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", + "LabelRunningTimeValue": "Running time: {0}", + "LabelIpAddressValue": "Ip address: {0}", + "UserLockedOutWithName": "User {0} has been locked out", + "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", + "UserCreatedWithName": "User {0} has been created", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserDeletedWithName": "User {0} has been deleted", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageApplicationUpdated": "Emby Server has been updated", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "UserDownloadingItemWithValues": "{0} is downloading {1}", + "UserStartedPlayingItemWithValues": "{0} has started playing {1}", + "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", + "AppDeviceValues": "App: {0}, Device: {1}", + "ProviderValue": "Provider: {0}", + "LabelChannelDownloadSizeLimit": "Download size limit (GB):", + "LabelChannelDownloadSizeLimitHelpText": "Limit the size of the channel download folder.", + "HeaderRecentActivity": "Recent Activity", + "HeaderPeople": "People", + "HeaderDownloadPeopleMetadataFor": "Download biography and images for:", + "OptionComposers": "Composers", + "OptionOthers": "Others", + "HeaderDownloadPeopleMetadataForHelp": "Enabling additional options will provide more on-screen information but will result in slower library scans.", + "ViewTypeFolders": "Folders", + "LabelDisplayFoldersView": "Display a folders view to show plain media folders", + "ViewTypeLiveTvRecordingGroups": "Recordings", + "ViewTypeLiveTvChannels": "Channels", + "LabelEasyPinCode": "Easy pin code:", + "EasyPasswordHelp": "Your easy pin code is used for offline access with supported Emby apps, and can also be used for easy in-network sign in.", + "LabelInNetworkSignInWithEasyPassword": "Enable in-network sign in with my easy pin code", + "LabelInNetworkSignInWithEasyPasswordHelp": "If enabled, you'll be able to use your easy pin code to sign in to Emby apps from inside your home network. Your regular password will only be needed away from home. If the pin code is left blank, you won't need a password within your home network.", + "HeaderPassword": "Password", + "HeaderLocalAccess": "Local Access", + "HeaderViewOrder": "View Order", + "ButtonResetEasyPassword": "Reset easy pin code", + "LabelSelectUserViewOrder": "Choose the order your views will be displayed in within Emby apps", + "LabelMetadataRefreshMode": "Metadata refresh mode:", + "LabelImageRefreshMode": "Image refresh mode:", + "OptionDownloadMissingImages": "Download missing images", + "OptionReplaceExistingImages": "Replace existing images", + "OptionRefreshAllData": "Refresh all data", + "OptionAddMissingDataOnly": "Add missing data only", + "OptionLocalRefreshOnly": "Local refresh only", + "HeaderRefreshMetadata": "Refresh Metadata", + "HeaderPersonInfo": "Person Info", + "HeaderIdentifyItem": "Identify Item", + "HeaderIdentifyItemHelp": "Enter one or more search criteria. Remove criteria to increase search results.", + "HeaderConfirmDeletion": "Confirm Deletion", + "LabelFollowingFileWillBeDeleted": "The following file will be deleted:", + "LabelIfYouWishToContinueWithDeletion": "If you wish to continue, please confirm by entering the value of:", + "ButtonIdentify": "Identify", + "LabelAlbumArtist": "Album artist:", + "LabelAlbumArtists": "Album artists:", + "LabelAlbum": "Album:", + "LabelCommunityRating": "Community rating:", + "LabelVoteCount": "Vote count:", + "LabelMetascore": "Metascore:", + "LabelCriticRating": "Critic rating:", + "LabelCriticRatingSummary": "Critic rating summary:", + "LabelAwardSummary": "Award summary:", + "LabelWebsite": "Website:", + "LabelTagline": "Tagline:", + "LabelOverview": "Overview:", + "LabelShortOverview": "Short overview:", + "LabelReleaseDate": "Release date:", + "LabelYear": "Year:", + "LabelPlaceOfBirth": "Place of birth:", + "LabelEndDate": "End date:", + "LabelAirDate": "Air days:", + "LabelAirTime:": "Air time:", + "LabelRuntimeMinutes": "Run time (minutes):", + "LabelParentalRating": "Parental rating:", + "LabelCustomRating": "Custom rating:", + "LabelBudget": "Budget", + "LabelRevenue": "Revenue ($):", + "LabelOriginalAspectRatio": "Original aspect ratio:", + "LabelPlayers": "Players:", + "Label3DFormat": "3D format:", + "HeaderAlternateEpisodeNumbers": "Alternate Episode Numbers", + "HeaderSpecialEpisodeInfo": "Special Episode Info", + "HeaderExternalIds": "External Id's:", + "LabelDvdSeasonNumber": "Dvd season number:", + "LabelDvdEpisodeNumber": "Dvd episode number:", + "LabelAbsoluteEpisodeNumber": "Absolute episode number:", + "LabelAirsBeforeSeason": "Airs before season:", + "LabelAirsAfterSeason": "Airs after season:", + "LabelAirsBeforeEpisode": "Airs before episode:", + "LabelTreatImageAs": "Treat image as:", + "LabelDisplayOrder": "Display order:", + "LabelDisplaySpecialsWithinSeasons": "Display specials within seasons they aired in", + "HeaderCountries": "Countries", + "HeaderGenres": "Genres", + "HeaderPlotKeywords": "Plot Keywords", + "HeaderStudios": "Studios", + "HeaderTags": "Tags", + "HeaderMetadataSettings": "Metadata Settings", + "LabelLockItemToPreventChanges": "Lock this item to prevent future changes", + "MessageLeaveEmptyToInherit": "Leave empty to inherit settings from a parent item, or the global default value.", + "TabDonate": "Donate", + "HeaderDonationType": "Donation type:", + "OptionMakeOneTimeDonation": "Make a separate donation", + "OptionOneTimeDescription": "This is an additional donation to the team to show your support. It does not have any additional benefits and will not produce a supporter key.", + "OptionLifeTimeSupporterMembership": "Lifetime supporter membership", + "OptionYearlySupporterMembership": "Yearly supporter membership", + "OptionMonthlySupporterMembership": "Monthly supporter membership", + "OptionNoTrailer": "No Trailer", + "OptionNoThemeSong": "No Theme Song", + "OptionNoThemeVideo": "No Theme Video", + "LabelOneTimeDonationAmount": "Donation amount:", + "ButtonDonate": "Donate", + "ButtonPurchase": "Purchase", + "OptionActor": "Actor", + "OptionComposer": "Composer", + "OptionDirector": "Director", + "OptionGuestStar": "Guest star", + "OptionProducer": "Producer", + "OptionWriter": "Writer", + "LabelAirDays": "Air days:", + "LabelAirTime": "Air time:", + "HeaderMediaInfo": "Media Info", + "HeaderPhotoInfo": "Photo Info", + "HeaderInstall": "Install", + "LabelSelectVersionToInstall": "Select version to install:", + "LinkSupporterMembership": "Learn about the Supporter Membership", + "MessageSupporterPluginRequiresMembership": "This plugin will require an active supporter membership after the 14 day free trial.", + "MessagePremiumPluginRequiresMembership": "This plugin will require an active supporter membership in order to purchase after the 14 day free trial.", + "HeaderReviews": "Reviews", + "HeaderDeveloperInfo": "Developer Info", + "HeaderRevisionHistory": "Revision History", + "ButtonViewWebsite": "View website", + "HeaderXmlSettings": "Xml Settings", + "HeaderXmlDocumentAttributes": "Xml Document Attributes", + "HeaderXmlDocumentAttribute": "Xml Document Attribute", + "XmlDocumentAttributeListHelp": "These attributes are applied to the root element of every xml response.", + "OptionSaveMetadataAsHidden": "Save metadata and images as hidden files", + "LabelExtractChaptersDuringLibraryScan": "Extract chapter images during the library scan", + "LabelExtractChaptersDuringLibraryScanHelp": "If enabled, chapter images will be extracted when videos are imported during the library scan. If disabled they will be extracted during the chapter images scheduled task, allowing the regular library scan to complete faster.", + "LabelConnectGuestUserName": "Their Emby username or email address:", + "LabelConnectUserName": "Emby username\/email:", + "LabelConnectUserNameHelp": "Connect this user to an Emby account to enable easy sign-in access from any Emby app without having to know the server ip address.", + "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", + "LabelExternalPlayers": "External players:", + "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", + "HeaderSubtitleProfile": "Subtitle Profile", + "HeaderSubtitleProfiles": "Subtitle Profiles", + "HeaderSubtitleProfilesHelp": "Subtitle profiles describe the subtitle formats supported by the device.", + "LabelFormat": "Format:", + "LabelMethod": "Method:", + "LabelDidlMode": "Didl mode:", + "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", + "OptionResElement": "res element", + "OptionEmbedSubtitles": "Embed within container", + "OptionExternallyDownloaded": "External download", + "OptionHlsSegmentedSubtitles": "Hls segmented subtitles", + "LabelSubtitleFormatHelp": "Example: srt", + "ButtonLearnMore": "Learn more", + "TabPlayback": "Playback", + "HeaderLanguagePreferences": "Language Preferences", + "TabCinemaMode": "Cinema Mode", + "TitlePlayback": "Playback", + "LabelEnableCinemaModeFor": "Enable cinema mode for:", + "CinemaModeConfigurationHelp": "Cinema mode brings the theater experience straight to your living room with the ability to play trailers and custom intros before the main feature.", + "OptionTrailersFromMyMovies": "Include trailers from movies in my library", + "OptionUpcomingMoviesInTheaters": "Include trailers from new and upcoming movies", + "LabelLimitIntrosToUnwatchedContent": "Only use trailers from unwatched content", + "LabelEnableIntroParentalControl": "Enable smart parental control", + "LabelEnableIntroParentalControlHelp": "Trailers will only be selected with a parental rating equal to or less than the content being watched.", + "LabelTheseFeaturesRequireSupporterHelpAndTrailers": "These features require an active supporter membership and installation of the Trailer channel plugin.", + "OptionTrailersFromMyMoviesHelp": "Requires setup of local trailers.", + "LabelCustomIntrosPath": "Custom intros path:", + "LabelCustomIntrosPathHelp": "A folder containing video files. A video will be randomly selected and played after trailers.", + "ValueSpecialEpisodeName": "Special - {0}", + "LabelSelectInternetTrailersForCinemaMode": "Internet trailers:", + "OptionUpcomingDvdMovies": "Include trailers from new and upcoming movies on Dvd & Blu-ray", + "OptionUpcomingStreamingMovies": "Include trailers from new and upcoming movies on Netflix", + "LabelDisplayTrailersWithinMovieSuggestions": "Display trailers within movie suggestions", + "LabelDisplayTrailersWithinMovieSuggestionsHelp": "Requires installation of the Trailer channel.", + "CinemaModeConfigurationHelp2": "Individual users will have the ability to disable cinema mode within their own preferences.", + "LabelEnableCinemaMode": "Enable cinema mode", + "HeaderCinemaMode": "Cinema Mode", + "LabelDateAddedBehavior": "Date added behavior for new content:", + "OptionDateAddedImportTime": "Use date scanned into the library", + "OptionDateAddedFileTime": "Use file creation date", + "LabelDateAddedBehaviorHelp": "If a metadata value is present it will always be used before either of these options.", + "LabelNumberTrailerToPlay": "Number of trailers to play:", + "TitleDevices": "Devices", + "TabCameraUpload": "Camera Upload", + "TabDevices": "Devices", + "HeaderCameraUploadHelp": "Automatically upload photos and videos taken from your mobile devices into Emby.", + "MessageNoDevicesSupportCameraUpload": "You currently don't have any devices that support camera upload.", + "LabelCameraUploadPath": "Camera upload path:", + "LabelCameraUploadPathHelp": "Select a custom upload path, if desired. If unspecified a default folder will be used. If using a custom path it will also need to be added in the library setup area.", + "LabelCreateCameraUploadSubfolder": "Create a subfolder for each device", + "LabelCreateCameraUploadSubfolderHelp": "Specific folders can be assigned to a device by clicking on it from the Devices page.", + "LabelCustomDeviceDisplayName": "Display name:", + "LabelCustomDeviceDisplayNameHelp": "Supply a custom display name or leave empty to use the name reported by the device.", + "HeaderInviteUser": "Invite User", + "LabelConnectGuestUserNameHelp": "This is the username that your friend uses to sign in to the Emby website, or their email address.", + "HeaderInviteUserHelp": "Sharing your media with friends is easier than ever before with Emby Connect.", + "ButtonSendInvitation": "Send Invitation", + "HeaderSignInWithConnect": "Sign in with Emby Connect", + "HeaderGuests": "Guests", + "HeaderLocalUsers": "Local Users", + "HeaderPendingInvitations": "Pending Invitations", + "TabParentalControl": "Parental Control", + "HeaderAccessSchedule": "Access Schedule", + "HeaderAccessScheduleHelp": "Create an access schedule to limit access to certain hours.", + "ButtonAddSchedule": "Add Schedule", + "LabelAccessDay": "Day of week:", + "LabelAccessStart": "Start time:", + "LabelAccessEnd": "End time:", + "HeaderSchedule": "Schedule", + "OptionEveryday": "Every day", + "OptionWeekdays": "Weekdays", + "OptionWeekends": "Weekends", + "MessageProfileInfoSynced": "User profile information synced with Emby Connect.", + "HeaderOptionalLinkEmbyAccount": "Optional: Link your Emby account", + "ButtonTrailerReel": "Trailer reel", + "HeaderTrailerReel": "Trailer Reel", + "OptionPlayUnwatchedTrailersOnly": "Play only unwatched trailers", + "HeaderTrailerReelHelp": "Start a trailer reel to play a long running playlist of trailers.", + "MessageNoTrailersFound": "No trailers found. Install the Trailer channel to enhance your movie experience by adding a library of internet trailers.", + "HeaderNewUsers": "New Users", + "ButtonSignUp": "Sign up", + "ButtonForgotPassword": "Forgot password", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to accept it below or by clicking the link in the email.", + "TitleNewUser": "New User", + "ButtonConfigurePassword": "Configure Password", + "HeaderDashboardUserPassword": "User passwords are managed within each user's personal profile settings.", + "HeaderLibraryAccess": "Library Access", + "HeaderChannelAccess": "Channel Access", + "HeaderLatestItems": "Latest Items", + "LabelSelectLastestItemsFolders": "Include media from the following sections in Latest Items", + "HeaderShareMediaFolders": "Share Media Folders", + "MessageGuestSharingPermissionsHelp": "Most features are initially unavailable to guests but can be enabled as needed.", + "HeaderInvitations": "Invitations", + "LabelForgotPasswordUsernameHelp": "Enter your username, if you remember it.", + "HeaderForgotPassword": "Forgot Password", + "TitleForgotPassword": "Forgot Password", + "TitlePasswordReset": "Password Reset", + "LabelPasswordRecoveryPinCode": "Pin code:", + "HeaderPasswordReset": "Password Reset", + "HeaderParentalRatings": "Parental Ratings", + "HeaderVideoTypes": "Video Types", + "HeaderYears": "Years", + "HeaderAddTag": "Add Tag", + "LabelBlockContentWithTags": "Block content with tags:", + "LabelTag": "Tag:", + "LabelEnableSingleImageInDidlLimit": "Limit to single embedded image", + "LabelEnableSingleImageInDidlLimitHelp": "Some devices will not render properly if multiple images are embedded within Didl.", + "TabActivity": "Activity", + "TitleSync": "Sync", + "OptionAllowSyncContent": "Allow Sync", + "OptionAllowContentDownloading": "Allow media downloading", + "NameSeasonUnknown": "Season Unknown", + "NameSeasonNumber": "Season {0}", + "LabelNewUserNameHelp": "Usernames can contain letters (a-z), numbers (0-9), dashes (-), underscores (_), apostrophes ('), and periods (.)", + "TabJobs": "Jobs", + "TabSyncJobs": "Sync Jobs", + "LabelTagFilterMode": "Mode:", + "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", + "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "More", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "OptionEnableTranscodingThrottle": "Enable throttling", + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderViewStyles": "View Styles", + "LabelSelectViewStyles": "Enable enhanced presentations for:", + "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", + "TabPhotos": "Photos", + "TabVideos": "Videos", + "HeaderWelcomeToEmby": "Welcome to Emby", + "EmbyIntroMessage": "With Emby you can easily stream videos, music and photos to smart phones, tablets and other devices from your Emby Server.", + "ButtonSkip": "Skip", + "TextConnectToServerManually": "Connect to server manually", + "ButtonSignInWithConnect": "Sign in with Emby Connect", + "ButtonConnect": "Connect", + "LabelServerHost": "Host:", + "LabelServerHostHelp": "192.168.1.100 or https:\/\/myserver.com", + "LabelServerPort": "Port:", + "HeaderNewServer": "New Server", + "ButtonChangeServer": "Change Server", + "HeaderConnectToServer": "Connect to Server", + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "HeaderExport": "Export", + "HeaderColumns": "Columns", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" +}
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ru.json b/MediaBrowser.Server.Implementations/Localization/Server/ru.json index f58e25c86..93ac4392b 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ru.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ru.json @@ -1,6 +1,36 @@ { - "TabWebClient": "\u0412\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442", - "VideoImageExtractionHelp": "\u0414\u043b\u044f \u0432\u0438\u0434\u0435\u043e, \u0433\u0434\u0435 \u043d\u0435\u0442 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432, \u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0435\u0449\u0451 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043a \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438, \u043d\u043e \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044e.", + "LabelExit": "\u0412\u044b\u0445\u043e\u0434", + "LabelVisitCommunity": "\u041f\u043e\u0441\u0435\u0449\u0435\u043d\u0438\u0435 \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430", + "LabelGithub": "GitHub", + "LabelSwagger": "\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Swagger", + "LabelStandard": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442", + "LabelApiDocumentation": "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e API", + "LabelDeveloperResources": "\u0420\u0435\u0441\u0443\u0440\u0441\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432", + "LabelBrowseLibrary": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u041c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438", + "LabelConfigureServer": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Emby", + "LabelOpenLibraryViewer": "\u0421\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u041c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438", + "LabelRestartServer": "\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0430", + "LabelShowLogWindow": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u043e\u043a\u043d\u043e \u0416\u0443\u0440\u043d\u0430\u043b\u0430", + "LabelPrevious": "\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435", + "LabelFinish": "\u0413\u043e\u0442\u043e\u0432\u043e", + "FolderTypeMixed": "\u0420\u0430\u0437\u043d\u043e\u0442\u0438\u043f\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435", + "LabelNext": "\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435", + "LabelYoureDone": "\u0412\u044b \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438!", + "WelcomeToProject": "\u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u044b \u0432 Emby", + "ThisWizardWillGuideYou": "\u042d\u0442\u043e\u0442 \u043f\u043e\u043c\u043e\u0449\u043d\u0438\u043a \u043f\u0440\u043e\u0432\u0435\u0434\u0451\u0442 \u0432\u0430\u0441 \u0447\u0435\u0440\u0435\u0437 \u0432\u0441\u0435 \u0444\u0430\u0437\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u044f\u0437\u044b\u043a.", + "TellUsAboutYourself": "\u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0438\u0442\u0435 \u043e \u0441\u0435\u0431\u0435", + "ButtonQuickStartGuide": "\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0443...", + "LabelYourFirstName": "\u0412\u0430\u0448\u0435 \u0438\u043c\u044f:", + "MoreUsersCanBeAddedLater": "\u041f\u043e\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0451 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 \u00ab\u0418\u043d\u0444\u043e\u043f\u0430\u043d\u0435\u043b\u044c\u00bb.", + "UserProfilesIntro": "\u0412 Emby \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0438\u043c\u0435\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\u043c.", + "LabelWindowsService": "\u0421\u043b\u0443\u0436\u0431\u0430 Windows", + "AWindowsServiceHasBeenInstalled": "\u0421\u043b\u0443\u0436\u0431\u0430 Windows \u0431\u044b\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430.", + "WindowsServiceIntro1": "Emby Server \u043e\u0431\u044b\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e \u0437\u043d\u0430\u0447\u043a\u043e\u043c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c \u043b\u043e\u0442\u043a\u0435, \u043d\u043e \u0435\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u043a\u0430\u043a \u0444\u043e\u043d\u043e\u0432\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u044b, \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0435\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0441\u043b\u0443\u0436\u0431 Windows.", + "WindowsServiceIntro2": "\u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u043b\u0443\u0436\u0431\u044b Windows, \u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441\u043e \u0437\u043d\u0430\u0447\u043a\u043e\u043c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c \u043b\u043e\u0442\u043a\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u0437\u043d\u0430\u0447\u043e\u043a \u0432 \u043b\u043e\u0442\u043a\u0435, \u0447\u0442\u043e\u0431\u044b \u0441\u043b\u0443\u0436\u0431\u0430 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430. \u0421\u043b\u0443\u0436\u0431\u0443 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u043f\u0440\u0430\u0432\u0430\u043c\u0438. \u041f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u0443\u0436\u0431\u044b, \u0442\u0430\u043a \u0447\u0442\u043e \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u0439 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u0430\u0448\u0435 \u0432\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e.", + "WizardCompleted": "\u042d\u0442\u043e \u043f\u043e\u043a\u0430 \u0432\u0441\u0451 \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e. Emby \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435. \u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043d\u0430\u0448\u0438\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438, \u0430 \u043f\u043e\u0442\u043e\u043c \u043d\u0430\u0436\u043c\u0438\u0442\u0435 <b>\u0413\u043e\u0442\u043e\u0432\u043e<\/b>, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <b>\u0418\u043d\u0444\u043e\u043f\u0430\u043d\u0435\u043b\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/b>.", + "LabelConfigureSettings": "\u041d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b", + "LabelEnableVideoImageExtraction": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432 \u0438\u0437 \u0432\u0438\u0434\u0435\u043e", + "VideoImageExtractionHelp": "\u0414\u043b\u044f \u0432\u0438\u0434\u0435\u043e, \u0433\u0434\u0435 \u043d\u0435\u0442 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432, \u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0435\u0449\u0451 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043a \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438, \u043d\u043e \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044e.", "LabelEnableChapterImageExtractionForMovies": "\u0418\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u0440\u0438\u0441\u0443\u043d\u043a\u0438 \u0441\u0446\u0435\u043d \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u043c\u043e\u0432", "LabelChapterImageExtractionForMoviesHelp": "\u0418\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432 \u0441\u0446\u0435\u043d \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0435\u043d\u044e \u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u0446\u0435\u043d\u044b. \u0414\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u043c, \u043d\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430. \u041e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0432\u0438\u0434\u0435 \u0437\u0430\u0434\u0430\u0447\u0438, \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u0430\u044f \u043d\u0430 \u043d\u043e\u0447\u044c, \u043e\u0434\u043d\u0430\u043a\u043e, \u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447. \u041d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u0432 \u0447\u0430\u0441\u044b \u043f\u0438\u043a.", "LabelEnableAutomaticPortMapping": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u043e\u0432", @@ -8,12 +38,12 @@ "HeaderTermsOfService": "\u0423\u0441\u043b\u043e\u0432\u0438\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u043b\u0443\u0433 Emby", "MessagePleaseAcceptTermsOfService": "\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0435 \u0441 \u0423\u0441\u043b\u043e\u0432\u0438\u044f\u043c\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u043b\u0443\u0433 \u0438 \u041f\u043e\u043b\u0438\u0442\u0438\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c.", "OptionIAcceptTermsOfService": "\u042f \u0441\u043e\u0433\u043b\u0430\u0448\u0430\u044e\u0441\u044c \u0441 \u0423\u0441\u043b\u043e\u0432\u0438\u044f\u043c\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u043b\u0443\u0433", - "ButtonPrivacyPolicy": "\u041a \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0435 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438", - "ButtonTermsOfService": "\u041a \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u043b\u0443\u0433", + "ButtonPrivacyPolicy": "\u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438...", + "ButtonTermsOfService": "\u0423\u0441\u043b\u043e\u0432\u0438\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u043b\u0443\u0433...", "HeaderDeveloperOptions": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432", - "OptionEnableWebClientResponseCache": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0442\u043a\u043b\u0438\u043a\u043e\u0432 \u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442\u0430", + "OptionEnableWebClientResponseCache": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0442\u043a\u043b\u0438\u043a\u043e\u0432 \u0432 \u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442\u0435", "OptionDisableForDevelopmentHelp": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0438\u0445, \u043f\u043e \u043c\u0435\u0440\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0432 \u0446\u0435\u043b\u044f\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442\u0430.", - "OptionEnableWebClientResourceMinification": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442\u0430", + "OptionEnableWebClientResourceMinification": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0432 \u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442\u0435", "LabelDashboardSourcePath": "\u041f\u0443\u0442\u044c \u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0443 \u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442\u0430:", "LabelDashboardSourcePathHelp": "\u0415\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u0434\u043e\u0432, \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u043f\u0443\u0442\u044c \u043a \u043f\u0430\u043f\u043a\u0435 dashboard-ui. \u0412\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f.", "ButtonConvertMedia": "\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435", @@ -28,13 +58,13 @@ "ButtonOk": "\u041e\u041a", "ButtonCancel": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c", "ButtonExit": "\u0412\u044b\u0439\u0442\u0438", - "ButtonNew": "\u041d\u043e\u0432\u044b\u0439", + "ButtonNew": "\u0421\u043e\u0437\u0434\u0430\u0442\u044c", "HeaderTV": "\u0422\u0412", "HeaderAudio": "\u0410\u0443\u0434\u0438\u043e", "HeaderVideo": "\u0412\u0438\u0434\u0435\u043e", "HeaderPaths": "\u041f\u0443\u0442\u0438", "CategorySync": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f", - "TabPlaylist": "\u041f\u043b\u0435\u0439\u043b\u0438\u0441\u0442", + "TabPlaylist": "\u0421\u043f\u0438\u0441\u043e\u043a \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f", "HeaderEasyPinCode": "\u0423\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u044b\u0439 PIN-\u043a\u043e\u0434", "HeaderGrownupsOnly": "\u0422\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0432\u0437\u0440\u043e\u0441\u043b\u044b\u0445!", "DividerOr": "-- \u0438\u043b\u0438 --", @@ -44,11 +74,11 @@ "HeaderToAccessPleaseEnterEasyPinCode": "\u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0432\u0430\u0448 \u0443\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u044b\u0439 PIN-\u043a\u043e\u0434", "KidsModeAdultInstruction": "\u0429\u0451\u043b\u043a\u043d\u0438\u0442\u0435 \u043f\u043e \u0437\u043d\u0430\u0447\u043a\u0443 \u0437\u0430\u043c\u043a\u0430 \u0441\u043f\u0440\u0430\u0432\u0430 \u0432\u043d\u0438\u0437\u0443, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u043b\u0438 \u043f\u043e\u043a\u0438\u043d\u0443\u0442\u044c \u0434\u0435\u0442\u0441\u043a\u0438\u0439 \u0440\u0435\u0436\u0438\u043c. \u041f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u0430\u0448 PIN-\u043a\u043e\u0434.", "ButtonConfigurePinCode": "\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c PIN-\u043a\u043e\u0434", - "HeaderAdultsReadHere": "\u0412\u0437\u0440\u043e\u0441\u043b\u044b\u043c \u0447\u0438\u0442\u0430\u0442\u044c \u0437\u0434\u0435\u0441\u044c!", + "HeaderAdultsReadHere": "\u0412\u0437\u0440\u043e\u0441\u043b\u044b\u0435, \u043f\u0440\u043e\u0447\u0442\u0438\u0442\u0435 \u044d\u0442\u043e!", "RegisterWithPayPal": "\u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 PayPal", "HeaderSyncRequiresSupporterMembership": "\u0414\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0447\u043b\u0435\u043d\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430", "HeaderEnjoyDayTrial": "\u0412\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u043c 14-\u0434\u043d\u0435\u0432\u043d\u044b\u043c \u043f\u0440\u043e\u0431\u043d\u044b\u043c \u043f\u0435\u0440\u0438\u043e\u0434\u043e\u043c", - "LabelSyncTempPath": "\u041f\u0443\u0442\u044c \u043a \u043f\u0430\u043f\u043a\u0435 \u0441 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438:", + "LabelSyncTempPath": "\u041f\u0443\u0442\u044c \u043a\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443:", "LabelSyncTempPathHelp": "\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0447\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u0434\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438. \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438, \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0437\u0434\u0435\u0441\u044c.", "LabelCustomCertificatePath": "\u041f\u0443\u0442\u044c \u043a \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0443:", "LabelCustomCertificatePathHelp": "\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b .pfx SSL-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430. \u041f\u0440\u0438 \u0435\u0433\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0441\u0430\u043c\u043e\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442.", @@ -56,15 +86,14 @@ "ButtonDonateWithPayPal": "\u041f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 PayPal", "OptionDetectArchiveFilesAsMedia": "\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0430\u0440\u0445\u0438\u0432\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043a\u0430\u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435", "OptionDetectArchiveFilesAsMediaHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u0444\u0430\u0439\u043b\u044b \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043c\u0438 .RAR \u0438 .ZIP \u0431\u0443\u0434\u0443\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u043e\u0432.", - "LabelEnterConnectUserName": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u042d-\u043f\u043e\u0447\u0442\u0430", - "LabelEnterConnectUserNameHelp": "\u042d\u0442\u043e - \u0432\u0430\u0448\u0435 \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u0432 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 Emby.", - "LabelEnableEnhancedMovies": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u043c\u043e\u0432", + "LabelEnterConnectUserName": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u042d-\u043f\u043e\u0447\u0442\u0430:", + "LabelEnterConnectUserNameHelp": "\u042d\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0430\u0448\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u0435\u043c \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 Emby.", + "LabelEnableEnhancedMovies": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0444\u0438\u043b\u044c\u043c\u043e\u0432", "LabelEnableEnhancedMoviesHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u0444\u0438\u043b\u044c\u043c\u044b \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043f\u0430\u043f\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u044b, \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b, \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 \u0441\u044a\u0451\u043c\u043e\u043a \u0438 \u0434\u0440\u0443\u0433\u043e\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435.", - "HeaderSyncJobInfo": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f", - "FolderTypeMixed": "\u0420\u0430\u0437\u043d\u043e\u0442\u0438\u043f\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435", + "HeaderSyncJobInfo": "\u0417\u0430\u0434\u0430\u043d\u0438\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438", "FolderTypeMovies": "\u041a\u0438\u043d\u043e", "FolderTypeMusic": "\u041c\u0443\u0437\u044b\u043a\u0430", - "FolderTypeAdultVideos": "\u0412\u0438\u0434\u0435\u043e \u0434\u043b\u044f \u0432\u0437\u0440\u043e\u0441\u043b\u044b\u0445", + "FolderTypeAdultVideos": "\u0412\u0437\u0440\u043e\u0441\u043b\u044b\u0435 \u0432\u0438\u0434\u0435\u043e", "FolderTypePhotos": "\u0424\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438", "FolderTypeMusicVideos": "\u041c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0438\u0434\u0435\u043e", "FolderTypeHomeVideos": "\u0414\u043e\u043c\u0430\u0448\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u043e", @@ -72,12 +101,12 @@ "FolderTypeBooks": "\u041a\u043d\u0438\u0433\u0438", "FolderTypeTvShows": "\u0422\u0412", "FolderTypeInherit": "\u041d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435", - "LabelContentType": "\u0422\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445:", + "LabelContentType": "\u0422\u0438\u043f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f:", "TitleScheduledTasks": "\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438", "HeaderSetupLibrary": "\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438", "ButtonAddMediaFolder": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043a\u0443", "LabelFolderType": "\u0422\u0438\u043f \u043f\u0430\u043f\u043a\u0438:", - "ReferToMediaLibraryWiki": "\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u0432\u0438\u043a\u0438 \u0434\u043b\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u043e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435.", + "ReferToMediaLibraryWiki": "\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u0432\u0438\u043a\u0438 \u043f\u043e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435.", "LabelCountry": "\u0421\u0442\u0440\u0430\u043d\u0430:", "LabelLanguage": "\u042f\u0437\u044b\u043a:", "LabelTimeLimitHours": "\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (\u0447\u0430\u0441\u044b):", @@ -96,7 +125,7 @@ "TabMetadata": "\u041c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435", "TabImages": "\u0420\u0438\u0441\u0443\u043d\u043a\u0438", "TabNotifications": "\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f", - "TabCollectionTitles": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f", + "TabCollectionTitles": "\u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f", "HeaderDeviceAccess": "\u0414\u043e\u0441\u0442\u0443\u043f \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430", "OptionEnableAccessFromAllDevices": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0441\u043e \u0432\u0441\u0435\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432", "OptionEnableAccessToAllChannels": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c \u043a\u0430\u043d\u0430\u043b\u0430\u043c", @@ -111,7 +140,7 @@ "OptionDefaultSubtitles": "\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e", "OptionOnlyForcedSubtitles": "\u0422\u043e\u043b\u044c\u043a\u043e \u0444\u043e\u0440\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044b", "OptionAlwaysPlaySubtitles": "\u0412\u0441\u0435\u0433\u0434\u0430 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u0441 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0430\u043c\u0438", - "OptionNoSubtitles": "\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044b", + "OptionNoSubtitles": "\u0411\u0435\u0437 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432", "OptionDefaultSubtitlesHelp": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u044b, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u044f\u0437\u044b\u043a\u0430, \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f, \u0435\u0441\u043b\u0438 \u0430\u0443\u0434\u0438\u043e \u043d\u0430 \u0438\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435.", "OptionOnlyForcedSubtitlesHelp": "\u0411\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044b, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0435 \u043a\u0430\u043a \u0444\u043e\u0440\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435.", "OptionAlwaysPlaySubtitlesHelp": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u044b, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u044f\u0437\u044b\u043a\u0430, \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u044f\u0437\u044b\u043a\u0430 \u0430\u0443\u0434\u0438\u043e.", @@ -130,7 +159,7 @@ "LabelMaxParentalRating": "\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u0430\u044f \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u043d\u0430\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f:", "MaxParentalRatingHelp": "\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0441 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u043d\u043e\u0439 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u0440\u044b\u0442\u043e \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", "LibraryAccessHelp": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043a\u0438 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e. \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u044b \u0441\u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u043f\u0430\u043f\u043a\u0438 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u00ab\u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445\u00bb.", - "ChannelAccessHelp": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043a\u0430\u043d\u0430\u043b\u044b \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e. \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u043a\u0430\u043d\u0430\u043b\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u00ab\u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445\u00bb.", + "ChannelAccessHelp": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043a\u0430\u043d\u0430\u043b\u044b, \u0447\u0442\u043e\u0431\u044b \u0434\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e. \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u043a\u0430\u043d\u0430\u043b\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u00ab\u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445\u00bb.", "ButtonDeleteImage": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0440\u0438\u0441\u0443\u043d\u043e\u043a", "LabelSelectUsers": "\u0412\u044b\u0431\u043e\u0440 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439:", "ButtonUpload": "\u0412\u044b\u043b\u043e\u0436\u0438\u0442\u044c", @@ -178,7 +207,7 @@ "OptionDescending": "\u041f\u043e \u0443\u0431\u044b\u0432\u0430\u043d\u0438\u044e", "OptionRuntime": "\u0414\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c", "OptionReleaseDate": "\u0414\u0430\u0442\u0430 \u0432\u044b\u043f\u0443\u0441\u043a\u0430", - "OptionPlayCount": "\u041a\u043e\u043b. \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0439", + "OptionPlayCount": "\u041a\u043e\u043b-\u0432\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0439", "OptionDatePlayed": "\u0414\u0430\u0442\u0430 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f", "OptionDateAdded": "\u0414\u0430\u0442\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f", "OptionAlbumArtist": "\u0410\u043b\u044c\u0431\u043e\u043c. \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c", @@ -208,8 +237,8 @@ "HeaderAutomaticUpdates": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f", "HeaderNowPlaying": " \u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u043e\u0435", "HeaderLatestAlbums": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0430\u043b\u044c\u0431\u043e\u043c\u044b", - "HeaderLatestSongs": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0442\u0440\u0435\u043a\u0438", - "HeaderRecentlyPlayed": "\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0435", + "HeaderLatestSongs": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043c\u0435\u043b\u043e\u0434\u0438\u0438", + "HeaderRecentlyPlayed": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0435 \u043d\u0435\u0434\u0430\u0432\u043d\u043e", "HeaderFrequentlyPlayed": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u043e", "DevBuildWarning": "\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043e\u0447\u043d\u044b\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u0435\u0440\u0435\u0434\u043e\u0432\u044b\u043c\u0438. \u0412\u044b\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0447\u0430\u0441\u0442\u043e, \u044d\u0442\u0438 \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0435 \u0431\u044b\u043b\u0438 \u043e\u0442\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0434\u043e \u043a\u043e\u043d\u0446\u0430. \u0420\u0430\u0431\u043e\u0442\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0430\u0432\u0430\u0440\u0438\u0439\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0442\u044c\u0441\u044f, \u0430 \u043c\u043d\u043e\u0433\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e\u0432\u0441\u0435\u043c.", "LabelVideoType": "\u0422\u0438\u043f \u0432\u0438\u0434\u0435\u043e:", @@ -239,7 +268,7 @@ "OptionPremiereDate": "\u0414\u0430\u0442\u0430 \u043f\u0440\u0435\u043c\u044c\u0435\u0440\u044b", "TabBasic": "\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435", "TabAdvanced": "\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0435", - "HeaderStatus": "\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435", + "HeaderStatus": "\u0421\u043e\u0441\u0442-\u0438\u0435", "OptionContinuing": "\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0441\u044f", "OptionEnded": "\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0441\u044f", "HeaderAirDays": "\u0414\u043d\u0438 \u044d\u0444\u0438\u0440\u0430", @@ -258,7 +287,9 @@ "OptionFileMetadataYearMismatch": "\u0420\u0430\u0437\u043d\u044b\u0435 \u0433\u043e\u0434\u044b \u0432\u043e \u0444\u0430\u0439\u043b\u0435\/\u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445", "TabGeneral": "\u041e\u0431\u0449\u0438\u0435", "TitleSupport": "\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430", + "LabelSeasonNumber": "\u041d\u043e\u043c\u0435\u0440 \u0441\u0435\u0437\u043e\u043d\u0430", "TabLog": "\u0416\u0443\u0440\u043d\u0430\u043b", + "LabelEpisodeNumber": "\u041d\u043e\u043c\u0435\u0440 \u044d\u043f\u0438\u0437\u043e\u0434\u0430", "TabAbout": "\u041e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435", "TabSupporterKey": "\u041a\u043b\u044e\u0447 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430", "TabBecomeSupporter": "\u0421\u0442\u0430\u0442\u044c \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u043e\u043c", @@ -274,7 +305,7 @@ "OptionDisableUserHelp": "\u041f\u0440\u0438 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438, \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043b\u044e\u0431\u044b\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0440\u0435\u0437\u043a\u043e \u043e\u0431\u043e\u0440\u0432\u0430\u043d\u044b.", "HeaderAdvancedControl": "\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435", "LabelName": "\u0418\u043c\u044f (\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435):", - "ButtonHelp": "\u041a \u0441\u043f\u0440\u0430\u0432\u043a\u0435 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435", + "ButtonHelp": "\u0421\u043f\u0440\u0430\u0432\u043a\u0430...", "OptionAllowUserToManageServer": "\u042d\u0442\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c", "HeaderFeatureAccess": "\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c", "OptionAllowMediaPlayback": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445", @@ -284,6 +315,9 @@ "OptionAllowRemoteControlOthers": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438", "OptionAllowRemoteSharedDevices": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u0449\u0438\u043c\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438", "OptionAllowRemoteSharedDevicesHelp": "DLNA-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u043e\u0431\u0449\u0438\u043c\u0438, \u043f\u043e\u043a\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043c\u0438.", + "OptionAllowLinkSharing": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0434\u043b\u044f \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439", + "OptionAllowLinkSharingHelp": "\u0422\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043e\u0431\u0449\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435. \u041c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u044b \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043e\u0431\u0449\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435. \u041e\u0431\u0449\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0438 \u0438\u0441\u0442\u0435\u0447\u0451\u0442 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043e\u0431\u0449\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430.", + "HeaderSharing": "\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u0449\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430", "HeaderRemoteControl": "\u0423\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435", "OptionMissingTmdbId": "\u041d\u0435\u0442 TMDb Id", "OptionIsHD": "HD", @@ -304,7 +338,7 @@ "LabelAutomaticUpdateLevel": "\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f", "OptionRelease": "\u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a", "OptionBeta": "\u0411\u0435\u0442\u0430-\u0432\u0435\u0440\u0441\u0438\u044f", - "OptionDev": "\u0412\u0435\u0440\u0441\u0438\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 (\u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0430\u044f)", + "OptionDev": "\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043e\u0447\u043d\u0430\u044f (\u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0430\u044f)", "LabelAllowServerAutoRestart": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439", "LabelAllowServerAutoRestartHelp": "\u0421\u0435\u0440\u0432\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u0435\u0440\u0438\u043e\u0434\u044b \u043f\u0440\u043e\u0441\u0442\u043e\u044f, \u043a\u043e\u0433\u0434\u0430 \u043d\u0438\u043a\u0430\u043a\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043d\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u044b.", "LabelEnableDebugLogging": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0416\u0443\u0440\u043d\u0430\u043b\u0435", @@ -327,7 +361,7 @@ "TabOthers": "\u0414\u0440\u0443\u0433\u0438\u0435", "HeaderExtractChapterImagesFor": "\u0418\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432 \u0441\u0446\u0435\u043d \u0434\u043b\u044f:", "OptionMovies": "\u0424\u0438\u043b\u044c\u043c\u044b", - "OptionEpisodes": "\u042d\u043f\u0438\u0437\u043e\u0434\u044b", + "OptionEpisodes": "\u0422\u0412-\u044d\u043f\u0438\u0437\u043e\u0434\u044b", "OptionOtherVideos": "\u0414\u0440\u0443\u0433\u0438\u0435 \u0432\u0438\u0434\u0435\u043e", "TitleMetadata": "\u041c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435", "LabelAutomaticUpdates": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f", @@ -338,11 +372,11 @@ "LabelAutomaticUpdatesTvdbHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u044d\u0442\u043e\u0439 \u043e\u043f\u0446\u0438\u0438 \u043d\u043e\u0432\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043d\u0430 TheTVDB.com. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f.", "LabelFanartApiKey": "\u0418\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u044b\u0439 API-\u043a\u043b\u044e\u0447:", "LabelFanartApiKeyHelp": "\u0417\u0430\u043f\u0440\u043e\u0441\u044b \u043a Fanart \u0431\u0435\u0437 \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e API-\u043a\u043b\u044e\u0447\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0438\u0437 \u043e\u0434\u043e\u0431\u0440\u0435\u043d\u043d\u044b\u0445 \u0441\u0432\u044b\u0448\u0435 7 \u0434\u043d\u0435\u0439 \u043d\u0430\u0437\u0430\u0434. \u0421 \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u044b\u043c API-\u043a\u043b\u044e\u0447\u043e\u043c \u0441\u0440\u043e\u043a \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f \u0434\u043e 48 \u0447\u0430\u0441\u043e\u0432, \u0430 \u0435\u0441\u043b\u0438 \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0435\u0441\u044c VIP-\u0447\u043b\u0435\u043d\u043e\u043c Fanart, \u0442\u043e \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u0441\u044f \u043f\u043e\u0447\u0442\u0438 \u0434\u043e 10 \u043c\u0438\u043d\u0443\u0442.", - "ExtractChapterImagesHelp": "\u0418\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432 \u0441\u0446\u0435\u043d \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0435\u043d\u044e \u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u0446\u0435\u043d\u044b. \u0414\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u043c, \u043d\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430. \u041e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0432\u0438\u0434\u0435 \u0437\u0430\u0434\u0430\u0447\u0438, \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u0430\u044f \u043d\u0430 \u043d\u043e\u0447\u044c, \u043e\u0434\u043d\u0430\u043a\u043e, \u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447. \u041d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u0432 \u0447\u0430\u0441\u044b \u043f\u0438\u043a.", - "LabelMetadataDownloadLanguage": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u044f\u0437\u044b\u043a \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438:", - "ButtonAutoScroll": "\u0410\u0432\u0442\u043e\u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0430", - "LabelImageSavingConvention": "\u0424\u043e\u0440\u043c\u0430\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432:", - "LabelImageSavingConventionHelp": "\u0412 Emby \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u044e\u0442\u0441\u044f \u0440\u0438\u0441\u0443\u043d\u043a\u0438 \u0438\u0437 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0412\u044b\u0431\u043e\u0440 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u043c \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.", + "ExtractChapterImagesHelp": "\u0418\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432 \u0441\u0446\u0435\u043d \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0435\u043d\u044e \u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u0446\u0435\u043d\u044b. \u0414\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u043c, \u043d\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430. \u041e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0438 \u043d\u043e\u0432\u044b\u0445 \u0432\u0438\u0434\u0435\u043e, \u0430 \u0442\u0430\u043a\u0436\u0435, \u043a\u0430\u043a \u0437\u0430\u0434\u0430\u0447\u0430, \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u0430\u044f \u043d\u0430 \u043d\u043e\u0447\u044c. \u0420\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447. \u041d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u0432 \u0447\u0430\u0441\u044b \u043f\u0438\u043a.", + "LabelMetadataDownloadLanguage": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u044f\u0437\u044b\u043a \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u043e\u0433\u043e:", + "ButtonAutoScroll": "\u0410\u0432\u0442\u043e\u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0430...", + "LabelImageSavingConvention": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432:", + "LabelImageSavingConventionHelp": "\u0412 Emby \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u044e\u0442\u0441\u044f \u0440\u0438\u0441\u0443\u043d\u043a\u0438 \u0438\u0437 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445. \u0412\u044b\u0431\u043e\u0440 \u0441\u0432\u043e\u0435\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u043c, \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0438\u043d\u044b\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432.", "OptionImageSavingCompatible": "\u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0439 - Emby\/Kodi\/Plex", "OptionImageSavingStandard": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 - MB2", "ButtonSignIn": "\u0412\u043e\u0439\u0442\u0438", @@ -350,32 +384,32 @@ "HeaderPleaseSignIn": "\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0432\u0445\u043e\u0434", "LabelUser": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c:", "LabelPassword": "\u041f\u0430\u0440\u043e\u043b\u044c:", - "ButtonManualLogin": "\u0420\u0443\u0447\u043d\u0430\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f", + "ButtonManualLogin": "\u0412\u043e\u0439\u0442\u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e", "PasswordLocalhostMessage": "\u041f\u0430\u0440\u043e\u043b\u0438 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u0432\u0445\u043e\u0434\u0435 \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0430.", - "TabGuide": "\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e", + "TabGuide": "\u0413\u0438\u0434", "TabChannels": "\u041a\u0430\u043d\u0430\u043b\u044b", "TabCollections": "\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438", "HeaderChannels": "\u041a\u0430\u043d\u0430\u043b\u044b", "TabRecordings": "\u0417\u0430\u043f\u0438\u0441\u0438", - "TabScheduled": "\u0417\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435", - "TabSeries": "\u0422\u0412-\u0441\u0435\u0440\u0438\u0430\u043b\u044b", + "TabScheduled": "\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0435", + "TabSeries": "\u0421\u0435\u0440\u0438\u0430\u043b\u044b", "TabFavorites": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u043e\u0435", "TabMyLibrary": "\u041c\u043e\u044f \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0430", "ButtonCancelRecording": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c", - "HeaderPrePostPadding": "\u041d\u0430\u0447.\/\u043a\u043e\u043d\u0435\u0447. \u0437\u0430\u043f\u0430\u0441 \u0432\u0440\u0435\u043c\u0435\u043d\u0438", - "LabelPrePaddingMinutes": "\u041d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0430\u0441, \u043c\u0438\u043d.:", - "OptionPrePaddingRequired": "\u041d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0430\u0441 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u043f\u0438\u0441\u0438.", - "LabelPostPaddingMinutes": "\u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0437\u0430\u043f\u0430\u0441, \u043c\u0438\u043d.:", - "OptionPostPaddingRequired": "\u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0437\u0430\u043f\u0430\u0441 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438.", + "HeaderPrePostPadding": "\u041d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f\/\u043a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u043e\u0442\u0431\u0438\u0432\u043a\u0438", + "LabelPrePaddingMinutes": "\u041d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u043e\u0442\u0431\u0438\u0432\u043a\u0430, \u043c\u0438\u043d:", + "OptionPrePaddingRequired": "\u041d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u043e\u0442\u0431\u0438\u0432\u043a\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u044f.", + "LabelPostPaddingMinutes": "\u041a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u043e\u0442\u0431\u0438\u0432\u043a\u0430, \u043c\u0438\u043d:", + "OptionPostPaddingRequired": "\u041a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u043e\u0442\u0431\u0438\u0432\u043a\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u044f.", "HeaderWhatsOnTV": "\u0412 \u044d\u0444\u0438\u0440\u0435", - "HeaderUpcomingTV": "\u0410\u043d\u043e\u043d\u0441\u044b", + "HeaderUpcomingTV": "\u041e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u0435", "TabStatus": "\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435", "TabSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b", - "ButtonRefreshGuideData": "\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435", - "ButtonRefresh": "\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c", - "ButtonAdvancedRefresh": "\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435", + "ButtonRefreshGuideData": "\u041f\u043e\u0434\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0433\u0438\u0434\u0430", + "ButtonRefresh": "\u041f\u043e\u0434\u043d\u043e\u0432\u0438\u0442\u044c", + "ButtonAdvancedRefresh": "\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0435 \u043f\u043e\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435...", "OptionPriority": "\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442", - "OptionRecordOnAllChannels": "\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043a\u0430\u043d\u0430\u043b\u044b", + "OptionRecordOnAllChannels": "\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0441\u043e \u0432\u0441\u0435\u0445 \u043a\u0430\u043d\u0430\u043b\u043e\u0432", "OptionRecordAnytime": "\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u0435 \u0432\u0440\u0435\u043c\u044f", "OptionRecordOnlyNewEpisodes": "\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u043e\u0432\u044b\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b", "HeaderRepeatingOptions": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f", @@ -383,37 +417,37 @@ "HeaderActiveRecordings": "\u0410\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438", "HeaderLatestRecordings": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438", "HeaderAllRecordings": "\u0412\u0441\u0435 \u0437\u0430\u043f\u0438\u0441\u0438", - "ButtonPlay": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438", - "ButtonEdit": "\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440.", + "ButtonPlay": "\u0412\u043e\u0441\u043f\u0440.", + "ButtonEdit": "\u041f\u0440\u0430\u0432\u0438\u0442\u044c", "ButtonRecord": "\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c", "ButtonDelete": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c", - "ButtonRemove": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c", + "ButtonRemove": "\u0418\u0437\u044a\u044f\u0442\u044c", "OptionRecordSeries": "\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0435\u0440\u0438\u0430\u043b", "HeaderDetails": "\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f", "TitleLiveTV": "\u0422\u0412-\u044d\u0444\u0438\u0440", - "LabelNumberOfGuideDays": "\u0427\u0438\u0441\u043b\u043e \u0434\u043d\u0435\u0439 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445:", - "LabelNumberOfGuideDaysHelp": "\u041f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0434\u043d\u0435\u0439 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u0435\u0433\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u043d\u0438\u0439 \u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u043e\u0431\u044a\u0451\u043c\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0447, \u043d\u043e \u044d\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u041f\u0440\u0438 \u0440\u0435\u0436\u0438\u043c\u0435 \u00ab\u0410\u0432\u0442\u043e\u00bb \u0432\u044b\u0431\u043e\u0440 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u043a\u0430\u043d\u0430\u043b\u043e\u0432.", + "LabelNumberOfGuideDays": "\u0427\u0438\u0441\u043b\u043e \u0434\u043d\u0435\u0439 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0433\u0438\u0434\u0430:", + "LabelNumberOfGuideDaysHelp": "\u041f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u043d\u0435\u0439 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u043d\u043d\u0435\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u043e\u0431\u044a\u0451\u043c\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043d\u043e \u044d\u0442\u043e \u0437\u0430\u0439\u043c\u0451\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u041f\u0440\u0438 \u0440\u0435\u0436\u0438\u043c\u0435 \u00ab\u0410\u0432\u0442\u043e\u00bb \u0432\u044b\u0431\u043e\u0440 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0438\u0441\u043b\u043e\u043c \u043a\u0430\u043d\u0430\u043b\u043e\u0432.", "OptionAutomatic": "\u0410\u0432\u0442\u043e", "HeaderServices": "\u0421\u043b\u0443\u0436\u0431\u044b", - "LiveTvPluginRequired": "\u0414\u043b\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d-\u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a \u0443\u0441\u043b\u0443\u0433 \u0422\u0412-\u044d\u0444\u0438\u0440\u0430.", - "LiveTvPluginRequiredHelp": "\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043e\u0434\u0438\u043d \u0438\u0437 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, NextPVR \u0438\u043b\u0438 ServerWMC.", + "LiveTvPluginRequired": "\u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d-\u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a \u0443\u0441\u043b\u0443\u0433 \u0422\u0412-\u044d\u0444\u0438\u0440\u0430.", + "LiveTvPluginRequiredHelp": "\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043e\u0434\u0438\u043d \u0438\u0437 \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, NextPVR \u0438\u043b\u0438 ServerWMC.", "LabelCustomizeOptionsPerMediaType": "\u041f\u043e\u0434\u0433\u043e\u043d\u043a\u0430 \u043f\u043e \u0442\u0438\u043f\u0443 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445:", - "OptionDownloadThumbImage": "\u042d\u0441\u043a\u0438\u0437\u044b", + "OptionDownloadThumbImage": "\u0411\u0435\u0433\u0443\u043d\u043e\u043a", "OptionDownloadMenuImage": "\u041c\u0435\u043d\u044e", "OptionDownloadLogoImage": "\u041b\u043e\u0433\u043e\u0442\u0438\u043f", - "OptionDownloadBoxImage": "DVD-\u0431\u043e\u043a\u0441", + "OptionDownloadBoxImage": "\u041a\u043e\u0440\u043e\u0431\u043a\u0430", "OptionDownloadDiscImage": "\u0414\u0438\u0441\u043a", "OptionDownloadBannerImage": "\u0411\u0430\u043d\u043d\u0435\u0440", - "OptionDownloadBackImage": "\u0417\u0430\u0434\u043d\u0435\u0435", - "OptionDownloadArtImage": "\u0420\u0438\u0441\u0443\u043d\u043e\u043a", - "OptionDownloadPrimaryImage": "\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435", - "HeaderFetchImages": "\u0412\u044b\u0431\u043e\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439:", - "HeaderImageSettings": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f", + "OptionDownloadBackImage": "\u0421\u043f\u0438\u043d\u043a\u0430", + "OptionDownloadArtImage": "\u0412\u0438\u043d\u044c\u0435\u0442\u043a\u0430", + "OptionDownloadPrimaryImage": "\u041f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439", + "HeaderFetchImages": "\u041e\u0442\u0431\u043e\u0440\u043a\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432:", + "HeaderImageSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432", "TabOther": "\u0414\u0440\u0443\u0433\u0438\u0435", - "LabelMaxBackdropsPerItem": "\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0444\u043e\u043d\u043e\u0432\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442:", - "LabelMaxScreenshotsPerItem": "\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u043e\u0432 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442:", - "LabelMinBackdropDownloadWidth": "\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0448\u0438\u0440\u0438\u043d\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u043e\u0433\u043e \u0444\u043e\u043d\u043e\u0432\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f:", - "LabelMinScreenshotDownloadWidth": "\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0448\u0438\u0440\u0438\u043d\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0430:", + "LabelMaxBackdropsPerItem": "\u041c\u0430\u043a\u0441. \u0447\u0438\u0441\u043b\u043e \u0437\u0430\u0434\u043d\u0438\u043a\u043e\u0432 \u043d\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442:", + "LabelMaxScreenshotsPerItem": "\u041c\u0430\u043a\u0441. \u0447\u0438\u0441\u043b\u043e \u0441\u043d\u0438\u043c\u043a\u043e\u0432 \u044d\u043a\u0440\u0430\u043d\u0430 \u043d\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442:", + "LabelMinBackdropDownloadWidth": "\u041c\u0438\u043d. \u0448\u0438\u0440\u0438\u043d\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u043e\u0433\u043e \u0437\u0430\u0434\u043d\u0438\u043a\u0430:", + "LabelMinScreenshotDownloadWidth": "\u041c\u0438\u043d. \u0448\u0438\u0440\u0438\u043d\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u043e\u0433\u043e \u0441\u043d\u0438\u043c\u043a\u0430 \u044d\u043a\u0440\u0430\u043d\u0430:", "ButtonAddScheduledTaskTrigger": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u0440\u0438\u0433\u0433\u0435\u0440", "HeaderAddScheduledTaskTrigger": "\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430", "ButtonAdd": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c", @@ -431,14 +465,14 @@ "HeaderTvTuners": "\u0422\u044e\u043d\u0435\u0440\u044b", "HeaderGallery": "\u0413\u0430\u043b\u0435\u0440\u0435\u044f", "HeaderLatestGames": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0438\u0433\u0440\u044b", - "HeaderRecentlyPlayedGames": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u0435 \u0438\u0433\u0440\u044b", + "HeaderRecentlyPlayedGames": "C\u044b\u0433\u0440\u0430\u043d\u043d\u044b\u0435 \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0438\u0433\u0440\u044b", "TabGameSystems": "\u0418\u0433\u0440\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b", "TitleMediaLibrary": "\u041c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0430", "TabFolders": "\u041f\u0430\u043f\u043a\u0438", - "TabPathSubstitution": "\u0417\u0430\u043c\u0435\u043d\u0430 \u043f\u0443\u0442\u0435\u0439", + "TabPathSubstitution": "\u041f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u0443\u0442\u0435\u0439", "LabelSeasonZeroDisplayName": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0435\u0437\u043e\u043d\u0430 0:", "LabelEnableRealtimeMonitor": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438", - "LabelEnableRealtimeMonitorHelp": "\u0412 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u0437\u0430\u043c\u0435\u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e.", + "LabelEnableRealtimeMonitorHelp": "\u0412 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u043f\u0440\u0430\u0432\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u0437\u0430\u043c\u0435\u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e.", "ButtonScanLibrary": "\u0421\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0443", "HeaderNumberOfPlayers": "\u0418\u0433\u0440\u043e\u043a\u0438:", "OptionAnyNumberOfPlayers": "\u041b\u044e\u0431\u044b\u0435", @@ -446,59 +480,59 @@ "Option2Player": "2+", "Option3Player": "3+", "Option4Player": "4+", - "HeaderMediaFolders": "\u041f\u0430\u043f\u043a\u0438 \u0441 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438", - "HeaderThemeVideos": "\u0412\u0438\u0434\u0435\u043e \u043f\u043e \u0442\u0435\u043c\u0435", - "HeaderThemeSongs": "\u041c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0435\u043c\u044b", + "HeaderMediaFolders": "\u041c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043a\u0438", + "HeaderThemeVideos": "\u0422\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u0438\u0434\u0435\u043e", + "HeaderThemeSongs": "\u0422\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u0435\u043b\u043e\u0434\u0438\u0438", "HeaderScenes": "\u0421\u0446\u0435\u043d\u044b", "HeaderAwardsAndReviews": "\u041d\u0430\u0433\u0440\u0430\u0434\u044b \u0438 \u0440\u0435\u0446\u0435\u043d\u0437\u0438\u0438", "HeaderSoundtracks": "\u0421\u0430\u0443\u043d\u0434\u0442\u0440\u0435\u043a\u0438", - "HeaderMusicVideos": "\u041c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0438\u0434\u0435\u043e\u043a\u043b\u0438\u043f\u044b", + "HeaderMusicVideos": "\u041c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0438\u0434\u0435\u043e", "HeaderSpecialFeatures": "\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b", "HeaderCastCrew": "\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u0441\u044a\u0451\u043c\u043e\u043a", - "HeaderAdditionalParts": "\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438", - "ButtonSplitVersionsApart": "\u0420\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u0438", - "ButtonPlayTrailer": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440", + "HeaderAdditionalParts": "\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0447\u0430\u0441\u0442\u0438", + "ButtonSplitVersionsApart": "\u0420\u0430\u0437\u0431\u0438\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u043e\u0440\u043e\u0437\u043d\u044c", + "ButtonPlayTrailer": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440...", "LabelMissing": "\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442", "LabelOffline": "\u0410\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e", - "PathSubstitutionHelp": "\u0417\u0430\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043f\u0443\u0442\u0435\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0443\u0442\u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0441 \u043f\u0443\u0442\u0451\u043c, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f. \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u043e\u043d\u0438 \u0434\u0430\u044e\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043f\u043e \u0441\u0435\u0442\u0438 \u0431\u0435\u0437 \u0437\u0430\u0442\u0440\u0430\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043d\u0430 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u044e \u0438 \u043f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0443.", + "PathSubstitutionHelp": "\u041f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u0443\u0442\u0435\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0443\u0442\u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0441 \u043f\u0443\u0442\u0451\u043c, \u043a\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f. \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0438\u0445 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043f\u043e \u0441\u0435\u0442\u0438, \u0438 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0437\u0430\u0442\u0440\u0430\u0442\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043d\u0430 \u0438\u0445 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u044e \u0438 \u043f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0443.", "HeaderFrom": "\u0418\u0441\u0445\u043e\u0434\u043d\u043e\u0435", "HeaderTo": "\u041a\u043e\u043d\u0435\u0447\u043d\u043e\u0435", "LabelFrom": "\u0418\u0441\u0445\u043e\u0434\u043d\u043e\u0435:", "LabelFromHelp": "\u041f\u0440\u0438\u043c\u0435\u0440: D:\\Movies (\u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435)", "LabelTo": "\u041a\u043e\u043d\u0435\u0447\u043d\u043e\u0435:", "LabelToHelp": "\u041f\u0440\u0438\u043c\u0435\u0440: \\\\MyServer\\Movies (\u043f\u0443\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c)", - "ButtonAddPathSubstitution": "\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u043c\u0435\u0449\u0435\u043d\u0438\u044f", + "ButtonAddPathSubstitution": "\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438", "OptionSpecialEpisode": "\u0421\u043f\u0435\u0446. \u044d\u043f\u0438\u0437\u043e\u0434\u044b", - "OptionMissingEpisode": "\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b", - "OptionUnairedEpisode": "\u041d\u0435\u0432\u044b\u0448\u0435\u0434\u0448\u0438\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b", - "OptionEpisodeSortName": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u0430 \u0434\u043b\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438", + "OptionMissingEpisode": "\u041d\u0435\u0442 \u044d\u043f\u0438\u0437\u043e\u0434\u043e\u0432", + "OptionUnairedEpisode": "\u041e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b", + "OptionEpisodeSortName": "\u0421\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u0430", "OptionSeriesSortName": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0435\u0440\u0438\u0430\u043b\u0430", - "OptionTvdbRating": "\u0420\u0435\u0439\u0442\u0438\u043d\u0433 TVDb", + "OptionTvdbRating": "\u041e\u0446\u0435\u043d\u043a\u0430 TVDb", "HeaderTranscodingQualityPreference": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u043f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0438:", "OptionAutomaticTranscodingHelp": "\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0431\u0443\u0434\u0443\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c\u0441\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c", "OptionHighSpeedTranscodingHelp": "\u0411\u043e\u043b\u0435\u0435 \u043d\u0438\u0437\u043a\u043e\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e, \u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u043e\u0435 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435", - "OptionHighQualityTranscodingHelp": "\u0411\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e, \u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e\u0435 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435", - "OptionMaxQualityTranscodingHelp": "\u041d\u0430\u0438\u043b\u0443\u0447\u0448\u0435\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0441 \u0431\u043e\u043b\u0435\u0435 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u043c \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c, \u0438 \u0432\u044b\u0441\u043e\u043a\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430", + "OptionHighQualityTranscodingHelp": "\u0411\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e, \u043d\u043e \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435", + "OptionMaxQualityTranscodingHelp": "\u041d\u0430\u0438\u043b\u0443\u0447\u0448\u0435\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e, \u043d\u043e \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435, \u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043d\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u0448\u0435", "OptionHighSpeedTranscoding": "\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u044b\u0448\u0435", "OptionHighQualityTranscoding": "\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u044b\u0448\u0435", "OptionMaxQualityTranscoding": "\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e", "OptionEnableDebugTranscodingLogging": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0438 \u0432 \u0416\u0443\u0440\u043d\u0430\u043b\u0435", - "OptionEnableDebugTranscodingLoggingHelp": "\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0444\u0430\u0439\u043b\u044b \u0416\u0443\u0440\u043d\u0430\u043b\u0430 \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043e\u0431\u044a\u0451\u043c\u0430, \u0430 \u044d\u0442\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0435\u043f\u043e\u043b\u0430\u0434\u043e\u043a.", - "EditCollectionItemsHelp": "\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u043b\u044e\u0431\u044b\u0435 \u0444\u0438\u043b\u044c\u043c\u044b, \u0441\u0435\u0440\u0438\u0430\u043b\u044b, \u0430\u043b\u044c\u0431\u043e\u043c\u044b, \u043a\u043d\u0438\u0433\u0438 \u0438\u043b\u0438 \u0438\u0433\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u043e\u0442\u0438\u0442\u0435 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.", - "HeaderAddTitles": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438", + "OptionEnableDebugTranscodingLoggingHelp": "\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0444\u0430\u0439\u043b\u044b \u0416\u0443\u0440\u043d\u0430\u043b\u0430 \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043e\u0431\u044a\u0451\u043c\u0430, \u0430 \u044d\u0442\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0435\u043f\u043e\u043b\u0430\u0434\u043e\u043a.", + "EditCollectionItemsHelp": "\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0438\u043b\u0438 \u0438\u0437\u044b\u043c\u0438\u0442\u0435 \u043b\u044e\u0431\u044b\u0435 \u0444\u0438\u043b\u044c\u043c\u044b, \u0441\u0435\u0440\u0438\u0430\u043b\u044b, \u0430\u043b\u044c\u0431\u043e\u043c\u044b, \u043a\u043d\u0438\u0433\u0438 \u0438\u043b\u0438 \u0438\u0433\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u043e\u0442\u0438\u0442\u0435 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.", + "HeaderAddTitles": "\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0439", "LabelEnableDlnaPlayTo": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c DLNA-\u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u041d\u0430", - "LabelEnableDlnaPlayToHelp": "Emby \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0430\u0448\u0435\u0439 \u0441\u0435\u0442\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043c\u0438.", + "LabelEnableDlnaPlayToHelp": "\u0412 Emby \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0435\u0442\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043c\u0438.", "LabelEnableDlnaDebugLogging": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 DLNA \u0432 \u0416\u0443\u0440\u043d\u0430\u043b\u0435", - "LabelEnableDlnaDebugLoggingHelp": "\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0444\u0430\u0439\u043b\u044b \u0416\u0443\u0440\u043d\u0430\u043b\u0430 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043e\u0431\u044a\u0451\u043c\u0430, \u0430 \u044d\u0442\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0435\u043f\u043e\u043b\u0430\u0434\u043e\u043a.", + "LabelEnableDlnaDebugLoggingHelp": "\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0431\u044a\u0451\u043c\u0438\u0441\u0442\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0416\u0443\u0440\u043d\u0430\u043b\u0430, \u0430 \u044d\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0435\u043f\u043e\u043b\u0430\u0434\u043e\u043a.", "LabelEnableDlnaClientDiscoveryInterval": "\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, \u0441", "LabelEnableDlnaClientDiscoveryIntervalHelp": "\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 \u043c\u0435\u0436\u0434\u0443 SSDP-\u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u043e\u0442 Emby.", "HeaderCustomDlnaProfiles": "\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0438", "HeaderSystemDlnaProfiles": "\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0438", "CustomDlnaProfilesHelp": "\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c.", - "SystemDlnaProfilesHelp": "\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u0432 \u043d\u043e\u0432\u043e\u043c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u0435.", + "SystemDlnaProfilesHelp": "\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f. \u041f\u0440\u0430\u0432\u043a\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u0432 \u043d\u043e\u0432\u043e\u043c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u0435.", "TitleDashboard": "\u0418\u043d\u0444\u043e\u043f\u0430\u043d\u0435\u043b\u044c", "TabHome": "\u0413\u043b\u0430\u0432\u043d\u043e\u0435", - "TabInfo": "\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f", + "TabInfo": "\u0418\u043d\u0444\u043e", "HeaderLinks": "\u0421\u0441\u044b\u043b\u043a\u0438", "HeaderSystemPaths": "\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043f\u0443\u0442\u0438", "LinkCommunity": "\u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e", @@ -507,7 +541,7 @@ "LinkApiDocumentation": "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e API", "LabelFriendlyServerName": "\u041f\u043e\u043d\u044f\u0442\u043d\u043e\u0435 \u0438\u043c\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430:", "LabelFriendlyServerNameHelp": "\u0414\u0430\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u041f\u0440\u0438 \u043d\u0435\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u043e\u043c \u043f\u043e\u043b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u043c\u044f \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430.", - "LabelPreferredDisplayLanguage": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u044f\u0437\u044b\u043a:", + "LabelPreferredDisplayLanguage": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u044f\u0437\u044b\u043a \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f:", "LabelPreferredDisplayLanguageHelp": "\u041f\u0435\u0440\u0435\u0432\u043e\u0434 Emby - \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0435\u0449\u0451 \u043d\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d.", "LabelReadHowYouCanContribute": "\u0427\u0438\u0442\u0430\u0439\u0442\u0435 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0432\u043d\u0435\u0441\u0442\u0438 \u0441\u0432\u043e\u0439 \u0432\u043a\u043b\u0430\u0434.", "HeaderNewCollection": "\u041d\u043e\u0432\u0430\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f", @@ -526,48 +560,46 @@ "LabelHttpsPort": "\u041d\u043e\u043c\u0435\u0440 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e HTTPS-\u043f\u043e\u0440\u0442\u0430:", "LabelHttpsPortHelp": "TCP-\u043f\u043e\u0440\u0442, \u043a\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0443 HTTPS-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 Emby.", "LabelWebSocketPortNumber": "\u041d\u043e\u043c\u0435\u0440 \u043f\u043e\u0440\u0442\u0430 \u0432\u0435\u0431-\u0441\u043e\u043a\u0435\u0442\u0430:", - "LabelEnableAutomaticPortMap": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u043e\u0432", - "LabelEnableAutomaticPortMapHelp": "\u041f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043f\u043e\u0440\u0442 \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u0440\u0442\u043e\u043c \u0447\u0435\u0440\u0435\u0437 UPnP. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432.", + "LabelEnableAutomaticPortMap": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u043e\u0432", + "LabelEnableAutomaticPortMapHelp": "\u041f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043f\u043e\u0440\u0442 \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u0440\u0442\u043e\u043c \u0447\u0435\u0440\u0435\u0437 UPnP. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432.", "LabelExternalDDNS": "\u0412\u043d\u0435\u0448\u043d\u0438\u0439 WAN-\u0430\u0434\u0440\u0435\u0441:", - "LabelExternalDDNSHelp": "\u0415\u0441\u043b\u0438 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 DNS, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0435\u0433\u043e \u0437\u0434\u0435\u0441\u044c. Emby-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u043f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438. \u041d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0439\u0442\u0435 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f.", + "LabelExternalDDNSHelp": "\u0415\u0441\u043b\u0438 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 DNS, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0435\u0433\u043e \u0437\u0434\u0435\u0441\u044c. \u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f Emby-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438. \u041d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0439\u0442\u0435 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f.", "TabResume": "\u0412\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435", "TabWeather": "\u041f\u043e\u0433\u043e\u0434\u0430", - "TitleAppSettings": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f", - "LabelMinResumePercentage": "\u041c\u0438\u043d. \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u044f, %:", - "LabelMaxResumePercentage": "\u041c\u0430\u043a\u0441. \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u044f, %:", - "LabelMinResumeDuration": "\u041c\u0438\u043d. \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u044f, \u0441:", - "LabelMinResumePercentageHelp": "\u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0441\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u043d\u0435\u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u043c\u0438, \u0435\u0441\u043b\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438.", - "LabelMaxResumePercentageHelp": "\u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0441\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u043c\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e, \u0435\u0441\u043b\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438.", - "LabelMinResumeDurationHelp": "\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043c\u0435\u043d\u0435\u0435 \u0434\u0430\u043d\u043d\u043e\u0439", - "TitleAutoOrganize": "\u0410\u0432\u0442\u043e\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f", + "TitleAppSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f", + "LabelMinResumePercentage": "\u041c\u0438\u043d. \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f, %:", + "LabelMaxResumePercentage": "\u041c\u0430\u043a\u0441. \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f, %:", + "LabelMinResumeDuration": "\u041c\u0438\u043d. \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f, \u0441:", + "LabelMinResumePercentageHelp": "\u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0441\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u043d\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u043c\u0438, \u043f\u0440\u0438 \u0441\u0442\u043e\u043f\u0435 \u0434\u043e \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430", + "LabelMaxResumePercentageHelp": "\u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0441\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u043c\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e, \u043f\u0440\u0438 \u0441\u0442\u043e\u043f\u0435 \u043f\u043e\u0441\u043b\u0435 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430", + "LabelMinResumeDurationHelp": "\u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u043c\u044b\u043c\u0438 \u043f\u0440\u0438 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043c\u0435\u043d\u0435\u0435 \u0434\u0430\u043d\u043d\u043e\u0433\u043e", + "TitleAutoOrganize": "\u0410\u0432\u0442\u043e\u0440\u0435\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f", "TabActivityLog": "\u0416\u0443\u0440\u043d\u0430\u043b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439", "HeaderName": "\u0418\u043c\u044f (\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435)", "HeaderDate": "\u0414\u0430\u0442\u0430", "HeaderSource": "\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a", - "HeaderDestination": "\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435", + "HeaderDestination": "\u041a\u0443\u0434\u0430", "HeaderProgram": "\u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430", "HeaderClients": "\u041a\u043b\u0438\u0435\u043d\u0442\u044b", "LabelCompleted": "\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e", "LabelFailed": "\u041d\u0435\u0443\u0434\u0430\u0447\u043d\u043e", - "LabelSkipped": "\u041f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043e", - "HeaderEpisodeOrganization": "\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u044d\u043f\u0438\u0437\u043e\u0434\u0430", + "LabelSkipped": "\u041e\u0442\u043b\u043e\u0436\u0435\u043d\u043e", + "HeaderEpisodeOrganization": "\u0420\u0435\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u044d\u043f\u0438\u0437\u043e\u0434\u0430", "LabelSeries": "\u0421\u0435\u0440\u0438\u0430\u043b:", - "LabelSeasonNumber": "\u041d\u043e\u043c\u0435\u0440 \u0441\u0435\u0437\u043e\u043d\u0430:", - "LabelEpisodeNumber": "\u041d\u043e\u043c\u0435\u0440 \u044d\u043f\u0438\u0437\u043e\u0434\u0430:", - "LabelEndingEpisodeNumber": "\u041d\u043e\u043c\u0435\u0440 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0435\u0433\u043e \u044d\u043f\u0438\u0437\u043e\u0434\u0430:", + "LabelEndingEpisodeNumber": "\u041d\u043e\u043c\u0435\u0440 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u044d\u043f\u0438\u0437\u043e\u0434\u0430:", "LabelEndingEpisodeNumberHelp": "\u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u043e\u0432, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043f\u0438\u0437\u043e\u0434\u043e\u0432", "HeaderSupportTheTeam": "\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 Emby", - "LabelSupportAmount": "\u0421\u0443\u043c\u043c\u0430 (USD)", - "HeaderSupportTheTeamHelp": "\u041f\u043e\u043c\u043e\u0433\u0438\u0442\u0435 \u043f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0435 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0427\u0430\u0441\u0442\u044c \u0432\u0441\u0435\u0445 \u043f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u043b\u043e\u0436\u0435\u043d\u0430 \u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c.", + "LabelSupportAmount": "\u0421\u0443\u043c\u043c\u0430, USD", + "HeaderSupportTheTeamHelp": "\u041f\u043e\u043c\u043e\u0433\u0438\u0442\u0435 \u043f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0435 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0427\u0430\u0441\u0442\u044c \u0432\u0441\u0435\u0445 \u043f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u043b\u043e\u0436\u0435\u043d\u0430 \u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c\u0441\u044f.", "ButtonEnterSupporterKey": "\u0412\u0432\u0435\u0441\u0442\u0438 \u043a\u043b\u044e\u0447 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430", - "DonationNextStep": "\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u043d\u0438\u0442\u0435\u0441\u044c \u0438 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043b\u044e\u0447 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043f\u043e \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u0435.", - "AutoOrganizeHelp": "\u0421\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u0430\u0432\u0442\u043e\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 \u043f\u0430\u043f\u043a\u0430\u0445 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442 \u0438\u0445 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445.", - "AutoOrganizeTvHelp": "\u041f\u0440\u0438 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0422\u0412-\u0444\u0430\u0439\u043b\u043e\u0432, \u044d\u043f\u0438\u0437\u043e\u0434\u044b \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0441\u0435\u0440\u0438\u0430\u043b\u044b. \u041f\u0430\u043f\u043a\u0438 \u0434\u043b\u044f \u043d\u043e\u0432\u044b\u0445 \u0441\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f.", - "OptionEnableEpisodeOrganization": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044e \u043d\u043e\u0432\u044b\u0445 \u044d\u043f\u0438\u0437\u043e\u0434\u043e\u0432", - "LabelWatchFolder": "\u041f\u0430\u043f\u043a\u0430 \u0434\u043b\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f:", - "LabelWatchFolderHelp": "\u0421\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u043f\u0440\u043e\u0441 \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 \u0432 \u0445\u043e\u0434\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u00ab\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u043e\u0432\u00bb.", - "ButtonViewScheduledTasks": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0437\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438", - "LabelMinFileSizeForOrganize": "\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430, \u041c\u0411:", + "DonationNextStep": "\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u043d\u0438\u0442\u0435\u0441\u044c, \u0438 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043b\u044e\u0447 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043f\u043e \u042d-\u043f\u043e\u0447\u0442\u0435.", + "AutoOrganizeHelp": "\u0421\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u0430\u0432\u0442\u043e\u0440\u0435\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0430\u043f\u043a\u0443 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u043e\u0432\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u0438 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442 \u0438\u0445 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445.", + "AutoOrganizeTvHelp": "\u041f\u0440\u0438 \u0440\u0435\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0422\u0412-\u0444\u0430\u0439\u043b\u043e\u0432, \u044d\u043f\u0438\u0437\u043e\u0434\u044b \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0441\u0435\u0440\u0438\u0430\u043b\u044b. \u041f\u0430\u043f\u043a\u0438 \u0434\u043b\u044f \u043d\u043e\u0432\u044b\u0445 \u0441\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f.", + "OptionEnableEpisodeOrganization": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0435\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044e \u043d\u043e\u0432\u044b\u0445 \u044d\u043f\u0438\u0437\u043e\u0434\u043e\u0432", + "LabelWatchFolder": "\u041f\u0430\u043f\u043a\u0430 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f:", + "LabelWatchFolderHelp": "\u0421\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u043f\u0440\u043e\u0441 \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 \u0432 \u0445\u043e\u0434\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u00ab\u0420\u0435\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u043e\u0432\u00bb.", + "ButtonViewScheduledTasks": "\u0421\u043c. \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438", + "LabelMinFileSizeForOrganize": "\u041c\u0438\u043d. \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430, \u041c\u0411:", "LabelMinFileSizeForOrganizeHelp": "\u0411\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0444\u0430\u0439\u043b\u044b \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u043c\u0435\u043d\u0435\u0435 \u0434\u0430\u043d\u043d\u043e\u0433\u043e.", "LabelSeasonFolderPattern": "\u0428\u0430\u0431\u043b\u043e\u043d \u043f\u0430\u043f\u043a\u0438 \u0441\u0435\u0437\u043e\u043d\u0430:", "LabelSeasonZeroFolderName": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043f\u043a\u0438 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0441\u0435\u0437\u043e\u043d\u0430:", @@ -578,68 +610,68 @@ "HeaderTerm": "\u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435", "HeaderPattern": "\u0428\u0430\u0431\u043b\u043e\u043d", "HeaderResult": "\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442", - "LabelDeleteEmptyFolders": "\u0423\u0434\u0430\u043b\u044f\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u0435 \u043f\u0430\u043f\u043a\u0438 \u043f\u043e\u0441\u043b\u0435 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438", - "LabelDeleteEmptyFoldersHelp": "\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u043e\u043f\u0446\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0443 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0447\u0438\u0441\u0442\u043e\u0439.", - "LabelDeleteLeftOverFiles": "\u0423\u0434\u0430\u043b\u044f\u0442\u044c \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u0444\u0430\u0439\u043b\u044b \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043c\u0438:", + "LabelDeleteEmptyFolders": "\u0423\u0434\u0430\u043b\u044f\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u0435 \u043f\u0430\u043f\u043a\u0438 \u043f\u043e\u0441\u043b\u0435 \u0440\u0435\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438", + "LabelDeleteEmptyFoldersHelp": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u043e\u0433\u043e \u0447\u0438\u0441\u0442\u044b\u043c.", + "LabelDeleteLeftOverFiles": "\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043c\u0438:", "LabelDeleteLeftOverFilesHelp": "\u0420\u0430\u0437\u0434\u0435\u043b\u044f\u0439\u0442\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u00ab;\u00bb. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: .nfo;.txt", "OptionOverwriteExistingEpisodes": "\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b", "LabelTransferMethod": "\u041c\u0435\u0442\u043e\u0434 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430", "OptionCopy": "\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435", "OptionMove": "\u041f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435", - "LabelTransferMethodHelp": "\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u0437 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u043f\u0430\u043f\u043a\u0438", + "LabelTransferMethodHelp": "\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u0437 \u043f\u0430\u043f\u043a\u0438 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f", "HeaderLatestNews": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0441\u0442\u0438", "HeaderHelpImproveProject": "\u041f\u043e\u043c\u043e\u0433\u0438\u0442\u0435 \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c Emby", - "HeaderRunningTasks": "\u0417\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438", + "HeaderRunningTasks": "\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0435\u0441\u044f \u0437\u0430\u0434\u0430\u0447\u0438", "HeaderActiveDevices": "\u0410\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430", "HeaderPendingInstallations": "\u041e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438", - "HeaderServerInformation": "\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0435", + "HeaderServerInformation": "\u041e \u0441\u0435\u0440\u0432\u0435\u0440\u0435", "ButtonRestartNow": "\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e", "ButtonRestart": "\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c", "ButtonShutdown": "\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443", "ButtonUpdateNow": "\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e", "TabHosting": "\u0420\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435", "PleaseUpdateManually": "\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e.", - "NewServerVersionAvailable": "\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f Emby Server!", - "ServerUpToDate": "Emby Server \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438", + "NewServerVersionAvailable": "\u0418\u043c\u0435\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f Emby Server!", + "ServerUpToDate": "Emby Server - \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438", "LabelComponentsUpdated": "\u0411\u044b\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0438\u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b:", "MessagePleaseRestartServerToFinishUpdating": "\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0441\u0435\u0440\u0432\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439.", - "LabelDownMixAudioScale": "\u041a\u043e\u043c\u043f\u0435\u043d\u0441\u0430\u0446\u0438\u044f \u0437\u0432\u0443\u043a\u0430 \u043f\u0440\u0438 \u043f\u043e\u043d\u0438\u0436\u0430\u044e\u0449\u0435\u043c \u043c\u0438\u043a\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438:", + "LabelDownMixAudioScale": "\u041a\u043e\u043c\u043f\u0435\u043d\u0441\u0430\u0446\u0438\u044f \u043f\u0440\u0438 \u043f\u043e\u043d\u0438\u0436\u0430\u044e\u0449\u0435\u043c \u043c\u0438\u043a\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438:", "LabelDownMixAudioScaleHelp": "\u041a\u043e\u043c\u043f\u0435\u043d\u0441\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0437\u0432\u0443\u043a\u0430 \u043f\u0440\u0438 \u043f\u043e\u043d\u0438\u0436\u0430\u044e\u0449\u0435\u043c \u043c\u0438\u043a\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 1, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u044f.", "ButtonLinkKeys": "\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u043a\u043b\u044e\u0447\u0430", "LabelOldSupporterKey": "\u0421\u0442\u0430\u0440\u044b\u0439 \u043a\u043b\u044e\u0447 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430", "LabelNewSupporterKey": "\u041d\u043e\u0432\u044b\u0439 \u043a\u043b\u044e\u0447 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430", "HeaderMultipleKeyLinking": "\u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a \u043d\u043e\u0432\u043e\u043c\u0443 \u043a\u043b\u044e\u0447\u0443", - "MultipleKeyLinkingHelp": "\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u043a\u043b\u044e\u0447, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u0434\u0430\u043d\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u043e\u0439 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0441\u043e \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439.", - "LabelCurrentEmailAddress": "\u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b", + "MultipleKeyLinkingHelp": "\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u043a\u043b\u044e\u0447 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u0434\u0430\u043d\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u043e\u0439, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u0441\u0442\u0430\u0440\u043e\u043c \u043a\u043b\u044e\u0447\u0435 \u043a \u043d\u043e\u0432\u043e\u043c\u0443.", + "LabelCurrentEmailAddress": "\u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 \u042d-\u043f\u043e\u0447\u0442\u044b", "LabelCurrentEmailAddressHelp": "\u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u043d\u043e\u0432\u044b\u0439 \u043a\u043b\u044e\u0447.", "HeaderForgotKey": "\u0417\u0430\u0431\u044b\u043b\u0438 \u043a\u043b\u044e\u0447?", "LabelEmailAddress": "\u0410\u0434\u0440\u0435\u0441 \u042d-\u043f\u043e\u0447\u0442\u044b", - "LabelSupporterEmailAddress": "\u0410\u0434\u0440\u0435\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u044f \u043a\u043b\u044e\u0447\u0430.", + "LabelSupporterEmailAddress": "\u0410\u0434\u0440\u0435\u0441 \u042d-\u043f\u043e\u0447\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u044f \u043a\u043b\u044e\u0447\u0430.", "ButtonRetrieveKey": "\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u043b\u044e\u0447", - "LabelSupporterKey": "\u041a\u043b\u044e\u0447 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430 (\u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0437 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b)", - "LabelSupporterKeyHelp": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043b\u044e\u0447 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c \u0434\u043b\u044f Emby.", + "LabelSupporterKey": "\u041a\u043b\u044e\u0447 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430 (\u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0437 \u043f\u0438\u0441\u044c\u043c\u0430 \u043f\u043e \u042d-\u043f\u043e\u0447\u0442\u0435)", + "LabelSupporterKeyHelp": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043b\u044e\u0447 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c \u0434\u043b\u044f Emby.", "MessageInvalidKey": "\u041a\u043b\u044e\u0447 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u043b\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c.", "ErrorMessageInvalidKey": "\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0435 \u043f\u0440\u0435\u043c\u0438\u0443\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u0436\u0435 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u043e\u043c Emby. \u0421\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u043f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0442\u0435 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0443\u044e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043e\u0441\u043d\u043e\u0432\u043e\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430.", "HeaderDisplaySettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f", "TabPlayTo": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u041d\u0430", "LabelEnableDlnaServer": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c DLNA-\u0441\u0435\u0440\u0432\u0435\u0440", - "LabelEnableDlnaServerHelp": "UPnP-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c \u0432 \u0441\u0435\u0442\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445 Emby.", + "LabelEnableDlnaServerHelp": "UPnP-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0441\u0435\u0442\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f Emby.", "LabelEnableBlastAliveMessages": "\u0411\u043e\u043c\u0431\u0430\u0440\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438", "LabelEnableBlastAliveMessagesHelp": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435, \u0435\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0434\u0451\u0436\u043d\u043e \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438 UPnP \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0432 \u0441\u0435\u0442\u0438.", "LabelBlastMessageInterval": "\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438, \u0441", "LabelBlastMessageIntervalHelp": "\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.", - "LabelDefaultUser": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e:", + "LabelDefaultUser": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c:", "LabelDefaultUserHelp": "\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f, \u0447\u044c\u044e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0443 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043d\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445. \u041f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439.", "TitleDlna": "DLNA", "TitleChannels": "\u041a\u0430\u043d\u0430\u043b\u044b", - "HeaderServerSettings": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430", - "LabelWeatherDisplayLocation": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043f\u043e\u0433\u043e\u0434\u0443 \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f:", - "LabelWeatherDisplayLocationHelp": "\u041f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 \/ \u0413\u043e\u0440\u043e\u0434, \u0420\u0435\u0433\u0438\u043e\u043d, \u0421\u0442\u0440\u0430\u043d\u0430 \/ \u0413\u043e\u0440\u043e\u0434, \u0421\u0442\u0440\u0430\u043d\u0430", + "HeaderServerSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0430", + "LabelWeatherDisplayLocation": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0433\u043e\u0434\u044b \u0434\u043b\u044f \u043c\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u0438:", + "LabelWeatherDisplayLocationHelp": "\u041f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u043a\u043e\u0434 \u0421\u0428\u0410 \/ \u0413\u043e\u0440\u043e\u0434, \u0420\u0435\u0433\u0438\u043e\u043d, \u0421\u0442\u0440\u0430\u043d\u0430 \/ \u0413\u043e\u0440\u043e\u0434, \u0421\u0442\u0440\u0430\u043d\u0430", "LabelWeatherDisplayUnit": "\u0415\u0434\u0438\u043d\u0438\u0446\u0430 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b:", "OptionCelsius": "\u00b0\u0421", "OptionFahrenheit": "\u00b0F", - "HeaderRequireManualLogin": "\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u0440\u0443\u0447\u043d\u043e\u0439 \u0432\u0432\u043e\u0434 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445:", - "HeaderRequireManualLoginHelp": "\u0414\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u044d\u043a\u0440\u0430\u043d\u0430 \u0432\u0445\u043e\u0434\u0430 \u0441 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u043c \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.", + "HeaderRequireManualLogin": "\u0420\u0443\u0447\u043d\u043e\u0439 \u0432\u0432\u043e\u0434 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f:", + "HeaderRequireManualLoginHelp": "\u041f\u0440\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u044d\u043a\u0440\u0430\u043d\u0430 \u0432\u0445\u043e\u0434\u0430 \u0441 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u043c \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.", "OptionOtherApps": "\u0414\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f", "OptionMobileApps": "\u041c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f", "HeaderNotificationList": "\u0429\u0451\u043b\u043a\u043d\u0438\u0442\u0435 \u043f\u043e \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438.", @@ -648,12 +680,12 @@ "NotificationOptionPluginUpdateInstalled": "\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e", "NotificationOptionPluginInstalled": "\u041f\u043b\u0430\u0433\u0438\u043d \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d", "NotificationOptionPluginUninstalled": "\u041f\u043b\u0430\u0433\u0438\u043d \u0443\u0434\u0430\u043b\u0451\u043d", - "NotificationOptionVideoPlayback": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u043e \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e", - "NotificationOptionAudioPlayback": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0430\u0443\u0434\u0438\u043e \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e", - "NotificationOptionGamePlayback": "\u0418\u0433\u0440\u0430 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u0430", - "NotificationOptionVideoPlaybackStopped": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e", - "NotificationOptionAudioPlaybackStopped": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0430\u0443\u0434\u0438\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e", - "NotificationOptionGamePlaybackStopped": "\u0418\u0433\u0440\u0430 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430", + "NotificationOptionVideoPlayback": "\u0412\u043e\u0441\u043f\u0440-\u0438\u0435 \u0432\u0438\u0434\u0435\u043e \u0437\u0430\u043f-\u043d\u043e", + "NotificationOptionAudioPlayback": "\u0412\u043e\u0441\u043f\u0440-\u0438\u0435 \u0430\u0443\u0434\u0438\u043e \u0437\u0430\u043f-\u043d\u043e", + "NotificationOptionGamePlayback": "\u0412\u043e\u0441\u043f\u0440-\u0438\u0435 \u0438\u0433\u0440\u044b \u0437\u0430\u043f-\u043d\u043e", + "NotificationOptionVideoPlaybackStopped": "\u0412\u043e\u0441\u043f-\u0438\u0435 \u0432\u0438\u0434\u0435\u043e \u043e\u0441\u0442-\u043d\u043e", + "NotificationOptionAudioPlaybackStopped": "\u0412\u043e\u0441\u043f-\u0438\u0435 \u0430\u0443\u0434\u0438\u043e \u043e\u0441\u0442-\u043d\u043e", + "NotificationOptionGamePlaybackStopped": "\u0412\u043e\u0441\u043f-\u0438\u0435 \u0438\u0433\u0440\u044b \u043e\u0441\u0442-\u043d\u043e", "NotificationOptionTaskFailed": "\u0421\u0431\u043e\u0439 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438", "NotificationOptionInstallationFailed": "\u0421\u0431\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438", "NotificationOptionNewLibraryContent": "\u041d\u043e\u0432\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e", @@ -681,14 +713,14 @@ "ButtonArrowLeft": "\u0412\u043b\u0435\u0432\u043e", "ButtonArrowRight": "\u0412\u043f\u0440\u0430\u0432\u043e", "ButtonBack": "\u041d\u0430\u0437\u0430\u0434", - "ButtonInfo": "\u0418\u043d\u0444\u043e", - "ButtonOsd": "\u041a \u044d\u043a\u0440\u0430\u043d\u043d\u043e\u043c\u0443 \u043c\u0435\u043d\u044e", + "ButtonInfo": "\u0418\u043d\u0444\u043e...", + "ButtonOsd": "\u042d\u043a\u0440\u0430\u043d\u043d\u043e\u0435 \u043c\u0435\u043d\u044e...", "ButtonPageUp": "\u041d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432\u0432\u0435\u0440\u0445", "ButtonPageDown": "\u041d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432\u043d\u0438\u0437", "PageAbbreviation": "\u0421\u0422\u0420", - "ButtonHome": "\u0413\u043b\u0430\u0432\u043d\u043e\u0435", + "ButtonHome": "\u0413\u043b\u0430\u0432\u043d\u043e\u0435...", "ButtonSearch": "\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u0438\u0441\u043a", - "ButtonSettings": "\u041a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c", + "ButtonSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b...", "ButtonTakeScreenshot": "\u0421\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043d\u0438\u043c\u043e\u043a \u044d\u043a\u0440\u0430\u043d\u0430", "ButtonLetterUp": "\u041d\u0430 \u0431\u0443\u043a\u0432\u0443 \u0432\u0432\u0435\u0440\u0445", "ButtonLetterDown": "\u041d\u0430 \u0431\u0443\u043a\u0432\u0443 \u0432\u043d\u0438\u0437", @@ -697,16 +729,16 @@ "TabNowPlaying": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u043e\u0435", "TabNavigation": "\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f", "TabControls": "\u0420\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0438", - "ButtonFullscreen": "\u041f\u043e\u043b\u043d\u044b\u0439\/\u043d\u0435\u043f\u043e\u043b\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d", - "ButtonScenes": "\u041a \u0441\u0446\u0435\u043d\u0430\u043c", - "ButtonSubtitles": "\u041a \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0430\u043c", - "ButtonAudioTracks": "\u041a \u0430\u0443\u0434\u0438\u043e\u0434\u043e\u0440\u043e\u0436\u043a\u0430\u043c", - "ButtonPreviousTrack": "\u041a \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0434\u043e\u0440\u043e\u0436\u043a\u0435", - "ButtonNextTrack": "\u041a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0434\u043e\u0440\u043e\u0436\u043a\u0435", + "ButtonFullscreen": "\u0420\u0435\u0436\u0438\u043c \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0430...", + "ButtonScenes": "\u0421\u0446\u0435\u043d\u044b...", + "ButtonSubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u044b...", + "ButtonAudioTracks": "\u0410\u0443\u0434\u0438\u043e\u0434\u043e\u0440\u043e\u0436\u043a\u0438...", + "ButtonPreviousTrack": "\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0434\u043e\u0440\u043e\u0436\u043a\u0430...", + "ButtonNextTrack": "\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0434\u043e\u0440\u043e\u0436\u043a\u0430", "ButtonStop": "\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c", "ButtonPause": "\u041f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c", - "ButtonNext": "\u041a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443", - "ButtonPrevious": "\u041a \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443", + "ButtonNext": "\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435...", + "ButtonPrevious": "\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435\u0435...", "LabelGroupMoviesIntoCollections": "\u0413\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0438\u043b\u044c\u043c\u044b \u0432\u043d\u0443\u0442\u0440\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439", "LabelGroupMoviesIntoCollectionsHelp": "\u041f\u0440\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u0444\u0438\u043b\u044c\u043c\u043e\u0432\u044b\u0445 \u0441\u043f\u0438\u0441\u043a\u043e\u0432, \u0444\u0438\u043b\u044c\u043c\u044b, \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0438\u0435 \u043a\u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0435\u0434\u0438\u043d\u044b\u0439 \u0441\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442.", "NotificationOptionPluginError": "\u0421\u0431\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d\u0430", @@ -749,7 +781,7 @@ "TabContainers": "\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b", "TabCodecs": "\u041a\u043e\u0434\u0435\u043a\u0438", "TabResponses": "\u041e\u0442\u043a\u043b\u0438\u043a\u0438", - "HeaderProfileInformation": "\u0421\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u043f\u0440\u043e\u0444\u0438\u043b\u0435", + "HeaderProfileInformation": "\u041e \u043f\u0440\u043e\u0444\u0438\u043b\u0435", "LabelEmbedAlbumArtDidl": "\u0412\u043d\u0435\u0434\u0440\u044f\u0442\u044c \u0430\u043b\u044c\u0431\u043e\u043c\u043d\u044b\u0435 \u043e\u0431\u043b\u043e\u0436\u043a\u0438 \u0432 DIDL", "LabelEmbedAlbumArtDidlHelp": "\u0414\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0430\u043b\u044c\u0431\u043e\u043c\u043d\u044b\u0445 \u043e\u0431\u043b\u043e\u0436\u0435\u043a \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0442\u0435\u0440\u043f\u0435\u0442\u044c \u043d\u0435\u0443\u0434\u0430\u0447\u0443 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438.", "LabelAlbumArtPN": "PN \u0430\u043b\u044c\u0431\u043e\u043c\u043d\u043e\u0439 \u043e\u0431\u043b\u043e\u0436\u043a\u0438:", @@ -768,7 +800,7 @@ "LabelMaxBitrateHelp": "\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432 \u0441\u0440\u0435\u0434\u0430\u0445 \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c\u044e, \u043b\u0438\u0431\u043e, \u0435\u0441\u043b\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 - \u0435\u0433\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435.", "LabelMaxStreamingBitrate": "\u041c\u0430\u043a\u0441. \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438:", "LabelMaxStreamingBitrateHelp": "\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0440\u0438 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438.", - "LabelMaxChromecastBitrate": "Max Chromecast bitrate:", + "LabelMaxChromecastBitrate": "\u041c\u0430\u043a\u0441. \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0434\u043b\u044f Chromecast:", "LabelMaxStaticBitrate": "\u041c\u0430\u043a\u0441. \u043f\u043e\u0442\u043e\u043a. \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0441\u0438\u043d\u0445\u0440-\u0438\u0438:", "LabelMaxStaticBitrateHelp": "\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0440\u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0432\u043e \u0432\u044b\u0441\u043e\u043a\u043e\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435.", "LabelMusicStaticBitrate": "\u041f\u043e\u0442\u043e\u043a. \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0441\u0438\u043d\u0445\u0440-\u0438\u0438 \u043c\u0443\u0437\u044b\u043a\u0438:", @@ -841,10 +873,11 @@ "HeaderTypeText": "\u0412\u0432\u043e\u0434 \u0442\u0435\u043a\u0441\u0442\u0430", "LabelTypeText": "\u0422\u0435\u043a\u0441\u0442", "HeaderSearchForSubtitles": "\u041f\u043e\u0438\u0441\u043a \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432", + "ButtonMore": "\u0415\u0449\u0451", "MessageNoSubtitleSearchResultsFound": "\u041d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043f\u0440\u0438 \u043f\u043e\u0438\u0441\u043a\u0435.", "TabDisplay": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435", "TabLanguages": "\u042f\u0437\u044b\u043a\u0438", - "TabAppSettings": "App Settings", + "TabAppSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f", "LabelEnableThemeSongs": "\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0435\u043b\u043e\u0434\u0438\u0439", "LabelEnableBackdrops": "\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u043d\u0438\u043a\u043e\u0432", "LabelEnableThemeSongsHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u0435\u043b\u043e\u0434\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0444\u043e\u043d\u043e\u043c \u043f\u0440\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438.", @@ -855,7 +888,7 @@ "OptionYes": "\u0414\u0430", "OptionNo": "\u041d\u0435\u0442", "HeaderOptions": "\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b", - "HeaderIdentificationResult": "\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0441\u043f\u043e\u0437\u0430\u043d\u0438\u044f", + "HeaderIdentificationResult": "\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043d\u0438\u044f", "LabelHomePageSection1": "\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 - \u0440\u0430\u0437\u0434\u0435\u043b 1:", "LabelHomePageSection2": "\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 - \u0440\u0430\u0437\u0434\u0435\u043b 2:", "LabelHomePageSection3": "\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 - \u0440\u0430\u0437\u0434\u0435\u043b 3:", @@ -871,7 +904,7 @@ "HeaderLiveTv": "\u0422\u0412-\u044d\u0444\u0438\u0440", "HeaderReports": "\u041e\u0442\u0447\u0451\u0442\u044b", "HeaderMetadataManager": "\u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445", - "HeaderPreferences": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438", + "HeaderSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b", "MessageLoadingChannels": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u043a\u0430\u043d\u0430\u043b\u0430...", "MessageLoadingContent": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435...", "ButtonMarkRead": "\u041e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u043a\u0430\u043a \u043f\u0440\u043e\u0447\u0442\u0451\u043d\u043d\u043e\u0435", @@ -881,7 +914,7 @@ "PlaceholderUsername": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", "HeaderBecomeProjectSupporter": "\u0421\u0442\u0430\u043d\u044c\u0442\u0435 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u043e\u043c Emby", "MessageNoMovieSuggestionsAvailable": "\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c\u044b\u0445 \u0444\u0438\u043b\u044c\u043c\u043e\u0432. \u041d\u0430\u0447\u043d\u0438\u0442\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0444\u0438\u043b\u044c\u043c\u044b, \u0438 \u0442\u043e\u0433\u0434\u0430 \u0432\u0435\u0440\u043d\u0438\u0442\u0435\u0441\u044c \u043d\u0430\u0437\u0430\u0434, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438.", - "MessageNoCollectionsAvailable": "\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u043e\u0431\u0440\u0430\u043d\u0438\u044f\u043c\u0438 \u0444\u0438\u043b\u044c\u043c\u043e\u0432, \u0441\u0435\u0440\u0438\u0430\u043b\u043e\u0432, \u0430\u043b\u044c\u0431\u043e\u043c\u043e\u0432, \u043a\u043d\u0438\u0433 \u0438 \u0438\u0433\u0440. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \"+\", \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439.", + "MessageNoCollectionsAvailable": "\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0431\u043e\u0441\u043e\u0431\u043b\u0435\u043d\u043d\u044b\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u0438\u044f \u0444\u0438\u043b\u044c\u043c\u043e\u0432, \u0441\u0435\u0440\u0438\u0430\u043b\u043e\u0432, \u0430\u043b\u044c\u0431\u043e\u043c\u043e\u0432, \u043a\u043d\u0438\u0433 \u0438 \u0438\u0433\u0440. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \"+\", \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439.", "MessageNoPlaylistsAvailable": "\u0421\u043f\u0438\u0441\u043a\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0438\u0437 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0440\u0430\u0437\u043e\u043c. \u0427\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432\u043e \u0441\u043f\u0438\u0441\u043a\u0438, \u0449\u0435\u043b\u043a\u043d\u0438\u0442\u0435 \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438 \u0438\u043b\u0438 \u043a\u043e\u0441\u043d\u0438\u0442\u0435\u0441\u044c \u0438 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0439\u0442\u0435, \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u00ab\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f\u00bb.", "MessageNoPlaylistItemsAvailable": "\u0414\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0443\u0441\u0442.", "ButtonDismiss": "\u041f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u0442\u044c", @@ -896,7 +929,7 @@ "LabelChannelDownloadAge": "\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437, \u0434\u043d\u0438:", "LabelChannelDownloadAgeHelp": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0441\u0442\u0430\u0440\u0448\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u043e. \u0415\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438.", "ChannelSettingsFormHelp": "\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043a\u0430\u043d\u0430\u043b\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: Trailers \u0438\u043b\u0438 Vimeo) \u0438\u0437 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432.", - "ButtonOptions": "\u041a \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u043c", + "ButtonOptions": "\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b...", "ViewTypePlaylists": "\u0421\u043f\u0438\u0441\u043a\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f", "ViewTypeMovies": "\u041a\u0438\u043d\u043e", "ViewTypeTvShows": "\u0422\u0412", @@ -1012,7 +1045,7 @@ "LabelDateAdded": "\u0414\u0430\u0442\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f:", "HeaderFeatures": "\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b", "HeaderAdvanced": "\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0435", - "ButtonSync": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c", + "ButtonSync": "\u0421\u0438\u043d\u0445\u0440\u043e...", "TabScheduledTasks": "\u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a", "HeaderChapters": "\u0421\u0446\u0435\u043d\u044b", "HeaderResumeSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f", @@ -1024,7 +1057,7 @@ "LabelContext": "\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442:", "OptionContextStreaming": "\u0422\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u044f", "OptionContextStatic": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f", - "ButtonAddToPlaylist": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442", + "ButtonAddToPlaylist": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a \u0441\u043f\u0438\u0441\u043a\u0443 \u0432\u043e\u0441\u043f\u0440-\u0438\u044f", "TabPlaylists": "\u0421\u043f\u0438\u0441\u043a\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f", "ButtonClose": "\u0417\u0430\u043a\u0440\u044b\u0442\u044c", "LabelAllLanguages": "\u0412\u0441\u0435 \u044f\u0437\u044b\u043a\u0438", @@ -1069,7 +1102,6 @@ "OptionReportArtists": "\u0418\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0438", "OptionReportAlbums": "\u0410\u043b\u044c\u0431\u043e\u043c\u044b", "OptionReportAdultVideos": "\u0412\u0437\u0440\u043e\u0441\u043b\u044b\u0435 \u0432\u0438\u0434\u0435\u043e", - "ButtonMore": "\u0415\u0449\u0451", "HeaderActivity": "\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f", "ScheduledTaskStartedWithName": "{0} - \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u0430", "ScheduledTaskCancelledWithName": "{0} - \u0431\u044b\u043b\u0430 \u043e\u0442\u043c\u0435\u043d\u0435\u043d\u0430", @@ -1185,7 +1217,7 @@ "HeaderStudios": "\u0421\u0442\u0443\u0434\u0438\u0438", "HeaderTags": "\u0422\u0435\u0433\u0438", "HeaderMetadataSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445", - "LabelLockItemToPreventChanges": "\u0417\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c \u0431\u0443\u0434\u0443\u0449\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f", + "LabelLockItemToPreventChanges": "\u0417\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c \u0431\u0443\u0434\u0443\u0449\u0438\u0435 \u043f\u0440\u0430\u0432\u043a\u0438", "MessageLeaveEmptyToInherit": "\u041d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0439\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0442 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u0438\u043b\u0438 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.", "TabDonate": "\u041f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f", "HeaderDonationType": "\u0422\u0438\u043f \u043f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f:", @@ -1199,6 +1231,7 @@ "OptionNoThemeVideo": "\u0411\u0435\u0437 \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e", "LabelOneTimeDonationAmount": "\u0421\u0443\u043c\u043c\u0430 \u043f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f:", "ButtonDonate": "\u041f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u0442\u044c", + "ButtonPurchase": "\u041f\u0440\u0438\u043e\u0431\u0440\u0435\u0441\u0442\u0438", "OptionActor": "\u0410\u043a\u0442\u0451\u0440", "OptionComposer": "\u041a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043e\u0440", "OptionDirector": "\u0420\u0435\u0436\u0438\u0441\u0441\u0451\u0440", @@ -1218,7 +1251,6 @@ "HeaderDeveloperInfo": "\u041e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u0445", "HeaderRevisionHistory": "\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439", "ButtonViewWebsite": "\u0421\u043c. \u0432\u0435\u0431\u0441\u0430\u0439\u0442", - "LabelRecurringDonationCanBeCancelledHelp": "\u0420\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u043f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0447\u0435\u0440\u0435\u0437 \u0432\u0430\u0448\u0443 \u0443\u0447\u0451\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c PayPal.", "HeaderXmlSettings": "XML-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b", "HeaderXmlDocumentAttributes": "\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430", "HeaderXmlDocumentAttribute": "\u0410\u0442\u0440\u0438\u0431\u0443\u0442 XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430", @@ -1232,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "\u0423\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0431 Emby Connect", "LabelExternalPlayers": "\u0412\u043d\u0435\u0448\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u0438:", "LabelExternalPlayersHelp": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u043a\u043d\u043e\u043f\u043a\u0438 \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u044f\u0445. \u041e\u043d\u0438 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0445 URL-\u0441\u0445\u0435\u043c\u044b, \u043e\u0431\u044b\u0447\u043d\u043e, \u0432 Android \u0438 iOS. \u0412\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u044f\u0445, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f.", + "LabelNativeExternalPlayersHelp": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u043a\u043d\u043e\u043f\u043a\u0438 \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u044f\u0445.", + "LabelEnableItemPreviews": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430", + "LabelEnableItemPreviewsHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u0441\u043a\u043e\u043b\u044c\u0437\u044f\u0449\u0438\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044d\u043a\u0440\u0430\u043d\u0430\u0445, \u0435\u0441\u043b\u0438 \u0449\u0451\u043b\u043a\u043d\u0443\u0442\u044c \u043f\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443.", "HeaderSubtitleProfile": "\u041f\u0440\u043e\u0444\u0438\u043b\u044c \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432", "HeaderSubtitleProfiles": "\u041f\u0440\u043e\u0444\u0438\u043b\u0438 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432", "HeaderSubtitleProfilesHelp": "\u0412 \u043f\u0440\u043e\u0444\u0438\u043b\u044f\u0445 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c.", @@ -1328,7 +1363,7 @@ "HeaderShareMediaFolders": "\u041e\u0431\u0449\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043a\u0430\u043c", "MessageGuestSharingPermissionsHelp": "\u041c\u043d\u043e\u0433\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u0433\u043e\u0441\u0442\u0435\u0439, \u043d\u043e \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043f\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438.", "HeaderInvitations": "\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044f", - "LabelForgotPasswordUsernameHelp": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u043c\u043d\u0438\u0442\u0435.", + "LabelForgotPasswordUsernameHelp": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0435\u0441\u043b\u0438 \u043f\u043e\u043c\u043d\u0438\u0442\u0435 \u0435\u0433\u043e.", "HeaderForgotPassword": "\u0417\u0430\u0431\u044b\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u044c?", "TitleForgotPassword": "\u0417\u0430\u0431\u044b\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u044c?", "TitlePasswordReset": "\u0421\u0431\u0440\u043e\u0441 \u043f\u0430\u0440\u043e\u043b\u044f", @@ -1374,64 +1409,46 @@ "TabStreaming": "\u0422\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u044f", "LabelRemoteClientBitrateLimit": "\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, \u041c\u0431\u0438\u0442\/\u0441", "LabelRemoteClientBitrateLimitHelp": "\u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432. \u042d\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c\u0438 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438, \u0447\u0435\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435.", - "LabelConversionCpuCoreLimit": "\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0445 \u044f\u0434\u0435\u0440:", + "LabelConversionCpuCoreLimit": "\u041f\u0440\u0435\u0434\u0435\u043b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0445 \u044f\u0434\u0435\u0440:", "LabelConversionCpuCoreLimitHelp": "\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0447\u0438\u0441\u043b\u043e \u044f\u0434\u0435\u0440 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u044b \u0432\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f.", "OptionEnableFullSpeedConversion": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435", "OptionEnableFullSpeedConversionHelp": "\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043d\u0438\u0437\u043a\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438, \u0447\u0442\u043e\u0431\u044b \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432.", "HeaderPlaylists": "\u0421\u043f\u0438\u0441\u043a\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f", - "HeaderSelectDate": "\u0412\u044b\u0431\u043e\u0440 \u0434\u0430\u0442\u044b", - "HeaderWelcomeExclamation": "\u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u044b", - "HeaderMyPreferences": "\u041c\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438", - "ButtonMyPreferencesWelcomeYes": "\u0414\u0430, \u044f \u0445\u043e\u0447\u0443 \u0437\u0430\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0435\u0439\u0447\u0430\u0441.", - "ButtonMyPreferencesWelcomeNo": "\u041d\u0435\u0442, \u0441\u043f\u0430\u0441\u0438\u0431\u043e, \u044f \u0441\u0434\u0435\u043b\u0430\u044e \u044d\u0442\u043e \u043f\u043e\u0442\u043e\u043c.", - "MyPreferencesWelcomeMessage1": "\u0412\u0430\u0448\u0430 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u043a\u0430\u043a \u043c\u044b \u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c, \u0431\u0443\u0434\u0435\u0442 \u0432\u0430\u043c \u043f\u0440\u0438\u044f\u0442\u0435\u043d. \u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u0438 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b \u0432 \u043b\u044e\u0431\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0430\u0448\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a. \u0412\u0430\u0448\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043a\u043e \u0432\u0441\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c Emby.", - "MyPreferencesWelcomeMessage2": "\u0422\u0435\u043f\u0435\u0440\u044c, \u0432\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0431\u044b \u0437\u0430\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438?", - "ToAccessPreferencesHelp": "\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u0437\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u0430\u0448\u0438\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c, \u0449\u0435\u043b\u043a\u043d\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u043e\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441\u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u041c\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438.", "HeaderViewStyles": "\u0421\u0442\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043e\u043a", - "LabelSelectViewStyles": "Enable enhanced presentations for:", + "LabelSelectViewStyles": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f:", "LabelSelectViewStylesHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u0442\u0438\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u043c\u0438 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c\u043e\u0435, \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435, \u0416\u0430\u043d\u0440\u044b \u0438 \u0442.\u0434. \u041f\u0440\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u044b \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u043f\u0430\u043f\u043a\u0430\u043c\u0438.", - "TabPhotos": "Photos", - "TabVideos": "Videos", - "HeaderWelcomeToEmby": "Welcome to Emby", - "EmbyIntroMessage": "With Emby you can easily stream videos, music and photos to smart phones, tablets and other devices from your Emby Server.", - "ButtonSkip": "Skip", - "TextConnectToServerManually": "Connect to server manually", - "ButtonSignInWithConnect": "Sign in with Emby Connect", - "ButtonConnect": "Connect", - "LabelServerHost": "Host:", - "LabelServerHostHelp": "192.168.1.100 or https:\/\/myserver.com", - "LabelServerPort": "Port:", - "HeaderNewServer": "New Server", - "ButtonChangeServer": "Change Server", - "HeaderConnectToServer": "Connect to Server", - "LabelExit": "\u0412\u044b\u0445\u043e\u0434", - "LabelVisitCommunity": "\u041f\u043e\u0441\u0435\u0442\u0438\u0442\u044c \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e", - "LabelGithub": "GitHub", - "LabelSwagger": "\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Swagger", - "LabelStandard": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442", - "LabelApiDocumentation": "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e API", - "LabelDeveloperResources": "\u0420\u0435\u0441\u0443\u0440\u0441\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432", - "LabelBrowseLibrary": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u041c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438", - "LabelConfigureServer": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Emby", - "LabelOpenLibraryViewer": "\u0421\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u041c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438", - "LabelRestartServer": "\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0430", - "LabelShowLogWindow": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u043e\u043a\u043d\u043e \u0416\u0443\u0440\u043d\u0430\u043b\u0430", - "LabelPrevious": "\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435", - "LabelFinish": "\u0413\u043e\u0442\u043e\u0432\u043e", - "LabelNext": "\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435", - "LabelYoureDone": "\u0412\u044b \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438!", - "WelcomeToProject": "\u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u044b \u0432 Emby", - "ThisWizardWillGuideYou": "\u042d\u0442\u043e\u0442 \u043f\u043e\u043c\u043e\u0449\u043d\u0438\u043a \u043f\u0440\u043e\u0432\u0435\u0434\u0451\u0442 \u0432\u0430\u0441 \u0447\u0435\u0440\u0435\u0437 \u0432\u0441\u0435 \u0444\u0430\u0437\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u044f\u0437\u044b\u043a.", - "TellUsAboutYourself": "\u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0438\u0442\u0435 \u043e \u0441\u0435\u0431\u0435", - "ButtonQuickStartGuide": "\u041a \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0443 \u043f\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0443", - "LabelYourFirstName": "\u0412\u0430\u0448\u0435 \u0438\u043c\u044f:", - "MoreUsersCanBeAddedLater": "\u041f\u043e\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0451 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 \u00ab\u0418\u043d\u0444\u043e\u043f\u0430\u043d\u0435\u043b\u044c\u00bb.", - "UserProfilesIntro": "\u0412 Emby \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0438\u043c\u0435\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\u043c.", - "LabelWindowsService": "\u0421\u043b\u0443\u0436\u0431\u0430 Windows", - "AWindowsServiceHasBeenInstalled": "\u0421\u043b\u0443\u0436\u0431\u0430 Windows \u0431\u044b\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430.", - "WindowsServiceIntro1": "Emby Server \u043e\u0431\u044b\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e \u0437\u043d\u0430\u0447\u043a\u043e\u043c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c \u043b\u043e\u0442\u043a\u0435, \u043d\u043e \u0435\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u043a\u0430\u043a \u0444\u043e\u043d\u043e\u0432\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u044b, \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0435\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0441\u043b\u0443\u0436\u0431 Windows.", - "WindowsServiceIntro2": "\u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u043b\u0443\u0436\u0431\u044b Windows \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441\u043e \u0437\u043d\u0430\u0447\u043a\u043e\u043c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c \u0442\u0440\u0435\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043b\u0443\u0436\u0431\u0430 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u0437\u043d\u0430\u0447\u043e\u043a \u0432 \u0442\u0440\u0435\u0435, . \u0421\u043b\u0443\u0436\u0431\u0443 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. \u0412 \u0434\u0430\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u0443\u0436\u0431\u044b, \u0442\u0430\u043a \u0447\u0442\u043e \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u0439 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u0430\u0448\u0435 \u0432\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e.", - "WizardCompleted": "\u042d\u0442\u043e \u043f\u043e\u043a\u0430 \u0432\u0441\u0451 \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e. Emby \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435. \u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043d\u0430\u0448\u0438\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438, \u0430 \u043f\u043e\u0442\u043e\u043c \u043d\u0430\u0436\u043c\u0438\u0442\u0435 <b>\u0413\u043e\u0442\u043e\u0432\u043e<\/b>, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <b>\u0418\u043d\u0444\u043e\u043f\u0430\u043d\u0435\u043b\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/b>.", - "LabelConfigureSettings": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432", - "LabelEnableVideoImageExtraction": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432 \u0438\u0437 \u0432\u0438\u0434\u0435\u043e" + "TabPhotos": "\u0424\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438", + "TabVideos": "\u0412\u0438\u0434\u0435\u043e", + "HeaderWelcomeToEmby": "\u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u044b \u0432 Emby", + "EmbyIntroMessage": "\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Emby \u0443\u0434\u043e\u0431\u043d\u043e \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u044b, \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u044b \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432\u0438\u0434\u0435\u043e\u0444\u0430\u0439\u043b\u044b, \u043c\u0443\u0437\u044b\u043a\u0443 \u0438 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0441 Emby Server.", + "ButtonSkip": "\u041f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c", + "TextConnectToServerManually": "\u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0432\u0440\u0443\u0447\u043d\u0443\u044e", + "ButtonSignInWithConnect": "\u0412\u043e\u0439\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 Connect", + "ButtonConnect": "\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c", + "LabelServerHost": "\u0425\u043e\u0441\u0442:", + "LabelServerHostHelp": "192.168.1.100 \u0438\u043b\u0438 https:\/\/myserver.com", + "LabelServerPort": "\u041f\u043e\u0440\u0442:", + "HeaderNewServer": "\u041d\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440", + "ButtonChangeServer": "\u0421\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440", + "HeaderConnectToServer": "\u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c", + "OptionReportList": "\u0421\u043f\u0438\u0441\u043a\u0438", + "OptionReportStatistics": "\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430", + "OptionReportGrouping": "\u0413\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435", + "HeaderExport": "\u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435", + "HeaderColumns": "\u041a\u043e\u043b\u043e\u043d\u043a\u0438", + "ButtonReset": "\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c", + "OptionEnableExternalVideoPlayers": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u0438 \u0432\u0438\u0434\u0435\u043e", + "ButtonUnlockGuide": "\u0420\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0433\u0438\u0434", + "LabelEnableFullScreen": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0435\u0436\u0438\u043c \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0430", + "LabelEnableChromecastAc3Passthrough": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0445\u043e\u0434\u043d\u043e\u0439 AC3 \u043d\u0430 Chromecast", + "LabelSyncPath": "\u041f\u0443\u0442\u044c \u043a \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044e:", + "LabelEmail": "\u042d-\u043f\u043e\u0447\u0442\u0430:", + "LabelUsername": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f:", + "HeaderSignUp": "\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0430\u0446\u0438\u044f", + "LabelPasswordConfirm": "\u041f\u0430\u0440\u043e\u043b\u044c (\u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435):", + "ButtonAddServer": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440", + "TabHomeScreen": "\u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d", + "HeaderDisplay": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435", + "HeaderNavigation": "\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f", + "LegendTheseSettingsShared": "\u0414\u0430\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u043d\u0430 \u0432\u0441\u0435\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json index 368d11646..55e754085 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/server.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json @@ -85,8 +85,8 @@ "ButtonDonateWithPayPal": "Donate with PayPal", "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Emby online account user name or password.", + "LabelEnterConnectUserName": "Username or email:", + "LabelEnterConnectUserNameHelp": "This is your Emby online account username or password.", "LabelEnableEnhancedMovies": "Enable enhanced movie displays", "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", "HeaderSyncJobInfo": "Sync Job", @@ -313,6 +313,9 @@ "OptionAllowRemoteControlOthers": "Allow remote control of other users", "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", "HeaderRemoteControl": "Remote Control", "OptionMissingTmdbId": "Missing Tmdb Id", "OptionIsHD": "HD", @@ -909,7 +912,7 @@ "HeaderLiveTv": "Live TV", "HeaderReports": "Reports", "HeaderMetadataManager": "Metadata Manager", - "HeaderPreferences": "Preferences", + "HeaderSettings": "Settings", "MessageLoadingChannels": "Loading channel content...", "MessageLoadingContent": "Loading content...", "ButtonMarkRead": "Mark Read", @@ -1243,6 +1246,7 @@ "OptionNoThemeVideo": "No Theme Video", "LabelOneTimeDonationAmount": "Donation amount:", "ButtonDonate": "Donate", + "ButtonPurchase": "Purchase", "OptionActor": "Actor", "OptionComposer": "Composer", "OptionDirector": "Director", @@ -1262,7 +1266,6 @@ "HeaderDeveloperInfo": "Developer Info", "HeaderRevisionHistory": "Revision History", "ButtonViewWebsite": "View website", - "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderXmlSettings": "Xml Settings", "HeaderXmlDocumentAttributes": "Xml Document Attributes", "HeaderXmlDocumentAttribute": "Xml Document Attribute", @@ -1276,6 +1279,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", "LabelExternalPlayers": "External players:", "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", "HeaderSubtitleProfile": "Subtitle Profile", "HeaderSubtitleProfiles": "Subtitle Profiles", "HeaderSubtitleProfilesHelp": "Subtitle profiles describe the subtitle formats supported by the device.", @@ -1405,7 +1411,7 @@ "HeaderUpcomingMovies": "Upcoming Movies", "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", - "ButtonMoreItems": "More...", + "ButtonMoreItems": "More", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", @@ -1424,14 +1430,6 @@ "OptionEnableFullSpeedConversion": "Enable full speed conversion", "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", "HeaderViewStyles": "View Styles", "LabelSelectViewStyles": "Enable enhanced presentations for:", "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", @@ -1448,5 +1446,25 @@ "LabelServerPort": "Port:", "HeaderNewServer": "New Server", "ButtonChangeServer": "Change Server", - "HeaderConnectToServer": "Connect to Server" + "HeaderConnectToServer": "Connect to Server", + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "HeaderExport": "Export", + "HeaderColumns": "Columns", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" } diff --git a/MediaBrowser.Server.Implementations/Localization/Server/sl_SI.json b/MediaBrowser.Server.Implementations/Localization/Server/sl-SI.json index d111eb46d..d37510905 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/sl_SI.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/sl-SI.json @@ -1,5 +1,237 @@ { - "TabWebClient": "Web Client", + "LabelExit": "Exit", + "LabelVisitCommunity": "Visit Community", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standard", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Browse Library", + "LabelConfigureServer": "Configure Emby", + "LabelOpenLibraryViewer": "Open Library Viewer", + "LabelRestartServer": "Restart Server", + "LabelShowLogWindow": "Show Log Window", + "LabelPrevious": "Previous", + "LabelFinish": "Finish", + "FolderTypeMixed": "Mixed content", + "LabelNext": "Next", + "LabelYoureDone": "You're Done!", + "WelcomeToProject": "Welcome to Emby!", + "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", + "TellUsAboutYourself": "Tell us about yourself", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "Your first name:", + "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", + "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", + "LabelWindowsService": "Windows Service", + "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", + "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", + "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", + "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", + "LabelConfigureSettings": "Configure settings", + "LabelEnableVideoImageExtraction": "Enable video image extraction", + "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", + "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", + "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", + "HeaderTermsOfService": "Emby Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToEmbyConnect": "Linked to Emby Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", + "ButtonOk": "Ok", + "ButtonCancel": "Cancel", + "ButtonExit": "Exit", + "ButtonNew": "New", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "Username or email:", + "LabelEnterConnectUserNameHelp": "This is your Emby online account username or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "Setup your media library", + "ButtonAddMediaFolder": "Add media folder", + "LabelFolderType": "Folder type:", + "ReferToMediaLibraryWiki": "Refer to the media library wiki.", + "LabelCountry": "Country:", + "LabelLanguage": "Language:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "Preferred metadata language:", + "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", + "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", + "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", + "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", + "TabPreferences": "Preferences", + "TabPassword": "Password", + "TabLibraryAccess": "Library Access", + "TabAccess": "Access", + "TabImage": "Image", + "TabProfile": "Profile", + "TabMetadata": "Metadata", + "TabImages": "Images", + "TabNotifications": "Notifications", + "TabCollectionTitles": "Titles", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", + "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", + "HeaderVideoPlaybackSettings": "Video Playback Settings", + "HeaderPlaybackSettings": "Playback Settings", + "LabelAudioLanguagePreference": "Audio language preference:", + "LabelSubtitleLanguagePreference": "Subtitle language preference:", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Only forced subtitles", + "OptionAlwaysPlaySubtitles": "Always play subtitles", + "OptionNoSubtitles": "No Subtitles", + "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", + "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", + "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", + "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", + "TabProfiles": "Profiles", + "TabSecurity": "Security", + "ButtonAddUser": "Add User", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "Save", + "ButtonResetPassword": "Reset Password", + "LabelNewPassword": "New password:", + "LabelNewPasswordConfirm": "New password confirm:", + "HeaderCreatePassword": "Create Password", + "LabelCurrentPassword": "Current password:", + "LabelMaxParentalRating": "Maximum allowed parental rating:", + "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", + "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", + "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", + "ButtonDeleteImage": "Delete Image", + "LabelSelectUsers": "Select users:", + "ButtonUpload": "Upload", + "HeaderUploadNewImage": "Upload New Image", + "LabelDropImageHere": "Drop image here", + "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", + "MessageNothingHere": "Nothing here.", + "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", + "TabSuggested": "Suggested", + "TabSuggestions": "Suggestions", + "TabLatest": "Latest", + "TabUpcoming": "Upcoming", + "TabShows": "Shows", + "TabEpisodes": "Episodes", + "TabGenres": "Genres", + "TabPeople": "People", + "TabNetworks": "Networks", + "HeaderUsers": "Users", + "HeaderFilters": "Filters:", + "ButtonFilter": "Filter", + "OptionFavorite": "Favorites", + "OptionLikes": "Likes", + "OptionDislikes": "Dislikes", + "OptionActors": "Actors", + "OptionGuestStars": "Guest Stars", + "OptionDirectors": "Directors", + "OptionWriters": "Writers", + "OptionProducers": "Producers", + "HeaderResume": "Resume", + "HeaderNextUp": "Next Up", + "NoNextUpItemsMessage": "None found. Start watching your shows!", + "HeaderLatestEpisodes": "Latest Episodes", + "HeaderPersonTypes": "Person Types:", + "TabSongs": "Songs", + "TabAlbums": "Albums", + "TabArtists": "Artists", + "TabAlbumArtists": "Album Artists", + "TabMusicVideos": "Music Videos", + "ButtonSort": "Sort", + "HeaderSortBy": "Sort By:", + "HeaderSortOrder": "Sort Order:", + "OptionPlayed": "Played", + "OptionUnplayed": "Unplayed", + "OptionAscending": "Ascending", + "OptionDescending": "Descending", + "OptionRuntime": "Runtime", + "OptionReleaseDate": "Release Date", + "OptionPlayCount": "Play Count", + "OptionDatePlayed": "Date Played", + "OptionDateAdded": "Date Added", + "OptionAlbumArtist": "Album Artist", + "OptionArtist": "Artist", + "OptionAlbum": "Album", + "OptionTrackName": "Track Name", + "OptionCommunityRating": "Community Rating", + "OptionNameSort": "Name", + "OptionFolderSort": "Folders", + "OptionBudget": "Budget", + "OptionRevenue": "Revenue", + "OptionPoster": "Poster", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "Backdrop", + "OptionTimeline": "Timeline", + "OptionThumb": "Thumb", + "OptionThumbCard": "Thumb card", + "OptionBanner": "Banner", + "OptionCriticRating": "Critic Rating", + "OptionVideoBitrate": "Video Bitrate", + "OptionResumable": "Resumable", + "ScheduledTasksHelp": "Click a task to adjust its schedule.", + "ScheduledTasksTitle": "Scheduled Tasks", + "TabMyPlugins": "My Plugins", "TabCatalog": "Catalog", "TitlePlugins": "Plugins", "HeaderAutomaticUpdates": "Automatic Updates", @@ -55,7 +287,9 @@ "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", "TabGeneral": "General", "TitleSupport": "Support", + "LabelSeasonNumber": "Season number", "TabLog": "Log", + "LabelEpisodeNumber": "Episode number", "TabAbout": "About", "TabSupporterKey": "Supporter Key", "TabBecomeSupporter": "Become a Supporter", @@ -81,6 +315,9 @@ "OptionAllowRemoteControlOthers": "Allow remote control of other users", "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", "HeaderRemoteControl": "Remote Control", "OptionMissingTmdbId": "Missing Tmdb Id", "OptionIsHD": "HD", @@ -349,8 +586,6 @@ "LabelSkipped": "Skipped", "HeaderEpisodeOrganization": "Episode Organization", "LabelSeries": "Series:", - "LabelSeasonNumber": "Season number:", - "LabelEpisodeNumber": "Episode number:", "LabelEndingEpisodeNumber": "Ending episode number:", "LabelEndingEpisodeNumberHelp": "Only required for multi-episode files", "HeaderSupportTheTeam": "Support the Emby Team", @@ -638,6 +873,7 @@ "HeaderTypeText": "Enter Text", "LabelTypeText": "Text", "HeaderSearchForSubtitles": "Search for Subtitles", + "ButtonMore": "More", "MessageNoSubtitleSearchResultsFound": "No search results founds.", "TabDisplay": "Display", "TabLanguages": "Languages", @@ -668,7 +904,7 @@ "HeaderLiveTv": "Live TV", "HeaderReports": "Reports", "HeaderMetadataManager": "Metadata Manager", - "HeaderPreferences": "Preferences", + "HeaderSettings": "Nastavitve", "MessageLoadingChannels": "Loading channel content...", "MessageLoadingContent": "Loading content...", "ButtonMarkRead": "Mark Read", @@ -866,7 +1102,6 @@ "OptionReportArtists": "Artists", "OptionReportAlbums": "Albums", "OptionReportAdultVideos": "Adult videos", - "ButtonMore": "More", "HeaderActivity": "Activity", "ScheduledTaskStartedWithName": "{0} started", "ScheduledTaskCancelledWithName": "{0} was cancelled", @@ -996,6 +1231,7 @@ "OptionNoThemeVideo": "No Theme Video", "LabelOneTimeDonationAmount": "Donation amount:", "ButtonDonate": "Donate", + "ButtonPurchase": "Purchase", "OptionActor": "Actor", "OptionComposer": "Composer", "OptionDirector": "Director", @@ -1015,7 +1251,6 @@ "HeaderDeveloperInfo": "Developer Info", "HeaderRevisionHistory": "Revision History", "ButtonViewWebsite": "View website", - "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderXmlSettings": "Xml Settings", "HeaderXmlDocumentAttributes": "Xml Document Attributes", "HeaderXmlDocumentAttribute": "Xml Document Attribute", @@ -1029,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", "LabelExternalPlayers": "External players:", "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", "HeaderSubtitleProfile": "Subtitle Profile", "HeaderSubtitleProfiles": "Subtitle Profiles", "HeaderSubtitleProfilesHelp": "Subtitle profiles describe the subtitle formats supported by the device.", @@ -1157,7 +1395,7 @@ "HeaderUpcomingMovies": "Upcoming Movies", "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", - "ButtonMoreItems": "More...", + "ButtonMoreItems": "More", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", @@ -1176,14 +1414,6 @@ "OptionEnableFullSpeedConversion": "Enable full speed conversion", "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", "HeaderViewStyles": "View Styles", "LabelSelectViewStyles": "Enable enhanced presentations for:", "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", @@ -1201,237 +1431,24 @@ "HeaderNewServer": "New Server", "ButtonChangeServer": "Change Server", "HeaderConnectToServer": "Connect to Server", - "LabelExit": "Exit", - "LabelVisitCommunity": "Visit Community", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standard", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Browse Library", - "LabelConfigureServer": "Configure Emby", - "LabelOpenLibraryViewer": "Open Library Viewer", - "LabelRestartServer": "Restart Server", - "LabelShowLogWindow": "Show Log Window", - "LabelPrevious": "Previous", - "LabelFinish": "Finish", - "LabelNext": "Next", - "LabelYoureDone": "You're Done!", - "WelcomeToProject": "Welcome to Emby!", - "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", - "TellUsAboutYourself": "Tell us about yourself", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "Your first name:", - "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", - "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "Windows Service", - "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", - "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", - "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", - "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", - "LabelConfigureSettings": "Configure settings", - "LabelEnableVideoImageExtraction": "Enable video image extraction", - "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", - "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", - "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "HeaderTermsOfService": "Emby Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LinkedToEmbyConnect": "Linked to Emby Connect", - "HeaderSupporterBenefits": "Supporter Benefits", - "HeaderAddUser": "Add User", - "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", - "LabelPinCode": "Pin code:", - "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", - "HeaderSync": "Sync", - "ButtonOk": "Ok", - "ButtonCancel": "Cancel", - "ButtonExit": "Exit", - "ButtonNew": "New", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "TabPlaylist": "Playlist", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Emby online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "Setup your media library", - "ButtonAddMediaFolder": "Add media folder", - "LabelFolderType": "Folder type:", - "ReferToMediaLibraryWiki": "Refer to the media library wiki.", - "LabelCountry": "Country:", - "LabelLanguage": "Language:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "Preferred metadata language:", - "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", - "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", - "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", - "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", - "TabPreferences": "Preferences", - "TabPassword": "Password", - "TabLibraryAccess": "Library Access", - "TabAccess": "Access", - "TabImage": "Image", - "TabProfile": "Profile", - "TabMetadata": "Metadata", - "TabImages": "Images", - "TabNotifications": "Notifications", - "TabCollectionTitles": "Titles", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", - "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", - "HeaderVideoPlaybackSettings": "Video Playback Settings", - "HeaderPlaybackSettings": "Playback Settings", - "LabelAudioLanguagePreference": "Audio language preference:", - "LabelSubtitleLanguagePreference": "Subtitle language preference:", - "OptionDefaultSubtitles": "Default", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "No Subtitles", - "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", - "TabProfiles": "Profiles", - "TabSecurity": "Security", - "ButtonAddUser": "Add User", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "Save", - "ButtonResetPassword": "Reset Password", - "LabelNewPassword": "New password:", - "LabelNewPasswordConfirm": "New password confirm:", - "HeaderCreatePassword": "Create Password", - "LabelCurrentPassword": "Current password:", - "LabelMaxParentalRating": "Maximum allowed parental rating:", - "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", - "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", - "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", - "ButtonDeleteImage": "Delete Image", - "LabelSelectUsers": "Select users:", - "ButtonUpload": "Upload", - "HeaderUploadNewImage": "Upload New Image", - "LabelDropImageHere": "Drop image here", - "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", - "MessageNothingHere": "Nothing here.", - "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", - "TabSuggested": "Suggested", - "TabSuggestions": "Suggestions", - "TabLatest": "Latest", - "TabUpcoming": "Upcoming", - "TabShows": "Shows", - "TabEpisodes": "Episodes", - "TabGenres": "Genres", - "TabPeople": "People", - "TabNetworks": "Networks", - "HeaderUsers": "Users", - "HeaderFilters": "Filters:", - "ButtonFilter": "Filter", - "OptionFavorite": "Favorites", - "OptionLikes": "Likes", - "OptionDislikes": "Dislikes", - "OptionActors": "Actors", - "OptionGuestStars": "Guest Stars", - "OptionDirectors": "Directors", - "OptionWriters": "Writers", - "OptionProducers": "Producers", - "HeaderResume": "Resume", - "HeaderNextUp": "Next Up", - "NoNextUpItemsMessage": "None found. Start watching your shows!", - "HeaderLatestEpisodes": "Latest Episodes", - "HeaderPersonTypes": "Person Types:", - "TabSongs": "Songs", - "TabAlbums": "Albums", - "TabArtists": "Artists", - "TabAlbumArtists": "Album Artists", - "TabMusicVideos": "Music Videos", - "ButtonSort": "Sort", - "HeaderSortBy": "Sort By:", - "HeaderSortOrder": "Sort Order:", - "OptionPlayed": "Played", - "OptionUnplayed": "Unplayed", - "OptionAscending": "Ascending", - "OptionDescending": "Descending", - "OptionRuntime": "Runtime", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "Play Count", - "OptionDatePlayed": "Date Played", - "OptionDateAdded": "Date Added", - "OptionAlbumArtist": "Album Artist", - "OptionArtist": "Artist", - "OptionAlbum": "Album", - "OptionTrackName": "Track Name", - "OptionCommunityRating": "Community Rating", - "OptionNameSort": "Name", - "OptionFolderSort": "Folders", - "OptionBudget": "Budget", - "OptionRevenue": "Revenue", - "OptionPoster": "Poster", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "Backdrop", - "OptionTimeline": "Timeline", - "OptionThumb": "Thumb", - "OptionThumbCard": "Thumb card", - "OptionBanner": "Banner", - "OptionCriticRating": "Critic Rating", - "OptionVideoBitrate": "Video Bitrate", - "OptionResumable": "Resumable", - "ScheduledTasksHelp": "Click a task to adjust its schedule.", - "ScheduledTasksTitle": "Scheduled Tasks", - "TabMyPlugins": "My Plugins" + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "HeaderExport": "Export", + "HeaderColumns": "Columns", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/sv.json b/MediaBrowser.Server.Implementations/Localization/Server/sv.json index 5132cba7a..cadf66340 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/sv.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/sv.json @@ -1,9 +1,96 @@ { - "TabWebClient": "Webbklient", + "LabelExit": "Avsluta", + "LabelVisitCommunity": "Bes\u00f6k v\u00e5rt diskussionsforum", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "F\u00f6rval", + "LabelApiDocumentation": "Api Dokumentation", + "LabelDeveloperResources": "Resurser f\u00f6r utvecklare", + "LabelBrowseLibrary": "Bl\u00e4ddra i biblioteket", + "LabelConfigureServer": "Configure Emby", + "LabelOpenLibraryViewer": "\u00d6ppna biblioteksbl\u00e4ddraren", + "LabelRestartServer": "Starta om servern", + "LabelShowLogWindow": "Visa loggf\u00f6nstret", + "LabelPrevious": "F\u00f6reg\u00e5ende", + "LabelFinish": "Klart", + "FolderTypeMixed": "Mixed content", + "LabelNext": "N\u00e4sta", + "LabelYoureDone": "Klart!", + "WelcomeToProject": "Welcome to Emby!", + "ThisWizardWillGuideYou": "Den h\u00e4r guiden hj\u00e4lper dig att g\u00f6ra de f\u00f6rsta inst\u00e4llningarna. F\u00f6r att b\u00f6rja var v\u00e4nlig v\u00e4lj \u00f6nskat spr\u00e5k.", + "TellUsAboutYourself": "Ber\u00e4tta om dig sj\u00e4lv", + "ButtonQuickStartGuide": "Snabbstartguide", + "LabelYourFirstName": "Ditt f\u00f6rnamn:", + "MoreUsersCanBeAddedLater": "Flera anv\u00e4ndare kan skapas senare i Kontrollpanelen.", + "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", + "LabelWindowsService": "Windows-tj\u00e4nst", + "AWindowsServiceHasBeenInstalled": "En Windows-tj\u00e4nst har installerats.", + "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", + "WindowsServiceIntro2": "Om Media Browser k\u00f6rs som en tj\u00e4nst, notera att den inte kan k\u00f6ras samtidigt som aktivitetsf\u00e4ltsikonen, s\u00e5 f\u00f6r att k\u00f6ra tj\u00e4nsten m\u00e5ste ikonen st\u00e4ngas. Tj\u00e4nsten m\u00e5ste ocks\u00e5 k\u00f6ras med administrat\u00f6rsr\u00e4ttigheter (st\u00e4lls in i kontrollpanelen Tj\u00e4nster). Automatiska uppdateringar fungerar heller inte med tj\u00e4nsten, dvs tj\u00e4nsten m\u00e5ste stoppas f\u00f6re manuell uppdatering och sedan \u00e5terstartas.", + "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", + "LabelConfigureSettings": "Inst\u00e4llningar", + "LabelEnableVideoImageExtraction": "Ta fram bildrutor ur videofiler", + "VideoImageExtractionHelp": "Dessa anv\u00e4nds f\u00f6r objekt som saknar bilder och d\u00e4r vi inte hittar n\u00e5gra vid s\u00f6kning p\u00e5 Internet. Detta g\u00f6r att den f\u00f6rsta genoms\u00f6kningen av biblioteket tar lite l\u00e4ngre tid, men ger en snyggare presentation.", + "LabelEnableChapterImageExtractionForMovies": "Ta fram kapitelbildrutor ur filmfiler", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Aktivera automatisk koppling av portar", + "LabelEnableAutomaticPortMappingHelp": "UPnP m\u00f6jligg\u00f6r automatisk inst\u00e4llning av din router s\u00e5 att du enkelt kan n\u00e5 Media Browser fr\u00e5n Internet. Detta kanske inte fungerar med alla routrar.", + "HeaderTermsOfService": "Emby Terms of Service", + "MessagePleaseAcceptTermsOfService": "V\u00e4nligen acceptera anv\u00e4ndarvillkoren och sekretesspolicy innan du forts\u00e4tter.", + "OptionIAcceptTermsOfService": "Jag accepterar anv\u00e4ndarvillkoren", + "ButtonPrivacyPolicy": "sekretesspolicy", + "ButtonTermsOfService": "Anv\u00e4ndarvillkor", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToEmbyConnect": "Linked to Emby Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", + "ButtonOk": "OK", + "ButtonCancel": "Avbryt", + "ButtonExit": "Exit", + "ButtonNew": "Nytillkommet", + "HeaderTV": "TV", + "HeaderAudio": "Ljud", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Identifiera arkivfiler som media", + "OptionDetectArchiveFilesAsMediaHelp": "Om aktiverad, kommer filer med .rar och .zip f\u00f6rl\u00e4ngningar att uppt\u00e4ckas som mediefiler.", + "LabelEnterConnectUserName": "Username or email:", + "LabelEnterConnectUserNameHelp": "This is your Emby online account username or password.", "LabelEnableEnhancedMovies": "Enable enhanced movie displays", "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", "HeaderSyncJobInfo": "Synk jobb", - "FolderTypeMixed": "Blandat inneh\u00e5ll", "FolderTypeMovies": "Filmer", "FolderTypeMusic": "Musik", "FolderTypeAdultVideos": "Inneh\u00e5ll f\u00f6r vuxna", @@ -200,7 +287,9 @@ "OptionFileMetadataYearMismatch": "Fildatum\/metadatadatum \u00f6verensst\u00e4mmer ej", "TabGeneral": "Allm\u00e4nt", "TitleSupport": "Support", + "LabelSeasonNumber": "Season number", "TabLog": "H\u00e4ndelselogg", + "LabelEpisodeNumber": "Episode number", "TabAbout": "Om", "TabSupporterKey": "Donationskod", "TabBecomeSupporter": "Bidra med en donation", @@ -226,6 +315,9 @@ "OptionAllowRemoteControlOthers": "Till\u00e5t fj\u00e4rrstyrning av andra anv\u00e4ndare", "OptionAllowRemoteSharedDevices": "Till\u00e5t fj\u00e4rrstyrning av delade enheter", "OptionAllowRemoteSharedDevicesHelp": "DLNA-enheter betraktas som delade tills en anv\u00e4ndare b\u00f6rjar kontrollera den.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", "HeaderRemoteControl": "Fj\u00e4rrkontroll", "OptionMissingTmdbId": "TMDB-ID saknas", "OptionIsHD": "HD", @@ -494,8 +586,6 @@ "LabelSkipped": "Hoppades \u00f6ver", "HeaderEpisodeOrganization": "Katalogisering av avsnitt", "LabelSeries": "Serie:", - "LabelSeasonNumber": "Season number:", - "LabelEpisodeNumber": "Episode number:", "LabelEndingEpisodeNumber": "Ending episode number:", "LabelEndingEpisodeNumberHelp": "Kr\u00e4vs endast f\u00f6r filer som inneh\u00e5ller flera avsnitt", "HeaderSupportTheTeam": "Support the Emby Team", @@ -783,6 +873,7 @@ "HeaderTypeText": "Ange text", "LabelTypeText": "Text", "HeaderSearchForSubtitles": "S\u00f6k efter undertexter", + "ButtonMore": "More", "MessageNoSubtitleSearchResultsFound": "S\u00f6kningen gav inga resultat.", "TabDisplay": "Visning", "TabLanguages": "Spr\u00e5k", @@ -813,7 +904,7 @@ "HeaderLiveTv": "Live-TV", "HeaderReports": "Rapporter", "HeaderMetadataManager": "Metadatahanteraren", - "HeaderPreferences": "Inst\u00e4llningar", + "HeaderSettings": "Settings", "MessageLoadingChannels": "H\u00e4mtar kanalinneh\u00e5ll...", "MessageLoadingContent": "H\u00e4mtar inneh\u00e5ll...", "ButtonMarkRead": "Markera som l\u00e4st", @@ -1011,7 +1102,6 @@ "OptionReportArtists": "Artister", "OptionReportAlbums": "Album", "OptionReportAdultVideos": "Vuxen videos", - "ButtonMore": "Mer", "HeaderActivity": "Aktivitet", "ScheduledTaskStartedWithName": "{0} startad", "ScheduledTaskCancelledWithName": "{0} avbr\u00f6ts", @@ -1141,6 +1231,7 @@ "OptionNoThemeVideo": "Temavideo saknas", "LabelOneTimeDonationAmount": "Bidragsbelopp:", "ButtonDonate": "Donera", + "ButtonPurchase": "Purchase", "OptionActor": "Sk\u00e5despelare", "OptionComposer": "Komposit\u00f6r", "OptionDirector": "Regiss\u00f6r", @@ -1160,7 +1251,6 @@ "HeaderDeveloperInfo": "Information f\u00f6r utvecklare", "HeaderRevisionHistory": "Revisionshistorik", "ButtonViewWebsite": "G\u00e5 till hemsidan", - "LabelRecurringDonationCanBeCancelledHelp": "St\u00e5ende donationer kan avbrytas n\u00e4r som helst via ditt PayPal-konto.", "HeaderXmlSettings": "XML-inst\u00e4llningar", "HeaderXmlDocumentAttributes": "XML-dokumentattribut", "HeaderXmlDocumentAttribute": "XML-dokumentattribut", @@ -1174,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", "LabelExternalPlayers": "Externa uppspelare:", "LabelExternalPlayersHelp": "Visa knappar f\u00f6r att spela upp inneh\u00e5ll i externa uppspelare. Detta ar enbart tillg\u00e4ngligt p\u00e5 enheter som st\u00f6djer url-scheman, i allm\u00e4nhet Android och iOS. Externa uppspelare har normalt ej st\u00f6d f\u00f6r fj\u00e4rrkontroll eller \u00e5terupptagande.", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", "HeaderSubtitleProfile": "Undertextprofil", "HeaderSubtitleProfiles": "Undertextprofiler", "HeaderSubtitleProfilesHelp": "Undertextprofiler beskriver de undertextformat som st\u00f6ds av enheten.", @@ -1302,7 +1395,7 @@ "HeaderUpcomingMovies": "Upcoming Movies", "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", - "ButtonMoreItems": "Mer...", + "ButtonMoreItems": "More", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", @@ -1321,14 +1414,6 @@ "OptionEnableFullSpeedConversion": "Enable full speed conversion", "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", "HeaderViewStyles": "View Styles", "LabelSelectViewStyles": "Enable enhanced presentations for:", "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", @@ -1346,92 +1431,24 @@ "HeaderNewServer": "New Server", "ButtonChangeServer": "Change Server", "HeaderConnectToServer": "Connect to Server", - "LabelExit": "Avsluta", - "LabelVisitCommunity": "Bes\u00f6k v\u00e5rt diskussionsforum", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "F\u00f6rval", - "LabelApiDocumentation": "Api Dokumentation", - "LabelDeveloperResources": "Resurser f\u00f6r utvecklare", - "LabelBrowseLibrary": "Bl\u00e4ddra i biblioteket", - "LabelConfigureServer": "Configure Emby", - "LabelOpenLibraryViewer": "\u00d6ppna biblioteksbl\u00e4ddraren", - "LabelRestartServer": "Starta om servern", - "LabelShowLogWindow": "Visa loggf\u00f6nstret", - "LabelPrevious": "F\u00f6reg\u00e5ende", - "LabelFinish": "Klart", - "LabelNext": "N\u00e4sta", - "LabelYoureDone": "Klart!", - "WelcomeToProject": "Welcome to Emby!", - "ThisWizardWillGuideYou": "Den h\u00e4r guiden hj\u00e4lper dig att g\u00f6ra de f\u00f6rsta inst\u00e4llningarna. F\u00f6r att b\u00f6rja var v\u00e4nlig v\u00e4lj \u00f6nskat spr\u00e5k.", - "TellUsAboutYourself": "Ber\u00e4tta om dig sj\u00e4lv", - "ButtonQuickStartGuide": "Snabbstartguide", - "LabelYourFirstName": "Ditt f\u00f6rnamn:", - "MoreUsersCanBeAddedLater": "Flera anv\u00e4ndare kan skapas senare i Kontrollpanelen.", - "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "Windows-tj\u00e4nst", - "AWindowsServiceHasBeenInstalled": "En Windows-tj\u00e4nst har installerats.", - "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", - "WindowsServiceIntro2": "Om Media Browser k\u00f6rs som en tj\u00e4nst, notera att den inte kan k\u00f6ras samtidigt som aktivitetsf\u00e4ltsikonen, s\u00e5 f\u00f6r att k\u00f6ra tj\u00e4nsten m\u00e5ste ikonen st\u00e4ngas. Tj\u00e4nsten m\u00e5ste ocks\u00e5 k\u00f6ras med administrat\u00f6rsr\u00e4ttigheter (st\u00e4lls in i kontrollpanelen Tj\u00e4nster). Automatiska uppdateringar fungerar heller inte med tj\u00e4nsten, dvs tj\u00e4nsten m\u00e5ste stoppas f\u00f6re manuell uppdatering och sedan \u00e5terstartas.", - "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", - "LabelConfigureSettings": "Inst\u00e4llningar", - "LabelEnableVideoImageExtraction": "Ta fram bildrutor ur videofiler", - "VideoImageExtractionHelp": "Dessa anv\u00e4nds f\u00f6r objekt som saknar bilder och d\u00e4r vi inte hittar n\u00e5gra vid s\u00f6kning p\u00e5 Internet. Detta g\u00f6r att den f\u00f6rsta genoms\u00f6kningen av biblioteket tar lite l\u00e4ngre tid, men ger en snyggare presentation.", - "LabelEnableChapterImageExtractionForMovies": "Ta fram kapitelbildrutor ur filmfiler", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Aktivera automatisk koppling av portar", - "LabelEnableAutomaticPortMappingHelp": "UPnP m\u00f6jligg\u00f6r automatisk inst\u00e4llning av din router s\u00e5 att du enkelt kan n\u00e5 Media Browser fr\u00e5n Internet. Detta kanske inte fungerar med alla routrar.", - "HeaderTermsOfService": "Emby Terms of Service", - "MessagePleaseAcceptTermsOfService": "V\u00e4nligen acceptera anv\u00e4ndarvillkoren och sekretesspolicy innan du forts\u00e4tter.", - "OptionIAcceptTermsOfService": "Jag accepterar anv\u00e4ndarvillkoren", - "ButtonPrivacyPolicy": "sekretesspolicy", - "ButtonTermsOfService": "Anv\u00e4ndarvillkor", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LinkedToEmbyConnect": "Linked to Emby Connect", - "HeaderSupporterBenefits": "Supporter Benefits", - "HeaderAddUser": "Add User", - "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", - "LabelPinCode": "Pin code:", - "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", - "HeaderSync": "Sync", - "ButtonOk": "OK", - "ButtonCancel": "Avbryt", - "ButtonExit": "Exit", - "ButtonNew": "Nytillkommet", - "HeaderTV": "TV", - "HeaderAudio": "Ljud", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "TabPlaylist": "Playlist", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Identifiera arkivfiler som media", - "OptionDetectArchiveFilesAsMediaHelp": "Om aktiverad, kommer filer med .rar och .zip f\u00f6rl\u00e4ngningar att uppt\u00e4ckas som mediefiler.", - "LabelEnterConnectUserName": "Anv\u00e4ndarnamn eller email:", - "LabelEnterConnectUserNameHelp": "This is your Emby online account user name or password." + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "HeaderExport": "Export", + "HeaderColumns": "Columns", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/tr.json b/MediaBrowser.Server.Implementations/Localization/Server/tr.json index c2bebd6b3..89ecbf6ca 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/tr.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/tr.json @@ -1,5 +1,77 @@ { - "TabWebClient": "Web Client", + "LabelExit": "Cikis", + "LabelVisitCommunity": "Bizi Ziyaret Edin", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standart", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "K\u00fct\u00fcphane", + "LabelConfigureServer": "Configure Emby", + "LabelOpenLibraryViewer": "K\u00fct\u00fcphane G\u00f6r\u00fcnt\u00fcleyici", + "LabelRestartServer": "Server Yeniden Baslat", + "LabelShowLogWindow": "Log Ekran\u0131n\u0131 G\u00f6r\u00fcnt\u00fcle", + "LabelPrevious": "\u00d6nceki", + "LabelFinish": "Bitir", + "FolderTypeMixed": "Mixed content", + "LabelNext": "Sonraki", + "LabelYoureDone": "Haz\u0131rs\u0131n!", + "WelcomeToProject": "Welcome to Emby!", + "ThisWizardWillGuideYou": "Bu sihirbaz kurulum i\u015flemi boyunca size yard\u0131mc\u0131 olacakt\u0131r. Ba\u015flamak i\u00e7in, tercih etti\u011finiz dili se\u00e7iniz.", + "TellUsAboutYourself": "Kendinizden Bahsedin", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "\u0130lk Ad", + "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", + "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", + "LabelWindowsService": "Windows Servis", + "AWindowsServiceHasBeenInstalled": "Windows Servisi Y\u00fcklenmistir.", + "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", + "WindowsServiceIntro2": "Windows hizmeti kullan\u0131yorsan\u0131z, o tepsi simgesi olarak ayn\u0131 anda cal\u0131st\u0131rabilirsiniz unutmay\u0131n, b\u00f6ylece hizmetini cal\u0131st\u0131rmak i\u00e7in tepsiyi \u00e7\u0131kmak gerekir l\u00fctfen. Hizmeti de kontrol paneli \u00fczerinden y\u00f6netim ayr\u0131cal\u0131klar\u0131yla yap\u0131land\u0131r\u0131lm\u0131\u015f olmas\u0131 gerekir. Su anda hizmet kendine g\u00fcncelleme m\u00fcmk\u00fcn oldugunu unutmay\u0131n, bu y\u00fczden yeni s\u00fcr\u00fcmleri manuel etkilesimi gerektirir.", + "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", + "LabelConfigureSettings": "Ayarlar\u0131 Degistir", + "LabelEnableVideoImageExtraction": "Enable video image extraction", + "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", + "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", + "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", + "HeaderTermsOfService": "Emby Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToEmbyConnect": "Linked to Emby Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", + "ButtonOk": "Tamam", + "ButtonCancel": "\u0130ptal", + "ButtonExit": "Exit", + "ButtonNew": "Yeni", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", "ButtonConfigurePinCode": "Configure pin code", "HeaderAdultsReadHere": "Adults Read Here!", @@ -14,12 +86,11 @@ "ButtonDonateWithPayPal": "Donate with PayPal", "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Emby online account user name or password.", + "LabelEnterConnectUserName": "Username or email:", + "LabelEnterConnectUserNameHelp": "This is your Emby online account username or password.", "LabelEnableEnhancedMovies": "Enable enhanced movie displays", "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", "FolderTypeMovies": "Movies", "FolderTypeMusic": "Music", "FolderTypeAdultVideos": "Adult videos", @@ -216,7 +287,9 @@ "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", "TabGeneral": "Genel", "TitleSupport": "Destek", + "LabelSeasonNumber": "Season number", "TabLog": "Kay\u0131t", + "LabelEpisodeNumber": "Episode number", "TabAbout": "Hakk\u0131nda", "TabSupporterKey": "Destek\u00e7i kodu", "TabBecomeSupporter": "Destek\u00e7i ol", @@ -242,6 +315,9 @@ "OptionAllowRemoteControlOthers": "Allow remote control of other users", "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", "HeaderRemoteControl": "Remote Control", "OptionMissingTmdbId": "Missing Tmdb Id", "OptionIsHD": "HD", @@ -510,8 +586,6 @@ "LabelSkipped": "Skipped", "HeaderEpisodeOrganization": "Episode Organization", "LabelSeries": "Series:", - "LabelSeasonNumber": "Season number:", - "LabelEpisodeNumber": "Episode number:", "LabelEndingEpisodeNumber": "Ending episode number:", "LabelEndingEpisodeNumberHelp": "Only required for multi-episode files", "HeaderSupportTheTeam": "Support the Emby Team", @@ -799,6 +873,7 @@ "HeaderTypeText": "Enter Text", "LabelTypeText": "Text", "HeaderSearchForSubtitles": "Search for Subtitles", + "ButtonMore": "More", "MessageNoSubtitleSearchResultsFound": "No search results founds.", "TabDisplay": "Display", "TabLanguages": "Languages", @@ -829,7 +904,7 @@ "HeaderLiveTv": "Live TV", "HeaderReports": "Reports", "HeaderMetadataManager": "Metadata Manager", - "HeaderPreferences": "Preferences", + "HeaderSettings": "Settings", "MessageLoadingChannels": "Loading channel content...", "MessageLoadingContent": "Loading content...", "ButtonMarkRead": "Mark Read", @@ -1027,7 +1102,6 @@ "OptionReportArtists": "Artists", "OptionReportAlbums": "Albums", "OptionReportAdultVideos": "Adult videos", - "ButtonMore": "More", "HeaderActivity": "Activity", "ScheduledTaskStartedWithName": "{0} started", "ScheduledTaskCancelledWithName": "{0} was cancelled", @@ -1157,6 +1231,7 @@ "OptionNoThemeVideo": "No Theme Video", "LabelOneTimeDonationAmount": "Donation amount:", "ButtonDonate": "Donate", + "ButtonPurchase": "Purchase", "OptionActor": "Actor", "OptionComposer": "Composer", "OptionDirector": "Director", @@ -1176,7 +1251,6 @@ "HeaderDeveloperInfo": "Developer Info", "HeaderRevisionHistory": "Revision History", "ButtonViewWebsite": "View website", - "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderXmlSettings": "Xml Settings", "HeaderXmlDocumentAttributes": "Xml Document Attributes", "HeaderXmlDocumentAttribute": "Xml Document Attribute", @@ -1190,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", "LabelExternalPlayers": "External players:", "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", "HeaderSubtitleProfile": "Subtitle Profile", "HeaderSubtitleProfiles": "Subtitle Profiles", "HeaderSubtitleProfilesHelp": "Subtitle profiles describe the subtitle formats supported by the device.", @@ -1318,7 +1395,7 @@ "HeaderUpcomingMovies": "Upcoming Movies", "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", - "ButtonMoreItems": "More...", + "ButtonMoreItems": "More", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", @@ -1337,14 +1414,6 @@ "OptionEnableFullSpeedConversion": "Enable full speed conversion", "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", "HeaderViewStyles": "View Styles", "LabelSelectViewStyles": "Enable enhanced presentations for:", "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", @@ -1362,76 +1431,24 @@ "HeaderNewServer": "New Server", "ButtonChangeServer": "Change Server", "HeaderConnectToServer": "Connect to Server", - "LabelExit": "Cikis", - "LabelVisitCommunity": "Bizi Ziyaret Edin", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standart", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "K\u00fct\u00fcphane", - "LabelConfigureServer": "Configure Emby", - "LabelOpenLibraryViewer": "K\u00fct\u00fcphane G\u00f6r\u00fcnt\u00fcleyici", - "LabelRestartServer": "Server Yeniden Baslat", - "LabelShowLogWindow": "Log Ekran\u0131n\u0131 G\u00f6r\u00fcnt\u00fcle", - "LabelPrevious": "\u00d6nceki", - "LabelFinish": "Bitir", - "LabelNext": "Sonraki", - "LabelYoureDone": "Haz\u0131rs\u0131n!", - "WelcomeToProject": "Welcome to Emby!", - "ThisWizardWillGuideYou": "Bu sihirbaz kurulum i\u015flemi boyunca size yard\u0131mc\u0131 olacakt\u0131r. Ba\u015flamak i\u00e7in, tercih etti\u011finiz dili se\u00e7iniz.", - "TellUsAboutYourself": "Kendinizden Bahsedin", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "\u0130lk Ad", - "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", - "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "Windows Servis", - "AWindowsServiceHasBeenInstalled": "Windows Servisi Y\u00fcklenmistir.", - "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", - "WindowsServiceIntro2": "Windows hizmeti kullan\u0131yorsan\u0131z, o tepsi simgesi olarak ayn\u0131 anda cal\u0131st\u0131rabilirsiniz unutmay\u0131n, b\u00f6ylece hizmetini cal\u0131st\u0131rmak i\u00e7in tepsiyi \u00e7\u0131kmak gerekir l\u00fctfen. Hizmeti de kontrol paneli \u00fczerinden y\u00f6netim ayr\u0131cal\u0131klar\u0131yla yap\u0131land\u0131r\u0131lm\u0131\u015f olmas\u0131 gerekir. Su anda hizmet kendine g\u00fcncelleme m\u00fcmk\u00fcn oldugunu unutmay\u0131n, bu y\u00fczden yeni s\u00fcr\u00fcmleri manuel etkilesimi gerektirir.", - "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", - "LabelConfigureSettings": "Ayarlar\u0131 Degistir", - "LabelEnableVideoImageExtraction": "Enable video image extraction", - "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", - "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", - "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "HeaderTermsOfService": "Emby Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LinkedToEmbyConnect": "Linked to Emby Connect", - "HeaderSupporterBenefits": "Supporter Benefits", - "HeaderAddUser": "Add User", - "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", - "LabelPinCode": "Pin code:", - "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", - "HeaderSync": "Sync", - "ButtonOk": "Tamam", - "ButtonCancel": "\u0130ptal", - "ButtonExit": "Exit", - "ButtonNew": "Yeni", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "TabPlaylist": "Playlist", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code" + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "HeaderExport": "Export", + "HeaderColumns": "Columns", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/uk.json b/MediaBrowser.Server.Implementations/Localization/Server/uk.json index 61de73334..5308d88c5 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/uk.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/uk.json @@ -1,5 +1,172 @@ { - "TabWebClient": "Web Client", + "LabelExit": "\u0412\u0438\u0439\u0442\u0438", + "LabelVisitCommunity": "Visit Community", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standard", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Browse Library", + "LabelConfigureServer": "Configure Emby", + "LabelOpenLibraryViewer": "Open Library Viewer", + "LabelRestartServer": "\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0438 \u0441\u0435\u0440\u0432\u0435\u0440", + "LabelShowLogWindow": "Show Log Window", + "LabelPrevious": "\u041d\u0430\u0437\u0430\u0434", + "LabelFinish": "Finish", + "FolderTypeMixed": "Mixed content", + "LabelNext": "\u0412\u043f\u0435\u0440\u0435\u0434", + "LabelYoureDone": "You're Done!", + "WelcomeToProject": "Welcome to Emby!", + "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", + "TellUsAboutYourself": "Tell us about yourself", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "\u0406\u043c\u2019\u044f", + "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", + "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", + "LabelWindowsService": "Windows Service", + "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", + "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", + "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", + "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", + "LabelConfigureSettings": "Configure settings", + "LabelEnableVideoImageExtraction": "Enable video image extraction", + "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", + "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", + "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", + "HeaderTermsOfService": "Emby Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToEmbyConnect": "Linked to Emby Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", + "ButtonOk": "Ok", + "ButtonCancel": "\u0421\u043a\u0430\u0441\u0443\u0432\u0430\u0442\u0438", + "ButtonExit": "Exit", + "ButtonNew": "\u041d\u043e\u0432\u0438\u0439", + "HeaderTV": "\u0422\u0411", + "HeaderAudio": "\u0410\u0443\u0434\u0456\u043e", + "HeaderVideo": "\u0412\u0456\u0434\u0435\u043e", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "\u041f\u043e\u0432\u0456\u0434\u043e\u043c\u043b\u0435\u043d\u043d\u044f", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "Username or email:", + "LabelEnterConnectUserNameHelp": "This is your Emby online account username or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMovies": "\u0424\u0456\u043b\u044c\u043c\u0438", + "FolderTypeMusic": "\u041c\u0443\u0437\u0438\u043a\u0430", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "\u0421\u0432\u0456\u0442\u043b\u0438\u043d\u0438", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "\u0406\u0433\u0440\u0438", + "FolderTypeBooks": "\u041a\u043d\u0438\u0433\u0438", + "FolderTypeTvShows": "\u0422\u0411", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "Setup your media library", + "ButtonAddMediaFolder": "Add media folder", + "LabelFolderType": "Folder type:", + "ReferToMediaLibraryWiki": "Refer to the media library wiki.", + "LabelCountry": "\u041a\u0440\u0430\u0457\u043d\u0430:", + "LabelLanguage": "\u041c\u043e\u0432\u0430:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "Preferred metadata language:", + "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", + "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", + "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", + "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", + "TabPreferences": "Preferences", + "TabPassword": "\u041f\u0430\u0440\u043e\u043b\u044c", + "TabLibraryAccess": "Library Access", + "TabAccess": "Access", + "TabImage": "Image", + "TabProfile": "\u041f\u0440\u043e\u0444\u0456\u043b\u044c", + "TabMetadata": "\u041c\u0435\u0442\u0430\u0434\u0430\u043d\u0456", + "TabImages": "\u0417\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f", + "TabNotifications": "\u041f\u043e\u0432\u0456\u0434\u043e\u043c\u043b\u0435\u043d\u043d\u044f", + "TabCollectionTitles": "Titles", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", + "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", + "HeaderVideoPlaybackSettings": "Video Playback Settings", + "HeaderPlaybackSettings": "Playback Settings", + "LabelAudioLanguagePreference": "Audio language preference:", + "LabelSubtitleLanguagePreference": "Subtitle language preference:", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Only forced subtitles", + "OptionAlwaysPlaySubtitles": "Always play subtitles", + "OptionNoSubtitles": "No Subtitles", + "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", + "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", + "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", + "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", + "TabProfiles": "\u041f\u0440\u043e\u0444\u0456\u043b\u0456", + "TabSecurity": "\u0411\u0435\u0437\u043f\u0435\u043a\u0430", + "ButtonAddUser": "\u0414\u043e\u0434\u0430\u0442\u0438 \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "\u0417\u0431\u0435\u0440\u0456\u0433\u0442\u0438", + "ButtonResetPassword": "\u0421\u043a\u0438\u043d\u0443\u0442\u0438 \u043f\u0430\u0440\u043e\u043b\u044c", + "LabelNewPassword": "\u041d\u043e\u0432\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c:", + "LabelNewPasswordConfirm": "New password confirm:", + "HeaderCreatePassword": "\u0421\u0442\u0432\u043e\u0440\u0438\u0442\u0438 \u043f\u0430\u0440\u043e\u043b\u044c", + "LabelCurrentPassword": "\u041f\u043e\u0442\u043e\u0447\u043d\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c:", + "LabelMaxParentalRating": "Maximum allowed parental rating:", + "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", + "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", + "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", + "ButtonDeleteImage": "Delete Image", + "LabelSelectUsers": "Select users:", + "ButtonUpload": "Upload", + "HeaderUploadNewImage": "Upload New Image", + "LabelDropImageHere": "Drop image here", + "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", + "MessageNothingHere": "Nothing here.", "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", "TabSuggested": "Suggested", "TabSuggestions": "Suggestions", @@ -120,7 +287,9 @@ "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", "TabGeneral": "General", "TitleSupport": "Support", + "LabelSeasonNumber": "Season number", "TabLog": "Log", + "LabelEpisodeNumber": "Episode number", "TabAbout": "About", "TabSupporterKey": "Supporter Key", "TabBecomeSupporter": "Become a Supporter", @@ -146,6 +315,9 @@ "OptionAllowRemoteControlOthers": "Allow remote control of other users", "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", "HeaderRemoteControl": "Remote Control", "OptionMissingTmdbId": "Missing Tmdb Id", "OptionIsHD": "HD", @@ -414,8 +586,6 @@ "LabelSkipped": "Skipped", "HeaderEpisodeOrganization": "Episode Organization", "LabelSeries": "Series:", - "LabelSeasonNumber": "Season number:", - "LabelEpisodeNumber": "Episode number:", "LabelEndingEpisodeNumber": "Ending episode number:", "LabelEndingEpisodeNumberHelp": "Only required for multi-episode files", "HeaderSupportTheTeam": "Support the Emby Team", @@ -703,6 +873,7 @@ "HeaderTypeText": "Enter Text", "LabelTypeText": "Text", "HeaderSearchForSubtitles": "Search for Subtitles", + "ButtonMore": "More", "MessageNoSubtitleSearchResultsFound": "No search results founds.", "TabDisplay": "Display", "TabLanguages": "Languages", @@ -733,7 +904,7 @@ "HeaderLiveTv": "Live TV", "HeaderReports": "Reports", "HeaderMetadataManager": "Metadata Manager", - "HeaderPreferences": "Preferences", + "HeaderSettings": "\u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f", "MessageLoadingChannels": "Loading channel content...", "MessageLoadingContent": "\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f \u0437\u043c\u0456\u0441\u0442\u0443...", "ButtonMarkRead": "Mark Read", @@ -931,7 +1102,6 @@ "OptionReportArtists": "Artists", "OptionReportAlbums": "Albums", "OptionReportAdultVideos": "Adult videos", - "ButtonMore": "More", "HeaderActivity": "Activity", "ScheduledTaskStartedWithName": "{0} started", "ScheduledTaskCancelledWithName": "{0} was cancelled", @@ -1061,6 +1231,7 @@ "OptionNoThemeVideo": "No Theme Video", "LabelOneTimeDonationAmount": "Donation amount:", "ButtonDonate": "Donate", + "ButtonPurchase": "Purchase", "OptionActor": "Actor", "OptionComposer": "Composer", "OptionDirector": "Director", @@ -1080,7 +1251,6 @@ "HeaderDeveloperInfo": "Developer Info", "HeaderRevisionHistory": "Revision History", "ButtonViewWebsite": "View website", - "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderXmlSettings": "Xml Settings", "HeaderXmlDocumentAttributes": "Xml Document Attributes", "HeaderXmlDocumentAttribute": "Xml Document Attribute", @@ -1094,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", "LabelExternalPlayers": "External players:", "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", "HeaderSubtitleProfile": "Subtitle Profile", "HeaderSubtitleProfiles": "Subtitle Profiles", "HeaderSubtitleProfilesHelp": "Subtitle profiles describe the subtitle formats supported by the device.", @@ -1222,7 +1395,7 @@ "HeaderUpcomingMovies": "Upcoming Movies", "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", - "ButtonMoreItems": "More...", + "ButtonMoreItems": "More", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", @@ -1241,14 +1414,6 @@ "OptionEnableFullSpeedConversion": "Enable full speed conversion", "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", "HeaderViewStyles": "View Styles", "LabelSelectViewStyles": "Enable enhanced presentations for:", "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", @@ -1266,172 +1431,24 @@ "HeaderNewServer": "New Server", "ButtonChangeServer": "Change Server", "HeaderConnectToServer": "Connect to Server", - "LabelExit": "\u0412\u0438\u0439\u0442\u0438", - "LabelVisitCommunity": "Visit Community", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standard", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Browse Library", - "LabelConfigureServer": "Configure Emby", - "LabelOpenLibraryViewer": "Open Library Viewer", - "LabelRestartServer": "\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0438 \u0441\u0435\u0440\u0432\u0435\u0440", - "LabelShowLogWindow": "Show Log Window", - "LabelPrevious": "\u041d\u0430\u0437\u0430\u0434", - "LabelFinish": "Finish", - "LabelNext": "\u0412\u043f\u0435\u0440\u0435\u0434", - "LabelYoureDone": "You're Done!", - "WelcomeToProject": "Welcome to Emby!", - "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", - "TellUsAboutYourself": "Tell us about yourself", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "\u0406\u043c\u2019\u044f", - "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", - "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "Windows Service", - "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", - "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", - "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", - "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", - "LabelConfigureSettings": "Configure settings", - "LabelEnableVideoImageExtraction": "Enable video image extraction", - "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", - "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", - "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "HeaderTermsOfService": "Emby Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LinkedToEmbyConnect": "Linked to Emby Connect", - "HeaderSupporterBenefits": "Supporter Benefits", - "HeaderAddUser": "Add User", - "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", - "LabelPinCode": "Pin code:", - "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", - "HeaderSync": "Sync", - "ButtonOk": "Ok", - "ButtonCancel": "\u0421\u043a\u0430\u0441\u0443\u0432\u0430\u0442\u0438", - "ButtonExit": "Exit", - "ButtonNew": "\u041d\u043e\u0432\u0438\u0439", - "HeaderTV": "\u0422\u0411", - "HeaderAudio": "\u0410\u0443\u0434\u0456\u043e", - "HeaderVideo": "\u0412\u0456\u0434\u0435\u043e", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "TabPlaylist": "Playlist", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "\u041f\u043e\u0432\u0456\u0434\u043e\u043c\u043b\u0435\u043d\u043d\u044f", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "\u0406\u043c\u2019\u044f \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430 \u0430\u0431\u043e email:", - "LabelEnterConnectUserNameHelp": "This is your Emby online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "\u0424\u0456\u043b\u044c\u043c\u0438", - "FolderTypeMusic": "\u041c\u0443\u0437\u0438\u043a\u0430", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "\u0421\u0432\u0456\u0442\u043b\u0438\u043d\u0438", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "\u0406\u0433\u0440\u0438", - "FolderTypeBooks": "\u041a\u043d\u0438\u0433\u0438", - "FolderTypeTvShows": "\u0422\u0411", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "Setup your media library", - "ButtonAddMediaFolder": "Add media folder", - "LabelFolderType": "Folder type:", - "ReferToMediaLibraryWiki": "Refer to the media library wiki.", - "LabelCountry": "\u041a\u0440\u0430\u0457\u043d\u0430:", - "LabelLanguage": "\u041c\u043e\u0432\u0430:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "Preferred metadata language:", - "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", - "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", - "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", - "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", - "TabPreferences": "Preferences", - "TabPassword": "\u041f\u0430\u0440\u043e\u043b\u044c", - "TabLibraryAccess": "Library Access", - "TabAccess": "Access", - "TabImage": "Image", - "TabProfile": "\u041f\u0440\u043e\u0444\u0456\u043b\u044c", - "TabMetadata": "\u041c\u0435\u0442\u0430\u0434\u0430\u043d\u0456", - "TabImages": "\u0417\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f", - "TabNotifications": "\u041f\u043e\u0432\u0456\u0434\u043e\u043c\u043b\u0435\u043d\u043d\u044f", - "TabCollectionTitles": "Titles", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", - "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", - "HeaderVideoPlaybackSettings": "Video Playback Settings", - "HeaderPlaybackSettings": "Playback Settings", - "LabelAudioLanguagePreference": "Audio language preference:", - "LabelSubtitleLanguagePreference": "Subtitle language preference:", - "OptionDefaultSubtitles": "Default", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "No Subtitles", - "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", - "TabProfiles": "\u041f\u0440\u043e\u0444\u0456\u043b\u0456", - "TabSecurity": "\u0411\u0435\u0437\u043f\u0435\u043a\u0430", - "ButtonAddUser": "\u0414\u043e\u0434\u0430\u0442\u0438 \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "\u0417\u0431\u0435\u0440\u0456\u0433\u0442\u0438", - "ButtonResetPassword": "\u0421\u043a\u0438\u043d\u0443\u0442\u0438 \u043f\u0430\u0440\u043e\u043b\u044c", - "LabelNewPassword": "\u041d\u043e\u0432\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c:", - "LabelNewPasswordConfirm": "New password confirm:", - "HeaderCreatePassword": "\u0421\u0442\u0432\u043e\u0440\u0438\u0442\u0438 \u043f\u0430\u0440\u043e\u043b\u044c", - "LabelCurrentPassword": "\u041f\u043e\u0442\u043e\u0447\u043d\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c:", - "LabelMaxParentalRating": "Maximum allowed parental rating:", - "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", - "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", - "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", - "ButtonDeleteImage": "Delete Image", - "LabelSelectUsers": "Select users:", - "ButtonUpload": "Upload", - "HeaderUploadNewImage": "Upload New Image", - "LabelDropImageHere": "Drop image here", - "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", - "MessageNothingHere": "Nothing here." + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "HeaderExport": "Export", + "HeaderColumns": "Columns", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/vi.json b/MediaBrowser.Server.Implementations/Localization/Server/vi.json index 8ca2178ab..5f38e8fc8 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/vi.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/vi.json @@ -1,5 +1,228 @@ { - "TabWebClient": "Web Client", + "LabelExit": "Tho\u00e1t", + "LabelVisitCommunity": "Gh\u00e9 th\u0103m trang C\u1ed9ng \u0111\u1ed3ng", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Ti\u00eau chu\u1ea9n", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Duy\u1ec7t th\u01b0 vi\u1ec7n", + "LabelConfigureServer": "Configure Emby", + "LabelOpenLibraryViewer": "Open Library Viewer", + "LabelRestartServer": "Kh\u1edfi \u0111\u1ed9ng l\u1ea1i m\u00e1y ch\u1ee7", + "LabelShowLogWindow": "Show Log Window", + "LabelPrevious": "Tr\u01b0\u1edbc", + "LabelFinish": "K\u1ebft th\u00fac", + "FolderTypeMixed": "Mixed content", + "LabelNext": "Ti\u1ebfp theo", + "LabelYoureDone": "B\u1ea1n \u0111\u00e3 ho\u00e0n th\u00e0nh!", + "WelcomeToProject": "Welcome to Emby!", + "ThisWizardWillGuideYou": "Th\u1ee7 thu\u1eadt n\u00e0y s\u1ebd h\u01b0\u1edbng d\u1eabn qu\u00e1 tr\u00ecnh c\u00e0i \u0111\u1eb7t cho b\u1ea1n. \u0110\u1ec3 b\u1eaft \u0111\u1ea7u, vui l\u00f2ng l\u1ef1a ch\u1ecdn ng\u00f4n ng\u1eef b\u1ea1n \u01b0a th\u00edch.", + "TellUsAboutYourself": "N\u00f3i cho ch\u00fang t\u00f4i bi\u1ebft \u0111\u00f4i \u0111i\u1ec1u v\u1ec1 B\u1ea1n", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "T\u00ean c\u1ee7a B\u1ea1n", + "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", + "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", + "LabelWindowsService": "D\u1ecbch v\u1ee5 c\u1ee7a Windows", + "AWindowsServiceHasBeenInstalled": "M\u1ed9t d\u1ecbch v\u1ee5 c\u1ee7a Windows \u0111\u00e3 \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t", + "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", + "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", + "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", + "LabelConfigureSettings": "C\u00e0i \u0111\u1eb7t c\u1ea5u h\u00ecnh", + "LabelEnableVideoImageExtraction": "Enable video image extraction", + "VideoImageExtractionHelp": "\u0110\u1ed1i v\u1edbi c\u00e1c video kh\u00f4ng c\u00f3 s\u1eb5n h\u00ecnh \u1ea3nh v\u00e0 ch\u00fang ta kh\u00f4ng t\u00ecm th\u1ea5y c\u00e1c h\u00ecnh \u1ea3nh \u0111\u00f3 tr\u00ean internet. \u0110i\u1ec1u n\u00e0y s\u1ebd", + "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Cho ph\u00e9p t\u1ef1 \u0111\u1ed9ng \u00e1nh x\u1ea1 c\u1ed5ng (port)", + "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", + "HeaderTermsOfService": "Emby Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToEmbyConnect": "Linked to Emby Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", + "ButtonOk": "Ok", + "ButtonCancel": "Tho\u00e1t", + "ButtonExit": "Exit", + "ButtonNew": "M\u1edbi", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "Username or email:", + "LabelEnterConnectUserNameHelp": "This is your Emby online account username or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "C\u00e0i \u0111\u1eb7t th\u01b0 vi\u1ec7n media c\u1ee7a b\u1ea1n", + "ButtonAddMediaFolder": "Th\u00eam m\u1ed9t th\u01b0 m\u1ee5c media", + "LabelFolderType": "Lo\u1ea1i th\u01b0 m\u1ee5c", + "ReferToMediaLibraryWiki": "Tham kh\u1ea3o th\u01b0 vi\u1ec7n wiki media.", + "LabelCountry": "Qu\u1ed1c gia:", + "LabelLanguage": "Ng\u00f4n ng\u1eef", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "Ng\u00f4n ng\u1eef metadata \u01b0a th\u00edch", + "LabelSaveLocalMetadata": "L\u01b0u c\u00e1c \u1ea3nh ngh\u1ec7 thu\u1eadt v\u00e0 metadata v\u00e0o trong c\u00e1c th\u01b0 m\u1ee5c media", + "LabelSaveLocalMetadataHelp": "L\u01b0u c\u00e1c \u1ea3nh ngh\u1ec7 thu\u1eadt v\u00e0 metadata v\u00e0o trong c\u00e1c th\u01b0 m\u1ee5c media, s\u1ebd \u0111\u01b0a ch\u00fang v\u00e0o m\u1ed9t n\u01a1i b\u1ea1n c\u00f3 th\u1ec3 ch\u1ec9nh s\u1eeda d\u1ec5 d\u00e0ng h\u01a1n.", + "LabelDownloadInternetMetadata": "T\u1ea3i \u1ea3nh ngh\u1ec7 thu\u1eadt v\u00e0 metadata t\u1eeb internet", + "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", + "TabPreferences": "\u01afa th\u00edch", + "TabPassword": "M\u1eadt kh\u1ea9u", + "TabLibraryAccess": "Truy c\u1eadp th\u01b0 vi\u1ec7n", + "TabAccess": "Access", + "TabImage": "H\u00ecnh \u1ea3nh", + "TabProfile": "H\u1ed3 s\u01a1", + "TabMetadata": "Metadata", + "TabImages": "H\u00ecnh \u1ea3nh", + "TabNotifications": "Notifications", + "TabCollectionTitles": "Ti\u00eau \u0111\u1ec1", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", + "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", + "HeaderVideoPlaybackSettings": "C\u00e1c c\u00e0i \u0111\u1eb7t ph\u00e1t Video", + "HeaderPlaybackSettings": "Playback Settings", + "LabelAudioLanguagePreference": "Ng\u00f4n ng\u1eef tho\u1ea1i \u01b0a th\u00edch:", + "LabelSubtitleLanguagePreference": "Ng\u00f4n ng\u1eef ph\u1ee5 \u0111\u1ec1 \u01b0a th\u00edch:", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Only forced subtitles", + "OptionAlwaysPlaySubtitles": "Always play subtitles", + "OptionNoSubtitles": "No Subtitles", + "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", + "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", + "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", + "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", + "TabProfiles": "H\u1ed3 s\u01a1", + "TabSecurity": "B\u1ea3o m\u1eadt", + "ButtonAddUser": "Th\u00eam ng\u01b0\u1eddi d\u00f9ng", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "L\u01b0u", + "ButtonResetPassword": "Reset m\u1eadt kh\u1ea9u", + "LabelNewPassword": "M\u1eadt kh\u1ea9u m\u1edbi:", + "LabelNewPasswordConfirm": "X\u00e1c nh\u1eadn m\u1eadt kh\u1ea9u m\u1edbi:", + "HeaderCreatePassword": "T\u1ea1o m\u1eadt kh\u1ea9u", + "LabelCurrentPassword": "M\u1eadt kh\u1ea9u hi\u1ec7n t\u1ea1i:", + "LabelMaxParentalRating": "Maximum allowed parental rating:", + "MaxParentalRatingHelp": "N\u1ed9i dung v\u1edbi \u0111\u00e1nh gi\u00e1 cao h\u01a1n s\u1ebd \u0111\u01b0\u1ee3c \u1ea9n \u0111i t\u1eeb ng\u01b0\u1eddi d\u00f9ng n\u00e0y.", + "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", + "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", + "ButtonDeleteImage": "X\u00f3a h\u00ecnh \u1ea3nh", + "LabelSelectUsers": "Select users:", + "ButtonUpload": "T\u1ea3i l\u00ean", + "HeaderUploadNewImage": "T\u1ea3i l\u00ean m\u1ed9t \u1ea3nh m\u1edbi", + "LabelDropImageHere": "Drop image here", + "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", + "MessageNothingHere": "Kh\u00f4ng c\u00f3 g\u00ec \u1edf \u0111\u00e2y.", + "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", + "TabSuggested": "Suggested", + "TabSuggestions": "Suggestions", + "TabLatest": "M\u1edbi nh\u1ea5t", + "TabUpcoming": "S\u1eafp di\u1ec5n ra", + "TabShows": "Shows", + "TabEpisodes": "C\u00e1c t\u1eadp phim", + "TabGenres": "C\u00e1c th\u1ec3 lo\u1ea1i", + "TabPeople": "M\u1ecdi ng\u01b0\u1eddi", + "TabNetworks": "C\u00e1c m\u1ea1ng", + "HeaderUsers": "d\u00f9ng", + "HeaderFilters": "Filters:", + "ButtonFilter": "Filter", + "OptionFavorite": "Y\u00eau th\u00edch", + "OptionLikes": "Th\u00edch", + "OptionDislikes": "Kh\u00f4ng th\u00edch", + "OptionActors": "Di\u1ec5n vi\u00ean", + "OptionGuestStars": "Guest Stars", + "OptionDirectors": "\u0110\u1ea1o di\u1ec5n", + "OptionWriters": "K\u1ecbch b\u1ea3n", + "OptionProducers": "Nh\u00e0 s\u1ea3n xu\u1ea5t", + "HeaderResume": "S\u01a1 y\u1ebfu l\u00fd l\u1ecbch", + "HeaderNextUp": "Next Up", + "NoNextUpItemsMessage": "None found. Start watching your shows!", + "HeaderLatestEpisodes": "C\u00e1c t\u1eadp phim m\u1edbi nh\u1ea5t", + "HeaderPersonTypes": "Person Types:", + "TabSongs": "C\u00e1c ca kh\u00fac", + "TabAlbums": "C\u00e1c Album", + "TabArtists": "C\u00e1c ngh\u1ec7 s\u1ef9", + "TabAlbumArtists": "C\u00e1c Album ngh\u1ec7 s\u1ef9", + "TabMusicVideos": "C\u00e1c video \u00e2m nh\u1ea1c", + "ButtonSort": "Ph\u00e2n lo\u1ea1i", + "HeaderSortBy": "Ph\u00e2n lo\u1ea1i theo:", + "HeaderSortOrder": "Ph\u00e2n lo\u1ea1i theo th\u1ee9 t\u1ef1:", + "OptionPlayed": "Played", + "OptionUnplayed": "Unplayed", + "OptionAscending": "Ascending", + "OptionDescending": "Descending", + "OptionRuntime": "Th\u1eddi gian ph\u00e1t", + "OptionReleaseDate": "Release Date", + "OptionPlayCount": "S\u1ed1 l\u1ea7n ph\u00e1t", + "OptionDatePlayed": "Ng\u00e0y ph\u00e1t", + "OptionDateAdded": "Ng\u00e0y th\u00eam", + "OptionAlbumArtist": "Album ngh\u1ec7 s\u1ef9", + "OptionArtist": "Ngh\u1ec7 s\u1ef9", + "OptionAlbum": "Album", + "OptionTrackName": "T\u00ean b\u00e0i", + "OptionCommunityRating": "\u0110\u00e1nh gi\u00e1 c\u1ee7a c\u1ed9ng \u0111\u1ed3ng", + "OptionNameSort": "T\u00ean", + "OptionFolderSort": "Folders", + "OptionBudget": "Ng\u00e2n s\u00e1ch", + "OptionRevenue": "Doanh thu", + "OptionPoster": "\u00c1p ph\u00edch", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "Backdrop", + "OptionTimeline": "D\u00f2ng th\u1eddi gian", "OptionThumb": "Thumb", "OptionThumbCard": "Thumb card", "OptionBanner": "Bi\u1ec3n qu\u1ea3ng c\u00e1o", @@ -64,7 +287,9 @@ "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", "TabGeneral": "General", "TitleSupport": "H\u1ed7 tr\u1ee3", + "LabelSeasonNumber": "Season number", "TabLog": "Log", + "LabelEpisodeNumber": "Episode number", "TabAbout": "About", "TabSupporterKey": "Supporter Key", "TabBecomeSupporter": "Become a Supporter", @@ -90,6 +315,9 @@ "OptionAllowRemoteControlOthers": "Allow remote control of other users", "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", "HeaderRemoteControl": "Remote Control", "OptionMissingTmdbId": "Thi\u1ebfu Tmdb ID", "OptionIsHD": "\u0110\u1ed9 n\u00e9t cao", @@ -358,8 +586,6 @@ "LabelSkipped": "B\u1ecf qua", "HeaderEpisodeOrganization": "Episode Organization", "LabelSeries": "Series:", - "LabelSeasonNumber": "Season number:", - "LabelEpisodeNumber": "Episode number:", "LabelEndingEpisodeNumber": "Ending episode number:", "LabelEndingEpisodeNumberHelp": "Only required for multi-episode files", "HeaderSupportTheTeam": "Support the Emby Team", @@ -647,6 +873,7 @@ "HeaderTypeText": "Enter Text", "LabelTypeText": "Text", "HeaderSearchForSubtitles": "Search for Subtitles", + "ButtonMore": "More", "MessageNoSubtitleSearchResultsFound": "No search results founds.", "TabDisplay": "Display", "TabLanguages": "Languages", @@ -677,7 +904,7 @@ "HeaderLiveTv": "Live TV", "HeaderReports": "Reports", "HeaderMetadataManager": "Metadata Manager", - "HeaderPreferences": "Preferences", + "HeaderSettings": "Settings", "MessageLoadingChannels": "Loading channel content...", "MessageLoadingContent": "Loading content...", "ButtonMarkRead": "Mark Read", @@ -875,7 +1102,6 @@ "OptionReportArtists": "Artists", "OptionReportAlbums": "Albums", "OptionReportAdultVideos": "Adult videos", - "ButtonMore": "More", "HeaderActivity": "Activity", "ScheduledTaskStartedWithName": "{0} started", "ScheduledTaskCancelledWithName": "{0} was cancelled", @@ -1005,6 +1231,7 @@ "OptionNoThemeVideo": "No Theme Video", "LabelOneTimeDonationAmount": "Donation amount:", "ButtonDonate": "Donate", + "ButtonPurchase": "Purchase", "OptionActor": "Actor", "OptionComposer": "Composer", "OptionDirector": "Director", @@ -1024,7 +1251,6 @@ "HeaderDeveloperInfo": "Developer Info", "HeaderRevisionHistory": "Revision History", "ButtonViewWebsite": "View website", - "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderXmlSettings": "Xml Settings", "HeaderXmlDocumentAttributes": "Xml Document Attributes", "HeaderXmlDocumentAttribute": "Xml Document Attribute", @@ -1038,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", "LabelExternalPlayers": "External players:", "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", "HeaderSubtitleProfile": "Subtitle Profile", "HeaderSubtitleProfiles": "Subtitle Profiles", "HeaderSubtitleProfilesHelp": "Subtitle profiles describe the subtitle formats supported by the device.", @@ -1166,7 +1395,7 @@ "HeaderUpcomingMovies": "Upcoming Movies", "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", - "ButtonMoreItems": "More...", + "ButtonMoreItems": "More", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", @@ -1185,14 +1414,6 @@ "OptionEnableFullSpeedConversion": "Enable full speed conversion", "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", "HeaderViewStyles": "View Styles", "LabelSelectViewStyles": "Enable enhanced presentations for:", "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", @@ -1210,228 +1431,24 @@ "HeaderNewServer": "New Server", "ButtonChangeServer": "Change Server", "HeaderConnectToServer": "Connect to Server", - "LabelExit": "Tho\u00e1t", - "LabelVisitCommunity": "Gh\u00e9 th\u0103m trang C\u1ed9ng \u0111\u1ed3ng", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Ti\u00eau chu\u1ea9n", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Duy\u1ec7t th\u01b0 vi\u1ec7n", - "LabelConfigureServer": "Configure Emby", - "LabelOpenLibraryViewer": "Open Library Viewer", - "LabelRestartServer": "Kh\u1edfi \u0111\u1ed9ng l\u1ea1i m\u00e1y ch\u1ee7", - "LabelShowLogWindow": "Show Log Window", - "LabelPrevious": "Tr\u01b0\u1edbc", - "LabelFinish": "K\u1ebft th\u00fac", - "LabelNext": "Ti\u1ebfp theo", - "LabelYoureDone": "B\u1ea1n \u0111\u00e3 ho\u00e0n th\u00e0nh!", - "WelcomeToProject": "Welcome to Emby!", - "ThisWizardWillGuideYou": "Th\u1ee7 thu\u1eadt n\u00e0y s\u1ebd h\u01b0\u1edbng d\u1eabn qu\u00e1 tr\u00ecnh c\u00e0i \u0111\u1eb7t cho b\u1ea1n. \u0110\u1ec3 b\u1eaft \u0111\u1ea7u, vui l\u00f2ng l\u1ef1a ch\u1ecdn ng\u00f4n ng\u1eef b\u1ea1n \u01b0a th\u00edch.", - "TellUsAboutYourself": "N\u00f3i cho ch\u00fang t\u00f4i bi\u1ebft \u0111\u00f4i \u0111i\u1ec1u v\u1ec1 B\u1ea1n", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "T\u00ean c\u1ee7a B\u1ea1n", - "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", - "UserProfilesIntro": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "D\u1ecbch v\u1ee5 c\u1ee7a Windows", - "AWindowsServiceHasBeenInstalled": "M\u1ed9t d\u1ecbch v\u1ee5 c\u1ee7a Windows \u0111\u00e3 \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t", - "WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", - "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", - "WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", - "LabelConfigureSettings": "C\u00e0i \u0111\u1eb7t c\u1ea5u h\u00ecnh", - "LabelEnableVideoImageExtraction": "Enable video image extraction", - "VideoImageExtractionHelp": "\u0110\u1ed1i v\u1edbi c\u00e1c video kh\u00f4ng c\u00f3 s\u1eb5n h\u00ecnh \u1ea3nh v\u00e0 ch\u00fang ta kh\u00f4ng t\u00ecm th\u1ea5y c\u00e1c h\u00ecnh \u1ea3nh \u0111\u00f3 tr\u00ean internet. \u0110i\u1ec1u n\u00e0y s\u1ebd", - "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Cho ph\u00e9p t\u1ef1 \u0111\u1ed9ng \u00e1nh x\u1ea1 c\u1ed5ng (port)", - "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "HeaderTermsOfService": "Emby Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LinkedToEmbyConnect": "Linked to Emby Connect", - "HeaderSupporterBenefits": "Supporter Benefits", - "HeaderAddUser": "Add User", - "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", - "LabelPinCode": "Pin code:", - "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", - "HeaderSync": "Sync", - "ButtonOk": "Ok", - "ButtonCancel": "Tho\u00e1t", - "ButtonExit": "Exit", - "ButtonNew": "M\u1edbi", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "TabPlaylist": "Playlist", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Emby online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "C\u00e0i \u0111\u1eb7t th\u01b0 vi\u1ec7n media c\u1ee7a b\u1ea1n", - "ButtonAddMediaFolder": "Th\u00eam m\u1ed9t th\u01b0 m\u1ee5c media", - "LabelFolderType": "Lo\u1ea1i th\u01b0 m\u1ee5c", - "ReferToMediaLibraryWiki": "Tham kh\u1ea3o th\u01b0 vi\u1ec7n wiki media.", - "LabelCountry": "Qu\u1ed1c gia:", - "LabelLanguage": "Ng\u00f4n ng\u1eef", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "Ng\u00f4n ng\u1eef metadata \u01b0a th\u00edch", - "LabelSaveLocalMetadata": "L\u01b0u c\u00e1c \u1ea3nh ngh\u1ec7 thu\u1eadt v\u00e0 metadata v\u00e0o trong c\u00e1c th\u01b0 m\u1ee5c media", - "LabelSaveLocalMetadataHelp": "L\u01b0u c\u00e1c \u1ea3nh ngh\u1ec7 thu\u1eadt v\u00e0 metadata v\u00e0o trong c\u00e1c th\u01b0 m\u1ee5c media, s\u1ebd \u0111\u01b0a ch\u00fang v\u00e0o m\u1ed9t n\u01a1i b\u1ea1n c\u00f3 th\u1ec3 ch\u1ec9nh s\u1eeda d\u1ec5 d\u00e0ng h\u01a1n.", - "LabelDownloadInternetMetadata": "T\u1ea3i \u1ea3nh ngh\u1ec7 thu\u1eadt v\u00e0 metadata t\u1eeb internet", - "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", - "TabPreferences": "\u01afa th\u00edch", - "TabPassword": "M\u1eadt kh\u1ea9u", - "TabLibraryAccess": "Truy c\u1eadp th\u01b0 vi\u1ec7n", - "TabAccess": "Access", - "TabImage": "H\u00ecnh \u1ea3nh", - "TabProfile": "H\u1ed3 s\u01a1", - "TabMetadata": "Metadata", - "TabImages": "H\u00ecnh \u1ea3nh", - "TabNotifications": "Notifications", - "TabCollectionTitles": "Ti\u00eau \u0111\u1ec1", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", - "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", - "HeaderVideoPlaybackSettings": "C\u00e1c c\u00e0i \u0111\u1eb7t ph\u00e1t Video", - "HeaderPlaybackSettings": "Playback Settings", - "LabelAudioLanguagePreference": "Ng\u00f4n ng\u1eef tho\u1ea1i \u01b0a th\u00edch:", - "LabelSubtitleLanguagePreference": "Ng\u00f4n ng\u1eef ph\u1ee5 \u0111\u1ec1 \u01b0a th\u00edch:", - "OptionDefaultSubtitles": "Default", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "No Subtitles", - "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", - "TabProfiles": "H\u1ed3 s\u01a1", - "TabSecurity": "B\u1ea3o m\u1eadt", - "ButtonAddUser": "Th\u00eam ng\u01b0\u1eddi d\u00f9ng", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "L\u01b0u", - "ButtonResetPassword": "Reset m\u1eadt kh\u1ea9u", - "LabelNewPassword": "M\u1eadt kh\u1ea9u m\u1edbi:", - "LabelNewPasswordConfirm": "X\u00e1c nh\u1eadn m\u1eadt kh\u1ea9u m\u1edbi:", - "HeaderCreatePassword": "T\u1ea1o m\u1eadt kh\u1ea9u", - "LabelCurrentPassword": "M\u1eadt kh\u1ea9u hi\u1ec7n t\u1ea1i:", - "LabelMaxParentalRating": "Maximum allowed parental rating:", - "MaxParentalRatingHelp": "N\u1ed9i dung v\u1edbi \u0111\u00e1nh gi\u00e1 cao h\u01a1n s\u1ebd \u0111\u01b0\u1ee3c \u1ea9n \u0111i t\u1eeb ng\u01b0\u1eddi d\u00f9ng n\u00e0y.", - "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", - "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", - "ButtonDeleteImage": "X\u00f3a h\u00ecnh \u1ea3nh", - "LabelSelectUsers": "Select users:", - "ButtonUpload": "T\u1ea3i l\u00ean", - "HeaderUploadNewImage": "T\u1ea3i l\u00ean m\u1ed9t \u1ea3nh m\u1edbi", - "LabelDropImageHere": "Drop image here", - "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", - "MessageNothingHere": "Kh\u00f4ng c\u00f3 g\u00ec \u1edf \u0111\u00e2y.", - "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", - "TabSuggested": "Suggested", - "TabSuggestions": "Suggestions", - "TabLatest": "M\u1edbi nh\u1ea5t", - "TabUpcoming": "S\u1eafp di\u1ec5n ra", - "TabShows": "Shows", - "TabEpisodes": "C\u00e1c t\u1eadp phim", - "TabGenres": "C\u00e1c th\u1ec3 lo\u1ea1i", - "TabPeople": "M\u1ecdi ng\u01b0\u1eddi", - "TabNetworks": "C\u00e1c m\u1ea1ng", - "HeaderUsers": "d\u00f9ng", - "HeaderFilters": "Filters:", - "ButtonFilter": "Filter", - "OptionFavorite": "Y\u00eau th\u00edch", - "OptionLikes": "Th\u00edch", - "OptionDislikes": "Kh\u00f4ng th\u00edch", - "OptionActors": "Di\u1ec5n vi\u00ean", - "OptionGuestStars": "Guest Stars", - "OptionDirectors": "\u0110\u1ea1o di\u1ec5n", - "OptionWriters": "K\u1ecbch b\u1ea3n", - "OptionProducers": "Nh\u00e0 s\u1ea3n xu\u1ea5t", - "HeaderResume": "S\u01a1 y\u1ebfu l\u00fd l\u1ecbch", - "HeaderNextUp": "Next Up", - "NoNextUpItemsMessage": "None found. Start watching your shows!", - "HeaderLatestEpisodes": "C\u00e1c t\u1eadp phim m\u1edbi nh\u1ea5t", - "HeaderPersonTypes": "Person Types:", - "TabSongs": "C\u00e1c ca kh\u00fac", - "TabAlbums": "C\u00e1c Album", - "TabArtists": "C\u00e1c ngh\u1ec7 s\u1ef9", - "TabAlbumArtists": "C\u00e1c Album ngh\u1ec7 s\u1ef9", - "TabMusicVideos": "C\u00e1c video \u00e2m nh\u1ea1c", - "ButtonSort": "Ph\u00e2n lo\u1ea1i", - "HeaderSortBy": "Ph\u00e2n lo\u1ea1i theo:", - "HeaderSortOrder": "Ph\u00e2n lo\u1ea1i theo th\u1ee9 t\u1ef1:", - "OptionPlayed": "Played", - "OptionUnplayed": "Unplayed", - "OptionAscending": "Ascending", - "OptionDescending": "Descending", - "OptionRuntime": "Th\u1eddi gian ph\u00e1t", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "S\u1ed1 l\u1ea7n ph\u00e1t", - "OptionDatePlayed": "Ng\u00e0y ph\u00e1t", - "OptionDateAdded": "Ng\u00e0y th\u00eam", - "OptionAlbumArtist": "Album ngh\u1ec7 s\u1ef9", - "OptionArtist": "Ngh\u1ec7 s\u1ef9", - "OptionAlbum": "Album", - "OptionTrackName": "T\u00ean b\u00e0i", - "OptionCommunityRating": "\u0110\u00e1nh gi\u00e1 c\u1ee7a c\u1ed9ng \u0111\u1ed3ng", - "OptionNameSort": "T\u00ean", - "OptionFolderSort": "Folders", - "OptionBudget": "Ng\u00e2n s\u00e1ch", - "OptionRevenue": "Doanh thu", - "OptionPoster": "\u00c1p ph\u00edch", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "Backdrop", - "OptionTimeline": "D\u00f2ng th\u1eddi gian" + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "HeaderExport": "Export", + "HeaderColumns": "Columns", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/zh_CN.json b/MediaBrowser.Server.Implementations/Localization/Server/zh-CN.json index 155c73365..20f4fa16b 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/zh_CN.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/zh-CN.json @@ -1,5 +1,4 @@ { - "TabWebClient": "Web\u5ba2\u6237\u7aef", "LabelExit": "\u9000\u51fa", "LabelVisitCommunity": "\u8bbf\u95ee\u793e\u533a", "LabelGithub": "Github", @@ -14,6 +13,7 @@ "LabelShowLogWindow": "\u663e\u793a\u65e5\u5fd7\u7a97\u53e3", "LabelPrevious": "\u4e0a\u4e00\u4e2a", "LabelFinish": "\u5b8c\u6210", + "FolderTypeMixed": "Mixed content", "LabelNext": "\u4e0b\u4e00\u4e2a", "LabelYoureDone": "\u5b8c\u6210\uff01", "WelcomeToProject": "Welcome to Emby!", @@ -86,12 +86,11 @@ "ButtonDonateWithPayPal": "\u901a\u8fc7PayPal\u6350\u8d60", "OptionDetectArchiveFilesAsMedia": "\u628a\u538b\u7f29\u6587\u4ef6\u4f5c\u4e3a\u5a92\u4f53\u6587\u4ef6\u68c0\u6d4b", "OptionDetectArchiveFilesAsMediaHelp": "\u5982\u679c\u542f\u7528\uff0c\u4e0e.RAR\u548c.zip\u6269\u5c55\u540d\u7684\u6587\u4ef6\u5c06\u88ab\u68c0\u6d4b\u4e3a\u5a92\u4f53\u6587\u4ef6\u3002", - "LabelEnterConnectUserName": "\u7528\u6237\u540d\u6216\u7535\u5b50\u90ae\u4ef6\uff1a", - "LabelEnterConnectUserNameHelp": "This is your Emby online account user name or password.", + "LabelEnterConnectUserName": "Username or email:", + "LabelEnterConnectUserNameHelp": "This is your Emby online account username or password.", "LabelEnableEnhancedMovies": "Enable enhanced movie displays", "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", "HeaderSyncJobInfo": "\u540c\u6b65\u4f5c\u4e1a", - "FolderTypeMixed": "\u6df7\u5408\u5185\u5bb9", "FolderTypeMovies": "\u7535\u5f71", "FolderTypeMusic": "\u97f3\u4e50", "FolderTypeAdultVideos": "\u6210\u4eba\u89c6\u9891", @@ -288,7 +287,9 @@ "OptionFileMetadataYearMismatch": "\u6587\u4ef6\/\u5a92\u4f53\u8d44\u6599\u5e74\u4efd\u4e0d\u5339\u914d", "TabGeneral": "\u4e00\u822c", "TitleSupport": "\u652f\u6301", + "LabelSeasonNumber": "Season number", "TabLog": "\u65e5\u5fd7\u6587\u6863", + "LabelEpisodeNumber": "Episode number", "TabAbout": "\u5173\u4e8e", "TabSupporterKey": "\u652f\u6301\u8005\u5e8f\u53f7", "TabBecomeSupporter": "\u6210\u4e3a\u652f\u6301\u8005", @@ -314,6 +315,9 @@ "OptionAllowRemoteControlOthers": "Allow remote control of other users", "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", "HeaderRemoteControl": "Remote Control", "OptionMissingTmdbId": "\u7f3a\u5c11Tmdb \u7f16\u53f7", "OptionIsHD": "HD\u9ad8\u6e05", @@ -582,8 +586,6 @@ "LabelSkipped": "\u8df3\u8fc7", "HeaderEpisodeOrganization": "\u5267\u96c6\u6574\u7406", "LabelSeries": "\u7535\u89c6\u5267\uff1a", - "LabelSeasonNumber": "\u591a\u5c11\u5b63\uff1a", - "LabelEpisodeNumber": "\u591a\u5c11\u96c6\uff1a", "LabelEndingEpisodeNumber": "\u6700\u540e\u4e00\u96c6\u6570\u5b57\uff1a", "LabelEndingEpisodeNumberHelp": "\u53ea\u9700\u8981\u591a\u96c6\u6587\u4ef6", "HeaderSupportTheTeam": "Support the Emby Team", @@ -871,6 +873,7 @@ "HeaderTypeText": "\u8f93\u5165\u6587\u672c", "LabelTypeText": "\u6587\u672c", "HeaderSearchForSubtitles": "\u641c\u7d22\u5b57\u5e55", + "ButtonMore": "More", "MessageNoSubtitleSearchResultsFound": "\u641c\u7d22\u65e0\u7ed3\u679c", "TabDisplay": "\u663e\u793a", "TabLanguages": "\u8bed\u8a00", @@ -901,7 +904,7 @@ "HeaderLiveTv": "\u7535\u89c6\u76f4\u64ad", "HeaderReports": "\u62a5\u544a", "HeaderMetadataManager": "\u5a92\u4f53\u8d44\u6599\u7ba1\u7406", - "HeaderPreferences": "\u504f\u597d", + "HeaderSettings": "Settings", "MessageLoadingChannels": "\u9891\u9053\u5185\u5bb9\u52a0\u8f7d\u4e2d......", "MessageLoadingContent": "\u6b63\u5728\u8f7d\u5165\u5185\u5bb9....", "ButtonMarkRead": "\u6807\u8bb0\u5df2\u8bfb", @@ -1099,7 +1102,6 @@ "OptionReportArtists": "\u827a\u672f\u5bb6", "OptionReportAlbums": "\u4e13\u8f91", "OptionReportAdultVideos": "\u6210\u4eba\u89c6\u9891", - "ButtonMore": "\u66f4\u591a", "HeaderActivity": "\u6d3b\u52a8", "ScheduledTaskStartedWithName": "{0} \u5f00\u59cb", "ScheduledTaskCancelledWithName": "{0} \u88ab\u53d6\u6d88", @@ -1229,6 +1231,7 @@ "OptionNoThemeVideo": "\u65e0\u4e3b\u9898\u89c6\u9891", "LabelOneTimeDonationAmount": "\u6350\u6b3e\u91d1\u989d\uff1a", "ButtonDonate": "\u6350\u8d60", + "ButtonPurchase": "Purchase", "OptionActor": "\u6f14\u5458", "OptionComposer": "\u4f5c\u66f2\u5bb6", "OptionDirector": "\u5bfc\u6f14", @@ -1248,7 +1251,6 @@ "HeaderDeveloperInfo": "\u5f00\u53d1\u8005\u4fe1\u606f", "HeaderRevisionHistory": "\u4fee\u8ba2\u5386\u53f2", "ButtonViewWebsite": "\u6d4f\u89c8\u7f51\u7ad9", - "LabelRecurringDonationCanBeCancelledHelp": "\u5728\u60a8\u7684PayPal\u8d26\u6237\u5185\u4efb\u4f55\u65f6\u5019\u90fd\u53ef\u4ee5\u53d6\u6d88\u7ecf\u5e38\u6027\u6350\u8d60\u3002", "HeaderXmlSettings": "XML\u8bbe\u7f6e", "HeaderXmlDocumentAttributes": "XML\u6587\u6863\u5c5e\u6027", "HeaderXmlDocumentAttribute": "XML\u6587\u6863\u5c5e\u6027", @@ -1262,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", "LabelExternalPlayers": "\u5916\u90e8\u64ad\u653e\u5668\uff1a", "LabelExternalPlayersHelp": "\u663e\u793a\u5728\u5916\u90e8\u64ad\u653e\u5668\u4e0a\u64ad\u653e\u7684\u6309\u94ae\u3002\u8fd9\u4ec5\u9002\u7528\u4e8e\u652f\u6301URL\u65b9\u6848\u7684Android\u548ciOS\u8bbe\u5907\u3002\u5916\u90e8\u64ad\u653e\u5668\u901a\u5e38\u4e0d\u652f\u6301\u8fdb\u884c\u8fdc\u7a0b\u63a7\u5236\u6216\u6062\u590d\u64ad\u653e\u3002", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", "HeaderSubtitleProfile": "\u5b57\u5e55\u914d\u7f6e", "HeaderSubtitleProfiles": "\u5b57\u5e55\u914d\u7f6e", "HeaderSubtitleProfilesHelp": "\u5b57\u5e55\u914d\u7f6e\u6587\u4ef6\u63cf\u8ff0\u8bbe\u5907\u6240\u652f\u6301\u7684\u5b57\u5e55\u683c\u5f0f\u3002", @@ -1390,7 +1395,7 @@ "HeaderUpcomingMovies": "Upcoming Movies", "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", - "ButtonMoreItems": "\u66f4\u591a...", + "ButtonMoreItems": "More", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", @@ -1409,14 +1414,6 @@ "OptionEnableFullSpeedConversion": "Enable full speed conversion", "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", "HeaderViewStyles": "View Styles", "LabelSelectViewStyles": "Enable enhanced presentations for:", "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", @@ -1433,5 +1430,25 @@ "LabelServerPort": "Port:", "HeaderNewServer": "New Server", "ButtonChangeServer": "Change Server", - "HeaderConnectToServer": "Connect to Server" + "HeaderConnectToServer": "Connect to Server", + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "HeaderExport": "Export", + "HeaderColumns": "Columns", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json b/MediaBrowser.Server.Implementations/Localization/Server/zh-TW.json index ef38d6e01..93b99610a 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/zh-TW.json @@ -1,5 +1,4 @@ { - "TabWebClient": "Web Client", "LabelExit": "\u96e2\u958b", "LabelVisitCommunity": "\u8a2a\u554f\u793e\u5340", "LabelGithub": "Github", @@ -14,6 +13,7 @@ "LabelShowLogWindow": "\u986f\u793a\u65e5\u8a8c", "LabelPrevious": "\u4e0a\u4e00\u500b", "LabelFinish": "\u5b8c\u7d50", + "FolderTypeMixed": "Mixed content", "LabelNext": "\u4e0b\u4e00\u500b", "LabelYoureDone": "\u5b8c\u6210!", "WelcomeToProject": "Welcome to Emby!", @@ -86,12 +86,11 @@ "ButtonDonateWithPayPal": "Donate with PayPal", "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Emby online account user name or password.", + "LabelEnterConnectUserName": "Username or email:", + "LabelEnterConnectUserNameHelp": "This is your Emby online account username or password.", "LabelEnableEnhancedMovies": "Enable enhanced movie displays", "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", "FolderTypeMovies": "Movies", "FolderTypeMusic": "Music", "FolderTypeAdultVideos": "Adult videos", @@ -288,7 +287,9 @@ "OptionFileMetadataYearMismatch": "\u6a94\u6848\/\u5a92\u9ad4\u8cc7\u6599\u5e74\u4efd\u4e0d\u5339\u914d", "TabGeneral": "\u4e00\u822c", "TitleSupport": "\u652f\u63f4", + "LabelSeasonNumber": "Season number", "TabLog": "\u65e5\u8a8c", + "LabelEpisodeNumber": "Episode number", "TabAbout": "\u95dc\u65bc", "TabSupporterKey": "\u652f\u6301\u8005\u5e8f\u865f", "TabBecomeSupporter": "\u6210\u70ba\u652f\u6301\u8005", @@ -314,6 +315,9 @@ "OptionAllowRemoteControlOthers": "Allow remote control of other users", "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", + "OptionAllowLinkSharing": "Allow social media sharing", + "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire based on your server sharing settings.", + "HeaderSharing": "Sharing", "HeaderRemoteControl": "Remote Control", "OptionMissingTmdbId": "\u7f3a\u5c11TMDB\u7de8\u865f", "OptionIsHD": "\u9ad8\u6e05", @@ -582,8 +586,6 @@ "LabelSkipped": "Skipped", "HeaderEpisodeOrganization": "Episode Organization", "LabelSeries": "Series:", - "LabelSeasonNumber": "Season number:", - "LabelEpisodeNumber": "Episode number:", "LabelEndingEpisodeNumber": "Ending episode number:", "LabelEndingEpisodeNumberHelp": "Only required for multi-episode files", "HeaderSupportTheTeam": "Support the Emby Team", @@ -871,6 +873,7 @@ "HeaderTypeText": "Enter Text", "LabelTypeText": "Text", "HeaderSearchForSubtitles": "Search for Subtitles", + "ButtonMore": "More", "MessageNoSubtitleSearchResultsFound": "No search results founds.", "TabDisplay": "Display", "TabLanguages": "Languages", @@ -901,7 +904,7 @@ "HeaderLiveTv": "Live TV", "HeaderReports": "Reports", "HeaderMetadataManager": "Metadata Manager", - "HeaderPreferences": "Preferences", + "HeaderSettings": "Settings", "MessageLoadingChannels": "Loading channel content...", "MessageLoadingContent": "Loading content...", "ButtonMarkRead": "Mark Read", @@ -1099,7 +1102,6 @@ "OptionReportArtists": "Artists", "OptionReportAlbums": "Albums", "OptionReportAdultVideos": "Adult videos", - "ButtonMore": "More", "HeaderActivity": "Activity", "ScheduledTaskStartedWithName": "{0} started", "ScheduledTaskCancelledWithName": "{0} was cancelled", @@ -1229,6 +1231,7 @@ "OptionNoThemeVideo": "No Theme Video", "LabelOneTimeDonationAmount": "Donation amount:", "ButtonDonate": "Donate", + "ButtonPurchase": "Purchase", "OptionActor": "Actor", "OptionComposer": "Composer", "OptionDirector": "Director", @@ -1248,7 +1251,6 @@ "HeaderDeveloperInfo": "Developer Info", "HeaderRevisionHistory": "Revision History", "ButtonViewWebsite": "View website", - "LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.", "HeaderXmlSettings": "Xml Settings", "HeaderXmlDocumentAttributes": "Xml Document Attributes", "HeaderXmlDocumentAttribute": "Xml Document Attribute", @@ -1262,6 +1264,9 @@ "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", "LabelExternalPlayers": "External players:", "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", + "LabelNativeExternalPlayersHelp": "Display buttons to play content in external players.", + "LabelEnableItemPreviews": "Enable item previews", + "LabelEnableItemPreviewsHelp": "if enabled, sliding previews will appear when clicking items on certain screens.", "HeaderSubtitleProfile": "Subtitle Profile", "HeaderSubtitleProfiles": "Subtitle Profiles", "HeaderSubtitleProfilesHelp": "Subtitle profiles describe the subtitle formats supported by the device.", @@ -1390,7 +1395,7 @@ "HeaderUpcomingMovies": "Upcoming Movies", "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", - "ButtonMoreItems": "More...", + "ButtonMoreItems": "More", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", @@ -1409,14 +1414,6 @@ "OptionEnableFullSpeedConversion": "Enable full speed conversion", "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderWelcomeExclamation": "Welcome!", - "HeaderMyPreferences": "My Preferences", - "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", - "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", - "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", - "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", - "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.", "HeaderViewStyles": "View Styles", "LabelSelectViewStyles": "Enable enhanced presentations for:", "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", @@ -1433,5 +1430,25 @@ "LabelServerPort": "Port:", "HeaderNewServer": "New Server", "ButtonChangeServer": "Change Server", - "HeaderConnectToServer": "Connect to Server" + "HeaderConnectToServer": "Connect to Server", + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "HeaderExport": "Export", + "HeaderColumns": "Columns", + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players", + "ButtonUnlockGuide": "Unlock Guide", + "LabelEnableFullScreen": "Enable fullscreen mode", + "LabelEnableChromecastAc3Passthrough": "Enable Chromecast AC3 Passthrough", + "LabelSyncPath": "Synced content path:", + "LabelEmail": "Email:", + "LabelUsername": "Username:", + "HeaderSignUp": "Sign Up", + "LabelPasswordConfirm": "Password (confirm):", + "ButtonAddServer": "Add Server", + "TabHomeScreen": "Home Screen", + "HeaderDisplay": "Display", + "HeaderNavigation": "Navigation", + "LegendTheseSettingsShared": "These settings are shared on all devices" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index e7372ce37..33b2493f5 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -48,9 +48,9 @@ <Reference Include="Interfaces.IO"> <HintPath>..\packages\Interfaces.IO.1.0.0.5\lib\portable-net45+sl4+wp71+win8+wpa81\Interfaces.IO.dll</HintPath> </Reference> - <Reference Include="MediaBrowser.Naming, Version=1.0.5607.1779, Culture=neutral, processorArchitecture=MSIL"> + <Reference Include="MediaBrowser.Naming, Version=1.0.5614.25103, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\packages\MediaBrowser.Naming.1.0.0.36\lib\portable-net45+sl4+wp71+win8+wpa81\MediaBrowser.Naming.dll</HintPath> + <HintPath>..\packages\MediaBrowser.Naming.1.0.0.37\lib\portable-net45+sl4+wp71+win8+wpa81\MediaBrowser.Naming.dll</HintPath> </Reference> <Reference Include="Mono.Nat, Version=1.2.24.0, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> @@ -67,9 +67,9 @@ <Reference Include="ServiceStack.Api.Swagger"> <HintPath>..\ThirdParty\ServiceStack\ServiceStack.Api.Swagger.dll</HintPath> </Reference> - <Reference Include="SocketHttpListener, Version=1.0.5589.21083, Culture=neutral, processorArchitecture=MSIL"> + <Reference Include="SocketHttpListener, Version=1.0.5634.16042, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\packages\SocketHttpListener.1.0.0.6\lib\net45\SocketHttpListener.dll</HintPath> + <HintPath>..\packages\SocketHttpListener.1.0.0.7\lib\net45\SocketHttpListener.dll</HintPath> </Reference> <Reference Include="System" /> <Reference Include="System.Core" /> @@ -227,6 +227,8 @@ <Compile Include="Logging\PatternsLogger.cs" /> <Compile Include="MediaEncoder\EncodingManager.cs" /> <Compile Include="Persistence\BaseSqliteRepository.cs" /> + <Compile Include="Social\SharingManager.cs" /> + <Compile Include="Social\SharingRepository.cs" /> <Compile Include="Sorting\StartDateComparer.cs" /> <Compile Include="Sync\SyncHelper.cs" /> <Compile Include="Sync\SyncJobOptions.cs" /> @@ -360,28 +362,18 @@ <EmbeddedResource Include="Localization\JavaScript\javascript.json" /> <EmbeddedResource Include="Localization\Server\server.json" /> <EmbeddedResource Include="Localization\Server\de.json" /> - <EmbeddedResource Include="Localization\Server\pt_PT.json" /> <EmbeddedResource Include="Localization\Server\ru.json" /> - <EmbeddedResource Include="Localization\JavaScript\en_US.json" /> - <EmbeddedResource Include="Localization\JavaScript\pt_PT.json" /> - <EmbeddedResource Include="Localization\Server\en_US.json" /> <EmbeddedResource Include="Localization\JavaScript\de.json" /> <EmbeddedResource Include="Localization\JavaScript\fr.json" /> <EmbeddedResource Include="Localization\JavaScript\nl.json" /> <EmbeddedResource Include="Localization\JavaScript\ru.json" /> - <EmbeddedResource Include="Localization\JavaScript\zh_TW.json" /> <EmbeddedResource Include="Localization\Server\fr.json" /> <EmbeddedResource Include="Localization\Server\nl.json" /> - <EmbeddedResource Include="Localization\Server\zh_TW.json" /> <EmbeddedResource Include="Localization\JavaScript\es.json" /> <EmbeddedResource Include="Localization\Server\es.json" /> - <EmbeddedResource Include="Localization\Server\pt_BR.json" /> <EmbeddedResource Include="Localization\JavaScript\it.json" /> - <EmbeddedResource Include="Localization\JavaScript\pt_BR.json" /> <EmbeddedResource Include="Localization\Server\he.json" /> <EmbeddedResource Include="Localization\Server\it.json" /> - <EmbeddedResource Include="Localization\Server\es_MX.json" /> - <EmbeddedResource Include="Localization\JavaScript\es_MX.json" /> <EmbeddedResource Include="Localization\JavaScript\ar.json" /> <EmbeddedResource Include="Localization\JavaScript\he.json" /> <EmbeddedResource Include="Localization\JavaScript\nb.json" /> @@ -389,7 +381,6 @@ <EmbeddedResource Include="Localization\Server\el.json" /> <EmbeddedResource Include="Localization\Server\nb.json" /> <EmbeddedResource Include="Localization\JavaScript\el.json" /> - <EmbeddedResource Include="Localization\Server\en_GB.json" /> <EmbeddedResource Include="Localization\JavaScript\sv.json" /> <EmbeddedResource Include="Localization\Server\sv.json" /> <EmbeddedResource Include="Localization\JavaScript\cs.json" /> @@ -408,24 +399,36 @@ <EmbeddedResource Include="Localization\JavaScript\pl.json" /> <EmbeddedResource Include="Localization\Server\pl.json" /> <EmbeddedResource Include="Localization\Server\ko.json" /> - <EmbeddedResource Include="Localization\JavaScript\en_GB.json" /> <EmbeddedResource Include="Localization\JavaScript\tr.json" /> <EmbeddedResource Include="Localization\Server\tr.json" /> <EmbeddedResource Include="Localization\JavaScript\hr.json" /> <EmbeddedResource Include="Localization\Server\hr.json" /> - <EmbeddedResource Include="Localization\JavaScript\zh_CN.json" /> - <EmbeddedResource Include="Localization\Server\zh_CN.json" /> <EmbeddedResource Include="Localization\JavaScript\fi.json" /> <EmbeddedResource Include="Localization\Server\fi.json" /> <None Include="app.config" /> - <EmbeddedResource Include="Localization\JavaScript\bg_BG.json" /> <EmbeddedResource Include="Localization\JavaScript\uk.json" /> - <EmbeddedResource Include="Localization\Server\bg_BG.json" /> <EmbeddedResource Include="Localization\Server\uk.json" /> - <EmbeddedResource Include="Localization\JavaScript\be_BY.json" /> <EmbeddedResource Include="Localization\JavaScript\hu.json" /> - <EmbeddedResource Include="Localization\JavaScript\sl_SI.json" /> - <EmbeddedResource Include="Localization\Server\sl_SI.json" /> + <EmbeddedResource Include="Localization\JavaScript\be-BY.json" /> + <EmbeddedResource Include="Localization\JavaScript\bg-BG.json" /> + <EmbeddedResource Include="Localization\JavaScript\en-GB.json" /> + <EmbeddedResource Include="Localization\JavaScript\en-US.json" /> + <EmbeddedResource Include="Localization\JavaScript\es-MX.json" /> + <EmbeddedResource Include="Localization\JavaScript\es-VE.json" /> + <EmbeddedResource Include="Localization\JavaScript\pt-BR.json" /> + <EmbeddedResource Include="Localization\JavaScript\pt-PT.json" /> + <EmbeddedResource Include="Localization\JavaScript\sl-SI.json" /> + <EmbeddedResource Include="Localization\JavaScript\zh-CN.json" /> + <EmbeddedResource Include="Localization\JavaScript\zh-TW.json" /> + <EmbeddedResource Include="Localization\Server\bg-BG.json" /> + <EmbeddedResource Include="Localization\Server\en-GB.json" /> + <EmbeddedResource Include="Localization\Server\en-US.json" /> + <EmbeddedResource Include="Localization\Server\es-MX.json" /> + <EmbeddedResource Include="Localization\Server\pt-BR.json" /> + <EmbeddedResource Include="Localization\Server\pt-PT.json" /> + <EmbeddedResource Include="Localization\Server\sl-SI.json" /> + <EmbeddedResource Include="Localization\Server\zh-CN.json" /> + <EmbeddedResource Include="Localization\Server\zh-TW.json" /> <None Include="packages.config" /> </ItemGroup> <ItemGroup> diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteDisplayPreferencesRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteDisplayPreferencesRepository.cs index c9ab43e63..45e0304c1 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteDisplayPreferencesRepository.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteDisplayPreferencesRepository.cs @@ -309,5 +309,15 @@ namespace MediaBrowser.Server.Implementations.Persistence _connection = null; } } + + public Task SaveDisplayPreferences(DisplayPreferences displayPreferences, string userId, string client, CancellationToken cancellationToken) + { + return SaveDisplayPreferences(displayPreferences, new Guid(userId), client, cancellationToken); + } + + public DisplayPreferences GetDisplayPreferences(string displayPreferencesId, string userId, string client) + { + return GetDisplayPreferences(displayPreferencesId, new Guid(userId), client); + } } }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs index c5a9db87b..852fbd76c 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs @@ -1,14 +1,19 @@ using MediaBrowser.Common.Configuration; using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.TV; +using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.Persistence; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; +using MediaBrowser.Model.Querying; using MediaBrowser.Model.Serialization; using System; using System.Collections.Generic; using System.Data; +using System.Globalization; using System.IO; using System.Linq; +using System.Runtime.Serialization; using System.Threading; using System.Threading.Tasks; @@ -62,6 +67,8 @@ namespace MediaBrowser.Server.Implementations.Persistence private IDbCommand _saveChildrenCommand; private IDbCommand _deleteItemCommand; + private IDbCommand _deletePeopleCommand; + private IDbCommand _savePersonCommand; /// <summary> /// Initializes a new instance of the <see cref="SqliteItemRepository"/> class. /// </summary> @@ -118,6 +125,8 @@ namespace MediaBrowser.Server.Implementations.Persistence "create table if not exists ChildrenIds (ParentId GUID, ItemId GUID, PRIMARY KEY (ParentId, ItemId))", "create index if not exists idx_ChildrenIds on ChildrenIds(ParentId,ItemId)", + "create table if not exists People (ItemId GUID, Name TEXT NOT NULL, Role TEXT, PersonType TEXT, SortOrder int, ListOrder int)", + //pragmas "pragma temp_store = memory", @@ -126,6 +135,27 @@ namespace MediaBrowser.Server.Implementations.Persistence _connection.RunQueries(queries, _logger); + _connection.AddColumn(_logger, "TypedBaseItems", "Path", "Text"); + _connection.AddColumn(_logger, "TypedBaseItems", "StartDate", "DATETIME"); + _connection.AddColumn(_logger, "TypedBaseItems", "EndDate", "DATETIME"); + _connection.AddColumn(_logger, "TypedBaseItems", "ChannelId", "Text"); + _connection.AddColumn(_logger, "TypedBaseItems", "IsMovie", "BIT"); + _connection.AddColumn(_logger, "TypedBaseItems", "IsSports", "BIT"); + _connection.AddColumn(_logger, "TypedBaseItems", "IsKids", "BIT"); + _connection.AddColumn(_logger, "TypedBaseItems", "CommunityRating", "Float"); + _connection.AddColumn(_logger, "TypedBaseItems", "CustomRating", "Text"); + _connection.AddColumn(_logger, "TypedBaseItems", "IndexNumber", "INT"); + _connection.AddColumn(_logger, "TypedBaseItems", "IsLocked", "BIT"); + _connection.AddColumn(_logger, "TypedBaseItems", "Name", "Text"); + _connection.AddColumn(_logger, "TypedBaseItems", "OfficialRating", "Text"); + + _connection.AddColumn(_logger, "TypedBaseItems", "MediaType", "Text"); + _connection.AddColumn(_logger, "TypedBaseItems", "Overview", "Text"); + _connection.AddColumn(_logger, "TypedBaseItems", "ParentIndexNumber", "INT"); + _connection.AddColumn(_logger, "TypedBaseItems", "PremiereDate", "DATETIME"); + _connection.AddColumn(_logger, "TypedBaseItems", "ProductionYear", "INT"); + _connection.AddColumn(_logger, "TypedBaseItems", "ParentId", "GUID"); + PrepareStatements(); _mediaStreamsRepository.Initialize(); @@ -142,11 +172,37 @@ namespace MediaBrowser.Server.Implementations.Persistence /// </summary> private void PrepareStatements() { + var saveColumns = new List<string> + { + "guid", + "type", + "data", + "Path", + "StartDate", + "EndDate", + "ChannelId", + "IsKids", + "IsMovie", + "IsSports", + "CommunityRating", + "CustomRating", + "IndexNumber", + "IsLocked", + "Name", + "OfficialRating", + "MediaType", + "Overview", + "ParentIndexNumber", + "PremiereDate", + "ProductionYear", + "ParentId" + }; _saveItemCommand = _connection.CreateCommand(); - _saveItemCommand.CommandText = "replace into TypedBaseItems (guid, type, data) values (@1, @2, @3)"; - _saveItemCommand.Parameters.Add(_saveItemCommand, "@1"); - _saveItemCommand.Parameters.Add(_saveItemCommand, "@2"); - _saveItemCommand.Parameters.Add(_saveItemCommand, "@3"); + _saveItemCommand.CommandText = "replace into TypedBaseItems (" + string.Join(",", saveColumns.ToArray()) + ") values (@1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11, @12, @13, @14, @15, @16, @17, @18, @19, @20, @21, @22)"; + for (var i = 1; i <= saveColumns.Count; i++) + { + _saveItemCommand.Parameters.Add(_saveItemCommand, "@" + i.ToString(CultureInfo.InvariantCulture)); + } _deleteChildrenCommand = _connection.CreateCommand(); _deleteChildrenCommand.CommandText = "delete from ChildrenIds where ParentId=@ParentId"; @@ -155,11 +211,24 @@ namespace MediaBrowser.Server.Implementations.Persistence _deleteItemCommand = _connection.CreateCommand(); _deleteItemCommand.CommandText = "delete from TypedBaseItems where guid=@Id"; _deleteItemCommand.Parameters.Add(_deleteItemCommand, "@Id"); - + _saveChildrenCommand = _connection.CreateCommand(); _saveChildrenCommand.CommandText = "replace into ChildrenIds (ParentId, ItemId) values (@ParentId, @ItemId)"; _saveChildrenCommand.Parameters.Add(_saveChildrenCommand, "@ParentId"); _saveChildrenCommand.Parameters.Add(_saveChildrenCommand, "@ItemId"); + + _deletePeopleCommand = _connection.CreateCommand(); + _deletePeopleCommand.CommandText = "delete from People where ItemId=@Id"; + _deletePeopleCommand.Parameters.Add(_deletePeopleCommand, "@Id"); + + _savePersonCommand = _connection.CreateCommand(); + _savePersonCommand.CommandText = "insert into People (ItemId, Name, Role, PersonType, SortOrder, ListOrder) values (@ItemId, @Name, @Role, @PersonType, @SortOrder, @ListOrder)"; + _savePersonCommand.Parameters.Add(_savePersonCommand, "@ItemId"); + _savePersonCommand.Parameters.Add(_savePersonCommand, "@Name"); + _savePersonCommand.Parameters.Add(_savePersonCommand, "@Role"); + _savePersonCommand.Parameters.Add(_savePersonCommand, "@PersonType"); + _savePersonCommand.Parameters.Add(_savePersonCommand, "@SortOrder"); + _savePersonCommand.Parameters.Add(_savePersonCommand, "@ListOrder"); } /// <summary> @@ -200,7 +269,7 @@ namespace MediaBrowser.Server.Implementations.Persistence cancellationToken.ThrowIfCancellationRequested(); CheckDisposed(); - + await _writeLock.WaitAsync(cancellationToken).ConfigureAwait(false); IDbTransaction transaction = null; @@ -213,9 +282,64 @@ namespace MediaBrowser.Server.Implementations.Persistence { cancellationToken.ThrowIfCancellationRequested(); - _saveItemCommand.GetParameter(0).Value = item.Id; - _saveItemCommand.GetParameter(1).Value = item.GetType().FullName; - _saveItemCommand.GetParameter(2).Value = _jsonSerializer.SerializeToBytes(item); + var index = 0; + + _saveItemCommand.GetParameter(index++).Value = item.Id; + _saveItemCommand.GetParameter(index++).Value = item.GetType().FullName; + _saveItemCommand.GetParameter(index++).Value = _jsonSerializer.SerializeToBytes(item); + + _saveItemCommand.GetParameter(index++).Value = item.Path; + + var hasStartDate = item as IHasStartDate; + if (hasStartDate != null) + { + _saveItemCommand.GetParameter(index++).Value = hasStartDate.StartDate; + } + else + { + _saveItemCommand.GetParameter(index++).Value = null; + } + + _saveItemCommand.GetParameter(index++).Value = item.EndDate; + _saveItemCommand.GetParameter(index++).Value = item.ChannelId; + + var hasProgramAttributes = item as IHasProgramAttributes; + if (hasProgramAttributes != null) + { + _saveItemCommand.GetParameter(index++).Value = hasProgramAttributes.IsKids; + _saveItemCommand.GetParameter(index++).Value = hasProgramAttributes.IsMovie; + _saveItemCommand.GetParameter(index++).Value = hasProgramAttributes.IsSports; + } + else + { + _saveItemCommand.GetParameter(index++).Value = null; + _saveItemCommand.GetParameter(index++).Value = null; + _saveItemCommand.GetParameter(index++).Value = null; + } + + _saveItemCommand.GetParameter(index++).Value = item.CommunityRating; + _saveItemCommand.GetParameter(index++).Value = item.CustomRating; + + _saveItemCommand.GetParameter(index++).Value = item.IndexNumber; + _saveItemCommand.GetParameter(index++).Value = item.IsLocked; + + _saveItemCommand.GetParameter(index++).Value = item.Name; + _saveItemCommand.GetParameter(index++).Value = item.OfficialRating; + + _saveItemCommand.GetParameter(index++).Value = item.MediaType; + _saveItemCommand.GetParameter(index++).Value = item.Overview; + _saveItemCommand.GetParameter(index++).Value = item.ParentIndexNumber; + _saveItemCommand.GetParameter(index++).Value = item.PremiereDate; + _saveItemCommand.GetParameter(index++).Value = item.ProductionYear; + + if (item.ParentId == Guid.Empty) + { + _saveItemCommand.GetParameter(index++).Value = null; + } + else + { + _saveItemCommand.GetParameter(index++).Value = item.ParentId; + } _saveItemCommand.Transaction = transaction; @@ -254,7 +378,7 @@ namespace MediaBrowser.Server.Implementations.Persistence _writeLock.Release(); } } - + /// <summary> /// Internal retrieve from items or users table /// </summary> @@ -270,7 +394,7 @@ namespace MediaBrowser.Server.Implementations.Persistence } CheckDisposed(); - + using (var cmd = _connection.CreateCommand()) { cmd.CommandText = "select type,data from TypedBaseItems where guid = @guid"; @@ -302,7 +426,15 @@ namespace MediaBrowser.Server.Implementations.Persistence using (var stream = reader.GetMemoryStream(1)) { - return _jsonSerializer.DeserializeFromStream(stream, type) as BaseItem; + try + { + return _jsonSerializer.DeserializeFromStream(stream, type) as BaseItem; + } + catch (SerializationException ex) + { + _logger.ErrorException("Error deserializing item", ex); + return null; + } } } @@ -467,7 +599,7 @@ namespace MediaBrowser.Server.Implementations.Persistence } CheckDisposed(); - + using (var cmd = _connection.CreateCommand()) { cmd.CommandText = "select ItemId from ChildrenIds where ParentId = @ParentId"; @@ -492,7 +624,7 @@ namespace MediaBrowser.Server.Implementations.Persistence } CheckDisposed(); - + using (var cmd = _connection.CreateCommand()) { cmd.CommandText = "select type,data from TypedBaseItems where guid in (select ItemId from ChildrenIds where ParentId = @ParentId)"; @@ -544,6 +676,299 @@ namespace MediaBrowser.Server.Implementations.Persistence } } + public QueryResult<BaseItem> GetItems(InternalItemsQuery query) + { + if (query == null) + { + throw new ArgumentNullException("query"); + } + + CheckDisposed(); + + using (var cmd = _connection.CreateCommand()) + { + cmd.CommandText = "select type,data from TypedBaseItems"; + + var whereClauses = GetWhereClauses(query, cmd, false); + + var whereTextWithoutPaging = whereClauses.Count == 0 ? + string.Empty : + " where " + string.Join(" AND ", whereClauses.ToArray()); + + whereClauses = GetWhereClauses(query, cmd, true); + + var whereText = whereClauses.Count == 0 ? + string.Empty : + " where " + string.Join(" AND ", whereClauses.ToArray()); + + cmd.CommandText += whereText; + + if (query.Limit.HasValue) + { + cmd.CommandText += " LIMIT " + query.Limit.Value.ToString(CultureInfo.InvariantCulture); + } + + cmd.CommandText += "; select count (guid) from TypedBaseItems" + whereTextWithoutPaging; + + var list = new List<BaseItem>(); + var count = 0; + + using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)) + { + while (reader.Read()) + { + var item = GetItem(reader); + if (item != null) + { + list.Add(item); + } + } + + if (reader.NextResult() && reader.Read()) + { + count = reader.GetInt32(0); + } + } + + return new QueryResult<BaseItem>() + { + Items = list.ToArray(), + TotalRecordCount = count + }; + } + } + + public List<Guid> GetItemIdsList(InternalItemsQuery query) + { + if (query == null) + { + throw new ArgumentNullException("query"); + } + + CheckDisposed(); + + using (var cmd = _connection.CreateCommand()) + { + cmd.CommandText = "select guid from TypedBaseItems"; + + var whereClauses = GetWhereClauses(query, cmd, true); + + var whereText = whereClauses.Count == 0 ? + string.Empty : + " where " + string.Join(" AND ", whereClauses.ToArray()); + + cmd.CommandText += whereText; + + if (query.Limit.HasValue) + { + cmd.CommandText += " LIMIT " + query.Limit.Value.ToString(CultureInfo.InvariantCulture); + } + + var list = new List<Guid>(); + + _logger.Debug(cmd.CommandText); + + using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)) + { + while (reader.Read()) + { + list.Add(reader.GetGuid(0)); + } + } + + return list; + } + } + + public QueryResult<Guid> GetItemIds(InternalItemsQuery query) + { + if (query == null) + { + throw new ArgumentNullException("query"); + } + + CheckDisposed(); + + using (var cmd = _connection.CreateCommand()) + { + cmd.CommandText = "select guid from TypedBaseItems"; + + var whereClauses = GetWhereClauses(query, cmd, false); + + var whereTextWithoutPaging = whereClauses.Count == 0 ? + string.Empty : + " where " + string.Join(" AND ", whereClauses.ToArray()); + + whereClauses = GetWhereClauses(query, cmd, true); + + var whereText = whereClauses.Count == 0 ? + string.Empty : + " where " + string.Join(" AND ", whereClauses.ToArray()); + + cmd.CommandText += whereText; + + if (query.Limit.HasValue) + { + cmd.CommandText += " LIMIT " + query.Limit.Value.ToString(CultureInfo.InvariantCulture); + } + + cmd.CommandText += "; select count (guid) from TypedBaseItems" + whereTextWithoutPaging; + + var list = new List<Guid>(); + var count = 0; + + _logger.Debug(cmd.CommandText); + + using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)) + { + while (reader.Read()) + { + list.Add(reader.GetGuid(0)); + } + + if (reader.NextResult() && reader.Read()) + { + count = reader.GetInt32(0); + } + } + + return new QueryResult<Guid>() + { + Items = list.ToArray(), + TotalRecordCount = count + }; + } + } + + private List<string> GetWhereClauses(InternalItemsQuery query, IDbCommand cmd, bool addPaging) + { + var whereClauses = new List<string>(); + + if (query.IsMovie.HasValue) + { + whereClauses.Add("IsMovie=@IsMovie"); + cmd.Parameters.Add(cmd, "@IsMovie", DbType.Boolean).Value = query.IsMovie; + } + if (query.IsKids.HasValue) + { + whereClauses.Add("IsKids=@IsKids"); + cmd.Parameters.Add(cmd, "@IsKids", DbType.Boolean).Value = query.IsKids; + } + if (query.IsSports.HasValue) + { + whereClauses.Add("IsSports=@IsSports"); + cmd.Parameters.Add(cmd, "@IsSports", DbType.Boolean).Value = query.IsSports; + } + + var includeTypes = query.IncludeItemTypes.SelectMany(MapIncludeItemTypes).ToArray(); + + if (includeTypes.Length == 1) + { + whereClauses.Add("type=@type"); + cmd.Parameters.Add(cmd, "@type", DbType.String).Value = includeTypes[0]; + } + if (includeTypes.Length > 1) + { + var inClause = string.Join(",", includeTypes.Select(i => "'" + i + "'").ToArray()); + whereClauses.Add(string.Format("type in ({0})", inClause)); + } + if (query.ChannelIds.Length == 1) + { + whereClauses.Add("ChannelId=@ChannelId"); + cmd.Parameters.Add(cmd, "@ChannelId", DbType.String).Value = query.ChannelIds[0]; + } + if (query.ChannelIds.Length > 1) + { + var inClause = string.Join(",", query.ChannelIds.Select(i => "'" + i + "'").ToArray()); + whereClauses.Add(string.Format("ChannelId in ({0})", inClause)); + } + + if (query.MinEndDate.HasValue) + { + whereClauses.Add("EndDate>=@MinEndDate"); + cmd.Parameters.Add(cmd, "@MinEndDate", DbType.Date).Value = query.MinEndDate.Value; + } + + if (query.MaxEndDate.HasValue) + { + whereClauses.Add("EndDate<=@MaxEndDate"); + cmd.Parameters.Add(cmd, "@MaxEndDate", DbType.Date).Value = query.MaxEndDate.Value; + } + + if (query.MinStartDate.HasValue) + { + whereClauses.Add("StartDate>=@MinStartDate"); + cmd.Parameters.Add(cmd, "@MinStartDate", DbType.Date).Value = query.MinStartDate.Value; + } + + if (query.MaxStartDate.HasValue) + { + whereClauses.Add("StartDate<=@MaxStartDate"); + cmd.Parameters.Add(cmd, "@MaxStartDate", DbType.Date).Value = query.MaxStartDate.Value; + } + + if (query.IsAiring.HasValue) + { + if (query.IsAiring.Value) + { + whereClauses.Add("StartDate<=@MaxStartDate"); + cmd.Parameters.Add(cmd, "@MaxStartDate", DbType.Date).Value = DateTime.UtcNow; + + whereClauses.Add("EndDate>=@MinEndDate"); + cmd.Parameters.Add(cmd, "@MinEndDate", DbType.Date).Value = DateTime.UtcNow; + } + else + { + whereClauses.Add("(StartDate>@IsAiringDate OR EndDate < @IsAiringDate)"); + cmd.Parameters.Add(cmd, "@IsAiringDate", DbType.Date).Value = DateTime.UtcNow; + } + } + + if (!string.IsNullOrWhiteSpace(query.Person)) + { + whereClauses.Add("Guid in (select ItemId from People where Name=@PersonName)"); + cmd.Parameters.Add(cmd, "@PersonName", DbType.String).Value = query.Person; + } + + if (addPaging) + { + if (query.StartIndex.HasValue && query.StartIndex.Value > 0) + { + var pagingWhereText = whereClauses.Count == 0 ? + string.Empty : + " where " + string.Join(" AND ", whereClauses.ToArray()); + + whereClauses.Add(string.Format("Id NOT IN (SELECT Id FROM TypedBaseItems {0} ORDER BY DateCreated DESC LIMIT {1})", + pagingWhereText, + query.StartIndex.Value.ToString(CultureInfo.InvariantCulture))); + } + } + + return whereClauses; + } + + // Not crazy about having this all the way down here, but at least it's in one place + readonly Dictionary<string, string[]> _types = new Dictionary<string, string[]>(StringComparer.OrdinalIgnoreCase) + { + {typeof(LiveTvProgram).Name, new []{typeof(LiveTvProgram).FullName}}, + {typeof(LiveTvChannel).Name, new []{typeof(LiveTvChannel).FullName}}, + {typeof(LiveTvVideoRecording).Name, new []{typeof(LiveTvVideoRecording).FullName}}, + {typeof(LiveTvAudioRecording).Name, new []{typeof(LiveTvAudioRecording).FullName}}, + {typeof(Series).Name, new []{typeof(Series).FullName}}, + {"Recording", new []{typeof(LiveTvAudioRecording).FullName, typeof(LiveTvVideoRecording).FullName}} + }; + + private IEnumerable<string> MapIncludeItemTypes(string value) + { + string[] result; + if (_types.TryGetValue(value, out result)) + { + return result; + } + + return new[] { value }; + } + public IEnumerable<Guid> GetItemIdsOfType(Type type) { if (type == null) @@ -577,7 +1002,7 @@ namespace MediaBrowser.Server.Implementations.Persistence } CheckDisposed(); - + await _writeLock.WaitAsync(cancellationToken).ConfigureAwait(false); IDbTransaction transaction = null; @@ -591,11 +1016,16 @@ namespace MediaBrowser.Server.Implementations.Persistence _deleteChildrenCommand.Transaction = transaction; _deleteChildrenCommand.ExecuteNonQuery(); + // Delete people + _deletePeopleCommand.GetParameter(0).Value = id; + _deletePeopleCommand.Transaction = transaction; + _deletePeopleCommand.ExecuteNonQuery(); + // Delete the item _deleteItemCommand.GetParameter(0).Value = id; _deleteItemCommand.Transaction = transaction; _deleteItemCommand.ExecuteNonQuery(); - + transaction.Commit(); } catch (OperationCanceledException) @@ -642,7 +1072,7 @@ namespace MediaBrowser.Server.Implementations.Persistence } CheckDisposed(); - + await _writeLock.WaitAsync(cancellationToken).ConfigureAwait(false); IDbTransaction transaction = null; @@ -713,5 +1143,234 @@ namespace MediaBrowser.Server.Implementations.Persistence CheckDisposed(); return _mediaStreamsRepository.SaveMediaStreams(id, streams, cancellationToken); } + + public List<string> GetPeopleNames(InternalPeopleQuery query) + { + if (query == null) + { + throw new ArgumentNullException("query"); + } + + CheckDisposed(); + + using (var cmd = _connection.CreateCommand()) + { + cmd.CommandText = "select Distinct Name from People"; + + var whereClauses = GetPeopleWhereClauses(query, cmd); + + if (whereClauses.Count > 0) + { + cmd.CommandText += " where " + string.Join(" AND ", whereClauses.ToArray()); + } + + cmd.CommandText += " order by ListOrder"; + + var list = new List<string>(); + + using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult)) + { + while (reader.Read()) + { + list.Add(reader.GetString(0)); + } + } + + return list; + } + } + + public List<PersonInfo> GetPeople(InternalPeopleQuery query) + { + if (query == null) + { + throw new ArgumentNullException("query"); + } + + CheckDisposed(); + + using (var cmd = _connection.CreateCommand()) + { + cmd.CommandText = "select ItemId, Name, Role, PersonType, SortOrder from People"; + + var whereClauses = GetPeopleWhereClauses(query, cmd); + + if (whereClauses.Count > 0) + { + cmd.CommandText += " where " + string.Join(" AND ", whereClauses.ToArray()); + } + + cmd.CommandText += " order by ListOrder"; + + var list = new List<PersonInfo>(); + + using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult)) + { + while (reader.Read()) + { + list.Add(GetPerson(reader)); + } + } + + return list; + } + } + + private List<string> GetPeopleWhereClauses(InternalPeopleQuery query, IDbCommand cmd) + { + var whereClauses = new List<string>(); + + if (query.ItemId != Guid.Empty) + { + whereClauses.Add("ItemId=@ItemId"); + cmd.Parameters.Add(cmd, "@ItemId", DbType.Guid).Value = query.ItemId; + } + if (query.AppearsInItemId != Guid.Empty) + { + whereClauses.Add("Name in (Select Name from People where ItemId=@AppearsInItemId)"); + cmd.Parameters.Add(cmd, "@AppearsInItemId", DbType.Guid).Value = query.AppearsInItemId; + } + if (query.PersonTypes.Count == 1) + { + whereClauses.Add("PersonType=@PersonType"); + cmd.Parameters.Add(cmd, "@PersonType", DbType.String).Value = query.PersonTypes[0]; + } + if (query.PersonTypes.Count > 1) + { + var val = string.Join(",", query.PersonTypes.Select(i => "'" + i + "'").ToArray()); + + whereClauses.Add("PersonType in (" + val + ")"); + } + if (query.ExcludePersonTypes.Count == 1) + { + whereClauses.Add("PersonType<>@PersonType"); + cmd.Parameters.Add(cmd, "@PersonType", DbType.String).Value = query.ExcludePersonTypes[0]; + } + if (query.ExcludePersonTypes.Count > 1) + { + var val = string.Join(",", query.ExcludePersonTypes.Select(i => "'" + i + "'").ToArray()); + + whereClauses.Add("PersonType not in (" + val + ")"); + } + if (query.MaxListOrder.HasValue) + { + whereClauses.Add("ListOrder<=@MaxListOrder"); + cmd.Parameters.Add(cmd, "@MaxListOrder", DbType.Int32).Value = query.MaxListOrder.Value; + } + if (!string.IsNullOrWhiteSpace(query.NameContains)) + { + whereClauses.Add("Name like @NameContains"); + cmd.Parameters.Add(cmd, "@NameContains", DbType.String).Value = "%"+query.NameContains+"%"; + } + + return whereClauses; + } + + public async Task UpdatePeople(Guid itemId, List<PersonInfo> people) + { + if (itemId == Guid.Empty) + { + throw new ArgumentNullException("itemId"); + } + + if (people == null) + { + throw new ArgumentNullException("people"); + } + + CheckDisposed(); + + var cancellationToken = CancellationToken.None; + + await _writeLock.WaitAsync(cancellationToken).ConfigureAwait(false); + + IDbTransaction transaction = null; + + try + { + transaction = _connection.BeginTransaction(); + + // First delete + _deletePeopleCommand.GetParameter(0).Value = itemId; + _deletePeopleCommand.Transaction = transaction; + + _deletePeopleCommand.ExecuteNonQuery(); + + var listIndex = 0; + + foreach (var person in people) + { + cancellationToken.ThrowIfCancellationRequested(); + + _savePersonCommand.GetParameter(0).Value = itemId; + _savePersonCommand.GetParameter(1).Value = person.Name; + _savePersonCommand.GetParameter(2).Value = person.Role; + _savePersonCommand.GetParameter(3).Value = person.Type; + _savePersonCommand.GetParameter(4).Value = person.SortOrder; + _savePersonCommand.GetParameter(5).Value = listIndex; + + _savePersonCommand.Transaction = transaction; + + _savePersonCommand.ExecuteNonQuery(); + listIndex++; + } + + transaction.Commit(); + } + catch (OperationCanceledException) + { + if (transaction != null) + { + transaction.Rollback(); + } + + throw; + } + catch (Exception e) + { + _logger.ErrorException("Failed to save people:", e); + + if (transaction != null) + { + transaction.Rollback(); + } + + throw; + } + finally + { + if (transaction != null) + { + transaction.Dispose(); + } + + _writeLock.Release(); + } + } + + private PersonInfo GetPerson(IDataReader reader) + { + var item = new PersonInfo(); + + item.ItemId = reader.GetGuid(0); + item.Name = reader.GetString(1); + + if (!reader.IsDBNull(2)) + { + item.Role = reader.GetString(2); + } + + if (!reader.IsDBNull(3)) + { + item.Type = reader.GetString(3); + } + + if (!reader.IsDBNull(4)) + { + item.SortOrder = reader.GetInt32(4); + } + + return item; + } } }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs b/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs index 79ebc67d9..ef12544ba 100644 --- a/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs +++ b/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs @@ -205,7 +205,7 @@ namespace MediaBrowser.Server.Implementations.Photos if (item is UserView) { - return HasChanged(item, ImageType.Primary) || HasChanged(item, ImageType.Thumb); + return HasChanged(item, ImageType.Primary); } var items = GetItemsWithImages(item).Result; diff --git a/MediaBrowser.Server.Implementations/Photos/PhotoAlbumImageProvider.cs b/MediaBrowser.Server.Implementations/Photos/PhotoAlbumImageProvider.cs index 9d2eb297f..b55c76b8f 100644 --- a/MediaBrowser.Server.Implementations/Photos/PhotoAlbumImageProvider.cs +++ b/MediaBrowser.Server.Implementations/Photos/PhotoAlbumImageProvider.cs @@ -1,44 +1,27 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.IO; +using MediaBrowser.Controller.Drawing; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Entities; using System.Collections.Generic; using System.Linq; -using System.Threading; using System.Threading.Tasks; namespace MediaBrowser.Server.Implementations.Photos { - public class PhotoAlbumImageProvider : IDynamicImageProvider + public class PhotoAlbumImageProvider : BaseDynamicImageProvider<PhotoAlbum> { - public IEnumerable<ImageType> GetSupportedImages(IHasImages item) + public PhotoAlbumImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths, IImageProcessor imageProcessor) + : base(fileSystem, providerManager, applicationPaths, imageProcessor) { - return new List<ImageType> { ImageType.Primary }; } - public Task<DynamicImageResponse> GetImage(IHasImages item, ImageType type, CancellationToken cancellationToken) + protected override Task<List<BaseItem>> GetItemsWithImages(IHasImages item) { - var album = (PhotoAlbum)item; + var photoAlbum = (PhotoAlbum)item; + var items = GetFinalItems(photoAlbum.Children.ToList()); - var image = album.Children - .OfType<Photo>() - .Select(i => i.GetImagePath(type)) - .FirstOrDefault(i => !string.IsNullOrEmpty(i)); - - return Task.FromResult(new DynamicImageResponse - { - Path = image, - HasImage = !string.IsNullOrEmpty(image) - }); - } - - public string Name - { - get { return "Image Extractor"; } - } - - public bool Supports(IHasImages item) - { - return item is PhotoAlbum; + return Task.FromResult(items); } } } diff --git a/MediaBrowser.Server.Implementations/Playlists/PlaylistManager.cs b/MediaBrowser.Server.Implementations/Playlists/PlaylistManager.cs index a5cc0e0de..311cb9b51 100644 --- a/MediaBrowser.Server.Implementations/Playlists/PlaylistManager.cs +++ b/MediaBrowser.Server.Implementations/Playlists/PlaylistManager.cs @@ -113,7 +113,6 @@ namespace MediaBrowser.Server.Implementations.Playlists var playlist = new Playlist { Name = name, - Parent = parentFolder, Path = path }; diff --git a/MediaBrowser.Server.Implementations/ServerManager/WebSocketConnection.cs b/MediaBrowser.Server.Implementations/ServerManager/WebSocketConnection.cs index 44d8cc437..2adf3e86a 100644 --- a/MediaBrowser.Server.Implementations/ServerManager/WebSocketConnection.cs +++ b/MediaBrowser.Server.Implementations/ServerManager/WebSocketConnection.cs @@ -179,7 +179,8 @@ namespace MediaBrowser.Server.Implementations.ServerManager if (!message.StartsWith("{", StringComparison.OrdinalIgnoreCase)) { - _logger.Error("Received web socket message that is not a json structure: " + message); + // This info is useful sometimes but also clogs up the log + //_logger.Error("Received web socket message that is not a json structure: " + message); return; } diff --git a/MediaBrowser.Server.Implementations/Session/HttpSessionController.cs b/MediaBrowser.Server.Implementations/Session/HttpSessionController.cs index 9a7fb33df..b841f0216 100644 --- a/MediaBrowser.Server.Implementations/Session/HttpSessionController.cs +++ b/MediaBrowser.Server.Implementations/Session/HttpSessionController.cs @@ -24,9 +24,6 @@ namespace MediaBrowser.Server.Implementations.Session private readonly string _postUrl; - private Timer _pingTimer; - private DateTime _lastPingTime; - public HttpSessionController(IHttpClient httpClient, IJsonSerializer json, SessionInfo session, @@ -37,10 +34,6 @@ namespace MediaBrowser.Server.Implementations.Session Session = session; _postUrl = postUrl; _sessionManager = sessionManager; - - _pingTimer = new Timer(PingTimerCallback, null, Timeout.Infinite, Timeout.Infinite); - - ResetPingTimer(); } public void OnActivity() @@ -59,7 +52,7 @@ namespace MediaBrowser.Server.Implementations.Session { get { - return (DateTime.UtcNow - Session.LastActivityDate).TotalMinutes <= 20; + return (DateTime.UtcNow - Session.LastActivityDate).TotalMinutes <= 10; } } @@ -68,54 +61,6 @@ namespace MediaBrowser.Server.Implementations.Session get { return true; } } - private async void PingTimerCallback(object state) - { - try - { - await SendMessage("Ping", CancellationToken.None).ConfigureAwait(false); - - _lastPingTime = DateTime.UtcNow; - } - catch - { - var lastActivityDate = new[] { _lastPingTime, Session.LastActivityDate } - .Max(); - - var timeSinceLastPing = DateTime.UtcNow - lastActivityDate; - - // We don't want to stop the session due to one single request failure - // At the same time, we don't want the timeout to be too long because it will - // be sitting in active sessions available for remote control, when it's not - if (timeSinceLastPing >= TimeSpan.FromMinutes(5)) - { - ReportSessionEnded(); - } - } - } - - private void ReportSessionEnded() - { - try - { - _sessionManager.ReportSessionEnded(Session.Id); - } - catch (Exception ex) - { - } - } - - private void ResetPingTimer() - { - if (_pingTimer != null) - { - _lastPingTime = DateTime.UtcNow; - - var period = TimeSpan.FromSeconds(60); - - _pingTimer.Change(period, period); - } - } - private Task SendMessage(string name, CancellationToken cancellationToken) { return SendMessage(name, new Dictionary<string, string>(), cancellationToken); @@ -133,8 +78,6 @@ namespace MediaBrowser.Server.Implementations.Session CancellationToken = cancellationToken }).ConfigureAwait(false); - - ResetPingTimer(); } public Task SendSessionEndedNotification(SessionInfoDto sessionInfo, CancellationToken cancellationToken) @@ -237,16 +180,6 @@ namespace MediaBrowser.Server.Implementations.Session public void Dispose() { - DisposePingTimer(); - } - - private void DisposePingTimer() - { - if (_pingTimer != null) - { - _pingTimer.Dispose(); - _pingTimer = null; - } } } } diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs index 757e6938a..560d203db 100644 --- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs +++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs @@ -967,7 +967,13 @@ namespace MediaBrowser.Server.Implementations.Session private IEnumerable<BaseItem> TranslateItemForPlayback(string id, User user) { - var item = _libraryManager.GetItemById(new Guid(id)); + var item = _libraryManager.GetItemById(id); + + if (item == null) + { + _logger.Error("A non-existant item Id {0} was passed into TranslateItemForPlayback", id); + return new List<BaseItem>(); + } var byName = item as IItemByName; @@ -1011,6 +1017,12 @@ namespace MediaBrowser.Server.Implementations.Session { var item = _libraryManager.GetItemById(id); + if (item == null) + { + _logger.Error("A non-existant item Id {0} was passed into TranslateItemForInstantMix", id); + return new List<BaseItem>(); + } + return _musicManager.GetInstantMixFromItem(item, user); } @@ -1203,22 +1215,22 @@ namespace MediaBrowser.Server.Implementations.Session /// <param name="userId">The user identifier.</param> /// <exception cref="System.UnauthorizedAccessException">Cannot modify additional users without authenticating first.</exception> /// <exception cref="System.ArgumentException">The requested user is already the primary user of the session.</exception> - public void AddAdditionalUser(string sessionId, Guid userId) + public void AddAdditionalUser(string sessionId, string userId) { var session = GetSession(sessionId); - if (session.UserId.HasValue && session.UserId.Value == userId) + if (session.UserId.HasValue && session.UserId.Value == new Guid(userId)) { throw new ArgumentException("The requested user is already the primary user of the session."); } - if (session.AdditionalUsers.All(i => new Guid(i.UserId) != userId)) + if (session.AdditionalUsers.All(i => new Guid(i.UserId) != new Guid(userId))) { var user = _userManager.GetUserById(userId); session.AdditionalUsers.Add(new SessionUserInfo { - UserId = userId.ToString("N"), + UserId = userId, UserName = user.Name }); } @@ -1231,16 +1243,16 @@ namespace MediaBrowser.Server.Implementations.Session /// <param name="userId">The user identifier.</param> /// <exception cref="System.UnauthorizedAccessException">Cannot modify additional users without authenticating first.</exception> /// <exception cref="System.ArgumentException">The requested user is already the primary user of the session.</exception> - public void RemoveAdditionalUser(string sessionId, Guid userId) + public void RemoveAdditionalUser(string sessionId, string userId) { var session = GetSession(sessionId); - if (session.UserId.HasValue && session.UserId.Value == userId) + if (session.UserId.HasValue && session.UserId.Value == new Guid(userId)) { throw new ArgumentException("The requested user is already the primary user of the session."); } - var user = session.AdditionalUsers.FirstOrDefault(i => new Guid(i.UserId) == userId); + var user = session.AdditionalUsers.FirstOrDefault(i => new Guid(i.UserId) == new Guid(userId)); if (user != null) { @@ -1528,16 +1540,16 @@ namespace MediaBrowser.Server.Implementations.Session } var recording = item as ILiveTvRecording; - if (recording != null && recording.RecordingInfo != null) + if (recording != null) { - if (recording.RecordingInfo.IsSeries) + if (recording.IsSeries) { - info.Name = recording.RecordingInfo.EpisodeTitle; - info.SeriesName = recording.RecordingInfo.Name; + info.Name = recording.EpisodeTitle; + info.SeriesName = recording.Name; if (string.IsNullOrWhiteSpace(info.Name)) { - info.Name = recording.RecordingInfo.Name; + info.Name = recording.Name; } } } diff --git a/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs b/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs index b8cab0c19..b473444ac 100644 --- a/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs +++ b/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs @@ -92,7 +92,7 @@ namespace MediaBrowser.Server.Implementations.Session if (session == null) { - e.AllowConnection = false; + //e.AllowConnection = false; } } } diff --git a/MediaBrowser.Server.Implementations/Social/SharingManager.cs b/MediaBrowser.Server.Implementations/Social/SharingManager.cs new file mode 100644 index 000000000..326b2893c --- /dev/null +++ b/MediaBrowser.Server.Implementations/Social/SharingManager.cs @@ -0,0 +1,103 @@ +using MediaBrowser.Common.Extensions; +using MediaBrowser.Controller; +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Social; +using MediaBrowser.Model.Social; +using System; +using System.Threading.Tasks; + +namespace MediaBrowser.Server.Implementations.Social +{ + public class SharingManager : ISharingManager + { + private readonly SharingRepository _repository; + private readonly IServerConfigurationManager _config; + private readonly ILibraryManager _libraryManager; + private readonly IServerApplicationHost _appHost; + + public SharingManager(SharingRepository repository, IServerConfigurationManager config, ILibraryManager libraryManager, IServerApplicationHost appHost) + { + _repository = repository; + _config = config; + _libraryManager = libraryManager; + _appHost = appHost; + } + + public async Task<SocialShareInfo> CreateShare(string itemId, string userId) + { + if (string.IsNullOrWhiteSpace(itemId)) + { + throw new ArgumentNullException("itemId"); + } + if (string.IsNullOrWhiteSpace(userId)) + { + throw new ArgumentNullException("userId"); + } + + var item = _libraryManager.GetItemById(itemId); + + if (item == null) + { + throw new ResourceNotFoundException(); + } + + var externalUrl = _appHost.GetSystemInfo().WanAddress; + + if (string.IsNullOrWhiteSpace(externalUrl)) + { + throw new InvalidOperationException("No external server address is currently available."); + } + + var info = new SocialShareInfo + { + Id = Guid.NewGuid().ToString("N"), + ExpirationDate = DateTime.UtcNow.AddDays(_config.Configuration.SharingExpirationDays), + ItemId = itemId, + UserId = userId + }; + + AddShareInfo(info); + + await _repository.CreateShare(info).ConfigureAwait(false); + + return info; + } + + private string GetTitle(BaseItem item) + { + return item.Name; + } + + public SocialShareInfo GetShareInfo(string id) + { + var info = _repository.GetShareInfo(id); + + AddShareInfo(info); + + return info; + } + + private void AddShareInfo(SocialShareInfo info) + { + var externalUrl = _appHost.GetSystemInfo().WanAddress; + + info.ImageUrl = externalUrl + "/Social/Shares/Public/" + info.Id + "/Image"; + info.Url = externalUrl + "/web/shared.html?id=" + info.Id; + + var item = _libraryManager.GetItemById(info.ItemId); + + if (item != null) + { + info.Overview = item.Overview; + info.Name = GetTitle(item); + } + } + + public Task DeleteShare(string id) + { + return _repository.DeleteShare(id); + } + } +} diff --git a/MediaBrowser.Server.Implementations/Social/SharingRepository.cs b/MediaBrowser.Server.Implementations/Social/SharingRepository.cs new file mode 100644 index 000000000..d6d7f021a --- /dev/null +++ b/MediaBrowser.Server.Implementations/Social/SharingRepository.cs @@ -0,0 +1,184 @@ +using MediaBrowser.Common.Configuration; +using MediaBrowser.Model.Logging; +using MediaBrowser.Model.Social; +using MediaBrowser.Server.Implementations.Persistence; +using System; +using System.Data; +using System.IO; +using System.Threading; +using System.Threading.Tasks; + +namespace MediaBrowser.Server.Implementations.Social +{ + public class SharingRepository : BaseSqliteRepository + { + private IDbConnection _connection; + private IDbCommand _saveShareCommand; + private readonly IApplicationPaths _appPaths; + + public SharingRepository(ILogManager logManager, IApplicationPaths appPaths) + : base(logManager) + { + _appPaths = appPaths; + } + + /// <summary> + /// Opens the connection to the database + /// </summary> + /// <returns>Task.</returns> + public async Task Initialize() + { + var dbFile = Path.Combine(_appPaths.DataPath, "shares.db"); + + _connection = await SqliteExtensions.ConnectToDb(dbFile, Logger).ConfigureAwait(false); + + string[] queries = { + + "create table if not exists Shares (Id GUID, ItemId TEXT, UserId TEXT, ExpirationDate DateTime, PRIMARY KEY (Id))", + "create index if not exists idx_Shares on Shares(Id)", + + //pragmas + "pragma temp_store = memory", + + "pragma shrink_memory" + }; + + _connection.RunQueries(queries, Logger); + + PrepareStatements(); + } + + /// <summary> + /// Prepares the statements. + /// </summary> + private void PrepareStatements() + { + _saveShareCommand = _connection.CreateCommand(); + _saveShareCommand.CommandText = "replace into Shares (Id, ItemId, UserId, ExpirationDate) values (@Id, @ItemId, @UserId, @ExpirationDate)"; + + _saveShareCommand.Parameters.Add(_saveShareCommand, "@Id"); + _saveShareCommand.Parameters.Add(_saveShareCommand, "@ItemId"); + _saveShareCommand.Parameters.Add(_saveShareCommand, "@UserId"); + _saveShareCommand.Parameters.Add(_saveShareCommand, "@ExpirationDate"); + } + + public async Task CreateShare(SocialShareInfo info) + { + if (info == null) + { + throw new ArgumentNullException("info"); + } + if (string.IsNullOrWhiteSpace(info.Id)) + { + throw new ArgumentNullException("info.Id"); + } + + var cancellationToken = CancellationToken.None; + + cancellationToken.ThrowIfCancellationRequested(); + + await WriteLock.WaitAsync(cancellationToken).ConfigureAwait(false); + + IDbTransaction transaction = null; + + try + { + transaction = _connection.BeginTransaction(); + + _saveShareCommand.GetParameter(0).Value = new Guid(info.Id); + _saveShareCommand.GetParameter(1).Value = info.ItemId; + _saveShareCommand.GetParameter(2).Value = info.UserId; + _saveShareCommand.GetParameter(3).Value = info.ExpirationDate; + + _saveShareCommand.Transaction = transaction; + + _saveShareCommand.ExecuteNonQuery(); + + transaction.Commit(); + } + catch (OperationCanceledException) + { + if (transaction != null) + { + transaction.Rollback(); + } + + throw; + } + catch (Exception e) + { + Logger.ErrorException("Failed to save share:", e); + + if (transaction != null) + { + transaction.Rollback(); + } + + throw; + } + finally + { + if (transaction != null) + { + transaction.Dispose(); + } + + WriteLock.Release(); + } + } + + public SocialShareInfo GetShareInfo(string id) + { + if (string.IsNullOrWhiteSpace(id)) + { + throw new ArgumentNullException("id"); + } + + var cmd = _connection.CreateCommand(); + cmd.CommandText = "select Id, ItemId, UserId, ExpirationDate from Shares where id = @id"; + + cmd.Parameters.Add(cmd, "@id", DbType.Guid).Value = new Guid(id); + + using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult | CommandBehavior.SingleRow)) + { + if (reader.Read()) + { + return GetSocialShareInfo(reader); + } + } + + return null; + } + + private SocialShareInfo GetSocialShareInfo(IDataReader reader) + { + var info = new SocialShareInfo(); + + info.Id = reader.GetGuid(0).ToString("N"); + info.ItemId = reader.GetString(1); + info.UserId = reader.GetString(2); + info.ExpirationDate = reader.GetDateTime(3).ToUniversalTime(); + + return info; + } + + public async Task DeleteShare(string id) + { + + } + + protected override void CloseConnection() + { + if (_connection != null) + { + if (_connection.IsOpen()) + { + _connection.Close(); + } + + _connection.Dispose(); + _connection = null; + } + } + } +} diff --git a/MediaBrowser.Server.Implementations/Sync/MediaSync.cs b/MediaBrowser.Server.Implementations/Sync/MediaSync.cs index 96e996ff1..86ef58e42 100644 --- a/MediaBrowser.Server.Implementations/Sync/MediaSync.cs +++ b/MediaBrowser.Server.Implementations/Sync/MediaSync.cs @@ -341,6 +341,12 @@ namespace MediaBrowser.Server.Implementations.Sync private async Task<SyncedFileInfo> SendFile(IServerSyncProvider provider, string inputPath, string[] pathParts, SyncTarget target, SyncOptions options, IProgress<double> progress, CancellationToken cancellationToken) { _logger.Debug("Sending {0} to {1}. Remote path: {2}", inputPath, provider.Name, string.Join("/", pathParts)); + var supportsDirectCopy = provider as ISupportsDirectCopy; + if (supportsDirectCopy != null) + { + return await supportsDirectCopy.SendFile(inputPath, pathParts, target, progress, cancellationToken).ConfigureAwait(false); + } + using (var fileStream = _fileSystem.GetFileStream(inputPath, FileMode.Open, FileAccess.Read, FileShare.Read, true)) { Stream stream = fileStream; diff --git a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs index fd4092974..04ebcd903 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs @@ -458,6 +458,13 @@ namespace MediaBrowser.Server.Implementations.Sync var syncOptions = _config.GetSyncOptions(); var user = _userManager.GetUserById(job.UserId); + if (user == null) + { + jobItem.Status = SyncJobItemStatus.Failed; + _logger.Error("User not found. Cannot complete the sync job."); + await _syncManager.UpdateSyncJobItemInternal(jobItem).ConfigureAwait(false); + return; + } var video = item as Video; if (video != null) diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs index 0e4a3bcf1..6c71a90a0 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs @@ -32,6 +32,7 @@ using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Common.ScheduledTasks; namespace MediaBrowser.Server.Implementations.Sync { @@ -51,7 +52,8 @@ namespace MediaBrowser.Server.Implementations.Sync private readonly IConfigurationManager _config; private readonly IUserDataManager _userDataManager; private readonly Func<IMediaSourceManager> _mediaSourceManager; - private readonly IJsonSerializer _json; + private readonly IJsonSerializer _json; + private readonly ITaskManager _taskManager; private ISyncProvider[] _providers = { }; @@ -61,7 +63,7 @@ namespace MediaBrowser.Server.Implementations.Sync public event EventHandler<GenericEventArgs<SyncJobItem>> SyncJobItemUpdated; public event EventHandler<GenericEventArgs<SyncJobItem>> SyncJobItemCreated; - public SyncManager(ILibraryManager libraryManager, ISyncRepository repo, IImageProcessor imageProcessor, ILogger logger, IUserManager userManager, Func<IDtoService> dtoService, IServerApplicationHost appHost, ITVSeriesManager tvSeriesManager, Func<IMediaEncoder> mediaEncoder, IFileSystem fileSystem, Func<ISubtitleEncoder> subtitleEncoder, IConfigurationManager config, IUserDataManager userDataManager, Func<IMediaSourceManager> mediaSourceManager, IJsonSerializer json) + public SyncManager(ILibraryManager libraryManager, ISyncRepository repo, IImageProcessor imageProcessor, ILogger logger, IUserManager userManager, Func<IDtoService> dtoService, IServerApplicationHost appHost, ITVSeriesManager tvSeriesManager, Func<IMediaEncoder> mediaEncoder, IFileSystem fileSystem, Func<ISubtitleEncoder> subtitleEncoder, IConfigurationManager config, IUserDataManager userDataManager, Func<IMediaSourceManager> mediaSourceManager, IJsonSerializer json, ITaskManager taskManager) { _libraryManager = libraryManager; _repo = repo; @@ -78,6 +80,7 @@ namespace MediaBrowser.Server.Implementations.Sync _userDataManager = userDataManager; _mediaSourceManager = mediaSourceManager; _json = json; + _taskManager = taskManager; } public void AddParts(IEnumerable<ISyncProvider> providers) @@ -214,6 +217,10 @@ namespace MediaBrowser.Server.Implementations.Sync }, _logger); } + if (returnResult.JobItems.Any (i => i.Status == SyncJobItemStatus.Queued || i.Status == SyncJobItemStatus.Converting)) { + _taskManager.QueueScheduledTask<SyncConvertScheduledTask> (); + } + return returnResult; } @@ -286,6 +293,13 @@ namespace MediaBrowser.Server.Implementations.Sync private async Task FillMetadata(SyncJob job) { + var user = _userManager.GetUserById(job.UserId); + + if (user == null) + { + return; + } + var target = GetSyncTargets(job.UserId) .FirstOrDefault(i => string.Equals(i.Id, job.TargetId, StringComparison.OrdinalIgnoreCase)); @@ -302,8 +316,6 @@ namespace MediaBrowser.Server.Implementations.Sync { var processor = GetSyncJobProcessor(); - var user = _userManager.GetUserById(job.UserId); - item = (await processor .GetItemsForSync(job.Category, job.ParentId, job.RequestedItemIds, user, job.UnwatchedOnly).ConfigureAwait(false)) .FirstOrDefault(); @@ -686,6 +698,10 @@ namespace MediaBrowser.Server.Implementations.Sync syncedItem.OriginalFileName = Path.ChangeExtension(syncedItem.OriginalFileName, Path.GetExtension(mediaSource.Path)); syncedItem.Item.MediaSources.Add(mediaSource); } + if (string.IsNullOrWhiteSpace(syncedItem.OriginalFileName)) + { + syncedItem.OriginalFileName = libraryItem.Name; + } return syncedItem; } @@ -1126,9 +1142,9 @@ namespace MediaBrowser.Server.Implementations.Sync await processor.UpdateJobStatus(jobItem.JobId).ConfigureAwait(false); } - public QueryResult<string> GetLibraryItemIds(SyncJobItemQuery query) + public QueryResult<SyncedItemProgress> GetSyncedItemProgresses(SyncJobItemQuery query) { - return _repo.GetLibraryItemIds(query); + return _repo.GetSyncedItemProgresses(query); } public SyncJobOptions GetAudioOptions(SyncJobItem jobItem, SyncJob job) diff --git a/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs b/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs index 5ad351af5..75c929016 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs @@ -627,9 +627,9 @@ namespace MediaBrowser.Server.Implementations.Sync } } - public QueryResult<string> GetLibraryItemIds(SyncJobItemQuery query) + public QueryResult<SyncedItemProgress> GetSyncedItemProgresses(SyncJobItemQuery query) { - return GetJobItemReader(query, "select ItemId from SyncJobItems", GetItemId); + return GetJobItemReader(query, "select ItemId,Status from SyncJobItems", GetSyncedItemProgress); } public QueryResult<SyncJobItem> GetJobItems(SyncJobItemQuery query) @@ -788,9 +788,18 @@ namespace MediaBrowser.Server.Implementations.Sync return info; } - private string GetItemId(IDataReader reader) + private SyncedItemProgress GetSyncedItemProgress(IDataReader reader) { - return reader.GetString(0); + var item = new SyncedItemProgress(); + + item.ItemId = reader.GetString(0); + + if (!reader.IsDBNull(1)) + { + item.Status = (SyncJobItemStatus)Enum.Parse(typeof(SyncJobItemStatus), reader.GetString(1), true); + } + + return item; } /// <summary> diff --git a/MediaBrowser.Server.Implementations/Udp/UdpServer.cs b/MediaBrowser.Server.Implementations/Udp/UdpServer.cs index 84b6d3708..40c4deb19 100644 --- a/MediaBrowser.Server.Implementations/Udp/UdpServer.cs +++ b/MediaBrowser.Server.Implementations/Udp/UdpServer.cs @@ -30,7 +30,7 @@ namespace MediaBrowser.Server.Implementations.Udp private bool _isDisposed; - private readonly List<Tuple<byte[], Action<string>>> _responders = new List<Tuple<byte[], Action<string>>>(); + private readonly List<Tuple<string, byte[], Action<string, Encoding>>> _responders = new List<Tuple<string, byte[], Action<string, Encoding>>>(); private readonly IServerApplicationHost _appHost; private readonly IJsonSerializer _json; @@ -49,16 +49,16 @@ namespace MediaBrowser.Server.Implementations.Udp _appHost = appHost; _json = json; - AddMessageResponder("who is MediaBrowserServer?", RespondToV1Message); - AddMessageResponder("who is MediaBrowserServer_v2?", RespondToV2Message); AddMessageResponder("who is EmbyServer?", RespondToV2Message); + AddMessageResponder("who is MediaBrowserServer_v2?", RespondToV2Message); + AddMessageResponder("who is MediaBrowserServer?", RespondToV1Message); } - private void AddMessageResponder(string message, Action<string> responder) + private void AddMessageResponder(string message, Action<string, Encoding> responder) { var expectedMessageBytes = Encoding.UTF8.GetBytes(message); - _responders.Add(new Tuple<byte[], Action<string>>(expectedMessageBytes, responder)); + _responders.Add(new Tuple<string, byte[], Action<string, Encoding>>(message, expectedMessageBytes, responder)); } /// <summary> @@ -67,13 +67,25 @@ namespace MediaBrowser.Server.Implementations.Udp /// <param name="e">The <see cref="UdpMessageReceivedEventArgs"/> instance containing the event data.</param> private void OnMessageReceived(UdpMessageReceivedEventArgs e) { - var responder = _responders.FirstOrDefault(i => i.Item1.SequenceEqual(e.Bytes)); + var responder = _responders.FirstOrDefault(i => i.Item2.SequenceEqual(e.Bytes)); + var encoding = Encoding.UTF8; + + if (responder == null) + { + var text = Encoding.Unicode.GetString(e.Bytes); + responder = _responders.FirstOrDefault(i => string.Equals(i.Item1, text, StringComparison.OrdinalIgnoreCase)); + + if (responder != null) + { + encoding = Encoding.Unicode; + } + } if (responder != null) { try { - responder.Item2(e.RemoteEndPoint); + responder.Item3(e.RemoteEndPoint, encoding); } catch (Exception ex) { @@ -82,7 +94,7 @@ namespace MediaBrowser.Server.Implementations.Udp } } - private async void RespondToV1Message(string endpoint) + private async void RespondToV1Message(string endpoint, Encoding encoding) { var localAddress = _appHost.LocalApiUrl; @@ -107,7 +119,7 @@ namespace MediaBrowser.Server.Implementations.Udp } } - private async void RespondToV2Message(string endpoint) + private async void RespondToV2Message(string endpoint, Encoding encoding) { var localUrl = _appHost.LocalApiUrl; @@ -120,7 +132,7 @@ namespace MediaBrowser.Server.Implementations.Udp Name = _appHost.FriendlyName }; - await SendAsync(Encoding.UTF8.GetBytes(_json.SerializeToString(response)), endpoint); + await SendAsync(encoding.GetBytes(_json.SerializeToString(response)), endpoint); } else { @@ -196,11 +208,18 @@ namespace MediaBrowser.Server.Implementations.Udp } var bytes = message.Buffer; - OnMessageReceived(new UdpMessageReceivedEventArgs + try + { + OnMessageReceived(new UdpMessageReceivedEventArgs + { + Bytes = bytes, + RemoteEndPoint = message.RemoteEndPoint.ToString() + }); + } + catch (Exception ex) { - Bytes = bytes, - RemoteEndPoint = message.RemoteEndPoint.ToString() - }); + _logger.ErrorException("Error handling UDP message", ex); + } } /// <summary> diff --git a/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs b/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs index b07caa1bd..918d07f97 100644 --- a/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs +++ b/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs @@ -41,8 +41,7 @@ namespace MediaBrowser.Server.Implementations.UserViews return new List<ImageType> { - ImageType.Primary, - ImageType.Thumb + ImageType.Primary }; } diff --git a/MediaBrowser.Server.Implementations/packages.config b/MediaBrowser.Server.Implementations/packages.config index fa7511143..92388c99e 100644 --- a/MediaBrowser.Server.Implementations/packages.config +++ b/MediaBrowser.Server.Implementations/packages.config @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Interfaces.IO" version="1.0.0.5" targetFramework="net45" />
- <package id="MediaBrowser.Naming" version="1.0.0.36" targetFramework="net45" />
+ <package id="MediaBrowser.Naming" version="1.0.0.37" targetFramework="net45" />
<package id="Mono.Nat" version="1.2.24.0" targetFramework="net45" />
<package id="morelinq" version="1.1.0" targetFramework="net45" />
<package id="Patterns.Logging" version="1.0.0.2" targetFramework="net45" />
- <package id="SocketHttpListener" version="1.0.0.6" targetFramework="net45" />
+ <package id="SocketHttpListener" version="1.0.0.7" targetFramework="net45" />
</packages>
\ No newline at end of file diff --git a/MediaBrowser.Server.Mac/Emby.Server.Mac.csproj b/MediaBrowser.Server.Mac/Emby.Server.Mac.csproj index 03c69901e..4ea7d7c69 100644 --- a/MediaBrowser.Server.Mac/Emby.Server.Mac.csproj +++ b/MediaBrowser.Server.Mac/Emby.Server.Mac.csproj @@ -259,9 +259,6 @@ </BundleResource>
<BundleResource Include="Resources\appicon.icns" />
<BundleResource Include="Resources\MediaBrowser.Server.Mac\Images.xcassets\AppIcon.appiconset\Contents.json" />
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\.DS_Store">
- <Link>Resources\dashboard-ui\.DS_Store</Link>
- </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\about.html">
<Link>Resources\dashboard-ui\about.html</Link>
</BundleResource>
@@ -301,9 +298,6 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\connectlogin.html">
<Link>Resources\dashboard-ui\connectlogin.html</Link>
</BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\cordovaindex.html">
- <Link>Resources\dashboard-ui\cordovaindex.html</Link>
- </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\dashboard.html">
<Link>Resources\dashboard-ui\dashboard.html</Link>
</BundleResource>
@@ -658,9 +652,6 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\wizarduser.html">
<Link>Resources\dashboard-ui\wizarduser.html</Link>
</BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\.DS_Store">
- <Link>Resources\dashboard-ui\css\.DS_Store</Link>
- </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\card.css">
<Link>Resources\dashboard-ui\css\card.css</Link>
</BundleResource>
@@ -790,45 +781,6 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\images\userflyoutdefault.png">
<Link>Resources\dashboard-ui\css\images\userflyoutdefault.png</Link>
</BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\images\chromecast\ic_media_route_disabled_holo_dark.png">
- <Link>Resources\dashboard-ui\css\images\chromecast\ic_media_route_disabled_holo_dark.png</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\images\chromecast\ic_media_route_disabled_holo_light.png">
- <Link>Resources\dashboard-ui\css\images\chromecast\ic_media_route_disabled_holo_light.png</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\images\chromecast\ic_media_route_off_holo_dark.png">
- <Link>Resources\dashboard-ui\css\images\chromecast\ic_media_route_off_holo_dark.png</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\images\chromecast\ic_media_route_off_holo_light.png">
- <Link>Resources\dashboard-ui\css\images\chromecast\ic_media_route_off_holo_light.png</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\images\chromecast\ic_media_route_on_0_holo_dark.png">
- <Link>Resources\dashboard-ui\css\images\chromecast\ic_media_route_on_0_holo_dark.png</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\images\chromecast\ic_media_route_on_0_holo_light.png">
- <Link>Resources\dashboard-ui\css\images\chromecast\ic_media_route_on_0_holo_light.png</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\images\chromecast\ic_media_route_on_1_holo_dark.png">
- <Link>Resources\dashboard-ui\css\images\chromecast\ic_media_route_on_1_holo_dark.png</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\images\chromecast\ic_media_route_on_1_holo_light.png">
- <Link>Resources\dashboard-ui\css\images\chromecast\ic_media_route_on_1_holo_light.png</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\images\chromecast\ic_media_route_on_2_holo_dark.png">
- <Link>Resources\dashboard-ui\css\images\chromecast\ic_media_route_on_2_holo_dark.png</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\images\chromecast\ic_media_route_on_2_holo_light.png">
- <Link>Resources\dashboard-ui\css\images\chromecast\ic_media_route_on_2_holo_light.png</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\images\chromecast\ic_media_route_on_holo_dark.png">
- <Link>Resources\dashboard-ui\css\images\chromecast\ic_media_route_on_holo_dark.png</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\images\chromecast\ic_media_route_on_holo_light.png">
- <Link>Resources\dashboard-ui\css\images\chromecast\ic_media_route_on_holo_light.png</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\images\chromecast\ic_notification_media_route.png">
- <Link>Resources\dashboard-ui\css\images\chromecast\ic_notification_media_route.png</Link>
- </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\images\clients\amazon.png">
<Link>Resources\dashboard-ui\css\images\clients\amazon.png</Link>
</BundleResource>
@@ -844,6 +796,9 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\images\clients\chrome_companion.png">
<Link>Resources\dashboard-ui\css\images\clients\chrome_companion.png</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\images\clients\chromecast.png">
+ <Link>Resources\dashboard-ui\css\images\clients\chromecast.png</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\images\clients\dlna.png">
<Link>Resources\dashboard-ui\css\images\clients\dlna.png</Link>
</BundleResource>
@@ -868,12 +823,6 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\images\clients\mbc.png">
<Link>Resources\dashboard-ui\css\images\clients\mbc.png</Link>
</BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\images\clients\mbkinect.png">
- <Link>Resources\dashboard-ui\css\images\clients\mbkinect.png</Link>
- </BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\images\clients\mediaportal.png">
- <Link>Resources\dashboard-ui\css\images\clients\mediaportal.png</Link>
- </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\images\clients\nuvue.png">
<Link>Resources\dashboard-ui\css\images\clients\nuvue.png</Link>
</BundleResource>
@@ -1012,9 +961,6 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\images\items\searchhintsv2\tv.png">
<Link>Resources\dashboard-ui\css\images\items\searchhintsv2\tv.png</Link>
</BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\images\kids\bg.jpg">
- <Link>Resources\dashboard-ui\css\images\kids\bg.jpg</Link>
- </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\css\images\media\chapterflyout.png">
<Link>Resources\dashboard-ui\css\images\media\chapterflyout.png</Link>
</BundleResource>
@@ -1153,6 +1099,9 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\appservices.js">
<Link>Resources\dashboard-ui\scripts\appservices.js</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\appsettings.js">
+ <Link>Resources\dashboard-ui\scripts\appsettings.js</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\autoorganizelog.js">
<Link>Resources\dashboard-ui\scripts\autoorganizelog.js</Link>
</BundleResource>
@@ -1270,6 +1219,9 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\homelatest.js">
<Link>Resources\dashboard-ui\scripts\homelatest.js</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\htmlmediarenderer.js">
+ <Link>Resources\dashboard-ui\scripts\htmlmediarenderer.js</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\indexpage.js">
<Link>Resources\dashboard-ui\scripts\indexpage.js</Link>
</BundleResource>
@@ -1306,6 +1258,9 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\livetvchannels.js">
<Link>Resources\dashboard-ui\scripts\livetvchannels.js</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\livetvcomponents.js">
+ <Link>Resources\dashboard-ui\scripts\livetvcomponents.js</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\livetvguide.js">
<Link>Resources\dashboard-ui\scripts\livetvguide.js</Link>
</BundleResource>
@@ -1420,6 +1375,9 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\musicvideos.js">
<Link>Resources\dashboard-ui\scripts\musicvideos.js</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\mypreferencescommon.js">
+ <Link>Resources\dashboard-ui\scripts\mypreferencescommon.js</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\mypreferencesdisplay.js">
<Link>Resources\dashboard-ui\scripts\mypreferencesdisplay.js</Link>
</BundleResource>
@@ -1471,9 +1429,15 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\pluginspage.js">
<Link>Resources\dashboard-ui\scripts\pluginspage.js</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\queryfilters.js">
+ <Link>Resources\dashboard-ui\scripts\queryfilters.js</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\ratingdialog.js">
<Link>Resources\dashboard-ui\scripts\ratingdialog.js</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\registrationservices.js">
+ <Link>Resources\dashboard-ui\scripts\registrationservices.js</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\remotecontrol.js">
<Link>Resources\dashboard-ui\scripts\remotecontrol.js</Link>
</BundleResource>
@@ -1489,6 +1453,9 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\search.js">
<Link>Resources\dashboard-ui\scripts\search.js</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\sections.js">
+ <Link>Resources\dashboard-ui\scripts\sections.js</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\scripts\selectserver.js">
<Link>Resources\dashboard-ui\scripts\selectserver.js</Link>
</BundleResource>
@@ -1594,6 +1561,9 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\fastclick.js">
<Link>Resources\dashboard-ui\thirdparty\fastclick.js</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\filesystem.js">
+ <Link>Resources\dashboard-ui\thirdparty\filesystem.js</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\headroom.js">
<Link>Resources\dashboard-ui\thirdparty\headroom.js</Link>
</BundleResource>
@@ -1612,6 +1582,9 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\requirecss.js">
<Link>Resources\dashboard-ui\thirdparty\requirecss.js</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\velocity.min.js">
+ <Link>Resources\dashboard-ui\thirdparty\velocity.min.js</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\apiclient\ajax.js">
<Link>Resources\dashboard-ui\thirdparty\apiclient\ajax.js</Link>
</BundleResource>
@@ -1636,15 +1609,15 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\apiclient\events.js">
<Link>Resources\dashboard-ui\thirdparty\apiclient\events.js</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\apiclient\localassetmanager.js">
+ <Link>Resources\dashboard-ui\thirdparty\apiclient\localassetmanager.js</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\apiclient\logger.js">
<Link>Resources\dashboard-ui\thirdparty\apiclient\logger.js</Link>
</BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\apiclient\md5.js">
<Link>Resources\dashboard-ui\thirdparty\apiclient\md5.js</Link>
</BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\apiclient\network.js">
- <Link>Resources\dashboard-ui\thirdparty\apiclient\network.js</Link>
- </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\apiclient\serverdiscovery.js">
<Link>Resources\dashboard-ui\thirdparty\apiclient\serverdiscovery.js</Link>
</BundleResource>
@@ -1654,6 +1627,9 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\apiclient\store.js">
<Link>Resources\dashboard-ui\thirdparty\apiclient\store.js</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\apiclient\wakeonlan.js">
+ <Link>Resources\dashboard-ui\thirdparty\apiclient\wakeonlan.js</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\apiclient\alt\ajax.js">
<Link>Resources\dashboard-ui\thirdparty\apiclient\alt\ajax.js</Link>
</BundleResource>
@@ -1666,12 +1642,75 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\apiclient\alt\events.js">
<Link>Resources\dashboard-ui\thirdparty\apiclient\alt\events.js</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\cordova\back.js">
+ <Link>Resources\dashboard-ui\thirdparty\cordova\back.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\cordova\chromecast.js">
+ <Link>Resources\dashboard-ui\thirdparty\cordova\chromecast.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\cordova\connectsdk.js">
+ <Link>Resources\dashboard-ui\thirdparty\cordova\connectsdk.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\cordova\externalplayer.js">
+ <Link>Resources\dashboard-ui\thirdparty\cordova\externalplayer.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\cordova\filesystem.js">
+ <Link>Resources\dashboard-ui\thirdparty\cordova\filesystem.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\cordova\generaldevice.js">
+ <Link>Resources\dashboard-ui\thirdparty\cordova\generaldevice.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\cordova\iap.js">
+ <Link>Resources\dashboard-ui\thirdparty\cordova\iap.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\cordova\imagestore.js">
+ <Link>Resources\dashboard-ui\thirdparty\cordova\imagestore.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\cordova\registrationservices.js">
+ <Link>Resources\dashboard-ui\thirdparty\cordova\registrationservices.js</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\cordova\remotecontrols.js">
<Link>Resources\dashboard-ui\thirdparty\cordova\remotecontrols.js</Link>
</BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\cordova\serverdiscovery.js">
<Link>Resources\dashboard-ui\thirdparty\cordova\serverdiscovery.js</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\cordova\volume.js">
+ <Link>Resources\dashboard-ui\thirdparty\cordova\volume.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\cordova\wakeonlan.js">
+ <Link>Resources\dashboard-ui\thirdparty\cordova\wakeonlan.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\cordova\android\androidcredentials.js">
+ <Link>Resources\dashboard-ui\thirdparty\cordova\android\androidcredentials.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\cordova\android\appstorage.js">
+ <Link>Resources\dashboard-ui\thirdparty\cordova\android\appstorage.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\cordova\android\filesystem.js">
+ <Link>Resources\dashboard-ui\thirdparty\cordova\android\filesystem.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\cordova\android\iap.js">
+ <Link>Resources\dashboard-ui\thirdparty\cordova\android\iap.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\cordova\android\immersive.js">
+ <Link>Resources\dashboard-ui\thirdparty\cordova\android\immersive.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\cordova\android\localassetmanager.js">
+ <Link>Resources\dashboard-ui\thirdparty\cordova\android\localassetmanager.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\cordova\android\mediasession.js">
+ <Link>Resources\dashboard-ui\thirdparty\cordova\android\mediasession.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\cordova\android\nativedirectorychooser.js">
+ <Link>Resources\dashboard-ui\thirdparty\cordova\android\nativedirectorychooser.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\cordova\android\vlcplayer.js">
+ <Link>Resources\dashboard-ui\thirdparty\cordova\android\vlcplayer.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\cordova\ios\orientation.js">
+ <Link>Resources\dashboard-ui\thirdparty\cordova\ios\orientation.js</Link>
+ </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\fontawesome\css\font-awesome.css">
<Link>Resources\dashboard-ui\thirdparty\fontawesome\css\font-awesome.css</Link>
</BundleResource>
@@ -2311,9 +2350,6 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\jquerymobile-1.4.5\images\icons-svg\video-white.svg">
<Link>Resources\dashboard-ui\thirdparty\jquerymobile-1.4.5\images\icons-svg\video-white.svg</Link>
</BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\jstree3.0.8\jstree.js">
- <Link>Resources\dashboard-ui\thirdparty\jstree3.0.8\jstree.js</Link>
- </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\jstree3.0.8\jstree.min.js">
<Link>Resources\dashboard-ui\thirdparty\jstree3.0.8\jstree.min.js</Link>
</BundleResource>
@@ -2332,23 +2368,38 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\jstree3.0.8\themes\default\throbber.gif">
<Link>Resources\dashboard-ui\thirdparty\jstree3.0.8\themes\default\throbber.gif</Link>
</BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\jstree3.0.8\themes\default-dark\32px.png">
- <Link>Resources\dashboard-ui\thirdparty\jstree3.0.8\themes\default-dark\32px.png</Link>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\materialicons\MaterialIcons-Regular.eot">
+ <Link>Resources\dashboard-ui\thirdparty\materialicons\MaterialIcons-Regular.eot</Link>
</BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\jstree3.0.8\themes\default-dark\40px.png">
- <Link>Resources\dashboard-ui\thirdparty\jstree3.0.8\themes\default-dark\40px.png</Link>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\materialicons\MaterialIcons-Regular.ttf">
+ <Link>Resources\dashboard-ui\thirdparty\materialicons\MaterialIcons-Regular.ttf</Link>
</BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\jstree3.0.8\themes\default-dark\style.css">
- <Link>Resources\dashboard-ui\thirdparty\jstree3.0.8\themes\default-dark\style.css</Link>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\materialicons\MaterialIcons-Regular.woff">
+ <Link>Resources\dashboard-ui\thirdparty\materialicons\MaterialIcons-Regular.woff</Link>
</BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\jstree3.0.8\themes\default-dark\style.min.css">
- <Link>Resources\dashboard-ui\thirdparty\jstree3.0.8\themes\default-dark\style.min.css</Link>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\materialicons\MaterialIcons-Regular.woff2">
+ <Link>Resources\dashboard-ui\thirdparty\materialicons\MaterialIcons-Regular.woff2</Link>
</BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\jstree3.0.8\themes\default-dark\throbber.gif">
- <Link>Resources\dashboard-ui\thirdparty\jstree3.0.8\themes\default-dark\throbber.gif</Link>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\materialicons\codepoints.txt">
+ <Link>Resources\dashboard-ui\thirdparty\materialicons\codepoints.txt</Link>
</BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\swipebox-master\css\swipebox.css">
- <Link>Resources\dashboard-ui\thirdparty\swipebox-master\css\swipebox.css</Link>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\materialicons\style.css">
+ <Link>Resources\dashboard-ui\thirdparty\materialicons\style.css</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\polymer\LICENSE.txt">
+ <Link>Resources\dashboard-ui\thirdparty\polymer\LICENSE.txt</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\polymer\bower.json">
+ <Link>Resources\dashboard-ui\thirdparty\polymer\bower.json</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\polymer\polymer-micro.html">
+ <Link>Resources\dashboard-ui\thirdparty\polymer\polymer-micro.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\polymer\polymer-mini.html">
+ <Link>Resources\dashboard-ui\thirdparty\polymer\polymer-mini.html</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\polymer\polymer.html">
+ <Link>Resources\dashboard-ui\thirdparty\polymer\polymer.html</Link>
</BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\swipebox-master\css\swipebox.min.css">
<Link>Resources\dashboard-ui\thirdparty\swipebox-master\css\swipebox.min.css</Link>
@@ -2362,11 +2413,41 @@ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\swipebox-master\img\loader.gif">
<Link>Resources\dashboard-ui\thirdparty\swipebox-master\img\loader.gif</Link>
</BundleResource>
- <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\swipebox-master\js\jquery.swipebox.js">
- <Link>Resources\dashboard-ui\thirdparty\swipebox-master\js\jquery.swipebox.js</Link>
- </BundleResource>
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\swipebox-master\js\jquery.swipebox.min.js">
<Link>Resources\dashboard-ui\thirdparty\swipebox-master\js\jquery.swipebox.min.js</Link>
</BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\webcomponentsjs\CustomElements.min.js">
+ <Link>Resources\dashboard-ui\thirdparty\webcomponentsjs\CustomElements.min.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\webcomponentsjs\HTMLImports.min.js">
+ <Link>Resources\dashboard-ui\thirdparty\webcomponentsjs\HTMLImports.min.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\webcomponentsjs\MutationObserver.min.js">
+ <Link>Resources\dashboard-ui\thirdparty\webcomponentsjs\MutationObserver.min.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\webcomponentsjs\README.md">
+ <Link>Resources\dashboard-ui\thirdparty\webcomponentsjs\README.md</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\webcomponentsjs\ShadowDOM.min.js">
+ <Link>Resources\dashboard-ui\thirdparty\webcomponentsjs\ShadowDOM.min.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\webcomponentsjs\bower.json">
+ <Link>Resources\dashboard-ui\thirdparty\webcomponentsjs\bower.json</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\webcomponentsjs\package.json">
+ <Link>Resources\dashboard-ui\thirdparty\webcomponentsjs\package.json</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\webcomponentsjs\webcomponents-lite.min.js">
+ <Link>Resources\dashboard-ui\thirdparty\webcomponentsjs\webcomponents-lite.min.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\thirdparty\webcomponentsjs\webcomponents.min.js">
+ <Link>Resources\dashboard-ui\thirdparty\webcomponentsjs\webcomponents.min.js</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\voice\voice.css">
+ <Link>Resources\dashboard-ui\voice\voice.css</Link>
+ </BundleResource>
+ <BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\voice\voice.js">
+ <Link>Resources\dashboard-ui\voice\voice.js</Link>
+ </BundleResource>
</ItemGroup>
</Project>
\ No newline at end of file diff --git a/MediaBrowser.Server.Mac/Main.cs b/MediaBrowser.Server.Mac/Main.cs index b4184f3b1..0802b97b9 100644 --- a/MediaBrowser.Server.Mac/Main.cs +++ b/MediaBrowser.Server.Mac/Main.cs @@ -146,6 +146,39 @@ namespace MediaBrowser.Server.Mac MenuBarIcon.Instance.Terminate (); } + public static void Restart() + { + _logger.Info("Disposing app host"); + AppHost.Dispose(); + + _logger.Info("Starting new instance"); + + var args = Environment.GetCommandLineArgs() + .Skip(1) + .Select(NormalizeCommandLineArgument); + + var commandLineArgsString = string.Join(" ", args.ToArray()); + var module = Environment.GetCommandLineArgs().First(); + + _logger.Info ("Executable: {0}", module); + _logger.Info ("Arguments: {0}", commandLineArgsString); + + Process.Start(module, commandLineArgsString); + + _logger.Info("AppController.Terminate"); + MenuBarIcon.Instance.Terminate(); + } + + private static string NormalizeCommandLineArgument(string arg) + { + if (arg.IndexOf(" ", StringComparison.OrdinalIgnoreCase) == -1) + { + return arg; + } + + return "\"" + arg + "\""; + } + /// <summary> /// Handles the UnhandledException event of the CurrentDomain control. /// </summary> diff --git a/MediaBrowser.Server.Mac/Native/BaseMonoApp.cs b/MediaBrowser.Server.Mac/Native/BaseMonoApp.cs index 9821f49dd..da4675b5e 100644 --- a/MediaBrowser.Server.Mac/Native/BaseMonoApp.cs +++ b/MediaBrowser.Server.Mac/Native/BaseMonoApp.cs @@ -19,16 +19,16 @@ namespace MediaBrowser.Server.Mac /// <summary> /// Restarts this instance. /// </summary> - public void Restart() + public virtual void Restart(StartupOptions options) { - + throw new NotImplementedException(); } /// <summary> /// Determines whether this instance [can self restart]. /// </summary> /// <returns><c>true</c> if this instance [can self restart]; otherwise, <c>false</c>.</returns> - public bool CanSelfRestart + public virtual bool CanSelfRestart { get { diff --git a/MediaBrowser.Server.Mac/Native/NativeApp.cs b/MediaBrowser.Server.Mac/Native/NativeApp.cs index f7c2dd4c9..005fb0914 100644 --- a/MediaBrowser.Server.Mac/Native/NativeApp.cs +++ b/MediaBrowser.Server.Mac/Native/NativeApp.cs @@ -1,4 +1,5 @@ using System; +using MediaBrowser.Server.Startup.Common; namespace MediaBrowser.Server.Mac { @@ -13,7 +14,27 @@ namespace MediaBrowser.Server.Mac public override void Shutdown() { MainClass.Shutdown(); - } + } + + /// <summary> + /// Determines whether this instance [can self restart]. + /// </summary> + /// <value><c>true</c> if this instance can self restart; otherwise, <c>false</c>.</value> + public override bool CanSelfRestart + { + get + { + return true; + } + } + + /// <summary> + /// Restarts this instance. + /// </summary> + public override void Restart(StartupOptions options) + { + MainClass.Restart(); + } } } diff --git a/MediaBrowser.Server.Mono/Native/BaseMonoApp.cs b/MediaBrowser.Server.Mono/Native/BaseMonoApp.cs index aea6d7367..3b2d14588 100644 --- a/MediaBrowser.Server.Mono/Native/BaseMonoApp.cs +++ b/MediaBrowser.Server.Mono/Native/BaseMonoApp.cs @@ -21,16 +21,16 @@ namespace MediaBrowser.Server.Mono.Native /// <summary> /// Restarts this instance. /// </summary> - public void Restart() + public virtual void Restart(StartupOptions startupOptions) { - + throw new NotImplementedException(); } /// <summary> /// Determines whether this instance [can self restart]. /// </summary> /// <returns><c>true</c> if this instance [can self restart]; otherwise, <c>false</c>.</returns> - public bool CanSelfRestart + public virtual bool CanSelfRestart { get { diff --git a/MediaBrowser.Server.Mono/Native/NativeApp.cs b/MediaBrowser.Server.Mono/Native/NativeApp.cs index d92b86157..cd1e78e35 100644 --- a/MediaBrowser.Server.Mono/Native/NativeApp.cs +++ b/MediaBrowser.Server.Mono/Native/NativeApp.cs @@ -1,4 +1,5 @@ - +using MediaBrowser.Server.Startup.Common; + namespace MediaBrowser.Server.Mono.Native { /// <summary> @@ -13,5 +14,25 @@ namespace MediaBrowser.Server.Mono.Native { MainClass.Shutdown(); } + + /// <summary> + /// Determines whether this instance [can self restart]. + /// </summary> + /// <value><c>true</c> if this instance can self restart; otherwise, <c>false</c>.</value> + public override bool CanSelfRestart + { + get + { + return true; + } + } + + /// <summary> + /// Restarts this instance. + /// </summary> + public override void Restart(StartupOptions startupOptions) + { + MainClass.Restart(startupOptions); + } } } diff --git a/MediaBrowser.Server.Mono/Program.cs b/MediaBrowser.Server.Mono/Program.cs index 10a6c6fb9..7b201e555 100644 --- a/MediaBrowser.Server.Mono/Program.cs +++ b/MediaBrowser.Server.Mono/Program.cs @@ -1,4 +1,3 @@ -using System.IO; using MediaBrowser.Common.Implementations.IO; using MediaBrowser.Common.Implementations.Logging; using MediaBrowser.Model.Logging; @@ -8,6 +7,8 @@ using MediaBrowser.Server.Startup.Common; using Microsoft.Win32; using System; using System.Diagnostics; +using System.IO; +using System.Linq; using System.Net; using System.Net.Security; using System.Reflection; @@ -16,133 +17,176 @@ using System.Threading.Tasks; namespace MediaBrowser.Server.Mono { - public class MainClass - { - private static ApplicationHost _appHost; + public class MainClass + { + private static ApplicationHost _appHost; - private static ILogger _logger; + private static ILogger _logger; - public static void Main (string[] args) - { + public static void Main(string[] args) + { var applicationPath = Assembly.GetEntryAssembly().Location; - - var options = new StartupOptions(); - // Allow this to be specified on the command line. - var customProgramDataPath = options.GetOption("-programdata"); + var options = new StartupOptions(); - var appPaths = CreateApplicationPaths(applicationPath, customProgramDataPath); + // Allow this to be specified on the command line. + var customProgramDataPath = options.GetOption("-programdata"); - var logManager = new NlogManager(appPaths.LogDirectoryPath, "server"); - logManager.ReloadLogger(LogSeverity.Info); - logManager.AddConsoleOutput(); + var appPaths = CreateApplicationPaths(applicationPath, customProgramDataPath); - var logger = _logger = logManager.GetLogger("Main"); + var logManager = new NlogManager(appPaths.LogDirectoryPath, "server"); + logManager.ReloadLogger(LogSeverity.Info); + logManager.AddConsoleOutput(); + + var logger = _logger = logManager.GetLogger("Main"); ApplicationHost.LogEnvironmentInfo(logger, appPaths, true); - AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; + AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; + + try + { + RunApplication(appPaths, logManager, options); + } + finally + { + logger.Info("Shutting down"); - try - { - RunApplication(appPaths, logManager, options); - } - finally - { - logger.Info("Shutting down"); + _appHost.Dispose(); + } + } - _appHost.Dispose(); - } - } + private static ServerApplicationPaths CreateApplicationPaths(string applicationPath, string programDataPath) + { + if (string.IsNullOrEmpty(programDataPath)) + { + programDataPath = ApplicationPathHelper.GetProgramDataPath(applicationPath); + } - private static ServerApplicationPaths CreateApplicationPaths(string applicationPath, string programDataPath) - { - if (string.IsNullOrEmpty(programDataPath)) - { - programDataPath = ApplicationPathHelper.GetProgramDataPath(applicationPath); - } - - return new ServerApplicationPaths(programDataPath, applicationPath, Path.GetDirectoryName(applicationPath)); - } + return new ServerApplicationPaths(programDataPath, applicationPath, Path.GetDirectoryName(applicationPath)); + } - private static readonly TaskCompletionSource<bool> ApplicationTaskCompletionSource = new TaskCompletionSource<bool>(); + private static readonly TaskCompletionSource<bool> ApplicationTaskCompletionSource = new TaskCompletionSource<bool>(); - private static void RunApplication(ServerApplicationPaths appPaths, ILogManager logManager, StartupOptions options) - { - SystemEvents.SessionEnding += SystemEvents_SessionEnding; + private static void RunApplication(ServerApplicationPaths appPaths, ILogManager logManager, StartupOptions options) + { + SystemEvents.SessionEnding += SystemEvents_SessionEnding; - // Allow all https requests - ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; }); + // Allow all https requests + ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; }); - var fileSystem = new CommonFileSystem(logManager.GetLogger("FileSystem"), false, true); + var fileSystem = new CommonFileSystem(logManager.GetLogger("FileSystem"), false, true); - var nativeApp = new NativeApp(); + var nativeApp = new NativeApp(); _appHost = new ApplicationHost(appPaths, logManager, options, fileSystem, "MBServer.Mono", nativeApp); - - if (options.ContainsOption("-v")) { - Console.WriteLine (_appHost.ApplicationVersion.ToString()); - return; - } - - Console.WriteLine ("appHost.Init"); - - var initProgress = new Progress<double>(); - - var task = _appHost.Init(initProgress); - Task.WaitAll (task); - - Console.WriteLine ("Running startup tasks"); - - task = _appHost.RunStartupTasks(); - Task.WaitAll (task); - - task = ApplicationTaskCompletionSource.Task; - - Task.WaitAll (task); - } - - /// <summary> - /// Handles the SessionEnding event of the SystemEvents control. - /// </summary> - /// <param name="sender">The source of the event.</param> - /// <param name="e">The <see cref="SessionEndingEventArgs"/> instance containing the event data.</param> - static void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e) - { - if (e.Reason == SessionEndReasons.SystemShutdown) - { - Shutdown(); - } - } - - /// <summary> - /// Handles the UnhandledException event of the CurrentDomain control. - /// </summary> - /// <param name="sender">The source of the event.</param> - /// <param name="e">The <see cref="UnhandledExceptionEventArgs"/> instance containing the event data.</param> - static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) - { - var exception = (Exception)e.ExceptionObject; + + if (options.ContainsOption("-v")) + { + Console.WriteLine(_appHost.ApplicationVersion.ToString()); + return; + } + + Console.WriteLine("appHost.Init"); + + var initProgress = new Progress<double>(); + + var task = _appHost.Init(initProgress); + Task.WaitAll(task); + + Console.WriteLine("Running startup tasks"); + + task = _appHost.RunStartupTasks(); + Task.WaitAll(task); + + task = ApplicationTaskCompletionSource.Task; + + Task.WaitAll(task); + } + + /// <summary> + /// Handles the SessionEnding event of the SystemEvents control. + /// </summary> + /// <param name="sender">The source of the event.</param> + /// <param name="e">The <see cref="SessionEndingEventArgs"/> instance containing the event data.</param> + static void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e) + { + if (e.Reason == SessionEndReasons.SystemShutdown) + { + Shutdown(); + } + } + + /// <summary> + /// Handles the UnhandledException event of the CurrentDomain control. + /// </summary> + /// <param name="sender">The source of the event.</param> + /// <param name="e">The <see cref="UnhandledExceptionEventArgs"/> instance containing the event data.</param> + static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) + { + var exception = (Exception)e.ExceptionObject; new UnhandledExceptionWriter(_appHost.ServerConfigurationManager.ApplicationPaths, _logger, _appHost.LogManager).Log(exception); - if (!Debugger.IsAttached) - { - Environment.Exit(System.Runtime.InteropServices.Marshal.GetHRForException(exception)); - } - } - - public static void Shutdown() - { - ApplicationTaskCompletionSource.SetResult (true); - } - } - - class NoCheckCertificatePolicy : ICertificatePolicy - { - public bool CheckValidationResult (ServicePoint srvPoint, X509Certificate certificate, WebRequest request, int certificateProblem) - { - return true; - } - } + if (!Debugger.IsAttached) + { + Environment.Exit(System.Runtime.InteropServices.Marshal.GetHRForException(exception)); + } + } + + public static void Shutdown() + { + ApplicationTaskCompletionSource.SetResult(true); + } + + public static void Restart(StartupOptions startupOptions) + { + _logger.Info("Disposing app host"); + _appHost.Dispose(); + + _logger.Info("Starting new instance"); + + string module = startupOptions.GetOption("-restartpath"); + string commandLineArgsString = startupOptions.GetOption("-restartargs") ?? string.Empty; + + if (string.IsNullOrWhiteSpace(module)) + { + module = Environment.GetCommandLineArgs().First(); + } + if (!startupOptions.ContainsOption("-restartargs")) + { + var args = Environment.GetCommandLineArgs() + .Skip(1) + .Select(NormalizeCommandLineArgument); + + commandLineArgsString = string.Join(" ", args.ToArray()); + } + + _logger.Info("Executable: {0}", module); + _logger.Info("Arguments: {0}", commandLineArgsString); + + Process.Start(module, commandLineArgsString); + + _logger.Info("Calling Environment.Exit"); + Environment.Exit(0); + } + + private static string NormalizeCommandLineArgument(string arg) + { + if (arg.IndexOf(" ", StringComparison.OrdinalIgnoreCase) == -1) + { + return arg; + } + + return "\"" + arg + "\""; + } + } + + class NoCheckCertificatePolicy : ICertificatePolicy + { + public bool CheckValidationResult(ServicePoint srvPoint, X509Certificate certificate, WebRequest request, int certificateProblem) + { + return true; + } + } } diff --git a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs index 4c25c968c..fab6682d7 100644 --- a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs +++ b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs @@ -38,6 +38,7 @@ using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Resolvers; using MediaBrowser.Controller.Security; using MediaBrowser.Controller.Session; +using MediaBrowser.Controller.Social; using MediaBrowser.Controller.Sorting; using MediaBrowser.Controller.Subtitles; using MediaBrowser.Controller.Sync; @@ -50,6 +51,7 @@ using MediaBrowser.Dlna.Main; using MediaBrowser.Dlna.MediaReceiverRegistrar; using MediaBrowser.Dlna.Ssdp; using MediaBrowser.LocalMetadata.Providers; +using MediaBrowser.LocalMetadata.Savers; using MediaBrowser.MediaEncoding.BdInfo; using MediaBrowser.MediaEncoding.Encoder; using MediaBrowser.MediaEncoding.Subtitles; @@ -83,6 +85,7 @@ using MediaBrowser.Server.Implementations.Playlists; using MediaBrowser.Server.Implementations.Security; using MediaBrowser.Server.Implementations.ServerManager; using MediaBrowser.Server.Implementations.Session; +using MediaBrowser.Server.Implementations.Social; using MediaBrowser.Server.Implementations.Sync; using MediaBrowser.Server.Implementations.Themes; using MediaBrowser.Server.Implementations.TV; @@ -430,7 +433,7 @@ namespace MediaBrowser.Server.Startup.Common RegisterSingleInstance<ISearchEngine>(() => new SearchEngine(LogManager, LibraryManager, UserManager)); - HttpServer = ServerFactory.CreateServer(this, LogManager, "Emby", "web/index.html"); + HttpServer = ServerFactory.CreateServer(this, LogManager, ServerConfigurationManager, "Emby", "web/index.html"); RegisterSingleInstance(HttpServer, false); progress.Report(10); @@ -446,10 +449,10 @@ namespace MediaBrowser.Server.Startup.Common TVSeriesManager = new TVSeriesManager(UserManager, UserDataManager, LibraryManager); RegisterSingleInstance(TVSeriesManager); - SyncManager = new SyncManager(LibraryManager, SyncRepository, ImageProcessor, LogManager.GetLogger("SyncManager"), UserManager, () => DtoService, this, TVSeriesManager, () => MediaEncoder, FileSystemManager, () => SubtitleEncoder, ServerConfigurationManager, UserDataManager, () => MediaSourceManager, JsonSerializer); + SyncManager = new SyncManager(LibraryManager, SyncRepository, ImageProcessor, LogManager.GetLogger("SyncManager"), UserManager, () => DtoService, this, TVSeriesManager, () => MediaEncoder, FileSystemManager, () => SubtitleEncoder, ServerConfigurationManager, UserDataManager, () => MediaSourceManager, JsonSerializer, TaskManager); RegisterSingleInstance(SyncManager); - DtoService = new DtoService(LogManager.GetLogger("DtoService"), LibraryManager, UserDataManager, ItemRepository, ImageProcessor, ServerConfigurationManager, FileSystemManager, ProviderManager, () => ChannelManager, SyncManager, this, () => DeviceManager, () => MediaSourceManager); + DtoService = new DtoService(LogManager.GetLogger("DtoService"), LibraryManager, UserDataManager, ItemRepository, ImageProcessor, ServerConfigurationManager, FileSystemManager, ProviderManager, () => ChannelManager, SyncManager, this, () => DeviceManager, () => MediaSourceManager, () => LiveTvManager); RegisterSingleInstance(DtoService); var encryptionManager = new EncryptionManager(); @@ -458,7 +461,7 @@ namespace MediaBrowser.Server.Startup.Common ConnectManager = new ConnectManager(LogManager.GetLogger("Connect"), ApplicationPaths, JsonSerializer, encryptionManager, HttpClient, this, ServerConfigurationManager, UserManager, ProviderManager, SecurityManager); RegisterSingleInstance(ConnectManager); - DeviceManager = new DeviceManager(new DeviceRepository(ApplicationPaths, JsonSerializer, LogManager.GetLogger("DeviceManager"), FileSystemManager), UserManager, FileSystemManager, LibraryMonitor, ConfigurationManager, LogManager.GetLogger("DeviceManager")); + DeviceManager = new DeviceManager(new DeviceRepository(ApplicationPaths, JsonSerializer, LogManager.GetLogger("DeviceManager"), FileSystemManager), UserManager, FileSystemManager, LibraryMonitor, ConfigurationManager, LogManager.GetLogger("DeviceManager"), NetworkManager); RegisterSingleInstance(DeviceManager); var newsService = new Implementations.News.NewsService(ApplicationPaths, JsonSerializer); @@ -521,6 +524,10 @@ namespace MediaBrowser.Server.Startup.Common MediaEncoder, ChapterManager); RegisterSingleInstance(EncodingManager); + var sharingRepo = new SharingRepository(LogManager, ApplicationPaths); + await sharingRepo.Initialize().ConfigureAwait(false); + RegisterSingleInstance<ISharingManager>(new SharingManager(sharingRepo, ServerConfigurationManager, LibraryManager, this)); + RegisterSingleInstance<ISsdpHandler>(new SsdpHandler(LogManager.GetLogger("SsdpHandler"), ServerConfigurationManager, this)); var activityLogRepo = await GetActivityLogRepository().ConfigureAwait(false); @@ -553,8 +560,8 @@ namespace MediaBrowser.Server.Startup.Common if (_startupOptions.ContainsOption("-imagethreads")) { int.TryParse(_startupOptions.GetOption("-imagethreads"), NumberStyles.Any, CultureInfo.InvariantCulture, out maxConcurrentImageProcesses); - } - + } + return new ImageProcessor(LogManager.GetLogger("ImageProcessor"), ServerConfigurationManager.ApplicationPaths, FileSystemManager, JsonSerializer, GetImageEncoder(), maxConcurrentImageProcesses); } @@ -564,14 +571,14 @@ namespace MediaBrowser.Server.Startup.Common { try { - return new ImageMagickEncoder(LogManager.GetLogger("ImageMagick"), ApplicationPaths); + return new ImageMagickEncoder(LogManager.GetLogger("ImageMagick"), ApplicationPaths, HttpClient); } catch (Exception ex) { Logger.ErrorException("Error loading ImageMagick. Will revert to GDI.", ex); } } - + return new GDIImageEncoder(FileSystemManager, LogManager.GetLogger("GDI")); } @@ -926,7 +933,7 @@ namespace MediaBrowser.Server.Startup.Common Logger.Debug("Calling NativeApp.Restart"); - NativeApp.Restart(); + NativeApp.Restart(_startupOptions); } /// <summary> @@ -989,7 +996,7 @@ namespace MediaBrowser.Server.Startup.Common list.Add(typeof(DlnaEntryPoint).Assembly); // Local metadata - list.Add(typeof(AlbumXmlProvider).Assembly); + list.Add(typeof(BoxSetXmlSaver).Assembly); // Xbmc list.Add(typeof(ArtistNfoProvider).Assembly); diff --git a/MediaBrowser.Server.Startup.Common/EntryPoints/KeepServerAwake.cs b/MediaBrowser.Server.Startup.Common/EntryPoints/KeepServerAwake.cs index 1651dfae2..ba335868d 100644 --- a/MediaBrowser.Server.Startup.Common/EntryPoints/KeepServerAwake.cs +++ b/MediaBrowser.Server.Startup.Common/EntryPoints/KeepServerAwake.cs @@ -27,7 +27,7 @@ namespace MediaBrowser.Server.Startup.Common.EntryPoints _timer = new Timer(obj => { var now = DateTime.UtcNow; - if (_sessionManager.Sessions.Any(i => (now - i.LastActivityDate).TotalMinutes < 5)) + if (_sessionManager.Sessions.Any(i => (now - i.LastActivityDate).TotalMinutes < 15)) { KeepAlive(); } diff --git a/MediaBrowser.Server.Startup.Common/FFMpeg/FFMpegDownloadInfo.cs b/MediaBrowser.Server.Startup.Common/FFMpeg/FFMpegDownloadInfo.cs index 4d2ed067b..8a7d10bd7 100644 --- a/MediaBrowser.Server.Startup.Common/FFMpeg/FFMpegDownloadInfo.cs +++ b/MediaBrowser.Server.Startup.Common/FFMpeg/FFMpegDownloadInfo.cs @@ -84,13 +84,13 @@ namespace MediaBrowser.Server.Startup.Common.FFMpeg return new[] { "http://ffmpeg.zeranoe.com/builds/win64/static/ffmpeg-20150331-git-5cba529-win64-static.7z", - "https://github.com/MediaBrowser/MediaBrowser.Resources/raw/master/ffmpeg/windows/ffmpeg-20150331-git-5cba529-win64-static.7z" + "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/windows/ffmpeg-20150331-git-5cba529-win64-static.7z" }; case Architecture.X86: return new[] { "http://ffmpeg.zeranoe.com/builds/win32/static/ffmpeg-20150331-git-5cba529-win32-static.7z", - "https://github.com/MediaBrowser/MediaBrowser.Resources/raw/master/ffmpeg/windows/ffmpeg-20150331-git-5cba529-win32-static.7z" + "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/windows/ffmpeg-20150331-git-5cba529-win32-static.7z" }; } break; @@ -102,12 +102,12 @@ namespace MediaBrowser.Server.Startup.Common.FFMpeg case Architecture.X86_X64: return new[] { - "https://github.com/MediaBrowser/MediaBrowser.Resources/raw/master/ffmpeg/osx/ffmpeg-x64-2.5.3.7z" + "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/osx/ffmpeg-x64-2.5.3.7z" }; case Architecture.X86: return new[] { - "https://github.com/MediaBrowser/MediaBrowser.Resources/raw/master/ffmpeg/osx/ffmpeg-x86-2.5.3.7z" + "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/osx/ffmpeg-x86-2.5.3.7z" }; } break; @@ -119,12 +119,12 @@ namespace MediaBrowser.Server.Startup.Common.FFMpeg case Architecture.X86_X64: return new[] { - "https://github.com/MediaBrowser/MediaBrowser.Resources/raw/master/ffmpeg/linux/ffmpeg-2.6.1-64bit-static.7z" + "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/linux/ffmpeg-2.6.1-64bit-static.7z" }; case Architecture.X86: return new[] { - "https://github.com/MediaBrowser/MediaBrowser.Resources/raw/master/ffmpeg/linux/ffmpeg-2.6.1-32bit-static.7z" + "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/linux/ffmpeg-2.6.1-32bit-static.7z" }; } break; diff --git a/MediaBrowser.Server.Startup.Common/INativeApp.cs b/MediaBrowser.Server.Startup.Common/INativeApp.cs index 2dbd844ba..01bc069a7 100644 --- a/MediaBrowser.Server.Startup.Common/INativeApp.cs +++ b/MediaBrowser.Server.Startup.Common/INativeApp.cs @@ -66,7 +66,7 @@ namespace MediaBrowser.Server.Startup.Common /// <summary> /// Restarts this instance. /// </summary> - void Restart(); + void Restart(StartupOptions startupOptions); /// <summary> /// Configures the automatic run. diff --git a/MediaBrowser.ServerApplication/App.config b/MediaBrowser.ServerApplication/App.config index 94dd9ee73..14ce35a96 100644 --- a/MediaBrowser.ServerApplication/App.config +++ b/MediaBrowser.ServerApplication/App.config @@ -13,7 +13,7 @@ </nlog> <appSettings> <add key="DebugProgramDataPath" value="..\..\..\ProgramData-Server" /> - <add key="ReleaseProgramDataPath" value="%ApplicationData%\MediaBrowser-Server" /> + <add key="ReleaseProgramDataPath" value=".." /> <add key="ClientSettingsProvider.ServiceUri" value="" /> </appSettings> <startup useLegacyV2RuntimeActivationPolicy="true"> diff --git a/MediaBrowser.ServerApplication/BackgroundService.cs b/MediaBrowser.ServerApplication/BackgroundService.cs index 019a11e1c..da7537cd7 100644 --- a/MediaBrowser.ServerApplication/BackgroundService.cs +++ b/MediaBrowser.ServerApplication/BackgroundService.cs @@ -1,4 +1,5 @@ using MediaBrowser.Model.Logging; +using System.Linq; using System.ServiceProcess; namespace MediaBrowser.ServerApplication @@ -8,8 +9,25 @@ namespace MediaBrowser.ServerApplication /// </summary> public class BackgroundService : ServiceBase { - public static string Name = "MediaBrowser"; - public static string DisplayName = "Media Browser"; + public static string Name = "Emby"; + public static string DisplayName = "Emby Server"; + + public static string GetExistingServiceName() + { + try + { + if (ServiceController.GetServices().Any(s => s.ServiceName == "MediaBrowser")) + { + return "MediaBrowser"; + } + } + catch + { + return "MediaBrowser"; + } + + return Name; + } private readonly ILogger _logger; @@ -24,7 +42,7 @@ namespace MediaBrowser.ServerApplication CanStop = true; - ServiceName = Name; + ServiceName = GetExistingServiceName(); } /// <summary> diff --git a/MediaBrowser.ServerApplication/BackgroundServiceInstaller.cs b/MediaBrowser.ServerApplication/BackgroundServiceInstaller.cs index 15cab6c19..08c8a25b9 100644 --- a/MediaBrowser.ServerApplication/BackgroundServiceInstaller.cs +++ b/MediaBrowser.ServerApplication/BackgroundServiceInstaller.cs @@ -22,7 +22,7 @@ namespace MediaBrowser.ServerApplication DelayedAutoStart = true, - Description = "The windows background service for Media Browser Server.", + Description = "The windows background service for Emby Server.", // Will ensure the network is available ServicesDependedOn = new[] { "LanmanServer", "Tcpip" } diff --git a/MediaBrowser.ServerApplication/EntryPoints/ResourceEntryPoint.cs b/MediaBrowser.ServerApplication/EntryPoints/ResourceEntryPoint.cs deleted file mode 100644 index e7a33d864..000000000 --- a/MediaBrowser.ServerApplication/EntryPoints/ResourceEntryPoint.cs +++ /dev/null @@ -1,38 +0,0 @@ -using MediaBrowser.Controller.Plugins; -using System; -using System.Threading; - -namespace MediaBrowser.ServerApplication.EntryPoints -{ - public class ResourceEntryPoint : IServerEntryPoint - { - private Timer _timer; - - public void Run() - { - _timer = new Timer(TimerCallback, null, TimeSpan.FromMinutes(1), TimeSpan.FromMinutes(30)); - } - - private void TimerCallback(object state) - { - try - { - // Bad practice, i know. But we keep a lot in memory, unfortunately. - GC.Collect(2, GCCollectionMode.Forced, true); - GC.Collect(2, GCCollectionMode.Forced, true); - } - catch - { - } - } - - public void Dispose() - { - if (_timer != null) - { - _timer.Dispose(); - _timer = null; - } - } - } -} diff --git a/MediaBrowser.ServerApplication/Icon.ico b/MediaBrowser.ServerApplication/Icon.ico Binary files differnew file mode 100644 index 000000000..0abd554f4 --- /dev/null +++ b/MediaBrowser.ServerApplication/Icon.ico diff --git a/MediaBrowser.ServerApplication/MainForm.Designer.cs b/MediaBrowser.ServerApplication/MainForm.Designer.cs index 02c96f53d..480e10a46 100644 --- a/MediaBrowser.ServerApplication/MainForm.Designer.cs +++ b/MediaBrowser.ServerApplication/MainForm.Designer.cs @@ -32,19 +32,19 @@ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components); this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); - this.cmdExit = new System.Windows.Forms.ToolStripMenuItem(); - this.cmdCommunity = new System.Windows.Forms.ToolStripMenuItem(); - this.cmdLogWindow = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); - this.cmdRestart = new System.Windows.Forms.ToolStripMenuItem(); - this.cmdLibraryExplorer = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); - this.cmdConfigure = new System.Windows.Forms.ToolStripMenuItem(); this.cmdBrowse = new System.Windows.Forms.ToolStripMenuItem(); + this.cmdConfigure = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.cmdLibraryExplorer = new System.Windows.Forms.ToolStripMenuItem(); + this.cmdRestart = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.cmdApiDocs = new System.Windows.Forms.ToolStripMenuItem(); this.cmdStandardDocs = new System.Windows.Forms.ToolStripMenuItem(); this.cmdSwagger = new System.Windows.Forms.ToolStripMenuItem(); this.cmdGtihub = new System.Windows.Forms.ToolStripMenuItem(); + this.cmdLogWindow = new System.Windows.Forms.ToolStripMenuItem(); + this.cmdCommunity = new System.Windows.Forms.ToolStripMenuItem(); + this.cmdExit = new System.Windows.Forms.ToolStripMenuItem(); this.contextMenuStrip1.SuspendLayout(); this.SuspendLayout(); // @@ -71,37 +71,24 @@ this.contextMenuStrip1.Name = "contextMenuStrip1"; this.contextMenuStrip1.ShowCheckMargin = true; this.contextMenuStrip1.ShowImageMargin = false; - this.contextMenuStrip1.Size = new System.Drawing.Size(209, 214); - // - // cmdExit + this.contextMenuStrip1.Size = new System.Drawing.Size(209, 192); // - this.cmdExit.Name = "cmdExit"; - this.cmdExit.Size = new System.Drawing.Size(208, 22); - this.cmdExit.Text = "Exit"; - // - // cmdCommunity - // - this.cmdCommunity.Name = "cmdCommunity"; - this.cmdCommunity.Size = new System.Drawing.Size(208, 22); - this.cmdCommunity.Text = "Visit Community"; - // - // cmdLogWindow + // cmdBrowse // - this.cmdLogWindow.CheckOnClick = true; - this.cmdLogWindow.Name = "cmdLogWindow"; - this.cmdLogWindow.Size = new System.Drawing.Size(208, 22); - this.cmdLogWindow.Text = "Show Log Window"; + this.cmdBrowse.Name = "cmdBrowse"; + this.cmdBrowse.Size = new System.Drawing.Size(208, 22); + this.cmdBrowse.Text = "Browse Library"; // - // toolStripSeparator1 + // cmdConfigure // - this.toolStripSeparator1.Name = "toolStripSeparator1"; - this.toolStripSeparator1.Size = new System.Drawing.Size(205, 6); + this.cmdConfigure.Name = "cmdConfigure"; + this.cmdConfigure.Size = new System.Drawing.Size(208, 22); + this.cmdConfigure.Text = "Configure Media Browser"; // - // cmdRestart + // toolStripSeparator2 // - this.cmdRestart.Name = "cmdRestart"; - this.cmdRestart.Size = new System.Drawing.Size(208, 22); - this.cmdRestart.Text = "Restart Server"; + this.toolStripSeparator2.Name = "toolStripSeparator2"; + this.toolStripSeparator2.Size = new System.Drawing.Size(205, 6); // // cmdLibraryExplorer // @@ -109,22 +96,16 @@ this.cmdLibraryExplorer.Size = new System.Drawing.Size(208, 22); this.cmdLibraryExplorer.Text = "Open Library Explorer"; // - // toolStripSeparator2 - // - this.toolStripSeparator2.Name = "toolStripSeparator2"; - this.toolStripSeparator2.Size = new System.Drawing.Size(205, 6); - // - // cmdConfigure + // cmdRestart // - this.cmdConfigure.Name = "cmdConfigure"; - this.cmdConfigure.Size = new System.Drawing.Size(208, 22); - this.cmdConfigure.Text = "Configure Media Browser"; + this.cmdRestart.Name = "cmdRestart"; + this.cmdRestart.Size = new System.Drawing.Size(208, 22); + this.cmdRestart.Text = "Restart Server"; // - // cmdBrowse + // toolStripSeparator1 // - this.cmdBrowse.Name = "cmdBrowse"; - this.cmdBrowse.Size = new System.Drawing.Size(208, 22); - this.cmdBrowse.Text = "Browse Library"; + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(205, 6); // // cmdApiDocs // @@ -154,6 +135,25 @@ this.cmdGtihub.Size = new System.Drawing.Size(136, 22); this.cmdGtihub.Text = "Github Wiki"; // + // cmdLogWindow + // + this.cmdLogWindow.CheckOnClick = true; + this.cmdLogWindow.Name = "cmdLogWindow"; + this.cmdLogWindow.Size = new System.Drawing.Size(208, 22); + this.cmdLogWindow.Text = "Show Log Window"; + // + // cmdCommunity + // + this.cmdCommunity.Name = "cmdCommunity"; + this.cmdCommunity.Size = new System.Drawing.Size(208, 22); + this.cmdCommunity.Text = "Visit Community"; + // + // cmdExit + // + this.cmdExit.Name = "cmdExit"; + this.cmdExit.Size = new System.Drawing.Size(208, 22); + this.cmdExit.Text = "Exit"; + // // MainForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); diff --git a/MediaBrowser.ServerApplication/MainForm.resx b/MediaBrowser.ServerApplication/MainForm.resx index 7f59901d5..fb089f594 100644 --- a/MediaBrowser.ServerApplication/MainForm.resx +++ b/MediaBrowser.ServerApplication/MainForm.resx @@ -117,4715 +117,460 @@ <resheader name="writer"> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> - <metadata name="notifyIcon1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> + <data name="notifyIcon1.TrayLocation" type="System.Drawing.Point, System.Drawing"> <value>17, 17</value> - </metadata> - <metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + </data> + <data name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing"> <value>130, 17</value> - </metadata> - <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> - <data name="notifyIcon1.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> - <value> - AAABAAsAICAQAAEABADoAgAAtgAAABAQEAABAAQAKAEAAJ4DAAAwMAAAAQAIAKgOAADGBAAAICAAAAEA - CACoCAAAbhMAABAQAAABAAgAaAUAABYcAAAAAAAAAQAgALt/AAB+IQAAgIAAAAEAIAAoCAEAOaEAAEBA - AAABACAAKEIAAGGpAQAwMAAAAQAgAKglAACJ6wEAICAAAAEAIACoEAAAMRECABAQAAABACAAaAQAANkh - AgAoAAAAIAAAAEAAAAABAAQAAAAAAIACAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAA - AACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AHJWFlJWFneP//+HJSVD - RwZQBCQEJAf/////dAQkJAYHdCQGBAYI////+HBgQGAEJWBgQkBgWP////hgYEJAZCVAQEBAQkj////4 - QEBAQAQGR3dnZ3ZI////+Ednd2dnQmiI+PiId/////93iI+Pj4V4h4eHh3eI////dnh4eHiGePiIiIiF - ZY///4d4iI+Phnj3ZXd1cGB////4ZWVnf3R492BEJEJEaP///4dkRFZ4ePdAYGQkQlj/////h3d4j3j3 - YGQGBgaP//////////9490JAZEZHj///////////ePdGRgYEJHj//////////3j3RgZGRkZH//////// - //9491YHBhYHBnj4eP//////ePdGRkZGRkZHd0Z4////h2/3RlZWVlZWVlZWR////4Z490ZGRkZGRkZG - Rkf///+GePdkZGRkZGRkZGRkdnd3R3j4iIiIiIiIiIiIiIiIiHZv+Pj4+Pj4+IiPj4+Pj4+GeIeHh4eH - h4eIiHh4eHh4hniIiIj4iIiPiIiPiIiPiIdmV2d2dWd2d2V2d0d2d2dHdmRmRmZkZkZmZGZmRmRmRnZH - ZWdHR2VnR0dlZWdHZWd0ZGZGRmRkZGZGRmRkZGZHZmdlZ2dlZ2dlZ2dlZ2dlZ3RkZGRkZGRkZGRkZGRk - ZGZ2dnZ2dnZ2dnZ2dnZ2dnZ3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAEAAAACAAAAABAAQAAAAAAMAAAAAAAAAAAAAAABAA - AAAAAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A - /wD//wAA////AHUnR4//d0NHYAQH//hgQkNHZWf//0dHR3iIh4//d4iHiHd3aP+Hd4eIRAZX//h2eHg0 - YGj/////iEYGV/////+IRkZGeHj/+IhGRkZGRv/3iHd3d3d3eHeIiIiIiIiIiHh3d3d3d3h3ZmVnZWdl - Z0d0ZGRkZGRkZnZ2dnZ2dnZ3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAwAAAAYAAAAAEACAAAAAAAgAoAAAAAAAAAAAAAAAEAAAAA - AABAKR0ARSweAEkuHgBLMB8ATDAeAFAyHwBSNB8AVDUfAEUuIgBGMSUASTAhAE4yIABLMyYATTQlAEo1 - KQBMNisATzgqAE45LQBQNCIAVjYgAFg3IABSOCcAWjggAF06IABfPCAAXD0nAFA4KQBWOigAVjwrAFE7 - LwBbPioAWT8uAFI9MgBWPjEAUz80AGI9IQBaQC4AXUEvAFdAMwBeRDMAWUM2AF9GNwBXQzgAWEQ4AF1G - OQBdST8AZkAiAGtCIgBgQy8AYkQvAGhFKgBuSy8AcEUiAHRJJQB2TSsAZUYwAGlIMABtSzEAb0wxAGlM - NgBiSToAZUs6AGdMOgBgSz4AZEs8AGJMPwBqTToAc04xAG1QOwB3UTIAfFMzAHBSOwB1UzkAclM8AHZV - PQB5VzwAfFk8AF9LQQBiTUEAYU5EAGZQQQBrVEUAbVVGAGZUSgBvV0gAaldMAGxYSwB2WkUAdFpJAG5b - UABuXFIAcV1RAH9gRwB+YUwAdmNYAHdlWgB6ZVkAeWddAHpoXwB5aWAAfWtgAHxsYgB/bmUAhFElAINT - KQCKXTUAg109AItiPgCSZj8AhmBBAI1lQwCJZkkAkGdFAJBoRgCSbEsAiG1XAI9zXgCUcFIAnXVTAJt2 - WACdeVsAo35fAIBvZgCAcGcAhHFkAIBwaACHd24AiXhtAIx6bwCTeWQAm3tgAIh5cACMe3EAi3xyAIt8 - dACNfXQAkH90AKF/YgCbgWwAjoB5AJKBdQCVgnUAmYV1AJ2HdgCThHwAmYh9AKOBZAClhmsAqodoAKmJ - bgCjinYAqo10AKKLeQCvkHUArZF5ALGVfQCWiYEAmYqCAJ2MgQCZjIUArJaFAKCSiwCjlYsApJWLAKSV - jACvm4sAtJuFALGbigC4nokAqJ2XALuijQCvopkAraKcALylkQC/qJMAsaSbALKlnQC1ppwAtaqkALys - oAC3rqgAv7CkALuxqwC9s6sAvbSuAMGqlwDJtaUAzLmqAMG4swDHurAAwrm1AMi7sgDCu7gAw7y4AMi/ - uQDHwLwAyMC7AMjBvQDNxL4A0cG0ANTFuADKw8AAy8TAAM3IxADQycYA2s7DANHLyADSzMgA187IANXP - zADd0ccA1tDNAN7SyADb084A3NTNANrV0gDc1tIA29bUANzX1ADe2NMA3tnVAN/b2QDg1cwA49vUAOHc - 2gDl3tgA4t7cAOTg3gDq49wA5eLgAOnl4QDt5uEA6eblAO7o4wDq6OYA7unkAOzp6ADu7OwA8OrmAPDr - 6ADx7ekA8O7tAPTv7AD08O0A8vHwAPTy8QD29PIA9vX0APj18wD49vUA+fj2APr6+gD8+/oA/Pz7AP38 - /AAAAAAATw4ODg8ODg4ODg4ODg4ODg4RIiIqwP77+/v7+/v7+58PDg4ODg4ODg4ODg4ODg5PKgAAAAAA - AAAAAAAAAAAAAACLy8vO9P79/f39/f3+0yIAAAAAAAAAAAAAAAAAAAAqKgAAAAAAAAAAAAAAAAAAAAnF - /v7+/v39/f39/f39nAAAAAAAAAAAAAAAAAAAAAAqKgAAAAAAAAAAAAAAAAAAAB3Z/v39/f39/f39/f3t - UwAAAAAAAAAAAAAAAAAAAAAqKgAAAAAAAAAAAAAAAAAAACvl/v39/f39/f39/f7ZHQAAAAAAAAAAAAAA - AAAAAAAqKgAAAAAAAAAAAAAAAAAAAC3q/v39/f39/f39/f7JCQAAAAAAAAAAAAAAAAAAAAAqKwAAAAAA - AAAAAAAAAAAAAE3s/v39/f39/f39/f7BCAAAAAAAAAAAAAAAAAAAAAAqKgAAAAAAAAAAAAAAAAAAAC3q - /v39/f39/f39/f7JCQAAAAAAAAAAAAAAAAAAAAAqKxFjfX19fX19fX19fX19Kyvl/v39/f39/f39/f7Z - IB1lfX19fX19fX19fX19WggrK336+/f5+/n3/Pf3/Pn2hx3X/f39/f39/f39/f3xVSvc9/v69/r79/r7 - 9/n94isrK4f+4Hqp64Od8Z2D7Kl6fQzF/v7+/v39/f39/f39nwpZZdXJYr7ZZqzofp/67EErLIf+0yaH - 5U5e7F9O44gmkAyFw8XK8f79/f39/f3+1ygBEMq0GrDMIZDiP2H37EEsLIv+9s/i+tPa/NrT+uDP2lsK - DQ0QuP79/f39/f39+6EKVuXszur1z+L509r+7E4sLIf+/vS2srKysrKysrKysn8DAgICf/r9/f39/f39 - /uxlGoSysrKysrKyw/7+7EE8PIz+/tofAwMDAwMDAwMDAwMDAgMDKdz+/f39/f39/f3iYQsDAwMDAwMD - YPXgnRVQPIz+/twkAwMEBAQEBAMEBAQEBAQEC6T8/P39/f39/f3+6IwcAwMDAwMDQIBAElG8QI3+/tok - CwsLCwsLBAsLCwsLCwsFC1Tq/v39/f39/f39/vfCfCcSCwsLEhtSpOP8PYz+/twlBQUFBRIFEgUSBQUF - BQUFJLD7/f39/f39/f39/f3+99q3pJGeq8rs/f79Po3+/towBgYGBgYGBgYGBgYGBgcer/r+/f39/f39 - /f39/f39/f7+/v7+/v7+/f38Qo3+/twxBwcHBwcHBwcHBwcHBwdY7P79/f39/f39/f39/f39/f39/f39 - /f39/f39RI7+/tsxExMTExMTExMTExMUExMesfv9/f39/f39/f39/f39/f39/f39/f39/f38RI7+/tw3 - FhQWFhQWFBYUFhQWFhQUO8b+/f39/f39/f39/f39/f39/f39/f39/f39RI/+/ts3FxYXFhcWFxcXFhcW - FhYXF1fV/v39/f39/f39/f39/f39/f39/f39/f38R4/+/t04FxcXFxcXFxcXFxcXFxcXFxdd2P39/f3+ - /f39/fz9/f39/f39/f39/f39SZj+/tw5GBgYGBgYGBgYGBgYGBgYGBgYXdD9/v3soL/0/v39/f39/f39 - /f39/f39SY/+/t05IyMjIyMjIyMjIyMjIyMjIyMjI0q9+u+KLjJzs+L6/f39/f39/f3+/vHWSpj+/t86 - Iy4uLi4uLi4uLi4uLi4uLi4jLi4zmIEuLi4uL0i1/vz9/f39/f3+73RcS5b+/uFDLi4uLi4uLi4uLi4u - Li4uLi4uLi4uLi8uLi4uLi6l/v39/f38/f3+5kxLTJj+/t9FLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v - Ly8vLy+n/v39/f39/fz96UxMTJb+/uFFLzQvNDQvNC80NC80LzQvNC80LzQvNC80NC80NDSW7/r8/f7+ - /fv20EZMapr+/t9GNDU0NDU0NTQ0NTQ1NDU0NTQ1NDU0NTQ0NTQ0NDU2b4KXoKinmpN1TDRqapf+/uRt - RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRjVqapr+/vrh39/h3+Hf4d/h3+Hf - 4d/h3+Hf3+Hf4d/h39/h39/h3+Hf4d/f3+HfzW1qa5r+/O7z/O7w/fDu/PPp/Pbp+Prp9vzu8v3v8P3y - 6/3z6/r46/b76/P97vD+8G5ra5r+33Km6XeT8pN256hx37puyM1wruF1mvB4ie+ZdeSucNTHbLvecark - dpX68HBra5r+33Ko6XiV8pV46ahy37pxyNJxueR2m/CJkvCZduSuctTHcbvecqrnd5n68HBrbJf8/PD2 - /fDz/vPw/Pbw/Pju+vzu+Pzw8/3y8v7z8Pz48Pr68Pj87vj98PL+52xrbGmVmZmZmZmZmZmZmZmZmZmZ - mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkmhsbGdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dn - Z2dnZ2dnZ2dnZ2dnZ2dnZ2dsbGdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dn - Z2dnZ2dsbGdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dsbGdnZ2dn - Z2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dsbGdnZ2dnZ2dnZ2dnZ2dnZ2dn - Z2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dsbGdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dn - Z2dnZ2dnZ2dnZ2dnZ2dnZ2dsbGdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dn - Z2dnZ2dsbGdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dsbGdnZ2dn - Z2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dslHZ2dnZ2dnZ2dnZ2dnZ2dnZ2 - dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnaUAAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAA - dnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAA - AAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAA - dnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAA - AAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAA - dnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAA - AAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2KAAAACAA - AABAAAAAAQAIAAAAAACABAAAAAAAAAAAAAAAAQAAAAAAAEApHQBKLx4ATTAeAFAyHwBTNB8AVjYfAEQt - IQBPNSUASjQpAE01KABNNywATjkuAFY2IABZOCAAXDogAFE5KgBWPCoAUj0xAFc/MQBgPCEAZD4hAFZC - NwBfRjYAV0M4AFlFOgBdSD0AaEEiAGxDIgBqQyQAakUpAHFGIwBxRiQAdk0rAGJGMwBkRjEAYUs9AGVN - PwB8VTUAfFo/AH9cPwBeS0EAZU5BAGdRQwBjUEUAZFFHAGhRQgBlUkgAZ1RJAG1XSQBrV0wAbllMAHFb - TQB1XU0AeF9OAG1aUABuXVMAcFxQAHBeVQB/YEgAe2FOAH5iTgBzYFUAdGJXAH1jUAB1YlgAd2VbAHtp - XwB/a14AfWthAHtsYwCEUSUAh1ctAIlaMQCMXjcAglw9AJJmPgCHYEAAi2NCAI5lQgCCZU4AimZJAIdo - TwCVbUsAmnBLAIpqUACObFAAgmxeAIVuXgCRblAAlG9RAIlwXgCNc18AlnFRAJd3XgCAbmMAgnFnAIVx - ZQCLcmAAj3RgAIN0bACJdmkAiHduAJJ2YACWeGAAmXphAJp8YwCPfnMAinx1AKB+YgCfgWkAm4FtAJ6I - dwCSgngAl4Z7AJiIfwChgGMApoJhAKKBZQCgg2sApoZrAKiJbgCpinAAoYp4AKuQegCukXkAsZV9AJaJ - ggCZjIQAopOJAKaakwC6oYwAvKSPAK6hmgCsopwAuKeZAL2rnACzqqUAtKqkALivqgC+tK4AvrWxAL+4 - tADBqZUAxLKiAMCxpADItKQAzLqqAMi7rwDCu7YAyb20AMW9uQDQv7EAycK9ANLBswDTxLYA08S4ANXF - uADWyL0A2Mq+AMvEwADOxsIAzsjEANHJwwDQycUA2cvAANrNwgDcz8MA287EANzPxADRy8kA0szJANXP - zADd0MUA1tDNAN7SyADY0tAA2tXRAN3W0QDb19UA3NfUAN3Z1wDf29gA4NTJAOHWzADi2M4A49nQAOTZ - 0ADi29YA4dzZAOXe2QDi3twA5uDaAOPg3gDl4NwA6ODZAOri3ADr5N8A7OXfAObj4QDo5eIA7ebhAOjl - 5ADu6eUA7OroAO/s6gDv7e0A8OvmAPPx7gD08OwA8/LxAPTz8gD19PMA9vX0APj39gD4+PcA+vr6APz8 - +wD8/PwA9FH/APZx/wD3kf8A+bH/APvR/wD///8AAAAAABsALwAtAFAAPwBwAFIAkABjALAAdgDPAIgA - 8ACZEf8ApjH/ALRR/wDCcf8Az5H/ANyx/wDr0f8A////AAAAAAAIAC8ADgBQABUAcAAbAJAAIQCwACYA - zwAsAPAAPhH/AFgx/wBxUf8AjHH/AKaR/wC/sf8A2tH/AP///wAsCwsLCwsLCwsLCyhFY7TX19fX2akZ - CwsLCwsLCwsLLhUAAAAAAAAAAAAAftLT19jZ2NjWawAAAAAAAAAAAAAXFQAAAAAAAAAAAAaI2djZ2NjZ - 2ckoAAAAAAAAAAAAABcVAAAAAAAAAAAABo3Z2djY2djYrQoAAAAAAAAAAAAAFxUAAAAAAAAAAAAGlNnY - 2djY2NmpCAAAAAAAAAAAAAAXGCs5OTk5OTk5NxGM2djY2NnY2LIRKzk5OTk5OTk9GBgvrcCvxqvHq8mh - QIXZ2NnY2NjYzTZ/rcmryavJqsuKGTG8iWWMRJhAnz0+X6qv0tjZ2NjYgQlClkGfQJ9Ar5QjMrzLr7Wj - vqHAoYoSDxKW2NjY2dnJOF6zob6hvq3UlCMyvNdwLSotLS0tKQcBAWrW2NjY2NmqMSQqKioqhMlyKjO8 - 10MCAgICAgICAgICFrPY2NnZ2dmwYBACAgItMDOLNLzXVgMDAwMDAwMDAwMts9nZ2NjZ2dnRoIBkYHGL - ydk1vNdXBAQEBAQEBAQEIaDY2NjZ2dnZ2NjZ2dbW19nY2DW811cFDAwFDAwMBQwiotnY2NjY2dnZ2djY - 2dnZ2NjYO73XWg0NDQ0NDQ0NDQ0/wdjY2dnZ2djY2dnZ2NjY2dg8vddhDg4ODg4ODg4ODhNhx9jY2NbZ - 2dnY2NnZ2djY2E+911sTExMTExMTExMTExNbu9mxb5XM19nZ2djY2NjVT7/XYhQUFBQUFBoUFBQUFBQ6 - hk8UHU+Q2djZ2dnZsXpRv9dmGhocGhwaGhoaGhoaGhwcGhoaGm7X2dnY2NmTJlS/12cbGxsbGxsbGxsb - GxsbGxsbGxsbZ87U1tfV0YcnVcLXaR8fHx8fHx8fHx4eHx8fHx8fHx8gUF12dmlYJUpYwtmdj4+Pj4+P - j5GPkY+Rj4+Pj4+Rj4+PkY+Pj497TFnCw67Ipc6ezp7OpM6mxa7CubrCtsWnzp7Ons6k0JtNXMOSfJp3 - pXSsc6x1pXiZfZGCg5F9l3medKx0rHS6nE5Smrq2ura6rLqsuqy6trq2uLa3uLa6trqsuqy6rLqOTktI - SUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUhLS0ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZG - RktLRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGS0tGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZG - RkZGRkZLS0ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRktLRkZGRkZGRkZGRkZGRkZGRkZGRkZG - RkZGRkZGRkZGS3RTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1N0AAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAEAAAACAA - AAABAAgAAAAAAEABAAAAAAAAAAAAAAABAAAAAAAAQCkdAE4xHwBUNR8ATzMgAFAzIQBVNiEAWzkgAFw6 - IgBSPjMAYj0hAFdCOABYRDkAX0c5AGVBJQBqQiIAa0MkAG5GJwBiRTEAX0xCAGBNQgBiTkQAY1BGAGZT - SQBoVkwAcFtOAHVfUQBxYFcAhFElAJJmPwCIZ00Ak2dAAJRnQACWa0QApH1cAIBxaQCKd2sAh3hvAJl6 - YACcfmUAl35rAId5cgCKfHQAjX51AKN/YACZgW4Al4JyAJeGewCXiH8AoINrAKiGaQCxk3gAspR5AJeJ - ggCZioEAnI2EAKqTgQCznIkAtZ+MALifigCmmpQAqJqQALqllACxp6AAsqijALaqoQC6rKIAva2hALuw - qQC9sakAu7KtAL+3swDAsKMAxLGhAMCzqQDDtKoAxraqAMK6tQDEvLcAy7+1AMO8uADIwLsA08S3ANTE - twDUxbgAzMTAAM/IwwDZy8AA2MzBANbPygDb19QA39jTAN7a2ADi390A6OLeAO7r5wDv7OoA7+7tAPHv - 7wDy8O4A9PPzAPb19QD4+PcA+vr6AGfwAAB4/xEAiv8xAJz/UQCu/3EAwP+RANL/sQDk/9EA////AAAA - AAAmLwAAQFAAAFpwAAB0kAAAjrAAAKnPAADC8AAA0f8RANj/MQDe/1EA4/9xAOn/kQDv/7EA9v/RAP// - /wAAAAAALyYAAFBBAABwWwAAkHQAALCOAADPqQAA8MMAAP/SEQD/2DEA/91RAP/kcQD/6pEA//CxAP/2 - 0QD///8AAAAAAC8UAABQIgAAcDAAAJA+AACwTQAAz1sAAPBpAAD/eREA/4oxAP+dUQD/r3EA/8GRAP/S - sQD/5dEA////AAAAAAAvAwAAUAQAAHAGAACQCQAAsAoAAM8MAADwDgAA/yASAP8+MQD/XFEA/3pxAP+X - kQD/trEA/9TRAP///wAAAAAALwAOAFAAFwBwACEAkAArALAANgDPAEAA8ABJAP8RWgD/MXAA/1GGAP9x - nAD/kbIA/7HIAP/R3wD///8AAAAAAC8AIABQADYAcABMAJAAYgCwAHgAzwCOAPAApAD/EbMA/zG+AP9R - xwD/cdEA/5HcAP+x5QD/0fAA////AAAAAAAsAC8ASwBQAGkAcACHAJAApQCwAMQAzwDhAPAA8BH/APIx - /wD0Uf8A9nH/APeR/wD5sf8A+9H/AP///wAAAAAAGwAvAC0AUAA/AHAAUgCQAGMAsAB2AM8AiADwAJkR - /wCmMf8AtFH/AMJx/wDPkf8A3LH/AOvR/wD///8AAAAAAAgALwAOAFAAFQBwABsAkAAhALAAJgDPACwA - 8AA+Ef8AWDH/AHFR/wCMcf8AppH/AL+x/wDa0f8A////ABcICAgIGk9hZmMoCAgICBcKAAAAACJmZmZd - CgAAAAALFhQVFRMpZmZmWxIVFRUUFTtGRUU/KllkZmAkPkVFTDQ+VTY1NRgMVWZmTSo2NlAvQEMEAQEB - BDxmZmVUIxkuTUBEBQICAhFYZmZvZmRiZGZBSQcHBgYHLV9mZWZmb2ZmQkoNCQkJCQ0sQidOZWZmWkdL - Dw8ODg4ODxAOHV1iXjdIVyYmJiYmJiYmJjA4PTklSFZRUlJSU1JRUlJTUlJWOjEzMzMzMzMzMzMzMzMz - MyscGxsbGxsbGxsbGxsbGxsfHhsbGxsbGxsbGxsbGxsbHyEgICAgICAgICAgICAgICEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiVBORw0K - GgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAB/gklEQVR42uxdB6BVxdGeQ++gdCkPFMSKWLAgIgIi - 0uzG3mJvURM1xogtttgTS6qJRo3lT7Fr7MYSa2IXbA8UlV6l886/u+fs7szs7rnnlke9m8h7795ztszu - fvPN7O5sBNVUTdW03qao736/eFf87LG6K1JN1bTupFj8F63uShSuZQRTor77XlELDaCmpLb52hmnP6N6 - lgPPO/1bF5snkWdZfsXkw5ur3ovFv1EUlhMqVz4We/LKJQNw318jUjF9j54tVu4F89WZllvf2GYVF8iv - om1w6oHGVZ56ZzwTQ1wrGIAAgKgIACim4CJSlLatlEFTVpmhPEP5B4An17tOPnkbkT5XAEgIgMWFB2qh - emYBZLEpyauMTHxyrsfkncRFl11CZSveziQj33hIAAAzgLgMbeLRwHmQ0GpMcCdQOUKoD4Aq9rs8WiUq - 8FleLVZAi9arVvLV3QdwecdXCExXN7MupfxS67wK2loeA1gVlc7b+VnaGiBzYpTUhrzP5Cg7l6bOyh+V - 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 - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAABAKRzfQCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd - /kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd - /kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd - /kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/lM/NP7V0M7+/f39 - /v39/f78/Pz++vr6/vr6+v76+vr++vr6/vr6+v76+vr++vr6/vr6+v76+vr++vr6/vr6+v76+vr++vr6 - /vr6+v76+vr++vr6/vr6+v76+vr++vr6/vv7+/79/f3+/f39/vTz8/6Qg3z+Qywg/kApHf5AKR3+QCkd - /kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd - /kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd - /kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkc3j8oHOBAKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/c2JZ//Hv7v/+/v7//v7+//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//v7+ - //7+/v/9/f3/v7i0/045Lv9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKRzfPygc4EApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0EqHv9IMif/TTgt/004Lf9NOC3/TTgt/004Lf9NOC3/TTgt/045Lf+il5H/+/v6 - //7+/v/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/+/v7//v7+/+nm5f9uXVT/QSoe/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN8/KBzgQCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/Y1FH/7mwrP/Nx8T/zcfE - /83HxP/Nx8T/zcfE/83HxP/Nx8T/zcjE/+ro5//+/v7//v7+//z8/P/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39 - //7+/v/8/Pz/qqCb/0YwJP9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkc3z8oHOBAKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0MtIf+soZz//Pz8//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+ - //7+/v/+/v7//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/+/v7//v7+/+bj4f9mVEr/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKRzfPygc4EApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/TTcs/8rEwP/+/v7//v7+ - //7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//39/f/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39 - //7+/v/8/Pz/saej/0YwJP9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHN8/KBzgQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9YRDn/4Nza//7+/v/+/v7//fz9//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8 - //z8/P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v8+//+/v7//v7+//Hv7v91ZV3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkc3z8oHOBAKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/2pYT//t6+r//v7+ - //7+/v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8 - //7+/v/+/v7/0czJ/1E8Mf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKRzfPygc4EApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/fW1l//Tz8//+/v7//f39//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//9/f3//v7+//z8/P+jmJP/Qywh/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN8/KBzgQCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0AqHf+PgXr/+/r6 - //7+/v/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //39/f/+/v7/9PLx/3dnXv9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkc3z8oHOBAKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/Qywg/6KWkf/+/f3//v7+//39/f/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz//v7+//7+/v/h3dv/W0c9/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKRzfPygc - 4EApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9FLyP/sKai - //7+/v/+/v7//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //z8/P/+/v7//v7+/8jBvf9KNSn/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN8/KBzgQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0gyJv+9tLH//v7+//7+/v/8/Pz/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39//7+/v/9/f3/rKOd/0UuIv9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkc - 3z8oHOBAKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/SjQp - /8a/vP/+/v7//v7+//z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//9/f3//v7+//38/P+WioP/QSsf/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKRzfPygc4EApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9LNSr/zcfE//7+/v/+/v7//Pz8//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//39/f/+/v7/+fj4/4V3b/9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHN8/KBzgQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0w2K//Szcr//v7+//7+/v/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v//f79//7+/v/19fT/fG1l/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkc3z8oHOBAKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/TTcs/9TPzf/+/v7//v7+//z8/P/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//+/v7//v7+//Py8v94aGD/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKRzfPygc4EApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9NNyz/1dDN//7+/v/+/v7//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//7+/v/+/v7/8/Lx/3hoX/9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN8/KBzgQCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0w3K//Tzsv//v7+//7+/v/8/Pz/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//v7+//7+/v/19PP/e2tj - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkc30AoHOBAKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9BKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9BKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/TDYq/8/Jxv/+/v7//v7+//z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//9/f3//v7+//j39/+Dc2z/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QSkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKRzfQCgc4EEpHf9BKR3/QSkd - /0EpHf9BKR3/QSkd/0ApHf9AKR3/QCkd/0EpHf9BKR3/QSkd/0ApHf9AKR3/QSkd/0EpHf9AKR3/QSkd - /0EpHf9BKR3/QSkd/0EpHf9BKR3/QSkd/0EqHf9BKR3/QSkd/0EpHf9BKR3/QSkd/0ApHf9AKR3/QCkd - /0EqHf9BKR3/QSkd/0EpHf9BKR3/QSod/0EpHf9BKh3/QSkd/0EpHf9LNCn/yMK+//7+/v/+/v7//Pz8 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//39/f/+/v7//Pz8 - /5KFfv9CKx7/QCkd/0EpHf9BKR3/QSkd/0EpHf9BKR3/QSkd/0ApHf9BKR3/QSkd/0EpHf9BKR3/QSod - /0ApHf9BKh3/QSod/0AqHf9AKR3/QCkd/0EqHf9AKR3/QSkd/0EpHf9BKh3/QSod/0EpHf9BKR3/QSkd - /0EpHf9BKh3/QCkd/0EqHf9BKh3/QSkd/0EpHf9BKR3/QSkd/0EpHf9BKR3/QCod/0ApHf9BKR3/QSkd - /0EpHf9BKR3/QSkd/0EpHN9AKhzgQSkd/0EpHf9BKh3/QSod/0EqHf9BKR3/QSkd/0EpHf9BKh3/QSod - /0EqHf9BKR3/QSod/0EpHf9BKR3/QSkd/0EpHf9BKR3/QSkd/0EqHf9BKh3/QSkd/0EpHf9BKR3/QSod - /0EpHf9BKh3/QSod/0EqHf9BKh3/QSkd/0EqHf9BKh3/QSod/0EqHf9BKh3/QSod/0EpHf9BKh3/QSod - /0EqHf9BKh3/QSod/0kzJ/+/uLT//v7+//7+/v/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v//f39//7+/v/9/f3/p5yW/0UuIv9BKh3/QSkd/0EpHf9BKh3/QSod - /0EpHf9BKR3/QSod/0EpHf9BKR3/QSkd/0EqHf9BKh3/QSod/0EqHf9BKh3/QSkd/0EqHf9BKh3/QSod - /0EqHf9BKh3/QSod/0EqHf9BKh3/QSod/0EpHf9BKh3/QSod/0EqHf9BKh3/QSod/0EpHf9BKR3/QSkd - /0EpHf9BKR3/QSod/0EpHf9BKh3/QSod/0EqHf9BKR3/QSkd/0EqHf9BKh3/QSkc30AqHOBBKh3/QSod - /0EqHf9CKx7/TTYr/1pFOv9bRzz/W0c8/1tHPP9bRzz/W0c8/1xHPP9bRzz/W0c8/1tHPP9bRzz/XEc8 - /1tHPP9bRzz/W0c8/1xHPP9bRzz/W0c8/1xHPP9cRzz/W0c8/1tHPP9cRzz/XEc8/1tHPP9bRzz/W0c8 - /1xHPP9bRzz/W0c8/1tHPP9bRzz/W0c8/1tHPP9WQjb/RC0g/0EqHf9BKh3/SDEl/7Srpv/+/v7//v7+ - //z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz//v7+ - //7+/v/Bubb/STMn/0EqHf9BKh3/QSod/0kyJv9aRjr/W0c8/1tHPP9bRzz/W0c8/1tHPP9bRzz/W0c8 - /1xHPP9cRzz/W0c8/1xHPP9bRzz/W0c8/1tHPP9bRzz/W0c8/1tHPP9bRzz/W0c8/1tHPP9cRzz/W0c8 - /1tHPP9bRzz/XEc8/1tHPP9bRzz/W0c8/1tHPP9bRzz/W0c8/1tHPP9cRzz/W0c8/1pGO/9POS3/Qise - /0IqHf9BKh3/QSod/0EqHf9BKhzfQioc4EIqHf9CKh3/Qiod/15KP/++trH/5uPh/+nn5f/p5+X/6efl - /+nn5f/p5+X/6ufl/+rn5f/p5+X/6efl/+rn5f/q5+X/6ufl/+rn5f/p5+X/6ufl/+rn5f/q5+X/6ufl - /+rn5f/q5+X/6ufl/+rn5f/q5+X/6ufl/+rn5f/q5+X/6ufl/+nn5f/p5+X/6efl/+nn5f/p5+X/6ufl - /8vFwv9WQTX/Qiod/0IqHf9FLiH/ppuV//7+/v/+/v7//f39//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/+/v7//v7+/9zX1f9XQjf/Qiod/0IqHf9CKh3/aFRK - /9rW0//p5+X/6efl/+nn5f/p5+X/6efl/+rn5f/p5+X/6ufl/+rn5f/p5+X/6ufl/+rn5f/q5+X/6efl - /+nn5f/q5+X/6efl/+rn5f/p5+X/6efl/+rn5f/p5+X/6ufl/+rn5f/q5+X/6ufl/+rn5f/q5+X/6efl - /+nn5f/p5+X/6efl/+rn5f/p5+X/5+Tj/8fAvP9oVUv/Qyse/0IqHf9CKh3/Qiod/0IqHd9CKhzgQiod - /0IqHf9ELB//o5iR//v7+/////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////5ODe/19LQP9CKh3/Qiod/0MrHv+Uh4D//Pv7 - //7+/v/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8 - //7+/v/+/v7/8O3t/3BeVP9CKx3/Qiod/0IqHf9SPDH/0cvH//////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////////f39 - /7Wsp/9HMCT/Qiod/0IqHf9CKh3/Qioc30IqHOBCKx3/Qyod/0UtIP+8tK////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ///////s6ej/aFRK/0MrHf9DKx3/Qysd/4Nzav/29fX//v7+//39/f/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39//7+/v/7+vr/mIuE/0QsIP9DKh7/Qysd - /0UtIP+ekor//Pv7//////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////zsjF/0szJ/9DKh3/Qysd/0MqHf9CKhzfQysd - 4EMrHf9DKx7/Ri4h/721sP///////////////////////f39//Du7f/r6Of/6+jn/+vo5//t6+n/+/r6 - ////////////+Pf2/+vp6P/r6Of/6+jn/+vo5//08vH////////////9/f3/7+3s/+vo5//r6Of/6+jn - /+3r6v/7+/v////////////39fX/6+nn/+vo5//r6Of/6+nn/+ro5v91Y1n/Qyse/0QrHf9EKx3/cV9V - //Du7f/+/v7//v7+//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//8/Pz//v7+//7+/f/Hwb3/Tjgr/0MrHv9DKx7/Qyse/2lVSv/e2df/6+nn/+vo5//r6Of/6+nn - //f29f////////////z7+//t6+r/6+jn/+vo5//r6Of/7+3s//39/f///////v7+//Ty8f/r6Of/6+jn - /+vp5//s6ej/+Pb2////////////+/r6/+3q6f/r6Of/6+jn/+vo5//w7u3//v39//////////////// - ///////Qycb/SzQn/0MrHv9DKx3/Qysd/0MrHN9EKx3gRCsd/0QrHf9GLiH/vrWw//////////////// - ///////08/L/j4F5/2lWS/9pVkr/alVK/3loXv/f2tj///////7+/v/HwLz/bFlO/2lWS/9qVkv/aVZL - /6yhm//8/Pv///////Lw7/+LfHT/aVVL/2pWSv9pVUv/e2lf/+Th3////////f39/8G4tP9tWk//alZK - /2pWSv9qV0z/q6Ca/4V2bf9FLB7/RCse/0QrHf9fSj//5eHg//7+/v/+/v7//Pz8//z8/P/8/Pz//Pz8 - //z8/P/8/Pz//Pz8//z8/P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/+/v7//v7+/+vp5/9sWU7/RCse - /0QrHv9EKx7/SjIk/3BdUf9rV0z/aVVL/2lWS/9uW1D/w7u3//7+/v//////5uPh/3ppX/9qVUr/alVL - /2lWSv+IeHD/8vDv///////7+vr/qp6Z/2pXTP9qVkv/aVZL/29cUf/HwLz//v7+///////e2df/d2Ra - /2pWSv9qVkv/alZK/5CBef/19PP//////////////////////9DJxv9MNCf/RCse/0QrHf9EKx3/RCsd - 30QrHeBELB3/RCwe/0cuIf++tbD///////////////////////Hv7v91Ylj/RCwe/0QrHf9FKx3/WUM2 - /9fSzv///////v7+/7mwq/9IMCL/RCwe/0QrHf9ELB7/mIuD//v7+v//////7+zr/29cUv9ELB3/RCwd - /0QrHf9aQzf/3tnX///////9/f3/saeh/0oyJP9ELB3/RCwe/0UtH/+ZjIX/mo2F/0UtH/9EKx7/RCsd - /1M8L//Ry8j//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/9/f3/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//39/f/+/v7/+/v6/6OXkf9HLyH/RCwd/0QsHv9ELB7/Ri4g/0UsHv9EKx7/RCwe - /0ozJf+1q6b//v7+///////g3Nn/WUQ3/0QrHf9EKx3/RCwd/2tXTP/v7Ov///////r5+f+Vh3//Ri0f - /0QsHv9EKx3/TDQm/7qwq//+/v7//////9bQzf9VPjH/RCwd/0QsHf9EKx3/dGJX//Px8f////////// - ////////////0MnG/0w0J/9EKx3/RCsd/0QrHf9EKx3fRSwd4EUsHv9FLB7/SC4h/761sP////////// - ////////////8fDu/3ViV/9FLB7/RSwd/0UsHf9ZQzb/19LO///////+/v7/ubCr/0kwIv9FLB3/RSwd - /0UsHv+YioP/+/v6///////v7Ov/cF1S/0UrHv9FLB7/RSwd/1pEN//e2df///////39/f+yp6H/SjIk - /0UsHv9FLB7/Ri0f/5yPh/+yqKL/SC8i/0UsHf9FLB7/SjIk/7euqf/9/f3//v7+//7+/v/+/v7//v7+ - //7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8//7+/v/+/v7/3NfV - /15JPf9FLB3/RSwd/0UsHv9FLB7/RSwe/0UsHv9FLB7/SzMl/7Wrpv/+/v7//////+Dc2f9aRDf/RSwd - /0UsHf9FLB3/bFhM/+/s6///////+vn5/5aHgP9GLh//RSwe/0UsHv9MNCb/urCr//7+/v//////1tDN - /1U+Mv9FLB7/RSwe/0UsHv90Ylf/8/Hx///////////////////////Qysb/TDUn/0UsHv9FLB7/RSwe - /0QsHd9FLB3gRSwe/0YsHv9ILyH/vrWw///////////////////////x8O7/dWJX/0UsHf9FLB3/RSwd - /1pDNv/X0s////////7+/v+6sKv/STEj/0YsHv9FLB3/RSwe/5mLg//7+/r//////+/s6/9wXVL/RSwe - /0UsHv9FLB7/W0Q3/97Z1////////f39/7Knof9LMiT/RSwe/0YsHv9GLR//nZCJ/8nCvv9ROiz/RSwe - /0UsHv9GLR7/emhe/9jT0f/o5eT/6OXk/+jl5P/o5eT/6OXk/+jl5P/o5eT/6ebk//b19P/+/v7//v7+ - //z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v//f39//7+/v/6+fj/moyE/0gwIf9FLB7/RSwe/0UsHv9FLB7/RSwe - /0YsHv9LMyX/taum//7+/v//////4NzZ/1pEN/9FLB7/RSwe/0UsHv9sWEz/7+zr///////6+fn/loiA - /0cuIP9FLB7/RSwe/0w0Jv+6sKv//v7+///////W0M3/Vj8y/0UsHv9FLB7/RSwe/3ViV//z8fH///// - /////////////////9DKxv9NNSf/RSwe/0UsHv9FLR7/RCwd30UsHeBGLB7/Ri0e/0gvIf++tbD///// - //////////////////Lx8P97al//TjUo/042KP9PNij/YUw//9nU0f///////v7+/720r/9SOiz/TjYo - /042KP9ONij/nZCI//v7+v//////8O7s/3dkWf9ONif/TjYo/042KP9iTED/39vZ///////9/f3/taul - /1M7Lv9ONij/TjYo/083Kf+ilY7/39rY/19JPP9GLR7/Riwd/0YsHf9JMCH/XUc6/2dSRv9nUkb/Z1JG - /2dSRv9nUkb/Z1JG/2dSRv9oU0b/tqul//z8/P/+/v7//f39//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//9/f3//v7+ - //7+/v/e2db/ZE5C/0YtHv9GLR7/Ri0d/0YsHv9GLR//TDMl/1Q9L/+5r6n//v7+///////h3dv/Yk1A - /042KP9ONij/TjUo/3NfVP/w7ez///////r5+f+bjYb/Tzgp/042KP9ONij/VT0w/720r//+/v7///// - /9jSz/9dRzr/TjUn/041KP9ONij/e2lf//Ty8f//////////////////////0MrG/041J/9GLB7/Riwe - /0YtHv9FLB3fRi0d4EYtHv9GLR7/STAh/762sP//////////////////////+vr6/9DKxv/At7L/wLey - /8C3sv/Gvrr/8e/v////////////5+Ti/8G5tP/At7L/wLey/8C3sv/b19T//v79///////6+fj/zsfD - /8C3sv/At7L/wLey/8e/u//08vH///////7+/v/l4d//wbm0/8C3sv/At7L/wbiz/97Z1//19PP/kYF4 - /0oxIv9HLR7/Ri0e/0ctHv9GLR7/Ri0e/0YtHv9HLR7/Ry0e/0YtHv9HLR3/Ri0e/0ctHv+BcGX/9fTz - //7+/v/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//+/v7//v7+//v6+v+soZr/TTUm/0YtHv9GLR7/Ri0e - /0kvIP9/bWP/vbSv/+bi4P////7///////Tz8v/Hv7r/wLey/8C3sv/At7L/zcbC//r5+P///////f39 - /9vW0//AuLL/wLey/8C3sv/CurT/6OTi////////////8e/u/8W9uf/At7L/wLey/8C3sv/Qysb/+/r6 - ///////////////////////Qysb/TjYn/0ctHv9GLR7/Ri0e/0YsHd9HLR3gRy0e/0ctHv9JMCH/v7aw - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ///////////////////////////////////////q5+X/iHdt/0syI/9HLR7/SC0e/0cuHv9HLR7/Ry0e - /0ctHv9HLR7/Ry0e/0ctHv9HLR7/Ry0e/2BKPP/f2tj//v7+//7+/v/8/Pz/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //z8/P/+/v7//v7+/+7r6v+AbmP/SC4f/0ctHv9HLR7/Ry0e/15HOf/MxcH//v39//////////////// - //////////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////9HKxv9PNif/Ry0e - /0ctHv9HLR7/Riwd30ctHeBILh7/SC4e/0owIf+/trD///////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ///////p5eP/eWVa/0guH/9ILh7/SC4e/0guHv9ILh7/SC0e/0guHv9ILR7/SC4e/0guHv9ILR7/TTQl - /7itp//9/f3//v7+//39/f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//39/f/+/v7//f39/9XPy/9jTUD/SC4e - /0guHv9ILh7/SC8f/21ZTP/W0Mz//f39//////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ////////////////////////////0crG/082J/9ILh7/SC4e/0guHv9ILR3fSC0d4EguHv9ILh7/SzEh - /7+2sP///////////////////////////////////////Pz7/+nm5P/m4uD/5uLg/+bi4P/m4uD/5uLg - /+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg - /+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg/+Pf3f+Sgnj/SjAg/0guHv9ILh7/SC4e - /0guHv9ILh7/SC4e/0guHv9ILh7/SC4e/0guHv9JLx//hXRp//b19P/+/v7//v7+//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v//Pz8//7+/v/+/v7/+/v7/7qwqv9WPS7/SC4e/0guHv9ILh7/Si8f/2pUSP/DurX/5eHf - /+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg - /+bi4P/m4uD/5uLg/+bi4P/o5eL/+vr5///////////////////////////////////////Rysb/UDYn - /0guHv9ILh7/SS4e/0gtHd9ILh7gSS4e/0kvHv9LMSH/v7aw//////////////////////////////// - ///////s6ej/c19S/15GOP9eRjj/XkY4/15GOP9eRjj/XkY4/15GOP9eRjj/XkY4/15GOP9eRjj/XkY4 - /15GOP9eRjj/XkY4/15GOP9eRjj/XkY4/15GOP9dRjj/XkY4/15GOP9eRjj/XkY4/15GOP9eRjj/XkY4 - /15GOP9eRjj/XUY3/1M6Kv9JLh7/SS4e/0kuHv9JLh7/SS8e/0kvHv9JLx7/SS4e/0kuHv9JLh7/SS8e - /0kuHv9eRjj/2tTR//7+/v/+/v7//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8//7+/v/+/v7/9vX1 - /6SXj/9SOSn/SS8e/0kvHv9JLh7/SS8e/1Q7LP9dRjf/XkY4/15GOP9dRjj/XkY4/15GOP9eRjj/XkY4 - /15GOP9eRjj/XkY4/15GOP9eRzj/XkY4/15GOP9eRjj/XkY4/15GOP9eRjj/XkY4/2pUR//h3Nr///// - /////////////////////////////////9DJxf9RNyf/SS4e/0kuHv9JLh7/SS4d30kuHuBKLh7/SS8e - /0wyIf/AtrD//////////////////////////////////////+rn5f9iSjz/Si8e/0ovHv9KLx7/Si8e - /0ovHv9KLx7/SS8e/0ovHv9KLx7/SS8e/0kvHv9KLh7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8e - /0ovHv9KLx7/Si8e/0ovHv9KLh7/Si8e/0ovHv9KLx7/Si8e/0ouHv9KLx7/SS8e/0ovHv9KLx7/Si8e - /0ovHv9KLx7/Si8e/0kvHv9KLx7/Si8e/0ouHv9KLx7/Si8e/00zIv+nmpH//Pz8//7+/v/9/f3/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v//f39//7+/v/+/v7/8vDw/52Phv9SOCj/Si8e/0ovHv9KLx7/SS8e - /0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si4e/0ovHv9KLx7/Si8e/0ovHv9KLx7/SS8e - /0ovHv9KLx7/SS8e/0ovHv9KLx7/WD8v/93Y1f////////////////////////////79/f/q5+X/nI2F - /00zI/9KLx7/SS8e/0ovHv9JLh3fSS4e4EovHv9KLx7/TTIh/8C2sP////////////////////////// - ////////////6ufl/2JLPP9KLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8f - /0ovH/9LLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8e - /0ovH/9LLx7/Si8e/0ovHv9LLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9LLx7/Si8e - /0svHv9KLx7/Si8e/3FbTv/q5+X//v7+//7+/v/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39 - //7+/v/+/v7/8u/u/5+QiP9TOir/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8e - /0svHv9KLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Sy8e/0ovHv9KLx7/Si8e/0ovHv9YPy//3tjV - //////////////////7+/v/w7ez/vbOt/3ZiVf9QNSX/Sy8e/0ovHv9KLx7/Si8e/0ouHd9LLx3gSzAe - /0swHv9NMiH/wLew///////////////////////////////////////q5+X/Y0w8/0swHv9LMB//SzAe - /0swHv9LMB7/SzAe/0swHv9LMB7/Sy8e/0swHv9LMB7/SzAf/0svHv9LMB7/SzAe/0svHv9LMB7/SzAe - /0swHv9LMB7/TDAe/0wwHv9LMB7/SzAe/0swHv9LLx7/SzAe/0swH/9LLx7/SzAe/0swHv9LLx7/SzAe - /0swHv9LLx7/SzAe/0svHv9LLx7/Sy8e/0svHv9LLx7/SzAf/0svHv9LMB7/Uzgn/7yyrP/9/f3//v7+ - //39/f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz//f39//7+/v/+/v7/9PLx/6uelv9cQzT/SzAf - /0swHv9LMB7/SzAe/0svHv9LMB7/SzAe/0svHv9LLx//SzAe/0swHv9LLx7/SzAe/0swHv9LMB//SzAe - /0swHv9LLx7/Sy8e/0svHv9LMB7/SzAe/1lAL//e2dX///////z7+//r6Ob/u7Gr/31pXP9UOir/SzAe - /0swHv9LMB7/SzAe/0swHv9RNiX/emZa30svHuBMMB7/TDAe/04zIf/At7D///////////////////// - /////////////////+rn5f9jTDz/SzAe/0swHv9MMB//TDAe/0wwHv9MMB//TDAe/0wwH/9MMB7/TDAe - /0wwHv9MMB//TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB//TDAe - /0wwHv9MMB7/TDAf/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/SzAe - /0wwHv9MMB7/TDAe/0wwHv9MMB//fmpd//Dt7P/+/v7//v7+//z8/P/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v//f39//7+/v/+/v7/+Pf2/8K5s/9rVEb/TTIh/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe - /0wwH/9MMB7/SzAe/0wwHv9MMB//TDAf/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/WD8u - /87Hwv/Sy8f/opSL/3JcTv9UOSn/TDAf/0wwHv9MMB7/SzAe/0swHv9MMB//WT8v/5+Qh//q5uXfTC8e - 4EwwH/9MMB7/TzMi/8G3sf//////////////////////////////////////6ufl/2RMPP9MMB7/TDAf - /00wH/9MMB7/TDAe/0wwHv9NMB7/TDAf/0wwH/9MMB7/TDAe/0wwHv9NMB7/TDAe/0wwHv9MMB7/TDAe - /0wwH/9MMB7/TDEe/0wwHv9MMB7/TTAe/00wHv9NMB7/TDAf/0wwH/9MMB//TTAe/00wHv9MMB7/TDAe - /00wHv9NMB//TDAe/0wwHv9MMR7/TDEe/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDEe/0wwH/9WPCv/w7mz - //39/f/+/v7//f39//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz//f39//7+/v/+/v7//Pv7 - /9rV0v+KeGz/Vjsq/00wHv9MMB7/TDAe/0wxHv9NMB7/TDAe/0wxHv9MMB//TTAe/00wH/9MMB//TDAf - /0wwHv9NMB7/TTAf/0wwH/9MMB//TDEf/00wHv9QNCP/aVFB/1tBMf9PMyL/TTAf/0wwHv9MMB//TDAf - /0wwHv9NMB7/UDQi/3BZS/+/tq//9vTz//39/d9NMB7gTTEf/00xHv9PNCL/wbex//////////////// - ///////////////////////q5+X/ZUw8/00xHv9NMR//TTEe/00xH/9NMR7/TTEf/00xH/9NMR//TTEf - /00xH/9NMR7/TTEe/00xH/9NMR//TTEf/00xHv9NMR7/TTEe/00xHv9NMR//TTEf/00xH/9NMR//TTEe - /00xH/9NMR//TTEf/00xH/9NMR//TTEe/00xHv9NMR7/TjEe/04xHv9NMR//TTEf/00xH/9NMR//TTEf - /00xH/9NMR//TTEf/00xH/9NMR//TTEe/00yH/9/al3/7+3s//7+/v/+/v7//Pz8//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v//f39//7+/v/+/v7//v7+//Hv7v+5r6f/dF5P/1M3Jf9NMR7/TTEf - /00xH/9NMR//TTEf/00xHv9NMR7/TjEe/00xHv9NMR//TTEf/04xH/9NMR//TTEe/00xHv9NMR//TTEf - /00xH/9NMR7/TjEf/00xH/9NMR//TTEe/00xH/9NMR//TzMh/2NKOf+djoT/4t3a//z8/P/+/v7//f39 - 304wHuBOMR//TjEf/1A0Iv/Bt7H//////////////////////////////////////+rn5f9mTTz/TjEe - /04xHv9OMR7/TjEe/04xHv9OMR//TjEf/04xH/9OMR//TjEf/04xH/9OMR//TjEf/04xH/9OMR//TjEe - /04xHv9OMR//TjEf/04xH/9OMR//TjEf/04xH/9OMR7/TjEf/04yH/9OMR//TjEf/04xH/9OMh//TjEe - /04xHv9OMR//TjEe/04xHv9OMR//TjEf/04xH/9OMR//TjEf/04xH/9OMR//TjEf/04xH/9OMR//TjIe - /1c7Kf+6r6j//fz8//7+/v/9/f7/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8 - //7+/v/+/v7//v7+//z8/P/o5OL/sKOb/3NdTv9VOSf/TjIf/04xHv9OMR//TjEf/04xHv9OMh7/TjEe - /04xH/9OMR7/TjEf/04xH/9OMR7/TjEe/04xHv9OMR7/TjEf/04xH/9OMh//TjEe/04xHv9OMR//UTUj - /2RLO/+Xhnz/19DM//j39//+/v7//v7+//7+/v/8/PzfTjIe4E8yH/9OMR//UTQi/8K3sP////////// - ////////////////////////////6ufl/2ZNPP9OMh//TzIe/08yH/9OMh7/TjIf/04yH/9OMR7/TjEf - /08yH/9PMh7/TzIf/08yH/9PMR//TzEf/08xH/9PMh//TzIf/08yH/9PMh//TzIf/08yH/9PMh//TzIf - /08yH/9PMh//TzIf/08xH/9PMR//TzIf/08yH/9OMh//TzIf/08yH/9OMh//TzIf/04yH/9OMh//TjIf - /04yH/9PMh//TzIf/08yH/9PMR//TzIf/08yH/9PMh7/Vzsp/6udlP/7+vr//v7+//7+/v/8/Pz/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8//39/f/+/v7//v7+//7+/v/8+/v/6eXj - /7qvqP+FcmX/Ykg3/1M3Jf9PMh//TzIf/04yH/9OMh//TzIf/08yHv9OMh//TzIf/08yH/9PMh//TzIf - /08yH/9PMh//TzIf/08yH/9RNCL/WkAu/3ZgUf+ml43/2tXR//j39v/+/v7//v7+//7+/v/+/v7//Pz8 - //v7+99PMh7gTzIf/08yH/9RNSL/wrex///////////////////////////////////////q5+X/Zk09 - /08yH/9QMh//TzIf/08yH/9PMh//TzIf/08yH/9PMh//TzIf/08yH/9PMh//TzIf/08yH/9PMh//TzIf - /08yH/9PMh7/TzIf/08yH/9PMh//TzIf/08yH/9PMh//TzIf/08yH/9PMh//TzIf/08yH/9PMh//TzIf - /1AyH/9PMh//TzIf/08yH/9PMh//TzIf/08yH/9PMh//TzIf/08yHv9QMh//TzIf/08yH/9PMh//UDIf - /1c7Kf+hkYf/8vHv//7+/v/+/v7//f39//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//z8/P/9/v3//v7+//7+/v/+/v7//f39//Tz8v/a1ND/tKef/499cP9zXE3/Ykg3 - /1k9K/9TNiP/UTMg/1AzIP9QMyD/UDMg/1AzIP9SNSL/Vzoo/15DMv9rUkP/hHBi/6WWjf/Mxb//7ero - //v7+//+/v7//v7+//7+/v/+/v7//Pz8//z8/P/7+/v/+/v7308yHuBQMx//UDMf/1I1Iv/Ct7H///// - /////////////////////////////////+vn5f9oTj3/UDIf/1AzH/9QMx//UDMf/1EzH/9QMx//UDMf - /1AzH/9RMx//UDIf/1AzH/9RMx//UDMf/1AzH/9QMx//UTMf/1AyH/9QMx//UDMf/1AzH/9QMx//UDMf - /1AyH/9QMx//UDMf/1AzH/9RMx//UDMf/1AzH/9QMx//UDMf/1AyH/9QMx//UDMf/1AyH/9QMx//UDIf - /1AzH/9QMx//UDIf/1AzH/9QMx//UDMf/1AzH/9YPCn/opKI//Px7//+/v7//v7+//39/f/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//9/f3//f39 - //7+/v/+/v7//v7+//7+/v/9/f3/+Pb2/+3q6P/c1tL/y8K8/7qvp/+snpX/pZaM/6KSiP+klIr/qZqR - /7SooP/Fu7X/1c7J/+fj4f/08/H//Pv7//7+/v/+/v7//v7+//7+/v/9/f3//f39//z8/P/7+/v/+/v7 - //v7+//7+/vfUDMe4FEzH/9RMx//UzYi/8K4sf//////////////////////////////////////6+fl - /2hOPf9RMx//UTMf/1EzH/9RMx//UTMf/1EzH/9RMx//UTMf/1EzH/9RMx//UTMf/1EzH/9RMx//UTMf - /1EzH/9RMx//UTMf/1EzH/9RMx//UTMf/1EzH/9RMx//UTMf/1EzH/9RMx//UTMf/1EzH/9RMx//UTMf - /1EzH/9RMx//UTMf/1EzH/9RMx//UTMf/1EzH/9RMx//UTMf/1EzH/9RMx//UTMf/1EzH/9RMx//WTwp - /6KSh//z8O///v7+//7+/v/9/v3/+/z7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8//39/f/+/v7//v7+//7+/v/+/v7//v7+ - //7+/v/+/v7//f39//z8/P/7+/r/+/r6//v7+v/8+/v//f39//7+/v/+/v7//v7+//7+/v/+/v7//v7+ - //7+/v/9/f3//f39//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+99RMx7gUTMf/1IzH/9UNiL/wrix - ///////////////////////////////////////r5+X/aE49/1IzH/9SMx//UjQf/1I0H/9SMx//UjMf - /1EzH/9SMx//UjQf/1IzH/9SMx//UjMf/1IzH/9SNB//UjQf/1IzH/9RNB//UTMf/1IzH/9RMx//UjMf - /1IzH/9SMx//UjQf/1E0H/9SMx//UjMf/1IzH/9SMx//UTMf/1EzH/9RMx//UTMf/1EzH/9SNB//UjMf - /1IzH/9RMx//UTQf/1E0H/9RMx//UTMf/1o9Kf+ikoj/8/Hv//7+/v/+/v7//f39//v8+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//8/Pz//f39//39/f/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+ - //7+/v/+/v7//v7+//7+/v/+/v7//v7+//39/f/8/Pz//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v731M0HuBTNB//UzQf/1U3Iv/DuLH///////////////////////////////////// - /+vn5f9qTz3/UzQf/1M0H/9TNB//UzQf/1I0H/9TNB//UzQf/1M0H/9SNB//UzQf/1M0H/9TNB//UzQf - /1I0H/9SNB//UjQf/1M0H/9TNB//UzQf/1M0H/9TNB//UzQf/1M0H/9TNB//UzQf/1I0H/9TNB//UzQf - /1M0H/9TNB//UzQf/1M0H/9TNB//UzQf/1M0H/9SNB//UzQf/1M0H/9SNB//UzQf/1M0H/9aPSn/o5OI - //Px7//+/v7//v7+//39/f/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //z8/P/8/Pz//Pz8//39/f/9/f3//f39//39/f/9/f3//f39//39/f/8/Pz//Pz8//z8/P/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/vfUzQf4FM1H/9UNR//VTgi - /8O4sf//////////////////////////////////////6+fl/2pPPf9TNB//UzUf/1M1H/9TNR//UzUf - /1M0H/9TNB//UzQf/1M0H/9TNSD/VDUf/1M1H/9TNR//UzQf/1M0H/9TNR//UzQf/1M0H/9UNB//UzQf - /1M1H/9UNB//UzQf/1M0H/9TNB//VDQf/1M0H/9UNB//UzUf/1M1H/9TNR//UzQf/1M0H/9TNB//UzUf - /1M1H/9TNB//VDUf/1Q1H/9UNB//VTUh/5F+cP/y8O///v7+//7+/v/9/v3/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+99UNR/gVDUf/1Q1H/9XOCL/w7ix//////////////////////////////// - ///////r5+X/a1A9/1Q1H/9UNR//VDUf/1Q1IP9UNR//VDUf/1Q1H/9UNR//VDUf/1Q1IP9UNR//VDUf - /1Q1H/9UNR//VDUf/1Q1H/9UNR//VDUg/1Q1H/9UNR//VDUf/1Q1H/9UNR//VDUf/1Q1IP9UNSD/VDUf - /1Q1H/9UNR//VDUf/1Q1H/9UNR//VDUf/1Q1H/9UNR//VDUf/1Q1H/9UNR//VDUf/1Q1IP9XOCT/rp+U - //39/f/+/v7//v7+//z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v731U1H+BVNSD/VTUf - /1c4I//EubH//////////////////////////////////////+vn5f9sUD3/VTYg/1U1H/9VNh//VTUg - /1U1H/9VNh//VTUg/1U1H/9VNSD/VTYg/1U2IP9VNh//VTYf/1U1H/9VNR//VTYf/1U2H/9VNR//VTUf - /1U2H/9VNiD/VTYg/1U2H/9VNR//VTUf/1U1IP9VNSD/VTUf/1U2H/9VNh//VTUf/1U1IP9VNR//VTYg - /1U1H/9VNh//VTYf/1U2H/9VNR//VTYf/1U2IP98Y1L/6OPg//7+/v/+/v7//f39//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/vfVTUf4FY2IP9WNiD/WDki/8S5sf////////////////////////// - ////////////6+fl/2xRPf9WNiD/VjYf/1Y2H/9WNh//VjYg/1Y2IP9WNiD/VjYf/1Y2H/9WNiD/VjYg - /1Y2IP9WNiD/VjYg/1Y2IP9WNiD/VjYf/1Y2H/9WNh//VjYg/1Y2IP9WNiD/VjYg/1Y2IP9WNiD/VTYg - /1Y2IP9WNiD/VjYg/1Y2H/9WNh//VjYg/1U2H/9WNiD/VjYf/1U2H/9VNiD/VjYg/1Y2H/9WNh//VjYf - /1k6JP+gjoH/9vXz//7+/v/+/v7//P38//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+99WNh/gVjYg - /1Y2IP9ZOSP/xLmx///////////////////////////////////////r5+X/bVE+/1Y2H/9WNh//VjYg - /1Y2IP9WNiD/VjYg/1Y2IP9XNiD/VzYf/1Y2IP9WNiD/VzYg/1Y3IP9WNyD/VjYg/1c2IP9XNh//VjYf - /1Y2H/9XNyD/VzYg/1c3IP9XNyD/Vzcg/1Y3IP9WNiD/VzYg/1c2IP9XNyD/VjYf/1Y2H/9XNiD/VzYg - /1c2IP9XNh//VzYg/1Y3IP9XNyD/Vzcg/1c2IP9WNx//Vzcg/2JEL//Bta3//Pv7//7+/v/+/v7//Pz8 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v731c2H+BXNyD/WDcg/1o6I//EubH///////////////////// - /////////////////+vo5f9tUj3/Vzcg/1c3H/9XNx//Vzcg/1c3IP9XNyD/Vzcg/1c3IP9XNyD/Vzcg - /1c3IP9XNyD/Vzcg/1c3IP9XNyD/WDcg/1c3IP9XNyD/Vzcg/1c3IP9XNyD/WDcg/1g3IP9YNyD/WDcg - /1c3IP9XNyD/Vzcg/1c3IP9XNyD/Vzcg/1g3IP9YNyD/WDcg/1g3IP9YNyD/Vzcg/1c3IP9XNyD/Vzcg - /1c3IP9XNyD/Vzcg/3JXQ//Y0cv//v39//7+/v/9/f3//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/vfVzYf - 4Fg3IP9ZNyD/Wzoj/8W5sf//////////////////////////////////////6+jl/25SPf9YNyD/WDcg - /1g3IP9YOCD/WDcg/1g3H/9YNyD/WTcg/1k3IP9ZNyD/WDcg/1g3IP9YNyD/WDcg/1g3IP9ZNyD/WTgg - /1g4IP9YNyD/WDcg/1g3IP9YOCD/WDgg/1k3IP9ZNyD/WDcg/1k3IP9YNyD/WDcg/1g3IP9YNyD/WDgg - /1g3IP9YOCD/WDcg/1g3IP9YNyD/WDcg/1g3IP9YNyD/WDcg/1g3IP9YNyD/WTkh/4VtW//o4+D//v7+ - //7+/v/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+99YNx/gWTgg/1k4IP9bOyP/xbmx//////////////// - ///////////////////////s6OX/b1I+/1k4IP9ZNyD/WTgg/1k4IP9ZOCD/WTgg/1k4IP9ZOCD/WTgg - /1k4IP9ZOCD/WTcg/1k4IP9ZOCD/WTgg/1k4IP9ZOCD/WTgg/1k4IP9ZOCD/WTgg/1k4IP9ZOCD/WTgg - /1k4IP9ZOCD/WTgg/1k4IP9ZOCD/WTgg/1k4IP9ZOCD/WTgg/1k4IP9ZOCD/WTgg/1k4IP9ZOCD/WTgg - /1k4IP9ZOCD/WTgg/1k4IP9ZOCD/XDsk/5iDdP/w7ev//v7+//7+/v/9/f3/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - 31k3H+BaOCD/Wjgg/1w7I//FurH//////////////////////////////////////+zo5f9wUj7/Wjgg - /1o4IP9aOCD/Wjgg/1o4IP9aOCD/WTgg/1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg/1o4IP9ZOCD/Wjgg - /1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg - /1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg/1o4IP9aOCD/YD8n - /6eVif/29PP//v7+//7+/v/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/vfWzgf4Fs5IP9bOSD/XTwj/8W6sf////////// - ////////////////////////////7Ojl/3FTPv9bOSD/Wzkg/1o5IP9bOSD/Wzkg/1s5IP9aOSD/Wzkg - /1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg - /1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg - /1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg/1s5IP9bOSD/ZUUu/7Slmf/49/b//v7+//7+/v/9/f3/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+99cOB/gXDkg/1w5IP9ePCT/xrqx///////////////////////////////////////s6OX/cVQ+ - /1w5IP9cOiD/XDkg/1w5IP9cOiD/XDog/1w6IP9cOSD/XDog/1w5IP9cOiD/XDkg/1s5IP9cOSD/XDkg - /1w5IP9bOSD/XDkg/1w5IP9bOSD/Wzkg/1w5IP9cOSD/XDkg/1w5IP9cOSD/Wzkg/1s5IP9bOSD/Wzkg - /1s6IP9cOSD/XDkg/1w5IP9cOSD/Wzkh/1s6IP9cOSD/XDkg/1w6IP9cOSD/XDog/1w5IP9cOSD/XDkg - /1w5IP9cOSD/aUoy/7yuo//5+Pf//v7+//7+/v/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/8/Pz//Pv7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v731w4H+BcOiD/XDoh/149I//GurH///// - /////////////////////////////////+zo5f9yVD7/XDog/1w6IP9cOSD/XDog/106IP9cOiD/XDog - /1w6IP9cOiD/XTog/1w6IP9dOiD/XTog/106IP9cOiD/XDog/106IP9cOiD/XDog/1w6IP9cOiD/XTog - /1w6IP9cOiD/XDog/1w6IP9cOiD/XToh/106IP9dOiD/XTog/106IP9cOiD/XDog/1w6IP9dOiD/XDoh - /1w6IP9cOiD/XDog/1w6IP9cOiD/XTog/106IP9cOiD/XDog/1w6IP9dOiD/bE02/7+yp//5+Pj//v7+ - //7+/v/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz//v7+ - //7+/v/+/v7//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/vfXTsh4F07IP9eOyD/Xz0j/8e6sf//////////////////////////////////////7Ojl - /3NVPv9dOiD/XTsg/107IP9dOiD/Xjog/106IP9eOiH/XTsh/147If9dOyH/XTog/107IP9dOiD/Xjoh - /107IP9eOyD/Xjoh/146If9dOiD/Xjog/146IP9dOiD/Xjsh/146If9dOiD/Xjsg/146If9eOiD/XTsg - /107IP9dOyD/XTog/107IP9dOyD/XTsg/147IP9eOyD/XTog/146If9eOyH/Xjsh/106If9eOyD/Xjog - /147IP9eOyH/XTsh/107If9dOyD/bU42/76wpv/5+Pf//v7+//7+/v/9/f3//Pz8//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v//P38//7+/v/+/v7//v7+//7+/v/+/v7//f39//z8/P/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+99eOyHgXjsg/147IP9gPiT/x7ux - ///////////////////////////////////////s6OX/c1U+/147IP9eOyH/Xjsh/147IP9eOyD/Xjsg - /147IP9eOyH/Xjsh/147If9fOyH/Xjsh/147If9eOyD/Xjsg/147If9eOyD/Xjsg/147IP9eOyD/Xjsg - /147IP9eOyH/Xjsh/147If9fOyD/Xjsg/147If9eOyD/Xjsg/147If9eOyH/Xjsg/147If9eOyD/Xjsg - /147IP9eOyH/Xjsh/147If9eOyH/Xjsg/147IP9eOyH/Xjsh/147If9eOyH/Xjsh/147IP9fOyH/bU02 - /7ytov/49/b//v7+//7+/v/+/v7/+/z7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/+/v7//v7+ - //38/P/z8O//+/r5//7+/v/+/v7//v7+//39/f/8/Pz//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v73147IeBfOyH/Xzwh/2E+JP/Hu7H///////////////////////////////////// - /+zo5f90VT7/Xzsh/188If9fPCH/Xzwh/188If9fOyH/Xzsh/187If9fOyH/Xzwg/188If9fOyD/Xzsh - /187IP9fPCD/Xzwh/188IP9fPCH/Xzsg/188IP9fOyD/Xzsg/187IP9fOyH/Xzsh/187IP9fOyH/Xzsh - /187If9fOyH/Xzsh/187If9fOyD/Xzsg/187IP9fOyH/Xzsg/187IP9fPCH/Xzwh/187If9fOyH/Xzsh - /187If9fOyH/Xzwh/187IP9fOyH/Xzsg/188If9fPCH/bEsy/7SkmP/18/H//v7+//7+/v/+/v7//Pz8 - //v7+//7+/v/+/v7//v7+//8/Pz//v7+//7+/v/9/fz/29PN/492ZP+0o5b/6eXh//z8/P/+/v7//v7+ - //7+/v/+/v7//f39//z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/8/PzfYDwh4GA8If9gPCH/Yj8k - /8e7sf//////////////////////////////////////7Ojl/3VWPv9gPCH/YDwh/2A8If9gPCH/YDwh - /2A8If9gPCH/YDwh/2A8If9gPCH/YDwh/2A8IP9gPCH/YDwg/2A8If9gPCH/YDwh/2A8If9gPCH/YDwh - /2A8If9gPCH/YDwh/2A8If9gPCH/YDwh/2A8If9gPCD/YDwg/2A8If9gPCH/YDwh/2A8If9gPCH/YDwh - /2A8If9gPCD/YDwg/2A8IP9gPCH/YDwh/2A8If9gPCH/YDwh/2A8If9gPCH/YDwh/2A8If9gPCH/YDwh - /2A8If9gPCD/aUct/6aSg//v6+j//v7+//7+/v/+/v7//f39//v7+//7+/v//P38//7+/v/+/v7//f39 - /9vTzf+CZVD/YT0i/2RBJ/+BZU//uqqe/+rl4v/8+/v//v7+//7+/v/+/v7//v7+//39/f/8/Pz//Pz8 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //z8/P/9/f3//v7+//39/d9gPCHgYTwh/2E9If9jPyT/yLux//////////////////////////////// - ///////s6OX/dlY+/2E8If9hPCH/YTwh/2E8If9hPSH/YT0h/2E8If9hPCH/YTwh/2E8If9hPSH/YT0h - /2E9If9hPCH/YTwh/2E9If9hPSH/YT0h/2E9If9hPSH/YT0h/2E9If9hPSH/YTwh/2E8If9hPSH/YT0h - /2E9If9hPCH/YT0h/2E8If9hPCH/YT0h/2E9If9hPSH/YT0h/2E9If9hPSH/YT0h/2E9If9hPCH/YT0h - /2E9If9hPSH/YTwh/2E8If9hPSH/YT0h/2E9If9hPSH/YT0h/2E9If9hPCH/ZkIo/5mBb//n4d3//f39 - //7+/v/+/v7//f39//z9/P/+/v7//v7+//39/P/c083/gmVQ/2I+Iv9hPSH/YTwh/2E8If9nQyn/gWRO - /7Sjlv/i29b/+Pf2//7+/f/+/v7//v7+//7+/v/+/v7//f39//39/f/8/Pz/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//8/Pz//f39//39/f/9/f3//v7+//7+/v/+/v7//f3932E8IeBhPSH/YT0h - /2RAJP/Iu7H//////////////////////////////////////+3o5f93Vz7/Yj0h/2I9If9hPSH/YT0h - /2I9If9iPSH/Yj0h/2I9If9hPSH/Yj0h/2E9If9hPSH/YT0h/2I9If9iPSH/YT0h/2E9If9hPSH/YT0h - /2E9If9iPSH/Yj0h/2I9If9iPSH/Yj0h/2I9If9hPSH/YT0h/2I9If9iPSH/Yj0h/2E9If9iPSH/Yj0h - /2I9If9hPSH/Yj0h/2I9If9iPSH/YT0h/2I9If9iPSH/Yj0h/2I9If9iPSH/Yj0h/2I9If9iPSH/YT0h - /2I9If9iPSH/Yj0h/2E9If9iPSH/ZEAl/4dsVv/Vy8T/+/v6//7+/v/+/v7//v7+//7+/v/9/Pz/3NTO - /4NmUP9jPiL/Yj0h/2I9If9iPSH/YT0h/2I9If9iPSH/ZUEm/3hYP/+hi3r/0Ma9/+/r6P/7+vr//v7+ - //7+/v/+/v7//v7+//7+/v/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8//7+/v/+/v7//v7+ - //7+/v/+/v7//f39//Xz8f/i29XfYz0h4GM+If9jPSH/ZUAk/8i7sf////////////////////////// - ////////////7ejl/3hYP/9iPiH/Yz4h/2M9If9jPSH/Yz4h/2M9If9jPSH/Yz4h/2M+If9jPSH/Yz0h - /2M9If9jPiH/Yz4h/2M+If9jPiH/Yj4h/2M+If9jPiH/Yz4h/2M+If9jPiH/Yz4h/2M9If9jPSH/Yz0h - /2M+If9jPiH/Yz0h/2M+If9jPiH/Yz4h/2M+If9jPiH/Yz4h/2M+If9jPiH/Yz4h/2M+If9jPiH/Yz4h - /2M+If9jPiH/Yz4h/2M+If9jPiH/Yz4h/2M+If9iPiH/Yz0h/2M9If9jPSH/Yz0h/2M+If9jPiH/Yz4i - /3hYP/+9rqL/9PLw//7+/v/+/v7//f39/9vTzP+EZk//Yz8i/2M+If9jPiH/Yz4h/2M+If9iPiH/Yz4h - /2M+If9jPiH/Yz0h/2Q/Iv9tSi//hmlT/6uXif/Sx7//7enm//r5+P/+/v7//v7+//7+/v/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//9/f3//v7+//7+/v/9/Pz/8/Du/97W0f+6q57/k3ll/3ZVPN9kPiHgZD4h - /2Q+If9mQST/ybyx///////////////////////////////////////t6OX/eVg//2Q+If9kPiH/ZD4h - /2Q+If9kPiH/ZD4h/2Q+If9kPiH/ZD4h/2Q+If9kPiH/ZD4i/2Q+If9kPiH/ZD4h/2Q+If9jPiH/ZD4h - /2Q+If9kPiH/ZD4h/2Q+If9kPiH/ZD4h/2Q+If9kPiH/ZD4h/2Q+If9jPiH/ZD8h/2Q+If9kPiH/ZD4h - /2Q/If9kPyH/ZD4h/2Q+If9kPiH/ZD4h/2Q+If9kPiH/ZD4h/2Q+If9kPyH/ZD4h/2Q+If9kPiH/ZD4h - /2Q+If9kPiH/ZD4h/2Q+If9kPiH/ZD8h/2Q+If9kPiH/ZD4h/2xILf+fiHb/4tzX//j29f/Z0Mn/hGZP - /2VAIv9kPiH/ZD8h/2Q/If9kPyH/ZD4h/2M+If9kPiH/ZD4h/2Q+If9kPiH/ZD4h/2Q/If9kPiH/ZUAj - /25LMP+CZE3/uKaZ//r4+P/+/v7//v7+//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//39/f/+/v7//v39 - /9nPyP+Oc17/dFM5/2hDJ/9kPiH/ZD0h32U+IeBlPyH/ZT8h/2dCJP/JvLL///////////////////// - /////////////////+3o5f95WT//ZT8h/2U/If9lPyH/ZT8h/2Q/If9lPyH/ZT8h/2U/If9lPyH/ZT8h - /2U/If9lPyL/ZD8h/2Q/If9kPyH/ZT8h/2Q/If9lPyH/ZT8h/2U/Iv9lPyH/ZT8i/2U/If9lPyH/ZT8i - /2U/Iv9lPyH/ZT8h/2U/If9lPyH/ZT8h/2U/If9lPyH/ZT8h/2U/If9lPyH/ZT8h/2U/If9lPyH/ZT8i - /2U/If9lPyH/ZT8h/2U/If9lPyH/ZT4h/2U/If9kPyL/ZT8h/2U/If9lPyH/ZT8h/2U/If9lPyH/ZT8h - /2U/If9lPyH/ZT8h/2dBJP9+XkX/mH5q/3paQP9mQCL/ZT8h/2U/If9lPyH/ZT8h/2U/If9lPiH/ZT4h - /2U/If9lPyH/ZT8h/2U/If9lPyH/ZT8h/2Q/If9kPyH/ZT8h/2U/If+Ve2f/9vXz//7+/v/+/v7/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v//f39//7+/v/9/f3/w7Wp/2lEJ/9lPyH/ZT8h/2U/If9kPiHfZj8i - 4GY/If9mPyH/aEIk/8q8sf//////////////////////////////////////7ejl/3pZP/9mQCL/ZkAh - /2Y/If9mQCH/ZkAi/2ZAIv9mPyH/Zj8h/2ZAIf9mPyH/Zj8i/2ZAIf9mPyH/Zj8h/2Y/If9mPyH/Zj8h - /2Y/If9lPyH/ZT8h/2Y/If9mPyL/ZkAh/2Y/If9mPyL/Zj8h/2Y/Iv9mPyH/Zj8i/2Y/Iv9mPyH/ZkAh - /2ZAIv9mQCH/ZkAi/2Y/Iv9mPyH/Zj8h/2Y/If9mPyL/ZkAi/2Y/Iv9mQCH/Zj8h/2Y/If9mPyH/ZkAi - /2ZAIv9mPyL/ZT8h/2Y/If9mPyH/Zj8h/2Y/If9mQCH/Zj8h/2ZAIf9mPyH/Zj8h/2ZAIf9mQCL/ZkAh - /2Y/If9mPyH/Zj8i/2Y/If9mPyH/Zj8h/2Y/If9mPyH/Zj8h/2Y/Iv9mPyH/ZkAi/2ZAIf9mPyH/Zj8h - /2Y/If9mPyH/ZkAh/5V7Z//39fP//v7+//7+/v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//9/f3//v7+ - //39/f/Etan/akUo/2Y/Iv9mPyH/Zj8h/2U+Id9nQCLgZ0Ai/2dAIv9pQyX/yryy//////////////// - ///////////////////////t6eX/e1o//2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ah - /2dAIf9nQCL/Z0Ai/2dAIf9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai - /2dAIv9nQCH/Z0Ai/2dAIv9nQCH/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIv9nQSL/Z0Ai - /2dAIv9nQCH/Z0Ah/2dAIv9nQCH/Z0Ai/2dAIf9nQCL/Z0Ah/2dAIv9nQCL/Z0Ai/2dAIf9nQCH/Z0Ai - /2dAIv9nQCL/Z0Ai/2dAIf9nQCH/Z0Ai/2dAIv9nQSL/Z0Ah/2dAIv9nQCH/Z0Ai/2dAIv9nQCL/Z0Eh - /2dAIv9nQCH/Z0Ah/2dAIv9nQCL/Z0Ah/2dAIf9nQCL/Z0Ai/2dAIf9nQCH/l3xn//f18//+/v7//v7+ - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//39/f/+/v7//f39/8S1qf9rRSj/Z0Ah/2dAIv9nQCH/ZkEh - 32hAIuBoQSL/aEEh/2pDJf/KvbL//////////////////////////////////////+3p5f98Wj//aEAh - /2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEh/2hBIf9oQSL/aEEh - /2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEh/2hBIv9oQSL/aEEi/2hBIv9oQSL/aUEi/2lBIv9oQSL/aEEi - /2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi/2hBIv9oQSH/aEEi/2hBIf9oQSH/aEEi - /2hBIv9oQSH/aEAh/2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi/2hBIf9oQSL/aEEi - /2hBIf9oQSL/aEEi/2hBIv9pQSL/aEEi/2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi/2hBIv9oQSH/aEEh - /2hBIv9oQSL/aEEi/2hBIv+XfGf/9/Xz//7+/v/+/v7/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39 - //7+/v/9/f3/xLaq/2xGKP9oQSH/aEEi/2hBIv9oQSHfaEAi4GlBIv9pQSL/a0Ql/8u9sv////////// - ////////////////////////////7enl/31bP/9pQSL/aUIi/2lBIv9pQSL/aUIi/2lBIv9pQiL/aUIi - /2lBIv9pQSL/aUEi/2lBIv9pQiL/aUIi/2lCIv9pQSL/aUEi/2lBIv9pQiL/aUIi/2lCIf9pQSL/aUEi - /2lCIv9pQSL/aUEi/2lBIv9pQSL/aUEi/2lBIv9pQiL/aUEi/2lBIv9pQSL/aUEi/2lBIv9pQSL/aUEi - /2lCIv9pQSL/aUEi/2lBIv9pQSL/aUEi/2lBIv9pQSL/aUEi/2lCIv9pQSL/aUEi/2lBIv9pQSL/aUIi - /2lBIv9pQSL/aUEi/2lBIv9pQiL/aUEi/2lCIv9pQiL/aUEh/2lBIv9pQSL/aUEi/2lBIv9pQSL/aUEi - /2lBIv9pQSL/aUEi/2lBIv9pQSL/aUEi/2lBIv9pQSH/aUEh/2lBIv9pQSL/aUEi/5h9Z//39fP//v7+ - //7+/v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//9/f3//v7+//39/f/Ftqr/bUYo/2lCIv9pQSL/aUEi - /2lBId9rQiLgakIi/2pCIv9tRSX/y72y///////////////////////////////////////u6eX/fls/ - /2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/2pCIv9qQiL/a0Ii/2tCIv9rQiL/akIi/2pCIv9qQiL/a0Ii - /2pCIv9rQiL/a0Ii/2tCIv9qQiL/akIi/2pCIv9qQiL/a0Ii/2tCIv9qQiL/akIi/2pCIv9qQiL/akIi - /2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/2tCIv9qQiL/akIi/2pCIv9qQiL/a0Ii - /2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/2pCIv9qQiL/akMi/2tCIv9rQiL/akIi/2pCIv9qQiL/akIi - /2tCIv9qQiL/akIi/2tCIv9qQiL/akIi/2pCIv9qQiL/akIi/2pDIv9qQiL/akIi/2pCIv9qQiL/akIi - /2pCIv9qQiL/akIi/2pCIv9rQiL/mX1n//f18//+/v7//v7+//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //39/f/+/v7//f39/8W2qv9uRyj/a0Ii/2tCIv9qQiL/akIi32tDIuBrQyL/a0Mi/21GJf/LvbL///// - /////////////////////////////////+7p5f9/XD//a0Mi/2xDIv9sQyL/a0Mi/2xDIv9sQyL/a0Mi - /2tDIv9rQyL/bEMi/2xDIv9rQyL/a0Ii/2tDIv9rQyL/bEMi/2xDIv9sQyL/bEMi/2tCIv9rQyL/bEMi - /2xDIv9sQyL/a0Mi/2tDIv9rQyL/bEMi/2xDIv9sQyL/a0Mi/2tDIv9rQyL/a0Mi/2tDIv9sQyL/bEMi - /2tDIv9sQyL/bEMi/2xDIv9sQyL/a0Mi/2xCIv9sQyL/bEMi/2xDIv9rQyL/a0Mi/2xDIv9rQiL/a0Mi - /2tDIv9rQyL/bEMi/2xDIv9sQyL/bEMi/2tDIv9rQyL/a0Mi/2xDIv9rQyL/a0Mi/2tDIv9sQyL/bEMi - /2xDIv9rQiL/bEMi/2tDIv9rQyL/a0Mi/2tDIv9rQyL/a0Mi/2xDIv9sQyL/a0Mi/2tDIv+Zfmf/9/Xz - //7+/v/+/v7//Pz8//z8/P/7/Pv/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/8/Pz//f39//7+/v/9/f3/xraq/3BIKP9rQyL/a0Mi - /2xDIv9sQyLfbEMi4GxDIv9sQyL/bkYl/8y9sv//////////////////////////////////////7unl - /4BcP/9sQyL/bEMi/2xDIv9sRCL/bEMi/2xDIv9sQyL/bEMi/2xDIv9sQyL/bEMi/2xEIv9tQyL/bEMi - /2xDIv9sQyL/bUMi/2xDIv9sRCL/bEMi/2xDIv9sRCL/bEQi/2xDIv9sQyL/bEMi/2xDIv9tQyL/bUMi - /2xDIv9tQyL/bUMi/21DIv9tQyL/bEMi/2xDIv9sQyL/bEQi/21DIv9sQyL/bEMi/2xDIv9sQyL/bUMi - /21DIv9tQyL/bUMi/21DIv9sQyL/bEMi/2xDIv9sQyL/bEMi/21EIv9sRCL/bEMi/2xDIv9tQyL/bEMi - /2xDIv9sQyL/bEMi/2xDIv9sQyL/bEMi/2xDIv9tQyL/bUMi/2xDIv9tQyL/bEMi/2xDIv9tQyL/bEMi - /2xDIv9sQyL/bUMi/21DIv9sQyL/bEMi/5p9Z//39fP//v7+//7+/v/+/v7//v7+//7+/v/+/v7//f39 - //39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+/v7//v7+ - //7+/v/+/v7//v7+//39/f/Gtan/cEko/2xDIv9sQyL/bEMi/2xDIt9tRCLgbkQi/25EIv9vRyX/zL6y - ///////////////////////////////////////u6eX/gV1A/21EIv9uRCP/bkQi/25EIv9uRCL/bkQi - /21EI/9uRCL/bkQi/25EIv9uRCL/bkQi/25EIv9tRCL/bkQi/25EIv9uRCL/bkQj/21EIv9uRCL/bkQi - /25EIv9uRCP/bkQi/25EIv9tRCL/bkQi/25EIv9uRCL/bkQi/25EIv9uRCL/bkQi/25EIv9uRCL/bUQi - /21EIv9uRCL/bkQi/25EIv9uRCL/bkUi/25EI/9uRCL/bkQi/25EIv9tRCL/bkQi/25EIv9uRCL/bkQi - /21EI/9uRCL/bUQi/21EIv9tRCL/bkQi/21EIv9tRCL/bkQi/25EIv9uRCL/bkQi/25EIv9uRCL/bkQi - /25EIv9uRCL/bkQi/21EIv9tRCL/bkQi/25EIv9uRCL/bkQi/25EIv9uRCL/bkQi/21EIv9uRCP/iGZK - /+Td1//8+/v//f39//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+ - //7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//79/f/9/Pz/9fLw/6qSf/9vRiX/bkQi - /25EIv9uRCL/bUQi325EIuBvRCL/b0Qi/3FHJv/NvrL///////////////////////////////////// - /+7p5f+CXUD/b0Ui/25FI/9vRSL/b0Ui/29FIv9vRSP/bkUi/29FIv9vRCL/bkUi/25FIv9vRSL/b0Ui - /25FI/9uRSP/bkUj/25FI/9uRSP/b0Ui/29FIv9vRSP/b0Uj/29FI/9vRSP/b0Ui/25FIv9vRSL/b0Uj - /29FIv9uRSL/bkUj/29FI/9vRSL/b0Ui/25FI/9vRSP/bkUi/29EI/9vRCP/b0Qi/29EIv9vRSL/b0Ui - /29FIv9vRCP/bkUi/25FIv9vRSL/b0Ui/29FI/9uRSL/bkUi/25EIv9uRCP/b0Qi/29FIv9vRSL/b0Ui - /29EIv9vRSL/b0Uj/25EI/9uRSL/b0Qi/29EIv9vRSP/b0Uj/29FIv9uRCP/b0Qi/29EI/9vRSL/b0Ui - /29EI/9vRCP/b0Ui/29FIv9vRSL/b0Qi/25EI/9xSCX/jGtP/66Xg//FtKb/2M3D/+Xd1//u6ub/9vPx - //n49v/6+fn//Pv6//z8/P/9/f3//f39//79/f/9/f3//f39//38/P/8+/v/+/r5//r49//49vT/8e7r - /+ni3f/e1Mz/zb6y/7eikf+bfmb/dlAv/29FI/9vRSL/b0Qi/29FI/9uRCLfb0Uj4G9FI/9vRSP/cUgm - /82+sv//////////////////////////////////////7unl/4NeQP9vRSP/cEUj/29FI/9vRSL/b0Ui - /3BFI/9wRSP/cEUj/3BFI/9vRSL/cEUi/29FIv9wRSP/cEUj/29FI/9vRSP/cEUj/3BFI/9wRSL/b0Uj - /29FI/9vRSP/cEUj/3BFI/9wRSP/cEUi/3BFIv9vRSP/cEUj/3BFIv9vRSP/cEYj/29FI/9wRSP/b0Uj - /29FI/9wRSP/cEUj/3BFI/9vRSL/b0Ui/29FIv9vRSP/b0Ui/29FIv9wRSL/cEUi/3BFI/9wRSP/b0Uj - /3BFIv9wRSP/cEUj/29FI/9vRSP/b0Uj/3BFI/9vRSP/b0Uj/3BFI/9wRSP/cEUj/29FIv9wRSL/cEUi - /3BFI/9wRSL/b0Ui/3BFI/9vRSP/cEUj/29FI/9wRSP/cEUj/3BFI/9wRSP/cEUi/3BFIv9wRSL/b0Ui - /29FI/9wRiP/cUcl/3NKKP94UDD/gVw9/4pnSv+VdVz/ooZv/6yUf/+1n43/u6eX/8Ctn//DsqP/xLOl - /8SypP/Cr6H/vaqa/7eikf+wmYX/pYt1/5p8ZP+NbFH/hWBD/3xVNf91Syr/ckgm/3BGI/9wRSL/cEUj - /29FI/9wRSL/cEUi/3BEIt9wRiPgcUYj/3FGI/9ySCX/zb6y//////////////////////////////// - ///////u6eX/hF9A/3FGI/9xRiP/cEYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYi - /3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cEYj - /3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiL/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj - /3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj - /3FGI/9wRiP/cUYj/3FGI/9xRiP/cUYi/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiL/cUYi - /3FGI/9xRiP/cUYj/3FGIv9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj - /3FGI/9xRiP/cUck/3JHJP9yRyT/ckck/3JHJf9yRyX/ckcl/3FHJf9xRyT/cUck/3FHJP9xRyP/cUYj - /3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUUi33FGI+ByRyP/ckcj - /3NJJv/NvrL//////////////////////////////////////+7p5f+FX0D/ckYj/3JGI/9xRyP/ckcj - /3JHI/9yRyP/ckcj/3FHI/9yRiP/ckcj/3JGI/9yRiP/cUcj/3FHI/9yRyP/ckYj/3JHI/9yRyP/ckcj - /3JHI/9yRyP/ckYj/3JHI/9yRyP/ckYj/3JGI/9yRyP/ckcj/3JGI/9yRiP/ckYj/3JHI/9yRyP/ckcj - /3JHI/9yRyP/ckYj/3JHI/9yRiP/ckYj/3JGI/9yRyP/ckcj/3JGI/9yRiP/cUYj/3JGI/9yRyP/ckYj - /3JGI/9yRiP/ckcj/3JHI/9yRyP/ckYj/3JGI/9yRiP/ckYj/3JHI/9yRyP/ckci/3JGI/9yRiP/ckYj - /3JHI/9yRyP/ckYj/3JGI/9yRyP/ckcj/3JGI/9yRiP/ckcj/3JHI/9xRyP/cUYj/3FGI/9yRiP/ckcj - /3JGI/9yRiP/ckcj/3JHI/9yRyP/ckYj/3JHI/9yRyP/ckYj/3JHI/9yRyP/ckcj/3JGI/9yRiP/ckcj - /3JGI/9yRiP/ckYj/3JGI/9yRyP/ckcj/3JHI/9yRyL/ckcj/3JGI/9yRiP/ckYj/3JHI/9yRyP/ckYj - /3JHI/9yRiP/ckcj/3JHI/9yRSPfckYj4HNHI/9zRyP/dUkm/86/sv////////////////////////// - ////////////7+rl/4VgQP9zRyP/c0cj/3JHI/9zRyP/ckcj/3JHI/9zRyP/c0cj/3NHI/9yRyP/ckcj - /3NHI/9zRyP/c0cj/3NHI/9zRyP/ckcj/3JHI/9zRyP/c0cj/3NHI/9yRyP/c0cj/3NHI/9zRyP/c0cj - /3NHI/9zRyP/c0cj/3NHI/9zRyP/c0cj/3NHI/9yRyP/ckcj/3NHI/9zRyP/c0cj/3NHI/9zRyP/c0cj - /3NHI/9zRyP/c0cj/3NHI/9zRyP/c0cj/3NHI/9zRyP/c0cj/3NHI/9yRyP/c0cj/3NHI/9zRyP/c0cj - /3NHI/9zRyP/c0cj/3NHI/9zRyP/ckcj/3JHI/9zRyP/c0cj/3NHI/9zRyP/c0cj/3NHI/9yRyP/c0cj - /3NHI/9zRyP/c0cj/3JHI/9yRyP/c0cj/3NHI/9yRyP/c0cj/3NHI/9zRyP/c0cj/3NHI/9yRyP/c0cj - /3NHI/9yRyP/c0cj/3NHI/9zRyP/c0cj/3NHI/9zRyP/c0cj/3NHI/9zRyP/c0cj/3NHI/9zRyP/c0cj - /3NHI/9yRyP/c0cj/3NHI/9zRyP/c0cj/3JHI/9zRyP/c0cj/3NHI/9zRyP/c0cj/3JGI990RyPgdEgj - /3RII/92Sib/zr+y///////////////////////////////////////x7en/mHdc/4hjQ/+IYkP/iGJD - /4hjQ/+IYkP/iGJD/4hiQ/+IYkP/iGND/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD - /4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IY0P/iGJD/4hiQ/+IY0P/iGJD/4hiQ/+IYkP/iGJD - /4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IY0P/iGND/4hiQ/+IYkP/iGJD - /4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IY0P/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD - /4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGND/4hiQ/+IYkP/iGND/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD - /4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD - /4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGND - /4NcO/91SST/dEgj/3NHI/9zSCP/c0gj33VII+B1SCP/dUgj/3dLJv/Pv7L///////////////////// - //////////////////39/P/y7uv/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ovo//Ds6P/w7Oj/8Ozo - //Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w6+j/8Ovo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo - //Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo - //Ds6P/w7Oj/8Ovo//Ds6P/w7Oj/8Ozo//Ds6P/w6+j/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w6+j/8Ozo - //Ds6P/w6+j/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo - //Ds6P/w7Oj/8Ovo//Dr6P/w6+j/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo - //Dr6P/w6+j/8Ozo//Ds6P/w7Oj/8Ovo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo - //Ds6P/w6+j/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/0cK2/3pPK/91SCP/dUgj/3VII/90SCPfdUgj - 4HVJI/91SSP/d0sm/8+/sv////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ///////c0cf/fFEs/3VJI/92SSP/dkkj/3VJI992SSPgdkkj/3ZJI/94Syb/z7+y//////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////93RyP98USz/dkkj/3dJJP93SSP/dkkj - 33dJI+B4SiP/eEoj/3lMJv/QwLL///////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ////////////3dHH/31SLf94SiP/eEok/3hKI/94SiPfeEkj4HhKJP94SiT/ek0n/9DAsv////////// - /////////////f38/+3n4v/n39j/59/Y/+ff2P/p4tz/+vj3////////////9vPw/+jg2f/n39j/59/Y - /+ff2P/y7en///7+///////9/Pv/7Obg/+ff2P/n39j/59/Y/+rj3P/7+fj////////////18u//6ODZ - /+ff2P/n39j/59/Y//Pu6////v7///////z7+v/r5N//59/Y/+ff2P/n39j/6uPd//z7+v////////// - //Tx7v/o39n/59/Y/+ff2P/o39n/8+/r////////////+/r5/+vk3//n39j/59/Y/+ff2P/r5d///Pv6 - ////////////8+/r/+ff2P/n39j/59/Y/+ff2P/08O3////////////7+vn/6+Te/+ff2P/n39j/59/Y - /+zl4P/8+/r////////////y7ur/6N/Y/+ff2P/n39j/6ODZ//Xy7/////////////v5+P/q4tz/59/Y - /+ff2P/n39j/7Obg//38+////////v7+//Ht6f/n39j/59/Y/+ff2P/o4Nn/9vPw////////////+vj2 - /+ni2//n39j/59/Y/+ff2P/t5+L//v38///////////////////////d0cj/flIt/3lKJP95SiP/eEoj - /3hKI995SyPgeUsk/3lLI/97TSf/0MCy///////////////////////28/H/qIlw/4phPv+KYT//imE/ - /5ZyU//m3db////////+/v/TxLf/jGVD/4phPv+KYT7/imE//76olP/8+/v///////Tx7v+lhWr/imE+ - /4phP/+KYT//l3NV/+rj3P///////v39/8+9r/+NZUT/imE//4phPv+LYkD/wqya//38+///////8u3p - /6B+Yv+KYT//imE//4phP/+ad1n/8Ovm///////+/v3/y7qr/4xlQ/+KYT//imE//4xkQv/EsJ///v39 - ///////u6OP/nnxf/4phP/+KYT//imE//59+Yv/w6+b//////////v/Er57/i2NB/4phP/+KYT//jGRC - /8m2p//+/v7//////+3m4f+beFv/imE//4phP/+KYT//oYFl//Hs5////////v39/8Cql/+LY0H/imE/ - /4phP/+OZkT/0MCy//7+/v//////7OTe/5dzVP+KYT//imE//4phP/+igmb/9PHu///////7+vr/vaWS - /4tiQP+KYT//imE//49nRv/UxLj///7+///////l3NX/lG9P/4phP/+KYT//imE//6iJcP/39PP///// - /////////////////93SyP9/Uy3/eUsk/3pLI/95SyP/eUsj33lLJOB7TCT/ekwk/3xOJ//RwLL///// - //////////////////Xy7/+delz/e0sk/3tLJP97TCT/iV88/+LY0P////////7+/828rf99UCj/ekwk - /3pMJP97TCT/tpyH//z7+v//////8/Ds/5l1V/96TCT/ekwk/3pMJP+JYD3/59/X///////+/f3/yLSk - /35QKv96TCT/e0wk/3tNJf+5oYz//fz7///////w6+b/k21M/3pMJP97TCT/e0wj/4xkQv/u6OP///// - //7+/f/FsJ//flAp/3pMJP96TCT/fU8n/7ylkf/+/f3//////+zl3/+Qakj/e0wk/3pLJP96TCT/k21M - /+7o4//////////+/7ykkP98TSb/ekwk/3tMJP99Tyj/wq2b//7+/v//////6uPd/45mRP97TCT/e0wk - /3pMJP+VcFD/7+nk///////+/f3/t56J/3tNJv96TCT/ekwk/35RK//KuKj//v7+///////p4dr/imA9 - /3pLJP96TCT/ekwk/5ZxUf/z7+z///////v6+f+0moP/e00m/3tMJP97TCT/f1Is/869rv///v7///// - /+HXzv+GXDf/ekwk/3pMJP97TCT/nHlc//bz8f//////////////////////3dLI/4BTLf97TCT/eksk - /3pMJP96SyPfekwk4HtMJP97TCT/fU4n/9HAsv//////////////////////9fLv/516XP97TCT/e0wk - /3tMJP+KYDz/49jQ/////////v7/zryt/35QKf97TCT/e0wk/3tMJP+2nYb//Pv6///////08Oz/mnZX - /3tMJP97TCT/e0wk/4pgPf/n39f///////79/f/ItaT/f1Eq/3tMJP97TCT/fE0l/7qhjP/9/Pv///// - //Dr5v+TbU3/e0wk/3tNJP97TCT/jWRC/+7o4////////v79/8Wwn/9+UCn/e0wk/3tMJP99Tyf/vaWR - //79/f//////7OXf/5JqSf97TCT/e0wk/3tMJP+TbUz/7ujj//////////7/vKSQ/31OJ/97TCT/e0wk - /35QKP/DrZv//v7+///////q493/j2ZE/3tMJP97TCT/e0wk/5ZwUP/v6eT///////79/f+4non/fE4m - /3tMJP97TCT/f1Ir/8q4qP/+/v7//////+nh2v+KYD3/e0wk/3tMJP97TCT/l3FR//Tv7P//////+/r5 - /7Sag/98TSX/e0wk/3tMJP+AUyz/zr2u///+/v//////4tfP/4dcN/97TCT/e0wk/3tMJP+delz/9vPx - ///////////////////////e0sj/gVMt/3tMJP97TCT/e0wk/3tMJN98TCTgfEwk/3xMJP9+Tyf/0cGy - ///////////////////////18u//nnpc/3xMJP98TCT/fEwk/4pgPP/j2ND////////+/v/Ova3/f1Ap - /3xMJP98TCT/fE0k/7edh//8+/r///////Tw7P+adlf/fE0k/3xMJP98TCT/i2E9/+ff1////////v39 - /8m1pP+AUir/fEwk/3xMJP99TiX/uqGM//38+///////8Ovm/5RuTf98TST/fE0k/3xNJP+OZUL/7ujj - ///////+/v3/xbGf/39RKf98TCT/fEwk/35PJ/+9pZH//v39///////s5d//kmtJ/3xMJP98TCT/fE0k - /5RtTP/u6OP//////////v+9pJD/fk8n/3xMJP98TST/f1Ao/8Otm//+/v7//////+vj3f+PZ0T/fE0k - /3xNJP98TCT/lnBQ/+/p5P///////v39/7ifif99Tyb/fE0k/3xNJP+AUiv/y7io//7+/v//////6eHa - /4thPf98TCT/fEwk/3xNJP+XclH/9O/s///////7+vn/tZqD/31OJv98TST/fE0k/4FTLP/Ova7///7+ - ///////i18//iFw3/3xNJP98TCT/fEwk/556XP/39PH//////////////////////97SyP+BVC3/fEwk - /3xNJP98TST/fEwk331NJOB9TST/fU0k/39PJ//RwbL///////////////////////bz8P+mhmr/iFw3 - /4hcN/+IXDf/lW5N/+Xc1P////////7+/9PDtP+LYDv/iFw3/4hcN/+IXTf/vaWR//z7+v//////9fHu - /6OBZf+IXDf/iFw3/4hcN/+Wb07/6eLb///////+/f3/zrus/4thPf+IXDf/iFw3/4ldOP/AqZb//fz7 - ///////x7ej/nnpc/4hcN/+IXDf/iFw3/5hyUv/v6uX///////7+/f/LuKf/i2A8/4hcN/+IXDf/il86 - /8Stmv/+/f3//////+7n4v+ceFn/iFw3/4hcN/+IXTf/nnpb//Dq5f/////////+/8Otmf+KXjn/iFw3 - /4hcN/+KXzr/yLSj//7+/v//////7eXg/5p0VP+IXDf/iFw3/4hdN/+gfV//8Ovm///////+/f3/v6eT - /4leOf+IXDf/iFw3/4xiPf/Pvq///v7+///////r5N3/lm9O/4hcN/+IXDf/iF03/6F+YP/18O7///// - //v6+v+7o47/iV05/4hcN/+IXDf/jWM+/9PDtf///v7//////+Xb0/+Takn/iFw3/4hcN/+IXDf/poZq - //j18v//////////////////////3tLI/4JULf99TST/fU0k/31NJP98TSTffk0k4H5OJP99TST/f1An - /9LBsv///////////////////////fz7/+nh2f/h1s3/4dbN/+HWzf/k2tL/+fb0////////////9PDs - /+LXzv/h1s3/4dbN/+HWzP/u6OL//v7+///////8+/r/59/X/+HWzf/h1s3/4dbN/+Tb0v/6+Pb///// - ///////z7ur/4tfO/+HWzf/h1s3/4dbN/+/p5f///v7///////v6+f/m3dX/4dbN/+HWzf/h1s3/5dvT - //v6+f////////////Lt6f/i183/4dbN/+HWzf/h183/8Orm////////////+/n4/+bd1f/h1s3/4dbN - /+HWzf/n3dX/+/r5////////////8Orl/+HWzf/h1s3/4dbN/+LXzf/x7Of////////////6+ff/5dzU - /+HWzf/h1s3/4dbN/+fe1v/7+vn////////////v6eT/4dbN/+HWzf/h1s3/4tfN//Pu6v////////// - //r49v/k29L/4dbN/+HWzf/h1s3/597X//z7+v///////v7+/+7o4v/h1s3/4dbN/+HWzf/i187/9PDs - ////////////+Pb0/+Ta0f/h1s3/4dbN/+HWzf/p4Nn//fz8///////////////////////e0sj/g1Uu - /35OJP99TiT/fU4k/31NJN9+TiTgfk4k/39OJP+AUCf/0L+v//////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - /////////////////////////////////9zQxf+EVS3/fk4k/35OJP9+TiT/fk0k339OJOB/TiT/f04k - /4BQJv+5n4j/+/n4//////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ///////////////////////////////////////////////////////////////////////9/Pv/xa+c - /4JSKf9/TiT/f04k/39OJf9+TSTff04k4IBPJP+ATyX/gE8l/4xfOf/BqZT/39PI/+LXzv/i187/4tfO - /+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/j187/49fO - /+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/j187/4tfO - /+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/i187/4tfO - /+LXzv/i187/4tfO/+PXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/j187/4tfO/+LXzv/i187/4tfO - /+LXzv/i187/4tfO/+PXzv/j187/4tfO/+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/i187/4tfO - /+LXzv/i187/4tfO/+LXzv/i187/4tfO/+PXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/j187/49fO - /+LXzv/i187/4tfO/+LXzv/i187/4tfO/+PXzv/i187/49fO/+LXzv/i187/4tfO/+LXzv/i187/49fO - /+LXzv/i187/4tfO/+LXzv/i187/4NXL/8eyn/+QZkH/gE8l/4BPJP+ATyT/gE8k/4BOJN+ATiTggU8k - /4FPJf+BTyX/gU8l/4NTKf+HWC//iFgw/4hZMP+HWTD/h1kw/4hZMP+IWTH/h1kw/4hZMP+IWTD/h1kw - /4dZMP+IWTD/iFkw/4hZMP+IWTD/h1kx/4hZMP+HWTD/iFkw/4hZMP+IWDD/h1kw/4dZMP+HWTD/h1kw - /4dZMP+IWTD/iFgw/4dZMP+HWTD/iFkw/4hZMP+IWTD/iFkw/4hZMP+IWTD/iFkw/4dZMf+HWTH/h1kw - /4dZMP+HWTD/iFkw/4dZMP+HWTD/h1kx/4dZMP+IWTD/iFkw/4dYMf+IWDD/h1kw/4hZMP+IWTD/iFgw - /4hYMP+IWDD/iFkw/4hZMP+IWTD/iFkw/4hZMP+HWTD/h1kw/4dZMP+IWTD/iFkw/4hZMP+IWTD/h1kx - /4dYMP+HWTD/iFkw/4hZMP+IWTD/iFkw/4hZMP+IWTD/iFkw/4dZMP+HWTD/h1kw/4dZMP+HWTD/h1kw - /4hYMf+HWDD/h1kw/4hZMP+HWTD/iFkw/4dZMf+IWTD/h1gw/4hZMP+HWTD/h1kw/4hZMP+IWTD/iFkw - /4hYMP+IWTH/iFkw/4dZMP+HWTD/iFkw/4hZMP+IWTD/iFkw/4hZMP+IWTD/iFkw/4dZMP+HWTD/hFQq - /4FPJf+BTyT/gU8k/4BPJP+BTyT/gE4k34BPJOCBTyT/gVAl/4FQJf+BUCT/gVAk/4FQJf+BTyX/gVAk - /4FQJf+BUCX/gVAl/4FQJf+BUCX/gVAk/4FQJP+BUCX/gVAk/4FQJf+BUCX/gVAk/4FQJP+BUCX/gU8l - /4FQJf+BUCX/gVAl/4FPJf+BUCX/gVAl/4FQJf+BUCX/gVAl/4FQJP+BTyT/gVAk/4FQJP+BUCT/gVAl - /4FPJf+BTyX/gVAk/4FQJP+BUCX/gVAl/4FQJf+BTyX/gVAl/4FQJf+BUCX/gVAk/4FQJf+BUCT/gU8l - /4FPJP+CUCX/gU8l/4FPJP+BUCX/gVAk/4FPJf+BTyX/gU8k/4FPJP+BUCX/gU8l/4FQJP+BUCX/gVAl - /4FQJP+BTyT/gVAk/4FQJP+BUCT/gVAk/4FQJf+BUCX/gU8l/4FQJf+BUCT/gVAl/4FQJf+BUCX/gVAk - /4FQJf+BTyT/gVAk/4FQJP+BUCX/gVAk/4FQJf+BUCX/gU8l/4FPJP+BUCT/gVAl/4FQJf+BUCT/gU8l - /4FPJP+BTyX/gVAk/4FQJP+BUCX/gVAk/4FQJf+BUCT/gU8l/4FQJf+BUCX/gVAk/4FQJP+BTyX/gVAl - /4FQJf+BUCX/gVAl/4FQJf+BUCX/gVAl/4FQJf+BUCX/gVAk/4FQJf+BUCX/gU8k/4FQJf+BUCTfgU8l - 4IJQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJP+CUCT/glAl/4JQJf+CUCX/glAl/4JQJP+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJP+CUCX/glAl/4JQJP+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCT/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJP+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCT/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAk/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAk - /4JQJP+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAk/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJP+CUCX/glAl/4JQJN+BUCTgglAl/4NRJf+DUCX/g1Al/4JQJf+CUSX/glAl - /4JQJf+CUSX/glAl/4JQJf+CUCX/glAl/4JRJf+CUSX/glEl/4JRJf+CUSX/glAl/4JRJf+CUCX/glAk - /4JQJf+DUSX/g1Al/4JQJf+CUSX/glEl/4NQJf+CUCX/glAl/4JQJf+CUSX/glEl/4NQJf+CUCX/glAl - /4NQJf+CUCX/g1Al/4NQJf+CUCX/glAl/4NQJf+DUCX/glAl/4NQJf+DUSX/glAl/4NQJP+DUCX/g1Al - /4JQJf+DUSX/glAl/4JQJf+DUCX/g1Al/4JQJf+DUCX/glAl/4JQJf+CUCX/g1El/4NRJf+DUSX/g1El - /4JQJf+CUSX/g1El/4NRJf+DUSX/g1El/4JQJf+CUCX/g1Al/4NQJf+DUCX/glEl/4JRJf+CUCX/g1Al - /4NQJf+DUCX/glAl/4JQJf+CUCX/glAl/4NQJf+CUCX/glAl/4NQJf+DUCX/glAl/4JQJf+CUCX/glAl - /4NQJP+DUCX/glAl/4JQJf+DUSX/g1El/4JQJf+DUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/g1Al - /4NQJf+DUCX/glEl/4JQJf+DUCX/g1El/4JQJf+CUCX/glEl/4JRJf+DUCX/g1Al/4NQJf+DUSX/glAk - 34JQJOCDUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUCX/g1Al/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El - /4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1Al/4NRJf+DUSX/g1El - /4NRJf+DUCX/g1El/4NRJf+DUSX/g1El/4NQJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El - /4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El - /4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El - /4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El - /4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1Ek/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El - /4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1Ek - /4NRJf+DUSX/g1El/4NRJf+DUCX/g1El/4NRJf+DUSTfhFAk4IRRJf+DUSX/hFEl/4RRJf+EUSX/hFEl - /4RRJf+DUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+DUSX/hFEl - /4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4NRJf+EUSX/hFEl - /4RRJf+EUSX/g1El/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFIl/4RRJf+EUSX/hFEl/4RSJf+EUSX/hFEl - /4RRJf+EUSX/hFEl/4RRJf+EUSX/g1El/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUiX/hFEl - /4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+DUSX/g1El/4RRJf+EUSX/hFEl/4RRJf+DUSX/g1El - /4RRJf+EUSX/hFEl/4NRJf+EUSX/hFEl/4RRJf+DUSX/hFEl/4RRJf+DUSX/g1El/4RRJf+EUSX/hFEl - /4RRJf+EUSX/hFEl/4RRJf+EUSX/g1El/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl - /4NRJf+EUSX/hFEl/4RRJf+DUSX/hFEl/4RRJf+EUSX/hFEl/4NRJf+DUSX/g1El/4RRJf+EUiX/hFEl - /4NRJN+FUCXghFEl/4RSJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl - /4RRJf+EUSX/hFEl/4RSJf+EUSX/hFEl/4RSJf+EUiX/hFEl/4RSJf+EUiX/hFIl/4RSJf+EUSX/hFEl - /4RRJf+EUSX/hFIl/4RSJf+EUiX/hFEl/4RRJf+EUSX/hFEl/4RSJf+EUSX/hFEl/4RSJf+EUiX/hFIl - /4RRJf+EUSX/hFEl/4RRJf+EUiX/hFIl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFIl/4RRJf+EUSX/hFEl - /4RRJf+EUSX/hFEl/4RRJf+EUSX/hFIl/4RSJf+EUiX/hFIl/4RRJf+EUSX/hFEl/4RSJf+EUiX/hFIl - /4RRJf+EUSX/hFEl/4RRJf+EUiX/hFEl/4RRJf+EUSX/hVEl/4RRJf+EUSX/hFIl/4RRJf+EUSX/hFEl - /4RRJf+EUSX/hFEl/4RRJf+EUiX/hFEl/4RRJf+EUSX/hFIl/4RSJf+EUSX/hFEl/4RSJf+EUiX/hFEl - /4RSJf+EUSX/hFIl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl - /4RSJf+EUiX/hFIl/4RRJf+EUiX/hFIl/4RRJf+EUSX/hFEk34VRJeCEUiX/hFIl/4VRJf+EUiX/hFIl - /4VSJf+FUSX/hFIl/4RSJf+FUiX/hFIl/4VSJf+EUSX/hFEl/4RSJf+EUiX/hFIl/4VSJf+EUiX/hVIl - /4VRJf+FUSX/hVIl/4VSJf+EUiX/hFIl/4VSJf+FUiX/hVEl/4VSJf+FUiX/hFEl/4VSJf+FUiX/hVIl - /4RSJf+FUiX/hVIl/4RSJf+FUiX/hVIl/4VSJf+FUiX/hFIl/4RSJf+FUiX/hFIl/4RSJf+EUiX/hVIl - /4VSJf+FUiX/hFIl/4RSJf+FUiX/hVIl/4VSJf+EUiX/hVIl/4VSJf+EUiX/hFEl/4VSJf+FUiX/hFIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJf+EUiX/hVIl/4VSJf+FUiX/hVIl/4RSJf+EUSX/hFIl - /4RSJf+FUSX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+EUSX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4RSJf+FUiX/hFIl/4VSJf+FUSX/hFIl/4VSJf+FUiX/hVIl/4VSJf+FUSX/hVIl - /4VSJf+FUiX/hFIl/4RRJf+FUiX/hVEl/4VSJf+FUSX/hVEl/4VSJf+FUiX/hVEl/4VSJf+FUiX/hVEl - /4VRJf+EUSTfhVEl4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJN+FUSXghVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hFIk34VRJeCFUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+EUiTfhVEl4IVSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4RSJN+FUSXghVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hFIk34VRJeCFUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+EUiTfhVEl4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJN+FUSXghVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hFIk34VRJeCFUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+EUiTfhVEl - 4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJN+FUSXghVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hFIk - 34VRJeCFUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+EUiTfhVEl4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4RSJN+FUSXghVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hFEk34VRJeCFUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+EUSTfhVEl4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJN+FUSXghVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hFIk34VRJeCFUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+EUiTfhVEl4IVSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4RSJN+EUiZ/hVIkkYVSJJGFUiSRhVIkkYVQJJGFUiSRhVIkkYVSJJGFUiSRhVAk - kYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIk - kYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIk - kYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIk - kYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIk - kYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIk - kYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIk - kYVQJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIk - kYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhFImf/////////////// - //////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAA - AEAAAACAAAAAAQAgAAAAAAAAQgAAAAAAAAAAAAAAAAAAAAAAAEAoHNc/KB30Pygd9D8oHfQ/KB30Pygd - 9D8oHfQ/KB30Pygd9D8oHfQ/KB30Pygd9D8oHfQ/KB30Pygd9D8oHfQ/KB30Pygd9D8oHfQ/KB30Pygd - 9D8oHfQ/KB30Pygd9D8oHfQ/KB30Pygd9EEqHvSkmZT0/fz89Pv7+/T7+/v0+/v79Pv7+/T7+/v0+/v7 - 9Pv7+/T7+/v0+/v79Pv7+/T9/f304d3c9GBNQvQ/KB30Pygd9D8oHfQ/KB30Pygd9D8oHfQ/KB30Pygd - 9D8oHfQ/KB30Pygd9D8oHfQ/KB30Pygd9D8oHfQ/KB30Pygd9D8oHfQ/KB30Pygd9EAoHNY/KBzgQCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QSof/2taUP+Mfnf/jX94/41/eP+Rg3z/3NjW//39/f/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz/+vr5/5WIgv9CKx//QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKRzfPygc4EApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0w3LP/Pysf//Pv7//z8+//8/Pv//Pz8 - //39/f/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39/9vX1f9WQjf/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkc3z8oHOBAKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9bSD3/5+Tj - //39/f/8/Pz//Pz8//z8/P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8 - //39/f+jmJP/Qisf/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN8/KBzgQCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/a1lQ//Lx8P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//z8/P/z8vL/cWBX/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKRzfPygc - 4EApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/3trY//4+Pf//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//9/f3/39za/1VANv9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkc3z8oHOBAKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf+HeXH/+/v7//z8/P/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39/8rEwP9IMif/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN8/KBzgQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/j4F6 - //38/P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //39/f+6sq3/Qy0h/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKRzfPygc4EApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/5GEff/9/f3//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//+/v7/s6um/0IsIP9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkc - 3z8oHOBAKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf+Qgnv//f39//z8/P/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f79/7evqv9DLCD/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHN9AKBzgQSod/0EqHf9BKR3/QSkd/0EpHf9BKR3/QSkd/0EpHf9BKR3/QSkd - /0EpHf9BKR3/QSkd/0EqHf9BKR3/QSkd/0EqHf9BKR3/QSod/0EqHf9BKR3/inx0//v7+//8/Pz/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//39/f/Fvrr/RzAk - /0EpHf9BKR3/QSkd/0EpHf9BKR3/QSkd/0EqHf9BKh3/QCod/0EqHf9BKh3/QSod/0EqHf9BKR3/QSod - /0EqHf9BKR3/QSkd/0EqHf9BKh3/QSkd/0EpHf9BKRzfQiod4EIrHv9lUkj/joB5/5CDe/+Qg3v/kYN7 - /5CDe/+Rg3v/kYN7/5GDe/+Rg3v/kYN7/5GDe/+Rg3v/kYN7/5GDe/+Qg3v/kIN7/5CDe/9nVEr/Qiod - /4BwaP/5+fj//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//9/f3/2tXT/1E8MP9CKx7/blxS/5CDfP+Qg3v/kIN7/5GDe/+Rg3v/kYN7/5GDe/+Rg3v/kIN7 - /5GDe/+Qg3v/kYN7/5GDe/+Rg3v/kYN7/5GDe/+Rg3v/hHVs/044LP9BKh3/QSoc30IqHeBKMyf/x8C8 - //7+/f/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+ - //7+/v/+/v7/pJiS/0MsHv9xX1X/9fPz//z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v//Pz8/+/t7P9pVkz/Qyse/4t8dP/6+fn//v7+//7+/v/+/v7//v7+ - //7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//j39/+CcWn/Qyod - /0IqHN9DKx3gTjcq/9bQzf//////+fj4/8fAvP+7s63/2tXS//39/f/Szcn/u7Kt/83Gw//8+/v/4d7b - /7yzrv/Du7f/9fTz/+7s6v+/trL/vrWw/6KWj/9GLiD/Yk5D/+vp5//9/f3/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/8+/v/loiB/0QsHv9aRTn/sqij - /7uyrf/SzMn//f39/9vW1P+7sq3/xr+7//j39//p5uX/vbWw/7+3sv/v7ez/9PLx/8K6tf+8s67/4+De - ///////+/v7/jn93/0MrHf9DKx3fRCsd4E83Kv/W0M3//////+7s6/9pVUn/SDAi/5uOhv/6+fn/hndt - /0gwIv94Zlz/9vX1/6+knv9JMSP/XUc7/+Th3//Ry8f/Ujst/043Kf+ThXz/TDMm/1Q9Mf/a1dL//v7+ - //7+/v/+/v7//v7+//7+/v/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39 - /8/Ixf9ROi3/RS0f/0kxIv9IMCL/hnZt//r5+f+fkor/SC8h/2ZRRf/t6un/xLy4/002KP9TPS//1c/M - /+Hc2v9aRDf/SjEj/7Sqpf///////v7+/45/d/9ELB7/RCsd30UsHeBQOCr/1tDN///////v7ez/bFdM - /0szJf+dj4j/+vn5/4h4b/9LMyT/emhe//f19f+wpqD/TDQm/2BKPv/l4d//0czI/1U9MP9ROSz/qJyW - /1dAM/9JMCH/jn92/7uyrf+8s63/vLOt/7+1sf/s6ej//f39//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//z8/P/19PT/g3Np/0YtH/9FLB7/SC8g/4h4b//6+fn/oJOM/0szJP9oVEj/7uvq - /8W9uf9QOCv/Vj8y/9XQzf/h3Nr/XUc6/000J/+1rKb///////7+/v+PgHf/RSwe/0UsHd9GLR3gUTkr - /9bRzf//////+vn5/9DJxv/Gvrn/4NvZ//79/f/Z1NH/xb65/9TOy//8/Pz/5uLg/8a+uf/MxcH/9/X1 - //Du7f/Iwb3/x8C7/+Tg3v+JeW//STAh/0guH/9KMSL/SjEi/0oxIv9NNCX/s6mj//39/f/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39/9LMyf9aQzX/Ry0e/15IO//Jwb3//f39 - /+Hc2v/Gvrn/z8jE//n4+P/s6uj/x7+7/8nBvf/y8O//9fTz/8vEwP/Gvrr/5+Ti///////+/v7/kIB3 - /0ctHv9GLB3fRy0d4FI5K//X0c3/////////////////+fj4//Px8P/z8fD/8/Hw//Px8P/z8fD/8/Hw - //Px8P/z8fD/8/Hw//Px8P/z8fD/8/Hw//Px8P/z8fD/3NfU/2dSRP9ILh7/SC4e/0guHv9ILh7/SC4e - /4JwZf/39vb//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/7+vr/qZ2W - /041Jf9MMiP/k4R7/+nm5P/z8fD/8/Hw//Px8P/z8fD/8/Hw//Px8P/z8fD/8/Hw//Px8P/08vH//f39 - /////////////v7+/5GBd/9ILh7/SC0d30guHeBTOiv/19HN/////////////////7etpv9uWEv/blhL - /25YS/9uWEv/blhL/25YS/9uWEv/blhL/25YS/9uWEv/blhL/25YS/9uWEv/blhL/2xWSf9TOir/SS8e - /0kvHv9JLx7/SS4e/0kuHv9cRDX/3NfU//39/f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v//f39//Px8P+RgXf/TTMj/00zI/9mUEL/blhL/25YS/9uWEv/blhL/25YS/9uWUv/blhL - /25YS/9uWEv/fGld/+nl4/////////////j39v+Idmv/SS4e/0kuHd9JLx7gVTsr/9fRzf////////// - //////+mmZD/Sy8e/0svHv9KLx7/Si8e/0ovHv9KLx7/Sy8e/0svHv9LLx7/Sy8e/0svHv9LLx7/Sy8e - /0svHv9LLx7/Sy8e/0ovHv9KLx7/Sy8e/0svHv9LLx7/TTEh/6aZkP/8/Pz//Pz8//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//9/f3/7+zr/5GBd/9QNiX/Sy8e/0ovHv9LLx7/Sy8e - /0svHv9LLx7/Sy8e/0svHv9LLx7/Sy8e/11ENP/j39z/+fj3/9fRzf+Qf3X/VTsr/0ovHv9TOinfSy8e - 4FY8K//X0c3/////////////////p5mQ/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe - /0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9sVUb/6eXj - //39/f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//39/f/y8O//p5mR - /1tCMv9MMB//TDAe/0wwHv9MMB7/TDAf/0wwHv9MMB7/TDAe/0wwHv9YPy7/p5qR/4l2a/9cQzP/TTEf - /00yIP9sVUf/vbSt300wHuBXPSv/2NLO/////////////////6eakP9NMR7/TTEe/00xH/9NMR//TTEf - /00xHv9NMR//TTEe/00xHv9NMR//TTEf/00xH/9NMR7/TTEf/00xHv9NMR7/TjEf/00xH/9NMR//TTEf - /00xH/9OMR//UTUj/66hmf/8/Pz//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v//f39//r5+f/Ox8L/gm5h/1c8K/9OMR//TTEf/04xH/9NMR//TTEf/00xHv9NMR//TjIg - /1A0Iv9NMR//TzIg/2BGNv+ZiX//4t7b//z8/N9OMB7gWT0r/9jSzv////////////////+ompH/TzIf - /08yH/9PMh//TzIf/08yH/9PMh//TzEf/08yH/9PMh//TzIf/08yH/9PMh//TzIf/08yH/9PMh//TzIf - /08yH/9PMh//TzIf/08yH/9PMh//TzIf/1I2I/+ci4H/+vn4//39/f/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz//f39//Ty8f/Kwrz/koF1/2tTQ/9ZPiz/UjYj - /1AzIP9QMyD/UDMg/1Q4Jf9dQzL/dV9Q/6OUi//b1dH/+fn4//39/f/7+/vfTzIe4Fo+LP/Y0s7///// - ////////////qZuR/1AzH/9QMx//UDMf/1AzH/9QMx//UTMf/1AzH/9QMx//UDMf/1AzH/9QMx//UDMf - /1AzH/9QMx//UDMf/1AzH/9QMx//UDMf/1AzH/9QMh//UDMf/1M2I/+QfXD/7uvp//39/f/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//9/f3//f39 - //r5+f/r6OX/1c7J/8C2r/+ypZ3/r6GY/7Wpof/Gvbf/3NbS//Hv7f/8/Pz//f39//z8/P/7+/v/+/v7 - 31EzHuBcPyz/2dLO/////////////////6qbkf9SNB//UjQf/1IzH/9SNB//UjQf/1I0H/9SNB//UjQf - /1I0H/9SNB//UjQf/1I0H/9SNB//UjQf/1I0H/9SNB//UjQf/1I0H/9SNB//UjQf/1Q3I/+PfG//7uvp - //39/f/7/Pv/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//8/Pz//f39//39/f/9/v3//f79//79/f/9/f3//f39//39/f/9/f3//Pz8 - //v7+//7+/v/+/v7//v7+99TNB7gXUAs/9nSzv////////////////+rm5H/UzQf/1M1H/9TNR//UzQf - /1M1H/9TNR//UzQf/1M1H/9TNB//UzQf/1M0H/9TNB//UzQf/1M0H/9TNB//UzUf/1M0H/9TNR//UzUf - /1M0H/93X07/6+fl//3+/f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/vfVTUf4F9BLP/a087/////////////////q5yR - /1U2H/9VNR//VTYf/1U1H/9VNR//VTYf/1U1H/9VNh//VTUf/1U2IP9VNh//VTUf/1U1IP9VNSD/VTYf - /1U1H/9VNh//VTYf/1U2H/9VNR//cFVC/+Pe2//+/v7/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v731Y2H+BgQiz/2tPO - /////////////////6yckf9XNiD/VzYf/1Y2IP9XNiD/VjYg/1Y2IP9XNyD/VzYg/1c2IP9WNyD/Vzcg - /1c3IP9XNiD/VzYg/1c3IP9XNiD/VzYg/1c2IP9XNyD/Vzcg/1g4Iv+VgXL/9PLx//39/f/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+99YNx/gYkMs/9rTzv////////////////+tnZH/WDcg/1g3IP9YNyD/WDcg/1g3IP9YNyD/WDcg - /1g3IP9YOCD/WDcg/1g3IP9YOCD/WDcg/1g3IP9YNyD/WDgg/1g3IP9YNyD/WDcg/1g3IP9YNyD/Xj8o - /7Gil//6+fn//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/vfWTgf4GNELf/b087/////////////////rp2R/1o4IP9aOCD/Wjgg - /1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjkg/1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg - /1o4IP9aOCD/Wjgg/1o4IP9nSDH/xLiv//z8+//8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v731w4H+BlRS3/29TO//////////////// - /66ekf9cOSD/XDkg/1w6IP9cOiD/XDkg/1w5IP9cOSD/XDkg/1w5IP9cOiD/Wzkg/1w5IP9cOSD/XDkg - /1w5IP9cOiD/XDkg/1s5IP9bOSD/XDkg/1w5IP9cOSD/XDkg/29ROv/Ow7z//Pz8//z8/P/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//8/Pz//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+99dOh/gZkYt - /9vUzv////////////////+vnpL/XTog/107IP9dOiD/XTsg/147If9dOyD/XTog/106IP9dOiH/XTog - /106IP9dOiH/XTog/146IP9dOiD/XTog/107IP9dOyD/XTog/107If9dOiH/Xjog/106If9eOyH/c1U/ - /8/Fvv/8/Pz//Pz8//v7+//7+/v/+/v7//v7+//9/f3//fz8//39/f/9/f3//Pz8//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/vfXzsh4GhHLf/c1M7/////////////////sJ+S/187If9fPCH/Xzsh/187If9fOyH/Xzwh - /187If9fPCH/Xzsh/188If9fOyH/Xzsh/187If9fOyH/Xzsh/187If9fOyD/Xzsg/187IP9fPCH/Xzsh - /187If9fOyH/Xzsh/188If90VT3/yr61//v6+v/9/f3/+/v7//v7+//9/f3/9/X0/7qrn//Et63/8u/t - //39/f/9/f3//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v//Pz832A8IeBqRy3/3NTO/////////////////7Gfkv9hPCH/YT0h - /2E9If9hPCH/YTwh/2E9If9hPCH/YTwh/2E8If9hPSH/YT0h/2E9If9hPSH/YT0h/2E9If9hPCH/YT0h - /2E9If9hPSH/YT0h/2E9If9hPSH/YTwh/2E9If9hPSH/YTwh/29ONf+7rKD/9/X0//39/f/9/f3/9/X0 - /7CekP9oRiv/Z0Qq/4ltWf/Bs6j/6+fk//v7+v/9/f3//f39//z8/P/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/9/f3//f39//r5+N9jPSHga0gu/9zUzv////////// - //////+yoJL/Yz4h/2I9If9jPSH/Yz4h/2I+If9iPSH/Yz0h/2M+If9iPSH/Yj4h/2M+If9jPSH/Yz0h - /2M9If9jPiH/Yz4h/2M+If9jPiH/Yz4h/2M+If9jPSH/Yz4h/2M+If9jPSH/Yz0h/2M9If9jPiH/akcs - /6WPf//s5+T/9/Xz/7Kgkf9qRiv/Yz4h/2M9If9jPiH/Z0Mn/31eR/+mkYD/0MW8//Px7//+/v7/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/9/f3/6eTg/8O1q/+bhHLfZT4h - 4G5KLv/d1c7/////////////////s6CS/2U/If9lPyH/ZT8h/2U/If9lPyH/ZT8h/2U/If9lPyH/ZD8h - /2U/If9lPyH/ZT8h/2U/Iv9lPyH/ZT8h/2U/If9lPyH/ZT8h/2U/If9lPyH/ZT8h/2U/If9lPyH/ZT8h - /2U/If9lPyH/ZT8h/2U/If9nQiT/hmhR/5h/a/9sSCv/ZT8h/2U/If9lPiH/ZT8h/2U/If9lPyH/ZT8i - /21JLf/JvLL//v7+//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz/+/r6 - /6CJd/9oQyb/ZD4h32c/IuBwSy7/3tXO/////////////////7Shkv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai - /2dAIv9nQCH/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai - /2dAIf9nQCH/Z0Ai/2dAIv9nQCH/Z0Ah/2dAIv9nQCL/Z0Ah/2dAIf9nQSL/Z0Ah/2dAIv9nQCL/Z0Ah - /2dAIf9nQCL/Z0Ah/2dAIv9pQyX/xbar//7+/v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v//Pz8//v6+f+agGz/Z0Ah/2ZAId9oQCLgcUwu/97Vzv////////////////+1opL/aUEi - /2lBIv9pQSL/aUEi/2lBIv9pQSL/aUIi/2lBIv9pQSL/aUIi/2lCIv9pQSL/aUEi/2lBIv9pQSL/aUEi - /2lBIv9pQSL/aUEi/2lBIv9pQSL/aUEi/2lBIv9pQSL/aUEi/2lBIv9pQSL/aUEi/2lBIv9pQSL/aUIi - /2lBIv9pQSL/aUEi/2lBIv9pQSL/aUEi/2lBIv9pQSL/a0Ql/8a3q//+/v7/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/7+vn/m4Fs/2lCIv9pQSLfa0Mi4HRNLv/e1s7///// - ////////////tqKS/2tDIv9rQyL/a0Mi/2tDIv9rQyL/a0Mi/2tDIv9rQyL/bEMi/2tDIv9rQyL/a0Mi - /2tDIv9rQyL/a0Mi/2tDIv9rQyL/a0Mi/2tDIv9rQyL/a0Mi/2tCIv9sQyL/a0Mi/2tDIv9rQyL/a0Mi - /2tDIv9rQyL/a0Mi/2tDIv9rQyL/a0Mi/2tDIv9rQyL/a0Mi/2tDIv9rQyL/a0Mi/25GJf/Ht6v//v7+ - //z8/P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8//z8/P/9/f3/+/r5/52CbP9rQyL/a0Mi - 321EIuB2Ti//39bO/////////////////7ejkv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9uRCL/bUQi - /21EIv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bkQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi - /25EIv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi - /25EIv9vRST/sZuI//Ds6P/59/b//Pz7//39/f/9/f3//f39//7+/f/9/f3//f39//39/f/7+/r/9/Tz - /+fh2/+QcFb/bUQi/21DIt9vRSLgd1Av/9/Wzv////////////////+4o5P/b0Uj/29FI/9wRSP/b0Uj - /3BFIv9vRSL/cEUj/29FI/9vRSP/cEUj/29FI/9wRSP/cEUi/3BFIv9wRSP/b0Uj/3BFI/9vRSP/cEUj - /29FI/9vRSL/b0Ui/3BFIv9wRSL/cEUj/3BFIv9vRSP/b0Uj/3BFI/9vRSP/cEUj/29FIv9wRSP/cEUj - /29FI/9wRSP/cEUj/3BFI/9wRSL/b0Uj/3ZNLP+JZUn/mXti/6mPev+3oZD/wK6e/8W0pv/Htqj/xLOk - /76qmv+znIr/pIlz/5R0Wv+DXkD/ckgm/3BFI/9wRCLfcUYj4HlRL//g1s7/////////////////uaST - /3FGI/9xRiP/cUYj/3JHI/9xRiP/ckYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3JGI/9xRiP/ckYj - /3FGI/9xRiP/cUYj/3FGI/9xRiP/ckYj/3FGI/9yRiP/cUYj/3JGI/9yRiP/cUYj/3FGI/9xRiP/cUYj - /3JGI/9xRiP/ckcj/3FGI/9yRiP/ckYj/3FGI/9xRiP/cUYj/3JGI/9yRiP/ckYj/3FGI/9yRyP/ckck - /3NHJP9zSCX/c0gl/3NIJf9yRyT/ckcj/3JHI/9yRiP/cUYj/3JGI/9xRiP/cUUi33RHI+B8Ui//4NfO - /////////////////8q6rP+Uclb/k3JW/5NyVv+Tclb/k3JW/5RyVv+Uclb/lHJW/5NyVv+Tclb/k3JW - /5RyVv+Uclb/k3JW/5RyVv+Uclb/lHJW/5NyVv+Uclb/lHJW/5NyVv+Uclb/lHJW/5RyVv+Tclb/lHJW - /5RyVv+Uclb/lHJW/5RyVv+Uclb/k3JW/5NyVv+Tclb/k3JW/5RyVv+Tclb/k3JW/5RyVv+Uclb/lHJW - /5RyVv+Tclb/lHJW/5NyVv+Uclb/lHJW/5RyVv+Uclb/lHJW/5NyVv+Uclb/lHJW/5NyVv+AWDf/dEcj - /3NII991SCPgfVMw/+HXz//////////////////7+vn/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0 - //j29P/49vT/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0 - //j29P/49vT/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0 - //j29P/49vT/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0 - //j29P/39fP/qY12/3ZJI/91SSPfd0kj4H9UMP/h18/////////////9/Pv//Pv6//39/P///////f38 - //z7+v/9/Pz///////79/f/8+/r//fz7///+/v/+/v7//Pv7//z7+//+/v7////+//38+//8+/r//v39 - ///////9/Pz//Pv6//38/P///////v39//z7+v/9/Pv////+//7+/v/8+/v//Pv7//7+/v////7//fz7 - //z7+v/+/f3///////38/P/8+/r//fz8///////+/f3//Pv6//38+////////v7+//z7+//8+/v//v7+ - ///+/v/8/Pv//Pv7//79/f///////v7+/62Se/93SiP/eEoj33lLI+CBVTD/4dfP///////39fL/uJ+K - /6iKcP/Pv7H//Pz7/8ayof+oinD/v6iV//v6+P/ZzMD/qYtx/7KXgf/z7ur/6eLb/62QeP+rjnX/5dzU - //Xx7/+1m4X/qIpw/9TFuf/8/Pv/xK+d/6iKcP/BrJn//Pr5/9TGuf+pinH/tZuF//Xx7v/m3tf/q451 - /6yPd//o4Nn/8+/r/7OZg/+pi3H/18m9//v6+P/Aqpf/qIpw/8ayof/8/Pv/0cGz/6iKcP+2nYf/9vPx - /+PZ0f+rjXT/rpF5/+vk3v/w6+f/sJV+/6mLcv/cz8X///////7+/v+uknv/eUsk/3lLI996TCTgglYw - /+LXz///////8+/r/5NsS/97TCT/t52I//v6+f+oiW//e0wk/557Xf/59/X/xbGf/3xNJv+KYT3/7OXf - /97SyP+CVTD/f1Ir/9fJvv/w6+b/jmdE/3tMJP++p5P/+/r4/6WEav97TCT/oYBj//r49v++p5P/fE0l - /45mRP/v6uX/2czB/4BSLP+BVC7/3NDF/+3n4f+MY0D/fE0l/8Ksmv/59/X/n3xf/3tMJP+oiW//+/r5 - /7mhi/97TCT/kGlI//Lt6f/Uxbn/f1Eq/4NXMv/h1s3/6eHa/4hdOf98TSb/ybam///////+/v7/r5N7 - /3tMJP97TCTffE0k4IRXMP/i2M////////Xx7v+lhGf/kWlG/8Otmv/8+/r/tpyF/5FoRv+ukHf/+vj3 - /8+9rv+Rakj/nXpb/+/p5P/j2dD/lnBQ/5RuTP/e0sj/8u7q/6F/Yv+RaUb/yLWk//z7+f+0mIH/kWlG - /7GUe//7+ff/ybWk/5FpR/+hf2H/8u3p/+DUy/+Vbk3/lm9O/+LXzv/w6+b/n3xe/5FqR//Muqr/+vj3 - /6+ReP+RaUb/tpyF//z7+v/FsJ7/kWlG/6OBZP/08Oz/3M/E/5RtS/+YclL/5tzV/+zm4P+cd1j/kmpI - /9LBtP///////v7+/7GUe/99TST/fEwk335NJOCFVzD/4dXM///////+/f3/8+/r//Hs5//39PL///7+ - //by7//x7Of/9PHt//7+/v/59vT/8ezn//Lu6v/9/Pz/+/r5//Lt6P/x7Oj/+/n4//39/P/z7uv/8ezn - //j18////v7/9fLv//Hs5//18e7//v7+//j18//x7Of/8+/r//39/P/7+fj/8ezo//Lt6P/7+vn//fz8 - //Pu6v/x7Of/+Pb0//7+/v/18e7/8ezn//by7////v7/9/Xy//Hs5//z7+v//v39//r59//x7Oj/8u3p - //z6+v/9/Pv/8u7q//Hs5//59/X///////79/f+wknj/fk4l/31NJN9/TiTgglIo/7WYf//f0sf/4NTK - /+DUyv/g1Mr/4NTK/+DUyv/g1Mr/4NTK/+DUyv/h1Mr/4NTK/+DUyv/g1Mr/4NTK/+DUyv/g1Mr/4dTK - /+DVyv/g1cr/4NXK/+DUyv/g1Mr/4NTK/+DUyv/g1Mr/4NTK/+DUyv/g1Mr/4NTK/+DUyv/g1Mr/4NTK - /+DUyv/g1Mr/4dTK/+DUyv/g1Mr/4NTK/+DUyv/g1cr/4NTK/+DUyv/g1Mr/4NTK/+DUyv/g1cr/4NXK - /+DUyv/g1Mr/4NXK/+DUyv/g1Mr/4NTK/+DUyv/g1Mr/4NTK/+DUyv/Wxrj/lWxJ/4BPJP+ATiTfgE8k - 4IFQJf+DUif/h1cu/4dYL/+HWC//h1gv/4dYLv+HWC7/h1gv/4dYL/+HWC//h1gv/4dYL/+HWC//h1gv - /4dYL/+HVy//h1gv/4dYL/+HWC//h1gv/4dYL/+HVy//h1gv/4dYL/+HWC//h1gv/4dXL/+HWC//h1cv - /4dXL/+HWC//h1gv/4dYL/+HVy//h1gu/4dYL/+HWC//h1gv/4dYL/+HWC//h1gu/4dYL/+HWC//h1gv - /4dXL/+HWC//h1gv/4dYL/+HVy//h1gv/4dYL/+HWC//h1gv/4dYL/+HWC//h1gv/4dYL/+HWC//hVUs - /4JQJf+BUCT/gVAk34FPJOCCUCX/glAl/4JRJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJN+CUCTghFEl/4NRJf+EUSX/hFEl/4NRJf+EUSX/hFEl - /4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/hFEl/4RRJf+DUSX/g1El/4NRJf+DUSX/hFEl - /4RRJf+EUSX/hFEl/4RRJf+EUSX/g1El/4NRJf+DUSX/hFEl/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El - /4NRJf+EUSX/g1El/4NRJf+DUSX/g1El/4NRJf+EUSX/g1El/4NRJf+EUSX/hFEl/4NRJf+DUSX/g1El - /4NRJf+DUSX/g1El/4NRJf+EUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSTfhFEl4IRRJf+EUiX/hFEl - /4RSJf+EUSX/hVEl/4RRJf+EUiX/hFIl/4VSJf+EUiX/hFIl/4RRJf+EUSX/hFIl/4RSJf+EUSX/hFEl - /4RSJf+FUiX/hFIl/4RSJf+EUSX/hFIl/4RRJf+EUSX/hFIl/4RSJf+EUiX/hFEl/4RSJf+EUiX/hFIl - /4RRJf+EUiX/hFIl/4RSJf+FUiX/hFEl/4RSJf+EUSX/hFIl/4RSJf+EUiX/hVIl/4RSJf+EUSX/hFIl - /4RSJf+EUiX/hFEl/4RSJf+FUiX/hFEl/4RSJf+EUSX/hFEl/4VRJf+EUiX/hVIl/4VSJf+FUSX/hFEk - 34VRJeCFUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4RSJN+FUSXghVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+EUiTfhVEl4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hFIk34VRJeCFUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4RSJN+FUSXghVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+EUiTfhVEl4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hFIk34VRJeCFUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJN+FUSXghVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+EUiTfhVEl4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hFIk34RSJqeEUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFEl - v4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFEl - v4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFEl - v4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFEl - v4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RSJKcAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAACgAAAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAAAAAAAAAAAAAAAAAAAABAKR3SPykc - 8D8pHPA/KRzwPykc8D8pHPA/KRzwPykc8D8pHPA/KRzwPykc8D8pHPA/KRzwPykc8D8pHPA/KRzwPykc - 8EIsIPBJMyfwSTMo8E04LPC/t7Tw/Pz88Pr6+vD6+vrw+vr68Pr6+vD6+vrw+vr68Pr6+vD49/fwkoV/ - 8EEqHvA/KRzwPykc8D8pHPA/KRzwPykc8D8pHPA/KRzwPykc8D8pHPA/KRzwPykc8D8pHPA/KRzwPykc - 8EApHdJAKRzfQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QSoe/46Aef/NyMT/zsjF/9HLyP/y8fD//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //z8/P/V0M7/Uz4z/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHN9AKRzfQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/RjEl/8fBvf/9/f3//Pz8//z8/P/8/Pz/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+/+WiYL/QSoe/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN9AKRzfQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/Tzov/9rW0//8/Pz/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7/+7s7P9mVEr/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN9AKRzfQCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/WEQ5/+Xi4P/8/Pz/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8/9rV0/9POy//QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN9AKRzfQCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/XUk/ - /+ro5v/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8/8nDv/9HMSX/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHN9AKRzfQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/X0tB/+zq6P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8 - /8O8uP9FLyP/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHN9AKRzfQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QSkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/XUk//+ro5v/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v//Pz8/8rDwP9HMSX/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN9BKhzfTjgs/3lpYP+AcGj/gHBo/4BwaP+AcGj/gHBo - /4BwaP+AcGj/gHBo/4BwaP+AcGj/gHBo/39vZv9YRDj/WEQ5/+Xi4P/8/Pz/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v//Pz8/9vX1P9SPDH/Tzou/3xsY/+AcGj/gHBo/4BwaP+AcGj/gHBo - /4BwaP+AcGj/gHBo/4BwaP+AcGj/gHBo/4BwZ/9uXFL/RS4h/0EqHN9CKh3fgnJp//f29f/6+fn/9fTz - //f29v/7+vr/9vX0//b19f/7+vr/9vX1//b09P/7+vr/9/b2//Ty8f+Mfnb/UTsv/9rV0v/8/Pz/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7/+/t7P9qV0z/WkU5/9zX1f/19PP/+vn5 - //n4+P/19PP/+fj3//r5+f/19PP/+Pf2//r6+v/29PT/9/X1//v7+//i3tz/WkU6/0IqHN9DKx3fi3x0 - //79/f/f29n/gG9m/6idl//r6Ob/iXlx/5eJgf/w7uz/mIqD/4h5cP/q5+b/qZ6X/39uZf+Dcmn/SzMm - /8fAvP/9/f3//Pz8//z8/P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+/+ajob/SDAi - /25bUP99bGL/19LP/8nCvf96aF//wrm1/9vW1P9/bmT/raKc/+nl5P+Hd27/moyF//j49//s6ej/YEs/ - /0MrHd9FLB3fjH10//79/f/Vz8z/V0Ez/419df/k4N//Y05C/3ZjWP/r6Ob/d2Va/2JNQf/j397/jn92 - /1dAM/+ThHz/SjEj/4t8cv/IwLz/yMG9/8vEwP/x7+7//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //z8/P/Z1NH/WUM2/0UsHv9POCr/y8TA/7euqP9QOCr/rqOd/9DJxv9WPjH/k4R8/+Hd2/9gSz7/eWdd - //b19P/s6ej/YUw//0UsHd9GLB3fjX10//79/f/08vH/083J/+Hc2v/49/b/1tDN/9vW0//6+fj/29bT - /9bQzf/49vb/4d3a/9LMyf/c19T/cV1R/0kwIf9MNCX/TTQl/1E4Kf+9tK7//f39//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//6+fn/oJKL/0oxIv9sWEv/5eHf/+zp6P/Rysb/6ebl//Lx8P/SzMj/4t7c - //f29f/Vz8z/3NfU//38/P/s6ej/Y0xA/0YsHd9ILR3fjn50//79/f//////8e7t/7uxq/+2q6T/tquk - /7arpP+2q6T/tquk/7arpP+2q6T/tquk/7arpP+1qqT/iXhu/0owIP9ILh7/SC4e/0kuHv+JeG3/+Pj3 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz/7Orp/31rYP9PNib/jHtx/7WqpP+2q6T/tquk - /7arpP+2q6T/tquk/7arpP/IwLv//Pv7///////q6Ob/Y0w//0ktHd9KLh3fkH90//79/f//////3NbT - /1g/L/9LMB//SzAf/0swH/9LMB//SzAf/0swH/9LMB//SzAf/0swH/9LMB//SzAf/0ovHv9KLx7/Si8e - /0ovHv9fRjf/3tnW//z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8/+Le3P97Z1v/TTIh - /0swH/9LMB//SzAf/0swH/9LMB//SzAf/0swH/95ZFj/8/Lx/+Hc2f+ai4H/Ujgn/1E4Jt9MMB7fkX90 - //79/f//////3NfT/1k/Lv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe - /0wwHv9MMB7/TDAe/0wwHv9OMiD/o5WL//v7+v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //z8/P/o5eP/k4J3/1Y8K/9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwH/9kSzz/jHpv/2NKO/9QNCP/a1RF - /7muqd9NMR7fkoB1//79/f//////3NfT/1pALv9OMR7/TjEf/04xH/9OMR//TjEf/04xH/9OMR//TjEf - /04xH/9OMR//TjEf/04xH/9OMR//TjEf/04xH/9OMR//b1dI/+vo5v/8/Pz/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//8/Pz/9vX0/8i/uf+EcWT/XkQz/1E1Iv9OMh//TjEf/04xH/9PMyD/Vjoo - /21VRv+klYz/5ODe//v7+99QMh7fk4F1//79/f//////3dfT/1xBL/9QMh//UDIf/1AzH/9QMx//UDMf - /1AyH/9QMh//UDIf/1AzH/9QMx//UDIf/1AyH/9QMh//UDMf/1AyH/9bPy3/sqWd//n4+P/8/Pz/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/29fT/3dfU/72zq/+klYv/mYh9 - /52Mgf+vopn/zMS//+vo5v/7+/v//Pz8//v7+99SMx7flIF1//79/f//////3dfT/15CL/9SNB//UjQf - /1I0H/9SNB//UjQf/1I0H/9SNB//UjQf/1I0H/9SNB//UjQf/1I0H/9SNB//UjQf/1s+Kv+xpJv/+Pf3 - //z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8 - //39/f/9/f3//Pz8//z8/P/9/f3//Pz8//z8/P/7+/v/+/v7//v7+99UNB7floJ1//79/f//////3tjT - /2BDL/9UNR//VDUf/1Q1H/9UNR//VDUf/1Q1H/9UNR//VDUf/1Q1H/9UNR//VDUf/1Q1H/9UNR//VDUf - /3RaSf/t6uj//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+99WNSDfl4N1 - //79/f//////3tjT/2JEL/9WNiD/VjYg/1Y2IP9WNh//VjYf/1Y2IP9WNyD/VjYg/1Y2IP9WNiD/VjYf - /1Y2IP9WNiD/VjYg/1w9J/+1ppz/+/r6//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+99ZOCDfmIR1//79/f//////3tjT/2RFMP9ZOCD/WDcg/1k4IP9ZNyD/WTcg/1k4IP9YOCD/WTgg - /1k4IP9ZOCD/WDgg/1k4IP9ZOCD/WDgg/1g3IP9pTDb/z8W+//z8/P/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+99aOSDfmYV1//79/f//////39jT/2ZHMP9bOSD/Wzkg/1s5IP9bOSD/Wzkg - /1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg/1s5IP9bOSD/dlpF/9vTzv/8/Pz/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+99cOiDfm4Z2//79/f//////39nU/2hIMP9dOiD/XTog - /106IP9dOiD/XTog/106IP9dOiD/XTog/106IP9dOiD/XTog/106IP9dOiD/XTog/106If9dOiD/Xjsh - /35iTf/d1tH//Pz8//v7+//7+/v/+/v7//z8/P/7+/r//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+99eOyHfnYd2//79/f//////4NnU - /2tJMP9fPCH/Xzwh/188If9fPCH/Xzwg/188If9fPCH/Xzsh/187If9fPCH/Xzwh/188IP9fPCH/YDwh - /188If9fOyH/Xzwh/2A8If9+YUv/187I//z7+//8/Pz//Pz8/+7q5/+plof/yLuy//Lw7v/8/Pz//Pz8 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8//z8/N9hPCHfnod2 - //79/f//////4NnU/21LMf9iPSH/Yj0h/2E9If9hPSH/Yj0h/2E9If9iPSH/Yj0h/2I9If9iPSH/Yj0h - /2I9If9iPSH/Yj0h/2I9If9iPSH/Yj0h/2I9If9iPSH/d1c//8e6sP/49/b/7uvo/5iAbf9kQCT/aEUq - /4htV/+8rKD/5N7Z//j39v/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/8/Pz/8O3q - /9jOxt9kPiHfoIh2//7+/f//////4dnU/29MMf9kPiH/ZD8h/2Q/If9kPyH/ZD8h/2Q+If9kPyH/ZD8h - /2Q/If9kPiH/ZD8h/2Q/If9kPyH/ZD8h/2Q/If9kPyH/ZD4h/2Q+If9kPiH/ZD8h/25LL/+ii3n/k3lk - /2dCJP9kPyH/ZD8h/2Q+If9nQiT/dVM5/7+wpP/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //z8/P/v6+j/j3Ne/21KLd9mQCHfoYl2//7+/f//////4drU/3JOMf9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai - /2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIf9nQCH/Z0Ai/2dAIf9nQCH/Z0Ai - /2dAIv9oQSL/aEEi/2dAIv9nQCL/Z0Ah/2dAIv9nQCH/Z0Ai/6+bi//9/f3/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//z8/P/q5eH/elg9/2ZAId9qQiLfo4p3//7+/f//////4trU/3VPMv9qQiL/akIi - /2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/2pCIv9qQiL/akIi - /2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/7Gci//9/f3/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/q5eH/fVk9/2pCIt9sQyLfpYt3//7+/f//////4trU - /3dRMv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi - /21DIv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi - /6SKdv/w6+j/+Pf1//v7+v/8/Pz//f39//38/P/8/Pv/+vn5//Xz8f/ZzsX/elU2/2xDIt9wRSLfpox3 - //7+/f//////49vU/3pSMv9wRSL/cEUj/3BFI/9wRSP/cEYj/3BFI/9wRSP/cEUj/3BFIv9wRiP/cEUj - /3BFI/9wRSP/cEUj/3BFIv9wRSP/cEUj/3BFI/9wRSP/cEUj/3BFI/9wRSP/cEUj/3BFI/9wRSP/cEUj - /3BFI/9wRSP/cEUj/3ZNK/+JZkn/mHlg/6WLdf+vl4P/spuJ/7Gah/+rkn3/n4Nr/5FwVf9/WTr/cUYk - /3BFIt9yRiPfqI13//7+/f//////5t7X/4ZgQf99VDP/fVQz/31UM/99VDP/fVQz/31UM/99VDP/fVQz - /31UM/99VDP/fVQz/31UM/99VDP/fVQz/31UM/99VDP/fVQz/31UM/99VDP/fVQz/31UM/99VDP/fVQz - /31UM/99VDP/fVUz/31UM/98VDP/fVQz/31UM/99VDP/fVQz/31UM/99VDP/fVQz/31UM/99VDP/fVQz - /31UM/98UzH/dEkl/3JGI990SCPfqo93//7+/f//////+vj3/+bf2P/k3NX/5NzV/+Tc1f/k3NX/5NzV - /+Tc1f/k3NX/5NzV/+Tc1f/k3NX/5NzV/+Tc1f/k3NX/5NzV/+Tc1f/k3NX/5NzV/+Tc1f/k3NX/5NzV - /+Tc1f/k3NX/5NzV/+Tc1f/k3NX/5NzV/+Tc1f/k3NX/5NzV/+Tc1f/k3NX/5NzV/+Tc1f/k3NX/5NzV - /+Tc1f/k3NX/5NzV/+Tc1f/ZzcL/hl8+/3VII994SiPfq493//7+/f/7+fj/7unk//Tw7f/8+/v/8Orm - //Ht6f/9/Pz/8u3p//Dq5v/8+/r/9PDt/+7p5P/7+fj/9/Tx/+7o4//49vT/+fj2/+7o4//18u//+/r5 - /+/p5f/z7+v//fz7//Dr5//x6+f//fz7//Lu6v/v6uX//Pv6//Xx7//u6OP/+vj3//j18//u6OP/9/Ty - //r59//u6OT/9PHt//z7+v/v6uX/8u3p//7+/v/x7Oj/jGVE/3hKI996SyPfrZB4//7+/f/k2tH/kWtK - /7SahP/t5+L/mXVX/6WFav/y7en/pods/5h0Vf/t5uH/tZuF/5FqSf/i2ND/yLSk/4xkQv/Tw7b/287D - /45mRf+/qJT/59/Y/5RuTv+uknn/8Ovm/557Xv+ffWH/8Ovm/6uOdf+VcFD/6uLc/7ylkf+PZ0b/3dHH - /9DAsv+MZEH/yren/+DVzP+QaUj/uJ+K/+zl3/+XclP/qIlv//r39f/x7en/jmZF/3pLI998TCTfrpF4 - //7+/f/l29P/lW9O/7edh//u6OP/nXlb/6iJbv/y7ur/qotv/5x4Wf/t5+L/uJ6I/5VuTf/j2dH/yram - /5FpR//Uxbj/3M/F/5JrSf/Bqpf/6eDZ/5hzU/+xlX3/8Ovn/6F/Yv+jgWT/8ezn/66ReP+ZdFT/6uPd - /7+ok/+TbEr/3tLI/9LBtP+QaEb/zLmq/+HWzf+UbUz/u6KN/+zl3/+bdlj/q4xy//r39v/y7en/kGdF - /3xMJN9+TSTfq4tw//v5+P/6+Pf/8Orm//Tw7f/7+vn/8ezn//Lu6v/8+/r/8+7q//Hs5//7+vn/9PHt - //Dq5v/6+Pf/9/Tx/+/q5f/49vP/+ff1//Dq5f/28u//+/n4//Dr5v/07+z//Pv6//Ht6P/y7en//Pv6 - //Pv6//w6+b/+/n4//Xy7//w6uX/+ff2//j18//v6uX/9/Ty//r49v/w6uX/9fHu//v6+f/x6+f/8+7q - //38/P/t5uD/j2VA/31NJN+ATiTfil01/6uKbf+vkHX/r5B1/6+Qdf+vkHX/r5B1/6+Qdf+vkHX/r5B1 - /6+Qdf+vkHX/r5B1/6+Qdf+vkHX/r5B1/6+Qdf+vkHX/r5B1/6+Qdf+vkHX/r5B1/6+Qdf+vkHX/r5B1 - /6+Qdf+vkHX/r5B1/6+Qdf+vkHX/r5B1/6+Qdf+vkHX/r5B1/6+Qdf+vkHX/r5B1/6+Qdf+vkHX/r5B1 - /6+Qdf+vkHX/r5B1/6+Qdf+jfl//g1Mp/4BOJN+CUCTfglAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJN+DUSTfhFEl/4NRJf+DUSX/hFEl - /4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+EUSX/g1El/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl - /4RRJf+EUSX/g1El/4NRJf+EUSX/g1El/4NRJf+DUSX/hFEl/4NRJf+DUSX/hFEl/4NRJf+EUSX/hFEl - /4NRJf+EUSX/hFEl/4NRJf+DUSX/g1El/4NRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4NRJN+EUiTfhVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4RSJN+EUiTfhVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4RSJN+EUiTfhVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJN+EUiTfhVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJN+EUiTfhVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJN+EUiTfhVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4RSJN+EUiTfhVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4RSJN+EUSSvhFEkyIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEk - yIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEk - yIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEk - yIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEkyIRRJK8AAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6 - BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAA - AAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6 - BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAA - AAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6 - BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAA - AAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcoAAAAIAAA - AEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAAAAAAAAAAQCgczkApHetAKR3rQCkd60ApHetAKR3rQCkd - 60ApHetAKR3rQCkd60ApHetRPDHrcGBW63lpYOvb1tTr+vr66/r6+uv6+vrr+vr66/v7++vOyMbrTzku - 60ApHetAKR3rQCkd60ApHetAKR3rQCkd60ApHetAKR3rQCkd60ApHM0/KBzgQCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/5aJgv/z8vL/9fTz//v6+v/7+/v/+/v7//v7+//7+/v/+Pj4 - /4p8df9AKh7/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkc3z8oHOBAKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9CKx//s6ql//z8/P/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//o5eT/XUk//0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKRzfPygc - 4EApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0QtIf+/uLT//Pz8//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7/9bRz/9NNyz/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHN8/KBzgQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/RC4i/8K7t//8/Pz/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/0cvJ/0o0Kf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkc30MsH+BjUEb/cF5V/3BeVf9wXlX/cF5V/3BeVf9wXlX/cF5V/25dU/9RPDD/vbSw - //z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//b19X/Uz4z/2NQRf9wXlX/cF5V/3BeVf9wXlX/cF5V - /3BeVf9wXlX/cF5V/1tGO/9BKh3fUz0w4NXQzf/j4N7/2NLQ/+bj4f/Vz8z/6OXk/9PNyv/p5uX/zsjE - /3RiWP+sopz//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7/+/t7f9tWlD/mYyE/9bQzf/o5eP/087L - /+nm5P/Tzcr/6ebl/9PNyv/s6uj/uK+q/0UuId9XQDTg4NzZ/7SqpP+Id27/v7ay/31rYf/Iwbz/dmNZ - /8vEwP9zYFX/c2FW/4JxZ//Tzcn/19HO//Tz8v/7+/v/+/v7//v7+//7+/v/+/v7/6aak/9NNSj/e2lf - /8W9uf93ZVv/ysO//3RiV//LxMD/dWJY/9fSz//Du7b/STEi31lCNODg3Nn/7erp/9fRzv/f29j/0MnF - /+Hd2v/Ox8P/4t7c/87Hw/+5r6r/Vz8x/1E5Kv9XPzH/xr66//v7+//7+/v/+/v7//v7+//7+/v/6OXj - /3BcUP+AbmP/3NfU/87IxP/i3tv/zsfD/+Le3P/W0M3/9vT0/8O7tv9LMiLfXEQ04OHc2f/6+vn/koJ4 - /2hRQ/9nUUP/aFFD/2hRQ/9oUUP/aFFD/2VOQP9PNSX/Si8e/0ovHv+PfnP/+Pj3//v7+//7+/v/+/v7 - //v7+//7+/v/08zI/2xXSv9lTT//aFFD/2hRQ/9oUUP/aFFD/66hmv/p5uP/mIh//1E2KN9eRTXg4dzZ - //n5+P9/a17/TTAe/00wH/9NMB7/TTEe/0wxHv9NMB7/TTEe/00wHv9NMR7/TTAe/19GNv/c19P/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/2tXR/4VxZf9WPCr/TTEf/00wHv9NMB//aFBB/25XSP9xW03/tquk - 32FGNeDi3dr/+vn4/4FsXv9QMh//UDIf/1AyH/9PMh//TzIf/08yH/9PMh//TzIf/08yH/9QMh//a1NC - /93X1P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/8/Lx/87Gwf+ik4n/iXZp/4ZyZf+Xhnv/vrSt - /+rn5f/7+/vfZEg14OLd2v/6+fj/g21e/1M0H/9TNB//UzQf/1M0H/9TNB//UzQf/1M0H/9TNB//UzQf - /2JGM//PxsH/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//5+Pj/+Pj3 - //v6+v/8/Pz/+/v7//v7+99mSTbg493a//r5+P+Fbl7/VjYf/1Y2H/9WNiD/VjYf/1Y2IP9WNiD/VjYg - /1Y2H/9WNiD/ZEYx/9HJw//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v732lMNuDj3tr/+vn4/4hwX/9ZOCD/WTgg/1k4IP9ZOCD/WTgg - /1k4IP9ZOCD/WTgg/1k4IP9ZOCD/fWNQ/+Xg3P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/vfbU024OTe2v/6+fj/inFf/106IP9dOiD/XTog - /106IP9cOiD/XDog/106IP9cOiD/XDog/106IP9eOyL/i3Jg/+nk4f/7+/v/+/v7//v7+//5+Pj/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+99vTzfg5N7a//r5+P+Nc1//YDwh - /2A8If9gPCH/YDwh/2A8If9gPCH/YDwh/2A8If9gPCH/YDwh/2A8If9hPiP/i3Fd/+Lb1v/7+/v/3tfR - /56Id//JvbT/7+zq//v7+v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pv/9vX133JRN+Dl39r/+vn4 - /490YP9kPiH/ZD4h/2Q+If9kPiH/ZD4h/2Q+If9kPiH/ZD4h/2Q+If9kPiH/ZD4h/2Q+If9kPyL/f2BI - /7inmf+DZU3/ZD8i/2pFKf+DZU3/wLGk//v7+//7+/v/+/v7//v7+//7+/v//Pz8/97W0P+UemXfd1Q3 - 4Obf2v/6+fj/knZg/2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi - /2hBIv9oQSL/akMk/2hBIv9oQSL/aEEi/2hBIv+bgW3/+vn5//v7+//7+/v/+/v7//v7+//8/Pz/yLuv - /2pDJN96Vjjg5uDa//r5+P+WeGD/bEMi/2xDIv9sQyL/bEMi/2xDIv9sQyL/bEMi/2xDIv9sQyL/bEMi - /2xDIv9sQyL/bEMi/2xDIv9sQyL/bEMi/2xDIv9sQyL/bEMi/5Z4Yf/u6ub/9/X0//n4+P/6+fj/+Pf2 - //Px7v+9q5z/bUUk335YOODn4Nr/+/n4/5l6Yf9xRiT/cUYk/3FGJP9xRyT/cUck/3FGJP9xRiT/cUYk - /3FGJP9xRiP/cUYj/3FGJP9xRiP/cUYk/3FHJP9xRiT/cUYk/3FGJP9xRiT/dk0r/4pmSf+Xd17/n4Fp - /6CDa/+afGP/j21R/3xVNf9xRSLfgls44Ojg2v/9/Pz/1ci9/8Syo//FsqP/xbKj/8Wyo//FsqP/xbKj - /8Wyo//FsqP/xbKj/8Wyo//FsqP/xbKj/8Wyo//FsqP/xbKj/8Syo//EsqP/xbKj/8Syo//FsqP/xbKj - /8Syo//FsqP/xbKj/8Wyo//FsqP/q5B6/3ZKJd+GXDrg6OHa/+ri3P/d0cf/7ebh/9rNwv/v6uX/2Mq+ - //Dr5//Xyb7/8Ovm/9jLv//v6eX/2s7D/+zl3//e0sj/6ODZ/+LYz//j2dH/59/Y/97Tyf/r5N//287E - /+7p5P/Yy7//8Ovm/9fJvv/w6+f/2Mq+//Tw7P/TxLj/e00o34heOuDp4dr/zLqq/66QeP/TxLb/poZr - /9rMwP+hgGP/3M/E/6B+Yv/bz8T/ooFl/9nLwP+oiW7/0cGz/6+Tev/ItKT/uqGM/7ykj//GsqD/sZV9 - /9C/sf+pinD/18m9/6OBZf/bzsP/oX9i/9zPxf+hf2L/5NrS/9XFuP9+UCnfh1kz4NPCs//i183/3tHG - /+PYz//d0MT/5NnQ/9zPw//k2tH/3M/D/+TZ0P/cz8T/5NnQ/93Qxf/j2M7/3tHG/+HWzP/f08n/4NTJ - /+HWzP/e0sf/4tfO/93Qxf/j2dD/3M/E/+TZ0P/cz8P/5NrR/9zPw//l29L/wamV/4BQJt+BUCXgiVox - /4xfN/+MXzf/jF83/4xeN/+MXjf/jF43/4xeN/+MXjf/jF43/4xfN/+MXjf/jF43/4xeN/+MXjf/jF83 - /4xfN/+MXzf/jF43/4xeN/+MXzf/jF43/4xeN/+MXjf/jF43/4xeN/+MXjf/jF43/4xeN/+HVy3/gVAk - 34RQJOCEUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl - /4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl - /4RRJf+DUSTfhVEl4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4RSJN+FUSXghVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hFIk34VRJeCFUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+EUiTfhVEl4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJN+FUiW3hFEk0YRRJNGEUSTRhFEk - 0YRRJNGEUSTRhFEk0YRRJNGEUSTRhFEk0YRRJNGEUSTRhFEk0YRRJNGEUSTRhFEk0YRRJNGEUSTRhFEk - 0YRRJNGEUSTRhFEk0YRRJNGEUSTRhFEk0YRRJNGEUSTRhFEk0YRRJNGEUSTRhFIktwAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAA - ABAAAAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAD8oHMg/KRzlPykc5T8pHOU/KRzlYU9F - 5b21seXw7u7l+vr65fPy8uV6amPlPykc5T8pHOU/KRzlPykc5UApHMdAKRzfQCkd/0ApHf9AKR3/QCkd - /4Bxaf/4+Pj/+/v7//v7+//i393/V0I4/0ApHf9AKR3/QCkd/0ApHf9AKRzeUTsw32JPRf9iT0X/Yk9F - /2BNQv+KfHT/+fj4//v7+//7+/v/3trY/19MQv9iT0X/Yk9F/2JPRf9iTkT/TDcr3pqMhd+/t7P/u7Kt - /7uyrf+yqKP/jH11/9vX1P/29fX/+/v7/+/u7f+HeG//saeh/7uyrf+7sq3/wrq1/4h4cN6om5Pfz8jD - /5qLgv+ai4H/mImA/3BbTv9fRzn/zMXA//v7+//6+vr/xLy3/49/df+ai4L/nI2E/8jAu/+Id23eq52U - 37uwqf9PMyD/TjEf/04xH/9OMR//UDMh/6iakP/6+vr/+/v7//j49//MxMD/indr/3VfUf+Xhnv/vbSt - 3q2gld+9san/VTYh/1Q1H/9UNR//VDUf/2JFMf/Wz8r/+/v7//v7+//7+/v/+/v7//f29v/x8O7/9vX0 - //v7+96xoZXfwLOp/1w6Iv9bOSD/Wzkg/1s5IP9dOyL/l4Jy/+/s6v/6+fn/9/b1//v7+//7+/v/+/v7 - //v7+//7+/vetKOV38O0qv9jPyP/Yj0h/2I9If9iPSH/Yj0h/2VBJf+ZgW7/va2h/5d+a//Lv7X/+fj3 - //v7+//6+vr/29PN3rillt/Gtqr/a0Mk/2pCIv9qQiL/akIi/2pCIv9qQiL/a0Mj/25GJ/9qQiL/iGdN - /+ji3v/z8O7/7uvn/56Eb968qJbf2M3D/51/Zv+cfmX/nH5l/5x+Zf+cfmX/nH5l/5x+Zf+cfmX/nH5l - /6CDa/+znIn/uqWU/7WfjP+KZ0nevaaT39nLwP/TxLf/1MS3/9PEt//UxLf/1MW4/9PEt//TxLf/08S3 - /9TEt//Uxbj/1MS3/9TEt//ZzMD/rpF53px1VN+ylHr/sZN5/7GTef+xk3n/sZN5/7KTef+xk3j/sZN4 - /7GTeP+xk3n/sZN5/7GTef+xk3n/spR5/5ZtSd6DUSTfhFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl - /4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSTehFIk34VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVEk3oVSJL2EUiTZhFIk2YRSJNmEUiTZhFIk - 2YRSJNmEUiTZhFIk2YRSJNmEUiTZhFIk2YRSJNmEUiTZhFIk2YVQJL0AACYAAAAmAAAAJgAAACYAAAAm - AAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYA -</value> </data> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <value> - AAABAAsAICAQAAEABADoAgAAtgAAABAQEAABAAQAKAEAAJ4DAAAwMAAAAQAIAKgOAADGBAAAICAAAAEA - CACoCAAAbhMAABAQAAABAAgAaAUAABYcAAAAAAAAAQAgALt/AAB+IQAAgIAAAAEAIAAoCAEAOaEAAEBA - AAABACAAKEIAAGGpAQAwMAAAAQAgAKglAACJ6wEAICAAAAEAIACoEAAAMRECABAQAAABACAAaAQAANkh - AgAoAAAAIAAAAEAAAAABAAQAAAAAAIACAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAA - AACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AHJWFlJWFneP//+HJSVD - RwZQBCQEJAf/////dAQkJAYHdCQGBAYI////+HBgQGAEJWBgQkBgWP////hgYEJAZCVAQEBAQkj////4 - QEBAQAQGR3dnZ3ZI////+Ednd2dnQmiI+PiId/////93iI+Pj4V4h4eHh3eI////dnh4eHiGePiIiIiF - ZY///4d4iI+Phnj3ZXd1cGB////4ZWVnf3R492BEJEJEaP///4dkRFZ4ePdAYGQkQlj/////h3d4j3j3 - YGQGBgaP//////////9490JAZEZHj///////////ePdGRgYEJHj//////////3j3RgZGRkZH//////// - //9491YHBhYHBnj4eP//////ePdGRkZGRkZHd0Z4////h2/3RlZWVlZWVlZWR////4Z490ZGRkZGRkZG - Rkf///+GePdkZGRkZGRkZGRkdnd3R3j4iIiIiIiIiIiIiIiIiHZv+Pj4+Pj4+IiPj4+Pj4+GeIeHh4eH - h4eIiHh4eHh4hniIiIj4iIiPiIiPiIiPiIdmV2d2dWd2d2V2d0d2d2dHdmRmRmZkZkZmZGZmRmRmRnZH - ZWdHR2VnR0dlZWdHZWd0ZGZGRmRkZGZGRmRkZGZHZmdlZ2dlZ2dlZ2dlZ2dlZ3RkZGRkZGRkZGRkZGRk - ZGZ2dnZ2dnZ2dnZ2dnZ2dnZ3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAEAAAACAAAAABAAQAAAAAAMAAAAAAAAAAAAAAABAA - AAAAAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A - /wD//wAA////AHUnR4//d0NHYAQH//hgQkNHZWf//0dHR3iIh4//d4iHiHd3aP+Hd4eIRAZX//h2eHg0 - YGj/////iEYGV/////+IRkZGeHj/+IhGRkZGRv/3iHd3d3d3eHeIiIiIiIiIiHh3d3d3d3h3ZmVnZWdl - Z0d0ZGRkZGRkZnZ2dnZ2dnZ3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAwAAAAYAAAAAEACAAAAAAAgAoAAAAAAAAAAAAAAAEAAAAA - AABAKR0ARSweAEkuHgBLMB8ATDAeAFAyHwBSNB8AVDUfAEUuIgBGMSUASTAhAE4yIABLMyYATTQlAEo1 - KQBMNisATzgqAE45LQBQNCIAVjYgAFg3IABSOCcAWjggAF06IABfPCAAXD0nAFA4KQBWOigAVjwrAFE7 - LwBbPioAWT8uAFI9MgBWPjEAUz80AGI9IQBaQC4AXUEvAFdAMwBeRDMAWUM2AF9GNwBXQzgAWEQ4AF1G - OQBdST8AZkAiAGtCIgBgQy8AYkQvAGhFKgBuSy8AcEUiAHRJJQB2TSsAZUYwAGlIMABtSzEAb0wxAGlM - NgBiSToAZUs6AGdMOgBgSz4AZEs8AGJMPwBqTToAc04xAG1QOwB3UTIAfFMzAHBSOwB1UzkAclM8AHZV - PQB5VzwAfFk8AF9LQQBiTUEAYU5EAGZQQQBrVEUAbVVGAGZUSgBvV0gAaldMAGxYSwB2WkUAdFpJAG5b - UABuXFIAcV1RAH9gRwB+YUwAdmNYAHdlWgB6ZVkAeWddAHpoXwB5aWAAfWtgAHxsYgB/bmUAhFElAINT - KQCKXTUAg109AItiPgCSZj8AhmBBAI1lQwCJZkkAkGdFAJBoRgCSbEsAiG1XAI9zXgCUcFIAnXVTAJt2 - WACdeVsAo35fAIBvZgCAcGcAhHFkAIBwaACHd24AiXhtAIx6bwCTeWQAm3tgAIh5cACMe3EAi3xyAIt8 - dACNfXQAkH90AKF/YgCbgWwAjoB5AJKBdQCVgnUAmYV1AJ2HdgCThHwAmYh9AKOBZAClhmsAqodoAKmJ - bgCjinYAqo10AKKLeQCvkHUArZF5ALGVfQCWiYEAmYqCAJ2MgQCZjIUArJaFAKCSiwCjlYsApJWLAKSV - jACvm4sAtJuFALGbigC4nokAqJ2XALuijQCvopkAraKcALylkQC/qJMAsaSbALKlnQC1ppwAtaqkALys - oAC3rqgAv7CkALuxqwC9s6sAvbSuAMGqlwDJtaUAzLmqAMG4swDHurAAwrm1AMi7sgDCu7gAw7y4AMi/ - uQDHwLwAyMC7AMjBvQDNxL4A0cG0ANTFuADKw8AAy8TAAM3IxADQycYA2s7DANHLyADSzMgA187IANXP - zADd0ccA1tDNAN7SyADb084A3NTNANrV0gDc1tIA29bUANzX1ADe2NMA3tnVAN/b2QDg1cwA49vUAOHc - 2gDl3tgA4t7cAOTg3gDq49wA5eLgAOnl4QDt5uEA6eblAO7o4wDq6OYA7unkAOzp6ADu7OwA8OrmAPDr - 6ADx7ekA8O7tAPTv7AD08O0A8vHwAPTy8QD29PIA9vX0APj18wD49vUA+fj2APr6+gD8+/oA/Pz7AP38 - /AAAAAAATw4ODg8ODg4ODg4ODg4ODg4RIiIqwP77+/v7+/v7+58PDg4ODg4ODg4ODg4ODg5PKgAAAAAA - AAAAAAAAAAAAAACLy8vO9P79/f39/f3+0yIAAAAAAAAAAAAAAAAAAAAqKgAAAAAAAAAAAAAAAAAAAAnF - /v7+/v39/f39/f39nAAAAAAAAAAAAAAAAAAAAAAqKgAAAAAAAAAAAAAAAAAAAB3Z/v39/f39/f39/f3t - UwAAAAAAAAAAAAAAAAAAAAAqKgAAAAAAAAAAAAAAAAAAACvl/v39/f39/f39/f7ZHQAAAAAAAAAAAAAA - AAAAAAAqKgAAAAAAAAAAAAAAAAAAAC3q/v39/f39/f39/f7JCQAAAAAAAAAAAAAAAAAAAAAqKwAAAAAA - AAAAAAAAAAAAAE3s/v39/f39/f39/f7BCAAAAAAAAAAAAAAAAAAAAAAqKgAAAAAAAAAAAAAAAAAAAC3q - /v39/f39/f39/f7JCQAAAAAAAAAAAAAAAAAAAAAqKxFjfX19fX19fX19fX19Kyvl/v39/f39/f39/f7Z - IB1lfX19fX19fX19fX19WggrK336+/f5+/n3/Pf3/Pn2hx3X/f39/f39/f39/f3xVSvc9/v69/r79/r7 - 9/n94isrK4f+4Hqp64Od8Z2D7Kl6fQzF/v7+/v39/f39/f39nwpZZdXJYr7ZZqzofp/67EErLIf+0yaH - 5U5e7F9O44gmkAyFw8XK8f79/f39/f3+1ygBEMq0GrDMIZDiP2H37EEsLIv+9s/i+tPa/NrT+uDP2lsK - DQ0QuP79/f39/f39+6EKVuXszur1z+L509r+7E4sLIf+/vS2srKysrKysrKysn8DAgICf/r9/f39/f39 - /uxlGoSysrKysrKyw/7+7EE8PIz+/tofAwMDAwMDAwMDAwMDAgMDKdz+/f39/f39/f3iYQsDAwMDAwMD - YPXgnRVQPIz+/twkAwMEBAQEBAMEBAQEBAQEC6T8/P39/f39/f3+6IwcAwMDAwMDQIBAElG8QI3+/tok - CwsLCwsLBAsLCwsLCwsFC1Tq/v39/f39/f39/vfCfCcSCwsLEhtSpOP8PYz+/twlBQUFBRIFEgUSBQUF - BQUFJLD7/f39/f39/f39/f3+99q3pJGeq8rs/f79Po3+/towBgYGBgYGBgYGBgYGBgcer/r+/f39/f39 - /f39/f39/f7+/v7+/v7+/f38Qo3+/twxBwcHBwcHBwcHBwcHBwdY7P79/f39/f39/f39/f39/f39/f39 - /f39/f39RI7+/tsxExMTExMTExMTExMUExMesfv9/f39/f39/f39/f39/f39/f39/f39/f38RI7+/tw3 - FhQWFhQWFBYUFhQWFhQUO8b+/f39/f39/f39/f39/f39/f39/f39/f39RI/+/ts3FxYXFhcWFxcXFhcW - FhYXF1fV/v39/f39/f39/f39/f39/f39/f39/f38R4/+/t04FxcXFxcXFxcXFxcXFxcXFxdd2P39/f3+ - /f39/fz9/f39/f39/f39/f39SZj+/tw5GBgYGBgYGBgYGBgYGBgYGBgYXdD9/v3soL/0/v39/f39/f39 - /f39/f39SY/+/t05IyMjIyMjIyMjIyMjIyMjIyMjI0q9+u+KLjJzs+L6/f39/f39/f3+/vHWSpj+/t86 - Iy4uLi4uLi4uLi4uLi4uLi4jLi4zmIEuLi4uL0i1/vz9/f39/f3+73RcS5b+/uFDLi4uLi4uLi4uLi4u - Li4uLi4uLi4uLi8uLi4uLi6l/v39/f38/f3+5kxLTJj+/t9FLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v - Ly8vLy+n/v39/f39/fz96UxMTJb+/uFFLzQvNDQvNC80NC80LzQvNC80LzQvNC80NC80NDSW7/r8/f7+ - /fv20EZMapr+/t9GNDU0NDU0NTQ0NTQ1NDU0NTQ1NDU0NTQ0NTQ0NDU2b4KXoKinmpN1TDRqapf+/uRt - RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRjVqapr+/vrh39/h3+Hf4d/h3+Hf - 4d/h3+Hf3+Hf4d/h39/h39/h3+Hf4d/f3+HfzW1qa5r+/O7z/O7w/fDu/PPp/Pbp+Prp9vzu8v3v8P3y - 6/3z6/r46/b76/P97vD+8G5ra5r+33Km6XeT8pN256hx37puyM1wruF1mvB4ie+ZdeSucNTHbLvecark - dpX68HBra5r+33Ko6XiV8pV46ahy37pxyNJxueR2m/CJkvCZduSuctTHcbvecqrnd5n68HBrbJf8/PD2 - /fDz/vPw/Pbw/Pju+vzu+Pzw8/3y8v7z8Pz48Pr68Pj87vj98PL+52xrbGmVmZmZmZmZmZmZmZmZmZmZ - mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkmhsbGdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dn - Z2dnZ2dnZ2dnZ2dnZ2dnZ2dsbGdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dn - Z2dnZ2dsbGdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dsbGdnZ2dn - Z2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dsbGdnZ2dnZ2dnZ2dnZ2dnZ2dn - Z2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dsbGdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dn - Z2dnZ2dnZ2dnZ2dnZ2dnZ2dsbGdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dn - Z2dnZ2dsbGdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dsbGdnZ2dn - Z2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dslHZ2dnZ2dnZ2dnZ2dnZ2dnZ2 - dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnaUAAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAA - dnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAA - AAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAA - dnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAA - AAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAA - dnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAA - AAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2KAAAACAA - AABAAAAAAQAIAAAAAACABAAAAAAAAAAAAAAAAQAAAAAAAEApHQBKLx4ATTAeAFAyHwBTNB8AVjYfAEQt - IQBPNSUASjQpAE01KABNNywATjkuAFY2IABZOCAAXDogAFE5KgBWPCoAUj0xAFc/MQBgPCEAZD4hAFZC - NwBfRjYAV0M4AFlFOgBdSD0AaEEiAGxDIgBqQyQAakUpAHFGIwBxRiQAdk0rAGJGMwBkRjEAYUs9AGVN - PwB8VTUAfFo/AH9cPwBeS0EAZU5BAGdRQwBjUEUAZFFHAGhRQgBlUkgAZ1RJAG1XSQBrV0wAbllMAHFb - TQB1XU0AeF9OAG1aUABuXVMAcFxQAHBeVQB/YEgAe2FOAH5iTgBzYFUAdGJXAH1jUAB1YlgAd2VbAHtp - XwB/a14AfWthAHtsYwCEUSUAh1ctAIlaMQCMXjcAglw9AJJmPgCHYEAAi2NCAI5lQgCCZU4AimZJAIdo - TwCVbUsAmnBLAIpqUACObFAAgmxeAIVuXgCRblAAlG9RAIlwXgCNc18AlnFRAJd3XgCAbmMAgnFnAIVx - ZQCLcmAAj3RgAIN0bACJdmkAiHduAJJ2YACWeGAAmXphAJp8YwCPfnMAinx1AKB+YgCfgWkAm4FtAJ6I - dwCSgngAl4Z7AJiIfwChgGMApoJhAKKBZQCgg2sApoZrAKiJbgCpinAAoYp4AKuQegCukXkAsZV9AJaJ - ggCZjIQAopOJAKaakwC6oYwAvKSPAK6hmgCsopwAuKeZAL2rnACzqqUAtKqkALivqgC+tK4AvrWxAL+4 - tADBqZUAxLKiAMCxpADItKQAzLqqAMi7rwDCu7YAyb20AMW9uQDQv7EAycK9ANLBswDTxLYA08S4ANXF - uADWyL0A2Mq+AMvEwADOxsIAzsjEANHJwwDQycUA2cvAANrNwgDcz8MA287EANzPxADRy8kA0szJANXP - zADd0MUA1tDNAN7SyADY0tAA2tXRAN3W0QDb19UA3NfUAN3Z1wDf29gA4NTJAOHWzADi2M4A49nQAOTZ - 0ADi29YA4dzZAOXe2QDi3twA5uDaAOPg3gDl4NwA6ODZAOri3ADr5N8A7OXfAObj4QDo5eIA7ebhAOjl - 5ADu6eUA7OroAO/s6gDv7e0A8OvmAPPx7gD08OwA8/LxAPTz8gD19PMA9vX0APj39gD4+PcA+vr6APz8 - +wD8/PwA9FH/APZx/wD3kf8A+bH/APvR/wD///8AAAAAABsALwAtAFAAPwBwAFIAkABjALAAdgDPAIgA - 8ACZEf8ApjH/ALRR/wDCcf8Az5H/ANyx/wDr0f8A////AAAAAAAIAC8ADgBQABUAcAAbAJAAIQCwACYA - zwAsAPAAPhH/AFgx/wBxUf8AjHH/AKaR/wC/sf8A2tH/AP///wAsCwsLCwsLCwsLCyhFY7TX19fX2akZ - CwsLCwsLCwsLLhUAAAAAAAAAAAAAftLT19jZ2NjWawAAAAAAAAAAAAAXFQAAAAAAAAAAAAaI2djZ2NjZ - 2ckoAAAAAAAAAAAAABcVAAAAAAAAAAAABo3Z2djY2djYrQoAAAAAAAAAAAAAFxUAAAAAAAAAAAAGlNnY - 2djY2NmpCAAAAAAAAAAAAAAXGCs5OTk5OTk5NxGM2djY2NnY2LIRKzk5OTk5OTk9GBgvrcCvxqvHq8mh - QIXZ2NnY2NjYzTZ/rcmryavJqsuKGTG8iWWMRJhAnz0+X6qv0tjZ2NjYgQlClkGfQJ9Ar5QjMrzLr7Wj - vqHAoYoSDxKW2NjY2dnJOF6zob6hvq3UlCMyvNdwLSotLS0tKQcBAWrW2NjY2NmqMSQqKioqhMlyKjO8 - 10MCAgICAgICAgICFrPY2NnZ2dmwYBACAgItMDOLNLzXVgMDAwMDAwMDAwMts9nZ2NjZ2dnRoIBkYHGL - ydk1vNdXBAQEBAQEBAQEIaDY2NjZ2dnZ2NjZ2dbW19nY2DW811cFDAwFDAwMBQwiotnY2NjY2dnZ2djY - 2dnZ2NjYO73XWg0NDQ0NDQ0NDQ0/wdjY2dnZ2djY2dnZ2NjY2dg8vddhDg4ODg4ODg4ODhNhx9jY2NbZ - 2dnY2NnZ2djY2E+911sTExMTExMTExMTExNbu9mxb5XM19nZ2djY2NjVT7/XYhQUFBQUFBoUFBQUFBQ6 - hk8UHU+Q2djZ2dnZsXpRv9dmGhocGhwaGhoaGhoaGhwcGhoaGm7X2dnY2NmTJlS/12cbGxsbGxsbGxsb - GxsbGxsbGxsbZ87U1tfV0YcnVcLXaR8fHx8fHx8fHx4eHx8fHx8fHx8gUF12dmlYJUpYwtmdj4+Pj4+P - j5GPkY+Rj4+Pj4+Rj4+PkY+Pj497TFnCw67Ipc6ezp7OpM6mxa7CubrCtsWnzp7Ons6k0JtNXMOSfJp3 - pXSsc6x1pXiZfZGCg5F9l3medKx0rHS6nE5Smrq2ura6rLqsuqy6trq2uLa3uLa6trqsuqy6rLqOTktI - SUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUhLS0ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZG - RktLRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGS0tGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZG - RkZGRkZLS0ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRktLRkZGRkZGRkZGRkZGRkZGRkZGRkZG - RkZGRkZGRkZGS3RTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1N0AAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAEAAAACAA - AAABAAgAAAAAAEABAAAAAAAAAAAAAAABAAAAAAAAQCkdAE4xHwBUNR8ATzMgAFAzIQBVNiEAWzkgAFw6 - IgBSPjMAYj0hAFdCOABYRDkAX0c5AGVBJQBqQiIAa0MkAG5GJwBiRTEAX0xCAGBNQgBiTkQAY1BGAGZT - SQBoVkwAcFtOAHVfUQBxYFcAhFElAJJmPwCIZ00Ak2dAAJRnQACWa0QApH1cAIBxaQCKd2sAh3hvAJl6 - YACcfmUAl35rAId5cgCKfHQAjX51AKN/YACZgW4Al4JyAJeGewCXiH8AoINrAKiGaQCxk3gAspR5AJeJ - ggCZioEAnI2EAKqTgQCznIkAtZ+MALifigCmmpQAqJqQALqllACxp6AAsqijALaqoQC6rKIAva2hALuw - qQC9sakAu7KtAL+3swDAsKMAxLGhAMCzqQDDtKoAxraqAMK6tQDEvLcAy7+1AMO8uADIwLsA08S3ANTE - twDUxbgAzMTAAM/IwwDZy8AA2MzBANbPygDb19QA39jTAN7a2ADi390A6OLeAO7r5wDv7OoA7+7tAPHv - 7wDy8O4A9PPzAPb19QD4+PcA+vr6AGfwAAB4/xEAiv8xAJz/UQCu/3EAwP+RANL/sQDk/9EA////AAAA - AAAmLwAAQFAAAFpwAAB0kAAAjrAAAKnPAADC8AAA0f8RANj/MQDe/1EA4/9xAOn/kQDv/7EA9v/RAP// - /wAAAAAALyYAAFBBAABwWwAAkHQAALCOAADPqQAA8MMAAP/SEQD/2DEA/91RAP/kcQD/6pEA//CxAP/2 - 0QD///8AAAAAAC8UAABQIgAAcDAAAJA+AACwTQAAz1sAAPBpAAD/eREA/4oxAP+dUQD/r3EA/8GRAP/S - sQD/5dEA////AAAAAAAvAwAAUAQAAHAGAACQCQAAsAoAAM8MAADwDgAA/yASAP8+MQD/XFEA/3pxAP+X - kQD/trEA/9TRAP///wAAAAAALwAOAFAAFwBwACEAkAArALAANgDPAEAA8ABJAP8RWgD/MXAA/1GGAP9x - nAD/kbIA/7HIAP/R3wD///8AAAAAAC8AIABQADYAcABMAJAAYgCwAHgAzwCOAPAApAD/EbMA/zG+AP9R - xwD/cdEA/5HcAP+x5QD/0fAA////AAAAAAAsAC8ASwBQAGkAcACHAJAApQCwAMQAzwDhAPAA8BH/APIx - /wD0Uf8A9nH/APeR/wD5sf8A+9H/AP///wAAAAAAGwAvAC0AUAA/AHAAUgCQAGMAsAB2AM8AiADwAJkR - /wCmMf8AtFH/AMJx/wDPkf8A3LH/AOvR/wD///8AAAAAAAgALwAOAFAAFQBwABsAkAAhALAAJgDPACwA - 8AA+Ef8AWDH/AHFR/wCMcf8AppH/AL+x/wDa0f8A////ABcICAgIGk9hZmMoCAgICBcKAAAAACJmZmZd - CgAAAAALFhQVFRMpZmZmWxIVFRUUFTtGRUU/KllkZmAkPkVFTDQ+VTY1NRgMVWZmTSo2NlAvQEMEAQEB - BDxmZmVUIxkuTUBEBQICAhFYZmZvZmRiZGZBSQcHBgYHLV9mZWZmb2ZmQkoNCQkJCQ0sQidOZWZmWkdL - Dw8ODg4ODxAOHV1iXjdIVyYmJiYmJiYmJjA4PTklSFZRUlJSU1JRUlJTUlJWOjEzMzMzMzMzMzMzMzMz - MyscGxsbGxsbGxsbGxsbGxsfHhsbGxsbGxsbGxsbGxsbHyEgICAgICAgICAgICAgICEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiVBORw0K - GgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAB/gklEQVR42uxdB6BVxdGeQ++gdCkPFMSKWLAgIgIi - 0uzG3mJvURM1xogtttgTS6qJRo3lT7Fr7MYSa2IXbA8UlV6l886/u+fs7szs7rnnlke9m8h7795ztszu - fvPN7O5sBNVUTdW03qao736/eFf87LG6K1JN1bTupFj8F63uShSuZQRTor77XlELDaCmpLb52hmnP6N6 - lgPPO/1bF5snkWdZfsXkw5ur3ovFv1EUlhMqVz4We/LKJQNw318jUjF9j54tVu4F89WZllvf2GYVF8iv - om1w6oHGVZ56ZzwTQ1wrGIAAgKgIACim4CJSlLatlEFTVpmhPEP5B4An17tOPnkbkT5XAEgIgMWFB2qh - emYBZLEpyauMTHxyrsfkncRFl11CZSveziQj33hIAAAzgLgMbeLRwHmQ0GpMcCdQOUKoD4Aq9rs8WiUq - 8FleLVZAi9arVvLV3QdwecdXCExXN7MupfxS67wK2loeA1gVlc7b+VnaGiBzYpTUhrzP5Cg7l6bOyh+V - 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 - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAABAKRzfQCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd - /kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd - /kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd - /kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/lM/NP7V0M7+/f39 - /v39/f78/Pz++vr6/vr6+v76+vr++vr6/vr6+v76+vr++vr6/vr6+v76+vr++vr6/vr6+v76+vr++vr6 - /vr6+v76+vr++vr6/vr6+v76+vr++vr6/vv7+/79/f3+/f39/vTz8/6Qg3z+Qywg/kApHf5AKR3+QCkd - /kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd - /kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd - /kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkc3j8oHOBAKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/c2JZ//Hv7v/+/v7//v7+//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//v7+ - //7+/v/9/f3/v7i0/045Lv9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKRzfPygc4EApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0EqHv9IMif/TTgt/004Lf9NOC3/TTgt/004Lf9NOC3/TTgt/045Lf+il5H/+/v6 - //7+/v/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/+/v7//v7+/+nm5f9uXVT/QSoe/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN8/KBzgQCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/Y1FH/7mwrP/Nx8T/zcfE - /83HxP/Nx8T/zcfE/83HxP/Nx8T/zcjE/+ro5//+/v7//v7+//z8/P/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39 - //7+/v/8/Pz/qqCb/0YwJP9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkc3z8oHOBAKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0MtIf+soZz//Pz8//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+ - //7+/v/+/v7//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/+/v7//v7+/+bj4f9mVEr/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKRzfPygc4EApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/TTcs/8rEwP/+/v7//v7+ - //7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//39/f/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39 - //7+/v/8/Pz/saej/0YwJP9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHN8/KBzgQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9YRDn/4Nza//7+/v/+/v7//fz9//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8 - //z8/P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v8+//+/v7//v7+//Hv7v91ZV3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkc3z8oHOBAKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/2pYT//t6+r//v7+ - //7+/v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8 - //7+/v/+/v7/0czJ/1E8Mf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKRzfPygc4EApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/fW1l//Tz8//+/v7//f39//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//9/f3//v7+//z8/P+jmJP/Qywh/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN8/KBzgQCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0AqHf+PgXr/+/r6 - //7+/v/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //39/f/+/v7/9PLx/3dnXv9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkc3z8oHOBAKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/Qywg/6KWkf/+/f3//v7+//39/f/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz//v7+//7+/v/h3dv/W0c9/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKRzfPygc - 4EApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9FLyP/sKai - //7+/v/+/v7//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //z8/P/+/v7//v7+/8jBvf9KNSn/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN8/KBzgQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0gyJv+9tLH//v7+//7+/v/8/Pz/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39//7+/v/9/f3/rKOd/0UuIv9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkc - 3z8oHOBAKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/SjQp - /8a/vP/+/v7//v7+//z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//9/f3//v7+//38/P+WioP/QSsf/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKRzfPygc4EApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9LNSr/zcfE//7+/v/+/v7//Pz8//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//39/f/+/v7/+fj4/4V3b/9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHN8/KBzgQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0w2K//Szcr//v7+//7+/v/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v//f79//7+/v/19fT/fG1l/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkc3z8oHOBAKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/TTcs/9TPzf/+/v7//v7+//z8/P/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//+/v7//v7+//Py8v94aGD/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKRzfPygc4EApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9NNyz/1dDN//7+/v/+/v7//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//7+/v/+/v7/8/Lx/3hoX/9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN8/KBzgQCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0w3K//Tzsv//v7+//7+/v/8/Pz/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//v7+//7+/v/19PP/e2tj - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkc30AoHOBAKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9BKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9BKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/TDYq/8/Jxv/+/v7//v7+//z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//9/f3//v7+//j39/+Dc2z/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QSkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKRzfQCgc4EEpHf9BKR3/QSkd - /0EpHf9BKR3/QSkd/0ApHf9AKR3/QCkd/0EpHf9BKR3/QSkd/0ApHf9AKR3/QSkd/0EpHf9AKR3/QSkd - /0EpHf9BKR3/QSkd/0EpHf9BKR3/QSkd/0EqHf9BKR3/QSkd/0EpHf9BKR3/QSkd/0ApHf9AKR3/QCkd - /0EqHf9BKR3/QSkd/0EpHf9BKR3/QSod/0EpHf9BKh3/QSkd/0EpHf9LNCn/yMK+//7+/v/+/v7//Pz8 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//39/f/+/v7//Pz8 - /5KFfv9CKx7/QCkd/0EpHf9BKR3/QSkd/0EpHf9BKR3/QSkd/0ApHf9BKR3/QSkd/0EpHf9BKR3/QSod - /0ApHf9BKh3/QSod/0AqHf9AKR3/QCkd/0EqHf9AKR3/QSkd/0EpHf9BKh3/QSod/0EpHf9BKR3/QSkd - /0EpHf9BKh3/QCkd/0EqHf9BKh3/QSkd/0EpHf9BKR3/QSkd/0EpHf9BKR3/QCod/0ApHf9BKR3/QSkd - /0EpHf9BKR3/QSkd/0EpHN9AKhzgQSkd/0EpHf9BKh3/QSod/0EqHf9BKR3/QSkd/0EpHf9BKh3/QSod - /0EqHf9BKR3/QSod/0EpHf9BKR3/QSkd/0EpHf9BKR3/QSkd/0EqHf9BKh3/QSkd/0EpHf9BKR3/QSod - /0EpHf9BKh3/QSod/0EqHf9BKh3/QSkd/0EqHf9BKh3/QSod/0EqHf9BKh3/QSod/0EpHf9BKh3/QSod - /0EqHf9BKh3/QSod/0kzJ/+/uLT//v7+//7+/v/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v//f39//7+/v/9/f3/p5yW/0UuIv9BKh3/QSkd/0EpHf9BKh3/QSod - /0EpHf9BKR3/QSod/0EpHf9BKR3/QSkd/0EqHf9BKh3/QSod/0EqHf9BKh3/QSkd/0EqHf9BKh3/QSod - /0EqHf9BKh3/QSod/0EqHf9BKh3/QSod/0EpHf9BKh3/QSod/0EqHf9BKh3/QSod/0EpHf9BKR3/QSkd - /0EpHf9BKR3/QSod/0EpHf9BKh3/QSod/0EqHf9BKR3/QSkd/0EqHf9BKh3/QSkc30AqHOBBKh3/QSod - /0EqHf9CKx7/TTYr/1pFOv9bRzz/W0c8/1tHPP9bRzz/W0c8/1xHPP9bRzz/W0c8/1tHPP9bRzz/XEc8 - /1tHPP9bRzz/W0c8/1xHPP9bRzz/W0c8/1xHPP9cRzz/W0c8/1tHPP9cRzz/XEc8/1tHPP9bRzz/W0c8 - /1xHPP9bRzz/W0c8/1tHPP9bRzz/W0c8/1tHPP9WQjb/RC0g/0EqHf9BKh3/SDEl/7Srpv/+/v7//v7+ - //z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz//v7+ - //7+/v/Bubb/STMn/0EqHf9BKh3/QSod/0kyJv9aRjr/W0c8/1tHPP9bRzz/W0c8/1tHPP9bRzz/W0c8 - /1xHPP9cRzz/W0c8/1xHPP9bRzz/W0c8/1tHPP9bRzz/W0c8/1tHPP9bRzz/W0c8/1tHPP9cRzz/W0c8 - /1tHPP9bRzz/XEc8/1tHPP9bRzz/W0c8/1tHPP9bRzz/W0c8/1tHPP9cRzz/W0c8/1pGO/9POS3/Qise - /0IqHf9BKh3/QSod/0EqHf9BKhzfQioc4EIqHf9CKh3/Qiod/15KP/++trH/5uPh/+nn5f/p5+X/6efl - /+nn5f/p5+X/6ufl/+rn5f/p5+X/6efl/+rn5f/q5+X/6ufl/+rn5f/p5+X/6ufl/+rn5f/q5+X/6ufl - /+rn5f/q5+X/6ufl/+rn5f/q5+X/6ufl/+rn5f/q5+X/6ufl/+nn5f/p5+X/6efl/+nn5f/p5+X/6ufl - /8vFwv9WQTX/Qiod/0IqHf9FLiH/ppuV//7+/v/+/v7//f39//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/+/v7//v7+/9zX1f9XQjf/Qiod/0IqHf9CKh3/aFRK - /9rW0//p5+X/6efl/+nn5f/p5+X/6efl/+rn5f/p5+X/6ufl/+rn5f/p5+X/6ufl/+rn5f/q5+X/6efl - /+nn5f/q5+X/6efl/+rn5f/p5+X/6efl/+rn5f/p5+X/6ufl/+rn5f/q5+X/6ufl/+rn5f/q5+X/6efl - /+nn5f/p5+X/6efl/+rn5f/p5+X/5+Tj/8fAvP9oVUv/Qyse/0IqHf9CKh3/Qiod/0IqHd9CKhzgQiod - /0IqHf9ELB//o5iR//v7+/////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////5ODe/19LQP9CKh3/Qiod/0MrHv+Uh4D//Pv7 - //7+/v/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8 - //7+/v/+/v7/8O3t/3BeVP9CKx3/Qiod/0IqHf9SPDH/0cvH//////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////////f39 - /7Wsp/9HMCT/Qiod/0IqHf9CKh3/Qioc30IqHOBCKx3/Qyod/0UtIP+8tK////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ///////s6ej/aFRK/0MrHf9DKx3/Qysd/4Nzav/29fX//v7+//39/f/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39//7+/v/7+vr/mIuE/0QsIP9DKh7/Qysd - /0UtIP+ekor//Pv7//////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////zsjF/0szJ/9DKh3/Qysd/0MqHf9CKhzfQysd - 4EMrHf9DKx7/Ri4h/721sP///////////////////////f39//Du7f/r6Of/6+jn/+vo5//t6+n/+/r6 - ////////////+Pf2/+vp6P/r6Of/6+jn/+vo5//08vH////////////9/f3/7+3s/+vo5//r6Of/6+jn - /+3r6v/7+/v////////////39fX/6+nn/+vo5//r6Of/6+nn/+ro5v91Y1n/Qyse/0QrHf9EKx3/cV9V - //Du7f/+/v7//v7+//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//8/Pz//v7+//7+/f/Hwb3/Tjgr/0MrHv9DKx7/Qyse/2lVSv/e2df/6+nn/+vo5//r6Of/6+nn - //f29f////////////z7+//t6+r/6+jn/+vo5//r6Of/7+3s//39/f///////v7+//Ty8f/r6Of/6+jn - /+vp5//s6ej/+Pb2////////////+/r6/+3q6f/r6Of/6+jn/+vo5//w7u3//v39//////////////// - ///////Qycb/SzQn/0MrHv9DKx3/Qysd/0MrHN9EKx3gRCsd/0QrHf9GLiH/vrWw//////////////// - ///////08/L/j4F5/2lWS/9pVkr/alVK/3loXv/f2tj///////7+/v/HwLz/bFlO/2lWS/9qVkv/aVZL - /6yhm//8/Pv///////Lw7/+LfHT/aVVL/2pWSv9pVUv/e2lf/+Th3////////f39/8G4tP9tWk//alZK - /2pWSv9qV0z/q6Ca/4V2bf9FLB7/RCse/0QrHf9fSj//5eHg//7+/v/+/v7//Pz8//z8/P/8/Pz//Pz8 - //z8/P/8/Pz//Pz8//z8/P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/+/v7//v7+/+vp5/9sWU7/RCse - /0QrHv9EKx7/SjIk/3BdUf9rV0z/aVVL/2lWS/9uW1D/w7u3//7+/v//////5uPh/3ppX/9qVUr/alVL - /2lWSv+IeHD/8vDv///////7+vr/qp6Z/2pXTP9qVkv/aVZL/29cUf/HwLz//v7+///////e2df/d2Ra - /2pWSv9qVkv/alZK/5CBef/19PP//////////////////////9DJxv9MNCf/RCse/0QrHf9EKx3/RCsd - 30QrHeBELB3/RCwe/0cuIf++tbD///////////////////////Hv7v91Ylj/RCwe/0QrHf9FKx3/WUM2 - /9fSzv///////v7+/7mwq/9IMCL/RCwe/0QrHf9ELB7/mIuD//v7+v//////7+zr/29cUv9ELB3/RCwd - /0QrHf9aQzf/3tnX///////9/f3/saeh/0oyJP9ELB3/RCwe/0UtH/+ZjIX/mo2F/0UtH/9EKx7/RCsd - /1M8L//Ry8j//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/9/f3/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//39/f/+/v7/+/v6/6OXkf9HLyH/RCwd/0QsHv9ELB7/Ri4g/0UsHv9EKx7/RCwe - /0ozJf+1q6b//v7+///////g3Nn/WUQ3/0QrHf9EKx3/RCwd/2tXTP/v7Ov///////r5+f+Vh3//Ri0f - /0QsHv9EKx3/TDQm/7qwq//+/v7//////9bQzf9VPjH/RCwd/0QsHf9EKx3/dGJX//Px8f////////// - ////////////0MnG/0w0J/9EKx3/RCsd/0QrHf9EKx3fRSwd4EUsHv9FLB7/SC4h/761sP////////// - ////////////8fDu/3ViV/9FLB7/RSwd/0UsHf9ZQzb/19LO///////+/v7/ubCr/0kwIv9FLB3/RSwd - /0UsHv+YioP/+/v6///////v7Ov/cF1S/0UrHv9FLB7/RSwd/1pEN//e2df///////39/f+yp6H/SjIk - /0UsHv9FLB7/Ri0f/5yPh/+yqKL/SC8i/0UsHf9FLB7/SjIk/7euqf/9/f3//v7+//7+/v/+/v7//v7+ - //7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8//7+/v/+/v7/3NfV - /15JPf9FLB3/RSwd/0UsHv9FLB7/RSwe/0UsHv9FLB7/SzMl/7Wrpv/+/v7//////+Dc2f9aRDf/RSwd - /0UsHf9FLB3/bFhM/+/s6///////+vn5/5aHgP9GLh//RSwe/0UsHv9MNCb/urCr//7+/v//////1tDN - /1U+Mv9FLB7/RSwe/0UsHv90Ylf/8/Hx///////////////////////Qysb/TDUn/0UsHv9FLB7/RSwe - /0QsHd9FLB3gRSwe/0YsHv9ILyH/vrWw///////////////////////x8O7/dWJX/0UsHf9FLB3/RSwd - /1pDNv/X0s////////7+/v+6sKv/STEj/0YsHv9FLB3/RSwe/5mLg//7+/r//////+/s6/9wXVL/RSwe - /0UsHv9FLB7/W0Q3/97Z1////////f39/7Knof9LMiT/RSwe/0YsHv9GLR//nZCJ/8nCvv9ROiz/RSwe - /0UsHv9GLR7/emhe/9jT0f/o5eT/6OXk/+jl5P/o5eT/6OXk/+jl5P/o5eT/6ebk//b19P/+/v7//v7+ - //z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v//f39//7+/v/6+fj/moyE/0gwIf9FLB7/RSwe/0UsHv9FLB7/RSwe - /0YsHv9LMyX/taum//7+/v//////4NzZ/1pEN/9FLB7/RSwe/0UsHv9sWEz/7+zr///////6+fn/loiA - /0cuIP9FLB7/RSwe/0w0Jv+6sKv//v7+///////W0M3/Vj8y/0UsHv9FLB7/RSwe/3ViV//z8fH///// - /////////////////9DKxv9NNSf/RSwe/0UsHv9FLR7/RCwd30UsHeBGLB7/Ri0e/0gvIf++tbD///// - //////////////////Lx8P97al//TjUo/042KP9PNij/YUw//9nU0f///////v7+/720r/9SOiz/TjYo - /042KP9ONij/nZCI//v7+v//////8O7s/3dkWf9ONif/TjYo/042KP9iTED/39vZ///////9/f3/taul - /1M7Lv9ONij/TjYo/083Kf+ilY7/39rY/19JPP9GLR7/Riwd/0YsHf9JMCH/XUc6/2dSRv9nUkb/Z1JG - /2dSRv9nUkb/Z1JG/2dSRv9oU0b/tqul//z8/P/+/v7//f39//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//9/f3//v7+ - //7+/v/e2db/ZE5C/0YtHv9GLR7/Ri0d/0YsHv9GLR//TDMl/1Q9L/+5r6n//v7+///////h3dv/Yk1A - /042KP9ONij/TjUo/3NfVP/w7ez///////r5+f+bjYb/Tzgp/042KP9ONij/VT0w/720r//+/v7///// - /9jSz/9dRzr/TjUn/041KP9ONij/e2lf//Ty8f//////////////////////0MrG/041J/9GLB7/Riwe - /0YtHv9FLB3fRi0d4EYtHv9GLR7/STAh/762sP//////////////////////+vr6/9DKxv/At7L/wLey - /8C3sv/Gvrr/8e/v////////////5+Ti/8G5tP/At7L/wLey/8C3sv/b19T//v79///////6+fj/zsfD - /8C3sv/At7L/wLey/8e/u//08vH///////7+/v/l4d//wbm0/8C3sv/At7L/wbiz/97Z1//19PP/kYF4 - /0oxIv9HLR7/Ri0e/0ctHv9GLR7/Ri0e/0YtHv9HLR7/Ry0e/0YtHv9HLR3/Ri0e/0ctHv+BcGX/9fTz - //7+/v/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//+/v7//v7+//v6+v+soZr/TTUm/0YtHv9GLR7/Ri0e - /0kvIP9/bWP/vbSv/+bi4P////7///////Tz8v/Hv7r/wLey/8C3sv/At7L/zcbC//r5+P///////f39 - /9vW0//AuLL/wLey/8C3sv/CurT/6OTi////////////8e/u/8W9uf/At7L/wLey/8C3sv/Qysb/+/r6 - ///////////////////////Qysb/TjYn/0ctHv9GLR7/Ri0e/0YsHd9HLR3gRy0e/0ctHv9JMCH/v7aw - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ///////////////////////////////////////q5+X/iHdt/0syI/9HLR7/SC0e/0cuHv9HLR7/Ry0e - /0ctHv9HLR7/Ry0e/0ctHv9HLR7/Ry0e/2BKPP/f2tj//v7+//7+/v/8/Pz/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //z8/P/+/v7//v7+/+7r6v+AbmP/SC4f/0ctHv9HLR7/Ry0e/15HOf/MxcH//v39//////////////// - //////////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////9HKxv9PNif/Ry0e - /0ctHv9HLR7/Riwd30ctHeBILh7/SC4e/0owIf+/trD///////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ///////p5eP/eWVa/0guH/9ILh7/SC4e/0guHv9ILh7/SC0e/0guHv9ILR7/SC4e/0guHv9ILR7/TTQl - /7itp//9/f3//v7+//39/f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//39/f/+/v7//f39/9XPy/9jTUD/SC4e - /0guHv9ILh7/SC8f/21ZTP/W0Mz//f39//////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ////////////////////////////0crG/082J/9ILh7/SC4e/0guHv9ILR3fSC0d4EguHv9ILh7/SzEh - /7+2sP///////////////////////////////////////Pz7/+nm5P/m4uD/5uLg/+bi4P/m4uD/5uLg - /+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg - /+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg/+Pf3f+Sgnj/SjAg/0guHv9ILh7/SC4e - /0guHv9ILh7/SC4e/0guHv9ILh7/SC4e/0guHv9JLx//hXRp//b19P/+/v7//v7+//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v//Pz8//7+/v/+/v7/+/v7/7qwqv9WPS7/SC4e/0guHv9ILh7/Si8f/2pUSP/DurX/5eHf - /+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg - /+bi4P/m4uD/5uLg/+bi4P/o5eL/+vr5///////////////////////////////////////Rysb/UDYn - /0guHv9ILh7/SS4e/0gtHd9ILh7gSS4e/0kvHv9LMSH/v7aw//////////////////////////////// - ///////s6ej/c19S/15GOP9eRjj/XkY4/15GOP9eRjj/XkY4/15GOP9eRjj/XkY4/15GOP9eRjj/XkY4 - /15GOP9eRjj/XkY4/15GOP9eRjj/XkY4/15GOP9dRjj/XkY4/15GOP9eRjj/XkY4/15GOP9eRjj/XkY4 - /15GOP9eRjj/XUY3/1M6Kv9JLh7/SS4e/0kuHv9JLh7/SS8e/0kvHv9JLx7/SS4e/0kuHv9JLh7/SS8e - /0kuHv9eRjj/2tTR//7+/v/+/v7//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8//7+/v/+/v7/9vX1 - /6SXj/9SOSn/SS8e/0kvHv9JLh7/SS8e/1Q7LP9dRjf/XkY4/15GOP9dRjj/XkY4/15GOP9eRjj/XkY4 - /15GOP9eRjj/XkY4/15GOP9eRzj/XkY4/15GOP9eRjj/XkY4/15GOP9eRjj/XkY4/2pUR//h3Nr///// - /////////////////////////////////9DJxf9RNyf/SS4e/0kuHv9JLh7/SS4d30kuHuBKLh7/SS8e - /0wyIf/AtrD//////////////////////////////////////+rn5f9iSjz/Si8e/0ovHv9KLx7/Si8e - /0ovHv9KLx7/SS8e/0ovHv9KLx7/SS8e/0kvHv9KLh7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8e - /0ovHv9KLx7/Si8e/0ovHv9KLh7/Si8e/0ovHv9KLx7/Si8e/0ouHv9KLx7/SS8e/0ovHv9KLx7/Si8e - /0ovHv9KLx7/Si8e/0kvHv9KLx7/Si8e/0ouHv9KLx7/Si8e/00zIv+nmpH//Pz8//7+/v/9/f3/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v//f39//7+/v/+/v7/8vDw/52Phv9SOCj/Si8e/0ovHv9KLx7/SS8e - /0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si4e/0ovHv9KLx7/Si8e/0ovHv9KLx7/SS8e - /0ovHv9KLx7/SS8e/0ovHv9KLx7/WD8v/93Y1f////////////////////////////79/f/q5+X/nI2F - /00zI/9KLx7/SS8e/0ovHv9JLh3fSS4e4EovHv9KLx7/TTIh/8C2sP////////////////////////// - ////////////6ufl/2JLPP9KLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8f - /0ovH/9LLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8e - /0ovH/9LLx7/Si8e/0ovHv9LLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9LLx7/Si8e - /0svHv9KLx7/Si8e/3FbTv/q5+X//v7+//7+/v/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39 - //7+/v/+/v7/8u/u/5+QiP9TOir/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8e - /0svHv9KLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Sy8e/0ovHv9KLx7/Si8e/0ovHv9YPy//3tjV - //////////////////7+/v/w7ez/vbOt/3ZiVf9QNSX/Sy8e/0ovHv9KLx7/Si8e/0ouHd9LLx3gSzAe - /0swHv9NMiH/wLew///////////////////////////////////////q5+X/Y0w8/0swHv9LMB//SzAe - /0swHv9LMB7/SzAe/0swHv9LMB7/Sy8e/0swHv9LMB7/SzAf/0svHv9LMB7/SzAe/0svHv9LMB7/SzAe - /0swHv9LMB7/TDAe/0wwHv9LMB7/SzAe/0swHv9LLx7/SzAe/0swH/9LLx7/SzAe/0swHv9LLx7/SzAe - /0swHv9LLx7/SzAe/0svHv9LLx7/Sy8e/0svHv9LLx7/SzAf/0svHv9LMB7/Uzgn/7yyrP/9/f3//v7+ - //39/f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz//f39//7+/v/+/v7/9PLx/6uelv9cQzT/SzAf - /0swHv9LMB7/SzAe/0svHv9LMB7/SzAe/0svHv9LLx//SzAe/0swHv9LLx7/SzAe/0swHv9LMB//SzAe - /0swHv9LLx7/Sy8e/0svHv9LMB7/SzAe/1lAL//e2dX///////z7+//r6Ob/u7Gr/31pXP9UOir/SzAe - /0swHv9LMB7/SzAe/0swHv9RNiX/emZa30svHuBMMB7/TDAe/04zIf/At7D///////////////////// - /////////////////+rn5f9jTDz/SzAe/0swHv9MMB//TDAe/0wwHv9MMB//TDAe/0wwH/9MMB7/TDAe - /0wwHv9MMB//TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB//TDAe - /0wwHv9MMB7/TDAf/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/SzAe - /0wwHv9MMB7/TDAe/0wwHv9MMB//fmpd//Dt7P/+/v7//v7+//z8/P/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v//f39//7+/v/+/v7/+Pf2/8K5s/9rVEb/TTIh/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe - /0wwH/9MMB7/SzAe/0wwHv9MMB//TDAf/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/WD8u - /87Hwv/Sy8f/opSL/3JcTv9UOSn/TDAf/0wwHv9MMB7/SzAe/0swHv9MMB//WT8v/5+Qh//q5uXfTC8e - 4EwwH/9MMB7/TzMi/8G3sf//////////////////////////////////////6ufl/2RMPP9MMB7/TDAf - /00wH/9MMB7/TDAe/0wwHv9NMB7/TDAf/0wwH/9MMB7/TDAe/0wwHv9NMB7/TDAe/0wwHv9MMB7/TDAe - /0wwH/9MMB7/TDEe/0wwHv9MMB7/TTAe/00wHv9NMB7/TDAf/0wwH/9MMB//TTAe/00wHv9MMB7/TDAe - /00wHv9NMB//TDAe/0wwHv9MMR7/TDEe/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDEe/0wwH/9WPCv/w7mz - //39/f/+/v7//f39//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz//f39//7+/v/+/v7//Pv7 - /9rV0v+KeGz/Vjsq/00wHv9MMB7/TDAe/0wxHv9NMB7/TDAe/0wxHv9MMB//TTAe/00wH/9MMB//TDAf - /0wwHv9NMB7/TTAf/0wwH/9MMB//TDEf/00wHv9QNCP/aVFB/1tBMf9PMyL/TTAf/0wwHv9MMB//TDAf - /0wwHv9NMB7/UDQi/3BZS/+/tq//9vTz//39/d9NMB7gTTEf/00xHv9PNCL/wbex//////////////// - ///////////////////////q5+X/ZUw8/00xHv9NMR//TTEe/00xH/9NMR7/TTEf/00xH/9NMR//TTEf - /00xH/9NMR7/TTEe/00xH/9NMR//TTEf/00xHv9NMR7/TTEe/00xHv9NMR//TTEf/00xH/9NMR//TTEe - /00xH/9NMR//TTEf/00xH/9NMR//TTEe/00xHv9NMR7/TjEe/04xHv9NMR//TTEf/00xH/9NMR//TTEf - /00xH/9NMR//TTEf/00xH/9NMR//TTEe/00yH/9/al3/7+3s//7+/v/+/v7//Pz8//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v//f39//7+/v/+/v7//v7+//Hv7v+5r6f/dF5P/1M3Jf9NMR7/TTEf - /00xH/9NMR//TTEf/00xHv9NMR7/TjEe/00xHv9NMR//TTEf/04xH/9NMR//TTEe/00xHv9NMR//TTEf - /00xH/9NMR7/TjEf/00xH/9NMR//TTEe/00xH/9NMR//TzMh/2NKOf+djoT/4t3a//z8/P/+/v7//f39 - 304wHuBOMR//TjEf/1A0Iv/Bt7H//////////////////////////////////////+rn5f9mTTz/TjEe - /04xHv9OMR7/TjEe/04xHv9OMR//TjEf/04xH/9OMR//TjEf/04xH/9OMR//TjEf/04xH/9OMR//TjEe - /04xHv9OMR//TjEf/04xH/9OMR//TjEf/04xH/9OMR7/TjEf/04yH/9OMR//TjEf/04xH/9OMh//TjEe - /04xHv9OMR//TjEe/04xHv9OMR//TjEf/04xH/9OMR//TjEf/04xH/9OMR//TjEf/04xH/9OMR//TjIe - /1c7Kf+6r6j//fz8//7+/v/9/f7/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8 - //7+/v/+/v7//v7+//z8/P/o5OL/sKOb/3NdTv9VOSf/TjIf/04xHv9OMR//TjEf/04xHv9OMh7/TjEe - /04xH/9OMR7/TjEf/04xH/9OMR7/TjEe/04xHv9OMR7/TjEf/04xH/9OMh//TjEe/04xHv9OMR//UTUj - /2RLO/+Xhnz/19DM//j39//+/v7//v7+//7+/v/8/PzfTjIe4E8yH/9OMR//UTQi/8K3sP////////// - ////////////////////////////6ufl/2ZNPP9OMh//TzIe/08yH/9OMh7/TjIf/04yH/9OMR7/TjEf - /08yH/9PMh7/TzIf/08yH/9PMR//TzEf/08xH/9PMh//TzIf/08yH/9PMh//TzIf/08yH/9PMh//TzIf - /08yH/9PMh//TzIf/08xH/9PMR//TzIf/08yH/9OMh//TzIf/08yH/9OMh//TzIf/04yH/9OMh//TjIf - /04yH/9PMh//TzIf/08yH/9PMR//TzIf/08yH/9PMh7/Vzsp/6udlP/7+vr//v7+//7+/v/8/Pz/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8//39/f/+/v7//v7+//7+/v/8+/v/6eXj - /7qvqP+FcmX/Ykg3/1M3Jf9PMh//TzIf/04yH/9OMh//TzIf/08yHv9OMh//TzIf/08yH/9PMh//TzIf - /08yH/9PMh//TzIf/08yH/9RNCL/WkAu/3ZgUf+ml43/2tXR//j39v/+/v7//v7+//7+/v/+/v7//Pz8 - //v7+99PMh7gTzIf/08yH/9RNSL/wrex///////////////////////////////////////q5+X/Zk09 - /08yH/9QMh//TzIf/08yH/9PMh//TzIf/08yH/9PMh//TzIf/08yH/9PMh//TzIf/08yH/9PMh//TzIf - /08yH/9PMh7/TzIf/08yH/9PMh//TzIf/08yH/9PMh//TzIf/08yH/9PMh//TzIf/08yH/9PMh//TzIf - /1AyH/9PMh//TzIf/08yH/9PMh//TzIf/08yH/9PMh//TzIf/08yHv9QMh//TzIf/08yH/9PMh//UDIf - /1c7Kf+hkYf/8vHv//7+/v/+/v7//f39//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//z8/P/9/v3//v7+//7+/v/+/v7//f39//Tz8v/a1ND/tKef/499cP9zXE3/Ykg3 - /1k9K/9TNiP/UTMg/1AzIP9QMyD/UDMg/1AzIP9SNSL/Vzoo/15DMv9rUkP/hHBi/6WWjf/Mxb//7ero - //v7+//+/v7//v7+//7+/v/+/v7//Pz8//z8/P/7+/v/+/v7308yHuBQMx//UDMf/1I1Iv/Ct7H///// - /////////////////////////////////+vn5f9oTj3/UDIf/1AzH/9QMx//UDMf/1EzH/9QMx//UDMf - /1AzH/9RMx//UDIf/1AzH/9RMx//UDMf/1AzH/9QMx//UTMf/1AyH/9QMx//UDMf/1AzH/9QMx//UDMf - /1AyH/9QMx//UDMf/1AzH/9RMx//UDMf/1AzH/9QMx//UDMf/1AyH/9QMx//UDMf/1AyH/9QMx//UDIf - /1AzH/9QMx//UDIf/1AzH/9QMx//UDMf/1AzH/9YPCn/opKI//Px7//+/v7//v7+//39/f/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//9/f3//f39 - //7+/v/+/v7//v7+//7+/v/9/f3/+Pb2/+3q6P/c1tL/y8K8/7qvp/+snpX/pZaM/6KSiP+klIr/qZqR - /7SooP/Fu7X/1c7J/+fj4f/08/H//Pv7//7+/v/+/v7//v7+//7+/v/9/f3//f39//z8/P/7+/v/+/v7 - //v7+//7+/vfUDMe4FEzH/9RMx//UzYi/8K4sf//////////////////////////////////////6+fl - /2hOPf9RMx//UTMf/1EzH/9RMx//UTMf/1EzH/9RMx//UTMf/1EzH/9RMx//UTMf/1EzH/9RMx//UTMf - /1EzH/9RMx//UTMf/1EzH/9RMx//UTMf/1EzH/9RMx//UTMf/1EzH/9RMx//UTMf/1EzH/9RMx//UTMf - /1EzH/9RMx//UTMf/1EzH/9RMx//UTMf/1EzH/9RMx//UTMf/1EzH/9RMx//UTMf/1EzH/9RMx//WTwp - /6KSh//z8O///v7+//7+/v/9/v3/+/z7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8//39/f/+/v7//v7+//7+/v/+/v7//v7+ - //7+/v/+/v7//f39//z8/P/7+/r/+/r6//v7+v/8+/v//f39//7+/v/+/v7//v7+//7+/v/+/v7//v7+ - //7+/v/9/f3//f39//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+99RMx7gUTMf/1IzH/9UNiL/wrix - ///////////////////////////////////////r5+X/aE49/1IzH/9SMx//UjQf/1I0H/9SMx//UjMf - /1EzH/9SMx//UjQf/1IzH/9SMx//UjMf/1IzH/9SNB//UjQf/1IzH/9RNB//UTMf/1IzH/9RMx//UjMf - /1IzH/9SMx//UjQf/1E0H/9SMx//UjMf/1IzH/9SMx//UTMf/1EzH/9RMx//UTMf/1EzH/9SNB//UjMf - /1IzH/9RMx//UTQf/1E0H/9RMx//UTMf/1o9Kf+ikoj/8/Hv//7+/v/+/v7//f39//v8+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//8/Pz//f39//39/f/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+ - //7+/v/+/v7//v7+//7+/v/+/v7//v7+//39/f/8/Pz//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v731M0HuBTNB//UzQf/1U3Iv/DuLH///////////////////////////////////// - /+vn5f9qTz3/UzQf/1M0H/9TNB//UzQf/1I0H/9TNB//UzQf/1M0H/9SNB//UzQf/1M0H/9TNB//UzQf - /1I0H/9SNB//UjQf/1M0H/9TNB//UzQf/1M0H/9TNB//UzQf/1M0H/9TNB//UzQf/1I0H/9TNB//UzQf - /1M0H/9TNB//UzQf/1M0H/9TNB//UzQf/1M0H/9SNB//UzQf/1M0H/9SNB//UzQf/1M0H/9aPSn/o5OI - //Px7//+/v7//v7+//39/f/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //z8/P/8/Pz//Pz8//39/f/9/f3//f39//39/f/9/f3//f39//39/f/8/Pz//Pz8//z8/P/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/vfUzQf4FM1H/9UNR//VTgi - /8O4sf//////////////////////////////////////6+fl/2pPPf9TNB//UzUf/1M1H/9TNR//UzUf - /1M0H/9TNB//UzQf/1M0H/9TNSD/VDUf/1M1H/9TNR//UzQf/1M0H/9TNR//UzQf/1M0H/9UNB//UzQf - /1M1H/9UNB//UzQf/1M0H/9TNB//VDQf/1M0H/9UNB//UzUf/1M1H/9TNR//UzQf/1M0H/9TNB//UzUf - /1M1H/9TNB//VDUf/1Q1H/9UNB//VTUh/5F+cP/y8O///v7+//7+/v/9/v3/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+99UNR/gVDUf/1Q1H/9XOCL/w7ix//////////////////////////////// - ///////r5+X/a1A9/1Q1H/9UNR//VDUf/1Q1IP9UNR//VDUf/1Q1H/9UNR//VDUf/1Q1IP9UNR//VDUf - /1Q1H/9UNR//VDUf/1Q1H/9UNR//VDUg/1Q1H/9UNR//VDUf/1Q1H/9UNR//VDUf/1Q1IP9UNSD/VDUf - /1Q1H/9UNR//VDUf/1Q1H/9UNR//VDUf/1Q1H/9UNR//VDUf/1Q1H/9UNR//VDUf/1Q1IP9XOCT/rp+U - //39/f/+/v7//v7+//z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v731U1H+BVNSD/VTUf - /1c4I//EubH//////////////////////////////////////+vn5f9sUD3/VTYg/1U1H/9VNh//VTUg - /1U1H/9VNh//VTUg/1U1H/9VNSD/VTYg/1U2IP9VNh//VTYf/1U1H/9VNR//VTYf/1U2H/9VNR//VTUf - /1U2H/9VNiD/VTYg/1U2H/9VNR//VTUf/1U1IP9VNSD/VTUf/1U2H/9VNh//VTUf/1U1IP9VNR//VTYg - /1U1H/9VNh//VTYf/1U2H/9VNR//VTYf/1U2IP98Y1L/6OPg//7+/v/+/v7//f39//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/vfVTUf4FY2IP9WNiD/WDki/8S5sf////////////////////////// - ////////////6+fl/2xRPf9WNiD/VjYf/1Y2H/9WNh//VjYg/1Y2IP9WNiD/VjYf/1Y2H/9WNiD/VjYg - /1Y2IP9WNiD/VjYg/1Y2IP9WNiD/VjYf/1Y2H/9WNh//VjYg/1Y2IP9WNiD/VjYg/1Y2IP9WNiD/VTYg - /1Y2IP9WNiD/VjYg/1Y2H/9WNh//VjYg/1U2H/9WNiD/VjYf/1U2H/9VNiD/VjYg/1Y2H/9WNh//VjYf - /1k6JP+gjoH/9vXz//7+/v/+/v7//P38//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+99WNh/gVjYg - /1Y2IP9ZOSP/xLmx///////////////////////////////////////r5+X/bVE+/1Y2H/9WNh//VjYg - /1Y2IP9WNiD/VjYg/1Y2IP9XNiD/VzYf/1Y2IP9WNiD/VzYg/1Y3IP9WNyD/VjYg/1c2IP9XNh//VjYf - /1Y2H/9XNyD/VzYg/1c3IP9XNyD/Vzcg/1Y3IP9WNiD/VzYg/1c2IP9XNyD/VjYf/1Y2H/9XNiD/VzYg - /1c2IP9XNh//VzYg/1Y3IP9XNyD/Vzcg/1c2IP9WNx//Vzcg/2JEL//Bta3//Pv7//7+/v/+/v7//Pz8 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v731c2H+BXNyD/WDcg/1o6I//EubH///////////////////// - /////////////////+vo5f9tUj3/Vzcg/1c3H/9XNx//Vzcg/1c3IP9XNyD/Vzcg/1c3IP9XNyD/Vzcg - /1c3IP9XNyD/Vzcg/1c3IP9XNyD/WDcg/1c3IP9XNyD/Vzcg/1c3IP9XNyD/WDcg/1g3IP9YNyD/WDcg - /1c3IP9XNyD/Vzcg/1c3IP9XNyD/Vzcg/1g3IP9YNyD/WDcg/1g3IP9YNyD/Vzcg/1c3IP9XNyD/Vzcg - /1c3IP9XNyD/Vzcg/3JXQ//Y0cv//v39//7+/v/9/f3//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/vfVzYf - 4Fg3IP9ZNyD/Wzoj/8W5sf//////////////////////////////////////6+jl/25SPf9YNyD/WDcg - /1g3IP9YOCD/WDcg/1g3H/9YNyD/WTcg/1k3IP9ZNyD/WDcg/1g3IP9YNyD/WDcg/1g3IP9ZNyD/WTgg - /1g4IP9YNyD/WDcg/1g3IP9YOCD/WDgg/1k3IP9ZNyD/WDcg/1k3IP9YNyD/WDcg/1g3IP9YNyD/WDgg - /1g3IP9YOCD/WDcg/1g3IP9YNyD/WDcg/1g3IP9YNyD/WDcg/1g3IP9YNyD/WTkh/4VtW//o4+D//v7+ - //7+/v/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+99YNx/gWTgg/1k4IP9bOyP/xbmx//////////////// - ///////////////////////s6OX/b1I+/1k4IP9ZNyD/WTgg/1k4IP9ZOCD/WTgg/1k4IP9ZOCD/WTgg - /1k4IP9ZOCD/WTcg/1k4IP9ZOCD/WTgg/1k4IP9ZOCD/WTgg/1k4IP9ZOCD/WTgg/1k4IP9ZOCD/WTgg - /1k4IP9ZOCD/WTgg/1k4IP9ZOCD/WTgg/1k4IP9ZOCD/WTgg/1k4IP9ZOCD/WTgg/1k4IP9ZOCD/WTgg - /1k4IP9ZOCD/WTgg/1k4IP9ZOCD/XDsk/5iDdP/w7ev//v7+//7+/v/9/f3/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - 31k3H+BaOCD/Wjgg/1w7I//FurH//////////////////////////////////////+zo5f9wUj7/Wjgg - /1o4IP9aOCD/Wjgg/1o4IP9aOCD/WTgg/1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg/1o4IP9ZOCD/Wjgg - /1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg - /1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg/1o4IP9aOCD/YD8n - /6eVif/29PP//v7+//7+/v/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/vfWzgf4Fs5IP9bOSD/XTwj/8W6sf////////// - ////////////////////////////7Ojl/3FTPv9bOSD/Wzkg/1o5IP9bOSD/Wzkg/1s5IP9aOSD/Wzkg - /1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg - /1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg - /1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg/1s5IP9bOSD/ZUUu/7Slmf/49/b//v7+//7+/v/9/f3/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+99cOB/gXDkg/1w5IP9ePCT/xrqx///////////////////////////////////////s6OX/cVQ+ - /1w5IP9cOiD/XDkg/1w5IP9cOiD/XDog/1w6IP9cOSD/XDog/1w5IP9cOiD/XDkg/1s5IP9cOSD/XDkg - /1w5IP9bOSD/XDkg/1w5IP9bOSD/Wzkg/1w5IP9cOSD/XDkg/1w5IP9cOSD/Wzkg/1s5IP9bOSD/Wzkg - /1s6IP9cOSD/XDkg/1w5IP9cOSD/Wzkh/1s6IP9cOSD/XDkg/1w6IP9cOSD/XDog/1w5IP9cOSD/XDkg - /1w5IP9cOSD/aUoy/7yuo//5+Pf//v7+//7+/v/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/8/Pz//Pv7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v731w4H+BcOiD/XDoh/149I//GurH///// - /////////////////////////////////+zo5f9yVD7/XDog/1w6IP9cOSD/XDog/106IP9cOiD/XDog - /1w6IP9cOiD/XTog/1w6IP9dOiD/XTog/106IP9cOiD/XDog/106IP9cOiD/XDog/1w6IP9cOiD/XTog - /1w6IP9cOiD/XDog/1w6IP9cOiD/XToh/106IP9dOiD/XTog/106IP9cOiD/XDog/1w6IP9dOiD/XDoh - /1w6IP9cOiD/XDog/1w6IP9cOiD/XTog/106IP9cOiD/XDog/1w6IP9dOiD/bE02/7+yp//5+Pj//v7+ - //7+/v/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz//v7+ - //7+/v/+/v7//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/vfXTsh4F07IP9eOyD/Xz0j/8e6sf//////////////////////////////////////7Ojl - /3NVPv9dOiD/XTsg/107IP9dOiD/Xjog/106IP9eOiH/XTsh/147If9dOyH/XTog/107IP9dOiD/Xjoh - /107IP9eOyD/Xjoh/146If9dOiD/Xjog/146IP9dOiD/Xjsh/146If9dOiD/Xjsg/146If9eOiD/XTsg - /107IP9dOyD/XTog/107IP9dOyD/XTsg/147IP9eOyD/XTog/146If9eOyH/Xjsh/106If9eOyD/Xjog - /147IP9eOyH/XTsh/107If9dOyD/bU42/76wpv/5+Pf//v7+//7+/v/9/f3//Pz8//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v//P38//7+/v/+/v7//v7+//7+/v/+/v7//f39//z8/P/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+99eOyHgXjsg/147IP9gPiT/x7ux - ///////////////////////////////////////s6OX/c1U+/147IP9eOyH/Xjsh/147IP9eOyD/Xjsg - /147IP9eOyH/Xjsh/147If9fOyH/Xjsh/147If9eOyD/Xjsg/147If9eOyD/Xjsg/147IP9eOyD/Xjsg - /147IP9eOyH/Xjsh/147If9fOyD/Xjsg/147If9eOyD/Xjsg/147If9eOyH/Xjsg/147If9eOyD/Xjsg - /147IP9eOyH/Xjsh/147If9eOyH/Xjsg/147IP9eOyH/Xjsh/147If9eOyH/Xjsh/147IP9fOyH/bU02 - /7ytov/49/b//v7+//7+/v/+/v7/+/z7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/+/v7//v7+ - //38/P/z8O//+/r5//7+/v/+/v7//v7+//39/f/8/Pz//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v73147IeBfOyH/Xzwh/2E+JP/Hu7H///////////////////////////////////// - /+zo5f90VT7/Xzsh/188If9fPCH/Xzwh/188If9fOyH/Xzsh/187If9fOyH/Xzwg/188If9fOyD/Xzsh - /187IP9fPCD/Xzwh/188IP9fPCH/Xzsg/188IP9fOyD/Xzsg/187IP9fOyH/Xzsh/187IP9fOyH/Xzsh - /187If9fOyH/Xzsh/187If9fOyD/Xzsg/187IP9fOyH/Xzsg/187IP9fPCH/Xzwh/187If9fOyH/Xzsh - /187If9fOyH/Xzwh/187IP9fOyH/Xzsg/188If9fPCH/bEsy/7SkmP/18/H//v7+//7+/v/+/v7//Pz8 - //v7+//7+/v/+/v7//v7+//8/Pz//v7+//7+/v/9/fz/29PN/492ZP+0o5b/6eXh//z8/P/+/v7//v7+ - //7+/v/+/v7//f39//z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/8/PzfYDwh4GA8If9gPCH/Yj8k - /8e7sf//////////////////////////////////////7Ojl/3VWPv9gPCH/YDwh/2A8If9gPCH/YDwh - /2A8If9gPCH/YDwh/2A8If9gPCH/YDwh/2A8IP9gPCH/YDwg/2A8If9gPCH/YDwh/2A8If9gPCH/YDwh - /2A8If9gPCH/YDwh/2A8If9gPCH/YDwh/2A8If9gPCD/YDwg/2A8If9gPCH/YDwh/2A8If9gPCH/YDwh - /2A8If9gPCD/YDwg/2A8IP9gPCH/YDwh/2A8If9gPCH/YDwh/2A8If9gPCH/YDwh/2A8If9gPCH/YDwh - /2A8If9gPCD/aUct/6aSg//v6+j//v7+//7+/v/+/v7//f39//v7+//7+/v//P38//7+/v/+/v7//f39 - /9vTzf+CZVD/YT0i/2RBJ/+BZU//uqqe/+rl4v/8+/v//v7+//7+/v/+/v7//v7+//39/f/8/Pz//Pz8 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //z8/P/9/f3//v7+//39/d9gPCHgYTwh/2E9If9jPyT/yLux//////////////////////////////// - ///////s6OX/dlY+/2E8If9hPCH/YTwh/2E8If9hPSH/YT0h/2E8If9hPCH/YTwh/2E8If9hPSH/YT0h - /2E9If9hPCH/YTwh/2E9If9hPSH/YT0h/2E9If9hPSH/YT0h/2E9If9hPSH/YTwh/2E8If9hPSH/YT0h - /2E9If9hPCH/YT0h/2E8If9hPCH/YT0h/2E9If9hPSH/YT0h/2E9If9hPSH/YT0h/2E9If9hPCH/YT0h - /2E9If9hPSH/YTwh/2E8If9hPSH/YT0h/2E9If9hPSH/YT0h/2E9If9hPCH/ZkIo/5mBb//n4d3//f39 - //7+/v/+/v7//f39//z9/P/+/v7//v7+//39/P/c083/gmVQ/2I+Iv9hPSH/YTwh/2E8If9nQyn/gWRO - /7Sjlv/i29b/+Pf2//7+/f/+/v7//v7+//7+/v/+/v7//f39//39/f/8/Pz/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//8/Pz//f39//39/f/9/f3//v7+//7+/v/+/v7//f3932E8IeBhPSH/YT0h - /2RAJP/Iu7H//////////////////////////////////////+3o5f93Vz7/Yj0h/2I9If9hPSH/YT0h - /2I9If9iPSH/Yj0h/2I9If9hPSH/Yj0h/2E9If9hPSH/YT0h/2I9If9iPSH/YT0h/2E9If9hPSH/YT0h - /2E9If9iPSH/Yj0h/2I9If9iPSH/Yj0h/2I9If9hPSH/YT0h/2I9If9iPSH/Yj0h/2E9If9iPSH/Yj0h - /2I9If9hPSH/Yj0h/2I9If9iPSH/YT0h/2I9If9iPSH/Yj0h/2I9If9iPSH/Yj0h/2I9If9iPSH/YT0h - /2I9If9iPSH/Yj0h/2E9If9iPSH/ZEAl/4dsVv/Vy8T/+/v6//7+/v/+/v7//v7+//7+/v/9/Pz/3NTO - /4NmUP9jPiL/Yj0h/2I9If9iPSH/YT0h/2I9If9iPSH/ZUEm/3hYP/+hi3r/0Ma9/+/r6P/7+vr//v7+ - //7+/v/+/v7//v7+//7+/v/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8//7+/v/+/v7//v7+ - //7+/v/+/v7//f39//Xz8f/i29XfYz0h4GM+If9jPSH/ZUAk/8i7sf////////////////////////// - ////////////7ejl/3hYP/9iPiH/Yz4h/2M9If9jPSH/Yz4h/2M9If9jPSH/Yz4h/2M+If9jPSH/Yz0h - /2M9If9jPiH/Yz4h/2M+If9jPiH/Yj4h/2M+If9jPiH/Yz4h/2M+If9jPiH/Yz4h/2M9If9jPSH/Yz0h - /2M+If9jPiH/Yz0h/2M+If9jPiH/Yz4h/2M+If9jPiH/Yz4h/2M+If9jPiH/Yz4h/2M+If9jPiH/Yz4h - /2M+If9jPiH/Yz4h/2M+If9jPiH/Yz4h/2M+If9iPiH/Yz0h/2M9If9jPSH/Yz0h/2M+If9jPiH/Yz4i - /3hYP/+9rqL/9PLw//7+/v/+/v7//f39/9vTzP+EZk//Yz8i/2M+If9jPiH/Yz4h/2M+If9iPiH/Yz4h - /2M+If9jPiH/Yz0h/2Q/Iv9tSi//hmlT/6uXif/Sx7//7enm//r5+P/+/v7//v7+//7+/v/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//9/f3//v7+//7+/v/9/Pz/8/Du/97W0f+6q57/k3ll/3ZVPN9kPiHgZD4h - /2Q+If9mQST/ybyx///////////////////////////////////////t6OX/eVg//2Q+If9kPiH/ZD4h - /2Q+If9kPiH/ZD4h/2Q+If9kPiH/ZD4h/2Q+If9kPiH/ZD4i/2Q+If9kPiH/ZD4h/2Q+If9jPiH/ZD4h - /2Q+If9kPiH/ZD4h/2Q+If9kPiH/ZD4h/2Q+If9kPiH/ZD4h/2Q+If9jPiH/ZD8h/2Q+If9kPiH/ZD4h - /2Q/If9kPyH/ZD4h/2Q+If9kPiH/ZD4h/2Q+If9kPiH/ZD4h/2Q+If9kPyH/ZD4h/2Q+If9kPiH/ZD4h - /2Q+If9kPiH/ZD4h/2Q+If9kPiH/ZD8h/2Q+If9kPiH/ZD4h/2xILf+fiHb/4tzX//j29f/Z0Mn/hGZP - /2VAIv9kPiH/ZD8h/2Q/If9kPyH/ZD4h/2M+If9kPiH/ZD4h/2Q+If9kPiH/ZD4h/2Q/If9kPiH/ZUAj - /25LMP+CZE3/uKaZ//r4+P/+/v7//v7+//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//39/f/+/v7//v39 - /9nPyP+Oc17/dFM5/2hDJ/9kPiH/ZD0h32U+IeBlPyH/ZT8h/2dCJP/JvLL///////////////////// - /////////////////+3o5f95WT//ZT8h/2U/If9lPyH/ZT8h/2Q/If9lPyH/ZT8h/2U/If9lPyH/ZT8h - /2U/If9lPyL/ZD8h/2Q/If9kPyH/ZT8h/2Q/If9lPyH/ZT8h/2U/Iv9lPyH/ZT8i/2U/If9lPyH/ZT8i - /2U/Iv9lPyH/ZT8h/2U/If9lPyH/ZT8h/2U/If9lPyH/ZT8h/2U/If9lPyH/ZT8h/2U/If9lPyH/ZT8i - /2U/If9lPyH/ZT8h/2U/If9lPyH/ZT4h/2U/If9kPyL/ZT8h/2U/If9lPyH/ZT8h/2U/If9lPyH/ZT8h - /2U/If9lPyH/ZT8h/2dBJP9+XkX/mH5q/3paQP9mQCL/ZT8h/2U/If9lPyH/ZT8h/2U/If9lPiH/ZT4h - /2U/If9lPyH/ZT8h/2U/If9lPyH/ZT8h/2Q/If9kPyH/ZT8h/2U/If+Ve2f/9vXz//7+/v/+/v7/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v//f39//7+/v/9/f3/w7Wp/2lEJ/9lPyH/ZT8h/2U/If9kPiHfZj8i - 4GY/If9mPyH/aEIk/8q8sf//////////////////////////////////////7ejl/3pZP/9mQCL/ZkAh - /2Y/If9mQCH/ZkAi/2ZAIv9mPyH/Zj8h/2ZAIf9mPyH/Zj8i/2ZAIf9mPyH/Zj8h/2Y/If9mPyH/Zj8h - /2Y/If9lPyH/ZT8h/2Y/If9mPyL/ZkAh/2Y/If9mPyL/Zj8h/2Y/Iv9mPyH/Zj8i/2Y/Iv9mPyH/ZkAh - /2ZAIv9mQCH/ZkAi/2Y/Iv9mPyH/Zj8h/2Y/If9mPyL/ZkAi/2Y/Iv9mQCH/Zj8h/2Y/If9mPyH/ZkAi - /2ZAIv9mPyL/ZT8h/2Y/If9mPyH/Zj8h/2Y/If9mQCH/Zj8h/2ZAIf9mPyH/Zj8h/2ZAIf9mQCL/ZkAh - /2Y/If9mPyH/Zj8i/2Y/If9mPyH/Zj8h/2Y/If9mPyH/Zj8h/2Y/Iv9mPyH/ZkAi/2ZAIf9mPyH/Zj8h - /2Y/If9mPyH/ZkAh/5V7Z//39fP//v7+//7+/v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//9/f3//v7+ - //39/f/Etan/akUo/2Y/Iv9mPyH/Zj8h/2U+Id9nQCLgZ0Ai/2dAIv9pQyX/yryy//////////////// - ///////////////////////t6eX/e1o//2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ah - /2dAIf9nQCL/Z0Ai/2dAIf9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai - /2dAIv9nQCH/Z0Ai/2dAIv9nQCH/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIv9nQSL/Z0Ai - /2dAIv9nQCH/Z0Ah/2dAIv9nQCH/Z0Ai/2dAIf9nQCL/Z0Ah/2dAIv9nQCL/Z0Ai/2dAIf9nQCH/Z0Ai - /2dAIv9nQCL/Z0Ai/2dAIf9nQCH/Z0Ai/2dAIv9nQSL/Z0Ah/2dAIv9nQCH/Z0Ai/2dAIv9nQCL/Z0Eh - /2dAIv9nQCH/Z0Ah/2dAIv9nQCL/Z0Ah/2dAIf9nQCL/Z0Ai/2dAIf9nQCH/l3xn//f18//+/v7//v7+ - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//39/f/+/v7//f39/8S1qf9rRSj/Z0Ah/2dAIv9nQCH/ZkEh - 32hAIuBoQSL/aEEh/2pDJf/KvbL//////////////////////////////////////+3p5f98Wj//aEAh - /2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEh/2hBIf9oQSL/aEEh - /2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEh/2hBIv9oQSL/aEEi/2hBIv9oQSL/aUEi/2lBIv9oQSL/aEEi - /2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi/2hBIv9oQSH/aEEi/2hBIf9oQSH/aEEi - /2hBIv9oQSH/aEAh/2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi/2hBIf9oQSL/aEEi - /2hBIf9oQSL/aEEi/2hBIv9pQSL/aEEi/2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi/2hBIv9oQSH/aEEh - /2hBIv9oQSL/aEEi/2hBIv+XfGf/9/Xz//7+/v/+/v7/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39 - //7+/v/9/f3/xLaq/2xGKP9oQSH/aEEi/2hBIv9oQSHfaEAi4GlBIv9pQSL/a0Ql/8u9sv////////// - ////////////////////////////7enl/31bP/9pQSL/aUIi/2lBIv9pQSL/aUIi/2lBIv9pQiL/aUIi - /2lBIv9pQSL/aUEi/2lBIv9pQiL/aUIi/2lCIv9pQSL/aUEi/2lBIv9pQiL/aUIi/2lCIf9pQSL/aUEi - /2lCIv9pQSL/aUEi/2lBIv9pQSL/aUEi/2lBIv9pQiL/aUEi/2lBIv9pQSL/aUEi/2lBIv9pQSL/aUEi - /2lCIv9pQSL/aUEi/2lBIv9pQSL/aUEi/2lBIv9pQSL/aUEi/2lCIv9pQSL/aUEi/2lBIv9pQSL/aUIi - /2lBIv9pQSL/aUEi/2lBIv9pQiL/aUEi/2lCIv9pQiL/aUEh/2lBIv9pQSL/aUEi/2lBIv9pQSL/aUEi - /2lBIv9pQSL/aUEi/2lBIv9pQSL/aUEi/2lBIv9pQSH/aUEh/2lBIv9pQSL/aUEi/5h9Z//39fP//v7+ - //7+/v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//9/f3//v7+//39/f/Ftqr/bUYo/2lCIv9pQSL/aUEi - /2lBId9rQiLgakIi/2pCIv9tRSX/y72y///////////////////////////////////////u6eX/fls/ - /2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/2pCIv9qQiL/a0Ii/2tCIv9rQiL/akIi/2pCIv9qQiL/a0Ii - /2pCIv9rQiL/a0Ii/2tCIv9qQiL/akIi/2pCIv9qQiL/a0Ii/2tCIv9qQiL/akIi/2pCIv9qQiL/akIi - /2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/2tCIv9qQiL/akIi/2pCIv9qQiL/a0Ii - /2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/2pCIv9qQiL/akMi/2tCIv9rQiL/akIi/2pCIv9qQiL/akIi - /2tCIv9qQiL/akIi/2tCIv9qQiL/akIi/2pCIv9qQiL/akIi/2pDIv9qQiL/akIi/2pCIv9qQiL/akIi - /2pCIv9qQiL/akIi/2pCIv9rQiL/mX1n//f18//+/v7//v7+//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //39/f/+/v7//f39/8W2qv9uRyj/a0Ii/2tCIv9qQiL/akIi32tDIuBrQyL/a0Mi/21GJf/LvbL///// - /////////////////////////////////+7p5f9/XD//a0Mi/2xDIv9sQyL/a0Mi/2xDIv9sQyL/a0Mi - /2tDIv9rQyL/bEMi/2xDIv9rQyL/a0Ii/2tDIv9rQyL/bEMi/2xDIv9sQyL/bEMi/2tCIv9rQyL/bEMi - /2xDIv9sQyL/a0Mi/2tDIv9rQyL/bEMi/2xDIv9sQyL/a0Mi/2tDIv9rQyL/a0Mi/2tDIv9sQyL/bEMi - /2tDIv9sQyL/bEMi/2xDIv9sQyL/a0Mi/2xCIv9sQyL/bEMi/2xDIv9rQyL/a0Mi/2xDIv9rQiL/a0Mi - /2tDIv9rQyL/bEMi/2xDIv9sQyL/bEMi/2tDIv9rQyL/a0Mi/2xDIv9rQyL/a0Mi/2tDIv9sQyL/bEMi - /2xDIv9rQiL/bEMi/2tDIv9rQyL/a0Mi/2tDIv9rQyL/a0Mi/2xDIv9sQyL/a0Mi/2tDIv+Zfmf/9/Xz - //7+/v/+/v7//Pz8//z8/P/7/Pv/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/8/Pz//f39//7+/v/9/f3/xraq/3BIKP9rQyL/a0Mi - /2xDIv9sQyLfbEMi4GxDIv9sQyL/bkYl/8y9sv//////////////////////////////////////7unl - /4BcP/9sQyL/bEMi/2xDIv9sRCL/bEMi/2xDIv9sQyL/bEMi/2xDIv9sQyL/bEMi/2xEIv9tQyL/bEMi - /2xDIv9sQyL/bUMi/2xDIv9sRCL/bEMi/2xDIv9sRCL/bEQi/2xDIv9sQyL/bEMi/2xDIv9tQyL/bUMi - /2xDIv9tQyL/bUMi/21DIv9tQyL/bEMi/2xDIv9sQyL/bEQi/21DIv9sQyL/bEMi/2xDIv9sQyL/bUMi - /21DIv9tQyL/bUMi/21DIv9sQyL/bEMi/2xDIv9sQyL/bEMi/21EIv9sRCL/bEMi/2xDIv9tQyL/bEMi - /2xDIv9sQyL/bEMi/2xDIv9sQyL/bEMi/2xDIv9tQyL/bUMi/2xDIv9tQyL/bEMi/2xDIv9tQyL/bEMi - /2xDIv9sQyL/bUMi/21DIv9sQyL/bEMi/5p9Z//39fP//v7+//7+/v/+/v7//v7+//7+/v/+/v7//f39 - //39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+/v7//v7+ - //7+/v/+/v7//v7+//39/f/Gtan/cEko/2xDIv9sQyL/bEMi/2xDIt9tRCLgbkQi/25EIv9vRyX/zL6y - ///////////////////////////////////////u6eX/gV1A/21EIv9uRCP/bkQi/25EIv9uRCL/bkQi - /21EI/9uRCL/bkQi/25EIv9uRCL/bkQi/25EIv9tRCL/bkQi/25EIv9uRCL/bkQj/21EIv9uRCL/bkQi - /25EIv9uRCP/bkQi/25EIv9tRCL/bkQi/25EIv9uRCL/bkQi/25EIv9uRCL/bkQi/25EIv9uRCL/bUQi - /21EIv9uRCL/bkQi/25EIv9uRCL/bkUi/25EI/9uRCL/bkQi/25EIv9tRCL/bkQi/25EIv9uRCL/bkQi - /21EI/9uRCL/bUQi/21EIv9tRCL/bkQi/21EIv9tRCL/bkQi/25EIv9uRCL/bkQi/25EIv9uRCL/bkQi - /25EIv9uRCL/bkQi/21EIv9tRCL/bkQi/25EIv9uRCL/bkQi/25EIv9uRCL/bkQi/21EIv9uRCP/iGZK - /+Td1//8+/v//f39//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+ - //7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//79/f/9/Pz/9fLw/6qSf/9vRiX/bkQi - /25EIv9uRCL/bUQi325EIuBvRCL/b0Qi/3FHJv/NvrL///////////////////////////////////// - /+7p5f+CXUD/b0Ui/25FI/9vRSL/b0Ui/29FIv9vRSP/bkUi/29FIv9vRCL/bkUi/25FIv9vRSL/b0Ui - /25FI/9uRSP/bkUj/25FI/9uRSP/b0Ui/29FIv9vRSP/b0Uj/29FI/9vRSP/b0Ui/25FIv9vRSL/b0Uj - /29FIv9uRSL/bkUj/29FI/9vRSL/b0Ui/25FI/9vRSP/bkUi/29EI/9vRCP/b0Qi/29EIv9vRSL/b0Ui - /29FIv9vRCP/bkUi/25FIv9vRSL/b0Ui/29FI/9uRSL/bkUi/25EIv9uRCP/b0Qi/29FIv9vRSL/b0Ui - /29EIv9vRSL/b0Uj/25EI/9uRSL/b0Qi/29EIv9vRSP/b0Uj/29FIv9uRCP/b0Qi/29EI/9vRSL/b0Ui - /29EI/9vRCP/b0Ui/29FIv9vRSL/b0Qi/25EI/9xSCX/jGtP/66Xg//FtKb/2M3D/+Xd1//u6ub/9vPx - //n49v/6+fn//Pv6//z8/P/9/f3//f39//79/f/9/f3//f39//38/P/8+/v/+/r5//r49//49vT/8e7r - /+ni3f/e1Mz/zb6y/7eikf+bfmb/dlAv/29FI/9vRSL/b0Qi/29FI/9uRCLfb0Uj4G9FI/9vRSP/cUgm - /82+sv//////////////////////////////////////7unl/4NeQP9vRSP/cEUj/29FI/9vRSL/b0Ui - /3BFI/9wRSP/cEUj/3BFI/9vRSL/cEUi/29FIv9wRSP/cEUj/29FI/9vRSP/cEUj/3BFI/9wRSL/b0Uj - /29FI/9vRSP/cEUj/3BFI/9wRSP/cEUi/3BFIv9vRSP/cEUj/3BFIv9vRSP/cEYj/29FI/9wRSP/b0Uj - /29FI/9wRSP/cEUj/3BFI/9vRSL/b0Ui/29FIv9vRSP/b0Ui/29FIv9wRSL/cEUi/3BFI/9wRSP/b0Uj - /3BFIv9wRSP/cEUj/29FI/9vRSP/b0Uj/3BFI/9vRSP/b0Uj/3BFI/9wRSP/cEUj/29FIv9wRSL/cEUi - /3BFI/9wRSL/b0Ui/3BFI/9vRSP/cEUj/29FI/9wRSP/cEUj/3BFI/9wRSP/cEUi/3BFIv9wRSL/b0Ui - /29FI/9wRiP/cUcl/3NKKP94UDD/gVw9/4pnSv+VdVz/ooZv/6yUf/+1n43/u6eX/8Ctn//DsqP/xLOl - /8SypP/Cr6H/vaqa/7eikf+wmYX/pYt1/5p8ZP+NbFH/hWBD/3xVNf91Syr/ckgm/3BGI/9wRSL/cEUj - /29FI/9wRSL/cEUi/3BEIt9wRiPgcUYj/3FGI/9ySCX/zb6y//////////////////////////////// - ///////u6eX/hF9A/3FGI/9xRiP/cEYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYi - /3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cEYj - /3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiL/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj - /3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj - /3FGI/9wRiP/cUYj/3FGI/9xRiP/cUYi/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiL/cUYi - /3FGI/9xRiP/cUYj/3FGIv9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj - /3FGI/9xRiP/cUck/3JHJP9yRyT/ckck/3JHJf9yRyX/ckcl/3FHJf9xRyT/cUck/3FHJP9xRyP/cUYj - /3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUUi33FGI+ByRyP/ckcj - /3NJJv/NvrL//////////////////////////////////////+7p5f+FX0D/ckYj/3JGI/9xRyP/ckcj - /3JHI/9yRyP/ckcj/3FHI/9yRiP/ckcj/3JGI/9yRiP/cUcj/3FHI/9yRyP/ckYj/3JHI/9yRyP/ckcj - /3JHI/9yRyP/ckYj/3JHI/9yRyP/ckYj/3JGI/9yRyP/ckcj/3JGI/9yRiP/ckYj/3JHI/9yRyP/ckcj - /3JHI/9yRyP/ckYj/3JHI/9yRiP/ckYj/3JGI/9yRyP/ckcj/3JGI/9yRiP/cUYj/3JGI/9yRyP/ckYj - /3JGI/9yRiP/ckcj/3JHI/9yRyP/ckYj/3JGI/9yRiP/ckYj/3JHI/9yRyP/ckci/3JGI/9yRiP/ckYj - /3JHI/9yRyP/ckYj/3JGI/9yRyP/ckcj/3JGI/9yRiP/ckcj/3JHI/9xRyP/cUYj/3FGI/9yRiP/ckcj - /3JGI/9yRiP/ckcj/3JHI/9yRyP/ckYj/3JHI/9yRyP/ckYj/3JHI/9yRyP/ckcj/3JGI/9yRiP/ckcj - /3JGI/9yRiP/ckYj/3JGI/9yRyP/ckcj/3JHI/9yRyL/ckcj/3JGI/9yRiP/ckYj/3JHI/9yRyP/ckYj - /3JHI/9yRiP/ckcj/3JHI/9yRSPfckYj4HNHI/9zRyP/dUkm/86/sv////////////////////////// - ////////////7+rl/4VgQP9zRyP/c0cj/3JHI/9zRyP/ckcj/3JHI/9zRyP/c0cj/3NHI/9yRyP/ckcj - /3NHI/9zRyP/c0cj/3NHI/9zRyP/ckcj/3JHI/9zRyP/c0cj/3NHI/9yRyP/c0cj/3NHI/9zRyP/c0cj - /3NHI/9zRyP/c0cj/3NHI/9zRyP/c0cj/3NHI/9yRyP/ckcj/3NHI/9zRyP/c0cj/3NHI/9zRyP/c0cj - /3NHI/9zRyP/c0cj/3NHI/9zRyP/c0cj/3NHI/9zRyP/c0cj/3NHI/9yRyP/c0cj/3NHI/9zRyP/c0cj - /3NHI/9zRyP/c0cj/3NHI/9zRyP/ckcj/3JHI/9zRyP/c0cj/3NHI/9zRyP/c0cj/3NHI/9yRyP/c0cj - /3NHI/9zRyP/c0cj/3JHI/9yRyP/c0cj/3NHI/9yRyP/c0cj/3NHI/9zRyP/c0cj/3NHI/9yRyP/c0cj - /3NHI/9yRyP/c0cj/3NHI/9zRyP/c0cj/3NHI/9zRyP/c0cj/3NHI/9zRyP/c0cj/3NHI/9zRyP/c0cj - /3NHI/9yRyP/c0cj/3NHI/9zRyP/c0cj/3JHI/9zRyP/c0cj/3NHI/9zRyP/c0cj/3JGI990RyPgdEgj - /3RII/92Sib/zr+y///////////////////////////////////////x7en/mHdc/4hjQ/+IYkP/iGJD - /4hjQ/+IYkP/iGJD/4hiQ/+IYkP/iGND/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD - /4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IY0P/iGJD/4hiQ/+IY0P/iGJD/4hiQ/+IYkP/iGJD - /4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IY0P/iGND/4hiQ/+IYkP/iGJD - /4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IY0P/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD - /4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGND/4hiQ/+IYkP/iGND/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD - /4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD - /4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGND - /4NcO/91SST/dEgj/3NHI/9zSCP/c0gj33VII+B1SCP/dUgj/3dLJv/Pv7L///////////////////// - //////////////////39/P/y7uv/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ovo//Ds6P/w7Oj/8Ozo - //Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w6+j/8Ovo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo - //Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo - //Ds6P/w7Oj/8Ovo//Ds6P/w7Oj/8Ozo//Ds6P/w6+j/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w6+j/8Ozo - //Ds6P/w6+j/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo - //Ds6P/w7Oj/8Ovo//Dr6P/w6+j/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo - //Dr6P/w6+j/8Ozo//Ds6P/w7Oj/8Ovo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo - //Ds6P/w6+j/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/0cK2/3pPK/91SCP/dUgj/3VII/90SCPfdUgj - 4HVJI/91SSP/d0sm/8+/sv////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ///////c0cf/fFEs/3VJI/92SSP/dkkj/3VJI992SSPgdkkj/3ZJI/94Syb/z7+y//////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////93RyP98USz/dkkj/3dJJP93SSP/dkkj - 33dJI+B4SiP/eEoj/3lMJv/QwLL///////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ////////////3dHH/31SLf94SiP/eEok/3hKI/94SiPfeEkj4HhKJP94SiT/ek0n/9DAsv////////// - /////////////f38/+3n4v/n39j/59/Y/+ff2P/p4tz/+vj3////////////9vPw/+jg2f/n39j/59/Y - /+ff2P/y7en///7+///////9/Pv/7Obg/+ff2P/n39j/59/Y/+rj3P/7+fj////////////18u//6ODZ - /+ff2P/n39j/59/Y//Pu6////v7///////z7+v/r5N//59/Y/+ff2P/n39j/6uPd//z7+v////////// - //Tx7v/o39n/59/Y/+ff2P/o39n/8+/r////////////+/r5/+vk3//n39j/59/Y/+ff2P/r5d///Pv6 - ////////////8+/r/+ff2P/n39j/59/Y/+ff2P/08O3////////////7+vn/6+Te/+ff2P/n39j/59/Y - /+zl4P/8+/r////////////y7ur/6N/Y/+ff2P/n39j/6ODZ//Xy7/////////////v5+P/q4tz/59/Y - /+ff2P/n39j/7Obg//38+////////v7+//Ht6f/n39j/59/Y/+ff2P/o4Nn/9vPw////////////+vj2 - /+ni2//n39j/59/Y/+ff2P/t5+L//v38///////////////////////d0cj/flIt/3lKJP95SiP/eEoj - /3hKI995SyPgeUsk/3lLI/97TSf/0MCy///////////////////////28/H/qIlw/4phPv+KYT//imE/ - /5ZyU//m3db////////+/v/TxLf/jGVD/4phPv+KYT7/imE//76olP/8+/v///////Tx7v+lhWr/imE+ - /4phP/+KYT//l3NV/+rj3P///////v39/8+9r/+NZUT/imE//4phPv+LYkD/wqya//38+///////8u3p - /6B+Yv+KYT//imE//4phP/+ad1n/8Ovm///////+/v3/y7qr/4xlQ/+KYT//imE//4xkQv/EsJ///v39 - ///////u6OP/nnxf/4phP/+KYT//imE//59+Yv/w6+b//////////v/Er57/i2NB/4phP/+KYT//jGRC - /8m2p//+/v7//////+3m4f+beFv/imE//4phP/+KYT//oYFl//Hs5////////v39/8Cql/+LY0H/imE/ - /4phP/+OZkT/0MCy//7+/v//////7OTe/5dzVP+KYT//imE//4phP/+igmb/9PHu///////7+vr/vaWS - /4tiQP+KYT//imE//49nRv/UxLj///7+///////l3NX/lG9P/4phP/+KYT//imE//6iJcP/39PP///// - /////////////////93SyP9/Uy3/eUsk/3pLI/95SyP/eUsj33lLJOB7TCT/ekwk/3xOJ//RwLL///// - //////////////////Xy7/+delz/e0sk/3tLJP97TCT/iV88/+LY0P////////7+/828rf99UCj/ekwk - /3pMJP97TCT/tpyH//z7+v//////8/Ds/5l1V/96TCT/ekwk/3pMJP+JYD3/59/X///////+/f3/yLSk - /35QKv96TCT/e0wk/3tNJf+5oYz//fz7///////w6+b/k21M/3pMJP97TCT/e0wj/4xkQv/u6OP///// - //7+/f/FsJ//flAp/3pMJP96TCT/fU8n/7ylkf/+/f3//////+zl3/+Qakj/e0wk/3pLJP96TCT/k21M - /+7o4//////////+/7ykkP98TSb/ekwk/3tMJP99Tyj/wq2b//7+/v//////6uPd/45mRP97TCT/e0wk - /3pMJP+VcFD/7+nk///////+/f3/t56J/3tNJv96TCT/ekwk/35RK//KuKj//v7+///////p4dr/imA9 - /3pLJP96TCT/ekwk/5ZxUf/z7+z///////v6+f+0moP/e00m/3tMJP97TCT/f1Is/869rv///v7///// - /+HXzv+GXDf/ekwk/3pMJP97TCT/nHlc//bz8f//////////////////////3dLI/4BTLf97TCT/eksk - /3pMJP96SyPfekwk4HtMJP97TCT/fU4n/9HAsv//////////////////////9fLv/516XP97TCT/e0wk - /3tMJP+KYDz/49jQ/////////v7/zryt/35QKf97TCT/e0wk/3tMJP+2nYb//Pv6///////08Oz/mnZX - /3tMJP97TCT/e0wk/4pgPf/n39f///////79/f/ItaT/f1Eq/3tMJP97TCT/fE0l/7qhjP/9/Pv///// - //Dr5v+TbU3/e0wk/3tNJP97TCT/jWRC/+7o4////////v79/8Wwn/9+UCn/e0wk/3tMJP99Tyf/vaWR - //79/f//////7OXf/5JqSf97TCT/e0wk/3tMJP+TbUz/7ujj//////////7/vKSQ/31OJ/97TCT/e0wk - /35QKP/DrZv//v7+///////q493/j2ZE/3tMJP97TCT/e0wk/5ZwUP/v6eT///////79/f+4non/fE4m - /3tMJP97TCT/f1Ir/8q4qP/+/v7//////+nh2v+KYD3/e0wk/3tMJP97TCT/l3FR//Tv7P//////+/r5 - /7Sag/98TSX/e0wk/3tMJP+AUyz/zr2u///+/v//////4tfP/4dcN/97TCT/e0wk/3tMJP+delz/9vPx - ///////////////////////e0sj/gVMt/3tMJP97TCT/e0wk/3tMJN98TCTgfEwk/3xMJP9+Tyf/0cGy - ///////////////////////18u//nnpc/3xMJP98TCT/fEwk/4pgPP/j2ND////////+/v/Ova3/f1Ap - /3xMJP98TCT/fE0k/7edh//8+/r///////Tw7P+adlf/fE0k/3xMJP98TCT/i2E9/+ff1////////v39 - /8m1pP+AUir/fEwk/3xMJP99TiX/uqGM//38+///////8Ovm/5RuTf98TST/fE0k/3xNJP+OZUL/7ujj - ///////+/v3/xbGf/39RKf98TCT/fEwk/35PJ/+9pZH//v39///////s5d//kmtJ/3xMJP98TCT/fE0k - /5RtTP/u6OP//////////v+9pJD/fk8n/3xMJP98TST/f1Ao/8Otm//+/v7//////+vj3f+PZ0T/fE0k - /3xNJP98TCT/lnBQ/+/p5P///////v39/7ifif99Tyb/fE0k/3xNJP+AUiv/y7io//7+/v//////6eHa - /4thPf98TCT/fEwk/3xNJP+XclH/9O/s///////7+vn/tZqD/31OJv98TST/fE0k/4FTLP/Ova7///7+ - ///////i18//iFw3/3xNJP98TCT/fEwk/556XP/39PH//////////////////////97SyP+BVC3/fEwk - /3xNJP98TST/fEwk331NJOB9TST/fU0k/39PJ//RwbL///////////////////////bz8P+mhmr/iFw3 - /4hcN/+IXDf/lW5N/+Xc1P////////7+/9PDtP+LYDv/iFw3/4hcN/+IXTf/vaWR//z7+v//////9fHu - /6OBZf+IXDf/iFw3/4hcN/+Wb07/6eLb///////+/f3/zrus/4thPf+IXDf/iFw3/4ldOP/AqZb//fz7 - ///////x7ej/nnpc/4hcN/+IXDf/iFw3/5hyUv/v6uX///////7+/f/LuKf/i2A8/4hcN/+IXDf/il86 - /8Stmv/+/f3//////+7n4v+ceFn/iFw3/4hcN/+IXTf/nnpb//Dq5f/////////+/8Otmf+KXjn/iFw3 - /4hcN/+KXzr/yLSj//7+/v//////7eXg/5p0VP+IXDf/iFw3/4hdN/+gfV//8Ovm///////+/f3/v6eT - /4leOf+IXDf/iFw3/4xiPf/Pvq///v7+///////r5N3/lm9O/4hcN/+IXDf/iF03/6F+YP/18O7///// - //v6+v+7o47/iV05/4hcN/+IXDf/jWM+/9PDtf///v7//////+Xb0/+Takn/iFw3/4hcN/+IXDf/poZq - //j18v//////////////////////3tLI/4JULf99TST/fU0k/31NJP98TSTffk0k4H5OJP99TST/f1An - /9LBsv///////////////////////fz7/+nh2f/h1s3/4dbN/+HWzf/k2tL/+fb0////////////9PDs - /+LXzv/h1s3/4dbN/+HWzP/u6OL//v7+///////8+/r/59/X/+HWzf/h1s3/4dbN/+Tb0v/6+Pb///// - ///////z7ur/4tfO/+HWzf/h1s3/4dbN/+/p5f///v7///////v6+f/m3dX/4dbN/+HWzf/h1s3/5dvT - //v6+f////////////Lt6f/i183/4dbN/+HWzf/h183/8Orm////////////+/n4/+bd1f/h1s3/4dbN - /+HWzf/n3dX/+/r5////////////8Orl/+HWzf/h1s3/4dbN/+LXzf/x7Of////////////6+ff/5dzU - /+HWzf/h1s3/4dbN/+fe1v/7+vn////////////v6eT/4dbN/+HWzf/h1s3/4tfN//Pu6v////////// - //r49v/k29L/4dbN/+HWzf/h1s3/597X//z7+v///////v7+/+7o4v/h1s3/4dbN/+HWzf/i187/9PDs - ////////////+Pb0/+Ta0f/h1s3/4dbN/+HWzf/p4Nn//fz8///////////////////////e0sj/g1Uu - /35OJP99TiT/fU4k/31NJN9+TiTgfk4k/39OJP+AUCf/0L+v//////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - /////////////////////////////////9zQxf+EVS3/fk4k/35OJP9+TiT/fk0k339OJOB/TiT/f04k - /4BQJv+5n4j/+/n4//////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ///////////////////////////////////////////////////////////////////////9/Pv/xa+c - /4JSKf9/TiT/f04k/39OJf9+TSTff04k4IBPJP+ATyX/gE8l/4xfOf/BqZT/39PI/+LXzv/i187/4tfO - /+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/j187/49fO - /+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/j187/4tfO - /+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/i187/4tfO - /+LXzv/i187/4tfO/+PXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/j187/4tfO/+LXzv/i187/4tfO - /+LXzv/i187/4tfO/+PXzv/j187/4tfO/+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/i187/4tfO - /+LXzv/i187/4tfO/+LXzv/i187/4tfO/+PXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/j187/49fO - /+LXzv/i187/4tfO/+LXzv/i187/4tfO/+PXzv/i187/49fO/+LXzv/i187/4tfO/+LXzv/i187/49fO - /+LXzv/i187/4tfO/+LXzv/i187/4NXL/8eyn/+QZkH/gE8l/4BPJP+ATyT/gE8k/4BOJN+ATiTggU8k - /4FPJf+BTyX/gU8l/4NTKf+HWC//iFgw/4hZMP+HWTD/h1kw/4hZMP+IWTH/h1kw/4hZMP+IWTD/h1kw - /4dZMP+IWTD/iFkw/4hZMP+IWTD/h1kx/4hZMP+HWTD/iFkw/4hZMP+IWDD/h1kw/4dZMP+HWTD/h1kw - /4dZMP+IWTD/iFgw/4dZMP+HWTD/iFkw/4hZMP+IWTD/iFkw/4hZMP+IWTD/iFkw/4dZMf+HWTH/h1kw - /4dZMP+HWTD/iFkw/4dZMP+HWTD/h1kx/4dZMP+IWTD/iFkw/4dYMf+IWDD/h1kw/4hZMP+IWTD/iFgw - /4hYMP+IWDD/iFkw/4hZMP+IWTD/iFkw/4hZMP+HWTD/h1kw/4dZMP+IWTD/iFkw/4hZMP+IWTD/h1kx - /4dYMP+HWTD/iFkw/4hZMP+IWTD/iFkw/4hZMP+IWTD/iFkw/4dZMP+HWTD/h1kw/4dZMP+HWTD/h1kw - /4hYMf+HWDD/h1kw/4hZMP+HWTD/iFkw/4dZMf+IWTD/h1gw/4hZMP+HWTD/h1kw/4hZMP+IWTD/iFkw - /4hYMP+IWTH/iFkw/4dZMP+HWTD/iFkw/4hZMP+IWTD/iFkw/4hZMP+IWTD/iFkw/4dZMP+HWTD/hFQq - /4FPJf+BTyT/gU8k/4BPJP+BTyT/gE4k34BPJOCBTyT/gVAl/4FQJf+BUCT/gVAk/4FQJf+BTyX/gVAk - /4FQJf+BUCX/gVAl/4FQJf+BUCX/gVAk/4FQJP+BUCX/gVAk/4FQJf+BUCX/gVAk/4FQJP+BUCX/gU8l - /4FQJf+BUCX/gVAl/4FPJf+BUCX/gVAl/4FQJf+BUCX/gVAl/4FQJP+BTyT/gVAk/4FQJP+BUCT/gVAl - /4FPJf+BTyX/gVAk/4FQJP+BUCX/gVAl/4FQJf+BTyX/gVAl/4FQJf+BUCX/gVAk/4FQJf+BUCT/gU8l - /4FPJP+CUCX/gU8l/4FPJP+BUCX/gVAk/4FPJf+BTyX/gU8k/4FPJP+BUCX/gU8l/4FQJP+BUCX/gVAl - /4FQJP+BTyT/gVAk/4FQJP+BUCT/gVAk/4FQJf+BUCX/gU8l/4FQJf+BUCT/gVAl/4FQJf+BUCX/gVAk - /4FQJf+BTyT/gVAk/4FQJP+BUCX/gVAk/4FQJf+BUCX/gU8l/4FPJP+BUCT/gVAl/4FQJf+BUCT/gU8l - /4FPJP+BTyX/gVAk/4FQJP+BUCX/gVAk/4FQJf+BUCT/gU8l/4FQJf+BUCX/gVAk/4FQJP+BTyX/gVAl - /4FQJf+BUCX/gVAl/4FQJf+BUCX/gVAl/4FQJf+BUCX/gVAk/4FQJf+BUCX/gU8k/4FQJf+BUCTfgU8l - 4IJQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJP+CUCT/glAl/4JQJf+CUCX/glAl/4JQJP+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJP+CUCX/glAl/4JQJP+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCT/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJP+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCT/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAk/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAk - /4JQJP+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAk/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJP+CUCX/glAl/4JQJN+BUCTgglAl/4NRJf+DUCX/g1Al/4JQJf+CUSX/glAl - /4JQJf+CUSX/glAl/4JQJf+CUCX/glAl/4JRJf+CUSX/glEl/4JRJf+CUSX/glAl/4JRJf+CUCX/glAk - /4JQJf+DUSX/g1Al/4JQJf+CUSX/glEl/4NQJf+CUCX/glAl/4JQJf+CUSX/glEl/4NQJf+CUCX/glAl - /4NQJf+CUCX/g1Al/4NQJf+CUCX/glAl/4NQJf+DUCX/glAl/4NQJf+DUSX/glAl/4NQJP+DUCX/g1Al - /4JQJf+DUSX/glAl/4JQJf+DUCX/g1Al/4JQJf+DUCX/glAl/4JQJf+CUCX/g1El/4NRJf+DUSX/g1El - /4JQJf+CUSX/g1El/4NRJf+DUSX/g1El/4JQJf+CUCX/g1Al/4NQJf+DUCX/glEl/4JRJf+CUCX/g1Al - /4NQJf+DUCX/glAl/4JQJf+CUCX/glAl/4NQJf+CUCX/glAl/4NQJf+DUCX/glAl/4JQJf+CUCX/glAl - /4NQJP+DUCX/glAl/4JQJf+DUSX/g1El/4JQJf+DUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/g1Al - /4NQJf+DUCX/glEl/4JQJf+DUCX/g1El/4JQJf+CUCX/glEl/4JRJf+DUCX/g1Al/4NQJf+DUSX/glAk - 34JQJOCDUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUCX/g1Al/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El - /4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1Al/4NRJf+DUSX/g1El - /4NRJf+DUCX/g1El/4NRJf+DUSX/g1El/4NQJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El - /4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El - /4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El - /4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El - /4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1Ek/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El - /4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1Ek - /4NRJf+DUSX/g1El/4NRJf+DUCX/g1El/4NRJf+DUSTfhFAk4IRRJf+DUSX/hFEl/4RRJf+EUSX/hFEl - /4RRJf+DUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+DUSX/hFEl - /4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4NRJf+EUSX/hFEl - /4RRJf+EUSX/g1El/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFIl/4RRJf+EUSX/hFEl/4RSJf+EUSX/hFEl - /4RRJf+EUSX/hFEl/4RRJf+EUSX/g1El/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUiX/hFEl - /4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+DUSX/g1El/4RRJf+EUSX/hFEl/4RRJf+DUSX/g1El - /4RRJf+EUSX/hFEl/4NRJf+EUSX/hFEl/4RRJf+DUSX/hFEl/4RRJf+DUSX/g1El/4RRJf+EUSX/hFEl - /4RRJf+EUSX/hFEl/4RRJf+EUSX/g1El/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl - /4NRJf+EUSX/hFEl/4RRJf+DUSX/hFEl/4RRJf+EUSX/hFEl/4NRJf+DUSX/g1El/4RRJf+EUiX/hFEl - /4NRJN+FUCXghFEl/4RSJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl - /4RRJf+EUSX/hFEl/4RSJf+EUSX/hFEl/4RSJf+EUiX/hFEl/4RSJf+EUiX/hFIl/4RSJf+EUSX/hFEl - /4RRJf+EUSX/hFIl/4RSJf+EUiX/hFEl/4RRJf+EUSX/hFEl/4RSJf+EUSX/hFEl/4RSJf+EUiX/hFIl - /4RRJf+EUSX/hFEl/4RRJf+EUiX/hFIl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFIl/4RRJf+EUSX/hFEl - /4RRJf+EUSX/hFEl/4RRJf+EUSX/hFIl/4RSJf+EUiX/hFIl/4RRJf+EUSX/hFEl/4RSJf+EUiX/hFIl - /4RRJf+EUSX/hFEl/4RRJf+EUiX/hFEl/4RRJf+EUSX/hVEl/4RRJf+EUSX/hFIl/4RRJf+EUSX/hFEl - /4RRJf+EUSX/hFEl/4RRJf+EUiX/hFEl/4RRJf+EUSX/hFIl/4RSJf+EUSX/hFEl/4RSJf+EUiX/hFEl - /4RSJf+EUSX/hFIl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl - /4RSJf+EUiX/hFIl/4RRJf+EUiX/hFIl/4RRJf+EUSX/hFEk34VRJeCEUiX/hFIl/4VRJf+EUiX/hFIl - /4VSJf+FUSX/hFIl/4RSJf+FUiX/hFIl/4VSJf+EUSX/hFEl/4RSJf+EUiX/hFIl/4VSJf+EUiX/hVIl - /4VRJf+FUSX/hVIl/4VSJf+EUiX/hFIl/4VSJf+FUiX/hVEl/4VSJf+FUiX/hFEl/4VSJf+FUiX/hVIl - /4RSJf+FUiX/hVIl/4RSJf+FUiX/hVIl/4VSJf+FUiX/hFIl/4RSJf+FUiX/hFIl/4RSJf+EUiX/hVIl - /4VSJf+FUiX/hFIl/4RSJf+FUiX/hVIl/4VSJf+EUiX/hVIl/4VSJf+EUiX/hFEl/4VSJf+FUiX/hFIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJf+EUiX/hVIl/4VSJf+FUiX/hVIl/4RSJf+EUSX/hFIl - /4RSJf+FUSX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+EUSX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4RSJf+FUiX/hFIl/4VSJf+FUSX/hFIl/4VSJf+FUiX/hVIl/4VSJf+FUSX/hVIl - /4VSJf+FUiX/hFIl/4RRJf+FUiX/hVEl/4VSJf+FUSX/hVEl/4VSJf+FUiX/hVEl/4VSJf+FUiX/hVEl - /4VRJf+EUSTfhVEl4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJN+FUSXghVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hFIk34VRJeCFUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+EUiTfhVEl4IVSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4RSJN+FUSXghVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hFIk34VRJeCFUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+EUiTfhVEl4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJN+FUSXghVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hFIk34VRJeCFUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+EUiTfhVEl - 4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJN+FUSXghVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hFIk - 34VRJeCFUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+EUiTfhVEl4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4RSJN+FUSXghVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hFEk34VRJeCFUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+EUSTfhVEl4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJN+FUSXghVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hFIk34VRJeCFUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+EUiTfhVEl4IVSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4RSJN+EUiZ/hVIkkYVSJJGFUiSRhVIkkYVQJJGFUiSRhVIkkYVSJJGFUiSRhVAk - kYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIk - kYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIk - kYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIk - kYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIk - kYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIk - kYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIk - kYVQJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIk - kYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhFImf/////////////// - //////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAA - AEAAAACAAAAAAQAgAAAAAAAAQgAAAAAAAAAAAAAAAAAAAAAAAEAoHNc/KB30Pygd9D8oHfQ/KB30Pygd - 9D8oHfQ/KB30Pygd9D8oHfQ/KB30Pygd9D8oHfQ/KB30Pygd9D8oHfQ/KB30Pygd9D8oHfQ/KB30Pygd - 9D8oHfQ/KB30Pygd9D8oHfQ/KB30Pygd9EEqHvSkmZT0/fz89Pv7+/T7+/v0+/v79Pv7+/T7+/v0+/v7 - 9Pv7+/T7+/v0+/v79Pv7+/T9/f304d3c9GBNQvQ/KB30Pygd9D8oHfQ/KB30Pygd9D8oHfQ/KB30Pygd - 9D8oHfQ/KB30Pygd9D8oHfQ/KB30Pygd9D8oHfQ/KB30Pygd9D8oHfQ/KB30Pygd9EAoHNY/KBzgQCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QSof/2taUP+Mfnf/jX94/41/eP+Rg3z/3NjW//39/f/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz/+vr5/5WIgv9CKx//QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKRzfPygc4EApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0w3LP/Pysf//Pv7//z8+//8/Pv//Pz8 - //39/f/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39/9vX1f9WQjf/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkc3z8oHOBAKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9bSD3/5+Tj - //39/f/8/Pz//Pz8//z8/P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8 - //39/f+jmJP/Qisf/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN8/KBzgQCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/a1lQ//Lx8P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//z8/P/z8vL/cWBX/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKRzfPygc - 4EApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/3trY//4+Pf//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//9/f3/39za/1VANv9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkc3z8oHOBAKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf+HeXH/+/v7//z8/P/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39/8rEwP9IMif/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN8/KBzgQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/j4F6 - //38/P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //39/f+6sq3/Qy0h/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKRzfPygc4EApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/5GEff/9/f3//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//+/v7/s6um/0IsIP9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkc - 3z8oHOBAKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf+Qgnv//f39//z8/P/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f79/7evqv9DLCD/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHN9AKBzgQSod/0EqHf9BKR3/QSkd/0EpHf9BKR3/QSkd/0EpHf9BKR3/QSkd - /0EpHf9BKR3/QSkd/0EqHf9BKR3/QSkd/0EqHf9BKR3/QSod/0EqHf9BKR3/inx0//v7+//8/Pz/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//39/f/Fvrr/RzAk - /0EpHf9BKR3/QSkd/0EpHf9BKR3/QSkd/0EqHf9BKh3/QCod/0EqHf9BKh3/QSod/0EqHf9BKR3/QSod - /0EqHf9BKR3/QSkd/0EqHf9BKh3/QSkd/0EpHf9BKRzfQiod4EIrHv9lUkj/joB5/5CDe/+Qg3v/kYN7 - /5CDe/+Rg3v/kYN7/5GDe/+Rg3v/kYN7/5GDe/+Rg3v/kYN7/5GDe/+Qg3v/kIN7/5CDe/9nVEr/Qiod - /4BwaP/5+fj//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//9/f3/2tXT/1E8MP9CKx7/blxS/5CDfP+Qg3v/kIN7/5GDe/+Rg3v/kYN7/5GDe/+Rg3v/kIN7 - /5GDe/+Qg3v/kYN7/5GDe/+Rg3v/kYN7/5GDe/+Rg3v/hHVs/044LP9BKh3/QSoc30IqHeBKMyf/x8C8 - //7+/f/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+ - //7+/v/+/v7/pJiS/0MsHv9xX1X/9fPz//z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v//Pz8/+/t7P9pVkz/Qyse/4t8dP/6+fn//v7+//7+/v/+/v7//v7+ - //7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//j39/+CcWn/Qyod - /0IqHN9DKx3gTjcq/9bQzf//////+fj4/8fAvP+7s63/2tXS//39/f/Szcn/u7Kt/83Gw//8+/v/4d7b - /7yzrv/Du7f/9fTz/+7s6v+/trL/vrWw/6KWj/9GLiD/Yk5D/+vp5//9/f3/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/8+/v/loiB/0QsHv9aRTn/sqij - /7uyrf/SzMn//f39/9vW1P+7sq3/xr+7//j39//p5uX/vbWw/7+3sv/v7ez/9PLx/8K6tf+8s67/4+De - ///////+/v7/jn93/0MrHf9DKx3fRCsd4E83Kv/W0M3//////+7s6/9pVUn/SDAi/5uOhv/6+fn/hndt - /0gwIv94Zlz/9vX1/6+knv9JMSP/XUc7/+Th3//Ry8f/Ujst/043Kf+ThXz/TDMm/1Q9Mf/a1dL//v7+ - //7+/v/+/v7//v7+//7+/v/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39 - /8/Ixf9ROi3/RS0f/0kxIv9IMCL/hnZt//r5+f+fkor/SC8h/2ZRRf/t6un/xLy4/002KP9TPS//1c/M - /+Hc2v9aRDf/SjEj/7Sqpf///////v7+/45/d/9ELB7/RCsd30UsHeBQOCr/1tDN///////v7ez/bFdM - /0szJf+dj4j/+vn5/4h4b/9LMyT/emhe//f19f+wpqD/TDQm/2BKPv/l4d//0czI/1U9MP9ROSz/qJyW - /1dAM/9JMCH/jn92/7uyrf+8s63/vLOt/7+1sf/s6ej//f39//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//z8/P/19PT/g3Np/0YtH/9FLB7/SC8g/4h4b//6+fn/oJOM/0szJP9oVEj/7uvq - /8W9uf9QOCv/Vj8y/9XQzf/h3Nr/XUc6/000J/+1rKb///////7+/v+PgHf/RSwe/0UsHd9GLR3gUTkr - /9bRzf//////+vn5/9DJxv/Gvrn/4NvZ//79/f/Z1NH/xb65/9TOy//8/Pz/5uLg/8a+uf/MxcH/9/X1 - //Du7f/Iwb3/x8C7/+Tg3v+JeW//STAh/0guH/9KMSL/SjEi/0oxIv9NNCX/s6mj//39/f/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39/9LMyf9aQzX/Ry0e/15IO//Jwb3//f39 - /+Hc2v/Gvrn/z8jE//n4+P/s6uj/x7+7/8nBvf/y8O//9fTz/8vEwP/Gvrr/5+Ti///////+/v7/kIB3 - /0ctHv9GLB3fRy0d4FI5K//X0c3/////////////////+fj4//Px8P/z8fD/8/Hw//Px8P/z8fD/8/Hw - //Px8P/z8fD/8/Hw//Px8P/z8fD/8/Hw//Px8P/z8fD/3NfU/2dSRP9ILh7/SC4e/0guHv9ILh7/SC4e - /4JwZf/39vb//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/7+vr/qZ2W - /041Jf9MMiP/k4R7/+nm5P/z8fD/8/Hw//Px8P/z8fD/8/Hw//Px8P/z8fD/8/Hw//Px8P/08vH//f39 - /////////////v7+/5GBd/9ILh7/SC0d30guHeBTOiv/19HN/////////////////7etpv9uWEv/blhL - /25YS/9uWEv/blhL/25YS/9uWEv/blhL/25YS/9uWEv/blhL/25YS/9uWEv/blhL/2xWSf9TOir/SS8e - /0kvHv9JLx7/SS4e/0kuHv9cRDX/3NfU//39/f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v//f39//Px8P+RgXf/TTMj/00zI/9mUEL/blhL/25YS/9uWEv/blhL/25YS/9uWUv/blhL - /25YS/9uWEv/fGld/+nl4/////////////j39v+Idmv/SS4e/0kuHd9JLx7gVTsr/9fRzf////////// - //////+mmZD/Sy8e/0svHv9KLx7/Si8e/0ovHv9KLx7/Sy8e/0svHv9LLx7/Sy8e/0svHv9LLx7/Sy8e - /0svHv9LLx7/Sy8e/0ovHv9KLx7/Sy8e/0svHv9LLx7/TTEh/6aZkP/8/Pz//Pz8//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//9/f3/7+zr/5GBd/9QNiX/Sy8e/0ovHv9LLx7/Sy8e - /0svHv9LLx7/Sy8e/0svHv9LLx7/Sy8e/11ENP/j39z/+fj3/9fRzf+Qf3X/VTsr/0ovHv9TOinfSy8e - 4FY8K//X0c3/////////////////p5mQ/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe - /0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9sVUb/6eXj - //39/f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//39/f/y8O//p5mR - /1tCMv9MMB//TDAe/0wwHv9MMB7/TDAf/0wwHv9MMB7/TDAe/0wwHv9YPy7/p5qR/4l2a/9cQzP/TTEf - /00yIP9sVUf/vbSt300wHuBXPSv/2NLO/////////////////6eakP9NMR7/TTEe/00xH/9NMR//TTEf - /00xHv9NMR//TTEe/00xHv9NMR//TTEf/00xH/9NMR7/TTEf/00xHv9NMR7/TjEf/00xH/9NMR//TTEf - /00xH/9OMR//UTUj/66hmf/8/Pz//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v//f39//r5+f/Ox8L/gm5h/1c8K/9OMR//TTEf/04xH/9NMR//TTEf/00xHv9NMR//TjIg - /1A0Iv9NMR//TzIg/2BGNv+ZiX//4t7b//z8/N9OMB7gWT0r/9jSzv////////////////+ompH/TzIf - /08yH/9PMh//TzIf/08yH/9PMh//TzEf/08yH/9PMh//TzIf/08yH/9PMh//TzIf/08yH/9PMh//TzIf - /08yH/9PMh//TzIf/08yH/9PMh//TzIf/1I2I/+ci4H/+vn4//39/f/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz//f39//Ty8f/Kwrz/koF1/2tTQ/9ZPiz/UjYj - /1AzIP9QMyD/UDMg/1Q4Jf9dQzL/dV9Q/6OUi//b1dH/+fn4//39/f/7+/vfTzIe4Fo+LP/Y0s7///// - ////////////qZuR/1AzH/9QMx//UDMf/1AzH/9QMx//UTMf/1AzH/9QMx//UDMf/1AzH/9QMx//UDMf - /1AzH/9QMx//UDMf/1AzH/9QMx//UDMf/1AzH/9QMh//UDMf/1M2I/+QfXD/7uvp//39/f/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//9/f3//f39 - //r5+f/r6OX/1c7J/8C2r/+ypZ3/r6GY/7Wpof/Gvbf/3NbS//Hv7f/8/Pz//f39//z8/P/7+/v/+/v7 - 31EzHuBcPyz/2dLO/////////////////6qbkf9SNB//UjQf/1IzH/9SNB//UjQf/1I0H/9SNB//UjQf - /1I0H/9SNB//UjQf/1I0H/9SNB//UjQf/1I0H/9SNB//UjQf/1I0H/9SNB//UjQf/1Q3I/+PfG//7uvp - //39/f/7/Pv/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//8/Pz//f39//39/f/9/v3//f79//79/f/9/f3//f39//39/f/9/f3//Pz8 - //v7+//7+/v/+/v7//v7+99TNB7gXUAs/9nSzv////////////////+rm5H/UzQf/1M1H/9TNR//UzQf - /1M1H/9TNR//UzQf/1M1H/9TNB//UzQf/1M0H/9TNB//UzQf/1M0H/9TNB//UzUf/1M0H/9TNR//UzUf - /1M0H/93X07/6+fl//3+/f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/vfVTUf4F9BLP/a087/////////////////q5yR - /1U2H/9VNR//VTYf/1U1H/9VNR//VTYf/1U1H/9VNh//VTUf/1U2IP9VNh//VTUf/1U1IP9VNSD/VTYf - /1U1H/9VNh//VTYf/1U2H/9VNR//cFVC/+Pe2//+/v7/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v731Y2H+BgQiz/2tPO - /////////////////6yckf9XNiD/VzYf/1Y2IP9XNiD/VjYg/1Y2IP9XNyD/VzYg/1c2IP9WNyD/Vzcg - /1c3IP9XNiD/VzYg/1c3IP9XNiD/VzYg/1c2IP9XNyD/Vzcg/1g4Iv+VgXL/9PLx//39/f/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+99YNx/gYkMs/9rTzv////////////////+tnZH/WDcg/1g3IP9YNyD/WDcg/1g3IP9YNyD/WDcg - /1g3IP9YOCD/WDcg/1g3IP9YOCD/WDcg/1g3IP9YNyD/WDgg/1g3IP9YNyD/WDcg/1g3IP9YNyD/Xj8o - /7Gil//6+fn//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/vfWTgf4GNELf/b087/////////////////rp2R/1o4IP9aOCD/Wjgg - /1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjkg/1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg - /1o4IP9aOCD/Wjgg/1o4IP9nSDH/xLiv//z8+//8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v731w4H+BlRS3/29TO//////////////// - /66ekf9cOSD/XDkg/1w6IP9cOiD/XDkg/1w5IP9cOSD/XDkg/1w5IP9cOiD/Wzkg/1w5IP9cOSD/XDkg - /1w5IP9cOiD/XDkg/1s5IP9bOSD/XDkg/1w5IP9cOSD/XDkg/29ROv/Ow7z//Pz8//z8/P/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//8/Pz//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+99dOh/gZkYt - /9vUzv////////////////+vnpL/XTog/107IP9dOiD/XTsg/147If9dOyD/XTog/106IP9dOiH/XTog - /106IP9dOiH/XTog/146IP9dOiD/XTog/107IP9dOyD/XTog/107If9dOiH/Xjog/106If9eOyH/c1U/ - /8/Fvv/8/Pz//Pz8//v7+//7+/v/+/v7//v7+//9/f3//fz8//39/f/9/f3//Pz8//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/vfXzsh4GhHLf/c1M7/////////////////sJ+S/187If9fPCH/Xzsh/187If9fOyH/Xzwh - /187If9fPCH/Xzsh/188If9fOyH/Xzsh/187If9fOyH/Xzsh/187If9fOyD/Xzsg/187IP9fPCH/Xzsh - /187If9fOyH/Xzsh/188If90VT3/yr61//v6+v/9/f3/+/v7//v7+//9/f3/9/X0/7qrn//Et63/8u/t - //39/f/9/f3//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v//Pz832A8IeBqRy3/3NTO/////////////////7Gfkv9hPCH/YT0h - /2E9If9hPCH/YTwh/2E9If9hPCH/YTwh/2E8If9hPSH/YT0h/2E9If9hPSH/YT0h/2E9If9hPCH/YT0h - /2E9If9hPSH/YT0h/2E9If9hPSH/YTwh/2E9If9hPSH/YTwh/29ONf+7rKD/9/X0//39/f/9/f3/9/X0 - /7CekP9oRiv/Z0Qq/4ltWf/Bs6j/6+fk//v7+v/9/f3//f39//z8/P/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/9/f3//f39//r5+N9jPSHga0gu/9zUzv////////// - //////+yoJL/Yz4h/2I9If9jPSH/Yz4h/2I+If9iPSH/Yz0h/2M+If9iPSH/Yj4h/2M+If9jPSH/Yz0h - /2M9If9jPiH/Yz4h/2M+If9jPiH/Yz4h/2M+If9jPSH/Yz4h/2M+If9jPSH/Yz0h/2M9If9jPiH/akcs - /6WPf//s5+T/9/Xz/7Kgkf9qRiv/Yz4h/2M9If9jPiH/Z0Mn/31eR/+mkYD/0MW8//Px7//+/v7/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/9/f3/6eTg/8O1q/+bhHLfZT4h - 4G5KLv/d1c7/////////////////s6CS/2U/If9lPyH/ZT8h/2U/If9lPyH/ZT8h/2U/If9lPyH/ZD8h - /2U/If9lPyH/ZT8h/2U/Iv9lPyH/ZT8h/2U/If9lPyH/ZT8h/2U/If9lPyH/ZT8h/2U/If9lPyH/ZT8h - /2U/If9lPyH/ZT8h/2U/If9nQiT/hmhR/5h/a/9sSCv/ZT8h/2U/If9lPiH/ZT8h/2U/If9lPyH/ZT8i - /21JLf/JvLL//v7+//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz/+/r6 - /6CJd/9oQyb/ZD4h32c/IuBwSy7/3tXO/////////////////7Shkv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai - /2dAIv9nQCH/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai - /2dAIf9nQCH/Z0Ai/2dAIv9nQCH/Z0Ah/2dAIv9nQCL/Z0Ah/2dAIf9nQSL/Z0Ah/2dAIv9nQCL/Z0Ah - /2dAIf9nQCL/Z0Ah/2dAIv9pQyX/xbar//7+/v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v//Pz8//v6+f+agGz/Z0Ah/2ZAId9oQCLgcUwu/97Vzv////////////////+1opL/aUEi - /2lBIv9pQSL/aUEi/2lBIv9pQSL/aUIi/2lBIv9pQSL/aUIi/2lCIv9pQSL/aUEi/2lBIv9pQSL/aUEi - /2lBIv9pQSL/aUEi/2lBIv9pQSL/aUEi/2lBIv9pQSL/aUEi/2lBIv9pQSL/aUEi/2lBIv9pQSL/aUIi - /2lBIv9pQSL/aUEi/2lBIv9pQSL/aUEi/2lBIv9pQSL/a0Ql/8a3q//+/v7/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/7+vn/m4Fs/2lCIv9pQSLfa0Mi4HRNLv/e1s7///// - ////////////tqKS/2tDIv9rQyL/a0Mi/2tDIv9rQyL/a0Mi/2tDIv9rQyL/bEMi/2tDIv9rQyL/a0Mi - /2tDIv9rQyL/a0Mi/2tDIv9rQyL/a0Mi/2tDIv9rQyL/a0Mi/2tCIv9sQyL/a0Mi/2tDIv9rQyL/a0Mi - /2tDIv9rQyL/a0Mi/2tDIv9rQyL/a0Mi/2tDIv9rQyL/a0Mi/2tDIv9rQyL/a0Mi/25GJf/Ht6v//v7+ - //z8/P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8//z8/P/9/f3/+/r5/52CbP9rQyL/a0Mi - 321EIuB2Ti//39bO/////////////////7ejkv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9uRCL/bUQi - /21EIv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bkQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi - /25EIv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi - /25EIv9vRST/sZuI//Ds6P/59/b//Pz7//39/f/9/f3//f39//7+/f/9/f3//f39//39/f/7+/r/9/Tz - /+fh2/+QcFb/bUQi/21DIt9vRSLgd1Av/9/Wzv////////////////+4o5P/b0Uj/29FI/9wRSP/b0Uj - /3BFIv9vRSL/cEUj/29FI/9vRSP/cEUj/29FI/9wRSP/cEUi/3BFIv9wRSP/b0Uj/3BFI/9vRSP/cEUj - /29FI/9vRSL/b0Ui/3BFIv9wRSL/cEUj/3BFIv9vRSP/b0Uj/3BFI/9vRSP/cEUj/29FIv9wRSP/cEUj - /29FI/9wRSP/cEUj/3BFI/9wRSL/b0Uj/3ZNLP+JZUn/mXti/6mPev+3oZD/wK6e/8W0pv/Htqj/xLOk - /76qmv+znIr/pIlz/5R0Wv+DXkD/ckgm/3BFI/9wRCLfcUYj4HlRL//g1s7/////////////////uaST - /3FGI/9xRiP/cUYj/3JHI/9xRiP/ckYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3JGI/9xRiP/ckYj - /3FGI/9xRiP/cUYj/3FGI/9xRiP/ckYj/3FGI/9yRiP/cUYj/3JGI/9yRiP/cUYj/3FGI/9xRiP/cUYj - /3JGI/9xRiP/ckcj/3FGI/9yRiP/ckYj/3FGI/9xRiP/cUYj/3JGI/9yRiP/ckYj/3FGI/9yRyP/ckck - /3NHJP9zSCX/c0gl/3NIJf9yRyT/ckcj/3JHI/9yRiP/cUYj/3JGI/9xRiP/cUUi33RHI+B8Ui//4NfO - /////////////////8q6rP+Uclb/k3JW/5NyVv+Tclb/k3JW/5RyVv+Uclb/lHJW/5NyVv+Tclb/k3JW - /5RyVv+Uclb/k3JW/5RyVv+Uclb/lHJW/5NyVv+Uclb/lHJW/5NyVv+Uclb/lHJW/5RyVv+Tclb/lHJW - /5RyVv+Uclb/lHJW/5RyVv+Uclb/k3JW/5NyVv+Tclb/k3JW/5RyVv+Tclb/k3JW/5RyVv+Uclb/lHJW - /5RyVv+Tclb/lHJW/5NyVv+Uclb/lHJW/5RyVv+Uclb/lHJW/5NyVv+Uclb/lHJW/5NyVv+AWDf/dEcj - /3NII991SCPgfVMw/+HXz//////////////////7+vn/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0 - //j29P/49vT/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0 - //j29P/49vT/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0 - //j29P/49vT/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0 - //j29P/39fP/qY12/3ZJI/91SSPfd0kj4H9UMP/h18/////////////9/Pv//Pv6//39/P///////f38 - //z7+v/9/Pz///////79/f/8+/r//fz7///+/v/+/v7//Pv7//z7+//+/v7////+//38+//8+/r//v39 - ///////9/Pz//Pv6//38/P///////v39//z7+v/9/Pv////+//7+/v/8+/v//Pv7//7+/v////7//fz7 - //z7+v/+/f3///////38/P/8+/r//fz8///////+/f3//Pv6//38+////////v7+//z7+//8+/v//v7+ - ///+/v/8/Pv//Pv7//79/f///////v7+/62Se/93SiP/eEoj33lLI+CBVTD/4dfP///////39fL/uJ+K - /6iKcP/Pv7H//Pz7/8ayof+oinD/v6iV//v6+P/ZzMD/qYtx/7KXgf/z7ur/6eLb/62QeP+rjnX/5dzU - //Xx7/+1m4X/qIpw/9TFuf/8/Pv/xK+d/6iKcP/BrJn//Pr5/9TGuf+pinH/tZuF//Xx7v/m3tf/q451 - /6yPd//o4Nn/8+/r/7OZg/+pi3H/18m9//v6+P/Aqpf/qIpw/8ayof/8/Pv/0cGz/6iKcP+2nYf/9vPx - /+PZ0f+rjXT/rpF5/+vk3v/w6+f/sJV+/6mLcv/cz8X///////7+/v+uknv/eUsk/3lLI996TCTgglYw - /+LXz///////8+/r/5NsS/97TCT/t52I//v6+f+oiW//e0wk/557Xf/59/X/xbGf/3xNJv+KYT3/7OXf - /97SyP+CVTD/f1Ir/9fJvv/w6+b/jmdE/3tMJP++p5P/+/r4/6WEav97TCT/oYBj//r49v++p5P/fE0l - /45mRP/v6uX/2czB/4BSLP+BVC7/3NDF/+3n4f+MY0D/fE0l/8Ksmv/59/X/n3xf/3tMJP+oiW//+/r5 - /7mhi/97TCT/kGlI//Lt6f/Uxbn/f1Eq/4NXMv/h1s3/6eHa/4hdOf98TSb/ybam///////+/v7/r5N7 - /3tMJP97TCTffE0k4IRXMP/i2M////////Xx7v+lhGf/kWlG/8Otmv/8+/r/tpyF/5FoRv+ukHf/+vj3 - /8+9rv+Rakj/nXpb/+/p5P/j2dD/lnBQ/5RuTP/e0sj/8u7q/6F/Yv+RaUb/yLWk//z7+f+0mIH/kWlG - /7GUe//7+ff/ybWk/5FpR/+hf2H/8u3p/+DUy/+Vbk3/lm9O/+LXzv/w6+b/n3xe/5FqR//Muqr/+vj3 - /6+ReP+RaUb/tpyF//z7+v/FsJ7/kWlG/6OBZP/08Oz/3M/E/5RtS/+YclL/5tzV/+zm4P+cd1j/kmpI - /9LBtP///////v7+/7GUe/99TST/fEwk335NJOCFVzD/4dXM///////+/f3/8+/r//Hs5//39PL///7+ - //by7//x7Of/9PHt//7+/v/59vT/8ezn//Lu6v/9/Pz/+/r5//Lt6P/x7Oj/+/n4//39/P/z7uv/8ezn - //j18////v7/9fLv//Hs5//18e7//v7+//j18//x7Of/8+/r//39/P/7+fj/8ezo//Lt6P/7+vn//fz8 - //Pu6v/x7Of/+Pb0//7+/v/18e7/8ezn//by7////v7/9/Xy//Hs5//z7+v//v39//r59//x7Oj/8u3p - //z6+v/9/Pv/8u7q//Hs5//59/X///////79/f+wknj/fk4l/31NJN9/TiTgglIo/7WYf//f0sf/4NTK - /+DUyv/g1Mr/4NTK/+DUyv/g1Mr/4NTK/+DUyv/h1Mr/4NTK/+DUyv/g1Mr/4NTK/+DUyv/g1Mr/4dTK - /+DVyv/g1cr/4NXK/+DUyv/g1Mr/4NTK/+DUyv/g1Mr/4NTK/+DUyv/g1Mr/4NTK/+DUyv/g1Mr/4NTK - /+DUyv/g1Mr/4dTK/+DUyv/g1Mr/4NTK/+DUyv/g1cr/4NTK/+DUyv/g1Mr/4NTK/+DUyv/g1cr/4NXK - /+DUyv/g1Mr/4NXK/+DUyv/g1Mr/4NTK/+DUyv/g1Mr/4NTK/+DUyv/Wxrj/lWxJ/4BPJP+ATiTfgE8k - 4IFQJf+DUif/h1cu/4dYL/+HWC//h1gv/4dYLv+HWC7/h1gv/4dYL/+HWC//h1gv/4dYL/+HWC//h1gv - /4dYL/+HVy//h1gv/4dYL/+HWC//h1gv/4dYL/+HVy//h1gv/4dYL/+HWC//h1gv/4dXL/+HWC//h1cv - /4dXL/+HWC//h1gv/4dYL/+HVy//h1gu/4dYL/+HWC//h1gv/4dYL/+HWC//h1gu/4dYL/+HWC//h1gv - /4dXL/+HWC//h1gv/4dYL/+HVy//h1gv/4dYL/+HWC//h1gv/4dYL/+HWC//h1gv/4dYL/+HWC//hVUs - /4JQJf+BUCT/gVAk34FPJOCCUCX/glAl/4JRJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJN+CUCTghFEl/4NRJf+EUSX/hFEl/4NRJf+EUSX/hFEl - /4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/hFEl/4RRJf+DUSX/g1El/4NRJf+DUSX/hFEl - /4RRJf+EUSX/hFEl/4RRJf+EUSX/g1El/4NRJf+DUSX/hFEl/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El - /4NRJf+EUSX/g1El/4NRJf+DUSX/g1El/4NRJf+EUSX/g1El/4NRJf+EUSX/hFEl/4NRJf+DUSX/g1El - /4NRJf+DUSX/g1El/4NRJf+EUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSTfhFEl4IRRJf+EUiX/hFEl - /4RSJf+EUSX/hVEl/4RRJf+EUiX/hFIl/4VSJf+EUiX/hFIl/4RRJf+EUSX/hFIl/4RSJf+EUSX/hFEl - /4RSJf+FUiX/hFIl/4RSJf+EUSX/hFIl/4RRJf+EUSX/hFIl/4RSJf+EUiX/hFEl/4RSJf+EUiX/hFIl - /4RRJf+EUiX/hFIl/4RSJf+FUiX/hFEl/4RSJf+EUSX/hFIl/4RSJf+EUiX/hVIl/4RSJf+EUSX/hFIl - /4RSJf+EUiX/hFEl/4RSJf+FUiX/hFEl/4RSJf+EUSX/hFEl/4VRJf+EUiX/hVIl/4VSJf+FUSX/hFEk - 34VRJeCFUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4RSJN+FUSXghVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+EUiTfhVEl4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hFIk34VRJeCFUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4RSJN+FUSXghVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+EUiTfhVEl4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hFIk34VRJeCFUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJN+FUSXghVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+EUiTfhVEl4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hFIk34RSJqeEUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFEl - v4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFEl - v4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFEl - v4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFEl - v4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RSJKcAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAACgAAAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAAAAAAAAAAAAAAAAAAAABAKR3SPykc - 8D8pHPA/KRzwPykc8D8pHPA/KRzwPykc8D8pHPA/KRzwPykc8D8pHPA/KRzwPykc8D8pHPA/KRzwPykc - 8EIsIPBJMyfwSTMo8E04LPC/t7Tw/Pz88Pr6+vD6+vrw+vr68Pr6+vD6+vrw+vr68Pr6+vD49/fwkoV/ - 8EEqHvA/KRzwPykc8D8pHPA/KRzwPykc8D8pHPA/KRzwPykc8D8pHPA/KRzwPykc8D8pHPA/KRzwPykc - 8EApHdJAKRzfQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QSoe/46Aef/NyMT/zsjF/9HLyP/y8fD//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //z8/P/V0M7/Uz4z/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHN9AKRzfQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/RjEl/8fBvf/9/f3//Pz8//z8/P/8/Pz/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+/+WiYL/QSoe/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN9AKRzfQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/Tzov/9rW0//8/Pz/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7/+7s7P9mVEr/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN9AKRzfQCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/WEQ5/+Xi4P/8/Pz/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8/9rV0/9POy//QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN9AKRzfQCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/XUk/ - /+ro5v/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8/8nDv/9HMSX/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHN9AKRzfQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/X0tB/+zq6P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8 - /8O8uP9FLyP/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHN9AKRzfQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QSkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/XUk//+ro5v/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v//Pz8/8rDwP9HMSX/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN9BKhzfTjgs/3lpYP+AcGj/gHBo/4BwaP+AcGj/gHBo - /4BwaP+AcGj/gHBo/4BwaP+AcGj/gHBo/39vZv9YRDj/WEQ5/+Xi4P/8/Pz/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v//Pz8/9vX1P9SPDH/Tzou/3xsY/+AcGj/gHBo/4BwaP+AcGj/gHBo - /4BwaP+AcGj/gHBo/4BwaP+AcGj/gHBo/4BwZ/9uXFL/RS4h/0EqHN9CKh3fgnJp//f29f/6+fn/9fTz - //f29v/7+vr/9vX0//b19f/7+vr/9vX1//b09P/7+vr/9/b2//Ty8f+Mfnb/UTsv/9rV0v/8/Pz/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7/+/t7P9qV0z/WkU5/9zX1f/19PP/+vn5 - //n4+P/19PP/+fj3//r5+f/19PP/+Pf2//r6+v/29PT/9/X1//v7+//i3tz/WkU6/0IqHN9DKx3fi3x0 - //79/f/f29n/gG9m/6idl//r6Ob/iXlx/5eJgf/w7uz/mIqD/4h5cP/q5+b/qZ6X/39uZf+Dcmn/SzMm - /8fAvP/9/f3//Pz8//z8/P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+/+ajob/SDAi - /25bUP99bGL/19LP/8nCvf96aF//wrm1/9vW1P9/bmT/raKc/+nl5P+Hd27/moyF//j49//s6ej/YEs/ - /0MrHd9FLB3fjH10//79/f/Vz8z/V0Ez/419df/k4N//Y05C/3ZjWP/r6Ob/d2Va/2JNQf/j397/jn92 - /1dAM/+ThHz/SjEj/4t8cv/IwLz/yMG9/8vEwP/x7+7//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //z8/P/Z1NH/WUM2/0UsHv9POCr/y8TA/7euqP9QOCr/rqOd/9DJxv9WPjH/k4R8/+Hd2/9gSz7/eWdd - //b19P/s6ej/YUw//0UsHd9GLB3fjX10//79/f/08vH/083J/+Hc2v/49/b/1tDN/9vW0//6+fj/29bT - /9bQzf/49vb/4d3a/9LMyf/c19T/cV1R/0kwIf9MNCX/TTQl/1E4Kf+9tK7//f39//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//6+fn/oJKL/0oxIv9sWEv/5eHf/+zp6P/Rysb/6ebl//Lx8P/SzMj/4t7c - //f29f/Vz8z/3NfU//38/P/s6ej/Y0xA/0YsHd9ILR3fjn50//79/f//////8e7t/7uxq/+2q6T/tquk - /7arpP+2q6T/tquk/7arpP+2q6T/tquk/7arpP+1qqT/iXhu/0owIP9ILh7/SC4e/0kuHv+JeG3/+Pj3 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz/7Orp/31rYP9PNib/jHtx/7WqpP+2q6T/tquk - /7arpP+2q6T/tquk/7arpP/IwLv//Pv7///////q6Ob/Y0w//0ktHd9KLh3fkH90//79/f//////3NbT - /1g/L/9LMB//SzAf/0swH/9LMB//SzAf/0swH/9LMB//SzAf/0swH/9LMB//SzAf/0ovHv9KLx7/Si8e - /0ovHv9fRjf/3tnW//z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8/+Le3P97Z1v/TTIh - /0swH/9LMB//SzAf/0swH/9LMB//SzAf/0swH/95ZFj/8/Lx/+Hc2f+ai4H/Ujgn/1E4Jt9MMB7fkX90 - //79/f//////3NfT/1k/Lv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe - /0wwHv9MMB7/TDAe/0wwHv9OMiD/o5WL//v7+v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //z8/P/o5eP/k4J3/1Y8K/9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwH/9kSzz/jHpv/2NKO/9QNCP/a1RF - /7muqd9NMR7fkoB1//79/f//////3NfT/1pALv9OMR7/TjEf/04xH/9OMR//TjEf/04xH/9OMR//TjEf - /04xH/9OMR//TjEf/04xH/9OMR//TjEf/04xH/9OMR//b1dI/+vo5v/8/Pz/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//8/Pz/9vX0/8i/uf+EcWT/XkQz/1E1Iv9OMh//TjEf/04xH/9PMyD/Vjoo - /21VRv+klYz/5ODe//v7+99QMh7fk4F1//79/f//////3dfT/1xBL/9QMh//UDIf/1AzH/9QMx//UDMf - /1AyH/9QMh//UDIf/1AzH/9QMx//UDIf/1AyH/9QMh//UDMf/1AyH/9bPy3/sqWd//n4+P/8/Pz/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/29fT/3dfU/72zq/+klYv/mYh9 - /52Mgf+vopn/zMS//+vo5v/7+/v//Pz8//v7+99SMx7flIF1//79/f//////3dfT/15CL/9SNB//UjQf - /1I0H/9SNB//UjQf/1I0H/9SNB//UjQf/1I0H/9SNB//UjQf/1I0H/9SNB//UjQf/1s+Kv+xpJv/+Pf3 - //z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8 - //39/f/9/f3//Pz8//z8/P/9/f3//Pz8//z8/P/7+/v/+/v7//v7+99UNB7floJ1//79/f//////3tjT - /2BDL/9UNR//VDUf/1Q1H/9UNR//VDUf/1Q1H/9UNR//VDUf/1Q1H/9UNR//VDUf/1Q1H/9UNR//VDUf - /3RaSf/t6uj//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+99WNSDfl4N1 - //79/f//////3tjT/2JEL/9WNiD/VjYg/1Y2IP9WNh//VjYf/1Y2IP9WNyD/VjYg/1Y2IP9WNiD/VjYf - /1Y2IP9WNiD/VjYg/1w9J/+1ppz/+/r6//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+99ZOCDfmIR1//79/f//////3tjT/2RFMP9ZOCD/WDcg/1k4IP9ZNyD/WTcg/1k4IP9YOCD/WTgg - /1k4IP9ZOCD/WDgg/1k4IP9ZOCD/WDgg/1g3IP9pTDb/z8W+//z8/P/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+99aOSDfmYV1//79/f//////39jT/2ZHMP9bOSD/Wzkg/1s5IP9bOSD/Wzkg - /1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg/1s5IP9bOSD/dlpF/9vTzv/8/Pz/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+99cOiDfm4Z2//79/f//////39nU/2hIMP9dOiD/XTog - /106IP9dOiD/XTog/106IP9dOiD/XTog/106IP9dOiD/XTog/106IP9dOiD/XTog/106If9dOiD/Xjsh - /35iTf/d1tH//Pz8//v7+//7+/v/+/v7//z8/P/7+/r//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+99eOyHfnYd2//79/f//////4NnU - /2tJMP9fPCH/Xzwh/188If9fPCH/Xzwg/188If9fPCH/Xzsh/187If9fPCH/Xzwh/188IP9fPCH/YDwh - /188If9fOyH/Xzwh/2A8If9+YUv/187I//z7+//8/Pz//Pz8/+7q5/+plof/yLuy//Lw7v/8/Pz//Pz8 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8//z8/N9hPCHfnod2 - //79/f//////4NnU/21LMf9iPSH/Yj0h/2E9If9hPSH/Yj0h/2E9If9iPSH/Yj0h/2I9If9iPSH/Yj0h - /2I9If9iPSH/Yj0h/2I9If9iPSH/Yj0h/2I9If9iPSH/d1c//8e6sP/49/b/7uvo/5iAbf9kQCT/aEUq - /4htV/+8rKD/5N7Z//j39v/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/8/Pz/8O3q - /9jOxt9kPiHfoIh2//7+/f//////4dnU/29MMf9kPiH/ZD8h/2Q/If9kPyH/ZD8h/2Q+If9kPyH/ZD8h - /2Q/If9kPiH/ZD8h/2Q/If9kPyH/ZD8h/2Q/If9kPyH/ZD4h/2Q+If9kPiH/ZD8h/25LL/+ii3n/k3lk - /2dCJP9kPyH/ZD8h/2Q+If9nQiT/dVM5/7+wpP/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //z8/P/v6+j/j3Ne/21KLd9mQCHfoYl2//7+/f//////4drU/3JOMf9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai - /2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIf9nQCH/Z0Ai/2dAIf9nQCH/Z0Ai - /2dAIv9oQSL/aEEi/2dAIv9nQCL/Z0Ah/2dAIv9nQCH/Z0Ai/6+bi//9/f3/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//z8/P/q5eH/elg9/2ZAId9qQiLfo4p3//7+/f//////4trU/3VPMv9qQiL/akIi - /2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/2pCIv9qQiL/akIi - /2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/7Gci//9/f3/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/q5eH/fVk9/2pCIt9sQyLfpYt3//7+/f//////4trU - /3dRMv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi - /21DIv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi - /6SKdv/w6+j/+Pf1//v7+v/8/Pz//f39//38/P/8/Pv/+vn5//Xz8f/ZzsX/elU2/2xDIt9wRSLfpox3 - //7+/f//////49vU/3pSMv9wRSL/cEUj/3BFI/9wRSP/cEYj/3BFI/9wRSP/cEUj/3BFIv9wRiP/cEUj - /3BFI/9wRSP/cEUj/3BFIv9wRSP/cEUj/3BFI/9wRSP/cEUj/3BFI/9wRSP/cEUj/3BFI/9wRSP/cEUj - /3BFI/9wRSP/cEUj/3ZNK/+JZkn/mHlg/6WLdf+vl4P/spuJ/7Gah/+rkn3/n4Nr/5FwVf9/WTr/cUYk - /3BFIt9yRiPfqI13//7+/f//////5t7X/4ZgQf99VDP/fVQz/31UM/99VDP/fVQz/31UM/99VDP/fVQz - /31UM/99VDP/fVQz/31UM/99VDP/fVQz/31UM/99VDP/fVQz/31UM/99VDP/fVQz/31UM/99VDP/fVQz - /31UM/99VDP/fVUz/31UM/98VDP/fVQz/31UM/99VDP/fVQz/31UM/99VDP/fVQz/31UM/99VDP/fVQz - /31UM/98UzH/dEkl/3JGI990SCPfqo93//7+/f//////+vj3/+bf2P/k3NX/5NzV/+Tc1f/k3NX/5NzV - /+Tc1f/k3NX/5NzV/+Tc1f/k3NX/5NzV/+Tc1f/k3NX/5NzV/+Tc1f/k3NX/5NzV/+Tc1f/k3NX/5NzV - /+Tc1f/k3NX/5NzV/+Tc1f/k3NX/5NzV/+Tc1f/k3NX/5NzV/+Tc1f/k3NX/5NzV/+Tc1f/k3NX/5NzV - /+Tc1f/k3NX/5NzV/+Tc1f/ZzcL/hl8+/3VII994SiPfq493//7+/f/7+fj/7unk//Tw7f/8+/v/8Orm - //Ht6f/9/Pz/8u3p//Dq5v/8+/r/9PDt/+7p5P/7+fj/9/Tx/+7o4//49vT/+fj2/+7o4//18u//+/r5 - /+/p5f/z7+v//fz7//Dr5//x6+f//fz7//Lu6v/v6uX//Pv6//Xx7//u6OP/+vj3//j18//u6OP/9/Ty - //r59//u6OT/9PHt//z7+v/v6uX/8u3p//7+/v/x7Oj/jGVE/3hKI996SyPfrZB4//7+/f/k2tH/kWtK - /7SahP/t5+L/mXVX/6WFav/y7en/pods/5h0Vf/t5uH/tZuF/5FqSf/i2ND/yLSk/4xkQv/Tw7b/287D - /45mRf+/qJT/59/Y/5RuTv+uknn/8Ovm/557Xv+ffWH/8Ovm/6uOdf+VcFD/6uLc/7ylkf+PZ0b/3dHH - /9DAsv+MZEH/yren/+DVzP+QaUj/uJ+K/+zl3/+XclP/qIlv//r39f/x7en/jmZF/3pLI998TCTfrpF4 - //7+/f/l29P/lW9O/7edh//u6OP/nXlb/6iJbv/y7ur/qotv/5x4Wf/t5+L/uJ6I/5VuTf/j2dH/yram - /5FpR//Uxbj/3M/F/5JrSf/Bqpf/6eDZ/5hzU/+xlX3/8Ovn/6F/Yv+jgWT/8ezn/66ReP+ZdFT/6uPd - /7+ok/+TbEr/3tLI/9LBtP+QaEb/zLmq/+HWzf+UbUz/u6KN/+zl3/+bdlj/q4xy//r39v/y7en/kGdF - /3xMJN9+TSTfq4tw//v5+P/6+Pf/8Orm//Tw7f/7+vn/8ezn//Lu6v/8+/r/8+7q//Hs5//7+vn/9PHt - //Dq5v/6+Pf/9/Tx/+/q5f/49vP/+ff1//Dq5f/28u//+/n4//Dr5v/07+z//Pv6//Ht6P/y7en//Pv6 - //Pv6//w6+b/+/n4//Xy7//w6uX/+ff2//j18//v6uX/9/Ty//r49v/w6uX/9fHu//v6+f/x6+f/8+7q - //38/P/t5uD/j2VA/31NJN+ATiTfil01/6uKbf+vkHX/r5B1/6+Qdf+vkHX/r5B1/6+Qdf+vkHX/r5B1 - /6+Qdf+vkHX/r5B1/6+Qdf+vkHX/r5B1/6+Qdf+vkHX/r5B1/6+Qdf+vkHX/r5B1/6+Qdf+vkHX/r5B1 - /6+Qdf+vkHX/r5B1/6+Qdf+vkHX/r5B1/6+Qdf+vkHX/r5B1/6+Qdf+vkHX/r5B1/6+Qdf+vkHX/r5B1 - /6+Qdf+vkHX/r5B1/6+Qdf+jfl//g1Mp/4BOJN+CUCTfglAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJN+DUSTfhFEl/4NRJf+DUSX/hFEl - /4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+EUSX/g1El/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl - /4RRJf+EUSX/g1El/4NRJf+EUSX/g1El/4NRJf+DUSX/hFEl/4NRJf+DUSX/hFEl/4NRJf+EUSX/hFEl - /4NRJf+EUSX/hFEl/4NRJf+DUSX/g1El/4NRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4NRJN+EUiTfhVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4RSJN+EUiTfhVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4RSJN+EUiTfhVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJN+EUiTfhVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJN+EUiTfhVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJN+EUiTfhVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4RSJN+EUiTfhVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4RSJN+EUSSvhFEkyIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEk - yIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEk - yIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEk - yIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEkyIRRJK8AAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6 - BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAA - AAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6 - BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAA - AAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6 - BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAA - AAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcoAAAAIAAA - AEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAAAAAAAAAAQCgczkApHetAKR3rQCkd60ApHetAKR3rQCkd - 60ApHetAKR3rQCkd60ApHetRPDHrcGBW63lpYOvb1tTr+vr66/r6+uv6+vrr+vr66/v7++vOyMbrTzku - 60ApHetAKR3rQCkd60ApHetAKR3rQCkd60ApHetAKR3rQCkd60ApHM0/KBzgQCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/5aJgv/z8vL/9fTz//v6+v/7+/v/+/v7//v7+//7+/v/+Pj4 - /4p8df9AKh7/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkc3z8oHOBAKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9CKx//s6ql//z8/P/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//o5eT/XUk//0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKRzfPygc - 4EApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0QtIf+/uLT//Pz8//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7/9bRz/9NNyz/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHN8/KBzgQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/RC4i/8K7t//8/Pz/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/0cvJ/0o0Kf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkc30MsH+BjUEb/cF5V/3BeVf9wXlX/cF5V/3BeVf9wXlX/cF5V/25dU/9RPDD/vbSw - //z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//b19X/Uz4z/2NQRf9wXlX/cF5V/3BeVf9wXlX/cF5V - /3BeVf9wXlX/cF5V/1tGO/9BKh3fUz0w4NXQzf/j4N7/2NLQ/+bj4f/Vz8z/6OXk/9PNyv/p5uX/zsjE - /3RiWP+sopz//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7/+/t7f9tWlD/mYyE/9bQzf/o5eP/087L - /+nm5P/Tzcr/6ebl/9PNyv/s6uj/uK+q/0UuId9XQDTg4NzZ/7SqpP+Id27/v7ay/31rYf/Iwbz/dmNZ - /8vEwP9zYFX/c2FW/4JxZ//Tzcn/19HO//Tz8v/7+/v/+/v7//v7+//7+/v/+/v7/6aak/9NNSj/e2lf - /8W9uf93ZVv/ysO//3RiV//LxMD/dWJY/9fSz//Du7b/STEi31lCNODg3Nn/7erp/9fRzv/f29j/0MnF - /+Hd2v/Ox8P/4t7c/87Hw/+5r6r/Vz8x/1E5Kv9XPzH/xr66//v7+//7+/v/+/v7//v7+//7+/v/6OXj - /3BcUP+AbmP/3NfU/87IxP/i3tv/zsfD/+Le3P/W0M3/9vT0/8O7tv9LMiLfXEQ04OHc2f/6+vn/koJ4 - /2hRQ/9nUUP/aFFD/2hRQ/9oUUP/aFFD/2VOQP9PNSX/Si8e/0ovHv+PfnP/+Pj3//v7+//7+/v/+/v7 - //v7+//7+/v/08zI/2xXSv9lTT//aFFD/2hRQ/9oUUP/aFFD/66hmv/p5uP/mIh//1E2KN9eRTXg4dzZ - //n5+P9/a17/TTAe/00wH/9NMB7/TTEe/0wxHv9NMB7/TTEe/00wHv9NMR7/TTAe/19GNv/c19P/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/2tXR/4VxZf9WPCr/TTEf/00wHv9NMB//aFBB/25XSP9xW03/tquk - 32FGNeDi3dr/+vn4/4FsXv9QMh//UDIf/1AyH/9PMh//TzIf/08yH/9PMh//TzIf/08yH/9QMh//a1NC - /93X1P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/8/Lx/87Gwf+ik4n/iXZp/4ZyZf+Xhnv/vrSt - /+rn5f/7+/vfZEg14OLd2v/6+fj/g21e/1M0H/9TNB//UzQf/1M0H/9TNB//UzQf/1M0H/9TNB//UzQf - /2JGM//PxsH/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//5+Pj/+Pj3 - //v6+v/8/Pz/+/v7//v7+99mSTbg493a//r5+P+Fbl7/VjYf/1Y2H/9WNiD/VjYf/1Y2IP9WNiD/VjYg - /1Y2H/9WNiD/ZEYx/9HJw//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v732lMNuDj3tr/+vn4/4hwX/9ZOCD/WTgg/1k4IP9ZOCD/WTgg - /1k4IP9ZOCD/WTgg/1k4IP9ZOCD/fWNQ/+Xg3P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/vfbU024OTe2v/6+fj/inFf/106IP9dOiD/XTog - /106IP9cOiD/XDog/106IP9cOiD/XDog/106IP9eOyL/i3Jg/+nk4f/7+/v/+/v7//v7+//5+Pj/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+99vTzfg5N7a//r5+P+Nc1//YDwh - /2A8If9gPCH/YDwh/2A8If9gPCH/YDwh/2A8If9gPCH/YDwh/2A8If9hPiP/i3Fd/+Lb1v/7+/v/3tfR - /56Id//JvbT/7+zq//v7+v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pv/9vX133JRN+Dl39r/+vn4 - /490YP9kPiH/ZD4h/2Q+If9kPiH/ZD4h/2Q+If9kPiH/ZD4h/2Q+If9kPiH/ZD4h/2Q+If9kPyL/f2BI - /7inmf+DZU3/ZD8i/2pFKf+DZU3/wLGk//v7+//7+/v/+/v7//v7+//7+/v//Pz8/97W0P+UemXfd1Q3 - 4Obf2v/6+fj/knZg/2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi - /2hBIv9oQSL/akMk/2hBIv9oQSL/aEEi/2hBIv+bgW3/+vn5//v7+//7+/v/+/v7//v7+//8/Pz/yLuv - /2pDJN96Vjjg5uDa//r5+P+WeGD/bEMi/2xDIv9sQyL/bEMi/2xDIv9sQyL/bEMi/2xDIv9sQyL/bEMi - /2xDIv9sQyL/bEMi/2xDIv9sQyL/bEMi/2xDIv9sQyL/bEMi/5Z4Yf/u6ub/9/X0//n4+P/6+fj/+Pf2 - //Px7v+9q5z/bUUk335YOODn4Nr/+/n4/5l6Yf9xRiT/cUYk/3FGJP9xRyT/cUck/3FGJP9xRiT/cUYk - /3FGJP9xRiP/cUYj/3FGJP9xRiP/cUYk/3FHJP9xRiT/cUYk/3FGJP9xRiT/dk0r/4pmSf+Xd17/n4Fp - /6CDa/+afGP/j21R/3xVNf9xRSLfgls44Ojg2v/9/Pz/1ci9/8Syo//FsqP/xbKj/8Wyo//FsqP/xbKj - /8Wyo//FsqP/xbKj/8Wyo//FsqP/xbKj/8Wyo//FsqP/xbKj/8Syo//EsqP/xbKj/8Syo//FsqP/xbKj - /8Syo//FsqP/xbKj/8Wyo//FsqP/q5B6/3ZKJd+GXDrg6OHa/+ri3P/d0cf/7ebh/9rNwv/v6uX/2Mq+ - //Dr5//Xyb7/8Ovm/9jLv//v6eX/2s7D/+zl3//e0sj/6ODZ/+LYz//j2dH/59/Y/97Tyf/r5N//287E - /+7p5P/Yy7//8Ovm/9fJvv/w6+f/2Mq+//Tw7P/TxLj/e00o34heOuDp4dr/zLqq/66QeP/TxLb/poZr - /9rMwP+hgGP/3M/E/6B+Yv/bz8T/ooFl/9nLwP+oiW7/0cGz/6+Tev/ItKT/uqGM/7ykj//GsqD/sZV9 - /9C/sf+pinD/18m9/6OBZf/bzsP/oX9i/9zPxf+hf2L/5NrS/9XFuP9+UCnfh1kz4NPCs//i183/3tHG - /+PYz//d0MT/5NnQ/9zPw//k2tH/3M/D/+TZ0P/cz8T/5NnQ/93Qxf/j2M7/3tHG/+HWzP/f08n/4NTJ - /+HWzP/e0sf/4tfO/93Qxf/j2dD/3M/E/+TZ0P/cz8P/5NrR/9zPw//l29L/wamV/4BQJt+BUCXgiVox - /4xfN/+MXzf/jF83/4xeN/+MXjf/jF43/4xeN/+MXjf/jF43/4xfN/+MXjf/jF43/4xeN/+MXjf/jF83 - /4xfN/+MXzf/jF43/4xeN/+MXzf/jF43/4xeN/+MXjf/jF43/4xeN/+MXjf/jF43/4xeN/+HVy3/gVAk - 34RQJOCEUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl - /4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl - /4RRJf+DUSTfhVEl4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4RSJN+FUSXghVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hFIk34VRJeCFUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+EUiTfhVEl4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJN+FUiW3hFEk0YRRJNGEUSTRhFEk - 0YRRJNGEUSTRhFEk0YRRJNGEUSTRhFEk0YRRJNGEUSTRhFEk0YRRJNGEUSTRhFEk0YRRJNGEUSTRhFEk - 0YRRJNGEUSTRhFEk0YRRJNGEUSTRhFEk0YRRJNGEUSTRhFEk0YRRJNGEUSTRhFIktwAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAA - ABAAAAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAD8oHMg/KRzlPykc5T8pHOU/KRzlYU9F - 5b21seXw7u7l+vr65fPy8uV6amPlPykc5T8pHOU/KRzlPykc5UApHMdAKRzfQCkd/0ApHf9AKR3/QCkd - /4Bxaf/4+Pj/+/v7//v7+//i393/V0I4/0ApHf9AKR3/QCkd/0ApHf9AKRzeUTsw32JPRf9iT0X/Yk9F - /2BNQv+KfHT/+fj4//v7+//7+/v/3trY/19MQv9iT0X/Yk9F/2JPRf9iTkT/TDcr3pqMhd+/t7P/u7Kt - /7uyrf+yqKP/jH11/9vX1P/29fX/+/v7/+/u7f+HeG//saeh/7uyrf+7sq3/wrq1/4h4cN6om5Pfz8jD - /5qLgv+ai4H/mImA/3BbTv9fRzn/zMXA//v7+//6+vr/xLy3/49/df+ai4L/nI2E/8jAu/+Id23eq52U - 37uwqf9PMyD/TjEf/04xH/9OMR//UDMh/6iakP/6+vr/+/v7//j49//MxMD/indr/3VfUf+Xhnv/vbSt - 3q2gld+9san/VTYh/1Q1H/9UNR//VDUf/2JFMf/Wz8r/+/v7//v7+//7+/v/+/v7//f29v/x8O7/9vX0 - //v7+96xoZXfwLOp/1w6Iv9bOSD/Wzkg/1s5IP9dOyL/l4Jy/+/s6v/6+fn/9/b1//v7+//7+/v/+/v7 - //v7+//7+/vetKOV38O0qv9jPyP/Yj0h/2I9If9iPSH/Yj0h/2VBJf+ZgW7/va2h/5d+a//Lv7X/+fj3 - //v7+//6+vr/29PN3rillt/Gtqr/a0Mk/2pCIv9qQiL/akIi/2pCIv9qQiL/a0Mj/25GJ/9qQiL/iGdN - /+ji3v/z8O7/7uvn/56Eb968qJbf2M3D/51/Zv+cfmX/nH5l/5x+Zf+cfmX/nH5l/5x+Zf+cfmX/nH5l - /6CDa/+znIn/uqWU/7WfjP+KZ0nevaaT39nLwP/TxLf/1MS3/9PEt//UxLf/1MW4/9PEt//TxLf/08S3 - /9TEt//Uxbj/1MS3/9TEt//ZzMD/rpF53px1VN+ylHr/sZN5/7GTef+xk3n/sZN5/7KTef+xk3j/sZN4 - /7GTeP+xk3n/sZN5/7GTef+xk3n/spR5/5ZtSd6DUSTfhFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl - /4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSTehFIk34VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVEk3oVSJL2EUiTZhFIk2YRSJNmEUiTZhFIk - 2YRSJNmEUiTZhFIk2YRSJNmEUiTZhFIk2YRSJNmEUiTZhFIk2YVQJL0AACYAAAAmAAAAJgAAACYAAAAm - AAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYA + AAABAAgAMDAAAAEAIACoJQAAhgAAADAwAAABAAgAqA4AAC4mAAAgIAAAAQAgAKgQAADWNAAAICAAAAEA + CACoCAAAfkUAABgYAAABACAAiAkAACZOAAAYGAAAAQAIAMgGAACuVwAAEBAAAAEAIABoBAAAdl4AABAQ + AAABAAgAaAUAAN5iAAAoAAAAMAAAAGAAAAABACAAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu2UkpItlMxAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7RQM0u1Uv9LtVL/S7NSJQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKtFIfS7VS/0u1 + Uv9LtVL/S7VS/0i2SAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEuz + Uz1LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9ItkgHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAS7NRTku1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7NSJQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABLs1FOS7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0i2 + UzEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEuzUz1LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv/OtgAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASrRSH0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/xsYACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtFAzS7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqqAAMAAAAAAAAAAEu2UkpLtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv/atgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1Uv/MuwAPTLVSUEu1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/0rwAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/9K8ABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv/atgAOAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/8Dkwf9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS////////////bsBk/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//////////////////////9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//////////////////// + /////////////0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//// + ///////////////////////////////////d6sP/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/////////////////////////////////////////////////0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//////////////////////////////////////////////////// + ////////S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//////////////////////////////////// + //////////////////////////////////9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//////////////////// + ////////////////////////////////////////////////////////0uOr/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/wAAAAAAAAAAAAAAAAAAAAAA/wABS7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//// + ////////////////////////////////////////////////////////////////////////V7lZ/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv8AAAAAAAAAAAAA + AAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/////////////////////////////////////////////////////////////////7Dd + rP9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//////////////////////////////////////////////////// + ////////S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9ItlMxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//////////////////////////////////// + /////////////0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0uzUiUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//////////////////// + //////////////////9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/SLZIBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAD/AAFLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//// + ////////////////////////+fff/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9ItkgHAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS//////////////////////9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/9S4ABIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS////////////S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/1L8AGAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/1q6Xf9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv/OtgAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/8bGAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv/atgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/9K8ABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtFHOAAAAAEu1Uv9LtVL/0rwAFwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0q0UdQAAAAAAAAAAAAAAADatgAOAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/SrVS7AAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0q0 + UuIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/SrVS0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9KtVLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0q0UuIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1Uv9KtVLsAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEq0UdQAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD///+f//8AAP///w///wAA///+B/// + AAD///wD//8AAP//+AH//wAA///wAP//AAD//+AAf/8AAP//wAA//wAA//+AAB//AAD/8wAAD/8AAP/g + AAAH/wAA/8AAAAP/AAD/gAAAA/8AAP8AAAAH/wAA/gAAAAP/AAD8AAAAAf8AAPgAAAAA/wAA8AAAAAB/ + AADgAAAAAD8AAMAAAAAAHwAAgAAAAAAPAACAAAAAAAcAAMAAAAAAAwAA4AAAAAABAADwAAAAAAAAAPgA + AAAAAQAA/AAAAAADAAD+AAAAAAcAAP8AAAAADwAA/4AAAAAfAAD/wAAAAD8AAP/gAAAAfwAA/+AAAAD/ + AAD/wAAAAf8AAP/AAAAD/wAA/+AAAAf/AAD/8AAAT/8AAP/4AAD//wAA//wAAf//AAD//gAD//8AAP// + AAf//wAA//+AD///AAD//8Af//8AAP//4D///wAA///wf///AAD///j///8AAP///f///wAAKAAAADAA + AABgAAAAAQAIAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAP9vtzz/cLc8/1+2Rv9RtU//S7VS/0y1 + Uf9NtVH/TrVQ/0+1UP9NtlP/TbZU/062VP9Rt1f/VLla/1W5W/9WuVz/Y7ZD/2C2Rf9htkX/YrZE/2O2 + RP9otkD/Yb5m/2S/aP9mv2j/aMBq/3jHef95x3z/e8h8/3zIfP9+yX//f8qD/4PMiP+R0ZL/ktGS/5TS + lP+V0pX/mdSY/6jaqP+s3Kv/r92t/7Ddrv/G5sL/xufF/8jnxv/L6cj/3fDb/9/x3f/g8d3/4/Pg/+/4 + 7f/x+e//8vnv//r8+P/7/fn//v/+/////v8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQUFAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFBQUFBQAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUFBQUFBQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAUFBQUFBQUFBQUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUF + BQUFBQUFBQUFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUFBQUFBQUFBQUFBQMA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQUFBQUFBQUFBQUFBQYDAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAUFBQUFBQUFBQUFBQUFBQUGAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAUEgAABQUFBQUFBQUFBQUFBQUFBQUFBgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUHBhIFBQUFBQUF + BQUFBQUFBQUFBQUFBQYDAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQcFBQYFBQUFBQUFBQUFBQUFBQUFBQUF + BQUGAwAAAAAAAAAAAAAAAAAAAAAAAAAVBwUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBhIAAAAAAAAA + AAAAAAAAAAAAABUHBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCBUAAAAAAAAAAAAAAAAAAAAAFQcF + BQUFBQUFBQUGBQUFBQUFBQUFBQUFBQUFBQUFEwAAAAAAAAAAAAAAAAAAAAAVBwUFBQUFBQUFBQUgKg8F + BQUFBQUFBQUFBQUFBQUFBQUAAAAAAAAAAAAAAAAAABUHBQUFBQUFBQUFBQUhOTUkDAUFBQUFBQUFBQUF + BQUFBQUFAAAAAAAAAAAAAAAAFQcFBQUFBQUFBQUFBQUhOTk5MR4FBQUFBQUFBQUFBQUFBQUFBQAAAAAA + AAAAAAASBwUFBQUFBQUFBQUFBQUhOTk5OTgsGAUFBQUFBQUFBQUFBQUFBQUAAAAAAAAAAAUFBQUFBQUF + BQUFBQUFBQUhOTk5OTk5NygOBQUFBQUFBQUFBQUFBQUFAAAAAAAABQUFBQUFBQUFBQUFBQUFBQUhOTk5 + OTk5OTkzIwsFBQUFBQUFBQUFBQUFBQAAAAAFBQUFBQUFBQUFBQUFBQUFBQUhOTk5OTk5OTk5OS8bBQUF + BQUFBQUFBQUFBQUAAAAFBQUFBQUFBQUFBQUFBQUFBQUhOTk5OTk5OTk5OTk4KxcFBQUFBQUFBQUFBQUF + AAAABQUFBQUFBQUFBQUFBQUFBQUhOTk5OTk5OTk5OTk5OTYnDQUFBQUFBQUFBQUFBQAAAAUFBQUFBQUF + BQUFBQUFBQUhOTk5OTk5OTk5OTk5OTMiCwUFBQUFBQUFBQUFBQUAAAAFBQUFBQUFBQUFBQUFBQUhOTk5 + OTk5OTk5OTk2KQ4FBQUFBQUFBQUFBQUFBQUAAAAABQUFBQUFBQUFBQUFBQUhOTk5OTk5OTk5OS0ZBQUF + BQUFBQUFBQUFBQUFBQUAAAAAAAUFBQUFBQUFBQUFBQUhOTk5OTk5OTkwHQUFBQUFBQUFBQUFBQUFBQUF + BQAAAAAAAAAFBQUFBQUFBQUFBQUhOTk5OTk5NCUKBQUFBQUFBQUFBQUFBQUFBQUFAAAAAAAAAAAABQUF + BQUFBQUFBQUhOTk5OTcpEAUFBQUFBQUFBQUFBQUFBQUFBQUAAAAAAAAAAAAAAAUFBQUFBQUFBQUhOTk5 + LhoFBQUFBQUFBQUFBQUFBQUFBQUGAwAAAAAAAAAAAAAAAAAFBQUFBQUFBQUhOTIfBQUFBQUFBQUFBQUF + BQUFBQUFBQYDAAAAAAAAAAAAAAAAAAAABQUFBQUFBQUcJgsFBQUFBQUFBQUFBQUFBQUFBQUFBgMAAAAA + AAAAAAAAAAAAAAAAFgcFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUGAwAAAAAAAAAAAAAAAAAAAAAW + CQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQYDAAAAAAAAAAAAAAAAAAAAAAARBwUFBQUFBQUFBQUF + BQUFBQUFBQUFBQUFBQUFBgMAAAAAAAAAAAAAAAAAAAAAAAAAFQcFBQUFBQUFBQUFBQUFBQUFBQUFBQUH + BQUGAwAAAAAAAAAAAAAAAAAAAAAAAAAAABUHBQUFBQUFBQUFBQUFBQUFBQUFBQUBBAYDAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAUBwUFBQUFBQUFBQUFBQUFBQUFBQUAAhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAFAcFBQUFBQUFBQUFBQUFBQUFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQHBQUFBQUF + BQUFBQUFBQUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVBwUFBQUFBQUFBQUFBQUAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQcFBQUFBQUFBQUFBQAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAABQHBQUFBQUFBQUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAVBwUFBQUFBQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQcF + BQUFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUHBQUFAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVBwUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD///////8AAP///5///wAA////D///AAD///4H//8AAP///AP//wAA///4Af//AAD///AA//8AAP// + 4AB//wAA///AAD//AAD//4AAH/8AAP/zAAAP/wAA/+AAAAf/AAD/wAAAA/8AAP+AAAAD/wAA/wAAAAf/ + AAD+AAAAA/8AAPwAAAAB/wAA+AAAAAD/AADwAAAAAH8AAOAAAAAAPwAAwAAAAAAfAACAAAAAAA8AAIAA + AAAABwAAwAAAAAADAADgAAAAAAEAAPAAAAAAAAAA+AAAAAABAAD8AAAAAAMAAP4AAAAABwAA/wAAAAAP + AAD/gAAAAB8AAP/AAAAAPwAA/+AAAAB/AAD/4AAAAP8AAP/AAAAB/wAA/8AAAAP/AAD/4AAAB/8AAP/w + AABP/wAA//gAAP//AAD//AAB//8AAP/+AAP//wAA//8AB///AAD//4AP//8AAP//wB///wAA///gP/// + AAD///B///8AAP//+P///wAA///9////AAAoAAAAIAAAAEAAAAABACAAAAAAAAAgAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABLtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/AAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtFH+S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv/8/fz/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//z9/P///////////0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtVH/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL//P38//////////////////////9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv/8/fz///////////////////////// + ///q8dP/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAEu1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//z9/P////////////// + ////////////////////////S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAA + AAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL//P38//// + /////////////////////////////////////////////0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv/8/fz/////////////////////////////////////////////////S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS//z9/P//////////////////////////////////////S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL//P38////////////////////////////mspu/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv/8/fz//////////////////v7+/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//z9/P///////////0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL//P38/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv8AAAAAAAAAAEu1 + Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAEu0Uf5LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uf9LtVL/S7VS/0u1 + Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1 + Uv9LtVL/S7VS/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAEu1Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//v////x////4P///8B///+AP///AB//9gAP/+AAB//AAAP/gA + AH/wAAB/4AAAP8AAAB+AAAAPAAAAB4AAAAPAAAAB4AAAAPAAAAH4AAAD/AAAB/4AAA/+AAAf/AAAP/4A + AH//AAb//4AP///AH///4D////B////4/////f//KAAAACAAAABAAAAAAQAIAAAAAAAACAAAAAAAAAAA + AAAAAAAAAAAAAAAAAP95tzb/erc2/3u3Nf9wtzz/VrZL/1C1T/9RtU7/UrVO/1O1Tf9VtUz/VbZM/0u1 + Uv9NtVH/TrVQ/0+1UP9NtlT/ULdW/1a5W/9gtkb/Y7ZE/2i2QP9bu2D/Zb9p/2vCb/9vw3L/d8d6/33J + fv+NuCr/jrgq/4+4Kf+SuSf/k7kn/5C5Kf+SuSj/hcyG/4fNif+U0pX/l9OY/5bUmf+e15//n9eh/63d + rv+s3bD/uOG5/8jox//Q68//0+zS/97x3f/h8t//5vTl//D47//1+/T/+/36//3+/f//////AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAADAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAADAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAYCAAAAAAAAAAAAAAAAAAAA + AAAAAAAMDAwMDAwMDAwMDAcBAAAAAAAAAAAAAAAAAAAAIAsTDAwMDAwMDAwMDAwMDAcDAAAAAAAAAAAA + AAAAACAJDA4MDAwMDAwMDAwMDAwMDAcDAAAAAAAAAAAAAAAdCQwMDAwMDAwMDAwMDAwMDAwMDAoAAAAA + AAAAAAAAHgkMDAwMDAwMDAwMDAwMDAwMDAwNFAAAAAAAAAAAACAJDAwMDAwMDCkmEAwMDAwMDAwMDAwM + AAAAAAAAAAAhCQwMDAwMDAwMKzcxGwwMDAwMDAwMDAwMAAAAAAAADAcMDAwMDAwMDAwrNzc3LRcMDAwM + DAwMDAwMAAAAAAwMDAwMDAwMDAwMDCs3Nzc3NSoSDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMKzc3Nzc3 + NzMlEAwMDAwMDAwMAAAMDAwMDAwMDAwMDAwrNzc3Nzc3NzcwGgwMDAwMDAwMAAAMDAwMDAwMDAwMDCs3 + Nzc3Nzc3Ny4YDAwMDAwMDAwMAAAMDAwMDAwMDAwMKzc3Nzc3NzIjDAwMDAwMDAwMDAwAAAAMDAwMDAwM + DAwrNzc3NzQoEQwMDAwMDAwMDAwMDAAAAAAMDAwMDAwMDCs3NzYsFgwMDAwMDAwMDAwMDAwAAAAAAAAM + DAwMDAwMKzcvGQwMDAwMDAwMDAwMDAcCAAAAAAAAAAAMDAwMDAwnJAwMDAwMDAwMDAwMDAwHAwAAAAAA + AAAAABUPDAwMDAwMDAwMDAwMDAwMDAwMBwIAAAAAAAAAAAAABQwMDAwMDAwMDAwMDAwMDAwMDAcBAAAA + AAAAAAAAAAAfCQwMDAwMDAwMDAwMDAwMDwwHAgAAAAAAAAAAAAAAAAAfCQwMDAwMDAwMDAwMDAwEBQIA + AAAAAAAAAAAAAAAAAAAcCQwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAeCQwMDAwMDAwMDAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAgCQwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeCQwMDAwM + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdCQwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAi + CAwAAAAAAAAAAAAAAAAAAAAA//+/////H////g////wH///4A///8AH//2AA//4AAH/8AAA/+AAAf/AA + AH/gAAA/wAAAH4AAAA8AAAAHgAAAA8AAAAHgAAAA8AAAAfgAAAP8AAAH/gAAD/4AAB/8AAA//gAAf/8A + Bv//gA///8Af///gP///8H////j////9//8oAAAAGAAAADAAAAABACAAAAAAAAASAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASrRSQUm1 + Ty0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJtU8tS7VS/0u1Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEuz + UVFLtVL/S7VS/0u1Uv9LtVL/SbVPLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASbVPLUu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/8+/ + ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABKtFJBS7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv/UqgAGAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/2S1QV5LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/1L8AGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL///////////9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL//////////////////////0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAA + AAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL///////////////////////// + ///29+b/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/wAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL//////////////////////////////////////0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv8AAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL///////// + /////////////////////////////0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAA + AAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL///////////////////////////+l1ZP/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9JtU8tAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1 + Uv9LtVL//////////////////////0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL///////////9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/0LkAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv/PvwAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/9SqAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u0 + UtJLtVL/1L8AGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/SrVR3gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9KtVLyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u0Uc4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1 + Uv9LtVL/SrVS8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKtVHeAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP/z/wD/4f8A/8D/AP+AfwD9AD8A+AAfAPAA + HwDgAA8AwAAHAIAAAwCAAAEAwAAAAOAAAQDwAAMA+AAHAPwADwD4AB8A/AA/AP4A/wD/Af8A/4P/AP/H + /wD/7/8AKAAAABgAAAAwAAAAAQAIAAAAAACABAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9UtUz/VbZM/0u1 + Uv9MtVH/TbVR/061UP9PtVD/TLZT/062VP9SuFj/Vrlc/2W2Qv9htkX/Xr1j/2XAav9qwW7/ccR1/3LF + dv99yYD/iM6L/5PSlv+j2aX/r92w/73kvv/B5sP/yejJ/9ju1//h8uD/6vbp//H58P/3/Pb/+/36//7+ + /v//////AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAA + AAADAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAAAAAAAA + AAAAAAAAAAAAAAADAwMDAwMDAQAAAAAAAAAAAAAAAAANAAMDAwMDAwMDAwEAAAAAAAAAAAAAAAIEBgMD + AwMDAwMDAwMBAAAAAAAAAAAAAgQDAwMDAwMDAwMDAwMEDQAAAAAAAAACBAMDAwMRCQMDAwMDAwMFAwAA + AAAAAAIEAwMDAwMZHBMDAwMDAwMDAwMAAAAABwQDAwMDAwMZIiIaDwMDAwMDAwMDAAADAwMDAwMDAwMZ + IiIiIBcLAwMDAwMDAwADAwMDAwMDAwMZIiIiIiIeFQgDAwMDAwMAAwMDAwMDAwMZIiIiIiIdFAMDAwMD + AwMAAAMDAwMDAwMZIiIiHxYKAwMDAwMDAwMAAAADAwMDAwMZIiEYDgMDAwMDAwMDAwAAAAAAAwMDAwMZ + GxIDAwMDAwMDAwMBAAAAAAAAAAYDAwMQBAMDAwMDAwMDAwEAAAAAAAAADAUDAwMDAwMDAwMDAwMDAQAA + AAAAAAAAAAIEAwMDAwMDAwMDBQUBAAAAAAAAAAAAAAACBAMDAwMDAwMDAwwAAAAAAAAAAAAAAAAAAgQD + AwMDAwMDAAAAAAAAAAAAAAAAAAAAAAIEAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAACBAMDAwAAAAAAAAAA + AAAAAAAAAAAAAAAAAgQDAAAAAAAAAAAAAAD///8A//P/AP/h/wD/wP8A/4B/AP0APwD4AB8A8AAfAOAA + DwDAAAcAgAADAIAAAQDAAAAA4AABAPAAAwD4AAcA/AAPAPgAHwD8AD8A/gD/AP8B/wD/g/8A/8f/AP/v + /wAoAAAAEAAAACAAAAABACAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABLtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv8AAAAAAAAAAAAA + AAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv//////S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAA + AAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/////////////////S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv8AAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS////////////////////////////S7VS/0u1 + Uv9LtVL/S7VS/wAAAAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1Uv//////////////////////sN2s/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/////////////////S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS//////9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1 + Uv9LtVL/S7VS/0u1Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABLtVL/S7VS/0u1Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAEu1Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9/AAD+PwAA/B8AAPAP + AADgBwAAwAcAAIADAAAAAQAAgAAAAMABAADgAwAA4AcAAPAPAAD4PwAA/H8AAP7/AAAoAAAAEAAAACAA + AAABAAgAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAA/0+1T/9QtU//VLVM/1W2TP9LtVL/TLVR/021 + Uf9PtVD/U7hZ/1a5XP9hvmb/ZsBr/3bGev99yYH/qNuq/6/esf+y37T/uOK6/8Lmw//K6cr/1u7X//n8 + +f/7/fv////+/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAFBQUAAAAAAAAAAAAAAAAFBQUF + BQAAAAAAAAAAAAAFBQUFBQYDAAAAAAAAAAQBBQUFBQUFBgMAAAAAAAQGBQUFBQUFBQUIAAAAAAQGBQUF + Eg4FBQUFBQUAAAUGBQUFBRUYFAwFBQUFBQAFBQUFBQUVGBgXEAoFBQUFBQUFBQUFFRgYFg8JBQUFBQAF + BQUFBRUYEwsFBQUFBQUAAAUFBQURDQUFBQUFBgMAAAAAAgUFBQUFBQUFBgMAAAAAAAQGBQUFBQUFAQMA + AAAAAAAABAYFBQUFBQAAAAAAAAAAAAAEBgUFBQAAAAAAAAAAAAAAAAQHBQAAAAAAAAD/fwAA/j8AAPwf + AADwDwAA4AcAAMAHAACAAwAAAAEAAIAAAADAAQAA4AMAAOAHAADwDwAA+D8AAPx/AAD+/wAA </value> </data> </root>
\ No newline at end of file diff --git a/MediaBrowser.ServerApplication/MainStartup.cs b/MediaBrowser.ServerApplication/MainStartup.cs index 6e8774eea..968172bc3 100644 --- a/MediaBrowser.ServerApplication/MainStartup.cs +++ b/MediaBrowser.ServerApplication/MainStartup.cs @@ -370,7 +370,8 @@ namespace MediaBrowser.ServerApplication private static void RunServiceInstallationIfNeeded(string applicationPath) { - var ctl = ServiceController.GetServices().FirstOrDefault(s => s.ServiceName == BackgroundService.Name); + var serviceName = BackgroundService.GetExistingServiceName(); + var ctl = ServiceController.GetServices().FirstOrDefault(s => s.ServiceName == serviceName); if (ctl == null) { @@ -476,7 +477,7 @@ namespace MediaBrowser.ServerApplication // Update is there - execute update try { - var serviceName = _isRunningAsService ? BackgroundService.Name : string.Empty; + var serviceName = _isRunningAsService ? BackgroundService.GetExistingServiceName() : string.Empty; new ApplicationUpdater().UpdateApplication(appPaths, updateArchive, logger, serviceName); // And just let the app exit so it can update @@ -515,11 +516,11 @@ namespace MediaBrowser.ServerApplication _logger.Info("Hiding server notify icon"); _serverNotifyIcon.Visible = false; - _logger.Info("Executing windows forms restart"); + _logger.Info("Starting new instance"); //Application.Restart(); Process.Start(_appHost.ServerConfigurationManager.ApplicationPaths.ApplicationPath); - _logger.Info("Calling Application.Exit"); + _logger.Info("Calling Environment.Exit"); Environment.Exit(0); } } @@ -539,7 +540,7 @@ namespace MediaBrowser.ServerApplication private static void ShutdownWindowsService() { _logger.Info("Stopping background service"); - var service = new ServiceController(BackgroundService.Name); + var service = new ServiceController(BackgroundService.GetExistingServiceName()); service.Refresh(); diff --git a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj index 7e150248e..c0830c8c9 100644 --- a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj +++ b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj @@ -37,7 +37,7 @@ <StartupObject>MediaBrowser.ServerApplication.MainStartup</StartupObject> </PropertyGroup> <PropertyGroup> - <ApplicationIcon>Resources\Images\Icon.ico</ApplicationIcon> + <ApplicationIcon>Icon.ico</ApplicationIcon> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'"> <DebugSymbols>true</DebugSymbols> @@ -99,7 +99,6 @@ <Compile Include="BackgroundServiceInstaller.cs"> <SubType>Component</SubType> </Compile> - <Compile Include="EntryPoints\ResourceEntryPoint.cs" /> <Compile Include="Native\NativeFileSystem.cs" /> <Compile Include="MainForm.cs"> <SubType>Form</SubType> @@ -237,6 +236,7 @@ <Content Include="CORE_RL_zlib_.dll"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> + <Content Include="Icon.ico" /> <Content Include="IM_MOD_RL_bgr_.dll"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> @@ -399,7 +399,6 @@ <Content Include="IM_MOD_RL_yuv_.dll"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="Resources\Images\Icon.ico" /> <Content Include="Resources\Images\mb3logo800.png" /> </ItemGroup> <ItemGroup> diff --git a/MediaBrowser.ServerApplication/Native/Autorun.cs b/MediaBrowser.ServerApplication/Native/Autorun.cs index 593bb7955..dd2a77565 100644 --- a/MediaBrowser.ServerApplication/Native/Autorun.cs +++ b/MediaBrowser.ServerApplication/Native/Autorun.cs @@ -18,17 +18,32 @@ namespace MediaBrowser.ServerApplication.Native { var shortcutPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.StartMenu), "Media Browser 3", "Media Browser Server.lnk"); + if (!Directory.Exists(Path.GetDirectoryName(shortcutPath))) + { + shortcutPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.StartMenu), "Emby", "Emby Server.lnk"); + } + var startupPath = Environment.GetFolderPath(Environment.SpecialFolder.Startup); + // Remove lnk from old name + try + { + fileSystem.DeleteFile(Path.Combine(startupPath, Path.GetFileName(shortcutPath) ?? "Media Browser Server.lnk")); + } + catch + { + + } + if (autorun) { //Copy our shortut into the startup folder for this user - File.Copy(shortcutPath, Path.Combine(startupPath, Path.GetFileName(shortcutPath) ?? "MBstartup.lnk"), true); + File.Copy(shortcutPath, Path.Combine(startupPath, Path.GetFileName(shortcutPath) ?? "Emby Server.lnk"), true); } else { //Remove our shortcut from the startup folder for this user - fileSystem.DeleteFile(Path.Combine(startupPath, Path.GetFileName(shortcutPath) ?? "MBstartup.lnk")); + fileSystem.DeleteFile(Path.Combine(startupPath, Path.GetFileName(shortcutPath) ?? "Emby Server.lnk")); } } } diff --git a/MediaBrowser.ServerApplication/Native/WindowsApp.cs b/MediaBrowser.ServerApplication/Native/WindowsApp.cs index 476fb58b9..bad1aaf35 100644 --- a/MediaBrowser.ServerApplication/Native/WindowsApp.cs +++ b/MediaBrowser.ServerApplication/Native/WindowsApp.cs @@ -90,7 +90,7 @@ namespace MediaBrowser.ServerApplication.Native MainStartup.Shutdown(); } - public void Restart() + public void Restart(StartupOptions startupOptions) { MainStartup.Restart(); } diff --git a/MediaBrowser.ServerApplication/Properties/AssemblyInfo.cs b/MediaBrowser.ServerApplication/Properties/AssemblyInfo.cs index 080c12596..cd31fb953 100644 --- a/MediaBrowser.ServerApplication/Properties/AssemblyInfo.cs +++ b/MediaBrowser.ServerApplication/Properties/AssemblyInfo.cs @@ -5,11 +5,11 @@ using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly: AssemblyTitle("Media Browser Server")] +[assembly: AssemblyTitle("Emby Server")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Media Browser Server")] +[assembly: AssemblyProduct("Emby Server")] [assembly: AssemblyCopyright("Copyright © 2013")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] diff --git a/MediaBrowser.ServerApplication/Resources/Images/Icon.ico b/MediaBrowser.ServerApplication/Resources/Images/Icon.ico Binary files differdeleted file mode 100644 index 4acd8f921..000000000 --- a/MediaBrowser.ServerApplication/Resources/Images/Icon.ico +++ /dev/null diff --git a/MediaBrowser.ServerApplication/ServerNotifyIcon.cs b/MediaBrowser.ServerApplication/ServerNotifyIcon.cs index 3c5ed6e54..725720731 100644 --- a/MediaBrowser.ServerApplication/ServerNotifyIcon.cs +++ b/MediaBrowser.ServerApplication/ServerNotifyIcon.cs @@ -74,7 +74,7 @@ namespace MediaBrowser.ServerApplication // notifyIcon1 // notifyIcon1.ContextMenuStrip = contextMenuStrip1; - notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon"))); + notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); notifyIcon1.Text = "Emby"; notifyIcon1.Visible = true; // diff --git a/MediaBrowser.ServerApplication/Splash/SplashForm.Designer.cs b/MediaBrowser.ServerApplication/Splash/SplashForm.Designer.cs index 678796532..9e6086dc2 100644 --- a/MediaBrowser.ServerApplication/Splash/SplashForm.Designer.cs +++ b/MediaBrowser.ServerApplication/Splash/SplashForm.Designer.cs @@ -108,7 +108,7 @@ this.lblVersion.Location = new System.Drawing.Point(3, 59); this.lblVersion.MaximumSize = new System.Drawing.Size(0, 100); this.lblVersion.Name = "lblVersion"; - this.lblVersion.Size = new System.Drawing.Size(270, 59); + this.lblVersion.Size = new System.Drawing.Size(267, 59); this.lblVersion.TabIndex = 1; this.lblVersion.Text = "Version 1234"; this.lblVersion.UseWaitCursor = true; diff --git a/MediaBrowser.ServerApplication/Splash/SplashForm.resx b/MediaBrowser.ServerApplication/Splash/SplashForm.resx index 39c74beb5..99fcc8b74 100644 --- a/MediaBrowser.ServerApplication/Splash/SplashForm.resx +++ b/MediaBrowser.ServerApplication/Splash/SplashForm.resx @@ -120,2802 +120,547 @@ <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <value> - iVBORw0KGgoAAAANSUhEUgAAAyAAAADZCAYAAADYBVQkAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL - EAAACxABrSO9dQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AABnWElEQVR4Xu29 - d3hV19mnPe+Xt868M9fMN8kbm2JjUwym996bRJVAAiGBBEKAaALRu2iig+ii9957N800G7c4Tpwel8SJ - Ezu9x/Yzv2ettc/Zp6hQ7Fjwu6/rvo60tc8+B8Mfuv2stc9/I4QQQgghhBBCCCGEEEIIIYQQQgghhBBC - CCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBC - CCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBC - CCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBC - CCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBC - CCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBC - CCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBC - CCGEEEIIIYQQQgghhBBCCCGEEPKPpWH6pn9rPWJv9/Yj945rN3LP+HYj91qzrO09R+0zdhi13zpaPTBO - 7ZgdasyYg/DQuJixnofHxow7PDZ23JGxseOPju00wTnxGDw+tvPE42M6T7J2mXzSOkU9Nabr1FNjuk09 - nW2cpp6BZ7O7TYcz1HPWnHPZ3XPOjw56YXT3maHGhXjRGD/rUqH2mB1qzzmXRic4E+e+kN0rF867nJ00 - 70p20vwrY/osuDImecHVMSkLr43pt/ja2NQl18emLb0+tv+yF8el590Yl7Hi5vhBK2+OH7z61vjMtbcn - DFt7Z8KI/JcmZq1/eeKojS9PzN50d9KYza9MHrfl1cnjt702ecL216ZM3Pn6lAk7Xp80etPd7uO23P1X - 91dHCCGEEEJIyaJ+//X/3jZr/5GOYw5/FjPmiAQc63k0wthxPscfC9jJ74TjQSeeMHZWJ520Tj4lXTyn - nDZ2nep5Rrp5TlPPSvfpnuek+wzP84LQ8HlBEBZFGu8562Kx7DHb85KxpzrnkiBArHNfkMRca6/cy4IY - kd7zrwhiRPosuCrJC69KyqJrkrL4mvRbcl1Sl16XtGUvSv+8GzJg+Q1JX3FTBq68JYNW35bBa27JkDV3 - JHPtSzI0/yUZtv5lGb7hZRmx8a6M3HRXsja/8tnoLa8cmLztlX9xf4WEEEIIIYSUHFoN2923Q/Zh8ewY - 1SOh+kMlECuIkZA48aLEFyKw8wREiDoREeLpoiQYJKekqwZJIErO2ChxMeJpYiQgAkRFlMT5RZhEM171 - x0hhzlIjg8SECExQ5yBAECK9XIT0RoQkzb8sfRAhyQuuSAoipC8ipC8iJBURkrYUAbIMAYIISV9xAwFy - UwatuiWDESGhAfKSDEeEjNj4sgmQkZtekVFbXpGxW19Jcn+FhBBCCCGElBzaDt+5okP2IcRHYQYDJRAp - Y1QbI0b/xAQB4hk7XkWMTLDaiUgBUxETIU5ESEBEiGpiBBFinI4YmY4QCXjOGpiO+ERs+A2JkZmFG6+a - AAm1h2oiBAYmIZcCEaIB0hsBkoT4SF6IAFkEF1+Vfl6AmAnIi24CEi1A7sjQdS5AzATEBkjW5rsIkLuS - vfWVte6vkBBCCCGEkJJDm+E71rYbfVDU9kWZrR4yBuIEIRJwLKLEaIPEakPEqCHiiRBRbYzASQgS2NmI - GEGEWE9JZ0RIZ7dMy8bIGauJkbOIEb/npCuiQ0OkMINxEhkofoOR4lu+5YXIbBshPeaER8glGyHz1cvS - JxAhV80EpN8SRMgyREjedRmACElHhGiAZKy6iQDRJVi3TYBk6gQEETJ8A9z4UnAZFgJk9NZX1ru/QkII - IYQQQkoObYbtyG+XdUDajQraPkKERzQRJR2MCBHVRUlwQhIMEjMdCZmMBGOkk5mMwLAYsUHiCxG3PMvb - MxKYipjJSPh0xOeMs1HtbvTFSDQRKNEmJv7JSA+EiE5CEhAiCXMvugC5JL3n2Qjps+CyL0Cu2gBZek3S - ECEDNEKWv4gAuREMEJ2CrEWE5N9BgNyxAQLtFORlEyDZW+4yQAghhBBCSMmjzdDtCJD9UrSIE09ESfRY - 8UcJ9E1KgkHilmuNc0Filmg5J6gaIi5GJnkiRiarLkamqHYyElympboJiYmRMBEi4RYVKGr3HNWGiI0R - OFN1EQLtcixEyJwLiJALCJCLCJCLCBAbIX0QIckLL5tlWDZArkoqIiRt2TUTIOlegEA7AbklmQiQofm3 - ESDQLMOyAZJlAuRlBAgnIIQQQgghpATSJnPb2rYj9olxuNP7HrYLESEyMlyEB6IkaPiU5JDRTkl8+0hM - kCBGfJvY7XQkbImWWaaF+DCeRIwgPkKWaAVjJBAlXoj4nWaXbPkNTEx0GVcUw/eXeFORONVNRIIRcl56 - IkISYOIcBIiJEBsgSRogCxAgCxEgiJB+iJBUREja0mvSfxkCJA8BssIGyKBVN2WIL0J0AjJs/R0ZjggZ - scFNQDZrgHACQgghhBBCSiCth2xd23b4XoRHFEdY24XoYmSkX4SIf1rin46MtlMROxlxIRKYigQnIzZC - gpMR/+b14MZ1GyN2nwicbLWb1v16ExG/kVESXL7lj5GgdkISDBG7ZMuqk5B4deY5Ex+eGiA6BdEA6Z17 - UZLmXTIBosuwUhZedgFyxRcg1xAg10MCZPBqRAgCZOjaWy5AbrsJyEsIkJdklAmQlze4v0JCCCGEEEJK - Dq2GbM5vPWyPhDg80jYh7pU2iJGgbmKCGAkYJUgiosS/qR0xEtzM7jawI0RUXaalG9iNCJLYic5Jx42h - y7TcUi2zTMvvKemMEPFbVKDoUq6QiYl/6ZYXIzkaI2dNiMTPsjHSczZCJGwplo2QFyRlESIEARKIEG8Z - 1ooXESBwFSIEATJ4DSIEAaLLsIaaZVhuL4hGCAJkNAOEEEIIIYSURFoO3oQA2YXwUHcXahvP4WpklHgT - E6MLETMh8cVI+1GqRsgB6aBmq7pfBJoICYZI4I5avv0ids+InYwYXYwE94s43XQkaLQo8U1NIoIEmgAJ - 2nW61QbIGQSI6gWItQcixAbIeQTIBV+AXJJkEyAvIEAuRwmQ65KhIkIGIULMFGTtTRsgZi+IBsgdOwXZ - /BIC5CUGCCGEEEIIKXm0GLQpv9XQXVKgCBPr7kgRIq0QH8FJyV5pjfjwbDPSc5/RTkZckCBEghOR4FQk - sHHdm4aYiUgwRKzBGNGJiJmKmBg5bkWAxIZMRJwIjXCDMWL3j/iNDBKr3dSuIXLaREhcjuoLELMUCwHi - LcWad9EESJ8FiJCFCJBFvgBZelX6512T9OW6DEsDRJdhuQBZc9NtRtelWIgQDRBol2ExQAghhBBCSAmk - RcbGtS0zd0hBthrqd2eow1QbKIEpCqIk4Ijd0mbEHqddrtUWQWLMUjVG4Ch1PwJkv5uKuBDxTUTCP1/E - 7hWBgamIvYNWcDISNhFxU5FwQyYk4YYEik5J7KSkq4mQU9INdkeExM2AiBATILCnm4IkzjmPALkgvXMv - SBIipI+ZglySvoiQfosvI0Cu2AAx+0CuyUBEyCAzAXkRAXIDAXIDAaLLsGyADF9/GwECN96RUZvuMEAI - IYQQQkjJo/nA9QiQ7YiN4hglUhAinuFRYsJkuIsSxIgNEjgSQeL0x0hbFyJGnYpkq3avSCBGECJmIjLO - E0EyXvVNRYz+GHGayUioBcWJiZIpPqeeQHyoNkS6TlODEdIdERKPCNEA6TELETL7rCTMOWcixAbIBQTI - RRMgKW4KkooISVt6BQFyVQYsvyrpy6+ZZVgaIcEAuSmZ+boUSyPklgzfcAsBcpsBQgghhBBCSibNBq7L - bzFkm4S6vRjusCJC1JaZiBBPf5SYIHFRghhRvRhpHQiRvdIGEdJGI8SFSNtAiFhtjMAxCBJfiBgDS7Ns - iHiGBMkE9ZjEIETCjRYonSZ7uiDxxYgXIV28CJnuTULOmAiJn4kQMRFyzkRIr7kuQhAgfRYgQhYiQhbp - FOQFSV2CCFl2RQbkaYRcc8uwfFOQtaqLEATIMATIcARI1kYGCCGEEEIIKYE0Tc/Pbz54q4S6zTrIc7ux - xeAC9AVJSzVqkOwKGNw/4k1G9pgYaR0IEWgixDladTGCCFHNZAQx4p+KeDHi105HfCJEwrVxAv1RMils - YuILkuBExE1CECAmQnQplpmEnEaAnAlOQRAgvXIRIf4piNmMjghBgKSaKQgiRKcgCJCBKxEhCBATIWtc - hOTfkMx1iJD1NkJGbrzNACGEEEIIISWPpgMQIIMQHcW0Rcj3LlBcsLRQwycl3lKtsBixS7TcZvZhe8xm - 9laBEIFeiJgY2RsSIm2zgyFiNFORKJMRGFyq5YwIEp8TESTOGBUR4mmD5JiLkOOIENUuy7LLsU66CDkl - cTmnJH7maenpixAzBZl3XpLmX0CAXJSUhRel76JLdgqy9HIwQLwpyKrrCJDrCBBEyNoXTYTYALnJACGE - EEIIISWXJv3X5jfL2CLNMjZHUY+H2nXUDnnpm+/La29/UDy/4/mzwv2u9fUIf24fv4fHInxD/f6HD+Av - gv4g0m8U4Js/9Pyl9Ue/lG8G/Eje+nGo33rn44DfVt/9WKZsvW32gtjN6Nckw0xBECCrdQqCAFERIUMR - IcMQISM33mKAEEIIIYSQkkeTtDX5TQdukqLdbOyetUn++te/C3m4zNpxw05B8q4iQOBKjZBrMmj1daOd - grwYmIKM2HCTAUIIIYQQQkoejVNX5zdN3yjFEiHSbeSGkAD59NPPZOG6EzJy1g7rzK3y3k9/aX62cts5 - cyzLHN8ub//gJ+b4hn2XJWv2TrgL7pBXvvlDc3z38ZuSNXe3dc4uufnKd8zxQ+fuyqjcPTJqHszdLRdv - vGmOn73+poyev9c4Cp68/Jo5fuWlt3Fsn4xeAPG4/8wdc/zlN38k2Qv2wwPmccexG+b4t77/E/P9mIUH - jOv2XjbHf/Deh/gexxfhOFyGP4/y0w9/JeOXHJSxiw/KuMWHZNGmM+a/w69++0dzfMKyw8bc9Sflb3/7 - RP76t7/LxLzDMmnFUZm88pjMWH1MPvnkU3Mtj5nbXpT+Sy/LAERIet4VEyEZK67KoFWIEDMJ0eVY1yXT - 7AW5IcPX39zi/goJIYQQQggpOTTqtyq/8YCNUqD9N0oTT3zfbURogHzy6aeSNm0fzluP89dLo74r5ds/ - +Kn52fB5R/GcDeZ5jfutljtv2NCYkHdammVsgpvxs3Vy/sZb5nju5st2n8mQbfjZRjl66XVzfPmeG2Ju - AzxUN7pvke3HbVBsOX5XWg3fae6spY/rDt40x/dffFNaj9wlrbP0Tlu7ZfH2K+b42VvfNcfajN5n9pXM - 2nDRHL/1jXelbdYet8dkn4zNO2WOv/G9n+H7vdJ+zH5pP3a/DJl3xBz/wfsfScy4/dJx/EGJgQPnHjH/ - HT78+HfSacIB6TrlCDwq/WYdkr/gv9WfYfeph6TnzBOSMPuk9J5xUP7290/MtTw0QFKXviD9l9n9IP0R - IWoqvu+LMEmGSUteMPaCycuufG/q1lv/4v4aCSGEEEIIKRk07Lcyv3H/DQiIKCIeVBsR1m4j1kcGyIwD - 0mTgJqOGRiBAFhyXpogMtUn//GCArDiL0Nhi7rjVNH2DXLjxLXM8d8tVs3FdQ6P54M3BANl700bGCL2L - 1nbZceIlc3zriVcQFLphXTeu75b1B2+Z4wcufdMEhgkNBMTiHVfN8XO3v2eOtR1zQNpmH5DZG18wx2+9 - +a691a/bzD5uxRlzXAOkPc7tMP6wdJxwSDIXHDPHNUA6TTwkMROPSOykI5Ix75gLkN9L50mHpNv0E9Id - ps45EgiQ+BlHJXHuGemVe1b6zDwcESCTNl6RnrnnJH7OOekOu80+K93wGDcX3+eel/h5FyR+/gXpufCC - JCy6JImLL302YMXVJeM33fo391dJCCGEEELIl5+GfVfkN0pbL436FyB+1ti4zth12LooE5D9gWixExC7 - 1Co4AcHPUtcgQH5gjo9ffsZMP5ohQpoMWO+bgFyxd9NChDTP2CRHL/omIIiSlsN2SovMraETkBG7rQiU - 0AkIogQRonGyyD8BMWGy34RIyAQEx/XDD/WuWmOXnzbHNUDa4Txzu9+xB2UI/jyKBkjs+AMSM+EwIuSw - DMw9GgiQThMPStepx6XbtOOSOvuwbwJyROJz9Ha9J6XrxD0RATJq1UXpNOOkdJ5xWrrknJGuM8+YCIlz - ERJvIuS89FhwXhIWXpTERRel1+IXPuubd/m1lOVXFvXJu5zTZ8XlnOSVV3JSVl3LSVl9Paffmus5afkv - 5qStu5HTf8PNnAGbbuWkb76VM3DLrZyMrbdzBm27kzNox0s5g3e8nDN458s5Q3bdzRmy+25O5p67OUP3 - vmLd92rOsP1Bhx94zXrQOsI9hlvQ8aIcefC1GZMPvd5//pE3/pf7J0oIIYQQQh4lGqS4AEFchGrjw9NG - yPqIAPnss8/k7lvvyeW7P7S+9H353e//ZH72+ts/kSs4pl5++fvy8W/+YI6/+f0P5MorOP7Kj/CzH8iH - H/3WHH/7x7+Qq6/+2Iqf/fTDX5vj33/vl3L1tXfkGtSfvfvBx+b4Ox/8yhy79vq75vGHP/nIHH//w9/Y - Y87vvvMLc/znH/3OHnvjPfiufPtHH5rjH/3mj3Idx6/juPrm9z4wx3/z+z+7Y++bx1fx51F+/6e/yotv - vgffN76C4/rfQWPjBr6/+c2fGF/+9vtmb8gnUF/vKq5z9Ru41uvvyKc4309ogJz2BQgMC5CeGiCw16JL - ZjlW0rLL1uWXpc+KK5K88pqkrLoufddcl9T8FwUBImnrb0r/jTdlwMZbggiRgVtuS8bWO5Kx/SUZtONl - QYTI4J13ZfCuu4IIkcw9r1j3viqIEOMwdf9r1gNWxEix9M4vjnp+9sHXXs098vrX3D9TQgghhBDyqNCg - z7L8Rv3ypbh2yVwbEiDk4TBq1QXpNP2EdJ5+SrogQroiQrrNOiNxsyEiJN5EyDnpMf+c9FxwQRKgiZDF - l6T30kuSpHtE8l6QPoiQ5BVXJQUR0nfVNemnEbJWI+RF6b/+hgzYcFPSNyFAfBEySCMEaoQM2Ql3vSyZ - JkJsiAxV96ouQkyIBB2uHvDpHXtAxx18bYn7Z0oIIYQQQh4V6vdZmt+w31pRGzm9rxv29dlvjbFz5hoE - yN/cr832Llgrt52VSYv2yuQC3SeTF0c6ZYm6P+jSAxFONR6Uqcs8D8nUPOg95h22Lj8s04rjCvVIwa60 - Tl95NMQZxmPG6XAqztU7Xpk7bTmzF6p6Ny29cxZcvF/GLj4g45Z4HpTxS/GeVxyKuAuWBkgsAqTTdJ2C - IEJ0CjLrtHRHgHRHgHSfe1bidI/IPI2Q8zZCvKVYSzRCXpBey16Q3nk6CbkifTRCECB91yBC1tpJSCoC - JA0B0n/jLRmAAElHgAzcCrfZSUgGAmQQAmQQAmTwboQIAmQwQmSImYR4viqZCBDPoQgFz2GID3Wop+9n - 9+P4Y9+45v6ZEkIIIYSQR4V6SUvyG/RdLQ1S1hQtzus0ZLX8xRcguvcheeIOqZ+8QhoYV1pTgjZMWYWI - UVdb+6kImlRrozQEjzFfGvXPl8YD1HXSOH29NPEcuAGul6Z4bJqxUZoO2iTNjLqXBA7eYmw+BGZuDTp0 - q7QYui3UYdsjbOk53NpqxA7nTmmNx5bDd0jTzG1SP2OL1Oq/SaqnbpAaaRulJr6uOWCT1ErfLHUGbpa6 - +Hm9QVul/uCt0mDINmk4dLs0GrZDmgzfKU1H7JJmWfoJ8Bsj9oBkrTwvsdM0QE4gQE4iQE5J15k6BfEi - 5IzEIUJsgOgURPeC+KYgiJBey/CY90IgQJJXIkJWI0LWIkLyESHrXkSA3JD+iJABm6A/QrZ7y7Ggi5Ah - LkKsr8iQKBESLRwiQuReY8Q9Z/LJN2+7f6aEEEIIIeRRoW7vxfn1EQgNUjRCijZagKRM3o04QUwYvYmJ - NbB8K1W1+0vshvb1Ym7d67vbVuN0REb6RoSGukmaZGwyd9DSzeqeeucsI36519v1tshEQOCXfCtCwW1W - b4lf+I34pV/vnhXiyN3WrKDmlr1Gd1etUXul5cg90jhzJ6JiGyJji9TovwWPW63pWxEd26T2wO1SZ9B2 - qTt4h9QbghDD+Q2G7pKGw3ZL4xF7pAmu0TRrrzQftU9aZO+XlnoHrqytkQGyAgEy9TgC5Lh0nq4BclK6 - 6qb1WacQIIgQL0Byz0qPeRARkrDQRkivxToFgUsRIIiQpDxvL8gVBMhVNwW5JqmIkLT1LkJ0P8jmmwiQ - W24KchsBggjZYR24TX92XUbuvCmTDrwss46/Jrmn3pDZJ16XyYfuyqi9d2TwztsIk5cRIncRDq9EeuAV - hIh9vFf1eZNPfoMBQgghhBDyqFGn16L8esmrpH4xjR28KjJAJu2SQMToNEXtZ/WWblkRJamIEhMj0G14 - tyECfSHSGCHS2N3aV0Okid7OdxB0k45mOukwaozotENjRCccNkQC+mPEFyUBR1pbOZsN3yUNBm9HXGyR - 6mmbpVraJjxuQnxsNgFiI8SGSC1ESO2B26ROBgIEEVIPEVIfEdJg6E4EyC5pNHy3NEGENB25V5ppgIx2 - ATIyWoCck5ipx6TTNA2QE9JlhgbISRsgOgWZYyMkfi50AdJzgY2QXos0QuDSi9JbNVMQGyEpq65IX0SI - BoidgiBCNrwo/REhAzbBQITckv6bXpRhW67JqrNvyJVvvivv/fK3ZsO9bqL3o9/r8fd1U//bP5X8y9+S - 0fvumBgZamIkii4qhiFMzGO4vuM2YO7K5BMMEEIIIYSQR446iQvz6/VZKfUDrijU2EEroyzB2ok4cUuv - zPIrjRGnt+zKaEOkkVFDxMWILr3SGImYiGwMnYhA87kivhAJTkR8UxGz1Mo/FUF0aIh4IjL8NhuGaMjY - KjURGtX6bZSqsFqqiu+d1WENDRFESU3ESE2ESC1ESG1ESB1ESF1ESD1ESH1ESINMBAhesxEipAkipCki - pJmbgrTM3i9tRmyJDJDlZyVmylHphAjpjAjpggjpigjpNlO1U5A4REi8ixCdgvTUKQgiJDEQIXYSYjal - BzakX7YRsgYRskanINckTSNkvYuQjTcQJVdl8u6bcuXNd+QPf/6re0f3xh/+8jcTIzlHX5Ehu+/YqcgD - Ovn4GwwQQgghhJBHjToJ8/PrJuVJdJdHGJOxIuoekHqIk4CIEFWjpH6Kusq5WuoHJiRrrIgQnYo0RISo - jfpriLgYGeCmIt5ExE1FGruJSBMXIsYhOhXZas1Ut0kzhEhz43a4IygipBke6yM6dB/H8ynrrX1hvw3G - qqkqYsRpggTn2mnIJhshAza7KYidhNQdtE3qDUaEZPqnIIiQkYiQLETIqL3SYvQ+aR0lQEYiQDoiQHQK - EjsNEWL2gpywS7E0QsxSLIgIiUOAxM2zkxA7BUGELDoviYsvSCICJHEpQsTtB+mDAEleCVcjRNYgRNYi - RBAhqeuv4+srMnT9Rbn25o/N3+PDQK9z8zs/lXH778jgPS/JkH0vw7sIEl2qZZdrFa6eb53IACGEEEII - efSo3RMB0jtafERaB+d1zFgeESB9JmyXun0QKD5tiHiGxog3GfFCxG5IdyESmIjYGPE2o9sI0Y3onhsD - S7PM8qzBocuz/DGiy7M0RDRKGrlN5M+nrJMqPvV7o4mQ9VJVNRFiraamqRsRIKrbfI4IqZ2+xURIHQSN - FyENECFmCjJ8pzQZsUuaIkKajdqDANmLANkcJUDOSMdJhxEgRxEgR6XTdETIjOPSBRHSdeYJBMhJGyBQ - JyFxuacRIGekx3yNkLOSuBAGIkSXY12Q3ssuStLyS4iQFyR5FQIEEdLXRIjuDzkvq0++LL//01/cO3i4 - 6CRl09VvyeBdt2TIXgTFfTjx2OsMEEIIIYSQR41aPebl1+m9DHERae1wey2TjgPzQgPkEwTI+G043wZK - HRMrwYmJDZIVRl3qFZiOuImIDRE3DTExEpyIeBFi1GlIIETsNCS4NMtGSBPERZNBbiLi1BjRY3URDdVS - 8qVKn7UQ0aEmB33e0zcNqaqTEKcJEKNOQax6B6xavgipgwjRDeu6FKvBEA2QHdJo2E5pPBwBMgIBkoUA - 0U9nHx4lQPLOSAcNkClHJBYR0slMQVyA5GiEIEDcFCTORUg8IqQHIqQnIiTBRAgCxEVILxMhF82m9D7L - ESAuQpJXvSApy87IhVe+L2GfhRjCn//yN3n7nZ/J0evfkFVHrsucnRdl+tZz5nHV4es4/oa8/eMP5M++ - fwvh6OUvv/WeDNUI0WmIEXFRoN451olHGSCEEEIIIY8cNXvk5tfutQRxYa3lmagujbBj+rKIAEkat83E - iRGhEoyR5SF6IWL0piPeEi2EiFme5UIkfGlWQxMhNkQaeSEyUNVlWTDDNxEZZG2Qjjjoh6jQ6EhaEzQZ - 36t9NEhgcj7iw+mbhlQ1EWKtpqaqGxAfVp2E1IQaIbXNbXgROhlbESDbpP7g7dIwc7s0QoQ0Hu5uwTty - tzQftUdaDd8UPUAmIkAmH5ZYsxfkqHRGhHRBhHSdAREh3f0RMgfO1QhBgJj9IAgQtx/ERsh5EyG6KT0p - LxghiQuPy51vv+teNZL3P/yVbDh5RwYtP45rHEOwnJfU9Zel/8Zr0n/Tdem/+bqkbrgiyav1DlyHJX3J - QVl//IZ5XkG88qOfy+CdN+2SLKd+7dc75v/ZhKOvMUAIIYQQQh41asbPya+VsFiKa4f0pVECZIvURpzU - 7mWtY/QmKf7JiJuOBJZpwZAQ8WJkFSLE+6wQFyIhm9V1aZY3EQnGiC7N0se6OKdqn9XyXK9VUrnXaqnS - 26c/RProI8IH122C6+jnjDTJwHWcTQfp543AwdZmxk3SbMgmaa5mbpIWsOXQzdJq2GZpPXyLtBm+VdqM - 2CbtRm6Xdlk7pP3oHdIhe6fEjNklsWN3S6fxe6TrmM3yy1/9Vn7zuz8EHLvilPSYdlB6Tj8kCTmHJXHm - Eek186j0ngVnH5OkOcekz9zjkpx7wpgyD84/KSkLTkrfBaek36JTkrr4tKQtPiOpS85I2lK47KwkLzmH - CLkgffIuIkIuSY95xyRvzwvyWdj443d/+LOsOvyi9F5wSFJWXZT+G65L+uYb1i03ZODWm+bWvBnbbknG - dlVv26u3770h/fIROYsOy6pDV811/OgSvbWnXsI1rsng3XeK7647MuEwA4QQQggh5JGjRvfZ+TV7LpLi - WAu2H7AkIkB64xdqEyiJixEianCi4kVJ7d6IEg2SJNUFSR8VMYIAsRORlSZE6iFC6iFCzFTE3M5XJyIa - IzDNvzwL6lQkfZ00hLX7rUVkrJRKiSuMz6m9VtoQ6e1EcPit2HOJXH7pO2Yi8UWqAeD37/jvGO28UPWc - AtTnR/EXv/6DjFh3WXovuyBJiBC128wDiJBL5lPslde/+76kLTwoSSvOmTtipW24Jv03Xje35dWpR9rG - qzJg0zXEiEbJdRmw5UVJR4wMRIgM3IEYgQO335Tk1WcldeE+eeN775nrfoo/14rD16Vv/gXJ2HVbBt2j - 4w+/+kABUrdu3afg+X+APd1bKBSctzHseYUZ7572uYHX6Bf2moU5wT2tWOD8aWHPvx/PwX1wLZwCE+Ez - 8CvuZYoFzm8Do13fM9ad+lDBdf9/eNj3OuHOgv+fO50QQgh5dKnRfVZ+zR4LpTjWgu37L44eIC5QaquI - kaCIEA0SoxcjbjrixYhvn0hdREjdZASIRkjKaoSINTRENEJsiDRIzZeafRATCYiOnsulUoKKr1UTIQgQ - FRFiQwTn+qwQt0iuvfy2+9M8mvziN3+UrA1XpPfS84EI6Tpzv+TtfUHO3P629Mw9JMmrLkm//CtQ75J1 - RdLWXpLZB27Libs/kLfe/aX87Fe/l49//yfz+NZ7v5STr/5Ico+/KoO2+mIEaqz0nLtXTt/8pqw88qIk - rzlnAiVj5+17dtyhBw6QKlD+AY5xb6FQcN63wp5XmN+E/+Ge+tDBtf8T/sC9VnHc6Z5aLHD+wbDnP0y/ - DxfDarDIX+Bxzn/Al2C0a6k/gv/pTn8o4Hr/BJe460fzz7CBO50QQgh5tKnebWZ+jfj5UpQ14xcgQhZI - u7RFEQHSK3uT1OyJQAmIGEnwtEu3ApMRL0RMjAQ3uHvLtDRG6riJiIkR30TExIiGCCKkPmKkRhICo8cy - qQgr9ciz9oQmQpYjPFQ3CQlMRLwQsVaIW/jIB4jy81/9QUatfyEkQnrMPy4JC09I8soX3B2yLkvKinOy - /PhdeefnBe/p8ND5ybu/+K2sPv+GDNx83SzRGrjtlgzY/KL0zjsl/dZdMlGSsQNB4TdKbBjDzht78BUG - SKgJ7qkPHVw7I+y1ivLLFCCef4N74NPuZQsE5zSDf4HRrqPOcac+FHC9GlAjI9prqcvhP7nTCSGEkEeb - al1n5NeImydRjffUALG2S10YJUA2mjgJ6I8RFyKBiUh4iBS0X0SXZyW75Vkpdo+IhkhdWL0XAiN+CeJh - iVRU45fie40Qp0YIfC5BRYT4NRGiE5GVUhlWiFvwWASI4kVI0tILkrTsotsXclGSV1wyZqw8K3e/+5OI - /SFFoae/9qOfS9YOu18kXfeLeGqU6OOmazJ05y37vZuWROgCxojnjNn3MgMk1NfgP7unPzRwzX+D9/pe - vowB4vlTWOg0AT/XicR6d340fwufd6c/ELjOV+AVd91o6sTlq+50Qggh5NGnWpcZ+dW750pU4/zfzzO2 - 7bcgIkASR2/wRYs3NVlgtFHilnEhSMxeEg0Sb79IryUIENXtEQnoJiKBu2ctl+qJyxAci6RCN9h9sdNG - iAZJJQ2RHqoNked6wvAICZmGrMDz5z82AaJ8+GuNkMuIkPOIEG9z+kVJWXJSfvKL37iz7o/3P/qdDNp4 - JbBx3bPf6vNy+u73ZM7RuwgLt6E9qhov9jk6Rcne+9It98/0vsAvdY9agKid3NMfGrhmn7DXKI5f5gBR - P4AV3ctHBT//KvzQnR/NE/Ce9pdEA9fQvTWfuWuG+ylMcqcSQgghjwdVO09HgMxFXMBuPr1jYbbtNz9K - gKwPm5r4lm718NTJiG86kuCmI4k2Rur0UhEi3mZ11QRIntRIRFR0WyDlu0I8Vui2EOGg2hCpGOeMX4zw - QIhohPRcigBR/SECzbKsoOW7zXusAkT56Ld/lOFrL0rvpecQIecRIRckPveILNtz0WwcD0cnIvqBhT/7 - 5W/kD3iMNiHRYyuOvCgpqy/IgE3XERAQjymrzsqpl942U5I5h/VuWC8WLKJD1efq5vfRe+4wQCK9BR/a - RmW9FnzTXfte/LIHiHod/pt7C1HBz9N854f7CezhTr0v8Pz/C99z14vmGfjAkUMIIYSUKJ6PnZpftesc - sc6Oovcza+u+8yICJCFrnVRDtBi75xrtBGVeUP9kBDFiNBMROxWpmbBYaiJE9PNHvDtn1cTXGh7Pdp5n - 7TJfynfREFloQqQ8QqS8iRCIAKmAAKkQr0uyoJmEBKchxgQ1uEdEtQHybfeneXz45W/+IFnrLklvc5ve - 82Yi0nXGXlm2+6L5O1V+/bs/ypZTt2XAgv0SO2W7dM3ZKzGTt0nq3F2y5cQN83NFz8/bf0WS8s6YO2h5 - Ji8/I6fvBONu1qE7JiwGbEJkGG2keF/bO255XpOsXbdvun+m9wV+sSssQPT/PP8Kfvw5OMy9hULBefcT - IPpLcVt3iQcG14qHBf3f+cJ8mAGiU4i3i+F3oP6d/REW9z0Pcm8hKvi5Lo+66Ds/3O/B/+1OvyfwPF3m - pXs7ol1X1T9HBXc6IYQQ8vhQJWbKuqpdZknVLogN1UQHvvf0/wy2TsmNCJCeI/MRH3OcNkTsxMS3hCsw - IXEhYgLETkSMCRohdiKij891ny/PdJprfLZzrrXLPAQI7IoQ0WmINxHxpiG6PMuEiEaIbxri10SIFyJ5 - uEauXHup8AD545//EvKZHcXzj4WIn/82zKjnwd//UX77wP4pqt//yUeSueai9DIRAvHYZcYec4veO9/8 - kaTM3SsJC05InxUXJGXVJUlZbdXve8w/Kkk52+X2mz+QvANXJXHxcUldd0XS9Da+MDnvtJy8HfrfddbB - 2zZOEBeBR9/XqXhMXR905I5bn2eA/Bw+1Dsd3St4/fsJEPUSfOApCK6hv3zfdte8Vx9mgGS704oE5/4z - LAt7wKNQN55Hu6anTnf+3T09Kvh5TfgHd34072tDOp5XD/7Jd51wp7lTCSGEkMeLKjGT8p/vMlMizfEZ - PN4qZW6UAFkrVbshVLohUmA1tTtiJKBORlyU6L4Soxcj/onIAnkex5/tNFvKxVqf6TTH2tmGiA0QT4SI - WZKlEQLjECImQhYhQFT/sizYEwHimWAt33VukQEya+0JqZc0z1hf7aPONzZQkxdIw5SF0rDvQmnUd5E0 - 6rdIGqculiawadoSadZ/iTQfsFRawJbpy2Aevl4iLWGrgUuldcYyaZu5UtoNXS3th62RDsPXSscRayUG - YReTlS+xo9ZJp9HrpTPskr0BbpSuY5xjN0m3cZul23g8wu7jN0v3CeoWiZu4ReLVSVvhNukxGU5Rt0uP - qdslYfou6TXvmCQuOiO9Fp9FgKhnJG7OIekx9xCi5Kz0WX5BkhEcySsvSorqC5GkvLMSP2c/nnNS+q19 - QfrlXzb2WXpSjt98K2Kp1qwDCJD1NlDMo0/9/JFUdwvgVHM74CsycvsNBkh09ZfuZu4y9w2uEQt1ohLt - NYryHxIgfvA8nTAkwMJ+yddJVx33lKjg53qdXHd+NH8PK7vTiwXO/1f4gnt+NPW2yv/DnU4IIYQ8XlSO - mZj/fOcZUrAIEE/ESKvkOREB0mPEGqmKOAmZnOgkJSxGqhs1QmyI1DDafSPV8FhRw6PDTCnXEcbMkmdU - jRAXIs+qJkTmIkQQI4iQCsb5iBCoEeKsiBjRDes2RKyVevhjxFq+y5wiA2Ty6jNSpVeetfdyeV5NUldI - 1T7qSqmWvEqq6x26+q6WGv3WSM3UNVIrba3U6Z8vdQfkS730dVJ/4HppkLFBGg3eKI2HbJYmmVuk6bCt - 0mz4Nmkxcru0zNohrUbtkNbZO6XNmF3SduxuaTduj7Qfv1c6TtgnMRP3Seyk/RI7+YB0mmLtPPWgdJl2 - SLpOPyxdptvHbjNgzhHpPvOoMW7WUYmffQwel/i5xxEX6gnpmXtSes47JQkLTkviwtPSCyHSe7E1CTGS - hABJWnZO0paflX555yTZxUiKamIkGCV9ESRq0uITcuLWt6LuE5m57xbi4nKIJlrWOtfYWwH3xdd9ETTD - t734OAeIvr9oxz2Pw/ueguC5Ov3QSUq0a3sWtkH7Hx4gHnj+jLDrhTvCnVogOOd/Q13iFe356ilY7Nvk - 4tzCNp7/HXZwpxJCCCGPH5U7Tsyv0mmGRDdHqsRCfXTHWibNigiQ+OGrXaD4JyjOkCCZI1U1RhAgqpmE - xOdK5a5z5JmOOYgPpwYILCxA7DQkNzRA3DSkogmQYkQILN9ldjEC5CziY3kwQEx8hAcITFkdESC1TYCs - CwmQhgiQRkM22QAZGiVARocFCOyAAOk4cb/EBALkoLGzigDpMu2wdEV4qN1mHDEB0k0DBPERN0vjA85B - gEATILkaIHCei5D5p22ImGmICxGdiOBxQv5peffD38i8/bdMlCQvP+8LkWCMJC48JiduRo8PJWfvTTsp - Ude8gNiAq8NFyKyxDtt8/XEOkIlQ/+99tJ+pf4WF/p/9wsBzW8LCli/p//WfHXbM75cpQEpB3U8R7drq - UndqoeC8brCgiZD+XcS5UwsF5/0f+BP3vGjuhvzEc0IIIY8vldqPz68cO10qx0yTKn5xTDU/CzhNWvae - GRkgw1bZQOnsiWBR/cu3uvpixE1GnkeUlO84Q55uN02ebj8d4usOMxAhajBEQqYhuhzLhUh5ow0R3cth - JyI6CQmdhpg9Iro8CwGi2hhBiOCxfKdZcvWlb7k/TXQmrzojlROXBbQhEjoNCZmE9F2FCFmNCIFpa6Q2 - QiR8CtJwkEaIm4K4CGk+Yru0yEKIeBGSjQgZgwhBiAQjxAuRAzZEJrsQmaoiRMwkBCGiIkS6mhBx0xCE - SBxCJG72cYmbc0Li51p75J60IkR6zDstPREiCQvPmBjRyciYlcfcfwmRV7//gYzeeNneQStPP9RQb+V7 - QRIXn5Kj17/pzorO9N03JHnlpaDu80f06z7Gi0FXXJTMjVdvuH+m9wV+ySvJAaLLo/aHHQv3ALznX2T1 - OfC0u0ZBLoNDwo75/TIFiC53+rbveuGucqcWCs7TpViFvU/9xPX/5U4vEJyzwveccHWqVNadSgghhDye - VGo3Nr9yxyni+VyMOrVAW0QNkJVSudM0J0IFVumsuhhBiFRBhKgaIWqlTjkIj6nyVNsp5tFGiA2Rch0g - wqScTkXUGJ2GwFiNENhpNgJEI8SFSBdvSZZORGA3hIhZkuUzDiFi1BCxaoA8W4wAmbTqNMJjaYhVeiFE - ECHPq0mqRshyBMgKqZay0hchq6RW2mqp3T8sQgbZSUhjMwnZLE2HbUGEbJXmI7eZCPEmIa01QsbuMhGi - 05AOE/baCJnkTUN8S7Km6pIsjRCfMxAkOYgRRIg3Eek+W0WIzEGIzLXG5yJGECGqCZH5pxAi1uyVR91/ - CTG36b3z1o+lz5KT0ks3ri9Tz0tc7hF5v4hPT5+267okLb9gXaFedI+eCBp1uTVz/ZXHPUBqwcKmFDoF - qeouV2zwnEawsOv+DpaGJSVANBxe8l0v3CXu1CLBueXgb3zPDXeuOzUq+Ln+nenfS7Tn6pKs4e5UQggh - 5PGlUtsx+c91nCzPaXyYANHQ8EIk0ha9cyICJE4DJBbxYbQBYg2bipgQyZHyHadJ2baT4RQTIE+1RYho - jGiIIELKeRGikxB/gAQiBAFiIsQXIi5CbID4IsQLkUCABEOkIiLk2U4ziw6QlafkuYSwAImIEASIm4Ro - hFRHhNRAhNR0k5BaaWukjouQ+oiQBhnrpSEiJLAfZKjdD9J8hC7H2iYtfRFilmN5k5DxvggJLMmKEiHT - DtmlWV6IaITA4DTENxFxIaL7Q8xUxBci+jh6uQ2Qdz/4SGZuPC1dp+2WhIWnzFKtXkvOIkTOSvc5hxAg - H5vzCmLqjusmVkLMg8sRMXlezAQdnH/5cQ8QnVQUNQXZBu9lb4Je85B7bkEuc+eWlAD5d6jTiWjXVrPc - qcUC548Ne75f/YT0qNGH43qHrsI+8fwmLPRzSQghhJDHgopts12AFOakwNfNe82IDJChy6Uy4qQy4qVy - rKc3EQlORTROyrWdJGXbTIST5CkVIWJFiLRz05D2LkTcJOQZNSYn4LOxM83kIhghwRCp0HWuT1+QdEeQ - +CcisGKc3uo3p1gBUqnnYqmcsCRglUQnIuT53s6kPERInlRzk5BghKySWqmrpDYipC4ipF5YhDRGhDQZ - skmaZm6WZsO2IEK2BiKktYmQHdImeyciRCchu9xyLN2YbkMkZpLbnA47TbHazem6P8Q+dpkOZxySrrAb - QqS7CRFoQuSoCxGrDREbIxonmQsPyIYj16XbpK3SbdZh6TlfN65DREjCQt03chphc7DoANl+zdzy10SL - Cxej973n4rOSuOSMZKy59KL7Z3pf4Je9Eh0g7pw68C++4+Hqz8qZCxYDnFsDFvR/6FX9v/9PuXNLSoDo - n0k3dke7tk4dGrpTiwXO16B5zT0/mnoDgH92pwfAMf1Qw4L27eh/8wbuVEIIIeTxpmKb0fmVOkyUonyu - wyQ8TpLmidOjBEieDZSYyYgQFTES62ljpFJHBEbrCVK2FdRH+BRC5CkEiRchT7dTESEmQGAHjRAbIs/E - aITYEHk21lMjBHZWZ0t5tYuKEFG7uiDpprqpiAmReVLR+QyiqOgAOSmVeiyS5xI0QoIGI2QpAkRdhgBR - bYRUR4TUSFkhNfuuDERIHS9C0vOlwcB8aZixThoNWm8jJBMRMtRGSAtESEtESKtRNkLaZO+QtoiQdi5C - OiBCOk5QNUL2ugixdprsImTKAcSH6ouQ6cEIsSHixYi9W5YNkaMSb0JEN64fw3P34XkHTJTYvSInTYSY - EHEx0nXG/iIDZMo2/byQMyYujPq1s9dihIwzAUGjpq++yACxEwvd6xHtHM815oLFAOfqxCTaNTzN9EPB - 11/6AMFz/w2e910r3O/C/+5OLzZ4TmGb9DUy4t2pBnz/Vfiu+3k0i7UPhRBCCHksqNBmVH6l9uPF2G6C - 033fHl+H2TxhWkSAdM9c5qYk1spqjGpjpHy7iVK25Thrq/FWDZDWCBDVhcjTqhchLkTKqV6EdLQh8qzR - i5CZgRApjxCxaozMiQyRwPKsXKloRIDEIEDuFB4gE1cgQHTPiEZIz8XGymYigggxaoggQFyIVDUh4iIE - BiNkpdQ2EbJa6vVfI/XT10ZGyJCNiJBN0jwQIVulVdY2RMh2aWMmIQiRMQgREyG7pcP4YIiY2/Q6TYRA - EyFmWZZ3y14vRlyImFv2IkK8qYi7fa+NEWhixAWJu4uW2bhuNq9DxIjaZToC5GeFB8jkrVfc1MROTryv - E/VRJyrOngs0cE5K+orzj32AKPhapyB/9v0sXP0cjNLu9ALBOeVhQZMC9dfwaXe6nv+lDRA8R8OsMizs - U8zve88Fnqf7Sta760TzB9BsSMejnlvYJ56/D+/r09QJIYSQR5JnW43Mr9B2vFjHSYV2fsdLxTCbJUyN - CJBuQ5ZKpQ4IFG9i0tFzkpRrM07KtBwDx0qZViq+h2Vba4TYENElWcFpCESEPNUeIdJeIwR20GmIDREb - IW4iEuupS7JgZ083Feky21geAWL1lmZ5U5G5Ui52GgLkLfenic7EFSekYvwCY6UeCJGeGiLWygkqYiQR - IdILIdJ7iZ2GmEnIMkRInlRPRoj0XSE1ECA1U1dKrTRESP/VUnfAGqkXHiFDNkiTzA0mQpoN3yzNRyBE - XISYachohEggQnZKexMhEBGixug0xBk7GTECTYhM9XQxMg2aiQgMLM0KTkZ0r4jZL6JLtFyIGOce83lc - 4nIRJLDTtL3yXhEBMmnzZYTFCRMX9jHUHvNOSLwn4qZ/3rnPM0D0bkRfh//5EL2nO1Lh/OIGiP6CW9Re - kCJvNYtzNoQ9J9yQa+D7LypA1kCdOBRlDOwP58GrsLCYUvWzO/7VvYV7Bs99Amo8RLu2ajak47GwTzzX - aUlvc0FCCCGEWMq3GoEAQWy0HetTvx8nFaPYtOeUyAAZjAAxExIXILAivn5Kg6NFNkSAqC5EymqAmAhx - IdJGl2PBtsEIebqdm4aYAPFFSEcXISEh4qYhnVSNEW9Zli9CutgIsdMQNxHRAImZWowAOY74mG8DJBAh - CxEgC6WyL0KqeBECvUlINV+E1ECE1IS1dBKCCKmLCKmHCImchKwPREhzREgLRIidhMBR24IRAtshRNqP - 22UjxIWITkQCETLJhkgn2NnsDYHeY0SIHPSFSDBG7F4R5+wjEqd6QeKipNOU3UUGyMRNl6QHYqXHPDUy - ODRmvLty6TVTl5657v6Z3hf4xa+wAPkE6mc1vPeQ1E3QRU4h/OD8YgWIgu+L2gvyMXzSnR4BfvYM1Ltb - RXuu+isYmH4o+P6LCpDPwyPw/7qXv29wjQGwoH0dGh1V4WXfsXDPwIj9IoQQQshjzbMth+eXb5Mt1jHG - Cq2hPoY4Fj8bK016TI4IkK6DF4dMTsojVMq2zJbSzUdDPCJCSrsIKYsIKasR4guRpxAiT7UZbyPETEIm - uuVYXoRAREg5MwVxmhCxMWKWZMU6O+mjC5GQiYjdH1IhoA2RcjFTig6Q5QgQ/aR243wXIQvkObXnAkRI - MERMhMDne8HeSxAhS02EVO8DQyJkhdRJjYyQRiZC1kkTREhTREizQIRsRoRsMRHSGhHSZrS6PRghY3dK - BxMiNkZMhDhjvRCBnU2IePpiRENE94tMPyBdESNdvRiB3VUEiV2m5QXJYRsiztjJu4oOkI0X3VIuu9k9 - qAsZnbSYWwTb2Om3+NTnGSAPW10iZTZvFxecfy8BolOQovaCzHanR4Cf6ed6RHuOZ8QEBcdKYoD8AmbB - f3Ev/UDodeALMNprqT+GBX3iud4xq5q7FCGEEEI8nm0xLBAgFXwGoyTUJj0nFhAgY43l246VMs1HITyy - IB5bqKMRH2q2m4JYy7Yaa6YkJkCMGiHjER8TrO0QIiZCICKkXAcVIdLRc6qJkGdjYCxCJKALEbUzYsSF - SHlYocusoF1n4RqTixEgxxAeuc55CBCNEOtzPeYjPrwIWShVEmDiIgSIuhgBsliqmQhZaiKkRkoeAmQ5 - AmS51EaE1E1bJfVMhKyWBulrpOHAtYiQfGkcEiEbESGbbISMQISMRIS4EGlrImQ7ImRHMELcRKTjhN2B - CLEhAiftkU5eiAQmI86pqo0R3bxuQsTFSDejixETJHbfSJyKKOk0cQcC5CP3Xyw6EzZcsHHhi4wQXdh0 - w/V08tJ34QkGiA8cqwl1chPtfFX3tXzNnR4Ax8pAnZBEe46q04+vu9MD4FhJC5Afwi7wK+5lHwq4nn62 - R2F7cApyprsEIYQQQvw80yIzv3zrUfJsiFm+r0fbxzZ4bDNKmvSYEBkggxYiPLLNOWWaj5TSzZz6tTEL - 8THKiXNaWnVKUraVhsgYxAdCpM1YebrNOGvb0BAp59l+kgsRGyPPqIiRZ2Om2hDxjIWdECMuRMobcxAh - 1gpql5m4xqSiAyQPAdJ9boiVNERMjMxDhMyTykaECKyCINEQeT5RXSRVESLVei9BhCxBhCyVGsmIEIRI - rb55UkcjJHUlImSV1B+wChGyGhGyBhGyFhGSjwhZF4yQYRulBUKkJUKk1cgtLkK2SlsTItukHUKkPUKk - g4aIi5GOMGa8ihiBsYiS2ImqFyLWTu7R6A+SaftNjBjNdMSGSTdPFyYx44sOkPHrzrtJSjRxHdVMXuzr - JM8/fs39M70v8AvgIxUgCo4XtRdkkjs1AI7lhp0Tbq47NQQcL4kTEF0upXe+yoT/7l7+gcG1FsBor1eQ - +nf7D73JASGEEPKlpVzzzPxnEBxBRxmDAaLxEbRxfGSAdBm0AM8ZjegYIaWMI6WULz5Kt/AcJaVbql6E - ZEuZVuoYKdMaIaIRYpZjwbbqeKOdhDgRIE8jGp4Om4ZohDyDCHkG8fEM4sM6XZ5BhDzjTUOMLkL0AxFh - uQ4TiwyQCXlH7aZ1hIdnxTjVLsvSCKmEANEQCSzLQoBURoBU0QgJTEOWSNWkpVIteZlUR4DUQIDU1ElI - 6gqpk7ZS6iJCdBJSP32NNECENESENEKENB6yzu0J2SjNECGBaYhbkuVflqXTEFWnIcZx3h4RxIhORZwx - iBCrTkVsgMS6EAmICAnoYsSq+0as9ta+BxE724sMkHH559zSrkjtdWzkmOtPPSBJuccYIGHguE5BCvsU - 85A7LuFr3UitG+6jnavqna++6k4PAcdL8h4Q9WV4z58UHw1c53/AH7nrFqVuju/onkoIIYSQcJ5uNji/ - XMsRUq7lSOMznq3CdMcbxY2Tv/zlr+5XShsgndLnSemmw6RUE9h0uLG0cYSJEqMvRswkBCHiTUJshLhp - iAkRbyJiI8ROQ7wQCS7N0umF1U5EvGmIDREXIyZIdFmWf5nWDDcJmSHl2k9AgHzT/WmiMyHviFToOhsR - os6xdp8TnIjE5SJCcuU51UTIfKnslmZVSYBmEqIh4pZkuUlIdYRIjZRlZhKiy7HqIETqIkTMNCR9tYmQ - RgPtJKTxYI0Qb0nWBkSIm4aM1GnIZmmdtUXajNpq1GlI2+xtZhrSfqwTIdIBdlRNjMAJuxAgnrvd8qwo - mhjxOXWvm4547sdrbC06QNacDU5TjF7QQLMpXj+/JBg9veccuer+md4X+CXwUQwQ3Quyz3deNAOf/I2v - p4X9LFxzJ6do4GclPUDUD2B99zYeCFynOyxsCZznbljsT6cnhBBCHjtsgAxHXPgdEd1WI6IGSPvU2YiP - oQgPDZChJkZMgDRTvQCxEaJLtMqYCPGFSKtRiI/REBHSWnUR0maMPK3Lstqq4xAdGiHqBBMOxg4TfSEC - OyJE1BgNEatZnhXr6UKk03QEyHRcY3wxA2Sm2TNSoZtqY6Rid9WGSKU4GD/XFyG6JEsjZD4iBCYuMBFS - tdciFyGLESBLECBLpSa0y7GWS11ESD1ESP0B6ippiBBplIEQGYQQMZMQXZK13kaIWZK1UVqO2GQipFWW - L0RG2xBpN0anIaoNkQ7jVC9EnBN2SkwgRjREQu1k9GLEBUlYlLTL3lJkgIxdc8aEi05TzETF+xqxEYtr - BMS1Y/A6ibMPfZ4BohuEh8OBD0m9Pew9LbnB+fccIAp+VtQdsd6B/x3+H6h3+op2jvoRfMJdNgL87IsK - kM1Qf7kvrr3hOLgRvgULukuVp96lrIx7K/cNrvEVeNhdsyB1P8093Q2NEEIIeex4qmlGfrkWwyRgc3W4 - tUWkDbuPKSBAMo2lESKlAxHidCFSRkWImAjxQqRllpRVTYSEhshTZhLiQsREiA2RcoiQEE2MaIh4TpJn - dCLiYuRZo4aIFyMaIfaxXLtxRQfIssNmv4jRCxEXIxV9IVIpbo48hxB5LhAiuWZvSJWeEBHyvGoiZKFU - Q4iYCOmzWGogRDRCapsIyUOELEeErJD6/VdKAy9CBkKNkMH50gQh0hQh0mzoekTIhkCEeCHSGiHSxoTI - FmnrJiLtx6i6R8QGSQeNEdgRQRIQMRLjYiQWMRIUIeL73gaJ3z3SbvQmee+DwgNkzOrTwWhBYMT6xTXU - GFzPLA3De0jIOXDF/TO9L/CLYGEBUmI+iDAc/Ew/hK+ovSAaRdlhx8ItcPqh4OdfVIA86CehN4GFfRq6 - us895YHAdSpCjddor6GOc6cSQgghpCCeajIwv1zzoQgO1QsQZyBMvAAZJo2iBsgsFx/+AHER0swGSBlP - EyAuQlqMlLLGyAh5ygSIEwHiaQPEr0aIfxrij5BJLj7CIsTEhz5OM1Fz9XbRAaL7RSoYvQixIVKx28wo - EeJCRAMEIRKIkJ6+CIEaIdWTghFSy0TIMqmDEAlECGwwYKU0RIg08jana4TApgiRZpmIEIRIC4RIS28a - AlsjRNr4Q2T0VmmXrRvVQ2Okg4uRjv4YGW+NcUESGxEkkbYdtaHIAMleddJOWSZ50xarLgWz2olMBxXv - o8f0fQyQAsDPi/p0dL0jlP6f/2g/U38JC/zcEAU//9IHiAeuobfLXem7Zrh6q9wq7vT7Btf4d6ifgh7t - NdSu7lRCCCGEFERZBMhTzTLF2Dzcocan8bWxxVBp2D07SoDMRIAMsTZVM63NhkINEMSIPjYfHrBMC0SI - ESHSUg2bhrRWR5tJSNk2GiE2RJ72piHtVF2W5bP9eHm6wwSnDRGNkGc6+ozR5VkQAaI+1XaMXLn9pvvT - RGf8skMIkBk+c6R8V6sJEURIhe6zoA2RSnEqYsRMQtw0pCdCxExC3DREl2T1Qoj0RogkIUR8k5BaiJDa - /fKkTipCJA0h0h8hgggx0xCdhHhLsgavlSZDECJmGrJOmg9DjAz3JiJwpE5EoC7NGoUYQYi0GY0YydYY - gQiRgGMRJSZGnOOc461elJhIMFMS++jZOms9AuSX7r9YdEavPBF8jhcaxh1WREd7vKa+j3YwbuoeBkgB - 4OfF+XT0wpzjLlUgOKfEBIiC6/wHLOy/aYGfk1JccA0GCCGEEPKglGk8YO1TzYYgQMJFgMCnmw8JBIhG - SYNuowsIkMHO0BAprZoAcTbXEBkmZTRCooRIWaM/RDRCrDoNeRohYkQ4WN3SLC9I2rsQcXtEnlFNiMCO - amiIaNgUGSBLD8qzne2eEd24bvRCRKci3kTE7A+ZhQhRESEmRtxEREPELMnyQkSnIbovZIGNEBciNRAi - Nf3TELMkKyxEBiJEMnRJ1hppjBBpEhYizTREYAvEiAkRaEIEts5SbYy0NTFig8TTCxI7JXG6ODFx4IUJ - YkH1wqT1yHVFBsio5cfNc73ICGoDyLx2tm6g12VjW6Tb5F2X3T/T+wK/DD6yAaLgnKKmIAWpH9ZX6PRD - wTklKkAUXCsn7Np+L7nT7htcgwFCCCGEPChlGvdfWxbB4fepZoOtiI9w63XJihIgOYiOQcEIaaoOQXxA - XK80QiZg86EIDxUR0kIDJBghZVuqXoTAVhohsHUW4mMUYgER4nza6AuRdp52GlIOIaIbzNVn1A4IkY6e - LkRiJplrFStAOk1FeExzEeLsotoYqeCfhuiyLERIJdVMQ2YHIqRyD1UjJNdMQ8ySrF4aIQtMhFRHhNQM - RMgSqY0QqdNvmYuQPETIchsh6ToNWSWNECKNNUQGr0GErJWmCJFmmTAwEfFCxMZIKxMjGxEMNkbajNps - Q8TTBMkWOyHxHGNtb/SiJDQiWg3PLzJAsvKOuUmLxkbwul78tMHr6oSmzWgEEuw6aQcDpBBwzv1OQQrd - ++GB80pigCSHXdvve+60+wbXYIAQQgghD0qZRgiQpoMkYDPPDJ/4vvkgKdM0Q2rHDg8JkE8//VTGz9sq - CcMXS8KIxZII7eMSSRzpd6kkZi2VXgGXOfOso5ZLb7+jV4SavdLnKmPSGOdYdTVcE7DP2LUhJo/Ll+Tx - nusCxo9YJi+98R33p4nO+KUH3L4RRIiGSCeEiOoPEsRIhUCI5Li9ITNthLhlWc+p8XOksooQqYIQ0b0h - z2uIJM6Xqr3mI0IWIEIWSo0+NkRqIURqI0Tq9F0qdU2ILHMRsgIRstJGiC9EmiBEmpoQWWtCpLmGCGxh - JiLrpaWLERMisLWLkTZejHj6oqSdp4aJ2UsSaYtha4sOkGUIEHe+CR13fRMdZomY3UDfCu9FpzWdJ2x/ - wf0zvS/wy+AjHSAKztNP6S7sc0HC1U9Ej/jU82jgvEctQH7jTrtvcA0GCCGEEPKglGmUtvYphEVUER/e - 12VhqYbpUicsQEo6P/vFx/LBhx+776Izfsl+t2ndbmC3EeKLERciFcIjxIVIpW7BaUhIhMS7CEnIDY2Q - XoiQ3ogQMw1ZhAhZLLURInVSECEaIhohaYiQ/rpBfYU09IVIY4RIEw0R2HRwMES8GGkxzMUINDECW7kg - aW2CxMWICxK/Nk4QIXg0QaJf6yNskbm6yAAZufQorhOMDVWDw4jX9ZaJ2WVjGyR27FYGSDHAuQfCnluY - 89zTigTnlsQAmRR2bb8futPuG1yDAUIIIYQ8KGUa9ltbtkm6BGw60Bo4pl8PlNKN0qVUowFSO3ZYSIB8 - 9tln8tbbP5SXX3sr4B//+Gfzs7e/92N8/62Av/3dH8zx7/3wvZDjH//qt+b4j979qbz8Oo45f/HRr8zx - d9//Gb7/dsAPfm7vtvTTn/0y5Pj7H3xojv8cUeE//s57PzPHP/r4N3L39bcD/vCdnxYzQPYhPCb7nILw - 8ESEdFZtiAQjxFpR7ZaDANFpCIyb5SLEapZk9USImAiBifMQIfPsJATWSFoYiBATIt40BBESWJIFNUTs - RGSlNMrQEIGDECO6NMubimR6UxE3GTExAs0yLQ0SaGIEjtxgpyNZfr09JBonoTYfskreLSJARiw+7CYu - dhmY0cWG0b0PfU/63jpmb36gNfv4ZfBxCZAaUD99O9p1/OqdrwKfkl4UOLekbULXJWlXfNcN92V36n2D - azBACCGEkAeldMO+a8s0GSBlEBt+g0GSLqUb95cnG6XJkw3TpHbM0LA9IJ9Im15j5Gs1e8IE+Wr1OHnj - re+Zn8UNnCH/VStR/qt2L/lqzR5y5ear5njfUQvkv+r0lq/XTcLPEuXImWvmeFbOWvl6vT5G/fn2A+fM - 8SmLtuJYiny9fl88J0VWbDpsji9ef1CeaJAK08xj7srd5vi6XafNe32yId43HDd3gzm+/9R1/DkGSKnG - iCk4dOqqYgfIMzETzZ4Rz/AgeRYxYnUxYvaHuKlI1+luGmK1MaITES9GdEkW1BBxMVIVIVItMA0Jhkhg - ItIXIdJvqdTREDETkTwTIvUHIEbSvamIjRETJCZGbJA0HWKDpFlIkDi9KDFhYuPECxMjwiRUGxBNBq2Q - d39aeIAMX3TIXisQGjY2THCYpWK6d8VOa/T9tR+1kQFSDHBucT4dXZ3inlIscH5JCxD9kMLClqOtc6fe - N7gGA4QQQgh5UEo16LumdGMEiF8TJE587/0ir9aODQ+QT6V9v2n4hV5/sR8gT9RPkTe+9X3zs55D50tp - nZ5ADYKrt143x/uPXy5lmg2SMs114/oAOXr2RXM8e+5mKdNiCMyU0k0HyY7DF83x6ct2S9mWw6DeOStT - Vm49Zo4v3XxcyrYeAXXD+giZt/aAOb5x3wV5GseebjMKZsnEhdvN8YNnb8nTbUdLuXbZxuEzNxYzQPa6 - ACkkQkICJBghdiKiEWInIcbuRUeITkOqJiBCEjVC5gcixD8R0QiprRECIycikSESmIqETEb8MQL9MaJq - HDhtLLh4UEcEbZyxHAHyC/dfLDrDFh4MuV4gOFSNDry+vpcmeE/63tqO3HDR/TO9L/DL4GMRIArOrw0L - +3T0n8H/604vFji/RAQInv+/oH6qvX4KebTre3Z2T7lvcA0GCCGEEPKglG6QsqZM4/4IDZ+NVMQHLGUm - CakBa8dkRgZIXwQInhMZIPMQH+lGfW4gQMYhQBAYaim8XjBANiEwBkvZ5oiQphkIkAvmuAmQFkONZfCz - kABpNdyKOJkfEiAjTHyYAFmwzRw3AaJRYiJkNAJkQ/ECZDECpMP40LtoIUae1Qjx9MeIWaLlW5bliRAx - S7KMiBCdhriN6s+puiTLLMuaI1Xg8wiRqgiRaiZE5kl1L0RgTYRILS9E3LIsL0TqBSYiedLALc9q6GKk - kcaI2StiNTECm2qMeCIAmmmUuDBpHhBB4teLlKHrpFF6XpEBkrnggAkNb8Lh6cWQ7lvRQFI1mFoPy/88 - A+TXMAnGf04WGTc452EGiH46emFTkHuafih4zhcVIKthi3u0C9To2Abfh9Gu61c/mPFf3Nu5b3ANBggh - hBDyoJRqkLymdONUKd1ITfOZiqjQ6Ohn4qGUs054gHz6qWROXSXt+02X9qnTpV3yJPnuD98zPxuXu0k6 - pM2AOdKu71S5+w17t6kZy3bh2EyjPu/yzdfM8SUbj0jHAbPgbOnQP0dOXbptjq/ZeVo6ps+x9p8le49f - Nsd3Hr0iHQfmGmPS58rm/efN8cPnbklsxjyJHTQfj/Nl+Zbj5vjFG29IzKAFEjt4IX62QObnHypmgOxB - gIxDeGiE+EIkZgLiQ0PEGashEowRs0ek81TEhycipOs0xEcwRCp1U+1E5DmdhsTPQoTAHrMRIbNdhLgQ - ScyV6i5EavSejwhBiPRBiCQvQoToRGQxQmSJ1DUhstSFyDIXInDAcmmoIkYaDbQ2RpA0zlARIyZIrE0H - a5T4HLIaQaJhEsXMNdKw/5KiA2T+Phs4ZimYm8TgtRqreO1GeB9GvCd9jy0z11xw/0zvC/wyWFiAfN5W - cm+jQHDOQwsQBc8p6HNBPoBfc6cVGzzniwqQL8IU91YeCFyHAUIIIYQ8KKXq91lj48Ozn9PGR6kQESCx - oQGi6EZ0vx4FHw/9mUeBx9Uox5XiHPf/JOQ4flD8ABlr7aghEoyRZ02EOGM1QvwhMgkBohEyBfGhIkK6 - wK5TER9eiExHgKgaITmIEIRI/ExECOwxS543ETJHqroQsRECe81DhEATITDZC5FFiBANkcUIEcRI6hKE - CGIkbSlCRGNkGUIkDyEC0zVGluMXflVjBGaoKxEjcJCnFyUF2yBtUZEBMiR3j7muDR77el4INXLvRd+X - vr8GeJ/NB6887/6Z3hf4ZfBxC5CC9oJMdqfcE3jeoxIg+lkpX3Fv5YHAdRgghBBCyIPyZP0+q59EbPgj - Q32yQb+gOO4twarefpB86zs/ku//6L1CfP/+/fH9+YMIf1Isb7/6lrzzvr1LVkGMW7RbyrUfG7TDOGfY - RMRMRcL2iniTkIBuj4iGSBfvrlk2RIL7Q+xEpJKJkVlSJX42nIMYccuyvKVZCJFqCJHqveebELExoiHi - m4pAEyQaIyZIdDKiQYIYCZmO+CckLkx8kxJPMzEJTE2C1uu7sMgAGTR3d+DaNjbcXhW8vr4PjSN9XxpL - +h6bDlxxzv0zvS/wy+BjFSAKnlcN7oZ7nFvgPU8/FDzvUQiQa/D/uLfxwOBaDBBCCCHkQXmiXtLq0CmH - FxzR/Xq9JPlq9e6wm1O/9hsXtEacfM0YH7Sm2iPSWn57ytdqJ0QxEfYKqHfX+q86Qb9utHfXMuK9enfV - sibL1+v7TcFrJcjlG6+4X5GjYwNkTNAOGiHBEAkuzYIx/gixIfJsp0kIDw0Rb1mWMxAh1ordNEJmIEJU - FyJxOVI5zi7LMiESmIhAXZoViBAvRGyM6FTEhshCMxWp3ddNRvq5yQis55+OmBhxE5JAkIROSvzqxMJv - 3ZT58k5RATJnV+C63muZ19XgcNGhExv7/hZL4/Q8Bsg/ELyHkhwgn0J9zXvaeF8UuB4DhBBCCHlQNECe - bNBXgiI0ApMPfO+Lj9BQsXtEgqYFbZxmbt0bYpMBYdrN6WWaDoxihpRpBpt72jtm6QZ1v2XVFkNCfKpl - JhwqT7XyHBZq6+E+R5i7cV1xm+MLYtyiXYE7Z5Vrr2qIBCciZn+IZ/hExNuwrsuxjOEhontDnBohblmW - FyOVECPPIUQqx800VkGMVEGMmKVZ0IRIol2aVa2Xb2mWixHdJ1LLxIgNEhMjZpmWDRL9RV+1MeIPEmcg - SqI4IGid5Hnyzk8KD5CM2TsD1zWv417TC466bulYHfceG/Zfetb9M70v8MsgA+QBwHsoiQHyGXwVJsJ/ - di//0MA1GSCEEELIg2IDxBcdXoiY+OgbFh0FxUcwQEqb+Cg6QMwtfptqgIRHCILDC5CICAmLD08vQFqq - LkACERIWIGERUhqvUWSALNQAsXfOCo2QYIhERoinCxETIRPDIsQZskdEI8TThohuVDcRYnQhEq8iRNSe - CJEEOxGpZmJkLkJEYyTXxcg8hIjGyHwbI7A2gqS2CZKF5hd+DZK6nl6UeKbaQKnvNF+nhVo7aS4CxH4Q - ZEEMnLnDXM9eP/h65vXxPsz7MaFk32OD1MUMkH8geA8lJUB+D2/ChbAx/Ff3sg8dXJsBQgghhDwokRMQ - jY5ouvho5DcYIGYDu95NKxAgvhBpEqqNj3DDQqSZz7BJSNloBgLEaichsJXqxYgvSFrbECmN2Ck6QHYi - PEY5XYi0VzVAbIwENqkbvQgJnYjoRvXyqhciJkCCy7MqdIZmWZY1GCLT5DmNEBMiM1yI5EiVOHWmjRCz - NEsnIjZGqsHqGiIuRmr0ttY0MTJPapkYsdYOBMkCEwKedfuqvjCB9TwREH5r9ppdZICk52wLuX7tlODr - eu9F1fen1ktZeMb9M70v8Mugfj5Er3+Q/9O9jQLBOTFhz/H7pDvtHwbeQ/mw9+S3oTutWOD8JmHPf1A7 - wUawHPwX+E/upT5X8Dpfgfra0d6TWsqdSgghhJCCQICsCoRHhC46IkR0eIZECILDb/gUJPxDDkO0n8Ae - Eh5GhEeYZZshODwDARJlOVYLxIfqn4qETUZKI3aKCpCxCJCn22ZJubYIEKNvGmImInYa8oxOQjz9ExHf - Z4jYO2YhQNTAsizfVEQjJDANcSHipiKV9I5Z0IuRyqpZnoUQMXtENESix4iZipgYmSs1NEjcdMQLkvAo - CU5JfLpg8EeEZ42EWUUGyIAZW03shMZGMDj0vZhQwnvTaKqTPP+BAoQQQgghhHwJ8QdIQERGYZoIiTIF - CdjY7gPxaychocuwgtr9IKWbOpt5hseIpy9IdDLSYpBzsNHGSOTSrBARIWopvF6RAbJghwkQq36QIWyn - jra2z8ajf1kWDGxSd4/+ZVkx7va9gdv2+m7d2wkiQgIb1dUuUxAh/hBxMdJNYwTqPhHdrB6vuuVZPVRd - nuUt0fLUGIG95pgY8fQmJDWS1GCU1OwT1B8OtZJDrdYzp8gASZu+xVzb6l4P2uViwfdi3h+slZTLACGE - EEIIedQwAdJQo6MATZBYoy7JKiJGIpdkwcByLF+ENA3X2x8SLgIkZJmWRohdmhVcooX4MHtDwg1OR7wQ - KYXXLjpAtsvTbUb6DI8RGyLhExG7P8Q9ekuzVG9plpuGeFMR+2GGUCPEf+csMxWZLBURIzZErDZErMEQ - mWEmInYqotoYsZMRGyRVVcRINU/8sl/d0xcmNdTensFgUGt6X5tgyZXn46cXGSCpUzcFrm1ex72mCQ4z - qXGRZKY3s/D6c067f6aEEEIIIeRR4Yn6GiApodGhNsAxWAo/CxoeIbCR6o8Qa+CDDc2+kGj6QqSpXxsg - kXtE/LoY8U9FAvtErMGlWZ5RQuSeAmSETxci/qmImYj494hoiERORUL3iUAzDSngAw07TUSAaIhYK7h9 - IiZETIxYK3kx0s0LEWtlEyMzpIpqYsT6vAkSa9Weqo2SagmqFyWzEQd+g8EQogmWOVKl+1R55/2fu/9i - 0UmdstFcN/AaeL2qqhdFeC/+91Y9YRYDhBBCCCHkUSN8AlJKoyMkPHyxEeaTCI1wbYAgMAqMj/BpCLyn - +HD64+MBIsQEyM2iA0Q3rEdGSPgkxBcgZhISHiFhAWIiRJdljZNn8Rg1QpyBAHFW9IeIm4xETERcjFQ2 - +mLETUee9/RixDMQBAgST3+cwOq+r9XK3aYUGSD9Jm8IXtu9ViA44lUXSfr+8D6r9ZjJACGEEEIIedR4 - EgESiA0vPhogMKJoJyVRpiXO0OVYfhEeRsRGYIN6mG4aUqZAER2eIUuydBLiNxgkZc2GdacJEn+U2BDR - /SlXbr7mfkWOzvW735LNBy/JlkMvFOLlSA9fiXBrwKuhHvG8Ft2j12Sb8XrBHnsxxO2ex2+EuCOaJyLd - eeJmpCejHIM7jl2X3/7+j+6/WHT6TlofjB6jF0TOQCxZ8fNT7p8pIYQQQgh5VDBLsBAdBRqIjoLU8IBm - KVa40WOkVGO/vo3qOg0pUBso3pQkxMCm9VD9MVKmuac3IbEb15/Ee7hcRICQh0PKxHVSOQ5x4dMuF5sW - tJsuJZtqxM8ZIIQQQgghjxr2LlgIifDg8B+LopmKePFRqIiOiM3q0BcfEdOQgmyC2CjIpoiOMCM+TyQg - AsRtXn8SQcQA+WJImZBvAiPUqfJcV10+5tPtbcHPGCCEEEIIIY8aT9TvvfLJhsm+iUZoaIT7wOFhRHw4 - o+8TiWL4JCTcaJMRGLpEKyxCmmeYfSsMkC+G5PFrERhTQjWb6DU4Jgc1+1sm4/jkk+6fKSGEEEIIeVR4 - on7S4icbIECi6tsXgjAp2GgB4ixgSVbpIkV0mEDxTUAKMlqQOO2eEU+dijhdiDBAvjiSx63RqDCRUclF - RsXOk4KajfaeE3HOJAYIIYQQQsijBkIjHn6mwVHKhYc+Fh0dnhoa3qPPkPDwLG58OM30I0pwRDNKfHgW - FiG6h4UB8sXQZ+zqkNioiMhQNTYCxgbFzxgghBBCCCGPGoiNf0Z0rHuyYfLf7VKs4phSsI2i2dcYPUoK - sDFixehtVi/CJmkRhoQI4iPCZunmPTNAvhiSxq5CZEyQ8n5jozlenoX4mgFCCCGEEPIoUqph368gLBrD - YYiRUQWbEt2GRdl3FF6jMLOMjZyNPfs5U4u0dOO0oE2M2XAvvv9z9L0jNkKeaJCMAHnV/YpMPk96j1kp - 5WMQFk77AYye+lkooeKcE+6fKCGEEEIIIV9+yjQb+E8IkDj414IiBIEkWdPyZPmGvT73FeJ+4wq/Gz0P - FOLBUDc9iIcK8XDBbo505Rfl1qPSPGWmDQ3PsODw+0zHsXoOA4QQQgghhJQ8ECB7o+4nMRGSZva9PFG/ - j/HJBmqyM8Vqlpd5H7gY3EgfvJtXWtDG/Y2lGw+w6qSlSbpzoLWptUzTjKDNBoU52No80rLNh0TaYog8 - 1SLTOTS6LcMdFvDpVk7/1w/T1sPlmfbZ8mwHhIXGhT6GGfyU+DFGHGOAEEIIIYSQkgfiY1Tgdr5+zVTE - 005FgpvVfRvW/bfwDf9Edd+nqmsElG2JEGiJCDDil/xWfvHLPn4Rf6q1/YXcOsLaZmQUs+TptpGWazsq - uu3U0fhFX80uvh087S/++vWzJgA+P4Ov5x6jvK9n22czQAghhBBCSMmjdON+w2BkgJgpyD0GSCBCogUI - RICEREh4gJgIsSESGiBehPhjJHqAqFEDxBMRUg4R4qm/zJcL++W+2AbixNOLFM/Cfh7lZ9Feo2AZIIQQ - QgghpORRqlHfYfbuWlGWTyFE1NBlWZ52o3rIp6sHQkSXTTkRIUF90xAzEcn0OVTKIkDK+mOk1XCrmYyM - CHOkPIUQ8QwJk8JEhARsF9SbkJQgGSCEEEIIIaTkYQMkBcHhv9WvCxF3q9/AVKSJ6puKNFW9ELFGm4hY - bYRETkQGS8Oe42XWqgMye3W4B61r1EMFOqe4rlUPF+lc3+PsNYelbs/J+IXfi5R/rE+3Q0RZGSCEEEII - IaTkUaphyrCID0sMmYggOjz905CQiQjiw01EAkuzdCN5yDTEBYgR8WGmIToJwSNeb/Oek+6GtF8ePvvs - M1m+5aiU030pZmmXJ2LAGO3Yveh/vneN4PfhS8uMwWkOA4QQQgghhJQ8ggESZtg0JPjp6z59+0PsRCRs - j0jINMROQkI2qbtJiP6sVL0kyVu/Vz755BP36/8/lr/97e8yZ8Uu8z4Dy7vaRrdcQH9MFEf7vGjXDC4p - K1AGCCGEEEIIKXmUapiMAElGdKj+APG0IVJaNZvVfSESsiQLNtWN6r7N6iZAfCHSfKALEGcLjRCrRsjX - 6yTKoLHz5Ve//q3LgH8MP//Fx9Jv1AIpjfdsN75/KWWAEEIIIYSQkseTDcwnvNvP9kCE2M/1CGqDxJuG - BCciwU3q+vke1pBpSIGb1L0lWToR8Tanq3YS8kSDFKkbkyFnX7gln3zyqUuCL4a///0TOXr2utSKHWre - T/TN718aGSCEEEIIIaTk8WSDPggQ70MGoYkQvy5Com1Ud5vUA3fLCkxDgkuygobfKUsnInZZln+TepkW - g028PFk3UXoPniYvvfqW2YvxefLpp5/K9duvS4+MGeZ96x25bHx8qWWAEEIIIYSQkocJkPpJYvSHiBEB - AkupgWmIZ9hERAMkICKkgIlIgZ8f4puK6L4L/Vo/Wf3JOgnSPW2CHDl1Wf7057+4ZHg4/P4Pf5S9Ry9K - p34TpQz+DPrawVsAf+llgBBCCCGEkJIHwiMYIPXDA8RGSLECBAYDxEWIfxriIiR4l6zCA8Q6GN9n4Fr9 - 5et1e0uFJn1k8LgFsu/YRXnvpz83S6aKOx3R8/7297/Lj9/7QHYdPi/pYxZI+Wb6vtPM64R8GGLJkAFC - CCGEEEJKHk/W740A6Y34UHUK4hmMkFJqQ42QsBAJWZblbVD3h0hkhATvkhVlk7qqm9MD+mPETkU0Rp6o - 10e+VrOHVG/TX3oMnCpjclbIkrW7ZfPuE7Lv6AU5fOqy7MXjJny/GMdHz1ghcelTpGqbASZkdL+KmXZE - fBp7iZIBQgghhBBCSh5P1Os1DOKXeogICZpkjFyaZZdlhW9Y94eIMWR/SJqUQoio/mlIxB6RkGVZ3kTE - 0+0R8VkaPy+F5z6J6+tyrSfqJ4f4ZAO8L31tjR29ht5xy3z4of8T2EusDBBCCCGEEFLyCA0QvzZECpqK - PNlQDYZI+G17bYD4QqSJ6k1EXIiEf5J6M/9UxJuIePpjxMaEX3s7X/u5IgFbRlMD5JGQAUIIIYQQQkoe - IQESIgIEBpZmBUR4BPaK6JTBGrI3JMqnqXvTkMAG9cbeJCR0GhLcI+ICJHwiEpiMBCchqrdnJMTwIDHi - l/dHQwYIIYQQQggpeTxRLxEBkojY8AwNkeD+kLAQCZmIePtDfCESWJLlQsRNQgJ7Q1T/NMRNRIJ7RFyI - hE9EPMMmItH2jPg/6DBotCgpkTJACCGEEEJIyeOJuokDn6ibIFYEiF8NkBCjhYiNELNRXUMkZBriaUOk - NELE6oWIP0Y0QtKkDB6tXoiEBUkgTEKDpKwREeI3ECZ+ESGPhsfcXyEhhBBCCCElB4RGxa/XTfgrFGui - 0QaIjZCgRW1Sd0uywjaoP1nIkizvU9SjblIP2age/ER1u2F9YIg2RNzyLE8ER6ShS7dKsFPdXyEhhBBC - CCEli6/X7ZmN+PhzMELcRCRkaZaLEd8Gdc+ITeqBzenBEAm/ZW/IBnU1ECCewWVZoZvVNUDw2EwjJGj0 - ZVrRjBYlJcrP4Fn4P91fHyGEEEIIISULxMU/ITqqf71OQibMQnw4E0Ot18vZO2j93llP1k9y9rE2SPaZ - koUAySpl7Gtt1M9nqrVxmrF0wP5ZCBCfA5zpWQgQqI9ByxgHhtosmhkl2ZGwA+Lj39xfHSGEEEIIIYQQ - QgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQ - QgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQ - QgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQ - QgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQ - QgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQ - QgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQ - QgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEFIC+G//7f8BVR/gB+T2CN8AAAAA - SUVORK5CYII= + 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 + TkSuQmCC </value> </data> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <value> - AAABAAsAICAQAAEABADoAgAAtgAAABAQEAABAAQAKAEAAJ4DAAAwMAAAAQAIAKgOAADGBAAAICAAAAEA - CACoCAAAbhMAABAQAAABAAgAaAUAABYcAAAAAAAAAQAgALt/AAB+IQAAgIAAAAEAIAAoCAEAOaEAAEBA - AAABACAAKEIAAGGpAQAwMAAAAQAgAKglAACJ6wEAICAAAAEAIACoEAAAMRECABAQAAABACAAaAQAANkh - AgAoAAAAIAAAAEAAAAABAAQAAAAAAIACAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAA - AACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AHJWFlJWFneP//+HJSVD - RwZQBCQEJAf/////dAQkJAYHdCQGBAYI////+HBgQGAEJWBgQkBgWP////hgYEJAZCVAQEBAQkj////4 - QEBAQAQGR3dnZ3ZI////+Ednd2dnQmiI+PiId/////93iI+Pj4V4h4eHh3eI////dnh4eHiGePiIiIiF - ZY///4d4iI+Phnj3ZXd1cGB////4ZWVnf3R492BEJEJEaP///4dkRFZ4ePdAYGQkQlj/////h3d4j3j3 - YGQGBgaP//////////9490JAZEZHj///////////ePdGRgYEJHj//////////3j3RgZGRkZH//////// - //9491YHBhYHBnj4eP//////ePdGRkZGRkZHd0Z4////h2/3RlZWVlZWVlZWR////4Z490ZGRkZGRkZG - Rkf///+GePdkZGRkZGRkZGRkdnd3R3j4iIiIiIiIiIiIiIiIiHZv+Pj4+Pj4+IiPj4+Pj4+GeIeHh4eH - h4eIiHh4eHh4hniIiIj4iIiPiIiPiIiPiIdmV2d2dWd2d2V2d0d2d2dHdmRmRmZkZkZmZGZmRmRmRnZH - ZWdHR2VnR0dlZWdHZWd0ZGZGRmRkZGZGRmRkZGZHZmdlZ2dlZ2dlZ2dlZ2dlZ3RkZGRkZGRkZGRkZGRk - ZGZ2dnZ2dnZ2dnZ2dnZ2dnZ3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAEAAAACAAAAABAAQAAAAAAMAAAAAAAAAAAAAAABAA - AAAAAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A - /wD//wAA////AHUnR4//d0NHYAQH//hgQkNHZWf//0dHR3iIh4//d4iHiHd3aP+Hd4eIRAZX//h2eHg0 - YGj/////iEYGV/////+IRkZGeHj/+IhGRkZGRv/3iHd3d3d3eHeIiIiIiIiIiHh3d3d3d3h3ZmVnZWdl - Z0d0ZGRkZGRkZnZ2dnZ2dnZ3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAwAAAAYAAAAAEACAAAAAAAgAoAAAAAAAAAAAAAAAEAAAAA - AABAKR0ARSweAEkuHgBLMB8ATDAeAFAyHwBSNB8AVDUfAEUuIgBGMSUASTAhAE4yIABLMyYATTQlAEo1 - KQBMNisATzgqAE45LQBQNCIAVjYgAFg3IABSOCcAWjggAF06IABfPCAAXD0nAFA4KQBWOigAVjwrAFE7 - LwBbPioAWT8uAFI9MgBWPjEAUz80AGI9IQBaQC4AXUEvAFdAMwBeRDMAWUM2AF9GNwBXQzgAWEQ4AF1G - OQBdST8AZkAiAGtCIgBgQy8AYkQvAGhFKgBuSy8AcEUiAHRJJQB2TSsAZUYwAGlIMABtSzEAb0wxAGlM - NgBiSToAZUs6AGdMOgBgSz4AZEs8AGJMPwBqTToAc04xAG1QOwB3UTIAfFMzAHBSOwB1UzkAclM8AHZV - PQB5VzwAfFk8AF9LQQBiTUEAYU5EAGZQQQBrVEUAbVVGAGZUSgBvV0gAaldMAGxYSwB2WkUAdFpJAG5b - UABuXFIAcV1RAH9gRwB+YUwAdmNYAHdlWgB6ZVkAeWddAHpoXwB5aWAAfWtgAHxsYgB/bmUAhFElAINT - KQCKXTUAg109AItiPgCSZj8AhmBBAI1lQwCJZkkAkGdFAJBoRgCSbEsAiG1XAI9zXgCUcFIAnXVTAJt2 - WACdeVsAo35fAIBvZgCAcGcAhHFkAIBwaACHd24AiXhtAIx6bwCTeWQAm3tgAIh5cACMe3EAi3xyAIt8 - dACNfXQAkH90AKF/YgCbgWwAjoB5AJKBdQCVgnUAmYV1AJ2HdgCThHwAmYh9AKOBZAClhmsAqodoAKmJ - bgCjinYAqo10AKKLeQCvkHUArZF5ALGVfQCWiYEAmYqCAJ2MgQCZjIUArJaFAKCSiwCjlYsApJWLAKSV - jACvm4sAtJuFALGbigC4nokAqJ2XALuijQCvopkAraKcALylkQC/qJMAsaSbALKlnQC1ppwAtaqkALys - oAC3rqgAv7CkALuxqwC9s6sAvbSuAMGqlwDJtaUAzLmqAMG4swDHurAAwrm1AMi7sgDCu7gAw7y4AMi/ - uQDHwLwAyMC7AMjBvQDNxL4A0cG0ANTFuADKw8AAy8TAAM3IxADQycYA2s7DANHLyADSzMgA187IANXP - zADd0ccA1tDNAN7SyADb084A3NTNANrV0gDc1tIA29bUANzX1ADe2NMA3tnVAN/b2QDg1cwA49vUAOHc - 2gDl3tgA4t7cAOTg3gDq49wA5eLgAOnl4QDt5uEA6eblAO7o4wDq6OYA7unkAOzp6ADu7OwA8OrmAPDr - 6ADx7ekA8O7tAPTv7AD08O0A8vHwAPTy8QD29PIA9vX0APj18wD49vUA+fj2APr6+gD8+/oA/Pz7AP38 - /AAAAAAATw4ODg8ODg4ODg4ODg4ODg4RIiIqwP77+/v7+/v7+58PDg4ODg4ODg4ODg4ODg5PKgAAAAAA - AAAAAAAAAAAAAACLy8vO9P79/f39/f3+0yIAAAAAAAAAAAAAAAAAAAAqKgAAAAAAAAAAAAAAAAAAAAnF - /v7+/v39/f39/f39nAAAAAAAAAAAAAAAAAAAAAAqKgAAAAAAAAAAAAAAAAAAAB3Z/v39/f39/f39/f3t - UwAAAAAAAAAAAAAAAAAAAAAqKgAAAAAAAAAAAAAAAAAAACvl/v39/f39/f39/f7ZHQAAAAAAAAAAAAAA - AAAAAAAqKgAAAAAAAAAAAAAAAAAAAC3q/v39/f39/f39/f7JCQAAAAAAAAAAAAAAAAAAAAAqKwAAAAAA - AAAAAAAAAAAAAE3s/v39/f39/f39/f7BCAAAAAAAAAAAAAAAAAAAAAAqKgAAAAAAAAAAAAAAAAAAAC3q - /v39/f39/f39/f7JCQAAAAAAAAAAAAAAAAAAAAAqKxFjfX19fX19fX19fX19Kyvl/v39/f39/f39/f7Z - IB1lfX19fX19fX19fX19WggrK336+/f5+/n3/Pf3/Pn2hx3X/f39/f39/f39/f3xVSvc9/v69/r79/r7 - 9/n94isrK4f+4Hqp64Od8Z2D7Kl6fQzF/v7+/v39/f39/f39nwpZZdXJYr7ZZqzofp/67EErLIf+0yaH - 5U5e7F9O44gmkAyFw8XK8f79/f39/f3+1ygBEMq0GrDMIZDiP2H37EEsLIv+9s/i+tPa/NrT+uDP2lsK - DQ0QuP79/f39/f39+6EKVuXszur1z+L509r+7E4sLIf+/vS2srKysrKysrKysn8DAgICf/r9/f39/f39 - /uxlGoSysrKysrKyw/7+7EE8PIz+/tofAwMDAwMDAwMDAwMDAgMDKdz+/f39/f39/f3iYQsDAwMDAwMD - YPXgnRVQPIz+/twkAwMEBAQEBAMEBAQEBAQEC6T8/P39/f39/f3+6IwcAwMDAwMDQIBAElG8QI3+/tok - CwsLCwsLBAsLCwsLCwsFC1Tq/v39/f39/f39/vfCfCcSCwsLEhtSpOP8PYz+/twlBQUFBRIFEgUSBQUF - BQUFJLD7/f39/f39/f39/f3+99q3pJGeq8rs/f79Po3+/towBgYGBgYGBgYGBgYGBgcer/r+/f39/f39 - /f39/f39/f7+/v7+/v7+/f38Qo3+/twxBwcHBwcHBwcHBwcHBwdY7P79/f39/f39/f39/f39/f39/f39 - /f39/f39RI7+/tsxExMTExMTExMTExMUExMesfv9/f39/f39/f39/f39/f39/f39/f39/f38RI7+/tw3 - FhQWFhQWFBYUFhQWFhQUO8b+/f39/f39/f39/f39/f39/f39/f39/f39RI/+/ts3FxYXFhcWFxcXFhcW - FhYXF1fV/v39/f39/f39/f39/f39/f39/f39/f38R4/+/t04FxcXFxcXFxcXFxcXFxcXFxdd2P39/f3+ - /f39/fz9/f39/f39/f39/f39SZj+/tw5GBgYGBgYGBgYGBgYGBgYGBgYXdD9/v3soL/0/v39/f39/f39 - /f39/f39SY/+/t05IyMjIyMjIyMjIyMjIyMjIyMjI0q9+u+KLjJzs+L6/f39/f39/f3+/vHWSpj+/t86 - Iy4uLi4uLi4uLi4uLi4uLi4jLi4zmIEuLi4uL0i1/vz9/f39/f3+73RcS5b+/uFDLi4uLi4uLi4uLi4u - Li4uLi4uLi4uLi8uLi4uLi6l/v39/f38/f3+5kxLTJj+/t9FLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v - Ly8vLy+n/v39/f39/fz96UxMTJb+/uFFLzQvNDQvNC80NC80LzQvNC80LzQvNC80NC80NDSW7/r8/f7+ - /fv20EZMapr+/t9GNDU0NDU0NTQ0NTQ1NDU0NTQ1NDU0NTQ0NTQ0NDU2b4KXoKinmpN1TDRqapf+/uRt - RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRjVqapr+/vrh39/h3+Hf4d/h3+Hf - 4d/h3+Hf3+Hf4d/h39/h39/h3+Hf4d/f3+HfzW1qa5r+/O7z/O7w/fDu/PPp/Pbp+Prp9vzu8v3v8P3y - 6/3z6/r46/b76/P97vD+8G5ra5r+33Km6XeT8pN256hx37puyM1wruF1mvB4ie+ZdeSucNTHbLvecark - dpX68HBra5r+33Ko6XiV8pV46ahy37pxyNJxueR2m/CJkvCZduSuctTHcbvecqrnd5n68HBrbJf8/PD2 - /fDz/vPw/Pbw/Pju+vzu+Pzw8/3y8v7z8Pz48Pr68Pj87vj98PL+52xrbGmVmZmZmZmZmZmZmZmZmZmZ - mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkmhsbGdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dn - Z2dnZ2dnZ2dnZ2dnZ2dnZ2dsbGdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dn - Z2dnZ2dsbGdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dsbGdnZ2dn - Z2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dsbGdnZ2dnZ2dnZ2dnZ2dnZ2dn - Z2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dsbGdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dn - Z2dnZ2dnZ2dnZ2dnZ2dnZ2dsbGdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dn - Z2dnZ2dsbGdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dsbGdnZ2dn - Z2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dslHZ2dnZ2dnZ2dnZ2dnZ2dnZ2 - dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnaUAAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAA - dnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAA - AAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAA - dnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAA - AAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAA - dnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAA - AAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2AAAAAAAAdnYAAAAAAAB2dgAAAAAAAHZ2KAAAACAA - AABAAAAAAQAIAAAAAACABAAAAAAAAAAAAAAAAQAAAAAAAEApHQBKLx4ATTAeAFAyHwBTNB8AVjYfAEQt - IQBPNSUASjQpAE01KABNNywATjkuAFY2IABZOCAAXDogAFE5KgBWPCoAUj0xAFc/MQBgPCEAZD4hAFZC - NwBfRjYAV0M4AFlFOgBdSD0AaEEiAGxDIgBqQyQAakUpAHFGIwBxRiQAdk0rAGJGMwBkRjEAYUs9AGVN - PwB8VTUAfFo/AH9cPwBeS0EAZU5BAGdRQwBjUEUAZFFHAGhRQgBlUkgAZ1RJAG1XSQBrV0wAbllMAHFb - TQB1XU0AeF9OAG1aUABuXVMAcFxQAHBeVQB/YEgAe2FOAH5iTgBzYFUAdGJXAH1jUAB1YlgAd2VbAHtp - XwB/a14AfWthAHtsYwCEUSUAh1ctAIlaMQCMXjcAglw9AJJmPgCHYEAAi2NCAI5lQgCCZU4AimZJAIdo - TwCVbUsAmnBLAIpqUACObFAAgmxeAIVuXgCRblAAlG9RAIlwXgCNc18AlnFRAJd3XgCAbmMAgnFnAIVx - ZQCLcmAAj3RgAIN0bACJdmkAiHduAJJ2YACWeGAAmXphAJp8YwCPfnMAinx1AKB+YgCfgWkAm4FtAJ6I - dwCSgngAl4Z7AJiIfwChgGMApoJhAKKBZQCgg2sApoZrAKiJbgCpinAAoYp4AKuQegCukXkAsZV9AJaJ - ggCZjIQAopOJAKaakwC6oYwAvKSPAK6hmgCsopwAuKeZAL2rnACzqqUAtKqkALivqgC+tK4AvrWxAL+4 - tADBqZUAxLKiAMCxpADItKQAzLqqAMi7rwDCu7YAyb20AMW9uQDQv7EAycK9ANLBswDTxLYA08S4ANXF - uADWyL0A2Mq+AMvEwADOxsIAzsjEANHJwwDQycUA2cvAANrNwgDcz8MA287EANzPxADRy8kA0szJANXP - zADd0MUA1tDNAN7SyADY0tAA2tXRAN3W0QDb19UA3NfUAN3Z1wDf29gA4NTJAOHWzADi2M4A49nQAOTZ - 0ADi29YA4dzZAOXe2QDi3twA5uDaAOPg3gDl4NwA6ODZAOri3ADr5N8A7OXfAObj4QDo5eIA7ebhAOjl - 5ADu6eUA7OroAO/s6gDv7e0A8OvmAPPx7gD08OwA8/LxAPTz8gD19PMA9vX0APj39gD4+PcA+vr6APz8 - +wD8/PwA9FH/APZx/wD3kf8A+bH/APvR/wD///8AAAAAABsALwAtAFAAPwBwAFIAkABjALAAdgDPAIgA - 8ACZEf8ApjH/ALRR/wDCcf8Az5H/ANyx/wDr0f8A////AAAAAAAIAC8ADgBQABUAcAAbAJAAIQCwACYA - zwAsAPAAPhH/AFgx/wBxUf8AjHH/AKaR/wC/sf8A2tH/AP///wAsCwsLCwsLCwsLCyhFY7TX19fX2akZ - CwsLCwsLCwsLLhUAAAAAAAAAAAAAftLT19jZ2NjWawAAAAAAAAAAAAAXFQAAAAAAAAAAAAaI2djZ2NjZ - 2ckoAAAAAAAAAAAAABcVAAAAAAAAAAAABo3Z2djY2djYrQoAAAAAAAAAAAAAFxUAAAAAAAAAAAAGlNnY - 2djY2NmpCAAAAAAAAAAAAAAXGCs5OTk5OTk5NxGM2djY2NnY2LIRKzk5OTk5OTk9GBgvrcCvxqvHq8mh - QIXZ2NnY2NjYzTZ/rcmryavJqsuKGTG8iWWMRJhAnz0+X6qv0tjZ2NjYgQlClkGfQJ9Ar5QjMrzLr7Wj - vqHAoYoSDxKW2NjY2dnJOF6zob6hvq3UlCMyvNdwLSotLS0tKQcBAWrW2NjY2NmqMSQqKioqhMlyKjO8 - 10MCAgICAgICAgICFrPY2NnZ2dmwYBACAgItMDOLNLzXVgMDAwMDAwMDAwMts9nZ2NjZ2dnRoIBkYHGL - ydk1vNdXBAQEBAQEBAQEIaDY2NjZ2dnZ2NjZ2dbW19nY2DW811cFDAwFDAwMBQwiotnY2NjY2dnZ2djY - 2dnZ2NjYO73XWg0NDQ0NDQ0NDQ0/wdjY2dnZ2djY2dnZ2NjY2dg8vddhDg4ODg4ODg4ODhNhx9jY2NbZ - 2dnY2NnZ2djY2E+911sTExMTExMTExMTExNbu9mxb5XM19nZ2djY2NjVT7/XYhQUFBQUFBoUFBQUFBQ6 - hk8UHU+Q2djZ2dnZsXpRv9dmGhocGhwaGhoaGhoaGhwcGhoaGm7X2dnY2NmTJlS/12cbGxsbGxsbGxsb - GxsbGxsbGxsbZ87U1tfV0YcnVcLXaR8fHx8fHx8fHx4eHx8fHx8fHx8gUF12dmlYJUpYwtmdj4+Pj4+P - j5GPkY+Rj4+Pj4+Rj4+PkY+Pj497TFnCw67Ipc6ezp7OpM6mxa7CubrCtsWnzp7Ons6k0JtNXMOSfJp3 - pXSsc6x1pXiZfZGCg5F9l3medKx0rHS6nE5Smrq2ura6rLqsuqy6trq2uLa3uLa6trqsuqy6rLqOTktI - SUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUhLS0ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZG - RktLRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGS0tGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZG - RkZGRkZLS0ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRktLRkZGRkZGRkZGRkZGRkZGRkZGRkZG - RkZGRkZGRkZGS3RTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1N0AAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAEAAAACAA - AAABAAgAAAAAAEABAAAAAAAAAAAAAAABAAAAAAAAQCkdAE4xHwBUNR8ATzMgAFAzIQBVNiEAWzkgAFw6 - IgBSPjMAYj0hAFdCOABYRDkAX0c5AGVBJQBqQiIAa0MkAG5GJwBiRTEAX0xCAGBNQgBiTkQAY1BGAGZT - SQBoVkwAcFtOAHVfUQBxYFcAhFElAJJmPwCIZ00Ak2dAAJRnQACWa0QApH1cAIBxaQCKd2sAh3hvAJl6 - YACcfmUAl35rAId5cgCKfHQAjX51AKN/YACZgW4Al4JyAJeGewCXiH8AoINrAKiGaQCxk3gAspR5AJeJ - ggCZioEAnI2EAKqTgQCznIkAtZ+MALifigCmmpQAqJqQALqllACxp6AAsqijALaqoQC6rKIAva2hALuw - qQC9sakAu7KtAL+3swDAsKMAxLGhAMCzqQDDtKoAxraqAMK6tQDEvLcAy7+1AMO8uADIwLsA08S3ANTE - twDUxbgAzMTAAM/IwwDZy8AA2MzBANbPygDb19QA39jTAN7a2ADi390A6OLeAO7r5wDv7OoA7+7tAPHv - 7wDy8O4A9PPzAPb19QD4+PcA+vr6AGfwAAB4/xEAiv8xAJz/UQCu/3EAwP+RANL/sQDk/9EA////AAAA - AAAmLwAAQFAAAFpwAAB0kAAAjrAAAKnPAADC8AAA0f8RANj/MQDe/1EA4/9xAOn/kQDv/7EA9v/RAP// - /wAAAAAALyYAAFBBAABwWwAAkHQAALCOAADPqQAA8MMAAP/SEQD/2DEA/91RAP/kcQD/6pEA//CxAP/2 - 0QD///8AAAAAAC8UAABQIgAAcDAAAJA+AACwTQAAz1sAAPBpAAD/eREA/4oxAP+dUQD/r3EA/8GRAP/S - sQD/5dEA////AAAAAAAvAwAAUAQAAHAGAACQCQAAsAoAAM8MAADwDgAA/yASAP8+MQD/XFEA/3pxAP+X - kQD/trEA/9TRAP///wAAAAAALwAOAFAAFwBwACEAkAArALAANgDPAEAA8ABJAP8RWgD/MXAA/1GGAP9x - nAD/kbIA/7HIAP/R3wD///8AAAAAAC8AIABQADYAcABMAJAAYgCwAHgAzwCOAPAApAD/EbMA/zG+AP9R - xwD/cdEA/5HcAP+x5QD/0fAA////AAAAAAAsAC8ASwBQAGkAcACHAJAApQCwAMQAzwDhAPAA8BH/APIx - /wD0Uf8A9nH/APeR/wD5sf8A+9H/AP///wAAAAAAGwAvAC0AUAA/AHAAUgCQAGMAsAB2AM8AiADwAJkR - /wCmMf8AtFH/AMJx/wDPkf8A3LH/AOvR/wD///8AAAAAAAgALwAOAFAAFQBwABsAkAAhALAAJgDPACwA - 8AA+Ef8AWDH/AHFR/wCMcf8AppH/AL+x/wDa0f8A////ABcICAgIGk9hZmMoCAgICBcKAAAAACJmZmZd - CgAAAAALFhQVFRMpZmZmWxIVFRUUFTtGRUU/KllkZmAkPkVFTDQ+VTY1NRgMVWZmTSo2NlAvQEMEAQEB - BDxmZmVUIxkuTUBEBQICAhFYZmZvZmRiZGZBSQcHBgYHLV9mZWZmb2ZmQkoNCQkJCQ0sQidOZWZmWkdL - Dw8ODg4ODxAOHV1iXjdIVyYmJiYmJiYmJjA4PTklSFZRUlJSU1JRUlJTUlJWOjEzMzMzMzMzMzMzMzMz - MyscGxsbGxsbGxsbGxsbGxsfHhsbGxsbGxsbGxsbGxsbHyEgICAgICAgICAgICAgICEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiVBORw0K - GgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAB/gklEQVR42uxdB6BVxdGeQ++gdCkPFMSKWLAgIgIi - 0uzG3mJvURM1xogtttgTS6qJRo3lT7Fr7MYSa2IXbA8UlV6l886/u+fs7szs7rnnlke9m8h7795ztszu - fvPN7O5sBNVUTdW03qao736/eFf87LG6K1JN1bTupFj8F63uShSuZQRTor77XlELDaCmpLb52hmnP6N6 - lgPPO/1bF5snkWdZfsXkw5ur3ovFv1EUlhMqVz4We/LKJQNw318jUjF9j54tVu4F89WZllvf2GYVF8iv - om1w6oHGVZ56ZzwTQ1wrGIAAgKgIACim4CJSlLatlEFTVpmhPEP5B4An17tOPnkbkT5XAEgIgMWFB2qh - emYBZLEpyauMTHxyrsfkncRFl11CZSveziQj33hIAAAzgLgMbeLRwHmQ0GpMcCdQOUKoD4Aq9rs8WiUq - 8FleLVZAi9arVvLV3QdwecdXCExXN7MupfxS67wK2loeA1gVlc7b+VnaGiBzYpTUhrzP5Cg7l6bOyh+V - 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 - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAABAKRzfQCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd - /kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd - /kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd - /kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/lM/NP7V0M7+/f39 - /v39/f78/Pz++vr6/vr6+v76+vr++vr6/vr6+v76+vr++vr6/vr6+v76+vr++vr6/vr6+v76+vr++vr6 - /vr6+v76+vr++vr6/vr6+v76+vr++vr6/vv7+/79/f3+/f39/vTz8/6Qg3z+Qywg/kApHf5AKR3+QCkd - /kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd - /kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkd - /kApHf5AKR3+QCkd/kApHf5AKR3+QCkd/kApHf5AKR3+QCkc3j8oHOBAKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/c2JZ//Hv7v/+/v7//v7+//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//v7+ - //7+/v/9/f3/v7i0/045Lv9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKRzfPygc4EApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0EqHv9IMif/TTgt/004Lf9NOC3/TTgt/004Lf9NOC3/TTgt/045Lf+il5H/+/v6 - //7+/v/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/+/v7//v7+/+nm5f9uXVT/QSoe/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN8/KBzgQCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/Y1FH/7mwrP/Nx8T/zcfE - /83HxP/Nx8T/zcfE/83HxP/Nx8T/zcjE/+ro5//+/v7//v7+//z8/P/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39 - //7+/v/8/Pz/qqCb/0YwJP9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkc3z8oHOBAKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0MtIf+soZz//Pz8//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+ - //7+/v/+/v7//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/+/v7//v7+/+bj4f9mVEr/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKRzfPygc4EApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/TTcs/8rEwP/+/v7//v7+ - //7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//39/f/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39 - //7+/v/8/Pz/saej/0YwJP9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHN8/KBzgQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9YRDn/4Nza//7+/v/+/v7//fz9//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8 - //z8/P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v8+//+/v7//v7+//Hv7v91ZV3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkc3z8oHOBAKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/2pYT//t6+r//v7+ - //7+/v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8 - //7+/v/+/v7/0czJ/1E8Mf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKRzfPygc4EApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/fW1l//Tz8//+/v7//f39//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//9/f3//v7+//z8/P+jmJP/Qywh/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN8/KBzgQCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0AqHf+PgXr/+/r6 - //7+/v/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //39/f/+/v7/9PLx/3dnXv9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkc3z8oHOBAKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/Qywg/6KWkf/+/f3//v7+//39/f/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz//v7+//7+/v/h3dv/W0c9/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKRzfPygc - 4EApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9FLyP/sKai - //7+/v/+/v7//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //z8/P/+/v7//v7+/8jBvf9KNSn/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN8/KBzgQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0gyJv+9tLH//v7+//7+/v/8/Pz/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39//7+/v/9/f3/rKOd/0UuIv9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkc - 3z8oHOBAKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/SjQp - /8a/vP/+/v7//v7+//z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//9/f3//v7+//38/P+WioP/QSsf/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKRzfPygc4EApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9LNSr/zcfE//7+/v/+/v7//Pz8//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//39/f/+/v7/+fj4/4V3b/9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHN8/KBzgQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0w2K//Szcr//v7+//7+/v/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v//f79//7+/v/19fT/fG1l/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkc3z8oHOBAKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/TTcs/9TPzf/+/v7//v7+//z8/P/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//+/v7//v7+//Py8v94aGD/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKRzfPygc4EApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9NNyz/1dDN//7+/v/+/v7//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//7+/v/+/v7/8/Lx/3hoX/9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN8/KBzgQCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0w3K//Tzsv//v7+//7+/v/8/Pz/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//v7+//7+/v/19PP/e2tj - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkc30AoHOBAKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9BKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9BKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/TDYq/8/Jxv/+/v7//v7+//z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//9/f3//v7+//j39/+Dc2z/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QSkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKRzfQCgc4EEpHf9BKR3/QSkd - /0EpHf9BKR3/QSkd/0ApHf9AKR3/QCkd/0EpHf9BKR3/QSkd/0ApHf9AKR3/QSkd/0EpHf9AKR3/QSkd - /0EpHf9BKR3/QSkd/0EpHf9BKR3/QSkd/0EqHf9BKR3/QSkd/0EpHf9BKR3/QSkd/0ApHf9AKR3/QCkd - /0EqHf9BKR3/QSkd/0EpHf9BKR3/QSod/0EpHf9BKh3/QSkd/0EpHf9LNCn/yMK+//7+/v/+/v7//Pz8 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//39/f/+/v7//Pz8 - /5KFfv9CKx7/QCkd/0EpHf9BKR3/QSkd/0EpHf9BKR3/QSkd/0ApHf9BKR3/QSkd/0EpHf9BKR3/QSod - /0ApHf9BKh3/QSod/0AqHf9AKR3/QCkd/0EqHf9AKR3/QSkd/0EpHf9BKh3/QSod/0EpHf9BKR3/QSkd - /0EpHf9BKh3/QCkd/0EqHf9BKh3/QSkd/0EpHf9BKR3/QSkd/0EpHf9BKR3/QCod/0ApHf9BKR3/QSkd - /0EpHf9BKR3/QSkd/0EpHN9AKhzgQSkd/0EpHf9BKh3/QSod/0EqHf9BKR3/QSkd/0EpHf9BKh3/QSod - /0EqHf9BKR3/QSod/0EpHf9BKR3/QSkd/0EpHf9BKR3/QSkd/0EqHf9BKh3/QSkd/0EpHf9BKR3/QSod - /0EpHf9BKh3/QSod/0EqHf9BKh3/QSkd/0EqHf9BKh3/QSod/0EqHf9BKh3/QSod/0EpHf9BKh3/QSod - /0EqHf9BKh3/QSod/0kzJ/+/uLT//v7+//7+/v/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v//f39//7+/v/9/f3/p5yW/0UuIv9BKh3/QSkd/0EpHf9BKh3/QSod - /0EpHf9BKR3/QSod/0EpHf9BKR3/QSkd/0EqHf9BKh3/QSod/0EqHf9BKh3/QSkd/0EqHf9BKh3/QSod - /0EqHf9BKh3/QSod/0EqHf9BKh3/QSod/0EpHf9BKh3/QSod/0EqHf9BKh3/QSod/0EpHf9BKR3/QSkd - /0EpHf9BKR3/QSod/0EpHf9BKh3/QSod/0EqHf9BKR3/QSkd/0EqHf9BKh3/QSkc30AqHOBBKh3/QSod - /0EqHf9CKx7/TTYr/1pFOv9bRzz/W0c8/1tHPP9bRzz/W0c8/1xHPP9bRzz/W0c8/1tHPP9bRzz/XEc8 - /1tHPP9bRzz/W0c8/1xHPP9bRzz/W0c8/1xHPP9cRzz/W0c8/1tHPP9cRzz/XEc8/1tHPP9bRzz/W0c8 - /1xHPP9bRzz/W0c8/1tHPP9bRzz/W0c8/1tHPP9WQjb/RC0g/0EqHf9BKh3/SDEl/7Srpv/+/v7//v7+ - //z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz//v7+ - //7+/v/Bubb/STMn/0EqHf9BKh3/QSod/0kyJv9aRjr/W0c8/1tHPP9bRzz/W0c8/1tHPP9bRzz/W0c8 - /1xHPP9cRzz/W0c8/1xHPP9bRzz/W0c8/1tHPP9bRzz/W0c8/1tHPP9bRzz/W0c8/1tHPP9cRzz/W0c8 - /1tHPP9bRzz/XEc8/1tHPP9bRzz/W0c8/1tHPP9bRzz/W0c8/1tHPP9cRzz/W0c8/1pGO/9POS3/Qise - /0IqHf9BKh3/QSod/0EqHf9BKhzfQioc4EIqHf9CKh3/Qiod/15KP/++trH/5uPh/+nn5f/p5+X/6efl - /+nn5f/p5+X/6ufl/+rn5f/p5+X/6efl/+rn5f/q5+X/6ufl/+rn5f/p5+X/6ufl/+rn5f/q5+X/6ufl - /+rn5f/q5+X/6ufl/+rn5f/q5+X/6ufl/+rn5f/q5+X/6ufl/+nn5f/p5+X/6efl/+nn5f/p5+X/6ufl - /8vFwv9WQTX/Qiod/0IqHf9FLiH/ppuV//7+/v/+/v7//f39//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/+/v7//v7+/9zX1f9XQjf/Qiod/0IqHf9CKh3/aFRK - /9rW0//p5+X/6efl/+nn5f/p5+X/6efl/+rn5f/p5+X/6ufl/+rn5f/p5+X/6ufl/+rn5f/q5+X/6efl - /+nn5f/q5+X/6efl/+rn5f/p5+X/6efl/+rn5f/p5+X/6ufl/+rn5f/q5+X/6ufl/+rn5f/q5+X/6efl - /+nn5f/p5+X/6efl/+rn5f/p5+X/5+Tj/8fAvP9oVUv/Qyse/0IqHf9CKh3/Qiod/0IqHd9CKhzgQiod - /0IqHf9ELB//o5iR//v7+/////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////5ODe/19LQP9CKh3/Qiod/0MrHv+Uh4D//Pv7 - //7+/v/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8 - //7+/v/+/v7/8O3t/3BeVP9CKx3/Qiod/0IqHf9SPDH/0cvH//////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////////f39 - /7Wsp/9HMCT/Qiod/0IqHf9CKh3/Qioc30IqHOBCKx3/Qyod/0UtIP+8tK////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ///////s6ej/aFRK/0MrHf9DKx3/Qysd/4Nzav/29fX//v7+//39/f/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39//7+/v/7+vr/mIuE/0QsIP9DKh7/Qysd - /0UtIP+ekor//Pv7//////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////zsjF/0szJ/9DKh3/Qysd/0MqHf9CKhzfQysd - 4EMrHf9DKx7/Ri4h/721sP///////////////////////f39//Du7f/r6Of/6+jn/+vo5//t6+n/+/r6 - ////////////+Pf2/+vp6P/r6Of/6+jn/+vo5//08vH////////////9/f3/7+3s/+vo5//r6Of/6+jn - /+3r6v/7+/v////////////39fX/6+nn/+vo5//r6Of/6+nn/+ro5v91Y1n/Qyse/0QrHf9EKx3/cV9V - //Du7f/+/v7//v7+//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//8/Pz//v7+//7+/f/Hwb3/Tjgr/0MrHv9DKx7/Qyse/2lVSv/e2df/6+nn/+vo5//r6Of/6+nn - //f29f////////////z7+//t6+r/6+jn/+vo5//r6Of/7+3s//39/f///////v7+//Ty8f/r6Of/6+jn - /+vp5//s6ej/+Pb2////////////+/r6/+3q6f/r6Of/6+jn/+vo5//w7u3//v39//////////////// - ///////Qycb/SzQn/0MrHv9DKx3/Qysd/0MrHN9EKx3gRCsd/0QrHf9GLiH/vrWw//////////////// - ///////08/L/j4F5/2lWS/9pVkr/alVK/3loXv/f2tj///////7+/v/HwLz/bFlO/2lWS/9qVkv/aVZL - /6yhm//8/Pv///////Lw7/+LfHT/aVVL/2pWSv9pVUv/e2lf/+Th3////////f39/8G4tP9tWk//alZK - /2pWSv9qV0z/q6Ca/4V2bf9FLB7/RCse/0QrHf9fSj//5eHg//7+/v/+/v7//Pz8//z8/P/8/Pz//Pz8 - //z8/P/8/Pz//Pz8//z8/P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/+/v7//v7+/+vp5/9sWU7/RCse - /0QrHv9EKx7/SjIk/3BdUf9rV0z/aVVL/2lWS/9uW1D/w7u3//7+/v//////5uPh/3ppX/9qVUr/alVL - /2lWSv+IeHD/8vDv///////7+vr/qp6Z/2pXTP9qVkv/aVZL/29cUf/HwLz//v7+///////e2df/d2Ra - /2pWSv9qVkv/alZK/5CBef/19PP//////////////////////9DJxv9MNCf/RCse/0QrHf9EKx3/RCsd - 30QrHeBELB3/RCwe/0cuIf++tbD///////////////////////Hv7v91Ylj/RCwe/0QrHf9FKx3/WUM2 - /9fSzv///////v7+/7mwq/9IMCL/RCwe/0QrHf9ELB7/mIuD//v7+v//////7+zr/29cUv9ELB3/RCwd - /0QrHf9aQzf/3tnX///////9/f3/saeh/0oyJP9ELB3/RCwe/0UtH/+ZjIX/mo2F/0UtH/9EKx7/RCsd - /1M8L//Ry8j//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/9/f3/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//39/f/+/v7/+/v6/6OXkf9HLyH/RCwd/0QsHv9ELB7/Ri4g/0UsHv9EKx7/RCwe - /0ozJf+1q6b//v7+///////g3Nn/WUQ3/0QrHf9EKx3/RCwd/2tXTP/v7Ov///////r5+f+Vh3//Ri0f - /0QsHv9EKx3/TDQm/7qwq//+/v7//////9bQzf9VPjH/RCwd/0QsHf9EKx3/dGJX//Px8f////////// - ////////////0MnG/0w0J/9EKx3/RCsd/0QrHf9EKx3fRSwd4EUsHv9FLB7/SC4h/761sP////////// - ////////////8fDu/3ViV/9FLB7/RSwd/0UsHf9ZQzb/19LO///////+/v7/ubCr/0kwIv9FLB3/RSwd - /0UsHv+YioP/+/v6///////v7Ov/cF1S/0UrHv9FLB7/RSwd/1pEN//e2df///////39/f+yp6H/SjIk - /0UsHv9FLB7/Ri0f/5yPh/+yqKL/SC8i/0UsHf9FLB7/SjIk/7euqf/9/f3//v7+//7+/v/+/v7//v7+ - //7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8//7+/v/+/v7/3NfV - /15JPf9FLB3/RSwd/0UsHv9FLB7/RSwe/0UsHv9FLB7/SzMl/7Wrpv/+/v7//////+Dc2f9aRDf/RSwd - /0UsHf9FLB3/bFhM/+/s6///////+vn5/5aHgP9GLh//RSwe/0UsHv9MNCb/urCr//7+/v//////1tDN - /1U+Mv9FLB7/RSwe/0UsHv90Ylf/8/Hx///////////////////////Qysb/TDUn/0UsHv9FLB7/RSwe - /0QsHd9FLB3gRSwe/0YsHv9ILyH/vrWw///////////////////////x8O7/dWJX/0UsHf9FLB3/RSwd - /1pDNv/X0s////////7+/v+6sKv/STEj/0YsHv9FLB3/RSwe/5mLg//7+/r//////+/s6/9wXVL/RSwe - /0UsHv9FLB7/W0Q3/97Z1////////f39/7Knof9LMiT/RSwe/0YsHv9GLR//nZCJ/8nCvv9ROiz/RSwe - /0UsHv9GLR7/emhe/9jT0f/o5eT/6OXk/+jl5P/o5eT/6OXk/+jl5P/o5eT/6ebk//b19P/+/v7//v7+ - //z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v//f39//7+/v/6+fj/moyE/0gwIf9FLB7/RSwe/0UsHv9FLB7/RSwe - /0YsHv9LMyX/taum//7+/v//////4NzZ/1pEN/9FLB7/RSwe/0UsHv9sWEz/7+zr///////6+fn/loiA - /0cuIP9FLB7/RSwe/0w0Jv+6sKv//v7+///////W0M3/Vj8y/0UsHv9FLB7/RSwe/3ViV//z8fH///// - /////////////////9DKxv9NNSf/RSwe/0UsHv9FLR7/RCwd30UsHeBGLB7/Ri0e/0gvIf++tbD///// - //////////////////Lx8P97al//TjUo/042KP9PNij/YUw//9nU0f///////v7+/720r/9SOiz/TjYo - /042KP9ONij/nZCI//v7+v//////8O7s/3dkWf9ONif/TjYo/042KP9iTED/39vZ///////9/f3/taul - /1M7Lv9ONij/TjYo/083Kf+ilY7/39rY/19JPP9GLR7/Riwd/0YsHf9JMCH/XUc6/2dSRv9nUkb/Z1JG - /2dSRv9nUkb/Z1JG/2dSRv9oU0b/tqul//z8/P/+/v7//f39//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//9/f3//v7+ - //7+/v/e2db/ZE5C/0YtHv9GLR7/Ri0d/0YsHv9GLR//TDMl/1Q9L/+5r6n//v7+///////h3dv/Yk1A - /042KP9ONij/TjUo/3NfVP/w7ez///////r5+f+bjYb/Tzgp/042KP9ONij/VT0w/720r//+/v7///// - /9jSz/9dRzr/TjUn/041KP9ONij/e2lf//Ty8f//////////////////////0MrG/041J/9GLB7/Riwe - /0YtHv9FLB3fRi0d4EYtHv9GLR7/STAh/762sP//////////////////////+vr6/9DKxv/At7L/wLey - /8C3sv/Gvrr/8e/v////////////5+Ti/8G5tP/At7L/wLey/8C3sv/b19T//v79///////6+fj/zsfD - /8C3sv/At7L/wLey/8e/u//08vH///////7+/v/l4d//wbm0/8C3sv/At7L/wbiz/97Z1//19PP/kYF4 - /0oxIv9HLR7/Ri0e/0ctHv9GLR7/Ri0e/0YtHv9HLR7/Ry0e/0YtHv9HLR3/Ri0e/0ctHv+BcGX/9fTz - //7+/v/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//+/v7//v7+//v6+v+soZr/TTUm/0YtHv9GLR7/Ri0e - /0kvIP9/bWP/vbSv/+bi4P////7///////Tz8v/Hv7r/wLey/8C3sv/At7L/zcbC//r5+P///////f39 - /9vW0//AuLL/wLey/8C3sv/CurT/6OTi////////////8e/u/8W9uf/At7L/wLey/8C3sv/Qysb/+/r6 - ///////////////////////Qysb/TjYn/0ctHv9GLR7/Ri0e/0YsHd9HLR3gRy0e/0ctHv9JMCH/v7aw - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ///////////////////////////////////////q5+X/iHdt/0syI/9HLR7/SC0e/0cuHv9HLR7/Ry0e - /0ctHv9HLR7/Ry0e/0ctHv9HLR7/Ry0e/2BKPP/f2tj//v7+//7+/v/8/Pz/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //z8/P/+/v7//v7+/+7r6v+AbmP/SC4f/0ctHv9HLR7/Ry0e/15HOf/MxcH//v39//////////////// - //////////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////9HKxv9PNif/Ry0e - /0ctHv9HLR7/Riwd30ctHeBILh7/SC4e/0owIf+/trD///////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ///////p5eP/eWVa/0guH/9ILh7/SC4e/0guHv9ILh7/SC0e/0guHv9ILR7/SC4e/0guHv9ILR7/TTQl - /7itp//9/f3//v7+//39/f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//39/f/+/v7//f39/9XPy/9jTUD/SC4e - /0guHv9ILh7/SC8f/21ZTP/W0Mz//f39//////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ////////////////////////////0crG/082J/9ILh7/SC4e/0guHv9ILR3fSC0d4EguHv9ILh7/SzEh - /7+2sP///////////////////////////////////////Pz7/+nm5P/m4uD/5uLg/+bi4P/m4uD/5uLg - /+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg - /+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg/+Pf3f+Sgnj/SjAg/0guHv9ILh7/SC4e - /0guHv9ILh7/SC4e/0guHv9ILh7/SC4e/0guHv9JLx//hXRp//b19P/+/v7//v7+//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v//Pz8//7+/v/+/v7/+/v7/7qwqv9WPS7/SC4e/0guHv9ILh7/Si8f/2pUSP/DurX/5eHf - /+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg/+bi4P/m4uD/5uLg - /+bi4P/m4uD/5uLg/+bi4P/o5eL/+vr5///////////////////////////////////////Rysb/UDYn - /0guHv9ILh7/SS4e/0gtHd9ILh7gSS4e/0kvHv9LMSH/v7aw//////////////////////////////// - ///////s6ej/c19S/15GOP9eRjj/XkY4/15GOP9eRjj/XkY4/15GOP9eRjj/XkY4/15GOP9eRjj/XkY4 - /15GOP9eRjj/XkY4/15GOP9eRjj/XkY4/15GOP9dRjj/XkY4/15GOP9eRjj/XkY4/15GOP9eRjj/XkY4 - /15GOP9eRjj/XUY3/1M6Kv9JLh7/SS4e/0kuHv9JLh7/SS8e/0kvHv9JLx7/SS4e/0kuHv9JLh7/SS8e - /0kuHv9eRjj/2tTR//7+/v/+/v7//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8//7+/v/+/v7/9vX1 - /6SXj/9SOSn/SS8e/0kvHv9JLh7/SS8e/1Q7LP9dRjf/XkY4/15GOP9dRjj/XkY4/15GOP9eRjj/XkY4 - /15GOP9eRjj/XkY4/15GOP9eRzj/XkY4/15GOP9eRjj/XkY4/15GOP9eRjj/XkY4/2pUR//h3Nr///// - /////////////////////////////////9DJxf9RNyf/SS4e/0kuHv9JLh7/SS4d30kuHuBKLh7/SS8e - /0wyIf/AtrD//////////////////////////////////////+rn5f9iSjz/Si8e/0ovHv9KLx7/Si8e - /0ovHv9KLx7/SS8e/0ovHv9KLx7/SS8e/0kvHv9KLh7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8e - /0ovHv9KLx7/Si8e/0ovHv9KLh7/Si8e/0ovHv9KLx7/Si8e/0ouHv9KLx7/SS8e/0ovHv9KLx7/Si8e - /0ovHv9KLx7/Si8e/0kvHv9KLx7/Si8e/0ouHv9KLx7/Si8e/00zIv+nmpH//Pz8//7+/v/9/f3/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v//f39//7+/v/+/v7/8vDw/52Phv9SOCj/Si8e/0ovHv9KLx7/SS8e - /0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si4e/0ovHv9KLx7/Si8e/0ovHv9KLx7/SS8e - /0ovHv9KLx7/SS8e/0ovHv9KLx7/WD8v/93Y1f////////////////////////////79/f/q5+X/nI2F - /00zI/9KLx7/SS8e/0ovHv9JLh3fSS4e4EovHv9KLx7/TTIh/8C2sP////////////////////////// - ////////////6ufl/2JLPP9KLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8f - /0ovH/9LLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8e - /0ovH/9LLx7/Si8e/0ovHv9LLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9LLx7/Si8e - /0svHv9KLx7/Si8e/3FbTv/q5+X//v7+//7+/v/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39 - //7+/v/+/v7/8u/u/5+QiP9TOir/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Si8e - /0svHv9KLx7/Si8e/0ovHv9KLx7/Si8e/0ovHv9KLx7/Sy8e/0ovHv9KLx7/Si8e/0ovHv9YPy//3tjV - //////////////////7+/v/w7ez/vbOt/3ZiVf9QNSX/Sy8e/0ovHv9KLx7/Si8e/0ouHd9LLx3gSzAe - /0swHv9NMiH/wLew///////////////////////////////////////q5+X/Y0w8/0swHv9LMB//SzAe - /0swHv9LMB7/SzAe/0swHv9LMB7/Sy8e/0swHv9LMB7/SzAf/0svHv9LMB7/SzAe/0svHv9LMB7/SzAe - /0swHv9LMB7/TDAe/0wwHv9LMB7/SzAe/0swHv9LLx7/SzAe/0swH/9LLx7/SzAe/0swHv9LLx7/SzAe - /0swHv9LLx7/SzAe/0svHv9LLx7/Sy8e/0svHv9LLx7/SzAf/0svHv9LMB7/Uzgn/7yyrP/9/f3//v7+ - //39/f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz//f39//7+/v/+/v7/9PLx/6uelv9cQzT/SzAf - /0swHv9LMB7/SzAe/0svHv9LMB7/SzAe/0svHv9LLx//SzAe/0swHv9LLx7/SzAe/0swHv9LMB//SzAe - /0swHv9LLx7/Sy8e/0svHv9LMB7/SzAe/1lAL//e2dX///////z7+//r6Ob/u7Gr/31pXP9UOir/SzAe - /0swHv9LMB7/SzAe/0swHv9RNiX/emZa30svHuBMMB7/TDAe/04zIf/At7D///////////////////// - /////////////////+rn5f9jTDz/SzAe/0swHv9MMB//TDAe/0wwHv9MMB//TDAe/0wwH/9MMB7/TDAe - /0wwHv9MMB//TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB//TDAe - /0wwHv9MMB7/TDAf/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/SzAe - /0wwHv9MMB7/TDAe/0wwHv9MMB//fmpd//Dt7P/+/v7//v7+//z8/P/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v//f39//7+/v/+/v7/+Pf2/8K5s/9rVEb/TTIh/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe - /0wwH/9MMB7/SzAe/0wwHv9MMB//TDAf/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/WD8u - /87Hwv/Sy8f/opSL/3JcTv9UOSn/TDAf/0wwHv9MMB7/SzAe/0swHv9MMB//WT8v/5+Qh//q5uXfTC8e - 4EwwH/9MMB7/TzMi/8G3sf//////////////////////////////////////6ufl/2RMPP9MMB7/TDAf - /00wH/9MMB7/TDAe/0wwHv9NMB7/TDAf/0wwH/9MMB7/TDAe/0wwHv9NMB7/TDAe/0wwHv9MMB7/TDAe - /0wwH/9MMB7/TDEe/0wwHv9MMB7/TTAe/00wHv9NMB7/TDAf/0wwH/9MMB//TTAe/00wHv9MMB7/TDAe - /00wHv9NMB//TDAe/0wwHv9MMR7/TDEe/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDEe/0wwH/9WPCv/w7mz - //39/f/+/v7//f39//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz//f39//7+/v/+/v7//Pv7 - /9rV0v+KeGz/Vjsq/00wHv9MMB7/TDAe/0wxHv9NMB7/TDAe/0wxHv9MMB//TTAe/00wH/9MMB//TDAf - /0wwHv9NMB7/TTAf/0wwH/9MMB//TDEf/00wHv9QNCP/aVFB/1tBMf9PMyL/TTAf/0wwHv9MMB//TDAf - /0wwHv9NMB7/UDQi/3BZS/+/tq//9vTz//39/d9NMB7gTTEf/00xHv9PNCL/wbex//////////////// - ///////////////////////q5+X/ZUw8/00xHv9NMR//TTEe/00xH/9NMR7/TTEf/00xH/9NMR//TTEf - /00xH/9NMR7/TTEe/00xH/9NMR//TTEf/00xHv9NMR7/TTEe/00xHv9NMR//TTEf/00xH/9NMR//TTEe - /00xH/9NMR//TTEf/00xH/9NMR//TTEe/00xHv9NMR7/TjEe/04xHv9NMR//TTEf/00xH/9NMR//TTEf - /00xH/9NMR//TTEf/00xH/9NMR//TTEe/00yH/9/al3/7+3s//7+/v/+/v7//Pz8//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v//f39//7+/v/+/v7//v7+//Hv7v+5r6f/dF5P/1M3Jf9NMR7/TTEf - /00xH/9NMR//TTEf/00xHv9NMR7/TjEe/00xHv9NMR//TTEf/04xH/9NMR//TTEe/00xHv9NMR//TTEf - /00xH/9NMR7/TjEf/00xH/9NMR//TTEe/00xH/9NMR//TzMh/2NKOf+djoT/4t3a//z8/P/+/v7//f39 - 304wHuBOMR//TjEf/1A0Iv/Bt7H//////////////////////////////////////+rn5f9mTTz/TjEe - /04xHv9OMR7/TjEe/04xHv9OMR//TjEf/04xH/9OMR//TjEf/04xH/9OMR//TjEf/04xH/9OMR//TjEe - /04xHv9OMR//TjEf/04xH/9OMR//TjEf/04xH/9OMR7/TjEf/04yH/9OMR//TjEf/04xH/9OMh//TjEe - /04xHv9OMR//TjEe/04xHv9OMR//TjEf/04xH/9OMR//TjEf/04xH/9OMR//TjEf/04xH/9OMR//TjIe - /1c7Kf+6r6j//fz8//7+/v/9/f7/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8 - //7+/v/+/v7//v7+//z8/P/o5OL/sKOb/3NdTv9VOSf/TjIf/04xHv9OMR//TjEf/04xHv9OMh7/TjEe - /04xH/9OMR7/TjEf/04xH/9OMR7/TjEe/04xHv9OMR7/TjEf/04xH/9OMh//TjEe/04xHv9OMR//UTUj - /2RLO/+Xhnz/19DM//j39//+/v7//v7+//7+/v/8/PzfTjIe4E8yH/9OMR//UTQi/8K3sP////////// - ////////////////////////////6ufl/2ZNPP9OMh//TzIe/08yH/9OMh7/TjIf/04yH/9OMR7/TjEf - /08yH/9PMh7/TzIf/08yH/9PMR//TzEf/08xH/9PMh//TzIf/08yH/9PMh//TzIf/08yH/9PMh//TzIf - /08yH/9PMh//TzIf/08xH/9PMR//TzIf/08yH/9OMh//TzIf/08yH/9OMh//TzIf/04yH/9OMh//TjIf - /04yH/9PMh//TzIf/08yH/9PMR//TzIf/08yH/9PMh7/Vzsp/6udlP/7+vr//v7+//7+/v/8/Pz/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8//39/f/+/v7//v7+//7+/v/8+/v/6eXj - /7qvqP+FcmX/Ykg3/1M3Jf9PMh//TzIf/04yH/9OMh//TzIf/08yHv9OMh//TzIf/08yH/9PMh//TzIf - /08yH/9PMh//TzIf/08yH/9RNCL/WkAu/3ZgUf+ml43/2tXR//j39v/+/v7//v7+//7+/v/+/v7//Pz8 - //v7+99PMh7gTzIf/08yH/9RNSL/wrex///////////////////////////////////////q5+X/Zk09 - /08yH/9QMh//TzIf/08yH/9PMh//TzIf/08yH/9PMh//TzIf/08yH/9PMh//TzIf/08yH/9PMh//TzIf - /08yH/9PMh7/TzIf/08yH/9PMh//TzIf/08yH/9PMh//TzIf/08yH/9PMh//TzIf/08yH/9PMh//TzIf - /1AyH/9PMh//TzIf/08yH/9PMh//TzIf/08yH/9PMh//TzIf/08yHv9QMh//TzIf/08yH/9PMh//UDIf - /1c7Kf+hkYf/8vHv//7+/v/+/v7//f39//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//z8/P/9/v3//v7+//7+/v/+/v7//f39//Tz8v/a1ND/tKef/499cP9zXE3/Ykg3 - /1k9K/9TNiP/UTMg/1AzIP9QMyD/UDMg/1AzIP9SNSL/Vzoo/15DMv9rUkP/hHBi/6WWjf/Mxb//7ero - //v7+//+/v7//v7+//7+/v/+/v7//Pz8//z8/P/7+/v/+/v7308yHuBQMx//UDMf/1I1Iv/Ct7H///// - /////////////////////////////////+vn5f9oTj3/UDIf/1AzH/9QMx//UDMf/1EzH/9QMx//UDMf - /1AzH/9RMx//UDIf/1AzH/9RMx//UDMf/1AzH/9QMx//UTMf/1AyH/9QMx//UDMf/1AzH/9QMx//UDMf - /1AyH/9QMx//UDMf/1AzH/9RMx//UDMf/1AzH/9QMx//UDMf/1AyH/9QMx//UDMf/1AyH/9QMx//UDIf - /1AzH/9QMx//UDIf/1AzH/9QMx//UDMf/1AzH/9YPCn/opKI//Px7//+/v7//v7+//39/f/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//9/f3//f39 - //7+/v/+/v7//v7+//7+/v/9/f3/+Pb2/+3q6P/c1tL/y8K8/7qvp/+snpX/pZaM/6KSiP+klIr/qZqR - /7SooP/Fu7X/1c7J/+fj4f/08/H//Pv7//7+/v/+/v7//v7+//7+/v/9/f3//f39//z8/P/7+/v/+/v7 - //v7+//7+/vfUDMe4FEzH/9RMx//UzYi/8K4sf//////////////////////////////////////6+fl - /2hOPf9RMx//UTMf/1EzH/9RMx//UTMf/1EzH/9RMx//UTMf/1EzH/9RMx//UTMf/1EzH/9RMx//UTMf - /1EzH/9RMx//UTMf/1EzH/9RMx//UTMf/1EzH/9RMx//UTMf/1EzH/9RMx//UTMf/1EzH/9RMx//UTMf - /1EzH/9RMx//UTMf/1EzH/9RMx//UTMf/1EzH/9RMx//UTMf/1EzH/9RMx//UTMf/1EzH/9RMx//WTwp - /6KSh//z8O///v7+//7+/v/9/v3/+/z7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8//39/f/+/v7//v7+//7+/v/+/v7//v7+ - //7+/v/+/v7//f39//z8/P/7+/r/+/r6//v7+v/8+/v//f39//7+/v/+/v7//v7+//7+/v/+/v7//v7+ - //7+/v/9/f3//f39//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+99RMx7gUTMf/1IzH/9UNiL/wrix - ///////////////////////////////////////r5+X/aE49/1IzH/9SMx//UjQf/1I0H/9SMx//UjMf - /1EzH/9SMx//UjQf/1IzH/9SMx//UjMf/1IzH/9SNB//UjQf/1IzH/9RNB//UTMf/1IzH/9RMx//UjMf - /1IzH/9SMx//UjQf/1E0H/9SMx//UjMf/1IzH/9SMx//UTMf/1EzH/9RMx//UTMf/1EzH/9SNB//UjMf - /1IzH/9RMx//UTQf/1E0H/9RMx//UTMf/1o9Kf+ikoj/8/Hv//7+/v/+/v7//f39//v8+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//8/Pz//f39//39/f/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+ - //7+/v/+/v7//v7+//7+/v/+/v7//v7+//39/f/8/Pz//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v731M0HuBTNB//UzQf/1U3Iv/DuLH///////////////////////////////////// - /+vn5f9qTz3/UzQf/1M0H/9TNB//UzQf/1I0H/9TNB//UzQf/1M0H/9SNB//UzQf/1M0H/9TNB//UzQf - /1I0H/9SNB//UjQf/1M0H/9TNB//UzQf/1M0H/9TNB//UzQf/1M0H/9TNB//UzQf/1I0H/9TNB//UzQf - /1M0H/9TNB//UzQf/1M0H/9TNB//UzQf/1M0H/9SNB//UzQf/1M0H/9SNB//UzQf/1M0H/9aPSn/o5OI - //Px7//+/v7//v7+//39/f/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //z8/P/8/Pz//Pz8//39/f/9/f3//f39//39/f/9/f3//f39//39/f/8/Pz//Pz8//z8/P/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/vfUzQf4FM1H/9UNR//VTgi - /8O4sf//////////////////////////////////////6+fl/2pPPf9TNB//UzUf/1M1H/9TNR//UzUf - /1M0H/9TNB//UzQf/1M0H/9TNSD/VDUf/1M1H/9TNR//UzQf/1M0H/9TNR//UzQf/1M0H/9UNB//UzQf - /1M1H/9UNB//UzQf/1M0H/9TNB//VDQf/1M0H/9UNB//UzUf/1M1H/9TNR//UzQf/1M0H/9TNB//UzUf - /1M1H/9TNB//VDUf/1Q1H/9UNB//VTUh/5F+cP/y8O///v7+//7+/v/9/v3/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+99UNR/gVDUf/1Q1H/9XOCL/w7ix//////////////////////////////// - ///////r5+X/a1A9/1Q1H/9UNR//VDUf/1Q1IP9UNR//VDUf/1Q1H/9UNR//VDUf/1Q1IP9UNR//VDUf - /1Q1H/9UNR//VDUf/1Q1H/9UNR//VDUg/1Q1H/9UNR//VDUf/1Q1H/9UNR//VDUf/1Q1IP9UNSD/VDUf - /1Q1H/9UNR//VDUf/1Q1H/9UNR//VDUf/1Q1H/9UNR//VDUf/1Q1H/9UNR//VDUf/1Q1IP9XOCT/rp+U - //39/f/+/v7//v7+//z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v731U1H+BVNSD/VTUf - /1c4I//EubH//////////////////////////////////////+vn5f9sUD3/VTYg/1U1H/9VNh//VTUg - /1U1H/9VNh//VTUg/1U1H/9VNSD/VTYg/1U2IP9VNh//VTYf/1U1H/9VNR//VTYf/1U2H/9VNR//VTUf - /1U2H/9VNiD/VTYg/1U2H/9VNR//VTUf/1U1IP9VNSD/VTUf/1U2H/9VNh//VTUf/1U1IP9VNR//VTYg - /1U1H/9VNh//VTYf/1U2H/9VNR//VTYf/1U2IP98Y1L/6OPg//7+/v/+/v7//f39//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/vfVTUf4FY2IP9WNiD/WDki/8S5sf////////////////////////// - ////////////6+fl/2xRPf9WNiD/VjYf/1Y2H/9WNh//VjYg/1Y2IP9WNiD/VjYf/1Y2H/9WNiD/VjYg - /1Y2IP9WNiD/VjYg/1Y2IP9WNiD/VjYf/1Y2H/9WNh//VjYg/1Y2IP9WNiD/VjYg/1Y2IP9WNiD/VTYg - /1Y2IP9WNiD/VjYg/1Y2H/9WNh//VjYg/1U2H/9WNiD/VjYf/1U2H/9VNiD/VjYg/1Y2H/9WNh//VjYf - /1k6JP+gjoH/9vXz//7+/v/+/v7//P38//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+99WNh/gVjYg - /1Y2IP9ZOSP/xLmx///////////////////////////////////////r5+X/bVE+/1Y2H/9WNh//VjYg - /1Y2IP9WNiD/VjYg/1Y2IP9XNiD/VzYf/1Y2IP9WNiD/VzYg/1Y3IP9WNyD/VjYg/1c2IP9XNh//VjYf - /1Y2H/9XNyD/VzYg/1c3IP9XNyD/Vzcg/1Y3IP9WNiD/VzYg/1c2IP9XNyD/VjYf/1Y2H/9XNiD/VzYg - /1c2IP9XNh//VzYg/1Y3IP9XNyD/Vzcg/1c2IP9WNx//Vzcg/2JEL//Bta3//Pv7//7+/v/+/v7//Pz8 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v731c2H+BXNyD/WDcg/1o6I//EubH///////////////////// - /////////////////+vo5f9tUj3/Vzcg/1c3H/9XNx//Vzcg/1c3IP9XNyD/Vzcg/1c3IP9XNyD/Vzcg - /1c3IP9XNyD/Vzcg/1c3IP9XNyD/WDcg/1c3IP9XNyD/Vzcg/1c3IP9XNyD/WDcg/1g3IP9YNyD/WDcg - /1c3IP9XNyD/Vzcg/1c3IP9XNyD/Vzcg/1g3IP9YNyD/WDcg/1g3IP9YNyD/Vzcg/1c3IP9XNyD/Vzcg - /1c3IP9XNyD/Vzcg/3JXQ//Y0cv//v39//7+/v/9/f3//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/vfVzYf - 4Fg3IP9ZNyD/Wzoj/8W5sf//////////////////////////////////////6+jl/25SPf9YNyD/WDcg - /1g3IP9YOCD/WDcg/1g3H/9YNyD/WTcg/1k3IP9ZNyD/WDcg/1g3IP9YNyD/WDcg/1g3IP9ZNyD/WTgg - /1g4IP9YNyD/WDcg/1g3IP9YOCD/WDgg/1k3IP9ZNyD/WDcg/1k3IP9YNyD/WDcg/1g3IP9YNyD/WDgg - /1g3IP9YOCD/WDcg/1g3IP9YNyD/WDcg/1g3IP9YNyD/WDcg/1g3IP9YNyD/WTkh/4VtW//o4+D//v7+ - //7+/v/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+99YNx/gWTgg/1k4IP9bOyP/xbmx//////////////// - ///////////////////////s6OX/b1I+/1k4IP9ZNyD/WTgg/1k4IP9ZOCD/WTgg/1k4IP9ZOCD/WTgg - /1k4IP9ZOCD/WTcg/1k4IP9ZOCD/WTgg/1k4IP9ZOCD/WTgg/1k4IP9ZOCD/WTgg/1k4IP9ZOCD/WTgg - /1k4IP9ZOCD/WTgg/1k4IP9ZOCD/WTgg/1k4IP9ZOCD/WTgg/1k4IP9ZOCD/WTgg/1k4IP9ZOCD/WTgg - /1k4IP9ZOCD/WTgg/1k4IP9ZOCD/XDsk/5iDdP/w7ev//v7+//7+/v/9/f3/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - 31k3H+BaOCD/Wjgg/1w7I//FurH//////////////////////////////////////+zo5f9wUj7/Wjgg - /1o4IP9aOCD/Wjgg/1o4IP9aOCD/WTgg/1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg/1o4IP9ZOCD/Wjgg - /1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg - /1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg/1o4IP9aOCD/YD8n - /6eVif/29PP//v7+//7+/v/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/vfWzgf4Fs5IP9bOSD/XTwj/8W6sf////////// - ////////////////////////////7Ojl/3FTPv9bOSD/Wzkg/1o5IP9bOSD/Wzkg/1s5IP9aOSD/Wzkg - /1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg - /1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg - /1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg/1s5IP9bOSD/ZUUu/7Slmf/49/b//v7+//7+/v/9/f3/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+99cOB/gXDkg/1w5IP9ePCT/xrqx///////////////////////////////////////s6OX/cVQ+ - /1w5IP9cOiD/XDkg/1w5IP9cOiD/XDog/1w6IP9cOSD/XDog/1w5IP9cOiD/XDkg/1s5IP9cOSD/XDkg - /1w5IP9bOSD/XDkg/1w5IP9bOSD/Wzkg/1w5IP9cOSD/XDkg/1w5IP9cOSD/Wzkg/1s5IP9bOSD/Wzkg - /1s6IP9cOSD/XDkg/1w5IP9cOSD/Wzkh/1s6IP9cOSD/XDkg/1w6IP9cOSD/XDog/1w5IP9cOSD/XDkg - /1w5IP9cOSD/aUoy/7yuo//5+Pf//v7+//7+/v/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/8/Pz//Pv7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v731w4H+BcOiD/XDoh/149I//GurH///// - /////////////////////////////////+zo5f9yVD7/XDog/1w6IP9cOSD/XDog/106IP9cOiD/XDog - /1w6IP9cOiD/XTog/1w6IP9dOiD/XTog/106IP9cOiD/XDog/106IP9cOiD/XDog/1w6IP9cOiD/XTog - /1w6IP9cOiD/XDog/1w6IP9cOiD/XToh/106IP9dOiD/XTog/106IP9cOiD/XDog/1w6IP9dOiD/XDoh - /1w6IP9cOiD/XDog/1w6IP9cOiD/XTog/106IP9cOiD/XDog/1w6IP9dOiD/bE02/7+yp//5+Pj//v7+ - //7+/v/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz//v7+ - //7+/v/+/v7//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/vfXTsh4F07IP9eOyD/Xz0j/8e6sf//////////////////////////////////////7Ojl - /3NVPv9dOiD/XTsg/107IP9dOiD/Xjog/106IP9eOiH/XTsh/147If9dOyH/XTog/107IP9dOiD/Xjoh - /107IP9eOyD/Xjoh/146If9dOiD/Xjog/146IP9dOiD/Xjsh/146If9dOiD/Xjsg/146If9eOiD/XTsg - /107IP9dOyD/XTog/107IP9dOyD/XTsg/147IP9eOyD/XTog/146If9eOyH/Xjsh/106If9eOyD/Xjog - /147IP9eOyH/XTsh/107If9dOyD/bU42/76wpv/5+Pf//v7+//7+/v/9/f3//Pz8//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v//P38//7+/v/+/v7//v7+//7+/v/+/v7//f39//z8/P/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+99eOyHgXjsg/147IP9gPiT/x7ux - ///////////////////////////////////////s6OX/c1U+/147IP9eOyH/Xjsh/147IP9eOyD/Xjsg - /147IP9eOyH/Xjsh/147If9fOyH/Xjsh/147If9eOyD/Xjsg/147If9eOyD/Xjsg/147IP9eOyD/Xjsg - /147IP9eOyH/Xjsh/147If9fOyD/Xjsg/147If9eOyD/Xjsg/147If9eOyH/Xjsg/147If9eOyD/Xjsg - /147IP9eOyH/Xjsh/147If9eOyH/Xjsg/147IP9eOyH/Xjsh/147If9eOyH/Xjsh/147IP9fOyH/bU02 - /7ytov/49/b//v7+//7+/v/+/v7/+/z7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/+/v7//v7+ - //38/P/z8O//+/r5//7+/v/+/v7//v7+//39/f/8/Pz//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v73147IeBfOyH/Xzwh/2E+JP/Hu7H///////////////////////////////////// - /+zo5f90VT7/Xzsh/188If9fPCH/Xzwh/188If9fOyH/Xzsh/187If9fOyH/Xzwg/188If9fOyD/Xzsh - /187IP9fPCD/Xzwh/188IP9fPCH/Xzsg/188IP9fOyD/Xzsg/187IP9fOyH/Xzsh/187IP9fOyH/Xzsh - /187If9fOyH/Xzsh/187If9fOyD/Xzsg/187IP9fOyH/Xzsg/187IP9fPCH/Xzwh/187If9fOyH/Xzsh - /187If9fOyH/Xzwh/187IP9fOyH/Xzsg/188If9fPCH/bEsy/7SkmP/18/H//v7+//7+/v/+/v7//Pz8 - //v7+//7+/v/+/v7//v7+//8/Pz//v7+//7+/v/9/fz/29PN/492ZP+0o5b/6eXh//z8/P/+/v7//v7+ - //7+/v/+/v7//f39//z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/8/PzfYDwh4GA8If9gPCH/Yj8k - /8e7sf//////////////////////////////////////7Ojl/3VWPv9gPCH/YDwh/2A8If9gPCH/YDwh - /2A8If9gPCH/YDwh/2A8If9gPCH/YDwh/2A8IP9gPCH/YDwg/2A8If9gPCH/YDwh/2A8If9gPCH/YDwh - /2A8If9gPCH/YDwh/2A8If9gPCH/YDwh/2A8If9gPCD/YDwg/2A8If9gPCH/YDwh/2A8If9gPCH/YDwh - /2A8If9gPCD/YDwg/2A8IP9gPCH/YDwh/2A8If9gPCH/YDwh/2A8If9gPCH/YDwh/2A8If9gPCH/YDwh - /2A8If9gPCD/aUct/6aSg//v6+j//v7+//7+/v/+/v7//f39//v7+//7+/v//P38//7+/v/+/v7//f39 - /9vTzf+CZVD/YT0i/2RBJ/+BZU//uqqe/+rl4v/8+/v//v7+//7+/v/+/v7//v7+//39/f/8/Pz//Pz8 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //z8/P/9/f3//v7+//39/d9gPCHgYTwh/2E9If9jPyT/yLux//////////////////////////////// - ///////s6OX/dlY+/2E8If9hPCH/YTwh/2E8If9hPSH/YT0h/2E8If9hPCH/YTwh/2E8If9hPSH/YT0h - /2E9If9hPCH/YTwh/2E9If9hPSH/YT0h/2E9If9hPSH/YT0h/2E9If9hPSH/YTwh/2E8If9hPSH/YT0h - /2E9If9hPCH/YT0h/2E8If9hPCH/YT0h/2E9If9hPSH/YT0h/2E9If9hPSH/YT0h/2E9If9hPCH/YT0h - /2E9If9hPSH/YTwh/2E8If9hPSH/YT0h/2E9If9hPSH/YT0h/2E9If9hPCH/ZkIo/5mBb//n4d3//f39 - //7+/v/+/v7//f39//z9/P/+/v7//v7+//39/P/c083/gmVQ/2I+Iv9hPSH/YTwh/2E8If9nQyn/gWRO - /7Sjlv/i29b/+Pf2//7+/f/+/v7//v7+//7+/v/+/v7//f39//39/f/8/Pz/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//8/Pz//f39//39/f/9/f3//v7+//7+/v/+/v7//f3932E8IeBhPSH/YT0h - /2RAJP/Iu7H//////////////////////////////////////+3o5f93Vz7/Yj0h/2I9If9hPSH/YT0h - /2I9If9iPSH/Yj0h/2I9If9hPSH/Yj0h/2E9If9hPSH/YT0h/2I9If9iPSH/YT0h/2E9If9hPSH/YT0h - /2E9If9iPSH/Yj0h/2I9If9iPSH/Yj0h/2I9If9hPSH/YT0h/2I9If9iPSH/Yj0h/2E9If9iPSH/Yj0h - /2I9If9hPSH/Yj0h/2I9If9iPSH/YT0h/2I9If9iPSH/Yj0h/2I9If9iPSH/Yj0h/2I9If9iPSH/YT0h - /2I9If9iPSH/Yj0h/2E9If9iPSH/ZEAl/4dsVv/Vy8T/+/v6//7+/v/+/v7//v7+//7+/v/9/Pz/3NTO - /4NmUP9jPiL/Yj0h/2I9If9iPSH/YT0h/2I9If9iPSH/ZUEm/3hYP/+hi3r/0Ma9/+/r6P/7+vr//v7+ - //7+/v/+/v7//v7+//7+/v/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8//7+/v/+/v7//v7+ - //7+/v/+/v7//f39//Xz8f/i29XfYz0h4GM+If9jPSH/ZUAk/8i7sf////////////////////////// - ////////////7ejl/3hYP/9iPiH/Yz4h/2M9If9jPSH/Yz4h/2M9If9jPSH/Yz4h/2M+If9jPSH/Yz0h - /2M9If9jPiH/Yz4h/2M+If9jPiH/Yj4h/2M+If9jPiH/Yz4h/2M+If9jPiH/Yz4h/2M9If9jPSH/Yz0h - /2M+If9jPiH/Yz0h/2M+If9jPiH/Yz4h/2M+If9jPiH/Yz4h/2M+If9jPiH/Yz4h/2M+If9jPiH/Yz4h - /2M+If9jPiH/Yz4h/2M+If9jPiH/Yz4h/2M+If9iPiH/Yz0h/2M9If9jPSH/Yz0h/2M+If9jPiH/Yz4i - /3hYP/+9rqL/9PLw//7+/v/+/v7//f39/9vTzP+EZk//Yz8i/2M+If9jPiH/Yz4h/2M+If9iPiH/Yz4h - /2M+If9jPiH/Yz0h/2Q/Iv9tSi//hmlT/6uXif/Sx7//7enm//r5+P/+/v7//v7+//7+/v/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//9/f3//v7+//7+/v/9/Pz/8/Du/97W0f+6q57/k3ll/3ZVPN9kPiHgZD4h - /2Q+If9mQST/ybyx///////////////////////////////////////t6OX/eVg//2Q+If9kPiH/ZD4h - /2Q+If9kPiH/ZD4h/2Q+If9kPiH/ZD4h/2Q+If9kPiH/ZD4i/2Q+If9kPiH/ZD4h/2Q+If9jPiH/ZD4h - /2Q+If9kPiH/ZD4h/2Q+If9kPiH/ZD4h/2Q+If9kPiH/ZD4h/2Q+If9jPiH/ZD8h/2Q+If9kPiH/ZD4h - /2Q/If9kPyH/ZD4h/2Q+If9kPiH/ZD4h/2Q+If9kPiH/ZD4h/2Q+If9kPyH/ZD4h/2Q+If9kPiH/ZD4h - /2Q+If9kPiH/ZD4h/2Q+If9kPiH/ZD8h/2Q+If9kPiH/ZD4h/2xILf+fiHb/4tzX//j29f/Z0Mn/hGZP - /2VAIv9kPiH/ZD8h/2Q/If9kPyH/ZD4h/2M+If9kPiH/ZD4h/2Q+If9kPiH/ZD4h/2Q/If9kPiH/ZUAj - /25LMP+CZE3/uKaZ//r4+P/+/v7//v7+//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//39/f/+/v7//v39 - /9nPyP+Oc17/dFM5/2hDJ/9kPiH/ZD0h32U+IeBlPyH/ZT8h/2dCJP/JvLL///////////////////// - /////////////////+3o5f95WT//ZT8h/2U/If9lPyH/ZT8h/2Q/If9lPyH/ZT8h/2U/If9lPyH/ZT8h - /2U/If9lPyL/ZD8h/2Q/If9kPyH/ZT8h/2Q/If9lPyH/ZT8h/2U/Iv9lPyH/ZT8i/2U/If9lPyH/ZT8i - /2U/Iv9lPyH/ZT8h/2U/If9lPyH/ZT8h/2U/If9lPyH/ZT8h/2U/If9lPyH/ZT8h/2U/If9lPyH/ZT8i - /2U/If9lPyH/ZT8h/2U/If9lPyH/ZT4h/2U/If9kPyL/ZT8h/2U/If9lPyH/ZT8h/2U/If9lPyH/ZT8h - /2U/If9lPyH/ZT8h/2dBJP9+XkX/mH5q/3paQP9mQCL/ZT8h/2U/If9lPyH/ZT8h/2U/If9lPiH/ZT4h - /2U/If9lPyH/ZT8h/2U/If9lPyH/ZT8h/2Q/If9kPyH/ZT8h/2U/If+Ve2f/9vXz//7+/v/+/v7/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v//f39//7+/v/9/f3/w7Wp/2lEJ/9lPyH/ZT8h/2U/If9kPiHfZj8i - 4GY/If9mPyH/aEIk/8q8sf//////////////////////////////////////7ejl/3pZP/9mQCL/ZkAh - /2Y/If9mQCH/ZkAi/2ZAIv9mPyH/Zj8h/2ZAIf9mPyH/Zj8i/2ZAIf9mPyH/Zj8h/2Y/If9mPyH/Zj8h - /2Y/If9lPyH/ZT8h/2Y/If9mPyL/ZkAh/2Y/If9mPyL/Zj8h/2Y/Iv9mPyH/Zj8i/2Y/Iv9mPyH/ZkAh - /2ZAIv9mQCH/ZkAi/2Y/Iv9mPyH/Zj8h/2Y/If9mPyL/ZkAi/2Y/Iv9mQCH/Zj8h/2Y/If9mPyH/ZkAi - /2ZAIv9mPyL/ZT8h/2Y/If9mPyH/Zj8h/2Y/If9mQCH/Zj8h/2ZAIf9mPyH/Zj8h/2ZAIf9mQCL/ZkAh - /2Y/If9mPyH/Zj8i/2Y/If9mPyH/Zj8h/2Y/If9mPyH/Zj8h/2Y/Iv9mPyH/ZkAi/2ZAIf9mPyH/Zj8h - /2Y/If9mPyH/ZkAh/5V7Z//39fP//v7+//7+/v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//9/f3//v7+ - //39/f/Etan/akUo/2Y/Iv9mPyH/Zj8h/2U+Id9nQCLgZ0Ai/2dAIv9pQyX/yryy//////////////// - ///////////////////////t6eX/e1o//2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ah - /2dAIf9nQCL/Z0Ai/2dAIf9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai - /2dAIv9nQCH/Z0Ai/2dAIv9nQCH/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIv9nQSL/Z0Ai - /2dAIv9nQCH/Z0Ah/2dAIv9nQCH/Z0Ai/2dAIf9nQCL/Z0Ah/2dAIv9nQCL/Z0Ai/2dAIf9nQCH/Z0Ai - /2dAIv9nQCL/Z0Ai/2dAIf9nQCH/Z0Ai/2dAIv9nQSL/Z0Ah/2dAIv9nQCH/Z0Ai/2dAIv9nQCL/Z0Eh - /2dAIv9nQCH/Z0Ah/2dAIv9nQCL/Z0Ah/2dAIf9nQCL/Z0Ai/2dAIf9nQCH/l3xn//f18//+/v7//v7+ - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//39/f/+/v7//f39/8S1qf9rRSj/Z0Ah/2dAIv9nQCH/ZkEh - 32hAIuBoQSL/aEEh/2pDJf/KvbL//////////////////////////////////////+3p5f98Wj//aEAh - /2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEh/2hBIf9oQSL/aEEh - /2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEh/2hBIv9oQSL/aEEi/2hBIv9oQSL/aUEi/2lBIv9oQSL/aEEi - /2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi/2hBIv9oQSH/aEEi/2hBIf9oQSH/aEEi - /2hBIv9oQSH/aEAh/2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi/2hBIf9oQSL/aEEi - /2hBIf9oQSL/aEEi/2hBIv9pQSL/aEEi/2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi/2hBIv9oQSH/aEEh - /2hBIv9oQSL/aEEi/2hBIv+XfGf/9/Xz//7+/v/+/v7/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39 - //7+/v/9/f3/xLaq/2xGKP9oQSH/aEEi/2hBIv9oQSHfaEAi4GlBIv9pQSL/a0Ql/8u9sv////////// - ////////////////////////////7enl/31bP/9pQSL/aUIi/2lBIv9pQSL/aUIi/2lBIv9pQiL/aUIi - /2lBIv9pQSL/aUEi/2lBIv9pQiL/aUIi/2lCIv9pQSL/aUEi/2lBIv9pQiL/aUIi/2lCIf9pQSL/aUEi - /2lCIv9pQSL/aUEi/2lBIv9pQSL/aUEi/2lBIv9pQiL/aUEi/2lBIv9pQSL/aUEi/2lBIv9pQSL/aUEi - /2lCIv9pQSL/aUEi/2lBIv9pQSL/aUEi/2lBIv9pQSL/aUEi/2lCIv9pQSL/aUEi/2lBIv9pQSL/aUIi - /2lBIv9pQSL/aUEi/2lBIv9pQiL/aUEi/2lCIv9pQiL/aUEh/2lBIv9pQSL/aUEi/2lBIv9pQSL/aUEi - /2lBIv9pQSL/aUEi/2lBIv9pQSL/aUEi/2lBIv9pQSH/aUEh/2lBIv9pQSL/aUEi/5h9Z//39fP//v7+ - //7+/v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//9/f3//v7+//39/f/Ftqr/bUYo/2lCIv9pQSL/aUEi - /2lBId9rQiLgakIi/2pCIv9tRSX/y72y///////////////////////////////////////u6eX/fls/ - /2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/2pCIv9qQiL/a0Ii/2tCIv9rQiL/akIi/2pCIv9qQiL/a0Ii - /2pCIv9rQiL/a0Ii/2tCIv9qQiL/akIi/2pCIv9qQiL/a0Ii/2tCIv9qQiL/akIi/2pCIv9qQiL/akIi - /2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/2tCIv9qQiL/akIi/2pCIv9qQiL/a0Ii - /2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/2pCIv9qQiL/akMi/2tCIv9rQiL/akIi/2pCIv9qQiL/akIi - /2tCIv9qQiL/akIi/2tCIv9qQiL/akIi/2pCIv9qQiL/akIi/2pDIv9qQiL/akIi/2pCIv9qQiL/akIi - /2pCIv9qQiL/akIi/2pCIv9rQiL/mX1n//f18//+/v7//v7+//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //39/f/+/v7//f39/8W2qv9uRyj/a0Ii/2tCIv9qQiL/akIi32tDIuBrQyL/a0Mi/21GJf/LvbL///// - /////////////////////////////////+7p5f9/XD//a0Mi/2xDIv9sQyL/a0Mi/2xDIv9sQyL/a0Mi - /2tDIv9rQyL/bEMi/2xDIv9rQyL/a0Ii/2tDIv9rQyL/bEMi/2xDIv9sQyL/bEMi/2tCIv9rQyL/bEMi - /2xDIv9sQyL/a0Mi/2tDIv9rQyL/bEMi/2xDIv9sQyL/a0Mi/2tDIv9rQyL/a0Mi/2tDIv9sQyL/bEMi - /2tDIv9sQyL/bEMi/2xDIv9sQyL/a0Mi/2xCIv9sQyL/bEMi/2xDIv9rQyL/a0Mi/2xDIv9rQiL/a0Mi - /2tDIv9rQyL/bEMi/2xDIv9sQyL/bEMi/2tDIv9rQyL/a0Mi/2xDIv9rQyL/a0Mi/2tDIv9sQyL/bEMi - /2xDIv9rQiL/bEMi/2tDIv9rQyL/a0Mi/2tDIv9rQyL/a0Mi/2xDIv9sQyL/a0Mi/2tDIv+Zfmf/9/Xz - //7+/v/+/v7//Pz8//z8/P/7/Pv/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/8/Pz//f39//7+/v/9/f3/xraq/3BIKP9rQyL/a0Mi - /2xDIv9sQyLfbEMi4GxDIv9sQyL/bkYl/8y9sv//////////////////////////////////////7unl - /4BcP/9sQyL/bEMi/2xDIv9sRCL/bEMi/2xDIv9sQyL/bEMi/2xDIv9sQyL/bEMi/2xEIv9tQyL/bEMi - /2xDIv9sQyL/bUMi/2xDIv9sRCL/bEMi/2xDIv9sRCL/bEQi/2xDIv9sQyL/bEMi/2xDIv9tQyL/bUMi - /2xDIv9tQyL/bUMi/21DIv9tQyL/bEMi/2xDIv9sQyL/bEQi/21DIv9sQyL/bEMi/2xDIv9sQyL/bUMi - /21DIv9tQyL/bUMi/21DIv9sQyL/bEMi/2xDIv9sQyL/bEMi/21EIv9sRCL/bEMi/2xDIv9tQyL/bEMi - /2xDIv9sQyL/bEMi/2xDIv9sQyL/bEMi/2xDIv9tQyL/bUMi/2xDIv9tQyL/bEMi/2xDIv9tQyL/bEMi - /2xDIv9sQyL/bUMi/21DIv9sQyL/bEMi/5p9Z//39fP//v7+//7+/v/+/v7//v7+//7+/v/+/v7//f39 - //39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+/v7//v7+ - //7+/v/+/v7//v7+//39/f/Gtan/cEko/2xDIv9sQyL/bEMi/2xDIt9tRCLgbkQi/25EIv9vRyX/zL6y - ///////////////////////////////////////u6eX/gV1A/21EIv9uRCP/bkQi/25EIv9uRCL/bkQi - /21EI/9uRCL/bkQi/25EIv9uRCL/bkQi/25EIv9tRCL/bkQi/25EIv9uRCL/bkQj/21EIv9uRCL/bkQi - /25EIv9uRCP/bkQi/25EIv9tRCL/bkQi/25EIv9uRCL/bkQi/25EIv9uRCL/bkQi/25EIv9uRCL/bUQi - /21EIv9uRCL/bkQi/25EIv9uRCL/bkUi/25EI/9uRCL/bkQi/25EIv9tRCL/bkQi/25EIv9uRCL/bkQi - /21EI/9uRCL/bUQi/21EIv9tRCL/bkQi/21EIv9tRCL/bkQi/25EIv9uRCL/bkQi/25EIv9uRCL/bkQi - /25EIv9uRCL/bkQi/21EIv9tRCL/bkQi/25EIv9uRCL/bkQi/25EIv9uRCL/bkQi/21EIv9uRCP/iGZK - /+Td1//8+/v//f39//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+ - //7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//79/f/9/Pz/9fLw/6qSf/9vRiX/bkQi - /25EIv9uRCL/bUQi325EIuBvRCL/b0Qi/3FHJv/NvrL///////////////////////////////////// - /+7p5f+CXUD/b0Ui/25FI/9vRSL/b0Ui/29FIv9vRSP/bkUi/29FIv9vRCL/bkUi/25FIv9vRSL/b0Ui - /25FI/9uRSP/bkUj/25FI/9uRSP/b0Ui/29FIv9vRSP/b0Uj/29FI/9vRSP/b0Ui/25FIv9vRSL/b0Uj - /29FIv9uRSL/bkUj/29FI/9vRSL/b0Ui/25FI/9vRSP/bkUi/29EI/9vRCP/b0Qi/29EIv9vRSL/b0Ui - /29FIv9vRCP/bkUi/25FIv9vRSL/b0Ui/29FI/9uRSL/bkUi/25EIv9uRCP/b0Qi/29FIv9vRSL/b0Ui - /29EIv9vRSL/b0Uj/25EI/9uRSL/b0Qi/29EIv9vRSP/b0Uj/29FIv9uRCP/b0Qi/29EI/9vRSL/b0Ui - /29EI/9vRCP/b0Ui/29FIv9vRSL/b0Qi/25EI/9xSCX/jGtP/66Xg//FtKb/2M3D/+Xd1//u6ub/9vPx - //n49v/6+fn//Pv6//z8/P/9/f3//f39//79/f/9/f3//f39//38/P/8+/v/+/r5//r49//49vT/8e7r - /+ni3f/e1Mz/zb6y/7eikf+bfmb/dlAv/29FI/9vRSL/b0Qi/29FI/9uRCLfb0Uj4G9FI/9vRSP/cUgm - /82+sv//////////////////////////////////////7unl/4NeQP9vRSP/cEUj/29FI/9vRSL/b0Ui - /3BFI/9wRSP/cEUj/3BFI/9vRSL/cEUi/29FIv9wRSP/cEUj/29FI/9vRSP/cEUj/3BFI/9wRSL/b0Uj - /29FI/9vRSP/cEUj/3BFI/9wRSP/cEUi/3BFIv9vRSP/cEUj/3BFIv9vRSP/cEYj/29FI/9wRSP/b0Uj - /29FI/9wRSP/cEUj/3BFI/9vRSL/b0Ui/29FIv9vRSP/b0Ui/29FIv9wRSL/cEUi/3BFI/9wRSP/b0Uj - /3BFIv9wRSP/cEUj/29FI/9vRSP/b0Uj/3BFI/9vRSP/b0Uj/3BFI/9wRSP/cEUj/29FIv9wRSL/cEUi - /3BFI/9wRSL/b0Ui/3BFI/9vRSP/cEUj/29FI/9wRSP/cEUj/3BFI/9wRSP/cEUi/3BFIv9wRSL/b0Ui - /29FI/9wRiP/cUcl/3NKKP94UDD/gVw9/4pnSv+VdVz/ooZv/6yUf/+1n43/u6eX/8Ctn//DsqP/xLOl - /8SypP/Cr6H/vaqa/7eikf+wmYX/pYt1/5p8ZP+NbFH/hWBD/3xVNf91Syr/ckgm/3BGI/9wRSL/cEUj - /29FI/9wRSL/cEUi/3BEIt9wRiPgcUYj/3FGI/9ySCX/zb6y//////////////////////////////// - ///////u6eX/hF9A/3FGI/9xRiP/cEYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYi - /3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cEYj - /3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiL/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj - /3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj - /3FGI/9wRiP/cUYj/3FGI/9xRiP/cUYi/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiL/cUYi - /3FGI/9xRiP/cUYj/3FGIv9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj - /3FGI/9xRiP/cUck/3JHJP9yRyT/ckck/3JHJf9yRyX/ckcl/3FHJf9xRyT/cUck/3FHJP9xRyP/cUYj - /3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUUi33FGI+ByRyP/ckcj - /3NJJv/NvrL//////////////////////////////////////+7p5f+FX0D/ckYj/3JGI/9xRyP/ckcj - /3JHI/9yRyP/ckcj/3FHI/9yRiP/ckcj/3JGI/9yRiP/cUcj/3FHI/9yRyP/ckYj/3JHI/9yRyP/ckcj - /3JHI/9yRyP/ckYj/3JHI/9yRyP/ckYj/3JGI/9yRyP/ckcj/3JGI/9yRiP/ckYj/3JHI/9yRyP/ckcj - /3JHI/9yRyP/ckYj/3JHI/9yRiP/ckYj/3JGI/9yRyP/ckcj/3JGI/9yRiP/cUYj/3JGI/9yRyP/ckYj - /3JGI/9yRiP/ckcj/3JHI/9yRyP/ckYj/3JGI/9yRiP/ckYj/3JHI/9yRyP/ckci/3JGI/9yRiP/ckYj - /3JHI/9yRyP/ckYj/3JGI/9yRyP/ckcj/3JGI/9yRiP/ckcj/3JHI/9xRyP/cUYj/3FGI/9yRiP/ckcj - /3JGI/9yRiP/ckcj/3JHI/9yRyP/ckYj/3JHI/9yRyP/ckYj/3JHI/9yRyP/ckcj/3JGI/9yRiP/ckcj - /3JGI/9yRiP/ckYj/3JGI/9yRyP/ckcj/3JHI/9yRyL/ckcj/3JGI/9yRiP/ckYj/3JHI/9yRyP/ckYj - /3JHI/9yRiP/ckcj/3JHI/9yRSPfckYj4HNHI/9zRyP/dUkm/86/sv////////////////////////// - ////////////7+rl/4VgQP9zRyP/c0cj/3JHI/9zRyP/ckcj/3JHI/9zRyP/c0cj/3NHI/9yRyP/ckcj - /3NHI/9zRyP/c0cj/3NHI/9zRyP/ckcj/3JHI/9zRyP/c0cj/3NHI/9yRyP/c0cj/3NHI/9zRyP/c0cj - /3NHI/9zRyP/c0cj/3NHI/9zRyP/c0cj/3NHI/9yRyP/ckcj/3NHI/9zRyP/c0cj/3NHI/9zRyP/c0cj - /3NHI/9zRyP/c0cj/3NHI/9zRyP/c0cj/3NHI/9zRyP/c0cj/3NHI/9yRyP/c0cj/3NHI/9zRyP/c0cj - /3NHI/9zRyP/c0cj/3NHI/9zRyP/ckcj/3JHI/9zRyP/c0cj/3NHI/9zRyP/c0cj/3NHI/9yRyP/c0cj - /3NHI/9zRyP/c0cj/3JHI/9yRyP/c0cj/3NHI/9yRyP/c0cj/3NHI/9zRyP/c0cj/3NHI/9yRyP/c0cj - /3NHI/9yRyP/c0cj/3NHI/9zRyP/c0cj/3NHI/9zRyP/c0cj/3NHI/9zRyP/c0cj/3NHI/9zRyP/c0cj - /3NHI/9yRyP/c0cj/3NHI/9zRyP/c0cj/3JHI/9zRyP/c0cj/3NHI/9zRyP/c0cj/3JGI990RyPgdEgj - /3RII/92Sib/zr+y///////////////////////////////////////x7en/mHdc/4hjQ/+IYkP/iGJD - /4hjQ/+IYkP/iGJD/4hiQ/+IYkP/iGND/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD - /4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IY0P/iGJD/4hiQ/+IY0P/iGJD/4hiQ/+IYkP/iGJD - /4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IY0P/iGND/4hiQ/+IYkP/iGJD - /4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IY0P/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD - /4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGND/4hiQ/+IYkP/iGND/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD - /4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD - /4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGJD/4hiQ/+IYkP/iGND - /4NcO/91SST/dEgj/3NHI/9zSCP/c0gj33VII+B1SCP/dUgj/3dLJv/Pv7L///////////////////// - //////////////////39/P/y7uv/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ovo//Ds6P/w7Oj/8Ozo - //Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w6+j/8Ovo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo - //Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo - //Ds6P/w7Oj/8Ovo//Ds6P/w7Oj/8Ozo//Ds6P/w6+j/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w6+j/8Ozo - //Ds6P/w6+j/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo - //Ds6P/w7Oj/8Ovo//Dr6P/w6+j/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo - //Dr6P/w6+j/8Ozo//Ds6P/w7Oj/8Ovo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/8Ozo - //Ds6P/w6+j/8Ozo//Ds6P/w7Oj/8Ozo//Ds6P/w7Oj/0cK2/3pPK/91SCP/dUgj/3VII/90SCPfdUgj - 4HVJI/91SSP/d0sm/8+/sv////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ///////c0cf/fFEs/3VJI/92SSP/dkkj/3VJI992SSPgdkkj/3ZJI/94Syb/z7+y//////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////93RyP98USz/dkkj/3dJJP93SSP/dkkj - 33dJI+B4SiP/eEoj/3lMJv/QwLL///////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ////////////3dHH/31SLf94SiP/eEok/3hKI/94SiPfeEkj4HhKJP94SiT/ek0n/9DAsv////////// - /////////////f38/+3n4v/n39j/59/Y/+ff2P/p4tz/+vj3////////////9vPw/+jg2f/n39j/59/Y - /+ff2P/y7en///7+///////9/Pv/7Obg/+ff2P/n39j/59/Y/+rj3P/7+fj////////////18u//6ODZ - /+ff2P/n39j/59/Y//Pu6////v7///////z7+v/r5N//59/Y/+ff2P/n39j/6uPd//z7+v////////// - //Tx7v/o39n/59/Y/+ff2P/o39n/8+/r////////////+/r5/+vk3//n39j/59/Y/+ff2P/r5d///Pv6 - ////////////8+/r/+ff2P/n39j/59/Y/+ff2P/08O3////////////7+vn/6+Te/+ff2P/n39j/59/Y - /+zl4P/8+/r////////////y7ur/6N/Y/+ff2P/n39j/6ODZ//Xy7/////////////v5+P/q4tz/59/Y - /+ff2P/n39j/7Obg//38+////////v7+//Ht6f/n39j/59/Y/+ff2P/o4Nn/9vPw////////////+vj2 - /+ni2//n39j/59/Y/+ff2P/t5+L//v38///////////////////////d0cj/flIt/3lKJP95SiP/eEoj - /3hKI995SyPgeUsk/3lLI/97TSf/0MCy///////////////////////28/H/qIlw/4phPv+KYT//imE/ - /5ZyU//m3db////////+/v/TxLf/jGVD/4phPv+KYT7/imE//76olP/8+/v///////Tx7v+lhWr/imE+ - /4phP/+KYT//l3NV/+rj3P///////v39/8+9r/+NZUT/imE//4phPv+LYkD/wqya//38+///////8u3p - /6B+Yv+KYT//imE//4phP/+ad1n/8Ovm///////+/v3/y7qr/4xlQ/+KYT//imE//4xkQv/EsJ///v39 - ///////u6OP/nnxf/4phP/+KYT//imE//59+Yv/w6+b//////////v/Er57/i2NB/4phP/+KYT//jGRC - /8m2p//+/v7//////+3m4f+beFv/imE//4phP/+KYT//oYFl//Hs5////////v39/8Cql/+LY0H/imE/ - /4phP/+OZkT/0MCy//7+/v//////7OTe/5dzVP+KYT//imE//4phP/+igmb/9PHu///////7+vr/vaWS - /4tiQP+KYT//imE//49nRv/UxLj///7+///////l3NX/lG9P/4phP/+KYT//imE//6iJcP/39PP///// - /////////////////93SyP9/Uy3/eUsk/3pLI/95SyP/eUsj33lLJOB7TCT/ekwk/3xOJ//RwLL///// - //////////////////Xy7/+delz/e0sk/3tLJP97TCT/iV88/+LY0P////////7+/828rf99UCj/ekwk - /3pMJP97TCT/tpyH//z7+v//////8/Ds/5l1V/96TCT/ekwk/3pMJP+JYD3/59/X///////+/f3/yLSk - /35QKv96TCT/e0wk/3tNJf+5oYz//fz7///////w6+b/k21M/3pMJP97TCT/e0wj/4xkQv/u6OP///// - //7+/f/FsJ//flAp/3pMJP96TCT/fU8n/7ylkf/+/f3//////+zl3/+Qakj/e0wk/3pLJP96TCT/k21M - /+7o4//////////+/7ykkP98TSb/ekwk/3tMJP99Tyj/wq2b//7+/v//////6uPd/45mRP97TCT/e0wk - /3pMJP+VcFD/7+nk///////+/f3/t56J/3tNJv96TCT/ekwk/35RK//KuKj//v7+///////p4dr/imA9 - /3pLJP96TCT/ekwk/5ZxUf/z7+z///////v6+f+0moP/e00m/3tMJP97TCT/f1Is/869rv///v7///// - /+HXzv+GXDf/ekwk/3pMJP97TCT/nHlc//bz8f//////////////////////3dLI/4BTLf97TCT/eksk - /3pMJP96SyPfekwk4HtMJP97TCT/fU4n/9HAsv//////////////////////9fLv/516XP97TCT/e0wk - /3tMJP+KYDz/49jQ/////////v7/zryt/35QKf97TCT/e0wk/3tMJP+2nYb//Pv6///////08Oz/mnZX - /3tMJP97TCT/e0wk/4pgPf/n39f///////79/f/ItaT/f1Eq/3tMJP97TCT/fE0l/7qhjP/9/Pv///// - //Dr5v+TbU3/e0wk/3tNJP97TCT/jWRC/+7o4////////v79/8Wwn/9+UCn/e0wk/3tMJP99Tyf/vaWR - //79/f//////7OXf/5JqSf97TCT/e0wk/3tMJP+TbUz/7ujj//////////7/vKSQ/31OJ/97TCT/e0wk - /35QKP/DrZv//v7+///////q493/j2ZE/3tMJP97TCT/e0wk/5ZwUP/v6eT///////79/f+4non/fE4m - /3tMJP97TCT/f1Ir/8q4qP/+/v7//////+nh2v+KYD3/e0wk/3tMJP97TCT/l3FR//Tv7P//////+/r5 - /7Sag/98TSX/e0wk/3tMJP+AUyz/zr2u///+/v//////4tfP/4dcN/97TCT/e0wk/3tMJP+delz/9vPx - ///////////////////////e0sj/gVMt/3tMJP97TCT/e0wk/3tMJN98TCTgfEwk/3xMJP9+Tyf/0cGy - ///////////////////////18u//nnpc/3xMJP98TCT/fEwk/4pgPP/j2ND////////+/v/Ova3/f1Ap - /3xMJP98TCT/fE0k/7edh//8+/r///////Tw7P+adlf/fE0k/3xMJP98TCT/i2E9/+ff1////////v39 - /8m1pP+AUir/fEwk/3xMJP99TiX/uqGM//38+///////8Ovm/5RuTf98TST/fE0k/3xNJP+OZUL/7ujj - ///////+/v3/xbGf/39RKf98TCT/fEwk/35PJ/+9pZH//v39///////s5d//kmtJ/3xMJP98TCT/fE0k - /5RtTP/u6OP//////////v+9pJD/fk8n/3xMJP98TST/f1Ao/8Otm//+/v7//////+vj3f+PZ0T/fE0k - /3xNJP98TCT/lnBQ/+/p5P///////v39/7ifif99Tyb/fE0k/3xNJP+AUiv/y7io//7+/v//////6eHa - /4thPf98TCT/fEwk/3xNJP+XclH/9O/s///////7+vn/tZqD/31OJv98TST/fE0k/4FTLP/Ova7///7+ - ///////i18//iFw3/3xNJP98TCT/fEwk/556XP/39PH//////////////////////97SyP+BVC3/fEwk - /3xNJP98TST/fEwk331NJOB9TST/fU0k/39PJ//RwbL///////////////////////bz8P+mhmr/iFw3 - /4hcN/+IXDf/lW5N/+Xc1P////////7+/9PDtP+LYDv/iFw3/4hcN/+IXTf/vaWR//z7+v//////9fHu - /6OBZf+IXDf/iFw3/4hcN/+Wb07/6eLb///////+/f3/zrus/4thPf+IXDf/iFw3/4ldOP/AqZb//fz7 - ///////x7ej/nnpc/4hcN/+IXDf/iFw3/5hyUv/v6uX///////7+/f/LuKf/i2A8/4hcN/+IXDf/il86 - /8Stmv/+/f3//////+7n4v+ceFn/iFw3/4hcN/+IXTf/nnpb//Dq5f/////////+/8Otmf+KXjn/iFw3 - /4hcN/+KXzr/yLSj//7+/v//////7eXg/5p0VP+IXDf/iFw3/4hdN/+gfV//8Ovm///////+/f3/v6eT - /4leOf+IXDf/iFw3/4xiPf/Pvq///v7+///////r5N3/lm9O/4hcN/+IXDf/iF03/6F+YP/18O7///// - //v6+v+7o47/iV05/4hcN/+IXDf/jWM+/9PDtf///v7//////+Xb0/+Takn/iFw3/4hcN/+IXDf/poZq - //j18v//////////////////////3tLI/4JULf99TST/fU0k/31NJP98TSTffk0k4H5OJP99TST/f1An - /9LBsv///////////////////////fz7/+nh2f/h1s3/4dbN/+HWzf/k2tL/+fb0////////////9PDs - /+LXzv/h1s3/4dbN/+HWzP/u6OL//v7+///////8+/r/59/X/+HWzf/h1s3/4dbN/+Tb0v/6+Pb///// - ///////z7ur/4tfO/+HWzf/h1s3/4dbN/+/p5f///v7///////v6+f/m3dX/4dbN/+HWzf/h1s3/5dvT - //v6+f////////////Lt6f/i183/4dbN/+HWzf/h183/8Orm////////////+/n4/+bd1f/h1s3/4dbN - /+HWzf/n3dX/+/r5////////////8Orl/+HWzf/h1s3/4dbN/+LXzf/x7Of////////////6+ff/5dzU - /+HWzf/h1s3/4dbN/+fe1v/7+vn////////////v6eT/4dbN/+HWzf/h1s3/4tfN//Pu6v////////// - //r49v/k29L/4dbN/+HWzf/h1s3/597X//z7+v///////v7+/+7o4v/h1s3/4dbN/+HWzf/i187/9PDs - ////////////+Pb0/+Ta0f/h1s3/4dbN/+HWzf/p4Nn//fz8///////////////////////e0sj/g1Uu - /35OJP99TiT/fU4k/31NJN9+TiTgfk4k/39OJP+AUCf/0L+v//////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - /////////////////////////////////9zQxf+EVS3/fk4k/35OJP9+TiT/fk0k339OJOB/TiT/f04k - /4BQJv+5n4j/+/n4//////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ///////////////////////////////////////////////////////////////////////9/Pv/xa+c - /4JSKf9/TiT/f04k/39OJf9+TSTff04k4IBPJP+ATyX/gE8l/4xfOf/BqZT/39PI/+LXzv/i187/4tfO - /+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/j187/49fO - /+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/j187/4tfO - /+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/i187/4tfO - /+LXzv/i187/4tfO/+PXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/j187/4tfO/+LXzv/i187/4tfO - /+LXzv/i187/4tfO/+PXzv/j187/4tfO/+LXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/i187/4tfO - /+LXzv/i187/4tfO/+LXzv/i187/4tfO/+PXzv/i187/4tfO/+LXzv/i187/4tfO/+LXzv/j187/49fO - /+LXzv/i187/4tfO/+LXzv/i187/4tfO/+PXzv/i187/49fO/+LXzv/i187/4tfO/+LXzv/i187/49fO - /+LXzv/i187/4tfO/+LXzv/i187/4NXL/8eyn/+QZkH/gE8l/4BPJP+ATyT/gE8k/4BOJN+ATiTggU8k - /4FPJf+BTyX/gU8l/4NTKf+HWC//iFgw/4hZMP+HWTD/h1kw/4hZMP+IWTH/h1kw/4hZMP+IWTD/h1kw - /4dZMP+IWTD/iFkw/4hZMP+IWTD/h1kx/4hZMP+HWTD/iFkw/4hZMP+IWDD/h1kw/4dZMP+HWTD/h1kw - /4dZMP+IWTD/iFgw/4dZMP+HWTD/iFkw/4hZMP+IWTD/iFkw/4hZMP+IWTD/iFkw/4dZMf+HWTH/h1kw - /4dZMP+HWTD/iFkw/4dZMP+HWTD/h1kx/4dZMP+IWTD/iFkw/4dYMf+IWDD/h1kw/4hZMP+IWTD/iFgw - /4hYMP+IWDD/iFkw/4hZMP+IWTD/iFkw/4hZMP+HWTD/h1kw/4dZMP+IWTD/iFkw/4hZMP+IWTD/h1kx - /4dYMP+HWTD/iFkw/4hZMP+IWTD/iFkw/4hZMP+IWTD/iFkw/4dZMP+HWTD/h1kw/4dZMP+HWTD/h1kw - /4hYMf+HWDD/h1kw/4hZMP+HWTD/iFkw/4dZMf+IWTD/h1gw/4hZMP+HWTD/h1kw/4hZMP+IWTD/iFkw - /4hYMP+IWTH/iFkw/4dZMP+HWTD/iFkw/4hZMP+IWTD/iFkw/4hZMP+IWTD/iFkw/4dZMP+HWTD/hFQq - /4FPJf+BTyT/gU8k/4BPJP+BTyT/gE4k34BPJOCBTyT/gVAl/4FQJf+BUCT/gVAk/4FQJf+BTyX/gVAk - /4FQJf+BUCX/gVAl/4FQJf+BUCX/gVAk/4FQJP+BUCX/gVAk/4FQJf+BUCX/gVAk/4FQJP+BUCX/gU8l - /4FQJf+BUCX/gVAl/4FPJf+BUCX/gVAl/4FQJf+BUCX/gVAl/4FQJP+BTyT/gVAk/4FQJP+BUCT/gVAl - /4FPJf+BTyX/gVAk/4FQJP+BUCX/gVAl/4FQJf+BTyX/gVAl/4FQJf+BUCX/gVAk/4FQJf+BUCT/gU8l - /4FPJP+CUCX/gU8l/4FPJP+BUCX/gVAk/4FPJf+BTyX/gU8k/4FPJP+BUCX/gU8l/4FQJP+BUCX/gVAl - /4FQJP+BTyT/gVAk/4FQJP+BUCT/gVAk/4FQJf+BUCX/gU8l/4FQJf+BUCT/gVAl/4FQJf+BUCX/gVAk - /4FQJf+BTyT/gVAk/4FQJP+BUCX/gVAk/4FQJf+BUCX/gU8l/4FPJP+BUCT/gVAl/4FQJf+BUCT/gU8l - /4FPJP+BTyX/gVAk/4FQJP+BUCX/gVAk/4FQJf+BUCT/gU8l/4FQJf+BUCX/gVAk/4FQJP+BTyX/gVAl - /4FQJf+BUCX/gVAl/4FQJf+BUCX/gVAl/4FQJf+BUCX/gVAk/4FQJf+BUCX/gU8k/4FQJf+BUCTfgU8l - 4IJQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJP+CUCT/glAl/4JQJf+CUCX/glAl/4JQJP+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJP+CUCX/glAl/4JQJP+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCT/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJP+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCT/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAk/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAk - /4JQJP+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAk/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJP+CUCX/glAl/4JQJN+BUCTgglAl/4NRJf+DUCX/g1Al/4JQJf+CUSX/glAl - /4JQJf+CUSX/glAl/4JQJf+CUCX/glAl/4JRJf+CUSX/glEl/4JRJf+CUSX/glAl/4JRJf+CUCX/glAk - /4JQJf+DUSX/g1Al/4JQJf+CUSX/glEl/4NQJf+CUCX/glAl/4JQJf+CUSX/glEl/4NQJf+CUCX/glAl - /4NQJf+CUCX/g1Al/4NQJf+CUCX/glAl/4NQJf+DUCX/glAl/4NQJf+DUSX/glAl/4NQJP+DUCX/g1Al - /4JQJf+DUSX/glAl/4JQJf+DUCX/g1Al/4JQJf+DUCX/glAl/4JQJf+CUCX/g1El/4NRJf+DUSX/g1El - /4JQJf+CUSX/g1El/4NRJf+DUSX/g1El/4JQJf+CUCX/g1Al/4NQJf+DUCX/glEl/4JRJf+CUCX/g1Al - /4NQJf+DUCX/glAl/4JQJf+CUCX/glAl/4NQJf+CUCX/glAl/4NQJf+DUCX/glAl/4JQJf+CUCX/glAl - /4NQJP+DUCX/glAl/4JQJf+DUSX/g1El/4JQJf+DUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/g1Al - /4NQJf+DUCX/glEl/4JQJf+DUCX/g1El/4JQJf+CUCX/glEl/4JRJf+DUCX/g1Al/4NQJf+DUSX/glAk - 34JQJOCDUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUCX/g1Al/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El - /4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1Al/4NRJf+DUSX/g1El - /4NRJf+DUCX/g1El/4NRJf+DUSX/g1El/4NQJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El - /4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El - /4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El - /4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El - /4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1Ek/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El - /4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/g1Ek - /4NRJf+DUSX/g1El/4NRJf+DUCX/g1El/4NRJf+DUSTfhFAk4IRRJf+DUSX/hFEl/4RRJf+EUSX/hFEl - /4RRJf+DUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+DUSX/hFEl - /4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4NRJf+EUSX/hFEl - /4RRJf+EUSX/g1El/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFIl/4RRJf+EUSX/hFEl/4RSJf+EUSX/hFEl - /4RRJf+EUSX/hFEl/4RRJf+EUSX/g1El/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUiX/hFEl - /4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+DUSX/g1El/4RRJf+EUSX/hFEl/4RRJf+DUSX/g1El - /4RRJf+EUSX/hFEl/4NRJf+EUSX/hFEl/4RRJf+DUSX/hFEl/4RRJf+DUSX/g1El/4RRJf+EUSX/hFEl - /4RRJf+EUSX/hFEl/4RRJf+EUSX/g1El/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl - /4NRJf+EUSX/hFEl/4RRJf+DUSX/hFEl/4RRJf+EUSX/hFEl/4NRJf+DUSX/g1El/4RRJf+EUiX/hFEl - /4NRJN+FUCXghFEl/4RSJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl - /4RRJf+EUSX/hFEl/4RSJf+EUSX/hFEl/4RSJf+EUiX/hFEl/4RSJf+EUiX/hFIl/4RSJf+EUSX/hFEl - /4RRJf+EUSX/hFIl/4RSJf+EUiX/hFEl/4RRJf+EUSX/hFEl/4RSJf+EUSX/hFEl/4RSJf+EUiX/hFIl - /4RRJf+EUSX/hFEl/4RRJf+EUiX/hFIl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFIl/4RRJf+EUSX/hFEl - /4RRJf+EUSX/hFEl/4RRJf+EUSX/hFIl/4RSJf+EUiX/hFIl/4RRJf+EUSX/hFEl/4RSJf+EUiX/hFIl - /4RRJf+EUSX/hFEl/4RRJf+EUiX/hFEl/4RRJf+EUSX/hVEl/4RRJf+EUSX/hFIl/4RRJf+EUSX/hFEl - /4RRJf+EUSX/hFEl/4RRJf+EUiX/hFEl/4RRJf+EUSX/hFIl/4RSJf+EUSX/hFEl/4RSJf+EUiX/hFEl - /4RSJf+EUSX/hFIl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl - /4RSJf+EUiX/hFIl/4RRJf+EUiX/hFIl/4RRJf+EUSX/hFEk34VRJeCEUiX/hFIl/4VRJf+EUiX/hFIl - /4VSJf+FUSX/hFIl/4RSJf+FUiX/hFIl/4VSJf+EUSX/hFEl/4RSJf+EUiX/hFIl/4VSJf+EUiX/hVIl - /4VRJf+FUSX/hVIl/4VSJf+EUiX/hFIl/4VSJf+FUiX/hVEl/4VSJf+FUiX/hFEl/4VSJf+FUiX/hVIl - /4RSJf+FUiX/hVIl/4RSJf+FUiX/hVIl/4VSJf+FUiX/hFIl/4RSJf+FUiX/hFIl/4RSJf+EUiX/hVIl - /4VSJf+FUiX/hFIl/4RSJf+FUiX/hVIl/4VSJf+EUiX/hVIl/4VSJf+EUiX/hFEl/4VSJf+FUiX/hFIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJf+EUiX/hVIl/4VSJf+FUiX/hVIl/4RSJf+EUSX/hFIl - /4RSJf+FUSX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+EUSX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4RSJf+FUiX/hFIl/4VSJf+FUSX/hFIl/4VSJf+FUiX/hVIl/4VSJf+FUSX/hVIl - /4VSJf+FUiX/hFIl/4RRJf+FUiX/hVEl/4VSJf+FUSX/hVEl/4VSJf+FUiX/hVEl/4VSJf+FUiX/hVEl - /4VRJf+EUSTfhVEl4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJN+FUSXghVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hFIk34VRJeCFUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+EUiTfhVEl4IVSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4RSJN+FUSXghVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hFIk34VRJeCFUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+EUiTfhVEl4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJN+FUSXghVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hFIk34VRJeCFUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+EUiTfhVEl - 4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJN+FUSXghVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hFIk - 34VRJeCFUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+EUiTfhVEl4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4RSJN+FUSXghVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hFEk34VRJeCFUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+EUSTfhVEl4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJN+FUSXghVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hFIk34VRJeCFUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+EUiTfhVEl4IVSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4RSJN+EUiZ/hVIkkYVSJJGFUiSRhVIkkYVQJJGFUiSRhVIkkYVSJJGFUiSRhVAk - kYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIk - kYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIk - kYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIk - kYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIk - kYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIk - kYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIk - kYVQJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIk - kYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhVIkkYVSJJGFUiSRhFImf/////////////// - //////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAA - AEAAAACAAAAAAQAgAAAAAAAAQgAAAAAAAAAAAAAAAAAAAAAAAEAoHNc/KB30Pygd9D8oHfQ/KB30Pygd - 9D8oHfQ/KB30Pygd9D8oHfQ/KB30Pygd9D8oHfQ/KB30Pygd9D8oHfQ/KB30Pygd9D8oHfQ/KB30Pygd - 9D8oHfQ/KB30Pygd9D8oHfQ/KB30Pygd9EEqHvSkmZT0/fz89Pv7+/T7+/v0+/v79Pv7+/T7+/v0+/v7 - 9Pv7+/T7+/v0+/v79Pv7+/T9/f304d3c9GBNQvQ/KB30Pygd9D8oHfQ/KB30Pygd9D8oHfQ/KB30Pygd - 9D8oHfQ/KB30Pygd9D8oHfQ/KB30Pygd9D8oHfQ/KB30Pygd9D8oHfQ/KB30Pygd9EAoHNY/KBzgQCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QSof/2taUP+Mfnf/jX94/41/eP+Rg3z/3NjW//39/f/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz/+vr5/5WIgv9CKx//QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKRzfPygc4EApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0w3LP/Pysf//Pv7//z8+//8/Pv//Pz8 - //39/f/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39/9vX1f9WQjf/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkc3z8oHOBAKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9bSD3/5+Tj - //39/f/8/Pz//Pz8//z8/P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8 - //39/f+jmJP/Qisf/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN8/KBzgQCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/a1lQ//Lx8P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//z8/P/z8vL/cWBX/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKRzfPygc - 4EApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/3trY//4+Pf//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//9/f3/39za/1VANv9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkc3z8oHOBAKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf+HeXH/+/v7//z8/P/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39/8rEwP9IMif/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN8/KBzgQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/j4F6 - //38/P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //39/f+6sq3/Qy0h/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKRzfPygc4EApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/5GEff/9/f3//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//+/v7/s6um/0IsIP9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkc - 3z8oHOBAKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf+Qgnv//f39//z8/P/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f79/7evqv9DLCD/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHN9AKBzgQSod/0EqHf9BKR3/QSkd/0EpHf9BKR3/QSkd/0EpHf9BKR3/QSkd - /0EpHf9BKR3/QSkd/0EqHf9BKR3/QSkd/0EqHf9BKR3/QSod/0EqHf9BKR3/inx0//v7+//8/Pz/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//39/f/Fvrr/RzAk - /0EpHf9BKR3/QSkd/0EpHf9BKR3/QSkd/0EqHf9BKh3/QCod/0EqHf9BKh3/QSod/0EqHf9BKR3/QSod - /0EqHf9BKR3/QSkd/0EqHf9BKh3/QSkd/0EpHf9BKRzfQiod4EIrHv9lUkj/joB5/5CDe/+Qg3v/kYN7 - /5CDe/+Rg3v/kYN7/5GDe/+Rg3v/kYN7/5GDe/+Rg3v/kYN7/5GDe/+Qg3v/kIN7/5CDe/9nVEr/Qiod - /4BwaP/5+fj//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//9/f3/2tXT/1E8MP9CKx7/blxS/5CDfP+Qg3v/kIN7/5GDe/+Rg3v/kYN7/5GDe/+Rg3v/kIN7 - /5GDe/+Qg3v/kYN7/5GDe/+Rg3v/kYN7/5GDe/+Rg3v/hHVs/044LP9BKh3/QSoc30IqHeBKMyf/x8C8 - //7+/f/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+ - //7+/v/+/v7/pJiS/0MsHv9xX1X/9fPz//z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v//Pz8/+/t7P9pVkz/Qyse/4t8dP/6+fn//v7+//7+/v/+/v7//v7+ - //7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//j39/+CcWn/Qyod - /0IqHN9DKx3gTjcq/9bQzf//////+fj4/8fAvP+7s63/2tXS//39/f/Szcn/u7Kt/83Gw//8+/v/4d7b - /7yzrv/Du7f/9fTz/+7s6v+/trL/vrWw/6KWj/9GLiD/Yk5D/+vp5//9/f3/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/8+/v/loiB/0QsHv9aRTn/sqij - /7uyrf/SzMn//f39/9vW1P+7sq3/xr+7//j39//p5uX/vbWw/7+3sv/v7ez/9PLx/8K6tf+8s67/4+De - ///////+/v7/jn93/0MrHf9DKx3fRCsd4E83Kv/W0M3//////+7s6/9pVUn/SDAi/5uOhv/6+fn/hndt - /0gwIv94Zlz/9vX1/6+knv9JMSP/XUc7/+Th3//Ry8f/Ujst/043Kf+ThXz/TDMm/1Q9Mf/a1dL//v7+ - //7+/v/+/v7//v7+//7+/v/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39 - /8/Ixf9ROi3/RS0f/0kxIv9IMCL/hnZt//r5+f+fkor/SC8h/2ZRRf/t6un/xLy4/002KP9TPS//1c/M - /+Hc2v9aRDf/SjEj/7Sqpf///////v7+/45/d/9ELB7/RCsd30UsHeBQOCr/1tDN///////v7ez/bFdM - /0szJf+dj4j/+vn5/4h4b/9LMyT/emhe//f19f+wpqD/TDQm/2BKPv/l4d//0czI/1U9MP9ROSz/qJyW - /1dAM/9JMCH/jn92/7uyrf+8s63/vLOt/7+1sf/s6ej//f39//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//z8/P/19PT/g3Np/0YtH/9FLB7/SC8g/4h4b//6+fn/oJOM/0szJP9oVEj/7uvq - /8W9uf9QOCv/Vj8y/9XQzf/h3Nr/XUc6/000J/+1rKb///////7+/v+PgHf/RSwe/0UsHd9GLR3gUTkr - /9bRzf//////+vn5/9DJxv/Gvrn/4NvZ//79/f/Z1NH/xb65/9TOy//8/Pz/5uLg/8a+uf/MxcH/9/X1 - //Du7f/Iwb3/x8C7/+Tg3v+JeW//STAh/0guH/9KMSL/SjEi/0oxIv9NNCX/s6mj//39/f/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//f39/9LMyf9aQzX/Ry0e/15IO//Jwb3//f39 - /+Hc2v/Gvrn/z8jE//n4+P/s6uj/x7+7/8nBvf/y8O//9fTz/8vEwP/Gvrr/5+Ti///////+/v7/kIB3 - /0ctHv9GLB3fRy0d4FI5K//X0c3/////////////////+fj4//Px8P/z8fD/8/Hw//Px8P/z8fD/8/Hw - //Px8P/z8fD/8/Hw//Px8P/z8fD/8/Hw//Px8P/z8fD/3NfU/2dSRP9ILh7/SC4e/0guHv9ILh7/SC4e - /4JwZf/39vb//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/7+vr/qZ2W - /041Jf9MMiP/k4R7/+nm5P/z8fD/8/Hw//Px8P/z8fD/8/Hw//Px8P/z8fD/8/Hw//Px8P/08vH//f39 - /////////////v7+/5GBd/9ILh7/SC0d30guHeBTOiv/19HN/////////////////7etpv9uWEv/blhL - /25YS/9uWEv/blhL/25YS/9uWEv/blhL/25YS/9uWEv/blhL/25YS/9uWEv/blhL/2xWSf9TOir/SS8e - /0kvHv9JLx7/SS4e/0kuHv9cRDX/3NfU//39/f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v//f39//Px8P+RgXf/TTMj/00zI/9mUEL/blhL/25YS/9uWEv/blhL/25YS/9uWUv/blhL - /25YS/9uWEv/fGld/+nl4/////////////j39v+Idmv/SS4e/0kuHd9JLx7gVTsr/9fRzf////////// - //////+mmZD/Sy8e/0svHv9KLx7/Si8e/0ovHv9KLx7/Sy8e/0svHv9LLx7/Sy8e/0svHv9LLx7/Sy8e - /0svHv9LLx7/Sy8e/0ovHv9KLx7/Sy8e/0svHv9LLx7/TTEh/6aZkP/8/Pz//Pz8//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//9/f3/7+zr/5GBd/9QNiX/Sy8e/0ovHv9LLx7/Sy8e - /0svHv9LLx7/Sy8e/0svHv9LLx7/Sy8e/11ENP/j39z/+fj3/9fRzf+Qf3X/VTsr/0ovHv9TOinfSy8e - 4FY8K//X0c3/////////////////p5mQ/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe - /0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9sVUb/6eXj - //39/f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//39/f/y8O//p5mR - /1tCMv9MMB//TDAe/0wwHv9MMB7/TDAf/0wwHv9MMB7/TDAe/0wwHv9YPy7/p5qR/4l2a/9cQzP/TTEf - /00yIP9sVUf/vbSt300wHuBXPSv/2NLO/////////////////6eakP9NMR7/TTEe/00xH/9NMR//TTEf - /00xHv9NMR//TTEe/00xHv9NMR//TTEf/00xH/9NMR7/TTEf/00xHv9NMR7/TjEf/00xH/9NMR//TTEf - /00xH/9OMR//UTUj/66hmf/8/Pz//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v//f39//r5+f/Ox8L/gm5h/1c8K/9OMR//TTEf/04xH/9NMR//TTEf/00xHv9NMR//TjIg - /1A0Iv9NMR//TzIg/2BGNv+ZiX//4t7b//z8/N9OMB7gWT0r/9jSzv////////////////+ompH/TzIf - /08yH/9PMh//TzIf/08yH/9PMh//TzEf/08yH/9PMh//TzIf/08yH/9PMh//TzIf/08yH/9PMh//TzIf - /08yH/9PMh//TzIf/08yH/9PMh//TzIf/1I2I/+ci4H/+vn4//39/f/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz//f39//Ty8f/Kwrz/koF1/2tTQ/9ZPiz/UjYj - /1AzIP9QMyD/UDMg/1Q4Jf9dQzL/dV9Q/6OUi//b1dH/+fn4//39/f/7+/vfTzIe4Fo+LP/Y0s7///// - ////////////qZuR/1AzH/9QMx//UDMf/1AzH/9QMx//UTMf/1AzH/9QMx//UDMf/1AzH/9QMx//UDMf - /1AzH/9QMx//UDMf/1AzH/9QMx//UDMf/1AzH/9QMh//UDMf/1M2I/+QfXD/7uvp//39/f/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//9/f3//f39 - //r5+f/r6OX/1c7J/8C2r/+ypZ3/r6GY/7Wpof/Gvbf/3NbS//Hv7f/8/Pz//f39//z8/P/7+/v/+/v7 - 31EzHuBcPyz/2dLO/////////////////6qbkf9SNB//UjQf/1IzH/9SNB//UjQf/1I0H/9SNB//UjQf - /1I0H/9SNB//UjQf/1I0H/9SNB//UjQf/1I0H/9SNB//UjQf/1I0H/9SNB//UjQf/1Q3I/+PfG//7uvp - //39/f/7/Pv/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//8/Pz//f39//39/f/9/v3//f79//79/f/9/f3//f39//39/f/9/f3//Pz8 - //v7+//7+/v/+/v7//v7+99TNB7gXUAs/9nSzv////////////////+rm5H/UzQf/1M1H/9TNR//UzQf - /1M1H/9TNR//UzQf/1M1H/9TNB//UzQf/1M0H/9TNB//UzQf/1M0H/9TNB//UzUf/1M0H/9TNR//UzUf - /1M0H/93X07/6+fl//3+/f/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/vfVTUf4F9BLP/a087/////////////////q5yR - /1U2H/9VNR//VTYf/1U1H/9VNR//VTYf/1U1H/9VNh//VTUf/1U2IP9VNh//VTUf/1U1IP9VNSD/VTYf - /1U1H/9VNh//VTYf/1U2H/9VNR//cFVC/+Pe2//+/v7/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v731Y2H+BgQiz/2tPO - /////////////////6yckf9XNiD/VzYf/1Y2IP9XNiD/VjYg/1Y2IP9XNyD/VzYg/1c2IP9WNyD/Vzcg - /1c3IP9XNiD/VzYg/1c3IP9XNiD/VzYg/1c2IP9XNyD/Vzcg/1g4Iv+VgXL/9PLx//39/f/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+99YNx/gYkMs/9rTzv////////////////+tnZH/WDcg/1g3IP9YNyD/WDcg/1g3IP9YNyD/WDcg - /1g3IP9YOCD/WDcg/1g3IP9YOCD/WDcg/1g3IP9YNyD/WDgg/1g3IP9YNyD/WDcg/1g3IP9YNyD/Xj8o - /7Gil//6+fn//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/vfWTgf4GNELf/b087/////////////////rp2R/1o4IP9aOCD/Wjgg - /1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjkg/1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg/1o4IP9aOCD/Wjgg - /1o4IP9aOCD/Wjgg/1o4IP9nSDH/xLiv//z8+//8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v731w4H+BlRS3/29TO//////////////// - /66ekf9cOSD/XDkg/1w6IP9cOiD/XDkg/1w5IP9cOSD/XDkg/1w5IP9cOiD/Wzkg/1w5IP9cOSD/XDkg - /1w5IP9cOiD/XDkg/1s5IP9bOSD/XDkg/1w5IP9cOSD/XDkg/29ROv/Ow7z//Pz8//z8/P/7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//8/Pz//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+99dOh/gZkYt - /9vUzv////////////////+vnpL/XTog/107IP9dOiD/XTsg/147If9dOyD/XTog/106IP9dOiH/XTog - /106IP9dOiH/XTog/146IP9dOiD/XTog/107IP9dOyD/XTog/107If9dOiH/Xjog/106If9eOyH/c1U/ - /8/Fvv/8/Pz//Pz8//v7+//7+/v/+/v7//v7+//9/f3//fz8//39/f/9/f3//Pz8//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/vfXzsh4GhHLf/c1M7/////////////////sJ+S/187If9fPCH/Xzsh/187If9fOyH/Xzwh - /187If9fPCH/Xzsh/188If9fOyH/Xzsh/187If9fOyH/Xzsh/187If9fOyD/Xzsg/187IP9fPCH/Xzsh - /187If9fOyH/Xzsh/188If90VT3/yr61//v6+v/9/f3/+/v7//v7+//9/f3/9/X0/7qrn//Et63/8u/t - //39/f/9/f3//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v//Pz832A8IeBqRy3/3NTO/////////////////7Gfkv9hPCH/YT0h - /2E9If9hPCH/YTwh/2E9If9hPCH/YTwh/2E8If9hPSH/YT0h/2E9If9hPSH/YT0h/2E9If9hPCH/YT0h - /2E9If9hPSH/YT0h/2E9If9hPSH/YTwh/2E9If9hPSH/YTwh/29ONf+7rKD/9/X0//39/f/9/f3/9/X0 - /7CekP9oRiv/Z0Qq/4ltWf/Bs6j/6+fk//v7+v/9/f3//f39//z8/P/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/9/f3//f39//r5+N9jPSHga0gu/9zUzv////////// - //////+yoJL/Yz4h/2I9If9jPSH/Yz4h/2I+If9iPSH/Yz0h/2M+If9iPSH/Yj4h/2M+If9jPSH/Yz0h - /2M9If9jPiH/Yz4h/2M+If9jPiH/Yz4h/2M+If9jPSH/Yz4h/2M+If9jPSH/Yz0h/2M9If9jPiH/akcs - /6WPf//s5+T/9/Xz/7Kgkf9qRiv/Yz4h/2M9If9jPiH/Z0Mn/31eR/+mkYD/0MW8//Px7//+/v7/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/9/f3/6eTg/8O1q/+bhHLfZT4h - 4G5KLv/d1c7/////////////////s6CS/2U/If9lPyH/ZT8h/2U/If9lPyH/ZT8h/2U/If9lPyH/ZD8h - /2U/If9lPyH/ZT8h/2U/Iv9lPyH/ZT8h/2U/If9lPyH/ZT8h/2U/If9lPyH/ZT8h/2U/If9lPyH/ZT8h - /2U/If9lPyH/ZT8h/2U/If9nQiT/hmhR/5h/a/9sSCv/ZT8h/2U/If9lPiH/ZT8h/2U/If9lPyH/ZT8i - /21JLf/JvLL//v7+//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz/+/r6 - /6CJd/9oQyb/ZD4h32c/IuBwSy7/3tXO/////////////////7Shkv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai - /2dAIv9nQCH/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai - /2dAIf9nQCH/Z0Ai/2dAIv9nQCH/Z0Ah/2dAIv9nQCL/Z0Ah/2dAIf9nQSL/Z0Ah/2dAIv9nQCL/Z0Ah - /2dAIf9nQCL/Z0Ah/2dAIv9pQyX/xbar//7+/v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v//Pz8//v6+f+agGz/Z0Ah/2ZAId9oQCLgcUwu/97Vzv////////////////+1opL/aUEi - /2lBIv9pQSL/aUEi/2lBIv9pQSL/aUIi/2lBIv9pQSL/aUIi/2lCIv9pQSL/aUEi/2lBIv9pQSL/aUEi - /2lBIv9pQSL/aUEi/2lBIv9pQSL/aUEi/2lBIv9pQSL/aUEi/2lBIv9pQSL/aUEi/2lBIv9pQSL/aUIi - /2lBIv9pQSL/aUEi/2lBIv9pQSL/aUEi/2lBIv9pQSL/a0Ql/8a3q//+/v7/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/7+vn/m4Fs/2lCIv9pQSLfa0Mi4HRNLv/e1s7///// - ////////////tqKS/2tDIv9rQyL/a0Mi/2tDIv9rQyL/a0Mi/2tDIv9rQyL/bEMi/2tDIv9rQyL/a0Mi - /2tDIv9rQyL/a0Mi/2tDIv9rQyL/a0Mi/2tDIv9rQyL/a0Mi/2tCIv9sQyL/a0Mi/2tDIv9rQyL/a0Mi - /2tDIv9rQyL/a0Mi/2tDIv9rQyL/a0Mi/2tDIv9rQyL/a0Mi/2tDIv9rQyL/a0Mi/25GJf/Ht6v//v7+ - //z8/P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8//z8/P/9/f3/+/r5/52CbP9rQyL/a0Mi - 321EIuB2Ti//39bO/////////////////7ejkv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9uRCL/bUQi - /21EIv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bkQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi - /25EIv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi - /25EIv9vRST/sZuI//Ds6P/59/b//Pz7//39/f/9/f3//f39//7+/f/9/f3//f39//39/f/7+/r/9/Tz - /+fh2/+QcFb/bUQi/21DIt9vRSLgd1Av/9/Wzv////////////////+4o5P/b0Uj/29FI/9wRSP/b0Uj - /3BFIv9vRSL/cEUj/29FI/9vRSP/cEUj/29FI/9wRSP/cEUi/3BFIv9wRSP/b0Uj/3BFI/9vRSP/cEUj - /29FI/9vRSL/b0Ui/3BFIv9wRSL/cEUj/3BFIv9vRSP/b0Uj/3BFI/9vRSP/cEUj/29FIv9wRSP/cEUj - /29FI/9wRSP/cEUj/3BFI/9wRSL/b0Uj/3ZNLP+JZUn/mXti/6mPev+3oZD/wK6e/8W0pv/Htqj/xLOk - /76qmv+znIr/pIlz/5R0Wv+DXkD/ckgm/3BFI/9wRCLfcUYj4HlRL//g1s7/////////////////uaST - /3FGI/9xRiP/cUYj/3JHI/9xRiP/ckYj/3FGI/9xRiP/cUYj/3FGI/9xRiP/cUYj/3JGI/9xRiP/ckYj - /3FGI/9xRiP/cUYj/3FGI/9xRiP/ckYj/3FGI/9yRiP/cUYj/3JGI/9yRiP/cUYj/3FGI/9xRiP/cUYj - /3JGI/9xRiP/ckcj/3FGI/9yRiP/ckYj/3FGI/9xRiP/cUYj/3JGI/9yRiP/ckYj/3FGI/9yRyP/ckck - /3NHJP9zSCX/c0gl/3NIJf9yRyT/ckcj/3JHI/9yRiP/cUYj/3JGI/9xRiP/cUUi33RHI+B8Ui//4NfO - /////////////////8q6rP+Uclb/k3JW/5NyVv+Tclb/k3JW/5RyVv+Uclb/lHJW/5NyVv+Tclb/k3JW - /5RyVv+Uclb/k3JW/5RyVv+Uclb/lHJW/5NyVv+Uclb/lHJW/5NyVv+Uclb/lHJW/5RyVv+Tclb/lHJW - /5RyVv+Uclb/lHJW/5RyVv+Uclb/k3JW/5NyVv+Tclb/k3JW/5RyVv+Tclb/k3JW/5RyVv+Uclb/lHJW - /5RyVv+Tclb/lHJW/5NyVv+Uclb/lHJW/5RyVv+Uclb/lHJW/5NyVv+Uclb/lHJW/5NyVv+AWDf/dEcj - /3NII991SCPgfVMw/+HXz//////////////////7+vn/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0 - //j29P/49vT/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0 - //j29P/49vT/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0 - //j29P/49vT/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0//j29P/49vT/+Pb0 - //j29P/39fP/qY12/3ZJI/91SSPfd0kj4H9UMP/h18/////////////9/Pv//Pv6//39/P///////f38 - //z7+v/9/Pz///////79/f/8+/r//fz7///+/v/+/v7//Pv7//z7+//+/v7////+//38+//8+/r//v39 - ///////9/Pz//Pv6//38/P///////v39//z7+v/9/Pv////+//7+/v/8+/v//Pv7//7+/v////7//fz7 - //z7+v/+/f3///////38/P/8+/r//fz8///////+/f3//Pv6//38+////////v7+//z7+//8+/v//v7+ - ///+/v/8/Pv//Pv7//79/f///////v7+/62Se/93SiP/eEoj33lLI+CBVTD/4dfP///////39fL/uJ+K - /6iKcP/Pv7H//Pz7/8ayof+oinD/v6iV//v6+P/ZzMD/qYtx/7KXgf/z7ur/6eLb/62QeP+rjnX/5dzU - //Xx7/+1m4X/qIpw/9TFuf/8/Pv/xK+d/6iKcP/BrJn//Pr5/9TGuf+pinH/tZuF//Xx7v/m3tf/q451 - /6yPd//o4Nn/8+/r/7OZg/+pi3H/18m9//v6+P/Aqpf/qIpw/8ayof/8/Pv/0cGz/6iKcP+2nYf/9vPx - /+PZ0f+rjXT/rpF5/+vk3v/w6+f/sJV+/6mLcv/cz8X///////7+/v+uknv/eUsk/3lLI996TCTgglYw - /+LXz///////8+/r/5NsS/97TCT/t52I//v6+f+oiW//e0wk/557Xf/59/X/xbGf/3xNJv+KYT3/7OXf - /97SyP+CVTD/f1Ir/9fJvv/w6+b/jmdE/3tMJP++p5P/+/r4/6WEav97TCT/oYBj//r49v++p5P/fE0l - /45mRP/v6uX/2czB/4BSLP+BVC7/3NDF/+3n4f+MY0D/fE0l/8Ksmv/59/X/n3xf/3tMJP+oiW//+/r5 - /7mhi/97TCT/kGlI//Lt6f/Uxbn/f1Eq/4NXMv/h1s3/6eHa/4hdOf98TSb/ybam///////+/v7/r5N7 - /3tMJP97TCTffE0k4IRXMP/i2M////////Xx7v+lhGf/kWlG/8Otmv/8+/r/tpyF/5FoRv+ukHf/+vj3 - /8+9rv+Rakj/nXpb/+/p5P/j2dD/lnBQ/5RuTP/e0sj/8u7q/6F/Yv+RaUb/yLWk//z7+f+0mIH/kWlG - /7GUe//7+ff/ybWk/5FpR/+hf2H/8u3p/+DUy/+Vbk3/lm9O/+LXzv/w6+b/n3xe/5FqR//Muqr/+vj3 - /6+ReP+RaUb/tpyF//z7+v/FsJ7/kWlG/6OBZP/08Oz/3M/E/5RtS/+YclL/5tzV/+zm4P+cd1j/kmpI - /9LBtP///////v7+/7GUe/99TST/fEwk335NJOCFVzD/4dXM///////+/f3/8+/r//Hs5//39PL///7+ - //by7//x7Of/9PHt//7+/v/59vT/8ezn//Lu6v/9/Pz/+/r5//Lt6P/x7Oj/+/n4//39/P/z7uv/8ezn - //j18////v7/9fLv//Hs5//18e7//v7+//j18//x7Of/8+/r//39/P/7+fj/8ezo//Lt6P/7+vn//fz8 - //Pu6v/x7Of/+Pb0//7+/v/18e7/8ezn//by7////v7/9/Xy//Hs5//z7+v//v39//r59//x7Oj/8u3p - //z6+v/9/Pv/8u7q//Hs5//59/X///////79/f+wknj/fk4l/31NJN9/TiTgglIo/7WYf//f0sf/4NTK - /+DUyv/g1Mr/4NTK/+DUyv/g1Mr/4NTK/+DUyv/h1Mr/4NTK/+DUyv/g1Mr/4NTK/+DUyv/g1Mr/4dTK - /+DVyv/g1cr/4NXK/+DUyv/g1Mr/4NTK/+DUyv/g1Mr/4NTK/+DUyv/g1Mr/4NTK/+DUyv/g1Mr/4NTK - /+DUyv/g1Mr/4dTK/+DUyv/g1Mr/4NTK/+DUyv/g1cr/4NTK/+DUyv/g1Mr/4NTK/+DUyv/g1cr/4NXK - /+DUyv/g1Mr/4NXK/+DUyv/g1Mr/4NTK/+DUyv/g1Mr/4NTK/+DUyv/Wxrj/lWxJ/4BPJP+ATiTfgE8k - 4IFQJf+DUif/h1cu/4dYL/+HWC//h1gv/4dYLv+HWC7/h1gv/4dYL/+HWC//h1gv/4dYL/+HWC//h1gv - /4dYL/+HVy//h1gv/4dYL/+HWC//h1gv/4dYL/+HVy//h1gv/4dYL/+HWC//h1gv/4dXL/+HWC//h1cv - /4dXL/+HWC//h1gv/4dYL/+HVy//h1gu/4dYL/+HWC//h1gv/4dYL/+HWC//h1gu/4dYL/+HWC//h1gv - /4dXL/+HWC//h1gv/4dYL/+HVy//h1gv/4dYL/+HWC//h1gv/4dYL/+HWC//h1gv/4dYL/+HWC//hVUs - /4JQJf+BUCT/gVAk34FPJOCCUCX/glAl/4JRJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJN+CUCTghFEl/4NRJf+EUSX/hFEl/4NRJf+EUSX/hFEl - /4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSX/hFEl/4RRJf+DUSX/g1El/4NRJf+DUSX/hFEl - /4RRJf+EUSX/hFEl/4RRJf+EUSX/g1El/4NRJf+DUSX/hFEl/4NRJf+DUSX/g1El/4NRJf+DUSX/g1El - /4NRJf+EUSX/g1El/4NRJf+DUSX/g1El/4NRJf+EUSX/g1El/4NRJf+EUSX/hFEl/4NRJf+DUSX/g1El - /4NRJf+DUSX/g1El/4NRJf+EUSX/g1El/4NRJf+DUSX/g1El/4NRJf+DUSTfhFEl4IRRJf+EUiX/hFEl - /4RSJf+EUSX/hVEl/4RRJf+EUiX/hFIl/4VSJf+EUiX/hFIl/4RRJf+EUSX/hFIl/4RSJf+EUSX/hFEl - /4RSJf+FUiX/hFIl/4RSJf+EUSX/hFIl/4RRJf+EUSX/hFIl/4RSJf+EUiX/hFEl/4RSJf+EUiX/hFIl - /4RRJf+EUiX/hFIl/4RSJf+FUiX/hFEl/4RSJf+EUSX/hFIl/4RSJf+EUiX/hVIl/4RSJf+EUSX/hFIl - /4RSJf+EUiX/hFEl/4RSJf+FUiX/hFEl/4RSJf+EUSX/hFEl/4VRJf+EUiX/hVIl/4VSJf+FUSX/hFEk - 34VRJeCFUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4RSJN+FUSXghVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+EUiTfhVEl4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hFIk34VRJeCFUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4RSJN+FUSXghVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+EUiTfhVEl4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hFIk34VRJeCFUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJN+FUSXghVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+EUiTfhVEl4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hFIk34RSJqeEUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFEl - v4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFEl - v4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFEl - v4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFEl - v4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RRJb+EUSW/hFElv4RSJKcAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAACgAAAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAAAAAAAAAAAAAAAAAAAABAKR3SPykc - 8D8pHPA/KRzwPykc8D8pHPA/KRzwPykc8D8pHPA/KRzwPykc8D8pHPA/KRzwPykc8D8pHPA/KRzwPykc - 8EIsIPBJMyfwSTMo8E04LPC/t7Tw/Pz88Pr6+vD6+vrw+vr68Pr6+vD6+vrw+vr68Pr6+vD49/fwkoV/ - 8EEqHvA/KRzwPykc8D8pHPA/KRzwPykc8D8pHPA/KRzwPykc8D8pHPA/KRzwPykc8D8pHPA/KRzwPykc - 8EApHdJAKRzfQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QSoe/46Aef/NyMT/zsjF/9HLyP/y8fD//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //z8/P/V0M7/Uz4z/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHN9AKRzfQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/RjEl/8fBvf/9/f3//Pz8//z8/P/8/Pz/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+/+WiYL/QSoe/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN9AKRzfQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/Tzov/9rW0//8/Pz/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7/+7s7P9mVEr/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN9AKRzfQCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/WEQ5/+Xi4P/8/Pz/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8/9rV0/9POy//QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN9AKRzfQCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/XUk/ - /+ro5v/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8/8nDv/9HMSX/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHN9AKRzfQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/X0tB/+zq6P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8 - /8O8uP9FLyP/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHN9AKRzfQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QSkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/XUk//+ro5v/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v//Pz8/8rDwP9HMSX/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHN9BKhzfTjgs/3lpYP+AcGj/gHBo/4BwaP+AcGj/gHBo - /4BwaP+AcGj/gHBo/4BwaP+AcGj/gHBo/39vZv9YRDj/WEQ5/+Xi4P/8/Pz/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v//Pz8/9vX1P9SPDH/Tzou/3xsY/+AcGj/gHBo/4BwaP+AcGj/gHBo - /4BwaP+AcGj/gHBo/4BwaP+AcGj/gHBo/4BwZ/9uXFL/RS4h/0EqHN9CKh3fgnJp//f29f/6+fn/9fTz - //f29v/7+vr/9vX0//b19f/7+vr/9vX1//b09P/7+vr/9/b2//Ty8f+Mfnb/UTsv/9rV0v/8/Pz/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7/+/t7P9qV0z/WkU5/9zX1f/19PP/+vn5 - //n4+P/19PP/+fj3//r5+f/19PP/+Pf2//r6+v/29PT/9/X1//v7+//i3tz/WkU6/0IqHN9DKx3fi3x0 - //79/f/f29n/gG9m/6idl//r6Ob/iXlx/5eJgf/w7uz/mIqD/4h5cP/q5+b/qZ6X/39uZf+Dcmn/SzMm - /8fAvP/9/f3//Pz8//z8/P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+/+ajob/SDAi - /25bUP99bGL/19LP/8nCvf96aF//wrm1/9vW1P9/bmT/raKc/+nl5P+Hd27/moyF//j49//s6ej/YEs/ - /0MrHd9FLB3fjH10//79/f/Vz8z/V0Ez/419df/k4N//Y05C/3ZjWP/r6Ob/d2Va/2JNQf/j397/jn92 - /1dAM/+ThHz/SjEj/4t8cv/IwLz/yMG9/8vEwP/x7+7//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //z8/P/Z1NH/WUM2/0UsHv9POCr/y8TA/7euqP9QOCr/rqOd/9DJxv9WPjH/k4R8/+Hd2/9gSz7/eWdd - //b19P/s6ej/YUw//0UsHd9GLB3fjX10//79/f/08vH/083J/+Hc2v/49/b/1tDN/9vW0//6+fj/29bT - /9bQzf/49vb/4d3a/9LMyf/c19T/cV1R/0kwIf9MNCX/TTQl/1E4Kf+9tK7//f39//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//6+fn/oJKL/0oxIv9sWEv/5eHf/+zp6P/Rysb/6ebl//Lx8P/SzMj/4t7c - //f29f/Vz8z/3NfU//38/P/s6ej/Y0xA/0YsHd9ILR3fjn50//79/f//////8e7t/7uxq/+2q6T/tquk - /7arpP+2q6T/tquk/7arpP+2q6T/tquk/7arpP+1qqT/iXhu/0owIP9ILh7/SC4e/0kuHv+JeG3/+Pj3 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz/7Orp/31rYP9PNib/jHtx/7WqpP+2q6T/tquk - /7arpP+2q6T/tquk/7arpP/IwLv//Pv7///////q6Ob/Y0w//0ktHd9KLh3fkH90//79/f//////3NbT - /1g/L/9LMB//SzAf/0swH/9LMB//SzAf/0swH/9LMB//SzAf/0swH/9LMB//SzAf/0ovHv9KLx7/Si8e - /0ovHv9fRjf/3tnW//z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8/+Le3P97Z1v/TTIh - /0swH/9LMB//SzAf/0swH/9LMB//SzAf/0swH/95ZFj/8/Lx/+Hc2f+ai4H/Ujgn/1E4Jt9MMB7fkX90 - //79/f//////3NfT/1k/Lv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwHv9MMB7/TDAe - /0wwHv9MMB7/TDAe/0wwHv9OMiD/o5WL//v7+v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //z8/P/o5eP/k4J3/1Y8K/9MMB7/TDAe/0wwHv9MMB7/TDAe/0wwH/9kSzz/jHpv/2NKO/9QNCP/a1RF - /7muqd9NMR7fkoB1//79/f//////3NfT/1pALv9OMR7/TjEf/04xH/9OMR//TjEf/04xH/9OMR//TjEf - /04xH/9OMR//TjEf/04xH/9OMR//TjEf/04xH/9OMR//b1dI/+vo5v/8/Pz/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//8/Pz/9vX0/8i/uf+EcWT/XkQz/1E1Iv9OMh//TjEf/04xH/9PMyD/Vjoo - /21VRv+klYz/5ODe//v7+99QMh7fk4F1//79/f//////3dfT/1xBL/9QMh//UDIf/1AzH/9QMx//UDMf - /1AyH/9QMh//UDIf/1AzH/9QMx//UDIf/1AyH/9QMh//UDMf/1AyH/9bPy3/sqWd//n4+P/8/Pz/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/29fT/3dfU/72zq/+klYv/mYh9 - /52Mgf+vopn/zMS//+vo5v/7+/v//Pz8//v7+99SMx7flIF1//79/f//////3dfT/15CL/9SNB//UjQf - /1I0H/9SNB//UjQf/1I0H/9SNB//UjQf/1I0H/9SNB//UjQf/1I0H/9SNB//UjQf/1s+Kv+xpJv/+Pf3 - //z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8 - //39/f/9/f3//Pz8//z8/P/9/f3//Pz8//z8/P/7+/v/+/v7//v7+99UNB7floJ1//79/f//////3tjT - /2BDL/9UNR//VDUf/1Q1H/9UNR//VDUf/1Q1H/9UNR//VDUf/1Q1H/9UNR//VDUf/1Q1H/9UNR//VDUf - /3RaSf/t6uj//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+99WNSDfl4N1 - //79/f//////3tjT/2JEL/9WNiD/VjYg/1Y2IP9WNh//VjYf/1Y2IP9WNyD/VjYg/1Y2IP9WNiD/VjYf - /1Y2IP9WNiD/VjYg/1w9J/+1ppz/+/r6//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+99ZOCDfmIR1//79/f//////3tjT/2RFMP9ZOCD/WDcg/1k4IP9ZNyD/WTcg/1k4IP9YOCD/WTgg - /1k4IP9ZOCD/WDgg/1k4IP9ZOCD/WDgg/1g3IP9pTDb/z8W+//z8/P/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+99aOSDfmYV1//79/f//////39jT/2ZHMP9bOSD/Wzkg/1s5IP9bOSD/Wzkg - /1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg/1s5IP9bOSD/Wzkg/1s5IP9bOSD/dlpF/9vTzv/8/Pz/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+99cOiDfm4Z2//79/f//////39nU/2hIMP9dOiD/XTog - /106IP9dOiD/XTog/106IP9dOiD/XTog/106IP9dOiD/XTog/106IP9dOiD/XTog/106If9dOiD/Xjsh - /35iTf/d1tH//Pz8//v7+//7+/v/+/v7//z8/P/7+/r//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+99eOyHfnYd2//79/f//////4NnU - /2tJMP9fPCH/Xzwh/188If9fPCH/Xzwg/188If9fPCH/Xzsh/187If9fPCH/Xzwh/188IP9fPCH/YDwh - /188If9fOyH/Xzwh/2A8If9+YUv/187I//z7+//8/Pz//Pz8/+7q5/+plof/yLuy//Lw7v/8/Pz//Pz8 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8//z8/N9hPCHfnod2 - //79/f//////4NnU/21LMf9iPSH/Yj0h/2E9If9hPSH/Yj0h/2E9If9iPSH/Yj0h/2I9If9iPSH/Yj0h - /2I9If9iPSH/Yj0h/2I9If9iPSH/Yj0h/2I9If9iPSH/d1c//8e6sP/49/b/7uvo/5iAbf9kQCT/aEUq - /4htV/+8rKD/5N7Z//j39v/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/8/Pz/8O3q - /9jOxt9kPiHfoIh2//7+/f//////4dnU/29MMf9kPiH/ZD8h/2Q/If9kPyH/ZD8h/2Q+If9kPyH/ZD8h - /2Q/If9kPiH/ZD8h/2Q/If9kPyH/ZD8h/2Q/If9kPyH/ZD4h/2Q+If9kPiH/ZD8h/25LL/+ii3n/k3lk - /2dCJP9kPyH/ZD8h/2Q+If9nQiT/dVM5/7+wpP/9/f3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //z8/P/v6+j/j3Ne/21KLd9mQCHfoYl2//7+/f//////4drU/3JOMf9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai - /2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIv9nQCL/Z0Ai/2dAIf9nQCH/Z0Ai/2dAIf9nQCH/Z0Ai - /2dAIv9oQSL/aEEi/2dAIv9nQCL/Z0Ah/2dAIv9nQCH/Z0Ai/6+bi//9/f3/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//z8/P/q5eH/elg9/2ZAId9qQiLfo4p3//7+/f//////4trU/3VPMv9qQiL/akIi - /2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/2pCIv9qQiL/akIi - /2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/2pCIv9qQiL/akIi/7Gci//9/f3/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/q5eH/fVk9/2pCIt9sQyLfpYt3//7+/f//////4trU - /3dRMv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi - /21DIv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi/21EIv9tRCL/bUQi - /6SKdv/w6+j/+Pf1//v7+v/8/Pz//f39//38/P/8/Pv/+vn5//Xz8f/ZzsX/elU2/2xDIt9wRSLfpox3 - //7+/f//////49vU/3pSMv9wRSL/cEUj/3BFI/9wRSP/cEYj/3BFI/9wRSP/cEUj/3BFIv9wRiP/cEUj - /3BFI/9wRSP/cEUj/3BFIv9wRSP/cEUj/3BFI/9wRSP/cEUj/3BFI/9wRSP/cEUj/3BFI/9wRSP/cEUj - /3BFI/9wRSP/cEUj/3ZNK/+JZkn/mHlg/6WLdf+vl4P/spuJ/7Gah/+rkn3/n4Nr/5FwVf9/WTr/cUYk - /3BFIt9yRiPfqI13//7+/f//////5t7X/4ZgQf99VDP/fVQz/31UM/99VDP/fVQz/31UM/99VDP/fVQz - /31UM/99VDP/fVQz/31UM/99VDP/fVQz/31UM/99VDP/fVQz/31UM/99VDP/fVQz/31UM/99VDP/fVQz - /31UM/99VDP/fVUz/31UM/98VDP/fVQz/31UM/99VDP/fVQz/31UM/99VDP/fVQz/31UM/99VDP/fVQz - /31UM/98UzH/dEkl/3JGI990SCPfqo93//7+/f//////+vj3/+bf2P/k3NX/5NzV/+Tc1f/k3NX/5NzV - /+Tc1f/k3NX/5NzV/+Tc1f/k3NX/5NzV/+Tc1f/k3NX/5NzV/+Tc1f/k3NX/5NzV/+Tc1f/k3NX/5NzV - /+Tc1f/k3NX/5NzV/+Tc1f/k3NX/5NzV/+Tc1f/k3NX/5NzV/+Tc1f/k3NX/5NzV/+Tc1f/k3NX/5NzV - /+Tc1f/k3NX/5NzV/+Tc1f/ZzcL/hl8+/3VII994SiPfq493//7+/f/7+fj/7unk//Tw7f/8+/v/8Orm - //Ht6f/9/Pz/8u3p//Dq5v/8+/r/9PDt/+7p5P/7+fj/9/Tx/+7o4//49vT/+fj2/+7o4//18u//+/r5 - /+/p5f/z7+v//fz7//Dr5//x6+f//fz7//Lu6v/v6uX//Pv6//Xx7//u6OP/+vj3//j18//u6OP/9/Ty - //r59//u6OT/9PHt//z7+v/v6uX/8u3p//7+/v/x7Oj/jGVE/3hKI996SyPfrZB4//7+/f/k2tH/kWtK - /7SahP/t5+L/mXVX/6WFav/y7en/pods/5h0Vf/t5uH/tZuF/5FqSf/i2ND/yLSk/4xkQv/Tw7b/287D - /45mRf+/qJT/59/Y/5RuTv+uknn/8Ovm/557Xv+ffWH/8Ovm/6uOdf+VcFD/6uLc/7ylkf+PZ0b/3dHH - /9DAsv+MZEH/yren/+DVzP+QaUj/uJ+K/+zl3/+XclP/qIlv//r39f/x7en/jmZF/3pLI998TCTfrpF4 - //7+/f/l29P/lW9O/7edh//u6OP/nXlb/6iJbv/y7ur/qotv/5x4Wf/t5+L/uJ6I/5VuTf/j2dH/yram - /5FpR//Uxbj/3M/F/5JrSf/Bqpf/6eDZ/5hzU/+xlX3/8Ovn/6F/Yv+jgWT/8ezn/66ReP+ZdFT/6uPd - /7+ok/+TbEr/3tLI/9LBtP+QaEb/zLmq/+HWzf+UbUz/u6KN/+zl3/+bdlj/q4xy//r39v/y7en/kGdF - /3xMJN9+TSTfq4tw//v5+P/6+Pf/8Orm//Tw7f/7+vn/8ezn//Lu6v/8+/r/8+7q//Hs5//7+vn/9PHt - //Dq5v/6+Pf/9/Tx/+/q5f/49vP/+ff1//Dq5f/28u//+/n4//Dr5v/07+z//Pv6//Ht6P/y7en//Pv6 - //Pv6//w6+b/+/n4//Xy7//w6uX/+ff2//j18//v6uX/9/Ty//r49v/w6uX/9fHu//v6+f/x6+f/8+7q - //38/P/t5uD/j2VA/31NJN+ATiTfil01/6uKbf+vkHX/r5B1/6+Qdf+vkHX/r5B1/6+Qdf+vkHX/r5B1 - /6+Qdf+vkHX/r5B1/6+Qdf+vkHX/r5B1/6+Qdf+vkHX/r5B1/6+Qdf+vkHX/r5B1/6+Qdf+vkHX/r5B1 - /6+Qdf+vkHX/r5B1/6+Qdf+vkHX/r5B1/6+Qdf+vkHX/r5B1/6+Qdf+vkHX/r5B1/6+Qdf+vkHX/r5B1 - /6+Qdf+vkHX/r5B1/6+Qdf+jfl//g1Mp/4BOJN+CUCTfglAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl - /4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJf+CUCX/glAl/4JQJN+DUSTfhFEl/4NRJf+DUSX/hFEl - /4NRJf+DUSX/g1El/4NRJf+DUSX/g1El/4NRJf+EUSX/g1El/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl - /4RRJf+EUSX/g1El/4NRJf+EUSX/g1El/4NRJf+DUSX/hFEl/4NRJf+DUSX/hFEl/4NRJf+EUSX/hFEl - /4NRJf+EUSX/hFEl/4NRJf+DUSX/g1El/4NRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4NRJN+EUiTfhVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4RSJN+EUiTfhVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4RSJN+EUiTfhVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJN+EUiTfhVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJN+EUiTfhVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJN+EUiTfhVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4RSJN+EUiTfhVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4RSJN+EUSSvhFEkyIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEk - yIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEk - yIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEk - yIRRJMiEUSTIhFEkyIRRJMiEUSTIhFEkyIRRJK8AAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6 - BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAA - AAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6 - BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAA - AAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6 - BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAA - AAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcAAAAAAAD6BwAAAAAAAPoHAAAAAAAA+gcoAAAAIAAA - AEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAAAAAAAAAAQCgczkApHetAKR3rQCkd60ApHetAKR3rQCkd - 60ApHetAKR3rQCkd60ApHetRPDHrcGBW63lpYOvb1tTr+vr66/r6+uv6+vrr+vr66/v7++vOyMbrTzku - 60ApHetAKR3rQCkd60ApHetAKR3rQCkd60ApHetAKR3rQCkd60ApHM0/KBzgQCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/5aJgv/z8vL/9fTz//v6+v/7+/v/+/v7//v7+//7+/v/+Pj4 - /4p8df9AKh7/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkc3z8oHOBAKR3/QCkd - /0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9CKx//s6ql//z8/P/7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//o5eT/XUk//0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKRzfPygc - 4EApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0QtIf+/uLT//Pz8//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7/9bRz/9NNyz/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHN8/KBzgQCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/RC4i/8K7t//8/Pz/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/0cvJ/0o0Kf9AKR3/QCkd/0ApHf9AKR3/QCkd/0ApHf9AKR3/QCkd - /0ApHf9AKR3/QCkc30MsH+BjUEb/cF5V/3BeVf9wXlX/cF5V/3BeVf9wXlX/cF5V/25dU/9RPDD/vbSw - //z8/P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//b19X/Uz4z/2NQRf9wXlX/cF5V/3BeVf9wXlX/cF5V - /3BeVf9wXlX/cF5V/1tGO/9BKh3fUz0w4NXQzf/j4N7/2NLQ/+bj4f/Vz8z/6OXk/9PNyv/p5uX/zsjE - /3RiWP+sopz//Pz8//v7+//7+/v/+/v7//v7+//7+/v/+/v7/+/t7f9tWlD/mYyE/9bQzf/o5eP/087L - /+nm5P/Tzcr/6ebl/9PNyv/s6uj/uK+q/0UuId9XQDTg4NzZ/7SqpP+Id27/v7ay/31rYf/Iwbz/dmNZ - /8vEwP9zYFX/c2FW/4JxZ//Tzcn/19HO//Tz8v/7+/v/+/v7//v7+//7+/v/+/v7/6aak/9NNSj/e2lf - /8W9uf93ZVv/ysO//3RiV//LxMD/dWJY/9fSz//Du7b/STEi31lCNODg3Nn/7erp/9fRzv/f29j/0MnF - /+Hd2v/Ox8P/4t7c/87Hw/+5r6r/Vz8x/1E5Kv9XPzH/xr66//v7+//7+/v/+/v7//v7+//7+/v/6OXj - /3BcUP+AbmP/3NfU/87IxP/i3tv/zsfD/+Le3P/W0M3/9vT0/8O7tv9LMiLfXEQ04OHc2f/6+vn/koJ4 - /2hRQ/9nUUP/aFFD/2hRQ/9oUUP/aFFD/2VOQP9PNSX/Si8e/0ovHv+PfnP/+Pj3//v7+//7+/v/+/v7 - //v7+//7+/v/08zI/2xXSv9lTT//aFFD/2hRQ/9oUUP/aFFD/66hmv/p5uP/mIh//1E2KN9eRTXg4dzZ - //n5+P9/a17/TTAe/00wH/9NMB7/TTEe/0wxHv9NMB7/TTEe/00wHv9NMR7/TTAe/19GNv/c19P/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/2tXR/4VxZf9WPCr/TTEf/00wHv9NMB//aFBB/25XSP9xW03/tquk - 32FGNeDi3dr/+vn4/4FsXv9QMh//UDIf/1AyH/9PMh//TzIf/08yH/9PMh//TzIf/08yH/9QMh//a1NC - /93X1P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//7+/v/8/Lx/87Gwf+ik4n/iXZp/4ZyZf+Xhnv/vrSt - /+rn5f/7+/vfZEg14OLd2v/6+fj/g21e/1M0H/9TNB//UzQf/1M0H/9TNB//UzQf/1M0H/9TNB//UzQf - /2JGM//PxsH/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//5+Pj/+Pj3 - //v6+v/8/Pz/+/v7//v7+99mSTbg493a//r5+P+Fbl7/VjYf/1Y2H/9WNiD/VjYf/1Y2IP9WNiD/VjYg - /1Y2H/9WNiD/ZEYx/9HJw//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v732lMNuDj3tr/+vn4/4hwX/9ZOCD/WTgg/1k4IP9ZOCD/WTgg - /1k4IP9ZOCD/WTgg/1k4IP9ZOCD/fWNQ/+Xg3P/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/vfbU024OTe2v/6+fj/inFf/106IP9dOiD/XTog - /106IP9cOiD/XDog/106IP9cOiD/XDog/106IP9eOyL/i3Jg/+nk4f/7+/v/+/v7//v7+//5+Pj/+/v7 - //v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+99vTzfg5N7a//r5+P+Nc1//YDwh - /2A8If9gPCH/YDwh/2A8If9gPCH/YDwh/2A8If9gPCH/YDwh/2A8If9hPiP/i3Fd/+Lb1v/7+/v/3tfR - /56Id//JvbT/7+zq//v7+v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pv/9vX133JRN+Dl39r/+vn4 - /490YP9kPiH/ZD4h/2Q+If9kPiH/ZD4h/2Q+If9kPiH/ZD4h/2Q+If9kPiH/ZD4h/2Q+If9kPyL/f2BI - /7inmf+DZU3/ZD8i/2pFKf+DZU3/wLGk//v7+//7+/v/+/v7//v7+//7+/v//Pz8/97W0P+UemXfd1Q3 - 4Obf2v/6+fj/knZg/2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi/2hBIv9oQSL/aEEi - /2hBIv9oQSL/akMk/2hBIv9oQSL/aEEi/2hBIv+bgW3/+vn5//v7+//7+/v/+/v7//v7+//8/Pz/yLuv - /2pDJN96Vjjg5uDa//r5+P+WeGD/bEMi/2xDIv9sQyL/bEMi/2xDIv9sQyL/bEMi/2xDIv9sQyL/bEMi - /2xDIv9sQyL/bEMi/2xDIv9sQyL/bEMi/2xDIv9sQyL/bEMi/5Z4Yf/u6ub/9/X0//n4+P/6+fj/+Pf2 - //Px7v+9q5z/bUUk335YOODn4Nr/+/n4/5l6Yf9xRiT/cUYk/3FGJP9xRyT/cUck/3FGJP9xRiT/cUYk - /3FGJP9xRiP/cUYj/3FGJP9xRiP/cUYk/3FHJP9xRiT/cUYk/3FGJP9xRiT/dk0r/4pmSf+Xd17/n4Fp - /6CDa/+afGP/j21R/3xVNf9xRSLfgls44Ojg2v/9/Pz/1ci9/8Syo//FsqP/xbKj/8Wyo//FsqP/xbKj - /8Wyo//FsqP/xbKj/8Wyo//FsqP/xbKj/8Wyo//FsqP/xbKj/8Syo//EsqP/xbKj/8Syo//FsqP/xbKj - /8Syo//FsqP/xbKj/8Wyo//FsqP/q5B6/3ZKJd+GXDrg6OHa/+ri3P/d0cf/7ebh/9rNwv/v6uX/2Mq+ - //Dr5//Xyb7/8Ovm/9jLv//v6eX/2s7D/+zl3//e0sj/6ODZ/+LYz//j2dH/59/Y/97Tyf/r5N//287E - /+7p5P/Yy7//8Ovm/9fJvv/w6+f/2Mq+//Tw7P/TxLj/e00o34heOuDp4dr/zLqq/66QeP/TxLb/poZr - /9rMwP+hgGP/3M/E/6B+Yv/bz8T/ooFl/9nLwP+oiW7/0cGz/6+Tev/ItKT/uqGM/7ykj//GsqD/sZV9 - /9C/sf+pinD/18m9/6OBZf/bzsP/oX9i/9zPxf+hf2L/5NrS/9XFuP9+UCnfh1kz4NPCs//i183/3tHG - /+PYz//d0MT/5NnQ/9zPw//k2tH/3M/D/+TZ0P/cz8T/5NnQ/93Qxf/j2M7/3tHG/+HWzP/f08n/4NTJ - /+HWzP/e0sf/4tfO/93Qxf/j2dD/3M/E/+TZ0P/cz8P/5NrR/9zPw//l29L/wamV/4BQJt+BUCXgiVox - /4xfN/+MXzf/jF83/4xeN/+MXjf/jF43/4xeN/+MXjf/jF43/4xfN/+MXjf/jF43/4xeN/+MXjf/jF83 - /4xfN/+MXzf/jF43/4xeN/+MXzf/jF43/4xeN/+MXjf/jF43/4xeN/+MXjf/jF43/4xeN/+HVy3/gVAk - 34RQJOCEUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl - /4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl - /4RRJf+DUSTfhVEl4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4RSJN+FUSXghVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hFIk34VRJeCFUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+EUiTfhVEl4IVSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4RSJN+FUiW3hFEk0YRRJNGEUSTRhFEk - 0YRRJNGEUSTRhFEk0YRRJNGEUSTRhFEk0YRRJNGEUSTRhFEk0YRRJNGEUSTRhFEk0YRRJNGEUSTRhFEk - 0YRRJNGEUSTRhFEk0YRRJNGEUSTRhFEk0YRRJNGEUSTRhFEk0YRRJNGEUSTRhFIktwAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAA - ABAAAAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAD8oHMg/KRzlPykc5T8pHOU/KRzlYU9F - 5b21seXw7u7l+vr65fPy8uV6amPlPykc5T8pHOU/KRzlPykc5UApHMdAKRzfQCkd/0ApHf9AKR3/QCkd - /4Bxaf/4+Pj/+/v7//v7+//i393/V0I4/0ApHf9AKR3/QCkd/0ApHf9AKRzeUTsw32JPRf9iT0X/Yk9F - /2BNQv+KfHT/+fj4//v7+//7+/v/3trY/19MQv9iT0X/Yk9F/2JPRf9iTkT/TDcr3pqMhd+/t7P/u7Kt - /7uyrf+yqKP/jH11/9vX1P/29fX/+/v7/+/u7f+HeG//saeh/7uyrf+7sq3/wrq1/4h4cN6om5Pfz8jD - /5qLgv+ai4H/mImA/3BbTv9fRzn/zMXA//v7+//6+vr/xLy3/49/df+ai4L/nI2E/8jAu/+Id23eq52U - 37uwqf9PMyD/TjEf/04xH/9OMR//UDMh/6iakP/6+vr/+/v7//j49//MxMD/indr/3VfUf+Xhnv/vbSt - 3q2gld+9san/VTYh/1Q1H/9UNR//VDUf/2JFMf/Wz8r/+/v7//v7+//7+/v/+/v7//f29v/x8O7/9vX0 - //v7+96xoZXfwLOp/1w6Iv9bOSD/Wzkg/1s5IP9dOyL/l4Jy/+/s6v/6+fn/9/b1//v7+//7+/v/+/v7 - //v7+//7+/vetKOV38O0qv9jPyP/Yj0h/2I9If9iPSH/Yj0h/2VBJf+ZgW7/va2h/5d+a//Lv7X/+fj3 - //v7+//6+vr/29PN3rillt/Gtqr/a0Mk/2pCIv9qQiL/akIi/2pCIv9qQiL/a0Mj/25GJ/9qQiL/iGdN - /+ji3v/z8O7/7uvn/56Eb968qJbf2M3D/51/Zv+cfmX/nH5l/5x+Zf+cfmX/nH5l/5x+Zf+cfmX/nH5l - /6CDa/+znIn/uqWU/7WfjP+KZ0nevaaT39nLwP/TxLf/1MS3/9PEt//UxLf/1MW4/9PEt//TxLf/08S3 - /9TEt//Uxbj/1MS3/9TEt//ZzMD/rpF53px1VN+ylHr/sZN5/7GTef+xk3n/sZN5/7KTef+xk3j/sZN4 - /7GTeP+xk3n/sZN5/7GTef+xk3n/spR5/5ZtSd6DUSTfhFEl/4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl - /4RRJf+EUSX/hFEl/4RRJf+EUSX/hFEl/4RRJf+EUSTehFIk34VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl - /4VSJf+FUiX/hVIl/4VSJf+FUiX/hVIl/4VSJf+FUiX/hVEk3oVSJL2EUiTZhFIk2YRSJNmEUiTZhFIk - 2YRSJNmEUiTZhFIk2YRSJNmEUiTZhFIk2YRSJNmEUiTZhFIk2YVQJL0AACYAAAAmAAAAJgAAACYAAAAm - AAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYA + AAABAAgAMDAAAAEAIACoJQAAhgAAADAwAAABAAgAqA4AAC4mAAAgIAAAAQAgAKgQAADWNAAAICAAAAEA + CACoCAAAfkUAABgYAAABACAAiAkAACZOAAAYGAAAAQAIAMgGAACuVwAAEBAAAAEAIABoBAAAdl4AABAQ + AAABAAgAaAUAAN5iAAAoAAAAMAAAAGAAAAABACAAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu2UkpItlMxAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7RQM0u1Uv9LtVL/S7NSJQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKtFIfS7VS/0u1 + Uv9LtVL/S7VS/0i2SAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEuz + Uz1LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9ItkgHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAS7NRTku1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7NSJQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABLs1FOS7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0i2 + UzEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEuzUz1LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv/OtgAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASrRSH0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/xsYACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtFAzS7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqqAAMAAAAAAAAAAEu2UkpLtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv/atgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1Uv/MuwAPTLVSUEu1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/0rwAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/9K8ABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv/atgAOAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/8Dkwf9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS////////////bsBk/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//////////////////////9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//////////////////// + /////////////0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//// + ///////////////////////////////////d6sP/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/////////////////////////////////////////////////0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//////////////////////////////////////////////////// + ////////S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//////////////////////////////////// + //////////////////////////////////9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//////////////////// + ////////////////////////////////////////////////////////0uOr/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/wAAAAAAAAAAAAAAAAAAAAAA/wABS7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//// + ////////////////////////////////////////////////////////////////////////V7lZ/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv8AAAAAAAAAAAAA + AAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/////////////////////////////////////////////////////////////////7Dd + rP9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//////////////////////////////////////////////////// + ////////S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9ItlMxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//////////////////////////////////// + /////////////0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0uzUiUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//////////////////// + //////////////////9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/SLZIBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAD/AAFLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//// + ////////////////////////+fff/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9ItkgHAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS//////////////////////9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/9S4ABIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS////////////S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/1L8AGAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/1q6Xf9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv/OtgAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/8bGAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv/atgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/9K8ABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtFHOAAAAAEu1Uv9LtVL/0rwAFwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0q0UdQAAAAAAAAAAAAAAADatgAOAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/SrVS7AAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0q0 + UuIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/SrVS0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9KtVLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0q0UuIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1Uv9KtVLsAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEq0UdQAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD///+f//8AAP///w///wAA///+B/// + AAD///wD//8AAP//+AH//wAA///wAP//AAD//+AAf/8AAP//wAA//wAA//+AAB//AAD/8wAAD/8AAP/g + AAAH/wAA/8AAAAP/AAD/gAAAA/8AAP8AAAAH/wAA/gAAAAP/AAD8AAAAAf8AAPgAAAAA/wAA8AAAAAB/ + AADgAAAAAD8AAMAAAAAAHwAAgAAAAAAPAACAAAAAAAcAAMAAAAAAAwAA4AAAAAABAADwAAAAAAAAAPgA + AAAAAQAA/AAAAAADAAD+AAAAAAcAAP8AAAAADwAA/4AAAAAfAAD/wAAAAD8AAP/gAAAAfwAA/+AAAAD/ + AAD/wAAAAf8AAP/AAAAD/wAA/+AAAAf/AAD/8AAAT/8AAP/4AAD//wAA//wAAf//AAD//gAD//8AAP// + AAf//wAA//+AD///AAD//8Af//8AAP//4D///wAA///wf///AAD///j///8AAP///f///wAAKAAAADAA + AABgAAAAAQAIAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAP9vtzz/cLc8/1+2Rv9RtU//S7VS/0y1 + Uf9NtVH/TrVQ/0+1UP9NtlP/TbZU/062VP9Rt1f/VLla/1W5W/9WuVz/Y7ZD/2C2Rf9htkX/YrZE/2O2 + RP9otkD/Yb5m/2S/aP9mv2j/aMBq/3jHef95x3z/e8h8/3zIfP9+yX//f8qD/4PMiP+R0ZL/ktGS/5TS + lP+V0pX/mdSY/6jaqP+s3Kv/r92t/7Ddrv/G5sL/xufF/8jnxv/L6cj/3fDb/9/x3f/g8d3/4/Pg/+/4 + 7f/x+e//8vnv//r8+P/7/fn//v/+/////v8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQUFAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFBQUFBQAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUFBQUFBQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAUFBQUFBQUFBQUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUF + BQUFBQUFBQUFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUFBQUFBQUFBQUFBQMA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQUFBQUFBQUFBQUFBQYDAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAUFBQUFBQUFBQUFBQUFBQUGAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAUEgAABQUFBQUFBQUFBQUFBQUFBQUFBgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUHBhIFBQUFBQUF + BQUFBQUFBQUFBQUFBQYDAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQcFBQYFBQUFBQUFBQUFBQUFBQUFBQUF + BQUGAwAAAAAAAAAAAAAAAAAAAAAAAAAVBwUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBhIAAAAAAAAA + AAAAAAAAAAAAABUHBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCBUAAAAAAAAAAAAAAAAAAAAAFQcF + BQUFBQUFBQUGBQUFBQUFBQUFBQUFBQUFBQUFEwAAAAAAAAAAAAAAAAAAAAAVBwUFBQUFBQUFBQUgKg8F + BQUFBQUFBQUFBQUFBQUFBQUAAAAAAAAAAAAAAAAAABUHBQUFBQUFBQUFBQUhOTUkDAUFBQUFBQUFBQUF + BQUFBQUFAAAAAAAAAAAAAAAAFQcFBQUFBQUFBQUFBQUhOTk5MR4FBQUFBQUFBQUFBQUFBQUFBQAAAAAA + AAAAAAASBwUFBQUFBQUFBQUFBQUhOTk5OTgsGAUFBQUFBQUFBQUFBQUFBQUAAAAAAAAAAAUFBQUFBQUF + BQUFBQUFBQUhOTk5OTk5NygOBQUFBQUFBQUFBQUFBQUFAAAAAAAABQUFBQUFBQUFBQUFBQUFBQUhOTk5 + OTk5OTkzIwsFBQUFBQUFBQUFBQUFBQAAAAAFBQUFBQUFBQUFBQUFBQUFBQUhOTk5OTk5OTk5OS8bBQUF + BQUFBQUFBQUFBQUAAAAFBQUFBQUFBQUFBQUFBQUFBQUhOTk5OTk5OTk5OTk4KxcFBQUFBQUFBQUFBQUF + AAAABQUFBQUFBQUFBQUFBQUFBQUhOTk5OTk5OTk5OTk5OTYnDQUFBQUFBQUFBQUFBQAAAAUFBQUFBQUF + BQUFBQUFBQUhOTk5OTk5OTk5OTk5OTMiCwUFBQUFBQUFBQUFBQUAAAAFBQUFBQUFBQUFBQUFBQUhOTk5 + OTk5OTk5OTk2KQ4FBQUFBQUFBQUFBQUFBQUAAAAABQUFBQUFBQUFBQUFBQUhOTk5OTk5OTk5OS0ZBQUF + BQUFBQUFBQUFBQUFBQUAAAAAAAUFBQUFBQUFBQUFBQUhOTk5OTk5OTkwHQUFBQUFBQUFBQUFBQUFBQUF + BQAAAAAAAAAFBQUFBQUFBQUFBQUhOTk5OTk5NCUKBQUFBQUFBQUFBQUFBQUFBQUFAAAAAAAAAAAABQUF + BQUFBQUFBQUhOTk5OTcpEAUFBQUFBQUFBQUFBQUFBQUFBQUAAAAAAAAAAAAAAAUFBQUFBQUFBQUhOTk5 + LhoFBQUFBQUFBQUFBQUFBQUFBQUGAwAAAAAAAAAAAAAAAAAFBQUFBQUFBQUhOTIfBQUFBQUFBQUFBQUF + BQUFBQUFBQYDAAAAAAAAAAAAAAAAAAAABQUFBQUFBQUcJgsFBQUFBQUFBQUFBQUFBQUFBQUFBgMAAAAA + AAAAAAAAAAAAAAAAFgcFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUGAwAAAAAAAAAAAAAAAAAAAAAW + CQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQYDAAAAAAAAAAAAAAAAAAAAAAARBwUFBQUFBQUFBQUF + BQUFBQUFBQUFBQUFBQUFBgMAAAAAAAAAAAAAAAAAAAAAAAAAFQcFBQUFBQUFBQUFBQUFBQUFBQUFBQUH + BQUGAwAAAAAAAAAAAAAAAAAAAAAAAAAAABUHBQUFBQUFBQUFBQUFBQUFBQUFBQUBBAYDAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAUBwUFBQUFBQUFBQUFBQUFBQUFBQUAAhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAFAcFBQUFBQUFBQUFBQUFBQUFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQHBQUFBQUF + BQUFBQUFBQUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVBwUFBQUFBQUFBQUFBQUAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQcFBQUFBQUFBQUFBQAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAABQHBQUFBQUFBQUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAVBwUFBQUFBQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQcF + BQUFBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUHBQUFAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVBwUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD///////8AAP///5///wAA////D///AAD///4H//8AAP///AP//wAA///4Af//AAD///AA//8AAP// + 4AB//wAA///AAD//AAD//4AAH/8AAP/zAAAP/wAA/+AAAAf/AAD/wAAAA/8AAP+AAAAD/wAA/wAAAAf/ + AAD+AAAAA/8AAPwAAAAB/wAA+AAAAAD/AADwAAAAAH8AAOAAAAAAPwAAwAAAAAAfAACAAAAAAA8AAIAA + AAAABwAAwAAAAAADAADgAAAAAAEAAPAAAAAAAAAA+AAAAAABAAD8AAAAAAMAAP4AAAAABwAA/wAAAAAP + AAD/gAAAAB8AAP/AAAAAPwAA/+AAAAB/AAD/4AAAAP8AAP/AAAAB/wAA/8AAAAP/AAD/4AAAB/8AAP/w + AABP/wAA//gAAP//AAD//AAB//8AAP/+AAP//wAA//8AB///AAD//4AP//8AAP//wB///wAA///gP/// + AAD///B///8AAP//+P///wAA///9////AAAoAAAAIAAAAEAAAAABACAAAAAAAAAgAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABLtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/AAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtFH+S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv/8/fz/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//z9/P///////////0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtVH/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL//P38//////////////////////9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv/8/fz///////////////////////// + ///q8dP/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAEu1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//z9/P////////////// + ////////////////////////S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAA + AAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL//P38//// + /////////////////////////////////////////////0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv/8/fz/////////////////////////////////////////////////S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS//z9/P//////////////////////////////////////S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL//P38////////////////////////////mspu/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv/8/fz//////////////////v7+/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS//z9/P///////////0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL//P38/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv8AAAAAAAAAAEu1 + Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAEu0Uf5LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uf9LtVL/S7VS/0u1 + Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1 + Uv9LtVL/S7VS/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAEu1Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//v////x////4P///8B///+AP///AB//9gAP/+AAB//AAAP/gA + AH/wAAB/4AAAP8AAAB+AAAAPAAAAB4AAAAPAAAAB4AAAAPAAAAH4AAAD/AAAB/4AAA/+AAAf/AAAP/4A + AH//AAb//4AP///AH///4D////B////4/////f//KAAAACAAAABAAAAAAQAIAAAAAAAACAAAAAAAAAAA + AAAAAAAAAAAAAAAAAP95tzb/erc2/3u3Nf9wtzz/VrZL/1C1T/9RtU7/UrVO/1O1Tf9VtUz/VbZM/0u1 + Uv9NtVH/TrVQ/0+1UP9NtlT/ULdW/1a5W/9gtkb/Y7ZE/2i2QP9bu2D/Zb9p/2vCb/9vw3L/d8d6/33J + fv+NuCr/jrgq/4+4Kf+SuSf/k7kn/5C5Kf+SuSj/hcyG/4fNif+U0pX/l9OY/5bUmf+e15//n9eh/63d + rv+s3bD/uOG5/8jox//Q68//0+zS/97x3f/h8t//5vTl//D47//1+/T/+/36//3+/f//////AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAADAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAADAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAYCAAAAAAAAAAAAAAAAAAAA + AAAAAAAMDAwMDAwMDAwMDAcBAAAAAAAAAAAAAAAAAAAAIAsTDAwMDAwMDAwMDAwMDAcDAAAAAAAAAAAA + AAAAACAJDA4MDAwMDAwMDAwMDAwMDAcDAAAAAAAAAAAAAAAdCQwMDAwMDAwMDAwMDAwMDAwMDAoAAAAA + AAAAAAAAHgkMDAwMDAwMDAwMDAwMDAwMDAwNFAAAAAAAAAAAACAJDAwMDAwMDCkmEAwMDAwMDAwMDAwM + AAAAAAAAAAAhCQwMDAwMDAwMKzcxGwwMDAwMDAwMDAwMAAAAAAAADAcMDAwMDAwMDAwrNzc3LRcMDAwM + DAwMDAwMAAAAAAwMDAwMDAwMDAwMDCs3Nzc3NSoSDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMKzc3Nzc3 + NzMlEAwMDAwMDAwMAAAMDAwMDAwMDAwMDAwrNzc3Nzc3NzcwGgwMDAwMDAwMAAAMDAwMDAwMDAwMDCs3 + Nzc3Nzc3Ny4YDAwMDAwMDAwMAAAMDAwMDAwMDAwMKzc3Nzc3NzIjDAwMDAwMDAwMDAwAAAAMDAwMDAwM + DAwrNzc3NzQoEQwMDAwMDAwMDAwMDAAAAAAMDAwMDAwMDCs3NzYsFgwMDAwMDAwMDAwMDAwAAAAAAAAM + DAwMDAwMKzcvGQwMDAwMDAwMDAwMDAcCAAAAAAAAAAAMDAwMDAwnJAwMDAwMDAwMDAwMDAwHAwAAAAAA + AAAAABUPDAwMDAwMDAwMDAwMDAwMDAwMBwIAAAAAAAAAAAAABQwMDAwMDAwMDAwMDAwMDAwMDAcBAAAA + AAAAAAAAAAAfCQwMDAwMDAwMDAwMDAwMDwwHAgAAAAAAAAAAAAAAAAAfCQwMDAwMDAwMDAwMDAwEBQIA + AAAAAAAAAAAAAAAAAAAcCQwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAeCQwMDAwMDAwMDAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAgCQwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeCQwMDAwM + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdCQwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAi + CAwAAAAAAAAAAAAAAAAAAAAA//+/////H////g////wH///4A///8AH//2AA//4AAH/8AAA/+AAAf/AA + AH/gAAA/wAAAH4AAAA8AAAAHgAAAA8AAAAHgAAAA8AAAAfgAAAP8AAAH/gAAD/4AAB/8AAA//gAAf/8A + Bv//gA///8Af///gP///8H////j////9//8oAAAAGAAAADAAAAABACAAAAAAAAASAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASrRSQUm1 + Ty0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJtU8tS7VS/0u1Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEuz + UVFLtVL/S7VS/0u1Uv9LtVL/SbVPLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASbVPLUu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/8+/ + ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABKtFJBS7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv/UqgAGAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/2S1QV5LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/1L8AGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL///////////9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL//////////////////////0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAA + AAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL///////////////////////// + ///29+b/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/wAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL//////////////////////////////////////0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv8AAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL///////// + /////////////////////////////0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAA + AAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL///////////////////////////+l1ZP/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9JtU8tAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1 + Uv9LtVL//////////////////////0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL///////////9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/0LkAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv/PvwAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/9SqAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u0 + UtJLtVL/1L8AGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1 + Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/SrVR3gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9KtVLyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u0Uc4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1 + Uv9LtVL/SrVS8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKtVHeAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP/z/wD/4f8A/8D/AP+AfwD9AD8A+AAfAPAA + HwDgAA8AwAAHAIAAAwCAAAEAwAAAAOAAAQDwAAMA+AAHAPwADwD4AB8A/AA/AP4A/wD/Af8A/4P/AP/H + /wD/7/8AKAAAABgAAAAwAAAAAQAIAAAAAACABAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9UtUz/VbZM/0u1 + Uv9MtVH/TbVR/061UP9PtVD/TLZT/062VP9SuFj/Vrlc/2W2Qv9htkX/Xr1j/2XAav9qwW7/ccR1/3LF + dv99yYD/iM6L/5PSlv+j2aX/r92w/73kvv/B5sP/yejJ/9ju1//h8uD/6vbp//H58P/3/Pb/+/36//7+ + /v//////AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAA + AAADAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAAAAAAAA + AAAAAAAAAAAAAAADAwMDAwMDAQAAAAAAAAAAAAAAAAANAAMDAwMDAwMDAwEAAAAAAAAAAAAAAAIEBgMD + AwMDAwMDAwMBAAAAAAAAAAAAAgQDAwMDAwMDAwMDAwMEDQAAAAAAAAACBAMDAwMRCQMDAwMDAwMFAwAA + AAAAAAIEAwMDAwMZHBMDAwMDAwMDAwMAAAAABwQDAwMDAwMZIiIaDwMDAwMDAwMDAAADAwMDAwMDAwMZ + IiIiIBcLAwMDAwMDAwADAwMDAwMDAwMZIiIiIiIeFQgDAwMDAwMAAwMDAwMDAwMZIiIiIiIdFAMDAwMD + AwMAAAMDAwMDAwMZIiIiHxYKAwMDAwMDAwMAAAADAwMDAwMZIiEYDgMDAwMDAwMDAwAAAAAAAwMDAwMZ + GxIDAwMDAwMDAwMBAAAAAAAAAAYDAwMQBAMDAwMDAwMDAwEAAAAAAAAADAUDAwMDAwMDAwMDAwMDAQAA + AAAAAAAAAAIEAwMDAwMDAwMDBQUBAAAAAAAAAAAAAAACBAMDAwMDAwMDAwwAAAAAAAAAAAAAAAAAAgQD + AwMDAwMDAAAAAAAAAAAAAAAAAAAAAAIEAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAACBAMDAwAAAAAAAAAA + AAAAAAAAAAAAAAAAAgQDAAAAAAAAAAAAAAD///8A//P/AP/h/wD/wP8A/4B/AP0APwD4AB8A8AAfAOAA + DwDAAAcAgAADAIAAAQDAAAAA4AABAPAAAwD4AAcA/AAPAPgAHwD8AD8A/gD/AP8B/wD/g/8A/8f/AP/v + /wAoAAAAEAAAACAAAAABACAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABLtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS/0u1Uv8AAAAAAAAAAAAA + AAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv//////S7VS/0u1Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAA + AAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/////////////////S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv8AAAAAAAAAAEu1Uv9LtVL/S7VS/0u1Uv9LtVL/S7VS////////////////////////////S7VS/0u1 + Uv9LtVL/S7VS/wAAAAAAAAAAS7VS/0u1Uv9LtVL/S7VS/0u1Uv//////////////////////sN2s/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/////////////////S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS//////9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAABLtVL/S7VS/0u1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu1Uv9LtVL/S7VS/0u1 + Uv9LtVL/S7VS/0u1Uv9LtVL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7VS/0u1 + Uv9LtVL/S7VS/0u1Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABLtVL/S7VS/0u1Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAEu1Uv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9/AAD+PwAA/B8AAPAP + AADgBwAAwAcAAIADAAAAAQAAgAAAAMABAADgAwAA4AcAAPAPAAD4PwAA/H8AAP7/AAAoAAAAEAAAACAA + AAABAAgAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAA/0+1T/9QtU//VLVM/1W2TP9LtVL/TLVR/021 + Uf9PtVD/U7hZ/1a5XP9hvmb/ZsBr/3bGev99yYH/qNuq/6/esf+y37T/uOK6/8Lmw//K6cr/1u7X//n8 + +f/7/fv////+/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAFBQUAAAAAAAAAAAAAAAAFBQUF + BQAAAAAAAAAAAAAFBQUFBQYDAAAAAAAAAAQBBQUFBQUFBgMAAAAAAAQGBQUFBQUFBQUIAAAAAAQGBQUF + Eg4FBQUFBQUAAAUGBQUFBRUYFAwFBQUFBQAFBQUFBQUVGBgXEAoFBQUFBQUFBQUFFRgYFg8JBQUFBQAF + BQUFBRUYEwsFBQUFBQUAAAUFBQURDQUFBQUFBgMAAAAAAgUFBQUFBQUFBgMAAAAAAAQGBQUFBQUFAQMA + AAAAAAAABAYFBQUFBQAAAAAAAAAAAAAEBgUFBQAAAAAAAAAAAAAAAAQHBQAAAAAAAAD/fwAA/j8AAPwf + AADwDwAA4AcAAMAHAACAAwAAAAEAAIAAAADAAQAA4AMAAOAHAADwDwAA+D8AAPx/AAD+/wAA </value> </data> </root>
\ No newline at end of file diff --git a/MediaBrowser.ServerApplication/SplashLogo2.png b/MediaBrowser.ServerApplication/SplashLogo2.png Binary files differnew file mode 100644 index 000000000..abb73577e --- /dev/null +++ b/MediaBrowser.ServerApplication/SplashLogo2.png diff --git a/MediaBrowser.ServerApplication/Updates/ApplicationUpdater.cs b/MediaBrowser.ServerApplication/Updates/ApplicationUpdater.cs index 9f3e44cb0..08c8a4dea 100644 --- a/MediaBrowser.ServerApplication/Updates/ApplicationUpdater.cs +++ b/MediaBrowser.ServerApplication/Updates/ApplicationUpdater.cs @@ -21,27 +21,38 @@ namespace MediaBrowser.ServerApplication.Updates version = File.ReadAllText(archive + ".ver"); } + var systemPath = appPaths.ProgramSystemPath; + var tempPath = Path.GetTempPath(); + // Use our installer passing it the specific archive // We need to copy to a temp directory and execute it there - var source = Path.Combine(appPaths.ProgramSystemPath, UpdaterExe); + var source = Path.Combine(systemPath, UpdaterExe); logger.Info("Copying updater to temporary location"); - var tempUpdater = Path.Combine(Path.GetTempPath(), UpdaterExe); + var tempUpdater = Path.Combine(tempPath, UpdaterExe); File.Copy(source, tempUpdater, true); - source = Path.Combine(appPaths.ProgramSystemPath, UpdaterDll); - var tempUpdaterDll = Path.Combine(Path.GetTempPath(), UpdaterDll); + source = Path.Combine(systemPath, UpdaterDll); + var tempUpdaterDll = Path.Combine(tempPath, UpdaterDll); logger.Info("Copying updater dependencies to temporary location"); File.Copy(source, tempUpdaterDll, true); - const string product = "server"; + var product = "server"; // Our updater needs SS and ionic - source = Path.Combine(appPaths.ProgramSystemPath, "ServiceStack.Text.dll"); - File.Copy(source, Path.Combine(Path.GetTempPath(), "ServiceStack.Text.dll"), true); - source = Path.Combine(appPaths.ProgramSystemPath, "SharpCompress.dll"); - File.Copy(source, Path.Combine(Path.GetTempPath(), "SharpCompress.dll"), true); + source = Path.Combine(systemPath, "ServiceStack.Text.dll"); + File.Copy(source, Path.Combine(tempPath, "ServiceStack.Text.dll"), true); + source = Path.Combine(systemPath, "SharpCompress.dll"); + File.Copy(source, Path.Combine(tempPath, "SharpCompress.dll"), true); logger.Info("Starting updater process."); - Process.Start(tempUpdater, string.Format("product={0} archive=\"{1}\" caller={2} pismo=false version={3} service={4} installpath=\"{5}\"", product, archive, Process.GetCurrentProcess().Id, version, restartServiceName ?? string.Empty, appPaths.ProgramDataPath)); + + // installpath = program data folder + // startpath = executable to launch + // systempath = folder containing installation + var args = string.Format("product={0} archive=\"{1}\" caller={2} pismo=false version={3} service={4} installpath=\"{5}\" startpath=\"{6}\" systempath=\"{7}\"", + product, archive, Process.GetCurrentProcess().Id, version, restartServiceName ?? string.Empty, appPaths.ProgramDataPath, appPaths.ApplicationPath, systemPath); + + logger.Info("Args: {0}", args); + Process.Start(tempUpdater, args); // That's it. The installer will do the work once we exit } diff --git a/MediaBrowser.WebDashboard/Api/DashboardService.cs b/MediaBrowser.WebDashboard/Api/DashboardService.cs index 119e92cd1..ce8ad58dd 100644 --- a/MediaBrowser.WebDashboard/Api/DashboardService.cs +++ b/MediaBrowser.WebDashboard/Api/DashboardService.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Common.Extensions; +using System.Text; +using MediaBrowser.Common.Extensions; using MediaBrowser.Common.IO; using MediaBrowser.Controller; using MediaBrowser.Controller.Configuration; @@ -13,10 +14,10 @@ using ServiceStack; using ServiceStack.Web; using System; using System.Collections.Generic; -using System.Globalization; using System.IO; using System.Linq; using System.Threading.Tasks; +using WebMarkupMin.Core.Minifiers; namespace MediaBrowser.WebDashboard.Api { @@ -271,6 +272,12 @@ namespace MediaBrowser.WebDashboard.Api return Path.GetExtension(path).EndsWith("html", StringComparison.OrdinalIgnoreCase); } + private void CopyFile(string src, string dst) + { + Directory.CreateDirectory(Path.GetDirectoryName(dst)); + File.Copy(src, dst, true); + } + public async Task<object> Get(GetDashboardPackage request) { var path = Path.Combine(_serverConfigurationManager.ApplicationPaths.ProgramDataPath, @@ -282,7 +289,7 @@ namespace MediaBrowser.WebDashboard.Api } catch (IOException) { - + } var creator = GetPackageCreator(); @@ -291,19 +298,102 @@ namespace MediaBrowser.WebDashboard.Api var culture = "en-US"; - var appVersion = DateTime.UtcNow.Ticks.ToString(CultureInfo.InvariantCulture); + var appVersion = _appHost.ApplicationVersion.ToString(); var mode = request.Mode; + if (string.Equals(mode, "cordova", StringComparison.OrdinalIgnoreCase)) + { + // Overwrite certain files with cordova specific versions + var cordovaVersion = Path.Combine(path, "cordova", "registrationservices.js"); + File.Copy(cordovaVersion, Path.Combine(path, "scripts", "registrationservices.js"), true); + File.Delete(cordovaVersion); + + // Delete things that are unneeded in an attempt to keep the output as trim as possible + Directory.Delete(Path.Combine(path, "css", "images", "tour"), true); + Directory.Delete(Path.Combine(path, "apiclient", "alt"), true); + + File.Delete(Path.Combine(path, "thirdparty", "jquerymobile-1.4.5", "jquery.mobile-1.4.5.min.map")); + + Directory.Delete(Path.Combine(path, "bower_components"), true); + Directory.Delete(Path.Combine(path, "thirdparty", "viblast"), true); + + // But we do need this + CopyFile(Path.Combine(creator.DashboardUIPath, "bower_components", "webcomponentsjs", "webcomponents-lite.min.js"), Path.Combine(path, "bower_components", "webcomponentsjs", "webcomponents-lite.min.js")); + CopyFile(Path.Combine(creator.DashboardUIPath, "bower_components", "velocity", "velocity.min.js"), Path.Combine(path, "bower_components", "velocity", "velocity.min.js")); + CopyDirectory(Path.Combine(creator.DashboardUIPath, "bower_components", "swipebox", "src", "css"), Path.Combine(path, "bower_components", "swipebox", "src", "css")); + CopyDirectory(Path.Combine(creator.DashboardUIPath, "bower_components", "swipebox", "src", "js"), Path.Combine(path, "bower_components", "swipebox", "src", "js")); + CopyDirectory(Path.Combine(creator.DashboardUIPath, "bower_components", "swipebox", "src", "img"), Path.Combine(path, "bower_components", "swipebox", "src", "img")); + } + + MinifyCssDirectory(Path.Combine(path, "css")); + MinifyJsDirectory(Path.Combine(path, "scripts")); + MinifyJsDirectory(Path.Combine(path, "apiclient")); + MinifyJsDirectory(Path.Combine(path, "voice")); + await DumpHtml(creator.DashboardUIPath, path, mode, culture, appVersion); await DumpJs(creator.DashboardUIPath, path, mode, culture, appVersion); await DumpFile("scripts/all.js", Path.Combine(path, "scripts", "all.js"), mode, culture, appVersion).ConfigureAwait(false); await DumpFile("css/all.css", Path.Combine(path, "css", "all.css"), mode, culture, appVersion).ConfigureAwait(false); - + return ""; } + private void MinifyCssDirectory(string path) + { + foreach (var file in Directory.GetFiles(path, "*.css", SearchOption.AllDirectories)) + { + try + { + var text = File.ReadAllText(file, Encoding.UTF8); + + var result = new KristensenCssMinifier().Minify(text, false, Encoding.UTF8); + + if (result.Errors.Count > 0) + { + Logger.Error("Error minifying css: " + result.Errors[0].Message); + } + else + { + text = result.MinifiedContent; + File.WriteAllText(file, text, Encoding.UTF8); + } + } + catch (Exception ex) + { + Logger.ErrorException("Error minifying css", ex); + } + } + } + + private void MinifyJsDirectory(string path) + { + foreach (var file in Directory.GetFiles(path, "*.js", SearchOption.AllDirectories)) + { + try + { + var text = File.ReadAllText(file, Encoding.UTF8); + + var result = new CrockfordJsMinifier().Minify(text, false, Encoding.UTF8); + + if (result.Errors.Count > 0) + { + Logger.Error("Error minifying javascript: " + result.Errors[0].Message); + } + else + { + text = result.MinifiedContent; + File.WriteAllText(file, text, Encoding.UTF8); + } + } + catch (Exception ex) + { + Logger.ErrorException("Error minifying css", ex); + } + } + } + private async Task DumpHtml(string source, string destination, string mode, string culture, string appVersion) { foreach (var file in Directory.GetFiles(source, "*.html", SearchOption.TopDirectoryOnly)) @@ -312,6 +402,19 @@ namespace MediaBrowser.WebDashboard.Api await DumpFile(filename, Path.Combine(destination, filename), mode, culture, appVersion).ConfigureAwait(false); } + + var excludeFiles = new List<string>(); + + if (string.Equals(mode, "cordova", StringComparison.OrdinalIgnoreCase)) + { + excludeFiles.Add("supporter.html"); + excludeFiles.Add("supporterkey.html"); + } + + foreach (var file in excludeFiles) + { + File.Delete(Path.Combine(destination, file)); + } } private async Task DumpJs(string source, string mode, string destination, string culture, string appVersion) diff --git a/MediaBrowser.WebDashboard/Api/PackageCreator.cs b/MediaBrowser.WebDashboard/Api/PackageCreator.cs index 34a7f0eac..c50f98c33 100644 --- a/MediaBrowser.WebDashboard/Api/PackageCreator.cs +++ b/MediaBrowser.WebDashboard/Api/PackageCreator.cs @@ -38,17 +38,17 @@ namespace MediaBrowser.WebDashboard.Api string appVersion, bool enableMinification) { - var isHtml = IsHtml(path); - Stream resourceStream; if (path.Equals("scripts/all.js", StringComparison.OrdinalIgnoreCase)) { resourceStream = await GetAllJavascript(mode, localizationCulture, appVersion, enableMinification).ConfigureAwait(false); + enableMinification = false; } else if (path.Equals("css/all.css", StringComparison.OrdinalIgnoreCase)) { resourceStream = await GetAllCss(enableMinification).ConfigureAwait(false); + enableMinification = false; } else { @@ -59,9 +59,26 @@ namespace MediaBrowser.WebDashboard.Api { // Don't apply any caching for html pages // jQuery ajax doesn't seem to handle if-modified-since correctly - if (isHtml && path.IndexOf("cordovaindex.html", StringComparison.OrdinalIgnoreCase) == -1) + if (IsFormat(path, "html")) + { + if (IsCoreHtml(path)) + { + resourceStream = await ModifyHtml(resourceStream, mode, localizationCulture, enableMinification).ConfigureAwait(false); + } + } + else if (IsFormat(path, "js")) { - resourceStream = await ModifyHtml(resourceStream, mode, localizationCulture, enableMinification).ConfigureAwait(false); + if (path.IndexOf("thirdparty", StringComparison.OrdinalIgnoreCase) == -1) + { + resourceStream = await ModifyJs(resourceStream, enableMinification).ConfigureAwait(false); + } + } + else if (IsFormat(path, "css")) + { + if (path.IndexOf("thirdparty", StringComparison.OrdinalIgnoreCase) == -1) + { + resourceStream = await ModifyCss(resourceStream, enableMinification).ConfigureAwait(false); + } } } @@ -72,10 +89,11 @@ namespace MediaBrowser.WebDashboard.Api /// Determines whether the specified path is HTML. /// </summary> /// <param name="path">The path.</param> + /// <param name="format">The format.</param> /// <returns><c>true</c> if the specified path is HTML; otherwise, <c>false</c>.</returns> - private bool IsHtml(string path) + private bool IsFormat(string path, string format) { - return Path.GetExtension(path).EndsWith("html", StringComparison.OrdinalIgnoreCase); + return Path.GetExtension(path).EndsWith(format, StringComparison.OrdinalIgnoreCase); } /// <summary> @@ -102,7 +120,122 @@ namespace MediaBrowser.WebDashboard.Api /// <returns>System.String.</returns> private string GetDashboardResourcePath(string virtualPath) { - return Path.Combine(DashboardUIPath, virtualPath.Replace('/', Path.DirectorySeparatorChar)); + var rootPath = DashboardUIPath; + + var fullPath = Path.Combine(rootPath, virtualPath.Replace('/', Path.DirectorySeparatorChar)); + + try + { + fullPath = Path.GetFullPath(fullPath); + } + catch (Exception ex) + { + _logger.ErrorException("Error in Path.GetFullPath", ex); + } + + // Don't allow file system access outside of the source folder + if (!_fileSystem.ContainsSubPath(rootPath, fullPath)) + { + throw new UnauthorizedAccessException(); + } + + return fullPath; + } + + public async Task<Stream> ModifyCss(Stream sourceStream, bool enableMinification) + { + using (sourceStream) + { + string content; + + using (var memoryStream = new MemoryStream()) + { + await sourceStream.CopyToAsync(memoryStream).ConfigureAwait(false); + + content = Encoding.UTF8.GetString(memoryStream.ToArray()); + + if (enableMinification) + { + try + { + var result = new KristensenCssMinifier().Minify(content, false, Encoding.UTF8); + + if (result.Errors.Count > 0) + { + _logger.Error("Error minifying css: " + result.Errors[0].Message); + } + else + { + content = result.MinifiedContent; + } + } + catch (Exception ex) + { + _logger.ErrorException("Error minifying css", ex); + } + } + } + + var bytes = Encoding.UTF8.GetBytes(content); + + return new MemoryStream(bytes); + } + } + + public async Task<Stream> ModifyJs(Stream sourceStream, bool enableMinification) + { + using (sourceStream) + { + string content; + + using (var memoryStream = new MemoryStream()) + { + await sourceStream.CopyToAsync(memoryStream).ConfigureAwait(false); + + content = Encoding.UTF8.GetString(memoryStream.ToArray()); + + if (enableMinification) + { + try + { + var result = new CrockfordJsMinifier().Minify(content, false, Encoding.UTF8); + + if (result.Errors.Count > 0) + { + _logger.Error("Error minifying javascript: " + result.Errors[0].Message); + } + else + { + content = result.MinifiedContent; + } + } + catch (Exception ex) + { + _logger.ErrorException("Error minifying javascript", ex); + } + } + } + + var bytes = Encoding.UTF8.GetBytes(content); + + return new MemoryStream(bytes); + } + } + + private bool IsCoreHtml(string path) + { + if (path.IndexOf("vulcanize", StringComparison.OrdinalIgnoreCase) != -1) + { + return false; + } + + path = GetDashboardResourcePath(path); + var parent = Path.GetDirectoryName(path); + + var basePath = DashboardUIPath; + + return string.Equals(basePath, parent, StringComparison.OrdinalIgnoreCase) || + string.Equals(Path.Combine(basePath, "voice"), parent, StringComparison.OrdinalIgnoreCase); } /// <summary> @@ -125,13 +258,20 @@ namespace MediaBrowser.WebDashboard.Api html = Encoding.UTF8.GetString(memoryStream.ToArray()); + if (string.Equals(mode, "cordova", StringComparison.OrdinalIgnoreCase)) + { + html = ModifyForCordova(html); + } + if (!string.IsNullOrWhiteSpace(localizationCulture)) { var lang = localizationCulture.Split('-').FirstOrDefault(); html = _localization.LocalizeDocument(html, localizationCulture, GetLocalizationToken); - html = html.Replace("<html>", "<html lang=\"" + lang + "\">"); + html = html.Replace("<html>", "<html lang=\"" + lang + "\">") + .Replace("<body>", "<body><paper-drawer-panel class=\"mainDrawerPanel mainDrawerPanelPreInit\" forceNarrow><div class=\"mainDrawer\" drawer></div><div main><div class=\"pageContainer\">") + .Replace("</body>", "</div></div></paper-drawer-panel></body>"); } if (enableMinification) @@ -164,7 +304,17 @@ namespace MediaBrowser.WebDashboard.Api var version = GetType().Assembly.GetName().Version; - html = html.Replace("<head>", "<head>" + GetMetaTags(mode) + GetCommonCss(mode, version) + GetCommonJavascript(mode, version)); + var imports = new string[] + { + "vulcanize-out.html" + }; + var importsHtml = string.Join("", imports.Select(i => "<link rel=\"import\" href=\"" + i + "\">").ToArray()); + + // It would be better to make polymer completely dynamic and loaded on demand, but seeing issues with that + // In chrome it is causing the body to be hidden while loading, which leads to width-check methods to return 0 for everything + //imports = ""; + + html = html.Replace("<head>", "<head>" + GetMetaTags(mode) + GetCommonCss(mode, version) + GetCommonJavascript(mode, version) + importsHtml); var bytes = Encoding.UTF8.GetBytes(html); @@ -172,6 +322,39 @@ namespace MediaBrowser.WebDashboard.Api } } + private string ModifyForCordova(string html) + { + // Strip everything between CORDOVA_EXCLUDE_START and CORDOVA_EXCLUDE_END + html = ReplaceBetween(html, "<!--CORDOVA_EXCLUDE_START-->", "<!--CORDOVA_EXCLUDE_END-->", string.Empty); + + // Replace CORDOVA_REPLACE_SUPPORTER_SUBMIT_START + html = ReplaceBetween(html, "<!--CORDOVA_REPLACE_SUPPORTER_SUBMIT_START-->", "<!--CORDOVA_REPLACE_SUPPORTER_SUBMIT_END-->", "<i class=\"fa fa-check\"></i><span>${ButtonPurchase}</span>"); + + return html; + } + + private string ReplaceBetween(string html, string startToken, string endToken, string newHtml) + { + var start = html.IndexOf(startToken, StringComparison.OrdinalIgnoreCase); + + if (start == -1) + { + return html; + } + + var end = html.IndexOf(endToken, start, StringComparison.OrdinalIgnoreCase); + + if (end == -1) + { + return html; + } + + string result = html.Substring(start, end - start); + html = html.Replace(result, newHtml); + + return ReplaceBetween(html, startToken, endToken, newHtml); + } + private string GetLocalizationToken(string phrase) { return "${" + phrase + "}"; @@ -187,13 +370,13 @@ namespace MediaBrowser.WebDashboard.Api if (string.Equals(mode, "cordova", StringComparison.OrdinalIgnoreCase)) { - sb.Append("<meta http-equiv=\"Content-Security-Policy\" content=\"default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'\">"); + //sb.Append("<meta http-equiv=\"Content-Security-Policy\" content=\"default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'\">"); } sb.Append("<meta http-equiv=\"X-UA-Compatibility\" content=\"IE=Edge\">"); sb.Append("<meta name=\"format-detection\" content=\"telephone=no\">"); sb.Append("<meta name=\"msapplication-tap-highlight\" content=\"no\">"); - sb.Append("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no\">"); + sb.Append("<meta name=\"viewport\" content=\"user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width\">"); sb.Append("<meta name=\"apple-mobile-web-app-capable\" content=\"yes\">"); sb.Append("<meta name=\"mobile-web-app-capable\" content=\"yes\">"); sb.Append("<meta name=\"application-name\" content=\"Emby\">"); @@ -201,6 +384,14 @@ namespace MediaBrowser.WebDashboard.Api sb.Append("<meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />"); + // Open graph tags + sb.Append("<meta property=\"og:title\" content=\"Emby\" />"); + sb.Append("<meta property=\"og:site_name\" content=\"Emby\"/>"); + sb.Append("<meta property=\"og:url\" content=\"http://emby.media\" />"); + sb.Append("<meta property=\"og:description\" content=\"Energize your media.\" />"); + sb.Append("<meta property=\"og:type\" content=\"article\" />"); + sb.Append("<meta property=\"fb:app_id\" content=\"1618309211750238\" />"); + // http://developer.apple.com/library/ios/#DOCUMENTATION/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html sb.Append("<link rel=\"apple-touch-icon\" href=\"css/images/touchicon.png\" />"); sb.Append("<link rel=\"apple-touch-icon\" sizes=\"72x72\" href=\"css/images/touchicon72.png\" />"); @@ -208,7 +399,7 @@ namespace MediaBrowser.WebDashboard.Api sb.Append("<link rel=\"apple-touch-startup-image\" href=\"css/images/iossplash.png\" />"); sb.Append("<link rel=\"shortcut icon\" href=\"css/images/favicon.ico\" />"); sb.Append("<meta name=\"msapplication-TileImage\" content=\"css/images/touchicon144.png\">"); - sb.Append("<meta name=\"msapplication-TileColor\" content=\"#23456B\">"); + sb.Append("<meta name=\"msapplication-TileColor\" content=\"#333333\">"); return sb.ToString(); } @@ -225,7 +416,6 @@ namespace MediaBrowser.WebDashboard.Api var files = new[] { - "thirdparty/jquerymobile-1.4.5/jquery.mobile-1.4.5.min.css", "thirdparty/fontawesome/css/font-awesome.min.css" + versionString, "css/all.css" + versionString }; @@ -273,9 +463,10 @@ namespace MediaBrowser.WebDashboard.Api var memoryStream = new MemoryStream(); var newLineBytes = Encoding.UTF8.GetBytes(Environment.NewLine); - // jQuery + jQuery mobile + await AppendResource(memoryStream, "bower_components/webcomponentsjs/webcomponents-lite.min.js", newLineBytes).ConfigureAwait(false); + await AppendResource(memoryStream, "thirdparty/jquery-2.1.1.min.js", newLineBytes).ConfigureAwait(false); - await AppendResource(memoryStream, "thirdparty/jquerymobile-1.4.5/jquery.mobile-1.4.5.min.js", newLineBytes).ConfigureAwait(false); + await AppendResource(memoryStream, "thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.min.js", newLineBytes).ConfigureAwait(false); await AppendResource(memoryStream, "thirdparty/browser.js", newLineBytes).ConfigureAwait(false); @@ -283,7 +474,14 @@ namespace MediaBrowser.WebDashboard.Api await AppendResource(memoryStream, "thirdparty/jquery.unveil-custom.js", newLineBytes).ConfigureAwait(false); - await AppendLocalization(memoryStream, culture).ConfigureAwait(false); + var excludePhrases = new List<string>(); + + if (string.Equals(mode, "cordova", StringComparison.OrdinalIgnoreCase)) + { + excludePhrases.Add("paypal"); + } + + await AppendLocalization(memoryStream, culture, excludePhrases).ConfigureAwait(false); await memoryStream.WriteAsync(newLineBytes, 0, newLineBytes.Length).ConfigureAwait(false); if (!string.IsNullOrWhiteSpace(mode)) @@ -303,34 +501,19 @@ namespace MediaBrowser.WebDashboard.Api var apiClientFiles = new[] { - "thirdparty/apiclient/logger.js", - "thirdparty/apiclient/md5.js", - "thirdparty/apiclient/sha1.js", - "thirdparty/apiclient/store.js", - "thirdparty/apiclient/network.js", - "thirdparty/apiclient/device.js", - "thirdparty/apiclient/credentials.js", - "thirdparty/apiclient/ajax.js", - "thirdparty/apiclient/events.js", - "thirdparty/apiclient/deferred.js", - "thirdparty/apiclient/apiclient.js", - "thirdparty/apiclient/connectservice.js" + "apiclient/logger.js", + "apiclient/md5.js", + "apiclient/sha1.js", + "apiclient/store.js", + "apiclient/device.js", + "apiclient/credentials.js", + "apiclient/ajax.js", + "apiclient/events.js", + "apiclient/deferred.js", + "apiclient/apiclient.js" }.ToList(); - if (string.Equals(mode, "cordova", StringComparison.OrdinalIgnoreCase)) - { - apiClientFiles.Add("thirdparty/cordova/serverdiscovery.js"); - } - else - { - apiClientFiles.Add("thirdparty/apiclient/serverdiscovery.js"); - } - apiClientFiles.Add("thirdparty/apiclient/connectionmanager.js"); - - if (string.Equals(mode, "cordova", StringComparison.OrdinalIgnoreCase)) - { - apiClientFiles.Add("thirdparty/cordova/remotecontrols.js"); - } + apiClientFiles.Add("apiclient/connectionmanager.js"); foreach (var file in apiClientFiles) { @@ -397,165 +580,48 @@ namespace MediaBrowser.WebDashboard.Api "site.js", "librarybrowser.js", "librarylist.js", - "editorsidebar.js", "librarymenu.js", "mediacontroller.js", - "chromecast.js", "backdrops.js", "sync.js", - "syncjob.js", - "appservices.js", "playlistmanager.js", - + "appsettings.js", "mediaplayer.js", "mediaplayer-video.js", "nowplayingbar.js", - "nowplayingpage.js", - "taskbutton.js", - - "ratingdialog.js", - "aboutpage.js", "alphapicker.js", - "addpluginpage.js", - "advancedconfigurationpage.js", - "metadataadvanced.js", - "autoorganizetv.js", - "autoorganizelog.js", - "channels.js", - "channelslatest.js", - "channelitems.js", - "channelsettings.js", - "connectlogin.js", - "dashboardgeneral.js", - "dashboardhosting.js", - "dashboardpage.js", - "device.js", - "devices.js", - "devicesupload.js", "directorybrowser.js", - "dlnaprofile.js", - "dlnaprofiles.js", - "dlnasettings.js", - "dlnaserversettings.js", - "editcollectionitems.js", - "edititemmetadata.js", - "edititemimages.js", - "edititemsubtitles.js", - - "playbackconfiguration.js", - "cinemamodeconfiguration.js", - "encodingsettings.js", - - "externalplayer.js", - "favorites.js", - "forgotpassword.js", - "forgotpasswordpin.js", - "gamesrecommendedpage.js", - "gamesystemspage.js", - "gamespage.js", - "gamegenrepage.js", - "gamestudiospage.js", - "homelatest.js", - "indexpage.js", - "itembynamedetailpage.js", - "itemdetailpage.js", - "itemlistpage.js", - "kids.js", - "librarypathmapping.js", - "reports.js", - "librarysettings.js", - "livetvchannel.js", - "livetvchannels.js", - "livetvguide.js", - "livetvitems.js", - "livetvnewrecording.js", - "livetvprogram.js", - "livetvrecording.js", - "livetvrecordinglist.js", - "livetvrecordings.js", - "livetvtimer.js", - "livetvseriestimer.js", - "livetvseriestimers.js", - "livetvsettings.js", - "livetvsuggested.js", - "livetvstatus.js", - "livetvtimers.js", - - "loginpage.js", - "logpage.js", - "medialibrarypage.js", - "metadataconfigurationpage.js", - "metadataimagespage.js", - "metadatasubtitles.js", - "metadatanfo.js", - "moviegenres.js", "moviecollections.js", - "movies.js", - "moviepeople.js", - "moviesrecommended.js", - "moviestudios.js", - "movietrailers.js", - "musicalbums.js", - "musicalbumartists.js", - "musicartists.js", - "musicgenres.js", - "musicrecommended.js", - "musicvideos.js", - - "mypreferencesdisplay.js", - "mypreferenceslanguages.js", - "mypreferenceswebclient.js", - "notifications.js", - "notificationlist.js", - "notificationsetting.js", - "notificationsettings.js", - "photos.js", - "playlists.js", - "playlistedit.js", - - "plugincatalogpage.js", - "pluginspage.js", "remotecontrol.js", - "scheduledtaskpage.js", - "scheduledtaskspage.js", "search.js", - "selectserver.js", - "serversecurity.js", - "songs.js", - "streamingsettings.js", - "supporterkeypage.js", - "supporterpage.js", - "syncactivity.js", - "syncsettings.js", - "episodes.js", - "thememediaplayer.js", - "tvgenres.js", - "tvlatest.js", - "tvpeople.js", - "tvrecommended.js", - "tvshows.js", - "tvstudios.js", - "tvupcoming.js", - "useredit.js", - "usernew.js", - "myprofile.js", - "userpassword.js", - "userprofilespage.js", - "userparentalcontrol.js", - "userlibraryaccess.js", - "wizardagreement.js", - "wizardfinishpage.js", - "wizardservice.js", - "wizardstartpage.js", - "wizardsettings.js", - "wizarduserpage.js" + "thememediaplayer.js" }; } - private async Task AppendLocalization(Stream stream, string culture) + private async Task AppendLocalization(Stream stream, string culture, List<string> excludePhrases) { - var js = "window.localizationGlossary=" + _jsonSerializer.SerializeToString(_localization.GetJavaScriptLocalizationDictionary(culture)); + var dictionary = _localization.GetJavaScriptLocalizationDictionary(culture); + + if (excludePhrases.Count > 0) + { + var removes = new List<string>(); + + foreach (var pair in dictionary) + { + if (excludePhrases.Any(i => pair.Key.IndexOf(i, StringComparison.OrdinalIgnoreCase) != -1 || pair.Value.IndexOf(i, StringComparison.OrdinalIgnoreCase) != -1)) + { + removes.Add(pair.Key); + } + } + + foreach (var remove in removes) + { + dictionary.Remove(remove); + } + } + + var js = "window.localizationGlossary=" + _jsonSerializer.SerializeToString(dictionary); var bytes = Encoding.UTF8.GetBytes(js); await stream.WriteAsync(bytes, 0, bytes.Length).ConfigureAwait(false); @@ -592,34 +658,37 @@ namespace MediaBrowser.WebDashboard.Api /// <returns>Task{Stream}.</returns> private async Task<Stream> GetAllCss(bool enableMinification) { + var memoryStream = new MemoryStream(); + var newLineBytes = Encoding.UTF8.GetBytes(Environment.NewLine); + + await AppendResource(memoryStream, "thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.theme.min.css", newLineBytes).ConfigureAwait(false); + await AppendResource(memoryStream, "thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.structure.min.css", newLineBytes).ConfigureAwait(false); + var files = new[] { - "site.css", - "chromecast.css", - "mediaplayer.css", - "mediaplayer-video.css", - "librarymenu.css", - "librarybrowser.css", - "detailtable.css", - "card.css", - "tileitem.css", - "metadataeditor.css", - "notifications.css", - "search.css", - "pluginupdates.css", - "remotecontrol.css", - "userimage.css", - "livetv.css", - "nowplaying.css", - "icons.css", - "materialize.css" + "css/site.css", + "css/chromecast.css", + "css/nowplayingbar.css", + "css/mediaplayer.css", + "css/mediaplayer-video.css", + "css/librarymenu.css", + "css/librarybrowser.css", + "css/card.css", + "css/notifications.css", + "css/search.css", + "css/pluginupdates.css", + "css/remotecontrol.css", + "css/userimage.css", + "css/nowplaying.css", + "css/materialize.css", + "thirdparty/paper-button-style.css" }; var builder = new StringBuilder(); foreach (var file in files) { - var path = GetDashboardResourcePath("css/" + file); + var path = GetDashboardResourcePath(file); using (var fs = _fileSystem.GetFileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, true)) { @@ -655,7 +724,8 @@ namespace MediaBrowser.WebDashboard.Api } } - var memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(css)); + var bytes = Encoding.UTF8.GetBytes(css); + memoryStream.Write(bytes, 0, bytes.Length); memoryStream.Position = 0; return memoryStream; diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj index 8ead5ef77..c8c9c4d3c 100644 --- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj +++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj @@ -87,13 +87,59 @@ </ProjectReference>
</ItemGroup>
<ItemGroup>
+ <Content Include="dashboard-ui\bower_components\swipebox\src\css\swipebox.min.css">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\bower_components\swipebox\src\img\icons.png">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\bower_components\swipebox\src\img\icons.svg">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\bower_components\swipebox\src\js\jquery.swipebox.min.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\bower_components\velocity\velocity.min.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\bower_components\webcomponentsjs\CustomElements.js" />
+ <Content Include="dashboard-ui\bower_components\webcomponentsjs\CustomElements.min.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\bower_components\webcomponentsjs\HTMLImports.js" />
+ <Content Include="dashboard-ui\bower_components\webcomponentsjs\HTMLImports.min.js" />
+ <Content Include="dashboard-ui\bower_components\webcomponentsjs\MutationObserver.js" />
+ <Content Include="dashboard-ui\bower_components\webcomponentsjs\MutationObserver.min.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\bower_components\webcomponentsjs\ShadowDOM.js" />
+ <Content Include="dashboard-ui\bower_components\webcomponentsjs\ShadowDOM.min.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\bower_components\webcomponentsjs\webcomponents-lite.js" />
+ <Content Include="dashboard-ui\bower_components\webcomponentsjs\webcomponents-lite.min.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\bower_components\webcomponentsjs\webcomponents.js" />
+ <Content Include="dashboard-ui\bower_components\webcomponentsjs\webcomponents.min.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\cordova\android\logging.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\cordova\searchmenu.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\cordova\sharingwidget.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
<Content Include="dashboard-ui\css\images\clients\androidtv-tile.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\empty.png">
+ <Content Include="dashboard-ui\css\images\clients\chromecast.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\kids\bg.jpg">
+ <Content Include="dashboard-ui\css\images\empty.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="dashboard-ui\css\images\logo536.png">
@@ -102,6 +148,9 @@ <Content Include="dashboard-ui\css\images\splash.jpg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
+ <Content Include="dashboard-ui\css\images\splash720.jpg">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
<Content Include="dashboard-ui\css\images\touchicon144.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -114,259 +163,374 @@ <Content Include="dashboard-ui\css\images\tour\web\tourmysync.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
+ <Content Include="dashboard-ui\css\nowplayingbar.css">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\livetvchannels.html">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\livetvguide.html">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\livetvrecordings.html">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\livetvseriestimers.html">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\livetvtimers.html">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\mypreferenceshome.html">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\scripts\actionsheet.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\scripts\homenextup.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\scripts\homeupcoming.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\scripts\mypreferenceshome.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\scripts\searchmenu.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\scripts\secondaryitems.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\scripts\shared.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\scripts\sharingmanager.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\scripts\sharingwidget.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\secondaryitems.html">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\shared.html">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\themes\android.css">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\themes\ios.css">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
<Content Include="dashboard-ui\css\materialize.css">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\dashboardhosting.html">
+ <Content Include="dashboard-ui\scripts\htmlmediarenderer.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\forgotpasswordpin.html">
+ <Content Include="dashboard-ui\scripts\sections.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\kids.html">
+ <Content Include="dashboard-ui\apiclient\localassetmanager.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\livetvitems.html">
+ <Content Include="dashboard-ui\apiclient\wakeonlan.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\mysync.html">
+ <Content Include="dashboard-ui\cordova\android\appstorage.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\mysyncjob.html">
+ <Content Include="dashboard-ui\cordova\android\localassetmanager.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\photos.html">
+ <Content Include="dashboard-ui\cordova\android\mediasession.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\scripts\dashboardhosting.js">
+ <Content Include="dashboard-ui\cordova\android\nativedirectorychooser.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\scripts\forgotpassword.js">
+ <Content Include="dashboard-ui\cordova\android\vlcplayer.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\scripts\forgotpasswordpin.js">
+ <Content Include="dashboard-ui\cordova\back.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\scripts\kids.js">
+ <Content Include="dashboard-ui\cordova\ios\actionsheet.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\scripts\livetvitems.js">
+ <Content Include="dashboard-ui\cordova\ios\orientation.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\scripts\photos.js">
+ <Content Include="dashboard-ui\cordova\volume.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\scripts\selectserver.js">
+ <Content Include="dashboard-ui\cordova\wakeonlan.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\scripts\streamingsettings.js">
+ <Content Include="dashboard-ui\thirdparty\emby-icons.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\scripts\syncjob.js">
+ <Content Include="dashboard-ui\thirdparty\jquerymobile-1.4.5\jquery.mobile.custom.icons.css">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\scripts\appservices.js">
+ <Content Include="dashboard-ui\thirdparty\jquerymobile-1.4.5\jquery.mobile.custom.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\scripts\syncsettings.js">
+ <Content Include="dashboard-ui\thirdparty\jquerymobile-1.4.5\jquery.mobile.custom.min.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\scripts\taskbutton.js">
+ <Content Include="dashboard-ui\thirdparty\jquerymobile-1.4.5\jquery.mobile.custom.structure.css">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\scripts\usernew.js">
+ <Content Include="dashboard-ui\thirdparty\jquerymobile-1.4.5\jquery.mobile.custom.structure.min.css">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\scripts\userpassword.js">
+ <Content Include="dashboard-ui\thirdparty\jquerymobile-1.4.5\jquery.mobile.custom.theme.css">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\scripts\wizardagreement.js">
+ <Content Include="dashboard-ui\thirdparty\jquerymobile-1.4.5\jquery.mobile.custom.theme.min.css">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\selectserver.html">
+ <Content Include="dashboard-ui\thirdparty\paper-button-style.css">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\streamingsettings.html">
+ <Content Include="dashboard-ui\thirdparty\social-share-kit-1.0.4\.gitignore" />
+ <Content Include="dashboard-ui\thirdparty\social-share-kit-1.0.4\dist\css\social-share-kit.css">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\syncjob.html">
+ <Content Include="dashboard-ui\thirdparty\social-share-kit-1.0.4\dist\fonts\social-share-kit.svg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\appservices.html">
+ <Content Include="dashboard-ui\thirdparty\social-share-kit-1.0.4\dist\js\social-share-kit.js" />
+ <Content Include="dashboard-ui\thirdparty\social-share-kit-1.0.4\dist\js\social-share-kit.min.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\syncsettings.html">
+ <Content Include="dashboard-ui\thirdparty\viblast\viblast.crypto.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\thirdparty\apiclient\ajax.js">
+ <Content Include="dashboard-ui\thirdparty\viblast\viblast.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\thirdparty\apiclient\alt\ajax.js">
+ <Content Include="dashboard-ui\thirdparty\viblast\viblast.msp.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\thirdparty\apiclient\alt\bean.js">
+ <Content Include="dashboard-ui\thirdparty\viblast\worker.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\thirdparty\apiclient\alt\events.js">
+ <Content Include="dashboard-ui\voice\voice.css">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\thirdparty\apiclient\connectservice.js">
+ <Content Include="dashboard-ui\dashboardhosting.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\cordovaindex.html">
+ <Content Include="dashboard-ui\forgotpasswordpin.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\thirdparty\cordova\remotecontrols.js">
+ <Content Include="dashboard-ui\kids.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\thirdparty\cordova\serverdiscovery.js">
+ <Content Include="dashboard-ui\livetvitems.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\thirdparty\apiclient\deferred.js">
+ <Content Include="dashboard-ui\mysync.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\thirdparty\apiclient\alt\deferred.js">
+ <Content Include="dashboard-ui\mysyncjob.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\thirdparty\apiclient\device.js">
+ <Content Include="dashboard-ui\photos.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\thirdparty\apiclient\events.js">
+ <Content Include="dashboard-ui\scripts\appsettings.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\thirdparty\apiclient\logger.js">
+ <Content Include="dashboard-ui\scripts\dashboardhosting.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\thirdparty\apiclient\apiclient.js">
+ <Content Include="dashboard-ui\scripts\forgotpassword.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\channelitems.html">
+ <Content Include="dashboard-ui\scripts\forgotpasswordpin.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\channels.html">
+ <Content Include="dashboard-ui\scripts\kids.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\channelsettings.html">
+ <Content Include="dashboard-ui\scripts\livetvcomponents.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\channelslatest.html">
+ <Content Include="dashboard-ui\scripts\livetvitems.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\cinemamodeconfiguration.html">
+ <Content Include="dashboard-ui\scripts\mypreferencescommon.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\connectlogin.html">
+ <Content Include="dashboard-ui\scripts\photos.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\chromecast.css">
+ <Content Include="dashboard-ui\scripts\queryfilters.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\icons.css">
+ <Content Include="dashboard-ui\scripts\registrationservices.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\chromecast\ic_media_route_disabled_holo_dark.png">
+ <Content Include="dashboard-ui\scripts\reports.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\chromecast\ic_media_route_disabled_holo_light.png">
+ <Content Include="dashboard-ui\scripts\selectserver.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\chromecast\ic_media_route_off_holo_dark.png">
+ <Content Include="dashboard-ui\scripts\streamingsettings.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\chromecast\ic_media_route_off_holo_light.png">
+ <Content Include="dashboard-ui\scripts\syncjob.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\chromecast\ic_media_route_on_0_holo_dark.png">
+ <Content Include="dashboard-ui\scripts\appservices.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\chromecast\ic_media_route_on_0_holo_light.png">
+ <Content Include="dashboard-ui\scripts\syncsettings.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\chromecast\ic_media_route_on_1_holo_dark.png">
+ <Content Include="dashboard-ui\scripts\taskbutton.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\chromecast\ic_media_route_on_1_holo_light.png">
+ <Content Include="dashboard-ui\scripts\usernew.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\chromecast\ic_media_route_on_2_holo_dark.png">
+ <Content Include="dashboard-ui\scripts\userpassword.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\chromecast\ic_media_route_on_2_holo_light.png">
+ <Content Include="dashboard-ui\voice\voice.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\chromecast\ic_media_route_on_holo_dark.png">
+ <Content Include="dashboard-ui\scripts\wizardagreement.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\chromecast\ic_media_route_on_holo_light.png">
+ <Content Include="dashboard-ui\selectserver.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\chromecast\ic_notification_media_route.png">
+ <Content Include="dashboard-ui\streamingsettings.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\clients\amazon.png">
+ <Content Include="dashboard-ui\syncjob.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\clients\chrome_companion.png">
+ <Content Include="dashboard-ui\appservices.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\clients\mediaportal.png">
+ <Content Include="dashboard-ui\syncsettings.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\clients\nuvue.png">
+ <Content Include="dashboard-ui\apiclient\ajax.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\clients\playstore.png">
+ <Content Include="dashboard-ui\apiclient\alt\ajax.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\clients\kodi.png">
+ <Content Include="dashboard-ui\apiclient\alt\bean.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\favicon.ico">
+ <Content Include="dashboard-ui\apiclient\alt\events.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\apiclient\connectservice.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\cordova\android\androidcredentials.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\cordova\android\filesystem.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\cordova\android\iap.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\cordova\android\immersive.js" />
+ <Content Include="dashboard-ui\cordova\chromecast.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\cordova\connectsdk.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\cordova\externalplayer.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\cordova\filesystem.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\cordova\generaldevice.js" />
+ <Content Include="dashboard-ui\cordova\iap.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\cordova\imagestore.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\icons\ellipsis-v.png">
+ <Content Include="dashboard-ui\cordova\registrationservices.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\icons\remote.png">
+ <Content Include="dashboard-ui\cordova\remotecontrols.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\icons\audiocd.png">
+ <Content Include="dashboard-ui\cordova\serverdiscovery.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\icons\expand.png">
+ <Content Include="dashboard-ui\apiclient\deferred.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\icons\filter.png">
+ <Content Include="dashboard-ui\apiclient\alt\deferred.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\icons\mute.png">
+ <Content Include="dashboard-ui\apiclient\device.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\icons\nexttrack.png">
+ <Content Include="dashboard-ui\apiclient\events.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\icons\pause.png">
+ <Content Include="dashboard-ui\apiclient\logger.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\icons\play.png">
+ <Content Include="dashboard-ui\apiclient\apiclient.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\icons\previoustrack.png">
+ <Content Include="dashboard-ui\channelitems.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\icons\sort.png">
+ <Content Include="dashboard-ui\channels.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\icons\stop.png">
+ <Content Include="dashboard-ui\channelsettings.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\icons\subtitles.png">
+ <Content Include="dashboard-ui\channelslatest.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\icons\volumedown.png">
+ <Content Include="dashboard-ui\cinemamodeconfiguration.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\icons\volumeup.png">
+ <Content Include="dashboard-ui\connectlogin.html">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\css\chromecast.css">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\css\images\clients\amazon.png">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\css\images\clients\chrome_companion.png">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\css\images\clients\nuvue.png">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\css\images\clients\playstore.png">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\css\images\clients\kodi.png">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\css\images\favicon.ico">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="dashboard-ui\css\images\items\detail\tv.png">
@@ -510,15 +674,9 @@ <Content Include="dashboard-ui\autoorganizelog.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\favorites.html">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="dashboard-ui\files\dummy.mp4">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\homelatest.html">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="dashboard-ui\librarypathmapping.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -531,9 +689,6 @@ <Content Include="dashboard-ui\mypreferenceslanguages.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\mypreferenceswebclient.html">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="dashboard-ui\notificationlist.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -573,9 +728,6 @@ <Content Include="dashboard-ui\livetvstatus.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\livetvtimers.html">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="dashboard-ui\metadatasubtitles.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -585,9 +737,6 @@ <Content Include="dashboard-ui\collections.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\clients\mbkinect.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="dashboard-ui\css\images\editor\lock.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -636,18 +785,6 @@ <Content Include="dashboard-ui\css\images\fresh.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\items\searchhintsv2\film.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\css\images\items\searchhintsv2\game.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\css\images\items\searchhintsv2\music.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\css\images\items\searchhintsv2\person.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="dashboard-ui\css\images\items\searchhintsv2\tv.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -660,27 +797,12 @@ <Content Include="dashboard-ui\css\images\items\detail\person.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\items\list\audio.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\css\images\items\list\audiocollection.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="dashboard-ui\css\images\items\list\chapter.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\items\list\game.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\css\images\items\list\gamecollection.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="dashboard-ui\css\images\items\list\person.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\items\list\video.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="dashboard-ui\css\images\supporter\nonsupporterbadge.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -732,15 +854,6 @@ <Content Include="dashboard-ui\gamesystems.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\livetvchannels.html">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\livetvguide.html">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\livetvrecordings.html">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="dashboard-ui\notificationsetting.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -822,9 +935,6 @@ <Content Include="dashboard-ui\scripts\favorites.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\scripts\homelatest.js">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="dashboard-ui\scripts\librarylist.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -843,9 +953,6 @@ <Content Include="dashboard-ui\scripts\mypreferenceslanguages.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\scripts\mypreferenceswebclient.js">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="dashboard-ui\scripts\notificationlist.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -861,9 +968,6 @@ <Content Include="dashboard-ui\scripts\playlists.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\scripts\reports.js">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="dashboard-ui\scripts\livetvchannel.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -969,28 +1073,22 @@ <Content Include="dashboard-ui\scripts\wizardsettings.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\livetvseriestimers.html">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="dashboard-ui\serversecurity.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\thirdparty\apiclient\connectionmanager.js">
+ <Content Include="dashboard-ui\apiclient\connectionmanager.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\thirdparty\apiclient\credentials.js">
+ <Content Include="dashboard-ui\apiclient\credentials.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\thirdparty\apiclient\network.js">
+ <Content Include="dashboard-ui\apiclient\serverdiscovery.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\thirdparty\apiclient\serverdiscovery.js">
+ <Content Include="dashboard-ui\apiclient\sha1.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\thirdparty\apiclient\sha1.js">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\thirdparty\apiclient\store.js">
+ <Content Include="dashboard-ui\apiclient\store.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="dashboard-ui\thirdparty\browser.js">
@@ -1002,6 +1100,9 @@ <Content Include="dashboard-ui\thirdparty\fastclick.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
+ <Content Include="dashboard-ui\thirdparty\filesystem.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
<Content Include="dashboard-ui\thirdparty\fontawesome\css\font-awesome.css">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -1626,36 +1727,15 @@ <Content Include="dashboard-ui\thirdparty\jquerymobile-1.4.5\jquery.mobile-1.4.5.min.css">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\thirdparty\jquerymobile-1.4.5\jquery.mobile-1.4.5.min.js">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="dashboard-ui\livetvsuggested.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\thirdparty\apiclient\md5.js">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\thirdparty\jstree3.0.8\jstree.js">
+ <Content Include="dashboard-ui\apiclient\md5.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="dashboard-ui\thirdparty\jstree3.0.8\jstree.min.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\thirdparty\jstree3.0.8\themes\default-dark\32px.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\thirdparty\jstree3.0.8\themes\default-dark\40px.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\thirdparty\jstree3.0.8\themes\default-dark\style.css">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\thirdparty\jstree3.0.8\themes\default-dark\style.min.css">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\thirdparty\jstree3.0.8\themes\default-dark\throbber.gif">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="dashboard-ui\thirdparty\jstree3.0.8\themes\default\32px.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -1671,36 +1751,9 @@ <Content Include="dashboard-ui\thirdparty\jstree3.0.8\themes\default\throbber.gif">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\thirdparty\masonry.pkgd.min.js">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="dashboard-ui\thirdparty\require.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\thirdparty\requirecss.js">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\thirdparty\swipebox-master\css\swipebox.css">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\thirdparty\swipebox-master\css\swipebox.min.css">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\thirdparty\swipebox-master\img\icons.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\thirdparty\swipebox-master\img\icons.svg">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\thirdparty\swipebox-master\img\loader.gif">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\thirdparty\swipebox-master\js\jquery.swipebox.js">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\thirdparty\swipebox-master\js\jquery.swipebox.min.js">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="dashboard-ui\tvupcoming.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -1716,6 +1769,12 @@ <Content Include="dashboard-ui\userpassword.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
+ <Content Include="dashboard-ui\vulcanize-in.html">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\vulcanize-out.html">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
<Content Include="dashboard-ui\wizardagreement.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -2279,22 +2338,87 @@ </Content>
</ItemGroup>
<ItemGroup>
+ <None Include="dashboard-ui\bower_components\webcomponentsjs\.bower.json" />
+ <None Include="dashboard-ui\bower_components\webcomponentsjs\bower.json" />
+ <None Include="dashboard-ui\bower_components\webcomponentsjs\build.log" />
+ <None Include="dashboard-ui\bower_components\webcomponentsjs\package.json" />
+ <None Include="dashboard-ui\bower_components\webcomponentsjs\README.md" />
+ <None Include="dashboard-ui\css\fonts\roboto\RobotoBold.woff">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="dashboard-ui\css\fonts\roboto\RobotoLight.woff">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="dashboard-ui\css\fonts\roboto\RobotoMedium.woff">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="dashboard-ui\css\fonts\roboto\RobotoRegular.woff">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="dashboard-ui\css\fonts\roboto\RobotoThin.woff">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="dashboard-ui\css\fonts\roboto\-L14Jk06m6pUHB-5mXQQnRJtnKITppOI_IvcXXDNrsc.woff2">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="dashboard-ui\css\fonts\roboto\0eC6fl06luXEYWpBSJvXCBJtnKITppOI_IvcXXDNrsc.woff2">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="dashboard-ui\css\fonts\roboto\2tsd397wLxj96qwHyNIkxPesZW2xOQ-xsNqO47m55DA.woff2">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="dashboard-ui\css\fonts\roboto\97uahxiqZRoncBaCEI3aWxJtnKITppOI_IvcXXDNrsc.woff2">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="dashboard-ui\css\fonts\roboto\aZMswpodYeVhtRvuABJWvBTbgVql8nDJpwnrE27mub0.woff2">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="dashboard-ui\css\fonts\roboto\CWB0XYA8bzo0kSThX0UTuA.woff2">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="dashboard-ui\css\fonts\roboto\d-6IYplOFocCacKzxwXSOFtXRa8TVwTICgirnJhmVJw.woff2">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="dashboard-ui\css\fonts\roboto\e7MeVAyvogMqFwwl61PKhBTbgVql8nDJpwnrE27mub0.woff2">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="dashboard-ui\css\fonts\roboto\Fcx7Wwv8OzT71A3E1XOAjvesZW2xOQ-xsNqO47m55DA.woff2">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="dashboard-ui\css\fonts\roboto\Fl4y0QdOxyyTHEGMXX8kcRJtnKITppOI_IvcXXDNrsc.woff2">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="dashboard-ui\css\fonts\roboto\frNV30OaYdlFRtH2VnZZdhTbgVql8nDJpwnrE27mub0.woff2">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="dashboard-ui\css\fonts\roboto\gwVJDERN2Amz39wrSoZ7FxTbgVql8nDJpwnrE27mub0.woff2">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
<None Include="dashboard-ui\css\fonts\Montserrat.woff">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
- <None Include="dashboard-ui\css\fonts\RobotoBold.woff">
+ <None Include="dashboard-ui\css\fonts\roboto\Hgo13k-tfSpn0qi1SFdUfVtXRa8TVwTICgirnJhmVJw.woff2">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="dashboard-ui\css\fonts\roboto\I3S1wsgSg9YCurV6PUkTORJtnKITppOI_IvcXXDNrsc.woff2">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
- <None Include="dashboard-ui\css\fonts\RobotoLight.woff">
+ <None Include="dashboard-ui\css\fonts\roboto\NYDWBdD4gIq26G5XYbHsFBJtnKITppOI_IvcXXDNrsc.woff2">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
- <None Include="dashboard-ui\css\fonts\RobotoMedium.woff">
+ <None Include="dashboard-ui\css\fonts\roboto\oOeFwZNlrTefzLYmlVV1UBJtnKITppOI_IvcXXDNrsc.woff2">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
- <None Include="dashboard-ui\css\fonts\RobotoRegular.woff">
+ <None Include="dashboard-ui\css\fonts\roboto\Pru33qjShpZSmG3z6VYwnRJtnKITppOI_IvcXXDNrsc.woff2">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
- <None Include="dashboard-ui\css\fonts\RobotoThin.woff">
+ <None Include="dashboard-ui\css\fonts\roboto\RxZJdnzeo3R5zSexge8UUVtXRa8TVwTICgirnJhmVJw.woff2">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="dashboard-ui\css\fonts\roboto\ty9dfvLAziwdqQ2dHoyjphTbgVql8nDJpwnrE27mub0.woff2">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="dashboard-ui\css\fonts\roboto\VvXUGKZXbHtX_S_VCTLpGhTbgVql8nDJpwnrE27mub0.woff2">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="dashboard-ui\thirdparty\fontawesome\css\font-awesome.css.map">
@@ -2318,6 +2442,17 @@ <None Include="dashboard-ui\thirdparty\jquerymobile-1.4.5\jquery.mobile-1.4.5.min.map">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
+ <None Include="dashboard-ui\thirdparty\social-share-kit-1.0.4\dist\fonts\social-share-kit.eot">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="dashboard-ui\thirdparty\social-share-kit-1.0.4\dist\fonts\social-share-kit.ttf">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="dashboard-ui\thirdparty\social-share-kit-1.0.4\dist\fonts\social-share-kit.woff">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="dashboard-ui\thirdparty\social-share-kit-1.0.4\LICENSE" />
+ <None Include="dashboard-ui\thirdparty\social-share-kit-1.0.4\README.md" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup />
diff --git a/MediaBrowser.XbmcMetadata/EntryPoint.cs b/MediaBrowser.XbmcMetadata/EntryPoint.cs index d07633268..c3bc6e30f 100644 --- a/MediaBrowser.XbmcMetadata/EntryPoint.cs +++ b/MediaBrowser.XbmcMetadata/EntryPoint.cs @@ -8,7 +8,6 @@ using MediaBrowser.Model.Logging; using MediaBrowser.XbmcMetadata.Configuration; using MediaBrowser.XbmcMetadata.Savers; using System; -using System.Linq; namespace MediaBrowser.XbmcMetadata { @@ -50,7 +49,11 @@ namespace MediaBrowser.XbmcMetadata return; } - var items = _libraryManager.RootFolder.GetRecursiveChildren(person.GetItemFilter()); + var items = _libraryManager.GetItems(new InternalItemsQuery + { + Person = person.Name + + }).Items; foreach (var item in items) { diff --git a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs index 11cb25ab8..ad514492d 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs @@ -1,4 +1,5 @@ using MediaBrowser.Common.Configuration; +using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Extensions; using MediaBrowser.Controller.Entities; using MediaBrowser.Model.Entities; @@ -42,12 +43,11 @@ namespace MediaBrowser.XbmcMetadata.Parsers /// Fetches metadata for an item from one xml file /// </summary> /// <param name="item">The item.</param> - /// <param name="userDataList">The user data list.</param> /// <param name="metadataFile">The metadata file.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <exception cref="System.ArgumentNullException"> /// </exception> - public void Fetch(T item, List<UserItemData> userDataList, string metadataFile, CancellationToken cancellationToken) + public void Fetch(LocalMetadataResult<T> item, string metadataFile, CancellationToken cancellationToken) { if (item == null) { @@ -67,7 +67,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers ValidationType = ValidationType.None }; - Fetch(item, userDataList, metadataFile, settings, cancellationToken); + Fetch(item, metadataFile, settings, cancellationToken); } protected virtual bool SupportsUrlAfterClosingXmlTag @@ -79,11 +79,10 @@ namespace MediaBrowser.XbmcMetadata.Parsers /// Fetches the specified item. /// </summary> /// <param name="item">The item.</param> - /// <param name="userDataList">The user data list.</param> /// <param name="metadataFile">The metadata file.</param> /// <param name="settings">The settings.</param> /// <param name="cancellationToken">The cancellation token.</param> - private void Fetch(T item, List<UserItemData> userDataList, string metadataFile, XmlReaderSettings settings, CancellationToken cancellationToken) + private void Fetch(LocalMetadataResult<T> item, string metadataFile, XmlReaderSettings settings, CancellationToken cancellationToken) { if (!SupportsUrlAfterClosingXmlTag) { @@ -101,7 +100,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers if (reader.NodeType == XmlNodeType.Element) { - FetchDataFromXmlNode(reader, item, userDataList); + FetchDataFromXmlNode(reader, item); } } } @@ -122,13 +121,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { var endingXml = xml.Substring(index); - var imdbId = endingXml.Split('/') - .FirstOrDefault(i => i.StartsWith("tt", StringComparison.OrdinalIgnoreCase)); - - if (!string.IsNullOrWhiteSpace(imdbId)) - { - item.SetProviderId(MetadataProviders.Imdb, imdbId); - } + ParseProviderLinks(item.Item, endingXml); // If the file is just an imdb url, don't go any further if (index == 0) @@ -142,13 +135,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { // If the file is just an Imdb url, handle that - var imdbId = xml.Split('/') - .FirstOrDefault(i => i.StartsWith("tt", StringComparison.OrdinalIgnoreCase)); - - if (!string.IsNullOrWhiteSpace(imdbId)) - { - item.SetProviderId(MetadataProviders.Imdb, imdbId); - } + ParseProviderLinks(item.Item, xml); return; } @@ -172,7 +159,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers if (reader.NodeType == XmlNodeType.Element) { - FetchDataFromXmlNode(reader, item, userDataList); + FetchDataFromXmlNode(reader, item); } } } @@ -181,8 +168,24 @@ namespace MediaBrowser.XbmcMetadata.Parsers } } - protected virtual void FetchDataFromXmlNode(XmlReader reader, T item, List<UserItemData> userDataList) + private void ParseProviderLinks(T item, string xml) { + var imdbId = xml.Split('/') + .FirstOrDefault(i => i.StartsWith("tt", StringComparison.OrdinalIgnoreCase)); + + if (!string.IsNullOrWhiteSpace(imdbId)) + { + item.SetProviderId(MetadataProviders.Imdb, imdbId); + } + + // TODO: Support Tmdb + // http://www.themoviedb.org/movie/36557 + } + + protected virtual void FetchDataFromXmlNode(XmlReader reader, LocalMetadataResult<T> itemResult) + { + var item = itemResult.Item; + var userDataUserId = _config.GetNfoConfiguration().UserId; switch (reader.Name) @@ -571,7 +574,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { continue; } - item.AddPerson(p); + PeopleHelper.AddPerson(itemResult.People, p); } break; } @@ -590,7 +593,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { continue; } - item.AddPerson(p); + PeopleHelper.AddPerson(itemResult.People, p); } } break; @@ -604,7 +607,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { continue; } - item.AddPerson(p); + PeopleHelper.AddPerson(itemResult.People, p); } break; } @@ -615,7 +618,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { var person = GetPersonFromXmlNode(subtree); - item.AddPerson(person); + PeopleHelper.AddPerson(itemResult.People, person); } break; } @@ -929,7 +932,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { if (!string.IsNullOrWhiteSpace(userDataUserId)) { - var userData = GetOrAdd(userDataList, userDataUserId); + var userData = GetOrAdd(itemResult.UserDataLIst, userDataUserId); userData.Played = parsedValue; } @@ -949,9 +952,14 @@ namespace MediaBrowser.XbmcMetadata.Parsers { if (!string.IsNullOrWhiteSpace(userDataUserId)) { - var userData = GetOrAdd(userDataList, userDataUserId); + var userData = GetOrAdd(itemResult.UserDataLIst, userDataUserId); userData.PlayCount = parsedValue; + + if (parsedValue > 0) + { + userData.Played = true; + } } } } @@ -969,7 +977,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { if (!string.IsNullOrWhiteSpace(userDataUserId)) { - var userData = GetOrAdd(userDataList, userDataUserId); + var userData = GetOrAdd(itemResult.UserDataLIst, userDataUserId); userData.LastPlayedDate = parsedValue; } @@ -984,7 +992,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { if (!string.IsNullOrWhiteSpace(userDataUserId)) { - var userData = GetOrAdd(userDataList, userDataUserId); + var userData = GetOrAdd(itemResult.UserDataLIst, userDataUserId); FetchFromResumeNode(subtree, item, userData); } @@ -1003,7 +1011,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { if (!string.IsNullOrWhiteSpace(userDataUserId)) { - var userData = GetOrAdd(userDataList, userDataUserId); + var userData = GetOrAdd(itemResult.UserDataLIst, userDataUserId); userData.IsFavorite = parsedValue; } @@ -1023,7 +1031,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { if (!string.IsNullOrWhiteSpace(userDataUserId)) { - var userData = GetOrAdd(userDataList, userDataUserId); + var userData = GetOrAdd(itemResult.UserDataLIst, userDataUserId); userData.Rating = parsedValue; } diff --git a/MediaBrowser.XbmcMetadata/Parsers/EpisodeNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/EpisodeNfoParser.cs index 42a60276b..355f19de7 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/EpisodeNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/EpisodeNfoParser.cs @@ -2,7 +2,6 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using System; using System.Collections.Generic; @@ -14,26 +13,16 @@ namespace MediaBrowser.XbmcMetadata.Parsers { public class EpisodeNfoParser : BaseNfoParser<Episode> { - private List<LocalImageInfo> _imagesFound; - private List<ChapterInfo> _chaptersFound; - private string _xmlPath; - public EpisodeNfoParser(ILogger logger, IConfigurationManager config) : base(logger, config) { } - public void Fetch(Episode item, - List<UserItemData> userDataList, + public void Fetch(LocalMetadataResult<Episode> item, List<LocalImageInfo> images, - List<ChapterInfo> chapters, string metadataFile, CancellationToken cancellationToken) { - _imagesFound = images; - _chaptersFound = chapters; - _xmlPath = metadataFile; - - Fetch(item, userDataList, metadataFile, cancellationToken); + Fetch(item, metadataFile, cancellationToken); } private static readonly CultureInfo UsCulture = new CultureInfo("en-US"); @@ -42,17 +31,13 @@ namespace MediaBrowser.XbmcMetadata.Parsers /// Fetches the data from XML node. /// </summary> /// <param name="reader">The reader.</param> - /// <param name="item">The item.</param> - /// <param name="userDataList">The user data list.</param> - protected override void FetchDataFromXmlNode(XmlReader reader, Episode item, List<UserItemData> userDataList) + /// <param name="itemResult">The item result.</param> + protected override void FetchDataFromXmlNode(XmlReader reader, LocalMetadataResult<Episode> itemResult) { + var item = itemResult.Item; + switch (reader.Name) { - //case "Chapters": - - // _chaptersFound.AddRange(FetchChaptersFromXmlNode(item, reader.ReadSubtree())); - // break; - case "season": { var number = reader.ReadElementContentAsString(); @@ -206,7 +191,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers default: - base.FetchDataFromXmlNode(reader, item, userDataList); + base.FetchDataFromXmlNode(reader, itemResult); break; } } diff --git a/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs index 2a275320f..ab4619875 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs @@ -1,33 +1,20 @@ using MediaBrowser.Common.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; +using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using System.Collections.Generic; -using System.Threading; using System.Xml; namespace MediaBrowser.XbmcMetadata.Parsers { class MovieNfoParser : BaseNfoParser<Video> { - private List<ChapterInfo> _chaptersFound; - public MovieNfoParser(ILogger logger, IConfigurationManager config) : base(logger, config) { } - public void Fetch(Video item, - List<UserItemData> userDataList, - List<ChapterInfo> chapters, - string metadataFile, - CancellationToken cancellationToken) - { - _chaptersFound = chapters; - - Fetch(item, userDataList, metadataFile, cancellationToken); - } - protected override bool SupportsUrlAfterClosingXmlTag { get @@ -40,10 +27,11 @@ namespace MediaBrowser.XbmcMetadata.Parsers /// Fetches the data from XML node. /// </summary> /// <param name="reader">The reader.</param> - /// <param name="item">The item.</param> - /// <param name="userDataList">The user data list.</param> - protected override void FetchDataFromXmlNode(XmlReader reader, Video item, List<UserItemData> userDataList) + /// <param name="itemResult">The item result.</param> + protected override void FetchDataFromXmlNode(XmlReader reader, LocalMetadataResult<Video> itemResult) { + var item = itemResult.Item; + switch (reader.Name) { case "id": @@ -93,13 +81,8 @@ namespace MediaBrowser.XbmcMetadata.Parsers break; } - //case "chapter": - - // _chaptersFound.AddRange(FetchChaptersFromXmlNode(item, reader.ReadSubtree())); - // break; - default: - base.FetchDataFromXmlNode(reader, item, userDataList); + base.FetchDataFromXmlNode(reader, itemResult); break; } } diff --git a/MediaBrowser.XbmcMetadata/Parsers/SeasonNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/SeasonNfoParser.cs index 1ea0053b3..c80684c41 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/SeasonNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/SeasonNfoParser.cs @@ -1,8 +1,7 @@ using MediaBrowser.Common.Configuration; -using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.TV; +using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Logging; -using System.Collections.Generic; using System.Globalization; using System.Xml; @@ -18,10 +17,11 @@ namespace MediaBrowser.XbmcMetadata.Parsers /// Fetches the data from XML node. /// </summary> /// <param name="reader">The reader.</param> - /// <param name="item">The item.</param> - /// <param name="userDataList">The user data list.</param> - protected override void FetchDataFromXmlNode(XmlReader reader, Season item, List<UserItemData> userDataList) + /// <param name="itemResult">The item result.</param> + protected override void FetchDataFromXmlNode(XmlReader reader, LocalMetadataResult<Season> itemResult) { + var item = itemResult.Item; + switch (reader.Name) { case "seasonnumber": @@ -41,7 +41,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers } default: - base.FetchDataFromXmlNode(reader, item, userDataList); + base.FetchDataFromXmlNode(reader, itemResult); break; } } diff --git a/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs index 2e8b07695..5025f4d18 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/SeriesNfoParser.cs @@ -2,6 +2,7 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using System; @@ -20,10 +21,11 @@ namespace MediaBrowser.XbmcMetadata.Parsers /// Fetches the data from XML node. /// </summary> /// <param name="reader">The reader.</param> - /// <param name="item">The item.</param> - /// <param name="userDataList">The user data list.</param> - protected override void FetchDataFromXmlNode(XmlReader reader, Series item, List<UserItemData> userDataList) + /// <param name="itemResult">The item result.</param> + protected override void FetchDataFromXmlNode(XmlReader reader, LocalMetadataResult<Series> itemResult) { + var item = itemResult.Item; + switch (reader.Name) { case "id": @@ -88,7 +90,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers } default: - base.FetchDataFromXmlNode(reader, item, userDataList); + base.FetchDataFromXmlNode(reader, itemResult); break; } } diff --git a/MediaBrowser.XbmcMetadata/Providers/AlbumNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/AlbumNfoProvider.cs index 9567de2b8..ac76db771 100644 --- a/MediaBrowser.XbmcMetadata/Providers/AlbumNfoProvider.cs +++ b/MediaBrowser.XbmcMetadata/Providers/AlbumNfoProvider.cs @@ -23,7 +23,7 @@ namespace MediaBrowser.XbmcMetadata.Providers protected override void Fetch(LocalMetadataResult<MusicAlbum> result, string path, CancellationToken cancellationToken) { - new BaseNfoParser<MusicAlbum>(_logger, _config).Fetch(result.Item, result.UserDataLIst, path, cancellationToken); + new BaseNfoParser<MusicAlbum>(_logger, _config).Fetch(result, path, cancellationToken); } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) diff --git a/MediaBrowser.XbmcMetadata/Providers/ArtistNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/ArtistNfoProvider.cs index 1f9c78b56..8a958c3a6 100644 --- a/MediaBrowser.XbmcMetadata/Providers/ArtistNfoProvider.cs +++ b/MediaBrowser.XbmcMetadata/Providers/ArtistNfoProvider.cs @@ -23,7 +23,7 @@ namespace MediaBrowser.XbmcMetadata.Providers protected override void Fetch(LocalMetadataResult<MusicArtist> result, string path, CancellationToken cancellationToken) { - new BaseNfoParser<MusicArtist>(_logger, _config).Fetch(result.Item, result.UserDataLIst, path, cancellationToken); + new BaseNfoParser<MusicArtist>(_logger, _config).Fetch(result, path, cancellationToken); } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) diff --git a/MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs index 1ee1b4241..1e82dfce7 100644 --- a/MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs +++ b/MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs @@ -59,7 +59,7 @@ namespace MediaBrowser.XbmcMetadata.Providers public bool HasChanged(IHasMetadata item, IDirectoryService directoryService, DateTime date) { - var file = GetXmlFile(new ItemInfo { IsInMixedFolder = item.IsInMixedFolder, Path = item.Path }, directoryService); + var file = GetXmlFile(new ItemInfo(item), directoryService); if (file == null) { diff --git a/MediaBrowser.XbmcMetadata/Providers/BaseVideoNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/BaseVideoNfoProvider.cs index 8119c162c..79315cbf3 100644 --- a/MediaBrowser.XbmcMetadata/Providers/BaseVideoNfoProvider.cs +++ b/MediaBrowser.XbmcMetadata/Providers/BaseVideoNfoProvider.cs @@ -2,11 +2,11 @@ using MediaBrowser.Common.IO; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using MediaBrowser.XbmcMetadata.Parsers; -using System.Collections.Generic; +using MediaBrowser.XbmcMetadata.Savers; using System.IO; +using System.Linq; using System.Threading; namespace MediaBrowser.XbmcMetadata.Providers @@ -26,30 +26,22 @@ namespace MediaBrowser.XbmcMetadata.Providers protected override void Fetch(LocalMetadataResult<T> result, string path, CancellationToken cancellationToken) { - var chapters = new List<ChapterInfo>(); - - new MovieNfoParser(_logger, _config).Fetch(result.Item, result.UserDataLIst, chapters, path, cancellationToken); + var tmpItem = new LocalMetadataResult<Video> + { + Item = result.Item + }; + new MovieNfoParser(_logger, _config).Fetch(tmpItem, path, cancellationToken); - result.Chapters = chapters; + result.Item = (T)tmpItem.Item; + result.People = tmpItem.People; + result.UserDataLIst = tmpItem.UserDataLIst; } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) { - var path = GetMovieSavePath(info, FileSystem); - - return directoryService.GetFile(path); - } - - public static string GetMovieSavePath(ItemInfo item, IFileSystem fileSystem) - { - if (Directory.Exists(item.Path)) - { - var path = item.Path; - - return Path.Combine(path, Path.GetFileName(path) + ".nfo"); - } - - return Path.ChangeExtension(item.Path, ".nfo"); + return MovieNfoSaver.GetMovieSavePaths(info, FileSystem) + .Select(directoryService.GetFile) + .FirstOrDefault(i => i != null); } } }
\ No newline at end of file diff --git a/MediaBrowser.XbmcMetadata/Providers/EpisodeNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/EpisodeNfoProvider.cs index 2d4bb4ddc..2b5cfe9a3 100644 --- a/MediaBrowser.XbmcMetadata/Providers/EpisodeNfoProvider.cs +++ b/MediaBrowser.XbmcMetadata/Providers/EpisodeNfoProvider.cs @@ -26,12 +26,10 @@ namespace MediaBrowser.XbmcMetadata.Providers protected override void Fetch(LocalMetadataResult<Episode> result, string path, CancellationToken cancellationToken) { var images = new List<LocalImageInfo>(); - var chapters = new List<ChapterInfo>(); - new EpisodeNfoParser(_logger, _config).Fetch(result.Item, result.UserDataLIst, images, chapters, path, cancellationToken); + new EpisodeNfoParser(_logger, _config).Fetch(result, images, path, cancellationToken); result.Images = images; - result.Chapters = chapters; } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) diff --git a/MediaBrowser.XbmcMetadata/Providers/SeasonNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/SeasonNfoProvider.cs index 1be67c310..85c2d4305 100644 --- a/MediaBrowser.XbmcMetadata/Providers/SeasonNfoProvider.cs +++ b/MediaBrowser.XbmcMetadata/Providers/SeasonNfoProvider.cs @@ -23,7 +23,7 @@ namespace MediaBrowser.XbmcMetadata.Providers protected override void Fetch(LocalMetadataResult<Season> result, string path, CancellationToken cancellationToken) { - new SeasonNfoParser(_logger, _config).Fetch(result.Item, result.UserDataLIst, path, cancellationToken); + new SeasonNfoParser(_logger, _config).Fetch(result, path, cancellationToken); } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) diff --git a/MediaBrowser.XbmcMetadata/Providers/SeriesNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/SeriesNfoProvider.cs index b415571e3..e2ac866ef 100644 --- a/MediaBrowser.XbmcMetadata/Providers/SeriesNfoProvider.cs +++ b/MediaBrowser.XbmcMetadata/Providers/SeriesNfoProvider.cs @@ -23,7 +23,7 @@ namespace MediaBrowser.XbmcMetadata.Providers protected override void Fetch(LocalMetadataResult<Series> result, string path, CancellationToken cancellationToken) { - new SeriesNfoParser(_logger, _config).Fetch(result.Item, result.UserDataLIst, path, cancellationToken); + new SeriesNfoParser(_logger, _config).Fetch(result, path, cancellationToken); } protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) diff --git a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs index 9cde958c4..b6f497a76 100644 --- a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs +++ b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs @@ -472,7 +472,9 @@ namespace MediaBrowser.XbmcMetadata.Savers } } - var directors = item.People + var people = libraryManager.GetPeople(item); + + var directors = people .Where(i => IsPersonType(i, PersonType.Director)) .Select(i => i.Name) .ToList(); @@ -482,7 +484,7 @@ namespace MediaBrowser.XbmcMetadata.Savers writer.WriteElementString("director", person); } - var writers = item.People + var writers = people .Where(i => IsPersonType(i, PersonType.Writer)) .Select(i => i.Name) .Distinct(StringComparer.OrdinalIgnoreCase) @@ -820,7 +822,7 @@ namespace MediaBrowser.XbmcMetadata.Savers AddUserData(item, writer, userManager, userDataRepo, options); - AddActors(item, writer, libraryManager, fileSystem, config); + AddActors(people, writer, libraryManager, fileSystem, config); var folder = item as BoxSet; if (folder != null) @@ -948,9 +950,9 @@ namespace MediaBrowser.XbmcMetadata.Savers writer.WriteEndElement(); } - private static void AddActors(BaseItem item, XmlWriter writer, ILibraryManager libraryManager, IFileSystem fileSystem, IServerConfigurationManager config) + private static void AddActors(List<PersonInfo> people, XmlWriter writer, ILibraryManager libraryManager, IFileSystem fileSystem, IServerConfigurationManager config) { - var actors = item.People + var actors = people .Where(i => !IsPersonType(i, PersonType.Director) && !IsPersonType(i, PersonType.Writer)) .ToList(); diff --git a/MediaBrowser.XbmcMetadata/Savers/MovieNfoSaver.cs b/MediaBrowser.XbmcMetadata/Savers/MovieNfoSaver.cs index e67aa42c7..ddbd528d9 100644 --- a/MediaBrowser.XbmcMetadata/Savers/MovieNfoSaver.cs +++ b/MediaBrowser.XbmcMetadata/Savers/MovieNfoSaver.cs @@ -4,10 +4,12 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using System.Collections.Generic; using System.IO; +using System.Linq; using System.Xml; namespace MediaBrowser.XbmcMetadata.Savers @@ -20,21 +22,32 @@ namespace MediaBrowser.XbmcMetadata.Savers protected override string GetLocalSavePath(IHasMetadata item) { - return GetMovieSavePath(item, FileSystem); + return GetMovieSavePaths(new ItemInfo(item), FileSystem).FirstOrDefault(); } - public static string GetMovieSavePath(IHasMetadata item, IFileSystem fileSystem) + public static List<string> GetMovieSavePaths(ItemInfo item, IFileSystem fileSystem) { - var video = (Video)item; + var list = new List<string>(); - if (video.VideoType == VideoType.Dvd || video.VideoType == VideoType.BluRay || video.VideoType == VideoType.HdDvd) + if (item.VideoType == VideoType.Dvd) { var path = item.ContainingFolderPath; - return Path.Combine(path, Path.GetFileName(path) + ".nfo"); + list.Add(Path.Combine(path, "VIDEO_TS", "VIDEO_TS.nfo")); } - return Path.ChangeExtension(item.Path, ".nfo"); + if (item.VideoType == VideoType.Dvd || item.VideoType == VideoType.BluRay || item.VideoType == VideoType.HdDvd) + { + var path = item.ContainingFolderPath; + + list.Add(Path.Combine(path, Path.GetFileName(path) + ".nfo")); + } + else + { + list.Add(Path.ChangeExtension(item.Path, ".nfo")); + } + + return list; } protected override string GetRootElementName(IHasMetadata item) diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec index f2d46de3e..fffb68e36 100644 --- a/Nuget/MediaBrowser.Common.Internal.nuspec +++ b/Nuget/MediaBrowser.Common.Internal.nuspec @@ -2,7 +2,7 @@ <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> <metadata> <id>MediaBrowser.Common.Internal</id> - <version>3.0.622</version> + <version>3.0.629</version> <title>MediaBrowser.Common.Internal</title> <authors>Luke</authors> <owners>ebr,Luke,scottisafool</owners> @@ -12,7 +12,7 @@ <description>Contains common components shared by Emby Theater and Emby Server. Not intended for plugin developer consumption.</description> <copyright>Copyright © Emby 2013</copyright> <dependencies> - <dependency id="MediaBrowser.Common" version="3.0.622" /> + <dependency id="MediaBrowser.Common" version="3.0.629" /> <dependency id="NLog" version="3.2.1" /> <dependency id="SimpleInjector" version="2.8.0" /> </dependencies> diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec index ab7d095f3..856e63199 100644 --- a/Nuget/MediaBrowser.Common.nuspec +++ b/Nuget/MediaBrowser.Common.nuspec @@ -2,7 +2,7 @@ <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> <metadata> <id>MediaBrowser.Common</id> - <version>3.0.622</version> + <version>3.0.629</version> <title>MediaBrowser.Common</title> <authors>Emby Team</authors> <owners>ebr,Luke,scottisafool</owners> diff --git a/Nuget/MediaBrowser.Model.Signed.nuspec b/Nuget/MediaBrowser.Model.Signed.nuspec index 67385bc3d..30175007d 100644 --- a/Nuget/MediaBrowser.Model.Signed.nuspec +++ b/Nuget/MediaBrowser.Model.Signed.nuspec @@ -2,7 +2,7 @@ <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> <metadata> <id>MediaBrowser.Model.Signed</id> - <version>3.0.622</version> + <version>3.0.629</version> <title>MediaBrowser.Model - Signed Edition</title> <authors>Emby Team</authors> <owners>ebr,Luke,scottisafool</owners> diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec index e91b97464..c688c6f2c 100644 --- a/Nuget/MediaBrowser.Server.Core.nuspec +++ b/Nuget/MediaBrowser.Server.Core.nuspec @@ -2,7 +2,7 @@ <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> <metadata> <id>MediaBrowser.Server.Core</id> - <version>3.0.622</version> + <version>3.0.629</version> <title>Media Browser.Server.Core</title> <authors>Emby Team</authors> <owners>ebr,Luke,scottisafool</owners> @@ -12,7 +12,7 @@ <description>Contains core components required to build plugins for Emby Server.</description> <copyright>Copyright © Emby 2013</copyright> <dependencies> - <dependency id="MediaBrowser.Common" version="3.0.622" /> + <dependency id="MediaBrowser.Common" version="3.0.629" /> <dependency id="Interfaces.IO" version="1.0.0.5" /> </dependencies> </metadata> diff --git a/SharedVersion.cs b/SharedVersion.cs index 64d43a05e..db9f1d850 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,4 +1,4 @@ using System.Reflection; //[assembly: AssemblyVersion("3.0.*")] -[assembly: AssemblyVersion("3.0.5607.2")] +[assembly: AssemblyVersion("3.0.5666.5")] |
