1import{u as Ae,c as Ce,o as Ee,d as $e,h as le,n as we,i as Ue,a as Te,b as Pe}from"../chunks/_onPageTransitionEnd.B1K5UFe-.js";import{_ as Ve}from"../chunks/OtpInput.jy8OMFdH.js";import{_ as De}from"../chunks/SubmitButton.CYXvq1n3.js";import{u as Ne,_ as Me}from"../chunks/usePhoneInputValidator.DQ2K4Kem.js";import{j as xe,r as h,a as Le,d as D,B as i,J as d,E as a,D as s,u as A,y as C,Q as O,R as qe,I as g,G as N,S as I,F as U,H as x,W as ie,K as re,L as ze,C as l,X as Be}from"../chunks/vendor-vue.oWKWKyZW.js";import{u as oe}from"../chunks/useOtpValidator.sCsg4KWJ.js";import{u as de}from"./entry-server-routing.CdT_sWlZ.js";import{u as Oe}from"../chunks/useValidators.DVN5GyHe.js";import{_ as Ie}from"../chunks/Msisdn.C0sbSwdf.js";import{n as Re}from"../chunks/event-handlers.BAR3MSpp.js";import"../chunks/vendor-bootstrap.CCUWBTAO.js";import"../chunks/spinner.Da0erYCC.js";const je={class:"col-md-6 offset-md-3"},Fe={key:0},We={key:1,class:"mb-3"},He={class:"d-flex align-items-center gap-2"},Je=["disabled"],Ke={key:2},Ge={class:"text-break"},Qe={class:"mb-3"},Xe={class:"form-label"},Ze={key:0,class:"form-check mb-4"},Ye=["disabled","required"],es={class:"form-check-label",for:"esimCompatibleCheckbox"},ss={href:"/doc/esim",target:"_blank"},as={key:3},ts={class:"d-flex gap-2"},ls=["disabled"],is={key:4},rs={class:"d-flex gap-2"},os=["disabled"],ds={key:5},ns={key:0},us={class:"text-muted"},ms={class:"card mb-3"},cs={class:"card-body"},vs={class:"card-title"},ps={class:"card-text"},bs={key:0,class:"mb-1"},ys={key:0,class:"mb-1"},fs={class:"d-flex gap-2 flex-wrap"},gs=["disabled"],hs={key:1},_s={class:"text-muted"},Ss={key:0,class:"mb-3"},ks={for:"customEmail",class:"form-label"},As=["placeholder"],Cs={key:0,class:"invalid-feedback d-block"},Es={key:1,class:"row g-3"},$s=["for"],ws=["onUpdate:modelValue","id"],Us={value:null},Ts=["value"],Ps=["onUpdate:modelValue","placeholder","id","onBeforeinput"],Vs={key:2,class:"invalid-feedback d-block"},Ds={class:"d-flex gap-2 flex-wrap mt-3"},Ns=["disabled"],Ms={key:2},xs={class:"alert alert-warning"},Ls={class:"d-flex gap-2 flex-wrap"},qs={href:"https://discoverflow.co/barbados/find-a-store",target:"_blank",class:"btn btn-outline-primary"},zs={key:3},Bs={key:0,class:"d-flex gap-2 flex-wrap mt-3"},Os={href:"https://discoverflow.co/barbados/find-a-store",target:"_blank",class:"btn btn-outline-primary"},Is={key:4},Rs={class:"alert alert-info mb-3"},js={class:"text-muted"},Fs={key:0,class:"card mb-3"},Ws={class:"card-body"},Hs={class:"card-title"},Js={class:"card-text"},Ks={key:0,class:"mb-1"},Gs={class:"d-flex gap-2 flex-wrap"},Qs=["disabled"],Xs={key:1,class:"alert alert-warning mt-3"},Zs={key:6},Ys={class:"text-center mb-4"},ea={class:"p-3 mb-4 text-white rounded text-center w-100 fs-2 bg-success"},sa={class:"text-primary mb-4"},aa={key:0,class:"text-primary mb-4"},ta=["href"],la={class:"table-responsive"},ia={class:"table table-borderless"},ra={key:0},oa={key:0},da={class:"mt-4"},na=["disabled"],ua=xe({__name:"+Page",setup(va){const _=Ae(),f=Ce(),T=Ee(),S=$e(),n=Oe(),K=_.locals.sharedConfig.simDelivery.countries||[],L=_.locals.sharedConfig.simDelivery.esimCountries||[],R=[...new Set([...K,...L])],G=typeof _.urlParsed.search.country=="string"?_.urlParsed.search.country.toUpperCase():"",ne=R.includes(G)&&_.locals.countriesMap[G]||null,Q=["1","true"].includes(String(_.urlParsed.search.esimCompatible).toLowerCase()),b=h("phone"),m=h("default"),v=h(!1),t=Le({deliveryAddress:null,finalAddress:null,allowCustomAddress:!1,eligibilityMessage:"",upgraded:!1,deliveryEmailAddress:null,finalEmailAddress:null,isEsimAvailable:!1,message:""}),j=ne||_.locals.countriesMap[R[0]],u=h({country:j,area:j.areaCode[0],number:null,msisdn:null,formattedMsisdn:null}),X=D(()=>_.locals.sharedConfig.simDelivery.enabled&&L.includes(u.value.country.id)),ue=D(()=>X.value&&!K.includes(u.value.country.id)),k=h(Q&&L.includes(j.id)),E=h({otp:null,resending:!1}),$=h({otp:null,resending:!1}),M=h(""),w=h(""),Z=Ne(u),F=oe(E),W=oe($),q=de({email:{required:n.required,email:n.email}},{email:M}),p=D(()=>E.value.resending||$.value.resending||v.value),y=D(()=>k.value&&t.isEsimAvailable),z=D(()=>{var e,o;return((o=(e=_.publicSettings)==null?void 0:e.whatsappByCountry)==null?void 0:o[u.value.country.id])||null}),me=D(()=>z.value?`https://wa.me/${z.value.replace(/[^\d]/g,"")}`:""),ce=h([{key:"firstName",label:"First Name",colClass:"col-md-6"},{key:"lastName",label:"Last Name",colClass:"col-md-6"},{key:"customerTrn",label:"Customer TRN",colClass:"col-md-6",type:"number"},{key:"street",label:"Street/Building",colClass:"col-md-6"},{key:"city",label:"Town/City",colClass:"col-md-6"},{key:"parish",label:"Parish",colClass:"col-md-6",type:"select",options:["Kingston","St. Andrew","St. Thomas","Portland","St. Mary","St. Ann","Trelawny","St. James","Hanover","Westmoreland","St. Elizabeth","Manchester","Clarendon","St. Catherine"]},{key:"primaryNumber",label:"Primary Number",colClass:"col-md-6",type:"number"},{key:"secondaryNumber",label:"Secondary Number",colClass:"col-md-6",type:"number"},{key:"contactPersonName",label:"Contact Person Name",colClass:"col-12"}
1]),Y={firstName:null,lastName:null,customerTrn:null,street:null,city:null,parish:null,primaryNumber:null,secondaryNumber:null,contactPersonName:null},P=h({...Y}),B=de({firstName:{required:n.required,maxLength:n.maxLength(50)},lastName:{required:n.required,maxLength:n.maxLength(50)},customerTrn:{required:n.required,minLength:n.minLength(9),maxLength:n.maxLength(9)},street:{required:n.required,maxLength:n.maxLength(100)},city:{required:n.required,maxLength:n.maxLength(50)},parish:{required:n.required},primaryNumber:{required:n.required,maxLength:n.maxLength(20)},secondaryNumber:{maxLength:n.maxLength(20)},contactPersonName:{required:n.required,maxLength:n.maxLength(100)}},P);async function ve(){if(await Z.value.$validate()){v.value=!0;try{const e=await T.lteSimDeliveryInitiate({data:{countryCode:u.value.country.id,msisdn:u.value.msisdn,...f.utm||{}}});e.eligible?b.value="otp":(t.eligibilityMessage=e.message,t.upgraded=e.upgraded||!1,b.value="address",m.value="ineligible")}catch(e){f.toastError(e.errorMessage||S.t("genericError"))}v.value=!1}}async function pe(){if(await F.value.$validate()){v.value=!0;try{const e=await T.lteSimDeliveryValidate({data:{msisdn:u.value.msisdn,code:E.value.otp,isEsimCompatible:k.value}});if(e.errorMessage){f.toastError(e.errorMessage);return}t.deliveryAddress=e.deliveryAddress||null,t.allowCustomAddress=e.allowCustomAddress||!1,t.deliveryEmailAddress=e.deliveryEmailAddress||null,t.isEsimAvailable=e.isEsimAvailable||!1,b.value="address",k.value&&!t.isEsimAvailable?m.value="esimNotAvailable":k.value&&t.isEsimAvailable?t.deliveryEmailAddress?m.value="default":t.allowCustomAddress?m.value="custom":t.deliveryAddress?m.value="default":m.value="unavailable":t.deliveryAddress?m.value="default":t.allowCustomAddress?m.value="custom":m.value="unavailable"}catch(e){f.toastError(e.errorMessage||S.t("genericError"))}v.value=!1}}async function be(){E.value.resending=!0;try{await T.lteSimDeliveryInitiate({data:{countryCode:u.value.country.id,msisdn:u.value.msisdn,...f.utm||{}}}),f.toastSuccess(S.t("otpResendSuccess"))}catch(e){f.toastError(e.errorMessage||S.t("genericError"))}E.value.resending=!1}async function ee(){y.value?(w.value=t.deliveryEmailAddress,await se()):await ae(t.deliveryAddress)}async function ye(){await B.value.$validate()&&await ae(P.value)}async function fe(){await q.value.$validate()&&(w.value=M.value,await se())}async function se(){v.value=!0;try{await T.lteSimDeliverySendEmailCode({data:{msisdn:u.value.msisdn,email:w.value}}),b.value="emailOtp"}catch(e){f.toastError(e.errorMessage||S.t("genericError"))}v.value=!1}async function ge(){await W.value.$validate()&&await _e()}async function he(){$.value.resending=!0;try{await T.lteSimDeliverySendEmailCode({data:{msisdn:u.value.msisdn,email:w.value}}),f.toastSuccess(S.t("otpResendSuccess"))}catch(e){f.toastError(e.errorMessage||S.t("genericError"))}$.value.resending=!1}async function _e(){v.value=!0;try{const e=await T.lteSimDeliveryConfirm({data:{msisdn:u.value.msisdn,deliveryEmailAddressCode:$.value.otp,deliveryEmailAddress:w.value}});t.finalEmailAddress=w.value,t.message=e.message,b.value="success"}catch(e){f.toastError(e.errorMessage||S.t("genericError"))}v.value=!1}async function ae(e){v.value=!0;try{const o=await T.lteSimDeliveryConfirm({data:{msisdn:u.value.msisdn,deliveryAddress:e}});t.finalAddress=e,t.message=o.message,b.value="success"}catch(o){f.toastError(o.errorMessage||S.t("genericError"))}v.value=!1}function H(){b.value="phone",m.value="default",t.deliveryAddress=null,t.finalAddress=null,t.allowCustomAddress=!1,t.eligibilityMessage="",t.upgraded=!1,t.deliveryEmailAddress=null,t.finalEmailAddress=null,t.isEsimAvailable=!1,t.message="",P.value={...Y},M.value="",w.value="",k.value=Q&&L.includes(u.value.country.id),E.value.otp=null,$.value.otp=null,F.value.$reset(),W.value.$reset(),B.value.$reset(),q.value.$reset()}function J(e){return e.replace(/([A-Z])/g," $1").replace(/^./,o=>o.toUpperCase()).trim()}function Se(e,o){o.type==="number"&&Re(e)}return(e,o)=>{const ke=Me,V=De,te=Ve;return l(),i("div",je,[b.value!=="success"?(l(),i("h1",Fe,a(e.$t("UpgradeSim.title")),1)):d("v-if",!0),b.value!=="phone"&&b.value!=="success"?(l(),i("div",We,[s("div",He,[A(Ie,{msisdn:u.value.msisdn},null,8,["msisdn"]),s("button",{type:"button",class:"btn btn-light btn-xs",onClick:H,disabled:p.value},a(e.$t("common__modify")),9,Je)])])):d("v-if",!0),b.value==="phone"?(l(),i("div",Ke,[s("p",Ge,a(e.$t("UpgradeSim.subtitle")),1),s("form",{onSubmit:I(ve,["prevent"])},[s("div",Qe,[s("label",Xe,a(e.$t("common__phoneNumber")),1),A(ke,{modelValue:u.value,"onUpdate:modelValue":o[0]||(o[0]=r=>u.value=r),validator:C(Z),disabled:p.value,"hide-labels":!0,"full-width":!0,"country-ids":R},null,8,["modelValue","validator","disabled"])]),X.value?(l(),i("div",Ze,[O(s("input",{"onUpdate:modelValue":o[1]||(o[1]=r=>k.value=r),disabled:p.value,class:"form-check-input",type:"checkbox",id:"esimCompatibleCheckbox",required:ue.value},null,8,Ye),[[qe,k.value]]),s("label",es,[g(a(e.$t("eSIM.compatibleCheckbox"))+" ",1),s("a",ss,a(e.$t("eSIM.compatibleCheckboxLink")),1)])])):d("v-if",!0),A(V,{type:"submit",class:"btn btn-primary",disabled:p.value,submitting:v.value},{default:N(()=>[g(a(e.$t("continue")),1)]),_:1},8,["disabled","submitting"])],32)])):d("v-if",!0),b.value==="otp"?(l(),i("div",as,[s("form",{onSubmit:I(pe,["prevent"])},[A(te,{modelValue:E.value,"onUpdate:modelValue":o[2]||(o[2]=r=>E.value=r),destination:C(le)(u.value.msisdn),validator:C(F),onResend:be,class:"mb-4",disabled:p.value},null,8,["modelValue","destination","validator","disabled"]),s("div",ts,[s("button",{type:"button",class:"btn btn-light",onClick:H,disabled:p.value},a(e.$t("common__goBack")),9,ls),A(V,{type:"submit",class:"btn btn-primary",disabled:p.value,submitting:v.value},{default:N(()=>[g(a(e.$t("common__submit")),1)]),_:1},8,["disabled","submitting"])])],32)])):d("v-if",!0),b.value==="emailOtp"?(l(),i("div",is,[s("form",{onSubmit:I(ge,["prevent"])},[A(te,{modelValue:$.value,"onUpdate:modelValue":o[3]||(o[3]=r=>$.value=r),destination:w.value,validator:C(W),onResend:he,class:"mb-4",disabled:p.value},null,8,["modelValue","destination","validator","disabled"]),s("div",rs,[s("button",{type:"button",class:"btn btn-light",onClick:o[4]||(o[4]=r=>b.value="address"),disabled:p.value},a(e.$t("common__goBack")),9,os),A(V,{type:"submit",class:"btn btn-primary",disabled:p.value,submitting:v.value},{default:N(()=>[g(a(e.$t("UpgradeSim.acceptEmailDelivery")),1)]),_:1},8,["disabled","submitting"])])],32)])):d("v-if",!0),b.value==="address"?(l(),i("div",ds,[m.value==="default"?(l(),i("div",ns,[s("p",us,a(y.value?e.$t("UpgradeSim.emailExplanation"):e.$t("UpgradeSim.addressExplanation")),1),s("div",ms,[s("div",cs,[s("h5",vs,a(y.value?e.$t("UpgradeSim.deliveryEmailTitle"):e.$t("UpgradeSim.deliveryAddressTitle")),1),s("div",ps,[y.value?(l(),i("div",bs,[o[10]||(o[10]=s("strong",null,"Email:",-1)),g(" "+a(t.deliveryEmailAddress),1)])):(l(!0),i(U,{key:1},x(t.deliveryAddress,(r,c)=>(l(),i(U,{key:c},[r?(l(),i("div",ys,[s("strong",null,a(J(c))+":",1),g(" "+a(r),1)])):d("v-if",!0)],64))),128))])])]),s("div",fs,[A(V,{class:"btn btn-primary",disabled:p.value,submitting:v.value,onClick:ee},{default:N(()=>[g(a(y.value?e.$t("UpgradeSim.acceptEmailDelivery"):e.$t("UpgradeSim.acceptDelivery")),1)]),_:1},8,["disabled","submitting"]),t.allowCustomAddress?(l(),i("button",{key:0,t
1ype:"button",class:"btn btn-outline-primary",onClick:o[5]||(o[5]=r=>m.value="custom"),disabled:p.value},a(y.value?e.$t("UpgradeSim.changeDeliveryEmail"):e.$t("UpgradeSim.changeDeliveryAddress")),9,gs)):d("v-if",!0)])])):d("v-if",!0),m.value==="custom"?(l(),i("div",hs,[s("p",_s,a(y.value?e.$t("UpgradeSim.customEmailExplanation"):e.$t("UpgradeSim.customAddressExplanation")),1),s("form",{onSubmit:o[8]||(o[8]=I(r=>y.value?fe():ye(),["prevent"]))},[y.value?(l(),i("div",Ss,[s("label",ks,a(e.$t("common__email")),1),O(s("input",{"onUpdate:modelValue":o[6]||(o[6]=r=>M.value=r),type:"email",class:"form-control",id:"customEmail",placeholder:e.$t("common__email")},null,8,As),[[ie,M.value]]),C(q).$error?(l(),i("label",Cs,a(C(q).$errors[0].$message),1)):d("v-if",!0)])):(l(),i("div",Es,[(l(!0),i(U,null,x(ce.value,r=>(l(),i("div",{key:r.key,class:re(r.colClass)},[s("label",{for:"input"+r.key,class:"form-label"},a(r.label),9,$s),r.type==="select"?O((l(),i("select",{key:0,"onUpdate:modelValue":c=>P.value[r.key]=c,class:"form-select",id:"input"+r.key},[s("option",Us,a(e.$t("common__select")),1),(l(!0),i(U,null,x(r.options,c=>(l(),i("option",{key:c,value:c},a(c),9,Ts))),128))],8,ws)),[[Be,P.value[r.key]]]):O((l(),i("input",{key:1,"onUpdate:modelValue":c=>P.value[r.key]=c,placeholder:r.label,type:"text",class:"form-control",id:"input"+r.key,onBeforeinput:c=>Se(c,r)},null,40,Ps)),[[ie,P.value[r.key]]]),C(B)[r.key].$error?(l(),i("label",Vs,a(C(B)[r.key].$errors[0].$message),1)):d("v-if",!0)],2))),128))])),s("div",Ds,[A(V,{type:"submit",class:"btn btn-primary",disabled:p.value,submitting:v.value},{default:N(()=>[g(a(y.value?e.$t("UpgradeSim.confirmCustomEmailDelivery"):e.$t("UpgradeSim.confirmCustomDelivery")),1)]),_:1},8,["disabled","submitting"]),(y.value?t.deliveryEmailAddress:t.deliveryAddress)?(l(),i("button",{key:0,type:"button",class:"btn btn-outline-secondary",onClick:o[7]||(o[7]=r=>m.value="default"),disabled:p.value},a(y.value?e.$t("UpgradeSim.useDefaultEmail"):e.$t("UpgradeSim.useDefaultAddress")),9,Ns)):d("v-if",!0)])],32)])):d("v-if",!0),m.value==="unavailable"?(l(),i("div",Ms,[s("div",xs,a(k.value?e.$t("UpgradeSim.noAddressAvailableEsim"):e.$t("UpgradeSim.noAddressAvailable")),1),s("div",Ls,[s("a",qs,a(e.$t("UpgradeSim.findPhysicalStores")),1)])])):d("v-if",!0),m.value==="ineligible"?(l(),i("div",zs,[s("div",{class:re(["alert mb-0",t.upgraded?"alert-success":"alert-warning"])},a(t.eligibilityMessage),3),t.upgraded?d("v-if",!0):(l(),i("div",Bs,[s("a",Os,a(e.$t("UpgradeSim.findPhysicalStores")),1)]))])):d("v-if",!0),m.value==="esimNotAvailable"?(l(),i("div",Is,[s("div",Rs,a(e.$t("UpgradeSim.esimNotAvailable")),1),s("p",js,a(e.$t("UpgradeSim.addressExplanation")),1),t.deliveryAddress?(l(),i("div",Fs,[s("div",Ws,[s("h5",Hs,a(e.$t("UpgradeSim.deliveryAddressTitle")),1),s("div",Js,[(l(!0),i(U,null,x(t.deliveryAddress,(r,c)=>(l(),i(U,{key:c},[r?(l(),i("div",Ks,[s("strong",null,a(J(c))+":",1),g(" "+a(r),1)])):d("v-if",!0)],64))),128))])])])):d("v-if",!0),s("div",Gs,[t.deliveryAddress?(l(),ze(V,{key:0,class:"btn btn-primary",disabled:p.value,submitting:v.value,onClick:ee},{default:N(()=>[g(a(e.$t("UpgradeSim.acceptDelivery")),1)]),_:1},8,["disabled","submitting"])):d("v-if",!0),t.allowCustomAddress?(l(),i("button",{key:1,type:"button",class:"btn btn-outline-primary",onClick:o[9]||(o[9]=r=>m.value="custom"),disabled:p.value},a(e.$t("UpgradeSim.changeDeliveryAddress")),9,Qs)):d("v-if",!0)]),!t.deliveryAddress&&!t.allowCustomAddress?(l(),i("div",Xs,a(k.value?e.$t("UpgradeSim.noAddressAvailableEsim"):e.$t("UpgradeSim.noAddressAvailable")),1)):d("v-if",!0)])):d("v-if",!0)])):d("v-if",!0),b.value==="success"?(l(),i("div",Zs,[s("div",Ys,[s("div",ea,a(y.value?e.$t("UpgradeSim.emailSuccessTitle"):e.$t("UpgradeSim.successTitle")),1),s("p",sa,a(t.message),1),y.value&&z.value?(l(),i("p",aa,[g(a(e.$t("UpgradeSim.emailSuccessWhatsapp",{number:""}))+" ",1),s("a",{href:me.value,target:"_blank",rel:"noopener noreferrer"},a(z.value),9,ta),o[11]||(o[11]=g(". "))])):d("v-if",!0),s("div",la,[s("table",ia,[s("tbody",null,[s("tr",null,[s("td",null,a(e.$t("common__phoneNumber")),1),s("td",null,a(C(le)(u.value.msisdn)),1)]),y.value&&t.finalEmailAddress?(l(),i("tr",ra,[o[12]||(o[12]=s("td",null,"Email",-1)),s("td",null,a(t.finalEmailAddress),1)])):t.finalAddress?(l(!0),i(U,{key:1},x(t.finalAddress,(r,c)=>(l(),i(U,{key:c},[r?(l(),i("tr",oa,[s("td",null,a(J(c)),1),s("td",null,a(r),1)])):d("v-if",!0)],64))),128)):d("v-if",!0)])])])]),s("div",da,[s("button",{type:"button",class:"btn btn-light",onClick:H,disabled:p.value},a(e.$t("common__goBack")),9,na)])])):d("v-if",!0)])}}}),ma=we(ua,[["__scopeId","data-v-40c3c832"]]),ca=Object.freeze(Object.defineProperty({__proto__:null,default:ma},Symbol.toStringTag,{value:"Module"})),wa={isClientRuntimeLoaded:{type:"computed",definedAtData:null,valueSerialized:{type:"js-serialized",value:!0}},onBeforeRenderEnv:{type:"computed",definedAtData:null,valueSerialized:{type:"js-serialized",value:{server:!0}}},dataEnv:{type:"computed",definedAtData:null,valueSerialized:{type:"js-serialized",value:null}},onRenderClient:{type:"standard",definedAtData:{filePathToShowToUser:"/renderer/+onRenderClient.ts",fileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:Pe}},onPageTransitionStart:{type:"standard",definedAtData:{filePathToShowToUser:"/renderer/+onPageTransitionStart.ts",fileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:Te}},onPageTransitionEnd:{type:"standard",definedAtData:{filePathToShowToUser:"/renderer/+onPageTransitionEnd.ts",fileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:Ue}},Page:{type:"standard",definedAtData:{filePathToShowToUser:"/pages/lte-migration/delivery/+Page.vue",f
1ileExportPathToShowToUser:[]},valueSerialized:{type:"plus-file",exportValues:ca}},hooksTimeout:{type:"standard",definedAtData:{filePathToShowToUser:"/renderer/+config.ts",fileExportPathToShowToUser:["default","hooksTimeout"]},valueSerialized:{type:"js-serialized",value:{data:{error:35e3,warning:!1}}}}};export{wa as configValuesSerialized};
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.