1import __vite__cjsImport0_react_jsxRuntime from "/@fs/home/runner/workspace/node_modules/.vite/deps/react_jsx-runtime.js?v=3bc92834"; const jsx = __vite__cjsImport0_react_jsxRuntime["jsx"]; const jsxs = __vite__cjsImport0_react_jsxRuntime["jsxs"]; 2import { useQuery } from "/@fs/home/runner/workspace/node_modules/.vite/deps/@tanstack_react-query.js?v=9abba70f"; 3import __vite__cjsImport2_react from "/@fs/home/runner/workspace/node_modules/.vite/deps/react.js?v=3bc92834"; const useState = __vite__cjsImport2_react["useState"]; const useEffect = __vite__cjsImport2_react["useEffect"]; 4import ThreatRadar from "/src/components/threat-radar.tsx"; 5import ConsoleOutput from "/src/components/console-output.tsx"; 6import MissionStatus from "/src/components/mission-status.tsx"; 7import TargetAcquisition from "/src/components/target-acquisition.tsx"; 8import RiskAssessment from "/src/components/risk-assessment.tsx"; 9import SleekHeader from "/src/components/sleek-header.tsx"; 10import ProfileSidebar from "/src/components/profile-sidebar.tsx"; 11import ScanResultsSummary from "/src/components/scan-results-summary.tsx"; 12import { Link } from "/@fs/home/runner/workspace/node_modules/.vite/deps/wouter.js?v=6437b7f4"; 13const userImage = "/user-photo.jpg"; 14console.log("User image path:", userImage); 15export default function Dashboard() { 16 const [wsConnected, setWsConnected] = useState(false); 17 const { data: stats } = useQuery({ 18 queryKey: ["/api/stats"], 19 refetchInterval: 2e3 20 }); 21 const { data: defconData } = useQuery({ 22 queryKey: ["/api/defcon"], 23 refetchInterval: 5 * 60 * 1e3 24 // 5 minutes 25 }); 26 const { data: consoleOutput = [] } = useQuery({ 27 queryKey: ["/api/console"], 28 refetchInterval: 2e3 29 }); 30 const { data: scans = [] } = useQuery({ 31 queryKey: ["/api/scans"], 32 refetchInterval: 2e3 33 }); 34 const { data: threatIntelligence = [] } = useQuery({ 35 queryKey: ["/api/threat-intelligence"], 36 refetchInterval: 3e4 37 // Update every 30 seconds 38 }); 39 const { data: liveThreats = [] } = useQuery({ 40 queryKey: ["/api/threat-intelligence/live"], 41 refetchInterval: 3e4 42 // Update every 30 seconds 43 }); 44 useEffect(() => { 45 try { 46 const protocol = window.location.protocol === "https:" ? "wss:" : "ws:"; 47 const ws = new WebSocket(`${protocol}//${window.location.host}/api/ws`); 48 ws.onopen = () => { 49 console.log("WebSocket connected"); 50 setWsConnected(true); 51 }; 52 ws.onclose = () => { 53 console.log("WebSocket disconnected"); 54 setWsConnected(false); 55 }; 56 ws.onerror = (error) => { 57 console.error("WebSocket error:", error); 58 setWsConnected(false); 59 }; 60 return () => { 61 ws.close(); 62 }; 63 } catch (error) { 64 console.error("Failed to initialize WebSocket:", error); 65 setWsConnected(false); 66 } 67 }, []); 68 return /* @__PURE__ */ jsxs("div", { className: "min-h-screen bg-black relative overflow-hidden", children: [ 69 /* @__PURE__ */ jsxs("div", { className: "absolute inset-0", children: [
70 /* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-black", children: Array.from({ length: 100 }).map((_, i) => /* @__PURE__ */ jsx( 71 "div", 72 { 73 className: "absolute rounded-full animate-pulse", 74 style: { 75 left: `${Math.random() * 100}%`, 76 top: `${Math.random() * 100}%`, 77 width: `${Math.random() * 3 + 1}px`, 78 height: `${Math.random() * 3 + 1}px`, 79 backgroundColor: i % 3 === 0 ? "#60A5FA" : i % 3 === 1 ? "#FFFFFF" : "#A78BFA", 80 opacity: Math.random() * 0.8 + 0.2, 81 animationDelay: `${Math.random() * 3}s`, 82 animationDuration: `${Math.random() * 2 + 2}s` 83 } 84 }, 85 i 86 )) }), 87 /* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-gradient-to-br from-blue-900/10 via-transparent to-purple-900/10" }) 88 ] }), 89 /* @__PURE__ */ jsx(SleekHeader, {}), 90 /* @__PURE__ */ jsx(ProfileSidebar, {}), 91 /* @__PURE__ */ jsxs("div", { className: "relative z-10 pt-16 sm:pt-20 pl-4 sm:pl-24 p-3 sm:p-6", children: [
92 /* @__PURE__ */ jsx("div", { className: "mb-4 sm:mb-6 p-3 sm:p-4 bg-gradient-to-r from-blue-500/15 to-purple-500/15 border border-blue-400/40 rounded-lg mobile-glow mobile-fade-in", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-3 sm:gap-4 text-center", children: [ 93 /* @__PURE__ */ jsx("h3", { className: "text-blue-400 font-bold text-base sm:text-lg mb-1 mobile-tactical-text", children: "ð UNLOCK FULL FUNCTIONALITY" }), 94 /* @__PURE__ */ jsx("p", { className: "text-slate-300 text-xs sm:text-sm px-2", children: "Subscribe to access advanced threat intelligence, real-time scanning, and professional security reports" }), 95 /* @__PURE__ */ jsx(Link, { href: "/subscription", className: "w-full sm:w-auto", children: /* @__PURE__ */ jsx("button", { className: "w-full sm:w-auto px-4 sm:px-6 py-3 mobile-tactical-button bg-gradient-to-r from-blue-600/20 to-purple-600/20 backdrop-blur-sm hover:from-blue-500/30 hover:to-purple-500/30 text-white font-bold rounded-lg border border-blue-400/50 hover:border-blue-300 transition-all duration-300 transform hover:scale-105 mobile-glow text-sm sm:text-base", children: "Subscribe Now" }) }) 96 ] }) }),
97 /* @__PURE__ */ jsxs("div", { className: "mb-4 sm:mb-6 p-3 sm:p-4 bg-orange-500/15 border border-orange-500/40 rounded-lg mobile-glow mobile-fade-in", children: [ 98 /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center space-x-2 mb-2", children: /* @__PURE__ */ jsx("span", { className: "text-orange-400 font-bold text-sm sm:text-lg mobile-tactical-text", children: "â ï¸ SIMULATED DATA â ï¸" }) }), 99 /* @__PURE__ */ jsx("p", { className: "text-center text-orange-300 text-xs sm:text-sm px-2", children: "Vulnerability scans generate simulated data for research purposes. Risk assessments use real data from completed scans." }) 100 ] }), 101 /* @__PURE__ */ jsx("div", { className: "mb-4 sm:mb-6 bg-black/15 backdrop-blur-md rounded-lg border border-blue-400/40 p-3 sm:p-4 mobile-glow mobile-fade-in", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3 sm:gap-4", children: [ 102 /* @__PURE__ */ jsxs("div", { className: "flex flex-col sm:flex-row items-center gap-2 sm:gap-6", children: [
103 /* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-2", children: [ 104 /* @__PURE__ */ jsx("div", { className: `w-3 h-3 rounded-full mobile-status-indicator ${wsConnected ? "bg-green-400 animate-pulse shadow-lg shadow-green-400/50" : "bg-red-400 shadow-lg shadow-red-400/50"}` }), 105 /* @__PURE__ */ jsx("span", { className: "text-xs sm:text-sm text-slate-300 mobile-tactical-text", children: wsConnected ? "TACTICAL LINK ACTIVE" : "TACTICAL LINK DOWN" }) 106 ] }), 107 /* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-2", children: [ 108 /* @__PURE__ */ jsx("div", { className: "w-3 h-3 bg-blue-400 rounded-full animate-pulse mobile-status-indicator shadow-lg shadow-blue-400/50" }), 109 /* @__PURE__ */ jsx("span", { className: "text-xs sm:text-sm text-slate-300 mobile-tactical-text", children: "SCANNING SYSTEMS ONLINE" }) 110 ] }) 111 ] }), 112 /* @__PURE__ */ jsxs("div", { className: "flex flex-col sm:flex-row items-center justify-center sm:justify-between gap-2", children: [
113 /* @__PURE__ */ jsxs("div", { className: "text-xs sm:text-sm text-slate-400 mobile-tactical-text text-center", children: [ 114 "DEFCON ", 115 defconData?.level || "?", 116 " - ", 117 defconData?.name || "UNKNOWN" 118 ] }), 119 /* @__PURE__ */ jsx("div", { className: `px-3 py-1 rounded-full text-xs font-bold mobile-glow ${defconData?.level === 1 ? "bg-red-500/30 text-red-400 shadow-lg shadow-red-500/30" : defconData?.level === 2 ? "bg-red-400/30 text-red-300 shadow-lg shadow-red-400/30" : defconData?.level === 3 ? "bg-yellow-500/30 text-yellow-400 shadow-lg shadow-yellow-500/30" : defconData?.level === 4 ? "bg-green-500/30 text-green-400 shadow-lg shadow-green-500/30" : "bg-blue-500/30 text-blue-400 shadow-lg shadow-blue-500/30"}`, children: defconData?.color || "UNKNOWN" }) 120 ] }) 121 ] }) }), 122 /* @__PURE__ */ jsxs("div", { className: "mobile-grid grid grid-cols-1 xl:grid-cols-12 gap-3 sm:gap-6", children: [ 123 /* @__PURE__ */ jsxs("div", { className: "xl:col-span-8 space-y-3 sm:space-y-6", children: [
124 /* @__PURE__ */ jsxs("div", { className: "holographic-mobile bg-black/15 backdrop-blur-md rounded-lg border border-blue-400/40 p-3 sm:p-6 mobile-glow mobile-fade-in", children: [ 125 /* @__PURE__ */ jsx("h2", { className: "text-base sm:text-xl font-bold text-blue-400 mb-3 sm:mb-4 mobile-tactical-text", children: "TARGET ACQUISITION" }), 126 /* @__PURE__ */ jsx(TargetAcquisition, {}) 127 ] }), 128 /* @__PURE__ */ jsxs("div", { className: "holographic-mobile bg-black/15 backdrop-blur-md rounded-lg border border-blue-400/40 p-3 sm:p-6 mobile-glow mobile-fade-in", children: [ 129 /* @__PURE__ */ jsx("h2", { className: "text-base sm:text-xl font-bold text-blue-400 mb-3 sm:mb-4 mobile-tactical-text", children: "MISSION MODULES" }), 130 /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-3", children: [ 131 /* @__PURE__ */ jsx(Link, { href: "/third-party-risks", className: "block", children: /* @__PURE__ */ jsxs("button", { className: "w-full px-4 py-3 bg-gradient-to-r from-orange-600/20 to-red-600/20 backdrop-blur-sm hover:from-orange-500/30 hover:to-red-500/30 text-white font-bold rounded-lg border border-orange-400/50 hover:border-orange-300 transition-all duration-300 transform hover:scale-105 mobile-glow text-sm sm:text-base mobile-tactical-button", children: [
132 /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center space-x-2", children: [ 133 /* @__PURE__ */ jsx("span", { children: "ð¡ï¸" }), 134 /* @__PURE__ */ jsx("span", { children: "THIRD PARTY RISKS" }) 135 ] }), 136 /* @__PURE__ */ jsx("div", { className: "text-xs text-orange-300 mt-1", children: "Assess vendor security threats" }) 137 ] }) }), 138 /* @__PURE__ */ jsx(Link, { href: "/wordpress-scanning", className: "block", children: /* @__PURE__ */ jsxs("button", { className: "w-full px-4 py-3 bg-gradient-to-r from-blue-600/20 to-cyan-600/20 backdrop-blur-sm hover:from-blue-500/30 hover:to-cyan-500/30 text-white font-bold rounded-lg border border-blue-400/50 hover:border-blue-300 transition-all duration-300 transform hover:scale-105 mobile-glow text-sm sm:text-base mobile-tactical-button", children: [ 139 /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center space-x-2", children: [
140 /* @__PURE__ */ jsx("span", { children: "ð" }), 141 /* @__PURE__ */ jsx("span", { children: "WORDPRESS SECURITY" }) 142 ] }), 143 /* @__PURE__ */ jsx("div", { className: "text-xs text-cyan-300 mt-1", children: "Real vulnerability scanning" }) 144 ] }) }), 145 /* @__PURE__ */ jsx(Link, { href: "/network-monitor", className: "block", children: /* @__PURE__ */ jsxs("button", { className: "w-full px-4 py-3 bg-gradient-to-r from-green-600/20 to-emerald-600/20 backdrop-blur-sm hover:from-green-500/30 hover:to-emerald-500/30 text-white font-bold rounded-lg border border-green-400/50 hover:border-green-300 transition-all duration-300 transform hover:scale-105 mobile-glow text-sm sm:text-base mobile-tactical-button", children: [ 146 /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center space-x-2", children: [ 147 /* @__PURE__ */ jsx("span", { children: "ð¡" }), 148 /* @__PURE__ */ jsx("span", { children: "NETWORK MONITOR" }) 149 ] }),
150 /* @__PURE__ */ jsx("div", { className: "text-xs text-green-300 mt-1", children: "Device & connection analysis" }) 151 ] }) }), 152 /* @__PURE__ */ jsx(Link, { href: "/data-management", className: "block", children: /* @__PURE__ */ jsxs("button", { className: "w-full px-4 py-3 bg-gradient-to-r from-purple-600/20 to-pink-600/20 backdrop-blur-sm hover:from-purple-500/30 hover:to-pink-500/30 text-white font-bold rounded-lg border border-purple-400/50 hover:border-purple-300 transition-all duration-300 transform hover:scale-105 mobile-glow text-sm sm:text-base mobile-tactical-button", children: [ 153 /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center space-x-2", children: [ 154 /* @__PURE__ */ jsx("span", { children: "ð" }), 155 /* @__PURE__ */ jsx("span", { children: "DATA MANAGEMENT" }) 156 ] }), 157 /* @__PURE__ */ jsx("div", { className: "text-xs text-purple-300 mt-1", children: "Export reports & manage data" }) 158 ] }) }) 159 ] }) 160 ] }),
161 /* @__PURE__ */ jsx("div", { className: "mobile-fade-in", children: /* @__PURE__ */ jsx(ScanResultsSummary, { scans, hideAiAnalysis: true }) }), 162 /* @__PURE__ */ jsxs("div", { className: "holographic-mobile bg-black/15 backdrop-blur-md rounded-lg border border-blue-400/40 p-3 sm:p-6 mobile-glow mobile-fade-in", children: [ 163 /* @__PURE__ */ jsx("h2", { className: "text-base sm:text-xl font-bold text-blue-400 mb-3 sm:mb-4 mobile-tactical-text", children: "THREAT RADAR" }), 164 /* @__PURE__ */ jsx("div", { className: "mobile-cosmic-bg rounded-lg", children: /* @__PURE__ */ jsx(ThreatRadar, { threatIntelligence, liveThreats, scans }) }) 165 ] }), 166 /* @__PURE__ */ jsxs("div", { className: "holographic-mobile bg-black/15 backdrop-blur-md rounded-lg border border-blue-400/40 p-3 sm:p-6 mobile-glow mobile-fade-in", children: [ 167 /* @__PURE__ */ jsx("h2", { className: "text-base sm:text-xl font-bold text-blue-400 mb-3 sm:mb-4 mobile-tactical-text", children: "RISK ASSESSMENT" }),
168 /* @__PURE__ */ jsx(RiskAssessment, { scans }) 169 ] }) 170 ] }), 171 /* @__PURE__ */ jsxs("div", { className: "xl:col-span-4 space-y-3 sm:space-y-6", children: [ 172 /* @__PURE__ */ jsxs("div", { className: "holographic-mobile bg-black/15 backdrop-blur-md rounded-lg border border-blue-400/40 p-3 sm:p-6 mobile-glow mobile-fade-in", children: [ 173 /* @__PURE__ */ jsx("h2", { className: "text-base sm:text-xl font-bold text-blue-400 mb-3 sm:mb-4 mobile-tactical-text", children: "MISSION STATUS" }), 174 /* @__PURE__ */ jsx(MissionStatus, { stats, missionStartTime: /* @__PURE__ */ new Date() }) 175 ] }), 176 /* @__PURE__ */ jsxs("div", { className: "holographic-mobile bg-black/15 backdrop-blur-md rounded-lg border border-blue-400/40 p-3 sm:p-6 mobile-glow mobile-fade-in", children: [ 177 /* @__PURE__ */ jsx("h2", { className: "text-base sm:text-xl font-bold text-blue-400 mb-3 sm:mb-4 mobile-tactical-text", children: "QUICK ACCESS" }), 178 /* @__PURE__ */ jsx(Link, { href: "/third-party-risks", className: "block w-full", children: /* @__PURE__ */ jsxs("button", { className: "w-full px-4 py-3 bg-gradient-to-r from-orange-600/20 to-red-600/20 backdrop-blur-sm hover:from-orange-500/30 hover:to-red-500/30 text-white font-bold rounded-lg border border-orange-400/50 hover:border-orange-300 transition-all duration-300 transform hover:scale-105 mobile-glow text-sm sm:text-base mobile-tactical-button", children: [
179 /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center space-x-2", children: [ 180 /* @__PURE__ */ jsx("span", { children: "ð¡ï¸" }), 181 /* @__PURE__ */ jsx("span", { children: "THIRD PARTY RISKS" }) 182 ] }), 183 /* @__PURE__ */ jsx("div", { className: "text-xs text-orange-300 mt-1", children: "Assess vendor security threats" }) 184 ] }) }) 185 ] }), 186 /* @__PURE__ */ jsxs("div", { className: "holographic-mobile bg-black/15 backdrop-blur-md rounded-lg border border-blue-400/40 p-3 sm:p-6 mobile-glow mobile-fade-in", children: [ 187 /* @__PURE__ */ jsx("h2", { className: "text-base sm:text-xl font-bold text-blue-400 mb-3 sm:mb-4 mobile-tactical-text", children: "TACTICAL CONSOLE" }), 188 /* @__PURE__ */ jsx("div", { className: "mobile-console-output", children: /* @__PURE__ */ jsx(ConsoleOutput, { consoleOutput }) }) 189 ] }), 190 /* @__PURE__ */ jsxs("div", { className: "holographic-mobile bg-black/15 backdrop-blur-md rounded-lg border border-blue-400/40 p-3 sm:p-6 mobile-glow mobile-fade-in", children: [
191 /* @__PURE__ */ jsx("h2", { className: "text-base sm:text-xl font-bold text-blue-400 mb-3 sm:mb-4 mobile-tactical-text", children: "OPERATIONAL STATS" }), 192 /* @__PURE__ */ jsxs("div", { className: "space-y-3 sm:space-y-4", children: [ 193 /* @__PURE__ */ jsxs("div", { className: "flex justify-between items-center", children: [ 194 /* @__PURE__ */ jsx("span", { className: "text-xs sm:text-sm text-slate-300 mobile-tactical-text", children: "Active Scans" }), 195 /* @__PURE__ */ jsx("span", { className: "text-sm sm:text-lg font-bold text-orange-400 mobile-glow", children: stats?.activeScans || 0 }) 196 ] }), 197 /* @__PURE__ */ jsxs("div", { className: "flex justify-between items-center", children: [ 198 /* @__PURE__ */ jsx("span", { className: "text-xs sm:text-sm text-slate-300 mobile-tactical-text", children: "Completed Scans" }), 199 /* @__PURE__ */ jsx("span", { className: "text-sm sm:text-lg font-bold text-green-400 mobile-glow", children: stats?.completedScans || 0 }) 200 ] }),
201 /* @__PURE__ */ jsxs("div", { className: "flex justify-between items-center", children: [ 202 /* @__PURE__ */ jsx("span", { className: "text-xs sm:text-sm text-slate-300 mobile-tactical-text", children: "Total Threats" }), 203 /* @__PURE__ */ jsx("span", { className: "text-sm sm:text-lg font-bold text-red-400 mobile-glow", children: stats?.totalVulnerabilities || 0 }) 204 ] }), 205 /* @__PURE__ */ jsxs("div", { className: "flex justify-between items-center", children: [ 206 /* @__PURE__ */ jsx("span", { className: "text-xs sm:text-sm text-slate-300 mobile-tactical-text", children: "Critical Threats" }), 207 /* @__PURE__ */ jsx("span", { className: "text-sm sm:text-lg font-bold text-red-500 mobile-glow animate-pulse", children: stats?.criticalVulnerabilities || 0 }) 208 ] }) 209 ] }) 210 ] }) 211 ] }) 212 ] }) 213 ] }) 214 ] }); 215} 216 217//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRhc2hib2FyZC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlUXVlcnkgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYW
217N0XCI7XG5pbXBvcnQgVGhyZWF0UmFkYXIgZnJvbSBcIi4uL2NvbXBvbmVudHMvdGhyZWF0LXJhZGFyXCI7XG5pbXBvcnQgQ29uc29sZU91dHB1dCBmcm9tIFwiLi4vY29tcG9uZW50cy9jb25zb2xlLW91dHB1dFwiO1xuaW1wb3J0IE1pc3Npb25TdGF0dXMgZnJvbSBcIi4uL2NvbXBvbmVudHMvbWlzc2lvbi1zdGF0dXNcIjtcbmltcG9ydCBUYXJnZXRBY3F1aXNpdGlvbiBmcm9tIFwiLi4vY29tcG9uZW50cy90YXJnZXQtYWNxdWlzaXRpb25cIjtcbmltcG9ydCBSaXNrQXNzZXNzbWVudCBmcm9tIFwiLi4vY29tcG9uZW50cy9yaXNrLWFzc2Vzc21lbnRcIjtcbmltcG9ydCBTbGVla0hlYWRlciBmcm9tIFwiLi4vY29tcG9uZW50cy9zbGVlay1oZWFkZXJcIjtcbmltcG9ydCBQcm9maWxlU2lkZWJhciBmcm9tIFwiLi4vY29tcG9uZW50cy9wcm9maWxlLXNpZGViYXJcIjtcbmltcG9ydCBTY2FuUmVzdWx0c1N1bW1hcnkgZnJvbSBcIi4uL2NvbXBvbmVudHMvc2Nhbi1yZXN1bHRzLXN1bW1hcnlcIjtcbmltcG9ydCB7IExpbmsgfSBmcm9tIFwid291dGVyXCI7XG4vLyBVc2UgcHVibGljIGRpcmVjdG9yeSBmb3IgZGlyZWN0IGltYWdlIGFjY2Vzc1xuY29uc3QgdXNlckltYWdlID0gXCIvdXNlci1waG90by5qcGdcIjtcblxuLy8gRGVidWcgbG9nIHRvIGNoZWNrIGlmIGltYWdlIGlzIGxvYWRpbmdcbmNvbnNvbGUubG9nKFwiVXNlciBpbWFnZSBwYXRoOlwiLCB1c2VySW1hZ2UpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEYXNoYm9hcmQoKSB7XG4gIGNvbnN0IFt3c0Nvbm5lY3RlZCwgc2V0V3NDb25uZWN0ZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBcbiAgY29uc3QgeyBkYXRhOiBzdGF0cyB9ID0gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBbXCIvYXBpL3N0YXRzXCJdLFxuICAgIHJlZmV0Y2hJbnRlcnZhbDogMjAwMCxcbiAgfSk7XG5cbiAgY29uc3QgeyBkYXRhOiBkZWZjb25EYXRhIH0gPSB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IFtcIi9hcGkvZGVmY29uXCJdLFxuICAgIHJlZmV0Y2hJbnRlcnZhbDogNSAqIDYwICogMTAwMCwgLy8gNSBtaW51dGVzXG4gIH0pO1xuXG4gIGNvbnN0IHsgZGF0YTogY29uc29sZU91dHB1dCA9IFtdIH0gPSB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IFtcIi9hcGkvY29uc29sZVwiXSxcbiAgICByZWZldGNoSW50ZXJ2YWw6IDIwMDAsXG4gIH0pO1xuXG4gIGNvbnN0IHsgZGF0YTogc2NhbnMgPSBbXSB9ID0gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBbXCIvYXBpL3NjYW5zXCJdLFxuICAgIHJlZmV0Y2hJbnRlcnZhbDogMjAwMCxcbiAgfSk7XG5cbiAgY29uc3QgeyBkYXRhOiB0aHJlYXRJbnRlbGxpZ2VuY2UgPSBbXSB9ID0gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBbXCIvYXBpL3RocmVhdC1pbnRlbGxpZ2VuY2VcIl0sXG4gICAgcmVmZXRjaEludGVydmFsOiAzMDAwMCwgLy8gVXBkYXRlIGV2ZXJ5IDMwIHNlY29uZHNcbiAgfSk7XG5cbiAgY29uc3QgeyBkYXRhOiBsaXZlVGhyZWF0cyA9IFtdIH0gPSB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IFtcIi9hcGkvdGhyZWF0LWludGVsbGlnZW5jZS9saXZlXCJdLFxuICAgIHJlZmV0Y2hJbnRlcnZhbDogMzAwMDAsIC8vIFVwZGF0ZSBldmVyeSAzMCBzZWNvbmRzXG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByb3RvY29sID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSBcImh0dHBzOlwiID8gXCJ3c3M6XCIgOiBcIndzOlwiO1xuICAgICAgY29uc3Qgd3MgPSBuZXcgV2ViU29ja2V0KGAke3Byb3RvY29sfS8vJHt3aW5kb3cubG9jYXRpb24uaG9zdH0vYXBpL3dzYCk7XG4gICAgICBcbiAgICAgIHdzLm9ub3BlbiA9ICgpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coXCJXZWJTb2NrZXQgY29ubmVjdGVkXCIpO1xuICAgICAgICBzZXRXc0Nvbm5lY3RlZCh0cnVlKTtcbiAgICAgIH07XG4gICAgICBcbiAgICAgIHdzLm9uY2xvc2UgPSAoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiV2ViU29ja2V0IGRpc2Nvbm5lY3RlZFwiKTtcbiAgICAgICAgc2V0V3NDb25uZWN0ZWQoZmFsc2UpO1xuICAgICAgfTtcbiAgICAgIFxuICAgICAgd3Mub25lcnJvciA9IChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiV2ViU29ja2V0IGVycm9yOlwiLCBlcnJvcik7XG4gICAgICAgIHNldFdzQ29ubmVjdGVkKGZhbHNlKTtcbiAgICAgIH07XG4gICAgICBcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHdzLmNsb3NlKCk7XG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGluaXRpYWxpemUgV2ViU29ja2V0OlwiLCBlcnJvcik7XG4gICAgICBzZXRXc0Nvbm5lY3RlZChmYWxzZSk7XG4gICAgfVxuICB9LCBbXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1ibGFjayByZWxhdGl2ZSBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgIHsvKiBTdGFycnkgQW5pbWF0aW9uIEJhY2tncm91bmQgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTBcIj5cbiAgICAgICAgey8qIEFuaW1hdGVkIHN0YXJmaWVsZCAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIGJnLWJsYWNrXCI+XG4gICAgICAgICAgey8qIENyZWF0ZSBtdWx0aXBsZSBsYXllcnMgb2Ygc3RhcnMgKi99XG4gICAgICAgICAge0FycmF5LmZyb20oe2xlbmd0aDogMTAwfSkubWFwKChfLCBpKSA9PiAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGtleT17aX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgcm91bmRlZC1mdWxsIGFuaW1hdGUtcHVsc2VcIlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGxlZnQ6IGAke01hdGgucmFuZG9tKCkgKiAxMDB9JWAsXG4gICAgICAgICAgICAgICAgdG9wOiBgJHtNYXRoLnJhbmRvbSgpICogMTAwfSVgLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBgJHtNYXRoLnJhbmRvbSgpICogMyArIDF9cHhgLFxuICAgICAgICAgICAgICAgIGhlaWdodDogYCR7TWF0aC5yYW5kb20oKSAqIDMgKyAxfXB4YCxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5k
217Q29sb3I6IGkgJSAzID09PSAwID8gJyM2MEE1RkEnIDogaSAlIDMgPT09IDEgPyAnI0ZGRkZGRicgOiAnI0E3OEJGQScsXG4gICAgICAgICAgICAgICAgb3BhY2l0eTogTWF0aC5yYW5kb20oKSAqIDAuOCArIDAuMixcbiAgICAgICAgICAgICAgICBhbmltYXRpb25EZWxheTogYCR7TWF0aC5yYW5kb20oKSAqIDN9c2AsXG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uRHVyYXRpb246IGAke01hdGgucmFuZG9tKCkgKiAyICsgMn1zYFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHsvKiBTdWJ0bGUgZ3JhZGllbnQgb3ZlcmxheSBmb3IgcmVhZGFiaWxpdHkgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCBiZy1ncmFkaWVudC10by1iciBmcm9tLWJsdWUtOTAwLzEwIHZpYS10cmFuc3BhcmVudCB0by1wdXJwbGUtOTAwLzEwXCI+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIFxuICAgICAgPFNsZWVrSGVhZGVyIC8+XG4gICAgICA8UHJvZmlsZVNpZGViYXIgLz5cbiAgICAgIFxuICAgICAgey8qIE1haW4gZGFzaGJvYXJkIGNvbnRlbnQgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHotMTAgcHQtMTYgc206cHQtMjAgcGwtNCBzbTpwbC0yNCBwLTMgc206cC02XCI+XG4gICAgICAgIHsvKiBTdWJzY3JpcHRpb24gQ2FsbC10by1BY3Rpb24gLSBNb2JpbGUgT3B0aW1pemVkICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLTQgc206bWItNiBwLTMgc206cC00IGJnLWdyYWRpZW50LXRvLXIgZnJvbS1ibHVlLTUwMC8xNSB0by1wdXJwbGUtNTAwLzE1IGJvcmRlciBib3JkZXItYmx1ZS00MDAvNDAgcm91bmRlZC1sZyBtb2JpbGUtZ2xvdyBtb2JpbGUtZmFkZS1pblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgZ2FwLTMgc206Z2FwLTQgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWJsdWUtNDAwIGZvbnQtYm9sZCB0ZXh0LWJhc2Ugc206dGV4dC1sZyBtYi0xIG1vYmlsZS10YWN0aWNhbC10ZXh0XCI+8J+agCBVTkxPQ0sgRlVMTCBGVU5DVElPTkFMSVRZPC9oMz5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc2xhdGUtMzAwIHRleHQteHMgc206dGV4dC1zbSBweC0yXCI+XG4gICAgICAgICAgICAgIFN1YnNjcmliZSB0byBhY2Nlc3MgYWR2YW5jZWQgdGhyZWF0IGludGVsbGlnZW5jZSwgcmVhbC10aW1lIHNjYW5uaW5nLCBhbmQgcHJvZmVzc2lvbmFsIHNlY3VyaXR5IHJlcG9ydHNcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxMaW5rIGhyZWY9XCIvc3Vic2NyaXB0aW9uXCIgY2xhc3NOYW1lPVwidy1mdWxsIHNtOnctYXV0b1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInctZnVsbCBzbTp3LWF1dG8gcHgtNCBzbTpweC02IHB5LTMgbW9iaWxlLXRhY3RpY2FsLWJ1dHRvbiBiZy1ncmFkaWVudC10by1yIGZyb20tYmx1ZS02MDAvMjAgdG8tcHVycGxlLTYwMC8yMCBiYWNrZHJvcC1ibHVyLXNtIGhvdmVyOmZyb20tYmx1ZS01MDAvMzAgaG92ZXI6dG8tcHVycGxlLTUwMC8zMCB0ZXh0LXdoaXRlIGZvbnQtYm9sZCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItYmx1ZS00MDAvNTAgaG92ZXI6Ym9yZGVyLWJsdWUtMzAwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCB0cmFuc2Zvcm0gaG92ZXI6c2NhbGUtMTA1IG1vYmlsZS1nbG93IHRleHQtc20gc206dGV4dC1iYXNlXCI+XG4gICAgICAgICAgICAgICAgU3Vic2NyaWJlIE5vd1xuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgey8qIFNpbXVsYXRlZCBEYXRhIFdhcm5pbmcgLSBNb2JpbGUgT3B0aW1pemVkICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLTQgc206bWItNiBwLTMgc206cC00IGJnLW9yYW5nZS01MDAvMTUgYm9yZGVyIGJvcmRlci1vcmFuZ2UtNTAwLzQwIHJvdW5kZWQtbGcgbW9iaWxlLWdsb3cgbW9iaWxlLWZhZGUtaW5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNwYWNlLXgtMiBtYi0yXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LW9yYW5nZS00MDAgZm9udC1ib2xkIHRleHQtc20gc206dGV4dC1sZyBtb2JpbGUtdGFjdGljYWwtdGV4dFwiPuKaoO+4jyBTSU1VTEFURUQgREFUQSDimqDvuI88L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXIgdGV4dC1vcmFuZ2UtMzAwIHRleHQteHMgc206dGV4dC1zbSBweC0yXCI+XG4gICAgICAgICAgICBWdWxuZXJhYmlsaXR5IHNjYW5zIGdlbmVyYXRlIHNpbXVsYXRlZCBkYXRhIGZvciByZXNlYXJjaCBwdXJwb3Nlcy4g
217UmlzayBhc3Nlc3NtZW50cyB1c2UgcmVhbCBkYXRhIGZyb20gY29tcGxldGVkIHNjYW5zLlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHsvKiBTdGF0dXMgYmFyIC0gTW9iaWxlIE9wdGltaXplZCAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYi00IHNtOm1iLTYgYmctYmxhY2svMTUgYmFja2Ryb3AtYmx1ci1tZCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItYmx1ZS00MDAvNDAgcC0zIHNtOnAtNCBtb2JpbGUtZ2xvdyBtb2JpbGUtZmFkZS1pblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBnYXAtMyBzbTpnYXAtNFwiPlxuICAgICAgICAgICAgey8qIENvbm5lY3Rpb24gU3RhdHVzICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIHNtOmZsZXgtcm93IGl0ZW1zLWNlbnRlciBnYXAtMiBzbTpnYXAtNlwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgdy0zIGgtMyByb3VuZGVkLWZ1bGwgbW9iaWxlLXN0YXR1cy1pbmRpY2F0b3IgJHt3c0Nvbm5lY3RlZCA/ICdiZy1ncmVlbi00MDAgYW5pbWF0ZS1wdWxzZSBzaGFkb3ctbGcgc2hhZG93LWdyZWVuLTQwMC81MCcgOiAnYmctcmVkLTQwMCBzaGFkb3ctbGcgc2hhZG93LXJlZC00MDAvNTAnfWB9PjwvZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgc206dGV4dC1zbSB0ZXh0LXNsYXRlLTMwMCBtb2JpbGUtdGFjdGljYWwtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAge3dzQ29ubmVjdGVkID8gJ1RBQ1RJQ0FMIExJTksgQUNUSVZFJyA6ICdUQUNUSUNBTCBMSU5LIERPV04nfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyBiZy1ibHVlLTQwMCByb3VuZGVkLWZ1bGwgYW5pbWF0ZS1wdWxzZSBtb2JpbGUtc3RhdHVzLWluZGljYXRvciBzaGFkb3ctbGcgc2hhZG93LWJsdWUtNDAwLzUwXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14cyBzbTp0ZXh0LXNtIHRleHQtc2xhdGUtMzAwIG1vYmlsZS10YWN0aWNhbC10ZXh0XCI+U0NBTk5JTkcgU1lTVEVNUyBPTkxJTkU8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHsvKiBERUZDT04gU3RhdHVzICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIHNtOmZsZXgtcm93IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBzbTpqdXN0aWZ5LWJldHdlZW4gZ2FwLTJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHNtOnRleHQtc20gdGV4dC1zbGF0ZS00MDAgbW9iaWxlLXRhY3RpY2FsLXRleHQgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICBERUZDT04geyhkZWZjb25EYXRhIGFzIGFueSk/LmxldmVsIHx8ICc/J30gLSB7KGRlZmNvbkRhdGEgYXMgYW55KT8ubmFtZSB8fCAnVU5LTk9XTid9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHB4LTMgcHktMSByb3VuZGVkLWZ1bGwgdGV4dC14cyBmb250LWJvbGQgbW9iaWxlLWdsb3cgJHtcbiAgICAgICAgICAgICAgICAoZGVmY29uRGF0YSBhcyBhbnkpPy5sZXZlbCA9PT0gMSA/ICdiZy1yZWQtNTAwLzMwIHRleHQtcmVkLTQwMCBzaGFkb3ctbGcgc2hhZG93LXJlZC01MDAvMzAnIDpcbiAgICAgICAgICAgICAgICAoZGVmY29uRGF0YSBhcyBhbnkpPy5sZXZlbCA9PT0gMiA/ICdiZy1yZWQtNDAwLzMwIHRleHQtcmVkLTMwMCBzaGFkb3ctbGcgc2hhZG93LXJlZC00MDAvMzAnIDpcbiAgICAgICAgICAgICAgICAoZGVmY29uRGF0YSBhcyBhbnkpPy5sZXZlbCA9PT0gMyA/ICdiZy15ZWxsb3ctNTAwLzMwIHRleHQteWVsbG93LTQwMCBzaGFkb3ctbGcgc2hhZG93LXllbGxvdy01MDAvMzAnIDpcbiAgICAgICAgICAgICAgICAoZGVmY29uRGF0YSBhcyBhbnkpPy5sZXZlbCA9PT0gNCA/ICdiZy1ncmVlbi01MDAvMzAgdGV4dC1ncmVlbi00MDAgc2hhZG93LWxnIHNoYWRvdy1ncmVlbi01MDAvMzAnIDpcbiAgICAgICAgICAgICAgICAnYmctYmx1ZS01MDAvMzAgdGV4dC1ibHVlLTQwMCBzaGFkb3ctbGcgc2hhZG93LWJsdWUtNTAwLzMwJ1xuICAgICAgICAgICAgICB9YH0+XG4gICAgICAgICAgICAgICAgeyhkZWZjb25EYXRhIGFzIGFueSk/LmNvbG9yIHx8ICdVTktOT1dOJ31cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgICAgICB7LyogTWFpbiBncmlkIGxheW91dCAtIE1vYmlsZSBPcHRpbWl6ZWQgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9iaWxlLWdyaWQgZ3JpZCBncmlkLWNvbHMtMSB4bDpncmlkLWNvbHMtMTIgZ2FwLTMgc206Z2FwLTZcIj5cbiAgICAgICAgICB7LyogUHJpbWFyeSBvcGVyYXRpb25zIC0gRnVsbCB3aWR0aCBvbiBtb2JpbGUgKi99XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ4bDpjb2wtc3Bhbi04IHNwYWNlLXktMyBzbTpzcGFjZS15LTZcIj5cbiAgICAgICAgICAgIHsvKiBUYXJnZXQgYWNxdWlzaXRpb24gKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImhvbG9ncmFwaGljLW1vYmlsZSBiZy1ibGFjay8xNSBiYWNrZHJvcC1ibHVyLW1kIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ibHVlLTQwMC80MCBwLTMgc206cC02IG1vYmlsZS1nbG93IG1vYmlsZS1mYWRlLWluXCI+XG4gICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LWJhc2Ugc206dGV4dC14bCBmb250LWJvbGQgdGV4dC1ibHVlLTQwMCBtYi0zIHNtOm1iLTQgbW9iaWxlLXRhY3RpY2FsLXRleHRcIj5UQVJHRVQgQUNRVUlTSVRJT048L2gyPlxuICAgICAgICAgICAgICA8VGFyZ2V0QWNxdWlzaXRpb24gLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICB7LyogTWlzc2lvbiBNb2R1bGVzIC0gUXVpY2sgQWNjZXNzICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJob2xvZ3JhcGh
217pYy1tb2JpbGUgYmctYmxhY2svMTUgYmFja2Ryb3AtYmx1ci1tZCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItYmx1ZS00MDAvNDAgcC0zIHNtOnAtNiBtb2JpbGUtZ2xvdyBtb2JpbGUtZmFkZS1pblwiPlxuICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC1iYXNlIHNtOnRleHQteGwgZm9udC1ib2xkIHRleHQtYmx1ZS00MDAgbWItMyBzbTptYi00IG1vYmlsZS10YWN0aWNhbC10ZXh0XCI+TUlTU0lPTiBNT0RVTEVTPC9oMj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0xIHNtOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy00IGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgPExpbmsgaHJlZj1cIi90aGlyZC1wYXJ0eS1yaXNrc1wiIGNsYXNzTmFtZT1cImJsb2NrXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInctZnVsbCBweC00IHB5LTMgYmctZ3JhZGllbnQtdG8tciBmcm9tLW9yYW5nZS02MDAvMjAgdG8tcmVkLTYwMC8yMCBiYWNrZHJvcC1ibHVyLXNtIGhvdmVyOmZyb20tb3JhbmdlLTUwMC8zMCBob3Zlcjp0by1yZWQtNTAwLzMwIHRleHQtd2hpdGUgZm9udC1ib2xkIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1vcmFuZ2UtNDAwLzUwIGhvdmVyOmJvcmRlci1vcmFuZ2UtMzAwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCB0cmFuc2Zvcm0gaG92ZXI6c2NhbGUtMTA1IG1vYmlsZS1nbG93IHRleHQtc20gc206dGV4dC1iYXNlIG1vYmlsZS10YWN0aWNhbC1idXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBzcGFjZS14LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj7wn5uh77iPPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlRISVJEIFBBUlRZIFJJU0tTPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtb3JhbmdlLTMwMCBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgQXNzZXNzIHZlbmRvciBzZWN1cml0eSB0aHJlYXRzXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICAgIDxMaW5rIGhyZWY9XCIvd29yZHByZXNzLXNjYW5uaW5nXCIgY2xhc3NOYW1lPVwiYmxvY2tcIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwidy1mdWxsIHB4LTQgcHktMyBiZy1ncmFkaWVudC10by1yIGZyb20tYmx1ZS02MDAvMjAgdG8tY3lhbi02MDAvMjAgYmFja2Ryb3AtYmx1ci1zbSBob3Zlcjpmcm9tLWJsdWUtNTAwLzMwIGhvdmVyOnRvLWN5YW4tNTAwLzMwIHRleHQtd2hpdGUgZm9udC1ib2xkIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ibHVlLTQwMC81MCBob3Zlcjpib3JkZXItYmx1ZS0zMDAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwIHRyYW5zZm9ybSBob3ZlcjpzY2FsZS0xMDUgbW9iaWxlLWdsb3cgdGV4dC1zbSBzbTp0ZXh0LWJhc2UgbW9iaWxlLXRhY3RpY2FsLWJ1dHRvblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPvCflI08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+V09SRFBSRVNTIFNFQ1VSSVRZPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtY3lhbi0zMDAgbXQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgIFJlYWwgdnVsbmVyYWJpbGl0eSBzY2FubmluZ1xuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgICA8TGluayBocmVmPVwiL25ldHdvcmstbW9uaXRvclwiIGNsYXNzTmFtZT1cImJsb2NrXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInctZnVsbCBweC00IHB5LTMgYmctZ3JhZGllbnQtdG8tciBmcm9tLWdyZWVuLTYwMC8yMCB0by1lbWVyYWxkLTYwMC8yMCBiYWNrZHJvcC1ibHVyLXNtIGhvdmVyOmZyb20tZ3JlZW4tNTAwLzMwIGhvdmVyOnRvLWVtZXJhbGQtNTAwLzMwIHRleHQtd2hpdGUgZm9udC1ib2xkIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ncmVlbi00MDAvNTAgaG92ZXI6Ym9yZGVyLWdyZWVuLTMwMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgdHJhbnNmb3JtIGhvdmVyOnNjYWxlLTEwNSBtb2JpbGUtZ2xvdyB0ZXh0LXNtIHNtOnRleHQtYmFzZSBtb2JpbGUtdGFjdGljYWwtYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgc3BhY2UteC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+8J+ToTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5ORVRXT1JLIE1PTklUT1I8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1ncmVlbi0zMDAgbXQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgIERldmljZSAmIGNvbm5lY3Rpb24gYW5hbHlzaXNcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICAgICAgPExpbmsgaHJlZj1cIi9kYXRhLW1hbmFnZW1lbnRcIiBjbGFzc05hbWU9XCJibG9ja1wiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJ3LWZ1bGwgcHgtNCBweS0zIGJnLWdyYWRpZW50LXRvLXIgZnJvbS1wdXJwbGUtNjAwLzIwIHRvLXBpbmstNjAwLzIwIGJhY2tkcm9wLWJsdXItc20gaG92ZXI6ZnJvbS1wdXJwbGUtNTAwLzMwIGhvdmVyOnRvLXBpbmstNTAwLzMwIHRleHQtd2hpdGUgZm9udC1ib2xkIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1wdXJwbGUtNDAwLzUwIGhvdmVyOmJvcmRlci1wdXJwbGUtMzAwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCB0cmFuc2Zvcm0gaG92ZXI6c2NhbGUtMTA1IG1vYmlsZS1nbG93IHRleHQtc20gc206dGV4dC1iYXNlIG1vYmlsZS10YWN0aWNhbC1idXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBzcGFjZS14LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj7wn5OKPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkRBVEEgTUFOQUdFTUVOVDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXB1cnBsZS0zMDAgbXQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgIEV4cG9ydCByZXBvcnRzICYgbWFuYWdlIGRhdGFcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgI
217HsvKiBTY2FuIFJlc3VsdHMgU3VtbWFyeSAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9iaWxlLWZhZGUtaW5cIj5cbiAgICAgICAgICAgICAgPFNjYW5SZXN1bHRzU3VtbWFyeSBzY2Fucz17c2NhbnMgYXMgYW55fSBoaWRlQWlBbmFseXNpcz17dHJ1ZX0gLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICB7LyogVGhyZWF0IHJhZGFyICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJob2xvZ3JhcGhpYy1tb2JpbGUgYmctYmxhY2svMTUgYmFja2Ryb3AtYmx1ci1tZCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItYmx1ZS00MDAvNDAgcC0zIHNtOnAtNiBtb2JpbGUtZ2xvdyBtb2JpbGUtZmFkZS1pblwiPlxuICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC1iYXNlIHNtOnRleHQteGwgZm9udC1ib2xkIHRleHQtYmx1ZS00MDAgbWItMyBzbTptYi00IG1vYmlsZS10YWN0aWNhbC10ZXh0XCI+VEhSRUFUIFJBREFSPC9oMj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtb2JpbGUtY29zbWljLWJnIHJvdW5kZWQtbGdcIj5cbiAgICAgICAgICAgICAgICA8VGhyZWF0UmFkYXIgdGhyZWF0SW50ZWxsaWdlbmNlPXt0aHJlYXRJbnRlbGxpZ2VuY2UgYXMgYW55fSBsaXZlVGhyZWF0cz17bGl2ZVRocmVhdHMgYXMgYW55fSBzY2Fucz17c2NhbnMgYXMgYW55fSAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICB7LyogUmlzayBhc3Nlc3NtZW50IHN1bW1hcnkgKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImhvbG9ncmFwaGljLW1vYmlsZSBiZy1ibGFjay8xNSBiYWNrZHJvcC1ibHVyLW1kIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ibHVlLTQwMC80MCBwLTMgc206cC02IG1vYmlsZS1nbG93IG1vYmlsZS1mYWRlLWluXCI+XG4gICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LWJhc2Ugc206dGV4dC14bCBmb250LWJvbGQgdGV4dC1ibHVlLTQwMCBtYi0zIHNtOm1iLTQgbW9iaWxlLXRhY3RpY2FsLXRleHRcIj5SSVNLIEFTU0VTU01FTlQ8L2gyPlxuICAgICAgICAgICAgICA8Umlza0Fzc2Vzc21lbnQgc2NhbnM9e3NjYW5zIGFzIGFueX0gLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIFxuICAgICAgICAgIHsvKiBNb25pdG9yaW5nIGFuZCBzdGF0dXMgLSBSZXNwb25zaXZlIGxheW91dCAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInhsOmNvbC1zcGFuLTQgc3BhY2UteS0zIHNtOnNwYWNlLXktNlwiPlxuICAgICAgICAgICAgey8qIE1pc3Npb24gc3RhdHVzICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJob2xvZ3JhcGhpYy1tb2JpbGUgYmctYmxhY2svMTUgYmFja2Ryb3AtYmx1ci1tZCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItYmx1ZS00MDAvNDAgcC0zIHNtOnAtNiBtb2JpbGUtZ2xvdyBtb2JpbGUtZmFkZS1pblwiPlxuICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC1iYXNlIHNtOnRleHQteGwgZm9udC1ib2xkIHRleHQtYmx1ZS00MDAgbWItMyBzbTptYi00IG1vYmlsZS10YWN0aWNhbC10ZXh0XCI+TUlTU0lPTiBTVEFUVVM8L2gyPlxuICAgICAgICAgICAgICA8TWlzc2lvblN0YXR1cyBzdGF0cz17c3RhdHMgYXMgYW55fSBtaXNzaW9uU3RhcnRUaW1lPXtuZXcgRGF0ZSgpfSAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHsvKiBRdWljayBBY2Nlc3MgLSBUaGlyZCBQYXJ0eSBSaXNrcyAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaG9sb2dyYXBoaWMtbW9iaWxlIGJnLWJsYWNrLzE1IGJhY2tkcm9wLWJsdXItbWQgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWJsdWUtNDAwLzQwIHAtMyBzbTpwLTYgbW9iaWxlLWdsb3cgbW9iaWxlLWZhZGUtaW5cIj5cbiAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQtYmFzZSBzbTp0ZXh0LXhsIGZvbnQtYm9sZCB0ZXh0LWJsdWUtNDAwIG1iLTMgc206bWItNCBtb2JpbGUtdGFjdGljYWwtdGV4dFwiPlFVSUNLIEFDQ0VTUzwvaDI+XG4gICAgICAgICAgICAgIDxMaW5rIGhyZWY9XCIvdGhpcmQtcGFydHktcmlza3NcIiBjbGFzc05hbWU9XCJibG9jayB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInctZnVsbCBweC00IHB5LTMgYmctZ3JhZGllbnQtdG8tciBmcm9tLW9yYW5nZS02MDAvMjAgdG8tcmVkLTYwMC8yMCBiYWNrZHJvcC1ibHVyLXNtIGhvdmVyOmZyb20tb3JhbmdlLTUwMC8zMCBob3Zlcjp0by1yZWQtNTAwLzMwIHRleHQtd2hpdGUgZm9udC1ib2xkIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1vcmFuZ2UtNDAwLzUwIGhvdmVyOmJvcmRlci1vcmFuZ2UtMzAwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCB0cmFuc2Zvcm0gaG92ZXI6c2NhbGUtMTA1IG1vYmlsZS1nbG93IHRleHQtc20gc206dGV4dC1iYXNlIG1vYmlsZS10YWN0aWNhbC1idXR0b25cIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgc3BhY2UteC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPvCfm6HvuI88L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlRISVJEIFBBUlRZIFJJU0tTPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1vcmFuZ2UtMzAwIG10LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgQXNzZXNzIHZlbmRvciBzZWN1cml0eSB0aHJlYXRzXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHsvKiBDb25zb2xlIG91dHB1dCAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaG9sb2dyYXBoaWMtbW9iaWxlIGJnLWJsYWNrLzE1IGJhY2tkcm9wLWJsdXItbWQgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWJsdWUtNDAwLzQwIHAtMyBzbTpwLTYgbW9iaWxlLWdsb3cgbW9iaWxlLWZhZGUtaW5cIj
2175cbiAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQtYmFzZSBzbTp0ZXh0LXhsIGZvbnQtYm9sZCB0ZXh0LWJsdWUtNDAwIG1iLTMgc206bWItNCBtb2JpbGUtdGFjdGljYWwtdGV4dFwiPlRBQ1RJQ0FMIENPTlNPTEU8L2gyPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vYmlsZS1jb25zb2xlLW91dHB1dFwiPlxuICAgICAgICAgICAgICAgIDxDb25zb2xlT3V0cHV0IGNvbnNvbGVPdXRwdXQ9e2NvbnNvbGVPdXRwdXQgYXMgYW55fSAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICB7LyogUXVpY2sgc3RhdHMgKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImhvbG9ncmFwaGljLW1vYmlsZSBiZy1ibGFjay8xNSBiYWNrZHJvcC1ibHVyLW1kIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ibHVlLTQwMC80MCBwLTMgc206cC02IG1vYmlsZS1nbG93IG1vYmlsZS1mYWRlLWluXCI+XG4gICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LWJhc2Ugc206dGV4dC14bCBmb250LWJvbGQgdGV4dC1ibHVlLTQwMCBtYi0zIHNtOm1iLTQgbW9iaWxlLXRhY3RpY2FsLXRleHRcIj5PUEVSQVRJT05BTCBTVEFUUzwvaDI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0zIHNtOnNwYWNlLXktNFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHNtOnRleHQtc20gdGV4dC1zbGF0ZS0zMDAgbW9iaWxlLXRhY3RpY2FsLXRleHRcIj5BY3RpdmUgU2NhbnM8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHNtOnRleHQtbGcgZm9udC1ib2xkIHRleHQtb3JhbmdlLTQwMCBtb2JpbGUtZ2xvd1wiPnsoc3RhdHMgYXMgYW55KT8uYWN0aXZlU2NhbnMgfHwgMH08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgc206dGV4dC1zbSB0ZXh0LXNsYXRlLTMwMCBtb2JpbGUtdGFjdGljYWwtdGV4dFwiPkNvbX
217BsZXRlZCBTY2Fuczwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gc206dGV4dC1sZyBmb250LWJvbGQgdGV4dC1ncmVlbi00MDAgbW9iaWxlLWdsb3dcIj57KHN0YXRzIGFzIGFueSk/LmNvbXBsZXRlZFNjYW5zIHx8IDB9PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHNtOnRleHQtc20gdGV4dC1zbGF0ZS0zMDAgbW9iaWxlLXRhY3RpY2FsLXRleHRcIj5Ub3RhbCBUaHJlYXRzPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbSBzbTp0ZXh0LWxnIGZvbnQtYm9sZCB0ZXh0LXJlZC00MDAgbW9iaWxlLWdsb3dcIj57KHN0YXRzIGFzIGFueSk/LnRvdGFsVnVsbmVyYWJpbGl0aWVzIHx8IDB9PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHNtOnRleHQtc20gdGV4dC1zbGF0ZS0zMDAgbW9iaWxlLXRhY3RpY2FsLXRleHRcIj5Dcml0aWNhbCBUaHJlYXRzPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbSBzbTp0ZXh0LWxnIGZvbnQtYm9sZCB0ZXh0LXJlZC01MDAgbW9iaWxlLWdsb3cgYW5pbWF0ZS1wdWxzZVwiPnsoc3RhdHMgYXMgYW55KT8uY3JpdGljYWxWdWxuZXJhYmlsaXRpZXMgfHwgMH08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59Il0sIm1hcHBpbmdzIjoiQUFrRk0sU0FLTSxLQUxOO0FBbEZOLFNBQVMsZ0JBQWdCO0FBQ3pCLFNBQVMsVUFBVSxpQkFBaUI7QUFDcEMsT0FBTyxpQkFBaUI7QUFDeEIsT0FBTyxtQkFBbUI7QUFDMUIsT0FBTyxtQkFBbUI7QUFDMUIsT0FBTyx1QkFBdUI7QUFDOUIsT0FBTyxvQkFBb0I7QUFDM0IsT0FBTyxpQkFBaUI7QUFDeEIsT0FBTyxvQkFBb0I7QUFDM0IsT0FBTyx3QkFBd0I7QUFDL0IsU0FBUyxZQUFZO0FBRXJCLE1BQU0sWUFBWTtBQUdsQixRQUFRLElBQUksb0JBQW9CLFNBQVM7QUFFekMsd0JBQXdCLFlBQVk7QUFDbEMsUUFBTSxDQUFDLGFBQWEsY0FBYyxJQUFJLFNBQVMsS0FBSztBQUVwRCxRQUFNLEVBQUUsTUFBTSxNQUFNLElBQUksU0FBUztBQUFBLElBQy9CLFVBQVUsQ0FBQyxZQUFZO0FBQUEsSUFDdkIsaUJBQWlCO0FBQUEsRUFDbkIsQ0FBQztBQUVELFFBQU0sRUFBRSxNQUFNLFdBQVcsSUFBSSxTQUFTO0FBQUEsSUFDcEMsVUFBVSxDQUFDLGFBQWE7QUFBQSxJQUN4QixpQkFBaUIsSUFBSSxLQUFLO0FBQUE7QUFBQSxFQUM1QixDQUFDO0FBRUQsUUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUMsRUFBRSxJQUFJLFNBQVM7QUFBQSxJQUM1QyxVQUFVLENBQUMsY0FBYztBQUFBLElBQ3pCLGlCQUFpQjtBQUFBLEVBQ25CLENBQUM7QUFFRCxRQUFNLEVBQUUsTUFBTSxRQUFRLENBQUMsRUFBRSxJQUFJLFNBQVM7QUFBQSxJQUNwQyxVQUFVLENBQUMsWUFBWTtBQUFBLElBQ3ZCLGlCQUFpQjtBQUFBLEVBQ25CLENBQUM7QUFFRCxRQUFNLEVBQUUsTUFBTSxxQkF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
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.