PageSourceSearch

https://portal.stack8s.com/_next/static/chunks/pages/settings/auth-logs-cbc0dc86606a36bf.js

js stack8s.com collected 2026-10-04 01:47:46 UTC 18,286 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1984],{3739:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});let s=(0,a(79065).A)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]])},11871:(e,t,a)=>{"use strict";a.d(t,{x:()=>i});var s=a(37876),l=a(14232),r=a(8291);let i=l.forwardRef(({className:e,container:t,item:a,xs:l,sm:i,md:c,lg:n,xl:o,spacing:d=2,children:u,...m},h)=>(0,s.jsx)("div",{ref:h,className:(0,r.cn)(t&&"grid grid-cols-12",a&&(o?`xl:col-span-${o}`:n?`lg:col-span-${n}`:c?`md:col-span-${c}`:i?`sm:col-span-${i}`:l?`col-span-${l}`:"col-span-12"),t&&`gap-${d}`,e),...m,children:u}));i.displayName="Grid"},14982:(e,t,a)=>{"use strict";a.d(t,{y:()=>r,z:()=>l});var s=a(97603);let l=s.zl0.withParams({backgroundColor:"#FFFFFF",borderColor:"#EAECF0",browserColorScheme:"light",foregroundColor:"#080909",headerBackgroundColor:"#F3F7FA",headerFontSize:14,oddRowBackgroundColor:"#FAFAFA",rowHoverColor:"rgba(59, 130, 246, 0.05)",selectedRowBackgroundColor:"rgba(59, 130, 246, 0.18)",headerHeight:48,rowHeight:56}),r=s.zl0.withParams({backgroundColor:"#1E293B",borderColor:"#334155",browserColorScheme:"dark",foregroundColor:"#E2E8F0",headerBackgroundColor:"#0F172A",headerFontSize:14,oddRowBackgroundColor:"#0F172A",rowHoverColor:"rgba(59, 130, 246, 0.1)",selectedRowBackgroundColor:"rgba(59, 130, 246, 0.28)",headerHeight:48,rowHeight:56})},19878:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});let s=(0,a(79065).A)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]])},21662:(e,t,a)=>{"use strict";a.d(t,{E:()=>r});var s=a(37876);a(14232);var l=a(8291);function r({className:e,...t}){return(0,s.jsx)("div",{className:(0,l.cn)("animate-pulse rounded-md bg-muted",e),...t})}},30359:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});let s=(0,a(79065).A)("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]])},41001:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});let s=(0,a(79065).A)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]])},49240:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});let s=(0,a(79065).A)("circle-check-big",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]])},52417:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});let s=(0,a(79065).A)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},53198:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var s=a(37876);a(14232);var l=a(21662),r=a(11871);let i=({rowCount:e,columnCount:t})=>(0,s.jsxs)(r.x,{container:!0,spacing:2,children:[(0,s.jsx)(r.x,{item:!0,xs:12,children:(0,s.jsx)(l.E,{className:"h-[50px]"})}),(0,s.jsx)(r.x,{item:!0,xs:12,children:(0,s.jsx)(l.E,{className:"h-[400px]"})})]})},53911:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});let s=(0,a(79065).A)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]])},65734:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});let s=(0,a(79065).A)("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]])},72047:(e,t,a)=>{"use strict";a.d(t,{Fc:()=>n,TN:()=>d,XL:()=>o});var s=a(37876),l=a(14232),r=a(47137),i=a(8291);let c=(0,r.F)("relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",{variants:{variant:{default:"bg-background text-foreground",destructive:"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive",success:"border-green-500/50 text-green-600 dark:border-green-500 [&>svg]:text-green-600",warning:"border-yellow-500/50 text-yellow-600 dark:border-yellow-500 [&>svg]:text-yellow-600",info:"border-blue-500/50 text-blue-600 dar
1k:border-blue-500 [&>svg]:text-blue-600"}},defaultVariants:{variant:"default"}}),n=l.forwardRef(({className:e,variant:t,...a},l)=>(0,s.jsx)("div",{ref:l,role:"alert",className:(0,i.cn)(c({variant:t}),e),...a}));n.displayName="Alert";let o=l.forwardRef(({className:e,...t},a)=>(0,s.jsx)("h5",{ref:a,className:(0,i.cn)("mb-1 font-medium leading-none tracking-tight",e),...t}));o.displayName="AlertTitle";let d=l.forwardRef(({className:e,...t},a)=>(0,s.jsx)("div",{ref:a,className:(0,i.cn)("text-sm [&_p]:leading-relaxed",e),...t}));d.displayName="AlertDescription"},75303:(e,t,a)=>{"use strict";function s(e){let t=Math.floor((Date.now()-new Date(e).getTime())/6e4),a=Math.floor(t/60),s=Math.floor(a/24);return t<1?"just now":t<60?`${t}m ago`:a<24?`${a}h ago`:`${s}d ago`}function l(e){if(!e)return"";let t=new Date(e),a=Math.floor((new Date().getTime()-t.getTime())/1e3);if(a<60)return"just now";if(a<3600){let e=Math.floor(a/60);return`${e} minute${e>1?"s":""} ago`}if(a<86400){let e=Math.floor(a/3600);return`${e} hour${e>1?"s":""} ago`}if(a<604800){let e=Math.floor(a/86400);return`${e} day${e>1?"s":""} ago`}if(a<2592e3){let e=Math.floor(a/604800);return`${e} week${e>1?"s":""} ago`}let s=Math.floor(a/2592e3);return`${s} month${s>1?"s":""} ago`}a.d(t,{Q:()=>l,f:()=>s})},78339:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>k});var s=a(37876),l=a(14232),r=a(28468),i=a(19878),c=a(52417),n=a(31725),o=a(51808),d=a(26283),u=a(91725),m=a(72047),h=a(69310),g=a(14982),f=a(16073),p=a(2219);let y={s:{label:"Successful Login",type:"success"},ss:{label:"Successful Signup",type:"success"},slo:{label:"Successful Logout",type:"success"},sv:{label:"Email Verification Success",type:"success"},sce:{label:"Success Change Email",type:"success"},scp:{label:"Success Change Password",type:"success"},scpr:{label:"Success Change Phone Number",type:"success"},scoa:{label:"Success Code/Link Authentication",type:"success"},seacft:{label:"Success Exchange (Auth Code)",type:"success"},sercft:{label:"Success Exchange (Refresh Token)",type:"success"},seoobft:{label:"Success Exchange (OOB Code)",type:"success"},sepft:{label:"Success Exchange (Password)",type:"success"},sertft:{label:"Success Exchange (Rotating Token)",type:"success"},srrt:{label:"Success Revoke Refresh Token",type:"success"},sui:{label:"Success Update User Identity",type:"success"},sdu:{label:"Success Delete User",type:"success"},ssa:{label:"Success Silent Auth",type:"success"},f:{label:"Failed Login",type:"failure"},fs:{label:"Failed Signup",type:"failure"},fp:{label:"Failed Login (Wrong Password)",type:"failure"},fu:{label:"Failed Login (Invalid Email/Username)",type:"failure"},fv:{label:"Email Verification Failed",type:"failure"},fce:{label:"Failed Change Email",type:"failure"},fcp:{label:"Failed Change Password",type:"failure"},fcpr:{label:"Failed Change Phone Number",type:"failure"},fcoa:{label:"Failed Code/Link Authentication",type:"failure"},feacft:{label:"Failed Exchange (Auth Code)",type:"failure"},fercft:{label:"Failed Exchange (Refresh Token)",type:"failure"},feoobft:{label:"Failed Exchange (OOB Code)",type:"failure"},fepft:{label:"Failed Exchange (Password)",type:"failure"},fertft:{label:"Failed Exchange (Rotating Token)",type:"failure"},fsa:{label:"Failed Silent Auth",type:"failure"},w:{label:"Warning",type:"warning"},limit_wc:{label:"Blocked Account",type:"warning"},limit_mu:{label:"Blocked IP",type:"warning"},limit_ui:{label:"Too Many Calls to /userinfo",type:"warning"},gd_enrollment_complete:{label:"MFA Enrollment Complete",type:"success"},gd_auth_succeed:{label:"MFA Success",type:"success"},gd_auth_failed:{label:"MFA Failed",type:"failure"},gd_otp_rate_limit_exceed:{label:"MFA OTP Rate Limit Exceeded",type:"warning"},gd_start_enroll:{label:"MFA Enrollment Started",type:"info"},gd_start_auth:{label:"MFA Authentication Started",type:"info"},api_limit:{label:"API Rate Limit",type:"warning"},sapi:{label:"Success API Operation",type:"success"},fapi:{label:"Failed API Operation",type:"failure"}};var x=a(65734),v=a(86330),b=a(99645),w=a(53198);let N=()=>{let{userId:e,clusterId:t}=(0,f.A)(e=>e.auth),{myLogs:a,teamLogs:n,loading:N,error:k,hasCluster:A,fetchLogs:C,refreshLogs:j}=(()=>{let[e,t]=(0,l.useState)([]),[a,s]=(0,l.useState)([]),[r,i]=(0,l.useState)(!1),[c,n]=(0,l.useState)(null),[o,d]=(0,l.useState)(!1),u=(0,l.useRef)(null),m=(0,l.useRef)(null),h=(0,l.useCallback)((e,t)=>{let a=y[e.type]||{label:e.description||"Unknown Event",type:"info"};return{id:e._id,activity:a.label,activityType:a.type,date:e.date,user:t||e.user_name||e.user_id||"Unknown User",userId:e.user_id||"",ipAddress:e.ip||"N/A",location:function(e){if(!e)return"Unknown";
1let t=[e.city_name,e.country_name].filter(Boolean);return t.length>0?t.join(", "):"Unknown"}(e.location_info),device:function(e){return e?e.includes("Mobile")||e.includes("Android")||e.includes("iPhone")?"Mobile Device":e.includes("Chrome")?"Chrome Browser":e.includes("Firefox")?"Firefox Browser":e.includes("Safari")?"Safari Browser":e.includes("Edge")?"Edge Browser":"Web Browser":"Unknown Device"}(e.user_agent),eventType:e.type}},[]),g=(0,l.useCallback)(async(e,t=50)=>{try{return(await p.default.get(`/users/${encodeURIComponent(e)}/logs`,{params:{per_page:t}})).data.logs||[]}catch(t){return console.error(`Error fetching logs for user ${e}:`,t),[]}},[]),f=(0,l.useCallback)(async(e,a,l={})=>{i(!0),n(null),u.current=e,m.current=a,d(!!a);try{let{perPage:r=50}=l,i=(await g(e,r)).map(e=>h(e)).sort((e,t)=>new Date(t.date).getTime()-new Date(e.date).getTime());if(t(i),!a)return void s([]);let c=((await p.default.get("/users",{params:{cluster_id:a}})).data.users||[]).filter(t=>t.user_id!==e);if(0===c.length)return void s([]);let n=[];for(let e=0;e<c.length;e+=5){let t=c.slice(e,e+5).map(async e=>(await g(e.user_id,r)).map(t=>h(t,e.name||e.email)));(await Promise.all(t)).forEach(e=>{n.push(...e)})}let o=n.sort((e,t)=>new Date(t.date).getTime()-new Date(e.date).getTime());s(o)}catch(t){let e=t instanceof Error?t.message:"Unknown error occurred";n(e),console.error("Error fetching user logs:",e)}finally{i(!1)}},[g,h]),x=(0,l.useCallback)(async()=>{u.current&&await f(u.current,m.current||void 0)},[f]);return{myLogs:e,teamLogs:a,loading:r,error:c,hasCluster:o,fetchLogs:f,refreshLogs:x}})();return(0,l.useEffect)(()=>{e&&C(e,t)},[e,t,C]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(r.mg,{title:"Authentication Logs"}),(0,s.jsxs)("div",{className:"space-y-6",children:[(0,s.jsxs)("div",{className:"flex justify-between items-start",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"text-2xl font-bold tracking-tight",children:"Authentication Logs"}),(0,s.jsx)("p",{className:"text-sm text-muted-foreground mt-1",children:"View login activity and authentication events for your account and team"})]}),(0,s.jsxs)(d.$,{variant:"outline",size:"sm",onClick:j,disabled:N,className:"gap-2",children:[(0,s.jsx)(i.A,{className:`h-4 w-4 ${N?"animate-spin":""}`}),"Refresh"]})]}),(0,s.jsx)(o.w,{}),k&&(0,s.jsxs)(m.Fc,{variant:"destructive",children:[(0,s.jsx)(c.A,{className:"h-4 w-4"}),(0,s.jsx)(m.TN,{children:k})]}),(0,s.jsx)(u.Zp,{className:"",children:(0,s.jsxs)("div",{className:"p-6",children:[(0,s.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,s.jsx)("h2",{className:"text-lg font-semibold",children:"My Activity"}),(0,s.jsxs)("span",{className:"text-sm text-muted-foreground",children:[a.length," event",1!==a.length?"s":""]})]}),N&&0===a.length&&(0,s.jsx)(w.A,{rowCount:3,columnCount:4}),!N&&0===a.length&&(0,s.jsx)(v.p,{variant:"compact",description:"No activity found for your account"}),a.length>0&&(0,s.jsx)("div",{className:"rounded-lg overflow-hidden ag-theme-quartz",style:{height:"auto"},children:(0,s.jsx)(h.W6,{rowData:a,columnDefs:b.Uw,defaultColDef:b.px,animateRows:!0,domLayout:"autoHeight",rowHeight:64,headerHeight:56,suppressCellFocus:!0,suppressRowHoverHighlight:!1,suppressMovableColumns:!0,className:"ag-theme-custom",gridOptions:{theme:g.z},pagination:!0,paginationPageSize:10,paginationPageSizeSelector:[10,20,50,100]})})]})}),(0,s.jsx)(u.Zp,{className:"",children:(0,s.jsxs)("div",{className:"p-6",children:[(0,s.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,s.jsx)("h2",{className:"text-lg font-semibold",children:"Team Activity"}),(0,s.jsxs)("span",{className:"text-sm text-muted-foreground",children:[n.length," event",1!==n.length?"s":""]})]}),N&&0===n.length&&(0,s.jsx)(w.A,{rowCount:3,columnCount:5}),!N&&!A&&(0,s.jsx)(v.p,{variant:"compact",icon:x.A,title:"No cluster configured",description:"Team activity will be available once you have a cluster set up"}),!N&&0===n.length&&A&&(0,s.jsx)(v.p,{variant:"compact",title:"No team activity found",description:"Activity from other team members will appear here"}),n.length>0&&(0,s.jsx)("div",{className:"rounded-lg overflow-hidden ag-theme-quartz",style:{height:"auto"},children:(0,s.jsx)(h.W6,{rowData:n,columnDefs:b.Hr,defaultColDef:b.px,animateRows:!0,domLayout:"autoHeight",rowHeight:64,headerHeight:56,suppressCellFocus:!0,suppressRowHoverHighlight:!1,suppressMovableColumns:!0,className:"ag-theme-custom",gridOptions:{theme:g.z},pagination:!0,paginationPageSize:10,paginationPageSizeSelector:[10,20,50,100]})})]})})]})]})};N.getLayout=function(e){return(0,s.jsx)(n.A,{children:e})};let k=N},79890:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});let s=(0,a(79065).A)("map-pin",[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]])},86330:(e,t,a)=>{"use strict";a.d(t,{p:()=>i});var s=a(37876);a(14232);var l=a(8291),r=a(26283);function i({variant:e="prominent",icon:t,title:a,description:i,action:c,className:n}){if("inline"===e)return(0,s.jsx)("div",{className:(0,l.cn)("py-6 text-center text-sm text-muted-foreground",n),children:i});let o="compact"===e;return(0,s.jsxs)("div",{className:(0,l.cn)("flex flex-col items-center justify-center text-center px-4",o?"py-8":"py-12",n),children:[t&&(0,s.jsx)("div",{className:(0,l.cn)("flex items-center justify-center bg-muted/60 text-muted-foreground",o?"h-10 w-10 rounded-lg":"h-12 w-12 rounded-xl",o?"mb-3":"mb-4"),children:(0,s.jsx)(t,{className:o?"h-5 w-5":"h-6 w-6","aria-hidden":"true"})}),a&&(0,s.jsx)("h3",{className:(0,l.cn)("font-semibold text-foreground",o?"text-sm":"text-[15px]"),children:a}),i&&(0,s.jsx)("p",{className:(0,l.cn)("text-sm text-muted-foreground max-w-sm",a?"mt-1":""),children:i}),c&&(0,s.jsxs)(r.$,{onClick:c.onClick,variant:c.variant||"default",size:"sm",className:o?"mt-4":"mt-5",children:[c.icon&&(0,s.jsx)(c.icon,{className:"h-4 w-4 mr-1.5","aria-hidden":"true"}),c.label]})]})}},97536:(e,t,a)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/settings/auth-logs",function(){return a(78339)}])},99645:(e,t,a)=>{"use strict";a.d(t,{Hr:()=>y,K9:()=>n,ML:()=>r,Py:()=>i,UR:()=>o,Uw:()=>p,el:()=>u,px:()=>c,qo:()=>d,u9:()=>m,u_:()=>h});var s=a(37876),l=a(75303);let r=e=>{let t="active"===e.value||"Active"===e.value||"deployed"===e.value;return(0,s.jsx)("div",{className:"flex ",children:(0,s.jsx)("div",{className:`text-md font-medium capitalize ${t?"text-[#17B26A] ":"text-[#FF3B30] "}`,children:e.value})})};
1function i(e){return e?new Date(e).toLocaleString("en-US",{month:"numeric",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit",second:"2-digit",hour12:!0}):""}let c={flex:1,minWidth:150,sortable:!0,filter:!0,resizable:!0,tooltipValueGetter:e=>e.value},n=[{activity:"User Logged In",date:"12-12-2025",user:"Test user",resource:"Name"},{activity:"User Logged In",date:"12-12-2025",user:"Test user",resource:"Name"},{activity:"User Logged In",date:"12-12-2025",user:"Test user",resource:"Name"},{activity:"User Logged In",date:"12-12-2025",user:"Test user",resource:"Name"}],o=[{headerName:"Activity",field:"activity",cellClass:"py-4"},{headerName:"Date",field:"date",cellClass:"py-4"},{headerName:"User",field:"user",cellClass:"py-4"},{headerName:"Resource Name",field:"resource",cellClass:"py-4"}],d=[{name:"Current plan Details",value:"Launchpad"},{name:"Next billing date",value:"6/1/2024"},{name:"Active User Count",value:"5"}],u=[{headerName:"Name",field:"name",cellClass:"py-4"},{headerName:"Value",field:"value",cellClass:"py-4"}],m=[{headerName:"Name",field:"name"},{headerName:"Resource",field:"resource",width:10,cellStyle:{display:"flex",justifyContent:"flex-end"}}],h=[{name:"Stack8s",resource:"Name"},{name:"Google",resource:"Name"},{name:"Stack8s",resource:"Name"},{name:"Google",resource:"Name"}],g=e=>{let t=e.data?.activityType||"info";return(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:`w-2 h-2 rounded-full ${{success:"bg-green-500",failure:"bg-red-500",warning:"bg-yellow-500",info:"bg-blue-500"}[t]||"bg-gray-500"}`}),(0,s.jsx)("span",{className:`font-medium ${{success:"text-green-500",failure:"text-red-500",warning:"text-yellow-500",info:"text-blue-500"}[t]||"text-gray-600"}`,children:e.value})]})},f=e=>{if(!e.value)return null;let t=i(e.value),a=(0,l.Q)(e.value);return(0,s.jsxs)("div",{className:"flex flex-col justify-center",children:[(0,s.jsx)("span",{className:"text-sm",children:t}),(0,s.jsx)("span",{className:"text-xs text-muted-foreground",children:a})]})},p=[{headerName:"Activity",field:"activity",cellClass:"py-4",cellRenderer:g},{headerName:"Date",field:"date",cellClass:"py-2",cellRenderer:f},{headerName:"IP Address",field:"ipAddress",cellClass:"py-4"},{headerName:"Location",field:"location",cellClass:"py-4"}],y=[{headerName:"Activity",field:"activity",cellClass:"py-4",cellRenderer:g},{headerName:"Date",field:"date",cellClass:"py-2",cellRenderer:f},{headerName:"User",field:"user",cellClass:"py-4"},{headerName:"IP Address",field:"ipAddress",cellClass:"py-4"},{headerName:"Location",field:"location",cellClass:"py-4"}]}},e=>{e.O(0,[2838,8237,8230,3025,4e3,7129,7497,8580,4587,9310,1483,3125,5306,1725,636,6593,8792],()=>e(e.s=97536)),_N_E=e.O()}]);

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.