pipeup 0.9.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- function e(e){let t="";for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function t(e){let t=atob(e.replace(/-/g,"+").replace(/_/g,"/")),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}function n(e){return(new TextEncoder).encode(e)}function o(e){if(null===e||"object"!=typeof e)return JSON.stringify(e);if(Array.isArray(e))return"["+e.map(o).join(",")+"]";let t=e;return"{"+Object.keys(t).filter(e=>void 0!==t[e]).sort().map(e=>JSON.stringify(e)+":"+o(t[e])).join(",")+"}"}function r(e){return e.replace(/\s+/g," ").trim()}function i(e){let t=r(e),n=2166136261;for(let e=0;e<t.length;e++)n^=t.charCodeAt(e),n=Math.imul(n,16777619)>>>0;return n.toString(16).padStart(8,"0")}var a=/^[A-Za-z0-9_-]{43}$/,l=new Map;async function s(){let t=await crypto.subtle.generateKey({name:"Ed25519"},!1,["sign","verify"]);return{publicKey:e(new Uint8Array(await crypto.subtle.exportKey("raw",t.publicKey))),privateKey:t.privateKey}}async function d(t,n){let o=await crypto.subtle.sign({name:"Ed25519"},t.privateKey,n);return e(new Uint8Array(o))}var c=["Otter","Fox","Owl","Bear","Rabbit"],p=["Red","Orange","Yellow","Green","Teal","Blue","Purple","Pink","Brown","Grey"];function u(e){let t=2166136261;for(let n=0;n<e.length;n++)t=Math.imul(t^e.charCodeAt(n),16777619);return t=Math.imul(t^t>>>16,2246822507),t=Math.imul(t^t>>>13,3266489909),(t^t>>>16)>>>0}var h=e=>u(e)%c.length,f=e=>Math.floor(u(e)/c.length)%p.length,m=e=>`${p[f(e)]} ${c[h(e)]}`,g=e=>{let t=e.name.replace(/^AI assistant \xb7 /,"")||m(e.author);return e.alike?`${t} \xb7 ${function(e){let t=u(`id:${e}`),n="";for(let e=0;e<4;e++,t>>>=5)n+="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[31&t];return n}(e.author)}`:t},v="AI assistant",w=e=>e===v||e.startsWith(`${v} `),y=e=>`${v} \xb7 ${e.replace(/\s+/g," ").trim()||"Agent"}`.slice(0,80).trim(),b=(e,t)=>e.name.startsWith(`${v} \xb7 `)&&!t.includes(e.author),x=2**40,k=2**47,E=1e4,S=200,$=/^[0-9a-f]{8}$/,L=/^[A-Za-z0-9_-]{43}$/,M=/^(?:[^\s@<>"]{1,64}@[^\s@<>"]{1,190}\.[^\s@<>"]{2,24}|gh:[A-Za-z0-9-]{1,39})$/,C=/^(?:[A-Za-z0-9_-]{43}|(?:host|gh):[A-Za-z0-9._@-]{1,64})$/,A=/^[A-Za-z0-9_-]{43}$/,T=new Set(["create","reply","edit","delete","resolve","reopen","addressed","react","unreact","seen","contact","uncontact"]),P=/^(?:\p{Regional_Indicator}{2}|[#*0-9]\uFE0F?\u20E3|\p{Extended_Pictographic}(?:\uFE0F|\p{Emoji_Modifier})?(?:\u200D\p{Extended_Pictographic}(?:\uFE0F|\p{Emoji_Modifier})?)*)$/u,q=e=>"string"==typeof e&&P.test(e)&&[...e].length<=16;async function N(e,t){if(e.author!==t.publicKey)throw new Error("pipeup: an op must be signed by its author");return{body:e,sig:await d(t,n(o(e)))}}var R=(e,t)=>"string"==typeof e&&e.length<=t,D=e=>!!e&&"object"==typeof e,z=e=>"number"==typeof e&&Number.isFinite(e)&&e>=0&&e<=1;function H(e){if(!D(e))return!1;let{id:t,path:n,fingerprint:o,snapshot:r,quote:i,point:a,view:l}=e;if(!(R(n,2e3)&&R(r,500)&&"string"==typeof o&&$.test(o)&&(void 0===t||R(t,200)&&""!==t)&&(void 0===i||D(i)&&R(i.exact,E)&&""!==i.exact&&R(i.prefix,64)&&R(i.suffix,64))&&(void 0===a||D(a)&&z(a.x)&&z(a.y))))return!1;if(void 0!==l){if(!D(l)||Array.isArray(l))return!1;let e=Object.entries(l);if(e.length>16||!e.every(([e,t])=>e.length<=64&&R(t,S)))return!1}return!0}function O(e){if(!D(e))return!1;let{body:t,sig:n}=e;if("string"!=typeof n||!D(t)||JSON.stringify({body:t,sig:n}).length>262144)return!1;let o=t;if(1!==o.v||"string"!=typeof o.id||!L.test(o.id)||!T.has(o.kind)||!R(o.doc,64)||""===o.doc||"string"!=typeof o.thread||!L.test(o.thread)||"string"!=typeof o.author||!A.test(o.author)||"string"!=typeof o.name||o.name.length>80||o.name!==o.name.trim()||"number"!=typeof o.clock||!Number.isSafeInteger(o.clock)||o.clock<1||o.clock>x||"number"!=typeof o.at||!Number.isSafeInteger(o.at)||o.at<0||o.at>k||void 0!==o.text&&(!R(o.text,1e4)||o.text!==o.text.trim())||void 0!==o.target&&("string"!=typeof o.target||!L.test(o.target))||("create"===o.kind||"reply"===o.kind||"edit"===o.kind||"addressed"===o.kind)&&!o.text||("reply"===o.kind||"edit"===o.kind||"delete"===o.kind)&&!o.target)return!1;if(void 0!==o.mentions){if("create"!==o.kind&&"reply"!==o.kind&&"edit"!==o.kind||!Array.isArray(o.mentions)||o.mentions.length>20)return!1;let e=o.text?.length??0;for(let t of o.mentions){if(!D(t)||!Number.isSafeInteger(t.start)||!Number.isSafeInteger(t.end))return!1;let{start:n,end:o,ref:r}=t;if(n<0||o<=n||o>e||"string"!=typeof r||!C.test(r))return!1}}return!(!("contact"!==o.kind||"string"==typeof o.text&&M.test(o.text))||"seen"===o.kind&&!o.target||!("react"!==o.kind&&"unreact"!==o.kind||o.target&&q(o.text))||!("create"!==o.kind||o.id===o.thread&&H(o.anchor)))}function F(r){return async function(n,o,r){if(!a.test(n))return!1;try{if(e(t(n))!==n)return!1;let i=l.get(n);if(!i){l.size>=512&&l.delete(l.keys().next().value),i=crypto.subtle.importKey("raw",t(n),{name:"Ed25519"},!0,["verify"]),l.set(n,i);let e=i;e.catch(()=>{l.get(n)===e&&l.delete(n)})}return await crypto.subtle.verify({name:"Ed25519"},await i,t(r),o)}catch{return!1}}(r.body.author,n(o(r.body)),r.sig)}async function I(e){return O(e)&&await F(e).catch(()=>!1)}function B(e,t){return e.body.clock!==t.body.clock?e.body.clock-t.body.clock:e.body.at!==t.body.at?e.body.at-t.body.at:e.body.author!==t.body.author?e.body.author<t.body.author?-1:1:e.body.id!==t.body.id?e.body.id<t.body.id?-1:1:0}function j(e,t,n,o,r,i){let a={id:e,author:t,name:n,text:o,at:r,edited:!1,deleted:!1,replies:[],reactions:[]};return i?.length&&(a.mentions=i),a}async function W(t){let r={...t,id:void 0,thread:"create"===t.kind?void 0:t.thread},i=await crypto.subtle.digest("SHA-256",n(o(r)));return e(new Uint8Array(i))}var K=class{constructor(e){this.doc=e}ops=new Map;clock=0;createAt=new Map;threadAt=new Map;get size(){return this.ops.size}all(){return[...this.ops.values()]}threads(){return function(e){let t=new Map,n=new Map,o=new Map;for(let{body:r}of[...e].sort(B)){if(r.name&&!w(r.name)&&o.set(r.author,r.name),"create"===r.kind){if(t.has(r.id)||!r.anchor||void 0===r.text)continue;let e=j(r.id,r.author,r.name,r.text,r.at,r.mentions);t.set(r.id,{id:r.id,anchor:r.anchor,root:e,resolved:!1}),n.set(r.id,{comment:e,thread:r.id});continue}let e=t.get(r.thread);if(!e)continue;if("resolve"===r.kind||"reopen"===r.kind){e.resolved="resolve"===r.kind,"reopen"===r.kind&&delete e.addressed;continue}if("addressed"===r.kind){void 0!==r.text&&(e.addressed={text:r.text,author:r.author,name:r.name,at:r.at});continue}let i=r.target?n.get(r.target):void 0;if(i&&i.thread===r.thread){if("reply"===r.kind){if(n.has(r.id)||void 0===r.text)continue;let t=j(r.id,r.author,r.name,r.text,r.at,r.mentions);e.root.replies.push(t),n.set(r.id,{comment:t,thread:r.thread});continue}if("seen"===r.kind){let e=i.comment.seenBy??=[];e.includes(r.author)||e.push(r.author);continue}if("react"===r.kind||"unreact"===r.kind){if(void 0===r.text||i.comment.deleted)continue;let e=i.comment.reactions,t=e.find(e=>e.emoji===r.text);if("react"===r.kind){let n={author:r.author,name:r.name};t?t.by.some(e=>e.author===r.author)||t.by.push(n):e.length<12&&e.push({emoji:r.text,by:[n]})}else t&&(t.by=t.by.filter(e=>e.author!==r.author),t.by.length||e.splice(e.indexOf(t),1));continue}r.author!==i.comment.author||i.comment.deleted||("edit"===r.kind&&void 0!==r.text&&(i.comment.text=r.text,i.comment.edited=!0,r.mentions?i.comment.mentions=r.mentions:delete i.comment.mentions),"delete"===r.kind&&(i.comment.text="",i.comment.deleted=!0,i.comment.reactions=[],delete i.comment.mentions))}}for(let{comment:e}of n.values()){e.name||(e.unnamed=!0,e.name=o.get(e.author)??"");for(let t of e.reactions)for(let e of t.by)e.name||=o.get(e.author)??""}let r=new Map,i=(e,t)=>{let n=g({author:e,name:t}).toLowerCase();(r.get(n)??r.set(n,new Set).get(n)).add(e)};for(let{comment:e}of n.values()){i(e.author,e.name);for(let t of e.reactions)for(let e of t.by)i(e.author,e.name)}let a=(e,t)=>!w(t)&&(r.get(g({author:e,name:t}).toLowerCase())?.size??0)>1;for(let{comment:e}of n.values()){a(e.author,e.name)&&(e.alike=!0);for(let t of e.reactions)for(let e of t.by)a(e.author,e.name)&&(e.alike=!0)}return[...t.values()]}(this.ops.values())}async add(e){let t=[];for(let n of e){if(!O(n)||n.body.doc!==this.doc||this.ops.has(n.body.id)||n.body.id!==await W(n.body)||!await F(n))continue;let e={body:n.body,sig:n.sig};this.ops.set(e.body.id,e),this.clock=Math.max(this.clock,e.body.clock),"create"===e.body.kind&&this.createAt.set(e.body.author,Math.max(this.createAt.get(e.body.author)??0,e.body.at)),this.threadAt.set(e.body.thread,Math.max(this.threadAt.get(e.body.thread)??0,e.body.at)),t.push(e)}return t}async append(e,t,n){let o={v:1,...n,id:"",thread:"create"===n.kind?"":n.thread,doc:this.doc,author:e.publicKey,name:t,clock:Math.min(this.clock+1,x),at:Math.min(Math.max(Date.now(),"create"===n.kind?(this.createAt.get(e.publicKey)??0)+1:(this.threadAt.get(n.thread)??0)+1),k)};o.id=await W(o);let r=this.ops.get(o.id);if(r)return r;"create"===o.kind&&(o.thread=o.id);let[i]=await this.add([await N(o,e)]);if(!i)throw new Error("pipeup: could not record this change");return i}},V=/^([A-Za-z0-9_-]{16}):([A-Za-z0-9_-]{43})$/;function U(){return`${function(t=16){return e(crypto.getRandomValues(new Uint8Array(t)))}(12)}:${e(crypto.getRandomValues(new Uint8Array(32)))}`}async function Y(e){let n=V.exec(e.trim()),o=n?.[1],r=n?.[2];if(!o||!r)throw new Error('pipeup: data-pipeup-doc must look like "<id>:<key>", as made by newDocumentAttribute()');return{id:o,key:await crypto.subtle.importKey("raw",t(r),{name:"AES-GCM"},!1,["encrypt","decrypt"])}}async function _(t,o,r){let i=crypto.getRandomValues(new Uint8Array(12)),a=await crypto.subtle.encrypt({name:"AES-GCM",iv:i,additionalData:n(r)},t,n(o));return{iv:e(i),data:e(new Uint8Array(a))}}var G=e=>`pipeup-file:${e}`;async function Z(e,o,r){if(e.length>5e6)throw new Error("pipeup: this feedback file is too large");let i,a,l;try{i=JSON.parse(e)}catch{throw new Error("pipeup: this is not an Pipeup feedback file")}if(!i||"object"!=typeof i||1!==i.pipeup||"string"!=typeof i.doc)throw new Error("pipeup: this is not an Pipeup feedback file");if(i.doc!==o)throw new Error("pipeup: this feedback is for a different document");if(!i.sealed)return Array.isArray(i.ops)?i.ops:[];if(!r)throw new Error("pipeup: this feedback is sealed, and this page has no document key");if("string"!=typeof i.iv||"string"!=typeof i.data)throw new Error("pipeup: this is not an Pipeup feedback file");try{a=await async function(e,o,r){try{let i=await crypto.subtle.decrypt({name:"AES-GCM",iv:t(o.iv),additionalData:n(r)},e,t(o.data));return(new TextDecoder).decode(i)}catch{throw new Error("pipeup: this feedback could not be opened with this document")}}(r,{iv:i.iv,data:i.data},G(o))}catch{throw new Error("pipeup: this feedback could not be opened with this document's key")}try{l=JSON.parse(a)}catch{throw new Error("pipeup: this is not an Pipeup feedback file")}return Array.isArray(l)?l:[]}var J=/^[a-z][a-z0-9-]{1,23}\/[a-z][a-z0-9-]{0,31}$/,X=class extends Error{constructor(e,t,n=1){super("pipeup: shown here, but not saved yet"),this.id=e,this.cause=t,this.count=n,this.name="UnsavedChangeError"}},Q=class e{constructor(e,t){this.log=e,this.options=t,this.displayName=t.name.trim()?ne(t.name):""}listeners=new Set;cache=[];comments=new Map;displayName;Ee=Promise.resolve();unsaved=[];static async open(t){if("string"!=typeof t.doc||""===t.doc||t.doc.length>64)throw new Error("pipeup: the document id must be 1 to 64 characters");let n=new K(t.doc),o=await t.store.load(t.doc),r=o.length-(await n.add(o)).length;r&&console.warn(`pipeup: ${r} saved change${1===r?"":"s"} on this page couldn't be read; kept as saved`);let i=new e(n,t);return i.refresh(!1),i}get id(){return this.options.doc}get me(){return this.options.identity.publicKey}get name(){return this.displayName}set name(e){this.displayName=ne(e),this.refresh(!0,[],"")}threads(){return this.cache}ops(){return this.log.all()}onChange(e){return this.listeners.add(e),()=>this.listeners.delete(e)}comment(e,t,n){return this.enqueue(()=>this.write({kind:"create",anchor:e,text:ee(t),...n?.length?{mentions:n}:{}}))}reply(e,t,n){return this.enqueue(()=>this.write({kind:"reply",thread:this.find(e).thread,target:e,text:ee(t),...n?.length?{mentions:n}:{}}))}edit(e,t,n){return this.enqueue(async()=>{let{thread:o}=this.mine(e);await this.write({kind:"edit",thread:o,target:e,text:ee(t),...n?.length?{mentions:n}:{}})})}remove(e){return this.enqueue(async()=>{let{thread:t}=this.mine(e);await this.write({kind:"delete",thread:t,target:e})})}contact(e){let t=e.trim();return M.test(t)?this.enqueue(async()=>{await this.write({kind:"contact",thread:this.me,text:t})}):Promise.reject(new Error("pipeup: that isn't an email address or a GitHub name"))}uncontact(){return this.enqueue(async()=>{await this.write({kind:"uncontact",thread:this.me})})}contacts(){let e=new Map;for(let{body:t}of[...this.log.all()].sort(B))"contact"===t.kind&&t.text?e.set(t.author,t.text):"uncontact"===t.kind&&e.delete(t.author);return e}get portable(){return this.options.identity.privateKey.extractable}async seed(){let e=this.options.identity.privateKey;if(!e.extractable)return null;let{d:n}=await crypto.subtle.exportKey("jwk",e);return n?t(n):null}seen(e){return this.enqueue(async()=>{for(let t of e){let e=this.comments.get(t);e&&!e.comment.seenBy?.includes(this.me)&&await this.write({kind:"seen",thread:e.thread,target:t})}})}react(e,t){return this.enqueue(async()=>{await this.write({kind:"react",thread:this.find(e).thread,target:e,text:te(t)})})}unreact(e,t){return this.enqueue(async()=>{await this.write({kind:"unreact",thread:this.find(e).thread,target:e,text:te(t)})})}resolve(e){return this.enqueue(async()=>{await this.write({kind:"resolve",thread:this.thread(e)})})}reopen(e){return this.enqueue(async()=>{await this.write({kind:"reopen",thread:this.thread(e)})})}paste(e,t,n,o){return this.enqueue(async()=>{let r=this.thread(e),i=y(t),a=this.cache.find(e=>e.id===r).root.id;await this.write({kind:"reply",thread:r,target:a,text:ee(n)},i),o?.trim()&&await this.write({kind:"addressed",thread:r,text:ee(o)},i)})}sign(e,t){if(!J.test(e))throw new Error('pipeup: a signing purpose looks like "<add-on id>/<name>"');return d(this.options.identity,n(`pipeup:${e}\n${t}`))}flush(){return this.enqueue(()=>this.persist())}exportFile(){return async function(e,t,n){let o=n?{pipeup:1,doc:e,sealed:!0,...await _(n,JSON.stringify(t),G(e))}:{pipeup:1,doc:e,sealed:!1,ops:t};return JSON.stringify(o,null,2)}(this.options.doc,this.log.all(),this.options.key)}async importFile(e){return this.merge(await Z(e,this.options.doc,this.options.key),"file")}merge(e,t){return e.length>5e3?Promise.reject(new RangeError("pipeup: too many changes to merge at once")):this.enqueue(async()=>{let n=await this.log.add([...e]);this.unsaved.push(...n),n.length>0&&this.refresh(!0,n,t);try{await this.persist()}catch(e){throw n.length>0?new X(n[0].body.id,e,n.length):e}return n.length})}enqueue(e){let t=this.Ee.then(e);return this.Ee=t.catch(()=>{}),t}async write(e,t=this.displayName){let n=await this.log.append(this.options.identity,t,e);this.unsaved.push(n),this.refresh(!0,[n],"local");try{await this.persist()}catch(e){throw new X(n.body.id,e)}return n.body.id}async persist(){if(0===this.unsaved.length)return;let e=[...this.unsaved];await this.options.store.append(this.options.doc,e),this.unsaved=this.unsaved.filter(t=>!e.includes(t))}refresh(e,t=[],n=""){this.cache=this.log.threads(),this.comments.clear();let o=(e,t)=>{e.unnamed&&e.author===this.me&&this.displayName&&(e.name=this.displayName),this.comments.set(e.id,{comment:e,thread:t});for(let n of e.replies)o(n,t)};for(let e of this.cache)o(e.root,e.id);if(e)for(let e of this.listeners)try{e(this.cache,t,n)}catch(e){globalThis.reportError?.(e)}}find(e){let t=this.comments.get(e);if(!t)throw new Error("pipeup: there is no comment with that id");return t}mine(e){let t=this.find(e);if(t.comment.author!==this.me)throw new Error("pipeup: only the writer can change a comment");return t}thread(e){if(!this.cache.some(t=>t.id===e))throw new Error("pipeup: there is no thread with that id");return e}};function ee(e){let t=e.trim();if(!t)throw new Error("pipeup: a comment needs some words");if(t.length>1e4)throw new Error("pipeup: comments are limited to 10000 characters");return t}function te(e){if(!q(e))throw new Error("pipeup: a reaction is one emoji");return e}function ne(e){let t=e.replace(/\s+/g," ").trim();if(!t||t.length>80)throw new Error("pipeup: choose a name of 1 to 80 characters");if(w(t))throw new Error("pipeup: that name is kept for AI replies; choose another");return t}var oe=class{docs=new Map;profile=null;async load(e){return[...this.docs.get(e)?.values()??[]]}async append(e,t){let n=this.docs.get(e);n||this.docs.set(e,n=new Map);for(let e of t)n.set(e.body.id,e)}async loadProfile(){return this.profile}async saveProfile(e){this.profile=e}async saveProfileIfAbsent(e){return this.profile||(this.profile=e),this.profile}},re="";async function ie(e,t=""){let n=await e.loadProfile();if(n)return"Reviewer"===n.name?{...n,name:""}:n;let o={identity:await s(),name:t};return e.saveProfileIfAbsent(o)}var ae=class e{constructor(e){this.db=e}static open(t="pipeup"){return new Promise((n,o)=>{let r=indexedDB.open(t,1);r.onupgradeneeded=()=>{let e=r.result;e.createObjectStore("ops",{keyPath:["doc","id"]}).createIndex("doc","doc"),e.createObjectStore("meta")},r.onsuccess=()=>{let t=r.result;t.onversionchange=()=>t.close(),n(new e(t))},r.onerror=()=>o(r.error??new Error("pipeup: could not open local storage"))})}close(){this.db.close()}async load(e){return(await this.request("ops","readonly",t=>t.index("doc").getAll(e))).map(e=>e.op)}async append(e,t){if(0===t.length)return;let n=this.db.transaction("ops","readwrite"),o=n.objectStore("ops"),r=le(n);try{for(let n of t)o.put({doc:e,id:n.body.id,op:n})}catch(e){throw n.abort(),r.catch(()=>{}),e}await r}async loadProfile(){return await this.request("meta","readonly",e=>e.get("profile"))??null}async saveProfile(e){await this.request("meta","readwrite",t=>t.put(e,"profile"))}async saveProfileIfAbsent(e){let t=this.db.transaction("meta","readwrite"),n=t.objectStore("meta"),o=le(t),r=e,i=n.get("profile");return i.onsuccess=()=>{i.result?r=i.result:n.put(e,"profile")},await o,r}request(e,t,n){return new Promise((o,r)=>{let i=n(this.db.transaction(e,t).objectStore(e));i.onsuccess=()=>o(i.result),i.onerror=()=>r(i.error??new Error("pipeup: local storage request failed"))})}};function le(e){return new Promise((t,n)=>{e.oncomplete=()=>t(),e.onerror=()=>n(e.error??new Error("pipeup: local storage write failed")),e.onabort=()=>n(e.error??new Error("pipeup: local storage write aborted"))})}function se(e){let t=(e.ownerDocument??e).createTreeWalker(e,NodeFilter.SHOW_TEXT),n=[],o="";for(let e=t.nextNode();e;e=t.nextNode())n.push({node:e,start:o.length}),o+=e.data;return{text:o,nodes:n}}function de(e,t,n){let o=(e.ownerDocument??e).createRange();return o.setStart(e,0),o.setEnd(t,n),o.toString().length}function ce(e,t,n){let o=pe(e,t,!1),r=pe(e,n,!0);if(!o||!r||n<t)return null;let i=o.node.ownerDocument.createRange();return i.setStart(o.node,o.offset),i.setEnd(r.node,r.offset),i}function pe(e,t,n){let o=e.nodes.find(e=>t>=e.start&&t<e.start+e.node.data.length+Number(n));return o&&{node:o.node,offset:t-o.start}}function ue(e){return e.nodeType===Node.ELEMENT_NODE?e:e.parentElement}function he(e,t){for(let n=ue(e)?.closest("[data-pipeup-id]")??null;n;){if(!t.contains(n))return null;let e=n.getAttribute("data-pipeup-id")??"";if(""!==e&&e.length<=200)return n;n=n.parentElement?.closest("[data-pipeup-id]")??null}return null}function fe(e,t,n){return e.slice(t,n).replace(/^[\uDC00-\uDFFF]|[\uD800-\uDBFF]$/g,"")}function me(e,t){let n=function(e,t){if(e===t)return"";let n=[];for(let o=t;o&&o!==e;o=o.parentElement){let e=1;for(let t=o.previousElementSibling;t;t=t.previousElementSibling)t.tagName===o.tagName&&e++;n.unshift(`${o.tagName.toLowerCase()}:nth-of-type(${e})`)}return":scope > "+n.join(" > ")}(e,t);if(n.length>2e3)throw new Error("pipeup: this element is nested too deeply to comment on \u2014 give a nearby container a data-pipeup-id");return n}function ge(e){if(!H(e))throw new Error("pipeup: could not describe this place on the page");return e}function ve(e,t){let n=ue(e),o=n?.closest("p,li,h1,h2,h3,h4,h5,h6,td,th,blockquote,pre,figcaption,dt,dd,summary,caption")??null;return o&&t.contains(o)?o:n&&t.contains(n)?n:t}function we(e,t,n){if(!t.contains(e.commonAncestorContainer))throw new Error("pipeup: the selection is outside the commentable area");let o=he(e.commonAncestorContainer,t),a=o??t,{text:l}=se(a),s=de(a,e.startContainer,e.startOffset),d=de(a,e.endContainer,e.endOffset),c=l.slice(s,d);if(""===c)throw new Error("pipeup: select some text to comment on");if(c.length>E)throw new Error("pipeup: selections are limited to 10000 characters");let p=fe(l,Math.max(0,s-32),s),u=fe(l,d,d+32);return ge({...o?{id:o.getAttribute("data-pipeup-id")??""}:{},path:"",quote:{exact:c,prefix:p,suffix:u},...n?{view:n}:{},fingerprint:i(ve(e.startContainer,t).textContent??""),snapshot:fe(r(p+c+u),0,200)})}function ye(e,t,n,o){let a=he(e,t);return ge({...a?{id:a.getAttribute("data-pipeup-id")??""}:{},path:me(a??t,e),...n?{point:{x:be(n.x),y:be(n.y)}}:{},...o?{view:o}:{},fingerprint:i(e.textContent??""),snapshot:fe(r(e.textContent??""),0,200)})}function be(e){return Number.isFinite(e)?Math.min(1,Math.max(0,e)):0}function xe(e,t,n){let o=Array.from({length:t.length+1},(e,t)=>t),r=[...o],i=[t.length];for(let a=1;a<=e.length;a++){r[0]=n?0:a;for(let n=1;n<=t.length;n++){let i=e.charCodeAt(a-1)===t.charCodeAt(n-1)?0:1;r[n]=Math.min(o[n]+1,r[n-1]+1,o[n-1]+i)}i.push(r[t.length]),[o,r]=[r,o]}return i}var ke=(e,t)=>xe(e,t,!1).pop(),Ee={state:"orphaned",element:null,range:null};function Se(e,t,n={}){let o=e.id?function(e,t){for(let n of e.querySelectorAll("[data-pipeup-id]"))if(n.getAttribute("data-pipeup-id")===t)return n;return null}(t,e.id):t;return e.quote?function(e,t,n,o,r){let a=n??o,l=se(a),s=function(e,t){if(!t.exact)return-1;let n=-1,o=-1;for(let r=e.indexOf(t.exact);-1!==r;r=e.indexOf(t.exact,r+1)){let i=e.slice(Math.max(0,r-t.prefix.length),r),a=e.slice(r+t.exact.length,r+t.exact.length+t.suffix.length),l=Le(i,t.prefix)+$e(a,t.suffix);l>o&&(n=r,o=l)}return n}(l.text,t);if(s>=0){let r=ce(l,s,s+t.exact.length);if(r){let t=ve(r.startContainer,o);return{state:null!==n&&i(t.textContent??"")===e.fingerprint?"attached":"moved",element:t,range:r}}}if(r){let e=a===o?l:se(o);if(e.text.length<=5e4&&t.exact.length>=12&&t.exact.length<=300){let n=function(e,t,n){let o=t.length;if(0===o)return null;let r=-1,i=1/0;if(xe(e,t,!0).forEach((e,t)=>{t&&e<i&&(i=e,r=t)}),i>n)return null;let a=Math.max(0,r-o),l=1/0;for(let i=Math.max(0,r-o-n);i<=Math.min(r,r-o+n);i++){let n=ke(e.slice(i,r),t);n<l&&(l=n,a=i)}return{start:a,end:r,distance:l}}(e.text,t.exact,Math.floor(t.exact.length/4)),r=n?ce(e,n.start,n.end):null;if(r)return{state:"moved",element:ve(r.startContainer,o),range:r}}}return Ee}(e,e.quote,o,t,!1!==n.fuzzy):function(e,t){if(!t)return Ee;let n=t;if(e.path){if(!e.path.startsWith(":scope > "))return Ee;try{n=t.querySelector(e.path)}catch{return Ee}}return n?{state:i(n.textContent??"")===e.fingerprint?"attached":"moved",element:n,range:null}:Ee}(e,o)}function $e(e,t){let n=0;for(;n<e.length&&n<t.length&&e[n]===t[n];)n++;return n}function Le(e,t){let n=0;for(;n<e.length&&n<t.length&&e[e.length-1-n]===t[t.length-1-n];)n++;return n}var Me={A:"Link",BUTTON:"Button",P:"Paragraph",LI:"List item",UL:"List",OL:"List",IMG:"Image",TABLE:"Table",TD:"Cell",TH:"Cell",FIGURE:"Figure",SVG:"Graphic",CANVAS:"Graphic",LABEL:"Label",INPUT:"Field",SELECT:"Dropdown",TEXTAREA:"Field",SUMMARY:"Disclosure",BLOCKQUOTE:"Quote",SECTION:"Section",ARTICLE:"Article",H1:"Heading",H2:"Heading",H3:"Heading",H4:"Heading",H5:"Heading",H6:"Heading",switch:"Switch",tab:"Tab",checkbox:"Checkbox",radio:"Radio button",button:"Button",submit:"Button",link:"Link"};function Ce(e){let t=e.getAttribute("role")??("INPUT"===e.tagName?e.type:""),n=e.getAttribute("data-pipeup-label")||Object.hasOwn(Me,t)&&Me[t]||Me[e.tagName.toUpperCase()];if(n)return n;if(Te(e))return"Block";let o=e.getBoundingClientRect(),r=o.width/o.height;return r>1.4||r<.7?"Bar":"Shape"}var Ae=e=>e.innerText||e.textContent||"";function Te(e){let t=e,n=t.labels?.[0];return ze(r(e.getAttribute("aria-label")??e.getAttribute("alt")??(n&&Ae(n))??("SELECT"===e.tagName?t.selectedOptions[0]?.text:null)??(t.placeholder||Ae(e))),40)}function Pe(e){let t=e.getAttribute("data-pipeup-label");if(t)return t;let n=e.getAttribute("data-pipeup-ask");if(n)return`Ask "${n}"`;let o=Te(e);return o?`${Ce(e)} \xb7 ${o}`:Ce(e)}function qe(e,t,n){let o=e.id??null,i=e.quote?.exact??null,a=e.point?`${Math.round(100*e.point.x)}% across, ${Math.round(100*e.point.y)}% down the element`:null,l=t.element;if("orphaned"===t.state||!l)return{where:`No longer on the page (it read: "${e.snapshot}")`,element:null,id:o,quote:i,pin:a};let s=[],d=e.view?.slide;if(d){let e=l.closest("[data-pipeup-slide],.reveal .slides section")?.querySelector(De)?.textContent;s.push(`Slide ${d}`+(e?` "${ze(r(e))}"`:""))}else{let t=Re(e.view);t&&s.push(t);let o=function(e,t){let n=e=>!1!==e.checkVisibility?.(),o=n(e),i=e=>r(e.textContent??"");for(let r=e;r&&r!==t;r=r.parentElement)for(let e=r.previousElementSibling;e;e=e.previousElementSibling){let t=e.matches(De)?e:[...e.querySelectorAll(De)].pop();if(t&&i(e)===i(t)&&(!o||n(t)))return t}return null}(l,n);o&&s.push(`Section "${ze(r(o.textContent??""))}"`)}let c=Pe(l);return s.push(c),{where:s.join(" \u203a "),element:c,id:o,within:!!o&&l.getAttribute("data-pipeup-id")!==o,quote:i,pin:a}}var Ne="pipeup-edition";function Re(e){return e?e.label||Object.entries(e).filter(([e,t])=>t&&"slide"!==e&&e!==Ne).map(([,e])=>e).join(" \xb7 "):""}var De="h1,h2,h3";function ze(e,t=60){return e.length>t?e.slice(0,t-1)+"\u2026":e}function He(e,t){let n=Math.max(0,Math.round((t-e)/1e3));if(n<60)return"just now";let o=Math.round(n/60);if(o<60)return`${o}m ago`;let r=Math.round(o/60);return r<48?`${r}h ago`:`${Math.round(r/24)}d ago`}function Oe(e,t,n,o){return"ai"===t?je(e,"## ",o,n):We(e)}function Fe(e,t,n){let o=n.all?e:e.filter(e=>!e.thread.resolved);if("text"===t)return o.map(We).join("\n");let r=e.filter(e=>e.thread.resolved).length,i=e.length-r,a=function(e){let t=[...new Set(e.flatMap(({thread:e})=>[e.root,...e.root.replies].map(e=>Be(g(e)))))],n=t.length>3?[...t.slice(0,2),t.length-2+" others"]:t;return n.length>1?`${n.slice(0,-1).join(", ")} and ${n.at(-1)}`:n[0]??""}(o),l=n.exportedAt.toUTCString(),s=[`# Comments on ${Be(n.title)}`,"",`${i||"No"} open comment${1===i?"":"s"}${n.all&&r?` and ${r} resolved`:""}${a?` from ${a}`:""}, copied ${l.slice(5,16).replace(/^0/,"")}, ${l.slice(17,22)} UTC.`+(n.all||!r?"":` ${r} resolved comment${1===r?" is":"s are"} left out.`),"",`Page: ${Be(n.url)}`,"",""].join("\n"),d=n.exportedAt.getTime();return s+o.map((e,t)=>je(e,`## ${t+1}. `,d)).join("\n")+(o.length?"\n---\n\nFor an AI assistant: work through the open comments in order and say what you changed, or why you didn't. Each one's last line gives the thread to answer and the element's data-pipeup-id in the page's HTML. Answer in the thread with Pipeup (its pipeup-apply skill says how) and mark it addressed; never resolve it, the author does.\n":"")}function Ie(e){return e.reactions.map(e=>`${e.emoji} ${e.by.length} (${e.by.map(e=>Be(g(e))).join(", ")})`).join(" \xb7 ")}function Be(e){return e.replace(/\s+/g," ").trim()}function je(e,t,n,o){let{thread:r,location:i}=e,a=[t+Be(i.where),""];o&&a.push(`Page: ${Be(o)}`,""),i.quote&&a.push(`On the words "${Be(i.quote)}".`,""),i.pin&&a.push(`Pinned ${Be(i.pin)}.`,""),a.push(`**${Be(g(r.root))}** (${He(r.root.at,n)}): ${Ke(r.root," ")}`),r.root.reactions.length&&a.push(`Reactions: ${Ie(r.root)}`);for(let e of r.root.replies)a.push(`- **${Be(g(e))}** (${He(e.at,n)}): ${Ke(e," ")}`),e.reactions.length&&a.push(` - Reactions: ${Ie(e)}`);r.addressed&&!r.resolved&&a.push("",`**${Be(g(r.addressed))}** marked it addressed (${He(r.addressed.at,n)}): ${Be(r.addressed.text)}`);let l=i.id?` \xb7 ${i.within?"in":"on"} \`data-pipeup-id="${Be(i.id.replace(/`/g,""))}"\``:"";return a.push("",`${r.resolved?"Resolved":r.addressed?"Open, addressed":"Open"} \xb7 thread \`${r.id}\`${l}`),a.join("\n")+"\n"}function We(e){let{thread:t,location:n}=e,o=[Be(n.where)+(n.quote?`, on the text "${Be(n.quote)}"`:""),`${Be(g(t.root))}: ${Ke(t.root," ")}`];t.root.reactions.length&&o.push(` Reactions: ${Ie(t.root)}`);for(let e of t.root.replies)o.push(` ${Be(g(e))}: ${Ke(e," ")}`),e.reactions.length&&o.push(` Reactions: ${Ie(e)}`);return o.join("\n")+"\n"}function Ke(e,t){return e.deleted?"(deleted)":e.text.replace(/\r\n|\r|\n/g,"\n"+t)+(e.edited?" (edited)":"")}function Ve(e,t){return{markdown:Fe(e,"ai",t),threads:e.filter(e=>t.all||!e.thread.resolved).map(({thread:e,location:t})=>{let n={id:e.id,state:e.resolved?"resolved":e.addressed?"addressed":"open",where:t.where,comments:[e.root,...e.root.replies].map(e=>({id:e.id,by:g(e),agent:w(e.name),at:new Date(e.at).toISOString(),text:e.deleted?"":e.text,...e.reactions.length?{reactions:e.reactions.map(e=>({emoji:e.emoji,by:e.by.map(g)}))}:{}}))};return t.id&&(n.element=t.id),t.quote&&(n.quote=t.quote),t.pin&&(n.pin=t.pin),e.addressed&&!e.resolved&&(n.addressed={note:e.addressed.text,by:g(e.addressed)}),n})}}var Ue="0.9.0",Ye="2026-10-31",_e=new Map,Ge=new Map,Ze=new Map,Je=new Map,Xe={},Qe=e=>{let t=`${_e.get(e.id)??""}|${Ge.get(e.id)??""}`;for(let n of[e.root,...e.root.replies]){let e=Je.get(n.id);e&&(t+=`|${n.id}:${e.text}:${e.tip??""}`)}return t};function et(e,t={},...n){let o=document.createElement(e);for(let[e,n]of Object.entries(t))void 0===n||!1===n||("class"===e?o.className=String(n):o.setAttribute(e,!0===n?"":n));for(let e of n)null!=e&&!1!==e&&o.append(e);return o}function tt(e,t){let n=e.getRootNode().activeElement;t&&n instanceof HTMLElement&&e.contains(n)&&n.blur(),e.inert=t}function nt(e,t,n=null){let o=e.getRootNode().activeElement,r=!1;for(let o=t.length;o--;n=t[o])t[o].nextSibling!==n&&(r=!!e.insertBefore(t[o],n));return r&&o&&t.some(e=>e.contains(o))&&o.focus({preventScroll:!0}),r}var ot=()=>{let e=window.getSelection();return e&&!e.isCollapsed&&e.toString().trim()?e:null};function rt(e,t){return e.length>t?e.slice(0,t-1)+"\u2026":e}function it(e,t,n=4){e.style.left=t.left-n+"px",e.style.top=t.top-n+"px",e.style.width=`${t.width+2*n}px`,e.style.height=`${t.height+2*n}px`}var at=/\bhttps?:\/\/[^\s<>"'`]+/gi,lt=/[\u202A-\u202E\u2066-\u2069]/;function st(e){let t=0,n=0;for(let o of e)"("===o?t++:")"===o&&n++;let o=e.length;for(;o>0;){let r=e[o-1];if(")"===r&&n>t)n--;else if(!".,;:!?'\"]}".includes(r))break;o--}return e.slice(0,o)}function dt(e){let t=[],n=0;for(let o of e.matchAll(at)){if(o[0].length>2048||lt.test(o[0]))continue;let r,i=st(o[0]),a=o.index??0;try{let e=new URL(i);if("http:"!==e.protocol&&"https:"!==e.protocol)continue;r=e.href}catch{continue}a>n&&t.push(e.slice(n,a));let l=et("a",{href:r,target:"_blank",rel:"noopener noreferrer"},i);l.addEventListener("click",e=>e.stopPropagation()),t.push(l),n=a+i.length}return n<e.length&&t.push(e.slice(n)),t}var ct="http://www.w3.org/2000/svg",pt={comment:["M20.5 11.5a8 8 0 0 1-11.7 7.1L4 19.8l1.2-4.4A8 8 0 1 1 20.5 11.5z","M12.3 8.2v6.6M9 11.5h6.6"],copy:["M10 8h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-8a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2z","M16 8V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2"],resolve:["M5 12.5l4.5 4.5L19 7.5"],reopen:["M3 12a9 9 0 1 0 3-6.7","M3 4v5h5"],lines:["M4 7h16M4 12h10M4 17h7"],list:["M3 6.5a1.5 1.5 0 1 0 3 0a1.5 1.5 0 1 0-3 0M3 12a1.5 1.5 0 1 0 3 0a1.5 1.5 0 1 0-3 0M3 17.5a1.5 1.5 0 1 0 3 0a1.5 1.5 0 1 0-3 0M9 6.5h11M9 12h11M9 17.5h7"],expand:["M5.5 10h7a1.5 1.5 0 0 1 1.5 1.5v7a1.5 1.5 0 0 1-1.5 1.5h-7A1.5 1.5 0 0 1 4 18.5v-7A1.5 1.5 0 0 1 5.5 10z","M14 10l6-6M15 4h5v5"],pin:["M12 21c-4-4-7-7.5-7-11a7 7 0 0 1 14 0c0 3.5-3 7-7 11z","M12 7.5a2.5 2.5 0 1 0 0 5a2.5 2.5 0 0 0 0-5z"],at:["M9.1 12a2.9 2.9 0 1 0 5.8 0a2.9 2.9 0 1 0-5.8 0","M14.9 12v1.1a1.8 1.8 0 0 0 3.6 0V12a6.5 6.5 0 1 0-3.97 5.98"],chev:["M9 6l6 6-6 6"],shrink:["M7 4h10a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H7a3 3 0 0 1-3-3V7a3 3 0 0 1 3-3z","M16 8l-7 7M9 10v5h5"],bubble:["M20.5 11.5a8 8 0 0 1-11.7 7.1L4 19.8l1.2-4.4A8 8 0 1 1 20.5 11.5z"],wide:["M23.2 11.2a10.8 8.2 0 0 1-14.85 7.6L2.6 21l.45-5.7A10.8 8.2 0 1 1 23.2 11.2z"],close:["M6 6l12 12M18 6L6 18"],browser:["M4 7a3 3 0 0 1 3-3h10a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H7a3 3 0 0 1-3-3z","M4 9.5h16M7.5 6.8h.01"],smile:["M12 3a9 9 0 1 0 0 18a9 9 0 0 0 0-18z","M8.6 14.2c1.9 2.1 4.9 2.1 6.8 0","M9.6 9.8a.6.6 0 1 1-1.2 0a.6.6 0 1 1 1.2 0M15.6 9.8a.6.6 0 1 1-1.2 0a.6.6 0 1 1 1.2 0"],edit:["M4 20h4L19 9l-4-4L4 16z"],hide:["M2.5 12S6 5.5 12 5.5 21.5 12 21.5 12 18 18.5 12 18.5 2.5 12 2.5 12z","M12 9.5a2.5 2.5 0 1 0 0 5a2.5 2.5 0 0 0 0-5z","M4 4l16 16"],more:["M5.5 12h.01M12 12h.01M18.5 12h.01"],look:["M12 3a9 9 0 1 0 0 18a9 9 0 0 0 0-18z","M12 3v18"]};function ut(e,t=15,n){let o=ht(pt[e],t);return n&&o.setAttribute("stroke-width",String(n)),o}function ht(e,t){let n=document.createElementNS(ct,"svg"),o={width:String(t),height:String(t),viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"};for(let[e,t]of Object.entries(o))n.setAttribute(e,t);for(let t of e){let e=document.createElementNS(ct,"path");e.setAttribute("d",t),n.append(e)}return n}var ft=(e,t,n)=>`M${e} ${t}a${n} ${n} 0 1 0 ${2*n} 0a${n} ${n} 0 1 0 -${2*n} 0`,mt={Otter:"M4 13.2C4 9.2 7.6 6.5 12 6.5s8 2.7 8 6.7-3.6 6.3-8 6.3-8-2.3-8-6.3zM5.6 9.6a1.8 1.8 0 1 1 2.7-2.3M18.4 9.6a1.8 1.8 0 1 0-2.7-2.3M9.2 11.6h.01M14.8 11.6h.01M11 14h2l-1 1zM9.8 15.8l-3.2.4M9.9 17l-2.7 1.1M14.2 15.8l3.2.4M14.1 17l2.7 1.1",Fox:"M3.5 4l5 3.5h7l5-3.5-1.5 8.5L12 20l-7-7.5zM9 12h.01M15 12h.01M12 17h.01",Owl:`M5 4.5l3 2.5h8l3-2.5V14a7 7 0 0 1-14 0z${ft(7.4,11.5,1.9)}${ft(12.8,11.5,1.9)}M11.3 14.6l.7 1 .7-1`,Bear:`${ft(5,13.5,7)}M8.9 7.22A2.8 2.8 0 1 0 5.89 10.09M18.11 10.09A2.8 2.8 0 1 0 15.1 7.22M9.4 12.6h.01M14.6 12.6h.01M10.3 16.4c0-1 .8-1.6 1.7-1.6s1.7.6 1.7 1.6-.8 1.6-1.7 1.6-1.7-.6-1.7-1.6z`,Rabbit:`${ft(6.5,15.5,5.5)}M9.6 10.5C8.2 6.5 8.4 2.5 9.8 2.5s2.4 3.5 1.6 7.5M14.4 10.5c1.4-4 1.2-8-.2-8s-2.4 3.5-1.6 7.5M10 15h.01M14 15h.01M11.3 17.3l.7.5.7-.5`};function gt(e){let t=/[\p{L}\p{N}]/u.exec(e);if(!t)return"";let n=t[0].toUpperCase();return 1===[...n].length?n:t[0]}var vt=(e,t)=>gt(t)||m(e);function wt(e,t){return w(t)?et("span",{class:"av ai","data-pipeup-ai":"","aria-hidden":"true"},"AI"):et("span",{class:`av c${f(e)}`,"aria-hidden":"true","data-animal":m(e)},gt(t)||ht([mt[c[h(e)]]],24))}function yt(e,t){setTimeout(()=>{e.remove(),t?.()},320)}function bt(e){return requestAnimationFrame(()=>{e.offsetWidth,e.classList.add("in")}),e}var xt=new Map;function kt(e){xt.clear();for(let[t,n]of Object.entries(e??{}))void 0!==n&&xt.set(t,n)}function Et(e){return xt.has(e)?xt.get(e):typeof document>"u"?null:document.querySelector(`script[${e}]`)?.getAttribute(e)??document.documentElement.getAttribute(e)}var St=e=>null!==Et(e),$t=/^[A-Za-z0-9_-]{43}$/,Lt=/^(?:host|gh):[A-Za-z0-9._@-]{1,64}$/,Mt=[],Ct=new Set;function At(e){Mt=e.filter(e=>e&&"string"==typeof e.name&&e.name.trim()&&Lt.test(e.ref)).slice(0,500).map(e=>({ref:e.ref,name:e.name.trim().slice(0,80),...e.agent?{agent:!0}:{}}));for(let e of[...Ct])e()}var Tt=()=>(Et("data-pipeup-agents")??"").split(/[\s,]+/).filter(e=>$t.test(e));function Pt(e,t){let n=new Map,o=e=>{e.ref!==t&&!n.has(e.ref)&&n.set(e.ref,e)},r=e=>o({ref:e.author,name:g(e),...w(e.name)?{agent:!0}:{}});for(let t of e)for(let e of[t.root,...t.root.replies])if(!e.deleted){r(e);for(let t of e.reactions)for(let e of t.by)r({...e})}for(let e of Tt())o({ref:e,name:"AI agent",agent:!0});for(let e of Mt)o(e);return[...n.values()].sort((e,t)=>e.name.localeCompare(t.name))}var qt=(e,t)=>!!e.mentions?.some(e=>t.includes(e.ref)),Nt=[],Rt=e=>[e,...Nt],Dt=null,zt=e=>{Dt=e},Ht="pu-source";function Ot(e){let t=et("textarea",{class:"input",dir:"auto",rows:"1",autocomplete:"off","aria-label":e.name??e.label,placeholder:e.placeholder??""}),n=et("button",{class:"send",type:"button",inert:!0},e.label),o=et("button",{class:"cnl",type:"button"},"Cancel"),r=et("span",{class:"tools"});r.hidden=!0;let i=et("div",{class:"line"},t,r),a=et("div",{class:"row"},i,et("div",{class:"bts"},e.lead??null,o,n)),l=e.kind??"comment",s=!1,d=new Set,c=()=>{for(let e of[...d])e()},p=()=>{let e=""!==t.value.trim();n.classList.toggle("show",e),a.classList.toggle("has",e),n.inert=!e,t.style.height="auto",t.style.height=`${Math.max(27,t.scrollHeight)}px`},u=()=>{let e=-1,n=0,o=(o,r)=>{e<0&&(e=t.selectionStart,n=0);let i=t.value.slice(0,e),a=o&&i&&!/\s$/.test(i)&&!/^\s/.test(o)?" ":"";t.setRangeText(a+o,e,e+n,"end"),n=a.length+o.length,r&&(e=-1),p()};return{update:e=>o(e,!1),commit:e=>o(e,!0),cancel:()=>{e>=0&&n&&t.setRangeText("",e,e+n,"end"),e=-1,n=0,p()}}},h=new Map,f=()=>{let n=(Dt?.tools()??[]).filter(e=>!1!==e.available?.());for(let[e,t]of h)n.some(t=>t.id===e)||(t.remove(),h.delete(e));for(let o of n){if(h.has(o.id))continue;let n=et("button",{class:"ib tool",type:"button","aria-label":o.label,title:o.label,"aria-pressed":"false"},ht(o.icon,15));n.addEventListener("mousedown",e=>e.preventDefault()),n.addEventListener("click",r=>{r.stopPropagation();try{o.press({kind:l,thread:e.thread?.()??null,text:()=>t.value,focus:()=>t.focus({preventScroll:!0}),connected:()=>a.isConnected,setPressed:e=>n.setAttribute("aria-pressed",String(e)),dictate:u,onEnd:e=>(d.add(e),()=>d.delete(e))})}catch(e){globalThis.reportError?.(e)}}),h.set(o.id,n),r.append(n)}r.hidden=0===h.size};f(),a.addEventListener(Ht,f);let m=[],g=et("ul",{class:"mnl",role:"listbox","aria-label":"People"}),v=et("span",{class:"mn-sr","aria-live":"polite"}),w=`mn-${Math.random().toString(36).slice(2,8)}`;g.id=w;let y=[],b=0,x=null;e.people&&(t.setAttribute("aria-autocomplete","list"),t.setAttribute("aria-haspopup","listbox"),t.setAttribute("aria-controls",w),a.append(g,v));let k=()=>{y=[],g.classList.remove("show"),t.removeAttribute("aria-activedescendant"),window.setTimeout(()=>!y.length&&g.replaceChildren(),220)},E=()=>{for(let[e,n]of[...g.children].entries()){let o=e===b;n.setAttribute("aria-selected",String(o)),n.classList.toggle("on",o),o&&t.setAttribute("aria-activedescendant",n.id)}},S=e=>{let n=y[e];if(!n||!x)return;let o=t.selectionStart;t.setRangeText(`@${n.name} `,x.start,o,"end"),m.push({label:n.name,ref:n.ref}),k(),p()},$=async()=>{let o=t.value.trim();if(o&&!s){s=!0;try{await e.K(o,m.length?function(e,t){let n=[];for(let o of t){let t=`@${o.label}`,r=0;for(;;){let i=e.indexOf(t,r);if(i<0)break;let a=i+t.length;if((0===i||/\s/.test(e[i-1]))&&(a===e.length||!/[\p{L}\p{N}_]/u.test(e[a]))&&!n.some(e=>i<e.end&&a>e.start)){n.push({start:i,end:a,ref:o.ref});break}r=i+1}}return n.sort((e,t)=>e.start-t.start).slice(0,20)}(o,m):[]),n.matches(":focus")&&t.focus(),t.value="",m.length=0,k(),p(),c()}catch{}finally{s=!1}}};i.addEventListener("mousedown",e=>{e.target===t||r.contains(e.target)||(e.preventDefault(),t.focus({preventScroll:!0}),t.setSelectionRange(t.value.length,t.value.length))}),t.addEventListener("input",()=>{p(),e.people&&(()=>{if(x=t.selectionStart===t.selectionEnd?function(e){let t=/(^|\s)@([^\s@]*(?:\s[^\s@]*)?)$/.exec(e);return t?{start:t.index+t[1].length,query:t[2]}:null}(t.value.slice(0,t.selectionStart)):null,y=x&&e.people?function(e,t){let n=t.trim().toLowerCase(),o=e.filter(e=>e.name.toLowerCase().startsWith(n)),r=n?e.filter(e=>!o.includes(e)&&e.name.toLowerCase().includes(n)):[];return[...o,...r].slice(0,8)}(e.people(),x.query):[],!y.length)return k();b=Math.min(b,y.length-1),g.replaceChildren(...y.map((e,t)=>{let n=et("li",{role:"option",id:`${w}-${t}`,class:e.agent?"agent":""},et("span",{},e.name),e.agent?et("small",{},"AI agent"):null);return n.addEventListener("mousedown",e=>{e.preventDefault(),S(t)}),n})),g.classList.add("show"),v.textContent=`${y.length} ${1===y.length?"person":"people"}`,E()})()}),t.addEventListener("blur",()=>y.length&&k()),t.addEventListener("mousedown",e=>e.defaultPrevented&&t.focus({preventScroll:!0}));for(let e of["keyup","keypress"])t.addEventListener(e,e=>e.stopPropagation());t.addEventListener("keydown",e=>{if(e.stopPropagation(),y.length&&!e.isComposing){if("ArrowDown"===e.key||"ArrowUp"===e.key)return e.preventDefault(),b=(b+("ArrowDown"===e.key?1:y.length-1))%y.length,E();if("Enter"===e.key||"Tab"===e.key)return e.preventDefault(),S(b);if("Escape"===e.key)return e.preventDefault(),k()}"Enter"!==e.key||e.shiftKey||e.isComposing?"Escape"===e.key&&!e.isComposing&&(e.preventDefault(),L()):(e.preventDefault(),$())});let L=()=>{let n=t.value.trim()?t.value:"";t.value="",p(),(!n||"reply"!==l)&&t.blur(),c(),e._?.(n)};for(let e of[n,o])e.addEventListener("mousedown",e=>e.preventDefault());return n.addEventListener("click",e=>{e.stopPropagation(),$()}),o.addEventListener("click",e=>{e.stopPropagation(),L()}),e.value&&(t.value=e.value,queueMicrotask(p)),{element:a,input:t,focus:()=>t.focus({preventScroll:!0})}}var Ft=1,It=["sync","menu","notify","note","composer","panel","styles","status","overlay","here","sign","listnote","commentmark","reactions","identity","dialog","paste","place","post"],Bt=/^[a-z][a-z0-9-]{1,23}$/,jt=["text","muted","faint","line","surface","soft","hover","shadow","ease"],Wt=["pointerdown","pointerup","keydown","click"],Kt=new Set(["local","file","page","user","pipeup","presence","sync"]),Vt="data-pipeup-placed",Ut=`[data-pipeup-ask][${Vt}]>:not(pipeup-place){display:none}`,Yt=class{constructor(e,t,n){this.ctx=e,this.shadow=t,this.after=n,zt({tools:()=>this.Z,note:()=>[...this.ae.values()].at(-1)??null,reporting:()=>this.X.size>0});for(let e of Wt)window.addEventListener(e,this.Te,!0)}se=0;z=[];ae=new Map;writing=new Map;marked=new Map;paint=0;X=new Map;listNotes=new Map;picker=null;pickerOwner="";Z=[];le=new Set;U=new Set;J=new Set;Q=new Map;O=new Map;H=new Map;remote={n:0,who:new Set};last=0;timer=0;ke="";R=new Map;de=null;Se=!1;Le=[];Te=e=>{e.isTrusted&&(this.Le=e.composedPath())};subscribe(e){return this.J.add(e),()=>{this.J.delete(e)}}changed(e){e&&this.se++;for(let t of[...this.J])t(e);for(let e of this.ctx.e.querySelectorAll(".row, .draft"))e.dispatchEvent(new Event(Ht))}D(e,t){let n=this.H.get(e)??this.H.set(e,new Set).get(e),o=()=>{n.delete(o)&&t()};return n.add(o),o}Me(){return[...this.X.values()].map(e=>e.text).join(" \xb7 ")}qe(e,t){return this.z.push(t),this.changed(!0),{update:()=>this.changed(!1),remove:this.D(e,()=>{this.z.splice(this.z.indexOf(t),1),this.changed(!0)})}}setThread(e,t,n){let o=this.writing.get(e)??this.writing.set(e,new Set).get(e);null===n?(_e.delete(t),o.delete(t)):(_e.set(t,n),o.add(t)),this.repaint()}setMark(e,t,n,o){let r=this.marked.get(e)??this.marked.set(e,new Set).get(e);if(null===n){if(Ze.delete(t),!Ge.delete(t))return;r.delete(t)}else{if(Ge.get(t)===n&&!!Ze.get(t)==!!o)return;Ge.set(t,n),o?Ze.set(t,o):Ze.delete(t),r.add(t)}this.repaint()}setCommentMark(e,t,n){let o=Je.get(t);if(null===n){if(o?.by!==e)return;Je.delete(t)}else{let r=String(n.text),i=void 0===n.tip?void 0:String(n.tip);if(o?.by===e&&o.text===r&&o.tip===i)return;Je.set(t,{text:r,tip:i,by:e})}this.repaint()}repaint(){this.paint||(this.paint=window.requestAnimationFrame(()=>{this.paint=0,this.ctx.m()}))}ce(e,t,n){n?e.set(t,n):e.delete(t),this.changed(!1)}setPicker(e,t){t?(this.picker=t,this.pickerOwner=e):this.pickerOwner===e&&(this.picker=null,this.pickerOwner=""),this.changed(!1)}Fe(e,t){return this.Z.push(t),this.changed(!1),this.D(e,()=>{this.Z.splice(this.Z.indexOf(t),1),this.changed(!1)})}closed(){return this.ctx.state.hidden&&!this.ctx.state.l}Ve(e,t){this.closed()?this.O.set(e,t):this.ctx.pe(t)}flush(){if(this.closed()||0===this.O.size)return;let e=[...this.O.values()].at(-1);this.O.clear(),this.ctx.pe(e)}Ke(){return this.shadow.activeElement instanceof HTMLTextAreaElement||[...this.ctx.e.querySelectorAll("textarea")].some(e=>""!==e.value.trim())}_e(e){this.ctx.state.hidden||this.ctx.T(e)}ze(e,t){if("local"!==t&&""!==t){for(let{body:t}of e)t.author===this.ctx.doc.me||"create"!==t.kind&&"reply"!==t.kind||(this.remote.n++,this.remote.who.add(t.name||m(t.author)));this.Ae()}}Ae(e=Math.max(0,this.last+1e4-Date.now())){this.timer||!this.remote.n||(this.timer=window.setTimeout(()=>{if(this.timer=0,this.ctx.state.hidden||this.Ke())return this.Ae(1e3);let{n:e,who:t}=this.remote;this.remote={n:0,who:new Set},this.last=Date.now(),this.ctx.T(`${e} new comment${1===e?"":"s"} from ${1===t.size?[...t][0]:`${t.size} people`}`)},e))}Ue(e){let t=this.Q.get(e);return t||(t=et("div",{class:"ov","aria-hidden":"true","data-addon":e}),this.ctx.e.insertBefore(t,this.after.nextSibling),this.Q.set(e,t)),t}je(e,t){let n=this.ctx.host.ownerDocument.defaultView?.CSSStyleSheet,o=n&&"replaceSync"in n.prototype&&"adoptedStyleSheets"in this.shadow?new n:null;o&&(o.replaceSync(t),this.shadow.adoptedStyleSheets=[...this.shadow.adoptedStyleSheets,o]);let r=o??this.shadow.appendChild(et("style",{},t));return this.D(e,()=>o?this.shadow.adoptedStyleSheets=this.shadow.adoptedStyleSheets.filter(e=>e!==o):r.remove())}Ce(e,t,n){return t.add(n),this.D(e,()=>t.delete(n))}We(e,t){return this.Ce(e,this.le,t)}Ye(e,t){let n=this.Ce(e,this.U,t);return this.call(this.U,t,this.Pe()),n}Pe(){let{state:e}=this.ctx,t=this.shadow.activeElement;return{shown:!e.hidden,commentMode:e.s,allOpen:e.u,dark:this.ctx.e.classList.contains("dark"),view:this.ctx.f.view(),writing:t instanceof HTMLTextAreaElement?t.closest("[data-thread]")?.dataset.thread??"":null}}Ge(){let e=new Set;for(let t of this.R.values())for(let n of t.keys())e.add(n.getAttribute("data-pipeup-id")??"");return e}place(e,t){let n=this.R.get(e)??this.R.set(e,new Map).get(e),o=n.get(t);if(o)return o.shadowRoot;if(!(t instanceof Element)||!t.matches("[data-pipeup-ask],[data-pipeup-inline]")||!this.ctx.root.contains(t)||t.closest(`[${Vt}]`))throw new Error("pipeup: not an element marked for add-ons");let r=t.ownerDocument;this.de??=this.Xe(r,Ut);let i=r.createElement("pipeup-place"),a=i.attachShadow({mode:"open"}),l=":host{all:initial;display:block;font:14px/1.5 var(--pu-font,system-ui,sans-serif);color:var(--pu-text)}",s=r.defaultView?.CSSStyleSheet;if(s&&"adoptedStyleSheets"in a){let e=new s;e.replaceSync(l),a.adoptedStyleSheets=[e]}else a.append(et("style",{},l));return this.$e(i),t.setAttribute(Vt,""),t.append(i),n.set(t,i),this.D(e,()=>{i.remove(),t.removeAttribute(Vt),n.delete(t),[...this.R.values()].some(e=>e.size)||(this.de?.(),this.de=null),this.repaint()}),this.repaint(),a}$e(e){let t=getComputedStyle(this.ctx.e);for(let n of jt)e.style.setProperty(`--pu-${n}`,t.getPropertyValue(`--pu-${n}`))}Xe(e,t){let n=e.defaultView?.CSSStyleSheet;if(n&&"adoptedStyleSheets"in e){let o=new n;return o.replaceSync(t),e.adoptedStyleSheets=[...e.adoptedStyleSheets,o],()=>{e.adoptedStyleSheets=e.adoptedStyleSheets.filter(e=>e!==o)}}let o=e.head.appendChild(et("style",{},t));return()=>o.remove()}Ze(e){let t=[...this.R.get(e)?.values()??[]];return!1!==navigator.userActivation?.isActive&&this.Le.some(n=>t.includes(n)||n instanceof HTMLElement&&n.dataset.addon===e)}async post(e,t){if(!this.Ze(e))throw new Error("pipeup: not sent by the reviewer here");let{doc:n,root:o,f:i}=this.ctx;if(t.remove)return await n.remove(t.remove),t.remove;let a=String(t.text??"");if(t.edit)return await n.edit(t.edit,a),t.edit;if(t.replyTo)return n.reply(t.replyTo,a);let l=t.anchor;if(!l||!this.R.get(e)?.has(l)||!l.getAttribute("data-pipeup-id"))throw new Error("pipeup: not a marked block with a data-pipeup-id");let s=ye(l,o,void 0,i.view(l));return t.excerpt&&(s.snapshot=r(t.excerpt).slice(0,200)),n.comment(s,a)}N(){let e=this.ctx.e.classList.contains("dark");if(e!==this.Se){this.Se=e;for(let e of this.R.values())for(let t of e.values())this.$e(t)}for(let e of[...this.le])this.call(this.le,e);if(0===this.U.size)return;let t=this.Pe(),n=JSON.stringify(t);if(n!==this.ke){this.ke=n;for(let e of[...this.U])this.call(this.U,e,t)}}call(e,t,...n){try{t(...n)}catch(n){e.delete(t),globalThis.reportError?.(n)}}Je(e,t,n){let o=this.ctx.e,r=this.shadow.activeElement,i=et("button",{class:"ib",type:"button","aria-label":"Close"},ht(["M6 6l12 12M18 6L6 18"],15)),a=et("div",{class:"xp",role:"dialog","aria-label":n.label,"data-addon":e},et("div",{class:"hd"},et("span",{},n.label),i),et("div",{class:"xb"},t)),l=[...o.children].filter(e=>e instanceof HTMLElement&&!e.inert);for(let e of l)e.inert=!0;o.append(a),a.offsetWidth,a.classList.add("show");let s=e=>{"Escape"===e.key&&(e.stopPropagation(),e.preventDefault(),d())},d=this.D(e,()=>{window.removeEventListener("keydown",s,!0);for(let e of l)e.inert=!1;a.classList.remove("show"),a.inert=!0,window.setTimeout(()=>a.remove(),300),r?.focus?.({preventScroll:!0});try{n.onClose?.()}catch(e){globalThis.reportError?.(e)}});return i.addEventListener("click",d),window.addEventListener("keydown",s,!0),(a.querySelector("button, input, textarea, select, a[href]")??a).focus?.({preventScroll:!0}),{close:d}}dialog(e,t,n){this.ctx.e.querySelector(".dlg")?.remove();let o=et("div",{class:"dlg",role:"dialog","aria-label":n,"data-addon":e},t),r=()=>{},i=()=>{o.classList.remove("show"),o.inert=!0,window.setTimeout(r,260)};return o.addEventListener("keydown",e=>{e.stopPropagation(),"Escape"===e.key&&(e.preventDefault(),i())}),this.ctx.e.append(o),o.offsetWidth,o.classList.add("show"),o.querySelector("textarea, button.primary, button")?.focus({preventScroll:!0}),r=this.D(e,()=>o.remove()),{close:i}}clear(e){for(let t of[...this.H.get(e)??[]])t();this.H.delete(e),this.Q.get(e)?.remove(),this.Q.delete(e);for(let t of[this.ae,this.X,this.listNotes,this.O])t.delete(e);this.setPicker(e,null);for(let t of this.writing.get(e)??[])_e.delete(t);this.writing.delete(e);for(let t of this.marked.get(e)??[])Ge.delete(t),Ze.delete(t);this.marked.delete(e),this.R.delete(e);for(let[t,n]of Je)n.by===e&&Je.delete(t);this.repaint(),this.changed(!0)}destroy(){for(let e of Wt)window.removeEventListener(e,this.Te,!0);window.clearTimeout(this.timer),zt(null),this.J.clear()}},_t=new Map,Gt=null,Zt=(()=>{let e=globalThis.Pipeup;return e?.VERSION?e:null})();function Jt(){return Zt?Zt.addons():[..._t.values()].map(e=>({...e.info}))}function Xt(e){if(Zt)return Zt.use(e);let t=e=>console.warn(`pipeup: ${e}`),n=e;if(!n||"object"!=typeof n||"string"!=typeof n.id||!Bt.test(n.id)||Kt.has(n.id)||"function"!=typeof n.setup||"string"!=typeof n.network?.says)return t("an add-on needs an id of 2 to 24 lowercase letters, digits and dashes (not a reserved one), a setup function and a network statement");if(_t.has(n.id))return t(`the add-on "${n.id}" is already registered; the second is ignored`);let o={id:n.id,version:String(n.version??""),network:n.network,state:"waiting"},r=(n.needs??[]).find(e=>!It.includes(e));!function(e){let t=Et("data-pipeup-addons");return null===t||t.toLowerCase().split(/[\s,]+/).includes(e)}(n.id)?(o.state="off",o.reason="this page doesn't allow it",t(`the add-on "${n.id}" is not in this page's data-pipeup-addons list, so it is off`)):1!==n.api?(o.state="off",o.reason=`needs add-on API ${String(n.api)}; this Pipeup has 1`):r&&(o.state="off",o.reason=`this Pipeup has no ${r} slot`);let i={addon:e,info:o};_t.set(n.id,i),Gt?.i&&"waiting"===o.state&&Qt(i,Gt)}async function Qt(e,t){let n,o,{addon:r,info:i}=e,a=new AbortController,l=new Set,{surface:s,doc:d}=t,c=()=>!a.signal.aborted,p=Object.assign(()=>{},{update(){},remove(){},close(){}}),u=e=>(...t)=>c()?e(...t):p,h={id:d.id,me:d.me,get name(){return d.name},threads:()=>d.threads(),ops:()=>d.ops(),contacts:()=>d.contacts(),onChange:e=>{let t=d.onChange(e);return l.add(t),()=>{t(),l.delete(t)}}},f=r.id,m={api:1,version:t.version,document:h,root:t.root,ephemeral:t.ephemeral,signal:a.signal,has:e=>It.includes(e),off:e=>{o=String(e)},merge:e=>c()?d.merge(e,f):Promise.resolve(0),addMenuItem:u(e=>s.qe(f,e)),notify:u(e=>s.Ve(f,e)),announce:u(e=>s._e(e)),setComposerNote:u(e=>s.ce(s.ae,f,e)),setThreadNote:u((e,t)=>s.setThread(f,e,t)),setThreadMark:u((e,t,n)=>s.setMark(f,e,t,n)),setCommentMark:u((e,t)=>s.setCommentMark(f,e,t)),addComposerTool:u(e=>s.Fe(f,e)),openPanel:u((e,t)=>s.Je(f,e,t)),addStyles:u(e=>s.je(f,e)),setStatus:u(e=>s.ce(s.X,f,e)),setListNote:u(e=>s.ce(s.listNotes,f,e)),setReactionPicker:u(e=>s.setPicker(f,e)),overlay:()=>s.Ue(f),onFrame:u(e=>s.We(f,e)),where:e=>s.ctx.f.view(e),isHere:e=>s.ctx.f.E(e),go:e=>s.ctx.f.ee(e),onUi:u(e=>s.Ye(f,e)),avatar:(e,t)=>{let n=wt(e,t);return n.classList.add("in"),n},sign:(e,t)=>d.sign(`${f}/${e}`,t),identity:{portable:d.portable,seed:()=>d.seed(),use:async e=>{if("private"!==e.type||"Ed25519"!==e.algorithm.name||!e.extractable)throw new Error("pipeup: an identity is an extractable Ed25519 private key");let{x:n}=await crypto.subtle.exportKey("jwk",e);await t.onIdentity({publicKey:n,privateKey:e})},share:e=>d.contact(e).then(()=>!0,()=>!1),unshare:()=>d.uncontact()},openDialog:u((e,t)=>s.dialog(f,e,t)),paste:(e,t,n,o)=>c()?d.paste(e,t,n,o):Promise.reject(new Error("pipeup: this add-on is off")),place:e=>{if(!c())throw new Error("pipeup: this add-on is off");return s.place(f,e)},post:e=>c()?s.post(f,e):Promise.reject(new Error("pipeup: this add-on is off"))},g=()=>{if(c()){a.abort();for(let e of[...l])e();try{n?.()}catch(e){globalThis.reportError?.(e)}s.clear(f),"on"===i.state&&(i.state="waiting")}};e.stop=g;try{if(n=await r.setup(m),!c())return void n?.();if(void 0!==o)return g(),i.state="off",i.reason=o,void console.warn(`pipeup: the add-on "${f}" is off: ${o}`);i.state="on",delete i.reason}catch(e){i.state="failed",i.reason=function(e){return e instanceof Error?e.message:String(e)}(e),g(),i.state="failed",globalThis.reportError?.(e)}}var en=typeof navigator<"u"&&/Mac|iP(hone|ad|od)/.test(navigator.platform)?"\u21e7\u2325C":"Shift+Alt+C",tn=" ",nn="Shift+Alt+C",on="Comments stay in this browser until you send them.";var rn=new WeakMap;function an(e,t){let n=rn.get(t)??function(e){let t=et("button",{class:"me",type:"button",tabindex:"-1","aria-hidden":"true"});t.addEventListener("mousedown",e=>e.preventDefault());let n=et("span",{class:"here",role:"img","aria-label":on,title:on},ut("browser",14)),o=Ot({label:"Comment",placeholder:"Comment or add others with @",kind:"comment",K:e.K,_:e._,people:e.people,lead:n}),r=et("div",{class:"note"}),i=()=>{let e=Dt?.note()??null;r.textContent=e??"",r.hidden=!e;let t=!!e||(Dt?.reporting()??!1);n.classList.toggle("off",t),n.setAttribute("aria-hidden",String(t))};i();let a=et("div",{class:"say"}),l=et("input",{class:"input",type:"text",maxlength:"80","aria-label":"Your name"}),s=et("div",{class:"nf"},l),d=et("div",{class:"you"},a,s),c="",p=!1,u=!1,h=()=>{let n=e.name(),o=n?"change":"add your name";if(t.title=n?"Change your name":"Add your name",!t.lastChild||c!==n){let o=wt(e.me,n),r=t.lastChild;r?(bt(o),yt(r)):o.classList.add("in"),t.append(o),c=n}let r=et("button",{type:"button"},o);r.addEventListener("click",g),a.replaceChildren(et("span",{class:"nm"},n||`You're ${m(e.me)}`)," \xb7 ",r)},f=e=>{u=e,d.classList.toggle("naming",e),tt(a,e),tt(s,!e)};function g(t){t.stopPropagation(),l.value=e.name(),f(!0),l.focus({preventScroll:!0}),l.select()}let v=(e=!0)=>{f(!1),e&&o.focus()},w=t=>{let n=l.value.trim();if(!n||n===e.name())return v(t);p||(p=!0,e.rename(n).finally(()=>{p=!1,h(),v(t)}))};t.addEventListener("click",g),l.addEventListener("keydown",e=>{e.stopPropagation(),"Escape"!==e.key||e.isComposing?"Enter"===e.key&&(e.preventDefault(),w(!0)):(e.preventDefault(),v())}),l.addEventListener("blur",()=>{u&&!p&&w(!1)}),h(),f(!1);let y=et("div",{class:"ctx"},e.label),b=et("div",{class:"draft"},et("div",{class:"hdr"},t,d),y,r,o.element);return b.addEventListener(Ht,i),{element:b,ue:()=>{let{selectionStart:e,selectionEnd:t}=o.input;return()=>{o.focus(),o.input.setSelectionRange(e,t)}},te:e=>{y.hidden=e},fe:e=>{y.textContent=e},focus:()=>o.focus(),Qe:()=>""===o.input.value.trim(),fill:e=>{o.input.value=e,o.input.dispatchEvent(new Event("input")),o.focus(),o.input.setSelectionRange(e.length,e.length)}}}({label:t.label,me:e.doc.me,name:()=>e.l.name(),rename:t=>e.l.rename(t),K:(t,n)=>e.et(t,n),people:()=>e.people(),_:t=>e.he(t)});return rn.set(t,n),e.B(n),n}var ln="a,button,input,select,textarea,label,summary,[role=button],[contenteditable]";function sn(e,t){if("orphaned"===t.state||!t.element||e.quote)return null;let n=t.element.getBoundingClientRect();if(!n.width&&!n.height)return null;if(e.point)return{x:n.left+e.point.x*n.width,y:n.top+e.point.y*n.height};if(t.element.matches(ln))return{x:n.right+4,y:n.top+14};let o=t.element.ownerDocument.createRange();o.selectNodeContents(t.element);let r=o.getBoundingClientRect();return{x:r.width?Math.min(n.right-8,r.right+6):n.right-8,y:(r.height?r.top:n.top)+8}}function dn(e){return e.range?[...e.range.getClientRects()]:[]}function cn(e,t){let n=dn(t)[0];if(n)return n.top;if("orphaned"===t.state||!t.element)return null;let o=t.element.getBoundingClientRect();return e.point?o.top+e.point.y*o.height:o.top}function pn(e,t){let n=dn(t).at(-1);if(n)return{x:n.left,y:n.bottom,below:!0,p:n};let o=sn(e,t);if(!o)return null;let r=e.point?new DOMRect(o.x-12,o.y-12,24,24):t.element.getBoundingClientRect();return{...o,below:!1,p:r}}function un(e,t,n){for(let o of n)if(e>=o.left&&e<=o.right&&t>=o.top&&t<=o.bottom)return!0;return!1}var hn=()=>window.innerWidth>=900?400:300,fn=()=>window.innerWidth<=480,mn=()=>!0===window.matchMedia?.("(pointer: coarse)").matches,gn=0;function vn(){let e=window.visualViewport,t=e?Math.max(0,e.offsetTop-gn):0;return{top:t,bottom:e?Math.min(window.innerHeight,t+e.height):window.innerHeight}}var wn=(e,t,n,o)=>n.keep&&e+t>n.keep.left?Math.min(n.height-o,n.keep.top-8):n.height-o;function yn(e,t,n,o=12,r=44){let i=e.top-r>=8,a=e.top+e.height+8+(i?0:r),l=e.top-8-(i?r:0)-t.height,s=Math.max(o,Math.min(e.left,n.width-t.width-o)),d=e=>a+t.height<=wn(e,t.width,n,o),c=n.keep?n.keep.left-8-t.width:-1;!d(s)&&c>=o&&d(c)&&(s=Math.min(s,c));let p=wn(s,t.width,n,o),u=(n.top??0)+o,h=a+t.height<=p||l<u;return{above:!h,left:s,top:Math.max(u,Math.min(h?a:l,p-t.height))}}function bn(e,t,n){let o=e.top-t.height-10,r=o<8?e.top+e.height+10:o;return r+t.height>n.height-8&&(r=Math.max(8,o)),{left:Math.max(8,Math.min(e.left+e.width/2-t.width/2,n.width-t.width-8)),top:r}}function xn(e,t){let n=e.resolved.get(t.id);return n?.range?.startContainer??n?.element??null}var kn=e=>(t,n)=>{let o=xn(e,t),r=xn(e,n),i=e=>e.anchor.point??{x:0,y:-1};return o!==r?!r||o&&4&o.compareDocumentPosition(r)?-1:1:i(t).y-i(n).y||i(t).x-i(n).x},En=["\u{1f44d}","\u2764\ufe0f","\u{1f602}","\u{1f389}","\u{1f62e}","\u{1f64f}"],Sn={"\u{1f44d}":"Thumbs up","\u2764\ufe0f":"Heart","\u{1f602}":"Laughing","\u{1f389}":"Party popper","\u{1f62e}":"Surprised","\u{1f64f}":"Thanks"};var $n=e=>`${e} ${1===e?"reply":"replies"}`,Ln=e=>e.root.replies.filter(e=>!e.deleted);function Mn(e,t,n){let o={...n},r="card"===o.q,i=e.id,a=et("div",{class:"rbox always"},et("div",{},Ot({label:"Reply",placeholder:"Reply or add others with @",kind:"reply",thread:()=>i,people:()=>t.people(),K:(e,n)=>t.reply(i,e,n),_:e=>e?t.drop(i,e):t.close()}).element)),l=et("div",{}),s=et("span",{class:"note"},"This thread was resolved. Your words are kept until you send or clear them.");s.hidden=!0,a.prepend(s);let d=et("div",{}),c=null,p=null,u=null,h="",f=et("div",{},d,r?null:et("div",{class:"more"},l)),m=new Set,y="",b="",x="",k=0,E=null,S=new Set,$=e,L=new Map,M=new Map,C=new Map,A=new Map,T=new Map,P=(e,t,n)=>{let o=et("button",{class:"ib",type:"button","aria-label":t,title:t},ut(e,18,"more"===e?2.6:void 0));return o.addEventListener("click",e=>{e.stopPropagation(),n()}),o},q=e=>f.querySelector(e)?.focus({preventScroll:!0});function N(e,n={}){let R=f.getRootNode().activeElement,D=R&&f.contains(R)?R.dataset.k:void 0;(function(e,n){Object.assign(o,n);let R=b;b=y,i=e.id,$=e;let D=(o.now??Date.now)(),z=Ln(e),H=z.length,O=e=>{let n=t=>w(e.name)?function(e){let t=[],n=e.split("\n").filter(e=>{let n=/^\[(\d{1,2})\]:?\s+(\S+)(?:\s+([^|]{1,40}?))?(?:\s*\|\s*(.{1,300}))?$/.exec(e.trim()),o=n?.[2]?function(e){return/^slide:\d{1,4}$/.test(e)||/^quote:\S{1,300}$/.test(e)?e:function(e){if(e.length>2048||lt.test(e))return null;try{let t=new URL(e);return"http:"===t.protocol||"https:"===t.protocol?t.href:null}catch{return null}}(e)}(n[2]):null;return n?.[1]&&o&&t.push({n:n[1],to:o,label:n[3]?.trim()??"",says:n[4]?.trim()??""}),!(n?.[1]&&o)}).join("\n").replace(/\s*\[\d{1,2}\]/g,"").trim();if(!t.length)return dt(e);let o=t.slice(0,4).map(e=>{let t=e.to.startsWith("slide:"),n=e.label||(t?`Slide ${e.to.slice(6)}`:`[${e.n}]`),o=[t?et("i",{class:"sl"}):null,et("span",{},t||""===e.label?n:`[${e.n}] ${n}`),e.says?et("span",{class:"rc",role:"tooltip"},e.says):null];if(/^https?:/.test(e.to)){let t=et("a",{class:"ref",href:e.to,target:"_blank",rel:"noopener noreferrer",title:e.says?void 0:e.to},...o);return t.addEventListener("click",e=>e.stopPropagation()),t}let r=et("button",{class:"ref",type:"button",title:e.says?void 0:t?n:`Show where: ${n}`},...o);return r.addEventListener("click",t=>{t.stopPropagation(),Xe.go?.(e.to)}),r});return[...dt(n),et("div",{class:"refs"},...o)]}(t):dt(t);if(!e.mentions?.length)return n(e.text);let o=[],r=0;for(let i of e.mentions)i.start<r||(o.push(...n(e.text.slice(r,i.start))),o.push(et("span",{class:qt(e,[t.me])&&i.ref===t.me?"mn me":"mn"},e.text.slice(i.start,i.end))),r=i.end);return[...o,...n(e.text.slice(r))]},F=n=>function(e,t){if(e.deleted||(t.bare||!e.reactions.length)&&!t.quick)return null;let n=n=>e.reactions.find(e=>e.emoji===n)?.by.some(e=>e.author===t.me)??!1,o=(t.bare?[]:e.reactions).map(o=>{let r=n(o.emoji),i=o.by.length,a=[...r?["You"]:[],...o.by.filter(e=>e.author!==t.me).map(e=>g(e))],l=`${e.id}|${o.emoji}`,s=et("button",{class:`ref rx${r?" mine":""}${t.seen.has(l)?"":" new"}`,type:"button","aria-pressed":String(r),"aria-label":`${t.picker?.name(o.emoji)??Sn[o.emoji]??"Reaction"}, ${i} ${1===i?"person":"people"}${r?", including you":""}`,"data-k":`x${e.id}${o.emoji}`},et("span",{},o.emoji),et("span",{class:"n"},String(i)),et("span",{class:"rc"},a.join(", ")));t.seen.add(l),s.disabled=t.resolved;let d=0,c=!1;s.addEventListener("pointerdown",e=>{c=!1,"touch"===e.pointerType&&(d=window.setTimeout(()=>{c=!0,s.classList.add("held"),window.addEventListener("pointerdown",()=>s.classList.remove("held"),{capture:!0,once:!0})},450))});for(let e of["pointerup","pointercancel"])s.addEventListener(e,()=>window.clearTimeout(d));return s.addEventListener("contextmenu",e=>e.preventDefault()),s.addEventListener("click",e=>{e.stopPropagation(),c?c=!1:t.react(o.emoji,!r)}),s}),r=t.quick&&!t.resolved?et("div",{class:"rxq"+(t.seen.has(`${e.id}|quick`)?"":" new"),role:"group","aria-label":"React","data-q":e.id},...En.map(o=>{let r=et("button",{class:"rxo",type:"button","aria-label":Sn[o],"aria-pressed":String(n(o)),"data-k":`q${e.id}${o}`},o);return r.addEventListener("click",e=>{e.stopPropagation(),t.react(o,!n(o))}),r}),t.picker?function(e,t){let n=et("button",{class:"rxo",type:"button","aria-label":"More reactions","aria-haspopup":"dialog"},"\u2026");return n.addEventListener("click",o=>{o.stopPropagation(),function(e,t,n){let o=e.closest(".layer");if(!o)return;o.querySelector(".rxp")?.remove();let r=e.getBoundingClientRect(),i=Math.max(8,Math.min(r.left,window.innerWidth-320-8)),a=r.bottom+6+340<=window.innerHeight-8?r.bottom+6:Math.max(8,r.top-340-6),l=et("div",{class:"rxp",role:"dialog","aria-label":"Choose a reaction"});l.style.cssText=`left:${i}px;top:${a}px`;let s=!1,d={},c=e=>{e.composedPath().includes(l)||p()},p=()=>{s||(s=!0,window.removeEventListener("pointerdown",c,!0),d.off?.(),l.classList.remove("show"),l.inert=!0,window.setTimeout(()=>l.remove(),260),e.focus({preventScroll:!0}))};l.addEventListener("keydown",e=>{"Escape"===e.key&&(e.stopPropagation(),e.preventDefault(),p())}),d.off=t.fill(l,e=>{p(),n(e)}),window.addEventListener("pointerdown",c,!0),o.append(l),l.offsetWidth,l.classList.add("show"),l.querySelector("input,button")?.focus({preventScroll:!0})}(n,e,t)}),n}(t.picker,e=>t.react(e,!n(e))):null):null;return r?t.seen.add(`${e.id}|quick`):t.seen.delete(`${e.id}|quick`),et("div",{class:"refs rxs"},...o,r)}(n,{me:t.me,picker:t.picker(),resolved:e.resolved,quick:m.has(n.id),bare:r,seen:S,react:(e,o)=>{m.delete(n.id),t.react(n.id,e,o),N($),q(`[data-r="${n.id}"]`)}}),I=e.resolved?"Resolved"+(H?` \xb7 ${$n(H)}`:""):e.addressed?"Addressed"+(H?` \xb7 ${$n(H)}`:""):H?$n(H):"",B=(n,o)=>{let r=[];if(o&&r.push(["Copy thread",()=>(t.copy(e.id),!1)]),(e=>e.author===t.me&&!e.deleted)(n)&&r.push(["Edit",()=>(function(e){let n=()=>{E=null,N($),q(`[data-c="${e.id}"]`)},o=Ot({label:"Save",name:"Edit comment",kind:"comment",value:e.text,people:()=>t.people(),K:async(o,r)=>{await t.edit(e.id,o,r),n()},_:n});E={id:e.id,o:et("div",{class:"edit"},o.element)},queueMicrotask(()=>o.focus())}(n),!1)],[x===n.id?"Delete for everyone":"Delete",()=>x!==n.id?(x=n.id,k=performance.now(),!0):performance.now()-k<500||(x="",t.remove(n.id),!1)]),!r.length)return null;let i=et("div",{class:R===n.id?"pm":"pm in",role:"menu","data-m":n.id},...r.map(([e,t],o)=>{let r=et("button",{type:"button",role:"menuitem",class:"Delete for everyone"===e?"dl":"","data-k":`p${n.id}${o}`},e);return r.addEventListener("click",e=>{e.stopPropagation(),t()||(y=""),N($);let r=f.querySelectorAll(".pm button")[o];r?r.focus():f.contains(f.getRootNode().activeElement)||f.querySelector(`[data-c="${n.id}"]`)?.focus()}),r}));return i.addEventListener("keydown",e=>{let t=[...i.querySelectorAll("button")],o=t.indexOf(e.target),r={ArrowDown:o+1,ArrowUp:o-1,Home:0,End:t.length-1}[e.key];if(void 0!==r)t[(r+t.length)%t.length]?.focus();else{if("Escape"!==e.key)return;y=x="",N($),q(`[data-c="${n.id}"]`)}e.preventDefault(),e.stopPropagation()}),i},j=(n,o)=>{let i=B(n,o),a=i?P("more","More",()=>{y=y===n.id?"":n.id,x="",N($),f.querySelector(y?".pm button":`[data-c="${n.id}"]`)?.focus()}):null;return a&&(a.setAttribute("aria-expanded",String(y===n.id)),a.dataset.c=n.id,a.dataset.k=`m${n.id}`),et("div",{class:"hdr"},...(e=>{let t=vt(e.author,e.name),n=L.get(e.id),o=n?.o;if((!o||n.key!==t)&&(o=bt(wt(e.author,e.name)),n)){let t=n.o;T.set(e.id,t),yt(t,()=>T.get(e.id)===t&&T.delete(e.id))}o.title=g(e),M.set(e.id,{key:t,o});let r=T.get(e.id);return r?[r,o]:[o]})(n),et("span",{class:"who"},g(n)),t.pasted?.(n)?et("span",{class:"ago pst"},t.pasted(n)):null,et("span",{class:"ago",title:new Date(n.at).toLocaleString()},He(n.at,D)),r?K(n,!0):null,et("span",{class:"acts"},(t=>{if(e.resolved||t.deleted)return null;let n=P("smile","React",()=>{let e=!m.delete(t.id);e&&m.add(t.id),N($),q(e?`[data-q="${t.id}"] button`:`[data-r="${t.id}"]`)});return n.dataset.r=t.id,n.dataset.k=`r${t.id}`,n})(n),o?e.resolved?P("reopen","Reopen",()=>{t.reopen(e.id)}):P("resolve","Resolve",()=>{t.resolve(e.id)}):null,a),y===n.id?i:null)},W=e=>E?.id===e.id?E.o:(e=>et("div",{class:e.deleted?"tx del":"tx",dir:"auto"},...e.deleted?["Deleted"]:[...O(e),e.edited?" (edited)":""]))(e),K=(e,t=!1)=>{let n=Je.get(e.id),o=C.get(e.id),r=n??o;if(!r)return null;n&&A.set(e.id,n);let i="cm"+(n?o?"":" new":" out");return t?et("span",{class:i,role:"img","aria-label":r.text,title:r.tip??r.text},ut("browser",13)):et("div",{class:i,title:r.tip},ut("browser",13),r.text)},V=o.quote?`\u201c${rt(o.quote,80)}\u201d`:"",U=o.note&&!o.moved?o.note:o.lost?`${o.place||"No longer on the page"} \u2014 it read \u201c${rt(o.lost,120)}\u201d`:o.moved?`Moved \xb7 ${V||`it read \u201c${rt(e.anchor.snapshot,80)}\u201d`}`:V,Y=r?o.rest:"column"===o.q&&I;M=new Map,A=new Map;let _=et("div",{class:"root"},j(e.root,!0),U?et("div",{class:"ctx"},U):null,W(e.root),"column"===o.q&&et("div",{class:"mr","aria-hidden":"true"},et("span",{},"more")),r?null:K(e.root),F(e.root),Y?et("div",{class:"rest"},Y):null);if(d.replaceWith(_),d=_,f.className=e.resolved?"thread resolved":"thread",f.setAttribute("data-thread",e.id),r)return L=M,void(C=A);c?.remove();let G=_e.get(e.id);c=H||void 0!==G?et("div",{class:"rps"},...z.map(e=>et("div",{class:"it"},j(e,!1),W(e),K(e),F(e))),void 0===G?null:et("div",{class:"it ghost","data-pipeup-writing":"row"},et("div",{class:"hdr"},wt("",v),et("span",{class:"who"},v),et("span",{class:"ago"},"writing now")),et("div",{class:"tx",dir:"auto","data-pipeup-writing":"words"},G))):null,c&&l.prepend(c);let Z=e.addressed&&!e.resolved?e.addressed:null,J=Z?`${Z.text}|${Z.author}|${Z.at}`:"";if(J!==h&&(u?.remove(),u=null,h=J,Z)){let n=(e,t)=>{let n=et("button",{type:"button"},e);return n.addEventListener("click",e=>{e.stopPropagation(),t()}),n};u=et("div",{class:"adr"},et("small",{},["Addressed",g(Z),t.pasted?.(Z),He(Z.at,D)].filter(Boolean).join(" \xb7 ")),Z.text,et("div",{class:"go"},n("Resolve",()=>{t.resolve(e.id)}),n("Still not right",()=>{t.notRight(e.id)})))}u&&l.insertBefore(u,p??(a.parentNode===l?a:null)),p?.remove();let X=Ge.get(e.id),Q=Ze.get(e.id);if(p=void 0===X?null:et("div",{class:"seen"},et("i"),X),p&&Q){let e=et("button",{type:"button"},"Check again");e.addEventListener("click",e=>{e.stopPropagation(),Q()}),p.append(e)}p&&l.insertBefore(p,a.parentNode===l?a:null),L=M,C=A;let ee=""!==a.querySelector("textarea").value.trim();s.hidden=!(e.resolved&&ee),e.resolved&&!ee?a.remove():a.parentNode!==l&&l.append(a)})(e,n),D&&!f.contains(f.getRootNode().activeElement)&&f.querySelector(`[data-k="${CSS.escape(D)}"]`)?.focus({preventScroll:!0})}return f.addEventListener("focusout",e=>{f.contains(e.relatedTarget)||setTimeout(()=>{(y||m.size)&&!f.contains(f.getRootNode().activeElement)&&(y=x="",m.clear(),N($))})}),N(e),{element:f,update:N}}function Cn(e,t=!1){let n=e.ownerDocument.documentElement,o=Et("data-pipeup-layout");if("bubbles"===o||e.querySelector("[data-pipeup-slide]"))return null;let r=e.querySelector("article, main, [role=main]")??("column"===o?e:null);if(!r)return null;if(St("data-pipeup-reserve")){let e,i=n.clientWidth,a=getComputedStyle(r).maxWidth;return e=a.endsWith("px")?parseFloat(a):a.endsWith("%")?parseFloat(a)/100*i:r.getBoundingClientRect().width,"column"!==o&&i<e+320-(t?24:0)?null:{x:i-320+24,width:272}}let i=r.getBoundingClientRect().right;if(window.innerWidth-i<300&&"column"!==o)return null;let a=i+32;return{x:a,width:Math.max(220,Math.min(300,window.innerWidth-a-16))}}function An(e,t){if(e.w(t))return!1;let n=e.resolved.get(t.id);return!n||"orphaned"===n.state&&!e.O.has(t.id)}var Tn=(e,t)=>!e.w(t)&&"moved"===e.resolved.get(t.id)?.state;function Pn(e){let t=et("div",{class:"col"});e.e.append(t);let n=new Map,o=null,r=new ResizeObserver(()=>c()),i=!0===window.matchMedia?.("(prefers-reduced-motion: reduce)").matches,a=t=>An(e,t);function l(t){let n=e.resolved.get(t.id),o=n?cn(t.anchor,n):null;return null===o?Number.POSITIVE_INFINITY:o+window.scrollY-4}let s=new WeakMap;function d(e,t=0){let n=`translateY(${Math.round(t)}px)`;if(i&&e.style.transform){if(e.style.transform!==n||s.has(e)){if(!s.has(e)){e.classList.add("hop");let t=()=>{+getComputedStyle(e).opacity>.01?requestAnimationFrame(t):(e.style.transform=s.get(e),s.delete(e),e.classList.remove("hop"))};window.setTimeout(t,200)}s.set(e,n)}}else e.style.transform=n}function c(){let r=[],i=[];for(let{o:e}of n.values()){let t=e.querySelector(".root>.tx");t&&(t.style.setProperty("--full",`${t.scrollHeight}px`),e.classList.toggle("long",t.scrollHeight>88))}for(let[t,o]of n){let n=l(o.thread);if(Number.isFinite(n))o.placed=n;else if(e.O.has(t)){if(null===o.placed){o.o.classList.add("wait");continue}n=o.placed}Number.isFinite(n)?r.push({id:t,M:n,height:o.o.offsetHeight}):i.push({id:t,height:o.o.offsetHeight})}let a=e.state.t,s=a?cn(a.anchor,a.resolved):null;o&&null!==s&&r.push({id:"draft",M:s+window.scrollY-4,height:o.o.offsetHeight});let c=o?"draft":e.state.i,p=r.find(e=>e.id===c),u=t.getBoundingClientRect().right>window.innerWidth-44?44:0;p&&(u||o)&&(p.M=Math.max(window.scrollY+8,Math.min(p.M,window.scrollY+window.innerHeight-u-10-p.height)));let h=function(e,t,n=10){let o=[...e].sort((e,t)=>e.M-t.M),r=new Array(o.length).fill(0),i=o.findIndex(e=>e.id===t),a=e=>o[e];if(i<0)o.forEach((e,t)=>{r[t]=0===t?e.M:Math.max(e.M,(r[t-1]??0)+a(t-1).height+n)});else{r[i]=a(i).M;for(let e=i+1;e<o.length;e++)r[e]=Math.max(a(e).M,(r[e-1]??0)+a(e-1).height+n);for(let e=i-1;e>=0;e--)r[e]=Math.min(a(e).M,(r[e+1]??0)-a(e).height-n)}return new Map(o.map((e,t)=>[e.id,r[t]??0]))}(r,c),f=Math.max(0,...r.map(e=>(h.get(e.id)??0)+e.height))+24;for(let e of i)h.set(e.id,f),f+=e.height+10;for(let[e,t]of[...[...n].map(([e,t])=>[e,t.o]),["draft",o?.o]])if(t){if(t.classList.contains("wait")){if(!h.has(e)&&t!==o?.o)continue;t.style.transition="none",t.style.transform=`translateY(${Math.round(h.get(e)??0)}px)`,t.offsetWidth,t.style.transition="",t.classList.remove("wait");continue}d(t,h.get(e))}}function p(t,n){t.thread=n,t.note=Qe(n),t.lost=a(n),t.moved=Tn(e,n),t.view.update(n,{lost:t.lost?n.anchor.snapshot:null,moved:t.moved})}function u(n){let o=a(n),i=Mn(n,e.F,{q:"column",lost:o?n.anchor.snapshot:null,moved:Tn(e,n)}),l=et("div",{class:"th wait","data-thread":n.id},et("button",{class:"opn sr",type:"button","data-thread":n.id}),i.element);return l.addEventListener("mouseenter",()=>e.L(n.id)),l.addEventListener("mouseleave",()=>e.L(null)),l.addEventListener("click",()=>e.open(n.id)),t.append(l),r.observe(l),{o:l,thread:n,lost:o,moved:Tn(e,n),placed:null,view:i}}function h(e){r.unobserve(e),e.classList.add("out"),window.setTimeout(()=>e.remove(),220)}return{m:function(i){tt(t,e.state.u);let l=new Set,s=null!==e.state.i||null!==e.state.t;for(let t of i){if(!e.j(t))continue;let o=n.get(t.id);if(!o&&e.state.t?.sending)continue;l.add(t.id),o?(o.thread!==t||o.lost!==a(t)||o.moved!==Tn(e,t)||o.note!==Qe(t))&&p(o,t):(o=u(t),n.set(t.id,o));let r=o.o,i=e.state.i===t.id;r.classList.toggle("on",i);let d=r.firstElementChild,c=Ln(t).length;d.setAttribute("aria-label",`Open thread: ${rt(t.root.text,60)}, ${$n(c)}`),d.setAttribute("aria-expanded",String(i)),tt(d,i);let h=r.querySelector(".more");h&&tt(h,!i),r.classList.toggle("dim",s&&!i),r.classList.toggle("hot",e.state.L===t.id&&!i),r.classList.toggle("resolved",t.resolved),r.classList.toggle("lost",o.lost)}for(let[e,t]of n)l.has(e)||(n.delete(e),h(t.o));(function(){let n=e.state.u?null:e.state.t;if(o&&o.of!==n&&(h(o.o),o=null,n||e.B(null)),!n)return;let i=!o;if(o)o.p.fe(n.label);else{let i=an(e,n),a=et("div",{class:"th on wait"},i.element);t.append(a),r.observe(a),o={o:a,p:i,of:n}}o.p.te(e.state.s&&!n.anchor.quote&&!n.anchor.point),i&&o.p.focus()})(),nt(t,i.filter(e=>l.has(e.id)).sort(kn(e)).map(e=>n.get(e.id).o),o?.o??null)&&t.offsetWidth,c()},N:function(){let n=Cn(e.root,!0);n&&(t.style.width=`${n.width}px`,t.style.transform=`translate(${n.x}px, ${-window.scrollY}px)`)},destroy(){r.disconnect(),e.B(null),t.remove()}}}var qn=22;function Nn(e,t){let n=new Map,o=et("div",{class:"tip",role:"tooltip"}),r=et("div",{class:"mark"}),i=et("div",{class:"pop",role:"dialog","aria-label":"Comment thread"});o.inert=i.inert=!0,e.e.append(r,o,i);let a,l=et("div",{class:"bub pin ghost","aria-hidden":"true"}),s=[],d=null,c=null,p=!1,u=null,h=!0===window.matchMedia?.("(prefers-reduced-motion: reduce)").matches,f=0,m=null,v=null,w=null,y=0,b=e=>s.find(t=>t.id===e)??null,x=()=>t.ge||e.state.u,k=!1,E=t=>{let n=e.resolved.get(t.id);return n?pn(t.anchor,n):null},S=()=>{let t=function(e){let t=window.innerWidth,n=vn();return{width:e&&!fn()?t-320:t,height:n.bottom,top:n.top}}(e.state.u),n=e.state.u||e.e.classList.contains("kb")?null:e.e.querySelector(".launch .mode")?.getBoundingClientRect();return n?.width&&(t.keep={left:e.state.s&&mn()?0:n.left,top:n.top}),t};function $(e,t,n){let{left:o,top:r}=function(e,t,n,o=12){if(!e.below&&e.x+14+t.width>n.width-o)return yn(e.p,t,n,o,0);let r=Math.max(o,e.below?Math.min(e.x,n.width-t.width-o):e.x+14),i=wn(r,t.width,n,o),a=e.below?e.y+8:e.y-12;return e.below&&a+t.height>i&&(a=e.y-t.height-40),{left:r,top:Math.max((n.top??0)+o,Math.min(a,i-t.height))}}(t,{width:e.offsetWidth||n,height:e.offsetHeight},S());e.style.left=`${o}px`,e.style.top=`${r}px`}function L(t){let n=t&&x()&&e.state.i!==t?b(t):null,r=n?E(n):null;if(!n||!r)return w=null,o.classList.remove("show"),void tt(o,!0);if(w!==n.id){let e=Ln(n).length;o.replaceChildren(et("div",{class:"tx clamp",dir:"auto"},...n.root.deleted?["Deleted"]:dt(n.root.text)),et("div",{class:"who"},`${g(n.root)}${e?` \xb7 ${e} ${1===e?"reply":"replies"}`:""}`)),w=n.id}$(o,r,260),o.classList.contains("show")||o.offsetWidth,o.classList.add("show"),o.inert=!1}function M(t){m=t,L(t),e.L(t)}function C(e){window.clearTimeout(y),null===e?y=window.setTimeout(()=>M(null),x()?400:0):M(e)}function A(t){let o=n.get(t.id);if(o)return o;let i=et("button",{class:"bub",type:"button","data-thread":t.id});return i.addEventListener("mouseenter",()=>C(t.id)),i.addEventListener("mouseleave",()=>C(null)),i.addEventListener("click",n=>{n.stopPropagation(),L(null),e.open(t.id)}),e.e.insertBefore(i,r),n.set(t.id,i),i}o.addEventListener("mouseenter",()=>window.clearTimeout(y)),o.addEventListener("mouseleave",()=>C(null)),o.addEventListener("click",t=>{t.stopPropagation();let n=w;n&&(window.clearTimeout(y),M(null),e.open(n))});let T=!1;function P(){let t=e.state.t,n=u&&t&&!t.anchor.quote&&!t.anchor.point?t.resolved.element:null;if(n){let{left:e,top:t,above:o}=yn(n.getBoundingClientRect(),{width:i.offsetWidth||hn(),height:i.offsetHeight},S(),12,mn()?60:44),r=null!==u?.above&&u?.above!==o;if(u&&(u.above=o),r&&N())return;return i.style.left=`${e}px`,void(i.style.top=`${t}px`)}let o=u&&t?pn(t.anchor,t.resolved):d?E(d):null;o&&$(i,o,hn())}let q=t=>e.state.s&&!t.anchor.quote&&!t.anchor.point;function N(e=()=>{}){return window.clearTimeout(f),h?(i.classList.remove("show"),f=window.setTimeout(()=>{e(),P(),i.classList.add("show")},220),!0):(e(),i.classList.add("glide"),f=window.setTimeout(()=>i.classList.remove("glide"),450),!1)}let R=e=>Math.min(Math.max(e,20),window.innerWidth-30),D=t=>{if(e.C(t)){let e=t.composedPath()[0];return null!==v&&!(e instanceof Element&&e.closest(".tip,.bub"))&&C(null),void(v=null)}let n=e.ve(t.clientX,t.clientY)?.id??null;n!==v&&(v=n,C(n))},z=t=>{if(e.C(t))return;let n=window.getSelection();if(n&&!n.isCollapsed||(e.state.s&&!e.state.paused?t.altKey:t.target instanceof Element&&t.target.closest(ln)))return;let o=e.ve(t.clientX,t.clientY);o&&(e.we(t),L(null),e.open(o.id))};return window.addEventListener("pointermove",D,{capture:!0,passive:!0}),window.addEventListener("click",z,!0),{m:function(o){s=o;let l=new Set;for(let t of o){if(!e.j(t)||t.anchor.quote)continue;let n=e.resolved.get(t.id);if(!n||"orphaned"===n.state)continue;l.add(t.id);let o=A(t);o.classList.toggle("done",t.resolved),o.classList.toggle("on",e.state.i===t.id),o.classList.toggle("pin",void 0!==t.anchor.point);let r=`Comment on ${Pe(n.element)}: ${rt(t.root.text,60)}`;o.getAttribute("aria-label")!==r&&o.setAttribute("aria-label",r)}nt(e.e,o.filter(e=>l.has(e.id)).sort(kn(e)).map(e=>n.get(e.id)),r);for(let[e,t]of n)l.has(e)||(t.classList.remove("in"),n.delete(e),window.setTimeout(()=>t.remove(),300));L(m),k!==e.state.u&&i.classList.contains("show")&&!h&&N(),k=e.state.u;let g=t.ge&&!e.state.u?e.state.t:null;if(g){let t=g.anchor.point??g.resolved.element;u?.of!==g?(window.clearTimeout(f),i.classList.remove("glide"),u={p:an(e,g),of:g,at:t,above:null},u.p.te(q(g)),i.replaceChildren(u.p.element),i.inert=!1,u.p.focus(),d=null,c=null,P(),i.classList.add("show")):u&&(u.at!==t&&(u.at=t,u.above=null,N(()=>u?.p.fe(g.label))),u.p.te(q(g)));let n=!e.f.E(g.anchor.view);return void(n!==T&&(T=n,i.classList.toggle("show",!n),i.inert=n,n||P()))}u&&(window.clearTimeout(f),i.classList.remove("glide"),u=null,T=!1,e.B(null));let v=x()&&!e.state.u&&e.state.i?b(e.state.i):null;if(!v||!e.j(v))return d=null,c=null,i.classList.remove("show"),void tt(i,!0);let w={q:"popover",quote:v.anchor.quote?.exact??null,moved:Tn(e,v)};d&&c&&d.id===v.id?(d!==v||a!==Qe(v)||p!==w.moved)&&(c.update(v,w),d=v,a=Qe(v),p=w.moved):(c=Mn(v,e.F,w),i.replaceChildren(c.element),d=v,a=Qe(v),p=w.moved,P(),i.classList.add("show"),i.inert=!1)},N:function(){let t=[],o=x()?null:Cn(e.root,!0);for(let[r,i]of n){let n=b(r),a=e.resolved.get(r),l=n&&a?sn(n.anchor,a):null;if(!l||l.y<-40||l.y>window.innerHeight+40){i.style.visibility="hidden";continue}let s=l.x=R(l.x),d=Math.max(s,(o?o.x:window.innerWidth)-30),c=qn;for(;t.some(e=>Math.abs(e.x-l.x)<qn&&Math.abs(e.y-l.y)<qn);)l.x+=c,l.x>d&&(c=-22,l.x=s-qn),l.x<20&&(c=qn,l.x=s,l.y+=qn);t.push(l),i.style.visibility="",i.style.left=`${l.x}px`,i.style.top=`${l.y}px`,i.classList.contains("in")||(i.offsetWidth,i.classList.add("in"))}let a=e.state.t,s=a?.anchor.point&&e.f.E(a.anchor.view)?sn(a.anchor,a.resolved):null;s?(l.style.left=`${R(s.x)}px`,l.style.top=`${s.y}px`,l.classList.contains("in")||(e.e.insertBefore(l,r),l.offsetWidth,l.classList.add("in"))):l.classList.contains("in")&&(l.classList.remove("in"),window.setTimeout(()=>l.classList.contains("in")||l.remove(),300)),i.classList.contains("show")&&P();let c=function(){if(!x())return null;let t=e.state.t;return t?t.anchor.quote||t.anchor.point||e.state.s?null:t.resolved.element:!d||d.anchor.quote||d.anchor.point?null:e.resolved.get(d.id)?.element??null}();r.classList.toggle("show",null!==c),c&&it(r,c.getBoundingClientRect(),4)},destroy(){window.clearTimeout(y),window.clearTimeout(f),window.removeEventListener("pointermove",D,!0),window.removeEventListener("click",z,!0),e.B(null);for(let e of n.values())e.remove();l.remove(),o.remove(),r.remove(),i.remove()}}}var Rn={display:"block",position:"static",clips:!1,off:!1},Dn="button link img figure region list listitem tab tabpanel article navigation complementary banner contentinfo form search group dialog menu menuitem checkbox switch radio slider textbox combobox option row cell heading table".split(" ").map(e=>`[role=${e}]`),zn="[data-pipeup-ignore],pipeup-place,.reveal>:is(.controls,.progress,.slide-number)",Hn=["button,a,input,select,textarea,label,summary,details,img,svg,canvas,video,picture,figure,figcaption,table,th,td","li,ul,ol,dl,dt,dd,p,h1,h2,h3,h4,h5,h6,blockquote,pre","section,article,aside,nav,header,footer,main,form,fieldset",...Dn].join(","),On="a,button,label,summary,[role=button],[role=link],[role=tab],[role=option],[role=menuitem]",Fn=`${On},input,select,textarea,img,svg,canvas,video,picture,[role=img]`,In=(e,t)=>Math.abs(e.left-t.left)<=2&&Math.abs(e.top-t.top)<=2&&Math.abs(e.width-t.width)<=2&&Math.abs(e.height-t.height)<=2;function Bn(e,t){let n=t.p(e);if(n.width<2||n.height<2)return!1;if(e.hasAttribute("data-pipeup-id"))return!0;let o=t.ne();return n.width*n.height<=.6*o.width*o.height&&(e.matches(Hn)||t.tt(e)||e.childElementCount>1&&!e.parentElement?.closest(On)&&t.nt(e))}function jn(e,t,n){if(e===t||!t.contains(e)||e.closest(zn))return null;let o=null;for(let r=e;r&&r!==t&&!o;r=r.parentElement)Bn(r,n)&&(o=r);if(!o||o.hasAttribute("data-pipeup-id"))return o;let r=n.p(o);for(let e=o.parentElement;e&&e!==t&&In(n.p(e),r);e=e.parentElement)if(e.hasAttribute("data-pipeup-id"))return e;return o}function Wn(e,t,n){let o=n.p(e);for(let r=e.parentElement;r&&r!==t;){let e=jn(r,t,n);if(!e)return null;if(!In(n.p(e),o))return e;r=e.parentElement}return null}var Kn=(e,t)=>e.left<t.left+t.width&&t.left<e.left+e.width&&e.top<t.top+t.height&&t.top<e.top+e.height,Vn=(e,t)=>{let n=Math.max(e.left,t.left),o=Math.max(e.top,t.top);return{left:n,top:o,width:Math.max(0,Math.min(e.left+e.width,t.left+t.width)-n),height:Math.max(0,Math.min(e.top+e.height,t.top+t.height)-o)}};function Un(e,t,n=()=>!0){let o=[],r=(e,i,a,l,s,d)=>{for(let c of e.children){if(c.matches(zn)||"true"===c.getAttribute("aria-hidden")||!n(c))continue;let e=t.flow?.(c)??Rn,p=c.offsetParent,u="fixed"===e.position||"absolute"===e.position&&!!l&&!(p&&l.contains(p)),h=u?null:a,f=t.p(c),m=f.width>0&&f.height>0;if(h&&m&&!Kn(f,h))continue;let g=c.matches(On),v=(e.display.startsWith("inline")||d)&&!c.matches(Fn)&&("inline"===e.display||f.height<=48),w=f.width<=24&&f.height<=24,y=i;(c.hasAttribute("data-pipeup-id")||!s&&!e.off&&!v&&(!w||g))&&Bn(c,t)&&(i&&In(t.p(i.o),f)?(c.hasAttribute("data-pipeup-id")||!i.o.hasAttribute("data-pipeup-id"))&&(i.o=c):o.push(y={o:c,V:i,$:0}));let b=e.clips&&m;r(c,y,b?h?Vn(h,f):f:h,b?c:u?null:l,s||g,/^inline-(flex|grid)$/.test(e.display)||d&&/(flex|grid)$/.test(e.display))}};r(e,null,null,null,!1,!1);for(let e=o.length-1;e>=0;e--){let t=o[e];t.V&&(t.V.$=Math.max(t.V.$,t.$+1))}return o}var Yn=(e,t)=>e.filter(e=>e.$<=t&&(!e.V||e.V.$>t)),_n="a,button,summary,[role=button],[role=link],[role=switch],[role=tab],[role=checkbox],input[type=checkbox],input[type=radio],input[type=submit],input[type=button],input[type=reset]",Gn=`${_n},input,select,textarea,[contenteditable]:not([contenteditable=false]),[tabindex]:not([tabindex="-1"])`,Zn=["click","dblclick","auxclick","submit","contextmenu","dragstart"],Jn=[...["over","out","enter","leave","down","up"].flatMap(e=>[`pointer${e}`,`mouse${e}`]),"mousemove","touchstart","touchmove","touchend","touchcancel"],Xn=["pointerup","pointercancel"],Qn="Tab moves between blocks \xb7 \u2191 \u2193 change level \xb7 Enter comments \xb7 Hold Space to use the page \xb7 Esc to finish \xb7 F7 selects text";var eo=`${zn},input,textarea,select,[contenteditable]:not([contenteditable=false])`;function to(e){let t=et("button",{type:"button","aria-label":"Comment",title:"Comment"},ut("comment",17)),n=et("div",{class:"selbar"},t);n.inert=!0,e.e.append(n);let o=null,r=0,i=!1,a=()=>e.state.s||"comment-mode"!==Et("data-pipeup-select"),l=t=>{let n=t&&(t.nodeType===Node.ELEMENT_NODE?t:t.parentElement);return!!n&&e.root.contains(n)&&!n.closest(eo)};function s(){if(!o)return;let t=o.cloneRange();t.selectNodeContents(ve(o.commonAncestorContainer,e.root));let r=o.getBoundingClientRect(),{left:i,top:a}=function(e,t,n,o,r,i=!1){let a=n+8;if(i){let n=r.width-o.width-4,i=t.left+t.width<n-8?t.top+t.height/2:e.top+t.height/2;return{left:n,top:Math.max((r.top??0)+8,Math.min(i-o.height/2,r.height-o.height-8))}}return a+o.width>r.width-8?bn(e,o,r):{left:a,top:t.top+t.height/2-o.height/2}}(r,[...o.getClientRects()].filter(e=>e.width).at(-1)??r,t.getBoundingClientRect().right,{width:n.offsetWidth||36,height:n.offsetHeight||34},{width:window.innerWidth,height:window.innerHeight},mn());n.style.left=`${i}px`,n.style.top=`${a}px`}function d(){o=null,n.inert=!0,n.classList.remove("show")}function c(t=!1){let r=ot();a()&&r&&l(r.anchorNode)&&l(r.focusNode)?(!o&&!t&&e.state.s&&e.T("Enter comments on the selected words"),o=r.getRangeAt(0).cloneRange(),s(),n.inert=!1,n.classList.add("show")):d()}t.addEventListener("mousedown",e=>e.preventDefault()),t.addEventListener("click",t=>{if(t.stopPropagation(),e.state.t&&!e.S())return e.re();let n,r=o;if(!r)return;try{n=we(r,e.root,e.f.view(r.commonAncestorContainer))}catch(t){return e.oe(t),void d()}let i=rt(r.toString().replace(/\s+/g," ").trim(),60);window.getSelection()?.removeAllRanges(),d(),e.lt({anchor:n,label:`\u201c${i}\u201d`,ranges:[r],resolved:{state:"attached",element:null,range:r}})});let p=()=>{window.clearTimeout(r),r=window.setTimeout(()=>i||c(),250),o&&(ot()||d())};document.addEventListener("selectionchange",p);let u=t=>{"keyup"!==t.type&&(i="mousedown"===t.type),!i&&!e.C(t)&&window.setTimeout(()=>c("mouseup"===t.type),0)};window.addEventListener("mousedown",u,!0),window.addEventListener("mouseup",u,!0),window.addEventListener("keyup",u,!0);let h=n=>{"Enter"!==n.key||!o||!e.state.s||e.C(n)||n.target instanceof Element&&n.target.closest(`${eo},${_n}`)||(n.preventDefault(),n.stopPropagation(),t.click())};return window.addEventListener("keydown",h,!0),{m(){o&&!a()&&d()},N(){o&&s()},destroy(){window.removeEventListener("mousedown",u,!0),window.removeEventListener("mouseup",u,!0),window.removeEventListener("keyup",u,!0),window.removeEventListener("keydown",h,!0),window.clearTimeout(r),document.removeEventListener("selectionchange",p),n.remove()}}}async function no(e,t){try{return void await navigator.clipboard.writeText(e)}catch{}let n=t.getRootNode().activeElement??document.activeElement,o=document.createElement("textarea");o.value=e,o.setAttribute("readonly",""),o.style.cssText="position:fixed;opacity:0;pointer-events:none",t.append(o),o.select();let r=document.execCommand("copy");if(o.remove(),n instanceof HTMLElement&&n.focus({preventScroll:!0}),!r)throw new Error("pipeup: your browser blocked copying")}var oo="Hidden on the page",ro=["auto","light","dark"];function io(e){let t=[et("span",{class:"n"}),et("span",{class:"n"})],n=ut("comment",22,1.4);n.lastElementChild.setAttribute("stroke-width","1.6");let o=et("span",{class:"cnt"},ut("bubble",28,1.4),ut("wide",28,1.4),...t),r=et("button",{class:"mode",type:"button","aria-label":"Comment","aria-keyshortcuts":nn,"aria-pressed":"false"},et("span",{class:"plus"},n),o,et("span",{class:"dot"})),i=document.createTextNode(""),a=et("span",{class:"ttip","aria-hidden":"true"},et("span",{},i,et("small",{},en))),l=et("button",{class:"mm",type:"button","aria-label":"More","aria-haspopup":"menu","aria-expanded":"false"},ut("more",15,3)),s=et("div",{class:"launch"},r,a,l),d=et("div",{class:"menu",role:"menu","aria-label":"Comments"}),c=et("div",{class:"list",role:"list","aria-label":"Comments"}),p=et("button",{class:"ib",type:"button","aria-label":"Close"},ut("close")),u=(e,t,n,o)=>{let r=et("button",{class:"tg",type:"button","aria-label":e,"aria-description":t,"data-tip":t,"aria-pressed":"false"},n,e);return r.addEventListener("click",e=>{e.stopPropagation(),o()}),r},h=u("For you","Only comments that mention you",ut("at",16,1.8),()=>e.l.toggleMine()),f=u("Resolved","Show resolved comments too",ut("resolve",22,1.7),()=>e.l.dt()),v=et("div",{class:"lns"}),w=new Map,y=et("span",{class:"ma"}),b=et("span",{class:"lb"}),x=et("button",{class:"fs",type:"button",role:"switch","aria-checked":"false","aria-keyshortcuts":nn},"Comment",et("small",{class:"ks","aria-hidden":"true"},en),et("span",{class:"sw","aria-hidden":"true"}));x.addEventListener("click",t=>{t.stopPropagation(),e.ie(!e.state.s,!e.state.s&&0===t.detail)});let k=et("button",{class:"ib",type:"button","aria-label":"More","aria-haspopup":"menu","aria-expanded":"false"},ut("more",15,3)),E="",S=et("div",{class:"all",role:"dialog","aria-label":"All comments"},et("div",{class:"hh",role:"heading","aria-level":"2"},"All comments"),et("div",{class:"hd"},h,f,et("span",{class:"sp"}),p),v,c,et("div",{class:"pf"},y,b,x,k)),$=document.createElementNS("http://www.w3.org/2000/svg","svg");$.setAttribute("class","cx"),$.setAttribute("aria-hidden","true");let L=document.createElementNS("http://www.w3.org/2000/svg","path"),M=document.createElementNS("http://www.w3.org/2000/svg","circle");M.setAttribute("r","4"),$.append(L,M),d.inert=S.inert=!0,e.e.append(d,s,$,S);let C=!1,A=null,T=0,P=[],q=0,N=null,R=null,D=null,z=!0===window.matchMedia?.("(prefers-reduced-motion: reduce)").matches,H=()=>{},O=t=>{C=e.state.l=t,e.taps(),t&&e.addons.flush(),window.clearTimeout(T),T=0,t||A?.(!0),t?d.classList.toggle("inp",e.state.u):H(),d.classList.toggle("show",t),tt(d,!t),l.setAttribute("aria-expanded",String(t)),k.setAttribute("aria-expanded",String(t))},F=(t,n=!1)=>{if(e.state.u===t)return;e.keepReplies();let o=t?e.state.i:null;o&&(e.state.i=null),e.state.u=t,e.m(),o&&P.some(e=>e.id===o)?ge(o,!0):t&&e.state.t?e.focusDraft():t?(I(c)[0]??p).focus({preventScroll:!0}):n&&r.focus({preventScroll:!0})},I=(e=d)=>[...e.querySelectorAll(".mi")].filter(e=>e.offsetParent&&!e.closest("[inert]")),B=()=>d.getRootNode().activeElement,j=()=>{O(!1),r.focus({preventScroll:!0})},W=e=>{let t=I(e.currentTarget);if(0===t.length)return;let n=B(),o=t.indexOf(n),r=n=>{e.preventDefault(),t[(n+t.length)%t.length]?.focus({preventScroll:!0})};"ArrowDown"===e.key?r(o+1):"ArrowUp"===e.key?r(o<0?t.length-1:o-1):"Home"===e.key?r(0):"End"===e.key&&r(t.length-1)};d.addEventListener("keydown",W),c.addEventListener("keydown",W),p.addEventListener("click",e=>{e.stopPropagation(),F(!1,!0)});let K=t=>An(e,t),V=t=>Tn(e,t),U=t=>P.filter(n=>!(n.resolved||void 0!==t&&(e.G(n)!==t||t&&e.w(n)))).length,Y=t=>{if(e.w(t)){let e=t.anchor.view?.[Ne];return e?`In the ${e} edition`:"From before editions"}let n=t.anchor.view?.slide,o=e.f.E(t.anchor.view)?"":Re(t.anchor.view);return n&&null!==e.f.slide()?`On slide ${n}`:o?`In ${o}`:oo},_=(e,t,n=!1)=>{let o=new Set(t),r=new Set(e.childNodes),i=new Map,a=new Set(t.map(G));for(let e of r){if(o.has(e))continue;let t=G(e);t&&a.has(t)&&i.set(t,e.offsetHeight),n&&J&&e instanceof HTMLElement&&!i.has(t)?X(e):e.remove()}let l=e.firstChild;for(let n of t){for(;l&&l!==n&&Z.has(l);)l=l.nextSibling;l===n?l=n.nextSibling:e.insertBefore(n,l)}if(n&&J)for(let e of t)e instanceof HTMLElement&&(r.has(e)?Z.delete(e)&&Q(e,e.offsetHeight):Q(e,i.get(G(e))??0))},G=e=>e instanceof HTMLElement?e.firstElementChild?.dataset.thread:void 0,Z=new WeakSet,J=!1,X=e=>{if(!Z.has(e)){if(e.classList.contains("out"))return e.remove();Z.add(e),e.style.height=`${e.offsetHeight}px`,e.offsetHeight,e.classList.add("out"),z||(e.style.height="0"),setTimeout(()=>Z.delete(e)&&e.remove(),340)}},Q=(e,t)=>{let n=e.style;n.transition="none",e.classList.remove("out"),n.height=n.maxHeight=n.overflow="";let o=e.offsetHeight,r=o>t?"maxHeight":"height";(z||!t)&&e.classList.add("out"),z||(n.overflow="hidden",n[r]=`${t}px`),e.offsetHeight,n.transition="",e.classList.remove("out"),!z&&(n[r]=`${o>t?o+40:o}px`,setTimeout(()=>n[r]=n.overflow="",360))},ee=new Map,te=(e,t,n="",o=e)=>{let[r,i,a]=ee.get(o)??[];return(!r||!i||!a)&&ee.set(o,[r=et("div",{role:"listitem"}),i=et("div",{class:"sec","aria-hidden":"true"}),a=et("div",{role:"list"})]),a.setAttribute("aria-label",n?`${e} \xb7 ${n}`:e),i.replaceChildren(e,n&&et("b",{},n)),_(r,[i,a]),_(a,t,!0),r},ne=et("div",{class:"sec",role:"listitem"}),oe=!1,re=et("button",{class:"sec fold",type:"button"});re.addEventListener("click",e=>{e.stopPropagation(),oe=!oe,he()});let ie=et("div",{role:"listitem"}),ae=et("div",{role:"list","aria-label":"Earlier editions"}),le=(e,t,n)=>(re.setAttribute("aria-expanded",String(n)),re.replaceChildren(`Earlier editions \xb7 ${t} open`,ut("chev",12)),_(ie,n?[re,ae]:[re]),_(ae,n?e:[],!0),ie);function se(t,n){let o=e.f.slide(),r=new Map;for(let n of t){let t=n.thread,i=null!==o?t.anchor.view?.slide??o:e.G(t)?e.f.E(t.anchor.view)?"":Re(t.anchor.view):null;r.set(i,[...r.get(i)??[],n])}if(null===o){let e=r.get(null)??[];return r.delete(null),[...e.flatMap(n),...[...r].map(([e,t])=>te(e||oo,t.flatMap(n)))]}return[...r].sort(([e],[t])=>Number(e)-Number(t)||0).map(([e,t])=>te(`Slide ${e} \xb7 ${t.filter(e=>!e.thread.resolved).length} open`,t.flatMap(n),e===o?"This slide":"",`slide:${e}`))}let de=null,ce=new Map,pe=new Set,ue={...e.F,get me(){return e.F.me},resolve:async t=>{let n=ce.get(t)?.card;n&&!e.state.I&&!z&&(pe.add(t),n.style.height=`${n.offsetHeight}px`,n.offsetHeight,n.classList.add("out"),n.style.height="0",await new Promise(e=>setTimeout(e,340))),await e.F.resolve(t),pe.delete(t),n?.style.removeProperty("height"),e.m()}};function he(){let t=B(),n=t?.dataset.thread,o=null!==R&&R.element.contains(t),r=[...ce.values()].find(e=>e.view.element.contains(t)),i=()=>[...r.view.element.querySelectorAll("button,textarea")],a=r?i().indexOf(t):-1,l=r?I(c).indexOf(r.card.firstChild):-1,s=e.l.all(),d=s.filter(t=>!t.thread.resolved||e.state.I||t.thread.id===N).filter(t=>!e.state.mine||((e,t)=>[e.root,...e.root.replies].some(e=>e.author!==t&&!e.deleted&&qt(e,Rt(t))))(t.thread,e.doc.me));f.setAttribute("aria-pressed",String(e.state.I)),h.setAttribute("aria-pressed",String(e.state.mine));let p=e.l.name();if(b.textContent=p||m(e.doc.me),vt(e.doc.me,p)!==E){E=vt(e.doc.me,p);let t=wt(e.doc.me,p);t.classList.add("in"),y.replaceChildren(t)}x.setAttribute("aria-checked",String(e.state.s));let u=e.state.t;D&&D.of!==u&&(D=null,u||e.B(null));let v=u&&!D;if(u&&!D){N=R=null;let t=an(e,u);D={of:u,p:t,card:et("div",{class:"cd open new",role:"listitem"},t.element)}}D&&(D.p.fe(u.label),D.p.te(!1)),de&&de.id!==N&&(de=null);let w=u&&(u.resolved.range?.startContainer??u.resolved.element),k=w?d.find(t=>{let n=xn(e,t.thread);return n&&4&w.compareDocumentPosition(n)})?.thread.id??null:null,S=t=>{let n,o=t.thread,r=o.id===N,i=Ln(o).length,a=[i?$n(i):"",...o.root.reactions.map(e=>`${e.emoji} ${e.by.length}`)].filter(Boolean).join(" \xb7 "),l=e.w(o)?`${Y(o)} \xb7 \u201c${rt(o.anchor.snapshot,80)}\u201d`:K(o)?`\u201c${rt(o.anchor.snapshot,80)}\u201d`:o.anchor.quote?`\u201c${rt(o.anchor.quote.exact,80)}\u201d`:t.location.where,s=et("button",{class:"mi",type:"button","aria-expanded":String(r),"data-thread":o.id},et("span",{class:"sr"},[g(o.root),He(o.root.at,Date.now()),V(o)&&"Moved",l,o.root.text,a].filter(Boolean).join(", ")));if(s.addEventListener("click",e=>{e.stopPropagation(),ge(o.id)}),r&&R){if(R.update(o,fe(o,l)),!de){let e=et("div",{class:"xr",role:"region","aria-label":"Comment thread"},R.element);e.addEventListener("click",e=>{let t=e.target;t.closest(".root>.hdr")&&!t.closest("button")&&ve(!0)}),de={id:o.id,card:et("div",{role:"listitem"}),xr:e}}n=de.card,n.className="cd open"+(o.resolved?" done":""),_(n,[s,de.xr])}else{let e={q:"card",note:l,rest:a,quote:o.anchor.quote?.exact,moved:V(o)},t=ce.get(o.id);t?t.view.update(o,e):ce.set(o.id,t={card:et("div",{role:"listitem"}),view:Mn(o,ue,e)}),n=t.card,n.className=`cd${o.resolved?" done":""}${pe.has(o.id)?" out":""}`,_(n,[s,t.view.element])}return D&&o.id===k?[D.card,n]:[n]},$=d.filter(e=>K(e.thread)),L=d.filter(t=>e.w(t.thread)),M=d.filter(t=>!e.w(t.thread)),C=oe||L.some(e=>e.thread.id===N);ne.textContent=e.state.mine?"No comments mention you":L.length?"No open comments on this edition":"No open comments",_(c,[...M.length||D?[]:[ne],...se(M.filter(e=>!K(e.thread)),S),...D&&null===k?[D.card]:[],...$.length?[te("No longer on the page",$.flatMap(S))]:[],...L.length?[le(C?L.flatMap(S):[],s.filter(t=>e.w(t.thread)&&!t.thread.resolved).length,C)]:[]],!0),J=!0;for(let e of ce.keys())d.some(t=>t.thread.id===e)||ce.delete(e);let A=B();v?D.p.focus():D?.card.contains(t)&&!D.card.contains(A)?D.p.ue()():o&&!R.element.contains(A)?R.element.querySelector("textarea")?.focus({preventScroll:!0}):r&&A!==t?(r.card.isConnected?i()[a]:I(c)[Math.min(l,I(c).length-1)])?.focus({preventScroll:!0}):n&&A!==t&&I(c).find(e=>e.dataset.thread===n)?.focus({preventScroll:!0})}function fe(t,n){let o=!K(t)&&e.G(t);return{q:"popover",quote:t.anchor.quote?.exact??null,lost:K(t)||o?t.anchor.snapshot:null,place:o?Y(t):null,moved:V(t),note:!fn()||K(t)||o||t.anchor.quote?null:n}}let me="";function ge(t,n=!1){if(N===t)return ve(!0);let o=P.find(e=>e.id===t);if(o){if(e.keepReplies(),N=me=t,R=Mn(o,{...e.F,close:()=>ve(!0)},fe(o)),e.seen(o),he(),e.putReply(t),mn()||R.element.querySelector("textarea")?.focus({preventScroll:!0}),n&&c.querySelector(".mi.open")?.scrollIntoView({block:"nearest"}),!e.G(o))return we(o,!n);e.state.t&&!e.S()||e.f.ee(o.anchor.view??{}).then(()=>{e.Ne();let n=P.find(e=>e.id===t);n&&me===t&&N===t&&we(n)})}}function ve(t=!1){if(!N)return;let n=N;e.keepReplies(),N=R=null,e.L(null),he(),t&&I(c).find(e=>e.dataset.thread===n)?.focus({preventScroll:!0})}function we(t,n=!0){let o=e.resolved.get(t.id),r=o&&!K(t)?o.element??o.range?.startContainer.parentElement??null:null;n&&r?.scrollIntoView({block:"center",inline:"nearest",behavior:z?"auto":"smooth"}),r&&e.L(t.id)}function ye(t,n){let o=n?n.resolved:e.resolved.get(t.id),r=o?.element??o?.range?.startContainer.parentElement;if(!o||fn()||t&&(K(t)||e.G(t))||!1===r?.checkVisibility?.({visibilityProperty:!0}))return null;let i=t?e.e.querySelector(`.bub[data-thread="${t.id}"]`)?.getBoundingClientRect():void 0,a=o.range?dn(o).at(-1):void 0,l=r?.closest("p,li,h1,h2,h3,h4,h5,h6,blockquote,td,th,figcaption,div")?.getBoundingClientRect().right,s=o.element?.getBoundingClientRect(),d=pn(n?n.anchor:t.anchor,o),c=i?.width?{x:i.right+1,y:i.top+i.height/2,from:"right",bubble:!0}:a?{x:Math.max(a.right,l??0)+4,y:(a.top+a.bottom)/2,from:"right"}:s?{x:s.left+s.width/2,y:s.top,from:"top"}:d&&{x:d.x,y:d.y,from:"right"};return c&&c.x>=0&&c.x<=window.innerWidth-320&&c.y>=0&&c.y<=window.innerHeight?c:null}function be(e,t,n=!1,...o){let r=et("button",{class:"mi",type:"button",role:n?"menuitemcheckbox":"menuitem"},e,et("span",{class:"lb"}),...o,n&&et("span",{class:"sw","aria-hidden":"true"}),et("span",{class:"tt","aria-hidden":"true"}));return r.addEventListener("click",e=>{e.stopPropagation(),t(e)}),r}let xe=(e,t,n,o)=>{let r=e.querySelector(".lb");r.textContent!==t&&(r.textContent=t),e.querySelector(".tt").textContent=n,e.setAttribute("aria-description",n),void 0!==o&&e.setAttribute("aria-checked",String(o))},ke=()=>et("div",{class:"sep",role:"separator"}),Ee=et("span",{class:"ma"}),Se=et("span",{class:"kc"}),$e="",Le=be(Ee,function(){let t=et("input",{class:"input",type:"text",maxlength:"80","aria-label":"Your name"});t.value=e.l.name();let n=et("div",{class:"ed"},Ee.cloneNode(!0),t),o=(r,i=!1)=>{if(A!==o)return;A=null;let a=t.value.trim();r&&a&&a!==e.l.name()&&e.l.rename(a).then(Ge),n.replaceWith(Le),i&&Le.focus({preventScroll:!0})};A=o,t.addEventListener("keydown",e=>{e.stopPropagation(),("Enter"===e.key||"Escape"===e.key)&&(e.preventDefault(),o("Enter"===e.key,!0))}),t.addEventListener("blur",()=>o(!0)),Le.replaceWith(n),t.focus({preventScroll:!0})},!1,Se);Le.dataset.item="name";let Me=be(ut("copy"),()=>{j(),e.l.copyAll("ai")}),Ce=be(ut("lines"),()=>{j(),e.l.copyAll("text")}),Ae=et("div",{class:"subs",role:"group"},et("div",{},Me,Ce)),Te=be(ut("copy"),()=>Pe("true"!==Te.getAttribute("aria-expanded")),!1,et("span",{class:"chev"},ut("chev",13))),Pe=(e,t=!0)=>{Te.setAttribute("aria-expanded",String(e)),Ae.classList.toggle("open",e),tt(Ae,!e),t&&(e?Me:Te).focus({preventScroll:!0})};H=()=>Pe(!1,!1),H(),Te.addEventListener("keydown",e=>{"ArrowRight"===e.key&&"true"!==Te.getAttribute("aria-expanded")&&(e.preventDefault(),Pe(!0))}),Ae.addEventListener("keydown",e=>{"ArrowLeft"===e.key&&(e.preventDefault(),Pe(!1))});let qe=et("span",{class:"kc"}),De=be(ut("look"),()=>{e.l.setLook(ro[(ro.indexOf(e.l.look())+1)%3]),Ge()},!1,qe),ze=et("span",{class:"kc"}),Oe=be(ut("list"),()=>{O(!1),Oe.dataset.item="all",F(!0)},!1,ze),Fe=be(ut("hide"),()=>{e.l.setHide(!e.state.hide),Ge()},!0),Ie=be(ut("comment"),t=>{let n=!e.state.s&&0===t.detail;e.ie(!e.state.s,n),n?O(!1):e.state.s&&mn()&&(window.clearTimeout(T),T=window.setTimeout(()=>C&&j(),600))},!0,et("span",{class:"kc ks","aria-hidden":"true"},en));Ie.dataset.item="comment",Ie.setAttribute("aria-keyshortcuts",nn);let Be=et("div",{class:"sec",role:"presentation"}),je="Only in this browser until you send them.",We=ke(),Ke=ke(),Ve=new Map,Ue=t=>{let n=Ve.get(t);return n||(n=be(ht(t.icon,15),()=>{t.checked||j(),Promise.resolve().then(()=>t.select()).catch(t=>e.oe(t)).finally(()=>C&&Ge())},!!t.checked,et("span",{class:"kc"})),Ve.set(t,n)),n},Ye=-1,_e=e=>{try{return e()}catch(e){return globalThis.reportError?.(e),""}};function Ge(){let t=U(),n=e.l.name(),o=n||m(e.doc.me);if(xe(Le,o,n?"The name on your comments":"Add a name to show on your comments"),Le.setAttribute("aria-label",`${o}, ${n?"edit":"add"} your name`),Se.replaceChildren(n?ut("edit",13):"Add name"),vt(e.doc.me,n)!==$e){$e=vt(e.doc.me,n);let t=wt(e.doc.me,n);t.classList.add("in"),Ee.replaceChildren(t)}xe(Te,"Copy comments","As Markdown, with where each thread is, or as text"),xe(Me,"As Markdown","With where each thread is, ready for an AI or a document"),xe(Ce,"As text","Just the words");let r=["Automatic","Light","Dark"][ro.indexOf(e.l.look())];xe(De,"Theme","Automatic follows the page; press to change"),qe.textContent=r,xe(Oe,"All comments","Every thread, and where it is"),ze.textContent=t?String(t):"",Be.textContent=e.addons.Me()||je,!Be.isConnected&&d.contains(Le)&&d.prepend(Be);for(let t of e.addons.z){let e,n=Ve.get(t);if(n){try{e=t.checked?.()}catch(e){globalThis.reportError?.(e)}xe(n,_e(t.label),_e(t.hint),e),n.querySelector(".kc").textContent=t.count?_e(t.count):""}}xe(Fe,"Hide comments",e.state.hide?"Comments are hidden on this page until you turn this off":"Hides the comments on this page until you turn this off",e.state.hide),xe(Ie,"Start commenting",e.state.s?"Turn off to use the page as normal":"Choose any part of the page to comment on it",e.state.s)}function Ze(){Ge(),(Ye!==e.addons.se||!d.contains(Le))&&(d.replaceChildren(Le,We,Te,Ae,De,Oe,...e.addons.z.map(Ue),Ke,Fe,Ie),Ye=e.addons.se,Ge())}k.addEventListener("click",e=>{if(e.stopPropagation(),C)return O(!1);Ze(),O(!0),0===e.detail&&I()[0]?.focus({preventScroll:!0})});let Je=e=>{Ze(),O(!0),e&&I().at(-1)?.focus({preventScroll:!0})},Xe=!1,Qe=0;r.addEventListener("pointerdown",e=>{Xe=!1,window.clearTimeout(Qe),"mouse"!==e.pointerType&&(Qe=window.setTimeout(()=>{Xe=!0,Je(!1)},500))});for(let e of["pointerup","pointercancel","pointerleave"])r.addEventListener(e,()=>window.clearTimeout(Qe));r.addEventListener("contextmenu",e=>{(Xe||mn())&&e.preventDefault()}),r.addEventListener("click",t=>{if(t.stopPropagation(),Xe)return void(Xe=!1);if(C)return void O(!1);let n=!e.state.s;e.ie(n,n&&0===t.detail)}),l.addEventListener("click",e=>{if(e.stopPropagation(),C)return j();Je(0===e.detail)}),r.addEventListener("keydown",e=>{C||!("ArrowUp"===e.key||"ContextMenu"===e.key||"F10"===e.key&&e.shiftKey)||(e.preventDefault(),e.stopPropagation(),Je(!0))});for(let e of[r,l,k])e.addEventListener("keydown",e=>{let t=I();!C||!t.length||"ArrowDown"!==e.key&&"ArrowUp"!==e.key||(e.preventDefault(),e.stopPropagation(),("ArrowDown"===e.key?t[0]:t.at(-1))?.focus({preventScroll:!0}))});let nt=t=>{let n=t.composedPath();C&&!n.includes(d)&&!n.includes(r)&&!n.includes(l)&&!n.includes(k)&&(O(!1),e.state.s&&!e.C(t)&&(e.we(t),t.preventDefault(),t.stopPropagation()))},ot=e=>{if(!C||"touch"===e.pointerType||"pointerout"===e.type&&e.relatedTarget)return;let t=e.composedPath();"pointerover"===e.type&&(t.includes(d)||t.includes(r)||t.includes(l)||t.includes(k))?(window.clearTimeout(T),T=0):T||(T=window.setTimeout(()=>{T=0,A||O(!1)},3e3))},it={n:0,label:""},at=()=>{let{n:t,label:n}=it,o=e.addons.Me(),a=`Comment${e.state.s?", comment mode on":""}${n?`, ${n}`:t?`, ${t} open`:""}${o?`, ${o}`:""}`;r.getAttribute("aria-label")!==a&&r.setAttribute("aria-label",a),r.setAttribute("aria-pressed",String(e.state.s));let l=n||(t>9?`${t} open`:""),s=[l,o].filter(Boolean).join(" \xb7 ")+(l||o?" \xb7 ":"");i.data!==s&&(i.data=s)},lt=e.addons.subscribe(t=>{at(),(()=>{for(let[t,n]of w)e.addons.listNotes.has(t)||(w.delete(t),n.row.classList.remove("show"),setTimeout(()=>n.row.remove(),320));for(let[t,n]of e.addons.listNotes){let o=w.get(t);if(!o){let e=et("span",{}),r=et("div",{class:"ln"},et("div",{class:"lw"},et("div",{class:"ag"},e)));r.dataset.addon=t,o={row:r,words:e,btn:null,note:n},w.set(t,o),v.append(r),requestAnimationFrame(()=>{r.offsetWidth,r.classList.add("show")})}if(o.note=n,o.words.textContent!==n.text&&(o.words.textContent=n.text),n.action&&!o.btn){let t=et("button",{type:"button"}),n=o;t.addEventListener("click",o=>{o.stopPropagation();let r=n.note.action;r&&(t.disabled=!0,r.run().catch(t=>e.oe(t)).finally(()=>{t.disabled=!1,e.m()}))}),o.btn=t,o.words.after(t)}else!n.action&&o.btn&&(o.btn.remove(),o.btn=null);o.btn&&n.action&&o.btn.textContent!==n.action.label&&(o.btn.textContent=n.action.label)}})(),C&&!A&&(t?Ze():Ge())});window.addEventListener("click",nt,!0),window.addEventListener("pointerover",ot,!0),window.addEventListener("pointerout",ot,!0);let st=t=>{if("Escape"!==t.key||t.isComposing||A||t.composedPath().some(e=>e instanceof Element&&e.matches(".rxp,.pm")))return;let n=t.composedPath()[0];if(n instanceof HTMLTextAreaElement&&n.value.trim())return;let o=n instanceof Element&&n.closest(".cd:not(.open,.new)");if(C&&Ae.contains(n))Pe(!1);else if(C)j();else if(o&&n!==o.firstChild){if(n instanceof HTMLTextAreaElement)return;o.firstChild.focus({preventScroll:!0})}else{if(!e.state.u||n instanceof HTMLTextAreaElement&&!S.contains(n))return;e.state.t?e.Y():N?ve(!0):F(!1,!0)}t.preventDefault(),t.stopPropagation()};return window.addEventListener("keydown",st,!0),e.registerList(e=>{N!==e&&ge(e,!0)}),{m(n){P=n;let i=U(!1);if(i!==q){if(i){let[e,n]=t[0].classList.contains("on")?t:[t[1],t[0]];n.textContent=i>9?"9+":String(i),o.classList.toggle("w",i>9),e.classList.remove("on"),n.classList.add("on")}r.classList.toggle("has",i>0),q=i}let a=U(!0),l=a?`${i} here \xb7 ${a} ${null!==e.f.slide()?"on other slides":"in other views"}`:"";r.classList.toggle("else",a>0),it={n:i,label:l},at(),r.classList.toggle("on",e.state.s),C&&!e.state.l&&O(!1),C&&Ge();let d=e.state.u;S.classList.toggle("full",fn()),S.classList.contains("show")!==d&&(S.classList.toggle("show",d),tt(S,!d),tt(s,d)),N&&(!d||!n.some(e=>e.id===N))&&(N=R=null,e.state.L=null),d?he():J=!1},N:function(){let t=N?P.find(e=>e.id===N):null,n=D?.card??(N?c.querySelector(".cd.open"):null),o=D?ye(null,D.of):t&&ye(t),r=n?.getBoundingClientRect(),i=c.getBoundingClientRect();if(!e.state.u||!o||!r?.width||r.top+12<i.top||r.top+12>i.bottom)return void $.classList.remove("show");let a,l=r.left,s=r.top+14;if("right"===o.from&&l-o.x>60){let e=o.x+28,t=o.y>=s?1:-1,n=Math.min(24,Math.abs(o.y-s)/2);a=`M${l} ${s}C${l-24} ${s} ${e} ${s} ${e} ${s+t*n}L${e} ${o.y-t*n}C${e} ${o.y} ${e} ${o.y} ${o.x} ${o.y}`}else{let e=o.y-8,t=l-40,n=e>=s?1:-1,r=Math.min(20,Math.abs(e-s)/2);a=`M${l} ${s}C${l-20} ${s} ${t} ${s} ${t} ${s+n*r}L${t} ${e-n*r}C${t} ${e} ${t} ${e} ${t-r} ${e}L${o.x+8} ${e}C${o.x} ${e} ${o.x} ${e} ${o.x} ${o.y}`}L.setAttribute("d",a),M.setAttribute("r",o.bubble?"0":"4"),M.setAttribute("cx",String(o.x)),M.setAttribute("cy",String(o.y)),$.classList.add("show")},destroy(){lt(),window.removeEventListener("click",nt,!0),window.removeEventListener("pointerover",ot,!0),window.removeEventListener("pointerout",ot,!0),window.clearTimeout(T),window.clearTimeout(Qe),window.removeEventListener("keydown",st,!0),e.registerList(null),d.remove(),S.remove(),$.remove(),s.remove()}}}var ao="[data-pipeup-slide]",lo=["scroll","resize","keyup","click","transitionend","slidechanged"],so=null,co=null,po=new Set,uo=new Set,ho=e=>{try{e()}catch(e){globalThis.reportError?.(e)}};function fo(e){let t=null;if(e){t={};let n=0;for(let[o,r]of Object.entries(e))if(!("string"!=typeof r||"slide"===o||o===Ne||o.length>64||r.length>S)){if(++n>=16)break;t[o]=r}}so=t;for(let e of uo)e()}function mo(e){return po.add(e),()=>{po.delete(e)}}function go(e){co="function"==typeof e?.current&&"function"==typeof e.go?e:null}function vo(){let e=Et("data-pipeup-edition")?.trim()??"";return e&&e.length<=S?e:null}var wo=(e,t)=>null!==t&&(e?.[Ne]??"")!==t,yo=()=>{let e=window.Reveal;return"function"==typeof e?.getIndices&&"function"==typeof e.slide?e:null};var bo,xo="#534AB7";function ko(e,t){let n=function(e){let t=/rgba?\(\s*([\d.]+)[\s,]+([\d.]+)[\s,]+([\d.]+)(?:\s*[,/]\s*([\d.]+%?))?\s*\)/.exec(e);if(!t||void 0===t[1]||void 0===t[2]||void 0===t[3])return null;let n=void 0===t[4]?1:t[4].endsWith("%")?parseFloat(t[4])/100:parseFloat(t[4]);return{r:Number(t[1]),g:Number(t[2]),b:Number(t[3]),a:n}}(e);if(n||!e||"transparent"===e)return n;try{if(bo??=t.createElement("canvas").getContext("2d",{willReadFrequently:!0})??null,!bo)return null;bo.clearRect(0,0,1,1),bo.fillStyle="#000",bo.fillStyle=e,bo.fillRect(0,0,1,1);let[n,o,r,i]=bo.getImageData(0,0,1,1).data;return{r:n,g:o,b:r,a:i/255}}catch{return null}}function Eo(e){let t=e=>{let t=e/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4};return.2126*t(e.r)+.7152*t(e.g)+.0722*t(e.b)}var So=[[.92,.25],[.92,.6],[.5,.45]];function $o(e){let t=e.defaultView,n=e.documentElement,o=t?.getComputedStyle(n).colorScheme||"",r=/dark/.test(o)&&(!/light/.test(o)||!0===t?.matchMedia?.("(prefers-color-scheme: dark)").matches),i=t?ko(t.getComputedStyle(n).backgroundColor,e):null;return t&&e.body&&(!i||i.a<.5)&&(i=ko(t.getComputedStyle(e.body).backgroundColor,e)),i&&i.a>=.5?i:r?{r:0,g:0,b:0}:{r:255,g:255,b:255}}function Lo(e,t){let n=e.ownerDocument,o=n.defaultView,r="dark"===t;if(!o)return{font:"system-ui, sans-serif",accent:xo,dark:r,on:"#fff"};let i=n.documentElement,a=o.getComputedStyle(e).fontFamily||"system-ui, sans-serif",l=(o.getComputedStyle(i).getPropertyValue("--pipeup-accent")||i.style.getPropertyValue("--pipeup-accent")).trim(),s=e.querySelector("a[href]"),d=s?o.getComputedStyle(s).color:"",c=l||"rgb(0, 0, 238)"!==d&&d,p=c?ko(c,n):null,[u,h,f]=r?[27,27,25]:[255,255,255],m=p&&((e,t)=>(Math.max(e,t)+.05)/(Math.min(e,t)+.05))(Eo(p),Eo({r:.12*p.r+.88*u,g:.12*p.g+.88*h,b:.12*p.b+.88*f}))>=4.5?c:r?"#9A94EE":xo,g=ko(m,n);return{font:a,accent:m,dark:r,on:g&&Eo(g)>.19?"#111":"#fff"}}function Mo(e,t){e.style.setProperty("--pu-font",t.font),e.style.setProperty("--pu-accent",t.accent),e.style.setProperty("--pu-on",t.on),e.classList.toggle("dark",t.dark)}var Co=["pipeup-quote","pipeup-on","pipeup-done"],Ao={"pipeup-quote":[[250,227,188,.75],[180,120,0,.35]],"pipeup-on":[[247,212,154,.95],[180,120,0,.5]],"pipeup-done":[[180,178,169,.22],[140,138,130,.2]]};function To(){return typeof CSS<"u"&&"highlights"in CSS&&typeof Highlight<"u"}var Po=`:not(${zn},:is(${zn}) *){cursor:url("data:image/svg+xml,${encodeURIComponent("<svg xmlns='http://www.w3.org/2000/svg' width='32' height='32'><rect x='7' y='7' width='23' height='23' rx='4' fill='none' stroke='#534AB7' stroke-width='2' stroke-dasharray='4 3'/><path d='M3 2v15l4-3.5 3 6.5 2.5-1.2-3-6.3H15z' fill='#fff' stroke='#2C2C2A' stroke-width='1.2' stroke-linejoin='round'/></svg>")}") 3 2,crosshair!important}`;function qo(){if(To())for(let e of Co)for(let t of["","-d"])CSS.highlights.delete(e+t)}var No={light:["#2C2C2A","#FFFFFF"],dark:["#ECEBE6","#1B1B19"]},Ro=[["opacity","1"],["filter","none"],["backdrop-filter","none"],["mix-blend-mode","normal"],["transform","none"],["clip-path","none"],["mask-image","none"],["zoom","1"]];function Do(e,t,n){let[o,r]=No[e].map(e=>{let[o,r,i]=(e=>[1,3,5].map(t=>parseInt(e.slice(t,t+2),16)))(e).map((e,o)=>t*e+(1-t)*n[o]);return Eo({r:o,g:r,b:i})});return((e,t)=>(Math.max(e,t)+.05)/(Math.min(e,t)+.05))(o,r)}var zo=["ArrowUp","ArrowDown","Home","End","PageUp","PageDown"];function Ho(e,t=!1){return Cn(e,t)?"column":"bubbles"}var Oo="Shown here, but not saved yet \u2014 it will be saved with your next change",Fo=e=>e instanceof Error?e.message.replace(/^pipeup: /,""):"Something went wrong";function Io(e){let t="pipeup:look",n="auto";try{let e=localStorage.getItem(t);("light"===e||"dark"===e)&&(n=e)}catch{}let o,r=!1,i=!1,a="",l=()=>{let e="auto"!==n?n:function(e){let t=(e===document?Et("data-pipeup-theme"):e.documentElement.getAttribute("data-pipeup-theme"))??e.body?.getAttribute("data-pipeup-theme");return"light"===t||"dark"===t?t:null}(document);i=function(e,t=!1){let n=e.defaultView;if(!n)return!1;let o=e.documentElement,r=Eo($o(e)),i=(t,n)=>{try{if(e.elementsFromPoint)return e.elementsFromPoint(t,n)}catch{}return e.body?[e.body,o]:[o]},a=0;for(let[t,o]of So){let l=r;for(let r of i(n.innerWidth*t,n.innerHeight*o)){if(r.closest("[data-pipeup-ignore]"))continue;let t=r.getBoundingClientRect();if(t.width*t.height<.25*n.innerWidth*n.innerHeight)continue;let o=ko(n.getComputedStyle(r).backgroundColor,e);if(o&&o.a>=.5){l=Eo(o);break}}a+=l}let l=a/So.length;return l<.18||!(l>.32)&&t}(document,i);let t=e??(i?"dark":"light");o=function(e,t,n){let o=e.defaultView?.getComputedStyle(e.documentElement),r=Ro.flatMap(([e,t])=>{let n=o?.getPropertyValue(e).trim();return n&&n!==t?[`${e}: ${n}`]:[]}),i=Math.min(1,Math.max(0,parseFloat(o?.opacity??"1")||1)),{r:a,g:l,b:s}=$o(e);return{look:t,source:n,ratio:Do(t,i,[a,l,s]),effects:r}}(document,t,"auto"!==n?"reviewer":e?"author":"page");let r=function(e){return!e.effects.length&&e.ratio>=3?null:`pipeup: the page's styles on <html> (${e.effects.join("; ")||"none"}) change how everything on the page looks, Pipeup included, and can't be undone from inside it. `+(e.ratio<3?"Pipeup's words may be hard to read. ":"")+"Move those styles to <body> or a wrapper."}(o);return r&&r!==a&&console.warn(a=r),t};r="dark"===l();let s=function(e,t,n=document){let o=n.createElement("pipeup-root");o.setAttribute("data-pipeup-ignore",""),o.style.cssText="position:fixed!important;inset:0!important;pointer-events:none!important;z-index:2147483647!important;display:block!important;margin:0!important;visibility:visible!important;opacity:1!important;transform:none!important;translate:none!important;scale:none!important;rotate:none!important;filter:none!important;clip-path:none!important;mask:none!important;zoom:1!important;";let r=o.attachShadow({mode:"open"}),i=n.defaultView?.CSSStyleSheet;if(i&&"replaceSync"in i.prototype&&"adoptedStyleSheets"in r){let e=new i;e.replaceSync(t),r.adoptedStyleSheets=[e]}else{let e=n.createElement("style");e.textContent=t,r.append(e)}let a=n.createElement("div");return a.className="layer",a.style.setProperty("--pu-panel","320px"),a.style.setProperty("--pu-pop",`${hn()}px`),Mo(a,e),r.append(a),n.documentElement.append(o),{element:o,shadow:r,e:a,destroy:()=>o.remove()}}(Lo(e.root,r?"dark":"light"),e.styles);s.e.classList.toggle("flip",r!==i);let d=function(e=document){let t=e.defaultView?.CSSStyleSheet;if(!t||!("replaceSync"in t.prototype)||!("adoptedStyleSheets"in e))return{Ie(){},He(){},xe(){},De(){},remove:()=>qo()};let n=new t,o=null,r=!1,i=1,a=0,l="",s=0,d=()=>n.replaceSync((e=>Co.map(t=>Ao[t].map(([n,o,r,i],a)=>`::highlight(${t}${a?"-d":""}){background-color:rgba(${n},${o},${r},${+(i*e).toFixed(3)})}`).join("")).join(""))(i)+(null===o?"":`:root{--pipeup-gutter:${o}px}`)+(r?Po:"")+(a||l?`html{--pipeup-panel:${a}px;width:auto!important;${a?`margin-right:${a}px!important;`:""}${l}}`:""));return d(),e.adoptedStyleSheets=[...e.adoptedStyleSheets,n],{Ie(e){e!==o&&(o=e,d())},He(e){e!==r&&(r=e,d())},xe(e){i=e,d()},De(e,t){e!==a&&(a=e,l=t?"":"transition:margin-right .34s cubic-bezier(.4,0,.2,1)!important",clearTimeout(s),!e&&l&&(s=window.setTimeout(()=>{l="",d()},400)),d())},remove(){clearTimeout(s),e.adoptedStyleSheets=e.adoptedStyleSheets.filter(e=>e!==n),qo()}}}(document);d.xe(0);let c=!0===window.matchMedia?.("(prefers-reduced-motion: reduce)").matches,p=St("data-pipeup-reserve"),u=new Map,h=new Set,f=new WeakSet,v=`pipeup:hide:${e.doc.id}`,y=!1;try{y="1"===localStorage.getItem(v)}catch{}let x={i:null,L:null,I:!1,mine:!1,hide:y,hidden:y,mode:Ho(e.root),t:null,s:!1,paused:!1,u:!1,Be:!1,l:!1,pinning:!1},k=et("div",{class:"toast",role:"status","aria-live":"polite"}),E=null,$=et("div",{class:"sr","aria-live":"polite"});s.e.append(k,$);let L=null,M=null,C=[],A=null,T=!1,P=0,q=0,N=0,R=0,D=0,z=new Set,H="",O=new Map,F=null,I=function(e,t,n=function(){return{p:e=>e.getBoundingClientRect(),shown:e=>!1!==e.checkVisibility?.({opacityProperty:!0,visibilityProperty:!0}),opacity:e=>parseFloat(getComputedStyle(e).opacity)||0,ne:()=>({width:window.innerWidth,height:window.innerHeight})}}()){let o=!0===window.matchMedia?.("(prefers-reduced-motion: reduce)").matches,r=null,i=null,a=[],l=0,s=!1,d=()=>[...e.querySelectorAll(ao)],c=()=>[...e.querySelectorAll(".slides > section")],p=e=>"string"==typeof e&&e.length>0&&e.length<=S?e:null,u=e=>p(e?.getAttribute("data-pipeup-slide")),h=e=>{let t=c()[e];return u(t?.matches(ao)?t:t?.querySelector(ao))??p(String(e+1))};function f(){if(a=[],co){let e=null;if(ho(()=>{let t=co.current();Number.isInteger(t)&&t>0&&(e=String(t))}),null!==e)return e}let e=yo();if(e){let t=null;if(ho(()=>{t=h(e.getIndices().h)}),null!==t)return t}r&&!r.isConnected&&(r=null);let t=d();r=function(e,t,n){let o=t.ne(),r=null,i=0,a=0;for(let l of e){if(!t.shown(l))continue;let e=t.p(l),s=Math.min(e.left+e.width,o.width)-Math.max(e.left,0),d=Math.min(e.top+e.height,o.height)-Math.max(e.top,0);if(s<=0||d<=0)continue;let c=Math.round(s*d),p=t.opacity(l);(c>i||c===i&&(p>a||p===a&&l===n))&&(r=l,i=c,a=p)}return r}(t,n,r)??r;for(let e of function(e,t,n){let o=n&&t.p(n),r=t.ne().height;return e.filter(e=>{let n=t.p(e);return!!o&&t.shown(e)&&n.top<r&&n.top+n.height>0&&(n.top>=o.top+o.height||n.top+n.height<=o.top)})}(t,n,r)){let t=u(e);t&&a.push(t)}return u(r)}function m(){l=0,i=f(),t()}let g=()=>{!l&&!s&&(l=requestAnimationFrame(m))},v=e=>function(e,t,n,o=[]){return null!==t?void 0===e?.slide||e.slide===t||o.includes(e.slide):!e||!n||Object.entries(e).every(([e,t])=>"label"===e||"slide"===e||e===Ne||n[e]===t)}(e,i,so,a)&&!wo(e,vo()),w=new MutationObserver(e=>{e.some(e=>e.target instanceof Element&&e.target.matches(ao))&&g()});w.observe(e,{subtree:!0,attributes:!0,attributeFilter:["class","style","hidden"]});let y=new MutationObserver(g);y.observe(document.documentElement,{attributes:!0,attributeFilter:["data-pipeup-edition"]});for(let e of lo)window.addEventListener(e,g,{capture:!0,passive:!0});return uo.add(g),i=f(),{slide:()=>i,view(e){let t=e instanceof Element?e:e?.parentElement,n=t&&yo()?c().findIndex(e=>e.contains(t)):-1,o=u(t?.closest(ao))??(n>=0?h(n):i),r=vo(),a={...null!==o?{slide:o}:{},...so,...null!==r?{[Ne]:r}:{}};return Object.keys(a).length?a:void 0},E:v,edition:vo,w:e=>wo(e,vo()),ee:function(e){if(v(e))return Promise.resolve(!0);let t=e.slide,n=yo(),r=d().find(e=>u(e)===t),a=/^[1-9]\d{0,5}$/.test(t??"");if(a&&co)ho(()=>co.go(Number(t)));else if(a&&n){let e=r?c().findIndex(e=>e===r||e.contains(r)):-1;ho(()=>n.slide(e>=0?e:Number(t)-1))}else if(po.size)for(let t of po)ho(()=>t({...e}));else{if(!r)return Promise.resolve(!1);r.scrollIntoView({block:"start",behavior:o?"auto":"smooth"})}let l=performance.now();return new Promise(t=>{let n=e=>{clearTimeout(o),t(e)},o=setTimeout(()=>n(!1),1e3),r=()=>s?n(!1):(i=f(),v(e)?n(!0):performance.now()-l>=1e3?n(!1):void requestAnimationFrame(r));requestAnimationFrame(r)})},destroy(){s=!0,cancelAnimationFrame(l),w.disconnect(),y.disconnect();for(let e of lo)window.removeEventListener(e,g,!0);uo.delete(g)}}}(e.root,()=>{T||(I.edition()!==F&&(F=I.edition(),fe()),me()&&ze())});F=I.edition();let B=!1,j=null,W=0,K=()=>x.s&&!x.u&&mn(),V=!1,U="pipeup:held",Y=!1;function _(){if(!K()||x.l)return;let e=!1;try{e=null===localStorage.getItem(U),e&&localStorage.setItem(U,"1")}catch{e=!Y}Y=!0,Z(e?"Tap what you want to comment on \xb7 Press and hold this button for more":"Tap what you want to comment on",0,!0,!1,{label:"Done",run:()=>Qe(!1)}),k.classList.add("tap"),G()}function G(){k.classList.toggle("taught",V),k.querySelector(".tw")?.toggleAttribute("aria-hidden",V)}function Z(e,t=2400,n=!1,o=!1,r){if(T)return;if(n&&x.l)return void(j=()=>Z(e,t,!0,o));B=n,k.replaceChildren(et("span",{class:"tw"},e)),k.classList.remove("tap","taught"),k.classList.toggle("act",!!r);let i=r?.run;if(E=i&&r.H?()=>{E=null,k.classList.remove("show"),i()}:null,r){let e=i?et("button",{class:"ta",type:"button",...r.H?{"aria-keyshortcuts":"Meta+Z Control+Z"}:{}},r.label):et("a",{class:"ta",href:r.href,target:"_blank",rel:"noopener noreferrer"},r.label);if(i){let t=E??(()=>{k.classList.remove("show"),i()});e.addEventListener("click",e=>{e.stopPropagation(),t()})}k.append(" ",e)}o?k.setAttribute("aria-hidden","true"):k.removeAttribute("aria-hidden"),k.classList.add("show"),window.clearTimeout(P),t&&(P=window.setTimeout(()=>{E=null,k.classList.remove("show"),P=window.setTimeout(_,320)},t))}let J=(e,t)=>Z(e,6e3,!1,!1,{label:"Undo",run:t,H:!0});function Q(){K()||(j=null,B&&(B=!1,window.clearTimeout(P),k.classList.remove("show")))}function ee(e){$.textContent="",cancelAnimationFrame(W),W=requestAnimationFrame(()=>$.textContent=e)}function te(e){Z(Fo(e))}function ne(e){throw te(e),e}let oe=()=>e.doc.threads().filter(e=>!e.root.deleted),re=t=>({thread:t,location:qe(t.anchor,u.get(t.id)??Se(t.anchor,e.root),e.root)}),ie=e=>[...s.e.querySelectorAll(`[data-thread="${e}"] .rbox textarea`)].find(e=>!e.closest("[inert]"));function ae(){for(let e of s.e.querySelectorAll("[data-thread] .rbox textarea"))e.value.trim()&&O.set(e.closest("[data-thread]").getAttribute("data-thread"),e.value)}function le(e,t=!1){let n=O.get(e),o=ie(e);if(o){if(O.delete(e),n&&!o.value){o.value=n,o.dispatchEvent(new Event("input",{bubbles:!0}));for(let t of s.e.querySelectorAll(`[data-thread="${e}"] .rbox textarea`))t!==o&&t.value&&(t.value="",t.dispatchEvent(new Event("input",{bubbles:!0})))}t&&o.focus({preventScroll:!0})}}function se(e){let t=Ie();if(!t?.closest(`[data-thread="${e}"]`))return()=>{};let n=t.closest(".cd")?".mi":t.closest(".th")?".opn":".bub",o=[...s.e.querySelectorAll(`${n}[data-thread]`)],r=o.findIndex(t=>t.getAttribute("data-thread")===e),i=r<0?null:(o[r+1]??o[r-1])?.getAttribute("data-thread");return()=>{if(A?.ye())return A.be();(i&&s.e.querySelector(`${n}[data-thread="${i}"]`)||s.e.querySelector(".launch .mode"))?.focus({preventScroll:!0})}}let de={get me(){return e.doc.me},picker:()=>he.picker,people:()=>Pt(e.doc.threads(),e.doc.me),react:async(t,n,o)=>{try{await(o?e.doc.react(t,n):e.doc.unreact(t,n))}catch(e){e instanceof X?Z(Oo):ne(e)}},reply:async(t,n,o)=>{try{await e.doc.reply(t,n,o),ee("Reply sent"),Ve(o,n)}catch(e){e instanceof X?Z(Oo):ne(e)}},edit:async(t,n,o)=>{try{await e.doc.edit(t,n,o)}catch(e){e instanceof X?Z(Oo):ne(e)}},remove:async t=>{let n=e.doc.threads().find(e=>e.id===t||e.root.replies.some(e=>e.id===t)),o=n&&n.root.id===t?se(n.id):()=>n&&ie(n.id)?.focus({preventScroll:!0});try{await e.doc.remove(t),o(),Z("Deleted")}catch(e){Z(e instanceof X?`Deleted \xb7 ${Oo}`:Fo(e))}},resolve:async t=>{let n=se(t);s.e.classList.add("still"),window.addEventListener("pointermove",()=>s.e.classList.remove("still"),{once:!0});try{await e.doc.resolve(t),Z("Resolved \xb7 \u2713 Resolved in All comments shows it again")}catch(e){Z(e instanceof X?`Resolved \xb7 ${Oo}`:Fo(e))}x.I||(x.i===t&&(x.i=null),n())},reopen:async t=>{try{await e.doc.reopen(t),Z("Reopened")}catch(e){Z(e instanceof X?`Reopened \xb7 ${Oo}`:Fo(e))}},notRight:async t=>{try{await e.doc.reopen(t)}catch(e){Z(e instanceof X?`Reopened \xb7 ${Oo}`:Fo(e))}We(t)},pasted:t=>{if(!b(t,Tt()))return"";if(t.author===e.doc.me)return"pasted by you";let n="",o=e=>{e.author===t.author&&e.name&&!w(e.name)&&(n=e.name),e.replies.forEach(o)};return e.doc.threads().forEach(e=>o(e.root)),`pasted by ${n||m(t.author)}`},drop:(e,t)=>J("Reply discarded",()=>{O.set(e,t),ie(e)?le(e,!0):Ge(e)}),close:()=>{Ge(null);let e=He&&s.e.querySelector(He);e?e.focus({preventScroll:!0}):A?.be(),He=""},copy:t=>{try{let n=e.doc.threads().find(e=>e.id===t);if(!n)return;no(Oe(re(n),"ai",location.href,Date.now()),s.e).then(()=>Z("Thread copied as Markdown for AI"),e=>Z(Fo(e)))}catch(e){Z(Fo(e))}}},ce={look:()=>n,setLook(e){n=e;try{"auto"===e?localStorage.removeItem(t):localStorage.setItem(t,e)}catch{}Zt(l())},copyAll:async e=>{let t=ce.all(),n=Fe(t,e,{title:document.title,url:location.href,exportedAt:new Date});try{await no(n,s.e);let o=t.filter(e=>!e.thread.resolved).length;Z(`Copied ${o} thread${1===o?"":"s"}${"ai"===e?" as Markdown for AI":""}`)}catch(e){Z(Fo(e))}},dt:()=>{x.I=!x.I,ze()},toggleMine:()=>{x.mine=!x.mine,ze()},setHide:e=>{x.hide=e;try{e?localStorage.setItem(v,"1"):localStorage.removeItem(v)}catch{}ze()},rename:async t=>{let n=t.replace(/\s+/g," ").trim();try{await async function(t){try{return await e.onName(t),!1}catch(n){if(e.doc.name!==t)throw n;return!0}}(n)?Z(`New comments will say ${n}, but this browser couldn't remember it`):Z(`New comments will say ${n}`)}catch(e){Z(Fo(e))}},name:()=>e.doc.name,all:()=>[...oe()].sort(kn(ue)).map(re)},pe={},ue={get addons(){return pe.surface},doc:e.doc,root:e.root,e:s.e,host:s.element,state:x,resolved:u,O:h,F:de,l:ce,f:I,G:e=>z.has(e.id),w:e=>I.w(e.anchor.view),Ne:()=>{me()&&ze()},j:e=>!x.hidden&&(!e.resolved||x.I||(e=>""!==(s.e.querySelector(`[data-thread="${e}"] .rbox textarea`)?.value.trim()??""))(e.id))&&!z.has(e.id),ct:(e,t)=>{for(let n of oe()){let o=u.get(n.id);if(n.anchor.quote&&ue.j(n)&&o?.range&&un(e,t,dn(o)))return n}return null},ve:(e,t)=>ue.S()&&!x.pinning?ue.ct(e,t):null,C:e=>e.composedPath().includes(s.element),we:e=>{f.add(e)},rt:e=>f.has(e),open:Ge,pt:e=>We(e),keepReplies:ae,putReply:e=>le(e),L:function(e){x.L!==e&&(x.L=e,e&&e!==x.i&&at(e),ze())},lt:Ze,ot:function(e){if(!x.t)return Ze(e);Object.assign(x.t,e),ze()},S:()=>!L||L.Qe(),Oe:e=>{let t=L?.ue();e(),t?.()},focusDraft:_e,re:()=>{let e=x.t?.anchor.view,t=I.E(e)?void 0:e?.slide;Z(t?`Finish or cancel your comment on slide ${t} first`:"Finish or cancel this comment first"),_e(()=>A?.toDraft())},et:async function(t,n){let o=x.t;if(o)try{o.sending=!0;let r=await e.doc.comment(o.anchor,t,n);ee("Comment added"),Ve(n,t),x.t=null,fe(new Set([r])),Ge(r,!0)}catch(e){if(e instanceof X)return x.t=null,fe(new Set([e.id])),Ge(e.id,!0),void Z(Oo);o.sending=!1,ne(e)}},seen:Ue,people:()=>Pt(e.doc.threads(),e.doc.me),he:Je,ie:Qe,W:rt,B:e=>{L=e},registerList:e=>{M=e},pe:Z,T:ee,it:Q,taps:()=>De(),oe:te,ut:at,m:ze,Y:nt},he=pe.surface=new Yt(ue,s.shadow,$);function fe(t){let n=performance.now(),o=e.doc.threads();for(let r of o){if(t&&!t.has(r.id))continue;if(I.w(r.anchor.view)){u.set(r.id,{state:"orphaned",element:null,range:null}),h.delete(r.id);continue}let o=performance.now()-n<40,i=Se(r.anchor,e.root,{fuzzy:o});u.set(r.id,i),o||"orphaned"!==i.state?h.delete(r.id):h.add(r.id)}for(let e of[...u.keys()])o.some(t=>t.id===e)||u.delete(e);0===h.size?(window.clearTimeout(R),R=0):0===R&&(R=window.setTimeout(()=>{R=0,!T&&(fe(new Set(h)),ze())},250))}function me(){let t=new Set,n=null!==I.slide(),o=new Set;for(let r of e.doc.threads()){o.add(r.id);let e=u.get(r.id),i=e?.element,a="attached"===e?.state||"moved"===e?.state;(I.w(r.anchor.view)||n?!I.E(r.anchor.view):!1===i?.checkVisibility?.({visibilityProperty:!0})||!I.E(r.anchor.view)&&(!a||i?.closest("[role=tabpanel]")))&&t.add(r.id)}z=t;for(let e of O.keys())o.has(e)||O.delete(e);let r=`${I.slide()}|${[...t].join()}`;return r!==H&&(H=r,!0)}function ge(e){let t=[],n=[],o=[];for(let r of e){let e=u.get(r.id);r.resolved&&!x.I||!e?.range||z.has(r.id)||(r.id===x.i||r.id===x.L?n.push(e.range):r.resolved?o.push(e.range):t.push(e.range))}x.t&&I.E(x.t.anchor.view)&&n.push(...x.t.ranges),function(e,t){if(To())for(let n of Co){let o=e[n.slice(7)];CSS.highlights.set(n,new Highlight(...o.filter(e=>!t(e)))),CSS.highlights.set(`${n}-d`,new Highlight(...o.filter(t)))}}({quote:t,on:n,done:o},e=>{let t=ve.get(e);return void 0===t&&ve.set(e,t=function(e){let t=e.startContainer,n=t instanceof Element?t:t.parentElement,o=n?.ownerDocument.defaultView;if(!n||!o)return!1;let r=n.ownerDocument,i=Eo(ko(o.getComputedStyle(n).color,r)??{r:0,g:0,b:0});for(let e=n;e;e=e.parentElement){let t=o.getComputedStyle(e);if("none"!==t.backgroundImage)return i>.4;let n=ko(t.backgroundColor,r);if(n&&n.a>=.5)return i>Eo(n)}return i>Eo($o(r))}(e)),t})}let ve=new WeakMap,we=0,be=0,xe=0,ke=0,Ee=0,$e=0,Le=!1,Me=()=>{},Ae=!1,Re=!1;function De(){let e=!T&&(x.s||x.l||!!x.i||!!x.t||x.u||Re),t=document.body;e===Ae||!t||(Ae=e,e?t.addEventListener("click",Me):t.removeEventListener("click",Me))}function ze(){if(T)return;e.onRender?.();let t=oe();if(me(),x.i&&z.has(x.i)){let e=s.e.querySelector(`[data-thread="${x.i}"] .rbox textarea`)?.value;e&&O.set(x.i,e),x.i=null}x.hidden=x.hide&&!x.s&&!x.u&&!x.Be&&!x.t,d.He(x.s&&!x.paused),x.hidden&&(x.i=null),x.hidden||function(t){let n=function(e,t){let n=Rt(t),o=[];for(let r of e)for(let e of[r.root,...r.root.replies])e.author!==t&&!e.deleted&&qt(e,n)&&!e.seenBy?.includes(t)&&o.push({thread:r,comment:e});return o}(t,e.doc.me).filter(e=>!Ye.has(e.comment.id));if(!n.length)return;for(let e of n)Ye.add(e.comment.id);let o=[...new Set(n.map(e=>g(e.comment)))];Z(`${1===o.length?o[0]:`${o.length} people`} mentioned you in ${n.length} comment${1===n.length?"":"s"}`)}(t),function(e){if(e===be)return;be=e,cancelAnimationFrame(xe);let t=we,n=performance.now(),o=e?260:200,r=i=>{let a=Math.min(1,(i-n)/o);we=t+(e-t)*(e?1-(1-a)**3:a*a),d.xe(we),a<1&&(xe=requestAnimationFrame(r))};xe=requestAnimationFrame(r)}(x.hidden?0:1),s.e.classList.toggle("hidden",x.hidden),s.e.classList.toggle("listing",x.u),x.t&&K()&&!V&&(V=!0,k.classList.contains("tap")&&G()),x.s&&mn()&&(x.u?Q():k.classList.contains("show")||(j??=_));let n=x.u&&!fn();(function(e){e!==ke&&(ke=e,d.De(e,c),null!==I.slide()&&($e=performance.now()+450),window.clearTimeout(Ee),Ee=window.setTimeout(()=>{fe(),ze()},c?0:400))})(n?320:0),d.Ie(p?"column"!==x.mode||x.hidden||n?0:320:null);let o=0;if(null!==I.slide())for(let t of e.root.querySelectorAll(zn)){if(t===s.element)continue;let e=t.getBoundingClientRect();e.top>innerHeight/2&&e.right>innerWidth-ke-380&&e.bottom>innerHeight-48&&(o=Math.max(o,innerHeight-e.top+4))}s.e.style.setProperty("--pu-lift",`${o}px`),ge(t),Re=!x.hidden&&t.some(e=>!!e.anchor.quote&&!e.resolved&&!z.has(e.id)),De();let r=he.Ge(),i=r.size?t.filter(e=>!r.has(e.anchor.id??"")):t;for(let e of C)e.m(e===C.at(-1)?t:i);A?.m(t),x.hidden||he.flush()}let He="",Ie=()=>s.e.getRootNode().activeElement,Be="input,textarea,select,[contenteditable]:not([contenteditable=false])",je=()=>{let e=Ie();return e instanceof HTMLTextAreaElement&&""!==e.value||!!document.activeElement?.matches(Be)};function We(e,t=je(),n=Ie()){let o=[...s.e.querySelectorAll(`[data-thread="${e}"] .rbox textarea`)].find(e=>!e.closest("[inert]")),r=n?.getAttribute("data-thread");He=r?`.${n.classList[0]}[data-thread="${r}"]`:"",!t&&o&&o.focus({preventScroll:!0})}let Ke=()=>!!x.t&&!ue.S();function Ve(t,n){let o=e.doc.contacts(),r=new Map;for(let e of t??[]){let t=o.get(e.ref);t?.includes("@")&&r.set(t,n.slice(e.start+1,e.end))}if(!r.size)return;let i=e.doc.name||m(e.doc.me),a=`${i} mentioned you on ${document.title}`,l=`${i} mentioned you in a comment on "${document.title}":\n\n${n}\n\n${location.href}`,s=[...r.values()];Z(`Let ${1===s.length?s[0]:`${s.length} people`} know?`,9e3,!1,!1,{label:"Open my email",href:`mailto:${[...r.keys()].join(",")}?subject=${encodeURIComponent(a)}&body=${encodeURIComponent(l)}`})}function Ue(t){let n=[t.root,...t.root.replies].filter(t=>t.author!==e.doc.me&&!t.deleted&&qt(t,Rt(e.doc.me))).map(e=>e.id);n.length&&e.doc.seen(n).catch(()=>{})}let Ye=new Set;function _e(e){let t=x.t?.anchor.view,n=L?.ue();Promise.resolve(I.E(t)||I.ee(t??{}).then(()=>ue.Ne())).then(()=>{I.E(t)&&e?.(),n?.()})}function Ge(t,n=!1){if(t&&x.t&&!ue.S())return ue.re();if(t&&x.u&&M)return M(t);if(x.i===t&&!x.t)return t?We(t):void 0;let o=!n&&je(),r=Ie();if(t||(x.Be=!1),ae(),x.i=t,t){x.t=null,at(t);let n=e.doc.threads().find(e=>e.id===t);n&&Ue(n)}ze(),t&&(le(t),n&&A?.ye()?A.be():We(t,o||mn(),r))}function Ze(e){Q(),x.t=e,x.i=null,ze()}function Je(e=""){let t=x.t;t&&(x.t=null,ze(),e&&J("Comment discarded",()=>{x.t&&!ue.S()||(Ze(t),A?.adopt(t),L?.fill(e))}))}function Qe(e,t=!1){x.s!==e&&(x.s=e,x.paused=!1,j=null,e?(x.i=null,A=function(e){let t={p:e=>e.getBoundingClientRect(),tt:e=>{let t=getComputedStyle(e),n="transparent"!==t.backgroundColor&&!/,\s*0\)$/.test(t.backgroundColor),o=["top","right","bottom","left"].some(e=>parseFloat(t.getPropertyValue(`border-${e}-width`))>0);return n||o||"none"!==t.backgroundImage||"none"!==t.boxShadow},nt:e=>/^(inline-)?(flex|grid)$/.test(getComputedStyle(e).display),flow:e=>{let t=getComputedStyle(e),n=[t.overflowX,t.overflowY];return{display:t.display,position:t.position,clips:n.some(e=>"hidden"===e||"clip"===e)&&!n.some(e=>"auto"===e||"scroll"===e)&&e!==document.documentElement&&e!==document.body,off:"none"===t.pointerEvents}},ne:()=>({width:innerWidth,height:innerHeight})},n=et("span",{hidden:!0},Qn),o=et("div",{class:"pick"},n),r=et("div",{class:"pkw"}),i=[0,1].map(()=>{let e=et("div",{class:"km",tabindex:"-1",role:"button"},et("span",{hidden:!0}),et("span",{hidden:!0}));return e.inert=!0,e.addEventListener("keydown",Se),e.addEventListener("click",e=>{e.stopPropagation(),Ee()}),e.addEventListener("focus",()=>o.classList.add("kf")),e.addEventListener("blur",()=>o.classList.remove("kf")),e}),a=et("span",{class:"lbl"}),l=(e,t,n,o)=>{let r=et("button",{class:"nb",type:"button","aria-label":e,title:t},ut(n,16));return r.addEventListener("click",e=>{e.stopPropagation(),o(e)}),r},s=l("Around it","Select the block around it","expand",xe),d=l("Inside it","Select a block inside it","shrink",ke),c=l("Pin","Pin its centre","pin",t=>t.detail&&mn()?j(!D):e.Oe(()=>U(m??k,{x:.5,y:.5}))),p=et("div",{class:"namebar",role:"group","aria-label":"Chosen block"},a,s,d,c);p.inert=!0;let u=e.e.querySelector(".launch");for(let t of[r,o,...i,p])e.e.insertBefore(t,u);p.addEventListener("mousedown",e=>e.preventDefault());let h=!0===window.matchMedia?.("(prefers-reduced-motion: reduce)").matches,f=null,m=null,g=null,v=null,w=0,y=()=>{},b=null,x=()=>{},k=null,E=0,S=0,$=!1,L=null,M=null,C=null,A=0,T=-1,P=!0,q=null,N=null,R=!1,D=!1,z=t=>!(e.C(t)||t.target instanceof Element&&t.target.closest(zn));function H(){v&&(o.classList.toggle("glide",performance.now()<w),it(o,v.getBoundingClientRect(),4))}function O(){if(!b)return;p.classList.toggle("glide",performance.now()<w&&p.classList.contains("show"));let t={width:p.offsetWidth||200,height:p.offsetHeight||34},n=bn(b.getBoundingClientRect(),t,{width:innerWidth,height:innerHeight}),o=e.e.querySelector(".pop.show")?.getBoundingClientRect(),r=t.height;o&&n.top<o.bottom&&n.top+r>o.top&&n.left<o.right&&n.left+t.width>o.left&&(n.top=o.top-r-8>=8?o.top-r-8:o.bottom+8),p.style.left=`${n.left}px`,p.style.top=`${n.top}px`}function F(e,t){v=e,w=t?performance.now()+400:0,H(),o.classList.add("show")}function I(e,t){let n=getComputedStyle(e);if("0"===n.opacity)return t(),()=>{};let o=0,r=()=>{window.clearTimeout(o),e.removeEventListener("transitionend",a)},i=()=>{r(),t()},a=t=>{t.target===e&&"opacity"===t.propertyName&&i()},l=Math.max(...n.transitionDuration.split(",").map(e=>1e3*parseFloat(e)||0));return o=window.setTimeout(i,l+100),e.addEventListener("transitionend",a),r}function B(e){if(e!==f){if(f=e,y(),!e)return void o.classList.remove("show");"0"===getComputedStyle(o).opacity?F(e,!1):h?(o.classList.remove("show"),y=I(o,()=>F(e,!1))):F(e,!0)}}function j(t){D=e.state.pinning=t,c.classList.toggle("on",t),t?e.T(a.textContent="Tap where to pin"):b&&(a.textContent=Pe(b))}function W(e){D&&j(!1),m=e,o.classList.toggle("on",null!==e),B(e),K(e)}function K(e){x(),p.inert=!e,e?h?(p.classList.remove("show"),x=I(p,()=>V(e))):V(e):(p.classList.remove("show"),b=null)}function V(n){a.textContent=a.title=Pe(n),s.hidden=null===Wn(n,e.root,t),d.hidden=0===(k?ve(n).length:Un(n,t,de).length);let o=p.classList.contains("show");b=n,O(),o||(p.offsetWidth,p.classList.add("show"))}function U(t,n){let o;try{o=ye(t,e.root,n,e.f.view(t))}catch(t){return void e.oe(t)}let r={anchor:o,label:n?`Pin on ${Pe(t).replace(/^[A-Z](?=[a-z])/,e=>e.toLowerCase())}`:Pe(t),ranges:[],resolved:{state:"attached",element:t,range:null}},i=e.state.t;k&&(k=t,T=-1),W(n?null:t),g=i??r,e.ot(r),i&&e.focusDraft(),e.T(n?r.label:`Commenting on ${r.label}`)}function Y(t){e.Oe(()=>U(t))}function _(n){let o=(n.target instanceof Element?jn(n.target,e.root,t):null)??e.root;o!==e.root&&(L=o);let r=o.getBoundingClientRect();r.width&&r.height&&U(o,{x:(n.clientX-r.left)/r.width,y:(n.clientY-r.top)/r.height})}function G(t){e.state.paused!==t&&(e.state.paused=t,t&&!m?B(null):!t&&k&&!m&&B(k),e.m())}let Z=!1,J=null,X=()=>J??e.state.paused,Q=()=>{Z=!1,J=e.state.paused},ee=()=>setTimeout(()=>J=null),te=n=>{if(e.C(n)||e.state.paused)return;if(!z(n))return void(m||B(null));if(n.stopPropagation(),m||e.state.t)return;let o=!ot()&&n.target instanceof Element?jn(n.target,e.root,t):null;if(k){if(!o||o===k||(A+=Math.abs(n.movementX)+Math.abs(n.movementY),A<=4))return;ge()}o&&(L=o),B(o)},ne=()=>{ot()&&(k&&ge(),m||B(null))},oe=e=>{!z(e)||X()||(e.stopPropagation(),("pointerdown"===e.type||"mousedown"===e.type)&&e.target instanceof Element&&e.target.closest(Gn)&&e.preventDefault())},re=n=>{if(!z(n))return;if(X())return e.we(n);let o=n.target;!(o===N||o.form&&o.form===N?.form)||"submit"!==n.type&&("click"!==n.type||n.detail)?(n.preventDefault(),n.stopPropagation(),"click"===n.type&&!e.state.l&&!e.rt(n)&&function(n){if(D)return _(n);let o=window.getSelection();if(o&&!o.isCollapsed)return void(n.detail>1&&g&&e.state.t===g&&e.S()&&e.he());let r=n.target instanceof Element?jn(n.target,e.root,t):null;if(e.state.t&&!e.S())return r||n.altKey?e.re():e.W();if(e.state.t&&n.altKey)return e.W();if(n.altKey||!e.ve(n.clientX,n.clientY)){if(e.state.i&&e.open(null),k&&n.detail&&ge(),n.altKey)return void _(n);r&&(L=r),r?U(r):(e.W(),W(null))}}(n)):N="click"===n.type&&"submit"===o.type?o.form:null},ie=t=>{if(t.key!==tn&&(Z=!0),(e=>{if(e.key!==tn||e.ctrlKey||e.metaKey||e.altKey||e.isComposing)return!1;let t=e.composedPath()[0];if(i.some(e=>e===t))return!0;let n=t instanceof Element?t.closest(Gn):null;return!n||!Z&&!n.matches("input,textarea,select,[contenteditable]:not([contenteditable=false])")})(t)||t.key===tn&&e.state.paused)return t.repeat||G(!0),t.preventDefault(),void t.stopPropagation();if(N=null,Me="","Escape"===t.key&&z(t)&&!t.isComposing&&!t.defaultPrevented&&!e.state.l&&!e.state.u)return t.preventDefault(),t.stopPropagation(),Me=t.key,e.Y();if("Tab"===t.key&&function(t){if(t.ctrlKey||t.metaKey||t.altKey||t.isComposing||!e.C(t))return!1;let n=t.composedPath()[0],o=n instanceof Element?n.closest(".draft,.thread"):null,r=!!o?.classList.contains("draft");if(!o||!r&&o.closest(".all")||o.querySelector(".mnl.show")||o.querySelector(".nf :focus"))return!1;let i=t.shiftKey?-1:1;if(R=!0,r&&e.S())e.he();else{let t=[...o.querySelectorAll("button,textarea,input,a[href]")].filter(e=>e.tabIndex>=0&&!e.closest("[inert],[hidden]")&&e.getClientRects().length>0),a=t.indexOf(n);if(a>=0&&(i>0?a<t.length-1:a>0))return R=!1,!1;r||e.open(null)}return R=!1,be(i),!0}(t))return t.preventDefault(),t.stopPropagation(),void(Me=t.key);if("Tab"===t.key&&ae(t))return t.preventDefault(),t.stopPropagation(),Me=t.key,e.W(),e.state.i&&e.open(null),e.state.l&&(e.state.l=!1,e.m()),be(t.shiftKey?-1:1);if(z(t)&&t.target instanceof Element)if("Enter"!==t.key&&" "!==t.key||!t.target.closest(_n))"Enter"===t.key&&t.target.form&&(N=t.target);else{if(!k)return void(N=t.target);t.preventDefault(),t.stopPropagation()}},ae=t=>{if(t.ctrlKey||t.metaKey||t.altKey||t.isComposing)return!1;let n=t.composedPath()[0];return n instanceof Element&&!i.some(e=>e===n)&&(e.C(t)?!!n.closest(".launch,.menu")&&!n.closest("input,textarea,select,[contenteditable]"):!t.composedPath().some(e=>e instanceof Element&&e.matches(zn)))},le=()=>e.e.getRootNode().activeElement,se=()=>i.some(e=>e===le()),de=t=>{let n=e.e.getRootNode().host?.parentElement;return(!1!==t.checkVisibility?.({opacityProperty:!0,visibilityProperty:!0})||"contents"===getComputedStyle(t).display)&&!t.closest("[inert]")&&(!n||n===document.documentElement||n.contains(t))&&e.f.E(e.f.view(t))},ce=()=>(q?.some(e=>!e.o.isConnected)&&(q=null),q??=Un(e.root,t,de)),pe=e=>ce().find(t=>t.o===e),ue=(e,t=!1)=>{let n=e.getBoundingClientRect();return n.bottom>0&&n.top<window.innerHeight&&(!t||n.top>=0)},he=()=>{let e=Yn(ce(),0);return e.find(e=>ue(e.o,!0))??e.find(e=>ue(e.o))??e[0]},fe=t=>e.doc.threads().filter(n=>e.j(n)&&t.contains(xn(e,n))).sort(kn(e));function me(t,o=!0){A=0;let r=ce(),a=r.find(e=>e.o===t);if(a&&!Yn(r,E).includes(a)&&(E=a.$),t!==k&&(T=-1),t!==m&&(m=null),k=t,B(t),K(t),t.scrollIntoView({block:"nearest",inline:"nearest",behavior:h?"auto":"smooth"}),!o)return;e.it();let l=i[S^=1];(function(e,t){let[o,r]=e.children,i=Yn(ce(),E),a=fe(t).length;o.textContent=`${Ce(t)}, ${i.findIndex(e=>e.o===t)+1} of ${i.length}${a?`, has ${a} comment${1===a?"":"s"}`:""}`;let l=(t.innerText??t.textContent??"").length<=150;r.textContent=Te(t);let s=P?[n]:[];P=!1,void 0!==e.ariaLabelledByElements?(e.ariaLabelledByElements=l?[o,t]:[o,r],e.ariaDescribedByElements=l?s:[...s,t]):e.setAttribute("aria-label",`${o.textContent}, ${r.textContent}`)})(l,t),it(l,t.getBoundingClientRect(),4),l.inert=!1,l.focus({preventScroll:!0}),i[1^S].inert=!0}function ge(){let e=se();L=k,k=null,B(null),K(null);for(let e of i)tt(e,!0);return e}function ve(e){let t=pe(e);return t?((e,t)=>e.filter(e=>e.V===t))(ce(),t):[]}function we(e){let t=Yn(ce(),E),n=t.findIndex(e=>e.o===k),o=t[n<0?e>0?0:t.length-1:(n+e+t.length)%t.length];o&&me(o.o)}function be(t){if(k)return we(t);q=null;let n=document.activeElement;M=le()??n;let o,r=L?.isConnected?L:null,i=r&&pe(r);if(i){E=i.$;let e=Yn(ce(),E),n=e.indexOf(i);o=e[(n+t+e.length)%e.length]}else if(r){E=0;let e=Yn(ce(),0),n=e=>0!==(r.compareDocumentPosition(e.o)&Node.DOCUMENT_POSITION_FOLLOWING),i=e=>e.o.contains(r);o=t>0?e.find(e=>n(e)&&!i(e))??e[0]:e.filter(e=>!n(e)&&!i(e)).pop()??e[e.length-1]}else o=he(),o&&(E=o.$);if(!o)return e.T("Nothing here to comment on");$=!0,me(o.o)}function xe(){let n=m??k,o=n&&Wn(n,e.root,t);return o?((!C||!n.contains(C))&&(C=n),m?Y(o):void me(o)):e.T("Nothing around it")}function ke(){let t=m??k,n=t?ve(t):[],o=n.find(e=>C&&e.o.contains(C))??n.find(e=>ue(e.o))??n[0];if(!o)return e.T("Nothing inside it");m?Y(o.o):me(o.o)}function Ee(t=!1){if(!k)return;if(e.state.t&&!e.S())return e.re();if(!t)return U(k);let n=fe(k);if(!n.length)return e.T("No comments on this block");T=(T+1)%n.length,e.open(n[T].id),n.length>1&&e.T(`Comment ${T+1} of ${n.length} on this block`)}function Se(t){if(["Tab","ArrowUp","ArrowDown","Enter","Escape"].includes(t.key)&&(!t.key.startsWith("Arrow")||!(t.metaKey||t.ctrlKey||t.altKey))){if(t.preventDefault(),t.stopPropagation(),Me=t.key,"Escape"===t.key)return void e.Y();if("Enter"===t.key)return Ee(t.shiftKey);"Tab"===t.key&&e.W(),e.state.i&&e.open(null),"Tab"===t.key?we(t.shiftKey?-1:1):"ArrowUp"===t.key?xe():ke()}}function $e(){let t=e.state.t,n=!!k&&!!t&&!e.S(),o=n&&t===g&&t.resolved.element!==k?t.resolved.element:null;r.classList.toggle("show",!!o&&de(o)),o&&it(r,o.getBoundingClientRect(),4),e.e.querySelector(".draft")?.classList.toggle("wait",n&&t?.resolved.element!==k)}let Le=()=>{let e=le();return e?!!e.closest("[inert]"):!document.activeElement||document.activeElement===document.body},Me="",Ae=!1,qe=t=>{if(Ae&&window.removeEventListener("keyup",qe,!0),t.key===tn&&e.state.paused)return G(!1),t.preventDefault(),void t.stopPropagation();t.key===Me&&(Me="",t.preventDefault(),t.stopPropagation())},Ne=()=>G(!1);window.addEventListener("keyup",qe,!0),window.addEventListener("blur",Ne),window.addEventListener("pointermove",te,!0),window.addEventListener("pointerdown",Q,!0);for(let e of Xn)window.addEventListener(e,ee,!0);document.addEventListener("selectionchange",ne);for(let e of Jn)window.addEventListener(e,oe,!0);for(let e of Zn)window.addEventListener(e,re,!0);return window.addEventListener("keydown",ie,!0),{Y:()=>!!m&&(W(null),!0),ye:()=>null!==k,st:()=>$&&!k,Re:function(){q=null;let t=document.activeElement;M=le()??t;let n=pe(L),o=n??(t&&t!==document.body&&e.root.contains(t)&&!t.closest(zn)?ce().filter(e=>e.o.contains(t)).pop():void 0)??he();return!!o&&(n||(E=o.$),$=!0,me(o.o),!0)},be(){k&&!se()&&me(k)},m(){if(q=null,k&&(!k.isConnected||!de(k))){let e=he();e?me(e.o,se()||Le()):ge()}let t=e.e.querySelector(".launch");if(t&&p.nextElementSibling!==t&&!se()&&!p.contains(le()))for(let n of[r,o,...i,p])e.e.insertBefore(n,t);let n=e.state.t;g&&n!==g?(g=null,W(null),k&&me(k,Le()&&!R)):(n||e.state.i)&&!g&&(f||m)&&W(null);let a=g?.anchor.point?null:g?.resolved.element;m&&!de(m)?W(null):!m&&!k&&a&&n===g&&de(a)&&W(a),$e()},toDraft(){let t=g,n=t?.resolved.element;!t||!n||e.state.t!==t||(k&&(k=n,T=-1),L=n,W(t.anchor.point?null:n),n.scrollIntoView({block:"nearest",inline:"nearest",behavior:h?"auto":"smooth"}))},adopt(e){g=e;let t=e.resolved.element;k&&t&&(k=t),W(e.anchor.point?null:t)},N(){$e(),H(),O(),k&&it(i[S],k.getBoundingClientRect(),4)},destroy(){ge()&&function(){let t=M;t&&t!==document.body&&t.isConnected&&t.focus?.({preventScroll:!0}),(!t||t===document.body||!t.matches?.(":focus"))&&e.e.querySelector(".launch .mode")?.focus({preventScroll:!0})}();for(let e of i)e.remove();r.remove(),e.e.querySelector(".draft")?.classList.remove("wait"),y(),x(),e.state.pinning=!1,Ae=!0,Me||window.removeEventListener("keyup",qe,!0),window.removeEventListener("blur",Ne),window.removeEventListener("pointermove",te,!0),window.removeEventListener("pointerdown",Q,!0);for(let e of Xn)window.removeEventListener(e,ee,!0);document.removeEventListener("selectionchange",ne);for(let e of Jn)window.removeEventListener(e,oe,!0);for(let e of Zn)window.removeEventListener(e,re,!0);window.removeEventListener("keydown",ie,!0),o.classList.remove("show"),p.classList.remove("show"),tt(p,!0),I(o,()=>o.remove()),I(p,()=>p.remove())}}}(ue)):(Q(),A?.destroy(),A=null,ee("Comment mode off")),ze(),A&&(t&&A.Re(),t?A.ye()?j=()=>Z(Qn,1e4,!0,!0):Z("Nothing here to comment on"):j=mn()?_:()=>Z(`Click anything to comment, or Tab between blocks \xb7 Option-click (Alt-click) to pin \xb7 Hold Space to use the page \xb7 This button, ${en} or Esc to finish`,4e3,!0)))}function nt(){let t=window.getSelection();x.s&&t&&!t.isCollapsed&&e.root.contains(t.anchorNode)?t.removeAllRanges():x.t&&ue.S()?Je():x.i?Ge(null):A&&!A.Y()&&Qe(!1)}function rt(){x.t?Ke()||Je():x.i&&Ge(null)}function at(e){let t=u.get(e);if(!t||"orphaned"===t.state)return;let n=!1===t.element?.checkVisibility?.(),o=n?t.element.closest("details:not([open])")?.querySelector("summary"):t.element;st(()=>t.range&&!n?dn(t):o?[o.getBoundingClientRect()]:[])}let lt=new Set;function st(e){let t=e().slice(0,6).map(()=>s.e.insertBefore(et("div",{class:"pulse"}),s.e.firstChild)),n={els:t,at:e};lt.add(n),dt(n),window.setTimeout(()=>{lt.delete(n);for(let e of t)e.remove()},1300)}function dt(e){let t=e.at();e.els.forEach((e,n)=>t[n]&&it(e,t[n],4))}function ct(){ae();let e=!!Ie()?.closest(".rbox");for(let e of C)e.destroy();C=function(e){return[..."column"===e.state.mode?[Pn(e),Nn(e,{ge:!1})]:[Nn(e,{ge:!0})],to(e),io(e)]}(ue),ze(),x.i&&le(x.i,e)}Xe.go=t=>{if(t.startsWith("slide:"))return void I.ee({slide:t.slice(6)});let n=decodeURIComponent(t.slice(6)).replace(/\s+/g," ").toLowerCase(),o=[...e.root.querySelectorAll("p,li,h1,h2,h3,h4,h5,h6,td,th,blockquote,figcaption,dt,dd")].find(e=>(e.textContent??"").replace(/\s+/g," ").toLowerCase().includes(n));o&&(o.scrollIntoView({block:"center",behavior:c?"auto":"smooth"}),window.setTimeout(()=>st(()=>[o.getBoundingClientRect()]),c?0:450))};let pt={x:0,y:0};let ht=()=>{if(!T){if(function(){let e=s.e.getBoundingClientRect();!Math.round(e.left)&&!Math.round(e.top)||(pt={x:pt.x-Math.round(e.left),y:pt.y-Math.round(e.top)},s.e.style.transform=pt.x||pt.y?`translate(${pt.x}px,${pt.y}px)`:"",(e=>{gn=e})(pt.y))}(),j&&!x.l&&(!k.classList.contains("show")||B)){let e=j;j=null,e()}$e&&(performance.now()>$e&&($e=0),Le=!0,dispatchEvent(new Event("resize")),Le=!1);for(let e of C)e.N();for(let e of lt)dt(e);A?.N(),he.N(),D=requestAnimationFrame(ht)}},ft=e=>{let t=e.composedPath()[0];return t instanceof Element&&null!==t.closest(Be)},mt=e=>{if("Escape"===e.key)return e.isComposing?void 0:nt();if(E&&"KeyZ"===e.code&&(e.metaKey||e.ctrlKey)&&!e.altKey&&!e.shiftKey){let t=e.composedPath()[0];if(!ft(e)||t instanceof HTMLTextAreaElement&&t.getRootNode()===s.shadow&&""===t.value)return e.preventDefault(),E()}if(function(e){return"KeyC"===e.code&&e.shiftKey&&e.altKey&&!e.metaKey&&!e.ctrlKey&&!e.repeat&&!e.getModifierState("AltGraph")}(e)&&!e.isComposing&&!e.defaultPrevented&&!ft(e)){if(e.preventDefault(),A?.st()&&A.Re())return;Qe(!x.s,!0)}},gt=e=>{if(ue.C(e)||f.has(e))return;let t=window.getSelection();t&&!t.isCollapsed||rt()},vt=window.innerWidth,wt=0;function yt(){let e=x.i?u.get(x.i):x.t?.resolved,t=(e?.range??e?.element)?.getBoundingClientRect();t&&(t.top<0||t.bottom>window.innerHeight)&&window.scrollBy({top:t.top-16,behavior:c?"auto":"smooth"})}let bt=vn().bottom,xt=!1,kt=0,$t=()=>{let e=window.visualViewport,t=Ie();s.e.classList.toggle("kb",!!e&&window.innerHeight-e.height>150&&(t instanceof HTMLTextAreaElement||t instanceof HTMLInputElement));let n=vn().bottom;n<bt-80&&(xt=!0),bt=n,window.clearTimeout(kt),kt=window.setTimeout(()=>{if(!xt)return;xt=!1;let e=vn(),t=x.i?u.get(x.i):x.t?.resolved,n=(t?.range??t?.element)?.getBoundingClientRect(),o=s.e.querySelector(".pop.show")?.offsetHeight??0;n&&(n.top<e.top||n.bottom+o+24>e.bottom)&&window.scrollBy({top:n.top-e.top-(mn()?76:60),behavior:c?"auto":"smooth"})},250)},Lt=()=>{if(Le)return;window.innerWidth!==vt&&(vt=window.innerWidth,window.clearTimeout(wt),wt=window.setTimeout(yt,200)),s.e.style.setProperty("--pu-pop",`${hn()}px`);let t=Ho(e.root,"column"===x.mode);t!==x.mode?(x.mode=t,ct()):ze()};function Mt(){let e=performance.now();0===q&&(N=e),window.clearTimeout(q);let t=Math.min(120,Math.max(0,N+1e3-e));q=window.setTimeout(()=>{q=0,fe(),ze()},t)}let Ct=[],At=/^(video|canvas|iframe|img|object|embed|audio)$/,Nt=new MutationObserver(()=>Ht()),Dt=null,zt=0;function Ht(){let e=function(){let e=new Set;try{for(let t of document.querySelectorAll("dialog:modal"))e.add(t);for(let t of Ct)"dialog"===t.localName&&t.isConnected&&t.matches(":modal")&&e.add(t);let t=document.activeElement;for(;t?.shadowRoot?.activeElement;)t=t.shadowRoot.activeElement;for(;t;){let n=t.closest("dialog");n?.matches(":modal")&&e.add(n);let o=t.getRootNode();t=o instanceof ShadowRoot?o.host:null}}catch{}let t=document.fullscreenElement;for(;t?.shadowRoot?.fullscreenElement;)t=t.shadowRoot.fullscreenElement;return t&&t!==document.documentElement&&t!==document.body&&!At.test(t.localName)&&e.add(t),[...e]}();Ct=[...Ct.filter(t=>e.includes(t)),...e.filter(e=>!Ct.includes(e))];let t=Ct.at(-1),n=t&&!(e=>{let t=getComputedStyle(e),n=(e,n="none")=>![n,""].includes(t.getPropertyValue(e));return["transform","translate","scale","rotate","perspective","filter","backdrop-filter"].some(e=>n(e))||n("container-type","normal")||/paint|layout|strict|content/.test(t.contain)||/transform|translate|scale|rotate|perspective|filter/.test(t.willChange)})(t)?t:document.documentElement;Nt.disconnect();for(let e of Ct)e.getRootNode()!==document&&Nt.observe(e,{attributeFilter:["open"]});if(s.element.parentNode===n)return;let o=!s.element.isConnected;n.append(s.element),o&&Dt?.isConnected&&performance.now()-zt<100&&Dt.focus({preventScroll:!0})}let Ot=new MutationObserver(e=>{e.some(e=>e.removedNodes.length)&&Ht(),!e.every(e=>s.element.contains(e.target)||(e=>"childList"===e.type&&e.addedNodes.length+e.removedNodes.length>0&&[...e.addedNodes,...e.removedNodes].every(e=>e===s.element))(e))&&Mt()}),Ft=e=>{let t=e.key,n=t=>e.composedPath().some(e=>e instanceof Element&&e.matches(t));("Enter"===t||" "===t||zo.includes(t)&&n(".menu,.all,.pm")||t.startsWith("Arrow")&&n(".menu"))&&e.stopPropagation()};for(let e of["keydown","keyup","keypress"])s.e.addEventListener(e,Ft);let It=e=>e===s.element,Bt=e=>{"focusin"===e.type&&Ht(),It(e.target)&&("focusin"===e.type&&(Dt=e.composedPath()[0]),zt="focusin"===e.type?1/0:performance.now()),("focusin"===e.type?It(e.target)&&!It(e.relatedTarget):It(e.relatedTarget)&&!It(e.target))&&e.stopImmediatePropagation()},jt=null,Wt=!1;s.shadow.addEventListener("keydown",e=>{e===jt&&(Wt=!0)});let Kt=e=>{if(!(e=>{let t=e.composedPath();if(!t.includes(s.element))return!1;let n=t[0];if(n instanceof Element&&n.matches(Be))return!0;let o=e.key,r=e=>t.some(t=>t instanceof Element&&t.matches(e));return["Escape","Tab","Enter"," "].includes(o)||zo.includes(o)&&r(".menu,.all,.pm,.rxp")||o.startsWith("Arrow")&&r(".menu,.rxp")})(e)||(e.stopImmediatePropagation(),"keydown"!==e.type))return;let t=jt=new KeyboardEvent("keydown",{key:e.key,code:e.code,location:e.location,repeat:e.repeat,isComposing:e.isComposing,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,altKey:e.altKey,metaKey:e.metaKey,bubbles:!0,cancelable:!0});Wt=!1,e.composedPath()[0].dispatchEvent(t),jt=null,t.defaultPrevented&&e.preventDefault(),Wt&&mt(e)},Vt=e=>e.stopPropagation(),Ut=["pointerdown","mousedown","touchstart","click","focusin","focusout"];for(let e of["focusin","focusout"])window.addEventListener(e,Bt,!0);for(let e of Ut)s.element.addEventListener(e,Vt);for(let e of["keydown","keyup","keypress"])document.addEventListener(e,Kt,!0);document.addEventListener("fullscreenchange",Ht);let _t=()=>Ct.length&&Ht();for(let e of["transitionend","animationend"])window.addEventListener(e,_t,!0);window.addEventListener("keydown",mt),window.addEventListener("click",gt),window.addEventListener("resize",Lt);for(let e of["resize","scroll"])window.visualViewport?.addEventListener(e,$t);Ot.observe(e.root,{subtree:!0,childList:!0,characterData:!0});let Gt=0,Zt=t=>{let n="dark"===t;s.e.classList.toggle("flip",n!==i),n!==r&&(r=n,window.clearTimeout(Gt),s.e.classList.add("fading"),Gt=window.setTimeout(()=>{Mo(s.e,Lo(e.root,t)),s.e.classList.remove("fading")},170))},Jt=()=>{Zt(l()),ve=new WeakMap,ge(oe())},Xt=0,Qt=()=>{Xt||(Xt=window.setTimeout(()=>{Jt(),Xt=window.setTimeout(()=>{Xt=0,Jt()},450)},150))},nn=new MutationObserver(e=>{e.some(e=>"open"===e.attributeName&&"dialog"===e.target.localName)&&Ht(),!e.every(e=>e.target===s.element)&&Qt()});nn.observe(document.documentElement,{attributes:!0,subtree:!0});let on=window.matchMedia?.("(prefers-color-scheme: dark)");on?.addEventListener?.("change",Qt);let rn=new ResizeObserver(Mt);rn.observe(e.root);let an=e.doc.onChange((e,t,n)=>{he.ze(t,n),fe(),ze()});return fe(),ct(),Ht(),D=requestAnimationFrame(ht),{ctx:ue,appearance:()=>o,destroy(){T=!0,cancelAnimationFrame(D),cancelAnimationFrame(xe),cancelAnimationFrame(W),I.destroy(),window.clearTimeout(Ee),window.clearTimeout(P),window.clearTimeout(wt),window.clearTimeout(q),window.clearTimeout(R),Ot.disconnect(),Xe.go=void 0,rn.disconnect(),nn.disconnect(),on?.removeEventListener?.("change",Qt),window.clearTimeout(Xt),window.clearTimeout(Gt),an(),window.removeEventListener("keydown",mt),window.removeEventListener("click",gt);for(let e of["focusin","focusout"])window.removeEventListener(e,Bt,!0);for(let e of["keydown","keyup","keypress"])document.removeEventListener(e,Kt,!0);document.removeEventListener("fullscreenchange",Ht);for(let e of["transitionend","animationend"])window.removeEventListener(e,_t,!0);Nt.disconnect(),window.removeEventListener("resize",Lt);for(let e of["resize","scroll"])window.visualViewport?.removeEventListener(e,$t);window.clearTimeout(kt),document.body?.removeEventListener("click",Me),A?.destroy();for(let e of C)e.destroy();he.destroy(),d.remove(),s.destroy()}}}var Bo=(e,t,n)=>Object.assign(new Error(`pipeup: ${t}`,{cause:n}),{code:e}),jo=null;function Wo(e={}){if(Zt)return Zt.mount(e);if(!function(){if(Zt)return!0;let e=globalThis,t=e.pipeupAddons;if(Array.isArray(t))for(let e of t)Xt(e);else if(t&&"object"==typeof t&&t.push!==Xt)return!1;return e.pipeupAddons={push:Xt},!0}())return Promise.reject(Bo("another-copy","another copy of Pipeup owns the add-on queue. Remove one script."));if(jo)return jo;let t=async function(e,t){kt({"data-pipeup-doc":e.doc,"data-pipeup-layout":e.layout,"data-pipeup-theme":e.theme,"data-pipeup-select":e.select});let n,o,r=Et("data-pipeup-doc"),{id:a,key:l}=r?await Y(r):{id:`page-${i(location.origin+location.pathname)}`,key:null},s=!1;if(e.store)n=e.store,o=await ie(n);else try{let e=ae.open();n=await function(e){return new Promise((t,n)=>{let o=setTimeout(()=>n(new Error("timed out")),4e3);e.then(t,n).finally(()=>clearTimeout(o))})}(e).catch(t=>{throw e.then(e=>e.close(),()=>{}),t}),o=await ie(n)}catch{n=new oe,s=!0,o=await ie(n)}let d=e.name?.trim();d&&d!==o.name&&(o={...o,name:d},await n.saveProfile(o)),navigator.storage?.persist?.().catch(()=>{});let c=await Q.open({doc:a,key:l,store:n,identity:o.identity,name:o.name});go(e.slides??null);let p,u=new Set,h="",f=()=>queueMicrotask(()=>{if(!p||g)return;let e={commentMode:p.ctx.state.s,name:c.name},t=JSON.stringify(e);if(t!==h){h=t;for(let t of[...u])try{t({...e})}catch(e){globalThis.reportError?.(e)}}}),m=async e=>{c.name=e,o={...o,name:e},f(),await n.saveProfile(o)},g=!1;try{p=Io({doc:c,styles:':host{all:initial;direction:ltr;unicode-bidi:normal}*{box-sizing:border-box}button{appearance:none;font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}svg{display:block}.layer{all:initial;direction:ltr;unicode-bidi:normal;display:block;position:fixed;inset:0;pointer-events:none;font:13px/1.5 var(--pu-font,system-ui,sans-serif);color:var(--k);--k:#2C2C2A;--mu:#5F5E5A;--fa:#6B6A64;--ln:#E5E3DA;--ru:#ECEAE2;--so:#FAFAF7;--su:#FFFFFF;--ho:#F1EFE8;--as:color-mix(in srgb,var(--pu-accent,#534AB7) 12%,transparent);--sh:0 8px 28px rgba(44,44,42,.1);--in:.26s;--mv:.34s;--out:.2s;--pl:1.2s;--eo:cubic-bezier(.22,.61,.36,1);--eio:cubic-bezier(.4,0,.2,1);--ei:cubic-bezier(.4,0,1,1);--pu-text:var(--k);--pu-muted:var(--mu);--pu-faint:var(--fa);--pu-line:var(--ln);--pu-surface:var(--su);--pu-soft:var(--so);--pu-hover:var(--ho);--pu-shadow:var(--sh);--pu-ease:var(--eo)}.layer{transition:opacity .24s var(--eo)}.layer.fading{opacity:0;transition-duration:.16s;transition-timing-function:var(--ei)}.layer.dark{--k:#ECEBE6;--mu:#B4B2A9;--fa:#9A9892;--ln:#3A3936;--ru:#34332F;--so:#22221F;--su:#1B1B19;--ho:#2C2C29;--sh:0 8px 28px rgba(0,0,0,.45)}.layer.hidden .bub,.layer.hidden .col,.layer.hidden .pop,.layer.hidden .tip,.layer.hidden .mark,.layer.hidden .selbar{opacity:0!important;pointer-events:none!important}.layer.kb :is(.launch,.toast){opacity:0!important;pointer-events:none!important;transition:opacity var(--out) var(--ei)!important}.tx{font-size:14px;line-height:1.5;color:var(--k);white-space:pre-wrap;overflow-wrap:anywhere}.tx.del,.rest,.ctx,.ago{color:var(--fa)}.rest,.ago{font-size:12px}.rest{display:block;margin-top:3px}.hdr{position:relative;display:flex;align-items:center;gap:7px;min-height:22px}.who{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600;color:var(--k)}.ago{flex:none;white-space:nowrap}.ago:before{content:"\\b7";margin-right:6px}.root>.tx,.it>.tx,.root>.ctx{margin-top:2px}.ctx[hidden]{display:none}.ctx{font-size:12px;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cd>.thread .tx,.clamp{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.th.long .root>.tx{max-height:var(--full);overflow:hidden;transition:max-height var(--mv) var(--eio)}.th.long:not(.on) .root>.tx{max-height:84px;mask-image:linear-gradient(#000 calc(100% - 21px),transparent)}.mr{display:grid;grid-template-rows:0fr;opacity:0;font-size:12px;color:var(--pu-accent);text-align:end;transition:grid-template-rows var(--mv) var(--eio),opacity var(--in) var(--eo)}.mr>span{min-height:0;overflow:hidden}.th.long:not(.on) .mr{grid-template-rows:1fr;opacity:1}.tx a{color:var(--pu-accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}.acts{margin-left:auto;display:flex;flex:none;transition:opacity var(--in) var(--eo)}.th:not(.on):not(:hover):not(:focus-within) .acts,.cd:not(.open):not(:hover):not(:has(:focus-visible,.pm)) .acts,.still .th:not(.on):not(:has(:focus-visible)) .acts,.still .cd:not(.open):not(:has(:focus-visible,.pm)) .acts{opacity:0;pointer-events:none}.th:not(.on) .acts,.cd:not(.open) .acts{position:absolute;right:0;padding-left:16px;background:linear-gradient(90deg,transparent,var(--bg) 14px);transition:opacity var(--in) var(--eo),pointer-events 0s var(--in);transition-behavior:allow-discrete}.th.on .rest{display:none}.pm{position:absolute;right:0;top:100%;z-index:5;display:flex;flex-direction:column;min-width:150px;padding:4px;border:1px solid var(--ln);border-radius:10px;background:var(--su);box-shadow:var(--sh)}.pm.in{animation:pu-in var(--in) var(--eo) both}.pm button{padding:6px 10px;border-radius:7px;text-align:left;font-size:13px;transition:background-color .2s var(--eo),color .2s var(--eo)}.pm button:hover,.pm button:focus-visible{background:var(--ho)}.pm .dl{color:#c9402f}.dark .pm .dl{color:#f08a7e}.edit{margin-top:2px}.ib{width:24px;height:22px;display:grid;place-items:center;border-radius:6px;color:var(--mu);transition:background-color .2s var(--eo),color .2s var(--eo)}.ib:hover,.ib:focus-visible{background:var(--ho);color:var(--k)}.rps,.rbox{padding-left:14px}.rps .it{padding-top:8px}.more{display:grid;grid-template-rows:1fr;transition:grid-template-rows var(--mv) var(--eio)}.more>div{overflow:hidden;min-height:0}.th:not(.on) .more{grid-template-rows:0fr}.row{position:relative;padding-top:6px}.line{display:flex;align-items:center;gap:6px;padding:3px 12px;border:1px solid var(--ln);border-radius:16px;cursor:text;transition:border-color var(--in) var(--eo),box-shadow var(--in) var(--eo)}.line:hover{border-color:var(--mu)}.line:focus-within{border-color:var(--pu-accent);box-shadow:0 0 0 1px var(--pu-accent)}.input{flex:1;min-width:0;height:24px;display:block;border:0;outline:none;resize:none;overflow:hidden;font:inherit;font-size:14px;line-height:1.5;padding:1px 0;color:var(--k);background:transparent}.input::placeholder{color:var(--fa);opacity:1}.bts{display:flex;justify-content:flex-end;gap:4px;max-height:0;opacity:0;overflow:hidden;transition:max-height var(--in) var(--eo),opacity var(--in) var(--eo),padding var(--in) var(--eo)}.row:focus-within .bts,.row.has .bts{max-height:40px;opacity:1;padding-top:4px}.bts button{padding:2px 10px;border-radius:14px;font-size:13px;font-weight:600;color:var(--pu-accent);transition:background-color .2s var(--eo),color .2s var(--eo)}.cnl:hover,.cnl:focus-visible{background:var(--as)}.send{background:var(--pu-accent);color:var(--pu-on,#fff)!important}.send:not(.show){background:var(--ru);color:var(--fa)!important;cursor:default}.ed{display:flex;gap:10px;align-items:center;min-height:34px;padding:6px 10px}.ed .input,.nf .input{font-size:13px;height:22px;border-bottom:1px solid var(--ln)}.ed .input:focus,.nf .input:focus{border-bottom-color:var(--pu-accent)}.av{flex:none;display:grid;place-items:center;width:22px;height:22px;border-radius:32%;font-size:12px;font-weight:600;line-height:1;opacity:0;transform:scale(.85);transition:opacity var(--in) var(--eo),transform var(--in) var(--eo)}.av.in{opacity:1;transform:none}.av svg{width:122%;height:122%;stroke-width:1.3}.av{--av-l:92%;--av-d:30%;--s:60%;background:hsl(var(--h) var(--s) var(--av-l));color:hsl(var(--h) var(--s) var(--av-d))}.dark .av{--av-l:20%;--av-d:78%}.av.ai{position:relative;border-radius:50%;background:var(--su);color:var(--pu-accent);font-size:9px;letter-spacing:.02em}.av.ai:before{content:"";position:absolute;inset:3px;border-radius:50%;border:1.5px solid var(--pu-accent);pointer-events:none}.refs{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px;white-space:normal}.refs .ref{display:inline-flex;align-items:center;gap:5px;max-width:160px;padding:1px 9px;border:1px solid var(--ln);border-radius:999px;background:var(--so);color:var(--mu);font:inherit;font-size:11.5px;line-height:1.6;text-decoration:none;cursor:pointer;transition:background-color .2s var(--eo),color .2s var(--eo),border-color .2s var(--eo)}.refs .ref:hover,.refs .ref:focus-visible{background:var(--as);color:var(--pu-accent);border-color:var(--pu-accent)}.ref span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rxp{position:fixed;width:320px;height:340px;border-radius:12px;overflow:hidden;pointer-events:none;opacity:0;transform:translateY(4px);transition:opacity var(--in) var(--eo),transform var(--in) var(--eo)}.rxp.show{opacity:1;transform:none;pointer-events:auto}.mn{border-radius:4px;padding:0 2px;background:var(--as);color:var(--pu-accent)}.mn.me{font-weight:600}.mnl{position:absolute;left:0;bottom:100%;margin:0 0 4px;padding:4px;list-style:none;min-width:180px;max-width:100%;border:1px solid var(--ln);border-radius:10px;background:var(--su);box-shadow:var(--sh);opacity:0;transform:translateY(4px);pointer-events:none;z-index:4;transition:opacity var(--in) var(--eo),transform var(--in) var(--eo)}.mnl.show{opacity:1;transform:none;pointer-events:auto}.mnl li{display:flex;align-items:baseline;gap:8px;padding:5px 8px;border-radius:6px;font-size:13px;color:var(--k);cursor:pointer}.mnl li small{font-size:11px;color:var(--fa)}.mnl li.on,.mnl li:hover{background:var(--as);color:var(--pu-accent)}.dlg{position:fixed;left:50%;top:18vh;width:min(380px,calc(100vw - 32px));padding:16px 18px;border:1px solid var(--ln);border-radius:14px;background:var(--su);box-shadow:var(--sh);color:var(--k);opacity:0;transform:translate(-50%,6px);pointer-events:none;transition:opacity var(--in) var(--eo),transform var(--in) var(--eo)}.dlg.show{opacity:1;transform:translate(-50%);pointer-events:auto}.toast.act{display:flex;align-items:center}.toast.show .ta{pointer-events:auto}.toast .ta{transition:visibility 0s .3s}.toast:not(.show) .ta{visibility:hidden}.toast.show .ta{transition-delay:0s}.toast.tap{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;background:var(--pu-accent);border-color:var(--pu-accent);color:var(--pu-on,#fff);font-size:15px;font-weight:500;transition:opacity .3s var(--eo),transform .3s var(--eo),grid-template-columns var(--mv) var(--eio),padding var(--mv) var(--eio)}.toast.tap .tw{min-width:0;max-height:4em;overflow:hidden;text-wrap:balance;transition:opacity var(--out) var(--ei),max-height var(--mv) var(--eio)}.toast.tap .ta{color:inherit;font-weight:600}.toast.tap.taught{grid-template-columns:minmax(0,0fr) auto;padding-left:4px}.toast.tap.taught .tw{opacity:0;max-height:0}.ta{margin-left:4px;color:var(--pu-accent);text-decoration:underline;text-underline-offset:2px}.rx .n{font-size:11px;font-variant-numeric:tabular-nums}.rx.mine{background:var(--as);color:var(--pu-accent);border-color:var(--pu-accent)}.rx:disabled{cursor:default;opacity:.7}.rx{-webkit-touch-callout:none;-webkit-user-select:none}.rx.new,.rxq.new{animation:pu-in var(--mv) var(--eo) backwards}.rxs{align-items:center}.rxq{display:inline-flex;gap:2px}.rxo{padding:2px 5px;border-radius:8px;font-size:16px;line-height:1.3;transition:background-color .2s var(--eo)}.rxo:hover,.rxo:focus-visible,.rxo[aria-pressed=true]{background:var(--as)}.refs .ref{position:relative}.ref .rc{position:absolute;left:0;top:calc(100% + 6px);z-index:3;width:max-content;max-width:min(240px,70vw);padding:6px 9px;border:1px solid var(--ln);border-radius:8px;background:var(--su);box-shadow:var(--sh);color:var(--k);font-size:12px;line-height:1.45;white-space:normal;text-align:left;overflow:visible;opacity:0;visibility:hidden;transform:translateY(-3px);pointer-events:none;transition:opacity .2s var(--eo),transform .2s var(--eo),visibility 0s .2s}.ref:hover .rc,.ref:focus-visible .rc,.ref.held .rc{opacity:1;visibility:visible;transform:none;transition-delay:0s}.ref .sl{width:10px;height:7px;border:1.3px solid currentColor;border-radius:2px;flex:none}.seen{display:flex;align-items:center;gap:6px;padding:6px 0 0 14px;font-size:12px;color:var(--fa)}.cm{display:flex;align-items:center;gap:6px;max-height:20px;padding-top:4px;overflow:hidden;font-size:12px;color:var(--fa)}.hdr .cm{display:inline-grid;padding:0;flex:none}.cm.new{animation:pu-in var(--mv) var(--eo) both}.cm.out{animation:cm-out var(--mv) var(--eo) forwards}@keyframes cm-out{to{opacity:0;max-height:0;padding-top:0}}.seen button{margin-left:auto;padding:0 6px;border:0;border-radius:6px;background:none;color:var(--fa);font:inherit;cursor:pointer;transition:color .2s var(--eo),background-color .2s var(--eo)}.seen button:hover,.seen button:focus-visible{color:var(--pu-accent);background:var(--as)}.seen i{width:12px;height:12px;border-radius:50%;border:1.5px solid var(--pu-accent);flex:none}.c0{--h:0}.c1{--h:25}.c2{--h:50}.c3{--h:130}.c4{--h:175}.c5{--h:215}.c6{--h:270}.c7{--h:330}.c8{--h:28;--s:35%}.c9{--h:220;--s:8%}button.me{flex:none;display:grid;place-items:center}button.me>.av{grid-area:1/1}.you{flex:1;display:grid;min-width:0;min-height:22px;font-size:12px;color:var(--fa)}.you .nm{font-size:13px;font-weight:600;color:var(--k)}.you>*{grid-area:1/1;display:flex;align-items:center;min-width:0;transition:opacity var(--in) var(--eo),transform var(--in) var(--eo)}.say{white-space:pre;overflow:hidden}.nm{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.say button{flex:none}.say button{color:var(--mu);text-decoration:underline;text-decoration-color:var(--ln);text-underline-offset:2px;transition:color .2s var(--eo)}.say button:hover,.say button:focus-visible{color:var(--pu-accent)}.nf{opacity:0;transform:translateY(-4px);pointer-events:none}.nf .input{font-size:13px;height:24px}.you.naming .nf{opacity:1;transform:none;pointer-events:auto}.you.naming .say{opacity:0;pointer-events:none}.bub{position:fixed;left:0;top:0;width:20px;height:20px;margin:-20px 0 0 -2px;border-radius:50% 50% 50% 0;background:var(--pu-accent);border:2px solid var(--su);box-shadow:0 1px 4px #0003;pointer-events:auto;opacity:0;transform:translateY(-6px) scale(.9);transform-origin:2px 20px;transition:opacity var(--out) var(--ei),transform var(--out) var(--ei)}.bub.in{opacity:1;transform:none;transition:opacity var(--in) var(--eo),transform var(--in) var(--eo)}.bub.in:hover,.bub.on{transform:scale(1.18)}.bub.done{background:var(--fa)}.bub.ghost{pointer-events:none}.tip,.pop,.menu,.all,.xp,.toast,.selbar,.namebar,.tt,.rxp{background:var(--su);border:1px solid var(--ln);box-shadow:var(--sh)}.tip{position:fixed;max-width:260px;border-radius:10px;padding:7px 10px;opacity:0;transform:translateY(3px);transition:opacity .22s var(--eo),transform .26s var(--eo)}.tip.show{opacity:1;transform:none;pointer-events:auto;cursor:pointer;transition:opacity .22s var(--eo),transform .26s var(--eo),left var(--mv) var(--eio),top var(--mv) var(--eio)}.pop{position:fixed;width:var(--pu-pop);border-radius:12px;padding:8px 10px 10px;pointer-events:none;opacity:0;transform:translateY(6px) scale(.98);transition:opacity var(--out) var(--ei),transform var(--out) var(--ei)}.pop.show{opacity:1;transform:none;pointer-events:auto;transition:opacity var(--in) var(--eo),transform var(--mv) var(--eo)}.pop.show.glide{transition:opacity var(--in) var(--eo),transform var(--mv) var(--eo),left var(--mv) var(--eio),top var(--mv) var(--eio)}.mark{position:fixed;border:2px solid color-mix(in srgb,var(--pu-accent) 50%,transparent);background:var(--as);border-radius:8px;opacity:0;transition:opacity .3s var(--eo)}.mark.show{opacity:1}.pulse{position:fixed;border:2px solid var(--pu-accent);border-radius:8px;background:var(--as);animation:pu-pulse var(--pl) var(--eio) forwards}@keyframes pu-pulse{0%{opacity:0;transform:scale(.985)}35%{opacity:.85;transform:scale(1)}to{opacity:0;transform:scale(1.02)}}.col{position:fixed;left:0;top:0;pointer-events:none;transition:opacity var(--in) var(--eo)}.th,.cd{--bg:var(--su);background:var(--bg);opacity:var(--o,1)}.th{position:absolute;left:0;right:0;top:0;padding:8px 10px 10px;border:1px solid var(--ln);border-radius:10px;pointer-events:auto;cursor:pointer;transition:transform var(--mv) var(--eio),box-shadow var(--in) var(--eo),border-color var(--in) var(--eo),opacity var(--in) var(--eo)}.th.hot{border-color:var(--mu)}.th.on{border-color:transparent;box-shadow:var(--sh);cursor:default}.th.dim{--o:.45}.th.resolved:not(.on):not(.hot){--o:.6}.th.lost .ctx{white-space:normal}.th.wait{opacity:0!important;pointer-events:none}.th:is(.out,.hop){opacity:0!important;pointer-events:none;transition:opacity var(--out) var(--ei)}.th:has(.opn:focus-visible){outline:2px solid var(--pu-accent);outline-offset:2px}.selbar{position:fixed;display:flex;border-radius:10px;padding:2px;opacity:0;transform:translateY(4px);pointer-events:none;transition:opacity var(--in) var(--eo),transform .3s var(--eo)}.selbar.show{opacity:1;transform:none;pointer-events:auto}.selbar button{width:32px;height:30px;display:grid;place-items:center;border-radius:8px;color:var(--pu-accent);transition:background-color .2s var(--eo)}.selbar button:hover,.selbar button:focus-visible{background:var(--as)}.pick{position:fixed;left:0;top:0;border:2px solid color-mix(in srgb,var(--pu-accent) 70%,transparent);background:color-mix(in srgb,var(--pu-accent) 6%,transparent);border-radius:8px;pointer-events:none;opacity:0;transition:opacity var(--out) var(--ei),border-color var(--out) var(--ei),border-width var(--out) var(--ei),box-shadow var(--out) var(--ei)}.pick.show{opacity:1;transition-duration:var(--in);transition-timing-function:var(--eo)}.pick.show.glide{transition-property:all;transition-duration:var(--mv);transition-timing-function:var(--eio)}.pick.on{border-color:var(--pu-accent)}.pkw{position:fixed;left:0;top:0;border:2px dashed color-mix(in srgb,var(--pu-accent) 70%,transparent);border-radius:8px;pointer-events:none;opacity:0;transition:opacity var(--out) var(--ei)}.pkw.show{opacity:.6;transition:opacity var(--in) var(--eo)}.draft{transition:opacity var(--in) var(--eo)}.draft.wait:not(:focus-within){opacity:.6}.pick.kf{border:3px solid var(--pu-accent);box-shadow:0 0 0 2px var(--su)}.km{position:fixed;left:0;top:0;pointer-events:none;outline:none}.sr,.mn-sr,.hh{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.namebar{position:fixed;left:0;top:0;display:flex;align-items:center;gap:2px;max-width:calc(100% - 16px);padding:2px 2px 2px 10px;border-radius:10px;font-size:12px;color:var(--mu);white-space:nowrap;pointer-events:none;opacity:0;transform:translateY(4px);transition:opacity var(--out) var(--ei),transform var(--out) var(--ei)}.namebar.show{opacity:1;transform:none;pointer-events:auto;transition:opacity var(--in) var(--eo),transform .3s var(--eo)}.namebar.show.glide{transition-property:all;transition-duration:var(--mv);transition-timing-function:var(--eio)}.namebar:hover:not(:has(.nb:hover)){opacity:.15}.namebar .lbl{margin-right:6px;max-width:260px;overflow:hidden;text-overflow:ellipsis}.namebar .nb{padding:4px;display:grid;place-items:center;border-radius:7px;transition:background-color .2s var(--eo),color .2s var(--eo)}.namebar .nb:hover,.namebar .nb:focus-visible{background:var(--ho);color:var(--k)}.namebar .nb.on{background:var(--as);color:var(--pu-accent)}.namebar .nb[hidden]{display:none}.launch{position:fixed;right:0;bottom:var(--pu-lift);display:flex;flex-direction:row-reverse;align-items:center;border-top-left-radius:10px;pointer-events:auto;transform-origin:100% 100%;background:color-mix(in srgb,var(--su) 62%,transparent);-webkit-backdrop-filter:blur(10px) saturate(1.5);backdrop-filter:blur(10px) saturate(1.5);transition:opacity var(--in) var(--eo),transform var(--mv) var(--eo),background-color .3s var(--eo),color .3s var(--eo),bottom var(--mv) var(--eio)}.launch:has(.mode.on){background:color-mix(in srgb,var(--pu-accent) 90%,transparent);color:var(--pu-on,#fff)}.layer.listing .launch{opacity:0;transform:scale(.6);pointer-events:none}.menu.inp{--b:60px;right:8px;z-index:1}.menu.inp :is([data-item=comment],[data-item=all]){display:none}.launch .mode{position:relative;display:grid;place-items:center;width:32px;height:32px;border-radius:10px 0 0}.mode>*,.cnt>*{grid-area:1/1}.mode>*{display:grid;place-items:center;transition:opacity var(--in) var(--eo)}.cnt,.has>.plus{opacity:0}.has>.cnt{opacity:1}.cnt>.n{font-size:11px;font-weight:500;line-height:1;margin:-1.2px 0 0 1.2px;font-variant-numeric:tabular-nums lining-nums;opacity:0;transition:opacity var(--in) var(--eo)}.w>.n{margin-top:-3.4px}.cnt>svg{transition:opacity var(--in) var(--eo)}.cnt>svg+svg,.cnt.w>svg{opacity:0}.cnt.w>svg+svg{opacity:1}.n.on{opacity:1}.launch .mode:focus-visible{outline:2px solid var(--pu-accent);outline-offset:-2px}.mode>.dot{position:absolute;top:2px;right:2px;width:8px;height:8px;border-radius:50%;background:var(--pu-accent);opacity:0;transition:opacity var(--in) var(--eo),background-color .3s var(--eo)}.mode.else>.dot{opacity:1}.mode.on>.dot{background:var(--pu-on,#fff)}.ttip{display:grid;grid-template-columns:minmax(0,0fr);overflow:hidden;font-size:12px;color:var(--mu);pointer-events:none;opacity:0;transition:grid-template-columns var(--out) var(--ei),opacity var(--out) var(--ei)}.ttip>span{min-width:0;white-space:nowrap;padding-left:10px}.ttip small{font-size:12px}.ttip small,.mi .kc{color:var(--fa)}.launch:has(.mode.on) :is(.ttip,.ttip small){color:inherit}.launch:hover .ttip{grid-template-columns:minmax(0,1fr);opacity:1;transition:grid-template-columns var(--mv) var(--eo) .4s,opacity var(--in) var(--eo) .4s}.launch:has(.mm[aria-expanded=true]) .ttip{grid-template-columns:minmax(0,0fr);opacity:0}.launch .mm{display:grid;place-items:center;width:0;height:24px;margin-left:0;border-radius:6px;overflow:hidden;opacity:0;color:inherit;transition:width var(--out) var(--ei),margin var(--out) var(--ei),opacity var(--out) var(--ei),background-color .2s var(--eo)}.launch:is(:hover,:has(.mm:focus-visible)) .mm{width:26px;margin-left:4px;opacity:1;transition:width var(--mv) var(--eo) .4s,margin var(--mv) var(--eo) .4s,opacity var(--in) var(--eo) .4s,background-color .2s var(--eo)}.launch:has(.mm:focus-visible) .mm{transition-delay:0s}.launch .mm:hover{background:color-mix(in srgb,currentColor 12%,transparent)}.launch .mm:focus-visible{outline:2px solid var(--pu-accent);outline-offset:-2px}.launch:has(.mm[aria-expanded=true]) .mm{width:0;margin-left:0;opacity:0}.launch .mode{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.launch:has(.mm:focus-visible) .ttip{grid-template-columns:minmax(0,1fr);opacity:1}@media(hover:none){.ttip,.tt,.cd>.thread .acts,.launch .mm{display:none}}.menu{--b:calc(40px + var(--pu-lift));position:fixed;right:8px;bottom:var(--b);width:290px;border-radius:12px;padding:4px;pointer-events:none;opacity:0;transform:translateY(6px);transition:opacity var(--out) var(--ei),transform var(--out) var(--ei)}.menu.show{z-index:2;opacity:1;transform:none;pointer-events:auto;transition:opacity var(--in) var(--eo),transform var(--mv) var(--eo)}@media(max-height:600px){.menu{max-height:calc(100% - var(--b) - 8px);overflow-y:auto;overscroll-behavior:contain}}.mi{position:relative;display:flex;gap:10px;align-items:center;width:100%;min-height:34px;text-align:left;padding:6px 10px;border-radius:8px;transition:background-color .2s var(--eo)}.mi:hover,.mi:focus-visible{background:var(--so)}.mi svg{color:var(--mu);flex:none}.mi small{display:block;color:var(--fa);font-size:12px}.lb{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ma{flex:none;display:grid;margin:-2px 0}.ma .av{width:20px;height:20px;font-size:11px}.mi .av svg{color:inherit}.sep{height:1px;margin:4px 10px;background:var(--ru)}.subs{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows var(--in) var(--eo),opacity var(--in) var(--eo)}.subs.open{grid-template-rows:1fr;opacity:1}.subs>div{min-height:0;overflow:hidden}.subs .mi{padding-left:30px}.chev{display:grid;transition:transform var(--in) var(--eo)}[aria-expanded=true]>.chev{transform:rotate(90deg)}.tt{position:absolute;right:calc(100% + 14px);top:50%;translate:0 -50%;width:max-content;max-width:220px;padding:4px 9px;border-radius:8px;font-size:12px;line-height:1.4;color:var(--mu);pointer-events:none;opacity:0;transform:translate(3px);transition:opacity var(--out) var(--ei),transform var(--out) var(--ei)}.mi:hover>.tt,.mi:focus-visible>.tt{opacity:1;transform:none;transition:opacity var(--in) var(--eo) .5s,transform var(--in) var(--eo) .5s}@media(max-width:600px){.tt{right:8px;top:auto;bottom:100%;translate:none;transform:translateY(3px)}}.sw{position:relative;flex:none;width:26px;height:16px;border-radius:8px;background:var(--ln);transition:background-color var(--mv) var(--eio)}.sw:before,.sw:after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #00000040;transition:transform var(--mv) var(--eio),opacity var(--mv) var(--eio)}.sw:before{opacity:0;transform:translate(10px)}[aria-checked=true]>.sw{background:var(--pu-accent)}[aria-checked=true]>.sw:after{transform:translate(10px)}.tools{display:flex;flex:none;gap:2px}.tools[hidden]{display:none}.tool[aria-pressed=true]{background:var(--as);color:var(--pu-accent)}.note{display:block;padding:0 0 4px;font-size:12px;color:var(--fa)}.bts .here{flex:none;display:grid;place-items:center;margin-right:auto;padding:0 2px;color:var(--fa);transition:opacity var(--in) var(--eo)}.here.off{opacity:0;pointer-events:none}.note[hidden]{display:none}.ov{position:absolute;inset:0;pointer-events:none;overflow:hidden}.xb{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:4px 16px 16px;font-size:13px}.xb p{margin:0 0 10px}.all,.xp{position:fixed;top:0;right:0;bottom:0;width:var(--pu-panel);display:flex;flex-direction:column;border-width:0 0 0 1px;opacity:0;transform:translate(100%);transition:transform var(--out) var(--ei),opacity var(--out) var(--ei)}.all.show,.xp.show{opacity:1;transform:none;pointer-events:auto;transition:transform var(--mv) var(--eo),opacity var(--in) var(--eo)}.all.full{width:100%}.hd{display:flex;align-items:center;gap:4px;padding:8px 8px 6px}.sp{flex:1}.tg{position:relative;display:flex;align-items:center;gap:5px;height:28px;padding:0 11px 0 9px;border-radius:99px;white-space:nowrap;line-height:1;color:var(--mu);transition:background-color .2s var(--eo),color .2s var(--eo)}.tg:hover{background:var(--ho);color:var(--k)}.tg[aria-pressed=true]{background:var(--as);color:var(--pu-accent)}.tg[aria-pressed=true]:hover{background:color-mix(in srgb,var(--pu-accent) 20%,transparent)}.tg:focus-visible{outline:2px solid var(--pu-accent);outline-offset:1px}.tg:after{content:attr(data-tip);position:absolute;left:0;top:calc(100% + 4px);z-index:3;width:max-content;max-width:220px;padding:4px 9px;border:1px solid var(--ln);border-radius:8px;background:var(--su);box-shadow:var(--sh);font-size:12px;line-height:1.4;color:var(--mu);pointer-events:none;opacity:0;transform:translateY(-3px);transition:opacity var(--out) var(--ei),transform var(--out) var(--ei)}.tg:not([aria-pressed=true]):is(:hover,:focus-visible):after{opacity:1;transform:none;transition:opacity var(--in) var(--eo) .4s,transform var(--in) var(--eo) .4s}.list{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:4px 8px 8px;background:var(--so)}.cd{position:relative;margin-top:6px;border:1px solid var(--ln);border-radius:10px}.list :is(.cd,[role=listitem],.sec){transition:all var(--mv) var(--eio)}.list .out{opacity:0!important;margin-top:0;padding-block:0;border-width:0;overflow:hidden}.cd.open{border-color:transparent;box-shadow:var(--sh)}.cd.done{--o:.6}.cd>.mi{position:absolute;inset:0;border-radius:10px;background:none}.cd>.thread :is(.acts,.refs,.edit){position:relative;z-index:1}.cd:not(.open,.new):is(:hover,:has(>.mi:focus-visible)){--bg:var(--so)}.cd.open>.mi{display:none}.cd.open .root>.hdr{cursor:pointer}.cd.new,.xr,.cd>.thread{padding:8px 10px 10px}.pf{display:flex;align-items:center;gap:8px;min-height:52px;padding:0 8px 0 14px;border-top:1px solid var(--ln)}.fs{display:flex;align-items:center;gap:6px;padding:4px 6px;border-radius:8px;font-size:13px;transition:background-color .2s var(--eo)}.fs:hover,.fs:focus-visible{background:var(--ho)}.fs small{font-size:12px;color:var(--fa)}.pf .ib{width:30px;height:30px}.cx{position:fixed;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;opacity:0;transition:opacity var(--in) var(--eo)}.cx.show{opacity:1}.cx path{fill:none;stroke:var(--pu-accent);stroke-width:1.5;stroke-linecap:round;opacity:.7}.cx circle{fill:var(--pu-accent)}.layer.listing .col{opacity:0;transition:opacity var(--out) var(--ei)}.sec{padding:8px 10px 2px;font-size:12px;color:var(--fa)}.fold{display:flex;align-items:center;gap:4px;width:100%;margin-top:6px;border-radius:6px;text-align:left;cursor:pointer}.fold:hover,.fold:focus-visible{color:var(--mu);outline:none}.fold svg{transition:transform var(--mv) var(--eio)}.fold[aria-expanded=true] svg{transform:rotate(90deg)}.ag{display:flex;align-items:center;gap:8px;padding:6px 14px;font-size:12px;color:var(--fa);border-bottom:1px solid var(--ln)}.ag[hidden]{display:none}.lns{display:flex;flex-direction:column}.ln{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows var(--in) var(--eo),opacity var(--in) var(--eo)}.ln.show{grid-template-rows:1fr;opacity:1}.ln>.lw{overflow:hidden;min-height:0}.ag button{margin-left:auto;flex:none;padding:0 6px;border-radius:6px;color:var(--fa);transition:color .2s var(--eo),background-color .2s var(--eo)}.ag button:hover:not(:disabled),.ag button:focus-visible{color:var(--pu-accent);background:var(--as)}.ag button:disabled{opacity:.5;cursor:default}.adr{margin:8px 0 0 14px;padding:8px 10px;border-radius:8px;background:var(--so);font-size:13px;color:var(--k);animation:pu-in var(--mv) var(--eo) both}.adr small{display:block;font-size:12px;color:var(--fa)}.adr .go{display:flex;gap:6px;margin-top:6px}.adr .go button{padding:2px 8px;border-radius:6px;font-size:12px;color:var(--mu);transition:color .2s var(--eo),background-color .2s var(--eo)}.adr .go button:hover,.adr .go button:focus-visible{color:var(--pu-accent);background:var(--as)}@keyframes pu-in{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}.sec b{margin-left:6px;font-weight:500;color:var(--pu-accent)}.toast{--r:40px;position:fixed;right:var(--r);bottom:calc(4px + var(--pu-lift));max-width:min(320px,calc(100vw - var(--r) - 16px));border-radius:10px;padding:8px 14px;font-size:13px;opacity:0;transform:translateY(6px);transition:.3s var(--eo)}.toast.show{opacity:1;transform:none}.layer:is(.listing,:has(.xp.show)) .toast{--r:12px;bottom:64px;max-width:min(320px,calc(var(--pu-panel) - 24px));z-index:2}.layer:not(.listing):has(.menu.show) .toast{--r:314px}@media(max-width:640px){.layer:not(.listing):has(.menu.show) .toast{--r:12px;bottom:auto;top:12px}}@media(pointer:coarse){.mi,.ib,.rxo,.refs .ref,.mnl li,.bts button,.tg,.fs,.pm button,.ta,.nb,.selbar button,button.me,.say button,.line,.seen button,.ag button,.go button{min-height:44px}.ib,.rxo,.refs .ref,.nb,.selbar button,button.me,.ta{min-width:44px}.bub:before{content:"";position:absolute;inset:-14px;border-radius:50%}.row:focus-within .bts,.row.has .bts{max-height:52px}.hd{padding:4px 8px}.toast{--r:52px;display:flex;align-items:center;min-height:44px;padding:4px 14px;line-height:1.25}.ta{display:grid;place-items:center;margin:-5px -10px -5px 6px;padding:0 10px}.launch .mode{width:44px;height:44px}.menu{--b:calc(52px + var(--pu-lift))}}@media(pointer:coarse)and (hover:none){.ks{display:none}}.layer :is(button,a):not(.mi,.opn,.mode,.tg):focus-visible{outline:2px solid var(--pu-accent);outline-offset:1px}.layer .mi:focus-visible{outline:2px solid var(--pu-accent);outline-offset:-2px}.flip .launch{background:var(--su)}.flip :is(.th,.cd){opacity:1}.flip :is(.th,.cd)>*{opacity:var(--o,1);transition:opacity var(--in) var(--eo)}@media(forced-colors:active){.pick.kf{border:3px solid Highlight}.layer :is(.ib,.mi,.nb,.tg,.fs,.selbar button,.say button,.xb button):focus-visible{outline:2px solid Highlight}.sw{forced-color-adjust:none;border:1px solid CanvasText;background:Canvas}.sw:before,.sw:after{top:1px;left:1px;background:CanvasText}[aria-checked=true]>.sw{background:Highlight;border-color:Highlight}[aria-checked=true]>.sw:before,[aria-checked=true]>.sw:after{background:HighlightText}.layer :is(.tg,.rxo,.rx)[aria-pressed=true],.launch:has(.mode.on){forced-color-adjust:none;background:Highlight;color:HighlightText;border-color:Highlight}}@media(prefers-reduced-motion:reduce){.ln,.subs{transition-property:opacity}@keyframes pu-in{0%{opacity:0}to{opacity:1}}@keyframes cm-out{99%{opacity:0;max-height:20px;padding-top:4px}to{opacity:0;max-height:0;padding-top:0}}.bub,.bub.in,.bub.in:hover,.bub.on,.tip,.pop,.selbar,.menu,.all,.xp,.tt,.toast,.ref .rc,.rxp,.mnl{transform:none!important}.ttip{transition-property:opacity!important}.dlg{transform:translate(-50%)!important}.sw:after{transform:none!important;transition-property:opacity}[aria-checked=true]>.sw:after{opacity:0}[aria-checked=true]>.sw:before{opacity:1}.th,.th.long .root>.tx,.mr,.list :is(.cd,[role=listitem],.sec){transition-property:opacity,box-shadow}.tip.show,.toast{transition-property:opacity}.pick,.pick.show{transition:opacity .16s ease-in-out}.all,.all.show,.xp,.xp.show{transition-property:opacity}.namebar,.namebar.show{transform:none!important;transition:opacity .16s ease-in-out}.av,.nf,.launch{transform:none!important}@keyframes pu-pulse{0%{opacity:0}35%{opacity:.85}to{opacity:0}}}',root:e.root??document.body,onName:m,onRender:f})}catch(e){throw go(null),e}let v=p;s&&v.ctx.pe("This browser can't keep comments for this page \u2014 copy the comments (Copy comments \u203a As Markdown) to keep them");let w=()=>{c.flush().catch(e=>globalThis.reportError?.(e))},y=function(e){let t={...e,i:!0};Gt=t;for(let e of _t.values())"waiting"===e.info.state&&Qt(e,t);return()=>{t.i=!1,Gt===t&&(Gt=null);for(let e of[..._t.values()].reverse())e.stop?.(),delete e.stop;e.surface.destroy()}}({surface:v.ctx.addons,doc:c,root:e.root??document.body,ephemeral:s,version:Ue,onIdentity:async e=>{o={...o,identity:e},await n.saveProfile(o)}}),b=/\S/.test(Et("data-pipeup-agents")??"")?window.setTimeout(()=>{Jt().some(e=>"agents"===e.id)||console.warn("pipeup: this page lists an agent (data-pipeup-agents), but the agents add-on isn't on the page, so replies won't show. Add @pipeup/agents (see the Add-ons page).")},1e3):0;return"off"!==Et("data-pipeup-updates")&&Date.now()-Date.parse(Ye)>31536e6&&console.info(`pipeup: this is Pipeup ${Ue}, from ${Ye}; newer versions exist. See https://github.com/pipeup-ai/pipeup/blob/main/CHANGELOG.md`),window.addEventListener("pagehide",w),{document:c,comments:({all:e=!1,edition:t=!1}={})=>Ve(v.ctx.l.all().filter(e=>!t||!v.ctx.w(e.thread)),{title:document.title,url:location.href,exportedAt:new Date,all:e}),appearance:()=>({...v.appearance()}),flush:()=>c.flush(),get commentMode(){return v.ctx.state.s},setCommentMode:async e=>{g||v.ctx.ie(!!e)},get name(){return c.name},setName:async e=>{let t=String(e).replace(/\s+/g," ").trim();!t||t===c.name||g||(await m(t),v.ctx.m())},on:(e,t)=>"change"!==e||"function"!=typeof t?()=>{}:(u.add(t),()=>u.delete(t)),unmount:()=>{g||(g=!0,u.clear(),kt(null),window.removeEventListener("pagehide",w),window.clearTimeout(b),y(),v.destroy(),go(null),jo===t()&&(jo=null))}}}(e,()=>t).catch(e=>{throw jo===t&&(jo=null),kt(null),e?.code?e:Bo("failed",`Pipeup couldn't start: ${String(e?.message??e)}`,e)});return jo=t,t}async function Ko(e){if(!jo)throw new Error("pipeup: Pipeup hasn't started on this page");return(await jo).comments(e)}export{Ft as ADDON_API,v as AI_NAME,c as ANIMALS,Ye as BUILT,p as COLOURS,re as DEFAULT_PROFILE_NAME,ae as IndexedDbStore,oe as MemoryStore,Q as PipeupDocument,X as UnsavedChangeError,Ue as VERSION,Jt as addons,Ve as agentComments,y as agentName,m as animalName,I as checkOp,Ko as comments,W as computeOpId,Fe as copyAll,Oe as copyThread,s as createIdentity,ye as describeElement,we as describeRange,He as formatAgo,w as isAiName,b as isPasted,Pe as labelOf,ie as loadOrCreateProfile,qe as locate,Wo as mount,g as nameOf,U as newDocumentAttribute,mo as onReveal,Y as parseDocumentAttribute,Z as readFeedbackFile,Se as resolveAnchor,At as setPeople,fo as setViewState,Et as setting,N as signOp,Xt as use};
1
+ function e(e){let t="";for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function t(e){let t=atob(e.replace(/-/g,"+").replace(/_/g,"/")),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}function n(e){return(new TextEncoder).encode(e)}function o(e){if(null===e||"object"!=typeof e)return JSON.stringify(e);if(Array.isArray(e))return"["+e.map(o).join(",")+"]";let t=e;return"{"+Object.keys(t).filter(e=>void 0!==t[e]).sort().map(e=>JSON.stringify(e)+":"+o(t[e])).join(",")+"}"}function r(e){return e.replace(/\s+/g," ").trim()}function i(e){let t=r(e),n=2166136261;for(let e=0;e<t.length;e++)n^=t.charCodeAt(e),n=Math.imul(n,16777619)>>>0;return n.toString(16).padStart(8,"0")}var a=/^[A-Za-z0-9_-]{43}$/,l=new Map;async function s(){let t=await crypto.subtle.generateKey({name:"Ed25519"},!1,["sign","verify"]);return{publicKey:e(new Uint8Array(await crypto.subtle.exportKey("raw",t.publicKey))),privateKey:t.privateKey}}async function d(t,n){let o=await crypto.subtle.sign({name:"Ed25519"},t.privateKey,n);return e(new Uint8Array(o))}var c=["Otter","Fox","Owl","Bear","Rabbit"],p=["Red","Orange","Yellow","Green","Teal","Blue","Purple","Pink","Brown","Grey"];function u(e){let t=2166136261;for(let n=0;n<e.length;n++)t=Math.imul(t^e.charCodeAt(n),16777619);return t=Math.imul(t^t>>>16,2246822507),t=Math.imul(t^t>>>13,3266489909),(t^t>>>16)>>>0}var h=e=>u(e)%c.length,f=e=>Math.floor(u(e)/c.length)%p.length,m=e=>`${p[f(e)]} ${c[h(e)]}`,g=e=>{let t=e.name.replace(/^AI assistant \xb7 /,"")||m(e.author);return e.alike?`${t} \xb7 ${function(e){let t=u(`id:${e}`),n="";for(let e=0;e<4;e++,t>>>=5)n+="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[31&t];return n}(e.author)}`:t},v="AI assistant",w=e=>e===v||e.startsWith(`${v} `),y=e=>`${v} \xb7 ${e.replace(/\s+/g," ").trim()||"Agent"}`.slice(0,80).trim(),b=(e,t)=>e.name.startsWith(`${v} \xb7 `)&&!t.includes(e.author),x=2**40,k=2**47,E=1e4,S=200,$=200,L=new Set(["h","p","img","button","link","field","media","box"]),M=new Set(["confirmed","moved","gone"]),C=/^[0-9a-f]{8}$/,A=/^[A-Za-z0-9_-]{43}$/,T=/^(?:[^\s@<>"]{1,64}@[^\s@<>"]{1,190}\.[^\s@<>"]{2,24}|gh:[A-Za-z0-9-]{1,39})$/,P=/^(?:[A-Za-z0-9_-]{43}|(?:host|gh):[A-Za-z0-9._@-]{1,64})$/,q=/^[A-Za-z0-9_-]{43}$/,N=new Set(["create","reply","edit","delete","resolve","reopen","addressed","react","unreact","seen","contact","uncontact","place"]),R=/^(?:\p{Regional_Indicator}{2}|[#*0-9]\uFE0F?\u20E3|\p{Extended_Pictographic}(?:\uFE0F|\p{Emoji_Modifier})?(?:\u200D\p{Extended_Pictographic}(?:\uFE0F|\p{Emoji_Modifier})?)*)$/u,D=e=>"string"==typeof e&&R.test(e)&&[...e].length<=16;async function z(e,t){if(e.author!==t.publicKey)throw new Error("pipeup: an op must be signed by its author");return{body:e,sig:await d(t,n(o(e)))}}var O=(e,t)=>"string"==typeof e&&e.length<=t,H=e=>!!e&&"object"==typeof e,I=e=>"number"==typeof e&&Number.isFinite(e)&&e>=0&&e<=1;function B(e){if(!H(e))return!1;let{id:t,path:n,fingerprint:o,snapshot:r,quote:i,point:a,view:l,kind:s,name:d,heads:c,y:p,lost:u}=e;if(!(O(n,2e3)&&O(r,500)&&"string"==typeof o&&C.test(o)&&(void 0===t||O(t,200)&&""!==t)&&(void 0===i||H(i)&&O(i.exact,E)&&""!==i.exact&&O(i.prefix,64)&&O(i.suffix,64))&&(void 0===a||H(a)&&I(a.x)&&I(a.y))))return!1;if(void 0!==l){if(!H(l)||Array.isArray(l))return!1;let e=Object.entries(l);if(e.length>16||!e.every(([e,t])=>e.length<=64&&O(t,S)))return!1}return!(void 0!==s&&!L.has(s)||void 0!==d&&!O(d,$)||void 0!==c&&(!Array.isArray(c)||c.length>3||!c.every(e=>O(e,120)))||void 0!==p&&!I(p)||void 0!==u&&!0!==u)}function F(e){if(!H(e))return!1;let{body:t,sig:n}=e;if("string"!=typeof n||!H(t)||JSON.stringify({body:t,sig:n}).length>262144)return!1;let o=t;if(1!==o.v||"string"!=typeof o.id||!A.test(o.id)||!N.has(o.kind)||!O(o.doc,64)||""===o.doc||"string"!=typeof o.thread||!A.test(o.thread)||"string"!=typeof o.author||!q.test(o.author)||"string"!=typeof o.name||o.name.length>80||o.name!==o.name.trim()||"number"!=typeof o.clock||!Number.isSafeInteger(o.clock)||o.clock<1||o.clock>x||"number"!=typeof o.at||!Number.isSafeInteger(o.at)||o.at<0||o.at>k||void 0!==o.text&&(!O(o.text,1e4)||o.text!==o.text.trim())||void 0!==o.target&&("string"!=typeof o.target||!A.test(o.target))||("create"===o.kind||"reply"===o.kind||"edit"===o.kind||"addressed"===o.kind)&&!o.text||("reply"===o.kind||"edit"===o.kind||"delete"===o.kind)&&!o.target)return!1;if(void 0!==o.mentions){if("create"!==o.kind&&"reply"!==o.kind&&"edit"!==o.kind||!Array.isArray(o.mentions)||o.mentions.length>20)return!1;let e=o.text?.length??0;for(let t of o.mentions){if(!H(t)||!Number.isSafeInteger(t.start)||!Number.isSafeInteger(t.end))return!1;let{start:n,end:o,ref:r}=t;if(n<0||o<=n||o>e||"string"!=typeof r||!P.test(r))return!1}}return!!(("contact"!==o.kind||"string"==typeof o.text&&T.test(o.text))&&("seen"!==o.kind||o.target)&&("react"!==o.kind&&"unreact"!==o.kind||o.target&&D(o.text))&&("create"!==o.kind||o.id===o.thread&&B(o.anchor))&&("place"!==o.kind||B(o.anchor)&&M.has(o.text)))}function j(r){return async function(n,o,r){if(!a.test(n))return!1;try{if(e(t(n))!==n)return!1;let i=l.get(n);if(!i){l.size>=512&&l.delete(l.keys().next().value),i=crypto.subtle.importKey("raw",t(n),{name:"Ed25519"},!0,["verify"]),l.set(n,i);let e=i;e.catch(()=>{l.get(n)===e&&l.delete(n)})}return await crypto.subtle.verify({name:"Ed25519"},await i,t(r),o)}catch{return!1}}(r.body.author,n(o(r.body)),r.sig)}async function W(e){return F(e)&&await j(e).catch(()=>!1)}function K(e,t){return e.body.clock!==t.body.clock?e.body.clock-t.body.clock:e.body.at!==t.body.at?e.body.at-t.body.at:e.body.author!==t.body.author?e.body.author<t.body.author?-1:1:e.body.id!==t.body.id?e.body.id<t.body.id?-1:1:0}function V(e,t,n,o,r,i){let a={id:e,author:t,name:n,text:o,at:r,edited:!1,deleted:!1,replies:[],reactions:[]};return i?.length&&(a.mentions=i),a}async function U(t){let r={...t,id:void 0,thread:"create"===t.kind?void 0:t.thread},i=await crypto.subtle.digest("SHA-256",n(o(r)));return e(new Uint8Array(i))}var Y=class{constructor(e){this.doc=e}ops=new Map;clock=0;createAt=new Map;threadAt=new Map;get size(){return this.ops.size}all(){return[...this.ops.values()]}threads(){return function(e){let t=new Map,n=new Map,o=new Map;for(let{body:r}of[...e].sort(K)){if(r.name&&!w(r.name)&&o.set(r.author,r.name),"create"===r.kind){if(t.has(r.id)||!r.anchor||void 0===r.text)continue;let e=V(r.id,r.author,r.name,r.text,r.at,r.mentions);t.set(r.id,{id:r.id,anchor:r.anchor,root:e,resolved:!1}),n.set(r.id,{comment:e,thread:r.id});continue}let e=t.get(r.thread);if(!e)continue;if("resolve"===r.kind||"reopen"===r.kind){e.resolved="resolve"===r.kind,"reopen"===r.kind&&delete e.addressed;continue}if("place"===r.kind){if(!r.anchor)continue;e.anchor=r.anchor,e.placed={how:r.text,author:r.author,name:r.name,at:r.at};continue}if("addressed"===r.kind){void 0!==r.text&&(e.addressed={text:r.text,author:r.author,name:r.name,at:r.at});continue}let i=r.target?n.get(r.target):void 0;if(i&&i.thread===r.thread){if("reply"===r.kind){if(n.has(r.id)||void 0===r.text)continue;let t=V(r.id,r.author,r.name,r.text,r.at,r.mentions);e.root.replies.push(t),n.set(r.id,{comment:t,thread:r.thread});continue}if("seen"===r.kind){let e=i.comment.seenBy??=[];e.includes(r.author)||e.push(r.author);continue}if("react"===r.kind||"unreact"===r.kind){if(void 0===r.text||i.comment.deleted)continue;let e=i.comment.reactions,t=e.find(e=>e.emoji===r.text);if("react"===r.kind){let n={author:r.author,name:r.name};t?t.by.some(e=>e.author===r.author)||t.by.push(n):e.length<12&&e.push({emoji:r.text,by:[n]})}else t&&(t.by=t.by.filter(e=>e.author!==r.author),t.by.length||e.splice(e.indexOf(t),1));continue}r.author!==i.comment.author||i.comment.deleted||("edit"===r.kind&&void 0!==r.text&&(i.comment.text=r.text,i.comment.edited=!0,r.mentions?i.comment.mentions=r.mentions:delete i.comment.mentions),"delete"===r.kind&&(i.comment.text="",i.comment.deleted=!0,i.comment.reactions=[],delete i.comment.mentions))}}for(let{comment:e}of n.values()){e.name||(e.unnamed=!0,e.name=o.get(e.author)??"");for(let t of e.reactions)for(let e of t.by)e.name||=o.get(e.author)??""}let r=new Map,i=(e,t)=>{let n=g({author:e,name:t}).toLowerCase();(r.get(n)??r.set(n,new Set).get(n)).add(e)};for(let{comment:e}of n.values()){i(e.author,e.name);for(let t of e.reactions)for(let e of t.by)i(e.author,e.name)}let a=(e,t)=>!w(t)&&(r.get(g({author:e,name:t}).toLowerCase())?.size??0)>1;for(let{comment:e}of n.values()){a(e.author,e.name)&&(e.alike=!0);for(let t of e.reactions)for(let e of t.by)a(e.author,e.name)&&(e.alike=!0)}return[...t.values()]}(this.ops.values())}async add(e){let t=[];for(let n of e){if(!F(n)||n.body.doc!==this.doc||this.ops.has(n.body.id)||n.body.id!==await U(n.body)||!await j(n))continue;let e={body:n.body,sig:n.sig};this.ops.set(e.body.id,e),this.clock=Math.max(this.clock,e.body.clock),"create"===e.body.kind&&this.createAt.set(e.body.author,Math.max(this.createAt.get(e.body.author)??0,e.body.at)),this.threadAt.set(e.body.thread,Math.max(this.threadAt.get(e.body.thread)??0,e.body.at)),t.push(e)}return t}async append(e,t,n){let o={v:1,...n,id:"",thread:"create"===n.kind?"":n.thread,doc:this.doc,author:e.publicKey,name:t,clock:Math.min(this.clock+1,x),at:Math.min(Math.max(Date.now(),"create"===n.kind?(this.createAt.get(e.publicKey)??0)+1:(this.threadAt.get(n.thread)??0)+1),k)};o.id=await U(o);let r=this.ops.get(o.id);if(r)return r;"create"===o.kind&&(o.thread=o.id);let[i]=await this.add([await z(o,e)]);if(!i)throw new Error("pipeup: could not record this change");return i}},_=/^([A-Za-z0-9_-]{16}):([A-Za-z0-9_-]{43})$/;function G(){return`${function(t=16){return e(crypto.getRandomValues(new Uint8Array(t)))}(12)}:${e(crypto.getRandomValues(new Uint8Array(32)))}`}async function Z(e){let n=_.exec(e.trim()),o=n?.[1],r=n?.[2];if(!o||!r)throw new Error('pipeup: data-pipeup-doc must look like "<id>:<key>", as made by newDocumentAttribute()');return{id:o,key:await crypto.subtle.importKey("raw",t(r),{name:"AES-GCM"},!1,["encrypt","decrypt"])}}async function J(t,o,r){let i=crypto.getRandomValues(new Uint8Array(12)),a=await crypto.subtle.encrypt({name:"AES-GCM",iv:i,additionalData:n(r)},t,n(o));return{iv:e(i),data:e(new Uint8Array(a))}}var X=e=>`pipeup-file:${e}`;async function Q(e,o,r){if(e.length>5e6)throw new Error("pipeup: this feedback file is too large");let i,a,l;try{i=JSON.parse(e)}catch{throw new Error("pipeup: this is not an Pipeup feedback file")}if(!i||"object"!=typeof i||1!==i.pipeup||"string"!=typeof i.doc)throw new Error("pipeup: this is not an Pipeup feedback file");if(i.doc!==o)throw new Error("pipeup: this feedback is for a different document");if(!i.sealed)return Array.isArray(i.ops)?i.ops:[];if(!r)throw new Error("pipeup: this feedback is sealed, and this page has no document key");if("string"!=typeof i.iv||"string"!=typeof i.data)throw new Error("pipeup: this is not an Pipeup feedback file");try{a=await async function(e,o,r){try{let i=await crypto.subtle.decrypt({name:"AES-GCM",iv:t(o.iv),additionalData:n(r)},e,t(o.data));return(new TextDecoder).decode(i)}catch{throw new Error("pipeup: this feedback could not be opened with this document")}}(r,{iv:i.iv,data:i.data},X(o))}catch{throw new Error("pipeup: this feedback could not be opened with this document's key")}try{l=JSON.parse(a)}catch{throw new Error("pipeup: this is not an Pipeup feedback file")}return Array.isArray(l)?l:[]}var ee=/^[a-z][a-z0-9-]{1,23}\/[a-z][a-z0-9-]{0,31}$/,te=class extends Error{constructor(e,t,n=1){super("pipeup: shown here, but not saved yet"),this.id=e,this.cause=t,this.count=n,this.name="UnsavedChangeError"}},ne=class e{constructor(e,t){this.log=e,this.options=t,this.displayName=t.name.trim()?ie(t.name):""}listeners=new Set;cache=[];comments=new Map;displayName;ke=Promise.resolve();unsaved=[];static async open(t){if("string"!=typeof t.doc||""===t.doc||t.doc.length>64)throw new Error("pipeup: the document id must be 1 to 64 characters");let n=new Y(t.doc),o=await t.store.load(t.doc),r=o.length-(await n.add(o)).length;r&&console.warn(`pipeup: ${r} saved change${1===r?"":"s"} on this page couldn't be read; kept as saved`);let i=new e(n,t);return i.refresh(!1),i}get id(){return this.options.doc}get me(){return this.options.identity.publicKey}get name(){return this.displayName}set name(e){this.displayName=ie(e),this.refresh(!0,[],"")}threads(){return this.cache}ops(){return this.log.all()}onChange(e){return this.listeners.add(e),()=>this.listeners.delete(e)}comment(e,t,n){return this.enqueue(()=>this.write({kind:"create",anchor:e,text:oe(t),...n?.length?{mentions:n}:{}}))}place(e,t,n){return this.enqueue(async()=>{let{thread:o}=this.find(e),r="gone"===n?{...t,lost:!0}:t;await this.write({kind:"place",thread:o,anchor:r,text:n})})}reply(e,t,n){return this.enqueue(()=>this.write({kind:"reply",thread:this.find(e).thread,target:e,text:oe(t),...n?.length?{mentions:n}:{}}))}edit(e,t,n){return this.enqueue(async()=>{let{thread:o}=this.mine(e);await this.write({kind:"edit",thread:o,target:e,text:oe(t),...n?.length?{mentions:n}:{}})})}remove(e){return this.enqueue(async()=>{let{thread:t}=this.mine(e);await this.write({kind:"delete",thread:t,target:e})})}contact(e){let t=e.trim();return T.test(t)?this.enqueue(async()=>{await this.write({kind:"contact",thread:this.me,text:t})}):Promise.reject(new Error("pipeup: that isn't an email address or a GitHub name"))}uncontact(){return this.enqueue(async()=>{await this.write({kind:"uncontact",thread:this.me})})}contacts(){let e=new Map;for(let{body:t}of[...this.log.all()].sort(K))"contact"===t.kind&&t.text?e.set(t.author,t.text):"uncontact"===t.kind&&e.delete(t.author);return e}get portable(){return this.options.identity.privateKey.extractable}async seed(){let e=this.options.identity.privateKey;if(!e.extractable)return null;let{d:n}=await crypto.subtle.exportKey("jwk",e);return n?t(n):null}seen(e){return this.enqueue(async()=>{for(let t of e){let e=this.comments.get(t);e&&!e.comment.seenBy?.includes(this.me)&&await this.write({kind:"seen",thread:e.thread,target:t})}})}react(e,t){return this.enqueue(async()=>{await this.write({kind:"react",thread:this.find(e).thread,target:e,text:re(t)})})}unreact(e,t){return this.enqueue(async()=>{await this.write({kind:"unreact",thread:this.find(e).thread,target:e,text:re(t)})})}resolve(e){return this.enqueue(async()=>{await this.write({kind:"resolve",thread:this.thread(e)})})}reopen(e){return this.enqueue(async()=>{await this.write({kind:"reopen",thread:this.thread(e)})})}paste(e,t,n,o){return this.enqueue(async()=>{let r=this.thread(e),i=y(t),a=this.cache.find(e=>e.id===r).root.id;await this.write({kind:"reply",thread:r,target:a,text:oe(n)},i),o?.trim()&&await this.write({kind:"addressed",thread:r,text:oe(o)},i)})}sign(e,t){if(!ee.test(e))throw new Error('pipeup: a signing purpose looks like "<add-on id>/<name>"');return d(this.options.identity,n(`pipeup:${e}\n${t}`))}flush(){return this.enqueue(()=>this.persist())}exportFile(){return async function(e,t,n){let o=n?{pipeup:1,doc:e,sealed:!0,...await J(n,JSON.stringify(t),X(e))}:{pipeup:1,doc:e,sealed:!1,ops:t};return JSON.stringify(o,null,2)}(this.options.doc,this.log.all(),this.options.key)}async importFile(e){return this.merge(await Q(e,this.options.doc,this.options.key),"file")}merge(e,t){return e.length>5e3?Promise.reject(new RangeError("pipeup: too many changes to merge at once")):this.enqueue(async()=>{let n=await this.log.add([...e]);this.unsaved.push(...n),n.length>0&&this.refresh(!0,n,t);try{await this.persist()}catch(e){throw n.length>0?new te(n[0].body.id,e,n.length):e}return n.length})}enqueue(e){let t=this.ke.then(e);return this.ke=t.catch(()=>{}),t}async write(e,t=this.displayName){let n=await this.log.append(this.options.identity,t,e);this.unsaved.push(n),this.refresh(!0,[n],"local");try{await this.persist()}catch(e){throw new te(n.body.id,e)}return n.body.id}async persist(){if(0===this.unsaved.length)return;let e=[...this.unsaved];await this.options.store.append(this.options.doc,e),this.unsaved=this.unsaved.filter(t=>!e.includes(t))}refresh(e,t=[],n=""){this.cache=this.log.threads(),this.comments.clear();let o=(e,t)=>{e.unnamed&&e.author===this.me&&this.displayName&&(e.name=this.displayName),this.comments.set(e.id,{comment:e,thread:t});for(let n of e.replies)o(n,t)};for(let e of this.cache)o(e.root,e.id);if(e)for(let e of this.listeners)try{e(this.cache,t,n)}catch(e){globalThis.reportError?.(e)}}find(e){let t=this.comments.get(e);if(!t)throw new Error("pipeup: there is no comment with that id");return t}mine(e){let t=this.find(e);if(t.comment.author!==this.me)throw new Error("pipeup: only the writer can change a comment");return t}thread(e){if(!this.cache.some(t=>t.id===e))throw new Error("pipeup: there is no thread with that id");return e}};function oe(e){let t=e.trim();if(!t)throw new Error("pipeup: a comment needs some words");if(t.length>1e4)throw new Error("pipeup: comments are limited to 10000 characters");return t}function re(e){if(!D(e))throw new Error("pipeup: a reaction is one emoji");return e}function ie(e){let t=e.replace(/\s+/g," ").trim();if(!t||t.length>80)throw new Error("pipeup: choose a name of 1 to 80 characters");if(w(t))throw new Error("pipeup: that name is kept for AI replies; choose another");return t}var ae=class{docs=new Map;profile=null;async load(e){return[...this.docs.get(e)?.values()??[]]}async append(e,t){let n=this.docs.get(e);n||this.docs.set(e,n=new Map);for(let e of t)n.set(e.body.id,e)}async loadProfile(){return this.profile}async saveProfile(e){this.profile=e}async saveProfileIfAbsent(e){return this.profile||(this.profile=e),this.profile}},le="";async function se(e,t=""){let n=await e.loadProfile();if(n)return"Reviewer"===n.name?{...n,name:""}:n;let o={identity:await s(),name:t};return e.saveProfileIfAbsent(o)}var de=class e{constructor(e){this.db=e}static open(t="pipeup"){return new Promise((n,o)=>{let r=indexedDB.open(t,1);r.onupgradeneeded=()=>{let e=r.result;e.createObjectStore("ops",{keyPath:["doc","id"]}).createIndex("doc","doc"),e.createObjectStore("meta")},r.onsuccess=()=>{let t=r.result;t.onversionchange=()=>t.close(),n(new e(t))},r.onerror=()=>o(r.error??new Error("pipeup: could not open local storage"))})}close(){this.db.close()}async load(e){return(await this.request("ops","readonly",t=>t.index("doc").getAll(e))).map(e=>e.op)}async append(e,t){if(0===t.length)return;let n=this.db.transaction("ops","readwrite"),o=n.objectStore("ops"),r=ce(n);try{for(let n of t)o.put({doc:e,id:n.body.id,op:n})}catch(e){throw n.abort(),r.catch(()=>{}),e}await r}async loadProfile(){return await this.request("meta","readonly",e=>e.get("profile"))??null}async saveProfile(e){await this.request("meta","readwrite",t=>t.put(e,"profile"))}async saveProfileIfAbsent(e){let t=this.db.transaction("meta","readwrite"),n=t.objectStore("meta"),o=ce(t),r=e,i=n.get("profile");return i.onsuccess=()=>{i.result?r=i.result:n.put(e,"profile")},await o,r}request(e,t,n){return new Promise((o,r)=>{let i=n(this.db.transaction(e,t).objectStore(e));i.onsuccess=()=>o(i.result),i.onerror=()=>r(i.error??new Error("pipeup: local storage request failed"))})}};function ce(e){return new Promise((t,n)=>{e.oncomplete=()=>t(),e.onerror=()=>n(e.error??new Error("pipeup: local storage write failed")),e.onabort=()=>n(e.error??new Error("pipeup: local storage write aborted"))})}var pe=[["h","h1,h2,h3,h4,h5,h6,[role=heading]"],["img","img,svg,picture,canvas,[role=img]"],["button","button,[role=button],input[type=button],input[type=submit],input[type=reset]"],["link","a[href],[role=link]"],["field","input,select,textarea,[contenteditable=true]"],["media","video,audio,iframe,object,embed"],["p","p,li,blockquote,pre,dd,dt,figcaption,td,th,caption,summary"]];function ue(e){for(let[t,n]of pe)if(e.matches(n))return t;return"box"}var he=(e,t)=>r(e).slice(0,t);function fe(e){let t=e.getAttribute("aria-label")||e.getAttribute("alt")||e.getAttribute("title")||(e.labels?.[0]?.textContent??"");if(t.trim())return he(t,$);let n=e.getAttribute("src");if(n)return he(function(e){let t=e.split(/[?#]/)[0]??"";return t.slice(t.lastIndexOf("/")+1)}(n),$);let o=e.getAttribute("href");return o&&!o.startsWith("javascript:")?he(o.split("#")[0]??"",$):""}function me(e,t){let n=[];for(let o of t.querySelectorAll("h1,h2,h3,h4,h5,h6")){if(o===e||o.contains(e)||!(o.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING))break;let t=Number(o.tagName[1]);for(;n.length&&n[n.length-1].T>=t;)n.pop();let r=he(o.textContent??"",120);r&&n.push({T:t,text:r})}return n.slice(-3).map(e=>e.text)}function ge(e,t){let n=t.getBoundingClientRect();if(!(n.height>0))return;let o=(e.getBoundingClientRect().top-n.top)/n.height;return Math.round(1e3*Math.min(1,Math.max(0,o)))/1e3}function ve(e,t){let n=fe(e),o=me(e,t),r=ge(e,t);return{kind:ue(e),...n?{name:n}:{},...o.length?{heads:o}:{},...void 0!==r?{y:r}:{}}}function we(e){let t=` ${e.toLowerCase()} `,n=new Map;for(let e=0;e+3<=t.length;e++){let o=t.slice(e,e+3);n.set(o,(n.get(o)??0)+1)}return n}function ye(e,t){if(!e||!t)return e===t?1:0;let n=we(e),o=we(t),r=0,i=0;for(let e of n.values())i+=e;for(let e of o.values())i+=e;for(let[e,t]of n)r+=Math.min(t,o.get(e)??0);return i?2*r/i:0}var be=new Map([["h","a heading"],["p","a paragraph"],["img","a picture"],["button","a button"],["link","a link"],["field","a field"],["media","a video"],["box","a box"]]),xe=e=>e.kind?`it was ${e.quote?"in ":""}${be.get(e.kind)}${e.heads?.length?` under ${e.heads.join(" \u203a ")}`:""}`:"";function ke(e){let t=(e.ownerDocument??e).createTreeWalker(e,NodeFilter.SHOW_TEXT),n=[],o="";for(let e=t.nextNode();e;e=t.nextNode())n.push({node:e,start:o.length}),o+=e.data;return{text:o,nodes:n}}function Ee(e,t,n){let o=(e.ownerDocument??e).createRange();return o.setStart(e,0),o.setEnd(t,n),o.toString().length}function Se(e,t,n){let o=$e(e,t,!1),r=$e(e,n,!0);if(!o||!r||n<t)return null;let i=o.node.ownerDocument.createRange();return i.setStart(o.node,o.offset),i.setEnd(r.node,r.offset),i}function $e(e,t,n){let o=e.nodes.find(e=>t>=e.start&&t<e.start+e.node.data.length+Number(n));return o&&{node:o.node,offset:t-o.start}}function Le(e){return e.nodeType===Node.ELEMENT_NODE?e:e.parentElement}function Me(e,t){for(let n=Le(e)?.closest("[data-pipeup-id]")??null;n;){if(!t.contains(n))return null;let e=n.getAttribute("data-pipeup-id")??"";if(""!==e&&e.length<=200)return n;n=n.parentElement?.closest("[data-pipeup-id]")??null}return null}function Ce(e,t,n){return e.slice(t,n).replace(/^[\uDC00-\uDFFF]|[\uD800-\uDBFF]$/g,"")}function Ae(e,t){let n=function(e,t){if(e===t)return"";let n=[];for(let o=t;o&&o!==e;o=o.parentElement){let e=1;for(let t=o.previousElementSibling;t;t=t.previousElementSibling)t.tagName===o.tagName&&e++;n.unshift(`${o.tagName.toLowerCase()}:nth-of-type(${e})`)}return":scope > "+n.join(" > ")}(e,t);if(n.length>2e3)throw new Error("pipeup: this element is nested too deeply to comment on \u2014 give a nearby container a data-pipeup-id");return n}function Te(e){if(!B(e))throw new Error("pipeup: could not describe this place on the page");return e}function Pe(e,t){let n=Le(e),o=n?.closest("p,li,h1,h2,h3,h4,h5,h6,td,th,blockquote,pre,figcaption,dt,dd,summary,caption")??null;return o&&t.contains(o)?o:n&&t.contains(n)?n:t}function qe(e,t,n){if(!t.contains(e.commonAncestorContainer))throw new Error("pipeup: the selection is outside the commentable area");let o=Me(e.commonAncestorContainer,t),a=o??t,{text:l}=ke(a),s=Ee(a,e.startContainer,e.startOffset),d=Ee(a,e.endContainer,e.endOffset),c=l.slice(s,d);if(""===c)throw new Error("pipeup: select some text to comment on");if(c.length>E)throw new Error("pipeup: selections are limited to 10000 characters");let p=Ce(l,Math.max(0,s-32),s),u=Ce(l,d,d+32),h=Pe(e.startContainer,t),f=me(h,t);return Te({...o?{id:o.getAttribute("data-pipeup-id")??""}:{},path:"",quote:{exact:c,prefix:p,suffix:u},...n?{view:n}:{},fingerprint:i(h.textContent??""),snapshot:Ce(r(p+c+u),0,200),kind:ue(h),...f.length?{heads:f}:{}})}function Ne(e,t,n,o){let a=Me(e,t);return Te({...a?{id:a.getAttribute("data-pipeup-id")??""}:{},path:Ae(a??t,e),...n?{point:{x:Re(n.x),y:Re(n.y)}}:{},...o?{view:o}:{},fingerprint:i(e.textContent??""),snapshot:Ce(r(e.textContent??""),0,200),...ve(e,t)})}function Re(e){return Number.isFinite(e)?Math.min(1,Math.max(0,e)):0}function De(e,t,n){let o=Array.from({length:t.length+1},(e,t)=>t),r=[...o],i=[t.length];for(let a=1;a<=e.length;a++){r[0]=n?0:a;for(let n=1;n<=t.length;n++){let i=e.charCodeAt(a-1)===t.charCodeAt(n-1)?0:1;r[n]=Math.min(o[n]+1,r[n-1]+1,o[n-1]+i)}i.push(r[t.length]),[o,r]=[r,o]}return i}var ze=(e,t)=>De(e,t,!1).pop(),Oe={state:"orphaned",element:null,range:null};function He(e,t,n={}){if(e.lost)return Oe;let o=e.id?function(e,t){for(let n of e.querySelectorAll("[data-pipeup-id]"))if(n.getAttribute("data-pipeup-id")===t)return n;return null}(t,e.id):t;return e.quote?function(e,t,n,o,r){let a=n??o,l=ke(a),s=function(e,t){if(!t.exact)return-1;let n=-1,o=-1;for(let r=e.indexOf(t.exact);-1!==r;r=e.indexOf(t.exact,r+1)){let i=e.slice(Math.max(0,r-t.prefix.length),r),a=e.slice(r+t.exact.length,r+t.exact.length+t.suffix.length),l=Ye(i,t.prefix)+Ue(a,t.suffix);l>o&&(n=r,o=l)}return n}(l.text,t);if(s>=0){let r=Se(l,s,s+t.exact.length);if(r){let t=Pe(r.startContainer,o);return{state:null!==n&&i(t.textContent??"")===e.fingerprint?"attached":"moved",element:t,range:r}}}if(r){let e=a===o?l:ke(o);if(e.text.length<=5e4&&t.exact.length>=12&&t.exact.length<=300){let n=function(e,t,n){let o=t.length;if(0===o)return null;let r=-1,i=1/0;if(De(e,t,!0).forEach((e,t)=>{t&&e<i&&(i=e,r=t)}),i>n)return null;let a=Math.max(0,r-o),l=1/0;for(let i=Math.max(0,r-o-n);i<=Math.min(r,r-o+n);i++){let n=ze(e.slice(i,r),t);n<l&&(l=n,a=i)}return{start:a,end:r,distance:l}}(e.text,t.exact,Math.floor(t.exact.length/4)),r=n?Se(e,n.start,n.end):null;if(r)return{state:"moved",element:Pe(r.startContainer,o),range:r}}}return Oe}(e,e.quote,o,t,!1!==n.fuzzy):function(e,t,n,o){if(!t)return Oe;let r=function(e,t){if(!e.path)return t;if(!e.path.startsWith(":scope > "))return null;try{return t.querySelector(e.path)}catch{return null}}(e,t);if(r&&i(r.textContent??"")===e.fingerprint)return{state:"attached",element:r,range:null};if(!e.path)return r?{state:"moved",element:r,range:null}:Oe;let a=e.kind??(r?ue(r):null);if(!a||!o)return Oe;let{best:l,sure:s}=function(e,t,n,o,r){let i=null,a=-1,l=-1;for(let s of function(e,t){let n=pe.find(([e])=>e===t)?.[1]??"*",o=[];for(let r of e.querySelectorAll(n))if(ue(r)===t&&(o.push(r),o.length>=2e3))break;return o}(n,t)){let t=je(e,s,o,r);t>a?[i,a,l]=[s,t,a]:t>l&&(l=t)}return{best:i,sure:!!i&&a>=Ie&&a-l>=Be}}(e,a,t,n,r),d=s?l:l&&l===r?r:null;return d?d===r?{state:"moved",element:r,range:null}:{state:"moved",element:d,range:null,alike:!0}:Oe}(e,o,t,!1!==n.fuzzy)}var Ie=.6,Be=.15,Fe=.15;function je(e,t,n,o){let r=t.textContent??"",a=[[.45,i(r)===e.fingerprint?1:ye(We(r),e.snapshot)**2]];void 0!==e.name&&a.push([.25,Ke(fe(t),e.name)?1:0]),e.heads?.length&&a.push([.2,Ve(e.heads,me(t,n))]);let l=void 0===e.y?void 0:ge(t,n);void 0!==e.y&&void 0!==l?a.push([.1,Math.max(0,1-Math.abs(l-e.y)/Fe)]):void 0===e.y&&a.push([.1,t===o?1:0]);let s=0,d=0;for(let[e,t]of a)s+=e*t,d+=e;return d?s/d:0}var We=e=>e.replace(/\s+/g," ").trim().slice(0,200),Ke=(e,t)=>e.trim().toLowerCase()===t.trim().toLowerCase();function Ve(e,t){return e.length===t.length&&e.every((e,n)=>Ke(e,t[n]))?1:t.length&&Ke(e[e.length-1],t[t.length-1])?.6:0}function Ue(e,t){let n=0;for(;n<e.length&&n<t.length&&e[n]===t[n];)n++;return n}function Ye(e,t){let n=0;for(;n<e.length&&n<t.length&&e[e.length-1-n]===t[t.length-1-n];)n++;return n}var _e={A:"Link",BUTTON:"Button",P:"Paragraph",LI:"List item",UL:"List",OL:"List",IMG:"Image",TABLE:"Table",TD:"Cell",TH:"Cell",FIGURE:"Figure",SVG:"Graphic",CANVAS:"Graphic",LABEL:"Label",INPUT:"Field",SELECT:"Dropdown",TEXTAREA:"Field",SUMMARY:"Disclosure",BLOCKQUOTE:"Quote",SECTION:"Section",ARTICLE:"Article",H1:"Heading",H2:"Heading",H3:"Heading",H4:"Heading",H5:"Heading",H6:"Heading",switch:"Switch",tab:"Tab",checkbox:"Checkbox",radio:"Radio button",button:"Button",submit:"Button",link:"Link"};function Ge(e){let t=e.getAttribute("role")??("INPUT"===e.tagName?e.type:""),n=e.getAttribute("data-pipeup-label")||Object.hasOwn(_e,t)&&_e[t]||_e[e.tagName.toUpperCase()];if(n)return n;if(Je(e))return"Block";let o=e.getBoundingClientRect(),r=o.width/o.height;return r>1.4||r<.7?"Bar":"Shape"}var Ze=e=>e.innerText||e.textContent||"";function Je(e){let t=e,n=t.labels?.[0];return ot(r(e.getAttribute("aria-label")??e.getAttribute("alt")??(n&&Ze(n))??("SELECT"===e.tagName?t.selectedOptions[0]?.text:null)??(t.placeholder||Ze(e))),40)}function Xe(e){let t=e.getAttribute("data-pipeup-label");if(t)return t;let n=e.getAttribute("data-pipeup-ask");if(n)return`Ask "${n}"`;let o=Je(e);return o?`${Ge(e)} \xb7 ${o}`:Ge(e)}function Qe(e,t,n){let o=e.id??null,i=e.quote?.exact??null,a=e.point?`${Math.round(100*e.point.x)}% across, ${Math.round(100*e.point.y)}% down the element`:null,l=t.element;if("orphaned"===t.state||!l)return{where:`No longer on the page (${[xe(e),`it read: "${e.snapshot}"`].filter(Boolean).join(", ")})`,element:null,id:o,quote:i,pin:a};let s=[],d=e.view?.slide;if(d){let e=l.closest("[data-pipeup-slide],.reveal .slides section")?.querySelector(nt)?.textContent;s.push(`Slide ${d}`+(e?` "${ot(r(e))}"`:""))}else{let t=tt(e.view);t&&s.push(t);let o=function(e,t){let n=e=>!1!==e.checkVisibility?.(),o=n(e),i=e=>r(e.textContent??"");for(let r=e;r&&r!==t;r=r.parentElement)for(let e=r.previousElementSibling;e;e=e.previousElementSibling){let t=e.matches(nt)?e:[...e.querySelectorAll(nt)].pop();if(t&&i(e)===i(t)&&(!o||n(t)))return t}return null}(l,n);o&&s.push(`Section "${ot(r(o.textContent??""))}"`)}let c=Xe(l);return s.push(c),t.alike&&s.push(`Moved, not yet confirmed (${[xe(e),`it read: "${e.snapshot}"`].filter(Boolean).join(", ")})`),{where:s.join(" \u203a "),element:c,id:o,within:!!o&&l.getAttribute("data-pipeup-id")!==o,quote:i,pin:a}}var et="pipeup-edition";function tt(e){return e?e.label||Object.entries(e).filter(([e,t])=>t&&"slide"!==e&&e!==et).map(([,e])=>e).join(" \xb7 "):""}var nt="h1,h2,h3";function ot(e,t=60){return e.length>t?e.slice(0,t-1)+"\u2026":e}function rt(e,t){let n=Math.max(0,Math.round((t-e)/1e3));if(n<60)return"just now";let o=Math.round(n/60);if(o<60)return`${o}m ago`;let r=Math.round(o/60);return r<48?`${r}h ago`:`${Math.round(r/24)}d ago`}function it(e,t,n,o){return"ai"===t?dt(e,"## ",o,n):ct(e)}function at(e,t,n){let o=n.all?e:e.filter(e=>!e.thread.resolved);if("text"===t)return o.map(ct).join("\n");let r=e.filter(e=>e.thread.resolved).length,i=e.length-r,a=function(e){let t=[...new Set(e.flatMap(({thread:e})=>[e.root,...e.root.replies].map(e=>st(g(e)))))],n=t.length>3?[...t.slice(0,2),t.length-2+" others"]:t;return n.length>1?`${n.slice(0,-1).join(", ")} and ${n.at(-1)}`:n[0]??""}(o),l=n.exportedAt.toUTCString(),s=[`# Comments on ${st(n.title)}`,"",`${i||"No"} open comment${1===i?"":"s"}${n.all&&r?` and ${r} resolved`:""}${a?` from ${a}`:""}, copied ${l.slice(5,16).replace(/^0/,"")}, ${l.slice(17,22)} UTC.`+(n.all||!r?"":` ${r} resolved comment${1===r?" is":"s are"} left out.`),"",`Page: ${st(n.url)}`,"",""].join("\n"),d=n.exportedAt.getTime();return s+o.map((e,t)=>dt(e,`## ${t+1}. `,d)).join("\n")+(o.length?"\n---\n\nFor an AI assistant: work through the open comments in order and say what you changed, or why you didn't. Each one's last line gives the thread to answer and the element's data-pipeup-id in the page's HTML. Answer in the thread with Pipeup (its pipeup-apply skill says how) and mark it addressed; never resolve it, the author does.\n":"")}function lt(e){return e.reactions.map(e=>`${e.emoji} ${e.by.length} (${e.by.map(e=>st(g(e))).join(", ")})`).join(" \xb7 ")}function st(e){return e.replace(/\s+/g," ").trim()}function dt(e,t,n,o){let{thread:r,location:i}=e,a=[t+st(i.where),""];o&&a.push(`Page: ${st(o)}`,""),i.quote&&a.push(`On the words "${st(i.quote)}".`,""),i.pin&&a.push(`Pinned ${st(i.pin)}.`,""),a.push(`**${st(g(r.root))}** (${rt(r.root.at,n)}): ${pt(r.root," ")}`),r.root.reactions.length&&a.push(`Reactions: ${lt(r.root)}`);for(let e of r.root.replies)a.push(`- **${st(g(e))}** (${rt(e.at,n)}): ${pt(e," ")}`),e.reactions.length&&a.push(` - Reactions: ${lt(e)}`);r.addressed&&!r.resolved&&a.push("",`**${st(g(r.addressed))}** marked it addressed (${rt(r.addressed.at,n)}): ${st(r.addressed.text)}`);let l=i.id?` \xb7 ${i.within?"in":"on"} \`data-pipeup-id="${st(i.id.replace(/`/g,""))}"\``:"";return a.push("",`${r.resolved?"Resolved":r.addressed?"Open, addressed":"Open"} \xb7 thread \`${r.id}\`${l}`),a.join("\n")+"\n"}function ct(e){let{thread:t,location:n}=e,o=[st(n.where)+(n.quote?`, on the text "${st(n.quote)}"`:""),`${st(g(t.root))}: ${pt(t.root," ")}`];t.root.reactions.length&&o.push(` Reactions: ${lt(t.root)}`);for(let e of t.root.replies)o.push(` ${st(g(e))}: ${pt(e," ")}`),e.reactions.length&&o.push(` Reactions: ${lt(e)}`);return o.join("\n")+"\n"}function pt(e,t){return e.deleted?"(deleted)":e.text.replace(/\r\n|\r|\n/g,"\n"+t)+(e.edited?" (edited)":"")}function ut(e,t){return{markdown:at(e,"ai",t),threads:e.filter(e=>t.all||!e.thread.resolved).map(({thread:e,location:t})=>{let n={id:e.id,state:e.resolved?"resolved":e.addressed?"addressed":"open",where:t.where,comments:[e.root,...e.root.replies].map(e=>({id:e.id,by:g(e),agent:w(e.name),at:new Date(e.at).toISOString(),text:e.deleted?"":e.text,...e.reactions.length?{reactions:e.reactions.map(e=>({emoji:e.emoji,by:e.by.map(g)}))}:{}}))};return t.id&&(n.element=t.id),t.quote&&(n.quote=t.quote),t.pin&&(n.pin=t.pin),e.addressed&&!e.resolved&&(n.addressed={note:e.addressed.text,by:g(e.addressed)}),n})}}var ht="1.0.0",ft="2026-11-10",mt=new Map,gt=new Map,vt=new Map,wt=new Map,yt={},bt=e=>{let t=`${mt.get(e.id)??""}|${gt.get(e.id)??""}`;for(let n of[e.root,...e.root.replies]){let e=wt.get(n.id);e&&(t+=`|${n.id}:${e.text}:${e.tip??""}`)}return t};function xt(e,t={},...n){let o=document.createElement(e);for(let[e,n]of Object.entries(t))void 0===n||!1===n||("class"===e?o.className=String(n):o.setAttribute(e,!0===n?"":n));for(let e of n)null!=e&&!1!==e&&o.append(e);return o}function kt(e,t){let n=e.getRootNode().activeElement;if(t&&n instanceof HTMLElement&&e.contains(n)){let e=window.getSelection(),t=e?.rangeCount?e.getRangeAt(0):null;n.blur(),t&&!e.rangeCount&&e.addRange(t)}e.inert=t}function Et(e,t,n=null){let o=e.getRootNode().activeElement,r=!1;for(let o=t.length;o--;n=t[o])t[o].nextSibling!==n&&(r=!!e.insertBefore(t[o],n));return r&&o&&t.some(e=>e.contains(o))&&o.focus({preventScroll:!0}),r}var St=()=>{let e=window.getSelection();return e&&!e.isCollapsed&&e.toString().trim()?e:null};function $t(e,t){return e.length>t?e.slice(0,t-1)+"\u2026":e}function Lt(e,t,n=4){e.style.left=t.left-n+"px",e.style.top=t.top-n+"px",e.style.width=`${t.width+2*n}px`,e.style.height=`${t.height+2*n}px`}var Mt=/\bhttps?:\/\/[^\s<>"'`]+/gi,Ct=/[\u202A-\u202E\u2066-\u2069]/;function At(e){let t=0,n=0;for(let o of e)"("===o?t++:")"===o&&n++;let o=e.length;for(;o>0;){let r=e[o-1];if(")"===r&&n>t)n--;else if(!".,;:!?'\"]}".includes(r))break;o--}return e.slice(0,o)}function Tt(e){let t=[],n=0;for(let o of e.matchAll(Mt)){if(o[0].length>2048||Ct.test(o[0]))continue;let r,i=At(o[0]),a=o.index??0;try{let e=new URL(i);if("http:"!==e.protocol&&"https:"!==e.protocol)continue;r=e.href}catch{continue}a>n&&t.push(e.slice(n,a));let l=xt("a",{href:r,target:"_blank",rel:"noopener noreferrer"},i);l.addEventListener("click",e=>e.stopPropagation()),t.push(l),n=a+i.length}return n<e.length&&t.push(e.slice(n)),t}var Pt="http://www.w3.org/2000/svg",qt={comment:["M20.5 11.5a8 8 0 0 1-11.7 7.1L4 19.8l1.2-4.4A8 8 0 1 1 20.5 11.5z","M12.3 8.2v6.6M9 11.5h6.6"],copy:["M10 8h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-8a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2z","M16 8V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2"],resolve:["M5 12.5l4.5 4.5L19 7.5"],reopen:["M3 12a9 9 0 1 0 3-6.7","M3 4v5h5"],lines:["M4 7h16M4 12h10M4 17h7"],list:["M3 6.5a1.5 1.5 0 1 0 3 0a1.5 1.5 0 1 0-3 0M3 12a1.5 1.5 0 1 0 3 0a1.5 1.5 0 1 0-3 0M3 17.5a1.5 1.5 0 1 0 3 0a1.5 1.5 0 1 0-3 0M9 6.5h11M9 12h11M9 17.5h7"],expand:["M5.5 10h7a1.5 1.5 0 0 1 1.5 1.5v7a1.5 1.5 0 0 1-1.5 1.5h-7A1.5 1.5 0 0 1 4 18.5v-7A1.5 1.5 0 0 1 5.5 10z","M14 10l6-6M15 4h5v5"],pin:["M12 21c-4-4-7-7.5-7-11a7 7 0 0 1 14 0c0 3.5-3 7-7 11z","M12 7.5a2.5 2.5 0 1 0 0 5a2.5 2.5 0 0 0 0-5z"],at:["M9.1 12a2.9 2.9 0 1 0 5.8 0a2.9 2.9 0 1 0-5.8 0","M14.9 12v1.1a1.8 1.8 0 0 0 3.6 0V12a6.5 6.5 0 1 0-3.97 5.98"],chev:["M9 6l6 6-6 6"],shrink:["M7 4h10a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H7a3 3 0 0 1-3-3V7a3 3 0 0 1 3-3z","M16 8l-7 7M9 10v5h5"],bubble:["M20.5 11.5a8 8 0 0 1-11.7 7.1L4 19.8l1.2-4.4A8 8 0 1 1 20.5 11.5z"],wide:["M23.2 11.2a10.8 8.2 0 0 1-14.85 7.6L2.6 21l.45-5.7A10.8 8.2 0 1 1 23.2 11.2z"],close:["M6 6l12 12M18 6L6 18"],browser:["M4 7a3 3 0 0 1 3-3h10a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H7a3 3 0 0 1-3-3z","M4 9.5h16M7.5 6.8h.01"],smile:["M12 3a9 9 0 1 0 0 18a9 9 0 0 0 0-18z","M8.6 14.2c1.9 2.1 4.9 2.1 6.8 0","M9.6 9.8a.6.6 0 1 1-1.2 0a.6.6 0 1 1 1.2 0M15.6 9.8a.6.6 0 1 1-1.2 0a.6.6 0 1 1 1.2 0"],edit:["M4 20h4L19 9l-4-4L4 16z"],hide:["M2.5 12S6 5.5 12 5.5 21.5 12 21.5 12 18 18.5 12 18.5 2.5 12 2.5 12z","M12 9.5a2.5 2.5 0 1 0 0 5a2.5 2.5 0 0 0 0-5z","M4 4l16 16"],more:["M5.5 12h.01M12 12h.01M18.5 12h.01"],look:["M12 3a9 9 0 1 0 0 18a9 9 0 0 0 0-18z","M12 3v18"]};function Nt(e,t=15,n){let o=Rt(qt[e],t);return n&&o.setAttribute("stroke-width",String(n)),o}function Rt(e,t){let n=document.createElementNS(Pt,"svg"),o={width:String(t),height:String(t),viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"};for(let[e,t]of Object.entries(o))n.setAttribute(e,t);for(let t of e){let e=document.createElementNS(Pt,"path");e.setAttribute("d",t),n.append(e)}return n}var Dt=(e,t,n)=>`M${e} ${t}a${n} ${n} 0 1 0 ${2*n} 0a${n} ${n} 0 1 0 -${2*n} 0`,zt={Otter:"M4 13.2C4 9.2 7.6 6.5 12 6.5s8 2.7 8 6.7-3.6 6.3-8 6.3-8-2.3-8-6.3zM5.6 9.6a1.8 1.8 0 1 1 2.7-2.3M18.4 9.6a1.8 1.8 0 1 0-2.7-2.3M9.2 11.6h.01M14.8 11.6h.01M11 14h2l-1 1zM9.8 15.8l-3.2.4M9.9 17l-2.7 1.1M14.2 15.8l3.2.4M14.1 17l2.7 1.1",Fox:"M3.5 4l5 3.5h7l5-3.5-1.5 8.5L12 20l-7-7.5zM9 12h.01M15 12h.01M12 17h.01",Owl:`M5 4.5l3 2.5h8l3-2.5V14a7 7 0 0 1-14 0z${Dt(7.4,11.5,1.9)}${Dt(12.8,11.5,1.9)}M11.3 14.6l.7 1 .7-1`,Bear:`${Dt(5,13.5,7)}M8.9 7.22A2.8 2.8 0 1 0 5.89 10.09M18.11 10.09A2.8 2.8 0 1 0 15.1 7.22M9.4 12.6h.01M14.6 12.6h.01M10.3 16.4c0-1 .8-1.6 1.7-1.6s1.7.6 1.7 1.6-.8 1.6-1.7 1.6-1.7-.6-1.7-1.6z`,Rabbit:`${Dt(6.5,15.5,5.5)}M9.6 10.5C8.2 6.5 8.4 2.5 9.8 2.5s2.4 3.5 1.6 7.5M14.4 10.5c1.4-4 1.2-8-.2-8s-2.4 3.5-1.6 7.5M10 15h.01M14 15h.01M11.3 17.3l.7.5.7-.5`};function Ot(e){let t=/[\p{L}\p{N}]/u.exec(e);if(!t)return"";let n=t[0].toUpperCase();return 1===[...n].length?n:t[0]}var Ht=(e,t)=>Ot(t)||m(e);function It(e,t){return w(t)?xt("span",{class:"av ai","data-pipeup-ai":"","aria-hidden":"true"},"AI"):xt("span",{class:`av c${f(e)}`,"aria-hidden":"true","data-animal":m(e)},Ot(t)||Rt([zt[c[h(e)]]],24))}function Bt(e,t){setTimeout(()=>{e.remove(),t?.()},320)}function Ft(e){return requestAnimationFrame(()=>{e.offsetWidth,e.classList.add("in")}),e}var jt=new Map;function Wt(e){jt.clear();for(let[t,n]of Object.entries(e??{}))void 0!==n&&jt.set(t,n)}function Kt(e){return jt.has(e)?jt.get(e):typeof document>"u"?null:document.querySelector(`script[${e}]`)?.getAttribute(e)??document.documentElement.getAttribute(e)}var Vt=e=>null!==Kt(e),Ut=/^[A-Za-z0-9_-]{43}$/,Yt=/^(?:host|gh):[A-Za-z0-9._@-]{1,64}$/,_t=[],Gt=new Set;function Zt(e){_t=e.filter(e=>e&&"string"==typeof e.name&&e.name.trim()&&Yt.test(e.ref)).slice(0,500).map(e=>({ref:e.ref,name:e.name.trim().slice(0,80),...e.agent?{agent:!0}:{}}));for(let e of[...Gt])e()}var Jt=()=>(Kt("data-pipeup-agents")??"").split(/[\s,]+/).filter(e=>Ut.test(e));function Xt(e,t){let n=new Map,o=e=>{e.ref!==t&&!n.has(e.ref)&&n.set(e.ref,e)},r=e=>o({ref:e.author,name:g(e),...w(e.name)?{agent:!0}:{}});for(let t of e)for(let e of[t.root,...t.root.replies])if(!e.deleted){r(e);for(let t of e.reactions)for(let e of t.by)r({...e})}for(let e of Jt())o({ref:e,name:"AI agent",agent:!0});for(let e of _t)o(e);return[...n.values()].sort((e,t)=>e.name.localeCompare(t.name))}var Qt=(e,t)=>!!e.mentions?.some(e=>t.includes(e.ref)),en=[],tn=e=>[e,...en],nn=null,on=null,rn=new WeakMap,an=new WeakSet;function ln(e,t){nn=e,on=t}function sn(e){if(!nn)return;let t=nn(e,t=>{an.add(t),e.dispatchEvent(t)});t&&(rn.set(t,e),e.before(t))}function dn(e){return e instanceof HTMLTextAreaElement||e instanceof HTMLInputElement?e:(e&&rn.get(e))??null}function cn(e){let t=dn(e);return t instanceof HTMLTextAreaElement?t:null}function pn(e,t,n){window.addEventListener(e,t,n);let o=on,r=e=>{an.has(e)&&t(e)};return o?.addEventListener(e,r,n),()=>{window.removeEventListener(e,t,n),o?.removeEventListener(e,r,n)}}var un=null,hn=e=>{un=e},fn="pu-source";function mn(e){let t=xt("textarea",{class:"input",dir:"auto",rows:"1",autocomplete:"off","aria-label":e.name??e.label,placeholder:e.placeholder??""}),n=xt("button",{class:"send",type:"button",inert:!0},e.label),o=xt("button",{class:"cnl",type:"button"},"Cancel"),r=xt("span",{class:"tools"});r.hidden=!0;let i=xt("div",{class:"line"},t,r),a=xt("div",{class:"row"},i,xt("div",{class:"bts"},e.lead??null,o,n));sn(t);let l=e.kind??"comment",s=!1,d=new Set,c=()=>{for(let e of[...d])e()},p=()=>{let e=""!==t.value.trim();n.classList.toggle("show",e),a.classList.toggle("has",e),n.inert=!e,t.style.height="auto",t.style.height=`${Math.max(27,t.scrollHeight)}px`},u=()=>{let e=-1,n=0,o=(o,r)=>{e<0&&(e=t.selectionStart,n=0);let i=t.value.slice(0,e),a=o&&i&&!/\s$/.test(i)&&!/^\s/.test(o)?" ":"";t.setRangeText(a+o,e,e+n,"end"),n=a.length+o.length,r&&(e=-1),p()};return{update:e=>o(e,!1),commit:e=>o(e,!0),cancel:()=>{e>=0&&n&&t.setRangeText("",e,e+n,"end"),e=-1,n=0,p()}}},h=new Map,f=()=>{let n=(un?.tools()??[]).filter(e=>!1!==e.available?.());for(let[e,t]of h)n.some(t=>t.id===e)||(t.remove(),h.delete(e));for(let o of n){if(h.has(o.id))continue;let n=xt("button",{class:"ib tool",type:"button","aria-label":o.label,title:o.label,"aria-pressed":"false"},Rt(o.icon,15));n.addEventListener("mousedown",e=>e.preventDefault()),n.addEventListener("click",r=>{r.stopPropagation();try{o.press({kind:l,thread:e.thread?.()??null,text:()=>t.value,focus:()=>t.focus({preventScroll:!0}),connected:()=>a.isConnected,setPressed:e=>n.setAttribute("aria-pressed",String(e)),dictate:u,onEnd:e=>(d.add(e),()=>d.delete(e))})}catch(e){globalThis.reportError?.(e)}}),h.set(o.id,n),r.append(n)}r.hidden=0===h.size};f(),a.addEventListener(fn,f);let m=[],g=xt("ul",{class:"mnl",role:"listbox","aria-label":"People"}),v=xt("span",{class:"mn-sr","aria-live":"polite"}),w=`mn-${Math.random().toString(36).slice(2,8)}`;g.id=w;let y=[],b=0,x=null;e.people&&(t.setAttribute("aria-autocomplete","list"),t.setAttribute("aria-haspopup","listbox"),t.setAttribute("aria-controls",w),a.append(g,v));let k=()=>{y=[],g.classList.remove("show"),t.removeAttribute("aria-activedescendant"),window.setTimeout(()=>!y.length&&g.replaceChildren(),220)},E=()=>{for(let[e,n]of[...g.children].entries()){let o=e===b;n.setAttribute("aria-selected",String(o)),n.classList.toggle("on",o),o&&t.setAttribute("aria-activedescendant",n.id)}},S=e=>{let n=y[e];if(!n||!x)return;let o=t.selectionStart;t.setRangeText(`@${n.name} `,x.start,o,"end"),m.push({label:n.name,ref:n.ref}),k(),p()},$=async()=>{let o=t.value.trim();if(o&&!s){s=!0;try{await e.z(o,m.length?function(e,t){let n=[];for(let o of t){let t=`@${o.label}`,r=0;for(;;){let i=e.indexOf(t,r);if(i<0)break;let a=i+t.length;if((0===i||/\s/.test(e[i-1]))&&(a===e.length||!/[\p{L}\p{N}_]/u.test(e[a]))&&!n.some(e=>i<e.end&&a>e.start)){n.push({start:i,end:a,ref:o.ref});break}r=i+1}}return n.sort((e,t)=>e.start-t.start).slice(0,20)}(o,m):[]),n.matches(":focus")&&t.focus(),t.value="",m.length=0,k(),p(),c()}catch{}finally{s=!1}}};i.addEventListener("mousedown",e=>{e.target===t||r.contains(e.target)||(e.preventDefault(),t.focus({preventScroll:!0}),t.setSelectionRange(t.value.length,t.value.length))}),t.addEventListener("input",()=>{p(),e.people&&(()=>{if(x=t.selectionStart===t.selectionEnd?function(e){let t=/(^|\s)@([^\s@]*(?:\s[^\s@]*)?)$/.exec(e);return t?{start:t.index+t[1].length,query:t[2]}:null}(t.value.slice(0,t.selectionStart)):null,y=x&&e.people?function(e,t){let n=t.trim().toLowerCase(),o=e.filter(e=>e.name.toLowerCase().startsWith(n)),r=n?e.filter(e=>!o.includes(e)&&e.name.toLowerCase().includes(n)):[];return[...o,...r].slice(0,8)}(e.people(),x.query):[],!y.length)return k();b=Math.min(b,y.length-1),g.replaceChildren(...y.map((e,t)=>{let n=xt("li",{role:"option",id:`${w}-${t}`,class:e.agent?"agent":""},xt("span",{},e.name),e.agent?xt("small",{},"AI agent"):null);return n.addEventListener("mousedown",e=>{e.preventDefault(),S(t)}),n})),g.classList.add("show"),v.textContent=`${y.length} ${1===y.length?"person":"people"}`,E()})()}),t.addEventListener("blur",()=>y.length&&k()),t.addEventListener("mousedown",e=>e.defaultPrevented&&t.focus({preventScroll:!0}));for(let e of["keyup","keypress"])t.addEventListener(e,e=>e.stopPropagation());t.addEventListener("keydown",e=>{if(e.stopPropagation(),y.length&&!e.isComposing){if("ArrowDown"===e.key||"ArrowUp"===e.key)return e.preventDefault(),b=(b+("ArrowDown"===e.key?1:y.length-1))%y.length,E();if("Enter"===e.key||"Tab"===e.key)return e.preventDefault(),S(b);if("Escape"===e.key)return e.preventDefault(),k()}"Enter"!==e.key||e.shiftKey||e.isComposing?"Escape"===e.key&&!e.isComposing&&(e.preventDefault(),L()):(e.preventDefault(),$())});let L=()=>{let n=t.value.trim()?t.value:"";t.value="",p(),(!n||"reply"!==l)&&t.blur(),c(),e.U?.(n)};for(let e of[n,o])e.addEventListener("mousedown",e=>e.preventDefault());return n.addEventListener("click",e=>{e.stopPropagation(),$()}),o.addEventListener("click",e=>{e.stopPropagation(),L()}),e.value&&(t.value=e.value,queueMicrotask(p)),{element:a,input:t,focus:()=>t.focus({preventScroll:!0})}}var gn=1,vn=["sync","menu","notify","note","composer","panel","styles","status","overlay","here","sign","listnote","commentmark","reactions","identity","dialog","paste","place","post"],wn=/^[a-z][a-z0-9-]{1,23}$/,yn=["text","muted","faint","line","surface","soft","hover","shadow","ease"],bn=["pointerdown","pointerup","keydown","click"],xn=new Set(["local","file","page","user","pipeup","presence","sync"]),kn="data-pipeup-placed",En=`[data-pipeup-ask][${kn}]>:not(pipeup-place){display:none}`,Sn=class{constructor(e,t,n){this.ctx=e,this.shadow=t,this.after=n,hn({tools:()=>this.Q,note:()=>[...this.le.values()].at(-1)??null,reporting:()=>this.J.size>0});for(let e of bn)window.addEventListener(e,this.Me,!0)}ae=0;j=[];le=new Map;writing=new Map;marked=new Map;paint=0;J=new Map;listNotes=new Map;picker=null;pickerOwner="";Q=[];ce=new Set;W=new Set;ee=new Set;te=new Map;$=new Map;D=new Map;remote={n:0,who:new Set};last=0;timer=0;Se="";R=new Map;placeRoots=new WeakMap;de=null;Le=!1;Te=[];Me=e=>{e.isTrusted&&(this.Te=e.composedPath())};subscribe(e){return this.ee.add(e),()=>{this.ee.delete(e)}}changed(e){e&&this.ae++;for(let t of[...this.ee])t(e);for(let e of this.ctx.e.querySelectorAll(".row, .draft"))e.dispatchEvent(new Event(fn))}B(e,t){let n=this.D.get(e)??this.D.set(e,new Set).get(e),o=()=>{n.delete(o)&&t()};return n.add(o),o}Ae(){return[...this.J.values()].map(e=>e.text).join(" \xb7 ")}qe(e,t){return this.j.push(t),this.changed(!0),{update:()=>this.changed(!1),remove:this.B(e,()=>{this.j.splice(this.j.indexOf(t),1),this.changed(!0)})}}setThread(e,t,n){let o=this.writing.get(e)??this.writing.set(e,new Set).get(e);null===n?(mt.delete(t),o.delete(t)):(mt.set(t,n),o.add(t)),this.repaint()}setMark(e,t,n,o){let r=this.marked.get(e)??this.marked.set(e,new Set).get(e);if(null===n){if(vt.delete(t),!gt.delete(t))return;r.delete(t)}else{if(gt.get(t)===n&&!!vt.get(t)==!!o)return;gt.set(t,n),o?vt.set(t,o):vt.delete(t),r.add(t)}this.repaint()}setCommentMark(e,t,n){let o=wt.get(t);if(null===n){if(o?.by!==e)return;wt.delete(t)}else{let r=String(n.text),i=void 0===n.tip?void 0:String(n.tip);if(o?.by===e&&o.text===r&&o.tip===i)return;wt.set(t,{text:r,tip:i,by:e})}this.repaint()}repaint(){this.paint||(this.paint=window.requestAnimationFrame(()=>{this.paint=0,this.ctx.m()}))}pe(e,t,n){n?e.set(t,n):e.delete(t),this.changed(!1)}setPicker(e,t){t?(this.picker=t,this.pickerOwner=e):this.pickerOwner===e&&(this.picker=null,this.pickerOwner=""),this.changed(!1)}Ke(e,t){return this.Q.push(t),this.changed(!1),this.B(e,()=>{this.Q.splice(this.Q.indexOf(t),1),this.changed(!1)})}closed(){return this.ctx.state.hidden&&!this.ctx.state.s}Ve(e,t){this.closed()?this.$.set(e,t):this.ctx.ue(t)}flush(){if(this.closed()||0===this.$.size)return;let e=[...this.$.values()].at(-1);this.$.clear(),this.ctx.ue(e)}_e(){return!!cn(this.shadow.activeElement)||[...this.ctx.e.querySelectorAll("textarea")].some(e=>""!==e.value.trim())}ze(e){this.ctx.state.hidden||this.ctx.M(e)}Ue(e,t){if("local"!==t&&""!==t){for(let{body:t}of e)t.author===this.ctx.doc.me||"create"!==t.kind&&"reply"!==t.kind||(this.remote.n++,this.remote.who.add(t.name||m(t.author)));this.Ce()}}Ce(e=Math.max(0,this.last+1e4-Date.now())){this.timer||!this.remote.n||(this.timer=window.setTimeout(()=>{if(this.timer=0,this.ctx.state.hidden||this._e())return this.Ce(1e3);let{n:e,who:t}=this.remote;this.remote={n:0,who:new Set},this.last=Date.now(),this.ctx.M(`${e} new comment${1===e?"":"s"} from ${1===t.size?[...t][0]:`${t.size} people`}`)},e))}je(e){let t=this.te.get(e);return t||(t=xt("div",{class:"ov","aria-hidden":"true","data-addon":e}),this.ctx.e.insertBefore(t,this.after.nextSibling),this.te.set(e,t)),t}We(e,t){let n=this.ctx.host.ownerDocument.defaultView?.CSSStyleSheet,o=n&&"replaceSync"in n.prototype&&"adoptedStyleSheets"in this.shadow?new n:null;o&&(o.replaceSync(t),this.shadow.adoptedStyleSheets=[...this.shadow.adoptedStyleSheets,o]);let r=o??this.shadow.appendChild(xt("style",{},t));return this.B(e,()=>o?this.shadow.adoptedStyleSheets=this.shadow.adoptedStyleSheets.filter(e=>e!==o):r.remove())}Pe(e,t,n){return t.add(n),this.B(e,()=>t.delete(n))}Ge(e,t){return this.Pe(e,this.ce,t)}Ye(e,t){let n=this.Pe(e,this.W,t);return this.call(this.W,t,this.Oe()),n}Oe(){let{state:e}=this.ctx,t=this.shadow.activeElement;return{shown:!e.hidden,commentMode:e.l,allOpen:e.u,dark:this.ctx.e.classList.contains("dark"),view:this.ctx.f.view(),writing:cn(t)?cn(t).closest("[data-thread]")?.dataset.thread??"":null}}Xe(){let e=new Set;for(let t of this.R.values())for(let n of t.keys())e.add(n.getAttribute("data-pipeup-id")??"");return e}place(e,t){let n=this.R.get(e)??this.R.set(e,new Map).get(e),o=n.get(t);if(o)return this.placeRoots.get(o);if(!(t instanceof Element)||!t.matches("[data-pipeup-ask],[data-pipeup-inline]")||!this.ctx.root.contains(t)||t.closest(`[${kn}]`))throw new Error("pipeup: not an element marked for add-ons");let r=t.ownerDocument;this.de??=this.Ze(r,En);let i=r.createElement("pipeup-place"),a=i.attachShadow({mode:this.shadow.mode});this.placeRoots.set(i,a);let l=":host{all:initial;display:block;font:14px/1.5 var(--pu-font,system-ui,sans-serif);color:var(--pu-text)}",s=r.defaultView?.CSSStyleSheet;if(s&&"adoptedStyleSheets"in a){let e=new s;e.replaceSync(l),a.adoptedStyleSheets=[e]}else a.append(xt("style",{},l));return this.$e(i),t.setAttribute(kn,""),t.append(i),n.set(t,i),this.B(e,()=>{i.remove(),t.removeAttribute(kn),n.delete(t),[...this.R.values()].some(e=>e.size)||(this.de?.(),this.de=null),this.repaint()}),this.repaint(),a}$e(e){let t=getComputedStyle(this.ctx.e);for(let n of yn)e.style.setProperty(`--pu-${n}`,t.getPropertyValue(`--pu-${n}`))}Ze(e,t){let n=e.defaultView?.CSSStyleSheet;if(n&&"adoptedStyleSheets"in e){let o=new n;return o.replaceSync(t),e.adoptedStyleSheets=[...e.adoptedStyleSheets,o],()=>{e.adoptedStyleSheets=e.adoptedStyleSheets.filter(e=>e!==o)}}let o=e.head.appendChild(xt("style",{},t));return()=>o.remove()}Je(e){let t=[...this.R.get(e)?.values()??[]];return!1!==navigator.userActivation?.isActive&&this.Te.some(n=>t.includes(n)||n instanceof HTMLElement&&n.dataset.addon===e)}async post(e,t){if(!this.Je(e))throw new Error("pipeup: not sent by the reviewer here");let{doc:n,root:o,f:i}=this.ctx;if(t.remove)return await n.remove(t.remove),t.remove;let a=String(t.text??"");if(t.edit)return await n.edit(t.edit,a),t.edit;if(t.replyTo)return n.reply(t.replyTo,a);let l=t.anchor;if(!l||!this.R.get(e)?.has(l)||!l.getAttribute("data-pipeup-id"))throw new Error("pipeup: not a marked block with a data-pipeup-id");let s=Ne(l,o,void 0,i.view(l));return t.excerpt&&(s.snapshot=r(t.excerpt).slice(0,200)),n.comment(s,a)}N(){let e=this.ctx.e.classList.contains("dark");if(e!==this.Le){this.Le=e;for(let e of this.R.values())for(let t of e.values())this.$e(t)}for(let e of[...this.ce])this.call(this.ce,e);if(0===this.W.size)return;let t=this.Oe(),n=JSON.stringify(t);if(n!==this.Se){this.Se=n;for(let e of[...this.W])this.call(this.W,e,t)}}call(e,t,...n){try{t(...n)}catch(n){e.delete(t),globalThis.reportError?.(n)}}Qe(e,t,n){let o=this.ctx.e,r=this.shadow.activeElement,i=xt("button",{class:"ib",type:"button","aria-label":"Close"},Rt(["M6 6l12 12M18 6L6 18"],15)),a=xt("div",{class:"xp",role:"dialog","aria-label":n.label,"data-addon":e},xt("div",{class:"hd"},xt("span",{},n.label),i),xt("div",{class:"xb"},t)),l=[...o.children].filter(e=>e instanceof HTMLElement&&!e.inert);for(let e of l)e.inert=!0;o.append(a),a.offsetWidth,a.classList.add("show");let s=e=>{"Escape"===e.key&&(e.stopPropagation(),e.preventDefault(),d())},d=this.B(e,()=>{window.removeEventListener("keydown",s,!0);for(let e of l)e.inert=!1;a.classList.remove("show"),a.inert=!0,window.setTimeout(()=>a.remove(),300),r?.focus?.({preventScroll:!0});try{n.onClose?.()}catch(e){globalThis.reportError?.(e)}});return i.addEventListener("click",d),window.addEventListener("keydown",s,!0),(a.querySelector("button, input, textarea, select, a[href]")??a).focus?.({preventScroll:!0}),{close:d}}dialog(e,t,n){this.ctx.e.querySelector(".dlg")?.remove();let o=xt("div",{class:"dlg",role:"dialog","aria-label":n,"data-addon":e},t),r=()=>{},i=()=>{o.classList.remove("show"),o.inert=!0,window.setTimeout(r,260)};return o.addEventListener("keydown",e=>{e.stopPropagation(),"Escape"===e.key&&(e.preventDefault(),i())}),this.ctx.e.append(o),o.offsetWidth,o.classList.add("show"),o.querySelector("textarea, button.primary, button")?.focus({preventScroll:!0}),r=this.B(e,()=>o.remove()),{close:i}}clear(e){for(let t of[...this.D.get(e)??[]])t();this.D.delete(e),this.te.get(e)?.remove(),this.te.delete(e);for(let t of[this.le,this.J,this.listNotes,this.$])t.delete(e);this.setPicker(e,null);for(let t of this.writing.get(e)??[])mt.delete(t);this.writing.delete(e);for(let t of this.marked.get(e)??[])gt.delete(t),vt.delete(t);this.marked.delete(e),this.R.delete(e);for(let[t,n]of wt)n.by===e&&wt.delete(t);this.repaint(),this.changed(!0)}destroy(){for(let e of bn)window.removeEventListener(e,this.Me,!0);window.clearTimeout(this.timer),hn(null),this.ee.clear()}},$n=new Map,Ln=null,Mn=(()=>{let e=globalThis.Pipeup;return e?.VERSION?e:null})();function Cn(){return Mn?Mn.addons():[...$n.values()].map(e=>({...e.info}))}function An(e){if(Mn)return Mn.use(e);let t=e=>console.warn(`pipeup: ${e}`),n=e;if(!n||"object"!=typeof n||"string"!=typeof n.id||!wn.test(n.id)||xn.has(n.id)||"function"!=typeof n.setup||"string"!=typeof n.network?.says)return t("an add-on needs an id of 2 to 24 lowercase letters, digits and dashes (not a reserved one), a setup function and a network statement");if($n.has(n.id))return t(`the add-on "${n.id}" is already registered; the second is ignored`);let o={id:n.id,version:String(n.version??""),network:n.network,state:"waiting"},r=(n.needs??[]).find(e=>!vn.includes(e));!function(e){let t=Kt("data-pipeup-addons");return null===t||t.toLowerCase().split(/[\s,]+/).includes(e)}(n.id)?(o.state="off",o.reason="this page doesn't allow it",t(`the add-on "${n.id}" is not in this page's data-pipeup-addons list, so it is off`)):1!==n.api?(o.state="off",o.reason=`needs add-on API ${String(n.api)}; this Pipeup has 1`):r&&(o.state="off",o.reason=`this Pipeup has no ${r} slot`);let i={addon:e,info:o};$n.set(n.id,i),Ln?.i&&"waiting"===o.state&&Tn(i,Ln)}async function Tn(e,t){let n,o,{addon:r,info:i}=e,a=new AbortController,l=new Set,{surface:s,doc:d}=t,c=()=>!a.signal.aborted,p=Object.assign(()=>{},{update(){},remove(){},close(){}}),u=e=>(...t)=>c()?e(...t):p,h={id:d.id,me:d.me,get name(){return d.name},threads:()=>d.threads(),ops:()=>d.ops(),contacts:()=>d.contacts(),onChange:e=>{let t=d.onChange(e);return l.add(t),()=>{t(),l.delete(t)}}},f=r.id,m={api:1,version:t.version,document:h,root:t.root,ephemeral:t.ephemeral,...t.keep?{keep:{get:e=>t.keep.get(`${f}:${e}`),set:(e,n)=>t.keep.set(`${f}:${e}`,n)}}:{},signal:a.signal,has:e=>vn.includes(e),off:e=>{o=String(e)},merge:e=>c()?d.merge(e,f):Promise.resolve(0),addMenuItem:u(e=>s.qe(f,e)),notify:u(e=>s.Ve(f,e)),announce:u(e=>s.ze(e)),setComposerNote:u(e=>s.pe(s.le,f,e)),setThreadNote:u((e,t)=>s.setThread(f,e,t)),setThreadMark:u((e,t,n)=>s.setMark(f,e,t,n)),setCommentMark:u((e,t)=>s.setCommentMark(f,e,t)),addComposerTool:u(e=>s.Ke(f,e)),openPanel:u((e,t)=>s.Qe(f,e,t)),addStyles:u(e=>s.We(f,e)),setStatus:u(e=>s.pe(s.J,f,e)),setListNote:u(e=>s.pe(s.listNotes,f,e)),setReactionPicker:u(e=>s.setPicker(f,e)),overlay:()=>s.je(f),onFrame:u(e=>s.Ge(f,e)),where:e=>s.ctx.f.view(e),isHere:e=>s.ctx.f.S(e),go:e=>s.ctx.f.ne(e),onUi:u(e=>s.Ye(f,e)),avatar:(e,t)=>{let n=It(e,t);return n.classList.add("in"),n},sign:(e,t)=>d.sign(`${f}/${e}`,t),identity:{portable:d.portable,seed:()=>d.seed(),use:async e=>{if("private"!==e.type||"Ed25519"!==e.algorithm.name||!e.extractable)throw new Error("pipeup: an identity is an extractable Ed25519 private key");let{x:n}=await crypto.subtle.exportKey("jwk",e);await t.onIdentity({publicKey:n,privateKey:e})},share:e=>d.contact(e).then(()=>!0,()=>!1),unshare:()=>d.uncontact()},openDialog:u((e,t)=>s.dialog(f,e,t)),paste:(e,t,n,o)=>c()?d.paste(e,t,n,o):Promise.reject(new Error("pipeup: this add-on is off")),place:e=>{if(!c())throw new Error("pipeup: this add-on is off");return s.place(f,e)},post:e=>c()?s.post(f,e):Promise.reject(new Error("pipeup: this add-on is off"))},g=()=>{if(c()){a.abort();for(let e of[...l])e();try{n?.()}catch(e){globalThis.reportError?.(e)}s.clear(f),"on"===i.state&&(i.state="waiting")}};e.stop=g;try{if(n=await r.setup(m),!c())return void n?.();if(void 0!==o)return g(),i.state="off",i.reason=o,void console.warn(`pipeup: the add-on "${f}" is off: ${o}`);i.state="on",delete i.reason}catch(e){i.state="failed",i.reason=function(e){return e instanceof Error?e.message:String(e)}(e),g(),i.state="failed",globalThis.reportError?.(e)}}var Pn=typeof navigator<"u"&&/Mac|iP(hone|ad|od)/.test(navigator.platform)?"\u21e7\u2325C":"Shift+Alt+C",qn=" ",Nn="Shift+Alt+C",Rn="Comments stay in this browser until you send them.";var Dn=new WeakMap;function zn(e,t){let n=Dn.get(t)??function(e){let t=xt("button",{class:"me",type:"button",tabindex:"-1","aria-hidden":"true"});t.addEventListener("mousedown",e=>e.preventDefault());let n=xt("span",{class:"here",role:"img","aria-label":Rn,title:Rn},Nt("browser",14)),o=mn({label:"Comment",placeholder:"Comment or add others with @",kind:"comment",z:e.z,U:e.U,people:e.people,lead:n}),r=xt("div",{class:"note"}),i=()=>{let e=un?.note()??null;r.textContent=e??"",r.hidden=!e;let t=!!e||(un?.reporting()??!1);n.classList.toggle("off",t),n.setAttribute("aria-hidden",String(t))};i();let a=xt("div",{class:"say"}),l=xt("input",{class:"input",type:"text",maxlength:"80","aria-label":"Your name"}),s=xt("div",{class:"nf"},l);sn(l);let d=xt("div",{class:"you"},a,s),c="",p=!1,u=!1,h=()=>{let n=e.name(),o=n?"change":"add your name";if(t.title=n?"Change your name":"Add your name",!t.lastChild||c!==n){let o=It(e.me,n),r=t.lastChild;r?(Ft(o),Bt(r)):o.classList.add("in"),t.append(o),c=n}let r=xt("button",{type:"button"},o);r.addEventListener("click",g),a.replaceChildren(xt("span",{class:"nm"},n||`You're ${m(e.me)}`)," \xb7 ",r)},f=e=>{u=e,d.classList.toggle("naming",e),kt(a,e),kt(s,!e)};function g(t){t.stopPropagation(),l.value=e.name(),f(!0),l.focus({preventScroll:!0}),l.select()}let v=(e=!0)=>{f(!1),e&&o.focus()},w=t=>{let n=l.value.trim();if(!n||n===e.name())return v(t);p||(p=!0,e.rename(n).finally(()=>{p=!1,h(),v(t)}))};t.addEventListener("click",g),l.addEventListener("keydown",e=>{e.stopPropagation(),"Escape"!==e.key||e.isComposing?"Enter"===e.key&&(e.preventDefault(),w(!0)):(e.preventDefault(),v())}),l.addEventListener("blur",()=>{u&&!p&&w(!1)}),h(),f(!1);let y=xt("div",{class:"ctx"},e.label),b=xt("div",{class:"draft"},xt("div",{class:"hdr"},t,d),y,r,o.element);return b.addEventListener(fn,i),{element:b,fe:()=>{let{selectionStart:e,selectionEnd:t}=o.input;return()=>{o.focus(),o.input.setSelectionRange(e,t)}},oe:e=>{y.hidden=e},he:e=>{y.textContent=e},focus:()=>o.focus(),et:()=>""===o.input.value.trim(),fill:e=>{o.input.value=e,o.input.dispatchEvent(new Event("input")),o.focus(),o.input.setSelectionRange(e.length,e.length)}}}({label:t.label,me:e.doc.me,name:()=>e.s.name(),rename:t=>e.s.rename(t),z:(t,n)=>e.tt(t,n),people:()=>e.people(),U:t=>e.ge(t)});return Dn.set(t,n),e.F(n),n}var On="a,button,input,select,textarea,label,summary,[role=button],[contenteditable]";function Hn(e,t){if("orphaned"===t.state||!t.element||e.quote)return null;let n=t.element.getBoundingClientRect();if(!n.width&&!n.height)return null;if(e.point)return{x:n.left+e.point.x*n.width,y:n.top+e.point.y*n.height};if(t.element.matches(On))return{x:n.right+4,y:n.top+14};let o=t.element.ownerDocument.createRange();o.selectNodeContents(t.element);let r=o.getBoundingClientRect();return{x:r.width?Math.min(n.right-8,r.right+6):n.right-8,y:(r.height?r.top:n.top)+8}}function In(e){return e.range?[...e.range.getClientRects()]:[]}function Bn(e,t){let n=In(t)[0];if(n)return n.top;if("orphaned"===t.state||!t.element)return null;let o=t.element.getBoundingClientRect();return e.point?o.top+e.point.y*o.height:o.top}function Fn(e,t){let n=In(t).at(-1);if(n)return{x:n.left,y:n.bottom,below:!0,p:n};let o=Hn(e,t);if(!o)return null;let r=e.point?new DOMRect(o.x-12,o.y-12,24,24):t.element.getBoundingClientRect();return{...o,below:!1,p:r}}function jn(e,t,n){for(let o of n)if(e>=o.left&&e<=o.right&&t>=o.top&&t<=o.bottom)return!0;return!1}var Wn=()=>window.innerWidth>=900?400:300,Kn=()=>window.innerWidth<=480,Vn=()=>!0===window.matchMedia?.("(pointer: coarse)").matches,Un=0;function Yn(){let e=window.visualViewport,t=e?Math.max(0,e.offsetTop-Un):0;return{top:t,bottom:e?Math.min(window.innerHeight,t+e.height):window.innerHeight}}var _n=(e,t,n,o)=>n.keep&&e+t>n.keep.left?Math.min(n.height-o,n.keep.top-8):n.height-o;function Gn(e,t,n,o=12,r=44){let i=e.top-r>=8,a=e.top+e.height+8+(i?0:r),l=e.top-8-(i?r:0)-t.height,s=Math.max(o,Math.min(e.left,n.width-t.width-o)),d=e=>a+t.height<=_n(e,t.width,n,o),c=n.keep?n.keep.left-8-t.width:-1;!d(s)&&c>=o&&d(c)&&(s=Math.min(s,c));let p=_n(s,t.width,n,o),u=(n.top??0)+o,h=a+t.height<=p||l<u;return{above:!h,left:s,top:Math.max(u,Math.min(h?a:l,p-t.height))}}function Zn(e,t,n){let o=e.top-t.height-10,r=o<8?e.top+e.height+10:o;return r+t.height>n.height-8&&(r=Math.max(8,o)),{left:Math.max(8,Math.min(e.left+e.width/2-t.width/2,n.width-t.width-8)),top:r}}function Jn(e,t){let n=e.resolved.get(t.id);return n?.range?.startContainer??n?.element??null}var Xn=e=>(t,n)=>{let o=Jn(e,t),r=Jn(e,n),i=e=>e.anchor.point??{x:0,y:-1};return o!==r?!r||o&&4&o.compareDocumentPosition(r)?-1:1:i(t).y-i(n).y||i(t).x-i(n).x},Qn=["\u{1f44d}","\u2764\ufe0f","\u{1f602}","\u{1f389}","\u{1f62e}","\u{1f64f}"],eo={"\u{1f44d}":"Thumbs up","\u2764\ufe0f":"Heart","\u{1f602}":"Laughing","\u{1f389}":"Party popper","\u{1f62e}":"Surprised","\u{1f64f}":"Thanks"};var to={confirmed:"confirmed the place",moved:"moved this comment",gone:"marked the place as gone"},no=e=>`${e} ${1===e?"reply":"replies"}`,oo=e=>e.root.replies.filter(e=>!e.deleted);function ro(e,t,n){let o={...n},r="card"===o.q,i=e.id,a=xt("div",{class:"rbox always"},xt("div",{},mn({label:"Reply",placeholder:"Reply or add others with @",kind:"reply",thread:()=>i,people:()=>t.people(),z:(e,n)=>t.reply(i,e,n),U:e=>e?t.drop(i,e):t.close()}).element)),l=xt("div",{}),s=xt("span",{class:"note"},"This thread was resolved. Your words are kept until you send or clear them.");s.hidden=!0,a.prepend(s);let d=xt("div",{}),c=null,p=null,u=null,h="",f=null,m="",y=xt("div",{},d,r?null:xt("div",{class:"more"},l)),b=new Set,x="",k="",E="",S=0,$=null,L=new Set,M=e,C=new Map,A=new Map,T=new Map,P=new Map,q=new Map,N=(e,t,n)=>{let o=xt("button",{class:"ib",type:"button","aria-label":t,title:t},Nt(e,18,"more"===e?2.6:void 0));return o.addEventListener("click",e=>{e.stopPropagation(),n()}),o},R=e=>y.querySelector(e)?.focus({preventScroll:!0}),D=!1,z=()=>{!D&&(x||b.size)&&!y.contains(y.getRootNode().activeElement)&&(x=E="",b.clear(),O(M))};function O(e,n={}){let D=y.getRootNode().activeElement,z=D&&y.contains(D)?D.dataset.k:void 0;(function(e,n){Object.assign(o,n);let D=k;k=x,i=e.id,M=e;let z=(o.now??Date.now)(),H=oo(e),I=H.length,B=e=>{let n=t=>w(e.name)?function(e){let t=[],n=e.split("\n").filter(e=>{let n=/^\[(\d{1,2})\]:?\s+(\S+)(?:\s+([^|]{1,40}?))?(?:\s*\|\s*(.{1,300}))?$/.exec(e.trim()),o=n?.[2]?function(e){return/^slide:\d{1,4}$/.test(e)||/^quote:\S{1,300}$/.test(e)?e:function(e){if(e.length>2048||Ct.test(e))return null;try{let t=new URL(e);return"http:"===t.protocol||"https:"===t.protocol?t.href:null}catch{return null}}(e)}(n[2]):null;return n?.[1]&&o&&t.push({n:n[1],to:o,label:n[3]?.trim()??"",says:n[4]?.trim()??""}),!(n?.[1]&&o)}).join("\n").replace(/\s*\[\d{1,2}\]/g,"").trim();if(!t.length)return Tt(e);let o=t.slice(0,4).map(e=>{let t=e.to.startsWith("slide:"),n=e.label||(t?`Slide ${e.to.slice(6)}`:`[${e.n}]`),o=[t?xt("i",{class:"sl"}):null,xt("span",{},t||""===e.label?n:`[${e.n}] ${n}`),e.says?xt("span",{class:"rc",role:"tooltip"},e.says):null];if(/^https?:/.test(e.to)){let t=xt("a",{class:"ref",href:e.to,target:"_blank",rel:"noopener noreferrer",title:e.says?void 0:e.to},...o);return t.addEventListener("click",e=>e.stopPropagation()),t}let r=xt("button",{class:"ref",type:"button",title:e.says?void 0:t?n:`Show where: ${n}`},...o);return r.addEventListener("click",t=>{t.stopPropagation(),yt.go?.(e.to)}),r});return[...Tt(n),xt("div",{class:"refs"},...o)]}(t):Tt(t);if(!e.mentions?.length)return n(e.text);let o=[],r=0;for(let i of e.mentions)i.start<r||(o.push(...n(e.text.slice(r,i.start))),o.push(xt("span",{class:Qt(e,[t.me])&&i.ref===t.me?"mn me":"mn"},e.text.slice(i.start,i.end))),r=i.end);return[...o,...n(e.text.slice(r))]},F=n=>function(e,t){if(e.deleted||(t.bare||!e.reactions.length)&&!t.quick)return null;let n=n=>e.reactions.find(e=>e.emoji===n)?.by.some(e=>e.author===t.me)??!1,o=(t.bare?[]:e.reactions).map(o=>{let r=n(o.emoji),i=o.by.length,a=[...r?["You"]:[],...o.by.filter(e=>e.author!==t.me).map(e=>g(e))],l=`${e.id}|${o.emoji}`,s=xt("button",{class:`ref rx${r?" mine":""}${t.seen.has(l)?"":" new"}`,type:"button","aria-pressed":String(r),"aria-label":`${t.picker?.name(o.emoji)??eo[o.emoji]??"Reaction"}, ${i} ${1===i?"person":"people"}${r?", including you":""}`,"data-k":`x${e.id}${o.emoji}`},xt("span",{},o.emoji),xt("span",{class:"n"},String(i)),xt("span",{class:"rc"},a.join(", ")));t.seen.add(l),s.disabled=t.resolved;let d=0,c=!1;s.addEventListener("pointerdown",e=>{c=!1,"touch"===e.pointerType&&(d=window.setTimeout(()=>{c=!0,s.classList.add("held"),window.addEventListener("pointerdown",()=>s.classList.remove("held"),{capture:!0,once:!0})},450))});for(let e of["pointerup","pointercancel"])s.addEventListener(e,()=>window.clearTimeout(d));return s.addEventListener("contextmenu",e=>e.preventDefault()),s.addEventListener("click",e=>{e.stopPropagation(),c?c=!1:t.react(o.emoji,!r)}),s}),r=t.quick&&!t.resolved?xt("div",{class:"rxq"+(t.seen.has(`${e.id}|quick`)?"":" new"),role:"group","aria-label":"React","data-q":e.id},...Qn.map(o=>{let r=xt("button",{class:"rxo",type:"button","aria-label":eo[o],"aria-pressed":String(n(o)),"data-k":`q${e.id}${o}`},o);return r.addEventListener("click",e=>{e.stopPropagation(),t.react(o,!n(o))}),r}),t.picker?function(e,t){let n=xt("button",{class:"rxo",type:"button","aria-label":"More reactions","aria-haspopup":"dialog"},"\u2026");return n.addEventListener("click",o=>{o.stopPropagation(),function(e,t,n){let o=e.closest(".layer");if(!o)return;o.querySelector(".rxp")?.remove();let r=e.getBoundingClientRect(),i=Math.max(8,Math.min(r.left,window.innerWidth-320-8)),a=r.bottom+6+340<=window.innerHeight-8?r.bottom+6:Math.max(8,r.top-340-6),l=xt("div",{class:"rxp",role:"dialog","aria-label":"Choose a reaction"});l.style.cssText=`left:${i}px;top:${a}px`;let s=!1,d={},c=e=>{e.composedPath().includes(l)||p()},p=()=>{s||(s=!0,window.removeEventListener("pointerdown",c,!0),d.off?.(),l.classList.remove("show"),l.inert=!0,window.setTimeout(()=>l.remove(),260),e.focus({preventScroll:!0}))};l.addEventListener("keydown",e=>{"Escape"===e.key&&(e.stopPropagation(),e.preventDefault(),p())}),d.off=t.fill(l,e=>{p(),n(e)}),window.addEventListener("pointerdown",c,!0),o.append(l),l.offsetWidth,l.classList.add("show"),l.querySelector("input,button")?.focus({preventScroll:!0})}(n,e,t)}),n}(t.picker,e=>t.react(e,!n(e))):null):null;return r?t.seen.add(`${e.id}|quick`):t.seen.delete(`${e.id}|quick`),xt("div",{class:"refs rxs"},...o,r)}(n,{me:t.me,picker:t.picker(),resolved:e.resolved,quick:b.has(n.id),bare:r,seen:L,react:(e,o)=>{b.delete(n.id),t.react(n.id,e,o),O(M),R(`[data-r="${n.id}"]`)}}),j=e.resolved?"Resolved"+(I?` \xb7 ${no(I)}`:""):e.addressed?"Addressed"+(I?` \xb7 ${no(I)}`:""):I?no(I):"",W=(n,o)=>{let r=[];if(o&&r.push(["Copy thread",()=>(t.copy(e.id),!1)]),(e=>e.author===t.me&&!e.deleted)(n)&&r.push(["Edit",()=>(function(e){let n=()=>{$=null,O(M),R(`[data-c="${e.id}"]`)},o=mn({label:"Save",name:"Edit comment",kind:"comment",value:e.text,people:()=>t.people(),z:async(o,r)=>{await t.edit(e.id,o,r),n()},U:n});$={id:e.id,o:xt("div",{class:"edit"},o.element)},queueMicrotask(()=>o.focus())}(n),!1)],[E===n.id?"Delete for everyone":"Delete",()=>E!==n.id?(E=n.id,S=performance.now(),!0):performance.now()-S<500||(E="",t.remove(n.id),!1)]),!r.length)return null;let i=xt("div",{class:D===n.id?"pm":"pm in",role:"menu","data-m":n.id},...r.map(([e,t],o)=>{let r=xt("button",{type:"button",role:"menuitem",class:"Delete for everyone"===e?"dl":"","data-k":`p${n.id}${o}`},e);return r.addEventListener("click",e=>{e.stopPropagation(),t()||(x=""),O(M);let r=y.querySelectorAll(".pm button")[o];r?r.focus():y.contains(y.getRootNode().activeElement)||y.querySelector(`[data-c="${n.id}"]`)?.focus()}),r}));return i.addEventListener("keydown",e=>{let t=[...i.querySelectorAll("button")],o=t.indexOf(e.target),r={ArrowDown:o+1,ArrowUp:o-1,Home:0,End:t.length-1}[e.key];if(void 0!==r)t[(r+t.length)%t.length]?.focus();else{if("Escape"!==e.key)return;x=E="",O(M),R(`[data-c="${n.id}"]`)}e.preventDefault(),e.stopPropagation()}),i},K=(n,o)=>{let i=W(n,o),a=i?N("more","More",()=>{x=x===n.id?"":n.id,E="",O(M),y.querySelector(x?".pm button":`[data-c="${n.id}"]`)?.focus()}):null;return a&&(a.setAttribute("aria-expanded",String(x===n.id)),a.dataset.c=n.id,a.dataset.k=`m${n.id}`),xt("div",{class:"hdr"},...(e=>{let t=Ht(e.author,e.name),n=C.get(e.id),o=n?.o;if((!o||n.key!==t)&&(o=Ft(It(e.author,e.name)),n)){let t=n.o;q.set(e.id,t),Bt(t,()=>q.get(e.id)===t&&q.delete(e.id))}o.title=g(e),A.set(e.id,{key:t,o});let r=q.get(e.id);return r?[r,o]:[o]})(n),xt("span",{class:"who"},g(n)),t.pasted?.(n)?xt("span",{class:"ago pst"},t.pasted(n)):null,xt("span",{class:"ago",title:new Date(n.at).toLocaleString()},rt(n.at,z)),r?U(n,!0):null,xt("span",{class:"acts"},(t=>{if(e.resolved||t.deleted)return null;let n=N("smile","React",()=>{let e=!b.delete(t.id);e&&b.add(t.id),O(M),R(e?`[data-q="${t.id}"] button`:`[data-r="${t.id}"]`)});return n.dataset.r=t.id,n.dataset.k=`r${t.id}`,n})(n),o?e.resolved?N("reopen","Reopen",()=>{t.reopen(e.id)}):N("resolve","Resolve",()=>{t.resolve(e.id)}):null,a),x===n.id?i:null)},V=e=>$?.id===e.id?$.o:(e=>xt("div",{class:e.deleted?"tx del":"tx",dir:"auto"},...e.deleted?["Deleted"]:[...B(e),e.edited?" (edited)":""]))(e),U=(e,t=!1)=>{let n=wt.get(e.id),o=T.get(e.id),r=n??o;if(!r)return null;n&&P.set(e.id,n);let i="cm"+(n?o?"":" new":" out");return t?xt("span",{class:i,role:"img","aria-label":r.text,title:r.tip??r.text},Nt("browser",13)):xt("div",{class:i,title:r.tip},Nt("browser",13),r.text)},Y=o.quote?`\u201c${$t(o.quote,80)}\u201d`:"",_=o.note&&!o.moved?o.note:o.lost?`${o.place||["No longer on the page",xe(e.anchor)].filter(Boolean).join(" \xb7 ")} \u2014 it read \u201c${$t(o.lost,120)}\u201d`:o.moved?`Moved \xb7 ${Y||`it read \u201c${$t(e.anchor.snapshot,80)}\u201d`}`:Y,G=r?o.rest:"column"===o.q&&j;A=new Map,P=new Map;let Z=xt("div",{class:"root"},K(e.root,!0),_?xt("div",{class:"ctx"},_):null,V(e.root),"column"===o.q&&xt("div",{class:"mr","aria-hidden":"true"},xt("span",{},"more")),r?null:U(e.root),F(e.root),G?xt("div",{class:"rest"},G):null);if(d.replaceWith(Z),d=Z,y.className=e.resolved?"thread resolved":"thread",y.setAttribute("data-thread",e.id),r)return C=A,void(T=P);c?.remove();let J=mt.get(e.id);c=I||void 0!==J?xt("div",{class:"rps"},...H.map(e=>xt("div",{class:"it"},K(e,!1),V(e),U(e),F(e))),void 0===J?null:xt("div",{class:"it ghost","data-pipeup-writing":"row"},xt("div",{class:"hdr"},It("",v),xt("span",{class:"who"},v),xt("span",{class:"ago"},"writing now")),xt("div",{class:"tx",dir:"auto","data-pipeup-writing":"words"},J))):null,c&&l.prepend(c);let X=e.addressed&&!e.resolved?e.addressed:null,Q=X?`${X.text}|${X.author}|${X.at}`:"";if(Q!==h&&(u?.remove(),u=null,h=Q,X)){let n=(e,t)=>{let n=xt("button",{type:"button"},e);return n.addEventListener("click",e=>{e.stopPropagation(),t()}),n};u=xt("div",{class:"adr"},xt("small",{},["Addressed",g(X),t.pasted?.(X),rt(X.at,z)].filter(Boolean).join(" \xb7 ")),X.text,xt("div",{class:"go"},n("Resolve",()=>{t.resolve(e.id)}),n("Still not right",()=>{t.notRight(e.id)})))}u&&l.insertBefore(u,p??(a.parentNode===l?a:null));let ee=!r&&!!t.place&&!!o.alike,te=!(r||!t.place||!o.lost||o.place),ne=e.placed&&!ee?`${g(e.placed)} ${to[e.placed.how]}`:"",oe=`${ee}|${te}|${ne}`;if(oe!==m){f?.remove(),m=oe;let n=(n,o)=>{let r=xt("button",{type:"button"},n);return r.addEventListener("click",n=>{n.stopPropagation(),t.place?.(e.id,o)}),r};f=ee||te||ne?xt("div",{class:"adr"},ne&&xt("small",{},ne),ee&&"Is this the right place?",(ee||te)&&xt("div",{class:"go"},...ee?[n("Yes","confirmed"),n("Not here","pick"),n("It's gone","gone")]:[n("Show where it belongs","pick")])):null}f&&l.insertBefore(f,u??p??(a.parentNode===l?a:null)),p?.remove();let re=gt.get(e.id),ie=vt.get(e.id);if(p=void 0===re?null:xt("div",{class:"seen"},xt("i"),re),p&&ie){let e=xt("button",{type:"button"},"Check again");e.addEventListener("click",e=>{e.stopPropagation(),ie()}),p.append(e)}p&&l.insertBefore(p,a.parentNode===l?a:null),C=A,T=P;let ae=""!==a.querySelector("textarea").value.trim();s.hidden=!(e.resolved&&ae),e.resolved&&!ae?a.remove():a.parentNode!==l&&l.append(a)})(e,n),z&&!y.contains(y.getRootNode().activeElement)&&y.querySelector(`[data-k="${CSS.escape(z)}"]`)?.focus({preventScroll:!0})}return y.addEventListener("pointerdown",()=>{D=!0;let e=()=>{removeEventListener("pointerup",e,!0),removeEventListener("pointercancel",e,!0),setTimeout(()=>{D=!1,z()})};addEventListener("pointerup",e,!0),addEventListener("pointercancel",e,!0)}),y.addEventListener("focusout",e=>{y.contains(e.relatedTarget)||setTimeout(z)}),O(e),{element:y,update:O}}function io(e,t=!1){let n=e.ownerDocument.documentElement,o=Kt("data-pipeup-layout");if("bubbles"===o||e.querySelector("[data-pipeup-slide]"))return null;let r=e.querySelector("article, main, [role=main]")??("column"===o?e:null);if(!r)return null;if(Vt("data-pipeup-reserve")){let e,i=n.clientWidth,a=getComputedStyle(r).maxWidth;return e=a.endsWith("px")?parseFloat(a):a.endsWith("%")?parseFloat(a)/100*i:r.getBoundingClientRect().width,"column"!==o&&i<e+320-(t?24:0)?null:{x:i-320+24,width:272}}let i=r.getBoundingClientRect().right;if(window.innerWidth-i<300&&"column"!==o)return null;let a=i+32;return{x:a,width:Math.max(220,Math.min(300,window.innerWidth-a-16))}}function ao(e,t){if(e.E(t))return!1;let n=e.resolved.get(t.id);return!n||"orphaned"===n.state&&!e.$.has(t.id)}var lo=(e,t)=>!e.E(t)&&"moved"===e.resolved.get(t.id)?.state,so=(e,t)=>lo(e,t)&&!!e.resolved.get(t.id)?.alike;function co(e){let t=xt("div",{class:"col"});e.e.append(t);let n=new Map,o=null,r=new ResizeObserver(()=>c()),i=!0===window.matchMedia?.("(prefers-reduced-motion: reduce)").matches,a=t=>ao(e,t);function l(t){let n=e.resolved.get(t.id),o=n?Bn(t.anchor,n):null;return null===o?Number.POSITIVE_INFINITY:o+window.scrollY-4}let s=new WeakMap;function d(e,t=0){let n=`translateY(${Math.round(t)}px)`;if(i&&e.style.transform){if(e.style.transform!==n||s.has(e)){if(!s.has(e)){e.classList.add("hop");let t=()=>{+getComputedStyle(e).opacity>.01?requestAnimationFrame(t):(e.style.transform=s.get(e),s.delete(e),e.classList.remove("hop"))};window.setTimeout(t,200)}s.set(e,n)}}else e.style.transform=n}function c(){let r=[],i=[];for(let{o:e}of n.values()){let t=e.querySelector(".root>.tx");t&&(t.style.setProperty("--full",`${t.scrollHeight}px`),e.classList.toggle("long",t.scrollHeight>88))}for(let[t,o]of n){let n=l(o.thread);if(Number.isFinite(n))o.placed=n;else if(e.$.has(t)){if(null===o.placed){o.o.classList.add("wait");continue}n=o.placed}Number.isFinite(n)?r.push({id:t,C:n,height:o.o.offsetHeight}):i.push({id:t,height:o.o.offsetHeight})}let a=e.state.t,s=a?Bn(a.anchor,a.resolved):null;o&&null!==s&&r.push({id:"draft",C:s+window.scrollY-4,height:o.o.offsetHeight});let c=o?"draft":e.state.i,p=r.find(e=>e.id===c),u=t.getBoundingClientRect().right>window.innerWidth-44?44:0;p&&(u||o)&&(p.C=Math.max(window.scrollY+8,Math.min(p.C,window.scrollY+window.innerHeight-u-10-p.height)));let h=function(e,t,n=10){let o=[...e].sort((e,t)=>e.C-t.C),r=new Array(o.length).fill(0),i=o.findIndex(e=>e.id===t),a=e=>o[e];if(i<0)o.forEach((e,t)=>{r[t]=0===t?e.C:Math.max(e.C,(r[t-1]??0)+a(t-1).height+n)});else{r[i]=a(i).C;for(let e=i+1;e<o.length;e++)r[e]=Math.max(a(e).C,(r[e-1]??0)+a(e-1).height+n);for(let e=i-1;e>=0;e--)r[e]=Math.min(a(e).C,(r[e+1]??0)-a(e).height-n)}return new Map(o.map((e,t)=>[e.id,r[t]??0]))}(r,c),f=Math.max(0,...r.map(e=>(h.get(e.id)??0)+e.height))+24;for(let e of i)h.set(e.id,f),f+=e.height+10;for(let[e,t]of[...[...n].map(([e,t])=>[e,t.o]),["draft",o?.o]])if(t){if(t.classList.contains("wait")){if(!h.has(e)&&t!==o?.o)continue;t.style.transition="none",t.style.transform=`translateY(${Math.round(h.get(e)??0)}px)`,t.offsetWidth,t.style.transition="",t.classList.remove("wait");continue}d(t,h.get(e))}}function p(t,n){t.thread=n,t.note=bt(n),t.lost=a(n),t.moved=lo(e,n),t.view.update(n,{lost:t.lost?n.anchor.snapshot:null,moved:t.moved,alike:so(e,n)})}function u(n){let o=a(n),i=ro(n,e.K,{q:"column",lost:o?n.anchor.snapshot:null,moved:lo(e,n),alike:so(e,n)}),l=xt("div",{class:"th wait","data-thread":n.id},xt("button",{class:"opn sr",type:"button","data-thread":n.id}),i.element);return l.addEventListener("mouseenter",()=>e.L(n.id)),l.addEventListener("mouseleave",()=>e.L(null)),l.addEventListener("click",()=>e.open(n.id)),t.append(l),r.observe(l),{o:l,thread:n,lost:o,moved:lo(e,n),placed:null,view:i}}function h(e){r.unobserve(e),e.classList.add("out"),window.setTimeout(()=>e.remove(),220)}return{m:function(i){kt(t,e.state.u);let l=new Set,s=null!==e.state.i||null!==e.state.t;for(let t of i){if(!e.G(t))continue;let o=n.get(t.id);if(!o&&e.state.t?.sending)continue;l.add(t.id),o?(o.thread!==t||o.lost!==a(t)||o.moved!==lo(e,t)||o.note!==bt(t))&&p(o,t):(o=u(t),n.set(t.id,o));let r=o.o,i=e.state.i===t.id;r.classList.toggle("on",i);let d=r.firstElementChild,c=oo(t).length;d.setAttribute("aria-label",`Open thread: ${$t(t.root.text,60)}, ${no(c)}`),d.setAttribute("aria-expanded",String(i)),kt(d,i);let h=r.querySelector(".more");h&&kt(h,!i),r.classList.toggle("dim",s&&!i),r.classList.toggle("hot",e.state.L===t.id&&!i),r.classList.toggle("resolved",t.resolved),r.classList.toggle("lost",o.lost)}for(let[e,t]of n)l.has(e)||(n.delete(e),h(t.o));(function(){let n=e.state.u?null:e.state.t;if(o&&o.of!==n&&(h(o.o),o=null,n||e.F(null)),!n)return;let i=!o;if(o)o.p.he(n.label);else{let i=zn(e,n),a=xt("div",{class:"th on wait"},i.element);t.append(a),r.observe(a),o={o:a,p:i,of:n}}o.p.oe(e.state.l&&!n.anchor.quote&&!n.anchor.point),i&&o.p.focus()})(),Et(t,i.filter(e=>l.has(e.id)).sort(Xn(e)).map(e=>n.get(e.id).o),o?.o??null)&&t.offsetWidth,c()},N:function(){let n=io(e.root,!0);n&&(t.style.width=`${n.width}px`,t.style.transform=`translate(${n.x}px, ${-window.scrollY}px)`)},destroy(){r.disconnect(),e.F(null),t.remove()}}}var po=22;function uo(e,t){let n=new Map,o=xt("div",{class:"tip",role:"tooltip"}),r=xt("div",{class:"mark"}),i=xt("div",{class:"pop",role:"dialog","aria-label":"Comment thread"});o.inert=i.inert=!0,e.e.append(r,o,i);let a,l=xt("div",{class:"bub pin ghost","aria-hidden":"true"}),s=[],d=null,c=null,p=!1,u=null,h=!0===window.matchMedia?.("(prefers-reduced-motion: reduce)").matches,f=0,m=null,v=null,w=null,y=0,b=e=>s.find(t=>t.id===e)??null,x=()=>t.ve||e.state.u,k=!1,E=t=>{let n=e.resolved.get(t.id);return n?Fn(t.anchor,n):null},S=()=>{let t=function(e){let t=window.innerWidth,n=Yn();return{width:e&&!Kn()?t-320:t,height:n.bottom,top:n.top}}(e.state.u),n=e.state.u||e.e.classList.contains("kb")?null:e.e.querySelector(".launch .mode")?.getBoundingClientRect();return n?.width&&(t.keep={left:e.state.l&&Vn()?0:n.left,top:n.top}),t};function $(e,t,n){let{left:o,top:r}=function(e,t,n,o=12){if(!e.below&&e.x+14+t.width>n.width-o)return Gn(e.p,t,n,o,0);let r=Math.max(o,e.below?Math.min(e.x,n.width-t.width-o):e.x+14),i=_n(r,t.width,n,o),a=e.below?e.y+8:e.y-12;return e.below&&a+t.height>i&&(a=e.y-t.height-40),{left:r,top:Math.max((n.top??0)+o,Math.min(a,i-t.height))}}(t,{width:e.offsetWidth||n,height:e.offsetHeight},S());e.style.left=`${o}px`,e.style.top=`${r}px`}function L(t){let n=t&&x()&&e.state.i!==t?b(t):null,r=n?E(n):null;if(!n||!r)return w=null,o.classList.remove("show"),void kt(o,!0);if(w!==n.id){let e=oo(n).length;o.replaceChildren(xt("div",{class:"tx clamp",dir:"auto"},...n.root.deleted?["Deleted"]:Tt(n.root.text)),xt("div",{class:"who"},`${g(n.root)}${e?` \xb7 ${e} ${1===e?"reply":"replies"}`:""}`)),w=n.id}$(o,r,260),o.classList.contains("show")||o.offsetWidth,o.classList.add("show"),o.inert=!1}function M(t){m=t,L(t),e.L(t)}function C(e){window.clearTimeout(y),null===e?y=window.setTimeout(()=>M(null),x()?400:0):M(e)}function A(t){let o=n.get(t.id);if(o)return o;let i=xt("button",{class:"bub",type:"button","data-thread":t.id});return i.addEventListener("mouseenter",()=>C(t.id)),i.addEventListener("mouseleave",()=>C(null)),i.addEventListener("click",n=>{n.stopPropagation(),L(null),e.open(t.id)}),e.e.insertBefore(i,r),n.set(t.id,i),i}o.addEventListener("mouseenter",()=>window.clearTimeout(y)),o.addEventListener("mouseleave",()=>C(null)),o.addEventListener("click",t=>{t.stopPropagation();let n=w;n&&(window.clearTimeout(y),M(null),e.open(n))});let T=!1;function P(){let t=e.state.t,n=u&&t&&!t.anchor.quote&&!t.anchor.point?t.resolved.element:null;if(n){let{left:e,top:t,above:o}=Gn(n.getBoundingClientRect(),{width:i.offsetWidth||Wn(),height:i.offsetHeight},S(),12,Vn()?60:44),r=null!==u?.above&&u?.above!==o;if(u&&(u.above=o),r&&N())return;return i.style.left=`${e}px`,void(i.style.top=`${t}px`)}let o=u&&t?Fn(t.anchor,t.resolved):d?E(d):null;o&&$(i,o,Wn())}let q=t=>e.state.l&&!t.anchor.quote&&!t.anchor.point;function N(e=()=>{}){return window.clearTimeout(f),h?(i.classList.remove("show"),f=window.setTimeout(()=>{e(),P(),i.classList.add("show")},220),!0):(e(),i.classList.add("glide"),f=window.setTimeout(()=>i.classList.remove("glide"),450),!1)}let R=e=>Math.min(Math.max(e,20),window.innerWidth-30),D=t=>{if(e.O(t)){let e=t.composedPath()[0];return null!==v&&!(e instanceof Element&&e.closest(".tip,.bub"))&&C(null),void(v=null)}let n=e.ye(t.clientX,t.clientY)?.id??null;n!==v&&(v=n,C(n))},z=t=>{if(e.O(t))return;let n=window.getSelection();if(n&&!n.isCollapsed||(e.state.l&&!e.state.paused?t.altKey:t.target instanceof Element&&t.target.closest(On)))return;let o=e.ye(t.clientX,t.clientY);o&&(e.we(t),L(null),e.open(o.id))};return window.addEventListener("pointermove",D,{capture:!0,passive:!0}),window.addEventListener("click",z,!0),{m:function(o){s=o;let l=new Set;for(let t of o){if(!e.G(t)||t.anchor.quote)continue;let n=e.resolved.get(t.id);if(!n||"orphaned"===n.state)continue;l.add(t.id);let o=A(t);o.classList.toggle("done",t.resolved),o.classList.toggle("on",e.state.i===t.id),o.classList.toggle("pin",void 0!==t.anchor.point);let r=`Comment on ${Xe(n.element)}: ${$t(t.root.text,60)}`;o.getAttribute("aria-label")!==r&&o.setAttribute("aria-label",r)}Et(e.e,o.filter(e=>l.has(e.id)).sort(Xn(e)).map(e=>n.get(e.id)),r);for(let[e,t]of n)l.has(e)||(t.classList.remove("in"),n.delete(e),window.setTimeout(()=>t.remove(),300));L(m),k!==e.state.u&&i.classList.contains("show")&&!h&&N(),k=e.state.u;let g=t.ve&&!e.state.u?e.state.t:null;if(g){let t=g.anchor.point??g.resolved.element;u?.of!==g?(window.clearTimeout(f),i.classList.remove("glide"),u={p:zn(e,g),of:g,at:t,above:null},u.p.oe(q(g)),i.replaceChildren(u.p.element),i.inert=!1,u.p.focus(),d=null,c=null,P(),i.classList.add("show")):u&&(u.at!==t&&(u.at=t,u.above=null,N(()=>u?.p.he(g.label))),u.p.oe(q(g)));let n=!e.f.S(g.anchor.view);return void(n!==T&&(T=n,i.classList.toggle("show",!n),i.inert=n,n||P()))}u&&(window.clearTimeout(f),i.classList.remove("glide"),u=null,T=!1,e.F(null));let v=x()&&!e.state.u&&e.state.i?b(e.state.i):null;if(!v||!e.G(v))return d=null,c=null,i.classList.remove("show"),void kt(i,!0);let w={q:"popover",quote:v.anchor.quote?.exact??null,moved:lo(e,v),alike:so(e,v)};d&&c&&d.id===v.id?(d!==v||a!==bt(v)||p!==w.moved)&&(c.update(v,w),d=v,a=bt(v),p=w.moved):(c=ro(v,e.K,w),i.replaceChildren(c.element),d=v,a=bt(v),p=w.moved,P(),i.classList.add("show"),i.inert=!1)},N:function(){let t=[],o=x()?null:io(e.root,!0);for(let[r,i]of n){let n=b(r),a=e.resolved.get(r),l=n&&a?Hn(n.anchor,a):null;if(!l||l.y<-40||l.y>window.innerHeight+40){i.style.visibility="hidden";continue}let s=l.x=R(l.x),d=Math.max(s,(o?o.x:window.innerWidth)-30),c=po;for(;t.some(e=>Math.abs(e.x-l.x)<po&&Math.abs(e.y-l.y)<po);)l.x+=c,l.x>d&&(c=-22,l.x=s-po),l.x<20&&(c=po,l.x=s,l.y+=po);t.push(l),i.style.visibility="",i.style.left=`${l.x}px`,i.style.top=`${l.y}px`,i.classList.contains("in")||(i.offsetWidth,i.classList.add("in"))}let a=e.state.t,s=a?.anchor.point&&e.f.S(a.anchor.view)?Hn(a.anchor,a.resolved):null;s?(l.style.left=`${R(s.x)}px`,l.style.top=`${s.y}px`,l.classList.contains("in")||(e.e.insertBefore(l,r),l.offsetWidth,l.classList.add("in"))):l.classList.contains("in")&&(l.classList.remove("in"),window.setTimeout(()=>l.classList.contains("in")||l.remove(),300)),i.classList.contains("show")&&P();let c=function(){if(!x())return null;let t=e.state.t;return t?t.anchor.quote||t.anchor.point||e.state.l?null:t.resolved.element:!d||d.anchor.quote||d.anchor.point?null:e.resolved.get(d.id)?.element??null}();r.classList.toggle("show",null!==c),c&&Lt(r,c.getBoundingClientRect(),4)},destroy(){window.clearTimeout(y),window.clearTimeout(f),window.removeEventListener("pointermove",D,!0),window.removeEventListener("click",z,!0),e.F(null);for(let e of n.values())e.remove();l.remove(),o.remove(),r.remove(),i.remove()}}}var ho={display:"block",position:"static",clips:!1,off:!1},fo="button link img figure region list listitem tab tabpanel article navigation complementary banner contentinfo form search group dialog menu menuitem checkbox switch radio slider textbox combobox option row cell heading table".split(" ").map(e=>`[role=${e}]`),mo="[data-pipeup-ignore],pipeup-place,.reveal>:is(.controls,.progress,.slide-number)",go=["button,a,input,select,textarea,label,summary,details,img,svg,canvas,video,picture,figure,figcaption,table,th,td","li,ul,ol,dl,dt,dd,p,h1,h2,h3,h4,h5,h6,blockquote,pre","section,article,aside,nav,header,footer,main,form,fieldset",...fo].join(","),vo="a,button,label,summary,[role=button],[role=link],[role=tab],[role=option],[role=menuitem]",wo=`${vo},input,select,textarea,img,svg,canvas,video,picture,[role=img]`,yo=(e,t)=>Math.abs(e.left-t.left)<=2&&Math.abs(e.top-t.top)<=2&&Math.abs(e.width-t.width)<=2&&Math.abs(e.height-t.height)<=2;function bo(e,t){let n=t.p(e);if(n.width<2||n.height<2)return!1;if(e.hasAttribute("data-pipeup-id"))return!0;let o=t.re();return n.width*n.height<=.6*o.width*o.height&&(e.matches(go)||t.nt(e)||e.childElementCount>1&&!e.parentElement?.closest(vo)&&t.ot(e))}function xo(e,t,n){if(e===t||!t.contains(e)||e.closest(mo))return null;let o=null;for(let r=e;r&&r!==t&&!o;r=r.parentElement)bo(r,n)&&(o=r);if(!o||o.hasAttribute("data-pipeup-id"))return o;let r=n.p(o);for(let e=o.parentElement;e&&e!==t&&yo(n.p(e),r);e=e.parentElement)if(e.hasAttribute("data-pipeup-id"))return e;return o}function ko(e,t,n){let o=n.p(e);for(let r=e.parentElement;r&&r!==t;){let e=xo(r,t,n);if(!e)return null;if(!yo(n.p(e),o))return e;r=e.parentElement}return null}var Eo=(e,t)=>e.left<t.left+t.width&&t.left<e.left+e.width&&e.top<t.top+t.height&&t.top<e.top+e.height,So=(e,t)=>{let n=Math.max(e.left,t.left),o=Math.max(e.top,t.top);return{left:n,top:o,width:Math.max(0,Math.min(e.left+e.width,t.left+t.width)-n),height:Math.max(0,Math.min(e.top+e.height,t.top+t.height)-o)}};function $o(e,t,n=()=>!0){let o=[],r=(e,i,a,l,s,d)=>{for(let c of e.children){if(c.matches(mo)||"true"===c.getAttribute("aria-hidden")||!n(c))continue;let e=t.flow?.(c)??ho,p=c.offsetParent,u="fixed"===e.position||"absolute"===e.position&&!!l&&!(p&&l.contains(p)),h=u?null:a,f=t.p(c),m=f.width>0&&f.height>0;if(h&&m&&!Eo(f,h))continue;let g=c.matches(vo),v=(e.display.startsWith("inline")||d)&&!c.matches(wo)&&("inline"===e.display||f.height<=48),w=f.width<=24&&f.height<=24,y=i;(c.hasAttribute("data-pipeup-id")||!s&&!e.off&&!v&&(!w||g))&&bo(c,t)&&(i&&yo(t.p(i.o),f)?(c.hasAttribute("data-pipeup-id")||!i.o.hasAttribute("data-pipeup-id"))&&(i.o=c):o.push(y={o:c,V:i,T:0}));let b=e.clips&&m;r(c,y,b?h?So(h,f):f:h,b?c:u?null:l,s||g,/^inline-(flex|grid)$/.test(e.display)||d&&/(flex|grid)$/.test(e.display))}};r(e,null,null,null,!1,!1);for(let e=o.length-1;e>=0;e--){let t=o[e];t.V&&(t.V.T=Math.max(t.V.T,t.T+1))}return o}var Lo=(e,t)=>e.filter(e=>e.T<=t&&(!e.V||e.V.T>t)),Mo="a,button,summary,[role=button],[role=link],[role=switch],[role=tab],[role=checkbox],input[type=checkbox],input[type=radio],input[type=submit],input[type=button],input[type=reset]",Co=`${Mo},input,select,textarea,[contenteditable]:not([contenteditable=false]),[tabindex]:not([tabindex="-1"])`,Ao=["click","dblclick","auxclick","submit","contextmenu","dragstart"],To=[...["over","out","enter","leave","down","up"].flatMap(e=>[`pointer${e}`,`mouse${e}`]),"mousemove","touchstart","touchmove","touchend","touchcancel"],Po=["pointerup","pointercancel"],qo="Tab moves between blocks \xb7 \u2191 \u2193 change level \xb7 Enter comments \xb7 Hold Space to use the page \xb7 Esc to finish \xb7 F7 selects text";function No(e){let t={p:e=>e.getBoundingClientRect(),nt:e=>{let t=getComputedStyle(e),n="transparent"!==t.backgroundColor&&!/,\s*0\)$/.test(t.backgroundColor),o=["top","right","bottom","left"].some(e=>parseFloat(t.getPropertyValue(`border-${e}-width`))>0);return n||o||"none"!==t.backgroundImage||"none"!==t.boxShadow},ot:e=>/^(inline-)?(flex|grid)$/.test(getComputedStyle(e).display),flow:e=>{let t=getComputedStyle(e),n=[t.overflowX,t.overflowY];return{display:t.display,position:t.position,clips:n.some(e=>"hidden"===e||"clip"===e)&&!n.some(e=>"auto"===e||"scroll"===e)&&e!==document.documentElement&&e!==document.body,off:"none"===t.pointerEvents}},re:()=>({width:innerWidth,height:innerHeight})},n=xt("span",{hidden:!0},qo),o=xt("div",{class:"pick"},n),r=xt("div",{class:"pkw"}),i=[0,1].map(()=>{let e=xt("div",{class:"km",tabindex:"-1",role:"button"},xt("span",{hidden:!0}),xt("span",{hidden:!0}));return e.inert=!0,e.addEventListener("keydown",Se),e.addEventListener("click",e=>{e.stopPropagation(),Ee()}),e.addEventListener("focus",()=>o.classList.add("kf")),e.addEventListener("blur",()=>o.classList.remove("kf")),e}),a=xt("span",{class:"lbl"}),l=(e,t,n,o)=>{let r=xt("button",{class:"nb",type:"button","aria-label":e,title:t},Nt(n,16));return r.addEventListener("click",e=>{e.stopPropagation(),o(e)}),r},s=l("Around it","Select the block around it","expand",xe),d=l("Inside it","Select a block inside it","shrink",ke),c=l("Pin","Pin its centre","pin",t=>t.detail&&Vn()?W(!z):e.Re(()=>Y(m??k,{x:.5,y:.5}))),p=xt("div",{class:"namebar",role:"group","aria-label":"Chosen block"},a,s,d,c);p.inert=!0;let u=e.e.querySelector(".launch");for(let t of[r,o,...i,p])e.e.insertBefore(t,u);p.addEventListener("mousedown",e=>e.preventDefault());let h=!0===window.matchMedia?.("(prefers-reduced-motion: reduce)").matches,f=null,m=null,g=null,v=null,w=0,y=()=>{},b=null,x=()=>{},k=null,E=0,S=0,$=!1,L=null,M=null,C=null,A=0,T=null,P=-1,q=!0,N=null,R=null,D=!1,z=!1,O=t=>!(e.O(t)||t.target instanceof Element&&t.target.closest(mo));function H(){v&&(o.classList.toggle("glide",performance.now()<w),Lt(o,v.getBoundingClientRect(),4))}function I(){if(!b)return;p.classList.toggle("glide",performance.now()<w&&p.classList.contains("show"));let t={width:p.offsetWidth||200,height:p.offsetHeight||34},n=Zn(b.getBoundingClientRect(),t,{width:innerWidth,height:innerHeight}),o=e.e.querySelector(".pop.show")?.getBoundingClientRect(),r=t.height;o&&n.top<o.bottom&&n.top+r>o.top&&n.left<o.right&&n.left+t.width>o.left&&(n.top=o.top-r-8>=8?o.top-r-8:o.bottom+8),p.style.left=`${n.left}px`,p.style.top=`${n.top}px`}function B(e,t){v=e,w=t?performance.now()+400:0,H(),o.classList.add("show")}function F(e,t){let n=getComputedStyle(e);if("0"===n.opacity)return t(),()=>{};let o=0,r=()=>{window.clearTimeout(o),e.removeEventListener("transitionend",a)},i=()=>{r(),t()},a=t=>{t.target===e&&"opacity"===t.propertyName&&i()},l=Math.max(...n.transitionDuration.split(",").map(e=>1e3*parseFloat(e)||0));return o=window.setTimeout(i,l+100),e.addEventListener("transitionend",a),r}function j(e){if(e!==f){if(f=e,y(),!e)return void o.classList.remove("show");"0"===getComputedStyle(o).opacity?B(e,!1):h?(o.classList.remove("show"),y=F(o,()=>B(e,!1))):B(e,!0)}}function W(t){z=e.state.pinning=t,c.classList.toggle("on",t),t?e.M(a.textContent="Tap where to pin"):b&&(a.textContent=Xe(b))}function K(e){z&&W(!1),m=e,o.classList.toggle("on",null!==e),j(e),V(e)}function V(e){x(),p.inert=!e,e?h?(p.classList.remove("show"),x=F(p,()=>U(e))):U(e):(p.classList.remove("show"),b=null)}function U(n){a.textContent=a.title=Xe(n),s.hidden=null===ko(n,e.root,t),d.hidden=0===(k?we(n).length:$o(n,t,ce).length);let o=p.classList.contains("show");b=n,I(),o||(p.offsetWidth,p.classList.add("show"))}function Y(t,n){let o;try{o=Ne(t,e.root,n,e.f.view(t))}catch(t){return void e.ie(t)}if(e.state.I)return e.repoint(o);let r={anchor:o,label:n?`Pin on ${Xe(t).replace(/^[A-Z](?=[a-z])/,e=>e.toLowerCase())}`:Xe(t),ranges:[],resolved:{state:"attached",element:t,range:null}},i=e.state.t;k&&(k=t,P=-1),K(n?null:t),g=i??r,e.rt(r),i&&e.focusDraft(),e.M(n?r.label:`Commenting on ${r.label}`)}function _(t){e.Re(()=>Y(t))}function G(n){let o=(n.target instanceof Element?xo(n.target,e.root,t):null)??e.root;o!==e.root&&(L=o);let r=o.getBoundingClientRect();r.width&&r.height&&Y(o,{x:(n.clientX-r.left)/r.width,y:(n.clientY-r.top)/r.height})}function Z(t){e.state.paused!==t&&(e.state.paused=t,t&&!m?j(null):!t&&k&&!m&&j(k),e.m())}let J=!1,X=null,Q=0,ee=()=>X??e.state.paused,te=()=>{J=!1,X=e.state.paused,Q++},ne=()=>{let e=Q;setTimeout(()=>{Q===e&&(X=null)})},oe=()=>!!e.state.i&&!e.state.sent,re=n=>{let o=T?Math.abs(n.clientX-T.x)+Math.abs(n.clientY-T.y):0;if(T={x:n.clientX,y:n.clientY},e.O(n)||e.state.paused)return;if(!O(n))return void(m||j(null));if(n.stopPropagation(),oe())return void(m||j(null));if(m||e.state.t)return;let r=!St()&&n.target instanceof Element?xo(n.target,e.root,t):null;if(k){if(!r||r===k||(A+=o,A<=4))return;ve()}r&&(L=r),j(r)},ie=()=>{St()&&(k&&ve(),m||j(null))},ae=e=>{!O(e)||ee()||(e.stopPropagation(),("pointerdown"===e.type||"mousedown"===e.type)&&e.target instanceof Element&&e.target.closest(Co)&&e.preventDefault())},le=n=>{if(!O(n))return;if(ee())return e.we(n);let o=n.target;!(o===R||o.form&&o.form===R?.form)||"submit"!==n.type&&("click"!==n.type||n.detail)?(n.preventDefault(),n.stopPropagation(),"click"===n.type&&!e.state.s&&!e.it(n)&&function(n){if(z)return G(n);let o=window.getSelection();if(o&&!o.isCollapsed)return void(n.detail>1&&g&&e.state.t===g&&e.w()&&e.ge());let r=n.target instanceof Element?xo(n.target,e.root,t):null;if(e.state.t&&!e.w())return r||n.altKey?e._():e.Y();if(e.state.t&&n.altKey)return e.Y();if(n.altKey||!e.ye(n.clientX,n.clientY)){if(oe())return e.open(null);if(e.state.i&&e.open(null),k&&n.detail&&ve(),n.altKey)return void G(n);r&&(L=r),r?Y(r):(e.Y(),K(null))}}(n)):R="click"===n.type&&"submit"===o.type?o.form:null},se=()=>e.e.getRootNode().activeElement,de=()=>i.some(e=>e===se()),ce=t=>{let n=e.e.getRootNode().host?.parentElement;return(!1!==t.checkVisibility?.({opacityProperty:!0,visibilityProperty:!0})||"contents"===getComputedStyle(t).display)&&!t.closest("[inert]")&&(!n||n===document.documentElement||n.contains(t))&&e.f.S(e.f.view(t))},pe=()=>(N?.some(e=>!e.o.isConnected)&&(N=null),N??=$o(e.root,t,ce)),ue=e=>pe().find(t=>t.o===e),he=(e,t=!1)=>{let n=e.getBoundingClientRect();return n.bottom>0&&n.top<window.innerHeight&&(!t||n.top>=0)},fe=()=>{let e=Lo(pe(),0);return e.find(e=>he(e.o,!0))??e.find(e=>he(e.o))??e[0]},me=t=>e.doc.threads().filter(n=>e.G(n)&&t.contains(Jn(e,n))).sort(Xn(e));function ge(t,o=!0){A=0;let r=pe(),a=r.find(e=>e.o===t);if(a&&!Lo(r,E).includes(a)&&(E=a.T),t!==k&&(P=-1),t!==m&&(m=null),k=t,j(t),V(t),t.scrollIntoView({block:"nearest",inline:"nearest",behavior:h?"auto":"smooth"}),!o)return;e.st();let l=i[S^=1];(function(e,t){let[o,r]=e.children,i=Lo(pe(),E),a=me(t).length;o.textContent=`${Ge(t)}, ${i.findIndex(e=>e.o===t)+1} of ${i.length}${a?`, has ${a} comment${1===a?"":"s"}`:""}`;let l=(t.innerText??t.textContent??"").length<=150;r.textContent=Je(t);let s=q?[n]:[];q=!1,void 0!==e.ariaLabelledByElements?(e.ariaLabelledByElements=l?[o,t]:[o,r],e.ariaDescribedByElements=l?s:[...s,t]):e.setAttribute("aria-label",`${o.textContent}, ${r.textContent}`)})(l,t),Lt(l,t.getBoundingClientRect(),4),l.inert=!1,l.focus({preventScroll:!0}),i[1^S].inert=!0}function ve(){let e=de();L=k,k=null,j(null),V(null);for(let e of i)kt(e,!0);return e}function we(e){let t=ue(e);return t?((e,t)=>e.filter(e=>e.V===t))(pe(),t):[]}function ye(e){let t=Lo(pe(),E),n=t.findIndex(e=>e.o===k),o=t[n<0?e>0?0:t.length-1:(n+e+t.length)%t.length];o&&ge(o.o)}function be(t){if(k)return ye(t);N=null;let n=document.activeElement;M=se()??n;let o,r=L?.isConnected?L:null,i=r&&ue(r);if(i){E=i.T;let e=Lo(pe(),E),n=e.indexOf(i);o=e[(n+t+e.length)%e.length]}else if(r){E=0;let e=Lo(pe(),0),n=e=>0!==(r.compareDocumentPosition(e.o)&Node.DOCUMENT_POSITION_FOLLOWING),i=e=>e.o.contains(r);o=t>0?e.find(e=>n(e)&&!i(e))??e[0]:e.filter(e=>!n(e)&&!i(e)).pop()??e[e.length-1]}else o=fe(),o&&(E=o.T);if(!o)return e.M("Nothing here to comment on");$=!0,ge(o.o)}function xe(){let n=m??k,o=n&&ko(n,e.root,t);return o?((!C||!n.contains(C))&&(C=n),m?_(o):void ge(o)):e.M("Nothing around it")}function ke(){let t=m??k,n=t?we(t):[],o=n.find(e=>C&&e.o.contains(C))??n.find(e=>he(e.o))??n[0];if(!o)return e.M("Nothing inside it");m?_(o.o):ge(o.o)}function Ee(t=!1){if(!k)return;if(e.state.t&&!e.w())return e._();if(!t)return Y(k);let n=me(k);if(!n.length)return e.M("No comments on this block");P=(P+1)%n.length,e.open(n[P].id),n.length>1&&e.M(`Comment ${P+1} of ${n.length} on this block`)}function Se(t){if(["Tab","ArrowUp","ArrowDown","Enter","Escape"].includes(t.key)&&(!t.key.startsWith("Arrow")||!(t.metaKey||t.ctrlKey||t.altKey))){if(t.preventDefault(),t.stopPropagation(),Me=t.key,"Escape"===t.key)return void e.X();if("Enter"===t.key)return Ee(t.shiftKey);"Tab"===t.key&&e.Y(),e.state.i&&e.open(null),"Tab"===t.key?ye(t.shiftKey?-1:1):"ArrowUp"===t.key?xe():ke()}}function $e(){let t=e.state.t,n=!!k&&!!t&&!e.w(),o=n&&t===g&&t.resolved.element!==k?t.resolved.element:null;r.classList.toggle("show",!!o&&ce(o)),o&&Lt(r,o.getBoundingClientRect(),4),e.e.querySelector(".draft")?.classList.toggle("wait",n&&t?.resolved.element!==k)}let Le=()=>{let e=se();return e?!!e.closest("[inert]"):!document.activeElement||document.activeElement===document.body},Me="",Ce=!1,Ae=()=>Z(!1),Te=pn("keyup",t=>{if(Ce&&Te(),t.key===qn&&e.state.paused)return Z(!1),t.preventDefault(),void t.stopPropagation();t.key===Me&&(Me="",t.preventDefault(),t.stopPropagation())},!0);window.addEventListener("blur",Ae),window.addEventListener("pointermove",re,!0),window.addEventListener("pointerdown",te,!0);for(let e of Po)window.addEventListener(e,ne,!0);document.addEventListener("selectionchange",ie);for(let e of To)window.addEventListener(e,ae,!0);for(let e of Ao)window.addEventListener(e,le,!0);let Pe=pn("keydown",t=>{if(t.key!==qn&&(J=!0),(t=>{if(t.key!==qn||t.ctrlKey||t.metaKey||t.altKey||t.isComposing)return!1;let n=t.composedPath()[0];if(i.some(e=>e===n)||n instanceof HTMLTextAreaElement&&e.e.contains(n)&&!n.value.trim())return!0;let o=n instanceof Element?n.closest(Co):null;return!o||!J&&!o.matches("input,textarea,select,[contenteditable]:not([contenteditable=false])")})(t)||t.key===qn&&e.state.paused)return t.repeat||Z(!0),t.preventDefault(),void t.stopPropagation();if(R=null,Me="","Escape"===t.key&&O(t)&&!t.isComposing&&!t.defaultPrevented&&!e.state.s&&!e.state.u)return t.preventDefault(),t.stopPropagation(),Me=t.key,e.X();if("Tab"===t.key&&function(t){if(t.ctrlKey||t.metaKey||t.altKey||t.isComposing||!e.O(t))return!1;let n=t.composedPath()[0],o=n instanceof Element?n.closest(".draft,.thread"):null,r=!!o?.classList.contains("draft");if(!o||!r&&o.closest(".all")||o.querySelector(".mnl.show")||o.querySelector(".nf :focus"))return!1;let i=t.shiftKey?-1:1;if(D=!0,r&&e.w())e.ge();else{let t=[...o.querySelectorAll("button,textarea,input,a[href]")].filter(e=>e.tabIndex>=0&&!e.closest("[inert],[hidden]")&&e.getClientRects().length>0),a=t.indexOf(n);if(a>=0&&(i>0?a<t.length-1:a>0))return D=!1,!1;r||e.open(null)}return D=!1,be(i),!0}(t))return t.preventDefault(),t.stopPropagation(),void(Me=t.key);if("Tab"===t.key&&(t=>{if(t.ctrlKey||t.metaKey||t.altKey||t.isComposing)return!1;let n=t.composedPath()[0];return n instanceof Element&&!i.some(e=>e===n)&&(e.O(t)?!!n.closest(".launch,.menu")&&!n.closest("input,textarea,select,[contenteditable]"):!t.composedPath().some(e=>e instanceof Element&&e.matches(mo)))})(t))return t.preventDefault(),t.stopPropagation(),Me=t.key,e.Y(),e.state.i&&e.open(null),e.state.s&&(e.state.s=!1,e.m()),be(t.shiftKey?-1:1);if(O(t)&&t.target instanceof Element)if("Enter"!==t.key&&" "!==t.key||!t.target.closest(Mo))"Enter"===t.key&&t.target.form&&(R=t.target);else{if(!k)return void(R=t.target);t.preventDefault(),t.stopPropagation()}},!0);return{X:()=>!!m&&(K(null),!0),be:()=>null!==k,lt:()=>$&&!k,Ne:function(){N=null;let t=document.activeElement;M=se()??t;let n=ue(L),o=n??(t&&t!==document.body&&e.root.contains(t)&&!t.closest(mo)?pe().filter(e=>e.o.contains(t)).pop():void 0)??fe();return!!o&&(n||(E=o.T),$=!0,ge(o.o),!0)},xe(){k&&!de()&&ge(k)},m(){if(N=null,k&&(!k.isConnected||!ce(k))){let e=fe();e?ge(e.o,de()||Le()):ve()}let t=e.e.querySelector(".launch");if(t&&p.nextElementSibling!==t&&!de()&&!p.contains(se()))for(let n of[r,o,...i,p])e.e.insertBefore(n,t);let n=e.state.t;g&&n!==g?(g=null,K(null),k&&ge(k,Le()&&!D)):(n||e.state.i)&&!g&&(f||m)&&K(null);let a=g?.anchor.point?null:g?.resolved.element;m&&!ce(m)?K(null):!m&&!k&&a&&n===g&&ce(a)&&K(a),$e()},toDraft(){let t=g,n=t?.resolved.element;!t||!n||e.state.t!==t||(k&&(k=n,P=-1),L=n,K(t.anchor.point?null:n),n.scrollIntoView({block:"nearest",inline:"nearest",behavior:h?"auto":"smooth"}))},adopt(e){g=e;let t=e.resolved.element;k&&t&&(k=t),K(e.anchor.point?null:t)},N(){$e(),H(),I(),k&&Lt(i[S],k.getBoundingClientRect(),4)},destroy(){ve()&&function(){let t=M;t&&t!==document.body&&t.isConnected&&t.focus?.({preventScroll:!0}),(!t||t===document.body||!t.matches?.(":focus"))&&e.e.querySelector(".launch .mode")?.focus({preventScroll:!0})}();for(let e of i)e.remove();r.remove(),e.e.querySelector(".draft")?.classList.remove("wait"),y(),x(),e.state.pinning=!1,Ce=!0,Me||Te(),window.removeEventListener("blur",Ae),window.removeEventListener("pointermove",re,!0),window.removeEventListener("pointerdown",te,!0);for(let e of Po)window.removeEventListener(e,ne,!0);document.removeEventListener("selectionchange",ie);for(let e of To)window.removeEventListener(e,ae,!0);for(let e of Ao)window.removeEventListener(e,le,!0);Pe(),o.classList.remove("show"),p.classList.remove("show"),kt(p,!0),F(o,()=>o.remove()),F(p,()=>p.remove())}}}var Ro=`${mo},input,textarea,select,[contenteditable]:not([contenteditable=false])`;function Do(e){let t=xt("button",{type:"button","aria-label":"Comment",title:"Comment"},Nt("comment",17)),n=xt("div",{class:"selbar"},t);n.inert=!0,e.e.append(n);let o=null,r=0,i=!1,a=()=>e.state.l||"comment-mode"!==Kt("data-pipeup-select"),l=t=>{let n=t&&(t.nodeType===Node.ELEMENT_NODE?t:t.parentElement);return!!n&&e.root.contains(n)&&!n.closest(Ro)};function s(){if(!o)return;let t=o.cloneRange();t.selectNodeContents(Pe(o.commonAncestorContainer,e.root));let r=o.getBoundingClientRect(),{left:i,top:a}=function(e,t,n,o,r,i=!1){let a=n+8;if(i){let n=r.width-o.width-4,i=t.left+t.width<n-8?t.top+t.height/2:e.top+t.height/2;return{left:n,top:Math.max((r.top??0)+8,Math.min(i-o.height/2,r.height-o.height-8))}}return a+o.width>r.width-8?Zn(e,o,r):{left:a,top:t.top+t.height/2-o.height/2}}(r,[...o.getClientRects()].filter(e=>e.width).at(-1)??r,t.getBoundingClientRect().right,{width:n.offsetWidth||36,height:n.offsetHeight||34},{width:window.innerWidth,height:window.innerHeight},Vn());n.style.left=`${i}px`,n.style.top=`${a}px`}function d(){o=null,n.inert=!0,n.classList.remove("show")}function c(t=!1){let r=St();a()&&r&&l(r.anchorNode)&&l(r.focusNode)?(!o&&!t&&e.state.l&&e.M("Enter comments on the selected words"),o=r.getRangeAt(0).cloneRange(),s(),n.inert=!1,n.classList.add("show")):d()}t.addEventListener("mousedown",e=>e.preventDefault()),t.addEventListener("click",t=>{if(t.stopPropagation(),e.state.t&&!e.w())return e._();let n,r=o;if(!r)return;try{n=qe(r,e.root,e.f.view(r.commonAncestorContainer))}catch(t){return e.ie(t),void d()}let i=$t(r.toString().replace(/\s+/g," ").trim(),60);window.getSelection()?.removeAllRanges(),d(),e.Ie({anchor:n,label:`\u201c${i}\u201d`,ranges:[r],resolved:{state:"attached",element:null,range:r}})});let p=()=>{window.clearTimeout(r),r=window.setTimeout(()=>i||c(),250),o&&(St()||d())};document.addEventListener("selectionchange",p);let u=t=>{"keyup"!==t.type&&(i="mousedown"===t.type),!i&&!e.O(t)&&window.setTimeout(()=>c("mouseup"===t.type),0)};window.addEventListener("mousedown",u,!0),window.addEventListener("mouseup",u,!0),window.addEventListener("keyup",u,!0);let h=n=>{"Enter"!==n.key||!o||!e.state.l||e.O(n)||n.target instanceof Element&&n.target.closest(`${Ro},${Mo}`)||(n.preventDefault(),n.stopPropagation(),t.click())};return window.addEventListener("keydown",h,!0),{m(){o&&!a()&&d()},N(){o&&s()},destroy(){window.removeEventListener("mousedown",u,!0),window.removeEventListener("mouseup",u,!0),window.removeEventListener("keyup",u,!0),window.removeEventListener("keydown",h,!0),window.clearTimeout(r),document.removeEventListener("selectionchange",p),n.remove()}}}async function zo(e,t){try{return void await navigator.clipboard.writeText(e)}catch{}let n=t.getRootNode().activeElement??document.activeElement,o=document.createElement("textarea");o.value=e,o.setAttribute("readonly",""),o.style.cssText="position:fixed;opacity:0;pointer-events:none",t.append(o),o.select();let r=document.execCommand("copy");if(o.remove(),n instanceof HTMLElement&&n.focus({preventScroll:!0}),!r)throw new Error("pipeup: your browser blocked copying")}var Oo="Hidden on the page",Ho=["auto","light","dark"];function Io(e){let t=[xt("span",{class:"n"}),xt("span",{class:"n"})],n=Nt("comment",22,1.4);n.lastElementChild.setAttribute("stroke-width","1.6");let o=xt("span",{class:"cnt"},Nt("bubble",28,1.4),Nt("wide",28,1.4),...t),r=xt("button",{class:"mode",type:"button","aria-label":"Comment","aria-keyshortcuts":Nn,"aria-pressed":"false"},xt("span",{class:"plus"},n),o,xt("span",{class:"dot"})),i=document.createTextNode(""),a=xt("span",{class:"ttip","aria-hidden":"true"},xt("span",{},i,xt("small",{},Pn))),l=xt("button",{class:"mm",type:"button","aria-label":"More","aria-haspopup":"menu","aria-expanded":"false"},Nt("more",15,3)),s=xt("div",{class:"launch"},r,l,a),d="off"===Kt("data-pipeup-control");d&&s.classList.add("off");let c=null,p=()=>{if(!d)return r.focus({preventScroll:!0});c?.focus({preventScroll:!0}),c=null},u=xt("div",{class:"menu",role:"menu","aria-label":"Comments"}),h=xt("div",{class:"list",role:"list","aria-label":"Comments"}),f=xt("button",{class:"ib",type:"button","aria-label":"Close"},Nt("close")),v=(e,t,n,o)=>{let r=xt("button",{class:"tg",type:"button","aria-label":e,"aria-description":t,"data-tip":t,"aria-pressed":"false"},n,e);return r.addEventListener("click",e=>{e.stopPropagation(),o()}),r},w=v("For you","Only comments that mention you",Nt("at",16,1.8),()=>e.s.toggleMine()),y=v("Resolved","Show resolved comments too",Nt("resolve",22,1.7),()=>e.s.ct()),b=xt("div",{class:"lns"}),x=new Map,k=xt("span",{class:"ma"}),E=xt("span",{class:"lb"}),S=xt("button",{class:"fs",type:"button",role:"switch","aria-checked":"false","aria-keyshortcuts":Nn},"Comment",xt("small",{class:"ks","aria-hidden":"true"},Pn),xt("span",{class:"sw","aria-hidden":"true"}));S.addEventListener("click",t=>{t.stopPropagation(),e.se(!e.state.l,!e.state.l&&0===t.detail)});let $=xt("button",{class:"ib",type:"button","aria-label":"More","aria-haspopup":"menu","aria-expanded":"false"},Nt("more",15,3)),L="",M=xt("div",{class:"all",role:"dialog","aria-label":"All comments"},xt("div",{class:"hh",role:"heading","aria-level":"2"},"All comments"),xt("div",{class:"hd"},w,y,xt("span",{class:"sp"}),f),b,h,xt("div",{class:"pf"},k,E,S,$)),C=document.createElementNS("http://www.w3.org/2000/svg","svg");C.setAttribute("class","cx"),C.setAttribute("aria-hidden","true");let A=document.createElementNS("http://www.w3.org/2000/svg","path"),T=document.createElementNS("http://www.w3.org/2000/svg","circle");T.setAttribute("r","4"),C.append(A,T),u.inert=M.inert=!0,e.e.append(u,s,C,M);let P=!1,q=null,N=0,R=[],D=0,z=null,O=null,H=null,I=!0===window.matchMedia?.("(prefers-reduced-motion: reduce)").matches,B=()=>{},F=t=>{P=e.state.s=t,e.taps(),t&&e.addons.flush(),window.clearTimeout(N),N=0,t||q?.(!0),t?u.classList.toggle("inp",e.state.u):B(),u.classList.toggle("show",t),kt(u,!t),l.setAttribute("aria-expanded",String(t)),$.setAttribute("aria-expanded",String(t))},j=(t,n=!1)=>{if(e.state.u===t)return;e.keepReplies();let o=t?e.state.i:null;o&&(e.state.i=null),e.state.u=t,e.m(),o&&R.some(e=>e.id===o)?xe(o,!0):t&&e.state.t?e.focusDraft():t?(W(h)[0]??f).focus({preventScroll:!0}):n&&p()},W=(e=u)=>[...e.querySelectorAll(".mi")].filter(e=>e.offsetParent&&!e.closest("[inert]")),K=()=>u.getRootNode().activeElement,V=()=>{F(!1),p()},U=e=>{let t=W(e.currentTarget);if(0===t.length)return;let n=K(),o=t.indexOf(n),r=n=>{e.preventDefault(),t[(n+t.length)%t.length]?.focus({preventScroll:!0})};"ArrowDown"===e.key?r(o+1):"ArrowUp"===e.key?r(o<0?t.length-1:o-1):"Home"===e.key?r(0):"End"===e.key&&r(t.length-1)};u.addEventListener("keydown",U),h.addEventListener("keydown",U),f.addEventListener("click",e=>{e.stopPropagation(),j(!1,!0)});let Y=t=>ao(e,t),_=t=>lo(e,t),G=t=>R.filter(n=>!(n.resolved||void 0!==t&&(e.Z(n)!==t||t&&e.E(n)))).length,Z=t=>{if(e.E(t)){let e=t.anchor.view?.[et];return e?`In the ${e} edition`:"From before editions"}let n=t.anchor.view?.slide,o=e.f.S(t.anchor.view)?"":tt(t.anchor.view);return n&&null!==e.f.slide()?`On slide ${n}`:o?`In ${o}`:Oo},J=(e,t,n=!1)=>{let o=new Set(t),r=new Set(e.childNodes),i=new Map,a=new Set(t.map(Q));for(let e of r){if(o.has(e))continue;let t=Q(e);t&&a.has(t)&&i.set(t,e.offsetHeight),n&&te&&e instanceof HTMLElement&&!i.has(t)?ne(e):e.remove()}let l=e.firstChild;for(let n of t){for(;l&&l!==n&&ee.has(l);)l=l.nextSibling;l===n?l=n.nextSibling:e.insertBefore(n,l)}if(n&&te)for(let e of t)e instanceof HTMLElement&&(r.has(e)?ee.delete(e)&&oe(e,e.offsetHeight):oe(e,i.get(Q(e))??0))},X=new WeakMap,Q=e=>X.get(e),ee=new WeakSet,te=!1,ne=e=>{if(!ee.has(e)){if(e.classList.contains("out"))return e.remove();ee.add(e),e.style.height=`${e.offsetHeight}px`,e.offsetHeight,e.classList.add("out"),I||(e.style.height="0"),setTimeout(()=>ee.delete(e)&&e.remove(),340)}},oe=(e,t)=>{let n=e.style;n.transition="none",e.classList.remove("out"),n.height=n.maxHeight=n.overflow="";let o=e.offsetHeight,r=o>t?"maxHeight":"height";(I||!t)&&e.classList.add("out"),I||(n.overflow="hidden",n[r]=`${t}px`),e.offsetHeight,n.transition="",e.classList.remove("out"),!I&&(n[r]=`${o>t?o+40:o}px`,setTimeout(()=>n[r]=n.overflow="",360))},re=new Map,ie=(e,t,n="",o=e)=>{let[r,i,a]=re.get(o)??[];return(!r||!i||!a)&&re.set(o,[r=xt("div",{role:"listitem"}),i=xt("div",{class:"sec","aria-hidden":"true"}),a=xt("div",{role:"list"})]),a.setAttribute("aria-label",n?`${e} \xb7 ${n}`:e),i.replaceChildren(e,n&&xt("b",{},n)),J(r,[i,a]),J(a,t,!0),r},ae=xt("div",{class:"sec",role:"listitem"}),le=!1,se=xt("button",{class:"sec fold",type:"button"});se.addEventListener("click",e=>{e.stopPropagation(),le=!le,we()});let de=xt("div",{role:"listitem"}),ce=xt("div",{role:"list","aria-label":"Earlier editions"}),pe=(e,t,n)=>(se.setAttribute("aria-expanded",String(n)),se.replaceChildren(`Earlier editions \xb7 ${t} open`,Nt("chev",12)),J(de,n?[se,ce]:[se]),J(ce,n?e:[],!0),de);function ue(t,n){let o=e.f.slide(),r=new Map;for(let n of t){let t=n.thread,i=null!==o?t.anchor.view?.slide??o:e.Z(t)?e.f.S(t.anchor.view)?"":tt(t.anchor.view):null;r.set(i,[...r.get(i)??[],n])}if(null===o){let e=r.get(null)??[];return r.delete(null),[...e.flatMap(n),...[...r].map(([e,t])=>ie(e||Oo,t.flatMap(n)))]}return[...r].sort(([e],[t])=>Number(e)-Number(t)||0).map(([e,t])=>ie(`Slide ${e} \xb7 ${t.filter(e=>!e.thread.resolved).length} open`,t.flatMap(n),e===o?"This slide":"",`slide:${e}`))}let he=null,fe=new Map,me=new Map,ge=new Set,ve={...e.K,get me(){return e.K.me},resolve:async t=>{let n=fe.get(t)?.card;n&&!e.state.H&&!I&&(ge.add(t),n.style.height=`${n.offsetHeight}px`,n.offsetHeight,n.classList.add("out"),n.style.height="0",await new Promise(e=>setTimeout(e,340))),await e.K.resolve(t),ge.delete(t),n?.style.removeProperty("height"),e.m()}};function we(){let t=K(),n=t?.dataset.thread,o=null!==O&&O.element.contains(t),r=[...fe.values()].find(e=>e.view.element.contains(t)),i=()=>[...r.view.element.querySelectorAll("button,textarea")],a=r?i().indexOf(t):-1,l=r?W(h).indexOf(r.card.firstChild):-1,s=e.s.all(),d=s.filter(t=>!t.thread.resolved||e.state.H||t.thread.id===z).filter(t=>!e.state.mine||((e,t)=>[e.root,...e.root.replies].some(e=>e.author!==t&&!e.deleted&&Qt(e,tn(t))))(t.thread,e.doc.me));y.setAttribute("aria-pressed",String(e.state.H)),w.setAttribute("aria-pressed",String(e.state.mine));let c=e.s.name();if(E.textContent=c||m(e.doc.me),Ht(e.doc.me,c)!==L){L=Ht(e.doc.me,c);let t=It(e.doc.me,c);t.classList.add("in"),k.replaceChildren(t)}S.setAttribute("aria-checked",String(e.state.l));let p=e.state.t;H&&H.of!==p&&(H=null,p||e.F(null));let u=p&&!H;if(p&&!H){z=O=null;let t=zn(e,p);H={of:p,p:t,card:xt("div",{class:"cd open new",role:"listitem"},t.element)}}H&&(H.p.he(p.label),H.p.oe(!1)),he&&he.id!==z&&(he=null);let f=p&&(p.resolved.range?.startContainer??p.resolved.element),v=f?d.find(t=>{let n=Jn(e,t.thread);return n&&4&f.compareDocumentPosition(n)})?.thread.id??null:null,b=t=>{let n=t.thread,o=n.id===z,r=oo(n).length,i=[r?no(r):"",...n.root.reactions.map(e=>`${e.emoji} ${e.by.length}`)].filter(Boolean).join(" \xb7 "),a=e.E(n)?`${Z(n)} \xb7 \u201c${$t(n.anchor.snapshot,80)}\u201d`:Y(n)?`\u201c${$t(n.anchor.snapshot,80)}\u201d`:n.anchor.quote?`\u201c${$t(n.anchor.quote.exact,80)}\u201d`:t.location.where,l=me.get(n.id);if(!l){let e=xt("span",{class:"sr"}),t=xt("button",{class:"mi",type:"button","data-thread":n.id},e);t.addEventListener("click",e=>{e.stopPropagation(),xe(n.id)}),me.set(n.id,l={b:t,sr:e})}let s,d=l.b,c=[g(n.root),rt(n.root.at,Date.now()),_(n)&&"Moved",a,n.root.text,i].filter(Boolean).join(", ");if(l.sr.textContent!==c&&(l.sr.textContent=c),d.setAttribute("aria-expanded",String(o)),o&&O){if(O.update(n,ye(n,a)),!he){let e=xt("div",{class:"xr",role:"region","aria-label":"Comment thread"},O.element);e.addEventListener("click",e=>{let t=e.target;t.closest(".root>.hdr")&&!t.closest("button")&&ke(!0)}),he={id:n.id,card:xt("div",{role:"listitem"}),xr:e}}s=he.card,s.className="cd open"+(n.resolved?" done":""),J(s,[d,he.xr])}else{let t={q:"card",note:a,rest:i,quote:n.anchor.quote?.exact,moved:_(n),alike:so(e,n)},o=fe.get(n.id);o?o.view.update(n,t):fe.set(n.id,o={card:xt("div",{role:"listitem"}),view:ro(n,ve,t)}),s=o.card,s.className=`cd${n.resolved?" done":""}${ge.has(n.id)?" out":""}`,J(s,[d,o.view.element])}return X.set(s,n.id),H&&n.id===v?[H.card,s]:[s]},x=d.filter(e=>Y(e.thread)),$=d.filter(t=>e.E(t.thread)),M=d.filter(t=>!e.E(t.thread)),C=le||$.some(e=>e.thread.id===z);ae.textContent=e.state.mine?"No comments mention you":$.length?"No open comments on this edition":"No open comments",J(h,[...M.length||H?[]:[ae],...ue(M.filter(e=>!Y(e.thread)),b),...H&&null===v?[H.card]:[],...x.length?[ie("No longer on the page",x.flatMap(b))]:[],...$.length?[pe(C?$.flatMap(b):[],s.filter(t=>e.E(t.thread)&&!t.thread.resolved).length,C)]:[]],!0),te=!0;for(let e of[fe,me])for(let t of e.keys())d.some(e=>e.thread.id===t)||e.delete(t);let A=K();u?H.p.focus():H?.card.contains(t)&&!H.card.contains(A)?H.p.fe()():o&&!O.element.contains(A)?O.element.querySelector("textarea")?.focus({preventScroll:!0}):r&&A!==t?(r.card.isConnected?i()[a]:W(h)[Math.min(l,W(h).length-1)])?.focus({preventScroll:!0}):n&&A!==t&&W(h).find(e=>e.dataset.thread===n)?.focus({preventScroll:!0})}function ye(t,n){let o=!Y(t)&&e.Z(t);return{q:"popover",quote:t.anchor.quote?.exact??null,lost:Y(t)||o?t.anchor.snapshot:null,place:o?Z(t):null,moved:_(t),alike:so(e,t),note:!Kn()||Y(t)||o||t.anchor.quote?null:n}}let be="";function xe(t,n=!1){if(z===t)return ke(!0);let o=R.find(e=>e.id===t);if(o){if(e.keepReplies(),z=be=t,O=ro(o,{...e.K,close:()=>ke(!0)},ye(o)),e.seen(o),we(),e.putReply(t),Vn()||O.element.querySelector("textarea")?.focus({preventScroll:!0}),n&&h.querySelector(".mi.open")?.scrollIntoView({block:"nearest"}),!e.Z(o))return Ee(o,!n);e.state.t&&!e.w()||e.f.ne(o.anchor.view??{}).then(()=>{e.He();let n=R.find(e=>e.id===t);n&&be===t&&z===t&&Ee(n)})}}function ke(t=!1){if(!z)return;let n=z;e.keepReplies(),z=O=null,e.L(null),we(),t&&W(h).find(e=>e.dataset.thread===n)?.focus({preventScroll:!0})}function Ee(t,n=!0){let o=e.resolved.get(t.id),r=o&&!Y(t)?o.element??o.range?.startContainer.parentElement??null:null;n&&r?.scrollIntoView({block:"center",inline:"nearest",behavior:I?"auto":"smooth"}),r&&e.L(t.id)}function Se(t,n){let o=n?n.resolved:e.resolved.get(t.id),r=o?.element??o?.range?.startContainer.parentElement;if(!o||Kn()||t&&(Y(t)||e.Z(t))||!1===r?.checkVisibility?.({visibilityProperty:!0}))return null;let i=t?e.e.querySelector(`.bub[data-thread="${t.id}"]`)?.getBoundingClientRect():void 0,a=o.range?In(o).at(-1):void 0,l=r?.closest("p,li,h1,h2,h3,h4,h5,h6,blockquote,td,th,figcaption,div")?.getBoundingClientRect().right,s=o.element?.getBoundingClientRect(),d=Fn(n?n.anchor:t.anchor,o),c=i?.width?{x:i.right+1,y:i.top+i.height/2,from:"right",bubble:!0}:a?{x:Math.max(a.right,l??0)+4,y:(a.top+a.bottom)/2,from:"right"}:s?{x:s.left+s.width/2,y:s.top,from:"top"}:d&&{x:d.x,y:d.y,from:"right"};return c&&c.x>=0&&c.x<=window.innerWidth-320&&c.y>=0&&c.y<=window.innerHeight?c:null}function $e(e,t,n=!1,...o){let r=xt("button",{class:"mi",type:"button",role:n?"menuitemcheckbox":"menuitem"},e,xt("span",{class:"lb"}),...o,n&&xt("span",{class:"sw","aria-hidden":"true"}),xt("span",{class:"tt","aria-hidden":"true"}));return r.addEventListener("click",e=>{e.stopPropagation(),t(e)}),r}let Le=(e,t,n,o)=>{let r=e.querySelector(".lb");r.textContent!==t&&(r.textContent=t),e.querySelector(".tt").textContent=n,e.setAttribute("aria-description",n),void 0!==o&&e.setAttribute("aria-checked",String(o))},Me=()=>xt("div",{class:"sep",role:"separator"}),Ce=xt("span",{class:"ma"}),Ae=xt("span",{class:"kc"}),Te="",Pe=$e(Ce,function(){let t=xt("input",{class:"input",type:"text",maxlength:"80","aria-label":"Your name"});t.value=e.s.name();let n=xt("div",{class:"ed"},Ce.cloneNode(!0),t),o=(r,i=!1)=>{if(q!==o)return;q=null;let a=t.value.trim();r&&a&&a!==e.s.name()&&e.s.rename(a).then(Je),n.replaceWith(Pe),i&&Pe.focus({preventScroll:!0})};q=o,t.addEventListener("keydown",e=>{e.stopPropagation(),("Enter"===e.key||"Escape"===e.key)&&(e.preventDefault(),o("Enter"===e.key,!0))}),t.addEventListener("blur",()=>o(!0)),Pe.replaceWith(n),t.focus({preventScroll:!0})},!1,Ae);Pe.dataset.item="name";let qe=$e(Nt("copy"),()=>{V(),e.s.copyAll("ai")}),Ne=$e(Nt("lines"),()=>{V(),e.s.copyAll("text")}),Re=xt("div",{class:"subs",role:"group"},xt("div",{},qe,Ne)),De=$e(Nt("copy"),()=>ze("true"!==De.getAttribute("aria-expanded")),!1,xt("span",{class:"chev"},Nt("chev",13))),ze=(e,t=!0)=>{De.setAttribute("aria-expanded",String(e)),Re.classList.toggle("open",e),kt(Re,!e),t&&(e?qe:De).focus({preventScroll:!0})};B=()=>ze(!1,!1),B(),De.addEventListener("keydown",e=>{"ArrowRight"===e.key&&"true"!==De.getAttribute("aria-expanded")&&(e.preventDefault(),ze(!0))}),Re.addEventListener("keydown",e=>{"ArrowLeft"===e.key&&(e.preventDefault(),ze(!1))});let Oe=xt("span",{class:"kc"}),He=$e(Nt("look"),()=>{e.s.setLook(Ho[(Ho.indexOf(e.s.look())+1)%3]),Je()},!1,Oe),Ie=xt("span",{class:"kc"}),Be=$e(Nt("list"),()=>{F(!1),Be.dataset.item="all",j(!0)},!1,Ie),Fe=$e(Nt("hide"),()=>{e.s.setHide(!e.state.hide),Je()},!0),je=$e(Nt("comment"),t=>{let n=!e.state.l&&0===t.detail;e.se(!e.state.l,n),n?F(!1):e.state.l&&Vn()&&(window.clearTimeout(N),N=window.setTimeout(()=>P&&V(),600))},!0,xt("span",{class:"kc ks","aria-hidden":"true"},Pn));je.dataset.item="comment",je.setAttribute("aria-keyshortcuts",Nn);let We=xt("div",{class:"sec",role:"presentation"}),Ke="Only in this browser until you send them.",Ve=Me(),Ue=Me(),Ye=new Map,_e=t=>{let n=Ye.get(t);return n||(n=$e(Rt(t.icon,15),()=>{t.checked||V(),Promise.resolve().then(()=>t.select()).catch(t=>e.ie(t)).finally(()=>P&&Je())},!!t.checked,xt("span",{class:"kc"})),Ye.set(t,n)),n},Ge=-1,Ze=e=>{try{return e()}catch(e){return globalThis.reportError?.(e),""}};function Je(){let t=G(),n=e.s.name(),o=n||m(e.doc.me);if(Le(Pe,o,n?"The name on your comments":"Add a name to show on your comments"),Pe.setAttribute("aria-label",`${o}, ${n?"edit":"add"} your name`),Ae.replaceChildren(n?Nt("edit",13):"Add name"),Ht(e.doc.me,n)!==Te){Te=Ht(e.doc.me,n);let t=It(e.doc.me,n);t.classList.add("in"),Ce.replaceChildren(t)}Le(De,"Copy comments","As Markdown, with where each thread is, or as text"),Le(qe,"As Markdown","With where each thread is, ready for an AI or a document"),Le(Ne,"As text","Just the words");let r=["Automatic","Light","Dark"][Ho.indexOf(e.s.look())];Le(He,"Theme","Automatic follows the page; press to change"),Oe.textContent=r,Le(Be,"All comments","Every thread, and where it is"),Ie.textContent=t?String(t):"",We.textContent=e.addons.Ae()||Ke,!We.isConnected&&u.contains(Pe)&&u.prepend(We);for(let t of e.addons.j){let e,n=Ye.get(t);if(n){try{e=t.checked?.()}catch(e){globalThis.reportError?.(e)}Le(n,Ze(t.label),Ze(t.hint),e),n.querySelector(".kc").textContent=t.count?Ze(t.count):""}}Le(Fe,"Hide comments",e.state.hide?"Comments are hidden on this page until you turn this off":"Hides the comments on this page until you turn this off",e.state.hide),Le(je,"Start commenting",e.state.l?"Turn off to use the page as normal":"Choose any part of the page to comment on it",e.state.l)}function Xe(){Je(),(Ge!==e.addons.ae||!u.contains(Pe))&&(u.replaceChildren(Pe,Ve,De,Re,He,Be,...e.addons.j.map(_e),Ue,Fe,je),Ge=e.addons.ae,Je())}$.addEventListener("click",e=>{if(e.stopPropagation(),P)return F(!1);Xe(),F(!0),0===e.detail&&W()[0]?.focus({preventScroll:!0})});let Qe=e=>{Xe(),F(!0),e&&W().at(-1)?.focus({preventScroll:!0})},nt=()=>{let e=document.activeElement;return e instanceof HTMLElement&&e!==document.body?e:null};e.pageControls={s:()=>{P||(c=nt(),Qe(!0))},list:()=>{e.state.u||(c=nt(),P&&F(!1),j(!0))}};let ot=!1,it=0;r.addEventListener("pointerdown",e=>{ot=!1,window.clearTimeout(it),"mouse"!==e.pointerType&&(it=window.setTimeout(()=>{ot=!0,Qe(!1)},500))});for(let e of["pointerup","pointercancel","pointerleave"])r.addEventListener(e,()=>window.clearTimeout(it));r.addEventListener("contextmenu",e=>{(ot||Vn())&&e.preventDefault()}),r.addEventListener("click",t=>{if(t.stopPropagation(),ot)return void(ot=!1);if(P)return void F(!1);let n=!e.state.l;e.se(n,n&&0===t.detail)}),l.addEventListener("click",e=>{if(e.stopPropagation(),P)return V();Qe(0===e.detail)}),r.addEventListener("keydown",e=>{P||!("ArrowUp"===e.key||"ContextMenu"===e.key||"F10"===e.key&&e.shiftKey)||(e.preventDefault(),e.stopPropagation(),Qe(!0))});for(let e of[r,l,$])e.addEventListener("keydown",e=>{let t=W();!P||!t.length||"ArrowDown"!==e.key&&"ArrowUp"!==e.key||(e.preventDefault(),e.stopPropagation(),("ArrowDown"===e.key?t[0]:t.at(-1))?.focus({preventScroll:!0}))});let at=t=>{let n=t.composedPath();P&&!n.includes(u)&&!n.includes(r)&&!n.includes(l)&&!n.includes($)&&(F(!1),e.state.l&&!e.O(t)&&(e.we(t),t.preventDefault(),t.stopPropagation()))},lt=e=>{if(!P||"touch"===e.pointerType||"pointerout"===e.type&&e.relatedTarget)return;let t=e.composedPath();"pointerover"===e.type&&(t.includes(u)||t.includes(r)||t.includes(l)||t.includes($))?(window.clearTimeout(N),N=0):N||(N=window.setTimeout(()=>{N=0,q||F(!1)},3e3))},st={n:0,label:""},dt=()=>{let{n:t,label:n}=st,o=e.addons.Ae(),a=`Comment${e.state.l?", comment mode on":""}${n?`, ${n}`:t?`, ${t} open`:""}${o?`, ${o}`:""}`;r.getAttribute("aria-label")!==a&&r.setAttribute("aria-label",a),r.setAttribute("aria-pressed",String(e.state.l));let l=n||(t>9?`${t} open`:""),s=[l,o].filter(Boolean).join(" \xb7 ")+(l||o?" \xb7 ":"");i.data!==s&&(i.data=s)},ct=e.addons.subscribe(t=>{dt(),(()=>{for(let[t,n]of x)e.addons.listNotes.has(t)||(x.delete(t),n.row.classList.remove("show"),setTimeout(()=>n.row.remove(),320));for(let[t,n]of e.addons.listNotes){let o=x.get(t);if(!o){let e=xt("span",{}),r=xt("div",{class:"ln"},xt("div",{class:"lw"},xt("div",{class:"ag"},e)));r.dataset.addon=t,o={row:r,words:e,btn:null,note:n},x.set(t,o),b.append(r),requestAnimationFrame(()=>{r.offsetWidth,r.classList.add("show")})}if(o.note=n,o.words.textContent!==n.text&&(o.words.textContent=n.text),n.action&&!o.btn){let t=xt("button",{type:"button"}),n=o;t.addEventListener("click",o=>{o.stopPropagation();let r=n.note.action;r&&(t.disabled=!0,r.run().catch(t=>e.ie(t)).finally(()=>{t.disabled=!1,e.m()}))}),o.btn=t,o.words.after(t)}else!n.action&&o.btn&&(o.btn.remove(),o.btn=null);o.btn&&n.action&&o.btn.textContent!==n.action.label&&(o.btn.textContent=n.action.label)}})(),P&&!q&&(t?Xe():Je())});window.addEventListener("click",at,!0),window.addEventListener("pointerover",lt,!0),window.addEventListener("pointerout",lt,!0);let pt=pn("keydown",t=>{if("Escape"!==t.key||t.isComposing||q||t.composedPath().some(e=>e instanceof Element&&e.matches(".rxp,.pm")))return;let n=t.composedPath()[0];if(n instanceof HTMLTextAreaElement&&n.value.trim())return;let o=n instanceof Element&&n.closest(".cd:not(.open,.new)");if(P&&Re.contains(n))ze(!1);else if(P)V();else if(o&&n!==o.firstChild){if(n instanceof HTMLTextAreaElement)return;o.firstChild.focus({preventScroll:!0})}else{if(!e.state.u||n instanceof HTMLTextAreaElement&&!M.contains(n))return;e.state.t?e.X():z?ke(!0):j(!1,!0)}t.preventDefault(),t.stopPropagation()},!0);return e.registerList(e=>{z!==e&&xe(e,!0)}),{m(n){R=n;let i=G(!1);if(i!==D){if(i){let[e,n]=t[0].classList.contains("on")?t:[t[1],t[0]];n.textContent=i>9?"9+":String(i),o.classList.toggle("w",i>9),e.classList.remove("on"),n.classList.add("on")}r.classList.toggle("has",i>0),D=i}let a=G(!0),l=a?`${i} here \xb7 ${a} ${null!==e.f.slide()?"on other slides":"in other views"}`:"";r.classList.toggle("else",a>0),st={n:i,label:l},dt(),r.classList.toggle("on",e.state.l),P&&!e.state.s&&F(!1),P&&Je();let d=e.state.u;M.classList.toggle("full",Kn()),M.classList.contains("show")!==d&&(M.classList.toggle("show",d),kt(M,!d),kt(s,d)),z&&(!d||!n.some(e=>e.id===z))&&(z=O=null,e.state.L=null),d?we():te=!1},N:function(){let t=z?R.find(e=>e.id===z):null,n=H?.card??(z?h.querySelector(".cd.open"):null),o=H?Se(null,H.of):t&&Se(t),r=n?.getBoundingClientRect(),i=h.getBoundingClientRect();if(!e.state.u||!o||!r?.width||r.top+12<i.top||r.top+12>i.bottom)return void C.classList.remove("show");let a,l=r.left,s=r.top+14;if("right"===o.from&&l-o.x>60){let e=o.x+28,t=o.y>=s?1:-1,n=Math.min(24,Math.abs(o.y-s)/2);a=`M${l} ${s}C${l-24} ${s} ${e} ${s} ${e} ${s+t*n}L${e} ${o.y-t*n}C${e} ${o.y} ${e} ${o.y} ${o.x} ${o.y}`}else{let e=o.y-8,t=l-40,n=e>=s?1:-1,r=Math.min(20,Math.abs(e-s)/2);a=`M${l} ${s}C${l-20} ${s} ${t} ${s} ${t} ${s+n*r}L${t} ${e-n*r}C${t} ${e} ${t} ${e} ${t-r} ${e}L${o.x+8} ${e}C${o.x} ${e} ${o.x} ${e} ${o.x} ${o.y}`}A.setAttribute("d",a),T.setAttribute("r",o.bubble?"0":"4"),T.setAttribute("cx",String(o.x)),T.setAttribute("cy",String(o.y)),C.classList.add("show")},destroy(){ct(),window.removeEventListener("click",at,!0),window.removeEventListener("pointerover",lt,!0),window.removeEventListener("pointerout",lt,!0),window.clearTimeout(N),window.clearTimeout(it),pt(),e.registerList(null),e.pageControls=null,u.remove(),M.remove(),C.remove(),s.remove()}}}var Bo="[data-pipeup-slide]",Fo=["scroll","resize","keyup","click","transitionend","slidechanged"],jo=null,Wo=null,Ko=new Set,Vo=new Set,Uo=e=>{try{e()}catch(e){globalThis.reportError?.(e)}};function Yo(e){let t=null;if(e){t={};let n=0;for(let[o,r]of Object.entries(e))if(!("string"!=typeof r||"slide"===o||o===et||o.length>64||r.length>S)){if(++n>=16)break;t[o]=r}}jo=t;for(let e of Vo)e()}function _o(e){return Ko.add(e),()=>{Ko.delete(e)}}function Go(e){Wo="function"==typeof e?.current&&"function"==typeof e.go?e:null}function Zo(){let e=Kt("data-pipeup-edition")?.trim()??"";return e&&e.length<=S?e:null}var Jo=(e,t)=>null!==t&&(e?.[et]??"")!==t,Xo=()=>{let e=window.Reveal;return"function"==typeof e?.getIndices&&"function"==typeof e.slide?e:null};var Qo,er="#534AB7";function tr(e,t){let n=function(e){let t=/rgba?\(\s*([\d.]+)[\s,]+([\d.]+)[\s,]+([\d.]+)(?:\s*[,/]\s*([\d.]+%?))?\s*\)/.exec(e);if(!t||void 0===t[1]||void 0===t[2]||void 0===t[3])return null;let n=void 0===t[4]?1:t[4].endsWith("%")?parseFloat(t[4])/100:parseFloat(t[4]);return{r:Number(t[1]),g:Number(t[2]),b:Number(t[3]),a:n}}(e);if(n||!e||"transparent"===e)return n;try{if(Qo??=t.createElement("canvas").getContext("2d",{willReadFrequently:!0})??null,!Qo)return null;Qo.clearRect(0,0,1,1),Qo.fillStyle="#000",Qo.fillStyle=e,Qo.fillRect(0,0,1,1);let[n,o,r,i]=Qo.getImageData(0,0,1,1).data;return{r:n,g:o,b:r,a:i/255}}catch{return null}}function nr(e){let t=e=>{let t=e/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4};return.2126*t(e.r)+.7152*t(e.g)+.0722*t(e.b)}var or=[[.92,.25],[.92,.6],[.5,.45]];function rr(e){let t=e.defaultView,n=e.documentElement,o=t?.getComputedStyle(n).colorScheme||"",r=/dark/.test(o)&&(!/light/.test(o)||!0===t?.matchMedia?.("(prefers-color-scheme: dark)").matches),i=t?tr(t.getComputedStyle(n).backgroundColor,e):null;return t&&e.body&&(!i||i.a<.5)&&(i=tr(t.getComputedStyle(e.body).backgroundColor,e)),i&&i.a>=.5?i:r?{r:0,g:0,b:0}:{r:255,g:255,b:255}}function ir(e,t){let n=e.ownerDocument,o=n.defaultView,r="dark"===t;if(!o)return{font:"system-ui, sans-serif",accent:er,dark:r,on:"#fff"};let i=n.documentElement,a=o.getComputedStyle(e).fontFamily||"system-ui, sans-serif",l=(o.getComputedStyle(i).getPropertyValue("--pipeup-accent")||i.style.getPropertyValue("--pipeup-accent")).trim(),s=e.querySelector("a[href]"),d=s?o.getComputedStyle(s).color:"",c=l||"rgb(0, 0, 238)"!==d&&d,p=c?tr(c,n):null,[u,h,f]=r?[27,27,25]:[255,255,255],m=p&&((e,t)=>(Math.max(e,t)+.05)/(Math.min(e,t)+.05))(nr(p),nr({r:.12*p.r+.88*u,g:.12*p.g+.88*h,b:.12*p.b+.88*f}))>=4.5?c:r?"#9A94EE":er,g=tr(m,n);return{font:a,accent:m,dark:r,on:g&&nr(g)>.19?"#111":"#fff"}}function ar(e,t){e.style.setProperty("--pu-font",t.font),e.style.setProperty("--pu-accent",t.accent),e.style.setProperty("--pu-on",t.on),e.classList.toggle("dark",t.dark)}var lr=["pipeup-quote","pipeup-on","pipeup-done"],sr={"pipeup-quote":[[250,227,188,.75],[180,120,0,.35]],"pipeup-on":[[247,212,154,.95],[180,120,0,.5]],"pipeup-done":[[180,178,169,.22],[140,138,130,.2]]};function dr(){return typeof CSS<"u"&&"highlights"in CSS&&typeof Highlight<"u"}var cr=`:not(${mo},:is(${mo}) *){cursor:url("data:image/svg+xml,${encodeURIComponent("<svg xmlns='http://www.w3.org/2000/svg' width='32' height='32'><rect x='7' y='7' width='23' height='23' rx='4' fill='none' stroke='#534AB7' stroke-width='2' stroke-dasharray='4 3'/><path d='M3 2v15l4-3.5 3 6.5 2.5-1.2-3-6.3H15z' fill='#fff' stroke='#2C2C2A' stroke-width='1.2' stroke-linejoin='round'/></svg>")}") 3 2,crosshair!important}`;function pr(){if(dr())for(let e of lr)for(let t of["","-d"])CSS.highlights.delete(e+t)}var ur={light:["#2C2C2A","#FFFFFF"],dark:["#ECEBE6","#1B1B19"]},hr=[["opacity","1"],["filter","none"],["backdrop-filter","none"],["mix-blend-mode","normal"],["transform","none"],["clip-path","none"],["mask-image","none"],["zoom","1"]];function fr(e,t,n){let[o,r]=ur[e].map(e=>{let[o,r,i]=(e=>[1,3,5].map(t=>parseInt(e.slice(t,t+2),16)))(e).map((e,o)=>t*e+(1-t)*n[o]);return nr({r:o,g:r,b:i})});return((e,t)=>(Math.max(e,t)+.05)/(Math.min(e,t)+.05))(o,r)}var mr=4e3,gr="Click where this comment belongs \xb7 Esc to cancel",vr=["ArrowUp","ArrowDown","Home","End","PageUp","PageDown"];function wr(e,t=!1){return io(e,t)?"column":"bubbles"}var yr="Shown here, but not saved yet \u2014 it will be saved with your next change",br=e=>e instanceof Error?e.message.replace(/^pipeup: /,""):"Something went wrong";function xr(e){let t=e.prefs??localStorage,n="pipeup:look",o="auto";try{let e=t.getItem(n);("light"===e||"dark"===e)&&(o=e)}catch{}let r,i=!1,a=!1,l="",s=()=>{let e="auto"!==o?o:function(e){let t=(e===document?Kt("data-pipeup-theme"):e.documentElement.getAttribute("data-pipeup-theme"))??e.body?.getAttribute("data-pipeup-theme");return"light"===t||"dark"===t?t:null}(document);a=function(e,t=!1){let n=e.defaultView;if(!n)return!1;let o=e.documentElement,r=nr(rr(e)),i=(t,n)=>{try{if(e.elementsFromPoint)return e.elementsFromPoint(t,n)}catch{}return e.body?[e.body,o]:[o]},a=0;for(let[t,o]of or){let l=r;for(let r of i(n.innerWidth*t,n.innerHeight*o)){if(r.closest("[data-pipeup-ignore]"))continue;let t=r.getBoundingClientRect();if(t.width*t.height<.25*n.innerWidth*n.innerHeight)continue;let o=tr(n.getComputedStyle(r).backgroundColor,e);if(o&&o.a>=.5){l=nr(o);break}}a+=l}let l=a/or.length;return l<.18||!(l>.32)&&t}(document,a);let t=e??(a?"dark":"light");r=function(e,t,n){let o=e.defaultView?.getComputedStyle(e.documentElement),r=hr.flatMap(([e,t])=>{let n=o?.getPropertyValue(e).trim();return n&&n!==t?[`${e}: ${n}`]:[]}),i=Math.min(1,Math.max(0,parseFloat(o?.opacity??"1")||1)),{r:a,g:l,b:s}=rr(e);return{look:t,source:n,ratio:fr(t,i,[a,l,s]),effects:r}}(document,t,"auto"!==o?"reviewer":e?"author":"page");let n=function(e){return!e.effects.length&&e.ratio>=3?null:`pipeup: the page's styles on <html> (${e.effects.join("; ")||"none"}) change how everything on the page looks, Pipeup included, and can't be undone from inside it. `+(e.ratio<3?"Pipeup's words may be hard to read. ":"")+"Move those styles to <body> or a wrapper."}(r);return n&&n!==l&&console.warn(l=n),t};i="dark"===s();let d=function(e,t,n=document,o=!1){let r=n.createElement("pipeup-root");r.setAttribute("data-pipeup-ignore",""),r.style.cssText="position:fixed!important;inset:0!important;pointer-events:none!important;z-index:2147483647!important;display:block!important;margin:0!important;visibility:visible!important;opacity:1!important;transform:none!important;translate:none!important;scale:none!important;rotate:none!important;filter:none!important;clip-path:none!important;mask:none!important;zoom:1!important;";let i=r.attachShadow({mode:o?"closed":"open"}),a=n.defaultView?.CSSStyleSheet;if(a&&"replaceSync"in a.prototype&&"adoptedStyleSheets"in i){let e=new a;e.replaceSync(t),i.adoptedStyleSheets=[e]}else{let e=n.createElement("style");e.textContent=t,i.append(e)}let l=n.createElement("div");return l.className="layer",l.style.setProperty("--pu-panel","320px"),l.style.setProperty("--pu-pop",`${Wn()}px`),ar(l,e),i.append(l),i.addEventListener("mousedown",e=>{let t=e.target.closest("button:not(:disabled),[tabindex]");if(!t||e.defaultPrevented)return;let n=i.activeElement,o=!1,r=()=>o=!0;t.addEventListener("focus",r,{once:!0}),setTimeout(()=>{t.removeEventListener("focus",r);let e=i.activeElement;!o&&t.isConnected&&e!==t&&(!e||e===n)&&t.focus({preventScroll:!0})})}),n.documentElement.append(r),{element:r,shadow:i,e:l,destroy:()=>r.remove()}}(ir(e.root,i?"dark":"light"),e.styles,document,e.closed);ln(e.field??null,d.shadow),d.e.classList.toggle("flip",i!==a);let c=function(e=document){let t=e.defaultView?.CSSStyleSheet;if(!t||!("replaceSync"in t.prototype)||!("adoptedStyleSheets"in e))return{De(){},I(){},Ee(){},Be(){},remove:()=>pr()};let n=new t,o=null,r=!1,i=1,a=0,l="",s=0,d=()=>n.replaceSync((e=>lr.map(t=>sr[t].map(([n,o,r,i],a)=>`::highlight(${t}${a?"-d":""}){background-color:rgba(${n},${o},${r},${+(i*e).toFixed(3)})}`).join("")).join(""))(i)+(null===o?"":`:root{--pipeup-gutter:${o}px}`)+(r?cr:"")+(a||l?`html{--pipeup-panel:${a}px;width:auto!important;${a?`margin-right:${a}px!important;`:""}${l}}`:""));return d(),e.adoptedStyleSheets=[...e.adoptedStyleSheets,n],{De(e){e!==o&&(o=e,d())},I(e){e!==r&&(r=e,d())},Ee(e){i=e,d()},Be(e,t){e!==a&&(a=e,l=t?"":"transition:margin-right .34s cubic-bezier(.4,0,.2,1)!important",clearTimeout(s),!e&&l&&(s=window.setTimeout(()=>{l="",d()},400)),d())},remove(){clearTimeout(s),e.adoptedStyleSheets=e.adoptedStyleSheets.filter(e=>e!==n),pr()}}}(document);c.Ee(0);let p=!0===window.matchMedia?.("(prefers-reduced-motion: reduce)").matches,u=Vt("data-pipeup-reserve"),h=new Map,f=new Set,v=new WeakSet,y=`pipeup:hide:${e.doc.id}`,x=!1;try{x="1"===t.getItem(y)}catch{}let k={i:null,L:null,H:!1,mine:!1,hide:x,hidden:x,mode:e.host?"bubbles":wr(e.root),t:null,l:!1,paused:!1,u:!1,Fe:!1,s:!1,pinning:!1,I:null,sent:!1},E=xt("div",{class:"toast",role:"status","aria-live":"polite"}),$=null,L=xt("div",{class:"sr","aria-live":"polite"});d.e.append(E,L);let M=null,C=null,A=[],T=null,P=!1,q=0,N=0,R=0,D=0,z=0,O=new Set,H="",I=new Map,B=null,F=function(e,t,n=function(){return{p:e=>e.getBoundingClientRect(),shown:e=>!1!==e.checkVisibility?.({opacityProperty:!0,visibilityProperty:!0}),opacity:e=>parseFloat(getComputedStyle(e).opacity)||0,re:()=>({width:window.innerWidth,height:window.innerHeight})}}()){let o=!0===window.matchMedia?.("(prefers-reduced-motion: reduce)").matches,r=null,i=null,a=[],l=0,s=!1,d=()=>[...e.querySelectorAll(Bo)],c=()=>[...e.querySelectorAll(".slides > section")],p=e=>"string"==typeof e&&e.length>0&&e.length<=S?e:null,u=e=>p(e?.getAttribute("data-pipeup-slide")),h=e=>{let t=c()[e];return u(t?.matches(Bo)?t:t?.querySelector(Bo))??p(String(e+1))};function f(){if(a=[],Wo){let e=null;if(Uo(()=>{let t=Wo.current();Number.isInteger(t)&&t>0&&(e=String(t))}),null!==e)return e}let e=Xo();if(e){let t=null;if(Uo(()=>{t=h(e.getIndices().h)}),null!==t)return t}r&&!r.isConnected&&(r=null);let t=d();r=function(e,t,n){let o=t.re(),r=null,i=0,a=0;for(let l of e){if(!t.shown(l))continue;let e=t.p(l),s=Math.min(e.left+e.width,o.width)-Math.max(e.left,0),d=Math.min(e.top+e.height,o.height)-Math.max(e.top,0);if(s<=0||d<=0)continue;let c=Math.round(s*d),p=t.opacity(l);(c>i||c===i&&(p>a||p===a&&l===n))&&(r=l,i=c,a=p)}return r}(t,n,r)??r;for(let e of function(e,t,n){let o=n&&t.p(n),r=t.re().height;return e.filter(e=>{let n=t.p(e);return!!o&&t.shown(e)&&n.top<r&&n.top+n.height>0&&(n.top>=o.top+o.height||n.top+n.height<=o.top)})}(t,n,r)){let t=u(e);t&&a.push(t)}return u(r)}function m(){l=0,i=f(),t()}let g=()=>{!l&&!s&&(l=requestAnimationFrame(m))},v=e=>function(e,t,n,o=[]){return null!==t?void 0===e?.slide||e.slide===t||o.includes(e.slide):!e||!n||Object.entries(e).every(([e,t])=>"label"===e||"slide"===e||e===et||n[e]===t)}(e,i,jo,a)&&!Jo(e,Zo()),w=new MutationObserver(e=>{e.some(e=>e.target instanceof Element&&e.target.matches(Bo))&&g()});w.observe(e,{subtree:!0,attributes:!0,attributeFilter:["class","style","hidden"]});let y=new MutationObserver(g);y.observe(document.documentElement,{attributes:!0,attributeFilter:["data-pipeup-edition"]});for(let e of Fo)window.addEventListener(e,g,{capture:!0,passive:!0});return Vo.add(g),i=f(),{slide:()=>i,view(e){let t=e instanceof Element?e:e?.parentElement,n=t&&Xo()?c().findIndex(e=>e.contains(t)):-1,o=u(t?.closest(Bo))??(n>=0?h(n):i),r=Zo(),a={...null!==o?{slide:o}:{},...jo,...null!==r?{[et]:r}:{}};return Object.keys(a).length?a:void 0},S:v,edition:Zo,E:e=>Jo(e,Zo()),ne:function(e){if(v(e))return Promise.resolve(!0);let t=e.slide,n=Xo(),r=d().find(e=>u(e)===t),a=/^[1-9]\d{0,5}$/.test(t??"");if(a&&Wo)Uo(()=>Wo.go(Number(t)));else if(a&&n){let e=r?c().findIndex(e=>e===r||e.contains(r)):-1;Uo(()=>n.slide(e>=0?e:Number(t)-1))}else if(Ko.size)for(let t of Ko)Uo(()=>t({...e}));else{if(!r)return Promise.resolve(!1);r.scrollIntoView({block:"start",behavior:o?"auto":"smooth"})}let l=performance.now();return new Promise(t=>{let n=e=>{clearTimeout(o),t(e)},o=setTimeout(()=>n(!1),1e3),r=()=>s?n(!1):(i=f(),v(e)?n(!0):performance.now()-l>=1e3?n(!1):void requestAnimationFrame(r));requestAnimationFrame(r)})},destroy(){s=!0,cancelAnimationFrame(l),w.disconnect(),y.disconnect();for(let e of Fo)window.removeEventListener(e,g,!0);Vo.delete(g)}}}(e.root,()=>{P||(F.edition()!==B&&(B=F.edition(),me()),ge()&&Te())});B=F.edition();let j=!1,W=null,K=0,V=()=>k.l&&!k.u&&Vn(),U=!1,Y="pipeup:held",_=!1;function G(){if(!V()||k.s)return;let e=!1;try{e=null===t.getItem(Y),e&&t.setItem(Y,"1")}catch{e=!_}_=!0,J(e?"Tap what you want to comment on \xb7 Press and hold this button for more":"Tap what you want to comment on",0,!0,!1,{label:"Done",run:()=>_e(!1)}),E.classList.add("tap"),Z()}function Z(){E.classList.toggle("taught",U),E.querySelector(".tw")?.toggleAttribute("aria-hidden",U)}function J(e,t=2400,n=!1,o=!1,r){if(P)return;if(n&&k.s)return void(W=()=>J(e,t,!0,o));j=n,E.replaceChildren(xt("span",{class:"tw"},e)),E.classList.remove("tap","taught"),E.classList.toggle("act",!!r);let i=r?.run;if($=i&&r.D?()=>{$=null,E.classList.remove("show"),i()}:null,r){let e=i?xt("button",{class:"ta",type:"button",...r.D?{"aria-keyshortcuts":"Meta+Z Control+Z"}:{}},r.label):xt("a",{class:"ta",href:r.href,target:"_blank",rel:"noopener noreferrer"},r.label);if(i){let t=$??(()=>{E.classList.remove("show"),i()});e.addEventListener("click",e=>{e.stopPropagation(),t()})}E.append(" ",e)}o?E.setAttribute("aria-hidden","true"):E.removeAttribute("aria-hidden"),E.classList.add("show"),window.clearTimeout(q),t&&(q=window.setTimeout(()=>{$=null,E.classList.remove("show"),q=window.setTimeout(G,320)},t))}let X=(e,t)=>J(e,6e3,!1,!1,{label:"Undo",run:t,D:!0});function Q(){V()||(W=null,j&&(j=!1,window.clearTimeout(q),E.classList.remove("show")))}function ee(e){L.textContent="",cancelAnimationFrame(K),K=requestAnimationFrame(()=>L.textContent=e)}function ne(e){J(br(e))}function oe(e){throw ne(e),e}let re=()=>e.doc.threads().filter(e=>!e.root.deleted),ie=t=>({thread:t,location:Qe(t.anchor,h.get(t.id)??He(t.anchor,e.root),e.root)}),ae=e=>[...d.e.querySelectorAll(`[data-thread="${e}"] .rbox textarea`)].find(e=>!e.closest("[inert]"));function le(){for(let e of d.e.querySelectorAll("[data-thread] .rbox textarea"))e.value.trim()&&I.set(e.closest("[data-thread]").getAttribute("data-thread"),e.value)}function se(e,t=!1){let n=I.get(e),o=ae(e);if(o){if(I.delete(e),n&&!o.value){o.value=n,o.dispatchEvent(new Event("input",{bubbles:!0}));for(let t of d.e.querySelectorAll(`[data-thread="${e}"] .rbox textarea`))t!==o&&t.value&&(t.value="",t.dispatchEvent(new Event("input",{bubbles:!0})))}t&&o.focus({preventScroll:!0})}}function de(e){let t=qe();if(!t?.closest(`[data-thread="${e}"]`))return()=>{};let n=t.closest(".cd")?".mi":t.closest(".th")?".opn":".bub",o=[...d.e.querySelectorAll(`${n}[data-thread]`)],r=o.findIndex(t=>t.getAttribute("data-thread")===e),i=r<0?null:(o[r+1]??o[r-1])?.getAttribute("data-thread");return()=>{if(T?.be())return T.xe();(i&&d.e.querySelector(`${n}[data-thread="${i}"]`)||d.e.querySelector(".launch .mode"))?.focus({preventScroll:!0})}}let ce={get me(){return e.doc.me},picker:()=>fe.picker,people:()=>Xt(e.doc.threads(),e.doc.me),react:async(t,n,o)=>{try{await(o?e.doc.react(t,n):e.doc.unreact(t,n))}catch(e){e instanceof te?J(yr):oe(e)}},reply:async(t,n,o)=>{try{await e.doc.reply(t,n,o),ee("Reply sent"),Ie(o,n)}catch(e){e instanceof te?J(yr):oe(e)}},edit:async(t,n,o)=>{try{await e.doc.edit(t,n,o)}catch(e){e instanceof te?J(yr):oe(e)}},remove:async t=>{let n=e.doc.threads().find(e=>e.id===t||e.root.replies.some(e=>e.id===t)),o=n&&n.root.id===t?de(n.id):()=>n&&ae(n.id)?.focus({preventScroll:!0});try{await e.doc.remove(t),o(),J("Deleted")}catch(e){J(e instanceof te?`Deleted \xb7 ${yr}`:br(e))}},resolve:async t=>{let n=de(t);d.e.classList.add("still"),window.addEventListener("pointermove",()=>d.e.classList.remove("still"),{once:!0});try{await e.doc.resolve(t),J("Resolved \xb7 \u2713 Resolved in All comments shows it again")}catch(e){J(e instanceof te?`Resolved \xb7 ${yr}`:br(e))}k.H||(k.i===t&&(k.i=null),n())},reopen:async t=>{try{await e.doc.reopen(t),J("Reopened")}catch(e){J(e instanceof te?`Reopened \xb7 ${yr}`:br(e))}},notRight:async t=>{try{await e.doc.reopen(t)}catch(e){J(e instanceof te?`Reopened \xb7 ${yr}`:br(e))}ze(t)},pasted:t=>{if(!b(t,Jt()))return"";if(t.author===e.doc.me)return"pasted by you";let n="",o=e=>{e.author===t.author&&e.name&&!w(e.name)&&(n=e.name),e.replies.forEach(o)};return e.doc.threads().forEach(e=>o(e.root)),`pasted by ${n||m(t.author)}`},drop:(e,t)=>X("Reply discarded",()=>{I.set(e,t),ae(e)?se(e,!0):We(e)}),close:()=>{We(null);let e=Pe&&d.e.querySelector(Pe);e?e.focus({preventScroll:!0}):T?.xe(),Pe=""},place:(t,n)=>{let o=e.doc.threads().find(e=>e.id===t);if(!o)return;if("pick"===n)return We(null),k.I=t,void(k.l?J(gr,mr,!0):_e(!0));let r=h.get(t)?.element,i=o.anchor;if("confirmed"===n&&r)try{i=Ne(r,e.root,void 0,F.view(r))}catch{}Ye(e.doc.place(t,i,n),"gone"===n?"Marked as gone":"Place confirmed")},copy:t=>{try{let n=e.doc.threads().find(e=>e.id===t);if(!n)return;zo(it(ie(n),"ai",location.href,Date.now()),d.e).then(()=>J("Thread copied as Markdown for AI"),e=>J(br(e)))}catch(e){J(br(e))}}},pe={look:()=>o,setLook(e){o=e;try{"auto"===e?t.removeItem(n):t.setItem(n,e)}catch{}Bt(s())},copyAll:async e=>{let t=pe.all(),n=at(t,e,{title:document.title,url:location.href,exportedAt:new Date});try{await zo(n,d.e);let o=t.filter(e=>!e.thread.resolved).length;J(`Copied ${o} thread${1===o?"":"s"}${"ai"===e?" as Markdown for AI":""}`)}catch(e){J(br(e))}},ct:()=>{k.H=!k.H,Te()},toggleMine:()=>{k.mine=!k.mine,Te()},setHide:e=>{k.hide=e;try{e?t.setItem(y,"1"):t.removeItem(y)}catch{}Te()},rename:async t=>{let n=t.replace(/\s+/g," ").trim();try{await async function(t){try{return await e.onName(t),!1}catch(n){if(e.doc.name!==t)throw n;return!0}}(n)?J(`New comments will say ${n}, but this browser couldn't remember it`):J(`New comments will say ${n}`)}catch(e){J(br(e))}},name:()=>e.doc.name,all:()=>[...re()].sort(Xn(he)).map(ie)},ue={},he={get addons(){return ue.surface},doc:e.doc,root:e.root,e:d.e,host:d.element,state:k,resolved:h,$:f,K:ce,s:pe,f:F,Z:e=>O.has(e.id),E:e=>F.E(e.anchor.view),He:()=>{ge()&&Te()},G:e=>!k.hidden&&(!e.resolved||k.H||(e=>""!==(d.e.querySelector(`[data-thread="${e}"] .rbox textarea`)?.value.trim()??""))(e.id))&&!O.has(e.id),dt:(e,t)=>{for(let n of re()){let o=h.get(n.id);if(n.anchor.quote&&he.G(n)&&o?.range&&jn(e,t,In(o)))return n}return null},ye:(e,t)=>he.w()&&!k.pinning?he.dt(e,t):null,O:e=>{let t=e.composedPath();return t.includes(d.element)||t.includes(d.shadow)},we:e=>{v.add(e)},it:e=>v.has(e),open:We,pt:e=>ze(e),keepReplies:le,putReply:e=>se(e),L:Ke,Ie:Ve,rt:function(e){if(!k.t)return Ve(e);Object.assign(k.t,e),Te()},repoint:t=>{let n=k.I;n&&(_e(!1),Ye(e.doc.place(n,t,"moved"),"Comment moved"))},w:()=>!M||M.et(),Re:e=>{let t=M?.fe();e(),t?.()},focusDraft:je,_:()=>{let e=k.t?.anchor.view,t=F.S(e)?void 0:e?.slide;J(t?`Finish or cancel your comment on slide ${t} first`:"Finish or cancel this comment first"),je(()=>T?.toDraft())},tt:async function(t,n){let o=k.t;if(o)try{o.sending=!0;let r=await e.doc.comment(o.anchor,t,n);ee("Comment added"),Ie(n,t),k.t=null,me(new Set([r])),We(r,!0)}catch(e){if(e instanceof te)return k.t=null,me(new Set([e.id])),We(e.id,!0),void J(yr);o.sending=!1,oe(e)}},seen:Be,people:()=>Xt(e.doc.threads(),e.doc.me),ge:Ue,se:_e,Y:Ze,F:e=>{M=e},registerList:e=>{C=e},pageControls:null,ue:J,M:ee,st:Q,taps:()=>Ae(),ie:ne,ut:Je,m:Te,X:Ge},fe=ue.surface=new Sn(he,d.shadow,L);function me(t){let n=performance.now(),o=e.doc.threads();for(let r of o){if(t&&!t.has(r.id))continue;if(F.E(r.anchor.view)){h.set(r.id,{state:"orphaned",element:null,range:null}),f.delete(r.id);continue}let o=performance.now()-n<40,i=He(r.anchor,e.root,{fuzzy:o});h.set(r.id,i),o||"orphaned"!==i.state?f.delete(r.id):f.add(r.id)}for(let e of[...h.keys()])o.some(t=>t.id===e)||h.delete(e);0===f.size?(window.clearTimeout(D),D=0):0===D&&(D=window.setTimeout(()=>{D=0,!P&&(me(new Set(f)),Te())},250))}function ge(){let t=new Set,n=null!==F.slide(),o=new Set;for(let r of e.doc.threads()){o.add(r.id);let e=h.get(r.id),i=e?.element,a="attached"===e?.state||"moved"===e?.state;(F.E(r.anchor.view)||n?!F.S(r.anchor.view):!1===i?.checkVisibility?.({visibilityProperty:!0})||!F.S(r.anchor.view)&&(!a||i?.closest("[role=tabpanel]")))&&t.add(r.id)}O=t;for(let e of I.keys())o.has(e)||I.delete(e);let r=`${F.slide()}|${[...t].join()}`;return r!==H&&(H=r,!0)}function ve(e){let t=[],n=[],o=[];for(let r of e){let e=h.get(r.id);r.resolved&&!k.H||!e?.range||O.has(r.id)||(r.id===k.i||r.id===k.L?n.push(e.range):r.resolved?o.push(e.range):t.push(e.range))}k.t&&F.S(k.t.anchor.view)&&n.push(...k.t.ranges),function(e,t){if(dr())for(let n of lr){let o=e[n.slice(7)];CSS.highlights.set(n,new Highlight(...o.filter(e=>!t(e)))),CSS.highlights.set(`${n}-d`,new Highlight(...o.filter(t)))}}({quote:t,on:n,done:o},e=>{let t=we.get(e);return void 0===t&&we.set(e,t=function(e){let t=e.startContainer,n=t instanceof Element?t:t.parentElement,o=n?.ownerDocument.defaultView;if(!n||!o)return!1;let r=n.ownerDocument,i=nr(tr(o.getComputedStyle(n).color,r)??{r:0,g:0,b:0});for(let e=n;e;e=e.parentElement){let t=o.getComputedStyle(e);if("none"!==t.backgroundImage)return i>.4;let n=tr(t.backgroundColor,r);if(n&&n.a>=.5)return i>nr(n)}return i>nr(rr(r))}(e)),t})}let we=new WeakMap,ye=0,be=0,xe=0,ke=0,Ee=0,Se=0,$e=!1,Le=()=>{},Me=!1,Ce=!1;function Ae(){let e=!P&&(k.l||k.s||!!k.i||!!k.t||k.u||Ce),t=document.body;e===Me||!t||(Me=e,e?t.addEventListener("click",Le):t.removeEventListener("click",Le))}function Te(){if(P)return;e.onRender?.();let t=re();if(ge(),k.i&&O.has(k.i)){let e=d.e.querySelector(`[data-thread="${k.i}"] .rbox textarea`)?.value;e&&I.set(k.i,e),k.i=null}k.hidden=k.hide&&!k.l&&!k.u&&!k.Fe&&!k.t,c.I(k.l&&!k.paused),k.hidden&&(k.i=null),k.hidden||function(t){let n=function(e,t){let n=tn(t),o=[];for(let r of e)for(let e of[r.root,...r.root.replies])e.author!==t&&!e.deleted&&Qt(e,n)&&!e.seenBy?.includes(t)&&o.push({thread:r,comment:e});return o}(t,e.doc.me).filter(e=>!Fe.has(e.comment.id));if(!n.length)return;for(let e of n)Fe.add(e.comment.id);let o=[...new Set(n.map(e=>g(e.comment)))];J(`${1===o.length?o[0]:`${o.length} people`} mentioned you in ${n.length} comment${1===n.length?"":"s"}`)}(t),function(e){if(e===be)return;be=e,cancelAnimationFrame(xe);let t=ye,n=performance.now(),o=e?260:200,r=i=>{let a=Math.min(1,(i-n)/o);ye=t+(e-t)*(e?1-(1-a)**3:a*a),c.Ee(ye),a<1&&(xe=requestAnimationFrame(r))};xe=requestAnimationFrame(r)}(k.hidden?0:1),d.e.classList.toggle("hidden",k.hidden),d.e.classList.toggle("listing",k.u),k.t&&V()&&!U&&(U=!0,E.classList.contains("tap")&&Z()),k.l&&Vn()&&(k.u?Q():E.classList.contains("show")||(W??=G));let n=k.u&&!Kn();(function(e){e!==ke&&(ke=e,c.Be(e,p),null!==F.slide()&&(Se=performance.now()+450),window.clearTimeout(Ee),Ee=window.setTimeout(()=>{me(),Te()},p?0:400))})(n?320:0),c.De(u?"column"!==k.mode||k.hidden||n?0:320:null);let o=0;if(null!==F.slide())for(let t of e.root.querySelectorAll(mo)){if(t===d.element)continue;let e=t.getBoundingClientRect();e.top>innerHeight/2&&e.right>innerWidth-ke-380&&e.bottom>innerHeight-48&&(o=Math.max(o,innerHeight-e.top+4))}d.e.style.setProperty("--pu-lift",`${o}px`),ve(t),Ce=!k.hidden&&t.some(e=>!!e.anchor.quote&&!e.resolved&&!O.has(e.id)),Ae();let r=fe.Xe(),i=r.size?t.filter(e=>!r.has(e.anchor.id??"")):t;for(let e of A)e.m(e===A.at(-1)?t:i);T?.m(t),k.hidden||fe.flush()}let Pe="",qe=()=>d.e.getRootNode().activeElement,Re="input,textarea,select,[contenteditable]:not([contenteditable=false])",De=()=>{let e=cn(qe());return!!e&&""!==e.value||!!document.activeElement?.matches(Re)};function ze(e,t=De(),n=qe()){let o=[...d.e.querySelectorAll(`[data-thread="${e}"] .rbox textarea`)].find(e=>!e.closest("[inert]")),r=n?.getAttribute("data-thread");Pe=r?`.${n.classList[0]}[data-thread="${r}"]`:"",!t&&o&&o.focus({preventScroll:!0})}let Oe=()=>!!k.t&&!he.w();function Ie(t,n){let o=e.doc.contacts(),r=new Map;for(let e of t??[]){let t=o.get(e.ref);t?.includes("@")&&r.set(t,n.slice(e.start+1,e.end))}if(!r.size)return;let i=e.doc.name||m(e.doc.me),a=`${i} mentioned you on ${document.title}`,l=`${i} mentioned you in a comment on "${document.title}":\n\n${n}\n\n${location.href}`,s=[...r.values()];J(`Let ${1===s.length?s[0]:`${s.length} people`} know?`,9e3,!1,!1,{label:"Open my email",href:`mailto:${[...r.keys()].join(",")}?subject=${encodeURIComponent(a)}&body=${encodeURIComponent(l)}`})}function Be(t){let n=[t.root,...t.root.replies].filter(t=>t.author!==e.doc.me&&!t.deleted&&Qt(t,tn(e.doc.me))).map(e=>e.id);n.length&&e.doc.seen(n).catch(()=>{})}let Fe=new Set;function je(e){let t=k.t?.anchor.view,n=M?.fe();Promise.resolve(F.S(t)||F.ne(t??{}).then(()=>he.He())).then(()=>{F.S(t)&&e?.(),n?.()})}function We(t,n=!1){if(e.host&&t)return k.t&&!he.w()?he._():(k.t=null,k.L=t,Te(),Je(t),e.host.open(t));if(t&&k.t&&!he.w())return he._();if(t&&k.u&&C)return C(t);if(k.i===t&&!k.t)return t?ze(t):void 0;let o=!n&&De(),r=qe();if(t||(k.Fe=!1),le(),k.i=t,k.sent=!!t&&n,t){k.t=null,Je(t);let n=e.doc.threads().find(e=>e.id===t);n&&Be(n)}Te(),t&&(se(t),n&&T?.be()?T.xe():ze(t,o||Vn(),r))}function Ke(e){k.L!==e&&(k.L=e,e&&e!==k.i&&Je(e),Te())}function Ve(e){Q(),k.t=e,k.i=null,Te()}function Ue(e=""){let t=k.t;t&&(k.t=null,Te(),e&&X("Comment discarded",()=>{k.t&&!he.w()||(Ve(t),T?.adopt(t),M?.fill(e))}))}function Ye(e,t){e.then(()=>ee(t),e=>e instanceof te?J(yr):oe(e))}function _e(e,t=!1){k.l!==e&&(k.l=e,e||(k.I=null),k.paused=!1,W=null,e?(k.i=null,T=No(he)):(Q(),T?.destroy(),T=null,ee("Comment mode off")),Te(),T&&(t&&T.Ne(),k.I?W=()=>J(gr,mr,!0):t?T.be()?W=()=>J(qo,1e4,!0,!0):J("Nothing here to comment on"):W=Vn()?G:()=>J(`Click anything to comment, or Tab between blocks \xb7 Option-click (Alt-click) to pin \xb7 Hold Space to use the page \xb7 This button, ${Pn} or Esc to finish`,mr,!0)))}function Ge(){let t=window.getSelection();k.l&&t&&!t.isCollapsed&&e.root.contains(t.anchorNode)?t.removeAllRanges():k.t&&he.w()?Ue():k.i?We(null):T&&!T.X()&&_e(!1)}function Ze(){k.t?Oe()||Ue():k.i&&We(null)}function Je(e){let t=h.get(e);if(!t||"orphaned"===t.state)return;let n=!1===t.element?.checkVisibility?.(),o=n?t.element.closest("details:not([open])")?.querySelector("summary"):t.element;tt(()=>t.range&&!n?In(t):o?[o.getBoundingClientRect()]:[])}let Xe=new Set;function tt(e){let t=e().slice(0,6).map(()=>d.e.insertBefore(xt("div",{class:"pulse"}),d.e.firstChild)),n={els:t,at:e};Xe.add(n),nt(n),window.setTimeout(()=>{Xe.delete(n);for(let e of t)e.remove()},1300)}function nt(e){let t=e.at();e.els.forEach((e,n)=>t[n]&&Lt(e,t[n],4))}function ot(){le();let e=!!qe()?.closest(".rbox");for(let e of A)e.destroy();A=function(e){return[..."column"===e.state.mode?[co(e),uo(e,{ve:!1})]:[uo(e,{ve:!0})],Do(e),Io(e)]}(he),Te(),k.i&&se(k.i,e)}yt.go=t=>{if(t.startsWith("slide:"))return void F.ne({slide:t.slice(6)});let n=decodeURIComponent(t.slice(6)).replace(/\s+/g," ").toLowerCase(),o=[...e.root.querySelectorAll("p,li,h1,h2,h3,h4,h5,h6,td,th,blockquote,figcaption,dt,dd")].find(e=>(e.textContent??"").replace(/\s+/g," ").toLowerCase().includes(n));o&&(o.scrollIntoView({block:"center",behavior:p?"auto":"smooth"}),window.setTimeout(()=>tt(()=>[o.getBoundingClientRect()]),p?0:450))};let rt={x:0,y:0};let lt=()=>{if(!P){if(function(){let e=d.e.getBoundingClientRect();!Math.round(e.left)&&!Math.round(e.top)||(rt={x:rt.x-Math.round(e.left),y:rt.y-Math.round(e.top)},d.e.style.transform=rt.x||rt.y?`translate(${rt.x}px,${rt.y}px)`:"",(e=>{Un=e})(rt.y))}(),W&&!k.s&&(!E.classList.contains("show")||j)){let e=W;W=null,e()}Se&&(performance.now()>Se&&(Se=0),$e=!0,dispatchEvent(new Event("resize")),$e=!1);for(let e of A)e.N();for(let e of Xe)nt(e);T?.N(),fe.N(),z=requestAnimationFrame(lt)}},st=e=>{let t=e.composedPath()[0];return t instanceof Element&&null!==t.closest(Re)},dt=e=>{if("Escape"===e.key)return e.isComposing?void 0:Ge();if($&&"KeyZ"===e.code&&(e.metaKey||e.ctrlKey)&&!e.altKey&&!e.shiftKey){let t=e.composedPath()[0];if(!st(e)||t instanceof HTMLTextAreaElement&&t.getRootNode()===d.shadow&&""===t.value)return e.preventDefault(),$()}if(function(e){return"KeyC"===e.code&&e.shiftKey&&e.altKey&&!e.metaKey&&!e.ctrlKey&&!e.repeat&&!e.getModifierState("AltGraph")}(e)&&!e.isComposing&&!e.defaultPrevented&&!st(e)){if(e.preventDefault(),T?.lt()&&T.Ne())return;_e(!k.l,!0)}},ct=e=>{if(he.O(e)||v.has(e))return;let t=window.getSelection();t&&!t.isCollapsed||Ze()},pt=window.innerWidth,ut=0;function ht(){let e=k.i?h.get(k.i):k.t?.resolved,t=(e?.range??e?.element)?.getBoundingClientRect();t&&(t.top<0||t.bottom>window.innerHeight)&&window.scrollBy({top:t.top-16,behavior:p?"auto":"smooth"})}let ft=Yn().bottom,mt=!1,gt=0,vt=()=>{let e=window.visualViewport,t=qe();d.e.classList.toggle("kb",!!e&&window.innerHeight-e.height>150&&!!dn(t));let n=Yn().bottom;n<ft-80&&(mt=!0),ft=n,window.clearTimeout(gt),gt=window.setTimeout(()=>{if(!mt)return;mt=!1;let e=Yn(),t=k.i?h.get(k.i):k.t?.resolved,n=(t?.range??t?.element)?.getBoundingClientRect(),o=d.e.querySelector(".pop.show")?.offsetHeight??0;n&&(n.top<e.top||n.bottom+o+24>e.bottom)&&window.scrollBy({top:n.top-e.top-(Vn()?76:60),behavior:p?"auto":"smooth"})},250)},wt=()=>{if($e)return;window.innerWidth!==pt&&(pt=window.innerWidth,window.clearTimeout(ut),ut=window.setTimeout(ht,200)),d.e.style.setProperty("--pu-pop",`${Wn()}px`);let t=e.host?"bubbles":wr(e.root,"column"===k.mode);t!==k.mode?(k.mode=t,ot()):Te()};function bt(){let e=performance.now();0===N&&(R=e),window.clearTimeout(N);let t=Math.min(120,Math.max(0,R+1e3-e));N=window.setTimeout(()=>{N=0,me(),Te()},t)}let kt=[],Et=/^(video|canvas|iframe|img|object|embed|audio)$/,St=new MutationObserver(()=>Ct()),$t=null,Mt=0;function Ct(){let e=function(){let e=new Set;try{for(let t of document.querySelectorAll("dialog:modal"))e.add(t);for(let t of kt)"dialog"===t.localName&&t.isConnected&&t.matches(":modal")&&e.add(t);let t=document.activeElement;for(;t?.shadowRoot?.activeElement;)t=t.shadowRoot.activeElement;for(;t;){let n=t.closest("dialog");n?.matches(":modal")&&e.add(n);let o=t.getRootNode();t=o instanceof ShadowRoot?o.host:null}}catch{}let t=document.fullscreenElement;for(;t?.shadowRoot?.fullscreenElement;)t=t.shadowRoot.fullscreenElement;return t&&t!==document.documentElement&&t!==document.body&&!Et.test(t.localName)&&e.add(t),[...e]}();kt=[...kt.filter(t=>e.includes(t)),...e.filter(e=>!kt.includes(e))];let t=kt.at(-1),n=t&&!(e=>{let t=getComputedStyle(e),n=(e,n="none")=>![n,""].includes(t.getPropertyValue(e));return["transform","translate","scale","rotate","perspective","filter","backdrop-filter"].some(e=>n(e))||n("container-type","normal")||/paint|layout|strict|content/.test(t.contain)||/transform|translate|scale|rotate|perspective|filter/.test(t.willChange)})(t)?t:document.documentElement;St.disconnect();for(let e of kt)e.getRootNode()!==document&&St.observe(e,{attributeFilter:["open"]});if(d.element.parentNode===n)return;let o=!d.element.isConnected;n.append(d.element),o&&$t?.isConnected&&performance.now()-Mt<100&&$t.focus({preventScroll:!0})}let At=new MutationObserver(e=>{e.some(e=>e.removedNodes.length)&&Ct(),!e.every(e=>d.element.contains(e.target)||(e=>"childList"===e.type&&e.addedNodes.length+e.removedNodes.length>0&&[...e.addedNodes,...e.removedNodes].every(e=>e===d.element))(e))&&bt()}),Tt=e=>{let t=e.key,n=t=>e.composedPath().some(e=>e instanceof Element&&e.matches(t));("Enter"===t||" "===t||vr.includes(t)&&n(".menu,.all,.pm")||t.startsWith("Arrow")&&n(".menu"))&&e.stopPropagation()};for(let e of["keydown","keyup","keypress"])d.e.addEventListener(e,Tt);let Pt=e=>e===d.element,qt=e=>{"focusin"===e.type&&Ct(),Pt(e.target)&&("focusin"===e.type&&($t=e.composedPath()[0]),Mt="focusin"===e.type?1/0:performance.now()),("focusin"===e.type?Pt(e.target)&&!Pt(e.relatedTarget):Pt(e.relatedTarget)&&!Pt(e.target))&&e.stopImmediatePropagation()},Nt=null,Rt=!1;d.shadow.addEventListener("keydown",e=>{e===Nt&&(Rt=!0)});let Dt=e=>{if(e===Nt||!(e=>{let t=e.composedPath();if(!t.includes(d.element))return!1;let n=t[0];if(n instanceof Element&&n.matches(Re))return!0;let o=e.key,r=e=>t.some(t=>t instanceof Element&&t.matches(e));return["Escape","Tab","Enter"," "].includes(o)||vr.includes(o)&&r(".menu,.all,.pm,.rxp")||o.startsWith("Arrow")&&r(".menu,.rxp")})(e)||(e.stopImmediatePropagation(),"keydown"!==e.type))return;let t=Nt=new KeyboardEvent("keydown",{key:e.key,code:e.code,location:e.location,repeat:e.repeat,isComposing:e.isComposing,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,altKey:e.altKey,metaKey:e.metaKey,bubbles:!0,cancelable:!0,composed:!1});Rt=!1,e.composedPath()[0].dispatchEvent(t),Nt=null,t.defaultPrevented&&e.preventDefault(),Rt&&dt(e)},zt=e=>e.stopPropagation(),Ot=["pointerdown","mousedown","touchstart","click","focusin","focusout"];for(let e of["focusin","focusout"])window.addEventListener(e,qt,!0);for(let e of Ot)d.element.addEventListener(e,zt);for(let e of["keydown","keyup","keypress"])document.addEventListener(e,Dt,!0);document.addEventListener("fullscreenchange",Ct);let Ht=()=>kt.length&&Ct();for(let e of["transitionend","animationend"])window.addEventListener(e,Ht,!0);window.addEventListener("keydown",dt),window.addEventListener("click",ct),window.addEventListener("resize",wt);for(let e of["resize","scroll"])window.visualViewport?.addEventListener(e,vt);At.observe(e.root,{subtree:!0,childList:!0,characterData:!0});let It=0,Bt=t=>{let n="dark"===t;d.e.classList.toggle("flip",n!==a),n!==i&&(i=n,window.clearTimeout(It),d.e.classList.add("fading"),It=window.setTimeout(()=>{ar(d.e,ir(e.root,t)),d.e.classList.remove("fading")},170))},Ft=()=>{Bt(s()),we=new WeakMap,ve(re())},jt=0,Wt=()=>{jt||(jt=window.setTimeout(()=>{Ft(),jt=window.setTimeout(()=>{jt=0,Ft()},450)},150))},Ut=new MutationObserver(e=>{e.some(e=>"open"===e.attributeName&&"dialog"===e.target.localName)&&Ct(),!e.every(e=>e.target===d.element)&&Wt()});Ut.observe(document.documentElement,{attributes:!0,subtree:!0});let Yt=window.matchMedia?.("(prefers-color-scheme: dark)");Yt?.addEventListener?.("change",Wt);let _t=new ResizeObserver(bt);_t.observe(e.root);let Gt=e.doc.onChange((e,t,n)=>{fe.Ue(t,n),me(),Te()});return me(),ot(),Ct(),z=requestAnimationFrame(lt),{ctx:he,appearance:()=>r,goTo(e){let t=h.get(e);(t?.element??t?.range?.startContainer.parentElement)?.scrollIntoView({block:"center",behavior:p?"auto":"smooth"}),Ke(e)},destroy(){P=!0,cancelAnimationFrame(z),cancelAnimationFrame(xe),cancelAnimationFrame(K),F.destroy(),window.clearTimeout(Ee),window.clearTimeout(q),window.clearTimeout(ut),window.clearTimeout(N),window.clearTimeout(D),At.disconnect(),yt.go=void 0,_t.disconnect(),Ut.disconnect(),Yt?.removeEventListener?.("change",Wt),window.clearTimeout(jt),window.clearTimeout(It),Gt(),window.removeEventListener("keydown",dt),ln(null,null),window.removeEventListener("click",ct);for(let e of["focusin","focusout"])window.removeEventListener(e,qt,!0);for(let e of["keydown","keyup","keypress"])document.removeEventListener(e,Dt,!0);document.removeEventListener("fullscreenchange",Ct);for(let e of["transitionend","animationend"])window.removeEventListener(e,Ht,!0);St.disconnect(),window.removeEventListener("resize",wt);for(let e of["resize","scroll"])window.visualViewport?.removeEventListener(e,vt);window.clearTimeout(gt),document.body?.removeEventListener("click",Le),T?.destroy();for(let e of A)e.destroy();fe.destroy(),c.remove(),d.destroy()}}}var kr=(e,t,n)=>Object.assign(new Error(`pipeup: ${t}`,{cause:n}),{code:e}),Er=null;function Sr(e={}){if(Mn)return Mn.mount(e);if(!function(){if(Mn)return!0;let e=globalThis,t=e.pipeupAddons;if(Array.isArray(t))for(let e of t)An(e);else if(t&&"object"==typeof t&&t.push!==An)return!1;return e.pipeupAddons={push:An},!0}())return Promise.reject(kr("another-copy","another copy of Pipeup owns the add-on queue. Remove one script."));if(Er)return Er;let t=async function(e,t){Wt({...Object.fromEntries(Object.entries(e.settings??{}).filter(([e])=>e.startsWith("data-pipeup-"))),"data-pipeup-doc":e.doc,"data-pipeup-layout":e.layout,"data-pipeup-theme":e.theme,"data-pipeup-select":e.select,"data-pipeup-control":e.control});let n,o,r=Kt("data-pipeup-doc"),{id:a,key:l}=r?await Z(r):{id:`page-${i(location.origin+location.pathname)}`,key:null},s=!1;if(e.store)n=e.store,o=await se(n);else try{let e=de.open();n=await function(e){return new Promise((t,n)=>{let o=setTimeout(()=>n(new Error("timed out")),4e3);e.then(t,n).finally(()=>clearTimeout(o))})}(e).catch(t=>{throw e.then(e=>e.close(),()=>{}),t}),o=await se(n)}catch{n=new ae,s=!0,o=await se(n)}let d=e.name?.trim();d&&d!==o.name&&(o={...o,name:d},await n.saveProfile(o)),e.store||navigator.storage?.persist?.().catch(()=>{});let c=await ne.open({doc:a,key:l,store:n,identity:o.identity,name:o.name});Go(e.slides??null);let p,u=new Set,h=new Set,f="",m=()=>queueMicrotask(()=>{if(!p||v)return;let e={commentMode:p.ctx.state.l,name:c.name},t=JSON.stringify(e);if(t!==f){f=t;for(let t of[...u])try{t({...e})}catch(e){globalThis.reportError?.(e)}}}),g=async e=>{c.name=e,o={...o,name:e},m(),await n.saveProfile(o)},v=!1;try{p=xr({doc:c,styles:':host{all:initial;direction:ltr;unicode-bidi:normal}*{box-sizing:border-box}button{appearance:none;font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}svg{display:block}.layer{all:initial;direction:ltr;unicode-bidi:normal;display:block;position:fixed;inset:0;pointer-events:none;font:13px/1.5 var(--pu-font,system-ui,sans-serif);color:var(--k);--k:#2C2C2A;--mu:#5F5E5A;--fa:#6B6A64;--ln:#E5E3DA;--ru:#ECEAE2;--so:#FAFAF7;--su:#FFFFFF;--ho:#F1EFE8;--as:color-mix(in srgb,var(--pu-accent,#534AB7) 12%,transparent);--sh:0 8px 28px rgba(44,44,42,.1);--in:.26s;--mv:.34s;--out:.2s;--pl:1.2s;--eo:cubic-bezier(.22,.61,.36,1);--eio:cubic-bezier(.4,0,.2,1);--ei:cubic-bezier(.4,0,1,1);--pu-text:var(--k);--pu-muted:var(--mu);--pu-faint:var(--fa);--pu-line:var(--ln);--pu-surface:var(--su);--pu-soft:var(--so);--pu-hover:var(--ho);--pu-shadow:var(--sh);--pu-ease:var(--eo)}.layer{transition:opacity .24s var(--eo)}.layer.fading{opacity:0;transition-duration:.16s;transition-timing-function:var(--ei)}.layer.dark{--k:#ECEBE6;--mu:#B4B2A9;--fa:#9A9892;--ln:#3A3936;--ru:#34332F;--so:#22221F;--su:#1B1B19;--ho:#2C2C29;--sh:0 8px 28px rgba(0,0,0,.45)}.layer.hidden .bub,.layer.hidden .col,.layer.hidden .pop,.layer.hidden .tip,.layer.hidden .mark,.layer.hidden .selbar{opacity:0!important;pointer-events:none!important}.layer.kb :is(.launch,.toast){opacity:0!important;pointer-events:none!important;transition:opacity var(--out) var(--ei)!important}.tx{font-size:14px;line-height:1.5;color:var(--k);white-space:pre-wrap;overflow-wrap:anywhere}.tx.del,.rest,.ctx,.ago{color:var(--fa)}.rest,.ago{font-size:12px}.rest{display:block;margin-top:3px}.hdr{position:relative;display:flex;align-items:center;gap:7px;min-height:22px}.who{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600;color:var(--k)}.ago{flex:none;white-space:nowrap}.ago:before{content:"\\b7";margin-right:6px}.root>.tx,.it>.tx,.root>.ctx{margin-top:2px}.ctx[hidden]{display:none}.ctx{font-size:12px;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cd>.thread .tx,.clamp{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.th.long .root>.tx{max-height:var(--full);overflow:hidden;transition:max-height var(--mv) var(--eio)}.th.long:not(.on) .root>.tx{max-height:84px;mask-image:linear-gradient(#000 calc(100% - 21px),transparent)}.mr{display:grid;grid-template-rows:0fr;opacity:0;font-size:12px;color:var(--pu-accent);text-align:end;transition:grid-template-rows var(--mv) var(--eio),opacity var(--in) var(--eo)}.mr>span{min-height:0;overflow:hidden}.th.long:not(.on) .mr{grid-template-rows:1fr;opacity:1}.tx a{color:var(--pu-accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}.acts{margin-left:auto;display:flex;flex:none;transition:opacity var(--in) var(--eo)}.th:not(.on):not(:hover):not(:focus-within) .acts,.cd:not(.open):not(:hover):not(:has(:focus-visible,.pm)) .acts,.still .th:not(.on):not(:has(:focus-visible)) .acts,.still .cd:not(.open):not(:has(:focus-visible,.pm)) .acts{opacity:0;pointer-events:none}.th:not(.on) .acts,.cd:not(.open) .acts{position:absolute;right:0;padding-left:16px;background:linear-gradient(90deg,transparent,var(--bg) 14px);transition:opacity var(--in) var(--eo),pointer-events 0s var(--in);transition-behavior:allow-discrete}.th.on .rest{display:none}.pm{position:absolute;right:0;top:100%;z-index:5;display:flex;flex-direction:column;min-width:150px;padding:4px;border:1px solid var(--ln);border-radius:10px;background:var(--su);box-shadow:var(--sh)}.pm.in{animation:pu-in var(--in) var(--eo) both}.pm button{padding:6px 10px;border-radius:7px;text-align:left;font-size:13px;transition:background-color .2s var(--eo),color .2s var(--eo)}.pm button:hover,.pm button:focus-visible{background:var(--ho)}.pm .dl{color:#c9402f}.dark .pm .dl{color:#f08a7e}.edit{margin-top:2px}.ib{width:24px;height:22px;display:grid;place-items:center;border-radius:6px;color:var(--mu);transition:background-color .2s var(--eo),color .2s var(--eo)}.ib:hover,.ib:focus-visible{background:var(--ho);color:var(--k)}.rps,.rbox{padding-left:14px}.rps .it{padding-top:8px}.more{display:grid;grid-template-rows:1fr;transition:grid-template-rows var(--mv) var(--eio)}.more>div{overflow:hidden;min-height:0}.th:not(.on) .more{grid-template-rows:0fr}.row{position:relative;padding-top:6px}.line{display:flex;align-items:center;gap:6px;padding:3px 12px;border:1px solid var(--ln);border-radius:16px;cursor:text;transition:border-color var(--in) var(--eo),box-shadow var(--in) var(--eo)}.line:hover{border-color:var(--mu)}.line:focus-within{border-color:var(--pu-accent);box-shadow:0 0 0 1px var(--pu-accent)}.input{flex:1;min-width:0;height:24px;display:block;border:0;outline:none;resize:none;overflow:hidden;font:inherit;font-size:14px;line-height:1.5;padding:1px 0;color:var(--k);background:transparent}.input::placeholder{color:var(--fa);opacity:1}.bts{display:flex;justify-content:flex-end;gap:4px;max-height:0;opacity:0;overflow:hidden;transition:max-height var(--in) var(--eo),opacity var(--in) var(--eo),padding var(--in) var(--eo)}.row:focus-within .bts,.row.has .bts{max-height:40px;opacity:1;padding-top:4px}.bts button{padding:2px 10px;border-radius:14px;font-size:13px;font-weight:600;color:var(--pu-accent);transition:background-color .2s var(--eo),color .2s var(--eo)}.cnl:hover,.cnl:focus-visible{background:var(--as)}.send{background:var(--pu-accent);color:var(--pu-on,#fff)!important}.send:not(.show){background:var(--ru);color:var(--fa)!important;cursor:default}.ed{display:flex;gap:10px;align-items:center;min-height:34px;padding:6px 10px}.ed .input,.nf .input{font-size:13px;height:22px;border-bottom:1px solid var(--ln)}.ed .input:focus,.nf .input:focus{border-bottom-color:var(--pu-accent)}.av{flex:none;display:grid;place-items:center;width:22px;height:22px;border-radius:32%;font-size:12px;font-weight:600;line-height:1;opacity:0;transform:scale(.85);transition:opacity var(--in) var(--eo),transform var(--in) var(--eo)}.av.in{opacity:1;transform:none}.av svg{width:122%;height:122%;stroke-width:1.3}.av{--av-l:92%;--av-d:30%;--s:60%;background:hsl(var(--h) var(--s) var(--av-l));color:hsl(var(--h) var(--s) var(--av-d))}.dark .av{--av-l:20%;--av-d:78%}.av.ai{position:relative;border-radius:50%;background:var(--su);color:var(--pu-accent);font-size:9px;letter-spacing:.02em}.av.ai:before{content:"";position:absolute;inset:3px;border-radius:50%;border:1.5px solid var(--pu-accent);pointer-events:none}.refs{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px;white-space:normal}.refs .ref{display:inline-flex;align-items:center;gap:5px;max-width:160px;padding:1px 9px;border:1px solid var(--ln);border-radius:999px;background:var(--so);color:var(--mu);font:inherit;font-size:11.5px;line-height:1.6;text-decoration:none;cursor:pointer;transition:background-color .2s var(--eo),color .2s var(--eo),border-color .2s var(--eo)}.refs .ref:hover,.refs .ref:focus-visible{background:var(--as);color:var(--pu-accent);border-color:var(--pu-accent)}.ref span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rxp{position:fixed;width:320px;height:340px;border-radius:12px;overflow:hidden;pointer-events:none;opacity:0;transform:translateY(4px);transition:opacity var(--in) var(--eo),transform var(--in) var(--eo)}.rxp.show{opacity:1;transform:none;pointer-events:auto}.mn{border-radius:4px;padding:0 2px;background:var(--as);color:var(--pu-accent)}.mn.me{font-weight:600}.mnl{position:absolute;left:0;bottom:100%;margin:0 0 4px;padding:4px;list-style:none;min-width:180px;max-width:100%;border:1px solid var(--ln);border-radius:10px;background:var(--su);box-shadow:var(--sh);opacity:0;transform:translateY(4px);pointer-events:none;z-index:4;transition:opacity var(--in) var(--eo),transform var(--in) var(--eo)}.mnl.show{opacity:1;transform:none;pointer-events:auto}.mnl li{display:flex;align-items:baseline;gap:8px;padding:5px 8px;border-radius:6px;font-size:13px;color:var(--k);cursor:pointer}.mnl li small{font-size:11px;color:var(--fa)}.mnl li.on,.mnl li:hover{background:var(--as);color:var(--pu-accent)}.dlg{position:fixed;left:50%;top:18vh;width:min(380px,calc(100vw - 32px));padding:16px 18px;border:1px solid var(--ln);border-radius:14px;background:var(--su);box-shadow:var(--sh);color:var(--k);opacity:0;transform:translate(-50%,6px);pointer-events:none;transition:opacity var(--in) var(--eo),transform var(--in) var(--eo)}.dlg.show{opacity:1;transform:translate(-50%);pointer-events:auto}.toast.act{display:flex;align-items:center}.toast.show .ta{pointer-events:auto}.toast .ta{transition:visibility 0s .3s}.toast:not(.show) .ta{visibility:hidden}.toast.show .ta{transition-delay:0s}.toast.tap{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;background:var(--pu-accent);border-color:var(--pu-accent);color:var(--pu-on,#fff);font-size:15px;font-weight:500;transition:opacity .3s var(--eo),transform .3s var(--eo),grid-template-columns var(--mv) var(--eio),padding var(--mv) var(--eio)}.toast.tap .tw{min-width:0;max-height:4em;overflow:hidden;text-wrap:balance;transition:opacity var(--out) var(--ei),max-height var(--mv) var(--eio)}.toast.tap .ta{color:inherit;font-weight:600}.toast.tap.taught{grid-template-columns:minmax(0,0fr) auto;padding-left:4px}.toast.tap.taught .tw{opacity:0;max-height:0}.ta{margin-left:4px;color:var(--pu-accent);text-decoration:underline;text-underline-offset:2px}.rx .n{font-size:11px;font-variant-numeric:tabular-nums}.rx.mine{background:var(--as);color:var(--pu-accent);border-color:var(--pu-accent)}.rx:disabled{cursor:default;opacity:.7}.rx{-webkit-touch-callout:none;-webkit-user-select:none}.rx.new,.rxq.new{animation:pu-in var(--mv) var(--eo) backwards}.rxs{align-items:center}.rxq{display:inline-flex;gap:2px}.rxo{padding:2px 5px;border-radius:8px;font-size:16px;line-height:1.3;transition:background-color .2s var(--eo)}.rxo:hover,.rxo:focus-visible,.rxo[aria-pressed=true]{background:var(--as)}.refs .ref{position:relative}.ref .rc{position:absolute;left:0;top:calc(100% + 6px);z-index:3;width:max-content;max-width:min(240px,70vw);padding:6px 9px;border:1px solid var(--ln);border-radius:8px;background:var(--su);box-shadow:var(--sh);color:var(--k);font-size:12px;line-height:1.45;white-space:normal;text-align:left;overflow:visible;opacity:0;visibility:hidden;transform:translateY(-3px);pointer-events:none;transition:opacity .2s var(--eo),transform .2s var(--eo),visibility 0s .2s}.ref:hover .rc,.ref:focus-visible .rc,.ref.held .rc{opacity:1;visibility:visible;transform:none;transition-delay:0s}.ref .sl{width:10px;height:7px;border:1.3px solid currentColor;border-radius:2px;flex:none}.seen{display:flex;align-items:center;gap:6px;padding:6px 0 0 14px;font-size:12px;color:var(--fa)}.cm{display:flex;align-items:center;gap:6px;max-height:20px;padding-top:4px;overflow:hidden;font-size:12px;color:var(--fa)}.hdr .cm{display:inline-grid;padding:0;flex:none}.cm.new{animation:pu-in var(--mv) var(--eo) both}.cm.out{animation:cm-out var(--mv) var(--eo) forwards}@keyframes cm-out{to{opacity:0;max-height:0;padding-top:0}}.seen button{margin-left:auto;padding:0 6px;border:0;border-radius:6px;background:none;color:var(--fa);font:inherit;cursor:pointer;transition:color .2s var(--eo),background-color .2s var(--eo)}.seen button:hover,.seen button:focus-visible{color:var(--pu-accent);background:var(--as)}.seen i{width:12px;height:12px;border-radius:50%;border:1.5px solid var(--pu-accent);flex:none}.c0{--h:0}.c1{--h:25}.c2{--h:50}.c3{--h:130}.c4{--h:175}.c5{--h:215}.c6{--h:270}.c7{--h:330}.c8{--h:28;--s:35%}.c9{--h:220;--s:8%}button.me{flex:none;display:grid;place-items:center}button.me>.av{grid-area:1/1}.you{flex:1;display:grid;min-width:0;min-height:22px;font-size:12px;color:var(--fa)}.you .nm{font-size:13px;font-weight:600;color:var(--k)}.you>*{grid-area:1/1;display:flex;align-items:center;min-width:0;transition:opacity var(--in) var(--eo),transform var(--in) var(--eo)}.say{white-space:pre;overflow:hidden}.nm{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.say button{flex:none}.say button{color:var(--mu);text-decoration:underline;text-decoration-color:var(--ln);text-underline-offset:2px;transition:color .2s var(--eo)}.say button:hover,.say button:focus-visible{color:var(--pu-accent)}.nf{opacity:0;transform:translateY(-4px);pointer-events:none}.nf .input{font-size:13px;height:24px}.you.naming .nf{opacity:1;transform:none;pointer-events:auto}.you.naming .say{opacity:0;pointer-events:none}.bub{position:fixed;left:0;top:0;width:20px;height:20px;margin:-20px 0 0 -2px;border-radius:50% 50% 50% 0;background:var(--pu-accent);border:2px solid var(--su);box-shadow:0 1px 4px #0003;pointer-events:auto;opacity:0;transform:translateY(-6px) scale(.9);transform-origin:2px 20px;transition:opacity var(--out) var(--ei),transform var(--out) var(--ei)}.bub.in{opacity:1;transform:none;transition:opacity var(--in) var(--eo),transform var(--in) var(--eo)}.bub.in:hover,.bub.on{transform:scale(1.18)}.bub.done{background:var(--fa)}.bub.ghost{pointer-events:none}.tip,.pop,.menu,.all,.xp,.toast,.selbar,.namebar,.tt,.rxp{background:var(--su);border:1px solid var(--ln);box-shadow:var(--sh)}.tip{position:fixed;max-width:260px;border-radius:10px;padding:7px 10px;opacity:0;transform:translateY(3px);transition:opacity .22s var(--eo),transform .26s var(--eo)}.tip.show{opacity:1;transform:none;pointer-events:auto;cursor:pointer;transition:opacity .22s var(--eo),transform .26s var(--eo),left var(--mv) var(--eio),top var(--mv) var(--eio)}.pop{position:fixed;width:var(--pu-pop);border-radius:12px;padding:8px 10px 10px;pointer-events:none;opacity:0;transform:translateY(6px) scale(.98);transition:opacity var(--out) var(--ei),transform var(--out) var(--ei)}.pop.show{opacity:1;transform:none;pointer-events:auto;transition:opacity var(--in) var(--eo),transform var(--mv) var(--eo)}.pop.show.glide{transition:opacity var(--in) var(--eo),transform var(--mv) var(--eo),left var(--mv) var(--eio),top var(--mv) var(--eio)}.mark{position:fixed;border:2px solid color-mix(in srgb,var(--pu-accent) 50%,transparent);background:var(--as);border-radius:8px;opacity:0;transition:opacity .3s var(--eo)}.mark.show{opacity:1}.pulse{position:fixed;border:2px solid var(--pu-accent);border-radius:8px;background:var(--as);animation:pu-pulse var(--pl) var(--eio) forwards}@keyframes pu-pulse{0%{opacity:0;transform:scale(.985)}35%{opacity:.85;transform:scale(1)}to{opacity:0;transform:scale(1.02)}}.col{position:fixed;left:0;top:0;pointer-events:none;transition:opacity var(--in) var(--eo)}.th,.cd{--bg:var(--su);background:var(--bg);opacity:var(--o,1)}.th{position:absolute;left:0;right:0;top:0;padding:8px 10px 10px;border:1px solid var(--ln);border-radius:10px;pointer-events:auto;cursor:pointer;transition:transform var(--mv) var(--eio),box-shadow var(--in) var(--eo),border-color var(--in) var(--eo),opacity var(--in) var(--eo)}.th.hot{border-color:var(--mu)}.th.on{border-color:transparent;box-shadow:var(--sh);cursor:default}.th.dim{--o:.45}.th.resolved:not(.on):not(.hot){--o:.6}.th.lost .ctx{white-space:normal}.th.wait{opacity:0!important;pointer-events:none}.th:is(.out,.hop){opacity:0!important;pointer-events:none;transition:opacity var(--out) var(--ei)}.th:has(.opn:focus-visible){outline:2px solid var(--pu-accent);outline-offset:2px}.selbar{position:fixed;display:flex;border-radius:10px;padding:2px;opacity:0;transform:translateY(4px);pointer-events:none;transition:opacity var(--in) var(--eo),transform .3s var(--eo)}.selbar.show{opacity:1;transform:none;pointer-events:auto}.selbar button{width:32px;height:30px;display:grid;place-items:center;border-radius:8px;color:var(--pu-accent);transition:background-color .2s var(--eo)}.selbar button:hover,.selbar button:focus-visible{background:var(--as)}.pick{position:fixed;left:0;top:0;border:2px solid color-mix(in srgb,var(--pu-accent) 70%,transparent);background:color-mix(in srgb,var(--pu-accent) 6%,transparent);border-radius:8px;pointer-events:none;opacity:0;transition:opacity var(--out) var(--ei),border-color var(--out) var(--ei),border-width var(--out) var(--ei),box-shadow var(--out) var(--ei)}.pick.show{opacity:1;transition-duration:var(--in);transition-timing-function:var(--eo)}.pick.show.glide{transition-property:all;transition-duration:var(--mv);transition-timing-function:var(--eio)}.pick.on{border-color:var(--pu-accent)}.pkw{position:fixed;left:0;top:0;border:2px dashed color-mix(in srgb,var(--pu-accent) 70%,transparent);border-radius:8px;pointer-events:none;opacity:0;transition:opacity var(--out) var(--ei)}.pkw.show{opacity:.6;transition:opacity var(--in) var(--eo)}.draft{transition:opacity var(--in) var(--eo)}.draft.wait:not(:focus-within){opacity:.6}.pick.kf{border:3px solid var(--pu-accent);box-shadow:0 0 0 2px var(--su)}.km{position:fixed;left:0;top:0;pointer-events:none;outline:none}.sr,.mn-sr,.hh{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.namebar{position:fixed;left:0;top:0;display:flex;align-items:center;gap:2px;max-width:calc(100% - 16px);padding:2px 2px 2px 10px;border-radius:10px;font-size:12px;color:var(--mu);white-space:nowrap;pointer-events:none;opacity:0;transform:translateY(4px);transition:opacity var(--out) var(--ei),transform var(--out) var(--ei)}.namebar.show{opacity:1;transform:none;pointer-events:auto;transition:opacity var(--in) var(--eo),transform .3s var(--eo)}.namebar.show.glide{transition-property:all;transition-duration:var(--mv);transition-timing-function:var(--eio)}.namebar:hover:not(:has(.nb:hover)){opacity:.15}.namebar .lbl{margin-right:6px;max-width:260px;overflow:hidden;text-overflow:ellipsis}.namebar .nb{padding:4px;display:grid;place-items:center;border-radius:7px;transition:background-color .2s var(--eo),color .2s var(--eo)}.namebar .nb:hover,.namebar .nb:focus-visible{background:var(--ho);color:var(--k)}.namebar .nb.on{background:var(--as);color:var(--pu-accent)}.namebar .nb[hidden]{display:none}.launch{position:fixed;right:0;bottom:var(--pu-lift);display:flex;flex-direction:row-reverse;align-items:center;border-top-left-radius:10px;pointer-events:auto;transform-origin:100% 100%;background:color-mix(in srgb,var(--su) 62%,transparent);-webkit-backdrop-filter:blur(10px) saturate(1.5);backdrop-filter:blur(10px) saturate(1.5);transition:opacity var(--in) var(--eo),transform var(--mv) var(--eo),background-color .3s var(--eo),color .3s var(--eo),bottom var(--mv) var(--eio)}.launch:has(.mode.on){background:color-mix(in srgb,var(--pu-accent) 90%,transparent);color:var(--pu-on,#fff)}.layer.listing .launch{opacity:0;transform:scale(.6);pointer-events:none}.launch.off{display:none}.menu.inp{--b:60px;right:8px;z-index:1}.menu.inp :is([data-item=comment],[data-item=all]){display:none}.launch .mode{position:relative;display:grid;place-items:center;width:32px;height:32px;border-radius:10px 0 0}.mode>*,.cnt>*{grid-area:1/1}.mode>*{display:grid;place-items:center;transition:opacity var(--in) var(--eo)}.cnt,.has>.plus{opacity:0}.has>.cnt{opacity:1}.cnt>.n{font-size:11px;font-weight:500;line-height:1;margin:-1.2px 0 0 1.2px;font-variant-numeric:tabular-nums lining-nums;opacity:0;transition:opacity var(--in) var(--eo)}.w>.n{margin-top:-3.4px}.cnt>svg{transition:opacity var(--in) var(--eo)}.cnt>svg+svg,.cnt.w>svg{opacity:0}.cnt.w>svg+svg{opacity:1}.n.on{opacity:1}.launch .mode:focus-visible{outline:2px solid var(--pu-accent);outline-offset:-2px}.mode>.dot{position:absolute;top:2px;right:2px;width:8px;height:8px;border-radius:50%;background:var(--pu-accent);opacity:0;transition:opacity var(--in) var(--eo),background-color .3s var(--eo)}.mode.else>.dot{opacity:1}.mode.on>.dot{background:var(--pu-on,#fff)}.ttip{display:grid;grid-template-columns:minmax(0,0fr);overflow:hidden;font-size:12px;color:var(--mu);pointer-events:none;opacity:0;transition:grid-template-columns var(--out) var(--ei),opacity var(--out) var(--ei)}.ttip>span{min-width:0;white-space:nowrap;padding-left:10px}.ttip small{font-size:12px}.ttip small,.mi .kc{color:var(--fa)}.launch:has(.mode.on) :is(.ttip,.ttip small){color:inherit}.launch:hover .ttip{grid-template-columns:minmax(0,1fr);opacity:1;transition:grid-template-columns var(--mv) var(--eo) .4s,opacity var(--in) var(--eo) .4s}.launch:has(.mm[aria-expanded=true]) .ttip{grid-template-columns:minmax(0,0fr);opacity:0}.launch .mm{display:grid;place-items:center;width:0;height:24px;margin-left:0;border-radius:6px;overflow:hidden;opacity:0;color:inherit;transition:width var(--out) var(--ei),margin var(--out) var(--ei),opacity var(--out) var(--ei),background-color .2s var(--eo)}.launch:is(:hover,:has(.mm:focus-visible)) .mm{width:26px;margin-left:4px;opacity:1;transition:width var(--mv) var(--eo) .4s,margin var(--mv) var(--eo) .4s,opacity var(--in) var(--eo) .4s,background-color .2s var(--eo)}.launch:has(.mm:focus-visible) .mm{transition-delay:0s}.launch .mm:hover{background:color-mix(in srgb,currentColor 12%,transparent)}.launch .mm:focus-visible{outline:2px solid var(--pu-accent);outline-offset:-2px}.launch:has(.mm[aria-expanded=true]) .mm{width:0;margin-left:0;opacity:0}.launch .mode{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.launch:has(.mm:focus-visible) .ttip{grid-template-columns:minmax(0,1fr);opacity:1}@media(hover:none){.ttip,.tt,.cd>.thread .acts,.launch .mm{display:none}}.menu{--b:calc(40px + var(--pu-lift));position:fixed;right:8px;bottom:var(--b);width:290px;border-radius:12px;padding:4px;pointer-events:none;opacity:0;transform:translateY(6px);transition:opacity var(--out) var(--ei),transform var(--out) var(--ei)}.menu.show{z-index:2;opacity:1;transform:none;pointer-events:auto;transition:opacity var(--in) var(--eo),transform var(--mv) var(--eo)}@media(max-height:600px){.menu{max-height:calc(100% - var(--b) - 8px);overflow-y:auto;overscroll-behavior:contain}}.mi{position:relative;display:flex;gap:10px;align-items:center;width:100%;min-height:34px;text-align:left;padding:6px 10px;border-radius:8px;transition:background-color .2s var(--eo)}.mi:hover,.mi:focus-visible{background:var(--so)}.mi svg{color:var(--mu);flex:none}.mi small{display:block;color:var(--fa);font-size:12px}.lb{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ma{flex:none;display:grid;margin:-2px 0}.ma .av{width:20px;height:20px;font-size:11px}.mi .av svg{color:inherit}.sep{height:1px;margin:4px 10px;background:var(--ru)}.subs{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows var(--in) var(--eo),opacity var(--in) var(--eo)}.subs.open{grid-template-rows:1fr;opacity:1}.subs>div{min-height:0;overflow:hidden}.subs .mi{padding-left:30px}.chev{display:grid;transition:transform var(--in) var(--eo)}[aria-expanded=true]>.chev{transform:rotate(90deg)}.tt{position:absolute;right:calc(100% + 14px);top:50%;translate:0 -50%;width:max-content;max-width:220px;padding:4px 9px;border-radius:8px;font-size:12px;line-height:1.4;color:var(--mu);pointer-events:none;opacity:0;transform:translate(3px);transition:opacity var(--out) var(--ei),transform var(--out) var(--ei)}.mi:hover>.tt,.mi:focus-visible>.tt{opacity:1;transform:none;transition:opacity var(--in) var(--eo) .5s,transform var(--in) var(--eo) .5s}@media(max-width:600px){.tt{right:8px;top:auto;bottom:100%;translate:none;transform:translateY(3px)}}.sw{position:relative;flex:none;width:26px;height:16px;border-radius:8px;background:var(--ln);transition:background-color var(--mv) var(--eio)}.sw:before,.sw:after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #00000040;transition:transform var(--mv) var(--eio),opacity var(--mv) var(--eio)}.sw:before{opacity:0;transform:translate(10px)}[aria-checked=true]>.sw{background:var(--pu-accent)}[aria-checked=true]>.sw:after{transform:translate(10px)}.tools{display:flex;flex:none;gap:2px}.tools[hidden]{display:none}.tool[aria-pressed=true]{background:var(--as);color:var(--pu-accent)}.note{display:block;padding:0 0 4px;font-size:12px;color:var(--fa)}.bts .here{flex:none;display:grid;place-items:center;margin-right:auto;padding:0 2px;color:var(--fa);transition:opacity var(--in) var(--eo)}.here.off{opacity:0;pointer-events:none}.note[hidden]{display:none}.ov{position:absolute;inset:0;pointer-events:none;overflow:hidden}.xb{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:4px 16px 16px;font-size:13px}.xb p{margin:0 0 10px}.all,.xp{position:fixed;top:0;right:0;bottom:0;width:var(--pu-panel);display:flex;flex-direction:column;border-width:0 0 0 1px;opacity:0;transform:translate(100%);transition:transform var(--out) var(--ei),opacity var(--out) var(--ei)}.all.show,.xp.show{opacity:1;transform:none;pointer-events:auto;transition:transform var(--mv) var(--eo),opacity var(--in) var(--eo)}.all.full{width:100%}.hd{display:flex;align-items:center;gap:4px;padding:8px 8px 6px}.sp{flex:1}.tg{position:relative;display:flex;align-items:center;gap:5px;height:28px;padding:0 11px 0 9px;border-radius:99px;white-space:nowrap;line-height:1;color:var(--mu);transition:background-color .2s var(--eo),color .2s var(--eo)}.tg:hover{background:var(--ho);color:var(--k)}.tg[aria-pressed=true]{background:var(--as);color:var(--pu-accent)}.tg[aria-pressed=true]:hover{background:color-mix(in srgb,var(--pu-accent) 20%,transparent)}.tg:focus-visible{outline:2px solid var(--pu-accent);outline-offset:1px}.tg:after{content:attr(data-tip);position:absolute;left:0;top:calc(100% + 4px);z-index:3;width:max-content;max-width:220px;padding:4px 9px;border:1px solid var(--ln);border-radius:8px;background:var(--su);box-shadow:var(--sh);font-size:12px;line-height:1.4;color:var(--mu);pointer-events:none;opacity:0;transform:translateY(-3px);transition:opacity var(--out) var(--ei),transform var(--out) var(--ei)}.tg:not([aria-pressed=true]):is(:hover,:focus-visible):after{opacity:1;transform:none;transition:opacity var(--in) var(--eo) .4s,transform var(--in) var(--eo) .4s}.list{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:4px 8px 8px;background:var(--so)}.cd{position:relative;margin-top:6px;border:1px solid var(--ln);border-radius:10px}.list :is(.cd,[role=listitem],.sec){transition:all var(--mv) var(--eio)}.list .out{opacity:0!important;margin-top:0;padding-block:0;border-width:0;overflow:hidden}.cd.open{border-color:transparent;box-shadow:var(--sh)}.cd.done{--o:.6}.cd>.mi{position:absolute;inset:0;border-radius:10px;background:none}.cd>.thread :is(.acts,.refs,.edit){position:relative;z-index:1}.cd:not(.open,.new):is(:hover,:has(>.mi:focus-visible)){--bg:var(--so)}.cd.open>.mi{display:none}.cd.open .root>.hdr{cursor:pointer}.cd.new,.xr,.cd>.thread{padding:8px 10px 10px}.pf{display:flex;align-items:center;gap:8px;min-height:52px;padding:0 8px 0 14px;border-top:1px solid var(--ln)}.fs{display:flex;align-items:center;gap:6px;padding:4px 6px;border-radius:8px;font-size:13px;transition:background-color .2s var(--eo)}.fs:hover,.fs:focus-visible{background:var(--ho)}.fs small{font-size:12px;color:var(--fa)}.pf .ib{width:30px;height:30px}.cx{position:fixed;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;opacity:0;transition:opacity var(--in) var(--eo)}.cx.show{opacity:1}.cx path{fill:none;stroke:var(--pu-accent);stroke-width:1.5;stroke-linecap:round;opacity:.7}.cx circle{fill:var(--pu-accent)}.layer.listing .col{opacity:0;transition:opacity var(--out) var(--ei)}.sec{padding:8px 10px 2px;font-size:12px;color:var(--fa)}.fold{display:flex;align-items:center;gap:4px;width:100%;margin-top:6px;border-radius:6px;text-align:left;cursor:pointer}.fold:hover,.fold:focus-visible{color:var(--mu);outline:none}.fold svg{transition:transform var(--mv) var(--eio)}.fold[aria-expanded=true] svg{transform:rotate(90deg)}.ag{display:flex;align-items:center;gap:8px;padding:6px 14px;font-size:12px;color:var(--fa);border-bottom:1px solid var(--ln)}.ag[hidden]{display:none}.lns{display:flex;flex-direction:column}.ln{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows var(--in) var(--eo),opacity var(--in) var(--eo)}.ln.show{grid-template-rows:1fr;opacity:1}.ln>.lw{overflow:hidden;min-height:0}.ag button{margin-left:auto;flex:none;padding:0 6px;border-radius:6px;color:var(--fa);transition:color .2s var(--eo),background-color .2s var(--eo)}.ag button:hover:not(:disabled),.ag button:focus-visible{color:var(--pu-accent);background:var(--as)}.ag button:disabled{opacity:.5;cursor:default}.adr{margin:8px 0 0 14px;padding:8px 10px;border-radius:8px;background:var(--so);font-size:13px;color:var(--k);animation:pu-in var(--mv) var(--eo) both}.adr small{display:block;font-size:12px;color:var(--fa)}.adr .go{display:flex;gap:6px;margin-top:6px}.adr .go button{padding:2px 8px;border-radius:6px;font-size:12px;color:var(--mu);transition:color .2s var(--eo),background-color .2s var(--eo)}.adr .go button:hover,.adr .go button:focus-visible{color:var(--pu-accent);background:var(--as)}@keyframes pu-in{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}.sec b{margin-left:6px;font-weight:500;color:var(--pu-accent)}.toast{--r:40px;position:fixed;right:var(--r);bottom:calc(4px + var(--pu-lift));max-width:min(320px,calc(100vw - var(--r) - 16px));border-radius:10px;padding:8px 14px;font-size:13px;opacity:0;transform:translateY(6px);transition:.3s var(--eo)}.toast.show{opacity:1;transform:none}.layer:is(.listing,:has(.xp.show)) .toast{--r:12px;bottom:64px;max-width:min(320px,calc(var(--pu-panel) - 24px));z-index:2}.layer:not(.listing):has(.menu.show) .toast{--r:314px}@media(max-width:640px){.layer:not(.listing):has(.menu.show) .toast{--r:12px;bottom:auto;top:12px}}@media(pointer:coarse){.mi,.ib,.rxo,.refs .ref,.mnl li,.bts button,.tg,.fs,.pm button,.ta,.nb,.selbar button,button.me,.say button,.line,.seen button,.ag button,.go button{min-height:44px}.ib,.rxo,.refs .ref,.nb,.selbar button,button.me,.ta{min-width:44px}.bub:before{content:"";position:absolute;inset:-14px;border-radius:50%}.row:focus-within .bts,.row.has .bts{max-height:52px}.hd{padding:4px 8px}.toast{--r:52px;display:flex;align-items:center;min-height:44px;padding:4px 14px;line-height:1.25}.ta{display:grid;place-items:center;margin:-5px -10px -5px 6px;padding:0 10px}.launch .mode{width:44px;height:44px}.menu{--b:calc(52px + var(--pu-lift))}}@media(pointer:coarse)and (hover:none){.ks{display:none}}.layer :is(button,a):not(.mi,.opn,.mode,.tg):focus-visible{outline:2px solid var(--pu-accent);outline-offset:1px}.layer .mi:focus-visible{outline:2px solid var(--pu-accent);outline-offset:-2px}.flip .launch{background:var(--su)}.flip :is(.th,.cd){opacity:1}.flip :is(.th,.cd)>*{opacity:var(--o,1);transition:opacity var(--in) var(--eo)}@media(forced-colors:active){.pick.kf{border:3px solid Highlight}.layer :is(.ib,.mi,.nb,.tg,.fs,.selbar button,.say button,.xb button):focus-visible{outline:2px solid Highlight}.sw{forced-color-adjust:none;border:1px solid CanvasText;background:Canvas}.sw:before,.sw:after{top:1px;left:1px;background:CanvasText}[aria-checked=true]>.sw{background:Highlight;border-color:Highlight}[aria-checked=true]>.sw:before,[aria-checked=true]>.sw:after{background:HighlightText}.layer :is(.tg,.rxo,.rx)[aria-pressed=true],.launch:has(.mode.on){forced-color-adjust:none;background:Highlight;color:HighlightText;border-color:Highlight}}@media(prefers-reduced-motion:reduce){.ln,.subs{transition-property:opacity}@keyframes pu-in{0%{opacity:0}to{opacity:1}}@keyframes cm-out{99%{opacity:0;max-height:20px;padding-top:4px}to{opacity:0;max-height:0;padding-top:0}}.bub,.bub.in,.bub.in:hover,.bub.on,.tip,.pop,.selbar,.menu,.all,.xp,.tt,.toast,.ref .rc,.rxp,.mnl{transform:none!important}.ttip{transition-property:opacity!important}.dlg{transform:translate(-50%)!important}.sw:after{transform:none!important;transition-property:opacity}[aria-checked=true]>.sw:after{opacity:0}[aria-checked=true]>.sw:before{opacity:1}.th,.th.long .root>.tx,.mr,.list :is(.cd,[role=listitem],.sec){transition-property:opacity,box-shadow}.tip.show,.toast{transition-property:opacity}.pick,.pick.show{transition:opacity .16s ease-in-out}.all,.all.show,.xp,.xp.show{transition-property:opacity}.namebar,.namebar.show{transform:none!important;transition:opacity .16s ease-in-out}.av,.nf,.launch{transform:none!important}@keyframes pu-pulse{0%{opacity:0}35%{opacity:.85}to{opacity:0}}}',root:e.root??document.body,onName:g,onRender:m,..."host"===e.ui?{host:{open:e=>{for(let t of[...h])try{t(e)}catch(e){globalThis.reportError?.(e)}}}}:{},...e.prefs?{prefs:e.prefs}:{},...e.closed?{closed:!0}:{},...e.field?{field:e.field}:{}})}catch(e){throw Go(null),e}let w=p;s&&w.ctx.ue("This browser can't keep comments for this page \u2014 copy the comments (Copy comments \u203a As Markdown) to keep them");let y=()=>{c.flush().catch(e=>globalThis.reportError?.(e))},b=function(e){let t={...e,i:!0};Ln=t;for(let e of $n.values())"waiting"===e.info.state&&Tn(e,t);return()=>{t.i=!1,Ln===t&&(Ln=null);for(let e of[...$n.values()].reverse())e.stop?.(),delete e.stop;e.surface.destroy()}}({surface:w.ctx.addons,doc:c,root:e.root??document.body,ephemeral:s,...e.keep?{keep:e.keep}:{},version:ht,onIdentity:async e=>{o={...o,identity:e},await n.saveProfile(o)}}),x=/\S/.test(Kt("data-pipeup-agents")??"")?window.setTimeout(()=>{Cn().some(e=>"agents"===e.id)||console.warn("pipeup: this page lists an agent (data-pipeup-agents), but the agents add-on isn't on the page, so replies won't show. Add @pipeup/agents (see the Add-ons page).")},1e3):0;return"off"!==Kt("data-pipeup-updates")&&Date.now()-Date.parse(ft)>31536e6&&console.info(`pipeup: this is Pipeup ${ht}, from ${ft}; newer versions exist. See https://github.com/pipeup-ai/pipeup/blob/main/CHANGELOG.md`),window.addEventListener("pagehide",y),{document:c,comments:({all:e=!1,edition:t=!1}={})=>ut(w.ctx.s.all().filter(e=>!t||!w.ctx.E(e.thread)),{title:document.title,url:location.href,exportedAt:new Date,all:e}),appearance:()=>({...w.appearance()}),flush:()=>c.flush(),get commentMode(){return w.ctx.state.l},setCommentMode:async e=>{v||w.ctx.se(!!e)},openMenu:async()=>{v||w.ctx.pageControls?.s()},openAllComments:async()=>{v||w.ctx.pageControls?.list()},get name(){return c.name},setName:async e=>{let t=String(e).replace(/\s+/g," ").trim();!t||t===c.name||v||(await g(t),w.ctx.m())},on:(e,t)=>{if("function"!=typeof t)return()=>{};let n="change"===e?u:"open"===e?h:null;return n?(n.add(t),()=>n.delete(t)):()=>{}},commentsAs:(e,{all:t=!1}={})=>at(w.ctx.s.all(),"text"===e?"text":"ai",{title:document.title,url:location.href,exportedAt:new Date,all:t}),get look(){return w.ctx.s.look()},setLook:async e=>{!v&&("auto"===e||"light"===e||"dark"===e)&&w.ctx.s.setLook(e)},get hidden(){return w.ctx.state.hide},setHidden:async e=>{v||w.ctx.s.setHide(!!e)},startComment:async t=>{if(v)return;let n=w.ctx;if(n.state.t&&!n.w())return n._();let o=e.root??document.body,r=t instanceof Range;n.Ie({anchor:r?qe(t,o,n.f.view(t.commonAncestorContainer)):Ne(t,o,void 0,n.f.view(t)),label:r?`\u201c${t.toString().replace(/\s+/g," ").trim().slice(0,60)}\u201d`:Xe(t),ranges:r?[t]:[],resolved:{state:"attached",element:r?null:t,range:r?t:null}})},openThread:async t=>{v||("host"===e.ui?w.goTo(String(t)):w.ctx.open(String(t)))},unmount:()=>{v||(v=!0,u.clear(),h.clear(),Wt(null),window.removeEventListener("pagehide",y),window.clearTimeout(x),b(),w.destroy(),Go(null),Er===t()&&(Er=null))}}}(e,()=>t).catch(e=>{throw Er===t&&(Er=null),Wt(null),e?.code?e:kr("failed",`Pipeup couldn't start: ${String(e?.message??e)}`,e)});return Er=t,t}async function $r(e){if(!Er)throw new Error("pipeup: Pipeup hasn't started on this page");return(await Er).comments(e)}export{gn as ADDON_API,v as AI_NAME,c as ANIMALS,ft as BUILT,p as COLOURS,le as DEFAULT_PROFILE_NAME,de as IndexedDbStore,ae as MemoryStore,ne as PipeupDocument,te as UnsavedChangeError,ht as VERSION,Cn as addons,ut as agentComments,y as agentName,m as animalName,W as checkOp,$r as comments,U as computeOpId,at as copyAll,it as copyThread,s as createIdentity,Ne as describeElement,qe as describeRange,rt as formatAgo,w as isAiName,b as isPasted,Xe as labelOf,se as loadOrCreateProfile,Qe as locate,Sr as mount,g as nameOf,G as newDocumentAttribute,_o as onReveal,Z as parseDocumentAttribute,Q as readFeedbackFile,He as resolveAnchor,Zt as setPeople,Yo as setViewState,Kt as setting,z as signOp,An as use};