PageSourceSearch

https://ad-intelligence-59ba7.web.app/chunk-7Q6DFNQT.js

js ad-intelligence-59ba7.web.app collected 2026-10-03 12:16:14 UTC 74,508 bytes, 1 lines download raw bytes

1import{a as pe}from"./chunk-ABEOKCRC.js";import"./chunk-RKR3PV64.js";import{d as oe}from"./chunk-OYWHTECT.js";import"./chunk-B6ML3TBS.js";import"./chunk-7VPF77TY.js";import"./chunk-4SSS2OJZ.js";import"./chunk-3XIPWIBB.js";import"./chunk-WAWFYPMX.js";import"./chunk-HTCLQCOU.js";import"./chunk-6XPI5QYW.js";import"./chunk-YWMD53KQ.js";import{g as ne,j as ie}from"./chunk-A6AWQOXQ.js";import{C as me,c as ae,h as re,l as le,t as de,u as se,v as ce}from"./chunk-PJ5GV7IK.js";import{m as Y,r as ee,x as te}from"./chunk-EDUSMAQY.js";import{Ab as s,B as w,Bb as _,Cb as g,Da as z,Db as W,Eb as R,Mb as Z,Nb as D,Qa as v,Ra as p,Rb as $,Sa as u,Sb as V,Va as b,Wa as f,Wb as X,Xa as y,Ya as n,Za as t,_b as x,da as Q,eb as T,fb as I,ia as r,jb as A,k as U,lb as c,p as h,q as M,vb as N,xa as K,xb as L,yb as S,zb as i}from"./chunk-FFQQO7O7.js";import{S as G,sa as H}from"./chunk-ID4WHIPA.js";import"./chunk-QUA7QOZA.js";import"./chunk-C6Q5SG76.js";var he=()=>[],B=a=>({$implicit:a}),ge=(a,o)=>o.key,Me=(a,o)=>o.label+o.reportTypeId+o.reportId;function Ae(a,o){if(a&1&&(n(0,"section",9),i(1),t()),a&2){let e=c();r(),s(e.error())}}function we(a,o){a&1&&(n(0,"section",15),i(1," Showing a capped recent job diagnostic window after stale-job cleanup. Use this as an estimate, not the full billing ledger. "),t())}function ye(a,o){if(a&1&&i(0),a&2){let e=c(2),l=c(2);g(" ",l.formatNumber(e.failedWrites)," cleanup write",e.failedWrites===1?"":"s"," failed. ")}}function Se(a,o){if(a&1&&(n(0,"span",20),i(1),t()),a&2){let e=c(4);r(),s(e.archiveMessage())}}function Ee(a,o){if(a&1&&(n(0,"span",22),i(1),t()),a&2){let e=o.$implicit,l=c(4);r(),g("",e.key,": ",l.formatNumber(e.count))}}function Pe(a,o){if(a&1){let e=I();n(0,"section",19)(1,"div")(2,"p",3),i(3,"Cleanup Preview"),t(),n(4,"strong"),i(5),t(),n(6,"span"),i(7),p(8,ye,1,2),t(),p(9,Se,2,1,"span",20),t(),n(10,"div",21),b(11,Ee,2,2,"span",22,v().trackCleanupBucket,!0),n(13,"button",8),A("click",function(){h(e);let d=c(3);return M(d.archiveStaleJobs())}),i(14),t()()()}if(a&2){let e=c(),l=c(2);L("alert--error",e.failedWrites>0),r(5),g("",l.formatNumber(e.archiveableJobs||e.staleJobs||0)," stale job",(e.archiveableJobs||e.staleJobs||0)===1?"":"s"," can be archived."),r(2),W(" Viewing this page does not change job records. Active monitor/search-term jobs older than ",e.activeWindowMinutes," minutes, bid-suggestion jobs older than ",e.bidWindowMinutes||20," minutes, and Amazon-report waits older than ",e.waitingWindowHours," hours are separated from Active Now. "),r(),u(e.failedWrites>0?8:-1),r(),u(l.archiveMessage()?9:-1),r(2),f(e.byState||Z(11,he)),r(2),y("disabled",l.archiveLoading()||!(e.archiveableJobs||e.staleJobs)),r(),_(" ",l.archiveLoading()?"Archiving...":"Archive Stale Jobs"," ")}}function Oe(a,o){if(a&1&&p(0,Pe,15,12,"section",18),a&2){let e=o,l=c(2);u((e.archiveableJobs||e.staleJobs||0)>0||e.failedWrites>0||l.archiveMessage()?0:-1)}}function Le(a,o){a&1&&(n(0,"section",16),i(1," Fast account data is loaded. Open Waiting Jobs, Job Window, Cost Watch, or click Load Diagnostics to read the capped backend diagnostics window. "),t())}function ze(a,o){if(a&1&&(n(0,"div",44)(1,"div")(2,"strong"),i(3),t(),n(4,"span"),i(5),t()(),n(6,"div"),i(7),t(),n(8,"div"),i(9),t(),n(10,"div")(11,"span"),i(12),t()()()),a&2){let e=o.$implicit,l=c(5);r(3),s(e.label),r(2),s(e.schedule),r(2),s(e.dispatcherFunction),r(2),s(e.workerFunction),r(2),S(l.scheduleClass(e)),r(),s(e.enabled?e.lastStatus||"enabled":"disabled")}}function Ie(a,o){if(a&1&&(n(0,"div",41)(1,"div",43),i(2,"Configured Schedules"),t(),b(3,ze,13,7,"div",44,v().trackSchedule,!0),t()),a&2){let e=c().$implicit;r(3),f(e.schedules)}}function ke(a,o){a&1&&(n(0,"div",10),i(1,"Recent job diagnostics are loading for this account."),t())}function je(a,o){a&1&&T(0)}function Te(a,o){if(a&1&&z(0,je,1,0,"ng-container",45),a&2){let e=o.$implicit;c(5);let l=N(26);y("ngTemplateOutlet",l)("ngTemplateOutletContext",D(2,B,e))}}function Ne(a,o){if(a&1&&(n(0,"div",42),b(1,Te,1,4,"ng-container",null,v().trackJob,!0),t()),a&2){let e=c().$implicit;r(),f(e.jobs)}}function Re(a,o){a&1&&(n(0,"div",10),i(1,"No queued, running, or waiting jobs for this account."),t())}function De(a,o){if(a&1&&(n(0,"details",33)(1,"summary")(2,"div",34)(3,"strong"),i(4),t(),n(5,"span"),i(6),t()(),n(7,"div",35)(8,"span",36),i(9),t(),n(10,"span",22),i(11),t(),n(12,"span",22),i(13),t(),n(14,"span",37),i(15),t()()(),n(16,"div",38)(17,"div",39)(18,"div")(19,"span",40),i(20,"Login"),t(),n(21,"strong"),i(22),t(),n(23,"small"),i(24),t()(),n(25,"div")(26,"span",40),i(27,"Sync Settings"),t(),n(28,"strong"),i(29),t(),n(30,"small"),i(31),t()(),n(32,"div")(33,"span",40),i(34,"Amazon Report Pacing"),t(),n(35,"strong"),i(36),t(),n(37,"small"),i(38),t()()(),p(39,Ie,5,0,"div",41),p(40,ke,2,0,"div",10)(41,Ne,3,0,"div",42)(42,Re,2,0,"div",10),t()()),a&2){let e=o.$implicit,l=c(3);y("open",l.jobsLoaded()&&e.jobs.length>0),r(4),s(e.accountName||"Unnamed account"),r(2),g("",e.countryCode||"NA"," \xB7 Profile ",e.profileId),r(2),L("status--complete",e.isSelected),r(),s(e.isSelected?"Selected":"Available"),r(2),_("",l.jobsLoaded()?l.accountActiveJobCount(e):"Loading"," running/queued"),r(2),_("",l.jobsLoaded()?l.accountJobCount(e,"all"):"Loading"," loaded"),r(2),_("",l.jobsLoaded()?l.accountJobCount(e,"waiting"):"Loading"," waiting"),r(7),s((e.connection==null?null:e.connection.connectionLabel)||e.connectionId),r(2),s((e.connection==null?null:e.connection.amazonEmail)||"No email stored"),r(5),s(e.monitorSettings!=null&&e.monitorSettings.autoSyncEnabled?"Enabled":"Disabled"),r(2),g("Nightly ",(e.monitorSettings==null?null:e.monitorSettings.dailySyncHourLocal)??"n/a",":00 \xB7 pacing ",(e.monitorSettings==null?null:e.monitorSettings.reportPacingMs)??"n/a","ms"),r(5),s(e.reportPacing!=null&&e.reportPacing.nextAvailableAt?l.formatDate(e.reportPacing.nextAvailableAt):"No active reservation"),r(2),g("",(e.reportPacing==null?null:e.reportPacing.operation)||"Idle"," ",(e.reportPacing==null?null:e.reportPacing.reportTypeId)||""),r(),u(e.schedules.length?39:-1),r(),u(l.jobsLoaded()?e.jobs.length?41:42:40)}}
1function Je(a,o){a&1&&(n(0,"section",10),i(1,"No accounts match the current filter."),t())}function Fe(a,o){if(a&1){let e=I();n(0,"section",23)(1,"label")(2,"span"),i(3,"Filter"),t(),n(4,"select",24),A("ngModelChange",function(d){h(e);let m=c(2);return M(m.setFilter(d))}),n(5,"option",25),i(6,"Connected accounts"),t(),n(7,"option",26),i(8,"All accounts"),t(),n(9,"option",27),i(10,"Selected accounts"),t(),n(11,"option",28),i(12,"Accounts with running/queued jobs"),t(),n(13,"option",29),i(14,"Accounts waiting on Amazon"),t()()(),n(15,"label",30)(16,"span"),i(17,"Search"),t(),n(18,"input",31),A("ngModelChange",function(d){h(e);let m=c(2);return M(m.searchText.set(d))}),t()()(),n(19,"section",32),b(20,De,43,20,"details",33,v().trackAccount,!0,Je,2,0,"section",10),t()}if(a&2){let e=c(2);r(4),y("ngModel",e.accountFilter()),r(14),y("ngModel",e.searchText()),r(2),f(e.accounts())}}function Ue(a,o){a&1&&(n(0,"section",10),i(1,"Loading waiting jobs..."),t())}function We(a,o){a&1&&T(0)}function $e(a,o){if(a&1&&z(0,We,1,0,"ng-container",45),a&2){let e=o.$implicit;c(4);let l=N(26);y("ngTemplateOutlet",l)("ngTemplateOutletContext",D(2,B,e))}}function Ve(a,o){a&1&&(n(0,"section",10),i(1,"No jobs are waiting on Amazon reports right now."),t())}function Be(a,o){if(a&1&&(n(0,"section",42),b(1,$e,1,4,"ng-container",null,v().trackJob,!0,Ve,2,0,"section",10),t()),a&2){let e=c(3);r(),f(e.waitingJobs())}}function qe(a,o){if(a&1&&p(0,Ue,2,0,"section",10)(1,Be,4,1,"section",42),a&2){let e=c(2);u(!e.jobsLoaded()&&e.loading()?0:1)}}function Ge(a,o){if(a&1&&(n(0,"small"),i(1),t()),a&2){let e=c().$implicit;r(),_("Sweep ",e.sweepFunction)}}function He(a,o){if(a&1&&(n(0,"div",47)(1,"div")(2,"strong"),i(3),t(),n(4,"small"),i(5),t(),n(6,"small"),i(7),t()(),n(8,"div"),i(9),t(),n(10,"div"),i(11),t(),n(12,"div"),i(13),p(14,Ge,2,1,"small"),t(),n(15,"div")(16,"span"),i(17),t(),n(18,"small"),i(19),t()()()),a&2){let e=o.$implicit,l=c(3);r(3),s(e.label),r(2),s(e.schedule),r(2),_("Queues ",e.queuedCollection),r(2),s(e.connectionLabel||e.connectionId),r(2),s(e.dispatcherFunction),r(2),_(" ",e.workerFunction," "),r(),u(e.sweepFunction?14:-1),r(2),S(l.scheduleClass(e)),r(),s(e.enabled?e.lastStatus||"enabled":"disabled"),r(2),s(l.formatDate(e.lastQueuedAt))}}function Qe(a,o){if(a&1&&(n(0,"section",17)(1,"div",46)(2,"span"),i(3,"Schedule"),t(),n(4,"span"),i(5,"Amazon Login"),t(),n(6,"span"),i(7,"Dispatcher"),t(),n(8,"span"),i(9,"Worker"),t(),n(10,"span"),i(11,"Last Run"),t()(),b(12,He,20,11,"div",47,v(
1).trackSchedule,!0),t()),a&2){let e=c(2);r(12),f(e.schedules())}}function Ke(a,o){a&1&&(n(0,"section",10),i(1,"Loading recent job history..."),t())}function Ze(a,o){a&1&&T(0)}function Xe(a,o){if(a&1&&z(0,Ze,1,0,"ng-container",45),a&2){let e=o.$implicit;c(4);let l=N(26);y("ngTemplateOutlet",l)("ngTemplateOutletContext",D(2,B,e))}}function Ye(a,o){a&1&&(n(0,"section",10),i(1,"No jobs were found in the capped diagnostic window."),t())}function et(a,o){if(a&1&&(n(0,"section",42),b(1,Xe,1,4,"ng-container",null,v().trackJob,!0,Ye,2,0,"section",10),t()),a&2){let e=c(3);r(),f(e.loadedJobs())}}function tt(a,o){if(a&1&&p(0,Ke,2,0,"section",10)(1,et,4,1,"section",42),a&2){let e=c(2);u(!e.jobsLoaded()&&e.loading()?0:1)}}function nt(a,o){if(a&1&&(n(0,"section",10),i(1),t()),a&2){let e=c(3);r(),_(" ",e.loading()?"Loading cost diagnostics...":"Cost Watch loads active job diagnostics only when this tab is opened."," ")}}function it(a,o){if(a&1&&(n(0,"div",52)(1,"span"),i(2),t(),n(3,"strong"),i(4),t()()),a&2){let e=o.$implicit,l=c(5);r(2),g("",e.method," ",e.route),r(2),s(l.formatNumber(e.count))}}function ot(a,o){a&1&&(n(0,"div",10),i(1,"No planned Amazon API calls in active jobs."),t())}function at(a,o){if(a&1&&(n(0,"div",52)(1,"span"),i(2),t(),n(3,"strong"),i(4),t()()),a&2){let e=o.$implicit,l=c(5);r(2),s(e.label||e.key),r(2),s(l.formatNumber(e.count))}}function rt(a,o){a&1&&(n(0,"div",10),i(1,"No active source-level call plan."),t())}function lt(a,o){if(a&1&&(n(0,"section",48)(1,"div",49)(2,"p",3),i(3,"Amazon API Usage"),t(),n(4,"h2"),i(5,"Open job call plan"),t(),n(6,"p"),i(7),t()(),n(8,"div",50)(9,"div")(10,"span"),i(11,"Planned Amazon Calls"),t(),n(12,"strong"),i(13),t(),n(14,"small"),i(15,"Live Amazon routes in active jobs"),t()(),n(16,"div")(17,"span"),i(18,"Saved Data Reads"),t(),n(19,"strong"),i(20),t(),n(21,"small"),i(22,"Firestore / BigQuery instead of Amazon"),t()(),n(23,"div")(24,"span"),i(25,"Waiting Amazon"),t(),n(26,"strong"),i(27),t(),n(28,"small"),i(29,"Async reports pending"),t()(),n(30,"div")(31,"span"),i(32,"Actual Calls Loaded"),t(),n(33,"strong"),i(34),t(),n(35,"small"),i(36,"Requires Event Stream loaded"),t()()()(),n(37,"section",51)(38,"div")(39,"p",3),i(40,"Planned By Route"),t(),b(41,it,5,3,"div",52,v().trackApiUsageRow,!0,ot,2,0,"div",10),t(),n(44,"div")(45,"p",3),i(46,"Planned By Source"),t(),b(47,at,5,2,"div",52,v().trackApiUsageRow,!0,rt,2,0,"div",10),t()()),a&2){let e=o,l=c(4);r(7),s(e.caveat),r(6),s(l.formatNumber(e.totals.plannedAmazonCalls)),r(7),s(l.formatNumber(e.totals.savedDataReads)),r(7),s(l.formatNumber(e.totals.waitingOnAmazonJobs)),r(7),s(l.formatNumber(e.totals.actualAmazonCallsFromLoadedEvents)),r(7),f(l.apiRoutes()),r(6),f(l.apiSources())}}function dt(a,o){if(a&1&&(n(0,"div")(1,"span"),i(2,"Expected Today"),t(),n(3,"strong"),i(4),t(),n(5,"small"),i(6),t()(),n(7,"div")(8,"span"),i(9,"Expected Month"),t(),n(10,"strong"),i(11),t(),n(12,"small"),i(13),t()()),a&2){let e=o,l=c(6);r(4),s(l.formatNumber(e.estimatedDailyReads)),r(2),_("",l.formatUsd2(e.estimatedDailyGrossUsd)," baseline estimate"),r(5),s(l.formatNumber(e.estimatedMonthlyReads)),r(2),_("",l.formatUsd2(e.estimatedMonthlyGrossUsd)," before free-tier math")}}function st(a,o){if(a&1&&(n(0,"div",52)(1,"span")(2,"strong"),i(3),t(),n(4,"small"),i(5),t()(),n(6,"strong"),i(7),t()()),a&2){let e=o.$implicit,l=c(6);r(3),s(e.date),r(2),g("",l.formatNumber(e.jobsQueued)," queued / ",l.formatNumber(e.jobsProcessed)," processed"),r(2),_("",l.formatNumber(e.estimatedReads)," reads")}}function ct(a,o){a&1&&(n(0,"div",10),i(1,"No runtime usage ledger docs have been recorded yet."),t())}function mt(a,o){if(a&1&&(n(0,"div",52)(1,"span")(2,"strong"),i(3),t(),n(4,"small"),i(5),t()(),n(6,"strong"),i(7),t()()),a&2){let e=o.$implicit,l=c(6);r(3),s(e.lane),r(2),s(e.lastActor||"No actor recorded"),r(2),_("",l.formatNumber(e.estimatedReads)," reads")}}function pt(a,o){a&1&&(n(0,"div",10),i(1,"No lane-level runtime usage has been recorded yet."),t())}function ut(a,o){if(a&1&&(n(0,"div",52)(1,"span")(2,"strong"),i(3),t(),n(4,"small"),i(5),t()(),n(6,"strong"),i(7),t()()),a&2){let e=o.$implicit,l=c(7);r(3),s(e.lane),r(2),s(e.notes.join(", ")),r(2),_("",l.formatNumber(e.estimatedReads)," reads/day")}}function _t(a,o){if(a&1&&(n(0,"div",10),i(1),t()),a&2){let e=c();r(),s(e.caveat)}}function gt(a,o){if(a&1&&(n(0,"div")(1,"p",3),i(2,"Expected By Lane"),t(),b(3,ut,8,3,"div",52,v().trackExpectedRuntimeLane,!0,_t,2,1,"div",10),t()),a&2){let e=c(6);r(3),f(e.expectedRuntimeLanes())}}function xt(a,o){if(a&1&&(n(0,"div",52)(1,"span")(2,"strong"),i(3),t(),n(4,"small"),i(5),t()(),n(6,"strong"),i(7),t()()),a&2){let e=o.$implicit,l=c(7);r(3),s(e.lane),r(2),g("",l.formatNumber(e.averageDailyReads)," avg/day vs ",l.formatNumber(e.expectedDailyReads)," expected/day"),r(),S(l.costVarianceClass(e.ratio)),r(),s(l.formatRatio(e.ratio))}}
1function Ct(a,o){if(a&1&&(n(0,"div")(1,"p",3),i(2,"Lane Variance"),t(),b(3,xt,8,6,"div",52,v().trackRuntimeLaneVariance,!0),t()),a&2){let e=c(6);r(3),f(e.runtimeLaneVariance())}}function bt(a,o){if(a&1&&(n(0,"section",61)(1,"div",49)(2,"p",3),i(3,"Runtime Usage Ledger"),t(),n(4,"h2"),i(5,"Recorded backend estimate"),t(),n(6,"p"),i(7),t(),n(8,"small"),i(9," Latest recorded day: "),n(10,"strong"),i(11),t()()(),n(12,"div",50)(13,"div")(14,"span"),i(15,"Latest Reads"),t(),n(16,"strong"),i(17),t(),n(18,"small"),i(19),t()(),p(20,dt,14,4),n(21,"div")(22,"span"),i(23,"Jobs Queued / Done"),t(),n(24,"strong"),i(25),t(),n(26,"small"),i(27),t()(),n(28,"div")(29,"span"),i(30,"Recorded Window"),t(),n(31,"strong"),i(32),t(),n(33,"small"),i(34),t()(),n(35,"div")(36,"span"),i(37,"Projected Monthly"),t(),n(38,"strong"),i(39),t(),n(40,"small"),i(41),t()()()(),n(42,"section",62)(43,"div")(44,"p",3),i(45,"Runtime By Day"),t(),b(46,st,8,4,"div",52,v().trackRuntimeDay,!0,ct,2,0,"div",10),t(),n(49,"div")(50,"p",3),i(51,"Runtime By Lane"),t(),b(52,mt,8,3,"div",52,v().trackRuntimeLane,!0,pt,2,0,"div",10),t(),p(55,gt,6,1,"div"),p(56,Ct,5,0,"div"),t()),a&2){let e,l,d=o,m=c(5);r(7),s(d.caveat),r(4),s((d.latest==null?null:d.latest.date)||"No runtime usage recorded yet"),r(6),s(m.formatNumber((d.latest==null?null:d.latest.estimatedReads)||0)),r(2),g("",m.formatNumber((d.latest==null?null:d.latest.estimatedWrites)||0)," writes on ",(d.latest==null?null:d.latest.date)||"n/a"),r(),u((e=m.expectedRuntime())?20:-1,e),r(5),g("",m.formatNumber((d.latest==null?null:d.latest.jobsQueued)||0)," / ",m.formatNumber((d.latest==null?null:d.latest.jobsProcessed)||0)),r(2),_("",m.formatNumber((d.latest==null?null:d.latest.amazonReportsCreated)||0)," reports created"),r(5),s(m.formatNumber(d.totals.estimatedReads)),r(2),g("",d.totals.days," day",d.totals.days===1?"":"s"," loaded"),r(5),s(m.formatUsd2(d.totals.projectedMonthlyGrossUsd)),r(2),_("",m.formatUsd2(d.totals.projectedMonthlyGrossUsdPerA
1ccount)," per account"),r(5),f(m.runtimeDays()),r(6),f(m.runtimeLanes()),r(3),u((l=m.expectedRuntime())?55:-1,l),r(),u(m.runtimeLaneVariance().length?56:-1)}}function ft(a,o){if(a&1&&(n(0,"section",63)(1,"div",64)(2,"span",40),i(3,"Current Estimated Monthly Bill"),t(),n(4,"strong"),i(5),t(),n(6,"small"),i(7),t()(),n(8,"div")(9,"span"),i(10,"Estimated Monthly Bill"),t(),n(11,"strong"),i(12),t(),n(13,"small"),i(14,"Expected schedule baseline before free-tier math."),t()(),n(15,"div")(16,"span"),i(17,"Could Cost Money Now"),t(),n(18,"strong"),i(19),t(),n(20,"small"),i(21),t()(),n(22,"div")(23,"span"),i(24,"Waiting / Paused"),t(),n(25,"strong"),i(26),t(),n(27,"small"),i(28),t()(),n(29,"div")(30,"span"),i(31,"Stale Records Only"),t(),n(32,"strong"),i(33),t(),n(34,"small"),i(35,"Can be archived; these should not dispatch after workers re-read status."),t()(),n(36,"div")(37,"span"),i(38,"Reads Remaining Today"),t(),n(39,"strong"),i(40),t(),n(41,"small"),i(42,"Before runtime guardrail pause, when a daily cap is configured."),t()()(),n(43,"section",65)(44,"div",64)(45,"span",40),i(46,"Current Estimated Monthly Bill"),t(),n(47,"strong"),i(48),t(),n(49,"small"),i(50),t()(),n(51,"div")(52,"span"),i(53,"Per Account"),t(),n(54,"strong"),i(55),t(),n(56,"small"),i(57),t()(),n(58,"div")(59,"span"),i(60,"Per Loaded Job"),t(),n(61,"strong"),i(62),t(),n(63,"small"),i(64),t()(),n(65,"div")(66,"span"),i(67,"Daily Run Rate"),t(),n(68,"strong"),i(69),t(),n(70,"small"),i(71),t()(),n(72,"div")(73,"span"),i(74,"Running / Queued"),t(),n(75,"strong"),i(76),t(),n(77,"small"),i(78),t()(),n(79,"div")(80,"span"),i(81,"Paused / Waiting"),t(),n(82,"strong"),i(83),t(),n(84,"small"),i(85),t()(),n(86,"div")(87,"span"),i(88,"Expected Reads"),t(),n(89,"strong"),i(90),t(),n(91,"small"),i(92),t()(),n(93,"div")(94,"span"),i(95,"Read Run Rate"),t(),n(96,"strong"),i(97),t(),n(98,"small"),i(99),t()(),n(100,"div")(101,"span"),i(102,"Actual vs Expected"),t(),n(103,"strong"),i(104),t(),n(105,"small"),i(106),t()(),n(107,"div")(108,"span"),i(109,"Monthly Reads / Account"),t(),n(110,"strong"),i(111),t(),n(112,"small"),i(113),t()()()),a&2){let e=o,l=c(5);r(5),s(l.formatUsd2(e.currentEstimatedMonthlyBill)),r(2),_("",e.sourceLabel," based on the loaded runtime window."),r(5),s(l.formatUsd2(e.estimatedMonthlyBill)),r(7),s(l.formatNumber(e.activeJobs)),r(2),_("Queued/running worker job",e.activeJobs===1?"":"s"," that can still dispatch."),r(5),g("",l.formatNumber(e.waitingJobs)," / ",l.formatNumber(e.pausedJobs)),r(2),g("",l.formatNumber(e.dueWaitingJobs)," waiting job",e.dueWaitingJobs===1?"":"s"," due to poll; paused jobs are held by guardrails."),r(5),s(l.formatNumber(e.staleArchiveableJobs)),r(7),s(e.estimatedReadsRemainingToday==null?"-":l.formatNumber(e.estimatedReadsRemainingToday)),r(8),s(l.formatUsd2(e.projectedMonthlyGrossUsd)),r(2),g("",e.sourceLabel," - ",l.formatUsd2(e.projectedMonthlyAfterFreeTierUsd)," after Firestore free-tier math in this estimate"),r(5),s(l.formatUsd2(e.projectedMonthlyGrossUsdPerA
1ccount)),r(2),g("",e.accountCount," account",e.accountCount===1?"":"s"," in divisor"),r(5),s(l.formatUsd2(e.estimatedGrossUsdPerLoadedJob)),r(2),g("",e.loadedJobs," recent job",e.loadedJobs===1?"":"s"," loaded"),r(5),s(l.formatUsd2(e.projectedDailyGrossUsd)),r(2),_("",l.formatNumber(e.diagnosticReadDocs)," docs read to build this view"),r(5),s(l.formatNumber(e.activeJobs)),r(2),g("",l.formatNumber(e.openJobs)," open / ",l.formatNumber(e.loadedJobs)," loaded"),r(5),s(l.formatNumber(e.pausedJobs+e.waitingJobs)),r(2),g("",l.formatNumber(e.pausedJobs)," paused / ",l.formatNumber(e.waitingJobs)," waiting Amazon"),r(5),s(l.formatNumber(e.expectedDailyReads)),r(2),_("",l.formatNumber(e.expectedMonthlyReads)," expected per month"),r(5),s(l.formatNumber(e.projectedDailyReads)),r(2),_("",l.formatNumber(e.projectedMonthlyReads)," projected per month"),r(),S(l.costVarianceClass(e.readVarianceRatio)),r(4),s(l.formatRatio(e.readVarianceRatio)),r(2),_("",e.readVarianceLabel," based on current run rate"),r(5),s(l.formatNumber(e.projectedMonthlyReadsPerAccount)),r(2),_("Projected from ",e.sourceLabel)}}function vt(a,o){if(a&1&&(n(0,"small"),i(1),t()),a&2){let e=c().$implicit,l=c(5);r(),_("",l.formatNumber(e.avoidedEntitySnapshotWrites)," avoided")}}function ht(a,o){if(a&1&&(n(0,"div",56)(1,"div")(2,"strong"),i(3),t()(),n(4,"div")(5,"strong"),i(6),t(),n(7,"small"),i(8),t()(),n(9,"div"),i(10),t(),n(11,"div"),i(12),p(13,vt,2,1,"small"),t(),n(14,"div")(15,"strong"),i(16),t(),n(17,"small"),i(18),t()(),n(19,"div"),i(20),t(),n(21,"div"),i(22),t()()),a&2){let e=o.$implicit,l=c(5);r(3),s(e.date),r(3),s(l.formatUsd(e.estimatedGrossUsd)),r(2),_("",l.formatUsd(e.estimatedAfterFreeTierUsd)," after free tier"),r(2),s(l.formatNumber(e.estimatedReads)),r(2),_(" ",l.formatNumber(e.estimatedWrites)," "),r(),u(e.avoidedEntitySnapshotWrites?13:-1),r(3),s(e.jobs),r(2),R("M ",e.monitorJobs," / B ",e.monitorBackfillJobs," / Bid ",e.bidSuggestionJobs," / ST ",e.searchTermJobs),r(2),s(l.formatNumber(e.estimatedRows)),r(2),s(e.notes.length?e.notes.join(" | "):"-")}}function Mt(a,o){a&1&&(n(0,"section",10),i(1,"No loaded jobs were found for the reconstructed cost estimate."),t())}function At(a,o){if(a&1&&(n(0,"div",52)(1,"span"),i(2),t(),n(3,"strong"),i(4),t()()),a&2){let e=o.$implicit,l=c(5);r(2),s(e.collection),r(2),s(l.formatNumber(e.documentsRead))}}function wt(a,o){if(a&1&&(n(0,"div")(1,"strong"),i(2),t(),n(3,"span"),i(4),t()()),a&2){let e=o.$implicit,l=c(5);S(l.costSeverityClass(e.severity)),r(2),s(e.label),r(2),s(e.detail)}}function yt(a,o){a&1&&(n(0,"div",10),i(1,"No obvious Firestore cost hotspots in the active job window."),t())}function St(a,o){if(a&1&&(n(0,"div",60)(1,"div")(2,"strong"),i(3),t(),n(4,"small"),i(5),t()(),n(6,"div"),i(7),t(),n(8,"div"),i(9),t(),n(10,"div"),i(11),t(),n(12,"div")(13,"strong"),i(14),t(),n(15,"small"),i(16),t()()()),a&2){let e=o.$implicit,l=c(5);
1r(3),s(e.accountName||e.profileId||"Unknown account"),r(2),g("",e.countryCode||"NA"," - ",e.profileId),r(2),s(l.formatNumber(e.jobs)),r(2),s(l.formatNumber(e.estimatedReads)),r(2),s(l.formatNumber(e.estimatedWrites)),r(3),s(l.formatUsd(e.estimatedGrossUsd)),r(2),_("",l.formatUsd(e.estimatedAfterFreeTierUsd)," after free tier")}}function Et(a,o){a&1&&(n(0,"section",10),i(1,"No account-level cost rows in the loaded job window."),t())}function Pt(a,o){if(a&1&&(p(0,bt,57,18),p(1,ft,114,38),n(2,"section",48)(3,"div",49)(4,"p",3),i(5,"Firestore Cost Watch"),t(),n(6,"h2"),i(7,"Estimated backend Firestore pressure"),t(),n(8,"p"),i(9),t(),n(10,"small"),i(11),n(12,"a",53),i(13,"Google Firestore pricing"),t(),i(14,". "),t()(),n(15,"div",50)(16,"div")(17,"span"),i(18,"Estimated Reads"),t(),n(19,"strong"),i(20),t(),n(21,"small"),i(22),t()(),n(23,"div")(24,"span"),i(25,"Estimated Writes"),t(),n(26,"strong"),i(27),t(),n(28,"small"),i(29),t()(),n(30,"div")(31,"span"),i(32,"Gross Estimate"),t(),n(33,"strong"),i(34),t(),n(35,"small"),i(36,"Before daily free quota"),t()(),n(37,"div")(38,"span"),i(39,"After Free Tier"),t(),n(40,"strong"),i(41),t(),n(42,"small"),i(43),t()()()(),n(44,"section",54)(45,"div",55)(46,"span"),i(47,"Date"),t(),n(48,"span"),i(49,"Est. Cost"),t(),n(50,"span"),i(51,"Reads"),t(),n(52,"span"),i(53,"Writes"),t(),n(54,"span"),i(55,"Jobs"),t(),n(56,"span"),i(57,"Rows"),t(),n(58,"span"),i(59,"Notes"),t()(),b(60,ht,23,13,"div",56,v().trackCostDay,!0,Mt,2,0,"section",10),t(),n(63,"section",51)(64,"div")(65,"p",3),i(66,"Collections Read For This View"),t(),b(67,At,5,2,"div",52,v().trackCostCollection,!0),t(),n(69,"div")(70,"p",3),i(71,"Likely Hotspots"),t(),b(72,wt,5,4,"div",57,v().trackCostHotspot,!0,yt,2,0,"div",10),t()(),n(75,"section",58)(76,"div",59)(77,"span"),i(78,"Account"),t(),n(79,"span"),i(80,"Jobs"),t(),n(81,"span"),i(82,"Reads"),t(),n(83,"span"),i(84,"Writes"),t(),n(85,"span"),i(86,"Est. Cost"),t()(),b(87,St,17,8,"div",60,ge,!1,Et,2,0,"section",10),t()),a&2){let e,l,d=o,m=c(4);u((e=m.runtimeUsage())?0:-1,e),r(),u((l=m.costDashboard())?1:-1,l),r(8),s(d.caveat),r(2),_(" Pricing basis: ",d.pricing.region," from "),r(),y("href",d.pricing.source,Q),r(8),s(m.formatNumber(d.totals.estimatedReads)),r(2),_("Diagnostic view read ",m.formatNumber(d.diagnosticRead.documentsRead)," docs"),r(5),s(m.formatNumber(d.totals.estimatedWrites)),r(2),_("",m.formatNumber(d.totals.avoidedEntitySnapshotWrites)," snapshot writes avoided"),r(5),s(m.formatUsd(d.totals.estimatedGrossUsd)),r(7),s(m.formatUsd(d.totals.estimatedAfterFreeTierUsd)),r(2),g("",d.totals.days," day",d.totals.days===1?"":"s"," in view"),r(17),f(m.costDays()),r(7),f(m.costCollections()),r(5),f(m.costHotspots()),r(15),f(m.costAccounts())}}function Ot(a,o){a&1&&(n(0,"section",10),i(1,"No Firestore cost diagnostics are available from this backend build yet."),t())}function Lt(a,o){if(a&1&&(p(0,lt,50,7),p(1,Pt,90,16)(2,Ot,2,0,"section",10)),a&2){let e,l,d=c(3);u((e=d.amazonApiUsage())?0:-1,e),r(),u((l=d.firestoreCost())?1:2,l)}}function zt(a,o){if(a&1&&p(0,nt,2,1,"section",10)(1,Lt,3,2),a&2){let e=c(2);u(e.jobsLoaded()?1:0)}}function It(a,o){a&1&&(n(0,"section",10),i(1,"Loading event stream..."),t())}function kt(a,o){if(a&1&&(n(0,"span"),i(1),t()),a&2){let e=c().$implicit,l=c(4);S(l.statusClass(e.status)),r(),s(l.statusLabel(e.status))}}function jt(a,o){if(a&1&&(n(0,"code"),i(1),t()),a&2){let e=c().$implicit;r(),g("",e.amazonCall.method," ",e.amazonCall.route)}}function Tt(a,o){if(a&1&&(n(0,"code"),i(1),t()),a&2){let e=c().$implicit;r(),g("",e.firestoreWrite.operation," ",e.firestoreWrite.path)}}function Nt(a,o){if(a&1&&(n(0,"article",67)(1,"div",68),i(2),t(),n(3,"div")(4,"strong"),i(5),t(),n(6,"p",69),i(7),t(),n(8,"span"),i(9),t(),n(10,"small"),i(11),t()(),n(12,"div"),p(13,kt,2,3,"span",57),p(14,jt,2,2,"code"),p(15,Tt,2,2,"code"),t()()),a&2){let e=o.$implicit,l=c(4);r(2),s(l.formatDate(e.createdAt)),r(3),s(e.eventType),r(2),s(l.eventIntent(e.eventType)),r(2),s(e.summary||"No summary recorded"),r(2),R("",e.actor," \xB7 ",e.jobKind||"system"," \xB7 ",e.connectionId||"no connection"," / ",e.profileId||"no profile"),r(2),u(e.status?13:-1),r(),u(e.amazonCall?14:-1),r(),u(e.firestoreWrite?15:-1)}}function Rt(a,o){a&1&&(n(0,"section",10),i(1,"No append-only audit events have been recorded yet. New jobs will populate this stream after the function deploy."),t())}function Dt(a,o){if(a&1&&(n(0,"section",66),b(1,Nt,16,11,"article",67,v().trackEvent,!0,Rt,2,0,"section",10),t()),a&2){let e=c(3);r(),f(e.events())}}function Jt(a,o){if(a&1&&p(0,It,2,0,"section",10)(1,Dt,4,1,"section",66),a&2){let e=c(2);u(!e.eventsLoaded()&&e.loading()?0:1)}}function Ft(a,o){if(a&1&&(n(0,"section",15),i(1),t()),a&2){let e=c();r(),g(" ",e.orphanJobs.length," active job",e.orphanJobs.length===1?"":"s"," are not tied to a cached account record. ")}}function Ut(a,o){if(a&1){let e=I();n(0,"section",11)(1,"div")(2,"span"),i(3,"Connections"),t(),n(4,"strong"),i(5),t()(),n(6,"div")(7,"span"),i(8,"Accounts"),t(),n(9,"strong"),i(10),t()(),n(11,"div")(12,"span"),i(13,"Selected"),t(),n(14,"strong"),i(15),t()(),n(16,"div")(17,"span"),i(18,"Running / Queued"),t(),n(19,"strong"),i(20),t()(),n(21,"div")(22,"span"),i(23,"Open Jobs"),t(),n(24,"strong"),i(25),t()(),n(26,"div")(27,"span"),i(28,"Waiting Amazon"),t(),n(29,"strong"),i(30),t()(),n(31,"div")(32,"span"),i(33,"Guardrail Paused"),t(),n(34,"strong"),i(35),t()(),n(36,"div")(37,"span"),i(38,"Loaded Window"),t(),n(39,"strong"),i(40),t()(),n(41,"div")(42,"span"),i(43,"Stale / Archiveable"),t(),n(44,"strong"),i(45),t()(),n(46,"div")(47,"span"),i(48,"Generated"),t(),n(49,"strong",12),i(50),t()()(),n(51,"nav",13)(52,"button",14),A("click",function(){h(e);let d=c();return M(d.setTab("accounts"))}),i(53,"Accounts"),t(),n(54,"button",14),A("click",function(){h(e);let d=c();return M(d.setTab("waiting"))}),i(55,"Waiting Jobs"),t(),n(56,"button",14),A("click",function(){h(e);let d=c();return M(d.setTab("schedules"))}),i(57,"Schedules"),t(),n(58,"button",14),A("click",function(){h(e);let d=c();return M(d.setTab("jobs"))}),i(59,"Job Window"),t(),n(60,"button",14),A("click",function(){h(e);let d=c();return M(d.setTab("costs"))}),i(61,"Cost Watch"),t(),n(62,"button",14),A("click",function(){h(e);let d=c();return M(d.setTab("events"))}
1),i(63,"Event Stream"),t()(),p(64,we,2,0,"section",15),p(65,Oe,1,1),p(66,Le,2,0,"section",16),p(67,Fe,23,3),p(68,qe,2,1),p(69,Qe,14,0,"section",17),p(70,tt,2,1),p(71,zt,2,1),p(72,Jt,2,1),p(73,Ft,2,2,"section",15)}if(a&2){let e,l=o,d=c();r(5),s(l.summary.connections),r(5),s(l.summary.accounts),r(5),s(l.summary.selectedAccounts),r(5),s(d.jobsLoaded()?d.formatNumber(l.summary.activeJobs):d.loading()?"Loading...":"Not loaded"),r(5),s(d.jobsLoaded()?d.formatNumber(l.summary.openJobs||l.summary.activeJobs):d.loading()?"Loading...":"Not loaded"),r(5),s(d.jobsLoaded()?d.formatNumber(l.summary.waitingOnAmazonJobs):d.loading()?"Loading...":"Not loaded"),r(5),s(d.jobsLoaded()?d.formatNumber(l.summary.pausedByGuardrailJobs||0):d.loading()?"Loading...":"Not loaded"),r(5),s(d.jobsLoaded()?d.formatNumber(l.summary.loadedJobs||l.jobs.length):d.loading()?"Loading...":"Not loaded"),r(5),s(d.jobsLoaded()?d.formatNumber(l.summary.staleArchiveableJobs||(l.cleanup==null?null:l.cleanup.archiveableJobs)||0):d.loading()?"Loading...":"Not loaded"),r(5),s(d.formatDate(l.generatedAt)),r(2),L("active",d.activeTab()==="accounts"),r(2),L("active",d.activeTab()==="waiting"),r(2),L("active",d.activeTab()==="schedules"),r(2),L("active",d.activeTab()==="jobs"),r(2),L("active",d.activeTab()==="costs"),r(2),L("active",d.activeTab()==="events"),r(2),u(d.jobWindowCapped()?64:-1),r(),u((e=d.jobsLoaded()&&d.staleCleanup())?65:-1,e),r(),u(d.jobsLoaded()?-1:66),r(),u(d.activeTab()==="accounts"?67:-1),r(),u(d.activeTab()==="waiting"?68:-1),r(),u(d.activeTab()==="schedules"?69:-1),r(),u(d.activeTab()==="jobs"?70:-1),r(),u(d.activeTab()==="costs"?71:-1),r(),u(d.activeTab()==="events"?72:-1),r(),u(l.orphanJobs.length?73:-1)}}function Wt(a,o){a&1&&(n(0,"section",10),i(1,"Loading audit data..."),t())}function $t(a,o){if(a&1&&(n(0,"span"),i(1),t()),a&2){let e=c().$implicit,l=c();S(l.cleanupStateClass(e.cleanup.state)),r(),s(l.cleanupStateLabel(e.cleanup.state))}}function Vt(a,o){if(a&1&&(n(0,"small"),i(1),t()),a&2){let e=c().$implicit,l=c();r(),_("Next report poll ",l.formatDate(e.nextReportPollAt))}}function Bt(a,o){if(a&1&&(n(0,"small"),i(1),t()),a&2){let e=c().$implicit,l=c();r(),g("",l.formatNumber(e.cleanup.ageMinutes)," min old - ",e.cleanup.reason)}}function qt(a,o){if(a&1&&(n(0,"code"),i(1),t()),a&2){let e=c().$implicit;r(),s(e.reportTypeId)}}function Gt(a,o){if(a&1&&(n(0,"code"),i(1),t()),a&2){let e=c().$implicit;r(),s(e.reportId)}}function Ht(a,o){if(a&1&&(n(0,"div",76)(1,"strong"),i(2),t(),n(3,"span"),i(4),t(),p(5,qt,2,1,"code"),p(6,Gt,2,1,"code"),t()),a&2){let e=o.$implicit;r(2),s(e.label),r(2),g("",e.method," ",e.route),r(),u(e.reportTypeId?5:-1),r(),u(e.reportId?6:-1)}}function Qt(a,o){if(a&1&&(n(0,"code"),i(1),t()),a&2){let e=o.$implicit;r(),g("",e.key,": ",e.value)}}function Kt(a,o){if(a&1&&(n(0,"div",77)(1,"span",40),i(2,"Pending Reports"),t(),b(3,Qt,2,2,"code",null,ge),t()),a&2){let e=c().$implicit,l=c();r(3),f(l.pendingReportEntries(e))}}function Zt(a,o){if(a&1&&(n(0,"details",78)(1,"summary"),i(2,"Report status payload"),t(),n(3,"pre"),i(4),$(5,"json"),t()()),a&2){let e=c().$implicit;r(4),s(V(5,1,e.reportStatuses))}}function Xt(a,o){if(a&1&&(n(0,"div",9),i(1),t()),a&2){let e=c().$implicit;r(),s(e.error)}}function Yt(a,o){if(a&1&&(n(0,"code"),i(1),t()),a&2){let e=c().$implicit;r(),R("",e.amazonCall.method," ",e.amazonCall.route," ",e.amazonCall.reportTypeId||""," ",e.amazonCall.reportId||"")}}function en(a,o){if(a&1&&(n(0,"code"),i(1),t()),a&2){let e=c().$implicit;r(),g("",e.firestoreWrite.operation," ",e.firestoreWrite.path||"")}}function tn(a,o){if(a&1&&(n(0,"span"),i(1),t()),a&2){let e=c().$implicit,l=c(2);S(l.statusClass(e.status)),r(),s(l.statusLabel(e.status))}}function nn(a,o){if(a&1&&(n(0,"details",83)(1,"summary"),i(2,"Payload"),t(),n(3,"pre"),i(4),$(5,"json"),t()()),a&2){let e=c().$implicit,l=c(2);r(4),s(V(5,1,l.stepDetail(e)))}}function on(a,o){if(a&1&&(n(0,"div",81)(1,"div",82),i(2),t(),n(3,"div")(4,"strong"),i(5),t(),n(6,"p",69),i(7),t(),n(8,"span"),i(9),t(),n(10,"small"),i(11),t(),p(12,Yt,2,4,"code"),p(13,en,2,2,"code"),t(),n(14,"div"),p(15,tn,2,3,"span",57),p(16,nn,6,3,"details",83),t()()),a&2){let e=o.$implicit,l=c(2);r(2),s(e.sequence),r(3),s(e.eventType),r(2),s(l.eventIntent(e.eventType)),r(2),s(e.summary),r(2),W("",l.formatDate(e.at)," \xB7 ",e.actor," \xB7 ",e.source),r(),u(e.amazonCall?12:-1),r(),u(e.firestoreWrite?13:-1),r(2),u(e.status?15:-1),r(),u(l.stepDetail(e)?16:-1)}}function an(a,o){a&1&&(n(0,"div",10),i(1,"No steps available for this job yet."),t())}function rn(a,o){if(a&1&&(n(0,"article",70)(1,"div",71)(2,"div")(3,"span",72),i(4),t(),n(5,"strong"),i(6),t(),n(7,"small"),i(8),t()(),n(9,"div",73)(10,"span"),i(11),t(),p(12,$t,2,3,"span",57),t()(),n(13,"div",74)(14,"div")(15,"span",40),i(16,"Pickup"),t(),n(17,"strong"),i(18),t(),n(19,"small"),i(20),t()(),n(21,"div")(22,"span",40),i(23,"Trigger"),t(),n(24,"strong"),i(25),t()(),n(26,"div")(27,"span",40),i(28,"A
1ctivity"),t(),n(29,"strong"),i(30),t(),n(31,"small"),i(32),t(),p(33,Vt,2,1,"small"),p(34,Bt,2,2,"small"),t()(),n(35,"div",75)(36,"span",40),i(37,"Amazon / Data Calls"),t(),b(38,Ht,7,5,"div",76,Me),t(),p(40,Kt,5,0,"div",77),p(41,Zt,6,3,"details",78),p(42,Xt,2,1,"div",9),n(43,"details",79)(44,"summary"),i(45),t(),n(46,"div",80),b(47,on,17,11,"div",81,v().trackStep,!0,an,2,0,"div",10),t()()()),a&2){let e=o.$implicit,l=c();r(4),s(l.jobKindLabel(e.kind)),r(2),s(e.source||e.kind),r(2),g("",l.jobDateLabel(e)," \xB7 ",l.shortId(e.jobId)),r(2),S(l.statusClass(e.status)),r(),s(l.statusLabel(e.status)),r(),u(e.cleanup?12:-1),r(6),s(e.pickupFunction),r(2),s(e.pickupCadence),r(5),s(e.trigger),r(5),s(l.formatDate(e.updatedAt||e.createdAt)),r(2),_("Started ",l.formatDate(e.startedAt)),r(),u(e.nextReportPollAt?33:-1),r(),u((e.cleanup==null?null:e.cleanup.ageMinutes)!=null?34:-1),r(4),f(e.amazonCalls),r(2),u(l.pendingReportEntries(e).length?40:-1),r(),u(l.reportStatusEntries(e).length?41:-1),r(),u(e.error?42:-1),r(3),_("Execution steps (",e.steps.length,")"),r(2),f(e.steps)}}var ue={amazon_entity_batch_finished:"Confirms an Amazon entity batch finished and records how much usable account structure was returned.",amazon_entity_batch_started:"Starts pulling account structure from Amazon, such as campaigns, ad groups, keywords, targets, ads, portfolios, and budgets.",amazon_report_attempt_started:"Starts or resumes an Amazon async report request so the system can collect performance data for the requested date.",amazon_report_completed:"Confirms Amazon finished a report and that the system downloaded and parsed the report rows.",amazon_report_failed:"Records that Amazon rejected, failed, or could not complete the report request.",amazon_report_pending:"Records that Amazon accepted the report request but has not finished preparing the file yet.",amazon_report_status_checked:"Checks Amazon to see whether a previously requested async report is ready to download.",amazon_search_term_report_create_started:"Starts creating a search-term report in Amazon for the account and date being backed up.",amazon_search_term_report_created:"Records the Amazon report ID returned after Amazon accepted the search-term report request.",amazon_search_term_report_downloaded:"Confirms the search-term report file was downloaded and parsed into rows.",bid_suggestions_build_started:"Begins calculating bid recommendations from stored monitor facts and search-term history.",cloud_task_enqueue_failed:"Tried to hand this job to Cloud Tasks, but the task could not be queued. The job remains visible for retry or review.",cloud_task_enqueued:"Hands the job to Cloud Tasks so the heavy Amazon work runs in the background instead of inside the UI request or Firestore trigger.",firestore_bid_suggestions_cache_written:"Writes the calculated bid suggestions into Firestore cache documents and row chunks for the UI to read.",firestore_daily_fact_written:"Writes the account daily performance snapshot used by monitor views, bid suggestions, and diagnostics.",firestore_entity_snapshot_written:"Writes the latest campaign, ad group, keyword, product target, and ad structure snapshot into Firestore.",firestore_monitor_profile_written:"Updates the monitor profile cache so the UI can load the latest account state quickly.",job_checked:"Records that a waiting job was inspected again to decide whether it can continue.",job_completed:"Marks the job as finished and records its final counts, files, or cache output.",job_created:"Creates a Firestore job document so the matching backend worker can pick it up.",job_failed:"Marks the job as failed and records the error message for debugging.",job_reused:"Avoids creating a duplicate job because an existing queued, running, waiting, or completed job already covers the same work.",job_resumed:"Moves a waiting or stale job back into active processing so it can continue after Amazon finishes a report.",job_started:"Shows that the backend worker picked up the Firestore job and began processing it.",job_still_waiting:"Keeps the job paused because Amazon still has not finished all required async reports.",job_waiting_on_amazon:"Reconstructs that the job paused because it was waiting for Amazon to finish one or more reports.",job_waiting_on_report:"Pauses the job while Amazon prepares async report files, so a scheduled sweep can resume it later.",job_deferred_by_report_pacing:"Re-queues the job because Amazon report API pacing is backed up; a delayed Cloud Task will retry later.",monitor_run_completed:"Finishes a monitor sync run after writing the account snapshot and daily facts.",monitor_run_created:"Starts the internal monitor sync run for a specific account and reporting date.",monitor_run_failed:"Records that the monitor sync run failed before it could complete all expected writes.",monitor_run_waiting_on_report:"Stops the monitor run temporarily because required Amazon reports are still pending.",queued_job_sweep_pickup:"Finds an old queued, waiting, or stale-running job and re-enqueues it as a Cloud Task for another attempt.",report_sweep_deferred:"Leaves the job waiting because the report sweep hit pacing or time-budget limits and should check again later.",report_sweep_job_failed:"Records that the scheduled report sweep could not resume or complete a waiting monitor job.",resume_job_created:"Creates a follow-up Firestore job so a waiting Amazon report can continue through the normal worker path.",scheduler_connection_processed:"Records what the scheduler decided for this Amazon connection, including how many jobs it queued or reused.",scheduler_connection_started:"Shows that a scheduled backend task began evaluating this Amazon connection.",storage_search_term_backup_written:"Writes the downloaded search-term rows to backup storage for later eff
1iciency and bid analysis.",stale_job_restarted:"Restarts a job whose previous running marker went stale, usually after a timeout or interrupted worker."};function ln(a){return a.jobs.filter(o=>o.cleanup?.archiveable).length}function dn(a){let o=Number(a?.latest?.estimatedReads||0),e=Number(a?.guardrail?.maxEstimatedReadsPerDay||0);return e>0?Math.max(0,e-o):null}var _e=class a{api=U(pe);orgService=U(oe);view=w(null);loading=w(!1);error=w(null);activeTab=w("accounts");accountFilter=w("connected");searchText=w("");orgId=w(null);jobsLoaded=w(!1);eventsLoaded=w(!1);archiveLoading=w(!1);archiveMessage=w(null);jobLimit=100;eventLimit=250;deferredLoad=null;accounts=x(()=>{let o=this.view();if(!o)return[];let e=this.searchText().trim().toLowerCase(),l=this.accountFilter();return o.accounts.filter(d=>l==="connected"&&!this.isConnectedAccount(d)||l==="selected"&&!d.isSelected||l==="with_jobs"&&!d.jobs.some(m=>this.isWorkerActiveJob(m))||l==="waiting"&&!d.waitingJobs.length?!1:e?[d.accountName,d.profileId,d.connectionId,d.countryCode,d.connection?.connectionLabel||"",d.connection?.amazonEmail||""].some(m=>m.toLowerCase().includes(e)):!0)});waitingJobs=x(()=>this.view()?.jobs.filter(o=>o.cleanup?.state==="waiting_on_amazon"||o.waitingOnAmazon)||[]);activeJobs=x(()=>this.view()?.jobs.filter(o=>this.isWorkerActiveJob(o))||[]);loadedJobs=x(()=>this.view()?.jobs||[]);pausedJobs=x(()=>this.view()?.jobs.filter(o=>this.isGuardrailPausedJob(o))||[]);archiveableJobs=x(()=>this.view()?.jobs.filter(o=>o.cleanup?.archiveable)||[]);reportReadyJobs=x(()=>this.view()?.jobs.filter(o=>String(o.status||"").toLowerCase()==="resumed")||[]);schedules=x(()=>this.view()?.schedules||[]);events=x(()=>this.view()?.events||[]);firestoreCost=x(()=>this.view()?.firestoreCost||null);amazonApiUsage=x(()=>this.view()?.amazonApiUsage||null);staleCleanup=x(()=>this.view()?.cleanup||null);runtimeUsage=x(()=>this.firestoreCost()?.runtimeUsage||null);runtimeDays=x(()=>this.runtimeUsage()?.daily||[]);runtimeLanes=x(()=>this.runtimeUsage()?.lanes||[]);expectedRuntime=x(()=>this.runtimeUsage()?.expected||null);expectedRuntimeLanes=x(()=>this.expectedRuntime()?.lanes||[]);costDays=x(()=>this.firestoreCost()?.topDays||[]);costAccounts=x(()=>this.firestoreCost()?.accounts||[]);costCollections=x(()=>this.firestoreCost()?.collections||[]);costHotspots=x(()=>this.firestoreCost()?.hotspots||[]);apiRoutes=x(()=>this.amazonApiUsage()?.plannedByRoute||[]);apiSources=x(()=>this.amazonApiUsage()?.plannedBySource||[]);actualApiRoutes=x(()=>this.amazonApiUsage()?.actualByRoute||[]);jobWindowCapped=x(()=>this.jobsLoaded()&&(this.view()?.jobs.length||0)>=this.jobLimit);costDashboard=x(()=>{let o=this.firestoreCost(),e=this.view();if(!o||!e)return null;let l=Math.max(1,o.totals.selectedAccountCount||o.totals.connectedAccountCount||e.summary.selectedAccounts||e.summary.accounts||1),d=Math.max(0,e.jobs.length||0),m=Math.max(1,o.totals.days||1),C=o.runtimeUsage,E=!!C&&(Number(C.totals.estimatedReads||0)>0||Number(C.totals.estimatedWrites||0)>0||Number(C.totals.jobsQueued||0)>0||Number(C.totals.jobsProcessed||0)>0),P=Number(o.totals.estimatedReads||0)>0||Number(o.totals.estimatedWrites||0)>0,O=C?.expected||null,xe=E?"Recorded runtime ledger":P?"Loaded job estimate":"Expected schedule baseline",Ce=Number(E?C?.totals.projectedDailyGrossUsd:P?o.totals.projectedDailyGrossUsd??o.totals.estimatedGrossUsd/m:O?.estimatedDailyGrossUsd??0),k=Number(E?C?.totals.projectedMonthlyGrossUsd:P?o.totals.projectedMonthlyGrossUsd??o.totals.estimatedGrossUsd/m*30:O?.estimatedMonthlyGrossUsd??0),be=Number(E?C?.totals.projectedMonthlyAfterFreeTierUsd:P?o.totals.projectedMonthlyAfterFreeTierUsd??o.totals.estimatedAfterFreeTierUsd/m*30:O?.estimatedMonthlyAfterFreeTierUsd??0),fe=Number(E?C?.totals.projectedMonthlyGrossUsdPerA
1ccount:k/l),J=Number(E?C?.latest?.estimatedReads||(C?.totals.estimatedReads||0)/Math.max(1,C?.totals.days||1):P?(o.totals.estimatedReads||0)/m:O?.estimatedDailyReads??0),q=J*30,F=Number(O?.estimatedDailyReads||0),j=F>0?J/F:null,ve=j==null?"No expected baseline":j>=2?"High":j>=1.25?"Elevated":"Normal";return{accountCount:l,loadedJobs:d,activeJobs:Math.max(0,e.summary.activeJobs||0),openJobs:Math.max(0,e.summary.openJobs??e.summary.activeJobs??0),waitingJobs:Math.max(0,e.summary.waitingOnAmazonJobs||0),dueWaitingJobs:Math.max(0,e.summary.waitingOnAmazonDueJobs||0),pausedJobs:Math.max(0,e.summary.pausedByGuardrailJobs||0),staleArchiveableJobs:Math.max(0,e.summary.staleArchiveableJobs||ln(e)),reportReadyJobs:Math.max(0,e.summary.reportReadyJobs||0),loadedJobWindow:d,sourceLabel:xe,currentEstimatedMonthlyBill:k,estimatedMonthlyBill:Number(O?.estimatedMonthlyGrossUsd??k),projectedDailyGrossUsd:Ce,projectedMonthlyGrossUsd:k,projectedMonthlyAfterFreeTierUsd:be,projectedMonthlyGrossUsdPerAccount:fe,projectedDailyReads:J,projectedMonthlyReads:q,projectedMonthlyReadsPerAccount:q/l,readVarianceRatio:j,readVarianceLabel:ve,expectedDailyReads:F,expectedMonthlyReads:O?.estimatedMonthlyReads??0,expectedDailyGrossUsd:O?.estimatedDailyGrossUsd??0,expectedMonthlyGrossUsd:O?.estimatedMonthlyGrossUsd??0,runtimeLatestReads:C?.latest?.estimatedReads??0,runtimeLatestWrites:C?.latest?.estimatedWrites??0,runtimeLatestDate:C?.latest?.date||"",estimatedReadsRemainingToday:dn(C),estimatedReadsPerAccount:o.totals.estimatedReads/l,estimatedWritesPerAccount:o.totals.estimatedWrites/l,estimatedGrossUsdPerLoadedJob:d?o.totals.estimatedGrossUsd/d:0,diagnosticReadDocs:o.diagnosticRead.documentsRead}});runtimeLaneVariance=x(()=>{let o=this.runtimeUsage(),e=this.expectedRuntime();if(!o||!e)return[];let l=new Map((e.lanes||[]).map(m=>[m.lane,m])),d=Math.max(1,o.totals?.days||1);return(o.lanes||[]).map(m=>{let C=l.get(m.lane),E=Number(m.estimatedReads||0)/d,P=Number(C?.estimatedReads||0);return{lane:m.lane,averageDailyReads:E,expectedDailyReads:P,ratio:P>0?E/P:null,lastActor:m.lastActor}}).sort((m,C)=>Number(C.ratio||0)-Number(m.ratio||0)||C.averageDailyReads-m.averageDailyReads).slice(0,8)});async ngOnInit(){let o=await G(this.orgService.currentOrgId$.pipe(H(e=>!!e)));this.orgId.set(o),await this.refresh()}async refresh(){let o=this.orgId();if(!o)return;let e=this.jobsLoaded()||this.tabNeedsJobs(this.activeTab()),l=e&&this.eventsLoaded();this.loading.set(!0),this.error.set(null);try{this.view.set(await this.api.getAuditLogView(o,l,e,{jobLimit:this.jobLimit,eventLimit:this.eventLimit,jobScope:"recent"})),e&&this.jobsLoaded.set(!0),l&&this.eventsLoaded.set(!0)}catch(d){this.error.set(d?.message||"Failed to load Amazon audit log.")}finally{this.loading.set(!1),this.flushDeferredLoad()}}setTab(o){this.activeTab.set(o),o==="events"&&!this.eventsLoaded()?this.loadEvents():this.tabNeedsJobs(o)&&!this.jobsLoaded()&&this.loadJobs()}tabNeedsJobs(o){return o==="waiting"||o==="jobs"||o==="costs"}async loadJobs(){let o=this.orgId();if(o){if(this.loading()){this.deferLoad("jobs");return}this.loading.set(!0),this.error.set(null);try{this.view.set(await this.api.getAuditLogView(o,!1,!0,{jobLimit:this.jobLimit,eventLimit:this.eventLimit,jobScope:"recent"})),this.jobsLoaded.set(!0)}catch(e){this.error.set(e?.message||"Failed to load Amazon audit jobs.")}finally{this.loading.set(!1),this.flushDeferredLoad()}}}async loadEvents(){let o=this.orgId();if(o){if(this.loading()){this.deferLoad("events");return}this.loading.set(!0),this.error.set(null);try{this.view.set(await this.api.getAuditLogView(o,!0,!0,{jobLimit:this.jobLimit,eventLimit:this.eventLimit,jobScope:"recent"})),this.jobsLoaded.set(!0),this.eventsLoaded.set(!0)}catch(e){this.error.set(e?.message||"Failed to load Amazon audit events.")}finally{this.loading.set(!1),this.flushDeferredLoad()}}}deferLoad(o){(o==="events"||this.deferredLoad!=="events")&&(this.deferredLoad=o)}flushDeferredLoad(){if(this.loading()||!this.deferredLoad)return;let o=this.deferredLoad;if(this.deferredLoad=null,o==="events"&&!this.eventsLoaded()){this.loadEvents();return}o==="jobs"&&!this.jobsLoaded()&&this.loadJobs()}
1setFilter(o){this.accountFilter.set(o),(o==="with_jobs"||o==="waiting")&&!this.jobsLoaded()&&this.loadJobs()}isConnectedAccount(o){return!!o.connectionId&&!!o.connection}accountJobCount(o,e){return e==="waiting"?o.waitingJobs.length:o.jobs.length}accountActiveJobCount(o){return o.jobs.filter(e=>this.isWorkerActiveJob(e)).length}isWorkerActiveJob(o){if(o.cleanup?.state)return o.cleanup.state==="active";let e=String(o.status||"").toLowerCase();return e==="queued"||e==="running"}isGuardrailPausedJob(o){return o.cleanup?.state?o.cleanup.state==="guardrail_paused":String(o.status||"").toLowerCase()==="paused_by_guardrail"}async archiveStaleJobs(){let o=this.orgId(),e=this.archiveableJobs().length||this.staleCleanup()?.archiveableJobs||this.staleCleanup()?.staleJobs||0;if(!(!o||!e||this.archiveLoading()||!window.confirm(`Archive ${this.formatNumber(e)} stale Amazon Ads job${e===1?"":"s"}? Job history will stay saved, but these rows will stop counting as active diagnostics.`))){this.archiveLoading.set(!0),this.archiveMessage.set(null),this.error.set(null);try{let d=await this.api.archiveStaleAmazonJobs(o,100);this.archiveMessage.set(`Archived ${this.formatNumber(d.archivedCount)} stale job${d.archivedCount===1?"":"s"}. ${d.failedWrites?`${this.formatNumber(d.failedWrites)} write${d.failedWrites===1?"":"s"} failed.`:"Diagnostics were refreshed."}`),await this.loadJobs()}catch(d){this.error.set(d?.message||"Failed to archive stale Amazon jobs.")}finally{this.archiveLoading.set(!1)}}}pendingReportEntries(o){return Object.entries(o.pendingReports||{}).map(([e,l])=>({key:e,value:String(l)}))}reportStatusEntries(o){return Object.entries(o.reportStatuses||{}).map(([e,l])=>({key:e,value:l}))}stepDetail(o){return o.details||o.firestoreWrite||o.amazonCall||null}eventIntent(o){let e=String(o||"").trim();return e?ue[e]?ue[e]:e.startsWith("amazon_")?"Calls or checks Amazon Ads so the system can collect the source data needed for this workflow.":e.startsWith("firestore_")?"Writes or updates Firebase data so the UI and downstream modules can use the latest result.":e.startsWith("scheduler_")?"Explains a scheduler decision about whether jobs should be queued for this account.":e.startsWith("job_")?"Records a job lifecycle change so queued, running, waiting, completed, and failed work can be traced.":"Records this system step so the audit page can explain what happened and why.":"Records a system action so this backend flow can be debugged later."}jobKindLabel(o){return o==="monitor_sync"?"Monitor":o==="monitor_backfill"?"Backfill":o==="search_term_backup"?"Search Terms":"Bid Suggestions"}jobDateLabel(o){return o.startDate&&o.endDate&&o.startDate!==o.endDate?`${o.startDate} to ${o.endDate}`:o.dataDate||o.startDate||o.endDate||"No date"}statusClass(o){let e=o.toLowerCase();return e==="waiting_on_report"||e==="resumed"||e==="report_requested"||e==="paused_by_guardrail"?"status status--waiting":e==="queued"?"status status--queued":e==="running"?"status status--running":e==="failed"?"status status--failed":e==="expired"?"status":e==="completed"||e==="saved"?"status status--complete":"status"}cleanupStateLabel(o){switch(o){case"active":return"Could dispatch";case"waiting_on_amazon":return"Waiting on Amazon";case"guardrail_paused":return"Guardrail paused";case"stale_archiveable":return"Stale archiveable";case"report_ready":return"Report ready";case"terminal":return"History only";default:return"Diagnostics only"}}cleanupStateClass(o){let e=String(o||"other");return e==="active"?"cleanup-state cleanup-state--active":e==="waiting_on_amazon"||e==="report_ready"?"cleanup-state cleanup-state--waiting":e==="guardrail_paused"?"cleanup-state cleanup-state--paused":e==="stale_archiveable"?"cleanup-state cleanup-state--stale":"cleanup-state"}statusLabel(o){switch(String(o||"").toLowerCase()){case"queued":return"Cloud Task queued";case"running":return"Cloud Task running";case"waiting_on_report":return"Waiting on Amazon";case"report_requested":return"Waiting on Amazon";case"paused_by_guardrail":return"Paused by guardrail";case"resumed":return"Report ready";case"completed":return"Completed";case"saved":return"Saved";case"failed":return"Failed";case"expired":return"Expired";case"empty":return"No rows";default:return o||"Unknown"}}scheduleClass(o){if(!o.enabled)return"status";let e=String(o.lastStatus||"").toLowerCase();return e.includes("failed")?"status status--failed":e.includes("queued")||e.includes("running")?"status status--running":"status status--complete"}formatDate(o){if(!o)return"Not recorded";let e=new Date(o);
1return Number.isNaN(e.getTime())?o:e.toLocaleString("en-US",{timeZone:"America/Los_Angeles",month:"numeric",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit",timeZoneName:"short"})}shortId(o){return o?o.length>24?`${o.slice(0,10)}...${o.slice(-8)}`:o:""}formatNumber(o){return Number(o||0).toLocaleString()}formatUsd(o){return`$${Number(o||0).toFixed(4)}`}formatUsd2(o){return`$${Number(o||0).toFixed(2)}`}formatRatio(o){return o==null||!Number.isFinite(Number(o))?"-":`${Number(o).toFixed(2)}x`}costVarianceClass(o){let e=Number(o||0);return e>=2?"cost-variance cost-variance--high":e>=1.25?"cost-variance cost-variance--medium":"cost-variance"}costSeverityClass(o){return o==="high"?"cost-hotspot cost-hotspot--high":o==="medium"?"cost-hotspot cost-hotspot--medium":"cost-hotspot"}trackAccount(o,e){return e.key}trackJob(o,e){return`${e.kind}:${e.jobId}`}trackSchedule(o,e){return`${e.connectionId||"global"}:${e.profileId||"all"}:${e.key}`}trackStep(o,e){return`${e.sequence}:${e.eventType}:${e.at}`}trackEvent(o,e){return e.eventId}trackCostDay(o,e){return e.date}trackCostCollection(o,e){return e.collection}trackRuntimeDay(o,e){return e.date}trackRuntimeLane(o,e){return e.lane}trackExpectedRuntimeLane(o,e){return e.lane}trackRuntimeLaneVariance(o,e){return e.lane}trackCleanupBucket(o,e){return e.key}trackCostHotspot(o,e){return`${e.severity}:${e.label}`}trackApiUsageRow(o,e){return e.key}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=K({type:a,selectors:[["app-amazon-audit-log"]],decls:27,vars:9,consts:[["jobBlock",""],[1,"audit-page"],[1,"audit-header"],[1,"eyebrow"],[1,"meta-line"],[1,"header-actions"],["routerLink","/adsmanager/monitor",1,"ghost-link"],["type","button",1,"ghost-link",3,"click","disabled"],["type","button",1,"primary-btn",3,"click","disabled"],[1,"alert","alert--error"],[1,"empty-row"],[1,"summary-band"],[1,"time-value"],["aria-label","Audit sections",1,"tab-bar"],["type","button",3,"click"],[1,"alert"],[1,"alert","alert--info"],[1,"schedule-table"],[1,"alert","cleanup-alert",3,"alert--error"],[1,"alert","cleanup-alert"],[1,"success-note"],[1,"cleanup-buckets"],[1,"pill"],[1,"controls-row"],[3,"ngModelChange","ngModel"],["value","connected"],["value","all"],["value","selected"],["value","with_jobs"],["value","waiting"],[1,"search-field"],["type","search","placeholder","Account, profile, login, email",3,"ngModelChange","ngModel"],[1,"account-list"],[1,"account-panel",3,"open"],[1,"account-title"],[1,"account-flags"],[1,"status"],[1,"pill","pill--waiting"],[1,"account-body"],[1,"account-grid"],[1,"label"],[1,"mini-table"],[1,"job-stack"],[1,"mini-head"],[1,"mini-row"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"schedule-head"],[1,"schedule-row"],[1,"cost-overview"],[1,"cost-copy"],[1,"cost-metrics"],[1,"cost-grid"],[1,"collection-row"],["target","_blank","rel","noreferrer",3,"href"],[1,"cost-table"],[1,"cost-table-head"],[1,"cost-table-row"],[3,"class"],[1,"cost-account-table"],[1,"cost-account-head"],[1,"cost-account-row"],[1,"cost-overview","cost-overview--runtime"],[1,"runtime-grid"],[1,"cost-dashboard","cost-dashboard--risk"],[1,"cost-hero"],[1,"cost-dashboard"],[1,"event-stream"],[1,"event-row"],[1,"event-time"],[1,"intent-note"],[1,"job-panel"],[1,"job-topline"],[1,"job-kind"],[1,"job-status-stack"],[1,"job-grid"],[1,"calls-list"],[1,"call-row"],[1,"report-grid"],[1,"raw-details"],["open","",1,"step-details"],[1,"step-list"],[1,"step-row"],[1,"step-index"],[1,"inline-raw"]],template:function(e,l){if(e&1){let d=I();n(0,"main",1)(1,"header",2)(2,"div")(3,"p",3),i(4,"Amazon Debug"),t(),n(5,"h1"),i(6,"Audit Log"),t(),n(7,"p"),i(8,"All connected Amazon accounts, scheduled backend jobs, waiting Amazon reports, and the worker functions that pick them up."),t(),n(9,"div",4),i(10,"Org "),n(11,"strong"),i(12),t()()(),n(13,"div",5)(14,"a",6),i(15,"Ads Manager"),t(),n(16,"button",7),A("click",function(){return h(d),M(l.loadJobs())}),i(17),t(),n(18,"button",7),A("click",function(){return h(d),M(l.loadEvents())}),i(19),t(),n(20,"button",8),A("click",function(){return h(d),M(l.refresh())}),i(21),t()()(),p(22,Ae,2,1,"section",9),p(23,Ut,74,32)(24,Wt,2,0,"section",10),t(),z(25,rn,50,20,"ng-template",null,0,X)}if(e&2){let d;r(12),s(l.orgId()),r(4),y("disabled",l.loading()),r(),_(" ",l.jobsLoaded()?"Reload Diagnostics":"Load Diagnostics"," "),r(),y("disabled",l.loading()),r(),_(" ",l.eventsLoaded()?"Reload Events":"Load Events"," "),r(),y("disabled",l.loading()),r(),_(" ",l.loading()?"Refreshing":"Refresh"," "),r(),u(l.error()?22:-1),r(),u((d=l.view())?23:l.loading()?24:-1,d)}},dependencies:[te,Y,me,se,ce,ae,de,re,le,ie,ne,ee],styles:["[_nghost-%COMP%]{display:block;color:#172033;font-family:Outfit,Inter,system-ui,-apple-system,sans-serif}.audit-page[_ngcontent-%COMP%]{max-width:1680px;margin:0 auto;padding:28px 32px 44px}.audit-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;margin-bottom:20px}.audit-header[_ngcontent-%COMP%]   h1[_ngcontent-%COMP%]{margin:0;font-size:2rem;line-height:1.15;letter-spacing:0}.audit-header[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{margin:8px 0 0;color:#5b667a;max-width:820px}.eyebrow[_ngcontent-%COMP%], .label[_ngcontent-%COMP%]{display:block;margin:0 0 5px;color:#6b7280;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.meta-line[_ngcontent-%COMP%]{margin-top:12px;color:#6b7280;font-size:12px}.header-actions[_ngcontent-%COMP%], .controls-row[_ngcontent-%COMP%]{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}.primary-btn[_ngcontent-%COMP%], .ghost-link[_ngcontent-%COMP%], .tab-bar[_ngcontent-%COMP%]   button[_ngcontent-%COMP%]{min-height:38px;border:1px solid #c8d3e1;border-radius:7px;padding:0 14px;background:#fff;color:#172033;font-weight:800;text-decoration:none;cursor:pointer}.primary-btn[_ngcontent-%COMP%]{border-color:#0f766e;background:#0f766e;color:#fff}.primary-btn[_ngcontent-%COMP%]:disabled{opacity:.65;
1cursor:wait}.summary-band[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(125px,1fr));gap:1px;overflow:hidden;border:1px solid #d9e2ee;border-radius:8px;background:#d9e2ee;margin-bottom:16px}.summary-band[_ngcontent-%COMP%]   div[_ngcontent-%COMP%]{min-width:0;padding:14px;background:#f8fafc}.summary-band[_ngcontent-%COMP%]   span[_ngcontent-%COMP%]{display:block;color:#667085;font-size:11px;font-weight:800;text-transform:uppercase}.summary-band[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%]{display:block;margin-top:4px;color:#111827;font-size:1.35rem}.summary-band[_ngcontent-%COMP%]   .time-value[_ngcontent-%COMP%]{font-size:.85rem;line-height:1.35}.tab-bar[_ngcontent-%COMP%]{display:flex;gap:6px;margin:0 0 16px;border-bottom:1px solid #d9e2ee}.tab-bar[_ngcontent-%COMP%]   button[_ngcontent-%COMP%]{border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-color:transparent;background:#f8fafc}.tab-bar[_ngcontent-%COMP%]   button.active[_ngcontent-%COMP%]{background:#172033;color:#fff;border-color:#172033}.controls-row[_ngcontent-%COMP%]{justify-content:space-between;margin-bottom:14px}.controls-row[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{display:grid;gap:5px}.controls-row[_ngcontent-%COMP%]   select[_ngcontent-%COMP%], .controls-row[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{min-height:38px;min-width:220px;border:1px solid #c8d3e1;border-radius:7px;padding:0 10px;color:#172033;background:#fff}.controls-row[_ngcontent-%COMP%]   .search-field[_ngcontent-%COMP%]{flex:1;min-width:280px}.controls-row[_ngcontent-%COMP%]   .search-field[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{width:100%}.account-list[_ngcontent-%COMP%], .job-stack[_ngcontent-%COMP%]{display:grid;gap:10px}.account-panel[_ngcontent-%COMP%], .job-panel[_ngcontent-%COMP%], .schedule-table[_ngcontent-%COMP%], .alert[_ngcontent-%COMP%], .empty-row[_ngcontent-%COMP%]{border:1px solid #d9e2ee;border-radius:8px;background:#fff}.account-panel[_ngcontent-%COMP%]   summary[_ngcontent-%COMP%]{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:14px 16px;cursor:pointer;list-style:none}.account-panel[_ngcontent-%COMP%]   summary[_ngcontent-%COMP%]::-webkit-details-marker{display:none}.account-title[_ngcontent-%COMP%]{display:grid;gap:3px}.account-title[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%]{color:#111827}.account-title[_ngcontent-%COMP%]   span[_ngcontent-%COMP%]{color:#64748b;font-size:12px}.account-flags[_ngcontent-%COMP%]{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.account-body[_ngcontent-%COMP%]{border-top:1px solid #e7edf5;padding:14px 16px 16px;display:grid;gap:14px}.account-grid[_ngcontent-%COMP%], .job-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.account-grid[_ngcontent-%COMP%] > div[_ngcontent-%COMP%], .job-grid[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{min-width:0;padding:12px;border:1px solid #e7edf5;border-radius:7px;background:#fbfcfe}.account-grid[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%], .account-grid[_ngcontent-%COMP%]   small[_ngcontent-%COMP%], .job-grid[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%], .job-grid[_ngcontent-%COMP%]   small[_ngcontent-%COMP%]{display:block;overflow-wrap:anywhere}.account-grid[_ngcontent-%COMP%]   small[_ngcontent-%COMP%], .job-grid[_ngcontent-%COMP%]   small[_ngcontent-%COMP%]{margin-top:4px;color:#667085;line-height:1.35}.mini-table[_ngcontent-%COMP%], .schedule-table[_ngcontent-%COMP%]{overflow:hidden}.mini-head[_ngcontent-%COMP%], .mini-row[_ngcontent-%COMP%], .schedule-head[_ngcontent-%COMP%], .schedule-row[_ngcontent-%COMP%]{display:grid;gap:12px;align-items:center}.mini-head[_ngcontent-%COMP%]{padding:10px 12px;color:#4b5563;font-size:12px;font-weight:800;background:#eef5f4}.mini-row[_ngcontent-%COMP%]{grid-template-columns:minmax(220px,1.4fr) minmax(180px,1fr) minmax(180px,1fr) 120px;padding:10px 12px;border-top:1px solid #e7edf5;font-size:12px}.mini-row[_ngcontent-%COMP%]   span[_ngcontent-%COMP%]{display:block;margin-top:3px;color:#667085}.job-panel[_ngcontent-%COMP%]{padding:14px;display:grid;gap:12px}.job-topline[_ngcontent-%COMP%]{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.job-topline[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%], .job-topline[_ngcontent-%COMP%]   small[_ngcontent-%COMP%]{display:block;overflow-wrap:anywhere}.job-topline[_ngcontent-%COMP%]   small[_ngcontent-%COMP%]{margin-top:4px;color:#667085}.job-kind[_ngcontent-%COMP%]{display:inline-flex;margin-bottom:6px;padding:3px 7px;border-radius:999px;background:#eef5f4;color:#0f766e;font-size:11px;font-weight:900}.calls-list[_ngcontent-%COMP%]{display:grid;gap:6px}.call-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(190px,1fr) minmax(260px,1.2fr) minmax(90px,auto) minmax(120px,auto);gap:8px;align-items:center;padding:9px 10px;border:1px solid #e7edf5;border-radius:7px;font-size:12px;background:#fbfcfe}.call-row[_ngcontent-%COMP%]   span[_ngcontent-%COMP%], .call-row[_ngcontent-%COMP%]   code[_ngcontent-%COMP%]{overflow-wrap:anywhere}.report-grid[_ngcontent-%COMP%]{display:flex;gap:8px;align-items:center;flex-wrap:wrap}code[_ngcontent-%COMP%]{padding:3px 6px;border-radius:5px;background:#eef2f7;color:#283548;font-size:11px}
1.raw-details[_ngcontent-%COMP%]{border:1px solid #e7edf5;border-radius:7px;padding:10px;background:#fbfcfe}.raw-details[_ngcontent-%COMP%]   summary[_ngcontent-%COMP%]{cursor:pointer;font-weight:800;font-size:12px}.raw-details[_ngcontent-%COMP%]   pre[_ngcontent-%COMP%]{overflow:auto;max-height:260px;margin:10px 0 0;font-size:11px}.step-details[_ngcontent-%COMP%]{border:1px solid #e7edf5;border-radius:7px;background:#fbfcfe}.step-details[_ngcontent-%COMP%] > summary[_ngcontent-%COMP%]{padding:10px 12px;cursor:pointer;font-size:12px;font-weight:900}.step-list[_ngcontent-%COMP%], .event-stream[_ngcontent-%COMP%]{display:grid;gap:8px}.step-list[_ngcontent-%COMP%]{padding:0 10px 10px}.step-row[_ngcontent-%COMP%], .event-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:34px minmax(0,1fr) minmax(150px,auto);gap:10px;align-items:flex-start;padding:10px;border:1px solid #e7edf5;border-radius:7px;background:#fff;font-size:12px}.step-row[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%], .step-row[_ngcontent-%COMP%]   span[_ngcontent-%COMP%], .step-row[_ngcontent-%COMP%]   small[_ngcontent-%COMP%], .step-row[_ngcontent-%COMP%]   code[_ngcontent-%COMP%], .event-row[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%], .event-row[_ngcontent-%COMP%]   span[_ngcontent-%COMP%], .event-row[_ngcontent-%COMP%]   small[_ngcontent-%COMP%], .event-row[_ngcontent-%COMP%]   code[_ngcontent-%COMP%]{display:block;overflow-wrap:anywhere}.step-row[_ngcontent-%COMP%]   span[_ngcontent-%COMP%], .step-row[_ngcontent-%COMP%]   small[_ngcontent-%COMP%], .event-row[_ngcontent-%COMP%]   span[_ngcontent-%COMP%], .event-row[_ngcontent-%COMP%]   small[_ngcontent-%COMP%]{margin-top:3px;color:#667085}.step-row[_ngcontent-%COMP%]   code[_ngcontent-%COMP%], .event-row[_ngcontent-%COMP%]   code[_ngcontent-%COMP%]{margin-top:6px}.intent-note[_ngcontent-%COMP%]{margin:5px 0 0;color:#334155;font-size:12px;line-height:1.4;font-weight:700}.event-row[_ngcontent-%COMP%]{grid-template-columns:minmax(150px,.45fr) minmax(0,1fr) minmax(220px,.7fr)}.step-index[_ngcontent-%COMP%]{width:26px;height:26px;display:grid;place-items:center;border-radius:50%;background:#172033;color:#fff;font-weight:900;font-size:11px}.event-time[_ngcontent-%COMP%]{color:#475569;font-weight:800}.inline-raw[_ngcontent-%COMP%]{margin-top:8px}.inline-raw[_ngcontent-%COMP%]   summary[_ngcontent-%COMP%]{cursor:pointer;color:#475569;font-weight:800}.inline-raw[_ngcontent-%COMP%]   pre[_ngcontent-%COMP%]{max-width:360px;max-height:220px;overflow:auto;margin:8px 0 0;padding:8px;border-radius:6px;background:#0f172a;color:#e5e7eb;font-size:11px}.schedule-head[_ngcontent-%COMP%], .schedule-row[_ngcontent-%COMP%]{grid-template-columns:minmax(260px,1.4fr) minmax(180px,1fr) minmax(210px,1fr) minmax(210px,1fr) minmax(150px,.8fr);padding:12px 14px}.schedule-head[_ngcontent-%COMP%]{background:#172033;color:#fff;font-size:12px;font-weight:900}.schedule-row[_ngcontent-%COMP%]{border-top:1px solid #e7edf5;font-size:12px}.schedule-row[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%], .schedule-row[_ngcontent-%COMP%]   small[_ngcontent-%COMP%]{display:block;overflow-wrap:anywhere}.schedule-row[_ngcontent-%COMP%]   small[_ngcontent-%COMP%]{margin-top:4px;color:#667085}.status[_ngcontent-%COMP%], .pill[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;min-height:24px;border-radius:999px;padding:0 9px;background:#eef2f7;color:#475569;font-size:11px;font-weight:900;text-transform:uppercase}.pill--waiting[_ngcontent-%COMP%], .status--waiting[_ngcontent-%COMP%]{background:#e0f2fe;color:#075985}.status--queued[_ngcontent-%COMP%]{background:#ede9fe;color:#5b21b6}.status--running[_ngcontent-%COMP%]{background:#dbeafe;color:#1d4ed8}.status--failed[_ngcontent-%COMP%]{background:#fee2e2;color:#b91c1c}.status--complete[_ngcontent-%COMP%]{background:#dcfce7;color:#166534}.alert[_ngcontent-%COMP%], .empty-row[_ngcontent-%COMP%]{padding:14px 16px;color:#475569}.alert[_ngcontent-%COMP%]{margin:12px 0;background:#fffbeb;border-color:#fde68a}.alert--error[_ngcontent-%COMP%]{background:#fef2f2;border-color:#fecaca;color:#991b1b}.alert--info[_ngcontent-%COMP%]{background:#eff6ff;border-color:#bfdbfe;color:#1e40af}.cleanup-alert[_ngcontent-%COMP%]{display:flex;justify-content:space-between;gap:14px;align-items:center}.cleanup-alert[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%], .cleanup-alert[_ngcontent-%COMP%]   span[_ngcontent-%COMP%]{display:block;line-height:1.4}.cleanup-alert[_ngcontent-%COMP%]   span[_ngcontent-%COMP%]{margin-top:4px;color:#7c2d12}.cleanup-alert[_ngcontent-%COMP%]   .success-note[_ngcontent-%COMP%]{color:#047857;font-weight:800}.cleanup-buckets[_ngcontent-%COMP%]{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;min-width:220px;align-items:center}.job-status-stack[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:6px;align-items:flex-end}.cleanup-state[_ngcontent-%COMP%]{display:inline-flex;align-items:center;width:fit-content;border-radius:999px;padding:5px 9px;background:#f1f5f9;color:#475569;font-size:11px;font-weight:900;text-transform:uppercase;white-space:nowrap}.cleanup-state--active[_ngcontent-%COMP%]{background:#dbeafe;color:#1d4ed8}.cleanup-state--waiting[_ngcontent-%COMP%]{background:#fef3c7;color:#92400e}.cleanup-state--paused[_ngcontent-%COMP%]{background:#ede9fe;color:#6d28d9}.cleanup-state--stale[_ngcontent-%COMP%]{background:#fee2e2;color:#b91c1c}.cost-overview[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(280px,.85fr) minmax(0,1.6fr);gap:14px;margin-bottom:14px}.cost-dashboard[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;margin-bottom:14px}.cost-dashboard[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{min-width:0;padding:14px;border:1px solid #d9e2ee;border-radius:8px;background:#fff}.cost-dashboard[_ngcontent-%COMP%]   .cost-hero[_ngcontent-%COMP%]{background:#ecfeff;border-color:#99f6e4}.cost-dashboard[_ngcontent-%COMP%]   .cost-variance[_ngcontent-%COMP%]{background:#f0fdf4;border-color:#bbf7d0}
1.cost-dashboard[_ngcontent-%COMP%]   .cost-variance--medium[_ngcontent-%COMP%]{background:#fffbeb;border-color:#fde68a}.cost-dashboard[_ngcontent-%COMP%]   .cost-variance--high[_ngcontent-%COMP%]{background:#fef2f2;border-color:#fecaca}.cost-dashboard[_ngcontent-%COMP%]   span[_ngcontent-%COMP%]{display:block;color:#667085;font-size:11px;font-weight:900;text-transform:uppercase}.cost-dashboard[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%]{display:block;margin-top:5px;color:#111827;font-size:1.35rem;line-height:1.2;overflow-wrap:anywhere}.cost-dashboard[_ngcontent-%COMP%]   small[_ngcontent-%COMP%]{display:block;margin-top:5px;color:#667085;line-height:1.35}.cost-copy[_ngcontent-%COMP%], .cost-metrics[_ngcontent-%COMP%] > div[_ngcontent-%COMP%], .cost-table[_ngcontent-%COMP%], .cost-grid[_ngcontent-%COMP%] > div[_ngcontent-%COMP%], .cost-account-table[_ngcontent-%COMP%]{border:1px solid #d9e2ee;border-radius:8px;background:#fff}.cost-copy[_ngcontent-%COMP%]{padding:16px}.cost-copy[_ngcontent-%COMP%]   h2[_ngcontent-%COMP%]{margin:0;font-size:1.2rem;letter-spacing:0}.cost-copy[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]:not(.eyebrow), .cost-copy[_ngcontent-%COMP%]   small[_ngcontent-%COMP%]{display:block;margin:8px 0 0;color:#5b667a;line-height:1.45}.cost-copy[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]{color:#0f766e;font-weight:800}.cost-metrics[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.cost-metrics[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{padding:14px;background:#fbfcfe}.cost-metrics[_ngcontent-%COMP%]   span[_ngcontent-%COMP%]{display:block;color:#667085;font-size:11px;font-weight:900;text-transform:uppercase}.cost-metrics[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%]{display:block;margin-top:5px;color:#111827;font-size:1.2rem}.cost-metrics[_ngcontent-%COMP%]   small[_ngcontent-%COMP%]{display:block;margin-top:5px;color:#667085;line-height:1.35}.cost-overview--runtime[_ngcontent-%COMP%]   .cost-copy[_ngcontent-%COMP%]{border-color:#99f6e4;background:#f0fdfa}.cost-table[_ngcontent-%COMP%]{overflow:hidden;margin-bottom:14px}.cost-table-head[_ngcontent-%COMP%], .cost-table-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(110px,.8fr) minmax(130px,.8fr) minmax(100px,.7fr) minmax(120px,.8fr) minmax(150px,1fr) minmax(100px,.7fr) minmax(240px,1.7fr);gap:10px;align-items:center;padding:11px 14px}.cost-table-head[_ngcontent-%COMP%]{background:#172033;color:#fff;font-size:12px;font-weight:900}.cost-table-row[_ngcontent-%COMP%]{border-top:1px solid #e7edf5;font-size:12px}.cost-table-row[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%], .cost-table-row[_ngcontent-%COMP%]   small[_ngcontent-%COMP%]{display:block}.cost-table-row[_ngcontent-%COMP%]   small[_ngcontent-%COMP%]{margin-top:3px;color:#667085;line-height:1.35}.cost-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(260px,.8fr) minmax(0,1.4fr);gap:14px;margin-bottom:14px}.cost-grid[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{padding:14px}.runtime-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:14px}.runtime-grid[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{min-width:0;padding:14px;border:1px solid #d9e2ee;border-radius:8px;background:#fff}.cost-account-table[_ngcontent-%COMP%]{overflow:hidden}.cost-account-head[_ngcontent-%COMP%], .cost-account-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(260px,1.5fr) 80px 110px 110px minmax(150px,.8fr);gap:10px;align-items:center;padding:11px 14px}.cost-account-head[_ngcontent-%COMP%]{background:#172033;color:#fff;font-size:12px;font-weight:900}.cost-account-row[_ngcontent-%COMP%]{border-top:1px solid #e7edf5;font-size:12px}.cost-account-row[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%], .cost-account-row[_ngcontent-%COMP%]   small[_ngcontent-%COMP%]{display:block;overflow-wrap:anywhere}.cost-account-row[_ngcontent-%COMP%]   small[_ngcontent-%COMP%]{margin-top:3px;color:#667085;line-height:1.35}.collection-row[_ngcontent-%COMP%]{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-top:1px solid #edf2f7;font-size:12px}.collection-row[_ngcontent-%COMP%]   span[_ngcontent-%COMP%]{color:#475569;overflow-wrap:anywhere}.cost-variance[_ngcontent-%COMP%]{color:#166534}
1.cost-variance--medium[_ngcontent-%COMP%]{color:#b45309}.cost-variance--high[_ngcontent-%COMP%]{color:#b91c1c}.cost-hotspot[_ngcontent-%COMP%]{display:grid;gap:4px;padding:10px 12px;border:1px solid #d9e2ee;border-radius:7px;background:#fbfcfe;font-size:12px}.cost-hotspot[_ngcontent-%COMP%] + .cost-hotspot[_ngcontent-%COMP%]{margin-top:8px}.cost-hotspot[_ngcontent-%COMP%]   span[_ngcontent-%COMP%]{color:#5b667a;line-height:1.4}.cost-hotspot--medium[_ngcontent-%COMP%]{border-color:#fde68a;background:#fffbeb}.cost-hotspot--high[_ngcontent-%COMP%]{border-color:#fecaca;background:#fef2f2}@media(max-width:1000px){.audit-page[_ngcontent-%COMP%]{padding:18px}.audit-header[_ngcontent-%COMP%], .account-panel[_ngcontent-%COMP%]   summary[_ngcontent-%COMP%], .job-topline[_ngcontent-%COMP%]{flex-direction:column;align-items:stretch}.summary-band[_ngcontent-%COMP%], .account-grid[_ngcontent-%COMP%], .job-grid[_ngcontent-%COMP%], .cost-overview[_ngcontent-%COMP%], .cost-grid[_ngcontent-%COMP%], .runtime-grid[_ngcontent-%COMP%], .cost-dashboard[_ngcontent-%COMP%]{grid-template-columns:repeat(2,minmax(0,1fr))}.mini-row[_ngcontent-%COMP%], .schedule-head[_ngcontent-%COMP%], .schedule-row[_ngcontent-%COMP%], .call-row[_ngcontent-%COMP%], .step-row[_ngcontent-%COMP%], .event-row[_ngcontent-%COMP%], .cost-table-head[_ngcontent-%COMP%], .cost-table-row[_ngcontent-%COMP%], .cost-account-head[_ngcontent-%COMP%], .cost-account-row[_ngcontent-%COMP%]{grid-template-columns:1fr}.cost-metrics[_ngcontent-%COMP%]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.summary-band[_ngcontent-%COMP%], .account-grid[_ngcontent-%COMP%], .job-grid[_ngcontent-%COMP%], .cost-overview[_ngcontent-%COMP%], .cost-grid[_ngcontent-%COMP%], .runtime-grid[_ngcontent-%COMP%], .cost-dashboard[_ngcontent-%COMP%], .cost-metrics[_ngcontent-%COMP%]{grid-template-columns:1fr}.tab-bar[_ngcontent-%COMP%]{overflow-x:auto}}"]})};export{_e as AmazonAuditLogComponent};

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.