var freeaps_determineBasal;(()=>{var e={5546:(e,r,t)=>{var o=t(6880);function i(e,a){a||(a=0);var r=Math.pow(10,a);return Math.round(e*r)/r}function n(e,a){return"mmol/L"===a.out_units?i(.0555*e,1):Math.round(e)}var s="",l="",m="",u="",d="",c="",g="",f="",h="";function p(e,a){var r=[2,7,12,16,20,50,60,80,90,100,110,150,180,200],t=[0,0,.4,.7,.7,-.5,-.5,-.3,-.2,0,0,.5,.7,.7],o=r.length-1,i=r[0],n=t[0],s=r[o],l=t[o],m=1,u=1,d=1,c=i;if(i>e)m=(u=n)+((l=t[1])-u)/((s=r[1])-(d=i))*(e-d);else if(se){m=u+(n-u)/(i-(d=c))*(e-d);break}u=n,c=i}return m*=e>100?a.higher_ISFrange_weight:e>40?a.lower_ISFrange_weight:a.delta_ISFrange_weight}function b(e,a,r){if(void 0===e.smb_delivery_ratio_bg_range||0===e.smb_delivery_ratio_bg_range)return console.error("SMB delivery ratio set to fixed value "+e.smb_delivery_ratio),e.smb_delivery_ratio;var t=Math.min(e.smb_delivery_ratio_min,e.smb_delivery_ratio_max);if(a<=r)return console.error("SMB delivery ratio limited by minimum value "+t),t;var o=Math.max(e.smb_delivery_ratio_min,e.smb_delivery_ratio_max);if(a>=r+e.smb_delivery_ratio_bg_range)return console.error("SMB delivery ratio limited by maximum value "+o),o;var n=t+(o-t)*(a-r)/e.smb_delivery_ratio_bg_range;return console.error("SMB delivery ratio set to interpolated value "+i(n,2)),n}e.exports=function(e,r,t,v,B,_,M,y,x,S,w,C,D,I,F){var G,T,O,U=0,R="",A="",P=0,j=(I=0,0),q=0,k=0,W=0;const E=F.weightedAverage,L=v.weightPercentage,z=F.average_7days;function N(e,a){var r=e.getTime();return new Date(r+36e5*a)}function Z(e){var a=v.bolus_increment;.05!=a&&(a=.1);var r=e/a;return r>=1?i(Math.floor(r)*a,5):0}function $(e){function a(e){return e<10&&(e="0"+e),e}return a(e.getHours())+":"+a(e.getMinutes())+":00"}function H(e,a){var r=new Date("1/1/1999 "+e),t=new Date("1/1/1999 "+a);return(r.getTime()-t.getTime())/36e5}function J(e,a){var r=0,t=a,o=(e-a)/36e5,i=0,n=o,s=0;do{if(o>0){var l=$(t),m=D[0].start;for(let e=0;e=(s=H(D[e+1].start,D[e].start))?i=s:o=(s=24-H(D[e].start,a))?i=s:ou)if(e+1=(s=H(d,l))?i=s:o=(s=H("23:59:59",l))?i=s:o0&&o=0)var Q=new Date(w[K].timestamp);else Q=new Date;var V,X,Y=new Date(w[0].timestamp);("TempBasalDuration"==w[0]._type&&(Y=new Date),(U=(Y-Q)/36e5)<23.5)?(k=J(Q,(V=24-U,X=Q.getTime(),new Date(X-36e5*V))),R="24 hours of data is required for an accurate tdd calculation. Currently only "+U.toPrecision(3)+" hours of pump history data are available. Using your pump scheduled basals to fill in the missing hours. Scheduled basals added: "+k.toPrecision(5)+" U. "):R="";for(let e=0;e0){P=e,W=w[e].rate;var ee=w[e-1]["duration (min)"]/60,ae=ee,re=new Date(w[e-1].timestamp),te=re;do{if(e--,0==e){te=new Date;break}if("TempBasal"==w[e]._type||"PumpSuspend"==w[e]._type){te=new Date(w[e].timestamp);break}}while(e>0);var oe=(te-re)/36e5;oe0&&(--t,"TempBasal"==w[t]._type)){r=new Date(w[t].timestamp);break}}while(t>0);(r-a)/36e5>0&&(k+=J(r,a))}for(let e=w.length-1;e>0;e--)if("TempBasalDuration"==w[e]._type){let a=w[e]["duration (min)"]/60,r=new Date(w[e].timestamp);var ie=r;let t=e;do{if(--t,t>=0&&("TempBasal"==w[t]._type||"PumpSuspend"==w[t]._type)){ie=new Date(w[t].timestamp);break}}while(t>0);if(0==e&&"TempBasalDuration"==w[0]._type&&(ie=new Date,a=w[e]["duration (min)"]/60),(ie-r)/36e5-a>0){k+=J(ie,N(r,a))}}var ne=I=q+j+k;T=". Bolus insulin: "+q.toPrecision(5)+" U",O=". Temporary basal insulin: "+j.toPrecision(5)+" U",G=". Insulin with scheduled basal rate: "+k.toPrecision(5)+" U",A=R+(". tdd past 24h is: "+I.toPrecision(5)+" U")+T+O+G,tddReason=", TDD: "+i(I,1)+" U. W.avg: "+i(E,1)+" U. 7day: "+i(z,1)+" U";const se=e.glucose;var le=C.enableChris,me=C.enableDynamicCR;const ue=v.autosens_min,de=v.autosens_max,ce=C.adjustmentFactor,ge=v.min_bg;var fe=!1,he="",pe=1;z>0&&(pe=E/z),pe>1?(pe=i(pe=Math.min(pe,v.autosens_max),2),console.log("Basal adjustment with a 24 hour to 7 day average TDD ratio limited by Autosens max setting. Ratio "+pe+". Upper limit = Autosens max ("+v.autosens_max+")")):pe<1?(pe=i(pe=Math.max(pe,v.autosens_min),2),console.log("Basal adjustment with a 24 hour to 7 day average TDD ratio limited by Autosens min setting. Ratio: "+pe+". Lower limit = Autosens min ("+v.autosens_min+")")):console.log("Basal adjusted with a 24 hour to 7 day average TDD ratio: "+pe);var be=", Basal ratio: "+pe;1!=v.high_temptarget_raises_sensitivity&&1!=v.exercise_mode||(fe=!0),1==v.use_autoisf&&1==le&&(v.use_autoisf=!1),ge>=118&&1==fe&&(v.use_autoisf=!1,le=!1,he="Dynamic ISF temporarily off due to a high temp target/exercising. Current min target: "+ge);var ve=", Dynamic ratios log: ",Be=", AF: "+ce,_e="BG: "+se+" mg/dl ("+(.0555*se).toPrecision(2)+" mmol/l). ",Me="",ye="";const xe=C.curve,Se=C.insulinPeakTime,we=C.useCustomPeakTime;var Ce=55;switch(xe){case"rapid-acting":Ce=55;break;case"ultra-rapid":Ce=Se<75&&1==we?120-Se:70}if(ne=I,L<1&&E>0&&(I=E,console.log("Using weighted TDD average: "+i(I,2)+" U, instead of past 24 h ("+i(ne,2)+" U), weight: "+L),ye=", Weighted TDD: "+i(I,2)+" U"),1==C.useNewFormula){var De=v.sens*ce*I*Math.log(se/Ce+1)/1800;Me=", Logarithmic formula"}else{De=v.sens*ce*I*se/277700;Me=", Original formula"}var Ie=v.carb_ratio,Fe="",Ge="";if(1==le&&I>0){if(Fe=", Dynamic ISF/CR: On/",De>de?(he=", Dynamic ISF limited by autosens_max setting: "+de+" ("+i(De,2)+"), ",Ge=", Autosens/Dynamic Limit: "+de+" ("+i(De,2)+")",De=de):De-.5?"+"+i(e.delta,0):i(e.delta,0);var ze=Math.min(e.delta,e.short_avgdelta),Ne=Math.min(e.short_avgdelta,e.long_avgdelta),Ze=Math.max(e.delta,e.short_avgdelta,e.long_avgdelta);(Ee<=10||38===Ee||Le>=3)&&(Ue.reason="CGM is calibrating, in ??? state, or noise is high");if(Ee>60&&0==e.delta&&e.short_avgdelta>-1&&e.short_avgdelta<1&&e.long_avgdelta>-1&&e.long_avgdelta<1&&("fakecgm"==e.device?(console.error("CGM data is unchanged ("+n(Ee,v)+"+"+n(e.delta,v)+") for 5m w/ "+n(e.short_avgdelta,v)+" mg/dL ~15m change & "+n(e.long_avgdelta,2)+" mg/dL ~45m change"),console.error("Simulator mode detected ("+e.device+"): continuing anyway")):!0),We>12||We<-5?Ue.reason="If current system time "+je+" is correct, then BG data is too old. The last BG data was read "+We+"m ago at "+ke:0===e.short_avgdelta&&0===e.long_avgdelta&&(e.last_cal&&e.last_cal<3?Ue.reason="CGM was just calibrated":Ue.reason="CGM data is unchanged ("+n(Ee,v)+"+"+n(e.delta,v)+") for 5m w/ "+n(e.short_avgdelta,v)+" mg/dL ~15m change & "+n(e.long_avgdelta,v)+" mg/dL ~45m change"),Ee<=10||38===Ee||Le>=3||We>12||We<-5||0===e.short_avgdelta&&0===e.long_avgdelta)return r.rate>=Pe?(Ue.reason+=". Canceling high temp basal of "+r.rate,Ue.deliverAt=Re,Ue.temp="absolute",Ue.duration=0,Ue.rate=0,Ue):0===r.rate&&r.duration>30?(Ue.reason+=". Shortening "+r.duration+"m long zero temp to 30m. ",Ue.deliverAt=Re,Ue.temp="absolute",Ue.duration=30,Ue.rate=0,Ue):(Ue.reason+=". Temp "+r.rate+" <= current basal "+Pe+"U/hr; doing nothing. ",Ue);var $e,He,Je,Ke=v.max_iob;if(void 0!==v.min_bg&&(He=v.min_bg),void 0!==v.max_bg&&(Je=v.max_bg),void 0===v.min_bg||void 0===v.max_bg)return Ue.error="Error: could not determine target_bg. ",Ue;$e=(v.min_bg+v.max_bg)/2;var Qe=v.exercise_mode||v.high_temptarget_raises_sensitivity,Ve=100,Xe=160;if(v.half_basal_exercise_target&&(Xe=v.half_basal_exercise_target),Qe&&v.temptargetSet&&$e>Ve||v.low_temptarget_lowers_sensitivity&&v.temptargetSet&&$e0?(sensitivityRatio=Ye/(Ye+$e-Ve),sensitivityRatio=Math.min(sensitivityRatio,v.autosens_max),sensitivityRatio=i(sensitivityRatio,2)):sensitivityRatio=v.autosens_max,process.stderr.write("Sensitivity ratio set to "+sensitivityRatio+" based on temp target of "+$e+"; ")}else void 0!==B&&B&&(sensitivityRatio=B.ratio,process.stderr.write("Autosens ratio: "+sensitivityRatio+"; "));if(sensitivityRatio&&0==v.enableChris?(Pe=v.current_basal*sensitivityRatio,Pe=o(Pe,v)):1==v.enableChris&&1==v.tddAdjBasal&&(Pe=v.current_basal*pe,Pe=o(Pe,v),process.stderr.write("TDD-adjustment of basals activated, using tdd24h_7d_Ratio "+i(pe,2)+", TDD 24h = "+i(ne,2)+"U, Weighted average TDD = "+i(E,2)+"U, (Weight percentage = "+L+"), 7-day average TDD = "+i(z,2)+"U. "),Pe!==Ae?process.stderr.write("Adjusting basal from "+Ae+" to "+Pe+"; "):process.stderr.write("Basal unchanged: "+Pe+"; ")),v.temptargetSet);else if(void 0!==B&&B&&(v.sensitivity_raises_target&&B.ratio<1||v.resistance_lowers_target&&B.ratio>1)){He=i((He-60)/B.ratio)+60,Je=i((Je-60)/B.ratio)+60;var ea=i(($e-60)/B.ratio)+60;$e===(ea=Math.max(80,ea))?process.stderr.write("target_bg unchanged: "+ea+"; "):process.stderr.write("target_bg from "+$e+" to "+ea+"; "),$e=ea}var aa=200,ra=200,ta=200;if(e.noise>=2){var oa=Math.max(1.1,v.noisyCGMTargetMultiplier);Math.min(250,v.maxRaw);aa=i(Math.min(200,He*oa)),ra=i(Math.min(200,$e*oa)),ta=i(Math.min(200,Je*oa)),process.stderr.write("Raising target_bg for noisy / raw CGM data, from "+$e+" to "+ra+"; "),He=aa,$e=ra,Je=ta}var ia=He-.5*(He-40),na=i(v.sens,1),sa=v.sens;if(void 0!==B&&B&&((sa=i(sa=v.sens/sensitivityRatio,1))!==na?process.stderr.write("ISF from "+n(na,v)+" to "+n(sa,v)):process.stderr.write("ISF unchanged: "+n(sa,v)),s+="Autosens ratio: "+i(sensitivityRatio,2)+", ISF: "+n(na,v)+"→"+n(sa,v)),console.error("CR:"+v.carb_ratio),sa=function(e,a,r,t,o,v,B,_){if(!r.use_autoisf)return console.error("autoISF disabled in Preferences"),e;var M=t.dura_p,y=t.delta_pl,x=t.delta_pn,S=t.r_squ,w=t.bg_acceleration,C=t.parabola_fit_a0,D=t.parabola_fit_a1,I=t.parabola_fit_a2,F=t.autoISF_duration,G=t.autoISF_average,T=r.autoisf_max,O=!1,U=1,R=1,A=1,P=a+10-G;if(!(o.mealCOB>0)||r.enableautoisf_with_COB){var j=t.pp_debug;if(c+="BG-accel: "+i(w,3)+", PF-minutes: "+M+", PF-corr: "+i(S,4)+", PF-nextDelta: "+n(x,r)+", PF-lastDelta: "+n(y,r)+", regular Delta: "+n(t.delta,r),console.error(j+c+" , Weights Accel/Brake: "+r.bgAccel_ISF_weight+" / "+r.bgBrake_ISF_weight),r.enable_BG_acceleration){var q=w;if(0!=t.parabola_fit_a2){var k=-D/2/I*5,W=i(C-k*k/25*I,1);(k=i(k,1))<0&&q<0?(h="saw max of "+n(W,r)+", about "+-k+" min ago",console.error("Parabolic fit "+h)):k<0&&q>0?(h="saw min of "+n(W,r)+", about "+-k+" min ago",console.error("Parabolic fit "+h)):k>0&&q<0?(h="predicts max of "+n(W,r)+", in about "+k+"min",console.error("Parabolic fit "+h)):k>0&&q>0&&(h="predicts min of "+n(W,r)+", in about "+k+" min",console.error("Parabolic fit "+h))}var E=S;if(E<=.9)h="acce_ISF by-passed, as correlation, "+i(E,3)+", is too low",console.error("Parabolic fit "+h),g+=", Parabolic Fit, "+h;else{g+=", Parabolic Fit, "+h+", lastΔ: "+n(y,r)+", nextΔ: "+n(x,r)+", Corr "+i(S,3)+", BG-Accel: "+i(q,2);var L=10*(E-.9),z=1;t.glucose1&&(z=.5),A=1+q*z*(q<0?r.bgBrake_ISF_weight:r.bgAccel_ISF_weight)*L,console.error("Original result for acce_ISF: "+i(A,2)),1!=A&&(O=!0,g+=", acce-ISF Ratio: "+i(A,2))}}else console.error("autoISF BG accelertion adaption disabled in Preferences");var N=b(r,t.glucose,a);s+=", SMB Delivery Ratio:, "+i(N,2)+g+", autoISF";var Z=1+p(100-P,r);console.error("bg_ISF adaptation is "+i(Z,2)),Z<1&&A>1&&(f="bg-ISF adaptation lifted to "+i(Z*=A,2)+", as BG accelerates already",l="(lifted by "+i(A,2)+")",console.error(f));var $=1;if(Z<1)return($=Math.min(Z,A))1&&(O=!0,s+=", bg-ISF Ratio: "+i(Z,2));var H=t.delta;P>0?console.error("delta_ISF adaptation by-passed as average glucose < "+n(a+10,r)):t.short_avgdelta<0?console.error("delta_ISF adaptation by-passed as no rise or too short lived"):r.enableppisf_always||r.postmeal_ISF_duration>=(v-o.lastCarbTime)/1e3/3600?(U=1+Math.max(0,H*r.postmeal_ISF_weight),console.error("pp_ISF adaptation is "+i(U,2)),u=", pp-ISF Ratio: "+i(U,2),1!=U&&(O=!0)):(R=p(H,r),P>-20&&(R*=.5),R=1+R,console.error("delta_ISF adaptation is "+i(R,2)),d=", Δ-ISF Ratio: "+i(R,2),1!=R&&(O=!0));var J=1,K=r.autoisf_hourlychange;return o.mealCOB>0&&!r.enableautoisf_with_COB?console.error("dura_ISF by-passed; preferences disabled mealCOB of "+i(o.mealCOB,1)):F<10?console.error("dura_ISF by-passed; BG is only "+F+"m at level "+G):G<=a?console.error("dura_ISF by-passed; avg. glucose "+G+" below target "+n(a,r)):(J+=F/60*(K/a)*(G-a),O=!0,m=", Duration: "+F+", Avg: "+n(G,r)+", dura-ISF Ratio: "+i(J,2),console.error("dura_ISF adaptation is "+i(J,2)+" because ISF "+e+" did not do it for "+i(F,1)+"m")),$=1,O?($=Math.max(J,Z,R,A,U),console.error("autoISF adaption ratios:"),console.error(" dura "+i(J,2)),console.error(" bg "+i(Z,2)),console.error(" delta "+i(R,2)),console.error(" pp "+i(U,2)),console.error(" accel "+i(A,2)),A<1&&(console.error("strongest ISF factor "+i($,2)+" weakened to "+i($*A,2)+" as bg decelerates already"),$*=A),$T&&(console.error("final ISF factor "+i($,2)+" limited by autoisf_max "+T),$=T),$>=1&&(e=i(r.sens/Math.max($,_),1)),$<1&&(e=i(r.sens/Math.min($,_),1))):$=_,s+=u+d+m+", Ratio: "+i($,2)+", ISF: "+n(e,r),console.error("Inside autoISF: Ratio "+i($,2)+" resulting in "+n(e,r)),e}console.error("BG dependant autoISF by-passed; preferences disabled mealCOB of "+i(o.mealCOB,1))}(sa,$e,v,e,_,S,0,sensitivityRatio),void 0===t)return Ue.error="Error: iob_data undefined. ",Ue;var la,ma=t;if(t.length,t.length>1&&(t=ma[0]),void 0===t.activity||void 0===t.iob)return Ue.error="Error: iob_data missing some property. ",Ue;var ua=((la=void 0!==t.lastTemp?i((new Date(je).getTime()-t.lastTemp.date)/6e4):0)+r.duration)%30;if(console.error("currenttemp:"+r.rate+" lastTempAge:"+la+"m, tempModulus:"+ua+"m"),Ue.temp="absolute",Ue.deliverAt=Re,y&&r&&t.lastTemp&&r.rate!==t.lastTemp.rate&&la>10&&r.duration)return Ue.reason="Warning: currenttemp rate "+r.rate+" != lastTemp rate "+t.lastTemp.rate+" from pumphistory; canceling temp",M.setTempBasal(0,0,v,Ue,r);if(r&&t.lastTemp&&r.duration>0){var da=la-t.lastTemp.duration;if(da>5&&la>10)return Ue.reason="Warning: currenttemp running but lastTemp from pumphistory ended "+da+"m ago; canceling temp",M.setTempBasal(0,0,v,Ue,r)}var ca=i(-t.activity*sa*5,2),ga=i(6*(ze-ca));ga<0&&(ga=i(6*(Ne-ca)))<0&&(ga=i(6*(e.long_avgdelta-ca)));var fa=Ee,ha=(fa=t.iob>0?i(Ee-t.iob*sa):i(Ee-t.iob*Math.min(sa,v.sens)))+ga;if(void 0===ha||isNaN(ha))return Ue.error="Error: could not calculate eventualBG. Sensitivity: "+sa+" Deviation: "+ga,Ue;var pa=function(e,a,r){return i(r+(e-a)/24,1)}($e,ha,ca);Ue={temp:"absolute",bg:Ee,tick:qe,eventualBG:ha,insulinReq:0,reservoir:x,deliverAt:Re,sensitivityRatio,TDD:ne};var ba=[],va=[],Ba=[],_a=[];ba.push(Ee),va.push(Ee),_a.push(Ee),Ba.push(Ee);var Ma=function(e,a,r,t){return a?!e.allowSMB_with_high_temptarget&&e.temptargetSet&&t>100?(console.error("SMB disabled due to high temptarget of "+t),!1):!0===r.bwFound&&!1===e.A52_risk_enable?(console.error("SMB disabled due to Bolus Wizard activity in the last 6 hours."),!1):!0===e.enableSMB_always?(r.bwFound?console.error("Warning: SMB enabled within 6h of using Bolus Wizard: be sure to easy bolus 30s before using Bolus Wizard"):console.error("SMB enabled due to enableSMB_always"),!0):!0===e.enableSMB_with_COB&&r.mealCOB?(r.bwCarbs?console.error("Warning: SMB enabled with Bolus Wizard carbs: be sure to easy bolus 30s before using Bolus Wizard"):console.error("SMB enabled for COB of "+r.mealCOB),!0):!0===e.enableSMB_after_carbs&&r.carbs?(r.bwCarbs?console.error("Warning: SMB enabled with Bolus Wizard carbs: be sure to easy bolus 30s before using Bolus Wizard"):console.error("SMB enabled for 6h after carb entry"),!0):!0===e.enableSMB_with_temptarget&&e.temptargetSet&&t<100?(r.bwFound?console.error("Warning: SMB enabled within 6h of using Bolus Wizard: be sure to easy bolus 30s before using Bolus Wizard"):console.error("SMB enabled for temptarget of "+n(t,e)),!0):(console.error("SMB disabled (no enableSMB preferences active or no condition satisfied)"),!1):(console.error("SMB disabled (!microBolusAllowed)"),!1)}(v,y,_,$e),ya=v.enableUAM,xa=0,Sa=0;xa=i(ze-ca,1);var wa=i(ze-ca,1);csf=sa/v.carb_ratio,console.error("profile.sens:"+n(v.sens,v)+", sens:"+n(sa,v)+", CSF:"+i(csf,1));var Ca=i(30*csf*5/60,1);xa>Ca&&(console.error("Limiting carb impact from "+xa+" to "+Ca+"mg/dL/5m (30g/h)"),xa=Ca);var Da=3;sensitivityRatio&&(Da/=sensitivityRatio);var Ia=Da;if(_.carbs){Da=Math.max(Da,_.mealCOB/20);var Fa=i((new Date(je).getTime()-_.lastCarbTime)/6e4),Ga=(_.carbs-_.mealCOB)/_.carbs;Ia=i(Ia=Da+1.5*Fa/60,1),console.error("Last carbs "+Fa+" minutes ago; remainingCATime:"+Ia+"hours; "+i(100*Ga,1)+"% carbs absorbed")}var Ta=Math.max(0,xa/5*60*Ia/2)/csf,Oa=90,Ua=1;v.remainingCarbsCap&&(Oa=Math.min(90,v.remainingCarbsCap)),v.remainingCarbsFraction&&(Ua=Math.min(1,v.remainingCarbsFraction));var Ra=1-Ua,Aa=Math.max(0,_.mealCOB-Ta-_.carbs*Ra),Pa=(Aa=Math.min(Oa,Aa))*csf*5/60/(Ia/2),ja=i(_.slopeFromMaxDeviation,2),qa=i(_.slopeFromMinDeviation,2),ka=Math.min(ja,-qa/3),Wa=0;0===xa?Sa=0:!0===v.floating_carbs?(Sa=Math.min(60*Ia/5/2,Math.max(0,_.carbs*csf/xa)),Wa=Math.min(60*Ia/5/2,Math.max(0,_.mealCOB*csf/xa)),_.carbs>0&&(s+=", Floating Carbs:, CID: "+i(Sa,1)+", MealCarbs: "+i(_.carbs,1)+", Not Floating:, CID: "+i(Wa,1)+", MealCOB: "+i(_.mealCOB,1),console.error("Floating Carbs CID: "+i(Sa,1)+" / MealCarbs: "+i(_.carbs,1)+" vs. Not Floating:"+i(Wa,1)+" / MealCOB:"+i(_.mealCOB,1)))):Sa=Math.min(60*Ia/5/2,Math.max(0,_.mealCOB*csf/xa)),console.error("Carb Impact:"+xa+"mg/dL per 5m; CI Duration:"+i(5*Sa/60*2,1)+"hours; remaining CI ("+Ia/2+"h peak):"+i(Pa,1)+"mg/dL per 5m");var Ea,La,za,Na,Za,$a=999,Ha=999,Ja=999,Ka=Ee,Qa=999,Va=999,Xa=999,Ya=999,er=ha,ar=Ee,rr=Ee,tr=0,or=[],ir=[];try{ma.forEach((function(e){var a=i(-e.activity*sa*5,2),r=i(-e.iobWithZeroTemp.activity*sa*5,2),t=xa*(1-Math.min(1,va.length/12));er=va[va.length-1]+a+t;var o=_a[_a.length-1]+r,n=Math.max(0,Math.max(0,xa)*(1-ba.length/Math.max(2*Sa,1))),s=Math.min(ba.length,12*Ia-ba.length),l=Math.max(0,s/(Ia/2*12)*Pa);n+l,or.push(i(l,0)),ir.push(i(n,0)),COBpredBG=ba[ba.length-1]+a+Math.min(0,t)+n+l;var m=Math.max(0,wa+Ba.length*ka),u=Math.max(0,wa*(1-Ba.length/Math.max(36,1))),d=Math.min(m,u);d>0&&(tr=i(5*(Ba.length+1)/60,1)),UAMpredBG=Ba[Ba.length-1]+a+Math.min(0,t)+d,va.length<48&&va.push(er),ba.length<48&&ba.push(COBpredBG),Ba.length<48&&Ba.push(UAMpredBG),_a.length<48&&_a.push(o),COBpredBG18&&er<$a&&($a=i(er)),er>ar&&(ar=er),(Sa||Pa>0)&&ba.length>18&&COBpredBG0)&&COBpredBG>ar&&(rr=COBpredBG),ya&&Ba.length>12&&UAMpredBGar&&UAMpredBG}))}catch(e){console.error("Problem with iobArray. Optional feature Advanced Meal Assist disabled")}_.mealCOB&&(console.error("predCIs (mg/dL/5m):"+ir.join(" ")),console.error("remainingCIs: "+or.join(" "))),Ue.predBGs={},va.forEach((function(e,a,r){r[a]=i(Math.min(401,Math.max(39,e)))}));for(var nr=va.length-1;nr>12&&va[nr-1]===va[nr];nr--)va.pop();for(Ue.predBGs.IOB=va,za=i(va[va.length-1]),_a.forEach((function(e,a,r){r[a]=i(Math.min(401,Math.max(39,e)))})),nr=_a.length-1;nr>6&&!(_a[nr-1]>=_a[nr]||_a[nr]<=$e);nr--)_a.pop();if(Ue.predBGs.ZT=_a,i(_a[_a.length-1]),_.mealCOB>0&&(xa>0||Pa>0)){for(ba.forEach((function(e,a,r){r[a]=i(Math.min(401,Math.max(39,e)))})),nr=ba.length-1;nr>12&&ba[nr-1]===ba[nr];nr--)ba.pop();Ue.predBGs.COB=ba,Na=i(ba[ba.length-1]),ha=Math.max(ha,i(ba[ba.length-1]))}if(xa>0||Pa>0){if(ya){for(Ba.forEach((function(e,a,r){r[a]=i(Math.min(401,Math.max(39,e)))})),nr=Ba.length-1;nr>12&&Ba[nr-1]===Ba[nr];nr--)Ba.pop();Ue.predBGs.UAM=Ba,Za=i(Ba[Ba.length-1]),Ba[Ba.length-1]&&(ha=Math.max(ha,i(Ba[Ba.length-1])))}Ue.eventualBG=ha}console.error("UAM Impact:"+wa+"mg/dL per 5m; UAM Duration:"+tr+"hours"),$a=Math.max(39,$a),Ha=Math.max(39,Ha),Ja=Math.max(39,Ja),Ea=i($a);var sr=_.mealCOB/_.carbs;La=i(Ja<999&&Ha<999?(1-sr)*UAMpredBG+sr*COBpredBG:Ha<999?(er+COBpredBG)/2:Ja<999?(er+UAMpredBG)/2:er),Ya>La&&(La=Ya),Ka=i(Ka=Sa||Pa>0?ya?sr*Qa+(1-sr)*Va:Qa:ya?Va:Xa);var lr=Ja;if(YaJa&&(lr=(Ja+Ya)/2);if(lr=i(lr),_.carbs)if(!ya&&Ha<999)Ea=i(Math.max($a,Ha));else if(Ha<999){var ur=sr*Ha+(1-sr)*lr;Ea=i(Math.max($a,Ha,ur))}else Ea=ya?lr:Ka;else ya&&(Ea=i(Math.max($a,lr)));Ea=Math.min(Ea,La),process.stderr.write("minPredBG: "+Ea+" minIOBPredBG: "+$a+" minZTGuardBG: "+Ya),Ha<999&&process.stderr.write(" minCOBPredBG: "+Ha),Ja<999&&process.stderr.write(" minUAMPredBG: "+Ja),console.error(" avgPredBG:"+La+" COB/Carbs:"+_.mealCOB+"/"+_.carbs),rr>Ee&&(Ea=Math.min(Ea,rr)),Ue.COB=_.mealCOB,Ue.IOB=t.iob,Ue.BGI=n(ca,v),Ue.deviation=n(ga,v),Ue.ISF=n(sa,v),Ue.CR=i(v.carb_ratio,2),Ue.target_bg=n($e,v),Ue.TDD=i(ne,2),Ue.reason=s+", COB: "+Ue.COB+", Dev: "+Ue.deviation+", BGI: "+Ue.BGI+", CR: "+Ue.CR+", Target: "+Ue.target_bg+", minPredBG "+n(Ea,v)+", minGuardBG "+n(Ka,v)+", IOBpredBG "+n(za,v),Na>0&&(Ue.reason+=", COBpredBG "+n(Na,v)),Za>0&&(Ue.reason+=", UAMpredBG "+n(Za,v)),Ue.reason+=tddReason,Ue.reason+="; ";var dr=fa;dr<40&&(dr=Math.min(Ka,dr));var cr,gr=ia-dr,fr=240,hr=240;if(_.mealCOB>0&&(xa>0||Pa>0)){for(nr=0;nrcr*Ee&&(console.error("maxDelta "+n(Ze,v)+" > "+100*cr+"% of BG "+n(Ee,v)+" - disabling SMB"),Ue.reason+="maxDelta "+n(Ze,v)+" > "+100*cr+"% of BG "+n(Ee,v)+" - SMB disabled!, ",Ma=!1),console.error("BG projected to remain above "+n(He,v)+" for "+fr+"minutes"),(hr<240||fr<60)&&console.error("BG projected to remain above "+n(ia,v)+" for "+hr+"minutes");var pr=hr,br=v.current_basal*sa*pr/60,vr=Math.max(0,_.mealCOB-.25*_.carbs),Br=(gr-br)/csf-vr;br=i(br),Br=i(Br),console.error("naive_eventualBG:"+fa+" bgUndershoot:"+gr+" zeroTempDuration:"+pr+" zeroTempEffect:"+br+" carbsReq:"+Br),Br>=v.carbsReqThreshold&&hr<=45&&(Ue.carbsReq=Br,Ue.reason+=Br+" add'l carbs req w/in "+hr+"m; ");var _r=0;if(Ee0&&ze>pa)Ue.reason+="IOB "+t.iob+" < "+i(20*-v.current_basal/60,2),Ue.reason+=" and minDelta "+n(ze,v)+" > expectedDelta "+n(pa,v)+"; ";else if(Ee=55)return Ue.reason+="; Canceling temp at "+Ue.deliverAt.getMinutes()+"m past the hour. ",M.setTempBasal(0,0,v,Ue,r);var Mr=0,yr=Pe;if(hapa&&ze>0&&!Br)return fa<40?(Ue.reason+=", naive_eventualBG < 40. ",M.setTempBasal(0,30,v,Ue,r)):(e.delta>ze?Ue.reason+=", but Delta "+n(qe,v)+" > expectedDelta "+n(pa,v):Ue.reason+=", but Min. Delta "+ze.toFixed(2)+" > Exp. Delta "+n(pa,v),r.duration>15&&o(Pe,v)===o(r.rate,v)?(Ue.reason+=", temp "+r.rate+" ~ req "+Pe+"U/hr. ",Ue):(Ue.reason+="; setting current basal of "+Pe+" as temp. ",M.setTempBasal(Pe,30,v,Ue,r)));Mr=i(Mr=2*Math.min(0,(ha-$e)/sa),2);var xr=Math.min(0,(fa-$e)/sa);if(xr=i(xr,2),ze<0&&ze>pa)Mr=i(Mr*(ze/pa),2);if(yr=o(yr=Pe+2*Mr,v),r.duration*(r.rate-Pe)/605&&yr>=.8*r.rate)return Ue.reason+=", temp "+r.rate+" ~< req "+yr+"U/hr. ",Ue;if(yr<=0){if((_r=i(60*((gr=$e-fa)/sa)/v.current_basal))<0?_r=0:(_r=30*i(_r/30),_r=Math.min(120,Math.max(0,_r))),_r>0)return Ue.reason+=", setting "+_r+"m zero temp. ",M.setTempBasal(yr,_r,v,Ue,r)}else Ue.reason+=", setting "+yr+"U/hr. ";return M.setTempBasal(yr,30,v,Ue,r)}if(ze "+n(He,v)+" but Delta "+n(qe,v)+" < Exp. Delta "+n(pa,v):Ue.reason+="Eventual BG "+n(ha,v)+" > "+n(He,v)+" but Min. Delta "+ze.toFixed(2)+" < Exp. Delta "+n(pa,v),r.duration>15&&o(Pe,v)===o(r.rate,v)?(Ue.reason+=", temp "+r.rate+" ~ req "+Pe+"U/hr. ",Ue):(Ue.reason+="; setting current basal of "+Pe+" as temp. ",M.setTempBasal(Pe,30,v,Ue,r));if(Math.min(ha,Ea)15&&o(Pe,v)===o(r.rate,v)?(Ue.reason+=", temp "+r.rate+" ~ req "+Pe+"U/hr. ",Ue):(Ue.reason+="; setting current basal of "+Pe+" as temp. ",M.setTempBasal(Pe,30,v,Ue,r));if(ha>=Je&&(Ue.reason+="Eventual BG "+n(ha,v)+" >= "+n(Je,v)+", "),t.iob>Ke)return Ue.reason+="IOB "+i(t.iob,2)+" > max_iob "+Ke,r.duration>15&&o(Pe,v)===o(r.rate,v)?(Ue.reason+=", temp "+r.rate+" ~ req "+Pe+"U/hr. ",Ue):(Ue.reason+="; setting current basal of "+Pe+" as temp. ",M.setTempBasal(Pe,30,v,Ue,r));(Mr=i((Math.min(Ea,ha)-$e)/sa,2))>Ke-t.iob?(console.error("SMB limited by maxIOB: "+Ke-t.iob+" (. insulinReq: "+Mr+" U)"),Ue.reason+="max_iob "+Ke+", ",Mr=Ke-t.iob):console.error("SMB not limited by maxIOB ( insulinReq: "+Mr+" U)."),yr=o(yr=Pe+2*Mr,v),Mr=i(Mr,3),Ue.insulinReq=Mr;var Sr=i((new Date(je).getTime()-t.lastBolusTime)/6e4,1);if(y&&Ma&&Ee>ia){var wr=i(_.mealCOB/v.carb_ratio,3);if(v.use_autoisf)Cr=v.smb_max_range_extension;else{console.error("autoISF disabled, SMB range extension disabled");var Cr=1}Cr>1&&console.error("SMB max range extended from default by factor "+Cr);var Dr=0;void 0===v.maxSMBBasalMinutes?(Dr=i(Cr*v.current_basal*30/60,1),console.error("profile.maxSMBBasalMinutes undefined: defaulting to 30m"),Mr>Dr&&(console.error("SMB limited by maxBolus: "+Dr+" ( "+Mr+" U)"),a)):t.iob>wr&&t.iob>0?(console.error("IOB"+t.iob+"> COB"+_.mealCOB+"; mealInsulinReq ="+wr),v.maxUAMSMBBasalMinutes?(console.error("profile.maxUAMSMBBasalMinutes: "+v.maxUAMSMBBasalMinutes+", profile.current_basal: "+v.current_basal),Dr=i(Cr*v.current_basal*v.maxUAMSMBBasalMinutes/60,1)):(console.error("profile.maxUAMSMBBasalMinutes undefined: defaulting to 30m"),Dr=i(30*v.current_basal/60,1)),Mr>Dr?console.error("SMB limited by maxUAMSMBBasalMinutes: "+v.maxUAMSMBBasalMinutes+" ( "+Mr+" )"):console.error("SMB is not limited by maxUAMSMBBasalMinutes. (insulinReq: "+Mr+" U)")):(console.error("profile.maxSMBBasalMinutes: "+v.maxSMBBasalMinutes+", profile.current_basal: "+v.current_basal),Mr>(Dr=i(Cr*v.current_basal*v.maxSMBBasalMinutes/60,1))?console.error("SMB limited by maxSMBBasalMinutes: "+v.maxSMBBasalMinutes+" ( insulinReq: "+Mr+" U)"):console.error("SMB is not limited by maxSMBBasalMinutes. (insulinReq: "+Mr+" U)"));var Ir=v.bolus_increment,Fr=1/Ir,Gr=b(v,Ee,$e);Gr>.5&&console.error("SMB Delivery Ratio increased from default 0.5 to "+i(Gr,2));var Tr=Math.min(Mr*Gr,Dr);Tr=Math.floor(Tr*Fr)/Fr,_r=i(60*(($e-(fa+$a)/2)/sa)/v.current_basal),Mr>0&&Tr=30?(_r=30*i(_r/30),_r=Math.min(60,Math.max(0,_r))):(Or=i(Pe*_r/30,2),_r=30),Ue.reason+=" insulinReq "+Mr,Tr>=Dr&&(Ue.reason+="; maxBolus "+Dr),_r>0&&(Ue.reason+="; setting "+_r+"m low temp of "+Or+"U/h"),Ue.reason+=". ";var Ur=3;v.SMBInterval&&(Ur=Math.min(10,Math.max(1,v.SMBInterval)));var Rr=i(Ur-Sr,0),Ar=i(60*(Ur-Sr),0)%60;if(console.error("naive_eventualBG "+fa+","+_r+"m "+Or+"U/h temp needed; last bolus "+Sr+"m ago; maxBolus: "+Dr),Sr>Ur?Tr>0&&(Ue.units=Tr,Ue.reason+="Microbolusing "+Tr+"U. "):Ue.reason+="Waiting "+Rr+"m "+Ar+"s to microbolus again. ",_r>0)return Ue.rate=Or,Ue.duration=_r,Ue}var Pr=M.getMaxSafeBasal(v);return yr>Pr&&(Ue.reason+="adj. req. rate: "+yr+" to maxSafeBasal: "+i(Pr,2)+", ",yr=o(Pr,v)),r.duration*(r.rate-Pe)/60>=2*Mr?(Ue.reason+=r.duration+"m@"+r.rate.toFixed(2)+" > 2 * insulinReq. Setting temp basal of "+yr+"U/hr. ",M.setTempBasal(yr,30,v,Ue,r)):void 0===r.duration||0===r.duration?(Ue.reason+="no temp, setting "+yr+"U/hr. ",M.setTempBasal(yr,30,v,Ue,r)):r.duration>5&&o(yr,v)<=o(r.rate,v)?(Ue.reason+="temp "+r.rate+" >~ req "+yr+"U/hr. ",Ue):(Ue.reason+="temp "+r.rate+"<"+yr+"U/hr. ",M.setTempBasal(yr,30,v,Ue,r))}},6880:(e,a,r)=>{var t=r(6654);e.exports=function(e,a){var r=20;void 0!==a&&"string"==typeof a.model&&(t(a.model,"54")||t(a.model,"23"))&&(r=40);return e<1?Math.round(e*r)/r:e<10?Math.round(20*e)/20:Math.round(10*e)/10}},2705:(e,a,r)=>{var t=r(5639).Symbol;e.exports=t},9932:e=>{e.exports=function(e,a){for(var r=-1,t=null==e?0:e.length,o=Array(t);++r{e.exports=function(e,a,r){return e==e&&(void 0!==r&&(e=e<=r?e:r),void 0!==a&&(e=e>=a?e:a)),e}},4239:(e,a,r)=>{var t=r(2705),o=r(9607),i=r(2333),n=t?t.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":n&&n in Object(e)?o(e):i(e)}},531:(e,a,r)=>{var t=r(2705),o=r(9932),i=r(1469),n=r(3448),s=t?t.prototype:void 0,l=s?s.toString:void 0;e.exports=function e(a){if("string"==typeof a)return a;if(i(a))return o(a,e)+"";if(n(a))return l?l.call(a):"";var r=a+"";return"0"==r&&1/a==-Infinity?"-0":r}},7561:(e,a,r)=>{var t=r(7990),o=/^\s+/;e.exports=function(e){return e?e.slice(0,t(e)+1).replace(o,""):e}},1957:(e,a,r)=>{var t="object"==typeof r.g&&r.g&&r.g.Object===Object&&r.g;e.exports=t},9607:(e,a,r)=>{var t=r(2705),o=Object.prototype,i=o.hasOwnProperty,n=o.toString,s=t?t.toStringTag:void 0;e.exports=function(e){var a=i.call(e,s),r=e[s];try{e[s]=void 0;var t=!0}catch(e){}var o=n.call(e);return t&&(a?e[s]=r:delete e[s]),o}},2333:e=>{var a=Object.prototype.toString;e.exports=function(e){return a.call(e)}},5639:(e,a,r)=>{var t=r(1957),o="object"==typeof self&&self&&self.Object===Object&&self,i=t||o||Function("return this")();e.exports=i},7990:e=>{var a=/\s/;e.exports=function(e){for(var r=e.length;r--&&a.test(e.charAt(r)););return r}},6654:(e,a,r)=>{var t=r(9750),o=r(531),i=r(554),n=r(9833);e.exports=function(e,a,r){e=n(e),a=o(a);var s=e.length,l=r=void 0===r?s:t(i(r),0,s);return(r-=a.length)>=0&&e.slice(r,l)==a}},1469:e=>{var a=Array.isArray;e.exports=a},3218:e=>{e.exports=function(e){var a=typeof e;return null!=e&&("object"==a||"function"==a)}},7005:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},3448:(e,a,r)=>{var t=r(4239),o=r(7005);e.exports=function(e){return"symbol"==typeof e||o(e)&&"[object Symbol]"==t(e)}},8601:(e,a,r)=>{var t=r(4841),o=1/0;e.exports=function(e){return e?(e=t(e))===o||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}},554:(e,a,r)=>{var t=r(8601);e.exports=function(e){var a=t(e),r=a%1;return a==a?r?a-r:a:0}},4841:(e,a,r)=>{var t=r(7561),o=r(3218),i=r(3448),n=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,l=/^0o[0-7]+$/i,m=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(i(e))return NaN;if(o(e)){var a="function"==typeof e.valueOf?e.valueOf():e;e=o(a)?a+"":a}if("string"!=typeof e)return 0===e?e:+e;e=t(e);var r=s.test(e);return r||l.test(e)?m(e.slice(2),r?2:8):n.test(e)?NaN:+e}},9833:(e,a,r)=>{var t=r(531);e.exports=function(e){return null==e?"":t(e)}}},r={};function t(a){var o=r[a];if(void 0!==o)return o.exports;var i=r[a]={exports:{}};return e[a](i,i.exports,t),i.exports}t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}();var o=t(5546);freeaps_determineBasal=o})();