PageSourceSearch

https://senly.io/_next/static/chunks/95599.27080642cee8e64a.js

js senly.io collected 2026-09-24 15:04:20 UTC 19,965 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[95599,32507],{95599:function(e,t,n){n.d(t,{generateTeamTextWithFallback:function(){return S}});var o=n(21548),r=n(40257);let i=null,a=["gemini-2.5-flash","gemini-2.5-flash-lite"],u=["gemini-2.5-flash","gemini-2.5-flash-lite"],l=["gemini-2.5-flash-lite","gemini-2.5-flash"];async function s(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"vision",n=arguments.length>2?arguments[2]:void 0,s="video"===t?l:"vision"===t?a:u,c=null;for(let t=0;t<s.length;t++){let a=s[t];try{let t=(function(e){if(!(e||r.env.GEMINI_API_KEY))throw Error("Geen Gemini API key geconfigureerd. Voeg je eigen Gemini key toe via Instellingen → AI.");return e?new o.$D(e):function(){if(i)return i;let e=r.env.GEMINI_API_KEY;if(!e)throw Error("GEMINI_API_KEY ontbreekt in .env.local");return i=new o.$D(e)}()})(n).getGenerativeModel({model:a});return await e(t,a)}catch(n){if(c=n,!function(e){let t=e instanceof Error?e.name:"",n=e instanceof Error?e.message:String(e),o=n.toLowerCase();return"GoogleGenerativeAIAbortError"===t||"AbortError"===t||o.includes("request aborted when fetching")||o.includes("aborted")||n.includes("503")||n.includes("429")||o.includes("service unavailable")||o.includes("high demand")||n.includes("overloaded")||o.includes("too many requests")||o.includes("te veel verzoeken")||o.includes("rate limit")||o.includes("quota")}(n))throw n;if(t===s.length-1)break;let e=Math.min(8e3,Math.round(1500*Math.pow(1.6,t)));console.warn("[gemini] 503/429 op ".concat(a,", probeer ").concat(s[t+1]," na ").concat(e,"ms…")),await new Promise(t=>setTimeout(t,e))}}throw c}var c=n(49178),d=n(40257);let m=null,p=d.env.AI_TEAM_CLAUDE_MODEL||"claude-haiku-4-5";var v=n(21792),f=n(36316),g=n(32507),h=n(40257);async function E(){let e=await g.prisma.appSetting.findUnique({where:{key:"ai_team.budget"}}).catch(()=>null);if(!(null==e?void 0:e.value))return{dailyTokenCap:null};try{let t=JSON.parse(e.value);return{dailyTokenCap:"number"==typeof(null==t?void 0:t.dailyTokenCap)&&Number.isFinite(t.dailyTokenCap)&&t.dailyTokenCap>0?Math.round(t.dailyTokenCap):null}}catch(e){return{dailyTokenCap:null}}}async function _(){var e;return null!==(e=(await E()).dailyTokenCap)&&void 0!==e?e:function(){let e=h.env.AI_TEAM_CLAUDE_DAILY_TOKEN_CAP,t=e?parseInt(e,10):NaN,n=Number.isFinite(t)&&t>0?t:1e5,o=h.env.AI_TEAM_CLAUDE_CAP_BOOST,r=h.env.AI_TEAM_CLAUDE_CAP_BOOST_UNTIL,i=o?parseInt(o,10):NaN;if(Number.isFinite(i)&&i>0&&r){let e=Date.parse(r);if(Number.isFinite(e)&&Date.now()<e)return Math.max(n,i)}return n}()}async function b(e){var t,n;let o=new Date;o.setUTCHours(0,0,0,0);let r=await g.prisma.boardroomTokenLog.aggregate({where:{createdAt:{gte:o},provider:{in:e}},_sum:{inputTokens:!0,outputTokens:!0}}).catch(()=>null);return(null!==(t=null==r?void 0:r._sum.inputTokens)&&void 0!==t?t:0)+(null!==(n=null==r?void 0:r._sum.outputTokens)&&void 0!==n?n:0)}async function A(){return b(["claude"])}async function y(){let e=await _(),t=await A(),n=new Date,o=new Date(n);o.setUTCHours(0,0,0,0);let r=Math.min(e,Math.max(.02*e,(n.getTime()-o.getTime())/6e4*e/1440));return{used:t,cap:e,allowedSoFar:r,allowed:t<r}}var I=n(40257);let O=I.env.ANTHROPIC_MODEL||p,N=["gemini","groq","cloudflare","grok","openai","claude"],k=["gemini","groq","cerebras","cloudflare","openrouter","grok","openai","claude"],T=I.env.GROQ_MODEL||"llama-3.3-70b-versatile",C=I.env.CEREBRAS_MODEL||"gpt-oss-120b",w=I.env.CLOUDFLARE_MODEL||"@cf/meta/llama-3.3-70b-instruct-fp8-fast",M=I.env.GITHUB_MODELS_MODEL||"openai/gpt-4o-mini",U=I.env.OPENROUTER_MODEL||"openai/gpt-oss-120b:free",P=I.env.GROK_MODEL||"grok-3",R=I.env.OPENAI_MODEL||"gpt-4o-mini";async function D(e){var t,n,o,r;let i=await fetch("".concat(e.baseUrl,"/chat/completions"),{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e.apiKey),...e.extraHeaders||{}},body:JSON.stringify({model:e.model,messages:[{role:"user",content:e.prompt}],temperature:null!==(r=e.temperature)&&void 0!==r?r:.85,...e.maxTokens?{max_tokens:e.maxTokens}:{},...e.jsonMode?{response_format:{type:"json_object"}}:{}}),signal:AbortSignal.timeout(4e4)});if(!i.ok){let e=await i.text().catch(()=>"");throw Error("HTTP ".concat(i.status,": ").concat(e.slice(0,200))
1)}let a=await i.json(),u=null==a?void 0:null===(o=a.choices)||void 0===o?void 0:null===(n=o[0])||void 0===n?void 0:null===(t=n.message)||void 0===t?void 0:t.content;if("string"!=typeof u||0===u.length)throw Error("Lege/ontbrekende content in chat-completion response");return u}let K=0,x=new Map;async function L(e,t){var n,o,i,a,u;let l=(null==t?void 0:t.providers)||N,p=(null==t?void 0:t.modelType)||"text",g=null==t?void 0:t.tenantApiKey,h=null==t?void 0:t.temperature,E=null==t?void 0:t.maxTokens,_=null!==(n=null==t?void 0:t.jsonMode)&&void 0!==n&&n,b=null!==(o=null==t?void 0:t.noThinking)&&void 0!==o&&o,A=null==t?void 0:t.usageContext,k=[];for(let n of l){if(function(e){let t=x.get(e);return!!t&&t.openUntil>Date.now()}(n)){k.push("".concat(n,": circuit-breaker open (degradatie)"));continue}try{if("claude"===n){if(!d.env.ANTHROPIC_API_KEY){k.push("claude: geen key");continue}let n=await y().catch(()=>null),o=Math.ceil((null!==(i=null==e?void 0:e.length)&&void 0!==i?i:0)/4)+(null!=E?E:1024),r=(null==t?void 0:t.bypassClaudePacing)?null!==(a=null==n?void 0:n.cap)&&void 0!==a?a:0:null!==(u=null==n?void 0:n.allowedSoFar)&&void 0!==u?u:0;if(n&&n.used+K+o>r){k.push("claude: budget ".concat((null==t?void 0:t.bypassClaudePacing)?"dag-cap bereikt":"gepaced"," (").concat(n.used," gebruikt + ").concat(K," in-flight + ").concat(o," deze call > lijn ").concat(Math.round(r),")"));continue}K+=o;try{let t=function(){if(m)return m;let e=d.env.ANTHROPIC_API_KEY;if(!e)throw Error("ANTHROPIC_API_KEY ontbreekt in .env.local");return m=new c.ZP({apiKey:e})}(),n=(await t.messages.create({model:O,max_tokens:null!=E?E:1024,...void 0!==h?{temperature:h}:{},messages:[{role:"user",content:_?"".concat(e,"\n\nAntwoord UITSLUITEND met geldige JSON — geen markdown, geen uitleg."):e}]})).content.find(e=>"text"===e.type),o=n&&"text"===n.type?n.text:"";if(_){let e=o.trim();e.startsWith("```")&&(o=e.replace(/^```(?:json)?\s*/i,"").replace(/```\s*$/i,"").trim())}if(!o.trim()){k.push("claude: leeg antwoord");continue}return{text:o,provider:"claude"}}finally{K=Math.max(0,K-o)}}if("gemini"===n){if(!r.env.GEMINI_API_KEY&&!g){k.push("gemini: geen key");continue}return{text:await s(async(t,n)=>{let o={...void 0!==h?{temperature:h}:{},...void 0!==E?{maxOutputTokens:E}:{}};_?(o.responseMimeType="application/json",o.thinkingConfig={thinkingBudget:0}):b&&(o.thinkingConfig={thinkingBudget:0});let r=await t.generateContent({contents:[{role:"user",parts:[{text:e}]}],generationConfig:o},{timeout:4e4});return!function(e,t,n){var o,r,i;let a=null!==(o=null==t?void 0:t.promptTokenCount)&&void 0!==o?o:0,u=(null!==(r=null==t?void 0:t.candidatesTokenCount)&&void 0!==r?r:0)+(null!==(i=null==t?void 0:t.thoughtsTokenCount)&&void 0!==i?i:0),l=(0,f.estimateGeminiCostEur)(e,t);(0,v.recordAiUsage)({provider:"gemini",model:e,promptTokens:a,outputTokens:u,context:n,costEurOverride:l})}(n,r.response.usageMetadata,A),r.response.text()},p,g),provider:"gemini"}}if("groq"===n){if(!I.env.GROQ_API_KEY){k.push("groq: geen key");continue}return{text:await D({baseUrl:"https://api.groq.com/openai/v1",apiKey:I.env.GROQ_API_KEY,model:T,prompt:e,temperature:h,maxTokens:E,jsonMode:_}),provider:"groq"}}if("cerebras"===n){if(!I.env.CEREBRAS_API_KEY){k.push("cerebras: geen key");continue}return{text:await D({baseUrl:"https://api.cerebras.ai/v1",apiKey:I.env.CEREBRAS_API_KEY,model:C,prompt:e,temperature:h,maxTokens:E,jsonMode:_}),provider:"cerebras"}}if("cloudflare"===n){if(!(I.env.CLOUDFLARE_ACCOUNT_ID&&I.env.CLOUDFLARE_API_TOKEN)){k.push("cloudflare: geen account-id of token");continue}let t=I.env.CLOUDFLARE_ACCOUNT_ID;return{text:await D({baseUrl:"https://api.cloudflare.com/client/v4/accounts/".concat(t,"/ai/v1"),apiKey:I.env.CLOUDFLARE_API_TOKEN,model:w,prompt:e,temperature:h,maxTokens:E,jsonMode:_}),provider:"cloudflare"}}if("github"===n){if(!I.env.GITHUB_MODELS_TOKEN){k.push("github: geen token");continue}return{text:await D({baseUrl:"https://models.github.ai/inference",apiKey:I.env.GITHUB_MODELS_TOKEN,model:M,prompt:e,temperature:h,maxTokens:E,jsonMode:_}),provider:"github"}}if("openrouter"===n){if(!I.env.OPENROUTER_API_KEY){k.push("openrouter: geen key");continue}
1return{text:await D({baseUrl:"https://openrouter.ai/api/v1",apiKey:I.env.OPENROUTER_API_KEY,model:U,prompt:e,temperature:h,maxTokens:E,jsonMode:_,extraHeaders:{"HTTP-Referer":"https://senly.io","X-Title":"Senly Blog Generator"}}),provider:"openrouter"}}if("grok"===n){if(!(I.env.XAI_API_KEY||I.env.GROK_API_KEY)){k.push("grok: geen key");continue}return{text:await D({baseUrl:"https://api.x.ai/v1",apiKey:I.env.XAI_API_KEY||I.env.GROK_API_KEY,model:P,prompt:e,temperature:h,maxTokens:E,jsonMode:_}),provider:"grok"}}if("openai"===n){if(!I.env.OPENAI_API_KEY){k.push("openai: geen key");continue}return{text:await D({baseUrl:"https://api.openai.com/v1",apiKey:I.env.OPENAI_API_KEY,model:R,prompt:e,temperature:h,maxTokens:E,jsonMode:_}),provider:"openai"}}}catch(t){!function(e){let t=(e instanceof Error?e.message:String(e)).toLowerCase();return/api key not valid|api_key_invalid|invalid api key|permission_denied|safety|blocked|recitation|prohibited_content|resource_exhausted|quota|rate.?limit|429|too many requests/.test(t)}(t)&&function(e){var t;let n=Date.now(),o=null!==(t=x.get(e))&&void 0!==t?t:{fails:0,openUntil:0,lastFailAt:0};if(n-o.lastFailAt>3e5&&(o.fails=0),o.fails+=1,o.lastFailAt=n,o.fails>=3){let t=Math.min(9e5,3e4*Math.pow(2,o.fails-3));o.openUntil=n+t,console.warn("[ai-fallback] circuit-breaker OPEN voor ".concat(e," (").concat(o.fails," fouten, cooldown ").concat(Math.round(t/1e3),"s)"))}x.set(e,o)}(n);let e=(null==t?void 0:t.message)||String(t);console.warn("[ai-fallback] ".concat(n," faalde: ").concat(e.slice(0,200))),k.push("".concat(n,": ").concat(e.slice(0,120)))}}throw Error("Alle AI providers faalden — ".concat(k.join(" | ")))}function S(e,t){var n;let o=null!==(n=null==t?void 0:t.tenantApiKey)&&void 0!==n?n:function e(){let t=r.env.AI_TEAM_GEMINI_KEY||r.env.BOARDROOM_GEMINI_API_KEY||null;return t||!r.env.GEMINI_API_KEY||e._warned||(e._warned=!0,console.warn("[ai-team] Geen AI_TEAM_GEMINI_KEY of BOARDROOM_GEMINI_API_KEY gezet — Gemini-step in AI-team-paden wordt overgeslagen (fallback ladder gaat door naar gratis Groq/Cerebras). De paid GEMINI_API_KEY wordt bewust NIET gebruikt voor AI-team-werk.")),t}(),i=o?(null==t?void 0:t.providers)||k:((null==t?void 0:t.providers)||k).filter(e=>"gemini"!==e);return L(e,{...t,providers:i,tenantApiKey:o,usageContext:{feature:"ai-team",freeKey:!!o,...null==t?void 0:t.usageContext}})}I.env.GROQ_VISION_MODEL,I.env.GITHUB_VISION_MODEL,(I.env.OPENROUTER_VISION_MODELS||I.env.OPENROUTER_VISION_MODEL||"google/gemma-4-26b-a4b-it:free,nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free,thinkingmachines/inkling:free").split(",").map(e=>e.trim()).filter(Boolean),I.env.OPENAI_VISION_MODEL},36316:function(e,t,n){n.r(t),n.d(t,{GROUNDED_SEARCH_SURCHARGE_EUR:function(){return a},IMAGE_TOKENS_PER_IMAGE:function(){return r},estimateCostEur:function(){return l},estimateGeminiCostEur:function(){return s},estimateImageCostEur:function(){return i},isPaidModel:function(){return c}});let o={"gemini-2.5-flash":{inUsd:.3,audioUsd:1,cachedUsd:.075,outUsd:2.5},"gemini-2.5-flash-lite":{inUsd:.1,audioUsd:.3,cachedUsd:.025,outUsd:.4},"gemini-flash-latest":{inUsd:.75,audioUsd:.75,cachedUsd:.1875,outUsd:3.75},"gemini-2.5-pro":{inUsd:1.25,audioUsd:1.25,cachedUsd:.3125,outUsd:10},"gemini-2.5-flash-image":{inUsd:.3,audioUsd:.3,cachedUsd:.075,outUsd:30},"gemini-3.1-flash-tts-preview":{inUsd:.5,audioUsd:.5,cachedUsd:.125,outUsd:10},"gemini-2.5-flash-preview-tts":{inUsd:.5,audioUsd:.5,cachedUsd:.125,outUsd:10}},r=1290;function i(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"gemini-2.5-flash-image",n=o[t];return!n||e<=0?0:r/1e6*e*n.outUsd*.86}let a=.030100000000000002,u=new Set(["groq","cerebras","cloudflare","openrouter","github"]);function l(e,t,n,r){if(u.has(e))return 0;let i=o[t];return i?(n/1e6*i.inUsd+r/1e6*i.outUsd)*.86:0}function s(e,t){var n,r,i,a,u,l;let s=o[e];if(!s)return 0;let c=t||{},d=null!==(n=c.promptTokenCount)&&void 0!==n?n:0,m=null!==(r=c.cachedContentTokenCount)&&void 0!==r?r:0,p=Array.isArray(c.promptTokensDetails)?c.promptTokensDetails:[],v=0,f=0;for(let e of p)"AUDIO"===(e.modality||"").toUpperCase()?v+=null!==(i=e.tokenCount)&&void 0!==i?i:0:f+=null!==(a=e.tokenCount)&&void 0!==a?a:0;0===p.length&&(f=d);let g=Math.max(0,f-m),h=(null!==(u=c.candidatesTokenCount)&&void 0!==u?u:0)+(null!==(l=c.thoughtsTokenCount)&&void 0!==l?l:0);
1return(g/1e6*s.inUsd+v/1e6*s.audioUsd+m/1e6*s.cachedUsd+h/1e6*s.outUsd)*.86}function c(e,t){return!u.has(e)&&!!o[t]}},21792:function(e,t,n){n.r(t),n.d(t,{recordAiUsage:function(){return a},summarizeAiUsage:function(){return u}});var o=n(32507),r=n(36316);function i(e){return(e?new Date(e):new Date).toISOString().slice(0,10)}async function a(e){var t,n,a;try{let a=i(e.nowMs),u=(null===(t=e.context)||void 0===t?void 0:t.tenantId)||"platform",l=(null===(n=e.context)||void 0===n?void 0:n.feature)||"other",s=Math.max(0,Math.round(e.promptTokens||0)),c=Math.max(0,Math.round(e.outputTokens||0)),d="number"==typeof e.costEurOverride?e.costEurOverride:(0,r.estimateCostEur)(e.provider,e.model,s,c),m={day_tenantId_feature_provider_model:{day:a,tenantId:u,feature:l,provider:e.provider,model:e.model}};try{await o.prisma.aiUsageDaily.upsert({where:m,create:{day:a,tenantId:u,feature:l,provider:e.provider,model:e.model,requests:1,promptTokens:s,outputTokens:c,costEur:d},update:{requests:{increment:1},promptTokens:{increment:s},outputTokens:{increment:c},costEur:{increment:d}}})}catch(e){await o.prisma.aiUsageDaily.update({where:m,data:{requests:{increment:1},promptTokens:{increment:s},outputTokens:{increment:c},costEur:{increment:d}}}).catch(()=>{})}}catch(e){console.warn("[ai-usage] meten mislukt (genegeerd):",null==e?void 0:null===(a=e.message)||void 0===a?void 0:a.slice(0,100))}}async function u(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:14,t=Math.min(Math.max(1,Math.round(e)),90),n=i(Date.now()-(t-1)*864e5),r=await o.prisma.aiUsageDaily.findMany({where:{day:{gte:n}},take:5e3}),a=0,u=0,l=new Map,s=new Map,c=new Map,d=new Map;for(let e of r){let t=function(e){if(null==e)return 0;let t="number"==typeof e?e:Number(e.toString());return isNaN(t)?0:t}(e.costEur);a+=t,u+=e.requests;let n=l.get(e.day)||{costEur:0,requests:0};n.costEur+=t,n.requests+=e.requests,l.set(e.day,n);let o=s.get(e.feature)||{costEur:0,requests:0};o.costEur+=t,o.requests+=e.requests,s.set(e.feature,o);let r="".concat(e.provider,"/").concat(e.model),i=c.get(r)||{provider:e.provider,model:e.model,costEur:0,requests:0,promptTokens:0,outputTokens:0};i.costEur+=t,i.requests+=e.requests,i.promptTokens+=e.promptTokens,i.outputTokens+=e.outputTokens,c.set(r,i);let m=d.get(e.tenantId)||{costEur:0,requests:0};m.costEur+=t,m.requests+=e.requests,d.set(e.tenantId,m)}let m=[...d.keys()].filter(e=>e&&"platform"!==e),p=new Map;if(m.length>0)for(let e of(await o.prisma.tenant.findMany({where:{id:{in:m}},select:{id:!0,name:!0},take:200})))p.set(e.id,e.name);let v=[...d.entries()].map(e=>{let[t,n]=e;return{tenantId:t,name:"platform"===t?"Platform / intern":p.get(t)||t,...n}}).sort((e,t)=>t.costEur-e.costEur).slice(0,15);return{days:t,totalCostEur:a,totalRequests:u,perDay:[...l.entries()].map(e=>{let[t,n]=e;return{day:t,...n}}).sort((e,t)=>e.day.localeCompare(t.day)),perFeature:[...s.entries()].map(e=>{let[t,n]=e;return{feature:t,...n}}).sort((e,t)=>t.costEur-e.costEur),perModel:[...c.values()].sort((e,t)=>t.costEur-e.costEur),topTenants:v}}},32507:function(e,t,n){n.d(t,{prisma:function(){return l}});var o,r=n(93340),i=n(40257);let a=globalThis,u=function(){let e=i.env.DATABASE_URL;if(!e)return;if(/[?&]connection_limit=/.test(e))return e;let t=i.env.PRISMA_CONNECTION_LIMIT,n=t&&/^\d+$/.test(t)?t:String(25);return n?"".concat(e).concat(e.includes("?")?"&":"?","connection_limit=").concat(n):e}(),l=null!==(o=a.prisma)&&void 0!==o?o:new r.PrismaClient(u?{datasources:{db:{url:u}}}:void 0).$extends({result:{clientInvoice:{subtotal:{needs:{subtotal:!0},compute:e=>Number(e.subtotal)},vatAmount:{needs:{vatAmount:!0},compute:e=>Number(e.vatAmount)},total:{needs:{total:!0},compute:e=>Number(e.total)},amountPaid:{needs:{amountPaid:!0},compute:e=>Number(e.amountPaid)}},clientQuote:{subtotal:{needs:{subtotal:!0},compute:e=>Number(e.subtotal)},vatAmount:{needs:{vatAmount:!0},compute:e=>Number(e.vatAmount)},total:{needs:{total:!0},compute:e=>Number(e.total)}},user:{salesTargetMonthly:{needs:{salesTargetMonthly:!0},compute:e=>null==e.salesTargetMonthly?null:Number(e.salesTargetMonthly)},hourlyRate:{needs:{hourlyRate:!0},compute:e=>null==e.hourlyRate?null:Number(e.hourlyRate)}},client:{monthlyFee:{needs:{monthlyFee:!0},compute:e=>null==e.monthlyFee?null:Number(e.monthlyFee)}
1,monthlyCost:{needs:{monthlyCost:!0},compute:e=>null==e.monthlyCost?null:Number(e.monthlyCost)},monthlyFeeOverride:{needs:{monthlyFeeOverride:!0},compute:e=>null==e.monthlyFeeOverride?null:Number(e.monthlyFeeOverride)},staffCostOverride:{needs:{staffCostOverride:!0},compute:e=>null==e.staffCostOverride?null:Number(e.staffCostOverride)},subscriptionsCostOverride:{needs:{subscriptionsCostOverride:!0},compute:e=>null==e.subscriptionsCostOverride?null:Number(e.subscriptionsCostOverride)},commissionCostOverride:{needs:{commissionCostOverride:!0},compute:e=>null==e.commissionCostOverride?null:Number(e.commissionCostOverride)}},clientCampaign:{budget:{needs:{budget:!0},compute:e=>null==e.budget?null:Number(e.budget)}},oneTimeIncome:{amount:{needs:{amount:!0},compute:e=>Number(e.amount)}},monthlyOverride:{income:{needs:{income:!0},compute:e=>null==e.income?null:Number(e.income)},cost:{needs:{cost:!0},compute:e=>null==e.cost?null:Number(e.cost)}},otherFinanceItem:{monthlyAmount:{needs:{monthlyAmount:!0},compute:e=>Number(e.monthlyAmount)}},tenant:{monthlyAmount:{needs:{monthlyAmount:!0},compute:e=>Number(e.monthlyAmount)},soloRate:{needs:{soloRate:!0},compute:e=>null==e.soloRate?null:Number(e.soloRate)},defaultHourlyRate:{needs:{defaultHourlyRate:!0},compute:e=>Number(e.defaultHourlyRate)}},timeEntry:{rateSnapshot:{needs:{rateSnapshot:!0},compute:e=>null==e.rateSnapshot?null:Number(e.rateSnapshot)},billRate:{needs:{billRate:!0},compute:e=>null==e.billRate?null:Number(e.billRate)}},invoice:{pricePerClient:{needs:{pricePerClient:!0},compute:e=>Number(e.pricePerClient)},subtotal:{needs:{subtotal:!0},compute:e=>Number(e.subtotal)},vatAmount:{needs:{vatAmount:!0},compute:e=>Number(e.vatAmount)},total:{needs:{total:!0},compute:e=>Number(e.total)}},bankTransaction:{amount:{needs:{amount:!0},compute:e=>Number(e.amount)},appliedAmount:{needs:{appliedAmount:!0},compute:e=>null==e.appliedAmount?null:Number(e.appliedAmount)}},crmLead:{value:{needs:{value:!0},compute:e=>null==e.value?null:Number(e.value)}},tenantMrrSnapshot:{mrr:{needs:{mrr:!0},compute:e=>Number(e.mrr)}},outreachContact:{convertedMrr:{needs:{convertedMrr:!0},compute:e=>null==e.convertedMrr?null:Number(e.convertedMrr)}},commissionAssignment:{internalOffset:{needs:{internalOffset:!0},compute:e=>Number(e.internalOffset)}},commission:{commissionAmount:{needs:{commissionAmount:!0},compute:e=>Number(e.commissionAmount)}},commissionClaim:{flatFeeAmount:{needs:{flatFeeAmount:!0},compute:e=>Number(e.flatFeeAmount)},commissionAmount:{needs:{commissionAmount:!0},compute:e=>Number(e.commissionAmount)},totalAmount:{needs:{totalAmount:!0},compute:e=>Number(e.totalAmount)}},reelClaim:{creditEuros:{needs:{creditEuros:!0},compute:e=>null==e.creditEuros?null:Number(e.creditEuros)}},reviewClaim:{creditEuros:{needs:{creditEuros:!0},compute:e=>null==e.creditEuros?null:Number(e.creditEuros)}}}})}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.