PageSourceSearch

https://paiq.nl/d/j/admin.Dcv4AqMX.js

js paiq.nl collected 2026-10-06 05:03:08 UTC 98,053 bytes, 8 lines download raw bytes

1import{a as e,A as B,q as n,T as w,s as Q,e as y,u as U,v as ct,w as b,x as Je,y as te,V as q,z as pt,U as A,C as T,D as se,E as le,F as L,b as Le,G as O,$ as ue,H as Oe,I as ut,r as F,J as ae,l as de,K as S,L as me,M as ee,N as mt,O as Pe,P as ie,Q as ht,R as Xe,S as ft,W as Ze,X as D,Y as he,Z as Be,_ as Re,a0 as G,f as ge,a1 as gt,a2 as X,a3 as xt,a4 as Se,a5 as xe,a6 as ve,a7 as vt,a8 as bt,a9 as yt,aa as wt,ab as kt,ac as Mt,ad as At,ae as ze,af as $t,d as Tt,ag as ye,ah as Ct,ai as Ue,aj as St,ak as zt}from"./boot.CeMMhjyN.js";import{s as et}from"./showLightbox.C6XJjdoQ.js";import{u as De}from"./undo.BSm8Z6Ed.js";import{b as Et,h as Bt}from"./headshot.icon.B-3er90S.js";import{r as Ve,c as Dt,a as H,b as Ie}from"./adminWidgets.D3wpEvBg.js";import{c as tt,P as He}from"./photoTypes.CQjr_GRo.js";import{s as It}from"./contactList.Dxv6Uh3k.js";import{a as Lt}from"./appearance.icon.zGS0z7el.js";import{b as Pt}from"./boost.icon.s0pQAyWv.js";import{c as Ee}from"./countdownRing.DcAhC-pp.js";import{r as Rt}from"./chatMessage.J4QH5ktH.js";import{d as Ut}from"./delete.icon.BwUWYzgR.js";import{L as Vt}from"./logList.Jak3Xshy.js";import"./icebreaker.icon.BwkF-zdC.js";import"./phone.icon.C9NWneI-.js";e.insertGlobalCss({".add-credits-section":"padding-left:10px",".add-credits-section:not(:first-child)":"margin-top:20px"});B.credits=t=>{var i;const s=e.proxy("");t.setAllowCancel(!0),t.setTitle(n("Give credits"));const o=(i=t.args)==null?void 0:i[0];e("div",()=>{const r=e.proxy(o?1:void 0);let a=null,l=null,p=null;const u=(f,x)=>{e("div",()=>{e("display:flex align-items:center padding: 12px 0;"),e("input",()=>{e("margin: 0 10px;"),e("type=","radio","name=","who","value=",f);const k=e();e(()=>{r.value===f&&(k.checked=!0)}),e("change=",()=>{k.checked&&(r.value=f)})}),e("div",()=>{e("flex: 1 0 0px;"),ct(x)}),b(()=>{r.value=f})})},m=(f,x)=>{e("div",()=>{e("h2","#",f),e(".add-credits-section"),x()})};m(n("Who"),()=>{u(1,()=>{a=U({value:o,label:n("user id"),style:{marginTop:"10px"}})}),u(2,n("Online users"))}),m(n("What"),()=>{l=U({value:5,label:n("amount")})}),m(n("Why"),()=>{p=U({value:"<b>"+n("Bonus credits awarded!")+"</b>",label:n("reason")})}),e("div",()=>{e("margin: 5px 0; min-height:20px","color:",w.colour("primary")),e("#",s.value)});const c=f=>{s.value=n("Busy..."),y.send("Admin.addCredits",f,+l.getValue(),p.getValue(),x=>{s.value=x||n("Done!"),t.close()})};t.setButtons([{text:n("Make it so!"),cb:()=>(r.value===2?Q(n("Are you sure you want to give credits to *everyone* currently online?"),()=>{c("all")}):a.getValue()?c(a.getValue()):s.value=n("No user id entered"),!1)}])})};B.userPhotos=(t,s)=>{const o=e.proxy({}),i=y.send("Photo.streamList",Je(o),s);e.clean(()=>{y.closeChannels(i)}),t.setTitle(n("Photos - Laden...")),e(()=>{o.userName&&t.setTitle(n("Photos - %1",o.userName)),e.onEach(o.photos??{},(r,a)=>{r.deleted||B.renderPhoto(r,s,o.userName)},r=>[r.type==="headshot"?0:1,r.ratings<3?1:0,-((r.score??0)*Math.max(.5,1-.1*(te()-r.uploadTime)/(365.25*86400)))])})};const ot=(t,s)=>{const o=e.peek(t,"type");t.type=s,De({text:n("Type set to '%1'",s),unpredict:()=>{t.type=o},undoText:n("Undo")},"Photo.changeType",t.id,s)},we=120;B.renderPhoto=(t,s,o)=>{e("div",()=>{e("display:flex align-items:center margin: 10px 0 0 0;"),e("div",()=>{e("background-repeat:no-repeat background-position: center center; background-size:cover position:relative border-radius:10px margin-right:5px","background-image:",`url(${t.url})`,"min-width:",`${we}px`,"width:",`${we}px`,"height:",`${we}px`),b(()=>{et(s,t.id)}),e("div",()=>{e("background: linear-gradient(to bottom, rgba(0,0,0,0) 0%, rgba(0,0,0,0.8) 90%); position:absolute bottom:0 width:100% text-align:center height:20px padding: 7px 0 3px; border-radius: 0px 0px 10px 10px;"),e("div",()=>{e("display:flex flex-direction:column align-items:center"),e("div",()=>{e("color:white font-size:smaller display:flex align-items:center");const i={headshot:Bt,bodyshot:Et,other:pt};q.render({icon:i[t.type],size:20,color:"white"}),e("div",()=>{e("margin: 0 4px;");const r=t.ratings>3?t.score:"?";e("#",n("%1 (%2x)",r,t.ratings))})})})})}),e("div",()=>{e("padding: 10px 0;");const i={};
1(e.peek(t,"type")==="headshot"||tt(t.width,t.height))&&(i.headshot=n("headshot")),i.bodyshot=n("bodyshot"),i.other=n("other"),A.renderMultipleChoice({answers:i,initialValue:e.peek(t,"type"),onChange:r=>ot(t,r)})}),e("div",()=>{e("flex: 1 0 0px;"),e("div",()=>{e("display:flex align-items:center margin-left:40px"),Ve({content:"TinEye",photoId:t.id,searchUrl:i=>`http://www.tineye.com/search?url=${encodeURIComponent(i)}`}),Ve({content:"Yandex",photoId:t.id,searchUrl:i=>`https://yandex.com/images/search?rpt=imageview&url=${i}`})}),A.renderButton(n("Delete"),()=>{T(n("Delete Photo?"),i=>{e("div",()=>{e("#",n("Write a message for %1 (empty = no message; cancel = don't delete).",o))});let r=null,a=null;e("div",()=>{e("margin: 20px 0;"),r=U({label:n("message to %1",o),startFocused:!0})});let l=null;e("div",()=>{l=A.renderCheckBox({content:n("This is a photo of someone else"),initialValue:!1}),e(()=>{l.getValue()?a=U({label:n("Celebrity's name (optional):")}):a=null})}),i.setAllowCancel(!0),i.setButtons([{text:"cancel"},{text:"delete",cb:()=>{const p={reason:r.getValue(),faker:l.getValue(),celebName:(a==null?void 0:a.getValue())??""};y.send("Photo.disapprove",t.id,p),t.deleted=!0}}])})})})}),e("div",()=>{e("width:120px text-align:center font-size:0.6em margin-bottom:10px"),e("#",se(t.uploadTime,"Y-M-D h:m"))})};le({"Admin.userPhotos":B.userPhotos});const Ht={raw:'<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg" fill="currentColor"><path d="M0 0h24v24H0z" fill="none"/><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"/></svg>',name:"error"},Ft={raw:'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path fill="none" d="M0 0h24v24H0z"/><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm-1 4l6 6v10c0 1.1-.9 2-2 2H7.99C6.89 23 6 22.1 6 21l.01-14c0-1.1.89-2 1.99-2h7zm-1 7h5.5L14 6.5V12z"/></svg>',name:"file-copy"},Nt=e.insertCss({"&":"user-select:text","&.split > div":"flex: 1 1 50%;",td:"padding-right:5px",th:"text-align:left",".button":"margin-bottom:10px",".title-row":"font-weight:bold font-size:1.2em",".title-row > div":"padding: 20px 0 10px;",".info-row > div:first-child":"font-weight:bold white-space:nowrap","&.large .info-table":"display:table margin: 10px 0 20px; table-layout:fixed","&.large .info-row":"display:table-row padding-bottom:8px","&.large .info-row > div":"display:table-cell vertical-align:top word-wrap:break-word","&.large .info-row > div:first-child":"padding-right:10px text-align:right width:10%","&.large .title-row":"display:table-row","&.large .title-row > div":"display:table-cell width:20%"}),j=n("-");B.user=(t,s)=>{e(".admin-page");const o=e.proxy({}),i=e.proxy(!0),r=()=>{y.send("AdminUserInfo.get",s,a=>{e.copy(o,a??{}),i.value=!1})};r(),e(()=>{if(i.value)return L();e(Nt),e(()=>{const a=Le.windowWidth>1200;e({["."+(a?"split":"no-split")]:!0}),e("display:flex flex-direction:",a?"row":"column"),t.setWidthHint(Math.min(a?1500:750,Math.round(.9*Le.windowWidth))),e({["."+(t.width()>=400?"large":"small")]:!0})}),e(()=>{o.name!=null&&t.setTitle(()=>{e("user-select:text"),e("#",n("%1 (%2) - ",o.name,s)),e("span",()=>{const l=o.userType;e("color:",w.membership(l)),e("#",l)}),o.purged?(e("#"," - "),e("span",()=>{e("color:",w.colour("bad")),e("#",n("PURGED"))})):o.state!=="active"&&(e("#"," - "),e("span",()=>{e("color:",w.colour(o.state==="passive"?"warn":"bad")),e("#",o.state.toUpperCase())}));let a;o.spending>300?a="€€€":o.spending>100?a="€€":o.spending>10&&(a="€"),a&&(e("#"," - "),e("span",()=>{e("color:",w.colour("primary")),e("#",a)}))})}),e("div",()=>{const a=u=>{e("div",()=>{e(".title-row"),e("div","#",u)})},l=(u,m)=>{e("div",()=>{e(".info-row");for(const c of[u,m])e("div",()=>{typeof c=="function"?c():e("#",c)})})},p=(u,m)=>{const c=e.proxy(!0);e("div",()=>{e(".collapsed-info"),a(u+(c.value?" +":" -")),b(()=>{c.value=!e.peek(c,"value")})}),e(()=>{c.value||m()})};e(()=>{const u=e.proxy(void 0),m=e.proxy({}),c=e.proxy({});e(()=>{u.value=void 0,e.copy(m,{}),e.copy(c,{});for(const[f,x]of Object.entries(o.photos))x.deletedByAdmin?O(c,f,x):e.peek(u,"value")?O(m,f,x):u.value=x;
1e.peek(u,"value")||(u.value={largeUrl:o.photo})}),e("div",()=>{e("margin:-3px");const f=(x,k,$=!0)=>{const v=()=>{e("div",()=>{e("position:relative background-repeat:no-repeat background-size:cover background-position: 50% 50%; display:inline-block border-radius:15px margin:3px","background-image:",`url(${x.largeUrl})`,"width:",`${k}px`,"height:",`${k}px`),x.validated&&q.render({icon:ft,size:Math.round(k/6),color:w.colour("good"),style:{position:"absolute",bottom:"3px",right:"3px",filter:"drop-shadow(0px 0px 2px rgba(0,0,0,0.8))"},alt:"Geverifieerd",testMarker:"admin-photo-validated"}),x.type==="validate"&&e("div",()=>{e("position:absolute bottom:0 width:100% text-align:center font-size:0.6em color:white padding: 5px 0 3px; border-radius: 0 0 15px 15px; background: linear-gradient(to bottom, rgba(0,0,0,0) 0%, rgba(0,0,0,0.8) 90%);"),e("#",n("verification photo"))})})};$&&o.photos.length?e("a",()=>{e("margin-right:3px padding:0"),e("href=","/Admin.userPhotos/"+s),v(),b(d=>{F("Admin.userPhotos",s),ee(d)})}):e("span",()=>{e("margin-right:3px padding:0"),v()})};e("div",()=>{e("display:flex"),f(u.value,200),e("div",()=>{e("flex: 1 0 0px;"),e.onEach(m,(x,k)=>{f(x,97)})})}),e("div",()=>{let x;(x=e.count(c).value)!==0&&(e("margin:3px"),A.renderActionButton(n("View %1 deleted photo|s",x),()=>{T(k=>{k.setTitle(n("Deleted photos of %1 (%2)",o.name,s)),e(".admin-page"),e("display:flex flex-wrap:wrap"),e.onEach(c,($,v)=>{f($,150,!1)})})}))})}),e("div",()=>{e(".info-table"),a(n("User info")),l("Age",()=>{e("span",()=>{e("#",n("%1 +%2d",o.age,o.ageRest));const d=e();b(()=>{const h=["January","February","March","April","May","June","July","August","September","October","November","December"],g=new Date(he(o.birthdate)*1e3);Be(d,`${g.getDate()} ${h[g.getMonth()]} ${g.getFullYear()}`)})})}),l("Email",()=>{e("#",o.email);const d=e.proxy([]),h=e.proxy(!0);y.send("User.getOtherAccounts",o.userId,g=>{e.copy(d,g??[]),h.value=!1}),e(()=>{if(h.value){e("#","...");return}const g=e.count(d).value;g&&e("a",()=>{e("#",n("(%1 more)",g)),b(()=>{Wt(o,d)})})})}),l("Genders",()=>{e("div",()=>{e("display:flex align-items:center"),e("div",()=>{e("a",()=>{e("#",o.gender),b(()=>{o.gender=e.peek(o,"gender")==="F"?"M":"F",y.send("Questions.adminAnswer",s,{isGender:{M:1,F:2}[e.peek(o,"gender")]})})}),e("#",n(" → ")),e("a",()=>{const h=e.proxy((o.wantsM?"M":"")+(o.wantsF?"F":""));e(()=>{e("#",h.value)}),b(()=>{h.value=(g=>({M:"F",F:"MF"})[g]||"M")(e.peek(h,"value")),y.send("Questions.adminAnswer",s,{wantsGender:{M:1,F:2,MF:3}[e.peek(h,"value")]})})})});let d;(d=o.ageRange)&&e("div",()=>{e("font-size:0.9em margin-left:5px");const h=Math.floor((Re(te())-d[1])/365.25),g=Math.floor((Re(te())-d[0])/365.25);e("#",n(" (%1 - %2)",h,g))})})}),l("Status",o.status),l("Last online",()=>{e("a",()=>{e("href=",`/ShowSessionManager/${o.userId}/true`);let d;(d=o.onlineTime)===!0?e("#","now"):S({time:d,tooltip:!1}),b(h=>{ee(h),me("sessions",({showModalSessions:g})=>g(s,!0))})})});let f="Registered",x=!1;o.firstRegisterTime!==o.registered&&(f="Re-registered",x=!0),l(f,()=>{S(o.registered)}),x&&l("First Seen",()=>{S(o.firstRegisterTime)}),l("Recent emails",()=>{e("a",()=>{e("#","view"),b(()=>co(s))})}),l("Notes",()=>{const d=!!e.peek(o,"adminNotes"),h=e.proxy(d);e(()=>{if(!h.value){e("a",()=>{e("padding-right:20px"),e("#","+"),b(()=>{h.value=!0})});return}const g=U({type:"multiline",value:o.adminNotes,startFocused:!d,style:{fontSize:"12pt"},label:n("Notes about %1",o.name),onBlur:()=>{y.send("Admin.setSupportNotes",s,g.getValue())}})})}),a(n("Debugging")),l("Live",()=>{const d=o.live;d.length?e("table",()=>{for(const h of d)(g=>{e("tr",()=>{e("td",()=>e("a",()=>{D("liveClient"),e("#",g.id),b(()=>F("Admin.clientLog",g.id))})),e("td","#",g.agent),e("td","#",n("(%1)",g.ip))})})(h)}):e("#",j)}),l("Server log",()=>{A.renderLink(n("view"),()=>{T(d=>B.log(d,s))})}),l("User log",()=>{e("a",()=>{e("#","view"),b(()=>{jt(o)})})});const k=ht(s);k&&l("Bug reports",()=>{e("a",()=>{e("#","view"),e("href=",k,"target=","_blank")})}),a("Matching"),l("Answers",()=>{e("a",()=>{e("#",n("view %1",o.dataComplete?"":"(incomplete)")),b(()=>{me("questions",({userAnswers:d})=>{T(h=>{h.setTitle(n("%1's answers",o.name)),d(h,s)})})})})}),l("Matcher Output",()=>{e("a",()=>{e("href=",`/Admin.matcher/${s}`),e("#","view"),b(d=>{F("Admin.matcher",s),ee(d)})})}),l("Offers",()=>{e("a",()=>{e("#","view"),b(()=>Jt(s))})}),a(n("Admission")),l("State",()=>{e("#",o.state),o.deletedTime&&e("span",()=>{e("margin-left:5px"),e("#",n("since ")),S(o.deletedTime)})}),l("Required",()=>{e("a",()=>{D("admission-summary"),_t(o.admission),b(()=>Kt(s,o.msisdn,r))})}),l("Phone",()=>{e("a",()=>{e("#",o.msisdn??j),b(()=>xo(s))})}),l("When to call",o.whenToCall),l("Reports",()=>Fe(o.reportsAbout,s,"")),l("Reported others",()=>Fe(o.reportsBy,s,"by")),a("Payments"),l("Credit History",()=>{e("a",()=>{e("#","view"),b(()=>{nt(n("Credit History"),"Credits.getHistory",s,n("History of credits expenditure (last 50 max), from recent to old:"),[{title:n("Time"),name:"time"},{title:n("Amount"),name:"amount"},{title:n("Type"),name:"type"},{title:n("Info"),name:"info"}])})})}),l("Credits",()=>{e("table",()=>{e.onEach(o.credits??{},(d,h)=>{h!=="remaining"&&e("tr",()=>{e("td","#",h),e("td","#",d.cnt+"×"),e("td","#",d.amount)})}),e("td",()=>{e("font-weight:bold"),e("#",n("Remaining: "))}),e("td","#"),e("td",()=>{var d;e("font-weight:bold"),e("#",((d=o.credits)==null?void 0:d.remaining)??0)})})}),l("Payments",()=>{e("a",()=>{e("#","view"),b(()=>{Qt(s)})})}),l(n("Chargeback ban"),()=>{e("a",()=>
1{e("#",o.mandatesBanned?n("yes"):n("no")),b(()=>{const d=!e.peek(o,"mandatesBanned");O(o,"mandatesBanned",d),y.send("AdminUserInfo.setMandatesBanned",s,d)})})}),a("Membership"),l("Membership",()=>{const d=o.membership??{};if(d.type==="basic"){e("#",j);return}const h=new Date(he(d.expires)*1e3);if(e("#",n("type=%1, expires=%2, ",d.type,`${h.getDate()}-${h.getMonth()+1}-${h.getFullYear()}`)),d.monthly){const g=Math.floor(d.monthly/100);e("#",n("monthly=€%1",g));let z;(z=d.monthly%100)&&e("#",n(",%1",z))}else G(n("**not recurring**"))}),l("History",()=>{e("a",()=>{e("#","view"),b(()=>{T(d=>mo(d,s))})})});const $=e.proxy(!1);l("Boosts",()=>{let d;(d=o.boosts)?$.value?po(d):e("a",()=>{e("#","view"),b(()=>{$.value=!0})}):e("#","none")}),p(n("Extra info"),()=>{l("Google login",()=>{e("#",o.loginGoogle?"yes":j)});const d=e.proxy(!1);l("Email settings",()=>{d.value?e("table",()=>{for(const[E,C]of Object.entries(o.emailSettings))e("tr",()=>{e("td","#",E);let I;switch(C){case 1:I="Yes";break;case 0:I="No";break;case"daily":I="Daily";break;case"3daily":I="Every 3 days";break;case"weekly":I="Once a week";break}e("td","#",I)})}):e("a",()=>{e("#","view"),b(()=>{d.value=!0})})});const h=e.proxy(!1);l("Tip data",()=>{h.value?e("table",()=>{for(const[E,C]of Object.entries(JSON.parse(o.tipData)))e("tr",()=>{e("td","#",n("%1: ",E)),C===!1?e("td",()=>{e("#",n("never"))}):e("td",()=>S(he(C)))})}):e("a",()=>{e("#","view"),b(()=>{h.value=!0})})});const g=o.histogram;l("Score range",g.length===0?"n/a":n("%1 - %2",g[0],g[1]));const z=o.dealbreakers;l("Dealbreakers",z?`exclude ${z.percent}% of the ${z.pool} who don't exclude them`:"n/a"),l("City",()=>{e("a",()=>{e("#",o.city??"?"),b(()=>Zt(o))})}),l("Mandates",()=>{var I;const E=N=>{e(".admin-page"),e("table",()=>{e("width:100%"),e("tr",()=>{e("font-weight:bold"),e("td","#","Method "),e("td","#","Name "),e("td","#","Number ")});for(const M of o.paymentMandates)e("tr",()=>{e("td",()=>e("#",M.type)),e("td",()=>e("#",M.holderName)),e("td",()=>e("#",M.cardNumber))})})};let C;(C=(I=o.paymentMandates)==null?void 0:I.length)?e("a",()=>{e("#",C),b(()=>{T(E)})}):e("#",j)});const V=e.proxy(!1);l("Discounts",()=>{e(()=>{if(V.value){let E=!1;for(let C of o.membershipDiscounts){E=!0,C=ge(C);let I=C.type+": ";const N=[];C.initialFee&&N.push(C.initialFee+"% initial"),C.monthly&&N.push(C.monthly+"% monthly"),I+=N.join(", "),e("div",()=>{e("#",I),C.endTime&&(e("#"," tot "),S(C.endTime))})}for(let C of o.creditsDiscounts)E=!0,e("div",()=>{C=ge(C),e("#",C.multiplier+"× tot "),S(C.endTime)});E||e("div","#","None")}else e("a",()=>{e("#","view"),b(()=>{V.value=!0})})})}),l(n("Karma"),()=>{for(const[E,C]of Object.entries(o.karma))e("div",()=>{e("#",n("%1: %2",E,C))})}),l(n("Satisfaction"),o.satisfaction)}),a(n("Games")),l("Matchtime",()=>{S(o.matchTime)}),l("Opener",()=>{var d,h;o.opener?(e("b","#",(d=o.opener)==null?void 0:d.question),e("br"),e("#",(h=o.opener)==null?void 0:h.answer),e("div",()=>{var g;e("font-size:0.9em"),e("#",n("last edit: ")),S((g=o.opener)==null?void 0:g.edited)}),e("div",()=>{e("a",()=>{e("#",n("delete?"))}),b(()=>{Q(n("Are you sure?"),()=>{y.send("AdminUserInfo.removeOpener",o.userId,g=>{g&&O(o,"opener",null)})})})})):e("#",j)}),l("Current quizzes",()=>{if(e.count(o.quizzes??{}).value){const d=e.derive(()=>Object.values(o.quizzes).filter(g=>g.deleted).length),h=e.derive(()=>e.count(o.quizzes??{}).value-d.value);e("a",()=>{h.value?d.value?e("#",n("%1 (+ %2 deleted) - %3",h.value,d.value,o.allowQuizResponses?"active":"inactive")):e("#",n("%1 - %2",h.value,o.allowQuizResponses?"active":"inactive")):e("#",n("(%1 deleted)",d.value)),b(()=>eo(o))})}else e("#",j)}),l("Quizzes done",()=>{var h;let d;(d=(h=o.quizzesDone)==null?void 0:h.total)?e("span",()=>{e("a",()=>{e("#",d),b(()=>Ne(s,!1))}),e("span",()=>{e("margin: 0 8px; font-size:0.9em"),e.onEach(o.quizzesDone??{},(g,z)=>{z!=="total"&&(z==="completed"&&+g.value!=0?e("a",()=>{e("margin: 0 4px;"),e("#",n("%1×%2",g.value,z.substring(0,4))),b(()=>{je(s,!1)})}):e("span",()=>{e("margin: 0 4px;"),e("#",n("%1×%2",g.value,z.substring(0,4)))}))})})}):e("#",j)}),l("Quiz received",()=>{var h;let d;(d=(h=o.quizzesReceived)==null?void 0:h.total)?(e("a",()=>{e("#",d),b(()=>Ne(s,!0))}),e("span",()=>{e("margin: 0 8px; font-size:0.9em"),e.onEach(o.quizzesReceived??{},(g,z)=>{z!=="total"&&(z==="completed"&&+g.value!=0?e("a",()=>{e("margin: 0 4px;"),e("#",n("%1×%2",g.value,z.substring(0,4))),b(()=>{je(s,!0)})}):e("span",()=>{e("margin: 0 4px;"),e("#",n("%1×%2",g.value,z.substring(0,4)))}))})})):e("#",j)}),l("Moments",()=>{const d=o.moments??{};let h;if(h=e.count(d.moments??{}).value){e("a",()=>{e("#",h),b(()=>{to(d.moments)})});const g=d.offenseTimeout;g&&(e("#"," timeout: "),S(g))}else e("#",j)}),l(n("Moments viewed"),()=>{let d;(d=o.momentViews)?e("span",()=>{e("a",()=>{e("#",d),b(()=>Ot(s))});let h;(h=o.momentComments)&&e("span",()=>{e("margin: 0 8px; font-size:0.9em"),e("a",()=>{e("margin: 0 4px;"),e("#",n("%1× commented",h)),b(()=>{Xt(s)})})})}):e("#",j)});const v=(d,h,g)=>
1{l(d,()=>{o[h]?e("a",()=>{e("#",n("%1 (view)",o[h])),b(()=>g(o))}):e("#",j)})};v(n("Photosquares done"),"photoSquaresCompleted",oo),v(n("Admirers"),"admirerCount",io),v(n("Received flirts"),"receivedFlirtCount",so),v(n("Sent flirts"),"sentFlirtCount",ro),v(n("Received deblocks"),"receivedDeblockCount",lo),v(n("Sent deblocks"),"sentDeblockCount",ao)})})}),e("div",()=>{e("h2","#","Tools");const a=o.state==="passive"||o.state==="active";a&&A.renderActionButton(n("Chat!"),()=>{var f;const c=()=>{y.load("Admin.contact",s,()=>{Xe.tryCloseAll(),It(s)})};+((f=ue.user)==null?void 0:f.id)===Oe||ut?c():Q(n("Are you sure you want to open this chat from your personal account?"),c)});const l=e.proxy(!1),p=e.proxy({});let u=!1;if(e.clean(()=>{u=!0}),e(()=>{if(l.value!==!1){if(e("h3","#",n("Amount of fakery")),l.value==="none")return e("#","nothing.");if(l.value==="loading")return L();e("table",()=>{e("width:100%"),e("tr",()=>{e("th","#",n("user")),e("th",()=>{q.render({icon:Dt,size:15,color:w.colour("text-strong",.7)})}),e("th",()=>{e("width:60%"),e("#",n("similarity"))})}),e.onEach(p,(c,f)=>{e("tr",()=>{e("td",()=>{e("font-size:0.9em");const x=c;x.userId=+f,H({user:x,custom:()=>{e("#",`${x.name} <${x.email}>`)},cb:()=>{x.adminDeregistered&&(e("font-weight:bold"),e("#"," *"))}})}),e("td",()=>{c.notes&&Ie(c.notes)}),e("td",()=>{if(c.report){let x=0;const k=[];for(const[$,v]of Object.entries(c.report))$==="*"?x=Math.round(v*10)/10:k.push(n("%1: %2",$,Math.round(v*10)/10));e("span",()=>{e("display:inline-block font-weight:bold margin-right:4px"),e("#",x)}),e("#",k.join(", "))}else e("#","calculating...")})})},(c,f)=>{var x;return[-(100*((x=c.report)==null?void 0:x["*"])|0),-f]})})}else A.renderActionButton(n("Faker check!"),()=>{l.value="loading",y.send("Admin.fakerCheck",s,c=>{if(!c.length){l.value="none";return}for(const{id:k,state:$,name:v,email:d,notes:h}of c)p[k]={state:$,report:!1,notes:h,name:v,email:d};l.value="list";const f=(k,$)=>{Ze(p,k,$),u||x()},x=()=>{let k;if(!(k=c.shift()))return;const{id:$}=k;y.send("Admin.fakerCheckInfo",s,$,v=>f($,v))};x()})})}),a){A.renderButton(n("Give Credits"),()=>{F("Admin.credits",s)});const c=e.proxy(!1);e(()=>{c.value||A.renderButton({content:n("Membership Discount!"),sub:n("no setup costs"),cb:()=>{Q(n("Are you sure you want to give %1 a discount?",o.name),()=>{y.send("Admin.membershipDiscount",s),c.value=!0})}})}),A.renderButton(n("Create offer"),()=>{Q(n("Are you sure?"),()=>{const f={text:n("Created offer"),undoText:n("Undo")};De(f,"Offer.admin",s)})}),A.renderButton(n("Free Membership!"),()=>Gt(o,r)),A.renderButton(n("Deregister!"),()=>{ke(o,s,n("Are you sure you want to deregister user %1?",s),"deregister",r)})}o.state==="blocked"?A.renderButton({content:n("Unblock!"),testMarker:"unblockAccount",cb:()=>{Q(n("Unblock user %1? The account stays deregistered, but their e-mail address and phone number become available for a new signup.",s),()=>{y.send("Admin.unblockAccount",s,c=>{c?r():ae("failed!")})})}}):A.renderButton({content:n("Block!"),testMarker:"blockAccount",cb:()=>ke(o,s,n("Block user %1? This deregisters the account, and refuses their e-mail address and phone number for new signups.",s),"block",r)}),!a&&!o.purged&&A.renderButton({content:n("Purge!"),testMarker:"purgeAccount",cb:()=>{Q(n("Purge user %1 now? Their personal data is thrown away for good, without waiting for the usual term.",s),()=>{y.send("Admin.purgeAccount",s,c=>{c?r():ae("failed!")})})}}),o.state!=="blocked"&&A.renderButton(n("Scammer!"),()=>{ke(o,s,n("Are you sure you want to deregister user %1 due to scamming?",s),"scammer",r)});const m=U({label:n("filter contacts"),style:{marginBottom:"10px"},onEnter:()=>{delete o.contacts,y.send("AdminUserInfo.getContacts",s,m.getValue(),c=>{de("Merging",e.peek(o,"contacts"),c.contacts),e.merge(o,c),de("Merged",e.peek(o,"contacts"))})}});e("h2",()=>{const c=e.count(o.contacts??{});e("#","Contacts"),o.contactCount!=null?e("#",n(" (%1 / %2)",c.value,o.contactCount)):o.userId&&(e("#","..."),y.send("AdminUserInfo.getContactCount",o.userId,(f=>{o.contactCount=f})))}),e(()=>{e("table",()=>{e("width:100% margin-bottom:10px"),e("tr",()=>{e("th","#",n("name")),e("th","#",n("status")),e("th",()=>{e("#",n("created / ")),e("span",()=>{e("font-weight:normal","color:",w.colour("bad")),e("#",n("deleted"))})}),e("th",()=>{e("text-align:center"),e("#",n("activity"))})}),e.onEach(o.contacts??{},(c,f)=>{const x=c.user??{};e("tr",()=>{c.active||e("opacity:0.7"),e("td",()=>{e("span",()=>{const k=c.active?{fontWeight:"bold"}:{};H({user:x,style:k},"name")}),e("#",`, ${x.age} - ${c.distance}km`)}),e("td",()=>{e("a",()=>{e("#",c.type),b(()=>{qt(c.contactId)})})}),e("td",()=>{c.blockTime?(e("color:",w.colour("bad")),S(c.blockTime)):S(c.startTime)}),e("td",()=>{e("text-align:center"),e("a",()=>{const k=c.cheatA==="true"?"*":"",$=c.cheatB==="true"?"*":"";e("#",n("%1%2 - %3%4",c.activityA|"?",k,c.activityB|"?",$)),b(v=>{me("chatHistory",({AdminChatHistory:d})=>{T(h=>{d(h,e.peek(o,"userId"),x.userId)})}),ee(v)})})})})},c=>-c.lastActivity)}),e(()=>{var c;(c=o.nextContact)!=null&&c.hasMore&&A.renderActionButton({content:n("Lo
1ad 50 More"),cb:()=>{y.load("AdminUserInfo.getContacts",s,m.getValue(),f=>{de("Merging",e.peek(o,"contacts"),f.contacts),e.merge(o,f),de("Merged",e.peek(o,"contacts"))},o.nextContact)}})})})})})};const jt=t=>{y.load("AdminUserInfo.getUserLog",t.userId,s=>{T(o=>{o.setTitle(n("User log (last 100)")),o.setWidthHint(1e3),e(".admin-page"),e("table",()=>{e("width:100%"),e("tbody",()=>{e("tr",()=>{e("font-weight:bold"),e("td",()=>e("#","time")),e("td",()=>e("#","type")),e("td",()=>e("#","data"))});for(const i of s)e("tr",()=>{e("td",()=>{S(i.time)}),e("td",()=>{e("#",i.type)}),e("td",()=>{const r=i.data!=null?ge(i.data):{};let a="";switch(i.type){case"switchType":a=n("%1 -> %2",r[0],r[1]);break;case"nameChange":a=r;break;case"answersChange":{let l=!0;for(const[p,u]of Object.entries(r))switch(l?l=!1:a+=`
2`,p){case"birthdate":case"birthdateMin":case"birthdateMax":{const m=gt.daysToAge(+u);switch(p){case"birthdateMax":a+=n("minimum ");break;case"birthdateMin":a+=n("maximum ");break}a+=n("age set to %1",m);break}default:a+=n("%1: %2",p,u)}break}case"preferredDistanceChange":a=n("%1km",r);break;case"allowFlirts":a=r;break;case"matchDateUnset":{const l=new Date(he(r)*1e3);a=n("%1-%2-%3",l.getDate(),l.getMonth()+1,l.getFullYear());break}case"reregistered":a=n("Previous userId: #%1",r);break;case"momentsOffense":{const[l,p]=r.split(":");a=n("Moment #%1 disapproved, reason: %2",p,l);break}case"answeredEating":{const l=new Date(r*1e3);a=n("%1-%2-%3",l.getDate(),l.getMonth()+1,l.getFullYear());break}}a||i.data==="null"?e("pre",()=>{e("font-style:italic"),e("#",a??"-")}):e("#",i.data)})})})})})})},Wt=(t,s)=>{T(o=>{o.setTitle(t.email),e(".admin-page"),e("table",()=>{e("width:100%"),e("tbody",()=>{e("tr",()=>{e("text-align:left"),e("th","#",n("User Id")),e("th","#",n("Notes")),e("th","#",n("Last Online")),e("th","#",n("Register time"))}),e("tr",()=>e("height:8px")),e.onEach(s,(i,r)=>{e("tr",()=>{e("td",()=>{H(i,"nameId")}),e("td",()=>{Ie(i.notes)}),e("td",()=>{e("#",se(i.onlineTime,"Y-M-D h:m"))}),e("td",()=>{e("#",se(i.registerTime,"Y-M-D h:m"))})})})})})})},Gt=(t,s)=>{T(o=>{e(".admin-page"),o.setTitle(n("Free Membership days"));let i=t.userType;i==="basic"&&(i=null);const r=[];for(const m of["focus","select","boost"])(i===m||mt.isUpgrade(i,m))&&(c=>{r[c]=()=>{e("span",()=>{e("text-transform:capitalize","color:",w.membership(c)),e("#",c)})}})(m);const a={};a.type=A.renderMultipleChoice({answers:r,initialValue:i});const l=e(),p=()=>{if(!a.type.getValue())return Pe(l),!1;if(!a.days.getValue()||Number.isNaN(+a.days.getValue()))return Pe(u),!1;const m={userId:t.userId};for(const[c,f]of Object.entries(a))m[c]=f.getValue();y.send("AdminUserInfo.freeMembership",m,c=>{if(c===!0)ie.show("aui",n("done")),o.close();else for(const[f,x]of Object.entries(a))x.setError(c[f]??"");s()})};a.days=U({label:n("how many days?"),startFocused:!0,onEnter:()=>p()});const u=e();o.setButtons([{text:"cancel"},{text:"apply",type:"action",cb:p}]),o.setAllowCancel(!0)})},Qt=t=>{nt(n("Payment History"),"Payment.getHistory",t,n("Payments History and status:"),[{title:n("Time"),name:"time"},{title:n("Cents"),name:"cents"},{title:n("Product"),name:"product"},{title:n("Type"),name:"handler"},{title:n("Method"),name:"method"},{title:n("Status"),custom:s=>{e("#",s.status),s.status==="paid"&&s.refundToken&&e("span",()=>{e("opacity:0.7 font-style:italic ml:4px"),e("#",n("(refund pending)"))})}},{title:n("isRecurring"),name:"recurring"},{custom:s=>{s.status!=="paid"||s.refundToken||e("a",()=>{e("#",n("storneren")),b(()=>{Q(n("Weet je zeker dat je deze betaling wilt storneren?"),()=>{y.send("Payment.refund",e.peek(s,"id")),s.refundToken="pending"})})})}}])},Yt=e.insertCss({"&":"user-select:initial","th, td":"text-align:left"}),oe=e.insertCss({"th, td":"text-align:left padding-right:8px"}),nt=(t,s,o,i,r)=>{T(a=>{a.setTitle(t),e(".admin-page"),a.setWidthHint(1e3);const l=e.proxy([]),p=e.proxy(!1);y.send(s,o,u=>{e.merge(l,u),p.value=!0}),i&&e("div",()=>{e("margin-bottom:10px"),e("#",i)}),e(()=>{p.value?e("table",()=>{e(Yt),e("width:100%"),e("tr",()=>{for(const u of r)e("th",()=>e("#",u.title))}),e.onEach(l,(u,m)=>{e("tr",()=>{for(const c of r)e("td",()=>{c.custom?c.custom(u):e("#",u[c.name])})})},(u,m)=>+m)}):A.renderSpinner()})})},qt=t=>{const s=e.proxy(!1),o=e.proxy([]);y.load("Contact.getLog",t,i=>{e.copy(o,i??[]),s.value=!0}),T(i=>
2{i.setTitle("Contact log"),i.setWidthHint(800),s.value&&e("table",()=>{e("width:100% text-align:left font-size:0.9em"),e("tr",()=>{e("th","#","time"),e("th","#","type"),e("th","#","data")}),e.onEach(o,(r,a)=>{e("tr",()=>{e("td",()=>{S(r.time)}),e("td","#",r.type),e("td","#",r.data)})},r=>-r.time)})})},ke=(t,s,o,i,r)=>{Q(o,()=>{y.send("Admin.removeAccount",s,i,a=>{a?r():ae("failed!")})})},_t=t=>{var o;const s=Object.keys((t==null?void 0:t.soon)??{});if(!((o=t==null?void 0:t.required)!=null&&o.length)&&!s.length){e("#",j);return}for(const i of t.required)e("span margin-right:8px","color:",w.colour("bad"),"#",i);for(const i of s)e("span margin-right:8px","color:",w.colour("warn"),()=>{e("#",i+n(" due ")),S(t.soon[i])})},Fe=(t,s,o)=>{const i=["open","valid","invalid"].filter(r=>t==null?void 0:t[r]).map(r=>`${t[r]} ${r}`).join(", ");if(!i){e("#",j);return}e("a",()=>{e("#",i),b(()=>F("Admin.reports",s,o))})},Kt=(t,s,o)=>{T(i=>{i.setWidthHint(800),i.setTitle(n("Admission of %1",t)),e(".admin-page");const r=e.proxy({}),a=()=>y.send("Admission.get",t,u=>e.copy(r,u??{}));a();const l=U({label:n("message"),value:"admin"}),p=(u,m)=>{const c=l.getValue();if(!c)return l.setError(n("A message is required."));y.send(u,t,m,c,()=>{a(),o()})};e(()=>{if(!r.factors)return L();e("table width:100%",oe,()=>{e.onEach(r.factors,(u,m)=>{e("tr",()=>{D("admission-factor"),e("td","#",m==="msisdn"&&s?`msisdn (${s})`:m),e("td",()=>{u===!0?e("color:",w.colour("bad"),"#",n("required")):u?(e("color:",w.colour("warn"),"#",n("due ")),S(u)):e("#",n("done"))}),e("td",()=>{u?A.renderButton({content:n("Close"),testMarker:"admission-close",cb:()=>p("Admission.close",m)}):A.renderButton({content:n("Reopen"),testMarker:"admission-open",cb:()=>p("Admission.open",m)})})})})}),e("h3","#",n("History")),e("table width:100%",oe,()=>{e.onEach(r.log??[],u=>{const m=ge(u.data)||{};e("tr",()=>{D("admission-log"),e("td",()=>S(u.time)),e("td","#",u.type.replace("admission:","")),e("td",()=>{m.admit==="yes"?e("#",n("closed")):m.admit==="no"?e("#",n("opened")):(e("#",n("due ")),S(m.due))}),e("td","#",m.message??""),e("td",()=>{m.by&&H(m.by,"hash")})})},u=>-u.time)})})})},Jt=t=>{y.load("Offer.adminGet",t,(s,o)=>{T(i=>{e(".admin-page");const r=e.proxy(!1);i.setWidthHint(1e3),e("div",()=>{e("#",n("%1 on demand offer|s",o)),e("margin-bottom:12px")}),e("table",()=>{e(oe),e("width:100%"),e("tr",()=>{for(const a of Object.keys(s[0]??{}))["userId","expireTime"].includes(a)||e("th","#",a);e("th","#","score")});for(const a of[!1,!0])a&&e("tr",()=>{e("td",()=>{e("colspan=",7),e("b","#","Expired offers")})}),s.forEach((l,p)=>{((u,m)=>{if(!(m>=12&&!r.value)){if(a){if(!(u.expireTime<te()))return}else if(!(u.expireTime>te()))return;e("tr",()=>{for(const[c,f]of Object.entries(u))["userId","expireTime"].includes(c)||e("td",()=>{c==="time"?S(f):c==="name"?(H(u,"name"),b(()=>{F("Admin.user",u.userId)})):e("#",f)});e("td",()=>{e("#","view"),b(()=>T(c=>B.matchReport(c,t,u.userId)))})})}})(l,p)})}),e(()=>{r.value||s.length<=12||A.renderButton(n("Load more"),()=>{r.value=!0})})})})},Ot=t=>{const s=e.proxy({}),o=e.proxy(!0);let i=0;const r=()=>{y.send("Moment.getViewsForUser",t,i,(l,p)=>{for(const u of l)s[`mv${u.id}`]=u;l.length&&(i=Math.min(...l.map(u=>u.id))),o.value=p})};r();const a=e.derive(()=>s.value===!1);T(l=>{e(()=>{for(;a.value;)return L();e("table",()=>{e("width:100%"),e("tr",()=>{e("text-align:left"),e("th","#",n("Moment")),e("th","#",n("User")),e("th","#",n("View Time"))}),e.onEach(s,(p,u)=>{e("tr",()=>{e("height:100px"),e("td",()=>{e("vertical-align:middle"),e("div",()=>{var m;e("background-size:contain height:80px width:80px","background:",`url(${(m=p.moment)==null?void 0:m.thumb})`),b(()=>B.showMoment(e.ref(p,"moment")))})}),e("td",()=>{e("vertical-align:middle"),H(p.owner,"name")}),e("td",()=>{e("vertical-align:middle"),S(p.viewTime)})})},p=>-p.id)}),e(()=>{o.value&&A.renderActionButton(n("Load more..."),r)})})})},Xt=t=>{const s=e.proxy([]),o=e.proxy(!1);y.send("MomentComment.getForUser",t,r=>{e.copy(s,r??[]),o.value=!0});const i=e.derive(()=>!o.value);T(r=>{r.setTitle(n("Moment Comments")),r.setWidthHint(800),e(()=>{for(;i.value;)return L();e.onEach(s,(a,l)=>{e("div",()=>{const p=a.moment??{};e("display:flex align-items:center margin: 20px 0;"),e("div",()=>{e("width:80px"),e("img",()=>{e("width:80px height:80px"),e("src=",p.thumb),b(()=>B.showMoment(p))})}),e("div",()=>{e("flex: 1 0 0px; padding: 0 20px;"),e("div",()=>{H({name:p.name,userId:p.userId},"nameId")}),e("div",()=>{e("font-style:italic"),e("#",a.text)}),e("div",()=>{e("font-size:0.8em","color:",w.colour("grey")),S(a.time)})}),e("div",()=>{e("#",a.status)})})},a=>-a.time)})})},Ne=(t,s)=>{T(o=>{e(".admin-page"),o.setWidthHint(1e3);const i=e.proxy({}),r=e.proxy(!1),a=e.proxy(!1);let l=0;const p=()=>{y.load("QuizResponse.adminGet",t,s,l,(u,m)=>{if(u.length){const c={};for(const f of u)c["response"+f.id]=f,(l===0||f.id<l)&&(l=f.id);e.merge(i,c)}a.value=m,r.value=!0})};e(()=>{if(!r.value){p(),L();return}e("table",()=>{e("width:100%"),e("tr",()=>{for(const u of[s?"Contestant":"Author","Time","Status","Answers","Score"])e("th",()=>{e("text-align:left"),e("#",u)})}),e.onEach(i,(u,m)=>{e("tr",()=>{e("td",()=>{e("#",n("%1, %2, %3km",u.name,u.age,u.distance)),b(()=>{F("Admin.user",u.userId)})}),e("td",()=>{S(u.updatedAt)}),e("td",()=>{e("padding: 2px 5px;"),e("#",u.status)}),e("td",()=>{if(e("padding: 2px 5px;
2"),!u.answers)return e("#",j);e("a",()=>{e("#","view");const c=e();b(()=>Be(c,u.answers))})}),e("td",()=>{var c;b(()=>{T(f=>B.matchReport(f,t,u.userId))}),e("#",n("%1",Math.round(((c=u.report)==null?void 0:c.scoreA)*100)/100))})})},u=>-u.id),e(()=>{a.value&&e("div",()=>{A.renderActionButton(n("more"),p)})})})})})},Zt=t=>{T(s=>{s.setTitle(n("Set city")),s.setWidthHint(300);const o=e.proxy(!1);y.load("AdminUserInfo.getCities",t.userId,(i=>{o.value=i})),e(()=>{if(!o.value)return L();for(const i of Array.isArray(o.value)?o.value:[])(r=>{e("div",()=>{e("margin: 2px 0;"),e("#",r.name),b(()=>{y.send("AdminUserInfo.setCity",t.userId,r.id),t.value="city",r.name,s.close()})})})(i)})})},je=(t,s)=>{T(`Quiz Responses ${s?"received":"sent"} (last 50)`,o=>{e(".admin-page");const i=e.proxy([]),r=e.proxy(!0);y.load("QuizResponse.getCompletedAnswers",t,s,a=>{e.copy(i,a??[]),r.value=!1}),e(()=>{if(r.value)return L();e.onEach(i,(a,l)=>{e("div",()=>{e("margin-bottom:20px"),e("div",()=>{e("display:flex align-items:center"),e("div",()=>{e("flex: 1 0 0px;"),e("#","contestant: "),H(a.contestant,"name")}),e("div",()=>{e("flex: 1 0 0px; text-align:center"),e("#","quiz author: "),H(a.author,"name")}),e("div",()=>{e("flex: 1 0 0px; text-align:right"),S(a.time)})}),e("div",()=>{e("font-size:0.9em line-height:1.3em margin: 10px 0;");for(const p of a.data)e("div",()=>{e("font-weight:bold"),e("#",p.question)}),e("div",()=>{e("#",p.answer)})}),e("div",()=>{e("text-align:center margin: 5px 0; padding-bottom:10px border-bottom: 1px solid var(--separator);");const p=a.response,u={yes:w.colour("good"),no:w.colour("warn"),reported:w.colour("bad"),none:w.colour("grey")};e("color:",u[p]??w.colour("grey")),e("#",`response: ${p}`)})})},a=>-a.time)})})},eo=t=>{T(s=>{s.setAllowCancel(!0),e(".admin-page"),e.onEach(t.quizzes??{},(o,i)=>{e("div",()=>{var r;e("opacity:",o.deleted?.5:1),e("div",()=>{e("margin: 20px 0; height:1px background:var(--separator)")}),e("div",()=>{e("display:flex align-items:center"),X(),o.deleted&&e("div",()=>{e("text-transform:uppercase font-weight:bold margin: 0 30px;","color:",w.colour("bad")),e("#",n("deleted"))});const a=xt("quiz");a&&e("div",()=>{e("div",()=>{e("font-size:0.9em"),e("#",n("created: ")),S(o.createdAt)}),a.renderQuizStats(e.ref(o,"stats"))})});for(let a=0;a<6;a++){const l=(r=o.data)==null?void 0:r[a];e("#",l.text),e("br"),a<3&&e("div",()=>{e("margin-left:12px");
2for(const[p,u]of Object.entries(l.answers))e("div",()=>{e("padding-left:1em text-indent:-1em","color:",u.correct?w.colour("good"):w.colour("bad")),e("#",u.text)})})}e("div",()=>{e("margin: 10px 0;"),A.renderActionButton("Delete",()=>{const a=prompt("Type a message for this person (empty for no message; cancel to not delete)");if(a!=null){const l={text:"Deleted quiz",undoText:n("Undo"),unpredict:()=>o.deleted=!1};De(l,"Quiz.deleteBadQuiz",o.id,o.userId,a),o.deleted=!0}})})})},o=>[o.deleted?1:0,-o.id])})},to=t=>{T(s=>{e(".admin-page");const o=(i,r)=>{e("div",()=>{e("display:flex align-items:center"),i.disapproved?e("opacity:0.7","background:",w.colour("bad",.35)):i.deleted&&e("opacity:0.8","background:",w.colour("grey",.1)),e("div",()=>{e("height:100px width:100px min-width:100px margin:8px"),i.deleted||e("background-size:contain","background:",`url(${i.thumb})`),b(()=>{B.showMoment(i)})}),e("div",()=>{e("display:flex flex-direction:column"),e("div",()=>e("#",`id: #${r}`)),e("div",()=>S(i.time)),e("div",()=>{e("font-style:italic"),e("#",`"${i.text}"`)}),i.disapproved?(X(),e("div",()=>{e("font-weight:bold","color:",w.colour("bad")),e("#",i.disapproveReason)})):i.deleted||(X(),A.renderButton(n("delete"),()=>{T({title:n("Why delete?"),allowCancel:!0,content:a=>{const l=(p,u)=>{e.merge(i,{disapproved:!0,disapproveReason:p}),a.close(),y.send("Moment.disapprove",r,p+(u?":"+u:""))};e("div",()=>{e("flex: 1 0 0px; display:flex"),e("div",()=>{e("flex: 1 0 0px; display:flex flex-direction:column justify-content:center align-items:center"),q.render({icon:Pt,color:w.colour("grey"),size:32}),e("#","Inappropriate"),b(()=>l("inappropriate"))}),e("div",()=>{e("flex: 1 0 0px; display:flex flex-direction:column justify-content:center align-items:center"),q.render({icon:Lt,color:w.colour("grey"),size:32}),e("#","Selfie"),b(()=>l("selfie"))}),e("div",()=>{e("flex: 1 0 0px; display:flex flex-direction:column justify-content:center align-items:center"),q.render({icon:Ft,color:w.colour("grey"),size:32}),e("#","Internet"),b(()=>l("internet"))}),e("div",()=>{e("flex: 1 0 0px; display:flex flex-direction:column justify-content:center align-items:center"),q.render({icon:Ht,color:w.colour("grey"),size:32}),e("#","Other"),b(()=>{const p=prompt(n("Typ hier de reden voor verwijderen (annuleer om niet te verwijderen)"));p!=null&&l("other",p)})})})}})}))})})};e.onEach(t,o,i=>-i.time)})},oo=t=>{T(s=>{e(".admin-page");const o=e.proxy(!0),i=e.proxy({});y.send("PhotoSquares.adminGetList",t.userId,r=>{e.copy(i,r),o.value=!1}),e(()=>{if(o.value)return L();e("table",()=>{e("width:100% text-align:center"),e("tr",()=>{e("th","#","id"),e("th","#","Started"),e("th","#","Completed")}),e.onEach(i,(r,a)=>{e("tr",()=>{e("td",()=>{e("#",e.peek(r,"id")),b(()=>{no(t,e.peek(r,"id"))})}),e("td",()=>{S(r.createdAt)}),e("td",()=>{e("#",r.status==="archived"?n("yes"):n("no"))})})},r=>-r.createdAt)})})})},no=(t,s)=>{T(o=>{e(".admin-page"),o.setTitle(n("PhotoSquare %1 for user %2",s,t.userId));const i=e.proxy(!0),r=e.proxy({});y.load("PhotoSquares.adminGet",s,a=>{e.copy(r,a??{}),i.value=!1}),e(()=>{if(i.value)return L();const a=r.photos;for(let l=0;l<a.length;l+=4)e("table",()=>{e("margin: 30px auto;"),l===0?e("margin-top:0"):l===28&&e("margin-bottom:0");for(const p of[0,2])e("tr",()=>{for(const u of[0,1])e("td",()=>{const m=a[l+p+u];e("img",()=>{e("width:100px height:100px margin:2px"),e("src=",m.url)}),b(()=>{F("Admin.user",m.userId)})})})})})})},so=t=>{T(s=>{s.setWidthHint(1e3),e(".admin-page");const o=e.proxy(!0),i=e.proxy([]),r=e.derive(()=>e.count(i).value===0);y.send("Flirt.getReceivedList",t.userId,a=>{e.copy(i,a??[]),o.value=!1}),e(()=>{if(o.value)return L();if(r.value){e("div",()=>{e("#",n("None found."))});return}e("table",()=>{e("width:100%"),e("tr",()=>{e("text-align:left"),e("th","#","From"),e("th","#","Time"),e("th","#","Answer"),e("th","#","Text")}),e.onEach(i,(a,l)=>{e("tr",()=>{e("td",()=>{const p=a;p.userId=p.fromUserId,H(p,"name")}),e("td",()=>S(a.time)),e("td",()=>e("#",a.answer)),e("td",()=>{e("max-width:600px"),e("#",a.text)})})},a=>-a.time)})})})},io=t=>{T(s=>
2{s.setWidthHint(800),s.setTitle(n("Admirers")),e(".admin-page");const o=e.proxy(!0),i=e.proxy([]),r=e.derive(()=>e.count(i).value===0);y.send("Admirer.getReceivedList",t.userId,a=>{e.copy(i,a??[]),o.value=!1}),e(()=>{if(o.value)return L();if(r.value){e("div",()=>{e("#",n("None found."))});return}e.onEach(i,(a,l)=>{e("div",()=>{b(()=>{var p;F("Admin.user",(p=a.fromUser)==null?void 0:p.userId)}),e("display:inline-block margin:3px padding: 5px 10px; border-radius:5px","border:",`1px solid ${w.colour("grey",.5)}`),e("div",()=>{e("display:flex flex-direction:column align-items:center"),e("div",()=>{var p;return e("#",(p=a.fromUser)==null?void 0:p.name)}),e("div",()=>A.renderAvatar(a.fromUser,{style:{margin:"0 auto"}})),e("div",()=>{e("font-size:0.7em"),S(a.time)})})})},a=>-a.time)})})},ro=t=>{T(s=>{s.setWidthHint(1e3),e(".admin-page");const o=e.proxy([]),i=e.proxy(!0),r=e.derive(()=>e.count(o).value===0);y.send("Flirt.getSentList",t.userId,a=>{e.copy(o,a??[]),i.value=!1}),e(()=>{if(!i.value){if(r.value){e("div",()=>{e("#",n("None found."))});return}e("table",()=>{e("width:100%"),e("tr",()=>{e("text-align:left"),e("th","#",n("To")),e("th","#",n("Time")),e("th","#",n("Answer")),e("th","#",n("Text"))}),e.onEach(o,(a,l)=>{e("tr",()=>{e("td",()=>{const p=a;p.userId=p.toUserId,H(p,"name")}),e("td",()=>S(a.time)),e("td","#",a.answer),e("td",()=>{e("max-width:600px"),e("#",a.text)})})},a=>-a.time)})}})})},ao=t=>{T(s=>{s.setWidthHint(1e3),e(".admin-page");const o=e.proxy([]),i=e.derive(()=>e.count(o).value===0),r=e.proxy(!0);y.send("Deblock.getSentList",t.userId,a=>{e.copy(o,a??[]),r.value=!1}),e(()=>{if(r.value)return L();if(i.value){e("div",()=>{e("#",n("None found."))});return}e("table",()=>{e("width:100%"),e("tr",()=>{e("text-align:left"),e("th","#","To"),e("th","#","Time"),e("th","#","Answer"),e("th","#","Text")}),e.onEach(o,(a,l)=>{e("tr",()=>{e("td",()=>{const p=a;p.userId=p.toUserId,H(p,"name")}),e("td",()=>S(a.time)),e("td","#",a.answer),e("td",()=>{e("max-width:600px"),e("#",a.text)})})},a=>-a.time)})})})},lo=t=>{T(s=>{s.setWidthHint(1e3),e(".admin-page");const o=e.proxy({});y.send("Deblock.getReceivedList",t.userId,(i=>{e.copy(o,i??{})})),e(()=>{e.isEmpty(o)||e("table",()=>{e("width:100%"),e("tr",()=>{e("text-align:left"),e("th","#","From"),e("th","#","Time"),e("th","#","Answer"),e("th","#","Text")}),e.onEach(o,(i,r)=>{e("tr",()=>{e("td",()=>{const a=i;a.userId=a.fromUserId,H(a,"name")}),e("td",()=>S(i.time)),e("td","#",i.answer),e("td",()=>{e("max-width:600px"),e("#",i.text)})})},i=>-i.time)})})})},co=t=>{const s=e.proxy([]),o=e.proxy(!0);y.load("Email.getRecent",t,i=>{e.copy(s,i??[]),o.value=!1}),T(i=>{if(e(".admin-page"),i.setTitle(n("Emails sent to %1",t)),i.setWidthHint(1400),o.value)return L();e("table",()=>{e(oe),e("width:100%"),e("tr",()=>{e("th","#","Sent at"),e("th","#","Sent to"),e("th","#","Reference"),e("th","#","Opened"),e("th","#","Link Clicked"),e("th","#","Subject"),e("th","#","Bounce Message")}),e.onEach(s,(r,a)=>{e("tr",()=>{e("td",()=>S(r.sentAt)),e("td","#",r.toAddress),e("td","#",r.reference),e("td",()=>G(r.imagesShownAt>0?"**Yes**":"No")),e("td",()=>G(r.linkClickedAt>0?"**Yes**":"No")),e("td",()=>{e("a",()=>{const l=r.subject;e("#",l);const p=r.htmlMessage;((u,m)=>{b(()=>{T(c=>{e(".admin-page"),c.setTitle(u),e({html:m})})})})(l,p)})}),e("td",()=>{let l;(l=r.bounceMessage)?(e("a","#",l==null?void 0:l.substr(0,20)),(p=>{b(()=>{T(u=>{e(".admin-page"),G(p)})})})(l)):r.spamReportTime&&e("span",()=>{e("font-weight:bold","color:",w.colour("bad")),e("#",n("Moved to spam"))})})})},r=>-r.sentAt)})})},po=t=>{const s={},o={},i={},r=te();for(const a of t)a.time>r-86400&&(s[a.type]=1+(s[a.type]??0)),a.time>r-86400*7&&(o[a.type]=1+(o[a.type]??0)),i[a.type]=1+(i[a.type]??0);e("b","#","Last 24h"),e("br");for(const[a,l]of Object.entries(s))e("#",n("%1: %2×",a,l)),e("br");e("b","#","Last 7d"),e("br");for(const[a,l]of Object.entries(o))e("#",n("%1: %2×",a,l)),e("br");e("b","#","Last 32d"),e("br");for(const[a,l]of Object.entries(i))e("#",n("%1: %2×",a,l)),e("br")},uo={1502700794:"free downgrades were not logged, switches might be logged twice, from wasn't logged",1499346e3:"no guarantees (yet) about what was logged."},mo=(t,s)=>{e(".admin-page");const o=e.proxy(!1);y.send("Membership.adminGetMembershipHistory",s,(i=>{o.value=i})),e(()=>{if(o.value===!1)return;const i=o.value;i.sort((a,l)=>l.time-a.time);const r=[];e("table",()=>{e("width:100%"),e("tr",()=>{e("font-weight:bold"),e("td","#","When "),e("td","#","What "),e("td","#","From "),e("td","#","To ")});for(const a of i){for(const[l,p]of Object.entries(uo))r.includes(l)||+l>+a.time&&(r.push(l),e("tr",()=>{e("td",()=>{e("colspan=",4),e("font-style:italic","color:",w.colour("bad")),e("#",n("Note: from here, %1",p))})}));e("tr",()=>{const l=new Date(a.time*1e3),p=`0${1+l.getMonth()}`.substr(-2),u=`0${l.getDate()}`.substr(-2),m=`0${l.getHours()}`.substr(-2),c=`0${l.getMinutes()}`.substr(-2);e("td","#",`${l.getFullYear()}-${p}-${u} ${m}:${c}`),e("td","#",a.what),e("td","#",a.from),e("td","#",a.to)})}})})},st=t=>t>=86400?n("%1 day|s",Math.round(t/86400)):t>
2=3600?n("%1 hour|s",Math.round(t/3600)):n("%1 minute|s",Math.round(t/60)),ho=t=>{switch(String(t.key??"").split(":")[0]){case"userId->msisdn":return n("Numbers attached");case"verifyMsisdnWrongCode":return n("Wrong codes entered");default:return t.blocks==="resend"?n("Code resent to the same number"):n("Verification sms sent")}},fo=t=>{e("table",()=>{e(oe),e("width:100%"),e("tr",()=>{e("th","#","Limit"),e("th","#","Used"),e("th","#","Blocked until")}),e.onEach(t,s=>{e("tr",()=>{D("phoneLimitRow"),e("td","#",ho(s)),e("td",()=>{D("phoneLimitUsed"),e("#",n("%1 of %2 per %3",s.used,s.count,st(s.period)))}),e("td",()=>{s.nextTime?(e("font-weight:bold","color:",w.colour("bad")),S(s.nextTime)):e("#",j)})})})})},We=t=>{let s=(t??"").replace(/[\s+]/g,"");return s.length===10&&s.charAt(0)==="0"&&(s="31"+s.substr(1)),s},it=(t,s="")=>{t.setWidthHint(600),t.setTitle(n("Phone lookup")),e(".admin-page");const o=e.proxy(s),i=e.proxy(We(s)),r=e.proxy(!1),a=e.proxy([]),l=e.proxy(void 0),p=e.proxy({claims:[],period:0,currentOwnerId:0}),u=e.proxy(0),m=()=>{u.value=e.peek(u,"value")+1},c=U({label:n("phone number"),value:s,currentValue:o,startFocused:!0});e(()=>{const v=o.value,d=We(v);d!==v&&c.setValue(d),i.value=d}),e(()=>{u.value;const v=i.value;if(!v){e.copy(a,[]),l.value=null,e.copy(p,{claims:[],period:0,currentOwnerId:0}),r.value=!0;return}y.send("AdminUserInfo.getMsisdnUsers",v,d=>{e.peek(i,"value")===v&&(e.copy(a,d.users??[]),l.value=d.block,e.copy(p,d.migration??{claims:[],period:0,currentOwnerId:0}),r.value=!0)})});const f=()=>{const v=e.peek(i,"value");v&&T(d=>{d.setTitle(n("Block %1?",v));const h=()=>{y.send("Sms.blockPhone",v,0,g.getValue(),m),d.close()},g=U({label:n("block reason (optional)"),onEnter:h,startFocused:!0});d.setAllowCancel(!0),d.setButtons([{text:"cancel"},{text:"block",cb:h}])})},x=()=>{const v=e.peek(i,"value");v&&y.send("Sms.unblockPhone",v,m)},k=()=>{const v=e.peek(i,"value");v&&Q(n("Let %1 be moved to another account again? The recent claims on it are deleted, except the one of the account that holds the number now -- so that account can still be asked to hand it over.",v),()=>{y.send("Sms.resetMigrationLimit",v,()=>{ie.show("aui",n("done")),m()})},"resetMigration")},$=()=>{e("div",()=>{e("margin: 10px 0;"),D("migrationStatus");const v=p.claims.length,d=st(p.period);v>1?(e("font-weight:bold","color:",w.colour("bad")),e("#",n("Cannot be moved to another account: %1 accounts claimed this number in the past %2.",v,d))):v===1?e("#",n("Can be moved to another account, but the new owner has to confirm it: 1 account claimed this number in the past %1.",d)):e("#",n("Can be moved to another account without asking: no account claimed this number in the past %1.",d));let h;(h=p.currentOwnerId)&&e("div",()=>{e("font-weight:normal font-size:0.9em"),e("#",n("Currently attached to ")),e("a",()=>{e("#",h),e("href=",`/Admin.user/${h}`),b(g=>{F("Admin.user",h),ee(g)})})})}),p.claims.length&&A.renderButton({content:n("Reset migration limit"),testMarker:"resetMigrationLimit",cb:k})};e(()=>{if(!r.value)return L();e("div",()=>{e("margin: 10px 0;");let v;(v=l.value)!=null?(e("font-weight:bold","color:",w.colour("bad")),e("#",n("Blocked — reason: %1",v.reason||"—")),e("div",()=>{e("font-weight:normal font-size:0.9em"),e("#",n("Expires ")),S(v.expireTime),v.userId&&(e("#",n(", blocked by ")),e("a",()=>{e("#",v.userId),e("href=",`/Admin.user/${v.userId}`),b(d=>{F("Admin.user",v.userId),ee(d)})}))})):i.value&&e("#",n("Not blocked"))}),l.value!=null?A.renderButton(n("Unblock"),x):i.value&&A.renderButton(n("Block"),f),i.value&&$(),e("table",()=>{e(oe),e("width:100%"),e("tr",()=>{e("th","#","Time"),e("th","#","User")}),e.onEach(a,(v,d)=>{e("tr",()=>{e("td",()=>S(v.time)),e("td",()=>{e("a",()=>{e("#",v.userId),e("href=",`/Admin.user/${v.userId}`),b(h=>{F("Admin.user",v.userId),ee(h)})})})})},v=>-v.time)})})},go=t=>{T(s=>{it(s,t)})};B.phoneLookup=(t,s)=>{it(t,s)};const xo=t=>{T(s=>{s.setWidthHint(900),s.setTitle(n("Phone logs for %1",t)),e(".admin-page");const o=e.proxy(!0),i=e.proxy([]),r=e.proxy([]),a=e.proxy(0);e(()=>{a.value,y.send("AdminUserInfo.getPhoneStructLogs",t,p=>{e.copy(i,p.logs??[]),e.copy(r,p.limits??[]),o.value=!1})});const l=()=>{Q(n("Give %1 their phone number changes back? The log entries below that are still within a limit's window are deleted.",t),()=>{y.send("Sms.resetLimits",t,()=>{ie.show("aui",n("done")),a.value=e.peek(a,"value")+1})},"resetPhoneLimits")};e(()=>{if(o.value)return L();fo(r),A.renderButton({content:n("Reset limits"),testMarker:"resetPhoneLimits",cb:l}),e("table",()=>{e(oe),e("width:100%"),e("tr",()=>{e("th","#","Type"),e("th","#","Time"),e("th","#","Phone"),e("th","#","")}),e.onEach(i,(p,u)=>{e("tr",()=>{e("td","#",p.type),e("td",()=>S(p.time)),e("td",()=>{e("a",()=>{e("#",p.msisdn),b(()=>go(p.msisdn))})}),e("td",()=>{A.renderButton(n("Block"),()=>{T(m=>{m.setTitle(n("Block %1?",p.msisdn));const c=()=>{y.send("Sms.blockPhone",p.msisdn,t,f.getValue()),m.close()},f=U({label:n("block reason (optional)"),onEnter:c,startFocused:!0});m.setAllowCancel(!0),m.setButtons([{text:"cancel"},{text:"block",cb:c}])})})})})},p=>-p.time)})})})},Z=t=>se(t,"h:m"),vo=t=>`${Math.floor(t/60)}:${String(t%60).padStart(2,"0")}`;e.insertGlobalCss({".bdAdmin-tiles":"display:flex flex-wrap:wrap gap:8px mv:12px",".bdAdmin-tile":"flex: 1 0 80px; p:8px r:8px text-align:center bg:var(--bg-dim)",".bdAdmin-tile b":"display:block font-size:150%",".bdAdmin-tile span":"fg:var(--text-faint) font-size:small",".bdAdmin-row":"display:flex flex-wrap:wrap align-items:baseline column-gap:8px pv:4px border-bottom: 1px solid var(--separator);",".bdAdmin-faint":"fg:var(--text-faint) font-size:small"});B.blindDates=t=>{t.setTitle(n("Blind Dates")),t.setWidthHint(800),t.setTopAlign(!0);const s=e.proxy(0);e(()=>{s.value;const o=e.proxy({}),i=y.send("BlindDate.monitor",Je(o));e.clean(()=>y.closeChannels(i)),e(()=>{if(!o.event)return L();Se(o.event.results)?s.value++:bo(o)})})};const bo=t=>{const s=t.event;e("div font-weight:500",()=>{if(D("blindDateAdmin"),e("#",`${xe(s.start)}, ${Z(s.start)} - ${Z(s.end)}
2: `),!Se(s.open))e("#",n("searching opens at %1",Z(s.open)));else if(Se(s.lastRound+1))e("#",n("results at %1",Z(s.results)));else{const i=s.start+Math.max(0,Math.floor((te()-s.start)/s.roundSeconds)+1)*s.roundSeconds;e("#",n("next round at %1, in %2",Z(i),Ee(i)))}}),yo(t),e("h3","#",n("Searching (%1)",e.count(t.searchers).value)),e.onEach(t.searchers,i=>{e("div.bdAdmin-row",()=>{rt(i),i.missedRound&&e("span.bdAdmin-faint","#",n("no date in the round of %1",Z(i.missedRound)))})},i=>i.name);const o=e.partition(t.dates,i=>s.start+Math.floor((i.startTime-s.start)/s.roundSeconds)*s.roundSeconds);e.onEach(o,(i,r)=>{e("h3","#",n("Round of %1: %2 date|s",Z(+r),e.count(i).value)),e.onEach(i,a=>wo(a,s),(a,l)=>+l)},(i,r)=>-r)},yo=t=>{e("div.bdAdmin-tiles",()=>{const s={m:0,f:0,ringing:0,talking:0,talked:0,missed:0,early:0,yes:0,mutual:0};for(const i in t.searchers){const r=t.searchers[i].gender;r&&s[r]++}for(const i in t.dates){const r=t.dates[i];r.status==="ringing"?s.ringing++:r.status==="active"?s.talking++:r.acceptTime?s.talked++:s.missed++,r.endedBy!=="nobody"&&s.early++,s.yes+=(r.user1.choice??0)+(r.user2.choice??0),r.user1.choice&&r.user2.choice&&s.mutual++}const o=(i,r)=>{e("div.bdAdmin-tile",()=>{e("b","#",String(i)),e("span","#",r)})};o(`${s.m}♂ ${s.f}♀`,n("searching")),o(s.ringing,n("ringing")),o(s.talking,n("talking")),o(s.talked,n("talked")),o(s.missed,n("not connected")),o(s.early,n("hung up early")),o(s.yes,n("yes")),o(s.mutual,n("mutual"))})},rt=t=>{e("span",()=>{H(t,"name"),e("span.bdAdmin-faint","#",` ${t.gender==="m"?"♂":t.gender==="f"?"♀":""}${t.age??""}`)})},wo=(t,s)=>{e("div.bdAdmin-row",()=>{for(const o of["user1","user2"]){const i=t[o];rt(i),t.acceptTime&&e("span","#",i.choice===void 0?"…":i.choice?"✓":"✗","color:",w.colour(i.choice===void 0?"grey":i.choice?"good":"bad"))}e("span.bdAdmin-faint","#",ko(t,s))})},ko=(t,s)=>{const o=r=>r==="nobody"?"":t[r].name,i=r=>r==="user1"?"user2":"user1";if(t.status==="ringing"){const r=Ee(t.startTime+s.ringSeconds);return t.pickedUp==="nobody"?n("ringing, %1",r):n("%1 picked up, %2 ringing, %3",o(t.pickedUp),o(i(t.pickedUp)),r)}if(t.status==="active")return n("talking, %1 left",Ee(t.acceptTime+s.callSeconds));if(t.acceptTime){const r=n("talked %1",vo(t.endTime-t.acceptTime));return t.endedBy!=="nobody"?n("%1, %2 hung up",r,o(t.endedBy)):t.endReason==="failed"?n("%1, the connection failed",r):r}return t.endReason==="missed"?t.pickedUp==="nobody"?n("nobody picked up"):n("%1 did not pick up",o(i(t.pickedUp))):t.endReason};e.insertGlobalCss({".adminSupportQuestions *":"user-select:text"});B.chat=t=>{const s=e.proxy({}),o=i=>{e.copy(s,{}),t.setTitle("Loading..."),y.load("AdminSupportQuestions.get",i,r=>{t.setTitle(n("Recent support chats (%1h)",i*24)),e.copy(s,r??{})})};o(3),A.renderSelector({answers:["1 day","2 days","3 days"],initialValue:2,style:{float:"right"},onChange:i=>o(+i+1)}),e(".adminSupportQuestions"),e(()=>{e("div","#",n("Total: %1",e.count(s).value)),e.onEach(s,(i,r)=>{e("div",()=>{e("div",()=>{e("font-weight:bold font-size:1.8em margin: 30px 0 10px;"),e("span",()=>{e("#",i.name+", "+r),b(ve(F,"Admin.user",r))})}),e("div",()=>S(i.time)),e("margin: 20px 0;");const a=e.proxy({origin:"support",gender:i.gender,name:i.name}),l=i.messages;for(let p=l.length-1;p>=0;p--){const u=l[p],m={content:u[0],flags:u[1],time:u[2]};Rt(m,a,{userId:Oe})}})},i=>-i.time)})};const Mo={log:"text",info:"secondary",result:"good",except:"bad",cmd:"text-strong"},Ao=2e3;B.clientLog=(t,s)=>{t.setTitle(`Live js ${s}`),t.setTopAlign(!0),t.setWidthHint(1e3);const o=e.proxy({}),i=e.proxy(!1);let r=0,a=0,l;const p=(m,c)=>{const f=!l||l.scrollHeight-l.scrollTop-l.clientHeight<40;for(o[""+a]={seq:a,mode:m,text:c},a++;a-r>Ao;)delete o[""+r++];f&&setTimeout(()=>{l&&(l.scrollTop=l.scrollHeight)},0)},u=y.send("AdminUserInfo.liveJsSubscribe",s,(m,c)=>{if(i.value=!0,m==="history")for(const f of c.split(`
3`))p("log",Ge(f));else p(m,m==="log"?Ge(c):c)});e.clean(()=>y.closeChannels(u)),e("div display:flex flex-direction:column gap:6px",()=>{e("div display:flex align-items:baseline gap:12px font-size:12px",()=>{e("div flex:1",()=>{e("color:",w.colour(i.value?"good":"text-faint")),e("#",i.value?`client ${s} is answering`:`waiting for client ${s}…`)}),e("a",()=>{D("liveJsClear"),e("#","clear"),b(()=>{for(;r<a;)delete o[""+r++]})})}),e("div position:relative flex:1 min-height:200px max-height:60vh overflow-y:auto overflow-x:hidden font-family:monospace font-size:12px line-height:1.4 white-space:pre-wrap w
3ord-break:break-word user-select:text",()=>{l=e(),e.onEach(o,m=>{e("div",()=>{D("liveJsLine"),e("color:",w.colour(Mo[m.mode]??"text")),e("#",m.mode==="cmd"?`» ${m.text}`:m.text)})},m=>m.seq)}),e("div display:flex align-items:flex-end gap:10px",()=>{const m=[];let c=0;const f=()=>{const k=x.getValue();k&&(y.send("AdminUserInfo.liveJsSend",s,k),p("cmd",k),m.push(k),c=m.length,x.setValue(""))};let x;e("div flex:1",()=>{x=U({label:"javascript",style:{width:"100%"},testMarker:"liveJsInput",onEnter:()=>f()}),x.inputE.addEventListener("keydown",k=>{const $=k.key==="ArrowUp"?-1:k.key==="ArrowDown"?1:0;if(!$)return;const v=c+$;if(v<0||v>m.length)return;k.preventDefault(),c=v;const d=v===m.length?"":m[v];x.setValue(d,d.length)})}),A.renderActionButton({content:"run",cb:()=>f(),testMarker:"liveJsRun",style:{marginBottom:"4px"}})})})};function Ge(t){return t.startsWith("[")&&t.endsWith("]")?t.slice(1,-1).trim():t}B.emailStats=t=>{t.setTitle(n("Email volume")),t.setWidthHint(700),e(()=>{e.insertGlobalCss({".emailStats":"w:100% text-align:left border-collapse:collapse",".emailStats th":"text-align:left font-weight:500 fg:var(--text-faint) font-size:small pb:6px",".emailStats th.num, .emailStats td.num":"text-align:right pl:10px white-space:nowrap",".emailStats td":"pv:4px vertical-align:middle",".emailStats tr:nth-child(even) td":"background-color:var(--bg-dim)",".emailStats-period":"fg:var(--text-faint) font-size:small pb:10px",".emailStats-name":"font-weight:500 overflow-wrap:anywhere",".emailStats-title":"fg:var(--text-faint) font-size:small overflow-wrap:anywhere",".emailStats-bars":"display:flex align-items:flex-end gap:1px h:26px w:110px border-bottom: 1px solid var(--separator);",".emailStats-bar":`flex: 1 1 0; min-width:1px min-height:1px r:1px background-color:${w.accent("colour4").normal}`,".emailStats-bar.empty":"min-height:0 background-color:transparent"})});let s;const o=e.proxy(!1);y.load("Email.getStats",i=>{s=i,o.value=!0}),e(()=>{if(!o.value||!s)return L();if(!s.items.length){e("#",n("No email was sent in this period."));return}$o(s)})};const $o=t=>{const s=t.startAt+(t.dayCount-1)*86400;e("div.emailStats-period",()=>{e("#",`${xe(t.startAt)} - ${xe(s)}`)}),e("table.emailStats",()=>{D("emailStats"),e("tr",()=>{e("th",()=>e("#",n("Type"))),e("th",()=>e("#",n("Per day"))),e("th.num",()=>e("#",n("Sent"))),e("th.num",()=>e("#",n("Users")))});for(const o of t.items)e("tr",()=>{D("emailStatsRow"),e("td",()=>{e("div.emailStats-name",()=>{D("emailStatsName"),e("#",o.type||n("(no reference)"))}),o.title&&e("div.emailStats-title",()=>e("#",o.title))}),e("td",()=>To(o,t.startAt)),e("td.num",()=>{D("emailStatsCount"),e("#",""+o.count)}),e("td.num",()=>{D("emailStatsUsers"),e("#",""+o.users)})})})},To=(t,s)=>{const o=Math.max(...t.days,1);e("div.emailStats-bars",()=>{for(let i=0;i<t.days.length;i++){const r=t.days[i];e("div.emailStats-bar"+(r?"":".empty"),()=>{e("h:"+Math.round(100*r/o)+"%"),e("title=",`${xe(s+i*86400)}: ${r}`)})}})},Co={raw:`<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg" fill="currentColor"><path d="M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm3-10H5V5h10v4z"/><path d="M0 0h24v24H0z" fill="none"/></svg>
4`,name:"save"},ce={week:{text:n("Past week (minutes)"),format:"D-M h:m",full:"D-M-Y h:m"},months:{text:n("Past 2 months (hours)"),format:"D-M h:m",full:"D-M-Y h:m"},all:{text:n("All time (days)"),format:"D-M-Y",full:"D-M-Y"},allWeeks:{text:n("All time (weeks)"),format:"D-M-Y",full:"D-M-Y"}},Qe=12,Ye="\0new",qe=(t,s,o)=>{e("div.graphs-drop",()=>{e("#",t),e("div.graphs-caret"),b(()=>vt({options:s,cb:o}))})},fe=t=>w.accent("colour"+(1+t%5)),So=t=>t<5?"":t<10?"7,4":"2,3",zo=t=>t<5?"solid":t<10?"dashed":"dotted",Eo=()=>{const t=Math.max(280,Math.min(bt.width-70,760));return[t,Math.max(180,Math.min(Math.round(t*.45),320))]},Me=(t,s,o)=>{e("div.graphs-empty aspect-ratio:",`${t} / ${s}`,()=>{o?e("#",o):L()})},Bo=(t,s)=>{const o=t.toLowerCase();return s.toLowerCase().split(/\s+/).every(i=>!i||o.includes(i))};B.graphs=t=>{t.setWidthHint(800),e(()=>{e.insertGlobalCss({".graphs-title":"display:flex flex-wrap:wrap align-items:center gap: 2px 16px;",".graphs-tools":"display:flex flex-wrap:wrap align-items:center gap:14px font-size:11pt font-weight:400 letter-spacing:normal",".graphs-drop":"display:inline-flex align-items:center cursor:pointer white-space:nowrap fg:var(--secondary) font-weight:500",".graphs-caret":"w:0 h:0 border-style:solid border-width: 7px 7px 0 7px; ml:5px mt:2px border-color: var(--secondary) transparent transparent transparent;",".graphs-icon":"display:flex cursor:pointer",".graphs-chips":"display:flex flex-wrap:wrap gap:5px max-height:140px overflow-y:auto position:relative mt:14px p:2px",".graphs-chip":"font-size:small padding: 3px 9px; r:12px cursor:pointer white-space:nowrap border: 1px solid var(--separator);",".graphs-faint":"fg:var(--text-faint)",".graphs-legend":"display:flex flex-wrap:wrap gap: 6px 18px; font-size:small mt:16px",".graphs-legend-item":"display:flex align-items:center gap:6px",".graphs-empty":"fg:var(--text-faint) display:flex align-items:center justify-content:center",".graphs-plot":"position:relative",".graphs-plot > *":"pointer-events:none",".graphs-cross":"position:absolute w:1px bg:var(--text-faint)",".graphs-dot":"position:absolute w:9px h:9px r:50% margin: -5px 0 0 -5px; border: 1px solid var(--bg);",".graphs-tip":"position:absolute top:2px display:grid grid-template-columns: auto 1fr auto; gap: 1px 8px; align-items:center max-width: max(180px, calc(50% - 12px)); font-size:11px padding: 5px 8px; r:6px bg:var(--bg-raised) border: 1px solid var(--separator); box-shadow: 0 2px 8px var(--shadow);",".graphs-tip-time":"grid-column: 1 / -1; fg:var(--text-strong) font-weight:600 mb:2px white-space:nowrap",".graphs-tip-dot":"w:8px h:8px r:50%",".graphs-tip-name":"overflow:hidden text-overflow:ellipsis white-space:nowrap",".graphs-tip-value":"text-align:right fg:var(--text-strong) font-weight:600 white-space:nowrap"})});const s=e.proxy(void 0),o=e.proxy(void 0),i=e.proxy({}),r=e.proxy("allWeeks"),a=e.proxy(""),l=e.proxy(""),p=e.proxy(void 0);let u=0;y.load("NumStat.list",d=>{s.value=d}),y.load("GraphPreset.list",d=>{o.value=d});const m=()=>Object.values(i).sort((d,h)=>d.order-h.order),c=()=>e.peek(()=>m().map(d=>d.name)),f=d=>{const h=new Set(e.peek(()=>m().map(z=>z.slot)));if(h.size>=Qe){ae(n("A graph shows at most %1 stats at a time.",Qe));return}let g=0;for(;h.has(g);)g++;i[d]={name:d,slot:g,order:++u}},x=d=>{e.peek(i,d)?delete i[d]:f(d)},k=d=>{for(const h of e.peek(()=>Object.keys(i)))delete i[h];for(const h of d.series)f(h);r.value=d.range,a.value=d.name},$=d=>{const h=c(),g=e.peek(r,"value"),z=()=>y.load("GraphPreset.save",d,h,g,V=>{o.value=V,a.value=d});(e.peek(o,"value")??[]).some(V=>V.name===d)?Q(n("Overwrite the preset '%1'?",d),z):z()},v=()=>{T(d=>{d.setTitle(n("New preset")),d.setAllowCancel(!0);const h=U({label:n("Preset name"),testMarker:"numStatPresetName",startFocused:!0});e("div.graphs-faint mt:6px",()=>{e("#",n("%1 {stat|stats}, shared with all admins.",c().length))}),d.setButtons([{text:n("Save"),opts:{testMarker:"numStatSaveConfirm"},cb:()=>{const g=(h.getValue()||"").trim();if(!g)return h.setError(n("Give the preset a name.")),!1;$(g)}}])})};t.setTitle(()=>{e("div.graphs-title",()=>{e("span",()=>e("#",n("Graphs"))),e("div.graphs-tools",()=>{D("numStatTools"),e(()=>{const d={};for(const h in ce)d[h]=ce[h].text;qe(ce[r.value].text,d,h=>{r.value=h})}),e(()=>{const d=o.value??[],h=a.value,g={};for(const E of d)g[E.name]=E.name;g[Ye]=n("Create new...");const z=d.find(E=>E.name===h),V=z&&(m().map(E=>E.name).join(`
5`)!==z.series.join(`
6`)||r.value!==z.range);qe(h?h+(V?" *":""):n("no preset"),g,E=>{if(E===Ye)return v();const C=(e.peek(o,"value")??[]).find(I=>I.name===E);C&&k(C)})}),e("div.graphs-icon",()=>{D("numStatSavePreset"),q.render({icon:Co,size:22,color:w.colour("secondary"),alt:n("Save this graph as a preset")}),b(()=>{if(!c().length)return ae(n("Pick one or more stats first."));const d=e.peek(a,"value");d?$(d):v()})}),e(()=>{const d=a.value;d&&e("div.graphs-icon",()=>{D("numStatDeletePreset"),q.render({icon:Ut,size:22,color:w.colour("text-faint"),alt:n("Delete this preset")}),b(()=>{Q(n("Delete the preset '%1'?",d),()=>{y.load("GraphPreset.delete",d,h=>{o.value=h,a.value=""})})})})})})})}),e("div mt:16px",()=>{const d=m(),h=r.value,g=new Map(d.map(E=>[E.name,E.slot])),z=E=>{e("div",()=>{D("numStatChart");const[C,I]=Eo();if(!E)return Me(C,I,n("Pick one or more stats below."));const N=E.value;if(!N)return Me(C,I);N.series.some(M=>M.points.length)?p.value=Po(N,ce[h],g,C,I):(Me(C,I,n("No data in this period.")),p.value=Object.fromEntries(N.series.map(M=>[M.name,{max:0,total:0,empty:!0}])))})};if(!d.length){z();return}const V=e.proxy(void 0);p.value=void 0,y.load("NumStat.graph",d.map(E=>E.name),h,E=>{V.value=E}),z(V),Ro(d,p,x)}),U({label:n("Filter stats"),currentValue:l,testMarker:"numStatFilter",style:{marginTop:"26px"}}),e("div.graphs-chips",()=>{const d=s.value;if(!d)return L();const h=l.value||"";for(const g of d)Bo(g,h)&&Do(g,i,x)})};const at=(t,s,o,i)=>{e("div.graphs-chip",()=>{if(i&&D(i),s!==void 0){const r=fe(s);e("border-color:",r.normal,"background-color:",r.selectedBg,"fg:",r.selectedFg,"border-style:",zo(s))}e("#",t),b(o)})},Do=(t,s,o)=>{e(()=>{const i=s[t];at(t,i==null?void 0:i.slot,()=>o(t),"numStat")})},Io=t=>{const s=Math.pow(10,Math.floor(Math.log10(t)));for(const o of[1,2,2.5,5])if(t<=o*s)return o*s;return 10*s},be=t=>t>=1e6?+(t/1e6).toFixed(1)+"M":t>=1e4?+(t/1e3).toFixed(1)+"k":""+ +t.toFixed(2),re=t=>(t*100).toFixed(3)+"%",Lo=(t,s,o,i,r)=>
6{const a=new Map(t.points),l=[];for(let p=s;p<=o;p+=r*i){let u=0;for(let m=0;m<r&&p+m*i<=o;m++)u+=a.get(p+m*i)??0;l.push([p,u/r])}return l},Po=(t,s,o,i,r)=>{const m=i-42-10,c=r-10-22,f=Math.floor(t.from/t.period)*t.period,x=Math.max(Math.floor(t.to/t.period)*t.period,f),k=Math.max(1,Math.ceil(((x-f)/t.period+1)/m)),$=k*t.period,v=t.series.map(M=>{const P=Lo(M,f,x,t.period,k);let R=0;for(const[,W]of P)W>R&&(R=W);return{series:M,slot:o.get(M.name)??0,points:P,peak:R,max:Io(R||1)}}),d=M=>42+(x>f?(M-f)/(x-f):.5)*m,h=(M,P)=>10+(1-M/P)*c;let g=`<svg viewBox="0 0 ${i} ${r}" style="width:100%;height:auto;display:block">`;const z=v.length==1?v[0]:null,V=4;for(let M=0;M<=V;M++){const P=10+(1-M/V)*c;g+=`<line x1="42" y1="${P}" x2="${i-10}" y2="${P}" style="stroke:var(--separator);stroke-width:1"/>`,z&&(g+=`<text x="36" y="${P+4}" text-anchor="end" style="fill:var(--text-faint);font-size:12px">${be(z.max*M/V)}</text>`)}const E=Math.max(1,Math.min(3,Math.floor(m/110)));for(let M=0;M<=E;M++){const P=f+(x-f)*M/E,R=M==0?"start":M==E?"end":"middle";g+=`<text x="${d(P)}" y="${r-8}" text-anchor="${R}" style="fill:var(--text-faint);font-size:12px">${se(Math.round(P),s.format)}</text>`}for(const M of v){if(!M.points.length)continue;const P=fe(M.slot).normal,R=So(M.slot),W=M.points.map(([Y,_])=>`${d(Y).toFixed(1)},${h(_,M.max).toFixed(1)}`);if(z){const[Y]=M.points,_=M.points[M.points.length-1];g+=`<polygon points="${d(Y[0]).toFixed(1)},${h(0,M.max)} ${W.join(" ")} ${d(_[0]).toFixed(1)},${h(0,M.max)}" style="fill:${P};opacity:0.15"/>`}if(g+=`<polyline points="${W.join(" ")}" style="fill:none;stroke:${P};stroke-width:1.5${R?`;stroke-dasharray:${R}`:""}"/>`,M.points.length<=100)for(const[Y,_]of M.points)g+=`<circle cx="${d(Y).toFixed(1)}" cy="${h(_,M.max).toFixed(1)}" r="3" style="fill:${P}"/>`}g+="</svg>";const C=e.proxy(void 0),I=Math.floor((x-f)/$)+1;e("div.graphs-plot",()=>{const M=e();e("div",()=>{e({html:g})});const P=W=>{const Y=M.getBoundingClientRect();if(!Y.width)return;const _=(W.clientX-Y.left)/Y.width*i,K=f+(x>f?(_-42)/m*(x-f):0),J=Math.max(0,Math.min(I-1,Math.round((K-f)/$)));e.peek(C,"value")!==J&&(C.value=J)},R=W=>{(W.type==="pointercancel"||W.pointerType==="mouse")&&(C.value=void 0)};e("pointermove=",P),e("pointerdown=",P),e("pointerleave=",R),e("pointercancel=",R),e(()=>{const W=C.value;if(W===void 0)return;const Y=f+W*$,_=d(Y)/i;e("div.graphs-cross left:",re(_),"top:",re(10/r),"height:",re(c/r));for(const K of v){const J=K.points[W];J&&e("div.graphs-dot left:",re(_),"top:",re(h(J[1],K.max)/r),"background-color:",fe(K.slot).normal)}e("div.graphs-tip",()=>{D("numStatTip"),_<.5?e("right:8px"):e("left:8px"),e("div.graphs-tip-time",()=>e("#",se(Y,s.full)));for(const K of v)e("div.graphs-tip-dot bg:",fe(K.slot).normal),e("div.graphs-tip-name",()=>e("#",K.series.name)),e("div.graphs-tip-value",()=>{var J;return e("#",be(((J=K.points[W])==null?void 0:J[1])??0))})})})});const N={};for(const M of v){let P=0;for(const[,R]of M.series.points)P+=R;N[M.series.name]={max:M.peak,total:P,empty:!M.series.points.length}}return N},Ro=(t,s,o)=>{e("div.graphs-legend",()=>{D("numStatLegend");const i=s.value;for(const r of t)e("div.graphs-legend-item",()=>{at(r.name,r.slot,()=>o(r.name));const a=i==null?void 0:i[r.name];a&&e("span.graphs-faint",()=>{if(a.empty)return e("#",n("no data"));e("#",n("max %1, total %2",be(a.max),be(a.total)))})})})},Uo={raw:'<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg" fill="currentColor"><path d="M23 8c0 1.1-.9 2-2 2-.18 0-.35-.02-.51-.07l-3.56 3.55c.05.16.07.34.07.52 0 1.1-.9 2-2 2s-2-.9-2-2c0-.18.02-.36.07-.52l-2.55-2.55c-.16.05-.34.07-.52.07s-.36-.02-.52-.07l-4.55 4.56c.05.16.07.33.07.51 0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2c.18 0 .35.02.51.07l4.56-4.55C8.02 9.36 8 9.18 8 9c0-1.1.9-2 2-2s2 .9 2 2c0 .18-.02.36-.07.52l2.55 2.55c.16-.05.34-.07.52-.07s.36.02.52.07l3.55-3.56C19.02 8.35 19 8.18 19 8c0-1.1.9-2 2-2s2 .9 2 2z"/></svg>',name:"graph"},Vo={raw:'<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg" fill="currentColor"><path d="M3 13h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7z"/><path d="M0 0h24v24H0z" fill="none"/></svg>',name:"list"};e(()=>{e.insertGlobalCss({".logView":"user-select:text",".logView table":"table-layout:fixed max-width:100% width:100%",".logView td":"font-size:small padding-bottom:5px padding-right:8px",".logView tr":"color: var(--text); max-width:100%",".logView tr:nth-child(odd)":"background-color: var(--bg);",".logView td:last-child":"padding-right:0 width:80%",".logView tr td:first-child":"white-space:nowrap"})});let pe=null;const Ho=t=>{const s=t.drawingContext,o=t.points,i=t.dygraph.toDomYCoord(0);s.fillStyle=t.color;let r=1/0;for(let l=1;l<o.length;l++){const p=o[l].canvasx-o[l-1].canvasx;p<r&&(r=p)}const a=Math.floor(2/3*r);for(const l of o){const p=l.canvasx;s.fillRect(p-a/2,l.canvasy,a,i-l.canvasy),s.strokeRect(p-a/2,l.canvasy,a,i-l.canvasy)}};B.log=(t,s="")=>{t.setTopAlign(!0),t.setWidthHint(1800);const o=e.proxy({});y.send("LogView.getSeriesList",c=>{e.copy(o,c)});let i;if(typeof i=="string"){i={};for(const c of i.split(":"))i[c]=!0}else i={run:!0,ext:!0,php:!0};const r=e.proxy({filter:s??"",baseTime:"",period:"2h",series:i,graph:!1,nonce:0}),a=e.proxy(void 0);e(()=>{const c=[];for(const[f,x]of Object.entries(r)){if(!x)continue;let k=x;f==="series"&&(k=Object.keys(k).join(":")),c.push(f+"="+encodeURIComponent(k))}a.value="?"+c.join("&")});let l=[];const p=e.proxy(0);e(()=>{p.value&&yt(()=>{const c=l.pop();e.copy(r,c),p.value=(e.peek(p,"value")||0)+-1})});const u=()=>{l.push(e.peek(()=>e.clone(r))),p.value=e.peek(p,"value")+1},m=()=>{l=[],p.value=0};e(()=>{const c=e.proxy(1),f=e.proxy(0),x=e.proxy(!0),k=e.proxy(void 0);let $=[];e("div",()=>{if(e(".logView"),x.value){e("text-align:center color:var(--text)"),e("#",n("loading..."));return}if(r.graph){if(!pe){pe=e.proxy(!1);const h=document.createElement("script");h.type="text/javascript",h.src="//cdnjs.cloudflare.com/ajax/libs/dygraph/1.1.1/dygraph-combined.js",h.onload=()=>{pe.value=!0},document.head.appendChild(h)}let d;if(pe&&(d=k.value)){for(const h of d)h[0]=new Date(h[0]);new Dygraph(e(),d,{labels:["time","count"],animatedZooms:!0,fillGraph:!0,showRoller:!1,includeZero:!0,plotter:Ho,width:t.width(),clickCallback:(h,g)=>
6{g=new Date(g+12*3600*1e3),e.merge(r,{baseTime:`${g.getFullYear()}-${1+g.getMonth()}-${g.getDate()} 12:00`,period:"24h",graph:!1})}})}return}e("table",()=>{e("tr",()=>{e("td",()=>{e("font-weight:bold");const d=$[-c.value];d&&e("#",d[0])}),e("td",()=>{}),e("td",()=>{})}),Vt(c,f,d=>{const[h,g,z,V,E]=$[-d],C=$[-d-1];e("tr",()=>{const I=h+" "+g;["error","warning","stderr"].includes(V.split(".")[1])&&e("color:red"),e("td",()=>{e("#",g),b({cb:()=>{u(),e.merge(r,{filter:"",baseTime:I,period:"4s"})}})}),e("td","#",V),e("td",()=>{E.split("↵").forEach((N,M)=>{M&&e("br"),e("#",N)})})}),C&&C[0]!==h&&e("tr",()=>{e("td",()=>{e("font-weight:bold padding-top:20px"),e("#",C[0])}),e("td",()=>{}),e("td",()=>{})})})})});const v=r;if(v.graph)y.send("LogView.graph",v,d=>{k.value=d,x.value=!1});else if(v.period==="none"?($=[],x.value=!1,c.value=1):y.send("LogView.search",v,d=>{$=d,x.value=!1,c.value=1-$.length}),!v.baseTime){const d=new RegExp(v.filter),h=y.send("LogView.stream",g=>{g[4].match(d)&&v.series[g[2]]&&$.push(g),c.value=1-$.length});e.clean(()=>{y.closeChannels(h)})}}),t.setTitle(()=>{e("#","Serverlog"),e("div",()=>{e("margin-top:8px font-weight:normal font-size:12pt display:flex align-items:flex-start flex-wrap:wrap");const c=["none","4s","30s","5m","2h","24h","3d","7d","4w","13w","1y","3y"],f=r.graph;q.render({icon:f?Vo:Uo,onTap:()=>{u(),r.graph=!f,!f&&c.indexOf(e.peek(r,"period"))<5&&(r.period="7d")},size:28,color:w.colour("secondary"),style:{marginRight:"12px"}}
6),A.renderSelector({answers:c,initialValue:c.indexOf(r.period),style:{marginRight:"12px"},onChange:$=>{r.period=c[$]}});const x=U({label:"test.*regex",keepLabel:!1,value:r.filter,style:{marginRight:"12px",width:"220px"},onEnter:()=>{m(),r.filter=x.getValue(),r.nonce=(e.peek(r,"nonce")||0)+1},onBlur:()=>{m(),r.filter=x.getValue()}}),k=U({label:"yyyy-mm-dd hh:mm",keepLabel:!1,value:r.baseTime,style:{marginRight:"12px",width:"220px"},onEnter:()=>{m(),r.baseTime=k.getValue(),r.nonce=(e.peek(r,"nonce")||0)+1},onBlur:()=>{m(),r.baseTime=k.getValue()}});e.onEach(o,($,v)=>{var d;A.renderCheckBox({content:v,initialValue:!!((d=r.series)!=null&&d[v]),style:{marginRight:"12px"},onChange:h=>{r.series=v}})}),(r.baseTime||!r.graph)&&A.renderLink(n("clear"),()=>{m(),r.baseTime="",e.peek(r,"graph")||(r.period="2h",r.nonce=(e.peek(r,"nonce")||0)+1)})})})};const Fo=(t,s,o)=>{switch(t){case"birthdate":return(s[t]-o[t])/365;case"height":return o[t]-o[t];case"location":return No(s[t],o[t]);default:return o[t]}},No=(t,s)=>{let o=t&65535,i=t>>16&65535,r=s&65535,a=s>>16&65535;o=(o*360/65535-180)*(Math.PI/180),i=(i*360/65535-180)*(Math.PI/180),r=(r*360/65535-180)*(Math.PI/180),a=(a*360/65535-180)*(Math.PI/180);let l=Math.cos(o)*Math.cos(i)*Math.cos(r)*Math.cos(a)+Math.cos(o)*Math.sin(i)*Math.cos(r)*Math.sin(a)+Math.sin(o)*Math.sin(r);l<-1?l=-1:l>1&&(l=1);const p=Math.acos(l)*6378;return Math.round(p)},ne=t=>Math.round(t*100)/100;B.matchReport=(t,s,o)=>{const i=e.proxy({}),r=e.proxy(s),a=e.proxy(o);e(()=>{r.value&&a.value?y.send("Matcher.getAdminReports",e.peek(r,"value"),e.peek(a,"value"),l=>{e.copy(i,l??{})}):e.copy(i,{})}),e("div",()=>{e("display:flex margin-bottom:30px"),X();const l=U({label:"User 1",value:e.peek(r,"value"),onBlur:function(){r.value=this.getValue()},onEnter:()=>{r.value=l.getValue()},style:{Flex:1}}),p=U({label:"User 2",value:e.peek(a,"value"),onBlur:function(){a.value=this.getValue()},onEnter:()=>{a.value=p.getValue()},style:{Flex:1}})}),e(()=>{var p,u,m,c;if(e.isEmpty(i))return;((p=i.a)==null?void 0:p.report)&&((u=i.b)==null?void 0:u.report)||e("div","#","Reports could not be calculated"),t.setTitle(n("Report between %1 and %2",(m=i.a)==null?void 0:m.name,(c=i.b)==null?void 0:c.name)),e("table",()=>{var k,$,v;e("width:100%"),e("tr",()=>{e("td","#",n("user"));for(const d of["a","b"])e("td",()=>{var h;e(".link"),e("#",(h=i[d])==null?void 0:h.name),b(ve(F,"Admin.user",d==="a"?e.peek(r,"value"):e.peek(a,"value")))})});const f=(k=i.a)==null?void 0:k.report,x=($=i.b)==null?void 0:$.report;e("tr",()=>{e("td","#",n("score")),e("td","#",ne(f.scoreA)),e("td","#",ne(x.scoreA))}),e("tr",()=>{e("td","#",n("normalized")),e("td","#",ne(f.normalizedScoreA)),e("td","#",ne(x.normalizedScoreA))}),e("tr",()=>{e("td","#",n("swampedScore")),e("td","#",ne(f.swampedScore)),e("td","#",ne(x.swampedScore))}),e("tr",()=>{var d,h,g,z;e("td","#",n("offerSwampedness")),e("td","#",(h=(d=i.a)==null?void 0:d.matcherData)==null?void 0:h.offerSwampedness),e("td","#",(z=(g=i.b)==null?void 0:g.matcherData)==null?void 0:z.offerSwampedness)});for(const d in(v=i.a)==null?void 0:v.report.factors)(h=>{e("tr",()=>{var g,z;e("td","#",h);for(const[V,E]of Object.entries({a:"b",b:"a"})){const C=(g=i[V])==null?void 0:g.matcherData,I=(z=i[E])==null?void 0:z.matcherData;e("td",()=>{e("span",()=>{var R;e("font-weight:bold"),e("#",(R=i[V])==null?void 0:R.report.factors[h])});const N=e(),M=C[h+"Prefs"],P=Fo(h,C,I);b(ve(Be,N,()=>{if(h==="tags")new Xe({content:R=>{R.setWidthHint(800),jo(i.tagsReport)}}).show();else{e("#",n("prefs: "));for(let R=0;R<=M.length;R++)e("span",()=>{R===P&&e("font-weight:bold"),e("#",M[R-1])});e("br"),e("#",n("other answer: %1",P))}}))})}})})(d)})})};e.insertGlobalCss({"table.tag-inspect":"table-layout:fixed width:100%","table.tag-inspect td":"padding: 0 6px;","table.tag-inspect td:not(:last-child)":"width:170px","table.tag-inspect td:last-child":"font-style:italic"});const jo=t=>{let s;if(s=t.error){e("#",{notags:"No tags for either user",notagsA:"No tags for user A",notagsB:"No tags for user B",nohits:"No tag hits"}[s]);return}e("table",()=>{e({".tag-inspect":!0}),e("tr",()=>{e("td",()=>{e("b","#",n("Hits:"))}),e("td",()=>{for(const o in t.hits){const i=t.hits[o];e("div","#",n("%1: %2 (%3)",o,i.text,i.prob))}}),e("td",()=>{e("#",n("common tags and chance a user has that tag"))})}),e("tr",()=>{e("td",()=>{e("b","#",n("Min tag count: "))}),e("td","#",t.minTagCount),e("td","#",n("min(tagsA.length, tagsB.length)"))}),e("tr",()=>{e("td",()=>{e("b","#",n("Possible combinations: "))}),e("td","#",t.combinations),e("td","#",n("possible comb. with the min tags and hit count"))}),e("tr",()=>{e("td",()=>{e("b","#",n("Tag prob product: "))}),e("td","#",t.tagsProb),e("td","#",n("product of each hit tag's probability"))}),e("tr",()=>{e("td",()=>{e("b","#",n("Probability: "))}),e("td","#",n("%1 × %2 = %3",t.combinations,t.tagsProb,t.prob)),e("td","#",n("used to determine the stars"))})})},_e=(t,s)=>{let o;if(!(o=s.algorithm))return;delete s.candidates;const i=s.orderBy;y.send("Matcher.adminExperiments",t,{algorithm:o,filterMatched:s.filterMatched,orderBy:i==="default"?"":i},(r,a,l)=>{e.merge(s,{candidates:r,count:a,runtime:l*1e3})})};B.matcher=(t,s)=>{t.setWidthHint(800);const o=e.proxy({algorithm:"swampedScore",filterMatched:!0,orderBy:"default"}),i=e.proxy({algorithm:"normalizedScore",filterMatched:!0,orderBy:"default"}),r=e.proxy(s);e(()=>{let a;(a=r.value)&&(e(()=>{_e(a,o)}),e(()=>{_e(a,i)}))}),e("div",()=>{e("display:flex");const a=p=>{r.value=+l.getValue()},l=U({label:"userId",value:s,onEnter:a,onBlur:a});e("div",()=>{e(()=>{r.value&&A.renderExtraButton({content:n("View User"),cb:()=>{F("Admin.user",e.peek(r,"value"))}})})})}),e("div",()=>
6{e("display:flex margin-top:20px"),[o,i].forEach((a,l)=>{Wo(r,a),+l||e("div",()=>{e("width:50px")})})})};const Ae=t=>Math.round(t*100)/100,$e=["scoreA","swampedScore","normalizedScore"],Te=["default","location","birthdate"],Wo=(t,s)=>{e("div",()=>{e("div",()=>{e("margin-left:5px"),A.renderSelector({answers:$e,initialValue:$e.indexOf(e.peek(s,"algorithm")),onChange:o=>{s.algorithm=$e[o]}})}),e("div",()=>{e("margin-left:5px"),A.renderSelector({answers:Te,initialValue:Te.indexOf(e.peek(s,"orderBy")),onChange:o=>{s.orderBy=Te[o]}})}),e("div",()=>{A.renderCheckBox({initialValue:e.peek(s,"filterMatched"),content:"Filter matched",onChange:(o=>{s.filterMatched=o})}),e("font-weight:bold")}),e("div",()=>{let o;(o=s.count)&&e("#",n("%1 candidates",o))}),e("div",()=>{let o;(o=s.runtime)&&(e("#",n("Took %1ms",o)),e("margin-bottom:8px"))}),e(()=>{let o;(o=s.candidates)&&Go(e.peek(t,"value"),o)})})},Go=(t,s)=>{for(const o of s)(i=>{e("div",()=>{e("display:flex"),e("div",()=>{e("width:65px text-overflow:ellipsis overflow:hidden white-space:nowrap"),e(".link"),e("#",i.name),b(ve(F,"Admin.user",i.userId))}),e("div",()=>{e("width:30px text-overflow:ellipsis overflow:hidden white-space:nowrap"),e("#",n("%1j",i.age))}),e("div",()=>{e("width:55px text-overflow:ellipsis overflow:hidden white-space:nowrap"),e("#",n("%1km",i.distance))}),X(),e("div",()=>{e("margin-left:15px margin-right:0"),e(".link"),e("#",n("%1",Ae(i.report.scoreA))),i.report.matchScoreA&&e("#",n(" (%1)",Ae(i.report.matchScoreA))),e("#",n(" vs %1",Ae(i.report.scoreB))),b(()=>{T(r=>{B.matchReport(r,t,i.userId)})})})})})(o)};B.moments=t=>{t.setTitle(n("Moments")),t.setWidthHint(1e3),t.cfg.topAlign=1;const s=e.proxy({}),o=e.derive(()=>!e.isEmpty(s)),i=t.scrollE;let r=0;const a=c=>{Ze(s,"moments",c.moments),O(s,"minId",c.minId),O(s,"done",c.done),ze(0,()=>{i.scrollTop=r})},l=()=>{r=i.scrollTop,y.send("Moment.getNewestMoments",a,e.peek(s,"minId"))};l();const p=e.proxy({}),u=()=>{const c=[],f=e.peek(()=>e.clone(p));for(const x in f)f[x]&&c.push(+x);return c},m=c=>{for(const f of u())O(s,"moments",f,"done",c)};e(()=>{if(!o.value){L();return}e("div",()=>{e("display:flex"),e("div",()=>{e("h2","#","Select supicious moments")}),X(),e("div",()=>{let c=!1;for(const f in p)p[f]&&(c=!0);c&&A.renderActionButton("mark suspicious",()=>{const f=u();if(!f.length){ie.show("momentsAdmin","Nothing selected");return}y.send("Moment.markBad",f),m(!0),e.copy(p,{})})})}),Qo(s.moments??{},p),e("div",()=>{s.done||A.renderActionButton("More...",l)})})};const Qo=(t,s)=>{e("div",()=>{e("display:flex flex-wrap:wrap"),e.onEach(t,(o,i)=>{if(o.done)return;const r=e.ref(s,i);e("div",()=>{e("position:relative padding:8px width:124px box-sizing:border-box","transition:","background 200ms "+wt),e(()=>{const l=kt.blend(w.colour("bad"),w.colour("bg"),.7);e("background:",s[i]?l:"")});const a=o.moment??{};e("div",()=>{H({style:{fontSize:"0.8em",display:"block"},custom:()=>{a.name?e("#",`${a.name}, ${a.age}`):e("#",`#${a.userId}`)},user:{userId:a.userId}})}),e("div",()=>{e("width:100px height:100px background-repeat:no-repeat background-size:contain background-position:50% position:relative","background-image:",`url(${a.thumb})`),e("div",()=>{e("position:absolute top:0 right:0 width:30px height:30px background:rgba(0,0,0,0.5)"),e(()=>{q.render({icon:r.value?Mt:At,size:16,style:{margin:"7px"},color:w.colour("light")})}),b(()=>{r.value=!e.peek(r,"value")})}),b(()=>{B.showMoment(a)})})})},(o,i)=>-i)})};B.showMoment=t=>{T(s=>{s.setTitle(`Moment #${t.momentId}`),s.setWidthHint(600),e("margin: 0 auto; width:100% box-sizing:border-box"),e("div",()=>{e("display:flex align-items:center font-size:0.9em padding: 10px 0;"),e("div",()=>{e("#","owner: "),H(t,"nameId")}),X(),e("div",()=>{var o,i;e("#",n("%1 views",(o=t.views)==null?void 0:o.total)),(i=t.views)!=null&&i.total&&(e("#",n(", %1 comments",t.commentCount)),t.commentCount&&e("#",n(" (%1 new)",t.unseenCount)))})}),e("div",()=>{e("position:relative"),e("img",()=>{e("max-width:100% border-radius:8px min-height:100px"),e("src=",t.url)}),e("div",()=>{e("text-align:center background:rgba(0,0,0,0.4) padding: 10px 0; position:absolute top:0 width:100% border-radius: 8px 8px 0 0;","color:",w.colour("light",.9)),e("#",t.text)})}),y.send("MomentComment.getAdminList",t.momentId,(o=>{t.comments=o})),e(()=>{const o=t.comments;if(o==null){L();return}if(o.length)for(const i of o)e("div",()=>{e("display:flex align-items:center margin: 15px 0;"),i.seenTime&&e("opacity:0.5"),e("div",()=>{e("min-width:80px text-align:center margin-right:20px"),H(i.user,"name")}),e("div",()=>{e("display:flex flex-direction:column font-size:0.9em flex: 1 0 0px;"),e("div",()=>{e("display:flex align-items:center font-size:0.9em"),e("div",()=>{S(i.time)}),X(),e("div",()=>{let r=i.status;r==="unknown"&&(r="none"),e("#",`status: ${r}`)})}),e("div",()=>{G(i.text)})})});else e("#",n("No comments."))})})};le({"Admin.moments":B.moments});B.photos=t=>{t.setWidthHint(830),t.setTopAlign(!0),t.setTitle(n("Photo Admin"));const s=e.proxy(!0),o=e.proxy({what:"newest",type:"headshot"});let i=0;const r=e(),a=e.proxy({}),l=e.proxy(void 0),p=m=>{s.value=!0;const c=e.peek(()=>e.clone(o));m!=null&&(c.offset=m),y.send("PhotoAdmin.get",c,(f,x,k)=>{const $=r.scrollTop,v=e.peek(e.count(a),"value");f.forEach((d,h)=>{O(a,v+h,d)}),i=k,l.value=x,s.value=!1,setTimeout(()=>{r.scrollTop=$},0)})};e(()=>{e.clone(o),i=null,e.copy(a,{}),p()}),e("div",()=>{e("display:flex margin-bottom:10px"),e("div",()=>{e("flex: 1 0 0px;");const m={newest:"newest",online:"online",highmen:"top♂",lowmen:"bottom♂",highwomen:"top♀",lowwomen:"bottom♀"};for(const c in m){const f=m[c];e("span",()=>{e("margin: 0 5px;"),o.what===c?e("#",n("%1 ",f)):e("a",()=>{e("#",n("%1 ",f)),b(()=>{o.what=c})})})}}),e("div",()=>{e.clean(()=>{delete o.age}),e("b",()=>{e("#",n("Filter: "))}),e("select",()=>{e("option",()=>{e("#",n("All ages")),e("value=",0)});for(let c=15;c<=100;c++)e("option",()=>{e("#",c),e("value=",c),+(o.age??0)===c&&e("selected=",1)});const m=e();e("change=",()=>{o.age=m.value})}),e(()=>{e.derive(()=>o.what==="newest").value&&(e.clean(()=>{o.type="headshot"}),e("select",()=>
6{const c={headshot:n("headshots"),other:n("other photos"),all:n("all photos")};for(const x in c){const k=c[x];e("option",()=>{e("#",k),e("value=",x),o.type===x&&e("selected=",1)})}const f=e();e("change=",()=>{o.type=f.value})}))})})});const u=e.derive(()=>e.count(a).value===0);e(()=>{u.value||e("div",()=>{e("display:grid grid-template-columns: repeat(7, 1fr); grid-gap:5px grid-auto-rows:114px margin: 15px 0;"),e.onEach(a,Yo,(m,c)=>+c)})}),e(()=>{s.value?e("div",()=>{e("text-align:center margin: 0 auto;"),L()}):u.value&&e("div",()=>{e("#","No results.")})}),e(()=>{l.value&&!s.value&&e("div",()=>{A.renderActionButton(n("Load More"),()=>{p(i)})})})};e(()=>{e.insertGlobalCss({".admin-photo .user-link":`opacity:0 background: ${`linear-gradient(to bottom, ${w.colour("overlay",.9)} 0%, transparent 100%)`}; transition: transform 300ms ease, opacity 300ms ease; transform-origin:top transform:scaleY(0)`,".admin-photo:hover .user-link":"opacity:1 transform:scaleY(1)",".admin-photo .user-link:hover":`background: ${w.colour("overlay")}; text-decoration:underline`,".admin-photo .user-link a:hover":"background:transparent",".admin-photo .photo-link":`background: ${`linear-gradient(to top, ${w.colour("overlay",.9)} 0%, transparent 100%)`};`,".admin-photo .photo-link:hover":`background: ${w.colour("overlay")}; text-decoration:underline`})});const Yo=t=>{e("div",()=>{e(".admin-photo");const s=t.user??{};e("background-repeat:no-repeat background-size:contain background-position: center center; font-size:0.7em text-align:center display:flex flex-direction:column","background-image:",`url(${t.url})`),e("div",()=>{e(".user-link"),e("display:flex align-items:center justify-content:center"),e("a",()=>{e("color:",w.colour("light")),e("#",`#${s.userId}`),b({cb:()=>{F("Admin.user",s.userId)}})})}),e("div",()=>{e("flex: 1 0 0px;"),b({cb:()=>{et(s.userId,t.id)}})}),e("div",()=>{e(".photo-link"),e("display:flex align-items:center justify-content:center");const o=He.some(i=>i.type===t.type);for(const{type:i,icon:r}of He)e("div padding: 0 3px;",()=>{const a=t.type===i,l=o&&!a&&(i!=="headshot"||tt(t.width,t.height));e("opacity:",a?1:l?.45:.15),q.render({size:14,color:w.colour("light"),icon:r}),l&&b(()=>ot(t,i))});e("div",()=>{e("color:",w.colour("light"));const i=s.gender??"?",r=s.age??"?",a={yes:"s",no:"ns",maybe:"c",unknown:"?"}[s.single]??"?";e("#",`${i} ${r}, ${a}`)}),b({cb:()=>{F("Admin.userPhotos",s.userId)}})})})};le({"Admin.photos":B.photos});const qo={valid:n("The report was right: it counts against them."),invalid:n("The report was wrong: it raises the bar for the next one."),moot:n("Close it without judging anybody.")};B.reports=(t,s=0,o="")=>{s=+s,t.setTitle(s?o?n("Reports by %1",s):n("Reports about %1",s):n("Content reports")),t.setWidthHint(900),t.setTopAlign(!0);const i=e.proxy(""),r=e.proxy({}),a=e.proxy(!1),l=()=>{y.send("ReportedContent.getQueue",s,!!o,p=>{e.copy(r,p??{}),a.value=!0})};l(),s||e("div display:flex gap:12px flex-wrap:wrap margin-bottom:16px",()=>{const p=r.counts??{},u={"":n("All")};for(const m in r.types??{})(p[m]||i.value===m)&&(u[m]=r.types[m]);for(const m in u){const c=m?p[m]:Object.values(p).reduce((f,x)=>f+x,0);e("a",()=>{e("font-weight:",i.value===m?"bold":"normal"),e("#",c?`${u[m]} (${c})`:u[m]),b(()=>{i.value=m})})}}),e(()=>{if(!a.value)return L();if(!e.count(r.members??[]).value){e("div","#",s?n("No reports."):n("Nothing to do!"));return}e.onEach(r.members,p=>_o(p,i.value,!s||!!o,r.actions,l),p=>[p.score>=p.block?0:1,-p.score,-p.time])})};const Ke=(t,s)=>!t.gone&&(!s||t.type===s),_o=(t,s,o,i,r)=>{t.gone||!t.cards.some(a=>Ke(a,s))||e("div r:5px p:10px margin-bottom:16px",()=>{D("report-member"),e("border:","1px solid "+w.colour("separator"));const a=t.user;a&&(e("div display:flex gap:10px align-items:center",()=>{e("img width:48px height:48px r:50% object-fit:cover flex-shrink:0","src=",a.photo),e("div flex:1 min-width:0",()=>{e("div",()=>{H(a,"nameHash"),lt(a)}),Jo(t)})}),e("div display:flex gap:8px flex-wrap:wrap align-items:center justify-content:flex-end margin-top:6px",()=>{o&&e("a font-size:0.9em margin-right:auto",()=>{e("#",n("All reports about them")),b(()=>F("Admin.reports",a.userId))}),a.state!=="blocked"&&A.renderButton({content:n("Kick user"),testMarker:"report-kick",cb:()=>Ko(t,r)})})),e("div margin-left:24px",()=>{e.onEach(t.cards,l=>{Ke(l,s)&&Oo(l,(a==null?void 0:a.userId)??0,i,r)})})})},lt=t=>{e("span","#",` · ${t.gender} ${t.age} · `),e("i","#",t.state),e("span","#"," · "),e("span","color:",w.membership(t.plan),"#",t.plan),e("span",()=>{e("title=",n("Last online")),e("#"," · "),t.online?e("#",n("online now")):S({time:t.onlineTime,tooltip:!1})})},Ko=(t,s)=>{const o=t.user;T(i=>{i.setTitle(n("Kick %1?",o.name)),e("p","#",n("Every way makes all open reports about them val
6id."));const r=(l,p)=>()=>{e("b","#",l),e("div","#",p)},a=A.renderMultipleChoice({testMarker:"kick-choice",answers:{deregister:r(n("Deregister"),n("Ends the account as if they left themselves; they can sign up again with the same e-mail address and phone number.")),block:r(n("Block"),n("Deregisters them and refuses their e-mail address and phone number for new signups.")),scammer:r(n("Scammer"),n("Blocks them, marks their devices as a scammer's, and warns their contacts."))}});e(()=>{i.setButtons([n("Cancel"),{text:n("Kick"),type:a.getValue()?"action":"disabled",opts:{testMarker:"kick-confirm"},cb:()=>{t.gone=!0,y.send("Admin.removeAccount",o.userId,a.peekValue(),s)}}])})})},Jo=t=>{e("div font-size:0.9em",()=>{e("title=",n("report score / block threshold")),e("#",n("report score ")),e("b",()=>{e("color:",w.colour(t.score>=t.block?"bad":"good")),e("#",t.score)}),e("#",`/${t.block}`)})},Oo=(t,s,o,i)=>{e("div margin-top:10px padding-top:10px",()=>{D("report-card"),e("border-top:","1px solid "+w.colour("separator")),e("div display:flex align-items:baseline gap:8px flex-wrap:wrap",()=>{e("b","#",t.label),t.about2&&(e("span","#",n("with")),e("img width:32px height:32px r:50% object-fit:cover align-self:center","src=",t.about2.photo),H(t.about2,"nameHash"),lt(t.about2))}),e("div display:flex gap:12px margin-top:8px margin-bottom:8px",()=>{t.imageUrl&&e("img max-width:150px max-height:150px object-fit:contain","src=",t.imageUrl),e("div flex:1 min-width:0",()=>{t.text&&e("div white-space:pre-wrap margin-bottom:6px","#",t.text);for(const r of t.reports)Xo(r,t.chat?s:0)})}),t.open&&e("div display:flex gap:8px flex-wrap:wrap align-items:center justify-content:flex-end",()=>{const r=a=>{const l=o[a];A.renderButton({content:()=>{e("title=",qo[l.verdict]),e("#",l.text)},testMarker:"report-"+a,cb:()=>Zo(t,a,l,i)})};r("ok"),r("ignore"),e("fieldset display:flex gap:8px flex-wrap:wrap align-items:center margin:0 r:5px",()=>{e("border:","1px solid "+w.colour("separator")),e("legend font-size:0.9em","#",n("Accurate report")),r("noAction");for(const a of t.actions)r(a)})})})},Xo=(t,s)=>{e("div font-size:0.9em margin-bottom:4px",()=>{if(D("report-line"),e("div display:flex gap:6px align-items:baseline flex-wrap:wrap",()=>{t.by.userId?H(t.by,"name"):e("b","#",t.by.name),t.reason&&e("i","#","“"+t.reason+"”"),t.verdict!=="open"&&e("b","#",t.weight?t.verdict:n("moot")),e("span",()=>{e("color:",w.colour("grey")),S(t.time)}),s&&t.by.userId&&e("a",()=>{D("report-chat"),e("#",n("chat history")),b(()=>me("chatHistory",({AdminChatHistory:i})=>{T(r=>i(r,s,t.by.userId))}))})}),!t.attachment)return;const o="/reportedContent?id="+t.id;e("div margin-top:4px margin-bottom:4px",()=>{["m4a","mp3","ogg","webm"].includes(t.attachment)?e("audio display:block max-width:100%","controls=","controls","preload=","none","src=",o):e("img display:block max-width:200px max-height:200px","src=",o)})})},Zo=(t,s,o,i)=>{const r=a=>{y.send("ReportedContent.act",t.type,t.contentId,s,a,i),t.gone=!0};if(!o.asks)return r("");T(a=>{a.setTitle(o.asks);const l=U({label:o.asks,startFocused:!0});a.setButtons([n("Cancel"),{text:o.text,type:"action",cb:()=>r(l.getValue())}])})};e(()=>{e.insertGlobalCss({".user-admin .user-row:nth-child(odd)":"background-color: var(--bg-dim);"})});B.users=(t,s="")=>{t.setWidthHint(850),t.setTopAlign(!0);const o=e.proxy([]),i=e.proxy(!0),r=e.proxy(s),a=u=>{y.send("UserAdmin.find",u,m=>{u===e.peek(r,"value")&&(e.copy(o,m??[]),i.value=!1)})};e(()=>{i.value=!0,a(r.value)}),e(()=>{i.value?t.setTitle(n("User info - loading...")):t.setTitle(n("User info"))});const l=e.proxy(!1);e("div",()=>{e("margin: 10px 0;"),e("div",()=>{e("text-align:right"),e("a",()=>{e("#",l.value?n("hide help"):n("help")),b(()=>{l.value=!e.peek(l,"value")})})}),$t({condition:()=>l.value,content:()=>{e("div",()=>{e("#",n("Possible filters (combine using spaces):")),e("ul",()=>{e("li",()=>{G(n("**age**: *<number>*"))}),e("li",()=>{G(n("**city**: *<city name>*"))}),e("li",()=>{G(n('**email**: *<search text> (use % as wildcards, e.g. "%harry%" matches all addresses containing "harry"*'))}),e("li",()=>{G(n("**gender**: *male/female*"))}),e("li",()=>{G(n("**id**: *<number>*"))}),e("li",()=>{G(n("**name**: *<name>*"))}),e("li",()=>{G(n('**notes**: *<search text>* (use % as wildcards, e.g. "%oplichter%")'))}),e("li",()=>{G(n("**online**: *yes*"))}),e("li",()=>{G(n("**state**: *passive/active/deleted/blocked*"))}),e("li",()=>{G(n("**type**: *focus/select/boost*"))})})})}})});const p=U({label:"filter",style:{margin:"10px 0"},startFocused:!0,value:s,onEnter:()=>{const u=p.getValue();u&&(Number.isNaN(+u)?r.value=u:F("Admin.user",u))}});e(()=>{p.$currentValue.value!==r.value&&ze(1e3,()=>{r.value=p.$currentValue.value})}),e(()=>{if(i.value){L();return}e("table",()=>{e(".user-admin"),e("font-size:smaller width:100%"),e("tr",()=>{e("text-align:left"),e("th",()=>{e("#",n("user"))}),e("th",()=>{e("#",n("age"))}),e("th",()=>{e("#",n("notes"))}),e("th",()=>{e("#",n("m/f"))}),e("th",()=>{e("#",n("state"))}),e("th",()=>{e("#",n("last seen"))}),e("th",()=>{e("#",n("registered"))})}),e.onEach(o,(u,m)=>{e("tr",()=>{e(".user-row"),e("margin: 3px 0;"),e("td",()=>{H(u,"nameEmail")}),e("td",()=>{e("#",u.age)}),e("td",()=>{Ie(u.notes)}),e("td",()=>{e("#",u.gender)}),e("td",()=>{e("#",u.state==="active"?"":u.state)});const c=e.proxy(!1);ze(0,()=>{c.value=!0}),e(()=>{c.value&&(e("td",()=>{u.online?(e("font-weight:bold"),e("#",n("nu"))):S(u.onlineTime)}),e("td",()=>{u.firstRegisterTime===u.registerTime&&e("color:",w.colour("good")),S(u.registerTime)}))})})},u=>e.peek(r,"value")?[-u.onlineTime,-u.userId]:-u.userId)})})};le({"Admin.users":B.users});B.menu=t=>{ue.isAdmin&&(Ce(n("Administration"),en),e(()=>{var i;const s=[],o=ue.roles;for(const r in o){const a=o[r];a.id!==((i=ue.user)==null?void 0:i.id)&&s.push({text:a.name,cb:()=>y.send("Admin.changeRole",a.id)})}s.length&&Ce(n("Switch Roles"),s)}),Ce(n("Developer Tools"),tn))};const Ce=(t,s)=>{e("h1",()=>{e("#",t)});for(const o of s)e("div",()=>{A.renderLink(o.text,o.path??o.cb)})},en=[{text:n("Users"),path:"Admin.users"},{text:n("Content reports"),path:"Admin.reports"},{text:n("Phone lookup"),path:"Admin.phoneLookup"},{text:n("Photos"),path:"Admin.photos"},{text:n("Moments"),path:"Admin.moments"},{text:n("Blind Dates"),path:"Admin.blindDates"}],tn=[{text:"Serverlog",path:"Admin.log"},{text:"Support Questions",path:"Admin.chat"},{text:"MatchReport",path:"Admin.matchReport"},{text:"Matching",path:"Admin.matcher"},{text:"Graphs",path:"Admin.graphs"},{text:"Email volume",path:"Admin.emailStats"},{text:"ILCS Status",cb:()=>window.open(location.origin+"/Admin/ilcs?")},{text:"Bugs",cb:()=>window.open(location.origin+"/bugs/")},{text:"Test server (app)",cb:()=>T(on)}],on=t=>{if(t.setTitle(n("Testserver")),!Tt.app){e("p","#",n("Dit werkt alleen in de app: de site zelf staat al op de server waar je hem opent.")),t.setButtons([n("Sluiten")]);return}
6e("p","#",n("Laat de app op dit toestel een testserver gebruiken in plaats van %1. Alleen https-adressen onder paiq.nl.",ye));const s=U({value:Ct()||"https://",label:n("Adres"),testMarker:"testHost"});t.setButtons([{text:n("Uitschakelen"),type:"extra",opts:{testMarker:"testHostOff"},cb:()=>{Ue(""),ie.show("testHost",n("De app gebruikt weer %1.",ye))}},n("Annuleren"),{text:n("Instellen"),type:"action",opts:{testMarker:"testHostSet"},cb:()=>{if(!Ue(s.getValue()))return s.setError(n("Alleen https://<naam>.paiq.nl, met eventueel een poort.")),!1;St()||ie.show("testHost",n("Opgeslagen: de app gaat hierheen zodra hij vanaf %1 start.",ye))}}])},dt={Admin:t=>B.menu(t)};for(const t of zt){const s=t.slice(6);dt[t]=(...o)=>B[s](...o)}le(dt);export{B as Admin};
7;(function(g,u){(g._paiqDebugIds=g._paiqDebugIds||{})[u]="cf165e0b-d59e-4d51-bae5-9e27a54bd0cc"})(globalThis,import.meta.url);
8//# sourceMappingURL=admin.Dcv4AqMX.js.map

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.