diff --git a/README.md b/README.md index b60b4010..92d01c02 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Autopilot Monitor provides real-time tracking, intelligent diagnostics, and auto ## Architecture -For detailed information about the system architecture, components, and data flow, see [Architecture Documentation](ARCHITECTURE.md). +For detailed information about the system architecture, components, and data flow, see [Architecture Documentation](docs/architecture.md). ## Documentation diff --git a/ARCHITECTURE.md b/docs/architecture.md similarity index 100% rename from ARCHITECTURE.md rename to docs/architecture.md diff --git a/docs/decisions/001-sas-url-on-demand.md b/docs/decisions/001-sas-url-on-demand.md new file mode 100644 index 00000000..81b7bfa2 --- /dev/null +++ b/docs/decisions/001-sas-url-on-demand.md @@ -0,0 +1,30 @@ +# ADR-001: On-Demand SAS URL Delivery for Diagnostics Upload + +**Status:** Accepted +**Date:** 2026-02 +**Supersedes:** Original design with SAS URL in agent config response stored on disk + +## Context + +The agent needs to upload diagnostics ZIP packages to Azure Blob Storage. The original design included the long-lived SAS URL directly in the `agent/config` response, which was then persisted in `remote-config.json` on the device. + +**Problems with the original approach:** +- SAS URL persisted on disk in plaintext (`remote-config.json`) — accessible to any local admin +- URL visible in agent logs +- No per-device access control — every device with the cached URL could upload at any time + +## Decision + +Instead of delivering the SAS URL via the config response, the agent calls `POST /api/diagnostics/upload-url` immediately before each upload. The backend returns the long-lived SAS URL (configured in tenant settings) in the response body. The agent uses it in-memory for the upload and discards it — it is never written to disk or cached in config. + +**Config response changes:** +- Removed: `DiagnosticsBlobSasUrl` from agent config delivery +- Added: `DiagnosticsUploadEnabled` (bool) — controls whether the agent attempts upload +- Added: `POST /api/diagnostics/upload-url` endpoint (`GetDiagnosticsUploadUrlFunction`) + +## Consequences + +- SAS URL never persisted on device — only held in-memory for the duration of the upload +- Backend can deny the URL per-device (blocked devices, rate limiting, disabled tenants) +- Old agents that still read from `remote-config.json` fall back gracefully — they won't have a SAS URL and simply skip upload +- Slightly higher latency (one extra HTTP call before upload) — acceptable since uploads are infrequent diff --git a/docs/decisions/002-idle-timeout-replaces-max-duration.md b/docs/decisions/002-idle-timeout-replaces-max-duration.md new file mode 100644 index 00000000..b44ca892 --- /dev/null +++ b/docs/decisions/002-idle-timeout-replaces-max-duration.md @@ -0,0 +1,33 @@ +# ADR-002: Activity-Aware Idle Timeout Replaces Static Max Duration + +**Status:** Accepted +**Date:** 2026-02 +**Supersedes:** Static `MaxCollectorDurationHours` (4h hard cutoff) + +## Context + +The original design stopped all collectors after a fixed 4-hour window (`MaxCollectorDurationHours`). This caused problems: +- Long enrollments with many apps (>50) were cut off mid-collection +- Sessions with slow network or large downloads lost data +- No way to distinguish "still actively enrolling" from "enrollment finished, agent idle" + +## Decision + +Replace the static cutoff with an activity-aware idle timeout: + +- **`CollectorIdleTimeoutMinutes`** (default: 15) — stops collectors when no "real" events arrive for this duration +- **"Real" events** = everything except `performance_snapshot`, `agent_metrics_snapshot`, and their `_stopped` variants +- Collectors auto-restart when new real activity arrives after idle stop +- `AgentMaxLifetimeMinutes` (default: 360/6h) remains as an absolute safety net + +**Implementation:** +- `MonitoringService` tracks `_lastRealEventTime` +- Idle check timer fires every 60 seconds +- Global setting in `AdminConfiguration.CollectorIdleTimeoutMinutes`, delivered via `CollectorConfiguration` + +## Consequences + +- Long enrollments run to completion — no arbitrary cutoff +- Idle devices stop wasting CPU/network within 15 minutes +- Old agents (not updated) fall back to their built-in 4h default — no breaking change +- The 6h max lifetime timer prevents runaway agents regardless diff --git a/docs/decisions/003-multi-signal-session-completion.md b/docs/decisions/003-multi-signal-session-completion.md new file mode 100644 index 00000000..80f40a47 --- /dev/null +++ b/docs/decisions/003-multi-signal-session-completion.md @@ -0,0 +1,43 @@ +# ADR-003: Multi-Signal Session Completion + +**Status:** Accepted +**Date:** 2026-03 + +## Context + +Windows Autopilot enrollment can follow multiple paths, and no single event reliably indicates "enrollment is done" across all scenarios: + +- **ESP (Enrollment Status Page)** may or may not be present +- **Windows Hello** provisioning may be skipped, succeed, or time out +- **Windows Device Preparation (v2)** has no ESP at all +- **White Glove (Pre-Provisioning)** splits enrollment into two distinct phases +- Devices may reboot mid-enrollment, losing in-memory state + +## Decision + +Implement 3 independent completion paths, any of which can trigger `enrollment_complete`: + +1. **IME Pattern Path** — The existing pattern-based detection from Intune Management Extension logs (legacy, most reliable for app-centric enrollments) + +2. **ESP + Hello Composite Path** — ESP final exit event + Hello completion/skip/timeout. For device-only ESP (no Account Setup), a 5-minute timer after Device Setup exit classifies as device-only. + +3. **Desktop + Hello Path (No-ESP)** — Desktop arrival (explorer.exe under real user) + Hello completion. Used when ESP is absent (e.g., WDP v2). + +**Supporting infrastructure:** +- `EnrollmentStatePersistence` — crash recovery for completion signals (persists seen signals to disk) +- `DesktopArrivalDetector` — polls explorer.exe every 30s, validates user identity (excludes SYSTEM, DefaultUser*) +- Signal audit trail — terminal events include `signalsSeen` and `signalTimestamps` +- Completion check throttling — observability events at 1x/min/source +- WDP v2 gate skip — `enrollmentType == "v2"` skips desktop arrival gate + +**Hello behavior:** +- `HelloCompletionTimeoutSeconds` = 300 (5 minutes) +- `HelloOutcome` tracks: `completed`, `skipped`, `timed_out` + +## Consequences + +- Covers all known Autopilot enrollment paths (Classic ESP, WDP v2, White Glove, device-only) +- State persists across reboots — no lost completions +- Each path is independently testable +- Adding new completion signals requires only extending `EnrollmentTracker.CompletionLogic.cs` +- Complexity concentrated in one partial class file (~789 lines) — acceptable given the domain complexity diff --git a/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/CommandCollector.cs b/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/CommandCollector.cs new file mode 100644 index 00000000..27706fd8 --- /dev/null +++ b/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/CommandCollector.cs @@ -0,0 +1,108 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Text; +using AutopilotMonitor.Shared.Models; + +namespace AutopilotMonitor.Agent.Core.Monitoring.Collectors.GatherCollectors +{ + public class CommandCollector : IGatherRuleCollector + { + public string CollectorType => "command_allowlisted"; + + public Dictionary Execute(GatherRule rule, GatherRuleContext context) + { + var data = new Dictionary(); + var command = rule.Target; + + if (string.IsNullOrEmpty(command)) + return data; + + // SECURITY: Check command against allowlist + if (!GatherRuleGuards.IsCommandAllowed(command, context.UnrestrictedMode)) + { + context.Logger.Warning($"SECURITY: Command blocked by allowlist: {command} (Rule: {rule.RuleId})"); + data["blocked"] = true; + data["reason"] = "Command not on allowlist"; + data["command"] = command; + + context.OnEventCollected(new EnrollmentEvent + { + SessionId = context.SessionId, + TenantId = context.TenantId, + Timestamp = DateTime.UtcNow, + EventType = "security_warning", + Severity = EventSeverity.Warning, + Source = "GatherRuleExecutor", + Message = $"Blocked command not on allowlist: {command} (Rule: {rule.RuleId})", + Data = data + }); + + return data; + } + + try + { + var isPowerShell = !command.StartsWith("netsh", StringComparison.OrdinalIgnoreCase) && + !command.StartsWith("ipconfig", StringComparison.OrdinalIgnoreCase) && + !command.StartsWith("nltest", StringComparison.OrdinalIgnoreCase) && + !command.StartsWith("certutil", StringComparison.OrdinalIgnoreCase) && + !command.StartsWith("dsregcmd", StringComparison.OrdinalIgnoreCase); + + ProcessStartInfo psi; + if (isPowerShell) + { + // Use -EncodedCommand with Base64-encoded UTF-16LE to prevent command injection + var encodedCommand = Convert.ToBase64String(Encoding.Unicode.GetBytes(command)); + psi = new ProcessStartInfo + { + FileName = "powershell.exe", + Arguments = $"-NoProfile -ExecutionPolicy RemoteSigned -EncodedCommand {encodedCommand}", + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true, + CreateNoWindow = true + }; + } + else + { + psi = new ProcessStartInfo + { + FileName = "cmd.exe", + Arguments = $"/c {command}", + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true, + CreateNoWindow = true + }; + } + + using (var process = Process.Start(psi)) + { + var output = process.StandardOutput.ReadToEnd(); + var error = process.StandardError.ReadToEnd(); + process.WaitForExit(30000); // 30 second timeout + + data["command"] = command; + data["exit_code"] = process.ExitCode; + + if (!string.IsNullOrWhiteSpace(output)) + { + data["output"] = output.Length > 32000 ? output.Substring(0, 32000) + "... (truncated)" : output; + } + + if (!string.IsNullOrWhiteSpace(error)) + { + data["error_output"] = error.Length > 8000 ? error.Substring(0, 8000) + "... (truncated)" : error; + } + } + } + catch (Exception ex) + { + data["error"] = ex.Message; + } + + return data; + } + } +} diff --git a/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/EventLogCollector.cs b/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/EventLogCollector.cs new file mode 100644 index 00000000..5ca5257d --- /dev/null +++ b/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/EventLogCollector.cs @@ -0,0 +1,118 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics.Eventing.Reader; +using AutopilotMonitor.Shared.Models; + +namespace AutopilotMonitor.Agent.Core.Monitoring.Collectors.GatherCollectors +{ + public class EventLogCollector : IGatherRuleCollector + { + public string CollectorType => "eventlog"; + + public Dictionary Execute(GatherRule rule, GatherRuleContext context) + { + var data = new Dictionary(); + var logName = rule.Target; + + if (string.IsNullOrEmpty(logName)) + return data; + + // Optional: escalate severity when matching entries are found + string severityIfFound = null; + rule.Parameters?.TryGetValue("severityIfFound", out severityIfFound); + + try + { + int maxEntries = 10; + if (rule.Parameters != null && rule.Parameters.TryGetValue("maxEntries", out var maxEntriesStr)) + { + int.TryParse(maxEntriesStr, out maxEntries); + maxEntries = Math.Min(maxEntries, 50); // Cap at 50 + } + + // Build XPath query with optional filters + var conditions = new List(); + + string sourceFilter = null; + if (rule.Parameters != null && rule.Parameters.TryGetValue("source", out sourceFilter) + && !string.IsNullOrEmpty(sourceFilter)) + { + conditions.Add($"Provider[@Name='{EscapeXPath(sourceFilter)}']"); + } + + string eventIdFilter = null; + if (rule.Parameters != null && rule.Parameters.TryGetValue("eventId", out eventIdFilter) + && !string.IsNullOrEmpty(eventIdFilter)) + { + conditions.Add($"EventID={eventIdFilter}"); + } + + string xpath = conditions.Count > 0 + ? $"*[System[{string.Join(" and ", conditions)}]]" + : "*"; + + string messageFilter = null; + rule.Parameters?.TryGetValue("messageFilter", out messageFilter); + + var query = new EventLogQuery(logName, PathType.LogName, xpath) + { + ReverseDirection = true // newest first + }; + + data["log_name"] = logName; + var entries = new List(); + + using (var reader = new EventLogReader(query)) + { + EventRecord record; + while ((record = reader.ReadEvent()) != null && entries.Count < maxEntries) + { + using (record) + { + var message = ""; + try { message = record.FormatDescription() ?? ""; } + catch { /* Some events lack formatting resources */ } + + // Apply message filter (wildcard contains) + if (!string.IsNullOrEmpty(messageFilter)) + { + var pattern = messageFilter.Trim('*'); + if (string.IsNullOrEmpty(pattern) || + message.IndexOf(pattern, StringComparison.OrdinalIgnoreCase) < 0) + continue; + } + + var level = ""; + try { level = record.LevelDisplayName ?? record.Level?.ToString() ?? "Unknown"; } + catch { level = record.Level?.ToString() ?? "Unknown"; } + + var truncMsg = message.Length > 500 ? message.Substring(0, 500) : message; + entries.Add($"[{record.TimeCreated:yyyy-MM-dd HH:mm:ss}] [{level}] [ID:{record.Id}] {truncMsg}"); + } + } + } + + for (int i = 0; i < entries.Count; i++) + { + data[$"entry_{i + 1}"] = entries[i]; + } + data["entries_returned"] = entries.Count; + + // Apply conditional severity when matching entries are found + if (entries.Count > 0 && !string.IsNullOrEmpty(severityIfFound)) + data["_severityOverride"] = severityIfFound; + } + catch (Exception ex) + { + data["error"] = ex.Message; + } + + return data; + } + + private static string EscapeXPath(string value) + { + return value.Replace("'", "'"); + } + } +} diff --git a/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/FileCollector.cs b/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/FileCollector.cs new file mode 100644 index 00000000..d2be5795 --- /dev/null +++ b/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/FileCollector.cs @@ -0,0 +1,104 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AutopilotMonitor.Shared.Models; + +namespace AutopilotMonitor.Agent.Core.Monitoring.Collectors.GatherCollectors +{ + public class FileCollector : IGatherRuleCollector + { + public string CollectorType => "file"; + + public Dictionary Execute(GatherRule rule, GatherRuleContext context) + { + var data = new Dictionary(); + var filePath = rule.Target; + + if (string.IsNullOrEmpty(filePath)) + return data; + + // Expand environment variables + filePath = Environment.ExpandEnvironmentVariables(filePath); + + // Guard: only allow enrollment-relevant file paths + if (!GatherRuleGuards.IsFilePathAllowed(filePath, context.UnrestrictedMode)) + return context.EmitSecurityWarning(rule, "file", filePath); + + // Optional conditional severity based on existence + string severityIfExists = null; + string severityIfNotExists = null; + rule.Parameters?.TryGetValue("severityIfExists", out severityIfExists); + rule.Parameters?.TryGetValue("severityIfNotExists", out severityIfNotExists); + + try + { + if (File.Exists(filePath)) + { + var info = new FileInfo(filePath); + data["exists"] = true; + data["path"] = filePath; + data["size_bytes"] = info.Length; + data["last_modified"] = info.LastWriteTimeUtc.ToString("o"); + data["created"] = info.CreationTimeUtc.ToString("o"); + + // Read content if requested and file is small enough + string readContent; + if (rule.Parameters != null && rule.Parameters.TryGetValue("readContent", out readContent) && + readContent == "true" && info.Length < 50000) // Max 50KB + { + // Read the last 4000 chars — most useful for log files where recent entries matter + const int maxChars = 4000; + string content; + bool truncated = false; + using (var reader = new StreamReader(filePath)) + { + var full = reader.ReadToEnd(); + if (full.Length > maxChars) + { + content = full.Substring(full.Length - maxChars); + truncated = true; + } + else + { + content = full; + } + } + data["content"] = truncated ? "(truncated) ..." + content : content; + } + } + else if (Directory.Exists(filePath)) + { + data["exists"] = true; + data["is_directory"] = true; + data["path"] = filePath; + + var files = Directory.GetFiles(filePath); + data["file_count"] = files.Length; + data["files"] = string.Join(", ", files.Select(Path.GetFileName).Take(20)); + } + else + { + data["exists"] = false; + data["path"] = filePath; + } + } + catch (Exception ex) + { + data["error"] = ex.Message; + } + + // Apply conditional severity based on existence + if (data.ContainsKey("exists")) + { + var exists = data["exists"] is bool b ? b : data["exists"]?.ToString() == "True"; + if (exists && !string.IsNullOrEmpty(severityIfExists)) + data["_severityOverride"] = severityIfExists; + else if (!exists && !string.IsNullOrEmpty(severityIfNotExists)) + data["_severityOverride"] = severityIfNotExists; + } + + return data; + } + } +} diff --git a/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/GatherRuleContext.cs b/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/GatherRuleContext.cs new file mode 100644 index 00000000..3fe19159 --- /dev/null +++ b/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/GatherRuleContext.cs @@ -0,0 +1,88 @@ +using System; +using System.Collections.Generic; +using AutopilotMonitor.Agent.Core.Logging; +using AutopilotMonitor.Agent.Core.Monitoring.Tracking; +using AutopilotMonitor.Shared.Models; + +namespace AutopilotMonitor.Agent.Core.Monitoring.Collectors.GatherCollectors +{ + /// + /// Shared dependencies passed to each gather rule collector. + /// + public class GatherRuleContext + { + public AgentLogger Logger { get; } + public string SessionId { get; } + public string TenantId { get; } + public Action OnEventCollected { get; } + public string ImeLogPathOverride { get; } + public LogFilePositionTracker FilePositionTracker { get; } + public bool UnrestrictedMode { get; set; } + + public GatherRuleContext( + AgentLogger logger, + string sessionId, + string tenantId, + Action onEventCollected, + string imeLogPathOverride, + LogFilePositionTracker filePositionTracker) + { + Logger = logger ?? throw new ArgumentNullException(nameof(logger)); + SessionId = sessionId ?? throw new ArgumentNullException(nameof(sessionId)); + TenantId = tenantId ?? throw new ArgumentNullException(nameof(tenantId)); + OnEventCollected = onEventCollected ?? throw new ArgumentNullException(nameof(onEventCollected)); + ImeLogPathOverride = imeLogPathOverride; + FilePositionTracker = filePositionTracker ?? throw new ArgumentNullException(nameof(filePositionTracker)); + } + + /// + /// Emits a security_warning event and returns an empty result dictionary. + /// Called when a gather rule targets a path/query not on the allowlist. + /// + public Dictionary EmitSecurityWarning(GatherRule rule, string collectorType, string target) + { + Logger.Warning($"SECURITY: {collectorType} path blocked by guard: {target} (Rule: {rule.RuleId})"); + + var data = new Dictionary + { + ["blocked"] = true, + ["reason"] = $"{collectorType} target not on allowlist", + ["target"] = target, + ["ruleId"] = rule.RuleId, + }; + + OnEventCollected(new EnrollmentEvent + { + SessionId = SessionId, + TenantId = TenantId, + Timestamp = DateTime.UtcNow, + EventType = "security_warning", + Severity = EventSeverity.Warning, + Source = "GatherRuleExecutor", + Message = $"Blocked {collectorType} target not on allowlist: {target} (Rule: {rule.RuleId})", + Data = data + }); + + return new Dictionary(); + } + + /// + /// Parses a severity string into an EventSeverity enum value. + /// + public static EventSeverity ParseSeverity(string severity) + { + if (string.IsNullOrEmpty(severity)) + return EventSeverity.Info; + + switch (severity.ToLower()) + { + case "debug": return EventSeverity.Debug; + case "info": return EventSeverity.Info; + case "warning": return EventSeverity.Warning; + case "error": return EventSeverity.Error; + case "critical": return EventSeverity.Critical; + default: return EventSeverity.Info; + } + } + } +} diff --git a/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/IGatherRuleCollector.cs b/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/IGatherRuleCollector.cs new file mode 100644 index 00000000..9e93b757 --- /dev/null +++ b/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/IGatherRuleCollector.cs @@ -0,0 +1,14 @@ +using System.Collections.Generic; +using AutopilotMonitor.Shared.Models; + +namespace AutopilotMonitor.Agent.Core.Monitoring.Collectors.GatherCollectors +{ + /// + /// Strategy interface for individual gather rule collector implementations. + /// + public interface IGatherRuleCollector + { + string CollectorType { get; } + Dictionary Execute(GatherRule rule, GatherRuleContext context); + } +} diff --git a/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/JsonCollector.cs b/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/JsonCollector.cs new file mode 100644 index 00000000..f10d79d8 --- /dev/null +++ b/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/JsonCollector.cs @@ -0,0 +1,100 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AutopilotMonitor.Shared.Models; +using Newtonsoft.Json.Linq; + +namespace AutopilotMonitor.Agent.Core.Monitoring.Collectors.GatherCollectors +{ + public class JsonCollector : IGatherRuleCollector + { + public string CollectorType => "json"; + + public Dictionary Execute(GatherRule rule, GatherRuleContext context) + { + var data = new Dictionary(); + var filePath = rule.Target; + + if (string.IsNullOrEmpty(filePath)) + return data; + + filePath = Environment.ExpandEnvironmentVariables(filePath); + + if (!GatherRuleGuards.IsFilePathAllowed(filePath, context.UnrestrictedMode)) + return context.EmitSecurityWarning(rule, "json", filePath); + + string jsonPath; + if (rule.Parameters == null || !rule.Parameters.TryGetValue("jsonpath", out jsonPath) || + string.IsNullOrEmpty(jsonPath)) + { + context.Logger.Warning($"JSON rule {rule.RuleId} has no 'jsonpath' parameter"); + data["error"] = "Missing required 'jsonpath' parameter"; + return data; + } + + int maxResults = 20; + string maxResultsStr; + if (rule.Parameters.TryGetValue("maxResults", out maxResultsStr)) + int.TryParse(maxResultsStr, out maxResults); + maxResults = Math.Min(maxResults, 100); + + try + { + if (!File.Exists(filePath)) + { + data["exists"] = false; + data["path"] = filePath; + return data; + } + + var info = new FileInfo(filePath); + if (info.Length > 200 * 1024) // 200 KB limit + { + data["error"] = $"File too large ({info.Length} bytes, max 200 KB)"; + data["path"] = filePath; + return data; + } + + string content; + using (var reader = new StreamReader(filePath)) + { + content = reader.ReadToEnd(); + } + + var token = JToken.Parse(content); + var results = token.SelectTokens(jsonPath).Take(maxResults).ToList(); + + data["path"] = filePath; + data["query"] = jsonPath; + data["matchCount"] = results.Count; + + if (results.Count == 1) + { + data["value"] = TruncateMessage(results[0].ToString(), 2000); + } + + if (results.Count > 0) + { + var matchStrings = results.Select(r => TruncateMessage(r.ToString(), 500)).ToList(); + data["matches"] = string.Join("\n---\n", matchStrings); + } + } + catch (Exception ex) + { + data["error"] = ex.Message; + data["path"] = filePath; + data["query"] = jsonPath; + } + + return data; + } + + private static string TruncateMessage(string message, int maxLength) + { + if (string.IsNullOrEmpty(message) || message.Length <= maxLength) + return message; + return message.Substring(0, maxLength) + "..."; + } + } +} diff --git a/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/LogParserCollector.cs b/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/LogParserCollector.cs new file mode 100644 index 00000000..5fde864f --- /dev/null +++ b/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/LogParserCollector.cs @@ -0,0 +1,302 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using AutopilotMonitor.Agent.Core.Monitoring.Tracking; +using AutopilotMonitor.Shared.Models; + +namespace AutopilotMonitor.Agent.Core.Monitoring.Collectors.GatherCollectors +{ + public class LogParserCollector : IGatherRuleCollector + { + public string CollectorType => "logparser"; + + /// + /// Executes the log parser rule. Returns null because logparser emits events directly + /// via context.OnEventCollected rather than returning a single result dictionary. + /// + public Dictionary Execute(GatherRule rule, GatherRuleContext context) + { + var filePath = rule.Target; + if (string.IsNullOrEmpty(filePath)) + return null; + + filePath = Environment.ExpandEnvironmentVariables(filePath); + + // Apply IME log path override if set + if (!string.IsNullOrEmpty(context.ImeLogPathOverride)) + { + var fileName = Path.GetFileName(filePath); + filePath = Path.Combine(context.ImeLogPathOverride, fileName); + } + + // Get parameters + string patternStr; + if (rule.Parameters == null || !rule.Parameters.TryGetValue("pattern", out patternStr) || + string.IsNullOrEmpty(patternStr)) + { + context.Logger.Warning($"LogParser rule {rule.RuleId} has no 'pattern' parameter"); + return null; + } + + string trackPositionStr; + bool trackPosition = true; + if (rule.Parameters.TryGetValue("trackPosition", out trackPositionStr)) + bool.TryParse(trackPositionStr, out trackPosition); + + string maxLinesStr; + int maxLines = 1000; + if (rule.Parameters.TryGetValue("maxLines", out maxLinesStr)) + int.TryParse(maxLinesStr, out maxLines); + + // Determine format: "cmtrace" (default) or "text" for plain text logs + string formatStr; + bool isTextMode = false; + if (rule.Parameters.TryGetValue("format", out formatStr)) + isTextMode = string.Equals(formatStr, "text", StringComparison.OrdinalIgnoreCase); + + Regex pattern; + try + { + pattern = new Regex(patternStr, RegexOptions.Compiled, TimeSpan.FromSeconds(1)); + } + catch (Exception ex) + { + context.Logger.Warning($"LogParser rule {rule.RuleId} has invalid regex: {ex.Message}"); + return null; + } + + // Resolve file paths — supports wildcards (* and ?) in the filename portion + var resolvedPaths = ResolveLogPaths(filePath, rule.RuleId, context); + if (resolvedPaths.Count == 0) + { + context.Logger.Debug($"LogParser rule {rule.RuleId}: no files found for: {filePath}"); + return null; + } + + foreach (var resolvedPath in resolvedPaths) + { + ProcessLogFile(resolvedPath, rule, pattern, trackPosition, maxLines, isTextMode, context); + } + + return null; + } + + private static List ResolveLogPaths(string filePath, string ruleId, GatherRuleContext context) + { + var fileNamePart = Path.GetFileName(filePath); + + // No wildcards — single file + if (!fileNamePart.Contains("*") && !fileNamePart.Contains("?")) + { + if (File.Exists(filePath)) + return new List { filePath }; + return new List(); + } + + // Wildcard expansion + var directory = Path.GetDirectoryName(filePath); + if (string.IsNullOrEmpty(directory) || !Directory.Exists(directory)) + return new List(); + + try + { + // Return matched files sorted by last write time (newest first), capped at 20 + return Directory.GetFiles(directory, fileNamePart) + .OrderByDescending(f => new FileInfo(f).LastWriteTimeUtc) + .Take(20) + .ToList(); + } + catch (Exception ex) + { + context.Logger.Warning($"LogParser rule {ruleId}: wildcard expansion failed for {filePath}: {ex.Message}"); + return new List(); + } + } + + private static void ProcessLogFile(string filePath, GatherRule rule, Regex pattern, + bool trackPosition, int maxLines, bool isTextMode, GatherRuleContext context) + { + try + { + var fileInfo = new FileInfo(filePath); + long startPosition = trackPosition + ? context.FilePositionTracker.GetSafePosition(filePath, fileInfo.Length) + : 0; + + // Nothing new to read + if (startPosition >= fileInfo.Length) + return; + + int matchCount = 0; + int linesRead = 0; + long endPosition = startPosition; + + using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) + { + stream.Seek(startPosition, SeekOrigin.Begin); + + using (var reader = new StreamReader(stream, Encoding.UTF8)) + { + string line; + while ((line = reader.ReadLine()) != null && linesRead < maxLines) + { + linesRead++; + + if (isTextMode) + { + // Text mode: match regex directly against the raw line + Match match; + try + { + match = pattern.Match(line); + } + catch (RegexMatchTimeoutException) + { + continue; + } + if (!match.Success) + continue; + + var data = new Dictionary(); + foreach (var groupName in pattern.GetGroupNames()) + { + if (groupName == "0") continue; + var group = match.Groups[groupName]; + if (group.Success) + data[groupName] = group.Value; + } + + data["logLine"] = TruncateMessage(line, 500); + data["logLineNumber"] = linesRead; + data["logFile"] = Path.GetFileName(filePath); + data["ruleId"] = rule.RuleId; + data["ruleTitle"] = rule.Title; + + var eventType = !string.IsNullOrEmpty(rule.OutputEventType) + ? rule.OutputEventType + : "logparser_match"; + var severity = GatherRuleContext.ParseSeverity(rule.OutputSeverity); + + context.OnEventCollected(new EnrollmentEvent + { + SessionId = context.SessionId, + TenantId = context.TenantId, + Timestamp = DateTime.UtcNow, + EventType = eventType, + Severity = severity, + Source = "GatherRuleExecutor", + Message = $"Gather: {rule.Title}", + Data = data + }); + + matchCount++; + } + else + { + // CMTrace mode: parse line as CMTrace format, match regex against message + CmTraceLogEntry entry; + if (!CmTraceLogParser.TryParseLine(line, out entry)) + continue; + + Match match; + try + { + match = pattern.Match(entry.Message); + } + catch (RegexMatchTimeoutException) + { + continue; + } + if (!match.Success) + continue; + + var data = new Dictionary(); + foreach (var groupName in pattern.GetGroupNames()) + { + if (groupName == "0") continue; + var group = match.Groups[groupName]; + if (group.Success) + data[groupName] = group.Value; + } + + data["logTimestamp"] = entry.Timestamp.ToString("o"); + data["logComponent"] = entry.Component; + data["logType"] = entry.Type; + data["logMessage"] = TruncateMessage(entry.Message, 500); + data["logFile"] = Path.GetFileName(filePath); + data["ruleId"] = rule.RuleId; + data["ruleTitle"] = rule.Title; + + var eventType = !string.IsNullOrEmpty(rule.OutputEventType) + ? rule.OutputEventType + : "logparser_match"; + var severity = MapCmTraceTypeToSeverity(entry.Type, rule.OutputSeverity); + + context.OnEventCollected(new EnrollmentEvent + { + SessionId = context.SessionId, + TenantId = context.TenantId, + Timestamp = entry.Timestamp, + EventType = eventType, + Severity = severity, + Source = "GatherRuleExecutor", + Message = $"Gather: {rule.Title}", + Data = data + }); + + matchCount++; + } + } + + // Capture the final stream position after reading + endPosition = stream.Position; + } + } + + if (trackPosition) + context.FilePositionTracker.SetPosition(filePath, endPosition); + + if (matchCount > 0) + context.Logger.Debug($"LogParser rule {rule.RuleId}: {matchCount} matches from {linesRead} lines in {Path.GetFileName(filePath)}"); + } + catch (Exception ex) + { + context.Logger.Warning($"LogParser rule {rule.RuleId} failed reading {filePath}: {ex.Message}"); + } + } + + private static EventSeverity MapCmTraceTypeToSeverity(int cmTraceType, string ruleOverride) + { + // If the rule specifies a severity, use it + if (!string.IsNullOrEmpty(ruleOverride)) + { + switch (ruleOverride.ToLower()) + { + case "debug": return EventSeverity.Debug; + case "info": return EventSeverity.Info; + case "warning": return EventSeverity.Warning; + case "error": return EventSeverity.Error; + case "critical": return EventSeverity.Critical; + } + } + + // Otherwise derive from CMTrace log type + switch (cmTraceType) + { + case 2: return EventSeverity.Warning; + case 3: return EventSeverity.Error; + default: return EventSeverity.Info; + } + } + + private static string TruncateMessage(string message, int maxLength) + { + if (string.IsNullOrEmpty(message) || message.Length <= maxLength) + return message; + return message.Substring(0, maxLength) + "..."; + } + } +} diff --git a/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/RegistryCollector.cs b/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/RegistryCollector.cs new file mode 100644 index 00000000..899ecaab --- /dev/null +++ b/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/RegistryCollector.cs @@ -0,0 +1,156 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using AutopilotMonitor.Shared.Models; +using Microsoft.Win32; + +namespace AutopilotMonitor.Agent.Core.Monitoring.Collectors.GatherCollectors +{ + public class RegistryCollector : IGatherRuleCollector + { + public string CollectorType => "registry"; + + public Dictionary Execute(GatherRule rule, GatherRuleContext context) + { + var data = new Dictionary(); + var path = rule.Target; + + if (string.IsNullOrEmpty(path)) + return data; + + // Determine hive + RegistryKey hive = null; + string subPath = path; + + if (path.StartsWith("HKLM\\", StringComparison.OrdinalIgnoreCase) || + path.StartsWith("HKEY_LOCAL_MACHINE\\", StringComparison.OrdinalIgnoreCase)) + { + hive = Registry.LocalMachine; + subPath = path.Substring(path.IndexOf('\\') + 1); + } + else if (path.StartsWith("HKCU\\", StringComparison.OrdinalIgnoreCase) || + path.StartsWith("HKEY_CURRENT_USER\\", StringComparison.OrdinalIgnoreCase)) + { + hive = Registry.CurrentUser; + subPath = path.Substring(path.IndexOf('\\') + 1); + } + else + { + // Default to HKLM + hive = Registry.LocalMachine; + } + + // Guard: only allow enrollment-relevant registry paths + if (!GatherRuleGuards.IsRegistryPathAllowed(subPath, context.UnrestrictedMode)) + return context.EmitSecurityWarning(rule, "registry", path); + + // Determine explicit valueName from parameters + string explicitValueName = null; + rule.Parameters?.TryGetValue("valueName", out explicitValueName); + + // Check if subkey enumeration is requested + string listSubkeysStr = null; + rule.Parameters?.TryGetValue("listSubkeys", out listSubkeysStr); + bool listSubkeys = string.Equals(listSubkeysStr, "true", StringComparison.OrdinalIgnoreCase); + + // Optional conditional severity based on existence + string severityIfExists = null; + string severityIfNotExists = null; + rule.Parameters?.TryGetValue("severityIfExists", out severityIfExists); + rule.Parameters?.TryGetValue("severityIfNotExists", out severityIfNotExists); + + try + { + using (var key = hive.OpenSubKey(subPath, false)) + { + if (key == null) + { + // The key doesn't exist as a sub-key. If no explicit valueName was given, + // check whether the last path segment is a value name in the parent key. + // This handles the common case where the user specifies the full + // "HKLM\...\KeyName\ValueName" path directly in Target. + if (string.IsNullOrEmpty(explicitValueName) && !listSubkeys) + { + var lastBackslash = subPath.LastIndexOf('\\'); + if (lastBackslash > 0) + { + var parentSubPath = subPath.Substring(0, lastBackslash); + var inferredValueName = subPath.Substring(lastBackslash + 1); + + using (var parentKey = hive.OpenSubKey(parentSubPath, false)) + { + if (parentKey != null) + { + var valueNames = parentKey.GetValueNames(); + if (Array.Exists(valueNames, n => string.Equals(n, inferredValueName, StringComparison.OrdinalIgnoreCase))) + { + var value = parentKey.GetValue(inferredValueName); + data["exists"] = true; + data["path"] = path.Substring(0, path.LastIndexOf('\\')); + data[inferredValueName] = value?.ToString(); + return data; + } + } + } + } + } + + data["exists"] = false; + data["path"] = path; + return data; + } + + data["exists"] = true; + data["path"] = path; + + if (listSubkeys) + { + // Enumerate subkey names (max 100) + var subKeyNames = key.GetSubKeyNames().Take(100).ToArray(); + data["subkey_count"] = subKeyNames.Length; + for (int i = 0; i < subKeyNames.Length; i++) + { + data[$"subkey_{i + 1}"] = subKeyNames[i]; + } + } + else if (!string.IsNullOrEmpty(explicitValueName)) + { + // Read specific value if specified in parameters + var value = key.GetValue(explicitValueName); + data[explicitValueName] = value?.ToString(); + } + else + { + // Read all values + foreach (var name in key.GetValueNames().Take(50)) // Limit to 50 values + { + try + { + var value = key.GetValue(name); + var displayName = string.IsNullOrEmpty(name) ? "(Default)" : name; + data[displayName] = value?.ToString(); + } + catch { } + } + } + } + } + catch (Exception ex) + { + data["error"] = ex.Message; + } + + // Apply conditional severity based on existence + if (data.ContainsKey("exists")) + { + var exists = data["exists"] is bool b ? b : data["exists"]?.ToString() == "True"; + if (exists && !string.IsNullOrEmpty(severityIfExists)) + data["_severityOverride"] = severityIfExists; + else if (!exists && !string.IsNullOrEmpty(severityIfNotExists)) + data["_severityOverride"] = severityIfNotExists; + } + + return data; + } + } +} diff --git a/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/WmiCollector.cs b/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/WmiCollector.cs new file mode 100644 index 00000000..b3829ecb --- /dev/null +++ b/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/WmiCollector.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Management; +using AutopilotMonitor.Shared.Models; + +namespace AutopilotMonitor.Agent.Core.Monitoring.Collectors.GatherCollectors +{ + public class WmiCollector : IGatherRuleCollector + { + public string CollectorType => "wmi"; + + public Dictionary Execute(GatherRule rule, GatherRuleContext context) + { + var data = new Dictionary(); + var query = rule.Target; + + if (string.IsNullOrEmpty(query)) + return data; + + // Guard: only allow known-safe WMI classes + if (!GatherRuleGuards.IsWmiQueryAllowed(query, context.UnrestrictedMode)) + return context.EmitSecurityWarning(rule, "wmi", query); + + try + { + using (var searcher = new ManagementObjectSearcher(query)) + { + int index = 0; + foreach (ManagementObject obj in searcher.Get()) + { + var item = new Dictionary(); + foreach (var prop in obj.Properties) + { + try + { + item[prop.Name] = prop.Value?.ToString(); + } + catch { } + } + + if (item.Count > 0) + { + // For single result, flatten; for multiple, use indexed keys + if (index == 0) + { + foreach (var kvp in item) + data[kvp.Key] = kvp.Value; + } + else + { + data[$"item_{index}"] = string.Join(", ", item.Select(k => $"{k.Key}={k.Value}")); + } + } + index++; + + if (index >= 20) break; // Limit results + } + } + } + catch (Exception ex) + { + data["error"] = ex.Message; + } + + return data; + } + } +} diff --git a/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/XmlCollector.cs b/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/XmlCollector.cs new file mode 100644 index 00000000..d2f17b8a --- /dev/null +++ b/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherCollectors/XmlCollector.cs @@ -0,0 +1,159 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Xml; +using System.Xml.Linq; +using System.Xml.XPath; +using AutopilotMonitor.Shared.Models; + +namespace AutopilotMonitor.Agent.Core.Monitoring.Collectors.GatherCollectors +{ + public class XmlCollector : IGatherRuleCollector + { + public string CollectorType => "xml"; + + public Dictionary Execute(GatherRule rule, GatherRuleContext context) + { + var data = new Dictionary(); + var filePath = rule.Target; + + if (string.IsNullOrEmpty(filePath)) + return data; + + filePath = Environment.ExpandEnvironmentVariables(filePath); + + if (!GatherRuleGuards.IsFilePathAllowed(filePath, context.UnrestrictedMode)) + return context.EmitSecurityWarning(rule, "xml", filePath); + + string xpath; + if (rule.Parameters == null || !rule.Parameters.TryGetValue("xpath", out xpath) || + string.IsNullOrEmpty(xpath)) + { + context.Logger.Warning($"XML rule {rule.RuleId} has no 'xpath' parameter"); + data["error"] = "Missing required 'xpath' parameter"; + return data; + } + + int maxResults = 20; + string maxResultsStr; + if (rule.Parameters.TryGetValue("maxResults", out maxResultsStr)) + int.TryParse(maxResultsStr, out maxResults); + maxResults = Math.Min(maxResults, 100); + + try + { + if (!File.Exists(filePath)) + { + data["exists"] = false; + data["path"] = filePath; + return data; + } + + var info = new FileInfo(filePath); + if (info.Length > 200 * 1024) // 200 KB limit + { + data["error"] = $"File too large ({info.Length} bytes, max 200 KB)"; + data["path"] = filePath; + return data; + } + + // Parse XML with DTD processing disabled (XXE prevention) + var settings = new XmlReaderSettings + { + DtdProcessing = DtdProcessing.Prohibit, + XmlResolver = null + }; + + XDocument doc; + using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) + using (var xmlReader = XmlReader.Create(stream, settings)) + { + doc = XDocument.Load(xmlReader); + } + + // Set up namespace resolver if namespaces are provided + XmlNamespaceManager nsManager = null; + string namespacesStr; + if (rule.Parameters.TryGetValue("namespaces", out namespacesStr) && + !string.IsNullOrEmpty(namespacesStr)) + { + nsManager = new XmlNamespaceManager(new NameTable()); + foreach (var ns in namespacesStr.Split(';')) + { + var parts = ns.Split(new[] { '=' }, 2); + if (parts.Length == 2 && !string.IsNullOrEmpty(parts[0]) && !string.IsNullOrEmpty(parts[1])) + { + nsManager.AddNamespace(parts[0].Trim(), parts[1].Trim()); + } + } + } + + // Execute XPath — try element selection first, fall back to evaluate for scalar/attribute results + var elements = nsManager != null + ? doc.XPathSelectElements(xpath, nsManager).Take(maxResults).ToList() + : doc.XPathSelectElements(xpath).Take(maxResults).ToList(); + + data["path"] = filePath; + data["query"] = xpath; + + if (elements.Count > 0) + { + data["matchCount"] = elements.Count; + if (elements.Count == 1) + { + data["value"] = TruncateMessage(elements[0].ToString(), 2000); + } + var matchStrings = elements.Select(e => TruncateMessage(e.ToString(), 500)).ToList(); + data["matches"] = string.Join("\n---\n", matchStrings); + } + else + { + // Try XPathEvaluate for scalar results (attributes, text(), count(), etc.) + var evalResult = nsManager != null + ? doc.XPathEvaluate(xpath, nsManager) + : doc.XPathEvaluate(xpath); + + if (evalResult is IEnumerable enumerable) + { + var items = enumerable.Take(maxResults).ToList(); + data["matchCount"] = items.Count; + if (items.Count == 1) + { + data["value"] = TruncateMessage(items[0].ToString(), 2000); + } + if (items.Count > 0) + { + data["matches"] = string.Join("\n---\n", + items.Select(i => TruncateMessage(i.ToString(), 500))); + } + } + else if (evalResult != null) + { + data["matchCount"] = 1; + data["value"] = TruncateMessage(evalResult.ToString(), 2000); + } + else + { + data["matchCount"] = 0; + } + } + } + catch (Exception ex) + { + data["error"] = ex.Message; + data["path"] = filePath; + data["query"] = xpath; + } + + return data; + } + + private static string TruncateMessage(string message, int maxLength) + { + if (string.IsNullOrEmpty(message) || message.Length <= maxLength) + return message; + return message.Substring(0, maxLength) + "..."; + } + } +} diff --git a/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherRuleExecutor.Executors.cs b/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherRuleExecutor.Executors.cs deleted file mode 100644 index 78024d80..00000000 --- a/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherRuleExecutor.Executors.cs +++ /dev/null @@ -1,1094 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Diagnostics.Eventing.Reader; -using System.IO; -using System.Linq; -using System.Management; -using System.Text; -using System.Text.RegularExpressions; -using System.Threading; -using System.Xml; -using System.Xml.Linq; -using System.Xml.XPath; -using AutopilotMonitor.Agent.Core.Logging; -using AutopilotMonitor.Agent.Core.Monitoring.Tracking; -using AutopilotMonitor.Shared.Models; -using Microsoft.Win32; -using Newtonsoft.Json.Linq; - -namespace AutopilotMonitor.Agent.Core.Monitoring.Collectors -{ - /// - /// Partial: Individual rule executor implementations (registry, WMI, command, file, eventlog, logparser, json, xml). - /// - public partial class GatherRuleExecutor - { - private Dictionary ExecuteRegistryRule(GatherRule rule) - { - var data = new Dictionary(); - var path = rule.Target; - - if (string.IsNullOrEmpty(path)) - return data; - - // Determine hive - RegistryKey hive = null; - string subPath = path; - - if (path.StartsWith("HKLM\\", StringComparison.OrdinalIgnoreCase) || - path.StartsWith("HKEY_LOCAL_MACHINE\\", StringComparison.OrdinalIgnoreCase)) - { - hive = Registry.LocalMachine; - subPath = path.Substring(path.IndexOf('\\') + 1); - } - else if (path.StartsWith("HKCU\\", StringComparison.OrdinalIgnoreCase) || - path.StartsWith("HKEY_CURRENT_USER\\", StringComparison.OrdinalIgnoreCase)) - { - hive = Registry.CurrentUser; - subPath = path.Substring(path.IndexOf('\\') + 1); - } - else - { - // Default to HKLM - hive = Registry.LocalMachine; - } - - // Guard: only allow enrollment-relevant registry paths - if (!GatherRuleGuards.IsRegistryPathAllowed(subPath, UnrestrictedMode)) - return EmitSecurityWarning(rule, "registry", path); - - // Determine explicit valueName from parameters - string explicitValueName = null; - rule.Parameters?.TryGetValue("valueName", out explicitValueName); - - // Check if subkey enumeration is requested - string listSubkeysStr = null; - rule.Parameters?.TryGetValue("listSubkeys", out listSubkeysStr); - bool listSubkeys = string.Equals(listSubkeysStr, "true", StringComparison.OrdinalIgnoreCase); - - // Optional conditional severity based on existence - string severityIfExists = null; - string severityIfNotExists = null; - rule.Parameters?.TryGetValue("severityIfExists", out severityIfExists); - rule.Parameters?.TryGetValue("severityIfNotExists", out severityIfNotExists); - - try - { - using (var key = hive.OpenSubKey(subPath, false)) - { - if (key == null) - { - // The key doesn't exist as a sub-key. If no explicit valueName was given, - // check whether the last path segment is a value name in the parent key. - // This handles the common case where the user specifies the full - // "HKLM\...\KeyName\ValueName" path directly in Target. - if (string.IsNullOrEmpty(explicitValueName) && !listSubkeys) - { - var lastBackslash = subPath.LastIndexOf('\\'); - if (lastBackslash > 0) - { - var parentSubPath = subPath.Substring(0, lastBackslash); - var inferredValueName = subPath.Substring(lastBackslash + 1); - - using (var parentKey = hive.OpenSubKey(parentSubPath, false)) - { - if (parentKey != null) - { - var valueNames = parentKey.GetValueNames(); - if (Array.Exists(valueNames, n => string.Equals(n, inferredValueName, StringComparison.OrdinalIgnoreCase))) - { - var value = parentKey.GetValue(inferredValueName); - data["exists"] = true; - data["path"] = path.Substring(0, path.LastIndexOf('\\')); - data[inferredValueName] = value?.ToString(); - return data; - } - } - } - } - } - - data["exists"] = false; - data["path"] = path; - return data; - } - - data["exists"] = true; - data["path"] = path; - - if (listSubkeys) - { - // Enumerate subkey names (max 100) - var subKeyNames = key.GetSubKeyNames().Take(100).ToArray(); - data["subkey_count"] = subKeyNames.Length; - for (int i = 0; i < subKeyNames.Length; i++) - { - data[$"subkey_{i + 1}"] = subKeyNames[i]; - } - } - else if (!string.IsNullOrEmpty(explicitValueName)) - { - // Read specific value if specified in parameters - var value = key.GetValue(explicitValueName); - data[explicitValueName] = value?.ToString(); - } - else - { - // Read all values - foreach (var name in key.GetValueNames().Take(50)) // Limit to 50 values - { - try - { - var value = key.GetValue(name); - var displayName = string.IsNullOrEmpty(name) ? "(Default)" : name; - data[displayName] = value?.ToString(); - } - catch { } - } - } - } - } - catch (Exception ex) - { - data["error"] = ex.Message; - } - - // Apply conditional severity based on existence - if (data.ContainsKey("exists")) - { - var exists = data["exists"] is bool b ? b : data["exists"]?.ToString() == "True"; - if (exists && !string.IsNullOrEmpty(severityIfExists)) - data["_severityOverride"] = severityIfExists; - else if (!exists && !string.IsNullOrEmpty(severityIfNotExists)) - data["_severityOverride"] = severityIfNotExists; - } - - return data; - } - - private Dictionary ExecuteWmiRule(GatherRule rule) - { - var data = new Dictionary(); - var query = rule.Target; - - if (string.IsNullOrEmpty(query)) - return data; - - // Guard: only allow known-safe WMI classes - if (!GatherRuleGuards.IsWmiQueryAllowed(query, UnrestrictedMode)) - return EmitSecurityWarning(rule, "wmi", query); - - try - { - using (var searcher = new ManagementObjectSearcher(query)) - { - int index = 0; - foreach (ManagementObject obj in searcher.Get()) - { - var item = new Dictionary(); - foreach (var prop in obj.Properties) - { - try - { - item[prop.Name] = prop.Value?.ToString(); - } - catch { } - } - - if (item.Count > 0) - { - // For single result, flatten; for multiple, use indexed keys - if (index == 0) - { - foreach (var kvp in item) - data[kvp.Key] = kvp.Value; - } - else - { - data[$"item_{index}"] = string.Join(", ", item.Select(k => $"{k.Key}={k.Value}")); - } - } - index++; - - if (index >= 20) break; // Limit results - } - } - } - catch (Exception ex) - { - data["error"] = ex.Message; - } - - return data; - } - - private Dictionary ExecuteCommandRule(GatherRule rule) - { - var data = new Dictionary(); - var command = rule.Target; - - if (string.IsNullOrEmpty(command)) - return data; - - // SECURITY: Check command against allowlist - if (!GatherRuleGuards.IsCommandAllowed(command, UnrestrictedMode)) - { - _logger.Warning($"SECURITY: Command blocked by allowlist: {command} (Rule: {rule.RuleId})"); - data["blocked"] = true; - data["reason"] = "Command not on allowlist"; - data["command"] = command; - - _onEventCollected(new EnrollmentEvent - { - SessionId = _sessionId, - TenantId = _tenantId, - Timestamp = DateTime.UtcNow, - EventType = "security_warning", - Severity = EventSeverity.Warning, - Source = "GatherRuleExecutor", - Message = $"Blocked command not on allowlist: {command} (Rule: {rule.RuleId})", - Data = data - }); - - return data; - } - - try - { - var isPowerShell = !command.StartsWith("netsh", StringComparison.OrdinalIgnoreCase) && - !command.StartsWith("ipconfig", StringComparison.OrdinalIgnoreCase) && - !command.StartsWith("nltest", StringComparison.OrdinalIgnoreCase) && - !command.StartsWith("certutil", StringComparison.OrdinalIgnoreCase) && - !command.StartsWith("dsregcmd", StringComparison.OrdinalIgnoreCase); - - ProcessStartInfo psi; - if (isPowerShell) - { - // Use -EncodedCommand with Base64-encoded UTF-16LE to prevent command injection - var encodedCommand = Convert.ToBase64String(Encoding.Unicode.GetBytes(command)); - psi = new ProcessStartInfo - { - FileName = "powershell.exe", - Arguments = $"-NoProfile -ExecutionPolicy RemoteSigned -EncodedCommand {encodedCommand}", - UseShellExecute = false, - RedirectStandardOutput = true, - RedirectStandardError = true, - CreateNoWindow = true - }; - } - else - { - psi = new ProcessStartInfo - { - FileName = "cmd.exe", - Arguments = $"/c {command}", - UseShellExecute = false, - RedirectStandardOutput = true, - RedirectStandardError = true, - CreateNoWindow = true - }; - } - - using (var process = Process.Start(psi)) - { - var output = process.StandardOutput.ReadToEnd(); - var error = process.StandardError.ReadToEnd(); - process.WaitForExit(30000); // 30 second timeout - - data["command"] = command; - data["exit_code"] = process.ExitCode; - - if (!string.IsNullOrWhiteSpace(output)) - { - data["output"] = output.Length > 32000 ? output.Substring(0, 32000) + "... (truncated)" : output; - } - - if (!string.IsNullOrWhiteSpace(error)) - { - data["error_output"] = error.Length > 8000 ? error.Substring(0, 8000) + "... (truncated)" : error; - } - } - } - catch (Exception ex) - { - data["error"] = ex.Message; - } - - return data; - } - - private Dictionary ExecuteFileRule(GatherRule rule) - { - var data = new Dictionary(); - var filePath = rule.Target; - - if (string.IsNullOrEmpty(filePath)) - return data; - - // Expand environment variables - filePath = Environment.ExpandEnvironmentVariables(filePath); - - // Guard: only allow enrollment-relevant file paths - if (!GatherRuleGuards.IsFilePathAllowed(filePath, UnrestrictedMode)) - return EmitSecurityWarning(rule, "file", filePath); - - // Optional conditional severity based on existence - string severityIfExists = null; - string severityIfNotExists = null; - rule.Parameters?.TryGetValue("severityIfExists", out severityIfExists); - rule.Parameters?.TryGetValue("severityIfNotExists", out severityIfNotExists); - - try - { - if (File.Exists(filePath)) - { - var info = new FileInfo(filePath); - data["exists"] = true; - data["path"] = filePath; - data["size_bytes"] = info.Length; - data["last_modified"] = info.LastWriteTimeUtc.ToString("o"); - data["created"] = info.CreationTimeUtc.ToString("o"); - - // Read content if requested and file is small enough - string readContent; - if (rule.Parameters != null && rule.Parameters.TryGetValue("readContent", out readContent) && - readContent == "true" && info.Length < 50000) // Max 50KB - { - // Read the last 4000 chars — most useful for log files where recent entries matter - const int maxChars = 4000; - string content; - bool truncated = false; - using (var reader = new StreamReader(filePath)) - { - var full = reader.ReadToEnd(); - if (full.Length > maxChars) - { - content = full.Substring(full.Length - maxChars); - truncated = true; - } - else - { - content = full; - } - } - data["content"] = truncated ? "(truncated) ..." + content : content; - } - } - else if (Directory.Exists(filePath)) - { - data["exists"] = true; - data["is_directory"] = true; - data["path"] = filePath; - - var files = Directory.GetFiles(filePath); - data["file_count"] = files.Length; - data["files"] = string.Join(", ", files.Select(Path.GetFileName).Take(20)); - } - else - { - data["exists"] = false; - data["path"] = filePath; - } - } - catch (Exception ex) - { - data["error"] = ex.Message; - } - - // Apply conditional severity based on existence - if (data.ContainsKey("exists")) - { - var exists = data["exists"] is bool b ? b : data["exists"]?.ToString() == "True"; - if (exists && !string.IsNullOrEmpty(severityIfExists)) - data["_severityOverride"] = severityIfExists; - else if (!exists && !string.IsNullOrEmpty(severityIfNotExists)) - data["_severityOverride"] = severityIfNotExists; - } - - return data; - } - - private Dictionary ExecuteEventLogRule(GatherRule rule) - { - var data = new Dictionary(); - var logName = rule.Target; - - if (string.IsNullOrEmpty(logName)) - return data; - - // Optional: escalate severity when matching entries are found - string severityIfFound = null; - rule.Parameters?.TryGetValue("severityIfFound", out severityIfFound); - - try - { - int maxEntries = 10; - if (rule.Parameters != null && rule.Parameters.TryGetValue("maxEntries", out var maxEntriesStr)) - { - int.TryParse(maxEntriesStr, out maxEntries); - maxEntries = Math.Min(maxEntries, 50); // Cap at 50 - } - - // Build XPath query with optional filters - var conditions = new List(); - - string sourceFilter = null; - if (rule.Parameters != null && rule.Parameters.TryGetValue("source", out sourceFilter) - && !string.IsNullOrEmpty(sourceFilter)) - { - conditions.Add($"Provider[@Name='{EscapeXPath(sourceFilter)}']"); - } - - string eventIdFilter = null; - if (rule.Parameters != null && rule.Parameters.TryGetValue("eventId", out eventIdFilter) - && !string.IsNullOrEmpty(eventIdFilter)) - { - conditions.Add($"EventID={eventIdFilter}"); - } - - string xpath = conditions.Count > 0 - ? $"*[System[{string.Join(" and ", conditions)}]]" - : "*"; - - string messageFilter = null; - rule.Parameters?.TryGetValue("messageFilter", out messageFilter); - - var query = new EventLogQuery(logName, PathType.LogName, xpath) - { - ReverseDirection = true // newest first - }; - - data["log_name"] = logName; - var entries = new List(); - - using (var reader = new EventLogReader(query)) - { - EventRecord record; - while ((record = reader.ReadEvent()) != null && entries.Count < maxEntries) - { - using (record) - { - var message = ""; - try { message = record.FormatDescription() ?? ""; } - catch { /* Some events lack formatting resources */ } - - // Apply message filter (wildcard contains) - if (!string.IsNullOrEmpty(messageFilter)) - { - var pattern = messageFilter.Trim('*'); - if (string.IsNullOrEmpty(pattern) || - message.IndexOf(pattern, StringComparison.OrdinalIgnoreCase) < 0) - continue; - } - - var level = ""; - try { level = record.LevelDisplayName ?? record.Level?.ToString() ?? "Unknown"; } - catch { level = record.Level?.ToString() ?? "Unknown"; } - - var truncMsg = message.Length > 500 ? message.Substring(0, 500) : message; - entries.Add($"[{record.TimeCreated:yyyy-MM-dd HH:mm:ss}] [{level}] [ID:{record.Id}] {truncMsg}"); - } - } - } - - for (int i = 0; i < entries.Count; i++) - { - data[$"entry_{i + 1}"] = entries[i]; - } - data["entries_returned"] = entries.Count; - - // Apply conditional severity when matching entries are found - if (entries.Count > 0 && !string.IsNullOrEmpty(severityIfFound)) - data["_severityOverride"] = severityIfFound; - } - catch (Exception ex) - { - data["error"] = ex.Message; - } - - return data; - } - - private static string EscapeXPath(string value) - { - return value.Replace("'", "'"); - } - - private void ExecuteLogParserRule(GatherRule rule) - { - var filePath = rule.Target; - if (string.IsNullOrEmpty(filePath)) - return; - - filePath = Environment.ExpandEnvironmentVariables(filePath); - - // Apply IME log path override if set - if (!string.IsNullOrEmpty(_imeLogPathOverride)) - { - var fileName = Path.GetFileName(filePath); - filePath = Path.Combine(_imeLogPathOverride, fileName); - } - - // Get parameters - string patternStr; - if (rule.Parameters == null || !rule.Parameters.TryGetValue("pattern", out patternStr) || - string.IsNullOrEmpty(patternStr)) - { - _logger.Warning($"LogParser rule {rule.RuleId} has no 'pattern' parameter"); - return; - } - - string trackPositionStr; - bool trackPosition = true; - if (rule.Parameters.TryGetValue("trackPosition", out trackPositionStr)) - bool.TryParse(trackPositionStr, out trackPosition); - - string maxLinesStr; - int maxLines = 1000; - if (rule.Parameters.TryGetValue("maxLines", out maxLinesStr)) - int.TryParse(maxLinesStr, out maxLines); - - // Determine format: "cmtrace" (default) or "text" for plain text logs - string formatStr; - bool isTextMode = false; - if (rule.Parameters.TryGetValue("format", out formatStr)) - isTextMode = string.Equals(formatStr, "text", StringComparison.OrdinalIgnoreCase); - - Regex pattern; - try - { - pattern = new Regex(patternStr, RegexOptions.Compiled, TimeSpan.FromSeconds(1)); - } - catch (Exception ex) - { - _logger.Warning($"LogParser rule {rule.RuleId} has invalid regex: {ex.Message}"); - return; - } - - // Resolve file paths — supports wildcards (* and ?) in the filename portion - var resolvedPaths = ResolveLogPaths(filePath, rule.RuleId); - if (resolvedPaths.Count == 0) - { - _logger.Debug($"LogParser rule {rule.RuleId}: no files found for: {filePath}"); - return; - } - - foreach (var resolvedPath in resolvedPaths) - { - ProcessLogFile(resolvedPath, rule, pattern, trackPosition, maxLines, isTextMode); - } - } - - private List ResolveLogPaths(string filePath, string ruleId) - { - var fileNamePart = Path.GetFileName(filePath); - - // No wildcards — single file - if (!fileNamePart.Contains("*") && !fileNamePart.Contains("?")) - { - if (File.Exists(filePath)) - return new List { filePath }; - return new List(); - } - - // Wildcard expansion - var directory = Path.GetDirectoryName(filePath); - if (string.IsNullOrEmpty(directory) || !Directory.Exists(directory)) - return new List(); - - try - { - // Return matched files sorted by last write time (newest first), capped at 20 - return Directory.GetFiles(directory, fileNamePart) - .OrderByDescending(f => new FileInfo(f).LastWriteTimeUtc) - .Take(20) - .ToList(); - } - catch (Exception ex) - { - _logger.Warning($"LogParser rule {ruleId}: wildcard expansion failed for {filePath}: {ex.Message}"); - return new List(); - } - } - - private void ProcessLogFile(string filePath, GatherRule rule, Regex pattern, - bool trackPosition, int maxLines, bool isTextMode) - { - try - { - var fileInfo = new FileInfo(filePath); - long startPosition = trackPosition - ? _filePositionTracker.GetSafePosition(filePath, fileInfo.Length) - : 0; - - // Nothing new to read - if (startPosition >= fileInfo.Length) - return; - - int matchCount = 0; - int linesRead = 0; - long endPosition = startPosition; - - using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) - { - stream.Seek(startPosition, SeekOrigin.Begin); - - using (var reader = new StreamReader(stream, Encoding.UTF8)) - { - string line; - while ((line = reader.ReadLine()) != null && linesRead < maxLines) - { - linesRead++; - - if (isTextMode) - { - // Text mode: match regex directly against the raw line - Match match; - try - { - match = pattern.Match(line); - } - catch (RegexMatchTimeoutException) - { - continue; - } - if (!match.Success) - continue; - - var data = new Dictionary(); - foreach (var groupName in pattern.GetGroupNames()) - { - if (groupName == "0") continue; - var group = match.Groups[groupName]; - if (group.Success) - data[groupName] = group.Value; - } - - data["logLine"] = TruncateMessage(line, 500); - data["logLineNumber"] = linesRead; - data["logFile"] = Path.GetFileName(filePath); - data["ruleId"] = rule.RuleId; - data["ruleTitle"] = rule.Title; - - var eventType = !string.IsNullOrEmpty(rule.OutputEventType) - ? rule.OutputEventType - : "logparser_match"; - var severity = ParseSeverity(rule.OutputSeverity); - - _onEventCollected(new EnrollmentEvent - { - SessionId = _sessionId, - TenantId = _tenantId, - Timestamp = DateTime.UtcNow, - EventType = eventType, - Severity = severity, - Source = "GatherRuleExecutor", - Message = $"Gather: {rule.Title}", - Data = data - }); - - matchCount++; - } - else - { - // CMTrace mode: parse line as CMTrace format, match regex against message - CmTraceLogEntry entry; - if (!CmTraceLogParser.TryParseLine(line, out entry)) - continue; - - Match match; - try - { - match = pattern.Match(entry.Message); - } - catch (RegexMatchTimeoutException) - { - continue; - } - if (!match.Success) - continue; - - var data = new Dictionary(); - foreach (var groupName in pattern.GetGroupNames()) - { - if (groupName == "0") continue; - var group = match.Groups[groupName]; - if (group.Success) - data[groupName] = group.Value; - } - - data["logTimestamp"] = entry.Timestamp.ToString("o"); - data["logComponent"] = entry.Component; - data["logType"] = entry.Type; - data["logMessage"] = TruncateMessage(entry.Message, 500); - data["logFile"] = Path.GetFileName(filePath); - data["ruleId"] = rule.RuleId; - data["ruleTitle"] = rule.Title; - - var eventType = !string.IsNullOrEmpty(rule.OutputEventType) - ? rule.OutputEventType - : "logparser_match"; - var severity = MapCmTraceTypeToSeverity(entry.Type, rule.OutputSeverity); - - _onEventCollected(new EnrollmentEvent - { - SessionId = _sessionId, - TenantId = _tenantId, - Timestamp = entry.Timestamp, - EventType = eventType, - Severity = severity, - Source = "GatherRuleExecutor", - Message = $"Gather: {rule.Title}", - Data = data - }); - - matchCount++; - } - } - - // Capture the final stream position after reading - endPosition = stream.Position; - } - } - - if (trackPosition) - _filePositionTracker.SetPosition(filePath, endPosition); - - if (matchCount > 0) - _logger.Debug($"LogParser rule {rule.RuleId}: {matchCount} matches from {linesRead} lines in {Path.GetFileName(filePath)}"); - } - catch (Exception ex) - { - _logger.Warning($"LogParser rule {rule.RuleId} failed reading {filePath}: {ex.Message}"); - } - } - - private static EventSeverity MapCmTraceTypeToSeverity(int cmTraceType, string ruleOverride) - { - // If the rule specifies a severity, use it - if (!string.IsNullOrEmpty(ruleOverride)) - { - switch (ruleOverride.ToLower()) - { - case "debug": return EventSeverity.Debug; - case "info": return EventSeverity.Info; - case "warning": return EventSeverity.Warning; - case "error": return EventSeverity.Error; - case "critical": return EventSeverity.Critical; - } - } - - // Otherwise derive from CMTrace log type - switch (cmTraceType) - { - case 2: return EventSeverity.Warning; - case 3: return EventSeverity.Error; - default: return EventSeverity.Info; - } - } - - private static string TruncateMessage(string message, int maxLength) - { - if (string.IsNullOrEmpty(message) || message.Length <= maxLength) - return message; - return message.Substring(0, maxLength) + "..."; - } - - private Dictionary ExecuteJsonRule(GatherRule rule) - { - var data = new Dictionary(); - var filePath = rule.Target; - - if (string.IsNullOrEmpty(filePath)) - return data; - - filePath = Environment.ExpandEnvironmentVariables(filePath); - - if (!GatherRuleGuards.IsFilePathAllowed(filePath, UnrestrictedMode)) - return EmitSecurityWarning(rule, "json", filePath); - - string jsonPath; - if (rule.Parameters == null || !rule.Parameters.TryGetValue("jsonpath", out jsonPath) || - string.IsNullOrEmpty(jsonPath)) - { - _logger.Warning($"JSON rule {rule.RuleId} has no 'jsonpath' parameter"); - data["error"] = "Missing required 'jsonpath' parameter"; - return data; - } - - int maxResults = 20; - string maxResultsStr; - if (rule.Parameters.TryGetValue("maxResults", out maxResultsStr)) - int.TryParse(maxResultsStr, out maxResults); - maxResults = Math.Min(maxResults, 100); - - try - { - if (!File.Exists(filePath)) - { - data["exists"] = false; - data["path"] = filePath; - return data; - } - - var info = new FileInfo(filePath); - if (info.Length > 200 * 1024) // 200 KB limit - { - data["error"] = $"File too large ({info.Length} bytes, max 200 KB)"; - data["path"] = filePath; - return data; - } - - string content; - using (var reader = new StreamReader(filePath)) - { - content = reader.ReadToEnd(); - } - - var token = JToken.Parse(content); - var results = token.SelectTokens(jsonPath).Take(maxResults).ToList(); - - data["path"] = filePath; - data["query"] = jsonPath; - data["matchCount"] = results.Count; - - if (results.Count == 1) - { - data["value"] = TruncateMessage(results[0].ToString(), 2000); - } - - if (results.Count > 0) - { - var matchStrings = results.Select(r => TruncateMessage(r.ToString(), 500)).ToList(); - data["matches"] = string.Join("\n---\n", matchStrings); - } - } - catch (Exception ex) - { - data["error"] = ex.Message; - data["path"] = filePath; - data["query"] = jsonPath; - } - - return data; - } - - private Dictionary ExecuteXmlRule(GatherRule rule) - { - var data = new Dictionary(); - var filePath = rule.Target; - - if (string.IsNullOrEmpty(filePath)) - return data; - - filePath = Environment.ExpandEnvironmentVariables(filePath); - - if (!GatherRuleGuards.IsFilePathAllowed(filePath, UnrestrictedMode)) - return EmitSecurityWarning(rule, "xml", filePath); - - string xpath; - if (rule.Parameters == null || !rule.Parameters.TryGetValue("xpath", out xpath) || - string.IsNullOrEmpty(xpath)) - { - _logger.Warning($"XML rule {rule.RuleId} has no 'xpath' parameter"); - data["error"] = "Missing required 'xpath' parameter"; - return data; - } - - int maxResults = 20; - string maxResultsStr; - if (rule.Parameters.TryGetValue("maxResults", out maxResultsStr)) - int.TryParse(maxResultsStr, out maxResults); - maxResults = Math.Min(maxResults, 100); - - try - { - if (!File.Exists(filePath)) - { - data["exists"] = false; - data["path"] = filePath; - return data; - } - - var info = new FileInfo(filePath); - if (info.Length > 200 * 1024) // 200 KB limit - { - data["error"] = $"File too large ({info.Length} bytes, max 200 KB)"; - data["path"] = filePath; - return data; - } - - // Parse XML with DTD processing disabled (XXE prevention) - var settings = new XmlReaderSettings - { - DtdProcessing = DtdProcessing.Prohibit, - XmlResolver = null - }; - - XDocument doc; - using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) - using (var xmlReader = XmlReader.Create(stream, settings)) - { - doc = XDocument.Load(xmlReader); - } - - // Set up namespace resolver if namespaces are provided - XmlNamespaceManager nsManager = null; - string namespacesStr; - if (rule.Parameters.TryGetValue("namespaces", out namespacesStr) && - !string.IsNullOrEmpty(namespacesStr)) - { - nsManager = new XmlNamespaceManager(new NameTable()); - foreach (var ns in namespacesStr.Split(';')) - { - var parts = ns.Split(new[] { '=' }, 2); - if (parts.Length == 2 && !string.IsNullOrEmpty(parts[0]) && !string.IsNullOrEmpty(parts[1])) - { - nsManager.AddNamespace(parts[0].Trim(), parts[1].Trim()); - } - } - } - - // Execute XPath — try element selection first, fall back to evaluate for scalar/attribute results - var elements = nsManager != null - ? doc.XPathSelectElements(xpath, nsManager).Take(maxResults).ToList() - : doc.XPathSelectElements(xpath).Take(maxResults).ToList(); - - data["path"] = filePath; - data["query"] = xpath; - - if (elements.Count > 0) - { - data["matchCount"] = elements.Count; - if (elements.Count == 1) - { - data["value"] = TruncateMessage(elements[0].ToString(), 2000); - } - var matchStrings = elements.Select(e => TruncateMessage(e.ToString(), 500)).ToList(); - data["matches"] = string.Join("\n---\n", matchStrings); - } - else - { - // Try XPathEvaluate for scalar results (attributes, text(), count(), etc.) - var evalResult = nsManager != null - ? doc.XPathEvaluate(xpath, nsManager) - : doc.XPathEvaluate(xpath); - - if (evalResult is IEnumerable enumerable) - { - var items = enumerable.Take(maxResults).ToList(); - data["matchCount"] = items.Count; - if (items.Count == 1) - { - data["value"] = TruncateMessage(items[0].ToString(), 2000); - } - if (items.Count > 0) - { - data["matches"] = string.Join("\n---\n", - items.Select(i => TruncateMessage(i.ToString(), 500))); - } - } - else if (evalResult != null) - { - data["matchCount"] = 1; - data["value"] = TruncateMessage(evalResult.ToString(), 2000); - } - else - { - data["matchCount"] = 0; - } - } - } - catch (Exception ex) - { - data["error"] = ex.Message; - data["path"] = filePath; - data["query"] = xpath; - } - - return data; - } - - /// - /// Emits a security_warning event and returns an empty result dictionary. - /// Called when a gather rule targets a path/query not on the allowlist. - /// - private Dictionary EmitSecurityWarning(GatherRule rule, string collectorType, string target) - { - _logger.Warning($"SECURITY: {collectorType} path blocked by guard: {target} (Rule: {rule.RuleId})"); - - var data = new Dictionary - { - ["blocked"] = true, - ["reason"] = $"{collectorType} target not on allowlist", - ["target"] = target, - ["ruleId"] = rule.RuleId, - }; - - _onEventCollected(new EnrollmentEvent - { - SessionId = _sessionId, - TenantId = _tenantId, - Timestamp = DateTime.UtcNow, - EventType = "security_warning", - Severity = EventSeverity.Warning, - Source = "GatherRuleExecutor", - Message = $"Blocked {collectorType} target not on allowlist: {target} (Rule: {rule.RuleId})", - Data = data - }); - - return new Dictionary(); - } - - private EventSeverity ParseSeverity(string severity) - { - if (string.IsNullOrEmpty(severity)) - return EventSeverity.Info; - - switch (severity.ToLower()) - { - case "debug": return EventSeverity.Debug; - case "info": return EventSeverity.Info; - case "warning": return EventSeverity.Warning; - case "error": return EventSeverity.Error; - case "critical": return EventSeverity.Critical; - default: return EventSeverity.Info; - } - } - - private void StopAllTimers() - { - foreach (var timer in _intervalTimers.Values) - { - timer.Dispose(); - } - _intervalTimers.Clear(); - } - - /// - /// Blocks until all startup rules that were queued by the most recent - /// call have finished executing, or the timeout elapses. - /// Returns true if all rules completed within the timeout; false if timed out. - /// - public bool WaitForStartupRules(int timeoutSeconds = 120) - { - var latch = _startupRulesLatch; - if (latch == null) - return true; // no startup rules were queued - - _logger.Debug($"WaitForStartupRules: waiting up to {timeoutSeconds}s for startup rules to complete..."); - var completed = latch.Wait(TimeSpan.FromSeconds(timeoutSeconds)); - _logger.Debug($"WaitForStartupRules: {(completed ? "all rules completed" : "timed out")}"); - return completed; - } - - public void Dispose() - { - StopAllTimers(); - _startupRulesLatch?.Dispose(); - _startupRulesLatch = null; - } - } -} - diff --git a/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherRuleExecutor.cs b/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherRuleExecutor.cs index 725f0d77..d5c8e7a9 100644 --- a/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherRuleExecutor.cs +++ b/src/Agent/AutopilotMonitor.Agent.Core/Monitoring/Collectors/GatherRuleExecutor.cs @@ -1,17 +1,11 @@ using System; using System.Collections.Generic; -using System.Diagnostics; -using System.Diagnostics.Eventing.Reader; -using System.IO; using System.Linq; -using System.Management; -using System.Text; -using System.Text.RegularExpressions; using System.Threading; using AutopilotMonitor.Agent.Core.Logging; +using AutopilotMonitor.Agent.Core.Monitoring.Collectors.GatherCollectors; using AutopilotMonitor.Agent.Core.Monitoring.Tracking; using AutopilotMonitor.Shared.Models; -using Microsoft.Win32; namespace AutopilotMonitor.Agent.Core.Monitoring.Collectors { @@ -19,35 +13,62 @@ namespace AutopilotMonitor.Agent.Core.Monitoring.Collectors /// Executes gather rules received from the backend API /// Supports registry, eventlog, wmi, file, command_allowlisted, logparser, json, and xml collector types /// - public partial class GatherRuleExecutor : IDisposable + public class GatherRuleExecutor : IDisposable { private readonly AgentLogger _logger; - private readonly string _sessionId; - private readonly string _tenantId; - private readonly Action _onEventCollected; - private readonly string _imeLogPathOverride; + private readonly GatherRuleContext _context; + private readonly Dictionary _collectors; private List _activeRules = new List(); private readonly Dictionary _intervalTimers = new Dictionary(); private readonly HashSet _startupRulesExecuted = new HashSet(); private readonly HashSet _phaseRulesExecuted = new HashSet(); - private readonly LogFilePositionTracker _filePositionTracker = new LogFilePositionTracker(); private CountdownEvent _startupRulesLatch; // non-null only while startup rules are pending /// /// When true, guardrails are relaxed: all registry, WMI, and command targets are allowed. /// File paths allow everything except C:\Users. Set from tenant configuration. /// - public bool UnrestrictedMode { get; set; } = false; + public bool UnrestrictedMode + { + get { return _context.UnrestrictedMode; } + set { _context.UnrestrictedMode = value; } + } public GatherRuleExecutor(string sessionId, string tenantId, Action onEventCollected, AgentLogger logger, string imeLogPathOverride = null) { - _sessionId = sessionId ?? throw new ArgumentNullException(nameof(sessionId)); - _tenantId = tenantId ?? throw new ArgumentNullException(nameof(tenantId)); - _onEventCollected = onEventCollected ?? throw new ArgumentNullException(nameof(onEventCollected)); - _logger = logger ?? throw new ArgumentNullException(nameof(logger)); - _imeLogPathOverride = imeLogPathOverride; + if (sessionId == null) throw new ArgumentNullException(nameof(sessionId)); + if (tenantId == null) throw new ArgumentNullException(nameof(tenantId)); + if (onEventCollected == null) throw new ArgumentNullException(nameof(onEventCollected)); + if (logger == null) throw new ArgumentNullException(nameof(logger)); + + _logger = logger; + + var filePositionTracker = new LogFilePositionTracker(); + _context = new GatherRuleContext(logger, sessionId, tenantId, onEventCollected, imeLogPathOverride, filePositionTracker); + + // Register all collector strategies + var collectorList = new IGatherRuleCollector[] + { + new RegistryCollector(), + new WmiCollector(), + new CommandCollector(), + new FileCollector(), + new EventLogCollector(), + new LogParserCollector(), + new JsonCollector(), + new XmlCollector(), + }; + + _collectors = new Dictionary(StringComparer.OrdinalIgnoreCase); + foreach (var collector in collectorList) + { + _collectors[collector.CollectorType] = collector; + } + + // Register legacy alias: "command" maps to the same collector as "command_allowlisted" + _collectors["command"] = _collectors["command_allowlisted"]; } /// @@ -151,49 +172,22 @@ namespace AutopilotMonitor.Agent.Core.Monitoring.Collectors { _logger.Info($"Executing gather rule: {rule.RuleId} ({rule.Title})"); - Dictionary result = null; + var collectorType = rule.CollectorType?.ToLower(); - switch (rule.CollectorType?.ToLower()) + IGatherRuleCollector collector; + if (collectorType == null || !_collectors.TryGetValue(collectorType, out collector)) { - case "registry": - result = ExecuteRegistryRule(rule); - break; - - case "wmi": - result = ExecuteWmiRule(rule); - break; - - case "command_allowlisted": - case "command": // legacy alias - both enforce the allowlist - result = ExecuteCommandRule(rule); - break; - - case "file": - result = ExecuteFileRule(rule); - break; - - case "eventlog": - result = ExecuteEventLogRule(rule); - break; - - case "json": - result = ExecuteJsonRule(rule); - break; - - case "xml": - result = ExecuteXmlRule(rule); - break; - - case "logparser": - ExecuteLogParserRule(rule); - return; // Return early - logparser emits events directly - - default: - _logger.Warning($"Unknown collector type: {rule.CollectorType} for rule {rule.RuleId}"); - return; + _logger.Warning($"Unknown collector type: {rule.CollectorType} for rule {rule.RuleId}"); + return; } - if (result != null && result.Count > 0) + Dictionary result = collector.Execute(rule, _context); + + // LogParser (and potentially others) emit events directly and return null + if (result == null) + return; + + if (result.Count > 0) { result["ruleId"] = rule.RuleId; result["ruleTitle"] = rule.Title; @@ -205,18 +199,18 @@ namespace AutopilotMonitor.Agent.Core.Monitoring.Collectors EventSeverity severity; if (result.TryGetValue("_severityOverride", out severityOverride) && severityOverride is string sev) { - severity = ParseSeverity(sev); + severity = GatherRuleContext.ParseSeverity(sev); result.Remove("_severityOverride"); } else { - severity = ParseSeverity(rule.OutputSeverity); + severity = GatherRuleContext.ParseSeverity(rule.OutputSeverity); } - _onEventCollected(new EnrollmentEvent + _context.OnEventCollected(new EnrollmentEvent { - SessionId = _sessionId, - TenantId = _tenantId, + SessionId = _context.SessionId, + TenantId = _context.TenantId, Timestamp = DateTime.UtcNow, EventType = eventType, Severity = severity, @@ -232,5 +226,42 @@ namespace AutopilotMonitor.Agent.Core.Monitoring.Collectors } } + private EventSeverity ParseSeverity(string severity) + { + return GatherRuleContext.ParseSeverity(severity); + } + + private void StopAllTimers() + { + foreach (var timer in _intervalTimers.Values) + { + timer.Dispose(); + } + _intervalTimers.Clear(); + } + + /// + /// Blocks until all startup rules that were queued by the most recent + /// call have finished executing, or the timeout elapses. + /// Returns true if all rules completed within the timeout; false if timed out. + /// + public bool WaitForStartupRules(int timeoutSeconds = 120) + { + var latch = _startupRulesLatch; + if (latch == null) + return true; // no startup rules were queued + + _logger.Debug($"WaitForStartupRules: waiting up to {timeoutSeconds}s for startup rules to complete..."); + var completed = latch.Wait(TimeSpan.FromSeconds(timeoutSeconds)); + _logger.Debug($"WaitForStartupRules: {(completed ? "all rules completed" : "timed out")}"); + return completed; + } + + public void Dispose() + { + StopAllTimers(); + _startupRulesLatch?.Dispose(); + _startupRulesLatch = null; + } } } diff --git a/src/Agent/AutopilotMonitor.Agent/buildcounter.txt b/src/Agent/AutopilotMonitor.Agent/buildcounter.txt index 68cfb10d..7573eff8 100644 --- a/src/Agent/AutopilotMonitor.Agent/buildcounter.txt +++ b/src/Agent/AutopilotMonitor.Agent/buildcounter.txt @@ -1 +1 @@ -472 +475 diff --git a/src/Shared/AutopilotMonitor.Shared/Models/BootstrapApiModels.cs b/src/Shared/AutopilotMonitor.Shared/Models/BootstrapApiModels.cs new file mode 100644 index 00000000..5a403d61 --- /dev/null +++ b/src/Shared/AutopilotMonitor.Shared/Models/BootstrapApiModels.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; + +namespace AutopilotMonitor.Shared.Models +{ + /// + /// Request to create a new bootstrap session for OOBE agent deployment + /// + public class CreateBootstrapSessionRequest + { + public string TenantId { get; set; } + + /// + /// How long the bootstrap URL should be valid (1–168 hours, default 8) + /// + public int ValidityHours { get; set; } = 8; + + /// + /// Optional human-readable label (e.g. "Lab A", "Floor 3") + /// + public string Label { get; set; } + } + + /// + /// Response after creating a bootstrap session + /// + public class CreateBootstrapSessionResponse + { + public bool Success { get; set; } + public string ShortCode { get; set; } + public string BootstrapUrl { get; set; } + public DateTime ExpiresAt { get; set; } + public string Message { get; set; } + } + + /// + /// A single bootstrap session item for the list response + /// + public class BootstrapSessionListItem + { + public string ShortCode { get; set; } + public string Label { get; set; } + public DateTime CreatedAt { get; set; } + public DateTime ExpiresAt { get; set; } + public string CreatedByUpn { get; set; } + public bool IsRevoked { get; set; } + public bool IsExpired { get; set; } + public int UsageCount { get; set; } + } + + /// + /// Response containing a list of bootstrap sessions for a tenant + /// + public class ListBootstrapSessionsResponse + { + public bool Success { get; set; } + public List Sessions { get; set; } = new List(); + } + + /// + /// Response from validating a bootstrap code (anonymous, called by the /go/{code} route) + /// + public class ValidateBootstrapCodeResponse + { + public bool Success { get; set; } + public string TenantId { get; set; } + public string Token { get; set; } + public string AgentDownloadUrl { get; set; } + public DateTime ExpiresAt { get; set; } + public string Message { get; set; } + } +} diff --git a/src/Shared/AutopilotMonitor.Shared/Models/GeographicApiModels.cs b/src/Shared/AutopilotMonitor.Shared/Models/GeographicApiModels.cs new file mode 100644 index 00000000..5a7555ed --- /dev/null +++ b/src/Shared/AutopilotMonitor.Shared/Models/GeographicApiModels.cs @@ -0,0 +1,73 @@ +using System; +using System.Collections.Generic; + +namespace AutopilotMonitor.Shared.Models +{ + /// + /// Response containing geographic performance metrics aggregated by location. + /// + public class GeographicMetricsResponse + { + public bool Success { get; set; } + public List Locations { get; set; } = new(); + public GlobalAverages GlobalAverages { get; set; } = new(); + public DateTime ComputedAt { get; set; } + public int TotalSessions { get; set; } + public int LocationsWithData { get; set; } + /// Whether geo-location collection is enabled for this tenant + public bool GeoLocationEnabled { get; set; } = true; + } + + /// + /// Performance metrics for a single geographic location. + /// + public class LocationMetrics + { + public string LocationKey { get; set; } = string.Empty; + public string Country { get; set; } = string.Empty; + public string Region { get; set; } = string.Empty; + public string City { get; set; } = string.Empty; + public string Loc { get; set; } = string.Empty; + + public int SessionCount { get; set; } + public int Succeeded { get; set; } + public int Failed { get; set; } + public double SuccessRate { get; set; } + + public double AvgDurationMinutes { get; set; } + public double MedianDurationMinutes { get; set; } + public double P95DurationMinutes { get; set; } + + /// Average number of apps installed per session at this location + public double AvgAppCount { get; set; } + /// Average minutes per app (AvgDurationMinutes / AvgAppCount) + public double MinutesPerApp { get; set; } + /// Normalized score: 100 = global median, lower is better + public double AppLoadScore { get; set; } + + /// Average download throughput in bytes/sec at this location + public double AvgThroughputBytesPerSec { get; set; } + public long TotalDownloadBytes { get; set; } + + /// Percentage difference from global avg duration (negative = faster) + public double DurationVsGlobalPct { get; set; } + /// Percentage difference from global avg throughput (positive = faster) + public double ThroughputVsGlobalPct { get; set; } + + public bool IsOutlier { get; set; } + /// "fast", "slow", or null + public string OutlierDirection { get; set; } + } + + /// + /// Global average benchmarks for geographic comparison. + /// + public class GlobalAverages + { + public double AvgDurationMinutes { get; set; } + public double MedianDurationMinutes { get; set; } + public double AvgMinutesPerApp { get; set; } + public double AvgThroughputBytesPerSec { get; set; } + public double StdDevDurationMinutes { get; set; } + } +} diff --git a/src/Shared/AutopilotMonitor.Shared/Models/ReportApiModels.cs b/src/Shared/AutopilotMonitor.Shared/Models/ReportApiModels.cs new file mode 100644 index 00000000..60083d1b --- /dev/null +++ b/src/Shared/AutopilotMonitor.Shared/Models/ReportApiModels.cs @@ -0,0 +1,66 @@ +using System; + +namespace AutopilotMonitor.Shared.Models +{ + /// + /// Request to submit a session report for analysis by the Autopilot Monitor team. + /// Sent as JSON from the frontend; the backend creates the ZIP and uploads to central storage. + /// + public class SubmitSessionReportRequest + { + public string TenantId { get; set; } + public string SessionId { get; set; } + public string Comment { get; set; } + public string Email { get; set; } + + /// Session row as CSV (single data row with header) + public string SessionCsv { get; set; } + + /// Pre-generated UI timeline export (TXT) + public string TimelineExportTxt { get; set; } + + /// Pre-generated raw events table export (CSV) + public string EventsCsv { get; set; } + + /// Pre-generated analysis rule results export (CSV) + public string RuleResultsCsv { get; set; } + + /// Base64-encoded screenshot image (optional) + public string ScreenshotBase64 { get; set; } + + /// Original screenshot file name for extension detection + public string ScreenshotFileName { get; set; } + + /// Base64-encoded agent log file (optional, max 5 MB) + public string AgentLogBase64 { get; set; } + + /// Original agent log file name + public string AgentLogFileName { get; set; } + } + + /// + /// Response from session report submission + /// + public class SubmitSessionReportResponse + { + public bool Success { get; set; } + public string Message { get; set; } + public string ReportId { get; set; } + } + + /// + /// Session report metadata for the admin-config reports table + /// + public class SessionReportMetadata + { + public string ReportId { get; set; } + public string TenantId { get; set; } + public string SessionId { get; set; } + public string Comment { get; set; } + public string Email { get; set; } + public string BlobName { get; set; } + public string SubmittedBy { get; set; } + public DateTime SubmittedAt { get; set; } + public string AdminNote { get; set; } + } +} diff --git a/src/Shared/AutopilotMonitor.Shared/Models/ApiModels.cs b/src/Shared/AutopilotMonitor.Shared/Models/SessionApiModels.cs similarity index 50% rename from src/Shared/AutopilotMonitor.Shared/Models/ApiModels.cs rename to src/Shared/AutopilotMonitor.Shared/Models/SessionApiModels.cs index cd1cab75..0afadb6f 100644 --- a/src/Shared/AutopilotMonitor.Shared/Models/ApiModels.cs +++ b/src/Shared/AutopilotMonitor.Shared/Models/SessionApiModels.cs @@ -223,205 +223,4 @@ namespace AutopilotMonitor.Shared.Models Failed, Unknown } - - /// - /// Request to submit a session report for analysis by the Autopilot Monitor team. - /// Sent as JSON from the frontend; the backend creates the ZIP and uploads to central storage. - /// - public class SubmitSessionReportRequest - { - public string TenantId { get; set; } - public string SessionId { get; set; } - public string Comment { get; set; } - public string Email { get; set; } - - /// Session row as CSV (single data row with header) - public string SessionCsv { get; set; } - - /// Pre-generated UI timeline export (TXT) - public string TimelineExportTxt { get; set; } - - /// Pre-generated raw events table export (CSV) - public string EventsCsv { get; set; } - - /// Pre-generated analysis rule results export (CSV) - public string RuleResultsCsv { get; set; } - - /// Base64-encoded screenshot image (optional) - public string ScreenshotBase64 { get; set; } - - /// Original screenshot file name for extension detection - public string ScreenshotFileName { get; set; } - - /// Base64-encoded agent log file (optional, max 5 MB) - public string AgentLogBase64 { get; set; } - - /// Original agent log file name - public string AgentLogFileName { get; set; } - } - - /// - /// Response from session report submission - /// - public class SubmitSessionReportResponse - { - public bool Success { get; set; } - public string Message { get; set; } - public string ReportId { get; set; } - } - - /// - /// Session report metadata for the admin-config reports table - /// - public class SessionReportMetadata - { - public string ReportId { get; set; } - public string TenantId { get; set; } - public string SessionId { get; set; } - public string Comment { get; set; } - public string Email { get; set; } - public string BlobName { get; set; } - public string SubmittedBy { get; set; } - public DateTime SubmittedAt { get; set; } - public string AdminNote { get; set; } - } - - /// - /// Response containing geographic performance metrics aggregated by location. - /// - public class GeographicMetricsResponse - { - public bool Success { get; set; } - public List Locations { get; set; } = new(); - public GlobalAverages GlobalAverages { get; set; } = new(); - public DateTime ComputedAt { get; set; } - public int TotalSessions { get; set; } - public int LocationsWithData { get; set; } - /// Whether geo-location collection is enabled for this tenant - public bool GeoLocationEnabled { get; set; } = true; - } - - /// - /// Performance metrics for a single geographic location. - /// - public class LocationMetrics - { - public string LocationKey { get; set; } = string.Empty; - public string Country { get; set; } = string.Empty; - public string Region { get; set; } = string.Empty; - public string City { get; set; } = string.Empty; - public string Loc { get; set; } = string.Empty; - - public int SessionCount { get; set; } - public int Succeeded { get; set; } - public int Failed { get; set; } - public double SuccessRate { get; set; } - - public double AvgDurationMinutes { get; set; } - public double MedianDurationMinutes { get; set; } - public double P95DurationMinutes { get; set; } - - /// Average number of apps installed per session at this location - public double AvgAppCount { get; set; } - /// Average minutes per app (AvgDurationMinutes / AvgAppCount) - public double MinutesPerApp { get; set; } - /// Normalized score: 100 = global median, lower is better - public double AppLoadScore { get; set; } - - /// Average download throughput in bytes/sec at this location - public double AvgThroughputBytesPerSec { get; set; } - public long TotalDownloadBytes { get; set; } - - /// Percentage difference from global avg duration (negative = faster) - public double DurationVsGlobalPct { get; set; } - /// Percentage difference from global avg throughput (positive = faster) - public double ThroughputVsGlobalPct { get; set; } - - public bool IsOutlier { get; set; } - /// "fast", "slow", or null - public string OutlierDirection { get; set; } - } - - // ----------------------------------------------------------------------- - // Bootstrap session API models (OOBE pre-enrollment) - // ----------------------------------------------------------------------- - - /// - /// Request to create a new bootstrap session for OOBE agent deployment - /// - public class CreateBootstrapSessionRequest - { - public string TenantId { get; set; } - - /// - /// How long the bootstrap URL should be valid (1–168 hours, default 8) - /// - public int ValidityHours { get; set; } = 8; - - /// - /// Optional human-readable label (e.g. "Lab A", "Floor 3") - /// - public string Label { get; set; } - } - - /// - /// Response after creating a bootstrap session - /// - public class CreateBootstrapSessionResponse - { - public bool Success { get; set; } - public string ShortCode { get; set; } - public string BootstrapUrl { get; set; } - public DateTime ExpiresAt { get; set; } - public string Message { get; set; } - } - - /// - /// A single bootstrap session item for the list response - /// - public class BootstrapSessionListItem - { - public string ShortCode { get; set; } - public string Label { get; set; } - public DateTime CreatedAt { get; set; } - public DateTime ExpiresAt { get; set; } - public string CreatedByUpn { get; set; } - public bool IsRevoked { get; set; } - public bool IsExpired { get; set; } - public int UsageCount { get; set; } - } - - /// - /// Response containing a list of bootstrap sessions for a tenant - /// - public class ListBootstrapSessionsResponse - { - public bool Success { get; set; } - public List Sessions { get; set; } = new List(); - } - - /// - /// Response from validating a bootstrap code (anonymous, called by the /go/{code} route) - /// - public class ValidateBootstrapCodeResponse - { - public bool Success { get; set; } - public string TenantId { get; set; } - public string Token { get; set; } - public string AgentDownloadUrl { get; set; } - public DateTime ExpiresAt { get; set; } - public string Message { get; set; } - } - - /// - /// Global average benchmarks for geographic comparison. - /// - public class GlobalAverages - { - public double AvgDurationMinutes { get; set; } - public double MedianDurationMinutes { get; set; } - public double AvgMinutesPerApp { get; set; } - public double AvgThroughputBytesPerSec { get; set; } - public double StdDevDurationMinutes { get; set; } - } } diff --git a/src/Web/autopilot-monitor-web/app/dashboard/types.ts b/src/Web/autopilot-monitor-web/app/dashboard/types.ts index f4ebba7b..c152a30d 100644 --- a/src/Web/autopilot-monitor-web/app/dashboard/types.ts +++ b/src/Web/autopilot-monitor-web/app/dashboard/types.ts @@ -1,25 +1 @@ -export interface Session { - sessionId: string; - tenantId: string; - serialNumber: string; - deviceName: string; - manufacturer: string; - model: string; - startedAt: string; - status: string; - currentPhase: number; - eventCount: number; - durationSeconds: number; - failureReason?: string; - isPreProvisioned?: boolean; - isHybridJoin?: boolean; - agentVersion?: string; - geoCountry?: string; - geoRegion?: string; - geoCity?: string; - osName?: string; - osBuild?: string; - osDisplayVersion?: string; - osEdition?: string; - osLanguage?: string; -} +export type { Session } from "@/types"; diff --git a/src/Web/autopilot-monitor-web/app/diagnosis/[sessionId]/page.tsx b/src/Web/autopilot-monitor-web/app/diagnosis/[sessionId]/page.tsx index ad0a8b40..07d9262a 100644 --- a/src/Web/autopilot-monitor-web/app/diagnosis/[sessionId]/page.tsx +++ b/src/Web/autopilot-monitor-web/app/diagnosis/[sessionId]/page.tsx @@ -10,49 +10,7 @@ import { ProtectedRoute } from "../../../components/ProtectedRoute"; import { API_BASE_URL } from "@/lib/config"; import { authenticatedFetch, TokenExpiredError } from "@/lib/authenticatedFetch"; import { ConfidenceBadge, SeverityBadge } from "./components/DiagnosisBadges"; - -interface EnrollmentEvent { - eventId: string; - sessionId: string; - timestamp: string; - eventType: string; - severity: string; - source: string; - phase: number; - phaseName?: string; - message: string; - sequence: number; - data?: Record; -} - -interface RuleResult { - resultId: string; - ruleId: string; - ruleTitle: string; - severity: string; - category: string; - confidenceScore: number; - explanation: string; - remediation: { title: string; steps: string[] }[]; - relatedDocs: { title: string; url: string }[]; - matchedConditions: Record; - detectedAt: string; -} - -interface Session { - sessionId: string; - tenantId: string; - serialNumber: string; - deviceName: string; - manufacturer: string; - model: string; - startedAt: string; - status: string; - currentPhase: number; - eventCount: number; - durationSeconds: number; - failureReason?: string; -} +import { Session, EnrollmentEvent, RuleResult } from "@/types"; export default function DiagnosisPage() { const params = useParams(); diff --git a/src/Web/autopilot-monitor-web/app/fleet-health/page.tsx b/src/Web/autopilot-monitor-web/app/fleet-health/page.tsx index bb354a6a..b3a87eb2 100644 --- a/src/Web/autopilot-monitor-web/app/fleet-health/page.tsx +++ b/src/Web/autopilot-monitor-web/app/fleet-health/page.tsx @@ -10,21 +10,7 @@ import { useNotifications } from "../../contexts/NotificationContext"; import { API_BASE_URL } from "@/lib/config"; import { authenticatedFetch, TokenExpiredError } from "@/lib/authenticatedFetch"; import FleetStatCard from "./components/FleetStatCard"; - -interface Session { - sessionId: string; - tenantId: string; - serialNumber: string; - deviceName: string; - manufacturer: string; - model: string; - startedAt: string; - status: string; - currentPhase: number; - eventCount: number; - durationSeconds: number; - failureReason?: string; -} +import { Session } from "@/types"; interface AppMetric { appName: string; diff --git a/src/Web/autopilot-monitor-web/app/progress/page.tsx b/src/Web/autopilot-monitor-web/app/progress/page.tsx index 3c86efae..8ea127be 100644 --- a/src/Web/autopilot-monitor-web/app/progress/page.tsx +++ b/src/Web/autopilot-monitor-web/app/progress/page.tsx @@ -8,32 +8,7 @@ import { useAuth } from "../../contexts/AuthContext"; import { useNotifications } from "../../contexts/NotificationContext"; import { useSignalR } from "../../contexts/SignalRContext"; import { ProtectedRoute } from "../../components/ProtectedRoute"; - -interface Session { - sessionId: string; - tenantId: string; - serialNumber: string; - deviceName: string; - manufacturer: string; - model: string; - startedAt: string; - status: string; - currentPhase: number; - eventCount: number; - durationSeconds: number; - failureReason?: string; -} - -interface EnrollmentEvent { - eventId: string; - sessionId: string; - timestamp: string; - eventType: string; - phase: number; - message: string; - sequence: number; - data?: Record; -} +import { Session, EnrollmentEvent } from "@/types"; function formatDuration(ms: number): string { const seconds = Math.floor(ms / 1000); diff --git a/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/AnalysisResultsSection.tsx b/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/AnalysisResultsSection.tsx index 4e719c5d..79a8d1f7 100644 --- a/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/AnalysisResultsSection.tsx +++ b/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/AnalysisResultsSection.tsx @@ -1,7 +1,7 @@ "use client"; import { useState } from "react"; -import { RuleResult } from "../page"; +import { RuleResult } from "@/types"; interface AnalysisResultsSectionProps { analysisResults: RuleResult[]; diff --git a/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/DeviceDetailsCard.tsx b/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/DeviceDetailsCard.tsx index efa0cf5d..06c19f69 100644 --- a/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/DeviceDetailsCard.tsx +++ b/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/DeviceDetailsCard.tsx @@ -1,7 +1,7 @@ "use client"; import { useState, useMemo } from "react"; -import { EnrollmentEvent } from "../page"; +import { EnrollmentEvent } from "@/types"; export default function DeviceDetailsCard({ events }: { events: EnrollmentEvent[] }) { const [expanded, setExpanded] = useState(false); diff --git a/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/EventTimeline.tsx b/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/EventTimeline.tsx index 98ffceb0..8a9ae868 100644 --- a/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/EventTimeline.tsx +++ b/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/EventTimeline.tsx @@ -1,7 +1,7 @@ "use client"; import { useState, useMemo } from "react"; -import { EnrollmentEvent, Session } from "../page"; +import { EnrollmentEvent, Session } from "@/types"; import { normalizeEventDataForDisplay } from "../utils/eventHelpers"; interface EventTimelineProps { diff --git a/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/MarkFailedModal.tsx b/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/MarkFailedModal.tsx index ee9952ed..35f4763e 100644 --- a/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/MarkFailedModal.tsx +++ b/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/MarkFailedModal.tsx @@ -1,6 +1,6 @@ "use client"; -import { Session } from "../page"; +import { Session } from "@/types"; interface MarkFailedModalProps { show: boolean; diff --git a/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/PhaseTimeline.tsx b/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/PhaseTimeline.tsx index 484ba100..a3a0bae1 100644 --- a/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/PhaseTimeline.tsx +++ b/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/PhaseTimeline.tsx @@ -1,7 +1,7 @@ "use client"; import React from "react"; -import { EnrollmentEvent } from "../page"; +import { EnrollmentEvent } from "@/types"; import { V1_PHASES, V1_SKIP_USER_PHASES, V2_PHASES } from "../utils/phaseConstants"; interface PhaseTimelineProps { diff --git a/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/ReportSessionModal.tsx b/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/ReportSessionModal.tsx index 17ee533e..fc2b3558 100644 --- a/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/ReportSessionModal.tsx +++ b/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/ReportSessionModal.tsx @@ -2,7 +2,7 @@ import { useState, useEffect } from "react"; import { zipSync } from "fflate"; -import { Session, EnrollmentEvent, RuleResult } from "../page"; +import { Session, EnrollmentEvent, RuleResult } from "@/types"; const MAX_AGENT_LOG_SIZE = 5 * 1024 * 1024; // 5 MB diff --git a/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/SessionInfoCard.tsx b/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/SessionInfoCard.tsx index 78fbc5a8..141e5ba6 100644 --- a/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/SessionInfoCard.tsx +++ b/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/SessionInfoCard.tsx @@ -1,7 +1,7 @@ "use client"; import { useState } from "react"; -import { Session } from "../page"; +import { Session } from "@/types"; interface SessionInfoCardProps { session: Session; diff --git a/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/page.tsx b/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/page.tsx index 41cb9c1b..5bff56b8 100644 --- a/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/page.tsx +++ b/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/page.tsx @@ -25,62 +25,7 @@ import ReportSessionModal from "./components/ReportSessionModal"; import SectionNav, { SectionEntry } from "./components/SectionNav"; import DeviceDetailsCard from "./components/DeviceDetailsCard"; import { generateUiExport, generateCsvExport, generateSessionCsvExport, generateRuleResultsCsvExport, SessionExportEvent } from "@/lib/sessionExportUtils"; - -export interface EnrollmentEvent { - eventId: string; - sessionId: string; - timestamp: string; - eventType: string; - severity: string; - source: string; - phase: number; - phaseName?: string; - message: string; - sequence: number; - data?: Record; -} - -export interface RuleResult { - resultId: string; - sessionId: string; - tenantId: string; - ruleId: string; - ruleTitle: string; - severity: string; - category: string; - confidenceScore: number; - explanation: string; - remediation: { title: string; steps: string[] }[]; - relatedDocs: { title: string; url: string }[]; - matchedConditions: Record; - detectedAt: string; -} - -export interface Session { - sessionId: string; - tenantId: string; - serialNumber: string; - deviceName: string; - manufacturer: string; - model: string; - startedAt: string; - completedAt?: string; - status: string; - currentPhase: number; - eventCount: number; - durationSeconds: number; - failureReason?: string; - enrollmentType?: string; // "v1" | "v2" — absent for sessions before this feature - diagnosticsBlobName?: string; - lastEventAt?: string; - isPreProvisioned?: boolean; - isHybridJoin?: boolean; - osBuild?: string; - osEdition?: string; - osLanguage?: string; - isUserDriven?: boolean; - agentVersion?: string; -} +import { Session, EnrollmentEvent, RuleResult } from "@/types"; const GUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; diff --git a/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/page.tsx.bak b/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/page.tsx.bak deleted file mode 100644 index e0309571..00000000 --- a/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/page.tsx.bak +++ /dev/null @@ -1,625 +0,0 @@ -"use client"; - -import { useEffect, useState, useRef } from "react"; -import { useParams, useRouter } from "next/navigation"; -import { useSignalR } from "../../../contexts/SignalRContext"; -import { useTenant } from "../../../contexts/TenantContext"; -import { API_BASE_URL } from "@/lib/config"; - -interface EnrollmentEvent { - eventId: string; - sessionId: string; - timestamp: string; - eventType: string; - severity: string; - source: string; - phase: number; - phaseName?: string; - message: string; - sequence: number; - data?: Record; -} - -interface Session { - sessionId: string; - tenantId: string; - serialNumber: string; - deviceName: string; - manufacturer: string; - model: string; - startedAt: string; - status: string; - currentPhase: number; - eventCount: number; - durationSeconds: number; -} - -const phaseNames: Record = { - 0: "PreFlight", - 1: "Network", - 2: "Identity", - 3: "MDM Enrollment", - 4: "ESP Device Setup", - 5: "App Installation", - 6: "ESP User Setup", - 7: "Complete", - 99: "Failed" -}; - -export default function SessionDetailPage() { - const params = useParams(); - const router = useRouter(); - const sessionId = params?.sessionId as string; - const [events, setEvents] = useState([]); - const [session, setSession] = useState(null); - const [loading, setLoading] = useState(true); - const [expandedPhases, setExpandedPhases] = useState>(new Set()); - const [showMarkFailedConfirm, setShowMarkFailedConfirm] = useState(false); - const [adminMode, setAdminMode] = useState(() => { - if (typeof window !== 'undefined') { - return localStorage.getItem('adminMode') === 'true'; - } - return false; - }); - - // Use ref for debounce timeout to persist across renders - const refreshTimeoutRef = useRef(null); - const sessionIdRef = useRef(sessionId); - const hasInitialFetch = useRef(false); - const lastFetchedSessionId = useRef(null); - - // Track if we've joined groups to prevent duplicate joins - const hasJoinedGroups = useRef(false); - - // Use global contexts - const { on, off, isConnected, joinGroup, leaveGroup } = useSignalR(); - const { tenantId } = useTenant(); - - // Initial data fetch - useEffect(() => { - if (!sessionId) return; - - // Update sessionIdRef - sessionIdRef.current = sessionId; - - // Reset fetch flag only if navigating to a different session - if (lastFetchedSessionId.current !== sessionId) { - hasInitialFetch.current = false; - lastFetchedSessionId.current = sessionId; - } - - // Prevent duplicate fetches in React StrictMode (development double-mounting) - if (hasInitialFetch.current) return; - hasInitialFetch.current = true; - - fetchSessionDetails(); - fetchEvents(); - }, [sessionId]); - - // Join SignalR groups when connected (for multi-tenancy and cost optimization) - useEffect(() => { - if (!sessionId || !isConnected || !tenantId) return; - - if (!hasJoinedGroups.current) { - // Join both tenant group (for newEvents) and session group (for eventStream) - const tenantGroupName = `tenant-${tenantId}`; - const sessionGroupName = `session-${tenantId}-${sessionId}`; - - joinGroup(tenantGroupName); - joinGroup(sessionGroupName); - hasJoinedGroups.current = true; - } - - return () => { - // Leave groups when component unmounts or sessionId changes - if (hasJoinedGroups.current && tenantId) { - const tenantGroupName = `tenant-${tenantId}`; - const sessionGroupName = `session-${tenantId}-${sessionId}`; - - leaveGroup(tenantGroupName); - leaveGroup(sessionGroupName); - hasJoinedGroups.current = false; - } - }; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [sessionId, isConnected, tenantId]); - - // Setup SignalR listener - re-register when connection changes - useEffect(() => { - // Listen for real-time event stream (cost-efficient - no HTTP requests!) - const handleEventStream = (data: { sessionId: string; tenantId: string; events: EnrollmentEvent[]; session: Session }) => { - console.log('Event stream received via SignalR:', data); - if (data.sessionId === sessionIdRef.current && data.events && data.events.length > 0) { - // Add phase names to new events - const eventsWithPhaseNames = data.events.map((e: EnrollmentEvent) => ({ - ...e, - phaseName: phaseNames[e.phase] || "Unknown" - })); - - // Add new events to existing list (deduplication by eventId) - setEvents(prevEvents => { - const existingIds = new Set(prevEvents.map(e => e.eventId)); - const newEvents = eventsWithPhaseNames.filter(e => !existingIds.has(e.eventId)); - return [...prevEvents, ...newEvents].sort((a, b) => a.sequence - b.sequence); - }); - - // Update session details directly from SignalR (no HTTP request needed!) - if (data.session) { - setSession(data.session); - } - } - }; - - // Also listen for summary updates to update session details - const handleNewEvents = (data: { sessionId: string; tenantId: string; eventCount: number; session: Session }) => { - if (data.sessionId === sessionIdRef.current) { - // Update session details directly from SignalR (no HTTP request needed!) - if (data.session) { - setSession(data.session); - } - } - }; - - on('eventstream', handleEventStream); - on('newevents', handleNewEvents); - - return () => { - off('eventstream', handleEventStream); - off('newevents', handleNewEvents); - if (refreshTimeoutRef.current) { - clearTimeout(refreshTimeoutRef.current); - } - }; - }, [on, off]); // Re-register when SignalR connection changes - - const fetchSessionDetails = async () => { - try { - // For now, we'll get session details from the sessions list - const response = await fetch(`${API_BASE_URL}/api/sessions?tenantId=${tenantId}`); - if (response.ok) { - const data = await response.json(); - const foundSession = data.sessions?.find((s: Session) => s.sessionId === sessionId); - if (foundSession) { - setSession(foundSession); - } - } - } catch (error) { - console.error("Failed to fetch session details:", error); - } - }; - - const fetchEvents = async () => { - try { - const response = await fetch(`${API_BASE_URL}/api/sessions/${sessionId}/events?tenantId=${tenantId}`); - if (response.ok) { - const data = await response.json(); - const eventsWithPhaseNames = data.events.map((e: EnrollmentEvent) => ({ - ...e, - phaseName: phaseNames[e.phase] || "Unknown" - })); - setEvents(eventsWithPhaseNames); - } - } catch (error) { - console.error("Failed to fetch events:", error); - } finally { - setLoading(false); - } - }; - - const markAsFailed = () => { - setShowMarkFailedConfirm(true); - }; - - const confirmMarkFailed = async () => { - try { - const response = await fetch(`${API_BASE_URL}/api/sessions/${sessionId}/mark-failed?tenantId=${tenantId}`, { - method: 'POST', - }); - - if (response.ok) { - setShowMarkFailedConfirm(false); - // Session will be updated via SignalR, but we can also update local state immediately - if (session) { - setSession({ - ...session, - status: 'Failed' - }); - } - } else { - console.error('Failed to mark session as failed'); - } - } catch (error) { - console.error('Error marking session as failed:', error); - } - }; - - const cancelMarkFailed = () => { - setShowMarkFailedConfirm(false); - }; - - // Group events by phase - const eventsByPhase = events.reduce((acc, event) => { - const phaseName = event.phaseName || "Unknown"; - if (!acc[phaseName]) { - acc[phaseName] = []; - } - acc[phaseName].push(event); - return acc; - }, {} as Record); - - const phaseOrder = ["PreFlight", "Network", "Identity", "MDM Enrollment", "ESP Device Setup", "App Installation", "ESP User Setup", "Complete", "Failed"]; - const orderedPhases = phaseOrder.filter(phase => eventsByPhase[phase]); - - // Initialize all phases as expanded on first load - useEffect(() => { - if (orderedPhases.length > 0 && expandedPhases.size === 0) { - setExpandedPhases(new Set(orderedPhases)); - } - }, [orderedPhases.length]); - - const expandAll = () => { - setExpandedPhases(new Set(orderedPhases)); - }; - - const collapseAll = () => { - setExpandedPhases(new Set()); - }; - - const togglePhase = (phaseName: string) => { - const newExpanded = new Set(expandedPhases); - if (newExpanded.has(phaseName)) { - newExpanded.delete(phaseName); - } else { - newExpanded.add(phaseName); - } - setExpandedPhases(newExpanded); - }; - - if (loading) { - return ( -
-
Loading session details...
-
- ); - } - - return ( -
- {/* Header */} -
-
-
- -

- Session Details -

-
- {adminMode && session?.status === 'InProgress' && ( - - )} -
-
- -
-
- {/* Session Info Card */} - {session && ( -
-

Device Information

-
- - - - - } /> - - -
-
- )} - - {/* Phase Timeline */} - {session && ( -
-

Enrollment Progress

- -
- )} - - {/* Timeline */} -
-
-

Event Timeline

- {orderedPhases.length > 0 && ( -
- - -
- )} -
- - {orderedPhases.length === 0 ? ( -
No events found for this session.
- ) : ( -
- {orderedPhases.map((phaseName) => ( - togglePhase(phaseName)} - /> - ))} -
- )} -
-
- - {/* Mark as Failed Confirmation Modal */} - {showMarkFailedConfirm && session && ( -
-
e.stopPropagation()}> -
-
-
- - - -
-

Mark Session as Failed

-
-
-

- You are about to manually mark this session as Failed. -

-

- Session {session.sessionId} for device {session.deviceName || session.serialNumber} will be marked as failed with the reason "Manually marked as failed by administrator". -

-

- This action will update the session status and cannot be undone. Do you want to continue? -

-
-
- - -
-
-
-
- )} -
-
- ); -} - -function InfoItem({ label, value }: { label: string; value: React.ReactNode }) { - return ( -
-
{label}
-
{value}
-
- ); -} - -function PhaseSection({ - phaseName, - events, - isExpanded, - onToggle -}: { - phaseName: string; - events: EnrollmentEvent[]; - isExpanded: boolean; - onToggle: () => void; -}) { - return ( -
- - - {isExpanded && ( -
- {events.map((event, index) => ( - - ))} -
- )} -
- ); -} - -function EventRow({ event }: { event: EnrollmentEvent }) { - const [showDetails, setShowDetails] = useState(false); - - return ( -
-
-
-
- - {new Date(event.timestamp).toLocaleTimeString()} - - - {event.eventType} -
-

{event.message}

-
- Source: {event.source} - Seq: {event.sequence} -
-
- {event.data && Object.keys(event.data).length > 0 && ( - - )} -
- - {showDetails && event.data && ( -
-
{JSON.stringify(event.data, null, 2)}
-
- )} -
- ); -} - -function PhaseTimeline({ currentPhase, completedPhases }: { currentPhase: number; completedPhases: number[] }) { - console.log('[PhaseTimeline] currentPhase:', currentPhase, 'completedPhases:', completedPhases); - - const phases = [ - { id: 0, name: "PreFlight", shortName: "Pre-Flight" }, - { id: 1, name: "Network", shortName: "Network" }, - { id: 2, name: "Identity", shortName: "Identity" }, - { id: 3, name: "MDM Enrollment", shortName: "MDM" }, - { id: 4, name: "ESP Device Setup", shortName: "Device" }, - { id: 5, name: "App Installation", shortName: "Apps" }, - { id: 6, name: "ESP User Setup", shortName: "User" }, - { id: 7, name: "Complete", shortName: "Complete" }, - ]; - - const getPhaseStatus = (phaseId: number) => { - // If phase is completed, show as completed (green) even if it's the current phase - if (completedPhases.includes(phaseId)) return 'completed'; - // If it's the current phase but not completed yet, show as current (blue) - if (phaseId === currentPhase) return 'current'; - // If it's before the current phase, show as completed (for phases that were skipped or not explicitly tracked) - if (phaseId < currentPhase) return 'completed'; - return 'pending'; - }; - - const getPhaseColor = (status: string) => { - switch (status) { - case 'completed': return 'bg-green-500 text-white border-green-500'; - case 'current': return 'bg-blue-500 text-white border-blue-500 ring-4 ring-blue-200'; - case 'pending': return 'bg-gray-200 text-gray-500 border-gray-300'; - default: return 'bg-gray-200 text-gray-500 border-gray-300'; - } - }; - - const getConnectorColor = (fromPhase: number) => { - const fromStatus = getPhaseStatus(fromPhase); - const toStatus = getPhaseStatus(fromPhase + 1); - return fromStatus === 'completed' ? 'bg-green-500' : 'bg-gray-300'; - }; - - return ( -
-
- {phases.map((phase, index) => { - const status = getPhaseStatus(phase.id); - const nextStatus = index < phases.length - 1 ? getPhaseStatus(phases[index + 1].id) : null; - const showArrow = status === 'current'; - - return ( -
-
-
- {status === 'completed' ? '✓' : phase.id + 1} -
-
- {phase.shortName} -
-
- {index < phases.length - 1 && ( -
-
- {showArrow && ( -
-
-
- )} - {!showArrow &&
} -
- )} -
- ); - })} -
-
- ); -} - -function SeverityBadge({ severity }: { severity: string }) { - const colors = { - Info: "bg-blue-100 text-blue-800", - Warning: "bg-yellow-100 text-yellow-800", - Error: "bg-red-100 text-red-800", - Critical: "bg-red-200 text-red-900" - }; - - const color = colors[severity as keyof typeof colors] || colors.Info; - - return ( - - {severity} - - ); -} - -function StatusBadge({ status }: { status: string }) { - const statusConfig = { - InProgress: { color: "bg-blue-100 text-blue-800", text: "In Progress" }, - Succeeded: { color: "bg-green-100 text-green-800", text: "Succeeded" }, - Failed: { color: "bg-red-100 text-red-800", text: "Failed" }, - Unknown: { color: "bg-gray-100 text-gray-800", text: "Unknown" }, - }; - - const config = statusConfig[status as keyof typeof statusConfig] || statusConfig.Unknown; - - return ( - - {config.text} - - ); -} diff --git a/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/utils/eventHelpers.ts b/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/utils/eventHelpers.ts index 26e8d270..405acb55 100644 --- a/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/utils/eventHelpers.ts +++ b/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/utils/eventHelpers.ts @@ -1,4 +1,4 @@ -import { EnrollmentEvent } from "../page"; +import { EnrollmentEvent } from "@/types"; // Pure helper — groups a flat event list into phase buckets. // Extracted from the useMemo so it can be called multiple times for WhiteGlove split timelines. diff --git a/src/Web/autopilot-monitor-web/app/settings/components/AdminManagementSection.tsx b/src/Web/autopilot-monitor-web/app/settings/components/AdminManagementSection.tsx index 8708b9e5..420ceba9 100644 --- a/src/Web/autopilot-monitor-web/app/settings/components/AdminManagementSection.tsx +++ b/src/Web/autopilot-monitor-web/app/settings/components/AdminManagementSection.tsx @@ -1,6 +1,6 @@ "use client"; -import { TenantAdmin } from "../page"; +import { TenantAdmin } from "../types"; interface AdminManagementSectionProps { admins: TenantAdmin[]; diff --git a/src/Web/autopilot-monitor-web/app/settings/components/DiagnosticsSection.tsx b/src/Web/autopilot-monitor-web/app/settings/components/DiagnosticsSection.tsx index 01c90cff..44cd5334 100644 --- a/src/Web/autopilot-monitor-web/app/settings/components/DiagnosticsSection.tsx +++ b/src/Web/autopilot-monitor-web/app/settings/components/DiagnosticsSection.tsx @@ -1,7 +1,7 @@ "use client"; import { useMemo } from "react"; -import { DiagnosticsLogPath } from "../page"; +import { DiagnosticsLogPath } from "../types"; import { validateDiagnosticsPath } from "@/lib/guardValidation"; import { ValidationIndicator } from "@/components/ValidationIndicator"; diff --git a/src/Web/autopilot-monitor-web/app/settings/page.tsx b/src/Web/autopilot-monitor-web/app/settings/page.tsx index ae634be9..197c15a3 100644 --- a/src/Web/autopilot-monitor-web/app/settings/page.tsx +++ b/src/Web/autopilot-monitor-web/app/settings/page.tsx @@ -21,75 +21,7 @@ import DataManagementSection from "./components/DataManagementSection"; import OffboardingSection from "./components/OffboardingSection"; import BootstrapSessionsSection, { BootstrapSessionItem } from "./components/BootstrapSessionsSection"; import UnrestrictedModeSection from "./components/UnrestrictedModeSection"; - -export interface DiagnosticsLogPath { - path: string; - description: string; - isBuiltIn: boolean; -} - -export interface TenantConfiguration { - tenantId: string; - lastUpdated: string; - updatedBy: string; - manufacturerWhitelist: string; - modelWhitelist: string; - validateAutopilotDevice: boolean; - validateCorporateIdentifier?: boolean; - allowInsecureAgentRequests?: boolean; - dataRetentionDays: number; - sessionTimeoutHours: number; - customSettings?: string; - // Agent collector settings - enablePerformanceCollector: boolean; - performanceCollectorIntervalSeconds: number; - helloWaitTimeoutSeconds?: number; - // Agent behavior - selfDestructOnComplete?: boolean; - keepLogFile?: boolean; - rebootOnComplete?: boolean; - rebootDelaySeconds?: number; - enableGeoLocation?: boolean; - enableImeMatchLog?: boolean; - logLevel?: string; - // Teams notifications (legacy) - teamsWebhookUrl?: string; - teamsNotifyOnSuccess?: boolean; - teamsNotifyOnFailure?: boolean; - // Webhook notifications (new) - webhookProviderType?: number; - webhookUrl?: string; - webhookNotifyOnSuccess?: boolean; - webhookNotifyOnFailure?: boolean; - // Diagnostics package - diagnosticsBlobSasUrl?: string; - diagnosticsUploadMode?: string; - diagnosticsLogPathsJson?: string; - // Enrollment summary dialog - showEnrollmentSummary?: boolean; - enrollmentSummaryTimeoutSeconds?: number; - enrollmentSummaryBrandingImageUrl?: string; - enrollmentSummaryLaunchRetrySeconds?: number; - // Script output visibility - showScriptOutput?: boolean; - // Agent analyzer settings - enableLocalAdminAnalyzer?: boolean; - localAdminAllowedAccountsJson?: string; - // Bootstrap token - bootstrapTokenEnabled?: boolean; - // Unrestricted mode - unrestrictedMode?: boolean; -} - -export interface TenantAdmin { - tenantId: string; - upn: string; - isEnabled: boolean; - addedDate: string; - addedBy: string; - role: string | null; - canManageBootstrapTokens: boolean; -} +import { TenantConfiguration, TenantAdmin, DiagnosticsLogPath } from "./types"; export default function SettingsPage() { const router = useRouter(); diff --git a/src/Web/autopilot-monitor-web/app/settings/types.ts b/src/Web/autopilot-monitor-web/app/settings/types.ts new file mode 100644 index 00000000..3f920fac --- /dev/null +++ b/src/Web/autopilot-monitor-web/app/settings/types.ts @@ -0,0 +1,68 @@ +export interface DiagnosticsLogPath { + path: string; + description: string; + isBuiltIn: boolean; +} + +export interface TenantConfiguration { + tenantId: string; + lastUpdated: string; + updatedBy: string; + manufacturerWhitelist: string; + modelWhitelist: string; + validateAutopilotDevice: boolean; + validateCorporateIdentifier?: boolean; + allowInsecureAgentRequests?: boolean; + dataRetentionDays: number; + sessionTimeoutHours: number; + customSettings?: string; + // Agent collector settings + enablePerformanceCollector: boolean; + performanceCollectorIntervalSeconds: number; + helloWaitTimeoutSeconds?: number; + // Agent behavior + selfDestructOnComplete?: boolean; + keepLogFile?: boolean; + rebootOnComplete?: boolean; + rebootDelaySeconds?: number; + enableGeoLocation?: boolean; + enableImeMatchLog?: boolean; + logLevel?: string; + // Teams notifications (legacy) + teamsWebhookUrl?: string; + teamsNotifyOnSuccess?: boolean; + teamsNotifyOnFailure?: boolean; + // Webhook notifications (new) + webhookProviderType?: number; + webhookUrl?: string; + webhookNotifyOnSuccess?: boolean; + webhookNotifyOnFailure?: boolean; + // Diagnostics package + diagnosticsBlobSasUrl?: string; + diagnosticsUploadMode?: string; + diagnosticsLogPathsJson?: string; + // Enrollment summary dialog + showEnrollmentSummary?: boolean; + enrollmentSummaryTimeoutSeconds?: number; + enrollmentSummaryBrandingImageUrl?: string; + enrollmentSummaryLaunchRetrySeconds?: number; + // Script output visibility + showScriptOutput?: boolean; + // Agent analyzer settings + enableLocalAdminAnalyzer?: boolean; + localAdminAllowedAccountsJson?: string; + // Bootstrap token + bootstrapTokenEnabled?: boolean; + // Unrestricted mode + unrestrictedMode?: boolean; +} + +export interface TenantAdmin { + tenantId: string; + upn: string; + isEnabled: boolean; + addedDate: string; + addedBy: string; + role: string | null; + canManageBootstrapTokens: boolean; +} diff --git a/src/Web/autopilot-monitor-web/tsconfig.tsbuildinfo b/src/Web/autopilot-monitor-web/tsconfig.tsbuildinfo index e96ed777..167e9815 100644 --- a/src/Web/autopilot-monitor-web/tsconfig.tsbuildinfo +++ b/src/Web/autopilot-monitor-web/tsconfig.tsbuildinfo @@ -1 +1 @@ -{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/typescript/lib/lib.es2024.d.ts","./node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/typescript/lib/lib.es2023.collection.d.ts","./node_modules/typescript/lib/lib.es2023.intl.d.ts","./node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2024.collection.d.ts","./node_modules/typescript/lib/lib.es2024.object.d.ts","./node_modules/typescript/lib/lib.es2024.promise.d.ts","./node_modules/typescript/lib/lib.es2024.regexp.d.ts","./node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2024.string.d.ts","./node_modules/typescript/lib/lib.esnext.array.d.ts","./node_modules/typescript/lib/lib.esnext.collection.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/typescript/lib/lib.esnext.promise.d.ts","./node_modules/typescript/lib/lib.esnext.decorators.d.ts","./node_modules/typescript/lib/lib.esnext.iterator.d.ts","./node_modules/typescript/lib/lib.esnext.float16.d.ts","./node_modules/typescript/lib/lib.esnext.error.d.ts","./node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./.next/types/routes.d.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/prop-types/index.d.ts","./node_modules/@types/react/index.d.ts","./node_modules/next/dist/styled-jsx/types/css.d.ts","./node_modules/next/dist/styled-jsx/types/macro.d.ts","./node_modules/next/dist/styled-jsx/types/style.d.ts","./node_modules/next/dist/styled-jsx/types/global.d.ts","./node_modules/next/dist/styled-jsx/types/index.d.ts","./node_modules/next/dist/shared/lib/amp.d.ts","./node_modules/next/amp.d.ts","./node_modules/next/dist/server/get-page-files.d.ts","./node_modules/@types/node/compatibility/disposable.d.ts","./node_modules/@types/node/compatibility/indexable.d.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/compatibility/index.d.ts","./node_modules/@types/node/globals.typedarray.d.ts","./node_modules/@types/node/buffer.buffer.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/@types/node/web-globals/events.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/web-globals/fetch.d.ts","./node_modules/@types/node/web-globals/navigator.d.ts","./node_modules/@types/node/web-globals/storage.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/inspector.generated.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/sqlite.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/@types/react/canary.d.ts","./node_modules/@types/react/experimental.d.ts","./node_modules/@types/react-dom/index.d.ts","./node_modules/@types/react-dom/canary.d.ts","./node_modules/@types/react-dom/experimental.d.ts","./node_modules/next/dist/lib/fallback.d.ts","./node_modules/next/dist/compiled/webpack/webpack.d.ts","./node_modules/next/dist/server/config.d.ts","./node_modules/next/dist/lib/load-custom-routes.d.ts","./node_modules/next/dist/shared/lib/image-config.d.ts","./node_modules/next/dist/build/webpack/plugins/subresource-integrity-plugin.d.ts","./node_modules/next/dist/server/body-streams.d.ts","./node_modules/next/dist/server/lib/cache-control.d.ts","./node_modules/next/dist/lib/setup-exception-listeners.d.ts","./node_modules/next/dist/lib/worker.d.ts","./node_modules/next/dist/lib/constants.d.ts","./node_modules/next/dist/client/components/app-router-headers.d.ts","./node_modules/next/dist/build/rendering-mode.d.ts","./node_modules/next/dist/server/lib/router-utils/build-prefetch-segment-data-route.d.ts","./node_modules/next/dist/server/require-hook.d.ts","./node_modules/next/dist/server/lib/experimental/ppr.d.ts","./node_modules/next/dist/build/webpack/plugins/app-build-manifest-plugin.d.ts","./node_modules/next/dist/lib/page-types.d.ts","./node_modules/next/dist/build/segment-config/app/app-segment-config.d.ts","./node_modules/next/dist/build/segment-config/pages/pages-segment-config.d.ts","./node_modules/next/dist/build/analysis/get-page-static-info.d.ts","./node_modules/next/dist/build/webpack/loaders/get-module-build-info.d.ts","./node_modules/next/dist/build/webpack/plugins/middleware-plugin.d.ts","./node_modules/next/dist/server/node-polyfill-crypto.d.ts","./node_modules/next/dist/server/node-environment-baseline.d.ts","./node_modules/next/dist/server/node-environment-extensions/error-inspect.d.ts","./node_modules/next/dist/server/node-environment-extensions/random.d.ts","./node_modules/next/dist/server/node-environment-extensions/date.d.ts","./node_modules/next/dist/server/node-environment-extensions/web-crypto.d.ts","./node_modules/next/dist/server/node-environment-extensions/node-crypto.d.ts","./node_modules/next/dist/server/node-environment.d.ts","./node_modules/next/dist/build/page-extensions-type.d.ts","./node_modules/next/dist/build/webpack/plugins/flight-manifest-plugin.d.ts","./node_modules/next/dist/server/instrumentation/types.d.ts","./node_modules/next/dist/lib/coalesced-function.d.ts","./node_modules/next/dist/shared/lib/router/utils/middleware-route-matcher.d.ts","./node_modules/next/dist/server/lib/router-utils/types.d.ts","./node_modules/next/dist/shared/lib/modern-browserslist-target.d.ts","./node_modules/next/dist/shared/lib/constants.d.ts","./node_modules/next/dist/trace/types.d.ts","./node_modules/next/dist/trace/trace.d.ts","./node_modules/next/dist/trace/shared.d.ts","./node_modules/next/dist/trace/index.d.ts","./node_modules/next/dist/build/load-jsconfig.d.ts","./node_modules/@next/env/dist/index.d.ts","./node_modules/next/dist/build/webpack/plugins/telemetry-plugin/use-cache-tracker-utils.d.ts","./node_modules/next/dist/build/webpack/plugins/telemetry-plugin/telemetry-plugin.d.ts","./node_modules/next/dist/telemetry/storage.d.ts","./node_modules/next/dist/build/build-context.d.ts","./node_modules/next/dist/shared/lib/bloom-filter.d.ts","./node_modules/next/dist/build/webpack-config.d.ts","./node_modules/next/dist/server/route-kind.d.ts","./node_modules/next/dist/server/route-definitions/route-definition.d.ts","./node_modules/next/dist/build/swc/generated-native.d.ts","./node_modules/next/dist/build/swc/types.d.ts","./node_modules/next/dist/server/dev/parse-version-info.d.ts","./node_modules/next/dist/next-devtools/shared/types.d.ts","./node_modules/next/dist/server/dev/dev-indicator-server-state.d.ts","./node_modules/next/dist/server/lib/parse-stack.d.ts","./node_modules/next/dist/next-devtools/server/shared.d.ts","./node_modules/next/dist/next-devtools/shared/stack-frame.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/utils/get-error-by-type.d.ts","./node_modules/@types/react/jsx-runtime.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/container/runtime-error/render-error.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/shared.d.ts","./node_modules/next/dist/server/dev/hot-reloader-types.d.ts","./node_modules/next/dist/server/lib/cache-handlers/types.d.ts","./node_modules/next/dist/server/response-cache/types.d.ts","./node_modules/next/dist/server/resume-data-cache/cache-store.d.ts","./node_modules/next/dist/server/resume-data-cache/resume-data-cache.d.ts","./node_modules/next/dist/server/render-result.d.ts","./node_modules/next/dist/server/lib/i18n-provider.d.ts","./node_modules/next/dist/server/web/next-url.d.ts","./node_modules/next/dist/compiled/@edge-runtime/cookies/index.d.ts","./node_modules/next/dist/server/web/spec-extension/cookies.d.ts","./node_modules/next/dist/server/web/spec-extension/request.d.ts","./node_modules/next/dist/server/after/builtin-request-context.d.ts","./node_modules/next/dist/server/web/spec-extension/fetch-event.d.ts","./node_modules/next/dist/server/web/spec-extension/response.d.ts","./node_modules/next/dist/build/segment-config/middleware/middleware-config.d.ts","./node_modules/next/dist/server/web/types.d.ts","./node_modules/next/dist/build/webpack/plugins/pages-manifest-plugin.d.ts","./node_modules/next/dist/shared/lib/router/utils/parse-url.d.ts","./node_modules/next/dist/server/base-http/node.d.ts","./node_modules/next/dist/build/webpack/plugins/next-font-manifest-plugin.d.ts","./node_modules/next/dist/server/route-definitions/locale-route-definition.d.ts","./node_modules/next/dist/server/route-definitions/pages-route-definition.d.ts","./node_modules/next/dist/shared/lib/mitt.d.ts","./node_modules/next/dist/client/with-router.d.ts","./node_modules/next/dist/client/router.d.ts","./node_modules/next/dist/client/route-loader.d.ts","./node_modules/next/dist/client/page-loader.d.ts","./node_modules/next/dist/shared/lib/router/router.d.ts","./node_modules/next/dist/shared/lib/router-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/loadable-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/loadable.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/image-config-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.d.ts","./node_modules/next/dist/server/route-definitions/app-page-route-definition.d.ts","./node_modules/next/dist/build/webpack/loaders/metadata/types.d.ts","./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.d.ts","./node_modules/next/dist/server/lib/app-dir-module.d.ts","./node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.d.ts","./node_modules/next/dist/server/async-storage/draft-mode-provider.d.ts","./node_modules/next/dist/server/web/spec-extension/adapters/headers.d.ts","./node_modules/next/dist/server/app-render/cache-signal.d.ts","./node_modules/next/dist/server/app-render/dynamic-rendering.d.ts","./node_modules/next/dist/server/request/fallback-params.d.ts","./node_modules/next/dist/server/app-render/work-unit-async-storage-instance.d.ts","./node_modules/next/dist/server/response-cache/index.d.ts","./node_modules/next/dist/server/lib/lazy-result.d.ts","./node_modules/next/dist/server/lib/implicit-tags.d.ts","./node_modules/next/dist/server/app-render/work-unit-async-storage.external.d.ts","./node_modules/next/dist/shared/lib/deep-readonly.d.ts","./node_modules/next/dist/shared/lib/router/utils/parse-relative-url.d.ts","./node_modules/next/dist/server/app-render/app-render.d.ts","./node_modules/next/dist/shared/lib/server-inserted-html.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/amp-context.shared-runtime.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/entrypoints.d.ts","./node_modules/next/dist/server/route-modules/app-page/module.compiled.d.ts","./node_modules/next/dist/client/components/error-boundary.d.ts","./node_modules/next/dist/client/components/layout-router.d.ts","./node_modules/next/dist/client/components/render-from-template-context.d.ts","./node_modules/next/dist/server/app-render/action-async-storage-instance.d.ts","./node_modules/next/dist/server/app-render/action-async-storage.external.d.ts","./node_modules/next/dist/client/components/client-page.d.ts","./node_modules/next/dist/client/components/client-segment.d.ts","./node_modules/next/dist/server/request/search-params.d.ts","./node_modules/next/dist/client/components/hooks-server-context.d.ts","./node_modules/next/dist/client/components/http-access-fallback/error-boundary.d.ts","./node_modules/next/dist/lib/metadata/types/alternative-urls-types.d.ts","./node_modules/next/dist/lib/metadata/types/extra-types.d.ts","./node_modules/next/dist/lib/metadata/types/metadata-types.d.ts","./node_modules/next/dist/lib/metadata/types/manifest-types.d.ts","./node_modules/next/dist/lib/metadata/types/opengraph-types.d.ts","./node_modules/next/dist/lib/metadata/types/twitter-types.d.ts","./node_modules/next/dist/lib/metadata/types/metadata-interface.d.ts","./node_modules/next/dist/lib/metadata/types/resolvers.d.ts","./node_modules/next/dist/lib/metadata/types/icons.d.ts","./node_modules/next/dist/lib/metadata/resolve-metadata.d.ts","./node_modules/next/dist/lib/metadata/metadata.d.ts","./node_modules/next/dist/lib/framework/boundary-components.d.ts","./node_modules/next/dist/server/app-render/rsc/preloads.d.ts","./node_modules/next/dist/server/app-render/rsc/postpone.d.ts","./node_modules/next/dist/server/app-render/rsc/taint.d.ts","./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.d.ts","./node_modules/next/dist/server/app-render/collect-segment-data.d.ts","./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.d.ts","./node_modules/next/dist/server/app-render/entry-base.d.ts","./node_modules/next/dist/build/templates/app-page.d.ts","./node_modules/@types/react/jsx-dev-runtime.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/entrypoints.d.ts","./node_modules/@types/react-dom/client.d.ts","./node_modules/@types/react-dom/server.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/entrypoints.d.ts","./node_modules/next/dist/server/route-modules/app-page/module.d.ts","./node_modules/next/dist/server/web/adapter.d.ts","./node_modules/next/dist/server/use-cache/cache-life.d.ts","./node_modules/next/dist/server/app-render/types.d.ts","./node_modules/next/dist/client/components/router-reducer/router-reducer-types.d.ts","./node_modules/next/dist/client/flight-data-helpers.d.ts","./node_modules/next/dist/client/components/router-reducer/fetch-server-response.d.ts","./node_modules/next/dist/shared/lib/app-router-context.shared-runtime.d.ts","./node_modules/next/dist/server/route-modules/pages/vendored/contexts/entrypoints.d.ts","./node_modules/next/dist/server/route-modules/pages/module.compiled.d.ts","./node_modules/next/dist/build/templates/pages.d.ts","./node_modules/next/dist/server/route-modules/pages/module.d.ts","./node_modules/next/dist/next-devtools/userspace/pages/pages-dev-overlay-setup.d.ts","./node_modules/next/dist/server/render.d.ts","./node_modules/next/dist/server/route-definitions/pages-api-route-definition.d.ts","./node_modules/next/dist/server/route-matches/pages-api-route-match.d.ts","./node_modules/next/dist/server/route-matchers/route-matcher.d.ts","./node_modules/next/dist/server/route-matcher-providers/route-matcher-provider.d.ts","./node_modules/next/dist/server/route-matcher-managers/route-matcher-manager.d.ts","./node_modules/next/dist/server/normalizers/normalizer.d.ts","./node_modules/next/dist/server/normalizers/locale-route-normalizer.d.ts","./node_modules/next/dist/server/normalizers/request/pathname-normalizer.d.ts","./node_modules/next/dist/server/normalizers/request/suffix.d.ts","./node_modules/next/dist/server/normalizers/request/rsc.d.ts","./node_modules/next/dist/server/normalizers/request/prefetch-rsc.d.ts","./node_modules/next/dist/server/normalizers/request/next-data.d.ts","./node_modules/next/dist/server/normalizers/request/segment-prefix-rsc.d.ts","./node_modules/next/dist/build/static-paths/types.d.ts","./node_modules/next/dist/server/base-server.d.ts","./node_modules/next/dist/server/lib/async-callback-set.d.ts","./node_modules/next/dist/shared/lib/router/utils/route-regex.d.ts","./node_modules/next/dist/shared/lib/router/utils/route-matcher.d.ts","./node_modules/sharp/lib/index.d.ts","./node_modules/next/dist/server/image-optimizer.d.ts","./node_modules/next/dist/server/next-server.d.ts","./node_modules/next/dist/server/lib/types.d.ts","./node_modules/next/dist/server/lib/lru-cache.d.ts","./node_modules/next/dist/server/lib/dev-bundler-service.d.ts","./node_modules/next/dist/server/dev/static-paths-worker.d.ts","./node_modules/next/dist/server/dev/next-dev-server.d.ts","./node_modules/next/dist/server/next.d.ts","./node_modules/next/dist/server/lib/render-server.d.ts","./node_modules/next/dist/server/lib/router-server.d.ts","./node_modules/next/dist/shared/lib/router/utils/path-match.d.ts","./node_modules/next/dist/server/lib/router-utils/filesystem.d.ts","./node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.d.ts","./node_modules/next/dist/server/lib/router-utils/router-server-context.d.ts","./node_modules/next/dist/server/route-modules/route-module.d.ts","./node_modules/next/dist/server/load-components.d.ts","./node_modules/next/dist/server/route-definitions/app-route-route-definition.d.ts","./node_modules/next/dist/server/async-storage/work-store.d.ts","./node_modules/next/dist/server/web/http.d.ts","./node_modules/next/dist/server/route-modules/app-route/shared-modules.d.ts","./node_modules/next/dist/client/components/redirect-status-code.d.ts","./node_modules/next/dist/client/components/redirect-error.d.ts","./node_modules/next/dist/build/templates/app-route.d.ts","./node_modules/next/dist/server/route-modules/app-route/module.d.ts","./node_modules/next/dist/server/route-modules/app-route/module.compiled.d.ts","./node_modules/next/dist/build/segment-config/app/app-segments.d.ts","./node_modules/next/dist/build/utils.d.ts","./node_modules/next/dist/build/turborepo-access-trace/types.d.ts","./node_modules/next/dist/build/turborepo-access-trace/result.d.ts","./node_modules/next/dist/build/turborepo-access-trace/helpers.d.ts","./node_modules/next/dist/build/turborepo-access-trace/index.d.ts","./node_modules/next/dist/export/routes/types.d.ts","./node_modules/next/dist/export/types.d.ts","./node_modules/next/dist/export/worker.d.ts","./node_modules/next/dist/build/worker.d.ts","./node_modules/next/dist/build/index.d.ts","./node_modules/next/dist/server/lib/incremental-cache/index.d.ts","./node_modules/next/dist/server/after/after.d.ts","./node_modules/next/dist/server/after/after-context.d.ts","./node_modules/next/dist/server/app-render/work-async-storage-instance.d.ts","./node_modules/next/dist/server/app-render/work-async-storage.external.d.ts","./node_modules/next/dist/server/request/params.d.ts","./node_modules/next/dist/server/route-matches/route-match.d.ts","./node_modules/next/dist/server/request-meta.d.ts","./node_modules/next/dist/cli/next-test.d.ts","./node_modules/next/dist/server/config-shared.d.ts","./node_modules/next/dist/server/base-http/index.d.ts","./node_modules/next/dist/server/api-utils/index.d.ts","./node_modules/next/dist/types.d.ts","./node_modules/next/dist/shared/lib/html-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/utils.d.ts","./node_modules/next/dist/pages/_app.d.ts","./node_modules/next/app.d.ts","./node_modules/next/dist/server/web/spec-extension/unstable-cache.d.ts","./node_modules/next/dist/server/web/spec-extension/revalidate.d.ts","./node_modules/next/dist/server/web/spec-extension/unstable-no-store.d.ts","./node_modules/next/dist/server/use-cache/cache-tag.d.ts","./node_modules/next/cache.d.ts","./node_modules/next/dist/shared/lib/runtime-config.external.d.ts","./node_modules/next/config.d.ts","./node_modules/next/dist/pages/_document.d.ts","./node_modules/next/document.d.ts","./node_modules/next/dist/shared/lib/dynamic.d.ts","./node_modules/next/dynamic.d.ts","./node_modules/next/dist/pages/_error.d.ts","./node_modules/next/error.d.ts","./node_modules/next/dist/shared/lib/head.d.ts","./node_modules/next/head.d.ts","./node_modules/next/dist/server/request/cookies.d.ts","./node_modules/next/dist/server/request/headers.d.ts","./node_modules/next/dist/server/request/draft-mode.d.ts","./node_modules/next/headers.d.ts","./node_modules/next/dist/shared/lib/get-img-props.d.ts","./node_modules/next/dist/client/image-component.d.ts","./node_modules/next/dist/shared/lib/image-external.d.ts","./node_modules/next/image.d.ts","./node_modules/next/dist/client/link.d.ts","./node_modules/next/link.d.ts","./node_modules/next/dist/client/components/redirect.d.ts","./node_modules/next/dist/client/components/not-found.d.ts","./node_modules/next/dist/client/components/forbidden.d.ts","./node_modules/next/dist/client/components/unauthorized.d.ts","./node_modules/next/dist/client/components/unstable-rethrow.server.d.ts","./node_modules/next/dist/client/components/unstable-rethrow.d.ts","./node_modules/next/dist/client/components/navigation.react-server.d.ts","./node_modules/next/dist/client/components/unrecognized-action-error.d.ts","./node_modules/next/dist/client/components/navigation.d.ts","./node_modules/next/navigation.d.ts","./node_modules/next/router.d.ts","./node_modules/next/dist/client/script.d.ts","./node_modules/next/script.d.ts","./node_modules/next/dist/server/web/spec-extension/user-agent.d.ts","./node_modules/next/dist/compiled/@edge-runtime/primitives/url.d.ts","./node_modules/next/dist/server/web/spec-extension/image-response.d.ts","./node_modules/next/dist/compiled/@vercel/og/satori/index.d.ts","./node_modules/next/dist/compiled/@vercel/og/emoji/index.d.ts","./node_modules/next/dist/compiled/@vercel/og/types.d.ts","./node_modules/next/dist/server/after/index.d.ts","./node_modules/next/dist/server/request/root-params.d.ts","./node_modules/next/dist/server/request/connection.d.ts","./node_modules/next/server.d.ts","./node_modules/next/types/global.d.ts","./node_modules/next/types/compiled.d.ts","./node_modules/next/types.d.ts","./node_modules/next/index.d.ts","./node_modules/next/image-types/global.d.ts","./next-env.d.ts","./next.config.ts","./node_modules/source-map-js/source-map.d.ts","./node_modules/postcss/lib/previous-map.d.ts","./node_modules/postcss/lib/input.d.ts","./node_modules/postcss/lib/css-syntax-error.d.ts","./node_modules/postcss/lib/declaration.d.ts","./node_modules/postcss/lib/root.d.ts","./node_modules/postcss/lib/warning.d.ts","./node_modules/postcss/lib/lazy-result.d.ts","./node_modules/postcss/lib/no-work-result.d.ts","./node_modules/postcss/lib/processor.d.ts","./node_modules/postcss/lib/result.d.ts","./node_modules/postcss/lib/document.d.ts","./node_modules/postcss/lib/rule.d.ts","./node_modules/postcss/lib/node.d.ts","./node_modules/postcss/lib/comment.d.ts","./node_modules/postcss/lib/container.d.ts","./node_modules/postcss/lib/at-rule.d.ts","./node_modules/postcss/lib/list.d.ts","./node_modules/postcss/lib/postcss.d.ts","./node_modules/postcss/lib/postcss.d.mts","./node_modules/tailwindcss/types/generated/corepluginlist.d.ts","./node_modules/tailwindcss/types/generated/colors.d.ts","./node_modules/tailwindcss/types/config.d.ts","./node_modules/tailwindcss/types/index.d.ts","./tailwind.config.ts","./app/robots.ts","./app/docs/docsnavsections.ts","./app/sitemap.ts","./app/analyze-rules/types.ts","./app/api/download/bootstrapper/route.ts","./app/dashboard/types.ts","./app/gather-rules/types.ts","./app/go/[code]/route.ts","./app/ime-log-patterns/types.ts","./node_modules/@microsoft/signalr/dist/esm/abortcontroller.d.ts","./node_modules/@microsoft/signalr/dist/esm/itransport.d.ts","./node_modules/@microsoft/signalr/dist/esm/errors.d.ts","./node_modules/@microsoft/signalr/dist/esm/ilogger.d.ts","./node_modules/@microsoft/signalr/dist/esm/ihubprotocol.d.ts","./node_modules/@microsoft/signalr/dist/esm/httpclient.d.ts","./node_modules/@microsoft/signalr/dist/esm/defaulthttpclient.d.ts","./node_modules/@microsoft/signalr/dist/esm/ihttpconnectionoptions.d.ts","./node_modules/@microsoft/signalr/dist/esm/istatefulreconnectoptions.d.ts","./node_modules/@microsoft/signalr/dist/esm/stream.d.ts","./node_modules/@microsoft/signalr/dist/esm/hubconnection.d.ts","./node_modules/@microsoft/signalr/dist/esm/iretrypolicy.d.ts","./node_modules/@microsoft/signalr/dist/esm/hubconnectionbuilder.d.ts","./node_modules/@microsoft/signalr/dist/esm/loggers.d.ts","./node_modules/@microsoft/signalr/dist/esm/jsonhubprotocol.d.ts","./node_modules/@microsoft/signalr/dist/esm/subject.d.ts","./node_modules/@microsoft/signalr/dist/esm/pkg-version.d.ts","./node_modules/@microsoft/signalr/dist/esm/utils.d.ts","./node_modules/@microsoft/signalr/dist/esm/index.d.ts","./lib/config.ts","./lib/authenticatedfetch.ts","./node_modules/@azure/msal-common/dist/account/tokenclaims.d.ts","./node_modules/@azure/msal-common/dist/account/authtoken.d.ts","./node_modules/@azure/msal-common/dist/authority/authoritytype.d.ts","./node_modules/@azure/msal-common/dist/authority/openidconfigresponse.d.ts","./node_modules/@azure/msal-common/dist/url/iuri.d.ts","./node_modules/@azure/msal-common/dist/network/networkresponse.d.ts","./node_modules/@azure/msal-common/dist/network/inetworkmodule.d.ts","./node_modules/@azure/msal-common/dist/authority/protocolmode.d.ts","./node_modules/@azure/msal-common/dist/utils/constants.d.ts","./node_modules/@azure/msal-common/dist/logger/logger.d.ts","./node_modules/@azure/msal-common/dist/authority/oidcoptions.d.ts","./node_modules/@azure/msal-common/dist/authority/azureregion.d.ts","./node_modules/@azure/msal-common/dist/authority/azureregionconfiguration.d.ts","./node_modules/@azure/msal-common/dist/authority/clouddiscoverymetadata.d.ts","./node_modules/@azure/msal-common/dist/authority/cloudinstancediscoveryresponse.d.ts","./node_modules/@azure/msal-common/dist/authority/authorityoptions.d.ts","./node_modules/@azure/msal-common/dist/cache/entities/credentialentity.d.ts","./node_modules/@azure/msal-common/dist/cache/entities/idtokenentity.d.ts","./node_modules/@azure/msal-common/dist/cache/entities/accesstokenentity.d.ts","./node_modules/@azure/msal-common/dist/cache/entities/refreshtokenentity.d.ts","./node_modules/@azure/msal-common/dist/cache/entities/appmetadataentity.d.ts","./node_modules/@azure/msal-common/dist/cache/entities/cacherecord.d.ts","./node_modules/@azure/msal-common/dist/account/accountinfo.d.ts","./node_modules/@azure/msal-common/dist/cache/entities/servertelemetryentity.d.ts","./node_modules/@azure/msal-common/dist/cache/entities/throttlingentity.d.ts","./node_modules/@azure/msal-common/dist/cache/entities/authoritymetadataentity.d.ts","./node_modules/@azure/msal-common/dist/request/storeincache.d.ts","./node_modules/@azure/msal-common/dist/telemetry/performance/performanceevent.d.ts","./node_modules/@azure/msal-common/dist/telemetry/performance/iperformancemeasurement.d.ts","./node_modules/@azure/msal-common/dist/telemetry/performance/iperformanceclient.d.ts","./node_modules/@azure/msal-common/dist/cache/cachemanager.d.ts","./node_modules/@azure/msal-common/dist/telemetry/server/servertelemetryrequest.d.ts","./node_modules/@azure/msal-common/dist/authority/regiondiscoverymetadata.d.ts","./node_modules/@azure/msal-common/dist/telemetry/server/servertelemetrymanager.d.ts","./node_modules/@azure/msal-common/dist/cache/interface/iserializabletokencache.d.ts","./node_modules/@azure/msal-common/dist/cache/persistence/tokencachecontext.d.ts","./node_modules/@azure/msal-common/dist/cache/interface/icacheplugin.d.ts","./node_modules/@azure/msal-common/dist/account/clientcredentials.d.ts","./node_modules/@azure/msal-common/dist/config/clientconfiguration.d.ts","./node_modules/@azure/msal-common/dist/utils/msaltypes.d.ts","./node_modules/@azure/msal-common/dist/crypto/joseheader.d.ts","./node_modules/@azure/msal-common/dist/crypto/signedhttprequest.d.ts","./node_modules/@azure/msal-common/dist/request/baseauthrequest.d.ts","./node_modules/@azure/msal-common/dist/crypto/icrypto.d.ts","./node_modules/@azure/msal-common/dist/cache/entities/accountentity.d.ts","./node_modules/@azure/msal-common/dist/request/scopeset.d.ts","./node_modules/@azure/msal-common/dist/cache/utils/cachetypes.d.ts","./node_modules/@azure/msal-common/dist/cache/interface/icachemanager.d.ts","./node_modules/@azure/msal-common/dist/authority/authority.d.ts","./node_modules/@azure/msal-common/dist/authority/authorityfactory.d.ts","./node_modules/@azure/msal-common/dist/cache/utils/cachehelpers.d.ts","./node_modules/@azure/msal-common/dist/utils/timeutils.d.ts","./node_modules/@azure/msal-common/dist/response/serverauthorizationcoderesponse.d.ts","./node_modules/@azure/msal-common/dist/utils/urlutils.d.ts","./node_modules/@azure/msal-common/dist/constants/aadserverparamkeys.d.ts","./node_modules/@azure/msal-common/dist/response/serverauthorizationtokenresponse.d.ts","./node_modules/@azure/msal-common/dist/network/requestthumbprint.d.ts","./node_modules/@azure/msal-common/dist/account/ccscredential.d.ts","./node_modules/@azure/msal-common/dist/client/baseclient.d.ts","./node_modules/@azure/msal-common/dist/request/commonauthorizationurlrequest.d.ts","./node_modules/@azure/msal-common/dist/request/commonauthorizationcoderequest.d.ts","./node_modules/@azure/msal-common/dist/response/authenticationresult.d.ts","./node_modules/@azure/msal-common/dist/request/commonendsessionrequest.d.ts","./node_modules/@azure/msal-common/dist/response/authorizationcodepayload.d.ts","./node_modules/@azure/msal-common/dist/client/authorizationcodeclient.d.ts","./node_modules/@azure/msal-common/dist/request/commonrefreshtokenrequest.d.ts","./node_modules/@azure/msal-common/dist/request/commonsilentflowrequest.d.ts","./node_modules/@azure/msal-common/dist/client/refreshtokenclient.d.ts","./node_modules/@azure/msal-common/dist/client/silentflowclient.d.ts","./node_modules/@azure/msal-common/dist/account/clientinfo.d.ts","./node_modules/@azure/msal-common/dist/network/throttlingutils.d.ts","./node_modules/@azure/msal-common/dist/url/urlstring.d.ts","./node_modules/@azure/msal-common/dist/request/requestparameterbuilder.d.ts","./node_modules/@azure/msal-common/dist/utils/protocolutils.d.ts","./node_modules/@azure/msal-common/dist/response/responsehandler.d.ts","./node_modules/@azure/msal-common/dist/request/authenticationheaderparser.d.ts","./node_modules/@azure/msal-common/dist/error/autherrorcodes.d.ts","./node_modules/@azure/msal-common/dist/error/autherror.d.ts","./node_modules/@azure/msal-common/dist/error/interactionrequiredautherrorcodes.d.ts","./node_modules/@azure/msal-common/dist/error/interactionrequiredautherror.d.ts","./node_modules/@azure/msal-common/dist/error/servererror.d.ts","./node_modules/@azure/msal-common/dist/error/networkerror.d.ts","./node_modules/@azure/msal-common/dist/error/cacheerrorcodes.d.ts","./node_modules/@azure/msal-common/dist/error/cacheerror.d.ts","./node_modules/@azure/msal-common/dist/error/clientautherrorcodes.d.ts","./node_modules/@azure/msal-common/dist/error/clientautherror.d.ts","./node_modules/@azure/msal-common/dist/error/clientconfigurationerrorcodes.d.ts","./node_modules/@azure/msal-common/dist/error/clientconfigurationerror.d.ts","./node_modules/@azure/msal-common/dist/utils/stringutils.d.ts","./node_modules/@azure/msal-common/dist/utils/functionwrappers.d.ts","./node_modules/@azure/msal-common/dist/packagemetadata.d.ts","./node_modules/@azure/msal-common/dist/exports-common.d.ts","./node_modules/@azure/msal-common/dist/response/externaltokenresponse.d.ts","./node_modules/@azure/msal-common/dist/telemetry/performance/performanceclient.d.ts","./node_modules/@azure/msal-common/dist/telemetry/performance/stubperformanceclient.d.ts","./node_modules/@azure/msal-common/dist/crypto/poptokengenerator.d.ts","./node_modules/@azure/msal-common/dist/exports-browser-only.d.ts","./node_modules/@azure/msal-common/dist/index-browser.d.ts","./node_modules/@azure/msal-browser/dist/request/popupwindowattributes.d.ts","./node_modules/@azure/msal-browser/dist/request/popuprequest.d.ts","./node_modules/@azure/msal-browser/dist/request/redirectrequest.d.ts","./node_modules/@azure/msal-browser/dist/utils/browserconstants.d.ts","./node_modules/@azure/msal-browser/dist/navigation/navigationoptions.d.ts","./node_modules/@azure/msal-browser/dist/navigation/inavigationclient.d.ts","./node_modules/@azure/msal-browser/dist/config/configuration.d.ts","./node_modules/@azure/msal-browser/dist/utils/browserutils.d.ts","./node_modules/@azure/msal-browser/dist/request/silentrequest.d.ts","./node_modules/@azure/msal-browser/dist/cache/iwindowstorage.d.ts","./node_modules/@azure/msal-browser/dist/cache/memorystorage.d.ts","./node_modules/@azure/msal-browser/dist/broker/nativebroker/nativerequest.d.ts","./node_modules/@azure/msal-browser/dist/response/authenticationresult.d.ts","./node_modules/@azure/msal-browser/dist/request/ssosilentrequest.d.ts","./node_modules/@azure/msal-browser/dist/cache/cookiestorage.d.ts","./node_modules/@azure/msal-browser/dist/cache/browsercachemanager.d.ts","./node_modules/@azure/msal-browser/dist/cache/tokencache.d.ts","./node_modules/@azure/msal-browser/dist/cache/itokencache.d.ts","./node_modules/@azure/msal-browser/dist/request/authorizationcoderequest.d.ts","./node_modules/@azure/msal-browser/dist/request/endsessionrequest.d.ts","./node_modules/@azure/msal-browser/dist/request/endsessionpopuprequest.d.ts","./node_modules/@azure/msal-browser/dist/event/eventtype.d.ts","./node_modules/@azure/msal-browser/dist/event/eventmessage.d.ts","./node_modules/@azure/msal-browser/dist/request/clearcacherequest.d.ts","./node_modules/@azure/msal-browser/dist/request/initializeapplicationrequest.d.ts","./node_modules/@azure/msal-browser/dist/app/ipublicclientapplication.d.ts","./node_modules/@azure/msal-browser/dist/controllers/icontroller.d.ts","./node_modules/@azure/msal-browser/dist/app/publicclientapplication.d.ts","./node_modules/@azure/msal-browser/dist/app/publicclientnext.d.ts","./node_modules/@azure/msal-browser/dist/error/browserautherrorcodes.d.ts","./node_modules/@azure/msal-browser/dist/error/browserautherror.d.ts","./node_modules/@azure/msal-browser/dist/error/browserconfigurationautherrorcodes.d.ts","./node_modules/@azure/msal-browser/dist/error/browserconfigurationautherror.d.ts","./node_modules/@azure/msal-browser/dist/navigation/navigationclient.d.ts","./node_modules/@azure/msal-browser/dist/request/authorizationurlrequest.d.ts","./node_modules/@azure/msal-browser/dist/cache/browserstorage.d.ts","./node_modules/@azure/msal-browser/dist/cache/localstorage.d.ts","./node_modules/@azure/msal-browser/dist/cache/sessionstorage.d.ts","./node_modules/@azure/msal-browser/dist/event/eventhandler.d.ts","./node_modules/@azure/msal-browser/dist/crypto/signedhttprequest.d.ts","./node_modules/@azure/msal-browser/dist/telemetry/browserperformanceclient.d.ts","./node_modules/@azure/msal-browser/dist/telemetry/browserperformancemeasurement.d.ts","./node_modules/@azure/msal-browser/dist/packagemetadata.d.ts","./node_modules/@azure/msal-browser/dist/index.d.ts","./node_modules/@azure/msal-react/dist/msalcontext.d.ts","./node_modules/@azure/msal-react/dist/msalprovider.d.ts","./node_modules/@azure/msal-react/dist/types/accountidentifiers.d.ts","./node_modules/@azure/msal-react/dist/hooks/usemsalauthentication.d.ts","./node_modules/@azure/msal-react/dist/components/msalauthenticationtemplate.d.ts","./node_modules/@azure/msal-react/dist/components/authenticatedtemplate.d.ts","./node_modules/@azure/msal-react/dist/components/unauthenticatedtemplate.d.ts","./node_modules/@azure/msal-react/dist/utils/utilities.d.ts","./node_modules/@azure/msal-react/dist/components/withmsal.d.ts","./node_modules/@azure/msal-react/dist/hooks/usemsal.d.ts","./node_modules/@azure/msal-react/dist/hooks/useaccount.d.ts","./node_modules/@azure/msal-react/dist/hooks/useisauthenticated.d.ts","./node_modules/@azure/msal-react/dist/packagemetadata.d.ts","./node_modules/@azure/msal-react/dist/index.d.ts","./lib/msalconfig.ts","./contexts/authcontext.tsx","./contexts/signalrcontext.tsx","./contexts/tenantcontext.tsx","./contexts/notificationcontext.tsx","./components/protectedroute.tsx","./components/performancechart.tsx","./components/downloadprogress.tsx","./components/installprogress.tsx","./components/scriptexecutions.tsx","./app/sessions/[sessionid]/utils/phaseconstants.ts","./app/sessions/[sessionid]/components/sessioninfocard.tsx","./app/sessions/[sessionid]/components/phasetimeline.tsx","./app/sessions/[sessionid]/components/eventtimeline.tsx","./app/sessions/[sessionid]/components/analysisresultssection.tsx","./app/sessions/[sessionid]/components/markfailedmodal.tsx","./node_modules/fflate/esm/browser.d.ts","./app/sessions/[sessionid]/components/reportsessionmodal.tsx","./app/sessions/[sessionid]/components/sectionnav.tsx","./app/sessions/[sessionid]/components/devicedetailscard.tsx","./lib/sessionexportutils.ts","./app/sessions/[sessionid]/page.tsx","./app/sessions/[sessionid]/utils/eventhelpers.ts","./hooks/useauthenticatedfetch.ts","./hooks/usenotificationmessages.ts","./hooks/index.ts","./lib/guardrails.generated.ts","./lib/guardvalidation.ts","./lib/rulepagehelpers.ts","./node_modules/next/dist/compiled/@vercel/og/index.edge.d.ts","./node_modules/next/dist/compiled/@vercel/og/index.node.d.ts","./node_modules/next/dist/server/og/image-response.d.ts","./node_modules/next/og.d.ts","./app/apple-icon.tsx","./app/error.tsx","./app/global-error.tsx","./node_modules/next/dist/compiled/@next/font/dist/types.d.ts","./node_modules/next/dist/compiled/@next/font/dist/google/index.d.ts","./node_modules/next/font/google/index.d.ts","./contexts/galacticnotificationcontext.tsx","./contexts/themecontext.tsx","./components/navbar.tsx","./components/scrolltotopbutton.tsx","./app/layout.tsx","./app/opengraph-image.tsx","./components/publicsitenavbar.tsx","./components/landing/authgate.tsx","./components/landing/loginbutton.tsx","./components/landing/platformstats.tsx","./app/page.tsx","./app/twitter-image.tsx","./app/about/layout.tsx","./components/publicpageheader.tsx","./app/about/page.tsx","./app/admin-configuration/components/tenantadminsection.tsx","./app/admin-configuration/components/tenantmanagementsection.tsx","./app/admin-configuration/components/maintenancesection.tsx","./components/validationindicator.tsx","./app/admin-configuration/components/diagnosticslogpathssection.tsx","./app/admin-configuration/components/tenantsearchselect.tsx","./app/admin-configuration/components/deviceblocksection.tsx","./app/admin-configuration/components/versionblocksection.tsx","./app/admin-configuration/components/sessionexportsection.tsx","./app/admin-configuration/components/adminconfigsettingssection.tsx","./app/admin-configuration/components/sessionreportssection.tsx","./components/scrollspysidebar.tsx","./app/admin-configuration/page.tsx","./components/rules/statcard.tsx","./components/rules/rulefilterbar.tsx","./components/rules/emptystate.tsx","./components/rules/formjsontoggle.tsx","./app/analyze-rules/components/analyzeruleformfields.tsx","./app/analyze-rules/components/analyzerulecard.tsx","./app/analyze-rules/page.tsx","./app/audit/page.tsx","./app/changelog/layout.tsx","./app/changelog/page.tsx","./app/dashboard/components/statscards.tsx","./app/dashboard/components/welcomemessage.tsx","./app/dashboard/components/sessiontable.tsx","./app/dashboard/components/confirmationmodals.tsx","./app/dashboard/page.tsx","./app/dashboard/components/settingsmenu.tsx","./app/dashboard/components/usermenu.tsx","./app/diagnosis/[sessionid]/components/diagnosisbadges.tsx","./app/diagnosis/[sessionid]/page.tsx","./app/docs/docssidebar.tsx","./app/docs/layout.tsx","./app/docs/sections/sectionprivatepreview.tsx","./app/docs/sections/sectiongeneral.tsx","./app/docs/sections/sectionoverview.tsx","./app/docs/sections/sectionsetup.tsx","./app/docs/sections/sectionagent.tsx","./app/docs/sections/sectionagentsetup.tsx","./app/docs/sections/sectionsettings.tsx","./app/docs/sections/sectiongatherrules.tsx","./app/docs/sections/sectionanalyzerules.tsx","./app/docs/[section]/page.tsx","./app/fleet-health/components/fleetstatcard.tsx","./app/fleet-health/page.tsx","./app/gather-rules/components/gatherruleformfields.tsx","./app/gather-rules/components/gatherrulecard.tsx","./app/gather-rules/page.tsx","./node_modules/@types/geojson/index.d.ts","./node_modules/@types/leaflet/index.d.ts","./node_modules/react-leaflet/lib/hooks.d.ts","./node_modules/react-leaflet/lib/attributioncontrol.d.ts","./node_modules/@react-leaflet/core/lib/attribution.d.ts","./node_modules/@react-leaflet/core/lib/context.d.ts","./node_modules/@react-leaflet/core/lib/element.d.ts","./node_modules/@react-leaflet/core/lib/events.d.ts","./node_modules/@react-leaflet/core/lib/layer.d.ts","./node_modules/@react-leaflet/core/lib/path.d.ts","./node_modules/@react-leaflet/core/lib/circle.d.ts","./node_modules/@react-leaflet/core/lib/div-overlay.d.ts","./node_modules/@react-leaflet/core/lib/component.d.ts","./node_modules/@react-leaflet/core/lib/control.d.ts","./node_modules/@react-leaflet/core/lib/dom.d.ts","./node_modules/@react-leaflet/core/lib/generic.d.ts","./node_modules/@react-leaflet/core/lib/grid-layer.d.ts","./node_modules/@react-leaflet/core/lib/media-overlay.d.ts","./node_modules/@react-leaflet/core/lib/pane.d.ts","./node_modules/@react-leaflet/core/lib/index.d.ts","./node_modules/react-leaflet/lib/circle.d.ts","./node_modules/react-leaflet/lib/circlemarker.d.ts","./node_modules/react-leaflet/lib/layergroup.d.ts","./node_modules/react-leaflet/lib/featuregroup.d.ts","./node_modules/react-leaflet/lib/geojson.d.ts","./node_modules/react-leaflet/lib/imageoverlay.d.ts","./node_modules/react-leaflet/lib/layerscontrol.d.ts","./node_modules/react-leaflet/lib/mapcontainer.d.ts","./node_modules/react-leaflet/lib/marker.d.ts","./node_modules/react-leaflet/lib/pane.d.ts","./node_modules/react-leaflet/lib/polygon.d.ts","./node_modules/react-leaflet/lib/polyline.d.ts","./node_modules/react-leaflet/lib/popup.d.ts","./node_modules/react-leaflet/lib/rectangle.d.ts","./node_modules/react-leaflet/lib/scalecontrol.d.ts","./node_modules/react-leaflet/lib/svgoverlay.d.ts","./node_modules/react-leaflet/lib/tilelayer.d.ts","./node_modules/react-leaflet/lib/tooltip.d.ts","./node_modules/react-leaflet/lib/videooverlay.d.ts","./node_modules/react-leaflet/lib/wmstilelayer.d.ts","./node_modules/react-leaflet/lib/zoomcontrol.d.ts","./node_modules/react-leaflet/lib/index.d.ts","./app/geographic-performance/geomap.tsx","./app/geographic-performance/page.tsx","./app/geographic-performance/sessions/page.tsx","./app/health-check/page.tsx","./app/ime-log-patterns/components/imepatterncard.tsx","./app/ime-log-patterns/page.tsx","./app/platform-metrics/page.tsx","./app/platform-usage-metrics/page.tsx","./app/preview/page.tsx","./app/privacy/layout.tsx","./app/privacy/page.tsx","./app/progress/page.tsx","./app/roadmap/layout.tsx","./app/roadmap/page.tsx","./components/unsavedchangesmodal.tsx","./app/settings/components/autopilotvalidationsection.tsx","./app/settings/components/adminmanagementsection.tsx","./app/settings/components/hardwarewhitelistsection.tsx","./app/settings/components/agentsettingssection.tsx","./app/settings/components/agentanalyzerssection.tsx","./app/settings/components/notificationssection.tsx","./app/settings/components/diagnosticssection.tsx","./app/settings/components/datamanagementsection.tsx","./app/settings/components/offboardingsection.tsx","./app/settings/components/bootstrapsessionssection.tsx","./app/settings/components/unrestrictedmodesection.tsx","./app/settings/page.tsx","./app/terms/layout.tsx","./app/terms/page.tsx","./app/usage-metrics/page.tsx","./.next/types/cache-life.d.ts","./.next/types/validator.ts","./.next/types/app/page.ts","./.next/types/app/about/layout.ts","./.next/types/app/about/page.ts","./.next/types/app/admin-configuration/page.ts","./.next/types/app/analyze-rules/page.ts","./.next/types/app/api/download/bootstrapper/route.ts","./.next/types/app/audit/page.ts","./.next/types/app/changelog/layout.ts","./.next/types/app/changelog/page.ts","./.next/types/app/dashboard/page.ts","./.next/types/app/diagnosis/[sessionid]/page.ts","./.next/types/app/docs/layout.ts","./.next/types/app/docs/[section]/page.ts","./.next/types/app/fleet-health/page.ts","./.next/types/app/gather-rules/page.ts","./.next/types/app/geographic-performance/page.ts","./.next/types/app/go/[code]/route.ts","./.next/types/app/health-check/page.ts","./.next/types/app/ime-log-patterns/page.ts","./.next/types/app/platform-metrics/page.ts","./.next/types/app/platform-usage-metrics/page.ts","./.next/types/app/preview/page.ts","./.next/types/app/privacy/layout.ts","./.next/types/app/privacy/page.ts","./.next/types/app/progress/page.ts","./.next/types/app/roadmap/layout.ts","./.next/types/app/roadmap/page.ts","./.next/types/app/sessions/[sessionid]/page.ts","./.next/types/app/settings/page.ts","./.next/types/app/terms/layout.ts","./.next/types/app/terms/page.ts","./.next/types/app/usage-metrics/page.ts","./node_modules/@types/estree/index.d.ts","./node_modules/@types/json-schema/index.d.ts","./node_modules/@types/json5/index.d.ts"],"fileIdsList":[[101,149,166,167,342,764],[101,149,166,167,342,766],[101,149,166,167,342,779],[101,149,166,167,342,786],[101,149,166,167,494,531],[101,149,166,167,342,787],[101,149,166,167,342,788],[101,149,166,167,342,789],[101,149,166,167,342,794],[101,149,166,167,342,798],[101,149,166,167,342,810],[101,149,166,167,342,800],[101,149,166,167,342,812],[101,149,166,167,342,815],[101,149,166,167,342,859],[101,149,166,167,494,534],[101,149,166,167,342,861],[101,149,166,167,342,863],[101,149,166,167,342,762],[101,149,166,167,342,864],[101,149,166,167,342,865],[101,149,166,167,342,866],[101,149,166,167,342,867],[101,149,166,167,342,868],[101,149,166,167,342,869],[101,149,166,167,342,870],[101,149,166,167,342,871],[101,149,166,167,342,734],[101,149,166,167,342,884],[101,149,166,167,342,885],[101,149,166,167,342,886],[101,149,166,167,342,887],[101,149,166,167,447,448,449,450],[101,149,166,167],[83,101,149,166,167,494,497,531,534,734,756,762,764,766,779,786,787,788,789,794,798,800,810,812,815,859,861,863,864,865,866,867,868,869,870,871,884,885,886,887],[101,149,166,167,498],[101,149,166,167,471,758,765],[87,101,149,166,167,555,556,768,772],[87,101,149,166,167,740,770],[87,101,149,166,167,555,556],[87,101,149,166,167,555,556,733,768,772],[87,101,149,166,167,555,556,767],[87,101,149,166,167,768],[87,101,149,166,167,481,555,556,714,718,768,769,771,773,774,775,776,777,778],[87,101,149,166,167,530,741,783,784],[101,149,166,167,530],[87,101,149,166,167,471,481,530,555,556,714,716,718,738,741,780,781,782,783,784,785],[101,149,166,167,745],[87,101,149,166,167,481,555,556,714,716,717,718],[87,101,149,166,167,481,532],[87,101,149,166,167,555,556,714,716],[87,101,149,166,167],[101,149,166,167,471],[87,101,149,166,167,471,481,532,555,556,714,715,716,717,718,790,791,792,793],[87,101,149,166,167,481,555,556,714,715,716,717,718,797],[101,149,166,167,481,498,528,801,802,803,804,805,806,807,808,809],[87,101,149,166,167,471,481,528],[101,149,166,167,498,758,765,799],[87,101,149,166,167,739],[101,149,166,167,481],[87,101,149,166,167,481,555,556,714,715,716,717,718,811],[87,101,149,166,167,533,740,741,770,783,813],[87,101,149,166,167,533,740,770],[87,101,149,166,167,471,481,533,555,556,714,716,718,738,741,780,781,782,783,813,814],[87,101,149,166,167,857],[87,101,149,166,167,457,481,555,556,714,716,718,858],[87,101,149,166,167,481,555,556,714,716,718],[87,101,149,166,167,554,555,556,714,715,716,717],[87,101,149,166,167,535,741,783],[87,101,149,166,167,481,535,555,714,716,718,738,741,780,781,782,862],[101,149,166,167,498,714,715,716,717,751,752,753,754,755],[101,149,166,167,758,759,760,761],[87,101,149,166,167,481,555,556,714,717,718],[87,101,149,166,167,481,555,556,714,718],[87,101,149,166,167,481,555,714],[87,101,149,166,167,555,556,714,715,716,717,718],[87,101,149,166,167,734],[87,101,149,166,167,734,735],[101,149,166,167,734],[87,101,149,166,167,723,734],[87,101,149,166,167,729,734],[87,101,149,166,167,481,555,556,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,730,731,732,733,735],[101,149,166,167,884],[87,101,149,166,167,740,770,884],[87,101,149,166,167,481,555,556,714,716,717,718,778,872,873,874,875,876,877,878,879,880,881,882,883],[101,149,166,167,498,528],[101,149,166,167,757],[87,101,149,166,167,481,714],[101,149,166,167,714],[87,101,149,166,167,471,481,555,714,717,752,753],[101,149,166,167,471,714,753],[101,149,166,167,740],[87,101,149,166,167,555,698,712,713],[87,101,149,166,167,555,556,714],[87,101,149,166,167,554,555,556,714],[87,101,149,166,167,714],[101,149,166,167,736,737],[87,101,149,166,167,556,714,717],[101,149,166,167,739],[101,149,166,167,698],[83,101,149,166,167,498,499],[101,149,166,167,654,656,657,658,660,661,663,667,668,672,673,674,675,676,677,678,679],[101,149,166,167,654,656,657,658,660,661,663,667,668,672,673,674,675,676,677,678,679,680,681],[101,149,166,167,654,656,657,658,660,661,663,667,668,672,673,674,676,677,678,680,681],[101,149,166,167,654,658],[101,149,166,167,654,656,657,658,661,663,664,665,666,667,668,669],[101,149,166,167,664],[101,149,166,167,654,663,667,671],[101,149,166,167,654,661,663,667,670,672],[101,149,166,167,654,658,660],[101,149,166,167,654],[101,149,166,167,654,684],[101,149,166,167,654,686],[101,149,166,167,654,658,676,677],[101,149,166,167,654,656,657,658,663,667,668,674,676],[101,149,166,167,654,655,656,657,658,659,660,661,662,663,664,665,667,668,671,672,673,674,675,676,677,678,679,680,681,682,683,685,687,688,689,690,691,692,693,694,695,696,697],[101,149,166,167,659],[101,149,166,167,659,660],[101,149,166,167,658],[101,149,166,167,654,655],[101,149,166,167,654,661],[101,149,166,167,656,657],[101,149,166,167,557],[101,149,166,167,559,560,561,563,564,566,570,572,586,589,595,604],[101,149,166,167,563,566,572,586,604,605],[101,149,166,167,564,567,569,571],[101,149,166,167,568],[101,149,166,167,570],[101,149,166,167,565],[101,149,166,167,566,572,574,575,576,577,578,579,580,581,582,583,586,599,600,601,603,604],[101,149,166,167,565,573],[101,149,166,167,557,559,566,579,600,605],[101,149,166,167,574,575,576,577,601],[101,149,166,167,573],[101,149,166,167,574,575,576,577,578,579,580,581,582,583,601,603],[101,149,166,167,592],[101,149,166,167,591],[101,149,166,167,560,565,570,573,574,575,576,577,582],[101,149,166,167,565,574,575,576,577,579,580,581,582,601,602],[101,149,166,167,586,595,609,615,616,617,618,619,620],[101,149,166,167,562,563,566,586,587,590,595,599,600,605,612,613,614],[101,149,166,167,586,595,615,618,622,623],[101,149,166,167,565,586,595,615,618,623],[101,149,166,167,563,566,572,587,590,591,593,594,600,605],[101,149,166,167,598,599],[101,149,166,167,566,586,600],[101,149,166,167,597],[101,149,166,167,633],[101,149,166,167,639],[101,149,166,167,634,641],[101,149,166,167,634,643],[101,149,166,167,634,635],[101,149,166,167,634],[101,149,166,167,584,585,586,597,598,649,650,651,652],[101,149,166,167,557,558,559,561,562,563,564,565,566,567,568,569,572,573,574,575,576,577,578,579,580,581,582,583,587,588,590,595,596,599,600,601,602,603,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,634,636,637,638,640,642,644,645,646,647],[101,149,166,167,648,653],[101,149,166,167,595],[101,149,166,167,562],[101,149,166,167,565,598],[101,149,166,167,562,587,599,612,613],[101,149,166,167,565,583,595,596,598],[101,149,166,167,596,599,614],[101,149,166,167,565,579,596,599],[101,149,166,167,579,596],[101,149,166,167,579,596,599],[101,149,166,167,565,586,590,595,596,626],[101,149,166,167,579],[101,149,166,167,612],[101,149,166,167,557,566,578,586,587,591,593,599,600,601,605,609,612,618,620,630],[101,149,166,167,584,585],[101,149,166,167,566,584,585,586,595],[101,149,166,167,584,585,586],[101,149,166,167,565,580,587,588,589],[101,149,166,167,561],[101,149,166,167,566,586],[101,149,166,167,600],[101,149,166,167,609],[87,101,149,166,167,701],[87,101,149,166,167,698,699,701,702],[87,101,149,166,167,699,706],[101,149,166,167,698,701],[101,149,166,167,701],[101,149,166,167,699],[101,149,166,167,699,700,701,702,703,704,705,706,707,708,709,710,711],[87,101,149,166,167,698],[87,101,149,166,167,698,701],[101,149,166,167,539,541],[101,149,166,167,537],[101,149,166,167,536,540],[101,149,166,167,545],[101,149,166,167,537,539,540,543,544,546,547],[101,149,166,167,537,539,540,541],[101,149,166,167,537,539],[101,149,166,167,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,553],[101,149,166,167,537,539,540],[101,149,166,167,539],[101,149,166,167,539,541,543,545,551,552],[101,149,166,167,817],[87,101,149,166,167,817,825],[87,101,149,166,167,822,827],[87,101,149,166,167,817],[101,149,166,167,817,822],[101,149,166,167,817,821,822,824],[87,101,149,166,167,821],[87,101,149,166,167,817,821,822,824,825,827,828],[101,149,166,167,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834],[101,149,166,167,817,821,822,823],[101,149,166,167,817,824],[101,149,166,167,817,821],[101,149,166,167,817,822,824],[101,149,166,167,816],[101,146,147,149,166,167],[101,148,149,166,167],[149,166,167],[101,149,154,166,167,184],[101,149,150,155,160,166,167,169,181,192],[101,149,150,151,160,166,167,169],[96,97,98,101,149,166,167],[101,149,152,166,167,193],[101,149,153,154,161,166,167,170],[101,149,154,166,167,181,189],[101,149,155,157,160,166,167,169],[101,148,149,156,166,167],[101,149,157,158,166,167],[101,149,159,160,166,167],[101,148,149,160,166,167],[101,149,160,161,162,166,167,181,192],[101,149,160,161,162,166,167,176,181,184],[101,142,149,157,160,163,166,167,169,181,192],[101,149,160,161,163,164,166,167,169,181,189,192],[101,149,163,165,166,167,181,189,192],[99,100,101,102,103,104,105,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198],[101,149,160,166,167],[101,149,166,167,168,192],[101,149,157,160,166,167,169,181],[101,149,166,167,170],[101,149,166,167,171],[101,148,149,166,167,172],[101,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198],[101,149,166,167,174],[101,149,166,167,175],[101,149,160,166,167,176,177],[101,149,166,167,176,178,193,195],[101,149,161,166,167],[101,149,160,166,167,181,182,184],[101,149,166,167,183,184],[101,149,166,167,181,182],[101,149,166,167,184],[101,149,166,167,185],[101,146,149,166,167,181,186,192],[101,149,160,166,167,187,188],[101,149,166,167,187,188],[101,149,154,166,167,169,181,189],[101,149,166,167,190],[101,149,166,167,169,191],[101,149,163,166,167,175,192],[101,149,154,166,167,193],[101,149,166,167,181,194],[101,149,166,167,168,195],[101,149,166,167,196],[101,142,149,166,167],[101,142,149,160,162,166,167,172,181,184,192,194,195,197],[101,149,166,167,181,198],[87,101,149,166,167,202,203,204,358],[87,101,149,166,167,202,203],[87,101,149,166,167,203,358],[87,91,101,149,166,167,201,442,490],[87,91,101,149,166,167,200,442,490],[84,85,86,101,149,166,167],[93,101,149,166,167],[101,149,166,167,445],[101,149,166,167,452],[101,149,166,167,208,222,223,224,226,439],[101,149,166,167,208,247,249,251,252,255,439,441],[101,149,166,167,208,212,214,215,216,217,218,428,439,441],[101,149,166,167,439],[101,149,166,167,223,325,409,418,435],[101,149,166,167,208],[101,149,166,167,205,435],[101,149,166,167,259],[101,149,166,167,258,439,441],[101,149,163,166,167,307,325,354,496],[101,149,163,166,167,318,334,418,434],[101,149,163,166,167,370],[101,149,166,167,422],[101,149,166,167,421,422,423],[101,149,166,167,421],[95,101,149,163,166,167,205,208,212,215,219,220,221,223,227,235,236,363,388,419,439,442],[101,149,166,167,208,225,243,247,248,253,254,439,496],[101,149,166,167,225,496],[101,149,166,167,236,243,305,439,496],[101,149,166,167,496],[101,149,166,167,208,225,226,496],[101,149,166,167,250,496],[101,149,166,167,219,420,427],[101,149,166,167,175,267,435],[101,149,166,167,267,435],[87,101,149,166,167,267],[87,101,149,166,167,326],[101,149,166,167,322,368,435,478,479],[101,149,166,167,415,472,473,474,475,477],[101,149,166,167,414],[101,149,166,167,414,415],[101,149,166,167,216,364,365,366],[101,149,166,167,364,367,368],[101,149,166,167,476],[101,149,166,167,364,368],[87,101,149,166,167,209,466],[87,101,149,166,167,192],[87,101,149,166,167,225,295],[87,101,149,166,167,225],[101,149,166,167,293,297],[87,101,149,166,167,294,444],[101,149,166,167,749],[87,101,149,166,167,490],[87,101,149,166,167,181,199,490,742],[87,91,101,149,163,166,167,199,200,201,442,488,489],[101,149,163,166,167],[101,149,163,166,167,212,274,364,374,389,409,424,425,439,440,496],[101,149,166,167,235,426],[101,149,166,167,442],[101,149,166,167,207],[87,101,149,166,167,307,321,333,343,345,434],[101,149,166,167,175,307,321,342,343,344,434,495],[101,149,166,167,336,337,338,339,340,341],[101,149,166,167,338],[101,149,166,167,342],[101,149,166,167,265,266,267,269],[87,101,149,166,167,260,261,262,268],[101,149,166,167,265,268],[101,149,166,167,263],[101,149,166,167,264],[87,101,149,166,167,267,294,444],[87,101,149,166,167,267,443,444],[87,101,149,166,167,267,444],[101,149,166,167,389,431],[101,149,166,167,431],[101,149,163,166,167,440,444],[101,149,166,167,330],[101,148,149,166,167,329],[101,149,166,167,237,275,313,315,317,318,319,320,361,364,434,437,440],[101,149,166,167,237,351,364,368],[101,149,166,167,318,434],[87,101,149,166,167,318,327,328,330,331,332,333,334,335,346,347,348,349,350,352,353,434,435,496],[101,149,166,167,312],[101,149,163,166,167,175,237,238,274,289,319,361,362,363,368,389,409,430,439,440,441,442,496],[101,149,166,167,434],[101,148,149,166,167,223,316,319,363,430,432,433,440],[101,149,166,167,318],[101,148,149,166,167,274,279,308,309,310,311,312,313,314,315,317,434,435],[101,149,163,166,167,279,280,308,440,441],[101,149,166,167,223,363,364,389,430,434,440],[101,149,163,166,167,439,441],[101,149,163,166,167,181,437,440,441],[101,149,163,166,167,175,192,205,212,225,237,238,240,275,276,281,286,289,315,319,364,374,376,379,381,384,385,386,387,388,409,429,430,435,437,439,440,441],[101,149,163,166,167,181],[101,149,166,167,208,209,210,212,217,220,225,243,429,437,438,442,444,496],[101,149,163,166,167,181,192,255,257,259,260,261,262,269,496],[101,149,166,167,175,192,205,247,257,285,286,287,288,315,364,379,388,389,395,398,399,409,430,435,437],[101,149,166,167,219,220,235,363,388,430,439],[101,149,163,166,167,192,209,212,315,393,437,439],[101,149,166,167,306],[101,149,163,166,167,396,397,406],[101,149,166,167,437,439],[101,149,166,167,313,316],[101,149,166,167,315,319,429,444],[101,149,163,166,167,175,241,247,288,379,389,395,398,401,437],[101,149,163,166,167,219,235,247,402],[101,149,166,167,208,240,404,429,439],[101,149,163,166,167,192,439],[101,149,163,166,167,225,239,240,241,252,270,403,405,429,439],[95,101,149,166,167,237,319,408,442,444],[101,149,163,166,167,175,192,212,219,227,235,238,275,281,285,286,287,288,289,315,364,376,389,390,392,394,409,429,430,435,436,437,444],[101,149,163,166,167,181,219,395,400,406,437],[101,149,166,167,230,231,232,233,234],[101,149,166,167,276,380],[101,149,166,167,382],[101,149,166,167,380],[101,149,166,167,382,383],[101,149,166,167,743],[101,149,163,166,167,212,215,216,274,440],[101,149,163,166,167,175,207,209,237,275,289,319,372,373,409,437,441,442,444],[101,149,163,166,167,175,192,211,216,315,373,436,440],[101,149,166,167,308],[101,149,166,167,309],[101,149,166,167,310],[101,149,166,167,435],[101,149,166,167,256,272],[101,149,163,166,167,212,256,275],[101,149,166,167,271,272],[101,149,166,167,273],[101,149,166,167,256,257],[101,149,166,167,256,290],[101,149,166,167,256],[101,149,166,167,276,378,436],[101,149,166,167,377],[101,149,166,167,257,435,436],[101,149,166,167,375,436],[101,149,166,167,257,435],[101,149,166,167,361],[101,149,166,167,212,217,275,304,307,313,315,319,321,324,355,357,360,364,408,429,437,440],[101,149,166,167,298,301,302,303,322,323,368],[87,101,149,166,167,202,203,204,267,356],[87,101,149,166,167,202,203,204,267,356,359],[101,149,166,167,417],[101,149,166,167,223,280,318,319,330,334,364,408,410,411,412,413,415,416,419,429,434,439],[101,149,166,167,368],[101,149,166,167,372],[101,149,163,166,167,275,291,369,371,374,408,437,442,444],[101,149,166,167,298,299,300,301,302,303,322,323,368,443],[95,101,149,163,166,167,175,192,238,256,257,289,315,319,406,407,409,429,430,439,440,442],[101,149,166,167,280,282,285,430],[101,149,163,166,167,276,439],[101,149,166,167,279,318],[101,149,166,167,278],[101,149,166,167,280,281],[101,149,166,167,277,279,439],[101,149,163,166,167,211,280,282,283,284,439,440],[87,101,149,166,167,364,365,367],[101,149,166,167,242],[87,101,149,166,167,209],[87,101,149,166,167,435],[87,95,101,149,166,167,289,319,442,444],[101,149,166,167,209,466,467],[87,101,149,166,167,297],[87,101,149,166,167,175,192,207,254,292,294,296,444],[101,149,166,167,225,435,440],[101,149,166,167,391,435],[101,149,166,167,364],[87,101,149,161,163,166,167,175,207,243,249,297,442,443],[87,101,149,166,167,200,201,442,490],[87,88,89,90,91,101,149,166,167],[101,149,154,166,167],[101,149,166,167,244,245,246],[101,149,166,167,244],[87,91,101,149,163,165,166,167,175,199,200,201,202,204,205,207,238,342,401,439,441,444,490],[101,149,166,167,454],[101,149,166,167,456],[101,149,166,167,458],[101,149,166,167,750],[101,149,166,167,460],[101,149,166,167,462,463,464],[101,149,166,167,468],[92,94,101,149,166,167,446,451,453,455,457,459,461,465,469,471,481,482,484,494,495,496,497],[101,149,166,167,470],[101,149,166,167,480],[101,149,166,167,744],[101,149,166,167,294],[101,149,166,167,483],[101,148,149,166,167,280,282,283,285,333,435,485,486,487,490,491,492,493],[101,149,166,167,199],[101,149,166,167,517],[101,149,166,167,515,517],[101,149,166,167,506,514,515,516,518,520],[101,149,166,167,504],[101,149,166,167,507,512,517,520],[101,149,166,167,503,520],[101,149,166,167,507,508,511,512,513,520],[101,149,166,167,507,508,509,511,512,520],[101,149,166,167,504,505,506,507,508,512,513,514,516,517,518,520],[101,149,166,167,520],[101,149,166,167,502,504,505,506,507,508,509,511,512,513,514,515,516,517,518,519],[101,149,166,167,502,520],[101,149,166,167,507,509,510,512,513,520],[101,149,166,167,511,520],[101,149,166,167,512,513,517,520],[101,149,166,167,505,515],[87,101,149,166,167,817,835],[87,101,149,166,167,817,835,838],[87,101,149,166,167,816,817,835,838],[101,149,166,167,818,819,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856],[87,101,149,166,167,816,817,835],[101,149,166,167,181,199],[101,149,166,167,522,523],[101,149,166,167,521,524],[101,114,118,149,166,167,192],[101,114,149,166,167,181,192],[101,109,149,166,167],[101,111,114,149,166,167,189,192],[101,149,166,167,169,189],[101,109,149,166,167,199],[101,111,114,149,166,167,169,192],[101,106,107,110,113,149,160,166,167,181,192],[101,114,121,149,166,167],[101,106,112,149,166,167],[101,114,135,136,149,166,167],[101,110,114,149,166,167,184,192,199],[101,135,149,166,167,199],[101,108,109,149,166,167,199],[101,114,149,166,167],[101,108,109,110,111,112,113,114,115,116,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,136,137,138,139,140,141,149,166,167],[101,114,129,149,166,167],[101,114,121,122,149,166,167],[101,112,114,122,123,149,166,167],[101,113,149,166,167],[101,106,109,114,149,166,167],[101,114,118,122,123,149,166,167],[101,118,149,166,167],[101,112,114,117,149,166,167,192],[101,106,111,114,121,149,166,167],[101,149,166,167,181],[101,109,114,135,149,166,167,197,199],[101,149,166,167,525]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"2ab096661c711e4a81cc464fa1e6feb929a54f5340b46b0a07ac6bbf857471f0","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"60037901da1a425516449b9a20073aa03386cce92f7a1fd902d7602be3a7c2e9","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22adec94ef7047a6c9d1af3cb96be87a335908bf9ef386ae9fd50eeb37f44c47","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"73f78680d4c08509933daf80947902f6ff41b6230f94dd002ae372620adb0f60","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5239f5c01bcfa9cd32f37c496cf19c61d69d37e48be9de612b541aac915805b","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0cd2f1591d03492c27a0aa569675ec2f2ac7aedd72b90b74e89db304e98c97f","affectsGlobalScope":true},{"version":"eb5b19b86227ace1d29ea4cf81387279d04bb34051e944bc53df69f58914b788","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"87d9d29dbc745f182683f63187bf3d53fd8673e5fca38ad5eaab69798ed29fbc","impliedFormat":1},{"version":"035312d4945d13efa134ae482f6dc56a1a9346f7ac3be7ccbad5741058ce87f3","affectsGlobalScope":true,"impliedFormat":1},{"version":"acd8fd5090ac73902278889c38336ff3f48af6ba03aa665eb34a75e7ba1dccc4","impliedFormat":1},{"version":"d6258883868fb2680d2ca96bc8b1352cab69874581493e6d52680c5ffecdb6cc","impliedFormat":1},{"version":"1b61d259de5350f8b1e5db06290d31eaebebc6baafd5f79d314b5af9256d7153","impliedFormat":1},{"version":"f258e3960f324a956fc76a3d3d9e964fff2244ff5859dcc6ce5951e5413ca826","impliedFormat":1},{"version":"643f7232d07bf75e15bd8f658f664d6183a0efaca5eb84b48201c7671a266979","impliedFormat":1},{"version":"0f6666b58e9276ac3a38fdc80993d19208442d6027ab885580d93aec76b4ef00","impliedFormat":1},{"version":"05fd364b8ef02fb1e174fbac8b825bdb1e5a36a016997c8e421f5fab0a6da0a0","impliedFormat":1},{"version":"631eff75b0e35d1b1b31081d55209abc43e16b49426546ab5a9b40bdd40b1f60","impliedFormat":1},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"808069bba06b6768b62fd22429b53362e7af342da4a236ed2d2e1c89fcca3b4a","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fa06ada475b910e2106c98c68b10483dc8811d0c14a8a8dd36efb2672485b29","impliedFormat":1},{"version":"33e5e9aba62c3193d10d1d33ae1fa75c46a1171cf76fef750777377d53b0303f","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"6a0cd27e5dc2cfbe039e731cf879d12b0e2dded06d1b1dedad07f7712de0d7f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f5c844119c43e51ce777c509267f14d6aaf31eafb2c2b002ca35584cd13b29","impliedFormat":1},{"version":"e60477649d6ad21542bd2dc7e3d9ff6853d0797ba9f689ba2f6653818999c264","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4c829ab315f57c5442c6667b53769975acbf92003a66aef19bce151987675bd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"b2ade7657e2db96d18315694789eff2ddd3d8aea7215b181f8a0b303277cc579","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"4d631b81fa2f07a0e63a9a143d6a82c25c5f051298651a9b69176ba28930756d","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"41670ee38943d9cbb4924e436f56fc19ee94232bc96108562de1a734af20dc2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"c906fb15bd2aabc9ed1e3f44eb6a8661199d6c320b3aa196b826121552cb3695","impliedFormat":1},{"version":"22295e8103f1d6d8ea4b5d6211e43421fe4564e34d0dd8e09e520e452d89e659","impliedFormat":1},{"version":"f949f7f6c7802a338039cfc2156d1fe285cdd1e092c64437ebe15ae8edc854e0","impliedFormat":1},{"version":"6b4e081d55ac24fc8a4631d5dd77fe249fa25900abd7d046abb87d90e3b45645","impliedFormat":1},{"version":"a10f0e1854f3316d7ee437b79649e5a6ae3ae14ffe6322b02d4987071a95362e","impliedFormat":1},{"version":"e208f73ef6a980104304b0d2ca5f6bf1b85de6009d2c7e404028b875020fa8f2","impliedFormat":1},{"version":"d163b6bc2372b4f07260747cbc6c0a6405ab3fbcea3852305e98ac43ca59f5bc","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"83e63d6ccf8ec004a3bb6d58b9bb0104f60e002754b1e968024b320730cc5311","impliedFormat":1},{"version":"24826ed94a78d5c64bd857570fdbd96229ad41b5cb654c08d75a9845e3ab7dde","impliedFormat":1},{"version":"8b479a130ccb62e98f11f136d3ac80f2984fdc07616516d29881f3061f2dd472","impliedFormat":1},{"version":"928af3d90454bf656a52a48679f199f64c1435247d6189d1caf4c68f2eaf921f","affectsGlobalScope":true,"impliedFormat":1},{"version":"d2bc7425ef40526650d6db7e072c1ff4a51101c3ac2cc4b666623b19496a6e27","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"a3fc63c0d7b031693f665f5494412ba4b551fe644ededccc0ab5922401079c95","impliedFormat":1},{"version":"f27524f4bef4b6519c604bdb23bf4465bddcccbf3f003abb901acbd0d7404d99","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"6b039f55681caaf111d5eb84d292b9bee9e0131d0db1ad0871eef0964f533c73","affectsGlobalScope":true,"impliedFormat":1},{"version":"18fd40412d102c5564136f29735e5d1c3b455b8a37f920da79561f1fde068208","impliedFormat":1},{"version":"c8d3e5a18ba35629954e48c4cc8f11dc88224650067a172685c736b27a34a4dc","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"0dba70b3fb0dcd713fda33c2df64fa6751fff6460e536971cee917260fb17882","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"5b7aa3c4c1a5d81b411e8cb302b45507fea9358d3569196b27eb1a27ae3a90ef","affectsGlobalScope":true,"impliedFormat":1},{"version":"5987a903da92c7462e0b35704ce7da94d7fdc4b89a984871c0e2b87a8aae9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea08a0345023ade2b47fbff5a76d0d0ed8bff10bc9d22b83f40858a8e941501c","impliedFormat":1},{"version":"47613031a5a31510831304405af561b0ffaedb734437c595256bb61a90f9311b","impliedFormat":1},{"version":"ae062ce7d9510060c5d7e7952ae379224fb3f8f2dd74e88959878af2057c143b","impliedFormat":1},{"version":"8a1a0d0a4a06a8d278947fcb66bf684f117bf147f89b06e50662d79a53be3e9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"9f663c2f91127ef7024e8ca4b3b4383ff2770e5f826696005de382282794b127","impliedFormat":1},{"version":"9f55299850d4f0921e79b6bf344b47c420ce0f507b9dcf593e532b09ea7eeea1","impliedFormat":1},{"version":"f9fd93190acb1ffe0bc0fb395df979452f8d625071e9ffc8636e4dfb86ab2508","impliedFormat":1},{"version":"5f41fd8732a89e940c58ce22206e3df85745feb8983e2b4c6257fb8cbb118493","impliedFormat":1},{"version":"17ed71200119e86ccef2d96b73b02ce8854b76ad6bd21b5021d4269bec527b5f","impliedFormat":1},{"version":"1cfa8647d7d71cb03847d616bd79320abfc01ddea082a49569fda71ac5ece66b","impliedFormat":1},{"version":"bb7a61dd55dc4b9422d13da3a6bb9cc5e89be888ef23bbcf6558aa9726b89a1c","impliedFormat":1},{"version":"413df52d4ea14472c2fa5bee62f7a40abd1eb49be0b9722ee01ee4e52e63beb2","impliedFormat":1},{"version":"db6d2d9daad8a6d83f281af12ce4355a20b9a3e71b82b9f57cddcca0a8964a96","impliedFormat":1},{"version":"829b9e6028b29e6a8b1c01ddb713efe59da04d857089298fa79acbdb3cfcfdef","impliedFormat":1},{"version":"24f8562308dd8ba6013120557fa7b44950b619610b2c6cb8784c79f11e3c4f90","impliedFormat":1},{"version":"5d8717b437b9d6afeb4da84b9082db35cafce3dfd025bc7c9ad7abbe50fa2778","impliedFormat":1},{"version":"a86f82d646a739041d6702101afa82dcb935c416dd93cbca7fd754fd0282ce1f","impliedFormat":1},{"version":"ad0d1d75d129b1c80f911be438d6b61bfa8703930a8ff2be2f0e1f8a91841c64","impliedFormat":1},{"version":"ce75b1aebb33d510ff28af960a9221410a3eaf7f18fc5f21f9404075fba77256","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"496bbf339f3838c41f164238543e9fe5f1f10659cb30b68903851618464b98ba","impliedFormat":1},{"version":"5178eb4415a172c287c711dc60a619e110c3fd0b7de01ed0627e51a5336aa09c","impliedFormat":1},{"version":"ca6e5264278b53345bc1ce95f42fb0a8b733a09e3d6479c6ccfca55cdc45038c","impliedFormat":1},{"version":"9e2739b32f741859263fdba0244c194ca8e96da49b430377930b8f721d77c000","impliedFormat":1},{"version":"fb1d8e814a3eeb5101ca13515e0548e112bd1ff3fb358ece535b93e94adf5a3a","impliedFormat":1},{"version":"ffa495b17a5ef1d0399586b590bd281056cee6ce3583e34f39926f8dcc6ecdb5","impliedFormat":1},{"version":"98b18458acb46072947aabeeeab1e410f047e0cacc972943059ca5500b0a5e95","impliedFormat":1},{"version":"361e2b13c6765d7f85bb7600b48fde782b90c7c41105b7dab1f6e7871071ba20","impliedFormat":1},{"version":"c86fe861cf1b4c46a0fb7d74dffe596cf679a2e5e8b1456881313170f092e3fa","impliedFormat":1},{"version":"b6db56e4903e9c32e533b78ac85522de734b3d3a8541bf24d256058d464bf04b","impliedFormat":1},{"version":"24daa0366f837d22c94a5c0bad5bf1fd0f6b29e1fae92dc47c3072c3fdb2fbd5","impliedFormat":1},{"version":"570bb5a00836ffad3e4127f6adf581bfc4535737d8ff763a4d6f4cc877e60d98","impliedFormat":1},{"version":"889c00f3d32091841268f0b994beba4dceaa5df7573be12c2c829d7c5fbc232c","impliedFormat":1},{"version":"65f43099ded6073336e697512d9b80f2d4fec3182b7b2316abf712e84104db00","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"acf5a2ac47b59ca07afa9abbd2b31d001bf7448b041927befae2ea5b1951d9f9","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"d71291eff1e19d8762a908ba947e891af44749f3a2cbc5bd2ec4b72f72ea795f","impliedFormat":1},{"version":"c0480e03db4b816dff2682b347c95f2177699525c54e7e6f6aa8ded890b76be7","impliedFormat":1},{"version":"27ab780875bcbb65e09da7496f2ca36288b0c541abaa75c311450a077d54ec15","impliedFormat":1},{"version":"b620391fe8060cf9bedc176a4d01366e6574d7a71e0ac0ab344a4e76576fcbb8","impliedFormat":1},{"version":"380647d8f3b7f852cca6d154a376dbf8ac620a2f12b936594504a8a852e71d2f","impliedFormat":1},{"version":"208c9af9429dd3c76f5927b971263174aaa4bc7621ddec63f163640cbd3c473c","impliedFormat":1},{"version":"6459054aabb306821a043e02b89d54da508e3a6966601a41e71c166e4ea1474f","impliedFormat":1},{"version":"a23185bc5ef590c287c28a91baf280367b50ae4ea40327366ad01f6f4a8edbc5","impliedFormat":1},{"version":"bb37588926aba35c9283fe8d46ebf4e79ffe976343105f5c6d45f282793352b2","impliedFormat":1},{"version":"002eae065e6960458bda3cf695e578b0d1e2785523476f8a9170b103c709cd4f","impliedFormat":1},{"version":"c83bb0c9c5645a46c68356c2f73fdc9de339ce77f7f45a954f560c7e0b8d5ebb","impliedFormat":1},{"version":"05c97cddbaf99978f83d96de2d8af86aded9332592f08ce4a284d72d0952c391","impliedFormat":1},{"version":"72179f9dd22a86deaad4cc3490eb0fe69ee084d503b686985965654013f1391b","impliedFormat":1},{"version":"2e6114a7dd6feeef85b2c80120fdbfb59a5529c0dcc5bfa8447b6996c97a69f5","impliedFormat":1},{"version":"7b6ff760c8a240b40dab6e4419b989f06a5b782f4710d2967e67c695ef3e93c4","impliedFormat":1},{"version":"c8f004e6036aa1c764ad4ec543cf89a5c1893a9535c80ef3f2b653e370de45e6","impliedFormat":1},{"version":"dd80b1e600d00f5c6a6ba23f455b84a7db121219e68f89f10552c54ba46e4dc9","impliedFormat":1},{"version":"b064c36f35de7387d71c599bfcf28875849a1dbc733e82bd26cae3d1cd060521","impliedFormat":1},{"version":"6a148329edecbda07c21098639ef4254ef7869fb25a69f58e5d6a8b7b69d4236","impliedFormat":1},{"version":"8de9fe97fa9e00ec00666fa77ab6e91b35d25af8ca75dabcb01e14ad3299b150","impliedFormat":1},{"version":"f63ab283a1c8f5c79fabe7ca4ef85f9633339c4f0e822fce6a767f9d59282af2","impliedFormat":1},{"version":"dba114fb6a32b355a9cfc26ca2276834d72fe0e94cd2c3494005547025015369","impliedFormat":1},{"version":"a54c996c8870ef1728a2c1fa9b8eaec0bf4a8001cd2583c02dd5869289465b10","impliedFormat":1},{"version":"3e7efde639c6a6c3edb9847b3f61e308bf7a69685b92f665048c45132f51c218","impliedFormat":1},{"version":"df45ca1176e6ac211eae7ddf51336dc075c5314bc5c253651bae639defd5eec5","impliedFormat":1},{"version":"3754982006a3b32c502cff0867ca83584f7a43b1035989ca73603f400de13c96","impliedFormat":1},{"version":"a30ae9bb8a8fa7b90f24b8a0496702063ae4fe75deb27da731ed4a03b2eb6631","impliedFormat":1},{"version":"f974e4a06953682a2c15d5bd5114c0284d5abf8bc0fe4da25cb9159427b70072","impliedFormat":1},{"version":"50256e9c31318487f3752b7ac12ff365c8949953e04568009c8705db802776fb","impliedFormat":1},{"version":"7d73b24e7bf31dfb8a931ca6c4245f6bb0814dfae17e4b60c9e194a631fe5f7b","impliedFormat":1},{"version":"413586add0cfe7369b64979d4ec2ed56c3f771c0667fbde1bf1f10063ede0b08","impliedFormat":1},{"version":"06472528e998d152375ad3bd8ebcb69ff4694fd8d2effaf60a9d9f25a37a097a","impliedFormat":1},{"version":"50b5bc34ce6b12eccb76214b51aadfa56572aa6cc79c2b9455cdbb3d6c76af1d","impliedFormat":1},{"version":"b7e16ef7f646a50991119b205794ebfd3a4d8f8e0f314981ebbe991639023d0e","impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"a401617604fa1f6ce437b81689563dfdc377069e4c58465dbd8d16069aede0a5","impliedFormat":1},{"version":"e9dd71cf12123419c60dab867d44fbee5c358169f99529121eaef277f5c83531","impliedFormat":1},{"version":"5b6a189ba3a0befa1f5d9cb028eb9eec2af2089c32f04ff50e2411f63d70f25d","impliedFormat":1},{"version":"d6e73f8010935b7b4c7487b6fb13ea197cc610f0965b759bec03a561ccf8423a","impliedFormat":1},{"version":"174f3864e398f3f33f9a446a4f403d55a892aa55328cf6686135dfaf9e171657","impliedFormat":1},{"version":"824c76aec8d8c7e65769688cbee102238c0ef421ed6686f41b2a7d8e7e78a931","impliedFormat":1},{"version":"75b868be3463d5a8cfc0d9396f0a3d973b8c297401d00bfb008a42ab16643f13","impliedFormat":1},{"version":"15a234e5031b19c48a69ccc1607522d6e4b50f57d308ecb7fe863d44cd9f9eb3","impliedFormat":1},{"version":"d682336018141807fb602709e2d95a192828fcb8d5ba06dda3833a8ea98f69e3","impliedFormat":1},{"version":"6124e973eab8c52cabf3c07575204efc1784aca6b0a30c79eb85fe240a857efa","impliedFormat":1},{"version":"0d891735a21edc75df51f3eb995e18149e119d1ce22fd40db2b260c5960b914e","impliedFormat":1},{"version":"3b414b99a73171e1c4b7b7714e26b87d6c5cb03d200352da5342ab4088a54c85","impliedFormat":1},{"version":"4fbd3116e00ed3a6410499924b6403cc9367fdca303e34838129b328058ede40","impliedFormat":1},{"version":"b01bd582a6e41457bc56e6f0f9de4cb17f33f5f3843a7cf8210ac9c18472fb0f","impliedFormat":1},{"version":"0a437ae178f999b46b6153d79095b60c42c996bc0458c04955f1c996dc68b971","impliedFormat":1},{"version":"74b2a5e5197bd0f2e0077a1ea7c07455bbea67b87b0869d9786d55104006784f","impliedFormat":1},{"version":"4a7baeb6325920044f66c0f8e5e6f1f52e06e6d87588d837bdf44feb6f35c664","impliedFormat":1},{"version":"6dcf60530c25194a9ee0962230e874ff29d34c59605d8e069a49928759a17e0a","impliedFormat":1},{"version":"7274fbffbd7c9589d8d0ffba68157237afd5cecff1e99881ea3399127e60572f","impliedFormat":1},{"version":"1a42d2ec31a1fe62fdc51591768695ed4a2dc64c01be113e7ff22890bebb5e3f","impliedFormat":1},{"version":"1a82deef4c1d39f6882f28d275cad4c01f907b9b39be9cbc472fcf2cf051e05b","impliedFormat":1},{"version":"c5426dbfc1cf90532f66965a7aa8c1136a78d4d0f96d8180ecbfc11d7722f1a5","impliedFormat":1},{"version":"65a15fc47900787c0bd18b603afb98d33ede930bed1798fc984d5ebb78b26cf9","impliedFormat":1},{"version":"9d202701f6e0744adb6314d03d2eb8fc994798fc83d91b691b75b07626a69801","impliedFormat":1},{"version":"de9d2df7663e64e3a91bf495f315a7577e23ba088f2949d5ce9ec96f44fba37d","impliedFormat":1},{"version":"c7af78a2ea7cb1cd009cfb5bdb48cd0b03dad3b54f6da7aab615c2e9e9d570c5","impliedFormat":1},{"version":"1ee45496b5f8bdee6f7abc233355898e5bf9bd51255db65f5ff7ede617ca0027","impliedFormat":1},{"version":"0c7c947ff881c4274c0800deaa0086971e0bfe51f89a33bd3048eaa3792d4876","affectsGlobalScope":true,"impliedFormat":1},{"version":"db01d18853469bcb5601b9fc9826931cc84cc1a1944b33cad76fd6f1e3d8c544","affectsGlobalScope":true,"impliedFormat":1},{"version":"a8f8e6ab2fa07b45251f403548b78eaf2022f3c2254df3dc186cb2671fe4996d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa6c12a7c0f6b84d512f200690bfc74819e99efae69e4c95c4cd30f6884c526e","impliedFormat":1},{"version":"f1c32f9ce9c497da4dc215c3bc84b722ea02497d35f9134db3bb40a8d918b92b","impliedFormat":1},{"version":"b73c319af2cc3ef8f6421308a250f328836531ea3761823b4cabbd133047aefa","affectsGlobalScope":true,"impliedFormat":1},{"version":"e433b0337b8106909e7953015e8fa3f2d30797cea27141d1c5b135365bb975a6","impliedFormat":1},{"version":"15b36126e0089bfef173ab61329e8286ce74af5e809d8a72edcafd0cc049057f","impliedFormat":1},{"version":"ddff7fc6edbdc5163a09e22bf8df7bef75f75369ebd7ecea95ba55c4386e2441","impliedFormat":1},{"version":"106c6025f1d99fd468fd8bf6e5bda724e11e5905a4076c5d29790b6c3745e50c","impliedFormat":1},{"version":"a57b1802794433adec9ff3fed12aa79d671faed86c49b09e02e1ac41b4f1d33a","impliedFormat":1},{"version":"ad10d4f0517599cdeca7755b930f148804e3e0e5b5a3847adce0f1f71bbccd74","impliedFormat":1},{"version":"1042064ece5bb47d6aba91648fbe0635c17c600ebdf567588b4ca715602f0a9d","impliedFormat":1},{"version":"c49469a5349b3cc1965710b5b0f98ed6c028686aa8450bcb3796728873eb923e","impliedFormat":1},{"version":"4a889f2c763edb4d55cb624257272ac10d04a1cad2ed2948b10ed4a7fda2a428","impliedFormat":1},{"version":"7bb79aa2fead87d9d56294ef71e056487e848d7b550c9a367523ee5416c44cfa","impliedFormat":1},{"version":"72d63643a657c02d3e51cd99a08b47c9b020a565c55f246907050d3c8a5e77fb","impliedFormat":1},{"version":"1d415445ea58f8033ba199703e55ff7483c52ac6742075b803bd3e7bbe9f5d61","impliedFormat":1},{"version":"d6406c629bb3efc31aedb2de809bef471e475c86c7e67f3ef9b676b5d7e0d6b2","impliedFormat":1},{"version":"27ff4196654e6373c9af16b6165120e2dd2169f9ad6abb5c935af5abd8c7938c","impliedFormat":1},{"version":"71d8ba39a9e024d9e4bb922464d18542ed8d2c25ee78efa7890c27213cc6e5d3","impliedFormat":1},{"version":"8c030e515014c10a2b98f9f48408e3ba18023dfd3f56e3312c6c2f3ae1f55a16","impliedFormat":1},{"version":"dafc31e9e8751f437122eb8582b93d477e002839864410ff782504a12f2a550c","impliedFormat":1},{"version":"754498c5208ce3c5134f6eabd49b25cf5e1a042373515718953581636491f3c3","impliedFormat":1},{"version":"9c82171d836c47486074e4ca8e059735bf97b205e70b196535b5efd40cbe1bc5","impliedFormat":1},{"version":"f56bdc6884648806d34bc66d31cdb787c4718d04105ce2cd88535db214631f82","impliedFormat":1},{"version":"633d58a237f4bb25ec7d565e4ffa32cecdcee8660ac12189c4351c52557cee9e","impliedFormat":1},{"version":"2e4f37ffe8862b14d8e24ae8763daaa8340c0df0b859d9a9733def0eee7562d9","impliedFormat":1},{"version":"13283350547389802aa35d9f2188effaeac805499169a06ef5cd77ce2a0bd63f","impliedFormat":1},{"version":"ce791f6ea807560f08065d1af6014581eeb54a05abd73294777a281b6dfd73c2","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"49f95e989b4632c6c2a578cc0078ee19a5831832d79cc59abecf5160ea71abad","impliedFormat":1},{"version":"9666533332f26e8995e4d6fe472bdeec9f15d405693723e6497bf94120c566c8","impliedFormat":1},{"version":"ce0df82a9ae6f914ba08409d4d883983cc08e6d59eb2df02d8e4d68309e7848b","impliedFormat":1},{"version":"796273b2edc72e78a04e86d7c58ae94d370ab93a0ddf40b1aa85a37a1c29ecd7","impliedFormat":1},{"version":"5df15a69187d737d6d8d066e189ae4f97e41f4d53712a46b2710ff9f8563ec9f","impliedFormat":1},{"version":"e17cd049a1448de4944800399daa4a64c5db8657cc9be7ef46be66e2a2cd0e7c","impliedFormat":1},{"version":"43fa6ea8714e18adc312b30450b13562949ba2f205a1972a459180fa54471018","impliedFormat":1},{"version":"6e89c2c177347d90916bad67714d0fb473f7e37fb3ce912f4ed521fe2892cd0d","impliedFormat":1},{"version":"43ba4f2fa8c698f5c304d21a3ef596741e8e85a810b7c1f9b692653791d8d97a","impliedFormat":1},{"version":"4d4927cbee21750904af7acf940c5e3c491b4d5ebc676530211e389dd375607a","impliedFormat":1},{"version":"72105519d0390262cf0abe84cf41c926ade0ff475d35eb21307b2f94de985778","impliedFormat":1},{"version":"8a97e578a9bc40eb4f1b0ca78f476f2e9154ecbbfd5567ee72943bab37fc156a","impliedFormat":1},{"version":"c857e0aae3f5f444abd791ec81206020fbcc1223e187316677e026d1c1d6fe08","impliedFormat":1},{"version":"ccf6dd45b708fb74ba9ed0f2478d4eb9195c9dfef0ff83a6092fa3cf2ff53b4f","impliedFormat":1},{"version":"2d7db1d73456e8c5075387d4240c29a2a900847f9c1bff106a2e490da8fbd457","impliedFormat":1},{"version":"2b15c805f48e4e970f8ec0b1915f22d13ca6212375e8987663e2ef5f0205e832","impliedFormat":1},{"version":"f22d05663d873ee7a600faf78abb67f3f719d32266803440cf11d5db7ac0cab2","impliedFormat":1},{"version":"d93c544ad20197b3976b0716c6d5cd5994e71165985d31dcab6e1f77feb4b8f2","impliedFormat":1},{"version":"35069c2c417bd7443ae7c7cafd1de02f665bf015479fec998985ffbbf500628c","impliedFormat":1},{"version":"a8b1c79a833ee148251e88a2553d02ce1641d71d2921cce28e79678f3d8b96aa","impliedFormat":1},{"version":"126d4f950d2bba0bd45b3a86c76554d4126c16339e257e6d2fabf8b6bf1ce00c","impliedFormat":1},{"version":"7e0b7f91c5ab6e33f511efc640d36e6f933510b11be24f98836a20a2dc914c2d","impliedFormat":1},{"version":"045b752f44bf9bbdcaffd882424ab0e15cb8d11fa94e1448942e338c8ef19fba","impliedFormat":1},{"version":"2894c56cad581928bb37607810af011764a2f511f575d28c9f4af0f2ef02d1ab","impliedFormat":1},{"version":"0a72186f94215d020cb386f7dca81d7495ab6c17066eb07d0f44a5bf33c1b21a","impliedFormat":1},{"version":"2d3cc2211f352f46ea6b7cf2c751c141ffcdf514d6e7ae7ee20b7b6742da313f","impliedFormat":1},{"version":"c75445151ff8b77d9923191efed7203985b1a9e09eccf4b054e7be864e27923d","impliedFormat":1},{"version":"0aedb02516baf3e66b2c1db9fef50666d6ed257edac0f866ea32f1aa05aa474f","impliedFormat":1},{"version":"fa8a8fbf91ee2a4779496225f0312aac6635b0f21aa09cdafa4283fe32d519c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"0e8aef93d79b000deb6ec336b5645c87de167168e184e84521886f9ecc69a4b5","impliedFormat":1},{"version":"56ccb49443bfb72e5952f7012f0de1a8679f9f75fc93a5c1ac0bafb28725fc5f","impliedFormat":1},{"version":"d90b9f1520366d713a73bd30c5a9eb0040d0fb6076aff370796bc776fd705943","impliedFormat":1},{"version":"05321b823dd3781d0b6aac8700bfdc0c9181d56479fe52ba6a40c9196fd661a8","impliedFormat":1},{"version":"736a8712572e21ee73337055ce15edb08142fc0f59cd5410af4466d04beff0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"bef86adb77316505c6b471da1d9b8c9e428867c2566270e8894d4d773a1c4dc2","impliedFormat":1},{"version":"de7052bfee2981443498239a90c04ea5cc07065d5b9bb61b12cb6c84313ad4ef","impliedFormat":1},{"version":"a3e7d932dc9c09daa99141a8e4800fc6c58c625af0d4bbb017773dc36da75426","impliedFormat":1},{"version":"43e96a3d5d1411ab40ba2f61d6a3192e58177bcf3b133a80ad2a16591611726d","impliedFormat":1},{"version":"4a2edd238d9104eac35b60d727f1123de5062f452b70ed8e0366cb36387dfdfd","impliedFormat":1},{"version":"ca921bf56756cb6fe957f6af693a35251b134fb932dc13f3dfff0bb7106f80b4","impliedFormat":1},{"version":"fee92c97f1aa59eb7098a0cc34ff4df7e6b11bae71526aca84359a2575f313d8","impliedFormat":1},{"version":"0bd0297484aacea217d0b76e55452862da3c5d9e33b24430e0719d1161657225","impliedFormat":1},{"version":"2ab6d334bcbf2aff3acfc4fd8c73ecd82b981d3c3aa47b3f3b89281772286904","impliedFormat":1},{"version":"d07cbc787a997d83f7bde3877fec5fb5b12ce8c1b7047eb792996ed9726b4dde","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"4805f6161c2c8cefb8d3b8bd96a080c0fe8dbc9315f6ad2e53238f9a79e528a6","impliedFormat":1},{"version":"b83cb14474fa60c5f3ec660146b97d122f0735627f80d82dd03e8caa39b4388c","impliedFormat":1},{"version":"f374cb24e93e7798c4d9e83ff872fa52d2cdb36306392b840a6ddf46cb925cb6","impliedFormat":1},{"version":"49179c6a23701c642bd99abe30d996919748014848b738d8e85181fc159685ff","impliedFormat":1},{"version":"b73cbf0a72c8800cf8f96a9acfe94f3ad32ca71342a8908b8ae484d61113f647","impliedFormat":1},{"version":"bae6dd176832f6423966647382c0d7ba9e63f8c167522f09a982f086cd4e8b23","impliedFormat":1},{"version":"20865ac316b8893c1a0cc383ccfc1801443fbcc2a7255be166cf90d03fac88c9","impliedFormat":1},{"version":"c9958eb32126a3843deedda8c22fb97024aa5d6dd588b90af2d7f2bfac540f23","impliedFormat":1},{"version":"461d0ad8ae5f2ff981778af912ba71b37a8426a33301daa00f21c6ccb27f8156","impliedFormat":1},{"version":"e927c2c13c4eaf0a7f17e6022eee8519eb29ef42c4c13a31e81a611ab8c95577","impliedFormat":1},{"version":"fcafff163ca5e66d3b87126e756e1b6dfa8c526aa9cd2a2b0a9da837d81bbd72","impliedFormat":1},{"version":"70246ad95ad8a22bdfe806cb5d383a26c0c6e58e7207ab9c431f1cb175aca657","impliedFormat":1},{"version":"f00f3aa5d64ff46e600648b55a79dcd1333458f7a10da2ed594d9f0a44b76d0b","impliedFormat":1},{"version":"772d8d5eb158b6c92412c03228bd9902ccb1457d7a705b8129814a5d1a6308fc","impliedFormat":1},{"version":"45490817629431853543adcb91c0673c25af52a456479588b6486daba34f68bb","impliedFormat":1},{"version":"802e797bcab5663b2c9f63f51bdf67eff7c41bc64c0fd65e6da3e7941359e2f7","impliedFormat":1},{"version":"8b4327413e5af38cd8cb97c59f48c3c866015d5d642f28518e3a891c469f240e","impliedFormat":1},{"version":"8514c62ce38e58457d967e9e73f128eedc1378115f712b9eef7127f7c88f82ae","impliedFormat":1},{"version":"f1289e05358c546a5b664fbb35a27738954ec2cc6eb4137350353099d154fc62","impliedFormat":1},{"version":"4b20fcf10a5413680e39f5666464859fc56b1003e7dfe2405ced82371ebd49b6","impliedFormat":1},{"version":"1d17ba45cfbe77a9c7e0df92f7d95f3eefd49ee23d1104d0548b215be56945ad","impliedFormat":1},{"version":"f7d628893c9fa52ba3ab01bcb5e79191636c4331ee5667ecc6373cbccff8ae12","impliedFormat":1},{"version":"1d879125d1ec570bf04bc1f362fdbe0cb538315c7ac4bcfcdf0c1e9670846aa6","impliedFormat":1},{"version":"e16344db9b8ee59d41abdb3a61e4470955b5712c0ee869fb47112e152aabe142","impliedFormat":1},{"version":"46273e8c29816125d0d0b56ce9a849cc77f60f9a5ba627447501d214466f0ff3","impliedFormat":1},{"version":"d663134457d8d669ae0df34eabd57028bddc04fc444c4bc04bc5215afc91e1f4","impliedFormat":1},{"version":"144bc326e90b894d1ec78a2af3ffb2eb3733f4d96761db0ca0b6239a8285f972","impliedFormat":1},{"version":"3af3584f79c57853028ef9421ec172539e1fe01853296dc05a9d615ade4ffaf6","impliedFormat":1},{"version":"f82579d87701d639ff4e3930a9b24f4ee13ca74221a9a3a792feb47f01881a9c","impliedFormat":1},{"version":"d7e5d5245a8ba34a274717d085174b2c9827722778129b0081fefd341cca8f55","impliedFormat":1},{"version":"d9d32f94056181c31f553b32ce41d0ef75004912e27450738d57efcd2409c324","impliedFormat":1},{"version":"752513f35f6cff294ffe02d6027c41373adf7bfa35e593dbfd53d95c203635ee","impliedFormat":1},{"version":"6c800b281b9e89e69165fd11536195488de3ff53004e55905e6c0059a2d8591e","impliedFormat":1},{"version":"7d4254b4c6c67a29d5e7f65e67d72540480ac2cfb041ca484847f5ae70480b62","impliedFormat":1},{"version":"1a7e2ea171726446850ec72f4d1525d547ff7e86724cc9e7eec509725752a758","impliedFormat":1},{"version":"8c901126d73f09ecdea4785e9a187d1ac4e793e07da308009db04a7283ec2f37","impliedFormat":1},{"version":"db97922b767bd2675fdfa71e08b49c38b7d2c847a1cc4a7274cb77be23b026f1","impliedFormat":1},{"version":"aab290b8e4b7c399f2c09b957666fc95335eb4522b2dd9ead1bf0cb64da6d6ee","impliedFormat":1},{"version":"94fe3281392e1015b22f39535878610b4fa6f1388dc8d78746be3bc4e4bb8950","impliedFormat":1},{"version":"2652448ac55a2010a1f71dd141f828b682298d39728f9871e1cdf8696ef443fd","impliedFormat":1},{"version":"06c25ddfc2242bd06c19f66c9eae4c46d937349a267810f89783680a1d7b5259","impliedFormat":1},{"version":"120599fd965257b1f4d0ff794bc696162832d9d8467224f4665f713a3119078b","impliedFormat":1},{"version":"5433f33b0a20300cca35d2f229a7fc20b0e8477c44be2affeb21cb464af60c76","impliedFormat":1},{"version":"db036c56f79186da50af66511d37d9fe77fa6793381927292d17f81f787bb195","impliedFormat":1},{"version":"bd4131091b773973ca5d2326c60b789ab1f5e02d8843b3587effe6e1ea7c9d86","impliedFormat":1},{"version":"c7f6485931085bf010fbaf46880a9b9ec1a285ad9dc8c695a9e936f5a48f34b4","impliedFormat":1},{"version":"14f6b927888a1112d662877a5966b05ac1bf7ed25d6c84386db4c23c95a5363b","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"0427df5c06fafc5fe126d14b9becd24160a288deff40e838bfbd92a35f8d0d00","impliedFormat":1},{"version":"90c54a02432d04e4246c87736e53a6a83084357acfeeba7a489c5422b22f5c7a","impliedFormat":1},{"version":"49c346823ba6d4b12278c12c977fb3a31c06b9ca719015978cb145eb86da1c61","impliedFormat":1},{"version":"bfac6e50eaa7e73bb66b7e052c38fdc8ccfc8dbde2777648642af33cf349f7f1","impliedFormat":1},{"version":"92f7c1a4da7fbfd67a2228d1687d5c2e1faa0ba865a94d3550a3941d7527a45d","impliedFormat":1},{"version":"f53b120213a9289d9a26f5af90c4c686dd71d91487a0aa5451a38366c70dc64b","impliedFormat":1},{"version":"83fe880c090afe485a5c02262c0b7cdd76a299a50c48d9bde02be8e908fb4ae6","impliedFormat":1},{"version":"0a372c2d12a259da78e21b25974d2878502f14d89c6d16b97bd9c5017ab1bc12","impliedFormat":1},{"version":"57d67b72e06059adc5e9454de26bbfe567d412b962a501d263c75c2db430f40e","impliedFormat":1},{"version":"6511e4503cf74c469c60aafd6589e4d14d5eb0a25f9bf043dcbecdf65f261972","impliedFormat":1},{"version":"ec1ca97598eda26b7a5e6c8053623acbd88e43be7c4d29c77ccd57abc4c43999","impliedFormat":1},{"version":"6e2261cd9836b2c25eecb13940d92c024ebed7f8efe23c4b084145cd3a13b8a6","impliedFormat":1},{"version":"a67b87d0281c97dfc1197ef28dfe397fc2c865ccd41f7e32b53f647184cc7307","impliedFormat":1},{"version":"771ffb773f1ddd562492a6b9aaca648192ac3f056f0e1d997678ff97dbb6bf9b","impliedFormat":1},{"version":"232f70c0cf2b432f3a6e56a8dc3417103eb162292a9fd376d51a3a9ea5fbbf6f","impliedFormat":1},{"version":"a47e6d954d22dd9ebb802e7e431b560ed7c581e79fb885e44dc92ed4f60d4c07","impliedFormat":1},{"version":"f019e57d2491c159d47a107fd90219a1734bdd2e25cd8d1db3c8fae5c6b414c4","impliedFormat":1},{"version":"8a0e762ceb20c7e72504feef83d709468a70af4abccb304f32d6b9bac1129b2c","impliedFormat":1},{"version":"d1c9bf292a54312888a77bb19dba5e2503ad803f5393beafd45d78d2f4fe9b48","impliedFormat":1},{"version":"9252d498a77517aab5d8d4b5eb9d71e4b225bbc7123df9713e08181de63180f6","impliedFormat":1},{"version":"cb8d8ef7b9ce8ed3e6f1c814fcbf3f90dab0cb8863079236784fc350746e27c4","impliedFormat":1},{"version":"35e6379c3f7cb27b111ad4c1aa69538fd8e788ab737b8ff7596a1b40e96f4f90","impliedFormat":1},{"version":"1fffe726740f9787f15b532e1dc870af3cd964dbe29e191e76121aa3dd8693f2","impliedFormat":1},{"version":"3be035da7bee86b4c3abf392e0edaa44fc6e45092995eefe36b39118c8a84068","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f828825d077c2fa0ea606649faeb122749273a353daab23924fe674e98ba44c","impliedFormat":1},{"version":"2896c2e673a5d3bd9b4246811f79486a073cbb03950c3d252fba10003c57411a","impliedFormat":1},{"version":"616775f16134fa9d01fc677ad3f76e68c051a056c22ab552c64cc281a9686790","impliedFormat":1},{"version":"65c24a8baa2cca1de069a0ba9fba82a173690f52d7e2d0f1f7542d59d5eb4db0","impliedFormat":1},{"version":"f9fe6af238339a0e5f7563acee3178f51db37f32a2e7c09f85273098cee7ec49","impliedFormat":1},{"version":"407a06ba04eede4074eec470ecba2784cbb3bf4e7de56833b097dd90a2aa0651","impliedFormat":1},{"version":"77e71242e71ebf8528c5802993697878f0533db8f2299b4d36aa015bae08a79c","impliedFormat":1},{"version":"98a787be42bd92f8c2a37d7df5f13e5992da0d967fab794adbb7ee18370f9849","impliedFormat":1},{"version":"5c96bad5f78466785cdad664c056e9e2802d5482ca5f862ed19ba34ffbb7b3a4","impliedFormat":1},{"version":"81d8603ac527e75cfec72bb9391228b58f161c2b33514a9d814c7f3ebd3ef466","impliedFormat":1},{"version":"5f3dc10ae646f375776b4e028d2bed039a93eebbba105694d8b910feebbe8b9c","impliedFormat":1},{"version":"bb0cd7862b72f5eba39909c9889d566e198fcaddf7207c16737d0c2246112678","impliedFormat":1},{"version":"4545c1a1ceca170d5d83452dd7c4994644c35cf676a671412601689d9a62da35","impliedFormat":1},{"version":"320f4091e33548b554d2214ce5fc31c96631b513dffa806e2e3a60766c8c49d9","impliedFormat":1},{"version":"a2d648d333cf67b9aeac5d81a1a379d563a8ffa91ddd61c6179f68de724260ff","impliedFormat":1},{"version":"d90d5f524de38889d1e1dbc2aeef00060d779f8688c02766ddb9ca195e4a713d","impliedFormat":1},{"version":"a3f41ed1b4f2fc3049394b945a68ae4fdefd49fa1739c32f149d32c0545d67f5","impliedFormat":1},{"version":"bad68fd0401eb90fe7da408565c8aee9c7a7021c2577aec92fa1382e8876071a","impliedFormat":1},{"version":"47699512e6d8bebf7be488182427189f999affe3addc1c87c882d36b7f2d0b0e","impliedFormat":1},{"version":"fec01479923e169fb52bd4f668dbeef1d7a7ea6e6d491e15617b46f2cacfa37d","impliedFormat":1},{"version":"8a8fb3097ba52f0ae6530ec6ab34e43e316506eb1d9aa29420a4b1e92a81442d","impliedFormat":1},{"version":"44e09c831fefb6fe59b8e65ad8f68a7ecc0e708d152cfcbe7ba6d6080c31c61e","impliedFormat":1},{"version":"1c0a98de1323051010ce5b958ad47bc1c007f7921973123c999300e2b7b0ecc0","impliedFormat":1},{"version":"4655709c9cb3fd6db2b866cab7c418c40ed9533ce8ea4b66b5f17ec2feea46a9","impliedFormat":1},{"version":"87affad8e2243635d3a191fa72ef896842748d812e973b7510a55c6200b3c2a4","impliedFormat":1},{"version":"ad036a85efcd9e5b4f7dd5c1a7362c8478f9a3b6c3554654ca24a29aa850a9c5","impliedFormat":1},{"version":"fedebeae32c5cdd1a85b4e0504a01996e4a8adf3dfa72876920d3dd6e42978e7","impliedFormat":1},{"version":"3eecb25bb467a948c04874d70452b14ae7edb707660aac17dc053e42f2088b00","impliedFormat":1},{"version":"cdf21eee8007e339b1b9945abf4a7b44930b1d695cc528459e68a3adc39a622e","impliedFormat":1},{"version":"330896c1a2b9693edd617be24fbf9e5895d6e18c7955d6c08f028f272b37314d","impliedFormat":1},{"version":"1d9c0a9a6df4e8f29dc84c25c5aa0bb1da5456ebede7a03e03df08bb8b27bae6","impliedFormat":1},{"version":"84380af21da938a567c65ef95aefb5354f676368ee1a1cbb4cae81604a4c7d17","impliedFormat":1},{"version":"1af3e1f2a5d1332e136f8b0b95c0e6c0a02aaabd5092b36b64f3042a03debf28","impliedFormat":1},{"version":"30d8da250766efa99490fc02801047c2c6d72dd0da1bba6581c7e80d1d8842a4","impliedFormat":1},{"version":"03566202f5553bd2d9de22dfab0c61aa163cabb64f0223c08431fb3fc8f70280","impliedFormat":1},{"version":"5f0292a40df210ab94b9fb44c8b775c51e96777e14e073900e392b295ca1061b","impliedFormat":1},{"version":"bc9ee0192f056b3d5527bcd78dc3f9e527a9ba2bdc0a2c296fbc9027147df4b2","impliedFormat":1},{"version":"8627ad129bcf56e82adff0ab5951627c993937aa99f5949c33240d690088b803","impliedFormat":1},{"version":"1de80059b8078ea5749941c9f863aa970b4735bdbb003be4925c853a8b6b4450","impliedFormat":1},{"version":"1d079c37fa53e3c21ed3fa214a27507bda9991f2a41458705b19ed8c2b61173d","impliedFormat":1},{"version":"5bf5c7a44e779790d1eb54c234b668b15e34affa95e78eada73e5757f61ed76a","impliedFormat":1},{"version":"5835a6e0d7cd2738e56b671af0e561e7c1b4fb77751383672f4b009f4e161d70","impliedFormat":1},{"version":"5c634644d45a1b6bc7b05e71e05e52ec04f3d73d9ac85d5927f647a5f965181a","impliedFormat":1},{"version":"4b7f74b772140395e7af67c4841be1ab867c11b3b82a51b1aeb692822b76c872","impliedFormat":1},{"version":"27be6622e2922a1b412eb057faa854831b95db9db5035c3f6d4b677b902ab3b7","impliedFormat":1},{"version":"a68d4b3182e8d776cdede7ac9630c209a7bfbb59191f99a52479151816ef9f9e","impliedFormat":99},{"version":"39644b343e4e3d748344af8182111e3bbc594930fff0170256567e13bbdbebb0","impliedFormat":99},{"version":"ed7fd5160b47b0de3b1571c5c5578e8e7e3314e33ae0b8ea85a895774ee64749","impliedFormat":99},{"version":"63a7595a5015e65262557f883463f934904959da563b4f788306f699411e9bac","impliedFormat":1},{"version":"ecbaf0da125974be39c0aac869e403f72f033a4e7fd0d8cd821a8349b4159628","impliedFormat":1},{"version":"4ba137d6553965703b6b55fd2000b4e07ba365f8caeb0359162ad7247f9707a6","impliedFormat":1},{"version":"ceec3c81b2d81f5e3b855d9367c1d4c664ab5046dff8fd56552df015b7ccbe8f","affectsGlobalScope":true,"impliedFormat":1},{"version":"8fac4a15690b27612d8474fb2fc7cc00388df52d169791b78d1a3645d60b4c8b","affectsGlobalScope":true,"impliedFormat":1},{"version":"064ac1c2ac4b2867c2ceaa74bbdce0cb6a4c16e7c31a6497097159c18f74aa7c","impliedFormat":1},{"version":"3dc14e1ab45e497e5d5e4295271d54ff689aeae00b4277979fdd10fa563540ae","impliedFormat":1},{"version":"1d63055b690a582006435ddd3aa9c03aac16a696fac77ce2ed808f3e5a06efab","impliedFormat":1},{"version":"b789bf89eb19c777ed1e956dbad0925ca795701552d22e68fd130a032008b9f9","impliedFormat":1},"f4e8976c19fc926644d72610bf1058bd6bf52add97e46a02bc0b912a751625c0",{"version":"3af049307a115d73c4114c279b74fb03e677d043da80d3ca6360b5d49b8fb228","signature":"435a1e418e8338be3f39614b96b81a9aa2700bc8c27bc6b98f064ff9ce17c363"},{"version":"402e5c534fb2b85fa771170595db3ac0dd532112c8fa44fc23f233bc6967488b","impliedFormat":1},{"version":"8885cf05f3e2abf117590bbb951dcf6359e3e5ac462af1c901cfd24c6a6472e2","impliedFormat":1},{"version":"333caa2bfff7f06017f114de738050dd99a765c7eb16571c6d25a38c0d5365dc","impliedFormat":1},{"version":"e61df3640a38d535fd4bc9f4a53aef17c296b58dc4b6394fd576b808dd2fe5e6","impliedFormat":1},{"version":"459920181700cec8cbdf2a5faca127f3f17fd8dd9d9e577ed3f5f3af5d12a2e4","impliedFormat":1},{"version":"4719c209b9c00b579553859407a7e5dcfaa1c472994bd62aa5dd3cc0757eb077","impliedFormat":1},{"version":"7ec359bbc29b69d4063fe7dad0baaf35f1856f914db16b3f4f6e3e1bca4099fa","impliedFormat":1},{"version":"70790a7f0040993ca66ab8a07a059a0f8256e7bb57d968ae945f696cbff4ac7a","impliedFormat":1},{"version":"d1b9a81e99a0050ca7f2d98d7eedc6cda768f0eb9fa90b602e7107433e64c04c","impliedFormat":1},{"version":"a022503e75d6953d0e82c2c564508a5c7f8556fad5d7f971372d2d40479e4034","impliedFormat":1},{"version":"b215c4f0096f108020f666ffcc1f072c81e9f2f95464e894a5d5f34c5ea2a8b1","impliedFormat":1},{"version":"644491cde678bd462bb922c1d0cfab8f17d626b195ccb7f008612dc31f445d2d","impliedFormat":1},{"version":"dfe54dab1fa4961a6bcfba68c4ca955f8b5bbeb5f2ab3c915aa7adaa2eabc03a","impliedFormat":1},{"version":"1251d53755b03cde02466064260bb88fd83c30006a46395b7d9167340bc59b73","impliedFormat":1},{"version":"47865c5e695a382a916b1eedda1b6523145426e48a2eae4647e96b3b5e52024f","impliedFormat":1},{"version":"4cdf27e29feae6c7826cdd5c91751cc35559125e8304f9e7aed8faef97dcf572","impliedFormat":1},{"version":"331b8f71bfae1df25d564f5ea9ee65a0d847c4a94baa45925b6f38c55c7039bf","impliedFormat":1},{"version":"2a771d907aebf9391ac1f50e4ad37952943515eeea0dcc7e78aa08f508294668","impliedFormat":1},{"version":"0146fd6262c3fd3da51cb0254bb6b9a4e42931eb2f56329edd4c199cb9aaf804","impliedFormat":1},{"version":"183f480885db5caa5a8acb833c2be04f98056bdcc5fb29e969ff86e07efe57ab","impliedFormat":99},{"version":"b558c9a18ea4e6e4157124465c3ef1063e64640da139e67be5edb22f534f2f08","impliedFormat":1},{"version":"01374379f82be05d25c08d2f30779fa4a4c41895a18b93b33f14aeef51768692","impliedFormat":1},{"version":"b0dee183d4e65cf938242efaf3d833c6b645afb35039d058496965014f158141","impliedFormat":1},{"version":"c0bbbf84d3fbd85dd60d040c81e8964cc00e38124a52e9c5dcdedf45fea3f213","impliedFormat":1},{"version":"8c62ca2967cfb122b2e4353ce4e385239843de4887de67c268d550c65f09644f","signature":"f65ce75c9085571e6321abf2bf9833709f4897e381f89e9925521833dbb7ab16"},{"version":"b3dc1ccda573456047299229b83982dc36209dbb1be9eab9175cc4214afe4859","signature":"5f5303388c23daf221df682ba0e6ed13924ad3a925fae5ec71f4cdfb6adf1b79"},{"version":"5bc45cb0bf04c7a4fa0581fa03fdfa1eaf7bab0bfe7d18471ea4aa9952a28e46","signature":"50c30bece3e42fffcf518f49efb65f83ecbff451d51dbe0c714309cf204f970c"},{"version":"6f35ec0b58532380212ff15a3da2f96d2146b9895c70cf67d6dcda8385b4bd57","signature":"ebc450cf4888573aef03e1d85e34f8587789f7436e4c80a3f1417a66429a9a29"},{"version":"4654f66c69f3da8a2848cfd68b75a23230a8d62b6eceebfcf214e0d623b6e7b4","signature":"a8c7595b174fd808b6caeadc7a886d13d99c17acf3e110f04a47398699fe9e81"},{"version":"920848def0a48005945fb3e9979bc4f6b6153d13f4d5a5fe01eb27bd66b5d1f5","signature":"d3331d80be96834d382c284fcf3bd31dfdf9c82a15ab0a13c1e7e27a78205925"},{"version":"452d5c087034e210b706bd1a31520e6c9bf2b41d40775007b7896e610a432eff","signature":"6b4352de838d10653b627e47b138092f28f39328fa5678f3b3a0b06aea884cfa"},{"version":"9048e66f9ee0f6c98bbd6993aecc94b5e1566c665c7b767779dc71d05a232a87","signature":"759805e99c9e10dfbad43113e0a79ea634d265b2332e6d3f309026afdb66807b"},{"version":"a74cf061f6bd3b8209b82a1e118ca0d139ff08d0ff3c8a162ff3ac0e8cc698b1","signature":"c0a5e3199ce900caee714b0cc2ca870402dfff4b48f53553e18882ecb738047f"},{"version":"ffce762ea3b1bdd900efbb8f1cec0b8fb855691fa748d189f86ff0d60f3caa63","signature":"77c9adae7e0872bbd34729c05aa562718c0a3d603c9a436737327935f58ac85b"},{"version":"ae00023c4fb6d8310666f6f047f455331ded1cd758182decd54d7f3f2bdc7e73","impliedFormat":1},{"version":"1e380bb9f7438543101f54ecd1b5c0b8216eea8d5650e98ec95e4c9aa116cdd5","impliedFormat":1},{"version":"d0b73f1df56fbd242fd78d55b29e1de340548048f19ac104fe2b201dc49529ff","impliedFormat":1},{"version":"287fa50a234cad0b96ebba3713fe57a7115f7b657dc44638fbce57c45ac71397","impliedFormat":1},{"version":"c42852405dff422a8b20dd3a9ada0130237ee9398a783151aa0f73474c246aeb","impliedFormat":1},{"version":"d3260c8d6fb8ab6b92c412c3c0b793dc524dbcc6737300cd4cf22198122479a4","impliedFormat":1},{"version":"f7ebfaa84846f84bd01665f4dd3773ff2b1c38c7992fd1042cd9132bf0afc82d","impliedFormat":1},{"version":"b03829b7141ddbc20c9da5de4f8021ef99b57b169e753d28ba5582d02bc9d5da","impliedFormat":1},{"version":"d1c49ba10ba80d18dc288f021c86c496d5581112ef6e107e9e9c20f746ee7b0a","impliedFormat":1},{"version":"f3c5ea78b54672f9440be1a2ae3f6aeb0184f6a4f641c3cca51949e9cd00a258","impliedFormat":1},{"version":"9ad68f979b78ae71d8cd991b87b5317b5959867dfe5970de811ec40a09d6e1f4","impliedFormat":1},{"version":"d91e9e625a2903192e9a63361b89330f0d95c340d9bb4602b89f485e9f93cdd6","impliedFormat":1},{"version":"176a47d228081ad51c1d62769b77b064abbeb6827115033cce1cdeb340a8d46c","impliedFormat":1},{"version":"b5eaf1cc561810ebfb369039a6e77a4d0f74bf3162d65421a52fc5b9b5158c2c","impliedFormat":1},{"version":"7d12ec184af986cc2a0fdc97f6c7f5a547ecdd8434856a323ea7ff064e15f858","impliedFormat":1},{"version":"8535298578313ba0f71a41619e193767baec9ccf6d8fad90bc144bcba444307a","impliedFormat":1},{"version":"50bfcce750d2a77d46e96e1d6c80f2a6309eb86f6ffee53ed07864b68af3d824","impliedFormat":1},{"version":"79b41324d28fb94f7304a0151990ad712346ceb1907fe1ce5e892145eae8f8eb","impliedFormat":1},{"version":"3239a3f8c29d2b0db0a4200b7e6513e95d16a183d4d823e54cb5c98f4c53e183","impliedFormat":1},{"version":"0eefc702c5de5c32835e290cbdcb5a76f6d98c956b87cdbf5da49c864d3ab88e","signature":"0a4895bce639e10d5ef215a48b4bbc4d73e444e9a3e214594ebae5e00a7140f8"},{"version":"54f0fdce25f65dd46fea54a14ff0bfda9d1accb8cf13b208709ee7b527124abd","signature":"2277a245765dbac41e82b51724ea73eb058b58e261f7c67bad3a47924f48781b"},{"version":"848b257bdc73b54c167bed01b2db42fd44c1aab77350c9b1fc3a2ce3ff08f899","impliedFormat":99},{"version":"642b071c4d865ff593c1794e06fa1781a465338a37796a7d0e2501daa20172bb","impliedFormat":99},{"version":"ff87d4d02bfc715a3a038c825bb80d6a6cfd1750bec3a0fa6f0e407133b1cd2f","impliedFormat":99},{"version":"0da67df9ad0b921385c37c0eef3de0390b8ef7b0b36cf616fdf3590a67fed1e4","impliedFormat":99},{"version":"8b28fc7010a1cd9c54201b6015c7d6a04fc6a4981acc9eaa5d71d4523325c525","impliedFormat":99},{"version":"e72fd44d087aac63727f05fe82c0c4a984c6295f23fdb9a6290d4d9fda47cfc6","impliedFormat":99},{"version":"fa2cd67056be92f91c496c134c19c4e0a074103d79ffe5dd879c7ad0f3036b75","impliedFormat":99},{"version":"a5e9994461de1736556049ad37857577a0c1238cda95baed68d5997c45f353bb","impliedFormat":99},{"version":"479ae2d0df8346600082dab7eae56c7557bc0436ab0647c31063f3a02d7cc6c7","impliedFormat":99},{"version":"1faf72b15dbf252373a1f4b2867a199800a97cc7079dd3b01087a2f3c11f4a45","impliedFormat":99},{"version":"4af8ba68f5b509c7a7d353e7a91a4014d194779c537acd3afd330980e9cb972e","impliedFormat":99},{"version":"c4a78ea6e862ed9913ecf9b95c8b4a8f77384f2cf583eee7fc4b27c52f4fbaf7","impliedFormat":99},{"version":"ee9c59f4fa245924e3328a2a6620fe107b0c41860367a47a90d07a932e3a084a","impliedFormat":99},{"version":"e2a62c1f16bfc7e305e78143c1eeedb71ad1f272761aa07ff2ad70bb97248b13","impliedFormat":99},{"version":"1c1ba22485be7577e2a73cc103bf6e7a692ae0a025216619a4de42186eb1687f","impliedFormat":99},{"version":"ebbaa82abb5a1a7179dff85377f99c666dfa3a68f8a2ea405bbcf4f5e50149be","impliedFormat":99},{"version":"37673287f8bc80af36be1c23275ed9416bec11ee361b320a57a0b3a2797260ef","impliedFormat":99},{"version":"39e217bc229493f7b355cb2ce07f8600f6266500a6feaad43c254cc0a0f140e6","impliedFormat":99},{"version":"a33d889bdb82f43cdcd8158107c0e25d295d1838d82ee8649390ca0b88e87a07","impliedFormat":99},{"version":"f289d98b575f84044465ab3b7ac81e9a11b4d97cf2a9e92a822e948bc2f0ba7c","impliedFormat":99},{"version":"787a6b0d92df1148c7da1e75d705652030078c19e79985a72e622dc5b54487bc","impliedFormat":99},{"version":"ad09a94413ba6d37b86beaf348b252b378608dec764b67efc9e65d1dc4dff808","impliedFormat":99},{"version":"534611552e459b47ea008079ec9d520fa87c7b229c8a3a08993e8be650a8df71","impliedFormat":99},{"version":"d4ddcacf48fe1a273c71f4b04818eb912fd62bd7c0da092742a7e37a30cbc726","impliedFormat":99},{"version":"83098570d4ae37e31d8c788901c5d094313176a23f26870e78a5e98e5edd7777","impliedFormat":99},{"version":"9a43bf14da8556f0484d20c93074fd98845c06c85587f6b580fedda82685dc04","impliedFormat":99},{"version":"6a36631027099eca036047ab3bf0f262e23239c950ec1c65de700300d223ec44","impliedFormat":99},{"version":"fabd5be6cc2f406cbfcddb145a91a0e341a25e509e1c7521762441a46e58780d","impliedFormat":99},{"version":"80a9eb1f4fd46c863aec7d9c8490702ec6aee2b63ada21bcf231d558f5f0863f","impliedFormat":99},{"version":"72932bf7599a75bdd02788593ec6f060422f0c6e316f19629c568e2473d37db3","impliedFormat":99},{"version":"2d6244e9b7d19e7650ceaf09033ada34ebc2d0590a770707cba8da87bc125d59","impliedFormat":99},{"version":"6e0ce9899346df5cf80e1b45172eb655855837cdcad4539acbfc9305d8fc8976","impliedFormat":99},{"version":"ec56ed06f0a89fa2e3a20d7f7521d017e92decaebfa4d53afa0fd3a7b7a2be3b","impliedFormat":99},{"version":"236b90e223fa7a458b8561e87327d3737c8c83cac9ce4cdfbf04b3098da851fc","impliedFormat":99},{"version":"d64b03d8342c4f4d51706659a835c45197b9940b8938b0656bdc4df15d06f630","impliedFormat":99},{"version":"8ff0f34466d5136ab068a15358b99a958095d1c6e7e11c67d607111f81933fc4","impliedFormat":99},{"version":"98a72afb1b77b1c3f15beaed5662feb608060ccc604fa1747fba9d9deb070f80","impliedFormat":99},{"version":"cd5189682a722b13ec340b2bd112bd48b899bfeecd69d629bfc78166c15b64fe","impliedFormat":99},{"version":"a4017a3045a75c68509bc69bd314d91f7d4e1ec3f255416a86efe7dadfc0ee64","impliedFormat":99},{"version":"19599db9634ba72f2663db5b76de48dfe250280ffb4bb158109c97eb4e5b5e0c","impliedFormat":99},{"version":"f5a0ae8b389c104a6655117a8e4ee1b563c4d7cb33e045e4ce433cd6c458adb4","impliedFormat":99},{"version":"566247adad3c04b6c5b7e496700f3f23d05b07f31d983ab47fae1aa684b048c9","impliedFormat":99},{"version":"d10e1723404ce7559b75ab341c7e85b1ee2c97a871fe41630e47edcfb1bb1621","impliedFormat":99},{"version":"19b360e4fd7cd6683ab5455093e02c7c42dbbbd63ae5bd50f91f55a8709feb98","impliedFormat":99},{"version":"ee5ac98eb5ccf9bee886f916ae88856ac220858f4363362c094add66a0d44780","impliedFormat":99},{"version":"02efcdd69ab7a028c7fc316316748723763f7d40073f5b74f5136f9ded5c3073","impliedFormat":99},{"version":"35c834f84dabbdc3b595dd35c2208876af77af86ec3e0f4b622ff7f901843e80","impliedFormat":99},{"version":"dde618b9a6b780c35bffa2075f11ee29adabeaff3dbb73136ac530fd45035692","impliedFormat":99},{"version":"6902d565ebbc9b4f27b81f50a769ebbb673d299090146fc4d645c59b4433b36e","impliedFormat":99},{"version":"ac0e664aa993f918ba1006ca2bc107bbe326ec96341a61195f9b3054a9571a84","impliedFormat":99},{"version":"b184444a122ee085c61df92f39b23414dbe7adece24558bfd1a0dcb22687119a","impliedFormat":99},{"version":"b8ae8c7a851b19aa288e08fbd70e734f5aef3d1bca3a5844dd31658f1bd18f62","impliedFormat":99},{"version":"85377ed2b6029c8c1e851e1acf848d31fcfcc5a9264e726a00e046ccd68288ce","impliedFormat":99},{"version":"aa096547941633cc25eb4b24af41984906ca9e502d9c06c88e0b4bdc2a54b602","impliedFormat":99},{"version":"2b69aa435fea74564e7388f7530a8ce8dd5c9f9c6a67cf74aef6f99922f05885","impliedFormat":99},{"version":"6853837d5850cfd5322fa38f190d4afb7b1ad9d37b137a7fef26a1f489a48b61","impliedFormat":99},{"version":"60bc42d137352b88caf900df4bacbfee40c73c02b56b853e0a6d23a3edab7815","impliedFormat":99},{"version":"d90817a097f2792dc8ebaf9bc08298f1ab6cb18b4287c8cfc1cea297263df6d8","impliedFormat":99},{"version":"3cbfe6b48a9c4b5b6283f7fbce0c1f5ccf0796ac8b1a077893eeab13fc17ef73","impliedFormat":99},{"version":"01e1e0a0c437c0c64b0e55fd5b3123398c25b058fae214ffce0ff9a345d58777","impliedFormat":99},{"version":"23e97994d2f64dd504174c02b5ed713093f1f8c0ee4c3b587c7f12a641b8bcd2","impliedFormat":99},{"version":"fff0fc0ee248874a1f8d12dd439f1c26a8be008a18b7e36ee65c3e8cd634fe18","impliedFormat":99},{"version":"7e6a11a7c6f9070215e73bbf9620d274ef45979eadc8de39d50ffe6fb67f095f","impliedFormat":99},{"version":"c34715ff893e99af41dcf4f63b3eca2a45088ef0e4a025355204c440772278c8","impliedFormat":99},{"version":"cbc0e98cf745d22c786862ea94c3566321c06e04109f461d8f657a3c1151d057","impliedFormat":99},{"version":"35a5955d275c446b47dcbd8347f41e8ef6e230c563efd38f62ff715f7994b767","impliedFormat":99},{"version":"2bb58f627a12841ae367d97ee15993590a5cee4a826326e2a8be2bd750fca9dc","impliedFormat":99},{"version":"646d361245ec8052afcc7b90acb3c7f6098bf1340b88f32455e63f0369ddf1c5","impliedFormat":99},{"version":"2f6f7ba3522444f3d3e1f6d4a74ac37a096fc3dd292f902773d761a9eee57620","impliedFormat":99},{"version":"921a2668977ae600f6de2a4c19f53b237ed196ae5ae3297043b38781c11d9af4","impliedFormat":99},{"version":"37072b862cae4c819e335ac9eb855cc398719a50ebc60376de9ddae801610a3f","impliedFormat":99},{"version":"6473fc970e5fb3f18fece3e8681e9ad4454adf295be54463ebd74688b8b5051c","impliedFormat":99},{"version":"4e54895c51ee23f08f62fb429dbf4cfc1772ce34f6ec77855a3bb805dd16637e","impliedFormat":99},{"version":"800509db7d0b61907f28dea506dea01b57d2aa3cfffff03c78ccad04e8ceb976","impliedFormat":99},{"version":"887778667559bb4b7c64b006650210ca831f903c055ada3a069a8f08790c5718","impliedFormat":99},{"version":"bd96c9f72e9a439499bf19a4405d205fb8c2da019fdc9fea988c25005e76c200","impliedFormat":99},{"version":"9fe617a1d5e7c5c4290dd355f1bdbe1a80574d765a2c03bbf49181b664f11f0a","impliedFormat":99},{"version":"9afd17a7e1d2b474eb24bb37007d0f89ccbfb362ce904cd962a1eca5a2699efe","impliedFormat":99},{"version":"2841695cc12ded91f69e66e4ef44be524ad02c54bbe257bfe5802e3f6b851b5f","impliedFormat":99},{"version":"1132807f0a56b00d253a76bc21aeb23e79c8ba8478c52ec75ba9fcbd81738b6c","impliedFormat":99},{"version":"effbcf17a843123b20a54ce8389b29a26d12c056872f0dfc76a27460b22f716c","impliedFormat":99},{"version":"0e052acd94182df2373f96e362f064715c7a782452166e2344c91a126fb41d28","impliedFormat":99},{"version":"b7bce6b962d325bdd11ca9f3394b411f37354bffc995e798ddf66a7ee3b9de42","impliedFormat":99},{"version":"96d66cb0b5b2a0b1e2e6172e6bc163b5345f189c699852c61cb866812bc5f3a8","impliedFormat":99},{"version":"31e4839e4dc630cf7bc9f86c1afdf3dc2cdb4b8f6c3e11d12ba38ea18f4c421c","impliedFormat":99},{"version":"5b94968e8400015a4904bc1ba26ebcada2fd366c8fdeeb873904af54ccd4b423","impliedFormat":99},{"version":"1513e36e2863b615eaccce129355da5f5d8e169d4416d25e71e47dea8d2d35c5","impliedFormat":99},{"version":"7a128061e6e84e9375c9b46f84a0cfded49f537e8a41b42db0c72133666ab9e8","impliedFormat":99},{"version":"1140a35eddf2e3b9d706eeaf28ea74e969ecbe52e0d0f6a180d0753d2b8272b6","impliedFormat":99},{"version":"5e9cf2a12f0d82d2bb5989cbe663707bf1f3bdccf7cf0fdb84105712b9788e0d","impliedFormat":99},{"version":"ad1a1db6939b787bd9ae09f997f9b209cf0e689c72414090fb9cb7989163df77","impliedFormat":99},{"version":"95e857dd9e4984d5694b721cfe2d66430805db29660e212c2f681515ea08e8e3","impliedFormat":99},{"version":"2e8932517228de42f8b3db669c4d04d177367283d2da199b1a59cd94d009e65b","impliedFormat":99},{"version":"5fada2edbc2264cc0d7ab6080e8e4d4e3d5dfb9ef494b4eac9c8e49b90f30bdd","impliedFormat":99},{"version":"615d06216e7aaba7e4011cee475b9ef6d1d873886118f178bca21bc38ecc10a8","impliedFormat":99},{"version":"7ddf86abeff5aa521f606f9ea9ba2dfa19df8ee1c76ea838d9081afad9b28f68","impliedFormat":99},{"version":"ebd25c9c141e447ee6ba794c80c6878ebb39c42ad135a0c363d275af9fa6799f","impliedFormat":99},{"version":"4132803c2f4af9b16bd01853bc98cf15ec1ec9d11529665bc6ccff35bb742774","impliedFormat":99},{"version":"efb8e27827124bc3bf96b81288c0278c722d10f2372a1bbbb9de1943e784022b","impliedFormat":99},{"version":"1400f49fbe68fc416c2d47e19f6bc29a99a5480910bd560090a27fb6b68fbb45","impliedFormat":99},{"version":"98312a773a489dd6b924350b9ef0eeb1f9646b7e1b294501b582b67dd735cb3f","impliedFormat":99},{"version":"a9410e9f7d26ad51166dc6e55de1f0efe893750b665a4169cce9a1c46d793d18","impliedFormat":99},{"version":"4218cc9758b6c35b4e98131e96d6be902fddbc194936e0ba71a95767e11072b8","impliedFormat":99},{"version":"6f29d6927bf60c969a6a5ef57231d63b81e6820b6a30c22eef57821b5c429ac0","impliedFormat":99},{"version":"0df226906c522ff1903482f4fbb83c039fbd0dca93bd1b3e56baf10ab58bfa15","impliedFormat":99},{"version":"02f4852cbefa35edd7752e35e228adc060a2c98251be70a9446f64e196029bf0","impliedFormat":99},{"version":"4b70362f8a653d862fb4e5b65aec7943cb237e89c2409c76e6aabbe52952507a","impliedFormat":99},{"version":"8c83218e92cb960a020ce6ccf208c7fdd29fdba50f824ec9f7804b9a47c175d0","impliedFormat":99},{"version":"1da27ab546abd20e493012d7088a55cf1a00c92b61eb06aeb7a25581c6f9ff87","impliedFormat":99},{"version":"be74c0d9577d80d8dd6fc04a8830a2bc3ddbbad2570551305072dfd985534876","impliedFormat":99},{"version":"de3347bf58d986a47125ca7bcda6268d55c78d6006e165f59a03c20be861d95f","impliedFormat":99},{"version":"b1ef1a2530ef3a4308488bd172252a506f35fe16622d3117573865c2b6ad3485","impliedFormat":99},{"version":"840d2806690ca5764b0b3393d63fb4f4eed660f2fd1c60ed5a8aec3a851e775e","impliedFormat":99},{"version":"b222f67a18cb2bf55641e911467ca5f1cc4ce664824a3d4e2ffcc1eb91729be7","impliedFormat":99},{"version":"5a191a0753935e35e8560d6dff2a0bcbeccd0850d11a7429283e3061fa8bc8e9","impliedFormat":99},{"version":"e933510d79c03cb4b5ae2b910b72056332955385cd91774913ab04c9f7fdf00a","impliedFormat":99},{"version":"3a3dee0f5e3155384690cf45b07a217a6b3de5e1edb4e98ec8be5fbf3e500868","impliedFormat":99},{"version":"db2ed9c0a4fd561f950cea441d7833cd5763720e91856f7521d3d5f29fc4b7e7","impliedFormat":99},{"version":"c8a7aaf671a49f7f836c4bc4aa4fed23e5c8da16eccf72ef2b2a52197663e6cc","impliedFormat":99},{"version":"10856b8f8c6dc7fa2da62848f65f977524b073c6fd167578f21edda81832687d","impliedFormat":99},{"version":"067de9fe31618932f08e63ff479248118a39461669a06b6f6d438e7ef364cf29","impliedFormat":99},{"version":"f67169b04c2c933f4368c15bcea7f744f05a134dad020c6d418f7cca2f9926bb","impliedFormat":99},{"version":"078af8b67c2d6de37753072c1759f1215fb9846cd4344cf83a266b10fbbcd790","impliedFormat":99},{"version":"e27b61cd6a2953ce7955274ed4dafde236be2051b1a89d10b5640306b7d3b86f","impliedFormat":99},{"version":"91beef8d07b44eb328aa9d9c3db98bd79bde320adc5d1556d3fa7f463a90c3ce","impliedFormat":99},{"version":"7f7f86c7d1bc4a9f9e4d68fe0702f91667419056e6746494a66a7fd2882c8660","impliedFormat":99},{"version":"b87d0cb8854aa7f797bcc7f46ab0522fd091828dcce0463d4dc58b78e1f6ac10","impliedFormat":99},{"version":"934478c63db3268cc99351178a969840b2b93a2d21a4d165813cebe5eb6dc419","impliedFormat":99},{"version":"e1ac2ee125d07e130dafcc5727922a802f33bd894b3bdec61a58653cb25a105f","impliedFormat":99},{"version":"80d81e5352828e06dd7d79a0ad35f07087aa0c4f2aa80f8df7e67855ab544997","impliedFormat":99},{"version":"d78aa09669af770ed71d8a0d5b1e2ef23abb7a17dca11e1bc02adc9cf9816fd1","impliedFormat":99},{"version":"acc4b06dfbe56e355495b3571be65265b7bcba54ae6addebfc4c34823a3e8201","impliedFormat":99},{"version":"80d964c6d3fd00733c20f85ee9fa70c52e3459f1960adb17e5bf812cf9604ad6","impliedFormat":99},{"version":"1df19943bbd19525aa3e18c3f98f49ecdd788e07b5705d99c8579073771dcc06","impliedFormat":99},{"version":"8c2a083fb5fb302c0954709938e53e7810da0aa2daf489757af9dc6baa2f3b7a","impliedFormat":99},{"version":"fcc4a7940475065b3291a15623bc4e8db0c22f23dc29be00ec377892a805eba3","impliedFormat":99},{"version":"16f35e4256a94b314c98eb75040cb33ad9c430075bc29c53b43ede6405705700","impliedFormat":99},{"version":"a257b94f9f5403f63026dee4f4a95b9015742f8e23ff6eed7837f97f2ae501d9","impliedFormat":99},{"version":"254175b582a422c45bd9701e93d6ef9f6cf242c6247793a9a2e05770e1add917","impliedFormat":99},{"version":"c4dcab273dad7aaf0d3b4e0ca48e948aeb3cc269ac359301181fdfbb2efde033","impliedFormat":99},{"version":"d21671ff0f21081ecb19567351dadc8be7ad9443e26183d971ac658684479777","impliedFormat":99},{"version":"617be44c8811d411b4efc7dd13e57851bb1ab71f7e9d1a9eca04b7d0db0e1b35","impliedFormat":99},{"version":"948af5f3081a8e683756251a3834ed5a4ae6e4faf16b66abcc44b8a13e72d08f","impliedFormat":99},{"version":"af437043c5e9a8105f0e9633fea7ae79d1f7f89357897e2df99c6f3697c744fb","impliedFormat":99},{"version":"d0bede428ef73b5da47f0f1bdc440480a863a1baff3e6a6b28db98535efcaa6d","impliedFormat":99},{"version":"44015602830f6f90e043f14702f04e7f48ec4f2ce8a9925116fceaea73a43b8b","impliedFormat":99},{"version":"edadfd0ecbfc573c016b93064b18ec0ab64b17ebd252e5636c2ee55f0f6cd82e","impliedFormat":99},{"version":"45ccec80a9c659104e28cbf3dbff13ab92c57c4e1fad9b38671a0c9299afd4f6","impliedFormat":99},{"version":"1b59bf4043df6f2b48ac1685a0a6c3953ccdb49b1c7affd3364624f77ff58f0b","impliedFormat":99},{"version":"ca4a3925cfe8fc5bac902ea30a5fd441987ee1776ddf5a353715dd1c6579722a","impliedFormat":99},{"version":"658f055f615e8232a1f5b30753a0a1ce369a70c1dcf0685953f48d7d4d508ba0","impliedFormat":99},{"version":"341aee100ffa277e0737387b9b9db69280e6dfd056166e18656de5bced0e7f01","impliedFormat":99},{"version":"2cac36c32274e1e7faf7fb3bd1666e69763b07b9f5330eee6911352d3e6eee96","impliedFormat":99},{"version":"aef33b3c102b63e7e89208ec4982f8eac7168774b08b05e8c43e967729ea91e5","impliedFormat":99},{"version":"5788b512a6212523eb032c6898beb98d56dd14c84e186a786901c1b3cae527cf","impliedFormat":99},{"version":"e2f146177df266680126ba19e4336ffc6639094feb27b37d276577f8c3d2c186","impliedFormat":99},{"version":"e616fc8dc6c82cb4d47ffd510e180c7ea96a0ade6702f011d56d36707cbe27b7","signature":"ffb3e6a6be2aed1862c98e13255a030ed6205c7c04676bb752f526703468f17b"},{"version":"a0284e8a2c6b85083d6562d6ae9e2eca4b33881f80e1b08f3ab30a89239c0199","signature":"38cb1f6cb353bfab37ca99d47354b0681cad313f2b028c544191b7e8504e660a"},{"version":"51635999c1075a999682e7be48025bf6b1bd1dc4029bc743388bba701743593f","signature":"9d07febeda5c46d0f000d47e92d98af2c877ee4b3006ad98b8d476103bb6b09f"},{"version":"d46d431e4b957d3e96ca1436c82de881945a23a860eb3db7558e0410122ed6b2","signature":"a880f8e696dd7ed55dfb6b7c53611e4df4966662443273960622fcb27c02362f"},{"version":"88c305e239ed902480aca0f90537b2aab81b6a793eea9f05147c1f3269e3530b","signature":"81d4e18931396e11ea3a9238df2d578533292a7fbd3a21bea05fa1b5cf8b78f0"},{"version":"72e90431cf3834df5324421ecb1a951eef09e6c64db71ee4d7b3d4000a2c39e2","signature":"39f6d146b3d7a5a5d7e4b9c821bb5083a559734c5d0e0685bd42cad6c3756120"},{"version":"a759579c15c6337995eec7beb36f2a716ee1a3a2554e70c27a2d0bc2bf230de7","signature":"eb2674849a6293cfd4d7b19d9d1d980e69af305319bf986e14e9fe84b9f3d0f5"},{"version":"98875dac45f10f45a4cfc4c5e32908cd4f926caeb9f77ab59a81cbca9ec1d39b","signature":"c50e79b6130f0690f2d77b3c1bdf1f71cefd48d43906ed06f1d3c409bf243abf"},{"version":"fd05f6bd5facbade263abeae680f3f0209a8e8d567ec72375aea55560c8f8d9b","signature":"a5d604c9bfd5b2f06cebaf49a136fccddae3eb781e6874ca407d2d10a367fcae"},{"version":"ae19f9f22c699e7c8da49497fbe230a299241eb159749418ec14c4ee7bbf1542","signature":"59ec1933725eb5cd08f95f737b735d2e679a0258e034ccdb02081e98441c5d1f"},{"version":"0b21cc62f28c164ef131d6e5afc304b392b0f0e65ad7a3d0cfdd0a632fd1309f","signature":"bbcf21fdb47d0a821efd28199218b48935e166e6a1cca9df5c2c66f71bf20881"},{"version":"efeec66307d33b06d0cb3704372835ba0044e0b30c499e77ab340d42fc5bc7e4","signature":"ba19a2dc7158c85d87e631d302803b5222d61335ae0b00160bc71989f52dd85e"},{"version":"dfdb0e093831713a578e513965f310da66f05acb7baf31a35b0048324dd6d3af","signature":"f4db1abbe97c2656eab8ac105f0ad1c0542ef691b98892344d42852aff970552"},{"version":"a4e30c76412b174c17c43b033c6618e1d6f73e66f49d27ebcacb23b710bed8af","signature":"1f0958727c92f13e032ec618e7c93d8fd0142231a733f205bfd738be1d322adf"},{"version":"42c0677fbd0c421c0def9d142b297d70dc1b9f03307c79e989dbb40a0c8a1ec2","signature":"75811db50923d46154af4d2794fab12c58791afa2ac9e8c804492c0f03b69385"},{"version":"35377665dfa67d4ca175ee370cf8d6fa770797df71bbd13d98eb0be06689b880","signature":"5a1d376fa8c9b8da658c7d87ba345170727afe7de8f5e6a33fc649d0ca65a7f1"},{"version":"a409cb812a758508ca4f687af6e1403538e325566bba01fa3d2ed4a564b771ad","impliedFormat":1},{"version":"0d872840c514e6fd4067e656e83b0ff420b00b3eed898e09a690a67ff3952ee8","signature":"83c9a04387b64ef427cfbfd815cf3a795e3c8ea3c7d221c3b456dfe31ea23ab1"},{"version":"254c196f172858aee9de7f8071f5993ee2666a63b7974071f88be754d2a0ed2a","signature":"35afa86fc89c139aa537d3f26b91650fb6d5339036550048b15451fef7752893"},{"version":"835efda0a01591ebabd4d70935ac89e8a2d079a3de6a65256501d0082b1cc756","signature":"2b4b96114c80ad55f95924501ce6a9671ce4240876c42a8460cd99473c05e97b"},{"version":"36c6258b107d9055c93586eb102bfb5f02effb624be8659b1abc9c0797682d9a","signature":"9682e64b678e67de60c6fd159655d1647d69f3eb639e21ac4ea5bb332cca178c"},{"version":"ae7cdf14cd2e0426fcc8f6a3e41f8b72489aa9e676d49ce47b886aa4471f8066","signature":"4d3bacab8afa878a9cee81aee45253cef26981923dc512a51afd9f35b15e8846"},{"version":"868c8d0998c02cecf94bb096c2e87cb0c59810fcf2a55087a4dc6bb75cb5a05d","signature":"a37128fd6d59d13045ddacbe8b712290510131e039e3045d08cde6627cf865b4"},{"version":"f05d3e578bce30cf813093d2f435bc47cd78159af50856e246c3fc1e34217ddc","signature":"6a21def23546b355617fc1e8263e91876298869c3104ac88cfd57db3d18cbc47"},{"version":"37b49ad60620db9db26ff31a64f5a70a1cbe9c4598ff5c236433043f9bc63f04","signature":"6a96f44bcdb3e22101416e1bbdf5bcc70ec23d5215186089857e82b1d72283b4"},{"version":"01fe01d2ac935a652f21248717a8cb81a3bfe41d0b6a59a9baecddd3fab1a51f","signature":"19d9b4af93b957117c451092ac6d225de9de8856f14982cfaaf2a23e7d08d8bc"},{"version":"6c8295521f00edbcd2d3b76685fabb60fab0dcbc5832abdebf1b77155cc47d75","signature":"726f054d27a53c3efbd91d9107e7de9ad7a3656f2c5a0fa8ea1f231b0b4639ef"},{"version":"61daed0b006defd8b1fd12fac1ae821a833289b6216594ca4dd667bd742b0ea9","signature":"2bfa1139c2eb88b5f23181bc6324ccd747acb70bf1d6370f8429813be3689de9"},{"version":"acf8f72e32114e5c11e8b32e6dbe6a09363b61b4e52f4cf2ae705aa79bd42705","signature":"e5a6286dad5913ab2714b6804286b074c9cde94943c4ea01e4db94b920aa2880"},{"version":"0c996be745af11ccf07b28eb3e007aa4277d01b16f53259cb355daafab167abf","impliedFormat":99},{"version":"27c1b57e01b13f914e9d3507202036d676222057d6fa1032332e2954296b9d45","impliedFormat":99},{"version":"7348c35ce10f8323a515ea6a6c237c0dc7c3fd5e491c4dacec2a7b93f0dfcd26","impliedFormat":1},{"version":"258e67b2638408b67fbf5fe6c953b8f2dd2a69f9171d31c9a976cd2329716e4c","impliedFormat":1},{"version":"a3d80d033a651259b2bbac8d0a03bc2e583c00e310a3829608ae781e4e689ca0","signature":"6b6cecb2fafe1e5163bffa9be0229c1f6821f6cec28022f8e6e50d163277a14b"},{"version":"8662560538394251a3975285b8609b5505d442a92ce710f866c2f48e17d186b4","signature":"084955dd9a619e88baedc4583e0bf2f5982c7889ea6b6c0e34ffd08d76aaecc8"},{"version":"1cdb7130ae272ba5c573f2f96d00344602bdbc6acefd5a198658e40ad793f5ff","signature":"dcdbb04792a2ec09fb7960f12e877b8696c489ffe664fc190ee113623370cab8"},{"version":"fe93c474ab38ac02e30e3af073412b4f92b740152cf3a751fdaee8cbea982341","impliedFormat":1},{"version":"476e83e2c9e398265eed2c38773ae9081932b08ea5597b579a7d2e0c690ead56","impliedFormat":1},{"version":"1e00b8bf9e3766c958218cd6144ffe08418286f89ff44ba5a2cc830c03dd22c7","impliedFormat":1},{"version":"ac4ff2c9d32e72ea96722c22281dd70ac0cdf1d7c6d392ba185a6c08e7828f89","signature":"11c921ebf96cbc85af834f1f70d05819c10ee5142223afb5bda4342c1056cb18"},{"version":"329ab8d42829159ad84178d4b6c66117192628e28be80d7da010202ea66e0874","signature":"07627fe71cb70f4617e8471c7919fda7e13b5187daa70c21c73b60ca0f55d9b6"},{"version":"70c3d0a39edb8a8d4f9851eaea525e70554af80a2655c9fb5ba1f72427032256","signature":"dcf05a557d3591a75d84be523c2710d0511f38ea6f31c659153f3908c8aeaf29"},{"version":"42bb666c2ff708243bde790212d396f883aaf5951c421fc8ccc8ba04c2a7284f","signature":"217a48e44b57072db0592f7f4151676d95f921ccd0b19b43b29c90c4b1aa1dad"},{"version":"36dc0ccdbc5fc8eab63fe861f5bf6210aef36ac046642506a8e43cb634674ab0","signature":"01a977ade994fe0de990222140f158a0dc3b03529994c449aa39333d0facac02"},{"version":"c286e5ba6782f449d7a9c20cc2cb6d29e69587a8386527c534a9ebd19ae2019f","signature":"cf5546de6b03068d7572be4acc7f1f70d682f01d4eaee9325ffe10a65abe0130"},{"version":"bce6229814334e647431e56a4175ee0ff509e77d87bbaa6097024c529b5f4350","signature":"361d3a5db03860c39b0ba2d914be0cc2a11c318cfad8e67a87793e61c6210b07"},{"version":"dc8fa1d9a1edb51a11d08b1349a0f787c215943b5e25293661d8c64d6b3540f1","signature":"c4c159fad47a87f6ff6247f863e504690b499e328848a407accb817dab9cf85f"},{"version":"af963b857f8fe42955adca2df05a1d5ec1a45d0050aa3c1a191060b4de9f3c3d","signature":"8ffde254a6b640c6592c406eb185000a2014def50737d120d117605be880a849"},{"version":"713384f186240f37c9db30ca9f1bd0e57c51b37242f16ca3343cdd57b32cb69d","signature":"c2d05c6e88e3062dd5c4ac0d009b7133c1834733fcbe938304d6beadef346a42"},{"version":"557b12fea4bb7a097ab366fefb8ea8702b1d381abcb352cb0ff8b7232712a632","signature":"b08fbf391494dfd2b1b3681eb264ea04ae1192cd19bf67202c9e6e8bd6848c50"},{"version":"8236726367c5526c6c1d709c74601628dddd92c51f52670ca4188e8ce24a5c50","signature":"d0d5449dc78a144ece9568f28ead7df6fbc5d158a4a5c262541a65f7270d8a21"},{"version":"41fa7531d1b20d532a5dbe793d5ff179fe49d0d91a0cc20d03b574d801801dbb","signature":"5d632aa6f70e68f13a0cc9e7fe0f9d2a1aeda0beece411ca6645bf3e99500d51"},{"version":"1992423297183e880e13196f5a1a6866d4998ac451a7c74513ce025a6baf1690","signature":"50c09e0fd940256acc6d2500ad014c7692f96519a75e78e78bebd0ba39c2ad21"},{"version":"3ba975fa7b7056dd766d715e435a0301e15cd378a18c4d189e3f8e0b7d5f6577","signature":"68dfc22d24a462e2344abc4d521b2b7191d8e1a719f72b5d92fe3eee76d18d20"},{"version":"155ead741865de4ee76471ebf29d8cc446be7ce4bdcb95f25fc071f6c48d5548","signature":"34b741d193f967d16d6de7225768c9b96837278e25768ae94ec8cc753c6239b5"},{"version":"a797e1a0a60363dc8852ea6fa41b35e284e586a1bab749e23646cc1763c6556d","signature":"8d28daa13e5c3c40f4a1a4fa9929acf8d90a6f4eeb55f274f0f7fd56c2c8f60c"},{"version":"38c5f7e52af47eca20fa0e717ff90ba9b6816da33a4b25007b7d644fcd3e322a","signature":"e94a0dc2d3aaf38d79575ef2ff61e8028dc30f2f50658190db79fadff5d2c62d"},"ba847ef5fad418657e80d8c7fbe52f2686d8031c892fef012afff58995b4c491","a2954ae53d3d7aace7464c9cad202f6886d7a8b845ed61bcf81e634e7b818235",{"version":"fcc0a50c5e3f90f359a8f92dedda852ecd49e601dbd142500a4e3776d7eab802","signature":"907aa9578e2661838e9d9f288d5e9871d6f462d3703d51adc4688a88dfa41bdc"},{"version":"5bf3b666afef7cdc507aa3a2a52ddd145ec12d6cc5e85f85790a9f6060b9b985","signature":"620ad41781c5847e7ec69fe9c05b3905ead928ccfc8b976ebff2317a91c46b93"},{"version":"1011d862f18a04edcd1e070831c635391d93d4b43a20b70a867dd232baa69654","signature":"b9e72785cf996c11e31be2b6bb741097518b35459e67dfa4140bfef652e937c9"},{"version":"1015e73d3d15f8872f950baed8b6071b649231b304f58983cffad02c10eca244","signature":"75c3bec8d605e8c23df450f9cb9d3adba5ef84ddaca0ef026b6bee6bf187d274"},{"version":"a49205f8727865be6b169e931276e9320e15f14491a2ec7dbe6c2459ad101245","signature":"0a8ff7723198f7e297d1828b8610fbd0dc68f9562a76bbb82f9103b5c9d0fb4d"},{"version":"97f1a1d49d690c11ade03e94de3f890fbcf15005b118b6260d9e9ff00b1033be","signature":"10707b8b90dccb1f296257a17d0ba61e1f4fd12ab253a5017b3c9e18c979fff3"},{"version":"88a0d62d6206501dc8431dc863184148e1bbe61acc5c40793922ef2ce9393ebc","signature":"9ca1cfb31a6eefeef7d2767d68636c09b4af54253be834aa967a4c9930aae473"},"609fb9b2668bd347b3bd5d8f791a2b948f10bc2622dcbe04c91540d50725b51c",{"version":"02e6a92168e028ca9dfa6da732995018486fce21b27d59bcc51bd94a130a5852","signature":"4731a05cdbc90902ec899db277e37e5f2884a1de5e095446e1845c875340d72f"},{"version":"0f28d903d9961f77bfbd514935988df10a5a22e3aab8ed799251613d0e7821f7","signature":"2df9a7124c5951282528b142dd8140de662642620731b5869a7ff466773198ac"},{"version":"5e27110ae79ea157247bd15b5a682842d99e60f00ba3897522415835a5edaf1f","signature":"55f7e060e53e001f4de2cddf8c5a64b05b748cb37d035230460d57236de16399"},{"version":"b2f4e7d8d25e311db0c3b514dae127f0be769f0ef442f836619d96849483048c","signature":"2929aaa51d5e996f437d356fa63a9296dab88dc05399dccd50d92933f9795af6"},{"version":"984a76adcf001fe919b15167b840e8c49cde3f107d4434df1bb7d080c2d6ba05","signature":"a8e5e38e1a942a0339d643daf52316b72fbb1e9066f47559bab5ea3a8c5a8ab0"},{"version":"16afca61aef0a7098bf02df129f42acd42497915abf50ca20fa4529ba08035c0","signature":"f4351130a24f2f42413ca77537f35d31969f14b2975d2519a3b1e86ee1be2f7b"},{"version":"eb1d16ea3abc5f8dff9143577bd50f41d943171c9f37cca7756c3f947d405248","signature":"72fe197007d100723523beb4def1f7e6d19ad60ffa3c73f9100be9088a65ddb8"},{"version":"18ebb2229647a29c2d8252263eeaa4149cf4c8d69c28d69693415227fc6cbfae","signature":"943aaf838f611dab905818c4606637f9df5439c87c6774a1cadfdcecfc465c72"},{"version":"8a6a3fa00026fd4feec9da4bdd655ce5ab60816d09df1857ded0760a09aae603","signature":"ec67da3d1af27d7f67e7a4ed6c2926c7205e7ee23401a9e6d09f95d62122d5e3"},{"version":"11d66178c47199738cbeb5945865e0bb4d2506c1a3ab06a553951fb14d5705f0","signature":"2c4e4a33361906d6b8590c1f05cf4fa314e6ab1435bf4a0bf75c1aff57fc4110"},{"version":"8473e4af6a1ccfc7c658eb6cbc344fe101a1a46e5423a343623853c682d646f0","signature":"feb3c99dc72d797dcf39fe41834050a6f6194e72bd4ae653f5c44b497efeaaae"},{"version":"094e476b1981b2d857811b663f5b7a08d964e943d5aa38ac01c92bb72b523a32","signature":"5944a73ca520c4e81bddf2f283240e0c6a12324fbbc0c298ecffc08189d49d7c"},{"version":"97566b2a9e6ddbaa658ecea625da8624386d7be4023e5f3bad624d83b492c61a","signature":"a066d0e408ba9704c718f0115e60511f97939db79e192b2654c113ca0a85d304"},{"version":"547a5260e8817dfde91badbffce9d81fb13c1754695d5c642b343995e009da77","signature":"781d69b754fc71a3a730d9d74d32d3f49d71a38c5a827199e4b4106929cfcb61"},{"version":"25efe22283348f9b3344a7751f94a8aecc8bb9e3e8afe35415cf5fd16bff956b","signature":"3eb972ae325aa293fdb6077cdf956f209ee6ea34b4e874ff7ec8686b3079972f"},{"version":"0f40f25989199883118ad7c0533d2a8c42686a348a96e75d3ef6952ac4e79666","signature":"6826295f44aaa0ee4fb7d497c0400d4318a2770b06a96a52a5c7f55f08b4788d"},{"version":"bda9a940cafaf73cab942a13c874fa754e09172e51262114523d567491a39f13","signature":"2b6cc1a42215f75f277baaa50b8d0fb562409d983f1b55ea7dfea308f5f40e41"},{"version":"3a79f5de999e061fad6833b7a11929907f44940b36b2102f8a4d01c1a3d28e1c","signature":"6319e10a0b439743508cddd066722c11f71bfb6b3816566f79448065e5133247"},{"version":"5cd6c7dc21564eeba0dda3d6823d4b7a0fc3444bf315bb9316c0595e82565170","signature":"46df3b90500aa646e8ef62e459f6bb881545c69786b13b9d821db667dbc0dc79"},{"version":"d138f53600b722e4dd81e27ddade33dea879bbfe0d6b846870f83b77ad52710c","signature":"006e607a1db22268ae7793fe0b2f8ffa31589e5fa306aeedf14ff9e85d5eb8e0"},{"version":"8b2d1dbac39af2d787ec6dcefd52f7f0430b35b26876f3e2c5659d82a803f0fd","signature":"db50e984878a0109d5547f9c1756095e7088968a17b2906e51c042e5fcfc78c5"},{"version":"0163bf08ecb350a94213025ee0849f017df5a6b509ebe35b6ec3c6fd8f255fb7","signature":"fab32c8c3d3bc803a26acb296e12c47948f8249f09cf38e0fe6f3859ba362a5d"},{"version":"794fb0f8b5962616291b6acf76e85b40d25e9f3c82eb36eed6d8ce12357e360b","signature":"8ad6f8d83135def4e923ca0ab054ef4f55fb00fa7fd1a2f4fea752b17800d0bc"},{"version":"b7d635744ef50ba3db77afe8fc83247f31259f2f6e378b7d6a02c38a447ab335","signature":"3a5b0869f407f8b570ad9e74ee6a6a54e45378a7e09798f2dd50c9b67219b819"},{"version":"85d0db377f3d1de6402540415a4776eea70ae5b426e2f9ddc9546cc17ad98c86","signature":"e146540eccae50527bc9657d0b95cccdde222d9be2f4a321b55774a5cebaed68"},{"version":"4d4acf3cf1bab59440589f329514a73378b4592baa00f23ab2c14db2f7099d49","signature":"5649a6b58425403e6a91b5d3c792fa759c912adf033ee2dd979fe579ab83d002"},{"version":"75460e3964c5e2518af349f614c3fdddbd1a0e1be6a585cf0e415366cffaddce","signature":"960b113200860addfb6f9d69e34328a23fa5f393130b036e6cafabe9e1d09fb2"},{"version":"10c82e8170a3750c8bff477bda3f0d38cc6d1d1fb07f2c2773ee2540c2cf9f50","signature":"ec2644121212afbf9cb045ef19a1d2697644c4967616b3374d1ae7888e22c9e9"},{"version":"27907602caae8900cdb86de6149569dfe535926cfaf9aabc0327dde30f4e80f7","signature":"14092cccc419f225119fd920f565d2ba6b033fd006e3bd596b725053d5eb5b95"},{"version":"b54da229beb4aac5accc542f05c38a266125abe98f06a597b33fc494f54f0f11","signature":"abeb2c9cc4a1bb27c220535346424b1f8f3974cca6480df44cd9ea318de951fd"},"ea507b14eea210847fb7619ba5ff269c0c95e3756ed6bf0860c55da9fc61e052",{"version":"70811d46037dd34c56560c1db7a64d75a9f47ac51d0ccc96ca9d74a3a5b1f226","signature":"7c181c8b6f319745f24094aa11f69cf3b0bfe22f80267df6ed4a8b5ed04c1a43"},{"version":"703419be14391ea21d0547704e647e02dd9ff9fbcf2bc238b4c9c00cd1fbc1b5","signature":"934f32a7071a572c867a2f946405c62aa8448f12fa452a45d1f0a4e9c27305e2"},{"version":"1f8d74393ba62e40cdec8e3c7e90c260e2b872f22d132778fe48b699a20b2aab","signature":"985381138d7658ad2e05c482a722821180f6d366858ec19c03b5d42c901da917"},{"version":"b854e5ffb57531ef3726e25f01a9a8568db8f641c02bd4286b8366eec078fb64","signature":"8418309205cd7a30d2e8ea73ae671a37f919048475ab9d708cdcb554a4813a31"},{"version":"dfefea8038cc47dd5a61375da9c82524ba005cdc8f5a7cfc5569d5c32f8a7e14","signature":"fc4a1909516c00b0a88e516f5564dba70d7c13db1fc6a650c424b4b81e67eac7"},{"version":"d30e67059f5c545c5f8f0cc328a36d2e03b8c4a091b4301bc1d6afb2b1491a3a","impliedFormat":1},{"version":"a356d9a0ba90d10ec6c0fa33386c0b0e2843fd6f0a49513c44f7809926ac25ff","impliedFormat":1},{"version":"f77db1be13db8dcf8c7a268c1f235c1ba1e4707e829175cdc237421b3c346f9d","impliedFormat":99},{"version":"05cb95655ecadfd1230547b84367d1c4d40a4bb6309545b8dc4d1638a3de1a50","impliedFormat":99},{"version":"e980a9cf8404a649ff3a2f0628d76e4469613c02b98bd3b922756d7d962476c9","impliedFormat":99},{"version":"f8adbcb59256526bc69d94fb5c826e812ebd1321b30ab35baa9997d74d45dd73","impliedFormat":99},{"version":"050a4570de5ad6e47cc9ac9fd9db7a26e57dbe1daadadbc19b20567941f8bf1a","impliedFormat":99},{"version":"5ed040255a4d5181f8ecb4ba90b8b38e0a6f1becf0ed860ca75b6e52c46db0bc","impliedFormat":99},{"version":"e22a49cd604cab3b62b1968a363d7b182edcb23d46793ed12cf5cfc6b1597f39","impliedFormat":99},{"version":"ff1b4730f5d49d37b73ee2db3443145daa0bfc7ff9c865134d871b08955e389b","impliedFormat":99},{"version":"8e64b72fa289b7f133b8cdb7d837f73e30ca7eb76ad88e1020d97c405c94fd7e","impliedFormat":99},{"version":"1f907507e41cc3df66b4521b80134bb8f7afada8d31c10f7100c93c90ab0f84e","impliedFormat":99},{"version":"6bb14070b70b4c9a897a4f5088af984e6e316b420d00d82fb962bad577896723","impliedFormat":99},{"version":"46e17953f7ffbf43d4328fcb5983e0ade2932fb56e84181e6929fcdcfa7c7aa6","impliedFormat":99},{"version":"113aef5576cd65f310927b17ae5f6ac8745c542a660bace5f019034d536fbd04","impliedFormat":99},{"version":"ddf0fdbb010c94978c1151441171f0aac236a23b6786e9f6332f745527d905e9","impliedFormat":99},{"version":"a2c1678ec68c42795e2ac068a7d026b61680357d2a881c9df211dd0f83d077fd","impliedFormat":99},{"version":"2fe207d2e8662abb709772fff1f3ec3116a4787b5caa4e862daa5dab2753edd7","impliedFormat":99},{"version":"a7af5f01007f450dc8cf2cdbbb11f4d4bf8bf3faa869d21267db5de74ebf665a","impliedFormat":99},{"version":"709cb4986cbe2b58ac3bbbad45dbfa24cda1b62c794c73b96e9ff1236dd0d5d1","impliedFormat":99},{"version":"afdc9b1fd1937d9b649bca2b377d1144cc9c48158403c17cfd21b6e1e8b25099","impliedFormat":99},{"version":"1d47324801b498d62f31ea179f58e1f3eaa1e607914504a7c92fb5465affb851","impliedFormat":99},{"version":"95fdf978302838125ac79d9d5e9485d8fa1ddd909664bf5cc3b45ec31f794fda","impliedFormat":99},{"version":"d92bf7d6d30c85e53b961236ceeb099e73a1a874849d038a348b51383087872f","impliedFormat":99},{"version":"e56e4a57ca5aa762d67fd3d16471c47592469944315fa5e92b3b09c83eabae91","impliedFormat":99},{"version":"f3d31927b7a3d0f2f119a05a102af2bdd1fc4f759fe43d508a64a80b3b341f6b","impliedFormat":99},{"version":"678700fba88589e28648a923e4b98ab60f3f7df4742412419e29f95966da4475","impliedFormat":99},{"version":"5a71b307074ef3d2794c4104248b7a3cad5f486df204da65862a7d24f698fc95","impliedFormat":99},{"version":"9a4496ad6d48bc801a122c11e94ee1e3f0710bda38b125573f67f5cb0add1733","impliedFormat":99},{"version":"afa5e16f2ad07d847701e3bde9e7ab36f87e0e3a5c0cb7998644791a1fa3c5b1","impliedFormat":99},{"version":"98cd9124b5d8438db4b4dbd247b2c68ac22b6366a43e6dc4945ae32972f157fc","impliedFormat":99},{"version":"dc21879e45f3a023b5fe459c3da5f2f3cf995f21a1ac533049d8950ce394c045","impliedFormat":99},{"version":"622d6ce66ac838d5d7e968daf4ae760cf49797e3fbfaa2b21d01e0fb5d625bc9","impliedFormat":99},{"version":"ecfa30418b2200ba6496b5f59b4c09a95cce9ea37c1daaf5a5db9bb306ee038f","impliedFormat":99},{"version":"3b56e30b1cbe1bfa7710e88e5e0b8fa6eddc7c2e67615f73bdf8637af68403e6","impliedFormat":99},{"version":"92a8de4f8f6595bf1eb24a19aebff7371c66ae8751f2e045edd9e25ca435e4a2","impliedFormat":99},{"version":"01810afb0ed31afdea0846cee91e85a474727d0966e5bb57c2a4a732854deab1","impliedFormat":99},{"version":"c874e98cd875727ea62fdcd978ac9e067ce07cf7493aa4b8b193fdc3b7318eea","impliedFormat":99},{"version":"455e843c1f8e0df452f101c9ec0b63ab8e749f296c947249f8bbc29bff58c83c","impliedFormat":99},{"version":"eadc4c556b494cc52676e084eadf0b60fb2cc6e2408d1411eeae5cb74068ca86","impliedFormat":99},{"version":"3b8689266e8fb628ca2068ff610ed0b842ff4e407c3a914358ef1895dabfcfcd","impliedFormat":99},{"version":"fc741907f6d8158b2c4722932d745b11dd41f9355a5b325c8cd3cdfbd966d76d","impliedFormat":99},{"version":"287ed9a1255a657e9ddfec8e5e2a09a6203729756394d9fbddc01ae8baa669be","signature":"b7bdd0dd41019192624068d8ced8bee71c172ee5400be340fbc1981faaf9be11"},{"version":"ead462349070b9e408ec678066fb746f9bbf2394f9537cb0dda039bb585a3970","signature":"0a6e8b8d8fb5c44978ebe6ee3b126173413eceaa26685cf6a655d4a3e045b1f4"},{"version":"eaad45da90a2b0687f976ef3bc12b30b5fe129b1a0ba2ab725b7d1d108a440f4","signature":"02fddb3f9d305bfae364e1618d29f2b10ea82e7a3577f1a4f43bd8bd6a35fe26"},{"version":"df1f9cf91ce9994250736555d80cfc7a3eac9f7ff022a8462758d3d9e9372d2c","signature":"a74609c36a11ec7ee49d39f1180a3712c1d3b00c1de5f0dae5c494e6b396ee15"},{"version":"747a9ba6b43ba000c191aee36e2ac050560d9cc1e7429ca5a0104bf7dd6c0539","signature":"20e95c1a7cb1d725f42bfa7bbc6373bf01a51ba2a97abff843876425de6e81ff"},"bde8eac852e3159a5116a6c0550e91ccb26b3ca027a83ff88794d3191960294d",{"version":"7ded823c7fbc309e9f1d1941e6dd76eae5d34c56b0eaffefbd58502862bf0215","signature":"cd6a6324c0e55ea1a7e5d692201bce065c65a0a78b53b88c4819d4628ee6e7f9"},{"version":"4d9df03984d802f699d9544a0314a62661b0b9f2614c1219b0ed9b480ff2cd30","signature":"201d46aad36c4c3143ffbfdc1eee8ba45531a14e03034796f83d1bad178b1e58"},{"version":"db8a7d171d08d92cb867f4a98f86e55b1c892e332f4167ad3b7e4a048de3710b","signature":"ede9816729361897e2dd6720a4fd65e95a9b38f68b4b37e0b8d4e62aa1d179e6"},{"version":"d57fa1874e902fcd4b2425132c9d354133baf44b2d5a245db4f1409bc7c1a221","signature":"29ccdcae487d54fc1aab33bda0c11a2fe817fcb84e14abe6cba8286423ae9187"},{"version":"9af43ee55a033d8d8f19b8b017599567bcb21407246a3b3c2aa4f2c7d7ae2564","signature":"ad2dba18b42a48557e4da3ae490254ed306d6777266607c694f0569e6b901a88"},{"version":"f130b0fdb2acb316e319d0539a1b87e2655fbddc6579eccb98cc248b9a2c29cf","signature":"3383d7720a22c25cdd627089c4486b5f55d6de17c8ad98d5e44e2922a205384a"},{"version":"d67107c86386306ae50d3d22f46f785cedab6ef14951ed0df08c9fd3eaabc175","signature":"abb42d09423a617eeb8a0e378b2747bf358d313e12d1d02ade80562685141399"},{"version":"a313c591a500fb12196c5a78cbca6b8e2976480bad011622d0e654dc7a16a602","signature":"1f8739671eb4d4b7da809092317a5de94be2663bab6c00888cf5103d22fb6c48"},{"version":"03b78fb195c29b4b32adc69948bb1e7d6b7523de9da1adfda36eddc9818a997e","signature":"c6ba871646e24ac250b51410ca9570ab66383e458c01ecc821ee16be175c202f"},{"version":"a0b7031d03d21d08b219830396bd8889a2228d49ddb1aef769f6d36181cc449c","signature":"24e4496d7c500d026ad5569d8913ad68485981140fd9f74084514c57e97610c5"},"426f6a12c49562d030a7547cf53ffc2e975ed61657ded32a23064ee3ab5f2eea",{"version":"295cc3fc76d4c22a03f1709a0a3723f5f58a113dc67d869c511a6026025cea70","signature":"9de9662b9db8d759f466bc33759014a4e2fd142c48b25f18fcdce1205c5b9b23"},{"version":"e53b528cf1519c81f8ce7933858885bb6bd7c5a93087916a4dfdc4f810ca47b7","signature":"77422a4a6cc0f7e60fff5a9f01c886bf937d517a041232a212260ba9edb5ced4"},{"version":"590d2cab58117beeb257a5758e79b047d1c3139bff1ef8d5b0b949837d6317c5","signature":"6a09587ee1d53b4f754f1d888defe0040e8bdd89b6570600f9b8b3615dd79520"},{"version":"4e252c7c76a3a62e72d0255d081f48a17a20e2e139678d42f102b3129766539e","signature":"5ddfad7f04718346e91f917b0435f6621b788fc1c78b9de809a8b4f7e657ee9d"},"93ec9d32eac1a870ffd71f2c037af2e8e6683762566f7f102c95f82c561d3fef",{"version":"ddb4d73ad6806c9d515d026ec6d1187e76698a449799f55dcb6d9cd82efaa709","signature":"ea7ccab2126bb0856886c495e9456ff7cdea09cb5faf28f0d3923ce44d68335c"},{"version":"3cb85796c812503915ba61e01eac7abb7ebaa680abe1d8366d21832f580faeff","signature":"31ba7ceb1a86423986699344bd5a409866c93e52f931d09354d8a888c4931d04"},{"version":"66f847958c8f4865fc4f7e17d645d1f9fbdfb8809adfe0b308d85ea0f436e8f7","signature":"2c31be273ceb93da6aa29fc5cd535c8dbe7f4d543dc73a997e18b8a1fc39929b"},{"version":"afe98ee091efb1791af3e9a08e7e4fba2b3f82741a2ef443d8abebada5f11d48","signature":"b2228a66027d1aefc5a777c45237fed9b65225403840d35d346e19be903830f6"},"a77fae76bd6e42cd17b2fa2c82400f18ac19d2e4b1fef3b68c799485ecf4d74a",{"version":"948d1ff585a5296583bca538a93ccdc6d8be6b8f3b70538cfddc38985d87f7ae","signature":"685752e808632b60525b0542096bf632df10cfe142a1786d01441e9b0cff18c7"},{"version":"7e4d37309d061bb91ec0edc810b3c38d4b89229a0bb7189bc7a54e49661bc169","signature":"d849b4aba5b29e81051f8e733d6e15e87e9072712549d6ea52cc4adae538199d"},{"version":"b4a91ccc65590507b2848adec657f8840df9c6f7eb3ba88e5cea1bc182cc5916","signature":"7877583d2968dc42e5a9ed506825ac661bec8502394efca99a5fbd95dc029288"},"2552a31fad45a9ed1bde87e51b038dc0e786cd364b597162263abbf57018949b","0b2b18b83760e7e631849459a348b15a58005c06db87b8ca1a94acdc44dc8d32",{"version":"dc94787cb4f02ed26312bfa7e08688fc988a75ec864fbe7ac019db1e5d941b4d","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"887b047e6ecd5920678596712bafb08d1744177eb786ee65d5a2dcee935845a0","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"7dbadff629693d30090559c66fc1d7abd34a0eedb4a830ac9793df9f76584fb0","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},"1709aacf07fe6142881570c41c2d74474e8b7d540bab167a617ed87abc77afaa","f219459cc78e2f6584122db61fa0faf2c21aaf50606895fe53d5da1bc8247231",{"version":"0556216143c5b0e95d3baf9f5567175134c6d9fe9b633438a903216e90c1731f","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"0e60d159e9f8dbaf3b50f8c2008aaac654ebfd85e29c3dc60e8b3609a6f63a8d","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"31b401d5eedbabf74bcfd1d9e47a33736771c29f0a2359426b47a78e73c4c561","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"18dd21d71899d1742787ba665c7c921f81fd2dfa46f13c22a5163cfdb1878874","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},"0c872af02f75fe6baeea7d7088e3b097c1c81da3a36723544213d01ffbe36844",{"version":"8134e6b69208e8a8d9d82598c6dbd8b05ffac32422633fcf6e4660c226cd360d","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"36253004000a41031521919909f3a8a893dcbe9e8705885fabe9518a7960e51d","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},"03cb603502478c9ef905e9874910cb61c34154a60374188beed6059d2079a2df",{"version":"728f9123fdb11574e1ff15ff1b620142e828630a811df050a4a56317e8473798","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},"507ccebe35427617298af6ed0cb3b2a9b0a88433e71ff7e7a17f744a8f4b0195",{"version":"9633659068f5b8c03d849da45d6bc879e80d80b2e8965f89b3fa434a11851c93","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"e24adae4c1b89ca4714c9eb8d69bf478e4220e33268728b8b87d24d1f69dced3","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"4a308405daf9f5e2a2bc93d1bd3e3945486dca89aed2943edf98beac2e2ec748","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},"7b9555cc4e5ba0f08a27742b47654b8b1c85441dfbc825ff0ccdbed41e69fb19",{"version":"ab87ce72ed9fb21aaa8143ac2d24ccea2ad832cc7e46c823ccf5d804663100f9","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"f2db5d9f9c9293636e35ba5cc5a54a7b3ef7f4606df97e36d20fe08ef058c147","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"4e444c99d7631fc09407fd3922d3ea5a4e3e2490efd230f3bb2136d5033b341c","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"623030d1f80562b4204a2adae46274537007fcb7ee9f3ff9f583e5afcb35d7e4","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"71fcb551c1e2e2d671818b804f667e939f0038570e625d2663ab29ef1ca41254","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"eb64a1b5296c45cfae713c16cdbbe7a291c7a653434215e05ca3991705184d4a","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"c02e8bd87f82f0464b331e5295de3d50c1bc543c03935a1644e407278d6b19d1","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"060c2d5482bdf793110ecd73fd0c53043592c4a9a2c1d758dbf1515ea4f01397","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"e8aefc9034cedd62ebe09f69dcfaced3eab4d121bf2f0274695734cf7a0d5b8c","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},"5126e995ddf6bf98ead9841103f1e11554c3e62f3d4b6d51488a7e6e96d05ac3",{"version":"d56202ca686dd05e2438267656b388cffe9b03dac101b25581bebbec89d9611d","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"63ae07043106d30122844b6b89198047cf96c7f18297d3707f87016fd8a3d48e","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"2a6366b2a036a620b342699d37c5a97981fdda122cf3b2fa6654a97146619377","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","impliedFormat":1}],"root":[83,500,501,[526,535],555,556,[713,728],[730,741],[746,748],[752,815],[858,921]],"options":{"allowJs":true,"esModuleInterop":true,"jsx":1,"module":99,"skipLibCheck":true,"strict":true,"target":4},"referencedMap":[[891,1],[892,2],[893,3],[894,4],[895,5],[896,6],[897,7],[898,8],[899,9],[900,10],[902,11],[901,12],[903,13],[904,14],[905,15],[906,16],[907,17],[908,18],[890,19],[909,20],[910,21],[911,22],[912,23],[913,24],[914,25],[915,26],[916,27],[917,28],[918,29],[919,30],[920,31],[921,32],[888,33],[83,34],[889,35],[764,36],[766,37],[776,34],[773,38],[771,39],[769,40],[775,41],[777,40],[767,40],[768,42],[772,43],[774,40],[779,44],[785,45],[784,46],[786,47],[530,34],[531,34],[746,48],[787,49],[788,36],[789,37],[793,34],[792,50],[795,51],[790,34],[796,52],[791,53],[794,54],[532,34],[797,34],[798,55],[810,56],[528,34],[799,57],[800,58],[805,52],[806,34],[809,34],[808,59],[802,34],[803,34],[801,34],[807,52],[804,34],[747,60],[811,34],[812,61],[814,62],[813,63],[815,64],[533,34],[858,65],[859,66],[860,67],[748,34],[534,34],[861,68],[862,69],[863,70],[535,34],[756,71],[757,48],[762,72],[864,73],[865,74],[866,75],[867,36],[868,37],[869,76],[870,36],[871,37],[527,36],[727,77],[732,77],[726,78],[728,79],[725,80],[730,81],[731,52],[724,77],[734,82],[735,79],[723,34],[874,83],[877,34],[876,34],[873,52],[882,52],[880,34],[879,84],[875,52],[878,34],[881,34],[883,52],[884,85],[529,86],[885,36],[886,37],[763,87],[887,49],[720,52],[721,52],[759,88],[760,89],[761,52],[754,90],[719,52],[718,88],[765,60],[758,91],[782,34],[783,52],[781,34],[780,34],[722,52],[778,52],[755,52],[872,34],[770,92],[714,93],[752,94],[717,52],[715,95],[716,96],[753,52],[738,97],[736,98],[737,52],[556,34],[555,34],[739,34],[740,99],[713,100],[741,34],[733,34],[500,101],[501,36],[680,102],[682,103],[683,104],[666,105],[670,106],[690,107],[669,107],[672,108],[664,34],[691,107],[665,107],[692,107],[671,109],[661,110],[681,102],[694,111],[685,112],[684,34],[687,113],[686,34],[693,114],[677,115],[676,34],[698,116],[660,117],[688,118],[659,119],[697,34],[673,111],[689,111],[678,111],[675,120],[674,111],[679,34],[656,120],[655,34],[657,111],[663,105],[668,111],[667,111],[695,121],[696,111],[658,122],[662,121],[579,123],[558,123],[614,34],[594,34],[626,34],[557,34],[605,124],[606,125],[572,126],[559,34],[568,34],[569,127],[570,34],[571,128],[567,129],[560,34],[564,34],[589,129],[587,130],[575,131],[601,132],[577,34],[582,34],[578,133],[573,129],[574,134],[576,134],[580,34],[581,34],[604,135],[593,136],[591,34],[592,137],[607,138],[603,139],[621,140],[615,141],[624,142],[625,143],[595,144],[611,34],[600,145],[597,129],[652,146],[598,147],[634,148],[633,34],[640,149],[639,34],[642,150],[641,34],[644,151],[643,34],[636,152],[635,34],[638,153],[637,153],[653,154],[648,155],[654,156],[566,157],[563,158],[562,34],[613,159],[627,160],[647,34],[632,34],[599,161],[617,162],[616,163],[619,164],[622,162],[623,165],[629,166],[602,34],[583,34],[618,167],[620,34],[649,168],[631,169],[609,34],[612,129],[586,170],[585,34],[650,171],[584,34],[651,172],[590,173],[588,34],[561,34],[628,174],[565,34],[646,175],[596,34],[630,176],[645,34],[608,34],[610,177],[704,178],[703,179],[705,178],[707,180],[709,181],[710,182],[708,183],[702,181],[712,184],[699,185],[700,185],[711,34],[701,100],[706,186],[536,34],[542,187],[538,188],[541,189],[546,190],[548,191],[543,192],[540,193],[539,34],[554,194],[547,34],[544,34],[537,34],[550,195],[549,196],[552,34],[545,34],[551,190],[553,197],[249,34],[820,198],[826,199],[828,200],[821,201],[829,202],[827,203],[830,34],[822,204],[823,202],[831,205],[832,198],[835,206],[824,207],[833,208],[834,209],[825,210],[922,34],[816,34],[923,34],[924,34],[817,211],[146,212],[147,212],[148,213],[101,214],[149,215],[150,216],[151,217],[96,34],[99,218],[97,34],[98,34],[152,219],[153,220],[154,221],[155,222],[156,223],[157,224],[158,224],[159,225],[160,226],[161,227],[162,228],[102,34],[100,34],[163,229],[164,230],[165,231],[199,232],[166,233],[167,34],[168,234],[169,235],[170,236],[171,237],[172,238],[173,239],[174,240],[175,241],[176,242],[177,242],[178,243],[179,34],[180,244],[181,245],[183,246],[182,247],[184,248],[185,249],[186,250],[187,251],[188,252],[189,253],[190,254],[191,255],[192,256],[193,257],[194,258],[195,259],[196,260],[103,34],[104,34],[105,34],[143,261],[144,34],[145,34],[197,262],[198,263],[86,34],[203,264],[358,52],[204,265],[202,52],[359,266],[200,267],[201,268],[84,34],[87,269],[356,52],[267,52],[85,34],[729,34],[94,270],[446,271],[451,33],[453,272],[225,273],[253,274],[429,275],[248,276],[236,34],[217,34],[223,34],[419,277],[284,278],[224,34],[388,279],[258,280],[259,281],[355,282],[416,283],[371,284],[423,285],[424,286],[422,287],[421,34],[420,288],[255,289],[226,290],[305,34],[306,291],[221,34],[237,292],[227,293],[289,292],[286,292],[210,292],[251,294],[250,34],[428,295],[438,34],[216,34],[331,296],[332,297],[326,52],[474,34],[334,34],[335,298],[327,299],[480,300],[478,301],[473,34],[415,302],[414,34],[472,303],[328,52],[367,304],[365,305],[475,34],[479,34],[477,306],[476,34],[366,307],[467,308],[470,309],[296,310],[295,311],[294,312],[483,52],[293,313],[278,34],[486,34],[750,314],[749,34],[489,34],[742,315],[743,316],[488,52],[490,317],[206,34],[425,318],[426,319],[427,320],[239,34],[215,321],[205,34],[347,52],[208,322],[346,323],[345,324],[336,34],[337,34],[344,34],[339,34],[342,325],[338,34],[340,326],[343,327],[341,326],[222,34],[213,34],[214,292],[268,328],[269,329],[266,330],[264,331],[265,332],[261,34],[353,298],[373,298],[445,333],[454,334],[458,335],[432,336],[431,34],[281,34],[491,337],[441,338],[329,339],[330,340],[321,341],[311,34],[352,342],[312,343],[354,344],[349,345],[348,34],[350,34],[364,346],[433,347],[434,348],[314,349],[318,350],[309,351],[411,352],[440,353],[288,354],[389,355],[211,356],[439,357],[207,276],[262,34],[270,358],[400,359],[260,34],[399,360],[95,34],[394,361],[238,34],[307,362],[390,34],[212,34],[271,34],[398,363],[220,34],[276,364],[317,365],[430,366],[316,34],[397,34],[263,34],[402,367],[403,368],[218,34],[405,369],[407,370],[406,371],[241,34],[396,356],[409,372],[395,373],[401,374],[229,34],[232,34],[230,34],[234,34],[231,34],[233,34],[235,375],[228,34],[381,376],[380,34],[386,377],[382,378],[385,379],[384,379],[387,377],[383,378],[744,380],[275,381],[374,382],[437,383],[493,34],[462,384],[464,385],[313,34],[463,386],[435,347],[492,387],[333,347],[219,34],[315,388],[272,389],[273,390],[274,391],[304,392],[410,392],[290,392],[375,393],[291,393],[257,394],[256,34],[379,395],[378,396],[377,397],[376,398],[436,399],[325,400],[361,401],[324,402],[357,403],[360,404],[418,405],[417,406],[413,407],[370,408],[372,409],[369,410],[408,411],[363,34],[450,34],[362,412],[412,34],[277,413],[310,318],[308,414],[279,415],[282,416],[487,34],[280,417],[283,417],[448,34],[447,34],[449,34],[485,34],[285,418],[323,52],[93,34],[368,419],[254,34],[243,420],[319,34],[456,52],[466,421],[303,52],[460,298],[302,422],[443,423],[301,421],[209,34],[468,424],[299,52],[300,52],[292,34],[242,34],[298,425],[297,426],[240,427],[320,241],[287,241],[404,34],[392,428],[391,34],[452,34],[351,429],[322,52],[444,430],[88,52],[91,431],[92,432],[89,52],[90,34],[252,433],[247,434],[246,34],[245,435],[244,34],[442,436],[455,437],[457,438],[459,439],[751,440],[461,441],[465,442],[499,443],[469,443],[498,444],[471,445],[481,446],[745,447],[482,448],[484,449],[494,450],[497,321],[496,34],[495,451],[518,452],[516,453],[517,454],[505,455],[506,453],[513,456],[504,457],[509,458],[519,34],[510,459],[515,460],[521,461],[520,462],[503,463],[511,464],[512,465],[507,466],[514,452],[508,467],[819,201],[836,468],[837,468],[839,469],[840,470],[818,198],[841,468],[857,471],[838,468],[842,201],[843,201],[844,468],[845,52],[846,468],[847,472],[848,468],[849,468],[850,201],[851,468],[852,468],[853,468],[854,468],[855,468],[856,201],[393,473],[502,34],[524,474],[523,34],[522,34],[525,475],[81,34],[82,34],[13,34],[14,34],[16,34],[15,34],[2,34],[17,34],[18,34],[19,34],[20,34],[21,34],[22,34],[23,34],[24,34],[3,34],[25,34],[26,34],[4,34],[27,34],[31,34],[28,34],[29,34],[30,34],[32,34],[33,34],[34,34],[5,34],[35,34],[36,34],[37,34],[38,34],[6,34],[42,34],[39,34],[40,34],[41,34],[43,34],[7,34],[44,34],[49,34],[50,34],[45,34],[46,34],[47,34],[48,34],[8,34],[54,34],[51,34],[52,34],[53,34],[55,34],[9,34],[56,34],[57,34],[58,34],[60,34],[59,34],[61,34],[62,34],[10,34],[63,34],[64,34],[65,34],[11,34],[66,34],[67,34],[68,34],[69,34],[70,34],[1,34],[71,34],[72,34],[12,34],[76,34],[74,34],[79,34],[78,34],[73,34],[77,34],[75,34],[80,34],[121,476],[131,477],[120,476],[141,478],[112,479],[111,480],[140,451],[134,481],[139,482],[114,483],[128,484],[113,485],[137,486],[109,487],[108,451],[138,488],[110,489],[115,490],[116,34],[119,490],[106,34],[142,491],[132,492],[123,493],[124,494],[126,495],[122,496],[125,497],[135,451],[117,498],[118,499],[127,500],[107,501],[130,492],[129,490],[133,34],[136,502],[526,503]],"affectedFilesPendingEmit":[891,892,893,894,895,896,897,898,899,900,902,901,903,904,905,906,907,908,890,909,910,911,912,913,914,915,916,917,918,919,920,921,889,764,766,776,773,771,769,775,777,767,768,772,774,779,785,784,786,530,531,746,787,788,789,793,792,795,790,796,791,794,532,797,798,810,528,799,800,805,806,809,808,802,803,801,807,804,747,811,812,814,813,815,533,858,859,860,748,534,861,862,863,535,756,757,762,864,865,866,867,868,869,870,871,527,727,732,726,728,725,730,731,724,734,735,723,874,877,876,873,882,880,879,875,878,881,883,884,529,885,886,763,887,720,721,759,760,761,754,719,718,765,758,782,783,781,780,722,778,755,872,770,714,752,717,715,716,753,738,736,737,556,555,739,740,713,741,733,501,526],"version":"5.9.3"} \ No newline at end of file +{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/typescript/lib/lib.es2024.d.ts","./node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/typescript/lib/lib.es2023.collection.d.ts","./node_modules/typescript/lib/lib.es2023.intl.d.ts","./node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2024.collection.d.ts","./node_modules/typescript/lib/lib.es2024.object.d.ts","./node_modules/typescript/lib/lib.es2024.promise.d.ts","./node_modules/typescript/lib/lib.es2024.regexp.d.ts","./node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2024.string.d.ts","./node_modules/typescript/lib/lib.esnext.array.d.ts","./node_modules/typescript/lib/lib.esnext.collection.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/typescript/lib/lib.esnext.promise.d.ts","./node_modules/typescript/lib/lib.esnext.decorators.d.ts","./node_modules/typescript/lib/lib.esnext.iterator.d.ts","./node_modules/typescript/lib/lib.esnext.float16.d.ts","./node_modules/typescript/lib/lib.esnext.error.d.ts","./node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./.next/types/routes.d.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/prop-types/index.d.ts","./node_modules/@types/react/index.d.ts","./node_modules/next/dist/styled-jsx/types/css.d.ts","./node_modules/next/dist/styled-jsx/types/macro.d.ts","./node_modules/next/dist/styled-jsx/types/style.d.ts","./node_modules/next/dist/styled-jsx/types/global.d.ts","./node_modules/next/dist/styled-jsx/types/index.d.ts","./node_modules/next/dist/shared/lib/amp.d.ts","./node_modules/next/amp.d.ts","./node_modules/next/dist/server/get-page-files.d.ts","./node_modules/@types/node/compatibility/disposable.d.ts","./node_modules/@types/node/compatibility/indexable.d.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/compatibility/index.d.ts","./node_modules/@types/node/globals.typedarray.d.ts","./node_modules/@types/node/buffer.buffer.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/@types/node/web-globals/events.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/web-globals/fetch.d.ts","./node_modules/@types/node/web-globals/navigator.d.ts","./node_modules/@types/node/web-globals/storage.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/inspector.generated.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/sqlite.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/@types/react/canary.d.ts","./node_modules/@types/react/experimental.d.ts","./node_modules/@types/react-dom/index.d.ts","./node_modules/@types/react-dom/canary.d.ts","./node_modules/@types/react-dom/experimental.d.ts","./node_modules/next/dist/lib/fallback.d.ts","./node_modules/next/dist/compiled/webpack/webpack.d.ts","./node_modules/next/dist/server/config.d.ts","./node_modules/next/dist/lib/load-custom-routes.d.ts","./node_modules/next/dist/shared/lib/image-config.d.ts","./node_modules/next/dist/build/webpack/plugins/subresource-integrity-plugin.d.ts","./node_modules/next/dist/server/body-streams.d.ts","./node_modules/next/dist/server/lib/cache-control.d.ts","./node_modules/next/dist/lib/setup-exception-listeners.d.ts","./node_modules/next/dist/lib/worker.d.ts","./node_modules/next/dist/lib/constants.d.ts","./node_modules/next/dist/client/components/app-router-headers.d.ts","./node_modules/next/dist/build/rendering-mode.d.ts","./node_modules/next/dist/server/lib/router-utils/build-prefetch-segment-data-route.d.ts","./node_modules/next/dist/server/require-hook.d.ts","./node_modules/next/dist/server/lib/experimental/ppr.d.ts","./node_modules/next/dist/build/webpack/plugins/app-build-manifest-plugin.d.ts","./node_modules/next/dist/lib/page-types.d.ts","./node_modules/next/dist/build/segment-config/app/app-segment-config.d.ts","./node_modules/next/dist/build/segment-config/pages/pages-segment-config.d.ts","./node_modules/next/dist/build/analysis/get-page-static-info.d.ts","./node_modules/next/dist/build/webpack/loaders/get-module-build-info.d.ts","./node_modules/next/dist/build/webpack/plugins/middleware-plugin.d.ts","./node_modules/next/dist/server/node-polyfill-crypto.d.ts","./node_modules/next/dist/server/node-environment-baseline.d.ts","./node_modules/next/dist/server/node-environment-extensions/error-inspect.d.ts","./node_modules/next/dist/server/node-environment-extensions/random.d.ts","./node_modules/next/dist/server/node-environment-extensions/date.d.ts","./node_modules/next/dist/server/node-environment-extensions/web-crypto.d.ts","./node_modules/next/dist/server/node-environment-extensions/node-crypto.d.ts","./node_modules/next/dist/server/node-environment.d.ts","./node_modules/next/dist/build/page-extensions-type.d.ts","./node_modules/next/dist/build/webpack/plugins/flight-manifest-plugin.d.ts","./node_modules/next/dist/server/instrumentation/types.d.ts","./node_modules/next/dist/lib/coalesced-function.d.ts","./node_modules/next/dist/shared/lib/router/utils/middleware-route-matcher.d.ts","./node_modules/next/dist/server/lib/router-utils/types.d.ts","./node_modules/next/dist/shared/lib/modern-browserslist-target.d.ts","./node_modules/next/dist/shared/lib/constants.d.ts","./node_modules/next/dist/trace/types.d.ts","./node_modules/next/dist/trace/trace.d.ts","./node_modules/next/dist/trace/shared.d.ts","./node_modules/next/dist/trace/index.d.ts","./node_modules/next/dist/build/load-jsconfig.d.ts","./node_modules/@next/env/dist/index.d.ts","./node_modules/next/dist/build/webpack/plugins/telemetry-plugin/use-cache-tracker-utils.d.ts","./node_modules/next/dist/build/webpack/plugins/telemetry-plugin/telemetry-plugin.d.ts","./node_modules/next/dist/telemetry/storage.d.ts","./node_modules/next/dist/build/build-context.d.ts","./node_modules/next/dist/shared/lib/bloom-filter.d.ts","./node_modules/next/dist/build/webpack-config.d.ts","./node_modules/next/dist/server/route-kind.d.ts","./node_modules/next/dist/server/route-definitions/route-definition.d.ts","./node_modules/next/dist/build/swc/generated-native.d.ts","./node_modules/next/dist/build/swc/types.d.ts","./node_modules/next/dist/server/dev/parse-version-info.d.ts","./node_modules/next/dist/next-devtools/shared/types.d.ts","./node_modules/next/dist/server/dev/dev-indicator-server-state.d.ts","./node_modules/next/dist/server/lib/parse-stack.d.ts","./node_modules/next/dist/next-devtools/server/shared.d.ts","./node_modules/next/dist/next-devtools/shared/stack-frame.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/utils/get-error-by-type.d.ts","./node_modules/@types/react/jsx-runtime.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/container/runtime-error/render-error.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/shared.d.ts","./node_modules/next/dist/server/dev/hot-reloader-types.d.ts","./node_modules/next/dist/server/lib/cache-handlers/types.d.ts","./node_modules/next/dist/server/response-cache/types.d.ts","./node_modules/next/dist/server/resume-data-cache/cache-store.d.ts","./node_modules/next/dist/server/resume-data-cache/resume-data-cache.d.ts","./node_modules/next/dist/server/render-result.d.ts","./node_modules/next/dist/server/lib/i18n-provider.d.ts","./node_modules/next/dist/server/web/next-url.d.ts","./node_modules/next/dist/compiled/@edge-runtime/cookies/index.d.ts","./node_modules/next/dist/server/web/spec-extension/cookies.d.ts","./node_modules/next/dist/server/web/spec-extension/request.d.ts","./node_modules/next/dist/server/after/builtin-request-context.d.ts","./node_modules/next/dist/server/web/spec-extension/fetch-event.d.ts","./node_modules/next/dist/server/web/spec-extension/response.d.ts","./node_modules/next/dist/build/segment-config/middleware/middleware-config.d.ts","./node_modules/next/dist/server/web/types.d.ts","./node_modules/next/dist/build/webpack/plugins/pages-manifest-plugin.d.ts","./node_modules/next/dist/shared/lib/router/utils/parse-url.d.ts","./node_modules/next/dist/server/base-http/node.d.ts","./node_modules/next/dist/build/webpack/plugins/next-font-manifest-plugin.d.ts","./node_modules/next/dist/server/route-definitions/locale-route-definition.d.ts","./node_modules/next/dist/server/route-definitions/pages-route-definition.d.ts","./node_modules/next/dist/shared/lib/mitt.d.ts","./node_modules/next/dist/client/with-router.d.ts","./node_modules/next/dist/client/router.d.ts","./node_modules/next/dist/client/route-loader.d.ts","./node_modules/next/dist/client/page-loader.d.ts","./node_modules/next/dist/shared/lib/router/router.d.ts","./node_modules/next/dist/shared/lib/router-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/loadable-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/loadable.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/image-config-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.d.ts","./node_modules/next/dist/server/route-definitions/app-page-route-definition.d.ts","./node_modules/next/dist/build/webpack/loaders/metadata/types.d.ts","./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.d.ts","./node_modules/next/dist/server/lib/app-dir-module.d.ts","./node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.d.ts","./node_modules/next/dist/server/async-storage/draft-mode-provider.d.ts","./node_modules/next/dist/server/web/spec-extension/adapters/headers.d.ts","./node_modules/next/dist/server/app-render/cache-signal.d.ts","./node_modules/next/dist/server/app-render/dynamic-rendering.d.ts","./node_modules/next/dist/server/request/fallback-params.d.ts","./node_modules/next/dist/server/app-render/work-unit-async-storage-instance.d.ts","./node_modules/next/dist/server/response-cache/index.d.ts","./node_modules/next/dist/server/lib/lazy-result.d.ts","./node_modules/next/dist/server/lib/implicit-tags.d.ts","./node_modules/next/dist/server/app-render/work-unit-async-storage.external.d.ts","./node_modules/next/dist/shared/lib/deep-readonly.d.ts","./node_modules/next/dist/shared/lib/router/utils/parse-relative-url.d.ts","./node_modules/next/dist/server/app-render/app-render.d.ts","./node_modules/next/dist/shared/lib/server-inserted-html.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/amp-context.shared-runtime.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/entrypoints.d.ts","./node_modules/next/dist/server/route-modules/app-page/module.compiled.d.ts","./node_modules/next/dist/client/components/error-boundary.d.ts","./node_modules/next/dist/client/components/layout-router.d.ts","./node_modules/next/dist/client/components/render-from-template-context.d.ts","./node_modules/next/dist/server/app-render/action-async-storage-instance.d.ts","./node_modules/next/dist/server/app-render/action-async-storage.external.d.ts","./node_modules/next/dist/client/components/client-page.d.ts","./node_modules/next/dist/client/components/client-segment.d.ts","./node_modules/next/dist/server/request/search-params.d.ts","./node_modules/next/dist/client/components/hooks-server-context.d.ts","./node_modules/next/dist/client/components/http-access-fallback/error-boundary.d.ts","./node_modules/next/dist/lib/metadata/types/alternative-urls-types.d.ts","./node_modules/next/dist/lib/metadata/types/extra-types.d.ts","./node_modules/next/dist/lib/metadata/types/metadata-types.d.ts","./node_modules/next/dist/lib/metadata/types/manifest-types.d.ts","./node_modules/next/dist/lib/metadata/types/opengraph-types.d.ts","./node_modules/next/dist/lib/metadata/types/twitter-types.d.ts","./node_modules/next/dist/lib/metadata/types/metadata-interface.d.ts","./node_modules/next/dist/lib/metadata/types/resolvers.d.ts","./node_modules/next/dist/lib/metadata/types/icons.d.ts","./node_modules/next/dist/lib/metadata/resolve-metadata.d.ts","./node_modules/next/dist/lib/metadata/metadata.d.ts","./node_modules/next/dist/lib/framework/boundary-components.d.ts","./node_modules/next/dist/server/app-render/rsc/preloads.d.ts","./node_modules/next/dist/server/app-render/rsc/postpone.d.ts","./node_modules/next/dist/server/app-render/rsc/taint.d.ts","./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.d.ts","./node_modules/next/dist/server/app-render/collect-segment-data.d.ts","./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.d.ts","./node_modules/next/dist/server/app-render/entry-base.d.ts","./node_modules/next/dist/build/templates/app-page.d.ts","./node_modules/@types/react/jsx-dev-runtime.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/entrypoints.d.ts","./node_modules/@types/react-dom/client.d.ts","./node_modules/@types/react-dom/server.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/entrypoints.d.ts","./node_modules/next/dist/server/route-modules/app-page/module.d.ts","./node_modules/next/dist/server/web/adapter.d.ts","./node_modules/next/dist/server/use-cache/cache-life.d.ts","./node_modules/next/dist/server/app-render/types.d.ts","./node_modules/next/dist/client/components/router-reducer/router-reducer-types.d.ts","./node_modules/next/dist/client/flight-data-helpers.d.ts","./node_modules/next/dist/client/components/router-reducer/fetch-server-response.d.ts","./node_modules/next/dist/shared/lib/app-router-context.shared-runtime.d.ts","./node_modules/next/dist/server/route-modules/pages/vendored/contexts/entrypoints.d.ts","./node_modules/next/dist/server/route-modules/pages/module.compiled.d.ts","./node_modules/next/dist/build/templates/pages.d.ts","./node_modules/next/dist/server/route-modules/pages/module.d.ts","./node_modules/next/dist/next-devtools/userspace/pages/pages-dev-overlay-setup.d.ts","./node_modules/next/dist/server/render.d.ts","./node_modules/next/dist/server/route-definitions/pages-api-route-definition.d.ts","./node_modules/next/dist/server/route-matches/pages-api-route-match.d.ts","./node_modules/next/dist/server/route-matchers/route-matcher.d.ts","./node_modules/next/dist/server/route-matcher-providers/route-matcher-provider.d.ts","./node_modules/next/dist/server/route-matcher-managers/route-matcher-manager.d.ts","./node_modules/next/dist/server/normalizers/normalizer.d.ts","./node_modules/next/dist/server/normalizers/locale-route-normalizer.d.ts","./node_modules/next/dist/server/normalizers/request/pathname-normalizer.d.ts","./node_modules/next/dist/server/normalizers/request/suffix.d.ts","./node_modules/next/dist/server/normalizers/request/rsc.d.ts","./node_modules/next/dist/server/normalizers/request/prefetch-rsc.d.ts","./node_modules/next/dist/server/normalizers/request/next-data.d.ts","./node_modules/next/dist/server/normalizers/request/segment-prefix-rsc.d.ts","./node_modules/next/dist/build/static-paths/types.d.ts","./node_modules/next/dist/server/base-server.d.ts","./node_modules/next/dist/server/lib/async-callback-set.d.ts","./node_modules/next/dist/shared/lib/router/utils/route-regex.d.ts","./node_modules/next/dist/shared/lib/router/utils/route-matcher.d.ts","./node_modules/sharp/lib/index.d.ts","./node_modules/next/dist/server/image-optimizer.d.ts","./node_modules/next/dist/server/next-server.d.ts","./node_modules/next/dist/server/lib/types.d.ts","./node_modules/next/dist/server/lib/lru-cache.d.ts","./node_modules/next/dist/server/lib/dev-bundler-service.d.ts","./node_modules/next/dist/server/dev/static-paths-worker.d.ts","./node_modules/next/dist/server/dev/next-dev-server.d.ts","./node_modules/next/dist/server/next.d.ts","./node_modules/next/dist/server/lib/render-server.d.ts","./node_modules/next/dist/server/lib/router-server.d.ts","./node_modules/next/dist/shared/lib/router/utils/path-match.d.ts","./node_modules/next/dist/server/lib/router-utils/filesystem.d.ts","./node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.d.ts","./node_modules/next/dist/server/lib/router-utils/router-server-context.d.ts","./node_modules/next/dist/server/route-modules/route-module.d.ts","./node_modules/next/dist/server/load-components.d.ts","./node_modules/next/dist/server/route-definitions/app-route-route-definition.d.ts","./node_modules/next/dist/server/async-storage/work-store.d.ts","./node_modules/next/dist/server/web/http.d.ts","./node_modules/next/dist/server/route-modules/app-route/shared-modules.d.ts","./node_modules/next/dist/client/components/redirect-status-code.d.ts","./node_modules/next/dist/client/components/redirect-error.d.ts","./node_modules/next/dist/build/templates/app-route.d.ts","./node_modules/next/dist/server/route-modules/app-route/module.d.ts","./node_modules/next/dist/server/route-modules/app-route/module.compiled.d.ts","./node_modules/next/dist/build/segment-config/app/app-segments.d.ts","./node_modules/next/dist/build/utils.d.ts","./node_modules/next/dist/build/turborepo-access-trace/types.d.ts","./node_modules/next/dist/build/turborepo-access-trace/result.d.ts","./node_modules/next/dist/build/turborepo-access-trace/helpers.d.ts","./node_modules/next/dist/build/turborepo-access-trace/index.d.ts","./node_modules/next/dist/export/routes/types.d.ts","./node_modules/next/dist/export/types.d.ts","./node_modules/next/dist/export/worker.d.ts","./node_modules/next/dist/build/worker.d.ts","./node_modules/next/dist/build/index.d.ts","./node_modules/next/dist/server/lib/incremental-cache/index.d.ts","./node_modules/next/dist/server/after/after.d.ts","./node_modules/next/dist/server/after/after-context.d.ts","./node_modules/next/dist/server/app-render/work-async-storage-instance.d.ts","./node_modules/next/dist/server/app-render/work-async-storage.external.d.ts","./node_modules/next/dist/server/request/params.d.ts","./node_modules/next/dist/server/route-matches/route-match.d.ts","./node_modules/next/dist/server/request-meta.d.ts","./node_modules/next/dist/cli/next-test.d.ts","./node_modules/next/dist/server/config-shared.d.ts","./node_modules/next/dist/server/base-http/index.d.ts","./node_modules/next/dist/server/api-utils/index.d.ts","./node_modules/next/dist/types.d.ts","./node_modules/next/dist/shared/lib/html-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/utils.d.ts","./node_modules/next/dist/pages/_app.d.ts","./node_modules/next/app.d.ts","./node_modules/next/dist/server/web/spec-extension/unstable-cache.d.ts","./node_modules/next/dist/server/web/spec-extension/revalidate.d.ts","./node_modules/next/dist/server/web/spec-extension/unstable-no-store.d.ts","./node_modules/next/dist/server/use-cache/cache-tag.d.ts","./node_modules/next/cache.d.ts","./node_modules/next/dist/shared/lib/runtime-config.external.d.ts","./node_modules/next/config.d.ts","./node_modules/next/dist/pages/_document.d.ts","./node_modules/next/document.d.ts","./node_modules/next/dist/shared/lib/dynamic.d.ts","./node_modules/next/dynamic.d.ts","./node_modules/next/dist/pages/_error.d.ts","./node_modules/next/error.d.ts","./node_modules/next/dist/shared/lib/head.d.ts","./node_modules/next/head.d.ts","./node_modules/next/dist/server/request/cookies.d.ts","./node_modules/next/dist/server/request/headers.d.ts","./node_modules/next/dist/server/request/draft-mode.d.ts","./node_modules/next/headers.d.ts","./node_modules/next/dist/shared/lib/get-img-props.d.ts","./node_modules/next/dist/client/image-component.d.ts","./node_modules/next/dist/shared/lib/image-external.d.ts","./node_modules/next/image.d.ts","./node_modules/next/dist/client/link.d.ts","./node_modules/next/link.d.ts","./node_modules/next/dist/client/components/redirect.d.ts","./node_modules/next/dist/client/components/not-found.d.ts","./node_modules/next/dist/client/components/forbidden.d.ts","./node_modules/next/dist/client/components/unauthorized.d.ts","./node_modules/next/dist/client/components/unstable-rethrow.server.d.ts","./node_modules/next/dist/client/components/unstable-rethrow.d.ts","./node_modules/next/dist/client/components/navigation.react-server.d.ts","./node_modules/next/dist/client/components/unrecognized-action-error.d.ts","./node_modules/next/dist/client/components/navigation.d.ts","./node_modules/next/navigation.d.ts","./node_modules/next/router.d.ts","./node_modules/next/dist/client/script.d.ts","./node_modules/next/script.d.ts","./node_modules/next/dist/server/web/spec-extension/user-agent.d.ts","./node_modules/next/dist/compiled/@edge-runtime/primitives/url.d.ts","./node_modules/next/dist/server/web/spec-extension/image-response.d.ts","./node_modules/next/dist/compiled/@vercel/og/satori/index.d.ts","./node_modules/next/dist/compiled/@vercel/og/emoji/index.d.ts","./node_modules/next/dist/compiled/@vercel/og/types.d.ts","./node_modules/next/dist/server/after/index.d.ts","./node_modules/next/dist/server/request/root-params.d.ts","./node_modules/next/dist/server/request/connection.d.ts","./node_modules/next/server.d.ts","./node_modules/next/types/global.d.ts","./node_modules/next/types/compiled.d.ts","./node_modules/next/types.d.ts","./node_modules/next/index.d.ts","./node_modules/next/image-types/global.d.ts","./next-env.d.ts","./next.config.ts","./node_modules/source-map-js/source-map.d.ts","./node_modules/postcss/lib/previous-map.d.ts","./node_modules/postcss/lib/input.d.ts","./node_modules/postcss/lib/css-syntax-error.d.ts","./node_modules/postcss/lib/declaration.d.ts","./node_modules/postcss/lib/root.d.ts","./node_modules/postcss/lib/warning.d.ts","./node_modules/postcss/lib/lazy-result.d.ts","./node_modules/postcss/lib/no-work-result.d.ts","./node_modules/postcss/lib/processor.d.ts","./node_modules/postcss/lib/result.d.ts","./node_modules/postcss/lib/document.d.ts","./node_modules/postcss/lib/rule.d.ts","./node_modules/postcss/lib/node.d.ts","./node_modules/postcss/lib/comment.d.ts","./node_modules/postcss/lib/container.d.ts","./node_modules/postcss/lib/at-rule.d.ts","./node_modules/postcss/lib/list.d.ts","./node_modules/postcss/lib/postcss.d.ts","./node_modules/postcss/lib/postcss.d.mts","./node_modules/tailwindcss/types/generated/corepluginlist.d.ts","./node_modules/tailwindcss/types/generated/colors.d.ts","./node_modules/tailwindcss/types/config.d.ts","./node_modules/tailwindcss/types/index.d.ts","./tailwind.config.ts","./app/robots.ts","./app/docs/docsnavsections.ts","./app/sitemap.ts","./app/analyze-rules/types.ts","./app/api/download/bootstrapper/route.ts","./types/session.ts","./types/enrollment.ts","./types/index.ts","./app/dashboard/types.ts","./app/gather-rules/types.ts","./app/go/[code]/route.ts","./app/ime-log-patterns/types.ts","./app/sessions/[sessionid]/utils/eventhelpers.ts","./app/sessions/[sessionid]/utils/phaseconstants.ts","./app/settings/types.ts","./node_modules/@azure/msal-common/dist/account/tokenclaims.d.ts","./node_modules/@azure/msal-common/dist/account/authtoken.d.ts","./node_modules/@azure/msal-common/dist/authority/authoritytype.d.ts","./node_modules/@azure/msal-common/dist/authority/openidconfigresponse.d.ts","./node_modules/@azure/msal-common/dist/url/iuri.d.ts","./node_modules/@azure/msal-common/dist/network/networkresponse.d.ts","./node_modules/@azure/msal-common/dist/network/inetworkmodule.d.ts","./node_modules/@azure/msal-common/dist/authority/protocolmode.d.ts","./node_modules/@azure/msal-common/dist/utils/constants.d.ts","./node_modules/@azure/msal-common/dist/logger/logger.d.ts","./node_modules/@azure/msal-common/dist/authority/oidcoptions.d.ts","./node_modules/@azure/msal-common/dist/authority/azureregion.d.ts","./node_modules/@azure/msal-common/dist/authority/azureregionconfiguration.d.ts","./node_modules/@azure/msal-common/dist/authority/clouddiscoverymetadata.d.ts","./node_modules/@azure/msal-common/dist/authority/cloudinstancediscoveryresponse.d.ts","./node_modules/@azure/msal-common/dist/authority/authorityoptions.d.ts","./node_modules/@azure/msal-common/dist/cache/entities/credentialentity.d.ts","./node_modules/@azure/msal-common/dist/cache/entities/idtokenentity.d.ts","./node_modules/@azure/msal-common/dist/cache/entities/accesstokenentity.d.ts","./node_modules/@azure/msal-common/dist/cache/entities/refreshtokenentity.d.ts","./node_modules/@azure/msal-common/dist/cache/entities/appmetadataentity.d.ts","./node_modules/@azure/msal-common/dist/cache/entities/cacherecord.d.ts","./node_modules/@azure/msal-common/dist/account/accountinfo.d.ts","./node_modules/@azure/msal-common/dist/cache/entities/servertelemetryentity.d.ts","./node_modules/@azure/msal-common/dist/cache/entities/throttlingentity.d.ts","./node_modules/@azure/msal-common/dist/cache/entities/authoritymetadataentity.d.ts","./node_modules/@azure/msal-common/dist/request/storeincache.d.ts","./node_modules/@azure/msal-common/dist/telemetry/performance/performanceevent.d.ts","./node_modules/@azure/msal-common/dist/telemetry/performance/iperformancemeasurement.d.ts","./node_modules/@azure/msal-common/dist/telemetry/performance/iperformanceclient.d.ts","./node_modules/@azure/msal-common/dist/cache/cachemanager.d.ts","./node_modules/@azure/msal-common/dist/telemetry/server/servertelemetryrequest.d.ts","./node_modules/@azure/msal-common/dist/authority/regiondiscoverymetadata.d.ts","./node_modules/@azure/msal-common/dist/telemetry/server/servertelemetrymanager.d.ts","./node_modules/@azure/msal-common/dist/cache/interface/iserializabletokencache.d.ts","./node_modules/@azure/msal-common/dist/cache/persistence/tokencachecontext.d.ts","./node_modules/@azure/msal-common/dist/cache/interface/icacheplugin.d.ts","./node_modules/@azure/msal-common/dist/account/clientcredentials.d.ts","./node_modules/@azure/msal-common/dist/config/clientconfiguration.d.ts","./node_modules/@azure/msal-common/dist/utils/msaltypes.d.ts","./node_modules/@azure/msal-common/dist/crypto/joseheader.d.ts","./node_modules/@azure/msal-common/dist/crypto/signedhttprequest.d.ts","./node_modules/@azure/msal-common/dist/request/baseauthrequest.d.ts","./node_modules/@azure/msal-common/dist/crypto/icrypto.d.ts","./node_modules/@azure/msal-common/dist/cache/entities/accountentity.d.ts","./node_modules/@azure/msal-common/dist/request/scopeset.d.ts","./node_modules/@azure/msal-common/dist/cache/utils/cachetypes.d.ts","./node_modules/@azure/msal-common/dist/cache/interface/icachemanager.d.ts","./node_modules/@azure/msal-common/dist/authority/authority.d.ts","./node_modules/@azure/msal-common/dist/authority/authorityfactory.d.ts","./node_modules/@azure/msal-common/dist/cache/utils/cachehelpers.d.ts","./node_modules/@azure/msal-common/dist/utils/timeutils.d.ts","./node_modules/@azure/msal-common/dist/response/serverauthorizationcoderesponse.d.ts","./node_modules/@azure/msal-common/dist/utils/urlutils.d.ts","./node_modules/@azure/msal-common/dist/constants/aadserverparamkeys.d.ts","./node_modules/@azure/msal-common/dist/response/serverauthorizationtokenresponse.d.ts","./node_modules/@azure/msal-common/dist/network/requestthumbprint.d.ts","./node_modules/@azure/msal-common/dist/account/ccscredential.d.ts","./node_modules/@azure/msal-common/dist/client/baseclient.d.ts","./node_modules/@azure/msal-common/dist/request/commonauthorizationurlrequest.d.ts","./node_modules/@azure/msal-common/dist/request/commonauthorizationcoderequest.d.ts","./node_modules/@azure/msal-common/dist/response/authenticationresult.d.ts","./node_modules/@azure/msal-common/dist/request/commonendsessionrequest.d.ts","./node_modules/@azure/msal-common/dist/response/authorizationcodepayload.d.ts","./node_modules/@azure/msal-common/dist/client/authorizationcodeclient.d.ts","./node_modules/@azure/msal-common/dist/request/commonrefreshtokenrequest.d.ts","./node_modules/@azure/msal-common/dist/request/commonsilentflowrequest.d.ts","./node_modules/@azure/msal-common/dist/client/refreshtokenclient.d.ts","./node_modules/@azure/msal-common/dist/client/silentflowclient.d.ts","./node_modules/@azure/msal-common/dist/account/clientinfo.d.ts","./node_modules/@azure/msal-common/dist/network/throttlingutils.d.ts","./node_modules/@azure/msal-common/dist/url/urlstring.d.ts","./node_modules/@azure/msal-common/dist/request/requestparameterbuilder.d.ts","./node_modules/@azure/msal-common/dist/utils/protocolutils.d.ts","./node_modules/@azure/msal-common/dist/response/responsehandler.d.ts","./node_modules/@azure/msal-common/dist/request/authenticationheaderparser.d.ts","./node_modules/@azure/msal-common/dist/error/autherrorcodes.d.ts","./node_modules/@azure/msal-common/dist/error/autherror.d.ts","./node_modules/@azure/msal-common/dist/error/interactionrequiredautherrorcodes.d.ts","./node_modules/@azure/msal-common/dist/error/interactionrequiredautherror.d.ts","./node_modules/@azure/msal-common/dist/error/servererror.d.ts","./node_modules/@azure/msal-common/dist/error/networkerror.d.ts","./node_modules/@azure/msal-common/dist/error/cacheerrorcodes.d.ts","./node_modules/@azure/msal-common/dist/error/cacheerror.d.ts","./node_modules/@azure/msal-common/dist/error/clientautherrorcodes.d.ts","./node_modules/@azure/msal-common/dist/error/clientautherror.d.ts","./node_modules/@azure/msal-common/dist/error/clientconfigurationerrorcodes.d.ts","./node_modules/@azure/msal-common/dist/error/clientconfigurationerror.d.ts","./node_modules/@azure/msal-common/dist/utils/stringutils.d.ts","./node_modules/@azure/msal-common/dist/utils/functionwrappers.d.ts","./node_modules/@azure/msal-common/dist/packagemetadata.d.ts","./node_modules/@azure/msal-common/dist/exports-common.d.ts","./node_modules/@azure/msal-common/dist/response/externaltokenresponse.d.ts","./node_modules/@azure/msal-common/dist/telemetry/performance/performanceclient.d.ts","./node_modules/@azure/msal-common/dist/telemetry/performance/stubperformanceclient.d.ts","./node_modules/@azure/msal-common/dist/crypto/poptokengenerator.d.ts","./node_modules/@azure/msal-common/dist/exports-browser-only.d.ts","./node_modules/@azure/msal-common/dist/index-browser.d.ts","./node_modules/@azure/msal-browser/dist/request/popupwindowattributes.d.ts","./node_modules/@azure/msal-browser/dist/request/popuprequest.d.ts","./node_modules/@azure/msal-browser/dist/request/redirectrequest.d.ts","./node_modules/@azure/msal-browser/dist/utils/browserconstants.d.ts","./node_modules/@azure/msal-browser/dist/navigation/navigationoptions.d.ts","./node_modules/@azure/msal-browser/dist/navigation/inavigationclient.d.ts","./node_modules/@azure/msal-browser/dist/config/configuration.d.ts","./node_modules/@azure/msal-browser/dist/utils/browserutils.d.ts","./node_modules/@azure/msal-browser/dist/request/silentrequest.d.ts","./node_modules/@azure/msal-browser/dist/cache/iwindowstorage.d.ts","./node_modules/@azure/msal-browser/dist/cache/memorystorage.d.ts","./node_modules/@azure/msal-browser/dist/broker/nativebroker/nativerequest.d.ts","./node_modules/@azure/msal-browser/dist/response/authenticationresult.d.ts","./node_modules/@azure/msal-browser/dist/request/ssosilentrequest.d.ts","./node_modules/@azure/msal-browser/dist/cache/cookiestorage.d.ts","./node_modules/@azure/msal-browser/dist/cache/browsercachemanager.d.ts","./node_modules/@azure/msal-browser/dist/cache/tokencache.d.ts","./node_modules/@azure/msal-browser/dist/cache/itokencache.d.ts","./node_modules/@azure/msal-browser/dist/request/authorizationcoderequest.d.ts","./node_modules/@azure/msal-browser/dist/request/endsessionrequest.d.ts","./node_modules/@azure/msal-browser/dist/request/endsessionpopuprequest.d.ts","./node_modules/@azure/msal-browser/dist/event/eventtype.d.ts","./node_modules/@azure/msal-browser/dist/event/eventmessage.d.ts","./node_modules/@azure/msal-browser/dist/request/clearcacherequest.d.ts","./node_modules/@azure/msal-browser/dist/request/initializeapplicationrequest.d.ts","./node_modules/@azure/msal-browser/dist/app/ipublicclientapplication.d.ts","./node_modules/@azure/msal-browser/dist/controllers/icontroller.d.ts","./node_modules/@azure/msal-browser/dist/app/publicclientapplication.d.ts","./node_modules/@azure/msal-browser/dist/app/publicclientnext.d.ts","./node_modules/@azure/msal-browser/dist/error/browserautherrorcodes.d.ts","./node_modules/@azure/msal-browser/dist/error/browserautherror.d.ts","./node_modules/@azure/msal-browser/dist/error/browserconfigurationautherrorcodes.d.ts","./node_modules/@azure/msal-browser/dist/error/browserconfigurationautherror.d.ts","./node_modules/@azure/msal-browser/dist/navigation/navigationclient.d.ts","./node_modules/@azure/msal-browser/dist/request/authorizationurlrequest.d.ts","./node_modules/@azure/msal-browser/dist/cache/browserstorage.d.ts","./node_modules/@azure/msal-browser/dist/cache/localstorage.d.ts","./node_modules/@azure/msal-browser/dist/cache/sessionstorage.d.ts","./node_modules/@azure/msal-browser/dist/event/eventhandler.d.ts","./node_modules/@azure/msal-browser/dist/crypto/signedhttprequest.d.ts","./node_modules/@azure/msal-browser/dist/telemetry/browserperformanceclient.d.ts","./node_modules/@azure/msal-browser/dist/telemetry/browserperformancemeasurement.d.ts","./node_modules/@azure/msal-browser/dist/packagemetadata.d.ts","./node_modules/@azure/msal-browser/dist/index.d.ts","./node_modules/@azure/msal-react/dist/msalcontext.d.ts","./node_modules/@azure/msal-react/dist/msalprovider.d.ts","./node_modules/@azure/msal-react/dist/types/accountidentifiers.d.ts","./node_modules/@azure/msal-react/dist/hooks/usemsalauthentication.d.ts","./node_modules/@azure/msal-react/dist/components/msalauthenticationtemplate.d.ts","./node_modules/@azure/msal-react/dist/components/authenticatedtemplate.d.ts","./node_modules/@azure/msal-react/dist/components/unauthenticatedtemplate.d.ts","./node_modules/@azure/msal-react/dist/utils/utilities.d.ts","./node_modules/@azure/msal-react/dist/components/withmsal.d.ts","./node_modules/@azure/msal-react/dist/hooks/usemsal.d.ts","./node_modules/@azure/msal-react/dist/hooks/useaccount.d.ts","./node_modules/@azure/msal-react/dist/hooks/useisauthenticated.d.ts","./node_modules/@azure/msal-react/dist/packagemetadata.d.ts","./node_modules/@azure/msal-react/dist/index.d.ts","./lib/msalconfig.ts","./lib/config.ts","./contexts/authcontext.tsx","./contexts/notificationcontext.tsx","./lib/authenticatedfetch.ts","./hooks/useauthenticatedfetch.ts","./hooks/usenotificationmessages.ts","./hooks/index.ts","./lib/guardrails.generated.ts","./lib/guardvalidation.ts","./lib/rulepagehelpers.ts","./lib/sessionexportutils.ts","./node_modules/next/dist/compiled/@vercel/og/index.edge.d.ts","./node_modules/next/dist/compiled/@vercel/og/index.node.d.ts","./node_modules/next/dist/server/og/image-response.d.ts","./node_modules/next/og.d.ts","./app/apple-icon.tsx","./app/error.tsx","./app/global-error.tsx","./node_modules/next/dist/compiled/@next/font/dist/types.d.ts","./node_modules/next/dist/compiled/@next/font/dist/google/index.d.ts","./node_modules/next/font/google/index.d.ts","./node_modules/@microsoft/signalr/dist/esm/abortcontroller.d.ts","./node_modules/@microsoft/signalr/dist/esm/itransport.d.ts","./node_modules/@microsoft/signalr/dist/esm/errors.d.ts","./node_modules/@microsoft/signalr/dist/esm/ilogger.d.ts","./node_modules/@microsoft/signalr/dist/esm/ihubprotocol.d.ts","./node_modules/@microsoft/signalr/dist/esm/httpclient.d.ts","./node_modules/@microsoft/signalr/dist/esm/defaulthttpclient.d.ts","./node_modules/@microsoft/signalr/dist/esm/ihttpconnectionoptions.d.ts","./node_modules/@microsoft/signalr/dist/esm/istatefulreconnectoptions.d.ts","./node_modules/@microsoft/signalr/dist/esm/stream.d.ts","./node_modules/@microsoft/signalr/dist/esm/hubconnection.d.ts","./node_modules/@microsoft/signalr/dist/esm/iretrypolicy.d.ts","./node_modules/@microsoft/signalr/dist/esm/hubconnectionbuilder.d.ts","./node_modules/@microsoft/signalr/dist/esm/loggers.d.ts","./node_modules/@microsoft/signalr/dist/esm/jsonhubprotocol.d.ts","./node_modules/@microsoft/signalr/dist/esm/subject.d.ts","./node_modules/@microsoft/signalr/dist/esm/pkg-version.d.ts","./node_modules/@microsoft/signalr/dist/esm/utils.d.ts","./node_modules/@microsoft/signalr/dist/esm/index.d.ts","./contexts/signalrcontext.tsx","./contexts/tenantcontext.tsx","./contexts/galacticnotificationcontext.tsx","./contexts/themecontext.tsx","./components/navbar.tsx","./components/scrolltotopbutton.tsx","./app/layout.tsx","./app/opengraph-image.tsx","./components/publicsitenavbar.tsx","./components/landing/authgate.tsx","./components/landing/loginbutton.tsx","./components/landing/platformstats.tsx","./app/page.tsx","./app/twitter-image.tsx","./app/about/layout.tsx","./components/publicpageheader.tsx","./app/about/page.tsx","./components/protectedroute.tsx","./app/admin-configuration/components/tenantadminsection.tsx","./app/admin-configuration/components/tenantmanagementsection.tsx","./app/admin-configuration/components/maintenancesection.tsx","./components/validationindicator.tsx","./app/admin-configuration/components/diagnosticslogpathssection.tsx","./app/admin-configuration/components/tenantsearchselect.tsx","./app/admin-configuration/components/deviceblocksection.tsx","./app/admin-configuration/components/versionblocksection.tsx","./app/admin-configuration/components/sessionexportsection.tsx","./app/admin-configuration/components/adminconfigsettingssection.tsx","./app/admin-configuration/components/sessionreportssection.tsx","./components/scrollspysidebar.tsx","./app/admin-configuration/page.tsx","./components/rules/statcard.tsx","./components/rules/rulefilterbar.tsx","./components/rules/emptystate.tsx","./components/rules/formjsontoggle.tsx","./app/analyze-rules/components/analyzeruleformfields.tsx","./app/analyze-rules/components/analyzerulecard.tsx","./app/analyze-rules/page.tsx","./app/audit/page.tsx","./app/changelog/layout.tsx","./app/changelog/page.tsx","./app/dashboard/components/statscards.tsx","./app/dashboard/components/welcomemessage.tsx","./app/dashboard/components/sessiontable.tsx","./app/dashboard/components/confirmationmodals.tsx","./app/dashboard/page.tsx","./app/dashboard/components/settingsmenu.tsx","./app/dashboard/components/usermenu.tsx","./app/diagnosis/[sessionid]/components/diagnosisbadges.tsx","./app/diagnosis/[sessionid]/page.tsx","./app/docs/docssidebar.tsx","./app/docs/layout.tsx","./app/docs/sections/sectionprivatepreview.tsx","./app/docs/sections/sectiongeneral.tsx","./app/docs/sections/sectionoverview.tsx","./app/docs/sections/sectionsetup.tsx","./app/docs/sections/sectionagent.tsx","./app/docs/sections/sectionagentsetup.tsx","./app/docs/sections/sectionsettings.tsx","./app/docs/sections/sectiongatherrules.tsx","./app/docs/sections/sectionanalyzerules.tsx","./app/docs/[section]/page.tsx","./app/fleet-health/components/fleetstatcard.tsx","./app/fleet-health/page.tsx","./app/gather-rules/components/gatherruleformfields.tsx","./app/gather-rules/components/gatherrulecard.tsx","./app/gather-rules/page.tsx","./node_modules/@types/geojson/index.d.ts","./node_modules/@types/leaflet/index.d.ts","./node_modules/react-leaflet/lib/hooks.d.ts","./node_modules/react-leaflet/lib/attributioncontrol.d.ts","./node_modules/@react-leaflet/core/lib/attribution.d.ts","./node_modules/@react-leaflet/core/lib/context.d.ts","./node_modules/@react-leaflet/core/lib/element.d.ts","./node_modules/@react-leaflet/core/lib/events.d.ts","./node_modules/@react-leaflet/core/lib/layer.d.ts","./node_modules/@react-leaflet/core/lib/path.d.ts","./node_modules/@react-leaflet/core/lib/circle.d.ts","./node_modules/@react-leaflet/core/lib/div-overlay.d.ts","./node_modules/@react-leaflet/core/lib/component.d.ts","./node_modules/@react-leaflet/core/lib/control.d.ts","./node_modules/@react-leaflet/core/lib/dom.d.ts","./node_modules/@react-leaflet/core/lib/generic.d.ts","./node_modules/@react-leaflet/core/lib/grid-layer.d.ts","./node_modules/@react-leaflet/core/lib/media-overlay.d.ts","./node_modules/@react-leaflet/core/lib/pane.d.ts","./node_modules/@react-leaflet/core/lib/index.d.ts","./node_modules/react-leaflet/lib/circle.d.ts","./node_modules/react-leaflet/lib/circlemarker.d.ts","./node_modules/react-leaflet/lib/layergroup.d.ts","./node_modules/react-leaflet/lib/featuregroup.d.ts","./node_modules/react-leaflet/lib/geojson.d.ts","./node_modules/react-leaflet/lib/imageoverlay.d.ts","./node_modules/react-leaflet/lib/layerscontrol.d.ts","./node_modules/react-leaflet/lib/mapcontainer.d.ts","./node_modules/react-leaflet/lib/marker.d.ts","./node_modules/react-leaflet/lib/pane.d.ts","./node_modules/react-leaflet/lib/polygon.d.ts","./node_modules/react-leaflet/lib/polyline.d.ts","./node_modules/react-leaflet/lib/popup.d.ts","./node_modules/react-leaflet/lib/rectangle.d.ts","./node_modules/react-leaflet/lib/scalecontrol.d.ts","./node_modules/react-leaflet/lib/svgoverlay.d.ts","./node_modules/react-leaflet/lib/tilelayer.d.ts","./node_modules/react-leaflet/lib/tooltip.d.ts","./node_modules/react-leaflet/lib/videooverlay.d.ts","./node_modules/react-leaflet/lib/wmstilelayer.d.ts","./node_modules/react-leaflet/lib/zoomcontrol.d.ts","./node_modules/react-leaflet/lib/index.d.ts","./app/geographic-performance/geomap.tsx","./app/geographic-performance/page.tsx","./app/geographic-performance/sessions/page.tsx","./app/health-check/page.tsx","./app/ime-log-patterns/components/imepatterncard.tsx","./app/ime-log-patterns/page.tsx","./app/platform-metrics/page.tsx","./app/platform-usage-metrics/page.tsx","./app/preview/page.tsx","./app/privacy/layout.tsx","./app/privacy/page.tsx","./app/progress/page.tsx","./app/roadmap/layout.tsx","./app/roadmap/page.tsx","./components/performancechart.tsx","./components/downloadprogress.tsx","./components/installprogress.tsx","./components/scriptexecutions.tsx","./app/sessions/[sessionid]/components/sessioninfocard.tsx","./app/sessions/[sessionid]/components/phasetimeline.tsx","./app/sessions/[sessionid]/components/eventtimeline.tsx","./app/sessions/[sessionid]/components/analysisresultssection.tsx","./app/sessions/[sessionid]/components/markfailedmodal.tsx","./node_modules/fflate/esm/browser.d.ts","./app/sessions/[sessionid]/components/reportsessionmodal.tsx","./app/sessions/[sessionid]/components/sectionnav.tsx","./app/sessions/[sessionid]/components/devicedetailscard.tsx","./app/sessions/[sessionid]/page.tsx","./components/unsavedchangesmodal.tsx","./app/settings/components/autopilotvalidationsection.tsx","./app/settings/components/adminmanagementsection.tsx","./app/settings/components/hardwarewhitelistsection.tsx","./app/settings/components/agentsettingssection.tsx","./app/settings/components/agentanalyzerssection.tsx","./app/settings/components/notificationssection.tsx","./app/settings/components/diagnosticssection.tsx","./app/settings/components/datamanagementsection.tsx","./app/settings/components/offboardingsection.tsx","./app/settings/components/bootstrapsessionssection.tsx","./app/settings/components/unrestrictedmodesection.tsx","./app/settings/page.tsx","./app/terms/layout.tsx","./app/terms/page.tsx","./app/usage-metrics/page.tsx","./.next/types/cache-life.d.ts","./.next/types/validator.ts","./.next/types/app/page.ts","./.next/types/app/about/layout.ts","./.next/types/app/about/page.ts","./.next/types/app/admin-configuration/page.ts","./.next/types/app/analyze-rules/page.ts","./.next/types/app/api/download/bootstrapper/route.ts","./.next/types/app/audit/page.ts","./.next/types/app/changelog/layout.ts","./.next/types/app/changelog/page.ts","./.next/types/app/dashboard/page.ts","./.next/types/app/diagnosis/[sessionid]/page.ts","./.next/types/app/docs/layout.ts","./.next/types/app/docs/[section]/page.ts","./.next/types/app/fleet-health/page.ts","./.next/types/app/gather-rules/page.ts","./.next/types/app/geographic-performance/page.ts","./.next/types/app/go/[code]/route.ts","./.next/types/app/health-check/page.ts","./.next/types/app/ime-log-patterns/page.ts","./.next/types/app/platform-metrics/page.ts","./.next/types/app/platform-usage-metrics/page.ts","./.next/types/app/preview/page.ts","./.next/types/app/privacy/layout.ts","./.next/types/app/privacy/page.ts","./.next/types/app/progress/page.ts","./.next/types/app/roadmap/layout.ts","./.next/types/app/roadmap/page.ts","./.next/types/app/sessions/[sessionid]/page.ts","./.next/types/app/settings/page.ts","./.next/types/app/terms/layout.ts","./.next/types/app/terms/page.ts","./.next/types/app/usage-metrics/page.ts","./node_modules/@types/estree/index.d.ts","./node_modules/@types/json-schema/index.d.ts","./node_modules/@types/json5/index.d.ts"],"fileIdsList":[[101,149,166,167,342,753],[101,149,166,167,342,755],[101,149,166,167,342,769],[101,149,166,167,342,776],[101,149,166,167,494,531],[101,149,166,167,342,777],[101,149,166,167,342,778],[101,149,166,167,342,779],[101,149,166,167,342,784],[101,149,166,167,342,788],[101,149,166,167,342,800],[101,149,166,167,342,790],[101,149,166,167,342,802],[101,149,166,167,342,805],[101,149,166,167,342,849],[101,149,166,167,494,537],[101,149,166,167,342,851],[101,149,166,167,342,853],[101,149,166,167,342,751],[101,149,166,167,342,854],[101,149,166,167,342,855],[101,149,166,167,342,856],[101,149,166,167,342,857],[101,149,166,167,342,858],[101,149,166,167,342,859],[101,149,166,167,342,860],[101,149,166,167,342,861],[101,149,166,167,342,875],[101,149,166,167,342,888],[101,149,166,167,342,889],[101,149,166,167,342,890],[101,149,166,167,342,891],[101,149,166,167,447,448,449,450],[101,149,166,167],[83,101,149,166,167,494,497,531,537,745,751,753,755,769,776,777,778,779,784,788,790,800,802,805,849,851,853,854,855,856,857,858,859,860,861,875,888,889,890,891],[101,149,166,167,498],[101,149,166,167,471,747,754],[87,101,149,166,167,699,702,758,762],[87,101,149,166,167,707,760],[87,101,149,166,167,699,702],[87,101,149,166,167,699,702,709,758,762],[87,101,149,166,167,699,702,757],[87,101,149,166,167,758],[87,101,149,166,167,481,699,700,702,756,758,759,761,763,764,765,766,767,768],[87,101,149,166,167,530,708,773,774],[101,149,166,167,530],[87,101,149,166,167,471,481,530,699,700,702,705,708,740,756,770,771,772,773,774,775],[101,149,166,167,713],[87,101,149,166,167,481,699,700,701,702,740,756],[87,101,149,166,167,481,535],[87,101,149,166,167,699,700,702,740],[87,101,149,166,167],[101,149,166,167,471],[87,101,149,166,167,471,481,535,699,700,701,702,739,740,756,780,781,782,783],[101,149,166,167,534],[87,101,149,166,167,481,534,699,700,701,702,739,740,756,787],[101,149,166,167,481,498,528,791,792,793,794,795,796,797,798,799],[87,101,149,166,167,471,481,528],[101,149,166,167,498,747,754,789],[87,101,149,166,167,706],[101,149,166,167,481],[87,101,149,166,167,481,534,699,700,701,702,739,740,756,801],[87,101,149,166,167,536,707,708,760,773,803],[87,101,149,166,167,536,707,760],[87,101,149,166,167,471,481,536,699,700,702,705,708,740,756,770,771,772,773,803,804],[87,101,149,166,167,847],[87,101,149,166,167,457,481,699,700,702,740,756,848],[87,101,149,166,167,481,699,700,702,740,756],[87,101,149,166,167,699,700,701,702,738,739,740],[87,101,149,166,167,538,708,773],[87,101,149,166,167,481,538,699,700,705,708,740,756,770,771,772,852],[101,149,166,167,498,700,701,719,739,740,741,742,743,744],[101,149,166,167,747,748,749,750],[87,101,149,166,167,481,699,700,701,702,756],[87,101,149,166,167,481,699,700,702,756],[87,101,149,166,167,481,699,700],[87,101,149,166,167,534,699,700,701,702,739,740,756],[87,101,149,166,167,534],[87,101,149,166,167,534,539],[87,101,149,166,167,534,540],[87,101,149,166,167,534,871],[87,101,149,166,167,481,534,539,540,699,700,701,702,709,739,740,756,862,863,864,865,866,867,868,869,870,872,873,874],[101,149,166,167,541],[87,101,149,166,167,541,707,760],[87,101,149,166,167,481,541,699,700,701,702,740,756,768,876,877,878,879,880,881,882,883,884,885,886,887],[101,149,166,167,498,528],[101,149,166,167,746],[87,101,149,166,167,481,700],[101,149,166,167,700],[87,101,149,166,167,471,481,699,700,701,741,742],[101,149,166,167,471,700,742],[101,149,166,167,707],[87,101,149,166,167,683,697,698,699],[87,101,149,166,167,699,700,702],[87,101,149,166,167,699,700,702,738],[87,101,149,166,167,700],[101,149,166,167,703,704],[87,101,149,166,167,700,701,702],[101,149,166,167,706],[101,149,166,167,683],[83,101,149,166,167,498,499],[101,149,166,167,639,641,642,643,645,646,648,652,653,657,658,659,660,661,662,663,664],[101,149,166,167,639,641,642,643,645,646,648,652,653,657,658,659,660,661,662,663,664,665,666],[101,149,166,167,639,641,642,643,645,646,648,652,653,657,658,659,661,662,663,665,666],[101,149,166,167,639,643],[101,149,166,167,639,641,642,643,646,648,649,650,651,652,653,654],[101,149,166,167,649],[101,149,166,167,639,648,652,656],[101,149,166,167,639,646,648,652,655,657],[101,149,166,167,639,643,645],[101,149,166,167,639],[101,149,166,167,639,669],[101,149,166,167,639,671],[101,149,166,167,639,643,661,662],[101,149,166,167,639,641,642,643,648,652,653,659,661],[101,149,166,167,639,640,641,642,643,644,645,646,647,648,649,650,652,653,656,657,658,659,660,661,662,663,664,665,666,667,668,670,672,673,674,675,676,677,678,679,680,681,682],[101,149,166,167,644],[101,149,166,167,644,645],[101,149,166,167,643],[101,149,166,167,639,640],[101,149,166,167,639,646],[101,149,166,167,641,642],[101,149,166,167,542],[101,149,166,167,544,545,546,548,549,551,555,557,571,574,580,589],[101,149,166,167,548,551,557,571,589,590],[101,149,166,167,549,552,554,556],[101,149,166,167,553],[101,149,166,167,555],[101,149,166,167,550],[101,149,166,167,551,557,559,560,561,562,563,564,565,566,567,568,571,584,585,586,588,589],[101,149,166,167,550,558],[101,149,166,167,542,544,551,564,585,590],[101,149,166,167,559,560,561,562,586],[101,149,166,167,558],[101,149,166,167,559,560,561,562,563,564,565,566,567,568,586,588],[101,149,166,167,577],[101,149,166,167,576],[101,149,166,167,545,550,555,558,559,560,561,562,567],[101,149,166,167,550,559,560,561,562,564,565,566,567,586,587],[101,149,166,167,571,580,594,600,601,602,603,604,605],[101,149,166,167,547,548,551,571,572,575,580,584,585,590,597,598,599],[101,149,166,167,571,580,600,603,607,608],[101,149,166,167,550,571,580,600,603,608],[101,149,166,167,548,551,557,572,575,576,578,579,585,590],[101,149,166,167,583,584],[101,149,166,167,551,571,585],[101,149,166,167,582],[101,149,166,167,618],[101,149,166,167,624],[101,149,166,167,619,626],[101,149,166,167,619,628],[101,149,166,167,619,620],[101,149,166,167,619],[101,149,166,167,569,570,571,582,583,634,635,636,637],[101,149,166,167,542,543,544,546,547,548,549,550,551,552,553,554,557,558,559,560,561,562,563,564,565,566,567,568,572,573,575,580,581,584,585,586,587,588,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,619,621,622,623,625,627,629,630,631,632],[101,149,166,167,633,638],[101,149,166,167,580],[101,149,166,167,547],[101,149,166,167,550,583],[101,149,166,167,547,572,584,597,598],[101,149,166,167,550,568,580,581,583],[101,149,166,167,581,584,599],[101,149,166,167,550,564,581,584],[101,149,166,167,564,581],[101,149,166,167,564,581,584],[101,149,166,167,550,571,575,580,581,611],[101,149,166,167,564],[101,149,166,167,597],[101,149,166,167,542,551,563,571,572,576,578,584,585,586,590,594,597,603,605,615],[101,149,166,167,569,570],[101,149,166,167,551,569,570,571,580],[101,149,166,167,569,570,571],[101,149,166,167,550,565,572,573,574],[101,149,166,167,546],[101,149,166,167,551,571],[101,149,166,167,585],[101,149,166,167,594],[87,101,149,166,167,686],[87,101,149,166,167,683,684,686,687],[87,101,149,166,167,684,691],[101,149,166,167,683,686],[101,149,166,167,686],[101,149,166,167,684],[101,149,166,167,684,685,686,687,688,689,690,691,692,693,694,695,696],[87,101,149,166,167,683],[87,101,149,166,167,683,686],[101,149,166,167,723,725],[101,149,166,167,721],[101,149,166,167,720,724],[101,149,166,167,729],[101,149,166,167,721,723,724,727,728,730,731],[101,149,166,167,721,723,724,725],[101,149,166,167,721,723],[101,149,166,167,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,737],[101,149,166,167,721,723,724],[101,149,166,167,723],[101,149,166,167,723,725,727,729,735,736],[101,149,166,167,807],[87,101,149,166,167,807,815],[87,101,149,166,167,812,817],[87,101,149,166,167,807],[101,149,166,167,807,812],[101,149,166,167,807,811,812,814],[87,101,149,166,167,811],[87,101,149,166,167,807,811,812,814,815,817,818],[101,149,166,167,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824],[101,149,166,167,807,811,812,813],[101,149,166,167,807,814],[101,149,166,167,807,811],[101,149,166,167,807,812,814],[101,149,166,167,806],[101,146,147,149,166,167],[101,148,149,166,167],[149,166,167],[101,149,154,166,167,184],[101,149,150,155,160,166,167,169,181,192],[101,149,150,151,160,166,167,169],[96,97,98,101,149,166,167],[101,149,152,166,167,193],[101,149,153,154,161,166,167,170],[101,149,154,166,167,181,189],[101,149,155,157,160,166,167,169],[101,148,149,156,166,167],[101,149,157,158,166,167],[101,149,159,160,166,167],[101,148,149,160,166,167],[101,149,160,161,162,166,167,181,192],[101,149,160,161,162,166,167,176,181,184],[101,142,149,157,160,163,166,167,169,181,192],[101,149,160,161,163,164,166,167,169,181,189,192],[101,149,163,165,166,167,181,189,192],[99,100,101,102,103,104,105,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198],[101,149,160,166,167],[101,149,166,167,168,192],[101,149,157,160,166,167,169,181],[101,149,166,167,170],[101,149,166,167,171],[101,148,149,166,167,172],[101,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198],[101,149,166,167,174],[101,149,166,167,175],[101,149,160,166,167,176,177],[101,149,166,167,176,178,193,195],[101,149,161,166,167],[101,149,160,166,167,181,182,184],[101,149,166,167,183,184],[101,149,166,167,181,182],[101,149,166,167,184],[101,149,166,167,185],[101,146,149,166,167,181,186,192],[101,149,160,166,167,187,188],[101,149,166,167,187,188],[101,149,154,166,167,169,181,189],[101,149,166,167,190],[101,149,166,167,169,191],[101,149,163,166,167,175,192],[101,149,154,166,167,193],[101,149,166,167,181,194],[101,149,166,167,168,195],[101,149,166,167,196],[101,142,149,166,167],[101,142,149,160,162,166,167,172,181,184,192,194,195,197],[101,149,166,167,181,198],[87,101,149,166,167,202,203,204,358],[87,101,149,166,167,202,203],[87,101,149,166,167,203,358],[87,91,101,149,166,167,201,442,490],[87,91,101,149,166,167,200,442,490],[84,85,86,101,149,166,167],[93,101,149,166,167],[101,149,166,167,445],[101,149,166,167,452],[101,149,166,167,208,222,223,224,226,439],[101,149,166,167,208,247,249,251,252,255,439,441],[101,149,166,167,208,212,214,215,216,217,218,428,439,441],[101,149,166,167,439],[101,149,166,167,223,325,409,418,435],[101,149,166,167,208],[101,149,166,167,205,435],[101,149,166,167,259],[101,149,166,167,258,439,441],[101,149,163,166,167,307,325,354,496],[101,149,163,166,167,318,334,418,434],[101,149,163,166,167,370],[101,149,166,167,422],[101,149,166,167,421,422,423],[101,149,166,167,421],[95,101,149,163,166,167,205,208,212,215,219,220,221,223,227,235,236,363,388,419,439,442],[101,149,166,167,208,225,243,247,248,253,254,439,496],[101,149,166,167,225,496],[101,149,166,167,236,243,305,439,496],[101,149,166,167,496],[101,149,166,167,208,225,226,496],[101,149,166,167,250,496],[101,149,166,167,219,420,427],[101,149,166,167,175,267,435],[101,149,166,167,267,435],[87,101,149,166,167,267],[87,101,149,166,167,326],[101,149,166,167,322,368,435,478,479],[101,149,166,167,415,472,473,474,475,477],[101,149,166,167,414],[101,149,166,167,414,415],[101,149,166,167,216,364,365,366],[101,149,166,167,364,367,368],[101,149,166,167,476],[101,149,166,167,364,368],[87,101,149,166,167,209,466],[87,101,149,166,167,192],[87,101,149,166,167,225,295],[87,101,149,166,167,225],[101,149,166,167,293,297],[87,101,149,166,167,294,444],[101,149,166,167,717],[87,101,149,166,167,490],[87,101,149,166,167,181,199,490,710],[87,91,101,149,163,166,167,199,200,201,442,488,489],[101,149,163,166,167],[101,149,163,166,167,212,274,364,374,389,409,424,425,439,440,496],[101,149,166,167,235,426],[101,149,166,167,442],[101,149,166,167,207],[87,101,149,166,167,307,321,333,343,345,434],[101,149,166,167,175,307,321,342,343,344,434,495],[101,149,166,167,336,337,338,339,340,341],[101,149,166,167,338],[101,149,166,167,342],[101,149,166,167,265,266,267,269],[87,101,149,166,167,260,261,262,268],[101,149,166,167,265,268],[101,149,166,167,263],[101,149,166,167,264],[87,101,149,166,167,267,294,444],[87,101,149,166,167,267,443,444],[87,101,149,166,167,267,444],[101,149,166,167,389,431],[101,149,166,167,431],[101,149,163,166,167,440,444],[101,149,166,167,330],[101,148,149,166,167,329],[101,149,166,167,237,275,313,315,317,318,319,320,361,364,434,437,440],[101,149,166,167,237,351,364,368],[101,149,166,167,318,434],[87,101,149,166,167,318,327,328,330,331,332,333,334,335,346,347,348,349,350,352,353,434,435,496],[101,149,166,167,312],[101,149,163,166,167,175,237,238,274,289,319,361,362,363,368,389,409,430,439,440,441,442,496],[101,149,166,167,434],[101,148,149,166,167,223,316,319,363,430,432,433,440],[101,149,166,167,318],[101,148,149,166,167,274,279,308,309,310,311,312,313,314,315,317,434,435],[101,149,163,166,167,279,280,308,440,441],[101,149,166,167,223,363,364,389,430,434,440],[101,149,163,166,167,439,441],[101,149,163,166,167,181,437,440,441],[101,149,163,166,167,175,192,205,212,225,237,238,240,275,276,281,286,289,315,319,364,374,376,379,381,384,385,386,387,388,409,429,430,435,437,439,440,441],[101,149,163,166,167,181],[101,149,166,167,208,209,210,212,217,220,225,243,429,437,438,442,444,496],[101,149,163,166,167,181,192,255,257,259,260,261,262,269,496],[101,149,166,167,175,192,205,247,257,285,286,287,288,315,364,379,388,389,395,398,399,409,430,435,437],[101,149,166,167,219,220,235,363,388,430,439],[101,149,163,166,167,192,209,212,315,393,437,439],[101,149,166,167,306],[101,149,163,166,167,396,397,406],[101,149,166,167,437,439],[101,149,166,167,313,316],[101,149,166,167,315,319,429,444],[101,149,163,166,167,175,241,247,288,379,389,395,398,401,437],[101,149,163,166,167,219,235,247,402],[101,149,166,167,208,240,404,429,439],[101,149,163,166,167,192,439],[101,149,163,166,167,225,239,240,241,252,270,403,405,429,439],[95,101,149,166,167,237,319,408,442,444],[101,149,163,166,167,175,192,212,219,227,235,238,275,281,285,286,287,288,289,315,364,376,389,390,392,394,409,429,430,435,436,437,444],[101,149,163,166,167,181,219,395,400,406,437],[101,149,166,167,230,231,232,233,234],[101,149,166,167,276,380],[101,149,166,167,382],[101,149,166,167,380],[101,149,166,167,382,383],[101,149,166,167,711],[101,149,163,166,167,212,215,216,274,440],[101,149,163,166,167,175,207,209,237,275,289,319,372,373,409,437,441,442,444],[101,149,163,166,167,175,192,211,216,315,373,436,440],[101,149,166,167,308],[101,149,166,167,309],[101,149,166,167,310],[101,149,166,167,435],[101,149,166,167,256,272],[101,149,163,166,167,212,256,275],[101,149,166,167,271,272],[101,149,166,167,273],[101,149,166,167,256,257],[101,149,166,167,256,290],[101,149,166,167,256],[101,149,166,167,276,378,436],[101,149,166,167,377],[101,149,166,167,257,435,436],[101,149,166,167,375,436],[101,149,166,167,257,435],[101,149,166,167,361],[101,149,166,167,212,217,275,304,307,313,315,319,321,324,355,357,360,364,408,429,437,440],[101,149,166,167,298,301,302,303,322,323,368],[87,101,149,166,167,202,203,204,267,356],[87,101,149,166,167,202,203,204,267,356,359],[101,149,166,167,417],[101,149,166,167,223,280,318,319,330,334,364,408,410,411,412,413,415,416,419,429,434,439],[101,149,166,167,368],[101,149,166,167,372],[101,149,163,166,167,275,291,369,371,374,408,437,442,444],[101,149,166,167,298,299,300,301,302,303,322,323,368,443],[95,101,149,163,166,167,175,192,238,256,257,289,315,319,406,407,409,429,430,439,440,442],[101,149,166,167,280,282,285,430],[101,149,163,166,167,276,439],[101,149,166,167,279,318],[101,149,166,167,278],[101,149,166,167,280,281],[101,149,166,167,277,279,439],[101,149,163,166,167,211,280,282,283,284,439,440],[87,101,149,166,167,364,365,367],[101,149,166,167,242],[87,101,149,166,167,209],[87,101,149,166,167,435],[87,95,101,149,166,167,289,319,442,444],[101,149,166,167,209,466,467],[87,101,149,166,167,297],[87,101,149,166,167,175,192,207,254,292,294,296,444],[101,149,166,167,225,435,440],[101,149,166,167,391,435],[101,149,166,167,364],[87,101,149,161,163,166,167,175,207,243,249,297,442,443],[87,101,149,166,167,200,201,442,490],[87,88,89,90,91,101,149,166,167],[101,149,154,166,167],[101,149,166,167,244,245,246],[101,149,166,167,244],[87,91,101,149,163,165,166,167,175,199,200,201,202,204,205,207,238,342,401,439,441,444,490],[101,149,166,167,454],[101,149,166,167,456],[101,149,166,167,458],[101,149,166,167,718],[101,149,166,167,460],[101,149,166,167,462,463,464],[101,149,166,167,468],[92,94,101,149,166,167,446,451,453,455,457,459,461,465,469,471,481,482,484,494,495,496,497],[101,149,166,167,470],[101,149,166,167,480],[101,149,166,167,712],[101,149,166,167,294],[101,149,166,167,483],[101,148,149,166,167,280,282,283,285,333,435,485,486,487,490,491,492,493],[101,149,166,167,199],[101,149,166,167,517],[101,149,166,167,515,517],[101,149,166,167,506,514,515,516,518,520],[101,149,166,167,504],[101,149,166,167,507,512,517,520],[101,149,166,167,503,520],[101,149,166,167,507,508,511,512,513,520],[101,149,166,167,507,508,509,511,512,520],[101,149,166,167,504,505,506,507,508,512,513,514,516,517,518,520],[101,149,166,167,520],[101,149,166,167,502,504,505,506,507,508,509,511,512,513,514,515,516,517,518,519],[101,149,166,167,502,520],[101,149,166,167,507,509,510,512,513,520],[101,149,166,167,511,520],[101,149,166,167,512,513,517,520],[101,149,166,167,505,515],[87,101,149,166,167,807,825],[87,101,149,166,167,807,825,828],[87,101,149,166,167,806,807,825,828],[101,149,166,167,808,809,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846],[87,101,149,166,167,806,807,825],[101,149,166,167,181,199],[101,149,166,167,522,523],[101,149,166,167,521,524],[101,114,118,149,166,167,192],[101,114,149,166,167,181,192],[101,109,149,166,167],[101,111,114,149,166,167,189,192],[101,149,166,167,169,189],[101,109,149,166,167,199],[101,111,114,149,166,167,169,192],[101,106,107,110,113,149,160,166,167,181,192],[101,114,121,149,166,167],[101,106,112,149,166,167],[101,114,135,136,149,166,167],[101,110,114,149,166,167,184,192,199],[101,135,149,166,167,199],[101,108,109,149,166,167,199],[101,114,149,166,167],[101,108,109,110,111,112,113,114,115,116,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,136,137,138,139,140,141,149,166,167],[101,114,129,149,166,167],[101,114,121,122,149,166,167],[101,112,114,122,123,149,166,167],[101,113,149,166,167],[101,106,109,114,149,166,167],[101,114,118,122,123,149,166,167],[101,118,149,166,167],[101,112,114,117,149,166,167,192],[101,106,111,114,121,149,166,167],[101,149,166,167,181],[101,109,114,135,149,166,167,197,199],[101,149,166,167,525],[101,149,166,167,532,533]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"2ab096661c711e4a81cc464fa1e6feb929a54f5340b46b0a07ac6bbf857471f0","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"60037901da1a425516449b9a20073aa03386cce92f7a1fd902d7602be3a7c2e9","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22adec94ef7047a6c9d1af3cb96be87a335908bf9ef386ae9fd50eeb37f44c47","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"73f78680d4c08509933daf80947902f6ff41b6230f94dd002ae372620adb0f60","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5239f5c01bcfa9cd32f37c496cf19c61d69d37e48be9de612b541aac915805b","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0cd2f1591d03492c27a0aa569675ec2f2ac7aedd72b90b74e89db304e98c97f","affectsGlobalScope":true},{"version":"eb5b19b86227ace1d29ea4cf81387279d04bb34051e944bc53df69f58914b788","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"87d9d29dbc745f182683f63187bf3d53fd8673e5fca38ad5eaab69798ed29fbc","impliedFormat":1},{"version":"035312d4945d13efa134ae482f6dc56a1a9346f7ac3be7ccbad5741058ce87f3","affectsGlobalScope":true,"impliedFormat":1},{"version":"acd8fd5090ac73902278889c38336ff3f48af6ba03aa665eb34a75e7ba1dccc4","impliedFormat":1},{"version":"d6258883868fb2680d2ca96bc8b1352cab69874581493e6d52680c5ffecdb6cc","impliedFormat":1},{"version":"1b61d259de5350f8b1e5db06290d31eaebebc6baafd5f79d314b5af9256d7153","impliedFormat":1},{"version":"f258e3960f324a956fc76a3d3d9e964fff2244ff5859dcc6ce5951e5413ca826","impliedFormat":1},{"version":"643f7232d07bf75e15bd8f658f664d6183a0efaca5eb84b48201c7671a266979","impliedFormat":1},{"version":"0f6666b58e9276ac3a38fdc80993d19208442d6027ab885580d93aec76b4ef00","impliedFormat":1},{"version":"05fd364b8ef02fb1e174fbac8b825bdb1e5a36a016997c8e421f5fab0a6da0a0","impliedFormat":1},{"version":"631eff75b0e35d1b1b31081d55209abc43e16b49426546ab5a9b40bdd40b1f60","impliedFormat":1},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"808069bba06b6768b62fd22429b53362e7af342da4a236ed2d2e1c89fcca3b4a","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fa06ada475b910e2106c98c68b10483dc8811d0c14a8a8dd36efb2672485b29","impliedFormat":1},{"version":"33e5e9aba62c3193d10d1d33ae1fa75c46a1171cf76fef750777377d53b0303f","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"6a0cd27e5dc2cfbe039e731cf879d12b0e2dded06d1b1dedad07f7712de0d7f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f5c844119c43e51ce777c509267f14d6aaf31eafb2c2b002ca35584cd13b29","impliedFormat":1},{"version":"e60477649d6ad21542bd2dc7e3d9ff6853d0797ba9f689ba2f6653818999c264","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4c829ab315f57c5442c6667b53769975acbf92003a66aef19bce151987675bd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"b2ade7657e2db96d18315694789eff2ddd3d8aea7215b181f8a0b303277cc579","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"4d631b81fa2f07a0e63a9a143d6a82c25c5f051298651a9b69176ba28930756d","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"41670ee38943d9cbb4924e436f56fc19ee94232bc96108562de1a734af20dc2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"c906fb15bd2aabc9ed1e3f44eb6a8661199d6c320b3aa196b826121552cb3695","impliedFormat":1},{"version":"22295e8103f1d6d8ea4b5d6211e43421fe4564e34d0dd8e09e520e452d89e659","impliedFormat":1},{"version":"f949f7f6c7802a338039cfc2156d1fe285cdd1e092c64437ebe15ae8edc854e0","impliedFormat":1},{"version":"6b4e081d55ac24fc8a4631d5dd77fe249fa25900abd7d046abb87d90e3b45645","impliedFormat":1},{"version":"a10f0e1854f3316d7ee437b79649e5a6ae3ae14ffe6322b02d4987071a95362e","impliedFormat":1},{"version":"e208f73ef6a980104304b0d2ca5f6bf1b85de6009d2c7e404028b875020fa8f2","impliedFormat":1},{"version":"d163b6bc2372b4f07260747cbc6c0a6405ab3fbcea3852305e98ac43ca59f5bc","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"83e63d6ccf8ec004a3bb6d58b9bb0104f60e002754b1e968024b320730cc5311","impliedFormat":1},{"version":"24826ed94a78d5c64bd857570fdbd96229ad41b5cb654c08d75a9845e3ab7dde","impliedFormat":1},{"version":"8b479a130ccb62e98f11f136d3ac80f2984fdc07616516d29881f3061f2dd472","impliedFormat":1},{"version":"928af3d90454bf656a52a48679f199f64c1435247d6189d1caf4c68f2eaf921f","affectsGlobalScope":true,"impliedFormat":1},{"version":"d2bc7425ef40526650d6db7e072c1ff4a51101c3ac2cc4b666623b19496a6e27","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"a3fc63c0d7b031693f665f5494412ba4b551fe644ededccc0ab5922401079c95","impliedFormat":1},{"version":"f27524f4bef4b6519c604bdb23bf4465bddcccbf3f003abb901acbd0d7404d99","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"6b039f55681caaf111d5eb84d292b9bee9e0131d0db1ad0871eef0964f533c73","affectsGlobalScope":true,"impliedFormat":1},{"version":"18fd40412d102c5564136f29735e5d1c3b455b8a37f920da79561f1fde068208","impliedFormat":1},{"version":"c8d3e5a18ba35629954e48c4cc8f11dc88224650067a172685c736b27a34a4dc","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"0dba70b3fb0dcd713fda33c2df64fa6751fff6460e536971cee917260fb17882","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"5b7aa3c4c1a5d81b411e8cb302b45507fea9358d3569196b27eb1a27ae3a90ef","affectsGlobalScope":true,"impliedFormat":1},{"version":"5987a903da92c7462e0b35704ce7da94d7fdc4b89a984871c0e2b87a8aae9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea08a0345023ade2b47fbff5a76d0d0ed8bff10bc9d22b83f40858a8e941501c","impliedFormat":1},{"version":"47613031a5a31510831304405af561b0ffaedb734437c595256bb61a90f9311b","impliedFormat":1},{"version":"ae062ce7d9510060c5d7e7952ae379224fb3f8f2dd74e88959878af2057c143b","impliedFormat":1},{"version":"8a1a0d0a4a06a8d278947fcb66bf684f117bf147f89b06e50662d79a53be3e9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"9f663c2f91127ef7024e8ca4b3b4383ff2770e5f826696005de382282794b127","impliedFormat":1},{"version":"9f55299850d4f0921e79b6bf344b47c420ce0f507b9dcf593e532b09ea7eeea1","impliedFormat":1},{"version":"f9fd93190acb1ffe0bc0fb395df979452f8d625071e9ffc8636e4dfb86ab2508","impliedFormat":1},{"version":"5f41fd8732a89e940c58ce22206e3df85745feb8983e2b4c6257fb8cbb118493","impliedFormat":1},{"version":"17ed71200119e86ccef2d96b73b02ce8854b76ad6bd21b5021d4269bec527b5f","impliedFormat":1},{"version":"1cfa8647d7d71cb03847d616bd79320abfc01ddea082a49569fda71ac5ece66b","impliedFormat":1},{"version":"bb7a61dd55dc4b9422d13da3a6bb9cc5e89be888ef23bbcf6558aa9726b89a1c","impliedFormat":1},{"version":"413df52d4ea14472c2fa5bee62f7a40abd1eb49be0b9722ee01ee4e52e63beb2","impliedFormat":1},{"version":"db6d2d9daad8a6d83f281af12ce4355a20b9a3e71b82b9f57cddcca0a8964a96","impliedFormat":1},{"version":"829b9e6028b29e6a8b1c01ddb713efe59da04d857089298fa79acbdb3cfcfdef","impliedFormat":1},{"version":"24f8562308dd8ba6013120557fa7b44950b619610b2c6cb8784c79f11e3c4f90","impliedFormat":1},{"version":"5d8717b437b9d6afeb4da84b9082db35cafce3dfd025bc7c9ad7abbe50fa2778","impliedFormat":1},{"version":"a86f82d646a739041d6702101afa82dcb935c416dd93cbca7fd754fd0282ce1f","impliedFormat":1},{"version":"ad0d1d75d129b1c80f911be438d6b61bfa8703930a8ff2be2f0e1f8a91841c64","impliedFormat":1},{"version":"ce75b1aebb33d510ff28af960a9221410a3eaf7f18fc5f21f9404075fba77256","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"496bbf339f3838c41f164238543e9fe5f1f10659cb30b68903851618464b98ba","impliedFormat":1},{"version":"5178eb4415a172c287c711dc60a619e110c3fd0b7de01ed0627e51a5336aa09c","impliedFormat":1},{"version":"ca6e5264278b53345bc1ce95f42fb0a8b733a09e3d6479c6ccfca55cdc45038c","impliedFormat":1},{"version":"9e2739b32f741859263fdba0244c194ca8e96da49b430377930b8f721d77c000","impliedFormat":1},{"version":"fb1d8e814a3eeb5101ca13515e0548e112bd1ff3fb358ece535b93e94adf5a3a","impliedFormat":1},{"version":"ffa495b17a5ef1d0399586b590bd281056cee6ce3583e34f39926f8dcc6ecdb5","impliedFormat":1},{"version":"98b18458acb46072947aabeeeab1e410f047e0cacc972943059ca5500b0a5e95","impliedFormat":1},{"version":"361e2b13c6765d7f85bb7600b48fde782b90c7c41105b7dab1f6e7871071ba20","impliedFormat":1},{"version":"c86fe861cf1b4c46a0fb7d74dffe596cf679a2e5e8b1456881313170f092e3fa","impliedFormat":1},{"version":"b6db56e4903e9c32e533b78ac85522de734b3d3a8541bf24d256058d464bf04b","impliedFormat":1},{"version":"24daa0366f837d22c94a5c0bad5bf1fd0f6b29e1fae92dc47c3072c3fdb2fbd5","impliedFormat":1},{"version":"570bb5a00836ffad3e4127f6adf581bfc4535737d8ff763a4d6f4cc877e60d98","impliedFormat":1},{"version":"889c00f3d32091841268f0b994beba4dceaa5df7573be12c2c829d7c5fbc232c","impliedFormat":1},{"version":"65f43099ded6073336e697512d9b80f2d4fec3182b7b2316abf712e84104db00","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"acf5a2ac47b59ca07afa9abbd2b31d001bf7448b041927befae2ea5b1951d9f9","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"d71291eff1e19d8762a908ba947e891af44749f3a2cbc5bd2ec4b72f72ea795f","impliedFormat":1},{"version":"c0480e03db4b816dff2682b347c95f2177699525c54e7e6f6aa8ded890b76be7","impliedFormat":1},{"version":"27ab780875bcbb65e09da7496f2ca36288b0c541abaa75c311450a077d54ec15","impliedFormat":1},{"version":"b620391fe8060cf9bedc176a4d01366e6574d7a71e0ac0ab344a4e76576fcbb8","impliedFormat":1},{"version":"380647d8f3b7f852cca6d154a376dbf8ac620a2f12b936594504a8a852e71d2f","impliedFormat":1},{"version":"208c9af9429dd3c76f5927b971263174aaa4bc7621ddec63f163640cbd3c473c","impliedFormat":1},{"version":"6459054aabb306821a043e02b89d54da508e3a6966601a41e71c166e4ea1474f","impliedFormat":1},{"version":"a23185bc5ef590c287c28a91baf280367b50ae4ea40327366ad01f6f4a8edbc5","impliedFormat":1},{"version":"bb37588926aba35c9283fe8d46ebf4e79ffe976343105f5c6d45f282793352b2","impliedFormat":1},{"version":"002eae065e6960458bda3cf695e578b0d1e2785523476f8a9170b103c709cd4f","impliedFormat":1},{"version":"c83bb0c9c5645a46c68356c2f73fdc9de339ce77f7f45a954f560c7e0b8d5ebb","impliedFormat":1},{"version":"05c97cddbaf99978f83d96de2d8af86aded9332592f08ce4a284d72d0952c391","impliedFormat":1},{"version":"72179f9dd22a86deaad4cc3490eb0fe69ee084d503b686985965654013f1391b","impliedFormat":1},{"version":"2e6114a7dd6feeef85b2c80120fdbfb59a5529c0dcc5bfa8447b6996c97a69f5","impliedFormat":1},{"version":"7b6ff760c8a240b40dab6e4419b989f06a5b782f4710d2967e67c695ef3e93c4","impliedFormat":1},{"version":"c8f004e6036aa1c764ad4ec543cf89a5c1893a9535c80ef3f2b653e370de45e6","impliedFormat":1},{"version":"dd80b1e600d00f5c6a6ba23f455b84a7db121219e68f89f10552c54ba46e4dc9","impliedFormat":1},{"version":"b064c36f35de7387d71c599bfcf28875849a1dbc733e82bd26cae3d1cd060521","impliedFormat":1},{"version":"6a148329edecbda07c21098639ef4254ef7869fb25a69f58e5d6a8b7b69d4236","impliedFormat":1},{"version":"8de9fe97fa9e00ec00666fa77ab6e91b35d25af8ca75dabcb01e14ad3299b150","impliedFormat":1},{"version":"f63ab283a1c8f5c79fabe7ca4ef85f9633339c4f0e822fce6a767f9d59282af2","impliedFormat":1},{"version":"dba114fb6a32b355a9cfc26ca2276834d72fe0e94cd2c3494005547025015369","impliedFormat":1},{"version":"a54c996c8870ef1728a2c1fa9b8eaec0bf4a8001cd2583c02dd5869289465b10","impliedFormat":1},{"version":"3e7efde639c6a6c3edb9847b3f61e308bf7a69685b92f665048c45132f51c218","impliedFormat":1},{"version":"df45ca1176e6ac211eae7ddf51336dc075c5314bc5c253651bae639defd5eec5","impliedFormat":1},{"version":"3754982006a3b32c502cff0867ca83584f7a43b1035989ca73603f400de13c96","impliedFormat":1},{"version":"a30ae9bb8a8fa7b90f24b8a0496702063ae4fe75deb27da731ed4a03b2eb6631","impliedFormat":1},{"version":"f974e4a06953682a2c15d5bd5114c0284d5abf8bc0fe4da25cb9159427b70072","impliedFormat":1},{"version":"50256e9c31318487f3752b7ac12ff365c8949953e04568009c8705db802776fb","impliedFormat":1},{"version":"7d73b24e7bf31dfb8a931ca6c4245f6bb0814dfae17e4b60c9e194a631fe5f7b","impliedFormat":1},{"version":"413586add0cfe7369b64979d4ec2ed56c3f771c0667fbde1bf1f10063ede0b08","impliedFormat":1},{"version":"06472528e998d152375ad3bd8ebcb69ff4694fd8d2effaf60a9d9f25a37a097a","impliedFormat":1},{"version":"50b5bc34ce6b12eccb76214b51aadfa56572aa6cc79c2b9455cdbb3d6c76af1d","impliedFormat":1},{"version":"b7e16ef7f646a50991119b205794ebfd3a4d8f8e0f314981ebbe991639023d0e","impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"a401617604fa1f6ce437b81689563dfdc377069e4c58465dbd8d16069aede0a5","impliedFormat":1},{"version":"e9dd71cf12123419c60dab867d44fbee5c358169f99529121eaef277f5c83531","impliedFormat":1},{"version":"5b6a189ba3a0befa1f5d9cb028eb9eec2af2089c32f04ff50e2411f63d70f25d","impliedFormat":1},{"version":"d6e73f8010935b7b4c7487b6fb13ea197cc610f0965b759bec03a561ccf8423a","impliedFormat":1},{"version":"174f3864e398f3f33f9a446a4f403d55a892aa55328cf6686135dfaf9e171657","impliedFormat":1},{"version":"824c76aec8d8c7e65769688cbee102238c0ef421ed6686f41b2a7d8e7e78a931","impliedFormat":1},{"version":"75b868be3463d5a8cfc0d9396f0a3d973b8c297401d00bfb008a42ab16643f13","impliedFormat":1},{"version":"15a234e5031b19c48a69ccc1607522d6e4b50f57d308ecb7fe863d44cd9f9eb3","impliedFormat":1},{"version":"d682336018141807fb602709e2d95a192828fcb8d5ba06dda3833a8ea98f69e3","impliedFormat":1},{"version":"6124e973eab8c52cabf3c07575204efc1784aca6b0a30c79eb85fe240a857efa","impliedFormat":1},{"version":"0d891735a21edc75df51f3eb995e18149e119d1ce22fd40db2b260c5960b914e","impliedFormat":1},{"version":"3b414b99a73171e1c4b7b7714e26b87d6c5cb03d200352da5342ab4088a54c85","impliedFormat":1},{"version":"4fbd3116e00ed3a6410499924b6403cc9367fdca303e34838129b328058ede40","impliedFormat":1},{"version":"b01bd582a6e41457bc56e6f0f9de4cb17f33f5f3843a7cf8210ac9c18472fb0f","impliedFormat":1},{"version":"0a437ae178f999b46b6153d79095b60c42c996bc0458c04955f1c996dc68b971","impliedFormat":1},{"version":"74b2a5e5197bd0f2e0077a1ea7c07455bbea67b87b0869d9786d55104006784f","impliedFormat":1},{"version":"4a7baeb6325920044f66c0f8e5e6f1f52e06e6d87588d837bdf44feb6f35c664","impliedFormat":1},{"version":"6dcf60530c25194a9ee0962230e874ff29d34c59605d8e069a49928759a17e0a","impliedFormat":1},{"version":"7274fbffbd7c9589d8d0ffba68157237afd5cecff1e99881ea3399127e60572f","impliedFormat":1},{"version":"1a42d2ec31a1fe62fdc51591768695ed4a2dc64c01be113e7ff22890bebb5e3f","impliedFormat":1},{"version":"1a82deef4c1d39f6882f28d275cad4c01f907b9b39be9cbc472fcf2cf051e05b","impliedFormat":1},{"version":"c5426dbfc1cf90532f66965a7aa8c1136a78d4d0f96d8180ecbfc11d7722f1a5","impliedFormat":1},{"version":"65a15fc47900787c0bd18b603afb98d33ede930bed1798fc984d5ebb78b26cf9","impliedFormat":1},{"version":"9d202701f6e0744adb6314d03d2eb8fc994798fc83d91b691b75b07626a69801","impliedFormat":1},{"version":"de9d2df7663e64e3a91bf495f315a7577e23ba088f2949d5ce9ec96f44fba37d","impliedFormat":1},{"version":"c7af78a2ea7cb1cd009cfb5bdb48cd0b03dad3b54f6da7aab615c2e9e9d570c5","impliedFormat":1},{"version":"1ee45496b5f8bdee6f7abc233355898e5bf9bd51255db65f5ff7ede617ca0027","impliedFormat":1},{"version":"0c7c947ff881c4274c0800deaa0086971e0bfe51f89a33bd3048eaa3792d4876","affectsGlobalScope":true,"impliedFormat":1},{"version":"db01d18853469bcb5601b9fc9826931cc84cc1a1944b33cad76fd6f1e3d8c544","affectsGlobalScope":true,"impliedFormat":1},{"version":"a8f8e6ab2fa07b45251f403548b78eaf2022f3c2254df3dc186cb2671fe4996d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa6c12a7c0f6b84d512f200690bfc74819e99efae69e4c95c4cd30f6884c526e","impliedFormat":1},{"version":"f1c32f9ce9c497da4dc215c3bc84b722ea02497d35f9134db3bb40a8d918b92b","impliedFormat":1},{"version":"b73c319af2cc3ef8f6421308a250f328836531ea3761823b4cabbd133047aefa","affectsGlobalScope":true,"impliedFormat":1},{"version":"e433b0337b8106909e7953015e8fa3f2d30797cea27141d1c5b135365bb975a6","impliedFormat":1},{"version":"15b36126e0089bfef173ab61329e8286ce74af5e809d8a72edcafd0cc049057f","impliedFormat":1},{"version":"ddff7fc6edbdc5163a09e22bf8df7bef75f75369ebd7ecea95ba55c4386e2441","impliedFormat":1},{"version":"106c6025f1d99fd468fd8bf6e5bda724e11e5905a4076c5d29790b6c3745e50c","impliedFormat":1},{"version":"a57b1802794433adec9ff3fed12aa79d671faed86c49b09e02e1ac41b4f1d33a","impliedFormat":1},{"version":"ad10d4f0517599cdeca7755b930f148804e3e0e5b5a3847adce0f1f71bbccd74","impliedFormat":1},{"version":"1042064ece5bb47d6aba91648fbe0635c17c600ebdf567588b4ca715602f0a9d","impliedFormat":1},{"version":"c49469a5349b3cc1965710b5b0f98ed6c028686aa8450bcb3796728873eb923e","impliedFormat":1},{"version":"4a889f2c763edb4d55cb624257272ac10d04a1cad2ed2948b10ed4a7fda2a428","impliedFormat":1},{"version":"7bb79aa2fead87d9d56294ef71e056487e848d7b550c9a367523ee5416c44cfa","impliedFormat":1},{"version":"72d63643a657c02d3e51cd99a08b47c9b020a565c55f246907050d3c8a5e77fb","impliedFormat":1},{"version":"1d415445ea58f8033ba199703e55ff7483c52ac6742075b803bd3e7bbe9f5d61","impliedFormat":1},{"version":"d6406c629bb3efc31aedb2de809bef471e475c86c7e67f3ef9b676b5d7e0d6b2","impliedFormat":1},{"version":"27ff4196654e6373c9af16b6165120e2dd2169f9ad6abb5c935af5abd8c7938c","impliedFormat":1},{"version":"71d8ba39a9e024d9e4bb922464d18542ed8d2c25ee78efa7890c27213cc6e5d3","impliedFormat":1},{"version":"8c030e515014c10a2b98f9f48408e3ba18023dfd3f56e3312c6c2f3ae1f55a16","impliedFormat":1},{"version":"dafc31e9e8751f437122eb8582b93d477e002839864410ff782504a12f2a550c","impliedFormat":1},{"version":"754498c5208ce3c5134f6eabd49b25cf5e1a042373515718953581636491f3c3","impliedFormat":1},{"version":"9c82171d836c47486074e4ca8e059735bf97b205e70b196535b5efd40cbe1bc5","impliedFormat":1},{"version":"f56bdc6884648806d34bc66d31cdb787c4718d04105ce2cd88535db214631f82","impliedFormat":1},{"version":"633d58a237f4bb25ec7d565e4ffa32cecdcee8660ac12189c4351c52557cee9e","impliedFormat":1},{"version":"2e4f37ffe8862b14d8e24ae8763daaa8340c0df0b859d9a9733def0eee7562d9","impliedFormat":1},{"version":"13283350547389802aa35d9f2188effaeac805499169a06ef5cd77ce2a0bd63f","impliedFormat":1},{"version":"ce791f6ea807560f08065d1af6014581eeb54a05abd73294777a281b6dfd73c2","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"49f95e989b4632c6c2a578cc0078ee19a5831832d79cc59abecf5160ea71abad","impliedFormat":1},{"version":"9666533332f26e8995e4d6fe472bdeec9f15d405693723e6497bf94120c566c8","impliedFormat":1},{"version":"ce0df82a9ae6f914ba08409d4d883983cc08e6d59eb2df02d8e4d68309e7848b","impliedFormat":1},{"version":"796273b2edc72e78a04e86d7c58ae94d370ab93a0ddf40b1aa85a37a1c29ecd7","impliedFormat":1},{"version":"5df15a69187d737d6d8d066e189ae4f97e41f4d53712a46b2710ff9f8563ec9f","impliedFormat":1},{"version":"e17cd049a1448de4944800399daa4a64c5db8657cc9be7ef46be66e2a2cd0e7c","impliedFormat":1},{"version":"43fa6ea8714e18adc312b30450b13562949ba2f205a1972a459180fa54471018","impliedFormat":1},{"version":"6e89c2c177347d90916bad67714d0fb473f7e37fb3ce912f4ed521fe2892cd0d","impliedFormat":1},{"version":"43ba4f2fa8c698f5c304d21a3ef596741e8e85a810b7c1f9b692653791d8d97a","impliedFormat":1},{"version":"4d4927cbee21750904af7acf940c5e3c491b4d5ebc676530211e389dd375607a","impliedFormat":1},{"version":"72105519d0390262cf0abe84cf41c926ade0ff475d35eb21307b2f94de985778","impliedFormat":1},{"version":"8a97e578a9bc40eb4f1b0ca78f476f2e9154ecbbfd5567ee72943bab37fc156a","impliedFormat":1},{"version":"c857e0aae3f5f444abd791ec81206020fbcc1223e187316677e026d1c1d6fe08","impliedFormat":1},{"version":"ccf6dd45b708fb74ba9ed0f2478d4eb9195c9dfef0ff83a6092fa3cf2ff53b4f","impliedFormat":1},{"version":"2d7db1d73456e8c5075387d4240c29a2a900847f9c1bff106a2e490da8fbd457","impliedFormat":1},{"version":"2b15c805f48e4e970f8ec0b1915f22d13ca6212375e8987663e2ef5f0205e832","impliedFormat":1},{"version":"f22d05663d873ee7a600faf78abb67f3f719d32266803440cf11d5db7ac0cab2","impliedFormat":1},{"version":"d93c544ad20197b3976b0716c6d5cd5994e71165985d31dcab6e1f77feb4b8f2","impliedFormat":1},{"version":"35069c2c417bd7443ae7c7cafd1de02f665bf015479fec998985ffbbf500628c","impliedFormat":1},{"version":"a8b1c79a833ee148251e88a2553d02ce1641d71d2921cce28e79678f3d8b96aa","impliedFormat":1},{"version":"126d4f950d2bba0bd45b3a86c76554d4126c16339e257e6d2fabf8b6bf1ce00c","impliedFormat":1},{"version":"7e0b7f91c5ab6e33f511efc640d36e6f933510b11be24f98836a20a2dc914c2d","impliedFormat":1},{"version":"045b752f44bf9bbdcaffd882424ab0e15cb8d11fa94e1448942e338c8ef19fba","impliedFormat":1},{"version":"2894c56cad581928bb37607810af011764a2f511f575d28c9f4af0f2ef02d1ab","impliedFormat":1},{"version":"0a72186f94215d020cb386f7dca81d7495ab6c17066eb07d0f44a5bf33c1b21a","impliedFormat":1},{"version":"2d3cc2211f352f46ea6b7cf2c751c141ffcdf514d6e7ae7ee20b7b6742da313f","impliedFormat":1},{"version":"c75445151ff8b77d9923191efed7203985b1a9e09eccf4b054e7be864e27923d","impliedFormat":1},{"version":"0aedb02516baf3e66b2c1db9fef50666d6ed257edac0f866ea32f1aa05aa474f","impliedFormat":1},{"version":"fa8a8fbf91ee2a4779496225f0312aac6635b0f21aa09cdafa4283fe32d519c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"0e8aef93d79b000deb6ec336b5645c87de167168e184e84521886f9ecc69a4b5","impliedFormat":1},{"version":"56ccb49443bfb72e5952f7012f0de1a8679f9f75fc93a5c1ac0bafb28725fc5f","impliedFormat":1},{"version":"d90b9f1520366d713a73bd30c5a9eb0040d0fb6076aff370796bc776fd705943","impliedFormat":1},{"version":"05321b823dd3781d0b6aac8700bfdc0c9181d56479fe52ba6a40c9196fd661a8","impliedFormat":1},{"version":"736a8712572e21ee73337055ce15edb08142fc0f59cd5410af4466d04beff0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"bef86adb77316505c6b471da1d9b8c9e428867c2566270e8894d4d773a1c4dc2","impliedFormat":1},{"version":"de7052bfee2981443498239a90c04ea5cc07065d5b9bb61b12cb6c84313ad4ef","impliedFormat":1},{"version":"a3e7d932dc9c09daa99141a8e4800fc6c58c625af0d4bbb017773dc36da75426","impliedFormat":1},{"version":"43e96a3d5d1411ab40ba2f61d6a3192e58177bcf3b133a80ad2a16591611726d","impliedFormat":1},{"version":"4a2edd238d9104eac35b60d727f1123de5062f452b70ed8e0366cb36387dfdfd","impliedFormat":1},{"version":"ca921bf56756cb6fe957f6af693a35251b134fb932dc13f3dfff0bb7106f80b4","impliedFormat":1},{"version":"fee92c97f1aa59eb7098a0cc34ff4df7e6b11bae71526aca84359a2575f313d8","impliedFormat":1},{"version":"0bd0297484aacea217d0b76e55452862da3c5d9e33b24430e0719d1161657225","impliedFormat":1},{"version":"2ab6d334bcbf2aff3acfc4fd8c73ecd82b981d3c3aa47b3f3b89281772286904","impliedFormat":1},{"version":"d07cbc787a997d83f7bde3877fec5fb5b12ce8c1b7047eb792996ed9726b4dde","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"4805f6161c2c8cefb8d3b8bd96a080c0fe8dbc9315f6ad2e53238f9a79e528a6","impliedFormat":1},{"version":"b83cb14474fa60c5f3ec660146b97d122f0735627f80d82dd03e8caa39b4388c","impliedFormat":1},{"version":"f374cb24e93e7798c4d9e83ff872fa52d2cdb36306392b840a6ddf46cb925cb6","impliedFormat":1},{"version":"49179c6a23701c642bd99abe30d996919748014848b738d8e85181fc159685ff","impliedFormat":1},{"version":"b73cbf0a72c8800cf8f96a9acfe94f3ad32ca71342a8908b8ae484d61113f647","impliedFormat":1},{"version":"bae6dd176832f6423966647382c0d7ba9e63f8c167522f09a982f086cd4e8b23","impliedFormat":1},{"version":"20865ac316b8893c1a0cc383ccfc1801443fbcc2a7255be166cf90d03fac88c9","impliedFormat":1},{"version":"c9958eb32126a3843deedda8c22fb97024aa5d6dd588b90af2d7f2bfac540f23","impliedFormat":1},{"version":"461d0ad8ae5f2ff981778af912ba71b37a8426a33301daa00f21c6ccb27f8156","impliedFormat":1},{"version":"e927c2c13c4eaf0a7f17e6022eee8519eb29ef42c4c13a31e81a611ab8c95577","impliedFormat":1},{"version":"fcafff163ca5e66d3b87126e756e1b6dfa8c526aa9cd2a2b0a9da837d81bbd72","impliedFormat":1},{"version":"70246ad95ad8a22bdfe806cb5d383a26c0c6e58e7207ab9c431f1cb175aca657","impliedFormat":1},{"version":"f00f3aa5d64ff46e600648b55a79dcd1333458f7a10da2ed594d9f0a44b76d0b","impliedFormat":1},{"version":"772d8d5eb158b6c92412c03228bd9902ccb1457d7a705b8129814a5d1a6308fc","impliedFormat":1},{"version":"45490817629431853543adcb91c0673c25af52a456479588b6486daba34f68bb","impliedFormat":1},{"version":"802e797bcab5663b2c9f63f51bdf67eff7c41bc64c0fd65e6da3e7941359e2f7","impliedFormat":1},{"version":"8b4327413e5af38cd8cb97c59f48c3c866015d5d642f28518e3a891c469f240e","impliedFormat":1},{"version":"8514c62ce38e58457d967e9e73f128eedc1378115f712b9eef7127f7c88f82ae","impliedFormat":1},{"version":"f1289e05358c546a5b664fbb35a27738954ec2cc6eb4137350353099d154fc62","impliedFormat":1},{"version":"4b20fcf10a5413680e39f5666464859fc56b1003e7dfe2405ced82371ebd49b6","impliedFormat":1},{"version":"1d17ba45cfbe77a9c7e0df92f7d95f3eefd49ee23d1104d0548b215be56945ad","impliedFormat":1},{"version":"f7d628893c9fa52ba3ab01bcb5e79191636c4331ee5667ecc6373cbccff8ae12","impliedFormat":1},{"version":"1d879125d1ec570bf04bc1f362fdbe0cb538315c7ac4bcfcdf0c1e9670846aa6","impliedFormat":1},{"version":"e16344db9b8ee59d41abdb3a61e4470955b5712c0ee869fb47112e152aabe142","impliedFormat":1},{"version":"46273e8c29816125d0d0b56ce9a849cc77f60f9a5ba627447501d214466f0ff3","impliedFormat":1},{"version":"d663134457d8d669ae0df34eabd57028bddc04fc444c4bc04bc5215afc91e1f4","impliedFormat":1},{"version":"144bc326e90b894d1ec78a2af3ffb2eb3733f4d96761db0ca0b6239a8285f972","impliedFormat":1},{"version":"3af3584f79c57853028ef9421ec172539e1fe01853296dc05a9d615ade4ffaf6","impliedFormat":1},{"version":"f82579d87701d639ff4e3930a9b24f4ee13ca74221a9a3a792feb47f01881a9c","impliedFormat":1},{"version":"d7e5d5245a8ba34a274717d085174b2c9827722778129b0081fefd341cca8f55","impliedFormat":1},{"version":"d9d32f94056181c31f553b32ce41d0ef75004912e27450738d57efcd2409c324","impliedFormat":1},{"version":"752513f35f6cff294ffe02d6027c41373adf7bfa35e593dbfd53d95c203635ee","impliedFormat":1},{"version":"6c800b281b9e89e69165fd11536195488de3ff53004e55905e6c0059a2d8591e","impliedFormat":1},{"version":"7d4254b4c6c67a29d5e7f65e67d72540480ac2cfb041ca484847f5ae70480b62","impliedFormat":1},{"version":"1a7e2ea171726446850ec72f4d1525d547ff7e86724cc9e7eec509725752a758","impliedFormat":1},{"version":"8c901126d73f09ecdea4785e9a187d1ac4e793e07da308009db04a7283ec2f37","impliedFormat":1},{"version":"db97922b767bd2675fdfa71e08b49c38b7d2c847a1cc4a7274cb77be23b026f1","impliedFormat":1},{"version":"aab290b8e4b7c399f2c09b957666fc95335eb4522b2dd9ead1bf0cb64da6d6ee","impliedFormat":1},{"version":"94fe3281392e1015b22f39535878610b4fa6f1388dc8d78746be3bc4e4bb8950","impliedFormat":1},{"version":"2652448ac55a2010a1f71dd141f828b682298d39728f9871e1cdf8696ef443fd","impliedFormat":1},{"version":"06c25ddfc2242bd06c19f66c9eae4c46d937349a267810f89783680a1d7b5259","impliedFormat":1},{"version":"120599fd965257b1f4d0ff794bc696162832d9d8467224f4665f713a3119078b","impliedFormat":1},{"version":"5433f33b0a20300cca35d2f229a7fc20b0e8477c44be2affeb21cb464af60c76","impliedFormat":1},{"version":"db036c56f79186da50af66511d37d9fe77fa6793381927292d17f81f787bb195","impliedFormat":1},{"version":"bd4131091b773973ca5d2326c60b789ab1f5e02d8843b3587effe6e1ea7c9d86","impliedFormat":1},{"version":"c7f6485931085bf010fbaf46880a9b9ec1a285ad9dc8c695a9e936f5a48f34b4","impliedFormat":1},{"version":"14f6b927888a1112d662877a5966b05ac1bf7ed25d6c84386db4c23c95a5363b","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"0427df5c06fafc5fe126d14b9becd24160a288deff40e838bfbd92a35f8d0d00","impliedFormat":1},{"version":"90c54a02432d04e4246c87736e53a6a83084357acfeeba7a489c5422b22f5c7a","impliedFormat":1},{"version":"49c346823ba6d4b12278c12c977fb3a31c06b9ca719015978cb145eb86da1c61","impliedFormat":1},{"version":"bfac6e50eaa7e73bb66b7e052c38fdc8ccfc8dbde2777648642af33cf349f7f1","impliedFormat":1},{"version":"92f7c1a4da7fbfd67a2228d1687d5c2e1faa0ba865a94d3550a3941d7527a45d","impliedFormat":1},{"version":"f53b120213a9289d9a26f5af90c4c686dd71d91487a0aa5451a38366c70dc64b","impliedFormat":1},{"version":"83fe880c090afe485a5c02262c0b7cdd76a299a50c48d9bde02be8e908fb4ae6","impliedFormat":1},{"version":"0a372c2d12a259da78e21b25974d2878502f14d89c6d16b97bd9c5017ab1bc12","impliedFormat":1},{"version":"57d67b72e06059adc5e9454de26bbfe567d412b962a501d263c75c2db430f40e","impliedFormat":1},{"version":"6511e4503cf74c469c60aafd6589e4d14d5eb0a25f9bf043dcbecdf65f261972","impliedFormat":1},{"version":"ec1ca97598eda26b7a5e6c8053623acbd88e43be7c4d29c77ccd57abc4c43999","impliedFormat":1},{"version":"6e2261cd9836b2c25eecb13940d92c024ebed7f8efe23c4b084145cd3a13b8a6","impliedFormat":1},{"version":"a67b87d0281c97dfc1197ef28dfe397fc2c865ccd41f7e32b53f647184cc7307","impliedFormat":1},{"version":"771ffb773f1ddd562492a6b9aaca648192ac3f056f0e1d997678ff97dbb6bf9b","impliedFormat":1},{"version":"232f70c0cf2b432f3a6e56a8dc3417103eb162292a9fd376d51a3a9ea5fbbf6f","impliedFormat":1},{"version":"a47e6d954d22dd9ebb802e7e431b560ed7c581e79fb885e44dc92ed4f60d4c07","impliedFormat":1},{"version":"f019e57d2491c159d47a107fd90219a1734bdd2e25cd8d1db3c8fae5c6b414c4","impliedFormat":1},{"version":"8a0e762ceb20c7e72504feef83d709468a70af4abccb304f32d6b9bac1129b2c","impliedFormat":1},{"version":"d1c9bf292a54312888a77bb19dba5e2503ad803f5393beafd45d78d2f4fe9b48","impliedFormat":1},{"version":"9252d498a77517aab5d8d4b5eb9d71e4b225bbc7123df9713e08181de63180f6","impliedFormat":1},{"version":"cb8d8ef7b9ce8ed3e6f1c814fcbf3f90dab0cb8863079236784fc350746e27c4","impliedFormat":1},{"version":"35e6379c3f7cb27b111ad4c1aa69538fd8e788ab737b8ff7596a1b40e96f4f90","impliedFormat":1},{"version":"1fffe726740f9787f15b532e1dc870af3cd964dbe29e191e76121aa3dd8693f2","impliedFormat":1},{"version":"3be035da7bee86b4c3abf392e0edaa44fc6e45092995eefe36b39118c8a84068","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f828825d077c2fa0ea606649faeb122749273a353daab23924fe674e98ba44c","impliedFormat":1},{"version":"2896c2e673a5d3bd9b4246811f79486a073cbb03950c3d252fba10003c57411a","impliedFormat":1},{"version":"616775f16134fa9d01fc677ad3f76e68c051a056c22ab552c64cc281a9686790","impliedFormat":1},{"version":"65c24a8baa2cca1de069a0ba9fba82a173690f52d7e2d0f1f7542d59d5eb4db0","impliedFormat":1},{"version":"f9fe6af238339a0e5f7563acee3178f51db37f32a2e7c09f85273098cee7ec49","impliedFormat":1},{"version":"407a06ba04eede4074eec470ecba2784cbb3bf4e7de56833b097dd90a2aa0651","impliedFormat":1},{"version":"77e71242e71ebf8528c5802993697878f0533db8f2299b4d36aa015bae08a79c","impliedFormat":1},{"version":"98a787be42bd92f8c2a37d7df5f13e5992da0d967fab794adbb7ee18370f9849","impliedFormat":1},{"version":"5c96bad5f78466785cdad664c056e9e2802d5482ca5f862ed19ba34ffbb7b3a4","impliedFormat":1},{"version":"81d8603ac527e75cfec72bb9391228b58f161c2b33514a9d814c7f3ebd3ef466","impliedFormat":1},{"version":"5f3dc10ae646f375776b4e028d2bed039a93eebbba105694d8b910feebbe8b9c","impliedFormat":1},{"version":"bb0cd7862b72f5eba39909c9889d566e198fcaddf7207c16737d0c2246112678","impliedFormat":1},{"version":"4545c1a1ceca170d5d83452dd7c4994644c35cf676a671412601689d9a62da35","impliedFormat":1},{"version":"320f4091e33548b554d2214ce5fc31c96631b513dffa806e2e3a60766c8c49d9","impliedFormat":1},{"version":"a2d648d333cf67b9aeac5d81a1a379d563a8ffa91ddd61c6179f68de724260ff","impliedFormat":1},{"version":"d90d5f524de38889d1e1dbc2aeef00060d779f8688c02766ddb9ca195e4a713d","impliedFormat":1},{"version":"a3f41ed1b4f2fc3049394b945a68ae4fdefd49fa1739c32f149d32c0545d67f5","impliedFormat":1},{"version":"bad68fd0401eb90fe7da408565c8aee9c7a7021c2577aec92fa1382e8876071a","impliedFormat":1},{"version":"47699512e6d8bebf7be488182427189f999affe3addc1c87c882d36b7f2d0b0e","impliedFormat":1},{"version":"fec01479923e169fb52bd4f668dbeef1d7a7ea6e6d491e15617b46f2cacfa37d","impliedFormat":1},{"version":"8a8fb3097ba52f0ae6530ec6ab34e43e316506eb1d9aa29420a4b1e92a81442d","impliedFormat":1},{"version":"44e09c831fefb6fe59b8e65ad8f68a7ecc0e708d152cfcbe7ba6d6080c31c61e","impliedFormat":1},{"version":"1c0a98de1323051010ce5b958ad47bc1c007f7921973123c999300e2b7b0ecc0","impliedFormat":1},{"version":"4655709c9cb3fd6db2b866cab7c418c40ed9533ce8ea4b66b5f17ec2feea46a9","impliedFormat":1},{"version":"87affad8e2243635d3a191fa72ef896842748d812e973b7510a55c6200b3c2a4","impliedFormat":1},{"version":"ad036a85efcd9e5b4f7dd5c1a7362c8478f9a3b6c3554654ca24a29aa850a9c5","impliedFormat":1},{"version":"fedebeae32c5cdd1a85b4e0504a01996e4a8adf3dfa72876920d3dd6e42978e7","impliedFormat":1},{"version":"3eecb25bb467a948c04874d70452b14ae7edb707660aac17dc053e42f2088b00","impliedFormat":1},{"version":"cdf21eee8007e339b1b9945abf4a7b44930b1d695cc528459e68a3adc39a622e","impliedFormat":1},{"version":"330896c1a2b9693edd617be24fbf9e5895d6e18c7955d6c08f028f272b37314d","impliedFormat":1},{"version":"1d9c0a9a6df4e8f29dc84c25c5aa0bb1da5456ebede7a03e03df08bb8b27bae6","impliedFormat":1},{"version":"84380af21da938a567c65ef95aefb5354f676368ee1a1cbb4cae81604a4c7d17","impliedFormat":1},{"version":"1af3e1f2a5d1332e136f8b0b95c0e6c0a02aaabd5092b36b64f3042a03debf28","impliedFormat":1},{"version":"30d8da250766efa99490fc02801047c2c6d72dd0da1bba6581c7e80d1d8842a4","impliedFormat":1},{"version":"03566202f5553bd2d9de22dfab0c61aa163cabb64f0223c08431fb3fc8f70280","impliedFormat":1},{"version":"5f0292a40df210ab94b9fb44c8b775c51e96777e14e073900e392b295ca1061b","impliedFormat":1},{"version":"bc9ee0192f056b3d5527bcd78dc3f9e527a9ba2bdc0a2c296fbc9027147df4b2","impliedFormat":1},{"version":"8627ad129bcf56e82adff0ab5951627c993937aa99f5949c33240d690088b803","impliedFormat":1},{"version":"1de80059b8078ea5749941c9f863aa970b4735bdbb003be4925c853a8b6b4450","impliedFormat":1},{"version":"1d079c37fa53e3c21ed3fa214a27507bda9991f2a41458705b19ed8c2b61173d","impliedFormat":1},{"version":"5bf5c7a44e779790d1eb54c234b668b15e34affa95e78eada73e5757f61ed76a","impliedFormat":1},{"version":"5835a6e0d7cd2738e56b671af0e561e7c1b4fb77751383672f4b009f4e161d70","impliedFormat":1},{"version":"5c634644d45a1b6bc7b05e71e05e52ec04f3d73d9ac85d5927f647a5f965181a","impliedFormat":1},{"version":"4b7f74b772140395e7af67c4841be1ab867c11b3b82a51b1aeb692822b76c872","impliedFormat":1},{"version":"27be6622e2922a1b412eb057faa854831b95db9db5035c3f6d4b677b902ab3b7","impliedFormat":1},{"version":"a68d4b3182e8d776cdede7ac9630c209a7bfbb59191f99a52479151816ef9f9e","impliedFormat":99},{"version":"39644b343e4e3d748344af8182111e3bbc594930fff0170256567e13bbdbebb0","impliedFormat":99},{"version":"ed7fd5160b47b0de3b1571c5c5578e8e7e3314e33ae0b8ea85a895774ee64749","impliedFormat":99},{"version":"63a7595a5015e65262557f883463f934904959da563b4f788306f699411e9bac","impliedFormat":1},{"version":"ecbaf0da125974be39c0aac869e403f72f033a4e7fd0d8cd821a8349b4159628","impliedFormat":1},{"version":"4ba137d6553965703b6b55fd2000b4e07ba365f8caeb0359162ad7247f9707a6","impliedFormat":1},{"version":"ceec3c81b2d81f5e3b855d9367c1d4c664ab5046dff8fd56552df015b7ccbe8f","affectsGlobalScope":true,"impliedFormat":1},{"version":"8fac4a15690b27612d8474fb2fc7cc00388df52d169791b78d1a3645d60b4c8b","affectsGlobalScope":true,"impliedFormat":1},{"version":"064ac1c2ac4b2867c2ceaa74bbdce0cb6a4c16e7c31a6497097159c18f74aa7c","impliedFormat":1},{"version":"3dc14e1ab45e497e5d5e4295271d54ff689aeae00b4277979fdd10fa563540ae","impliedFormat":1},{"version":"1d63055b690a582006435ddd3aa9c03aac16a696fac77ce2ed808f3e5a06efab","impliedFormat":1},{"version":"b789bf89eb19c777ed1e956dbad0925ca795701552d22e68fd130a032008b9f9","impliedFormat":1},"f4e8976c19fc926644d72610bf1058bd6bf52add97e46a02bc0b912a751625c0",{"version":"3af049307a115d73c4114c279b74fb03e677d043da80d3ca6360b5d49b8fb228","signature":"435a1e418e8338be3f39614b96b81a9aa2700bc8c27bc6b98f064ff9ce17c363"},{"version":"402e5c534fb2b85fa771170595db3ac0dd532112c8fa44fc23f233bc6967488b","impliedFormat":1},{"version":"8885cf05f3e2abf117590bbb951dcf6359e3e5ac462af1c901cfd24c6a6472e2","impliedFormat":1},{"version":"333caa2bfff7f06017f114de738050dd99a765c7eb16571c6d25a38c0d5365dc","impliedFormat":1},{"version":"e61df3640a38d535fd4bc9f4a53aef17c296b58dc4b6394fd576b808dd2fe5e6","impliedFormat":1},{"version":"459920181700cec8cbdf2a5faca127f3f17fd8dd9d9e577ed3f5f3af5d12a2e4","impliedFormat":1},{"version":"4719c209b9c00b579553859407a7e5dcfaa1c472994bd62aa5dd3cc0757eb077","impliedFormat":1},{"version":"7ec359bbc29b69d4063fe7dad0baaf35f1856f914db16b3f4f6e3e1bca4099fa","impliedFormat":1},{"version":"70790a7f0040993ca66ab8a07a059a0f8256e7bb57d968ae945f696cbff4ac7a","impliedFormat":1},{"version":"d1b9a81e99a0050ca7f2d98d7eedc6cda768f0eb9fa90b602e7107433e64c04c","impliedFormat":1},{"version":"a022503e75d6953d0e82c2c564508a5c7f8556fad5d7f971372d2d40479e4034","impliedFormat":1},{"version":"b215c4f0096f108020f666ffcc1f072c81e9f2f95464e894a5d5f34c5ea2a8b1","impliedFormat":1},{"version":"644491cde678bd462bb922c1d0cfab8f17d626b195ccb7f008612dc31f445d2d","impliedFormat":1},{"version":"dfe54dab1fa4961a6bcfba68c4ca955f8b5bbeb5f2ab3c915aa7adaa2eabc03a","impliedFormat":1},{"version":"1251d53755b03cde02466064260bb88fd83c30006a46395b7d9167340bc59b73","impliedFormat":1},{"version":"47865c5e695a382a916b1eedda1b6523145426e48a2eae4647e96b3b5e52024f","impliedFormat":1},{"version":"4cdf27e29feae6c7826cdd5c91751cc35559125e8304f9e7aed8faef97dcf572","impliedFormat":1},{"version":"331b8f71bfae1df25d564f5ea9ee65a0d847c4a94baa45925b6f38c55c7039bf","impliedFormat":1},{"version":"2a771d907aebf9391ac1f50e4ad37952943515eeea0dcc7e78aa08f508294668","impliedFormat":1},{"version":"0146fd6262c3fd3da51cb0254bb6b9a4e42931eb2f56329edd4c199cb9aaf804","impliedFormat":1},{"version":"183f480885db5caa5a8acb833c2be04f98056bdcc5fb29e969ff86e07efe57ab","impliedFormat":99},{"version":"b558c9a18ea4e6e4157124465c3ef1063e64640da139e67be5edb22f534f2f08","impliedFormat":1},{"version":"01374379f82be05d25c08d2f30779fa4a4c41895a18b93b33f14aeef51768692","impliedFormat":1},{"version":"b0dee183d4e65cf938242efaf3d833c6b645afb35039d058496965014f158141","impliedFormat":1},{"version":"c0bbbf84d3fbd85dd60d040c81e8964cc00e38124a52e9c5dcdedf45fea3f213","impliedFormat":1},{"version":"8c62ca2967cfb122b2e4353ce4e385239843de4887de67c268d550c65f09644f","signature":"f65ce75c9085571e6321abf2bf9833709f4897e381f89e9925521833dbb7ab16"},{"version":"b3dc1ccda573456047299229b83982dc36209dbb1be9eab9175cc4214afe4859","signature":"5f5303388c23daf221df682ba0e6ed13924ad3a925fae5ec71f4cdfb6adf1b79"},{"version":"5bc45cb0bf04c7a4fa0581fa03fdfa1eaf7bab0bfe7d18471ea4aa9952a28e46","signature":"50c30bece3e42fffcf518f49efb65f83ecbff451d51dbe0c714309cf204f970c"},{"version":"6f35ec0b58532380212ff15a3da2f96d2146b9895c70cf67d6dcda8385b4bd57","signature":"ebc450cf4888573aef03e1d85e34f8587789f7436e4c80a3f1417a66429a9a29"},{"version":"4654f66c69f3da8a2848cfd68b75a23230a8d62b6eceebfcf214e0d623b6e7b4","signature":"a8c7595b174fd808b6caeadc7a886d13d99c17acf3e110f04a47398699fe9e81"},{"version":"920848def0a48005945fb3e9979bc4f6b6153d13f4d5a5fe01eb27bd66b5d1f5","signature":"d3331d80be96834d382c284fcf3bd31dfdf9c82a15ab0a13c1e7e27a78205925"},{"version":"805237e1b94d4b96f0d833ee60b60257401e8dfde26f686e60fbbf0d412f6fb2","signature":"72af78ebc4c7ca71f3cd76f38659d0dc231f4b8df8bda968cead637bd1633242"},{"version":"1b12bf5bdc598a48cd3ea5723158ee5725beb5394749f513be69b2db859bdc57","signature":"1d8c713d9d5e4e0fe30ee91621be45ce1cef99b50aa82ba845e3bed8094249d7"},"c86473483edfb9d5d810a3e1714a6bc5359901cb3f3b9dee3f274c7e4f1eb627","b8005de76cc5b5f3af31f292491ac127f9738a0c022a967db0089e11980b3914",{"version":"9048e66f9ee0f6c98bbd6993aecc94b5e1566c665c7b767779dc71d05a232a87","signature":"759805e99c9e10dfbad43113e0a79ea634d265b2332e6d3f309026afdb66807b"},{"version":"a74cf061f6bd3b8209b82a1e118ca0d139ff08d0ff3c8a162ff3ac0e8cc698b1","signature":"c0a5e3199ce900caee714b0cc2ca870402dfff4b48f53553e18882ecb738047f"},{"version":"ffce762ea3b1bdd900efbb8f1cec0b8fb855691fa748d189f86ff0d60f3caa63","signature":"77c9adae7e0872bbd34729c05aa562718c0a3d603c9a436737327935f58ac85b"},{"version":"a5b69b808d3789e19ba50d99bd6a7ba1575b8208dc0cddc480718d61e1f76e39","signature":"8441a3818a22a2a444c7a6776cd7d6f83969a36a63796815a858c2629fc7370c"},{"version":"0b21cc62f28c164ef131d6e5afc304b392b0f0e65ad7a3d0cfdd0a632fd1309f","signature":"bbcf21fdb47d0a821efd28199218b48935e166e6a1cca9df5c2c66f71bf20881"},{"version":"3ce1f50edd3fac5be194ff02e4420c10bed423a7f078f2322850b025618cd8c5","signature":"9a3dbd7b79e7e689637cc096ff93d9908e0bf103ebd542d30b57b9dd4cc6d396"},{"version":"848b257bdc73b54c167bed01b2db42fd44c1aab77350c9b1fc3a2ce3ff08f899","impliedFormat":99},{"version":"642b071c4d865ff593c1794e06fa1781a465338a37796a7d0e2501daa20172bb","impliedFormat":99},{"version":"ff87d4d02bfc715a3a038c825bb80d6a6cfd1750bec3a0fa6f0e407133b1cd2f","impliedFormat":99},{"version":"0da67df9ad0b921385c37c0eef3de0390b8ef7b0b36cf616fdf3590a67fed1e4","impliedFormat":99},{"version":"8b28fc7010a1cd9c54201b6015c7d6a04fc6a4981acc9eaa5d71d4523325c525","impliedFormat":99},{"version":"e72fd44d087aac63727f05fe82c0c4a984c6295f23fdb9a6290d4d9fda47cfc6","impliedFormat":99},{"version":"fa2cd67056be92f91c496c134c19c4e0a074103d79ffe5dd879c7ad0f3036b75","impliedFormat":99},{"version":"a5e9994461de1736556049ad37857577a0c1238cda95baed68d5997c45f353bb","impliedFormat":99},{"version":"479ae2d0df8346600082dab7eae56c7557bc0436ab0647c31063f3a02d7cc6c7","impliedFormat":99},{"version":"1faf72b15dbf252373a1f4b2867a199800a97cc7079dd3b01087a2f3c11f4a45","impliedFormat":99},{"version":"4af8ba68f5b509c7a7d353e7a91a4014d194779c537acd3afd330980e9cb972e","impliedFormat":99},{"version":"c4a78ea6e862ed9913ecf9b95c8b4a8f77384f2cf583eee7fc4b27c52f4fbaf7","impliedFormat":99},{"version":"ee9c59f4fa245924e3328a2a6620fe107b0c41860367a47a90d07a932e3a084a","impliedFormat":99},{"version":"e2a62c1f16bfc7e305e78143c1eeedb71ad1f272761aa07ff2ad70bb97248b13","impliedFormat":99},{"version":"1c1ba22485be7577e2a73cc103bf6e7a692ae0a025216619a4de42186eb1687f","impliedFormat":99},{"version":"ebbaa82abb5a1a7179dff85377f99c666dfa3a68f8a2ea405bbcf4f5e50149be","impliedFormat":99},{"version":"37673287f8bc80af36be1c23275ed9416bec11ee361b320a57a0b3a2797260ef","impliedFormat":99},{"version":"39e217bc229493f7b355cb2ce07f8600f6266500a6feaad43c254cc0a0f140e6","impliedFormat":99},{"version":"a33d889bdb82f43cdcd8158107c0e25d295d1838d82ee8649390ca0b88e87a07","impliedFormat":99},{"version":"f289d98b575f84044465ab3b7ac81e9a11b4d97cf2a9e92a822e948bc2f0ba7c","impliedFormat":99},{"version":"787a6b0d92df1148c7da1e75d705652030078c19e79985a72e622dc5b54487bc","impliedFormat":99},{"version":"ad09a94413ba6d37b86beaf348b252b378608dec764b67efc9e65d1dc4dff808","impliedFormat":99},{"version":"534611552e459b47ea008079ec9d520fa87c7b229c8a3a08993e8be650a8df71","impliedFormat":99},{"version":"d4ddcacf48fe1a273c71f4b04818eb912fd62bd7c0da092742a7e37a30cbc726","impliedFormat":99},{"version":"83098570d4ae37e31d8c788901c5d094313176a23f26870e78a5e98e5edd7777","impliedFormat":99},{"version":"9a43bf14da8556f0484d20c93074fd98845c06c85587f6b580fedda82685dc04","impliedFormat":99},{"version":"6a36631027099eca036047ab3bf0f262e23239c950ec1c65de700300d223ec44","impliedFormat":99},{"version":"fabd5be6cc2f406cbfcddb145a91a0e341a25e509e1c7521762441a46e58780d","impliedFormat":99},{"version":"80a9eb1f4fd46c863aec7d9c8490702ec6aee2b63ada21bcf231d558f5f0863f","impliedFormat":99},{"version":"72932bf7599a75bdd02788593ec6f060422f0c6e316f19629c568e2473d37db3","impliedFormat":99},{"version":"2d6244e9b7d19e7650ceaf09033ada34ebc2d0590a770707cba8da87bc125d59","impliedFormat":99},{"version":"6e0ce9899346df5cf80e1b45172eb655855837cdcad4539acbfc9305d8fc8976","impliedFormat":99},{"version":"ec56ed06f0a89fa2e3a20d7f7521d017e92decaebfa4d53afa0fd3a7b7a2be3b","impliedFormat":99},{"version":"236b90e223fa7a458b8561e87327d3737c8c83cac9ce4cdfbf04b3098da851fc","impliedFormat":99},{"version":"d64b03d8342c4f4d51706659a835c45197b9940b8938b0656bdc4df15d06f630","impliedFormat":99},{"version":"8ff0f34466d5136ab068a15358b99a958095d1c6e7e11c67d607111f81933fc4","impliedFormat":99},{"version":"98a72afb1b77b1c3f15beaed5662feb608060ccc604fa1747fba9d9deb070f80","impliedFormat":99},{"version":"cd5189682a722b13ec340b2bd112bd48b899bfeecd69d629bfc78166c15b64fe","impliedFormat":99},{"version":"a4017a3045a75c68509bc69bd314d91f7d4e1ec3f255416a86efe7dadfc0ee64","impliedFormat":99},{"version":"19599db9634ba72f2663db5b76de48dfe250280ffb4bb158109c97eb4e5b5e0c","impliedFormat":99},{"version":"f5a0ae8b389c104a6655117a8e4ee1b563c4d7cb33e045e4ce433cd6c458adb4","impliedFormat":99},{"version":"566247adad3c04b6c5b7e496700f3f23d05b07f31d983ab47fae1aa684b048c9","impliedFormat":99},{"version":"d10e1723404ce7559b75ab341c7e85b1ee2c97a871fe41630e47edcfb1bb1621","impliedFormat":99},{"version":"19b360e4fd7cd6683ab5455093e02c7c42dbbbd63ae5bd50f91f55a8709feb98","impliedFormat":99},{"version":"ee5ac98eb5ccf9bee886f916ae88856ac220858f4363362c094add66a0d44780","impliedFormat":99},{"version":"02efcdd69ab7a028c7fc316316748723763f7d40073f5b74f5136f9ded5c3073","impliedFormat":99},{"version":"35c834f84dabbdc3b595dd35c2208876af77af86ec3e0f4b622ff7f901843e80","impliedFormat":99},{"version":"dde618b9a6b780c35bffa2075f11ee29adabeaff3dbb73136ac530fd45035692","impliedFormat":99},{"version":"6902d565ebbc9b4f27b81f50a769ebbb673d299090146fc4d645c59b4433b36e","impliedFormat":99},{"version":"ac0e664aa993f918ba1006ca2bc107bbe326ec96341a61195f9b3054a9571a84","impliedFormat":99},{"version":"b184444a122ee085c61df92f39b23414dbe7adece24558bfd1a0dcb22687119a","impliedFormat":99},{"version":"b8ae8c7a851b19aa288e08fbd70e734f5aef3d1bca3a5844dd31658f1bd18f62","impliedFormat":99},{"version":"85377ed2b6029c8c1e851e1acf848d31fcfcc5a9264e726a00e046ccd68288ce","impliedFormat":99},{"version":"aa096547941633cc25eb4b24af41984906ca9e502d9c06c88e0b4bdc2a54b602","impliedFormat":99},{"version":"2b69aa435fea74564e7388f7530a8ce8dd5c9f9c6a67cf74aef6f99922f05885","impliedFormat":99},{"version":"6853837d5850cfd5322fa38f190d4afb7b1ad9d37b137a7fef26a1f489a48b61","impliedFormat":99},{"version":"60bc42d137352b88caf900df4bacbfee40c73c02b56b853e0a6d23a3edab7815","impliedFormat":99},{"version":"d90817a097f2792dc8ebaf9bc08298f1ab6cb18b4287c8cfc1cea297263df6d8","impliedFormat":99},{"version":"3cbfe6b48a9c4b5b6283f7fbce0c1f5ccf0796ac8b1a077893eeab13fc17ef73","impliedFormat":99},{"version":"01e1e0a0c437c0c64b0e55fd5b3123398c25b058fae214ffce0ff9a345d58777","impliedFormat":99},{"version":"23e97994d2f64dd504174c02b5ed713093f1f8c0ee4c3b587c7f12a641b8bcd2","impliedFormat":99},{"version":"fff0fc0ee248874a1f8d12dd439f1c26a8be008a18b7e36ee65c3e8cd634fe18","impliedFormat":99},{"version":"7e6a11a7c6f9070215e73bbf9620d274ef45979eadc8de39d50ffe6fb67f095f","impliedFormat":99},{"version":"c34715ff893e99af41dcf4f63b3eca2a45088ef0e4a025355204c440772278c8","impliedFormat":99},{"version":"cbc0e98cf745d22c786862ea94c3566321c06e04109f461d8f657a3c1151d057","impliedFormat":99},{"version":"35a5955d275c446b47dcbd8347f41e8ef6e230c563efd38f62ff715f7994b767","impliedFormat":99},{"version":"2bb58f627a12841ae367d97ee15993590a5cee4a826326e2a8be2bd750fca9dc","impliedFormat":99},{"version":"646d361245ec8052afcc7b90acb3c7f6098bf1340b88f32455e63f0369ddf1c5","impliedFormat":99},{"version":"2f6f7ba3522444f3d3e1f6d4a74ac37a096fc3dd292f902773d761a9eee57620","impliedFormat":99},{"version":"921a2668977ae600f6de2a4c19f53b237ed196ae5ae3297043b38781c11d9af4","impliedFormat":99},{"version":"37072b862cae4c819e335ac9eb855cc398719a50ebc60376de9ddae801610a3f","impliedFormat":99},{"version":"6473fc970e5fb3f18fece3e8681e9ad4454adf295be54463ebd74688b8b5051c","impliedFormat":99},{"version":"4e54895c51ee23f08f62fb429dbf4cfc1772ce34f6ec77855a3bb805dd16637e","impliedFormat":99},{"version":"800509db7d0b61907f28dea506dea01b57d2aa3cfffff03c78ccad04e8ceb976","impliedFormat":99},{"version":"887778667559bb4b7c64b006650210ca831f903c055ada3a069a8f08790c5718","impliedFormat":99},{"version":"bd96c9f72e9a439499bf19a4405d205fb8c2da019fdc9fea988c25005e76c200","impliedFormat":99},{"version":"9fe617a1d5e7c5c4290dd355f1bdbe1a80574d765a2c03bbf49181b664f11f0a","impliedFormat":99},{"version":"9afd17a7e1d2b474eb24bb37007d0f89ccbfb362ce904cd962a1eca5a2699efe","impliedFormat":99},{"version":"2841695cc12ded91f69e66e4ef44be524ad02c54bbe257bfe5802e3f6b851b5f","impliedFormat":99},{"version":"1132807f0a56b00d253a76bc21aeb23e79c8ba8478c52ec75ba9fcbd81738b6c","impliedFormat":99},{"version":"effbcf17a843123b20a54ce8389b29a26d12c056872f0dfc76a27460b22f716c","impliedFormat":99},{"version":"0e052acd94182df2373f96e362f064715c7a782452166e2344c91a126fb41d28","impliedFormat":99},{"version":"b7bce6b962d325bdd11ca9f3394b411f37354bffc995e798ddf66a7ee3b9de42","impliedFormat":99},{"version":"96d66cb0b5b2a0b1e2e6172e6bc163b5345f189c699852c61cb866812bc5f3a8","impliedFormat":99},{"version":"31e4839e4dc630cf7bc9f86c1afdf3dc2cdb4b8f6c3e11d12ba38ea18f4c421c","impliedFormat":99},{"version":"5b94968e8400015a4904bc1ba26ebcada2fd366c8fdeeb873904af54ccd4b423","impliedFormat":99},{"version":"1513e36e2863b615eaccce129355da5f5d8e169d4416d25e71e47dea8d2d35c5","impliedFormat":99},{"version":"7a128061e6e84e9375c9b46f84a0cfded49f537e8a41b42db0c72133666ab9e8","impliedFormat":99},{"version":"1140a35eddf2e3b9d706eeaf28ea74e969ecbe52e0d0f6a180d0753d2b8272b6","impliedFormat":99},{"version":"5e9cf2a12f0d82d2bb5989cbe663707bf1f3bdccf7cf0fdb84105712b9788e0d","impliedFormat":99},{"version":"ad1a1db6939b787bd9ae09f997f9b209cf0e689c72414090fb9cb7989163df77","impliedFormat":99},{"version":"95e857dd9e4984d5694b721cfe2d66430805db29660e212c2f681515ea08e8e3","impliedFormat":99},{"version":"2e8932517228de42f8b3db669c4d04d177367283d2da199b1a59cd94d009e65b","impliedFormat":99},{"version":"5fada2edbc2264cc0d7ab6080e8e4d4e3d5dfb9ef494b4eac9c8e49b90f30bdd","impliedFormat":99},{"version":"615d06216e7aaba7e4011cee475b9ef6d1d873886118f178bca21bc38ecc10a8","impliedFormat":99},{"version":"7ddf86abeff5aa521f606f9ea9ba2dfa19df8ee1c76ea838d9081afad9b28f68","impliedFormat":99},{"version":"ebd25c9c141e447ee6ba794c80c6878ebb39c42ad135a0c363d275af9fa6799f","impliedFormat":99},{"version":"4132803c2f4af9b16bd01853bc98cf15ec1ec9d11529665bc6ccff35bb742774","impliedFormat":99},{"version":"efb8e27827124bc3bf96b81288c0278c722d10f2372a1bbbb9de1943e784022b","impliedFormat":99},{"version":"1400f49fbe68fc416c2d47e19f6bc29a99a5480910bd560090a27fb6b68fbb45","impliedFormat":99},{"version":"98312a773a489dd6b924350b9ef0eeb1f9646b7e1b294501b582b67dd735cb3f","impliedFormat":99},{"version":"a9410e9f7d26ad51166dc6e55de1f0efe893750b665a4169cce9a1c46d793d18","impliedFormat":99},{"version":"4218cc9758b6c35b4e98131e96d6be902fddbc194936e0ba71a95767e11072b8","impliedFormat":99},{"version":"6f29d6927bf60c969a6a5ef57231d63b81e6820b6a30c22eef57821b5c429ac0","impliedFormat":99},{"version":"0df226906c522ff1903482f4fbb83c039fbd0dca93bd1b3e56baf10ab58bfa15","impliedFormat":99},{"version":"02f4852cbefa35edd7752e35e228adc060a2c98251be70a9446f64e196029bf0","impliedFormat":99},{"version":"4b70362f8a653d862fb4e5b65aec7943cb237e89c2409c76e6aabbe52952507a","impliedFormat":99},{"version":"8c83218e92cb960a020ce6ccf208c7fdd29fdba50f824ec9f7804b9a47c175d0","impliedFormat":99},{"version":"1da27ab546abd20e493012d7088a55cf1a00c92b61eb06aeb7a25581c6f9ff87","impliedFormat":99},{"version":"be74c0d9577d80d8dd6fc04a8830a2bc3ddbbad2570551305072dfd985534876","impliedFormat":99},{"version":"de3347bf58d986a47125ca7bcda6268d55c78d6006e165f59a03c20be861d95f","impliedFormat":99},{"version":"b1ef1a2530ef3a4308488bd172252a506f35fe16622d3117573865c2b6ad3485","impliedFormat":99},{"version":"840d2806690ca5764b0b3393d63fb4f4eed660f2fd1c60ed5a8aec3a851e775e","impliedFormat":99},{"version":"b222f67a18cb2bf55641e911467ca5f1cc4ce664824a3d4e2ffcc1eb91729be7","impliedFormat":99},{"version":"5a191a0753935e35e8560d6dff2a0bcbeccd0850d11a7429283e3061fa8bc8e9","impliedFormat":99},{"version":"e933510d79c03cb4b5ae2b910b72056332955385cd91774913ab04c9f7fdf00a","impliedFormat":99},{"version":"3a3dee0f5e3155384690cf45b07a217a6b3de5e1edb4e98ec8be5fbf3e500868","impliedFormat":99},{"version":"db2ed9c0a4fd561f950cea441d7833cd5763720e91856f7521d3d5f29fc4b7e7","impliedFormat":99},{"version":"c8a7aaf671a49f7f836c4bc4aa4fed23e5c8da16eccf72ef2b2a52197663e6cc","impliedFormat":99},{"version":"10856b8f8c6dc7fa2da62848f65f977524b073c6fd167578f21edda81832687d","impliedFormat":99},{"version":"067de9fe31618932f08e63ff479248118a39461669a06b6f6d438e7ef364cf29","impliedFormat":99},{"version":"f67169b04c2c933f4368c15bcea7f744f05a134dad020c6d418f7cca2f9926bb","impliedFormat":99},{"version":"078af8b67c2d6de37753072c1759f1215fb9846cd4344cf83a266b10fbbcd790","impliedFormat":99},{"version":"e27b61cd6a2953ce7955274ed4dafde236be2051b1a89d10b5640306b7d3b86f","impliedFormat":99},{"version":"91beef8d07b44eb328aa9d9c3db98bd79bde320adc5d1556d3fa7f463a90c3ce","impliedFormat":99},{"version":"7f7f86c7d1bc4a9f9e4d68fe0702f91667419056e6746494a66a7fd2882c8660","impliedFormat":99},{"version":"b87d0cb8854aa7f797bcc7f46ab0522fd091828dcce0463d4dc58b78e1f6ac10","impliedFormat":99},{"version":"934478c63db3268cc99351178a969840b2b93a2d21a4d165813cebe5eb6dc419","impliedFormat":99},{"version":"e1ac2ee125d07e130dafcc5727922a802f33bd894b3bdec61a58653cb25a105f","impliedFormat":99},{"version":"80d81e5352828e06dd7d79a0ad35f07087aa0c4f2aa80f8df7e67855ab544997","impliedFormat":99},{"version":"d78aa09669af770ed71d8a0d5b1e2ef23abb7a17dca11e1bc02adc9cf9816fd1","impliedFormat":99},{"version":"acc4b06dfbe56e355495b3571be65265b7bcba54ae6addebfc4c34823a3e8201","impliedFormat":99},{"version":"80d964c6d3fd00733c20f85ee9fa70c52e3459f1960adb17e5bf812cf9604ad6","impliedFormat":99},{"version":"1df19943bbd19525aa3e18c3f98f49ecdd788e07b5705d99c8579073771dcc06","impliedFormat":99},{"version":"8c2a083fb5fb302c0954709938e53e7810da0aa2daf489757af9dc6baa2f3b7a","impliedFormat":99},{"version":"fcc4a7940475065b3291a15623bc4e8db0c22f23dc29be00ec377892a805eba3","impliedFormat":99},{"version":"16f35e4256a94b314c98eb75040cb33ad9c430075bc29c53b43ede6405705700","impliedFormat":99},{"version":"a257b94f9f5403f63026dee4f4a95b9015742f8e23ff6eed7837f97f2ae501d9","impliedFormat":99},{"version":"254175b582a422c45bd9701e93d6ef9f6cf242c6247793a9a2e05770e1add917","impliedFormat":99},{"version":"c4dcab273dad7aaf0d3b4e0ca48e948aeb3cc269ac359301181fdfbb2efde033","impliedFormat":99},{"version":"d21671ff0f21081ecb19567351dadc8be7ad9443e26183d971ac658684479777","impliedFormat":99},{"version":"617be44c8811d411b4efc7dd13e57851bb1ab71f7e9d1a9eca04b7d0db0e1b35","impliedFormat":99},{"version":"948af5f3081a8e683756251a3834ed5a4ae6e4faf16b66abcc44b8a13e72d08f","impliedFormat":99},{"version":"af437043c5e9a8105f0e9633fea7ae79d1f7f89357897e2df99c6f3697c744fb","impliedFormat":99},{"version":"d0bede428ef73b5da47f0f1bdc440480a863a1baff3e6a6b28db98535efcaa6d","impliedFormat":99},{"version":"44015602830f6f90e043f14702f04e7f48ec4f2ce8a9925116fceaea73a43b8b","impliedFormat":99},{"version":"edadfd0ecbfc573c016b93064b18ec0ab64b17ebd252e5636c2ee55f0f6cd82e","impliedFormat":99},{"version":"45ccec80a9c659104e28cbf3dbff13ab92c57c4e1fad9b38671a0c9299afd4f6","impliedFormat":99},{"version":"1b59bf4043df6f2b48ac1685a0a6c3953ccdb49b1c7affd3364624f77ff58f0b","impliedFormat":99},{"version":"ca4a3925cfe8fc5bac902ea30a5fd441987ee1776ddf5a353715dd1c6579722a","impliedFormat":99},{"version":"658f055f615e8232a1f5b30753a0a1ce369a70c1dcf0685953f48d7d4d508ba0","impliedFormat":99},{"version":"341aee100ffa277e0737387b9b9db69280e6dfd056166e18656de5bced0e7f01","impliedFormat":99},{"version":"2cac36c32274e1e7faf7fb3bd1666e69763b07b9f5330eee6911352d3e6eee96","impliedFormat":99},{"version":"aef33b3c102b63e7e89208ec4982f8eac7168774b08b05e8c43e967729ea91e5","impliedFormat":99},{"version":"5788b512a6212523eb032c6898beb98d56dd14c84e186a786901c1b3cae527cf","impliedFormat":99},{"version":"e2f146177df266680126ba19e4336ffc6639094feb27b37d276577f8c3d2c186","impliedFormat":99},{"version":"e616fc8dc6c82cb4d47ffd510e180c7ea96a0ade6702f011d56d36707cbe27b7","signature":"ffb3e6a6be2aed1862c98e13255a030ed6205c7c04676bb752f526703468f17b"},{"version":"0eefc702c5de5c32835e290cbdcb5a76f6d98c956b87cdbf5da49c864d3ab88e","signature":"0a4895bce639e10d5ef215a48b4bbc4d73e444e9a3e214594ebae5e00a7140f8"},{"version":"a0284e8a2c6b85083d6562d6ae9e2eca4b33881f80e1b08f3ab30a89239c0199","signature":"38cb1f6cb353bfab37ca99d47354b0681cad313f2b028c544191b7e8504e660a"},{"version":"88c305e239ed902480aca0f90537b2aab81b6a793eea9f05147c1f3269e3530b","signature":"81d4e18931396e11ea3a9238df2d578533292a7fbd3a21bea05fa1b5cf8b78f0"},{"version":"54f0fdce25f65dd46fea54a14ff0bfda9d1accb8cf13b208709ee7b527124abd","signature":"2277a245765dbac41e82b51724ea73eb058b58e261f7c67bad3a47924f48781b"},{"version":"f05d3e578bce30cf813093d2f435bc47cd78159af50856e246c3fc1e34217ddc","signature":"6a21def23546b355617fc1e8263e91876298869c3104ac88cfd57db3d18cbc47"},{"version":"37b49ad60620db9db26ff31a64f5a70a1cbe9c4598ff5c236433043f9bc63f04","signature":"6a96f44bcdb3e22101416e1bbdf5bcc70ec23d5215186089857e82b1d72283b4"},{"version":"01fe01d2ac935a652f21248717a8cb81a3bfe41d0b6a59a9baecddd3fab1a51f","signature":"19d9b4af93b957117c451092ac6d225de9de8856f14982cfaaf2a23e7d08d8bc"},{"version":"6c8295521f00edbcd2d3b76685fabb60fab0dcbc5832abdebf1b77155cc47d75","signature":"726f054d27a53c3efbd91d9107e7de9ad7a3656f2c5a0fa8ea1f231b0b4639ef"},{"version":"61daed0b006defd8b1fd12fac1ae821a833289b6216594ca4dd667bd742b0ea9","signature":"2bfa1139c2eb88b5f23181bc6324ccd747acb70bf1d6370f8429813be3689de9"},{"version":"acf8f72e32114e5c11e8b32e6dbe6a09363b61b4e52f4cf2ae705aa79bd42705","signature":"e5a6286dad5913ab2714b6804286b074c9cde94943c4ea01e4db94b920aa2880"},{"version":"36c6258b107d9055c93586eb102bfb5f02effb624be8659b1abc9c0797682d9a","signature":"9682e64b678e67de60c6fd159655d1647d69f3eb639e21ac4ea5bb332cca178c"},{"version":"0c996be745af11ccf07b28eb3e007aa4277d01b16f53259cb355daafab167abf","impliedFormat":99},{"version":"27c1b57e01b13f914e9d3507202036d676222057d6fa1032332e2954296b9d45","impliedFormat":99},{"version":"7348c35ce10f8323a515ea6a6c237c0dc7c3fd5e491c4dacec2a7b93f0dfcd26","impliedFormat":1},{"version":"258e67b2638408b67fbf5fe6c953b8f2dd2a69f9171d31c9a976cd2329716e4c","impliedFormat":1},{"version":"a3d80d033a651259b2bbac8d0a03bc2e583c00e310a3829608ae781e4e689ca0","signature":"6b6cecb2fafe1e5163bffa9be0229c1f6821f6cec28022f8e6e50d163277a14b"},{"version":"8662560538394251a3975285b8609b5505d442a92ce710f866c2f48e17d186b4","signature":"084955dd9a619e88baedc4583e0bf2f5982c7889ea6b6c0e34ffd08d76aaecc8"},{"version":"1cdb7130ae272ba5c573f2f96d00344602bdbc6acefd5a198658e40ad793f5ff","signature":"dcdbb04792a2ec09fb7960f12e877b8696c489ffe664fc190ee113623370cab8"},{"version":"fe93c474ab38ac02e30e3af073412b4f92b740152cf3a751fdaee8cbea982341","impliedFormat":1},{"version":"476e83e2c9e398265eed2c38773ae9081932b08ea5597b579a7d2e0c690ead56","impliedFormat":1},{"version":"1e00b8bf9e3766c958218cd6144ffe08418286f89ff44ba5a2cc830c03dd22c7","impliedFormat":1},{"version":"ae00023c4fb6d8310666f6f047f455331ded1cd758182decd54d7f3f2bdc7e73","impliedFormat":1},{"version":"1e380bb9f7438543101f54ecd1b5c0b8216eea8d5650e98ec95e4c9aa116cdd5","impliedFormat":1},{"version":"d0b73f1df56fbd242fd78d55b29e1de340548048f19ac104fe2b201dc49529ff","impliedFormat":1},{"version":"287fa50a234cad0b96ebba3713fe57a7115f7b657dc44638fbce57c45ac71397","impliedFormat":1},{"version":"c42852405dff422a8b20dd3a9ada0130237ee9398a783151aa0f73474c246aeb","impliedFormat":1},{"version":"d3260c8d6fb8ab6b92c412c3c0b793dc524dbcc6737300cd4cf22198122479a4","impliedFormat":1},{"version":"f7ebfaa84846f84bd01665f4dd3773ff2b1c38c7992fd1042cd9132bf0afc82d","impliedFormat":1},{"version":"b03829b7141ddbc20c9da5de4f8021ef99b57b169e753d28ba5582d02bc9d5da","impliedFormat":1},{"version":"d1c49ba10ba80d18dc288f021c86c496d5581112ef6e107e9e9c20f746ee7b0a","impliedFormat":1},{"version":"f3c5ea78b54672f9440be1a2ae3f6aeb0184f6a4f641c3cca51949e9cd00a258","impliedFormat":1},{"version":"9ad68f979b78ae71d8cd991b87b5317b5959867dfe5970de811ec40a09d6e1f4","impliedFormat":1},{"version":"d91e9e625a2903192e9a63361b89330f0d95c340d9bb4602b89f485e9f93cdd6","impliedFormat":1},{"version":"176a47d228081ad51c1d62769b77b064abbeb6827115033cce1cdeb340a8d46c","impliedFormat":1},{"version":"b5eaf1cc561810ebfb369039a6e77a4d0f74bf3162d65421a52fc5b9b5158c2c","impliedFormat":1},{"version":"7d12ec184af986cc2a0fdc97f6c7f5a547ecdd8434856a323ea7ff064e15f858","impliedFormat":1},{"version":"8535298578313ba0f71a41619e193767baec9ccf6d8fad90bc144bcba444307a","impliedFormat":1},{"version":"50bfcce750d2a77d46e96e1d6c80f2a6309eb86f6ffee53ed07864b68af3d824","impliedFormat":1},{"version":"79b41324d28fb94f7304a0151990ad712346ceb1907fe1ce5e892145eae8f8eb","impliedFormat":1},{"version":"3239a3f8c29d2b0db0a4200b7e6513e95d16a183d4d823e54cb5c98f4c53e183","impliedFormat":1},{"version":"51635999c1075a999682e7be48025bf6b1bd1dc4029bc743388bba701743593f","signature":"9d07febeda5c46d0f000d47e92d98af2c877ee4b3006ad98b8d476103bb6b09f"},{"version":"d46d431e4b957d3e96ca1436c82de881945a23a860eb3db7558e0410122ed6b2","signature":"a880f8e696dd7ed55dfb6b7c53611e4df4966662443273960622fcb27c02362f"},{"version":"ac4ff2c9d32e72ea96722c22281dd70ac0cdf1d7c6d392ba185a6c08e7828f89","signature":"11c921ebf96cbc85af834f1f70d05819c10ee5142223afb5bda4342c1056cb18"},{"version":"329ab8d42829159ad84178d4b6c66117192628e28be80d7da010202ea66e0874","signature":"07627fe71cb70f4617e8471c7919fda7e13b5187daa70c21c73b60ca0f55d9b6"},{"version":"70c3d0a39edb8a8d4f9851eaea525e70554af80a2655c9fb5ba1f72427032256","signature":"dcf05a557d3591a75d84be523c2710d0511f38ea6f31c659153f3908c8aeaf29"},{"version":"42bb666c2ff708243bde790212d396f883aaf5951c421fc8ccc8ba04c2a7284f","signature":"217a48e44b57072db0592f7f4151676d95f921ccd0b19b43b29c90c4b1aa1dad"},{"version":"36dc0ccdbc5fc8eab63fe861f5bf6210aef36ac046642506a8e43cb634674ab0","signature":"01a977ade994fe0de990222140f158a0dc3b03529994c449aa39333d0facac02"},{"version":"c286e5ba6782f449d7a9c20cc2cb6d29e69587a8386527c534a9ebd19ae2019f","signature":"cf5546de6b03068d7572be4acc7f1f70d682f01d4eaee9325ffe10a65abe0130"},{"version":"bce6229814334e647431e56a4175ee0ff509e77d87bbaa6097024c529b5f4350","signature":"361d3a5db03860c39b0ba2d914be0cc2a11c318cfad8e67a87793e61c6210b07"},{"version":"dc8fa1d9a1edb51a11d08b1349a0f787c215943b5e25293661d8c64d6b3540f1","signature":"c4c159fad47a87f6ff6247f863e504690b499e328848a407accb817dab9cf85f"},{"version":"af963b857f8fe42955adca2df05a1d5ec1a45d0050aa3c1a191060b4de9f3c3d","signature":"8ffde254a6b640c6592c406eb185000a2014def50737d120d117605be880a849"},{"version":"713384f186240f37c9db30ca9f1bd0e57c51b37242f16ca3343cdd57b32cb69d","signature":"c2d05c6e88e3062dd5c4ac0d009b7133c1834733fcbe938304d6beadef346a42"},{"version":"557b12fea4bb7a097ab366fefb8ea8702b1d381abcb352cb0ff8b7232712a632","signature":"b08fbf391494dfd2b1b3681eb264ea04ae1192cd19bf67202c9e6e8bd6848c50"},{"version":"8236726367c5526c6c1d709c74601628dddd92c51f52670ca4188e8ce24a5c50","signature":"d0d5449dc78a144ece9568f28ead7df6fbc5d158a4a5c262541a65f7270d8a21"},{"version":"41fa7531d1b20d532a5dbe793d5ff179fe49d0d91a0cc20d03b574d801801dbb","signature":"5d632aa6f70e68f13a0cc9e7fe0f9d2a1aeda0beece411ca6645bf3e99500d51"},{"version":"1992423297183e880e13196f5a1a6866d4998ac451a7c74513ce025a6baf1690","signature":"50c09e0fd940256acc6d2500ad014c7692f96519a75e78e78bebd0ba39c2ad21"},{"version":"3ba975fa7b7056dd766d715e435a0301e15cd378a18c4d189e3f8e0b7d5f6577","signature":"68dfc22d24a462e2344abc4d521b2b7191d8e1a719f72b5d92fe3eee76d18d20"},{"version":"72e90431cf3834df5324421ecb1a951eef09e6c64db71ee4d7b3d4000a2c39e2","signature":"39f6d146b3d7a5a5d7e4b9c821bb5083a559734c5d0e0685bd42cad6c3756120"},{"version":"155ead741865de4ee76471ebf29d8cc446be7ce4bdcb95f25fc071f6c48d5548","signature":"34b741d193f967d16d6de7225768c9b96837278e25768ae94ec8cc753c6239b5"},{"version":"a797e1a0a60363dc8852ea6fa41b35e284e586a1bab749e23646cc1763c6556d","signature":"8d28daa13e5c3c40f4a1a4fa9929acf8d90a6f4eeb55f274f0f7fd56c2c8f60c"},{"version":"38c5f7e52af47eca20fa0e717ff90ba9b6816da33a4b25007b7d644fcd3e322a","signature":"e94a0dc2d3aaf38d79575ef2ff61e8028dc30f2f50658190db79fadff5d2c62d"},"ba847ef5fad418657e80d8c7fbe52f2686d8031c892fef012afff58995b4c491","a2954ae53d3d7aace7464c9cad202f6886d7a8b845ed61bcf81e634e7b818235",{"version":"fcc0a50c5e3f90f359a8f92dedda852ecd49e601dbd142500a4e3776d7eab802","signature":"907aa9578e2661838e9d9f288d5e9871d6f462d3703d51adc4688a88dfa41bdc"},{"version":"5bf3b666afef7cdc507aa3a2a52ddd145ec12d6cc5e85f85790a9f6060b9b985","signature":"620ad41781c5847e7ec69fe9c05b3905ead928ccfc8b976ebff2317a91c46b93"},{"version":"1011d862f18a04edcd1e070831c635391d93d4b43a20b70a867dd232baa69654","signature":"b9e72785cf996c11e31be2b6bb741097518b35459e67dfa4140bfef652e937c9"},{"version":"1015e73d3d15f8872f950baed8b6071b649231b304f58983cffad02c10eca244","signature":"75c3bec8d605e8c23df450f9cb9d3adba5ef84ddaca0ef026b6bee6bf187d274"},{"version":"a49205f8727865be6b169e931276e9320e15f14491a2ec7dbe6c2459ad101245","signature":"0a8ff7723198f7e297d1828b8610fbd0dc68f9562a76bbb82f9103b5c9d0fb4d"},{"version":"97f1a1d49d690c11ade03e94de3f890fbcf15005b118b6260d9e9ff00b1033be","signature":"10707b8b90dccb1f296257a17d0ba61e1f4fd12ab253a5017b3c9e18c979fff3"},{"version":"88a0d62d6206501dc8431dc863184148e1bbe61acc5c40793922ef2ce9393ebc","signature":"9ca1cfb31a6eefeef7d2767d68636c09b4af54253be834aa967a4c9930aae473"},"609fb9b2668bd347b3bd5d8f791a2b948f10bc2622dcbe04c91540d50725b51c",{"version":"02e6a92168e028ca9dfa6da732995018486fce21b27d59bcc51bd94a130a5852","signature":"4731a05cdbc90902ec899db277e37e5f2884a1de5e095446e1845c875340d72f"},{"version":"0f28d903d9961f77bfbd514935988df10a5a22e3aab8ed799251613d0e7821f7","signature":"2df9a7124c5951282528b142dd8140de662642620731b5869a7ff466773198ac"},{"version":"5e27110ae79ea157247bd15b5a682842d99e60f00ba3897522415835a5edaf1f","signature":"55f7e060e53e001f4de2cddf8c5a64b05b748cb37d035230460d57236de16399"},{"version":"b2f4e7d8d25e311db0c3b514dae127f0be769f0ef442f836619d96849483048c","signature":"2929aaa51d5e996f437d356fa63a9296dab88dc05399dccd50d92933f9795af6"},{"version":"984a76adcf001fe919b15167b840e8c49cde3f107d4434df1bb7d080c2d6ba05","signature":"a8e5e38e1a942a0339d643daf52316b72fbb1e9066f47559bab5ea3a8c5a8ab0"},{"version":"16afca61aef0a7098bf02df129f42acd42497915abf50ca20fa4529ba08035c0","signature":"f4351130a24f2f42413ca77537f35d31969f14b2975d2519a3b1e86ee1be2f7b"},{"version":"eb1d16ea3abc5f8dff9143577bd50f41d943171c9f37cca7756c3f947d405248","signature":"72fe197007d100723523beb4def1f7e6d19ad60ffa3c73f9100be9088a65ddb8"},{"version":"18ebb2229647a29c2d8252263eeaa4149cf4c8d69c28d69693415227fc6cbfae","signature":"943aaf838f611dab905818c4606637f9df5439c87c6774a1cadfdcecfc465c72"},{"version":"8a6a3fa00026fd4feec9da4bdd655ce5ab60816d09df1857ded0760a09aae603","signature":"ec67da3d1af27d7f67e7a4ed6c2926c7205e7ee23401a9e6d09f95d62122d5e3"},{"version":"11d66178c47199738cbeb5945865e0bb4d2506c1a3ab06a553951fb14d5705f0","signature":"2c4e4a33361906d6b8590c1f05cf4fa314e6ab1435bf4a0bf75c1aff57fc4110"},{"version":"8473e4af6a1ccfc7c658eb6cbc344fe101a1a46e5423a343623853c682d646f0","signature":"feb3c99dc72d797dcf39fe41834050a6f6194e72bd4ae653f5c44b497efeaaae"},{"version":"094e476b1981b2d857811b663f5b7a08d964e943d5aa38ac01c92bb72b523a32","signature":"5944a73ca520c4e81bddf2f283240e0c6a12324fbbc0c298ecffc08189d49d7c"},"97566b2a9e6ddbaa658ecea625da8624386d7be4023e5f3bad624d83b492c61a",{"version":"547a5260e8817dfde91badbffce9d81fb13c1754695d5c642b343995e009da77","signature":"781d69b754fc71a3a730d9d74d32d3f49d71a38c5a827199e4b4106929cfcb61"},"25efe22283348f9b3344a7751f94a8aecc8bb9e3e8afe35415cf5fd16bff956b",{"version":"0f40f25989199883118ad7c0533d2a8c42686a348a96e75d3ef6952ac4e79666","signature":"6826295f44aaa0ee4fb7d497c0400d4318a2770b06a96a52a5c7f55f08b4788d"},{"version":"bda9a940cafaf73cab942a13c874fa754e09172e51262114523d567491a39f13","signature":"2b6cc1a42215f75f277baaa50b8d0fb562409d983f1b55ea7dfea308f5f40e41"},{"version":"3a79f5de999e061fad6833b7a11929907f44940b36b2102f8a4d01c1a3d28e1c","signature":"6319e10a0b439743508cddd066722c11f71bfb6b3816566f79448065e5133247"},{"version":"a2769e4007f919fc4e3afd9c8fde15f960906cfb28b07b28514e0e2d7a570072","signature":"46df3b90500aa646e8ef62e459f6bb881545c69786b13b9d821db667dbc0dc79"},{"version":"d138f53600b722e4dd81e27ddade33dea879bbfe0d6b846870f83b77ad52710c","signature":"006e607a1db22268ae7793fe0b2f8ffa31589e5fa306aeedf14ff9e85d5eb8e0"},{"version":"8b2d1dbac39af2d787ec6dcefd52f7f0430b35b26876f3e2c5659d82a803f0fd","signature":"db50e984878a0109d5547f9c1756095e7088968a17b2906e51c042e5fcfc78c5"},{"version":"0163bf08ecb350a94213025ee0849f017df5a6b509ebe35b6ec3c6fd8f255fb7","signature":"fab32c8c3d3bc803a26acb296e12c47948f8249f09cf38e0fe6f3859ba362a5d"},{"version":"794fb0f8b5962616291b6acf76e85b40d25e9f3c82eb36eed6d8ce12357e360b","signature":"8ad6f8d83135def4e923ca0ab054ef4f55fb00fa7fd1a2f4fea752b17800d0bc"},{"version":"b7d635744ef50ba3db77afe8fc83247f31259f2f6e378b7d6a02c38a447ab335","signature":"3a5b0869f407f8b570ad9e74ee6a6a54e45378a7e09798f2dd50c9b67219b819"},{"version":"85d0db377f3d1de6402540415a4776eea70ae5b426e2f9ddc9546cc17ad98c86","signature":"e146540eccae50527bc9657d0b95cccdde222d9be2f4a321b55774a5cebaed68"},{"version":"4d4acf3cf1bab59440589f329514a73378b4592baa00f23ab2c14db2f7099d49","signature":"5649a6b58425403e6a91b5d3c792fa759c912adf033ee2dd979fe579ab83d002"},{"version":"75460e3964c5e2518af349f614c3fdddbd1a0e1be6a585cf0e415366cffaddce","signature":"960b113200860addfb6f9d69e34328a23fa5f393130b036e6cafabe9e1d09fb2"},{"version":"10c82e8170a3750c8bff477bda3f0d38cc6d1d1fb07f2c2773ee2540c2cf9f50","signature":"ec2644121212afbf9cb045ef19a1d2697644c4967616b3374d1ae7888e22c9e9"},{"version":"27907602caae8900cdb86de6149569dfe535926cfaf9aabc0327dde30f4e80f7","signature":"14092cccc419f225119fd920f565d2ba6b033fd006e3bd596b725053d5eb5b95"},{"version":"b54da229beb4aac5accc542f05c38a266125abe98f06a597b33fc494f54f0f11","signature":"abeb2c9cc4a1bb27c220535346424b1f8f3974cca6480df44cd9ea318de951fd"},"ea507b14eea210847fb7619ba5ff269c0c95e3756ed6bf0860c55da9fc61e052",{"version":"70811d46037dd34c56560c1db7a64d75a9f47ac51d0ccc96ca9d74a3a5b1f226","signature":"7c181c8b6f319745f24094aa11f69cf3b0bfe22f80267df6ed4a8b5ed04c1a43"},{"version":"fcecf7be6ce71b86a79d15e64fa1215c6c7d28ee01a4dd4c792a7dbed7445c0f","signature":"934f32a7071a572c867a2f946405c62aa8448f12fa452a45d1f0a4e9c27305e2"},{"version":"1f8d74393ba62e40cdec8e3c7e90c260e2b872f22d132778fe48b699a20b2aab","signature":"985381138d7658ad2e05c482a722821180f6d366858ec19c03b5d42c901da917"},{"version":"b854e5ffb57531ef3726e25f01a9a8568db8f641c02bd4286b8366eec078fb64","signature":"8418309205cd7a30d2e8ea73ae671a37f919048475ab9d708cdcb554a4813a31"},{"version":"dfefea8038cc47dd5a61375da9c82524ba005cdc8f5a7cfc5569d5c32f8a7e14","signature":"fc4a1909516c00b0a88e516f5564dba70d7c13db1fc6a650c424b4b81e67eac7"},{"version":"d30e67059f5c545c5f8f0cc328a36d2e03b8c4a091b4301bc1d6afb2b1491a3a","impliedFormat":1},{"version":"a356d9a0ba90d10ec6c0fa33386c0b0e2843fd6f0a49513c44f7809926ac25ff","impliedFormat":1},{"version":"f77db1be13db8dcf8c7a268c1f235c1ba1e4707e829175cdc237421b3c346f9d","impliedFormat":99},{"version":"05cb95655ecadfd1230547b84367d1c4d40a4bb6309545b8dc4d1638a3de1a50","impliedFormat":99},{"version":"e980a9cf8404a649ff3a2f0628d76e4469613c02b98bd3b922756d7d962476c9","impliedFormat":99},{"version":"f8adbcb59256526bc69d94fb5c826e812ebd1321b30ab35baa9997d74d45dd73","impliedFormat":99},{"version":"050a4570de5ad6e47cc9ac9fd9db7a26e57dbe1daadadbc19b20567941f8bf1a","impliedFormat":99},{"version":"5ed040255a4d5181f8ecb4ba90b8b38e0a6f1becf0ed860ca75b6e52c46db0bc","impliedFormat":99},{"version":"e22a49cd604cab3b62b1968a363d7b182edcb23d46793ed12cf5cfc6b1597f39","impliedFormat":99},{"version":"ff1b4730f5d49d37b73ee2db3443145daa0bfc7ff9c865134d871b08955e389b","impliedFormat":99},{"version":"8e64b72fa289b7f133b8cdb7d837f73e30ca7eb76ad88e1020d97c405c94fd7e","impliedFormat":99},{"version":"1f907507e41cc3df66b4521b80134bb8f7afada8d31c10f7100c93c90ab0f84e","impliedFormat":99},{"version":"6bb14070b70b4c9a897a4f5088af984e6e316b420d00d82fb962bad577896723","impliedFormat":99},{"version":"46e17953f7ffbf43d4328fcb5983e0ade2932fb56e84181e6929fcdcfa7c7aa6","impliedFormat":99},{"version":"113aef5576cd65f310927b17ae5f6ac8745c542a660bace5f019034d536fbd04","impliedFormat":99},{"version":"ddf0fdbb010c94978c1151441171f0aac236a23b6786e9f6332f745527d905e9","impliedFormat":99},{"version":"a2c1678ec68c42795e2ac068a7d026b61680357d2a881c9df211dd0f83d077fd","impliedFormat":99},{"version":"2fe207d2e8662abb709772fff1f3ec3116a4787b5caa4e862daa5dab2753edd7","impliedFormat":99},{"version":"a7af5f01007f450dc8cf2cdbbb11f4d4bf8bf3faa869d21267db5de74ebf665a","impliedFormat":99},{"version":"709cb4986cbe2b58ac3bbbad45dbfa24cda1b62c794c73b96e9ff1236dd0d5d1","impliedFormat":99},{"version":"afdc9b1fd1937d9b649bca2b377d1144cc9c48158403c17cfd21b6e1e8b25099","impliedFormat":99},{"version":"1d47324801b498d62f31ea179f58e1f3eaa1e607914504a7c92fb5465affb851","impliedFormat":99},{"version":"95fdf978302838125ac79d9d5e9485d8fa1ddd909664bf5cc3b45ec31f794fda","impliedFormat":99},{"version":"d92bf7d6d30c85e53b961236ceeb099e73a1a874849d038a348b51383087872f","impliedFormat":99},{"version":"e56e4a57ca5aa762d67fd3d16471c47592469944315fa5e92b3b09c83eabae91","impliedFormat":99},{"version":"f3d31927b7a3d0f2f119a05a102af2bdd1fc4f759fe43d508a64a80b3b341f6b","impliedFormat":99},{"version":"678700fba88589e28648a923e4b98ab60f3f7df4742412419e29f95966da4475","impliedFormat":99},{"version":"5a71b307074ef3d2794c4104248b7a3cad5f486df204da65862a7d24f698fc95","impliedFormat":99},{"version":"9a4496ad6d48bc801a122c11e94ee1e3f0710bda38b125573f67f5cb0add1733","impliedFormat":99},{"version":"afa5e16f2ad07d847701e3bde9e7ab36f87e0e3a5c0cb7998644791a1fa3c5b1","impliedFormat":99},{"version":"98cd9124b5d8438db4b4dbd247b2c68ac22b6366a43e6dc4945ae32972f157fc","impliedFormat":99},{"version":"dc21879e45f3a023b5fe459c3da5f2f3cf995f21a1ac533049d8950ce394c045","impliedFormat":99},{"version":"622d6ce66ac838d5d7e968daf4ae760cf49797e3fbfaa2b21d01e0fb5d625bc9","impliedFormat":99},{"version":"ecfa30418b2200ba6496b5f59b4c09a95cce9ea37c1daaf5a5db9bb306ee038f","impliedFormat":99},{"version":"3b56e30b1cbe1bfa7710e88e5e0b8fa6eddc7c2e67615f73bdf8637af68403e6","impliedFormat":99},{"version":"92a8de4f8f6595bf1eb24a19aebff7371c66ae8751f2e045edd9e25ca435e4a2","impliedFormat":99},{"version":"01810afb0ed31afdea0846cee91e85a474727d0966e5bb57c2a4a732854deab1","impliedFormat":99},{"version":"c874e98cd875727ea62fdcd978ac9e067ce07cf7493aa4b8b193fdc3b7318eea","impliedFormat":99},{"version":"455e843c1f8e0df452f101c9ec0b63ab8e749f296c947249f8bbc29bff58c83c","impliedFormat":99},{"version":"eadc4c556b494cc52676e084eadf0b60fb2cc6e2408d1411eeae5cb74068ca86","impliedFormat":99},{"version":"3b8689266e8fb628ca2068ff610ed0b842ff4e407c3a914358ef1895dabfcfcd","impliedFormat":99},{"version":"fc741907f6d8158b2c4722932d745b11dd41f9355a5b325c8cd3cdfbd966d76d","impliedFormat":99},{"version":"287ed9a1255a657e9ddfec8e5e2a09a6203729756394d9fbddc01ae8baa669be","signature":"b7bdd0dd41019192624068d8ced8bee71c172ee5400be340fbc1981faaf9be11"},{"version":"ead462349070b9e408ec678066fb746f9bbf2394f9537cb0dda039bb585a3970","signature":"0a6e8b8d8fb5c44978ebe6ee3b126173413eceaa26685cf6a655d4a3e045b1f4"},{"version":"eaad45da90a2b0687f976ef3bc12b30b5fe129b1a0ba2ab725b7d1d108a440f4","signature":"02fddb3f9d305bfae364e1618d29f2b10ea82e7a3577f1a4f43bd8bd6a35fe26"},{"version":"df1f9cf91ce9994250736555d80cfc7a3eac9f7ff022a8462758d3d9e9372d2c","signature":"a74609c36a11ec7ee49d39f1180a3712c1d3b00c1de5f0dae5c494e6b396ee15"},{"version":"747a9ba6b43ba000c191aee36e2ac050560d9cc1e7429ca5a0104bf7dd6c0539","signature":"20e95c1a7cb1d725f42bfa7bbc6373bf01a51ba2a97abff843876425de6e81ff"},"bde8eac852e3159a5116a6c0550e91ccb26b3ca027a83ff88794d3191960294d",{"version":"7ded823c7fbc309e9f1d1941e6dd76eae5d34c56b0eaffefbd58502862bf0215","signature":"cd6a6324c0e55ea1a7e5d692201bce065c65a0a78b53b88c4819d4628ee6e7f9"},{"version":"4d9df03984d802f699d9544a0314a62661b0b9f2614c1219b0ed9b480ff2cd30","signature":"201d46aad36c4c3143ffbfdc1eee8ba45531a14e03034796f83d1bad178b1e58"},{"version":"db8a7d171d08d92cb867f4a98f86e55b1c892e332f4167ad3b7e4a048de3710b","signature":"ede9816729361897e2dd6720a4fd65e95a9b38f68b4b37e0b8d4e62aa1d179e6"},{"version":"d57fa1874e902fcd4b2425132c9d354133baf44b2d5a245db4f1409bc7c1a221","signature":"29ccdcae487d54fc1aab33bda0c11a2fe817fcb84e14abe6cba8286423ae9187"},{"version":"9af43ee55a033d8d8f19b8b017599567bcb21407246a3b3c2aa4f2c7d7ae2564","signature":"ad2dba18b42a48557e4da3ae490254ed306d6777266607c694f0569e6b901a88"},{"version":"a4adb0091bd268013b87605a98079a20319fefdf2845db63d0565455ff1535ae","signature":"3383d7720a22c25cdd627089c4486b5f55d6de17c8ad98d5e44e2922a205384a"},{"version":"d67107c86386306ae50d3d22f46f785cedab6ef14951ed0df08c9fd3eaabc175","signature":"abb42d09423a617eeb8a0e378b2747bf358d313e12d1d02ade80562685141399"},{"version":"a313c591a500fb12196c5a78cbca6b8e2976480bad011622d0e654dc7a16a602","signature":"1f8739671eb4d4b7da809092317a5de94be2663bab6c00888cf5103d22fb6c48"},{"version":"a759579c15c6337995eec7beb36f2a716ee1a3a2554e70c27a2d0bc2bf230de7","signature":"eb2674849a6293cfd4d7b19d9d1d980e69af305319bf986e14e9fe84b9f3d0f5"},{"version":"98875dac45f10f45a4cfc4c5e32908cd4f926caeb9f77ab59a81cbca9ec1d39b","signature":"c50e79b6130f0690f2d77b3c1bdf1f71cefd48d43906ed06f1d3c409bf243abf"},{"version":"fd05f6bd5facbade263abeae680f3f0209a8e8d567ec72375aea55560c8f8d9b","signature":"a5d604c9bfd5b2f06cebaf49a136fccddae3eb781e6874ca407d2d10a367fcae"},{"version":"ae19f9f22c699e7c8da49497fbe230a299241eb159749418ec14c4ee7bbf1542","signature":"59ec1933725eb5cd08f95f737b735d2e679a0258e034ccdb02081e98441c5d1f"},{"version":"2fc3113977ccfb6f8bf500b74deee3584421ce7afedf62a3e01126129987b738","signature":"8c0f14735dd0136a27bd3689f2419cd48a63a7986553a14aced5f277452f307e"},{"version":"0169332434254e739abaceaab5c7cabe35865c0cfa55424110f0df47c8a7a88b","signature":"36865f631fc6b253909172dfb3c412d782efb3cc11b1458f2da07780e7a480ad"},{"version":"3edb08451f7670ef917e0cd32eca7dba0d835a7b54b213d7fc06d8111b2a9abe","signature":"05158b7ca2c65c257cb7e88eb53394304b9cdd894ed5db78686e86d9d8641b38"},{"version":"294e3d5f03fbe9d6ae7d5cdc0f67af38dd8bad1268c6541a067ba6cf2200bc12","signature":"892526caba9bbcf54452f10a4a32952098a07ed7319308d619fecd3b34cc150a"},{"version":"feeb866333d12b1d81af09cab382933de3ad7f2915ae87e8a679734c5d742380","signature":"d9b01b7789f71152d477e3a1d78faba5ce1b9b5c7720ab86884d2629ed9c45ca"},{"version":"a409cb812a758508ca4f687af6e1403538e325566bba01fa3d2ed4a564b771ad","impliedFormat":1},{"version":"1a3abd72da7f1cfd9fac33c8be5a7e1775e132ac0b63bc357663b6934d8a9554","signature":"00f64b8d5647f694767e32a6f73d537490af26d7bdc77a2c770e229f616588b2"},{"version":"254c196f172858aee9de7f8071f5993ee2666a63b7974071f88be754d2a0ed2a","signature":"35afa86fc89c139aa537d3f26b91650fb6d5339036550048b15451fef7752893"},{"version":"47019d079a0d5a91649c599d6bbc1f4f94fe8c265e6ff1133b576317bf1d9316","signature":"95f0658fe83b2932e9aae526fa289f1f83df8af277fa6f5ed884030c58145b46"},{"version":"9ae85fb77de3346b5f7df02b7de065529f004822d413157048dc8fa03c17eea4","signature":"fc46160c59fbd31788690dfdb06d9cfd215d3519e82a617ee455324e77d4f8fc"},{"version":"03b78fb195c29b4b32adc69948bb1e7d6b7523de9da1adfda36eddc9818a997e","signature":"c6ba871646e24ac250b51410ca9570ab66383e458c01ecc821ee16be175c202f"},{"version":"a0b7031d03d21d08b219830396bd8889a2228d49ddb1aef769f6d36181cc449c","signature":"24e4496d7c500d026ad5569d8913ad68485981140fd9f74084514c57e97610c5"},{"version":"16eedbc34c43bd1a1f43801f0f04d4227c9a00bb7ebfccfaf6837f65f5ff8dd7","signature":"8581b29ac4393d65e14e6ba70c0e99195d0a6f65b9371b19432dfaccfd7e58ef"},{"version":"295cc3fc76d4c22a03f1709a0a3723f5f58a113dc67d869c511a6026025cea70","signature":"9de9662b9db8d759f466bc33759014a4e2fd142c48b25f18fcdce1205c5b9b23"},{"version":"e53b528cf1519c81f8ce7933858885bb6bd7c5a93087916a4dfdc4f810ca47b7","signature":"77422a4a6cc0f7e60fff5a9f01c886bf937d517a041232a212260ba9edb5ced4"},{"version":"590d2cab58117beeb257a5758e79b047d1c3139bff1ef8d5b0b949837d6317c5","signature":"6a09587ee1d53b4f754f1d888defe0040e8bdd89b6570600f9b8b3615dd79520"},{"version":"4e252c7c76a3a62e72d0255d081f48a17a20e2e139678d42f102b3129766539e","signature":"5ddfad7f04718346e91f917b0435f6621b788fc1c78b9de809a8b4f7e657ee9d"},{"version":"2e0ba342beccf13198b2f072b14da7ce05f865bb7fe47d5f01f49fe118b4253e","signature":"5527e79a00eae96ad940d9abd03e5517577d56b464ec7e11be411ca41e156eb0"},{"version":"ddb4d73ad6806c9d515d026ec6d1187e76698a449799f55dcb6d9cd82efaa709","signature":"ea7ccab2126bb0856886c495e9456ff7cdea09cb5faf28f0d3923ce44d68335c"},{"version":"3cb85796c812503915ba61e01eac7abb7ebaa680abe1d8366d21832f580faeff","signature":"31ba7ceb1a86423986699344bd5a409866c93e52f931d09354d8a888c4931d04"},{"version":"66f847958c8f4865fc4f7e17d645d1f9fbdfb8809adfe0b308d85ea0f436e8f7","signature":"2c31be273ceb93da6aa29fc5cd535c8dbe7f4d543dc73a997e18b8a1fc39929b"},{"version":"afe98ee091efb1791af3e9a08e7e4fba2b3f82741a2ef443d8abebada5f11d48","signature":"b2228a66027d1aefc5a777c45237fed9b65225403840d35d346e19be903830f6"},{"version":"9269cf44b7c876bc601f60850cfde0bd3a16b0387024d615575b80c37883576b","signature":"4c8ff2060d7babd2c9bd68a6fc20e6adae605607beb7016c9c8c7d06aef18759"},{"version":"948d1ff585a5296583bca538a93ccdc6d8be6b8f3b70538cfddc38985d87f7ae","signature":"685752e808632b60525b0542096bf632df10cfe142a1786d01441e9b0cff18c7"},{"version":"7e4d37309d061bb91ec0edc810b3c38d4b89229a0bb7189bc7a54e49661bc169","signature":"d849b4aba5b29e81051f8e733d6e15e87e9072712549d6ea52cc4adae538199d"},{"version":"b4a91ccc65590507b2848adec657f8840df9c6f7eb3ba88e5cea1bc182cc5916","signature":"7877583d2968dc42e5a9ed506825ac661bec8502394efca99a5fbd95dc029288"},"2552a31fad45a9ed1bde87e51b038dc0e786cd364b597162263abbf57018949b","0b2b18b83760e7e631849459a348b15a58005c06db87b8ca1a94acdc44dc8d32",{"version":"dc94787cb4f02ed26312bfa7e08688fc988a75ec864fbe7ac019db1e5d941b4d","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"887b047e6ecd5920678596712bafb08d1744177eb786ee65d5a2dcee935845a0","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"7dbadff629693d30090559c66fc1d7abd34a0eedb4a830ac9793df9f76584fb0","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},"1709aacf07fe6142881570c41c2d74474e8b7d540bab167a617ed87abc77afaa","f219459cc78e2f6584122db61fa0faf2c21aaf50606895fe53d5da1bc8247231",{"version":"0556216143c5b0e95d3baf9f5567175134c6d9fe9b633438a903216e90c1731f","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"0e60d159e9f8dbaf3b50f8c2008aaac654ebfd85e29c3dc60e8b3609a6f63a8d","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"31b401d5eedbabf74bcfd1d9e47a33736771c29f0a2359426b47a78e73c4c561","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"18dd21d71899d1742787ba665c7c921f81fd2dfa46f13c22a5163cfdb1878874","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},"0c872af02f75fe6baeea7d7088e3b097c1c81da3a36723544213d01ffbe36844","8134e6b69208e8a8d9d82598c6dbd8b05ffac32422633fcf6e4660c226cd360d",{"version":"36253004000a41031521919909f3a8a893dcbe9e8705885fabe9518a7960e51d","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},"03cb603502478c9ef905e9874910cb61c34154a60374188beed6059d2079a2df","728f9123fdb11574e1ff15ff1b620142e828630a811df050a4a56317e8473798","507ccebe35427617298af6ed0cb3b2a9b0a88433e71ff7e7a17f744a8f4b0195",{"version":"9633659068f5b8c03d849da45d6bc879e80d80b2e8965f89b3fa434a11851c93","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"e24adae4c1b89ca4714c9eb8d69bf478e4220e33268728b8b87d24d1f69dced3","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"4a308405daf9f5e2a2bc93d1bd3e3945486dca89aed2943edf98beac2e2ec748","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},"7b9555cc4e5ba0f08a27742b47654b8b1c85441dfbc825ff0ccdbed41e69fb19",{"version":"ab87ce72ed9fb21aaa8143ac2d24ccea2ad832cc7e46c823ccf5d804663100f9","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"f2db5d9f9c9293636e35ba5cc5a54a7b3ef7f4606df97e36d20fe08ef058c147","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"4e444c99d7631fc09407fd3922d3ea5a4e3e2490efd230f3bb2136d5033b341c","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"623030d1f80562b4204a2adae46274537007fcb7ee9f3ff9f583e5afcb35d7e4","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"71fcb551c1e2e2d671818b804f667e939f0038570e625d2663ab29ef1ca41254","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},"eb64a1b5296c45cfae713c16cdbbe7a291c7a653434215e05ca3991705184d4a",{"version":"c02e8bd87f82f0464b331e5295de3d50c1bc543c03935a1644e407278d6b19d1","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"060c2d5482bdf793110ecd73fd0c53043592c4a9a2c1d758dbf1515ea4f01397","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},"e8aefc9034cedd62ebe09f69dcfaced3eab4d121bf2f0274695734cf7a0d5b8c","5126e995ddf6bf98ead9841103f1e11554c3e62f3d4b6d51488a7e6e96d05ac3",{"version":"d56202ca686dd05e2438267656b388cffe9b03dac101b25581bebbec89d9611d","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"63ae07043106d30122844b6b89198047cf96c7f18297d3707f87016fd8a3d48e","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"2a6366b2a036a620b342699d37c5a97981fdda122cf3b2fa6654a97146619377","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","impliedFormat":1}],"root":[83,500,501,[526,541],[698,709],[714,716],[739,805],[848,870],[872,925]],"options":{"allowJs":true,"esModuleInterop":true,"jsx":1,"module":99,"skipLibCheck":true,"strict":true,"target":4},"referencedMap":[[895,1],[896,2],[897,3],[898,4],[899,5],[900,6],[901,7],[902,8],[903,9],[904,10],[906,11],[905,12],[907,13],[908,14],[909,15],[910,16],[911,17],[912,18],[894,19],[913,20],[914,21],[915,22],[916,23],[917,24],[918,25],[919,26],[920,27],[921,28],[922,29],[923,30],[924,31],[925,32],[892,33],[83,34],[893,35],[753,36],[755,37],[766,34],[763,38],[761,39],[759,40],[765,41],[767,40],[757,40],[758,42],[762,43],[764,40],[769,44],[775,45],[774,46],[776,47],[530,34],[531,34],[714,48],[777,49],[778,36],[779,37],[783,34],[782,50],[785,51],[780,34],[786,52],[781,53],[784,54],[535,55],[787,34],[788,56],[800,57],[528,34],[789,58],[790,59],[795,52],[796,34],[799,34],[798,60],[792,34],[793,34],[791,34],[797,52],[794,34],[715,61],[801,34],[802,62],[804,63],[803,64],[805,65],[536,34],[848,66],[849,67],[850,68],[716,34],[537,34],[851,69],[852,70],[853,71],[538,34],[745,72],[746,48],[751,73],[854,74],[855,75],[856,76],[857,36],[858,37],[859,77],[860,36],[861,37],[527,36],[869,78],[874,78],[868,79],[870,55],[867,80],[872,81],[873,52],[866,78],[875,82],[539,55],[540,34],[878,83],[881,34],[880,34],[877,52],[886,52],[884,34],[883,84],[879,52],[882,34],[885,34],[887,52],[888,85],[541,34],[529,86],[889,36],[890,37],[752,87],[891,49],[863,52],[864,52],[748,88],[749,89],[750,52],[743,90],[862,52],[756,88],[754,61],[747,91],[772,34],[773,52],[771,34],[770,34],[865,52],[768,52],[744,52],[876,34],[760,92],[700,93],[741,94],[701,52],[739,95],[740,96],[742,52],[705,97],[703,98],[704,52],[702,34],[699,34],[706,34],[707,99],[698,100],[708,34],[709,34],[500,101],[501,36],[665,102],[667,103],[668,104],[651,105],[655,106],[675,107],[654,107],[657,108],[649,34],[676,107],[650,107],[677,107],[656,109],[646,110],[666,102],[679,111],[670,112],[669,34],[672,113],[671,34],[678,114],[662,115],[661,34],[683,116],[645,117],[673,118],[644,119],[682,34],[658,111],[674,111],[663,111],[660,120],[659,111],[664,34],[641,120],[640,34],[642,111],[648,105],[653,111],[652,111],[680,121],[681,111],[643,122],[647,121],[564,123],[543,123],[599,34],[579,34],[611,34],[542,34],[590,124],[591,125],[557,126],[544,34],[553,34],[554,127],[555,34],[556,128],[552,129],[545,34],[549,34],[574,129],[572,130],[560,131],[586,132],[562,34],[567,34],[563,133],[558,129],[559,134],[561,134],[565,34],[566,34],[589,135],[578,136],[576,34],[577,137],[592,138],[588,139],[606,140],[600,141],[609,142],[610,143],[580,144],[596,34],[585,145],[582,129],[637,146],[583,147],[619,148],[618,34],[625,149],[624,34],[627,150],[626,34],[629,151],[628,34],[621,152],[620,34],[623,153],[622,153],[638,154],[633,155],[639,156],[551,157],[548,158],[547,34],[598,159],[612,160],[632,34],[617,34],[584,161],[602,162],[601,163],[604,164],[607,162],[608,165],[614,166],[587,34],[568,34],[603,167],[605,34],[634,168],[616,169],[594,34],[597,129],[571,170],[570,34],[635,171],[569,34],[636,172],[575,173],[573,34],[546,34],[613,174],[550,34],[631,175],[581,34],[615,176],[630,34],[593,34],[595,177],[689,178],[688,179],[690,178],[692,180],[694,181],[695,182],[693,183],[687,181],[697,184],[684,185],[685,185],[696,34],[686,100],[691,186],[720,34],[726,187],[722,188],[725,189],[730,190],[732,191],[727,192],[724,193],[723,34],[738,194],[731,34],[728,34],[721,34],[734,195],[733,196],[736,34],[729,34],[735,190],[737,197],[249,34],[810,198],[816,199],[818,200],[811,201],[819,202],[817,203],[820,34],[812,204],[813,202],[821,205],[822,198],[825,206],[814,207],[823,208],[824,209],[815,210],[926,34],[806,34],[927,34],[928,34],[807,211],[146,212],[147,212],[148,213],[101,214],[149,215],[150,216],[151,217],[96,34],[99,218],[97,34],[98,34],[152,219],[153,220],[154,221],[155,222],[156,223],[157,224],[158,224],[159,225],[160,226],[161,227],[162,228],[102,34],[100,34],[163,229],[164,230],[165,231],[199,232],[166,233],[167,34],[168,234],[169,235],[170,236],[171,237],[172,238],[173,239],[174,240],[175,241],[176,242],[177,242],[178,243],[179,34],[180,244],[181,245],[183,246],[182,247],[184,248],[185,249],[186,250],[187,251],[188,252],[189,253],[190,254],[191,255],[192,256],[193,257],[194,258],[195,259],[196,260],[103,34],[104,34],[105,34],[143,261],[144,34],[145,34],[197,262],[198,263],[86,34],[203,264],[358,52],[204,265],[202,52],[359,266],[200,267],[201,268],[84,34],[87,269],[356,52],[267,52],[85,34],[871,34],[94,270],[446,271],[451,33],[453,272],[225,273],[253,274],[429,275],[248,276],[236,34],[217,34],[223,34],[419,277],[284,278],[224,34],[388,279],[258,280],[259,281],[355,282],[416,283],[371,284],[423,285],[424,286],[422,287],[421,34],[420,288],[255,289],[226,290],[305,34],[306,291],[221,34],[237,292],[227,293],[289,292],[286,292],[210,292],[251,294],[250,34],[428,295],[438,34],[216,34],[331,296],[332,297],[326,52],[474,34],[334,34],[335,298],[327,299],[480,300],[478,301],[473,34],[415,302],[414,34],[472,303],[328,52],[367,304],[365,305],[475,34],[479,34],[477,306],[476,34],[366,307],[467,308],[470,309],[296,310],[295,311],[294,312],[483,52],[293,313],[278,34],[486,34],[718,314],[717,34],[489,34],[710,315],[711,316],[488,52],[490,317],[206,34],[425,318],[426,319],[427,320],[239,34],[215,321],[205,34],[347,52],[208,322],[346,323],[345,324],[336,34],[337,34],[344,34],[339,34],[342,325],[338,34],[340,326],[343,327],[341,326],[222,34],[213,34],[214,292],[268,328],[269,329],[266,330],[264,331],[265,332],[261,34],[353,298],[373,298],[445,333],[454,334],[458,335],[432,336],[431,34],[281,34],[491,337],[441,338],[329,339],[330,340],[321,341],[311,34],[352,342],[312,343],[354,344],[349,345],[348,34],[350,34],[364,346],[433,347],[434,348],[314,349],[318,350],[309,351],[411,352],[440,353],[288,354],[389,355],[211,356],[439,357],[207,276],[262,34],[270,358],[400,359],[260,34],[399,360],[95,34],[394,361],[238,34],[307,362],[390,34],[212,34],[271,34],[398,363],[220,34],[276,364],[317,365],[430,366],[316,34],[397,34],[263,34],[402,367],[403,368],[218,34],[405,369],[407,370],[406,371],[241,34],[396,356],[409,372],[395,373],[401,374],[229,34],[232,34],[230,34],[234,34],[231,34],[233,34],[235,375],[228,34],[381,376],[380,34],[386,377],[382,378],[385,379],[384,379],[387,377],[383,378],[712,380],[275,381],[374,382],[437,383],[493,34],[462,384],[464,385],[313,34],[463,386],[435,347],[492,387],[333,347],[219,34],[315,388],[272,389],[273,390],[274,391],[304,392],[410,392],[290,392],[375,393],[291,393],[257,394],[256,34],[379,395],[378,396],[377,397],[376,398],[436,399],[325,400],[361,401],[324,402],[357,403],[360,404],[418,405],[417,406],[413,407],[370,408],[372,409],[369,410],[408,411],[363,34],[450,34],[362,412],[412,34],[277,413],[310,318],[308,414],[279,415],[282,416],[487,34],[280,417],[283,417],[448,34],[447,34],[449,34],[485,34],[285,418],[323,52],[93,34],[368,419],[254,34],[243,420],[319,34],[456,52],[466,421],[303,52],[460,298],[302,422],[443,423],[301,421],[209,34],[468,424],[299,52],[300,52],[292,34],[242,34],[298,425],[297,426],[240,427],[320,241],[287,241],[404,34],[392,428],[391,34],[452,34],[351,429],[322,52],[444,430],[88,52],[91,431],[92,432],[89,52],[90,34],[252,433],[247,434],[246,34],[245,435],[244,34],[442,436],[455,437],[457,438],[459,439],[719,440],[461,441],[465,442],[499,443],[469,443],[498,444],[471,445],[481,446],[713,447],[482,448],[484,449],[494,450],[497,321],[496,34],[495,451],[518,452],[516,453],[517,454],[505,455],[506,453],[513,456],[504,457],[509,458],[519,34],[510,459],[515,460],[521,461],[520,462],[503,463],[511,464],[512,465],[507,466],[514,452],[508,467],[809,201],[826,468],[827,468],[829,469],[830,470],[808,198],[831,468],[847,471],[828,468],[832,201],[833,201],[834,468],[835,52],[836,468],[837,472],[838,468],[839,468],[840,201],[841,468],[842,468],[843,468],[844,468],[845,468],[846,201],[393,473],[502,34],[524,474],[523,34],[522,34],[525,475],[81,34],[82,34],[13,34],[14,34],[16,34],[15,34],[2,34],[17,34],[18,34],[19,34],[20,34],[21,34],[22,34],[23,34],[24,34],[3,34],[25,34],[26,34],[4,34],[27,34],[31,34],[28,34],[29,34],[30,34],[32,34],[33,34],[34,34],[5,34],[35,34],[36,34],[37,34],[38,34],[6,34],[42,34],[39,34],[40,34],[41,34],[43,34],[7,34],[44,34],[49,34],[50,34],[45,34],[46,34],[47,34],[48,34],[8,34],[54,34],[51,34],[52,34],[53,34],[55,34],[9,34],[56,34],[57,34],[58,34],[60,34],[59,34],[61,34],[62,34],[10,34],[63,34],[64,34],[65,34],[11,34],[66,34],[67,34],[68,34],[69,34],[70,34],[1,34],[71,34],[72,34],[12,34],[76,34],[74,34],[79,34],[78,34],[73,34],[77,34],[75,34],[80,34],[121,476],[131,477],[120,476],[141,478],[112,479],[111,480],[140,451],[134,481],[139,482],[114,483],[128,484],[113,485],[137,486],[109,487],[108,451],[138,488],[110,489],[115,490],[116,34],[119,490],[106,34],[142,491],[132,492],[123,493],[124,494],[126,495],[122,496],[125,497],[135,451],[117,498],[118,499],[127,500],[107,501],[130,492],[129,490],[133,34],[136,502],[526,503],[533,34],[534,504],[532,34]],"affectedFilesPendingEmit":[895,896,897,898,899,900,901,902,903,904,906,905,907,908,909,910,911,912,894,913,914,915,916,917,918,919,920,921,922,923,924,925,893,753,755,766,763,761,759,765,767,757,758,762,764,769,775,774,776,530,531,714,777,778,779,783,782,785,780,786,781,784,535,787,788,800,528,789,790,795,796,799,798,792,793,791,797,794,715,801,802,804,803,805,536,848,849,850,716,537,851,852,853,538,745,746,751,854,855,856,857,858,859,860,861,527,869,874,868,870,867,872,873,866,875,539,540,878,881,880,877,886,884,883,879,882,885,887,888,541,529,889,890,752,891,863,864,748,749,750,743,862,756,754,747,772,773,771,770,865,768,744,876,760,700,741,701,739,740,742,705,703,704,702,699,706,707,698,708,709,501,526,533,534,532],"version":"5.9.3"} \ No newline at end of file diff --git a/src/Web/autopilot-monitor-web/types/enrollment.ts b/src/Web/autopilot-monitor-web/types/enrollment.ts new file mode 100644 index 00000000..405cc9e6 --- /dev/null +++ b/src/Web/autopilot-monitor-web/types/enrollment.ts @@ -0,0 +1,29 @@ +export interface EnrollmentEvent { + eventId: string; + sessionId: string; + timestamp: string; + eventType: string; + severity: string; + source: string; + phase: number; + phaseName?: string; + message: string; + sequence: number; + data?: Record; +} + +export interface RuleResult { + resultId: string; + sessionId: string; + tenantId: string; + ruleId: string; + ruleTitle: string; + severity: string; + category: string; + confidenceScore: number; + explanation: string; + remediation: { title: string; steps: string[] }[]; + relatedDocs: { title: string; url: string }[]; + matchedConditions: Record; + detectedAt: string; +} diff --git a/src/Web/autopilot-monitor-web/types/index.ts b/src/Web/autopilot-monitor-web/types/index.ts new file mode 100644 index 00000000..a18a37a6 --- /dev/null +++ b/src/Web/autopilot-monitor-web/types/index.ts @@ -0,0 +1,2 @@ +export type { Session } from "./session"; +export type { EnrollmentEvent, RuleResult } from "./enrollment"; diff --git a/src/Web/autopilot-monitor-web/types/session.ts b/src/Web/autopilot-monitor-web/types/session.ts new file mode 100644 index 00000000..76a023e0 --- /dev/null +++ b/src/Web/autopilot-monitor-web/types/session.ts @@ -0,0 +1,32 @@ +export interface Session { + sessionId: string; + tenantId: string; + serialNumber: string; + deviceName: string; + manufacturer: string; + model: string; + startedAt: string; + completedAt?: string; + status: string; + currentPhase: number; + eventCount: number; + durationSeconds: number; + failureReason?: string; + enrollmentType?: string; // "v1" | "v2" — absent for sessions before this feature + diagnosticsBlobName?: string; + lastEventAt?: string; + isPreProvisioned?: boolean; + isHybridJoin?: boolean; + isUserDriven?: boolean; + agentVersion?: string; + // OS details + osName?: string; + osBuild?: string; + osDisplayVersion?: string; + osEdition?: string; + osLanguage?: string; + // Geographic location + geoCountry?: string; + geoRegion?: string; + geoCity?: string; +} diff --git a/tasks/lessons.md b/tasks/lessons.md new file mode 100644 index 00000000..6ce65da9 --- /dev/null +++ b/tasks/lessons.md @@ -0,0 +1,15 @@ +# Lessons Learned + + + +## Rules + + + +## Code Style + +## Architecture + +## Testing + +## Common Mistakes