@opencxh/domain 1.303.0 → 1.304.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.
- package/dist/entities/agreement/types.d.ts +4 -3
- package/dist/entities/catalog/pricing.d.ts +3 -1
- package/dist/entities/catalog/types.d.ts +5 -0
- package/dist/entities/fulfilment/configuration.d.ts +99 -0
- package/dist/entities/fulfilment/configuration.test.d.ts +1 -0
- package/dist/entities/fulfilment/index.d.ts +1 -0
- package/dist/entities/fulfilment/target.d.ts +4 -2
- package/dist/entities/fulfilment/types.d.ts +5 -33
- package/dist/entities/purchase/choose.d.ts +5 -0
- package/dist/entities/purchase/demand.d.ts +2 -0
- package/dist/entities/purchase/index.d.ts +1 -0
- package/dist/entities/purchase/types.d.ts +20 -5
- package/dist/entities/purchase/upsell.d.ts +20 -0
- package/dist/entities/purchase/upsell.test.d.ts +1 -0
- package/dist/entities/transaction/types.d.ts +10 -5
- package/dist/index.cjs +23 -23
- package/dist/index.js +2619 -2486
- package/dist/platform/provisioning.d.ts +139 -61
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const tn=10,
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const tn=10,Be=10,je=10,qe=5,Eu=new Set(["header","section","context","divider","image","list","actions","attachments"]);function Bt(e){if(typeof e=="string")return e.length>0;if(!e||typeof e!="object")return!1;const t=e;return typeof t.key=="string"||typeof t.value=="string"}function Su(e,t=()=>{}){if(!Array.isArray(e))return[];const n=[];for(const r of e){if(n.length>=tn){t(`more than ${tn} blocks; the rest was dropped`);break}if(!r||typeof r!="object")continue;const o=r;if(!Eu.has(o.type)){t(`unknown block type ${String(o.type)}`);continue}switch(o.type){case"header":if(!Bt(o.text)){t("a header without text");continue}break;case"context":if(!Bt(o.text)){t("a context block without text");continue}break;case"image":if(!o.url||!o.alt){t("an image without url or alt");continue}break;case"section":Array.isArray(o.fields)&&o.fields.length>Be&&(t(`more than ${Be} fields in a section`),o.fields=o.fields.slice(0,Be));break;case"list":if(!Array.isArray(o.items)||o.items.length===0){t("a list without items");continue}o.items.length>je&&(t(`more than ${je} list items`),o.items=o.items.slice(0,je));break;case"actions":{const s=Array.isArray(o.elements)?o.elements:[],i=s.filter(a=>a?.action_id&&a.invoke&&Bt(a.text));if(i.length!==s.length&&t("an action without action_id, invoke or text"),i.length===0)continue;i.length>qe&&t(`more than ${qe} actions`),o.elements=i.slice(0,qe);break}}n.push(o)}return n}const Au=/(\*\*|__)(?=\S)([\s\S]*?\S)\1/g,vu=/(\*|_)(?=\S)([^*_\n]*?\S)\1/g;function Ko(e){if(typeof e!="string"||!e)return"";let t=e;return t=t.replace(/```[a-z]*\n?/gi,"").replace(/~~~[a-z]*\n?/gi,""),t=t.replace(/!\[([^\]]*)\]\([^)]*\)/g,"$1"),t=t.replace(/\[([^\]]*)\]\([^)]*\)/g,"$1"),t=t.replace(/\[([^\]]*)\]\[[^\]]*\]/g,"$1"),t=t.replace(/<((?:https?|mailto):[^>\s]+)>/gi,"$1"),t=t.split(`
|
|
2
2
|
`).map(n=>n.replace(/^\s{0,3}#{1,6}\s+/,"").replace(/^\s{0,3}>\s?/,"").replace(/^\s*[-*+]\s+/,"").replace(/^\s*\d+[.)]\s+/,"").replace(/^\s*(?:[-*_]\s*){3,}$/,"")).join(`
|
|
3
|
-
`),t=t.replace(hu,"$2"),t=t.replace(yu,"$2"),t=t.replace(/~~(?=\S)([\s\S]*?\S)~~/g,"$1"),t=t.replace(/`([^`\n]+)`/g,"$1"),t.replace(/\s+/g," ").trim()}function Po(e){return e.replace(/<style[\s\S]*?<\/style>/gi," ").replace(/<script[\s\S]*?<\/script>/gi," ").replace(/<[^>]+>/g," ").replace(/ /g," ").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'").replace(/\s+/g," ").trim()}function $e(e){if(!e||e<0)return"";const t=Math.floor(e/60),n=Math.floor(e%60);return`${t}:${n.toString().padStart(2,"0")}`}function Mr(e){return e?` — ${Math.floor(e/60)}m ${e%60}s`:""}function jt(e){return e?.split("@")?.[0]||e||""}function Ue(e){return e.map(t=>t.name).join(", ")}function Rr(e){return e==="meeting"?"Meeting":e==="video"?"Video call":"Audio call"}const ne={VOICE_CALL_STARTED:{shape:"event",channelKind:"voice",icon:"phone",snippet:()=>"Gesprek gestart",timeline:e=>e.direction==="inbound"?`Inbound call started — ${jt(e.payload.from)}`:`Outbound call started — ${jt(e.payload.to)}`},VOICE_CALL_ANSWERED:{shape:"event",channelKind:"voice",icon:"phone",connected:!0,snippet:()=>"Gesprek aangenomen",timeline:(e,t)=>`Call answered — ${t}`},VOICE_CALL_HOLD:{shape:"event",channelKind:"voice",icon:"phone",snippet:()=>"In de wacht",timeline:(e,t)=>`Call on hold — ${t}`},VOICE_CALL_UNHOLD:{shape:"event",channelKind:"voice",icon:"phone",snippet:()=>"Hervat"},VOICE_CALL_ENDED:{shape:"event",channelKind:"voice",icon:"phone",snippet:e=>`Gesprek beëindigd${e.payload.duration?` (${$e(e.payload.duration)})`:""}`,timeline:e=>`Call ended${Mr(e.payload.duration)}`},VOICE_CALL_MISSED:{shape:"event",channelKind:"voice",icon:"phone",snippet:()=>"Gemiste oproep",timeline:e=>`Missed call — ${jt(e.payload.from)}`},VOICE_CALL_FAILED:{shape:"event",channelKind:"voice",icon:"phone",snippet:()=>"Gesprek mislukt",timeline:()=>"Call failed"},VOICE_CALL_VOICEMAIL:{shape:"artifact",channelKind:"voice",icon:"phone",snippet:e=>e.payload.transcription?.trim()?e.payload.transcription:"Voicemail ontvangen"},VIDEO_CALL_STARTED:{shape:"event",channelKind:"video",icon:"video",snippet:()=>"Gesprek gestart",timeline:()=>"Video call started"},VIDEO_CALL_ANSWERED:{shape:"event",channelKind:"video",icon:"video",connected:!0,snippet:()=>"Gesprek aangenomen",timeline:()=>"Video call answered"},VIDEO_CALL_HOLD:{shape:"event",channelKind:"video",icon:"video",snippet:()=>"In de wacht"},VIDEO_CALL_UNHOLD:{shape:"event",channelKind:"video",icon:"video",snippet:()=>"Hervat"},VIDEO_CALL_ENDED:{shape:"event",channelKind:"video",icon:"video",snippet:e=>`Gesprek beëindigd${e.payload.duration?` (${$e(e.payload.duration)})`:""}`,timeline:()=>"Video call ended"},VIDEO_CALL_MISSED:{shape:"event",channelKind:"video",icon:"video",snippet:()=>"Gemiste oproep",timeline:()=>"Missed video call"},VIDEO_CALL_FAILED:{shape:"event",channelKind:"video",icon:"video",snippet:()=>"Gesprek mislukt",timeline:()=>"Video call failed"},EMAIL_RECEIVED:{shape:"message",triggerable:!0,displayNameKey:"communication:activity.EMAIL_RECEIVED",component:"communication:EmailActivity",channelKind:"mail",icon:"mail",replyable:!0,carriesText:!0,countsAs:"inbound_message",snippet:Nr},EMAIL_SENT:{shape:"message",component:"communication:EmailActivity",channelKind:"mail",icon:"mail",replyable:!0,carriesText:!0,countsAs:"outbound_message",snippet:Nr},CHAT_MESSAGE_SENT:{shape:"message",component:"communication:ChatMessage",channelKind:"chat",icon:"message-circle",replyable:!0,carriesText:!0,countsAs:"outbound_message",snippet:e=>e.payload.text??""},CHAT_MESSAGE_RECEIVED:{shape:"message",triggerable:!0,displayNameKey:"communication:activity.CHAT_MESSAGE_RECEIVED",component:"communication:ChatMessage",channelKind:"chat",icon:"message-circle",replyable:!0,carriesText:!0,countsAs:"inbound_message",snippet:e=>e.payload.text??""},CHAT_MEMBER_JOINED:{shape:"event",channelKind:"chat",icon:"message-circle",snippet:e=>`${Ue(e.payload.members)} toegevoegd`,timeline:e=>{const t=Ue(e.payload.members)||"Someone",n=e.payload.initiator?.name?` · added by ${e.payload.initiator.name}`:"";return`${t} joined the chat${n}`}},CHAT_MEMBER_LEFT:{shape:"event",channelKind:"chat",icon:"message-circle",snippet:e=>`${Ue(e.payload.members)} verlaten`,timeline:e=>{const t=Ue(e.payload.members)||"Someone",n=e.payload.initiator?.name?` · removed by ${e.payload.initiator.name}`:"";return`${t} left the chat${n}`}},CHAT_RENAMED:{shape:"event",channelKind:"chat",icon:"message-circle",snippet:e=>`Hernoemd naar "${e.payload.newName}"`,timeline:e=>`Chat renamed to "${e.payload.newName}"${e.payload.initiator?` by ${e.payload.initiator.name}`:""}`},CHAT_CALL_STARTED:{shape:"event",channelKind:"chat",icon:"message-circle",snippet:()=>"Gesprek gestart",timeline:e=>`${Rr(e.payload.callType)} started${e.payload.initiator?` by ${e.payload.initiator.name}`:""}`,joinUrl:e=>e.payload.joinUrl},CHAT_CALL_ENDED:{shape:"event",channelKind:"chat",icon:"message-circle",snippet:e=>`Gesprek beëindigd${e.payload.duration?` (${$e(e.payload.duration)})`:""}`,timeline:e=>`${Rr(e.payload.callType)} ended${Mr(e.payload.duration)}`,joinUrl:e=>e.payload.joinUrl},CHAT_EVENT:{shape:"event",channelKind:"chat",icon:"message-circle",snippet:e=>e.payload.text??e.payload.eventType,timeline:e=>e.payload.text||e.payload.eventType},TRANSCRIPT_ADDED:{shape:"artifact",triggerable:!0,displayNameKey:"communication:activity.TRANSCRIPT_ADDED",component:"communication:TranscriptionActivity",icon:"captions",carriesText:!0,snippet:e=>(e.payload.segments??[]).map(t=>t.text).join(" ")},COMMENT_ADDED:{shape:"note",component:"communication:CommentActivity",icon:"sticky-note",carriesText:!0,snippet:e=>e.payload.text??""},FILE_UPLOADED:{shape:"artifact",component:"communication:FileActivity",icon:"paperclip",snippet:e=>`Bestand: ${e.payload.fileName}`},AI_MESSAGE_ADDED:{shape:"event",triggerable:!0,displayNameKey:"communication:activity.AI_MESSAGE_ADDED",icon:"circle",snippet:e=>e.payload.output?.text??e.payload.input?.text??"",timeline:()=>"AI message added"},AI_ACTION_PROPOSED:{shape:"event",component:"communication:ProposedActionCard",icon:"circle",playbookAuthored:!0,snippet:e=>`Voorstel wacht op goedkeuring (${e.payload.actions?.length??0} actie(s))`},PLAYBOOK_STARTED:{shape:"event",icon:"circle",playbookAuthored:!0,snippet:e=>`Playbook gestart${e.payload.playbookName?`: ${e.payload.playbookName}`:""}`,timeline:e=>`Playbook gestart${e.payload.playbookName?` — ${e.payload.playbookName}`:""}`},PLAYBOOK_COMPLETED:{shape:"event",icon:"circle",playbookAuthored:!0,snippet:()=>"Playbook afgerond",timeline:()=>"Playbook afgerond"},PLAYBOOK_ESCALATED:{shape:"event",icon:"circle",playbookAuthored:!0,snippet:()=>"Playbook geëscaleerd naar een mens",timeline:()=>"Playbook geëscaleerd naar een mens"},AGENT_DELEGATED:{shape:"event",icon:"circle",playbookAuthored:!0,snippet:e=>`${e.payload.fromAgentName} vroeg ${e.payload.toAgentName??"een collega"}${e.payload.ask?`: ${e.payload.ask}`:""}`,timeline:e=>`${e.payload.fromAgentName} schakelde ${e.payload.toAgentName??"een collega"} in`},AGENT_ANSWERED:{shape:"event",icon:"circle",playbookAuthored:!0,snippet:e=>`${e.payload.fromAgentName} beantwoordde de deelvraag`,timeline:e=>`${e.payload.fromAgentName} beantwoordde de deelvraag`},MEETING_SCHEDULED:{shape:"event",icon:"calendar",snippet:e=>`Vergadering gepland: ${e.payload.title}`,timeline:()=>"Meeting scheduled",joinUrl:e=>e.payload.joinUrl},MEETING_STARTED:{shape:"event",icon:"calendar",connected:!0,snippet:e=>`Vergadering gestart: ${e.payload.title}`,timeline:()=>"Meeting started",joinUrl:e=>e.payload.joinUrl},MEETING_ENDED:{shape:"event",icon:"calendar",snippet:e=>`Vergadering beëindigd${e.payload.duration?` (${$e(e.payload.duration)})`:""}`,timeline:()=>"Meeting ended"},MEETING_PARTICIPANT_JOINED:{shape:"event",icon:"calendar",snippet:e=>`${e.payload.name} deelgenomen`,timeline:(e,t)=>`${t} joined the meeting`},MEETING_PARTICIPANT_LEFT:{shape:"event",icon:"calendar",snippet:e=>`${e.payload.name} verlaten`,timeline:(e,t)=>`${t} left the meeting`},INTERACTION_CREATED:{shape:"event",icon:"circle",snippet:()=>"Interactie aangemaakt",timeline:(e,t)=>`Interaction started by ${t}`},INTERACTION_STATUS_CHANGED:{shape:"event",triggerable:!0,displayNameKey:"communication:activity.INTERACTION_STATUS_CHANGED",icon:"circle-dot",snippet:e=>`Status: ${e.payload.fromStatus} → ${e.payload.toStatus}`,timeline:(e,t)=>`Status changed to ${e.payload.toStatus} by ${t}`},INTERACTION_ASSIGNED:{shape:"event",icon:"user",snippet:()=>"Interactie toegewezen",timeline:(e,t)=>`Assigned by ${t}`},SLA_BREACHED:{shape:"event",triggerable:!0,displayNameKey:"communication:activity.SLA_BREACHED",icon:"alarm-clock",snippet:e=>`SLA verlopen: ${e.payload.metric}`,timeline:e=>`SLA target ${e.payload.metric} passed its deadline`},WORK_COMMENT_ADDED:{shape:"note",icon:"sticky-note",carriesText:!0,snippet:()=>"Reactie"},WORK_ITEM_ASSIGNED:{shape:"event",icon:"user",snippet:()=>"Taak toegewezen",timeline:(e,t)=>`Assigned by ${t}`},WORK_ITEM_STATUS_CHANGED:{shape:"event",triggerable:!0,icon:"circle-dot",snippet:()=>"Status gewijzigd",timeline:(e,t)=>`Status changed by ${t}`},CRM_NOTE_ADDED:{shape:"note",icon:"sticky-note",carriesText:!0,snippet:()=>"Notitie"},CRM_CALL_LOGGED:{shape:"note",icon:"phone",carriesText:!0,snippet:()=>"Gesprek vastgelegd"},CRM_STAGE_CHANGED:{shape:"event",icon:"circle-dot",snippet:()=>"Fase gewijzigd",timeline:(e,t)=>`Stage changed by ${t}`}};function Nr(e){const t=e.payload,n=wo(t.bodyText).trim()||t.bodySnippet?.trim()||Po(t.body??"");return t.subject?`${t.subject} — ${n}`:n}function H(e){return ne[e]}function bu(e){return H(e)?.icon??"circle"}function _u(e){return H(e)?.channelKind}function xn(e){return e==="message"||e==="note"}function Iu(e){return xn(H(e)?.shape)}function wn(e){return e==="note"}function Eu(e){return wn(H(e)?.shape)}function Su(e){return H(e)?.replyable===!0}function Au(e){return H(e)?.carriesText===!0}function Lo(e){return H(e)?.countsAs}function vu(e){return H(e)?.playbookAuthored===!0}function Cu(e){return H(e)?.connected===!0}function Tu(e){const t=H(e);return t?.shape==="artifact"&&t?.carriesText===!0}function Ko(e){const t=H(e.type)?.snippet;return t?t(e):""}function ku(e,t){const n=H(e.type)?.timeline;return n?n(e,t):e.type.replace(/_/g," ").toLowerCase()}function Ou(e){const t=H(e.type)?.joinUrl;return t?t(e):void 0}function Xe(e,t){let n=e;for(const r of t.split(".")){if(n==null||typeof n!="object")return"";n=n[r]}return n==null?"":typeof n=="string"?n:typeof n=="number"||typeof n=="boolean"?String(n):""}function Qe(e,t,n){if(e===void 0)return null;if(typeof e=="string")return e||null;if("value"in e)return Xe(t,e.value)||null;const r={};for(const[s,i]of Object.entries(e.params??{}))r[s]=Xe(t,i);const o=n(e.key,r);return o===e.key?null:o}function $o(e,t){if(!e||typeof e=="string"||"value"in e)return null;const n={};for(const[r,o]of Object.entries(e.params??{}))n[r]=Xe(t,o);return{key:e.key,params:n}}const Dr=140;function Mu(e){const t=e.trim();return t.length<=Dr?t:`${t.slice(0,Dr-1).trimEnd()}…`}function Ru(e,t){const n=$o(t?.text,e),r=t?Qe(t.text,e,o=>o):null;return{activityId:e.id,type:e.type,snippet:Mu(r??Ko(e)),authorName:e.author?.name??"",direction:e.direction,createdAt:e.createdAt??Date.now(),...n?{snippetKey:n.key,snippetParams:n.params}:{}}}const Nu=e=>e;function xr(e){const t=ne[e];return{type:e,shape:t.shape,channelKind:t.channelKind,icon:t.icon,replyable:t.replyable===!0,countsAs:t.countsAs,carriesText:t.carriesText===!0,triggerable:t.triggerable===!0,component:t.component,builtIn:!0,displayNameKey:t.displayNameKey}}function wr(e){return{type:e.type,shape:e.shape,channelKind:e.channelKind,icon:e.icon||"circle",replyable:e.replyable===!0,countsAs:e.countsAs,carriesText:e.carriesText===!0,triggerable:e.triggerable===!0,component:e.component,builtIn:!1,displayNameKey:e.displayNameKey}}class Uo{constructor(t=[],n=Nu){this.translate=n;for(const r of t)r?.type&&(r.type in ne||this.declared.has(r.type)||this.declared.set(r.type,r))}declared=new Map;get(t){if(t in ne)return xr(t);const n=this.declared.get(t);return n?wr(n):void 0}triggerable(){const t=Object.keys(ne).filter(r=>ne[r].triggerable).map(xr),n=[...this.declared.values()].map(wr).filter(r=>r.triggerable);return[...t,...n]}timelineText(t,n){const r=ne[t.type];if(r?.timeline)return r.timeline(t,n);const o=this.declared.get(t.type);return Qe(o?.text,t,this.translate)??t.type.replace(/_/g," ").toLowerCase()}snippet(t){const n=ne[t.type];if(n?.snippet)return n.snippet(t);const r=this.declared.get(t.type);return Qe(r?.text,t,this.translate)??""}descriptor(t){return this.declared.get(t)}blocks(t){const n=this.declared.get(t)?.render;return n?.length?n:void 0}isMessage(t){return xn(this.get(t)?.shape)}nestsUnderParent(t){return wn(this.get(t)?.shape)}isReplyable(t){return this.get(t)?.replyable===!0}carriesText(t){return this.get(t)?.carriesText===!0}countsAs(t){return this.get(t)?.countsAs}channelKind(t){return this.get(t)?.channelKind}isTranscript(t){const n=this.get(t);return n?.shape==="artifact"&&n.carriesText}get translator(){return this.translate}}const Du=new Uo;function xu(e,t,n=[]){const r=e.createdAt;if(!r)return[];const o=new Set(n);return e.author.type==="user"&&e.author.id&&o.add(e.author.id),Object.entries(t).filter(([s,i])=>i>=r&&!o.has(s)).map(([s])=>s)}function Bo(e){return e.createdAt??0}function wu(e){return e.type==="EMAIL_RECEIVED"||e.type==="EMAIL_SENT"}function Pu(e){return e.type==="CHAT_MESSAGE_SENT"||e.type==="CHAT_MESSAGE_RECEIVED"}function U(e){return e<0?-Math.round(-e):Math.round(e)}function de(e,t){if(t.length===0)return[];const n=t.reduce((c,u)=>c+u,0);if(n===0)return t.map((c,u)=>u===0?e:0);const r=t.map(c=>e*c/n),o=r.map(c=>Math.trunc(c));let s=e-o.reduce((c,u)=>c+u,0);const i=r.map((c,u)=>({index:u,fraction:Math.abs(c-o[u])})).sort((c,u)=>u.fraction-c.fraction),a=s<0?-1:1;for(let c=0;s!==0&&c<i.length;c++)o[i[c].index]+=a,s-=a;return o}function J(e,t={}){const n=t.decimal??",",r=t.group??".",o=e<0,s=Math.abs(Math.trunc(e)).toString().padStart(3,"0"),i=s.slice(0,-2),a=s.slice(-2);let c="";for(let u=0;u<i.length;u++)u>0&&(i.length-u)%3===0&&(c+=r),c+=i[u];return`${o?"-":""}${c}${n}${a}`}function nn(e){const t=e.trim().replace(/[\s ]/g,"");if(!t)return;const n=t.replace(/^[-+]?[^\d.,-]*/,"").replace(/[^\d.,-]+$/,""),r=/^-/.test(t)||/-$/.test(t),o=n.replace(/-/g,"");if(!o||!/^[\d.,]+$/.test(o))return;const s=o.lastIndexOf(","),i=o.lastIndexOf("."),a=Math.max(s,i),c=a===-1?"":o.slice(a+1),u=a!==-1&&c.length>=1&&c.length<=2,d=u?o.slice(0,a):o;if(!Lu(d))return;const l=d.replace(/[.,]/g,""),p=u?c.padEnd(2,"0"):"00";if(l==="")return;const g=Number(l)*100+Number(p);return r?-g:g}function Lu(e){return/^\d+$/.test(e)?!0:e.includes(".")&&e.includes(",")?!1:/^\d{1,3}([.,]\d{3})*$/.test(e)}function Ku(e){return e.costPriceCents==null?e.netCents:e.netCents-U(e.costPriceCents*e.quantity)}const $u=["month","quarter","year"],Ze={month:1,quarter:3,year:12},Uu=864e5,Bu=e=>{const t=new Date(e);return Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),1)},Pr=e=>{const t=new Date(e);return Date.UTC(t.getUTCFullYear(),t.getUTCMonth()+1,1)},Lr=(e,t)=>Math.round((t-e)/Uu);function Et(e,t,n){const r=Ze[t],o=de(e,Array.from({length:r},()=>1));let s=0;for(let i=Bu(n.from);i<n.to;i=Pr(i)){const a=Pr(i),c=Math.max(i,n.from),u=Math.min(a,n.to);if(u<=c)continue;const d=o[new Date(i).getUTCMonth()%r];s+=d*Lr(c,u)/Lr(i,a)}return U(s)}function Fo(e,t,n){return!t||!n||t===n?e:U(e*Ze[n]/Ze[t])}function Fu(e){return typeof e=="string"&&e in Ze}const rn=e=>Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0&&t!==""));function ju(e){const{role:t,agreement:n={},asked:r={}}=e,o=r.invoiceTo||r.contactId||r.billingAddressId?r:n,s=r.paymentTerm??n.paymentTerm,i=rn({...o.invoiceTo?{invoiceTo:rn({companyId:o.invoiceTo.companyId,contactId:o.contactId})}:{contactId:o.contactId},billingAddressId:o.billingAddressId,paymentTerm:s,reference:r.reference??n.reference}),a=s?.code||t?.paymentTermKey;return{head:i,...a?{paymentTermCode:a}:{}}}function jo(e){return rn({contactId:e.invoiceTo?e.invoiceTo.contactId:e.contactId,invoiceTo:e.invoiceTo?.companyId?{companyId:e.invoiceTo.companyId}:void 0,billingAddressId:e.billingAddressId,paymentTerm:e.paymentTerm,reference:e.reference})}function qo(e){return e.kind==="product"&&!e.optional&&!!e.productId&&!!e.pricePer}function qu(e,t){const n=e.lines.filter(qo).map(r=>({id:"",productId:r.productId,name:r.name,quantity:{from:"fixed",value:r.quantity},prices:[{from:t,cents:U(r.unitPriceCents*(1-(r.discountPercent??0)/100)),...r.pricePer?{per:r.pricePer}:{}}],...r.answers?{answers:r.answers}:{},...r.qualificationId?{qualificationId:r.qualificationId}:{}}));return{title:e.title||e.reference||"",companyId:e.companyId,invoice:jo(e),currency:e.currency,status:"draft",startsAt:t,interval:"month",sourceTransactionId:e.id,...e.taxOverrideKey?{taxOverrideKey:e.taxOverrideKey}:{},lines:n}}function Gu(e){const t={from:Date.UTC(2026,0,1),to:Date.UTC(2027,0,1)};return e.lines.reduce((n,r)=>r.kind!=="product"||r.optional?n:n+(r.pricePer?Et(r.netCents,r.pricePer,t):r.netCents),0)}const on={month:1,quarter:3,year:12},Vu=864e5;function Wu(e,t){return on[e]<on[t]}function Je(e,t){const n=new Date(e),r=on[t],o=Math.floor(n.getUTCMonth()/r)*r;return{from:Date.UTC(n.getUTCFullYear(),o,1),to:Date.UTC(n.getUTCFullYear(),o+r,1)}}function W(e,t){const n=Math.max(e.startsAt,t.startsAt??e.startsAt),r=[e.endsAt,t.endsAt].filter(o=>o!=null);return r.length?{from:n,to:Math.min(...r)}:{from:n}}function Go(e,t){const n=W(e,t);return t.billingStart!=="activation"?n:t.activatedAt==null?null:{...n,from:Math.max(n.from,t.activatedAt)}}function St(e,t){const n=Math.max(e.from,t.from),r=Math.min(e.to??t.to,t.to);return r>n?{from:n,to:r}:null}function Vo(e,t,n){const r=St(e,t);if(!r)return 0;if(r.from===t.from&&r.to===t.to)return 1;if(!n)return 0;const o=(s,i)=>Math.round((i-s)/Vu);return o(r.from,r.to)/o(t.from,t.to)}function Wo(e,t,n){const r=W(e,t);return r.to!=null&&r.to<=n?"ended":r.from>n?"planned":"active"}function Hu(e,t,n){return t.filter(r=>Wo(e,r,n)!=="ended")}const sn=864e5;function Pn(e,t){return t.quantity.from==="fixed"?t.every??e.interval:e.interval}function Ho(e){return e.quantity.from==="fixed"?e.billing??"advance":"arrears"}const ve=e=>Math.round((e.to-e.from)/sn);function Yu(e,t,n,r){const o=[],s=[],i=e.graceDays*sn,a=e.proration===!0;for(const c of t){const u=Go(e,c);if(!u)continue;const d=Pn(e,c),l=Ho(c),p=n.filter(m=>m.agreementLineId===c.id);if(d==="once"){const m={from:u.from,to:u.from+sn};u.from+i<=r&&!p.some(_=>!_.correction)&&o.push({lineId:c.id,window:m,part:m,share:1,timing:"advance"});continue}const g=[];for(let m=Je(u.from,d);m.from<(u.to??Number.POSITIVE_INFINITY)&&m.from+i<=r;m=Je(m.to,d))g.push(m);const f=c.quantity.from==="fixed";for(const m of g.slice(-24)){const _=St(u,m),h=m.to+i<=r,y=p.filter(I=>I.servicePeriod.from>=m.from&&I.servicePeriod.from<m.to),b=y.find(I=>!I.correction);if(!b){if(!_)continue;const I=_.from===m.from&&_.to===m.to;if(!(l==="advance"&&I)&&!h)continue;const T=f?Vo(u,m,a):1;T>0&&o.push({lineId:c.id,window:m,part:_,share:T,timing:l});continue}f&&a&&h&&s.push(...zu(c.id,m,_,b,y))}}return{charges:o,corrections:s}}function zu(e,t,n,r,o){const s={...r.servicePeriod};for(const c of o){if(!c.correction)continue;Math.sign(c.quantity)!==Math.sign(r.quantity)?c.servicePeriod.from<=s.from?s.from=c.servicePeriod.to:s.to=c.servicePeriod.from:c.servicePeriod.to<=s.from?s.from=c.servicePeriod.from:s.to=c.servicePeriod.to}const i=[];if(s.to>s.from&&(n?(n.from>s.from&&i.push({part:{from:s.from,to:Math.min(n.from,s.to)},sign:-1}),n.to<s.to&&i.push({part:{from:Math.max(n.to,s.from),to:s.to},sign:-1}),n.from<s.from&&i.push({part:{from:n.from,to:s.from},sign:1}),n.to>s.to&&i.push({part:{from:s.to,to:n.to},sign:1})):i.push({part:s,sign:-1})),r.pricePer){const c=r.pricePer;return i.map(({part:u,sign:d})=>({lineId:e,window:t,part:u,quantity:d*r.quantity,unitPriceCents:r.unitPriceCents,pricePer:c})).filter(u=>u.unitPriceCents!==0&&u.quantity!==0&&ve(u.part)>0)}const a=r.unitPriceCents*ve(t)/Math.max(1,ve(r.servicePeriod));return i.map(({part:c,sign:u})=>({lineId:e,window:t,part:c,quantity:u*r.quantity,unitPriceCents:U(a*ve(c)/ve(t))})).filter(c=>c.unitPriceCents!==0&&c.quantity!==0)}function Xu(e){const t=new Map;let n=0;for(const o of e){if(o.correction){n+=1;continue}const s=t.get(o.timing),{from:i,to:a}=o.servicePeriod;t.set(o.timing,s?{timing:o.timing,from:Math.min(s.from,i),to:Math.max(s.to,a)}:{timing:o.timing,from:i,to:a})}return{spans:["advance","arrears"].flatMap(o=>{const s=t.get(o);return s?[s]:[]}),corrections:n}}const Me=864e5,Yo={draft:["active"],active:["draft","ended"],ended:["active"]};function Qu(e,t){return e===t||Yo[e].includes(t)}function Zu(e){const t=e.graceDays*Me;let n=e.startsAt;for(const r of e.lines??[]){const o=W(e,r),s=Pn(e,r);if(s==="once"){n=Math.max(n,o.from+t);continue}if(o.to==null)return null;o.to<=o.from||(n=Math.max(n,Je(o.to-1,s).to+t))}return e.lines?.length||e.endsAt!=null?n:null}const et=(e,t)=>{const n=new Date(e);return Date.UTC(n.getUTCFullYear(),n.getUTCMonth()+t,n.getUTCDate(),n.getUTCHours(),n.getUTCMinutes())},Ln=e=>e&&e.termMonths>=1?e:void 0;function zo(e,t){return Math.min(...t.map(n=>W(e,n).from))}function re(e,t,n){let r=et(e,Math.max(1,t.termMonths));if(t.renew==="none")return r;const o=t.renew==="month"?1:Math.max(1,t.termMonths);for(let s=0;r<=n&&s<1200;s++)r=et(r,o);return r}function Kn(e,t,n){const r=et(e,Math.max(1,t.termMonths)),o=re(e,t,n);return o===r?e:et(o,-(t.renew==="month"?1:Math.max(1,t.termMonths)))}function Xo(e,t,n){if(t=Ln(t),!t)return null;const r=re(e,t,n),o=r-t.noticeDays*Me;return n<=o?o:t.renew==="none"?null:re(e,t,r)-t.noticeDays*Me}function tt(e,t,n){if(t=Ln(t),!t)return n;const r=re(e,t,n);return n<=r-t.noticeDays*Me||t.renew==="none"?r:re(e,t,r)}function Qo(e,t,n,r){if(t=Ln(t),!t)return{endsAt:n};const o=re(e,t,Math.max(n,e)-1),s=o-t.noticeDays*Me;return r<=s||t.renew==="none"?{endsAt:o,deadline:s}:{endsAt:re(e,t,o),nextTerm:!0}}function Ju(e,t){let n=t;for(const r of e.lines??[]){const o=W(e,r);if(o.to!=null&&o.to<=t)continue;const s=r.commitment??e.commitment;n=Math.max(n,tt(Math.max(o.from,0),s,t))}return n}const Kr=e=>JSON.stringify([e.productId,e.quantity,e.included??0,e.billing??"advance",e.every??"",e.startsAt??null,e.commitment??null]);function el(e,t){return Kr(e)!==Kr(t)}function tl(e,t,n,r){const{endsAt:o,...s}=e,i={...s,...o!=null?{endsAt:o}:{},...n,id:r,seriesId:e.seriesId??e.id,startsAt:t};return[{...e,endsAt:t},i]}const At=(e,t)=>e.from-t.from;function Zo(e,t){const n=[...e??[]].sort(At);return n.filter(r=>r.from<=t).pop()??n[0]}function nl(e,t){return[...e??[]].sort(At).find(n=>n.from>t)}function Jo(e,t){return[...(e??[]).filter(n=>n.from!==t.from),t].sort(At)}function rl(e){const t={};for(const n of e){if(n.correction)continue;const r=n.agreementLineId;t[r]=Math.max(t[r]??0,n.servicePeriod.to)}return t}function ol(e,t,n){if(n==null)return!1;const r=o=>JSON.stringify([...o??[]].filter(s=>s.from<n).sort(At).map(s=>[s.from,s.cents,s.per??null]));return r(e)!==r(t)}function sl(e,t){const{from:n,percent:r}=t,o=new Set(t.ratedProductIds??[]),s=[];return{lines:e.map(a=>{if(a.rateCardId||o.has(a.productId))return s.push({lineId:a.id,skipped:"rated"}),a;const c=Zo(a.prices,n-1);if(!c)return s.push({lineId:a.id,skipped:"ladder"}),a;const u=U(Math.round(c.cents*(100+r)*1e6)/1e8),d=a.prices?.find(p=>p.from===n)?.cents;s.push({lineId:a.id,base:c.cents,next:u,...d!=null?{replaces:d}:{}});const l={from:n,cents:u,...c.per?{per:c.per}:{}};return{...a,prices:Jo(a.prices,l)}}),results:s}}function es(e,t){const n=t.quantity;if(n?.from!=="meter")return null;if(n.accountRef)return{app:n.app,accountRef:n.accountRef};const r=e.sourceAccount;return r&&r.app===n.app?r:null}function il(e){const t=new Map;for(const n of e.lines??[]){const r=es(e,n);r&&t.set([r.app,r.accountRef].join("|"),r)}return[...t.values()]}function al(e,t){return[e,t].join("@")}const vt=[{id:"chat",defaultFlag:"isDefaultLlm",label:"LLM"},{id:"transcription",defaultFlag:"isDefaultStt",label:"STT"},{id:"tts",defaultFlag:"isDefaultTts",label:"TTS"},{id:"embedding",defaultFlag:"isDefaultEmbedding",label:"Embeddings"},{id:"decision",defaultFlag:"isDefaultDecision",label:"Beslissingen"}];function cl(e){return vt.find(t=>t.id===e)?.defaultFlag}function ul(e){const t={};for(const n of vt)t[n.defaultFlag]=e?.[n.defaultFlag]===!0;return t}function ll(e,t){const n={};for(const r of vt){const o=r.defaultFlag;n[o]=(e?.[o]??t?.[o])===!0}return n}const dl={image:"image",pdf:"file",text:"text",audio:"audio",video:"video"};function fl(e,t){if(t==="text")return!0;if(!e?.in?.length)return;const n=dl[t];return n?e.in.includes(n):!1}const ye=["fast","standard","deep"],$r=(e,t)=>{const n=ye.indexOf(e),r=Math.min(ye.length-1,Math.max(0,n+t));return ye[r]},an=e=>ye.indexOf(e);function ts(e){const t=[];let n;return e.expectsSchema?(n="fast",t.push("schema-antwoord")):(e.mode??"agent")==="ask"&&!e.toolCount?(n="fast",t.push("vraag zonder tools")):e.toolCount||e.hasAttachments?(n="standard",t.push(e.hasAttachments?"bijlagen":"tools beschikbaar")):(n="standard",t.push("standaard")),e.repair&&(n=$r(n,1),t.push("herstelbeurt: een tier omhoog")),e.budgetPressure==="soft"&&n!=="fast"&&(n=$r(n,-1),t.push("budget bijna op: een tier omlaag in plaats van weigeren")),e.maxTier&&an(n)>an(e.maxTier)&&(n=e.maxTier,t.push(`plafond van de rol: ${e.maxTier}`)),{tier:n,reasons:t}}function pl(e,t,n){const r=ts(t);if(!e)return{...r,...n,routed:!1};for(let o=an(r.tier);o>=0;o--){const s=ye[o],i=e[s];if(!i?.accountId||!i.model)continue;const a=s===r.tier?r.reasons:[...r.reasons,`${r.tier} niet ingericht, ${s} gebruikt`];return{tier:s,reasons:a,accountId:i.accountId,model:i.model,routed:!0}}return{...r,...n,routed:!1,reasons:[...r.reasons,"geen tier ingericht: het profiel beslist"]}}const cn=255,un=2,ln=10;function ml(e){const t=Object.keys(e);if(!t.length)return"geen vragen gesteld";for(const n of t){const r=e[n];if(!r?.instructions?.trim())return`vraag "${n}" heeft geen instructie`;if(r.type==="choice"){const o=Object.keys(r.criteria??{});if(o.length<2)return`vraag "${n}" heeft minder dan twee opties`;if(o.length>cn)return`vraag "${n}" heeft meer dan ${cn} opties`}if(r.type==="score"){const o=r.criteria?.length??0;if(o<un||o>ln)return`vraag "${n}" heeft ${o} niveaus; het moeten er ${un} tot ${ln} zijn`}}return null}function gl(e,t=.9,n=.6){return Number.isFinite(e)?e>=t?"act":e>=n?"check":"refuse":"refuse"}const hl=["counting or arithmetic","comparing dates or durations","judging whether two numbers are close","generating text"],$n=[{id:"openai",attachmentKinds:["image","pdf"],label:"OpenAI",capabilities:["chat","transcription","embedding"],defaultModel:"gpt-5-mini",baseUrl:"https://api.openai.com/v1"},{id:"gemini",attachmentKinds:["image","pdf"],label:"Google Gemini",capabilities:["chat","transcription","embedding"],defaultModel:"gemini-3.5-flash",baseUrl:"https://generativelanguage.googleapis.com/v1beta"},{id:"anthropic",attachmentKinds:["image","pdf"],label:"Anthropic",capabilities:["chat"],defaultModel:"claude-haiku-4-5",baseUrl:"https://api.anthropic.com/v1"},{id:"elevenlabs",label:"ElevenLabs",capabilities:["transcription"],baseUrl:"https://api.elevenlabs.io/v1"},{id:"typesafe",label:"TypeSafe (Jev)",capabilities:["decision"],defaultModel:"jev-latest",baseUrl:"https://api.typesafe.ai/v1"},{id:"moonshot",label:"Moonshot (Kimi)",capabilities:["chat"],defaultModel:"kimi-k3",baseUrl:"https://api.moonshot.ai/v1"},{id:"deepseek",label:"DeepSeek",capabilities:["chat"],defaultModel:"deepseek-v4-flash",baseUrl:"https://api.deepseek.com/v1"},{id:"groq",label:"Groq",capabilities:["chat"],defaultModel:"openai/gpt-oss-120b",baseUrl:"https://api.groq.com/openai/v1"},{id:"mistral",label:"Mistral",capabilities:["chat"],defaultModel:"mistral-large-latest",baseUrl:"https://api.mistral.ai/v1"},{id:"openrouter",label:"OpenRouter",capabilities:["chat"],defaultModel:"openrouter/auto",baseUrl:"https://openrouter.ai/api/v1"},{id:"ollama",label:"Ollama (self-hosted)",capabilities:["chat"],defaultModel:"llama3.3"},{id:"openai-compatible",label:"OpenAI-compatible (eigen endpoint)",capabilities:["chat"],defaultModel:"default"}];function xe(e){return $n.find(t=>t.id===e)}function yl(e){return xe(e)?.label??e}function bl(e,t="gpt-5-mini"){return xe(e)?.defaultModel??t}function _l(e){return $n.filter(t=>t.capabilities.includes(e))}function Il(e){const t=xe(e);return!!t&&!t.baseUrl}function El(e,t){return t==="text"?!0:xe(e)?.attachmentKinds?.includes(t)===!0}function Sl(e,t){if(!e.enabled)return"ok";const n=dn(e.hardLimitNanos),r=dn(e.softLimitNanos);return n!==void 0&&t>=n?"hard":r!==void 0&&t>=r?"soft":"ok"}function dn(e){return typeof e=="number"?e:void 0}function ns(e,t="month"){const n=new Date(e);return Date.UTC(n.getUTCFullYear(),n.getUTCMonth(),1)}function Al(e,t="month"){const n=new Date(ns(e,t));return`${n.getUTCFullYear()}-${String(n.getUTCMonth()+1).padStart(2,"0")}`}function vl(e){return e==="ask"||e==="draft"||e==="agent"}function Cl(e){return e?.listeningEnabled!==!1}const Tl=["report"],kl=[{id:"agent",label:"Agent",labelSource:"user"},{id:"team",label:"Team",labelSource:"team"},{id:"inbox",label:"Inbox",labelSource:"inbox"},{id:"channel",label:"Kanaal",labelSource:"channel"},{id:"provider",label:"Provider",labelSource:"raw"},{id:"status",label:"Status",labelSource:"raw"},{id:"handledBy",label:"Afhandelaar",labelSource:"raw"},{id:"time",label:"Tijd",labelSource:"raw"}];function qt(e){return e<10?`0${e}`:`${e}`}function _e(e,t){const n=new Date(e),r=`${n.getUTCFullYear()}-${qt(n.getUTCMonth()+1)}-${qt(n.getUTCDate())}`;return t==="day"?r:`${r}T${qt(n.getUTCHours())}`}function Ie(e,t){const n=new Date(e);return n.setUTCMinutes(0,0,0),t==="day"&&n.setUTCHours(0),n.getTime()}const Ol=36e5,Ml=864e5;function Rl(e,t,n){const r=n==="hour"?Ol:Ml,o=[];for(let s=Ie(e,n);s<=t;s+=r)o.push(_e(s,n));return o}const Nl=new Set(["time"]);function Dl(e,t,n){if(!e)return[];const r=new Set(e.supportedDimensions??[]);return t.filter(o=>r.has(o.id)&&!Nl.has(o.id)).map(o=>({id:o.id,label:o.label,options:o.options?.length?o.options:n[o.id]??[]})).filter(o=>o.options.length>0)}function xl(e,t){const n=t.find(o=>o.id===e.dimensionId),r=n?.options.find(o=>o.value===e.value);return`${n?.label??e.dimensionId} · ${r?.label??e.value}`}function wl(e){return{value:e.id,label:`${e.category} · ${e.label}`}}const rs=[{id:"resource",label:"Resource",labelSource:"raw"},{id:"origin",label:"Herkomst",labelSource:"raw"}],os=rs.map(e=>e.id);function ss(e,t){return`${e}.usage.${t}`}function Pl(e,t){return t.map(n=>({id:ss(e,n.unit),label:n.label,category:"Verbruik",valueType:n.valueType??"count",aggregation:"sum",supportedDimensions:["provider",...os,...n.extraDimensions??[],"time"]}))}async function Ll(e,t){let n=0,r=0;for(const o of e)try{await t(o),n++}catch(s){const i=s?.status;if(i===403||i===400)r++;else throw s}return{decided:n,waiting:r}}function Kl(e){return e.approvalRequestIds?.length?[...e.approvalRequestIds]:e.approvalRequestId?[e.approvalRequestId]:[]}function $l(e,t){return e.filter(r=>!r.enabled||r.scopeKind!==t.scopeKind||r.act!==t.act?!1:r.minAmountCents==null?!0:t.amountCents!=null&&t.amountCents>=r.minAmountCents).sort((r,o)=>{const s=r.minAmountCents??-1;return(o.minAmountCents??-1)-s||r.id.localeCompare(o.id)})[0]}function Ul(e,t,n,r){const o=new Set(e.userIds);for(const s of e.teamIds)for(const i of t[s]??[])o.add(i);return r||o.delete(n),[...o]}function Bl(e,t){if(e.status!=="pending"||e.decisions.some(s=>s.userId===t.userId))return e;const n=[...e.decisions,t],r=e.pendingUserIds.filter(s=>s!==t.userId);if(t.decision==="rejected")return{...e,decisions:n,pendingUserIds:r,status:"rejected",settledAt:t.at};const o=e.rule==="any"||r.length===0;return{...e,decisions:n,pendingUserIds:r,status:o?"approved":"pending",settledAt:o?t.at:void 0}}const is=new Set(["info","success","warning","destructive"]),nt=200,rt=100,ot=200,st=12,it=4,fn=10,as=8,pn=12,Ct=4e3,he=500,cs=1024*1024,Fl=new Set(["heading","paragraph","list","quote","code","divider","table","kpi","callout","image","letterhead","totals","pagebreak"]),us=["http:","https:","mailto:","tel:"],jl=/^[a-z][a-z0-9+.-]*:/i;function Un(e){const t=e.trim().replace(/^<|>$/g,"");if(!t)return!1;const n=jl.exec(t)?.[0];return n?us.includes(n.toLowerCase()):!t.startsWith("//")}const ql=/^[ \t]{0,3}\[([^\]]+)\]:[ \t]*(\S+).*$/gm;function Gl(e){let t="",n=0;for(;n<e.length;){const r=e[n]==="!"&&e[n+1]==="[";if(e[n]!=="["&&!r){t+=e[n],n+=1;continue}const o=n+(r?2:1),s=Ur(e,o,"[","]");if(s<0||e[s+1]!=="("){t+=e[n],n+=1;continue}const i=Ur(e,s+2,"(",")");if(i<0){t+=e[n],n+=1;continue}const a=e.slice(o,s),c=e.slice(s+2,i).trim().split(/\s+/)[0]??"";t+=r||!Un(c)?a:e.slice(n,i+1),n=i+1}return t}function Ur(e,t,n,r){let o=1;for(let s=t;s<e.length;s+=1){if(e[s]==="\\"){s+=1;continue}if(e[s]===n)o+=1;else if(e[s]===r&&(o-=1,o===0))return s}return-1}function ls(e){return Gl(e).replace(ql,(t,n,r)=>Un(r)?t:"")}function j(e,t=Ct){return typeof e=="string"?ls(e).slice(0,t):""}function Vl(e,t=Ct){return typeof e=="string"?e.slice(0,t):""}function Ce(e,t=200){return j(e,t)}function Wl(e,t="info"){return typeof e=="string"&&is.has(e)?e:t}function ds(e,t=()=>{}){if(!Array.isArray(e))return[];const n=[];for(const r of e){if(n.length>=nt){t(`more than ${nt} blocks; the rest was dropped`);break}if(!r||typeof r!="object")continue;const o=r;if(!Fl.has(o.type)){t(`unknown block type ${String(o.type)}`);continue}const s=typeof o.block_id=="string"?{block_id:o.block_id}:{};switch(o.type){case"heading":{const i=j(o.text);if(!i){t("a heading without text");continue}const a=o.level===2||o.level===3?o.level:1;n.push({...s,type:"heading",level:a,text:i});break}case"paragraph":{const i=j(o.text);if(!i){t("a paragraph without text");continue}n.push({...s,type:"paragraph",text:i});break}case"quote":{const i=j(o.text);if(!i){t("a quote without text");continue}n.push({...s,type:"quote",text:i});break}case"code":{const i=Vl(o.text);if(!i){t("a code block without text");continue}const a=typeof o.lang=="string"?{lang:o.lang.slice(0,32)}:{};n.push({...s,type:"code",...a,text:i});break}case"divider":n.push({...s,type:"divider"});break;case"list":{const i=Array.isArray(o.items)?o.items:[],a=[];for(const u of i){if(a.length>=rt){t(`more than ${rt} list items`);break}const d=j(u?.text);if(!d)continue;const l=j(u?.lead,200);a.push(l?{lead:l,text:d}:{text:d})}if(a.length===0){t("a list without usable items");continue}const c=o.style==="numbered"?"numbered":"bulleted";n.push({...s,type:"list",style:c,items:a});break}case"table":{const i=Array.isArray(o.columns)?o.columns:[],a=[];for(const l of i){if(a.length>=st){t(`more than ${st} table columns`);break}const p=j(l?.label,he),g=l?.align==="right"?"right":void 0;a.push(g?{label:p,align:g}:{label:p})}if(a.length===0){t("a table without columns");continue}const c=Array.isArray(o.rows)?o.rows:[],u=[];for(const l of c){if(u.length>=ot){t(`more than ${ot} table rows`);break}const p=Array.isArray(l)?l:[];u.push(a.map((g,f)=>j(p[f],he)))}const d=j(o.caption,he);n.push({...s,type:"table",columns:a,rows:u,...d?{caption:d}:{}});break}case"kpi":{const i=Array.isArray(o.items)?o.items:[],a=[];for(const c of i){if(a.length>=it){t(`more than ${it} kpi items`);break}const u=j(c?.value,40),d=j(c?.label,80);if(!u||!d)continue;const l=c?.tone;a.push(typeof l=="string"&&is.has(l)?{value:u,label:d,tone:l}:{value:u,label:d})}if(a.length===0){t("a kpi block without usable items");continue}n.push({...s,type:"kpi",items:a});break}case"image":{const i=typeof o.url=="string"?o.url.trim():"";if(!i||!Un(i)){t("an image without a usable url");continue}const a=j(o.alt,200),c=j(o.caption,he);n.push({...s,type:"image",url:i,...a?{alt:a}:{},...c?{caption:c}:{}});break}case"letterhead":{const i=Array.isArray(o.fields)?o.fields:[],a=[];for(const d of i){if(a.length>=fn){t(`more than ${fn} letterhead fields`);break}const l=d,p=typeof l?.key=="string"?l.key.slice(0,48):"",g=Ce(l?.value);if(!p||!g)continue;const f=Ce(l?.label,80);a.push(f?{key:p,label:f,value:g}:{key:p,value:g})}const u=(Array.isArray(o.recipient)?o.recipient:[]).slice(0,as).map(d=>Ce(d)).filter(Boolean);if(a.length===0&&u.length===0){t("a letterhead without fields or recipient");continue}n.push({...s,type:"letterhead",fields:a,...u.length>0?{recipient:u}:{}});break}case"totals":{const i=u=>{const d=Array.isArray(u)?u:[],l=[];for(const p of d){if(l.length>=pn){t(`more than ${pn} totals rows`);break}const g=p,f=Ce(g?.label),m=Ce(g?.amount,40);!f||!m||l.push(g?.emphasis===!0?{label:f,amount:m,emphasis:!0}:{label:f,amount:m})}return l},a=i(o.rows);if(a.length===0&&!o.block_id){t("a totals block without usable rows");continue}const c=i(o.taxRows);n.push({...s,type:"totals",rows:a,...c.length>0?{taxRows:c}:{}});break}case"pagebreak":n.push({...s,type:"pagebreak"});break;case"callout":{const i=j(o.text);if(!i){t("a callout without text");continue}const a=j(o.title,200);n.push({...s,type:"callout",tone:Wl(o.tone),...a?{title:a}:{},text:i});break}}}return n}function fs(e){return JSON.stringify(e).length}function ps(e){return{blocks:e.length,types:e.map(t=>t.type),headings:e.flatMap(t=>t.type==="heading"?[t.text]:[])}}function Br(e){return e.replace(/\|/g,"\\|").replace(/\r?\n/g," ").trim()}function Gt(e,t,n){const r=e.map((o,s)=>n?.[s]==="right"?"---:":"---");return[`| ${e.map(Br).join(" | ")} |`,`| ${r.join(" | ")} |`,...t.map(o=>`| ${o.map(Br).join(" | ")} |`)]}function Hl(e){switch(e.type){case"heading":return[`${"#".repeat(e.level)} ${e.text}`];case"paragraph":return[e.text];case"quote":return e.text.split(/\r?\n/).map(t=>`> ${t}`);case"code":return[`\`\`\`${e.lang??""}`,e.text,"```"];case"divider":return["---"];case"list":return e.items.map((t,n)=>{const r=e.style==="numbered"?`${n+1}.`:"-";return t.lead?`${r} **${t.lead}** ${t.text}`:`${r} ${t.text}`});case"table":{const t=Gt(e.columns.map(n=>n.label),e.rows,e.columns.map(n=>n.align??"left"));return e.caption?[...t,"",`*${e.caption}*`]:t}case"kpi":return Gt(e.items.map(t=>t.value),[e.items.map(t=>t.label)]);case"callout":return(e.title?`**${e.title}** ${e.text}`:e.text).split(/\r?\n/).map(n=>`> ${n}`);case"image":{const t=``;return e.caption?[t,"",`*${e.caption}*`]:[t]}case"letterhead":{const t=[...e.recipient??[]];t.length>0&&e.fields.length>0&&t.push("");for(const n of e.fields)t.push(n.label?`**${n.label}:** ${n.value}`:n.value);return t.map((n,r)=>r<t.length-1?`${n} `:n)}case"totals":return Gt(["",""],[...e.rows,...e.taxRows??[]].map(t=>[t.emphasis?`**${t.label}**`:t.label,t.emphasis?`**${t.amount}**`:t.amount]),["left","right"]);case"pagebreak":return["---"]}}function Bn(e,t){const n=[],r=e.some(o=>o.type==="heading"&&o.level===1);t&&!r&&n.push(`# ${t}`);for(const o of e){const s=Hl(o);s.length>0&&n.push(s.join(`
|
|
3
|
+
`),t=t.replace(Au,"$2"),t=t.replace(vu,"$2"),t=t.replace(/~~(?=\S)([\s\S]*?\S)~~/g,"$1"),t=t.replace(/`([^`\n]+)`/g,"$1"),t.replace(/\s+/g," ").trim()}function $o(e){return e.replace(/<style[\s\S]*?<\/style>/gi," ").replace(/<script[\s\S]*?<\/script>/gi," ").replace(/<[^>]+>/g," ").replace(/ /g," ").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'").replace(/\s+/g," ").trim()}function $e(e){if(!e||e<0)return"";const t=Math.floor(e/60),n=Math.floor(e%60);return`${t}:${n.toString().padStart(2,"0")}`}function Rr(e){return e?` — ${Math.floor(e/60)}m ${e%60}s`:""}function jt(e){return e?.split("@")?.[0]||e||""}function Ue(e){return e.map(t=>t.name).join(", ")}function Nr(e){return e==="meeting"?"Meeting":e==="video"?"Video call":"Audio call"}const ne={VOICE_CALL_STARTED:{shape:"event",channelKind:"voice",icon:"phone",snippet:()=>"Gesprek gestart",timeline:e=>e.direction==="inbound"?`Inbound call started — ${jt(e.payload.from)}`:`Outbound call started — ${jt(e.payload.to)}`},VOICE_CALL_ANSWERED:{shape:"event",channelKind:"voice",icon:"phone",connected:!0,snippet:()=>"Gesprek aangenomen",timeline:(e,t)=>`Call answered — ${t}`},VOICE_CALL_HOLD:{shape:"event",channelKind:"voice",icon:"phone",snippet:()=>"In de wacht",timeline:(e,t)=>`Call on hold — ${t}`},VOICE_CALL_UNHOLD:{shape:"event",channelKind:"voice",icon:"phone",snippet:()=>"Hervat"},VOICE_CALL_ENDED:{shape:"event",channelKind:"voice",icon:"phone",snippet:e=>`Gesprek beëindigd${e.payload.duration?` (${$e(e.payload.duration)})`:""}`,timeline:e=>`Call ended${Rr(e.payload.duration)}`},VOICE_CALL_MISSED:{shape:"event",channelKind:"voice",icon:"phone",snippet:()=>"Gemiste oproep",timeline:e=>`Missed call — ${jt(e.payload.from)}`},VOICE_CALL_FAILED:{shape:"event",channelKind:"voice",icon:"phone",snippet:()=>"Gesprek mislukt",timeline:()=>"Call failed"},VOICE_CALL_VOICEMAIL:{shape:"artifact",channelKind:"voice",icon:"phone",snippet:e=>e.payload.transcription?.trim()?e.payload.transcription:"Voicemail ontvangen"},VIDEO_CALL_STARTED:{shape:"event",channelKind:"video",icon:"video",snippet:()=>"Gesprek gestart",timeline:()=>"Video call started"},VIDEO_CALL_ANSWERED:{shape:"event",channelKind:"video",icon:"video",connected:!0,snippet:()=>"Gesprek aangenomen",timeline:()=>"Video call answered"},VIDEO_CALL_HOLD:{shape:"event",channelKind:"video",icon:"video",snippet:()=>"In de wacht"},VIDEO_CALL_UNHOLD:{shape:"event",channelKind:"video",icon:"video",snippet:()=>"Hervat"},VIDEO_CALL_ENDED:{shape:"event",channelKind:"video",icon:"video",snippet:e=>`Gesprek beëindigd${e.payload.duration?` (${$e(e.payload.duration)})`:""}`,timeline:()=>"Video call ended"},VIDEO_CALL_MISSED:{shape:"event",channelKind:"video",icon:"video",snippet:()=>"Gemiste oproep",timeline:()=>"Missed video call"},VIDEO_CALL_FAILED:{shape:"event",channelKind:"video",icon:"video",snippet:()=>"Gesprek mislukt",timeline:()=>"Video call failed"},EMAIL_RECEIVED:{shape:"message",triggerable:!0,displayNameKey:"communication:activity.EMAIL_RECEIVED",component:"communication:EmailActivity",channelKind:"mail",icon:"mail",replyable:!0,carriesText:!0,countsAs:"inbound_message",snippet:Dr},EMAIL_SENT:{shape:"message",component:"communication:EmailActivity",channelKind:"mail",icon:"mail",replyable:!0,carriesText:!0,countsAs:"outbound_message",snippet:Dr},CHAT_MESSAGE_SENT:{shape:"message",component:"communication:ChatMessage",channelKind:"chat",icon:"message-circle",replyable:!0,carriesText:!0,countsAs:"outbound_message",snippet:e=>e.payload.text??""},CHAT_MESSAGE_RECEIVED:{shape:"message",triggerable:!0,displayNameKey:"communication:activity.CHAT_MESSAGE_RECEIVED",component:"communication:ChatMessage",channelKind:"chat",icon:"message-circle",replyable:!0,carriesText:!0,countsAs:"inbound_message",snippet:e=>e.payload.text??""},CHAT_MEMBER_JOINED:{shape:"event",channelKind:"chat",icon:"message-circle",snippet:e=>`${Ue(e.payload.members)} toegevoegd`,timeline:e=>{const t=Ue(e.payload.members)||"Someone",n=e.payload.initiator?.name?` · added by ${e.payload.initiator.name}`:"";return`${t} joined the chat${n}`}},CHAT_MEMBER_LEFT:{shape:"event",channelKind:"chat",icon:"message-circle",snippet:e=>`${Ue(e.payload.members)} verlaten`,timeline:e=>{const t=Ue(e.payload.members)||"Someone",n=e.payload.initiator?.name?` · removed by ${e.payload.initiator.name}`:"";return`${t} left the chat${n}`}},CHAT_RENAMED:{shape:"event",channelKind:"chat",icon:"message-circle",snippet:e=>`Hernoemd naar "${e.payload.newName}"`,timeline:e=>`Chat renamed to "${e.payload.newName}"${e.payload.initiator?` by ${e.payload.initiator.name}`:""}`},CHAT_CALL_STARTED:{shape:"event",channelKind:"chat",icon:"message-circle",snippet:()=>"Gesprek gestart",timeline:e=>`${Nr(e.payload.callType)} started${e.payload.initiator?` by ${e.payload.initiator.name}`:""}`,joinUrl:e=>e.payload.joinUrl},CHAT_CALL_ENDED:{shape:"event",channelKind:"chat",icon:"message-circle",snippet:e=>`Gesprek beëindigd${e.payload.duration?` (${$e(e.payload.duration)})`:""}`,timeline:e=>`${Nr(e.payload.callType)} ended${Rr(e.payload.duration)}`,joinUrl:e=>e.payload.joinUrl},CHAT_EVENT:{shape:"event",channelKind:"chat",icon:"message-circle",snippet:e=>e.payload.text??e.payload.eventType,timeline:e=>e.payload.text||e.payload.eventType},TRANSCRIPT_ADDED:{shape:"artifact",triggerable:!0,displayNameKey:"communication:activity.TRANSCRIPT_ADDED",component:"communication:TranscriptionActivity",icon:"captions",carriesText:!0,snippet:e=>(e.payload.segments??[]).map(t=>t.text).join(" ")},COMMENT_ADDED:{shape:"note",component:"communication:CommentActivity",icon:"sticky-note",carriesText:!0,snippet:e=>e.payload.text??""},FILE_UPLOADED:{shape:"artifact",component:"communication:FileActivity",icon:"paperclip",snippet:e=>`Bestand: ${e.payload.fileName}`},AI_MESSAGE_ADDED:{shape:"event",triggerable:!0,displayNameKey:"communication:activity.AI_MESSAGE_ADDED",icon:"circle",snippet:e=>e.payload.output?.text??e.payload.input?.text??"",timeline:()=>"AI message added"},AI_ACTION_PROPOSED:{shape:"event",component:"communication:ProposedActionCard",icon:"circle",playbookAuthored:!0,snippet:e=>`Voorstel wacht op goedkeuring (${e.payload.actions?.length??0} actie(s))`},PLAYBOOK_STARTED:{shape:"event",icon:"circle",playbookAuthored:!0,snippet:e=>`Playbook gestart${e.payload.playbookName?`: ${e.payload.playbookName}`:""}`,timeline:e=>`Playbook gestart${e.payload.playbookName?` — ${e.payload.playbookName}`:""}`},PLAYBOOK_COMPLETED:{shape:"event",icon:"circle",playbookAuthored:!0,snippet:()=>"Playbook afgerond",timeline:()=>"Playbook afgerond"},PLAYBOOK_ESCALATED:{shape:"event",icon:"circle",playbookAuthored:!0,snippet:()=>"Playbook geëscaleerd naar een mens",timeline:()=>"Playbook geëscaleerd naar een mens"},AGENT_DELEGATED:{shape:"event",icon:"circle",playbookAuthored:!0,snippet:e=>`${e.payload.fromAgentName} vroeg ${e.payload.toAgentName??"een collega"}${e.payload.ask?`: ${e.payload.ask}`:""}`,timeline:e=>`${e.payload.fromAgentName} schakelde ${e.payload.toAgentName??"een collega"} in`},AGENT_ANSWERED:{shape:"event",icon:"circle",playbookAuthored:!0,snippet:e=>`${e.payload.fromAgentName} beantwoordde de deelvraag`,timeline:e=>`${e.payload.fromAgentName} beantwoordde de deelvraag`},MEETING_SCHEDULED:{shape:"event",icon:"calendar",snippet:e=>`Vergadering gepland: ${e.payload.title}`,timeline:()=>"Meeting scheduled",joinUrl:e=>e.payload.joinUrl},MEETING_STARTED:{shape:"event",icon:"calendar",connected:!0,snippet:e=>`Vergadering gestart: ${e.payload.title}`,timeline:()=>"Meeting started",joinUrl:e=>e.payload.joinUrl},MEETING_ENDED:{shape:"event",icon:"calendar",snippet:e=>`Vergadering beëindigd${e.payload.duration?` (${$e(e.payload.duration)})`:""}`,timeline:()=>"Meeting ended"},MEETING_PARTICIPANT_JOINED:{shape:"event",icon:"calendar",snippet:e=>`${e.payload.name} deelgenomen`,timeline:(e,t)=>`${t} joined the meeting`},MEETING_PARTICIPANT_LEFT:{shape:"event",icon:"calendar",snippet:e=>`${e.payload.name} verlaten`,timeline:(e,t)=>`${t} left the meeting`},INTERACTION_CREATED:{shape:"event",icon:"circle",snippet:()=>"Interactie aangemaakt",timeline:(e,t)=>`Interaction started by ${t}`},INTERACTION_STATUS_CHANGED:{shape:"event",triggerable:!0,displayNameKey:"communication:activity.INTERACTION_STATUS_CHANGED",icon:"circle-dot",snippet:e=>`Status: ${e.payload.fromStatus} → ${e.payload.toStatus}`,timeline:(e,t)=>`Status changed to ${e.payload.toStatus} by ${t}`},INTERACTION_ASSIGNED:{shape:"event",icon:"user",snippet:()=>"Interactie toegewezen",timeline:(e,t)=>`Assigned by ${t}`},SLA_BREACHED:{shape:"event",triggerable:!0,displayNameKey:"communication:activity.SLA_BREACHED",icon:"alarm-clock",snippet:e=>`SLA verlopen: ${e.payload.metric}`,timeline:e=>`SLA target ${e.payload.metric} passed its deadline`},WORK_COMMENT_ADDED:{shape:"note",icon:"sticky-note",carriesText:!0,snippet:()=>"Reactie"},WORK_ITEM_ASSIGNED:{shape:"event",icon:"user",snippet:()=>"Taak toegewezen",timeline:(e,t)=>`Assigned by ${t}`},WORK_ITEM_STATUS_CHANGED:{shape:"event",triggerable:!0,icon:"circle-dot",snippet:()=>"Status gewijzigd",timeline:(e,t)=>`Status changed by ${t}`},CRM_NOTE_ADDED:{shape:"note",icon:"sticky-note",carriesText:!0,snippet:()=>"Notitie"},CRM_CALL_LOGGED:{shape:"note",icon:"phone",carriesText:!0,snippet:()=>"Gesprek vastgelegd"},CRM_STAGE_CHANGED:{shape:"event",icon:"circle-dot",snippet:()=>"Fase gewijzigd",timeline:(e,t)=>`Stage changed by ${t}`}};function Dr(e){const t=e.payload,n=Ko(t.bodyText).trim()||t.bodySnippet?.trim()||$o(t.body??"");return t.subject?`${t.subject} — ${n}`:n}function H(e){return ne[e]}function Cu(e){return H(e)?.icon??"circle"}function Tu(e){return H(e)?.channelKind}function xn(e){return e==="message"||e==="note"}function ku(e){return xn(H(e)?.shape)}function wn(e){return e==="note"}function Ou(e){return wn(H(e)?.shape)}function Mu(e){return H(e)?.replyable===!0}function Ru(e){return H(e)?.carriesText===!0}function Uo(e){return H(e)?.countsAs}function Nu(e){return H(e)?.playbookAuthored===!0}function Du(e){return H(e)?.connected===!0}function xu(e){const t=H(e);return t?.shape==="artifact"&&t?.carriesText===!0}function Fo(e){const t=H(e.type)?.snippet;return t?t(e):""}function wu(e,t){const n=H(e.type)?.timeline;return n?n(e,t):e.type.replace(/_/g," ").toLowerCase()}function Pu(e){const t=H(e.type)?.joinUrl;return t?t(e):void 0}function Xe(e,t){let n=e;for(const r of t.split(".")){if(n==null||typeof n!="object")return"";n=n[r]}return n==null?"":typeof n=="string"?n:typeof n=="number"||typeof n=="boolean"?String(n):""}function Qe(e,t,n){if(e===void 0)return null;if(typeof e=="string")return e||null;if("value"in e)return Xe(t,e.value)||null;const r={};for(const[s,i]of Object.entries(e.params??{}))r[s]=Xe(t,i);const o=n(e.key,r);return o===e.key?null:o}function Bo(e,t){if(!e||typeof e=="string"||"value"in e)return null;const n={};for(const[r,o]of Object.entries(e.params??{}))n[r]=Xe(t,o);return{key:e.key,params:n}}const xr=140;function Lu(e){const t=e.trim();return t.length<=xr?t:`${t.slice(0,xr-1).trimEnd()}…`}function Ku(e,t){const n=Bo(t?.text,e),r=t?Qe(t.text,e,o=>o):null;return{activityId:e.id,type:e.type,snippet:Lu(r??Fo(e)),authorName:e.author?.name??"",direction:e.direction,createdAt:e.createdAt??Date.now(),...n?{snippetKey:n.key,snippetParams:n.params}:{}}}const $u=e=>e;function wr(e){const t=ne[e];return{type:e,shape:t.shape,channelKind:t.channelKind,icon:t.icon,replyable:t.replyable===!0,countsAs:t.countsAs,carriesText:t.carriesText===!0,triggerable:t.triggerable===!0,component:t.component,builtIn:!0,displayNameKey:t.displayNameKey}}function Pr(e){return{type:e.type,shape:e.shape,channelKind:e.channelKind,icon:e.icon||"circle",replyable:e.replyable===!0,countsAs:e.countsAs,carriesText:e.carriesText===!0,triggerable:e.triggerable===!0,component:e.component,builtIn:!1,displayNameKey:e.displayNameKey}}class jo{constructor(t=[],n=$u){this.translate=n;for(const r of t)r?.type&&(r.type in ne||this.declared.has(r.type)||this.declared.set(r.type,r))}declared=new Map;get(t){if(t in ne)return wr(t);const n=this.declared.get(t);return n?Pr(n):void 0}triggerable(){const t=Object.keys(ne).filter(r=>ne[r].triggerable).map(wr),n=[...this.declared.values()].map(Pr).filter(r=>r.triggerable);return[...t,...n]}timelineText(t,n){const r=ne[t.type];if(r?.timeline)return r.timeline(t,n);const o=this.declared.get(t.type);return Qe(o?.text,t,this.translate)??t.type.replace(/_/g," ").toLowerCase()}snippet(t){const n=ne[t.type];if(n?.snippet)return n.snippet(t);const r=this.declared.get(t.type);return Qe(r?.text,t,this.translate)??""}descriptor(t){return this.declared.get(t)}blocks(t){const n=this.declared.get(t)?.render;return n?.length?n:void 0}isMessage(t){return xn(this.get(t)?.shape)}nestsUnderParent(t){return wn(this.get(t)?.shape)}isReplyable(t){return this.get(t)?.replyable===!0}carriesText(t){return this.get(t)?.carriesText===!0}countsAs(t){return this.get(t)?.countsAs}channelKind(t){return this.get(t)?.channelKind}isTranscript(t){const n=this.get(t);return n?.shape==="artifact"&&n.carriesText}get translator(){return this.translate}}const Uu=new jo;function Fu(e,t,n=[]){const r=e.createdAt;if(!r)return[];const o=new Set(n);return e.author.type==="user"&&e.author.id&&o.add(e.author.id),Object.entries(t).filter(([s,i])=>i>=r&&!o.has(s)).map(([s])=>s)}function qo(e){return e.createdAt??0}function Bu(e){return e.type==="EMAIL_RECEIVED"||e.type==="EMAIL_SENT"}function ju(e){return e.type==="CHAT_MESSAGE_SENT"||e.type==="CHAT_MESSAGE_RECEIVED"}function U(e){return e<0?-Math.round(-e):Math.round(e)}function de(e,t){if(t.length===0)return[];const n=t.reduce((c,u)=>c+u,0);if(n===0)return t.map((c,u)=>u===0?e:0);const r=t.map(c=>e*c/n),o=r.map(c=>Math.trunc(c));let s=e-o.reduce((c,u)=>c+u,0);const i=r.map((c,u)=>({index:u,fraction:Math.abs(c-o[u])})).sort((c,u)=>u.fraction-c.fraction),a=s<0?-1:1;for(let c=0;s!==0&&c<i.length;c++)o[i[c].index]+=a,s-=a;return o}function J(e,t={}){const n=t.decimal??",",r=t.group??".",o=e<0,s=Math.abs(Math.trunc(e)).toString().padStart(3,"0"),i=s.slice(0,-2),a=s.slice(-2);let c="";for(let u=0;u<i.length;u++)u>0&&(i.length-u)%3===0&&(c+=r),c+=i[u];return`${o?"-":""}${c}${n}${a}`}function nn(e){const t=e.trim().replace(/[\s ]/g,"");if(!t)return;const n=t.replace(/^[-+]?[^\d.,-]*/,"").replace(/[^\d.,-]+$/,""),r=/^-/.test(t)||/-$/.test(t),o=n.replace(/-/g,"");if(!o||!/^[\d.,]+$/.test(o))return;const s=o.lastIndexOf(","),i=o.lastIndexOf("."),a=Math.max(s,i),c=a===-1?"":o.slice(a+1),u=a!==-1&&c.length>=1&&c.length<=2,d=u?o.slice(0,a):o;if(!qu(d))return;const l=d.replace(/[.,]/g,""),p=u?c.padEnd(2,"0"):"00";if(l==="")return;const g=Number(l)*100+Number(p);return r?-g:g}function qu(e){return/^\d+$/.test(e)?!0:e.includes(".")&&e.includes(",")?!1:/^\d{1,3}([.,]\d{3})*$/.test(e)}function Gu(e){return e.costPriceCents==null?e.netCents:e.netCents-U(e.costPriceCents*e.quantity)}const Wu=["month","quarter","year"],Ze={month:1,quarter:3,year:12},Vu=864e5,Hu=e=>{const t=new Date(e);return Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),1)},Lr=e=>{const t=new Date(e);return Date.UTC(t.getUTCFullYear(),t.getUTCMonth()+1,1)},Kr=(e,t)=>Math.round((t-e)/Vu);function Et(e,t,n){const r=Ze[t],o=de(e,Array.from({length:r},()=>1));let s=0;for(let i=Hu(n.from);i<n.to;i=Lr(i)){const a=Lr(i),c=Math.max(i,n.from),u=Math.min(a,n.to);if(u<=c)continue;const d=o[new Date(i).getUTCMonth()%r];s+=d*Kr(c,u)/Kr(i,a)}return U(s)}function Go(e,t,n){return!t||!n||t===n?e:U(e*Ze[n]/Ze[t])}function Yu(e){return typeof e=="string"&&e in Ze}const rn=e=>Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0&&t!==""));function zu(e){const{role:t,agreement:n={},asked:r={}}=e,o=r.invoiceTo||r.contactId||r.billingAddressId?r:n,s=r.paymentTerm??n.paymentTerm,i=rn({...o.invoiceTo?{invoiceTo:rn({companyId:o.invoiceTo.companyId,contactId:o.contactId})}:{contactId:o.contactId},billingAddressId:o.billingAddressId,paymentTerm:s,reference:r.reference??n.reference}),a=s?.code||t?.paymentTermKey;return{head:i,...a?{paymentTermCode:a}:{}}}function Wo(e){return rn({contactId:e.invoiceTo?e.invoiceTo.contactId:e.contactId,invoiceTo:e.invoiceTo?.companyId?{companyId:e.invoiceTo.companyId}:void 0,billingAddressId:e.billingAddressId,paymentTerm:e.paymentTerm,reference:e.reference})}function Vo(e){return e.kind==="product"&&!e.optional&&!!e.productId&&!!e.pricePer}function Xu(e,t){const n=e.lines.filter(Vo).map(r=>({id:"",productId:r.productId,name:r.name,quantity:{from:"fixed",value:r.quantity},prices:[{from:t,cents:U(r.unitPriceCents*(1-(r.discountPercent??0)/100)),...r.pricePer?{per:r.pricePer}:{}}],...r.configurationId?{configurationId:r.configurationId}:{},...r.optionKey?{optionKey:r.optionKey}:{}}));return{title:e.title||e.reference||"",companyId:e.companyId,invoice:Wo(e),currency:e.currency,status:"draft",startsAt:t,interval:"month",sourceTransactionId:e.id,...e.taxOverrideKey?{taxOverrideKey:e.taxOverrideKey}:{},lines:n}}function Qu(e){const t={from:Date.UTC(2026,0,1),to:Date.UTC(2027,0,1)};return e.lines.reduce((n,r)=>r.kind!=="product"||r.optional?n:n+(r.pricePer?Et(r.netCents,r.pricePer,t):r.netCents),0)}const on={month:1,quarter:3,year:12},Zu=864e5;function Ju(e,t){return on[e]<on[t]}function Je(e,t){const n=new Date(e),r=on[t],o=Math.floor(n.getUTCMonth()/r)*r;return{from:Date.UTC(n.getUTCFullYear(),o,1),to:Date.UTC(n.getUTCFullYear(),o+r,1)}}function V(e,t){const n=Math.max(e.startsAt,t.startsAt??e.startsAt),r=[e.endsAt,t.endsAt].filter(o=>o!=null);return r.length?{from:n,to:Math.min(...r)}:{from:n}}function Ho(e,t){const n=V(e,t);return t.billingStart!=="activation"?n:t.activatedAt==null?null:{...n,from:Math.max(n.from,t.activatedAt)}}function St(e,t){const n=Math.max(e.from,t.from),r=Math.min(e.to??t.to,t.to);return r>n?{from:n,to:r}:null}function Yo(e,t,n){const r=St(e,t);if(!r)return 0;if(r.from===t.from&&r.to===t.to)return 1;if(!n)return 0;const o=(s,i)=>Math.round((i-s)/Zu);return o(r.from,r.to)/o(t.from,t.to)}function zo(e,t,n){const r=V(e,t);return r.to!=null&&r.to<=n?"ended":r.from>n?"planned":"active"}function el(e,t,n){return t.filter(r=>zo(e,r,n)!=="ended")}const sn=864e5;function Pn(e,t){return t.quantity.from==="fixed"?t.every??e.interval:e.interval}function Xo(e){return e.quantity.from==="fixed"?e.billing??"advance":"arrears"}const ve=e=>Math.round((e.to-e.from)/sn);function tl(e,t,n,r){const o=[],s=[],i=e.graceDays*sn,a=e.proration===!0;for(const c of t){const u=Ho(e,c);if(!u)continue;const d=Pn(e,c),l=Xo(c),p=n.filter(m=>m.agreementLineId===c.id);if(d==="once"){const m={from:u.from,to:u.from+sn};u.from+i<=r&&!p.some(_=>!_.correction)&&o.push({lineId:c.id,window:m,part:m,share:1,timing:"advance"});continue}const g=[];for(let m=Je(u.from,d);m.from<(u.to??Number.POSITIVE_INFINITY)&&m.from+i<=r;m=Je(m.to,d))g.push(m);const f=c.quantity.from==="fixed";for(const m of g.slice(-24)){const _=St(u,m),h=m.to+i<=r,y=p.filter(I=>I.servicePeriod.from>=m.from&&I.servicePeriod.from<m.to),b=y.find(I=>!I.correction);if(!b){if(!_)continue;const I=_.from===m.from&&_.to===m.to;if(!(l==="advance"&&I)&&!h)continue;const T=f?Yo(u,m,a):1;T>0&&o.push({lineId:c.id,window:m,part:_,share:T,timing:l});continue}f&&a&&h&&s.push(...nl(c.id,m,_,b,y))}}return{charges:o,corrections:s}}function nl(e,t,n,r,o){const s={...r.servicePeriod};for(const c of o){if(!c.correction)continue;Math.sign(c.quantity)!==Math.sign(r.quantity)?c.servicePeriod.from<=s.from?s.from=c.servicePeriod.to:s.to=c.servicePeriod.from:c.servicePeriod.to<=s.from?s.from=c.servicePeriod.from:s.to=c.servicePeriod.to}const i=[];if(s.to>s.from&&(n?(n.from>s.from&&i.push({part:{from:s.from,to:Math.min(n.from,s.to)},sign:-1}),n.to<s.to&&i.push({part:{from:Math.max(n.to,s.from),to:s.to},sign:-1}),n.from<s.from&&i.push({part:{from:n.from,to:s.from},sign:1}),n.to>s.to&&i.push({part:{from:s.to,to:n.to},sign:1})):i.push({part:s,sign:-1})),r.pricePer){const c=r.pricePer;return i.map(({part:u,sign:d})=>({lineId:e,window:t,part:u,quantity:d*r.quantity,unitPriceCents:r.unitPriceCents,pricePer:c})).filter(u=>u.unitPriceCents!==0&&u.quantity!==0&&ve(u.part)>0)}const a=r.unitPriceCents*ve(t)/Math.max(1,ve(r.servicePeriod));return i.map(({part:c,sign:u})=>({lineId:e,window:t,part:c,quantity:u*r.quantity,unitPriceCents:U(a*ve(c)/ve(t))})).filter(c=>c.unitPriceCents!==0&&c.quantity!==0)}function rl(e){const t=new Map;let n=0;for(const o of e){if(o.correction){n+=1;continue}const s=t.get(o.timing),{from:i,to:a}=o.servicePeriod;t.set(o.timing,s?{timing:o.timing,from:Math.min(s.from,i),to:Math.max(s.to,a)}:{timing:o.timing,from:i,to:a})}return{spans:["advance","arrears"].flatMap(o=>{const s=t.get(o);return s?[s]:[]}),corrections:n}}const Me=864e5,Qo={draft:["active"],active:["draft","ended"],ended:["active"]};function ol(e,t){return e===t||Qo[e].includes(t)}function sl(e){const t=e.graceDays*Me;let n=e.startsAt;for(const r of e.lines??[]){const o=V(e,r),s=Pn(e,r);if(s==="once"){n=Math.max(n,o.from+t);continue}if(o.to==null)return null;o.to<=o.from||(n=Math.max(n,Je(o.to-1,s).to+t))}return e.lines?.length||e.endsAt!=null?n:null}const et=(e,t)=>{const n=new Date(e);return Date.UTC(n.getUTCFullYear(),n.getUTCMonth()+t,n.getUTCDate(),n.getUTCHours(),n.getUTCMinutes())},Ln=e=>e&&e.termMonths>=1?e:void 0;function Zo(e,t){return Math.min(...t.map(n=>V(e,n).from))}function re(e,t,n){let r=et(e,Math.max(1,t.termMonths));if(t.renew==="none")return r;const o=t.renew==="month"?1:Math.max(1,t.termMonths);for(let s=0;r<=n&&s<1200;s++)r=et(r,o);return r}function Kn(e,t,n){const r=et(e,Math.max(1,t.termMonths)),o=re(e,t,n);return o===r?e:et(o,-(t.renew==="month"?1:Math.max(1,t.termMonths)))}function Jo(e,t,n){if(t=Ln(t),!t)return null;const r=re(e,t,n),o=r-t.noticeDays*Me;return n<=o?o:t.renew==="none"?null:re(e,t,r)-t.noticeDays*Me}function tt(e,t,n){if(t=Ln(t),!t)return n;const r=re(e,t,n);return n<=r-t.noticeDays*Me||t.renew==="none"?r:re(e,t,r)}function es(e,t,n,r){if(t=Ln(t),!t)return{endsAt:n};const o=re(e,t,Math.max(n,e)-1),s=o-t.noticeDays*Me;return r<=s||t.renew==="none"?{endsAt:o,deadline:s}:{endsAt:re(e,t,o),nextTerm:!0}}function il(e,t){let n=t;for(const r of e.lines??[]){const o=V(e,r);if(o.to!=null&&o.to<=t)continue;const s=r.commitment??e.commitment;n=Math.max(n,tt(Math.max(o.from,0),s,t))}return n}const $r=e=>JSON.stringify([e.productId,e.quantity,e.included??0,e.billing??"advance",e.every??"",e.startsAt??null,e.commitment??null]);function al(e,t){return $r(e)!==$r(t)}function cl(e,t,n,r){const{endsAt:o,...s}=e,i={...s,...o!=null?{endsAt:o}:{},...n,id:r,seriesId:e.seriesId??e.id,startsAt:t};return[{...e,endsAt:t},i]}const At=(e,t)=>e.from-t.from;function ts(e,t){const n=[...e??[]].sort(At);return n.filter(r=>r.from<=t).pop()??n[0]}function ul(e,t){return[...e??[]].sort(At).find(n=>n.from>t)}function ns(e,t){return[...(e??[]).filter(n=>n.from!==t.from),t].sort(At)}function ll(e){const t={};for(const n of e){if(n.correction)continue;const r=n.agreementLineId;t[r]=Math.max(t[r]??0,n.servicePeriod.to)}return t}function dl(e,t,n){if(n==null)return!1;const r=o=>JSON.stringify([...o??[]].filter(s=>s.from<n).sort(At).map(s=>[s.from,s.cents,s.per??null]));return r(e)!==r(t)}function fl(e,t){const{from:n,percent:r}=t,o=new Set(t.ratedProductIds??[]),s=[];return{lines:e.map(a=>{if(a.rateCardId||o.has(a.productId))return s.push({lineId:a.id,skipped:"rated"}),a;const c=ts(a.prices,n-1);if(!c)return s.push({lineId:a.id,skipped:"ladder"}),a;const u=U(Math.round(c.cents*(100+r)*1e6)/1e8),d=a.prices?.find(p=>p.from===n)?.cents;s.push({lineId:a.id,base:c.cents,next:u,...d!=null?{replaces:d}:{}});const l={from:n,cents:u,...c.per?{per:c.per}:{}};return{...a,prices:ns(a.prices,l)}}),results:s}}function rs(e,t){const n=t.quantity;if(n?.from!=="meter")return null;if(n.accountRef)return{app:n.app,accountRef:n.accountRef};const r=e.sourceAccount;return r&&r.app===n.app?r:null}function pl(e){const t=new Map;for(const n of e.lines??[]){const r=rs(e,n);r&&t.set([r.app,r.accountRef].join("|"),r)}return[...t.values()]}function ml(e,t){return[e,t].join("@")}const vt=[{id:"chat",defaultFlag:"isDefaultLlm",label:"LLM"},{id:"transcription",defaultFlag:"isDefaultStt",label:"STT"},{id:"tts",defaultFlag:"isDefaultTts",label:"TTS"},{id:"embedding",defaultFlag:"isDefaultEmbedding",label:"Embeddings"},{id:"decision",defaultFlag:"isDefaultDecision",label:"Beslissingen"}];function gl(e){return vt.find(t=>t.id===e)?.defaultFlag}function hl(e){const t={};for(const n of vt)t[n.defaultFlag]=e?.[n.defaultFlag]===!0;return t}function yl(e,t){const n={};for(const r of vt){const o=r.defaultFlag;n[o]=(e?.[o]??t?.[o])===!0}return n}const bl={image:"image",pdf:"file",text:"text",audio:"audio",video:"video"};function _l(e,t){if(t==="text")return!0;if(!e?.in?.length)return;const n=bl[t];return n?e.in.includes(n):!1}const ye=["fast","standard","deep"],Ur=(e,t)=>{const n=ye.indexOf(e),r=Math.min(ye.length-1,Math.max(0,n+t));return ye[r]},an=e=>ye.indexOf(e);function os(e){const t=[];let n;return e.expectsSchema?(n="fast",t.push("schema-antwoord")):(e.mode??"agent")==="ask"&&!e.toolCount?(n="fast",t.push("vraag zonder tools")):e.toolCount||e.hasAttachments?(n="standard",t.push(e.hasAttachments?"bijlagen":"tools beschikbaar")):(n="standard",t.push("standaard")),e.repair&&(n=Ur(n,1),t.push("herstelbeurt: een tier omhoog")),e.budgetPressure==="soft"&&n!=="fast"&&(n=Ur(n,-1),t.push("budget bijna op: een tier omlaag in plaats van weigeren")),e.maxTier&&an(n)>an(e.maxTier)&&(n=e.maxTier,t.push(`plafond van de rol: ${e.maxTier}`)),{tier:n,reasons:t}}function Il(e,t,n){const r=os(t);if(!e)return{...r,...n,routed:!1};for(let o=an(r.tier);o>=0;o--){const s=ye[o],i=e[s];if(!i?.accountId||!i.model)continue;const a=s===r.tier?r.reasons:[...r.reasons,`${r.tier} niet ingericht, ${s} gebruikt`];return{tier:s,reasons:a,accountId:i.accountId,model:i.model,routed:!0}}return{...r,...n,routed:!1,reasons:[...r.reasons,"geen tier ingericht: het profiel beslist"]}}const cn=255,un=2,ln=10;function El(e){const t=Object.keys(e);if(!t.length)return"geen vragen gesteld";for(const n of t){const r=e[n];if(!r?.instructions?.trim())return`vraag "${n}" heeft geen instructie`;if(r.type==="choice"){const o=Object.keys(r.criteria??{});if(o.length<2)return`vraag "${n}" heeft minder dan twee opties`;if(o.length>cn)return`vraag "${n}" heeft meer dan ${cn} opties`}if(r.type==="score"){const o=r.criteria?.length??0;if(o<un||o>ln)return`vraag "${n}" heeft ${o} niveaus; het moeten er ${un} tot ${ln} zijn`}}return null}function Sl(e,t=.9,n=.6){return Number.isFinite(e)?e>=t?"act":e>=n?"check":"refuse":"refuse"}const Al=["counting or arithmetic","comparing dates or durations","judging whether two numbers are close","generating text"],$n=[{id:"openai",attachmentKinds:["image","pdf"],label:"OpenAI",capabilities:["chat","transcription","embedding"],defaultModel:"gpt-5-mini",baseUrl:"https://api.openai.com/v1"},{id:"gemini",attachmentKinds:["image","pdf"],label:"Google Gemini",capabilities:["chat","transcription","embedding"],defaultModel:"gemini-3.5-flash",baseUrl:"https://generativelanguage.googleapis.com/v1beta"},{id:"anthropic",attachmentKinds:["image","pdf"],label:"Anthropic",capabilities:["chat"],defaultModel:"claude-haiku-4-5",baseUrl:"https://api.anthropic.com/v1"},{id:"elevenlabs",label:"ElevenLabs",capabilities:["transcription"],baseUrl:"https://api.elevenlabs.io/v1"},{id:"typesafe",label:"TypeSafe (Jev)",capabilities:["decision"],defaultModel:"jev-latest",baseUrl:"https://api.typesafe.ai/v1"},{id:"moonshot",label:"Moonshot (Kimi)",capabilities:["chat"],defaultModel:"kimi-k3",baseUrl:"https://api.moonshot.ai/v1"},{id:"deepseek",label:"DeepSeek",capabilities:["chat"],defaultModel:"deepseek-v4-flash",baseUrl:"https://api.deepseek.com/v1"},{id:"groq",label:"Groq",capabilities:["chat"],defaultModel:"openai/gpt-oss-120b",baseUrl:"https://api.groq.com/openai/v1"},{id:"mistral",label:"Mistral",capabilities:["chat"],defaultModel:"mistral-large-latest",baseUrl:"https://api.mistral.ai/v1"},{id:"openrouter",label:"OpenRouter",capabilities:["chat"],defaultModel:"openrouter/auto",baseUrl:"https://openrouter.ai/api/v1"},{id:"ollama",label:"Ollama (self-hosted)",capabilities:["chat"],defaultModel:"llama3.3"},{id:"openai-compatible",label:"OpenAI-compatible (eigen endpoint)",capabilities:["chat"],defaultModel:"default"}];function xe(e){return $n.find(t=>t.id===e)}function vl(e){return xe(e)?.label??e}function Cl(e,t="gpt-5-mini"){return xe(e)?.defaultModel??t}function Tl(e){return $n.filter(t=>t.capabilities.includes(e))}function kl(e){const t=xe(e);return!!t&&!t.baseUrl}function Ol(e,t){return t==="text"?!0:xe(e)?.attachmentKinds?.includes(t)===!0}function Ml(e,t){if(!e.enabled)return"ok";const n=dn(e.hardLimitNanos),r=dn(e.softLimitNanos);return n!==void 0&&t>=n?"hard":r!==void 0&&t>=r?"soft":"ok"}function dn(e){return typeof e=="number"?e:void 0}function ss(e,t="month"){const n=new Date(e);return Date.UTC(n.getUTCFullYear(),n.getUTCMonth(),1)}function Rl(e,t="month"){const n=new Date(ss(e,t));return`${n.getUTCFullYear()}-${String(n.getUTCMonth()+1).padStart(2,"0")}`}function Nl(e){return e==="ask"||e==="draft"||e==="agent"}function Dl(e){return e?.listeningEnabled!==!1}const xl=["report"],wl=[{id:"agent",label:"Agent",labelSource:"user"},{id:"team",label:"Team",labelSource:"team"},{id:"inbox",label:"Inbox",labelSource:"inbox"},{id:"channel",label:"Kanaal",labelSource:"channel"},{id:"provider",label:"Provider",labelSource:"raw"},{id:"status",label:"Status",labelSource:"raw"},{id:"handledBy",label:"Afhandelaar",labelSource:"raw"},{id:"time",label:"Tijd",labelSource:"raw"}];function qt(e){return e<10?`0${e}`:`${e}`}function _e(e,t){const n=new Date(e),r=`${n.getUTCFullYear()}-${qt(n.getUTCMonth()+1)}-${qt(n.getUTCDate())}`;return t==="day"?r:`${r}T${qt(n.getUTCHours())}`}function Ie(e,t){const n=new Date(e);return n.setUTCMinutes(0,0,0),t==="day"&&n.setUTCHours(0),n.getTime()}const Pl=36e5,Ll=864e5;function Kl(e,t,n){const r=n==="hour"?Pl:Ll,o=[];for(let s=Ie(e,n);s<=t;s+=r)o.push(_e(s,n));return o}const $l=new Set(["time"]);function Ul(e,t,n){if(!e)return[];const r=new Set(e.supportedDimensions??[]);return t.filter(o=>r.has(o.id)&&!$l.has(o.id)).map(o=>({id:o.id,label:o.label,options:o.options?.length?o.options:n[o.id]??[]})).filter(o=>o.options.length>0)}function Fl(e,t){const n=t.find(o=>o.id===e.dimensionId),r=n?.options.find(o=>o.value===e.value);return`${n?.label??e.dimensionId} · ${r?.label??e.value}`}function Bl(e){return{value:e.id,label:`${e.category} · ${e.label}`}}const is=[{id:"resource",label:"Resource",labelSource:"raw"},{id:"origin",label:"Herkomst",labelSource:"raw"}],as=is.map(e=>e.id);function cs(e,t){return`${e}.usage.${t}`}function jl(e,t){return t.map(n=>({id:cs(e,n.unit),label:n.label,category:"Verbruik",valueType:n.valueType??"count",aggregation:"sum",supportedDimensions:["provider",...as,...n.extraDimensions??[],"time"]}))}async function ql(e,t){let n=0,r=0;for(const o of e)try{await t(o),n++}catch(s){const i=s?.status;if(i===403||i===400)r++;else throw s}return{decided:n,waiting:r}}function Gl(e){return e.approvalRequestIds?.length?[...e.approvalRequestIds]:e.approvalRequestId?[e.approvalRequestId]:[]}function Wl(e,t){return e.filter(r=>!r.enabled||r.scopeKind!==t.scopeKind||r.act!==t.act?!1:r.minAmountCents==null?!0:t.amountCents!=null&&t.amountCents>=r.minAmountCents).sort((r,o)=>{const s=r.minAmountCents??-1;return(o.minAmountCents??-1)-s||r.id.localeCompare(o.id)})[0]}function Vl(e,t,n,r){const o=new Set(e.userIds);for(const s of e.teamIds)for(const i of t[s]??[])o.add(i);return r||o.delete(n),[...o]}function Hl(e,t){if(e.status!=="pending"||e.decisions.some(s=>s.userId===t.userId))return e;const n=[...e.decisions,t],r=e.pendingUserIds.filter(s=>s!==t.userId);if(t.decision==="rejected")return{...e,decisions:n,pendingUserIds:r,status:"rejected",settledAt:t.at};const o=e.rule==="any"||r.length===0;return{...e,decisions:n,pendingUserIds:r,status:o?"approved":"pending",settledAt:o?t.at:void 0}}const us=new Set(["info","success","warning","destructive"]),nt=200,rt=100,ot=200,st=12,it=4,fn=10,ls=8,pn=12,Ct=4e3,he=500,ds=1024*1024,Yl=new Set(["heading","paragraph","list","quote","code","divider","table","kpi","callout","image","letterhead","totals","pagebreak"]),fs=["http:","https:","mailto:","tel:"],zl=/^[a-z][a-z0-9+.-]*:/i;function Un(e){const t=e.trim().replace(/^<|>$/g,"");if(!t)return!1;const n=zl.exec(t)?.[0];return n?fs.includes(n.toLowerCase()):!t.startsWith("//")}const Xl=/^[ \t]{0,3}\[([^\]]+)\]:[ \t]*(\S+).*$/gm;function Ql(e){let t="",n=0;for(;n<e.length;){const r=e[n]==="!"&&e[n+1]==="[";if(e[n]!=="["&&!r){t+=e[n],n+=1;continue}const o=n+(r?2:1),s=Fr(e,o,"[","]");if(s<0||e[s+1]!=="("){t+=e[n],n+=1;continue}const i=Fr(e,s+2,"(",")");if(i<0){t+=e[n],n+=1;continue}const a=e.slice(o,s),c=e.slice(s+2,i).trim().split(/\s+/)[0]??"";t+=r||!Un(c)?a:e.slice(n,i+1),n=i+1}return t}function Fr(e,t,n,r){let o=1;for(let s=t;s<e.length;s+=1){if(e[s]==="\\"){s+=1;continue}if(e[s]===n)o+=1;else if(e[s]===r&&(o-=1,o===0))return s}return-1}function ps(e){return Ql(e).replace(Xl,(t,n,r)=>Un(r)?t:"")}function j(e,t=Ct){return typeof e=="string"?ps(e).slice(0,t):""}function Zl(e,t=Ct){return typeof e=="string"?e.slice(0,t):""}function Ce(e,t=200){return j(e,t)}function Jl(e,t="info"){return typeof e=="string"&&us.has(e)?e:t}function ms(e,t=()=>{}){if(!Array.isArray(e))return[];const n=[];for(const r of e){if(n.length>=nt){t(`more than ${nt} blocks; the rest was dropped`);break}if(!r||typeof r!="object")continue;const o=r;if(!Yl.has(o.type)){t(`unknown block type ${String(o.type)}`);continue}const s=typeof o.block_id=="string"?{block_id:o.block_id}:{};switch(o.type){case"heading":{const i=j(o.text);if(!i){t("a heading without text");continue}const a=o.level===2||o.level===3?o.level:1;n.push({...s,type:"heading",level:a,text:i});break}case"paragraph":{const i=j(o.text);if(!i){t("a paragraph without text");continue}n.push({...s,type:"paragraph",text:i});break}case"quote":{const i=j(o.text);if(!i){t("a quote without text");continue}n.push({...s,type:"quote",text:i});break}case"code":{const i=Zl(o.text);if(!i){t("a code block without text");continue}const a=typeof o.lang=="string"?{lang:o.lang.slice(0,32)}:{};n.push({...s,type:"code",...a,text:i});break}case"divider":n.push({...s,type:"divider"});break;case"list":{const i=Array.isArray(o.items)?o.items:[],a=[];for(const u of i){if(a.length>=rt){t(`more than ${rt} list items`);break}const d=j(u?.text);if(!d)continue;const l=j(u?.lead,200);a.push(l?{lead:l,text:d}:{text:d})}if(a.length===0){t("a list without usable items");continue}const c=o.style==="numbered"?"numbered":"bulleted";n.push({...s,type:"list",style:c,items:a});break}case"table":{const i=Array.isArray(o.columns)?o.columns:[],a=[];for(const l of i){if(a.length>=st){t(`more than ${st} table columns`);break}const p=j(l?.label,he),g=l?.align==="right"?"right":void 0;a.push(g?{label:p,align:g}:{label:p})}if(a.length===0){t("a table without columns");continue}const c=Array.isArray(o.rows)?o.rows:[],u=[];for(const l of c){if(u.length>=ot){t(`more than ${ot} table rows`);break}const p=Array.isArray(l)?l:[];u.push(a.map((g,f)=>j(p[f],he)))}const d=j(o.caption,he);n.push({...s,type:"table",columns:a,rows:u,...d?{caption:d}:{}});break}case"kpi":{const i=Array.isArray(o.items)?o.items:[],a=[];for(const c of i){if(a.length>=it){t(`more than ${it} kpi items`);break}const u=j(c?.value,40),d=j(c?.label,80);if(!u||!d)continue;const l=c?.tone;a.push(typeof l=="string"&&us.has(l)?{value:u,label:d,tone:l}:{value:u,label:d})}if(a.length===0){t("a kpi block without usable items");continue}n.push({...s,type:"kpi",items:a});break}case"image":{const i=typeof o.url=="string"?o.url.trim():"";if(!i||!Un(i)){t("an image without a usable url");continue}const a=j(o.alt,200),c=j(o.caption,he);n.push({...s,type:"image",url:i,...a?{alt:a}:{},...c?{caption:c}:{}});break}case"letterhead":{const i=Array.isArray(o.fields)?o.fields:[],a=[];for(const d of i){if(a.length>=fn){t(`more than ${fn} letterhead fields`);break}const l=d,p=typeof l?.key=="string"?l.key.slice(0,48):"",g=Ce(l?.value);if(!p||!g)continue;const f=Ce(l?.label,80);a.push(f?{key:p,label:f,value:g}:{key:p,value:g})}const u=(Array.isArray(o.recipient)?o.recipient:[]).slice(0,ls).map(d=>Ce(d)).filter(Boolean);if(a.length===0&&u.length===0){t("a letterhead without fields or recipient");continue}n.push({...s,type:"letterhead",fields:a,...u.length>0?{recipient:u}:{}});break}case"totals":{const i=u=>{const d=Array.isArray(u)?u:[],l=[];for(const p of d){if(l.length>=pn){t(`more than ${pn} totals rows`);break}const g=p,f=Ce(g?.label),m=Ce(g?.amount,40);!f||!m||l.push(g?.emphasis===!0?{label:f,amount:m,emphasis:!0}:{label:f,amount:m})}return l},a=i(o.rows);if(a.length===0&&!o.block_id){t("a totals block without usable rows");continue}const c=i(o.taxRows);n.push({...s,type:"totals",rows:a,...c.length>0?{taxRows:c}:{}});break}case"pagebreak":n.push({...s,type:"pagebreak"});break;case"callout":{const i=j(o.text);if(!i){t("a callout without text");continue}const a=j(o.title,200);n.push({...s,type:"callout",tone:Jl(o.tone),...a?{title:a}:{},text:i});break}}}return n}function gs(e){return JSON.stringify(e).length}function hs(e){return{blocks:e.length,types:e.map(t=>t.type),headings:e.flatMap(t=>t.type==="heading"?[t.text]:[])}}function Br(e){return e.replace(/\|/g,"\\|").replace(/\r?\n/g," ").trim()}function Gt(e,t,n){const r=e.map((o,s)=>n?.[s]==="right"?"---:":"---");return[`| ${e.map(Br).join(" | ")} |`,`| ${r.join(" | ")} |`,...t.map(o=>`| ${o.map(Br).join(" | ")} |`)]}function ed(e){switch(e.type){case"heading":return[`${"#".repeat(e.level)} ${e.text}`];case"paragraph":return[e.text];case"quote":return e.text.split(/\r?\n/).map(t=>`> ${t}`);case"code":return[`\`\`\`${e.lang??""}`,e.text,"```"];case"divider":return["---"];case"list":return e.items.map((t,n)=>{const r=e.style==="numbered"?`${n+1}.`:"-";return t.lead?`${r} **${t.lead}** ${t.text}`:`${r} ${t.text}`});case"table":{const t=Gt(e.columns.map(n=>n.label),e.rows,e.columns.map(n=>n.align??"left"));return e.caption?[...t,"",`*${e.caption}*`]:t}case"kpi":return Gt(e.items.map(t=>t.value),[e.items.map(t=>t.label)]);case"callout":return(e.title?`**${e.title}** ${e.text}`:e.text).split(/\r?\n/).map(n=>`> ${n}`);case"image":{const t=``;return e.caption?[t,"",`*${e.caption}*`]:[t]}case"letterhead":{const t=[...e.recipient??[]];t.length>0&&e.fields.length>0&&t.push("");for(const n of e.fields)t.push(n.label?`**${n.label}:** ${n.value}`:n.value);return t.map((n,r)=>r<t.length-1?`${n} `:n)}case"totals":return Gt(["",""],[...e.rows,...e.taxRows??[]].map(t=>[t.emphasis?`**${t.label}**`:t.label,t.emphasis?`**${t.amount}**`:t.amount]),["left","right"]);case"pagebreak":return["---"]}}function Fn(e,t){const n=[],r=e.some(o=>o.type==="heading"&&o.level===1);t&&!r&&n.push(`# ${t}`);for(const o of e){const s=ed(o);s.length>0&&n.push(s.join(`
|
|
4
4
|
`))}return`${n.join(`
|
|
5
5
|
|
|
6
6
|
`)}
|
|
7
|
-
`}const
|
|
8
|
-
`),n=[];for(const d of t.split(/\n(?=:\d{2}[A-Z]?:)/)){const l=/^:(\d{2}[A-Z]?):([\s\S]*)$/.exec(d.trim());l&&n.push({tag:l[1]??"",value:(l[2]??"").replace(/\n-}?$/,"").trim()})}let r,o="0",s,i;const a=[];let c=0;for(const{tag:d,value:l}of n)if(d==="25")r=l.split("/")[0]?.replace(/\s+/g,"").toUpperCase();else if(d==="28C")o=l,c=0;else if(d==="60F"||d==="60M")s??=
|
|
9
|
-
`)[0]??"",g=/^(\d{6})(\d{4})?(R?[CD])[A-Z]?([\d,]+)(?:N[A-Z0-9]{3})?([^/]*)(?:\/\/(\S+))?/.exec(p);if(!g)continue;c++;const f=at(g[4])??0,m=g[3]==="C"||g[3]==="RD",_=Es(g[1]??""),h=g[2]?`${_.slice(0,4)}-${g[2].slice(0,2)}-${g[2].slice(2,4)}`:_,y=g[6]??g[5]?.trim();a.push({date:h,valueDate:_,amountCents:m?f:-f,currency:s?.currency??"EUR",description:"",dedupeKey:y&&y!=="NONREF"?`ref:${y}`:`seq:${o}:${c}`})}else if(d==="86"){const p=a.at(-1);p&&!p.description&&Object.assign(p,fd(l))}const u=a.map(d=>d.date).sort();return{format:"mt940",...r&&/^[A-Z]{2}\d{2}/.test(r)?{iban:r}:{},...s?.currency?{currency:s.currency}:{},from:s?.date??u[0]??"",to:i?.date??u.at(-1)??"",...s?{openingCents:s.cents}:{},...i?{closingCents:i.cents}:{},lines:a}}function pd(e){return/<\s*(?:[\w-]+:)?Document[\s>]/.test(e)||e.includes("camt.053")?Is(e):Ss(e)}const md=e=>(e.kind==="journal_line"?"jl:":"bl:")+e.id,Tt=e=>e.invoiceTo?.companyId||e.companyId;function Ae(e){const t=e??{},n={};for(const r of qn){const o=t[r];typeof o=="string"&&o.trim()&&(n[r]=o.trim())}return Object.keys(n).length?n:void 0}const qn=["costCenterId","costUnitId","projectId","customerCompanyId"],gd=864e5,Vr=e=>new Date(e).toISOString().slice(0,10);function hd(e,t){if(!t.length)return e;const n=new Map;for(const m of t){const _=m.target.kind==="contract_line"?{from:Vr(m.target.period.from),to:Vr(m.target.period.to-gd)}:void 0,h={...Ae({...m.dimensions,...m.customerCompanyId?{customerCompanyId:m.customerCompanyId}:{}}),..._&&!e.period?{period:_}:{}},y=JSON.stringify(h),b=n.get(y);n.set(y,{share:h,cents:(b?.cents??0)+m.amountCents})}const r=t[0],o={...r.productId?{productId:r.productId}:{},...r.ledgerCategoryKey?{ledgerCategoryKey:r.ledgerCategoryKey}:{},...r.use?{use:r.use}:{}},{allocations:s,...i}=e,a=[...n.values()];if(a.length===1)return{...i,...o,...a[0].share};const c=de(e.netCents,a.map(m=>m.cents)),u=de(e.taxCents,c),{costCenterId:d,costUnitId:l,projectId:p,customerCompanyId:g,...f}=i;return{...f,...o,allocations:a.map(({share:m},_)=>({...m,netCents:c[_],taxCents:u[_]}))}}function yd(e){if(!e.allocations?.length)return[e];const{allocations:t,...n}=e;return t.map(({period:r,...o})=>({...n,...o,...r&&!n.period?{period:r}:{}}))}function bd(e,t,n){return n===void 0?[...e]:e.map(r=>{if(r.treatment||r.use==="resale"||r.netCents<n)return r;const o=t.find(s=>s.costAccountId===r.accountKey);return o?{...r,treatment:{kind:"asset",groupId:o.id,aiSuggested:!0}}:r})}function As(e){const t=e.reduce((r,o)=>r+o.netCents,0),n=e.reduce((r,o)=>r+o.taxCents,0);return{netCents:t,taxCents:n,grossCents:t+n}}const _d="receipt",Id="book";function vs(e){const t=[];return e.fields.supplierName?.value.trim()||t.push("no_supplier"),e.fields.issueDate?.value||t.push("no_date"),e.lines.length?e.lines.some(n=>!n.accountKey)&&t.push("no_account"):t.push("no_lines"),e.lines.some(n=>n.treatment?.kind==="asset"&&!n.treatment.groupId)&&t.push("asset_without_group"),e.lines.some(n=>n.treatment?.kind==="spread"&&!(n.treatment.months>0&&n.treatment.firstMonth&&n.treatment.resultAccountId))&&t.push("spread_without_months"),t}function Ed(e){if(e.status!=="to_check")return null;const t=vs(e);return t.length?t.includes("no_account")||t.includes("no_lines")?"choose":"check":e.duplicateOf||e.match&&!e.match.verdict.ok?"check":"confirm"}function Cs(e,t=""){const n=new Map;for(const r of e.flatMap(yd)){const o=[r.accountKey??"",r.ledgerCategoryKey??"",r.taxRateKey,r.taxPercent??"",r.taxKind??"",...qn.map(i=>r[i]??""),r.productId??"",r.period?[r.period.from,r.period.to].join("/"):""].join("|"),s=n.get(o)??{line:r,net:0,tax:0,words:[]};s.net+=r.netCents,s.tax+=r.taxCents,r.description&&s.words.push(r.description),n.set(o,s)}return[...n.values()].map(({line:r,net:o,tax:s,words:i})=>({description:[...new Set(i)].join(", ").slice(0,120)||t,netCents:o,taxCents:s,taxRateKey:r.taxRateKey,taxKind:r.taxKind??"standard",...r.taxPercent!==void 0?{taxPercent:r.taxPercent}:{},...r.accountKey?{accountKey:r.accountKey}:{},dimensions:Ae(r),...r.productId?{productId:r.productId}:{},...r.ledgerCategoryKey?{ledgerCategoryKey:r.ledgerCategoryKey}:{},...r.period&&!r.treatment?{period:r.period}:{}}))}function Sd(e,t="finance"){const n=e.fields;return{sourceApp:t,documentId:e.id,direction:"purchase",kind:"receipt",businessEntityId:e.businessEntityId,...n.invoiceNumber?.value?{number:n.invoiceNumber.value}:{},counterparty:{...e.supplierCompanyId?{companyId:e.supplierCompanyId}:{},name:n.supplierName?.value??"",...n.supplierVatNumber?.value?{vatNumber:n.supplierVatNumber.value}:{}},issueDate:n.issueDate?.value??"",...n.dueDate?.value?{dueDate:n.dueDate.value}:{},currency:n.currency?.value||"EUR",...n.fxRate?.value?{fxRate:n.fxRate.value}:{},lines:Cs(e.lines,n.supplierName?.value??""),totals:As(e.lines),attachment:{mountId:e.file.mountId,fileId:e.file.fileId},...e.externalIds?.length?{externalIds:e.externalIds}:{},...e.kind==="credit_note"&&e.creditsReceiptId?{creditsDocumentId:e.creditsReceiptId}:{}}}function Ad(e,t,n){return`${e}:${t}:${n}`}function vd(e){return[1,5,15][e-1]??60}const Cd=10*6e4;function Ts(e,t,n){const r=n?t.filter(s=>(s.direction??"sale")===n):t,o=s=>r.find(i=>s(i.match));return e.productId&&o(s=>s.productId===e.productId)||e.ledgerCategoryKey&&o(s=>s.ledgerCategoryKey===e.ledgerCategoryKey)||o(s=>!!s.taxRateKey&&!s.productId&&!s.ledgerCategoryKey&&s.taxRateKey===e.taxRateKey)||o(s=>!s.productId&&!s.ledgerCategoryKey&&!s.taxRateKey)}const Td="organization.business-entities.list",kd=["bv","nv","eenmanszaak","vof","maatschap","stichting","vereniging","other"];function Od(e,t,n){const r=new Map;for(const o of e)o.businessEntityId||r.set(o[t],o);if(n)for(const o of e)o.businessEntityId===n&&r.set(o[t],o);return[...r.values()]}function Md(e,t,n){return n*ks(e,t)}function ks(e,t){if(t===e.unitKey)return 1;const n=e.units?.find(r=>r.key===t);if(!n||!(n.factor>0))throw new Error(`unknown unit ${t}`);return n.factor}function Rd(e){const t=new Set;for(const n of e.units??[]){if(!n.key||n.key===e.unitKey||t.has(n.key))return"unit_duplicate";if(!(n.factor>0))return"unit_factor_invalid";t.add(n.key)}return null}function Nd(e,t){return!t.some(n=>n.parentId===e.id)}function Dd(e,t,n){const r=e.optionKeys??[],o=t.options??[];if(o.map(c=>c.key).length!==r.length||r.some(c=>!o.find(u=>u.key===c&&u.value.trim())))return"variant_options_mismatch";const i=c=>r.map(u=>c?.find(d=>d.key===u)?.value.trim()??"").join("\0"),a=i(o);return n.some(c=>c.id!==t.id&&i(c.options)===a)?"variant_options_duplicate":null}function xd(e,t){return e.archived?"product_archived":t?t.blocked?"product_blocked":null:"product_not_released"}function wd(e,t){return Fo(e.cents,e.per??t,t)}function kt(e){const t=e.trim().replace(/[\s-]/g,"");if(!/^\d+$/.test(t)||![8,12,13,14].includes(t.length))return;const n=t.padStart(14,"0");return Pd(n.slice(0,13))===Number(n[13])?n:void 0}function Pd(e){let t=0;for(let n=0;n<e.length;n++)t+=Number(e[n])*(n%2===0?3:1);return(10-t%10)%10}function Ld(e,t){const n=t.trim(),r=kt(n),o=[{sku:n},{barcodes:{$in:[n]}}];return r&&o.push({gtin:r},{packGtins:{$in:[r]}}),{organizationId:e,$or:o}}const Kd=[{key:"customer",matches:(e,t)=>!!e.companyId&&e.companyId===t.companyId&&!!e.productId},{key:"customer_category",matches:(e,t)=>!!e.companyId&&e.companyId===t.companyId&&!!e.categoryKey},{key:"segment",matches:(e,t)=>!e.companyId&&!!e.segmentKey&&e.segmentKey===t.segmentKey&&!!e.productId},{key:"segment_category",matches:(e,t)=>!e.companyId&&!!e.segmentKey&&e.segmentKey===t.segmentKey&&!!e.categoryKey},{key:"everyone",matches:e=>!e.companyId&&!e.segmentKey&&!!e.productId},{key:"everyone_category",matches:e=>!e.companyId&&!e.segmentKey&&!!e.categoryKey}];function Os(e,t,n,r){const o=n.filter(s=>r(s)&&s.currency===e.currency&&(s.validFrom==null||s.validFrom<=t.at)&&(s.validTo==null||s.validTo>=t.at)&&(s.minQuantity==null||t.quantity>=s.minQuantity)&&(s.productId==null||s.productId===e.id)&&(s.categoryKey==null||s.categoryKey===e.categoryKey)&&(s.productId!=null||s.categoryKey!=null));for(const s of Kd){const i=o.filter(c=>s.matches(c,t));if(i.length===0)continue;const a=i.reduce((c,u)=>{const d=(u.minQuantity??0)-(c.minQuantity??0);return d!==0?d>0?u:c:(u.validFrom??0)>=(c.validFrom??0)?u:c});return{rule:a,sourceKey:(a.minQuantity??0)>1?"tier":s.key}}return null}function Ms(e,t,n){const r=Os(e,t,n,i=>!i.rateCardId),o={currency:e.currency,...e.pricePer?{per:e.pricePer}:{}};if(!r)return e.listPriceCents==null?{...o,sourceKey:mn}:{unitPriceCents:e.listPriceCents,...o,sourceKey:"list"};if(r.rule.unitPriceCents==null&&e.listPriceCents==null)return{...o,sourceKey:mn};const s=r.rule.unitPriceCents!=null&&r.rule.pricePer||e.pricePer;return{unitPriceCents:Ud(r.rule,e.listPriceCents??0),currency:e.currency,...s?{per:s}:{},sourceKey:r.sourceKey,ruleId:r.rule.id}}function $d(e,t,n){const r=Os(e,t,n,o=>!!o.rateCardId);return r?.rule.rateCardId?{rateCardId:r.rule.rateCardId,sourceKey:r.sourceKey,ruleId:r.rule.id}:e.rateCardId?{rateCardId:e.rateCardId,sourceKey:"list"}:null}function Ud(e,t){return e.unitPriceCents!=null?e.unitPriceCents:e.discountPercent!=null?U(t*(1-e.discountPercent/100)):t}const Rs="manual",mn="missing";function Bd(e,t,n,r){return e.map(o=>{if(o.kind!=="product"||o.priceSourceKey===Rs||o.usage)return o;const s=t.find(l=>l.id===o.productId);if(!s)return o;const i=o.factor??1,a=Ms(s,{...r,quantity:o.quantity*i},n),c=a.unitPriceCents==null?0:a.unitPriceCents*i;if(c===o.unitPriceCents&&a.sourceKey===o.priceSourceKey&&a.per===o.pricePer)return o;const{pricePer:u,...d}=o;return{...d,unitPriceCents:c,priceSourceKey:a.sourceKey,...a.per?{pricePer:a.per}:{}}})}function Gn(e){const t=/^\s*(-?)(\d*)[.,]?(\d*)\s*$/.exec(e);if(!t||t[2]===""&&t[3]==="")return;const n=`${t[3]}000000`.slice(0,6),r=Number(t[2]||"0")*1e6+Number(n);return t[1]?-r:r}function Fd(e){const t=e<0?"-":"",n=Math.abs(Math.round(e)),r=String(n%1e6).padStart(6,"0").replace(/0{1,2}$/,"");return`${t}${Math.floor(n/1e6)},${r.length<4?r.padEnd(4,"0"):r}`}function gn(e){const t=/^\s*\+\s*(\d+(?:[.,]\d+)?)\s*%\s*$/.exec(e);if(t)return{kind:"markup",percent:Number(t[1].replace(",","."))};const n=Gn(e);return n===void 0?void 0:{kind:"flat",micros:n}}function jd(e,t){const n=[],r=[],o=e.split(/\r?\n/),s=(o[0]??"").includes(";")?";":",",i=t.dimensions,a=t.display.per>1,c=1+i.length+1;return o.forEach((u,d)=>{const l=d+1;if(!u.trim())return;const p=u.split(s).map(O=>O.trim());if(d===0&&!gn(p[c]??""))return;const g=p[0]??"",f={};i.forEach((O,E)=>{const M=p[1+E]??"";if(!M)return;const B=/^[+\d\s-]+$/.test(M)?M.replace(/\D/g,"").replace(/^00/,""):M;f[O.key]=O.match==="prefix"?{prefix:B}:{equals:M}});const m=p[1+i.length]??"",_=m===""?0:Gn(m),h=gn(p[c]??""),[y,b]=a?(p[c+1]||"1/1").split("/").map(Number):[1,1],I=a?p[c+2]??"":"",v=I===""?0:Number(I),T=g?_===void 0||!h?"price":!(y>0)||!((b??y)>0)||!Number.isFinite(v)?"increment":null:"label";if(T){r.push({line:l,message:T});return}n.push({label:g,match:f,setupMicros:_,price:h,unitSize:t.display.per,firstIncrement:y,nextIncrement:b??y,minimum:v})}),{rates:n,errors:r}}const ct=1e4;function Ns(e,t){if(e.length===0)return 0;switch(t){case"max":return Math.max(...e.map(n=>n.quantity));case"last":return e.reduce((n,r)=>(r.occurredAt??0)>=(n.occurredAt??0)?r:n).quantity;case"average":return e.reduce((n,r)=>n+r.quantity,0)/e.length;default:return e.reduce((n,r)=>n+r.quantity,0)}}function Ds(e){return e.replace(/\D/g,"").replace(/^00/,"")}function qd(e,t){return"equals"in e?(t??"")===e.equals:t===void 0?!1:/^\d+$/.test(e.prefix)?Ds(t).startsWith(e.prefix):t.startsWith(e.prefix)}function Wr(e){return Object.values(e.match).reduce((t,n)=>t+("prefix"in n?n.prefix.length*100:1),0)}function xs(e,t){let n;for(const r of t)Object.entries(r.match).every(([s,i])=>qd(i,e.dimensions[s]))&&(!n||Wr(r)>Wr(n))&&(n=r);return n}function ws(e,t){const n=Math.max(t.firstIncrement,1),r=Math.max(t.nextIncrement,1),o=e<=n?n:n+Math.ceil((e-n)/r)*r;return Math.max(o,t.minimum)}function Ps(e,t,n){const r=t.tiers;if(t.mode==="volume"){const a=r.find(c=>c.upTo===void 0||e<=c.upTo)??r.at(-1);return a?{micros:U(e*a.micros/n),bands:[{quantity:e,micros:a.micros}]}:{micros:0,bands:[]}}const o=[];let s=0,i=0;for(const a of r){if(e<=s)break;const c=a.upTo===void 0?e:Math.min(e,a.upTo),u=c-s;u>0&&(o.push({quantity:u,micros:a.micros}),i+=u*a.micros/n),s=c}return{micros:U(i),bands:o}}function Gd(e,t,n="sum"){const r=[],o=new Map;for(const i of e){if(i.quantity<=0)continue;const a=xs(i,t);if(!a||a.price.kind==="markup"&&i.costMicros==null){r.push(i);continue}const c=o.get(a.id)??{rate:a,billed:[],ids:[],costMicros:0};c.ids.push(i.id),c.billed.push({quantity:ws(i.quantity,a),occurredAt:i.occurredAt}),c.costMicros+=i.costMicros??0,o.set(a.id,c)}return{groups:[...o.values()].map(({rate:i,billed:a,ids:c,costMicros:u})=>{const d=Ns(a,n),l=Math.min(i.included??0,d),p=d-l,g=i.setupMicros*a.length;let f,m;i.price.kind==="flat"?f=U(p*i.price.micros/i.unitSize):i.price.kind==="tiered"?{micros:f,bands:m}=Ps(p,i.price,i.unitSize):f=U(u*(1+i.price.percent/100));const _=f+g;return{rateId:i.id,label:i.label,records:a.length,recordIds:c,measured:d,included:l,billed:p,micros:_,cents:U(_/ct),...m?{bands:m}:{}}}),unrated:r}}function Vd(e,t,n){const r={quantity:1,unitKey:"piece",unitPriceCents:e.cents};if(t?.price.kind!=="flat"||t.setupMicros||!e.billed)return r;const o=t.price.micros*n.per/t.unitSize;if(!Number.isInteger(o/ct))return r;const s=o/ct,i=Math.round(e.billed/n.per*1e4)/1e4;return U(i*s)===e.cents?{quantity:i,unitKey:n.unit,unitPriceCents:s}:r}function Vn(e){const t=e.usage;if(!t?.rateId||e.unitKey!=="piece"||!(t.per>0))return null;const n=Math.round((t.measured-(t.included??0))/t.per*100)/100;return{amount:Math.max(0,n),unit:t.unit}}function Wd(e,t,n,r){const{unitKey:o,id:s,organizationId:i,productId:a,businessEntityId:c,updatedAt:u,...d}=n??{};return{...e,...d,currency:n?.currency||r,...o?{salesUnitKey:o}:{},...t?{taxRateKey:t.taxRateKey,...t.ledgerCategoryKey?{ledgerCategoryKey:t.ledgerCategoryKey}:{},...t.referenceCost?{referenceCost:t.referenceCost}:{},...t.blocked?{blocked:!0}:{}}:{},released:!!t}}function Hd(e){return!e.archived&&e.sellable!==!1}function Yd(e){return!e.archived&&e.purchasable===!0}const zd=["piece","hour","day","month","km","license","minute","kg","ton","m","m2","m3","liter","box","roll","pallet","pack"],Xd=new Set(["hour","day","month","km","minute","kg","ton","m","m2","m3","liter"]),Qd=e=>Xd.has(e),Zd="usage-source",Jd="/usage/records";function Ls(e){const t=e.unit||"unit",n=Number(e.display?.per);return{key:e.key,label:e.label??e.key,unit:t,display:{unit:e.display?.unit||t,per:n>0?n:1},aggregation:e.aggregation??"sum",account:e.account==="customer"?"customer":"source",dimensions:(e.dimensions??[]).map(r=>({...r,match:r.match==="prefix"?"prefix":"exact"})),increments:(e.increments??[]).filter(r=>Number.isInteger(r.first)&&r.first>0&&Number.isInteger(r.next)&&r.next>0)}}function ef(e){return{...e,meters:(e.meters??[]).map(t=>Ls(t)),accounts:e.accounts??[]}}const tf=new Set(["mail","message"]);function Ks(e,t){const n=e.settings?.signatures?.[t];return!n?.enabled||!n.body||n.body.trim()===""?null:n}function nf(e,t,n,r="html"){if(!e)return n;const o=Ks(e,t);return o?`${n}${r==="text"?`
|
|
7
|
+
`}const Bn=e=>`user:${e}`,jn=e=>`team:${e}`;function td(e){const t=new Set;for(const n of e??[])n?.id&&(n.kind==="user"&&t.add(Bn(n.id)),n.kind==="team"&&t.add(jn(n.id)));return[...t].sort()}function nd(e,t){return[Bn(e),...t.map(jn)]}function rd(e){const t=new Set;for(const n of e??[])n?.kind&&t.add(n.kind);return[...t]}const ys=["done","escalated"],od=["open","waiting"];function sd(e){return ys.includes(e)}const bs="assignment";function id(e){return`${bs}:${e}`}function ad(e,t,n,r){if(e.direction==="inbound")return!0;if(e.author?.type==="user"&&e.author.id===t)return!1;const o=e.payload?.mentions;return Array.isArray(o)&&o.includes(t)||r&&r===t?!0:n==="reply"}function cd(e){const{targetAuthorId:t,reactorId:n,agentId:r,on:o}=e;return!o||!t||t!==r?!1:n!==r}function ud(e){return e.subjectKind&&e.subjectId?{type:e.subjectKind,id:e.subjectId}:void 0}const _s=12;function ld(e,t,n=_s){const r=t+1;return e?e.kind==="done"?{status:"done",waitingOn:null,turns:r,reason:e.note}:e.kind==="escalate"?{status:"escalated",waitingOn:null,turns:r,reason:e.reason}:r>=n?{status:"escalated",waitingOn:null,turns:r,reason:`na ${n} beurten nog niet afgerond, dus een mens neemt het over`}:{status:"waiting",waitingOn:e.on,turns:r}:{status:"escalated",waitingOn:null,turns:r,reason:"de agent rondde zijn beurt af zonder te zeggen wat er moet gebeuren (wachten, afronden of overdragen)"}}const Is=2;function dd(e,t,n,r){if(t===n)return"een agent schakelt zichzelf niet in";if(!r?.includes(t))return"deze agent staat niet in de lijst die je mag inschakelen";const o=e??[];if(o.includes(t))return"die agent zit al in deze keten; dat zou een kringetje worden";const s=Math.max(0,o.length-1);return s>=Is?`er zijn al ${s} agents ingeschakeld voor deze vraag; dieper delegeren mag niet`:null}const jr=e=>e.replace(/[\s.\-/]+/g,"").toUpperCase(),qr=(e,t)=>Math.abs(Date.parse(`${e}T00:00:00Z`)-Date.parse(`${t}T00:00:00Z`))/864e5;function fd(e,t){const n=e.amountCents>0,r=Math.abs(e.amountCents),o=n?"sales_invoice":"receipt",s=t.documents.filter(h=>h.kind===o&&h.openCents>0),i=jr(`${e.description} ${e.endToEndId??""}`),a=h=>h.kind==="sales_invoice"?{kind:"sales_invoice",transactionId:h.id,sourceApp:h.sourceApp??"sales"}:{kind:"receipt",receiptId:h.id},c=s.filter(h=>h.number&&i.includes(jr(h.number))),u=c.find(h=>h.openCents===r);if(u)return{target:a(u),via:"exact",confidence:"high",reasons:["invoice_number","amount"],label:u.label};if(c.length===1&&c[0]){const h=c[0];return{target:a(h),via:"exact",confidence:"medium",reasons:["invoice_number"],label:h.label}}const d=e.counterpartyIban;if(d){const h=s.filter(y=>y.ibans.includes(d)&&y.openCents===r);if(h.length===1&&h[0]){const y=h[0];return{target:a(y),via:"exact",confidence:"high",reasons:["iban","amount"],label:y.label}}}const l=(t.scheduled??[]).filter(h=>h.expectedBankCents===e.amountCents),p=d?l.filter(h=>h.ibans.includes(d)):[],g=l.filter(h=>qr(h.dueOn,e.date)<=7),f=p.length===1?p[0]:g.length===1?g[0]:void 0;if(f)return{target:{kind:"scheduled_posting",scheduledPostingId:f.id},via:"exact",confidence:p.length===1?"high":"medium",reasons:p.length===1?["iban","amount"]:["amount","date_window"],label:f.label};if(d&&t.ownIbans.some(h=>h.iban===d&&h.bankAccountId!==e.bankAccountId)){const h=t.otherLines.find(y=>y.state==="unmatched"&&y.bankAccountId!==e.bankAccountId&&y.amountCents===-e.amountCents&&qr(y.date,e.date)<=3);if(h)return{target:{kind:"transfer",bankLineId:h.id},via:"exact",confidence:"high",reasons:["own_account","amount"]}}const m=e.description.toLowerCase(),_=[...t.rules].sort((h,y)=>h.order-y.order).find(h=>{const y=h.when;return y.bankAccountId&&y.bankAccountId!==e.bankAccountId||y.counterpartyIban&&y.counterpartyIban!==d||y.direction&&y.direction!==(n?"in":"out")||y.descriptionContains&&!m.includes(y.descriptionContains.toLowerCase())?!1:!!(y.counterpartyIban||y.descriptionContains)});if(_)return{target:_.action.financingItemId?{kind:"financing",financingItemId:_.action.financingItemId}:{kind:"account",accountId:_.action.accountId,..._.action.taxCode?{taxCode:_.action.taxCode}:{},..._.action.description?{description:_.action.description}:{}},via:"rule",confidence:_.confidence,ruleId:_.id,reasons:["rule"],label:_.name}}const pd=e=>e.reduce((t,n)=>n>t?n:t,"");function Es(e,t){return t?e.on>t?!1:e.status==="active"||new Date(e.reversal?.at??0).toISOString().slice(0,10)>t:e.status==="active"}function md(e,t,n,r){const[o,s]=[e.slice(0,3),e.slice(3)],i=o==="jl:"?"journal_line":"bank_line",a=n.filter(c=>Es(c,r)).flatMap(c=>c.allocations).filter(c=>c.item.kind===i&&c.item.id===s).reduce((c,u)=>c+u.amountCents,0);return t-a}function gd(e){return e.allocations.reduce((t,n)=>t+n.amountCents,0)===0}function hd(e,t){const n=Math.sign(t)===Math.sign(e);return{state:t===0?"paid":n?Math.abs(t)>=Math.abs(e)?"unpaid":"partially_paid":"overpaid",paidCents:Math.abs(e-t),openCents:n?Math.abs(t):0}}const Ss=e=>e.replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'").replace(/&/g,"&").trim();function Q(e,t){const n=[],r=new RegExp(`<${t}(?:\\s[^>]*)?>([\\s\\S]*?)</${t}>`,"g");for(let o=r.exec(e);o;o=r.exec(e))n.push(o[1]??"");return n}function N(e,...t){let n=e;for(const r of t)n=n===void 0?void 0:Q(n,r)[0];return n===void 0?void 0:Ss(n)}const at=e=>{if(!e)return;const t=Number(e.replace(",","."));return Number.isFinite(t)?Math.round(t*100):void 0},Gr=e=>e?.slice(0,10),yd=e=>e?/(\d{4}-\d{2}-\d{2})/.exec(e)?.[1]:void 0;function As(e){const t=e.replace(/<(\/?)[\w-]+:/g,"<$1"),n=Q(t,"Stmt")[0]??t,r=N(n,"Id")??"stmt",o=d=>{const l=Q(n,"Bal").find(g=>N(g,"Cd")===d);if(!l)return;const p=at(N(l,"Amt"));if(p!==void 0)return{cents:N(l,"CdtDbtInd")==="DBIT"?-p:p,date:yd(l)}},s=o("OPBD")??o("PRCD"),i=o("CLBD"),a=Q(n,"Ntry").flatMap((d,l)=>{if((N(d,"Sts","Cd")??N(d,"Sts"))==="PDNG")return[];const p=at(N(d,"Amt"));if(p===void 0)return[];const g=N(d,"CdtDbtInd")==="DBIT",f=Q(d,"TxDtls")[0]??d,m=g?"Cdtr":"Dbtr",_=N(f,"RltdPties",m,"Nm")??N(f,"RltdPties",m,"Pty","Nm"),h=N(f,"RltdPties",`${m}Acct`,"Id","IBAN"),y=[...Q(f,"Ustrd").map(Ss),N(d,"AddtlNtryInf")].filter(Boolean),b=N(f,"Refs","EndToEndId"),I=Gr(N(d,"BookgDt","Dt")??N(d,"BookgDt","DtTm"))??"",v=Gr(N(d,"ValDt","Dt")??N(d,"ValDt","DtTm")),T=N(d,"AcctSvcrRef")??N(d,"NtryRef");return[{date:I,...v?{valueDate:v}:{},amountCents:g?-p:p,currency:/Ccy="([A-Z]{3})"/.exec(d)?.[1]??"EUR",..._?{counterpartyName:_}:{},...h?{counterpartyIban:h.replace(/\s+/g,"").toUpperCase()}:{},description:y.join(" ").replace(/\s+/g," ").trim(),...b&&b!=="NOTPROVIDED"?{endToEndId:b}:{},dedupeKey:T?`ref:${T}`:`seq:${r}:${l+1}`}]}),c=a.map(d=>d.date).filter(Boolean).sort(),u=N(n,"Acct","Id","IBAN");return{format:"camt053",...u?{iban:u.replace(/\s+/g,"").toUpperCase()}:{},...N(n,"Acct","Ccy")?{currency:N(n,"Acct","Ccy")}:{},from:N(n,"FrToDt","FrDtTm")?.slice(0,10)??s?.date??c[0]??"",to:N(n,"FrToDt","ToDtTm")?.slice(0,10)??i?.date??c.at(-1)??"",...s?{openingCents:s.cents}:{},...i?{closingCents:i.cents}:{},lines:a}}const vs=e=>`20${e.slice(0,2)}-${e.slice(2,4)}-${e.slice(4,6)}`;function Wr(e){const t=e&&/^([CD])(\d{6})([A-Z]{3})([\d,]+)/.exec(e.trim());if(!t)return;const n=at(t[4])??0;return{cents:t[1]==="D"?-n:n,date:vs(t[2]??""),currency:t[3]}}const bd=["TRTP","IBAN","BIC","NAME","REMI","EREF","ORDP","BENM","MARF","CSID","PREF","RTRN"];function _d(e){const t=e.replace(/\r?\n/g,""),n=new RegExp("/("+bd.join("|")+")/","g"),r=[...t.matchAll(n)];if(!r.length)return{description:t.trim()};const o={};r.forEach((i,a)=>{const c=(i.index??0)+i[0].length,u=r[a+1]?.index??t.length;o[i[1]??""]=t.slice(c,u).replace(/\/$/,"").trim()});const s=(o.REMI??"").replace(/^(?:USTD|STRD)\/+(?:[A-Z]+\/+)*/,"").trim();return{...o.NAME?{counterpartyName:o.NAME}:{},...o.IBAN?{counterpartyIban:o.IBAN.replace(/\s+/g,"").toUpperCase()}:{},...o.EREF&&o.EREF!=="NOTPROVIDED"?{endToEndId:o.EREF}:{},description:s||t.trim()}}function Cs(e){const t=e.replace(/\r\n/g,`
|
|
8
|
+
`),n=[];for(const d of t.split(/\n(?=:\d{2}[A-Z]?:)/)){const l=/^:(\d{2}[A-Z]?):([\s\S]*)$/.exec(d.trim());l&&n.push({tag:l[1]??"",value:(l[2]??"").replace(/\n-}?$/,"").trim()})}let r,o="0",s,i;const a=[];let c=0;for(const{tag:d,value:l}of n)if(d==="25")r=l.split("/")[0]?.replace(/\s+/g,"").toUpperCase();else if(d==="28C")o=l,c=0;else if(d==="60F"||d==="60M")s??=Wr(l);else if(d==="62F"||d==="62M")i=Wr(l);else if(d==="61"){const p=l.split(`
|
|
9
|
+
`)[0]??"",g=/^(\d{6})(\d{4})?(R?[CD])[A-Z]?([\d,]+)(?:N[A-Z0-9]{3})?([^/]*)(?:\/\/(\S+))?/.exec(p);if(!g)continue;c++;const f=at(g[4])??0,m=g[3]==="C"||g[3]==="RD",_=vs(g[1]??""),h=g[2]?`${_.slice(0,4)}-${g[2].slice(0,2)}-${g[2].slice(2,4)}`:_,y=g[6]??g[5]?.trim();a.push({date:h,valueDate:_,amountCents:m?f:-f,currency:s?.currency??"EUR",description:"",dedupeKey:y&&y!=="NONREF"?`ref:${y}`:`seq:${o}:${c}`})}else if(d==="86"){const p=a.at(-1);p&&!p.description&&Object.assign(p,_d(l))}const u=a.map(d=>d.date).sort();return{format:"mt940",...r&&/^[A-Z]{2}\d{2}/.test(r)?{iban:r}:{},...s?.currency?{currency:s.currency}:{},from:s?.date??u[0]??"",to:i?.date??u.at(-1)??"",...s?{openingCents:s.cents}:{},...i?{closingCents:i.cents}:{},lines:a}}function Id(e){return/<\s*(?:[\w-]+:)?Document[\s>]/.test(e)||e.includes("camt.053")?As(e):Cs(e)}const Ed=e=>(e.kind==="journal_line"?"jl:":"bl:")+e.id,Tt=e=>e.invoiceTo?.companyId||e.companyId;function Ae(e){const t=e??{},n={};for(const r of qn){const o=t[r];typeof o=="string"&&o.trim()&&(n[r]=o.trim())}return Object.keys(n).length?n:void 0}const qn=["costCenterId","costUnitId","projectId","customerCompanyId"],Sd=864e5,Vr=e=>new Date(e).toISOString().slice(0,10);function Ad(e,t){if(!t.length)return e;const n=new Map;for(const m of t){const _=m.target.kind==="contract_line"?{from:Vr(m.target.period.from),to:Vr(m.target.period.to-Sd)}:void 0,h={...Ae({...m.dimensions,...m.customerCompanyId?{customerCompanyId:m.customerCompanyId}:{}}),..._&&!e.period?{period:_}:{}},y=JSON.stringify(h),b=n.get(y);n.set(y,{share:h,cents:(b?.cents??0)+m.amountCents})}const r=t[0],o={...r.productId?{productId:r.productId}:{},...r.ledgerCategoryKey?{ledgerCategoryKey:r.ledgerCategoryKey}:{},...r.use?{use:r.use}:{}},{allocations:s,...i}=e,a=[...n.values()];if(a.length===1)return{...i,...o,...a[0].share};const c=de(e.netCents,a.map(m=>m.cents)),u=de(e.taxCents,c),{costCenterId:d,costUnitId:l,projectId:p,customerCompanyId:g,...f}=i;return{...f,...o,allocations:a.map(({share:m},_)=>({...m,netCents:c[_],taxCents:u[_]}))}}function vd(e){if(!e.allocations?.length)return[e];const{allocations:t,...n}=e;return t.map(({period:r,...o})=>({...n,...o,...r&&!n.period?{period:r}:{}}))}function Cd(e,t,n){return n===void 0?[...e]:e.map(r=>{if(r.treatment||r.use==="resale"||r.netCents<n)return r;const o=t.find(s=>s.costAccountId===r.accountKey);return o?{...r,treatment:{kind:"asset",groupId:o.id,aiSuggested:!0}}:r})}function Ts(e){const t=e.reduce((r,o)=>r+o.netCents,0),n=e.reduce((r,o)=>r+o.taxCents,0);return{netCents:t,taxCents:n,grossCents:t+n}}const Td="receipt",kd="book";function ks(e){const t=[];return e.fields.supplierName?.value.trim()||t.push("no_supplier"),e.fields.issueDate?.value||t.push("no_date"),e.lines.length?e.lines.some(n=>!n.accountKey)&&t.push("no_account"):t.push("no_lines"),e.lines.some(n=>n.treatment?.kind==="asset"&&!n.treatment.groupId)&&t.push("asset_without_group"),e.lines.some(n=>n.treatment?.kind==="spread"&&!(n.treatment.months>0&&n.treatment.firstMonth&&n.treatment.resultAccountId))&&t.push("spread_without_months"),t}function Od(e){if(e.status!=="to_check")return null;const t=ks(e);return t.length?t.includes("no_account")||t.includes("no_lines")?"choose":"check":e.duplicateOf||e.match&&!e.match.verdict.ok?"check":"confirm"}function Os(e,t=""){const n=new Map;for(const r of e.flatMap(vd)){const o=[r.accountKey??"",r.ledgerCategoryKey??"",r.taxRateKey,r.taxPercent??"",r.taxKind??"",...qn.map(i=>r[i]??""),r.productId??"",r.period?[r.period.from,r.period.to].join("/"):""].join("|"),s=n.get(o)??{line:r,net:0,tax:0,words:[]};s.net+=r.netCents,s.tax+=r.taxCents,r.description&&s.words.push(r.description),n.set(o,s)}return[...n.values()].map(({line:r,net:o,tax:s,words:i})=>({description:[...new Set(i)].join(", ").slice(0,120)||t,netCents:o,taxCents:s,taxRateKey:r.taxRateKey,taxKind:r.taxKind??"standard",...r.taxPercent!==void 0?{taxPercent:r.taxPercent}:{},...r.accountKey?{accountKey:r.accountKey}:{},dimensions:Ae(r),...r.productId?{productId:r.productId}:{},...r.ledgerCategoryKey?{ledgerCategoryKey:r.ledgerCategoryKey}:{},...r.period&&!r.treatment?{period:r.period}:{}}))}function Md(e,t="finance"){const n=e.fields;return{sourceApp:t,documentId:e.id,direction:"purchase",kind:"receipt",businessEntityId:e.businessEntityId,...n.invoiceNumber?.value?{number:n.invoiceNumber.value}:{},counterparty:{...e.supplierCompanyId?{companyId:e.supplierCompanyId}:{},name:n.supplierName?.value??"",...n.supplierVatNumber?.value?{vatNumber:n.supplierVatNumber.value}:{}},issueDate:n.issueDate?.value??"",...n.dueDate?.value?{dueDate:n.dueDate.value}:{},currency:n.currency?.value||"EUR",...n.fxRate?.value?{fxRate:n.fxRate.value}:{},lines:Os(e.lines,n.supplierName?.value??""),totals:Ts(e.lines),attachment:{mountId:e.file.mountId,fileId:e.file.fileId},...e.externalIds?.length?{externalIds:e.externalIds}:{},...e.kind==="credit_note"&&e.creditsReceiptId?{creditsDocumentId:e.creditsReceiptId}:{}}}function Rd(e,t,n){return`${e}:${t}:${n}`}function Nd(e){return[1,5,15][e-1]??60}const Dd=10*6e4;function Ms(e,t,n){const r=n?t.filter(s=>(s.direction??"sale")===n):t,o=s=>r.find(i=>s(i.match));return e.productId&&o(s=>s.productId===e.productId)||e.ledgerCategoryKey&&o(s=>s.ledgerCategoryKey===e.ledgerCategoryKey)||o(s=>!!s.taxRateKey&&!s.productId&&!s.ledgerCategoryKey&&s.taxRateKey===e.taxRateKey)||o(s=>!s.productId&&!s.ledgerCategoryKey&&!s.taxRateKey)}const xd="organization.business-entities.list",wd=["bv","nv","eenmanszaak","vof","maatschap","stichting","vereniging","other"];function Pd(e,t,n){const r=new Map;for(const o of e)o.businessEntityId||r.set(o[t],o);if(n)for(const o of e)o.businessEntityId===n&&r.set(o[t],o);return[...r.values()]}function Ld(e,t,n){return n*Rs(e,t)}function Rs(e,t){if(t===e.unitKey)return 1;const n=e.units?.find(r=>r.key===t);if(!n||!(n.factor>0))throw new Error(`unknown unit ${t}`);return n.factor}function Kd(e){const t=new Set;for(const n of e.units??[]){if(!n.key||n.key===e.unitKey||t.has(n.key))return"unit_duplicate";if(!(n.factor>0))return"unit_factor_invalid";t.add(n.key)}return null}function $d(e,t){return!t.some(n=>n.parentId===e.id)}function Ud(e,t,n){const r=e.optionKeys??[],o=t.options??[];if(o.map(c=>c.key).length!==r.length||r.some(c=>!o.find(u=>u.key===c&&u.value.trim())))return"variant_options_mismatch";const i=c=>r.map(u=>c?.find(d=>d.key===u)?.value.trim()??"").join("\0"),a=i(o);return n.some(c=>c.id!==t.id&&i(c.options)===a)?"variant_options_duplicate":null}function Fd(e,t){return e.archived?"product_archived":t?t.blocked?"product_blocked":null:"product_not_released"}function Bd(e,t){return Go(e.cents,e.per??t,t)}function kt(e){const t=e.trim().replace(/[\s-]/g,"");if(!/^\d+$/.test(t)||![8,12,13,14].includes(t.length))return;const n=t.padStart(14,"0");return jd(n.slice(0,13))===Number(n[13])?n:void 0}function jd(e){let t=0;for(let n=0;n<e.length;n++)t+=Number(e[n])*(n%2===0?3:1);return(10-t%10)%10}function qd(e,t){const n=t.trim(),r=kt(n),o=[{sku:n},{barcodes:{$in:[n]}}];return r&&o.push({gtin:r},{packGtins:{$in:[r]}}),{organizationId:e,$or:o}}const Gd=[{key:"customer",matches:(e,t)=>!!e.companyId&&e.companyId===t.companyId&&!!e.productId},{key:"customer_category",matches:(e,t)=>!!e.companyId&&e.companyId===t.companyId&&!!e.categoryKey},{key:"segment",matches:(e,t)=>!e.companyId&&!!e.segmentKey&&e.segmentKey===t.segmentKey&&!!e.productId},{key:"segment_category",matches:(e,t)=>!e.companyId&&!!e.segmentKey&&e.segmentKey===t.segmentKey&&!!e.categoryKey},{key:"everyone",matches:e=>!e.companyId&&!e.segmentKey&&!!e.productId},{key:"everyone_category",matches:e=>!e.companyId&&!e.segmentKey&&!!e.categoryKey}];function Ns(e,t,n,r){const o=n.filter(s=>r(s)&&s.currency===e.currency&&(s.validFrom==null||s.validFrom<=t.at)&&(s.validTo==null||s.validTo>=t.at)&&(s.minQuantity==null||t.quantity>=s.minQuantity)&&(s.productId==null||s.productId===e.id)&&(s.categoryKey==null||s.categoryKey===e.categoryKey)&&(s.productId!=null||s.categoryKey!=null));for(const s of Gd){const i=o.filter(c=>s.matches(c,t));if(i.length===0)continue;const a=i.reduce((c,u)=>{const d=(u.minQuantity??0)-(c.minQuantity??0);return d!==0?d>0?u:c:(u.validFrom??0)>=(c.validFrom??0)?u:c});return{rule:a,sourceKey:(a.minQuantity??0)>1?"tier":s.key}}return null}function Ds(e,t,n){const r=Ns(e,t,n,c=>!c.rateCardId),o={currency:e.currency,...e.pricePer?{per:e.pricePer}:{}},s=e.markupPercent!=null,i=s?t.costCents==null?void 0:U(t.costCents*(1+(e.markupPercent??0)/100)):e.listPriceCents;if(!r)return i==null?{...o,sourceKey:mn}:{unitPriceCents:i,...o,sourceKey:s?"markup":"list"};if(r.rule.unitPriceCents==null&&i==null)return{...o,sourceKey:mn};const a=r.rule.unitPriceCents!=null&&r.rule.pricePer||e.pricePer;return{unitPriceCents:Vd(r.rule,i??0),currency:e.currency,...a?{per:a}:{},sourceKey:r.sourceKey,ruleId:r.rule.id}}function Wd(e,t,n){const r=Ns(e,t,n,o=>!!o.rateCardId);return r?.rule.rateCardId?{rateCardId:r.rule.rateCardId,sourceKey:r.sourceKey,ruleId:r.rule.id}:e.rateCardId?{rateCardId:e.rateCardId,sourceKey:"list"}:null}function Vd(e,t){return e.unitPriceCents!=null?e.unitPriceCents:e.discountPercent!=null?U(t*(1-e.discountPercent/100)):t}const xs="manual",mn="missing";function Hd(e,t,n,r){return e.map(o=>{if(o.kind!=="product"||o.priceSourceKey===xs||o.usage)return o;const s=t.find(p=>p.id===o.productId);if(!s)return o;const i=o.factor??1,a=o.costPriceCents!=null?{costCents:o.costPriceCents/i}:{},c=Ds(s,{...r,quantity:o.quantity*i,...a},n),u=c.unitPriceCents==null?0:c.unitPriceCents*i;if(u===o.unitPriceCents&&c.sourceKey===o.priceSourceKey&&c.per===o.pricePer)return o;const{pricePer:d,...l}=o;return{...l,unitPriceCents:u,priceSourceKey:c.sourceKey,...c.per?{pricePer:c.per}:{}}})}function Gn(e){const t=/^\s*(-?)(\d*)[.,]?(\d*)\s*$/.exec(e);if(!t||t[2]===""&&t[3]==="")return;const n=`${t[3]}000000`.slice(0,6),r=Number(t[2]||"0")*1e6+Number(n);return t[1]?-r:r}function Yd(e){const t=e<0?"-":"",n=Math.abs(Math.round(e)),r=String(n%1e6).padStart(6,"0").replace(/0{1,2}$/,"");return`${t}${Math.floor(n/1e6)},${r.length<4?r.padEnd(4,"0"):r}`}function gn(e){const t=/^\s*\+\s*(\d+(?:[.,]\d+)?)\s*%\s*$/.exec(e);if(t)return{kind:"markup",percent:Number(t[1].replace(",","."))};const n=Gn(e);return n===void 0?void 0:{kind:"flat",micros:n}}function zd(e,t){const n=[],r=[],o=e.split(/\r?\n/),s=(o[0]??"").includes(";")?";":",",i=t.dimensions,a=t.display.per>1,c=1+i.length+1;return o.forEach((u,d)=>{const l=d+1;if(!u.trim())return;const p=u.split(s).map(O=>O.trim());if(d===0&&!gn(p[c]??""))return;const g=p[0]??"",f={};i.forEach((O,E)=>{const M=p[1+E]??"";if(!M)return;const F=/^[+\d\s-]+$/.test(M)?M.replace(/\D/g,"").replace(/^00/,""):M;f[O.key]=O.match==="prefix"?{prefix:F}:{equals:M}});const m=p[1+i.length]??"",_=m===""?0:Gn(m),h=gn(p[c]??""),[y,b]=a?(p[c+1]||"1/1").split("/").map(Number):[1,1],I=a?p[c+2]??"":"",v=I===""?0:Number(I),T=g?_===void 0||!h?"price":!(y>0)||!((b??y)>0)||!Number.isFinite(v)?"increment":null:"label";if(T){r.push({line:l,message:T});return}n.push({label:g,match:f,setupMicros:_,price:h,unitSize:t.display.per,firstIncrement:y,nextIncrement:b??y,minimum:v})}),{rates:n,errors:r}}const ct=1e4;function ws(e,t){if(e.length===0)return 0;switch(t){case"max":return Math.max(...e.map(n=>n.quantity));case"last":return e.reduce((n,r)=>(r.occurredAt??0)>=(n.occurredAt??0)?r:n).quantity;case"average":return e.reduce((n,r)=>n+r.quantity,0)/e.length;default:return e.reduce((n,r)=>n+r.quantity,0)}}function Ps(e){return e.replace(/\D/g,"").replace(/^00/,"")}function Xd(e,t){return"equals"in e?(t??"")===e.equals:t===void 0?!1:/^\d+$/.test(e.prefix)?Ps(t).startsWith(e.prefix):t.startsWith(e.prefix)}function Hr(e){return Object.values(e.match).reduce((t,n)=>t+("prefix"in n?n.prefix.length*100:1),0)}function Ls(e,t){let n;for(const r of t)Object.entries(r.match).every(([s,i])=>Xd(i,e.dimensions[s]))&&(!n||Hr(r)>Hr(n))&&(n=r);return n}function Ks(e,t){const n=Math.max(t.firstIncrement,1),r=Math.max(t.nextIncrement,1),o=e<=n?n:n+Math.ceil((e-n)/r)*r;return Math.max(o,t.minimum)}function $s(e,t,n){const r=t.tiers;if(t.mode==="volume"){const a=r.find(c=>c.upTo===void 0||e<=c.upTo)??r.at(-1);return a?{micros:U(e*a.micros/n),bands:[{quantity:e,micros:a.micros}]}:{micros:0,bands:[]}}const o=[];let s=0,i=0;for(const a of r){if(e<=s)break;const c=a.upTo===void 0?e:Math.min(e,a.upTo),u=c-s;u>0&&(o.push({quantity:u,micros:a.micros}),i+=u*a.micros/n),s=c}return{micros:U(i),bands:o}}function Qd(e,t,n="sum"){const r=[],o=new Map;for(const i of e){if(i.quantity<=0)continue;const a=Ls(i,t);if(!a||a.price.kind==="markup"&&i.costMicros==null){r.push(i);continue}const c=o.get(a.id)??{rate:a,billed:[],ids:[],costMicros:0};c.ids.push(i.id),c.billed.push({quantity:Ks(i.quantity,a),occurredAt:i.occurredAt}),c.costMicros+=i.costMicros??0,o.set(a.id,c)}return{groups:[...o.values()].map(({rate:i,billed:a,ids:c,costMicros:u})=>{const d=ws(a,n),l=Math.min(i.included??0,d),p=d-l,g=i.setupMicros*a.length;let f,m;i.price.kind==="flat"?f=U(p*i.price.micros/i.unitSize):i.price.kind==="tiered"?{micros:f,bands:m}=$s(p,i.price,i.unitSize):f=U(u*(1+i.price.percent/100));const _=f+g;return{rateId:i.id,label:i.label,records:a.length,recordIds:c,measured:d,included:l,billed:p,micros:_,cents:U(_/ct),...m?{bands:m}:{}}}),unrated:r}}function Zd(e,t,n){const r={quantity:1,unitKey:"piece",unitPriceCents:e.cents};if(t?.price.kind!=="flat"||t.setupMicros||!e.billed)return r;const o=t.price.micros*n.per/t.unitSize;if(!Number.isInteger(o/ct))return r;const s=o/ct,i=Math.round(e.billed/n.per*1e4)/1e4;return U(i*s)===e.cents?{quantity:i,unitKey:n.unit,unitPriceCents:s}:r}function Wn(e){const t=e.usage;if(!t?.rateId||e.unitKey!=="piece"||!(t.per>0))return null;const n=Math.round((t.measured-(t.included??0))/t.per*100)/100;return{amount:Math.max(0,n),unit:t.unit}}function Jd(e,t,n,r){const{unitKey:o,id:s,organizationId:i,productId:a,businessEntityId:c,updatedAt:u,...d}=n??{};return{...e,...d,currency:n?.currency||r,...o?{salesUnitKey:o}:{},...t?{taxRateKey:t.taxRateKey,...t.ledgerCategoryKey?{ledgerCategoryKey:t.ledgerCategoryKey}:{},...t.referenceCost?{referenceCost:t.referenceCost}:{},...t.blocked?{blocked:!0}:{}}:{},released:!!t}}function ef(e){return!e.archived&&e.sellable!==!1}function tf(e){return!e.archived&&e.purchasable===!0}const nf=["piece","hour","day","month","km","license","minute","kg","ton","m","m2","m3","liter","box","roll","pallet","pack"],rf=new Set(["hour","day","month","km","minute","kg","ton","m","m2","m3","liter"]),of=e=>rf.has(e),sf="usage-source",af="/usage/records";function Us(e){const t=e.unit||"unit",n=Number(e.display?.per);return{key:e.key,label:e.label??e.key,unit:t,display:{unit:e.display?.unit||t,per:n>0?n:1},aggregation:e.aggregation??"sum",account:e.account==="customer"?"customer":"source",dimensions:(e.dimensions??[]).map(r=>({...r,match:r.match==="prefix"?"prefix":"exact"})),increments:(e.increments??[]).filter(r=>Number.isInteger(r.first)&&r.first>0&&Number.isInteger(r.next)&&r.next>0)}}function cf(e){return{...e,meters:(e.meters??[]).map(t=>Us(t)),accounts:e.accounts??[]}}const uf=new Set(["mail","message"]);function Fs(e,t){const n=e.settings?.signatures?.[t];return!n?.enabled||!n.body||n.body.trim()===""?null:n}function lf(e,t,n,r="html"){if(!e)return n;const o=Fs(e,t);return o?`${n}${r==="text"?`
|
|
10
10
|
|
|
11
|
-
`:t==="mail"?"<br><br>-- <br>":"<br><br>"}${o.body}`:n}const rf=["billing","delivery","site","visit"];function of(e,t){const n=e.filter(o=>!o.archived),r=o=>n.find(s=>s.primaryFor?.includes(o))??n.find(s=>s.kinds.includes(o));return r(t)??(t==="delivery"?r("billing"):void 0)}function $s(e){return e.replace(/[^A-Za-z0-9]/g,"").toUpperCase()}function sf(e){return e.replace(/[^A-Za-z0-9]/g,"").toUpperCase()}function af(e){const t=[];for(const n of e){if(typeof n!="string")continue;const r=$s(n);r&&!t.includes(r)&&t.push(r)}return t}const cf=["customer","supplier"],uf=e=>e==="customer"?"sales":"purchase";function lf(e){return e.endpoints??[]}const df=["lead","opportunity","customer","former"],ff=["new","working","unqualified"];function pf(e){return[e.firstName,e.lastName].filter(Boolean).join(" ").trim()}const Us=["stages","leadStatuses","sources","scopes","cities","parentCompanyIds","roles"],Bs=["openDeal","hasContacts"],mf={contact:["stages","leadStatuses","sources","scopes","cities","openDeal"],company:["stages","sources","scopes","cities","parentCompanyIds","roles","hasContacts"]},gf=["updatedAt","createdAt","name"],hf=["list"];function yf(e){return e.search?.trim()||e.createdWithinDays||Bs.some(t=>e[t])||Us.some(t=>e[t]?.length)?!1:!Object.values(e.fields??{}).some(t=>t.length)}const Fs="CRM_NOTE_ADDED",bf="crm_activity",js="CRM_CALL_LOGGED",_f="CRM_STAGE_CHANGED",If=["phone","meeting","video"],Ef=["callback","interested","no_answer","not_interested"],Sf=e=>e===Fs||e===js,Af=e=>e.payload.call?.at??e.createdAt??0;function ue(e){const t=(e??"").trim().toLowerCase();if(t)return t.split(/[-_]/)[0]||void 0}function vf(e){return ue(e.contactLocale)??ue(e.companyLocale)??ue(e.organizationLocale)}function Cf(e,t,n,r){const o=e.filter(a=>a.key===t&&!a.archived);if(o.length===0)return;const s=ue(n),i=ue(r);return o.find(a=>ue(a.locale)===s)??o.find(a=>ue(a.locale)===i)??o.find(a=>!a.locale)??o[0]}const Tf=/\{([a-zA-Z0-9_.]+)\}/g;function Wn(e,t){let n=e;for(const r of t.split(".")){if(n==null||typeof n!="object")return;n=n[r]}return n}function kf(e){return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function qs(e,t,n){const r=[];return{text:e.replace(Tf,(s,i)=>{const a=Wn(t,i);return a==null||a===""?(r.includes(i)||r.push(i),n??`{${i}}`):kf(a)}),unresolved:r}}function Gs(e,t){if(!e)return!0;const n=Wn(t,e.key);if(e.exists!==void 0){const r=n!=null&&n!==""&&n!==!1;return e.exists?r:!r}return e.equals!==void 0?n===e.equals:!0}function Of(e,t,n,r,o){const s=[],i=[],a=new Set,c=u=>{const d=qs(u,t,o);for(const l of d.unresolved)s.includes(l)||s.push(l);return d.text};for(const u of e){if(u.block_id&&!Gs(n?.[u.block_id],t))continue;const d=u.block_id?r?.[u.block_id]:void 0;if(d&&u.block_id){a.add(u.block_id),i.push(...d);continue}switch(u.type){case"heading":case"paragraph":case"quote":i.push({...u,text:c(u.text)});break;case"callout":i.push({...u,...u.title?{title:c(u.title)}:{},text:c(u.text)});break;case"code":i.push(u);break;case"list":i.push({...u,items:u.items.map(l=>({...l.lead?{lead:c(l.lead)}:{},text:c(l.text)}))});break;case"table":i.push({...u,columns:u.columns.map(l=>({...l,label:c(l.label)})),rows:u.rows.map(l=>l.map(c)),...u.caption?{caption:c(u.caption)}:{}});break;case"kpi":i.push({...u,items:u.items.map(l=>({...l,value:c(l.value),label:c(l.label)}))});break;case"letterhead":i.push({...u,fields:u.fields.map(l=>({...l,value:c(l.value)})),...u.recipient?{recipient:u.recipient.map(c)}:{}});break;case"totals":i.push({...u,rows:u.rows.map(l=>({...l,label:c(l.label),amount:c(l.amount)})),...u.taxRows?{taxRows:u.taxRows.map(l=>({...l,label:c(l.label),amount:c(l.amount)}))}:{}});break;case"image":i.push({...u,url:c(u.url),...u.alt?{alt:c(u.alt)}:{}});break;default:i.push(u)}}return{blocks:i,unresolved:s,unusedSlots:Object.keys(r??{}).filter(u=>!a.has(u))}}function Vs(e){const t=e?.address,n=[t?.street,t?.houseNumber].filter(Boolean).join(" "),r=[t?.postalCode,t?.city].filter(Boolean).join(" ");return{name:e?.name??"",addressLines:[n,r,t?.country??""].filter(Boolean),footerLines:[e?.footerText??"",e?.kvkNumber?`KvK ${e.kvkNumber}`:"",e?.vatNumber?`Btw ${e.vatNumber}`:"",e?.iban?`IBAN ${e.iban}`:""].filter(Boolean),...e?.logo?{logo:e.logo}:{}}}function Mf(e){return Vs({name:e?.billing?.companyName||e?.name||e?.displayName||"",address:e?.address,kvkNumber:e?.billing?.kvkNumber,vatNumber:e?.billing?.vatNumber,iban:e?.houseStyle?.iban,footerText:e?.houseStyle?.footerText,logo:e?.logo})}function Ws(e,t,n,r=Date.now()){const o=n.filter(s=>s.ok).length;return{suite:e,target:t,at:r,score:n.length?o/n.length:1,perCase:[...n]}}function Rf(e){return e.perCase.filter(t=>!t.ok).map(t=>`${t.caseId}: ${t.note??"onverwacht resultaat"}`)}async function Nf(e,t,n,r,o=Date.now()){const s=[];for(const i of n)try{s.push(await r(i))}catch(a){s.push({caseId:i.id,ok:!1,note:`beoordeling mislukt: ${a?.message??String(a)}`})}return Ws(e,t,s,o)}const Vt=864e5,ut=e=>Date.parse([e,"T00:00:00Z"].join("")),Df=e=>new Date(e).toISOString().slice(0,10);function Hs(e,t){const n=ut(t.from),r=ut(t.to)+Vt;if(!(r>n))return[{month:[t.from.slice(0,7),"-01"].join(""),cents:e}];const o=[];for(let i=new Date(n);;){const a=Date.UTC(i.getUTCFullYear(),i.getUTCMonth(),1);if(a>=r)break;const c=Date.UTC(i.getUTCFullYear(),i.getUTCMonth()+1,1),u=Math.round((Math.min(c,r)-Math.max(a,n))/Vt);o.push({month:Df(a),share:u/Math.round((c-a)/Vt)}),i=new Date(c)}const s=de(e,o.map(i=>i.share));return o.map((i,a)=>({month:i.month,cents:s[a]}))}function Ys(e){const t=new Date(ut(e.from)),n=new Date(ut(e.to));return(n.getUTCFullYear()-t.getUTCFullYear())*12+n.getUTCMonth()-t.getUTCMonth()+1}const Hn=864e5,Ot=e=>new Date(e).toISOString().slice(0,10),lt=e=>Date.parse(`${e}T00:00:00Z`);function fe(e,t){const[n,r,o]=e.split("-").map(Number),s=new Date(Date.UTC(n,r-1+t,1)),i=new Date(Date.UTC(s.getUTCFullYear(),s.getUTCMonth()+1,0)).getUTCDate();return s.setUTCDate(Math.min(o,i)),Ot(s.getTime())}function Yn(e){const t=Math.max(1,Math.round(e.termMonths)),n=Number(e.ratePercent)/100/12,r=e.principalCents,o=n===0?r/t:r*n/(1-(1+n)**-t),s=[];let i=r;for(let a=1;a<=t;a++){const c=Math.round(i*n);let u=e.method==="annuity"?Math.round(o)-c:e.method==="linear"?Math.round(r/t):0;a===t&&(u=i),u=Math.min(u,i),i-=u,s.push({sequence:a,dueOn:fe(e.firstDueOn,a-1),interestCents:c,principalCents:u,remainingCents:i})}return s}function xf(e,t,n,r){const o=Number(r)/100/365,s=[...e].sort((u,d)=>u.date.localeCompare(d.date));let i=s.filter(u=>u.date<t).reduce((u,d)=>u+d.cents,0),a=s.findIndex(u=>u.date>=t);a<0&&(a=s.length);let c=0;for(let u=lt(t);u<=lt(n);u+=Hn){const d=Ot(u);for(;a<s.length&&(s[a]?.date??"")<=d;)i+=s[a]?.cents??0,a++;c+=i*o}return Math.round(c)}function wf(e,t,n){const r=n==="quarterly"?3:12,[o,s]=e.split("-").map(Number),i=n==="quarterly"?Math.floor((s-1)/3)*3+1:1,a=[];let c=`${o}-${String(i).padStart(2,"0")}-01`;for(let u=1;c<=t&&u<400;u++){const d=fe(c,r);a.push({sequence:u,from:c<e?e:c,to:Ot(lt(d)-Hn)}),c=d}return a}const zs=5e7,Pf=["director","group_company","participation","other_company"],Lf=e=>e?.relation&&Pf.includes(e.relation)?e.relation:"director";function Kf(e,t=zs){return{over:e>t,ratio:Math.max(0,e)/t}}function $f(e,t){const r=e.terms.kind==="loan_received"?1:-1;return Yn(e.terms).filter(o=>o.dueOn<=t).map(o=>({financingItemId:e.id,sequence:o.sequence,dueOn:o.dueOn,lines:[...o.interestCents?[{accountId:e.terms.interestAccountId,amountCents:r*o.interestCents,description:`Rente termijn ${o.sequence}`}]:[],...o.principalCents?[{accountId:e.ledgerAccountId,amountCents:r*o.principalCents,subAccountId:e.id,description:`Aflossing termijn ${o.sequence}`}]:[]],expectedBankCents:-r*(o.interestCents+o.principalCents),settlesVia:"bank_line",label:`Termijn ${o.sequence}`}))}function Xs(e){return{...e.counterpartyCompanyId?{counterpartyCompanyId:e.counterpartyCompanyId}:{},...Ae(e.dimensions)}}function Qs(e){return Ot(lt(fe(`${e.slice(0,7)}-01`,1))-Hn)}function zn(e,t){const n=Math.max(1,Math.round(t)),r=Math.trunc(e/n);return Array.from({length:n},(o,s)=>s===n-1?e-r*(n-1):r)}function Zs(e,t,n,r,o,s,i=1){return t.map((a,c)=>({cents:a,sequence:i+c,dueOn:Qs(fe(n,c))})).filter(a=>a.dueOn<=r&&a.cents!==0).map(a=>({financingItemId:e,sequence:a.sequence,dueOn:a.dueOn,lines:o(a.cents,a.sequence),expectedBankCents:0,settlesVia:"direct",label:s(a.sequence)}))}function Xn(e){if(e.restart)return e.restart;if(e.opening)return{fromMonth:fe(`${e.opening.on.slice(0,7)}-01`,1),bookValueCents:e.costCents-e.opening.accumulatedCents,fromSequence:e.opening.monthsDone+1}}const Hr=600;function Js(e){const t=e.method??"linear",n=Xn(e),r=n?.bookValueCents??e.costCents,o=r-e.residualCents;if(t==="none"||o<=0)return[];if(t==="linear"){const u=e.lifeMonths-((n?.fromSequence??1)-1);return zn(o,Math.max(1,u))}const s=Number(String(e.ratePercent??"0").replace(",","."))/100;if(!(s>0&&s<1))return[];const i=1-(1-s)**(1/12),a=[];let c=r;for(;c>e.residualCents&&a.length<Hr;){const u=Math.max(1,Math.round(c*i)),d=c-u<=e.residualCents||a.length===Hr-1;a.push(d?c-e.residualCents:u),c-=a[a.length-1]??0}return a}function Uf(e,t){const n=e.terms,r=Xs(e);if(n.disposal)return[];const o=Js(n),s=Xn(n),i=n.method==="declining"?(s?.fromSequence??1)-1+o.length:n.lifeMonths;return Zs(e.id,o,s?.fromMonth??n.acquiredOn,t,(a,c)=>[{...r,accountId:n.depreciationAccountId,amountCents:a,description:e.name},{...r,accountId:n.accumulatedAccountId,amountCents:-a,subAccountId:e.id,description:`Afschrijving ${c}/${i}`}],a=>`Afschrijving ${a}/${i}`,s?.fromSequence??1)}function Bf(e,t){const n=e.terms,r=[];t.movementsCents&&r.push({accountId:n.accumulatedAccountId,amountCents:-t.movementsCents,subAccountId:e.id,description:e.name}),t.proceedsCents&&r.push({accountId:t.clearingAccountId,amountCents:t.proceedsCents,description:e.name}),r.push({accountId:e.ledgerAccountId,amountCents:-n.costCents,subAccountId:e.id,description:e.name});const o=r.reduce((s,i)=>s+i.amountCents,0);return o&&r.push({accountId:t.disposalAccountId,amountCents:-o,description:e.name}),r}function Ff(e,t){const n=e.terms,r=Xs(e),o=n.direction==="expense"?1:-1;return Zs(e.id,n.period?Hs(n.totalCents,n.period).map(s=>s.cents):zn(n.totalCents,n.months),n.firstMonth,t,(s,i)=>[{...r,accountId:n.resultAccountId,amountCents:o*s,description:e.name},{...r,accountId:e.ledgerAccountId,amountCents:-o*s,subAccountId:e.id,description:`${e.name} ${i}/${n.months}`}],s=>`${s}/${n.months}`)}function jf(e){return e.kind==="fixed_asset"?e.costCents-(e.opening?.accumulatedCents??0):e.upfront?e.direction==="expense"?e.totalCents:-e.totalCents:0}function qf(e,t){const n=fe(t,12);return Yn(e).filter(r=>r.dueOn>t&&r.dueOn<=n).reduce((r,o)=>r+o.principalCents,0)}function Gf(e,t){const n=e.terms,r=n.quantity??1,o=l=>Math.round(l*t.quantity/r),s=o(n.costCents),i=o(n.residualCents),a=o(-t.movementsCents),c=[],u=`${e.name} (${t.quantity}/${r})`;a&&c.push({accountId:n.accumulatedAccountId,amountCents:a,subAccountId:e.id,description:u}),t.proceedsCents&&c.push({accountId:t.clearingAccountId,amountCents:t.proceedsCents,description:u}),c.push({accountId:e.ledgerAccountId,amountCents:-s,description:u});const d=c.reduce((l,p)=>l+p.amountCents,0);return d&&c.push({accountId:t.disposalAccountId,amountCents:-d,description:u}),{lines:c,costCents:s,residualCents:i}}const ei={NL:45e3},Vf=(e,t)=>t??ei[(e??"NL").toUpperCase()],Wf=[{name:"Inventaris",cost:"0100",accumulated:"0110",depreciation:"4600",disposal:"4690",method:"linear",lifeMonths:60},{name:"Computers",cost:"0120",accumulated:"0130",depreciation:"4630",disposal:"4690",method:"linear",lifeMonths:36},{name:"Vervoermiddelen",cost:"0200",accumulated:"0210",depreciation:"4610",disposal:"4691",method:"linear",lifeMonths:60,residualPercent:"20"},{name:"Gebouwen",cost:"0050",accumulated:"0060",depreciation:"4620",disposal:"4692",method:"linear",lifeMonths:360},{name:"Grond",cost:"0040",disposal:"4693",method:"none"}];function ti(e,t){let n=0;for(const r of t){if(r.status!=="booked")continue;const o=r.movement==="return"?-1:1;for(const s of r.lines)s.poLineId===e&&(n+=o*s.quantity)}return n}function Hf(e){const t=e.filter(n=>n.kind==="product"&&n.quantity>0);return!t.length||t.every(n=>(n.receivedQty??0)<=0)?"none":t.every(n=>(n.receivedQty??0)>=n.quantity)?"full":"partial"}const ni=e=>e.kind==="product"&&e.quantity>0&&(!e.act||e.unitPriceCents>0);function Yf(e){return e.every(t=>!ni(t)||(t.billedQty??0)>=t.quantity)?"full":"open"}function ri(e,t,n,r=new Map){const o=[];for(const s of e.lines){const i=t.find(l=>l.id===s.poLineId),a=ti(s.poLineId,n);(!i||e.movement==="in"&&a+s.quantity>i.quantity)&&o.push({code:"receipt_over_ordered",poLineId:s.poLineId}),e.movement==="return"&&s.quantity>a&&o.push({code:"receipt_return_over_received",poLineId:s.poLineId});const c=Zn(i??{},s.quantity),u=e.movement==="in"&&i?.productId&&r.get(i.productId);s.serials.length&&s.serials.length!==c?o.push({code:"receipt_serials_count",poLineId:s.poLineId}):!s.serials.length&&u==="serial"&&o.push({code:"receipt_serials_required",poLineId:s.poLineId});const d=(s.batches??[]).reduce((l,p)=>l+p.quantity,0);s.batches?.length&&d!==c?o.push({code:"receipt_batches_count",poLineId:s.poLineId}):!s.batches?.length&&u==="batch"&&o.push({code:"receipt_batches_required",poLineId:s.poLineId})}return o}function zf(e,t){return e.flatMap(n=>{const r=t.find(o=>o.id===n.poLineId)?.productId;return r?n.serials.map(o=>[r,"#",o].join("")):[]})}function Xf(e,t){const n=new Map;for(const r of t){if(r.status!=="booked")continue;const o=r.movement==="return"?-1:1;for(const s of r.serialKeys??[])n.set(s,(n.get(s)??0)+o)}return e.filter(r=>(n.get(r)??0)>0)}function Qf(e){return e.map(t=>({line:t,batches:Zf(t.batches)})).map(({line:t,batches:n})=>({poLineId:String(t.poLineId),quantity:Number(t.quantity)||0,serials:[...new Set((t.serials??[]).map(r=>String(r).trim()).filter(Boolean))],...n.length?{batches:n}:{},...Number(t.backorderQty)>0?{backorderQty:Number(t.backorderQty)}:{}})).filter(t=>t.quantity>0)}function Zf(e){return(Array.isArray(e)?e:[]).flatMap(t=>{const n=String(t?.code??"").trim(),r=Number(t?.quantity)||0,o=Number(t?.expiresAt)||0;return n&&r>0?[{code:n,quantity:r,...o?{expiresAt:o}:{}}]:[]})}function Qn(e,t){return(e.validFrom==null||e.validFrom<=t)&&(e.validTo==null||e.validTo>=t)}function oi(e,t){const n=e.filter(r=>Qn(r,t));return n.find(r=>r.isDefault)??n[0]??null}function Zn(e,t){return t*(e.factor&&e.factor>0?e.factor:1)}function Jf(e,t,n){const r=Math.max(Math.ceil(e/Math.max(1,t??1)),n?.minQty??0),o=n?.lotSize&&n.lotSize>1?n.lotSize:1;return Math.ceil(r/o)*o}function si(e){return{cents:U(e.costCents/Zn(e,1)),currency:e.currency,...e.per?{per:e.per}:{}}}function ii(e){const t=si(e);return t.per?Et(t.cents,t.per,{from:Date.UTC(2026,0,1),to:Date.UTC(2027,0,1)}):t.cents}const pe=["pending","active","suspended","terminating"],le=(e,t)=>[e,t].join(":"),ai=e=>[...new Set((e??[]).map(t=>t.itemId))],ep=(e,t)=>t?[e.productId,"#",e.serial??""].join(""):e.id;function dt(e){return e.kind==="sale"?["sale:",e.agreementId,"#",e.seriesId].join(""):e.kind==="resource"?["resource:",e.itemId,"#",e.role].join(""):["order:",e.orderId,"#",e.lineId,e.serial?`#${e.serial}`:""].join("")}const Jn=["draft","scheduled","queued","waiting"],Mt=["pending","unknown","inquiring"],tp=({perOffer:e,...t})=>t,ci=(e,t,n)=>[e,t,n].join(":");function ui(e,t,n,r,o){const s=e.after.filter(c=>o.find(u=>u.id===c)?.state!=="approved");if(s.length)return{ok:!1,reason:"after",requestIds:s};const i=o.find(c=>c.id!==e.id&&c.itemId===e.itemId&&Mt.includes(c.state));if(i)return{ok:!1,reason:"busy",requestId:i.id};const a=[];for(const c of n.filter(u=>u.for.includes(e.action))){const u=(t.requires??[]).filter(d=>d.role===c.role);if(u.length<c.min)return{ok:!1,reason:"missing_role",role:c.role};if(u.length>c.max)return{ok:!1,reason:"too_many",role:c.role};for(const d of u){const l=r.get(d.itemId);if(!l||l.status!=="active")return{ok:!1,reason:"not_active",role:c.role,itemId:d.itemId};const p=l.provides?.find(g=>g.kind===c.kind);if(!p)return{ok:!1,reason:"wrong_kind",role:c.role,itemId:d.itemId};a.push({role:c.role,itemId:l.id,resource:p})}}return{ok:!0,inputs:a}}function np(e,t,n,r,o){if(!(r!=="activation"||!e.sale||e.activatedAt!=null))return t!=="active"&&n==="active"?o:void 0}function Ee(e,t){return[...t].filter(n=>n.id!==e&&pe.includes(n.status)&&(n.requires??[]).some(r=>r.itemId===e))}function rp(e,t){const n=[...t.values()],r=[],o=[];for(const s of e.requires??[]){const i=t.get(s.itemId);!i||!pe.includes(i.status)||(i.keep?o.push({itemId:i.id,why:"kept"}):Ee(i.id,n).some(a=>a.id!==e.id)?o.push({itemId:i.id,why:"in_use"}):r.push(i.id))}return{release:r,keep:o,impact:Ee(e.id,n).map(s=>s.id)}}function op(e,t,n){const r=Ee(e.id,t).map(o=>o.id);return r.length?{ok:!1,reason:"in_use",users:r}:n&&e.keep?{ok:!1,reason:"kept"}:{ok:!0}}function li(e,t,n){const r=[],o=e.externalKey&&[...n.values()].find(i=>i.id!==e.id&&i.externalKey===e.externalKey&&pe.includes(i.status));o&&e.externalKey&&r.push({code:"duplicate_key",externalKey:e.externalKey,itemId:o.id});for(const i of e.requires??[]){const a=n.get(i.itemId);if(!a){r.push({code:"unknown_item",itemId:i.itemId});continue}a.businessEntityId!==e.businessEntityId&&r.push({code:"wrong_entity",itemId:a.id});const c=t.find(u=>u.role===i.role);c&&!(a.provides??[]).some(u=>u.kind===c.kind)&&a.status!=="pending"&&r.push({code:"wrong_kind",role:i.role,itemId:a.id})}const s=sp(e,n);return s&&r.push({code:"cycle",path:s}),r}function sp(e,t){const n=(r,o)=>{for(const s of r.requires??[]){if(s.itemId===e.id)return[...o,s.itemId];if(o.includes(s.itemId))continue;const i=t.get(s.itemId),a=i&&n(i,[...o,s.itemId]);if(a)return a}};return n(e,[e.id])}function di(e,t){const n=new Set([e.id]),r=[],o=[...t.values()],s=i=>{for(const a of i.requires??[]){if(n.has(a.itemId))continue;n.add(a.itemId);const c=t.get(a.itemId);c&&(r.push({itemId:c.id,role:a.role,supplied:!!c.supply,shared:[...ip(c.id,o)].some(u=>u!==e.id)}),s(c))}};return s(e),r}function ip(e,t){const n=new Set,r=new Set([e]),o=s=>{for(const i of Ee(s,t))r.has(i.id)||(r.add(i.id),i.sale&&n.add(i.id),o(i.id))};return o(e),n}function fi(e,t,n){const r=e.reported?.refundable;if(!r)return{now:!0};const o=r.filter(s=>s.until>n).reduce((s,i)=>s+i.quantity,0);return e.quantity-t<=o?{now:!0}:{now:!1,...e.reported?.termEndsAt?{at:e.reported.termEndsAt}:{}}}const ap=(e,t)=>e.provides?.find(n=>n.kind===t),cp=["scheduled","queued","waiting"],Yr=[1,5,15,60],up=(e,t)=>t+Yr[Math.min(Math.max(e,1),Yr.length)-1]*6e4;function lp(e){if((e.request.submitAt??0)>e.now)return{state:"scheduled"};const t=ui(e.request,e.item,e.needs,e.items,e.requests);return t.ok?{state:"send",inputs:t.inputs}:{state:t.reason==="busy"?"queued":"waiting",why:t}}function dp(e){const{request:t,item:n}=e,r=(n.requires??[]).find(s=>s.role==="account"),o=r?e.items.get(r.itemId)?.at:void 0;return{requestId:t.requestId,offer:t.offer,action:t.action,quantity:t.quantity,...t.toProductId?{toProductId:t.toProductId}:{},...t.supplier?.vendorSku?{vendorSku:t.supplier.vendorSku}:{},...t.supplier?.termMonths?{termMonths:t.supplier.termMonths}:{},params:t.params,...e.inputs.length?{inputs:e.inputs}:{},...n.at?.externalRef?{externalRef:n.at.externalRef}:{},...o?{parent:{...o.externalRef?{externalRef:o.externalRef}:{},...o.fulfillment?{fulfillment:o.fulfillment}:{}}}:{},customer:{companyId:n.customerCompanyId},...t.effectiveAt?{effectiveAt:t.effectiveAt}:{},at:e.now}}function fp(e,t){const n=t?.recovery?.[e];return n==="idempotent"?"resend":n==="lookup_by_ref"?"status":n==="lookup_by_listing"?"listing":"person"}function pp(e,t,n,r){if(n.state!=="approved")return{};const o={...e.at??{},app:t.app,offer:t.offer,...n.externalRef?{externalRef:n.externalRef}:{},...n.fulfillment?{fulfillment:{...e.at?.fulfillment??{},...n.fulfillment}}:{}},s=n.quantity??t.quantity,i={at:o,...o.externalRef?{externalKey:le(o.app,o.externalRef)}:{},...n.resources?{provides:n.resources}:{},updatedAt:r};switch(t.action){case"purchase":return{...i,status:"active",quantity:s,...e.activatedAt==null?{activatedAt:r}:{}};case"change":return{...i,quantity:s};case"convert":return{...i,productId:t.toProductId??e.productId,quantity:s};case"suspend":return{...i,status:"suspended"};case"resume":return{...i,status:"active"};case"cancel":{const a=t.effectiveAt??r;return{...i,status:a>r?"terminating":"terminated",endedAt:a}}case"renew":return i}}function mp(e,t,n){const r=t.find(i=>i.requestRef===e.requestId);if(r)return{state:"found",subscription:r};const o=e.sent?.quantity??e.quantity,s=t.filter(i=>i.offer===e.offer&&i.status!=="ended"&&i.quantity===o&&!n.has(i.externalRef));return s.length===1?{state:"found",subscription:s[0]}:s.length?{state:"ambiguous",count:s.length,candidates:s}:{state:"none"}}function pi(e,t){return{quantity:e.quantity,status:e.status,...e.termEndsAt?{termEndsAt:e.termEndsAt}:{},...e.autoRenew!=null?{autoRenew:e.autoRenew}:{},...e.refundable?{refundable:e.refundable}:{},...e.scheduled?{scheduled:e.scheduled}:{},at:t}}const hn=e=>e.seriesId??e.id;function gp(e,t,n){return t.find(r=>{const o=W(e,r);return o.from<=n&&(o.to==null||o.to>n)})??t.filter(r=>W(e,r).from>n).sort((r,o)=>W(e,r).from-W(e,o).from)[0]??t[t.length-1]}function mi(e){const t=new Map;for(const n of e)t.set(hn(n),[...t.get(hn(n))??[],n]);return t}const hp=864e5;function yp(e,t,n,r){if(e.reported?.refundable||!n)return fi(e,t,r);const o=n.commitment;if(!o||o.termMonths<1)return{now:!0};const s=n.changeWindowDays??0;return s>0&&r<Kn(n.start,o,r)+s*hp?{now:!0}:{now:!1,at:re(n.start,o,r)}}function bp(e,t){const n=t.filter(r=>Mt.includes(r.state)).sort((r,o)=>o.updatedAt-r.updatedAt)[0];if(n)return{productId:n.toProductId??n.productId,quantity:n.action==="cancel"?0:n.quantity};if(!(!e||e.status==="pending"))return{productId:e.productId,quantity:pe.includes(e.status)?e.quantity:0}}const _p=new Set(["purchase","change","convert","cancel"]),Ip=(e,t)=>e.action===t.action&&e.productId===t.productId&&e.quantity===t.quantity&&(e.toProductId??"")===(t.toProductId??"")&&(e.effectiveAt??0)===(t.effectiveAt??0);function Ep(e){const{agreement:t,item:n,now:r,supply:o}=e,s=(mi(t.lines).get(e.seriesId)??[]).map(I=>({line:I,term:W(t,I)})).sort((I,v)=>I.term.from-v.term.from);if(!s.length)return{supersede:[]};const i=e.requests.filter(I=>I.itemId===n?.id&&I.state!=="superseded"),a=i.filter(I=>Jn.includes(I.state)&&_p.has(I.action)),c=bp(n,i),u=s.findIndex(I=>I.term.from<=r&&(I.term.to==null||I.term.to>r)),d=u>=0?s[u]:void 0,l=s.find(I=>I.term.from>r),p=s[s.length-1],g=t.status==="ended"||!l&&(d==null||p.term.to!=null&&p.term.to<=r),f=I=>I&&I.line.quantity.from==="fixed"?I:void 0;let m,_;const h=(I,v)=>{const T=v!=null&&v>r?v:void 0,O=I.line.quantity.from==="fixed"?I.line.quantity.value:0;if(!c)return{action:"purchase",productId:I.line.productId,quantity:O,...T?{effectiveAt:T}:{}};if(c.productId!==I.line.productId)return{action:"convert",productId:c.productId,toProductId:I.line.productId,quantity:O,previousQuantity:c.quantity,...T?{effectiveAt:T}:{}};if(c.quantity!==O){if(O<c.quantity&&n){const E=yp(n,O,o,r);if(!E.now&&E.at==null){_={reason:"decrease_window_unknown",quantity:O};return}const M=E.now?T:Math.max(E.at??0,T??0);return{action:"change",productId:c.productId,quantity:O,previousQuantity:c.quantity,...M?{effectiveAt:M,submitAt:M}:{},...E.now?{}:{notice:{atRenewal:!0}}}}return{action:"change",productId:c.productId,quantity:O,previousQuantity:c.quantity,...T?{effectiveAt:T,submitAt:T}:{}}}},y=I=>{if(!o)return I?{effectiveAt:I}:{};const v=I??r,T=Qo(o.start,o.commitment,v,r),O={...T.deadline!=null?{deadline:T.deadline}:{},...T.nextTerm?{nextTerm:!0}:{},...T.endsAt>v?{runsOnUntil:T.endsAt}:{}};return{effectiveAt:T.endsAt,...Object.keys(O).length?{notice:O}:{}}};if(g)c&&c.quantity>0&&(m={action:"cancel",productId:c.productId,quantity:0,...y(p.term.to)});else{const I=f(d);if(m=I?h(I,I.term.from):void 0,!m&&!_){const v=f(l);v&&(c||!I)?m=h(v,v.term.from):!v&&c&&c.quantity>0&&p.term.to!=null&&d===p&&(m={action:"cancel",productId:c.productId,quantity:0,...y(p.term.to)})}}if(_)return{supersede:[],blocked:_};if(!m)return{supersede:a.map(I=>I.id)};const b=a.find(I=>Ip(m,I));return{...b?{}:{target:m},supersede:a.filter(I=>I!==b).map(I=>I.id)}}function yn(e){const t=ci(e.item.id,e.target.action,e.revision);return{id:t,organizationId:e.item.organizationId,businessEntityId:e.item.businessEntityId,itemId:e.item.id,requestId:t,...e.target,app:e.at.app,offer:e.at.offer,params:{...e.answers?.params},...e.answers?.qualificationId?{qualificationId:e.answers.qualificationId}:{},after:e.after??[],basedOn:{source:e.item.id,revision:e.revision},state:"draft",requestedBy:e.requestedBy,attempts:0,updatedAt:e.now}}const bn=new Set(["phone_number","device"]),gi=e=>!!e&&((e.provides??[]).some(t=>bn.has(t.kind))||(e.needs??[]).some(t=>t.for.includes("purchase")&&bn.has(t.kind)));function hi(e){return e?e.needs?.length?e.needs:e.requires?[{role:"account",kind:"account",min:1,max:1,for:["purchase","change"]}]:[]:[]}function Sp(e){const{item:t,now:n}=e,r=[...e.items.values()],o=[...t.requires??[]],s=[],i=[],a=[],c=[],u=(d,l,p,g)=>yn({item:d,at:l,target:p,after:g,revision:e.revision,requestedBy:e.requestedBy,now:n});for(const d of e.needs.filter(l=>l.for.includes(e.target.action))){let l=o.filter(g=>g.role===d.role).length;const p=e.sourceFor(d);for(;l<d.min;){if(!p){a.push(d.role);break}const g=r.find(f=>f.customerCompanyId===t.customerCompanyId&&pe.includes(f.status)&&f.at?.app===p.app&&f.at?.offer===p.offer&&!o.some(m=>m.itemId===f.id)&&(!bn.has(d.kind)||Ee(f.id,r).length===0));if(g){if(o.push({role:d.role,itemId:g.id}),g.status==="pending"){const f=e.requests.find(_=>_.itemId===g.id&&_.action==="purchase"&&_.state!=="superseded"),m=f??u(g,{app:p.app,offer:p.offer},{action:"purchase",productId:g.productId,quantity:1},[]);f||i.push(m),c.push(m.id)}}else{const f=dt({kind:"resource",itemId:t.id,role:l?`${d.role}.${l}`:d.role}),m={id:f,organizationId:t.organizationId,businessEntityId:t.businessEntityId,customerCompanyId:t.customerCompanyId,productId:p.productId,status:"pending",quantity:1,at:{app:p.app,offer:p.offer},since:n,updatedAt:n};s.push(m),o.push({role:d.role,itemId:f});const _=u(m,p,{action:"purchase",productId:p.productId,quantity:1},[]);i.push(_),c.push(_.id)}l++}}return i.push(yn({item:t,at:{app:e.app,offer:e.offer},target:e.target,after:c,...e.answers?{answers:e.answers}:{},revision:e.revision,requestedBy:e.requestedBy,now:n})),{requires:o,newItems:s,requests:i,unsourced:a}}const Ap=e=>["adopt",e].join(":"),vp=e=>e.startsWith("adopt:"),zr=e=>["adopted:",e].join(""),Xr=e=>e.level==="account"?0:e.under||e.uses?.length?2:1;function Cp(e,t){const n=t.items.filter(f=>pe.includes(f.status)),r=new Map(n.flatMap(f=>f.externalKey?[[f.externalKey,f]]:[])),o=new Map(n.map(f=>[f.id,f])),s=new Map,i=new Set,a=new Set,c=new Set(e.flatMap(f=>(f.uses??[]).map(m=>[m.kind,m.value].join("|")))),u=t.offers.filter(f=>f.businessEntityId===t.businessEntityId),d=f=>{const m=u.filter(h=>h.provider?.app===f.app&&h.provider.offer===f.offer),_=u.filter(h=>!!h.vendorSku&&h.vendorSku===f.offer);return oi(m.length?m:_,t.now)},l=f=>{const m=d(f),_=m?.provider?.app??f.app,h=le(_,f.externalRef),y=r.get(h);if(y)return{key:h,row:f,state:"known",knownItemId:y.id,problems:[]};if(i.has(h)){const R=s.get(h),K={code:"duplicate_key",externalKey:h,itemId:R?.id??h};return{key:h,row:f,state:"blocked",problems:[K]}}if(i.add(h),f.status==="ended")return{key:h,row:f,state:"ended",problems:[]};const b=le(f.app,f.account.ref),I=t.customers.get(b)??[],v=f.customerCompanyId??t.chosen?.[b]??(I.length===1?I[0].id:void 0),T={...v?{companyId:v}:{},create:!v&&I.length===0,candidates:I};if(!m)return{key:h,row:f,state:"no_product",customer:T,problems:[]};const O=m.provider?t.described.get([m.provider.app,m.provider.offer].join(":")):void 0,E=hi(O),M=(O?.provides??[]).map(R=>({kind:R.kind,value:f.externalRef})),B=M.some(R=>c.has([R.kind,R.value].join("|"))),k=(v?t.agreements.get(v)??[]:[]).filter(R=>R.status!=="ended").flatMap(R=>R.lines.filter(K=>K.productId===m.productId).map(K=>({agreementId:R.id,seriesId:K.seriesId}))).filter((R,K,Z)=>Z.findIndex(me=>me.seriesId===R.seriesId)===K).find(R=>{const K=dt({kind:"sale",...R});return!a.has(K)&&!o.get(K)?.externalKey}),P=B?void 0:t.drafted?.get(h)??k??{draft:!0},F=P&&"agreementId"in P?dt({kind:"sale",...P}):zr(h),z=R=>r.get(R)??s.get(R),V=[];if(f.under){const R=z(le(_,f.under)),K=E.find(Z=>R?.provides?.some(me=>me.kind===Z.kind))?.role??E.find(Z=>Z.kind==="account"||Z.kind==="tenant")?.role??"account";V.push({role:K,itemId:R?.id??zr(le(_,f.under))})}for(const R of f.uses??[]){const K=[...n,...s.values()].find(Z=>Z.provides?.some(me=>me.kind===R.kind&&me.value===R.value));V.push({role:E.find(Z=>Z.kind===R.kind)?.role??R.kind,itemId:K?.id??["resource:",R.kind,":",R.value].join("")})}const te=f.reported?.status??f.status??"active",L={id:F,organizationId:t.organizationId,businessEntityId:t.businessEntityId,customerCompanyId:v??"",productId:m.productId,status:te==="suspended"?"suspended":"active",quantity:f.quantity,...V.length?{requires:V,requiresIds:ai(V)}:{},...M.length?{provides:M}:{},at:{app:_,...m.provider?{offer:m.provider.offer}:{},externalRef:f.externalRef,...f.fulfillment?{fulfillment:f.fulfillment}:{}},externalKey:h,...P&&"agreementId"in P?{sale:P}:{},activatedAt:f.since??t.now,reported:pi(f.reported??{externalRef:f.externalRef,offer:f.offer,quantity:f.quantity,status:te==="suspended"?"suspended":"active",...f.termEndsAt?{termEndsAt:f.termEndsAt}:{}},t.now),since:f.since??t.now,updatedAt:t.now},Y=new Map([...n,...s.values()].map(R=>[R.id,R]));Y.set(L.id,L);const oe=li(L,E,Y);gi(O)&&f.quantity>1&&oe.push({code:"one_unit_per_item",quantity:f.quantity});for(const R of E.filter(K=>K.min>0&&K.for.includes("purchase")))V.some(K=>K.role===R.role)||oe.push({code:"requires_missing",role:R.role});const Ke=oe.length?"blocked":!v&&I.length>1?"choose_customer":"ready";return Ke==="ready"&&(s.set(h,L),P&&"agreementId"in P&&a.add(L.id)),{key:h,row:f,state:Ke,customer:T,offerId:m.id,productId:m.productId,...P?{sale:P}:{},item:L,problems:oe}},p=new Array(e.length),g=e.map((f,m)=>({row:f,index:m}));g.sort((f,m)=>Xr(f.row)-Xr(m.row)||f.index-m.index);for(const{row:f,index:m}of g)p[m]=l(f);return p}function Tp(e){const t=e.filter(n=>n.state==="ready");return{items:t.length,draftLines:t.filter(n=>n.sale&&"draft"in n.sale).length,linked:t.filter(n=>n.sale&&"agreementId"in n.sale).length,contractLines:t.length,newCustomers:new Set(t.filter(n=>n.customer?.create).map(n=>le(n.row.app,n.row.account.ref))).size,known:e.filter(n=>n.state==="known").length,choose:e.filter(n=>n.state==="choose_customer").length,noProduct:e.filter(n=>n.state==="no_product").length,blocked:e.filter(n=>n.state==="blocked").length}}const kp=(e,t)=>({app:e,externalRef:t.externalRef,offer:t.offer,level:"account",quantity:1,account:{ref:t.externalRef,name:t.name,...t.kvkNumber?{kvkNumber:t.kvkNumber}:{},...t.domain?{domain:t.domain}:{}},...t.fulfillment?{fulfillment:t.fulfillment}:{},...t.since?{since:t.since}:{}}),Op=(e,t,n,r)=>({app:e,externalRef:n.externalRef,offer:n.offer,level:"item",quantity:n.quantity,account:t,...r?{customerCompanyId:r}:{},under:n.under??t.ref,...n.uses?.length?{uses:n.uses}:{},...n.termEndsAt?{termEndsAt:n.termEndsAt}:{},status:n.status,reported:n}),er=["customer","product","quantity","externalRef","since","termEndsAt","kvkNumber","domain","under"],Mp={customer:["klant","customer","bedrijf","company","relatie","account"],product:["product","artikel","artikelnummer","sku","licentie","license","offer"],quantity:["aantal","quantity","qty","seats","stuks"],externalRef:["externe referentie","referentie","reference","external ref","id","serial"],since:["ingangsdatum","start","startdatum","since","start date"],termEndsAt:["termijneinde","einddatum","end","term end","renewal","verlenging"],kvkNumber:["kvk","kvk-nummer","coc"],domain:["domein","domain"],under:["onder","under","parent","hoofdaccount"]};function Rp(e){const t=e.map(s=>s.trim()),n=new Set,r={},o=s=>{for(const i of er){if(r[i])continue;const a=t.find(c=>!n.has(c)&&Mp[i].some(u=>s(c.toLowerCase(),u)));a&&(r[i]=a,n.add(a))}};return o((s,i)=>s===i),o((s,i)=>s.startsWith(i)),r}function _n(e){const t=e.trim(),n=/^(\d{4})-(\d{1,2})-(\d{1,2})/.exec(t),r=/^(\d{1,2})[-/.](\d{1,2})[-/.](\d{4})$/.exec(t),[o,s,i]=n?[n[1],n[2],n[3]]:r?[r[3],r[2],r[1]]:[];if(!o)return;const a=Date.UTC(Number(o),Number(s)-1,Number(i));return Number.isFinite(a)&&new Date(a).getUTCDate()===Number(i)?a:void 0}function Np(e,t,n){const r=(e[0]??[]).map(a=>a.trim().toLowerCase()),o={};for(const a of er){const c=t[a]?.trim().toLowerCase(),u=c?r.indexOf(c):-1;u>=0&&(o[a]=u)}const s=[],i=[];return o.customer===void 0||o.product===void 0||o.externalRef===void 0?{rows:s,errors:[{line:1,message:"adopt_columns_missing"}]}:(e.slice(1).forEach((a,c)=>{const u=c+2,d=b=>{const I=o[b];return I===void 0?"":(a[I]??"").trim()},l=d("customer"),p=d("product"),g=d("externalRef");if(!l||!p||!g){i.push({line:u,message:"adopt_row_incomplete"});return}const f=d("quantity")?Number(d("quantity").replace(",",".")):1;if(!Number.isInteger(f)||f<1){i.push({line:u,message:"adopt_row_quantity"});return}const m=d("since")?_n(d("since")):void 0,_=d("termEndsAt")?_n(d("termEndsAt")):void 0;if(d("since")&&m===void 0||d("termEndsAt")&&_===void 0){i.push({line:u,message:"adopt_row_date"});return}const h=d("kvkNumber"),y=d("domain").toLowerCase();s.push({app:n,externalRef:g,offer:p,level:"item",quantity:f,account:{ref:(h||y||l).toLowerCase(),name:l,...h?{kvkNumber:h}:{},...y?{domain:y}:{}},...d("under")?{under:d("under")}:{},...m!==void 0?{since:m}:{},..._!==void 0?{termEndsAt:_}:{}})}),{rows:s,errors:i})}const Dp=["active","suspended","terminating"];function xp(e){const t=new Map(e.items.map(n=>[n.id,n]));return e.items.filter(n=>n.sale&&n.status!=="terminated").map(n=>{const r=Dp.includes(n.status)?n.quantity:0,o=e.agreed.get(n.id)??null,s=n.reported?.quantity,i=e.bought.get(n.id),a=e.billed.get(n.id),c=e.requests.some(d=>d.itemId===n.id&&(Mt.includes(d.state)||Jn.includes(d.state))),u=[];return s!=null&&s!==r&&u.push({kind:"supplier_differs",reported:s,active:r}),o!=null&&o!==r&&u.push({kind:"agreed_differs",agreed:o,active:r,busy:c}),i!=null&&i!==r&&u.push({kind:"not_bought",bought:i,active:r}),a!=null&&o!=null&&a!==o&&u.push({kind:"not_billed",billed:a,agreed:o}),{itemId:n.id,productId:n.productId,customerCompanyId:n.customerCompanyId,status:n.status,...n.serial?{serial:n.serial}:{},agreed:o,active:r,...s!=null?{reported:s}:{},...i!=null?{bought:i}:{},...a!=null?{billed:a}:{},signals:u,resources:di(n,t).map(d=>({...d,productId:t.get(d.itemId)?.productId??""}))}})}const yi=[{key:"purchase_order",label:"kind_purchase_order",name:"Inkooporder",numbered:!0,signFlip:!1,statuses:["draft","sent","confirmed","received","cancelled","superseded"],path:"purchase-orders",issuedStatus:"sent",transitions:{draft:["cancelled"],sent:["confirmed","received","cancelled"],confirmed:["received","sent","cancelled"],received:["confirmed"]},convertsTo:[]}],wp="purchase_order",Rt=[{key:"quote",label:"kind_quote",numbered:!1,signFlip:!1,name:"Offerte",statuses:["draft","sent","accepted","rejected","expired","cancelled","superseded"],path:"quotes",issuedStatus:"sent",transitions:{draft:["cancelled"],sent:["accepted","rejected","expired","cancelled"],accepted:["sent"],rejected:["sent"],expired:["sent"]},convertsTo:["order","invoice"]},{key:"order",label:"kind_order",numbered:!1,signFlip:!1,name:"Order",paperName:"Orderbevestiging",statuses:["draft","confirmed","cancelled","superseded"],path:"orders",issuedStatus:"confirmed",transitions:{draft:["cancelled"],confirmed:["cancelled"]},convertsTo:["invoice"]},{key:"invoice",label:"kind_invoice",numbered:!0,signFlip:!1,name:"Factuur",statuses:["draft","open","cancelled","superseded"],path:"invoices",issuedStatus:"open",transitions:{draft:["cancelled"]},convertsTo:["credit_note"]},{key:"credit_note",label:"kind_credit_note",numbered:!0,signFlip:!0,name:"Creditnota",statuses:["draft","open","cancelled","superseded"],path:"invoices",issuedStatus:"open",transitions:{draft:["cancelled"]},convertsTo:[],credits:"invoice"}],bi=[...Rt,...yi],tr=["quote","order","invoice","credit_note"];function Pp(){const e=new Map;for(const t of Rt)tr.includes(t.key)&&(e.has(t.path)||e.set(t.path,t));return[...e.values()]}function G(e){return bi.find(t=>t.key===e)??{key:e,label:e,name:e,numbered:!1,signFlip:!1,statuses:["draft"],path:"quotes",issuedStatus:"draft",transitions:{},convertsTo:[]}}const Lp={draft:"Concept",sent:"Verstuurd",accepted:"Geaccepteerd",rejected:"Afgewezen",expired:"Verlopen",confirmed:"Bevestigd",received:"Ontvangen",open:"Openstaand",cancelled:"Geannuleerd",superseded:"Vervangen"};function _i(e,t){return G(e).transitions[t]??[]}function Kp(e,t,n){return _i(e,t).includes(n)}function nr(e){return e.issuedAt!=null}const $p=["status","fileRef","number","externalIds","postedAt","dunning","settlement","settled","overdueSince","issuedPaper","updatedAt"];function Up(e){return nr(e)&&G(e.kindKey).numbered&&!e.number}const Bp=["companyId","contactId","dealItemId","title","reference","currency","taxOverrideKey","introText","termsText","expiresAt","deliveredAt","periodFrom","periodTo","paymentTerm","billingAddressId","deliveryAddressId","invoiceTo","lines"],Fp=["contactId","dealItemId","title","reference","taxOverrideKey","introText","termsText","expiresAt","deliveredAt","periodFrom","periodTo","billingAddressId","deliveryAddressId","invoiceTo"];function jp(e,t){if(!tr.includes(t)||!G(e.kindKey).convertsTo.includes(t))return!1;const n=G(t);return!n.credits||n.credits===e.kindKey&&nr(e)}function rr(e,t){const n=G(t).signFlip!==G(e.kindKey).signFlip,r=e.kindKey!==t,o=e.lines.map(({timeEntryIds:s,agreementLineId:i,sourceLine:a,...c})=>({...c,...r&&c.kind==="product"?{sourceLine:{transactionId:e.id,lineId:c.id}}:{},quantity:n?-c.quantity:c.quantity,netCents:0,taxCents:0}));return{kindKey:t,sourceTransactionId:e.id,agreementId:e.agreementId,version:1,businessEntityId:e.businessEntityId,companyId:e.companyId,contactId:e.contactId,...e.invoiceTo?.companyId?{invoiceTo:e.invoiceTo}:{},billingAddressId:e.billingAddressId,deliveryAddressId:e.deliveryAddressId,dealItemId:e.dealItemId,ownerScope:e.ownerScope,ownerUserId:e.ownerUserId,title:e.title,reference:e.reference,currency:e.currency,status:"draft",lines:o,totals:{netCents:0,taxCents:0,grossCents:0,byRate:[]},taxOverrideKey:e.taxOverrideKey,introText:e.introText,termsText:e.termsText,paymentTerm:e.paymentTerm,deliveredAt:e.deliveredAt,periodFrom:e.periodFrom,periodTo:e.periodTo,source:e.source}}function qp(e){return{...rr(e,e.kindKey),sourceTransactionId:e.sourceTransactionId,previousVersionId:e.id,version:e.version+1,lines:e.lines.map(({timeEntryIds:n,...r})=>({...r})),totals:e.totals}}function Gp(e,t,n){const r=new Map;let o=Math.max(0,t);for(const s of[...e].filter(i=>i.state==="active").sort((i,a)=>i.createdAt-a.createdAt)){const i=Math.min(s.quantity,o);o-=i,r.set(s.id,{received:i,available:Math.max(0,i-(n.get(s.id)??0))})}return r}function Vp(e,t,n,r){const o=t.filter(u=>u.fulfilmentOrderId===e.id&&u.state==="active"),s=u=>u.reduce((d,l)=>d+l.quantity,0),i=n.filter(u=>u.fulfilmentOrderId===e.id&&u.direction!=="return"),a=n.filter(u=>u.fulfilmentOrderId===e.id&&u.direction==="return"),c=o.reduce((u,d)=>u+(r.get(d.id)?.received??0),0);return{ordered:e.quantity,allocated:s(o),onOrder:s(o)-c,available:o.reduce((u,d)=>u+(r.get(d.id)?.available??0),0),delivered:s(i),returned:s(a)}}const Qr=e=>[e.deliverTo.kind,e.deliverTo.companyId??"",e.deliverTo.addressId??""].join("|"),Wp=(e,t)=>!!e.offerId&&e.offerId===t.offerId&&e.businessEntityId===t.businessEntityId&&Qr(e)===Qr(t);function Ii(e,t,n){const r=new Map;for(const s of n)for(const i of s.lines)i.sourceLine?.transactionId===e.id&&r.set([s.id,i.id].join("#"),i.sourceLine.lineId);const o=new Map(e.lines.filter(s=>s.kind==="product").map(s=>[s.id,{lineId:s.id,ordered:s.quantity,delivered:t.get(s.id)??0,invoiced:0,reserved:0}]));for(const s of n)if(s.status!=="cancelled")for(const i of s.lines){const a=i.sourceLine;if(!a)continue;const c=a.transactionId===e.id?a.lineId:r.get([a.transactionId,a.lineId].join("#")),u=c?o.get(c):void 0;u&&(s.issuedAt?u.invoiced+=i.quantity:s.kindKey!=="credit_note"&&i.quantity>0&&(u.reserved+=i.quantity))}return[...o.values()]}const Ei=(e,t)=>Math.max(0,(t==="delivered"?e.delivered:e.ordered)-e.invoiced-e.reserved);function Hp(e,t){const n=e.map(r=>t==="delivered"?r.delivered:r.invoiced);return!e.length||n.every(r=>r<=0)?"none":e.every((r,o)=>n[o]>=r.ordered)?"full":"partial"}function Yp(e){const t=e.orders.flatMap(r=>{const o=Ii(r,e.delivered.get(r.id)??new Map,e.documents),s=new Map(o.map(u=>[u.lineId,Ei(u,e.mode)])),i=rr(r,"invoice"),a=i.lines.flatMap(u=>{const d=u.sourceLine?s.get(u.sourceLine.lineId)??0:0;return u.kind==="product"&&d>0?[{...u,quantity:d}]:[]});if(!a.length)return[];const c=e.mode==="delivered"?e.deliveredAt?.get(r.id):r.deliveredAt;return[{order:r,draft:{...i,lines:a,...c?{deliveredAt:c}:{}}}]});if(e.groupBy==="order")return t.map(r=>r.draft);const n=new Map;for(const r of t){const o=r.order,s=[o.companyId,Tt(o),o.invoiceTo?.contactId??"",o.billingAddressId??"",o.paymentTerm?.code??"",o.taxOverrideKey??"",o.businessEntityId,o.currency].join("|");n.set(s,[...n.get(s)??[],r])}return[...n.values()].map(r=>{if(r.length===1)return r[0].draft;const[o]=r,s=r.flatMap(c=>c.draft.deliveredAt?[c.draft.deliveredAt]:[]),{sourceTransactionId:i,...a}=o.draft;return{...a,lines:r.flatMap(c=>c.draft.lines).map((c,u)=>({...c,id:["l",String(u+1)].join("")})),...s.length?{deliveredAt:Math.max(...s)}:{}}})}const Si=e=>btoa(unescape(encodeURIComponent(e))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""),zp=e=>{const t=e.replace(/-/g,"+").replace(/_/g,"/");return decodeURIComponent(escape(atob(t+"===".slice((t.length+3)%4))))},Xp=e=>["/request/",Si(e)].join(""),Ai=36e5,vi=864e5,ie=-1/0,Qp=e=>e.score>ie,Re={urgent:40,high:25,normal:10,low:0};function Zp(e){return Object.fromEntries(e.map(t=>[t.resourceId,t]))}const Jp=/(^|[._+-])(no-?reply|noreply|donotreply|do-not-reply|newsletter|nieuwsbrief|mailer|mailing|notifications?|bounce|postmaster|marketing)@/i,Ci=/\b(unsubscribe|afmelden|uitschrijven|opt[\s-]?out|manage (your )?preferences|geen (e-?mails?|nieuwsbrief|berichten) meer)\b/i;function Ti(e,t){return!!(e&&Jp.test(e)||t&&Ci.test(t))}const ki=3,Oi=600;function em(e,t){return e>=ki||t>=Oi}const Mi=["list-unsubscribe","list-unsubscribe-post","list-id","precedence","auto-submitted","x-auto-response-suppress","feedback-id","x-mailer"];function tm(e){const t={};for(const n of e){const r=n.name?.toLowerCase();r&&n.value!==void 0&&Mi.includes(r)&&(t[r]=n.value)}return t}const nm=/(^|[._+-])(no-?reply|noreply|donotreply|do-not-reply|notifications?|bounce|postmaster|mailer)@/i,rm=/(^|[._+-])(newsletter|nieuwsbrief|marketing|mailing)@/i;function om(e){const t=e.headers??{},n=e.from?.email,r=t["auto-submitted"]?.toLowerCase();if(r&&r!=="no"||t["x-auto-response-suppress"]||n&&nm.test(n))return"automated";const o=t.precedence?.toLowerCase();if(t["list-unsubscribe"]||t["list-unsubscribe-post"]||t["list-id"]||o==="bulk"||o==="list"||e.body&&Ci.test(e.body)||n&&rm.test(n))return"marketing"}function Ri(e,t){return e.lastActivityAt?!(e.seenBy??[]).includes(t):!1}const Ni=["open"],Di=1e3,xi=72;function wi(e){return e.lastActivityAt??(e.createdAt?new Date(Bo(e)).getTime():0)}function Pi(e,t){return Li(t.remindersById?.[e.id],e,t.now)}function Li(e,t,n){return!e||e.remindAt<=n?!1:!((t.lastActivityAt??0)>e.parkedAt&&t.lastActivityPreview?.direction==="inbound")}const Ki=e=>Lo(e)==="outbound_message",$i=e=>Ni.includes(e);function Nt(e,t){return Math.max(0,(t-wi(e))/Ai)}function Ui(e,t){const n=e.assignedInboxId?t?.[e.assignedInboxId]:void 0;return typeof n=="number"&&n>0?n:void 0}function sm(e){const t={};for(const n of e)typeof n.slaHours=="number"&&n.slaHours>0&&(t[n.id]=n.slaHours);return t}function im(e,t,n){if(!$i(e.status)||e.firstResponseAt)return!1;const r=Ui(e,n);return r!==void 0&&Nt(e,t)>r}function Bi(e,t){const n=e.lastActivityPreview;return n?.direction!=="outbound"||!Ki(n.type)?!1:Nt(e,t)<xi}function am(e,t){if(!$i(e.status))return{score:ie,reasons:[]};if(e.snoozedTill&&e.snoozedTill>t.now)return{score:ie,reasons:[]};if(Bi(e,t.now))return{score:ie,reasons:[]};if(Pi(e,t))return{score:ie,reasons:[]};let n=0;const r=[],o=e.priority??"normal";Re[o]>0&&(n+=Re[o],r.push(`priority:${o}`)),Ri(e,t.userId)&&(n+=20,r.push("unseen")),e.assignedUserId&&e.assignedUserId===t.userId&&(n+=15,r.push("assigned-to-you"));const s=Nt(e,t.now);if(s>0){const c=Math.min(s*2,30);n+=c,s>=1&&r.push(`waiting:${Math.round(s)}h`)}const i=e.lastActivityPreview;return i?.type==="AI_ACTION_PROPOSED"&&(n+=30,r.push("awaiting-approval")),i?.direction==="outbound"&&Ki(i.type)&&(n+=10,r.push("no-reply")),!e.firstResponseAt&&e.lastActivityPreview?.direction==="inbound"&&(n+=10,r.push("awaiting-reply")),(e.tags?.some(c=>c==="marketing"||c==="automated")||Ti(e.remoteParty?.resource,e.lastActivityPreview?.snippet))&&(n-=Di,r.push("bulk")),{score:n,reasons:r}}const cm=e=>!!e.assignedUserId||!!e.assignedInboxId,um=e=>e.status==="closed",lm=e=>({urgent:10,high:5,normal:2,low:1})[e.priority]||0,dm=(e,t=30)=>e.title?.length<=t?e.title:`${e.title.substring(0,t)}...`,Fi=[{key:"solved",label:"resolution_solved",order:0,positive:!0,system:!0},{key:"no_action",label:"resolution_no_action",order:1,system:!0},{key:"duplicate",label:"resolution_duplicate",order:2,system:!0},{key:"spam",label:"resolution_spam",order:3,system:!0},{key:"unresolved",label:"resolution_unresolved",order:4,positive:!1,system:!0}],fm=["duplicate","spam"],pm="c_";function mm(e){const t=[...e?.resolutions??[]].filter(n=>!n.system).sort((n,r)=>n.order-r.order);return[...Fi,...t]}function gm(e,t){const n=e.labels??[];return n.find(r=>r.locale===t)?.label??n[0]?.label??e.url}function hm(e,t,n){const r=e.translations??[];return r.find(o=>o.locale===t)??(n?r.find(o=>o.locale===n):void 0)??{locale:t}}const ym="article",ft=[{code:"nl",label:"Nederlands",english:"Dutch"},{code:"en",label:"English",english:"English"},{code:"de",label:"Deutsch",english:"German"},{code:"fr",label:"Français",english:"French"},{code:"es",label:"Español",english:"Spanish"},{code:"it",label:"Italiano",english:"Italian"},{code:"pt",label:"Português",english:"Portuguese"},{code:"pl",label:"Polski",english:"Polish"},{code:"sv",label:"Svenska",english:"Swedish"},{code:"da",label:"Dansk",english:"Danish"},{code:"nb",label:"Norsk bokmål",english:"Norwegian Bokmål"},{code:"fi",label:"Suomi",english:"Finnish"},{code:"tr",label:"Türkçe",english:"Turkish"}];function ji(e){const t=(e??"").toLowerCase();return ft.find(n=>n.code===t)??ft.find(n=>n.code===t.split("-")[0])}function bm(e){return ji(e)?.label??e}function _m(e){const t=ji(e);return t?t.english===t.label?`${t.english} (${t.code})`:`${t.english} — ${t.label} (${t.code})`:e}const or=3;function qi(e,t){const n=new Set;let r=1,o=t.get(e)?.parentId;for(;o;){if(n.has(o)||(n.add(o),r++,r>or+1))return 1/0;o=t.get(o)?.parentId}return r}function Im(e,t,n){if(!e)return!0;if(e===t)return!1;const r=new Map(n.map(i=>[i.id,i]));if(!r.has(e)||t&&Gi(e,t,r))return!1;const o=qi(e,r),s=t?sr(t,n):1;return o+s<=or}function Gi(e,t,n){const r=new Set;let o=n.get(e)?.parentId;for(;o;){if(o===t)return!0;if(r.has(o))return!1;r.add(o),o=n.get(o)?.parentId}return!1}function sr(e,t,n=new Set){if(n.has(e))return 1;n.add(e);const r=t.filter(o=>o.parentId===e);return r.length?1+Math.max(...r.map(o=>sr(o.id,t,n))):1}const Vi="en";function Wi(e){return e.defaultLocale||e.locale||Vi}function Em(e){const t=new Set,n=[];for(const r of[Wi(e),...e.locales??[]])!r||t.has(r)||(t.add(r),n.push(r));return n}function Sm(e,t,n){const r=e.translations??[];return r.find(o=>o.locale===t)?.name??(n?r.find(o=>o.locale===n)?.name:void 0)??e.name}function Am(e,t){const n=a=>`${a.level}:${a.key}`,r=new Map((t?.rows??[]).map(a=>[n(a),a])),o=e.rows.map(a=>({...a,priorCents:r.get(n(a))?.amountCents??0})),s=new Set(o.map(n)),i=t?.rows??[];return i.forEach((a,c)=>{if(s.has(n(a)))return;const u=i.slice(0,c).reverse().find(p=>p.level<a.level);let d=o.length;const l=u?o.findIndex(p=>n(p)===n(u)):-1;if(l>=0)for(d=l+1;d<o.length&&(o[d]?.level??0)>(u?.level??0);)d+=1;o.splice(d,0,{...a,amountCents:0,priorCents:a.amountCents}),s.add(n(a))}),o}function vm(e,t,n){const r=new Map;for(const o of e){if(o.date>n)continue;const s=r.get(o.accountId)??{accountId:o.accountId,openingCents:0,debitCents:0,creditCents:0,closingCents:0};o.date<t?s.openingCents+=o.functionalCents:o.functionalCents>0?s.debitCents+=o.functionalCents:s.creditCents-=o.functionalCents,s.closingCents=s.openingCents+s.debitCents-s.creditCents,r.set(o.accountId,s)}return r}const Cm=["revenue","expense"],we=e=>Cm.includes(e.type),Tm=e=>(e.reportGroup??e.type).split(".")[0]??e.type;function Hi(e,t,n,r){const o=new Map;for(const i of[...e].sort((a,c)=>a.code.localeCompare(c.code))){if(!t(i))continue;const a=Tm(i),c=i.reportGroup??a,u=o.get(a)??new Map;u.set(c,[...u.get(c)??[],i]),o.set(a,u)}const s=[];for(const[i,a]of o){const c=n(i),u=l=>c==="debit"?t(l):-t(l),d=[...a.values()].flat().reduce((l,p)=>l+u(p),0);s.push({key:i,label:r(i),level:0,side:c,amountCents:d});for(const[l,p]of a){s.push({key:l,label:r(l),level:1,side:c,amountCents:p.reduce((g,f)=>g+u(f),0)});for(const g of p)s.push({key:g.code,label:`${g.code} ${g.name}`,level:2,side:c,amountCents:u(g),accountId:g.id})}}return s}function km(e,t,n,r=o=>o){const o=e.filter(we),s=c=>{const u=t.get(c.id);return u?u.debitCents-u.creditCents:0},i=Hi(o,s,c=>c==="revenue"||c==="financial"?"credit":"debit",r),a=-o.reduce((c,u)=>c+s(u),0);return{kind:"profit_and_loss",...n,rows:i,totals:{resultCents:a},source:"finance"}}function Om(e,t,n,r,o=s=>s){const s=e.filter(d=>!we(d)),a=Hi(s,d=>t.get(d.id)?.closingCents??0,d=>d==="assets"?"debit":"credit",o);if(r){a.push({key:"equity.result_unappropriated",label:o("equity.result_unappropriated"),level:1,side:"credit",amountCents:r});const d=a.find(l=>l.level===0&&l.key==="equity");d?d.amountCents+=r:a.push({key:"equity",label:o("equity"),level:0,side:"credit",amountCents:r})}const c=a.filter(d=>d.level===0&&d.side==="debit").reduce((d,l)=>d+l.amountCents,0),u=a.filter(d=>d.level===0&&d.side==="credit").reduce((d,l)=>d+l.amountCents,0);return{kind:"balance",from:n.from,to:n.to,rows:a,totals:{debitCents:c,creditCents:u},source:"finance"}}function Mm(e,t){return[...e].sort((n,r)=>n.code.localeCompare(r.code)).flatMap(n=>{const r=t.get(n.id);if(!r||!r.openingCents&&!r.debitCents&&!r.creditCents)return[];const o=we(n),s=o?r.debitCents-r.creditCents:r.closingCents;return[{...r,code:n.code,name:n.name,balanceDebitCents:!o&&s>0?s:0,balanceCreditCents:!o&&s<0?-s:0,resultDebitCents:o&&s>0?s:0,resultCreditCents:o&&s<0?-s:0}]})}function Rm(e,t,n,r=13){const o=Date.parse(`${n}T00:00:00Z`),s=Array.from({length:r},(a,c)=>({from:new Date(o+c*7*864e5).toISOString().slice(0,10),inCents:0,outCents:0,closingCents:0}));for(const a of t){const c=Math.max(0,Math.floor((Date.parse(`${a.date}T00:00:00Z`)-o)/6048e5)),u=s[c];u&&(a.cents>=0?u.inCents+=a.cents:u.outCents-=a.cents)}let i=e;for(const a of s)i+=a.inCents-a.outCents,a.closingCents=i;return s}function Nm(e){const t=new Map(e.accounts.map(s=>[s.id,s])),n=new Map;for(const s of e.lines){const i=t.get(s.accountId);!i||!we(i)||n.set(s.accountId,(n.get(s.accountId)??0)+s.functionalCents)}const r=[];let o=0;for(const[s,i]of[...n.entries()].sort(([a],[c])=>a.localeCompare(c)))i&&(r.push({accountId:s,amountCents:-i,functionalCents:-i,currency:e.currency}),o+=i);return r.length&&r.push({accountId:e.resultAccountId,amountCents:o,functionalCents:o,currency:e.currency,description:"Resultaat boekjaar"}),{lines:r,resultCents:-o}}const A=(e,t,n,r,o,s)=>({code:e,name:t,type:n,reportGroup:r,rgs:o,...s?{role:s}:{}}),Yi={key:"nl-bv",label:"BV (Nederland)",rgsVersion:"3.5",accounts:[A("0040","Terreinen","asset","assets.fixed.tangible","BMvaTerVvp"),A("0050","Bedrijfsgebouwen","asset","assets.fixed.tangible","BMvaBegVvp"),A("0060","Afschrijving bedrijfsgebouwen","asset","assets.fixed.tangible","BMvaBegCae"),A("0100","Inventaris","asset","assets.fixed.tangible","BMvaBeiVvp"),A("0110","Afschrijving inventaris","asset","assets.fixed.tangible","BMvaBeiCae"),A("0120","Computers","asset","assets.fixed.tangible","BMvaBeiVvp"),A("0130","Afschrijving computers","asset","assets.fixed.tangible","BMvaBeiCae"),A("0200","Vervoermiddelen","asset","assets.fixed.tangible","BMvaTevVvp"),A("0210","Afschrijving vervoermiddelen","asset","assets.fixed.tangible","BMvaTevCae"),A("0500","Deelnemingen in groepsmaatschappijen","asset","assets.fixed.financial","BFvaDigNev"),A("0600","Leningen bank","liability","liabilities.long","BLasSakLvl"),A("0550","Leningen u/g","asset","assets.fixed.financial","BFvaLenLen"),A("0560","Waarborgsommen","asset","assets.fixed.financial","BFvaOvrWaa"),A("0800","Geplaatst kapitaal","equity","equity.capital","BEivGokGea"),A("0810","Agio","equity","equity.share_premium","BEivAgiAgi"),A("0900","Overige reserves","equity","equity.reserves","BEivOvrOrs"),A("0990","Resultaat boekjaar","equity","equity.result","BEivOreRvh","result"),A("1000","Kas","asset","assets.current.cash","BLimKasKas"),A("1100","Bank","asset","assets.current.cash","BLimBanRba"),A("1290","Tussenrekening desinvesteringen","asset","assets.current.other","BVorTusTov"),A("1300","Debiteuren","asset","assets.current.receivables","BVorDebHad","debtors"),A("1400","Vooruitbetaalde kosten","asset","assets.current.other","BVorOvaVof"),A("1410","Nog te factureren omzet","asset","assets.current.other","BVorOvaNtf"),A("1500","Te betalen btw","liability","liabilities.short.tax","BSchBepBtw","vat_payable"),A("1510","Te vorderen btw","asset","assets.current.tax","BVorVbkTvo","vat_receivable"),A("1520","Btw-afdracht","liability","liabilities.short.tax","BSchBepBaf","vat_settlement"),A("1610","Aflossingsverplichtingen leningen","liability","liabilities.short.other","BSchAosLvk"),A("1600","Crediteuren","liability","liabilities.short.payables","BSchCreHac","creditors"),A("1700","Rekening-courant bestuurder","liability","liabilities.short.related","BSchOvsRcb"),A("1710","Rekening-courant groepsmaatschappijen","liability","liabilities.short.related","BSchSagSg1"),A("1720","Rekening-courant deelnemingen","liability","liabilities.short.related","BSchSapSp1"),A("1730","Rekening-courant verbonden maatschappijen","liability","liabilities.short.related","BSchSaoSo1"),A("1800","Nog te betalen kosten","liability","liabilities.short.other","BSchOpaNtb"),A("1810","Vooruitgefactureerde omzet","liability","liabilities.short.other","BSchOpaVgo"),A("1900","Te betalen loonheffing","liability","liabilities.short.tax","BSchBepLhe"),A("1910","Te betalen nettolonen","liability","liabilities.short.other","BSchSalNet"),A("1920","Tussenrekening salarissen","liability","liabilities.short.other","BSchTusTsa"),A("2000","Tussenrekening betalingen","asset","assets.current.other","BVorTusTbt","suspense"),A("4000","Lonen","expense","costs.personnel","WPerLesLon"),A("4010","Sociale lasten","expense","costs.personnel","WPerSolPsv"),A("4020","Pensioenlasten","expense","costs.personnel","WPerPenPen"),A("4100","Huur","expense","costs.housing","WBedHuiBeh"),A("4110","Gas, water en elektra","expense","costs.housing","WBedHuiGwe"),A("4200","Autokosten","expense","costs.car","WBedAutOak"),A("4300","Kantoorbenodigdheden","expense","costs.office","WBedKanKan"),A("4310","Automatisering en software","expense","costs.office","WBedKanKoa"),A("4400","Reclame- en advertentiekosten","expense","costs.sales","WBedVkkRea"),A("4500","Accountants- en advieskosten","expense","costs.general","WBedAeaAea"),A("4590","Algemene kosten","expense","costs.general","WBedAlkOal","expense_default"),A("4595","Afrondingsverschillen btw","expense","costs.general","WBedAlkOal","vat_rounding"),A("4600","Afschrijving inventaris","expense","costs.depreciation","WAfsAmvBei"),A("4610","Afschrijving vervoermiddelen","expense","costs.depreciation","WAfsAmvTev"),A("4620","Afschrijving bedrijfsgebouwen","expense","costs.depreciation","WAfsAmvBeg"),A("4630","Afschrijving computers","expense","costs.depreciation","WAfsAmvBei"),A("4690","Boekresultaat inventaris","expense","costs.depreciation","WAfsRvmBei"),A("4691","Boekresultaat vervoermiddelen","expense","costs.depreciation","WAfsRvmTev"),A("4692","Boekresultaat bedrijfsgebouwen","expense","costs.depreciation","WAfsRvmBeg"),A("4693","Boekresultaat terreinen","expense","costs.depreciation","WAfsRvmBrt"),A("4900","Rente en kosten bank","expense","financial.expense","WFbeOrlRkb"),A("4930","Valutakoersverschillen","expense","financial.expense","WFbeWisWis","fx_difference"),A("4910","Rentelasten leningen kredietinstellingen","expense","financial.expense","WFbeRlsRlk"),A("4920","Rentelasten schulden aan bestuurders","expense","financial.expense","WFbeRlsRsd"),A("7000","Inkoopwaarde handelsgoederen","expense","costs.cost_of_sales","WKprInhInh"),A("8000","Omzet diensten hoog tarief","revenue","revenue.net","WOmzNodOdh","revenue_default"),A("8010","Omzet diensten laag tarief","revenue","revenue.net","WOmzNodOdl"),A("8020","Omzet diensten verlegd","revenue","revenue.net","WOmzNodOdv"),A("8030","Omzet vrijgestelde diensten","revenue","revenue.net","WOmzNodNod"),A("8100","Omzet diensten binnen de EU","revenue","revenue.net","WOmzNodOdi"),A("8110","Omzet diensten buiten de EU","revenue","revenue.net","WOmzNodOdb"),A("9000","Rentebaten bank","revenue","financial.income","WFbeRlmObr"),A("9010","Rentebaten rekening-courant bestuurders","revenue","financial.income","WFbeRlmRrb")],journals:[{code:"VK",name:"Verkoop",kind:"sales"},{code:"IK",name:"Inkoop",kind:"purchase"},{code:"BNK",name:"Bank",kind:"bank"},{code:"KAS",name:"Kas",kind:"cash"},{code:"MEM",name:"Memoriaal",kind:"memorial"},{code:"BEG",name:"Beginbalans",kind:"opening"}]},Dm=[Yi],zi={"payroll.gross_wages":"4000","payroll.social_charges":"4010","payroll.pension":"4020","payroll.wage_tax":"1900","payroll.net_payable":"1910","payroll.clearing":"1920"};function xm(e,t){const n=[],r=t.functionalCurrency||"EUR",o=e.lines.filter(c=>c.currency&&c.currency!==r),s=o[0];if(s){const c={currency:s.currency};r!=="EUR"?n.push({code:"fx_cross_rate_unsupported",params:c}):o.some(u=>!(Number(u.fxRate)>0))&&n.push({code:"fx_rate_required",params:c})}e.lines.length<2&&n.push({code:"entry_too_few_lines"});const i=e.lines.reduce((c,u)=>c+u.functionalCents,0);i!==0&&n.push({code:"entry_unbalanced",params:{cents:String(i)}});const a=new Map(t.accounts.map(c=>[c.id,c]));for(const c of e.lines){const u=a.get(c.accountId);u?u.archived?n.push({code:"entry_account_archived",params:{account:u.code}}):u.requiresSubAccount&&!c.subAccountId&&n.push({code:"entry_sub_account_required",params:{account:u.code}}):n.push({code:"entry_unknown_account",params:{account:c.accountId}}),u&&!c.taxCode!=!c.taxSide&&n.push({code:"entry_tax_side",params:{account:u.code}})}return t.period?(t.period.status==="locked"||t.period.status==="closed"&&!t.allow)&&n.push({code:"entry_period_closed",params:{day:e.date}}):n.push({code:"entry_no_period",params:{day:e.date}}),n}function wm(e,t,n){return`${e}-${t.slice(0,4)}-${String(n).padStart(4,"0")}`}const Pm=["businessEntityId","journalId","number","journalSeq","fiscalYear","chainSeq","date","periodId","description","sourceKey","source","lines","counterparty","reversesEntryId","attachment","prevHash","postedAt","postedBy"],Lm=new Set(["journalSeq","chainSeq","postedAt"]),Km=["amountCents","functionalCents","taxCents"];function $m(e){const t={};for(const n of Pm){const r=e[n];r!==void 0&&(t[n]=Lm.has(n)?Number(r):r)}return Array.isArray(t.lines)&&(t.lines=t.lines.map(n=>{const r={...n};for(const o of Km)r[o]!=null&&(r[o]=Number(r[o]));return r})),t}function In(e){return e===null||typeof e!="object"?JSON.stringify(e):Array.isArray(e)?"["+e.map(In).join(",")+"]":"{"+Object.entries(e).filter(([,n])=>n!==void 0).sort(([n],[r])=>n<r?-1:n>r?1:0).map(([n,r])=>JSON.stringify(n)+":"+In(r)).join(",")+"}"}function Um(e,t){return e.taxSide??(t?.type==="revenue"?"sales":"purchase")}function Bm(e){return e.map(t=>({...t,amountCents:-t.amountCents,functionalCents:-t.functionalCents,...t.taxCents!==void 0?{taxCents:-t.taxCents}:{}}))}function Fm(e){return e.kind==="journal"?[]:e.lines.flatMap((t,n)=>t.period&&Ys(t.period)>1?[{index:n,period:t.period}]:[])}function jm(e,t){const n=e.kind==="journal"?Vm(e,t):Gm(e,t);return n.ok?qm(n,e,t.functionalCurrency??"EUR"):n}function qm(e,t,n){if(!t.currency||t.currency===n)return e;if(n!=="EUR")return{ok:!1,problem:"fx_cross_rate_unsupported"};const r=Number(t.fxRate);if(!(r>0))return{ok:!1,problem:"fx_rate_required"};const o=String(t.fxRate),s=e.lines.map(a=>({...a,fxRate:o,functionalCents:Math.round(a.amountCents*r)})),i=s.reduce((a,c)=>a+c.functionalCents,0);return s[0]={...s[0],functionalCents:s[0].functionalCents-i},{...e,lines:s}}function Gm(e,t){const n=m=>t.accounts.find(_=>_.role===m&&!_.archived),r=e.direction==="sale",o=n(r?"debtors":"creditors");if(!o)return{ok:!1,problem:r?"no_debtors_account":"no_creditors_account"};const s=n(r?"revenue_default":"expense_default"),i=n(r?"vat_payable":"vat_receivable"),a=r?-1:1,c=r?"sales":"purchase",u={currency:e.currency,...e.counterparty.companyId?{counterpartyCompanyId:e.counterparty.companyId}:{}},d=e.taxPointDate??e.issueDate,l=[],p=new Map;for(const m of e.lines){const _=m.accountKey??Ts(m,t.ledgerMapping??[],e.direction)?.targetKey??s?.id;if(!_)return{ok:!1,problem:"no_account_for_line"};const h=r?100:t.taxCodes?.find(I=>I.key===m.taxRateKey)?.deductiblePercent??100,y=Math.round(m.taxCents*h/100),b=m.netCents+m.taxCents-y;l.push({...u,accountId:_,amountCents:a*b,functionalCents:a*b,taxCode:m.taxRateKey,taxSide:c,taxCents:a*y,taxPointDate:d,...m.description?{description:m.description}:{},...Ae(m.dimensions)}),y&&p.set(m.taxRateKey,(p.get(m.taxRateKey)??0)+y)}for(const[m,_]of p){if(!i)return{ok:!1,problem:"no_vat_account"};l.push({...u,accountId:i.id,amountCents:a*_,functionalCents:a*_,taxCode:m,taxSide:c,taxPointDate:d})}const g=e.lines.reduce((m,_)=>m+_.netCents+_.taxCents,0);l.unshift({...u,accountId:o.id,amountCents:-a*g,functionalCents:-a*g});const f=[e.number,e.counterparty.name].filter(Boolean).join(" · ");return{ok:!0,journalKind:r?"sales":"purchase",lines:l,description:f||e.documentId}}function Vm(e,t){const n=o=>o?t.accounts.find(s=>s.code===o&&!s.archived):void 0,r=[];for(const o of e.lines){const s=o.accountKey??n(zi[o.ledgerCategoryKey??""])?.id;if(!s)return{ok:!1,problem:"no_account_for_line"};const i=Math.round(Number(o.amountCents)||0);i&&r.push({accountId:s,amountCents:i,functionalCents:i,currency:e.currency,...o.description?{description:o.description}:{},...Ae(o.dimensions)})}return r.length?r.reduce((o,s)=>o+s.amountCents,0)!==0?{ok:!1,problem:"journal_not_balanced"}:{ok:!0,journalKind:"memorial",lines:r,description:[e.number,e.counterparty.name].filter(Boolean).join(" · ")||e.documentId}:{ok:!1,problem:"journal_empty"}}const Wt=e=>String(e).padStart(2,"0"),Wm=(e,t)=>new Date(Date.UTC(e,t,0)).getUTCDate();function Hm(e,t=1){const n=t===1?String(e):`${e}/${e+1}`;return Array.from({length:12},(r,o)=>{const s=t-1+o,i=e+Math.floor(s/12),a=s%12+1;return{fiscalYear:n,index:o+1,from:`${i}-${Wt(a)}-01`,to:`${i}-${Wt(a)}-${Wt(Wm(i,a))}`,status:"open"}})}function Ym(e,t){return e.find(n=>n.from<=t&&t<=n.to)}const zm=["memorial","opening"],Xi="http://www.odb.belastingdienst.nl/Belastingdienst/BCPP/1.1/structures/XmlauditfileXAF_4.0",Xm={sales:"S",purchase:"P",bank:"B",cash:"C",memorial:"M",opening:"M"},Qi=e=>e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,"""),ir=(e,t)=>e.length>t?e.slice(0,t):e,C=(e,t,n=9999)=>t===void 0||t===""?"":"<"+e+">"+Qi(ir(String(t),n))+"</"+e+">",se=e=>{const t=Math.abs(e);return String(Math.trunc(t/100))+"."+String(t%100).padStart(2,"0")},Ht=e=>e<0?"C":"D",Zr=e=>ir(e.replace(/-/g,""),35);function Qm(e){const t=new Map(e.accounts.map(l=>[l.id,l.code])),n=new Map(e.relations.map(l=>[l.id,l.number||Zr(l.id)])),r=l=>n.get(l)??Zr(l),o=new Map(e.periods.map(l=>[l.id,l.index])),s=[],i=(...l)=>{s.push(l.join(""))};i('<?xml version="1.0" encoding="UTF-8"?>','<auditfile xmlns="',Xi,'">',"<header>",C("fiscalYear",e.fiscalYear.replace("/","-")),C("startDate",e.startDate),C("endDate",e.endDate),C("curCode",e.currency),C("dateCreated",e.createdOn),C("softwareDesc",e.software.desc,50),C("softwareVersion",e.software.version,20),C("RGSVersion",e.rgsVersion,20),"</header>","<company>",C("Commercenr",e.company.commerceNr,100),C("companyName",e.company.name,255),C("taxRegistrationCountry",e.company.country),"<taxRegIdent>"+Qi(ir(e.company.vatNumber??"",30))+"</taxRegIdent>");const a=e.company.address;if(a&&(a.street||a.city)&&i("<streetAddress>",C("streetname",a.street,100),C("number",a.number,15),C("city",a.city,50),C("postalCode",a.postalCode,10),C("country",e.company.country),"</streetAddress>"),e.relations.length){i("<customersSuppliers>");for(const l of e.relations)i("<customerSupplier>",C("custSupID",r(l.id),35),C("custSupName",l.name,50),C("commerceNr",l.commerceNr,100),C("taxRegistrationCountry",l.country),C("taxRegIdent",l.vatNumber,30),C("custSupTp",l.type),"</customerSupplier>");i("</customersSuppliers>")}i("<generalLedger>");for(const l of[...e.accounts].sort((p,g)=>p.code.localeCompare(g.code))){const p=l.type==="revenue"||l.type==="expense";i("<ledgerAccount>",C("accID",l.code,35),C("accDesc",l.name,255),C("accTp",p?"P":"B"),C("RGScode",l.taxonomy?.rgs,255),"</ledgerAccount>")}if(i("</generalLedger>"),e.taxCodes.length){i("<vatCodes>");for(const l of e.taxCodes)i("<vatCode>",C("vatID",l.key,35),C("vatDesc",l.label,100),C("vatToPayAccID",l.payableAccountId&&t.get(l.payableAccountId)),C("vatToClaimAccID",l.receivableAccountId&&t.get(l.receivableAccountId)),"</vatCode>");i("</vatCodes>")}i("<periods>");for(const l of[...e.periods].sort((p,g)=>p.index-g.index))i("<period>",C("periodNumber",l.index),C("startDatePeriod",l.from),C("endDatePeriod",l.to),"</period>");i("</periods>");const c=e.opening.filter(l=>l.cents!==0);if(c.length){const l=c.filter(g=>g.cents>0).reduce((g,f)=>g+f.cents,0),p=-c.filter(g=>g.cents<0).reduce((g,f)=>g+f.cents,0);i("<openingBalance>",C("linesCount",c.length),C("totalDebit",se(l)),C("totalCredit",se(p))),c.forEach((g,f)=>{i("<obLine>",C("nr",f+1),C("accID",t.get(g.accountId)??g.accountId),C("amnt",se(g.cents)),C("amntTp",Ht(g.cents)),"</obLine>")}),i("</openingBalance>")}const u=e.entries.flatMap(l=>l.lines);i("<transactions>",C("linesCount",u.length),C("totalDebit",se(u.filter(l=>l.functionalCents>0).reduce((l,p)=>l+p.functionalCents,0))),C("totalCredit",se(-u.filter(l=>l.functionalCents<0).reduce((l,p)=>l+p.functionalCents,0))));const d=new Map;for(const l of e.entries)d.set(l.journalId,[...d.get(l.journalId)??[],l]);for(const l of e.journals){const p=d.get(l.id);if(p?.length){i("<journal>",C("jrnID",l.code,35),C("desc",l.name),C("jrnTp",Xm[l.kind]));for(const g of[...p].sort((f,m)=>f.journalSeq-m.journalSeq))i("<transaction>",C("nr",g.number,35),C("desc",g.description),C("periodNumber",o.get(g.periodId)??0),C("trDt",g.date),C("Source",g.source.app+(g.source.kind?" "+g.source.kind:""),999),C("User",g.postedBy,999)),g.lines.forEach((f,m)=>{const _=f.taxCode&&e.vatPercent?.(f.taxCode,g.date),h=f.currency&&f.currency!==e.currency;i("<trLine>",C("nr",m+1),C("accID",t.get(f.accountId)??f.accountId,35),C("docRef",g.source.number??g.number,255),C("effDate",f.taxPointDate??g.date),C("desc",f.description),C("amnt",se(f.functionalCents)),C("amntTp",Ht(f.functionalCents)),C("custSupID",f.counterpartyCompanyId&&r(f.counterpartyCompanyId),35),C("invRef",g.source.number,255),C("cost",f.costCenterId,999),C("project",f.projectId,999),_&&f.taxCents!==void 0?"<vat>"+C("vatID",f.taxCode,35)+C("vatPerc",_)+C("vatAmnt",se(f.taxCents))+C("vatAmntTp",Ht(f.taxCents))+"</vat>":"",h?"<currency>"+C("curCode",f.currency)+C("curAmnt",se(f.amountCents))+"</currency>":"","</trLine>")}),i("</transaction>");i("</journal>")}}return i("</transactions>","</company>","</auditfile>"),s.join(`
|
|
12
|
-
`)}const Zm=(e,t)=>{const n=Math.round(Number((e??"0").replace(",","."))*100);return t==="C"?-Math.abs(n):Math.abs(n)};function Jm(e){const t=Q(e,"ledgerAccount").map(a=>{const c=N(a,"RGScode")??N(a,"leadCode");return{code:N(a,"accID")??"",name:N(a,"accDesc")??"",kind:N(a,"accTp")==="P"?"P":"B",...c?{rgs:c}:{}}}),n={},r=a=>{const c=N(a,"accID");c&&(n[c]=(n[c]??0)+Zm(N(a,"amnt"),N(a,"amntTp")))};for(const a of Q(e,"obLine"))r(a);for(const a of Q(e,"trLine"))r(a);const o=Q(e,"header")[0]??"",s=N(o,"fiscalYear"),i=N(o,"endDate");return{accounts:t.filter(a=>a.code),closing:n,...s?{fiscalYear:s}:{},...i?{endDate:i}:{}}}function eg(e,t){const n=e.rgs??"";return/^BEiv/.test(n)?"equity":/^B(Iva|Mva|Fva|Vrd|Vor|Eff|Lim)/.test(n)?"asset":/^B(Vrz|Lsc|Las|Sch|Sub)/.test(n)?"liability":/^W(Omz|Oov|Fbe.*Rlm|Wiv)/.test(n)||/^WFbeOrb/.test(n)?"revenue":/^W/.test(n)?"expense":e.kind==="P"?t<0?"revenue":"expense":t<0?"liability":"asset"}const En=["lookup","condition","parallel","for-each"];function Ge(e){for(const t of e){if(!En.includes(t.type))return`staptype "${t.type}" mag niet meelezen (alleen ${En.join(", ")})`;if(t.type==="parallel")for(const n of t.branches??[]){const r=Ge(n);if(r)return r}if(t.type==="for-each"){const n=Ge(t.body??[]);if(n)return n}if(t.type==="condition"){const n=Ge(t.else??[]);if(n)return n}}return null}function tg(e,t){switch(e.kind){case"org":return!0;case"team":return!!t.teamId&&e.teamId===t.teamId;case"personal":return e.userId===t.userId}}function ng(e,t){return e.filter(n=>n.enabled&&tg(n.ownerScope,t))}function rg(e){return e.credentialScope?e.credentialScope:(e.authMode??"header")==="header"||e.oauth?.scope==="org"?"shared":"per-user"}function og(e){return`mcp__${e}__`}const sg=1e3,ig=2e3,ag=500,cg=12e3,ug=4e3,Zi=["contact","company","work_item"];function lg(e){if(!e)return!1;const t=e.slice(0,e.indexOf(":"));return Zi.includes(t)}const dg="high",fg=[{key:"high",label:"tax_high",percent:21,kind:"standard"},{key:"low",label:"tax_low",percent:9,kind:"reduced"},{key:"zero",label:"tax_zero",percent:0,kind:"zero"},{key:"reverse_charge",label:"tax_reverse_charge",percent:0,kind:"reverse_charge"},{key:"exempt",label:"tax_exempt",percent:0,kind:"exempt"}];function Ji(e,t){return t.find(n=>n.key===e)??{key:e,label:e,percent:0,kind:"zero"}}const pg=[{key:"high",label:"tax_high",kind:"standard",direction:"both",rates:[{validFrom:"2012-10-01",percent:21}],boxes:{"nl-ob":{sales:{base:"1a",tax:"1a"},purchase:{tax:"5b"}}}},{key:"low",label:"tax_low",kind:"reduced",direction:"both",rates:[{validFrom:"2019-01-01",percent:9}],boxes:{"nl-ob":{sales:{base:"1b",tax:"1b"},purchase:{tax:"5b"}}}},{key:"zero",label:"tax_zero",kind:"zero",direction:"both",rates:[{validFrom:"2000-01-01",percent:0}],boxes:{"nl-ob":{sales:{base:"1e"}}}},{key:"reverse_charge",label:"tax_reverse_charge",kind:"reverse_charge",direction:"both",rates:[{validFrom:"2000-01-01",percent:0}],boxes:{"nl-ob":{sales:{base:"1e"},purchase:{base:"2a",tax:"2a"}}},selfAssessed:!0},{key:"eu",label:"tax_eu",kind:"reverse_charge",direction:"both",rates:[{validFrom:"2000-01-01",percent:0}],boxes:{"nl-ob":{sales:{base:"3b"},purchase:{base:"4b",tax:"4b"}}},selfAssessed:!0,icp:!0,icpKind:"services"},{key:"eu_goods",label:"tax_eu_goods",kind:"zero",direction:"both",rates:[{validFrom:"2000-01-01",percent:0}],boxes:{"nl-ob":{sales:{base:"3b"},purchase:{base:"4b",tax:"4b"}}},selfAssessed:!0,icp:!0,icpKind:"goods"},{key:"eu_triangular",label:"tax_eu_triangular",kind:"zero",direction:"sales",rates:[{validFrom:"2000-01-01",percent:0}],boxes:{"nl-ob":{sales:{base:"3b"}}},icp:!0,icpKind:"triangular"},{key:"non_eu",label:"tax_non_eu",kind:"zero",direction:"both",rates:[{validFrom:"2000-01-01",percent:0}],boxes:{"nl-ob":{sales:{base:"3a"},purchase:{base:"4a",tax:"4a"}}},selfAssessed:!0},{key:"exempt",label:"tax_exempt",kind:"exempt",direction:"both",rates:[{validFrom:"2000-01-01",percent:0}],boxes:{}}];function ar(e,t){return e.rates.find(r=>r.validFrom<=t&&(!r.validTo||t<=r.validTo))?.percent??0}function mg(e,t,n="sales"){return e.filter(r=>!r.archived&&(r.direction==="both"||r.direction===n)).map(r=>({key:r.key,label:r.label,kind:r.kind,percent:ar(r,t),...r.businessEntityId?{businessEntityId:r.businessEntityId}:{}}))}function ae(e){return new Date(e).toISOString().slice(0,10)}const Jr=/^\d{4}-\d{2}-\d{2}$/;function gg(e){if(!e.key?.trim())return"tax_code_key";if(!e.label?.trim())return"tax_code_label";const t=e.rates??[];if(!t.length)return"tax_code_rates";for(const[n,r]of t.entries()){if(!Jr.test(r.validFrom)||r.validTo&&!Jr.test(r.validTo))return"tax_code_date";if(!(r.percent>=0&&r.percent<=100))return"tax_code_range";if(r.validTo&&r.validTo<r.validFrom)return"tax_code_date";const o=t[n-1];if(o&&(!o.validTo||o.validTo>=r.validFrom))return"tax_code_overlap"}return null}function Dt(e){if(e.kind!=="product")return 0;const t=1-(e.discountPercent??0)/100,n=U(e.quantity*e.unitPriceCents*t);return e.pricePer&&e.servicePeriod?Et(n,e.pricePer,e.servicePeriod):n}function hg(e,t,n){const r=e.map(u=>({...u,netCents:Dt(u),taxCents:0})),o=new Map;for(let u=0;u<r.length;u++){if(r[u].kind!=="product"||r[u].optional)continue;const d=n??r[u].taxRateKey,l=o.get(d);l?l.push(u):o.set(d,[u])}const s=[];let i=0,a=0;for(const[u,d]of o){const l=Ji(u,t),p=d.reduce((m,_)=>m+r[_].netCents,0),g=U(p*l.percent/100),f=de(g,d.map(m=>r[m].netCents));for(let m=0;m<d.length;m++)r[d[m]].taxCents=f[m];s.push({taxRateKey:u,percent:l.percent,kind:l.kind,netCents:p,taxCents:g}),i+=p,a+=g}const c=r.reduce((u,d)=>d.costPriceCents==null||d.optional?u:u+U(d.costPriceCents*d.quantity),0);return{lines:r,totals:{netCents:i,taxCents:a,grossCents:i+a,costCents:c,byRate:s}}}const yg="onboarding-source",bg=["support","billing","availability","sales","onboarding"],_g=["keep","replace"],xt=[{key:"shift",label:"kind_shift",capacity:!0,productive:!1,absent:!1,icon:"calendar-clock"},{key:"allocation",label:"kind_allocation",capacity:!1,productive:!0,absent:!1,icon:"briefcase"},{key:"meeting",label:"kind_meeting",capacity:!1,productive:!1,absent:!1,icon:"users"},{key:"travel",label:"kind_travel",capacity:!1,productive:!1,absent:!1,icon:"car"},{key:"training",label:"kind_training",capacity:!1,productive:!1,absent:!1,icon:"graduation-cap"},{key:"break",label:"kind_break",capacity:!1,productive:!1,absent:!1,icon:"coffee"},{key:"absence",label:"kind_absence",capacity:!1,productive:!1,absent:!0,approvable:!0,icon:"palmtree"},{key:"sick",label:"kind_sick",capacity:!1,productive:!1,absent:!0,icon:"thermometer"},{key:"holiday",label:"kind_holiday",capacity:!1,productive:!1,absent:!0,icon:"party-popper"}],ea={key:"unknown",label:"kind_unknown",capacity:!1,productive:!1,absent:!1};function ee(e,t=xt){return t.find(n=>n.key===e)??{...ea,key:e}}function Se(e){return e==="published"||e==="approved"}function cr(e,t,n=xt){if(e.workstreamId!==t)return!1;const r=ee(e.kindKey,n);return r.absent?!1:r.productive||r.capacity}function Ig(e,t=xt){if(!e.userId||!Se(e.status))return!1;const n=ee(e.kindKey,t);return n.capacity||n.productive||n.absent}const Eg=864e5;function ta(e,t){return Math.round((t-e)/Eg)}function ur(e,t){const n=e.cycleMinutes.length;return n===0?0:(ta(e.anchor,t)%n+n)%n}function lr(e,t){return e.effectiveFrom!==void 0&&t<e.effectiveFrom?0:e.cycleMinutes[ur(e,t)]??0}function dr(e,t){return e.startTimes?.[ur(e,t)]}function fr(e,t,n,r){const o=e.filter(a=>a.effectiveFrom===void 0||a.effectiveFrom<=r),s=a=>a.sort((c,u)=>(u.effectiveFrom??0)-(c.effectiveFrom??0))[0],i=s(o.filter(a=>a.userId===t));return i||s(o.filter(a=>!a.userId&&a.teamId&&n.includes(a.teamId)))}function na(e,t,n){return e.filter(r=>r.userId===t&&(r.effectiveFrom===void 0||r.effectiveFrom<=n)).sort((r,o)=>(o.effectiveFrom??0)-(r.effectiveFrom??0))[0]}const Sn=864e5;function Sg(e){const t=Math.max(1,Math.round((e.to-e.from)/Sn));return Array.from({length:t},(n,r)=>e.from+r*Sn)}function An(e,t,n,r){const o=Math.min(t,r)-Math.max(e,n);return o>0?o/1e3:0}const eo={interval:0,day:1,week:2};function Ag(e,t){const{entries:n,patterns:r=[],terms:o=[]}=t,s=n.filter(l=>l.userId&&Se(l.status)&&ee(l.kindKey).capacity),i=n.filter(l=>l.userId&&Se(l.status)&&ee(l.kindKey).absent),a=t.userIds??[...new Set([...s.map(l=>l.userId),...r.map(l=>l.userId),...o.map(l=>l.userId)])].filter(l=>!!l),c={};let u="interval";const d=l=>{eo[l]>eo[u]&&(u=l)};for(const l of a){const p=t.teamIdsOf?.(l)??[];let g=0,f=0,m=0;for(const y of Sg(e)){const b=Math.max(y,e.from),I=Math.min(y+Sn,e.to);m++;const v=s.filter(E=>E.userId===l).reduce((E,M)=>E+An(M.start,M.end,b,I),0);if(v>0){g+=v;continue}const T=fr(r,l,p,y),O=T?lr(T,y):0;if(T&&O>0){g+=O*60,d(dr(T,y)?"interval":"day");continue}T||f++}if(f>0){const y=na(o,l,e.from);y&&(g+=y.weeklyMinutes*60*(f/7),d("week"))}const _=i.filter(y=>y.userId===l).reduce((y,b)=>y+An(b.start,b.end,e.from,e.to),0),h=Math.max(0,g-_);(h>0||m>0)&&(c[l]=h)}return{seconds:Object.values(c).reduce((l,p)=>l+p,0),precision:u,byUser:c}}function vg(e,t){if(!e.some(a=>a.userId))return[];const n="",r=new Map;for(const a of e){const c=a.userId??n;r.set(c,(r.get(c)??0)+a.seconds)}const s=[...new Set([...Object.keys(t.byUser),...[...r.keys()].filter(a=>a!==n)])].map(a=>{const c=r.get(a)??0,u=t.byUser[a]??0;return{userId:a,requiredSeconds:c,capacitySeconds:u,netSeconds:u-c}});s.sort((a,c)=>a.netSeconds-c.netSeconds);const i=r.get(n)??0;return i>0&&s.push({requiredSeconds:i,capacitySeconds:0,netSeconds:-i}),s}function Cg(e,t,n,r){const o=e.filter(i=>i.userId&&Se(i.status)&&!ee(i.kindKey).absent),s=Object.entries(r.byUser).map(([i,a])=>{let c=0,u=0;for(const d of o){if(d.userId!==i||ee(d.kindKey).capacity&&!d.workstreamId)continue;const l=An(d.start,d.end,n.from,n.to);l<=0||(cr(d,t)?c+=l:u+=l)}return{userId:i,capacitySeconds:a,onThisSeconds:c,elsewhereSeconds:u,freeSeconds:Math.max(0,a-c-u)}});return s.sort((i,a)=>a.freeSeconds-i.freeSeconds),s}const Tg="demand-source",to=1e3;function kg(e,t){let n=1;for(let r=1;r<=e;r++)n=t*n/(r+t*n);return n}function ra(e,t){if(e<=0)return 1;if(t<=0)return 0;if(e<=t)return 1;const n=kg(e,t),r=t/e;return n/(1-r*(1-n))}function oa(e,t,n,r){return r<=0?1:e<=t?0:1-ra(e,t)*Math.exp(-(e-t)*n/r)}function sa(e,t,n){return n<=0?0:e*t/n}function ia(e,t,n,r){if(e<=0||t<=0)return 0;const o=sa(e,t,n);if(o<=0)return 0;const s=r.serviceLevelPercent/100,i=r.maxOccupancyPercent?r.maxOccupancyPercent/100:void 0;for(let a=Math.max(1,Math.ceil(o));a<=to;a++)if(!(a<=o)&&!(oa(a,o,r.targetSeconds,t)<s)&&!(i&&o/a>i))return a;return to}const Og=36e5,Mg=864e5;function Rg(e){return e==="day"?Mg:Og}function Ng(e,t){return e.start<t.end&&t.start<e.end}function Ve(e,t,n){const r=Math.min(e.end,n)-Math.max(e.start,t);return r>0?r/1e3:0}function aa(e,t,n){const r=e.handleSeconds??0,o=e.seconds??(e.volume!==void 0?e.volume*r:0);if(o<=0&&!e.volume)return{seconds:0,headcount:0};const s=(t.unplannedLossPercent??0)/100,i=s>0&&s<1?1/(1-s):1;if(t.model==="queue"&&e.volume!==void 0&&r>0){const a=ia(e.volume,r,n,t);return{seconds:o,headcount:a*i}}return{seconds:o,headcount:o/n*i}}function Dg(e){const{entries:t,workstreamId:n,staffing:r,demand:o,range:s}=e,i=e.grain??"hour",a=Rg(i),c=a/1e3,u=e.kinds,d=t.filter(m=>Se(m.status)),l=d.filter(m=>cr(m,n,u)),p=d.filter(m=>ee(m.kindKey,u).capacity),g=d.filter(m=>ee(m.kindKey,u).absent),f=[];for(let m=Ie(s.from,i);m<s.to;m+=a){const _=m+a,h=_e(m,i);let y=0;for(const E of l)y+=Ve(E,m,_);let b=0;for(const E of p)b+=Ve(E,m,_);let I=0;for(const E of g)I+=Ve(E,m,_);const v=o?.[h]??{},T=aa(v,r,c),O=y/c;f.push({period:h,forecastVolume:v.volume,requiredSeconds:T.seconds,requiredHeadcount:T.headcount,scheduledSeconds:y,scheduledHeadcount:O,netHeadcount:O-T.headcount,capacitySeconds:b,absentSeconds:I})}return f}function ca(e,t){return e.workTypeKey??t?.defaultWorkTypeKey}function xg(e,t,n){const r=ca(e,t);return r?n.find(o=>o.key===r)?.defaultBillable??!1:!1}function wg(e){return e.filter(t=>t.netHeadcount<0&&t.requiredHeadcount>0)}const Pg=36e5,vn=6048e5,ua=8,Lg=.5,Kg=2;function $g(e){const t=Number(e.slice(0,4)),n=Number(e.slice(5,7)),r=Number(e.slice(8,10)),o=e.length>10?Number(e.slice(11,13)):0;return Date.UTC(t,n-1,r,o)}function Ug(e,t,n){const r=[];for(let s=0;s<n;s++){const i=t-s*vn,a=i-vn;let c=0,u=!1;for(const[d,l]of e)d>=a&&d<i&&(c+=l,u=!0);u&&r.push(c)}if(r.length<2)return 1;const o=r.reduce((s,i)=>s+i,0)/r.length;return o<=0?1:Math.min(Kg,Math.max(Lg,r[0]/o))}function Bg(e,t){if(!e?.length)return;let n;for(const r of e)t>=r.from&&t<r.to&&(n=r);return n}function Fg(e,t,n){const r=Math.max(1,n?.weeks??ua),o=new Map,s=new Set;for(const c of e)o.set($g(c.period),c.value),s.add(c.period.slice(0,10));const i=Ug(o,Ie(t.from,"hour"),r),a=[];for(let c=Ie(t.from,"hour");c<t.to;c+=Pg){let u=0,d=0;for(let g=1;g<=r;g++){const f=c-g*vn,_=o.get(f)??(s.has(_e(f,"day"))?0:void 0);if(_===void 0)continue;const h=r-g+1;u+=_*h,d+=h}let l=d>0?u/d*i:0;const p=Bg(n?.adjustments,c);p?.absoluteVolume!==void 0?l=p.absoluteVolume:p?.factor!==void 0&&(l*=p.factor),a.push({period:_e(c,"hour"),volume:l})}return a}const la="schedule_entry",da="workstream";function jg(e){return`${la}:${e}`}function qg(e){return`${da}:${e}`}const Cn=36e5,be=864e5;function Gg(e,t){const n=t==="day"?be:Cn,r=[];for(let o=Ie(e.from,t);o<e.to;o+=n)r.push(o);return r}function no(e){const t=Math.max(1,Math.round((e.to-e.from)/be));return Array.from({length:t},(n,r)=>e.from+r*be)}function Yt(e,t,n,r){const o=Math.min(t,r)-Math.max(e,n);return o>0?o/1e3:0}function Vg(e,t,n={}){const r=n.grain??"hour",o=Gg(t,r),s=r==="day"?be:Cn,i=new Map(o.map(l=>[l,0])),a=e.filter(l=>l.userId&&ee(l.kindKey).capacity),c=n.userIds?.length?new Set(n.userIds):null,u=new Set;for(const l of a)if(!(c&&l.userId&&!c.has(l.userId))){for(const p of o){const g=Yt(l.start,l.end,p,p+s);g>0&&i.set(p,(i.get(p)??0)+g)}for(const p of no(t))Yt(l.start,l.end,p,p+be)>0&&u.add(`${l.userId}:${p}`)}const d=n.userIds??[...new Set([...a.map(l=>l.userId),...(n.patterns??[]).map(l=>l.userId)])].filter(l=>!!l);if(n.patterns?.length)for(const l of d){const p=n.teamIdsOf?.(l)??[];for(const g of no(t)){if(u.has(`${l}:${g}`))continue;const f=fr(n.patterns,l,p,g);if(!f)continue;const m=lr(f,g);if(m<=0)continue;const _=dr(f,g);if(_){const[b,I]=_.split(":").map(Number),v=g+b*Cn+(I??0)*6e4,T=v+m*6e4;for(const O of o){const E=Yt(v,T,O,O+s);E>0&&i.set(O,(i.get(O)??0)+E)}continue}const h=o.filter(b=>b>=g&&b<g+be);if(!h.length)continue;const y=m*60/h.length;for(const b of h)i.set(b,(i.get(b)??0)+y)}}return o.map(l=>({period:_e(l,r),weight:i.get(l)??0}))}function fa(e,t){if(e<=0||!t.length)return[];const n=t.reduce((r,o)=>r+Math.max(0,o.weight),0);if(n<=0){const r=e/t.length;return t.map(o=>({period:o.period,seconds:r}))}return t.filter(r=>r.weight>0).map(r=>({period:r.period,seconds:e*r.weight/n}))}function Wg(e,t,n){const r=new Map;for(const o of e){const s=o.by?t.filter(a=>n(a.period)<o.by):t,i=s.length?s:t;for(const a of fa(o.seconds,i)){const c=`${a.period}|${o.userId??""}`,u=r.get(c);u?u.seconds+=a.seconds:r.set(c,{...a,userId:o.userId})}}return[...r.values()].sort((o,s)=>o.period.localeCompare(s.period)||(o.userId??"").localeCompare(s.userId??""))}function pa(e){switch(e.kind){case"user":return`user:${e.userId}`;case"team":return`team:${e.teamId}`;case"org":return"org"}}function Hg(e){if(typeof e!="string")return;const t=e.trim();if(t==="org")return{kind:"org"};const n=t.indexOf(":");if(n<=0)return;const r=t.slice(0,n),o=t.slice(n+1).trim();if(o){if(r==="user")return{kind:"user",userId:o};if(r==="team")return{kind:"team",teamId:o}}}function ma(e){return pa(e)}function ga(e){switch(e.kind){case"personal":return{kind:"user",userId:e.userId};case"team":return{kind:"team",teamId:e.teamId};case"org":return{kind:"org"}}}function Yg(e){return e.agentId?{kind:"user",userId:e.agentId}:ga(e.ownerScope)}function zg(e){return ma(e)}const ha="playbook-run",Xg="run";function Qg(e,t=0){return`${ha}:${e}~${t}`}function Zg(e){const t=e.indexOf("~");return t<0?e:e.slice(0,t)}function ya(e,t){if(!t)return;let n=e;for(const r of t.split(".")){if(n===null||typeof n!="object")return;n=n[r]}return n}function Jg(e,t){return e.targets.find(n=>n.activityTypes.includes(t))}function eh(e,t){if(t)return e.targets.find(n=>n.id===t)}function ba(e){return e?.kind==="assignment"}function th(e){const{trigger:t,agentId:n,target:r,activityType:o,assigneeUserId:s,authorUserId:i}=e;return ba(t)?n?r?r.activityTypes.includes(o)?s?s!==n?"assigned to someone else":i&&i===n?"the agent assigned this to itself, which would restart its own run":null:`no assignee found at ${r.assigneePath}`:`activity type ${o} does not announce an assignment for ${r.id}`:`assignment target kind "${t.targetKind}" is not declared by any installed app`:"this playbook has no agent, so an assignment can never be for it":"trigger is not an assignment trigger"}const Tn=["suggest","outward","auto"];function nh(e){return typeof e=="string"&&Tn.includes(e)}function rh(e){const t=e.playbook?.autonomy??e.agent?.autonomy??"suggest";return e.demoted&&t==="auto"?"outward":t}function oh(e,t){const n=e??"suggest";return t&&Tn.indexOf(t)<Tn.indexOf(n)?t:n}function sh(e){return e.replace(/__/g," · ").replace(/\./g," · ").replace(/_/g," ")}function _a(e){const t=e.split("__");return t[t.length-1]||e}function ih(e){const t=_a(e).replace(/[_.]+/g," ").trim();return t?t.charAt(0).toUpperCase()+t.slice(1):e}const ah=[{name:"text",type:"string"},{name:"subject",type:"string"},{name:"from",type:"string"},{name:"type",type:"string"},{name:"direction",type:"string"},{name:"channelId",type:"string"},{name:"interactionId",type:"string"},{name:"itemId",type:"string"},{name:"activityId",type:"string"},{name:"authorType",type:"string"},{name:"authorName",type:"string"},{name:"textRaw",type:"string"},{name:"fromStatus",type:"string",onlyFor:["INTERACTION_STATUS_CHANGED"]},{name:"toStatus",type:"string",onlyFor:["INTERACTION_STATUS_CHANGED"]},{name:"toCategory",type:"string",onlyFor:["WORK_ITEM_STATUS_CHANGED"]},{name:"contactId",type:"string"},{name:"companyId",type:"string"},{name:"priority",type:"string"},{name:"inboxId",type:"string"},{name:"topicId",type:"string"},{name:"assigneeUserId",type:"string"}];function ch(e,t){return!e.onlyFor||!t?.length?!0:t.some(n=>e.onlyFor?.includes(n))}const uh={topics:[{name:"topicId",type:"string"},{name:"topic",type:"string"},{name:"confidence",type:"number"},{name:"reasoning",type:"string"}],question:[{name:"answer",type:"boolean"},{name:"reasoning",type:"string"}],extract:[]};function pr(e){return`${e.type}:${e.id}`}function lh(e){return[pr(e),e.lineId].join("#")}function dh(e){const t=e.lastIndexOf("#"),n=e.indexOf(":");return n<=0||t<=n+1||t===e.length-1?null:{type:e.slice(0,n),id:e.slice(n+1,t),lineId:e.slice(t+1)}}function fh(e){let t=1+Math.max(0,...e.map(n=>Number(/^l(\d+)$/.exec(n.id??"")?.[1]??0)));return e.map(n=>n.id?n:{...n,id:["l",t++].join("")})}const Ia="interaction";function Ea(e){return e?.type===Ia?e.id:void 0}const Sa=64,Aa=8e3;function ph(e){const t=typeof e=="number"?e:Number(String(e??"").trim());if(!(!Number.isFinite(t)||t<=0))return Math.min(Math.max(Math.round(t),Sa),Aa)}const mh=["condition","for-each","parallel","lookup","action","classify","generate","agent","wait-for-reply","wait-for-task"],gh={kind:"workflow",steps:[]};function hh(e){return e?.kind==="workflow"?e.steps:[]}function yh(e){return e?.kind==="procedure"?e.procedure:void 0}function bh(e){return e.assignmentId?"assignment":e.decider?.kind==="procedure"?"procedure":"workflow"}function va(e){const t=e?.approved??0,n=t+(e?.rejected??0);return{total:n,rate:n?t/n:0}}const Ca=10,Ta=.9;function _h(e){const{total:t,rate:n}=va(e);return t>=Ca&&n>=Ta}const ka=["done","escalated","failed","stopped"];function Ih(e){return ka.includes(e)}function Oa(e){return e==="waiting"}function Eh(e){return e==="running"||Oa(e)}function mr(e){return e.subjectKind&&e.subjectId?{type:e.subjectKind,id:e.subjectId}:void 0}function Sh(e){const t=mr(e);return t?pr(t):void 0}function Ah(e){return Ea(mr(e))}const Ma=36e5,vh=24*Ma,Ch=48*Ma;function Th(e,t,n){const r=e.availability;if(!r)return{stock:"unknown"};if(!(n<=(r.freshUntil??r.at+Ch))||r.qty===null)return{stock:"unknown"};const s=r.qty;return{stock:s>=t?"enough":"short",qty:s}}function kh(e,t,n){if(!Qn(e,n))return"invalid";if(e.pricedBy!=="quote"&&(e.termMonths??0)!==(t.termMonths??0))return"term";const r=t.deliverTo!==void 0&&t.deliverTo!=="own";if(t.deliverTo!==void 0&&e.dropship===(r?"no":"yes"))return"dropship";if(t.qualified&&!t.qualified.some(o=>o.app===e.provider?.app&&o.offer===e.provider.offer))return"qualification"}function Oh(e,t){if(e.pricedBy==="quote")return null;const n=e.currency===t.currency?1:t.rates?.[e.currency];return n?ii(e)*n:null}const ro={enough:0,unknown:1,short:2},oo=e=>e.unitCents??Number.POSITIVE_INFINITY;function Mh(e,t,n){const r=e.map(f=>{const m=kh(f,t,n),_=f.availability?.leadDays??f.leadDays;return{offer:f,...Th(f,t.quantity,n),unitCents:Oh(f,t),..._!==void 0?{leadDays:_}:{},...m?{unsuitable:m}:{}}}),o=r.filter(f=>!f.unsuitable),s=r.filter(f=>f.unsuitable),i=o.filter(f=>f.unitCents!==null),a=i.length?i:o,c=[...a].sort((f,m)=>ro[f.stock]-ro[m.stock]||(f.stock==="short"?(m.qty??0)-(f.qty??0):0)||oo(f)-oo(m)||(f.leadDays??Number.POSITIVE_INFINITY)-(m.leadDays??Number.POSITIVE_INFINITY)||Number(m.offer.isDefault)-Number(f.offer.isDefault)),u=a.find(f=>f.offer.isDefault),d=u&&u.stock!=="short"?u:c[0]??null,l=t.pinned?r.find(f=>f.offer.id===t.pinned):void 0;if(l){const f=[...c,...o.filter(m=>!a.includes(m)),...s];return{chosen:l,why:"picked",alternatives:f.filter(m=>m!==l),currency:t.currency}}const p=[...c,...o.filter(f=>!a.includes(f))].filter(f=>f!==d);if(!d)return{chosen:null,alternatives:[...p,...s],currency:t.currency};const g=d.stock==="short"?"short":d===u?"preferred":u?"preferred_short":o.length===1?"only":"best";return{chosen:d,why:g,alternatives:[...p,...s],currency:t.currency}}const zt=864e5;function Rh(e,t){return e.lines.flatMap(n=>{const r=St(W(e,n),t);if(!r)return[];if(n.expected==="variable")return[{lineId:n.id,kind:"variable"}];if(n.quantity.from!=="fixed"||!n.price)return[{lineId:n.id,kind:"count"}];const o=Dt({kind:"product",quantity:n.quantity.value,unitPriceCents:n.price.cents,pricePer:n.price.per,servicePeriod:r});return[{lineId:n.id,kind:"fixed",cents:o}]})}function Ra(e,t,n=.3){const r=e.slice(-3);if(!r.length)return!1;const o=r.reduce((s,i)=>s+i,0)/r.length;return o===0?t!==0:Math.abs(t-o)/Math.abs(o)>n}const so=e=>e.seriesId??e.id;function Nh(e,t,n){return t.find(r=>{const o=W(e,r);return o.from<=n&&(o.to==null||o.to>n)})??t[t.length-1]}function Dh(e,t,n,r={}){const o=(r.noticeDays??30)*zt,s=(r.windowDays??7)*zt,i=[];for(const a of e){if(a.status!=="active")continue;const c=new Map;for(const u of a.lines)c.set(so(u),[...c.get(so(u))??[],u]);for(const u of c.values()){const d=Nh(a,u,n),l=W(a,d);if(l.to!=null&&l.to<=n)continue;const p={contractId:a.id,lineId:d.id},g=d.commitment??a.commitment,f=zo(a,u),m=l.to??tt(f,g,n);if(d.customerCompanyId&&!d.itemId){const b=d.salesLine?t.find(I=>I.agreementId===d.salesLine?.agreementId&&I.seriesId===d.salesLine?.seriesId):void 0;b?b.ended?i.push({kind:"not_covered",...p,reason:"sales_ended"}):(d.quantity.from==="fixed"&&b.quantity!=null&&b.quantity!==d.quantity.value&&i.push({kind:"not_covered",...p,reason:"quantity"}),b.unbilled.length&&i.push({kind:"not_billed",...p,windows:b.unbilled}),m>b.effectiveEndAt&&i.push({kind:"term_mismatch",...p,purchaseEnd:m,salesEnd:b.effectiveEndAt})):i.push({kind:"not_covered",...p,reason:"no_sales_line"})}const _=!!g&&g.termMonths>=3&&(g.renew==="term"||n<tt(f,{...g,renew:"none"},f)),h=l.to==null&&_?Xo(f,g,n):null;if(h!=null&&h-n<=o&&i.push({kind:"notice_due",...p,deadline:h}),g&&g.termMonths>=1&&d.changeWindowDays){const b=Kn(f,g,n)+d.changeWindowDays*zt;b>n&&b-n<=s&&i.push({kind:"change_window",...p,closesAt:b})}const y=r.invoiced?.get(d.id);if(d.expected==="variable"&&y&&y.length>=2){const b=[...y].sort((v,T)=>v.from-T.from),I=b[b.length-1];Ra(b.slice(0,-1).map(v=>v.cents),I.cents)&&i.push({kind:"variable_jump",...p,cents:I.cents})}}}return i}const gr=["vendorSku","gtin","description","brand","group","cost","list","currency","stock","leadDays","lotSize","dropship"],Na={day:864e5,week:7*864e5,month:31*864e5},Da=10;function xh(e,t){const n=(e[0]??[]).map(a=>a.trim().toLowerCase()),r={},o=[];for(const a of gr){const c=t[a]?.trim();if(!c)continue;const u=n.indexOf(c.toLowerCase());u===-1?o.push(c):r[a]=u}const s=[],i=[];return r.vendorSku===void 0&&r.gtin===void 0?{rows:s,errors:[{line:1,message:"feed_no_key"}],missingHeaders:o}:(e.slice(1).forEach((a,c)=>{const u=c+2,d=v=>{const T=r[v];return T===void 0?"":(a[T]??"").trim()},l=d("vendorSku"),p=kt(d("gtin"));if(!l&&!p){i.push({line:u,message:"feed_row_no_key"});return}const g=d("cost")?nn(d("cost")):void 0;if(d("cost")&&g===void 0){i.push({line:u,message:"feed_row_price"});return}const f=d("list")?nn(d("list")):void 0,m=d("stock"),_=Number(m.replace(/[^\d-]/g,"")),h=r.stock===void 0?void 0:m&&/\d/.test(m)&&Number.isFinite(_)?Math.max(0,_):null,y=Number(d("leadDays")),b=Number(d("lotSize")),I=wh(d("dropship"));s.push({line:u,...l?{vendorSku:l}:{},...p?{gtin:p}:{},...d("description")?{description:d("description")}:{},...d("brand")?{brand:d("brand")}:{},...d("group")?{group:d("group")}:{},...g!==void 0?{costCents:g}:{},...f!==void 0?{listCents:f}:{},...d("currency")?{currency:d("currency").toUpperCase()}:{},...h!==void 0?{stock:h}:{},...d("leadDays")&&Number.isFinite(y)?{leadDays:y}:{},...Number.isInteger(b)&&b>1?{lotSize:b}:{},...I?{dropship:I}:{}})}),{rows:s,errors:i,missingHeaders:o})}function wh(e){const t=e.toLowerCase();if(t){if(/^(alleen|only)/.test(t))return"yes";if(/^(ja|yes|y|j|1|true|waar)$/.test(t))return"optional";if(/^(nee|no|n|0|false|onwaar)$/.test(t))return"no"}}function Ph(e,t,n){const r=new Map(t.filter(i=>i.vendorSku).map(i=>[i.vendorSku,i])),o=new Map(t.map(i=>[i.productId,i])),s=new Map;for(const i of n)for(const a of[i.gtin,...i.barcodes??[]]){const c=a?kt(a):void 0;c&&!s.has(c)&&s.set(c,i)}return e.map(i=>{const a=i.vendorSku?r.get(i.vendorSku):void 0;if(a)return{row:i,offer:a};const c=i.gtin?s.get(i.gtin):void 0;if(!c)return{row:i};const u=o.get(c.id);return u?{row:i,offer:u}:{row:i,product:c}})}function Lh(e,t,n,r=Da,o="week"){const s=new Map,i=[];let a=0;for(const u of e){const{row:d}=u;if(!("offer"in u)){i.push({line:d.line,...d.vendorSku?{vendorSku:d.vendorSku}:{},...d.gtin?{gtin:d.gtin}:{},...d.description?{description:d.description}:{},...d.brand?{brand:d.brand}:{},...d.group?{group:d.group}:{},...d.costCents!==void 0?{costCents:d.costCents}:{},..."product"in u?{productId:u.product.id}:{},...d.offer?{offer:d.offer}:{}});continue}const l=u.offer,p={qty:d.stock===void 0?l.availability?.qty??null:d.stock,at:n,source:"feed",...d.leadDays!==void 0?{leadDays:d.leadDays}:{},freshUntil:n+2*Na[o]},g={availability:p};d.costCents!==void 0&&d.costCents!==l.costCents&&(g.costCents=d.costCents),d.listCents!==void 0&&d.listCents!==l.listCents&&(g.listCents=d.listCents),d.currency&&d.currency!==l.currency&&(g.currency=d.currency),d.lotSize!==void 0&&d.lotSize!==l.lotSize&&(g.lotSize=d.lotSize),d.dropship&&d.dropship!==l.dropship&&(g.dropship=d.dropship),d.vendorSku&&!l.vendorSku&&(g.vendorSku=d.vendorSku),Object.keys(g).length>1||p.qty!==(l.availability?.qty??null)||a++;const m=g.costCents!==void 0&&l.costCents>0?Math.round(Math.abs(g.costCents-l.costCents)/l.costCents*1e3)/10:0;s.set(l.id,{offerId:l.id,set:g,...m>r?{jump:{fromCents:l.costCents,toCents:g.costCents,percent:m}}:{}})}const c=t.filter(u=>u.availability?.source==="feed"&&!s.has(u.id)).map(u=>u.id);return{changes:[...s.values()],unchanged:a,gone:c,unmatched:i}}const Kh={vendorSku:["artikelnummer","artikelnr","artnr","sku","part number","partnumber","item","vendor sku"],gtin:["ean","gtin","barcode","ean13","upc"],description:["omschrijving","description","naam","name","product"],brand:["merk","brand","fabrikant","manufacturer","vendor"],group:["productgroep","groep","categorie","category","product group","productgroup"],cost:["netto","inkoopprijs","inkoop","prijs","price","net price","cost","dealer price"],list:["advies","adviesprijs","msrp","rrp","list price","erp"],currency:["valuta","currency"],stock:["voorraad","stock","qty","quantity","beschikbaar","available"],leadDays:["levertijd","lead time","leadtime","delivery days"],lotSize:["bestelveelvoud","veelvoud","lot size","order multiple","purchaselotsize"],dropship:["dropship","drop shipment","dropshipment","direct leveren"]};function $h(e){const t=e.map(s=>s.trim()),n=new Set,r={},o=s=>{for(const i of gr){if(r[i])continue;const a=t.find(c=>!n.has(c)&&Kh[i].some(u=>s(c.toLowerCase(),u)));a&&(r[i]=a,n.add(a))}};return o((s,i)=>s===i),o((s,i)=>s.startsWith(i)),r}const q=e=>(e??"").toLowerCase().replace(/[^a-z0-9]+/g,"");function xa(e){const t=[];for(const n of e){const r=q(n.sku)||q(n.description),o=t.find(s=>(q(s.sku)||q(s.description))===r);o?(o.quantity+=n.quantity,o.serials.push(...n.serials)):t.push({...n,serials:[...n.serials]})}return t}function Uh(e,t){const n=q(e.orderRef),r=q(e.supplierRef);return n&&t.find(o=>q(o.number)===n)||n&&t.find(o=>q(o.reference)===n)||r&&t.find(o=>q(o.reference)===r)||null}const Be={reference:0,sku:1,description:2,loose:3};function hr(e,t,n){const r=q(e.externalRef);if(r&&q(t.externalRef)===r)return{via:"reference",rank:Be.reference};if(r&&t.externalRef)return null;const o=q(e.sku);if(o&&n.filter(c=>c.id===t.offerId||!!t.productId&&c.productId===t.productId).map(c=>q(c.vendorSku)).filter(Boolean).includes(o))return{via:"sku",rank:Be.sku};const s=q(e.description),i=q(t.name);return!s||!i?null:s===i?{via:"description",rank:Be.description}:i.includes(s)||s.includes(i)?{via:"description",rank:Be.loose}:null}function wa(e,t,n){const r=t.filter(a=>a.kind==="product"),o=new Set,s=[],i=[];return e.forEach((a,c)=>{let u=null;for(const d of r){if(o.has(d.id))continue;const l=hr(a,d,n);l&&(!u||l.rank<u.rank)&&(u={line:d,...l})}if(!u){i.push(c);return}o.add(u.line.id),s.push({docIndex:c,poLineId:u.line.id,via:u.via})}),{matches:s,unmatched:i}}function Bh(e,t,n,r){const o=xa(e.lines);if(!t)return{lines:[],problems:[{code:"slip_no_order"}]};const{matches:s,unmatched:i}=wa(o,t.lines,n),a=s.map(u=>({poLineId:u.poLineId,quantity:o[u.docIndex].quantity,serials:o[u.docIndex].serials,docIndex:u.docIndex,via:u.via})),c=[...ri({movement:"in",lines:a},t.lines,r).filter(u=>u.code!=="receipt_return_over_received").map(u=>({code:u.code,poLineId:u.poLineId,docIndex:a.find(d=>d.poLineId===u.poLineId)?.docIndex})),...i.map(u=>({code:"slip_unknown_item",docIndex:u}))];return{lines:a,problems:c}}function Fh(e){let t;try{t=JSON.parse(e.slice(e.indexOf("{"),e.lastIndexOf("}")+1))}catch{return null}const n=s=>typeof s=="string"||typeof s=="number"?String(s).trim():"",r=(Array.isArray(t.lines)?t.lines:[]).flatMap(s=>{const i=Number(String(s?.quantity??"").replace(",",".")),a=n(s?.description);if(!(i>0)||!a&&!n(s?.sku))return[];const c=[...Array.isArray(s?.serials)?s.serials.map(n):[],...n(s?.serial)?[n(s?.serial)]:[]].filter(Boolean);return[{...n(s?.sku)?{sku:n(s?.sku)}:{},description:a,quantity:i,serials:c}]}),o=n(t.deliveredOn);return{...n(t.supplierRef)?{supplierRef:n(t.supplierRef)}:{},...n(t.orderRef)?{orderRef:n(t.orderRef)}:{},.../^\d{4}-\d{2}-\d{2}$/.test(o)?{deliveredOn:o}:{},lines:r}}const jh=864e5,io=e=>Date.parse([e,"T00:00:00Z"].join(""));function qh(e,t,n,{defaultPeriod:r,invoice:o}){const s=new Map(t.map(l=>[l.id,l.openQty])),i=new Map(t.map(l=>[l.id,l.receivedOpen])),a=[],c=[],u=[],d=new Set;for(const l of e){const p=l.period?{from:io(l.period.from),to:io(l.period.to)+jh}:r,g=E=>!E.term||E.term.from<=p.from&&(E.term.to==null||p.from<E.term.to),f=t.map((E,M)=>({candidate:E,order:M,hit:hr(l,E,n)})).filter(E=>!!E.hit).filter(E=>g(E.candidate)),m=f.filter(E=>ao(E.candidate,o)!==null).filter(E=>!(E.candidate.kind==="contract_line"&&d.has(E.candidate.id))).sort((E,M)=>E.hit.rank-M.hit.rank||E.order-M.order);if(!m.length){f.length?u.push(l.id):c.push(l.id);continue}const _=E=>{const M=ao(E,o);return{receiptLineId:l.id,businessEntityId:E.businessEntityId,...E.productId?{productId:E.productId}:{},...E.use?{use:E.use}:{},...E.customerCompanyId?{customerCompanyId:E.customerCompanyId}:{},...E.dimensions?{dimensions:E.dimensions}:{},...E.ledgerCategoryKey?{ledgerCategoryKey:E.ledgerCategoryKey}:{},...M!==1?{rate:M}:{}}},h=(E,M,B)=>E.variable?null:Dt({kind:"product",quantity:M,unitPriceCents:E.unitPriceCents,discountPercent:E.discountPercent,pricePer:E.pricePer,servicePeriod:B}),y=m[0];if(y.candidate.kind==="contract_line"){const E=y.candidate;d.add(E.id);const M=l.quantity??E.openQty??1;a.push({..._(E),target:{kind:"contract_line",contractId:E.parentId,lineId:E.id,period:p},via:y.hit.via,quantity:M,amountCents:l.netCents,expectedCents:h(E,M,p),overQuantity:E.openQty!=null&&M!==E.openQty});continue}const b=m.filter(E=>E.candidate.kind==="po_line"&&E.hit.rank===y.hit.rank),I=l.quantity??Math.max(1,s.get(y.candidate.id)??1),v=[];let T=I;for(const{candidate:E}of b){if(T<=0)break;const M=Math.max(0,s.get(E.id)??0);if(!M)continue;const B=Math.min(M,T);v.push({candidate:E,quantity:B,over:!1}),s.set(E.id,M-B),T-=B}if(T>0){const E=v[v.length-1];E?(E.quantity+=T,E.over=!0):v.push({candidate:y.candidate,quantity:T,over:!0})}const O=de(l.netCents,v.map(E=>E.quantity));for(const E of v){const M=i.get(E.candidate.id);M!=null&&(E.notReceived=E.quantity>M,i.set(E.candidate.id,M-E.quantity))}v.forEach((E,M)=>{a.push({..._(E.candidate),target:{kind:"po_line",orderId:E.candidate.parentId,lineId:E.candidate.id},via:y.hit.via,quantity:E.quantity,amountCents:O[M],expectedCents:h(E.candidate,E.quantity,l.period?p:void 0),overQuantity:E.over,...E.notReceived?{notReceived:!0}:{}})})}return{allocations:a,unmatched:c,needsRate:u}}function ao(e,t){return!t||!e.currency||e.currency===t.currency?1:e.currency==="EUR"&&t.fxRate&&t.fxRate>0?t.fxRate:null}const Pa={percent:1,cents:100};function Gh(e,t,{tolerance:n=Pa,needsRate:r=[]}={}){const o=[...t.map(i=>({receiptLineId:i,issue:"unmatched"})),...r.map(i=>({receiptLineId:i,issue:"fx_rate_required"}))],s=new Map;for(const i of e)s.set(i.receiptLineId,[...s.get(i.receiptLineId)??[],i]);for(const[i,a]of s){if(a.some(l=>l.overQuantity)&&o.push({receiptLineId:i,issue:"quantity"}),a.some(l=>l.notReceived)&&o.push({receiptLineId:i,issue:"not_received"}),a.some(l=>l.expectedCents===null))continue;const c=a.reduce((l,p)=>l+(p.expectedCents??0),0),u=Math.round(a.reduce((l,p)=>l+p.amountCents*(p.rate??1),0)),d=Math.max(Math.abs(c)*n.percent/100,n.cents);Math.abs(u-c)>d&&o.push({receiptLineId:i,issue:"price",expectedCents:c,amountCents:u})}return{ok:o.length===0&&e.length>0,issues:o}}function Vh(e){const t=[],n=new Map;for(const r of[...e].sort(Wh)){const o=n.get(r.emoji);if(o){o.push(r.actor);continue}t.push(r.emoji),n.set(r.emoji,[r.actor])}return t.map(r=>{const o=n.get(r);return{emoji:r,count:o.length,actors:o}}).sort((r,o)=>o.count-r.count||t.indexOf(r.emoji)-t.indexOf(o.emoji))}const Wh=(e,t)=>(e.createdAt??0)-(t.createdAt??0);function Hh(e,t){return t?e.actors.some(n=>n.type==="user"&&n.id===t):!1}const La=["1a","1b","1c","1d","1e","2a","3a","3b","3c","4a","4b","5a","5b","5c","5g"];function Yh(e){const t=e.taxonomy??"nl-ob",n=new Map(e.codes.map(b=>[b.key,b])),r=n.get(e.standardKey??"high"),o={},s={},i=(b,I)=>{if(!e.trace||!b||!I.ref)return;const v=s[b]??[];v.includes(I.ref)||(s[b]=[...v,I.ref])};let a;const c=(b,I,v)=>{if(!b||!v)return;const T=o[b]??{};T[I]=(T[I]??0)+v,o[b]=T,a&&i(b,a)},u=new Map,d=new Set;let l=0;for(const b of e.lines){const I=b.vatDate??b.taxPointDate;if(I<e.from||I>e.to)continue;const v=n.get(b.taxCode);if(!v){d.add(b.taxCode);continue}const T=v.boxes[t]?.[b.side];if(a=b,b.side==="sales"){if(c(T?.base,"baseCents",b.baseCents),c(T?.tax,"taxCents",b.taxCents),v.icp){const O=[v.icpKind??"services",b.counterpartyCompanyId??""].join("|");u.set(O,(u.get(O)??0)+b.baseCents)}}else if(v.selfAssessed){const O=r?ar(r,b.taxPointDate)??0:0,E=Math.round(b.baseCents*O/100);c(T?.base,"baseCents",b.baseCents),c(T?.tax,"taxCents",E),l+=E,E&&i("5b",b)}else l+=b.taxCents,b.taxCents&&i("5b",b)}const p=La.filter(b=>b<"5"),g=p.reduce((b,I)=>b+(o[I]?.taxCents??0),0);o["5a"]={taxCents:g},o["5b"]={taxCents:l},o["5c"]={taxCents:g-l},o["5g"]={taxCents:g-l};const f=b=>Math.trunc(b/100),m=b=>b>=0?Math.ceil(b/100):Math.floor(b/100),_={};for(const b of p){const I=o[b];I&&(_[b]={...I.baseCents!==void 0?{base:f(I.baseCents)}:{},...I.taxCents!==void 0?{tax:f(I.taxCents)}:{}})}const h=p.reduce((b,I)=>b+(_[I]?.tax??0),0),y=m(l);return _["5a"]={tax:h},_["5b"]={tax:y},_["5c"]={tax:h-y},_["5g"]={tax:h-y},{boxes:o,euros:_,icp:[...u.entries()].filter(([,b])=>b!==0).map(([b,I])=>{const[v,T]=b.split("|");return{...T?{counterpartyCompanyId:T}:{},kind:v,baseCents:I}}),unknownCodes:[...d],...e.trace?{refs:s}:{}}}function zh(e,t="quarter"){const n=t==="quarter"?3:t==="month"?1:12,r=s=>String(s).padStart(2,"0"),o=(s,i)=>new Date(Date.UTC(s,i,0)).getUTCDate();return Array.from({length:12/n},(s,i)=>{const a=i*n+1,c=a+n-1,u=c===12?e+1:e,d=c===12?1:c+1;return{label:t==="quarter"?`Q${i+1} ${e}`:t==="month"?`${e}-${r(a)}`:String(e),from:`${e}-${r(a)}-01`,to:`${e}-${r(c)}-${r(o(e,c))}`,dueOn:t==="year"?`${e+1}-03-31`:`${u}-${r(d)}-${r(o(u,d))}`}})}const Xh=e=>new Date(Date.parse(`${e}T00:00:00Z`)+864e5).toISOString().slice(0,10);function Qh(e,t,n){const r=n.filter(s=>s.filedAt<=t).reduce((s,i)=>i.to>s?i.to:s,""),o=r?Xh(r):"";return o>e?o:e}class yr extends Error{constructor(t){super(t),this.name="UnresolvedRefError"}}const Zh=/^\{\{\s*([\w.]+)\s*\}\}$/,Jh=/\{\{\s*([\w.]+)\s*\}\}/g,ey=/\$[A-Za-z_][\w]*\.[\w.]+/;function ty(e,t,n={}){return pt(e,t,n)}function pt(e,t,n={}){return typeof e=="string"?ny(e,t,n):Array.isArray(e)?e.map(r=>pt(r,t,n)):e&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([r,o])=>[r,pt(o,t,{...n,where:`${n.where??"een parameter"} "${r}"`})])):e}function ny(e,t,n){const r=n.onMissing==="throw";if(r){const s=e.match(ey);if(s)throw new yr(`"${s[0]}" in ${n.where??"een waarde"} is de oude schrijfwijze; gebruik {{ ${s[0].slice(1)} }}.`)}const o=e.match(Zh);if(o){const s=co(t,o[1],e,n);return s===void 0&&!r?"":s}return e.replace(Jh,(s,i)=>{const a=co(t,i,s,n);return a==null?"":typeof a=="object"?JSON.stringify(a):String(a)})}function co(e,t,n,r){const o=t.split(".")[0]??"";if(r.onMissing==="throw"&&!Object.hasOwn(e,o)){const s=Object.keys(e);throw new yr(`onbekende verwijzing ${n} in ${r.where??"een waarde"}: "${o}" bestaat niet. Beschikbaar: ${s.length?s.join(", "):"(nog niets)"}`)}return ry(e,t)}function ry(e,t){let n=e;for(const r of t.split(".")){if(n==null||typeof n!="object")return;n=n[r]}return n}const oy=new Set(["filled","empty"]);function sy(){return{kind:"rule",op:"==",varPath:"",value:""}}const iy=new Set(["==","!=",">","<",">=","<="]);function Xt(e){return!!e&&typeof e=="object"&&"var"in e&&typeof e.var=="string"}function uo(e){const t=typeof e;return t==="string"||t==="number"||t==="boolean"}function Ka(e){if(e===!0||e==null)return{kind:"group",op:"and",children:[]};if(e===!1)return null;const t=kn(e);return t?t.kind==="group"?t:{kind:"group",op:"and",children:[t]}:null}function kn(e){if(typeof e!="object"||e===null)return null;const t=Object.keys(e);if(t.length!==1)return null;const n=t[0],r=e[n];if(n==="and"||n==="or"){if(!Array.isArray(r))return null;const o=[];for(const s of r){const i=kn(s);if(!i)return null;o.push(i)}return{kind:"group",op:n,children:o}}if(n==="!!"||n==="!"){const o=Array.isArray(r)?r.length===1?r[0]:void 0:r;if(Xt(o))return{kind:"rule",op:n==="!!"?"filled":"empty",varPath:o.var,value:""};if(n==="!!")return null;const s=kn(r);return s?{kind:"not",child:s}:null}if(n==="in"){if(!Array.isArray(r)||r.length!==2)return null;const[o,s]=r;return!Xt(s)||!uo(o)?null:{kind:"rule",op:"in",varPath:s.var,value:o}}if(iy.has(n)){if(!Array.isArray(r)||r.length!==2)return null;const[o,s]=r;return!Xt(o)||!uo(s)?null:{kind:"rule",op:n,varPath:o.var,value:s}}return null}function We(e){return e.kind==="group"?e.children.length===0?!0:e.children.length===1?We(e.children[0]):{[e.op]:e.children.map(We)}:e.kind==="not"?{"!":We(e.child)}:e.op==="filled"?{"!!":[{var:e.varPath}]}:e.op==="empty"?{"!":[{var:e.varPath}]}:e.op==="in"?{in:[e.value,{var:e.varPath}]}:{[e.op]:[{var:e.varPath},e.value]}}function ay(e){const t=Ka(e);return t&&On(t)||null}function On(e){if(e.kind==="group"){const t=e.children.map(On).filter(Boolean);return t.length===0?"":t.length===1?t[0]:t.join(e.op==="and"?" && ":" || ")}return e.kind==="not"?`!(${On(e.child)})`:e.op==="filled"?`$${e.varPath}`:e.op==="empty"?`!$${e.varPath}`:e.op==="in"?`${JSON.stringify(e.value)} in $${e.varPath}`:`$${e.varPath} ${e.op} ${JSON.stringify(e.value)}`}const Qt=[{min:0,max:59},{min:0,max:23},{min:1,max:31},{min:1,max:12},{min:0,max:7}];function cy(e,t,n){const r=new Set;for(const o of e.split(",")){const[s,i]=o.split("/"),a=i===void 0?1:Number(i);if(!Number.isInteger(a)||a<1)return null;let c=t,u=n;if(s!=="*"&&s!==void 0){const[d,l]=s.split("-");if(c=Number(d),u=l===void 0?c:Number(l),!Number.isInteger(c)||!Number.isInteger(u)||(l===void 0&&i!==void 0&&(u=n),c<t||u>n||c>u))return null}for(let d=c;d<=u;d+=a)r.add(d)}return r.size?r:null}function br(e){const t=e.trim().split(/\s+/);if(t.length!==Qt.length)return null;const n=[];for(let c=0;c<Qt.length;c++){const u=Qt[c],d=t[c];if(!u||d===void 0)return null;const l=cy(d,u.min,u.max);if(!l)return null;n.push(l)}const[r,o,s,i,a]=n;return a.has(7)&&a.add(0),{minute:r,hour:o,dayOfMonth:s,month:i,dayOfWeek:a,anyDayOfMonth:t[2]==="*",anyDayOfWeek:t[4]==="*"}}function uy(e){return br(e)!==null}function $a(e,t){const n=br(e);if(!n||!n.minute.has(t.getUTCMinutes())||!n.hour.has(t.getUTCHours())||!n.month.has(t.getUTCMonth()+1))return!1;const r=n.dayOfMonth.has(t.getUTCDate()),o=n.dayOfWeek.has(t.getUTCDay());return n.anyDayOfMonth&&n.anyDayOfWeek?!0:n.anyDayOfMonth?o:n.anyDayOfWeek?r:r||o}const Ua="@schedule",Mn=3;function Ba(e,t,n){const r=[],o=e.depth??0;if(o>=Mn)return{matched:[],skipped:t.map(a=>({ruleId:a.id,reason:`keten te diep (${o} van ${Mn})`}))};const s={event:e.payload,subject:e.subject??{}},i=[];for(const a of t){if(!a.enabled){r.push({ruleId:a.id,reason:"staat uit"});continue}if(a.trigger.kind==="schedule"){if(e.name!==Ua){r.push({ruleId:a.id,reason:"luistert op de klok"});continue}const c=typeof e.payload?.at=="number"?e.payload.at:Number.NaN;if(!Number.isFinite(c)){r.push({ruleId:a.id,reason:"tik zonder tijdstip"});continue}if(!$a(a.trigger.cron,new Date(c))){r.push({ruleId:a.id,reason:`niet aan de beurt (${a.trigger.cron})`});continue}}else if(a.trigger.kind!=="event"){r.push({ruleId:a.id,reason:`trigger "${a.trigger.kind}" draait hier niet`});continue}else if(a.trigger.name!==e.name){r.push({ruleId:a.id,reason:`luistert op ${a.trigger.name}`});continue}if(e.causedByRule===a.id){r.push({ruleId:a.id,reason:"dit event komt van deze regel zelf"});continue}if(!n(a.when??null,s)){r.push({ruleId:a.id,reason:"voorwaarde niet waar"});continue}i.push({rule:a,idempotencyKey:`${e.id}:${a.id}:${a.version}`})}return{matched:i,skipped:r}}function ly(e,t){return{causedByRule:t,depth:(e.depth??0)+1}}function dy(e,t){const{event:n,rules:r}=e.input,{matched:o,skipped:s}=Ba(n,r,t),i=o.flatMap(u=>u.rule.then.map(d=>d.action)),a=e.expected?.actions??[];if(i.length===a.length&&i.every((u,d)=>u===a[d]))return{caseId:e.id,ok:!0};const c=s.map(u=>`${u.ruleId}: ${u.reason}`).join(" · ");return{caseId:e.id,ok:!1,got:i,note:a.length?`verwacht [${a.join(", ")}], kreeg [${i.join(", ")}]${c?` — ${c}`:""}`:`mocht niet vuren, maar deed [${i.join(", ")}]`}}function fy(e,t){return e.wrote&&t in e.wrote?e.wrote[t]:t in e.params?e.params[t]:""}function Fa(e,t){return e.fields.filter(n=>t?.[n]!==void 0&&t[n]!==fy(e,n))}function py(e,t,n){return n?"undone":!t||!e.length?"unknown":e.some(r=>Fa(r,t).length)?"corrected":"kept"}function my(e){return e==="string[]"?["in"]:e==="boolean"?["==","!="]:e==="number"||e==="date"?["==","!=",">","<",">=","<="]:["==","!=","in","filled","empty"]}function gy(e){return`subject.${e.path}`}function hy(e,t){return e.events.find(n=>n.name===t)}function yy(e,t){return e.filter(n=>ya(t,n.path)===void 0).map(n=>n.path)}const Rn=6e4,by=36e5,Ne=864e5,ja=800;function lo(e,t){const n=Date.UTC(e,t+1,0);return n-new Date(n).getUTCDay()*Ne+by}function _y(e){const t=new Date(e).getUTCFullYear();return e>=lo(t,2)&&e<lo(t,9)}function qa(e,t){const n=t.dst==="eu"&&_y(e)?60:0;return(t.utcOffsetMinutes+n)*Rn}function Iy(e){return(e+3)%7+1}function Ga(e,t){const n=qa(e,t),r=e+n,o=Math.floor(r/Ne);if(!t.days.includes(Iy(o)))return null;const s=o*Ne;return{open:s+t.fromMinutes*Rn-n,close:s+t.toMinutes*Rn-n}}function Va(e,t){const n=qa(e,t),r=e+n;return(Math.floor(r/Ne)+1)*Ne-n}function mt(e,t,n){if(t<=e)return 0;if(!n)return t-e;let r=0,o=e;for(let s=0;s<ja&&o<t;s++){const i=Ga(o,n);if(i){const a=Math.max(o,i.open),c=Math.min(t,i.close);c>a&&(r+=c-a)}o=Va(o,n)}return r}function wt(e,t,n){if(!n)return e+t;let r=t,o=e;for(let s=0;s<ja;s++){const i=Ga(o,n);if(i){const a=Math.max(o,i.open);if(i.close>a){const c=i.close-a;if(r<=c)return a+r;r-=c}}o=Va(o,n)}return e+t}function Ey(e){const t=/^([01]\d|2[0-3]):([0-5]\d)$/.exec(e);return t?Number(t[1])*60+Number(t[2]):null}const gt=1,ht=2,yt=4;function Sy(e){return e==="snoozed"?gt:ht}function Pt(e){const t=e.calendar;return t&&Array.isArray(t.days)?t:null}const Ay=["speed_of_answer","first_response","next_response","resolution","close"],vy=["snoozed","waiting_for_customer"],Cy=6e4,Wa=["speed_of_answer","first_response","next_response"],Ty=[...Wa,"resolution","close"];function Pe(e){return e.state==="running"||e.state==="paused"}function ky(e,t){return Pe(e)?{state:(e.state==="paused"?e.remainingMs>0:t<=e.dueAt)?"hit":"missed",settledAt:Math.max(t,e.startedAt)}:null}function fo(e){return Pe(e)?{state:"void"}:null}function Oy(e,t,n,r){if(!Pe(e)||(e.pauseBits&t)!==0)return null;const o=e.pauseBits|t;return e.state==="paused"?{pauseBits:o}:{pauseBits:o,state:"paused",remainingMs:mt(n,e.dueAt,r)}}function My(e,t,n,r){if(!Pe(e)||(e.pauseBits&t)===0)return null;const o=e.pauseBits&~t;return o!==0?{pauseBits:o}:{pauseBits:o,state:"running",dueAt:wt(n,e.remainingMs,r)}}function Ry({event:e,at:t,now:n,clocks:r,profile:o}){const s=Pt(o),i=Math.min(t,n),a=r.map(h=>({...h})),c=[],u=(h,y)=>{y&&(c.push({op:"patch",clockId:h.id,patch:y}),Object.assign(h,y))},d=h=>{for(const y of a)y.metric===h&&u(y,ky(y,i))},l=h=>{for(const y of a)h.includes(y.metric)&&u(y,fo(y))},p=h=>{for(const y of a)u(y,Oy(y,h,i,s))},g=h=>{for(const y of a)u(y,My(y,h,i,s))},f=h=>a.reduce((y,b)=>b.metric===h?Math.max(y,b.attempt):y,0)+1,m=h=>a.some(y=>y.metric===h&&Pe(y)),_=(h,y)=>{const b=o.targets.find(v=>v.metric===h);if(!b)return;const I=b.minutes*Cy;c.push({op:"start",metric:h,attempt:f(h),startedAt:y,targetMs:I,dueAt:wt(y,I,s)})};switch(e){case"apply":{for(const h of a)h.profileId!==o.id&&u(h,fo(h));for(const h of o.targets){if(h.metric==="next_response")continue;a.some(b=>b.metric===h.metric&&b.profileId===o.id)||_(h.metric,i)}break}case"answered":d("speed_of_answer");break;case"outbound":{d("first_response"),d("next_response"),o.pauseOn.includes("waiting_for_customer")&&p(ht);break}case"inbound":{g(ht),!m("first_response")&&!m("next_response")&&_("next_response",i);break}case"resolved":d("resolution");break;case"closed":d("close"),d("resolution"),l(Wa);break;case"reopened":m("resolution")||_("resolution",i),m("close")||_("close",i);break;case"snoozed":o.pauseOn.includes("snoozed")&&p(gt);break;case"unsnoozed":g(gt);break;case"hold":p(yt);break;case"unhold":g(yt);break;case"discarded":l(Ty);break}return c}function Ha(e){return e.state==="running"||e.state==="paused"}function Ny(e){return(e.pauseBits&yt)!==0}function bt(e,t){const n=Pt(e);return e.state==="paused"?e.remainingMs:t>=e.dueAt?-mt(e.dueAt,t,n):mt(t,e.dueAt,n)}function Dy(e,t){return e.state==="paused"?wt(t,e.remainingMs,Pt(e)):e.dueAt}function xy(e,t){const n=e.filter(Ha);if(!n.length)return;const r=n.filter(s=>s.state==="running");return(r.length?r:n).reduce((s,i)=>bt(i,t)<bt(s,t)?i:s)}function wy(e,t){if(e.state==="missed")return"breached";if(e.state==="hit")return"met";if(e.state==="paused")return"paused";if(e.state==="void")return"met";const n=bt(e,t);return n<=0?"breached":n<=e.targetMs/5?"urgent":"running"}function Py(e){const t=Math.floor(Math.abs(e)/1e3),n=Math.floor(t/86400),r=Math.floor(t%86400/3600),o=Math.floor(t%3600/60);return n?r?`${n}d ${r}u`:`${n}d`:r?o?`${r}u ${o}m`:`${r}u`:o?`${o}m`:`${t%60}s`}const Ya="strategy_item";function _r(e){return`${Ya}:${e}`}function Ly(e,t=25){const n=new Set([_r(e.id)]);for(const r of e.ancestorKeys??[])n.add(r);return Array.from(n).slice(0,t)}function Ky(e){return e?[...e.ancestorKeys??[],_r(e.id)]:[]}const Le=[{key:"area",label:"level_area",order:10,measurable:!1,icon:"compass"},{key:"objective",label:"level_objective",order:20,measurable:!0,icon:"target"},{key:"key_result",label:"level_key_result",order:30,measurable:!0,icon:"gauge"}],za=999,Xa=7;function Qa(e,t=Le){return t.find(n=>n.key===e)}function _t(e,t=Le){return Qa(e,t)?.order??za}function $y(e,t,n=Le){return _t(t,n)<=_t(e,n)}function Uy(e,t=Le){const n=_t(e,t);return t.filter(o=>o.order>n).sort((o,s)=>o.order-s.order)[0]?.key??e}function By(e){const t=e.trim().toLowerCase();return t?t.includes("key result")||t.includes("keyresult")||t==="kr"?"key_result":t.includes("objective")||t.includes("goal")||t.includes("doel")?"objective":t.includes("focus")||t.includes("area")||t.includes("theme")?"area":null:null}const Nn={pending:"open",on_track:"open",at_risk:"open",off_track:"open",paused:"paused",achieved:"closed",missed:"closed"};function Fy(e){return Nn[e]??"open"}function jy(e){return Object.keys(Nn).filter(t=>e.includes(Nn[t]))}const qy=864e5,Lt=e=>e<=0?0:e>1?1:e;function Gy(e,t){const{direction:n}=e,r=e.startValue??0,o=e.targetValue??0;if(!Number.isFinite(t))return 0;const s=n==="down"?t<=o:t>=o,i=o-r;return(n==="down"?i<0:i>0)?Lt((t-r)/i):s?1:0}function Vy(e,t){const{startDate:n,targetDate:r}=e;if(!(typeof n!="number"||typeof r!="number")&&!(r<=n))return Lt((t-n)/(r-n))}const Za=.1,Ja=.25;function Wy(e,t){if(typeof e!="number"||typeof t!="number")return;if(e>=1)return"achieved";const n=t-e;return n>=Ja?"off_track":n>=Za?"at_risk":"on_track"}function Hy(e,t){if(t)return Lt(e/t)}function Yy(e){const t=e.map(n=>n.progress?.ratio).filter(n=>typeof n=="number"&&Number.isFinite(n));if(t.length)return Lt(t.reduce((n,r)=>n+r,0)/t.length)}function zy(e,t){const n=e.lastCheckInAt??e.createdAt;if(typeof n!="number")return 0;const r=(e.checkInEveryDays??Xa)*qy,o=t-n-r;return o>0?o:0}function Xy(e){return e.targetDate??Number.MAX_SAFE_INTEGER}function Qy(e){const t=new Map,n=[...e].sort((r,o)=>r.startedAt-o.startedAt);for(const r of n){const o=`${r.workType??""}|${r.scopeKey??""}`,s=t.get(o)??{workType:r.workType,scopeKey:r.scopeKey,scopeLabel:r.scopeLabel,seconds:0,hours:0,entryIds:[],from:r.startedAt,to:r.startedAt};s.seconds+=r.durationSeconds??0,s.hours=Math.round(s.seconds/3600*100)/100,s.entryIds.push(r.id),s.to=r.startedAt,t.set(o,s)}return[...t.values()]}function Zy(e,t){const n=e.accumulatedSeconds||0;return e.runningSince?n+Math.max(0,Math.floor((t-e.runningSince)/1e3)):n}function Jy(e,t){const n=Math.max(1,Math.ceil(Math.max(0,e)/60));if(!t||t==="exact")return n*60;const r=Number(t);return!Number.isFinite(r)||r<=0?n*60:Math.ceil(n/r)*r*60}function eb(e){const t=Math.max(0,Math.round(e/60));return`${Math.floor(t/60)}:${String(t%60).padStart(2,"0")}`}function tb(e){const t=Math.max(0,Math.floor(e)),n=s=>String(s).padStart(2,"0"),r=Math.floor(t/60)%60,o=Math.floor(t/3600);return o>0?`${o}:${n(r)}:${n(t%60)}`:`${n(r)}:${n(t%60)}`}function ec(e){return(e||"").normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").slice(0,48).replace(/^-+|-+$/g,"")}function nb(e,t){const n=ec(e)||"werksoort",r=new Set(t);if(!r.has(n))return n;for(let o=2;o<500;o++){const s=`${n}-${o}`;if(!r.has(s))return s}return`${n}-${r.size+1}`}function rb(e,t){const n=e.ownerScope;return!n||n.kind==="org"?!0:t.includes(n.teamId)}function ob(e){return e.filter(t=>!t.archived).sort(tc)}function tc(e,t){const n=(e.order??0)-(t.order??0);return n!==0?n:(e.label||"").localeCompare(t.label||"")}const nc=20,rc=20,He=300;function ce(e){return e.toLowerCase().replace(/[^\p{L}\p{N}\s]/gu," ").replace(/\s+/g," ").trim()}function oc(e){const t=e.replace(/\s+/g," ").trim();if(t.length<=He)return t;const n=t.slice(0,He),r=Math.max(n.lastIndexOf(". "),n.lastIndexOf("! "),n.lastIndexOf("? "));return r>He*.6?n.slice(0,r+1):`${n.trimEnd()}…`}function sb(e,t){const n=oc(t.text),r=ce(n);if(!r||(e.examples??[]).some(i=>ce(i)===r))return null;const o=e.exampleCandidates??[],s=o.findIndex(i=>ce(i.text)===r);if(s>=0){if(o[s].corrected||!t.corrected)return null;const i=[...o];return i[s]={...i[s],corrected:!0,addedAt:t.addedAt},po(i)}return po([{...t,text:n},...o]).slice(0,rc)}function po(e){return[...e].sort((t,n)=>Number(n.corrected)-Number(t.corrected)||n.addedAt-t.addedAt)}function ib(e,t){const n=ce(t),r=(e.examples??[]).filter(s=>s.trim());return{examples:r.some(s=>ce(s)===n)?r:[...r,t].slice(-nc),exampleCandidates:sc(e,t)}}function sc(e,t){const n=ce(t);return(e.exampleCandidates??[]).filter(r=>ce(r.text)!==n)}function ic(e,t){const n=e.ownerScope;return n?n.kind==="org"?!0:n.kind==="team"?!!t&&n.teamId===t:!1:!1}function ab(e,t){return e.filter(n=>ic(n,t))}const ac=["apps","settings","wake"],Kt="businessEntityId";function cb(e,t){const n=e.normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40)||"workspace",r=new Set([...cc.map(s=>s.key),...ac,...t]);let o=n;for(let s=2;r.has(o);s++)o=`${n}-${s}`;return o}function ub({app:e,requested:t,current:n,isRecord:r,index:o}){const s=o.byApp[e]??[],i=a=>!!a&&(s.includes(a)||r&&a!=="apps"&&o.visible.includes(a));return i(t)?t:i(n)?n:s[0]??"apps"}const cc=[{key:"home",owner:"assist",icon:"HomeMark",order:10,sections:["home"]},{key:"inbox",owner:"communication",icon:"InboxMark",order:20,sections:["inbox"]},{key:"work",owner:"work",icon:"WorkMark",order:30,sections:["work","planning","time"]},{key:"files",owner:"storage",icon:"FilesMark",order:40,sections:["files"]},{key:"customers",owner:"crm",icon:"CrmMark",order:50,sections:["customers"]},{key:"sales",owner:"sales",icon:"SalesMark",order:60,sections:["sales","delivery","receivables","assortment"]},{key:"purchase",owner:"purchase",icon:"ShoppingCart",order:70,sections:["purchase","contracts","assortment"]},{key:"finance",owner:"finance",icon:"Wallet",order:80,sections:["finance","receivables","reports","ledger"]},{key:"knowledge",owner:"kb",icon:"KnowledgeMark",order:90,sections:["knowledge"]},{key:"reports",owner:"analytics",icon:"AnalyticsMark",order:100,sections:["reports"]}];function lb(e,t){const n=e.search(/[?#]/),r=n<0?e:e.slice(0,n),o=n<0?"":e.slice(n),[s,i,...a]=r.split("/").filter(Boolean);return!s||s!=="apps"&&s!=="settings"&&!t(s)?null:{workspace:s,...i?{app:i}:{},path:`/${a.join("/")}${o}`}}function db({workspace:e,app:t,path:n}){if(!t)return`/${e}`;const o=n==="/"||n===""||/^\/?[?#]/.test(n)?n.replace(/^\//,""):n.startsWith("/")?n:`/${n}`;return`/${e}/${t}${o}`}const uc=["invoice","credit_note"];function fb(e){return!!e.issuedAt&&uc.includes(e.kindKey)}function pb(e,t="sales"){const n=i=>e.totals?.byRate?.find(a=>a.taxRateKey===i),r=e.issuedPaper?.counterparty,o=r?.address??e.issuedPaper?.billingAddress,s=[o?.street,o?.houseNumber].filter(Boolean).join(" ");return{sourceApp:t,documentId:e.id,...e.businessEntityId?{path:`/apps/${t}/${G(e.kindKey).path}/${e.id}?${Kt}=${encodeURIComponent(e.businessEntityId)}`}:{},direction:"sale",kind:e.kindKey==="credit_note"?"credit_note":"invoice",businessEntityId:e.businessEntityId,...e.number?{number:e.number}:{},counterparty:{companyId:r?.companyId||Tt(e),...r?.number?{number:r.number}:{},name:r?.name??"",...r?.vatNumber?{vatNumber:r.vatNumber}:{},...r?.kvkNumber?{kvkNumber:r.kvkNumber}:{},...o?{address:{...s?{street:s}:{},...o.postalCode?{postalCode:o.postalCode}:{},...o.city?{city:o.city}:{},...o.country?{country:o.country}:{}}}:{},...o?.country?{country:o.country}:{}},issueDate:ae(e.issuedAt??Date.now()),...e.dueAt?{dueDate:ae(e.dueAt)}:{},currency:e.currency,...e.fxRate?{fxRate:e.fxRate}:{},lines:e.lines.filter(i=>i.kind==="product"&&!i.optional).map(i=>{const a=e.taxOverrideKey??i.taxRateKey,c=n(a);return{description:i.name,netCents:i.netCents,taxCents:i.taxCents,taxRateKey:a,taxKind:c?.kind??"standard",...c?.percent!==void 0?{taxPercent:c.percent}:{},...i.ledgerCategoryKey?{ledgerCategoryKey:i.ledgerCategoryKey}:{},...i.productId?{productId:i.productId}:{},dimensions:{customerCompanyId:e.companyId,...i.dimensions},...i.costPriceCents!=null?{costCents:Math.round(i.costPriceCents*i.quantity)}:{},...i.servicePeriod?{period:{from:ae(i.servicePeriod.from),to:ae(i.servicePeriod.to-864e5)}}:{}}}),totals:{netCents:e.totals?.netCents??0,taxCents:e.totals?.taxCents??0,grossCents:e.totals?.grossCents??0},...e.kindKey==="credit_note"&&e.sourceTransactionId?{creditsDocumentId:e.sourceTransactionId}:{},...e.externalIds?.length?{externalIds:e.externalIds}:{}}}function mb(e,t={}){const n=G(e.kindKey),r=e.totals??{netCents:0,taxCents:0,grossCents:0,byRate:[]};return{customer:{name:t.companyName??"",contact:t.contactName??"",vat_number:t.companyVatNumber??"",number:t.companyNumber??"",address:yb(t.companyAddress),street:t.companyAddress?.street??"",house_number:t.companyAddress?.houseNumber??"",postal_code:t.companyAddress?.postalCode??"",city:t.companyAddress?.city??"",country:t.companyAddress?.country??""},organization:{name:t.organizationName??""},[n.key]:{number:e.number??"",credited_number:t.creditedNumber??"",title:e.title??"",reference:e.reference??"",version:String(e.version??1),date:ge(e.issuedAt),valid_until:ge(e.expiresAt),due_date:ge(e.dueAt),delivery_date:ge(e.deliveredAt),period_from:ge(e.periodFrom),period_to:ge(e.periodTo),payment_term:e.paymentTerm?.label??"",reverse_charge:r.byRate.some(o=>o.kind==="reverse_charge"||o.taxRateKey==="reverse_charge"),note:e.introText??"",terms:e.termsText??""},totals:{net:J(r.netCents),tax:J(r.taxCents),gross:J(r.grossCents)}}}function gb(e,t=[],n=lc){const r=e.totals??{netCents:0,grossCents:0,byRate:[]},o=u=>t.find(d=>d.key===u)?.percent??0,s=(e.lines??[]).some(u=>u.kind==="product"&&(u.discountPercent??0)>0),i=u=>s?[u.discountPercent?[String(u.discountPercent).replace(".",","),"%"].join(""):""]:[],a={block_id:"lines",type:"table",columns:[{label:n.description},{label:n.quantity,align:"right"},{label:n.unitPrice,align:"right"},...s?[{label:n.discount,align:"right"}]:[],{label:n.net,align:"right"}],rows:(e.lines??[]).map(u=>u.kind==="text"?[u.name,"","",...s?[""]:[],""]:[hb(u.name,u.description,u.optional,n.optional),bb(u,n),Vn(u)?"":u.pricePer?[J(u.unitPriceCents),n.per[u.pricePer]].join(" "):J(u.unitPriceCents),...i(u),J(u.netCents)])},c={block_id:"totals",type:"totals",rows:[{label:n.net,amount:J(r.netCents)},{label:n.gross,amount:J(r.grossCents),emphasis:!0}],taxRows:r.byRate.map(u=>({label:`${n.tax} ${u.percent??o(u.taxRateKey)}%`,amount:J(u.taxCents)}))};return{lines:[a],totals:[c]}}const lc={description:"Omschrijving",optional:"optioneel",quantity:"Aantal",unitPrice:"Stuksprijs",discount:"Korting",per:{month:"per maand",quarter:"per kwartaal",year:"per jaar"},units:{second:"s",minute:"min",hour:"uur",message:"berichten",gigabyte:"GB"},net:"Netto",tax:"Btw",gross:"Totaal"};function hb(e,t,n,r){const o=t?`${e} — ${t}`:e;return n?`${o} (${r})`:o}function yb(e){return e?.street?[e.street,e.houseNumber].filter(Boolean).join(" "):""}function bb(e,t){const n=Vn(e);return n?[mo(n.amount),t.units[n.unit]??n.unit].join(" "):mo(e.quantity)}function mo(e){return Number.isInteger(e)?String(e):String(e).replace(".",",")}function ge(e){if(!e)return"";const t=new Date(e),n=r=>String(r).padStart(2,"0");return`${n(t.getDate())}-${n(t.getMonth()+1)}-${t.getFullYear()}`}function dc(e){const t=G(e),n=t.key,r=t.numbered;return[{block_id:"head",type:"letterhead",fields:[...r?[{key:"number",label:Ib[n]?.number??"Nummer",value:`{${n}.number}`}]:[],{key:"date",label:"Datum",value:`{${n}.date}`},...r?[{key:"due_date",label:"Vervaldatum",value:`{${n}.due_date}`}]:[{key:"valid_until",label:"Geldig tot",value:`{${n}.valid_until}`}],...t.credits?[{key:"credited_number",label:`Op ${G(t.credits).name.toLowerCase()}`,value:`{${n}.credited_number}`}]:[],{key:"reference",label:"Referentie",value:`{${n}.reference}`}],recipient:["{customer.name}","{customer.contact}","{customer.address}","{customer.postal_code} {customer.city}"]},{block_id:"title",type:"heading",level:1,text:`{${n}.title}`},{block_id:"intro",type:"paragraph",text:go[n]??go.quote},{block_id:"period",type:"paragraph",text:`Periode: {${n}.period_from} t/m {${n}.period_to}`},{block_id:"note",type:"paragraph",text:`{${n}.note}`},{block_id:"lines",type:"table",columns:[{label:""}],rows:[]},{block_id:"totals",type:"totals",rows:[]},...r?[{block_id:"reverse_charge",type:"paragraph",text:"Btw verlegd. Btw-nummer afnemer: {customer.vat_number}."},{block_id:"payment",type:"paragraph",text:`Betaling: {${n}.payment_term}. Wij verzoeken u het bedrag vóór {${n}.due_date} over te maken onder vermelding van {${n}.number}.`}]:[],{block_id:"terms",type:"paragraph",text:ho[n]??ho.quote}]}const _b=e=>({note:{key:`${G(e).key}.note`,exists:!0},period:{key:`${G(e).key}.period_from`,exists:!0},reverse_charge:{key:`${G(e).key}.reverse_charge`,exists:!0}}),Ib={invoice:{number:"Factuurnummer"},credit_note:{number:"Creditnotanummer"}},go={quote:`Beste {customer.contact},
|
|
11
|
+
`:t==="mail"?"<br><br>-- <br>":"<br><br>"}${o.body}`:n}const df=["billing","delivery","site","visit"];function ff(e,t){const n=e.filter(o=>!o.archived),r=o=>n.find(s=>s.primaryFor?.includes(o))??n.find(s=>s.kinds.includes(o));return r(t)??(t==="delivery"?r("billing"):void 0)}function Bs(e){return e.replace(/[^A-Za-z0-9]/g,"").toUpperCase()}function pf(e){return e.replace(/[^A-Za-z0-9]/g,"").toUpperCase()}function mf(e){const t=[];for(const n of e){if(typeof n!="string")continue;const r=Bs(n);r&&!t.includes(r)&&t.push(r)}return t}const gf=["customer","supplier"],hf=e=>e==="customer"?"sales":"purchase";function yf(e){return e.endpoints??[]}const bf=["lead","opportunity","customer","former"],_f=["new","working","unqualified"];function If(e){return[e.firstName,e.lastName].filter(Boolean).join(" ").trim()}const js=["stages","leadStatuses","sources","scopes","cities","parentCompanyIds","roles"],qs=["openDeal","hasContacts"],Ef={contact:["stages","leadStatuses","sources","scopes","cities","openDeal"],company:["stages","sources","scopes","cities","parentCompanyIds","roles","hasContacts"]},Sf=["updatedAt","createdAt","name"],Af=["list"];function vf(e){return e.search?.trim()||e.createdWithinDays||qs.some(t=>e[t])||js.some(t=>e[t]?.length)?!1:!Object.values(e.fields??{}).some(t=>t.length)}const Gs="CRM_NOTE_ADDED",Cf="crm_activity",Ws="CRM_CALL_LOGGED",Tf="CRM_STAGE_CHANGED",kf=["phone","meeting","video"],Of=["callback","interested","no_answer","not_interested"],Mf=e=>e===Gs||e===Ws,Rf=e=>e.payload.call?.at??e.createdAt??0;function ue(e){const t=(e??"").trim().toLowerCase();if(t)return t.split(/[-_]/)[0]||void 0}function Nf(e){return ue(e.contactLocale)??ue(e.companyLocale)??ue(e.organizationLocale)}function Df(e,t,n,r){const o=e.filter(a=>a.key===t&&!a.archived);if(o.length===0)return;const s=ue(n),i=ue(r);return o.find(a=>ue(a.locale)===s)??o.find(a=>ue(a.locale)===i)??o.find(a=>!a.locale)??o[0]}const xf=/\{([a-zA-Z0-9_.]+)\}/g;function Vn(e,t){let n=e;for(const r of t.split(".")){if(n==null||typeof n!="object")return;n=n[r]}return n}function wf(e){return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function Vs(e,t,n){const r=[];return{text:e.replace(xf,(s,i)=>{const a=Vn(t,i);return a==null||a===""?(r.includes(i)||r.push(i),n??`{${i}}`):wf(a)}),unresolved:r}}function Hs(e,t){if(!e)return!0;const n=Vn(t,e.key);if(e.exists!==void 0){const r=n!=null&&n!==""&&n!==!1;return e.exists?r:!r}return e.equals!==void 0?n===e.equals:!0}function Pf(e,t,n,r,o){const s=[],i=[],a=new Set,c=u=>{const d=Vs(u,t,o);for(const l of d.unresolved)s.includes(l)||s.push(l);return d.text};for(const u of e){if(u.block_id&&!Hs(n?.[u.block_id],t))continue;const d=u.block_id?r?.[u.block_id]:void 0;if(d&&u.block_id){a.add(u.block_id),i.push(...d);continue}switch(u.type){case"heading":case"paragraph":case"quote":i.push({...u,text:c(u.text)});break;case"callout":i.push({...u,...u.title?{title:c(u.title)}:{},text:c(u.text)});break;case"code":i.push(u);break;case"list":i.push({...u,items:u.items.map(l=>({...l.lead?{lead:c(l.lead)}:{},text:c(l.text)}))});break;case"table":i.push({...u,columns:u.columns.map(l=>({...l,label:c(l.label)})),rows:u.rows.map(l=>l.map(c)),...u.caption?{caption:c(u.caption)}:{}});break;case"kpi":i.push({...u,items:u.items.map(l=>({...l,value:c(l.value),label:c(l.label)}))});break;case"letterhead":i.push({...u,fields:u.fields.map(l=>({...l,value:c(l.value)})),...u.recipient?{recipient:u.recipient.map(c)}:{}});break;case"totals":i.push({...u,rows:u.rows.map(l=>({...l,label:c(l.label),amount:c(l.amount)})),...u.taxRows?{taxRows:u.taxRows.map(l=>({...l,label:c(l.label),amount:c(l.amount)}))}:{}});break;case"image":i.push({...u,url:c(u.url),...u.alt?{alt:c(u.alt)}:{}});break;default:i.push(u)}}return{blocks:i,unresolved:s,unusedSlots:Object.keys(r??{}).filter(u=>!a.has(u))}}function Ys(e){const t=e?.address,n=[t?.street,t?.houseNumber].filter(Boolean).join(" "),r=[t?.postalCode,t?.city].filter(Boolean).join(" ");return{name:e?.name??"",addressLines:[n,r,t?.country??""].filter(Boolean),footerLines:[e?.footerText??"",e?.kvkNumber?`KvK ${e.kvkNumber}`:"",e?.vatNumber?`Btw ${e.vatNumber}`:"",e?.iban?`IBAN ${e.iban}`:""].filter(Boolean),...e?.logo?{logo:e.logo}:{}}}function Lf(e){return Ys({name:e?.billing?.companyName||e?.name||e?.displayName||"",address:e?.address,kvkNumber:e?.billing?.kvkNumber,vatNumber:e?.billing?.vatNumber,iban:e?.houseStyle?.iban,footerText:e?.houseStyle?.footerText,logo:e?.logo})}function zs(e,t,n,r=Date.now()){const o=n.filter(s=>s.ok).length;return{suite:e,target:t,at:r,score:n.length?o/n.length:1,perCase:[...n]}}function Kf(e){return e.perCase.filter(t=>!t.ok).map(t=>`${t.caseId}: ${t.note??"onverwacht resultaat"}`)}async function $f(e,t,n,r,o=Date.now()){const s=[];for(const i of n)try{s.push(await r(i))}catch(a){s.push({caseId:i.id,ok:!1,note:`beoordeling mislukt: ${a?.message??String(a)}`})}return zs(e,t,s,o)}const Wt=864e5,ut=e=>Date.parse([e,"T00:00:00Z"].join("")),Uf=e=>new Date(e).toISOString().slice(0,10);function Xs(e,t){const n=ut(t.from),r=ut(t.to)+Wt;if(!(r>n))return[{month:[t.from.slice(0,7),"-01"].join(""),cents:e}];const o=[];for(let i=new Date(n);;){const a=Date.UTC(i.getUTCFullYear(),i.getUTCMonth(),1);if(a>=r)break;const c=Date.UTC(i.getUTCFullYear(),i.getUTCMonth()+1,1),u=Math.round((Math.min(c,r)-Math.max(a,n))/Wt);o.push({month:Uf(a),share:u/Math.round((c-a)/Wt)}),i=new Date(c)}const s=de(e,o.map(i=>i.share));return o.map((i,a)=>({month:i.month,cents:s[a]}))}function Qs(e){const t=new Date(ut(e.from)),n=new Date(ut(e.to));return(n.getUTCFullYear()-t.getUTCFullYear())*12+n.getUTCMonth()-t.getUTCMonth()+1}const Hn=864e5,Ot=e=>new Date(e).toISOString().slice(0,10),lt=e=>Date.parse(`${e}T00:00:00Z`);function fe(e,t){const[n,r,o]=e.split("-").map(Number),s=new Date(Date.UTC(n,r-1+t,1)),i=new Date(Date.UTC(s.getUTCFullYear(),s.getUTCMonth()+1,0)).getUTCDate();return s.setUTCDate(Math.min(o,i)),Ot(s.getTime())}function Yn(e){const t=Math.max(1,Math.round(e.termMonths)),n=Number(e.ratePercent)/100/12,r=e.principalCents,o=n===0?r/t:r*n/(1-(1+n)**-t),s=[];let i=r;for(let a=1;a<=t;a++){const c=Math.round(i*n);let u=e.method==="annuity"?Math.round(o)-c:e.method==="linear"?Math.round(r/t):0;a===t&&(u=i),u=Math.min(u,i),i-=u,s.push({sequence:a,dueOn:fe(e.firstDueOn,a-1),interestCents:c,principalCents:u,remainingCents:i})}return s}function Ff(e,t,n,r){const o=Number(r)/100/365,s=[...e].sort((u,d)=>u.date.localeCompare(d.date));let i=s.filter(u=>u.date<t).reduce((u,d)=>u+d.cents,0),a=s.findIndex(u=>u.date>=t);a<0&&(a=s.length);let c=0;for(let u=lt(t);u<=lt(n);u+=Hn){const d=Ot(u);for(;a<s.length&&(s[a]?.date??"")<=d;)i+=s[a]?.cents??0,a++;c+=i*o}return Math.round(c)}function Bf(e,t,n){const r=n==="quarterly"?3:12,[o,s]=e.split("-").map(Number),i=n==="quarterly"?Math.floor((s-1)/3)*3+1:1,a=[];let c=`${o}-${String(i).padStart(2,"0")}-01`;for(let u=1;c<=t&&u<400;u++){const d=fe(c,r);a.push({sequence:u,from:c<e?e:c,to:Ot(lt(d)-Hn)}),c=d}return a}const Zs=5e7,jf=["director","group_company","participation","other_company"],qf=e=>e?.relation&&jf.includes(e.relation)?e.relation:"director";function Gf(e,t=Zs){return{over:e>t,ratio:Math.max(0,e)/t}}function Wf(e,t){const r=e.terms.kind==="loan_received"?1:-1;return Yn(e.terms).filter(o=>o.dueOn<=t).map(o=>({financingItemId:e.id,sequence:o.sequence,dueOn:o.dueOn,lines:[...o.interestCents?[{accountId:e.terms.interestAccountId,amountCents:r*o.interestCents,description:`Rente termijn ${o.sequence}`}]:[],...o.principalCents?[{accountId:e.ledgerAccountId,amountCents:r*o.principalCents,subAccountId:e.id,description:`Aflossing termijn ${o.sequence}`}]:[]],expectedBankCents:-r*(o.interestCents+o.principalCents),settlesVia:"bank_line",label:`Termijn ${o.sequence}`}))}function Js(e){return{...e.counterpartyCompanyId?{counterpartyCompanyId:e.counterpartyCompanyId}:{},...Ae(e.dimensions)}}function ei(e){return Ot(lt(fe(`${e.slice(0,7)}-01`,1))-Hn)}function zn(e,t){const n=Math.max(1,Math.round(t)),r=Math.trunc(e/n);return Array.from({length:n},(o,s)=>s===n-1?e-r*(n-1):r)}function ti(e,t,n,r,o,s,i=1){return t.map((a,c)=>({cents:a,sequence:i+c,dueOn:ei(fe(n,c))})).filter(a=>a.dueOn<=r&&a.cents!==0).map(a=>({financingItemId:e,sequence:a.sequence,dueOn:a.dueOn,lines:o(a.cents,a.sequence),expectedBankCents:0,settlesVia:"direct",label:s(a.sequence)}))}function Xn(e){if(e.restart)return e.restart;if(e.opening)return{fromMonth:fe(`${e.opening.on.slice(0,7)}-01`,1),bookValueCents:e.costCents-e.opening.accumulatedCents,fromSequence:e.opening.monthsDone+1}}const Yr=600;function ni(e){const t=e.method??"linear",n=Xn(e),r=n?.bookValueCents??e.costCents,o=r-e.residualCents;if(t==="none"||o<=0)return[];if(t==="linear"){const u=e.lifeMonths-((n?.fromSequence??1)-1);return zn(o,Math.max(1,u))}const s=Number(String(e.ratePercent??"0").replace(",","."))/100;if(!(s>0&&s<1))return[];const i=1-(1-s)**(1/12),a=[];let c=r;for(;c>e.residualCents&&a.length<Yr;){const u=Math.max(1,Math.round(c*i)),d=c-u<=e.residualCents||a.length===Yr-1;a.push(d?c-e.residualCents:u),c-=a[a.length-1]??0}return a}function Vf(e,t){const n=e.terms,r=Js(e);if(n.disposal)return[];const o=ni(n),s=Xn(n),i=n.method==="declining"?(s?.fromSequence??1)-1+o.length:n.lifeMonths;return ti(e.id,o,s?.fromMonth??n.acquiredOn,t,(a,c)=>[{...r,accountId:n.depreciationAccountId,amountCents:a,description:e.name},{...r,accountId:n.accumulatedAccountId,amountCents:-a,subAccountId:e.id,description:`Afschrijving ${c}/${i}`}],a=>`Afschrijving ${a}/${i}`,s?.fromSequence??1)}function Hf(e,t){const n=e.terms,r=[];t.movementsCents&&r.push({accountId:n.accumulatedAccountId,amountCents:-t.movementsCents,subAccountId:e.id,description:e.name}),t.proceedsCents&&r.push({accountId:t.clearingAccountId,amountCents:t.proceedsCents,description:e.name}),r.push({accountId:e.ledgerAccountId,amountCents:-n.costCents,subAccountId:e.id,description:e.name});const o=r.reduce((s,i)=>s+i.amountCents,0);return o&&r.push({accountId:t.disposalAccountId,amountCents:-o,description:e.name}),r}function Yf(e,t){const n=e.terms,r=Js(e),o=n.direction==="expense"?1:-1;return ti(e.id,n.period?Xs(n.totalCents,n.period).map(s=>s.cents):zn(n.totalCents,n.months),n.firstMonth,t,(s,i)=>[{...r,accountId:n.resultAccountId,amountCents:o*s,description:e.name},{...r,accountId:e.ledgerAccountId,amountCents:-o*s,subAccountId:e.id,description:`${e.name} ${i}/${n.months}`}],s=>`${s}/${n.months}`)}function zf(e){return e.kind==="fixed_asset"?e.costCents-(e.opening?.accumulatedCents??0):e.upfront?e.direction==="expense"?e.totalCents:-e.totalCents:0}function Xf(e,t){const n=fe(t,12);return Yn(e).filter(r=>r.dueOn>t&&r.dueOn<=n).reduce((r,o)=>r+o.principalCents,0)}function Qf(e,t){const n=e.terms,r=n.quantity??1,o=l=>Math.round(l*t.quantity/r),s=o(n.costCents),i=o(n.residualCents),a=o(-t.movementsCents),c=[],u=`${e.name} (${t.quantity}/${r})`;a&&c.push({accountId:n.accumulatedAccountId,amountCents:a,subAccountId:e.id,description:u}),t.proceedsCents&&c.push({accountId:t.clearingAccountId,amountCents:t.proceedsCents,description:u}),c.push({accountId:e.ledgerAccountId,amountCents:-s,description:u});const d=c.reduce((l,p)=>l+p.amountCents,0);return d&&c.push({accountId:t.disposalAccountId,amountCents:-d,description:u}),{lines:c,costCents:s,residualCents:i}}const ri={NL:45e3},Zf=(e,t)=>t??ri[(e??"NL").toUpperCase()],Jf=[{name:"Inventaris",cost:"0100",accumulated:"0110",depreciation:"4600",disposal:"4690",method:"linear",lifeMonths:60},{name:"Computers",cost:"0120",accumulated:"0130",depreciation:"4630",disposal:"4690",method:"linear",lifeMonths:36},{name:"Vervoermiddelen",cost:"0200",accumulated:"0210",depreciation:"4610",disposal:"4691",method:"linear",lifeMonths:60,residualPercent:"20"},{name:"Gebouwen",cost:"0050",accumulated:"0060",depreciation:"4620",disposal:"4692",method:"linear",lifeMonths:360},{name:"Grond",cost:"0040",disposal:"4693",method:"none"}];function oi(e,t){let n=0;for(const r of t){if(r.status!=="booked")continue;const o=r.movement==="return"?-1:1;for(const s of r.lines)s.poLineId===e&&(n+=o*s.quantity)}return n}function ep(e){const t=e.filter(n=>n.kind==="product"&&n.quantity>0);return!t.length||t.every(n=>(n.receivedQty??0)<=0)?"none":t.every(n=>(n.receivedQty??0)>=n.quantity)?"full":"partial"}const si=e=>e.kind==="product"&&e.quantity>0&&(!e.act||e.unitPriceCents>0);function tp(e){return e.every(t=>!si(t)||(t.billedQty??0)>=t.quantity)?"full":"open"}function ii(e,t,n,r=new Map){const o=[];for(const s of e.lines){const i=t.find(l=>l.id===s.poLineId),a=oi(s.poLineId,n);(!i||e.movement==="in"&&a+s.quantity>i.quantity)&&o.push({code:"receipt_over_ordered",poLineId:s.poLineId}),e.movement==="return"&&s.quantity>a&&o.push({code:"receipt_return_over_received",poLineId:s.poLineId});const c=Zn(i??{},s.quantity),u=e.movement==="in"&&i?.productId&&r.get(i.productId);s.serials.length&&s.serials.length!==c?o.push({code:"receipt_serials_count",poLineId:s.poLineId}):!s.serials.length&&u==="serial"&&o.push({code:"receipt_serials_required",poLineId:s.poLineId});const d=(s.batches??[]).reduce((l,p)=>l+p.quantity,0);s.batches?.length&&d!==c?o.push({code:"receipt_batches_count",poLineId:s.poLineId}):!s.batches?.length&&u==="batch"&&o.push({code:"receipt_batches_required",poLineId:s.poLineId})}return o}function np(e,t){return e.flatMap(n=>{const r=t.find(o=>o.id===n.poLineId)?.productId;return r?n.serials.map(o=>[r,"#",o].join("")):[]})}function rp(e,t){const n=new Map;for(const r of t){if(r.status!=="booked")continue;const o=r.movement==="return"?-1:1;for(const s of r.serialKeys??[])n.set(s,(n.get(s)??0)+o)}return e.filter(r=>(n.get(r)??0)>0)}function op(e){return e.map(t=>({line:t,batches:sp(t.batches)})).map(({line:t,batches:n})=>({poLineId:String(t.poLineId),quantity:Number(t.quantity)||0,serials:[...new Set((t.serials??[]).map(r=>String(r).trim()).filter(Boolean))],...n.length?{batches:n}:{},...Number(t.backorderQty)>0?{backorderQty:Number(t.backorderQty)}:{}})).filter(t=>t.quantity>0)}function sp(e){return(Array.isArray(e)?e:[]).flatMap(t=>{const n=String(t?.code??"").trim(),r=Number(t?.quantity)||0,o=Number(t?.expiresAt)||0;return n&&r>0?[{code:n,quantity:r,...o?{expiresAt:o}:{}}]:[]})}function Qn(e,t){return(e.validFrom==null||e.validFrom<=t)&&(e.validTo==null||e.validTo>=t)}function ai(e,t){const n=e.filter(r=>Qn(r,t));return n.find(r=>r.isDefault)??n[0]??null}function Zn(e,t){return t*(e.factor&&e.factor>0?e.factor:1)}function ip(e,t,n){const r=Math.max(Math.ceil(e/Math.max(1,t??1)),n?.minQty??0),o=n?.lotSize&&n.lotSize>1?n.lotSize:1;return Math.ceil(r/o)*o}function ci(e){return{cents:U(e.costCents/Zn(e,1)),currency:e.currency,...e.per?{per:e.per}:{}}}function ui(e){const t=ci(e);return t.per?Et(t.cents,t.per,{from:Date.UTC(2026,0,1),to:Date.UTC(2027,0,1)}):t.cents}const pe=["pending","active","suspended","terminating"],le=(e,t)=>[e,t].join(":"),li=e=>[...new Set((e??[]).map(t=>t.itemId))],ap=(e,t)=>t?[e.productId,"#",e.serial??""].join(""):e.id;function dt(e){return e.kind==="sale"?["sale:",e.agreementId,"#",e.seriesId].join(""):e.kind==="resource"?["resource:",e.itemId,"#",e.role].join(""):["order:",e.orderId,"#",e.lineId,e.serial?`#${e.serial}`:""].join("")}const Jn=["draft","scheduled","queued","waiting"],Mt=["pending","unknown","inquiring"],di=(e,t,n)=>[e,t,n].join(":");function fi(e,t,n,r,o){const s=e.after.filter(c=>o.find(u=>u.id===c)?.state!=="approved");if(s.length)return{ok:!1,reason:"after",requestIds:s};const i=o.find(c=>c.id!==e.id&&c.itemId===e.itemId&&Mt.includes(c.state));if(i)return{ok:!1,reason:"busy",requestId:i.id};const a=[];for(const c of n.filter(u=>u.for.includes(e.action))){const u=(t.requires??[]).filter(d=>d.role===c.role);if(u.length<c.min)return{ok:!1,reason:"missing_role",role:c.role};if(u.length>c.max)return{ok:!1,reason:"too_many",role:c.role};for(const d of u){const l=r.get(d.itemId);if(!l||l.status!=="active")return{ok:!1,reason:"not_active",role:c.role,itemId:d.itemId};const p=l.provides?.find(g=>g.kind===c.kind);if(!p)return{ok:!1,reason:"wrong_kind",role:c.role,itemId:d.itemId};a.push({role:c.role,itemId:l.id,resource:p})}}return{ok:!0,inputs:a}}function cp(e,t,n,r,o){if(!(r!=="activation"||!e.sale||e.activatedAt!=null))return t!=="active"&&n==="active"?o:void 0}function Ee(e,t){return[...t].filter(n=>n.id!==e&&pe.includes(n.status)&&(n.requires??[]).some(r=>r.itemId===e))}function up(e,t){const n=[...t.values()],r=[],o=[];for(const s of e.requires??[]){const i=t.get(s.itemId);!i||!pe.includes(i.status)||(i.keep?o.push({itemId:i.id,why:"kept"}):Ee(i.id,n).some(a=>a.id!==e.id)?o.push({itemId:i.id,why:"in_use"}):r.push(i.id))}return{release:r,keep:o,impact:Ee(e.id,n).map(s=>s.id)}}function lp(e,t,n){const r=Ee(e.id,t).map(o=>o.id);return r.length?{ok:!1,reason:"in_use",users:r}:n&&e.keep?{ok:!1,reason:"kept"}:{ok:!0}}function pi(e,t,n){const r=[],o=e.externalKey&&[...n.values()].find(i=>i.id!==e.id&&i.externalKey===e.externalKey&&pe.includes(i.status));o&&e.externalKey&&r.push({code:"duplicate_key",externalKey:e.externalKey,itemId:o.id});for(const i of e.requires??[]){const a=n.get(i.itemId);if(!a){r.push({code:"unknown_item",itemId:i.itemId});continue}a.businessEntityId!==e.businessEntityId&&r.push({code:"wrong_entity",itemId:a.id});const c=t.find(u=>u.role===i.role);c&&!(a.provides??[]).some(u=>u.kind===c.kind)&&a.status!=="pending"&&r.push({code:"wrong_kind",role:i.role,itemId:a.id})}const s=dp(e,n);return s&&r.push({code:"cycle",path:s}),r}function dp(e,t){const n=(r,o)=>{for(const s of r.requires??[]){if(s.itemId===e.id)return[...o,s.itemId];if(o.includes(s.itemId))continue;const i=t.get(s.itemId),a=i&&n(i,[...o,s.itemId]);if(a)return a}};return n(e,[e.id])}function mi(e,t){const n=new Set([e.id]),r=[],o=[...t.values()],s=i=>{for(const a of i.requires??[]){if(n.has(a.itemId))continue;n.add(a.itemId);const c=t.get(a.itemId);c&&(r.push({itemId:c.id,role:a.role,supplied:!!c.supply,shared:[...fp(c.id,o)].some(u=>u!==e.id)}),s(c))}};return s(e),r}function fp(e,t){const n=new Set,r=new Set([e]),o=s=>{for(const i of Ee(s,t))r.has(i.id)||(r.add(i.id),i.sale&&n.add(i.id),o(i.id))};return o(e),n}function gi(e,t,n){const r=e.reported?.refundable;if(!r)return{now:!0};const o=r.filter(s=>s.until>n).reduce((s,i)=>s+i.quantity,0);return e.quantity-t<=o?{now:!0}:{now:!1,...e.reported?.termEndsAt?{at:e.reported.termEndsAt}:{}}}const pp=(e,t)=>e.provides?.find(n=>n.kind===t),mp=["scheduled","queued","waiting"],zr=[1,5,15,60],gp=(e,t)=>t+zr[Math.min(Math.max(e,1),zr.length)-1]*6e4;function hp(e){if((e.request.submitAt??0)>e.now)return{state:"scheduled"};const t=fi(e.request,e.item,e.needs,e.items,e.requests);return t.ok?{state:"send",inputs:t.inputs}:{state:t.reason==="busy"?"queued":"waiting",why:t}}function yp(e){const{request:t,item:n}=e,r=(n.requires??[]).find(s=>s.role==="account"),o=r?e.items.get(r.itemId)?.at:void 0;return{requestId:t.requestId,offer:t.offer,action:t.action,quantity:t.quantity,...t.toProductId?{toProductId:t.toProductId}:{},...t.supplier?.vendorSku?{vendorSku:t.supplier.vendorSku}:{},...t.supplier?.termMonths?{termMonths:t.supplier.termMonths}:{},params:t.params,...e.inputs.length?{inputs:e.inputs}:{},...n.at?.externalRef?{externalRef:n.at.externalRef}:{},...o?{parent:{...o.externalRef?{externalRef:o.externalRef}:{},...o.fulfillment?{fulfillment:o.fulfillment}:{}}}:{},customer:{companyId:n.customerCompanyId},...t.effectiveAt?{effectiveAt:t.effectiveAt}:{},at:e.now}}function bp(e,t){const n=t?.recovery?.[e];return n==="idempotent"?"resend":n==="lookup_by_ref"?"status":n==="lookup_by_listing"?"listing":"person"}function _p(e,t,n,r){if(n.state!=="approved")return{};const o={...e.at??{},app:t.app,offer:t.offer,...n.externalRef?{externalRef:n.externalRef}:{},...n.fulfillment?{fulfillment:{...e.at?.fulfillment??{},...n.fulfillment}}:{}},s=n.quantity??t.quantity,i={at:o,...o.externalRef?{externalKey:le(o.app,o.externalRef)}:{},...n.resources?{provides:n.resources}:{},updatedAt:r};switch(t.action){case"purchase":return{...i,status:"active",quantity:s,...e.activatedAt==null?{activatedAt:r}:{}};case"change":return{...i,quantity:s};case"convert":return{...i,productId:t.toProductId??e.productId,quantity:s};case"suspend":return{...i,status:"suspended"};case"resume":return{...i,status:"active"};case"cancel":{const a=t.effectiveAt??r;return{...i,status:a>r?"terminating":"terminated",endedAt:a}}case"renew":return i}}function Ip(e,t,n){const r=t.find(i=>i.requestRef===e.requestId);if(r)return{state:"found",subscription:r};const o=e.sent?.quantity??e.quantity,s=t.filter(i=>i.offer===e.offer&&i.status!=="ended"&&i.quantity===o&&!n.has(i.externalRef));return s.length===1?{state:"found",subscription:s[0]}:s.length?{state:"ambiguous",count:s.length,candidates:s}:{state:"none"}}function hi(e,t){return{quantity:e.quantity,status:e.status,...e.termEndsAt?{termEndsAt:e.termEndsAt}:{},...e.autoRenew!=null?{autoRenew:e.autoRenew}:{},...e.refundable?{refundable:e.refundable}:{},...e.scheduled?{scheduled:e.scheduled}:{},at:t}}const hn=e=>e.seriesId??e.id;function Ep(e,t,n){return t.find(r=>{const o=V(e,r);return o.from<=n&&(o.to==null||o.to>n)})??t.filter(r=>V(e,r).from>n).sort((r,o)=>V(e,r).from-V(e,o).from)[0]??t[t.length-1]}function yi(e){const t=new Map;for(const n of e)t.set(hn(n),[...t.get(hn(n))??[],n]);return t}const Sp=864e5;function Ap(e,t,n,r){if(e.reported?.refundable||!n)return gi(e,t,r);const o=n.commitment;if(!o||o.termMonths<1)return{now:!0};const s=n.changeWindowDays??0;return s>0&&r<Kn(n.start,o,r)+s*Sp?{now:!0}:{now:!1,at:re(n.start,o,r)}}function vp(e,t){const n=t.filter(r=>Mt.includes(r.state)).sort((r,o)=>o.updatedAt-r.updatedAt)[0];if(n)return{productId:n.toProductId??n.productId,quantity:n.action==="cancel"?0:n.quantity};if(!(!e||e.status==="pending"))return{productId:e.productId,quantity:pe.includes(e.status)?e.quantity:0}}const Cp=new Set(["purchase","change","convert","cancel"]),Tp=(e,t)=>e.action===t.action&&e.productId===t.productId&&e.quantity===t.quantity&&(e.toProductId??"")===(t.toProductId??"")&&(e.effectiveAt??0)===(t.effectiveAt??0);function kp(e){const{agreement:t,item:n,now:r,supply:o}=e,s=(yi(t.lines).get(e.seriesId)??[]).map(I=>({line:I,term:V(t,I)})).sort((I,v)=>I.term.from-v.term.from);if(!s.length)return{supersede:[]};const i=e.requests.filter(I=>I.itemId===n?.id&&I.state!=="superseded"),a=i.filter(I=>Jn.includes(I.state)&&Cp.has(I.action)),c=vp(n,i),u=s.findIndex(I=>I.term.from<=r&&(I.term.to==null||I.term.to>r)),d=u>=0?s[u]:void 0,l=s.find(I=>I.term.from>r),p=s[s.length-1],g=t.status==="ended"||!l&&(d==null||p.term.to!=null&&p.term.to<=r),f=I=>I&&I.line.quantity.from==="fixed"?I:void 0;let m,_;const h=(I,v)=>{const T=v!=null&&v>r?v:void 0,O=I.line.quantity.from==="fixed"?I.line.quantity.value:0;if(!c)return{action:"purchase",productId:I.line.productId,quantity:O,...T?{effectiveAt:T}:{}};if(c.productId!==I.line.productId)return{action:"convert",productId:c.productId,toProductId:I.line.productId,quantity:O,previousQuantity:c.quantity,...T?{effectiveAt:T}:{}};if(c.quantity!==O){if(O<c.quantity&&n){const E=Ap(n,O,o,r);if(!E.now&&E.at==null){_={reason:"decrease_window_unknown",quantity:O};return}const M=E.now?T:Math.max(E.at??0,T??0);return{action:"change",productId:c.productId,quantity:O,previousQuantity:c.quantity,...M?{effectiveAt:M,submitAt:M}:{},...E.now?{}:{notice:{atRenewal:!0}}}}return{action:"change",productId:c.productId,quantity:O,previousQuantity:c.quantity,...T?{effectiveAt:T,submitAt:T}:{}}}},y=I=>{if(!o)return I?{effectiveAt:I}:{};const v=I??r,T=es(o.start,o.commitment,v,r),O={...T.deadline!=null?{deadline:T.deadline}:{},...T.nextTerm?{nextTerm:!0}:{},...T.endsAt>v?{runsOnUntil:T.endsAt}:{}};return{effectiveAt:T.endsAt,...Object.keys(O).length?{notice:O}:{}}};if(g)c&&c.quantity>0&&(m={action:"cancel",productId:c.productId,quantity:0,...y(p.term.to)});else{const I=f(d);if(m=I?h(I,I.term.from):void 0,!m&&!_){const v=f(l);v&&(c||!I)?m=h(v,v.term.from):!v&&c&&c.quantity>0&&p.term.to!=null&&d===p&&(m={action:"cancel",productId:c.productId,quantity:0,...y(p.term.to)})}}if(_)return{supersede:[],blocked:_};if(!m)return{supersede:a.map(I=>I.id)};const b=a.find(I=>Tp(m,I));return{...b?{}:{target:m},supersede:a.filter(I=>I!==b).map(I=>I.id)}}function yn(e){const t=di(e.item.id,e.target.action,e.revision);return{id:t,organizationId:e.item.organizationId,businessEntityId:e.item.businessEntityId,itemId:e.item.id,requestId:t,...e.target,app:e.at.app,offer:e.at.offer,params:{...e.answers?.params},...e.answers?.configurationId?{configurationId:e.answers.configurationId}:{},...e.answers?.termMonths?{supplier:{termMonths:e.answers.termMonths}}:{},after:e.after??[],basedOn:{source:e.item.id,revision:e.revision},state:"draft",requestedBy:e.requestedBy,attempts:0,updatedAt:e.now}}const bn=new Set(["phone_number","device"]),bi=e=>!!e&&((e.provides??[]).some(t=>bn.has(t.kind))||(e.needs??[]).some(t=>t.for.includes("purchase")&&bn.has(t.kind)));function _i(e){return e?e.needs?.length?e.needs:e.requires?[{role:"account",kind:"account",min:1,max:1,for:["purchase","change"]}]:[]:[]}function Op(e){const{item:t,now:n}=e,r=[...e.items.values()],o=[...t.requires??[]],s=[],i=[],a=[],c=[],u=(d,l,p,g)=>yn({item:d,at:l,target:p,after:g,revision:e.revision,requestedBy:e.requestedBy,now:n});for(const d of e.needs.filter(l=>l.for.includes(e.target.action))){let l=o.filter(g=>g.role===d.role).length;const p=e.sourceFor(d);for(;l<d.min;){if(!p){a.push(d.role);break}const g=r.find(f=>f.customerCompanyId===t.customerCompanyId&&pe.includes(f.status)&&f.at?.app===p.app&&f.at?.offer===p.offer&&!o.some(m=>m.itemId===f.id)&&(!bn.has(d.kind)||Ee(f.id,r).length===0));if(g){if(o.push({role:d.role,itemId:g.id}),g.status==="pending"){const f=e.requests.find(_=>_.itemId===g.id&&_.action==="purchase"&&_.state!=="superseded"),m=f??u(g,{app:p.app,offer:p.offer},{action:"purchase",productId:g.productId,quantity:1},[]);f||i.push(m),c.push(m.id)}}else{const f=dt({kind:"resource",itemId:t.id,role:l?`${d.role}.${l}`:d.role}),m={id:f,organizationId:t.organizationId,businessEntityId:t.businessEntityId,customerCompanyId:t.customerCompanyId,productId:p.productId,status:"pending",quantity:1,at:{app:p.app,offer:p.offer},since:n,updatedAt:n};s.push(m),o.push({role:d.role,itemId:f});const _=u(m,p,{action:"purchase",productId:p.productId,quantity:1},[]);i.push(_),c.push(_.id)}l++}}return i.push(yn({item:t,at:{app:e.app,offer:e.offer},target:e.target,after:c,...e.answers?{answers:e.answers}:{},revision:e.revision,requestedBy:e.requestedBy,now:n})),{requires:o,newItems:s,requests:i,unsourced:a}}const Mp=e=>["adopt",e].join(":"),Rp=e=>e.startsWith("adopt:"),Xr=e=>["adopted:",e].join(""),Qr=e=>e.level==="account"?0:e.under||e.uses?.length?2:1;function Np(e,t){const n=t.items.filter(f=>pe.includes(f.status)),r=new Map(n.flatMap(f=>f.externalKey?[[f.externalKey,f]]:[])),o=new Map(n.map(f=>[f.id,f])),s=new Map,i=new Set,a=new Set,c=new Set(e.flatMap(f=>(f.uses??[]).map(m=>[m.kind,m.value].join("|")))),u=t.offers.filter(f=>f.businessEntityId===t.businessEntityId),d=f=>{const m=u.filter(h=>h.provider?.app===f.app&&h.provider.offer===f.offer),_=u.filter(h=>!!h.vendorSku&&h.vendorSku===f.offer);return ai(m.length?m:_,t.now)},l=f=>{const m=d(f),_=m?.provider?.app??f.app,h=le(_,f.externalRef),y=r.get(h);if(y)return{key:h,row:f,state:"known",knownItemId:y.id,problems:[]};if(i.has(h)){const R=s.get(h),K={code:"duplicate_key",externalKey:h,itemId:R?.id??h};return{key:h,row:f,state:"blocked",problems:[K]}}if(i.add(h),f.status==="ended")return{key:h,row:f,state:"ended",problems:[]};const b=le(f.app,f.account.ref),I=t.customers.get(b)??[],v=f.customerCompanyId??t.chosen?.[b]??(I.length===1?I[0].id:void 0),T={...v?{companyId:v}:{},create:!v&&I.length===0,candidates:I};if(!m)return{key:h,row:f,state:"no_product",customer:T,problems:[]};const O=m.provider?t.described.get([m.provider.app,m.provider.offer].join(":")):void 0,E=_i(O),M=(O?.provides??[]).map(R=>({kind:R.kind,value:f.externalRef})),F=M.some(R=>c.has([R.kind,R.value].join("|"))),k=(v?t.agreements.get(v)??[]:[]).filter(R=>R.status!=="ended").flatMap(R=>R.lines.filter(K=>K.productId===m.productId).map(K=>({agreementId:R.id,seriesId:K.seriesId}))).filter((R,K,Z)=>Z.findIndex(me=>me.seriesId===R.seriesId)===K).find(R=>{const K=dt({kind:"sale",...R});return!a.has(K)&&!o.get(K)?.externalKey}),P=F?void 0:t.drafted?.get(h)??k??{draft:!0},B=P&&"agreementId"in P?dt({kind:"sale",...P}):Xr(h),z=R=>r.get(R)??s.get(R),W=[];if(f.under){const R=z(le(_,f.under)),K=E.find(Z=>R?.provides?.some(me=>me.kind===Z.kind))?.role??E.find(Z=>Z.kind==="account"||Z.kind==="tenant")?.role??"account";W.push({role:K,itemId:R?.id??Xr(le(_,f.under))})}for(const R of f.uses??[]){const K=[...n,...s.values()].find(Z=>Z.provides?.some(me=>me.kind===R.kind&&me.value===R.value));W.push({role:E.find(Z=>Z.kind===R.kind)?.role??R.kind,itemId:K?.id??["resource:",R.kind,":",R.value].join("")})}const te=f.reported?.status??f.status??"active",L={id:B,organizationId:t.organizationId,businessEntityId:t.businessEntityId,customerCompanyId:v??"",productId:m.productId,status:te==="suspended"?"suspended":"active",quantity:f.quantity,...W.length?{requires:W,requiresIds:li(W)}:{},...M.length?{provides:M}:{},at:{app:_,...m.provider?{offer:m.provider.offer}:{},externalRef:f.externalRef,...f.fulfillment?{fulfillment:f.fulfillment}:{}},externalKey:h,...P&&"agreementId"in P?{sale:P}:{},activatedAt:f.since??t.now,reported:hi(f.reported??{externalRef:f.externalRef,offer:f.offer,quantity:f.quantity,status:te==="suspended"?"suspended":"active",...f.termEndsAt?{termEndsAt:f.termEndsAt}:{}},t.now),since:f.since??t.now,updatedAt:t.now},Y=new Map([...n,...s.values()].map(R=>[R.id,R]));Y.set(L.id,L);const oe=pi(L,E,Y);bi(O)&&f.quantity>1&&oe.push({code:"one_unit_per_item",quantity:f.quantity});for(const R of E.filter(K=>K.min>0&&K.for.includes("purchase")))W.some(K=>K.role===R.role)||oe.push({code:"requires_missing",role:R.role});const Ke=oe.length?"blocked":!v&&I.length>1?"choose_customer":"ready";return Ke==="ready"&&(s.set(h,L),P&&"agreementId"in P&&a.add(L.id)),{key:h,row:f,state:Ke,customer:T,offerId:m.id,productId:m.productId,...P?{sale:P}:{},item:L,problems:oe}},p=new Array(e.length),g=e.map((f,m)=>({row:f,index:m}));g.sort((f,m)=>Qr(f.row)-Qr(m.row)||f.index-m.index);for(const{row:f,index:m}of g)p[m]=l(f);return p}function Dp(e){const t=e.filter(n=>n.state==="ready");return{items:t.length,draftLines:t.filter(n=>n.sale&&"draft"in n.sale).length,linked:t.filter(n=>n.sale&&"agreementId"in n.sale).length,contractLines:t.length,newCustomers:new Set(t.filter(n=>n.customer?.create).map(n=>le(n.row.app,n.row.account.ref))).size,known:e.filter(n=>n.state==="known").length,choose:e.filter(n=>n.state==="choose_customer").length,noProduct:e.filter(n=>n.state==="no_product").length,blocked:e.filter(n=>n.state==="blocked").length}}const xp=(e,t)=>({app:e,externalRef:t.externalRef,offer:t.offer,level:"account",quantity:1,account:{ref:t.externalRef,name:t.name,...t.kvkNumber?{kvkNumber:t.kvkNumber}:{},...t.domain?{domain:t.domain}:{}},...t.fulfillment?{fulfillment:t.fulfillment}:{},...t.since?{since:t.since}:{}}),wp=(e,t,n,r)=>({app:e,externalRef:n.externalRef,offer:n.offer,level:"item",quantity:n.quantity,account:t,...r?{customerCompanyId:r}:{},under:n.under??t.ref,...n.uses?.length?{uses:n.uses}:{},...n.termEndsAt?{termEndsAt:n.termEndsAt}:{},status:n.status,reported:n}),er=["customer","product","quantity","externalRef","since","termEndsAt","kvkNumber","domain","under"],Pp={customer:["klant","customer","bedrijf","company","relatie","account"],product:["product","artikel","artikelnummer","sku","licentie","license","offer"],quantity:["aantal","quantity","qty","seats","stuks"],externalRef:["externe referentie","referentie","reference","external ref","id","serial"],since:["ingangsdatum","start","startdatum","since","start date"],termEndsAt:["termijneinde","einddatum","end","term end","renewal","verlenging"],kvkNumber:["kvk","kvk-nummer","coc"],domain:["domein","domain"],under:["onder","under","parent","hoofdaccount"]};function Lp(e){const t=e.map(s=>s.trim()),n=new Set,r={},o=s=>{for(const i of er){if(r[i])continue;const a=t.find(c=>!n.has(c)&&Pp[i].some(u=>s(c.toLowerCase(),u)));a&&(r[i]=a,n.add(a))}};return o((s,i)=>s===i),o((s,i)=>s.startsWith(i)),r}function _n(e){const t=e.trim(),n=/^(\d{4})-(\d{1,2})-(\d{1,2})/.exec(t),r=/^(\d{1,2})[-/.](\d{1,2})[-/.](\d{4})$/.exec(t),[o,s,i]=n?[n[1],n[2],n[3]]:r?[r[3],r[2],r[1]]:[];if(!o)return;const a=Date.UTC(Number(o),Number(s)-1,Number(i));return Number.isFinite(a)&&new Date(a).getUTCDate()===Number(i)?a:void 0}function Kp(e,t,n){const r=(e[0]??[]).map(a=>a.trim().toLowerCase()),o={};for(const a of er){const c=t[a]?.trim().toLowerCase(),u=c?r.indexOf(c):-1;u>=0&&(o[a]=u)}const s=[],i=[];return o.customer===void 0||o.product===void 0||o.externalRef===void 0?{rows:s,errors:[{line:1,message:"adopt_columns_missing"}]}:(e.slice(1).forEach((a,c)=>{const u=c+2,d=b=>{const I=o[b];return I===void 0?"":(a[I]??"").trim()},l=d("customer"),p=d("product"),g=d("externalRef");if(!l||!p||!g){i.push({line:u,message:"adopt_row_incomplete"});return}const f=d("quantity")?Number(d("quantity").replace(",",".")):1;if(!Number.isInteger(f)||f<1){i.push({line:u,message:"adopt_row_quantity"});return}const m=d("since")?_n(d("since")):void 0,_=d("termEndsAt")?_n(d("termEndsAt")):void 0;if(d("since")&&m===void 0||d("termEndsAt")&&_===void 0){i.push({line:u,message:"adopt_row_date"});return}const h=d("kvkNumber"),y=d("domain").toLowerCase();s.push({app:n,externalRef:g,offer:p,level:"item",quantity:f,account:{ref:(h||y||l).toLowerCase(),name:l,...h?{kvkNumber:h}:{},...y?{domain:y}:{}},...d("under")?{under:d("under")}:{},...m!==void 0?{since:m}:{},..._!==void 0?{termEndsAt:_}:{}})}),{rows:s,errors:i})}const Zr=["quote","order"];function Ii(e,t){const n=Zr.slice(0,Zr.indexOf(t)+1);return e.requirements.filter(r=>!r.met&&n.includes(r.before))}function $p(e,t,n){const r=e.preparation;return r?r.expiresAt!==void 0&&r.expiresAt<=n?"expired":Ii(r,t).length?"open":"ready":"open"}function tr(e){return e.requirements.filter(t=>t.kind==="answer")}function Ei(e,t){return t[e.key]??e.value}function Si(e,t){let n;const r=[];for(const o of tr(e)){if(!o.line)continue;const s=Ei(o,t);if(s===void 0||s==="")continue;const i=Up(o,s);i&&(o.line==="main"?n=i:r.push(i))}return{main:n,addons:r}}function Up(e,t){if(e.type==="select"){const r=e.options?.find(d=>d.key===t);if(!r?.sku)return;const{sku:o,label:s,costCents:i,recurring:a,commitment:c,billedEvery:u}=r;return{key:e.key,label:s,sku:o,quantity:1,costCents:i,recurring:a,commitment:c,billedEvery:u}}if(!e.sku)return;const n=e.type==="boolean"?t==="true"?1:0:Number(t);if(!(!Number.isFinite(n)||n<=0))return{key:e.key,label:e.label,sku:e.sku,quantity:n,costCents:e.costCents,recurring:e.recurring}}function Fp(e,t,n){const r=Si(t,n).main;return r?{ref:{...e,sku:r.sku},commitment:r.commitment,billedEvery:r.billedEvery}:{ref:e}}function Bp(e,t){const n={};for(const r of tr(e)){const o=Ei(r,t);o!==void 0&&o!==""&&(n[r.key]=o)}return n}function jp(e,t,n,r={}){const o=tr(e).filter(i=>i.perUnit).map(i=>i.key),s=Object.fromEntries(Object.entries(t).filter(([i])=>!o.includes(i)));return Array.from({length:n},(i,a)=>{const c={...s};for(const u of o){const d=r[u]?.[a];d!==void 0&&d!==""&&(c[u]=d)}return c})}const qp=["active","suspended","terminating"];function Gp(e){const t=new Map(e.items.map(n=>[n.id,n]));return e.items.filter(n=>n.sale&&n.status!=="terminated").map(n=>{const r=qp.includes(n.status)?n.quantity:0,o=e.agreed.get(n.id)??null,s=n.reported?.quantity,i=e.bought.get(n.id),a=e.billed.get(n.id),c=e.requests.some(d=>d.itemId===n.id&&(Mt.includes(d.state)||Jn.includes(d.state))),u=[];return s!=null&&s!==r&&u.push({kind:"supplier_differs",reported:s,active:r}),o!=null&&o!==r&&u.push({kind:"agreed_differs",agreed:o,active:r,busy:c}),i!=null&&i!==r&&u.push({kind:"not_bought",bought:i,active:r}),a!=null&&o!=null&&a!==o&&u.push({kind:"not_billed",billed:a,agreed:o}),{itemId:n.id,productId:n.productId,customerCompanyId:n.customerCompanyId,status:n.status,...n.serial?{serial:n.serial}:{},agreed:o,active:r,...s!=null?{reported:s}:{},...i!=null?{bought:i}:{},...a!=null?{billed:a}:{},signals:u,resources:mi(n,t).map(d=>({...d,productId:t.get(d.itemId)?.productId??""}))}})}const Ai=[{key:"purchase_order",label:"kind_purchase_order",name:"Inkooporder",numbered:!0,signFlip:!1,statuses:["draft","sent","confirmed","received","cancelled","superseded"],path:"purchase-orders",issuedStatus:"sent",transitions:{draft:["cancelled"],sent:["confirmed","received","cancelled"],confirmed:["received","sent","cancelled"],received:["confirmed"]},convertsTo:[]}],Wp="purchase_order",Rt=[{key:"quote",label:"kind_quote",numbered:!1,signFlip:!1,name:"Offerte",statuses:["draft","sent","accepted","rejected","expired","cancelled","superseded"],path:"quotes",issuedStatus:"sent",transitions:{draft:["cancelled"],sent:["accepted","rejected","expired","cancelled"],accepted:["sent"],rejected:["sent"],expired:["sent"]},convertsTo:["order","invoice"]},{key:"order",label:"kind_order",numbered:!1,signFlip:!1,name:"Order",paperName:"Orderbevestiging",statuses:["draft","confirmed","cancelled","superseded"],path:"orders",issuedStatus:"confirmed",transitions:{draft:["cancelled"],confirmed:["cancelled"]},convertsTo:["invoice"]},{key:"invoice",label:"kind_invoice",numbered:!0,signFlip:!1,name:"Factuur",statuses:["draft","open","cancelled","superseded"],path:"invoices",issuedStatus:"open",transitions:{draft:["cancelled"]},convertsTo:["credit_note"]},{key:"credit_note",label:"kind_credit_note",numbered:!0,signFlip:!0,name:"Creditnota",statuses:["draft","open","cancelled","superseded"],path:"invoices",issuedStatus:"open",transitions:{draft:["cancelled"]},convertsTo:[],credits:"invoice"}],vi=[...Rt,...Ai],nr=["quote","order","invoice","credit_note"];function Vp(){const e=new Map;for(const t of Rt)nr.includes(t.key)&&(e.has(t.path)||e.set(t.path,t));return[...e.values()]}function G(e){return vi.find(t=>t.key===e)??{key:e,label:e,name:e,numbered:!1,signFlip:!1,statuses:["draft"],path:"quotes",issuedStatus:"draft",transitions:{},convertsTo:[]}}const Hp={draft:"Concept",sent:"Verstuurd",accepted:"Geaccepteerd",rejected:"Afgewezen",expired:"Verlopen",confirmed:"Bevestigd",received:"Ontvangen",open:"Openstaand",cancelled:"Geannuleerd",superseded:"Vervangen"};function Ci(e,t){return G(e).transitions[t]??[]}function Yp(e,t,n){return Ci(e,t).includes(n)}function rr(e){return e.issuedAt!=null}const zp=["status","fileRef","number","externalIds","postedAt","dunning","settlement","settled","overdueSince","issuedPaper","updatedAt"];function Xp(e){return rr(e)&&G(e.kindKey).numbered&&!e.number}const Qp=["companyId","contactId","dealItemId","title","reference","currency","taxOverrideKey","introText","termsText","expiresAt","deliveredAt","periodFrom","periodTo","paymentTerm","billingAddressId","deliveryAddressId","invoiceTo","lines"],Zp=["contactId","dealItemId","title","reference","taxOverrideKey","introText","termsText","expiresAt","deliveredAt","periodFrom","periodTo","billingAddressId","deliveryAddressId","invoiceTo"];function Jp(e,t){if(!nr.includes(t)||!G(e.kindKey).convertsTo.includes(t))return!1;const n=G(t);return!n.credits||n.credits===e.kindKey&&rr(e)}function or(e,t){const n=G(t).signFlip!==G(e.kindKey).signFlip,r=e.kindKey!==t,o=e.lines.map(({timeEntryIds:s,agreementLineId:i,sourceLine:a,...c})=>({...c,...r&&c.kind==="product"?{sourceLine:{transactionId:e.id,lineId:c.id}}:{},quantity:n?-c.quantity:c.quantity,netCents:0,taxCents:0}));return{kindKey:t,sourceTransactionId:e.id,agreementId:e.agreementId,version:1,businessEntityId:e.businessEntityId,companyId:e.companyId,contactId:e.contactId,...e.invoiceTo?.companyId?{invoiceTo:e.invoiceTo}:{},billingAddressId:e.billingAddressId,deliveryAddressId:e.deliveryAddressId,dealItemId:e.dealItemId,ownerScope:e.ownerScope,ownerUserId:e.ownerUserId,title:e.title,reference:e.reference,currency:e.currency,status:"draft",lines:o,totals:{netCents:0,taxCents:0,grossCents:0,byRate:[]},taxOverrideKey:e.taxOverrideKey,introText:e.introText,termsText:e.termsText,paymentTerm:e.paymentTerm,deliveredAt:e.deliveredAt,periodFrom:e.periodFrom,periodTo:e.periodTo,source:e.source}}function em(e){return{...or(e,e.kindKey),sourceTransactionId:e.sourceTransactionId,previousVersionId:e.id,version:e.version+1,lines:e.lines.map(({timeEntryIds:n,...r})=>({...r})),totals:e.totals}}function tm(e,t,n){const r=new Map;let o=Math.max(0,t);for(const s of[...e].filter(i=>i.state==="active").sort((i,a)=>i.createdAt-a.createdAt)){const i=Math.min(s.quantity,o);o-=i,r.set(s.id,{received:i,available:Math.max(0,i-(n.get(s.id)??0))})}return r}function nm(e,t,n,r){const o=t.filter(u=>u.fulfilmentOrderId===e.id&&u.state==="active"),s=u=>u.reduce((d,l)=>d+l.quantity,0),i=n.filter(u=>u.fulfilmentOrderId===e.id&&u.direction!=="return"),a=n.filter(u=>u.fulfilmentOrderId===e.id&&u.direction==="return"),c=o.reduce((u,d)=>u+(r.get(d.id)?.received??0),0);return{ordered:e.quantity,allocated:s(o),onOrder:s(o)-c,available:o.reduce((u,d)=>u+(r.get(d.id)?.available??0),0),delivered:s(i),returned:s(a)}}const Jr=e=>[e.deliverTo.kind,e.deliverTo.companyId??"",e.deliverTo.addressId??""].join("|"),rm=(e,t)=>!!e.offerId&&e.offerId===t.offerId&&e.businessEntityId===t.businessEntityId&&Jr(e)===Jr(t);function Ti(e,t,n){const r=new Map;for(const s of n)for(const i of s.lines)i.sourceLine?.transactionId===e.id&&r.set([s.id,i.id].join("#"),i.sourceLine.lineId);const o=new Map(e.lines.filter(s=>s.kind==="product").map(s=>[s.id,{lineId:s.id,ordered:s.quantity,delivered:t.get(s.id)??0,invoiced:0,reserved:0}]));for(const s of n)if(s.status!=="cancelled")for(const i of s.lines){const a=i.sourceLine;if(!a)continue;const c=a.transactionId===e.id?a.lineId:r.get([a.transactionId,a.lineId].join("#")),u=c?o.get(c):void 0;u&&(s.issuedAt?u.invoiced+=i.quantity:s.kindKey!=="credit_note"&&i.quantity>0&&(u.reserved+=i.quantity))}return[...o.values()]}const ki=(e,t)=>Math.max(0,(t==="delivered"?e.delivered:e.ordered)-e.invoiced-e.reserved);function om(e,t){const n=e.map(r=>t==="delivered"?r.delivered:r.invoiced);return!e.length||n.every(r=>r<=0)?"none":e.every((r,o)=>n[o]>=r.ordered)?"full":"partial"}function sm(e){const t=e.orders.flatMap(r=>{const o=Ti(r,e.delivered.get(r.id)??new Map,e.documents),s=new Map(o.map(u=>[u.lineId,ki(u,e.mode)])),i=or(r,"invoice"),a=i.lines.flatMap(u=>{const d=u.sourceLine?s.get(u.sourceLine.lineId)??0:0;return u.kind==="product"&&d>0?[{...u,quantity:d}]:[]});if(!a.length)return[];const c=e.mode==="delivered"?e.deliveredAt?.get(r.id):r.deliveredAt;return[{order:r,draft:{...i,lines:a,...c?{deliveredAt:c}:{}}}]});if(e.groupBy==="order")return t.map(r=>r.draft);const n=new Map;for(const r of t){const o=r.order,s=[o.companyId,Tt(o),o.invoiceTo?.contactId??"",o.billingAddressId??"",o.paymentTerm?.code??"",o.taxOverrideKey??"",o.businessEntityId,o.currency].join("|");n.set(s,[...n.get(s)??[],r])}return[...n.values()].map(r=>{if(r.length===1)return r[0].draft;const[o]=r,s=r.flatMap(c=>c.draft.deliveredAt?[c.draft.deliveredAt]:[]),{sourceTransactionId:i,...a}=o.draft;return{...a,lines:r.flatMap(c=>c.draft.lines).map((c,u)=>({...c,id:["l",String(u+1)].join("")})),...s.length?{deliveredAt:Math.max(...s)}:{}}})}const Oi=e=>btoa(unescape(encodeURIComponent(e))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""),im=e=>{const t=e.replace(/-/g,"+").replace(/_/g,"/");return decodeURIComponent(escape(atob(t+"===".slice((t.length+3)%4))))},am=e=>["/request/",Oi(e)].join(""),Mi=36e5,Ri=864e5,ie=-1/0,cm=e=>e.score>ie,Re={urgent:40,high:25,normal:10,low:0};function um(e){return Object.fromEntries(e.map(t=>[t.resourceId,t]))}const lm=/(^|[._+-])(no-?reply|noreply|donotreply|do-not-reply|newsletter|nieuwsbrief|mailer|mailing|notifications?|bounce|postmaster|marketing)@/i,Ni=/\b(unsubscribe|afmelden|uitschrijven|opt[\s-]?out|manage (your )?preferences|geen (e-?mails?|nieuwsbrief|berichten) meer)\b/i;function Di(e,t){return!!(e&&lm.test(e)||t&&Ni.test(t))}const xi=3,wi=600;function dm(e,t){return e>=xi||t>=wi}const Pi=["list-unsubscribe","list-unsubscribe-post","list-id","precedence","auto-submitted","x-auto-response-suppress","feedback-id","x-mailer"];function fm(e){const t={};for(const n of e){const r=n.name?.toLowerCase();r&&n.value!==void 0&&Pi.includes(r)&&(t[r]=n.value)}return t}const pm=/(^|[._+-])(no-?reply|noreply|donotreply|do-not-reply|notifications?|bounce|postmaster|mailer)@/i,mm=/(^|[._+-])(newsletter|nieuwsbrief|marketing|mailing)@/i;function gm(e){const t=e.headers??{},n=e.from?.email,r=t["auto-submitted"]?.toLowerCase();if(r&&r!=="no"||t["x-auto-response-suppress"]||n&&pm.test(n))return"automated";const o=t.precedence?.toLowerCase();if(t["list-unsubscribe"]||t["list-unsubscribe-post"]||t["list-id"]||o==="bulk"||o==="list"||e.body&&Ni.test(e.body)||n&&mm.test(n))return"marketing"}function Li(e,t){return e.lastActivityAt?!(e.seenBy??[]).includes(t):!1}const Ki=["open"],$i=1e3,Ui=72;function Fi(e){return e.lastActivityAt??(e.createdAt?new Date(qo(e)).getTime():0)}function Bi(e,t){return ji(t.remindersById?.[e.id],e,t.now)}function ji(e,t,n){return!e||e.remindAt<=n?!1:!((t.lastActivityAt??0)>e.parkedAt&&t.lastActivityPreview?.direction==="inbound")}const qi=e=>Uo(e)==="outbound_message",Gi=e=>Ki.includes(e);function Nt(e,t){return Math.max(0,(t-Fi(e))/Mi)}function Wi(e,t){const n=e.assignedInboxId?t?.[e.assignedInboxId]:void 0;return typeof n=="number"&&n>0?n:void 0}function hm(e){const t={};for(const n of e)typeof n.slaHours=="number"&&n.slaHours>0&&(t[n.id]=n.slaHours);return t}function ym(e,t,n){if(!Gi(e.status)||e.firstResponseAt)return!1;const r=Wi(e,n);return r!==void 0&&Nt(e,t)>r}function Vi(e,t){const n=e.lastActivityPreview;return n?.direction!=="outbound"||!qi(n.type)?!1:Nt(e,t)<Ui}function bm(e,t){if(!Gi(e.status))return{score:ie,reasons:[]};if(e.snoozedTill&&e.snoozedTill>t.now)return{score:ie,reasons:[]};if(Vi(e,t.now))return{score:ie,reasons:[]};if(Bi(e,t))return{score:ie,reasons:[]};let n=0;const r=[],o=e.priority??"normal";Re[o]>0&&(n+=Re[o],r.push(`priority:${o}`)),Li(e,t.userId)&&(n+=20,r.push("unseen")),e.assignedUserId&&e.assignedUserId===t.userId&&(n+=15,r.push("assigned-to-you"));const s=Nt(e,t.now);if(s>0){const c=Math.min(s*2,30);n+=c,s>=1&&r.push(`waiting:${Math.round(s)}h`)}const i=e.lastActivityPreview;return i?.type==="AI_ACTION_PROPOSED"&&(n+=30,r.push("awaiting-approval")),i?.direction==="outbound"&&qi(i.type)&&(n+=10,r.push("no-reply")),!e.firstResponseAt&&e.lastActivityPreview?.direction==="inbound"&&(n+=10,r.push("awaiting-reply")),(e.tags?.some(c=>c==="marketing"||c==="automated")||Di(e.remoteParty?.resource,e.lastActivityPreview?.snippet))&&(n-=$i,r.push("bulk")),{score:n,reasons:r}}const _m=e=>!!e.assignedUserId||!!e.assignedInboxId,Im=e=>e.status==="closed",Em=e=>({urgent:10,high:5,normal:2,low:1})[e.priority]||0,Sm=(e,t=30)=>e.title?.length<=t?e.title:`${e.title.substring(0,t)}...`,Hi=[{key:"solved",label:"resolution_solved",order:0,positive:!0,system:!0},{key:"no_action",label:"resolution_no_action",order:1,system:!0},{key:"duplicate",label:"resolution_duplicate",order:2,system:!0},{key:"spam",label:"resolution_spam",order:3,system:!0},{key:"unresolved",label:"resolution_unresolved",order:4,positive:!1,system:!0}],Am=["duplicate","spam"],vm="c_";function Cm(e){const t=[...e?.resolutions??[]].filter(n=>!n.system).sort((n,r)=>n.order-r.order);return[...Hi,...t]}function Tm(e,t){const n=e.labels??[];return n.find(r=>r.locale===t)?.label??n[0]?.label??e.url}function km(e,t,n){const r=e.translations??[];return r.find(o=>o.locale===t)??(n?r.find(o=>o.locale===n):void 0)??{locale:t}}const Om="article",ft=[{code:"nl",label:"Nederlands",english:"Dutch"},{code:"en",label:"English",english:"English"},{code:"de",label:"Deutsch",english:"German"},{code:"fr",label:"Français",english:"French"},{code:"es",label:"Español",english:"Spanish"},{code:"it",label:"Italiano",english:"Italian"},{code:"pt",label:"Português",english:"Portuguese"},{code:"pl",label:"Polski",english:"Polish"},{code:"sv",label:"Svenska",english:"Swedish"},{code:"da",label:"Dansk",english:"Danish"},{code:"nb",label:"Norsk bokmål",english:"Norwegian Bokmål"},{code:"fi",label:"Suomi",english:"Finnish"},{code:"tr",label:"Türkçe",english:"Turkish"}];function Yi(e){const t=(e??"").toLowerCase();return ft.find(n=>n.code===t)??ft.find(n=>n.code===t.split("-")[0])}function Mm(e){return Yi(e)?.label??e}function Rm(e){const t=Yi(e);return t?t.english===t.label?`${t.english} (${t.code})`:`${t.english} — ${t.label} (${t.code})`:e}const sr=3;function zi(e,t){const n=new Set;let r=1,o=t.get(e)?.parentId;for(;o;){if(n.has(o)||(n.add(o),r++,r>sr+1))return 1/0;o=t.get(o)?.parentId}return r}function Nm(e,t,n){if(!e)return!0;if(e===t)return!1;const r=new Map(n.map(i=>[i.id,i]));if(!r.has(e)||t&&Xi(e,t,r))return!1;const o=zi(e,r),s=t?ir(t,n):1;return o+s<=sr}function Xi(e,t,n){const r=new Set;let o=n.get(e)?.parentId;for(;o;){if(o===t)return!0;if(r.has(o))return!1;r.add(o),o=n.get(o)?.parentId}return!1}function ir(e,t,n=new Set){if(n.has(e))return 1;n.add(e);const r=t.filter(o=>o.parentId===e);return r.length?1+Math.max(...r.map(o=>ir(o.id,t,n))):1}const Qi="en";function Zi(e){return e.defaultLocale||e.locale||Qi}function Dm(e){const t=new Set,n=[];for(const r of[Zi(e),...e.locales??[]])!r||t.has(r)||(t.add(r),n.push(r));return n}function xm(e,t,n){const r=e.translations??[];return r.find(o=>o.locale===t)?.name??(n?r.find(o=>o.locale===n)?.name:void 0)??e.name}function wm(e,t){const n=a=>`${a.level}:${a.key}`,r=new Map((t?.rows??[]).map(a=>[n(a),a])),o=e.rows.map(a=>({...a,priorCents:r.get(n(a))?.amountCents??0})),s=new Set(o.map(n)),i=t?.rows??[];return i.forEach((a,c)=>{if(s.has(n(a)))return;const u=i.slice(0,c).reverse().find(p=>p.level<a.level);let d=o.length;const l=u?o.findIndex(p=>n(p)===n(u)):-1;if(l>=0)for(d=l+1;d<o.length&&(o[d]?.level??0)>(u?.level??0);)d+=1;o.splice(d,0,{...a,amountCents:0,priorCents:a.amountCents}),s.add(n(a))}),o}function Pm(e,t,n){const r=new Map;for(const o of e){if(o.date>n)continue;const s=r.get(o.accountId)??{accountId:o.accountId,openingCents:0,debitCents:0,creditCents:0,closingCents:0};o.date<t?s.openingCents+=o.functionalCents:o.functionalCents>0?s.debitCents+=o.functionalCents:s.creditCents-=o.functionalCents,s.closingCents=s.openingCents+s.debitCents-s.creditCents,r.set(o.accountId,s)}return r}const Lm=["revenue","expense"],we=e=>Lm.includes(e.type),Km=e=>(e.reportGroup??e.type).split(".")[0]??e.type;function Ji(e,t,n,r){const o=new Map;for(const i of[...e].sort((a,c)=>a.code.localeCompare(c.code))){if(!t(i))continue;const a=Km(i),c=i.reportGroup??a,u=o.get(a)??new Map;u.set(c,[...u.get(c)??[],i]),o.set(a,u)}const s=[];for(const[i,a]of o){const c=n(i),u=l=>c==="debit"?t(l):-t(l),d=[...a.values()].flat().reduce((l,p)=>l+u(p),0);s.push({key:i,label:r(i),level:0,side:c,amountCents:d});for(const[l,p]of a){s.push({key:l,label:r(l),level:1,side:c,amountCents:p.reduce((g,f)=>g+u(f),0)});for(const g of p)s.push({key:g.code,label:`${g.code} ${g.name}`,level:2,side:c,amountCents:u(g),accountId:g.id})}}return s}function $m(e,t,n,r=o=>o){const o=e.filter(we),s=c=>{const u=t.get(c.id);return u?u.debitCents-u.creditCents:0},i=Ji(o,s,c=>c==="revenue"||c==="financial"?"credit":"debit",r),a=-o.reduce((c,u)=>c+s(u),0);return{kind:"profit_and_loss",...n,rows:i,totals:{resultCents:a},source:"finance"}}function Um(e,t,n,r,o=s=>s){const s=e.filter(d=>!we(d)),a=Ji(s,d=>t.get(d.id)?.closingCents??0,d=>d==="assets"?"debit":"credit",o);if(r){a.push({key:"equity.result_unappropriated",label:o("equity.result_unappropriated"),level:1,side:"credit",amountCents:r});const d=a.find(l=>l.level===0&&l.key==="equity");d?d.amountCents+=r:a.push({key:"equity",label:o("equity"),level:0,side:"credit",amountCents:r})}const c=a.filter(d=>d.level===0&&d.side==="debit").reduce((d,l)=>d+l.amountCents,0),u=a.filter(d=>d.level===0&&d.side==="credit").reduce((d,l)=>d+l.amountCents,0);return{kind:"balance",from:n.from,to:n.to,rows:a,totals:{debitCents:c,creditCents:u},source:"finance"}}function Fm(e,t){return[...e].sort((n,r)=>n.code.localeCompare(r.code)).flatMap(n=>{const r=t.get(n.id);if(!r||!r.openingCents&&!r.debitCents&&!r.creditCents)return[];const o=we(n),s=o?r.debitCents-r.creditCents:r.closingCents;return[{...r,code:n.code,name:n.name,balanceDebitCents:!o&&s>0?s:0,balanceCreditCents:!o&&s<0?-s:0,resultDebitCents:o&&s>0?s:0,resultCreditCents:o&&s<0?-s:0}]})}function Bm(e,t,n,r=13){const o=Date.parse(`${n}T00:00:00Z`),s=Array.from({length:r},(a,c)=>({from:new Date(o+c*7*864e5).toISOString().slice(0,10),inCents:0,outCents:0,closingCents:0}));for(const a of t){const c=Math.max(0,Math.floor((Date.parse(`${a.date}T00:00:00Z`)-o)/6048e5)),u=s[c];u&&(a.cents>=0?u.inCents+=a.cents:u.outCents-=a.cents)}let i=e;for(const a of s)i+=a.inCents-a.outCents,a.closingCents=i;return s}function jm(e){const t=new Map(e.accounts.map(s=>[s.id,s])),n=new Map;for(const s of e.lines){const i=t.get(s.accountId);!i||!we(i)||n.set(s.accountId,(n.get(s.accountId)??0)+s.functionalCents)}const r=[];let o=0;for(const[s,i]of[...n.entries()].sort(([a],[c])=>a.localeCompare(c)))i&&(r.push({accountId:s,amountCents:-i,functionalCents:-i,currency:e.currency}),o+=i);return r.length&&r.push({accountId:e.resultAccountId,amountCents:o,functionalCents:o,currency:e.currency,description:"Resultaat boekjaar"}),{lines:r,resultCents:-o}}const A=(e,t,n,r,o,s)=>({code:e,name:t,type:n,reportGroup:r,rgs:o,...s?{role:s}:{}}),ea={key:"nl-bv",label:"BV (Nederland)",rgsVersion:"3.5",accounts:[A("0040","Terreinen","asset","assets.fixed.tangible","BMvaTerVvp"),A("0050","Bedrijfsgebouwen","asset","assets.fixed.tangible","BMvaBegVvp"),A("0060","Afschrijving bedrijfsgebouwen","asset","assets.fixed.tangible","BMvaBegCae"),A("0100","Inventaris","asset","assets.fixed.tangible","BMvaBeiVvp"),A("0110","Afschrijving inventaris","asset","assets.fixed.tangible","BMvaBeiCae"),A("0120","Computers","asset","assets.fixed.tangible","BMvaBeiVvp"),A("0130","Afschrijving computers","asset","assets.fixed.tangible","BMvaBeiCae"),A("0200","Vervoermiddelen","asset","assets.fixed.tangible","BMvaTevVvp"),A("0210","Afschrijving vervoermiddelen","asset","assets.fixed.tangible","BMvaTevCae"),A("0500","Deelnemingen in groepsmaatschappijen","asset","assets.fixed.financial","BFvaDigNev"),A("0600","Leningen bank","liability","liabilities.long","BLasSakLvl"),A("0550","Leningen u/g","asset","assets.fixed.financial","BFvaLenLen"),A("0560","Waarborgsommen","asset","assets.fixed.financial","BFvaOvrWaa"),A("0800","Geplaatst kapitaal","equity","equity.capital","BEivGokGea"),A("0810","Agio","equity","equity.share_premium","BEivAgiAgi"),A("0900","Overige reserves","equity","equity.reserves","BEivOvrOrs"),A("0990","Resultaat boekjaar","equity","equity.result","BEivOreRvh","result"),A("1000","Kas","asset","assets.current.cash","BLimKasKas"),A("1100","Bank","asset","assets.current.cash","BLimBanRba"),A("1290","Tussenrekening desinvesteringen","asset","assets.current.other","BVorTusTov"),A("1300","Debiteuren","asset","assets.current.receivables","BVorDebHad","debtors"),A("1400","Vooruitbetaalde kosten","asset","assets.current.other","BVorOvaVof"),A("1410","Nog te factureren omzet","asset","assets.current.other","BVorOvaNtf"),A("1500","Te betalen btw","liability","liabilities.short.tax","BSchBepBtw","vat_payable"),A("1510","Te vorderen btw","asset","assets.current.tax","BVorVbkTvo","vat_receivable"),A("1520","Btw-afdracht","liability","liabilities.short.tax","BSchBepBaf","vat_settlement"),A("1610","Aflossingsverplichtingen leningen","liability","liabilities.short.other","BSchAosLvk"),A("1600","Crediteuren","liability","liabilities.short.payables","BSchCreHac","creditors"),A("1700","Rekening-courant bestuurder","liability","liabilities.short.related","BSchOvsRcb"),A("1710","Rekening-courant groepsmaatschappijen","liability","liabilities.short.related","BSchSagSg1"),A("1720","Rekening-courant deelnemingen","liability","liabilities.short.related","BSchSapSp1"),A("1730","Rekening-courant verbonden maatschappijen","liability","liabilities.short.related","BSchSaoSo1"),A("1800","Nog te betalen kosten","liability","liabilities.short.other","BSchOpaNtb"),A("1810","Vooruitgefactureerde omzet","liability","liabilities.short.other","BSchOpaVgo"),A("1900","Te betalen loonheffing","liability","liabilities.short.tax","BSchBepLhe"),A("1910","Te betalen nettolonen","liability","liabilities.short.other","BSchSalNet"),A("1920","Tussenrekening salarissen","liability","liabilities.short.other","BSchTusTsa"),A("2000","Tussenrekening betalingen","asset","assets.current.other","BVorTusTbt","suspense"),A("4000","Lonen","expense","costs.personnel","WPerLesLon"),A("4010","Sociale lasten","expense","costs.personnel","WPerSolPsv"),A("4020","Pensioenlasten","expense","costs.personnel","WPerPenPen"),A("4100","Huur","expense","costs.housing","WBedHuiBeh"),A("4110","Gas, water en elektra","expense","costs.housing","WBedHuiGwe"),A("4200","Autokosten","expense","costs.car","WBedAutOak"),A("4300","Kantoorbenodigdheden","expense","costs.office","WBedKanKan"),A("4310","Automatisering en software","expense","costs.office","WBedKanKoa"),A("4400","Reclame- en advertentiekosten","expense","costs.sales","WBedVkkRea"),A("4500","Accountants- en advieskosten","expense","costs.general","WBedAeaAea"),A("4590","Algemene kosten","expense","costs.general","WBedAlkOal","expense_default"),A("4595","Afrondingsverschillen btw","expense","costs.general","WBedAlkOal","vat_rounding"),A("4600","Afschrijving inventaris","expense","costs.depreciation","WAfsAmvBei"),A("4610","Afschrijving vervoermiddelen","expense","costs.depreciation","WAfsAmvTev"),A("4620","Afschrijving bedrijfsgebouwen","expense","costs.depreciation","WAfsAmvBeg"),A("4630","Afschrijving computers","expense","costs.depreciation","WAfsAmvBei"),A("4690","Boekresultaat inventaris","expense","costs.depreciation","WAfsRvmBei"),A("4691","Boekresultaat vervoermiddelen","expense","costs.depreciation","WAfsRvmTev"),A("4692","Boekresultaat bedrijfsgebouwen","expense","costs.depreciation","WAfsRvmBeg"),A("4693","Boekresultaat terreinen","expense","costs.depreciation","WAfsRvmBrt"),A("4900","Rente en kosten bank","expense","financial.expense","WFbeOrlRkb"),A("4930","Valutakoersverschillen","expense","financial.expense","WFbeWisWis","fx_difference"),A("4910","Rentelasten leningen kredietinstellingen","expense","financial.expense","WFbeRlsRlk"),A("4920","Rentelasten schulden aan bestuurders","expense","financial.expense","WFbeRlsRsd"),A("7000","Inkoopwaarde handelsgoederen","expense","costs.cost_of_sales","WKprInhInh"),A("8000","Omzet diensten hoog tarief","revenue","revenue.net","WOmzNodOdh","revenue_default"),A("8010","Omzet diensten laag tarief","revenue","revenue.net","WOmzNodOdl"),A("8020","Omzet diensten verlegd","revenue","revenue.net","WOmzNodOdv"),A("8030","Omzet vrijgestelde diensten","revenue","revenue.net","WOmzNodNod"),A("8100","Omzet diensten binnen de EU","revenue","revenue.net","WOmzNodOdi"),A("8110","Omzet diensten buiten de EU","revenue","revenue.net","WOmzNodOdb"),A("9000","Rentebaten bank","revenue","financial.income","WFbeRlmObr"),A("9010","Rentebaten rekening-courant bestuurders","revenue","financial.income","WFbeRlmRrb")],journals:[{code:"VK",name:"Verkoop",kind:"sales"},{code:"IK",name:"Inkoop",kind:"purchase"},{code:"BNK",name:"Bank",kind:"bank"},{code:"KAS",name:"Kas",kind:"cash"},{code:"MEM",name:"Memoriaal",kind:"memorial"},{code:"BEG",name:"Beginbalans",kind:"opening"}]},qm=[ea],ta={"payroll.gross_wages":"4000","payroll.social_charges":"4010","payroll.pension":"4020","payroll.wage_tax":"1900","payroll.net_payable":"1910","payroll.clearing":"1920"};function Gm(e,t){const n=[],r=t.functionalCurrency||"EUR",o=e.lines.filter(c=>c.currency&&c.currency!==r),s=o[0];if(s){const c={currency:s.currency};r!=="EUR"?n.push({code:"fx_cross_rate_unsupported",params:c}):o.some(u=>!(Number(u.fxRate)>0))&&n.push({code:"fx_rate_required",params:c})}e.lines.length<2&&n.push({code:"entry_too_few_lines"});const i=e.lines.reduce((c,u)=>c+u.functionalCents,0);i!==0&&n.push({code:"entry_unbalanced",params:{cents:String(i)}});const a=new Map(t.accounts.map(c=>[c.id,c]));for(const c of e.lines){const u=a.get(c.accountId);u?u.archived?n.push({code:"entry_account_archived",params:{account:u.code}}):u.requiresSubAccount&&!c.subAccountId&&n.push({code:"entry_sub_account_required",params:{account:u.code}}):n.push({code:"entry_unknown_account",params:{account:c.accountId}}),u&&!c.taxCode!=!c.taxSide&&n.push({code:"entry_tax_side",params:{account:u.code}})}return t.period?(t.period.status==="locked"||t.period.status==="closed"&&!t.allow)&&n.push({code:"entry_period_closed",params:{day:e.date}}):n.push({code:"entry_no_period",params:{day:e.date}}),n}function Wm(e,t,n){return`${e}-${t.slice(0,4)}-${String(n).padStart(4,"0")}`}const Vm=["businessEntityId","journalId","number","journalSeq","fiscalYear","chainSeq","date","periodId","description","sourceKey","source","lines","counterparty","reversesEntryId","attachment","prevHash","postedAt","postedBy"],Hm=new Set(["journalSeq","chainSeq","postedAt"]),Ym=["amountCents","functionalCents","taxCents"];function zm(e){const t={};for(const n of Vm){const r=e[n];r!==void 0&&(t[n]=Hm.has(n)?Number(r):r)}return Array.isArray(t.lines)&&(t.lines=t.lines.map(n=>{const r={...n};for(const o of Ym)r[o]!=null&&(r[o]=Number(r[o]));return r})),t}function In(e){return e===null||typeof e!="object"?JSON.stringify(e):Array.isArray(e)?"["+e.map(In).join(",")+"]":"{"+Object.entries(e).filter(([,n])=>n!==void 0).sort(([n],[r])=>n<r?-1:n>r?1:0).map(([n,r])=>JSON.stringify(n)+":"+In(r)).join(",")+"}"}function Xm(e,t){return e.taxSide??(t?.type==="revenue"?"sales":"purchase")}function Qm(e){return e.map(t=>({...t,amountCents:-t.amountCents,functionalCents:-t.functionalCents,...t.taxCents!==void 0?{taxCents:-t.taxCents}:{}}))}function Zm(e){return e.kind==="journal"?[]:e.lines.flatMap((t,n)=>t.period&&Qs(t.period)>1?[{index:n,period:t.period}]:[])}function Jm(e,t){const n=e.kind==="journal"?ng(e,t):tg(e,t);return n.ok?eg(n,e,t.functionalCurrency??"EUR"):n}function eg(e,t,n){if(!t.currency||t.currency===n)return e;if(n!=="EUR")return{ok:!1,problem:"fx_cross_rate_unsupported"};const r=Number(t.fxRate);if(!(r>0))return{ok:!1,problem:"fx_rate_required"};const o=String(t.fxRate),s=e.lines.map(a=>({...a,fxRate:o,functionalCents:Math.round(a.amountCents*r)})),i=s.reduce((a,c)=>a+c.functionalCents,0);return s[0]={...s[0],functionalCents:s[0].functionalCents-i},{...e,lines:s}}function tg(e,t){const n=m=>t.accounts.find(_=>_.role===m&&!_.archived),r=e.direction==="sale",o=n(r?"debtors":"creditors");if(!o)return{ok:!1,problem:r?"no_debtors_account":"no_creditors_account"};const s=n(r?"revenue_default":"expense_default"),i=n(r?"vat_payable":"vat_receivable"),a=r?-1:1,c=r?"sales":"purchase",u={currency:e.currency,...e.counterparty.companyId?{counterpartyCompanyId:e.counterparty.companyId}:{}},d=e.taxPointDate??e.issueDate,l=[],p=new Map;for(const m of e.lines){const _=m.accountKey??Ms(m,t.ledgerMapping??[],e.direction)?.targetKey??s?.id;if(!_)return{ok:!1,problem:"no_account_for_line"};const h=r?100:t.taxCodes?.find(I=>I.key===m.taxRateKey)?.deductiblePercent??100,y=Math.round(m.taxCents*h/100),b=m.netCents+m.taxCents-y;l.push({...u,accountId:_,amountCents:a*b,functionalCents:a*b,taxCode:m.taxRateKey,taxSide:c,taxCents:a*y,taxPointDate:d,...m.description?{description:m.description}:{},...Ae(m.dimensions)}),y&&p.set(m.taxRateKey,(p.get(m.taxRateKey)??0)+y)}for(const[m,_]of p){if(!i)return{ok:!1,problem:"no_vat_account"};l.push({...u,accountId:i.id,amountCents:a*_,functionalCents:a*_,taxCode:m,taxSide:c,taxPointDate:d})}const g=e.lines.reduce((m,_)=>m+_.netCents+_.taxCents,0);l.unshift({...u,accountId:o.id,amountCents:-a*g,functionalCents:-a*g});const f=[e.number,e.counterparty.name].filter(Boolean).join(" · ");return{ok:!0,journalKind:r?"sales":"purchase",lines:l,description:f||e.documentId}}function ng(e,t){const n=o=>o?t.accounts.find(s=>s.code===o&&!s.archived):void 0,r=[];for(const o of e.lines){const s=o.accountKey??n(ta[o.ledgerCategoryKey??""])?.id;if(!s)return{ok:!1,problem:"no_account_for_line"};const i=Math.round(Number(o.amountCents)||0);i&&r.push({accountId:s,amountCents:i,functionalCents:i,currency:e.currency,...o.description?{description:o.description}:{},...Ae(o.dimensions)})}return r.length?r.reduce((o,s)=>o+s.amountCents,0)!==0?{ok:!1,problem:"journal_not_balanced"}:{ok:!0,journalKind:"memorial",lines:r,description:[e.number,e.counterparty.name].filter(Boolean).join(" · ")||e.documentId}:{ok:!1,problem:"journal_empty"}}const Vt=e=>String(e).padStart(2,"0"),rg=(e,t)=>new Date(Date.UTC(e,t,0)).getUTCDate();function og(e,t=1){const n=t===1?String(e):`${e}/${e+1}`;return Array.from({length:12},(r,o)=>{const s=t-1+o,i=e+Math.floor(s/12),a=s%12+1;return{fiscalYear:n,index:o+1,from:`${i}-${Vt(a)}-01`,to:`${i}-${Vt(a)}-${Vt(rg(i,a))}`,status:"open"}})}function sg(e,t){return e.find(n=>n.from<=t&&t<=n.to)}const ig=["memorial","opening"],na="http://www.odb.belastingdienst.nl/Belastingdienst/BCPP/1.1/structures/XmlauditfileXAF_4.0",ag={sales:"S",purchase:"P",bank:"B",cash:"C",memorial:"M",opening:"M"},ra=e=>e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,"""),ar=(e,t)=>e.length>t?e.slice(0,t):e,C=(e,t,n=9999)=>t===void 0||t===""?"":"<"+e+">"+ra(ar(String(t),n))+"</"+e+">",se=e=>{const t=Math.abs(e);return String(Math.trunc(t/100))+"."+String(t%100).padStart(2,"0")},Ht=e=>e<0?"C":"D",eo=e=>ar(e.replace(/-/g,""),35);function cg(e){const t=new Map(e.accounts.map(l=>[l.id,l.code])),n=new Map(e.relations.map(l=>[l.id,l.number||eo(l.id)])),r=l=>n.get(l)??eo(l),o=new Map(e.periods.map(l=>[l.id,l.index])),s=[],i=(...l)=>{s.push(l.join(""))};i('<?xml version="1.0" encoding="UTF-8"?>','<auditfile xmlns="',na,'">',"<header>",C("fiscalYear",e.fiscalYear.replace("/","-")),C("startDate",e.startDate),C("endDate",e.endDate),C("curCode",e.currency),C("dateCreated",e.createdOn),C("softwareDesc",e.software.desc,50),C("softwareVersion",e.software.version,20),C("RGSVersion",e.rgsVersion,20),"</header>","<company>",C("Commercenr",e.company.commerceNr,100),C("companyName",e.company.name,255),C("taxRegistrationCountry",e.company.country),"<taxRegIdent>"+ra(ar(e.company.vatNumber??"",30))+"</taxRegIdent>");const a=e.company.address;if(a&&(a.street||a.city)&&i("<streetAddress>",C("streetname",a.street,100),C("number",a.number,15),C("city",a.city,50),C("postalCode",a.postalCode,10),C("country",e.company.country),"</streetAddress>"),e.relations.length){i("<customersSuppliers>");for(const l of e.relations)i("<customerSupplier>",C("custSupID",r(l.id),35),C("custSupName",l.name,50),C("commerceNr",l.commerceNr,100),C("taxRegistrationCountry",l.country),C("taxRegIdent",l.vatNumber,30),C("custSupTp",l.type),"</customerSupplier>");i("</customersSuppliers>")}i("<generalLedger>");for(const l of[...e.accounts].sort((p,g)=>p.code.localeCompare(g.code))){const p=l.type==="revenue"||l.type==="expense";i("<ledgerAccount>",C("accID",l.code,35),C("accDesc",l.name,255),C("accTp",p?"P":"B"),C("RGScode",l.taxonomy?.rgs,255),"</ledgerAccount>")}if(i("</generalLedger>"),e.taxCodes.length){i("<vatCodes>");for(const l of e.taxCodes)i("<vatCode>",C("vatID",l.key,35),C("vatDesc",l.label,100),C("vatToPayAccID",l.payableAccountId&&t.get(l.payableAccountId)),C("vatToClaimAccID",l.receivableAccountId&&t.get(l.receivableAccountId)),"</vatCode>");i("</vatCodes>")}i("<periods>");for(const l of[...e.periods].sort((p,g)=>p.index-g.index))i("<period>",C("periodNumber",l.index),C("startDatePeriod",l.from),C("endDatePeriod",l.to),"</period>");i("</periods>");const c=e.opening.filter(l=>l.cents!==0);if(c.length){const l=c.filter(g=>g.cents>0).reduce((g,f)=>g+f.cents,0),p=-c.filter(g=>g.cents<0).reduce((g,f)=>g+f.cents,0);i("<openingBalance>",C("linesCount",c.length),C("totalDebit",se(l)),C("totalCredit",se(p))),c.forEach((g,f)=>{i("<obLine>",C("nr",f+1),C("accID",t.get(g.accountId)??g.accountId),C("amnt",se(g.cents)),C("amntTp",Ht(g.cents)),"</obLine>")}),i("</openingBalance>")}const u=e.entries.flatMap(l=>l.lines);i("<transactions>",C("linesCount",u.length),C("totalDebit",se(u.filter(l=>l.functionalCents>0).reduce((l,p)=>l+p.functionalCents,0))),C("totalCredit",se(-u.filter(l=>l.functionalCents<0).reduce((l,p)=>l+p.functionalCents,0))));const d=new Map;for(const l of e.entries)d.set(l.journalId,[...d.get(l.journalId)??[],l]);for(const l of e.journals){const p=d.get(l.id);if(p?.length){i("<journal>",C("jrnID",l.code,35),C("desc",l.name),C("jrnTp",ag[l.kind]));for(const g of[...p].sort((f,m)=>f.journalSeq-m.journalSeq))i("<transaction>",C("nr",g.number,35),C("desc",g.description),C("periodNumber",o.get(g.periodId)??0),C("trDt",g.date),C("Source",g.source.app+(g.source.kind?" "+g.source.kind:""),999),C("User",g.postedBy,999)),g.lines.forEach((f,m)=>{const _=f.taxCode&&e.vatPercent?.(f.taxCode,g.date),h=f.currency&&f.currency!==e.currency;i("<trLine>",C("nr",m+1),C("accID",t.get(f.accountId)??f.accountId,35),C("docRef",g.source.number??g.number,255),C("effDate",f.taxPointDate??g.date),C("desc",f.description),C("amnt",se(f.functionalCents)),C("amntTp",Ht(f.functionalCents)),C("custSupID",f.counterpartyCompanyId&&r(f.counterpartyCompanyId),35),C("invRef",g.source.number,255),C("cost",f.costCenterId,999),C("project",f.projectId,999),_&&f.taxCents!==void 0?"<vat>"+C("vatID",f.taxCode,35)+C("vatPerc",_)+C("vatAmnt",se(f.taxCents))+C("vatAmntTp",Ht(f.taxCents))+"</vat>":"",h?"<currency>"+C("curCode",f.currency)+C("curAmnt",se(f.amountCents))+"</currency>":"","</trLine>")}),i("</transaction>");i("</journal>")}}return i("</transactions>","</company>","</auditfile>"),s.join(`
|
|
12
|
+
`)}const ug=(e,t)=>{const n=Math.round(Number((e??"0").replace(",","."))*100);return t==="C"?-Math.abs(n):Math.abs(n)};function lg(e){const t=Q(e,"ledgerAccount").map(a=>{const c=N(a,"RGScode")??N(a,"leadCode");return{code:N(a,"accID")??"",name:N(a,"accDesc")??"",kind:N(a,"accTp")==="P"?"P":"B",...c?{rgs:c}:{}}}),n={},r=a=>{const c=N(a,"accID");c&&(n[c]=(n[c]??0)+ug(N(a,"amnt"),N(a,"amntTp")))};for(const a of Q(e,"obLine"))r(a);for(const a of Q(e,"trLine"))r(a);const o=Q(e,"header")[0]??"",s=N(o,"fiscalYear"),i=N(o,"endDate");return{accounts:t.filter(a=>a.code),closing:n,...s?{fiscalYear:s}:{},...i?{endDate:i}:{}}}function dg(e,t){const n=e.rgs??"";return/^BEiv/.test(n)?"equity":/^B(Iva|Mva|Fva|Vrd|Vor|Eff|Lim)/.test(n)?"asset":/^B(Vrz|Lsc|Las|Sch|Sub)/.test(n)?"liability":/^W(Omz|Oov|Fbe.*Rlm|Wiv)/.test(n)||/^WFbeOrb/.test(n)?"revenue":/^W/.test(n)?"expense":e.kind==="P"?t<0?"revenue":"expense":t<0?"liability":"asset"}const En=["lookup","condition","parallel","for-each"];function Ge(e){for(const t of e){if(!En.includes(t.type))return`staptype "${t.type}" mag niet meelezen (alleen ${En.join(", ")})`;if(t.type==="parallel")for(const n of t.branches??[]){const r=Ge(n);if(r)return r}if(t.type==="for-each"){const n=Ge(t.body??[]);if(n)return n}if(t.type==="condition"){const n=Ge(t.else??[]);if(n)return n}}return null}function fg(e,t){switch(e.kind){case"org":return!0;case"team":return!!t.teamId&&e.teamId===t.teamId;case"personal":return e.userId===t.userId}}function pg(e,t){return e.filter(n=>n.enabled&&fg(n.ownerScope,t))}function mg(e){return e.credentialScope?e.credentialScope:(e.authMode??"header")==="header"||e.oauth?.scope==="org"?"shared":"per-user"}function gg(e){return`mcp__${e}__`}const hg=1e3,yg=2e3,bg=500,_g=12e3,Ig=4e3,oa=["contact","company","work_item"];function Eg(e){if(!e)return!1;const t=e.slice(0,e.indexOf(":"));return oa.includes(t)}const Sg="high",Ag=[{key:"high",label:"tax_high",percent:21,kind:"standard"},{key:"low",label:"tax_low",percent:9,kind:"reduced"},{key:"zero",label:"tax_zero",percent:0,kind:"zero"},{key:"reverse_charge",label:"tax_reverse_charge",percent:0,kind:"reverse_charge"},{key:"exempt",label:"tax_exempt",percent:0,kind:"exempt"}];function sa(e,t){return t.find(n=>n.key===e)??{key:e,label:e,percent:0,kind:"zero"}}const vg=[{key:"high",label:"tax_high",kind:"standard",direction:"both",rates:[{validFrom:"2012-10-01",percent:21}],boxes:{"nl-ob":{sales:{base:"1a",tax:"1a"},purchase:{tax:"5b"}}}},{key:"low",label:"tax_low",kind:"reduced",direction:"both",rates:[{validFrom:"2019-01-01",percent:9}],boxes:{"nl-ob":{sales:{base:"1b",tax:"1b"},purchase:{tax:"5b"}}}},{key:"zero",label:"tax_zero",kind:"zero",direction:"both",rates:[{validFrom:"2000-01-01",percent:0}],boxes:{"nl-ob":{sales:{base:"1e"}}}},{key:"reverse_charge",label:"tax_reverse_charge",kind:"reverse_charge",direction:"both",rates:[{validFrom:"2000-01-01",percent:0}],boxes:{"nl-ob":{sales:{base:"1e"},purchase:{base:"2a",tax:"2a"}}},selfAssessed:!0},{key:"eu",label:"tax_eu",kind:"reverse_charge",direction:"both",rates:[{validFrom:"2000-01-01",percent:0}],boxes:{"nl-ob":{sales:{base:"3b"},purchase:{base:"4b",tax:"4b"}}},selfAssessed:!0,icp:!0,icpKind:"services"},{key:"eu_goods",label:"tax_eu_goods",kind:"zero",direction:"both",rates:[{validFrom:"2000-01-01",percent:0}],boxes:{"nl-ob":{sales:{base:"3b"},purchase:{base:"4b",tax:"4b"}}},selfAssessed:!0,icp:!0,icpKind:"goods"},{key:"eu_triangular",label:"tax_eu_triangular",kind:"zero",direction:"sales",rates:[{validFrom:"2000-01-01",percent:0}],boxes:{"nl-ob":{sales:{base:"3b"}}},icp:!0,icpKind:"triangular"},{key:"non_eu",label:"tax_non_eu",kind:"zero",direction:"both",rates:[{validFrom:"2000-01-01",percent:0}],boxes:{"nl-ob":{sales:{base:"3a"},purchase:{base:"4a",tax:"4a"}}},selfAssessed:!0},{key:"exempt",label:"tax_exempt",kind:"exempt",direction:"both",rates:[{validFrom:"2000-01-01",percent:0}],boxes:{}}];function cr(e,t){return e.rates.find(r=>r.validFrom<=t&&(!r.validTo||t<=r.validTo))?.percent??0}function Cg(e,t,n="sales"){return e.filter(r=>!r.archived&&(r.direction==="both"||r.direction===n)).map(r=>({key:r.key,label:r.label,kind:r.kind,percent:cr(r,t),...r.businessEntityId?{businessEntityId:r.businessEntityId}:{}}))}function ae(e){return new Date(e).toISOString().slice(0,10)}const to=/^\d{4}-\d{2}-\d{2}$/;function Tg(e){if(!e.key?.trim())return"tax_code_key";if(!e.label?.trim())return"tax_code_label";const t=e.rates??[];if(!t.length)return"tax_code_rates";for(const[n,r]of t.entries()){if(!to.test(r.validFrom)||r.validTo&&!to.test(r.validTo))return"tax_code_date";if(!(r.percent>=0&&r.percent<=100))return"tax_code_range";if(r.validTo&&r.validTo<r.validFrom)return"tax_code_date";const o=t[n-1];if(o&&(!o.validTo||o.validTo>=r.validFrom))return"tax_code_overlap"}return null}function Dt(e){if(e.kind!=="product")return 0;const t=1-(e.discountPercent??0)/100,n=U(e.quantity*e.unitPriceCents*t);return e.pricePer&&e.servicePeriod?Et(n,e.pricePer,e.servicePeriod):n}function kg(e,t,n){const r=e.map(u=>({...u,netCents:Dt(u),taxCents:0})),o=new Map;for(let u=0;u<r.length;u++){if(r[u].kind!=="product"||r[u].optional)continue;const d=n??r[u].taxRateKey,l=o.get(d);l?l.push(u):o.set(d,[u])}const s=[];let i=0,a=0;for(const[u,d]of o){const l=sa(u,t),p=d.reduce((m,_)=>m+r[_].netCents,0),g=U(p*l.percent/100),f=de(g,d.map(m=>r[m].netCents));for(let m=0;m<d.length;m++)r[d[m]].taxCents=f[m];s.push({taxRateKey:u,percent:l.percent,kind:l.kind,netCents:p,taxCents:g}),i+=p,a+=g}const c=r.reduce((u,d)=>d.costPriceCents==null||d.optional?u:u+U(d.costPriceCents*d.quantity),0);return{lines:r,totals:{netCents:i,taxCents:a,grossCents:i+a,costCents:c,byRate:s}}}const Og="onboarding-source",Mg=["support","billing","availability","sales","onboarding"],Rg=["keep","replace"],xt=[{key:"shift",label:"kind_shift",capacity:!0,productive:!1,absent:!1,icon:"calendar-clock"},{key:"allocation",label:"kind_allocation",capacity:!1,productive:!0,absent:!1,icon:"briefcase"},{key:"meeting",label:"kind_meeting",capacity:!1,productive:!1,absent:!1,icon:"users"},{key:"travel",label:"kind_travel",capacity:!1,productive:!1,absent:!1,icon:"car"},{key:"training",label:"kind_training",capacity:!1,productive:!1,absent:!1,icon:"graduation-cap"},{key:"break",label:"kind_break",capacity:!1,productive:!1,absent:!1,icon:"coffee"},{key:"absence",label:"kind_absence",capacity:!1,productive:!1,absent:!0,approvable:!0,icon:"palmtree"},{key:"sick",label:"kind_sick",capacity:!1,productive:!1,absent:!0,icon:"thermometer"},{key:"holiday",label:"kind_holiday",capacity:!1,productive:!1,absent:!0,icon:"party-popper"}],ia={key:"unknown",label:"kind_unknown",capacity:!1,productive:!1,absent:!1};function ee(e,t=xt){return t.find(n=>n.key===e)??{...ia,key:e}}function Se(e){return e==="published"||e==="approved"}function ur(e,t,n=xt){if(e.workstreamId!==t)return!1;const r=ee(e.kindKey,n);return r.absent?!1:r.productive||r.capacity}function Ng(e,t=xt){if(!e.userId||!Se(e.status))return!1;const n=ee(e.kindKey,t);return n.capacity||n.productive||n.absent}const Dg=864e5;function aa(e,t){return Math.round((t-e)/Dg)}function lr(e,t){const n=e.cycleMinutes.length;return n===0?0:(aa(e.anchor,t)%n+n)%n}function dr(e,t){return e.effectiveFrom!==void 0&&t<e.effectiveFrom?0:e.cycleMinutes[lr(e,t)]??0}function fr(e,t){return e.startTimes?.[lr(e,t)]}function pr(e,t,n,r){const o=e.filter(a=>a.effectiveFrom===void 0||a.effectiveFrom<=r),s=a=>a.sort((c,u)=>(u.effectiveFrom??0)-(c.effectiveFrom??0))[0],i=s(o.filter(a=>a.userId===t));return i||s(o.filter(a=>!a.userId&&a.teamId&&n.includes(a.teamId)))}function ca(e,t,n){return e.filter(r=>r.userId===t&&(r.effectiveFrom===void 0||r.effectiveFrom<=n)).sort((r,o)=>(o.effectiveFrom??0)-(r.effectiveFrom??0))[0]}const Sn=864e5;function xg(e){const t=Math.max(1,Math.round((e.to-e.from)/Sn));return Array.from({length:t},(n,r)=>e.from+r*Sn)}function An(e,t,n,r){const o=Math.min(t,r)-Math.max(e,n);return o>0?o/1e3:0}const no={interval:0,day:1,week:2};function wg(e,t){const{entries:n,patterns:r=[],terms:o=[]}=t,s=n.filter(l=>l.userId&&Se(l.status)&&ee(l.kindKey).capacity),i=n.filter(l=>l.userId&&Se(l.status)&&ee(l.kindKey).absent),a=t.userIds??[...new Set([...s.map(l=>l.userId),...r.map(l=>l.userId),...o.map(l=>l.userId)])].filter(l=>!!l),c={};let u="interval";const d=l=>{no[l]>no[u]&&(u=l)};for(const l of a){const p=t.teamIdsOf?.(l)??[];let g=0,f=0,m=0;for(const y of xg(e)){const b=Math.max(y,e.from),I=Math.min(y+Sn,e.to);m++;const v=s.filter(E=>E.userId===l).reduce((E,M)=>E+An(M.start,M.end,b,I),0);if(v>0){g+=v;continue}const T=pr(r,l,p,y),O=T?dr(T,y):0;if(T&&O>0){g+=O*60,d(fr(T,y)?"interval":"day");continue}T||f++}if(f>0){const y=ca(o,l,e.from);y&&(g+=y.weeklyMinutes*60*(f/7),d("week"))}const _=i.filter(y=>y.userId===l).reduce((y,b)=>y+An(b.start,b.end,e.from,e.to),0),h=Math.max(0,g-_);(h>0||m>0)&&(c[l]=h)}return{seconds:Object.values(c).reduce((l,p)=>l+p,0),precision:u,byUser:c}}function Pg(e,t){if(!e.some(a=>a.userId))return[];const n="",r=new Map;for(const a of e){const c=a.userId??n;r.set(c,(r.get(c)??0)+a.seconds)}const s=[...new Set([...Object.keys(t.byUser),...[...r.keys()].filter(a=>a!==n)])].map(a=>{const c=r.get(a)??0,u=t.byUser[a]??0;return{userId:a,requiredSeconds:c,capacitySeconds:u,netSeconds:u-c}});s.sort((a,c)=>a.netSeconds-c.netSeconds);const i=r.get(n)??0;return i>0&&s.push({requiredSeconds:i,capacitySeconds:0,netSeconds:-i}),s}function Lg(e,t,n,r){const o=e.filter(i=>i.userId&&Se(i.status)&&!ee(i.kindKey).absent),s=Object.entries(r.byUser).map(([i,a])=>{let c=0,u=0;for(const d of o){if(d.userId!==i||ee(d.kindKey).capacity&&!d.workstreamId)continue;const l=An(d.start,d.end,n.from,n.to);l<=0||(ur(d,t)?c+=l:u+=l)}return{userId:i,capacitySeconds:a,onThisSeconds:c,elsewhereSeconds:u,freeSeconds:Math.max(0,a-c-u)}});return s.sort((i,a)=>a.freeSeconds-i.freeSeconds),s}const Kg="demand-source",ro=1e3;function $g(e,t){let n=1;for(let r=1;r<=e;r++)n=t*n/(r+t*n);return n}function ua(e,t){if(e<=0)return 1;if(t<=0)return 0;if(e<=t)return 1;const n=$g(e,t),r=t/e;return n/(1-r*(1-n))}function la(e,t,n,r){return r<=0?1:e<=t?0:1-ua(e,t)*Math.exp(-(e-t)*n/r)}function da(e,t,n){return n<=0?0:e*t/n}function fa(e,t,n,r){if(e<=0||t<=0)return 0;const o=da(e,t,n);if(o<=0)return 0;const s=r.serviceLevelPercent/100,i=r.maxOccupancyPercent?r.maxOccupancyPercent/100:void 0;for(let a=Math.max(1,Math.ceil(o));a<=ro;a++)if(!(a<=o)&&!(la(a,o,r.targetSeconds,t)<s)&&!(i&&o/a>i))return a;return ro}const Ug=36e5,Fg=864e5;function Bg(e){return e==="day"?Fg:Ug}function jg(e,t){return e.start<t.end&&t.start<e.end}function We(e,t,n){const r=Math.min(e.end,n)-Math.max(e.start,t);return r>0?r/1e3:0}function pa(e,t,n){const r=e.handleSeconds??0,o=e.seconds??(e.volume!==void 0?e.volume*r:0);if(o<=0&&!e.volume)return{seconds:0,headcount:0};const s=(t.unplannedLossPercent??0)/100,i=s>0&&s<1?1/(1-s):1;if(t.model==="queue"&&e.volume!==void 0&&r>0){const a=fa(e.volume,r,n,t);return{seconds:o,headcount:a*i}}return{seconds:o,headcount:o/n*i}}function qg(e){const{entries:t,workstreamId:n,staffing:r,demand:o,range:s}=e,i=e.grain??"hour",a=Bg(i),c=a/1e3,u=e.kinds,d=t.filter(m=>Se(m.status)),l=d.filter(m=>ur(m,n,u)),p=d.filter(m=>ee(m.kindKey,u).capacity),g=d.filter(m=>ee(m.kindKey,u).absent),f=[];for(let m=Ie(s.from,i);m<s.to;m+=a){const _=m+a,h=_e(m,i);let y=0;for(const E of l)y+=We(E,m,_);let b=0;for(const E of p)b+=We(E,m,_);let I=0;for(const E of g)I+=We(E,m,_);const v=o?.[h]??{},T=pa(v,r,c),O=y/c;f.push({period:h,forecastVolume:v.volume,requiredSeconds:T.seconds,requiredHeadcount:T.headcount,scheduledSeconds:y,scheduledHeadcount:O,netHeadcount:O-T.headcount,capacitySeconds:b,absentSeconds:I})}return f}function ma(e,t){return e.workTypeKey??t?.defaultWorkTypeKey}function Gg(e,t,n){const r=ma(e,t);return r?n.find(o=>o.key===r)?.defaultBillable??!1:!1}function Wg(e){return e.filter(t=>t.netHeadcount<0&&t.requiredHeadcount>0)}const Vg=36e5,vn=6048e5,ga=8,Hg=.5,Yg=2;function zg(e){const t=Number(e.slice(0,4)),n=Number(e.slice(5,7)),r=Number(e.slice(8,10)),o=e.length>10?Number(e.slice(11,13)):0;return Date.UTC(t,n-1,r,o)}function Xg(e,t,n){const r=[];for(let s=0;s<n;s++){const i=t-s*vn,a=i-vn;let c=0,u=!1;for(const[d,l]of e)d>=a&&d<i&&(c+=l,u=!0);u&&r.push(c)}if(r.length<2)return 1;const o=r.reduce((s,i)=>s+i,0)/r.length;return o<=0?1:Math.min(Yg,Math.max(Hg,r[0]/o))}function Qg(e,t){if(!e?.length)return;let n;for(const r of e)t>=r.from&&t<r.to&&(n=r);return n}function Zg(e,t,n){const r=Math.max(1,n?.weeks??ga),o=new Map,s=new Set;for(const c of e)o.set(zg(c.period),c.value),s.add(c.period.slice(0,10));const i=Xg(o,Ie(t.from,"hour"),r),a=[];for(let c=Ie(t.from,"hour");c<t.to;c+=Vg){let u=0,d=0;for(let g=1;g<=r;g++){const f=c-g*vn,_=o.get(f)??(s.has(_e(f,"day"))?0:void 0);if(_===void 0)continue;const h=r-g+1;u+=_*h,d+=h}let l=d>0?u/d*i:0;const p=Qg(n?.adjustments,c);p?.absoluteVolume!==void 0?l=p.absoluteVolume:p?.factor!==void 0&&(l*=p.factor),a.push({period:_e(c,"hour"),volume:l})}return a}const ha="schedule_entry",ya="workstream";function Jg(e){return`${ha}:${e}`}function eh(e){return`${ya}:${e}`}const Cn=36e5,be=864e5;function th(e,t){const n=t==="day"?be:Cn,r=[];for(let o=Ie(e.from,t);o<e.to;o+=n)r.push(o);return r}function oo(e){const t=Math.max(1,Math.round((e.to-e.from)/be));return Array.from({length:t},(n,r)=>e.from+r*be)}function Yt(e,t,n,r){const o=Math.min(t,r)-Math.max(e,n);return o>0?o/1e3:0}function nh(e,t,n={}){const r=n.grain??"hour",o=th(t,r),s=r==="day"?be:Cn,i=new Map(o.map(l=>[l,0])),a=e.filter(l=>l.userId&&ee(l.kindKey).capacity),c=n.userIds?.length?new Set(n.userIds):null,u=new Set;for(const l of a)if(!(c&&l.userId&&!c.has(l.userId))){for(const p of o){const g=Yt(l.start,l.end,p,p+s);g>0&&i.set(p,(i.get(p)??0)+g)}for(const p of oo(t))Yt(l.start,l.end,p,p+be)>0&&u.add(`${l.userId}:${p}`)}const d=n.userIds??[...new Set([...a.map(l=>l.userId),...(n.patterns??[]).map(l=>l.userId)])].filter(l=>!!l);if(n.patterns?.length)for(const l of d){const p=n.teamIdsOf?.(l)??[];for(const g of oo(t)){if(u.has(`${l}:${g}`))continue;const f=pr(n.patterns,l,p,g);if(!f)continue;const m=dr(f,g);if(m<=0)continue;const _=fr(f,g);if(_){const[b,I]=_.split(":").map(Number),v=g+b*Cn+(I??0)*6e4,T=v+m*6e4;for(const O of o){const E=Yt(v,T,O,O+s);E>0&&i.set(O,(i.get(O)??0)+E)}continue}const h=o.filter(b=>b>=g&&b<g+be);if(!h.length)continue;const y=m*60/h.length;for(const b of h)i.set(b,(i.get(b)??0)+y)}}return o.map(l=>({period:_e(l,r),weight:i.get(l)??0}))}function ba(e,t){if(e<=0||!t.length)return[];const n=t.reduce((r,o)=>r+Math.max(0,o.weight),0);if(n<=0){const r=e/t.length;return t.map(o=>({period:o.period,seconds:r}))}return t.filter(r=>r.weight>0).map(r=>({period:r.period,seconds:e*r.weight/n}))}function rh(e,t,n){const r=new Map;for(const o of e){const s=o.by?t.filter(a=>n(a.period)<o.by):t,i=s.length?s:t;for(const a of ba(o.seconds,i)){const c=`${a.period}|${o.userId??""}`,u=r.get(c);u?u.seconds+=a.seconds:r.set(c,{...a,userId:o.userId})}}return[...r.values()].sort((o,s)=>o.period.localeCompare(s.period)||(o.userId??"").localeCompare(s.userId??""))}function _a(e){switch(e.kind){case"user":return`user:${e.userId}`;case"team":return`team:${e.teamId}`;case"org":return"org"}}function oh(e){if(typeof e!="string")return;const t=e.trim();if(t==="org")return{kind:"org"};const n=t.indexOf(":");if(n<=0)return;const r=t.slice(0,n),o=t.slice(n+1).trim();if(o){if(r==="user")return{kind:"user",userId:o};if(r==="team")return{kind:"team",teamId:o}}}function Ia(e){return _a(e)}function Ea(e){switch(e.kind){case"personal":return{kind:"user",userId:e.userId};case"team":return{kind:"team",teamId:e.teamId};case"org":return{kind:"org"}}}function sh(e){return e.agentId?{kind:"user",userId:e.agentId}:Ea(e.ownerScope)}function ih(e){return Ia(e)}const Sa="playbook-run",ah="run";function ch(e,t=0){return`${Sa}:${e}~${t}`}function uh(e){const t=e.indexOf("~");return t<0?e:e.slice(0,t)}function Aa(e,t){if(!t)return;let n=e;for(const r of t.split(".")){if(n===null||typeof n!="object")return;n=n[r]}return n}function lh(e,t){return e.targets.find(n=>n.activityTypes.includes(t))}function dh(e,t){if(t)return e.targets.find(n=>n.id===t)}function va(e){return e?.kind==="assignment"}function fh(e){const{trigger:t,agentId:n,target:r,activityType:o,assigneeUserId:s,authorUserId:i}=e;return va(t)?n?r?r.activityTypes.includes(o)?s?s!==n?"assigned to someone else":i&&i===n?"the agent assigned this to itself, which would restart its own run":null:`no assignee found at ${r.assigneePath}`:`activity type ${o} does not announce an assignment for ${r.id}`:`assignment target kind "${t.targetKind}" is not declared by any installed app`:"this playbook has no agent, so an assignment can never be for it":"trigger is not an assignment trigger"}const Tn=["suggest","outward","auto"];function ph(e){return typeof e=="string"&&Tn.includes(e)}function mh(e){const t=e.playbook?.autonomy??e.agent?.autonomy??"suggest";return e.demoted&&t==="auto"?"outward":t}function gh(e,t){const n=e??"suggest";return t&&Tn.indexOf(t)<Tn.indexOf(n)?t:n}function hh(e){return e.replace(/__/g," · ").replace(/\./g," · ").replace(/_/g," ")}function Ca(e){const t=e.split("__");return t[t.length-1]||e}function yh(e){const t=Ca(e).replace(/[_.]+/g," ").trim();return t?t.charAt(0).toUpperCase()+t.slice(1):e}const bh=[{name:"text",type:"string"},{name:"subject",type:"string"},{name:"from",type:"string"},{name:"type",type:"string"},{name:"direction",type:"string"},{name:"channelId",type:"string"},{name:"interactionId",type:"string"},{name:"itemId",type:"string"},{name:"activityId",type:"string"},{name:"authorType",type:"string"},{name:"authorName",type:"string"},{name:"textRaw",type:"string"},{name:"fromStatus",type:"string",onlyFor:["INTERACTION_STATUS_CHANGED"]},{name:"toStatus",type:"string",onlyFor:["INTERACTION_STATUS_CHANGED"]},{name:"toCategory",type:"string",onlyFor:["WORK_ITEM_STATUS_CHANGED"]},{name:"contactId",type:"string"},{name:"companyId",type:"string"},{name:"priority",type:"string"},{name:"inboxId",type:"string"},{name:"topicId",type:"string"},{name:"assigneeUserId",type:"string"}];function _h(e,t){return!e.onlyFor||!t?.length?!0:t.some(n=>e.onlyFor?.includes(n))}const Ih={topics:[{name:"topicId",type:"string"},{name:"topic",type:"string"},{name:"confidence",type:"number"},{name:"reasoning",type:"string"}],question:[{name:"answer",type:"boolean"},{name:"reasoning",type:"string"}],extract:[]};function mr(e){return`${e.type}:${e.id}`}function Eh(e){return[mr(e),e.lineId].join("#")}function Sh(e){const t=e.lastIndexOf("#"),n=e.indexOf(":");return n<=0||t<=n+1||t===e.length-1?null:{type:e.slice(0,n),id:e.slice(n+1,t),lineId:e.slice(t+1)}}function Ah(e){let t=1+Math.max(0,...e.map(n=>Number(/^l(\d+)$/.exec(n.id??"")?.[1]??0)));return e.map(n=>n.id?n:{...n,id:["l",t++].join("")})}const Ta="interaction";function ka(e){return e?.type===Ta?e.id:void 0}const Oa=64,Ma=8e3;function vh(e){const t=typeof e=="number"?e:Number(String(e??"").trim());if(!(!Number.isFinite(t)||t<=0))return Math.min(Math.max(Math.round(t),Oa),Ma)}const Ch=["condition","for-each","parallel","lookup","action","classify","generate","agent","wait-for-reply","wait-for-task"],Th={kind:"workflow",steps:[]};function kh(e){return e?.kind==="workflow"?e.steps:[]}function Oh(e){return e?.kind==="procedure"?e.procedure:void 0}function Mh(e){return e.assignmentId?"assignment":e.decider?.kind==="procedure"?"procedure":"workflow"}function Ra(e){const t=e?.approved??0,n=t+(e?.rejected??0);return{total:n,rate:n?t/n:0}}const Na=10,Da=.9;function Rh(e){const{total:t,rate:n}=Ra(e);return t>=Na&&n>=Da}const xa=["done","escalated","failed","stopped"];function Nh(e){return xa.includes(e)}function wa(e){return e==="waiting"}function Dh(e){return e==="running"||wa(e)}function gr(e){return e.subjectKind&&e.subjectId?{type:e.subjectKind,id:e.subjectId}:void 0}function xh(e){const t=gr(e);return t?mr(t):void 0}function wh(e){return ka(gr(e))}const Pa=36e5,Ph=24*Pa,Lh=48*Pa;function Kh(e,t,n){const r=e.availability;if(!r)return{stock:"unknown"};if(!(n<=(r.freshUntil??r.at+Lh))||r.qty===null)return{stock:"unknown"};const s=r.qty;return{stock:s>=t?"enough":"short",qty:s}}function $h(e,t,n){if(!Qn(e,n))return"invalid";if(e.pricedBy!=="quote"&&(e.termMonths??0)!==(t.termMonths??0))return"term";const r=t.deliverTo!==void 0&&t.deliverTo!=="own";if(t.deliverTo!==void 0&&e.dropship===(r?"no":"yes"))return"dropship";if(t.qualified&&!t.qualified.some(o=>o.app===e.provider?.app&&o.offer===e.provider.offer&&(!o.vendorSku||o.vendorSku===e.vendorSku)))return"qualification"}function Uh(e,t){if(e.pricedBy==="quote")return null;const n=e.currency===t.currency?1:t.rates?.[e.currency];return n?ui(e)*n:null}const so={enough:0,unknown:1,short:2},io=e=>e.unitCents??Number.POSITIVE_INFINITY;function Fh(e,t,n){const r=e.map(f=>{const m=$h(f,t,n),_=f.availability?.leadDays??f.leadDays;return{offer:f,...Kh(f,t.quantity,n),unitCents:Uh(f,t),..._!==void 0?{leadDays:_}:{},...m?{unsuitable:m}:{}}}),o=r.filter(f=>!f.unsuitable),s=r.filter(f=>f.unsuitable),i=o.filter(f=>f.unitCents!==null),a=i.length?i:o,c=[...a].sort((f,m)=>so[f.stock]-so[m.stock]||(f.stock==="short"?(m.qty??0)-(f.qty??0):0)||io(f)-io(m)||(f.leadDays??Number.POSITIVE_INFINITY)-(m.leadDays??Number.POSITIVE_INFINITY)||Number(m.offer.isDefault)-Number(f.offer.isDefault)),u=a.find(f=>f.offer.isDefault),d=u&&u.stock!=="short"?u:c[0]??null,l=t.pinned?r.find(f=>f.offer.id===t.pinned):void 0;if(l){const f=[...c,...o.filter(m=>!a.includes(m)),...s];return{chosen:l,why:"picked",alternatives:f.filter(m=>m!==l),currency:t.currency}}const p=[...c,...o.filter(f=>!a.includes(f))].filter(f=>f!==d);if(!d)return{chosen:null,alternatives:[...p,...s],currency:t.currency};const g=d.stock==="short"?"short":d===u?"preferred":u?"preferred_short":o.length===1?"only":"best";return{chosen:d,why:g,alternatives:[...p,...s],currency:t.currency}}const zt=864e5;function Bh(e,t){return e.lines.flatMap(n=>{const r=St(V(e,n),t);if(!r)return[];if(n.expected==="variable")return[{lineId:n.id,kind:"variable"}];if(n.quantity.from!=="fixed"||!n.price)return[{lineId:n.id,kind:"count"}];const o=Dt({kind:"product",quantity:n.quantity.value,unitPriceCents:n.price.cents,pricePer:n.price.per,servicePeriod:r});return[{lineId:n.id,kind:"fixed",cents:o}]})}function La(e,t,n=.3){const r=e.slice(-3);if(!r.length)return!1;const o=r.reduce((s,i)=>s+i,0)/r.length;return o===0?t!==0:Math.abs(t-o)/Math.abs(o)>n}const ao=e=>e.seriesId??e.id;function jh(e,t,n){return t.find(r=>{const o=V(e,r);return o.from<=n&&(o.to==null||o.to>n)})??t[t.length-1]}function qh(e,t,n,r={}){const o=(r.noticeDays??30)*zt,s=(r.windowDays??7)*zt,i=[];for(const a of e){if(a.status!=="active")continue;const c=new Map;for(const u of a.lines)c.set(ao(u),[...c.get(ao(u))??[],u]);for(const u of c.values()){const d=jh(a,u,n),l=V(a,d);if(l.to!=null&&l.to<=n)continue;const p={contractId:a.id,lineId:d.id},g=d.commitment??a.commitment,f=Zo(a,u),m=l.to??tt(f,g,n);if(d.customerCompanyId&&!d.itemId){const b=d.salesLine?t.find(I=>I.agreementId===d.salesLine?.agreementId&&I.seriesId===d.salesLine?.seriesId):void 0;b?b.ended?i.push({kind:"not_covered",...p,reason:"sales_ended"}):(d.quantity.from==="fixed"&&b.quantity!=null&&b.quantity!==d.quantity.value&&i.push({kind:"not_covered",...p,reason:"quantity"}),b.unbilled.length&&i.push({kind:"not_billed",...p,windows:b.unbilled}),m>b.effectiveEndAt&&i.push({kind:"term_mismatch",...p,purchaseEnd:m,salesEnd:b.effectiveEndAt})):i.push({kind:"not_covered",...p,reason:"no_sales_line"})}const _=!!g&&g.termMonths>=3&&(g.renew==="term"||n<tt(f,{...g,renew:"none"},f)),h=l.to==null&&_?Jo(f,g,n):null;if(h!=null&&h-n<=o&&i.push({kind:"notice_due",...p,deadline:h}),g&&g.termMonths>=1&&d.changeWindowDays){const b=Kn(f,g,n)+d.changeWindowDays*zt;b>n&&b-n<=s&&i.push({kind:"change_window",...p,closesAt:b})}const y=r.invoiced?.get(d.id);if(d.expected==="variable"&&y&&y.length>=2){const b=[...y].sort((v,T)=>v.from-T.from),I=b[b.length-1];La(b.slice(0,-1).map(v=>v.cents),I.cents)&&i.push({kind:"variable_jump",...p,cents:I.cents})}}}return i}const hr=["vendorSku","gtin","description","brand","group","cost","list","currency","stock","leadDays","lotSize","dropship"],Ka={day:864e5,week:7*864e5,month:31*864e5},$a=10;function Gh(e,t){const n=(e[0]??[]).map(a=>a.trim().toLowerCase()),r={},o=[];for(const a of hr){const c=t[a]?.trim();if(!c)continue;const u=n.indexOf(c.toLowerCase());u===-1?o.push(c):r[a]=u}const s=[],i=[];return r.vendorSku===void 0&&r.gtin===void 0?{rows:s,errors:[{line:1,message:"feed_no_key"}],missingHeaders:o}:(e.slice(1).forEach((a,c)=>{const u=c+2,d=v=>{const T=r[v];return T===void 0?"":(a[T]??"").trim()},l=d("vendorSku"),p=kt(d("gtin"));if(!l&&!p){i.push({line:u,message:"feed_row_no_key"});return}const g=d("cost")?nn(d("cost")):void 0;if(d("cost")&&g===void 0){i.push({line:u,message:"feed_row_price"});return}const f=d("list")?nn(d("list")):void 0,m=d("stock"),_=Number(m.replace(/[^\d-]/g,"")),h=r.stock===void 0?void 0:m&&/\d/.test(m)&&Number.isFinite(_)?Math.max(0,_):null,y=Number(d("leadDays")),b=Number(d("lotSize")),I=Wh(d("dropship"));s.push({line:u,...l?{vendorSku:l}:{},...p?{gtin:p}:{},...d("description")?{description:d("description")}:{},...d("brand")?{brand:d("brand")}:{},...d("group")?{group:d("group")}:{},...g!==void 0?{costCents:g}:{},...f!==void 0?{listCents:f}:{},...d("currency")?{currency:d("currency").toUpperCase()}:{},...h!==void 0?{stock:h}:{},...d("leadDays")&&Number.isFinite(y)?{leadDays:y}:{},...Number.isInteger(b)&&b>1?{lotSize:b}:{},...I?{dropship:I}:{}})}),{rows:s,errors:i,missingHeaders:o})}function Wh(e){const t=e.toLowerCase();if(t){if(/^(alleen|only)/.test(t))return"yes";if(/^(ja|yes|y|j|1|true|waar)$/.test(t))return"optional";if(/^(nee|no|n|0|false|onwaar)$/.test(t))return"no"}}function Vh(e,t,n){const r=new Map(t.filter(i=>i.vendorSku).map(i=>[i.vendorSku,i])),o=new Map(t.map(i=>[i.productId,i])),s=new Map;for(const i of n)for(const a of[i.gtin,...i.barcodes??[]]){const c=a?kt(a):void 0;c&&!s.has(c)&&s.set(c,i)}return e.map(i=>{const a=i.vendorSku?r.get(i.vendorSku):void 0;if(a)return{row:i,offer:a};const c=i.gtin?s.get(i.gtin):void 0;if(!c)return{row:i};const u=o.get(c.id);return u?{row:i,offer:u}:{row:i,product:c}})}function Hh(e,t,n,r=$a,o="week"){const s=new Map,i=[];let a=0;for(const u of e){const{row:d}=u;if(!("offer"in u)){i.push({line:d.line,...d.vendorSku?{vendorSku:d.vendorSku}:{},...d.gtin?{gtin:d.gtin}:{},...d.description?{description:d.description}:{},...d.brand?{brand:d.brand}:{},...d.group?{group:d.group}:{},...d.costCents!==void 0?{costCents:d.costCents}:{},..."product"in u?{productId:u.product.id}:{},...d.offer?{offer:d.offer}:{}});continue}const l=u.offer,p={qty:d.stock===void 0?l.availability?.qty??null:d.stock,at:n,source:"feed",...d.leadDays!==void 0?{leadDays:d.leadDays}:{},freshUntil:n+2*Ka[o]},g={availability:p};d.costCents!==void 0&&d.costCents!==l.costCents&&(g.costCents=d.costCents),d.listCents!==void 0&&d.listCents!==l.listCents&&(g.listCents=d.listCents),d.currency&&d.currency!==l.currency&&(g.currency=d.currency),d.lotSize!==void 0&&d.lotSize!==l.lotSize&&(g.lotSize=d.lotSize),d.dropship&&d.dropship!==l.dropship&&(g.dropship=d.dropship),d.vendorSku&&!l.vendorSku&&(g.vendorSku=d.vendorSku),Object.keys(g).length>1||p.qty!==(l.availability?.qty??null)||a++;const m=g.costCents!==void 0&&l.costCents>0?Math.round(Math.abs(g.costCents-l.costCents)/l.costCents*1e3)/10:0;s.set(l.id,{offerId:l.id,set:g,...m>r?{jump:{fromCents:l.costCents,toCents:g.costCents,percent:m}}:{}})}const c=t.filter(u=>u.availability?.source==="feed"&&!s.has(u.id)).map(u=>u.id);return{changes:[...s.values()],unchanged:a,gone:c,unmatched:i}}const Yh={vendorSku:["artikelnummer","artikelnr","artnr","sku","part number","partnumber","item","vendor sku"],gtin:["ean","gtin","barcode","ean13","upc"],description:["omschrijving","description","naam","name","product"],brand:["merk","brand","fabrikant","manufacturer","vendor"],group:["productgroep","groep","categorie","category","product group","productgroup"],cost:["netto","inkoopprijs","inkoop","prijs","price","net price","cost","dealer price"],list:["advies","adviesprijs","msrp","rrp","list price","erp"],currency:["valuta","currency"],stock:["voorraad","stock","qty","quantity","beschikbaar","available"],leadDays:["levertijd","lead time","leadtime","delivery days"],lotSize:["bestelveelvoud","veelvoud","lot size","order multiple","purchaselotsize"],dropship:["dropship","drop shipment","dropshipment","direct leveren"]};function zh(e){const t=e.map(s=>s.trim()),n=new Set,r={},o=s=>{for(const i of hr){if(r[i])continue;const a=t.find(c=>!n.has(c)&&Yh[i].some(u=>s(c.toLowerCase(),u)));a&&(r[i]=a,n.add(a))}};return o((s,i)=>s===i),o((s,i)=>s.startsWith(i)),r}const q=e=>(e??"").toLowerCase().replace(/[^a-z0-9]+/g,"");function Ua(e){const t=[];for(const n of e){const r=q(n.sku)||q(n.description),o=t.find(s=>(q(s.sku)||q(s.description))===r);o?(o.quantity+=n.quantity,o.serials.push(...n.serials)):t.push({...n,serials:[...n.serials]})}return t}function Xh(e,t){const n=q(e.orderRef),r=q(e.supplierRef);return n&&t.find(o=>q(o.number)===n)||n&&t.find(o=>q(o.reference)===n)||r&&t.find(o=>q(o.reference)===r)||null}const Fe={reference:0,sku:1,description:2,loose:3};function yr(e,t,n){const r=q(e.externalRef);if(r&&q(t.externalRef)===r)return{via:"reference",rank:Fe.reference};if(r&&t.externalRef)return null;const o=q(e.sku);if(o&&n.filter(c=>c.id===t.offerId||!!t.productId&&c.productId===t.productId).map(c=>q(c.vendorSku)).filter(Boolean).includes(o))return{via:"sku",rank:Fe.sku};const s=q(e.description),i=q(t.name);return!s||!i?null:s===i?{via:"description",rank:Fe.description}:i.includes(s)||s.includes(i)?{via:"description",rank:Fe.loose}:null}function Fa(e,t,n){const r=t.filter(a=>a.kind==="product"),o=new Set,s=[],i=[];return e.forEach((a,c)=>{let u=null;for(const d of r){if(o.has(d.id))continue;const l=yr(a,d,n);l&&(!u||l.rank<u.rank)&&(u={line:d,...l})}if(!u){i.push(c);return}o.add(u.line.id),s.push({docIndex:c,poLineId:u.line.id,via:u.via})}),{matches:s,unmatched:i}}function Qh(e,t,n,r){const o=Ua(e.lines);if(!t)return{lines:[],problems:[{code:"slip_no_order"}]};const{matches:s,unmatched:i}=Fa(o,t.lines,n),a=s.map(u=>({poLineId:u.poLineId,quantity:o[u.docIndex].quantity,serials:o[u.docIndex].serials,docIndex:u.docIndex,via:u.via})),c=[...ii({movement:"in",lines:a},t.lines,r).filter(u=>u.code!=="receipt_return_over_received").map(u=>({code:u.code,poLineId:u.poLineId,docIndex:a.find(d=>d.poLineId===u.poLineId)?.docIndex})),...i.map(u=>({code:"slip_unknown_item",docIndex:u}))];return{lines:a,problems:c}}function Zh(e){let t;try{t=JSON.parse(e.slice(e.indexOf("{"),e.lastIndexOf("}")+1))}catch{return null}const n=s=>typeof s=="string"||typeof s=="number"?String(s).trim():"",r=(Array.isArray(t.lines)?t.lines:[]).flatMap(s=>{const i=Number(String(s?.quantity??"").replace(",",".")),a=n(s?.description);if(!(i>0)||!a&&!n(s?.sku))return[];const c=[...Array.isArray(s?.serials)?s.serials.map(n):[],...n(s?.serial)?[n(s?.serial)]:[]].filter(Boolean);return[{...n(s?.sku)?{sku:n(s?.sku)}:{},description:a,quantity:i,serials:c}]}),o=n(t.deliveredOn);return{...n(t.supplierRef)?{supplierRef:n(t.supplierRef)}:{},...n(t.orderRef)?{orderRef:n(t.orderRef)}:{},.../^\d{4}-\d{2}-\d{2}$/.test(o)?{deliveredOn:o}:{},lines:r}}const Jh=864e5,co=e=>Date.parse([e,"T00:00:00Z"].join(""));function ey(e,t,n,{defaultPeriod:r,invoice:o}){const s=new Map(t.map(l=>[l.id,l.openQty])),i=new Map(t.map(l=>[l.id,l.receivedOpen])),a=[],c=[],u=[],d=new Set;for(const l of e){const p=l.period?{from:co(l.period.from),to:co(l.period.to)+Jh}:r,g=E=>!E.term||E.term.from<=p.from&&(E.term.to==null||p.from<E.term.to),f=t.map((E,M)=>({candidate:E,order:M,hit:yr(l,E,n)})).filter(E=>!!E.hit).filter(E=>g(E.candidate)),m=f.filter(E=>uo(E.candidate,o)!==null).filter(E=>!(E.candidate.kind==="contract_line"&&d.has(E.candidate.id))).sort((E,M)=>E.hit.rank-M.hit.rank||E.order-M.order);if(!m.length){f.length?u.push(l.id):c.push(l.id);continue}const _=E=>{const M=uo(E,o);return{receiptLineId:l.id,businessEntityId:E.businessEntityId,...E.productId?{productId:E.productId}:{},...E.use?{use:E.use}:{},...E.customerCompanyId?{customerCompanyId:E.customerCompanyId}:{},...E.dimensions?{dimensions:E.dimensions}:{},...E.ledgerCategoryKey?{ledgerCategoryKey:E.ledgerCategoryKey}:{},...M!==1?{rate:M}:{}}},h=(E,M,F)=>E.variable?null:Dt({kind:"product",quantity:M,unitPriceCents:E.unitPriceCents,discountPercent:E.discountPercent,pricePer:E.pricePer,servicePeriod:F}),y=m[0];if(y.candidate.kind==="contract_line"){const E=y.candidate;d.add(E.id);const M=l.quantity??E.openQty??1;a.push({..._(E),target:{kind:"contract_line",contractId:E.parentId,lineId:E.id,period:p},via:y.hit.via,quantity:M,amountCents:l.netCents,expectedCents:h(E,M,p),overQuantity:E.openQty!=null&&M!==E.openQty});continue}const b=m.filter(E=>E.candidate.kind==="po_line"&&E.hit.rank===y.hit.rank),I=l.quantity??Math.max(1,s.get(y.candidate.id)??1),v=[];let T=I;for(const{candidate:E}of b){if(T<=0)break;const M=Math.max(0,s.get(E.id)??0);if(!M)continue;const F=Math.min(M,T);v.push({candidate:E,quantity:F,over:!1}),s.set(E.id,M-F),T-=F}if(T>0){const E=v[v.length-1];E?(E.quantity+=T,E.over=!0):v.push({candidate:y.candidate,quantity:T,over:!0})}const O=de(l.netCents,v.map(E=>E.quantity));for(const E of v){const M=i.get(E.candidate.id);M!=null&&(E.notReceived=E.quantity>M,i.set(E.candidate.id,M-E.quantity))}v.forEach((E,M)=>{a.push({..._(E.candidate),target:{kind:"po_line",orderId:E.candidate.parentId,lineId:E.candidate.id},via:y.hit.via,quantity:E.quantity,amountCents:O[M],expectedCents:h(E.candidate,E.quantity,l.period?p:void 0),overQuantity:E.over,...E.notReceived?{notReceived:!0}:{}})})}return{allocations:a,unmatched:c,needsRate:u}}function uo(e,t){return!t||!e.currency||e.currency===t.currency?1:e.currency==="EUR"&&t.fxRate&&t.fxRate>0?t.fxRate:null}const Ba={percent:1,cents:100};function ty(e,t,{tolerance:n=Ba,needsRate:r=[]}={}){const o=[...t.map(i=>({receiptLineId:i,issue:"unmatched"})),...r.map(i=>({receiptLineId:i,issue:"fx_rate_required"}))],s=new Map;for(const i of e)s.set(i.receiptLineId,[...s.get(i.receiptLineId)??[],i]);for(const[i,a]of s){if(a.some(l=>l.overQuantity)&&o.push({receiptLineId:i,issue:"quantity"}),a.some(l=>l.notReceived)&&o.push({receiptLineId:i,issue:"not_received"}),a.some(l=>l.expectedCents===null))continue;const c=a.reduce((l,p)=>l+(p.expectedCents??0),0),u=Math.round(a.reduce((l,p)=>l+p.amountCents*(p.rate??1),0)),d=Math.max(Math.abs(c)*n.percent/100,n.cents);Math.abs(u-c)>d&&o.push({receiptLineId:i,issue:"price",expectedCents:c,amountCents:u})}return{ok:o.length===0&&e.length>0,issues:o}}const lo=(e,t)=>e.trim().toLowerCase()===t.trim().toLowerCase();function ja(e,t){if(!e)return!1;const n=e.answer.trim();return(n.endsWith("*")?t.answer.startsWith(n.slice(0,-1)):t.answer===n)?!e.match||lo(e.match,t.key)||lo(e.match,t.label):!1}function ny(e,t,n){const r=e.filter(o=>o.provider?.app===t&&ja(o.provider.option,n));return r.find(o=>!!o.provider?.option?.match)??r[0]}function ry(e){const t=[],n=new Map;for(const r of[...e].sort(oy)){const o=n.get(r.emoji);if(o){o.push(r.actor);continue}t.push(r.emoji),n.set(r.emoji,[r.actor])}return t.map(r=>{const o=n.get(r);return{emoji:r,count:o.length,actors:o}}).sort((r,o)=>o.count-r.count||t.indexOf(r.emoji)-t.indexOf(o.emoji))}const oy=(e,t)=>(e.createdAt??0)-(t.createdAt??0);function sy(e,t){return t?e.actors.some(n=>n.type==="user"&&n.id===t):!1}const qa=["1a","1b","1c","1d","1e","2a","3a","3b","3c","4a","4b","5a","5b","5c","5g"];function iy(e){const t=e.taxonomy??"nl-ob",n=new Map(e.codes.map(b=>[b.key,b])),r=n.get(e.standardKey??"high"),o={},s={},i=(b,I)=>{if(!e.trace||!b||!I.ref)return;const v=s[b]??[];v.includes(I.ref)||(s[b]=[...v,I.ref])};let a;const c=(b,I,v)=>{if(!b||!v)return;const T=o[b]??{};T[I]=(T[I]??0)+v,o[b]=T,a&&i(b,a)},u=new Map,d=new Set;let l=0;for(const b of e.lines){const I=b.vatDate??b.taxPointDate;if(I<e.from||I>e.to)continue;const v=n.get(b.taxCode);if(!v){d.add(b.taxCode);continue}const T=v.boxes[t]?.[b.side];if(a=b,b.side==="sales"){if(c(T?.base,"baseCents",b.baseCents),c(T?.tax,"taxCents",b.taxCents),v.icp){const O=[v.icpKind??"services",b.counterpartyCompanyId??""].join("|");u.set(O,(u.get(O)??0)+b.baseCents)}}else if(v.selfAssessed){const O=r?cr(r,b.taxPointDate)??0:0,E=Math.round(b.baseCents*O/100);c(T?.base,"baseCents",b.baseCents),c(T?.tax,"taxCents",E),l+=E,E&&i("5b",b)}else l+=b.taxCents,b.taxCents&&i("5b",b)}const p=qa.filter(b=>b<"5"),g=p.reduce((b,I)=>b+(o[I]?.taxCents??0),0);o["5a"]={taxCents:g},o["5b"]={taxCents:l},o["5c"]={taxCents:g-l},o["5g"]={taxCents:g-l};const f=b=>Math.trunc(b/100),m=b=>b>=0?Math.ceil(b/100):Math.floor(b/100),_={};for(const b of p){const I=o[b];I&&(_[b]={...I.baseCents!==void 0?{base:f(I.baseCents)}:{},...I.taxCents!==void 0?{tax:f(I.taxCents)}:{}})}const h=p.reduce((b,I)=>b+(_[I]?.tax??0),0),y=m(l);return _["5a"]={tax:h},_["5b"]={tax:y},_["5c"]={tax:h-y},_["5g"]={tax:h-y},{boxes:o,euros:_,icp:[...u.entries()].filter(([,b])=>b!==0).map(([b,I])=>{const[v,T]=b.split("|");return{...T?{counterpartyCompanyId:T}:{},kind:v,baseCents:I}}),unknownCodes:[...d],...e.trace?{refs:s}:{}}}function ay(e,t="quarter"){const n=t==="quarter"?3:t==="month"?1:12,r=s=>String(s).padStart(2,"0"),o=(s,i)=>new Date(Date.UTC(s,i,0)).getUTCDate();return Array.from({length:12/n},(s,i)=>{const a=i*n+1,c=a+n-1,u=c===12?e+1:e,d=c===12?1:c+1;return{label:t==="quarter"?`Q${i+1} ${e}`:t==="month"?`${e}-${r(a)}`:String(e),from:`${e}-${r(a)}-01`,to:`${e}-${r(c)}-${r(o(e,c))}`,dueOn:t==="year"?`${e+1}-03-31`:`${u}-${r(d)}-${r(o(u,d))}`}})}const cy=e=>new Date(Date.parse(`${e}T00:00:00Z`)+864e5).toISOString().slice(0,10);function uy(e,t,n){const r=n.filter(s=>s.filedAt<=t).reduce((s,i)=>i.to>s?i.to:s,""),o=r?cy(r):"";return o>e?o:e}class br extends Error{constructor(t){super(t),this.name="UnresolvedRefError"}}const ly=/^\{\{\s*([\w.]+)\s*\}\}$/,dy=/\{\{\s*([\w.]+)\s*\}\}/g,fy=/\$[A-Za-z_][\w]*\.[\w.]+/;function py(e,t,n={}){return pt(e,t,n)}function pt(e,t,n={}){return typeof e=="string"?my(e,t,n):Array.isArray(e)?e.map(r=>pt(r,t,n)):e&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([r,o])=>[r,pt(o,t,{...n,where:`${n.where??"een parameter"} "${r}"`})])):e}function my(e,t,n){const r=n.onMissing==="throw";if(r){const s=e.match(fy);if(s)throw new br(`"${s[0]}" in ${n.where??"een waarde"} is de oude schrijfwijze; gebruik {{ ${s[0].slice(1)} }}.`)}const o=e.match(ly);if(o){const s=fo(t,o[1],e,n);return s===void 0&&!r?"":s}return e.replace(dy,(s,i)=>{const a=fo(t,i,s,n);return a==null?"":typeof a=="object"?JSON.stringify(a):String(a)})}function fo(e,t,n,r){const o=t.split(".")[0]??"";if(r.onMissing==="throw"&&!Object.hasOwn(e,o)){const s=Object.keys(e);throw new br(`onbekende verwijzing ${n} in ${r.where??"een waarde"}: "${o}" bestaat niet. Beschikbaar: ${s.length?s.join(", "):"(nog niets)"}`)}return gy(e,t)}function gy(e,t){let n=e;for(const r of t.split(".")){if(n==null||typeof n!="object")return;n=n[r]}return n}const hy=new Set(["filled","empty"]);function yy(){return{kind:"rule",op:"==",varPath:"",value:""}}const by=new Set(["==","!=",">","<",">=","<="]);function Xt(e){return!!e&&typeof e=="object"&&"var"in e&&typeof e.var=="string"}function po(e){const t=typeof e;return t==="string"||t==="number"||t==="boolean"}function Ga(e){if(e===!0||e==null)return{kind:"group",op:"and",children:[]};if(e===!1)return null;const t=kn(e);return t?t.kind==="group"?t:{kind:"group",op:"and",children:[t]}:null}function kn(e){if(typeof e!="object"||e===null)return null;const t=Object.keys(e);if(t.length!==1)return null;const n=t[0],r=e[n];if(n==="and"||n==="or"){if(!Array.isArray(r))return null;const o=[];for(const s of r){const i=kn(s);if(!i)return null;o.push(i)}return{kind:"group",op:n,children:o}}if(n==="!!"||n==="!"){const o=Array.isArray(r)?r.length===1?r[0]:void 0:r;if(Xt(o))return{kind:"rule",op:n==="!!"?"filled":"empty",varPath:o.var,value:""};if(n==="!!")return null;const s=kn(r);return s?{kind:"not",child:s}:null}if(n==="in"){if(!Array.isArray(r)||r.length!==2)return null;const[o,s]=r;return!Xt(s)||!po(o)?null:{kind:"rule",op:"in",varPath:s.var,value:o}}if(by.has(n)){if(!Array.isArray(r)||r.length!==2)return null;const[o,s]=r;return!Xt(o)||!po(s)?null:{kind:"rule",op:n,varPath:o.var,value:s}}return null}function Ve(e){return e.kind==="group"?e.children.length===0?!0:e.children.length===1?Ve(e.children[0]):{[e.op]:e.children.map(Ve)}:e.kind==="not"?{"!":Ve(e.child)}:e.op==="filled"?{"!!":[{var:e.varPath}]}:e.op==="empty"?{"!":[{var:e.varPath}]}:e.op==="in"?{in:[e.value,{var:e.varPath}]}:{[e.op]:[{var:e.varPath},e.value]}}function _y(e){const t=Ga(e);return t&&On(t)||null}function On(e){if(e.kind==="group"){const t=e.children.map(On).filter(Boolean);return t.length===0?"":t.length===1?t[0]:t.join(e.op==="and"?" && ":" || ")}return e.kind==="not"?`!(${On(e.child)})`:e.op==="filled"?`$${e.varPath}`:e.op==="empty"?`!$${e.varPath}`:e.op==="in"?`${JSON.stringify(e.value)} in $${e.varPath}`:`$${e.varPath} ${e.op} ${JSON.stringify(e.value)}`}const Qt=[{min:0,max:59},{min:0,max:23},{min:1,max:31},{min:1,max:12},{min:0,max:7}];function Iy(e,t,n){const r=new Set;for(const o of e.split(",")){const[s,i]=o.split("/"),a=i===void 0?1:Number(i);if(!Number.isInteger(a)||a<1)return null;let c=t,u=n;if(s!=="*"&&s!==void 0){const[d,l]=s.split("-");if(c=Number(d),u=l===void 0?c:Number(l),!Number.isInteger(c)||!Number.isInteger(u)||(l===void 0&&i!==void 0&&(u=n),c<t||u>n||c>u))return null}for(let d=c;d<=u;d+=a)r.add(d)}return r.size?r:null}function _r(e){const t=e.trim().split(/\s+/);if(t.length!==Qt.length)return null;const n=[];for(let c=0;c<Qt.length;c++){const u=Qt[c],d=t[c];if(!u||d===void 0)return null;const l=Iy(d,u.min,u.max);if(!l)return null;n.push(l)}const[r,o,s,i,a]=n;return a.has(7)&&a.add(0),{minute:r,hour:o,dayOfMonth:s,month:i,dayOfWeek:a,anyDayOfMonth:t[2]==="*",anyDayOfWeek:t[4]==="*"}}function Ey(e){return _r(e)!==null}function Wa(e,t){const n=_r(e);if(!n||!n.minute.has(t.getUTCMinutes())||!n.hour.has(t.getUTCHours())||!n.month.has(t.getUTCMonth()+1))return!1;const r=n.dayOfMonth.has(t.getUTCDate()),o=n.dayOfWeek.has(t.getUTCDay());return n.anyDayOfMonth&&n.anyDayOfWeek?!0:n.anyDayOfMonth?o:n.anyDayOfWeek?r:r||o}const Va="@schedule",Mn=3;function Ha(e,t,n){const r=[],o=e.depth??0;if(o>=Mn)return{matched:[],skipped:t.map(a=>({ruleId:a.id,reason:`keten te diep (${o} van ${Mn})`}))};const s={event:e.payload,subject:e.subject??{}},i=[];for(const a of t){if(!a.enabled){r.push({ruleId:a.id,reason:"staat uit"});continue}if(a.trigger.kind==="schedule"){if(e.name!==Va){r.push({ruleId:a.id,reason:"luistert op de klok"});continue}const c=typeof e.payload?.at=="number"?e.payload.at:Number.NaN;if(!Number.isFinite(c)){r.push({ruleId:a.id,reason:"tik zonder tijdstip"});continue}if(!Wa(a.trigger.cron,new Date(c))){r.push({ruleId:a.id,reason:`niet aan de beurt (${a.trigger.cron})`});continue}}else if(a.trigger.kind!=="event"){r.push({ruleId:a.id,reason:`trigger "${a.trigger.kind}" draait hier niet`});continue}else if(a.trigger.name!==e.name){r.push({ruleId:a.id,reason:`luistert op ${a.trigger.name}`});continue}if(e.causedByRule===a.id){r.push({ruleId:a.id,reason:"dit event komt van deze regel zelf"});continue}if(!n(a.when??null,s)){r.push({ruleId:a.id,reason:"voorwaarde niet waar"});continue}i.push({rule:a,idempotencyKey:`${e.id}:${a.id}:${a.version}`})}return{matched:i,skipped:r}}function Sy(e,t){return{causedByRule:t,depth:(e.depth??0)+1}}function Ay(e,t){const{event:n,rules:r}=e.input,{matched:o,skipped:s}=Ha(n,r,t),i=o.flatMap(u=>u.rule.then.map(d=>d.action)),a=e.expected?.actions??[];if(i.length===a.length&&i.every((u,d)=>u===a[d]))return{caseId:e.id,ok:!0};const c=s.map(u=>`${u.ruleId}: ${u.reason}`).join(" · ");return{caseId:e.id,ok:!1,got:i,note:a.length?`verwacht [${a.join(", ")}], kreeg [${i.join(", ")}]${c?` — ${c}`:""}`:`mocht niet vuren, maar deed [${i.join(", ")}]`}}function vy(e,t){return e.wrote&&t in e.wrote?e.wrote[t]:t in e.params?e.params[t]:""}function Ya(e,t){return e.fields.filter(n=>t?.[n]!==void 0&&t[n]!==vy(e,n))}function Cy(e,t,n){return n?"undone":!t||!e.length?"unknown":e.some(r=>Ya(r,t).length)?"corrected":"kept"}function Ty(e){return e==="string[]"?["in"]:e==="boolean"?["==","!="]:e==="number"||e==="date"?["==","!=",">","<",">=","<="]:["==","!=","in","filled","empty"]}function ky(e){return`subject.${e.path}`}function Oy(e,t){return e.events.find(n=>n.name===t)}function My(e,t){return e.filter(n=>Aa(t,n.path)===void 0).map(n=>n.path)}const Rn=6e4,Ry=36e5,Ne=864e5,za=800;function mo(e,t){const n=Date.UTC(e,t+1,0);return n-new Date(n).getUTCDay()*Ne+Ry}function Ny(e){const t=new Date(e).getUTCFullYear();return e>=mo(t,2)&&e<mo(t,9)}function Xa(e,t){const n=t.dst==="eu"&&Ny(e)?60:0;return(t.utcOffsetMinutes+n)*Rn}function Dy(e){return(e+3)%7+1}function Qa(e,t){const n=Xa(e,t),r=e+n,o=Math.floor(r/Ne);if(!t.days.includes(Dy(o)))return null;const s=o*Ne;return{open:s+t.fromMinutes*Rn-n,close:s+t.toMinutes*Rn-n}}function Za(e,t){const n=Xa(e,t),r=e+n;return(Math.floor(r/Ne)+1)*Ne-n}function mt(e,t,n){if(t<=e)return 0;if(!n)return t-e;let r=0,o=e;for(let s=0;s<za&&o<t;s++){const i=Qa(o,n);if(i){const a=Math.max(o,i.open),c=Math.min(t,i.close);c>a&&(r+=c-a)}o=Za(o,n)}return r}function wt(e,t,n){if(!n)return e+t;let r=t,o=e;for(let s=0;s<za;s++){const i=Qa(o,n);if(i){const a=Math.max(o,i.open);if(i.close>a){const c=i.close-a;if(r<=c)return a+r;r-=c}}o=Za(o,n)}return e+t}function xy(e){const t=/^([01]\d|2[0-3]):([0-5]\d)$/.exec(e);return t?Number(t[1])*60+Number(t[2]):null}const gt=1,ht=2,yt=4;function wy(e){return e==="snoozed"?gt:ht}function Pt(e){const t=e.calendar;return t&&Array.isArray(t.days)?t:null}const Py=["speed_of_answer","first_response","next_response","resolution","close"],Ly=["snoozed","waiting_for_customer"],Ky=6e4,Ja=["speed_of_answer","first_response","next_response"],$y=[...Ja,"resolution","close"];function Pe(e){return e.state==="running"||e.state==="paused"}function Uy(e,t){return Pe(e)?{state:(e.state==="paused"?e.remainingMs>0:t<=e.dueAt)?"hit":"missed",settledAt:Math.max(t,e.startedAt)}:null}function go(e){return Pe(e)?{state:"void"}:null}function Fy(e,t,n,r){if(!Pe(e)||(e.pauseBits&t)!==0)return null;const o=e.pauseBits|t;return e.state==="paused"?{pauseBits:o}:{pauseBits:o,state:"paused",remainingMs:mt(n,e.dueAt,r)}}function By(e,t,n,r){if(!Pe(e)||(e.pauseBits&t)===0)return null;const o=e.pauseBits&~t;return o!==0?{pauseBits:o}:{pauseBits:o,state:"running",dueAt:wt(n,e.remainingMs,r)}}function jy({event:e,at:t,now:n,clocks:r,profile:o}){const s=Pt(o),i=Math.min(t,n),a=r.map(h=>({...h})),c=[],u=(h,y)=>{y&&(c.push({op:"patch",clockId:h.id,patch:y}),Object.assign(h,y))},d=h=>{for(const y of a)y.metric===h&&u(y,Uy(y,i))},l=h=>{for(const y of a)h.includes(y.metric)&&u(y,go(y))},p=h=>{for(const y of a)u(y,Fy(y,h,i,s))},g=h=>{for(const y of a)u(y,By(y,h,i,s))},f=h=>a.reduce((y,b)=>b.metric===h?Math.max(y,b.attempt):y,0)+1,m=h=>a.some(y=>y.metric===h&&Pe(y)),_=(h,y)=>{const b=o.targets.find(v=>v.metric===h);if(!b)return;const I=b.minutes*Ky;c.push({op:"start",metric:h,attempt:f(h),startedAt:y,targetMs:I,dueAt:wt(y,I,s)})};switch(e){case"apply":{for(const h of a)h.profileId!==o.id&&u(h,go(h));for(const h of o.targets){if(h.metric==="next_response")continue;a.some(b=>b.metric===h.metric&&b.profileId===o.id)||_(h.metric,i)}break}case"answered":d("speed_of_answer");break;case"outbound":{d("first_response"),d("next_response"),o.pauseOn.includes("waiting_for_customer")&&p(ht);break}case"inbound":{g(ht),!m("first_response")&&!m("next_response")&&_("next_response",i);break}case"resolved":d("resolution");break;case"closed":d("close"),d("resolution"),l(Ja);break;case"reopened":m("resolution")||_("resolution",i),m("close")||_("close",i);break;case"snoozed":o.pauseOn.includes("snoozed")&&p(gt);break;case"unsnoozed":g(gt);break;case"hold":p(yt);break;case"unhold":g(yt);break;case"discarded":l($y);break}return c}function ec(e){return e.state==="running"||e.state==="paused"}function qy(e){return(e.pauseBits&yt)!==0}function bt(e,t){const n=Pt(e);return e.state==="paused"?e.remainingMs:t>=e.dueAt?-mt(e.dueAt,t,n):mt(t,e.dueAt,n)}function Gy(e,t){return e.state==="paused"?wt(t,e.remainingMs,Pt(e)):e.dueAt}function Wy(e,t){const n=e.filter(ec);if(!n.length)return;const r=n.filter(s=>s.state==="running");return(r.length?r:n).reduce((s,i)=>bt(i,t)<bt(s,t)?i:s)}function Vy(e,t){if(e.state==="missed")return"breached";if(e.state==="hit")return"met";if(e.state==="paused")return"paused";if(e.state==="void")return"met";const n=bt(e,t);return n<=0?"breached":n<=e.targetMs/5?"urgent":"running"}function Hy(e){const t=Math.floor(Math.abs(e)/1e3),n=Math.floor(t/86400),r=Math.floor(t%86400/3600),o=Math.floor(t%3600/60);return n?r?`${n}d ${r}u`:`${n}d`:r?o?`${r}u ${o}m`:`${r}u`:o?`${o}m`:`${t%60}s`}const tc="strategy_item";function Ir(e){return`${tc}:${e}`}function Yy(e,t=25){const n=new Set([Ir(e.id)]);for(const r of e.ancestorKeys??[])n.add(r);return Array.from(n).slice(0,t)}function zy(e){return e?[...e.ancestorKeys??[],Ir(e.id)]:[]}const Le=[{key:"area",label:"level_area",order:10,measurable:!1,icon:"compass"},{key:"objective",label:"level_objective",order:20,measurable:!0,icon:"target"},{key:"key_result",label:"level_key_result",order:30,measurable:!0,icon:"gauge"}],nc=999,rc=7;function oc(e,t=Le){return t.find(n=>n.key===e)}function _t(e,t=Le){return oc(e,t)?.order??nc}function Xy(e,t,n=Le){return _t(t,n)<=_t(e,n)}function Qy(e,t=Le){const n=_t(e,t);return t.filter(o=>o.order>n).sort((o,s)=>o.order-s.order)[0]?.key??e}function Zy(e){const t=e.trim().toLowerCase();return t?t.includes("key result")||t.includes("keyresult")||t==="kr"?"key_result":t.includes("objective")||t.includes("goal")||t.includes("doel")?"objective":t.includes("focus")||t.includes("area")||t.includes("theme")?"area":null:null}const Nn={pending:"open",on_track:"open",at_risk:"open",off_track:"open",paused:"paused",achieved:"closed",missed:"closed"};function Jy(e){return Nn[e]??"open"}function eb(e){return Object.keys(Nn).filter(t=>e.includes(Nn[t]))}const tb=864e5,Lt=e=>e<=0?0:e>1?1:e;function nb(e,t){const{direction:n}=e,r=e.startValue??0,o=e.targetValue??0;if(!Number.isFinite(t))return 0;const s=n==="down"?t<=o:t>=o,i=o-r;return(n==="down"?i<0:i>0)?Lt((t-r)/i):s?1:0}function rb(e,t){const{startDate:n,targetDate:r}=e;if(!(typeof n!="number"||typeof r!="number")&&!(r<=n))return Lt((t-n)/(r-n))}const sc=.1,ic=.25;function ob(e,t){if(typeof e!="number"||typeof t!="number")return;if(e>=1)return"achieved";const n=t-e;return n>=ic?"off_track":n>=sc?"at_risk":"on_track"}function sb(e,t){if(t)return Lt(e/t)}function ib(e){const t=e.map(n=>n.progress?.ratio).filter(n=>typeof n=="number"&&Number.isFinite(n));if(t.length)return Lt(t.reduce((n,r)=>n+r,0)/t.length)}function ab(e,t){const n=e.lastCheckInAt??e.createdAt;if(typeof n!="number")return 0;const r=(e.checkInEveryDays??rc)*tb,o=t-n-r;return o>0?o:0}function cb(e){return e.targetDate??Number.MAX_SAFE_INTEGER}function ub(e){const t=new Map,n=[...e].sort((r,o)=>r.startedAt-o.startedAt);for(const r of n){const o=`${r.workType??""}|${r.scopeKey??""}`,s=t.get(o)??{workType:r.workType,scopeKey:r.scopeKey,scopeLabel:r.scopeLabel,seconds:0,hours:0,entryIds:[],from:r.startedAt,to:r.startedAt};s.seconds+=r.durationSeconds??0,s.hours=Math.round(s.seconds/3600*100)/100,s.entryIds.push(r.id),s.to=r.startedAt,t.set(o,s)}return[...t.values()]}function lb(e,t){const n=e.accumulatedSeconds||0;return e.runningSince?n+Math.max(0,Math.floor((t-e.runningSince)/1e3)):n}function db(e,t){const n=Math.max(1,Math.ceil(Math.max(0,e)/60));if(!t||t==="exact")return n*60;const r=Number(t);return!Number.isFinite(r)||r<=0?n*60:Math.ceil(n/r)*r*60}function fb(e){const t=Math.max(0,Math.round(e/60));return`${Math.floor(t/60)}:${String(t%60).padStart(2,"0")}`}function pb(e){const t=Math.max(0,Math.floor(e)),n=s=>String(s).padStart(2,"0"),r=Math.floor(t/60)%60,o=Math.floor(t/3600);return o>0?`${o}:${n(r)}:${n(t%60)}`:`${n(r)}:${n(t%60)}`}function ac(e){return(e||"").normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").slice(0,48).replace(/^-+|-+$/g,"")}function mb(e,t){const n=ac(e)||"werksoort",r=new Set(t);if(!r.has(n))return n;for(let o=2;o<500;o++){const s=`${n}-${o}`;if(!r.has(s))return s}return`${n}-${r.size+1}`}function gb(e,t){const n=e.ownerScope;return!n||n.kind==="org"?!0:t.includes(n.teamId)}function hb(e){return e.filter(t=>!t.archived).sort(cc)}function cc(e,t){const n=(e.order??0)-(t.order??0);return n!==0?n:(e.label||"").localeCompare(t.label||"")}const uc=20,lc=20,He=300;function ce(e){return e.toLowerCase().replace(/[^\p{L}\p{N}\s]/gu," ").replace(/\s+/g," ").trim()}function dc(e){const t=e.replace(/\s+/g," ").trim();if(t.length<=He)return t;const n=t.slice(0,He),r=Math.max(n.lastIndexOf(". "),n.lastIndexOf("! "),n.lastIndexOf("? "));return r>He*.6?n.slice(0,r+1):`${n.trimEnd()}…`}function yb(e,t){const n=dc(t.text),r=ce(n);if(!r||(e.examples??[]).some(i=>ce(i)===r))return null;const o=e.exampleCandidates??[],s=o.findIndex(i=>ce(i.text)===r);if(s>=0){if(o[s].corrected||!t.corrected)return null;const i=[...o];return i[s]={...i[s],corrected:!0,addedAt:t.addedAt},ho(i)}return ho([{...t,text:n},...o]).slice(0,lc)}function ho(e){return[...e].sort((t,n)=>Number(n.corrected)-Number(t.corrected)||n.addedAt-t.addedAt)}function bb(e,t){const n=ce(t),r=(e.examples??[]).filter(s=>s.trim());return{examples:r.some(s=>ce(s)===n)?r:[...r,t].slice(-uc),exampleCandidates:fc(e,t)}}function fc(e,t){const n=ce(t);return(e.exampleCandidates??[]).filter(r=>ce(r.text)!==n)}function pc(e,t){const n=e.ownerScope;return n?n.kind==="org"?!0:n.kind==="team"?!!t&&n.teamId===t:!1:!1}function _b(e,t){return e.filter(n=>pc(n,t))}const mc=["apps","settings","wake"],Kt="businessEntityId";function Ib(e,t){const n=e.normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40)||"workspace",r=new Set([...gc.map(s=>s.key),...mc,...t]);let o=n;for(let s=2;r.has(o);s++)o=`${n}-${s}`;return o}function Eb({app:e,requested:t,current:n,isRecord:r,index:o}){const s=o.byApp[e]??[],i=a=>!!a&&(s.includes(a)||r&&a!=="apps"&&o.visible.includes(a));return i(t)?t:i(n)?n:s[0]??"apps"}const gc=[{key:"home",owner:"assist",icon:"HomeMark",order:10,sections:["home"]},{key:"inbox",owner:"communication",icon:"InboxMark",order:20,sections:["inbox"]},{key:"work",owner:"work",icon:"WorkMark",order:30,sections:["work","planning","time"]},{key:"files",owner:"storage",icon:"FilesMark",order:40,sections:["files"]},{key:"customers",owner:"crm",icon:"CrmMark",order:50,sections:["customers"]},{key:"sales",owner:"sales",icon:"SalesMark",order:60,sections:["sales","delivery","receivables","assortment"]},{key:"purchase",owner:"purchase",icon:"ShoppingCart",order:70,sections:["purchase","contracts","assortment"]},{key:"finance",owner:"finance",icon:"Wallet",order:80,sections:["finance","receivables","reports","ledger"]},{key:"knowledge",owner:"kb",icon:"KnowledgeMark",order:90,sections:["knowledge"]},{key:"reports",owner:"analytics",icon:"AnalyticsMark",order:100,sections:["reports"]}];function Sb(e,t){const n=e.search(/[?#]/),r=n<0?e:e.slice(0,n),o=n<0?"":e.slice(n),[s,i,...a]=r.split("/").filter(Boolean);return!s||s!=="apps"&&s!=="settings"&&!t(s)?null:{workspace:s,...i?{app:i}:{},path:`/${a.join("/")}${o}`}}function Ab({workspace:e,app:t,path:n}){if(!t)return`/${e}`;const o=n==="/"||n===""||/^\/?[?#]/.test(n)?n.replace(/^\//,""):n.startsWith("/")?n:`/${n}`;return`/${e}/${t}${o}`}const hc=["invoice","credit_note"];function vb(e){return!!e.issuedAt&&hc.includes(e.kindKey)}function Cb(e,t="sales"){const n=i=>e.totals?.byRate?.find(a=>a.taxRateKey===i),r=e.issuedPaper?.counterparty,o=r?.address??e.issuedPaper?.billingAddress,s=[o?.street,o?.houseNumber].filter(Boolean).join(" ");return{sourceApp:t,documentId:e.id,...e.businessEntityId?{path:`/apps/${t}/${G(e.kindKey).path}/${e.id}?${Kt}=${encodeURIComponent(e.businessEntityId)}`}:{},direction:"sale",kind:e.kindKey==="credit_note"?"credit_note":"invoice",businessEntityId:e.businessEntityId,...e.number?{number:e.number}:{},counterparty:{companyId:r?.companyId||Tt(e),...r?.number?{number:r.number}:{},name:r?.name??"",...r?.vatNumber?{vatNumber:r.vatNumber}:{},...r?.kvkNumber?{kvkNumber:r.kvkNumber}:{},...o?{address:{...s?{street:s}:{},...o.postalCode?{postalCode:o.postalCode}:{},...o.city?{city:o.city}:{},...o.country?{country:o.country}:{}}}:{},...o?.country?{country:o.country}:{}},issueDate:ae(e.issuedAt??Date.now()),...e.dueAt?{dueDate:ae(e.dueAt)}:{},currency:e.currency,...e.fxRate?{fxRate:e.fxRate}:{},lines:e.lines.filter(i=>i.kind==="product"&&!i.optional).map(i=>{const a=e.taxOverrideKey??i.taxRateKey,c=n(a);return{description:i.name,netCents:i.netCents,taxCents:i.taxCents,taxRateKey:a,taxKind:c?.kind??"standard",...c?.percent!==void 0?{taxPercent:c.percent}:{},...i.ledgerCategoryKey?{ledgerCategoryKey:i.ledgerCategoryKey}:{},...i.productId?{productId:i.productId}:{},dimensions:{customerCompanyId:e.companyId,...i.dimensions},...i.costPriceCents!=null?{costCents:Math.round(i.costPriceCents*i.quantity)}:{},...i.servicePeriod?{period:{from:ae(i.servicePeriod.from),to:ae(i.servicePeriod.to-864e5)}}:{}}}),totals:{netCents:e.totals?.netCents??0,taxCents:e.totals?.taxCents??0,grossCents:e.totals?.grossCents??0},...e.kindKey==="credit_note"&&e.sourceTransactionId?{creditsDocumentId:e.sourceTransactionId}:{},...e.externalIds?.length?{externalIds:e.externalIds}:{}}}function Tb(e,t={}){const n=G(e.kindKey),r=e.totals??{netCents:0,taxCents:0,grossCents:0,byRate:[]};return{customer:{name:t.companyName??"",contact:t.contactName??"",vat_number:t.companyVatNumber??"",number:t.companyNumber??"",address:Mb(t.companyAddress),street:t.companyAddress?.street??"",house_number:t.companyAddress?.houseNumber??"",postal_code:t.companyAddress?.postalCode??"",city:t.companyAddress?.city??"",country:t.companyAddress?.country??""},organization:{name:t.organizationName??""},[n.key]:{number:e.number??"",credited_number:t.creditedNumber??"",title:e.title??"",reference:e.reference??"",version:String(e.version??1),date:ge(e.issuedAt),valid_until:ge(e.expiresAt),due_date:ge(e.dueAt),delivery_date:ge(e.deliveredAt),period_from:ge(e.periodFrom),period_to:ge(e.periodTo),payment_term:e.paymentTerm?.label??"",reverse_charge:r.byRate.some(o=>o.kind==="reverse_charge"||o.taxRateKey==="reverse_charge"),note:e.introText??"",terms:e.termsText??""},totals:{net:J(r.netCents),tax:J(r.taxCents),gross:J(r.grossCents)}}}function kb(e,t=[],n=yc){const r=e.totals??{netCents:0,grossCents:0,byRate:[]},o=u=>t.find(d=>d.key===u)?.percent??0,s=(e.lines??[]).some(u=>u.kind==="product"&&(u.discountPercent??0)>0),i=u=>s?[u.discountPercent?[String(u.discountPercent).replace(".",","),"%"].join(""):""]:[],a={block_id:"lines",type:"table",columns:[{label:n.description},{label:n.quantity,align:"right"},{label:n.unitPrice,align:"right"},...s?[{label:n.discount,align:"right"}]:[],{label:n.net,align:"right"}],rows:(e.lines??[]).map(u=>u.kind==="text"?[u.name,"","",...s?[""]:[],""]:[Ob(u.name,u.description,u.optional,n.optional),Rb(u,n),Wn(u)?"":u.pricePer?[J(u.unitPriceCents),n.per[u.pricePer]].join(" "):J(u.unitPriceCents),...i(u),J(u.netCents)])},c={block_id:"totals",type:"totals",rows:[{label:n.net,amount:J(r.netCents)},{label:n.gross,amount:J(r.grossCents),emphasis:!0}],taxRows:r.byRate.map(u=>({label:`${n.tax} ${u.percent??o(u.taxRateKey)}%`,amount:J(u.taxCents)}))};return{lines:[a],totals:[c]}}const yc={description:"Omschrijving",optional:"optioneel",quantity:"Aantal",unitPrice:"Stuksprijs",discount:"Korting",per:{month:"per maand",quarter:"per kwartaal",year:"per jaar"},units:{second:"s",minute:"min",hour:"uur",message:"berichten",gigabyte:"GB"},net:"Netto",tax:"Btw",gross:"Totaal"};function Ob(e,t,n,r){const o=t?`${e} — ${t}`:e;return n?`${o} (${r})`:o}function Mb(e){return e?.street?[e.street,e.houseNumber].filter(Boolean).join(" "):""}function Rb(e,t){const n=Wn(e);return n?[yo(n.amount),t.units[n.unit]??n.unit].join(" "):yo(e.quantity)}function yo(e){return Number.isInteger(e)?String(e):String(e).replace(".",",")}function ge(e){if(!e)return"";const t=new Date(e),n=r=>String(r).padStart(2,"0");return`${n(t.getDate())}-${n(t.getMonth()+1)}-${t.getFullYear()}`}function bc(e){const t=G(e),n=t.key,r=t.numbered;return[{block_id:"head",type:"letterhead",fields:[...r?[{key:"number",label:Db[n]?.number??"Nummer",value:`{${n}.number}`}]:[],{key:"date",label:"Datum",value:`{${n}.date}`},...r?[{key:"due_date",label:"Vervaldatum",value:`{${n}.due_date}`}]:[{key:"valid_until",label:"Geldig tot",value:`{${n}.valid_until}`}],...t.credits?[{key:"credited_number",label:`Op ${G(t.credits).name.toLowerCase()}`,value:`{${n}.credited_number}`}]:[],{key:"reference",label:"Referentie",value:`{${n}.reference}`}],recipient:["{customer.name}","{customer.contact}","{customer.address}","{customer.postal_code} {customer.city}"]},{block_id:"title",type:"heading",level:1,text:`{${n}.title}`},{block_id:"intro",type:"paragraph",text:bo[n]??bo.quote},{block_id:"period",type:"paragraph",text:`Periode: {${n}.period_from} t/m {${n}.period_to}`},{block_id:"note",type:"paragraph",text:`{${n}.note}`},{block_id:"lines",type:"table",columns:[{label:""}],rows:[]},{block_id:"totals",type:"totals",rows:[]},...r?[{block_id:"reverse_charge",type:"paragraph",text:"Btw verlegd. Btw-nummer afnemer: {customer.vat_number}."},{block_id:"payment",type:"paragraph",text:`Betaling: {${n}.payment_term}. Wij verzoeken u het bedrag vóór {${n}.due_date} over te maken onder vermelding van {${n}.number}.`}]:[],{block_id:"terms",type:"paragraph",text:_o[n]??_o.quote}]}const Nb=e=>({note:{key:`${G(e).key}.note`,exists:!0},period:{key:`${G(e).key}.period_from`,exists:!0},reverse_charge:{key:`${G(e).key}.reverse_charge`,exists:!0}}),Db={invoice:{number:"Factuurnummer"},credit_note:{number:"Creditnotanummer"}},bo={quote:`Beste {customer.contact},
|
|
13
13
|
|
|
14
14
|
Hierbij onze offerte. Hieronder vindt u de specificatie.`,order:`Beste {customer.contact},
|
|
15
15
|
|
|
@@ -17,36 +17,36 @@ Hierbij de bevestiging van uw opdracht.`,invoice:`Beste {customer.contact},
|
|
|
17
17
|
|
|
18
18
|
Hierbij onze factuur. Hieronder vindt u de specificatie.`,credit_note:`Beste {customer.contact},
|
|
19
19
|
|
|
20
|
-
Hierbij onze creditnota. De onderstaande bedragen worden met u verrekend.`},ho={quote:"Genoemde bedragen zijn exclusief btw tenzij anders vermeld. Deze offerte is geldig tot {quote.valid_until}.",order:"Genoemde bedragen zijn exclusief btw tenzij anders vermeld.",invoice:"Genoemde bedragen zijn exclusief btw tenzij anders vermeld.",credit_note:"Genoemde bedragen zijn exclusief btw tenzij anders vermeld."},Eb=dc("quote"),fc=["direct_debit","cash","card"],pc=7,Sb={steps:[{level:1,afterDays:7,templateKey:"dunning_reminder",channel:"email"},{level:2,afterDays:21,templateKey:"dunning_notice",channel:"email"},{level:3,afterDays:14,templateKey:"dunning_final",channel:"email"}],minOpenCents:2500},mc=(e,t)=>new Date(Date.parse(`${e}T00:00:00Z`)+t*864e5).toISOString().slice(0,10);function gc(e,t,n){if(e.dueAt==null||e.openCents<(t.minOpenCents??0)||e.paymentMethod&&fc.includes(e.paymentMethod))return null;const r=[...t.steps].sort((a,c)=>a.level-c.level),o=r.find(a=>a.level>e.dunningLevel);if(!o)return r.length?"done":null;const s=e.dunningLevel&&e.lastDunningAt?e.lastDunningAt:e.dueAt,i=mc(ae(s),o.afterDays);return i<=n?{row:e,step:o,dueOn:i}:null}const hc=(e,t)=>e.dueAt!=null&&e.openCents>0&&!!e.paymentMethod&&fc.includes(e.paymentMethod)&&mc(ae(e.dueAt),pc)<t;function Ab(e,t,n){const r=[],o=[],s=[];for(const i of e){hc(i,n)&&s.push(i);const a=gc(i,t,n);a==="done"?o.push(i):a&&r.push(a)}return{due:r,waiting:o,uncollected:s}}const yc=Rt.map(e=>e.key),bc="product",_c="agreement";function Ic(e,t){return`${e}:${t}`}function vb(e){return`${bc}:${e}`}function Ec(e,t){return`/apps/sales${e}?${Kt}=${encodeURIComponent(t)}`}function Cb(e,t){const n=e.businessEntityId||t;if(n)return Ec(`/${G(e.kindKey).path}/${e.id}`,n)}function Tb(e,t){const n=e.businessEntityId||t;return n?`/apps/catalog/products/${e.id}?${Kt}=${encodeURIComponent(n)}`:void 0}function kb(e){return`${_c}:${e}`}function Ob(e,t){const n=e.businessEntityId||t;return n?Ec(`/agreement/${e.id}`,n):void 0}function Mb(e){const t=e.indexOf(":");if(t<0)return;const n=e.slice(0,t);return yc.includes(n)?e.slice(t+1):void 0}function Rb(e){const t=new Set([Ic(e.kindKey,e.id)]);return e.companyId&&t.add(`company:${e.companyId}`),e.contactId&&t.add(`contact:${e.contactId}`),e.invoiceTo?.companyId&&t.add(`company:${e.invoiceTo.companyId}`),e.dealItemId&&t.add(`work_item:${e.dealItemId}`),Array.from(t)}const Nb=4;function Db(e,t){const n=String(t).padStart(Math.max(1,e.padding),"0");return`${e.prefix}${e.period?`${e.period}-`:""}${n}`}function xb(e,t=Date.now()){return e==="year"?String(new Date(t).getFullYear()):""}const wb=["cash","credit","direct_debit","card","other"],Sc=(e,t)=>!e.direction||e.direction===t;function Pb(e,t,n={}){const r=e.filter(s=>!s.archived&&Sc(s,t)),o=s=>s?r.find(i=>i.code===s):void 0;return o(n.explicit)??o(n.role)??r.find(s=>s.isDefault&&s.direction===t)??r.find(s=>s.isDefault)??r[0]??null}function Lb(e,t){return e+Math.max(0,Math.round(t))*24*60*60*1e3}function Kb(e){return{code:e.code,label:e.label,method:e.method,dueDays:e.dueDays}}const $b=[{code:"14D",label:"Binnen 14 dagen",method:"credit",dueDays:14,isDefault:!0,order:0},{code:"30D",label:"Binnen 30 dagen",method:"credit",dueDays:30,order:1},{code:"CONTANT",label:"Contant",method:"cash",dueDays:0,order:2}];function Ir(e){return e.settlement?.state??"unpaid"}function Ac(e){const t=Ir(e);return t==="paid"||t==="overpaid"}function Er(e){return!!e.issuedAt&&e.status==="open"&&!Ac(e)}function Ub(e,t){return!Er(e)||e.dueAt==null?!1:new Date(e.dueAt).toISOString().slice(0,10)<t}function Bb(e){return e.totals?.grossCents??0}function Fb(e,t){const n={};return t.postedAt&&!e.postedAt&&(n.postedAt=t.postedAt),t.externalId&&!(e.externalIds??[]).includes(t.externalId)&&(n.externalIds=[...e.externalIds??[],t.externalId]),t.number&&!e.number&&(n.number=t.number),t.payment&&t.asOf>(e.settlement?.asOf??0)&&(n.settlement={...t.payment,source:"books",asOf:t.asOf}),Object.keys(n).length?n:null}function jb(e,t,n){const r=Bb(e);return{state:t,paidCents:t==="paid"?r:0,openCents:t==="paid"?0:r,...t==="paid"?{lastPaymentAt:n}:{},source:"manual",asOf:n}}const vc=["current","d1_30","d31_60","d61_90","d90_plus"],qb=864e5;function Gb(e,t){return Math.round((Date.parse(`${t}T00:00:00Z`)-Date.parse(`${e}T00:00:00Z`))/qb)}function Vb(e,t){if(!Er(e))return null;const n=e.totals?.grossCents??0,r=(e.dunning??[]).reduce((s,i)=>!s||i.level>s.level?i:s,void 0),o=e.dueAt!=null?Gb(ae(e.dueAt),t):0;return{id:e.id,kindKey:e.kindKey,...e.number?{number:e.number}:{},companyId:Tt(e),...e.businessEntityId?{businessEntityId:e.businessEntityId}:{},...e.issuedAt?{issuedAt:e.issuedAt}:{},...e.dueAt!=null?{dueAt:e.dueAt}:{},overdueDays:Math.max(0,o),grossCents:n,openCents:e.settlement?.openCents??n,paymentState:Ir(e),dunningLevel:r?.level??0,...r?{lastDunningAt:r.sentAt}:{},...e.paymentTerm?.method?{paymentMethod:e.paymentTerm.method}:{}}}function Cc(e){return e<=0?"current":e<=30?"d1_30":e<=60?"d31_60":e<=90?"d61_90":"d90_plus"}function Wb(e){const t=Object.fromEntries(vc.map(n=>[n,{openCents:0,count:0}]));for(const n of e){const r=t[Cc(n.overdueDays)];r.openCents+=n.openCents,r.count+=1}return t}const Hb="receivables.company";function Yb(e){const t=e.filter(r=>r.overdueDays>0),n=r=>r.reduce((o,s)=>o+s.openCents,0);return{count:e.length,openCents:n(e),overdueCount:t.length,overdueCents:n(t),oldestOverdueDays:Math.max(0,...t.map(r=>r.overdueDays)),dunningLevel:Math.max(0,...e.map(r=>r.dunningLevel))}}function zb(e){return e.type==="agent"}const Tc=["communication:interactions:created","communication:interactions:updated","communication:activities:created","communication:activities:updated"];function Xb(e){return Tc.includes(e)}const Qb="WORK_COMMENT_ADDED",Zb="WORK_ITEM_ASSIGNED",Jb="WORK_ITEM_STATUS_CHANGED";function e_(e,t){const n=r=>{const o=new Date(r);return o.setHours(0,0,0,0),o.getTime()};return Math.round((n(e)-n(t))/vi)}function t_(e,t){if(e.closedAt!=null)return{score:ie,reasons:[]};const n=t.remindersById?.[e.id];if(n&&n.remindAt>t.now)return{score:ie,reasons:[]};let r=0;const o=[],s=e.priority??"normal";if(Re[s]>0&&(r+=Re[s],o.push(`priority:${s}`)),typeof e.dueDate=="number"){const i=e_(e.dueDate,t.now);i<0?(r+=35,o.push("overdue")):i===0&&(r+=20,o.push("due-today"))}return e.source?.initiator==="system"&&e.source.systemReason&&(r+=15,o.push(`auto:${e.source.systemReason}`)),{score:r,reasons:o}}const $t=[{key:"task",label:"type_task"},{key:"bug",label:"type_bug"},{key:"story",label:"type_story"},{key:"epic",label:"type_epic"},{key:"subtask",label:"type_subtask"},{key:"case",label:"type_case"},{key:"deal",label:"type_deal"},{key:"milestone",label:"type_milestone"}],n_=$t.map(e=>e.key);function r_(e){return e?.types?.length?e.types:$t}function o_(e,t){return t.find(n=>n.key===e)}function s_(e){const t=e.trim().toLowerCase();return t?t.includes("sub-task")||t.includes("subtask")||t.includes("sub task")?"subtask":t.includes("bug")||t.includes("defect")?"bug":t.includes("epic")?"epic":t.includes("story")?"story":t.includes("incident")||t.includes("problem")||t.includes("service request")||t.includes("change")?"case":t.includes("milestone")||t.includes("mijlpaal")?"milestone":t.includes("task")?"task":null:null}function i_(...e){return e.map(t=>$t.find(n=>n.key===t)).filter(t=>!!t)}const kc="work_item",Oc="work_project",Mc="work_activity",a_="work_cycle";function Rc(e){return`${kc}:${e}`}function Sr(e){return`${Oc}:${e}`}function c_(e){return`${Mc}:${e}`}function u_(e,t,n){const r=`${e}-${t}`;return n?`${r}-${n}`:r}function l_(e){const t=/^([A-Za-z0-9]{2,8})-(\d+)(?:-(\d+))?$/.exec((e||"").trim());return t?{projectKey:t[1].toUpperCase(),sequenceNumber:Number(t[2]),...t[3]?{subSequence:Number(t[3])}:{}}:null}function d_(e){return(e||"").normalize("NFD").replace(/[\u0300-\u036f]/g,"").toUpperCase().replace(/[^A-Z0-9]/g,"").slice(0,3)||"PRJ"}function f_(e,t=25){const n=new Set([Rc(e.id)]);e.projectId&&n.add(Sr(e.projectId));for(const r of e.ancestorKeys??[])n.add(r);for(const r of e.partyKeys??[])n.add(r);return Array.from(n).slice(0,t)}function p_(e){return[Sr(e.id)]}const Ut=[{key:"open",label:"status_open",category:"todo",order:0},{key:"in_progress",label:"status_in_progress",category:"in_progress",order:1},{key:"done",label:"status_done",category:"done",order:2},{key:"cancelled",label:"status_cancelled",category:"done",order:3}],Ar=Ut.map(e=>e.key);function Nc(e){return e?.statuses?.length?e.statuses:Ut}function Dc(e,t){return t.find(n=>n.key===e)?.category??"todo"}function m_(e,t){return t.find(n=>n.key===e)}function g_(e){const t=Nc(e),n=e?.defaultStatusKey;return n&&t.some(r=>r.key===n)?n:xc(t)[0]?.key??Ut[0].key}function xc(e){return[...e].sort((t,n)=>{const r=(t.order??0)-(n.order??0);return r!==0?r:(t.label||"").localeCompare(n.label||"")})}function h_(e,t){return Dc(e,t)==="done"}function wc(e){return(e||"").normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").slice(0,48).replace(/^-+|-+$/g,"")}function y_(e,t){const n=wc(e)||"status",r=new Set([...t,...Ar]);if(!r.has(n))return n;for(let o=2;o<500;o++){const s=`${n}-${o}`;if(!r.has(s))return s}return`${n}-${r.size+1}`}function b_(e){const t=[];if(!e.length)return[{index:-1,reason:"empty"}];const n=new Set;return e.forEach((r,o)=>{if(!r.key){t.push({index:o,reason:"missing_key"});return}Ar.includes(r.key)&&t.push({index:o,reason:"reserved_key",key:r.key}),n.has(r.key)&&t.push({index:o,reason:"duplicate_key",key:r.key}),n.add(r.key)}),e.some(r=>r.category==="todo"||r.category==="in_progress")||t.push({index:-1,reason:"no_open"}),e.some(r=>r.category==="done")||t.push({index:-1,reason:"no_done"}),t}function __(e,t){return t.find(n=>n.key===e)?.requiresApproval===!0}function I_(e,t){if(!e)return;const n=t?.resolutions?.find(r=>r.key===e)?.positive;return n===void 0?void 0:n?"won":"lost"}const E_=["day","week","month"];function S_(e){const t=e;if(!t||!E_.includes(t.every))return;const n=Math.floor(Number(t.interval??1));if(!(!Number.isFinite(n)||n<1||n>365))return{every:t.every,interval:n}}function Pc(e,t){const n=new Date(e);if(t.every==="day")n.setDate(n.getDate()+t.interval);else if(t.every==="week")n.setDate(n.getDate()+7*t.interval);else{const r=n.getDate();n.setDate(1),n.setMonth(n.getMonth()+t.interval),n.setDate(Math.min(r,new Date(n.getFullYear(),n.getMonth()+1,0).getDate()))}return n.getTime()}function A_(e,t,n){const r=Pc(e.dueDate??n,t);return e.startDate===void 0||e.dueDate===void 0?{dueDate:r}:{dueDate:r,startDate:r-(e.dueDate-e.startDate)}}function v_(e){return e.startDate??Number.MAX_SAFE_INTEGER}function C_(e){return e.completedAt?"completed":e.startedAt?"active":"planned"}const T_=["statusKeys","typeKeys","labels","priority","assignees"],k_=["blockedOnly","watchingOnly","reportedByMe"],O_=["priority","dueDate","updatedAt","createdAt","title","estimateSeconds"],M_=["list","board","calendar","workload"],R_=new Set(["image/png","image/jpeg","image/jpg","image/gif","image/webp"]),N_=new Set(["text/plain","text/markdown","text/csv","application/json","text/html","application/xml","text/xml"]);function Lc(e){const t=(e??"").trim().toLowerCase().split(";")[0];return t?R_.has(t)?"image":t==="application/pdf"?"pdf":N_.has(t)?"text":t.startsWith("audio/")?"audio":"unsupported":"unsupported"}const Te=1024*1024,Kc={image:5*Te,pdf:20*Te,text:1*Te,audio:20*Te},D_=25*Te,x_=5;function w_(e,t){const n=Lc(e);return n==="unsupported"?"unsupported":t>Kc[n]?"too-large":null}const P_="ai-tool";function L_(e){return e.access==="read"?"idempotent":e.reversible??"none"}function vr(e){return e.access!=="read"&&e.effect!=="internal"}function $c(e){return`${e.kind}:${e.id||e.url||e.title}`}function K_(e,t=[]){const n=new Set(t),r=[],o=[];for(const s of e){const i=$c(s);n.has(i)||(n.add(i),r.push(s),o.push(i))}return{sources:r,keys:o}}const $_="assist-source",U_=["blocking","due","open"];function B_(e,t){const[n,r]=(e.subjectKey??"").split(":");return n===t&&r?r:void 0}const yo={blocking:0,due:1,open:2};function F_(e,t){return yo[e.band??"open"]-yo[t.band??"open"]||(t.priority??0)-(e.priority??0)||e.id.localeCompare(t.id)}const j_="bookable-source",q_="bookkeeping",G_={get:"/bookable/get",issued:"/bookable/issued",settled:"/bookable/settled"},V_={describe:"/bookkeeping/describe",post:"/bookkeeping/post",lookup:"/bookkeeping/lookup",payments:"/bookkeeping/payments",paymentRegister:"/bookkeeping/payment-register",paymentUndo:"/bookkeeping/payment-undo",settle:"/bookkeeping/settle",reports:"/bookkeeping/reports"};function W_(e){return`oc:${e}`}function H_(e){return e.sessions.filter(t=>t.id!==e.exceptSessionId&&t.state==="connected"&&e.canHold(t.providerId))}function Y_(e){return e.sessions.filter(t=>t.id!==e.exceptSessionId&&t.state==="connected"&&!e.canHold(t.providerId))}function z_(e){return e.sessions.some(n=>n.id!==e.exceptSessionId&&(n.state==="connected"||n.state==="on_hold"))?{admit:!1,reason:"busy"}:{admit:!0}}function Uc(e,t){const n=new Set(e.disabledIntents??[]),r=e.intentOverrides??{},o=t.intents.filter(i=>!n.has(i.intent)).map(i=>Q_(i,r[i.intent]));if(!e.extraIntents||e.extraIntents.length===0)return o;const s=new Set(o.map(i=>i.intent));for(const i of e.extraIntents)s.has(i.intent)||(o.push(i),s.add(i.intent));return o}function Bc(e,t){const n={};for(const r of e.intents){if(!r.togglable)continue;const o=t?.[r.intent];n[r.intent]=o??r.defaultEnabled??!0}return n}function X_(e,t){const n=Bc(e,t);return Object.entries(n).filter(([,r])=>!r).map(([r])=>r)}function Q_(e,t){return t?{intent:t.intent??e.intent,targetSchemes:t.targetSchemes??e.targetSchemes,transport:t.transport??e.transport}:e}function Z_(e,t){const n=[];for(const r of e){if(!r.enabled)continue;const o=t[r.providerId];if(o)for(const s of Uc(r,o))n.push({channel:r,description:o,capability:s})}return n}function J_(e,t){return t.filter(n=>n.capability.intent===e)}function Fc(e,t){return t.filter(n=>n.capability.targetSchemes.includes(e))}function eI(e,t){return Fc(e.scheme,t)}function tI(e,t,n){const r=[];for(const o of e)for(const s of n)s.capability.intent===t&&s.capability.targetSchemes.includes(o.scheme)&&r.push({channelIntent:s,endpoint:o});return r}function nI(e,t,n={}){let r=t,o=e;for(const[s,i]of Object.entries(n))r=r.split("{"+s+"}").join(String(i)),o+=" "+s+"="+encodeURIComponent(String(i));return r+" ["+o+"]"}const rI=/ \[([a-z][a-z0-9_]*)((?: [a-zA-Z]\w*=[^\s\]]*)*)\]$/;function oI(e){const t=rI.exec(e);if(!t)return{text:e,params:{}};const n={};for(const r of t[2].trim().split(" ").filter(Boolean)){const o=r.indexOf("=");n[r.slice(0,o)]=decodeURIComponent(r.slice(o+1))}return{text:e.slice(0,t.index),code:t[1],params:n}}var jc=(e=>(e.MAILTO="mailto",e.SIP="sip",e.TEL="tel",e.WEBHOOK="webhook",e.USERNAME="username",e.ID="id",e.CUSTOM="custom",e.URL="url",e.TELEGRAM="telegram",e.WHATSAPP="whatsapp",e.MESSENGER="messenger",e.INSTAGRAM="instagram",e.VIBER="viber",e.SMS="sms",e.FAX="fax",e.TEAMS="teams",e.CALENDAR="calendar",e))(jc||{});const sI={mailto:"mail",sip:"tel",tel:"tel",fax:"tel",sms:"chat",teams:"chat",telegram:"chat",messenger:"chat",instagram:"chat",viber:"chat",whatsapp:"wa",webhook:"note",url:"note",calendar:"note",username:"note",id:"note",custom:"note"};function iI(e){return e?sI[e]??"note":"note"}const aI="message_window",cI="message_templates",uI={FROM:"from",TO:"to",CC:"cc",BCC:"bcc",ORGANIZER:"organizer",PRESENTER:"presenter",ATTENDEE:"attendee",OWNER:"owner",MEMBER:"member",GUEST:"guest",HOST:"host",PARTICIPANT:"participant"},lI=(e,t)=>({intent:e,...t}),dI="remote_search",fI="message_reactions",pI={ok:!1,code:"UNSUPPORTED",message:"Provider does not support this op"},mI="connector",gI="context.collect";function hI(e,t){const n=t??yI(e),r=[];let o=[],s="",i=!1;for(let a=0;a<e.length;a++){const c=e[a];i?c==='"'&&e[a+1]==='"'?(s+='"',a++):c==='"'?i=!1:s+=c:c==='"'&&s===""?i=!0:c===n?(o.push(s),s=""):c===`
|
|
20
|
+
Hierbij onze creditnota. De onderstaande bedragen worden met u verrekend.`},_o={quote:"Genoemde bedragen zijn exclusief btw tenzij anders vermeld. Deze offerte is geldig tot {quote.valid_until}.",order:"Genoemde bedragen zijn exclusief btw tenzij anders vermeld.",invoice:"Genoemde bedragen zijn exclusief btw tenzij anders vermeld.",credit_note:"Genoemde bedragen zijn exclusief btw tenzij anders vermeld."},xb=bc("quote"),_c=["direct_debit","cash","card"],Ic=7,wb={steps:[{level:1,afterDays:7,templateKey:"dunning_reminder",channel:"email"},{level:2,afterDays:21,templateKey:"dunning_notice",channel:"email"},{level:3,afterDays:14,templateKey:"dunning_final",channel:"email"}],minOpenCents:2500},Ec=(e,t)=>new Date(Date.parse(`${e}T00:00:00Z`)+t*864e5).toISOString().slice(0,10);function Sc(e,t,n){if(e.dueAt==null||e.openCents<(t.minOpenCents??0)||e.paymentMethod&&_c.includes(e.paymentMethod))return null;const r=[...t.steps].sort((a,c)=>a.level-c.level),o=r.find(a=>a.level>e.dunningLevel);if(!o)return r.length?"done":null;const s=e.dunningLevel&&e.lastDunningAt?e.lastDunningAt:e.dueAt,i=Ec(ae(s),o.afterDays);return i<=n?{row:e,step:o,dueOn:i}:null}const Ac=(e,t)=>e.dueAt!=null&&e.openCents>0&&!!e.paymentMethod&&_c.includes(e.paymentMethod)&&Ec(ae(e.dueAt),Ic)<t;function Pb(e,t,n){const r=[],o=[],s=[];for(const i of e){Ac(i,n)&&s.push(i);const a=Sc(i,t,n);a==="done"?o.push(i):a&&r.push(a)}return{due:r,waiting:o,uncollected:s}}const vc=Rt.map(e=>e.key),Cc="product",Tc="agreement";function kc(e,t){return`${e}:${t}`}function Lb(e){return`${Cc}:${e}`}function Oc(e,t){return`/apps/sales${e}?${Kt}=${encodeURIComponent(t)}`}function Kb(e,t){const n=e.businessEntityId||t;if(n)return Oc(`/${G(e.kindKey).path}/${e.id}`,n)}function $b(e,t){const n=e.businessEntityId||t;return n?`/apps/catalog/products/${e.id}?${Kt}=${encodeURIComponent(n)}`:void 0}function Ub(e){return`${Tc}:${e}`}function Fb(e,t){const n=e.businessEntityId||t;return n?Oc(`/agreement/${e.id}`,n):void 0}function Bb(e){const t=e.indexOf(":");if(t<0)return;const n=e.slice(0,t);return vc.includes(n)?e.slice(t+1):void 0}function jb(e){const t=new Set([kc(e.kindKey,e.id)]);return e.companyId&&t.add(`company:${e.companyId}`),e.contactId&&t.add(`contact:${e.contactId}`),e.invoiceTo?.companyId&&t.add(`company:${e.invoiceTo.companyId}`),e.dealItemId&&t.add(`work_item:${e.dealItemId}`),Array.from(t)}const qb=4;function Gb(e,t){const n=String(t).padStart(Math.max(1,e.padding),"0");return`${e.prefix}${e.period?`${e.period}-`:""}${n}`}function Wb(e,t=Date.now()){return e==="year"?String(new Date(t).getFullYear()):""}const Vb=["cash","credit","direct_debit","card","other"],Mc=(e,t)=>!e.direction||e.direction===t;function Hb(e,t,n={}){const r=e.filter(s=>!s.archived&&Mc(s,t)),o=s=>s?r.find(i=>i.code===s):void 0;return o(n.explicit)??o(n.role)??r.find(s=>s.isDefault&&s.direction===t)??r.find(s=>s.isDefault)??r[0]??null}function Yb(e,t){return e+Math.max(0,Math.round(t))*24*60*60*1e3}function zb(e){return{code:e.code,label:e.label,method:e.method,dueDays:e.dueDays}}const Xb=[{code:"14D",label:"Binnen 14 dagen",method:"credit",dueDays:14,isDefault:!0,order:0},{code:"30D",label:"Binnen 30 dagen",method:"credit",dueDays:30,order:1},{code:"CONTANT",label:"Contant",method:"cash",dueDays:0,order:2}];function Er(e){return e.settlement?.state??"unpaid"}function Rc(e){const t=Er(e);return t==="paid"||t==="overpaid"}function Sr(e){return!!e.issuedAt&&e.status==="open"&&!Rc(e)}function Qb(e,t){return!Sr(e)||e.dueAt==null?!1:new Date(e.dueAt).toISOString().slice(0,10)<t}function Zb(e){return e.totals?.grossCents??0}function Jb(e,t){const n={};return t.postedAt&&!e.postedAt&&(n.postedAt=t.postedAt),t.externalId&&!(e.externalIds??[]).includes(t.externalId)&&(n.externalIds=[...e.externalIds??[],t.externalId]),t.number&&!e.number&&(n.number=t.number),t.payment&&t.asOf>(e.settlement?.asOf??0)&&(n.settlement={...t.payment,source:"books",asOf:t.asOf}),Object.keys(n).length?n:null}function e_(e,t,n){const r=Zb(e);return{state:t,paidCents:t==="paid"?r:0,openCents:t==="paid"?0:r,...t==="paid"?{lastPaymentAt:n}:{},source:"manual",asOf:n}}const Nc=["current","d1_30","d31_60","d61_90","d90_plus"],t_=864e5;function n_(e,t){return Math.round((Date.parse(`${t}T00:00:00Z`)-Date.parse(`${e}T00:00:00Z`))/t_)}function r_(e,t){if(!Sr(e))return null;const n=e.totals?.grossCents??0,r=(e.dunning??[]).reduce((s,i)=>!s||i.level>s.level?i:s,void 0),o=e.dueAt!=null?n_(ae(e.dueAt),t):0;return{id:e.id,kindKey:e.kindKey,...e.number?{number:e.number}:{},companyId:Tt(e),...e.businessEntityId?{businessEntityId:e.businessEntityId}:{},...e.issuedAt?{issuedAt:e.issuedAt}:{},...e.dueAt!=null?{dueAt:e.dueAt}:{},overdueDays:Math.max(0,o),grossCents:n,openCents:e.settlement?.openCents??n,paymentState:Er(e),dunningLevel:r?.level??0,...r?{lastDunningAt:r.sentAt}:{},...e.paymentTerm?.method?{paymentMethod:e.paymentTerm.method}:{}}}function Dc(e){return e<=0?"current":e<=30?"d1_30":e<=60?"d31_60":e<=90?"d61_90":"d90_plus"}function o_(e){const t=Object.fromEntries(Nc.map(n=>[n,{openCents:0,count:0}]));for(const n of e){const r=t[Dc(n.overdueDays)];r.openCents+=n.openCents,r.count+=1}return t}const s_="receivables.company";function i_(e){const t=e.filter(r=>r.overdueDays>0),n=r=>r.reduce((o,s)=>o+s.openCents,0);return{count:e.length,openCents:n(e),overdueCount:t.length,overdueCents:n(t),oldestOverdueDays:Math.max(0,...t.map(r=>r.overdueDays)),dunningLevel:Math.max(0,...e.map(r=>r.dunningLevel))}}function a_(e){return e.type==="agent"}const xc=["communication:interactions:created","communication:interactions:updated","communication:activities:created","communication:activities:updated"];function c_(e){return xc.includes(e)}const u_="WORK_COMMENT_ADDED",l_="WORK_ITEM_ASSIGNED",d_="WORK_ITEM_STATUS_CHANGED";function f_(e,t){const n=r=>{const o=new Date(r);return o.setHours(0,0,0,0),o.getTime()};return Math.round((n(e)-n(t))/Ri)}function p_(e,t){if(e.closedAt!=null)return{score:ie,reasons:[]};const n=t.remindersById?.[e.id];if(n&&n.remindAt>t.now)return{score:ie,reasons:[]};let r=0;const o=[],s=e.priority??"normal";if(Re[s]>0&&(r+=Re[s],o.push(`priority:${s}`)),typeof e.dueDate=="number"){const i=f_(e.dueDate,t.now);i<0?(r+=35,o.push("overdue")):i===0&&(r+=20,o.push("due-today"))}return e.source?.initiator==="system"&&e.source.systemReason&&(r+=15,o.push(`auto:${e.source.systemReason}`)),{score:r,reasons:o}}const $t=[{key:"task",label:"type_task"},{key:"bug",label:"type_bug"},{key:"story",label:"type_story"},{key:"epic",label:"type_epic"},{key:"subtask",label:"type_subtask"},{key:"case",label:"type_case"},{key:"deal",label:"type_deal"},{key:"milestone",label:"type_milestone"}],m_=$t.map(e=>e.key);function g_(e){return e?.types?.length?e.types:$t}function h_(e,t){return t.find(n=>n.key===e)}function y_(e){const t=e.trim().toLowerCase();return t?t.includes("sub-task")||t.includes("subtask")||t.includes("sub task")?"subtask":t.includes("bug")||t.includes("defect")?"bug":t.includes("epic")?"epic":t.includes("story")?"story":t.includes("incident")||t.includes("problem")||t.includes("service request")||t.includes("change")?"case":t.includes("milestone")||t.includes("mijlpaal")?"milestone":t.includes("task")?"task":null:null}function b_(...e){return e.map(t=>$t.find(n=>n.key===t)).filter(t=>!!t)}const wc="work_item",Pc="work_project",Lc="work_activity",__="work_cycle";function Kc(e){return`${wc}:${e}`}function Ar(e){return`${Pc}:${e}`}function I_(e){return`${Lc}:${e}`}function E_(e,t,n){const r=`${e}-${t}`;return n?`${r}-${n}`:r}function S_(e){const t=/^([A-Za-z0-9]{2,8})-(\d+)(?:-(\d+))?$/.exec((e||"").trim());return t?{projectKey:t[1].toUpperCase(),sequenceNumber:Number(t[2]),...t[3]?{subSequence:Number(t[3])}:{}}:null}function A_(e){return(e||"").normalize("NFD").replace(/[\u0300-\u036f]/g,"").toUpperCase().replace(/[^A-Z0-9]/g,"").slice(0,3)||"PRJ"}function v_(e,t=25){const n=new Set([Kc(e.id)]);e.projectId&&n.add(Ar(e.projectId));for(const r of e.ancestorKeys??[])n.add(r);for(const r of e.partyKeys??[])n.add(r);return Array.from(n).slice(0,t)}function C_(e){return[Ar(e.id)]}const Ut=[{key:"open",label:"status_open",category:"todo",order:0},{key:"in_progress",label:"status_in_progress",category:"in_progress",order:1},{key:"done",label:"status_done",category:"done",order:2},{key:"cancelled",label:"status_cancelled",category:"done",order:3}],vr=Ut.map(e=>e.key);function $c(e){return e?.statuses?.length?e.statuses:Ut}function Uc(e,t){return t.find(n=>n.key===e)?.category??"todo"}function T_(e,t){return t.find(n=>n.key===e)}function k_(e){const t=$c(e),n=e?.defaultStatusKey;return n&&t.some(r=>r.key===n)?n:Fc(t)[0]?.key??Ut[0].key}function Fc(e){return[...e].sort((t,n)=>{const r=(t.order??0)-(n.order??0);return r!==0?r:(t.label||"").localeCompare(n.label||"")})}function O_(e,t){return Uc(e,t)==="done"}function Bc(e){return(e||"").normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").slice(0,48).replace(/^-+|-+$/g,"")}function M_(e,t){const n=Bc(e)||"status",r=new Set([...t,...vr]);if(!r.has(n))return n;for(let o=2;o<500;o++){const s=`${n}-${o}`;if(!r.has(s))return s}return`${n}-${r.size+1}`}function R_(e){const t=[];if(!e.length)return[{index:-1,reason:"empty"}];const n=new Set;return e.forEach((r,o)=>{if(!r.key){t.push({index:o,reason:"missing_key"});return}vr.includes(r.key)&&t.push({index:o,reason:"reserved_key",key:r.key}),n.has(r.key)&&t.push({index:o,reason:"duplicate_key",key:r.key}),n.add(r.key)}),e.some(r=>r.category==="todo"||r.category==="in_progress")||t.push({index:-1,reason:"no_open"}),e.some(r=>r.category==="done")||t.push({index:-1,reason:"no_done"}),t}function N_(e,t){return t.find(n=>n.key===e)?.requiresApproval===!0}function D_(e,t){if(!e)return;const n=t?.resolutions?.find(r=>r.key===e)?.positive;return n===void 0?void 0:n?"won":"lost"}const x_=["day","week","month"];function w_(e){const t=e;if(!t||!x_.includes(t.every))return;const n=Math.floor(Number(t.interval??1));if(!(!Number.isFinite(n)||n<1||n>365))return{every:t.every,interval:n}}function jc(e,t){const n=new Date(e);if(t.every==="day")n.setDate(n.getDate()+t.interval);else if(t.every==="week")n.setDate(n.getDate()+7*t.interval);else{const r=n.getDate();n.setDate(1),n.setMonth(n.getMonth()+t.interval),n.setDate(Math.min(r,new Date(n.getFullYear(),n.getMonth()+1,0).getDate()))}return n.getTime()}function P_(e,t,n){const r=jc(e.dueDate??n,t);return e.startDate===void 0||e.dueDate===void 0?{dueDate:r}:{dueDate:r,startDate:r-(e.dueDate-e.startDate)}}function L_(e){return e.startDate??Number.MAX_SAFE_INTEGER}function K_(e){return e.completedAt?"completed":e.startedAt?"active":"planned"}const $_=["statusKeys","typeKeys","labels","priority","assignees"],U_=["blockedOnly","watchingOnly","reportedByMe"],F_=["priority","dueDate","updatedAt","createdAt","title","estimateSeconds"],B_=["list","board","calendar","workload"],j_=new Set(["image/png","image/jpeg","image/jpg","image/gif","image/webp"]),q_=new Set(["text/plain","text/markdown","text/csv","application/json","text/html","application/xml","text/xml"]);function qc(e){const t=(e??"").trim().toLowerCase().split(";")[0];return t?j_.has(t)?"image":t==="application/pdf"?"pdf":q_.has(t)?"text":t.startsWith("audio/")?"audio":"unsupported":"unsupported"}const Te=1024*1024,Gc={image:5*Te,pdf:20*Te,text:1*Te,audio:20*Te},G_=25*Te,W_=5;function V_(e,t){const n=qc(e);return n==="unsupported"?"unsupported":t>Gc[n]?"too-large":null}const H_="ai-tool";function Y_(e){return e.access==="read"?"idempotent":e.reversible??"none"}function Cr(e){return e.access!=="read"&&e.effect!=="internal"}function Wc(e){return`${e.kind}:${e.id||e.url||e.title}`}function z_(e,t=[]){const n=new Set(t),r=[],o=[];for(const s of e){const i=Wc(s);n.has(i)||(n.add(i),r.push(s),o.push(i))}return{sources:r,keys:o}}const X_="assist-source",Q_=["blocking","due","open"];function Z_(e,t){const[n,r]=(e.subjectKey??"").split(":");return n===t&&r?r:void 0}const Io={blocking:0,due:1,open:2};function J_(e,t){return Io[e.band??"open"]-Io[t.band??"open"]||(t.priority??0)-(e.priority??0)||e.id.localeCompare(t.id)}const eI="bookable-source",tI="bookkeeping",nI={get:"/bookable/get",issued:"/bookable/issued",settled:"/bookable/settled"},rI={describe:"/bookkeeping/describe",post:"/bookkeeping/post",lookup:"/bookkeeping/lookup",payments:"/bookkeeping/payments",paymentRegister:"/bookkeeping/payment-register",paymentUndo:"/bookkeeping/payment-undo",settle:"/bookkeeping/settle",reports:"/bookkeeping/reports"};function oI(e){return`oc:${e}`}function sI(e){return e.sessions.filter(t=>t.id!==e.exceptSessionId&&t.state==="connected"&&e.canHold(t.providerId))}function iI(e){return e.sessions.filter(t=>t.id!==e.exceptSessionId&&t.state==="connected"&&!e.canHold(t.providerId))}function aI(e){return e.sessions.some(n=>n.id!==e.exceptSessionId&&(n.state==="connected"||n.state==="on_hold"))?{admit:!1,reason:"busy"}:{admit:!0}}function Vc(e,t){const n=new Set(e.disabledIntents??[]),r=e.intentOverrides??{},o=t.intents.filter(i=>!n.has(i.intent)).map(i=>uI(i,r[i.intent]));if(!e.extraIntents||e.extraIntents.length===0)return o;const s=new Set(o.map(i=>i.intent));for(const i of e.extraIntents)s.has(i.intent)||(o.push(i),s.add(i.intent));return o}function Hc(e,t){const n={};for(const r of e.intents){if(!r.togglable)continue;const o=t?.[r.intent];n[r.intent]=o??r.defaultEnabled??!0}return n}function cI(e,t){const n=Hc(e,t);return Object.entries(n).filter(([,r])=>!r).map(([r])=>r)}function uI(e,t){return t?{intent:t.intent??e.intent,targetSchemes:t.targetSchemes??e.targetSchemes,transport:t.transport??e.transport}:e}function lI(e,t){const n=[];for(const r of e){if(!r.enabled)continue;const o=t[r.providerId];if(o)for(const s of Vc(r,o))n.push({channel:r,description:o,capability:s})}return n}function dI(e,t){return t.filter(n=>n.capability.intent===e)}function Yc(e,t){return t.filter(n=>n.capability.targetSchemes.includes(e))}function fI(e,t){return Yc(e.scheme,t)}function pI(e,t,n){const r=[];for(const o of e)for(const s of n)s.capability.intent===t&&s.capability.targetSchemes.includes(o.scheme)&&r.push({channelIntent:s,endpoint:o});return r}function mI(e,t,n={}){let r=t,o=e;for(const[s,i]of Object.entries(n))r=r.split("{"+s+"}").join(String(i)),o+=" "+s+"="+encodeURIComponent(String(i));return r+" ["+o+"]"}const gI=/ \[([a-z][a-z0-9_]*)((?: [a-zA-Z]\w*=[^\s\]]*)*)\]$/;function hI(e){const t=gI.exec(e);if(!t)return{text:e,params:{}};const n={};for(const r of t[2].trim().split(" ").filter(Boolean)){const o=r.indexOf("=");n[r.slice(0,o)]=decodeURIComponent(r.slice(o+1))}return{text:e.slice(0,t.index),code:t[1],params:n}}var zc=(e=>(e.MAILTO="mailto",e.SIP="sip",e.TEL="tel",e.WEBHOOK="webhook",e.USERNAME="username",e.ID="id",e.CUSTOM="custom",e.URL="url",e.TELEGRAM="telegram",e.WHATSAPP="whatsapp",e.MESSENGER="messenger",e.INSTAGRAM="instagram",e.VIBER="viber",e.SMS="sms",e.FAX="fax",e.TEAMS="teams",e.CALENDAR="calendar",e))(zc||{});const yI={mailto:"mail",sip:"tel",tel:"tel",fax:"tel",sms:"chat",teams:"chat",telegram:"chat",messenger:"chat",instagram:"chat",viber:"chat",whatsapp:"wa",webhook:"note",url:"note",calendar:"note",username:"note",id:"note",custom:"note"};function bI(e){return e?yI[e]??"note":"note"}const _I="message_window",II="message_templates",EI={FROM:"from",TO:"to",CC:"cc",BCC:"bcc",ORGANIZER:"organizer",PRESENTER:"presenter",ATTENDEE:"attendee",OWNER:"owner",MEMBER:"member",GUEST:"guest",HOST:"host",PARTICIPANT:"participant"},SI=(e,t)=>({intent:e,...t}),AI="remote_search",vI="message_reactions",CI={ok:!1,code:"UNSUPPORTED",message:"Provider does not support this op"},TI="connector",kI="context.collect";function OI(e,t){const n=t??MI(e),r=[];let o=[],s="",i=!1;for(let a=0;a<e.length;a++){const c=e[a];i?c==='"'&&e[a+1]==='"'?(s+='"',a++):c==='"'?i=!1:s+=c:c==='"'&&s===""?i=!0:c===n?(o.push(s),s=""):c===`
|
|
21
21
|
`||c==="\r"?(c==="\r"&&e[a+1]===`
|
|
22
|
-
`&&a++,o.push(s),s="",o.some(u=>u!=="")&&r.push(o),o=[]):s+=c}return o.push(s),o.some(a=>a!=="")&&r.push(o),r}function
|
|
22
|
+
`&&a++,o.push(s),s="",o.some(u=>u!=="")&&r.push(o),o=[]):s+=c}return o.push(s),o.some(a=>a!=="")&&r.push(o),r}function MI(e){const t=e.search(/\r?\n/),n=t===-1?e:e.slice(0,t),r=o=>n.split(o).length-1;return[";",","," "].reduce((o,s)=>r(s)>r(o)?s:o,";")}const RI={128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376};function NI(e){const t=e[0]===239&&e[1]===187&&e[2]===191?3:0,n=[];let r=t;for(;r<e.length;){const o=e[r],s=o<128?0:o>>5===6?1:o>>4===14?2:o>>3===30?3:-1;if(s<0||r+s>=e.length)return Eo(e,t);let i=s===0?o:o&63>>s;for(let a=1;a<=s;a++){const c=e[r+a];if(c>>6!==2)return Eo(e,t);i=i<<6|c&63}n.push(i),r+=s+1}return Xc(n)}function Eo(e,t){const n=[];for(let r=t;r<e.length;r++)n.push(RI[e[r]]??e[r]);return Xc(n)}function Xc(e){let t="";for(let n=0;n<e.length;n+=8192)t+=String.fromCodePoint(...e.slice(n,n+8192));return t}const w=e=>({type:"string",description:e}),x=e=>({type:"number",description:e}),Ye=e=>({type:"boolean",description:e}),X=w("Sheet name. Omit for the sheet the user is looking at."),So=w("Slide id, as `inspect` reports it.");function D(e,t,n,r,o,s){return{op:e,kinds:t,summary:n,parameters:{type:"object",properties:r,required:o},undoable:s.undoable,visible:s.visible}}const Oe={undoable:!1,visible:!0},$={undoable:!0,visible:!0},Ao={undoable:!1,visible:!0},It={undoable:!1,visible:!1},DI=[D("pdf.goToPage",["pdf"],"Scroll the viewer to a page.",{page:x("1-based page number.")},["page"],Oe),D("pdf.search",["pdf"],"Search the document and highlight the matches, as the find bar does.",{query:w("Text to find."),next:Ye("Jump to the next match instead of the first.")},["query"],Oe),D("pdf.setTool",["pdf"],"Select a markup tool for the user, so their next click draws it.",{tool:{type:"string",enum:["highlight","text","draw","image","signature","none"],description:"Which tool to arm. `none` puts the tool row back to reading."}},["tool"],Oe),D("pdf.fillField",["pdf"],"Fill one form field of a fillable PDF.",{field:w("Field name, exactly as `inspect` reports it under `fields`."),value:{type:["string","boolean"],description:"Text for a text field, true/false for a checkbox or radio."}},["field","value"],$),D("pdf.reorderPages",["pdf"],"Put the pages in a different order. Pages left out are deleted.",{order:{type:"array",items:{type:"number"},description:"1-based source page numbers, in the order they should end up in."}},["order"],Ao),D("pdf.deletePages",["pdf"],"Remove pages, keeping the rest in order.",{pages:{type:"array",items:{type:"number"},description:"1-based page numbers."}},["pages"],Ao),D("pdf.addNote",["pdf"],"Place a text note on a page. Written on save; not visible before that.",{page:x("1-based page number."),text:w("The note's text."),left:x("Distance from the left edge, in PDF points (72 per inch)."),top:x("Distance from the top edge, in PDF points."),width:x("Box width in points. Omit for a sensible default."),height:x("Box height in points. Omit for a sensible default."),fontSize:x("Font size in points. Omit for 12.")},["page","text","left","top"],It),D("pdf.highlightText",["pdf"],"Highlight a phrase on a page. Written on save; not visible before that.",{page:x("1-based page number."),text:w("The exact phrase to highlight, as it appears in the page's text."),occurrence:x("Which occurrence on that page, 1-based. Omit for the first.")},["page","text"],It)],xI=[D("sheet.setValues",["sheet"],"Write a block of values. The block's shape must match the range.",{sheet:X,range:w("A1 notation, e.g. `B2:D5` or a single `A1`."),values:{type:"array",items:{type:"array",items:{type:["string","number","boolean","null"]}},description:"Rows of cells, top-left first. `null` clears a cell."}},["range","values"],$),D("sheet.setFormula",["sheet"],"Put a formula in every cell of a range.",{sheet:X,range:w("A1 notation."),formula:w("Including the leading `=`.")},["range","formula"],$),D("sheet.setStyle",["sheet"],"Change the look of a range. Only the properties you pass are touched.",{sheet:X,range:w("A1 notation."),bold:Ye("Bold on or off."),italic:Ye("Italic on or off."),fontSize:x("Point size."),fontColor:w("CSS colour, e.g. `#b91c1c`."),background:w("CSS colour for the cell fill."),horizontalAlignment:{type:"string",enum:["left","center","right"],description:"Horizontal alignment."},numberFormat:w("Number format pattern, e.g. `#,##0.00` or `0%`.")},["range"],$),D("sheet.insertRows",["sheet"],"Insert empty rows, pushing the rest down.",{sheet:X,at:x("1-based row number to insert before."),count:x("How many. Omit for 1.")},["at"],$),D("sheet.deleteRows",["sheet"],"Delete rows, pulling the rest up.",{sheet:X,at:x("1-based first row to delete."),count:x("How many. Omit for 1.")},["at"],$),D("sheet.insertColumns",["sheet"],"Insert empty columns, pushing the rest right.",{sheet:X,at:x("1-based column number to insert before."),count:x("How many. Omit for 1.")},["at"],$),D("sheet.deleteColumns",["sheet"],"Delete columns, pulling the rest left.",{sheet:X,at:x("1-based first column to delete."),count:x("How many. Omit for 1.")},["at"],$),D("sheet.merge",["sheet"],"Merge a range into one cell.",{sheet:X,range:w("A1 notation.")},["range"],$),D("sheet.unmerge",["sheet"],"Break merged cells in a range apart.",{sheet:X,range:w("A1 notation.")},["range"],$),D("sheet.sort",["sheet"],"Sort a range on one of its columns.",{sheet:X,range:w("A1 notation covering the rows to sort, header excluded."),column:x("1-based column *within the range*, not within the sheet."),ascending:Ye("Ascending. Omit for ascending.")},["range","column"],$),D("sheet.insertSheet",["sheet"],"Add a new sheet.",{name:w("Name for the new sheet.")},["name"],$),D("sheet.renameSheet",["sheet"],"Rename a sheet.",{sheet:w("Current name."),name:w("New name.")},["sheet","name"],$),D("sheet.deleteSheet",["sheet"],"Remove a sheet and everything on it.",{sheet:w("Name of the sheet to delete.")},["sheet"],$),D("sheet.activate",["sheet"],"Show the user a sheet and select a range on it.",{sheet:X,range:w("A1 notation to select. Omit to only switch sheets.")},[],Oe)],wI=[D("word.replaceParagraph",["word"],"Rewrite one whole paragraph, keeping its style. This is the verb for shortening or rephrasing something; call it once per paragraph.",{at:x("The offset the paragraph starts at, exactly as `inspect` prints it."),text:w("The new text for that paragraph. A newline starts a further paragraph.")},["at","text"],$),D("word.replaceRange",["word"],"Replace a stretch of text inside a paragraph - a sentence, a phrase. To rewrite whole paragraphs use word.replaceParagraph: a range covering several paragraph styles is refused, because a replacement carries one style and would set the whole span in the first.",{start:x("Character offset where the replaced text starts, as `inspect` reports offsets."),end:x("Character offset just past the last character to replace."),text:w("The replacement text. A newline starts a new paragraph.")},["start","end","text"],$),D("word.insertText",["word"],"Insert text at a character offset, without removing anything.",{index:x("Character offset, as `inspect` reports offsets."),text:w("The text to insert.")},["index","text"],$),D("word.appendText",["word"],"Add text at the end of the document.",{text:w("The text to append.")},["text"],$),D("word.insertParagraph",["word"],"Start a new paragraph, optionally with text in it.",{text:w("Paragraph text. Newlines start further paragraphs."),index:x("Character offset to insert at. Omit for the end of the document.")},[],$),D("word.setSelection",["word"],"Put the user's cursor on a stretch of text, and move the reading window there: the page context carries one window of a long document, and the text around this offset arrives in the next turn.",{start:x("Start character offset."),end:x("End character offset. Omit for a caret.")},["start"],Oe)],PI=[D("slides.setText",["slides"],"Replace the text of one shape. Written on save; not visible before that, and not undoable.",{slide:So,element:w("Element id, as `inspect` reports it."),text:w("The new text.")},["slide","element","text"],It),D("slides.setTransform",["slides"],"Move or resize one shape. Only the values you pass change. Written on save; not visible before that, and not undoable.",{slide:So,element:w("Element id."),left:x("Distance from the left edge, in pixels."),top:x("Distance from the top edge, in pixels."),width:x("Width in pixels."),height:x("Height in pixels.")},["slide","element"],It)],Tr=[...DI,...xI,...wI,...PI];function LI(e){return Tr.filter(t=>t.kinds.includes(e))}function KI(e){return Tr.find(t=>t.op===e)}const vo=/(?: {2,}|\\)$/,$I=/^\*\*([^*]+)\*\*\s+(.*)$/;function Co(e){const t=$I.exec(e);return t?{lead:t[1],text:t[2]}:{text:e}}function UI(e){const t=(e??"").replace(/\r\n/g,`
|
|
23
23
|
`).split(`
|
|
24
|
-
`),n=[];let r=null;const o=()=>{r&&n.push({type:"list",style:r.style,items:r.items}),r=null},s=(p,g)=>{r&&r.style!==p&&o(),r?r.items.push(
|
|
24
|
+
`),n=[];let r=null;const o=()=>{r&&n.push({type:"list",style:r.style,items:r.items}),r=null},s=(p,g)=>{r&&r.style!==p&&o(),r?r.items.push(Co(g)):r={style:p,items:[Co(g)]}};let i=[],a=[];const c=()=>{if(i.length){const p=i.join("").trim();p&&n.push({type:"paragraph",text:p}),i=[]}},u=()=>{a.length&&(n.push({type:"quote",text:a.join(`
|
|
25
25
|
`)}),a=[])},d=()=>{c(),u(),o()};let l=0;for(;l<t.length;){const p=t[l]??"",g=p.match(/^```(\w*)\s*$/);if(g){d();const h=[];for(l++;l<t.length&&!/^```\s*$/.test(t[l]??"");)h.push(t[l]??""),l++;l++,n.push({type:"code",...g[1]?{lang:g[1]}:{},text:h.join(`
|
|
26
|
-
`)});continue}const f=p.match(/^(#{1,3})\s+(.*)$/);if(f){d(),n.push({type:"heading",level:f[1].length,text:f[2].trim()}),l++;continue}const m=p.match(/^!\[([^\]]*)\]\(([^)\s]+)\)\s*$/);if(m){d(),n.push({type:"image",url:m[2],...m[1]?{alt:m[1]}:{}}),l++;continue}if(/^\s*[-*]\s+/.test(p)){c(),u(),s("bulleted",p.replace(/^\s*[-*]\s+/,"")),l++;continue}if(/^\s*\d+\.\s+/.test(p)){c(),u(),s("numbered",p.replace(/^\s*\d+\.\s+/,"")),l++;continue}if(/^\s*(-{3,}|\*{3,}|_{3,})\s*$/.test(p)){d(),n.push({type:"divider"}),l++;continue}if(/^>\s?/.test(p)){c(),o(),a.push(p.replace(/^>\s?/,"")),l++;continue}if(p.trim()===""){d(),l++;continue}u(),o();const _=
|
|
27
|
-
`:" ")),l++}return d(),n}function
|
|
26
|
+
`)});continue}const f=p.match(/^(#{1,3})\s+(.*)$/);if(f){d(),n.push({type:"heading",level:f[1].length,text:f[2].trim()}),l++;continue}const m=p.match(/^!\[([^\]]*)\]\(([^)\s]+)\)\s*$/);if(m){d(),n.push({type:"image",url:m[2],...m[1]?{alt:m[1]}:{}}),l++;continue}if(/^\s*[-*]\s+/.test(p)){c(),u(),s("bulleted",p.replace(/^\s*[-*]\s+/,"")),l++;continue}if(/^\s*\d+\.\s+/.test(p)){c(),u(),s("numbered",p.replace(/^\s*\d+\.\s+/,"")),l++;continue}if(/^\s*(-{3,}|\*{3,}|_{3,})\s*$/.test(p)){d(),n.push({type:"divider"}),l++;continue}if(/^>\s?/.test(p)){c(),o(),a.push(p.replace(/^>\s?/,"")),l++;continue}if(p.trim()===""){d(),l++;continue}u(),o();const _=vo.test(p);i.push(p.replace(vo,"").trim()+(_?`
|
|
27
|
+
`:" ")),l++}return d(),n}function FI(e,t){return Fn(e,t).replace(/^```.*$/gm,"").replace(/^\|[\s:|-]*\|$/gm,"").replace(/[ \t]*\|[ \t]*/g," ").replace(/^[ \t]*(#{1,6}|>|[-*+]|\d+\.)[ \t]+/gm,"").replace(/!\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/\[([^\]]+)\]\([^)]*\)/g,"$1").replace(/(\*\*|__|\*|_|`|~~)/g,"").replace(/[ \t]+$/gm,"").replace(/\n{3,}/g,`
|
|
28
28
|
|
|
29
|
-
`).trim()}const MI="documents.describe",RI="documents.inspect",NI="documents.apply";function DI(e){const t=e.indexOf(":");if(t!==-1)return e.slice(0,t);const n=e.indexOf(".");return n===-1?e:e.slice(0,n)}const xI="installation-id";function wI(e){const t=[];for(const n of Object.keys(e))for(const r of Object.keys(e[n]))t.push({lang:n,key:r,value:e[n][r]});return t}function PI(e,t){return e?"text"in e?e.text:t(e.key.includes(":")?e.key:`global:${e.key}`):""}const Ao="main",ke=e=>`${e.app}:${e.entry}`,Zt=e=>ke({app:e.app,entry:e.entry.id}),vo=e=>new Set(e.flatMap(t=>t.items.map(n=>n.app)));function LI(e){const{manifests:t,defaults:n,org:r,prefs:o,teamIds:s,can:i}=e,a=new Set(t.map(S=>S.name)),c=new Map(r.map(S=>[S.key,S])),u=new Set(n.map(S=>S.key)),d=new Map,l=new Map,p=new Map;for(const S of t)for(const k of S.nav??[])for(const P of k.entries){const F={app:S.name,entry:P};if(d.set(Zt(F),F),k.workspace!=="apps"){l.set(k.workspace,[...l.get(k.workspace)??[],{item:F,section:k.section}]);continue}const z=p.get(S.name)??[],V=k.section??Ao;let te=z.find(L=>L.key===V);te||(te={key:V,items:[]},k.section&&(te.label={key:`${S.name}:section_${k.section}`}),z.push(te)),te.items.push(F),p.set(S.name,z)}const g=S=>{const k=c.get(S.key),P=new Map(S.sections.map(L=>[L,[]]));for(const{item:L,section:Y}of l.get(S.key)??[]){const oe=Y&&P.has(Y)?Y:S.sections[0];P.get(oe)?.push(L)}const F=k?.sections??[],z=new Set(F.flatMap(L=>(L.entries??[]).map(ke))),V=new Set((k?.excluded??[]).map(ke));return[...F.map(L=>L.key),...S.sections.filter(L=>!F.some(Y=>Y.key===L))].map(L=>{const Y=F.find(R=>R.key===L),oe=(Y?.entries??[]).flatMap(R=>d.get(ke(R))??[]),Ke=(P.get(L)??[]).filter(R=>!z.has(Zt(R)));return{key:L,label:Y?.label?{text:Y.label}:{key:`section_${L}`},items:[...oe,...Ke].filter(R=>!V.has(Zt(R)))}})},f=S=>(S.sections??[]).map(k=>({key:k.key,...k.label?{label:{text:k.label}}:{},items:(k.entries??[]).flatMap(P=>d.get(ke(P))??[])})),m=[...n.filter(S=>a.has(S.owner)).map(S=>({key:S.key,label:{key:`workspace_${S.key}`},icon:S.icon,order:S.order,sections:g(S)})),...r.filter(S=>!u.has(S.key)).map(S=>({key:S.key,label:{text:S.label??S.key},icon:"layout-grid",order:Number.MAX_SAFE_INTEGER,sections:f(S)}))],_=new Set(m.flatMap(S=>[...vo(S.sections)])),h=S=>S.map(k=>({...k,items:k.items.filter(P=>(P.entry.permissions??[]).every(i))})).filter(k=>k.items.length>0),y=S=>o.hidden.includes(S)?!1:o.shown.includes(S)?!0:b(S),b=S=>{const k=c.get(S);if(k?.visibleByDefault===!1)return!1;const P=k?.audience?.teamIds;return!P||P.some(F=>s.includes(F))},I=m.map(S=>{const k=c.get(S.key);return{...S,label:k?.label?{text:k.label}:S.label,icon:k?.icon??S.icon,order:k?.order??S.order}}).sort((S,k)=>S.order-k.order),v=I.map(({order:S,...k})=>{const P=u.has(k.key)?"default":"own";return{...k,group:"workspaces",kind:P,customized:P==="default"&&c.has(k.key),visible:y(k.key),visibleByDefault:b(k.key)}}),T=I.filter(S=>y(S.key)).map(S=>({...S,sections:h(S.sections)})).filter(S=>S.sections.length>0).map(({order:S,...k})=>({...k,group:"workspaces"})),O=new Map;for(const S of t){const P=[...new Map((S.nav??[]).flatMap(z=>z.entries.map(V=>[V.id,V]))).values()].map(z=>({app:S.name,entry:z})),F=h(p.get(S.name)??[{key:Ao,items:P}]);F.length!==0&&O.set(S.name,{key:"apps",app:S.name,group:"apps",label:{text:S.displayName},icon:S.icon??"app-window",sections:F})}const E=[...O.values()].filter(S=>S.app&&(p.has(S.app)||!_.has(S.app))).sort((S,k)=>Co(S).localeCompare(Co(k))),M=new Map(n.map(S=>[S.key,S.owner])),B={};for(const S of T)for(const k of vo(S.sections))B[k]??=[],M.get(S.key)===k?B[k].unshift(S.key):B[k].push(S.key);for(const S of E)S.app&&(B[S.app]=[...B[S.app]??[],"apps"]);return{workspaces:[...T,...E],all:v,index:{visible:T.map(S=>S.key),byApp:B},ownColumn:S=>O.get(S),isWorkspaceKey:S=>u.has(S)||c.has(S)}}const Co=e=>"text"in e.label?e.label.text:e.label.key,KI="notification-source",$I=(e,t)=>`${e}.pref.${t}`,UI={ai:["account.read","account.write","agent.read","agent.write","assignment.read","assignment.write","budget.read","budget.write","connector.read","connector.write","context.read","context.write","conversation.read","conversation.write","lens.read","lens.write","message.read","message.write","playbook.read","playbook.write","profile.read","profile.write","run.read","run.write","settings.read","settings.write","tool.read","transcript.write","usage.read"],analytics:["report.read"],"app-store":["app.publish","app.read","app.write","setting.read","setting.write"],assist:["board.read"],automations:["sync.read","sync.write","webhook.read","webhook.write"],communication:["account.read","account.write","activity-type.read","activity.read","activity.write","attachment.read","calendar.read","calendar.write","channel.read","channel.write","inbox.read","inbox.write","interaction.read","interaction.write","reminder.read","template.read","template.write"],context:["attribute.read","attribute.write","custom-field.read","custom-field.write","kind.read","kind.write","memory.read","memory.write","reaction.read","reaction.write","topic.read","topic.write"],crm:["company.read","company.write","contact.read","contact.write"],"eylo-voip":["account.read","account.write","callflow.read","callflow.write","channel.read","channel.write","contact.read","contact.write","device.read","device.write","group.read","group.write","interaction.read","interaction.write","media.read","media.write","menu.read","menu.write","phone-number.read","phone-number.write","recording.read","recording.write","sip.read","temporal-rule.read","temporal-rule.write","user.read","user.write","vmbox.read","vmbox.write","webhook.read","webhook.write"],google:["account.read","account.write","contact.read"],kb:["article.read","article.write","category.read","category.write","help-center.read","help-center.write","kb.read","kb.write"],mail:["account.write"],meta:["account.read","account.write"],microsoft:["account.read","account.write","contact.read","sync.write"],organization:["billing.read","billing.write","settings.read","settings.write","team.read","team.write"],shopify:["account.read","account.write","order.read"],slack:["thread.read","thread.write"],storage:["artifact.read","artifact.write","file.read","file.write","mount.read","mount.write"],time:["entry.read","entry.write","work-type.read","work-type.write"],user:["user.read","user.write"],work:["item.read","item.write","project.read","project.write"]},Tr=9e4,Gc=["out_of_office"],Vc=e=>Gc.includes(e);function BI(e,t,n){const r=n-e<Tr,o=t?.status&&(!t.expiresAt||t.expiresAt>n)?t:void 0;if(!o?.status)return{online:r,status:r?"available":"offline"};const s=o.status;return!r&&!Vc(s)?{online:!1,status:"offline"}:{online:r,status:s,message:o.message}}function FI(e,t){const n=t-e.lastSeenAt<Tr,r=n||Vc(e.status)?e.status:"offline";return n===e.online&&r===e.status?e:{...e,online:n,status:r}}function jI(e,t){return e?.teamId&&t.includes(e.teamId)?{teamId:e.teamId,mustChoose:!1}:t.length===1?{teamId:t[0],mustChoose:!1}:{teamId:void 0,mustChoose:t.length>1}}function qI(e){return e.providerAvailable&&e.allowed}const GI="provisioning-source",VI={describe:"/provisioning/describe",submit:"/provisioning/submit",status:"/provisioning/status",subscriptions:"/provisioning/subscriptions",qualify:"/provisioning/qualify",accounts:"/provisioning/accounts",catalog:"/provisioning/catalog",quote:"/provisioning/quote"},WI="resources.describe",HI="resources.search",YI="resources.resolve",zI="resources.attached";function XI(e){const t=e.indexOf(":");return t===-1?e:e.slice(0,t)}const QI="/provider/scope/related",ZI="/provider/scope/read",JI="/provider/scope/acts",Wc="auth";function Hc(e){const t=typeof e=="string"?e.match(/apps\/([^/?#]+)/):null;return t?t[1]:null}const De="/settings";function e0(e){return typeof e=="string"&&(e===De||e.startsWith(`${De}/`))}function t0(e){const t=e?e.indexOf(":"):-1;return!e||t<=0?De:`${De}/${e.slice(0,t)}/${e.slice(t+1)}`}function n0(e){return typeof e!="string"||e===""||e==="/"?!0:Hc(e)===Wc}function r0(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Yc(e){const n=e.split("/").filter(Boolean).map(r=>r.startsWith(":")?r.endsWith("?")?"(?:/[^/]+)?":"/[^/]+":`/${r0(r)}`).join("");return new RegExp(`^${n}\\/?$`)}function zc(e,t){const n=e.split("/").filter(Boolean),r=t.split("/").filter(Boolean),o={};return n.forEach((s,i)=>{if(s.startsWith(":")){const a=s.endsWith("?")?s.slice(1,-1):s.slice(1),c=r[i];c&&(o[a]=c)}}),o}function Xc(e){return e.publicBasePath??`/apps/${e.name}`}function o0(e){const t=[];for(const n of e){if(!n?.name)continue;const r=Xc(n);for(const o of n.routes??[]){if(!o.public)continue;const s=o.path==="/"?"":o.path;t.push({appName:n.name,resource:o.resource,pattern:`${r}${s}`,props:o.props})}}return t}function Qc(e,t){const n=e.split("/").filter(Boolean),r=t.split("/").filter(Boolean);for(let o=0;o<Math.min(n.length,r.length);o++){const s=n[o].startsWith(":"),i=r[o].startsWith(":");if(s!==i)return i}return n.length>r.length}function Zc(e,t){if(typeof e!="string")return null;let n=null;for(const r of t)Yc(r.pattern).test(e)&&(!n||Qc(r.pattern,n.pattern))&&(n=r);return n?{...n,params:{...n.props,...zc(n.pattern,e)}}:null}function s0(e,t){return Zc(e,t)!==null}const i0=10*1024*1024,a0=25*1024*1024,c0="sync-target",u0=20;function kr(e,t){const n=Array.isArray(t)?t.find(r=>r.name===e.name)?.policy:void 0;return n?n!=="read":e.access?e.access!=="read":!0}function Jc(e,t,n){return kr(e,n)?t.guarded==="all"||t.guarded?.has(e.name)?!0:t.autonomy==="auto"?!1:t.autonomy==="outward"?vr(e):!0:!1}function l0(e){return e.produces==="draft"}function d0(e,t){if(t.allowed){const n=t.personalTools==="allow"&&e.personal===!0;if(!t.allowed.has(e.name)&&!n)return"hidden"}return t.narrow&&!t.narrow.has(e.name)||!t.attended&&(e.personal===!0||e.surface==="interactive")||t.readOnly&&e.access!=="read"||t.mode==="ask"&&kr(e)||t.mode==="draft"&&(vr(e)||e.access!=="read"&&!l0(e))?"hidden":t.gate&&Jc(e,t.gate,t.policy)?"held":"free"}const f0={afrikaans:["[Muziek]","(C) TV GELDERLAND 2021","*Thomp thomp thomp*","www.youtube.com","ä n wood s","!.."],english:["[applause]","[APPLAUSE]","(claps)","(clapping)","(audience applauds)","(keyboard clicking)","(keyboard clacking)","(clicking)","[CLICK]","[BLANK_AUDIO]","(upbeat music)","(dramatic music)","[music playing]","(electronic music)","(audience cheering)","(audience cheers)","[MUSIC]","( ( ( ( ) ( ) ( ) ( )","(laughs)","(air whooshing)","<u>Transcribed</u> by https://otter.ai","All new tonight at 6... coming up. A new look at your forecast is A new look at your forecast is","www.mooji.org","KATHRYN A new forecast is coming up... A new forecast is coming up...","KATHRYN pandemic started. increasing since the The pandemic has been","A new look at your forecast this morning... A new look at your","We'll be right back.","We'll see you next week.","Thanks for watching!","❤️ Translated by Amara.org Communit"],flemish:["*clap*","TV GELDERLAND 2020","TV Gelderland 2021","(C) TV GELDERLAND 2021","[Muziek]","Kuman","Ondertitels ingediend door de Amara.org gemeenschap","Ondertiteld door de Amara.org gemeenschap","Dank u wel voor het kijken.","Ondertiteling door de Amara.org gemeenschap","GELUID VAN MAHIH U similarly"],french:["(applaudissements)","[Applaudissements]","Sous-titres réalisés par la communauté d'Amara.org","- Bonne journée. - Bonjour.","POP POP הי","Merci d'avoir regardé cette vidéo.","Merci d'avoir regardé cette vidéo!","Merci d'avoir regardé la vidéo.","J'espère que vous avez apprécié la vidéo.","Je vous remercie de vous abonner","Merci d'avoir regardé!","❤️ par SousTitreur.com","— Sous-titrage ST'501 —","Thanks for watching!","Sous-titres réalisés par l'Amara.org","Sous-titres réalisés para la communauté d'Amara.org","Sous-titres réalisés par la communauté d'Amara.org","Sous-titres fait par Sous-titres par Amara.org","Sous-titres réalisés par les SousTitres d'Amara.org","Sous-titres par Amara.org","Sous-titres par la communauté d'Amara.org","Sous-titres réalisés pour la communauté d'Amara.org","Sous-titres réalisés par la communauté de l'Amara.org","Sous-Titres faits par la communauté d'Amara.org","Sous-titres par l'Amara.org","Sous-titres fait par la communauté d'Amara.org","Sous-titrage ST' 501","Sous-titrage ST'501","Cliquez-vous sur les sous-titres et abonnez-vous à la chaîne d'Amara.org","❤️ par SousTitreur.com"],german:["[Klicken]","(Jubel)","*lacht*","[Anhaltender Beifall]","[Applaus]","(Applaus)","* Applaus *","[MUSIK]","* mustard ml Drumglöck und knack in einem Handbewerb *","Untertitelung aufgrund der Amara.org-Community","Untertitel im Auftrag des ZDF für funk, 2017","Untertitel von Stephanie Geiges","Untertitel der Amara.org-Community","Untertitel im Auftrag des ZDF, 2017","Untertitel im Auftrag des ZDF, 2020","Untertitel im Auftrag des ZDF, 2018","Untertitel im Auftrag des ZDF, 2021","Untertitelung im Auftrag des ZDF, 2021","Copyright WDR 2021","Copyright WDR 2020","Copyright WDR 2019","SWR 2021","SWR 2020"],italian:["Alla prossima!","*applauso*","[Musica]","[Musica]","[Applausi]","*Bip bip bip bip*","(musica del NS shore)","D' 1962 alle tribunte del Gulf","Sottotitoli creati dalla comunità Amara.org","Sottotitoli di Sottotitoli di Amara.org","Sottotitoli e revisione al canale di Amara.org","Sottotitoli e revisione a cura di Amara.org","Sottotitoli e revisione a cura di QTSS","Sottotitoli e revisione a cura di QTSS.","Sottotitoli a cura di QTSS","Sottotitoli a cura di Sottotitoli"],spanish:["[música]","[Música de cierre]","[Aplausos]","(Aplausos)","www.alimmenta.com","¡Gracias por ver el vídeo!","(sonidos del celular) (Inudible distorsión)","¡Suscríbete!","Subtítulos realizados por la comunidad de Amara.org","Subtitulado por la comunidad de Amara.org","Subtítulos por la comunidad de Amara.org","Subtítulos creados por la comunidad de Amara.org","Subtítulos en español de Amara.org","Subtítulos hechos por la comunidad de Amara.org","Subtitulos por la comunidad de Amara.org","Más información www.alimmenta.com","www.mooji.org","[MÚSICA]","[Music cuts in British]"]},eu=e=>{let t=e;return Object.values(f0).forEach(n=>{n.forEach(r=>{t=t.replaceAll(r,"")})}),t=t.replace(/\(.*?\)/g,""),t=t.replace(/\[.*?\]/g,""),t},tu=6e4,nu=8e3,ru=2,ou=.4,p0=3,m0=new Set(["aan","als","ben","bent","bij","dan","dat","deze","die","dit","doen","door","dus","echt","een","eens","even","gaan","gaat","geen","geweest","goed","graag","had","heb","hebben","hebt","heeft","het","hier","hoe","hoor","iets","inderdaad","kan","klopt","kunnen","kunt","maar","mag","mee","meer","met","mij","mijn","misschien","moet","moeten","naar","net","niet","nog","nou","oke","ook","over","prima","toch","uhm","uit","van","veel","voor","wat","weer","weet","wel","wij","wil","wilt","worden","wordt","zeg","zeggen","zijn","zou","zult","about","and","are","been","but","can","does","for","have","just","know","like","not","okay","right","she","that","the","them","then","there","they","this","want","was","well","were","what","will","with","would","yeah","you","your"]);function su(e){const t=new Set;for(const n of e.toLowerCase().split(/[^a-z0-9À-ɏ]+/))n.length<p0||m0.has(n)||t.add(n);return[...t]}function iu(e,t){if(!e.length)return 0;if(!t.length)return 1;const n=new Set(t),r=new Set(e);let o=0;for(const s of r)n.has(s)||(o+=1);return o/r.size}function au(e,t=tu){const n=e.filter(i=>!i.partial&&typeof i.text=="string");if(!n.length)return{text:"",segmentCount:0};const o=n.reduce((i,a)=>Math.max(i,a.endedAt??0),0)-t;return{text:n.filter(i=>(i.endedAt??0)>=o).map(i=>eu(i.text).trim()).filter(Boolean).join(" ").replace(/\s+/g," ").trim(),segmentCount:n.length}}const cu=60;function g0(e,t,n=cu){const r=new Set(e),o=[...e];for(const s of t)!s||r.has(s)||(r.add(s),o.push(s));return o.slice(-n)}function h0(e){const{segments:t,now:n,state:r}=e;if(r.lastTriggerAt&&n-r.lastTriggerAt<nu)return{trigger:!1,reason:"too_soon"};const o=au(t,e.windowMs);if(!o.text)return{trigger:!1,reason:"no_speech"};const s=o.segmentCount-(r.lastSegmentCount??0);if(r.lastQueryTerms&&s<ru)return{trigger:!1,reason:"too_few_new"};const i=su(o.text);return i.length?r.lastQueryTerms?.length&&iu(i,r.lastQueryTerms)<ou?{trigger:!1,reason:"same_topic"}:{trigger:!0,text:o.text,terms:i,segmentCount:o.segmentCount}:{trigger:!1,reason:"no_speech"}}const y0=["personal","organization","connections","flows","work","administration","ai"],b0="navNotice",Bt={NL:{callingCode:"31",trunkPrefix:"0",nsnMin:7,nsnMax:9},BE:{callingCode:"32",trunkPrefix:"0",nsnMin:8,nsnMax:9},LU:{callingCode:"352",nsnMin:6,nsnMax:9},DE:{callingCode:"49",trunkPrefix:"0",nsnMin:6,nsnMax:13},FR:{callingCode:"33",trunkPrefix:"0",nsnMin:9,nsnMax:9},GB:{callingCode:"44",trunkPrefix:"0",nsnMin:9,nsnMax:10},IE:{callingCode:"353",trunkPrefix:"0",nsnMin:7,nsnMax:9},ES:{callingCode:"34",nsnMin:9,nsnMax:9},PT:{callingCode:"351",nsnMin:9,nsnMax:9},IT:{callingCode:"39",nsnMin:6,nsnMax:11},AT:{callingCode:"43",trunkPrefix:"0",nsnMin:7,nsnMax:13},CH:{callingCode:"41",trunkPrefix:"0",nsnMin:9,nsnMax:9},DK:{callingCode:"45",nsnMin:8,nsnMax:8},SE:{callingCode:"46",trunkPrefix:"0",nsnMin:7,nsnMax:13},NO:{callingCode:"47",nsnMin:8,nsnMax:8},FI:{callingCode:"358",trunkPrefix:"0",nsnMin:5,nsnMax:12},PL:{callingCode:"48",nsnMin:9,nsnMax:9},US:{callingCode:"1",nsnMin:10,nsnMax:10},CA:{callingCode:"1",nsnMin:10,nsnMax:10}},uu="NL",_0=15,I0=8,E0=Array.from(new Set(Object.values(Bt).map(e=>e.callingCode))).sort((e,t)=>t.length-e.length);function To(e){if(e)return Bt[e.trim().toUpperCase()]}function ze(e,t){return e.length>=t.nsnMin&&e.length<=t.nsnMax}function ko(e){if(e.length>_0)return null;for(const t of E0){if(!e.startsWith(t))continue;const n=e.slice(t.length);for(const r of Object.values(Bt)){if(r.callingCode!==t)continue;const o=r.trunkPrefix,s=o&&n.startsWith(o)?n.slice(o.length):n;if(ze(s,r))return`+${t}${s}`}return null}return e.length<I0?null:`+${e}`}function S0(e){let t=e.trim();const n=t.match(/^(sips?|tel|whatsapp):/i);n&&(t=t.slice(n[0].length));const r=t.indexOf("@");return r>=0&&(t=t.slice(0,r)),t.trim()}function A0(e){if(!e)return!1;const t=e.indexOf("@");if(t<=0)return!1;const n=e.slice(0,t).trim();return!/^[+\d\s().-]+$/.test(n)}function Dn(e,t){if(!e)return null;const n=S0(e);if(!n)return null;const r=n.startsWith("+"),o=n.replace(/\D/g,"");if(!o)return null;if(r)return ko(o);if(o.startsWith("00"))return ko(o.slice(2));const s=To(t)??To(uu);if(!s)return null;const i=s.trunkPrefix;if(i&&o.startsWith(i)){const a=o.slice(i.length);return ze(a,s)?`+${s.callingCode}${a}`:null}if(o.startsWith(s.callingCode)){const a=o.slice(s.callingCode.length);if(ze(a,s))return`+${s.callingCode}${a}`}return!i&&ze(o,s)?`+${s.callingCode}${o}`:null}function v0(e,t=9){const n=(e??"").replace(/\D/g,"");return n.length<t?null:n.slice(-t)}function Or(e){if(!e)return null;const t=e.trim().toLowerCase(),n=t.lastIndexOf("@");if(n<=0||n===t.length-1)return null;const r=t.slice(0,n).split("+")[0],o=t.slice(n+1);return!r||!o.includes(".")?null:`${r}@${o}`}function C0(e){const t=Or(e);return t?t.slice(t.lastIndexOf("@")+1):null}const T0=new Set(["co.uk","org.uk","gov.uk","ac.uk","com.au","co.nz","com.br","co.za"]);function lu(e){if(!e)return null;const t=e.trim().toLowerCase().replace(/\.$/,"").split(".").filter(Boolean);if(t.length<2)return null;const n=t.slice(-2).join(".");return T0.has(n)&&t.length>=3?t.slice(-3).join("."):n}const du=new Set(["gmail.com","googlemail.com","outlook.com","hotmail.com","hotmail.nl","hotmail.be","hotmail.co.uk","live.com","live.nl","live.be","msn.com","yahoo.com","yahoo.co.uk","ymail.com","icloud.com","me.com","mac.com","aol.com","gmx.net","gmx.de","web.de","protonmail.com","proton.me","pm.me","tutanota.com","zoho.com","mail.com","ziggo.nl","kpnmail.nl","planet.nl","home.nl","casema.nl","chello.nl","xs4all.nl","telfort.nl","hetnet.nl","zonnet.nl","upcmail.nl","quicknet.nl","telenet.be","skynet.be","proximus.be","scarlet.be"]);function k0(e){const t=lu(e);return t?du.has(t):!1}function O0(e){if(!e)return!1;const t=e.trim().toLowerCase();return t==="tel"||t==="sms"||t==="whatsapp"||t==="fax"}function M0(e,t,n){if(!e||!t)return null;const r=e.trim().toLowerCase();if(r==="tel"||r==="sms"||r==="whatsapp"){const s=Dn(t,n);return s?`tel:${s}`:null}if(r==="fax"){const s=Dn(t,n);return s?`fax:${s}`:null}if(r==="mailto"||r==="email"){const s=Or(t);return s?`mailto:${s}`:null}const o=t.trim().toLowerCase();return o?`${r}:${o}`:null}const R0=[/<blockquote/i,/class="?gmail_quote/i,/id="?[^"]*divRplyFwdMsg/i,/id="?[^"]*mail-editor-reference-message-container/i,/-{3,}\s*Original Message\s*-{3,}/i,/\n_{5,}\s*\n/,/\bOn\b[\s\S]{0,200}?\bwrote:/i],Oo=/^\s*(?:>+\s*)?(?:from|van|sent|verzonden|to|aan|cc|subject|onderwerp|date|datum)\s*:/i,N0=/^\s*(?:on|op)\b.{0,200}?\b(?:wrote|schreef|geschreven)\s*:?\s*$/i;function D0(e){const t=e.split(`
|
|
30
|
-
`);for(let n=0;n<t.length;n++)if(
|
|
31
|
-
`).trim();return e}const
|
|
29
|
+
`).trim()}const BI="documents.describe",jI="documents.inspect",qI="documents.apply";function GI(e){const t=e.indexOf(":");if(t!==-1)return e.slice(0,t);const n=e.indexOf(".");return n===-1?e:e.slice(0,n)}const WI="installation-id";function VI(e){const t=[];for(const n of Object.keys(e))for(const r of Object.keys(e[n]))t.push({lang:n,key:r,value:e[n][r]});return t}function HI(e,t){return e?"text"in e?e.text:t(e.key.includes(":")?e.key:`global:${e.key}`):""}const To="main",ke=e=>`${e.app}:${e.entry}`,Zt=e=>ke({app:e.app,entry:e.entry.id}),ko=e=>new Set(e.flatMap(t=>t.items.map(n=>n.app)));function YI(e){const{manifests:t,defaults:n,org:r,prefs:o,teamIds:s,can:i}=e,a=new Set(t.map(S=>S.name)),c=new Map(r.map(S=>[S.key,S])),u=new Set(n.map(S=>S.key)),d=new Map,l=new Map,p=new Map;for(const S of t)for(const k of S.nav??[])for(const P of k.entries){const B={app:S.name,entry:P};if(d.set(Zt(B),B),k.workspace!=="apps"){l.set(k.workspace,[...l.get(k.workspace)??[],{item:B,section:k.section}]);continue}const z=p.get(S.name)??[],W=k.section??To;let te=z.find(L=>L.key===W);te||(te={key:W,items:[]},k.section&&(te.label={key:`${S.name}:section_${k.section}`}),z.push(te)),te.items.push(B),p.set(S.name,z)}const g=S=>{const k=c.get(S.key),P=new Map(S.sections.map(L=>[L,[]]));for(const{item:L,section:Y}of l.get(S.key)??[]){const oe=Y&&P.has(Y)?Y:S.sections[0];P.get(oe)?.push(L)}const B=k?.sections??[],z=new Set(B.flatMap(L=>(L.entries??[]).map(ke))),W=new Set((k?.excluded??[]).map(ke));return[...B.map(L=>L.key),...S.sections.filter(L=>!B.some(Y=>Y.key===L))].map(L=>{const Y=B.find(R=>R.key===L),oe=(Y?.entries??[]).flatMap(R=>d.get(ke(R))??[]),Ke=(P.get(L)??[]).filter(R=>!z.has(Zt(R)));return{key:L,label:Y?.label?{text:Y.label}:{key:`section_${L}`},items:[...oe,...Ke].filter(R=>!W.has(Zt(R)))}})},f=S=>(S.sections??[]).map(k=>({key:k.key,...k.label?{label:{text:k.label}}:{},items:(k.entries??[]).flatMap(P=>d.get(ke(P))??[])})),m=[...n.filter(S=>a.has(S.owner)).map(S=>({key:S.key,label:{key:`workspace_${S.key}`},icon:S.icon,order:S.order,sections:g(S)})),...r.filter(S=>!u.has(S.key)).map(S=>({key:S.key,label:{text:S.label??S.key},icon:"layout-grid",order:Number.MAX_SAFE_INTEGER,sections:f(S)}))],_=new Set(m.flatMap(S=>[...ko(S.sections)])),h=S=>S.map(k=>({...k,items:k.items.filter(P=>(P.entry.permissions??[]).every(i))})).filter(k=>k.items.length>0),y=S=>o.hidden.includes(S)?!1:o.shown.includes(S)?!0:b(S),b=S=>{const k=c.get(S);if(k?.visibleByDefault===!1)return!1;const P=k?.audience?.teamIds;return!P||P.some(B=>s.includes(B))},I=m.map(S=>{const k=c.get(S.key);return{...S,label:k?.label?{text:k.label}:S.label,icon:k?.icon??S.icon,order:k?.order??S.order}}).sort((S,k)=>S.order-k.order),v=I.map(({order:S,...k})=>{const P=u.has(k.key)?"default":"own";return{...k,group:"workspaces",kind:P,customized:P==="default"&&c.has(k.key),visible:y(k.key),visibleByDefault:b(k.key)}}),T=I.filter(S=>y(S.key)).map(S=>({...S,sections:h(S.sections)})).filter(S=>S.sections.length>0).map(({order:S,...k})=>({...k,group:"workspaces"})),O=new Map;for(const S of t){const P=[...new Map((S.nav??[]).flatMap(z=>z.entries.map(W=>[W.id,W]))).values()].map(z=>({app:S.name,entry:z})),B=h(p.get(S.name)??[{key:To,items:P}]);B.length!==0&&O.set(S.name,{key:"apps",app:S.name,group:"apps",label:{text:S.displayName},icon:S.icon??"app-window",sections:B})}const E=[...O.values()].filter(S=>S.app&&(p.has(S.app)||!_.has(S.app))).sort((S,k)=>Oo(S).localeCompare(Oo(k))),M=new Map(n.map(S=>[S.key,S.owner])),F={};for(const S of T)for(const k of ko(S.sections))F[k]??=[],M.get(S.key)===k?F[k].unshift(S.key):F[k].push(S.key);for(const S of E)S.app&&(F[S.app]=[...F[S.app]??[],"apps"]);return{workspaces:[...T,...E],all:v,index:{visible:T.map(S=>S.key),byApp:F},ownColumn:S=>O.get(S),isWorkspaceKey:S=>u.has(S)||c.has(S)}}const Oo=e=>"text"in e.label?e.label.text:e.label.key,zI="notification-source",XI=(e,t)=>`${e}.pref.${t}`,QI={ai:["account.read","account.write","agent.read","agent.write","assignment.read","assignment.write","budget.read","budget.write","connector.read","connector.write","context.read","context.write","conversation.read","conversation.write","lens.read","lens.write","message.read","message.write","playbook.read","playbook.write","profile.read","profile.write","run.read","run.write","settings.read","settings.write","tool.read","transcript.write","usage.read"],analytics:["report.read"],"app-store":["app.publish","app.read","app.write","setting.read","setting.write"],assist:["board.read"],automations:["sync.read","sync.write","webhook.read","webhook.write"],communication:["account.read","account.write","activity-type.read","activity.read","activity.write","attachment.read","calendar.read","calendar.write","channel.read","channel.write","inbox.read","inbox.write","interaction.read","interaction.write","reminder.read","template.read","template.write"],context:["attribute.read","attribute.write","custom-field.read","custom-field.write","kind.read","kind.write","memory.read","memory.write","reaction.read","reaction.write","topic.read","topic.write"],crm:["company.read","company.write","contact.read","contact.write"],"eylo-voip":["account.read","account.write","callflow.read","callflow.write","channel.read","channel.write","contact.read","contact.write","device.read","device.write","group.read","group.write","interaction.read","interaction.write","media.read","media.write","menu.read","menu.write","phone-number.read","phone-number.write","recording.read","recording.write","sip.read","temporal-rule.read","temporal-rule.write","user.read","user.write","vmbox.read","vmbox.write","webhook.read","webhook.write"],google:["account.read","account.write","contact.read"],kb:["article.read","article.write","category.read","category.write","help-center.read","help-center.write","kb.read","kb.write"],mail:["account.write"],meta:["account.read","account.write"],microsoft:["account.read","account.write","contact.read","sync.write"],organization:["billing.read","billing.write","settings.read","settings.write","team.read","team.write"],shopify:["account.read","account.write","order.read"],slack:["thread.read","thread.write"],storage:["artifact.read","artifact.write","file.read","file.write","mount.read","mount.write"],time:["entry.read","entry.write","work-type.read","work-type.write"],user:["user.read","user.write"],work:["item.read","item.write","project.read","project.write"]},kr=9e4,Qc=["out_of_office"],Zc=e=>Qc.includes(e);function ZI(e,t,n){const r=n-e<kr,o=t?.status&&(!t.expiresAt||t.expiresAt>n)?t:void 0;if(!o?.status)return{online:r,status:r?"available":"offline"};const s=o.status;return!r&&!Zc(s)?{online:!1,status:"offline"}:{online:r,status:s,message:o.message}}function JI(e,t){const n=t-e.lastSeenAt<kr,r=n||Zc(e.status)?e.status:"offline";return n===e.online&&r===e.status?e:{...e,online:n,status:r}}function e0(e,t){return e?.teamId&&t.includes(e.teamId)?{teamId:e.teamId,mustChoose:!1}:t.length===1?{teamId:t[0],mustChoose:!1}:{teamId:void 0,mustChoose:t.length>1}}function t0(e){return e.providerAvailable&&e.allowed}const n0="provisioning-source",r0={describe:"/provisioning/describe",submit:"/provisioning/submit",status:"/provisioning/status",subscriptions:"/provisioning/subscriptions",accounts:"/provisioning/accounts",catalog:"/provisioning/catalog",prepare:"/provisioning/prepare"};function o0(e){const t=`${e.app}:${e.offer}`;return e.sku?`${t}:${e.sku}`:t}function s0(e,t){return e.app!==t.app||e.offer!==t.offer?!1:!e.sku||!t.sku||e.sku===t.sku}function i0(e,t){const n=[];for(const r of e){if(r.phase==="fulfillment")continue;const o=!!t[r.key]?.trim();n.push({kind:"answer",key:r.key,label:r.label,type:r.type??"text",before:r.phase==="qualify"?"quote":"order",...r.required?{required:!0}:{},...r.options?{options:r.options.map(s=>({key:s.value,label:s.label}))}:{},met:o||!r.required})}return{requirements:n}}const a0="resources.describe",c0="resources.search",u0="resources.resolve",l0="resources.attached";function d0(e){const t=e.indexOf(":");return t===-1?e:e.slice(0,t)}const f0="/provider/scope/related",p0="/provider/scope/read",m0="/provider/scope/acts",Jc="auth";function eu(e){const t=typeof e=="string"?e.match(/apps\/([^/?#]+)/):null;return t?t[1]:null}const De="/settings";function g0(e){return typeof e=="string"&&(e===De||e.startsWith(`${De}/`))}function h0(e){const t=e?e.indexOf(":"):-1;return!e||t<=0?De:`${De}/${e.slice(0,t)}/${e.slice(t+1)}`}function y0(e){return typeof e!="string"||e===""||e==="/"?!0:eu(e)===Jc}function b0(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function tu(e){const n=e.split("/").filter(Boolean).map(r=>r.startsWith(":")?r.endsWith("?")?"(?:/[^/]+)?":"/[^/]+":`/${b0(r)}`).join("");return new RegExp(`^${n}\\/?$`)}function nu(e,t){const n=e.split("/").filter(Boolean),r=t.split("/").filter(Boolean),o={};return n.forEach((s,i)=>{if(s.startsWith(":")){const a=s.endsWith("?")?s.slice(1,-1):s.slice(1),c=r[i];c&&(o[a]=c)}}),o}function ru(e){return e.publicBasePath??`/apps/${e.name}`}function _0(e){const t=[];for(const n of e){if(!n?.name)continue;const r=ru(n);for(const o of n.routes??[]){if(!o.public)continue;const s=o.path==="/"?"":o.path;t.push({appName:n.name,resource:o.resource,pattern:`${r}${s}`,props:o.props})}}return t}function ou(e,t){const n=e.split("/").filter(Boolean),r=t.split("/").filter(Boolean);for(let o=0;o<Math.min(n.length,r.length);o++){const s=n[o].startsWith(":"),i=r[o].startsWith(":");if(s!==i)return i}return n.length>r.length}function su(e,t){if(typeof e!="string")return null;let n=null;for(const r of t)tu(r.pattern).test(e)&&(!n||ou(r.pattern,n.pattern))&&(n=r);return n?{...n,params:{...n.props,...nu(n.pattern,e)}}:null}function I0(e,t){return su(e,t)!==null}const E0=10*1024*1024,S0=25*1024*1024,A0="sync-target",v0=20;function Or(e,t){const n=Array.isArray(t)?t.find(r=>r.name===e.name)?.policy:void 0;return n?n!=="read":e.access?e.access!=="read":!0}function iu(e,t,n){return Or(e,n)?t.guarded==="all"||t.guarded?.has(e.name)?!0:t.autonomy==="auto"?!1:t.autonomy==="outward"?Cr(e):!0:!1}function C0(e){return e.produces==="draft"}function T0(e,t){if(t.allowed){const n=t.personalTools==="allow"&&e.personal===!0;if(!t.allowed.has(e.name)&&!n)return"hidden"}return t.narrow&&!t.narrow.has(e.name)||!t.attended&&(e.personal===!0||e.surface==="interactive")||t.readOnly&&e.access!=="read"||t.mode==="ask"&&Or(e)||t.mode==="draft"&&(Cr(e)||e.access!=="read"&&!C0(e))?"hidden":t.gate&&iu(e,t.gate,t.policy)?"held":"free"}const k0={afrikaans:["[Muziek]","(C) TV GELDERLAND 2021","*Thomp thomp thomp*","www.youtube.com","ä n wood s","!.."],english:["[applause]","[APPLAUSE]","(claps)","(clapping)","(audience applauds)","(keyboard clicking)","(keyboard clacking)","(clicking)","[CLICK]","[BLANK_AUDIO]","(upbeat music)","(dramatic music)","[music playing]","(electronic music)","(audience cheering)","(audience cheers)","[MUSIC]","( ( ( ( ) ( ) ( ) ( )","(laughs)","(air whooshing)","<u>Transcribed</u> by https://otter.ai","All new tonight at 6... coming up. A new look at your forecast is A new look at your forecast is","www.mooji.org","KATHRYN A new forecast is coming up... A new forecast is coming up...","KATHRYN pandemic started. increasing since the The pandemic has been","A new look at your forecast this morning... A new look at your","We'll be right back.","We'll see you next week.","Thanks for watching!","❤️ Translated by Amara.org Communit"],flemish:["*clap*","TV GELDERLAND 2020","TV Gelderland 2021","(C) TV GELDERLAND 2021","[Muziek]","Kuman","Ondertitels ingediend door de Amara.org gemeenschap","Ondertiteld door de Amara.org gemeenschap","Dank u wel voor het kijken.","Ondertiteling door de Amara.org gemeenschap","GELUID VAN MAHIH U similarly"],french:["(applaudissements)","[Applaudissements]","Sous-titres réalisés par la communauté d'Amara.org","- Bonne journée. - Bonjour.","POP POP הי","Merci d'avoir regardé cette vidéo.","Merci d'avoir regardé cette vidéo!","Merci d'avoir regardé la vidéo.","J'espère que vous avez apprécié la vidéo.","Je vous remercie de vous abonner","Merci d'avoir regardé!","❤️ par SousTitreur.com","— Sous-titrage ST'501 —","Thanks for watching!","Sous-titres réalisés par l'Amara.org","Sous-titres réalisés para la communauté d'Amara.org","Sous-titres réalisés par la communauté d'Amara.org","Sous-titres fait par Sous-titres par Amara.org","Sous-titres réalisés par les SousTitres d'Amara.org","Sous-titres par Amara.org","Sous-titres par la communauté d'Amara.org","Sous-titres réalisés pour la communauté d'Amara.org","Sous-titres réalisés par la communauté de l'Amara.org","Sous-Titres faits par la communauté d'Amara.org","Sous-titres par l'Amara.org","Sous-titres fait par la communauté d'Amara.org","Sous-titrage ST' 501","Sous-titrage ST'501","Cliquez-vous sur les sous-titres et abonnez-vous à la chaîne d'Amara.org","❤️ par SousTitreur.com"],german:["[Klicken]","(Jubel)","*lacht*","[Anhaltender Beifall]","[Applaus]","(Applaus)","* Applaus *","[MUSIK]","* mustard ml Drumglöck und knack in einem Handbewerb *","Untertitelung aufgrund der Amara.org-Community","Untertitel im Auftrag des ZDF für funk, 2017","Untertitel von Stephanie Geiges","Untertitel der Amara.org-Community","Untertitel im Auftrag des ZDF, 2017","Untertitel im Auftrag des ZDF, 2020","Untertitel im Auftrag des ZDF, 2018","Untertitel im Auftrag des ZDF, 2021","Untertitelung im Auftrag des ZDF, 2021","Copyright WDR 2021","Copyright WDR 2020","Copyright WDR 2019","SWR 2021","SWR 2020"],italian:["Alla prossima!","*applauso*","[Musica]","[Musica]","[Applausi]","*Bip bip bip bip*","(musica del NS shore)","D' 1962 alle tribunte del Gulf","Sottotitoli creati dalla comunità Amara.org","Sottotitoli di Sottotitoli di Amara.org","Sottotitoli e revisione al canale di Amara.org","Sottotitoli e revisione a cura di Amara.org","Sottotitoli e revisione a cura di QTSS","Sottotitoli e revisione a cura di QTSS.","Sottotitoli a cura di QTSS","Sottotitoli a cura di Sottotitoli"],spanish:["[música]","[Música de cierre]","[Aplausos]","(Aplausos)","www.alimmenta.com","¡Gracias por ver el vídeo!","(sonidos del celular) (Inudible distorsión)","¡Suscríbete!","Subtítulos realizados por la comunidad de Amara.org","Subtitulado por la comunidad de Amara.org","Subtítulos por la comunidad de Amara.org","Subtítulos creados por la comunidad de Amara.org","Subtítulos en español de Amara.org","Subtítulos hechos por la comunidad de Amara.org","Subtitulos por la comunidad de Amara.org","Más información www.alimmenta.com","www.mooji.org","[MÚSICA]","[Music cuts in British]"]},au=e=>{let t=e;return Object.values(k0).forEach(n=>{n.forEach(r=>{t=t.replaceAll(r,"")})}),t=t.replace(/\(.*?\)/g,""),t=t.replace(/\[.*?\]/g,""),t},cu=6e4,uu=8e3,lu=2,du=.4,O0=3,M0=new Set(["aan","als","ben","bent","bij","dan","dat","deze","die","dit","doen","door","dus","echt","een","eens","even","gaan","gaat","geen","geweest","goed","graag","had","heb","hebben","hebt","heeft","het","hier","hoe","hoor","iets","inderdaad","kan","klopt","kunnen","kunt","maar","mag","mee","meer","met","mij","mijn","misschien","moet","moeten","naar","net","niet","nog","nou","oke","ook","over","prima","toch","uhm","uit","van","veel","voor","wat","weer","weet","wel","wij","wil","wilt","worden","wordt","zeg","zeggen","zijn","zou","zult","about","and","are","been","but","can","does","for","have","just","know","like","not","okay","right","she","that","the","them","then","there","they","this","want","was","well","were","what","will","with","would","yeah","you","your"]);function fu(e){const t=new Set;for(const n of e.toLowerCase().split(/[^a-z0-9À-ɏ]+/))n.length<O0||M0.has(n)||t.add(n);return[...t]}function pu(e,t){if(!e.length)return 0;if(!t.length)return 1;const n=new Set(t),r=new Set(e);let o=0;for(const s of r)n.has(s)||(o+=1);return o/r.size}function mu(e,t=cu){const n=e.filter(i=>!i.partial&&typeof i.text=="string");if(!n.length)return{text:"",segmentCount:0};const o=n.reduce((i,a)=>Math.max(i,a.endedAt??0),0)-t;return{text:n.filter(i=>(i.endedAt??0)>=o).map(i=>au(i.text).trim()).filter(Boolean).join(" ").replace(/\s+/g," ").trim(),segmentCount:n.length}}const gu=60;function R0(e,t,n=gu){const r=new Set(e),o=[...e];for(const s of t)!s||r.has(s)||(r.add(s),o.push(s));return o.slice(-n)}function N0(e){const{segments:t,now:n,state:r}=e;if(r.lastTriggerAt&&n-r.lastTriggerAt<uu)return{trigger:!1,reason:"too_soon"};const o=mu(t,e.windowMs);if(!o.text)return{trigger:!1,reason:"no_speech"};const s=o.segmentCount-(r.lastSegmentCount??0);if(r.lastQueryTerms&&s<lu)return{trigger:!1,reason:"too_few_new"};const i=fu(o.text);return i.length?r.lastQueryTerms?.length&&pu(i,r.lastQueryTerms)<du?{trigger:!1,reason:"same_topic"}:{trigger:!0,text:o.text,terms:i,segmentCount:o.segmentCount}:{trigger:!1,reason:"no_speech"}}const D0=["personal","organization","connections","flows","work","administration","ai"],x0="navNotice",Ft={NL:{callingCode:"31",trunkPrefix:"0",nsnMin:7,nsnMax:9},BE:{callingCode:"32",trunkPrefix:"0",nsnMin:8,nsnMax:9},LU:{callingCode:"352",nsnMin:6,nsnMax:9},DE:{callingCode:"49",trunkPrefix:"0",nsnMin:6,nsnMax:13},FR:{callingCode:"33",trunkPrefix:"0",nsnMin:9,nsnMax:9},GB:{callingCode:"44",trunkPrefix:"0",nsnMin:9,nsnMax:10},IE:{callingCode:"353",trunkPrefix:"0",nsnMin:7,nsnMax:9},ES:{callingCode:"34",nsnMin:9,nsnMax:9},PT:{callingCode:"351",nsnMin:9,nsnMax:9},IT:{callingCode:"39",nsnMin:6,nsnMax:11},AT:{callingCode:"43",trunkPrefix:"0",nsnMin:7,nsnMax:13},CH:{callingCode:"41",trunkPrefix:"0",nsnMin:9,nsnMax:9},DK:{callingCode:"45",nsnMin:8,nsnMax:8},SE:{callingCode:"46",trunkPrefix:"0",nsnMin:7,nsnMax:13},NO:{callingCode:"47",nsnMin:8,nsnMax:8},FI:{callingCode:"358",trunkPrefix:"0",nsnMin:5,nsnMax:12},PL:{callingCode:"48",nsnMin:9,nsnMax:9},US:{callingCode:"1",nsnMin:10,nsnMax:10},CA:{callingCode:"1",nsnMin:10,nsnMax:10}},hu="NL",w0=15,P0=8,L0=Array.from(new Set(Object.values(Ft).map(e=>e.callingCode))).sort((e,t)=>t.length-e.length);function Mo(e){if(e)return Ft[e.trim().toUpperCase()]}function ze(e,t){return e.length>=t.nsnMin&&e.length<=t.nsnMax}function Ro(e){if(e.length>w0)return null;for(const t of L0){if(!e.startsWith(t))continue;const n=e.slice(t.length);for(const r of Object.values(Ft)){if(r.callingCode!==t)continue;const o=r.trunkPrefix,s=o&&n.startsWith(o)?n.slice(o.length):n;if(ze(s,r))return`+${t}${s}`}return null}return e.length<P0?null:`+${e}`}function K0(e){let t=e.trim();const n=t.match(/^(sips?|tel|whatsapp):/i);n&&(t=t.slice(n[0].length));const r=t.indexOf("@");return r>=0&&(t=t.slice(0,r)),t.trim()}function $0(e){if(!e)return!1;const t=e.indexOf("@");if(t<=0)return!1;const n=e.slice(0,t).trim();return!/^[+\d\s().-]+$/.test(n)}function Dn(e,t){if(!e)return null;const n=K0(e);if(!n)return null;const r=n.startsWith("+"),o=n.replace(/\D/g,"");if(!o)return null;if(r)return Ro(o);if(o.startsWith("00"))return Ro(o.slice(2));const s=Mo(t)??Mo(hu);if(!s)return null;const i=s.trunkPrefix;if(i&&o.startsWith(i)){const a=o.slice(i.length);return ze(a,s)?`+${s.callingCode}${a}`:null}if(o.startsWith(s.callingCode)){const a=o.slice(s.callingCode.length);if(ze(a,s))return`+${s.callingCode}${a}`}return!i&&ze(o,s)?`+${s.callingCode}${o}`:null}function U0(e,t=9){const n=(e??"").replace(/\D/g,"");return n.length<t?null:n.slice(-t)}function Mr(e){if(!e)return null;const t=e.trim().toLowerCase(),n=t.lastIndexOf("@");if(n<=0||n===t.length-1)return null;const r=t.slice(0,n).split("+")[0],o=t.slice(n+1);return!r||!o.includes(".")?null:`${r}@${o}`}function F0(e){const t=Mr(e);return t?t.slice(t.lastIndexOf("@")+1):null}const B0=new Set(["co.uk","org.uk","gov.uk","ac.uk","com.au","co.nz","com.br","co.za"]);function yu(e){if(!e)return null;const t=e.trim().toLowerCase().replace(/\.$/,"").split(".").filter(Boolean);if(t.length<2)return null;const n=t.slice(-2).join(".");return B0.has(n)&&t.length>=3?t.slice(-3).join("."):n}const bu=new Set(["gmail.com","googlemail.com","outlook.com","hotmail.com","hotmail.nl","hotmail.be","hotmail.co.uk","live.com","live.nl","live.be","msn.com","yahoo.com","yahoo.co.uk","ymail.com","icloud.com","me.com","mac.com","aol.com","gmx.net","gmx.de","web.de","protonmail.com","proton.me","pm.me","tutanota.com","zoho.com","mail.com","ziggo.nl","kpnmail.nl","planet.nl","home.nl","casema.nl","chello.nl","xs4all.nl","telfort.nl","hetnet.nl","zonnet.nl","upcmail.nl","quicknet.nl","telenet.be","skynet.be","proximus.be","scarlet.be"]);function j0(e){const t=yu(e);return t?bu.has(t):!1}function q0(e){if(!e)return!1;const t=e.trim().toLowerCase();return t==="tel"||t==="sms"||t==="whatsapp"||t==="fax"}function G0(e,t,n){if(!e||!t)return null;const r=e.trim().toLowerCase();if(r==="tel"||r==="sms"||r==="whatsapp"){const s=Dn(t,n);return s?`tel:${s}`:null}if(r==="fax"){const s=Dn(t,n);return s?`fax:${s}`:null}if(r==="mailto"||r==="email"){const s=Mr(t);return s?`mailto:${s}`:null}const o=t.trim().toLowerCase();return o?`${r}:${o}`:null}const W0=[/<blockquote/i,/class="?gmail_quote/i,/id="?[^"]*divRplyFwdMsg/i,/id="?[^"]*mail-editor-reference-message-container/i,/-{3,}\s*Original Message\s*-{3,}/i,/\n_{5,}\s*\n/,/\bOn\b[\s\S]{0,200}?\bwrote:/i],No=/^\s*(?:>+\s*)?(?:from|van|sent|verzonden|to|aan|cc|subject|onderwerp|date|datum)\s*:/i,V0=/^\s*(?:on|op)\b.{0,200}?\b(?:wrote|schreef|geschreven)\s*:?\s*$/i;function H0(e){const t=e.split(`
|
|
30
|
+
`);for(let n=0;n<t.length;n++)if(V0.test(t[n])||No.test(t[n])&&t.slice(n+1,n+4).some(r=>No.test(r)))return t.slice(0,n).join(`
|
|
31
|
+
`).trim();return e}const Y0=/^(?:https?:|mailto:|tel:)/i,z0=/^(?:https?:|cid:|data:image\/)/i;function Jt(e,t){const n=e.match(new RegExp(`\\b${t}\\s*=\\s*(?:"([^"]*)"|'([^']*)'|([^\\s">]+))`,"i"));return(n?.[1]??n?.[2]??n?.[3]??"").trim()}const X0=/(!\[[^\]]*\]\([^)]*\))/;function Do(e){return e.replace(/\s+/g," ").trim().split(X0).map((t,n)=>n%2===1?t:t.replace(/[[\]]/g,"\\$&")).join("")}function en(e){return e.replace(/[()\s<>"]/g,t=>`%${t.charCodeAt(0).toString(16).toUpperCase().padStart(2,"0")}`)}function Q0(e){return e.replace(/<img\b([^>]*?)\/?>/gi,(n,r)=>{const o=Jt(r,"src");return z0.test(o)?`})`:""}).replace(/<a\b([^>]*)>([\s\S]*?)<\/a\s*>/gi,(n,r,o)=>{const s=Do(o.replace(/<[^>]*>/g,"")),i=Jt(r,"href");return Y0.test(i)?`[${s||en(i)}](${en(i)})`:s})}const Z0=/<table\b[^>]*>((?:(?!<table\b)[\s\S])*?)<\/table\s*>/i,J0=/<tr\b[^>]*>([\s\S]*?)<\/tr\s*>/gi,eE=/<(t[dh])\b([^>]*)>([\s\S]*?)<\/\1\s*>/gi;function tE(e,t){return/<table\b/i.test(e)||e.includes(`
|
|
32
32
|
|
|
33
|
-
|`)||t.includes("![")||t.length>200}const
|
|
33
|
+
|`)||t.includes("![")||t.length>200}const nE=40,rE={left:"---",center:":---:",right:"---:"};function oE(e){const t=e.match(/align\s*[=:]\s*["']?\s*(right|center)/i);return t?t[1].toLowerCase():"left"}function sE(e){return e.replace(/<[^>]*>/g,"").replace(/\s+/g," ").trim().replace(/\|/g,"\\|")}function iE(e){const t=[];for(const i of e.matchAll(J0)){const a=[];for(const c of i[1].matchAll(eE)){const u=sE(c[3]);if(tE(c[3],u))return null;a.push({text:u,align:oE(c[2])})}if(a.length===0)return null;a.some(c=>c.text!=="")&&t.push(a)}const n=t[0]?.length??0;if(t.length<2||n<2||t.some(i=>i.length!==n))return null;const r=i=>`| ${i.map(a=>a.text).join(" | ")} |`,o=t[1].map(i=>rE[i.align]).join(" | "),s=t.slice(1).map(r).join(`
|
|
34
34
|
`);return`
|
|
35
35
|
|
|
36
36
|
${r(t[0])}
|
|
37
37
|
| ${o} |
|
|
38
38
|
${s}
|
|
39
39
|
|
|
40
|
-
`}function
|
|
41
|
-
`).replace(/<(?:tbody|thead|tfoot|caption|colgroup|col|tr|t[dh])\b[^>]*>/gi,"").replace(/<\/(?:tbody|thead|tfoot|caption|colgroup)\s*>/gi,"")}function
|
|
40
|
+
`}function aE(e){return e.replace(/<\/(t[dh])\s*>/gi," ").replace(/<\/tr\s*>/gi,`
|
|
41
|
+
`).replace(/<(?:tbody|thead|tfoot|caption|colgroup|col|tr|t[dh])\b[^>]*>/gi,"").replace(/<\/(?:tbody|thead|tfoot|caption|colgroup)\s*>/gi,"")}function cE(e){let t=e;for(let n=0;n<nE;n++){const r=Z0.exec(t);if(!r||r.index===void 0)break;const s=iE(r[1])??`
|
|
42
42
|
|
|
43
|
-
${
|
|
43
|
+
${aE(r[1])}
|
|
44
44
|
|
|
45
|
-
`;t=t.slice(0,r.index)+s+t.slice(r.index+r[0].length)}return t}function
|
|
46
|
-
`),t&&(n=
|
|
45
|
+
`;t=t.slice(0,r.index)+s+t.slice(r.index+r[0].length)}return t}function xo(e,t){let n=e;return n=n.replace(/<(script|style)[\s\S]*?<\/\1>/gi,""),n=n.replace(/<!--[\s\S]*?-->/g,""),n=n.replace(/<br\s*\/?>/gi,`
|
|
46
|
+
`),t&&(n=cE(Q0(n))),n=n.replace(/<\/(p|h[1-6]|ul|ol|table|blockquote)>/gi,`
|
|
47
47
|
|
|
48
48
|
`),n=n.replace(/<\/(div|li|tr)>/gi,`
|
|
49
|
-
`),n=n.replace(/<\/(td|th)>/gi," "),n=n.replace(/<[^>]+>/g,""),n=n.replace(/<[^>]*$/,""),n}function
|
|
49
|
+
`),n=n.replace(/<\/(td|th)>/gi," "),n=n.replace(/<[^>]+>/g,""),n=n.replace(/<[^>]*$/,""),n}function wo(e){return!Number.isInteger(e)||e<0||e>1114111?null:String.fromCodePoint(e)}const uE={euro:"€",pound:"£",yen:"¥",cent:"¢",copy:"©",reg:"®",trade:"™",deg:"°",plusmn:"±",times:"×",middot:"·",bull:"•",hellip:"…",mdash:"—",ndash:"–",lsquo:"‘",rsquo:"’",ldquo:"“",rdquo:"”",apos:"'"};function Po(e){return e.replace(/ /gi," ").replace(/&([a-z]+);/gi,(t,n)=>uE[n.toLowerCase()]??t).replace(/</gi,"<").replace(/>/gi,">").replace(/"/gi,'"').replace(/&#(\d+);/g,(t,n)=>wo(Number(n))??t).replace(/&#x([0-9a-f]+);/gi,(t,n)=>wo(parseInt(n,16))??t).replace(/&/gi,"&")}function Lo(e){return e.replace(/\r/g,"").replace(/[ \t]+/g," ").replace(/ *\n */g,`
|
|
50
50
|
`).replace(/\n{3,}/g,`
|
|
51
51
|
|
|
52
|
-
`).trim()}const fu=/<\s*(html|body|div|p|table|br|span)\b/i;function z0(e){return fu.test(e)}function X0(e){return pu(e,!1)}function Q0(e){return pu(e,!0)}function pu(e,t){if(typeof e!="string"||!e)return"";let n=e.length;for(const i of R0){const a=e.search(i);a>=0&&a<n&&(n=a)}const r=e.slice(0,n);let o=xo(Do(Ro(r,t)));return o||(o=xo(Do(Ro(e,t)))),D0(o)||o}exports.ACTIVE_ASSIGNMENT_STATUSES=Ql;exports.ACTIVITY_CATALOG=ne;exports.ADOPT_COLUMNS=er;exports.AGING_BUCKETS=vc;exports.AGREEMENT_SCOPE_KIND=_c;exports.AGREEMENT_TRANSITIONS=Yo;exports.AI_ATTACHMENT_LIMITS=Kc;exports.AI_ATTACHMENT_MAX_PER_TURN=x_;exports.AI_ATTACHMENT_TURN_BUDGET=D_;exports.AI_CAPABILITIES=vt;exports.AI_TOOL_PROVIDER_GROUP=P_;exports.AI_VENDORS=$n;exports.ALLOWED_LINK_SCHEMES=us;exports.APP_PERMISSIONS=UI;exports.ARTICLE_SCOPE_KIND=ym;exports.ARTIFACT_MAX_BLOCKS=nt;exports.ARTIFACT_MAX_BODY_BYTES=cs;exports.ARTIFACT_MAX_CELL_LEN=he;exports.ARTIFACT_MAX_KPI_ITEMS=it;exports.ARTIFACT_MAX_LIST_ITEMS=rt;exports.ARTIFACT_MAX_TABLE_COLUMNS=st;exports.ARTIFACT_MAX_TABLE_ROWS=ot;exports.ARTIFACT_MAX_TEXT_LEN=Ct;exports.ASSET_GROUP_SEEDS=Wf;exports.ASSIGNMENT_SCOPE_KIND=gs;exports.ASSIST_BANDS=U_;exports.ASSIST_SOURCE_PROVIDER_GROUP=$_;exports.ATTENTION_STATUSES=Ni;exports.AT_RISK_GAP=Za;exports.AUTH_APP_NAME=Wc;exports.AUTO_READY_MIN_PROPOSALS=Ca;exports.AUTO_READY_RATE=Ta;exports.ActivityTypeRegistry=Uo;exports.BOOKABLE_KINDS=uc;exports.BOOKABLE_ROUTES=G_;exports.BOOKABLE_SOURCE_PROVIDER_GROUP=j_;exports.BOOKKEEPING_PROVIDER_GROUP=q_;exports.BOOKKEEPING_ROUTES=V_;exports.BUILT_IN_ONLY=Du;exports.BULK_PENALTY=Di;exports.BUSINESS_ENTITY_LIST_SERVICE=Td;exports.BUSINESS_ENTITY_PARAM=Kt;exports.CADENCE_FLOOR_MS=nu;exports.CADENCE_MIN_NEW_SEGMENTS=ru;exports.CADENCE_MIN_NOVELTY=ou;exports.CADENCE_WINDOW_MS=tu;exports.CAPITALIZATION_THRESHOLD_CENTS=ei;exports.CLASSIFY_VARS=uh;exports.CLEARABLE_FIELDS=Fp;exports.COMPANY_ADDRESS_KINDS=rf;exports.COMPANY_RECEIVABLES_SERVICE=Hb;exports.COMPANY_ROLE_KINDS=cf;exports.CONNECTOR_PROVIDER_GROUP=mI;exports.CONTEXT_COLLECT_SERVICE=gI;exports.CORE_DIMENSIONS=kl;exports.CRM_ACTIVITY_SCOPE_KIND=bf;exports.CRM_CALL_CHANNELS=If;exports.CRM_CALL_LOGGED=js;exports.CRM_CALL_OUTCOMES=Ef;exports.CRM_NOTE_ADDED=Fs;exports.CRM_STAGE_CHANGED=_f;exports.CUSTOM_RESOLUTION_PREFIX=pm;exports.CommunicationScheme=jc;exports.DAY_MS=vi;exports.DEFAULT_CHECK_IN_DAYS=Xa;exports.DEFAULT_DUNNING_POLICY=Sb;exports.DEFAULT_FORECAST_WEEKS=ua;exports.DEFAULT_JUMP_PERCENT=Da;exports.DEFAULT_MEMORY_BUDGET=ug;exports.DEFAULT_NUMBER_PADDING=Nb;exports.DEFAULT_PHONE_REGION=uu;exports.DEFAULT_QUOTE_TEMPLATE_BLOCKS=Eb;exports.DEFAULT_TAX_RATE_KEY=dg;exports.DEFAULT_TEMPLATE_CONDITIONS=_b;exports.DEFAULT_TOLERANCE=Pa;exports.DEFAULT_WORKSPACES=cc;exports.DEMAND_SOURCE_PROVIDER_GROUP=Tg;exports.DIMENSION_KEYS=qn;exports.DOCUMENT_APPLY_SERVICE=NI;exports.DOCUMENT_DESCRIBE_SERVICE=MI;exports.DOCUMENT_INSPECT_SERVICE=RI;exports.DOCUMENT_MAX_BLOCKS=nt;exports.DOCUMENT_MAX_BODY_BYTES=cs;exports.DOCUMENT_MAX_CELL_LEN=he;exports.DOCUMENT_MAX_KPI_ITEMS=it;exports.DOCUMENT_MAX_LETTERHEAD_FIELDS=fn;exports.DOCUMENT_MAX_LIST_ITEMS=rt;exports.DOCUMENT_MAX_RECIPIENT_LINES=as;exports.DOCUMENT_MAX_TABLE_COLUMNS=st;exports.DOCUMENT_MAX_TABLE_ROWS=ot;exports.DOCUMENT_MAX_TEXT_LEN=Ct;exports.DOCUMENT_MAX_TOTALS_ROWS=pn;exports.DOCUMENT_OPERATIONS=Cr;exports.DRAFT_FIELDS=Bp;exports.DUTCH_SLOT_LABELS=lc;exports.EMPTY_WORKFLOW=gh;exports.ENABLED_TRANSACTION_KINDS=tr;exports.EXCESSIVE_LENDING_THRESHOLD_CENTS=zs;exports.FEATURE_MESSAGE_REACTIONS=fI;exports.FEATURE_REMOTE_SEARCH=dI;exports.FEED_COLUMNS=gr;exports.FEED_EVERY_MS=Na;exports.FIXED_KINDS=xt;exports.FIXED_LEVELS=Le;exports.FIXED_TYPES=$t;exports.FIXED_UNITS=zd;exports.FOLLOW_UP_HOURS=xi;exports.FROZEN_WRITABLE_FIELDS=$p;exports.HOUR_MS=Ai;exports.HTML_BODY_RE=fu;exports.INELIGIBLE=ie;exports.INSTALLATION_HEADER=xI;exports.INTERACTION_KIND=Ia;exports.InteractionParticipantRole=uI;exports.KB_FALLBACK_LOCALE=Vi;exports.KB_LOCALES=ft;exports.LEAD_STATUSES=ff;exports.LEDGER_TEMPLATES=Dm;exports.LEGAL_FORMS=kd;exports.LIFECYCLE_STAGES=df;exports.LIVE_STATUSES=pe;exports.LOCALES=ft;exports.LOOSE_STATUSES=Ut;exports.MAIL_HINT_HEADERS=Mi;exports.MANUAL_JOURNAL_KINDS=zm;exports.MANUAL_PRICE_SOURCE=Rs;exports.MANUAL_STOCK_FRESH_MS=vh;exports.MAX_ACTIONS=qe;exports.MAX_ASSIGNMENT_TURNS=hs;exports.MAX_BLOCKS=tn;exports.MAX_CHOICE_OPTIONS=cn;exports.MAX_COLLECTION_DEPTH=or;exports.MAX_DELEGATION_DEPTH=ys;exports.MAX_EDITABLE_FILE_BYTES=i0;exports.MAX_FIELDS=Fe;exports.MAX_LIST_ITEMS=je;exports.MAX_MEMORY_BROWSE=sg;exports.MAX_MEMORY_BUDGET=cg;exports.MAX_MEMORY_CHARS=ig;exports.MAX_RULE_DEPTH=Mn;exports.MAX_SCORE_LEVELS=ln;exports.MAX_SHOWN_KEYS=cu;exports.MAX_TOPIC_CANDIDATES=rc;exports.MAX_TOPIC_EXAMPLES=nc;exports.MAX_TOPIC_EXAMPLE_CHARS=He;exports.MAX_VIEWABLE_FILE_BYTES=a0;exports.MICROS_PER_CENT=ct;exports.MIN_MEMORY_BUDGET=ag;exports.MIN_SCORE_LEVELS=un;exports.MISSING_PRICE_SOURCE=mn;exports.MODEL_TIERS=ye;exports.NAV_NOTICE_SLOT=b0;exports.NL_BV_TEMPLATE=Yi;exports.NL_PAYMENT_TERMS=$b;exports.NL_TAX_CODES=pg;exports.NL_TAX_RATES=fg;exports.NL_VAT_BOXES=La;exports.NOTIFICATION_SOURCE_PROVIDER_GROUP=KI;exports.OFF_TRACK_GAP=Ja;exports.ONBOARDING_SOURCE_PROVIDER_GROUP=yg;exports.OPEN_STATES=Mt;exports.PAUSE_HOLD=yt;exports.PAUSE_SNOOZED=gt;exports.PAUSE_WAITING_FOR_CUSTOMER=ht;exports.PAYMENT_TERM_METHODS=wb;exports.PAYROLL_CATEGORIES=zi;exports.PHONE_REGIONS=Bt;exports.PLAYBOOK_RUN_APPROVAL_ACT=Xg;exports.PLAYBOOK_RUN_SCOPE_KIND=ha;exports.PRESENCE_ONLINE_WINDOW_MS=Tr;exports.PRESENCE_SURVIVES_OFFLINE=Gc;exports.PRICE_PERS=$u;exports.PRODUCT_SCOPE_KIND=bc;exports.PROFILE_TOOL_DISPOSITIONS=_g;exports.PROVIDER_FEATURE_MESSAGE_TEMPLATES=cI;exports.PROVIDER_FEATURE_MESSAGE_WINDOW=aI;exports.PROVISIONING_ROUTES=VI;exports.PROVISIONING_SOURCE_GROUP=GI;exports.PUBLIC_EMAIL_DOMAINS=du;exports.PURCHASE_KINDS=yi;exports.PURCHASE_ORDER_KIND=wp;exports.READ_STEP_TYPES=En;exports.RECEIPT_BOOK_ACT=Id;exports.RECEIPT_SCOPE_KIND=_d;exports.RELATED_SUBJECT_KINDS=Zi;exports.RELEASED_STATES=cp;exports.REPORT_VIEW_LAYOUTS=Tl;exports.RESERVED_SEGMENTS=ac;exports.RESERVED_STATUS_KEYS=Ar;exports.RESERVED_TYPE_KEYS=n_;exports.RESOURCE_ATTACHED_SERVICE=zI;exports.RESOURCE_DESCRIBE_SERVICE=WI;exports.RESOURCE_RESOLVE_SERVICE=YI;exports.RESOURCE_SEARCH_SERVICE=HI;exports.SALES_KINDS=Rt;exports.SALES_SCOPE_KINDS=yc;exports.SCHEDULE_ENTRY_SCOPE_KIND=la;exports.SCHEDULE_EVENT=Ua;exports.SCOPE_ACTS_ROUTE=JI;exports.SCOPE_READ_ROUTE=ZI;exports.SCOPE_RELATED_ROUTE=QI;exports.SEGMENT_FILTER_KEYS=mf;exports.SEGMENT_LAYOUTS=hf;exports.SEGMENT_LIST_FILTERS=Us;exports.SEGMENT_PRESENCE_FILTERS=Bs;exports.SEGMENT_SORT_FIELDS=gf;exports.SENDING_STALE_MS=Cd;exports.SETTINGS_BASE_PATH=De;exports.SETTINGS_CATEGORIES=y0;exports.SIGNATURE_INTENTS=tf;exports.SLA_METRICS=Ay;exports.SLA_PAUSE_REASONS=vy;exports.STATUS_NAMES=Lp;exports.STEP_MAX_TOKENS_MAX=Aa;exports.STEP_MAX_TOKENS_MIN=Sa;exports.STEP_TYPES=mh;exports.STRATEGY_ITEM_SCOPE_KIND=Ya;exports.SUMMARY_MIN_LAST_CHARS=Oi;exports.SUMMARY_MIN_MESSAGES=ki;exports.SYNC_RUN_MAX_ERRORS=u0;exports.SYNC_TARGET_PROVIDER_GROUP=c0;exports.SYSTEM_ONE_NON_GOALS=hl;exports.SYSTEM_RESOLUTIONS=Fi;exports.TERMINAL_ASSIGNMENT_STATUSES=ms;exports.TERMINAL_RUN_STATUSES=ka;exports.TRANSACTION_KINDS=bi;exports.TRIGGER_VARS=ah;exports.UNARY_OPS=oy;exports.UNCOLLECTED_AFTER_DAYS=pc;exports.UNKNOWN_KIND=ea;exports.UNKNOWN_LEVEL_ORDER=za;exports.UNSENT_STATES=Jn;exports.UNSUPPORTED=pI;exports.UNWORKED_RESOLUTIONS=fm;exports.USAGE_DIMENSIONS=rs;exports.USAGE_DIMENSION_IDS=os;exports.USAGE_RECORDS_ROUTE=Jd;exports.USAGE_SOURCE_PROVIDER_GROUP=Zd;exports.UnresolvedRefError=yr;exports.WEBHOOK_EVENTS=Tc;exports.WORKSTREAM_SCOPE_KIND=da;exports.WORK_ACTIVITY_SCOPE_KIND=Mc;exports.WORK_AREAS=bg;exports.WORK_COMMENT_ADDED=Qb;exports.WORK_CYCLE_SYNC_KIND=a_;exports.WORK_ITEM_ASSIGNED=Zb;exports.WORK_ITEM_SCOPE_KIND=kc;exports.WORK_ITEM_STATUS_CHANGED=Jb;exports.WORK_PROJECT_SCOPE_KIND=Oc;exports.WORK_SORT_FIELDS=O_;exports.WORK_VIEW_FLAGS=k_;exports.WORK_VIEW_LAYOUTS=M_;exports.WORK_VIEW_LIST_FILTERS=T_;exports.W_PRIORITY=Re;exports.XAF_NAMESPACE=Xi;exports.acceptExampleCandidate=ib;exports.accountRow=kp;exports.accountTotals=vm;exports.accountTypeOf=eg;exports.accrualPostings=Ff;exports.actingIdentityKey=ma;exports.activeWorkTypes=ob;exports.activityIconOf=bu;exports.activityJoinUrl=Ou;exports.activitySnippet=Ko;exports.activityTextParams=$o;exports.activityTimelineText=ku;exports.activityTimestamp=Bo;exports.activityTypeInfo=H;exports.actorKey=zg;exports.addExampleCandidate=sb;exports.addMonths=fe;exports.addWorkingMs=wt;exports.admit=lp;exports.adoptPlan=Cp;exports.adoptRowsFromTable=Np;exports.adoptSeriesId=Ap;exports.adoptSummary=Tp;exports.agePresenceEntry=FI;exports.aggregateUsage=Ns;exports.agingBucketOf=Cc;exports.agingOf=Wb;exports.agreementEffectiveEnd=Ju;exports.agreementFromQuote=qu;exports.agreementHref=Ob;exports.agreementScopeKey=kb;exports.aiAttachmentKind=Lc;exports.aiAttachmentRejection=w_;exports.aiBudgetLimit=dn;exports.aiBudgetPeriodKey=Al;exports.aiBudgetPeriodStart=ns;exports.aiBudgetState=Sl;exports.aiVendorAcceptsAttachment=El;exports.aiVendorDefaultModel=bl;exports.aiVendorLabel=yl;exports.aiVendorNeedsBaseUrl=Il;exports.aiVendorsWith=_l;exports.allocate=de;exports.allocateInvoice=qh;exports.allowsFraction=Qd;exports.appNameFromPath=Hc;exports.applyApprovalDecision=Bl;exports.applyRounding=Jy;exports.applySignature=nf;exports.approvalRate=va;exports.artifactBodyBytes=fs;exports.artifactOutline=ps;exports.artifactToMarkdown=Bn;exports.assignmentMismatch=th;exports.assignmentScopeKey=Jl;exports.assignmentSubject=nd;exports.availabilityByPerson=Cg;exports.awaitsNumber=Up;exports.balanceSheet=Om;exports.belongsOnCalendar=Ig;exports.billableTimeGroups=Qy;exports.billedQuantity=ws;exports.billedThroughOf=rl;exports.billingStartOf=np;exports.billingTerm=Go;exports.bindParams=ty;exports.bindValue=pt;exports.bookingDocumentOf=pb;exports.bookingDocumentOfReceipt=Sd;exports.bookingLinesOf=Cs;exports.bookingSyncKey=Ad;exports.buildActivityPreview=Ru;exports.buildChannelIntents=Z_;exports.buildNavModel=LI;exports.buildShareKeys=Yl;exports.buildWindow=au;exports.businessEntitySender=Vs;exports.bySeries=mi;exports.calendarDaysBetween=ta;exports.calendarOf=Pt;exports.canConvert=jp;exports.canDecrease=fi;exports.canMoveAgreement=Qu;exports.canNestUnder=Im;exports.canParent=$y;exports.canTransition=Kp;exports.cancelPlan=rp;exports.canonicalJson=In;exports.capabilityDefaultFlag=cl;exports.capacityTotal=Ag;exports.capacityWeights=Vg;exports.capitalizationThreshold=Vf;exports.carriesText=Au;exports.cashForecast=Rm;exports.categoryLabel=Sm;exports.categoryOf=Dc;exports.causedBy=ly;exports.changesBilledLine=el;exports.changesBilledPrice=ol;exports.channelKindForScheme=iI;exports.channelKindOf=_u;exports.checkInOverdueMs=zy;exports.chooseOffer=Mh;exports.clampStepMaxTokens=ph;exports.classifyMail=om;exports.cleanDimensions=Ae;exports.cleanMessageMarkdown=Q0;exports.cleanMessageText=X0;exports.cleanReceiptLines=Qf;exports.codeQuery=Ld;exports.codedMessage=nI;exports.columnBalance=Mm;exports.commandOf=dp;exports.commitProblem=xd;exports.companyReceivablesOf=Yb;exports.compareAssistRank=F_;exports.compareReports=Am;exports.compareWorkTypes=tc;exports.conditionHolds=Gs;exports.contactName=pf;exports.contractSignals=Dh;exports.copyFrom=rr;exports.correlationKeyFor=W_;exports.costOverYear=ii;exports.countsAsPlanned=Se;exports.coverEndAt=Qo;exports.coverageByPerson=vg;exports.coverageFor=Dg;exports.coversWorkstream=cr;exports.crmActivityAt=Af;exports.cronMatches=$a;exports.currentAccountRelation=Lf;exports.currentLines=Hu;exports.currentOf=gp;exports.currentPeriod=xb;exports.customerProducts=xp;exports.cycleDayIndex=ur;exports.cycleOrder=v_;exports.cycleState=C_;exports.dealValueCents=Gu;exports.debtorOf=Tt;exports.decideAssignmentState=rd;exports.decideCadence=h0;exports.decideEach=Ll;exports.decideIncomingCall=z_;exports.decisionBand=gl;exports.decodeText=_I;exports.defaultLocaleOf=Wi;exports.defaultOffer=oi;exports.defaultStatusKey=g_;exports.defaultTemplateBlocks=dc;exports.defineIntent=lI;exports.delegationRefusal=od;exports.depreciationParts=Js;exports.depreciationPostings=Uf;exports.depthOf=qi;exports.derivePresence=BI;exports.describeClause=xl;exports.describeExpression=ay;exports.digitsOf=Ds;exports.disabledIntentsFromCapabilities=X_;exports.disposalLines=Bf;exports.documentBodyBytes=fs;exports.documentKindOf=DI;exports.documentOutline=ps;exports.documentToMarkdown=Bn;exports.documentToText=OI;exports.draftRequest=yn;exports.driftedFields=Fa;exports.dueAtOf=Dy;exports.dueCharges=Yu;exports.dueDateFrom=Lb;exports.dunningRunOf=Ab;exports.dunningStateOf=gc;exports.effectiveEndAt=tt;exports.elapsedSeconds=Zy;exports.emailDomain=C0;exports.emptyConditionLeaf=sy;exports.endable=op;exports.endpointKey=M0;exports.entryLinesOf=jm;exports.entryNumber=wm;exports.entryProblems=xm;exports.erlangC=ra;exports.excessiveLending=Kf;exports.expectedFor=Rh;exports.expectsInvoice=ni;exports.externalKeyOf=le;exports.extractParams=zc;exports.extractTerms=su;exports.failureLines=Rf;exports.feedOutcome=Lh;exports.fieldVarPath=gy;exports.fillDocument=Of;exports.fillText=qs;exports.filterByEndpoint=eI;exports.filterByIntent=J_;exports.filterByTargetScheme=Fc;exports.filterableDimensions=Dl;exports.findAiVendor=xe;exports.findEvent=hy;exports.findInListing=mp;exports.finishedAt=Zu;exports.fixedLevelForName=By;exports.fixedTypeForName=s_;exports.fixedTypes=i_;exports.flattenLocales=wI;exports.floorToPeriod=Ie;exports.forecastIntervals=Fg;exports.formatActingIdentity=pa;exports.formatCents=J;exports.formatClock=tb;exports.formatHm=eb;exports.formatItemKey=u_;exports.formatMicros=Fd;exports.formatPeriod=_e;exports.formatSeriesNumber=Db;exports.formatSlaDuration=Py;exports.freshSources=K_;exports.fromPathKey=zp;exports.getActivitySeenUserIds=xu;exports.getContactEndpoints=lf;exports.getShortTitle=dm;exports.getUrgencyScore=lm;exports.goodsReceiptProblems=ri;exports.groupDocumentLines=xa;exports.guessAdoptMapping=Rp;exports.guessFeedMapping=$h;exports.hasReacted=Hh;exports.hashedPartOf=$m;exports.healthCategory=Fy;exports.healthsInCategory=jy;exports.heightOf=sr;exports.helpCenterText=hm;exports.humanizeAction=sh;exports.indexPrices=sl;exports.interactionIdOf=Ea;exports.interestOnDailyBalance=xf;exports.interestPeriods=wf;exports.invoiceFromQuote=jo;exports.invoiceState=Yf;exports.invoicesFromOrders=Yp;exports.isAdoptSeries=vp;exports.isAgentUser=zb;exports.isAssigned=cm;exports.isAssignmentTerminal=Zl;exports.isAssignmentTrigger=ba;exports.isAssistantMode=vl;exports.isAuthoredCrmActivity=Sf;exports.isAutoReady=_h;exports.isAutonomy=nh;exports.isAwaitingThem=Bi;exports.isBookable=fb;exports.isChatMessageActivity=Pu;exports.isClosed=um;exports.isConnectedType=Cu;exports.isDescendant=Gi;exports.isEligible=Qp;exports.isEmailActivity=wu;exports.isFrozen=nr;exports.isHeldClock=Ny;exports.isHtmlBody=z0;exports.isInFlight=Eh;exports.isInteractionUnseen=Ri;exports.isLandingPath=n0;exports.isLikelyBulk=Ti;exports.isMessageShape=xn;exports.isMessageType=Iu;exports.isMoreSpecificPattern=Qc;exports.isNoteShape=wn;exports.isOpenClock=Ha;exports.isOutstanding=Er;exports.isOutwardTool=vr;exports.isOverdueOn=Ub;exports.isParked=Pi;exports.isPaused=Oa;exports.isPlaybookAuthoredType=vu;exports.isPricePer=Fu;exports.isPublicEmailDomain=k0;exports.isPublicPath=s0;exports.isPurchasable=Yd;exports.isRecurringLine=qo;exports.isReminderActive=Li;exports.isReplyableType=Su;exports.isResultAccount=we;exports.isSellable=Hd;exports.isSettingsPath=e0;exports.isSettled=Ac;exports.isShorter=Wu;exports.isSlaAtRisk=im;exports.isSupportedCron=uy;exports.isTerminal=Ih;exports.isThreadLongEnough=em;exports.isTradeable=Nd;exports.isTranscriptType=Tu;exports.isUncollected=hc;exports.isWebhookEvent=Xb;exports.isWorkClosed=h_;exports.isWorkTypeVisible=rb;exports.isWriteTool=kr;exports.itemDossierKeys=f_;exports.itemKey=dt;exports.itemKeyOf=md;exports.judgeRuleCase=dy;exports.kindFor=ee;exports.ladderFor=Nc;exports.ledgerRuleFor=Ts;exports.levelIn=Qa;exports.levelOrder=_t;exports.lineAffinity=hr;exports.lineKey=lh;exports.lineNet=Dt;exports.lineStatus=Wo;exports.lineTerm=W;exports.linkLabel=gm;exports.listedTransactionKinds=Pp;exports.listeningAllowed=Cl;exports.loanPostings=$f;exports.loanSchedule=Yn;exports.localeInstruction=_m;exports.localeName=bm;exports.localesOf=Em;exports.looksLikeEmail=A0;exports.lookup=Wn;exports.manualSettlement=jb;exports.marginCents=Ku;exports.markdownToDocument=kI;exports.matchApprovalPolicy=$l;exports.matchContactToIntents=tI;exports.matchDocumentLines=wa;exports.matchFeed=Ph;exports.matchPublicRoute=Zc;exports.matchRate=xs;exports.matchRules=Ba;exports.matchVerdict=Gh;exports.matchedLine=hd;exports.mcpCredentialScope=rg;exports.mcpToolPrefix=og;exports.measureRatio=Gy;exports.mergeDefaultFlags=ll;exports.mergeShownKeys=g0;exports.mergeable=Wp;exports.messageCountsAs=Lo;exports.metricOption=wl;exports.minutesOn=lr;exports.missingFieldPaths=yy;exports.modelAcceptsAttachment=fl;exports.monthEnd=Qs;exports.monthParts=Hs;exports.monthlyPeriods=Hm;exports.monthsIn=Ys;exports.mustAsk=Jc;exports.narrowAutonomy=oh;exports.navLabelText=PI;exports.needsOf=hi;exports.needsPhoneRegion=O0;exports.nestsUnderParent=Eu;exports.nextAttemptAt=up;exports.nextLevelBelow=Uy;exports.nextOccurrenceDates=A_;exports.nextPrice=nl;exports.nextSlaClock=xy;exports.nextStatuses=_i;exports.nextVersion=qp;exports.normalizeArtifactBlocks=ds;exports.normalizeBlocks=gu;exports.normalizeDocumentBlocks=ds;exports.normalizeEmail=Or;exports.normalizeExample=ce;exports.normalizeGtin=kt;exports.normalizeIban=$s;exports.normalizeIbans=af;exports.normalizeMeter=Ls;exports.normalizeUsageSource=ef;exports.normalizeVatNumber=sf;exports.noticeDeadline=Xo;exports.notificationPrefKey=$I;exports.novelty=iu;exports.offerValid=Qn;exports.onePerItem=gi;exports.openCentsOf=ad;exports.operationDescriptor=CI;exports.operationsForKind=vI;exports.opsForFieldType=my;exports.orderForDocument=Uh;exports.orderProgress=Ii;exports.organizationSender=Mf;exports.outcomeOf=I_;exports.overlap=St;exports.overlapSeconds=Ve;exports.overlaps=Ng;exports.ownWorkspaceKey=cb;exports.paceRatio=Vy;exports.parkMarksById=Zp;exports.parse=Ka;exports.parseActingIdentity=Hg;exports.parseAmount=nn;exports.parseCamt053=Is;exports.parseClockMinutes=Ey;exports.parseCodedMessage=oI;exports.parseCron=br;exports.parseCsv=hI;exports.parseDay=_n;exports.parseItemKey=l_;exports.parseLineKey=dh;exports.parseMicros=Gn;exports.parseMt940=Ss;exports.parsePackingSlip=Fh;exports.parseRateCsv=jd;exports.parseRatePrice=gn;exports.parseRecurrence=S_;exports.parseStatement=pd;exports.parseWorkspacePath=lb;exports.parseXafOpening=Jm;exports.partialDisposalLines=Gf;exports.partyTerms=ju;exports.pathToRegex=Yc;exports.patternFor=fr;exports.patternStartTime=dr;exports.pauseBitFor=Sy;exports.paymentOfItem=ud;exports.paymentStateOf=Ir;exports.pendingApprovers=Ul;exports.periodAt=Je;exports.periodOf=Ym;exports.periodShare=Vo;exports.periodsInRange=Rl;exports.phoneSuffix=v0;exports.pickMailHeaders=tm;exports.pickPaymentTerm=Pb;exports.pickTemplate=Cf;exports.placeLumps=Wg;exports.plainTextFromMarkdown=wo;exports.planFor=Sp;exports.planSlaEvent=Ry;exports.plannedBillable=xg;exports.plannedWorkTypeKey=ca;exports.priceAt=Zo;exports.priceOver=Et;exports.primaryAddress=of;exports.procedureOf=yh;exports.productCost=si;exports.productHref=Tb;exports.productScopeKey=vb;exports.profitAndLoss=km;exports.progressState=Hp;exports.projectDossierKeys=p_;exports.proposalRequestIds=Kl;exports.proposeMatch=sd;exports.providedOf=ap;exports.publicBasePathFor=Xc;exports.publicRoutePatterns=o0;exports.purchaseUnits=Jf;exports.qualificationView=tp;exports.quantityKey=al;exports.rateRecords=Gd;exports.ratedLineAmount=Vd;exports.ratedQuantity=Vn;exports.reactionWakesAssignment=td;exports.readDefaultFlags=ul;exports.readFeed=xh;exports.readPath=Xe;exports.readStepError=Ge;exports.ready=ui;exports.receiptGroupOf=Ed;exports.receiptProblems=vs;exports.receiptState=Hf;exports.receiptTotals=As;exports.receivableRowOf=Vb;exports.receivedFor=ti;exports.recencyOf=wi;exports.recipientLocale=vf;exports.reconciledOn=id;exports.reconciliationBalances=cd;exports.recoveryOf=fp;exports.refKey=pr;exports.referenceCostIn=wd;exports.registrableDomain=lu;exports.rejectExampleCandidate=sc;exports.relatedByDefault=lg;exports.remainingMsOf=bt;exports.reportOf=pi;exports.repriceLines=Bd;exports.requestIdOf=ci;exports.requestPath=Xp;exports.requiredAgents=ia;exports.requirementFor=aa;exports.requiresIdsOf=ai;exports.resolutionsFor=mm;exports.resolveAccountCapabilities=Bc;exports.resolveActivityText=Qe;exports.resolveAutonomy=rh;exports.resolveChannelIntents=Uc;exports.resolvePrice=Ms;exports.resolveRateCard=$d;exports.resolveRoute=pl;exports.resolveSignature=Ks;exports.resolveTier=ts;exports.resolveWorkMode=jI;exports.resolveWorkspace=ub;exports.resourceKindOf=XI;exports.restartOf=Xn;exports.restate=Fo;exports.retryDelayMinutes=vd;exports.reversedLines=Bm;exports.rhythmOf=Pn;exports.roleDirection=uf;exports.rollupChildren=Yy;exports.roundHalfUp=U;exports.runActor=Yg;exports.runApprovalKey=Qg;exports.runEvalSuite=Nf;exports.runIdOfApprovalRef=Zg;exports.runInteractionId=Ah;exports.runKind=bh;exports.runOutcome=py;exports.runSpans=Xu;exports.sanitizeInline=ls;exports.sanitizeTranscript=eu;exports.scheduleEntryScopeKey=jg;exports.scoreInteraction=am;exports.scoreWorkItem=t_;exports.segmentIsEmpty=yf;exports.selectLenses=ng;exports.sellableProduct=Wd;exports.serialKeyOf=ep;exports.serialKeysOf=zf;exports.serialize=We;exports.serialsInHouse=Xf;exports.seriesOf=hn;exports.seriesStart=zo;exports.serviceLevel=oa;exports.sessionsHoldCannotReach=Y_;exports.sessionsToHold=H_;exports.settingsPath=t0;exports.settle=pp;exports.settlementPatch=Fb;exports.settlesOn=bs;exports.shadowByKey=Od;exports.shareKeyForTeam=jn;exports.shareKeyForUser=Fn;exports.shareKeysForViewer=zl;exports.shareReceipts=Gp;exports.shortTermPrincipal=qf;exports.shortfalls=wg;exports.shouldRunAudioPipeline=qI;exports.slaBadgeTone=wy;exports.slaHoursByInbox=sm;exports.slaHoursFor=Ui;exports.slipProposal=Bh;exports.sortStatuses=xc;exports.sourceKey=$c;exports.splitLine=tl;exports.spread=zn;exports.spreadOverWeights=fa;exports.startingCents=jf;exports.statusIn=m_;exports.statusRequiresApproval=__;exports.stepDate=Pc;exports.stepsOf=hh;exports.strategyAncestorKeysFor=Ky;exports.strategyDossierKeys=Ly;exports.strategyItemScopeKey=_r;exports.stripHtml=Po;exports.structureProblems=li;exports.subjectKeyOf=Sh;exports.subjectOf=mr;exports.subjectRef=B_;exports.subscriptionRow=Op;exports.suggestProjectKey=d_;exports.suggestTreatments=bd;exports.suggestedHealth=Wy;exports.summariseEval=Ws;exports.summarizeReactions=Vh;exports.supplyChain=di;exports.tallies=Vp;exports.targetById=eh;exports.targetForActivityType=Jg;exports.targetOf=Ep;exports.targetOrder=Xy;exports.taxCodeProblem=gg;exports.taxDateOf=ae;exports.taxPercentOn=ar;exports.taxRateFor=Ji;exports.taxRatesOn=mg;exports.taxSideOf=Um;exports.termApplies=Sc;exports.termEndAt=re;exports.termStartAt=Kn;exports.termsFor=na;exports.tieredMicros=Ps;exports.timingOf=Ho;exports.toActingIdentity=ga;exports.toBaseUnits=Md;exports.toE164=Dn;exports.toInvoice=Ei;exports.toPathKey=Si;exports.toProductUnits=Zn;exports.toTransactionTerm=Kb;exports.toolBareName=_a;exports.toolDisplayName=ih;exports.toolReversible=L_;exports.toolSourceKinds=Xl;exports.toolVerdict=d0;exports.topicOfferedForTeam=ic;exports.topicsForTeam=ab;exports.trafficIntensity=sa;exports.transactionContext=mb;exports.transactionDossierKeys=Rb;exports.transactionHref=Cb;exports.transactionIdFromScope=Mb;exports.transactionKind=G;exports.transactionScopeKey=Ic;exports.transactionSlots=gb;exports.transactionTotals=hg;exports.transitoryLines=Fm;exports.triggerFillsVar=ch;exports.truncateExample=oc;exports.typeIn=o_;exports.typesFor=r_;exports.uniqueWorkStatusKey=y_;exports.uniqueWorkTypeKey=nb;exports.unitFactor=ks;exports.unitsProblem=Rd;exports.usageAccountOf=es;exports.usageAccountsOf=il;exports.usageMetricId=ss;exports.usageMetrics=Pl;exports.usersOf=Ee;exports.validateQuestions=ml;exports.validateStatuses=b_;exports.valueAtPath=ya;exports.variableJump=Ra;exports.variantOptionsProblem=Dd;exports.vatDateOf=Qh;exports.vatPeriods=zh;exports.vatReturn=Yh;exports.waitHoursOf=Nt;exports.wakesAssignment=ed;exports.withLineIds=fh;exports.withPrice=Jo;exports.workActivityScopeKey=c_;exports.workItemScopeKey=Rc;exports.workProjectScopeKey=Sr;exports.workRatio=Hy;exports.workStatusKey=wc;exports.workTypeKey=ec;exports.workingMsBetween=mt;exports.workspacePath=db;exports.workstreamScopeKey=qg;exports.xafAuditfile=Qm;exports.xmlBlocks=Q;exports.xmlText=N;exports.yearEndClosingLines=Nm;
|
|
52
|
+
`).trim()}const _u=/<\s*(html|body|div|p|table|br|span)\b/i;function lE(e){return _u.test(e)}function dE(e){return Iu(e,!1)}function fE(e){return Iu(e,!0)}function Iu(e,t){if(typeof e!="string"||!e)return"";let n=e.length;for(const i of W0){const a=e.search(i);a>=0&&a<n&&(n=a)}const r=e.slice(0,n);let o=Lo(Po(xo(r,t)));return o||(o=Lo(Po(xo(e,t)))),H0(o)||o}exports.ACTIVE_ASSIGNMENT_STATUSES=od;exports.ACTIVITY_CATALOG=ne;exports.ADOPT_COLUMNS=er;exports.AGING_BUCKETS=Nc;exports.AGREEMENT_SCOPE_KIND=Tc;exports.AGREEMENT_TRANSITIONS=Qo;exports.AI_ATTACHMENT_LIMITS=Gc;exports.AI_ATTACHMENT_MAX_PER_TURN=W_;exports.AI_ATTACHMENT_TURN_BUDGET=G_;exports.AI_CAPABILITIES=vt;exports.AI_TOOL_PROVIDER_GROUP=H_;exports.AI_VENDORS=$n;exports.ALLOWED_LINK_SCHEMES=fs;exports.APP_PERMISSIONS=QI;exports.ARTICLE_SCOPE_KIND=Om;exports.ARTIFACT_MAX_BLOCKS=nt;exports.ARTIFACT_MAX_BODY_BYTES=ds;exports.ARTIFACT_MAX_CELL_LEN=he;exports.ARTIFACT_MAX_KPI_ITEMS=it;exports.ARTIFACT_MAX_LIST_ITEMS=rt;exports.ARTIFACT_MAX_TABLE_COLUMNS=st;exports.ARTIFACT_MAX_TABLE_ROWS=ot;exports.ARTIFACT_MAX_TEXT_LEN=Ct;exports.ASSET_GROUP_SEEDS=Jf;exports.ASSIGNMENT_SCOPE_KIND=bs;exports.ASSIST_BANDS=Q_;exports.ASSIST_SOURCE_PROVIDER_GROUP=X_;exports.ATTENTION_STATUSES=Ki;exports.AT_RISK_GAP=sc;exports.AUTH_APP_NAME=Jc;exports.AUTO_READY_MIN_PROPOSALS=Na;exports.AUTO_READY_RATE=Da;exports.ActivityTypeRegistry=jo;exports.BOOKABLE_KINDS=hc;exports.BOOKABLE_ROUTES=nI;exports.BOOKABLE_SOURCE_PROVIDER_GROUP=eI;exports.BOOKKEEPING_PROVIDER_GROUP=tI;exports.BOOKKEEPING_ROUTES=rI;exports.BUILT_IN_ONLY=Uu;exports.BULK_PENALTY=$i;exports.BUSINESS_ENTITY_LIST_SERVICE=xd;exports.BUSINESS_ENTITY_PARAM=Kt;exports.CADENCE_FLOOR_MS=uu;exports.CADENCE_MIN_NEW_SEGMENTS=lu;exports.CADENCE_MIN_NOVELTY=du;exports.CADENCE_WINDOW_MS=cu;exports.CAPITALIZATION_THRESHOLD_CENTS=ri;exports.CLASSIFY_VARS=Ih;exports.CLEARABLE_FIELDS=Zp;exports.COMPANY_ADDRESS_KINDS=df;exports.COMPANY_RECEIVABLES_SERVICE=s_;exports.COMPANY_ROLE_KINDS=gf;exports.CONNECTOR_PROVIDER_GROUP=TI;exports.CONTEXT_COLLECT_SERVICE=kI;exports.CORE_DIMENSIONS=wl;exports.CRM_ACTIVITY_SCOPE_KIND=Cf;exports.CRM_CALL_CHANNELS=kf;exports.CRM_CALL_LOGGED=Ws;exports.CRM_CALL_OUTCOMES=Of;exports.CRM_NOTE_ADDED=Gs;exports.CRM_STAGE_CHANGED=Tf;exports.CUSTOM_RESOLUTION_PREFIX=vm;exports.CommunicationScheme=zc;exports.DAY_MS=Ri;exports.DEFAULT_CHECK_IN_DAYS=rc;exports.DEFAULT_DUNNING_POLICY=wb;exports.DEFAULT_FORECAST_WEEKS=ga;exports.DEFAULT_JUMP_PERCENT=$a;exports.DEFAULT_MEMORY_BUDGET=Ig;exports.DEFAULT_NUMBER_PADDING=qb;exports.DEFAULT_PHONE_REGION=hu;exports.DEFAULT_QUOTE_TEMPLATE_BLOCKS=xb;exports.DEFAULT_TAX_RATE_KEY=Sg;exports.DEFAULT_TEMPLATE_CONDITIONS=Nb;exports.DEFAULT_TOLERANCE=Ba;exports.DEFAULT_WORKSPACES=gc;exports.DEMAND_SOURCE_PROVIDER_GROUP=Kg;exports.DIMENSION_KEYS=qn;exports.DOCUMENT_APPLY_SERVICE=qI;exports.DOCUMENT_DESCRIBE_SERVICE=BI;exports.DOCUMENT_INSPECT_SERVICE=jI;exports.DOCUMENT_MAX_BLOCKS=nt;exports.DOCUMENT_MAX_BODY_BYTES=ds;exports.DOCUMENT_MAX_CELL_LEN=he;exports.DOCUMENT_MAX_KPI_ITEMS=it;exports.DOCUMENT_MAX_LETTERHEAD_FIELDS=fn;exports.DOCUMENT_MAX_LIST_ITEMS=rt;exports.DOCUMENT_MAX_RECIPIENT_LINES=ls;exports.DOCUMENT_MAX_TABLE_COLUMNS=st;exports.DOCUMENT_MAX_TABLE_ROWS=ot;exports.DOCUMENT_MAX_TEXT_LEN=Ct;exports.DOCUMENT_MAX_TOTALS_ROWS=pn;exports.DOCUMENT_OPERATIONS=Tr;exports.DRAFT_FIELDS=Qp;exports.DUTCH_SLOT_LABELS=yc;exports.EMPTY_WORKFLOW=Th;exports.ENABLED_TRANSACTION_KINDS=nr;exports.EXCESSIVE_LENDING_THRESHOLD_CENTS=Zs;exports.FEATURE_MESSAGE_REACTIONS=vI;exports.FEATURE_REMOTE_SEARCH=AI;exports.FEED_COLUMNS=hr;exports.FEED_EVERY_MS=Ka;exports.FIXED_KINDS=xt;exports.FIXED_LEVELS=Le;exports.FIXED_TYPES=$t;exports.FIXED_UNITS=nf;exports.FOLLOW_UP_HOURS=Ui;exports.FROZEN_WRITABLE_FIELDS=zp;exports.HOUR_MS=Mi;exports.HTML_BODY_RE=_u;exports.INELIGIBLE=ie;exports.INSTALLATION_HEADER=WI;exports.INTERACTION_KIND=Ta;exports.InteractionParticipantRole=EI;exports.KB_FALLBACK_LOCALE=Qi;exports.KB_LOCALES=ft;exports.LEAD_STATUSES=_f;exports.LEDGER_TEMPLATES=qm;exports.LEGAL_FORMS=wd;exports.LIFECYCLE_STAGES=bf;exports.LIVE_STATUSES=pe;exports.LOCALES=ft;exports.LOOSE_STATUSES=Ut;exports.MAIL_HINT_HEADERS=Pi;exports.MANUAL_JOURNAL_KINDS=ig;exports.MANUAL_PRICE_SOURCE=xs;exports.MANUAL_STOCK_FRESH_MS=Ph;exports.MAX_ACTIONS=qe;exports.MAX_ASSIGNMENT_TURNS=_s;exports.MAX_BLOCKS=tn;exports.MAX_CHOICE_OPTIONS=cn;exports.MAX_COLLECTION_DEPTH=sr;exports.MAX_DELEGATION_DEPTH=Is;exports.MAX_EDITABLE_FILE_BYTES=E0;exports.MAX_FIELDS=Be;exports.MAX_LIST_ITEMS=je;exports.MAX_MEMORY_BROWSE=hg;exports.MAX_MEMORY_BUDGET=_g;exports.MAX_MEMORY_CHARS=yg;exports.MAX_RULE_DEPTH=Mn;exports.MAX_SCORE_LEVELS=ln;exports.MAX_SHOWN_KEYS=gu;exports.MAX_TOPIC_CANDIDATES=lc;exports.MAX_TOPIC_EXAMPLES=uc;exports.MAX_TOPIC_EXAMPLE_CHARS=He;exports.MAX_VIEWABLE_FILE_BYTES=S0;exports.MICROS_PER_CENT=ct;exports.MIN_MEMORY_BUDGET=bg;exports.MIN_SCORE_LEVELS=un;exports.MISSING_PRICE_SOURCE=mn;exports.MODEL_TIERS=ye;exports.NAV_NOTICE_SLOT=x0;exports.NL_BV_TEMPLATE=ea;exports.NL_PAYMENT_TERMS=Xb;exports.NL_TAX_CODES=vg;exports.NL_TAX_RATES=Ag;exports.NL_VAT_BOXES=qa;exports.NOTIFICATION_SOURCE_PROVIDER_GROUP=zI;exports.OFF_TRACK_GAP=ic;exports.ONBOARDING_SOURCE_PROVIDER_GROUP=Og;exports.OPEN_STATES=Mt;exports.PAUSE_HOLD=yt;exports.PAUSE_SNOOZED=gt;exports.PAUSE_WAITING_FOR_CUSTOMER=ht;exports.PAYMENT_TERM_METHODS=Vb;exports.PAYROLL_CATEGORIES=ta;exports.PHONE_REGIONS=Ft;exports.PLAYBOOK_RUN_APPROVAL_ACT=ah;exports.PLAYBOOK_RUN_SCOPE_KIND=Sa;exports.PRESENCE_ONLINE_WINDOW_MS=kr;exports.PRESENCE_SURVIVES_OFFLINE=Qc;exports.PRICE_PERS=Wu;exports.PRODUCT_SCOPE_KIND=Cc;exports.PROFILE_TOOL_DISPOSITIONS=Rg;exports.PROVIDER_FEATURE_MESSAGE_TEMPLATES=II;exports.PROVIDER_FEATURE_MESSAGE_WINDOW=_I;exports.PROVISIONING_ROUTES=r0;exports.PROVISIONING_SOURCE_GROUP=n0;exports.PUBLIC_EMAIL_DOMAINS=bu;exports.PURCHASE_KINDS=Ai;exports.PURCHASE_ORDER_KIND=Wp;exports.READ_STEP_TYPES=En;exports.RECEIPT_BOOK_ACT=kd;exports.RECEIPT_SCOPE_KIND=Td;exports.RELATED_SUBJECT_KINDS=oa;exports.RELEASED_STATES=mp;exports.REPORT_VIEW_LAYOUTS=xl;exports.RESERVED_SEGMENTS=mc;exports.RESERVED_STATUS_KEYS=vr;exports.RESERVED_TYPE_KEYS=m_;exports.RESOURCE_ATTACHED_SERVICE=l0;exports.RESOURCE_DESCRIBE_SERVICE=a0;exports.RESOURCE_RESOLVE_SERVICE=u0;exports.RESOURCE_SEARCH_SERVICE=c0;exports.SALES_KINDS=Rt;exports.SALES_SCOPE_KINDS=vc;exports.SCHEDULE_ENTRY_SCOPE_KIND=ha;exports.SCHEDULE_EVENT=Va;exports.SCOPE_ACTS_ROUTE=m0;exports.SCOPE_READ_ROUTE=p0;exports.SCOPE_RELATED_ROUTE=f0;exports.SEGMENT_FILTER_KEYS=Ef;exports.SEGMENT_LAYOUTS=Af;exports.SEGMENT_LIST_FILTERS=js;exports.SEGMENT_PRESENCE_FILTERS=qs;exports.SEGMENT_SORT_FIELDS=Sf;exports.SENDING_STALE_MS=Dd;exports.SETTINGS_BASE_PATH=De;exports.SETTINGS_CATEGORIES=D0;exports.SIGNATURE_INTENTS=uf;exports.SLA_METRICS=Py;exports.SLA_PAUSE_REASONS=Ly;exports.STATUS_NAMES=Hp;exports.STEP_MAX_TOKENS_MAX=Ma;exports.STEP_MAX_TOKENS_MIN=Oa;exports.STEP_TYPES=Ch;exports.STRATEGY_ITEM_SCOPE_KIND=tc;exports.SUMMARY_MIN_LAST_CHARS=wi;exports.SUMMARY_MIN_MESSAGES=xi;exports.SYNC_RUN_MAX_ERRORS=v0;exports.SYNC_TARGET_PROVIDER_GROUP=A0;exports.SYSTEM_ONE_NON_GOALS=Al;exports.SYSTEM_RESOLUTIONS=Hi;exports.TERMINAL_ASSIGNMENT_STATUSES=ys;exports.TERMINAL_RUN_STATUSES=xa;exports.TRANSACTION_KINDS=vi;exports.TRIGGER_VARS=bh;exports.UNARY_OPS=hy;exports.UNCOLLECTED_AFTER_DAYS=Ic;exports.UNKNOWN_KIND=ia;exports.UNKNOWN_LEVEL_ORDER=nc;exports.UNSENT_STATES=Jn;exports.UNSUPPORTED=CI;exports.UNWORKED_RESOLUTIONS=Am;exports.USAGE_DIMENSIONS=is;exports.USAGE_DIMENSION_IDS=as;exports.USAGE_RECORDS_ROUTE=af;exports.USAGE_SOURCE_PROVIDER_GROUP=sf;exports.UnresolvedRefError=br;exports.WEBHOOK_EVENTS=xc;exports.WORKSTREAM_SCOPE_KIND=ya;exports.WORK_ACTIVITY_SCOPE_KIND=Lc;exports.WORK_AREAS=Mg;exports.WORK_COMMENT_ADDED=u_;exports.WORK_CYCLE_SYNC_KIND=__;exports.WORK_ITEM_ASSIGNED=l_;exports.WORK_ITEM_SCOPE_KIND=wc;exports.WORK_ITEM_STATUS_CHANGED=d_;exports.WORK_PROJECT_SCOPE_KIND=Pc;exports.WORK_SORT_FIELDS=F_;exports.WORK_VIEW_FLAGS=U_;exports.WORK_VIEW_LAYOUTS=B_;exports.WORK_VIEW_LIST_FILTERS=$_;exports.W_PRIORITY=Re;exports.XAF_NAMESPACE=na;exports.acceptExampleCandidate=bb;exports.accountRow=xp;exports.accountTotals=Pm;exports.accountTypeOf=dg;exports.accrualPostings=Yf;exports.actingIdentityKey=Ia;exports.activeWorkTypes=hb;exports.activityIconOf=Cu;exports.activityJoinUrl=Pu;exports.activitySnippet=Fo;exports.activityTextParams=Bo;exports.activityTimelineText=wu;exports.activityTimestamp=qo;exports.activityTypeInfo=H;exports.actorKey=ih;exports.addExampleCandidate=yb;exports.addMonths=fe;exports.addWorkingMs=wt;exports.admit=hp;exports.adoptPlan=Np;exports.adoptRowsFromTable=Kp;exports.adoptSeriesId=Mp;exports.adoptSummary=Dp;exports.agePresenceEntry=JI;exports.aggregateUsage=ws;exports.agingBucketOf=Dc;exports.agingOf=o_;exports.agreementEffectiveEnd=il;exports.agreementFromQuote=Xu;exports.agreementHref=Fb;exports.agreementScopeKey=Ub;exports.aiAttachmentKind=qc;exports.aiAttachmentRejection=V_;exports.aiBudgetLimit=dn;exports.aiBudgetPeriodKey=Rl;exports.aiBudgetPeriodStart=ss;exports.aiBudgetState=Ml;exports.aiVendorAcceptsAttachment=Ol;exports.aiVendorDefaultModel=Cl;exports.aiVendorLabel=vl;exports.aiVendorNeedsBaseUrl=kl;exports.aiVendorsWith=Tl;exports.allocate=de;exports.allocateInvoice=ey;exports.allowsFraction=of;exports.appNameFromPath=eu;exports.applyApprovalDecision=Hl;exports.applyRounding=db;exports.applySignature=lf;exports.approvalRate=Ra;exports.artifactBodyBytes=gs;exports.artifactOutline=hs;exports.artifactToMarkdown=Fn;exports.assignmentMismatch=fh;exports.assignmentScopeKey=id;exports.assignmentSubject=ud;exports.availabilityByPerson=Lg;exports.awaitsNumber=Xp;exports.balanceSheet=Um;exports.belongsOnCalendar=Ng;exports.billableTimeGroups=ub;exports.billedQuantity=Ks;exports.billedThroughOf=ll;exports.billingStartOf=cp;exports.billingTerm=Ho;exports.bindParams=py;exports.bindValue=pt;exports.blockersOf=Ii;exports.bookingDocumentOf=Cb;exports.bookingDocumentOfReceipt=Md;exports.bookingLinesOf=Os;exports.bookingSyncKey=Rd;exports.buildActivityPreview=Ku;exports.buildChannelIntents=lI;exports.buildNavModel=YI;exports.buildShareKeys=td;exports.buildWindow=mu;exports.businessEntitySender=Ys;exports.bySeries=yi;exports.calendarDaysBetween=aa;exports.calendarOf=Pt;exports.canConvert=Jp;exports.canDecrease=gi;exports.canMoveAgreement=ol;exports.canNestUnder=Nm;exports.canParent=Xy;exports.canTransition=Yp;exports.cancelPlan=up;exports.canonicalJson=In;exports.capabilityDefaultFlag=gl;exports.capacityTotal=wg;exports.capacityWeights=nh;exports.capitalizationThreshold=Zf;exports.carriesText=Ru;exports.cashForecast=Bm;exports.categoryLabel=xm;exports.categoryOf=Uc;exports.causedBy=Sy;exports.changesBilledLine=al;exports.changesBilledPrice=dl;exports.channelKindForScheme=bI;exports.channelKindOf=Tu;exports.checkInOverdueMs=ab;exports.chooseOffer=Fh;exports.chosenOf=Fp;exports.clampStepMaxTokens=vh;exports.classifyMail=gm;exports.cleanDimensions=Ae;exports.cleanMessageMarkdown=fE;exports.cleanMessageText=dE;exports.cleanReceiptLines=op;exports.codeQuery=qd;exports.codedMessage=mI;exports.columnBalance=Fm;exports.commandOf=yp;exports.commitProblem=Fd;exports.companyReceivablesOf=i_;exports.compareAssistRank=J_;exports.compareReports=wm;exports.compareWorkTypes=cc;exports.conditionHolds=Hs;exports.configurationStatus=$p;exports.contactName=If;exports.contractSignals=qh;exports.copyFrom=or;exports.correlationKeyFor=oI;exports.costOverYear=ui;exports.countsAsPlanned=Se;exports.coverEndAt=es;exports.coverageByPerson=Pg;exports.coverageFor=qg;exports.coversWorkstream=ur;exports.crmActivityAt=Rf;exports.cronMatches=Wa;exports.currentAccountRelation=qf;exports.currentLines=el;exports.currentOf=Ep;exports.currentPeriod=Wb;exports.customerProducts=Gp;exports.cycleDayIndex=lr;exports.cycleOrder=L_;exports.cycleState=K_;exports.dealValueCents=Qu;exports.debtorOf=Tt;exports.decideAssignmentState=ld;exports.decideCadence=N0;exports.decideEach=ql;exports.decideIncomingCall=aI;exports.decisionBand=Sl;exports.decodeText=NI;exports.defaultLocaleOf=Zi;exports.defaultOffer=ai;exports.defaultStatusKey=k_;exports.defaultTemplateBlocks=bc;exports.defineIntent=SI;exports.delegationRefusal=dd;exports.depreciationParts=ni;exports.depreciationPostings=Vf;exports.depthOf=zi;exports.derivePresence=ZI;exports.describeClause=Fl;exports.describeExpression=_y;exports.digitsOf=Ps;exports.disabledIntentsFromCapabilities=cI;exports.disposalLines=Hf;exports.documentBodyBytes=gs;exports.documentKindOf=GI;exports.documentOutline=hs;exports.documentToMarkdown=Fn;exports.documentToText=FI;exports.draftRequest=yn;exports.driftedFields=Ya;exports.dueAtOf=Gy;exports.dueCharges=tl;exports.dueDateFrom=Yb;exports.dunningRunOf=Pb;exports.dunningStateOf=Sc;exports.effectiveEndAt=tt;exports.elapsedSeconds=lb;exports.emailDomain=F0;exports.emptyConditionLeaf=yy;exports.endable=lp;exports.endpointKey=G0;exports.entryLinesOf=Jm;exports.entryNumber=Wm;exports.entryProblems=Gm;exports.erlangC=ua;exports.excessiveLending=Gf;exports.expectedFor=Bh;exports.expectsInvoice=si;exports.externalKeyOf=le;exports.extractParams=nu;exports.extractTerms=fu;exports.failureLines=Kf;exports.feedOutcome=Hh;exports.fieldVarPath=ky;exports.fillDocument=Pf;exports.fillText=Vs;exports.filterByEndpoint=fI;exports.filterByIntent=dI;exports.filterByTargetScheme=Yc;exports.filterableDimensions=Ul;exports.findAiVendor=xe;exports.findEvent=Oy;exports.findInListing=Ip;exports.finishedAt=sl;exports.fixedLevelForName=Zy;exports.fixedTypeForName=y_;exports.fixedTypes=b_;exports.flattenLocales=VI;exports.floorToPeriod=Ie;exports.forecastIntervals=Zg;exports.formatActingIdentity=_a;exports.formatCents=J;exports.formatClock=pb;exports.formatHm=fb;exports.formatItemKey=E_;exports.formatMicros=Yd;exports.formatPeriod=_e;exports.formatSeriesNumber=Gb;exports.formatSlaDuration=Hy;exports.freshSources=z_;exports.fromPathKey=im;exports.getActivitySeenUserIds=Fu;exports.getContactEndpoints=yf;exports.getShortTitle=Sm;exports.getUrgencyScore=Em;exports.goodsReceiptProblems=ii;exports.groupDocumentLines=Ua;exports.guessAdoptMapping=Lp;exports.guessFeedMapping=zh;exports.hasReacted=sy;exports.hashedPartOf=zm;exports.healthCategory=Jy;exports.healthsInCategory=eb;exports.heightOf=ir;exports.helpCenterText=km;exports.humanizeAction=hh;exports.indexPrices=fl;exports.interactionIdOf=ka;exports.interestOnDailyBalance=Ff;exports.interestPeriods=Bf;exports.invoiceFromQuote=Wo;exports.invoiceState=tp;exports.invoicesFromOrders=sm;exports.isAdoptSeries=Rp;exports.isAgentUser=a_;exports.isAssigned=_m;exports.isAssignmentTerminal=sd;exports.isAssignmentTrigger=va;exports.isAssistantMode=Nl;exports.isAuthoredCrmActivity=Mf;exports.isAutoReady=Rh;exports.isAutonomy=ph;exports.isAwaitingThem=Vi;exports.isBookable=vb;exports.isChatMessageActivity=ju;exports.isClosed=Im;exports.isConnectedType=Du;exports.isDescendant=Xi;exports.isEligible=cm;exports.isEmailActivity=Bu;exports.isFrozen=rr;exports.isHeldClock=qy;exports.isHtmlBody=lE;exports.isInFlight=Dh;exports.isInteractionUnseen=Li;exports.isLandingPath=y0;exports.isLikelyBulk=Di;exports.isMessageShape=xn;exports.isMessageType=ku;exports.isMoreSpecificPattern=ou;exports.isNoteShape=wn;exports.isOpenClock=ec;exports.isOutstanding=Sr;exports.isOutwardTool=Cr;exports.isOverdueOn=Qb;exports.isParked=Bi;exports.isPaused=wa;exports.isPlaybookAuthoredType=Nu;exports.isPricePer=Yu;exports.isPublicEmailDomain=j0;exports.isPublicPath=I0;exports.isPurchasable=tf;exports.isRecurringLine=Vo;exports.isReminderActive=ji;exports.isReplyableType=Mu;exports.isResultAccount=we;exports.isSellable=ef;exports.isSettingsPath=g0;exports.isSettled=Rc;exports.isShorter=Ju;exports.isSlaAtRisk=ym;exports.isSupportedCron=Ey;exports.isTerminal=Nh;exports.isThreadLongEnough=dm;exports.isTradeable=$d;exports.isTranscriptType=xu;exports.isUncollected=Ac;exports.isWebhookEvent=c_;exports.isWorkClosed=O_;exports.isWorkTypeVisible=gb;exports.isWriteTool=Or;exports.itemDossierKeys=v_;exports.itemKey=dt;exports.itemKeyOf=Ed;exports.judgeRuleCase=Ay;exports.kindFor=ee;exports.ladderFor=$c;exports.ledgerRuleFor=Ms;exports.levelIn=oc;exports.levelOrder=_t;exports.lineAffinity=yr;exports.lineKey=Eh;exports.lineNet=Dt;exports.lineStatus=zo;exports.lineTerm=V;exports.linesOf=Si;exports.linkLabel=Tm;exports.listedTransactionKinds=Vp;exports.listeningAllowed=Dl;exports.loanPostings=Wf;exports.loanSchedule=Yn;exports.localeInstruction=Rm;exports.localeName=Mm;exports.localesOf=Dm;exports.looksLikeEmail=$0;exports.lookup=Vn;exports.manualSettlement=e_;exports.marginCents=Gu;exports.markdownToDocument=UI;exports.matchApprovalPolicy=Wl;exports.matchContactToIntents=pI;exports.matchDocumentLines=Fa;exports.matchFeed=Vh;exports.matchPublicRoute=su;exports.matchRate=Ls;exports.matchRules=Ha;exports.matchVerdict=ty;exports.matchedLine=Ad;exports.mcpCredentialScope=mg;exports.mcpToolPrefix=gg;exports.measureRatio=nb;exports.mergeDefaultFlags=yl;exports.mergeShownKeys=R0;exports.mergeable=rm;exports.messageCountsAs=Uo;exports.metricOption=Bl;exports.minutesOn=dr;exports.missingFieldPaths=My;exports.modelAcceptsAttachment=_l;exports.monthEnd=ei;exports.monthParts=Xs;exports.monthlyPeriods=og;exports.monthsIn=Qs;exports.mustAsk=iu;exports.narrowAutonomy=gh;exports.navLabelText=HI;exports.needsOf=_i;exports.needsPhoneRegion=q0;exports.nestsUnderParent=Ou;exports.nextAttemptAt=gp;exports.nextLevelBelow=Qy;exports.nextOccurrenceDates=P_;exports.nextPrice=ul;exports.nextSlaClock=Wy;exports.nextStatuses=Ci;exports.nextVersion=em;exports.normalizeArtifactBlocks=ms;exports.normalizeBlocks=Su;exports.normalizeDocumentBlocks=ms;exports.normalizeEmail=Mr;exports.normalizeExample=ce;exports.normalizeGtin=kt;exports.normalizeIban=Bs;exports.normalizeIbans=mf;exports.normalizeMeter=Us;exports.normalizeUsageSource=cf;exports.normalizeVatNumber=pf;exports.noticeDeadline=Jo;exports.notificationPrefKey=XI;exports.novelty=pu;exports.offerKey=o0;exports.offerValid=Qn;exports.onePerItem=bi;exports.openCentsOf=md;exports.operationDescriptor=KI;exports.operationsForKind=LI;exports.opsForFieldType=Ty;exports.orderAnswers=Bp;exports.orderForDocument=Xh;exports.orderProgress=Ti;exports.organizationSender=Lf;exports.outcomeOf=D_;exports.overlap=St;exports.overlapSeconds=We;exports.overlaps=jg;exports.ownWorkspaceKey=Ib;exports.paceRatio=rb;exports.parkMarksById=um;exports.parse=Ga;exports.parseActingIdentity=oh;exports.parseAmount=nn;exports.parseCamt053=As;exports.parseClockMinutes=xy;exports.parseCodedMessage=hI;exports.parseCron=_r;exports.parseCsv=OI;exports.parseDay=_n;exports.parseItemKey=S_;exports.parseLineKey=Sh;exports.parseMicros=Gn;exports.parseMt940=Cs;exports.parsePackingSlip=Zh;exports.parseRateCsv=zd;exports.parseRatePrice=gn;exports.parseRecurrence=w_;exports.parseStatement=Id;exports.parseWorkspacePath=Sb;exports.parseXafOpening=lg;exports.partialDisposalLines=Qf;exports.partyTerms=zu;exports.pathToRegex=tu;exports.patternFor=pr;exports.patternStartTime=fr;exports.pauseBitFor=wy;exports.paymentOfItem=hd;exports.paymentStateOf=Er;exports.pendingApprovers=Vl;exports.periodAt=Je;exports.periodOf=sg;exports.periodShare=Yo;exports.periodsInRange=Kl;exports.phoneSuffix=U0;exports.pickMailHeaders=fm;exports.pickPaymentTerm=Hb;exports.pickTemplate=Df;exports.placeLumps=rh;exports.plainTextFromMarkdown=Ko;exports.planFor=Op;exports.planSlaEvent=jy;exports.plannedBillable=Gg;exports.plannedWorkTypeKey=ma;exports.preparationFromParams=i0;exports.priceAt=ts;exports.priceOver=Et;exports.primaryAddress=ff;exports.procedureOf=Oh;exports.productCost=ci;exports.productHref=$b;exports.productScopeKey=Lb;exports.profitAndLoss=$m;exports.progressState=om;exports.projectDossierKeys=C_;exports.proposalRequestIds=Gl;exports.proposeMatch=fd;exports.providedOf=pp;exports.publicBasePathFor=ru;exports.publicRoutePatterns=_0;exports.purchaseUnits=ip;exports.quantityKey=ml;exports.rateRecords=Qd;exports.ratedLineAmount=Zd;exports.ratedQuantity=Wn;exports.reactionWakesAssignment=cd;exports.readDefaultFlags=hl;exports.readFeed=Gh;exports.readPath=Xe;exports.readStepError=Ge;exports.ready=fi;exports.receiptGroupOf=Od;exports.receiptProblems=ks;exports.receiptState=ep;exports.receiptTotals=Ts;exports.receivableRowOf=r_;exports.receivedFor=oi;exports.recencyOf=Fi;exports.recipientLocale=Nf;exports.reconciledOn=pd;exports.reconciliationBalances=gd;exports.recoveryOf=bp;exports.refKey=mr;exports.referenceCostIn=Bd;exports.registrableDomain=yu;exports.rejectExampleCandidate=fc;exports.relatedByDefault=Eg;exports.remainingMsOf=bt;exports.reportOf=hi;exports.repriceLines=Hd;exports.requestIdOf=di;exports.requestPath=am;exports.requiredAgents=fa;exports.requirementFor=pa;exports.requiresIdsOf=li;exports.resolutionsFor=Cm;exports.resolveAccountCapabilities=Hc;exports.resolveActivityText=Qe;exports.resolveAutonomy=mh;exports.resolveChannelIntents=Vc;exports.resolvePrice=Ds;exports.resolveRateCard=Wd;exports.resolveRoute=Il;exports.resolveSignature=Fs;exports.resolveTier=os;exports.resolveWorkMode=e0;exports.resolveWorkspace=Eb;exports.resourceKindOf=d0;exports.restartOf=Xn;exports.restate=Go;exports.retryDelayMinutes=Nd;exports.reversedLines=Qm;exports.rhythmOf=Pn;exports.roleDirection=hf;exports.rollupChildren=ib;exports.roundHalfUp=U;exports.runActor=sh;exports.runApprovalKey=ch;exports.runEvalSuite=$f;exports.runIdOfApprovalRef=uh;exports.runInteractionId=wh;exports.runKind=Mh;exports.runOutcome=Cy;exports.runSpans=rl;exports.sameOffer=s0;exports.sanitizeInline=ps;exports.sanitizeTranscript=au;exports.scheduleEntryScopeKey=Jg;exports.scoreInteraction=bm;exports.scoreWorkItem=p_;exports.segmentIsEmpty=vf;exports.selectLenses=pg;exports.sellableProduct=Jd;exports.sellsOption=ja;exports.serialKeyOf=ap;exports.serialKeysOf=np;exports.serialize=Ve;exports.serialsInHouse=rp;exports.seriesOf=hn;exports.seriesStart=Zo;exports.serviceLevel=la;exports.sessionsHoldCannotReach=iI;exports.sessionsToHold=sI;exports.settingsPath=h0;exports.settle=_p;exports.settlementPatch=Jb;exports.settlesOn=Es;exports.shadowByKey=Pd;exports.shareKeyForTeam=jn;exports.shareKeyForUser=Bn;exports.shareKeysForViewer=nd;exports.shareReceipts=tm;exports.shortTermPrincipal=Xf;exports.shortfalls=Wg;exports.shouldRunAudioPipeline=t0;exports.slaBadgeTone=Vy;exports.slaHoursByInbox=hm;exports.slaHoursFor=Wi;exports.slipProposal=Qh;exports.sortStatuses=Fc;exports.sourceKey=Wc;exports.splitLine=cl;exports.splitUnits=jp;exports.spread=zn;exports.spreadOverWeights=ba;exports.startingCents=zf;exports.statusIn=T_;exports.statusRequiresApproval=N_;exports.stepDate=jc;exports.stepsOf=kh;exports.strategyAncestorKeysFor=zy;exports.strategyDossierKeys=Yy;exports.strategyItemScopeKey=Ir;exports.stripHtml=$o;exports.structureProblems=pi;exports.subjectKeyOf=xh;exports.subjectOf=gr;exports.subjectRef=Z_;exports.subscriptionRow=wp;exports.suggestProjectKey=A_;exports.suggestTreatments=Cd;exports.suggestedHealth=ob;exports.summariseEval=zs;exports.summarizeReactions=ry;exports.supplyChain=mi;exports.tallies=nm;exports.targetById=dh;exports.targetForActivityType=lh;exports.targetOf=kp;exports.targetOrder=cb;exports.taxCodeProblem=Tg;exports.taxDateOf=ae;exports.taxPercentOn=cr;exports.taxRateFor=sa;exports.taxRatesOn=Cg;exports.taxSideOf=Xm;exports.termApplies=Mc;exports.termEndAt=re;exports.termStartAt=Kn;exports.termsFor=ca;exports.tieredMicros=$s;exports.timingOf=Xo;exports.toActingIdentity=Ea;exports.toBaseUnits=Ld;exports.toE164=Dn;exports.toInvoice=ki;exports.toPathKey=Oi;exports.toProductUnits=Zn;exports.toTransactionTerm=zb;exports.toolBareName=Ca;exports.toolDisplayName=yh;exports.toolReversible=Y_;exports.toolSourceKinds=rd;exports.toolVerdict=T0;exports.topicOfferedForTeam=pc;exports.topicsForTeam=_b;exports.trafficIntensity=da;exports.transactionContext=Tb;exports.transactionDossierKeys=jb;exports.transactionHref=Kb;exports.transactionIdFromScope=Bb;exports.transactionKind=G;exports.transactionScopeKey=kc;exports.transactionSlots=kb;exports.transactionTotals=kg;exports.transitoryLines=Zm;exports.triggerFillsVar=_h;exports.truncateExample=dc;exports.typeIn=h_;exports.typesFor=g_;exports.uniqueWorkStatusKey=M_;exports.uniqueWorkTypeKey=mb;exports.unitFactor=Rs;exports.unitsProblem=Kd;exports.upsellOfferFor=ny;exports.usageAccountOf=rs;exports.usageAccountsOf=pl;exports.usageMetricId=cs;exports.usageMetrics=jl;exports.usersOf=Ee;exports.validateQuestions=El;exports.validateStatuses=R_;exports.valueAtPath=Aa;exports.variableJump=La;exports.variantOptionsProblem=Ud;exports.vatDateOf=uy;exports.vatPeriods=ay;exports.vatReturn=iy;exports.waitHoursOf=Nt;exports.wakesAssignment=ad;exports.withLineIds=Ah;exports.withPrice=ns;exports.workActivityScopeKey=I_;exports.workItemScopeKey=Kc;exports.workProjectScopeKey=Ar;exports.workRatio=sb;exports.workStatusKey=Bc;exports.workTypeKey=ac;exports.workingMsBetween=mt;exports.workspacePath=Ab;exports.workstreamScopeKey=eh;exports.xafAuditfile=cg;exports.xmlBlocks=Q;exports.xmlText=N;exports.yearEndClosingLines=jm;
|