diff --git a/Components/Layout/NavMenu.razor b/Components/Layout/NavMenu.razor index 0435cef..167e0a9 100644 --- a/Components/Layout/NavMenu.razor +++ b/Components/Layout/NavMenu.razor @@ -6,5 +6,15 @@ Feiertage Urlaubs-Maximizer Einstellungen + + + + + + @context.User.Identity?.Name + + Abmelden + + diff --git a/Components/Pages/Feiertage.razor b/Components/Pages/Feiertage.razor index 63253b6..47da8fe 100644 --- a/Components/Pages/Feiertage.razor +++ b/Components/Pages/Feiertage.razor @@ -1,5 +1,6 @@ @page "/feiertage" @rendermode InteractiveServer +@attribute [Authorize] @inject HolidayService HolidayService Feiertage – Timetracker diff --git a/Components/Pages/Home.razor b/Components/Pages/Home.razor index 4e8b15a..a58555e 100644 --- a/Components/Pages/Home.razor +++ b/Components/Pages/Home.razor @@ -1,8 +1,10 @@ @page "/" @rendermode InteractiveServer +@attribute [Authorize] @inject TimetrackerService TrackerService @inject HolidayService HolidayService @inject ISnackbar Snackbar +@inject AuthenticationStateProvider AuthStateProvider KW @_kw – Wochenübersicht – Timetracker @@ -332,6 +334,7 @@ else private static readonly System.Globalization.CultureInfo _deCulture = new("de-DE"); private bool _loading = true; + private int _userId; private DateOnly _monday; private List _days = []; private AppSettings _settings = new(); @@ -349,10 +352,14 @@ else protected override async Task OnInitializedAsync() { + var authState = await AuthStateProvider.GetAuthenticationStateAsync(); + var claim = authState.User.FindFirst(ClaimTypes.NameIdentifier); + if (claim == null) return; // Prerender-Pass – Circuit noch nicht authentifiziert + _userId = int.Parse(claim.Value); _monday = GetMonday(DateOnly.FromDateTime(DateTime.Today)); - _settings = await TrackerService.GetSettingsAsync(); + _settings = await TrackerService.GetSettingsAsync(_userId); await LoadWeek(); - _totalOvertime = await TrackerService.GetTotalOvertimeAsync(_settings); + _totalOvertime = await TrackerService.GetTotalOvertimeAsync(_userId, _settings); _loading = false; } @@ -364,11 +371,11 @@ else _holidays = list.ToDictionary(h => h.Date, h => h.Name); _holidayYear = _monday.Year; } - var dbDays = await TrackerService.GetWeekAsync(_monday); + var dbDays = await TrackerService.GetWeekAsync(_userId, _monday); _days = Enumerable.Range(0, 7).Select(i => { var date = _monday.AddDays(i); - return DayVm.From(dbDays.FirstOrDefault(d => d.Date == date), date); + return DayVm.From(dbDays.FirstOrDefault(d => d.Date == date), date, _userId); }).ToList(); BuildWeekLabels(); } @@ -421,7 +428,7 @@ else private async Task SaveDay(DayVm day) { await TrackerService.UpsertWorkDayAsync(day.ToWorkDay()); - _totalOvertime = await TrackerService.GetTotalOvertimeAsync(_settings); + _totalOvertime = await TrackerService.GetTotalOvertimeAsync(_userId, _settings); BuildWeekLabels(); } @@ -486,6 +493,7 @@ else private sealed class DayVm { public int Id { get; set; } + public int UserId { get; set; } public DateOnly Date { get; set; } public TimeSpan? Start { get; set; } public TimeSpan? End { get; set; } @@ -500,9 +508,10 @@ else public TimeSpan? NetWork => GrossWork.HasValue ? GrossWork.Value - TotalBreakTime : null; - public static DayVm From(WorkDay? wd, DateOnly date) => new() + public static DayVm From(WorkDay? wd, DateOnly date, int userId) => new() { Id = wd?.Id ?? 0, + UserId = wd?.UserId ?? userId, Date = date, Start = wd?.StartTime?.ToTimeSpan(), End = wd?.EndTime?.ToTimeSpan(), @@ -517,6 +526,7 @@ else public WorkDay ToWorkDay() => new() { Id = Id, + UserId = UserId, Date = Date, StartTime = Start.HasValue ? TimeOnly.FromTimeSpan(Start.Value) : null, EndTime = End.HasValue ? TimeOnly.FromTimeSpan(End.Value) : null, diff --git a/Components/Pages/Login.razor b/Components/Pages/Login.razor new file mode 100644 index 0000000..0f76d72 --- /dev/null +++ b/Components/Pages/Login.razor @@ -0,0 +1,130 @@ +@page "/login" +@rendermode InteractiveServer +@attribute [AllowAnonymous] +@inject NavigationManager Nav +@inject ISnackbar Snackbar + +Anmelden – Timetracker + + + + + @* ── Logo / Header ── *@ + + + Timetracker + + + + + + @* ── Login ── *@ + + + @if (_error != null && _activeTab == 0) + { + @_error + } +
+ + + + + Anmelden + + +
+
+
+ + @* ── Registrieren ── *@ + + + @if (_error != null && _activeTab == 1) + { + @_error + } +
+ + + + + Konto erstellen + + +
+
+
+ +
+
+
+
+ +@code { + private int _activeTab = 0; + private string? _error; + private string _loginUsername = ""; + private string _loginPassword = ""; + private string _regUsername = ""; + private string _regPassword = ""; + private bool _showLoginPw; + private bool _showRegPw; + + [SupplyParameterFromQuery(Name = "error")] + public string? ErrorParam { get; set; } + + [SupplyParameterFromQuery(Name = "tab")] + public string? TabParam { get; set; } + + protected override void OnParametersSet() + { + _error = ErrorParam switch + { + "invalid" => "Benutzername oder Passwort falsch.", + not null => Uri.UnescapeDataString(ErrorParam), + _ => null + }; + _activeTab = TabParam == "register" ? 1 : 0; + } +} diff --git a/Components/Pages/Month.razor b/Components/Pages/Month.razor index beeb807..c5bfab4 100644 --- a/Components/Pages/Month.razor +++ b/Components/Pages/Month.razor @@ -1,7 +1,9 @@ @page "/month" @rendermode InteractiveServer +@attribute [Authorize] @inject TimetrackerService TrackerService @inject HolidayService HolidayService +@inject AuthenticationStateProvider AuthStateProvider @_deCulture.DateTimeFormat.GetMonthName(_month) @_year – Monatsübersicht – Timetracker @@ -150,6 +152,7 @@ else private static readonly System.Globalization.CultureInfo _deCulture = new("de-DE"); private bool _loading = true; + private int _userId; private int _year = DateTime.Today.Year; private int _month = DateTime.Today.Month; private List _days = []; @@ -167,16 +170,20 @@ else protected override async Task OnInitializedAsync() { - _settings = await TrackerService.GetSettingsAsync(); + var authState = await AuthStateProvider.GetAuthenticationStateAsync(); + var claim = authState.User.FindFirst(ClaimTypes.NameIdentifier); + if (claim == null) return; + _userId = int.Parse(claim.Value); + _settings = await TrackerService.GetSettingsAsync(_userId); await LoadMonth(); _loading = false; } private async Task LoadMonth() { - var workDays = await TrackerService.GetMonthAsync(_year, _month); + var workDays = await TrackerService.GetMonthAsync(_userId, _year, _month); var holidays = await HolidayService.GetHolidaysAsync(_year); - var vacations = await TrackerService.GetVacationDaysAsync(_year); + var vacations = await TrackerService.GetVacationDaysAsync(_userId, _year); var holidayMap = holidays.ToDictionary(h => h.Date, h => h.Name); var vacationSet = vacations.Select(v => v.Date).ToHashSet(); diff --git a/Components/Pages/Settings.razor b/Components/Pages/Settings.razor index c6add43..d847733 100644 --- a/Components/Pages/Settings.razor +++ b/Components/Pages/Settings.razor @@ -1,8 +1,10 @@ @page "/settings" @rendermode InteractiveServer +@attribute [Authorize] @inject TimetrackerService TrackerService @inject HolidayService HolidayService @inject ISnackbar Snackbar +@inject AuthenticationStateProvider AuthStateProvider Einstellungen – Timetracker @@ -375,6 +377,7 @@ else private static readonly System.Globalization.CultureInfo _deCulture = new("de-DE"); private AppSettings? _settings; + private int _userId; private int _vacYear = DateTime.Today.Year; private List _vacationDays = []; private DateTime? _newVacDateFrom; @@ -402,14 +405,18 @@ else protected override async Task OnInitializedAsync() { - _settings = await TrackerService.GetSettingsAsync(); + var authState = await AuthStateProvider.GetAuthenticationStateAsync(); + var claim = authState.User.FindFirst(ClaimTypes.NameIdentifier); + if (claim == null) return; + _userId = int.Parse(claim.Value); + _settings = await TrackerService.GetSettingsAsync(_userId); await LoadVacations(); _holHolidays = await HolidayService.GetHolidaysAsync(_holYear); } private async Task LoadVacations() { - _vacationDays = await TrackerService.GetVacationDaysAsync(_vacYear); + _vacationDays = await TrackerService.GetVacationDaysAsync(_userId, _vacYear); } private async Task ChangeYear(int delta) @@ -438,7 +445,7 @@ else { if (_settings!.IsWorkDay(current.DayOfWeek)) { - await TrackerService.AddVacationDayAsync(new VacationDay { Date = current, Note = note }); + await TrackerService.AddVacationDayAsync(new VacationDay { UserId = _userId, Date = current, Note = note }); added++; } current = current.AddDays(1); @@ -452,7 +459,7 @@ else private async Task RemoveVacation(int id) { - await TrackerService.RemoveVacationDayAsync(id); + await TrackerService.RemoveVacationDayAsync(_userId, id); await LoadVacations(); Snackbar.Add("Urlaubstag entfernt", Severity.Info); } diff --git a/Components/Pages/UrlaubsMaximizer.razor b/Components/Pages/UrlaubsMaximizer.razor index 826e84d..d3af9e6 100644 --- a/Components/Pages/UrlaubsMaximizer.razor +++ b/Components/Pages/UrlaubsMaximizer.razor @@ -1,8 +1,10 @@ @page "/urlaub-maximizer" @rendermode InteractiveServer +@attribute [Authorize] @inject TimetrackerService TrackerService @inject HolidayService HolidayService @inject ISnackbar Snackbar +@inject AuthenticationStateProvider AuthStateProvider Urlaubs-Maximizer – Timetracker @@ -232,10 +234,15 @@ else private int _remainingDays; private List _suggestions = []; private string _subLabel = ""; + private int _userId; protected override async Task OnInitializedAsync() { - _settings = await TrackerService.GetSettingsAsync(); + var authState = await AuthStateProvider.GetAuthenticationStateAsync(); + var claim = authState.User.FindFirst(ClaimTypes.NameIdentifier); + if (claim == null) return; + _userId = int.Parse(claim.Value); + _settings = await TrackerService.GetSettingsAsync(_userId); await LoadYear(); _loading = false; } @@ -243,7 +250,7 @@ else private async Task LoadYear() { var holidays = await HolidayService.GetHolidaysAsync(_year); - var vacations = await TrackerService.GetVacationDaysAsync(_year); + var vacations = await TrackerService.GetVacationDaysAsync(_userId, _year); _holidays = holidays.ToDictionary(h => h.Date, h => h.Name); _vacationSet = vacations.Select(v => v.Date).ToHashSet(); _remainingDays = Math.Max(0, _settings.VacationDaysPerYear - vacations.Count); @@ -262,7 +269,7 @@ else private async Task TakeSuggestion(Suggestion s) { foreach (var d in s.VacationDaysToTake.Where(d => !_vacationSet.Contains(d))) - await TrackerService.AddVacationDayAsync(new VacationDay { Date = d, Note = "Urlaubs-Maximizer" }); + await TrackerService.AddVacationDayAsync(new VacationDay { UserId = _userId, Date = d, Note = "Urlaubs-Maximizer" }); await LoadYear(); var word = s.VacationDaysNeeded == 1 ? "Urlaubstag" : "Urlaubstage"; Snackbar.Add($"{s.VacationDaysNeeded} {word} eingetragen – {s.TotalFreeDays} Tage frei!", Severity.Success); diff --git a/Components/RedirectToLogin.razor b/Components/RedirectToLogin.razor new file mode 100644 index 0000000..0ec1d2f --- /dev/null +++ b/Components/RedirectToLogin.razor @@ -0,0 +1,9 @@ +@inject NavigationManager Nav + +@code { + protected override void OnInitialized() + { + var returnUrl = Uri.EscapeDataString(Nav.Uri); + Nav.NavigateTo($"/login?returnUrl={returnUrl}", forceLoad: true); + } +} diff --git a/Components/Routes.razor b/Components/Routes.razor index 6c8eb35..ae21609 100644 --- a/Components/Routes.razor +++ b/Components/Routes.razor @@ -2,7 +2,11 @@ - + + + + + diff --git a/Components/_Imports.razor b/Components/_Imports.razor index 364f4bc..622292a 100644 --- a/Components/_Imports.razor +++ b/Components/_Imports.razor @@ -1,5 +1,8 @@ @using System.Net.Http @using System.Net.Http.Json +@using System.Security.Claims +@using Microsoft.AspNetCore.Authorization +@using Microsoft.AspNetCore.Components.Authorization @using Microsoft.AspNetCore.Components.Forms @using Microsoft.AspNetCore.Components.Routing @using Microsoft.AspNetCore.Components.Web diff --git a/Data/AppSettings.cs b/Data/AppSettings.cs index eafe92e..8faeb18 100644 --- a/Data/AppSettings.cs +++ b/Data/AppSettings.cs @@ -3,6 +3,7 @@ namespace timetracker.Data; public class AppSettings { public int Id { get; set; } + public int UserId { get; set; } public double DailyTargetHours { get; set; } = 7.5; public int MinimumBreakMinutes { get; set; } = 30; public int VacationDaysPerYear { get; set; } = 30; diff --git a/Data/AuthService.cs b/Data/AuthService.cs new file mode 100644 index 0000000..fd025ab --- /dev/null +++ b/Data/AuthService.cs @@ -0,0 +1,57 @@ +using System.Security.Cryptography; +using System.Text; +using Microsoft.EntityFrameworkCore; + +namespace timetracker.Data; + +public class AuthService(IDbContextFactory factory) +{ + public async Task LoginAsync(string username, string password) + { + await using var db = await factory.CreateDbContextAsync(); + var user = await db.Users + .FirstOrDefaultAsync(u => u.Username == username); + if (user == null) return null; + return VerifyPassword(password, user.PasswordHash, user.PasswordSalt) ? user : null; + } + + public async Task<(User? User, string? Error)> RegisterAsync(string username, string password) + { + if (string.IsNullOrWhiteSpace(username) || username.Length < 3) + return (null, "Benutzername muss mindestens 3 Zeichen lang sein."); + if (string.IsNullOrWhiteSpace(password) || password.Length < 6) + return (null, "Passwort muss mindestens 6 Zeichen lang sein."); + + await using var db = await factory.CreateDbContextAsync(); + if (await db.Users.AnyAsync(u => u.Username == username)) + return (null, "Benutzername bereits vergeben."); + + var (hash, salt) = HashPassword(password); + var user = new User { Username = username, PasswordHash = hash, PasswordSalt = salt }; + db.Users.Add(user); + await db.SaveChangesAsync(); + return (user, null); + } + + private static (string hash, string salt) HashPassword(string password) + { + var saltBytes = RandomNumberGenerator.GetBytes(32); + var salt = Convert.ToBase64String(saltBytes); + var hash = ComputeHash(password, salt); + return (hash, salt); + } + + private static bool VerifyPassword(string password, string hash, string salt) + => ComputeHash(password, salt) == hash; + + private static string ComputeHash(string password, string salt) + { + var hash = Rfc2898DeriveBytes.Pbkdf2( + Encoding.UTF8.GetBytes(password), + Convert.FromBase64String(salt), + iterations: 200_000, + HashAlgorithmName.SHA256, + outputLength: 32); + return Convert.ToBase64String(hash); + } +} diff --git a/Data/Migrations/20260522081459_AddMultiUser.Designer.cs b/Data/Migrations/20260522081459_AddMultiUser.Designer.cs new file mode 100644 index 0000000..bdb438d --- /dev/null +++ b/Data/Migrations/20260522081459_AddMultiUser.Designer.cs @@ -0,0 +1,191 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using timetracker.Data; + +#nullable disable + +namespace timetracker.Data.Migrations +{ + [DbContext(typeof(TimetrackerDbContext))] + [Migration("20260522081459_AddMultiUser")] + partial class AddMultiUser + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "10.0.8"); + + modelBuilder.Entity("timetracker.Data.AppSettings", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("DailyTargetHours") + .HasColumnType("REAL"); + + b.Property("MinimumBreakMinutes") + .HasColumnType("INTEGER"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.Property("VacationDaysPerYear") + .HasColumnType("INTEGER"); + + b.Property("WorkFriday") + .HasColumnType("INTEGER"); + + b.Property("WorkMonday") + .HasColumnType("INTEGER"); + + b.Property("WorkSaturday") + .HasColumnType("INTEGER"); + + b.Property("WorkSunday") + .HasColumnType("INTEGER"); + + b.Property("WorkThursday") + .HasColumnType("INTEGER"); + + b.Property("WorkTuesday") + .HasColumnType("INTEGER"); + + b.Property("WorkWednesday") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.ToTable("AppSettings"); + }); + + modelBuilder.Entity("timetracker.Data.BreakEntry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("EndTime") + .HasColumnType("TEXT"); + + b.Property("StartTime") + .HasColumnType("TEXT"); + + b.Property("WorkDayId") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("WorkDayId"); + + b.ToTable("BreakEntries"); + }); + + modelBuilder.Entity("timetracker.Data.PublicHoliday", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Date") + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("PublicHolidays"); + }); + + modelBuilder.Entity("timetracker.Data.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("PasswordHash") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("PasswordSalt") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Username") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("timetracker.Data.VacationDay", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Date") + .HasColumnType("TEXT"); + + b.Property("Note") + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.ToTable("VacationDays"); + }); + + modelBuilder.Entity("timetracker.Data.WorkDay", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Date") + .HasColumnType("TEXT"); + + b.Property("EndTime") + .HasColumnType("TEXT"); + + b.Property("StartTime") + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.ToTable("WorkDays"); + }); + + modelBuilder.Entity("timetracker.Data.BreakEntry", b => + { + b.HasOne("timetracker.Data.WorkDay", "WorkDay") + .WithMany("Breaks") + .HasForeignKey("WorkDayId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("WorkDay"); + }); + + modelBuilder.Entity("timetracker.Data.WorkDay", b => + { + b.Navigation("Breaks"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Data/Migrations/20260522081459_AddMultiUser.cs b/Data/Migrations/20260522081459_AddMultiUser.cs new file mode 100644 index 0000000..44a676b --- /dev/null +++ b/Data/Migrations/20260522081459_AddMultiUser.cs @@ -0,0 +1,69 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace timetracker.Data.Migrations +{ + /// + public partial class AddMultiUser : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "UserId", + table: "WorkDays", + type: "INTEGER", + nullable: false, + defaultValue: 0); + + migrationBuilder.AddColumn( + name: "UserId", + table: "VacationDays", + type: "INTEGER", + nullable: false, + defaultValue: 0); + + migrationBuilder.AddColumn( + name: "UserId", + table: "AppSettings", + type: "INTEGER", + nullable: false, + defaultValue: 0); + + migrationBuilder.CreateTable( + name: "Users", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + Username = table.Column(type: "TEXT", nullable: false), + PasswordHash = table.Column(type: "TEXT", nullable: false), + PasswordSalt = table.Column(type: "TEXT", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Users", x => x.Id); + }); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Users"); + + migrationBuilder.DropColumn( + name: "UserId", + table: "WorkDays"); + + migrationBuilder.DropColumn( + name: "UserId", + table: "VacationDays"); + + migrationBuilder.DropColumn( + name: "UserId", + table: "AppSettings"); + } + } +} diff --git a/Data/Migrations/TimetrackerDbContextModelSnapshot.cs b/Data/Migrations/TimetrackerDbContextModelSnapshot.cs index a7c0b94..84530f8 100644 --- a/Data/Migrations/TimetrackerDbContextModelSnapshot.cs +++ b/Data/Migrations/TimetrackerDbContextModelSnapshot.cs @@ -29,6 +29,9 @@ namespace timetracker.Data.Migrations b.Property("MinimumBreakMinutes") .HasColumnType("INTEGER"); + b.Property("UserId") + .HasColumnType("INTEGER"); + b.Property("VacationDaysPerYear") .HasColumnType("INTEGER"); @@ -58,24 +61,6 @@ namespace timetracker.Data.Migrations b.ToTable("AppSettings"); }); - modelBuilder.Entity("timetracker.Data.PublicHoliday", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("Date") - .HasColumnType("TEXT"); - - b.Property("Name") - .IsRequired() - .HasColumnType("TEXT"); - - b.HasKey("Id"); - - b.ToTable("PublicHolidays"); - }); - modelBuilder.Entity("timetracker.Data.BreakEntry", b => { b.Property("Id") @@ -98,6 +83,47 @@ namespace timetracker.Data.Migrations b.ToTable("BreakEntries"); }); + modelBuilder.Entity("timetracker.Data.PublicHoliday", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Date") + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("PublicHolidays"); + }); + + modelBuilder.Entity("timetracker.Data.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("PasswordHash") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("PasswordSalt") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Username") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("Users"); + }); + modelBuilder.Entity("timetracker.Data.VacationDay", b => { b.Property("Id") @@ -110,6 +136,9 @@ namespace timetracker.Data.Migrations b.Property("Note") .HasColumnType("TEXT"); + b.Property("UserId") + .HasColumnType("INTEGER"); + b.HasKey("Id"); b.ToTable("VacationDays"); @@ -130,6 +159,9 @@ namespace timetracker.Data.Migrations b.Property("StartTime") .HasColumnType("TEXT"); + b.Property("UserId") + .HasColumnType("INTEGER"); + b.HasKey("Id"); b.ToTable("WorkDays"); diff --git a/Data/TimetrackerDbContext.cs b/Data/TimetrackerDbContext.cs index eae77dd..bb04343 100644 --- a/Data/TimetrackerDbContext.cs +++ b/Data/TimetrackerDbContext.cs @@ -4,6 +4,7 @@ namespace timetracker.Data; public class TimetrackerDbContext(DbContextOptions options) : DbContext(options) { + public DbSet Users => Set(); public DbSet WorkDays => Set(); public DbSet BreakEntries => Set(); public DbSet AppSettings => Set(); diff --git a/Data/TimetrackerService.cs b/Data/TimetrackerService.cs index 00fe751..9920f40 100644 --- a/Data/TimetrackerService.cs +++ b/Data/TimetrackerService.cs @@ -4,12 +4,12 @@ namespace timetracker.Data; public class TimetrackerService(IDbContextFactory factory) { - public async Task> GetWeekAsync(DateOnly monday) + public async Task> GetWeekAsync(int userId, DateOnly monday) { await using var db = await factory.CreateDbContextAsync(); return await db.WorkDays .Include(w => w.Breaks) - .Where(w => w.Date >= monday && w.Date < monday.AddDays(7)) + .Where(w => w.UserId == userId && w.Date >= monday && w.Date < monday.AddDays(7)) .OrderBy(w => w.Date) .ToListAsync(); } @@ -19,7 +19,7 @@ public class TimetrackerService(IDbContextFactory factory) await using var db = await factory.CreateDbContextAsync(); var existing = await db.WorkDays .Include(w => w.Breaks) - .FirstOrDefaultAsync(w => w.Date == workDay.Date); + .FirstOrDefaultAsync(w => w.UserId == workDay.UserId && w.Date == workDay.Date); if (existing == null) { @@ -45,17 +45,17 @@ public class TimetrackerService(IDbContextFactory factory) await db.SaveChangesAsync(); } - public async Task GetSettingsAsync() + public async Task GetSettingsAsync(int userId) { await using var db = await factory.CreateDbContextAsync(); - return await db.AppSettings.FindAsync(1) ?? new AppSettings { Id = 1 }; + return await db.AppSettings.FirstOrDefaultAsync(s => s.UserId == userId) + ?? new AppSettings { UserId = userId }; } public async Task SaveSettingsAsync(AppSettings settings) { await using var db = await factory.CreateDbContextAsync(); - settings.Id = 1; - var existing = await db.AppSettings.FindAsync(1); + var existing = await db.AppSettings.FirstOrDefaultAsync(s => s.UserId == settings.UserId); if (existing == null) db.AppSettings.Add(settings); else @@ -75,11 +75,11 @@ public class TimetrackerService(IDbContextFactory factory) } // ── Urlaub ──────────────────────────────────────────────────────────── - public async Task> GetVacationDaysAsync(int year) + public async Task> GetVacationDaysAsync(int userId, int year) { await using var db = await factory.CreateDbContextAsync(); return await db.VacationDays - .Where(v => v.Date.Year == year) + .Where(v => v.UserId == userId && v.Date.Year == year) .OrderBy(v => v.Date) .ToListAsync(); } @@ -87,7 +87,7 @@ public class TimetrackerService(IDbContextFactory factory) public async Task AddVacationDayAsync(VacationDay vacationDay) { await using var db = await factory.CreateDbContextAsync(); - var exists = await db.VacationDays.AnyAsync(v => v.Date == vacationDay.Date); + var exists = await db.VacationDays.AnyAsync(v => v.UserId == vacationDay.UserId && v.Date == vacationDay.Date); if (!exists) { vacationDay.Id = 0; @@ -96,10 +96,10 @@ public class TimetrackerService(IDbContextFactory factory) } } - public async Task RemoveVacationDayAsync(int id) + public async Task RemoveVacationDayAsync(int userId, int id) { await using var db = await factory.CreateDbContextAsync(); - var v = await db.VacationDays.FindAsync(id); + var v = await db.VacationDays.FirstOrDefaultAsync(v => v.Id == id && v.UserId == userId); if (v != null) { db.VacationDays.Remove(v); @@ -108,12 +108,12 @@ public class TimetrackerService(IDbContextFactory factory) } // ── Gleitzeitkonto ─────────────────────────────────────────────────── - public async Task GetTotalOvertimeAsync(AppSettings settings) + public async Task GetTotalOvertimeAsync(int userId, AppSettings settings) { await using var db = await factory.CreateDbContextAsync(); var allDays = await db.WorkDays .Include(w => w.Breaks) - .Where(w => w.StartTime != null && w.EndTime != null) + .Where(w => w.UserId == userId && w.StartTime != null && w.EndTime != null) .ToListAsync(); var total = TimeSpan.Zero; @@ -132,14 +132,14 @@ public class TimetrackerService(IDbContextFactory factory) } // ── Monatsübersicht ─────────────────────────────────────────────────── - public async Task> GetMonthAsync(int year, int month) + public async Task> GetMonthAsync(int userId, int year, int month) { await using var db = await factory.CreateDbContextAsync(); var from = new DateOnly(year, month, 1); var to = from.AddMonths(1); return await db.WorkDays .Include(w => w.Breaks) - .Where(w => w.Date >= from && w.Date < to) + .Where(w => w.UserId == userId && w.Date >= from && w.Date < to) .OrderBy(w => w.Date) .ToListAsync(); } diff --git a/Data/User.cs b/Data/User.cs new file mode 100644 index 0000000..5b64987 --- /dev/null +++ b/Data/User.cs @@ -0,0 +1,9 @@ +namespace timetracker.Data; + +public class User +{ + public int Id { get; set; } + public string Username { get; set; } = ""; + public string PasswordHash { get; set; } = ""; + public string PasswordSalt { get; set; } = ""; +} diff --git a/Data/VacationDay.cs b/Data/VacationDay.cs index c213b4d..6dd019c 100644 --- a/Data/VacationDay.cs +++ b/Data/VacationDay.cs @@ -3,6 +3,7 @@ namespace timetracker.Data; public class VacationDay { public int Id { get; set; } + public int UserId { get; set; } public DateOnly Date { get; set; } public string? Note { get; set; } } diff --git a/Data/WorkDay.cs b/Data/WorkDay.cs index 1e3f727..dcaa71c 100644 --- a/Data/WorkDay.cs +++ b/Data/WorkDay.cs @@ -3,6 +3,7 @@ namespace timetracker.Data; public class WorkDay { public int Id { get; set; } + public int UserId { get; set; } public DateOnly Date { get; set; } public TimeOnly? StartTime { get; set; } public TimeOnly? EndTime { get; set; } diff --git a/Program.cs b/Program.cs index 1bd9eee..0dc7ac3 100644 --- a/Program.cs +++ b/Program.cs @@ -1,3 +1,6 @@ +using System.Security.Claims; +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.EntityFrameworkCore; using MudBlazor.Services; using timetracker.Components; @@ -5,6 +8,19 @@ using timetracker.Data; var builder = WebApplication.CreateBuilder(args); +builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) + .AddCookie(options => + { + options.LoginPath = "/login"; + options.LogoutPath = "/auth/logout"; + options.ExpireTimeSpan = TimeSpan.FromDays(30); + options.SlidingExpiration = true; + }); +builder.Services.AddAuthorization(); +builder.Services.AddCascadingAuthenticationState(); +builder.Services.AddHttpContextAccessor(); +builder.Services.AddScoped(); + // Add services to the container. builder.Services.AddRazorComponents() .AddInteractiveServerComponents(); @@ -39,10 +55,60 @@ if (app.Configuration.GetValue("EnableHttpsRedirect", !app.Environment.IsDevelop app.UseHttpsRedirection(); } +app.UseAuthentication(); +app.UseAuthorization(); + app.UseAntiforgery(); app.MapStaticAssets(); app.MapRazorComponents() .AddInteractiveServerRenderMode(); +// ── Auth-Endpoints ──────────────────────────────────────────────────────────── +app.MapPost("/auth/login", async (HttpContext ctx, AuthService authService) => +{ + var form = await ctx.Request.ReadFormAsync(); + var username = form["username"].ToString(); + var password = form["password"].ToString(); + var user = await authService.LoginAsync(username, password); + if (user == null) + return Results.Redirect("/login?error=invalid"); + + var claims = new[] { + new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()), + new Claim(ClaimTypes.Name, user.Username) + }; + var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme); + await ctx.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, + new ClaimsPrincipal(identity), + new AuthenticationProperties { IsPersistent = true }); + return Results.Redirect("/"); +}).DisableAntiforgery(); + +app.MapPost("/auth/register", async (HttpContext ctx, AuthService authService) => +{ + var form = await ctx.Request.ReadFormAsync(); + var username = form["username"].ToString(); + var password = form["password"].ToString(); + var (user, error) = await authService.RegisterAsync(username, password); + if (user == null) + return Results.Redirect($"/login?tab=register&error={Uri.EscapeDataString(error!)}"); + + var claims = new[] { + new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()), + new Claim(ClaimTypes.Name, user.Username) + }; + var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme); + await ctx.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, + new ClaimsPrincipal(identity), + new AuthenticationProperties { IsPersistent = true }); + return Results.Redirect("/"); +}).DisableAntiforgery(); + +app.MapGet("/auth/logout", async (HttpContext ctx) => +{ + await ctx.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme); + return Results.Redirect("/login"); +}); + app.Run(); diff --git a/bin/Debug/net10.0/timetracker.dll b/bin/Debug/net10.0/timetracker.dll index 1fd16a1..3c0f2bc 100644 Binary files a/bin/Debug/net10.0/timetracker.dll and b/bin/Debug/net10.0/timetracker.dll differ diff --git a/bin/Debug/net10.0/timetracker.exe b/bin/Debug/net10.0/timetracker.exe index 7fc3575..9f016fd 100644 Binary files a/bin/Debug/net10.0/timetracker.exe and b/bin/Debug/net10.0/timetracker.exe differ diff --git a/bin/Debug/net10.0/timetracker.pdb b/bin/Debug/net10.0/timetracker.pdb index cc020f8..c05e4bd 100644 Binary files a/bin/Debug/net10.0/timetracker.pdb and b/bin/Debug/net10.0/timetracker.pdb differ diff --git a/obj/Debug/net10.0/apphost.exe b/obj/Debug/net10.0/apphost.exe index 7fc3575..9f016fd 100644 Binary files a/obj/Debug/net10.0/apphost.exe and b/obj/Debug/net10.0/apphost.exe differ diff --git a/obj/Debug/net10.0/ref/timetracker.dll b/obj/Debug/net10.0/ref/timetracker.dll index 2392dc0..561cc19 100644 Binary files a/obj/Debug/net10.0/ref/timetracker.dll and b/obj/Debug/net10.0/ref/timetracker.dll differ diff --git a/obj/Debug/net10.0/refint/timetracker.dll b/obj/Debug/net10.0/refint/timetracker.dll index 2392dc0..561cc19 100644 Binary files a/obj/Debug/net10.0/refint/timetracker.dll and b/obj/Debug/net10.0/refint/timetracker.dll differ diff --git a/obj/Debug/net10.0/rjsmcshtml.dswa.cache.json b/obj/Debug/net10.0/rjsmcshtml.dswa.cache.json index 9bed84d..af61938 100644 --- a/obj/Debug/net10.0/rjsmcshtml.dswa.cache.json +++ b/obj/Debug/net10.0/rjsmcshtml.dswa.cache.json @@ -1 +1 @@ -{"GlobalPropertiesHash":"N2len2uEF6pGj8Qv3c4lMAeSFUjWl3rJ1rxPPY4/gB8=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["ovSerYHPMi4ExhJn2xU4WmJOZFaSXPk63P4ISGtQoag=","t8/S/iqD\u002BWOqoqxZIUWy\u002B0CcyTxhFe\u002B2vqS6syOPh/g=","mVmHEtzmBWHAiYW83bThvmsAmJe7oQFzJayYA2a6PXk=","DJbjU5RSeu8ssKk6\u002BU9qcxdWKLA7PaURGpcwMtU1cds=","6VuM8RXxuOppytZc57Uu0vfEpQ9I3GXlnrIiYTN3XfE=","qujjEy2OAvAD8tqujNixipvOC/CDKEPXWqs9\u002BY4LFaE=","7WuNDk23eyfNe62PHykuRmy3161tRcARFgNWu/aCgOU=","jurLJARZjB7Fe9JZEUjWenuLIUJ/sw\u002Bx/o88BnaFTQM=","AgpupSW\u002BrcNbe52yu92bURql10h5\u002BRXymMC1zzF8wBM=","n2t0OoSd\u002B9NIbEadHYn7A7hwpWm6gJFg2djhVViRYng=","Sd/GZUkwZ4Q8w0TCBY95I\u002BxxWZm7Xp3xfksG3IkBDbA=","2IBypkfqBOLTlleDMyYeWTHw1dZ5UaSN8Vi9nmT2J4Q=","Lnw840ru88dnnZSKFinR4LTzOZNDJZ89SuvDs3LG5dY=","xLaUDp7TmLTsx9D\u002BuLLhgqu\u002BJtD5qDLs78ujVLoNhD8=","SgpHkk6QnWRH2tChObAeejM8HLdc51H8B4SCozq1l9g=","cWbFJtEIrIyk935jQQFMHU54PZ9RdwmE1BHwt0UobPU=","R0BAVdym78gDoKsSMzBsb6x2W951BlKFN0FNFYCsCX0=","E2ywdGQj0a0y7VMb8A2SagnNbmvdgNrFzjMdvqqV\u002BwY=","eKWaGHod6XeCFKA2syO4b5bjGd52KeRMe2lxebLpbr0=","6Gt\u002BhW0YD4AIfi3\u002B0JWOcj5ZoRHBh\u002Bd/73EHzLb9ZFo=","E/hX5PlBL0xni6OyXeL\u002BzEtGzj0DfWxsFDaHAUwGu0g=","I4pM727TacYD1RDXN0wzY1zglsMaABlr19WVkApraeA=","q4hWoO1ud\u002BwqFwmCG1nzekXs8nQ7QQMO9l3OKCx3XQo=","M6YvTp/SYon85swfQmM8j\u002BpvvhMDCpXhh\u002BS\u002B62d/V8A=","xmR8fiTLL43ux/I8xI3x9qDZOQjmbEpSVczpZKX/o\u002BU=","rPWN7AcG4RCNgoc7gqqe5bzu2fZeRHANU4G5mRmf4X4=","4YEeh/h12kH0FUGdt8/sHDJmg4zYunaXhfW6POiKYQg=","I/B2gPx/d6O7VA7kVp3syVfL8hMvYHhkflGDSPirAUY=","zJOxsbpIjQOhSWamGE9OKGXBGWjYSnpjnXmsdC56bzo=","6MXGnBspymDhNbACXBV1es99mw15UCxkoq0pSEcWwck=","vwqCCdlnynihoratP5HTjoE6JShLlWi4O5KC5cFdw2s=","ScQoTm373N8A9VaM33H8osIAb0hMiQB3cU1gvaxCLMg=","5Wb9KEGOvI68lY1zg533rWI/3u1c2pizlvhvFBW\u002BT\u002BU=","crQzyJw61YMAO/5cQfffHdBTSXO4POIRR3UPwYueZfY=","WA6BQ4K/xJ4kSdHf0dPt16vUqlYSHp\u002BquO1y\u002Br4idlU=","X\u002ByfyT2MuAWgf9UmpGLy/DJi6r3xLJ7R0fjn\u002BO3\u002BR\u002Bo=","n\u002BDKXe9Y3zHWEn4UB/eNHQTMuhDctkV5BDSwuliCKYo=","tUzryyDyISAnyr1e7ujmEglKl80GaEbNkw0uWsRegIM=","T1MNLl33nCZGSd4XbUBoRmZ1fyK\u002BBWsY0O4NHWiadQ0=","1GJdKBhQwxAongm2xWk7yLdbPyYKlYs\u002BByo/FSwa2Og=","QaD0ihDfiZcRw8Fa5XSqStAEkcFjb0xglTXrbeJN4a8=","ajlLSJ\u002BIWKj8EKV35W1hH4reyjN9/r1Ch8e1dBNjBSw=","DcApRy4nhjlP662diHmukEKqYuyoe0KHyOxGVdr9PyM=","zl\u002BzcRoxnXPakxxXJN6l9VLMwGk\u002By/SQT8B0WSnZMvM=","DiVsG2cevQdVuEwxHL\u002BgPGxh9fRtM3xn1Ix89OU01l4=","UKin6fGxIhO8Gs7LkLmN4kuS0Kl9uZWqgc6x7t2/xf0=","ejq560JF7/oAnu6I4VFt5f2wcSlzaEHpYTqsRh06o9A=","GDvNJZr3M2dgiymsy98U2bIMNajpHpIqUgn3VJu89NQ=","niE7G3oChy6PoSAzXj1Gj8yXNzqzO2SehGWXSGOs3ws=","TWCaa80sCF0UE7aeFJzSDp8vXtYi5Kf\u002Bv1v39TnyKs0=","SOIv4cDkxXKCivZ9A4sABqxsRRoomBeZ1nfsqaqq3aA=","GU6fHRhkxloPnx/L5QeYxDIprNNXbhjKzwM35bIsSdo=","2ioxqlu0rAxIbeWDbnlN9oLjD\u002BeRmektYla3y9AGc88=","ZWzbAgAFew9xp1iyo7knZbDaqWIv4Hm\u002BwCk9vPDUBSE=","pk1NXMdmexfgnN111i\u002B2VCt\u002Bh5FN6lNCwX\u002Bg5BR1Sgs=","SQ6Z3ikpNt1Ct\u002BC2yaguToCnzonqjZYbVGooOo7AY7Q=","gqFfW6e8\u002B0CzyL\u002BpttrsEfJhuLIlj/roGVa/T1vbFPo=","4C0vqrvHlqVp8iL/TwMg3WbaKZg8CIdmSCdnkCW3QT8=","hAhu8xNV6mIq4BPbje7mtlaB6rB9cnfpIkWsJTknocg=","EMmFm2Rvgw9UN/m5beCrxZ/0gK4sFx1rwrh4gdgnDSU=","Tp7HhdwydIvOa6w2bZfuPkEodLiDolooQOMj/RIqWD0=","BFYbEU1ne8O3890ApBmMSlCeMI8nMAZQEuo2W9qZIkw=","cehF2zRSp8AwpZ6pXjkx2ZvmkJBSnSNmX9eeZ8\u002B6O6w=","ak2/1eDOLIr8FN405ijsTWdZezAB4g53eQWw0BRWqpE=","iW599fFesdQ0y47pwj/FPUlHI/BG3klZVY4mfV97P7E=","XmS3sUENiF0muPKWCBQatKsMlhE11bSuzQjyQAwIqKY=","S84gXGiw17\u002BKUQqQ8WJGAEK7hmpmAFWuyw442W9m9vg=","Q0c94I84UXhvgssxmoOEeZZVYCQJZjts/ihDLFaCiss=","NH/A6t7u0uFF9sN6qoIt8K8nBlLJTutXBZ9u64pFEkc=","k37rU8U3X6kHrF9mPvy\u002B6vGHN\u002BmRwd1Rsu9i5oc6XJ4="],"CachedAssets":{},"CachedCopyCandidates":{}} \ No newline at end of file +{"GlobalPropertiesHash":"N2len2uEF6pGj8Qv3c4lMAeSFUjWl3rJ1rxPPY4/gB8=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["ovSerYHPMi4ExhJn2xU4WmJOZFaSXPk63P4ISGtQoag=","t8/S/iqD\u002BWOqoqxZIUWy\u002B0CcyTxhFe\u002B2vqS6syOPh/g=","mVmHEtzmBWHAiYW83bThvmsAmJe7oQFzJayYA2a6PXk=","DJbjU5RSeu8ssKk6\u002BU9qcxdWKLA7PaURGpcwMtU1cds=","6VuM8RXxuOppytZc57Uu0vfEpQ9I3GXlnrIiYTN3XfE=","qujjEy2OAvAD8tqujNixipvOC/CDKEPXWqs9\u002BY4LFaE=","7WuNDk23eyfNe62PHykuRmy3161tRcARFgNWu/aCgOU=","jurLJARZjB7Fe9JZEUjWenuLIUJ/sw\u002Bx/o88BnaFTQM=","AgpupSW\u002BrcNbe52yu92bURql10h5\u002BRXymMC1zzF8wBM=","n2t0OoSd\u002B9NIbEadHYn7A7hwpWm6gJFg2djhVViRYng=","Sd/GZUkwZ4Q8w0TCBY95I\u002BxxWZm7Xp3xfksG3IkBDbA=","2IBypkfqBOLTlleDMyYeWTHw1dZ5UaSN8Vi9nmT2J4Q=","Lnw840ru88dnnZSKFinR4LTzOZNDJZ89SuvDs3LG5dY=","xLaUDp7TmLTsx9D\u002BuLLhgqu\u002BJtD5qDLs78ujVLoNhD8=","SgpHkk6QnWRH2tChObAeejM8HLdc51H8B4SCozq1l9g=","cWbFJtEIrIyk935jQQFMHU54PZ9RdwmE1BHwt0UobPU=","R0BAVdym78gDoKsSMzBsb6x2W951BlKFN0FNFYCsCX0=","E2ywdGQj0a0y7VMb8A2SagnNbmvdgNrFzjMdvqqV\u002BwY=","eKWaGHod6XeCFKA2syO4b5bjGd52KeRMe2lxebLpbr0=","6Gt\u002BhW0YD4AIfi3\u002B0JWOcj5ZoRHBh\u002Bd/73EHzLb9ZFo=","E/hX5PlBL0xni6OyXeL\u002BzEtGzj0DfWxsFDaHAUwGu0g=","I4pM727TacYD1RDXN0wzY1zglsMaABlr19WVkApraeA=","q4hWoO1ud\u002BwqFwmCG1nzekXs8nQ7QQMO9l3OKCx3XQo=","M6YvTp/SYon85swfQmM8j\u002BpvvhMDCpXhh\u002BS\u002B62d/V8A=","xmR8fiTLL43ux/I8xI3x9qDZOQjmbEpSVczpZKX/o\u002BU=","rPWN7AcG4RCNgoc7gqqe5bzu2fZeRHANU4G5mRmf4X4=","4YEeh/h12kH0FUGdt8/sHDJmg4zYunaXhfW6POiKYQg=","I/B2gPx/d6O7VA7kVp3syVfL8hMvYHhkflGDSPirAUY=","zJOxsbpIjQOhSWamGE9OKGXBGWjYSnpjnXmsdC56bzo=","6MXGnBspymDhNbACXBV1es99mw15UCxkoq0pSEcWwck=","vwqCCdlnynihoratP5HTjoE6JShLlWi4O5KC5cFdw2s=","ScQoTm373N8A9VaM33H8osIAb0hMiQB3cU1gvaxCLMg=","5Wb9KEGOvI68lY1zg533rWI/3u1c2pizlvhvFBW\u002BT\u002BU=","crQzyJw61YMAO/5cQfffHdBTSXO4POIRR3UPwYueZfY=","WA6BQ4K/xJ4kSdHf0dPt16vUqlYSHp\u002BquO1y\u002Br4idlU=","X\u002ByfyT2MuAWgf9UmpGLy/DJi6r3xLJ7R0fjn\u002BO3\u002BR\u002Bo=","n\u002BDKXe9Y3zHWEn4UB/eNHQTMuhDctkV5BDSwuliCKYo=","tUzryyDyISAnyr1e7ujmEglKl80GaEbNkw0uWsRegIM=","T1MNLl33nCZGSd4XbUBoRmZ1fyK\u002BBWsY0O4NHWiadQ0=","1GJdKBhQwxAongm2xWk7yLdbPyYKlYs\u002BByo/FSwa2Og=","QaD0ihDfiZcRw8Fa5XSqStAEkcFjb0xglTXrbeJN4a8=","ajlLSJ\u002BIWKj8EKV35W1hH4reyjN9/r1Ch8e1dBNjBSw=","DcApRy4nhjlP662diHmukEKqYuyoe0KHyOxGVdr9PyM=","zl\u002BzcRoxnXPakxxXJN6l9VLMwGk\u002By/SQT8B0WSnZMvM=","DiVsG2cevQdVuEwxHL\u002BgPGxh9fRtM3xn1Ix89OU01l4=","UKin6fGxIhO8Gs7LkLmN4kuS0Kl9uZWqgc6x7t2/xf0=","ejq560JF7/oAnu6I4VFt5f2wcSlzaEHpYTqsRh06o9A=","GDvNJZr3M2dgiymsy98U2bIMNajpHpIqUgn3VJu89NQ=","niE7G3oChy6PoSAzXj1Gj8yXNzqzO2SehGWXSGOs3ws=","TWCaa80sCF0UE7aeFJzSDp8vXtYi5Kf\u002Bv1v39TnyKs0=","SOIv4cDkxXKCivZ9A4sABqxsRRoomBeZ1nfsqaqq3aA=","ai1CABE7/c47ypIkjaDit5lzyUBLWjvvNxLvrggAohE=","2ioxqlu0rAxIbeWDbnlN9oLjD\u002BeRmektYla3y9AGc88=","ZWzbAgAFew9xp1iyo7knZbDaqWIv4Hm\u002BwCk9vPDUBSE=","HgxqJP3ldiIafkTvBBwB/28T3diIAJ7oN3hqfgQ9Kxc=","7Z/Bc6UO\u002BnTwEF1Bhi8coKTRrhvPdjnS5KhFbJHZyuI=","6xvIcY53zw\u002BouYBppzZhf9j631lueCP4AepKDpPFZLc=","EaULMAdq/h9gJo6D9j18s/QsIn1pfuMmdztg65lz1Ic=","4C0vqrvHlqVp8iL/TwMg3WbaKZg8CIdmSCdnkCW3QT8=","5l59oONcKS8dt7eCb1Jl1KQROo0JXt5brXo7D3UUbv8=","lH\u002BcYGTeSlITi8crNUIH4\u002BRxQRiRY4e88TocOvh0vng=","Px5vA8TGJcLr\u002B5y3yqjtCpTe0UN6tqKi1yvSSXfLG6I=","goCVUGyC8XonApSLTimnDrBuNidRio0jhkIWxhk4Xlg=","jwwQYOC\u002BEmbB37rtLRETqMKE04p34z68esNM1UGKNQ4=","cehF2zRSp8AwpZ6pXjkx2ZvmkJBSnSNmX9eeZ8\u002B6O6w=","ak2/1eDOLIr8FN405ijsTWdZezAB4g53eQWw0BRWqpE=","iW599fFesdQ0y47pwj/FPUlHI/BG3klZVY4mfV97P7E=","Xwav5bMzoofa3AJS3UwHS/0N9gwOFGAK98BOj3jfn80=","XmS3sUENiF0muPKWCBQatKsMlhE11bSuzQjyQAwIqKY=","InRyq0ks64otvGQeyZQtrNoJRijr\u002BqZrEZL1\u002BpkYfhw=","K1H3JdbP4eHxUIKs1pVHYY0V7FP9LHPqx7K7y49dPXQ=","Ta1VuT\u002BOsmwHcct1mkKNQFmnN9jyEmAro7m0MKhdrgA=","oYS18mLC1AdNbT1PoZ\u002BP0XsiXBf25aLmQ6kPJTnwMwg=","SSPxff1jRa3LUTShzcYBoRc9exs3wQiF68G/b6uxivE=","k37rU8U3X6kHrF9mPvy\u002B6vGHN\u002BmRwd1Rsu9i5oc6XJ4="],"CachedAssets":{},"CachedCopyCandidates":{}} \ No newline at end of file diff --git a/obj/Debug/net10.0/rjsmrazor.dswa.cache.json b/obj/Debug/net10.0/rjsmrazor.dswa.cache.json index 3f2fb1c..afe7fd7 100644 --- a/obj/Debug/net10.0/rjsmrazor.dswa.cache.json +++ b/obj/Debug/net10.0/rjsmrazor.dswa.cache.json @@ -1 +1 @@ -{"GlobalPropertiesHash":"byWqKuSx1f2vxGHl3jLmGrDGSjG9+QUusOxZF5wXRRM=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["ovSerYHPMi4ExhJn2xU4WmJOZFaSXPk63P4ISGtQoag=","t8/S/iqD\u002BWOqoqxZIUWy\u002B0CcyTxhFe\u002B2vqS6syOPh/g=","mVmHEtzmBWHAiYW83bThvmsAmJe7oQFzJayYA2a6PXk=","DJbjU5RSeu8ssKk6\u002BU9qcxdWKLA7PaURGpcwMtU1cds=","6VuM8RXxuOppytZc57Uu0vfEpQ9I3GXlnrIiYTN3XfE=","qujjEy2OAvAD8tqujNixipvOC/CDKEPXWqs9\u002BY4LFaE=","7WuNDk23eyfNe62PHykuRmy3161tRcARFgNWu/aCgOU=","jurLJARZjB7Fe9JZEUjWenuLIUJ/sw\u002Bx/o88BnaFTQM=","AgpupSW\u002BrcNbe52yu92bURql10h5\u002BRXymMC1zzF8wBM=","n2t0OoSd\u002B9NIbEadHYn7A7hwpWm6gJFg2djhVViRYng=","Sd/GZUkwZ4Q8w0TCBY95I\u002BxxWZm7Xp3xfksG3IkBDbA=","2IBypkfqBOLTlleDMyYeWTHw1dZ5UaSN8Vi9nmT2J4Q=","Lnw840ru88dnnZSKFinR4LTzOZNDJZ89SuvDs3LG5dY=","xLaUDp7TmLTsx9D\u002BuLLhgqu\u002BJtD5qDLs78ujVLoNhD8=","SgpHkk6QnWRH2tChObAeejM8HLdc51H8B4SCozq1l9g=","cWbFJtEIrIyk935jQQFMHU54PZ9RdwmE1BHwt0UobPU=","R0BAVdym78gDoKsSMzBsb6x2W951BlKFN0FNFYCsCX0=","E2ywdGQj0a0y7VMb8A2SagnNbmvdgNrFzjMdvqqV\u002BwY=","eKWaGHod6XeCFKA2syO4b5bjGd52KeRMe2lxebLpbr0=","6Gt\u002BhW0YD4AIfi3\u002B0JWOcj5ZoRHBh\u002Bd/73EHzLb9ZFo=","E/hX5PlBL0xni6OyXeL\u002BzEtGzj0DfWxsFDaHAUwGu0g=","I4pM727TacYD1RDXN0wzY1zglsMaABlr19WVkApraeA=","q4hWoO1ud\u002BwqFwmCG1nzekXs8nQ7QQMO9l3OKCx3XQo=","M6YvTp/SYon85swfQmM8j\u002BpvvhMDCpXhh\u002BS\u002B62d/V8A=","xmR8fiTLL43ux/I8xI3x9qDZOQjmbEpSVczpZKX/o\u002BU=","rPWN7AcG4RCNgoc7gqqe5bzu2fZeRHANU4G5mRmf4X4=","4YEeh/h12kH0FUGdt8/sHDJmg4zYunaXhfW6POiKYQg=","I/B2gPx/d6O7VA7kVp3syVfL8hMvYHhkflGDSPirAUY=","zJOxsbpIjQOhSWamGE9OKGXBGWjYSnpjnXmsdC56bzo=","6MXGnBspymDhNbACXBV1es99mw15UCxkoq0pSEcWwck=","vwqCCdlnynihoratP5HTjoE6JShLlWi4O5KC5cFdw2s=","ScQoTm373N8A9VaM33H8osIAb0hMiQB3cU1gvaxCLMg=","5Wb9KEGOvI68lY1zg533rWI/3u1c2pizlvhvFBW\u002BT\u002BU=","crQzyJw61YMAO/5cQfffHdBTSXO4POIRR3UPwYueZfY=","WA6BQ4K/xJ4kSdHf0dPt16vUqlYSHp\u002BquO1y\u002Br4idlU=","X\u002ByfyT2MuAWgf9UmpGLy/DJi6r3xLJ7R0fjn\u002BO3\u002BR\u002Bo=","n\u002BDKXe9Y3zHWEn4UB/eNHQTMuhDctkV5BDSwuliCKYo=","tUzryyDyISAnyr1e7ujmEglKl80GaEbNkw0uWsRegIM=","T1MNLl33nCZGSd4XbUBoRmZ1fyK\u002BBWsY0O4NHWiadQ0=","1GJdKBhQwxAongm2xWk7yLdbPyYKlYs\u002BByo/FSwa2Og=","QaD0ihDfiZcRw8Fa5XSqStAEkcFjb0xglTXrbeJN4a8=","ajlLSJ\u002BIWKj8EKV35W1hH4reyjN9/r1Ch8e1dBNjBSw=","DcApRy4nhjlP662diHmukEKqYuyoe0KHyOxGVdr9PyM=","zl\u002BzcRoxnXPakxxXJN6l9VLMwGk\u002By/SQT8B0WSnZMvM=","DiVsG2cevQdVuEwxHL\u002BgPGxh9fRtM3xn1Ix89OU01l4=","UKin6fGxIhO8Gs7LkLmN4kuS0Kl9uZWqgc6x7t2/xf0=","ejq560JF7/oAnu6I4VFt5f2wcSlzaEHpYTqsRh06o9A=","GDvNJZr3M2dgiymsy98U2bIMNajpHpIqUgn3VJu89NQ=","niE7G3oChy6PoSAzXj1Gj8yXNzqzO2SehGWXSGOs3ws=","TWCaa80sCF0UE7aeFJzSDp8vXtYi5Kf\u002Bv1v39TnyKs0=","SOIv4cDkxXKCivZ9A4sABqxsRRoomBeZ1nfsqaqq3aA=","GU6fHRhkxloPnx/L5QeYxDIprNNXbhjKzwM35bIsSdo=","2ioxqlu0rAxIbeWDbnlN9oLjD\u002BeRmektYla3y9AGc88=","ZWzbAgAFew9xp1iyo7knZbDaqWIv4Hm\u002BwCk9vPDUBSE=","pk1NXMdmexfgnN111i\u002B2VCt\u002Bh5FN6lNCwX\u002Bg5BR1Sgs=","SQ6Z3ikpNt1Ct\u002BC2yaguToCnzonqjZYbVGooOo7AY7Q=","gqFfW6e8\u002B0CzyL\u002BpttrsEfJhuLIlj/roGVa/T1vbFPo=","4C0vqrvHlqVp8iL/TwMg3WbaKZg8CIdmSCdnkCW3QT8=","hAhu8xNV6mIq4BPbje7mtlaB6rB9cnfpIkWsJTknocg=","EMmFm2Rvgw9UN/m5beCrxZ/0gK4sFx1rwrh4gdgnDSU=","Tp7HhdwydIvOa6w2bZfuPkEodLiDolooQOMj/RIqWD0=","BFYbEU1ne8O3890ApBmMSlCeMI8nMAZQEuo2W9qZIkw=","cehF2zRSp8AwpZ6pXjkx2ZvmkJBSnSNmX9eeZ8\u002B6O6w=","ak2/1eDOLIr8FN405ijsTWdZezAB4g53eQWw0BRWqpE=","iW599fFesdQ0y47pwj/FPUlHI/BG3klZVY4mfV97P7E=","XmS3sUENiF0muPKWCBQatKsMlhE11bSuzQjyQAwIqKY=","S84gXGiw17\u002BKUQqQ8WJGAEK7hmpmAFWuyw442W9m9vg=","Q0c94I84UXhvgssxmoOEeZZVYCQJZjts/ihDLFaCiss=","NH/A6t7u0uFF9sN6qoIt8K8nBlLJTutXBZ9u64pFEkc=","k37rU8U3X6kHrF9mPvy\u002B6vGHN\u002BmRwd1Rsu9i5oc6XJ4="],"CachedAssets":{"XmS3sUENiF0muPKWCBQatKsMlhE11bSuzQjyQAwIqKY=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\Components\\Layout\\ReconnectModal.razor.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\","BasePath":"/","RelativePath":"Components/Layout/ReconnectModal#[.{fingerprint}]?.razor.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"abdmv1u4y3","Integrity":"5u\u002Bv90fOttEFzE2qHMGMOXmy93Ik/BaGqLrrnu6mdGU=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"Components\\Layout\\ReconnectModal.razor.js","FileLength":2448,"LastWriteTime":"2026-05-20T13:00:29.0736022+00:00"}},"CachedCopyCandidates":{}} \ No newline at end of file +{"GlobalPropertiesHash":"byWqKuSx1f2vxGHl3jLmGrDGSjG9+QUusOxZF5wXRRM=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["ovSerYHPMi4ExhJn2xU4WmJOZFaSXPk63P4ISGtQoag=","t8/S/iqD\u002BWOqoqxZIUWy\u002B0CcyTxhFe\u002B2vqS6syOPh/g=","mVmHEtzmBWHAiYW83bThvmsAmJe7oQFzJayYA2a6PXk=","DJbjU5RSeu8ssKk6\u002BU9qcxdWKLA7PaURGpcwMtU1cds=","6VuM8RXxuOppytZc57Uu0vfEpQ9I3GXlnrIiYTN3XfE=","qujjEy2OAvAD8tqujNixipvOC/CDKEPXWqs9\u002BY4LFaE=","7WuNDk23eyfNe62PHykuRmy3161tRcARFgNWu/aCgOU=","jurLJARZjB7Fe9JZEUjWenuLIUJ/sw\u002Bx/o88BnaFTQM=","AgpupSW\u002BrcNbe52yu92bURql10h5\u002BRXymMC1zzF8wBM=","n2t0OoSd\u002B9NIbEadHYn7A7hwpWm6gJFg2djhVViRYng=","Sd/GZUkwZ4Q8w0TCBY95I\u002BxxWZm7Xp3xfksG3IkBDbA=","2IBypkfqBOLTlleDMyYeWTHw1dZ5UaSN8Vi9nmT2J4Q=","Lnw840ru88dnnZSKFinR4LTzOZNDJZ89SuvDs3LG5dY=","xLaUDp7TmLTsx9D\u002BuLLhgqu\u002BJtD5qDLs78ujVLoNhD8=","SgpHkk6QnWRH2tChObAeejM8HLdc51H8B4SCozq1l9g=","cWbFJtEIrIyk935jQQFMHU54PZ9RdwmE1BHwt0UobPU=","R0BAVdym78gDoKsSMzBsb6x2W951BlKFN0FNFYCsCX0=","E2ywdGQj0a0y7VMb8A2SagnNbmvdgNrFzjMdvqqV\u002BwY=","eKWaGHod6XeCFKA2syO4b5bjGd52KeRMe2lxebLpbr0=","6Gt\u002BhW0YD4AIfi3\u002B0JWOcj5ZoRHBh\u002Bd/73EHzLb9ZFo=","E/hX5PlBL0xni6OyXeL\u002BzEtGzj0DfWxsFDaHAUwGu0g=","I4pM727TacYD1RDXN0wzY1zglsMaABlr19WVkApraeA=","q4hWoO1ud\u002BwqFwmCG1nzekXs8nQ7QQMO9l3OKCx3XQo=","M6YvTp/SYon85swfQmM8j\u002BpvvhMDCpXhh\u002BS\u002B62d/V8A=","xmR8fiTLL43ux/I8xI3x9qDZOQjmbEpSVczpZKX/o\u002BU=","rPWN7AcG4RCNgoc7gqqe5bzu2fZeRHANU4G5mRmf4X4=","4YEeh/h12kH0FUGdt8/sHDJmg4zYunaXhfW6POiKYQg=","I/B2gPx/d6O7VA7kVp3syVfL8hMvYHhkflGDSPirAUY=","zJOxsbpIjQOhSWamGE9OKGXBGWjYSnpjnXmsdC56bzo=","6MXGnBspymDhNbACXBV1es99mw15UCxkoq0pSEcWwck=","vwqCCdlnynihoratP5HTjoE6JShLlWi4O5KC5cFdw2s=","ScQoTm373N8A9VaM33H8osIAb0hMiQB3cU1gvaxCLMg=","5Wb9KEGOvI68lY1zg533rWI/3u1c2pizlvhvFBW\u002BT\u002BU=","crQzyJw61YMAO/5cQfffHdBTSXO4POIRR3UPwYueZfY=","WA6BQ4K/xJ4kSdHf0dPt16vUqlYSHp\u002BquO1y\u002Br4idlU=","X\u002ByfyT2MuAWgf9UmpGLy/DJi6r3xLJ7R0fjn\u002BO3\u002BR\u002Bo=","n\u002BDKXe9Y3zHWEn4UB/eNHQTMuhDctkV5BDSwuliCKYo=","tUzryyDyISAnyr1e7ujmEglKl80GaEbNkw0uWsRegIM=","T1MNLl33nCZGSd4XbUBoRmZ1fyK\u002BBWsY0O4NHWiadQ0=","1GJdKBhQwxAongm2xWk7yLdbPyYKlYs\u002BByo/FSwa2Og=","QaD0ihDfiZcRw8Fa5XSqStAEkcFjb0xglTXrbeJN4a8=","ajlLSJ\u002BIWKj8EKV35W1hH4reyjN9/r1Ch8e1dBNjBSw=","DcApRy4nhjlP662diHmukEKqYuyoe0KHyOxGVdr9PyM=","zl\u002BzcRoxnXPakxxXJN6l9VLMwGk\u002By/SQT8B0WSnZMvM=","DiVsG2cevQdVuEwxHL\u002BgPGxh9fRtM3xn1Ix89OU01l4=","UKin6fGxIhO8Gs7LkLmN4kuS0Kl9uZWqgc6x7t2/xf0=","ejq560JF7/oAnu6I4VFt5f2wcSlzaEHpYTqsRh06o9A=","GDvNJZr3M2dgiymsy98U2bIMNajpHpIqUgn3VJu89NQ=","niE7G3oChy6PoSAzXj1Gj8yXNzqzO2SehGWXSGOs3ws=","TWCaa80sCF0UE7aeFJzSDp8vXtYi5Kf\u002Bv1v39TnyKs0=","SOIv4cDkxXKCivZ9A4sABqxsRRoomBeZ1nfsqaqq3aA=","ai1CABE7/c47ypIkjaDit5lzyUBLWjvvNxLvrggAohE=","2ioxqlu0rAxIbeWDbnlN9oLjD\u002BeRmektYla3y9AGc88=","ZWzbAgAFew9xp1iyo7knZbDaqWIv4Hm\u002BwCk9vPDUBSE=","HgxqJP3ldiIafkTvBBwB/28T3diIAJ7oN3hqfgQ9Kxc=","7Z/Bc6UO\u002BnTwEF1Bhi8coKTRrhvPdjnS5KhFbJHZyuI=","6xvIcY53zw\u002BouYBppzZhf9j631lueCP4AepKDpPFZLc=","EaULMAdq/h9gJo6D9j18s/QsIn1pfuMmdztg65lz1Ic=","4C0vqrvHlqVp8iL/TwMg3WbaKZg8CIdmSCdnkCW3QT8=","5l59oONcKS8dt7eCb1Jl1KQROo0JXt5brXo7D3UUbv8=","lH\u002BcYGTeSlITi8crNUIH4\u002BRxQRiRY4e88TocOvh0vng=","Px5vA8TGJcLr\u002B5y3yqjtCpTe0UN6tqKi1yvSSXfLG6I=","goCVUGyC8XonApSLTimnDrBuNidRio0jhkIWxhk4Xlg=","jwwQYOC\u002BEmbB37rtLRETqMKE04p34z68esNM1UGKNQ4=","cehF2zRSp8AwpZ6pXjkx2ZvmkJBSnSNmX9eeZ8\u002B6O6w=","ak2/1eDOLIr8FN405ijsTWdZezAB4g53eQWw0BRWqpE=","iW599fFesdQ0y47pwj/FPUlHI/BG3klZVY4mfV97P7E=","Xwav5bMzoofa3AJS3UwHS/0N9gwOFGAK98BOj3jfn80=","XmS3sUENiF0muPKWCBQatKsMlhE11bSuzQjyQAwIqKY=","InRyq0ks64otvGQeyZQtrNoJRijr\u002BqZrEZL1\u002BpkYfhw=","K1H3JdbP4eHxUIKs1pVHYY0V7FP9LHPqx7K7y49dPXQ=","Ta1VuT\u002BOsmwHcct1mkKNQFmnN9jyEmAro7m0MKhdrgA=","oYS18mLC1AdNbT1PoZ\u002BP0XsiXBf25aLmQ6kPJTnwMwg=","SSPxff1jRa3LUTShzcYBoRc9exs3wQiF68G/b6uxivE=","k37rU8U3X6kHrF9mPvy\u002B6vGHN\u002BmRwd1Rsu9i5oc6XJ4="],"CachedAssets":{"XmS3sUENiF0muPKWCBQatKsMlhE11bSuzQjyQAwIqKY=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\Components\\Layout\\ReconnectModal.razor.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\","BasePath":"/","RelativePath":"Components/Layout/ReconnectModal#[.{fingerprint}]?.razor.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"abdmv1u4y3","Integrity":"5u\u002Bv90fOttEFzE2qHMGMOXmy93Ik/BaGqLrrnu6mdGU=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"Components\\Layout\\ReconnectModal.razor.js","FileLength":2448,"LastWriteTime":"2026-05-20T13:00:29.0736022+00:00"}},"CachedCopyCandidates":{}} \ No newline at end of file diff --git a/obj/Debug/net10.0/rpswa.dswa.cache.json b/obj/Debug/net10.0/rpswa.dswa.cache.json index 4ea2603..ff6ecf0 100644 --- a/obj/Debug/net10.0/rpswa.dswa.cache.json +++ b/obj/Debug/net10.0/rpswa.dswa.cache.json @@ -1 +1 @@ -{"GlobalPropertiesHash":"/uMkUb0sqJNKdpUEZJImZl22+O7IzLoiXx8m0phzS5Y=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["ovSerYHPMi4ExhJn2xU4WmJOZFaSXPk63P4ISGtQoag=","t8/S/iqD\u002BWOqoqxZIUWy\u002B0CcyTxhFe\u002B2vqS6syOPh/g=","mVmHEtzmBWHAiYW83bThvmsAmJe7oQFzJayYA2a6PXk=","DJbjU5RSeu8ssKk6\u002BU9qcxdWKLA7PaURGpcwMtU1cds=","6VuM8RXxuOppytZc57Uu0vfEpQ9I3GXlnrIiYTN3XfE=","qujjEy2OAvAD8tqujNixipvOC/CDKEPXWqs9\u002BY4LFaE=","7WuNDk23eyfNe62PHykuRmy3161tRcARFgNWu/aCgOU=","jurLJARZjB7Fe9JZEUjWenuLIUJ/sw\u002Bx/o88BnaFTQM=","AgpupSW\u002BrcNbe52yu92bURql10h5\u002BRXymMC1zzF8wBM=","n2t0OoSd\u002B9NIbEadHYn7A7hwpWm6gJFg2djhVViRYng=","Sd/GZUkwZ4Q8w0TCBY95I\u002BxxWZm7Xp3xfksG3IkBDbA=","2IBypkfqBOLTlleDMyYeWTHw1dZ5UaSN8Vi9nmT2J4Q=","Lnw840ru88dnnZSKFinR4LTzOZNDJZ89SuvDs3LG5dY=","xLaUDp7TmLTsx9D\u002BuLLhgqu\u002BJtD5qDLs78ujVLoNhD8=","SgpHkk6QnWRH2tChObAeejM8HLdc51H8B4SCozq1l9g=","cWbFJtEIrIyk935jQQFMHU54PZ9RdwmE1BHwt0UobPU=","R0BAVdym78gDoKsSMzBsb6x2W951BlKFN0FNFYCsCX0=","E2ywdGQj0a0y7VMb8A2SagnNbmvdgNrFzjMdvqqV\u002BwY=","eKWaGHod6XeCFKA2syO4b5bjGd52KeRMe2lxebLpbr0=","6Gt\u002BhW0YD4AIfi3\u002B0JWOcj5ZoRHBh\u002Bd/73EHzLb9ZFo=","E/hX5PlBL0xni6OyXeL\u002BzEtGzj0DfWxsFDaHAUwGu0g=","I4pM727TacYD1RDXN0wzY1zglsMaABlr19WVkApraeA=","q4hWoO1ud\u002BwqFwmCG1nzekXs8nQ7QQMO9l3OKCx3XQo=","M6YvTp/SYon85swfQmM8j\u002BpvvhMDCpXhh\u002BS\u002B62d/V8A=","xmR8fiTLL43ux/I8xI3x9qDZOQjmbEpSVczpZKX/o\u002BU=","rPWN7AcG4RCNgoc7gqqe5bzu2fZeRHANU4G5mRmf4X4=","4YEeh/h12kH0FUGdt8/sHDJmg4zYunaXhfW6POiKYQg=","I/B2gPx/d6O7VA7kVp3syVfL8hMvYHhkflGDSPirAUY=","zJOxsbpIjQOhSWamGE9OKGXBGWjYSnpjnXmsdC56bzo=","6MXGnBspymDhNbACXBV1es99mw15UCxkoq0pSEcWwck=","vwqCCdlnynihoratP5HTjoE6JShLlWi4O5KC5cFdw2s=","ScQoTm373N8A9VaM33H8osIAb0hMiQB3cU1gvaxCLMg=","5Wb9KEGOvI68lY1zg533rWI/3u1c2pizlvhvFBW\u002BT\u002BU=","crQzyJw61YMAO/5cQfffHdBTSXO4POIRR3UPwYueZfY=","WA6BQ4K/xJ4kSdHf0dPt16vUqlYSHp\u002BquO1y\u002Br4idlU=","X\u002ByfyT2MuAWgf9UmpGLy/DJi6r3xLJ7R0fjn\u002BO3\u002BR\u002Bo=","n\u002BDKXe9Y3zHWEn4UB/eNHQTMuhDctkV5BDSwuliCKYo=","tUzryyDyISAnyr1e7ujmEglKl80GaEbNkw0uWsRegIM=","T1MNLl33nCZGSd4XbUBoRmZ1fyK\u002BBWsY0O4NHWiadQ0=","1GJdKBhQwxAongm2xWk7yLdbPyYKlYs\u002BByo/FSwa2Og=","QaD0ihDfiZcRw8Fa5XSqStAEkcFjb0xglTXrbeJN4a8=","ajlLSJ\u002BIWKj8EKV35W1hH4reyjN9/r1Ch8e1dBNjBSw=","DcApRy4nhjlP662diHmukEKqYuyoe0KHyOxGVdr9PyM=","zl\u002BzcRoxnXPakxxXJN6l9VLMwGk\u002By/SQT8B0WSnZMvM=","DiVsG2cevQdVuEwxHL\u002BgPGxh9fRtM3xn1Ix89OU01l4=","UKin6fGxIhO8Gs7LkLmN4kuS0Kl9uZWqgc6x7t2/xf0=","ejq560JF7/oAnu6I4VFt5f2wcSlzaEHpYTqsRh06o9A=","GDvNJZr3M2dgiymsy98U2bIMNajpHpIqUgn3VJu89NQ=","niE7G3oChy6PoSAzXj1Gj8yXNzqzO2SehGWXSGOs3ws=","TWCaa80sCF0UE7aeFJzSDp8vXtYi5Kf\u002Bv1v39TnyKs0=","SOIv4cDkxXKCivZ9A4sABqxsRRoomBeZ1nfsqaqq3aA=","GU6fHRhkxloPnx/L5QeYxDIprNNXbhjKzwM35bIsSdo=","2ioxqlu0rAxIbeWDbnlN9oLjD\u002BeRmektYla3y9AGc88=","ZWzbAgAFew9xp1iyo7knZbDaqWIv4Hm\u002BwCk9vPDUBSE=","pk1NXMdmexfgnN111i\u002B2VCt\u002Bh5FN6lNCwX\u002Bg5BR1Sgs=","SQ6Z3ikpNt1Ct\u002BC2yaguToCnzonqjZYbVGooOo7AY7Q=","gqFfW6e8\u002B0CzyL\u002BpttrsEfJhuLIlj/roGVa/T1vbFPo=","4C0vqrvHlqVp8iL/TwMg3WbaKZg8CIdmSCdnkCW3QT8=","hAhu8xNV6mIq4BPbje7mtlaB6rB9cnfpIkWsJTknocg=","EMmFm2Rvgw9UN/m5beCrxZ/0gK4sFx1rwrh4gdgnDSU=","Tp7HhdwydIvOa6w2bZfuPkEodLiDolooQOMj/RIqWD0=","BFYbEU1ne8O3890ApBmMSlCeMI8nMAZQEuo2W9qZIkw=","cehF2zRSp8AwpZ6pXjkx2ZvmkJBSnSNmX9eeZ8\u002B6O6w=","ak2/1eDOLIr8FN405ijsTWdZezAB4g53eQWw0BRWqpE=","iW599fFesdQ0y47pwj/FPUlHI/BG3klZVY4mfV97P7E="],"CachedAssets":{"ovSerYHPMi4ExhJn2xU4WmJOZFaSXPk63P4ISGtQoag=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\app.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"app#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"zhpirmksq2","Integrity":"aVs2q7lpDiDfjxp0TyLLSFm7W3Uj6h82MKPlGVssfE0=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\app.css","FileLength":2172,"LastWriteTime":"2026-05-20T13:13:23.5863493+00:00"},"DJbjU5RSeu8ssKk6\u002BU9qcxdWKLA7PaURGpcwMtU1cds=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"bqjiyaj88i","Integrity":"Yy5/hBqRmmU2MJ1TKwP2aXoTO6\u002BOjzrLmJIsC2Wy4H8=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.css","FileLength":70329,"LastWriteTime":"2026-05-20T13:00:28.5512686+00:00"},"6VuM8RXxuOppytZc57Uu0vfEpQ9I3GXlnrIiYTN3XfE=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"c2jlpeoesf","Integrity":"xAT\u002Bn25FE5hvOjj2fG4YdOwr1bl4IlAJBNg6PbhLT2E=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.css.map","FileLength":203221,"LastWriteTime":"2026-05-20T13:00:28.5727798+00:00"},"qujjEy2OAvAD8tqujNixipvOC/CDKEPXWqs9\u002BY4LFaE=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"erw9l3u2r3","Integrity":"5nDHMGiyfZHl3UXePuhLDQR9ncPfBR1HJeZLXyJNV24=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.min.css","FileLength":51795,"LastWriteTime":"2026-05-20T13:00:28.5727798+00:00"},"7WuNDk23eyfNe62PHykuRmy3161tRcARFgNWu/aCgOU=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"aexeepp0ev","Integrity":"kgL\u002BxwVmM8IOs15lnoHt9daR2LRMiBG/cYgUPcKQOY4=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.min.css.map","FileLength":115986,"LastWriteTime":"2026-05-20T13:00:28.5888342+00:00"},"jurLJARZjB7Fe9JZEUjWenuLIUJ/sw\u002Bx/o88BnaFTQM=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.rtl#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"d7shbmvgxk","Integrity":"CZxoF8zjaLlyVkcvVCDlc8CeQR1w1RMrvgYx30cs8kM=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.css","FileLength":70403,"LastWriteTime":"2026-05-20T13:00:28.5989136+00:00"},"AgpupSW\u002BrcNbe52yu92bURql10h5\u002BRXymMC1zzF8wBM=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"ausgxo2sd3","Integrity":"/siQUA8yX830j\u002BcL4amKHY3yBtn3n8z3Eg\u002BVZ15f90k=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.css.map","FileLength":203225,"LastWriteTime":"2026-05-20T13:00:28.6243226+00:00"},"n2t0OoSd\u002B9NIbEadHYn7A7hwpWm6gJFg2djhVViRYng=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"k8d9w2qqmf","Integrity":"vMxTcvkC4Ly7LiAT3G8yEy9EpTr7Fge4SczWp07/p3k=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.min.css","FileLength":51870,"LastWriteTime":"2026-05-20T13:00:28.6470877+00:00"},"Sd/GZUkwZ4Q8w0TCBY95I\u002BxxWZm7Xp3xfksG3IkBDbA=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"cosvhxvwiu","Integrity":"7GdOlw7U/wgyaeUtFmxPz5/MphdvVSPtVOOlTn9c33Q=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.min.css.map","FileLength":116063,"LastWriteTime":"2026-05-20T13:00:28.6572385+00:00"},"2IBypkfqBOLTlleDMyYeWTHw1dZ5UaSN8Vi9nmT2J4Q=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"ub07r2b239","Integrity":"lo9YI82OF03vojdu\u002BXOR3\u002BDRrLIpMhpzZNmHbM5CDMA=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.css","FileLength":12065,"LastWriteTime":"2026-05-20T13:00:28.6798889+00:00"},"Lnw840ru88dnnZSKFinR4LTzOZNDJZ89SuvDs3LG5dY=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"fvhpjtyr6v","Integrity":"RXJ/QZiBfHXoPtXR2EgC\u002BbFo2pe3GtbZO722RtiLGzQ=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.css.map","FileLength":129371,"LastWriteTime":"2026-05-20T13:00:28.6935976+00:00"},"xLaUDp7TmLTsx9D\u002BuLLhgqu\u002BJtD5qDLs78ujVLoNhD8=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"b7pk76d08c","Integrity":"l8vt5oozv958eMd9TFsPAWgl9JJK9YKfbVSs8mchQ84=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.min.css","FileLength":10126,"LastWriteTime":"2026-05-20T13:00:28.6935976+00:00"},"SgpHkk6QnWRH2tChObAeejM8HLdc51H8B4SCozq1l9g=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"fsbi9cje9m","Integrity":"0eqVT62kqRLJh9oTqLeIH4UnQskqVjib8hl2fXxl4lg=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.min.css.map","FileLength":51369,"LastWriteTime":"2026-05-20T13:00:28.7096015+00:00"},"cWbFJtEIrIyk935jQQFMHU54PZ9RdwmE1BHwt0UobPU=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"rzd6atqjts","Integrity":"V8psnHoJS/MPlCXWwc/J3tGtp9c3gGFRmqsIQgpn\u002BGg=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.css","FileLength":12058,"LastWriteTime":"2026-05-20T13:00:28.7096015+00:00"},"R0BAVdym78gDoKsSMzBsb6x2W951BlKFN0FNFYCsCX0=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"ee0r1s7dh0","Integrity":"OoQVwh7Arp7bVoK2ZiTx2S//KrnPrSPzPZ93CqCMhe8=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.css.map","FileLength":129386,"LastWriteTime":"2026-05-20T13:00:28.7252957+00:00"},"E2ywdGQj0a0y7VMb8A2SagnNbmvdgNrFzjMdvqqV\u002BwY=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"dxx9fxp4il","Integrity":"/8jh8hcEMFKyS6goWqnNu7t3EzZPCGdQZgO6sCkI8tI=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.min.css","FileLength":10198,"LastWriteTime":"2026-05-20T13:00:28.7279863+00:00"},"eKWaGHod6XeCFKA2syO4b5bjGd52KeRMe2lxebLpbr0=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"jd9uben2k1","Integrity":"910zw\u002BrMdcg0Ls48ATp65vEn8rd5HvPxOKm2x3/CBII=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.min.css.map","FileLength":63943,"LastWriteTime":"2026-05-20T13:00:28.7279863+00:00"},"6Gt\u002BhW0YD4AIfi3\u002B0JWOcj5ZoRHBh\u002Bd/73EHzLb9ZFo=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"khv3u5hwcm","Integrity":"2BubgNUPlQSF/0wLFcRXQ/Yjzk9vsUbDAeK2QM\u002Bh\u002Byo=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.css","FileLength":107823,"LastWriteTime":"2026-05-20T13:00:28.7413395+00:00"},"E/hX5PlBL0xni6OyXeL\u002BzEtGzj0DfWxsFDaHAUwGu0g=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"r4e9w2rdcm","Integrity":"Nfjrc4Ur9Fv2oBEswQWIyBnNDP99q\u002BLhL\u002Bz9553O0cY=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.css.map","FileLength":267535,"LastWriteTime":"2026-05-20T13:00:28.7471362+00:00"},"I4pM727TacYD1RDXN0wzY1zglsMaABlr19WVkApraeA=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"lcd1t2u6c8","Integrity":"KyE9xbKO9CuYx0HXpIKgsWIvXkAfITtiQ172j26wmRs=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.min.css","FileLength":85352,"LastWriteTime":"2026-05-20T13:00:28.7512991+00:00"},"q4hWoO1ud\u002BwqFwmCG1nzekXs8nQ7QQMO9l3OKCx3XQo=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"c2oey78nd0","Integrity":"rHDmip4JZzuaGOcSQ1QSQrIbG0Eb3Zja9whqSF1zYIU=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.min.css.map","FileLength":180381,"LastWriteTime":"2026-05-20T13:00:28.7732126+00:00"},"M6YvTp/SYon85swfQmM8j\u002BpvvhMDCpXhh\u002BS\u002B62d/V8A=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"tdbxkamptv","Integrity":"H6wkBbSwjua2veJoThJo4uy161jp\u002BDOiZTloUlcZ6qQ=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.css","FileLength":107691,"LastWriteTime":"2026-05-20T13:00:28.7732126+00:00"},"xmR8fiTLL43ux/I8xI3x9qDZOQjmbEpSVczpZKX/o\u002BU=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"j5mq2jizvt","Integrity":"p0BVq5Ve/dohBIdfbrZsoQNu02JSsKh1g0wbyiQiUaU=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.css.map","FileLength":267476,"LastWriteTime":"2026-05-20T13:00:28.7732126+00:00"},"rPWN7AcG4RCNgoc7gqqe5bzu2fZeRHANU4G5mRmf4X4=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"06098lyss8","Integrity":"GAUum6FjwQ8HrXGaoFRnHTqQQLpljXGavT7mBX8E9qU=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.min.css","FileLength":85281,"LastWriteTime":"2026-05-20T13:00:28.788869+00:00"},"4YEeh/h12kH0FUGdt8/sHDJmg4zYunaXhfW6POiKYQg=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"nvvlpmu67g","Integrity":"o8XK32mcY/FfcOQ1D2HJvVuZ0YTXSURZDLXCK0fnQeA=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.min.css.map","FileLength":180217,"LastWriteTime":"2026-05-20T13:00:28.7962157+00:00"},"I/B2gPx/d6O7VA7kVp3syVfL8hMvYHhkflGDSPirAUY=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"s35ty4nyc5","Integrity":"GKEF18s44B5e0MolXAkpkqLiEbOVlKf6VyYr/G/E6pw=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.css","FileLength":281046,"LastWriteTime":"2026-05-20T13:00:28.8211312+00:00"},"zJOxsbpIjQOhSWamGE9OKGXBGWjYSnpjnXmsdC56bzo=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"pj5nd1wqec","Integrity":"KzNVR3p7UZGba94dnCtlc6jXjK5urSPiZ/eNnKTmDkw=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.css.map","FileLength":679755,"LastWriteTime":"2026-05-20T13:00:28.8211312+00:00"},"6MXGnBspymDhNbACXBV1es99mw15UCxkoq0pSEcWwck=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"46ein0sx1k","Integrity":"PI8n5gCcz9cQqQXm3PEtDuPG8qx9oFsFctPg0S5zb8g=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.min.css","FileLength":232803,"LastWriteTime":"2026-05-20T13:00:28.8544118+00:00"},"vwqCCdlnynihoratP5HTjoE6JShLlWi4O5KC5cFdw2s=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"v0zj4ognzu","Integrity":"8SM4U2NQpCLGTQLW5D/x3qSTwxVq2CP\u002BGXYc3V1WwFs=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.min.css.map","FileLength":589892,"LastWriteTime":"2026-05-20T13:00:28.8640202+00:00"},"ScQoTm373N8A9VaM33H8osIAb0hMiQB3cU1gvaxCLMg=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.rtl#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"37tfw0ft22","Integrity":"j5E4XIj1p1kNnDi0x1teX9RXoh1/FNlPvCML9YmRh2Q=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.css","FileLength":280259,"LastWriteTime":"2026-05-20T13:00:28.886874+00:00"},"5Wb9KEGOvI68lY1zg533rWI/3u1c2pizlvhvFBW\u002BT\u002BU=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.rtl.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"hrwsygsryq","Integrity":"3bYWUiiVYMZfv2wq5JnXIsHlQKgSKs/VcRivgjgZ1ho=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.css.map","FileLength":679615,"LastWriteTime":"2026-05-20T13:00:28.8999809+00:00"},"crQzyJw61YMAO/5cQfffHdBTSXO4POIRR3UPwYueZfY=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.rtl.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"pk9g2wxc8p","Integrity":"h5lE7Nm8SkeIpBHHYxN99spP3VuGFKl5NZgsocil7zk=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.min.css","FileLength":232911,"LastWriteTime":"2026-05-20T13:00:28.9171977+00:00"},"WA6BQ4K/xJ4kSdHf0dPt16vUqlYSHp\u002BquO1y\u002Br4idlU=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.rtl.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"ft3s53vfgj","Integrity":"rTzXlnepcb/vgFAiB\u002BU7ODQAfOlJLfM3gY6IU7eIANk=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.min.css.map","FileLength":589087,"LastWriteTime":"2026-05-20T13:00:28.9171977+00:00"},"X\u002ByfyT2MuAWgf9UmpGLy/DJi6r3xLJ7R0fjn\u002BO3\u002BR\u002Bo=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.bundle#[.{fingerprint}]?.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"6cfz1n2cew","Integrity":"mkoRoV24jV\u002BrCPWcHDR5awPx8VuzzJKN0ibhxZ9/WaM=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.js","FileLength":207819,"LastWriteTime":"2026-05-20T13:00:28.9496198+00:00"},"n\u002BDKXe9Y3zHWEn4UB/eNHQTMuhDctkV5BDSwuliCKYo=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.js.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.bundle.js#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"6pdc2jztkx","Integrity":"Wq4aWW1rQdJ\u002B6oAgy1JQc9IBjHL9T3MKfXTBNqOv02c=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.js.map","FileLength":444579,"LastWriteTime":"2026-05-20T13:00:28.9496198+00:00"},"tUzryyDyISAnyr1e7ujmEglKl80GaEbNkw0uWsRegIM=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.min.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.bundle.min#[.{fingerprint}]?.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"493y06b0oq","Integrity":"CDOy6cOibCWEdsRiZuaHf8dSGGJRYuBGC\u002BmjoJimHGw=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.min.js","FileLength":80721,"LastWriteTime":"2026-05-20T13:00:28.9630083+00:00"},"T1MNLl33nCZGSd4XbUBoRmZ1fyK\u002BBWsY0O4NHWiadQ0=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.min.js.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.bundle.min.js#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"iovd86k7lj","Integrity":"Xj4HYxZBQ7qqHKBwa2EAugRS\u002BRHWzpcTtI49vgezUSU=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.min.js.map","FileLength":332090,"LastWriteTime":"2026-05-20T13:00:28.9858184+00:00"},"1GJdKBhQwxAongm2xWk7yLdbPyYKlYs\u002BByo/FSwa2Og=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.esm#[.{fingerprint}]?.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"vr1egmr9el","Integrity":"exiXZNJDwucXfuje3CbXPbuS6\u002BEry3z9sP\u002Bpgmvh8nA=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.js","FileLength":135829,"LastWriteTime":"2026-05-20T13:00:28.9947916+00:00"},"QaD0ihDfiZcRw8Fa5XSqStAEkcFjb0xglTXrbeJN4a8=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.js.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.esm.js#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"kbrnm935zg","Integrity":"EPRLgpqWkahLxEn6CUjdM76RIYIw1xdHwTbeHssuj/4=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.js.map","FileLength":305438,"LastWriteTime":"2026-05-20T13:00:29.0026177+00:00"},"ajlLSJ\u002BIWKj8EKV35W1hH4reyjN9/r1Ch8e1dBNjBSw=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.min.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.esm.min#[.{fingerprint}]?.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"jj8uyg4cgr","Integrity":"QZdFT1ZNdly4rmgUBtXmXFS9BU1FTa\u002BsPe6h794sFRQ=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.min.js","FileLength":73935,"LastWriteTime":"2026-05-20T13:00:29.0106326+00:00"},"DcApRy4nhjlP662diHmukEKqYuyoe0KHyOxGVdr9PyM=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.min.js.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.esm.min.js#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"y7v9cxd14o","Integrity":"Tsbv8z6VlNgVET8xvz/yLo/v5iJHTAj2J4hkhjP1rHM=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.min.js.map","FileLength":222455,"LastWriteTime":"2026-05-20T13:00:29.0165672+00:00"},"zl\u002BzcRoxnXPakxxXJN6l9VLMwGk\u002By/SQT8B0WSnZMvM=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap#[.{fingerprint}]?.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"notf2xhcfb","Integrity":"\u002BUW802wgVfnjaSbdwyHLlU7AVplb0WToOlvN1CnzIac=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.js","FileLength":145401,"LastWriteTime":"2026-05-20T13:00:29.0263236+00:00"},"DiVsG2cevQdVuEwxHL\u002BgPGxh9fRtM3xn1Ix89OU01l4=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.js.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.js#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"h1s4sie4z3","Integrity":"9Wr7Hxe8gCJDoIHh5xP29ldXvC3kN2GkifQj9c8vYx4=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.js.map","FileLength":306606,"LastWriteTime":"2026-05-20T13:00:29.0324073+00:00"},"UKin6fGxIhO8Gs7LkLmN4kuS0Kl9uZWqgc6x7t2/xf0=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.min.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.min#[.{fingerprint}]?.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"63fj8s7r0e","Integrity":"3gQJhtmj7YnV1fmtbVcnAV6eI4ws0Tr48bVZCThtCGQ=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.min.js","FileLength":60635,"LastWriteTime":"2026-05-20T13:00:29.0344119+00:00"},"ejq560JF7/oAnu6I4VFt5f2wcSlzaEHpYTqsRh06o9A=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.min.js.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.min.js#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"0j3bgjxly4","Integrity":"ZI01e/ns473GKvACG4McggJdxvFfFIw4xspwQiG8Ye4=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.min.js.map","FileLength":220561,"LastWriteTime":"2026-05-20T13:00:29.0441717+00:00"},"mVmHEtzmBWHAiYW83bThvmsAmJe7oQFzJayYA2a6PXk=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\favicon.svg","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"favicon#[.{fingerprint}]?.svg","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"c1x271fjrj","Integrity":"wM4nl2JSrFpWkKkZbbxY5MJFs8LW1lv3lvltPn9fy3g=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\favicon.svg","FileLength":1138,"LastWriteTime":"2026-05-21T13:43:16.4498124+00:00"},"t8/S/iqD\u002BWOqoqxZIUWy\u002B0CcyTxhFe\u002B2vqS6syOPh/g=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\favicon.png","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"favicon#[.{fingerprint}]?.png","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"g5dz11g438","Integrity":"VHI6wtx09cZx75cKj/yP4Y6/hI0/\u002BbNsMdMfq7R\u002BVgQ=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\favicon.png","FileLength":4237,"LastWriteTime":"2026-05-22T06:57:55.920896+00:00"}},"CachedCopyCandidates":{}} \ No newline at end of file +{"GlobalPropertiesHash":"/uMkUb0sqJNKdpUEZJImZl22+O7IzLoiXx8m0phzS5Y=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["ovSerYHPMi4ExhJn2xU4WmJOZFaSXPk63P4ISGtQoag=","t8/S/iqD\u002BWOqoqxZIUWy\u002B0CcyTxhFe\u002B2vqS6syOPh/g=","mVmHEtzmBWHAiYW83bThvmsAmJe7oQFzJayYA2a6PXk=","DJbjU5RSeu8ssKk6\u002BU9qcxdWKLA7PaURGpcwMtU1cds=","6VuM8RXxuOppytZc57Uu0vfEpQ9I3GXlnrIiYTN3XfE=","qujjEy2OAvAD8tqujNixipvOC/CDKEPXWqs9\u002BY4LFaE=","7WuNDk23eyfNe62PHykuRmy3161tRcARFgNWu/aCgOU=","jurLJARZjB7Fe9JZEUjWenuLIUJ/sw\u002Bx/o88BnaFTQM=","AgpupSW\u002BrcNbe52yu92bURql10h5\u002BRXymMC1zzF8wBM=","n2t0OoSd\u002B9NIbEadHYn7A7hwpWm6gJFg2djhVViRYng=","Sd/GZUkwZ4Q8w0TCBY95I\u002BxxWZm7Xp3xfksG3IkBDbA=","2IBypkfqBOLTlleDMyYeWTHw1dZ5UaSN8Vi9nmT2J4Q=","Lnw840ru88dnnZSKFinR4LTzOZNDJZ89SuvDs3LG5dY=","xLaUDp7TmLTsx9D\u002BuLLhgqu\u002BJtD5qDLs78ujVLoNhD8=","SgpHkk6QnWRH2tChObAeejM8HLdc51H8B4SCozq1l9g=","cWbFJtEIrIyk935jQQFMHU54PZ9RdwmE1BHwt0UobPU=","R0BAVdym78gDoKsSMzBsb6x2W951BlKFN0FNFYCsCX0=","E2ywdGQj0a0y7VMb8A2SagnNbmvdgNrFzjMdvqqV\u002BwY=","eKWaGHod6XeCFKA2syO4b5bjGd52KeRMe2lxebLpbr0=","6Gt\u002BhW0YD4AIfi3\u002B0JWOcj5ZoRHBh\u002Bd/73EHzLb9ZFo=","E/hX5PlBL0xni6OyXeL\u002BzEtGzj0DfWxsFDaHAUwGu0g=","I4pM727TacYD1RDXN0wzY1zglsMaABlr19WVkApraeA=","q4hWoO1ud\u002BwqFwmCG1nzekXs8nQ7QQMO9l3OKCx3XQo=","M6YvTp/SYon85swfQmM8j\u002BpvvhMDCpXhh\u002BS\u002B62d/V8A=","xmR8fiTLL43ux/I8xI3x9qDZOQjmbEpSVczpZKX/o\u002BU=","rPWN7AcG4RCNgoc7gqqe5bzu2fZeRHANU4G5mRmf4X4=","4YEeh/h12kH0FUGdt8/sHDJmg4zYunaXhfW6POiKYQg=","I/B2gPx/d6O7VA7kVp3syVfL8hMvYHhkflGDSPirAUY=","zJOxsbpIjQOhSWamGE9OKGXBGWjYSnpjnXmsdC56bzo=","6MXGnBspymDhNbACXBV1es99mw15UCxkoq0pSEcWwck=","vwqCCdlnynihoratP5HTjoE6JShLlWi4O5KC5cFdw2s=","ScQoTm373N8A9VaM33H8osIAb0hMiQB3cU1gvaxCLMg=","5Wb9KEGOvI68lY1zg533rWI/3u1c2pizlvhvFBW\u002BT\u002BU=","crQzyJw61YMAO/5cQfffHdBTSXO4POIRR3UPwYueZfY=","WA6BQ4K/xJ4kSdHf0dPt16vUqlYSHp\u002BquO1y\u002Br4idlU=","X\u002ByfyT2MuAWgf9UmpGLy/DJi6r3xLJ7R0fjn\u002BO3\u002BR\u002Bo=","n\u002BDKXe9Y3zHWEn4UB/eNHQTMuhDctkV5BDSwuliCKYo=","tUzryyDyISAnyr1e7ujmEglKl80GaEbNkw0uWsRegIM=","T1MNLl33nCZGSd4XbUBoRmZ1fyK\u002BBWsY0O4NHWiadQ0=","1GJdKBhQwxAongm2xWk7yLdbPyYKlYs\u002BByo/FSwa2Og=","QaD0ihDfiZcRw8Fa5XSqStAEkcFjb0xglTXrbeJN4a8=","ajlLSJ\u002BIWKj8EKV35W1hH4reyjN9/r1Ch8e1dBNjBSw=","DcApRy4nhjlP662diHmukEKqYuyoe0KHyOxGVdr9PyM=","zl\u002BzcRoxnXPakxxXJN6l9VLMwGk\u002By/SQT8B0WSnZMvM=","DiVsG2cevQdVuEwxHL\u002BgPGxh9fRtM3xn1Ix89OU01l4=","UKin6fGxIhO8Gs7LkLmN4kuS0Kl9uZWqgc6x7t2/xf0=","ejq560JF7/oAnu6I4VFt5f2wcSlzaEHpYTqsRh06o9A=","GDvNJZr3M2dgiymsy98U2bIMNajpHpIqUgn3VJu89NQ=","niE7G3oChy6PoSAzXj1Gj8yXNzqzO2SehGWXSGOs3ws=","TWCaa80sCF0UE7aeFJzSDp8vXtYi5Kf\u002Bv1v39TnyKs0=","SOIv4cDkxXKCivZ9A4sABqxsRRoomBeZ1nfsqaqq3aA=","ai1CABE7/c47ypIkjaDit5lzyUBLWjvvNxLvrggAohE=","2ioxqlu0rAxIbeWDbnlN9oLjD\u002BeRmektYla3y9AGc88=","ZWzbAgAFew9xp1iyo7knZbDaqWIv4Hm\u002BwCk9vPDUBSE=","HgxqJP3ldiIafkTvBBwB/28T3diIAJ7oN3hqfgQ9Kxc=","7Z/Bc6UO\u002BnTwEF1Bhi8coKTRrhvPdjnS5KhFbJHZyuI=","6xvIcY53zw\u002BouYBppzZhf9j631lueCP4AepKDpPFZLc=","EaULMAdq/h9gJo6D9j18s/QsIn1pfuMmdztg65lz1Ic=","4C0vqrvHlqVp8iL/TwMg3WbaKZg8CIdmSCdnkCW3QT8=","5l59oONcKS8dt7eCb1Jl1KQROo0JXt5brXo7D3UUbv8=","lH\u002BcYGTeSlITi8crNUIH4\u002BRxQRiRY4e88TocOvh0vng=","Px5vA8TGJcLr\u002B5y3yqjtCpTe0UN6tqKi1yvSSXfLG6I=","goCVUGyC8XonApSLTimnDrBuNidRio0jhkIWxhk4Xlg=","jwwQYOC\u002BEmbB37rtLRETqMKE04p34z68esNM1UGKNQ4=","cehF2zRSp8AwpZ6pXjkx2ZvmkJBSnSNmX9eeZ8\u002B6O6w=","ak2/1eDOLIr8FN405ijsTWdZezAB4g53eQWw0BRWqpE=","iW599fFesdQ0y47pwj/FPUlHI/BG3klZVY4mfV97P7E="],"CachedAssets":{"ovSerYHPMi4ExhJn2xU4WmJOZFaSXPk63P4ISGtQoag=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\app.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"app#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"zhpirmksq2","Integrity":"aVs2q7lpDiDfjxp0TyLLSFm7W3Uj6h82MKPlGVssfE0=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\app.css","FileLength":2172,"LastWriteTime":"2026-05-20T13:13:23.5863493+00:00"},"DJbjU5RSeu8ssKk6\u002BU9qcxdWKLA7PaURGpcwMtU1cds=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"bqjiyaj88i","Integrity":"Yy5/hBqRmmU2MJ1TKwP2aXoTO6\u002BOjzrLmJIsC2Wy4H8=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.css","FileLength":70329,"LastWriteTime":"2026-05-20T13:00:28.5512686+00:00"},"6VuM8RXxuOppytZc57Uu0vfEpQ9I3GXlnrIiYTN3XfE=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"c2jlpeoesf","Integrity":"xAT\u002Bn25FE5hvOjj2fG4YdOwr1bl4IlAJBNg6PbhLT2E=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.css.map","FileLength":203221,"LastWriteTime":"2026-05-20T13:00:28.5727798+00:00"},"qujjEy2OAvAD8tqujNixipvOC/CDKEPXWqs9\u002BY4LFaE=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"erw9l3u2r3","Integrity":"5nDHMGiyfZHl3UXePuhLDQR9ncPfBR1HJeZLXyJNV24=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.min.css","FileLength":51795,"LastWriteTime":"2026-05-20T13:00:28.5727798+00:00"},"7WuNDk23eyfNe62PHykuRmy3161tRcARFgNWu/aCgOU=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"aexeepp0ev","Integrity":"kgL\u002BxwVmM8IOs15lnoHt9daR2LRMiBG/cYgUPcKQOY4=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.min.css.map","FileLength":115986,"LastWriteTime":"2026-05-20T13:00:28.5888342+00:00"},"jurLJARZjB7Fe9JZEUjWenuLIUJ/sw\u002Bx/o88BnaFTQM=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.rtl#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"d7shbmvgxk","Integrity":"CZxoF8zjaLlyVkcvVCDlc8CeQR1w1RMrvgYx30cs8kM=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.css","FileLength":70403,"LastWriteTime":"2026-05-20T13:00:28.5989136+00:00"},"AgpupSW\u002BrcNbe52yu92bURql10h5\u002BRXymMC1zzF8wBM=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"ausgxo2sd3","Integrity":"/siQUA8yX830j\u002BcL4amKHY3yBtn3n8z3Eg\u002BVZ15f90k=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.css.map","FileLength":203225,"LastWriteTime":"2026-05-20T13:00:28.6243226+00:00"},"n2t0OoSd\u002B9NIbEadHYn7A7hwpWm6gJFg2djhVViRYng=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"k8d9w2qqmf","Integrity":"vMxTcvkC4Ly7LiAT3G8yEy9EpTr7Fge4SczWp07/p3k=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.min.css","FileLength":51870,"LastWriteTime":"2026-05-20T13:00:28.6470877+00:00"},"Sd/GZUkwZ4Q8w0TCBY95I\u002BxxWZm7Xp3xfksG3IkBDbA=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"cosvhxvwiu","Integrity":"7GdOlw7U/wgyaeUtFmxPz5/MphdvVSPtVOOlTn9c33Q=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-grid.rtl.min.css.map","FileLength":116063,"LastWriteTime":"2026-05-20T13:00:28.6572385+00:00"},"2IBypkfqBOLTlleDMyYeWTHw1dZ5UaSN8Vi9nmT2J4Q=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"ub07r2b239","Integrity":"lo9YI82OF03vojdu\u002BXOR3\u002BDRrLIpMhpzZNmHbM5CDMA=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.css","FileLength":12065,"LastWriteTime":"2026-05-20T13:00:28.6798889+00:00"},"Lnw840ru88dnnZSKFinR4LTzOZNDJZ89SuvDs3LG5dY=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"fvhpjtyr6v","Integrity":"RXJ/QZiBfHXoPtXR2EgC\u002BbFo2pe3GtbZO722RtiLGzQ=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.css.map","FileLength":129371,"LastWriteTime":"2026-05-20T13:00:28.6935976+00:00"},"xLaUDp7TmLTsx9D\u002BuLLhgqu\u002BJtD5qDLs78ujVLoNhD8=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"b7pk76d08c","Integrity":"l8vt5oozv958eMd9TFsPAWgl9JJK9YKfbVSs8mchQ84=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.min.css","FileLength":10126,"LastWriteTime":"2026-05-20T13:00:28.6935976+00:00"},"SgpHkk6QnWRH2tChObAeejM8HLdc51H8B4SCozq1l9g=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"fsbi9cje9m","Integrity":"0eqVT62kqRLJh9oTqLeIH4UnQskqVjib8hl2fXxl4lg=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.min.css.map","FileLength":51369,"LastWriteTime":"2026-05-20T13:00:28.7096015+00:00"},"cWbFJtEIrIyk935jQQFMHU54PZ9RdwmE1BHwt0UobPU=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"rzd6atqjts","Integrity":"V8psnHoJS/MPlCXWwc/J3tGtp9c3gGFRmqsIQgpn\u002BGg=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.css","FileLength":12058,"LastWriteTime":"2026-05-20T13:00:28.7096015+00:00"},"R0BAVdym78gDoKsSMzBsb6x2W951BlKFN0FNFYCsCX0=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"ee0r1s7dh0","Integrity":"OoQVwh7Arp7bVoK2ZiTx2S//KrnPrSPzPZ93CqCMhe8=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.css.map","FileLength":129386,"LastWriteTime":"2026-05-20T13:00:28.7252957+00:00"},"E2ywdGQj0a0y7VMb8A2SagnNbmvdgNrFzjMdvqqV\u002BwY=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"dxx9fxp4il","Integrity":"/8jh8hcEMFKyS6goWqnNu7t3EzZPCGdQZgO6sCkI8tI=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.min.css","FileLength":10198,"LastWriteTime":"2026-05-20T13:00:28.7279863+00:00"},"eKWaGHod6XeCFKA2syO4b5bjGd52KeRMe2lxebLpbr0=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"jd9uben2k1","Integrity":"910zw\u002BrMdcg0Ls48ATp65vEn8rd5HvPxOKm2x3/CBII=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-reboot.rtl.min.css.map","FileLength":63943,"LastWriteTime":"2026-05-20T13:00:28.7279863+00:00"},"6Gt\u002BhW0YD4AIfi3\u002B0JWOcj5ZoRHBh\u002Bd/73EHzLb9ZFo=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"khv3u5hwcm","Integrity":"2BubgNUPlQSF/0wLFcRXQ/Yjzk9vsUbDAeK2QM\u002Bh\u002Byo=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.css","FileLength":107823,"LastWriteTime":"2026-05-20T13:00:28.7413395+00:00"},"E/hX5PlBL0xni6OyXeL\u002BzEtGzj0DfWxsFDaHAUwGu0g=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"r4e9w2rdcm","Integrity":"Nfjrc4Ur9Fv2oBEswQWIyBnNDP99q\u002BLhL\u002Bz9553O0cY=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.css.map","FileLength":267535,"LastWriteTime":"2026-05-20T13:00:28.7471362+00:00"},"I4pM727TacYD1RDXN0wzY1zglsMaABlr19WVkApraeA=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"lcd1t2u6c8","Integrity":"KyE9xbKO9CuYx0HXpIKgsWIvXkAfITtiQ172j26wmRs=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.min.css","FileLength":85352,"LastWriteTime":"2026-05-20T13:00:28.7512991+00:00"},"q4hWoO1ud\u002BwqFwmCG1nzekXs8nQ7QQMO9l3OKCx3XQo=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"c2oey78nd0","Integrity":"rHDmip4JZzuaGOcSQ1QSQrIbG0Eb3Zja9whqSF1zYIU=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.min.css.map","FileLength":180381,"LastWriteTime":"2026-05-20T13:00:28.7732126+00:00"},"M6YvTp/SYon85swfQmM8j\u002BpvvhMDCpXhh\u002BS\u002B62d/V8A=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"tdbxkamptv","Integrity":"H6wkBbSwjua2veJoThJo4uy161jp\u002BDOiZTloUlcZ6qQ=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.css","FileLength":107691,"LastWriteTime":"2026-05-20T13:00:28.7732126+00:00"},"xmR8fiTLL43ux/I8xI3x9qDZOQjmbEpSVczpZKX/o\u002BU=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"j5mq2jizvt","Integrity":"p0BVq5Ve/dohBIdfbrZsoQNu02JSsKh1g0wbyiQiUaU=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.css.map","FileLength":267476,"LastWriteTime":"2026-05-20T13:00:28.7732126+00:00"},"rPWN7AcG4RCNgoc7gqqe5bzu2fZeRHANU4G5mRmf4X4=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"06098lyss8","Integrity":"GAUum6FjwQ8HrXGaoFRnHTqQQLpljXGavT7mBX8E9qU=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.min.css","FileLength":85281,"LastWriteTime":"2026-05-20T13:00:28.788869+00:00"},"4YEeh/h12kH0FUGdt8/sHDJmg4zYunaXhfW6POiKYQg=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"nvvlpmu67g","Integrity":"o8XK32mcY/FfcOQ1D2HJvVuZ0YTXSURZDLXCK0fnQeA=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap-utilities.rtl.min.css.map","FileLength":180217,"LastWriteTime":"2026-05-20T13:00:28.7962157+00:00"},"I/B2gPx/d6O7VA7kVp3syVfL8hMvYHhkflGDSPirAUY=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"s35ty4nyc5","Integrity":"GKEF18s44B5e0MolXAkpkqLiEbOVlKf6VyYr/G/E6pw=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.css","FileLength":281046,"LastWriteTime":"2026-05-20T13:00:28.8211312+00:00"},"zJOxsbpIjQOhSWamGE9OKGXBGWjYSnpjnXmsdC56bzo=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"pj5nd1wqec","Integrity":"KzNVR3p7UZGba94dnCtlc6jXjK5urSPiZ/eNnKTmDkw=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.css.map","FileLength":679755,"LastWriteTime":"2026-05-20T13:00:28.8211312+00:00"},"6MXGnBspymDhNbACXBV1es99mw15UCxkoq0pSEcWwck=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"46ein0sx1k","Integrity":"PI8n5gCcz9cQqQXm3PEtDuPG8qx9oFsFctPg0S5zb8g=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.min.css","FileLength":232803,"LastWriteTime":"2026-05-20T13:00:28.8544118+00:00"},"vwqCCdlnynihoratP5HTjoE6JShLlWi4O5KC5cFdw2s=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"v0zj4ognzu","Integrity":"8SM4U2NQpCLGTQLW5D/x3qSTwxVq2CP\u002BGXYc3V1WwFs=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.min.css.map","FileLength":589892,"LastWriteTime":"2026-05-20T13:00:28.8640202+00:00"},"ScQoTm373N8A9VaM33H8osIAb0hMiQB3cU1gvaxCLMg=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.rtl#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"37tfw0ft22","Integrity":"j5E4XIj1p1kNnDi0x1teX9RXoh1/FNlPvCML9YmRh2Q=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.css","FileLength":280259,"LastWriteTime":"2026-05-20T13:00:28.886874+00:00"},"5Wb9KEGOvI68lY1zg533rWI/3u1c2pizlvhvFBW\u002BT\u002BU=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.rtl.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"hrwsygsryq","Integrity":"3bYWUiiVYMZfv2wq5JnXIsHlQKgSKs/VcRivgjgZ1ho=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.css.map","FileLength":679615,"LastWriteTime":"2026-05-20T13:00:28.8999809+00:00"},"crQzyJw61YMAO/5cQfffHdBTSXO4POIRR3UPwYueZfY=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.min.css","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.rtl.min#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"pk9g2wxc8p","Integrity":"h5lE7Nm8SkeIpBHHYxN99spP3VuGFKl5NZgsocil7zk=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.min.css","FileLength":232911,"LastWriteTime":"2026-05-20T13:00:28.9171977+00:00"},"WA6BQ4K/xJ4kSdHf0dPt16vUqlYSHp\u002BquO1y\u002Br4idlU=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.min.css.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/css/bootstrap.rtl.min.css#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"ft3s53vfgj","Integrity":"rTzXlnepcb/vgFAiB\u002BU7ODQAfOlJLfM3gY6IU7eIANk=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\css\\bootstrap.rtl.min.css.map","FileLength":589087,"LastWriteTime":"2026-05-20T13:00:28.9171977+00:00"},"X\u002ByfyT2MuAWgf9UmpGLy/DJi6r3xLJ7R0fjn\u002BO3\u002BR\u002Bo=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.bundle#[.{fingerprint}]?.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"6cfz1n2cew","Integrity":"mkoRoV24jV\u002BrCPWcHDR5awPx8VuzzJKN0ibhxZ9/WaM=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.js","FileLength":207819,"LastWriteTime":"2026-05-20T13:00:28.9496198+00:00"},"n\u002BDKXe9Y3zHWEn4UB/eNHQTMuhDctkV5BDSwuliCKYo=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.js.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.bundle.js#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"6pdc2jztkx","Integrity":"Wq4aWW1rQdJ\u002B6oAgy1JQc9IBjHL9T3MKfXTBNqOv02c=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.js.map","FileLength":444579,"LastWriteTime":"2026-05-20T13:00:28.9496198+00:00"},"tUzryyDyISAnyr1e7ujmEglKl80GaEbNkw0uWsRegIM=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.min.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.bundle.min#[.{fingerprint}]?.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"493y06b0oq","Integrity":"CDOy6cOibCWEdsRiZuaHf8dSGGJRYuBGC\u002BmjoJimHGw=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.min.js","FileLength":80721,"LastWriteTime":"2026-05-20T13:00:28.9630083+00:00"},"T1MNLl33nCZGSd4XbUBoRmZ1fyK\u002BBWsY0O4NHWiadQ0=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.min.js.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.bundle.min.js#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"iovd86k7lj","Integrity":"Xj4HYxZBQ7qqHKBwa2EAugRS\u002BRHWzpcTtI49vgezUSU=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.bundle.min.js.map","FileLength":332090,"LastWriteTime":"2026-05-20T13:00:28.9858184+00:00"},"1GJdKBhQwxAongm2xWk7yLdbPyYKlYs\u002BByo/FSwa2Og=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.esm#[.{fingerprint}]?.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"vr1egmr9el","Integrity":"exiXZNJDwucXfuje3CbXPbuS6\u002BEry3z9sP\u002Bpgmvh8nA=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.js","FileLength":135829,"LastWriteTime":"2026-05-20T13:00:28.9947916+00:00"},"QaD0ihDfiZcRw8Fa5XSqStAEkcFjb0xglTXrbeJN4a8=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.js.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.esm.js#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"kbrnm935zg","Integrity":"EPRLgpqWkahLxEn6CUjdM76RIYIw1xdHwTbeHssuj/4=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.js.map","FileLength":305438,"LastWriteTime":"2026-05-20T13:00:29.0026177+00:00"},"ajlLSJ\u002BIWKj8EKV35W1hH4reyjN9/r1Ch8e1dBNjBSw=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.min.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.esm.min#[.{fingerprint}]?.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"jj8uyg4cgr","Integrity":"QZdFT1ZNdly4rmgUBtXmXFS9BU1FTa\u002BsPe6h794sFRQ=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.min.js","FileLength":73935,"LastWriteTime":"2026-05-20T13:00:29.0106326+00:00"},"DcApRy4nhjlP662diHmukEKqYuyoe0KHyOxGVdr9PyM=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.min.js.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.esm.min.js#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"y7v9cxd14o","Integrity":"Tsbv8z6VlNgVET8xvz/yLo/v5iJHTAj2J4hkhjP1rHM=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.esm.min.js.map","FileLength":222455,"LastWriteTime":"2026-05-20T13:00:29.0165672+00:00"},"zl\u002BzcRoxnXPakxxXJN6l9VLMwGk\u002By/SQT8B0WSnZMvM=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap#[.{fingerprint}]?.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"notf2xhcfb","Integrity":"\u002BUW802wgVfnjaSbdwyHLlU7AVplb0WToOlvN1CnzIac=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.js","FileLength":145401,"LastWriteTime":"2026-05-20T13:00:29.0263236+00:00"},"DiVsG2cevQdVuEwxHL\u002BgPGxh9fRtM3xn1Ix89OU01l4=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.js.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.js#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"h1s4sie4z3","Integrity":"9Wr7Hxe8gCJDoIHh5xP29ldXvC3kN2GkifQj9c8vYx4=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.js.map","FileLength":306606,"LastWriteTime":"2026-05-20T13:00:29.0324073+00:00"},"UKin6fGxIhO8Gs7LkLmN4kuS0Kl9uZWqgc6x7t2/xf0=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.min.js","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.min#[.{fingerprint}]?.js","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"63fj8s7r0e","Integrity":"3gQJhtmj7YnV1fmtbVcnAV6eI4ws0Tr48bVZCThtCGQ=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.min.js","FileLength":60635,"LastWriteTime":"2026-05-20T13:00:29.0344119+00:00"},"ejq560JF7/oAnu6I4VFt5f2wcSlzaEHpYTqsRh06o9A=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.min.js.map","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"lib/bootstrap/dist/js/bootstrap.min.js#[.{fingerprint}]?.map","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"0j3bgjxly4","Integrity":"ZI01e/ns473GKvACG4McggJdxvFfFIw4xspwQiG8Ye4=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\lib\\bootstrap\\dist\\js\\bootstrap.min.js.map","FileLength":220561,"LastWriteTime":"2026-05-20T13:00:29.0441717+00:00"},"mVmHEtzmBWHAiYW83bThvmsAmJe7oQFzJayYA2a6PXk=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\favicon.svg","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"favicon#[.{fingerprint}]?.svg","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"c1x271fjrj","Integrity":"wM4nl2JSrFpWkKkZbbxY5MJFs8LW1lv3lvltPn9fy3g=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\favicon.svg","FileLength":1138,"LastWriteTime":"2026-05-21T13:43:16.4498124+00:00"},"t8/S/iqD\u002BWOqoqxZIUWy\u002B0CcyTxhFe\u002B2vqS6syOPh/g=":{"Identity":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\favicon.png","SourceId":"timetracker","SourceType":"Discovered","ContentRoot":"C:\\DEVQPDC_MW\\Uni\\Timetracker\\timetracker\\wwwroot\\","BasePath":"/","RelativePath":"favicon#[.{fingerprint}]?.png","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"g5dz11g438","Integrity":"VHI6wtx09cZx75cKj/yP4Y6/hI0/\u002BbNsMdMfq7R\u002BVgQ=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\favicon.png","FileLength":4237,"LastWriteTime":"2026-05-22T06:57:55.920896+00:00"}},"CachedCopyCandidates":{}} \ No newline at end of file diff --git a/obj/Debug/net10.0/timetracker.AssemblyInfo.cs b/obj/Debug/net10.0/timetracker.AssemblyInfo.cs index 0830129..2142c9d 100644 --- a/obj/Debug/net10.0/timetracker.AssemblyInfo.cs +++ b/obj/Debug/net10.0/timetracker.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("timetracker")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+0467f450368a3b05b63a5d2a2cc8779571042711")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+64c5f6aa2c77c868467dca487ae6b581bca6862d")] [assembly: System.Reflection.AssemblyProductAttribute("timetracker")] [assembly: System.Reflection.AssemblyTitleAttribute("timetracker")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/obj/Debug/net10.0/timetracker.AssemblyInfoInputs.cache b/obj/Debug/net10.0/timetracker.AssemblyInfoInputs.cache index 3552a3b..905ac0b 100644 --- a/obj/Debug/net10.0/timetracker.AssemblyInfoInputs.cache +++ b/obj/Debug/net10.0/timetracker.AssemblyInfoInputs.cache @@ -1 +1 @@ -d82bd1af2676da228608191aea963cac3166fa85ba461e9bcfa8554e5f0bdffb +452eedcfc45da63be9bf8c68bebf3387bcd4a96ecf3b483a73c4affbb5b93b4e diff --git a/obj/Debug/net10.0/timetracker.GeneratedMSBuildEditorConfig.editorconfig b/obj/Debug/net10.0/timetracker.GeneratedMSBuildEditorConfig.editorconfig index b321f1b..46249c9 100644 --- a/obj/Debug/net10.0/timetracker.GeneratedMSBuildEditorConfig.editorconfig +++ b/obj/Debug/net10.0/timetracker.GeneratedMSBuildEditorConfig.editorconfig @@ -50,6 +50,10 @@ build_metadata.AdditionalFiles.CssScope = build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xIb21lLnJhem9y build_metadata.AdditionalFiles.CssScope = +[C:/DEVQPDC_MW/Uni/Timetracker/timetracker/Components/Pages/Login.razor] +build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xMb2dpbi5yYXpvcg== +build_metadata.AdditionalFiles.CssScope = + [C:/DEVQPDC_MW/Uni/Timetracker/timetracker/Components/Pages/Month.razor] build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xNb250aC5yYXpvcg== build_metadata.AdditionalFiles.CssScope = @@ -66,6 +70,10 @@ build_metadata.AdditionalFiles.CssScope = build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xVcmxhdWJzTWF4aW1pemVyLnJhem9y build_metadata.AdditionalFiles.CssScope = +[C:/DEVQPDC_MW/Uni/Timetracker/timetracker/Components/RedirectToLogin.razor] +build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xSZWRpcmVjdFRvTG9naW4ucmF6b3I= +build_metadata.AdditionalFiles.CssScope = + [C:/DEVQPDC_MW/Uni/Timetracker/timetracker/Components/Routes.razor] build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xSb3V0ZXMucmF6b3I= build_metadata.AdditionalFiles.CssScope = diff --git a/obj/Debug/net10.0/timetracker.csproj.CoreCompileInputs.cache b/obj/Debug/net10.0/timetracker.csproj.CoreCompileInputs.cache index d6d2c35..1f50e09 100644 --- a/obj/Debug/net10.0/timetracker.csproj.CoreCompileInputs.cache +++ b/obj/Debug/net10.0/timetracker.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -ec4c252fd2023b232a1f6088ccec5cbdd1025e488be8a7c43e01c6aa2c479e89 +73be10256eedd125d5f8f4d2e9dd0d1388a3fccf5758d7c2e52426f3812e17fd diff --git a/obj/Debug/net10.0/timetracker.dll b/obj/Debug/net10.0/timetracker.dll index 1fd16a1..3c0f2bc 100644 Binary files a/obj/Debug/net10.0/timetracker.dll and b/obj/Debug/net10.0/timetracker.dll differ diff --git a/obj/Debug/net10.0/timetracker.pdb b/obj/Debug/net10.0/timetracker.pdb index cc020f8..c05e4bd 100644 Binary files a/obj/Debug/net10.0/timetracker.pdb and b/obj/Debug/net10.0/timetracker.pdb differ diff --git a/timetracker.db b/timetracker.db index 44a67dc..e607692 100644 Binary files a/timetracker.db and b/timetracker.db differ diff --git a/timetracker.db-shm b/timetracker.db-shm new file mode 100644 index 0000000..3ea5acc Binary files /dev/null and b/timetracker.db-shm differ diff --git a/timetracker.db-wal b/timetracker.db-wal new file mode 100644 index 0000000..4cde839 Binary files /dev/null and b/timetracker.db-wal differ