1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[18784],{11968:(e,t,n)=>{n.d(t,{A:()=>p});var a=n(95155),r=n(12115),o=n(66609);let i=["Hi! I'd love to connect and explore potential collaboration opportunities.","Great to meet you at Event Radar! Let's stay connected.","I'm impressed by your work and would love to connect.","Your expertise in this field is inspiring. Let's connect!","I believe we have shared interests. Would love to connect and exchange ideas.","It was great meeting you! Let's keep in touch.","I'd love to learn more about your work. Let's connect!","Your profile caught my attention. Would love to connect and network.","I noticed we share similar interests. Would love to connect and exchange ideas!","Your work caught my attention. Let's connect!","We're both attending the same event. Would be great to connect beforehand!","I admire your background and experience. I'd love to learn from you.","Looking forward to potential collaboration opportunities. Let's connect!"];var s=n(97233),l=n(7686),d=n(94290),c=n(73321),u=n(79386);let g=new Map;function p({targetUser:e,currentUserId:t,className:n="",showMutualConnections:h=!1,onRelationshipChange:m,labelMode:b=!1,hideFollow:x=!1,explicitConnectionLabels:y=!1}){let w=(0,c.useRouter)(),f=(0,u.it)(),[v,k]=(0,r.useState)(!1),[j,C]=(0,r.useState)(""),[R,N]=(0,r.useState)(!0),[P,S]=(0,r.useState)({isFollowing:!1,isFollowedBy:!1,isConnected:!1,isInTalentPool:!1,hasPendingRequest:!1,hasReceivedRequest:!1,mutualConnections:0}),q=(0,r.useRef)(null),I=(0,r.useRef)(m);(0,r.useEffect)(()=>{I.current=m},[m]);let $="web_search"===e.origin||"eventbrite"===e.origin||"external"===e.origin,U=e?.isOrganization===!0,T=(0,r.useCallback)(()=>{let n=`${t}:${e.id}`,a=g.get(n);return a&&Date.now()-a.timestamp<3e5?a.data:null},[t,e.id]),{state:F,update:E,isUpdating:A}=((e,t)=>{let[n,a]=(0,r.useState)(e),[o,i]=(0,r.useState)(!1),s=(0,r.useRef)(e),l=(0,r.useCallback)(async e=>{i(!0),s.current=n;try{let r=e(n);a(r);let o=await t(r);return a(o),o}catch(e){throw a(n),e}finally{i(!1)}},[n,t]);return(0,r.useEffect)(()=>{o||e===n||a(e)},[e,o]),{state:n,update:l,isUpdating:o}})(P,async e=>e),L=(0,r.useCallback)(async()=>{if(!t||t===e.id)return void N(!1);if(N(!0),U){let n=T();if(n){S(n),N(!1);return}try{let n=await fetch("/api/relationships/organization-follows",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({organizationIds:[e.id]})});if(n.ok){let a=await n.json(),r={isFollowing:a.following?.[e.id]||!1,isFollowedBy:!1,isConnected:!1,isInTalentPool:!1,hasPendingRequest:!1,hasReceivedRequest:!1,mutualConnections:0},o=`${t}:${e.id}`;g.set(o,{data:r,timestamp:Date.now()}),S(r),I.current?.(r)}}catch(e){}finally{N(!1)}return}let n=T();if(n){S(n),N(!1),I.current?.(n);return}q.current&&q.current.abort(),q.current=new AbortController;try{let n=await fetch("/api/relationships/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({targetUserIds:[e.id],includeMetrics:h}),signal:q.current.signal});if(!n.ok)throw Error("Failed to fetch relationship status");let a=(await n.json()).relationships[e.id],r={isFollowing:a.following||!1,isFollowedBy:a.followedBy||!1,isConnected:a.connected||!1,isInTalentPool:a.inTalentPool||!1,hasPendingRequest:"sent"===a.pendingRequest,hasReceivedRequest:"received"===a.pendingRequest,mutualConnections:a.mutualConnections},o=`${t}:${e.id}`;g.set(o,{data:r,timestamp:Date.now()}),S(r),N(!1),I.current?.(r)}catch(e){if(e instanceof Error&&"AbortError"===e.name)return;N(!1)}},[t,e.id,h,T,U]);(0,r.useEffect)(()=>(L(),()=>{q.current&&q.current.abort()}),[L]);let z=async n=>{if(n.preventDefault(),n.stopPropagation(),!f.isRealSignedUpUser){let e=window.location.pathname+window.location.search;w.push(`/auth/signin?returnUrl=${encodeURIComponent(e)}`);return}let a=F.isFollowing;try{let n=await E(e=>({...e,isFollowing:!a}));if(I.current?.(n),U){let t=await fetch(`/api/relationships/follow${a?`?userId=${e.id}`:""}`,{method:a?"DELETE":"POST",headers:{"Content-Type":"application/json"},body:a?void 0:JSON.stringify({userId:e.id})});if(!t.ok){let e=await t.json();throw Error(e.error||"Failed to update organization follow status")}o.o.success(a?"Unfollowed organization":"Following organization!")}else{let t=await fetch(`/api/relationships/follow${a?`?userId=${e.id}`:""}`,{method:a?"DELETE":"POST",headers:{"Content-Type":"application/json"},body:a?void 0:JSON.stringify({userId:e.id})});if(!t.ok){let e=await t.json();throw Error(e.error||"Failed to update follow status")}o.o.success(a?"Unfollowed":"Following!")}let r=`${t}:${e.id}`;g.delete(r),setTimeout(()=>{L()},200)}catch(t){let e=await E(e=>({...e,isFollowing:a}));I.current?.(e),o.o.error("Failed to update follow status")}},O=async e=>{if(e.preventDefault(),e.stopPropagation(),!f.isRealSignedUpUser){let e=window.location.pathname+window.location.search;w.push(`/auth/signin?returnUrl=${encodeURIComponent(e)}`);return}if(!F.isConnected&&!F.hasPendingRequest){if(F.hasReceivedRequest)return void await D();k(!0)}},_=async()=>{try{let n=await E(e=>({...e,hasPendingRequest:!0}));I.current?.(n);let a=await fetch("/api/relationships/connections",{method:"POST",headers:{"Content-Type":"application/json"}
1,body:JSON.stringify({targetUserId:e.id,message:j,collaborationInsights:J()})});if(!a.ok){let e=await a.json();throw Error(e.error||"Failed to send connection request")}o.o.success("Connection request sent!"),k(!1),C("");let r=`${t}:${e.id}`;g.delete(r)}catch(e){throw o.o.error("Failed to send connection request"),e}},D=async()=>{try{let n=await E(e=>({...e,isConnected:!0,hasReceivedRequest:!1}));I.current?.(n);let a=await fetch("/api/relationships/connection-requests?type=received&status=pending");if(!a.ok)throw Error("Failed to look up connection request");let r=await a.json(),i=r.requests?.find(t=>t.sender_id===e.id);if(!i)throw Error("Connection request not found");if(!(await fetch("/api/relationships/connections",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({requestId:i.id,action:"accept"})})).ok)throw Error("Failed to accept connection request");o.o.success("Connection request accepted!");let s=`${t}:${e.id}`;g.delete(s)}catch(e){throw o.o.error("Failed to accept connection request"),e}},J=(0,r.useCallback)(()=>{let n=[],a=e.interests?.filter(e=>t&&e)||[];return a.length>
10&&n.push({type:"shared_interests",value:a,message:`You both share interest in ${a.join(", ")}`}),n},[e,t]),Y=async n=>{if(n.preventDefault(),n.stopPropagation(),!f.isRealSignedUpUser){let e=window.location.pathname+window.location.search;w.push(`/auth/signin?returnUrl=${encodeURIComponent(e)}`);return}let a=F.isInTalentPool;try{if(await E(e=>({...e,isInTalentPool:!a})),a){let t=new URL("/api/relationships/talent-pool",window.location.origin);if(t.searchParams.set("acquaintanceId",e.id),!(await fetch(t,{method:"DELETE"})).ok)throw Error("Failed to remove from talent pool");o.o.success("Removed from talent pool")}else{let n=await fetch("/api/relationships/talent-pool",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({acquaintanceId:e.id,source_type:"manual",source_name:"People Card"})});if(!n.ok){let a=await n.json();if(409===n.status||"User already in talent pool"===a.error){await E(e=>({...e,isInTalentPool:!0})),(0,o.o)("Already in talent pool",{icon:"â¹ï¸"});let n=`${t}:${e.id}`;g.delete(n);return}throw Error(a.error||"Failed to add to talent pool")}o.o.success("Added to talent pool")}let n=`${t}:${e.id}`;g.delete(n),setTimeout(()=>{L()},200)}catch(e){throw o.o.error(e instanceof Error?e.message:"Failed to update talent pool"),e}},B=(0,r.useMemo)(()=>({follow:{text:f.isRealSignedUpUser?F.isFollowing?"Following":"Follow":"Sign in",variant:F.isFollowing?"secondary":"primary",icon:F.isFollowing?"â":"+",disabled:f.isRealSignedUpUser&&(A||R)},connect:{text:f.isRealSignedUpUser?F.isConnected?"Connected":F.hasPendingRequest?y?"Request Pending":"Pending":F.hasReceivedRequest?y?"Accept Request":"Accept":y?"Request Connection":"Connect":"Sign in",variant:F.isConnected||F.hasPendingRequest?"secondary":"primary",icon:F.isConnected?"\uD83E\uDD1D":F.hasPendingRequest?"â³":"â",disabled:f.isRealSignedUpUser&&(A||R||F.hasPendingRequest)},talentPool:{text:f.isRealSignedUpUser?F.isInTalentPool?"In Talent Pool":"Add to Talent Pool":"Sign in",variant:F.isInTalentPool?"secondary":"outline",icon:F.isInTalentPool?"â":"â",disabled:f.isRealSignedUpUser&&(A||R)}}),[F,A,R,f.isRealSignedUpUser,y]);return((0,r.useEffect)(()=>{let n=n=>{let a=n.detail;if(!a||a.userId!==e.id&&a.targetUserId!==e.id)return;let r=a.relationshipStatus;if(r){let e={...P,...r};S(e),I.current?.(e)}let o=`${t}:${e.id}`;g.delete(o),L()};return window.addEventListener("relationship-changed",n),()=>window.removeEventListener("relationship-changed",n)},[e.id,t,P,L]),t&&t===e.id)?null:b?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:`flex flex-wrap items-center gap-1.5 ${n}`,children:[!U&&!$&&(0,a.jsxs)("button",{onClick:O,disabled:B.connect.disabled,className:` 2 inline-flex items-center gap-1 px-3 py-1.5 text-sm font-medium rounded-full 3 transition-all duration-200 min-h-[44px] min-w-[44px] 4 ${F.isConnected?"bg-green-100 dark:bg-green-900/30 text-green-700 dark:text-green-300 border border-green-300 dark:border-green-700":F.hasPendingRequest?"bg-orange-100 dark:bg-orange-900/30 text-orange-700 dark:text-orange-300 border border-orange-300 dark:border-orange-700":F.hasReceivedRequest?"bg-blue-600 text-white hover:bg-blue-700 border border-blue-600":"bg-green-600 text-white hover:bg-green-700 border border-green-600"} 5 ${B.connect.disabled?"opacity-50 cursor-wait":""} 6 `,title:R?"Loading connection status...":F.hasPendingRequest?"Your connection request is awaiting their response":F.isConnected?"You are connected":F.hasReceivedRequest?"Accept their connection request":"Send a connection request",children:[(0,a.jsx)(s.A,{className:`w-3.5 h-3.5 ${F.hasPendingRequest?"animate-pulse":""}`}),(0,a.jsx)("span",{children:B.connect.text})]}),!x&&!$&&(0,a.jsxs)("button",{onClick:z,disabled:B.follow.disabled,className:` 7 inline-flex items-center gap-1 px-3 py-1.5 text-sm font-medium rounded-full 8 transition-all duration-200 min-h-[44px] min-w-[44px] 9 ${F.isFollowing?"bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-300 border border-blue-300 dark:border-blue-700":"border border-gray-300 dark:border-gray-600 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700"} 10 ${B.follow.disabled?"opacity-50 cursor-wait":""} 11 `,title:R?"Loading follow status...":F.isFollowing?"Click to unfollow":"Follow to see their updates",children:[(0,a.jsx)(l.A,{className:`w-3.5 h-3.5 ${F.isFollowing?"fill-current":""}`}),(0,a.jsx)("span",{children:B.follow.text})]}),!U&&(0,a.jsxs)("button",{onClick:Y,disabled:B.talentPool.disabled,className:` 12 inline-flex items-center gap-1 px-3 py-1.5 text-sm font-medium rounded-full 13 transition-all duration-200 min-h-[44px] min-w-[44px]
14 ${F.isInTalentPool?"bg-purple-100 dark:bg-purple-900/30 text-purple-700 dark:text-purple-300 border border-purple-300 dark:border-purple-700":"border border-gray-300 dark:border-gray-600 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700"} 15 ${B.talentPool.disabled?"opacity-50 cursor-wait":""} 16 `,title:R?"Loading your talent pool status...":A?"Saving...":F.isInTalentPool?"Click to remove from your talent pool":"Save this person to your talent pool for later outreach",children:[(0,a.jsx)(d.A,{className:`w-3.5 h-3.5 ${F.isInTalentPool?"fill-current":""}`}),(0,a.jsx)("span",{children:f.isRealSignedUpUser?R?"Talent Poolâ¦":F.isInTalentPool?"In Talent Pool":"Talent Pool":"Sign in"})]}),h&&F.mutualConnections&&F.mutualConnections>0&&(0,a.jsxs)("span",{className:"text-[10px] text-gray-500 dark:text-gray-400 ml-0.5",children:[F.mutualConnections," mutual"]})]}),v&&(0,a.jsx)("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-[70]",children:(0,a.jsxs)("div",{className:"bg-white dark:bg-gray-800 rounded-lg p-4 max-w-md w-full mx-4",children:[(0,a.jsxs)("h3",{className:"text-base font-semibold mb-4 text-gray-900 dark:text-white",children:["Connect with ",e.display_name]}),(0,a.jsxs)("div",{className:"mb-4",children:[(0,a.jsx)("p",{className:"text-sm text-gray-600 dark:text-gray-400 mb-2",children:"Quick message:"}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:i.map((e,t)=>(0,a.jsx)("button",{onClick:()=>C(e),className:"text-xs px-3 py-1 bg-gray-100 dark:bg-gray-700 hover:bg-gray-200 dark:hover:bg-gray-600 rounded-full text-gray-700 dark:text-gray-300",children:e},t))})]}),(0,a.jsx)("textarea",{value:j,onChange:e=>C(e.target.value),placeholder:"Add a personalized message (optional)",className:"w-full p-3 border border-gray-300 dark:border-gray-600 rounded-lg resize-none bg-white dark:bg-gray-700 text-gray-900 dark:text-white placeholder-gray-400",rows:3}),(0,a.jsxs)("div",{className:"flex gap-2 mt-4",children:[(0,a.jsx)("button",{onClick:_,disabled:A,className:"flex-1 bg-green-600 text-white py-2 rounded-lg hover:bg-green-700 disabled:opacity-50",children:"Send Request"}),(0,a.jsx)("button",{onClick:()=>k(!1),className:"flex-1 bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-gray-300 py-2 rounded-lg hover:bg-gray-300 dark:hover:bg-gray-600",children:"Cancel"})]})]})})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:`flex items-center ${n}`,children:[!x&&!$&&(0,a.jsxs)("div",{className:"relative group",children:[(0,a.jsx)("button",{onClick:z,disabled:B.follow.disabled,className:` 17 relative min-h-[44px] min-w-[44px] md:min-h-0 md:min-w-0 p-2 md:p-1 rounded-md 18 inline-flex items-center justify-center 19 transition-all duration-200 hover:scale-110 20 ${"primary"===B.follow.variant?"text-gray-600 hover:text-blue-600 hover:bg-blue-50":"text-blue-600 bg-blue-50"} 21 ${B.follow.disabled?"opacity-50 cursor-not-allowed":""} 22 `,"aria-label":B.follow.text,children:(0,a.jsx)(l.A,{className:`w-3.5 h-3.5 ${F.isFollowing?"fill-current":""}`})}),(0,a.jsx)("div",{className:"absolute -top-8 left-1/2 transform -translate-x-1/2 opacity-0 group-hover:opacity-100 transition-opacity duration-200 pointer-events-none z-10 hidden sm:block",children:(0,a.jsxs)("div",{className:"bg-gray-900 text-white text-xs px-2 py-1 rounded whitespace-nowrap",children:[B.follow.text,(0,a.jsx)("div",{className:"absolute top-full left-1/2 transform -translate-x-1/2 -mt-1",children:(0,a.jsx)("div",{className:"border-4 border-transparent border-t-gray-900"})})]})})]}),!U&&!$&&(0,a.jsxs)("div",{className:"relative group",children:[(0,a.jsx)("button",{onClick:O,disabled:B.connect.disabled,className:` 23 relative min-h-[44px] min-w-[44px] md:min-h-0 md:min-w-0 p-2 md:p-1 rounded-md 24 inline-flex items-center justify-center 25 transition-all duration-200 hover:scale-110 26 ${"primary"===B.connect.variant?"text-gray-600 hover:text-green-600 hover:bg-green-50":F.hasPendingRequest?"text-orange-600 bg-orange-50":"text-green-600 bg-green-50"} 27 ${B.connect.disabled?"opacity-50 cursor-not-allowed":""} 28 `,"aria-label":B.connect.text,children:(0,a.jsx)(s.A,{className:`w-3.5 h-3.5 ${F.hasPendingRequest?"animate-pulse":""}`})}),(0,a.jsx)("div",{className:"absolute -top-8 left-1/2 transform -translate-x-1/2 opacity-0 group-hover:opacity-100 transition-opacity duration-200 pointer-events-none z-10 hidden sm:block",children:(0,a.jsxs)("div",{className:"bg-gray-900 text-white text-xs px-2 py-1 rounded whitespace-nowrap",children:[f.isRealSignedUpUser?F.isConnected?"Connected":F.hasPendingRequest?"Pending":F.hasReceivedRequest?"Accept Request":"Connect":"Sign in to connect",(0,a.jsx)("div",{className:"absolute top-full left-1/2 transform -translate-x-1/2 -mt-1",children:(0,a.jsx)("div",{className:"border-4 border-transparent border-t-gray-900"})})]})})]}),!U&&(0,a.jsxs)("div",{className:"relative group",children:[(0,a.jsx)("button",{onClick:Y,disabled:B.talentPool.disabled,className:`
29 relative min-h-[44px] min-w-[44px] md:min-h-0 md:min-w-0 p-2 md:p-1 rounded-md 30 inline-flex items-center justify-center 31 transition-all duration-200 hover:scale-110 32 ${"outline"===B.talentPool.variant?"text-gray-600 hover:text-purple-600 hover:bg-purple-50":"text-purple-600 bg-purple-50"} 33 ${B.talentPool.disabled?"opacity-50 cursor-not-allowed":""} 34 `,"aria-label":B.talentPool.text,children:(0,a.jsx)(d.A,{className:`w-3.5 h-3.5 ${F.isInTalentPool?"fill-current":""}`})}),(0,a.jsx)("div",{className:"absolute -top-8 left-1/2 transform -translate-x-1/2 opacity-0 group-hover:opacity-100 transition-opacity duration-200 pointer-events-none z-10 hidden sm:block",children:(0,a.jsxs)("div",{className:"bg-gray-900 text-white text-xs px-2 py-1 rounded whitespace-nowrap",children:[f.isRealSignedUpUser?F.isInTalentPool?"In Talent Pool":"Add to Talent Pool":"Sign in to save",(0,a.jsx)("div",{className:"absolute top-full left-1/2 transform -translate-x-1/2 -mt-1",children:(0,a.jsx)("div",{className:"border-4 border-transparent border-t-gray-900"})})]})})]}),h&&F.mutualConnections&&F.mutualConnections>0&&(0,a.jsxs)("div",{className:"hidden sm:block text-[9px] text-gray-500 ml-0.5",children:[F.mutualConnections," mutual"]})]}),v&&(0,a.jsx)("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-[70]",children:(0,a.jsxs)("div",{className:"bg-white rounded-lg p-4 max-w-md w-full mx-4",children:[(0,a.jsxs)("h3",{className:"text-base font-semibold mb-4",children:["Connect with ",e.display_name]}),(0,a.jsxs)("div",{className:"mb-4",children:[(0,a.jsx)("p",{className:"text-sm text-gray-600 mb-2",children:"Quick message:"}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:i.map((e,t)=>(0,a.jsx)("button",{onClick:()=>C(e),className:"text-xs px-3 py-1 bg-gray-100 hover:bg-gray-200 rounded-full",children:e},t))})]}),(0,a.jsx)("textarea",{value:j,onChange:e=>C(e.target.value),placeholder:"Add a personalized message (optional)",className:"w-full p-3 border rounded-lg resize-none placeholder-gray-400",rows:3}),(0,a.jsxs)("div",{className:"flex gap-2 mt-4",children:[(0,a.jsx)("button",{onClick:_,disabled:A,className:"flex-1 bg-green-600 text-white py-2 rounded-lg hover:bg-green-700 disabled:opacity-50",children:"Send Request"}),(0,a.jsx)("button",{onClick:()=>k(!1),className:"flex-1 bg-gray-200 text-gray-700 py-2 rounded-lg hover:bg-gray-300",children:"Cancel"})]})]})})]})}},27745:(e,t,n)=>{n.d(t,{A:()=>o});var a=n(95155);n(12115);var r=n(4903);function o({score:e,tone:t,size:n="md",className:i,children:s}){let l="number"==typeof e&&Number.isFinite(e)&&e>0?Math.round(e):null,d=t??(null!==l?l>=85?"green":l>=70?"blue":l>=60?"amber":"gray":"gray");return(0,a.jsxs)("div",{className:["relative inline-block",i].filter(Boolean).join(" "),children:[s,null!==l&&(0,a.jsxs)("span",{"data-testid":"sp-chip","aria-label":`${l} SP`,title:`${l} SP`,className:["absolute -bottom-1 -right-1 inline-flex items-center rounded-full font-semibold leading-none ring-2 ring-white dark:ring-gray-800 shadow-sm","sm"===n?"px-1.5 py-0.5 text-[10px] gap-0.5":"px-2 py-0.5 text-[11px] gap-0.5",function(e){switch(e){case"green":return"bg-emerald-100 text-emerald-800 dark:bg-emerald-900/40 dark:text-emerald-300";case"blue":return"bg-blue-100 text-blue-800 dark:bg-blue-900/40 dark:text-blue-300";case"amber":return"bg-amber-100 text-amber-800 dark:bg-amber-900/40 dark:text-amber-300";default:return"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-200"}}(d)].join(" "),children:[(0,a.jsx)(r.A,{className:"sm"===n?"w-2.5 h-2.5":"w-3 h-3","aria-hidden":"true"}),(0,a.jsx)("span",{children:l})]})]})}},79386:(e,t,n)=>{n.d(t,{it:()=>r});var a=n(14769);function r(){let{user:e,currentUser:t}=(0,a.A)();return e?t?.is_anonymous??e.is_anonymous?{type:"anonymous",isRealSignedUpUser:!1,hasIdentity:!0,userId:e.id}:{type:"signedUp",isRealSignedUpUser:!0,hasIdentity:!0,userId:e.id}:{type:"guest",isRealSignedUpUser:!1,hasIdentity:!1,userId:null}}}}]);
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.