vendor: 2,025 bytes, lines 1-5
1(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();/** 2* @vue/shared v3.5.29 3* (c) 2018-present Yuxi (Evan) You and Vue contributors 4* @license MIT 5**/function _r(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const re={},Et=[],qe=()=>{},$i=()=>!1,On=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ar=e=>e.startsWith("onUpdate:"),ge=Object.assign,Lr=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},oa=Object.prototype.hasOwnProperty,Q=(e,t)=>oa.call(e,t),$=Array.isArray,It=e=>ln(e)==="[object Map]",zi=e=>ln(e)==="[object Set]",qr=e=>ln(e)==="[object Date]",H=e=>typeof e=="function",ue=e=>typeof e=="string",De=e=>typeof e=="symbol",X=e=>e!==null&&typeof e=="object",Hi=e=>(X(e)||H(e))&&H(e.then)&&H(e.catch),ji=Object.prototype.toString,ln=e=>ji.call(e),la=e=>ln(e).slice(8,-1),Ki=e=>ln(e)==="[object Object]",Mr=e=>ue(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Vt=_r(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Dn=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},ca=/-\w/g,ut=Dn(e=>e.replace(ca,t=>t.slice(1).toUpperCase())),da=/\B([A-Z])/g,Lt=Dn(e=>e.replace(da,"-$1").toLowerCase()),Wi=Dn(e=>e.charAt(0).toUpperCase()+e.slice(1)),qn=Dn(e=>e?`on${Wi(e)}`:""),dt=(e,t)=>
vendor: 2,186 bytes, lines 5-8
5!Object.is(e,t),kn=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},Vi=(e,t,n,r=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},Sr=e=>{const t=parseFloat(e);return isNaN(t)?e:t},ua=e=>{const t=ue(e)?Number(e):NaN;return isNaN(t)?e:t};let Yr;const Fn=()=>Yr||(Yr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Cr(e){if($(e)){const t={};for(let n=0;n<e.length;n++){const r=e[n],i=ue(r)?ga(r):Cr(r);if(i)for(const s in i)t[s]=i[s]}return t}else if(ue(e)||X(e))return e}const ha=/;(?![^(]*\))/g,fa=/:([^]+)/,pa=/\/\*[^]*?\*\//g;function ga(e){const t={};return e.replace(pa,"").split(ha).forEach(n=>{if(n){const r=n.split(fa);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function he(e){let t="";if(ue(e))t=e;else if($(e))for(let n=0;n<e.length;n++){const r=he(e[n]);r&&(t+=r+" ")}else if(X(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}const ma="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",ba=_r(ma);function Ui(e){return!!e||e===""}function va(e,t){if(e.length!==t.length)return!1;let n=!0;for(let r=0;n&&r<e.length;r++)n=Tr(e[r],t[r]);return n}function Tr(e,t){if(e===t)return!0;let n=qr(e),r=qr(t);if(n||r)return n&&r?e.getTime()===t.getTime():!1;if(n=De(e),r=De(t),n||r)return e===t;if(n=$(e),r=$(t),n||r)return n&&r?va(e,t):!1;if(n=X(e),r=X(t),n||r){if(!n||!r)return!1;const i=Object.keys(e).length,s=Object.keys(t).length;if(i!==s)return!1;for(const a in e){const o=e.hasOwnProperty(a),l=t.hasOwnProperty(a);if(o&&!l||!o&&l||!Tr(e[a],t[a]))return!1}}return String(e)===String(t)}const Gi=e=>!!(e&&e.__v_isRef===!0),W=e=>ue(e)?e:e==null?"":$(e)||X(e)&&(e.toString===ji||!H(e.toString))?Gi(e)?W(e.value):JSON.stringify(e,Ji,2):String(e),Ji=(e,t)=>Gi(t)?Ji(e,t.value):It(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,i],s)=>(n[Yn(r,s)+" =>"]=i,n),{})}:zi(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Yn(n))}:De(t)?Yn(t):X(t)&&!$(t)&&!Ki(t)?String(t):t,Yn=(e,t="")=>{var n;return De(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** 6* @vue/reactivity v3.5.29 7* (c) 2018-present Yuxi (Evan) You and Vue contributors 8* @license MIT
vendor: 5,427 bytes, line 9
9**/let Te;class ka{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.__v_skip=!0,this.parent=Te,!t&&Te&&(this.index=(Te.scopes||(Te.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].pause();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].resume();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].resume()}}run(t){if(this._active){const n=Te;try{return Te=this,t()}finally{Te=n}}}on(){++this._on===1&&(this.prevScope=Te,Te=this)}off(){this._on>0&&--this._on===0&&(Te=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,r;for(n=0,r=this.effects.length;n<r;n++)this.effects[n].stop();for(this.effects.length=0,n=0,r=this.cleanups.length;n<r;n++)this.cleanups[n]();if(this.cleanups.length=0,this.scopes){for(n=0,r=this.scopes.length;n<r;n++)this.scopes[n].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const i=this.parent.scopes.pop();i&&i!==this&&(this.parent.scopes[this.index]=i,i.index=this.index)}this.parent=void 0}}}function ya(){return Te}let oe;const Zn=new WeakSet;class qi{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,Te&&Te.active&&Te.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Zn.has(this)&&(Zn.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Zi(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,Zr(this),Qi(this);const t=oe,n=Oe;oe=this,Oe=!0;try{return this.fn()}finally{Xi(this),oe=t,Oe=n,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)Rr(t);this.deps=this.depsTail=void 0,Zr(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Zn.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){lr(this)&&this.run()}get dirty(){return lr(this)}}let Yi=0,Ut,Gt;function Zi(e,t=!1){if(e.flags|=8,t){e.next=Gt,Gt=e;return}e.next=Ut,Ut=e}function Er(){Yi++}function Ir(){if(--Yi>0)return;if(Gt){let t=Gt;for(Gt=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Ut;){let t=Ut;for(Ut=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function Qi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Xi(e){let t,n=e.depsTail,r=n;for(;r;){const i=r.prevDep;r.version===-1?(r===n&&(n=i),Rr(r),wa(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=i}e.deps=t,e.depsTail=n}function lr(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(es(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function es(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Xt)||(e.globalVersion=Xt,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!lr(e))))return;e.flags|=2;const t=e.dep,n=oe,r=Oe;oe=e,Oe=!0;try{Qi(e);const i=e.fn(e._value);(t.version===0||dt(i,e._value))&&(e.flags|=128,e._value=i,t.version++)}catch(i){throw t.version++,i}finally{oe=n,Oe=r,Xi(e),e.flags&=-3}}function Rr(e,t=!1){const{dep:n,prevSub:r,nextSub:i}=e;if(r&&(r.nextSub=i,e.prevSub=void 0),i&&(i.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let s=n.computed.deps;s;s=s.nextDep)Rr(s,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function wa(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Oe=!0;const ts=[];function rt(){ts.push(Oe),Oe=!1}function it(){const e=ts.pop();Oe=e===void 0?!0:e}function Zr(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=oe;oe=void 0;try{t()}finally{oe=n}}}let Xt=0;class xa{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Pr{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!oe||!Oe||oe===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==oe)n=this.activeLink=new xa(oe,this),oe.deps?(n.prevDep=oe.depsTail,oe.depsTail.nextDep=n,oe.depsTail=n):oe.deps=oe.depsTail=n,ns(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=oe.depsTail,n.nextDep=void 0,oe.depsTail.nextDep=n,oe.depsTail=n,oe.deps===n&&(oe.deps=r)}return n}trigger(t){this.version++,Xt++,this.notify(t)}notify(t){Er();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Ir()}}}function ns(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)ns(r)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const cr=new WeakMap,_t=Symbol(""),dr=Symbol(""),en=Symbol("");function ye(e,t,n){if(Oe&&oe){let r=cr.get(e);r||cr.set(e,r=new Map);let i=r.get(n);i||(r.set(n,i=new Pr),i.map=r,i.key=n),i.track()}}function tt(e,t,n,r,i,s){const a=cr.get(e);if(!a){Xt++;return}const o=l=>{l&&l.trigger()};
vendor: 4,560 bytes, line 9
9if(Er(),t==="clear")a.forEach(o);else{const l=$(e),f=l&&Mr(n);if(l&&n==="length"){const u=Number(r);a.forEach((p,b)=>{(b==="length"||b===en||!De(b)&&b>=u)&&o(p)})}else switch((n!==void 0||a.has(void 0))&&o(a.get(n)),f&&o(a.get(en)),t){case"add":l?f&&o(a.get("length")):(o(a.get(_t)),It(e)&&o(a.get(dr)));break;case"delete":l||(o(a.get(_t)),It(e)&&o(a.get(dr)));break;case"set":It(e)&&o(a.get(_t));break}}Ir()}function St(e){const t=Z(e);return t===e?t:(ye(t,"iterate",en),Be(e)?t:t.map(Fe))}function $n(e){return ye(e=Z(e),"iterate",en),e}function lt(e,t){return st(e)?Bt(At(e)?Fe(t):t):Fe(t)}const _a={__proto__:null,[Symbol.iterator](){return Qn(this,Symbol.iterator,e=>lt(this,e))},concat(...e){return St(this).concat(...e.map(t=>$(t)?St(t):t))},entries(){return Qn(this,"entries",e=>(e[1]=lt(this,e[1]),e))},every(e,t){return Ze(this,"every",e,t,void 0,arguments)},filter(e,t){return Ze(this,"filter",e,t,n=>n.map(r=>lt(this,r)),arguments)},find(e,t){return Ze(this,"find",e,t,n=>lt(this,n),arguments)},findIndex(e,t){return Ze(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ze(this,"findLast",e,t,n=>lt(this,n),arguments)},findLastIndex(e,t){return Ze(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ze(this,"forEach",e,t,void 0,arguments)},includes(...e){return Xn(this,"includes",e)},indexOf(...e){return Xn(this,"indexOf",e)},join(e){return St(this).join(e)},lastIndexOf(...e){return Xn(this,"lastIndexOf",e)},map(e,t){return Ze(this,"map",e,t,void 0,arguments)},pop(){return zt(this,"pop")},push(...e){return zt(this,"push",e)},reduce(e,...t){return Qr(this,"reduce",e,t)},reduceRight(e,...t){return Qr(this,"reduceRight",e,t)},shift(){return zt(this,"shift")},some(e,t){return Ze(this,"some",e,t,void 0,arguments)},splice(...e){return zt(this,"splice",e)},toReversed(){return St(this).toReversed()},toSorted(e){return St(this).toSorted(e)},toSpliced(...e){return St(this).toSpliced(...e)},unshift(...e){return zt(this,"unshift",e)},values(){return Qn(this,"values",e=>lt(this,e))}};function Qn(e,t,n){const r=$n(e),i=r[t]();return r!==e&&!Be(e)&&(i._next=i.next,i.next=()=>{const s=i._next();return s.done||(s.value=n(s.value)),s}),i}const Aa=Array.prototype;function Ze(e,t,n,r,i,s){const a=$n(e),o=a!==e&&!Be(e),l=a[t];if(l!==Aa[t]){const p=l.apply(e,s);return o?Fe(p):p}let f=n;a!==e&&(o?f=function(p,b){return n.call(this,lt(e,p),b,e)}:n.length>2&&(f=function(p,b){return n.call(this,p,b,e)}));const u=l.call(a,f,r);return o&&i?i(u):u}function Qr(e,t,n,r){const i=$n(e);let s=n;return i!==e&&(Be(e)?n.length>3&&(s=function(a,o,l){return n.call(this,a,o,l,e)}):s=function(a,o,l){return n.call(this,a,lt(e,o),l,e)}),i[t](s,...r)}function Xn(e,t,n){const r=Z(e);ye(r,"iterate",en);const i=r[t](...n);return(i===-1||i===!1)&&Dr(n[0])?(n[0]=Z(n[0]),r[t](...n)):i}function zt(e,t,n=[]){rt(),Er();const r=Z(e)[t].apply(e,n);return Ir(),it(),r}const La=_r("__proto__,__v_isRef,__isVue"),rs=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(De));function Ma(e){De(e)||(e=String(e));const t=Z(this);return ye(t,"has",e),t.hasOwnProperty(e)}class is{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){if(n==="__v_skip")return t.__v_skip;const i=this._isReadonly,s=this._isShallow;if(n==="__v_isReactive")return!i;if(n==="__v_isReadonly")return i;if(n==="__v_isShallow")return s;if(n==="__v_raw")return r===(i?s?Oa:ls:s?os:as).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const a=$(t);if(!i){let l;if(a&&(l=_a[n]))return l;if(n==="hasOwnProperty")return Ma}const o=Reflect.get(t,n,be(t)?t:r);if((De(n)?rs.has(n):La(n))||(i||ye(t,"get",n),s))return o;if(be(o)){const l=a&&Mr(n)?o:o.value;return i&&X(l)?hr(l):l}return X(o)?i?hr(o):Br(o):o}}class ss extends is{constructor(t=!1){super(!1,t)}set(t,n,r,i){let s=t[n];const a=$(t)&&Mr(n);if(!this._isShallow){const f=st(s);if(!Be(r)&&!st(r)&&(s=Z(s),r=Z(r)),!a&&be(s)&&!be(r))return f||(s.value=r),!0}const o=a?Number(n)<t.length:Q(t,n),l=Reflect.set(t,n,r,be(t)?t:i);return t===Z(i)&&(o?dt(r,s)&&tt(t,"set",n,r):tt(t,"add",n,r)),l}deleteProperty(t,n){const r=Q(t,n);t[n];const i=Reflect.deleteProperty(t,n);return i&&r&&tt(t,"delete",n,void 0),i}has(t,n){const r=Reflect.has(t,n);return(!De(n)||!rs.has(n))&&ye(t,"has",n),r}ownKeys(t){return ye(t,"iterate",$(t)?"length":_t),Reflect.ownKeys(t)}}class Sa extends is{constructor(t=!1){super(!0,t)}set(t,n){return!0}deleteProperty(t,n){return!0}}const Ca=new ss,Ta=new Sa,Ea=new ss(!0);const ur=e=>e,pn=e=>Reflect.getPrototypeOf(e);
vendor: 4,493 bytes, line 9
9function Ia(e,t,n){return function(...r){const i=this.__v_raw,s=Z(i),a=It(s),o=e==="entries"||e===Symbol.iterator&&a,l=e==="keys"&&a,f=i[e](...r),u=n?ur:t?Bt:Fe;return!t&&ye(s,"iterate",l?dr:_t),ge(Object.create(f),{next(){const{value:p,done:b}=f.next();return b?{value:p,done:b}:{value:o?[u(p[0]),u(p[1])]:u(p),done:b}}})}}function gn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Ra(e,t){const n={get(i){const s=this.__v_raw,a=Z(s),o=Z(i);e||(dt(i,o)&&ye(a,"get",i),ye(a,"get",o));const{has:l}=pn(a),f=t?ur:e?Bt:Fe;if(l.call(a,i))return f(s.get(i));if(l.call(a,o))return f(s.get(o));s!==a&&s.get(i)},get size(){const i=this.__v_raw;return!e&&ye(Z(i),"iterate",_t),i.size},has(i){const s=this.__v_raw,a=Z(s),o=Z(i);return e||(dt(i,o)&&ye(a,"has",i),ye(a,"has",o)),i===o?s.has(i):s.has(i)||s.has(o)},forEach(i,s){const a=this,o=a.__v_raw,l=Z(o),f=t?ur:e?Bt:Fe;return!e&&ye(l,"iterate",_t),o.forEach((u,p)=>i.call(s,f(u),f(p),a))}};return ge(n,e?{add:gn("add"),set:gn("set"),delete:gn("delete"),clear:gn("clear")}:{add(i){!t&&!Be(i)&&!st(i)&&(i=Z(i));const s=Z(this);return pn(s).has.call(s,i)||(s.add(i),tt(s,"add",i,i)),this},set(i,s){!t&&!Be(s)&&!st(s)&&(s=Z(s));const a=Z(this),{has:o,get:l}=pn(a);let f=o.call(a,i);f||(i=Z(i),f=o.call(a,i));const u=l.call(a,i);return a.set(i,s),f?dt(s,u)&&tt(a,"set",i,s):tt(a,"add",i,s),this},delete(i){const s=Z(this),{has:a,get:o}=pn(s);let l=a.call(s,i);l||(i=Z(i),l=a.call(s,i)),o&&o.call(s,i);const f=s.delete(i);return l&&tt(s,"delete",i,void 0),f},clear(){const i=Z(this),s=i.size!==0,a=i.clear();return s&&tt(i,"clear",void 0,void 0),a}}),["keys","values","entries",Symbol.iterator].forEach(i=>{n[i]=Ia(i,e,t)}),n}function Nr(e,t){const n=Ra(e,t);return(r,i,s)=>i==="__v_isReactive"?!e:i==="__v_isReadonly"?e:i==="__v_raw"?r:Reflect.get(Q(n,i)&&i in r?n:r,i,s)}const Pa={get:Nr(!1,!1)},Na={get:Nr(!1,!0)},Ba={get:Nr(!0,!1)};const as=new WeakMap,os=new WeakMap,ls=new WeakMap,Oa=new WeakMap;function Da(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Fa(e){return e.__v_skip||!Object.isExtensible(e)?0:Da(la(e))}function Br(e){return st(e)?e:Or(e,!1,Ca,Pa,as)}function $a(e){return Or(e,!1,Ea,Na,os)}function hr(e){return Or(e,!0,Ta,Ba,ls)}function Or(e,t,n,r,i){if(!X(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const s=Fa(e);if(s===0)return e;const a=i.get(e);if(a)return a;const o=new Proxy(e,s===2?r:n);return i.set(e,o),o}function At(e){return st(e)?At(e.__v_raw):!!(e&&e.__v_isReactive)}function st(e){return!!(e&&e.__v_isReadonly)}function Be(e){return!!(e&&e.__v_isShallow)}function Dr(e){return e?!!e.__v_raw:!1}function Z(e){const t=e&&e.__v_raw;return t?Z(t):e}function za(e){return!Q(e,"__v_skip")&&Object.isExtensible(e)&&Vi(e,"__v_skip",!0),e}const Fe=e=>X(e)?Br(e):e,Bt=e=>X(e)?hr(e):e;function be(e){return e?e.__v_isRef===!0:!1}function Ee(e){return Ha(e,!1)}function Ha(e,t){return be(e)?e:new ja(e,t)}class ja{constructor(t,n){this.dep=new Pr,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:Z(t),this._value=n?t:Fe(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,r=this.__v_isShallow||Be(t)||st(t);t=r?t:Z(t),dt(t,n)&&(this._rawValue=t,this._value=r?t:Fe(t),this.dep.trigger())}}function G(e){return be(e)?e.value:e}const Ka={get:(e,t,n)=>t==="__v_raw"?e:G(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const i=e[t];return be(i)&&!be(n)?(i.value=n,!0):Reflect.set(e,t,n,r)}};function cs(e){return At(e)?e:new Proxy(e,Ka)}class Wa{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Pr(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Xt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&oe!==this)return Zi(this,!0),!0}get value(){const t=this.dep.track();return es(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Va(e,t,n=!1){let r,i;return H(e)?r=e:(r=e.get,i=e.set),new Wa(r,i,n)}const mn={},Ln=new WeakMap;let wt;function Ua(e,t=!1,n=wt){if(n){let r=Ln.get(n);r||Ln.set(n,r=[]),r.push(e)}}function Ga(e,t,n=re){const{immediate:r,deep:i,once:s,scheduler:a,augmentJob:o,call:l}=n,f=E=>i?E:Be(E)||i===!1||i===0?nt(E,1):nt(E);let u,p,b,A,R=!1,I=!1;if(be(e)?(p=()=>e.value,R=Be(e)):At(e)?(p=()=>f(e),R=!0):$(e)?(I=!0,R=e.some(E=>At(E)||Be(E)),p=()=>e.map(E=>
vendor: 1,415 bytes, lines 9-12
9{if(be(E))return E.value;if(At(E))return f(E);if(H(E))return l?l(E,2):E()})):H(e)?t?p=l?()=>l(e,2):e:p=()=>{if(b){rt();try{b()}finally{it()}}const E=wt;wt=u;try{return l?l(e,3,[A]):e(A)}finally{wt=E}}:p=qe,t&&i){const E=p,S=i===!0?1/0:i;p=()=>nt(E(),S)}const V=ya(),j=()=>{u.stop(),V&&V.active&&Lr(V.effects,u)};if(s&&t){const E=t;t=(...S)=>{E(...S),j()}}let D=I?new Array(e.length).fill(mn):mn;const J=E=>{if(!(!(u.flags&1)||!u.dirty&&!E))if(t){const S=u.run();if(i||R||(I?S.some((C,ne)=>dt(C,D[ne])):dt(S,D))){b&&b();const C=wt;wt=u;try{const ne=[S,D===mn?void 0:I&&D[0]===mn?[]:D,A];D=S,l?l(t,3,ne):t(...ne)}finally{wt=C}}}else u.run()};return o&&o(J),u=new qi(p),u.scheduler=a?()=>a(J,!1):J,A=E=>Ua(E,!1,u),b=u.onStop=()=>{const E=Ln.get(u);if(E){if(l)l(E,4);else for(const S of E)S();Ln.delete(u)}},t?r?J(!0):D=u.run():a?a(J.bind(null,!0),!0):u.run(),j.pause=u.pause.bind(u),j.resume=u.resume.bind(u),j.stop=j,j}function nt(e,t=1/0,n){if(t<=0||!X(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,be(e))nt(e.value,t,n);else if($(e))for(let r=0;r<e.length;r++)nt(e[r],t,n);else if(zi(e)||It(e))e.forEach(r=>{nt(r,t,n)});else if(Ki(e)){for(const r in e)nt(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&nt(e[r],t,n)}return e}/** 10* @vue/runtime-core v3.5.29 11* (c) 2018-present Yuxi (Evan) You and Vue contributors 12* @license MIT
13**/function cn(e,t,n,r){try{return r?e(...r):e()}catch(i){zn(i,t,n)}}function $e(e,t,n,r){if(H(e)){const i=cn(e,t,n,r);return i&&Hi(i)&&i.catch(s=>{zn(s,t,n)}),i}if($(e)){const i=[];for(let s=0;s<e.length;s++)i.push($e(e[s],t,n,r));return i}}function zn(e,t,n,r=!0){const i=t?t.vnode:null,{errorHandler:s,throwUnhandledErrorInProduction:a}=t&&t.appContext.config||re;if(t){let o=t.parent;const l=t.proxy,f=`https://vuejs.org/error-reference/#runtime-${n}`;for(;o;){const u=o.ec;if(u){for(let p=0;p<u.length;p++)if(u[p](e,l,f)===!1)return}o=o.parent}if(s){rt(),cn(s,null,10,[e,l,f]),it();return}}Ja(e,n,i,r,a)}function Ja(e,t,n,r=!0,i=!1){if(i)throw e;console.error(e)}const Ae=[];let Ue=-1;const Rt=[];let ct=null,Ct=0;const ds=Promise.resolve();let Mn=null;function us(e){const t=Mn||ds;return e?t.then(this?e.bind(this):e):t}function qa(e){let t=Ue+1,n=Ae.length;for(;t<n;){const r=t+n>>>1,i=Ae[r],s=tn(i);s<e||s===e&&i.flags&2?t=r+1:n=r}return t}function Fr(e){if(!(e.flags&1)){const t=tn(e),n=Ae[Ae.length-1];!n||!(e.flags&2)&&t>=tn(n)?Ae.push(e):Ae.splice(qa(t),0,e),e.flags|=1,hs()}}function hs(){Mn||(Mn=ds.then(ps))}function Ya(e){$(e)?Rt.push(...e):ct&&e.id===-1?ct.splice(Ct+1,0,e):e.flags&1||(Rt.push(e),e.flags|=1),hs()}function Xr(e,t,n=Ue+1){for(;n<Ae.length;n++){const r=Ae[n];if(r&&r.flags&2){if(e&&r.id!==e.uid)continue;Ae.splice(n,1),n--,r.flags&4&&(r.flags&=-2),r(),r.flags&4||(r.flags&=-2)}}}function fs(e){if(Rt.length){const t=[...new Set(Rt)].sort((n,r)=>tn(n)-tn(r));if(Rt.length=0,ct){ct.push(...t);return}for(ct=t,Ct=0;Ct<ct.length;Ct++){const n=ct[Ct];n.flags&4&&(n.flags&=-2),n.flags&8||n(),n.flags&=-2}ct=null,Ct=0}}const tn=e=>e.id==null?e.flags&2?-1:1/0:e.id;function ps(e){try{for(Ue=0;Ue<Ae.length;Ue++){const t=Ae[Ue];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),cn(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;Ue<Ae.length;Ue++){const t=Ae[Ue];t&&(t.flags&=-2)}Ue=-1,Ae.length=0,fs(),Mn=null,(Ae.length||Rt.length)&&ps()}}let xe=null,gs=null;function Sn(e){const t=xe;return xe=e,gs=e&&e.type.__scopeId||null,t}function Me(e,t=xe,n){if(!t||e._n)return e;const r=(...i)=>{r._d&&En(-1);const s=Sn(t);let a;try{a=e(...i)}finally{Sn(s),r._d&&En(1)}return a};return r._n=!0,r._c=!0,r._d=!0,r}function Za(e,t){if(xe===null)return e;const n=Un(xe),r=e.dirs||(e.dirs=[]);for(let i=0;i<t.length;i++){let[s,a,o,l=re]=t[i];s&&(H(s)&&(s={mounted:s,updated:s}),s.deep&&nt(a),r.push({dir:s,instance:n,value:a,oldValue:void 0,arg:o,modifiers:l}))}return e}function mt(e,t,n,r){const i=e.dirs,s=t&&t.dirs;for(let a=0;a<i.length;a++){const o=i[a];s&&(o.oldValue=s[a].value);let l=o.dir[r];l&&(rt(),$e(l,n,8,[e.el,o,e,t]),it())}}function Qa(e,t){if(Le){let n=Le.provides;const r=Le.parent&&Le.parent.provides;r===n&&(n=Le.provides=Object.create(r)),n[e]=t}}function yn(e,t,n=!1){const r=Js();if(r||Nt){let i=Nt?Nt._context.provides:r?r.parent==null||r.ce?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides:void 0;if(i&&e in i)return i[e];if(arguments.length>1)return n&&H(t)?t.call(r&&r.proxy):t}}const Xa=Symbol.for("v-scx"),eo=()=>yn(Xa);function Jt(e,t,n){return ms(e,t,n)}function ms(e,t,n=re){const{immediate:r,deep:i,flush:s,once:a}=n,o=ge({},n),l=t&&r||!t&&s!=="post";let f;if(an){if(s==="sync"){const A=eo();f=A.__watcherHandles||(A.__watcherHandles=[])}else if(!l){const A=()=>{};return A.stop=qe,A.resume=qe,A.pause=qe,A}}const u=Le;o.call=(A,R,I)=>$e(A,u,R,I);let p=!1;s==="post"?o.scheduler=A=>{ke(A,u&&u.suspense)}:s!=="sync"&&(p=!0,o.scheduler=(A,R)=>{R?A():Fr(A)}),o.augmentJob=A=>{t&&(A.flags|=4),p&&(A.flags|=2,u&&(A.id=u.uid,A.i=u))};const b=Ga(e,t,o);return an&&(f?f.push(b):l&&b()),b}function to(e,t,n){const r=this.proxy,i=ue(e)?e.includes(".")?bs(r,e):()=>r[e]:e.bind(r,r);let s;H(t)?s=t:(s=t.handler,n=t);const a=dn(this),o=ms(i,s.bind(r),n);return a(),o}function bs(e,t){const n=t.split(".");return()=>{let r=e;for(let i=0;i<n.length&&r;i++)r=r[n[i]];return r}}const vs=Symbol("_vte"),ks=e=>e.__isTeleport,qt=e=>e&&(e.disabled||e.disabled===""),ei=e=>e&&(e.defer||e.defer===""),ti=e=>typeof SVGElement<"u"&&e instanceof SVGElement,ni=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,fr=(e,t)=>{const n=e&&e.to;return ue(n)?t?t(n):null:n},ys={name:"Teleport",__isTeleport:!0,process(e,t,n,r,i,s,a,o,l,f){const{mc:u,pc:p,pbc:b,o:{insert:A,querySelector:R,createText:I,createComment:V}}=f,j=qt(t.props);let{shapeFlag:D,children:J,dynamicChildren:E}=t;if(e==null){const S=t.el=I(""),C=t.anchor=I("");A(S,n,r),A(C,n,r);const ne=(N,U)=>{D&16&&u(J,N,U,i,s,a,o,l)},ee=()=>{const N=t.target=fr(t.props,R),U=pr(N,t,I,A);N&&(a!=="svg"&&ti(N)?a="svg":a!=="mathml"&&ni(N)&&(a="mathml"),i&&i.isCE&&(i.ce._teleportTargets||(i.ce._teleportTargets=new Set)).add(N),j||(ne(N,U),wn(t,!1)))};j&&(ne(n,C),wn(t,!0)),ei(t.props)?(t.el.__isMounted=!1,ke(()=>{ee(),delete t.el.__isMounted},s)):ee()}else{if(ei(t.props)&&e.el.__isMounted===!1){ke(()=>{ys.process(e,t,n,r,i,s,a,o,l,f)},s);return}t.el=e.el,t.targetStart=e.targetStart;const S=t.anchor=e.anchor,C=t.target=e.target,ne=t.targetAnchor=e.targetAnchor,ee=qt(e.props),N=ee?n:C,U=ee?S:ne;if(a==="svg"||ti(C)?a="svg":(a==="mathml"||ni(C))&&(a="mathml"),E?(b(e.dynamicChildren,E,N,i,s,a,o),Hr(e,t,!0)):l||p(e,t,N,U,i,s,a,o,!1),j)ee?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):bn(t,
vendor: 5,157 bytes, line 13
13n,S,f,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const ie=t.target=fr(t.props,R);ie&&bn(t,ie,null,f,0)}else ee&&bn(t,C,ne,f,1);wn(t,j)}},remove(e,t,n,{um:r,o:{remove:i}},s){const{shapeFlag:a,children:o,anchor:l,targetStart:f,targetAnchor:u,target:p,props:b}=e;if(p&&(i(f),i(u)),s&&i(l),a&16){const A=s||!qt(b);for(let R=0;R<o.length;R++){const I=o[R];r(I,t,n,A,!!I.dynamicChildren)}}},move:bn,hydrate:no};function bn(e,t,n,{o:{insert:r},m:i},s=2){s===0&&r(e.targetAnchor,t,n);const{el:a,anchor:o,shapeFlag:l,children:f,props:u}=e,p=s===2;if(p&&r(a,t,n),(!p||qt(u))&&l&16)for(let b=0;b<f.length;b++)i(f[b],t,n,2);p&&r(o,t,n)}function no(e,t,n,r,i,s,{o:{nextSibling:a,parentNode:o,querySelector:l,insert:f,createText:u}},p){function b(V,j){let D=j;for(;D;){if(D&&D.nodeType===8){if(D.data==="teleport start anchor")t.targetStart=D;else if(D.data==="teleport anchor"){t.targetAnchor=D,V._lpa=t.targetAnchor&&a(t.targetAnchor);break}}D=a(D)}}function A(V,j){j.anchor=p(a(V),j,o(V),n,r,i,s)}const R=t.target=fr(t.props,l),I=qt(t.props);if(R){const V=R._lpa||R.firstChild;t.shapeFlag&16&&(I?(A(e,t),b(R,V),t.targetAnchor||pr(R,t,u,f,o(e)===R?e:null)):(t.anchor=a(e),b(R,V),t.targetAnchor||pr(R,t,u,f),p(V&&a(V),t,R,n,r,i,s))),wn(t,I)}else I&&t.shapeFlag&16&&(A(e,t),t.targetStart=e,t.targetAnchor=a(e));return t.anchor&&a(t.anchor)}const ro=ys;function wn(e,t){const n=e.ctx;if(n&&n.ut){let r,i;for(t?(r=e.el,i=e.anchor):(r=e.targetStart,i=e.targetAnchor);r&&r!==i;)r.nodeType===1&&r.setAttribute("data-v-owner",n.uid),r=r.nextSibling;n.ut()}}function pr(e,t,n,r,i=null){const s=t.targetStart=n(""),a=t.targetAnchor=n("");return s[vs]=a,e&&(r(s,e,i),r(a,e,i)),a}const Ge=Symbol("_leaveCb"),Ht=Symbol("_enterCb");function io(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Ot(()=>{e.isMounted=!0}),Cs(()=>{e.isUnmounting=!0}),e}const Pe=[Function,Array],ws={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Pe,onEnter:Pe,onAfterEnter:Pe,onEnterCancelled:Pe,onBeforeLeave:Pe,onLeave:Pe,onAfterLeave:Pe,onLeaveCancelled:Pe,onBeforeAppear:Pe,onAppear:Pe,onAfterAppear:Pe,onAppearCancelled:Pe},xs=e=>{const t=e.subTree;return t.component?xs(t.component):t},so={name:"BaseTransition",props:ws,setup(e,{slots:t}){const n=Js(),r=io();return()=>{const i=t.default&&Ls(t.default(),!0);if(!i||!i.length)return;const s=_s(i),a=Z(e),{mode:o}=a;if(r.isLeaving)return er(s);const l=ri(s);if(!l)return er(s);let f=gr(l,a,r,n,p=>f=p);l.type!==we&&nn(l,f);let u=n.subTree&&ri(n.subTree);if(u&&u.type!==we&&!xt(u,l)&&xs(n).type!==we){let p=gr(u,a,r,n);if(nn(u,p),o==="out-in"&&l.type!==we)return r.isLeaving=!0,p.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete p.afterLeave,u=void 0},er(s);o==="in-out"&&l.type!==we?p.delayLeave=(b,A,R)=>{const I=As(r,u);I[String(u.key)]=u,b[Ge]=()=>{A(),b[Ge]=void 0,delete f.delayedLeave,u=void 0},f.delayedLeave=()=>{R(),delete f.delayedLeave,u=void 0}}:u=void 0}else u&&(u=void 0);return s}}};function _s(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==we){t=n;break}}return t}const ao=so;function As(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function gr(e,t,n,r,i){const{appear:s,mode:a,persisted:o=!1,onBeforeEnter:l,onEnter:f,onAfterEnter:u,onEnterCancelled:p,onBeforeLeave:b,onLeave:A,onAfterLeave:R,onLeaveCancelled:I,onBeforeAppear:V,onAppear:j,onAfterAppear:D,onAppearCancelled:J}=t,E=String(e.key),S=As(n,e),C=(N,U)=>{N&&$e(N,r,9,U)},ne=(N,U)=>{const ie=U[1];C(N,U),$(N)?N.every(P=>P.length<=1)&&ie():N.length<=1&&ie()},ee={mode:a,persisted:o,beforeEnter(N){let U=l;if(!n.isMounted)if(s)U=V||l;else return;N[Ge]&&N[Ge](!0);const ie=S[E];ie&&xt(e,ie)&&ie.el[Ge]&&ie.el[Ge](),C(U,[N])},enter(N){if(S[E]===e)return;let U=f,ie=u,P=p;if(!n.isMounted)if(s)U=j||f,ie=D||u,P=J||p;else return;let ce=!1;N[Ht]=Ye=>{ce||(ce=!0,Ye?C(P,[N]):C(ie,[N]),ee.delayedLeave&&ee.delayedLeave(),N[Ht]=void 0)};const ve=N[Ht].bind(null,!1);U?ne(U,[N,ve]):ve()},leave(N,U){const ie=String(e.key);if(N[Ht]&&N[Ht](!0),n.isUnmounting)return U();C(b,[N]);let P=!1;N[Ge]=ve=>{P||(P=!0,U(),ve?C(I,[N]):C(R,[N]),N[Ge]=void 0,S[ie]===e&&delete S[ie])};const ce=N[Ge].bind(null,!1);S[ie]=e,A?ne(A,[N,ce]):ce()},clone(N){const U=gr(N,t,n,r,i);return i&&i(U),U}};return ee}function er(e){if(Hn(e))return e=ht(e),e.children=null,e}function ri(e){if(!Hn(e))return ks(e.type)&&e.children?_s(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&H(n.default))return n.default()}}function nn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,nn(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Ls(e,t=!1,n){let r=[],i=0;for(let s=0;s<e.length;s++){let a=e[s];const o=n==null?a.key:String(n)+String(a.key!=null?a.key:s);a.type===Y?(a.patchFlag&128&&i++,r=r.concat(Ls(a.children,t,o))):(t||a.type!==we)&&r.push(o!=null?ht(a,{key:o}):a)}if(i>1)for(let s=0;s<r.length;s++)r[s].patchFlag=-2;return r}function pe(e,t){return H(e)?ge({name:e.name},t,{setup:e}):e}
vendor: 10,123 bytes, line 13
13function Ms(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function ii(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}const Cn=new WeakMap;function Yt(e,t,n,r,i=!1){if($(e)){e.forEach((I,V)=>Yt(I,t&&($(t)?t[V]:t),n,r,i));return}if(Pt(r)&&!i){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&Yt(e,t,n,r.component.subTree);return}const s=r.shapeFlag&4?Un(r.component):r.el,a=i?null:s,{i:o,r:l}=e,f=t&&t.r,u=o.refs===re?o.refs={}:o.refs,p=o.setupState,b=Z(p),A=p===re?$i:I=>ii(u,I)?!1:Q(b,I),R=(I,V)=>!(V&&ii(u,V));if(f!=null&&f!==l){if(si(t),ue(f))u[f]=null,A(f)&&(p[f]=null);else if(be(f)){const I=t;R(f,I.k)&&(f.value=null),I.k&&(u[I.k]=null)}}if(H(l))cn(l,o,12,[a,u]);else{const I=ue(l),V=be(l);if(I||V){const j=()=>{if(e.f){const D=I?A(l)?p[l]:u[l]:R()||!e.k?l.value:u[e.k];if(i)$(D)&&Lr(D,s);else if($(D))D.includes(s)||D.push(s);else if(I)u[l]=[s],A(l)&&(p[l]=u[l]);else{const J=[s];R(l,e.k)&&(l.value=J),e.k&&(u[e.k]=J)}}else I?(u[l]=a,A(l)&&(p[l]=a)):V&&(R(l,e.k)&&(l.value=a),e.k&&(u[e.k]=a))};if(a){const D=()=>{j(),Cn.delete(e)};D.id=-1,Cn.set(e,D),ke(D,n)}else si(e),j()}}}function si(e){const t=Cn.get(e);t&&(t.flags|=8,Cn.delete(e))}Fn().requestIdleCallback;Fn().cancelIdleCallback;const Pt=e=>!!e.type.__asyncLoader,Hn=e=>e.type.__isKeepAlive;function oo(e,t){Ss(e,"a",t)}function lo(e,t){Ss(e,"da",t)}function Ss(e,t,n=Le){const r=e.__wdc||(e.__wdc=()=>{let i=n;for(;i;){if(i.isDeactivated)return;i=i.parent}return e()});if(jn(t,r,n),n){let i=n.parent;for(;i&&i.parent;)Hn(i.parent.vnode)&&co(r,t,n,i),i=i.parent}}function co(e,t,n,r){const i=jn(t,e,r,!0);Kn(()=>{Lr(r[t],i)},n)}function jn(e,t,n=Le,r=!1){if(n){const i=n[e]||(n[e]=[]),s=t.__weh||(t.__weh=(...a)=>{rt();const o=dn(n),l=$e(t,n,e,a);return o(),it(),l});return r?i.unshift(s):i.push(s),s}}const at=e=>(t,n=Le)=>{(!an||e==="sp")&&jn(e,(...r)=>t(...r),n)},uo=at("bm"),Ot=at("m"),ho=at("bu"),fo=at("u"),Cs=at("bum"),Kn=at("um"),po=at("sp"),go=at("rtg"),mo=at("rtc");function bo(e,t=Le){jn("ec",e,t)}const vo=Symbol.for("v-ndc");function fe(e,t,n,r){let i;const s=n,a=$(e);if(a||ue(e)){const o=a&&At(e);let l=!1,f=!1;o&&(l=!Be(e),f=st(e),e=$n(e)),i=new Array(e.length);for(let u=0,p=e.length;u<p;u++)i[u]=t(l?f?Bt(Fe(e[u])):Fe(e[u]):e[u],u,void 0,s)}else if(typeof e=="number"){i=new Array(e);for(let o=0;o<e;o++)i[o]=t(o+1,o,void 0,s)}else if(X(e))if(e[Symbol.iterator])i=Array.from(e,(o,l)=>t(o,l,void 0,s));else{const o=Object.keys(e);i=new Array(o.length);for(let l=0,f=o.length;l<f;l++){const u=o[l];i[l]=t(e[u],u,l,s)}}else i=[];return i}function ko(e,t,n={},r,i){if(xe.ce||xe.parent&&Pt(xe.parent)&&xe.parent.ce){const f=Object.keys(n).length>0;return m(),ze(Y,null,[O("slot",n,r)],f?-2:64)}let s=e[t];s&&s._c&&(s._d=!1),m();const a=s&&Ts(s(n)),o=n.key||a&&a.key,l=ze(Y,{key:(o&&!De(o)?o:`_${t}`)+(!a&&r?"_fb":"")},a||[],a&&e._===1?64:-2);return l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),s&&s._c&&(s._d=!0),l}function Ts(e){return e.some(t=>sn(t)?!(t.type===we||t.type===Y&&!Ts(t.children)):!0)?e:null}const mr=e=>e?qs(e)?Un(e):mr(e.parent):null,Zt=ge(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>mr(e.parent),$root:e=>mr(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Is(e),$forceUpdate:e=>e.f||(e.f=()=>{Fr(e.update)}),$nextTick:e=>e.n||(e.n=us.bind(e.proxy)),$watch:e=>to.bind(e)}),tr=(e,t)=>e!==re&&!e.__isScriptSetup&&Q(e,t),yo={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:i,props:s,accessCache:a,type:o,appContext:l}=e;if(t[0]!=="$"){const b=a[t];if(b!==void 0)switch(b){case 1:return r[t];case 2:return i[t];case 4:return n[t];case 3:return s[t]}else{if(tr(r,t))return a[t]=1,r[t];if(i!==re&&Q(i,t))return a[t]=2,i[t];if(Q(s,t))return a[t]=3,s[t];if(n!==re&&Q(n,t))return a[t]=4,n[t];br&&(a[t]=0)}}const f=Zt[t];let u,p;if(f)return t==="$attrs"&&ye(e.attrs,"get",""),f(e);if((u=o.__cssModules)&&(u=u[t]))return u;if(n!==re&&Q(n,t))return a[t]=4,n[t];if(p=l.config.globalProperties,Q(p,t))return p[t]},set({_:e},t,n){const{data:r,setupState:i,ctx:s}=e;return tr(i,t)?(i[t]=n,!0):r!==re&&Q(r,t)?(r[t]=n,!0):Q(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(s[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:i,props:s,type:a}},o){let l;return!!(n[o]||e!==re&&o[0]!=="$"&&Q(e,o)||tr(t,o)||Q(s,o)||Q(r,o)||Q(Zt,o)||Q(i.config.globalProperties,o)||(l=a.__cssModules)&&l[o])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Q(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function ai(e){return $(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let br=!0;function wo(e){const t=Is(e),n=e.proxy,r=e.ctx;br=!1,t.beforeCreate&&oi(t.beforeCreate,e,"bc");const{data:i,computed:s,methods:a,watch:o,provide:l,inject:f,created:u,beforeMount:p,mounted:b,beforeUpdate:A,updated:R,activated:I,deactivated:V,beforeDestroy:j,beforeUnmount:D,destroyed:J,unmounted:E,render:S,renderTracked:C,renderTriggered:ne,errorCaptured:ee,serverPrefetch:N,expose:U,inheritAttrs:ie,components:P,directives:ce,filters:ve}=t;if(f&&xo(f,r,null),a)for(const de in a){const se=a[de];H(se)&&(r[de]=se.bind(n))}if(i){const de=i.call(n,n);X(de)&&(e.data=Br(de))}if(br=!0,s)for(const de in s){const se=s[de],pt=H(se)?se.bind(n,n):H(se.get)?se.get.bind(n,n):qe,hn=!H(se)&&H(se.set)?se.set.bind(n):qe,gt=un({get:pt,set:hn});Object.defineProperty(r,de,{enumerable:!0,configurable:!0,get:()=>gt.value,set:He=>gt.value=He})}if(o)for(const de in o)Es(o[de],r,n,de);if(l){const de=H(l)?l.call(n):l;Reflect.ownKeys(de).forEach(se=>{Qa(se,de[se])})}u&&oi(u,e,"c");function me(de,se){$(se)?se.forEach(pt=>de(pt.bind(n))):se&&de(se.bind(n))}if(me(uo,p),me(Ot,b),me(ho,A),me(fo,R),me(oo,I),me(lo,V),me(bo,ee),me(mo,C),me(go,ne),me(Cs,D),me(Kn,E),me(po,N),$(U))if(U.length){const de=e.exposed||(e.exposed={});U.forEach(se=>{Object.defineProperty(de,se,{get:()=>n[se],set:pt=>n[se]=pt,enumerable:!0})})}else e.exposed||(e.exposed={});S&&e.render===qe&&(e.render=S),ie!=null&&(e.inheritAttrs=ie),P&&(e.components=P),ce&&(e.directives=ce),N&&Ms(e)}function xo(e,t,n=qe){$(e)&&(e=vr(e));for(const r in e){const i=e[r];let s;X(i)?"default"in i?s=yn(i.from||r,i.default,!0):s=yn(i.from||r):s=yn(i),be(s)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>s.value,set:a=>s.value=a}):t[r]=s}}function oi(e,t,n){$e($(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Es(e,t,n,r){let i=r.includes(".")?bs(n,r):()=>n[r];if(ue(e)){const s=t[e];H(s)&&Jt(i,s)}else if(H(e))Jt(i,e.bind(n));else if(X(e))if($(e))e.forEach(s=>Es(s,t,n,r));else{const s=H(e.handler)?e.handler.bind(n):t[e.handler];H(s)&&Jt(i,s,e)}}function Is(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:i,optionsCache:s,config:{optionMergeStrategies:a}}=e.appContext,o=s.get(t);let l;return o?l=o:!i.length&&!n&&!r?l=t:(l={},i.length&&i.forEach(f=>Tn(l,f,a,!0)),Tn(l,t,a)),X(t)&&s.set(t,l),l}function Tn(e,t,n,r=!1){const{mixins:i,extends:s}=t;s&&Tn(e,s,n,!0),i&&i.forEach(a=>Tn(e,a,n,!0));for(const a in t)if(!(r&&a==="expose")){const o=_o[a]||n&&n[a];e[a]=o?o(e[a],t[a]):t[a]}return e}const _o={data:li,props:ci,emits:ci,methods:Wt,computed:Wt,beforeCreate:_e,created:_e,beforeMount:_e,mounted:_e,beforeUpdate:_e,updated:_e,beforeDestroy:_e,beforeUnmount:_e,destroyed:_e,unmounted:_e,activated:_e,deactivated:_e,errorCaptured:_e,serverPrefetch:_e,components:Wt,directives:Wt,watch:Lo,provide:li,inject:Ao};function li(e,t){return t?e?function(){return ge(H(e)?e.call(this,this):e,H(t)?t.call(this,this):t)}:t:e}function Ao(e,t){return Wt(vr(e),vr(t))}function vr(e){if($(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function _e(e,t){return e?[...new Set([].concat(e,t))]:t}function Wt(e,t){return e?ge(Object.create(null),e,t):t}function ci(e,t){return e?$(e)&&$(t)?[...new Set([...e,...t])]:ge(Object.create(null),ai(e),ai(t??{})):t}function Lo(e,t){if(!e)return t;if(!t)return e;const n=ge(Object.create(null),e);for(const r in t)n[r]=_e(e[r],t[r]);return n}function Rs(){return{app:null,config:{isNativeTag:$i,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Mo=0;function So(e,t){return function(r,i=null){H(r)||(r=ge({},r)),i!=null&&!X(i)&&(i=null);const s=Rs(),a=new WeakSet,o=[];let l=!1;const f=s.app={_uid:Mo++,_component:r,_props:i,_container:null,_context:s,_instance:null,version:al,get config(){return s.config},set config(u){},use(u,...p){return a.has(u)||(u&&H(u.install)?(a.add(u),u.install(f,...p)):H(u)&&(a.add(u),u(f,...p))),f},mixin(u){return s.mixins.includes(u)||s.mixins.push(u),f},component(u,p){return p?(s.components[u]=p,f):s.components[u]},directive(u,p){return p?(s.directives[u]=p,f):s.directives[u]},mount(u,p,b){if(!l){const A=f._ceVNode||O(r,i);return A.appContext=s,b===!0?b="svg":b===!1&&(b=void 0),e(A,u,b),l=!0,f._container=u,u.__vue_app__=f,Un(A.component)}},onUnmount(u){o.push(u)},unmount(){l&&($e(o,f._instance,16),e(null,f._container),delete f._container.__vue_app__)},provide(u,p){return s.provides[u]=p,f},runWithContext(u){const p=Nt;Nt=f;try{return u()}finally{Nt=p}}};return f}}let Nt=null;const Co=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${ut(t)}Modifiers`]||e[`${Lt(t)}Modifiers`];function To(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||re;let i=n;const s=t.startsWith("update:"),a=s&&Co(r,t.slice(7));a&&(a.trim&&(i=n.map(u=>ue(u)?u.trim():u)),a.number&&(i=n.map(Sr)));let o,l=r[o=qn(t)]||r[o=qn(ut(t))];!l&&s&&(l=r[o=qn(Lt(t))]),l&&$e(l,e,6,i);const f=r[o+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[o])return;e.emitted[o]=!0,$e(f,e,6,i)}}const Eo=new WeakMap;function Ps(e,t,n=!1){const r=n?Eo:t.emitsCache,i=r.get(e);if(i!==void 0)return i;const s=e.emits;let a={},o=!1;if(!H(e)){const l=f=>{const u=Ps(f,t,!0);u&&(o=!0,ge(a,u))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}
vendor: 8,959 bytes, line 13
13return!s&&!o?(X(e)&&r.set(e,null),null):($(s)?s.forEach(l=>a[l]=null):ge(a,s),X(e)&&r.set(e,a),a)}function Wn(e,t){return!e||!On(t)?!1:(t=t.slice(2).replace(/Once$/,""),Q(e,t[0].toLowerCase()+t.slice(1))||Q(e,Lt(t))||Q(e,t))}function di(e){const{type:t,vnode:n,proxy:r,withProxy:i,propsOptions:[s],slots:a,attrs:o,emit:l,render:f,renderCache:u,props:p,data:b,setupState:A,ctx:R,inheritAttrs:I}=e,V=Sn(e);let j,D;try{if(n.shapeFlag&4){const E=i||r,S=E;j=Je(f.call(S,E,u,p,A,b,R)),D=o}else{const E=t;j=Je(E.length>1?E(p,{attrs:o,slots:a,emit:l}):E(p,null)),D=t.props?o:Io(o)}}catch(E){Qt.length=0,zn(E,e,1),j=O(we)}let J=j;if(D&&I!==!1){const E=Object.keys(D),{shapeFlag:S}=J;E.length&&S&7&&(s&&E.some(Ar)&&(D=Ro(D,s)),J=ht(J,D,!1,!0))}return n.dirs&&(J=ht(J,null,!1,!0),J.dirs=J.dirs?J.dirs.concat(n.dirs):n.dirs),n.transition&&nn(J,n.transition),j=J,Sn(V),j}const Io=e=>{let t;for(const n in e)(n==="class"||n==="style"||On(n))&&((t||(t={}))[n]=e[n]);return t},Ro=(e,t)=>{const n={};for(const r in e)(!Ar(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Po(e,t,n){const{props:r,children:i,component:s}=e,{props:a,children:o,patchFlag:l}=t,f=s.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return r?ui(r,a,f):!!a;if(l&8){const u=t.dynamicProps;for(let p=0;p<u.length;p++){const b=u[p];if(Ns(a,r,b)&&!Wn(f,b))return!0}}}else return(i||o)&&(!o||!o.$stable)?!0:r===a?!1:r?a?ui(r,a,f):!0:!!a;return!1}function ui(e,t,n){const r=Object.keys(t);if(r.length!==Object.keys(e).length)return!0;for(let i=0;i<r.length;i++){const s=r[i];if(Ns(t,e,s)&&!Wn(n,s))return!0}return!1}function Ns(e,t,n){const r=e[n],i=t[n];return n==="style"&&X(r)&&X(i)?!Tr(r,i):r!==i}function No({vnode:e,parent:t},n){for(;t;){const r=t.subTree;if(r.suspense&&r.suspense.activeBranch===e&&(r.el=e.el),r===e)(e=t.vnode).el=n,t=t.parent;else break}}const Bs={},Os=()=>Object.create(Bs),Ds=e=>Object.getPrototypeOf(e)===Bs;function Bo(e,t,n,r=!1){const i={},s=Os();e.propsDefaults=Object.create(null),Fs(e,t,i,s);for(const a in e.propsOptions[0])a in i||(i[a]=void 0);n?e.props=r?i:$a(i):e.type.props?e.props=i:e.props=s,e.attrs=s}function Oo(e,t,n,r){const{props:i,attrs:s,vnode:{patchFlag:a}}=e,o=Z(i),[l]=e.propsOptions;let f=!1;if((r||a>0)&&!(a&16)){if(a&8){const u=e.vnode.dynamicProps;for(let p=0;p<u.length;p++){let b=u[p];if(Wn(e.emitsOptions,b))continue;const A=t[b];if(l)if(Q(s,b))A!==s[b]&&(s[b]=A,f=!0);else{const R=ut(b);i[R]=kr(l,o,R,A,e,!1)}else A!==s[b]&&(s[b]=A,f=!0)}}}else{Fs(e,t,i,s)&&(f=!0);let u;for(const p in o)(!t||!Q(t,p)&&((u=Lt(p))===p||!Q(t,u)))&&(l?n&&(n[p]!==void 0||n[u]!==void 0)&&(i[p]=kr(l,o,p,void 0,e,!0)):delete i[p]);if(s!==o)for(const p in s)(!t||!Q(t,p))&&(delete s[p],f=!0)}f&&tt(e.attrs,"set","")}function Fs(e,t,n,r){const[i,s]=e.propsOptions;let a=!1,o;if(t)for(let l in t){if(Vt(l))continue;const f=t[l];let u;i&&Q(i,u=ut(l))?!s||!s.includes(u)?n[u]=f:(o||(o={}))[u]=f:Wn(e.emitsOptions,l)||(!(l in r)||f!==r[l])&&(r[l]=f,a=!0)}if(s){const l=Z(n),f=o||re;for(let u=0;u<s.length;u++){const p=s[u];n[p]=kr(i,l,p,f[p],e,!Q(f,p))}}return a}function kr(e,t,n,r,i,s){const a=e[n];if(a!=null){const o=Q(a,"default");if(o&&r===void 0){const l=a.default;if(a.type!==Function&&!a.skipFactory&&H(l)){const{propsDefaults:f}=i;if(n in f)r=f[n];else{const u=dn(i);r=f[n]=l.call(null,t),u()}}else r=l;i.ce&&i.ce._setProp(n,r)}a[0]&&(s&&!o?r=!1:a[1]&&(r===""||r===Lt(n))&&(r=!0))}return r}const Do=new WeakMap;function $s(e,t,n=!1){const r=n?Do:t.propsCache,i=r.get(e);if(i)return i;const s=e.props,a={},o=[];let l=!1;if(!H(e)){const u=p=>{l=!0;const[b,A]=$s(p,t,!0);ge(a,b),A&&o.push(...A)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!s&&!l)return X(e)&&r.set(e,Et),Et;if($(s))for(let u=0;u<s.length;u++){const p=ut(s[u]);hi(p)&&(a[p]=re)}else if(s)for(const u in s){const p=ut(u);if(hi(p)){const b=s[u],A=a[p]=$(b)||H(b)?{type:b}:ge({},b),R=A.type;let I=!1,V=!0;if($(R))for(let j=0;j<R.length;++j){const D=R[j],J=H(D)&&D.name;if(J==="Boolean"){I=!0;break}else J==="String"&&(V=!1)}else I=H(R)&&R.name==="Boolean";A[0]=I,A[1]=V,(I||Q(A,"default"))&&o.push(p)}}const f=[a,o];return X(e)&&r.set(e,f),f}function hi(e){return e[0]!=="$"&&!Vt(e)}const $r=e=>e==="_"||e==="_ctx"||e==="$stable",zr=e=>$(e)?e.map(Je):[Je(e)],Fo=(e,t,n)=>{if(t._n)return t;const r=Me((...i)=>zr(t(...i)),n);return r._c=!1,r},zs=(e,t,n)=>{const r=e._ctx;for(const i in e){if($r(i))continue;const s=e[i];if(H(s))t[i]=Fo(i,s,r);else if(s!=null){const a=zr(s);t[i]=()=>a}}},Hs=(e,t)=>{const n=zr(t);e.slots.default=()=>n},js=(e,t,n)=>{for(const r in t)(n||!$r(r))&&(e[r]=t[r])},$o=(e,t,n)=>{const r=e.slots=Os();if(e.vnode.shapeFlag&32){const i=t._;i?(js(r,t,n),n&&Vi(r,"_",i,!0)):zs(t,r)}else t&&Hs(e,t)},zo=(e,t,n)=>{const{vnode:r,slots:i}=e;let s=!0,a=re;if(r.shapeFlag&32){const o=t._;o?n&&o===1?s=!1:js(i,t,n):(s=!t.$stable,zs(t,i)),a=t}else t&&(Hs(e,t),a={default:1});if(s)for(const o in i)!$r(o)&&a[o]==null&&delete i[o]},ke=Vo;function Ho(e){return jo(e)}function jo(e,t){const n=Fn();n.__VUE__=!0;const{insert:r,remove:i,patchProp:s,createElement:a,createText:o,createComment:l,setText:f,setElementText:u,parentNode:p,nextSibling:b,setScopeId:A=qe,insertStaticContent:R}=e,I=(d,h,g,x=null,v=null,k=null,M=void 0,L=null,_=!!h.dynamicChildren)=>{if(d===h)return;d&&!xt(d,h)&&(x=fn(d),He(d,v,k,!0),d=null),h.patchFlag===-2&&(_=!1,h.dynamicChildren=null);const{type:y,ref:F,shapeFlag:T}=h;switch(y){case Vn:V(d,h,g,x);break;case we:j(d,h,g,x);break;case xn:d==null&&D(h,g,x,M);break;case Y:P(d,h,g,x,v,k,M,L,_);break;default:T&1?S(d,h,g,x,v,k,M,L,_):T&6?ce(d,h,g,x,v,k,M,L,_):(T&64||T&128)&&y.process(d,h,g,x,v,k,M,L,_,Ft)}F!=null&&v?Yt(F,d&&d.ref,k,h||d,!h):F==null&&d&&d.ref!=null&&Yt(d.ref,null,k,d,!0)},V=(d,h,g,x)=>{if(d==null)r(h.el=o(h.children),g,x);else{const v=h.el=d.el;h.children!==d.children&&f(v,h.children)}},j=(d,h,g,x)=>{d==null?r(h.el=l(h.children||""),g,x):h.el=d.el},D=(d,h,g,x)=>{[d.el,d.anchor]=R(d.children,h,g,x,d.el,d.anchor)},J=({el:d,anchor:h},g,x)=>{let v;for(;d&&d!==h;)v=b(d),r(d,g,x),d=v;r(h,g,x)},E=({el:d,anchor:h})=>{let g;for(;d&&d!==h;)g=b(d),i(d),d=g;i(h)},S=(d,h,g,x,v,k,M,L,_)=>{if(h.type==="svg"?M="svg":h.type==="math"&&(M="mathml"),d==null)C(h,g,x,v,k,M,L,_);else{const y=d.el&&d.el._isVueCE?d.el:null;try{y&&y._beginPatch(),N(d,h,v,k,M,L,_)}finally{y&&y._endPatch()}}},C=(d,h,g,x,v,k,M,L)=>{let _,y;const{props:F,shapeFlag:T,transition:B,dirs:z}=d;if(_=d.el=a(d.type,k,F&&F.is,F),T&8?u(_,d.children):T&16&&ee(d.children,_,null,x,v,nr(d,k),M,L),z&&mt(d,null,x,"created"),ne(_,d,d.scopeId,M,x),F){for(const ae in F)ae!=="value"&&!Vt(ae)&&s(_,ae,null,F[ae],k,x);"value"in F&&s(_,"value",null,F.value,k),(y=F.onVnodeBeforeMount)&&Ve(y,x,d)}z&&mt(d,null,x,"beforeMount");const q=Ko(v,B);q&&B.beforeEnter(_),r(_,h,g),((y=F&&F.onVnodeMounted)||q||z)&&ke(()=>{y&&Ve(y,x,d),q&&B.enter(_),z&&mt(d,null,x,"mounted")},v)},ne=(d,h,g,x,v)=>{if(g&&A(d,g),x)for(let k=0;k<x.length;k++)A(d,x[k]);if(v){let k=v.subTree;if(h===k||Vs(k.type)&&(k.ssContent===h||k.ssFallback===h)){const M=v.vnode;ne(d,M,M.scopeId,M.slotScopeIds,v.parent)}}},ee=(d,h,g,x,v,k,M,L,_=0)=>{for(let y=_;y<d.length;y++){const F=d[y]=L?et(d[y]):Je(d[y]);I(null,F,h,g,x,v,k,M,L)}},N=(d,h,g,x,v,k,M)=>{const L=h.el=d.el;let{patchFlag:_,dynamicChildren:y,dirs:F}=h;_|=d.patchFlag&16;const T=d.props||re,B=h.props||re;let z;if(g&&bt(g,!1),(z=B.onVnodeBeforeUpdate)&&Ve(z,g,h,d),F&&mt(h,d,g,"beforeUpdate"),g&&bt(g,!0),(T.innerHTML&&B.innerHTML==null||T.textContent&&B.textContent==null)&&u(L,""),y?U(d.dynamicChildren,y,L,g,x,nr(h,v),k):M||se(d,h,L,null,g,x,nr(h,v),k,!1),_>0){if(_&16)ie(L,T,B,g,v);else if(_&2&&T.class!==B.class&&s(L,"class",null,B.class,v),_&4&&s(L,"style",T.style,B.style,v),_&8){const q=h.dynamicProps;for(let ae=0;ae<q.length;ae++){const te=q[ae],Se=T[te],Ce=B[te];(Ce!==Se||te==="value")&&s(L,te,Se,Ce,v,g)}}_&1&&d.children!==h.children&&u(L,h.children)}else!M&&y==null&&ie(L,T,B,g,v);((z=B.onVnodeUpdated)||F)&&ke(()=>{z&&Ve(z,g,h,d),F&&mt(h,d,g,"updated")},x)},U=(d,h,g,x,v,k,M)=>{for(let L=0;L<h.length;L++){const _=d[L],y=h[L],F=_.el&&(_.type===Y||!xt(_,y)||_.shapeFlag&198)?p(_.el):g;I(_,y,F,null,x,v,k,M,!0)}},ie=(d,h,g,x,v)=>{if(h!==g){if(h!==re)for(const k in h)!Vt(k)&&!(k in g)&&s(d,k,h[k],null,v,x);for(const k in g){if(Vt(k))continue;const M=g[k],L=h[k];M!==L&&k!=="value"&&s(d,k,L,M,v,x)}"value"in g&&s(d,"value",h.value,g.value,v)}},P=(d,h,g,x,v,k,M,L,_)=>{const y=h.el=d?d.el:o(""),F=h.anchor=d?d.anchor:o("");let{patchFlag:T,dynamicChildren:B,slotScopeIds:z}=h;z&&(L=L?L.concat(z):z),d==null?(r(y,g,x),r(F,g,x),ee(h.children||[],g,F,v,k,M,L,_)):T>0&&T&64&&B&&d.dynamicChildren&&d.dynamicChildren.length===B.length?(U(d.dynamicChildren,B,g,v,k,M,L),(h.key!=null||v&&h===v.subTree)&&Hr(d,h,!0)):se(d,h,g,F,v,k,M,L,_)},ce=(d,h,g,x,v,k,M,L,_)=>{h.slotScopeIds=L,d==null?h.shapeFlag&512?v.ctx.activate(h,g,x,M,_):ve(h,g,x,v,k,M,_):Ye(d,h,_)},ve=(d,h,g,x,v,k,M)=>
vendor: 5,038 bytes, line 13
13{const L=d.component=Xo(d,x,v);if(Hn(d)&&(L.ctx.renderer=Ft),el(L,!1,M),L.asyncDep){if(v&&v.registerDep(L,me,M),!d.el){const _=L.subTree=O(we);j(null,_,h,g),d.placeholder=_.el}}else me(L,d,h,g,v,k,M)},Ye=(d,h,g)=>{const x=h.component=d.component;if(Po(d,h,g))if(x.asyncDep&&!x.asyncResolved){de(x,h,g);return}else x.next=h,x.update();else h.el=d.el,x.vnode=h},me=(d,h,g,x,v,k,M)=>{const L=()=>{if(d.isMounted){let{next:T,bu:B,u:z,parent:q,vnode:ae}=d;{const Ke=Ks(d);if(Ke){T&&(T.el=ae.el,de(d,T,M)),Ke.asyncDep.then(()=>{ke(()=>{d.isUnmounted||y()},v)});return}}let te=T,Se;bt(d,!1),T?(T.el=ae.el,de(d,T,M)):T=ae,B&&kn(B),(Se=T.props&&T.props.onVnodeBeforeUpdate)&&Ve(Se,q,T,ae),bt(d,!0);const Ce=di(d),je=d.subTree;d.subTree=Ce,I(je,Ce,p(je.el),fn(je),d,v,k),T.el=Ce.el,te===null&&No(d,Ce.el),z&&ke(z,v),(Se=T.props&&T.props.onVnodeUpdated)&&ke(()=>Ve(Se,q,T,ae),v)}else{let T;const{el:B,props:z}=h,{bm:q,m:ae,parent:te,root:Se,type:Ce}=d,je=Pt(h);bt(d,!1),q&&kn(q),!je&&(T=z&&z.onVnodeBeforeMount)&&Ve(T,te,h),bt(d,!0);{Se.ce&&Se.ce._hasShadowRoot()&&Se.ce._injectChildStyle(Ce);const Ke=d.subTree=di(d);I(null,Ke,g,x,d,v,k),h.el=Ke.el}if(ae&&ke(ae,v),!je&&(T=z&&z.onVnodeMounted)){const Ke=h;ke(()=>Ve(T,te,Ke),v)}(h.shapeFlag&256||te&&Pt(te.vnode)&&te.vnode.shapeFlag&256)&&d.a&&ke(d.a,v),d.isMounted=!0,h=g=x=null}};d.scope.on();const _=d.effect=new qi(L);d.scope.off();const y=d.update=_.run.bind(_),F=d.job=_.runIfDirty.bind(_);F.i=d,F.id=d.uid,_.scheduler=()=>Fr(F),bt(d,!0),y()},de=(d,h,g)=>{h.component=d;const x=d.vnode.props;d.vnode=h,d.next=null,Oo(d,h.props,x,g),zo(d,h.children,g),rt(),Xr(d),it()},se=(d,h,g,x,v,k,M,L,_=!1)=>{const y=d&&d.children,F=d?d.shapeFlag:0,T=h.children,{patchFlag:B,shapeFlag:z}=h;if(B>0){if(B&128){hn(y,T,g,x,v,k,M,L,_);return}else if(B&256){pt(y,T,g,x,v,k,M,L,_);return}}z&8?(F&16&&Dt(y,v,k),T!==y&&u(g,T)):F&16?z&16?hn(y,T,g,x,v,k,M,L,_):Dt(y,v,k,!0):(F&8&&u(g,""),z&16&&ee(T,g,x,v,k,M,L,_))},pt=(d,h,g,x,v,k,M,L,_)=>{d=d||Et,h=h||Et;const y=d.length,F=h.length,T=Math.min(y,F);let B;for(B=0;B<T;B++){const z=h[B]=_?et(h[B]):Je(h[B]);I(d[B],z,g,null,v,k,M,L,_)}y>F?Dt(d,v,k,!0,!1,T):ee(h,g,x,v,k,M,L,_,T)},hn=(d,h,g,x,v,k,M,L,_)=>{let y=0;const F=h.length;let T=d.length-1,B=F-1;for(;y<=T&&y<=B;){const z=d[y],q=h[y]=_?et(h[y]):Je(h[y]);if(xt(z,q))I(z,q,g,null,v,k,M,L,_);else break;y++}for(;y<=T&&y<=B;){const z=d[T],q=h[B]=_?et(h[B]):Je(h[B]);if(xt(z,q))I(z,q,g,null,v,k,M,L,_);else break;T--,B--}if(y>T){if(y<=B){const z=B+1,q=z<F?h[z].el:x;for(;y<=B;)I(null,h[y]=_?et(h[y]):Je(h[y]),g,q,v,k,M,L,_),y++}}else if(y>B)for(;y<=T;)He(d[y],v,k,!0),y++;else{const z=y,q=y,ae=new Map;for(y=q;y<=B;y++){const Ie=h[y]=_?et(h[y]):Je(h[y]);Ie.key!=null&&ae.set(Ie.key,y)}let te,Se=0;const Ce=B-q+1;let je=!1,Ke=0;const $t=new Array(Ce);for(y=0;y<Ce;y++)$t[y]=0;for(y=z;y<=T;y++){const Ie=d[y];if(Se>=Ce){He(Ie,v,k,!0);continue}let We;if(Ie.key!=null)We=ae.get(Ie.key);else for(te=q;te<=B;te++)if($t[te-q]===0&&xt(Ie,h[te])){We=te;break}We===void 0?He(Ie,v,k,!0):($t[We-q]=y+1,We>=Ke?Ke=We:je=!0,I(Ie,h[We],g,null,v,k,M,L,_),Se++)}const Ur=je?Wo($t):Et;for(te=Ur.length-1,y=Ce-1;y>=0;y--){const Ie=q+y,We=h[Ie],Gr=h[Ie+1],Jr=Ie+1<F?Gr.el||Ws(Gr):x;$t[y]===0?I(null,We,g,Jr,v,k,M,L,_):je&&(te<0||y!==Ur[te]?gt(We,g,Jr,2):te--)}}},gt=(d,h,g,x,v=null)=>{const{el:k,type:M,transition:L,children:_,shapeFlag:y}=d;if(y&6){gt(d.component.subTree,h,g,x);return}if(y&128){d.suspense.move(h,g,x);return}if(y&64){M.move(d,h,g,Ft);return}if(M===Y){r(k,h,g);for(let T=0;T<_.length;T++)gt(_[T],h,g,x);r(d.anchor,h,g);return}if(M===xn){J(d,h,g);return}if(x!==2&&y&1&&L)if(x===0)L.beforeEnter(k),r(k,h,g),ke(()=>L.enter(k),v);else{const{leave:T,delayLeave:B,afterLeave:z}=L,q=()=>{d.ctx.isUnmounted?i(k):r(k,h,g)},ae=()=>{k._isLeaving&&k[Ge](!0),T(k,()=>{q(),z&&z()})};B?B(k,q,ae):ae()}else r(k,h,g)},He=(d,h,g,x=!1,v=!1)=>{const{type:k,props:M,ref:L,children:_,dynamicChildren:y,shapeFlag:F,patchFlag:T,dirs:B,cacheIndex:z}=d;if(T===-2&&(v=!1),L!=null&&(rt(),Yt(L,null,g,d,!0),it()),z!=null&&(h.renderCache[z]=void 0),F&256){h.ctx.deactivate(d);return}const q=F&1&&B,ae=!Pt(d);let te;if(ae&&(te=M&&M.onVnodeBeforeUnmount)&&Ve(te,h,d),F&6)aa(d.component,g,x);else{if(F&128){d.suspense.unmount(g,x);return}q&&mt(d,null,h,"beforeUnmount"),F&64?d.type.remove(d,h,g,Ft,x):y&&!y.hasOnce&&(k!==Y||T>0&&T&64)?Dt(y,h,g,!1,!0):(k===Y&&T&384||!v&&F&16)&&Dt(_,h,g),x&&Wr(d)}(ae&&(te=M&&M.onVnodeUnmounted)||q)&&ke(()=>{te&&Ve(te,h,d),q&&mt(d,null,h,"unmounted")},g)},Wr=d=>{const{type:h,el:g,anchor:x,transition:v}=d;if(h===Y){sa(g,x);return}if(h===xn){E(d);return}const k=()=>{i(g),v&&!v.persisted&&v.afterLeave&&v.afterLeave()};if(d.shapeFlag&1&&v&&!v.persisted){const{leave:M,delayLeave:L}=v,_=()=>M(g,k);L?L(d.el,k,_):_()}else k()},sa=(d,h)=>{let g;for(;d!==h;)g=b(d),i(d),d=g;i(h)},aa=(d,h,g)=>{const{bum:x,scope:v,job:k,subTree:M,um:L,m:_,a:y}=d;fi(_),fi(y),x&&kn(x),v.stop(),k&&(k.flags|=8,He(M,d,h,g)),L&&ke(L,h),ke(()=>{d.isUnmounted=!0},h)},Dt=(d,h,g,x=!1,v=!1,k=0)=>{for(let M=k;M<d.length;M++)He(d[M],h,g,x,v)},fn=d=>
vendor: 6,245 bytes, line 13
13{if(d.shapeFlag&6)return fn(d.component.subTree);if(d.shapeFlag&128)return d.suspense.next();const h=b(d.anchor||d.el),g=h&&h[vs];return g?b(g):h};let Jn=!1;const Vr=(d,h,g)=>{let x;d==null?h._vnode&&(He(h._vnode,null,null,!0),x=h._vnode.component):I(h._vnode||null,d,h,null,null,null,g),h._vnode=d,Jn||(Jn=!0,Xr(x),fs(),Jn=!1)},Ft={p:I,um:He,m:gt,r:Wr,mt:ve,mc:ee,pc:se,pbc:U,n:fn,o:e};return{render:Vr,hydrate:void 0,createApp:So(Vr)}}function nr({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function bt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Ko(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Hr(e,t,n=!1){const r=e.children,i=t.children;if($(r)&&$(i))for(let s=0;s<r.length;s++){const a=r[s];let o=i[s];o.shapeFlag&1&&!o.dynamicChildren&&((o.patchFlag<=0||o.patchFlag===32)&&(o=i[s]=et(i[s]),o.el=a.el),!n&&o.patchFlag!==-2&&Hr(a,o)),o.type===Vn&&(o.patchFlag===-1&&(o=i[s]=et(o)),o.el=a.el),o.type===we&&!o.el&&(o.el=a.el)}}function Wo(e){const t=e.slice(),n=[0];let r,i,s,a,o;const l=e.length;for(r=0;r<l;r++){const f=e[r];if(f!==0){if(i=n[n.length-1],e[i]<f){t[r]=i,n.push(r);continue}for(s=0,a=n.length-1;s<a;)o=s+a>>1,e[n[o]]<f?s=o+1:a=o;f<e[n[s]]&&(s>0&&(t[r]=n[s-1]),n[s]=r)}}for(s=n.length,a=n[s-1];s-- >0;)n[s]=a,a=t[a];return n}function Ks(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Ks(t)}function fi(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}function Ws(e){if(e.placeholder)return e.placeholder;const t=e.component;return t?Ws(t.subTree):null}const Vs=e=>e.__isSuspense;function Vo(e,t){t&&t.pendingBranch?$(e)?t.effects.push(...e):t.effects.push(e):Ya(e)}const Y=Symbol.for("v-fgt"),Vn=Symbol.for("v-txt"),we=Symbol.for("v-cmt"),xn=Symbol.for("v-stc"),Qt=[];let Re=null;function m(e=!1){Qt.push(Re=e?null:[])}function Uo(){Qt.pop(),Re=Qt[Qt.length-1]||null}let rn=1;function En(e,t=!1){rn+=e,e<0&&Re&&t&&(Re.hasOnce=!0)}function Us(e){return e.dynamicChildren=rn>0?Re||Et:null,Uo(),rn>0&&Re&&Re.push(e),e}function w(e,t,n,r,i,s){return Us(c(e,t,n,r,i,s,!0))}function ze(e,t,n,r,i){return Us(O(e,t,n,r,i,!0))}function sn(e){return e?e.__v_isVNode===!0:!1}function xt(e,t){return e.type===t.type&&e.key===t.key}const Gs=({key:e})=>e??null,_n=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ue(e)||be(e)||H(e)?{i:xe,r:e,k:t,f:!!n}:e:null);function c(e,t=null,n=null,r=0,i=null,s=e===Y?0:1,a=!1,o=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Gs(t),ref:t&&_n(t),scopeId:gs,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:s,patchFlag:r,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:xe};return o?(jr(l,n),s&128&&e.normalize(l)):n&&(l.shapeFlag|=ue(n)?8:16),rn>0&&!a&&Re&&(l.patchFlag>0||s&6)&&l.patchFlag!==32&&Re.push(l),l}const O=Go;function Go(e,t=null,n=null,r=0,i=null,s=!1){if((!e||e===vo)&&(e=we),sn(e)){const o=ht(e,t,!0);return n&&jr(o,n),rn>0&&!s&&Re&&(o.shapeFlag&6?Re[Re.indexOf(e)]=o:Re.push(o)),o.patchFlag=-2,o}if(il(e)&&(e=e.__vccOpts),t){t=Jo(t);let{class:o,style:l}=t;o&&!ue(o)&&(t.class=he(o)),X(l)&&(Dr(l)&&!$(l)&&(l=ge({},l)),t.style=Cr(l))}const a=ue(e)?1:Vs(e)?128:ks(e)?64:X(e)?4:H(e)?2:0;return c(e,t,n,r,i,a,s,!0)}function Jo(e){return e?Dr(e)||Ds(e)?ge({},e):e:null}function ht(e,t,n=!1,r=!1){const{props:i,ref:s,patchFlag:a,children:o,transition:l}=e,f=t?Yo(i||{},t):i,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&Gs(f),ref:t&&t.ref?n&&s?$(s)?s.concat(_n(t)):[s,_n(t)]:_n(t):s,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Y?a===-1?16:a|16:a,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&ht(e.ssContent),ssFallback:e.ssFallback&&ht(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&r&&nn(u,l.clone(u)),u}function K(e=" ",t=0){return O(Vn,null,e,t)}function qo(e,t){const n=O(xn,null,e);return n.staticCount=t,n}function le(e="",t=!1){return t?(m(),ze(we,null,e)):O(we,null,e)}function Je(e){return e==null||typeof e=="boolean"?O(we):$(e)?O(Y,null,e.slice()):sn(e)?et(e):O(Vn,null,String(e))}function et(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:ht(e)}function jr(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if($(t))n=16;else if(typeof t=="object")if(r&65){const i=t.default;i&&(i._c&&(i._d=!1),jr(e,i()),i._c&&(i._d=!0));return}else{n=32;const i=t._;!i&&!Ds(t)?t._ctx=xe:i===3&&xe&&(xe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else H(t)?(t={default:t,_ctx:xe},n=32):(t=String(t),r&64?(n=16,t=[K(t)]):n=8);e.children=t,e.shapeFlag|=n}function Yo(...e){const t={};for(let n=0;n<e.length;n++){const r=e[n];for(const i in r)if(i==="class")t.class!==r.class&&(t.class=he([t.class,r.class]));else if(i==="style")t.style=Cr([t.style,r.style]);else if(On(i)){const s=t[i],a=r[i];a&&s!==a&&!($(s)&&s.includes(a))&&(t[i]=s?[].concat(s,a):a)}else i!==""&&(t[i]=r[i])}return t}function Ve(e,t,n,r=null){$e(e,t,7,[n,r])}const Zo=Rs();let Qo=0;function Xo(e,t,n){const r=e.type,i=(t?t.appContext:e.appContext)||Zo,s={uid:Qo++,vnode:e,type:r,parent:t,appContext:i,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new ka(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(i.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:$s(r,i),emitsOptions:Ps(r,i),emit:null,emitted:null,propsDefaults:re,inheritAttrs:r.inheritAttrs,ctx:re,data:re,props:re,attrs:re,slots:re,refs:re,setupState:re,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,
vendor: 1,965 bytes, lines 13-16
13sp:null};return s.ctx={_:s},s.root=t?t.root:s,s.emit=To.bind(null,s),e.ce&&e.ce(s),s}let Le=null;const Js=()=>Le||xe;let In,yr;{const e=Fn(),t=(n,r)=>{let i;return(i=e[n])||(i=e[n]=[]),i.push(r),s=>{i.length>1?i.forEach(a=>a(s)):i[0](s)}};In=t("__VUE_INSTANCE_SETTERS__",n=>Le=n),yr=t("__VUE_SSR_SETTERS__",n=>an=n)}const dn=e=>{const t=Le;return In(e),e.scope.on(),()=>{e.scope.off(),In(t)}},pi=()=>{Le&&Le.scope.off(),In(null)};function qs(e){return e.vnode.shapeFlag&4}let an=!1;function el(e,t=!1,n=!1){t&&yr(t);const{props:r,children:i}=e.vnode,s=qs(e);Bo(e,r,s,t),$o(e,i,n||t);const a=s?tl(e,t):void 0;return t&&yr(!1),a}function tl(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,yo);const{setup:r}=n;if(r){rt();const i=e.setupContext=r.length>1?rl(e):null,s=dn(e),a=cn(r,e,0,[e.props,i]),o=Hi(a);if(it(),s(),(o||e.sp)&&!Pt(e)&&Ms(e),o){if(a.then(pi,pi),t)return a.then(l=>{gi(e,l)}).catch(l=>{zn(l,e,0)});e.asyncDep=a}else gi(e,a)}else Ys(e)}function gi(e,t,n){H(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:X(t)&&(e.setupState=cs(t)),Ys(e)}function Ys(e,t,n){const r=e.type;e.render||(e.render=r.render||qe);{const i=dn(e);rt();try{wo(e)}finally{it(),i()}}}const nl={get(e,t){return ye(e,"get",""),e[t]}};function rl(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,nl),slots:e.slots,emit:e.emit,expose:t}}function Un(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(cs(za(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Zt)return Zt[n](e)},has(t,n){return n in t||n in Zt}})):e.proxy}function il(e){return H(e)&&"__vccOpts"in e}const un=(e,t)=>Va(e,t,an);function sl(e,t,n){try{En(-1);const r=arguments.length;return r===2?X(t)&&!$(t)?sn(t)?O(e,null,[t]):O(e,t):O(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&sn(n)&&(n=[n]),O(e,t,n))}finally{En(1)}}const al="3.5.29";/** 14* @vue/runtime-dom v3.5.29 15* (c) 2018-present Yuxi (Evan) You and Vue contributors 16* @license MIT
17**/let wr;const mi=typeof window<"u"&&window.trustedTypes;if(mi)try{wr=mi.createPolicy("vue",{createHTML:e=>e})}catch{}const Zs=wr?e=>wr.createHTML(e):e=>e,ol="http://www.w3.org/2000/svg",ll="http://www.w3.org/1998/Math/MathML",Xe=typeof document<"u"?document:null,bi=Xe&&Xe.createElement("template"),cl={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const i=t==="svg"?Xe.createElementNS(ol,e):t==="mathml"?Xe.createElementNS(ll,e):n?Xe.createElement(e,{is:n}):Xe.createElement(e);return e==="select"&&r&&r.multiple!=null&&i.setAttribute("multiple",r.multiple),i},createText:e=>Xe.createTextNode(e),createComment:e=>Xe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Xe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,i,s){const a=n?n.previousSibling:t.lastChild;if(i&&(i===s||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),n),!(i===s||!(i=i.nextSibling)););else{bi.innerHTML=Zs(r==="svg"?`<svg>${e}</svg>`:r==="mathml"?`<math>${e}</math>`:e);const o=bi.content;if(r==="svg"||r==="mathml"){const l=o.firstChild;for(;l.firstChild;)o.appendChild(l.firstChild);o.removeChild(l)}t.insertBefore(o,n)}return[a?a.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},ot="transition",jt="animation",on=Symbol("_vtc"),Qs={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},dl=ge({},ws,Qs),ul=e=>(e.displayName="Transition",e.props=dl,e),Xs=ul((e,{slots:t})=>sl(ao,hl(e),t)),vt=(e,t=[])=>{$(e)?e.forEach(n=>n(...t)):e&&e(...t)},vi=e=>e?$(e)?e.some(t=>t.length>1):e.length>1:!1;function hl(e){const t={};for(const P in e)P in Qs||(t[P]=e[P]);if(e.css===!1)return t;const{name:n="v",type:r,duration:i,enterFromClass:s=`${n}-enter-from`,enterActiveClass:a=`${n}-enter-active`,enterToClass:o=`${n}-enter-to`,appearFromClass:l=s,appearActiveClass:f=a,appearToClass:u=o,leaveFromClass:p=`${n}-leave-from`,leaveActiveClass:b=`${n}-leave-active`,leaveToClass:A=`${n}-leave-to`}=e,R=fl(i),I=R&&R[0],V=R&&R[1],{onBeforeEnter:j,onEnter:D,onEnterCancelled:J,onLeave:E,onLeaveCancelled:S,onBeforeAppear:C=j,onAppear:ne=D,onAppearCancelled:ee=J}=t,N=(P,ce,ve,Ye)=>{P._enterCancelled=Ye,kt(P,ce?u:o),kt(P,ce?f:a),ve&&ve()},U=(P,ce)=>{P._isLeaving=!1,kt(P,p),kt(P,A),kt(P,b),ce&&ce()},ie=P=>(ce,ve)=>{const Ye=P?ne:D,me=()=>N(ce,P,ve);vt(Ye,[ce,me]),ki(()=>{kt(ce,P?l:s),Qe(ce,P?u:o),vi(Ye)||yi(ce,r,I,me)})};return ge(t,{onBeforeEnter(P){vt(j,[P]),Qe(P,s),Qe(P,a)},onBeforeAppear(P){vt(C,[P]),Qe(P,l),Qe(P,f)},onEnter:ie(!1),onAppear:ie(!0),onLeave(P,ce){P._isLeaving=!0;const ve=()=>U(P,ce);Qe(P,p),P._enterCancelled?(Qe(P,b),_i(P)):(_i(P),Qe(P,b)),ki(()=>{P._isLeaving&&(kt(P,p),Qe(P,A),vi(E)||yi(P,r,V,ve))}),vt(E,[P,ve])},onEnterCancelled(P){N(P,!1,void 0,!0),vt(J,[P])},onAppearCancelled(P){N(P,!0,void 0,!0),vt(ee,[P])},onLeaveCancelled(P){U(P),vt(S,[P])}})}function fl(e){if(e==null)return null;if(X(e))return[rr(e.enter),rr(e.leave)];{const t=rr(e);return[t,t]}}function rr(e){return ua(e)}function Qe(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[on]||(e[on]=new Set)).add(t)}function kt(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[on];n&&(n.delete(t),n.size||(e[on]=void 0))}function ki(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let pl=0;function yi(e,t,n,r){const i=e._endId=++pl,s=()=>{i===e._endId&&r()};if(n!=null)return setTimeout(s,n);const{type:a,timeout:o,propCount:l}=gl(e,t);if(!a)return r();const f=a+"end";let u=0;const p=()=>{e.removeEventListener(f,b),s()},b=A=>{A.target===e&&++u>=l&&p()};setTimeout(()=>{u<l&&p()},o+1),e.addEventListener(f,b)}function gl(e,t){const n=window.getComputedStyle(e),r=R=>(n[R]||"").split(", "),i=r(`${ot}Delay`),s=r(`${ot}Duration`),a=wi(i,s),o=r(`${jt}Delay`),l=r(`${jt}Duration`),f=wi(o,l);let u=null,p=0,b=0;t===ot?a>0&&(u=ot,p=a,b=s.length):t===jt?f>0&&(u=jt,p=f,b=l.length):(p=Math.max(a,f),u=p>0?a>f?ot:jt:null,b=u?u===ot?s.length:l.length:0);const A=u===ot&&/\b(?:transform|all)(?:,|$)/.test(r(`${ot}Property`).toString());return{type:u,timeout:p,propCount:b,hasTransform:A}}function wi(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((n,r)=>xi(n)+xi(e[r])))}function xi(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function _i(e){return(e?e.ownerDocument:document).body.offsetHeight}function ml(e,t,n){const r=e[on];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Ai=Symbol("_vod"),bl=Symbol("_vsh"),vl=Symbol(""),kl=/(?:^|;)\s*display\s*:/;function yl(e,t,n){const r=e.style,i=ue(n);let s=!1;if(n&&!i){if(t)if(ue(t))for(const a of t.split(";")){const o=a.slice(0,a.indexOf(":")).trim();n[o]==null&&An(r,o,"")}else for(const a in t)n[a]==null&&An(r,a,"");for(const a in n)a==="display"&&(s=!0),An(r,a,n[a])}else if(i){if(t!==n){const a=r[vl];a&&(n+=";"+a),r.cssText=n,s=kl.test(n)}}else t&&e.removeAttribute("style");
vendor: 4,458 bytes, line 17
17Ai in e&&(e[Ai]=s?r.display:"",e[bl]&&(r.display="none"))}const Li=/\s*!important$/;function An(e,t,n){if($(n))n.forEach(r=>An(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=wl(e,t);Li.test(n)?e.setProperty(Lt(r),n.replace(Li,""),"important"):e[r]=n}}const Mi=["Webkit","Moz","ms"],ir={};function wl(e,t){const n=ir[t];if(n)return n;let r=ut(t);if(r!=="filter"&&r in e)return ir[t]=r;r=Wi(r);for(let i=0;i<Mi.length;i++){const s=Mi[i]+r;if(s in e)return ir[t]=s}return t}const Si="http://www.w3.org/1999/xlink";function Ci(e,t,n,r,i,s=ba(t)){r&&t.startsWith("xlink:")?n==null?e.removeAttributeNS(Si,t.slice(6,t.length)):e.setAttributeNS(Si,t,n):n==null||s&&!Ui(n)?e.removeAttribute(t):e.setAttribute(t,s?"":De(n)?String(n):n)}function Ti(e,t,n,r,i){if(t==="innerHTML"||t==="textContent"){n!=null&&(e[t]=t==="innerHTML"?Zs(n):n);return}const s=e.tagName;if(t==="value"&&s!=="PROGRESS"&&!s.includes("-")){const o=s==="OPTION"?e.getAttribute("value")||"":e.value,l=n==null?e.type==="checkbox"?"on":"":String(n);(o!==l||!("_value"in e))&&(e.value=l),n==null&&e.removeAttribute(t),e._value=n;return}let a=!1;if(n===""||n==null){const o=typeof e[t];o==="boolean"?n=Ui(n):n==null&&o==="string"?(n="",a=!0):o==="number"&&(n=0,a=!0)}try{e[t]=n}catch{}a&&e.removeAttribute(i||t)}function Tt(e,t,n,r){e.addEventListener(t,n,r)}function xl(e,t,n,r){e.removeEventListener(t,n,r)}const Ei=Symbol("_vei");function _l(e,t,n,r,i=null){const s=e[Ei]||(e[Ei]={}),a=s[t];if(r&&a)a.value=r;else{const[o,l]=Al(t);if(r){const f=s[t]=Sl(r,i);Tt(e,o,f,l)}else a&&(xl(e,o,a,l),s[t]=void 0)}}const Ii=/(?:Once|Passive|Capture)$/;function Al(e){let t;if(Ii.test(e)){t={};let r;for(;r=e.match(Ii);)e=e.slice(0,e.length-r[0].length),t[r[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):Lt(e.slice(2)),t]}let sr=0;const Ll=Promise.resolve(),Ml=()=>sr||(Ll.then(()=>sr=0),sr=Date.now());function Sl(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;$e(Cl(r,n.value),t,5,[r])};return n.value=e,n.attached=Ml(),n}function Cl(e,t){if($(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>i=>!i._stopped&&r&&r(i))}else return t}const Ri=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Tl=(e,t,n,r,i,s)=>{const a=i==="svg";t==="class"?ml(e,r,a):t==="style"?yl(e,n,r):On(t)?Ar(t)||_l(e,t,n,r,s):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):El(e,t,r,a))?(Ti(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Ci(e,t,r,a,s,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!ue(r))?Ti(e,ut(t),r,s,t):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Ci(e,t,r,a))};function El(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&Ri(t)&&H(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const i=e.tagName;if(i==="IMG"||i==="VIDEO"||i==="CANVAS"||i==="SOURCE")return!1}return Ri(t)&&ue(n)?!1:t in e}const Pi=e=>{const t=e.props["onUpdate:modelValue"]||!1;return $(t)?n=>kn(t,n):t};function Il(e){e.target.composing=!0}function Ni(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const ar=Symbol("_assign");function Bi(e,t,n){return t&&(e=e.trim()),n&&(e=Sr(e)),e}const Rl={created(e,{modifiers:{lazy:t,trim:n,number:r}},i){e[ar]=Pi(i);const s=r||i.props&&i.props.type==="number";Tt(e,t?"change":"input",a=>{a.target.composing||e[ar](Bi(e.value,n,s))}),(n||s)&&Tt(e,"change",()=>{e.value=Bi(e.value,n,s)}),t||(Tt(e,"compositionstart",Il),Tt(e,"compositionend",Ni),Tt(e,"change",Ni))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:i,number:s}},a){if(e[ar]=Pi(a),e.composing)return;const o=(s||e.type==="number")&&!/^0\d/.test(e.value)?Sr(e.value):e.value,l=t??"";o!==l&&(document.activeElement===e&&e.type!=="range"&&(r&&t===n||i&&e.value.trim()===l)||(e.value=l))}},Pl=["ctrl","shift","alt","meta"],Nl={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>
17Pl.some(n=>e[`${n}Key`]&&!t.includes(n))},Oi=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=((i,...s)=>{for(let a=0;a<t.length;a++){const o=Nl[t[a]];if(o&&o(i,t))return}return e(i,...s)}))},Bl=ge({patchProp:Tl},cl);let Di;function Ol(){return Di||(Di=Ho(Bl))}const Dl=((...e)=>{const t=Ol().createApp(...e),{mount:n}=t;return t.mount=r=>{const i=$l(r);if(!i)return;const s=t._component;!H(s)&&!s.render&&!s.template&&(s.template=i.innerHTML),i.nodeType===1&&(i.textContent="");const a=n(i,!1,Fl(i));return i instanceof Element&&(i.removeAttribute("v-cloak"),i.setAttribute("data-v-app","")),a},t});function Fl(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function $l(e){return ue(e)?document.querySelector(e):e}const ft=Ee(!0);function zl(){const e=localStorage.getItem("theme");e?ft.value=e==="dark":ft.value=!0,ea()}function ea(){document.documentElement.classList.toggle("dark",ft.value)}function Hl(){ft.value=!ft.value}Jt(ft,()=>{localStorage.setItem("theme",ft.value?"dark":"light"),ea()});function ta(){return{isDark:ft,initTheme:zl,toggleTheme:Hl}}function jl(e){const t=Ee(e[0]||"");return Ot(()=>{const n=new IntersectionObserver(r=>{for(const i of r)i.isIntersecting&&(t.value=i.target.id)},{threshold:.2,rootMargin:"-80px 0px 0px 0px"});for(const r of e){const i=document.getElementById(r);i&&n.observe(i)}}),{activeSection:t}}const Kl={key:0,class:"w-5 h-5 transition-transform duration-500 rotate-0",fill:"none",stroke:"currentColor","stroke-width":"2",viewBox:"0 0 24 24"},Wl={key:1,class:"w-5 h-5 transition-transform duration-500 rotate-0",fill:"none",stroke:"currentColor","stroke-width":"2",viewBox:"0 0 24 24"},Fi=pe({__name:"ThemeToggle",setup(e){const{isDark:t,toggleTheme:n}=ta();return(r,i)=>(m(),w("button",{onClick:i[0]||(i[0]=(...s)=>G(n)&&G(n)(...s)),"aria-label":"Toggle theme",class:"relative inline-flex items-center justify-center w-10 h-10 rounded-lg text-ink-500 dark:text-dark-muted hover:text-brand-600 dark:hover:text-brand-400 hover:bg-ink-100 dark:hover:bg-dark-surface transition-all duration-200"},[G(t)?(m(),w("svg",Kl,[...i[1]||(i[1]=[c("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"},null,-1)])])):(m(),w("svg",Wl,[...i[2]||(i[2]=[c("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"},null,-1)])]))]))}}),Vl={class:"flex items-center gap-2"},Ul=["href","target","aria-label"],Kr=pe({__name:"SocialLinks",props:{size:{default:"md"}},setup(e){const t=[{name:"Google Scholar",url:"https://scholar.google.com/citations?user=0l9UHtQAAAAJ&hl=en",icon:"scholar"},{name:"GitHub",url:"https://github.com/BKHMSI",icon:"github"},{name:"LinkedIn",url:"https://linkedin.com/in/bkhmsi",icon:"linkedin"},{name:"Twitter",url:"https://twitter.com/bkhmsi",icon:"twitter"},{name:"Email",url:"mailto:[email protected]",icon:"email"}];return(n,r)=>(m(),w("div",Vl,[(m(),w(Y,null,fe(t,i=>c("a",{key:i.name,href:i.url,target:i.icon!=="email"?"_blank":void 0,rel:"noopener noreferrer","aria-label":i.name,class:he(["inline-flex items-center justify-center rounded-lg text-ink-500 dark:text-dark-muted hover:text-brand-600 dark:hover:text-brand-400 hover:bg-ink-100 dark:hover:bg-dark-surface hover:scale-110 transition-all duration-200",e.size==="sm"?"w-8 h-8":"w-10 h-10"])},[i.icon==="scholar"?(m(),w("svg",{key:0,class:he(e.size==="sm"?"w-5 h-5":"w-6 h-6"),viewBox:"0 0 24 24",fill:"currentColor"},[...r[0]||(r[0]=[c("path",{d:"M5.242 13.769L0 9.5 12 0l12 9.5-5.242 4.269C17.548 11.249 14.978 9.5 12 9.5c-2.977 0-5.548 1.748-6.758 4.269zM12 10a7 7 0 1 0 0 14 7 7 0 0 0 0-14z"},null,-1)])],2)):i.icon==="github"?(m(),w("svg",{key:1,class:he(e.size==="sm"?"w-5 h-5":"w-6 h-6"),viewBox:"0 0 24 24",fill:"currentColor"},[...r[1]||(r[1]=[c("path",{d:"M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0 1 12 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z"},null,-1)])],2)):i.icon==="linkedin"?(m(),w("svg",{key:2,class:he(e.size==="sm"?"w-5 h-5":"w-6 h-6"),viewBox:"0 0 24 24",fill:"
17currentColor"},[...r[2]||(r[2]=[c("path",{d:"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"},null,-1)])],2)):i.icon==="twitter"?(m(),w("svg",{key:3,class:he(e.size==="sm"?"w-5 h-5":"w-6 h-6"),viewBox:"0 0 24 24",fill:"currentColor"},[...r[3]||(r[3]=[c("path",{d:"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"},null,-1)])],2)):i.icon==="email"?(m(),w("svg",{key:4,class:he(e.size==="sm"?"w-5 h-5":"w-6 h-6"),viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[...r[4]||(r[4]=[c("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"},null,-1)])],2)):le("",!0)],10,Ul)),64))]))}}),Gl={class:"fixed top-0 left-0 right-0 z-50 px-4 py-3"},Jl={class:"max-w-6xl mx-auto"},ql={class:"glass rounded-full px-5 py-2 flex items-center justify-between"},Yl={class:"hidden md:flex items-center gap-0.5"},Zl=["href"],Ql={key:0,class:"w-5 h-5 text-ink-700 dark:text-dark-text",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Xl={key:1,class:"w-5 h-5 text-ink-700 dark:text-dark-text",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},ec={key:0,class:"md:hidden mt-2 glass rounded-2xl p-4 space-y-1"},tc=["href"],nc={class:"flex items-center justify-between px-4 pt-2"},rc=pe({__name:"TheNavbar",props:{activeSection:{}},setup(e){const t=Ee(!1),n=[{id:"hero",label:"Home"},{id:"publications",label:"Publications"},{id:"talks",label:"Talks"},{id:"projects",label:"Projects"},{id:"experience",label:"Experience"},{id:"awards",label:"Awards"},{id:"people",label:"People"},{id:"service",label:"Service"}];return(r,i)=>(m(),w("nav",Gl,[c("div",Jl,[c("div",ql,[i[5]||(i[5]=c("a",{href:"#hero",class:"flex items-center gap-2 shrink-0"},[c("span",{class:"w-2.5 h-2.5 rounded-full bg-gradient-to-br from-brand-400 to-brand-600 shadow-lg shadow-brand-500/30"}),c("span",{class:"font-serif font-bold text-lg text-ink-900 dark:text-dark-text"},"Badr AlKhamissi")],-1)),c("div",Yl,[(m(),w(Y,null,fe(n,s=>c("a",{key:s.id,href:"#"+s.id,class:he(["px-2.5 py-1.5 rounded-full text-sm font-medium transition-all duration-200",e.activeSection===s.id?"bg-brand-50 dark:bg-brand-900/30 text-brand-600 dark:text-brand-300":"text-ink-600 dark:text-dark-muted hover:bg-ink-100 dark:hover:bg-dark-border/50 hover:text-ink-900 dark:hover:text-dark-text"])},W(s.label),11,Zl)),64)),i[2]||(i[2]=qo('<div class="w-px h-6 bg-ink-300 dark:bg-dark-border" data-v-7e5753e5></div><a href="https://bkhmsi.github.io/blog/" target="_blank" class="px-3 py-1.5 rounded-full text-sm font-medium text-ink-600 dark:text-dark-muted hover:bg-ink-100 dark:hover:bg-dark-border/50 hover:text-ink-900 dark:hover:text-dark-text transition-all duration-200 flex items-center gap-1" data-v-7e5753e5> Blog <svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-7e5753e5><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14" data-v-7e5753e5></path></svg></a><a href="/CV.pdf" target="_blank" class="px-3 py-1.5 rounded-full text-sm font-medium text-ink-600 dark:text-dark-muted hover:bg-ink-100 dark:hover:bg-dark-border/50 hover:text-ink-900 dark:hover:text-dark-text transition-all duration-200 flex items-center gap-1" data-v-7e5753e5> CV <svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-7e5753e5><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14" data-v-7e5753e5></path></svg></a>',3)),O(Fi)]),c("button",{onClick:i[0]||(i[0]=s=>t.value=!t.value),class:"md:hidden p-2 rounded-lg hover:bg-ink-100 dark:hover:bg-dark-border/50 transition-colors"},[t.value?(m(),w("svg",Xl,[...i[4]||(i[4]=[c("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"},null,-1)])])):(m(),w("svg",Ql,[...i[3]||(i[3]=[c("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 6h16M4 12h16M4 18h16"},null,-1)])]))])]),O(Xs,{name:"slide"},{default:Me(()=>[t.value?(m(),w("div",ec,[(m(),w(Y,null,fe(n,s=>c("a",{key:s.id,href:"#"+s.id,onClick:i[1]||(i[1]=a=>t.value=!1),class:he(["block px-4 py-2.5 rounded-xl text-sm font-medium transition-all duration-200",e.activeSection===s.id?"bg-brand-50 dark:bg-brand-900/30 text-brand-600 dark:text-brand-300":"text-ink-600 dark:text-dark-muted hover:bg-ink-100 dark:hover:bg-dark-border/50"])}
17,W(s.label),11,tc)),64)),i[6]||(i[6]=c("a",{href:"https://bkhmsi.github.io/blog/",target:"_blank",class:"block px-4 py-2.5 rounded-xl text-sm font-medium text-ink-600 dark:text-dark-muted hover:bg-ink-100 dark:hover:bg-dark-border/50 transition-all duration-200"},"Blog",-1)),i[7]||(i[7]=c("a",{href:"/CV.pdf",target:"_blank",class:"block px-4 py-2.5 rounded-xl text-sm font-medium text-ink-600 dark:text-dark-muted hover:bg-ink-100 dark:hover:bg-dark-border/50 transition-all duration-200"},"CV",-1)),c("div",nc,[O(Kr,{size:"sm"}),O(Fi)])])):le("",!0)]),_:1})])]))}}),Gn=(e,t)=>{const n=e.__vccOpts||e;for(const[r,i]of t)n[r]=i;return n},ic=Gn(rc,[["__scopeId","data-v-7e5753e5"]]),sc={class:"border-t border-ink-200 dark:border-dark-border"},ac={class:"max-w-6xl mx-auto py-8 px-4 text-center"},oc={class:"text-sm text-ink-500 dark:text-dark-muted"},lc=pe({__name:"TheFooter",setup(e){const t=new Date().getFullYear();return(n,r)=>(m(),w("footer",sc,[c("div",ac,[c("p",oc,[r[0]||(r[0]=K(" Badr AlKhamissi ",-1)),r[1]||(r[1]=c("span",{class:"mx-2 text-ink-300 dark:text-dark-border"},"·",-1)),K(" "+W(G(t)),1)]),r[2]||(r[2]=c("p",{class:"mt-1 text-xs text-ink-400 dark:text-dark-muted/60"}," Built with Vue.js & Tailwind CSS ",-1))])]))}}),na=JSON.parse(`[{"title":"MIRAGE: Adaptive Multimodal Gating for Whole-Brain fMRI Encoding","link":"https://arxiv.org/abs/2605.29850","authors":["Abdulkadir Gokce*,","<strong>Badr AlKhamissi*</strong>,","Martin Schrimpf"],"authorship":"first","badges":"poster","website":"https://mirage-brain.epfl.ch","poster":"","video":"","presentation":"","location":"Sydney, Australia","award":"","twitter":"https://x.com/bkhmsi/status/2061451293919428813","github":"https://github.com/epflneuroailab/mirage","year":"2026","venue":"Accepted at <a href=\\"https://neurips.cc/\\">NeurIPS</a> 2026","conference":["NeurIPS"],"type":["selected","conference"],"abstract":"Recent progress in task-optimized neural networks has established encoding models as a powerful tool for predicting brain responses to naturalistic stimuli, yet most existing approaches rely on unimodal representations. The emergence of omni-modal foundation models and rich multimodal neural datasets enables encoding models that jointly integrate visual, auditory, and linguistic information across subjects. We introduce MIRAGE, a brain encoding framework for predicting whole-brain fMRI responses to naturalistic audiovisual stimuli. MIRAGE achieves state-of-the-art performance via a native multimodal backbone and adaptive feature gating across layers. These representations are then combined with a transformer-based brain encoder and a subject-specific linear head over the cortical parcels. Controlled comparisons show that natively multimodal features consistently outperform post-hoc aggregation of independent unimodal features, across architectural levels and backbones. Beyond predictive accuracy, the learned attention weights are directly inspectable to interpret the modality-specific gating profile over the backbone, and each modality traces a distinct anatomical pattern across cortex. Together, these results propose adaptive layer-wise aggregation of natively multimodal features as a generalizable, interpretable, and accurate approach for whole-brain encoding."},{"title":"Lingua Franca or Probing Artifact? Rethinking Latent Language in Multilingual LLMs","link":"https://arxiv.org/abs/2609.00155","authors":["Deniz Bayazit","<strong>Badr AlKhamissi</strong>,","Antoine Bosselut"],"authorship":"co-author","badges":"conference","website":"","poster":"","video":"","presentation":"","location":"Budapest, Hungary","award":"","twitter":"","github":"https://github.com/bayazitdeniz/latent-lid","year":"2026","venue":"Accepted at <a href='https://2026.emnlp.org'>EMNLP 2026</a> Findings","conference":["EMNLP"],"type":["conference"],"abstract":"Latent language identification is often used to argue that multilingual language models route computation through language-specific states, such as English pivots. However, existing probes infer latent language from different signals, such as the geometry of hidden states or what can be decoded from intermediate representations. Since such claims shape conclusions about how models share and route information across languages, we ask whether these probes measure the same phenomenon or expose distinct aspects of multilingual computation. We study this question across model families, training regimes, domains, tasks, checkpoints, and up to 27 languages. We find that identification probes systematically disagree: the GMM-based representation probe, which draws evidence from hidden state geometry, shows earlier cross-lingual mixing, whereas decoding-based probes, which rely on output-space decodability, retain sharper language-specific and more English-biased
17signals. These differences track model multilinguality and training progression, but are comparatively stable across domains. Our results suggest a more cautious interpretation of latent language identification, where current probes expose different aspects of multilingual processing, rather than directly revealing a single internal lingua franca."},{"title":"Discovering Functionally Selective Brain Regions with a Deep Topographic Multimodal Model","link":"https://arxiv.org/abs/2606.09770","authors":["<strong>Badr AlKhamissi*</strong>,","Johannes Mehrer*,","Lara Marinov,","Ahmed Abdelaal,","Abdulkadir Gokce,","Martin Schrimpf"],"authorship":"first","badges":"preprint","website":"https://topo-omni.epfl.ch","poster":"","video":"","presentation":"","location":"","award":"","twitter":"https://x.com/bkhmsi/status/2066866968896950775","github":"https://github.com/epflneuroailab/topo-omni","year":"2026","venue":"Under Review & Extended Abstract Accepted as a <strong>Spotlight (top 10%)</strong> at <a href='https://2026.ccneuro.org'>CCN 2026</a>","conference":["Preprint","CCN"],"type":["selected","preprint"],"abstract":"Nearby neurons in cortex share similar response profiles, producing systematic spatial organization across sensory and cognitive systems. Recent topographic models reproduce aspects of this structure but remain unimodal and spatially constrain each layer separately, yielding fragmented maps that capture neither the contiguity of cortical processing streams nor their integration across modalities. We introduce Topo-Omni, a topographic multimodal model in which visual, auditory, and language/cognitive processing share a single contiguous in-silico sheet. Built by fine-tuning a pretrained foundation model with a spatial smoothness objective, this architecture develops clusters across modalities that are consistent with human neuroimaging, from sensory to cognitive systems. Driving or suppressing a cluster selectively biases or impairs perception, paralleling human intervention studies. Finally, we use our model to screen for novel clusters in-silico and discover new natural landscape and animal networks which we validate in human data. A single spatial principle thus organizes representations across modalities and processing stages, yielding testable hypotheses about cortical organization."},{"title":"Large Language Models Align with the Human Brain during Creative Thinking","link":"https://arxiv.org/abs/2604.03480","authors":["Mete Ismayilzada,","Simone A Luchini,","Abdulkadir Gokce,","<strong>Badr AlKhamissi</strong>,","Antoine Bosselut,","Antonio Laverghetta Jr,","Lonneke van der Plas,","Roger E Beaty"],"authorship":"co-author","badges":"poster","website":"","poster":"","video":"","presentation":"","location":"San Francisco, US","award":"","twitter":"","github":"","year":"2026","venue":"Accepted at <strong><a href='https://colmweb.org'>COLM 2026</a></strong>","conference":["COLM"],"type":["conference"],"abstract":"Creative thinking is a fundamental aspect of human cognition, and divergent thinking-the capacity to generate novel and varied ideas-is widely regarded as its core generative engine. Large language models (LLMs) have recently demonstrated impressive performance on divergent thinking tests and prior work has shown that models with higher task performance tend to be more aligned to human brain activity. However, existing brain-LLM alignment studies have focused on passive, non-creative tasks. Here, we explore brain alignment during creative thinking using fMRI data from 170 participants performing the Alternate Uses Task (AUT). We extract representations from LLMs varying in size (270M-72B) and measure alignment to brain responses via Representational Similarity Analysis (RSA), targeting the creativity-related default mode and frontoparietal networks. We find that brain-LLM alignment scales with model size (default mode network only) and idea originality (both networks), with effects strongest early in the creative process. We further show that post-training objectives shape alignment in functionally selective ways: a creativity-optimized \\texttt{Llama-3.1-8B-Instruct} preserves alignment with high-creativity neural responses while reducing alignment with low-creativity ones; a human behavior fine-tuned model elevates alignment with both; and a reasoning-trained variant shows the opposite pattern, suggesting chain-of-thought training steers representations away from creative neural geometry toward analytical processing. These results demonstrate that post-training objectives selectively reshape LLM representations relative to the neural geometry of human creative thought."},{"title":"Apertus: Democratizing Open and Compliant LLMs For Global Language Environments","link":"https://arxiv.org/abs/2509.14233","authors":["Alejandro Hernández-Cano,","Alexander Hägele,","Allen Hao Huang,","Angelika Romanou,","Antoni-Joan Solergibert,","Barna Pasztor,","[...],","<strong>Badr AlKhamissi</strong>,","[...],","Antoine Bosselut*,","Imanol Schlag*,","Martin Jaggi*"],"authorship":"co-author","badges":"poster","website":"https://huggingface.co/collections/swiss-ai/apertus-llm-68b699e65415c231ace3b059","poster":"","video":"https://actu.epfl.ch/news/apertus-a-fully-open-trans
17parent-multilingual-lang","presentation":"","location":"San Diego, US","award":"","twitter":"https://x.com/EPFL_en/status/1962808227843735595","github":"","year":"2025","venue":"Accepted at <strong><a href='https://2026.aclweb.org'>ACL 2026</a></strong>","conference":["ACL"],"type":["conference"],"abstract":"We present Apertus, a fully open suite of large language models (LLMs) designed to address two systemic shortcomings in today's open model ecosystem: data compliance and multilingual representation. Unlike many prior models that release weights without reproducible data pipelines or regard for content-owner rights, Apertus models are pretrained exclusively on openly available data, retroactively respecting robots.txt exclusions and filtering for copyrighted, non-permissive, toxic, and personally identifiable content. To mitigate risks of memorization, we adopt the Goldfish objective, strongly suppressing verbatim recall of data while retaining downstream task performance. The Apertus models also expand multilingual coverage, training on 15T tokens from over 1800 languages, with ~40$% of pretraining data allocated to non-English content. Released at 8B and 70B scales, Apertus approaches state-of-the-art results among fully open models on multilingual benchmarks, rivalling or surpassing open-weight counterparts. Beyond model weights, we release all scientific artifacts from our development cycle with a permissive license, including data preparation scripts, checkpoints, evaluation suites, and training code, enabling transparent audit and extension."},{"title":"Mixture of Cognitive Reasoners: Modular Reasoning with Brain-Like Specialization","link":"http://arxiv.org/abs/2506.13331","authors":["<strong>Badr AlKhamissi</strong>,","C. Nicolò De Sabbata,","Zeming Chen,","Martin Schrimpf*,","Antoine Bosselut*"],"authorship":"first","badges":"poster","website":"https://cognitive-reasoners.epfl.ch","poster":"https://cognitive-reasoners.epfl.ch/poster.pdf","video":"","presentation":"","location":"Rio de Janeiro, Brazil","award":"","twitter":"https://x.com/bkhmsi/status/1980239452091056532?s=20","github":"https://github.com/bkhmsi/mixture-of-cognitive-reasoners","year":"2025","venue":"Accepted at <strong><a href='https://iclr.cc'>ICLR 2026</a></strong>","conference":["ICLR"],"type":["selected","conference"],"abstract":"Human intelligence emerges from the interaction of specialized brain networks, each dedicated to distinct cognitive functions such as language processing, logical reasoning, social understanding, and memory retrieval. Inspired by this biological observation, we introduce the Mixture of Cognitive Reasoners (MiCRo) architecture and training paradigm: a modular transformer-based language model with a training curriculum that encourages the emergence of functional specialization among different modules. Inspired by studies in neuroscience, we partition the layers of a pretrained transformer model into four expert modules, each corresponding to a well-studied cognitive brain network. Our Brain-Like model has three key benefits over the state of the art: First, the specialized experts are highly interpretable and functionally critical, where removing a module significantly impairs performance on domain-relevant benchmarks. Second, our model outperforms comparable baselines that lack specialization on seven reasoning benchmarks. And third, the model's behavior can be steered at inference time by selectively emphasizing certain expert modules (e.g., favoring social over logical reasoning), enabling fine-grained control over the style of its response. Our findings suggest that biologically inspired inductive biases involved in human cognition lead to significant modeling gains in interpretability, performance, and controllability."},{"title":"Inducing Dyslexia in Vision Language Models","link":"https://arxiv.org/abs/2509.24597","authors":["Melika Honarmand,","Ayati Sharma,","<strong>Badr AlKhamissi</strong>,","Johannes Mehrer,","Martin Schrimpf"],"authorship":"co-author","badges":"poster","website":"","poster":"","video":"","presentation":"","location":"Rio de Janeiro, Brazil","award":"","twitter":"https://x.com/bkhmsi/status/1973706572351369390","github":"https://github.com/epflneuroailab/VWFA-Localization","year":"2025","venue":"Accepted at <strong><a href='https://iclr.cc'>ICLR 2026</a></strong>","conference":["ICLR"],"type":["conference"],"abstract":"Dyslexia, a neurodevelopmental disorder characterized by persistent reading difficulties, is often linked to reduced activity of the visual word form area in the ventral occipito-temporal cortex. Traditional approaches to studying dyslexia, such as behavioral and neuroimaging methods, have provided valuable insights but remain limited in their ability to test causal hypotheses about the underlying mechanisms of reading impairments. In this study, we use large-scale vision-language models (VLMs) to simulate dyslexia by functionally identifying and perturbing artificial analogues of word processing. Using stimuli from cognitive neuroscience, we identify visual-word-form-selective units within VLMs and demonstrate that targeted ablation of these units, unlike ablation of random units, leads to selective impairments in reading tasks while general visual and language comprehension abilities remain intact. In particular, the resulting model matches dyslexic humans' phonological deficits without a significant change in orthographic processing. Taken together, our modeling results replicate key characteristics of dyslexia and establish a computational framework for investigating reading disorders."},{"title":"Hire Your Anthropologist! Rethinking Culture Benchmarks Through an Anthropological Lens","link":"https://arxiv.org/abs/2510.05931","authors":["Mai AlKhamissi*,","Yunze Xiao*,","<strong>Badr AlKhamissi</strong>,","Mona Diab"],"authorship":"co-author","badges":"poster","website":"","poster":"","video":"","presentation":"","location":"Rabat, Morocco","award":"","twitter":"https://x.com/bkhmsi/status/1981445762077905198?s=20","github":"","year":"2026","venue":"Accepted at <strong><a href='https://2026.eacl.org'>EACL 2026</a></strong> (Findings)","conference":["EACL"],"type":["conference"],"abstract":"Cultural evaluation of large language models has become increasingly important, yet current benchmarks often reduce culture to static facts or homogeneous values. This view conflicts with anthropological accounts that emphasize culture as dynamic, historically situated, and enacted in practice. To analyze this gap, we introduce a four-part framework that categorizes how benchmarks frame culture, such as knowledge, preference, performance, or bias. Using this lens, we qual
17itatively examine 20 cultural benchmarks and identify six recurring methodological issues, including treating countries as cultures, overlooking within-culture diversity, and relying on oversimplified survey formats. Drawing on established anthropological methods, we propose concrete improvements: incorporating real-world narratives and scenarios, involving cultural communities in design and validation, and evaluating models in context rather than isolation. Our aim is to guide the development of cultural benchmarks that go beyond static recall tasks and more accurately capture the responses of the models to complex cultural situations."},{"title":"Evaluating Contrast Localizer for Identifying Causal Units in Social & Mathematical Tasks in Language Models","link":"https://arxiv.org/abs/2508.08276","authors":["Yassine Jamaa,","<strong>Badr AlKhamissi</strong>,","Satrajit Ghosh*,","Martin Schrimpf*"],"authorship":"co-author","badges":"poster","website":"","poster":"","video":"","presentation":"","location":"","award":"","twitter":"","github":"https://github.com/YassineJamaa/ToM-LargeModel","year":"2025","venue":"Accepted at the <strong><a href='https://interplay-workshop.github.io'>Interplay of Model Behavior and Model Internals Workshop</a> co-located with <a href='https://colmweb.org'>COLM 2025</a>","conference":["Interplay | COLM"],"type":["workshop"],"abstract":"This work adapts a neuroscientific contrast localizer to pinpoint causally relevant units for Theory of Mind (ToM) and mathematical reasoning tasks in large language models (LLMs) and vision-language models (VLMs). Across 11 LLMs and 5 VLMs ranging in size from 3B to 90B parameters, we localize top-activated units using contrastive stimulus sets and assess their causal role via targeted ablations. We compare the effect of lesioning functionally selected units against low-activation and randomly selected units on downstream accuracy across established ToM and mathematical benchmarks. Contrary to expectations, low-activation units sometimes produced larger performance drops than the highly activated ones, and units derived from the mathematical localizer often impaired ToM performance more than those from the ToM localizer. These findings call into question the causal relevance of contrast-based localizers and highlight the need for broader stimulus sets and more accurately capture task-specific units."},{"title":"Rational Metareasoning for Large Language Models","link":"https://arxiv.org/abs/2410.05563","authors":["C. Nicolò De Sabbata,","Theodore R. Sumers,","<strong>Badr AlKhamissi</strong>,","Antoine Bosselut,","Thomas L. Griffiths"],"authorship":"co-author","badges":"preprint","website":"","poster":"","video":"","presentation":"","location":"","award":"","twitter":"","github":"","year":"2025","venue":"Preprint","conference":["Preprint"],"type":["preprint"],"abstract":"Being prompted to engage in reasoning has emerged as a core technique for using large language models (LLMs), deploying additional inference-time compute to improve task performance. However, as LLMs increase in both size and adoption, inference costs are correspondingly becoming increasingly burdensome. How, then, might we optimize reasoning's cost-performance tradeoff? This work introduces a novel approach based on computational models of metareasoning used in cognitive science, training LLMs to selectively use intermediate reasoning steps only when necessary. We first develop a reward function that incorporates the Value of Computation by penalizing unnecessary reasoning, then use this reward function with Expert Iteration to train the LLM. Compared to few-shot chain-of-thought prompting and STaR, our method significantly reduces inference costs (20-37)% fewer tokens generated across three models) while maintaining task performance across diverse datasets."},{"title":"From Language to Cognition: How LLMs Outgrow the Human Language Network","link":"https://arxiv.org/abs/2503.01830","authors":["<strong>Badr AlKhamissi</strong>,","Greta Tuckute,","Yingtian Tang,","Taha Binhuraib,","Antoine Bosselut*,","Martin Schrimpf*"],"authorship":"first","badges":"oral","website":"https://language-to-cognition.epfl.ch","poster":"https://language-to-cognition.epfl.ch/poster.pdf","video":"","presentation":"Oral Presentation","location":"Suzhou, China","award":"","twitter":"https://x.com/bkhmsi/status/1897312258621161568","github":"","year":"2025","venue":"Accepted at <strong><a href='https://2025.emnlp.org/'>EMNLP 2025</a></strong> & <strong><a href='https://2025.ccneuro.org/'>CCN 2025</a></strong>","conference":["EMNLP","CCN"],"type":["selected","conference"],"abstract":"Large language models (LLMs) exhibit remarkable similarity to neural activity in the human language network. However, the key properties of language shaping brain-like representations, and their evolution during training as a function of different tasks remain unclear. We here benchmark 34 training checkpoints spanning 300B tokens across 8 different model sizes to analyze how brain alignment relates to linguistic competence. Specifically, we find that brain alignment tracks the development of formal linguistic competence -- i.e., knowledge of linguistic rules -- more closely than functional linguistic competence. While functional competence, which involves world knowledge and reasoning, continues to develop throughout training, its relationship with brain alignment is weaker, suggesting that the human language network primarily encodes formal linguistic structure rather than broader cognitive functions. We further show that model size is not a reliable predictor of brain alignment when controlling for feature size and find that the correlation between next-word prediction, behavioral alignment and brain alignment fades once models surpass human language proficiency. Finally, using the largest set of rigorous neural language benchmarks to date, we show that language brain alignment benchmarks remain unsaturated, highlighting opportunities for improving future models. Taken together, our findings suggest that the human language network is best modeled by formal, rather than functional, aspects of language."},{"title":"The LLM Language Network: A Neuroscientific Approach for Identifying Causally Task-Relevant Units","link":"https://arxiv.org/abs/2411.02280","authors":["<strong>Badr AlKhamissi</strong>,","Greta Tuckute,","Antoine Bosselut*,","Martin Schrimpf*"],"authorship":"first","badges":"oral","website":"https://llm-language-network.epfl.ch","poster":"","video":"","presentation":"Oral Presentation","location":"New Mexico, US","award":"","twitter":"https://x.com/bkhmsi/status/1869761118690054563","github":"https://github.com/bkhmsi/llm-localization","year":"2024","venue":"Accepted at <strong><a href='https://2025.naacl.org'>NAACL 2025</a></strong>","conference":["NAACL"],"type":["selected","conference"],"abstract":"Large language models (LLMs) exhibit remarkable capabilities on not just language tasks, but also various tasks that are not linguistic in nature, such as logical reasoning and social inference. In the human brain, neuroscience has identified a core language system that selectively and causally supports language processing. We here ask whether similar specialization for language emerges in LLMs. We identify language-selective units within 18 popular LLMs, using the same localization approach that is used in neuroscience. We then establish the causal role of these units by demonstrating that ablating LLM language-selective units -- but not random units -- leads to drastic deficits in language tasks. Correspondingly, language-selective LLM units are more aligned to brain recordings from the human language system than random units. Finally, we investigate whether our localization method extends to other cognitive domains: while we find specialized networks in some LLMs for reasoning and social capabilities, there are substantial differences among models. These findings provide functional and causal evidence for specialization in large language models, and highlight parallels with the functional organization in the brain."},{"title":"TopoLM: Brain-Like Spatio-functional Organization in a Topographic Language Model","link":"https://arxiv.org/abs/2410.11516","authors":["Neil Rathi*,","Johannes Mehrer*,","<strong>Badr AlKhamissi</strong>,","Taha Binhuraib,","Nicholas M. Blauch,","Martin Schrimpf"],"authorship":"co-author","badges":"oral","website":"https://topolm.epfl.ch","poster":"","video":"","presentation":"Oral Presentation","location":"Singapore","award":"","twitter":"https://x.com/neil_rathi/status/1846590877046862189","github":"https://github.com/neilrathi/topolm","year":"2024","venue":"Accepted at <strong><a href='https://iclr.cc'>ICLR 2025</a></strong>","conference":["ICLR"],"type":["conference"],"abstract":"Neurons in the brain are spatially organized such that neighbors on tissue often exhibit similar response profiles. In the human language system, experimental studies have observed clusters for syntactic and semantic categories, but the mechanisms underlying this functional organization remain unclear. Here, building on work from the vision literature, we develop TopoLM, a transformer language model with an explicit two-dimensional spatial representation of model units. By combining a next-token prediction objective with a spatial smoothness loss, representations in this model assemble into clusters that correspond to semantically interpretable groupings of text and closely match the functional organization in the brain's language system. TopoLM successfully predicts the emergence of the spatio-functional organization of a cortical language system as well as the organization of functional cluster
17s selective for fine-grained linguistic features empirically observed in human cortex. Our results suggest that the functional organization of the human language system is driven by a unified spatial objective, and provide a functionally and spatially aligned model of language processing in the brain."},{"title":"Dreaming Out Loud: A Self-Synthesis Approach For Training Vision-Language Models With Developmentally Plausible Data","link":"https://arxiv.org/abs/2411.00828","authors":["<strong>Badr AlKhamissi</strong>*,","Yingtian Tang*,","Abdülkadir Gökce*,","Johannes Mehrer,","Martin Schrimpf"],"authorship":"first","badges":"poster","website":"","poster":"","video":"","presentation":"","location":"Miami, US","award":"","twitter":"","github":"","year":"2024","venue":"Accepted at <strong><a href='https://babylm.github.io/'>BabyLM Challenge</a></strong> co-located with <strong><a href='https://www.conll.org/'>CoNLL 2024</a></strong>","conference":["BabyLM | CoNLL"],"type":["workshop"],"abstract":"While today's large language models exhibit impressive abilities in generating human-like text, they require massive amounts of data during training. We here take inspiration from human cognitive development to train models in limited data conditions. Specifically we present a self-synthesis approach that iterates through four phases: Phase 1 sets up fundamental language abilities, training the model from scratch on a small corpus. Language is then associated with the visual environment in phase 2, integrating the model with a vision encoder to generate descriptive captions from labeled images. In the 'self-synthesis' phase 3, the model generates captions for unlabeled images, that it then uses to further train its language component with a mix of synthetic, and previous real-world text. This phase is meant to expand the model's linguistic repertoire, similar to humans self-annotating new experiences. Finally, phase 4 develops advanced cognitive skills, by training the model on specific tasks such as visual question answering and reasoning. Our approach offers a proof of concept for training a multimodal model using a developmentally plausible amount of data."},{"title":"Khattat: Enhancing Readability and Concept Representation of Semantic Typography","link":"https://arxiv.org/abs/2410.03748v1","authors":["Ahmed Hussein*,","Alaa Elsetohy*,","Sama Hadhoud*,","Tameem Bakr*,","Yasser Rohaim*,","<strong>Badr AlKhamissi</strong>"],"authorship":"senior","badges":"poster","website":"https://ai091.github.io/Khattat-page/","poster":"https://drive.google.com/file/d/1KX6sz8ZktmFYDxcDZwmZQ4tzwWiHDbSz/view","video":"","presentation":"","location":"Milan, Italy","award":"","twitter":"https://x.com/bkhmsi/status/1844325616365256872","github":"","year":"2024","venue":"Accepted at the <strong><a href='https://sites.google.com/view/ai4vaeccv2024'>AI for Visual Arts Workshop</a></strong> co-located with <strong><a href='https://eccv.ecva.net'>ECCV 2024</a></strong>","conference":["AI4VA | ECCV"],"type":["workshop"],"abstract":"Designing expressive typography that visually conveys a word's meaning while maintaining readability is a complex task; such art is known as semantic typography. It requires careful selection of an idea, choosing an appropriate font, and balancing creativity with legibility. We introduce an end-to-e
17nd system that transforms this process into an automated pipeline. To achieve this, we first use a Large Language Model (LLM) as a prompt engine to generate suitable imagery ideas for the given word, which is particularly useful for abstract concepts like \`\`freedom.'' Next, we use the FontCLIP pre-trained model to automatically select an appropriate font based on its semantic understanding of font attributes. The system then identifies the optimal region of the word for morphing and iteratively transforms it, leveraging the prior knowledge of a pre-trained diffusion model. A key feature is our OCR-based loss function, which enhances readability and allows for the simultaneous stylization of multiple characters. We compare our method with other baselines, demonstrating great readability enhancement and versatility across multiple languages and writing scripts."},{"title":"Brain-Like Language Processing via a Shallow Untrained Multihead Attention Network","link":"https://arxiv.org/abs/2406.15109","authors":["<strong>Badr AlKhamissi</strong>,","Greta Tuckute,","Antoine Bosselut*,","Martin Schrimpf*"],"authorship":"first","badges":"preprint","website":"","poster":"","video":"","presentation":"","location":"","award":"","twitter":"https://x.com/bkhmsi/status/1805595986510717136","github":"https://github.com/bkhmsi/brain-language-suma","year":"2024","venue":"<a href='./assets/CCN_2024.pdf'>Abstract Version</a> Accepted at the <strong><a href='https://2024.ccneuro.org/'>CCN 2024</a></strong>","type":["workshop"],"conference":["CCN"],"abstract":"Large Language Models (LLMs) have been shown to be effective models of the human language system, with some models predicting most explainable variance of brain activity in current datasets. Even in untrained models, the representations induced by architectural priors can exhibit reasonable alignment to brain data. In this work, we investigate the key architectural components driving the surprising alignment of untrained models. To estimate LLM-to-brain similarity, we first select language-selective units within an LLM, similar to how neuroscientists identify the language network in the human brain. We then benchmark the brain alignment of these LLM units across five different brain recording datasets. By isolating critical components of the Transformer architecture, we identify tokenization strategy and multihead attention as the two major components driving brain alignment. A simple form of recurrence further improves alignment. We further demonstrate this quantitative brain alignment of our model by reproducing landmark studies in the language neuroscience field, showing that localized model units -- just like language voxels measured empirically in the human brain -- discriminate more reliably between lexical than syntactic differences, and exhibit similar response profiles under the same experimental conditions. Finally, we demonstrate the utility of our model's representations for language modeling, achieving improved sample and parameter efficiency over comparable architectures. Our model's estimates of surprisal sets a new state-of-the-art in the behavioral alignment to human reading times. Taken together, we propose a highly brain- and behaviorally-aligned model that conceptualizes the human language system as an untrained shallow feature encoder, with structural priors, combined with a trained decoder to achieve efficient and performant language processing."},{"title":"MEDITRON: Open Medical Foundation Models Adapted for Clinical Practice","link":"https://www.researchsquare.com/article/rs-4139743/v1","authors":["Zeming Chen,","Angelika Romanou*,","Antoine Bonnet*,","Alejandro Hernández-Cano*,","<strong>Badr AlKhamissi*</strong>,","Kyle Matoba*,","[...],","Physician Evaluation Group,","Noémie Boillat-Blanco,","Kristina Keitel,","Javier Elkin,","Blaise Robert,","Syrielle Montariol,","Mary-Anne Hartley*,","Martin Jaggi*,","Antoine Bosselut*"],"authorship":"co-author","badges":"preprint","website":"https://www.meditron.io","poster":"","video":"","presentation":"","location":"","award":"","twitter":"","github":"https://github.com/epfLLM/meditron","year":"2024","venue":"","conference":["Preprint"],"type":["preprint"],"abstract":"Large language and multimodal models (LLMs and LMMs) will transform access to medical knowledge and clinical decision support. However, the current leading systems fall short of this promise, as they are either limited in scale, which restricts their capabilities, closed-source, which limits the extensions and scrutiny that can be applied to them or not sufficiently adapted to clinical settings, which inhibits their practical use. In this work, we democratize large-scale medical AI systems by developing MediTron: a suite of open-source LLMs and LMMs with 7B and 70B parameters adapted to the medical domain. MediTron extends pretraining on a comprehensively curated medical corpus that includes biomedical literature and internationally recognized clinical practice guidelines. Evaluations using standard medical reasoning benchmarks show significant improvements over all current open-access models and several state-of-the-art commercial LLMs that are orders of magnitude larger, more expensive to host, and closed-source. Enhanced with visual processing capabilities, our MediTron-V model also outperforms all open-access models and much larger closed-source models on multimodal reasoning tasks for various biomedical imaging modalities. Beyond traditional benchmarks, we also create a novel and physician-driven adversarial question dataset grounded in real-world clinical settings and a comprehensive 17-metric evaluation rubric to assess alignment and contextualization to real-world clinical practice. Applying this framework to MediTron-70B's responses, sixteen independent physicians foun
17d a high level of alignment across all metrics, including medical accuracy, safety, fairness, communication, and interpretation. The MediTron suite is a significant step forward in closing the technological gap between closed- and open-source medical foundation models. By releasing our methodologies, models, and real-world clinical practice benchmarks, we aim to drive the open-source development of more capable, representative, accessible, and transparent medical AI assistants."},{"title":"Investigating Cultural Alignment of Large Language Models","link":"https://arxiv.org/abs/2402.13231","authors":["<strong>Badr AlKhamissi</strong>,","Muhammad ElNokrashy,","Mai AlKhamissi,","Mona Diab"],"authorship":"first","badges":"poster","website":"","poster":"","video":"https://www.youtube.com/watch?v=Si71JWntTc8","presentation":"","location":"Bangkok, Thailand","award":"","twitter":"https://x.com/bkhmsi/status/1760389415933776189","github":"https://github.com/bkhmsi/cultural-trends","year":"2024","venue":"Accepted at <strong><a href='https://2024.aclweb.org'>ACL 2024</a></strong> & <strong><a href='https://ic2s2-2024.org'>IC2S2 2024</a></strong> (Oral)","conference":["ACL","IC2S2"],"type":["selected","conference"],"abstract":"The intricate relationship between language and culture has long been a subject of exploration within the realm of linguistic anthropology. Large Language Models (LLMs), promoted as repositories of collective human knowledge, raise a pivotal question: do these models genuinely encapsulate the diverse knowledge adopted by different cultures? Our study reveals that these models demonstrate greater cultural alignment along two dimensions -- firstly, when prompted with the dominant language of a specific culture, and secondly, when pretrained with a refined mixture of languages employed by that culture. We quantify cultural alignment by simulating sociological surveys, comparing model responses to those of actual survey participants as references. Specifically, we replicate a survey conducted in various regions of Egypt and the United States through prompting LLMs with different pretraining data mixtures in both Arabic and English with the personas of the real respondents and the survey questions. Further analysis reveals that misalignment becomes more pronounced for underrepresented personas and for culturally sensitive topics, such as those probing social values. Finally, we introduce Anthropological Prompting, a novel method leveraging anthropological reasoning to enhance cultural alignment. Our study emphasizes the necessity for a more balanced multilingual pretraining dataset to better represent the diversity of human experience and the plurality of different cultures with many implications on the topic of cross-lingual transfer."},{"title":"A Context-Contrastive Inference Approach To Partial Diacritization","link":"https://arxiv.org/abs/2401.08919","authors":["Muhammad ElNokrashy,","<strong>Badr AlKhamissi</strong>"],"authorship":"senior","badges":"oral","website":"https://huggingface.co/spaces/bkhmsi/Partial-Arabic-Diacritization","poster":"","video":"","presentation":"Oral Presentation","location":"Bangkok, Thailand","award":"","twitter":"https://x.com/__munael/status/1750601595337732123","github":"https://github.com/munael/ccpd-partial-arabic-diacritization","year":"2024","venue":"Accepted at the <strong><a href='https://arabicnlp2024.sigarab.org'> ArabicNLP 2024 Conference </a></strong>","conference":["ArabicNLP"],"type":["conference"],"abstract":"Diacritization plays a pivotal role in improving readability and disambiguating the meaning of Arabic texts. Efforts have so far focused on marking every eligible character (Full Diacritization). Comparatively overlooked, Partial Diacritzation (PD) is the selection of a subset of characters to be marked to aid comprehension where needed. Research has indicated that excessive diacritic marks can hinder skilled readers--reducing reading speed and accuracy. We conduct a behavioral experiment and show that partially marked text is often easier to read than fully marked text, and sometimes easier than plain text. In this light, we introduce Context-Contrastive Partial Diacritization (CCPD)--a n
17ovel approach to PD which integrates seamlessly with existing Arabic diacritization systems. CCPD processes each word twice, once with context and once without, and diacritizes only the characters with disparities between the two inferences. Further, we introduce novel indicators for measuring partial diacritization quality (SR, PDER, HDER, ERE), essential for establishing this as a machine learning task. Lastly, we introduce TD2, a Transformer-variant of an established model which offers a markedly different per formance profile on our proposed indicators compared to all other known systems."},{"title":"\\"Flex Tape Can't Fix That\\": Bias and Misinformation in Edited Language Models","link":"https://arxiv.org/abs/2403.00180","authors":["Karina Halevy,","Anna Sotnikova,","<strong>Badr AlKhamissi</strong>,","Syrielle Montariol,","Antoine Bosselut"],"authorship":"co-author","badges":"poster","website":"","poster":"","video":"","presentation":"","location":"Miami, US","award":"","twitter":"","github":"","year":"2024","venue":"Accepted at <strong><a href='https://2024.emnlp.org' target='_blank'>EMNLP 2024</a></strong>","conference":["EMNLP"],"type":["conference"],"abstract":"Model editing has emerged as a cost-effective strategy to update knowledge stored in language models. However, model editing can have unintended consequences after edits are applied: information unrelated to the edits can also be changed, and other general behaviors of the model can be wrongly altered. In this work, we investigate how model editing methods unexpectedly amplify model biases post-edit. We introduce a novel benchmark dataset, Seesaw-CF, for measuring bias-related harms of model editing and conduct the first in-depth investigation of how different weight-editing methods impact model bias. Specifically, we focus on biases with respect to demographic attributes such as race, geographic origin, and gender, as well as qualitative flaws in long-form texts generated by edited language models. We find that edited models exhibit, to various degrees, more biased behavior as they become less confident in attributes for Asian, African, and South American subjects. Furthermore, edited models amplify sexism and xenophobia in text generations while remaining seemingly coherent and logical. Finally, editing facts about place of birth, country of citizenship, or gender have particularly negative effects on the model's knowledge about unrelated features like field of work."},{"title":"Instruction-tuning Aligns LLMs to the Human Brain","link":"https://arxiv.org/abs/2312.00575","authors":["Khai Loong Aw,","Syrielle Montariol*,","<strong>Badr AlKhamissi*</strong>,","Martin Schrimpf,","Antoine Bosselut"],"authorship":"co-author","badges":"poster","website":"","poster":"assets/posters/instruction-tuning-brain-align.pdf","video":"","presentation":"","location":"Philadelphia, US","award":"","twitter":"https://x.com/_akhaliq/status/1731494802900853103?s=20","github":"","year":"2024","venue":"Accepted at <strong><a href='https://colmweb.org'>COLM 2024</a></strong> and the <strong><a href='https://unireps.org'>UniReps</a></strong> and <strong><a href='https://an-instructive-workshop.github.io'>Instruction Tuning and Following</a></strong> Workshops co-located with NeurIPS 2023","conference":["COLM"],"type":["conference"],"abstract":"Instruction-tuning is a widely adopted method of finetuning that enables large language models (LLMs) to generate output that more closely resembles human responses to natural language queries, in many cases leading to human-level performance on diverse testbeds. However, it remains unclear whether instruction-tuning truly makes LLMs more similar to how humans process language. We investigate the effect of instruction-tuning on LLM-human similarity in two ways: (1) brain alignment, the similarity of LLM internal representations to neural activity in the human language system, and (2) behavioral alignment, the similarity of LLM and human behavior. We assess 25 vanilla and instruction-tuned LLMs across three datasets involving humans reading naturalistic stories and sentences, and discover that instruction-tuning generally enhances brain alignment by an average of 6, but does not have a similar effect on behavioral alignment on a reading task. To identify the factors underlying LLM-brain alignment, we compute the correlation between the brain alignment of LLMs and various model properties, such as model size, performance ability on problem-solving benchmarks, and ability on benchmarks requiring world knowledge spanning various domains. Notably, we find a strong positive correlation between brain alignment and model size (r = 0.95), as well as performance on tasks requiring world knowledge (r = 0.81). Our results demonstrate that instruction-tuning LLMs improves both world knowledge representations and human brain alignment, suggesting that mechanisms that encode world knowledge in LLMs also improve representational alignment to the human brain."},{"title":"Instruction-tuning Aligns LLMs to the Human Brain","link":"https://arxiv.org/abs/2312.00575","authors":["Khai Loong Aw,","Syrielle Montariol*,","<strong>Badr AlKhamissi*</strong>,","Martin Schrimpf,","Antoine Bosselut"],"authorship":"co-author","badges":"poster","website":"","poster":"assets/posters/instruction-tuning-brain-align.pdf","video":"","presentation":"","location":"New Orleans, US","award":"","twitter":"https://x.com/_akhaliq/status/1731494802900853103?s=20","github":"","year":"2023","venue":"Accepted at the <strong><a href='https://unireps.org'>UniReps</a></strong> and <strong><a href='https://an-instructive-workshop.github.io'>Instruction Tuning and Following</a></strong> Workshops co-located with NeurIPS 2023","conference":["UniReps | NeurIPS","Instru
17ction Tuning and Following | NeurIPS"],"type":["workshop"],"abstract":"Instruction-tuning is a widely adopted method of finetuning that enables large language models (LLMs) to generate output that more closely resembles human responses to natural language queries, in many cases leading to human-level performance on diverse testbeds. However, it remains unclear whether instruction-tuning truly makes LLMs more similar to how humans process language. We investigate the effect of instruction-tuning on LLM-human similarity in two ways: (1) brain alignment, the similarity of LLM internal representations to neural activity in the human language system, and (2) behavioral alignment, the similarity of LLM and human behavior. We assess 25 vanilla and instruction-tuned LLMs across three datasets involving humans reading naturalistic stories and sentences, and discover that instruction-tuning generally enhances brain alignment by an average of 6, but does not have a similar effect on behavioral alignment on a reading task. To identify the factors underlying LLM-brain alignment, we compute the correlation between the brain alignment of LLMs and various model properties, such as model size, performance ability on problem-solving benchmarks, and ability on benchmarks requiring world knowledge spanning various domains. Notably, we find a strong positive correlation between brain alignment and model size (r = 0.95), as well as performance on tasks requiring world knowledge (r = 0.81). Our results demonstrate that instruction-tuning LLMs improves both world knowledge representations and human brain alignment, suggesting that mechanisms that encode world knowledge in LLMs also improve representational alignment to the human brain."},{"title":"Depth-Wise Attention (DWAtt): A Layer Fusion Method for Data-Efficient Classification","link":"https://aclanthology.org/2024.lrec-main.417/","authors":["Muhammad ElNokrashy*,","<strong>Badr AlKhamissi*</strong>,","Mona Diab"],"authorship":"first","badges":"poster","website":"","poster":"assets/dwatt-poster.png","video":"","presentation":"Oral Presentation","location":"Turin, Italy","award":"","twitter":"https://x.com/__munael/status/1793562158837719547","github":"","year":"2024","conference":["LREC-COLING"],"venue":"Accepted at <strong><a href='https://lrec-coling-2024.org'>LREC-COLING 2024</a></strong>.","type":["conference"],"abstract":"Language Models pretrained on large textual data have been shown to encode different types of knowledge simultaneously. Usually, only the features from the last layer are used when adapting to new tasks or data. We put forward that in using or finetuning deep pretrained models, intermediate layer features that may be relevant to the downstream task are buried too deep to be used efficiently in terms of needed samples or steps. To test this, we propose a new layer fusion method: Depth-Wise Attention (DWAtt), to help re-surface signals from non-final model layers. We compare DWAtt to a basic concatenation-based layer fusion method (Concat), and compare both to a deeper model baseline---all kept within a similar parameter budget. Our findings show that DWAtt and Concat are more step- and sample-efficient than the baseline, especially in the few-shot setting. DWAtt outperforms Concat on larger data sizes. On CoNLL-03 NER, layer fusion shows 3.68-9.73 F1 gain at different few-shot sizes. The layer fusion models presented significantly outperform the baseline in various training scenarios with different data sizes, architectures, and training constraints."},{"title":"Depth-Wise Attention (DWAtt): A Layer Fusion Method for Data-Efficient Classification","link":"https://aclanthology.org/2024.lrec-main.417/","authors":["Muhammad ElNokrashy*,","<strong>Badr AlKhamissi*</strong>,","Mona Diab"],"authorship":"first","badges":"poster","website":"","poster":"assets/dwatt-poster.png","video":"","presentation":"","location":"New Orleans, US","award":"","twitter":"https://x.com/__munael/status/1793562158837719547","github":"","year":"2022","conference":["ENLSP | NeurIPS"],"venue":"Accepted at the <strong><a href='https://neurips2022-enlsp.github.io' target='_blank'>Efficient Natural Language and Speech Processing (ENLSP-II)</a></strong> workshop co-located with NeurIPS 2022","type":["workshop"],"abstract":"Language Models pretrained on large textual data have been shown to encode different types of knowledge simultaneously. Usually, only the features from the last layer are used when adapting to new tasks or data. We put forward that in using or finetuning deep pretrained models, intermediate layer features that may be relevant to the downstream task are buried too deep to be used efficie
17ntly in terms of needed samples or steps. To test this, we propose a new layer fusion method: Depth-Wise Attention (DWAtt), to help re-surface signals from non-final model layers. We compare DWAtt to a basic concatenation-based layer fusion method (Concat), and compare both to a deeper model baseline---all kept within a similar parameter budget. Our findings show that DWAtt and Concat are more step- and sample-efficient than the baseline, especially in the few-shot setting. DWAtt outperforms Concat on larger data sizes. On CoNLL-03 NER, layer fusion shows 3.68-9.73 F1 gain at different few-shot sizes. The layer fusion models presented significantly outperform the baseline in various training scenarios with different data sizes, architectures, and training constraints."},{"title":"Rosetta Stone at KSAA-RD Shared Task: A Hop From Language Modeling To Word--Definition Alignment","link":"https://aclanthology.org/2023.arabicnlp-1.43/","authors":["Ahmed ElBakry*,","Mohamed Gabr,","Muhammad ElNokrashy,","<strong>Badr AlKhamissi*</strong>"],"authorship":"first,senior","badges":"poster","website":"","poster":"assets/posters/revdict-poster.pdf","video":"","presentation":"","location":"Singapore","award":"","twitter":"","github":"https://github.com/bkhmsi/RashidRevDict","year":"2023","venue":"Accepted at the <strong><a href='https://arabicnlp2023.sigarab.org'> ArabicNLP 2023</a></strong> Conference","conference":["ArabicNLP"],"type":["conference"],"abstract":"A Reverse Dictionary is a tool enabling users to discover a word based on its provided definition, meaning, or description. Such a technique proves valuable in various scenarios, aiding language learners who possess a description of a word without its identity, and benefiting writers seeking precise terminology. These scenarios often encapsulate what is referred to as the 'Tip-of-the-Tongue' (TOT) problem. In this work, we present our winning solution for the Arabic Reverse Dictionary shared task. This task focuses on deriving a vector representation of an Arabic word from its accompanying description. The shared task encompasses two distinct subtasks: the first involves an Arabic definition as input, while the second employs an English definition. For the first subtask, our approach relies on an ensemble of finetuned Arabic BERT-based models, predicting the word embedding for a given definition. The final representation is obtained through averaging the output embeddings from each model within the ensemble. In contrast, the most effective solution for the second subtask involves translating the English test definitions into Arabic and applying them to the finetuned models originally trained for the first subtask. This straightforward method achieves the highest score across both subtasks."},{"title":"Taqyim: Evaluating Arabic NLP Tasks Using ChatGPT Models","link":"https://arxiv.org/abs/2306.16322","authors":["Zaid Alyafeai*,","Maged S. Alshaibani*,","<strong>Badr AlKhamissi*</strong>,","Hamzah Luqman,","Ebrahim Alareqi,","Ali Fadel"],"authorship":"first","badges":"preprint","website":"","poster":"","video":"","presentation":"","location":"","award":"","twitter":"https://twitter.com/bkhmsi/status/1674473785393643520","github":"https://github.com/ARBML/Taqyim","year":"2023","venue":"Preprint","conference":["Preprint"],"type":["preprint"],"abstract":"Large language models (LLMs) have demonstrated impressive performance on various downstream tasks without requiring fine-tuning, including ChatGPT, a chat-based model built on top of LLMs such as GPT-3.5 and GPT-4. Despite having a lower training proportion compared to English, these models also exhibit remarkable capabilities in other languages. In this study, we assess the performance of GPT-3.5 and GPT-4 models on seven distinct Arabic NLP tasks: sentiment analysis, translation, transliteration, paraphrasing, part of speech tagging, summarization, and diacritization. Our findings reveal that GPT-4 outperforms GPT-3.5 on five out of the seven tasks. Furthermore, we conduct an extensive analysis of the sentiment analysis task, providing insights into how LLMs achieve exceptional results on a challenging dialectal dataset. Additionally, we introduce a new Python interface this https URL that facilitates the evaluation of these tasks effortlessly."},{"title":"OPT-R: Exploring the Role of Explanations in Finetuning and Prompting for Reasoning Skills of Large Language Models","link":"https://aclanthology.org/2023.nlrse-1.10/","authors":["<strong>Badr AlKhamissi</strong>,","Siddharth Verma,","Ping Yu,","Zhijing Jin,","Asli Celikyilmaz,","Mona Diab"],"authorship":"first","badges":"poster","website":"","poster":"assets/posters/optr-poster.pdf","video":"https://www.youtube.com/watch?v=Zb9-NzTsDq0","presentation":"","location":"Toronto, Canada","award":"","twitter":"https://twitter.com/bkhmsi/status/1660899280809349121","github":"","year":"2022","conference":["NLRSE | A
17CL"],"venue":"Accepted at the <strong><a href='https://nl-reasoning-workshop.github.io'> Natural Language Reasoning and Structured Explanations Workshop</a></strong> co-located with <strong><a href='https://2023.aclweb.org'>ACL</a></strong> 2023","type":["workshop"],"abstract":"In this paper, we conduct a thorough investigation into the reasoning capabilities of Large Language Models (LLMs), focusing specifically on the Open Pretrained Transformers (OPT) models as a representative of such models. Our study entails finetuning three different sizes of OPT on a carefully curated reasoning corpus, resulting in two sets of finetuned models: OPT-R, finetuned without explanations, and OPT-RE, finetuned with explanations. We then evaluate all models on 57 out-of-domain tasks drawn from the SUPER-NATURALINSTRUCTIONS benchmark, covering 26 distinct reasoning skills, utilizing three prompting techniques. Through a comprehensive grid of 27 configurations and 6,156 test evaluations, we investigate the dimensions of finetuning, prompting, and scale to understand the role of explanations on different reasoning skills. Our findings reveal that having explanations in the fewshot exemplar has no significant impact on the model's performance when the model is finetuned, while positively affecting the non-finetuned counterpart. Moreover, we observe a slight yet consistent increase in classification accuracy as we incorporate explanations during prompting and finetuning, respectively. Finally, we offer insights on which reasoning skills benefit the most from incorporating explanations during finetuning and prompting, such as Numerical (+20.4%) and Analogi-cal (+13.9%) reasoning, as well as skills thatexhibit negligible or negative effects."},{"title":"Shadow-Cave Models: How Plato's Allegory Illuminates the Limitations of Large Language Models","link":"https://www.researchgate.net/publication/367479243_Shadow-Cave_Models_How_Plato%27s_Allegory_Illuminates_Limitations_of_Large_Language_Models","authors":["Muhammad ElNokrashy*,","<strong>Badr AlKhamissi*</strong>"],"authorship":"first,senior","badges":"preprint","website":"","poster":"","video":"","presentation":"","location":"","award":"","twitter":"https://twitter.com/bkhmsi/status/1619054945004834816?s=20","github":"","year":"2023","venue":"Preprint","conference":["Preprint"],"type":["preprint"],"abstract":"Plato's allegory of the cave is a metaphor for the human condition and the nature of knowledge and understanding. In the allegory, people are trapped in a cave and can only see shadows cast on the wall by objects passing by outside. They believe these shadows to be reality, but they are only a representation of reality. Similarly, large language models such as ChatGPT are trained on vast amounts of data, but the knowledge they possess is limited to that which is contained within their training data. They can generate responses based on patterns and associations found in the data, but they do not possess true understanding or consciousness. Therefore, it can be said that, like the people in the cave, these models are limited in their understanding of the world and can only provide a representation of reality, rather than true understanding."},{"title":"ALERT: Adapt Language Models to Reasoning Tasks","link":"https://arxiv.org/abs/2212.08286","authors":["Ping Yu,","Tianlu Wang,","Olga Golovneva,","<strong>Badr AlKhamissi</strong>,","Siddharth Verma,","Zhijing Jin,","Gargi Ghosh,","Mona Diab,","Asli Celikyilmaz"],"authorship":"co-author","badges":"poster","website":"","poster":"assets/posters/alert-poster.pdf","video":"","presentation":"","location":"Toronto, Canada","award":"","twitter":"","github":"","year":"2022","conference":["ACL"],"venue":"Accepted at <strong><a href='https://2023.aclweb.org'>ACL 2023</a></strong>","type":["conference"],"abstract":"Recent advancements in large language models have enabled them to perform well on complex tasks that require step-by-step reasoning with few-shot learning. However, it is unclear whether these models are applying reasoning skills they have learnt during pre-training, or if they are simply memorizing their training corpus at finer granularity and have learnt to better understand their context. To address this question, we introduce ALERT, a benchmark and suite of analyses for evaluating reasoning skills of language models. ALERT enables comparing pre-trained and finetuned models on complex tasks that require reasoning skills to solve. Our benchmark provides a test bed to asses any language model on fine-grained reasoning skills, which spans over 20 datasets and covers 10 different reasoning skills. By using ALERT we further investigate the role of finetuning. Our extensive empirical analysis shows that language models learn more reasoning skills such as textual entailment, abductive reasoning, and analogical reasoning during the finetuning stage compared to pretraining stage. However, we also find that when language models are finetuned they tend to overfit to the prompt template, which hurts the robustness of models causing generalization problems."}
17,{"title":"ToKen: Task Decomposition and Knowledge Infusion for Few-Shot Hate Speech Detection","link":"https://arxiv.org/abs/2205.12495","authors":["<strong>Badr AlKhamissi*</strong>,","Faisal Ladhak*,","Srini Iyer,","Ves Stoyanov,","Zornitsa Kozareva,","Xian Li,","Pascale Fung,","Lambert Mathias,","Asli Celikyilmaz,","Mona Diab"],"authorship":"first","badges":"oral","website":"","poster":"","video":"","presentation":"Oral Presentation","location":"Abu Dhabi, UAE","award":"","twitter":"https://x.com/bkhmsi/status/1601435772267401216","github":"","year":"2022","conference":["EMNLP"],"venue":"Accepted at <strong><a href='https://2022.emnlp.org' target='_blank'>EMNLP 2022</a></strong>","type":["conference"],"abstract":"Hate speech detection is complex; it relies on commonsense reasoning, knowledge of stereotypes, and an understanding of social nuance that differs from one culture to the next. It is also difficult to collect a large-scale hate speech annotated dataset. In this work, we frame this problem as a few-shot learning task, and show significant gains with decomposing the task into its 'constituent' parts. In addition, we see that infusing knowledge from reasoning datasets (e.g. Atomic2020) improves the performance even further. Moreover, we observe that the trained models generalize to out-of-distribution datasets, showing the superiority of task decomposition and knowledge infusion compared to previously used methods. Concretely, our method outperforms the baseline by 17.83% absolute gain in the 16-shot case."},{"title":"Meta AI at Arabic Hate Speech 2022: MultiTask Learning with Self-Correction for Hate Speech Classification","link":"https://arxiv.org/abs/2205.07960","authors":["<strong>Badr AlKhamissi</strong>,","Mona Diab"],"authorship":"first","badges":"award,oral","website":"","poster":"","video":"","presentation":"Oral Presentation","location":"Marseille, France.","award":"Best Paper Award","twitter":"https://twitter.com/MetaAI/status/1541871438163877888","github":"","year":"2022","conference":["OSACT | LREC"],"venue":"Accepted at <strong><a href='https://osact-lrec.github.io' target='_blank'>The 5th Workshop on Open-Source Arabic Corpora and Processing Tools (OSACT5)</a></strong> co-located with <strong><a href='https://lrec2022.lrec-conf.org/en/' target='_blank'>LREC</a></strong>","type":["workshop"],"abstract":"In this paper, we tackle the Arabic Fine-Grained Hate Speech Detection shared task and demonstrate significant improvements over reported baselines for its three subtasks. The tasks are to predict if a tweet contains (1) Offensive language; and whether it is considered (2) Hate Speech or not and if so, then predict the (3) Fine-Grained Hate Speech label from one of six categories. Our final solution is an ensemble of models that employs multitask learning and a self-consistency correction method yielding 82.7% on the hate speech subtaskâreflecting a 3.4% relative improvement compared to previous work."},{"title":"A Review of Language Models as Knowledge Bases","link":"https://arxiv.org/abs/2204.06031","authors":["<strong>Badr AlKhamissi*</strong>,","Millicent Li*,","Asli Celikyilmaz,","Mona Diab,","Marjan Ghazvininejad"],"authorship":"first","badges":"preprint","website":"https://bkhmsi.github.io/lms-as-kbs/","poster":"","video":"","presentation":"","location":"Online","award":"","twitter":"https://twitter.com/search?q=a%20review%20on%20language%20models%20as%20knowledge%20bases&src=typed_query","github":"","year":"2022","conference":["Preprint"],"venue":"Preprint","type":["preprint"],"abstract":"Recently, there has been a surge of interest in the NLP community on the use of pretrained Language Models (LMs) as Knowledge Bases (KBs). Researchers have shown that LMs trained on a sufficiently large (web) corpus will encode a significant amount of knowledge implicitly in its parameters. The resulting LM can be probed for different kinds of knowledge and thus acting as a KB. This has a major advantage over traditional KBs in that this method requires no human supervision. In this paper, we present a set of aspects that we deem a LM should have to fully act as a KB, and review the recent literature with respect to those aspects."},{"title":"Epiphenomenal Representations of Abstract Rules in a Connectionist Model of the Delayed Match to Sample Task","link":"https://www.world-wide.org/cosyne-22/epiphenomenal-representations-abstract-dfcef435/","authors":["<strong>Badr AlKhamissi</strong>,","Muhammad ElNokrashy,","Zeb Kurth-Nelson,","Sam Ritter"],"authorship":"first","badges":"poster","website":"","poster":"https://www.world-wide.org/cosyne-22/epiphenomenal-representations-abstract-dfcef435/","video":"","presentation":"","location":"Lisbon, Portugal","year":"2022","award":"","twitter":"","github":"","conference":["COSYNE"],"venue":"Accepted at the <strong><a href='https://www.cosyne.org' target='_blank'>Computational and Systems Neuroscience (COSYNE) Conference</a></strong>","type":["workshop"],"abstract":"The primate brain exhibits representations of abstract rules. Common wisdom holds that these representations are combined downstream with task-specific or trial-specific information to implement a rule-sensitive policy. However, due to the difficulty of applying interventions in primate brains, the causal role of these representations has not been tested. Here we trainan artificial agent on a canonical rule-based task: The Delayed Match to Sample. We find that brain-like rule representationsemerge in the agent. However, when we ablate the topx%ofrule-selective units, performance only slightly degrades. Comparatively, when we ablate a small portion of conjunctive units,performance is reduced to near random. We conclude that inthe fully-trained agent, abstract rule representations are epiphenomenal to performance of the task."},{"title":"How to Learn and Represent Abstractions: An Investigation using Symbolic Alchemy","link":"https://arxiv.org/abs/2112.08360","authors":["<strong>Badr AlKhamissi</strong>,","Akshay Srinivasan,","Zeb Kurth-Nelson,","Sam Ritter"],"authorship":"first","badges":"poster","website":"","poster":"assets/posters/symbolic-alchemy-poster.pdf","video":"","presentation":"","location":"Baltimore, United States","award":"","twitter":"","github":"https://github.com/BKHMSI/alchemist","year":"2022","conference":["AutoML | AutoML"],"venue":"Accepted at the <strong><a href='https://automl.cc/' target='_blank'>AutoML Late-Breaking Workshop</a></strong>","type":["workshop"],"abstract":"Alchemy is a new meta-learning environment rich enough to contain interesting abstractions, yet simple enough to make fine-grained analysis tractable. Further, Alchemy provides an optional symbolic interface that enables meta-RL research without a large compute budget. In this work, we take the first steps toward using Symbolic Alchemy to identify design choices that enable deep-RL agents to learn various types of abstraction. Then, using a variety of behavioral and introspective analyses we investigate how our trained agents use and represent abstract task variables, and find intriguing connections to the neuroscience of abstraction. We conclude by discussing the next steps for using meta-RL and Alchemy to better understand the representation of abstract variables in the brain."},{"title":"The Emergence of Abstract and Episodic Neurons in Episodic Meta-RL","link":"https://arxiv.org/abs/2104.02959","authors":["<strong>Badr AlKhamissi</strong>,","Muhammad ElNokrashy,","Michael Spranger"],"authorship":"first","badges":"spotlight,oral,poster","website":"","poster":"assets/posters/emrl-poster.pdf","video":"","presentation":"Spotlight/Lightning Talk","location":"New Orleans, US/Virtual","year":"2022/2021","award":"","twitter":"","github":"https://github.com/BKHMSI/emrl-neuron-emergence","conference":["MemARI | NeurIPS","L2L | ICLR"],"venue":"Accepted at the <strong><a href='https://memari-workshop.github.io' target='_blank'>MemARI Workshop</a></strong> co-located with NeurIPS 2022 and at the <strong><a href='https://sites.google.com/view/learning-2-learn/' target='_blank'>Learning to Learn Workshop</a></strong> co-located with ICLR 2021","type":["workshop"],"abstract":"In this work, we analyze the reinstatement mechanism introduced by Ritter et al. (2018) to reveal two classes of neurons that emerge in the agent's working memory (an epLSTM cell) when trained using episodic meta-RL on an episodic variant of the Harlow visual fixation task. Specifically, Abstract neurons encode knowledge shared across tasks, while Episodic neurons carry information relevant for a specific episode's task."},{"title":"Deep Spiking Neural Networks with Resonate-and-Fire Neurons","link":"https://arxiv.org/abs/2109.08234","authors":["<strong>Badr AlKhamissi</strong>,","Muhammad ElNokrashy,","David Bernal-Casas"],"authorship":"first","badges":"preprint","website":"","poster":"","video":"","presentation":"","location":"","award":"","twitter":"","year":"2021","github":"","conference":["Preprint"],"venue":"Preprint","type":["preprint"],"abstract":"In this work, we explore a new Spiking Neural Network (SNN) formulation with Resonate-and-Fire (RAF) neurons (Izhikevich, 2001) trained with gradient descent via back-propagation. The RAF-SNN, while more biologically plausible, achieves performance comparable to or higher than conventional models in the Machine Learning literature across different network configurations, using similar or fewer parameters. Strikingly, the RAF-SNN proves robust against noise induced at testing/training time, under both static and dynamic conditions. Against CNN on MNIST, we show 25% higher absolute accuracy with N(0, 0.2) induced noise at testing time. Against LSTM on N-MNIST, we show 70% higher absolute accuracy with 20% induced noise at training time."},{"title":"Adapting MARBERT for Improved Arabic Dialect Identification: Submission to the NADI 2021 Shared Task","link":"https://aclanthology.org/2021.wanlp-1.29/","authors":["<strong>Badr AlKhamissi*</strong>
17,","Mohamed Gabr*,","Muhammad ElNokrashy,","Khaled Essam"],"authorship":"first","badges":"sota,oral","website":"","poster":"assets/posters/nadi-poster.pdf","video":"","presentation":"Oral Presentation","location":"Virtual","year":"2021","award":"","twitter":"","github":"https://github.com/mohamedgabr96/NeuralDialectDetector","conference":["WANLP | EACL"],"venue":"Proceedings of the <strong><a href='https://sites.google.com/view/wanlp2021' target='_blank'>Sixth Arabic Natural Language Processing Workshop</a></strong> co-located with <strong><a href='https://2021.eacl.org/' target='_blank'>EACL 2021</a></strong>","type":["workshop"],"abstract":"In this paper, we tackle the Nuanced Arabic Dialect Identification (NADI) shared task (Abdul-Mageed et al., 2021) and demonstrate state-of-the-art results on all of its four subtasks. Tasks are to identify the geographic origin of short Dialectal (DA) and Modern Standard Arabic (MSA) utterances at the levels of both country and province. Our final model is an ensemble of variants built on top of MARBERT that achieves an F1-score of 34.03% for DA at the country-level development set -- an improvement of 7.63% from previous work."},{"title":"Deep Diacritization: Efficient Hierarchical Recurrence for Improved Arabic Diacritization","link":"https://www.aclweb.org/anthology/2020.wanlp-1.4/","authors":["<strong>Badr AlKhamissi</strong>,","Muhammad ElNokrashy,","Mohamed Gabr"],"authorship":"first","badges":"sota,oral","website":"https://deep-diacritization.herokuapp.com","presentation":"Oral Presentation","video":"","location":"Virtual","year":"2020","github":"https://github.com/BKHMSI/deep-diacritization","award":"","twitter":"","conference":["WANLP | COLING"],"venue":"Proceedings of the <strong><a href='https://sites.google.com/view/wanlp-2020/home' target='_blank'>Fifth Arabic Natural Language Processing Workshop</a></strong> co-located with <strong><a href='https://coling2020.org/' target='_blank'>COLING 2020</a></strong>","type":["workshop"],"abstract":"We propose a novel architecture for labelling character sequences that achieves state-of-the-art results on the Tashkeela Arabic diacritization benchmark. The core is a two-level recurrence hierarchy that operates on the word and character levels separately---enabling faster training and inference than comparable traditional models. A cross-level attention module further connects the two, and opens the door for network interpretability. The task module is a softmax classifier that enumerates valid combinations of diacritics. This architecture can be extended with a recurrent decoder that optionally accepts priors from partially diacritized text, which improves results. We employ extra tricks such as sentence dropout and majority voting to further boost the final result. Our best model achieves a WER of 5.34%, outperforming the previous state-of-the-art with a 30.56% relative error reduction."}]`),ra=[{date:"26th of August 2026",title:"Discovering Functionally Selective Brain Regions with a Deep Topographic Multimodal Model",role:"Speaker",inst:"Dan Yamins's Lab at Stanford",link:"https://neuroailab.stanford.edu",slides:"",badges:""},{date:"10th of February 2026",title:"Human-Like Artificial Intelligence",role:"Speaker",inst:"Mohamed Elhoseiny's Lab at KAUST",link:"https://vision-cair.kaust.edu.sa/",slides:"https://docs.google.com/presentation/d/15KMfrSmj2uce7vJ3cxZsGJvzUOnMHQRsT0ncojpOCZQ/edit?usp=sharing",badges:"slides"},{date:"9th of February 2026",title:"Human-Like Artificial Intelligence",role:"Speaker",inst:"KAUST Rising Stars in AI Symposium 2026",link:"https://www.kaust.edu.sa/events/rsais26/",slides:"https://docs.google.com/presentation/d/15KMfrSmj2uce7vJ3cxZsGJvzUOnMHQRsT0ncojpOCZQ/edit?usp=sharing",badges:"slides"},{date:"13th of December 2025",title:"Building Responsible and Ethical LLMs",role:"Speaker",inst:"IndabaX Sudan",link:"https://indabaxsd.github.io",slides:"",badges:""},{date:"23rd of October 2025",title:"Reasoning with Brain-Like Specialization",role:"Speaker",inst:"CairoNLP",link:"https://cairo-nlp.github.io/talks/talk_3/badr_talk/",slides:"",badges:"video"},{date:"30th of July 2025",title:"Mixture of Cognitive Reasoners: Modular Reasoning with Brain-Like Specialization",role:"Speaker",inst:"Nancy Kanwisher's Lab at MIT",link:"https://web.mit.edu/bcs/nklab/",slides:"",badges:""},{date:"16th of July 2025",title:"Mixture of Cognitive Reasoners: Modular Reasoning with Brain-Like Specialization",role:"Speaker",inst:"Ploutos",link:"https://www.ploutos.dev/streams/logical-saluki",slides:"https://docs.google.com/presentation/d/1ZmAEKMfJnwa_80twiBYfsHffQKFIOdDecWG4OPBRSfA/edit?usp=sharing",badges:"video,slides"},{date:"14th of July 2025",title:"Brain-Inspired Large Language Models",role:"Speaker",inst:"LauzHack Deep Learning Bootcamp",link:"https://www.youtube.com/watch?v=jsNYzUKZtNE",slides:"",badges:"video"},{date:"31st of May 2025",title:"The LLM Language Network",role:"Speaker",inst:"REST-CL Retreat for Students in Computational Linguistics (UPF)",link:"https://sites.google.com/ensc.fr/rest-cl2024/home?authuser=0",slides:"",badges:""},{date:"10th of October 2024",title:"Vision and Language in Brains, Minds and Machines",role:"Speaker",inst:"Riga Stradins University",link:"",slides:"",badges:""},{date:"29th of May 2024",title:"Brain-Like Language Processing via a Shallow Untrained Multihead Attention Network",role:"Speaker",inst:"NCCR Evolving Language Group",link:"https://evolvinglanguage.ch",slides:"",badges:""},{date:"25th of April 2024",title:"Brain Alignment of Untrained Language Models",role:"Speaker",inst:"Ev Fedorenko's Language Lab at MIT",link:"https://www.evlab.mit.edu",slides:"",badges:""},{date:"19th of March 2024",title:"Investigating Cultural Alignment of Large Language Models",role:"Speaker",inst:"Cohere For AI Community Talk -- Geo Regional Africa Group",link:"https://www.youtube.com/watch?v=Si71JWntTc8&t=2s",slides:"https://docs.google.com/presentation/d/1aE8lpt47h2qpyUINB30cHzrEVrC0GpQDGS5BS12mhsI/edit?usp=sharing",badges:"video,slides"},{date:"4th of March 2024",title:"Investigating Cultural Alignment of Large Language Models",role:"Speaker",inst:"ARBML Board (Ø§ÙØ³Ø¨Ùرة)",link:"https://x.com/zaidalyafeai/status/1762914690487767271",slides:"https://docs.google.com/presentation/d/1ZInoSgx6drPyGxBzDTlBUYWtpj7LKWkFORlCR8bXrXE/edit?usp=sharing",badges:"slides"},{date:"10th of September 2023",title:"Analyzing LLM's Ability in Reasoning",role:"Speaker",inst:"AiBelmasry",link:"https://www.youtube.com/watch?v=1YthPMlotZ4&t=6s",slides:"",badges:"video"},{date:"4th of August 2023",title:"Representation Matters: Celebrating Egyptians in the AI Revolution",role:"Speaker",inst:"TEDx MIU",link:"https://www.youtube.com/watch?v=PtdyHfpzodg",slides:"https://docs.google.com/presentation/d/1iVzzJX9eK7Y0NcnbbaKePWzYb9jaHnTHg_JM5_7ak9Q/edit?usp=sharing",badges:"video,slides"},{date:"19th of July 2023",title:"OPT-R Exploring the Role of Explanations in Finetuning and Prompting for Reasoning Skills of Large Language Models",role:"Speaker",inst:"Cohere For AI Community Talk",link:"https://www.youtube.com/watch?v=Zb9-NzTsDq0",slides:"https://docs.google.com/presentation/d/1G2O3kZBE4QRCcRyb8Cwp-x3aQzerbJa-VTN5-_5Fc5I/edit?usp=sharing",badges:"video,slides"},{date:"6th of April 2023",title:"عاÙÙ
Ø¬Ø¯ÙØ¯ ÙØµÙØ¹Ù Ø§ÙØºØ¨Ø§Ø¡ Ø§ÙØ§ØµØ·ÙاعÙ",role:"Guest Speaker",slides:"",inst:"Guest Speaker on Mada Masr Podcast",link:"https://podcasters.spotify.com/pod/show/mada-masr/episodes/ep-e21s2ho",badges:"podcast"},{date:"5th of March 2023",title:"Artificial Intelligence: Challenges and Opportunities",role:"Keynote Speaker",inst:"3rd Localization Day Egyptian Association for Globalization and Language Solutions",link:"https://www.facebook.com/100064686879841/posts/pfbid02j6PN2skpZoaeT5vkofyaxa14FWJZFpV7syLXKcQKXPD2BN5K6V8afyxMc1C8yZtsl/?mibextid=cr9u03",slides:"https://docs.google.com/presentation/d/1_pSX5cx0ndO7-5Rj4t7W9qZr0c2eJe8LEp1OTbG-v0k/edit?usp=sharing",badges:"slides"},{date:"7th of June 2022",role:"Speaker",title:"Computational Cognitive Neuroscience Industry Talk",inst:"Goldsmiths, University of London Career Event",link:"https://coconeuro.com/index.php/2022/06/08/career-day-7-june-2022/",slides:"",badges:"video"},{date:"22nd of December 2021",role:"Speaker",title:"NeurIPS 2021 Egypt Meetup",inst:"LyRise",link:"https://www.facebook.com/578515106/posts/pfbid032dEzm9jUTV5aqXxTQfoxBTY8t6id61X5grLsUMtNYNPS1ELSZ9NLp6qpDLoRRXFxl/?mibextid=cr9u03",slides:"",badges:""},{date:"May 2019",title:"Tutorial on Aligning Multilingual Embeddings",inst:"IndabaX Egypt 2019",link:"https://fb.watch/mQkd_MzrSc/",role:"Speaker",slides:"",badges:""}],ia=[{name:"Egyptians in CS Research",link:"https://egyptians-in-cs.github.io",code:"https://github.com/egyptians-in-cs/egyptians-in-cs.github.io",blog:"https://bkhmsi.medium.com/egyptian-researchers-in-computer-science-6879cdaf84db",collaborators:[],desc:"Previously, Egyptians in AI Research. Egyptians in CS Research is a website dedicated to showcasing the profiles of prominent Egyptian researchers in the field of Computer Science. If you believe that someone deserving is missing from our list, we welcome your suggestions. To be considered for inclusion, the only criteria is that the individual must have an h-index of 5 or higher, as recorded on their Google Scholar profile. You can submit your suggestion by filling out this form, or request updates for existing profiles. We hope that you find our website informative and inspiring, and we inv
17ite you to explore the profiles of our featured researchers."},{name:"Font-To-Sketch: Morphing Any Font to a Visual Representation",link:"https://github.com/BKHMSI/Font-To-Sketch",code:"https://github.com/BKHMSI/Font-To-Sketch",blog:"",collaborators:[],desc:"<p>This demo builds on the <a href='https://wordasimage.github.io/Word-As-Image-Page/'>Word-As-Image for Semantic Typography</a> work to support <strong>any</strong> font and morphing whole words and phrases to a visual representation of a given semantic concept. This project started as part of an ongoing effort with the <a href='https://arbml.github.io/website/'>ARBML</a> community to build open-source Arabic tools using machine learning. The demo currently supports the following scripts: <strong>Arabic</strong>, <strong>Simplified Chinese</strong>, <strong>Cyrillic</strong>, <strong>Greek</strong>, <strong>Latin</strong>, <strong>Tamil</strong>. Therefore you can write the text in any language using those scripts. To add support for more fonts please check the <a href='https://raw.githubusercontent.com/BKHMSI/Font-To-Sketch'>GitHub ReadMe</a>.</p>"},{name:"Korastak: Simple Note Sharing",link:"https://korastak.com/AUC",code:"",blog:"",collaborators:["Ahmed El-Agha,","Youssef Gamaleldin"],desc:"Korastak is a notes-sharing platform that was developed by AUC students in 2016 with the dream of democratizing the studying experience for all students. It currently contains 259 notes covering 100 courses from 24 different departments. The database was built by reaching out to individuals and associations at AUC who shared the same enthusiasm of sharing their class-notes with other students. However, we are still far from covering all courses in AUC. The aim is to reach 90% of the courses across all departments by the end of this year. The website is built with simplicity in mind and is maintained by AUC alumni who volunteer their time to make notes easily accessible for everyone."},{name:"ARM Thumb Simulator",link:"https://bkhmsi.github.io/ARMThumb_Sim/#/",code:"https://github.com/BKHMSI/ARMThumb_Sim",blog:"",collaborators:[],desc:"The ARM Thumb Simulator stands as a sophisticated web application meticulously designed to simulate the ARM Thumb architecture, catering to both proficient programmers and those venturing into low-level coding. It offers an array of comprehensive features, encompassing assembler directives for efficient memory organization, dynamic debugging tools for in-depth code comprehension, real-time tracking of register and memory values, and interactive software interrupts for user interaction. The platform further boasts a 320x240 GFX display with customizable frame rates and zoom options, syntax highlighting for clarity, robust import/export capabilities, user account functionalities for collaborative projects, versatile converter tools, sample programs, and compatibility with key pseudo instructions such as `MOV Rd, Rs and LDR Rd, =label | =offset`. This comprehensive set of features ensures an authentic and transformative experience within the bounds of the ARM Thumb architecture."}],Kt=Ee(!1),Rn=Ee(""),yt=Ee(0);function cc(){const e=[];for(const t of na)e.push({type:"publication",title:t.title,subtitle:`${t.year} â ${t.venue.replace(/<[^>]*>/g,"")}`,sectionId:"publications"});for(const t of ra)e.push({type:"talk",title:t.title,subtitle:`${t.date} â ${t.inst}`,sectionId:"talks"});for(const t of ia)e.push({type:"project",title:t.name,subtitle:t.desc.replace(/<[^>]*>/g,"").slice(0,80),sectionId:"projects"});return e}const dc=cc(),vn=un(()=>{if(!Rn.value.trim())return[];const e=Rn.value.toLowerCase();return dc.filter(t=>t.title.toLowerCase().includes(e)||t.subtitle.toLowerCase().includes(e)).slice(0,12)});function uc(){function e(){Kt.value=!0,Rn.value="",yt.value=0}function t(){Kt.value=!1}function n(i){t();const s=document.getElementById(i.sectionId);s&&s.scrollIntoView({behavior:"smooth"})}function r(i){if((i.metaKey||i.ctrlKey)&&i.key==="k"&&(i.preventDefault(),Kt.value?t():e()),!!Kt.value){if(i.key==="Escape")t();else if(i.key==="ArrowDown")i.preventDefault(),yt.value=Math.min(yt.value+1,vn.value.length-1);else if(i.key==="ArrowUp")i.preventDefault(),yt.value=Math.max(yt.value-1,0);else if(i.key==="Enter"&&vn.value.length>0){i.preventDefault();const s=vn.value[yt.value];s&&n(s)}}}return Ot(()=>{document.addEventListener("keydown",r)}),Kn(()=>{document.removeEventListener("keydown",r)}),{isOpen:Kt,query:Rn,selectedIndex:yt,filteredResults:vn,open:e,close:t,selectResult:n}}const hc={class:"flex items-center gap-3 px-4 py-3 border-b border-ink-200/50 dark:border-dark-border"},fc={key:0,class:"max-h-72 overflow-y-auto scrollbar-thin py-2"},pc=["onClick","onMouseenter"],gc={class:"shrink-0 w-8 h-8 rounded-lg flex items-center justify-center bg-ink-100 dark:bg-dark-border/50"},mc={key:0,class:"w-4 h-4 text-ink-500 dark:text-dark-muted",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},bc={key:1,class:"w-4 h-4 text-ink-500 dark:text-dark-muted",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},vc={key:2,class:"w-4 h-4 text-ink-500 dark:text-dark-muted",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},kc={class:"flex-1 min-w-0"},yc={class:"text-sm font-medium text-ink-900 dark:text-dark-text truncate"},wc={class:"text-xs text-ink-500 dark:text-dark-muted truncate"},xc={key:1,class:"px-4 py-8 text-center"},_c=pe({__name:"CommandPalette",setup(e){const{isOpen:t,query:n,selectedIndex:r,filteredResults:i,close:s,selectResult:a}=uc(),o=Ee(null);Jt(t,u=>{u&&us(()=>{var p;(p=o.value)==null||p.focus()})});function l(u){return u}function f(){s()}return(u,p)=>(m(),ze(ro,{to:"body"},[O(Xs,{name:"palette"},{default:Me(()=>[G(t)?(m(),w("div",{key:0,class:"fixed inset-0 bg-black/50 backdrop-blur-sm z-[100] flex items-start justify-center pt-[20vh]",onClick:Oi(f,["self"])},[c("div",{class:"max-w-lg w-full mx-4 bg-white/90 dark:bg-dark-surface/95 backdrop-blur-xl border border-ink-200/60 dark:border-dark-border rounded-2xl shadow-2xl overflow-hidden",onClick:p[1]||(p[1]=Oi(()=>{},["stop"]))},[c("div",hc,[p[2]||(p[2]=c("svg",{class:"w-5 h-5 text-ink-400 dark:text-dark-muted shrink-0",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[c("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)),Za(c("input",{ref_key:"inputRef",ref:o,"onUpdate:modelValue":p[0]||(p[0]=b=>be(n)?n.value=b:null),type:"text",placeholder:"Search publications, talks, projects...",class:"flex-1 bg-transparent text-sm text-ink-900 dark:text-dark-text placeholder-ink-400 dark:placeholder-dark-muted outline-none"},null,512),[[Rl,G(n)]]),p[3]||(p[3]=c("kbd",{class:"hidden sm:inline-flex items-center px-1.5 py-0.5 text-[10px] font-medium text-ink-400 dark:text-dark-muted bg-ink-100 dark:bg-dark-border/50 rounded border border-ink-200 dark:border-dark-border"}," ESC ",-1))]),G(i).length?(m(),w("div",fc,[(m(!0),w(Y,null,fe(G(i),(b,A)=>(m(),w("button",{key:b.title+b.subtitle,class:he(["w-full flex items-center gap-3 px-4 py-2.5 text-left transition-colors duration-100",A===G(r)?"bg-brand-50 dark:bg-brand-900/20":"hover:bg-ink-50 dark:hover:bg-dark-border/30"]),onClick:R=>G(a)(b),onMouseenter:R=>r.value=A},[c("span",gc,[b.type==="publication"?(m(),w("svg",mc,[...p[4]||(p[4]=[c("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253"},null,-1)])])):b.type==="talk"?(m(),w("svg",bc,[...p[5]||(p[5]=[c("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 11a7 7 0 01-7 7m0 0a7 7 0 01-7-7m7 7v4m0 0H8m4 0h4m-4-8a3 3 0 01-3-3V5a3 3 0 116 0v6a3 3 0 01-3 3z"},null,-1)])])):(m(),w("svg",vc,[...p[6]||(p[6]=[c("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"}
17,null,-1)])]))]),c("div",kc,[c("p",yc,W(b.title),1),c("p",wc,W(b.subtitle),1)])],42,pc))),128))])):G(n).trim()?(m(),w("div",xc,[...p[7]||(p[7]=[c("p",{class:"text-sm text-ink-400 dark:text-dark-muted"},"No results found",-1)])])):le("",!0),p[8]||(p[8]=c("div",{class:"px-4 py-2.5 border-t border-ink-200/50 dark:border-dark-border flex items-center gap-4 text-[11px] text-ink-400 dark:text-dark-muted"},[c("span",{class:"flex items-center gap-1"},[c("kbd",{class:"px-1 py-0.5 rounded bg-ink-100 dark:bg-dark-border/50 border border-ink-200 dark:border-dark-border font-mono"},"ââ"),K(" Navigate ")]),c("span",{class:"flex items-center gap-1"},[c("kbd",{class:"px-1 py-0.5 rounded bg-ink-100 dark:bg-dark-border/50 border border-ink-200 dark:border-dark-border font-mono"},"Enter"),K(" Select ")]),c("span",{class:"flex items-center gap-1"},[c("kbd",{class:"px-1 py-0.5 rounded bg-ink-100 dark:bg-dark-border/50 border border-ink-200 dark:border-dark-border font-mono"},"Esc"),K(" Close ")])],-1))])])):le("",!0)]),_:1})]))}}),Ac=Gn(_c,[["__scopeId","data-v-83e7be69"]]),Ne=pe({__name:"ScrollReveal",props:{delay:{default:0}},setup(e){const t=e,n=Ee(null),r=Ee(!1);let i=null;return Ot(()=>{n.value&&(i=new IntersectionObserver(s=>{const a=s[0];a&&a.isIntersecting&&(setTimeout(()=>{r.value=!0},t.delay),i==null||i.unobserve(a.target))},{threshold:.1}),i.observe(n.value))}),Kn(()=>{i==null||i.disconnect()}),(s,a)=>(m(),w("div",{ref_key:"el",ref:n,class:he(["transition-all duration-700 ease-out",r.value?"opacity-100 translate-y-0":"opacity-0 translate-y-6"])},[ko(s.$slots,"default")],2))}}),Lc=[{date:"24 Sep 2026",html:'Our paper <strong><a href="https://arxiv.org/abs/2605.29850"> MIRAGE: Adaptive Multimodal Gating for Whole-Brain fMRI Encoding </a></strong> has been accepted to <strong><a href="https://neurips.cc">NeurIPS 2026</a></strong>.'},{date:"26 Aug 2026",html:`Gave an invited talk at <strong><a href="https://neuroailab.stanford.edu">Dan Yamins's Lab at Stanford</a></strong> on our paper <strong><a href="https://arxiv.org/abs/2606.09770">Discovering Functionally Selective Brain Regions with a Deep Topographic Multimodal Model</a></strong>.`},{date:"20 Aug 2026",html:'Our paper <strong><a href="https://arxiv.org/abs/2609.00155">Lingua Franca or Probing Artifact? Rethinking Latent Language in Multilingual LLMs</a></strong> has been accepted to <strong><a href="https://2026.emnlp.org">EMNLP 2026</a></strong> (Findings).'},{date:"13 July 2026",html:'Started an internship at <strong><a href="https://deepmind.google">Google DeepMind</a></strong> in Zurich, Switzerland!'},{date:"9 July 2026",html:'The extended abstract of our paper <strong><a href="https://arxiv.org/abs/2606.09770">Discovering Functionally Selective Brain Regions with a Deep Topographic Multimodal Model</a></strong> has been accepted as a <strong>Spotlight (top 10%)</strong> at <strong><a href="https://2026.ccneuro.org">CCN 2026</a></strong>!'},{date:"8 July 2026",html:'Our paper <strong><a href="https://arxiv.org/abs/2604.03480">Large Language Models Align with the Human Brain during Creative Thinking</a></strong> has been accepted to <strong><a href="https://colmweb.org">COLM 2026</a></strong>!'},{date:"8 June 2026",html:'Our preprint <strong><a href="https://arxiv.org/abs/2606.09770">Discovering Functionally Selective Brain Regions with a Deep Topographic Multimodal Model</a></strong> is out!'},{date:"28 May 2026",html:"Our preprint <strong><a href='https://arxiv.org/abs/2605.29850'>MIRAGE: Adaptive Multimodal Gating for Whole-Brain fMRI Encoding</a></strong> is out!"},{date:"23 April 2026",html:'Presented our "Mixture of Cognitive Reasoners" paper at <strong><a href="https://iclr.cc">ICLR 2026</a></strong> in Rio de Janeiro, Brazil, and co-organized the Re-Align workshop.'},{date:"7 April 2026",html:'Our paper <strong><a href="https://arxiv.org/abs/2509.14233">Apertus: Democratizing Open and Compliant LLMs For Global Language Environments</a></strong> has been accepted to <strong><a href="https://2026.aclweb.org">ACL 2026</a></strong>.'},{date:"3 April 2026",html:'Our preprint <strong><a href="https://arxiv.org/abs/2604.03480">Large Language Models Align with the Human Brain during Creative Thinking</a></strong> is out!'},{date:"10 February 2026",html:`Give an invited talk at <strong><a href="https://vision-cair.kaust.edu.sa/">Mohamed Elhoseiny's Lab at KAUST</a></strong>.`},{date:"9 February 2026",html:'Give an invited talk at <strong><a href="https://www.kaust.edu.sa/events/rsais26/">KAUST Rising Stars in AI Symposium 2026</a></strong>.'},{date:"26 January 2026",html:'Our paper <strong><a href="http://arxiv.org/abs/2506.13331">Mixture of Cognitive Reasoners: Modular Reasoning with Brain-Like Specialization</a></strong> has been accepted to <strong><a href="https://iclr.cc">ICLR 2026</a></strong>.'},{date:"26 January 2026",html:'Our paper <strong><a href="https://arxiv.org/abs/2509.24597">Inducing Dyslexia in Vision Language Models</a></strong> has been accepted to <strong><a href="https://iclr.cc">ICLR 2026</a></strong>.'},{date:"4 January 2026",html:'Our paper <strong><a href="https://arxiv.org/abs/2510.05931">Hire Your Anthropologist! Rethinking Culture Benchmarks Through an Anthropological Lens</a></strong> has been accepted to <strong><a href="https://2026.eacl.org">EACL 2026</a></strong> (Findings).'},{date:"13 December 2025",html:'I gave an invited talk at <strong><a href="https://indabaxsd.github.io">IndabaX Sudan</a></strong> on building Responsible and Ethical AI (check Invited Talks section below).'},{date:"12 December 2025",html:'I received the <strong><a href="https://www.swiss-ai.org">Swiss AI Initiative PhD Fellowship</a></strong>!'},{date:"1 December 2025",html:'Our workshop proposal for the <strong><a href="https://representational-alignment.github.io/2026/">ICLR 2026 Workshop on Representational Alignment (Re-Align 2026)</a></strong> has been accepted!'},{date:"1 December 2025",html:'I have been selected as a speaker in the <strong><a href="https://www.kaust.edu.sa/events/rsais26/">KAUST Rising Stars in AI Symposium 2026</a></strong>!'},{date:"23 October 2025",html:'I gave an invited talk at <strong><a href="https://cairo-nlp.github.io/talks/talk_3/badr_talk/">CairoNLP</a></strong> (check Invited Talks section below).'},{date:"7 October 2025",html:'Our preprint <strong><a href="https://arxiv.org/abs/2510.05931">"Hire Your Anthropologist! Rethinking Culture Benchmarks Through an Anthropological Lens"</a></strong> is out!'},{date:"30 September 2025",html:'Our preprint <strong><a href="https://arxiv.org/abs/2509.24597">"Inducing Dyslexia in Vision Language Models"</a></strong> is out!'},{date:"2 September 2025",html:'Apertus <strong><a href="https://huggingface.co/collections/swiss-ai/apertus-llm-68b699e65415c231ace3b059">models</a></strong> and <strong><a href="https://arxiv.org/abs/2509.14233">technical report</a></strong> are out!'},{date:"20 August 2025",html:'Our paper "From Language to Cognition: How LLMs Outgrow the Human Language Network" has been accepted at <strong><a href="https://2025.emnlp.org">EMNLP 2025</a></strong> (Main Conference).'},{date:"12 August 2025",html:'Presented our "From Language to Cognition" paper at <strong><a href="https://2025.ccneuro.org">CCN 2025</a></strong> in Amsterdam.'},{date:"30 July 2025",html:`I gave an invited talk at<strong><a href="https://web.mit.edu/bcs/nklab/"> Nancy Kanwisher's lab</a></strong> (check Invited Talks section below).`},{date:"24 July 2025",html:'Our paper "Evaluating Contrast Localizer for Identifying Causal Units in Social & Mathematical Tasks in Language Models" has been accepted the <strong><a href="https://interplay-workshop.github.io"> Interplay of Model Behavior and Model Internals Workshop</a></strong> co-located with <strong><a href="https://colmweb.org">COLM 2025</a></strong>.'},{date:"16 July 2025",html:'I gave an invited talk at<strong><a href="https://www.ploutos.dev/streams/logical-saluki"> Ploutos</a></strong> (check Invited Talks section below).'},{date:"14 July 2025",html:'I gave an invited talk at<strong><a href="https://www.youtube.com/watch?v=jsNYzUKZtNE">
17 LauzHack Deep Learning Bootcamp</a></strong> (check Invited Talks section below).'},{date:"23 June 2025",html:'Our preprint <strong><a href="https://arxiv.org/abs/2410.05563">"Rational Metareasoning for Large Language Models"</a></strong> had a major update!'},{date:"16 June 2025",html:'Our preprint <strong><a href="http://arxiv.org/abs/2506.13331">"Mixture of Cognitive Reasoners: Modular Reasoning with Brain-Like Specialization"</a></strong> is out!'},{date:"3 Mar 2025",html:'Our preprint <strong><a href="https://arxiv.org/abs/2503.01830">"From Language to Cognition: How LLMs Outgrow the Human Language Network"</a></strong> is out!'},{date:"23 Jan 2025",html:'Our paper <strong><a href="https://arxiv.org/abs/2411.02280">"The LLM Language Network: A Neuroscientific Approach for Identifying Causally Task-Relevant Units"</a></strong> has been accepted to <strong><a href="https://2025.naacl.org">NAACL 2025</a></strong> (Main Conference).'},{date:"22 Jan 2025",html:'Our paper <strong><a href="https://arxiv.org/abs/2410.11516">"TopoLM: Brain-Like Spatio-functional Organization in a Topographic Language Mode"</a></strong> has been accepted to <strong><a href="https://iclr.cc">ICLR 2025</a></strong> as an Oral presentation (1.77%)!.'},{date:"12 Oct 2024",html:'Our paper <strong><a href="https://arxiv.org/abs/2411.00828">"Dreaming Out Loud: A Self-Synthesis Approach For Training Vision-Language Models With Developmentally Plausible Data"</a></strong> has been accepted to <strong><a href="https://babylm.github.io/">BabyLM co-located with CoNLL 2024</a></strong>.'},{date:"20 Sep 2024",html:`Our paper "Flex Tape Can't Fix That: Bias and Misinformation in Edited Language Models" has been accepted to <strong><a href="https://2024.emnlp.org" target="_blank">EMNLP 2024</a></strong> (Main Conference).`},{date:"21 Aug 2024",html:'Our paper "Khattat: Enhancing Readability and Concept Representation of Semantic Typography" has been accepted to the <strong><a href="https://sites.google.com/view/ai4vaeccv2024">AI for Visual Arts Workshop</a></strong> co-located with <strong><a href="https://eccv.ecva.net">ECCV 2024</a></strong>.'},{date:"16 Aug 2024",html:'I am co-organizing the <strong><a href="https://arabicnlp2024.sigarab.org"> ArabicNLP 2024 Conference </a></strong> as one of the Social Chairs co-located with <strong><a href="https://2024.aclweb.org">ACL 2024</a></strong>.'},{date:"27 Jul 2024",html:'I am co-organizing the <strong><a href="https://llm-cognition.github.io">Large Language Models and Cognition</a></strong> workshop co-located with <strong><a href="https://icml.cc/Conferences/2024">ICML 2024</a></strong>.'},{date:"10 Jul 2024",html:'Our paper "Instruction-tuning Aligns LLMs to the Human Brain" has been accepted to <strong><a href="https://colmweb.org">COLM 2024</a></strong>.'},{date:"18 Jun 2024",html:'Our paper "A Context-Contrastive Inference Approach To Partial Diacritization" has been accepted to the <strong><a href="https://arabicnlp2024.sigarab.org"> ArabicNLP 2024 Conference </a></strong> as an Oral Presentation.'},{date:"16 May 2024",html:'Our paper "Investigating Cultural Alignment of Large Language Models" has been accepted to <strong><a href="https://2024.aclweb.org">ACL 2024</a></strong> (Main Conference).'},{date:"18 Apr 2024",html:'Our paper "Investigating Cultural Alignment of Large Language Models" has been accepted to <strong><a href="https://ic2s2-2024.org">IC2S2 2024</a></strong> as an Oral Presentation.'},{date:"20 Feb 2024",html:'Our paper "Depth-Wise Attention (DWAtt): A Layer Fusion Method for Data-Efficient Classification" has been accepted to <strong><a href="https://lrec-coling-2024.org">LREC-COLING 2024</a></strong> as an Oral Presentation.'}],Mc="/assets/badr-FmPgKVSZ.jpeg",Sc={id:"hero",class:"grid grid-cols-1 lg:grid-cols-3 gap-6"},Cc={class:"card-surface p-6 md:p-8"},Tc={class:"flex flex-col sm:flex-row gap-6 items-start"},Ec=["src"],Ic={class:"flex-1 min-w-0"},Rc={class:"mt-5"},Pc={class:"card-surface p-6 md:p-8"},Nc={class:"text-xl font-serif font-bold text-ink-900 dark:text-dark-text flex items-center gap-2 mb-5"},Bc=["title"],Oc={class:"space-y-4"},Dc={class:"inline-block font-semibold text-xs text-brand-700 dark:text-brand-300 bg-brand-50 dark:bg-brand-900/30 border border-brand-200 dark:border-brand-700 rounded-full px-2 py-0.5 mr-1"},Fc=["innerHTML"],$c=pe({__name:"HeroSection",setup(e){const t=Ee(!1),n=Lc;return(r,i)=>(m(),w("section",Sc,[O(Ne,{class:"lg:col-span-3"},{default:Me(()=>[c("div",Cc,[c("div",Tc,[c("img",{src:G(Mc),alt:"Badr AlKhamissi",class:"w-[180px] h-[180px] rounded-2xl object-cover shrink-0"},null,8,Ec),c("div",Ic,[i[1]||(i[1]=c("h1",{class:"text-3xl md:text-4xl font-serif font-bold tracking-tight"},[c("span",{class:"gradient-text"},"Badr AlKhamissi"),c("span",{class:"text-lg md:text-xl text-ink-400 dark:text-dark-muted ml-2 font-normal"}," (بدر Ø§ÙØ®Ù
ÙØ³Ù) ")],-1)),i[2]||(i[2]=c("ul",{class:"mt-5 space-y-2.5 text-[15px] text-ink-700 dark:text-dark-text leading-relaxed"},[c("li",{class:"bio-item"},[c("strong",null,"PhD candidate"),K(" at "),c("a",{href:"https://www.epfl.ch/en/",target:"_blank",rel:"noopener noreferrer",class:"text-brand-600 dark:text-brand-400 hover:underline"},"EPFL"),K(", co-advised by "),c("a",{href:"https://atcbosselut.github.io",target:"_blank",rel:"noopener noreferrer",class:"text-brand-600 dark:text-brand-400 hover:underline"},"Antoine Bosselut"),K(" and "),c("a",{href:"https://mschrimpf.com",target:"_blank",rel:"noopener noreferrer",class:"text-brand-600 dark:text-brand-400 hover:underline"},"Martin Schrimpf")]),c("li",{class:"bio-item"},[c("strong",null,"Interested in"),K(" the intersection of machine learning, neuroscience, and cognitive science ")
17]),c("li",{class:"bio-item"},[c("strong",null,"Currently: Student Researcher"),K(" at "),c("a",{href:"https://deepmind.google",target:"_blank",rel:"noopener noreferrer",class:"text-brand-600 dark:text-brand-400 hover:underline"},"Google DeepMind"),K(" (Zurich), with "),c("a",{href:"https://ibomohsin.com",target:"_blank",rel:"noopener noreferrer",class:"text-brand-600 dark:text-brand-400 hover:underline"},"Ibrahim Alabdulmohsin")]),c("li",{class:"bio-item"},[c("strong",null,"Previously: AI Resident"),K(" at "),c("a",{href:"https://ai.facebook.com/join-us/residency-program/",target:"_blank",rel:"noopener noreferrer",class:"text-brand-600 dark:text-brand-400 hover:underline"},"Meta AI"),K(" (Seattle), with "),c("a",{href:"https://en.wikipedia.org/wiki/Mona_Diab",target:"_blank",rel:"noopener noreferrer",class:"text-brand-600 dark:text-brand-400 hover:underline"},"Mona Diab"),K(" and "),c("a",{href:"http://asli.us",target:"_blank",rel:"noopener noreferrer",class:"text-brand-600 dark:text-brand-400 hover:underline"},"Asli Celikyilmaz")]),c("li",{class:"bio-item"},[c("strong",null,"Previously: Research Intern"),K(" at "),c("a",{href:"https://ai.sony",target:"_blank",rel:"noopener noreferrer",class:"text-brand-600 dark:text-brand-400 hover:underline"},"Sony AI"),K(", with "),c("a",{href:"https://ai.sony/people/Michael-Spranger/",target:"_blank",rel:"noopener noreferrer",class:"text-brand-600 dark:text-brand-400 hover:underline"},"Michael Spranger")]),c("li",{class:"bio-item"},[c("strong",null,"MSc"),K(" in "),c("a",{href:"https://www.gold.ac.uk/pg/msc-computational-cognitive-neuroscience/",target:"_blank",rel:"noopener noreferrer",class:"text-brand-600 dark:text-brand-400 hover:underline"},"Computational Cognitive Neuroscience"),K(" (distinction), Goldsmiths, University of London ")]),c("li",{class:"bio-item"},[c("strong",null,"BSc"),K(" in Computer Science (Summa Cum Laude), "),c("a",{href:"http://www.aucegypt.edu",target:"_blank",rel:"noopener noreferrer",class:"text-brand-600 dark:text-brand-400 hover:underline"},"American University in Cairo")])],-1)),c("div",Rc,[O(Kr)])])])])]),_:1}),O(Ne,{delay:150,class:"lg:col-span-3"},{default:Me(()=>[c("div",Pc,[c("h2",Nc,[i[4]||(i[4]=c("svg",{class:"w-5 h-5 text-brand-500",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[c("path",{d:"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"}),c("path",{d:"M13.73 21a2 2 0 0 1-3.46 0"})],-1)),i[5]||(i[5]=K(" News ",-1)),c("button",{onClick:i[0]||(i[0]=s=>t.value=!t.value),class:"ml-auto p-1.5 rounded-lg text-ink-400 hover:text-brand-600 hover:bg-brand-50 dark:hover:bg-dark-surface dark:hover:text-brand-400 transition-colors",title:t.value?"Collapse":"Expand"},[(m(),w("svg",{class:he(["w-4 h-4 transition-transform duration-300",{"rotate-180":t.value}]),viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},[...i[3]||(i[3]=[c("polyline",{points:"6 9 12 15 18 9"},null,-1)])],2))],8,Bc)]),c("div",{class:he(["overflow-y-auto scrollbar-thin pr-1 transition-all duration-300",t.value?"max-h-[600px]":"max-h-[250px]"])},[c("ul",Oc,[(m(!0),w(Y,null,fe(G(n),(s,a)=>(m(),w("li",{key:a,class:"flex gap-3 text-sm leading-relaxed"},[i[6]||(i[6]=c("span",{class:"mt-1.5 shrink-0 w-1.5 h-1.5 rounded-full bg-brand-500"},null,-1)),c("div",null,[c("span",Dc,W(s.date),1),c("span",{class:"text-ink-600 dark:text-dark-muted ml-1",innerHTML:s.html},null,8,Fc)])]))),128))])],2)])]),_:1})]))}}),zc=Gn($c,[["__scopeId","data-v-26840017"]]),Hc=na,Pn=Ee("all"),Nn=Ee("all"),Bn=Ee(""),jc=un(()=>{let e=Hc;if(Pn.value!=="all"){const n={selected:"selected",preprints:"preprint",conferences:"conference",workshops:"workshop"}[Pn.value];n&&(e=e.filter(r=>r.type.includes(n)))}if(Nn.value!=="all"){const n={"first-author":"first","co-author":"co-author","senior-author":"senior"}[Nn.value];n&&(e=e.filter(r=>(r.authorship??"").split(",").map(i=>i.trim()).includes(n)))}if(Bn.value.trim()){const t=Bn.value.toLowerCase();e=e.filter(n=>n.title.toLowerCase().includes(t)||n.venue.toLowerCase().includes(t)||n.year===t.trim()||n.authors.some(r=>r.toLowerCase().includes(t)))}return e});function Kc(){function e(r){Pn.value=r}function t(r){Nn.value=r}function n(r){Bn.value=r}return{typeFilter:Pn,authorshipFilter:Nn,searchQuery:Bn,filteredPublications:jc,setTypeFilter:e,setAuthorshipFilter:t,setSearch:n}}const Wc={class:"flex flex-wrap gap-2"},Vc=["onClick"],xr=pe({__name:"FilterPills",props:{options:{},modelValue:{}},emits:["update:modelValue"],setup(e){return(t,n)=>(m(),w("div",Wc,[(m(!0),w(Y,null,fe(e.options,r=>(m(),w("button",{key:r,onClick:i=>t.$emit("update:modelValue",r),class:he(["px-4 py-1.5 rounded-full text-sm font-medium transition-all duration-200",e.modelValue===r?"bg-gradient-to-r from-brand-500 to-brand-600 text-white shadow-md shadow-brand-500/25":"bg-ink-100 dark:bg-dark-surface text-ink-600 dark:text-dark-muted hover:bg-ink-200 dark:hover:bg-dark-border"])},W(r),11,Vc))),128))]))}}),Uc={class:"relative"},Gc=["value","placeholder"],Jc=pe({__name:"SearchInput",props:{modelValue:{},placeholder:{default:"Search..."}},emits:["update:modelValue"],setup(e){return(t,n)=>(m(),w("div",Uc,[n[1]||(n[1]=c("svg",{class:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-ink-400 dark:text-dark-muted",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[c("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)),c("input",{type:"text",value:e.modelValue,onInput:n[0]||(n[0]=r=>t.$emit("update:modelValue",r.target.value)),placeholder:e.placeholder,class:"w-full pl-10 pr-4 py-2.5 rounded-full border border-ink-200 dark:border-dark-border bg-white dark:bg-dark-surface text-ink-900 dark:text-dark-text placeholder-ink-400 dark:placeholder-dark-muted focus:outline-none focus:ring-2 focus:ring-brand-500/40 focu
17s:border-brand-500 transition-all text-sm"},null,40,Gc)]))}}),qc={class:"mb-8"},Yc={class:"text-2xl md:text-3xl font-serif font-bold tracking-tight text-ink-900 dark:text-dark-text"},Zc={key:0,class:"mr-2"},Mt=pe({__name:"SectionHeading",props:{title:{},icon:{}},setup(e){return(t,n)=>(m(),w("div",qc,[c("h2",Yc,[e.icon?(m(),w("span",Zc,W(e.icon),1)):le("",!0),K(" "+W(e.title),1)]),n[0]||(n[0]=c("div",{class:"mt-2 h-1 w-16 rounded-full bg-gradient-to-r from-brand-500 to-accent-400"},null,-1))]))}}),Qc={id:"publications"},Xc={class:"flex flex-col md:flex-row md:items-start gap-4 mb-8"},ed={class:"flex-1 flex flex-col gap-3"},td={class:"flex items-center gap-3"},nd={class:"flex items-center gap-3"},rd={class:"space-y-5"},id={class:"card-surface p-5 hover:-translate-y-0.5 hover:shadow-card transition-all duration-300 border-l-2 border-brand-500 relative"},sd={class:"absolute top-4 right-4 text-xs font-semibold px-2.5 py-0.5 rounded-full bg-brand-50 dark:bg-brand-900/30 text-brand-700 dark:text-brand-300"},ad={class:"text-base font-semibold pr-16 leading-snug"},od=["href"],ld={key:1,class:"text-ink-900 dark:text-dark-text"},cd={class:"mt-1.5 text-sm text-ink-600 dark:text-dark-muted leading-relaxed"},dd=["innerHTML"],ud={key:0,class:"mt-2 flex flex-wrap gap-1.5"},hd={class:"mt-3 flex flex-wrap gap-3 text-xs"},fd=["href"],pd=["href"],gd=["href"],md=["href"],bd=["href"],vd=["href"],kd={key:1,class:"mt-3 group"},yd={class:"mt-2 text-sm text-ink-600 dark:text-dark-muted leading-relaxed"},wd=["innerHTML"],xd={key:3,class:"mt-1 text-xs text-ink-400 dark:text-dark-muted inline-flex items-center gap-1"},_d={key:0,class:"text-center py-12 text-ink-400 dark:text-dark-muted"},Ad=pe({__name:"PublicationsSection",setup(e){const{typeFilter:t,authorshipFilter:n,searchQuery:r,filteredPublications:i,setTypeFilter:s,setAuthorshipFilter:a,setSearch:o}=Kc(),l={preprint:{label:"Preprint",classes:"bg-ink-100 dark:bg-white/10 text-ink-500 dark:text-dark-muted"},submission:{label:"Under Review",classes:"bg-amber-50 dark:bg-amber-900/30 text-amber-700 dark:text-amber-400"},oral:{label:"Oral",classes:"bg-emerald-50 dark:bg-emerald-900/30 text-emerald-700 dark:text-emerald-400"},award:{label:"Award",classes:"bg-yellow-50 dark:bg-yellow-900/30 text-yellow-700 dark:text-yellow-400"},poster:{label:"Poster",classes:"bg-sky-50 dark:bg-sky-900/30 text-sky-700 dark:text-sky-400"},spotlight:{label:"Spotlight",classes:"bg-violet-50 dark:bg-violet-900/30 text-violet-700 dark:text-violet-400"},sota:{label:"SoTA",classes:"bg-rose-50 dark:bg-rose-900/30 text-rose-700 dark:text-rose-400"}};function f(E){return E?E.split(",").map(S=>S.trim()).filter(Boolean):[]}const u=[{label:"All",value:"all"},{label:"Selected",value:"selected"},{label:"Preprints",value:"preprints"},{label:"Conferences",value:"conferences"},{label:"Workshops",value:"workshops"}],p=[{label:"All",value:"all"},{label:"First Author",value:"first-author"},{label:"Co-Author",value:"co-author"},{label:"Senior Author",value:"senior-author"}],b=u.map(E=>E.label),A=p.map(E=>E.label);function R(E){return S=>{var C;return((C=E.find(ne=>ne.label===S))==null?void 0:C.value)??S.toLowerCase()}}function I(E){return S=>{var C;return((C=E.find(ne=>ne.value===S))==null?void 0:C.label)??S}}const V=R(u),j=I(u),D=R(p),J=I(p);return(E,S)=>(m(),w("section",Qc,[O(Mt,{title:"Publications"}),c("div",Xc,[c("div",ed,[c("div",td,[S[3]||(S[3]=c("span",{class:"w-16 shrink-0 text-xs font-semibold uppercase tracking-wide text-ink-400 dark:text-dark-muted"}," Type ",-1)),O(xr,{options:G(b),"model-value":G(j)(G(t)),"onUpdate:modelValue":S[0]||(S[0]=C=>G(s)(G(V)(C)))},null,8,["options","model-value"])]),c("div",nd,[S[4]||(S[4]=c("span",{class:"w-16 shrink-0 text-xs font-semibold uppercase tracking-wide text-ink-400 dark:text-dark-muted"}," Author ",-1)),O(xr,{options:G(A),"model-value":G(J)(G(n)),"onUpdate:modelValue":S[1]||(S[1]=C=>G(a)(G(D)(C)))},null,8,["options","model-value"])])]),O(Jc,{"model-value":G(r),"onUpdate:modelValue":S[2]||(S[2]=C=>G(o)(C)),placeholder:"Search publications...",class:"md:w-72"},null,8,["model-value"])]),c("div",rd,[(m(!0),w(Y,null,fe(G(i),(C,ne)=>(m(),ze(Ne,{key:`${C.title}-${C.year}-${C.type.join(",")}`,delay:Math.min(ne*50,300)},{default:Me(()=>[c("div",id,[c("span",sd,W(C.year),1),c("h3",ad,[C.link?(m(),w("a",{key:0,href:C.link,target:"_blank",rel:"noopener noreferrer",class:"text-brand-700 dark:text-brand-400 hover:underline"},W(C.title),9,od)):(m(),w("span",ld,W(C.title),1))]),c("p",cd,[(m(!0),w(Y,null,fe(C.authors,(ee,N)=>(m(),w("span",{key:N,innerHTML:ee+(N<C.authors.length-1?" ":""),class:"inline"},null,8,dd))),128))]),f(C.badges).length?(m(),w("div",ud,[(m(!0),w(Y,null,fe(f(C.badges),ee=>{var N,U;return m(),w("span",{key:ee,class:he(["inline-flex items-center text-xs font-medium px-2 py-0.5 rounded-full",((N=l[ee])==null?void 0:N.classes)??"bg-ink-100 dark:bg-white/10 text-ink-500 dark:text-dark-muted"])},W(((U=l[ee])==null?void 0:U.label)??ee),3)}),128))])):le("",!0),c("div",hd,[C.link?(m(),w("a",{key:0,href:C.link,target:"_blank",rel:"noopener noreferrer",class:"inline-flex items-center gap-1 text-brand-600 dark:text-brand-400 hover:underline"},[...S[5]||(S[5]=[c("svg",{class:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[c("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),c("polyline",{points:"14 2 14 8 20 8"})],-1),K(" Paper ",-1)])],8,fd)):le("",!0),C.presentation?(m(),w("a",{key:1,href:C.presentation,target:"_blank",rel:"noopener noreferrer",class:"inline-flex items-center gap-1 text-brand-600 dark:text-brand-400 hover:underline"},[...S[6]||(S[6]=[c("svg",{class:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[c("polygon",{points:"5 3 19 12 5 21 5 3"})],-1),K(" Presentation ",-1)])],8,pd)):le("",!0),C.website?(m(),w("a",{key:2,href:C.website,target:"_blank",rel:"noopener noreferrer",class:"inline-flex items-center gap-1 text-brand-600 dark:text-brand-400 hover:underline"},[...S[7]||(S[7]=[c("svg",{class:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[c("circle",{cx:"12",cy:"12",r:"10"}),c("line",{x1:"2",y1:"12",x2:"22",y2:"12"}),c("path",{d:"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"})],-1),K(" Website ",-1)])],8,gd)):le("",!0),C.poster?(m(),w("a",{key:3,href:C.poster,target:"_blank",rel:"noopener noreferrer",class:"inline-flex items-center gap-1 text-brand-600 dark:text-brand-400 hover:underline"},[...S[8]||(S[8]=[c("svg",{class:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[c("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",ry:"2"}),c("line",{x1:"3",y1:"9",x2:"21",y2:"9"})],-1),K(" Poster ",-1)])],8,md)):le("",!0),C.twitter?(m(),w("a",{key:4,href:C.twitter,target:"_blank",rel:"noopener noreferrer",class:"inline-flex items-center gap-1 text-brand-600 dark:text-brand-400 hover:underline"},[...S[9]||(S[9]=[c("svg",{class:"w-3.5 h-3.5",viewBox:"0 0 24 24",fill:"
17currentColor"},[c("path",{d:"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"})],-1),K(" Tweets ",-1)])],8,bd)):le("",!0),C.github?(m(),w("a",{key:5,href:C.github,target:"_blank",rel:"noopener noreferrer",class:"inline-flex items-center gap-1 text-brand-600 dark:text-brand-400 hover:underline"},[...S[10]||(S[10]=[c("svg",{class:"w-3.5 h-3.5",viewBox:"0 0 24 24",fill:"currentColor"},[c("path",{d:"M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0 1 12 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z"})],-1),K(" Code ",-1)])],8,vd)):le("",!0)]),C.abstract?(m(),w("details",kd,[S[11]||(S[11]=c("summary",{class:"text-xs font-medium text-ink-500 dark:text-dark-muted cursor-pointer select-none hover:text-brand-600 dark:hover:text-brand-400 transition-colors"}," Abstract ",-1)),c("p",yd,W(C.abstract),1)])):le("",!0),C.venue?(m(),w("p",{key:2,class:"mt-3 text-sm text-ink-500 dark:text-dark-muted",innerHTML:C.venue},null,8,wd)):le("",!0),C.location?(m(),w("p",xd,[S[12]||(S[12]=c("svg",{class:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[c("path",{d:"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"}),c("circle",{cx:"12",cy:"10",r:"3"})],-1)),K(" "+W(C.location),1)])):le("",!0)])]),_:2},1032,["delay"]))),128)),G(i).length===0?(m(),w("div",_d,[...S[13]||(S[13]=[c("p",{class:"text-lg"},"No publications found.",-1),c("p",{class:"text-sm mt-1"},"Try adjusting your search or filter.",-1)])])):le("",!0)])]))}}),Ld=Gn(Ad,[["__scopeId","data-v-6c44241c"]]),Md={id:"talks",class:"py-16"},Sd={class:"flex flex-col gap-4"},Cd={class:"card-surface p-4 hover:-translate-y-0.5 transition-all duration-300"},Td={class:"flex flex-col sm:flex-row gap-3"},Ed={class:"min-w-[160px] shrink-0"},Id={class:"text-sm font-medium text-brand-500"},Rd={class:"flex-1 min-w-0"},Pd={class:"font-semibold text-ink-900 dark:text-dark-text"},Nd=["href"],Bd={key:1},Od={class:"text-sm text-ink-600 dark:text-dark-muted mt-0.5"},Dd={key:0,class:"text-xs text-ink-500 dark:text-dark-muted/70 mt-0.5"},Fd={key:1,class:"flex flex-wrap gap-2 mt-2"},$d=["href"],zd=["href"],Hd=["href"],jd=pe({__name:"TalksSection",setup(e){const t=ra;function n(r){return r?r.split(",").map(i=>i.trim()).filter(Boolean):[]}return(r,i)=>(m(),w("section",Md,[O(Mt,{title:"Invited Talks"}),c("div",Sd,[(m(!0),w(Y,null,fe(G(t),(s,a)=>(m(),ze(Ne,{key:a,delay:a*60},{default:Me(()=>[c("div",Cd,[c("div",Td,[c("div",Ed,[c("span",Id,W(s.date),1)]),c("div",Rd,[c("div",Pd,[s.link?(m(),w("a",{key:0,href:s.link,target:"_blank",rel:"noopener noreferrer",class:"hover:text-brand-500 transition-colors duration-200"},W(s.inst),9,Nd)):(m(),w("span",Bd,W(s.inst),1))]),c("p",Od,W(s.title),1),s.role?(m(),w("p",Dd,W(s.role),1)):le("",!0),n(s.badges).length?(m(),w("div",Fd,[n(s.badges).includes("slides")?(m(),w("a",{key:0,href:s.slides,target:"_blank",rel:"noopener noreferrer",class:"inline-flex items-center gap-1 text-xs font-medium px-2.5 py-1 rounded-full bg-brand-50 dark:bg-brand-500/10 text-brand-600 dark:text-brand-400 hover:bg-brand-100 dark:hover:bg-brand-500/20 transition-colors duration-200"},[...i[0]||(i[0]=[c("svg",{class:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[c("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})],-1),K(" Slides ",-1)])],8,$d)):le("",!0),n(s.badges).includes("video")?(m(),w("a",{key:1,href:s.link,target:"_blank",rel:"noopener noreferrer",class:"inline-flex items-center gap-1 text-xs font-medium px-2.5 py-1 rounded-full bg-accent-50 dark:bg-accent-500/10 text-accent-600 dar
17k:text-accent-400 hover:bg-accent-100 dark:hover:bg-accent-500/20 transition-colors duration-200"},[...i[1]||(i[1]=[c("svg",{class:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[c("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M14.752 11.168l-3.197-2.132A1 1 0 0010 9.87v4.263a1 1 0 001.555.832l3.197-2.132a1 1 0 000-1.664z"}),c("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1),K(" Video ",-1)])],8,zd)):le("",!0),n(s.badges).includes("podcast")?(m(),w("a",{key:2,href:s.link,target:"_blank",rel:"noopener noreferrer",class:"inline-flex items-center gap-1 text-xs font-medium px-2.5 py-1 rounded-full bg-purple-50 dark:bg-purple-500/10 text-purple-600 dark:text-purple-400 hover:bg-purple-100 dark:hover:bg-purple-500/20 transition-colors duration-200"},[...i[2]||(i[2]=[c("svg",{class:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[c("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 11a7 7 0 01-7 7m0 0a7 7 0 01-7-7m7 7v4m0 0H8m4 0h4m-4-8a3 3 0 01-3-3V5a3 3 0 116 0v6a3 3 0 01-3 3z"})],-1),K(" Podcast ",-1)])],8,Hd)):le("",!0)])):le("",!0)])])])]),_:2},1032,["delay"]))),128))])]))}}),Kd={id:"projects",class:"py-16"},Wd={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Vd={class:"card-surface p-6 hover:-translate-y-0.5 hover:shadow-card transition-all duration-300 h-full flex flex-col"},Ud={class:"text-lg font-semibold text-ink-900 dark:text-dark-text"},Gd=["href"],Jd={key:1},qd=["innerHTML"],Yd={key:0,class:"mt-3 text-xs text-ink-500 dark:text-dark-muted/70"},Zd={class:"flex flex-wrap gap-3 mt-3 pt-3 border-t border-ink-100 dark:border-dark-border"},Qd=["href"],Xd=["href"],eu=["href"],tu=pe({__name:"ProjectsSection",setup(e){const t=ia;return(n,r)=>(m(),w("section",Kd,[O(Mt,{title:"Projects"}),c("div",Wd,[(m(!0),w(Y,null,fe(G(t),(i,s)=>(m(),ze(Ne,{key:s,delay:s*80},{default:Me(()=>[c("div",Vd,[c("h3",Ud,[i.link?(m(),w("a",{key:0,href:i.link,target:"_blank",rel:"noopener noreferrer",class:"hover:text-brand-500 transition-colors duration-200"},W(i.name),9,Gd)):(m(),w("span",Jd,W(i.name),1))]),c("p",{class:"mt-2 text-sm text-ink-600 dark:text-dark-muted leading-relaxed flex-1",innerHTML:i.desc},null,8,qd),i.collaborators&&i.collaborators.length?(m(),w("p",Yd," with: "+W(i.collaborators.join(" ")),1)):le("",!0),c("div",Zd,[i.link?(m(),w("a",{key:0,href:i.link,target:"_blank",rel:"noopener noreferrer",class:"inline-flex items-center gap-1 text-xs text-ink-500 dark:text-dark-muted hover:text-brand-500 dark:hover:text-brand-400 transition-colors duration-200"},[...r[0]||(r[0]=[c("svg",{class:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[c("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.657 0 3-4.03 3-9s-1.343-9-3-9m0 18c-1.657 0-3-4.03-3-9s1.343-9 3-9m-9 9a9 9 0 019-9"})],-1),K(" Website ",-1)])],8,Qd)):le("",!0),i.code?(m(),w("a",{key:1,href:i.code,target:"_blank",rel:"noopener noreferrer",class:"inline-flex items-center gap-1 text-xs text-ink-500 dark:text-dark-muted hover:text-brand-500 dark:hover:text-brand-400 transition-colors duration-200"},[...r[1]||(r[1]=[c("svg",{class:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[c("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4"})],-1),K(" Code ",-1)])],8,Xd)):le("",!0),i.blog?(m(),w("a",{key:2,href:i.blog,target:"_blank",rel:"noopener noreferrer",class:"inline-flex items-center gap-1 text-xs text-ink-500 dark:text-dark-muted hover:text-brand-500 dark:hover:text-brand-400 transition-colors duration-200"},[...r[2]||(r[2]=[c("svg",{class:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[c("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 20H5a2 2 0 01-2-2V6a2 2 0 012-2h10a2 2 0 012 2v1m2 13a2 2 0 01-2-2V7m2 13a2 2 0 002-2V9a2 2 0 00-2-2h-2m-4-3H9M7 16h6M7 8h6v4H7V8z"})],-1),K(" Blog ",-1)])],8,eu)):le("",!0)])])]),_:2},1032,["delay"]))),128))])]))}}),nu=[{date:"July 2026 - Present",title:"Student Researcher at Google DeepMind",location:"Zuric
17h, Switzerland",image:"../assets/experience/deepmind.png",points:["Working with Ibrahim Alabdulmohsin"]},{date:"November 2021 - November 2022",title:"AI Resident at Meta",location:"Seattle, United States",image:"../assets/experience/meta.jpg",points:["Worked with Mona Diab and Asli Celikyilmaz.","Finished 6 first-author papers during my residency."]},{date:"March 2021 - October 2021",title:"AI Research Intern at Sony AI",location:"Tokyo, Japan (Remote)",image:"../assets/experience/sony.jpg",points:["Collaborated with Sam Ritter and Zeb Kurth-Nelson of DeepMind","Conducting research on Meta-Reinforcement Learning"]},{date:"October 2020 - February 2021",title:"AI Research Intern at Sony CSL",location:"Tokyo, Japan (Remote)",image:"../assets/experience/sony_csl.jpg",points:["Worked with Michael Spranger"]},{date:"April 2019 - September 2019",title:"Applied Scientist at Microsoft Advanced Technology Lab in Cairo",location:"Cairo, Egypt",image:"../assets/experience/microsoft.jpg",points:["Research in Cross-Lingual Model Transfer","Best Mentor Award","First Place in Microsoft ATLC Hackathon"]},{date:"January 2018 - March 2019",title:"Machine Intelligence Research Assistant at Vkansee",location:"New York, United States (Remote)",image:"../assets/experience/vkansee.jpg",points:["Conducting research to improve state-of-the-art algorithms in bio-metrics through ML","Optimize implementations for speed and space to suit embedded devices with restricted resources","Assist in data collection, labeling, and preprocessing","Work with and support engineers from leading mobile phone and device manufacturers to integrate Vkansee solutions into industry standard platforms"]},{date:"June 2018 - September 2018",title:"Software Engineer at Microsoft Advanced Technology Lab in Cairo",location:"Cairo, Egypt",image:"../assets/experience/microsoft.jpg",points:["Researching the applicability of multilingual bot-interaction through Machine Translation","Mentoring Summer Intern","Developed Node CLI tool for MS Language Generation, part of Bot-Framework tools","Collaborating with Microsoft Beijing for designing and developing core components part of MS Language Generation","Incorporate Machine Translation into MS Bot-Framework"]},{date:"Fall 2015, Spring 2016 and Fall 2017",title:"Undergraduate Teaching Assistant at The American University in Cairo",location:"Cairo, Egypt",image:"../assets/experience/auc.png",points:["Teaching assistant for Practical Machine Deep Learning and Programming Fundamentals","Hold regular office hours to help students","Give sessions/workshops to assist students with their coursework"]},{date:"June 2015 - Aug 2015 and January 2016",title:"SDE Intern at Microsoft Advanced Technology Lab in Cairo",location:"Cairo, Egypt",image:"../assets/experience/microsoft.jpg",points:["Supporting full-text search for MS Language Understanding Intelligent Service (LUIS) utterances","Migrating existing LUIS database from Azure to MS SQL Server and adjusting LUIS features that uses this database accordingly","Design and implement the application import/export feature on LUIS","Developing different applications (iOS, Windows Phone and an Office Extension) that utilizes LUIS"]}],ru=[{date:"September 2023 - Present",title:"PhD at EPFL",location:"Lausanne, Switzerland",image:"../assets/experience/epfl.png",points:["Co-advised by Antoine Bosselut and Martin Schrimpf"]},{date:"September 2019 - September 2020",title:"MSc in Computational Cognitive Neuroscience at Goldsmiths, University of London",location:"London, UK",image:"../assets/experience/goldsmiths.png",points:["Pass with Distinction","Dissertation: Episodic Meta-RL on the Two-Step and Harlow Tasks (Grade 90%)"]},{date:"July 2017",title:"Deep Learning Summer School at Tsinghua University",location:"Beijing, China",image:"../assets/experience/tsinghua.png",points:["Thorough training in deep learning, covering many applications in Computer. Vision, NLP, Knowledge Graph, Social Media Analysis, Multimodal Analysis and Robotics.","Outstanding Performance Award in Deep Learning Summer School at Tsinghua University"]},{date:"August 2016 - December 2016",title:"Semester Abroad at Stony Brook University",location:"New York, US",image:"../assets/experience/stonybrook.jpg",points:["Best Junior Award in Stony Brook ACM Regional Qualification Contest","Abdallah Jumâah Study Abroad Scholarship"]},{date:"Fall 2014 - Spring 2018",title:"Bachelor of Science from The American University in Cairo",location:"Cairo, Egypt",image:"../assets/experience/auc.png",points:["BSc. in Computer Science - Summa Cum Laude. GPA 4.0","Presidentâs Cup and Mohamed El Beleidy Academic Award for Class Valedictorian","Mohammed Bin Abdulkarim A. Allehedan Award for highest performing STEM student","Academic Achievement Scholarship","Thesis : Video Search using Natural Language"]},{date:"September 2011 - June 2014",title:"International General Certificate of Secondary Education at Manor House School",location:"Cairo, Egypt",image:"../assets/experience/manor_house.jpg",points:["Outstanding Cambridge Learner Award in AL Computing."]}],iu={id:"experience",class:"py-16"},su={class:"mb-8"},au={class:"relative"},ou={class:"flex flex-col gap-8"},lu={class:"card-surface p-5"},cu={class:"flex items-start gap-4"},du=["src","alt"],uu={class:"flex-1 min-w-0"},hu={class:"font-bold text-ink-900 dark:text-dark-text leading-snug"},fu={class:"text-sm text-ink-500 dark:text-dark-muted mt-0.5"},pu={class:"text-sm text-ink-500 dark:text-dark-muted mt-0.5 flex items-center gap-1"},gu={key:0,class:"mt-3 space-y-1.5"},mu=["innerHTML"],bu=pe({__name:"TimelineSection",setup(e){const t=["Experience","Education"],n=Ee("Experience"),r=nu,i=ru,s=un(()=>n.value==="Experience"?r:i);function a(o){return o.replace("../assets/","/images/")}return(o,l)=>(m(),w("section",iu,[O(Mt,{title:"Experience & Education"}),c("div",su,[O(xr,{options:t,"model-value":n.value,"onUpdate:modelValue":l[0]||(l[0]=f=>n.value=f)}
17,null,8,["model-value"])]),c("div",au,[l[5]||(l[5]=c("div",{class:"absolute left-5 md:left-1/2 top-0 bottom-0 w-0.5 bg-ink-200 dark:bg-dark-border md:-translate-x-px"},null,-1)),c("div",ou,[(m(!0),w(Y,null,fe(s.value,(f,u)=>(m(),ze(Ne,{key:n.value+"-"+u,delay:u*100},{default:Me(()=>[c("div",{class:he(["relative flex items-start gap-6",["md:gap-0",u%2===0?"md:flex-row":"md:flex-row-reverse"]])},[l[3]||(l[3]=c("div",{class:"absolute left-5 md:left-1/2 w-3 h-3 rounded-full bg-brand-500 border-2 border-white dark:border-dark-bg z-10 -translate-x-1/2 top-6"},null,-1)),l[4]||(l[4]=c("div",{class:"w-10 shrink-0 md:hidden"},null,-1)),c("div",{class:he(["hidden md:block md:w-1/2",u%2===0?"pr-8":"pl-8"])},null,2),c("div",{class:he(["flex-1 md:w-1/2",u%2===0?"md:pr-8":"md:pl-8"])},[c("div",lu,[c("div",cu,[c("img",{src:a(f.image),alt:f.title,class:"w-12 h-12 rounded-lg object-cover shrink-0"},null,8,du),c("div",uu,[c("h3",hu,W(f.title),1),c("p",fu,W(f.date),1),c("p",pu,[l[1]||(l[1]=c("svg",{class:"w-3.5 h-3.5 shrink-0",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[c("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"}),c("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 11a3 3 0 11-6 0 3 3 0 016 0z"})],-1)),K(" "+W(f.location),1)]),f.points.length?(m(),w("ul",gu,[(m(!0),w(Y,null,fe(f.points,(p,b)=>(m(),w("li",{key:b,class:"text-sm text-ink-600 dark:text-dark-muted flex items-start gap-2"},[l[2]||(l[2]=c("span",{class:"w-1.5 h-1.5 rounded-full bg-brand-400 shrink-0 mt-1.5"},null,-1)),c("span",{innerHTML:p}
17,null,8,mu)]))),128))])):le("",!0)])])])],2)],2)]),_:2},1032,["delay"]))),128))])])]))}}),vu=[{category:"EPFL",awards:[{year:"2026",name:"KAUST Rising Stars in AI",link:"https://www.kaust.edu.sa/events/rsais26/"},{year:"2025",name:"Swiss AI Initiative PhD Fellowship",link:"https://www.swiss-ai.org"},{year:"2025",name:"EPFL Doc.Mobility Grant",link:"https://www.epfl.ch/education/phd/doctoral-studies-structure/customized-curricula/epfl-doc-mobility/"},{year:"2025",name:"Second Prize in LauzHack Mini-Hackathon on Multimodal Apps and Training LLMs",link:"https://devpost.com/software/video-translator-a8lhbs"}]},{category:"Conferences",awards:[{year:"2023",name:"First place on the two categories of the Arabic Reverse Dictionary shared task at ArabicNLP 2023",link:"https://aclanthology.org/2023.arabicnlp-1.43/"},{year:"2022",name:"Best Paper Award for the Fine-Grained Hate Speech Detection Shared Task in Arabic",link:"https://twitter.com/MetaAI/status/1541871438163877888"},{year:"2021",name:"First place on all 4 categories of the second NADI shared task",link:"https://sites.google.com/view/second-nadi-shared-task/leaderboard"}]},{category:"The American University in Cairo",awards:[{year:"2018",name:"President's Cup",link:"https://www.aucegypt.edu/ar/node/3846"},{year:"2018",name:"Mohamed El Beleidy Academic Award",link:"https://www.aucegypt.edu/ar/node/3846"},{year:"2018",name:"Mohammed Bin Abdulkarim A. Allehedan Award",link:"https://www.aucegypt.edu/ar/node/3846"},{year:"2018",name:"Computer Science Exemplary Student",link:""},{year:"2018",name:"Highest-GPA Award for Expected to Graduate",link:""},{year:"2018",name:"Shortlisted in Dell EMC's Graduation Project Competition",link:""},{year:"2018",name:"Third Place Amazon Innovation Hackathon",link:""},{year:"2017",name:"Highest-GPA Award for Juniors",link:""},{year:"2017",name:"Second Prize in Amazon Alexa Hackathon",link:""},{year:"2016",name:"Abdallah Jum'ah Study Abroad Scholarship",link:""},{year:"2015",name:"High Achiever in CS1101 Course",link:""},{year:"2014-2018",name:"Academic Achievement Scholarship",link:""},{year:"2014-2018",name:"Dean's List",link:""}]},{category:"Microsoft Advanced Technology Lab in Cairo",awards:[{year:"2019",name:"Best Mentor Award",link:""},{year:"2019",name:"First Place in Hackathon",link:""}]},{category:"Other Academic Achievements",awards:[{year:"2017",name:"Outstanding Performance Award in Deep Learning Summer School at Tsinghua University",link:"http://goglobal.tsinghua.edu.cn/en/program/deeplearning2017"},{year:"2016",name:"Best Junior Award in Stony Brook ACM Regional Qualification Contest",link:""},{year:"2015",name:"Outstanding Cambridge Learner Award in Advanced Level Computing",link:"https://m.facebook.com/BritishCouncilEgypt/photos/a.917441141610776/917441801610710/?type=3&source=43&paipv=0&eav=AfYsBSnMDBulcrkcW7iCLeeQuAKW4wS91iEV0TIuNRtoNllX7C3Sjiz8ksymZAHN0Vc"}]}],ku={id:"awards",class:"py-16"},yu={class:"flex flex-col gap-4"},wu=["open"],xu={class:"flex items-center justify-between cursor-pointer px-5 py-4 select-none hover:bg-ink-100/50 dark:hover:bg-dark-border/30 transition-colors duration-200"},_u={class:"flex items-center gap-3"},Au={class:"font-semibold text-ink-900 dark:text-dark-text"},Lu={class:"text-xs font-medium px-2.5 py-0.5 rounded-full bg-brand-100 dark:bg-brand-500/15 text-brand-600 dark:text-brand-400"},Mu={class:"px-5 pb-4"},Su={class:"space-y-2 pt-1"},Cu={class:"text-ink-400 dark:text-dark-muted/60 font-mono text-xs min-w-[70px] shrink-0 pt-0.5"},Tu={class:"text-ink-700 dark:text-dark-muted"},Eu=["href"],Iu={key:1},Ru=pe({__name:"AwardsSection",setup(e){const t=vu;return(n,r)=>(m(),w("section",ku,[O(Mt,{title:"Awards & Honors"}),c("div",yu,[(m(!0),w(Y,null,fe(G(t),(i,s)=>(m(),ze(Ne,{key:s,delay:s*80},{default:Me(()=>[c("details",{class:"group rounded-xl bg-ink-50/50 dark:bg-dark-surface border border-ink-100 dark:border-dark-border overflow-hidden",open:s<3||void 0},[c("summary",xu,[c("div",_u,[r[0]||(r[0]=c("svg",{class:"w-4 h-4 text-ink-400 dark:text-dark-muted transition-transform duration-200 group-open:rotate-90",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[c("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5l7 7-7 7"})],-1)),c("h3",Au,W(i.category),1)]),c("span",Lu,W(i.awards.length),1)]),c("div",Mu,[c("ul",Su,[(m(!0),w(Y,null,fe(i.awards,(a,o)=>(m(),w("li",{key:o,class:"flex items-start gap-3 text-sm"},[c("span",Cu," ("+W(a.year)+") ",1),c("span",Tu,[a.link?(m(),w("a",{key:0,href:a.link,target:"_blank",rel:"noopener noreferrer",class:"hover:text-brand-500 dark:hover:text-brand-400 transition-colors duration-200 underline decoration-ink-200 dark:decoration-dark-border underline-offset-2 hover:
17decoration-brand-500"},W(a.name),9,Eu)):(m(),w("span",Iu,W(a.name),1))])]))),128))])])],8,wu)]),_:2},1032,["delay"]))),128))])]))}}),Pu=[{category:"Mentors",people:[{inst:"EPFL",name:"Martin Schrimpf",link:"https://mschrimpf.com"},{inst:"EPFL",name:"Antoine Bosselut",link:"https://atcbosselut.github.io"},{inst:"Google DeepMind",name:"Ibrahim Alabdulmohsin",link:"https://ibomohsin.com"},{inst:"Meta AI",name:"Mona Diab",link:"https://en.wikipedia.org/wiki/Mona_Diab"},{inst:"Meta AI",name:"Asli Celikyilmaz",link:"http://asli.us"},{inst:"Sony AI",name:"Michael Spranger",link:"https://ai.sony/people/Michael-Spranger/"},{inst:"DeepMind",name:"Samuel Ritter",link:""},{inst:"DeepMind",name:"Zeb Kurth-Nelson",link:""},{inst:"Sony AI",name:"Akshay Srinivasan",link:""},{inst:"Microsoft Egypt",name:"Mohamed Afify",link:""},{inst:"Microsoft Egypt",name:"Ahmed Tawfik",link:""},{inst:"The American University in Cairo / Vkansee",name:"Mohamed Mostafa",link:""}]},{category:"Mentees",people:[{inst:"EPFL Semester Project",name:"Amer Lakrami",link:""},{inst:"EPFL Semester Project",name:"Tamar Alphaidze",link:""},{inst:"Summer@EPFL Intern",name:"Ahmed Abdelaal",link:""},{inst:"ERIP Summer Intern at EPFL",name:"Lara Marinov",link:""},{inst:"EPFL Semester Project",name:"Aicha Masmoudi",link:""},{inst:"Master's Thesis at EPFL",name:"Yassine Jamaa",link:""},{inst:"Summer@EPFL",name:"Neil Rathi",link:"https://web.stanford.edu/~rathi/"},{inst:"Summer@EPFL",name:"Ayati Sharma",link:""},{inst:"Carnegie Mellon University in Qatar",name:"Hajer Dahmani",link:""},{inst:"Egypt-Japan University of Science and Technology",name:"Ahmed Hussein",link:""},{inst:"Egypt-Japan University of Science and Technology",name:"Alaa Elsetohy",link:""},{inst:"Egypt-Japan University of Science and Technology",name:"Sama Hadhoud",link:""},{inst:"Egypt-Japan University of Science and Technology",name:"Tameem Bakr",link:""},{inst:"Egypt-Japan University of Science and Technology",name:"Yasser Rohaim",link:""},{inst:"EPFL Semester Project",name:"Aleksei Kudrinskii",link:""},{inst:"Summer@EPFL",name:"Khai Loong Aw",link:"https://awwkl.github.io"},{inst:"ArbML",name:"Mohammad AlBarham",link:"https://mohammad-albarham.github.io/"},{inst:"Technical University of Munich",name:"Karim Abdelmegid",link:""},{inst:"Independent",name:"Hussein Osama",link:""},{inst:"Microsoft Egypt",name:"Abdelrahman Kaseb",link:""},{inst:"Microsoft Egypt",name:"Ahmed Ebrahim",link:""}]}],Nu=["href"],Bu={class:"font-medium"},Ou={class:"text-ink-400 dark:text-dark-muted text-xs"},Du=pe({__name:"PersonChip",props:{name:{},inst:{},link:{}},setup(e){const t=e,n=un(()=>t.link?t.link:`https://www.google.com/search?q=${encodeURIComponent(t.name+" "+t.inst)}`);return(r,i)=>(m(),w("a",{href:n.value,target:"_blank",rel:"noopener noreferrer",class:"inline-flex items-center gap-1.5 px-3 py-1 rounded-full text-sm bg-ink-100 dark:bg-dark-surface text-ink-700 dark:text-dark-muted hover:bg-brand-50 dark:hover:bg-brand-900/20 hover:text-brand-700 dark:hover:text-brand-400 border border-ink-200 dark:border-dark-border hover:border-brand-300 dark:hover:border-brand-700 transition-all duration-200 no-underline"},[c("span",Bu,W(e.name),1),c("span",Ou,"("+W(e.inst)+")",1)],8,Nu))}}),Fu={id:"people"},$u={class:"card-surface p-6 md:p-8 space-y-8"},zu={class:"text-lg font-serif font-semibold text-ink-800 dark:text-dark-text mb-3"},Hu={class:"flex flex-wrap gap-2"},ju=pe({__name:"PeopleSection",setup(e){const t=Pu;return(n,r)=>(m(),w("section",Fu,[O(Mt,{title:"People"}),c("div",$u,[(m(!0),w(Y,null,fe(G(t),i=>(m(),ze(Ne,{key:i.category},{default:Me(()=>[c("h3",zu,W(i.category),1),c("div",Hu,[(m(!0),w(Y,null,fe(i.people,s=>(m(),ze(Du,{key:s.name,name:s.name,inst:s.inst,link:s.link},null,8,["name","inst","link"]))),128))])]),_:2},1024))),128))])]))}}),Ku=[{name:"Nature Communications",link:"https://www.nature.com/ncomms/",tracks:[],role:"Reviewer"},{name:"Neurobiology of Language",link:"https://direct.mit.edu/nol",tracks:[],role:"Reviewer"},{name:"Nature Machine Intelligence",link:"https://www.nature.com/natmachintell/",tracks:[],role:"Reviewer"},{name:"Transactions of the Association for Computational Linguistics (TACL)",link:"https://www.transacl.org",tracks:[],role:"Reviewer"},{name:"OpenMind",link:"https://direct.mit.edu/opmi",tracks:[],role:"Reviewer"}],Wu=[{name:"EMNLP 2026 (ARR)",link:"https://2026.emnlp.org",tracks:[],role:"Area Chair"},{name:"CogSci 2026",link:"https://cognitivesciencesociety.org/cogsci-2026/",tracks:[],role:"Reviewer"},{name:"EACL 2026 (ARR)",link:"https://2026.eacl.org",tracks:[],role:"Reviewer"},{name:"NeurIPS 2025",link:"https://neurips.cc",tracks:[],role:"Reviewer"},{name:"EMNLP 2025 (ARR)",link:"https://2025.emnlp.org",tracks:[],role:"Reviewer"},{name:"ACL 2025 (ARR)",link:"https://2025.aclweb.org",tracks:[],role:"Reviewer"},{name:"NAACL 2025 (ARR, Area Chair)",link:"https://2025.naacl.org",tracks:[],role:"Reviewer,Area Chair"},{name:"EMNLP 2024 (ARR)",link:"https://2024.emnlp.org",tracks:[],role:"Reviewer"},{name:"NeurIPS 2024",link:"https://neurips.cc",tracks:[],role:"Reviewer"},{name:"ArabicNLP 2024",link:"https://arabicnlp2024.sigarab.org",tracks:[],role:"Reviewer"}
17,{name:"Cognitive Computational Neuroscience (CCN) 2024",link:"https://2024.ccneuro.org",tracks:[],role:"Reviewer"},{name:"ACL 2024 (ARR)",link:"https://2024.aclweb.org",tracks:[],role:"Reviewer"},{name:"NAACL 2024 (ARR)",link:"https://2024.naacl.org",tracks:[],role:"Reviewer"},{name:"EMNLP 2023",link:"https://2023.emnlp.org",tracks:["Commonsense Reasoning","Question Answering","Theme Track: Large Language Models and the Future of NLP","NLP Applications","Language Modeling and Analysis of Language Models"],role:"Reviewer"},{name:"EMNLP 2022",link:"https://2022.emnlp.org",tracks:["Language Modeling and Analysis of Language Models"],role:"Reviewer"},{name:"ACL 2023",link:"https://2023.aclweb.org",tracks:["Multilingualism and Cross-Lingual NLP"],role:"Reviewer"},{name:"AutoML 2022",link:"https://automl.cc/",tracks:["Main"],role:"Reviewer"}],Vu=[{name:"International Workshop on Nakba Narratives as Language Resources",link:"https://sina.birzeit.edu/nakba-nlp/",conference:"COLING 2025",role:"Reviewer"},{name:"Towards Knowledgeable Foundation Models",link:"https://knowledgeable-lm.github.io",conference:"AAAI 2025",role:"Reviewer"},{name:"I (Still) Can't Believe It's Not Better!",link:"https://i-cant-believe-its-not-better.github.io/neurips2022/",conference:"NeurIPS 2022",role:"Reviewer"},{name:"I (Still) Can't Believe It's Not Better!",link:"https://i-cant-believe-its-not-better.github.io/neurips2021/",conference:"NeurIPS 2021",role:"Reviewer"},{name:"Efficient Natural Language and Speech Processing (ENLSP)",link:"https://neurips2022-enlsp.github.io",conference:"NeurIPS 2022",role:"Reviewer"},{name:"AutoML Late-Breaking Workshop",link:"https://automl.cc/call-for-late-breaking-workshop-papers/",conference:"AutoML 2022",role:"Reviewer"},{name:"Meta-Learning Workshop",link:"https://meta-learn.github.io/2021/",conference:"NeurIPS 2021",role:"Reviewer"},{name:"Meta-Learning Workshop",link:"https://meta-learn.github.io/2020/",conference:"NeurIPS 2020",role:"Reviewer"},{name:"Learning to Learn Workshop",link:"https://sites.google.com/view/learning-2-learn/",conference:"ICLR 2021",role:"Reviewer"}],Uu={journals:Ku,conferences:Wu,workshops:Vu},or=pe({__name:"RoleBadges",props:{role:{}},setup(e){const t={Reviewer:"bg-ink-100 dark:bg-white/10 text-ink-500 dark:text-dark-muted","Area Chair":"bg-violet-50 dark:bg-violet-900/30 text-violet-700 dark:text-violet-400"};function n(r){return r?r.split(",").map(i=>i.trim()).filter(Boolean):[]}return(r,i)=>(m(!0),w(Y,null,fe(n(e.role),s=>(m(),w("span",{key:s,class:he(["inline-flex items-center whitespace-nowrap text-xs font-medium px-2 py-0.5 rounded-full ml-1.5 align-middle",t[s]??"bg-ink-100 dark:bg-white/10 text-ink-500 dark:text-dark-muted"])},W(s),3))),128))}}),Gu={id:"service"},Ju={class:"card-surface p-6 md:p-8 space-y-8"},qu={class:"space-y-2 text-sm text-ink-700 dark:text-dark-text leading-relaxed"},Yu=["href"],Zu={class:"space-y-2 text-sm text-ink-700 dark:text-dark-text leading-relaxed"},Qu=["href"],Xu={class:"space-y-2 text-sm text-ink-700 dark:text-dark-text leading-relaxed"},eh=["href"],th={class:"text-ink-500 dark:text-dark-muted"},nh=pe({__name:"ServiceSection",setup(e){const t=Uu;return(n,r)=>(m(),w("section",Gu,[O(Mt,{title:"Academic Service"}),c("div",Ju,[O(Ne,null,{default:Me(()=>[...r[0]||(r[0]=[c("h3",{class:"text-lg font-serif font-semibold text-ink-800 dark:text-dark-text mb-3"}," Organizing ",-1),c("ul",{class:"space-y-2 text-sm text-ink-700 dark:text-dark-text leading-relaxed"},[c("li",{class:"flex items-start gap-2"},[c("span",{class:"mt-1.5 shrink-0 w-1.5 h-1.5 rounded-full bg-brand-500"}),c("span",null,[c("strong",null,"Co-Organizer:"),c("a",{href:"https://representational-alignment.github.io/2026/",target:"_blank",rel:"noopener noreferrer",class:"text-brand-600 dark:text-brand-400 hover:underline"}," Re-Align Workshop"),K(" co-located with "),c("a",{href:"https://iclr.cc",target:"_blank",rel:"noopener noreferrer",class:"text-brand-600 dark:text-brand-400 hover:underline"}," ICLR 2026")])]),c("li",{class:"flex items-start gap-2"},[c("span",{class:"mt-1.5 shrink-0 w-1.5 h-1.5 rounded-full bg-brand-500"}),c("span",null,[c("strong",null,"Publicity Chair:"),c("a",{href:"https://arabicnlp2025.sigarab.org",target:"_blank",rel:"noopener noreferrer",class:"text-brand-600 dark:text-brand-400 hover:underline"}," ArabicNLP 2025"),K(" co-located with "),c("a",{href:"https://2025.aclweb.org",target:"_blank",rel:"noopener noreferrer",class:"text-brand-600 dark:text-brand-400 hover:underline"}," ACL 2025")])]),c("li",{class:"flex items-start gap-2"},[c("span",{class:"mt-1.5 shrink-0 w-1.5 h-1.5 rounded-full bg-brand-500"}),c("span",null,[c("strong",null,"Social Chair:"),c("a",{href:"https://arabicnlp2024.sigarab.org",target:"_blank",rel:"noopener noreferrer",class:"text-brand-600 dark:text-brand-400 hover:underline"}," ArabicNLP 2024"),K(" co-located with "),c("a",{href:"https://2024.aclweb.org",target:"_blank",rel:"noopener noreferrer",class:"text-brand-600 dark:text-brand-400 hover:underline"}," ACL 2024")])]),c("li",{class:"flex items-start gap-2"},[c("span",{class:"mt-1.5 shrink-0 w-1.5 h-1.5 rounded-full bg-brand-500"}),c("span",null,[c("strong",null,"Co-Organizer:"),c("a",{href:"https://llm-cognition.github.io",target:"_blank",rel:"noopener noreferrer",class:"text-brand-600 dark:text-brand-400 hover:underline"}," LLMs and Cognition Workshop"),K(" co-located with "),c("a",{href:"https://icml.cc/Conferences/2024",target:"_blank",rel:"noopener noreferrer",class:"text-brand-600 dark:text-brand-400 hover:underline"}," ICML 2024")])])],-1)])]),_:1}),O(Ne,{delay:100},{default:Me(()=>[r[2]||(r[2]=c("h3",{class:"text-lg font-serif font-semibold text-ink-800 dark:text-dark-text mb-3"}," Journals ",-1)),c("ul",qu,[(m(!0),w(Y,null,fe(G(t).journals,i=>(m(),w("li",{key:i.name,class:"flex items-start gap-2"},[r[1]||(r[1]=c("span",{class:"mt-1.5 shrink-0 w-1.5 h-1.5 rounded-full bg-brand-500"},null,-1)),c("span",null,[c("a",{href:i.link,target:"_blank",rel:"noopener noreferrer",class:"text-brand-600 dark:text-brand-400 hover:underline"},W(i.name),9,Yu),O(or,{role:i.role},null,8,["role"])])]))),128))])]),_:1}),O(Ne,{delay:200},{default:Me(()=>[r[4]||(r[4]=c("h3",{class:"text-lg font-serif font-semibold text-ink-800 dark:text-dark-text mb-3"}," Conferences ",-1)),c("ul",Zu,[(m(!0),w(Y,null,fe(G(t).conferences,i=>(m(),w("li",{key:i.name,class:"flex items-start gap-2"},[r[3]||(r[3]=c("span",{class:"mt-1.5 shrink-0 w-1.5 h-1.5 rounded-full bg-brand-500"},null,-1)),c("span",null,[c("a",{href:i.link,target:"_blank",rel:"noopener noreferrer",class:"text-brand-600 dark:text-brand-400 hover:underline"},W(i.name),9,Qu),O(or,{role:i.role},null,8,["role"])])]))),128))])]),_:1}),O(Ne,{delay:300},{default:Me(()=>[r[6]||(r[6]=c("h3",{class:"text-lg font-serif font-semibold text-ink-800 dark:text-dark-text mb-3"}," Workshops ",-1)),c("ul",Xu,[(m(!0),w(Y,null,fe(G(t).workshops,i=>(m(),w("li",{key:i.name+i.conference,class:"flex items-start gap-2"},[r[5]||(r[5]=c("span",{class:"mt-1.5 shrink-0 w-1.5 h-1.5 rounded-full bg-brand-500"},null,-1)),c("span",null,[c("a",{href:i.link,target:"_blank",rel:"noopener noreferrer",class:"text-brand-600 dark:text-brand-400 hover:underline"},W(i.name),9,eh),c("span",th," @ "+W(i.conference),1),O(or,{role:i.role},null,8,["role"])])]))),128))])]),_:1})])]))}}),rh={class:"bg-mesh min-h-screen"},ih={class:"max-w-6xl mx-auto px-4 pt-24 space-y-16 pb-28"},sh={class:"fixed bottom-6 left-1/2 -translate-x-1/2 z-40"},ah={class:"flex items-center gap-1 px-3 py-2 rounded-2xl bg-white/80 dark:bg-dark-surface/80 backdrop-blur-md border border-ink-200/60 dark:border-dark-border/60 shadow-lg"},oh=pe({__name:"App",setup(e){const{initTheme:t}=ta(),{activeSection:n}=jl(["hero","publications","talks","projects","experience","awards","people","service"]);return Ot(()=>{t()}),(r,i)=>(m(),w("div",rh,[O(ic,{activeSection:G(n)},null,8,["activeSection"]),O(Ac),c("main",ih,[O(zc),O(Ld),O(jd),O(tu),O(bu),O(Ru),O(ju),O(nh)]),O(lc),c("div",sh,[c("div",ah,[O(Kr,{size:"sm"})])])]))}});Dl(oh).mount("#app");
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.