1const G=["__dk__","__ref__"],W=o=>typeof o=="number"&&Number.isFinite(o);function On(o){return o>0?Math.round(1.96*Math.sqrt(.25/o)*1e3)/10:null}function Cn(o){return(o||[]).filter(r=>r&&r.valid===!0)}function zn(o){const r=[];for(const t of(o==null?void 0:o.quotaDims)||[])!t||!Array.isArray(t.cells)||!t.cells.length||r.push({key:"q:"+t.key,label:t.label,source:"quota",srcKey:t.key,values:t.cells.map(n=>({value:String(n.value),label:n.label})),weightable:t.cells.some(n=>Number(n.target)>0)});for(const t of(o==null?void 0:o.derivedVars)||[]){if(!t||!t.code||/form|rnd|rand|arm|cell/i.test(String(t.code)))continue;const n=[];for(const e of t.rules||[])e&&e.value!=null&&!n.includes(String(e.value))&&n.push(String(e.value));t.default!=null&&t.default!==""&&!n.includes(String(t.default))&&n.push(String(t.default));for(const e of Object.values(t.map||{}))e!=null&&!n.includes(String(e))&&n.push(String(e));if(n.length<2||n.length>8)continue;const s=((o==null?void 0:o.quotaDims)||[]).find(e=>e&&e.fromVar===t.code);r.push({key:"d:"+t.code,label:t.label||s&&s.label||{ru:"ÐÑÑппа Ð´Ð»Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð°",en:"Analysis group",uz:"Tahlil guruhi"},source:"derived",srcKey:t.code,values:n.map(e=>({value:e,label:j(o,t,e)})),weightable:!1})}return r}function j(o,r,t){const n=String(t);if(r&&r.valueLabels&&r.valueLabels[n]!=null)return r.valueLabels[n];for(const s of(o==null?void 0:o.quotaDims)||[]){if(!s||s.fromVar!==(r&&r.code))continue;const e=(s.cells||[]).find(c=>String(c.value)===n);if(e&&e.label)return e.label}return n}const H=o=>o==="uz-Cyrl"?"uz":o;function X(o,r){var n,s;if(!o||!r)return null;const t=r.source==="quota"?(n=o.quota)==null?void 0:n[r.srcKey]:r.source==="row"?o==null?void 0:o[r.srcKey]:(s=o.answers)==null?void 0:s[r.srcKey];return t==null?null:r.key==="lang"?H(String(t)):String(t)}function Rn(o,r,t){const n=(r||[]).filter(s=>t&&t[s.key]);return n.length?(o||[]).filter(s=>n.every(e=>X(s,e)===String(t[e.key]))):o||[]}function In(o,r){const t=new Map,n=o||[];
1if(n.forEach(i=>t.set(i,1)),!r||!Array.isArray(r.cells))return t;const s=n.length,e=r.cells.reduce((i,l)=>i+(Number(l.target)||0),0)||1;if(!s)return t;const c={};return n.forEach(i=>{var u;const l=(u=i.quota)==null?void 0:u[r.key];c[l]=(c[l]||0)+1}),n.forEach(i=>{var h;const l=(h=i.quota)==null?void 0:h[r.key],u=r.cells.find(m=>String(m.value)===String(l));if(!u||!c[l]){t.set(i,1);return}const f=(Number(u.target)||0)/e,a=c[l]/s;t.set(i,a>0?f/a:1)}),t}const _=(o,r)=>o&&o.get(r)!=null?o.get(r):1;function J(o,r,{multi:t=!1,w:n=null}={}){var l;const s={};let e=0,c=0;for(const u of o||[]){const f=(l=u.answers)==null?void 0:l[r];if(f==null||Array.isArray(f)&&!f.length||f==="")continue;const a=Array.isArray(f)?f:[f];e+=1,c+=_(n,u);const h=new Set;for(const m of a){const p=String(m);h.has(p)||(h.add(p),s[p]=(s[p]||0)+_(n,u))}!t&&a.length>1}const i={};for(const u of Object.keys(s))i[u]=c>0?s[u]/c*100:0;return{counts:s,pct:i,base:e,baseW:c}}function K(o,r,{w:t=null}={}){var h;const n=[],s=[];let e=0,c=0;for(const m of o||[]){const p=(h=m.answers
1)==null?void 0:h[r];if(!(p==null||p===""))if(c+=1,W(p))n.push(p),s.push(_(t,m));else if(G.includes(String(p)))e+=1;else{const y=Number(p);Number.isFinite(y)?(n.push(y),s.push(_(t,m))):e+=1}}let i=0,l=0;n.forEach((m,p)=>{i+=s[p],l+=m*s[p]});const u=i>0?l/i:null,f=[...n].sort((m,p)=>m-p),a=f.length?f[Math.floor((f.length-1)/2)]:null;return{values:n,weights:s,mean:u,median:a,nAns:n.length,dk:e,base:c}}function nn(o,r,t,n,{w:s=null}={}){const e=K(o,r,{w:s}),c=[];for(let l=t;l<=n;l++)c.push(0);e.values.forEach((l,u)=>{const f=Math.round(l)-t;f>=0&&f<c.length&&(c[f]+=e.weights[u])});const i=c.reduce((l,u)=>l+u,0);return{pts:c,pct:c.map(l=>i>0?l/i*100:0),mean:e.mean,nAns:e.nAns,dk:e.dk,base:e.base}}function Bn(o,r,{w:t=null}={}){const n=nn(o,r,0,10,{w:t}),s=n.pts.reduce((l,u)=>l+u,0),e=n.pts.slice(0,7).reduce((l,u)=>l+u,0),c=n.pts.slice(7,9).reduce((l,u)=>l+u,0),i=n.pts.slice(9).reduce((l,u)=>l+u,0);return{nps:s>0?Math.round((i-e)/s*100):null,detPct:s>0?e/s*100:0,pasPct:s>0?c/s*100:0,proPct:s>0?i/s*100:0,pct:n.pct,nAns:n.nAns,base:n.base,dk:n.dk}}function tn(o,r,t,n,{w:s=null}={}){var i;const e=n&&n.length?n.map(l=>l.value):[1,2,3,4,5],c=[];for(const l of t||[]){const u=e.map(()=>0);let f=0,a=0,h=0,m=0;for(const y of o||[]){const g=(i=y.answers)==null?void 0:i[r],d=g&&typeof g=="object"?g[l.key]:null;if(d==null||d==="")continue;h+=1;const M=e.findIndex(x=>String(x)===String(d));M>=0&&(u[M]+=_(s,y)),W(d)?(f+=_(s,y),a+=d*_(s,y)):G.includes(String(d))&&(m+=1)}const p=u.reduce((y,g)=>y+g,0);c.push({key:l.key,label:l.label,counts:u,pct:u.map(y=>p>0?y/p*100:0),mean:f>0?a/f:null,nAns:h,dk:m})}return{rows:c,colVals:e}}const en=(o,r)=>{if(!(o>0))return 1;const t=Math.pow(10,Math.floor(Math.log10(o))),n=o/t,e=(n<=1?1:n<=2?2:n<=2.5?2.5:n<=5?5:10)*t;return r?Math.max(1,Math.ceil(e-1e-9)):e};function Dn(o,r=7){const t=(o||[]).filter(W).sort((m,p)=>m-p);if(!t.length)return[];const n=t[Math.floor((t.length-1)*.01)],s=t[Math.ceil((t.length-1)*.99)],e=Math.min(n,s),c=Math.max(n,s);if(e===c)return[{from:e,to:c,count:t.length}];const i=t.every(m=>Number.isInteger(m)),l=en((c-e)/r,i),u=Math.floor(e/l)*l,f=Math.max(1,Math.ceil((c-u)/l-1e-9)),a=m=>+(u+m*l).toFixed(i?0:6),h=Array.from({length:f},(m,p)=>({from:a(p),to:a(p+1),count:0}));for(const m of t){let p=Math.floor((m-u)/l);p<0&&(p=0),p>=f&&(p=f-1),h[p].count+=1}return h}function Ln(o,r){const t=[];for(const n of(r==null?void 0:r.values)||[]){const s=(o||[]).filter(e=>X(e,r)===String(n.value));s.length&&t.push({value:String(n.value),label:n.label,rows:s})}return t}function Tn(o,r,t=8){var s;const n={};
1for(const e of o||[]){const c=(s=e.answers)==null?void 0:s[r];c&&String(c).toLowerCase().split(/[^a-zа-ÑÊ»â']+/i).filter(i=>i.length>4).forEach(i=>{n[i]=(n[i]||0)+1})}return Object.keys(n).sort((e,c)=>n[c]-n[e]).slice(0,t).map(e=>({word:e,count:n[e]}))}const rn="__oth",sn=o=>String(o)+rn;function on(o){return!o||o.type!=="single"&&o.type!=="multi"?null:(o.options||[]).find(r=>r&&r.other)||null}function Wn(o,r){var f,a;const t=on(r);if(!t)return null;const n=r.qid||r.id,s=sn(n),e=String(t.value),c=new Map;let i=0,l=0;for(const h of o||[]){const m=(f=h==null?void 0:h.answers)==null?void 0:f[n];if(!(Array.isArray(m)?m.map(String):m==null||m===""?[]:[String(m)]).includes(e))continue;i+=1;const y=String(((a=h.answers)==null?void 0:a[s])??"").trim().replace(/\s+/g," ");if(!y)continue;l+=1;const g=y.toLowerCase(),d=c.get(g)||{text:y,n:0};d.n+=1,c.set(g,d)}const u=[...c.values()].sort((h,m)=>m.n-h.n||h.text.localeCompare(m.text));return{qid:n,key:s,value:e,label:t.label??null,picked:i,typed:l,blank:i-l,items:u}}function Vn(o,r){var n;let t=0;for(const s of o||[]){const e=(n=s.answers)==null?void 0:n[r];e==null||e===""||Array.isArray(e)&&!e.length||(t+=1)}return t}const ln={ru:"Ð ÑÑÑкий",uz:"OÊ»zbekcha",kaa:"Qaraqalpaqsha",en:"English"};function Un(o){const r=new Map;for(const t of o||[]){const n=t&&t.lang?H(String(t.lang)):null;n&&r.set(n,(r.get(n)||0)+1)}return r.size<2?null:{key:"lang",label:"ЯзÑк инÑеÑвÑÑ",source:"row",srcKey:"lang",values:[...r.keys()].sort().map(t=>({value:t,label:ln[t]||t})),weightable:!1}}function V(o){const r=1/(1+.2316419*Math.abs(o)),n=.3989422804*Math.exp(-o*o/2)*r*(.31938153+r*(-.356563782+r*(1.781477937+r*(-1.821255978+r*1.330274429))));return o>0?1-n:n}function $n(o,r,t,n){if(!(r>=5&&n>=5))return null;const s=o/r,e=t/n,c=(o+t)/(r+n),i=Math.sqrt(c*(1-c)*(1/r+1/n));if(!i||!Number.isFinite(i))return null;const l=(s-e)/i;return+(2*(1-V(Math.abs(l)))).toFixed(4)}function Y(o,r){const t=(o||[]).length,n=(r||[]).length;if(!(t>=5&&n>=5))return null;const s=a=>a.reduce((h,m)=>h+m,0)/a.length,e=s(o),c=s(r),i=o.reduce((a,h)=>a+(h-e)**2,0)/(t-1),l=r.reduce((a,h)=>a+(h-c)**2,0)/(n-1),u=Math.sqrt(i/t+l/n);if(!u||!Number.isFinite(u))return null;const f=(e-c)/u;return+(2*(1-V(Math.abs(f)))).toFixed(4)}function R(o){let r=o>>>0;return()=>{r|=0,r=r+1831565813|0;let t=Math.imul(r^r>>>15,1|r);return t=t+Math.imul(t^t>>>7,61|t)^t,((t^t>>>14)>>>0)/4294967296}}const I=o=>o.length?o.reduce((r,t)=>r+t,0)/o.length:null;function Z(o,r,{iters:t=1e3,seed:n=12345,lo:s=.025,hi:e=.975}={}){if(o<2)return null;const c=R(n),i=[];for(let u=0;u<t;u++){const f=new Array(o);for(let h=0;h<o;h++)f[h]=c()*o|0;const a=r(f);a!=null&&Number.isFinite(a)&&i.push(a)}if(!i.length)return null;i.sort((u,f)=>u-f);const l=u=>i[Math.min(i.length-1,Math.max(0,Math.round(u*(i.length-1))))];return{lo:l(s),hi:l(e),median:l(.5)}}function Qn(o,r,{minCell:t=30,pctAction:n=.2,seed:s=777}={}){const e=(o||[]).length;return(r||[]).map(c=>{const i={low:[],jar:[],high:[]},l={low:[],jar:[],high:[]};(o||[]).forEach((p,y)=>{const g=p&&p.jar?p.jar[c]:null,d=p?p.liking:null;if(g==null||d==null||!Number.isFinite(+d))return;const M=+g<=2?"low":+g==3?"jar":"high";i[M].push(+d),l[M].push(y)});const u=i.jar.length?I(i.jar):null,f=p=>{const y=i[p],g=y.length,d=e?g/e:0,M=g?I(y):null,x=u!=null&&M!=null?Math.max(u-M,0):null;let w=null;if(g>=5&&i.jar.length>=5&&u!=null){const A=i.jar;w=Z(g,S=>{const v=I(A.filter((b,k)=>k<A.length));return v!=null?Math.max(v-I(S.map(b=>y[b])),0):null},{seed:s+p.length})}return{n:g,pct:d,mean:M,meanDrop:x,ci:w,reliable:g>=t,sig:!!(w&&w.lo>0),actionable:g>=t&&d>=n&&(x||0)>0}},a=f("low"),h=f("high"),m=a.pct*(a.meanDrop||0)+h.pct*(h.meanDrop||0);return{attr:c,N:e,jarMean:u,low:a,high:h,weightedPenalty:m}}).sort((c,i)=>i.weightedPenalty-c.weightedPenalty)}function U(o,r){const t=new Set(r);let n=0,s=0;for(const c of o){let i=0;for(const l of t)c.has(l)&&i++;i&&n++,s+=i}const e=o.length||1;return{items:[...r],reach:n/e,frequency:s/e,reachedCount:n}}function $(o,r,t){const n=o.length,s=new Array(n).fill(!1),e=new Set(r),c=[],i=[];for(let l=0;l<t;l++){let u=null,f=-1;for(const a of e){let h=0;for(let m=0;m<n;m++)!s[m]&&o[m].has(a)&&h++;h>f&&(f=h,u=a)}if(u==null)break;e.delete(u),c.push(u);for(let a=0;a<n;a++)o[a].has(u)&&(s[a]=!0);
1i.push({addedItem:u,k:l+1,reach:s.filter(Boolean).length/(n||1),incrementalReach:f/(n||1)})}return{items:c,curve:i}}function an(o,r){const t=[],n=(s,e)=>{if(e.length===r){t.push(e.slice());return}for(let c=s;c<o.length;c++)e.push(o[c]),n(c+1,e),e.pop()};return n(0,[]),t}function Gn(o,r,{maxSetSize:t=null,exhaustiveCap:n=2e5,topM:s=10,seed:e=909}={}){const c=r.length,i=t||Math.min(c,8),l=h=>{let m=0;for(let p=2;p<=h;p++)m+=Math.log(p);return m},u=(h,m)=>Math.round(Math.exp(l(h)-l(m)-l(h-m))),f=[];for(let h=1;h<=i;h++){const m=u(c,h);let p,y=[],g;if(m<=n){g="exhaustive";const w=an(r,h).map(A=>U(o,A)).sort((A,S)=>S.reach-A.reach||S.frequency-A.frequency);p=w[0],y=w.slice(0,s)}else{g="greedy";const w=$(o,r,h);p=U(o,w.items),y=[p]}const d=o.length,M=p.items,x=Z(d,w=>{let A=0;for(const S of w){let v=!1;for(const b of M)if(o[S].has(b)){v=!0;break}v&&A++}return A/w.length},{seed:e+h});f.push({setSize:h,method:g,best:{...p,ci:x},top:y})}const a=$(o,r,i).curve;return{perSize:f,greedyCurve:a}}function Hn(o,r,{rule:t="selected",threshold:n=4}={}){return(o||[]).map(s=>{var i;const e=(i=s.answers)==null?void 0:i[r],c=new Set;if(t==="selected")Array.isArray(e)?e.forEach(l=>c.add(String(l))):e!=null&&e!==""&&c.add(String(e));else if(e&&typeof e=="object")for(const[l,u]of Object.entries(e))Number.isFinite(+u)&&+u>=n&&c.add(String(l));return c})}const B=(o,r,t)=>{for(let n=1;n<o.length;n++){const s=r[n-1]-t[n-1],e=r[n]-t[n];if(s===0)return o[n-1];if(s*e<0){const c=s/(s-e);return o[n-1]+c*(o[n]-o[n-1])}}return null};function Xn(o,{points:r=200,boot:t=500,seed:n=4321}={}){const s=(o||[]).filter(g=>g&&[g.tc,g.ch,g.ex,g.te].every(d=>Number.isFinite(+d))),e=s.length;if(e<5)return null;const c=s.flatMap(g=>[+g.tc,+g.ch,+g.ex,+g.te]),i=Math.min(...c),l=Math.max(...c),u=(l-i)/(r-1)||1,f=[];for(let g=0;g<r;g++)f.push(i+g*u);const a=g=>{const d=g.length,M=k=>f.map(N=>g.filter(E=>k(E,N)).length/d),x=M((k,N)=>+k.tc>=N),w=M((k,N)=>+k.ch>=N),A=w.map(k=>1-k),S=M((k,N)=>+k.ex<=N),v=S.map(k=>1-k),b=M((k,N)=>+k.te<=N);return{tooCheap:x,cheap:w,notCheap:A,expensive:S,notExpensive:v,tooExpensive:b,PMC:B(f,x,A),PME:B(f,b,v),OPP:B(f,x,b),IPP:B(f,A,v)}},h=a(s),m=R(n),p={PMC:[],PME:[],OPP:[],IPP:[]};for(let g=0;g<t;g++){const d=new Array(e);for(let x=0;x<e;x++)d[x]=s[m()*e|0];const M=a(d);for(const x of["PMC","PME","OPP","IPP"])M[x]!=null&&p[x].push(M[x])}const y={};for(const g of["PMC","PME","OPP","IPP"]){const d=p[g].sort((M,x)=>M-x);y[g]=d.length?{lo:d[Math.round(.025*(d.length-1))],hi:d[Math.round(.975*(d.length-1))]}:null}return{N:e,grid:f,...h,ci:y,acceptableRange:[h.PMC,h.PME]}}function Yn(o,r){const t=l=>+l>=5?.75:+l==4?.25:+l==3?.1:0,n=(o||[]).filter(l=>[l.ch,l.ex].every(u=>Number.isFinite(+u)));if(n.length<5||!r||!r.length)return null;const s=r.map(l=>{let u=0;for(const f of n){const a=t(f.atCheap),h=t(f.atExpensive);let m=0;if(l<=+f.ch)m=a;else if(l>=+f.ex)m=h;else{const p=(l-+f.ch)/(+f.ex-+f.ch||1);m=a+(h-a)*p}u+=Math.max(0,m)}return u/n.length}),e=s.map((l,u)=>l*r[u]),c=e.indexOf(Math.max(...e)),i=s.indexOf(Math.max(...s));return{trial:s,revenue:e,revMaxPrice:r[c],reachMaxPrice:r[i]}}function Zn(o,r){const t=(r||[]).length;if(!t||!o||!o.length)return null;const n=o.map((l,u)=>r.reduce((f,a)=>f+(a[u]?1:0),0)/t),s=n.map((l,u)=>l*o[u]),e=s.indexOf(Math.max(...s)),c=n.map(l=>Math.sqrt(l*(1-l)/t)),i=o.slice(1).map((l,u)=>{const f=o[u],a=n[u],h=n[u+1],m=(h-a)/((a+h)/2||1),p=(l-f)/((f+l)/2||1);return p?m/p:null});return{N:t,prices:o,demand:n,revenue:s,se:c,revMaxPrice:o[e],maxRevenue:s[e],elasticity:i}}function jn(o,r){const t=(n,s)=>{var i;const e=(i=n.answers)==null?void 0:i[s],c=Number(e);return Number.isFinite(c)?c:null};return(o||[]).map(n=>({tc:t(n,r.tooCheap),ch:t(n,r.cheap),ex:t(n,r.expensive),te:t(n,r.tooExpensive)})).filter(n=>[n.tc,n.ch,n.ex,n.te].every(s=>s!=null))}function Jn(o,r,t){var c;const n=(t||[]).map(i=>Number(i.price!=null?i.price:i.key)).filter(i=>Number.isFinite(i)),s=(t||[]).filter(i=>Number.isFinite(Number(i.price!=null?i.price:i.key))),e=[];for(const i of o||[]){const l=(c=i.answers)==null?void 0:c[r];if(!l||typeof l!="object")continue;const u=s.map(f=>{const a=l[f.key];return a===1||a==="1"||String(a)==="1"?1:a==null||a===""?null:0});u.some(f=>f!=null)&&e.push(u.map(f=>f||0))}return{prices:n,buy:e}}function cn(o,r,t=5){const n=[];for(const s of o||[]){const e=Number(s&&s.answers?s.answers[r]:NaN);Number.isFinite(e)&&e>=1&&e<=t&&n.push(e)}return n}function Kn(o,r,{points:t=5}={}){const n=cn(o,r,t),s=n.length;if(!s)return null;const e=(t+1)/2,c=Array.from({length:t},(h,m)=>n.filter(p=>p===m+1).length),i=c.map(h=>h/s),l=n.filter(h=>h>e).length,u=n.filter(h=>h<e).length,f=s-l-u,a=n.reduce((h,m)=>h+m,0)/s;return{N:s,points:t,mid:e,dist:c,distPct:i,mean:a,centered:a-e,netValence:(l-u)/s*100,pctPos:l/s*100,pctNeg:u/s*100,pctNeutral:f/s*100,pctStrongPos:n.filter(h=>h===t).length/s*100,pctStrongNeg:n.filter(h=>h===1).length/s*100}}function un(o,r){if(!o.length||!r.length)return 0;let t=0,n=0;for(const s of o)for(const e of r)s>e?t++:s<e&&n++;return(t-n)/(o.length*r.length)}function fn(o,r){const t=o.length,n=r.length;if(!t||!n)return{U:0,z:0,p:1};const s=o.map(d=>({v:d,g:0})).concat(r.map(d=>({v:d,g:1}))).sort((d,M)=>d.v-M.v),e=s.length,c=new Array(e);let i=0;for(;i<e;){let d=i;for(;d+1<e&&s[d+1].v===s[i].v;)d++;const M=(i+d)/2+1;for(let x=i;x<=d;x++)c[x]=M;i=d+1}let l=0;for(let d=0;d<e;d++)s[d].g===0&&(l+=c[d]);const u=l-t*(t+1)/2,f=Math.min(u,t*n-u),a=t*n/2;let h=0;for(i=0;i<e;){let d=i;for(;d+1<e&&s[d+1].v===s[i].v;)d++;const M=d-i+1;h+=M*M*M-M,i=d+1}const m=t*n/12*(e+1-h/(e*(e-1)||1)),p=Math.sqrt(m),y=p?(f-a+.5)/p:0,g=p?2*(1-V(Math.abs(y))):1;return{U:f,z:y,p:Math.max(0,Math.min(1,g))}}function nt(o,r){const t=(o||[]).map(Number).filter(Number.isFinite),n=(r||[]).map(Number).filter(Number.isFinite);if(t.length<3||n.length<3)return{nPos:t.length,nNeg:n.length,ok:!1,reason:"small"};const s=i=>{const l=i.slice().sort((f,a)=>f-a),u=l.length>>1;return l.length%2?l[u]:(l[u-1]+l[u])/2},e=un(t,n),{p:c}=fn(t,n);return{nPos:t.length,nNeg:n.length,ok:!0,medPos:s(t),medNeg:s(n),meanPos:t.reduce((i,l)=>i+l,0)/t.length,meanNeg:n.reduce((i,l)=>i+l,0)/n.length,delta:e,p:c,pass:e>=.474&&c<.05}}
1function hn(o,r,t,n){const s=new Array(o).fill(0),e=[];for(let c=0;c<t;c++){const i=Array.from({length:o},(u,f)=>f);for(let u=o-1;u>0;u--){const f=n()*(u+1)|0,a=i[u];i[u]=i[f],i[f]=a}i.sort((u,f)=>s[u]-s[f]);const l=i.slice(0,r).sort((u,f)=>u-f);l.forEach(u=>s[u]++),e.push(l)}return e}function T(o,r,t){const n=new Array(r).fill(0),s=new Map;for(const m of o){for(const p of m)n[p]++;for(let p=0;p<m.length;p++)for(let y=p+1;y<m.length;y++){const g=m[p]*r+m[y];s.set(g,(s.get(g)||0)+1)}}const e=o.length,c=t*e/r;let i=0;for(const m of n)i+=(m-c)**2;const l=r*(r-1)/2,u=l?t*(t-1)/2*e/l:0;let f=0;for(const m of s.values())f+=(m-u)**2;const a=f+(l-s.size)*u*u;let h=0;for(let m=1;m<o.length;m++){const p=new Set(o[m-1]);for(const y of o[m])p.has(y)&&h++}return 1e3*i+10*a+h}function mn(o,r,t,n,s=2){const e=o.map(i=>i.slice());let c=T(e,r,t);for(let i=0;i<s;i++)for(let l=0;l<e.length;l++)for(let u=0;u<e[l].length;u++)for(let f=0;f<3;f++){const a=n()*r|0;if(e[l].includes(a))continue;const h=e[l][u];e[l][u]=a;const m=T(e,r,t);m<c?c=m:e[l][u]=h}return e}function tt(o,r,t,n=30,{seed:s=12345,iters:e=150}={}){o=Math.max(2,o|0),r=Math.max(2,Math.min(r|0,o-1)),t=Math.max(1,t|0),n=Math.max(1,n|0);const c=R(s),i=[];for(let l=0;l<n;l++){let u=null,f=1/0;for(let a=0;a<e;a++){const h=hn(o,r,t,c),m=T(h,o,r);m<f&&(f=m,u=h)}i.push(mn(u,o,r,c))}return{versions:i,K:o,k:r,T:t,seed:s}}function et(o){if(!o||!o.versions||!o.versions.length)return null;const{K:r,k:t,T:n}=o,s=new Array(r).fill(0),e=Array.from({length:r},(a,h)=>h),c=new Set,i=a=>{for(;e[a]!==a;)e[a]=e[e[a]],a=e[a];return a};for(const a of o.versions)for(const h of a){for(const m of h)s[m]++;for(let m=0;m<h.length;m++)for(let p=m+1;p<h.length;p++){const y=h[m],g=h[p];c.add(y<g?y+","+g:g+","+y);const d=i(y),M=i(g);d!==M&&(e[d]=M)}}let l=!0;const u=i(0);for(let a=1;a<r;a++)if(i(a)!==u){l=!1;break}const f=n*t/r;return{K:r,k:t,T:n,nVersions:o.versions.length,appearancesPerRespondent:+f.toFixed(2),minAppear:Math.min(...s),maxAppear:Math.max(...s),pairCoverage:+(c.size/(r*(r-1)/2)).toFixed(3),connected:l,ok:f>=3&&l}}function Q(o,r,{iters:t=400,lr:n=.6,u0:s=null,lambda:e=.02}={}){const c=s?s.slice():new Array(r).fill(0);if(!o.length)return{u:c,share:new Array(r).fill(100/r)};const i=o.length;for(let a=0;a<t;a++){const h=new Array(r).fill(0);for(const p of o){let y=-1/0;for(const x of p.items)c[x]>y&&(y=c[x]);let g=0;for(const x of p.items)g+=Math.exp(c[x]-y);for(const x of p.items)h[x]-=Math.exp(c[x]-y)/g;h[p.b]+=1;let d=-1/0;for(const x of p.items)-c[x]>d&&(d=-c[x]);let M=0;for(const x of p.items)M+=Math.exp(-c[x]-d);for(const x of p.items)h[x]+=Math.exp(-c[x]-d)/M;h[p.w]-=1}for(let p=0;p<r;p++)c[p]+=n*(h[p]/i-e*c[p]);const m=c.reduce((p,y)=>p+y,0)/r;for(let p=0;p<r;p++)c[p]-=m}const l=Math.max(...c),u=c.map(a=>Math.exp(a-l)),f=u.reduce((a,h)=>a+h,0);return{u:c,share:u.map(a=>100*a/f)}}function rt(o,r,t,n,{boot:s=30,seed:e=4242}={}){if(!n||!n.versions||!n.versions.length||!t||!t.length)return null;const c=t.length,i={};t.forEach((v,b)=>{i[v]=b});const l=[];for(const v of o||[]){const b=v&&v.answers?v.answers[r]:null;if(!b||!Array.isArray(b.picks)||b.v==null)continue;const k=n.versions[b.v];if(!k)continue;const N=[];b.picks.forEach((E,z)=>{const F=k[z];if(!F||!E)return;const O=i[E.b],C=i[E.w];O==null||C==null||O===C||!F.includes(O)||!F.includes(C)||N.push({items:F,b:O,w:C})}),N.length&&l.push(N)}const u=l.flat();if(u.length<4)return null;const f=new Array(c).fill(0),a=new Array(c).fill(0),h=new Array(c).fill(0);for(const v of u){for(const b of v.items)h[b]++;f[v.b]++,a[v.w]++}const{u:m,share:p}=Q(u,c,{}),y=R(e),g=Array.from({length:c},()=>[]),d=l.length;for(let v=0;v<s;v++){const b=[];for(let N=0;N<d;N++){const E=y()*d|0;for(const z of l[E])b.push(z)}const{share:k}=Q(b,c,{iters:120,lr:.6,u0:m});for(let N=0;N<c;N++)g[N].push(k[N])}const M=t.map((v,b)=>{const k=h[b]?(f[b]-a[b])/h[b]:0,N=h[b]?f[b]/h[b]:0,E=h[b]?a[b]/h[b]:0,z=h[b]?Math.sqrt(Math.max(0,N+E-k*k)/h[b]):0,F=g[b].slice().sort((O,C)=>O-C);return{id:v,B:f[b],W:a[b],N:h[b],netBW:k*100,netSE:z*100,share:p[b],u:m[b],ciLo:F.length?F[Math.floor(.025*(F.length-1))]:p[b],ciHi:F.length?F[Math.floor(.975*(F.length-1))]:p[b]}});M.sort((v,b)=>b.share-v.share),M.forEach((v,b)=>{v.rank=b+1});const x=[];for(let v=1;v<M.length;
1v++)x.push({i:v,gap:M[v-1].share-M[v].share});x.sort((v,b)=>b.gap-v.gap);const w=new Set(x.slice(0,2).map(v=>v.i)),A=["must","nice","deprioritize"];let S=0;return M.forEach((v,b)=>{w.has(b)&&(S=Math.min(S+1,2)),v.tier=A[S]}),{K:c,N:l.length,totalSets:u.length,items:M}}function st(o,r=120,t=150,n=6){const s=new Array(r*t).fill(0),e=Math.ceil(3*n),c=1/(2*n*n);for(const l of o||[]){if(!l||!Number.isFinite(l.x)||!Number.isFinite(l.y))continue;const u=l.x*r,f=l.y*t;for(let a=Math.max(0,f-e|0);a<=Math.min(t-1,Math.ceil(f+e));a++){const h=a+.5-f;for(let m=Math.max(0,u-e|0);m<=Math.min(r-1,Math.ceil(u+e));m++){const p=m+.5-u;s[a*r+m]+=Math.exp(-(p*p+h*h)*c)}}}let i=0;for(const l of s)l>i&&(i=l);if(i>0)for(let l=0;l<s.length;l++)s[l]/=i;return{grid:s,gw:r,gh:t,max:i}}function pn(o,r,t=null){const n=[];for(const s of o||[]){const e=s&&s.answers?s.answers[r]:null;if(!(!e||!Array.isArray(e.taps)))for(const c of e.taps)c&&Number.isFinite(c.x)&&Number.isFinite(c.y)&&(t==null||c.pol===t)&&n.push(c)}return n}function ot(o,r){const t=(o||[]).filter(l=>{const u=l&&l.answers?l.answers[r]:null;return u&&Array.isArray(u.taps)&&u.taps.length}),n=t.length;if(!n)return null;const s=pn(o,r),e=s.filter(l=>l.pol==="pos").length,c=s.filter(l=>l.pol==="neg").length,i=t.map(l=>{const u=l.answers[r].taps.map(f=>f.t).filter(f=>Number.isFinite(f));return u.length?Math.min(...u):null}).filter(l=>l!=null).sort((l,u)=>l-u);return{N:n,totalTaps:s.length,tapsPerResp:+(s.length/n).toFixed(2),hasPolarity:e+c>0,posTaps:e,negTaps:c,polarityNet:s.length?+((e-c)/(e+c||1)*100).toFixed(0):0,medFirstTapMs:i.length?i[i.length>>1]:null}}const gn=(o,r)=>{let t=0;for(let n=0;n<o.length;n++)t+=o[n]*r[n];return t};function dn(o,r){const t=r.length,n=o.map((s,e)=>[...s,r[e]]);for(let s=0;s<t;s++){let e=s;for(let i=s+1;i<t;i++)Math.abs(n[i][s])>Math.abs(n[e][s])&&(e=i);if(Math.abs(n[e][s])<1e-12)continue;[n[s],n[e]]=[n[e],n[s]];const c=n[s][s];for(let i=s;i<=t;i++)n[s][i]/=c;for(let i=0;i<t;i++){if(i===s)continue;const l=n[i][s];if(l)for(let u=s;u<=t;u++)n[i][u]-=l*n[s][u]}}return n.map(s=>s[t])}function yn(o){const r=o.length,t=o.map((n,s)=>[...n,...Array.from({length:r},(e,c)=>s===c?1:0)]);for(let n=0;n<r;n++){let s=n;for(let c=n+1;c<r;c++)Math.abs(t[c][n])>Math.abs(t[s][n])&&(s=c);Math.abs(t[s][n])<1e-12&&(t[s][n]+=1e-9),[t[n],t[s]]=[t[s],t[n]];const e=t[n][n];for(let c=0;c<2*r;c++)t[n][c]/=e;for(let c=0;c<r;c++){if(c===n)continue;const i=t[c][n];for(let l=0;l<2*r;l++)t[c][l]-=i*t[n][l]}}return t.map(n=>n.slice(r))}function bn(o){const r=[];let t=0;for(const n of o)r.push(t),t+=n.levels.length-1;return{off:r,K:t}}function Mn(o,r,t,n){const s=new Array(n).fill(0);for(let e=0;e<r.length;e++){const c=o[e];c>0&&(s[t[e]+(c-1)]=1)}return s}function vn(o,r,t,n){const s=o.map(c=>new Array(c.levels.length).fill(0)),e=[];for(let c=0;c<r;c++){const i=[],l=new Set;for(let u=0;u<t;u++){let f,a,h=0;do f=o.map((m,p)=>{const y=m.levels.map((g,d)=>d);for(let g=y.length-1;g>0;g--){const d=n()*(g+1)|0,M=y[g];y[g]=y[d],y[d]=M}return y.sort((g,d)=>s[p][g]-s[p][d]),y[0]}),a=f.join(","),h++;while(l.has(a)&&h<12);l.add(a),f.forEach((m,p)=>s[p][m]++),i.push(f)}e.push(i)}return e}function lt(o,{tasks:r=10,concepts:t=3,none:n=!0,nVersions:s=20,seed:e=13}={}){const c=R(e),i=[];for(let l=0;l<s;l++)i.push(vn(o,r,t,c));return{versions:i,T:r,C:t,none:n,nAttrs:o.length,seed:e}}function xn(o,r,{iters:t=60,tol:n=1e-7,ridge:s=.05}={}){let e=new Array(r).fill(0),c=null;for(let l=0;l<t;l++){const u=new Array(r).fill(0),f=Array.from({length:r},()=>new Array(r).fill(0));for(const m of o){const p=m.concepts.map(w=>gn(e,w)),y=Math.max(...p),g=p.map(w=>Math.exp(w-y)),d=g.reduce((w,A)=>w+A,0),M=g.map(w=>w/d),x=new Array(r).fill(0);
1m.concepts.forEach((w,A)=>{for(let S=0;S<r;S++)x[S]+=M[A]*w[S]}),m.concepts.forEach((w,A)=>{const S=(A===m.chosen?1:0)-M[A];for(let b=0;b<r;b++)u[b]+=S*w[b];const v=w.map((b,k)=>b-x[k]);for(let b=0;b<r;b++)for(let k=0;k<r;k++)f[b][k]+=M[A]*v[b]*v[k]})}for(let m=0;m<r;m++)f[m][m]+=s,u[m]-=s*e[m];c=f;const a=dn(f,u);let h=0;for(let m=0;m<r;m++)e[m]+=a[m],h=Math.max(h,Math.abs(a[m]));if(h<n)break}const i=new Array(r).fill(0);try{const l=yn(c);for(let u=0;u<r;u++)i[u]=Math.sqrt(Math.max(0,l[u][u]))}catch{}return{beta:e,se:i}}function at(o,r,t,n){if(!n||!n.versions||!t||!t.length)return null;const s=!!n.none,{off:e,K:c}=bn(t),i=c+(s?1:0),l=[];let u=0,f=0;const a=new Set;for(const g of o||[]){const d=g&&g.answers?g.answers[r]:null;if(!d||!Array.isArray(d.choices)||d.v==null)continue;const M=n.versions[d.v];M&&(a.add(g.id||g),d.choices.forEach((x,w)=>{const A=M[w];if(!A)return;const S=A.map(b=>Mn(b,t,e,i));let v;if(x==="none"||x===A.length){if(!s)return;const b=new Array(i).fill(0);b[i-1]=1,S.push(b),v=S.length-1,u++}else{const b=Number(x);if(!(b>=0&&b<A.length))return;if(s){const k=new Array(i).fill(0);k[i-1]=1,S.push(k)}v=b}f++,l.push({concepts:S,chosen:v})}))}if(l.length<8)return null;const{beta:h,se:m}=xn(l,i),p=t.map((g,d)=>{const M=[0],x=[0];for(let v=1;v<g.levels.length;v++)M.push(h[e[d]+(v-1)]),x.push(m[e[d]+(v-1)]);const w=M.reduce((v,b)=>v+b,0)/M.length,A=M.map(v=>v-w),S=Math.max(...A)-Math.min(...A);return{id:g.id,name:g.name,levels:g.levels.map((v,b)=>({label:v.label,partworth:A[b],se:x[b]})),range:S}}),y=p.reduce((g,d)=>g+d.range,0)||1;return p.forEach(g=>{g.importance=g.range/y*100}),p.sort((g,d)=>d.importance-g.importance),{attrs:p,noneASC:s?h[i-1]:null,nonePct:f?+(u/f*100).toFixed(1):0,N:a.size,nChoices:f}}function it(o,r,t=!1){if(!o)return[];const n={};o.attrs.forEach(l=>{n[l.id]=l});const s=r.map(l=>{let u=0;for(const f in l){const a=n[f];a&&a.levels[l[f]]&&(u+=a.levels[l[f]].partworth)}return u});t&&o.noneASC!=null&&s.push(o.noneASC);const e=Math.max(...s),c=s.map(l=>Math.exp(l-e)),i=c.reduce((l,u)=>l+u,0)||1;return c.map(l=>+(100*l/i).toFixed(1))}function ct(o,r){const t=[],n=[];let s=null;for(const f of o||[]){const a=f&&f.answers?f.answers[r]:null;!a||!Number.isFinite(a.measuredMs)||(t.push(a.measuredMs),n.push(a.hidden?1:0),s==null&&Number.isFinite(a.targetMs)&&(s=a.targetMs))}const e=t.length;if(!e)return null;const c=t.slice().sort((f,a)=>f-a),i=c[e>>1],l=s??i,u=t.filter(f=>Math.abs(f-l)>150).length;return{N:e,targetMs:l,medianMs:i,minMs:c[0],maxMs:c[e-1],driftPct:+(u/e*100).toFixed(0),hiddenPct:+(n.reduce((f,a)=>f+a,0)/e*100).toFixed(0)}}function ut(o,r,{bins:t=40}={}){const n=[];for(const a of o||[]){const h=a&&a.answers?a.answers[r]:null;!h||!Number.isFinite(h.watchedMs)||n.push({skipped:!!h.skipped,skipAtMs:Number.isFinite(h.skipAtMs)?h.skipAtMs:null,watchedMs:h.watchedMs,durationMs:Number.isFinite(h.durationMs)?h.durationMs:null,completed:!!h.completed})}const s=n.length;if(!s)return null;const e=n.map(a=>a.durationMs).filter(a=>Number.isFinite(a)&&a>0),c=e.length?Math.round(e.reduce((a,h)=>a+h,0)/e.length):Math.max(...n.map(a=>a.watchedMs)),i=a=>{const h=a.filter(m=>m!=null).sort((m,p)=>m-p);return h.length?h[h.length>>1]:null},l=a=>a.skipped&&a.skipAtMs!=null?a.skipAtMs:a.watchedMs,u=[],f=[];for(let a=0;a<=t;a++){const h=c*a/t;u.push(Math.round(h)),f.push(+(n.filter(m=>l(m)>=h-1).length/s*100).toFixed(1))}return{N:s,duration:c,skipRate:+(n.filter(a=>a.skipped).length/s*100).toFixed(0),completionRate:+(n.filter(a=>a.completed).length/s*100).toFixed(0),medTimeToSkipMs:i(n.filter(a=>a.skipped).map(a=>a.skipAtMs)),medPctWatched:+((i(n.map(a=>a.durationMs?a.watchedMs/a.durationMs:a.completed?1:0))||0)*100).toFixed(0),grid:u,retention:f}}function ft(o,r,{binMs:t=1e3}={}){const n=[];let s=0,e=0;for(const f of o||[]){const a=f&&f.answers?f.answers[r]:null;if(!(!a||!Array.isArray(a.markers))){e++,Number.isFinite(a.durationMs)&&(s=Math.max(s,a.durationMs));for(const h of a.markers)h&&Number.isFinite(h.tMs)&&(n.push(h),s=Math.max(s,h.tMs))}}if(!e||!n.length)return null;const c=Math.max(1,Math.ceil(s/t)),i=new Array(c).fill(0),l=new Array(c).fill(0);for(const f of n){const a=Math.min(c-1,Math.max(0,Math.floor(f.tMs/t)));f.valence>0?i[a]++:l[a]++}const u=Array.from({length:c},(f,a)=>Math.round((a+.5)*t));return{N:e,maxT:s,binMs:t,grid:u,pos:i,neg:l,net:i.map((f,a)=>f-l[a]),totalMarkers:n.length}}const P=o=>o&&o.length?o.reduce((r,t)=>r+t,0)/o.length:null;function q(o,r){const t=[];for(const n of o||[]){const s=n&&n.answers?n.answers[r]:null,e=Number(s);s!=null&&s!==""&&Number.isFinite(e)&&t.push(e)}return t}function D(o,r,t){const n=new Set((Array.isArray(t)?t:[t]).map(String));let s=0,e=0;for(const c of o||[]){const i=c&&c.answers?c.answers[r]:null;if(i==null||i===""||Array.isArray(i)&&!i.length)continue;e+=1,(Array.isArray(i)?i.map(String):[String(i)]).some(u=>n.has(u))&&(s+=1)}return{hit:s,base:e,share:e?s/e:null}}const wn=o=>{const r=/«([^«»]+)»/.exec(String(o||""));return r?r[1]:null},L=o=>o&&typeof o=="object"?o.ru??o.en??o.uz??Object.values(o).find(Boolean):o;function kn(o,r,{min:t=1,max:n=5}={}){const s=[];for(const a of r||[]){const h=q(o,a.xQid),m=q(o,a.yQid),p=a.zQid?q(o,a.zQid):[],y=Math.min(h.length,m.length);y&&s.push({key:a.key,label:a.label,x:P(h),y:P(m),z:p.length?P(p):null,n:y})}if(!s.length)return null;const e=P(s.map(a=>a.x)),c=P(s.map(a=>a.y)),i=(t+n)/2;
1s.forEach(a=>{a.strong=a.x>e&&a.y>c,a.score=a.x+a.y});const l=[...s].sort((a,h)=>h.score-a.score),u=Math.max(1,Math.round(l.length*.25)),f=new Set(l.slice(0,u).map(a=>a.key));return s.forEach(a=>{a.winner=f.has(a.key)}),{items:s,xMean:e,yMean:c,mid:i,n:Math.max(...s.map(a=>a.n))}}function An(o,r,t,{seenValues:n=["yes","maybe"],notValues:s=["no"]}={}){const e=new Set(n.map(String)),c=new Set(s.map(String)),i=h=>{const m=h&&h.answers?String(h.answers[r]):"";return e.has(m)?"seen":c.has(m)?"not":null},l=(o||[]).filter(h=>i(h)==="seen"),u=(o||[]).filter(h=>i(h)==="not"),f=D(o,r,n),a=(t||[]).map(h=>{const m=q(l,h.qid),p=q(u,h.qid),y=P(m),g=P(p);return{qid:h.qid,label:h.label,seenMean:y,notMean:g,lift:y!=null&&g!=null?y-g:null,p:Y(m,p),nSeen:m.length,nNot:p.length}});return{reach:f.share,nExposed:l.length,nControl:u.length,metrics:a}}function Sn(o,r,t,n){const s=a=>tn(o,a,n,null).rows,e=s(r),c=s(t),i={};n.forEach(a=>{i[a.key]={key:a.key,label:a.label}}),e.forEach(a=>{i[a.key]&&(i[a.key].perf=a.mean,i[a.key].nPerf=a.nAns)}),c.forEach(a=>{i[a.key]&&(i[a.key].imp=a.mean,i[a.key].nImp=a.nAns)});const l=Object.values(i).filter(a=>a.perf!=null&&a.imp!=null);if(!l.length)return null;const u=P(l.map(a=>a.perf)),f=P(l.map(a=>a.imp));return l.forEach(a=>{a.fixFirst=a.imp>=f&&a.perf<=u,a.gap=a.imp-a.perf}),l.sort((a,h)=>h.fixFirst-a.fixFirst||h.gap-a.gap),{items:l,perfMid:u,impMid:f}}function Nn(o,{awareQid:r,brandKey:t="s",considerQid:n,considerYes:s=["yes"],useQid:e,useYes:c=["yes","earlier"],cepQid:i}={}){const l=r?D(o,r,t):null,u=n?D(o,n,s):null,f=e?D(o,e,c):null;let a=null;if(i){let m=0,p=0,y=0;for(const g of o||[]){const d=g&&g.answers?g.answers[i]:null;if(d==null)continue;const M=(Array.isArray(d)?d:[d]).map(String).filter(x=>x&&x!=="none");p+=1,m+=M.length,M.length&&(y+=1)}a=p?{avgSituations:m/p,anyShare:y/p,base:p}:null}const h=[];l&&h.push({key:"aware",share:l.share,base:l.base}),u&&h.push({key:"consider",share:u.share,base:u.base}),f&&h.push({key:"use",share:f.share,base:f.base});for(let m=1;m<h.length;m++)h[m].convFromPrev=h[m-1].share?h[m].share/h[m-1].share:null;return{steps:h,cep:a}}function Fn(o,r,t,n){const s=r.map(c=>{const i=Object.fromEntries(t.map(f=>[f,P(q(o,c.prefix+f))])),l=t.map(f=>i[f]).filter(f=>f!=null),u=l.length?l.reduce((f,a)=>f+a,0)/l.length:null;return{key:c.key,label:c.label,composite:u,byDim:i}}),e=n?J(o,n):null;return e&&s.forEach(c=>{c.finalShare=e.baseW?(e.counts[c.key]||0)/e.baseW*100:null}),s.sort((c,i)=>(i.composite||0)-(c.composite||0)),{items:s}}function Pn(o){const r={};for(const t of o||[]){const n=t&&t.stimulusArm;n&&(r[n]=(r[n]||0)+1)}return r}function En(o,r,t){const n={};return(r||[]).forEach(s=>{n[s]=(o||[]).filter(e=>e&&e.stimulusArm===s)}),(t||[]).map(s=>{const e=(r||[]).map(l=>{const u=q(n[l],s.qid);return{arm:l,mean:P(u),n:u.length,vals:u}}),c=e.filter(l=>l.mean!=null),i=c.length?c.reduce((l,u)=>u.mean>l.mean?u:l):null;return e.forEach(l=>{l.best=!!(i&&l.arm===i.arm),l.pVsBest=i&&l.arm!==i.arm&&l.mean!=null?Y(i.vals,l.vals):null}),e.forEach(l=>delete l.vals),{qid:s.qid,label:s.label,bestArm:i?i.arm:null,cells:e}})}function ht(o,r){const t=o&&o.solution;if(!t)return null;const n=o.questions||o.questionnaire||[],s=e=>n.find(c=>(c.id||c.qid)===e);if(t==="insights"||t==="ideas"){const e=t==="insights"?{x:"_rel",y:"_fresh",z:"_emo"}:{x:"_try",y:"_uni",z:"_emo"},c=t==="insights"?"q_ins":"q_idea",l=[...new Set(n.map(f=>{const a=new RegExp("^"+c+"(\\d+)"+e.x+"$").exec(f.id||f.qid||"");return a?a[1]:null}).filter(Boolean))].map(f=>({key:c+f,label:wn(L((s(c+f+e.x)||{}).text))||c+f,xQid:c+f+e.x,yQid:c+f+e.y,zQid:c+f+e.z})),u=kn(r,l,{min:1,max:5});return u?{type:"quadrant",axisX:t==="insights"?"relevance":"trial",axisY:t==="insights"?"freshness":"uniqueness",...u}:null}if(t==="posttest"){const e=[{qid:"q_consider",label:"ÑаÑÑмоÑÑение"},{qid:"q_image",label:"пÑивлекаÑелÑноÑÑÑ"}].filter(c=>s(c.qid));return{type:"funnelShift",...An(r,"q_seen",e)}}if(t==="nps"){const e=s("q_touch");if(!e)return null;const c=(e.matrixItems||[]).map(l=>({key:l.key,label:L(l.label)})),i=Sn(r,"q_touch","q_imp",c);return i?{type:"importancePerformance",...i}:null}if(t==="brandhealth")return{type:"brandFunnel",...Nn(r,{awareQid:"m_aware",brandKey:"s",considerQid:"q_consider",considerYes:["yes"],useQid:"q_use",useYes:["yes","earlier"],cepQid:"q_cep"})};if(t==="naming"){const e=s("q_nm_final");if(!e)return null;const c=(e.options||[]).filter(i=>i.value!=="none").map((i,l)=>
1({key:i.value,label:L(i.label),prefix:"q_nm"+(l+1)}));return{type:"names",...Fn(r,c,["_like","_mem","_pron","_fit"],"q_nm_final")}}return null}function mt(o,r){if(!o||o.stimulusMonadic!==!0)return null;const t=o.stimuli||[];if(t.length<2)return null;const n=Pn(r),s=t.filter(l=>n[l.id]).map(l=>l.id);if(s.length<2)return{type:"monadic",armsWaiting:!0,stimuli:t,present:n,metrics:[]};const c=(o.questions||o.questionnaire||[]).filter(l=>l.role==="main"&&!l.infoOnly&&(l.type==="scale"||l.type==="nps")).map(l=>({qid:l.id||l.qid,label:L(l.text)})),i=Object.fromEntries(t.map(l=>[l.id,l.label||l.key]));return{type:"monadic",arms:s,armLabel:i,present:n,metrics:En(r,s,c)}}function pt(o,r){const t=r&&r.showLogic,n=t&&Array.isArray(t.conds)&&t.conds.length?t.conds:r&&r.showIf&&r.showIf.qid?[{qid:r.showIf.qid,op:"is",values:r.showIf.values}]:[];if(!n.length)return!1;const s=o&&o.randomizers||[],e=i=>{const l=s.find(f=>f&&(f.id===i||f.code&&String(f.code)===String(i)));if(!l)return null;const u=(l.arms||[]).map(String).filter(Boolean);return u.length?u:null},c=i=>{if(!i||!i.qid)return!1;const l=e(i.qid);if(!l)return!1;const u=(i.values||[]).map(String);return u.length?i.op==="is"?!l.some(f=>u.includes(f)):i.op==="isNot"?l.every(f=>u.includes(f)):!1:!1};return t&&t.mode==="any"?n.every(c):n.some(c)}function gt(o,r,{w:t=null}={}){var a;const n={},s={},e={};let c=0,i=0;for(const h of o||[]){const m=(a=h.answers)==null?void 0:a[r];if(m==null||m===""||Array.isArray(m)&&!m.length)continue;const p=Array.isArray(m)?m.map(String):[String(m)];c+=1;const y=_(t,h);i+=y,p.forEach((g,d)=>{d===0&&(n[g]=(n[g]||0)+y),s[g]=(s[g]||0)+y*(d+1),e[g]=(e[g]||0)+y})}const l=Array.from(new Set([...Object.keys(n),...Object.keys(e)])),u={},f={};for(const h of l)u[h]=i?Math.round((n[h]||0)/i*1e3)/10:0,f[h]=e[h]?Math.round(s[h]/e[h]*100)/100:null;return{first:n,firstPct:u,meanRank:f,ranked:e,base:c,baseW:i}}const _n={tashkent:"tashkent_reg"};function dt(o){const r=o&&o.regions||{},t={};for(const[e,c]of Object.entries(r))c&&Number.isFinite(Number(c.adultsK))&&(t[e]=Number(c.adultsK));const n=o&&o.national,s=n&&Number.isFinite(Number(n.adultsK))?Number(n.adultsK):Object.values(t).reduce((e,c)=>e+c,0);return{byRegion:t,totalK:s,asOf:o&&(o.asOf||o.year)||"",regionCount:Object.keys(t).length}}function qn(o){const r=Number(o);if(!Number.isFinite(r)||r<=0)return null;if(r>=1e3){const t=r/1e3,n=t>=10?Math.round(t):Math.round(t*10)/10;return"â "+String(n).replace(".",",")+" млн"}return r>=10?"â "+Math.round(r)+" ÑÑÑ.":"â "+Math.round(r*1e3).toLocaleString("ru-RU").replace(/ /g," ")}function yt(o,r,t){const n=o||{};if(!t||!t.totalK)return{ok:!1,reason:"Ð½ÐµÑ Ñамки"};if(n.market&&String(n.market).toUpperCase()!=="UZ")return{ok:!1,reason:"Ñамка ÑолÑко Ð´Ð»Ñ Ð£Ð·Ð±ÐµÐºÐ¸ÑÑана"};const s=Array.isArray(n.quotaDims)?n.quotaDims:[],e=p=>s.find(y=>y&&y.key===p&&Array.isArray(y.cells)&&y.cells.length),c=e("region"),i=e("gender")||e("sex"),l=e("age");if(!c||!i||!l)return{ok:!1,reason:"Ð½ÐµÑ ÐºÐ²Ð¾Ñ Ð¿Ð¾ ÑегионÑ, Ð¿Ð¾Ð»Ñ Ð¸ возÑаÑÑÑ"};const u=typeof c.label=="string"?c.label:c.label&&(c.label.ru||c.label.en)||"";if(/пÑедпÑиÑÑ|enterprise|компани/i.test(u))return{ok:!1,reason:"B2B: квоÑа Ñегионов по пÑедпÑиÑÑиÑм"};let f=0;const a=[];for(const p of c.cells){const y=_n[p.value]||p.value,g=Number(p.target)||0;if(g){const d=(r||[]).filter(M=>M&&M.quota&&M.quota[c.key]===p.value).length;if(d<g*.75)return{ok:!1,reason:`Ñегион «${y}» недобÑан: ${d} из ${g}`}}if(!Number.isFinite(t.byRegion[y]))return{ok:!1,reason:`Ñегион «${y}» не в Ñамке`};f+=t.byRegion[y],a.push(y)}if(!a.length)return{ok:!1,reason:"пÑÑÑÐ°Ñ ÐºÐ²Ð¾Ñа Ñегионов"};const h=a.length>=t.regionCount;h&&(f=t.totalK);const m=h?"по ÑÑÑане":a.length===1?"по вÑбÑÐ°Ð½Ð½Ð¾Ð¼Ñ ÑегионÑ":`по ${a.length} Ñегионам`;return{ok:!0,adultsK:f,where:m,regions:a,national:h,asOf:t.asOf,note:`оÑенка по Ñамке stat.uz ${t.asOf||""} (взÑоÑлÑе 18+, ${m}); даннÑе не взвеÑивалиÑÑ â оÑиенÑиÑ, не пеÑепиÑÑ`.replace(" "," ")}}function bt(o,r,{base:t=null,n=null}={}){if(!r||!r.ok)return null;const s=Number(o);if(!Number.isFinite(s)||s<0||t!=null&&n!=null&&n>0&&t<n*.9)return null;const e=r.adultsK*s/100,c=qn(e);return c?{peopleK:Math.round(e*10)/10,disp:c+" взÑоÑлÑÑ
"}:null}export{G as DK_TOKENS,rn as OTHER_SUFFIX,dt as adultsFrame,nt as anchorSeparation,Vn as answeredBase,Rn as applyFilters,pt as branchDisabled,Nn as brandFunnel,at as cbcAnalyze,it as cbcSimShare,X as dimValue,zn as dimsOf,J as distChoice,K as distNumeric,j as dvValueLabel,Kn as emotionSummary,cn as emotionVals,qn as fmtPeopleK,An as funnelShift,Jn as gaborFromMatrix,Zn as gaborGranger,lt as generateCbcDesign,tt as generateMaxDiffDesign,ct as glanceMetrics,Ln as groupByDim,st as heatmapKde,ot as heatmapMetrics,pn as heatmapTaps,Dn as histBins,Sn as importancePerformance,W as isNum,Un as langDimOf,tn as matrixDist,rt as maxdiffAnalyze,et as maxdiffBalance,Q as maxdiffMNL,On as moePct,ft as momentMetrics,En as monadicCompare,mt as monadicOutcome,Fn as namesSummary,Yn as nmsCurve,Bn as npsOf,Tn as openThemes,sn as otherKeyOf,on as otherOptionOf,Wn as otherTexts,Qn as penaltyAnalysis,bt as peopleEstimate,yt as peopleScope,kn as quadrantMap,gt as rankDist,Hn as reachSetsFrom,nn as scalePoints,q as scaleVals,D as shareOf,ht as solutionOutcomes,Pn as stimulusArmsPresent,Gn as turf,$n as twoPropP,Cn as validRows,Xn as vanWestendorp,ut as videoSkipMetrics,jn as vwResp,In as weightsForQuota,Y as welchP};
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.