@yuktishaalaa/yuktai 5.3.7 → 5.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +71 -0
- package/dist/{agent-JGLAYQMX.mjs → agent-G67IA7MY.mjs} +1 -1
- package/dist/chunk-P2PBML6K.mjs +11 -0
- package/dist/chunk-UO7IGXCC.mjs +13 -0
- package/dist/index.d.mts +45 -20
- package/dist/index.d.ts +45 -20
- package/dist/index.js +94 -81
- package/dist/index.mjs +44 -42
- package/dist/rag-Q3LUXSSD.mjs +1 -0
- package/dist/transformers-rag-MQZRMFTG.mjs +1 -0
- package/package.json +2 -2
- package/vanilla/README.md +1 -0
- package/vanilla/index.js +1348 -766
- package/vanilla/index.min.js +54 -53
- package/dist/chunk-3VGU4YGK.mjs +0 -6
- package/dist/chunk-XQMQZMAH.mjs +0 -7
- package/dist/rag-MKBAGH6J.mjs +0 -1
- package/dist/transformers-rag-HW4QKA5T.mjs +0 -1
package/vanilla/index.min.js
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
/*! yuktai vanilla 5.3.
|
|
1
|
+
/*! yuktai vanilla 5.3.9 — accessible data grid, page agents and WCAG tools for plain HTML.
|
|
2
2
|
* No framework, no API keys, runs in the browser. ISC © Sandeep Miriyala, Yuktishaalaa AI Lab.
|
|
3
|
-
* Built from github.com/sandeepmiriyala03/yuktai (vanilla/src + src/agentic, src/grid, src/core;
|
|
4
|
-
"use strict";(()=>{var ro=Object.defineProperty;var io=(e,t)=>{for(var n in t)ro(e,n,{get:t[n],enumerable:!0})};var pr={};io(pr,{AUDIT_RULES:()=>it,DEFAULT_A11Y_SETTINGS:()=>ct,FONT_MAX:()=>ur,FONT_MIN:()=>dr,FONT_STEP:()=>sn,accessibleName:()=>me,aggregate:()=>qe,analyzePage:()=>_n,answerGridQuestion:()=>zt,applyGridFilters:()=>Ee,askAboutPage:()=>_t,askInsight:()=>qt,auditToJSON:()=>Kt,auditToMarkdown:()=>It,clearFilters:()=>Fn,clearSort:()=>Gn,comparePeriods:()=>Yn,contrastRatio:()=>rt,countGrid:()=>Tn,createA11yCopilot:()=>Vt,createContextIndex:()=>jt,createGridTools:()=>nt,createVoiceA11yController:()=>ln,detectAnomalies:()=>ze,detectPageIntent:()=>jn,executeGridQuery:()=>Te,filterGrid:()=>Nn,findMentionedColumn:()=>ge,getColumns:()=>Dn,getRow:()=>Rn,getRowId:()=>re,gridPassages:()=>Zn,groupBy:()=>qn,highlightRows:()=>tt,moveGridRowFocus:()=>gr,openRow:()=>yt,pagePassages:()=>Xn,parseAmount:()=>bt,parseColor:()=>Fe,parseGridQuery:()=>Ne,parseVoiceA11yCommand:()=>Ar,planTasks:()=>wt,readFormFields:()=>Kn,relativeLuminance:()=>Jt,reviewDesign:()=>Xt,reviewForm:()=>Vn,reviewForms:()=>ot,runGridQuery:()=>On,runQaAudit:()=>fe,runTasks:()=>Yt,searchGrid:()=>Mn,selectRow:()=>ft,sortGrid:()=>$n,summarizeRows:()=>Ue,toGridToolColumns:()=>Re,tokenize:()=>at,trend:()=>Jn,wcagPlugin:()=>Je});var oo={en:{found:e=>`${e} row(s) found.`,count:e=>`${e} row(s).`,columns:"Grid columns retrieved.",rowFound:"Row found.",notFound:e=>`Row "${e}" not found.`,noneFound:"None of the given rows were found.",highlighted:e=>`${e} row(s) highlighted.`,selected:e=>`Row "${e}" selected.`,opened:e=>`Row "${e}" opened.`,notSupported:e=>`This grid does not support "${e}".`,emptyQuery:"Please enter something to search.",noIds:"No row IDs were given.",unknownColumn:e=>`Unknown column "${e}".`,badOperator:e=>`Unknown filter operator "${e}".`,badValue:"The filter value is not valid for this column.",filtered:e=>`Filter applied: ${e} row(s) match.`,filtersCleared:"All filters cleared.",sorted:(e,t)=>`Sorted by ${e} (${t==="asc"?"ascending":"descending"}).`,sortCleared:"Sorting cleared.",internal:"Something went wrong while running this action."},te:{found:e=>`${e} \u0C35\u0C30\u0C41\u0C38(\u0C32\u0C41) \u0C26\u0C4A\u0C30\u0C3F\u0C15\u0C3E\u0C2F\u0C3F.`,count:e=>`\u0C2E\u0C4A\u0C24\u0C4D\u0C24\u0C02 ${e} \u0C35\u0C30\u0C41\u0C38\u0C32\u0C41.`,columns:"\u0C15\u0C3E\u0C32\u0C2E\u0C4D\u200C\u0C32 \u0C35\u0C3F\u0C35\u0C30\u0C3E\u0C32\u0C41.",rowFound:"\u0C35\u0C30\u0C41\u0C38 \u0C26\u0C4A\u0C30\u0C3F\u0C15\u0C3F\u0C02\u0C26\u0C3F.",notFound:e=>`"${e}" \u0C35\u0C30\u0C41\u0C38 \u0C26\u0C4A\u0C30\u0C15\u0C32\u0C47\u0C26\u0C41.`,noneFound:"\u0C07\u0C1A\u0C4D\u0C1A\u0C3F\u0C28 \u0C35\u0C30\u0C41\u0C38\u0C32\u0C47\u0C35\u0C40 \u0C26\u0C4A\u0C30\u0C15\u0C32\u0C47\u0C26\u0C41.",highlighted:e=>`${e} \u0C35\u0C30\u0C41\u0C38(\u0C32\u0C41) \u0C39\u0C48\u0C32\u0C48\u0C1F\u0C4D \u0C1A\u0C47\u0C36\u0C3E\u0C28\u0C41.`,selected:e=>`"${e}" \u0C0E\u0C02\u0C1A\u0C41\u0C15\u0C41\u0C28\u0C4D\u0C28\u0C3E\u0C28\u0C41.`,opened:e=>`"${e}" \u0C24\u0C46\u0C30\u0C3F\u0C1A\u0C3E\u0C28\u0C41.`,notSupported:e=>`\u0C08 \u0C2A\u0C1F\u0C4D\u0C1F\u0C3F\u0C15\u0C32\u0C4B "${e}" \u0C38\u0C4C\u0C15\u0C30\u0C4D\u0C2F\u0C02 \u0C32\u0C47\u0C26\u0C41.`,emptyQuery:"\u0C35\u0C46\u0C24\u0C15\u0C21\u0C3E\u0C28\u0C3F\u0C15\u0C3F \u0C0F\u0C26\u0C48\u0C28\u0C3E \u0C30\u0C3E\u0C2F\u0C02\u0C21\u0C3F.",noIds:"\u0C35\u0C30\u0C41\u0C38 ID\u0C32\u0C41 \u0C07\u0C35\u0C4D\u0C35\u0C32\u0C47\u0C26\u0C41.",unknownColumn:e=>`"${e}" \u0C05\u0C28\u0C47 \u0C15\u0C3E\u0C32\u0C2E\u0C4D \u0C32\u0C47\u0C26\u0C41.`,badOperator:e=>`"${e}" \u0C05\u0C28\u0C47 \u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D \u0C35\u0C3F\u0C27\u0C3E\u0C28\u0C02 \u0C32\u0C47\u0C26\u0C41.`,badValue:"\u0C08 \u0C15\u0C3E\u0C32\u0C2E\u0C4D\u200C\u0C15\u0C3F \u0C08 \u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D \u0C35\u0C3F\u0C32\u0C41\u0C35 \u0C38\u0C30\u0C3F\u0C2A\u0C4B\u0C26\u0C41.",filtered:e=>`\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D \u0C35\u0C47\u0C36\u0C3E\u0C28\u0C41: ${e} \u0C35\u0C30\u0C41\u0C38\u0C32\u0C41 \u0C38\u0C30\u0C3F\u0C2A\u0C4B\u0C2F\u0C3E\u0C2F\u0C3F.`,filtersCleared:"\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D\u0C32\u0C28\u0C4D\u0C28\u0C40 \u0C24\u0C40\u0C38\u0C47\u0C36\u0C3E\u0C28\u0C41.",sorted:(e,t)=>`${e} \u0C2A\u0C4D\u0C30\u0C15\u0C3E\u0C30\u0C02 \u0C15\u0C4D\u0C30\u0C2E\u0C02 (${t==="asc"?"\u0C06\u0C30\u0C4B\u0C39\u0C23":"\u0C05\u0C35\u0C30\u0C4B\u0C39\u0C23"}).`,sortCleared:"\u0C15\u0C4D\u0C30\u0C2E\u0C02 \u0C24\u0C40\u0C38\u0C47\u0C36\u0C3E\u0C28\u0C41.",internal:"\u0C08 \u0C2A\u0C28\u0C3F \u0C1A\u0C47\u0C38\u0C4D\u0C24\u0C41\u0C02\u0C21\u0C17\u0C3E \u0C38\u0C2E\u0C38\u0C4D\u0C2F \u0C35\u0C1A\u0C4D\u0C1A\u0C3F\u0C02\u0C26\u0C3F."}};function he(e){return oo[e.locale??"en"]}function Ie(e,t){return{success:!0,message:e,data:t}}function X(e,t){return{success:!1,message:t,error:{code:e}}}var Gr=["contains","equals","startsWith","endsWith","greaterThan","lessThan","between"];function re(e,t="id"){let n=e==null?void 0:e[t];return n==null?"":String(n)}function Oe(e){return String(e??"").normalize("NFC").toLowerCase().trim()}function Lr(e){if(typeof e=="number")return Number.isFinite(e)?e:null;let t=String(e??"").trim();if(t==="")return null;let n=Number(t);return Number.isFinite(n)?n:null}function Pr(e){if(e instanceof Date)return e.getTime();let t=new Date(String(e??"")).getTime();return Number.isFinite(t)?t:null}function Hr(e){return(Array.isArray(e)?e:typeof e=="string"?e.split(","):[]).map(n=>String(n).trim()).filter(Boolean)}function Sn(e,t){let n=Oe(t);return e.columns.find(r=>Oe(r.key)===n||Oe(r.label)===n)}function Ht(e,t){return e.data.find(n=>re(n,e.rowKey)===t)}function ao(e,t){return e[t]}function so(e,t,n){let r=ao(e,n.key),a=n.type??"text";if(a==="number"||a==="date"){let l=a==="number"?Lr:Pr,s=l(r);if(s===null)return!1;if(t.operator==="between"){let[A,m]=t.value,f=l(A),u=l(m);return f!==null&&u!==null&&s>=Math.min(f,u)&&s<=Math.max(f,u)}let d=l(t.value);if(d===null)return!1;switch(t.operator){case"equals":return s===d;case"greaterThan":return s>d;case"lessThan":return s<d;default:break}}let i=Oe(r),o=Oe(t.value);switch(t.operator){case"equals":return i===o;case"startsWith":return i.startsWith(o);case"endsWith":return i.endsWith(o);case"contains":return i.includes(o);default:return!1}}function lo(e,t){let n=t.type??"text",r=n==="date"?Pr:Lr;return e.operator==="between"?n==="text"||!Array.isArray(e.value)||e.value.length!==2?!1:r(e.value[0])!==null&&r(e.value[1])!==null:e.operator==="greaterThan"||e.operator==="lessThan"?n!=="text"&&r(e.value)!==null:!Array.isArray(e.value)&&String(e.value).trim()!==""}function Ee(e,t,n){return n.length?Or({data:e,columns:t},n):e}function Re(e){return e.map(t=>({key:String(t.key),label:t.label,type:t.type==="number"?"number":t.type==="date"?"date":"text"}))}function Or(e,t){return e.data.filter(n=>t.every(r=>{let a=Sn(e,r.key);return a?so(n,r,a):!0}))}function Mn(e,t){var o;let n=he(e),r=Oe(t);if(!r)return X("INVALID_INPUT",n.emptyQuery);let a=e.data.filter(l=>e.columns.some(s=>Oe(l[s.key]).includes(r))),i=a.map(l=>re(l,e.rowKey)).filter(Boolean);return(o=e.onHighlightRows)==null||o.call(e,i),Ie(n.found(a.length),a)}function Tn(e){return Ie(he(e).count(e.data.length),e.data.length)}function Dn(e){return Ie(he(e).columns,e.columns)}function Rn(e,t){let n=he(e),r=String(t??"").trim();if(!r)return X("INVALID_INPUT",n.noIds);let a=Ht(e,r);return a?Ie(n.rowFound,a):X("NOT_FOUND",n.notFound(r))}function tt(e,t){let n=he(e),r=Hr(t);if(r.length===0)return X("INVALID_INPUT",n.noIds);if(!e.onHighlightRows)return X("NOT_SUPPORTED",n.notSupported("highlight"));let a=r.filter(i=>Ht(e,i)!==void 0);return a.length===0?X("NOT_FOUND",n.noneFound):(e.onHighlightRows(a),Ie(n.highlighted(a.length),a))}function ft(e,t){let n=he(e),r=String(t??"").trim();return r?e.onSelectRow?Ht(e,r)?(e.onSelectRow(r),Ie(n.selected(r),r)):X("NOT_FOUND",n.notFound(r)):X("NOT_SUPPORTED",n.notSupported("select")):X("INVALID_INPUT",n.noIds)}function yt(e,t){let n=he(e),r=String(t??"").trim();return r?e.onOpenRow?Ht(e,r)?(e.onOpenRow(r),Ie(n.opened(r),r)):X("NOT_FOUND",n.notFound(r)):X("NOT_SUPPORTED",n.notSupported("open")):X("INVALID_INPUT",n.noIds)}function Nn(e,t){let n=he(e),r=Sn(e,(t==null?void 0:t.key)??"");if(!r)return X("INVALID_INPUT",n.unknownColumn(String((t==null?void 0:t.key)??"")));if(!Gr.includes(t.operator))return X("INVALID_INPUT",n.badOperator(String(t.operator)));let a={...t,key:r.key};if(!lo(a,r))return X("INVALID_INPUT",n.badValue);if(!e.onFiltersChange)return X("NOT_SUPPORTED",n.notSupported("filter"));let i=[...(e.filters??[]).filter(l=>l.key!==r.key),a],o=Or(e,i).length;return e.onFiltersChange(i),Ie(n.filtered(o),{filters:i,count:o})}function Fn(e){let t=he(e);return e.onFiltersChange?(e.onFiltersChange([]),Ie(t.filtersCleared,[])):X("NOT_SUPPORTED",t.notSupported("clear filters"))}function $n(e,t,n="asc"){let r=he(e),a=Sn(e,t);if(!a)return X("INVALID_INPUT",r.unknownColumn(String(t)));if(n!=="asc"&&n!=="desc")return X("INVALID_INPUT",r.badValue);if(!e.onSortChange)return X("NOT_SUPPORTED",r.notSupported("sort"));let i={key:a.key,direction:n};return e.onSortChange(i),Ie(r.sorted(a.label,n),i)}function Gn(e){let t=he(e);return e.onSortChange?(e.onSortChange(null),Ie(t.sortCleared,null)):X("NOT_SUPPORTED",t.notSupported("clear sort"))}var co={search:"Search all columns for text. Matching rows are highlighted.",count:"Count the rows currently in the grid.",columns:"List the grid's columns with their keys, labels and types.",get_row:"Get one row by its ID.",highlight:"Highlight one or more rows by ID without filtering the grid.",select:"Select one row by ID.",open:"Open one row by ID to show its full details.",filter:"Filter the grid by one column. Replaces any existing filter on that column.",clear_filters:"Remove all filters.",sort:"Sort the grid by one column, ascending or descending.",clear_sort:"Remove sorting."},$r={en:{search:"Search",count:"Count",columns:"Columns",get_row:"Get row",highlight:"Highlight",select:"Select",open:"Open",filter:"Filter",clear_filters:"Clear filters",sort:"Sort",clear_sort:"Clear sort"},te:{search:"\u0C35\u0C46\u0C24\u0C41\u0C15\u0C41",count:"\u0C32\u0C46\u0C15\u0C4D\u0C15",columns:"\u0C15\u0C3E\u0C32\u0C2E\u0C4D\u200C\u0C32\u0C41",get_row:"\u0C35\u0C30\u0C41\u0C38 \u0C1A\u0C42\u0C2A\u0C41",highlight:"\u0C39\u0C48\u0C32\u0C48\u0C1F\u0C4D",select:"\u0C0E\u0C02\u0C1A\u0C41\u0C15\u0C4B",open:"\u0C24\u0C46\u0C30\u0C41\u0C35\u0C41",filter:"\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D",clear_filters:"\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D\u0C32\u0C41 \u0C24\u0C40\u0C38\u0C47\u0C2F\u0C3F",sort:"\u0C15\u0C4D\u0C30\u0C2E\u0C02",clear_sort:"\u0C15\u0C4D\u0C30\u0C2E\u0C02 \u0C24\u0C40\u0C38\u0C47\u0C2F\u0C3F"}};async function uo(e,t){try{return t()}catch{return X("INTERNAL",he(e).internal)}}function nt(e,t={}){let n=t.name??"yuktai_grid",r=$r[e.locale??"en"],a=s=>{var d;return((d=t.descriptions)==null?void 0:d[s])??co[s]},i={id:{type:"string",description:"Row ID"}},o=e.columns.map(s=>s.key);return[{id:"search",available:!0,schema:{type:"object",properties:{query:{type:"string"}},required:["query"]},run:s=>Mn(e,String(s.query??""))},{id:"count",available:!0,schema:{type:"object",properties:{}},run:()=>Tn(e)},{id:"columns",available:!0,schema:{type:"object",properties:{}},run:()=>Dn(e)},{id:"get_row",available:!0,schema:{type:"object",properties:i,required:["id"]},run:s=>Rn(e,String(s.id??""))},{id:"highlight",available:!!e.onHighlightRows,schema:{type:"object",properties:{ids:{type:"array",items:{type:"string"},description:"Row IDs"}},required:["ids"]},run:s=>tt(e,Hr(s.ids))},{id:"select",available:!!e.onSelectRow,schema:{type:"object",properties:i,required:["id"]},run:s=>ft(e,String(s.id??""))},{id:"open",available:!!e.onOpenRow,schema:{type:"object",properties:i,required:["id"]},run:s=>yt(e,String(s.id??""))},{id:"filter",available:!!e.onFiltersChange,schema:{type:"object",properties:{key:{type:"string",enum:o},operator:{type:"string",enum:Gr},value:{description:"Text or number; for 'between' an array of two numbers or dates"}},required:["key","operator","value"]},run:s=>Nn(e,{key:String(s.key??""),operator:String(s.operator??""),value:s.value})},{id:"clear_filters",available:!!e.onFiltersChange,schema:{type:"object",properties:{}},run:()=>Fn(e)},{id:"sort",available:!!e.onSortChange,schema:{type:"object",properties:{key:{type:"string",enum:o},direction:{type:"string",enum:["asc","desc"]}},required:["key"]},run:s=>$n(e,String(s.key??""),s.direction==="desc"?"desc":"asc")},{id:"clear_sort",available:!!e.onSortChange,schema:{type:"object",properties:{}},run:()=>Gn(e)}].filter(s=>s.available).map(s=>({name:`${n}_${s.id}`,title:$r.en[s.id],description:a(s.id),label:r[s.id],inputSchema:s.schema,execute:d=>uo(e,()=>s.run(d??{}))}))}var Be=e=>String(e??"").normalize("NFC").toLowerCase().replace(/\s+/g," ").trim(),Ao=new Set("show me find list get give which who what all the a an rows row records record entries with where that are is have has having and or of for in on to please display only those whose any".split(" "));function bt(e){let t=Be(e).replace(/(₹|rs\.?|inr|\$|usd|€|£)/g," ").match(/(-?\d[\d,]*(?:\.\d+)?|-?\.\d+)\s*(k|thousand|lakhs?|lacs?|crores?|cr|mn|million|m|bn|billion)?(?![\p{L}])/u);if(!t)return null;let n=Number(t[1].replace(/,/g,""));if(!Number.isFinite(n))return null;let r=t[2]??"",a=/^k|thousand/.test(r)?1e3:/^la/.test(r)?1e5:/^(crore|cr)/.test(r)?1e7:/^(m|mn|million)$/.test(r)?1e6:/^(bn|billion)$/.test(r)?1e9:1;return n*a}function qr(e){let t=new Set([Be(e.label),Be(e.key),Be(e.key.replace(/[_-]+/g," ").replace(/([a-z])([A-Z])/g,"$1 $2"))]);for(let n of Array.from(t))n.endsWith("s")?t.add(n.slice(0,-1)):t.add(`${n}s`);return Array.from(t).filter(n=>n.length>1)}function ge(e,t,n){let r=` ${Be(e)} `,a;for(let i of t)if(!(n&&(i.type??"text")!==n))for(let o of qr(i)){let l=o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");new RegExp(`(^|[^\\p{L}\\p{M}\\p{N}])${l}($|[^\\p{L}\\p{M}\\p{N}])`,"u").test(r)&&(!a||o.length>a.length)&&(a={column:i,length:o.length})}return a==null?void 0:a.column}var go=/amount|balance|total|price|salary|value|due|revenue|cost|fee|sales|outstanding|paid/i;function Ln(e){let t=e.filter(n=>n.type==="number");return t.find(n=>go.test(`${n.key} ${n.label}`))??t[0]}var Ot=/(>=|=>|>|\bover\b|\babove\b|\bmore than\b|\bgreater than\b|\bexceeds?\b|\bexceeding\b|\bhigher than\b|\bat least\b|\bminimum\b|\bmin\b|కంటే ఎక్కువ)/,Pn=/(<=|=<|<|\bunder\b|\bbelow\b|\bless than\b|\blower than\b|\bat most\b|\bmaximum\b|\bmax\b|\bup to\b|కంటే తక్కువ)/,zr=/\b(after|since|from)\b/,po=/\b(before|until|till)\b/,ho="(?:\\s*(?:k|thousand|lakhs?|lacs?|crores?|cr|mn|million|m|bn|billion))?",Hn=`(?:\u20B9|rs\\.?\\s*|\\$)?\\s*-?\\d[\\d,]*(?:\\.\\d+)?${ho}`;function Ne(e,t,n={}){var k;let r={filters:[],search:[],sort:null,limit:null,notes:[],explanation:""},a=Be(e).replace(/[?!]+/g," ").replace(/\.(?!\d)/g," ").trim(),i=[],o=a.match(/\b(top|first|bottom|last|lowest|highest)\s+(\d+)\b/);o&&(r.limit=Number(o[2]),a=a.replace(o[0],` ${o[1]} `));let l=a.match(/\b(?:sort(?:ed)?|order(?:ed)?)\s+by\s+([\p{L}\p{M}\p{N} _]+?)(?:\s+(asc|ascending|desc|descending))?(?=$|,|\band\b|\bthen\b)/u),s=a.match(/\b(top|highest|largest|biggest|most|bottom|lowest|smallest|least)\b(?:\s+\d+)?\s+(?:by\s+)?([\p{L}\p{M}\p{N} _]+)/u);if(l){let b=ge(l[1],t);b&&(r.sort={key:b.key,direction:/^desc/.test(l[2]??"")?"desc":"asc"},a=a.replace(l[0]," "))}else if(s){let b=ge(s[2],t,"number")??ge(s[2],t)??Ln(t);if(b){let p=/top|highest|largest|biggest|most/.test(s[1]);r.sort={key:b.key,direction:p?"desc":"asc"},a=a.replace(new RegExp(`\\b${s[1]}\\b`)," "),!o&&/top|bottom/.test(s[1])&&(r.limit=10)}}let d=new RegExp(`\\bbetween\\s+(${Hn}|\\d{4}-\\d{2}-\\d{2})\\s+(?:and|to|-)\\s+(${Hn}|\\d{4}-\\d{2}-\\d{2})`,"u"),A;for(;A=a.match(d);){let b=a.slice(Math.max(0,(A.index??0)-40),A.index??0),p=/\d{4}-\d{2}-\d{2}/.test(A[1]),E=p?ge(b,t,"date")??t.find(h=>h.type==="date"):ge(b,t,"number")??Ln(t),Q=p?A[1]:bt(A[1]),I=p?A[2]:bt(A[2]);E&&Q!==null&&I!==null&&(r.filters.push({key:E.key,operator:"between",value:[Q,I]}),i.push(`${E.label} between ${A[1]} and ${A[2]}`)),a=a.replace(A[0]," ")}let m=a.split(new RegExp("\\s*(?:(?<!\\d),|,(?!\\d)|;|\\band\\b|(?<!(?:starts?|starting|ends?|ending|begins?|beginning)\\s)\\bwith\\b|\\bwhere\\b|\\bwho\\b|\\bthat\\b|&|\u0C2E\u0C30\u0C3F\u0C2F\u0C41)\\s*","u")).map(b=>b.trim()).filter(Boolean),f=t.filter(b=>(b.type??"text")==="text"),u=new Map;for(let b of f){let p=new Set;for(let E of(n.data??[]).slice(0,5e3)){let Q=Be(E[b.key]);if(Q&&Q.length<=40&&p.add(Q),p.size>300)break}p.size&&p.size<=300&&u.set(b.key,p)}for(let b of m){let p=r.filters.length,E=ge(b,t),Q=b.match(new RegExp(Hn,"u")),I=b.match(/\d{4}-\d{2}-\d{2}/);if(I&&(zr.test(b)||po.test(b)||Ot.test(b)||Pn.test(b))){let h=((E==null?void 0:E.type)==="date"?E:void 0)??t.find(w=>w.type==="date");if(h){let w=zr.test(b)||Ot.test(b);r.filters.push({key:h.key,operator:w?"greaterThan":"lessThan",value:I[0]}),i.push(`${h.label} ${w?"after":"before"} ${I[0]}`)}}else if(Q&&(Ot.test(b)||Pn.test(b)||(E==null?void 0:E.type)==="number"&&/\b(is|equals?)\b|=/.test(b))){let h=(E==null?void 0:E.type)==="number"?E:void 0;h||(h=Ln(t),h&&r.notes.push(`Assumed "${b}" refers to ${h.label}.`));let w=bt(Q[0]);if(h&&w!==null){let y=/at least|minimum|\bmin\b|>=|=>|at most|maximum|\bmax\b|up to|<=|=</.test(b);Ot.test(b)?(r.filters.push({key:h.key,operator:"greaterThan",value:y?w-1e-9:w}),i.push(`${h.label} ${y?"\u2265":">"} ${w.toLocaleString("en-IN")}`)):Pn.test(b)?(r.filters.push({key:h.key,operator:"lessThan",value:y?w+1e-9:w}),i.push(`${h.label} ${y?"\u2264":"<"} ${w.toLocaleString("en-IN")}`)):(r.filters.push({key:h.key,operator:"equals",value:w}),i.push(`${h.label} = ${w.toLocaleString("en-IN")}`))}}else{let h=b.match(/\b(?:starts?|starting|begins?|beginning)\s+with\s+(.+)$/),w=b.match(/\b(?:ends?|ending)\s+with\s+(.+)$/),y=b.match(/\b(?:contains?|containing|including|includes?|mentions?)\s+(.+)$/),S=b.match(/\b(?:is|equals?|=|:)\s+(.+)$/),C=h??w??y??S;if(C){let B=E??f[0],D=C[1].replace(/^["'“‘]|["'”’]$/g,"").trim();if(B&&D){let x=h?"startsWith":w?"endsWith":y?"contains":"equals";r.filters.push({key:B.key,operator:x,value:D}),i.push(`${B.label} ${x==="equals"?"is":x==="contains"?"contains":x==="startsWith"?"starts with":"ends with"} "${D}"`),E||r.notes.push(`Assumed "${b}" refers to ${B.label}.`)}}}if(r.filters.length===p)for(let[h,w]of u){let y="";for(let S of w){if(S.length<2||S.length<=y.length)continue;let C=S.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");new RegExp(`(^|[^\\p{L}\\p{M}\\p{N}])${C}($|[^\\p{L}\\p{M}\\p{N}])`,"u").test(b)&&(y=S)}if(y){let S=t.find(C=>C.key===h);r.filters.push({key:h,operator:"equals",value:y}),i.push(`${S.label} is "${y}"`)}}if(r.filters.length===p){let h=b.split(/\s+/).filter(y=>!Ao.has(y)&&!/^(top|first|bottom|last|lowest|highest|by|desc|asc|sort(ed)?)$/.test(y)),w=h.length>0&&h.every(y=>t.some(S=>qr(S).includes(y)));if(h.length&&!w&&!(E&&h.length===1)){let y=h.join(" ");/^(customers?|users?|people|items?|entries|poems?|orders?|products?|employees?|students?|members?)$/.test(y)||(r.search.push(y),i.push(`any column contains "${y}"`))}}}if(r.sort){let b=((k=t.find(p=>p.key===r.sort.key))==null?void 0:k.label)??r.sort.key;i.push(`sorted by ${b} ${r.sort.direction==="desc"?"high \u2192 low":"low \u2192 high"}`)}return r.limit&&i.push(`first ${r.limit}`),r.explanation=i.length?`Showing rows where ${i.join(", ")}.`:"No conditions understood \u2014 showing all rows.",r}function mo(e,t,n){return n==="number"?(Number(e)||0)-(Number(t)||0):n==="date"?(new Date(String(e)).getTime()||0)-(new Date(String(t)).getTime()||0):String(e??"").localeCompare(String(t??""),void 0,{numeric:!0})}function Te(e,t,n){let r=Ee(e,t,n.filters);for(let a of n.search)r=r.filter(i=>t.some(o=>Be(i[o.key]).includes(a)));if(n.sort){let a=t.find(o=>o.key===n.sort.key),i=n.sort.direction==="desc"?-1:1;r=[...r].sort((o,l)=>i*mo(o[n.sort.key],l[n.sort.key],a==null?void 0:a.type))}return n.limit&&(r=r.slice(0,n.limit)),r}function On(e,t,n={}){var l,s,d;let r=Ne(e,t.columns,{data:t.data}),a=Te(t.data,t.columns,r),i=a.map(A=>re(A,t.rowKey)).filter(Boolean);n.apply!==!1&&(r.filters.length&&((l=t.onFiltersChange)==null||l.call(t,r.filters)),r.sort&&((s=t.onSortChange)==null||s.call(t,r.sort)),i.length&&((d=t.onHighlightRows)==null||d.call(t,i)));let o=a.length?`${a.length} row(s) found. ${r.explanation}${r.notes.length?` (${r.notes.join(" ")})`:""}`:`No rows match. ${r.explanation}`;return{rows:a,ids:i,parsed:r,message:o}}function Ur(e,t){let n=(e.length-1)*t,r=Math.floor(n),a=n-r;return e[r+1]!==void 0?e[r]+a*(e[r+1]-e[r]):e[r]}function ze(e,t,n={}){let r=n.factor??1.5,a=[],i=t.filter(d=>d.type==="number"&&(!n.columns||n.columns.includes(d.key))),o=d=>d.toLocaleString("en-IN",{maximumFractionDigits:2});for(let d of i){let A=e.map(E=>Number(E[d.key])).filter(E=>Number.isFinite(E));if(A.length<5)continue;let m=[...A].sort((E,Q)=>E-Q),f=Ur(m,.25),u=Ur(m,.75),k=u-f;if(k===0)continue;let b=f-r*k,p=u+r*k;for(let E of e){let Q=Number(E[d.key]);!Number.isFinite(Q)||Q>=b&&Q<=p||a.push({rowId:re(E,n.rowKey),column:d.key,label:d.label,value:Q,kind:Q>p?"high":"low",reason:`${d.label} ${o(Q)} is far ${Q>p?"above":"below"} the typical range (${o(f)}\u2013${o(u)}).`})}}let l=n.rowKey??"id",s=new Map;for(let d of e){let A=JSON.stringify(t.filter(u=>u.key!==l).map(u=>Be(d[u.key]))),m=re(d,n.rowKey),f=s.get(A);f!==void 0?a.push({rowId:m,column:l,label:"Row",value:m,kind:"duplicate",reason:`Row ${m} has the same values as row ${f}.`}):s.set(A,m)}return a}function Ue(e,t){if(!e.length)return"No rows to summarise.";let n=[`${e.length} row(s).`],r=a=>a.toLocaleString("en-IN",{maximumFractionDigits:2});for(let a of t){let i=e.map(o=>o[a.key]);if(a.type==="number"){let o=i.map(Number).filter(Number.isFinite);if(!o.length)continue;let l=o.reduce((s,d)=>s+d,0);n.push(`${a.label}: total ${r(l)}, average ${r(l/o.length)}, range ${r(Math.min(...o))}\u2013${r(Math.max(...o))}.`)}else if(a.type==="date"){let o=i.map(s=>new Date(String(s)).getTime()).filter(Number.isFinite);if(!o.length)continue;let l=s=>new Date(s).toISOString().slice(0,10);n.push(`${a.label}: from ${l(Math.min(...o))} to ${l(Math.max(...o))}.`)}else{let o=new Map;for(let s of i){let d=String(s??"").trim();d&&o.set(d,(o.get(d)??0)+1)}if(o.size===0||o.size>Math.max(8,e.length/3))continue;let l=Array.from(o.entries()).sort((s,d)=>d[1]-s[1]).slice(0,4);n.push(`${a.label}: ${l.map(([s,d])=>`${s} (${d})`).join(", ")}.`)}}return n.join(`
|
|
5
|
-
`)}function
|
|
6
|
-
${
|
|
7
|
-
`)}`:"Nothing unusual found.",ids:o,rows:t.data.filter(s=>l.has(re(s,t.rowKey))),anomalies:i}}if(/summar|overview|describe|సారాంశం/.test(n)){let i=Ee(t.data,t.columns,t.filters??[]);return{kind:"summary",message:Ue(i,t.columns),ids:[],rows:i}}let r=On(e,t);return{kind:"query",message:r.message,ids:r.ids,rows:r.rows}}var Ut=e=>{let t=typeof e=="number"?e:Number(String(e??"").replace(/[,₹$%\s]/g,""));return Number.isFinite(t)?t:null},Yr=e=>{let t=e instanceof Date?e.getTime():new Date(String(e??"")).getTime();return Number.isFinite(t)?t:null};function qe(e,t){if(t==="count")return e.length;if(!e.length)return 0;switch(t){case"sum":return e.reduce((n,r)=>n+r,0);case"avg":return e.reduce((n,r)=>n+r,0)/e.length;case"min":return Math.min(...e);case"max":return Math.max(...e)}}function qn(e,t,n,r="sum"){let a=new Map;for(let i of e){let o=String(i[t]??"\u2014").trim()||"\u2014",l=a.get(o)??[];if(n===null||r==="count")l.push(1);else{let s=Ut(i[n]);s!==null&&l.push(s)}a.set(o,l)}return Array.from(a.entries()).map(([i,o])=>({group:i,value:qe(o,r),count:o.length})).sort((i,o)=>o.value-i.value)}function Jr(e,t,n=1){let r=new Date(e);return r.setHours(0,0,0,0),t==="week"&&r.setDate(r.getDate()-(r.getDay()-n+7)%7),t==="month"&&r.setDate(1),t==="quarter"&&r.setMonth(Math.floor(r.getMonth()/3)*3,1),t==="year"&&r.setMonth(0,1),r}function Un(e,t,n){let r=new Date(e);return t==="day"&&r.setDate(r.getDate()+n),t==="week"&&r.setDate(r.getDate()+7*n),t==="month"&&r.setMonth(r.getMonth()+n),t==="quarter"&&r.setMonth(r.getMonth()+3*n),t==="year"&&r.setFullYear(r.getFullYear()+n),r}function Yn(e,t){let n=t.referenceDate?new Date(t.referenceDate):new Date,r=Jr(n,t.period,t.weekStartsOn),a=t.toDate===!1?Un(r,t.period,1):new Date(Math.max(n.getTime()+1,r.getTime()+1)),i=Un(r,t.period,-1),o=t.toDate===!1?r:new Date(i.getTime()+(a.getTime()-r.getTime())),l=t.agg??"sum",s=new Map,d=new Map;for(let f of e){let u=Yr(f[t.dateKey]);if(u===null)continue;let k=u>=r.getTime()&&u<a.getTime()?s:u>=i.getTime()&&u<o.getTime()?d:null;if(!k)continue;let b=t.groupKey?String(f[t.groupKey]??"\u2014"):"All",p=l==="count"?1:Ut(f[t.metricKey]);p!==null&&k.set(b,[...k.get(b)??[],p])}let A=new Set([...s.keys(),...d.keys()]),m=Array.from(A).map(f=>{let u=qe(s.get(f)??[],l),k=qe(d.get(f)??[],l);return{group:f,current:u,previous:k,change:u-k,changePct:k===0?null:(u-k)/Math.abs(k)*100}});return{period:t.period,current:{from:r,to:a},previous:{from:i,to:o},rows:m}}function Jn(e,t,n,r,a="sum"){let i=new Map;for(let o of e){let l=Yr(o[t]),s=a==="count"?1:Ut(o[n]);if(l===null||s===null)continue;let d=Jr(new Date(l),r).getTime();i.set(d,[...i.get(d)??[],s])}return Array.from(i.entries()).sort((o,l)=>o[0]-l[0]).map(([o,l])=>({start:new Date(o),value:qe(l,a)}))}var fo=/rate|conversion|ratio|percent|%|score|rating|margin|ctr|avg|average/i;function yo(e){let t=e.match(/\b(today|yesterday|this|last|previous|past)\s*(day|week|month|quarter|year)?\b/);return t?t[1]==="today"?{period:"day",shift:0}:t[1]==="yesterday"?{period:"day",shift:-1}:t[2]?{period:t[2],shift:t[1]==="this"?0:-1}:null:null}var le=e=>e.toLocaleString("en-IN",{maximumFractionDigits:2}),zn=e=>e===null?"new":`${e>0?"+":""}${e.toFixed(1)}%`;function qt(e,t,n,r={}){var I;let a=e.toLowerCase(),i=n.filter(h=>h.type==="number"),o=ge(a,n,"number")??i.find(h=>/amount|revenue|sales|total|value/i.test(`${h.key} ${h.label}`))??i[0],l=n.find(h=>h.type==="date")??n.find(h=>/date|time|day|created|month/i.test(`${h.key} ${h.label}`)),s=((I=a.match(/\b(?:which|by|per|each|across|every|top|for each)\s+([\p{L}\p{M}\p{N} _]+)/u))==null?void 0:I[1])??"",d=ge(s,n,"text"),A=/how many|number of|count/.test(a),m=A?"count":/average|avg|mean/.test(a)?"avg":/\btotal\b|\bsum\b/.test(a)?"sum":o&&fo.test(`${o.key} ${o.label}`)?"avg":"sum",f=/drop|decline|decrease|fell|fall|down|worst|lost|shrink|reduc/.test(a),u=/increase|growth|grew|rise|rose|up\b|best|improv|gain/.test(a),k=/lowest|least|smallest|bottom|worst|minimum/.test(a),b=yo(a);if(!o&&!A)return{kind:"unknown",answer:"I couldn't find a numeric column to analyse.",table:[]};let p=A?"rows":o.label;if(b&&l&&(u||f||/change|compare|vs|versus/.test(a))){let h=r.referenceDate?new Date(r.referenceDate):new Date,w=b.shift?Un(h,b.period,b.shift):h,S=[...Yn(t,{dateKey:l.key,metricKey:(o==null?void 0:o.key)??l.key,groupKey:d==null?void 0:d.key,agg:m,period:b.period,referenceDate:w,toDate:b.shift===0}).rows].sort((F,U)=>f?F.change-U.change:U.change-F.change),C=S.map(F=>({[(d==null?void 0:d.label)??"Group"]:F.group,Current:le(F.current),Previous:le(F.previous),Change:le(F.change),"Change %":zn(F.changePct)}));if(!S.length)return{kind:"period-change",answer:`No ${p} data in this ${b.period} or the one before.`,table:C};let B=S[0],D=`${b.shift?"last":"this"} ${b.period} vs the ${b.period} before`,x=B.change===0?"did not change":B.change<0?`dropped ${le(Math.abs(B.change))}`:`rose ${le(B.change)}`,M=`${p} ${x} (${le(B.previous)} \u2192 ${le(B.current)}, ${zn(B.changePct)}) \u2014 ${D}.`,G=f&&B.change>=0||u&&B.change<=0;return{kind:"period-change",answer:d?G?`No ${d.label.toLowerCase()} ${f?"dropped":"grew"}. Closest is ${B.group}: ${M}`:`${B.group}: ${M}`:M,table:C}}if(/trend|over time|month by month|week by week/.test(a)&&l&&o){let h=/week/.test(a)?"week":/day|daily/.test(a)?"day":/year/.test(a)?"year":"month",w=Jn(t,l.key,o.key,h,m),y=w.map(D=>({Period:D.start.toISOString().slice(0,10),[o.label]:le(D.value)}));if(w.length<2)return{kind:"trend",answer:`Not enough ${h}s of data for a trend.`,table:y};let S=w[0].value,C=w[w.length-1].value,B=w.reduce((D,x)=>x.value>D.value?x:D);return{kind:"trend",answer:`${o.label} went from ${le(S)} to ${le(C)} over ${w.length} ${h}s (${zn(S?(C-S)/Math.abs(S)*100:null)}). Peak: ${le(B.value)} in the ${h} of ${B.start.toISOString().slice(0,10)}.`,table:y}}if(d){let h=qn(t,d.key,(o==null?void 0:o.key)??null,m),w=k?[...h].reverse():h,y=w.map(C=>({[d.label]:C.group,[`${m} of ${p}`]:le(C.value),Rows:C.count}));if(!w.length)return{kind:"group",answer:"No data.",table:y};let S=w[0];return{kind:"group",answer:`${S.group} has the ${k?"lowest":"highest"} ${m==="sum"?"total":m==="avg"?"average":m} ${p}: ${le(S.value)} (across ${w.length} ${d.label.toLowerCase()} groups).`,table:y}}let E=A?t.map(()=>1):t.map(h=>Ut(h[o.key])).filter(h=>h!==null),Q=qe(E,m);return{kind:"total",answer:`${m==="avg"?"Average":m==="count"?"Count of":m==="sum"?"Total":m} ${p}: ${le(Q)} across ${t.length} row(s).`,table:[{Metric:p,Aggregation:m,Value:le(Q)}]}}var Vr="highlight|mark|flag|sort|order|rank|arrange|summari[sz]e|summary|recap|count|how many|open|select|pick|show|filter|find|list|clear|reset|remove|detect|spot|tell";function wt(e){return e.replace(/[?!]/g," ").split(/\s*(?:;|\.(?!\d)\s*|,?\s*\band then\b|,?\s*\bthen\b|,?\s*\bafter that\b|,?\s*\bfinally\b|,?\s*\bnext\b|ఆ తర్వాత)\s*/i).flatMap(r=>r.split(new RegExp(`\\s*(?:,|\\band\\b)\\s+(?=(?:${Vr})\\b)`,"i"))).map(r=>r.trim()).filter(r=>r.length>1).map(r=>({action:bo(r),text:r}))}function bo(e){let t=e.toLowerCase();return/^(clear|reset|remove)\b/.test(t)?"clear":/unusual|anomal|outlier|suspicious|odd ones|duplicate/.test(t)?"anomalies":/summari[sz]e|summary|what changed|recap|overview/.test(t)?"summarize":/^(highlight|mark|flag)\b/.test(t)?"highlight":/^(sort|order|rank|arrange)\b/.test(t)?"sort":/^(count|how many)\b/.test(t)?"count":/^(open|go to)\b/.test(t)&&!/filtered|results?/.test(t)?"open":/^(select|pick)\b/.test(t)?"select":"filter"}function wo(e){return e.replace(new RegExp(`^\\s*(?:${Vr}|open|go to)\\b`,"i")," ").replace(/\b(the|filtered|results?|rows?|records?|entries|items?|ones|them|those|only|me|all)\b/gi," ").replace(/\s+/g," ").trim()}function Wr(e,t){var i;let n=((i=t.find(o=>o.key===e.key))==null?void 0:i.label)??e.key,r=Array.isArray(e.value)?`${e.value[0]}\u2013${e.value[1]}`:typeof e.value=="number"?e.value.toLocaleString("en-IN",{maximumFractionDigits:2}):`"${e.value}"`,a={contains:"contains",equals:"is",startsWith:"starts with",endsWith:"ends with",greaterThan:">",lessThan:"<",between:"between"}[e.operator];return`${n} ${a} ${r}`}async function Yt(e,t,n={}){var b,p,E,Q,I,h,w,y,S;let r=wt(e),{columns:a,data:i}=t,o=[...t.filters??[]],l=[],s=null,d=[],A=()=>Te(i,a,{filters:o,search:l,sort:s,limit:null,notes:[],explanation:""}),m={rows:A().length,filters:[...o]},f=[],u=()=>({...t,filters:o});for(let C=0;C<r.length;C++){let B=r[C],D=wo(B.text),x;try{switch(B.action){case"clear":{o=[],l=[],s=null,d=[],(b=t.onFiltersChange)==null||b.call(t,[]),(p=t.onSortChange)==null||p.call(t,null),(E=t.onHighlightRows)==null||E.call(t,[]),x={...B,success:!0,message:`Cleared filters, sorting and highlights. ${i.length} row(s) shown.`};break}case"filter":{let M=Ne(D,a,{data:i});if(!M.filters.length&&!M.search.length&&!M.sort){x={...B,success:!0,message:`Showing ${A().length} row(s) with the current filters.`};break}for(let F of M.filters)o=[...o.filter(U=>U.key!==F.key),F];l=[...l,...M.search],M.sort&&(s=M.sort,(Q=t.onSortChange)==null||Q.call(t,s)),(I=t.onFiltersChange)==null||I.call(t,o);let G=A(),N=G.map(F=>re(F,t.rowKey)).filter(Boolean);M.search.length&&N.length&&(d=N,(h=t.onHighlightRows)==null||h.call(t,N)),x={...B,success:!0,message:`${G.length} row(s) now shown. ${M.explanation}`,ids:N};break}case"highlight":{let M=A(),G=Ne(D,a,{data:M}),F=(G.filters.length||G.search.length?Te(M,a,{...G,sort:null,limit:G.limit}):M).map(Ae=>re(Ae,t.rowKey)).filter(Boolean);if(!F.length){x={...B,success:!1,message:`Nothing to highlight for "${D||"all rows"}".`};break}let U=tt(u(),F);U.success&&(d=U.data??F),x={...B,success:U.success,message:U.success?`Highlighted ${d.length} row(s)${D?` matching "${D}"`:""}.`:U.message,ids:d};break}case"sort":{let G=Ne(B.text,a,{data:i}).sort;if(!G){let F=ge(D,a);F&&(G={key:F.key,direction:/desc|high|large|big|most|newest|latest|z.?to.?a/i.test(B.text)?"desc":"asc"})}if(!G){x={...B,success:!1,message:`Which column should I sort by? Columns: ${a.map(F=>F.label).join(", ")}.`};break}s=G,(w=t.onSortChange)==null||w.call(t,s);let N=((y=a.find(F=>F.key===s.key))==null?void 0:y.label)??s.key;x={...B,success:!0,message:`Sorted by ${N} (${s.direction==="desc"?"high \u2192 low":"low \u2192 high"}).`};break}case"count":{x={...B,success:!0,message:`${A().length} row(s) shown${d.length?`, ${d.length} highlighted`:""}.`};break}case"anomalies":{let M=A(),G=ze(M,a,{rowKey:t.rowKey}),N=Array.from(new Set(G.map(F=>F.rowId)));if(N.length){let F=tt(u(),N);F.success&&(d=F.data??N)}x={...B,success:!0,message:G.length?`${N.length} unusual row(s): ${G.slice(0,5).map(F=>F.reason).join(" ")}`:"Nothing unusual in the shown rows.",ids:N};break}case"open":case"select":{let M=A(),N=M.find(Ae=>D&&re(Ae,t.rowKey).toLowerCase()===D.toLowerCase())??Te(M,a,Ne(D,a,{data:M}))[0]??(D?void 0:M[0]);if(!N){x={...B,success:!1,message:`No row matches "${D}".`};break}let F=re(N,t.rowKey),U=B.action==="open"?yt(u(),F):ft(u(),F);x={...B,success:U.success,message:U.message,ids:[F]};break}case"summarize":{let M=A();x={...B,success:!0,message:`${Kr(m,M.length,o,s,d,a)}
|
|
8
|
-
${Ue(M,a)}`};break}}}catch(M){x={...B,success:!1,message:`This step failed: ${M instanceof Error?M.message:String(M)}`}}f.push(x),(S=n.onStep)==null||S.call(n,x,C,r.length)}let k=A().length;return{steps:f,before:m,after:{rows:k,filters:o,sort:s,highlighted:d},summary:Kr(m,k,o,s,d,a)}}function Kr(e,t,n,r,a,i){var d;let o=[`Rows: ${e.rows} \u2192 ${t}.`],l=n.filter(A=>!e.filters.some(m=>JSON.stringify(m)===JSON.stringify(A))),s=e.filters.filter(A=>!n.some(m=>JSON.stringify(A)===JSON.stringify(m)));return l.length&&o.push(`Filters added: ${l.map(A=>Wr(A,i)).join("; ")}.`),s.length&&o.push(`Filters removed: ${s.map(A=>Wr(A,i)).join("; ")}.`),r&&o.push(`Sorted by ${((d=i.find(A=>A.key===r.key))==null?void 0:d.label)??r.key} ${r.direction==="desc"?"high \u2192 low":"low \u2192 high"}.`),a.length&&o.push(`${a.length} row(s) highlighted.`),o.join(" ")}var vo="[data-yuktai-panel]";function Ce(){return typeof window<"u"&&typeof document<"u"}function Ye(e){return typeof e=="object"&&e!==null&&e.nodeType===9}function pe(e){return e||(Ce()?document:null)}function P(e,t,n={}){return Array.from(e.querySelectorAll(t)).filter(r=>!r.closest(vo)&&(n.includeHidden||Io(r)))}function Io(e){if(!Ce()||e.closest("[hidden],[aria-hidden='true']"))return!1;let t=e;for(;t;){let n=window.getComputedStyle(t);if(n.display==="none"||n.visibility==="hidden")return!1;t=t.parentElement}return!0}function ie(e){return(e??"").replace(/\s+/g," ").trim()}function oe(e,t=60){let n=ie(e);return n.length>t?`${n.slice(0,t-1)}\u2026`:n}function Qe(e){let t=[],n=e;for(;n&&n.nodeType===1&&t.length<4;){let r=n.tagName.toLowerCase();if(n.id&&/^[A-Za-z][\w-]*$/.test(n.id)){t.unshift(`${r}#${n.id}`);break}let a=n.parentElement;if(!a){t.unshift(r);break}let i=Array.from(a.children).filter(o=>o.tagName===n.tagName);t.unshift(i.length>1?`${r}:nth-of-type(${i.indexOf(n)+1})`:r),n=a}return t.join(" > ")}function Co(e,t){return e.split(/\s+/).map(n=>{var r;return ie((r=t.getElementById(n))==null?void 0:r.textContent)}).filter(Boolean).join(" ")}function me(e){let t=e.ownerDocument,n=e.getAttribute("aria-labelledby");if(n){let i=Co(n,t);if(i)return i}let r=ie(e.getAttribute("aria-label"));if(r)return r;let a=e.tagName.toLowerCase();if(a==="input"||a==="select"||a==="textarea"){let i=e.getAttribute("id");if(i){let s=t.querySelector(`label[for="${xo(i)}"]`),d=ie(s==null?void 0:s.textContent);if(d)return d}let o=e.closest("label");if(o){let s=ie(o.textContent);if(s)return s}let l=(e.getAttribute("type")??"").toLowerCase();if(l==="submit"||l==="button"||l==="reset")return ie(e.getAttribute("value"))||(l==="submit"?"Submit":"");if(l==="image")return ie(e.getAttribute("alt"))}if(a==="img")return ie(e.getAttribute("alt"));if(a==="button"||a==="a"||e.getAttribute("role")){let i=ie(e.textContent);if(i)return i;let o=Array.from(e.querySelectorAll("img[alt], svg[aria-label]")).map(l=>ie(l.getAttribute("alt")??l.getAttribute("aria-label"))).filter(Boolean).join(" ");if(o)return o}return ie(e.getAttribute("title"))}function xo(e){return typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(e):e.replace(/["\\]/g,"\\$&")}function Fe(e){if(!e)return null;let t=e.trim().toLowerCase();if(t==="transparent")return{r:0,g:0,b:0,a:0};let n=t.match(/^rgba?\(([^)]+)\)$/);if(n){let a=n[1].split(/[\s,/]+/).filter(Boolean),[i,o,l]=a.slice(0,3).map(Number),s=a[3],d=s===void 0?1:s.endsWith("%")?Number(s.slice(0,-1))/100:Number(s);return[i,o,l,d].some(A=>!Number.isFinite(A))?null:{r:i,g:o,b:l,a:d}}let r=t.match(/^#([0-9a-f]{3,8})$/);if(r){let a=r[1];return(a.length===3||a.length===4)&&(a=a.split("").map(i=>i+i).join("")),a.length!==6&&a.length!==8?null:{r:parseInt(a.slice(0,2),16),g:parseInt(a.slice(2,4),16),b:parseInt(a.slice(4,6),16),a:a.length===8?parseInt(a.slice(6,8),16)/255:1}}return null}function Wn(e,t){let n=e.a+t.a*(1-e.a);if(n===0)return{r:0,g:0,b:0,a:0};let r=(a,i)=>(a*e.a+i*t.a*(1-e.a))/n;return{r:r(e.r,t.r),g:r(e.g,t.g),b:r(e.b,t.b),a:n}}function Jt(e){let t=n=>{let r=n/255;return r<=.04045?r/12.92:Math.pow((r+.055)/1.055,2.4)};return .2126*t(e.r)+.7152*t(e.g)+.0722*t(e.b)}function rt(e,t){let n=t.a<1?Wn(t,{r:255,g:255,b:255,a:1}):t,r=e.a<1?Wn(e,n):e,a=Jt(r),i=Jt(n),[o,l]=a>i?[a,i]:[i,a];return Math.round((o+.05)/(l+.05)*100)/100}function _r(e){let t=[],n=e;for(;n;){let a=window.getComputedStyle(n);if(a.backgroundImage&&a.backgroundImage!=="none")return null;let i=Fe(a.backgroundColor);if(i&&i.a>0&&(t.push(i),i.a>=1))break;n=n.parentElement}let r={r:255,g:255,b:255,a:1};for(let a=t.length-1;a>=0;a--)r=Wn(t[a],r);return r}function jr(e){let t=window.getComputedStyle(e),n=parseFloat(t.fontSize)||16,r=parseInt(t.fontWeight,10)||400;return n>=24||n>=18.66&&r>=700}function vt(e){return Array.from(e.childNodes).some(t=>t.nodeType===3&&ie(t.textContent).length>0)}var Xr="a[href],button,input:not([type='hidden']),select,textarea,summary,[tabindex]:not([tabindex='-1']),[contenteditable='true']",Wt="a[href],button,input:not([type='hidden']),select,textarea,summary,[role='button'],[role='link'],[role='checkbox'],[role='tab'],[role='menuitem']";var it={"html-lang":{title:"Page language is set",wcag:"3.1.1",severity:"serious",why:"Screen readers pick their voice and pronunciation from the page language. Without it, Telugu or Hindi text may be read with English rules."},"page-title":{title:"Page has a title",wcag:"2.4.2",severity:"serious",why:"The title is the first thing announced and the name shown on browser tabs and bookmarks."},"image-alt":{title:"Images have alternative text",wcag:"1.1.1",severity:"critical",why:'People who cannot see the image get no information from it unless alt text describes it (or alt="" marks it as decorative).'},"heading-order":{title:"Headings follow a logical order",wcag:"1.3.1",severity:"moderate",why:"Many screen-reader users jump between headings. Skipped levels make the page outline confusing."},"single-h1":{title:"Page has one main heading",wcag:"best practice",severity:"minor",why:"A single h1 tells everyone what the page is about."},"landmark-main":{title:"Main content landmark exists",wcag:"1.3.1 / 2.4.1",severity:"moderate",why:"A <main> region lets keyboard and screen-reader users skip straight past menus to the content."},"form-label":{title:"Form fields have labels",wcag:"1.3.1 / 4.1.2",severity:"critical",why:'Without a label, a screen reader just says "edit text" and the user has to guess what to type.'},"button-name":{title:"Buttons have names",wcag:"4.1.2",severity:"critical",why:'An icon-only button with no name is announced as just "button", so its purpose is unknown.'},"link-name":{title:"Links have names",wcag:"2.4.4",severity:"serious",why:"Links are often read out of context in a list. An empty link gives no clue where it goes."},"color-contrast":{title:"Text has enough contrast",wcag:"1.4.3",severity:"serious",why:"Low-contrast text is hard to read for older users, people with low vision, and anyone outdoors on a phone."},"positive-tabindex":{title:"No positive tabindex",wcag:"2.4.3",severity:"moderate",why:"tabindex greater than 0 forces a custom keyboard order that usually doesn't match the visual order."},"keyboard-access":{title:"Clickable things work with a keyboard",wcag:"2.1.1",severity:"critical",why:"A div or span with a click handler can't be reached or activated with Tab and Enter, locking out keyboard users."},"duplicate-id":{title:"IDs are unique",wcag:"best practice",severity:"minor",why:"Labels and ARIA references point at ids. Duplicates make them point at the wrong element."},"form-error":{title:"Errors are linked to their fields",wcag:"3.3.1",severity:"serious",why:"When a field is marked invalid, the error message must be connected to it so it's announced together with the field."},"target-size":{title:"Touch targets are large enough",wcag:"2.5.8",severity:"moderate",why:"Small targets are hard to tap for people with tremors, seniors and everyone on mobile."}},ko={critical:10,serious:5,moderate:2,minor:1};function fe(e={}){let t=pe(e.root),n=new Set(e.skip??[]),r=[],a={},i=t?Ye(t)?t:t.ownerDocument:null,o=(l,s,d,A,m=!1)=>{if(n.has(l))return;let f=it[l],u=a[l]=(a[l]??0)+1;r.push({id:`${l}-${u}`,rule:l,severity:f.severity,wcag:f.wcag,message:d,why:f.why,fix:A,selector:s?Qe(s):"document",snippet:s?oe(s.outerHTML,120):"",autoFixable:m,element:s??void 0})};if(t&&i){i.documentElement.getAttribute("lang")||o("html-lang",i.documentElement,"The <html> element has no lang attribute.",'Add lang to <html>, e.g. <html lang="te"> or "en".',!0),i.title.trim()||o("page-title",null,"The page has no <title>.","Add a short, descriptive <title> that names this page.");for(let p of P(t,"img"))if(!(p.getAttribute("role")==="presentation"||p.getAttribute("role")==="none")&&!p.hasAttribute("alt")&&!p.getAttribute("aria-label")&&!p.getAttribute("aria-labelledby")){let E=p.getAttribute("title");o("image-alt",p,`Image has no alt text${p.getAttribute("src")?` (${oe(p.getAttribute("src")??"",40)})`:""}.`,E?`Use the title as alt: alt="${oe(E,40)}".`:'Describe the image in alt, or use alt="" if it is purely decorative.',!!E)}let l=P(t,"h1,h2,h3,h4,h5,h6"),s=0;for(let p of l){let E=Number(p.tagName[1]);s>0&&E>s+1&&o("heading-order",p,`Heading jumps from h${s} to h${E}: "${oe(p.textContent??"",40)}".`,`Change it to h${s+1}, or add the missing level above it.`),s=E}let d=l.filter(p=>p.tagName==="H1");d.length===0?o("single-h1",null,"The page has no h1.","Add one h1 that names the page."):d.length>1&&o("single-h1",d[1],`The page has ${d.length} h1 headings.`,"Keep one h1; turn the others into h2."),t.querySelectorAll("main,[role='main']").length===0&&o("landmark-main",null,"No <main> landmark found.","Wrap the primary content in <main>.");let A=P(t,"input,select,textarea").filter(p=>{let E=(p.getAttribute("type")??"text").toLowerCase();return!["hidden","submit","button","reset","image"].includes(E)});for(let p of A){if(!me(p)){let E=p.getAttribute("placeholder")||p.getAttribute("name");o("form-label",p,`Form field has no label${E?` (placeholder/name: "${oe(E,30)}")`:""}.`,E?`Add a visible <label>. Quick fix: aria-label="${oe(E,30)}".`:"Add a visible <label for=\u2026> describing what to enter.",!!E)}p.getAttribute("aria-invalid")==="true"&&(p.getAttribute("aria-describedby")||p.getAttribute("aria-errormessage")||o("form-error",p,"Field is marked invalid but no error message is linked to it.","Put the error text in an element with an id and point aria-describedby at it."))}for(let p of P(t,"button,[role='button'],input[type='submit'],input[type='button']"))if(!me(p)){let E=p.getAttribute("title");o("button-name",p,"Button has no accessible name.",E?`Use the title as the name: aria-label="${E}".`:"Add visible text or an aria-label that says what the button does.",!!E)}for(let p of P(t,"a[href]"))if(!me(p)){let E=p.getAttribute("title");o("link-name",p,`Link has no text (${oe(p.getAttribute("href")??"",40)}).`,E?`Use the title as the name: aria-label="${E}".`:"Add link text that says where it goes.",!!E)}for(let p of P(t,"[tabindex]"))Number(p.getAttribute("tabindex"))>0&&o("positive-tabindex",p,`tabindex="${p.getAttribute("tabindex")}" overrides the natural tab order.`,'Use tabindex="0" and fix the order in the HTML instead.',!0);let m="a[href],button,input,select,textarea,summary";for(let p of P(t,"[onclick],[role='button'],[role='link']"))p.matches(m)||p.hasAttribute("tabindex")||o("keyboard-access",p,`<${p.tagName.toLowerCase()}> is clickable but can't be reached with the keyboard.`,'Use a real <button>, or add tabindex="0", a role and Enter/Space key handling.',!0);let f=new Map;for(let p of Array.from(t.querySelectorAll("[id]")))p.closest("[data-yuktai-panel]")||f.set(p.id,(f.get(p.id)??0)+1);for(let[p,E]of f)E>1&&o("duplicate-id",t.querySelector(`[id="${p.replace(/"/g,'\\"')}"]`),`id="${p}" is used ${E} times.`,"Give each element a unique id.");let u=e.maxContrastChecks??600,k=0;for(let p of P(t,"body *")){if(k>=u)break;if(!vt(p)||["SCRIPT","STYLE","NOSCRIPT","OPTION"].includes(p.tagName))continue;k++;let E=Fe(window.getComputedStyle(p).color),Q=_r(p);if(!E||!Q)continue;let I=rt(E,Q),h=jr(p)?3:4.5;I<h&&o("color-contrast",p,`Contrast ${I}:1 is below ${h}:1 for "${oe(p.textContent??"",30)}".`,`Darken the text or lighten the background until the ratio is at least ${h}:1.`)}let b=e.minTargetSize??24;for(let p of P(t,Wt)){let E=p.getBoundingClientRect();E.width===0&&E.height===0||p.tagName==="A"&&p.closest("p,li,td")||(E.width<b||E.height<b)&&o("target-size",p,`Target is ${Math.round(E.width)}\xD7${Math.round(E.height)}px (minimum ${b}\xD7${b}).`,`Increase padding so it's at least ${b}\xD7${b}px (44\xD744 is better for seniors).`)}}return Eo(r,i,n)}function Eo(e,t,n){var s;let r=Object.keys(it).filter(d=>!n.has(d)).map(d=>{let A=e.filter(m=>m.rule===d).length;return{rule:d,title:it[d].title,passed:A===0,issueCount:A}}),a=0;for(let d of r){let A=ko[it[d.rule].severity];a+=Math.min(25,d.issueCount*A)}let i=Math.max(0,100-a),o=r.filter(d=>!d.passed),l=e.filter(d=>d.severity==="critical").length;return{url:((s=t==null?void 0:t.location)==null?void 0:s.href)??"",title:(t==null?void 0:t.title)??"",generatedAt:new Date().toISOString(),score:i,passed:l===0&&i>=80,checks:r,issues:e,summary:e.length===0?`All ${r.length} checks passed.`:`${r.length-o.length} of ${r.length} checks passed. ${e.length} issue(s) found, ${l} critical. Score ${i}/100.`}}function It(e){let t=["# Accessibility QA report","",`- Page: ${e.title||"(untitled)"} ${e.url}`,`- Generated: ${e.generatedAt}`,`- Score: **${e.score}/100** \u2014 ${e.passed?"PASS":"FAIL"}`,"",e.summary,"","## Checks","","| Check | Result | Issues |","|---|---|---|",...e.checks.map(n=>`| ${n.title} | ${n.passed?"\u2705 Pass":"\u274C Fail"} | ${n.issueCount} |`)];if(e.issues.length){t.push("","## Issues","");for(let n of e.issues)t.push(`### ${n.id} \xB7 ${n.severity} \xB7 WCAG ${n.wcag}`,"",`- **Problem:** ${n.message}`,`- **Why it matters:** ${n.why}`,`- **Fix:** ${n.fix}`,`- **Where:** \`${n.selector}\``,"")}return t.join(`
|
|
9
|
-
`)}function
|
|
10
|
-
`):`No issue "${
|
|
11
|
-
`),
|
|
12
|
-
${
|
|
13
|
-
Missing landmarks: ${
|
|
14
|
-
`):"There are no forms on this page.",targets:i.flatMap(o=>o.findings.map(l=>l.selector).filter(l=>!!l)),suggestions:i.flatMap(o=>o.findings.slice(0,3).map(l=>l.suggestion))}}case"links":case"counts":{let i=n.counts;return{intent:r,answer:`${i.links} links, ${i.buttons} buttons, ${i.fields} form fields in ${i.forms} form(s), ${i.images} images, ${i.tables} tables.`,targets:[],suggestions:[]}}case"purpose":case"unknown":{let i=n.purpose;if(t.summarize)try{let l=pe(t.root),s=ie((a=l&&Ye(l)?l.body:l)==null?void 0:a.textContent).slice(0,4e3);i=await t.summarize(s)||i}catch{}let o=[];return n.unlabeledFields.length&&o.push(`${n.unlabeledFields.length} form field(s) need labels.`),n.imagesWithoutAlt.length&&o.push(`${n.imagesWithoutAlt.length} image(s) need alt text.`),{intent:r,answer:i,targets:[],suggestions:o}}}}var Ro=new Set("a an the is are was were be to of and or in on at for with what which who whom how why when where does do did this that these those it its from by as about any all please tell me show give".split(" "));function at(e){return(e.normalize("NFC").toLowerCase().match(/[\p{L}\p{M}\p{N}]+/gu)??[]).filter(t=>t.length>1&&!Ro.has(t))}function Xn(e,t=600){let n=pe(e);if(!n)return[];let r=[],a="",i="",o=()=>{i.trim()&&r.push({id:`page-${r.length+1}`,source:"page",text:i.trim(),ref:a||void 0}),i=""};for(let l of P(n,"h1,h2,h3,h4,p,li,td,th,dt,dd,blockquote,figcaption,label,summary")){if(l.querySelector("p,li,h1,h2,h3,h4"))continue;let s=ie(l.textContent);if(s){if(/^H[1-4]$/.test(l.tagName)){o(),a=s,i=`${s}. `;continue}i.length+s.length>t&&o(),i+=`${s} `}}return o(),r}function Zn(e,t,n="id"){return e.map((r,a)=>{let i=r,o=String(i[n]??a+1);return{id:`grid-${o}`,source:"grid",ref:o,text:t.map(l=>`${l.label}: ${String(i[l.key]??"")}`).join(". ")}})}function jt(e={}){let t=[],n=[],r=new Map,a=0;function i(){t=[...e.includePage===!1?[]:Xn(e.root),...e.rows&&e.columns?Zn(e.rows,e.columns,e.rowKey):[],...(e.documents??[]).map(s=>({id:s.id,source:"custom",text:s.text}))],n=t.map(s=>at(s.text)),r=new Map;for(let s of n)for(let d of new Set(s))r.set(d,(r.get(d)??0)+1);a=n.reduce((s,d)=>s+d.length,0)/Math.max(1,n.length)}i();function o(s,d=5){let A=at(s);if(!A.length)return[];let m=n.length;return n.map((u,k)=>{let b=0;for(let p of A){let E=0;for(let I of u)(I===p||p.length>=4&&I.startsWith(p)||I.length>=4&&p.startsWith(I))&&E++;if(!E)continue;let Q=Math.log(1+(m-(r.get(p)??1)+.5)/((r.get(p)??1)+.5));b+=Q*(E*2.2/(E+1.2*(.25+.75*(u.length/(a||1)))))}return{...t[k],score:b}}).filter(u=>u.score>0).sort((u,k)=>k.score-u.score).slice(0,d)}async function l(s,d={}){let A=o(s,d.k??4);if(!A.length)return{answer:"I couldn't find anything about that on this page or in the data.",hits:A,generated:!1};if(d.generate)try{let k=A.map((p,E)=>`[${E+1}] ${p.text}`).join(`
|
|
15
|
-
`)
|
|
16
|
-
`)
|
|
3
|
+
* Built from github.com/sandeepmiriyala03/yuktai (vanilla/src + src/agentic, src/grid, src/core; Rust engines: rust/grid-core, rust/rag-core). */
|
|
4
|
+
"use strict";(()=>{var Ir=Object.defineProperty;var dr=(e,A)=>{for(var t in A)Ir(e,t,{get:A[t],enumerable:!0})};var fi={};dr(fi,{AUDIT_RULES:()=>nA,DEFAULT_A11Y_SETTINGS:()=>lA,FONT_MAX:()=>pi,FONT_MIN:()=>hi,FONT_STEP:()=>ct,accessibleName:()=>he,aggregate:()=>$e,analyzePage:()=>Zt,answerGridQuestion:()=>$A,applyGridFilters:()=>ve,askAboutPage:()=>ZA,askInsight:()=>zA,auditToJSON:()=>XA,auditToMarkdown:()=>EA,clearFilters:()=>Lt,clearSort:()=>Ut,comparePeriods:()=>Ot,contrastRatio:()=>iA,countGrid:()=>Nt,createA11yCopilot:()=>jA,createContextIndex:()=>tt,createGridTools:()=>tA,createVoiceA11yController:()=>It,detectAnomalies:()=>qe,detectPageIntent:()=>_t,executeGridQuery:()=>Se,filterGrid:()=>Tt,findMentionedColumn:()=>de,getColumns:()=>Ft,getRow:()=>Rt,getRowId:()=>ie,gridPassages:()=>ri,groupBy:()=>zt,highlightRows:()=>AA,moveGridRowFocus:()=>mi,openRow:()=>mA,pagePassages:()=>ni,parseAmount:()=>fA,parseColor:()=>Re,parseGridQuery:()=>Fe,parseVoiceA11yCommand:()=>yi,planTasks:()=>QA,readFormFields:()=>Xt,relativeLuminance:()=>WA,reviewDesign:()=>it,reviewForm:()=>jt,reviewForms:()=>rA,runGridQuery:()=>Ht,runQaAudit:()=>pe,runTasks:()=>OA,searchGrid:()=>Gt,selectRow:()=>yA,sortGrid:()=>Yt,summarizeRows:()=>He,toGridToolColumns:()=>Ne,tokenize:()=>aA,trend:()=>Wt,wcagPlugin:()=>ze});var ur={en:{found:e=>`${e} row(s) found.`,count:e=>`${e} row(s).`,columns:"Grid columns retrieved.",rowFound:"Row found.",notFound:e=>`Row "${e}" not found.`,noneFound:"None of the given rows were found.",highlighted:e=>`${e} row(s) highlighted.`,selected:e=>`Row "${e}" selected.`,opened:e=>`Row "${e}" opened.`,notSupported:e=>`This grid does not support "${e}".`,emptyQuery:"Please enter something to search.",noIds:"No row IDs were given.",unknownColumn:e=>`Unknown column "${e}".`,badOperator:e=>`Unknown filter operator "${e}".`,badValue:"The filter value is not valid for this column.",filtered:e=>`Filter applied: ${e} row(s) match.`,filtersCleared:"All filters cleared.",sorted:(e,A)=>`Sorted by ${e} (${A==="asc"?"ascending":"descending"}).`,sortCleared:"Sorting cleared.",internal:"Something went wrong while running this action."},te:{found:e=>`${e} \u0C35\u0C30\u0C41\u0C38(\u0C32\u0C41) \u0C26\u0C4A\u0C30\u0C3F\u0C15\u0C3E\u0C2F\u0C3F.`,count:e=>`\u0C2E\u0C4A\u0C24\u0C4D\u0C24\u0C02 ${e} \u0C35\u0C30\u0C41\u0C38\u0C32\u0C41.`,columns:"\u0C15\u0C3E\u0C32\u0C2E\u0C4D\u200C\u0C32 \u0C35\u0C3F\u0C35\u0C30\u0C3E\u0C32\u0C41.",rowFound:"\u0C35\u0C30\u0C41\u0C38 \u0C26\u0C4A\u0C30\u0C3F\u0C15\u0C3F\u0C02\u0C26\u0C3F.",notFound:e=>`"${e}" \u0C35\u0C30\u0C41\u0C38 \u0C26\u0C4A\u0C30\u0C15\u0C32\u0C47\u0C26\u0C41.`,noneFound:"\u0C07\u0C1A\u0C4D\u0C1A\u0C3F\u0C28 \u0C35\u0C30\u0C41\u0C38\u0C32\u0C47\u0C35\u0C40 \u0C26\u0C4A\u0C30\u0C15\u0C32\u0C47\u0C26\u0C41.",highlighted:e=>`${e} \u0C35\u0C30\u0C41\u0C38(\u0C32\u0C41) \u0C39\u0C48\u0C32\u0C48\u0C1F\u0C4D \u0C1A\u0C47\u0C36\u0C3E\u0C28\u0C41.`,selected:e=>`"${e}" \u0C0E\u0C02\u0C1A\u0C41\u0C15\u0C41\u0C28\u0C4D\u0C28\u0C3E\u0C28\u0C41.`,opened:e=>`"${e}" \u0C24\u0C46\u0C30\u0C3F\u0C1A\u0C3E\u0C28\u0C41.`,notSupported:e=>`\u0C08 \u0C2A\u0C1F\u0C4D\u0C1F\u0C3F\u0C15\u0C32\u0C4B "${e}" \u0C38\u0C4C\u0C15\u0C30\u0C4D\u0C2F\u0C02 \u0C32\u0C47\u0C26\u0C41.`,emptyQuery:"\u0C35\u0C46\u0C24\u0C15\u0C21\u0C3E\u0C28\u0C3F\u0C15\u0C3F \u0C0F\u0C26\u0C48\u0C28\u0C3E \u0C30\u0C3E\u0C2F\u0C02\u0C21\u0C3F.",noIds:"\u0C35\u0C30\u0C41\u0C38 ID\u0C32\u0C41 \u0C07\u0C35\u0C4D\u0C35\u0C32\u0C47\u0C26\u0C41.",unknownColumn:e=>`"${e}" \u0C05\u0C28\u0C47 \u0C15\u0C3E\u0C32\u0C2E\u0C4D \u0C32\u0C47\u0C26\u0C41.`,badOperator:e=>`"${e}" \u0C05\u0C28\u0C47 \u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D \u0C35\u0C3F\u0C27\u0C3E\u0C28\u0C02 \u0C32\u0C47\u0C26\u0C41.`,badValue:"\u0C08 \u0C15\u0C3E\u0C32\u0C2E\u0C4D\u200C\u0C15\u0C3F \u0C08 \u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D \u0C35\u0C3F\u0C32\u0C41\u0C35 \u0C38\u0C30\u0C3F\u0C2A\u0C4B\u0C26\u0C41.",filtered:e=>`\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D \u0C35\u0C47\u0C36\u0C3E\u0C28\u0C41: ${e} \u0C35\u0C30\u0C41\u0C38\u0C32\u0C41 \u0C38\u0C30\u0C3F\u0C2A\u0C4B\u0C2F\u0C3E\u0C2F\u0C3F.`,filtersCleared:"\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D\u0C32\u0C28\u0C4D\u0C28\u0C40 \u0C24\u0C40\u0C38\u0C47\u0C36\u0C3E\u0C28\u0C41.",sorted:(e,A)=>`${e} \u0C2A\u0C4D\u0C30\u0C15\u0C3E\u0C30\u0C02 \u0C15\u0C4D\u0C30\u0C2E\u0C02 (${A==="asc"?"\u0C06\u0C30\u0C4B\u0C39\u0C23":"\u0C05\u0C35\u0C30\u0C4B\u0C39\u0C23"}).`,sortCleared:"\u0C15\u0C4D\u0C30\u0C2E\u0C02 \u0C24\u0C40\u0C38\u0C47\u0C36\u0C3E\u0C28\u0C41.",internal:"\u0C08 \u0C2A\u0C28\u0C3F \u0C1A\u0C47\u0C38\u0C4D\u0C24\u0C41\u0C02\u0C21\u0C17\u0C3E \u0C38\u0C2E\u0C38\u0C4D\u0C2F \u0C35\u0C1A\u0C4D\u0C1A\u0C3F\u0C02\u0C26\u0C3F."}};function Ce(e){return ur[e.locale??"en"]}function Be(e,A){return{success:!0,message:e,data:A}}function Z(e,A){return{success:!1,message:A,error:{code:e}}}var Ki=["contains","equals","startsWith","endsWith","greaterThan","lessThan","between"];function ie(e,A="id"){let t=e==null?void 0:e[A];return t==null?"":String(t)}function Ke(e){return String(e??"").normalize("NFC").toLowerCase().trim()}function qi(e){if(typeof e=="number")return Number.isFinite(e)?e:null;let A=String(e??"").trim();if(A==="")return null;let t=Number(A);return Number.isFinite(t)?t:null}function Hi(e){if(e instanceof Date)return e.getTime();let A=new Date(String(e??"")).getTime();return Number.isFinite(A)?A:null}function $i(e){return(Array.isArray(e)?e:typeof e=="string"?e.split(","):[]).map(t=>String(t).trim()).filter(Boolean)}function St(e,A){let t=Ke(A);return e.columns.find(i=>Ke(i.key)===t||Ke(i.label)===t)}function qA(e,A){return e.data.find(t=>ie(t,e.rowKey)===A)}function Cr(e,A){return e[A]}function hr(e,A,t){let i=Cr(e,t.key),o=t.type??"text";if(o==="number"||o==="date"){let a=o==="number"?qi:Hi,s=a(i);if(s===null)return!1;if(A.operator==="between"){let[I,u]=A.value,m=a(I),c=a(u);return m!==null&&c!==null&&s>=Math.min(m,c)&&s<=Math.max(m,c)}let l=a(A.value);if(l===null)return!1;switch(A.operator){case"equals":return s===l;case"greaterThan":return s>l;case"lessThan":return s<l;default:break}}let r=Ke(i),n=Ke(A.value);switch(A.operator){case"equals":return r===n;case"startsWith":return r.startsWith(n);case"endsWith":return r.endsWith(n);case"contains":return r.includes(n);default:return!1}}function pr(e,A){let t=A.type??"text",i=t==="date"?Hi:qi;return e.operator==="between"?t==="text"||!Array.isArray(e.value)||e.value.length!==2?!1:i(e.value[0])!==null&&i(e.value[1])!==null:e.operator==="greaterThan"||e.operator==="lessThan"?t!=="text"&&i(e.value)!==null:!Array.isArray(e.value)&&String(e.value).trim()!==""}function ve(e,A,t){return t.length?Pi({data:e,columns:A},t):e}function Ne(e){return e.map(A=>({key:String(A.key),label:A.label,type:A.type==="number"?"number":A.type==="date"?"date":"text"}))}function Pi(e,A){return e.data.filter(t=>A.every(i=>{let o=St(e,i.key);return o?hr(t,i,o):!0}))}function Gt(e,A){var n;let t=Ce(e),i=Ke(A);if(!i)return Z("INVALID_INPUT",t.emptyQuery);let o=e.data.filter(a=>e.columns.some(s=>Ke(a[s.key]).includes(i))),r=o.map(a=>ie(a,e.rowKey)).filter(Boolean);return(n=e.onHighlightRows)==null||n.call(e,r),Be(t.found(o.length),o)}function Nt(e){return Be(Ce(e).count(e.data.length),e.data.length)}function Ft(e){return Be(Ce(e).columns,e.columns)}function Rt(e,A){let t=Ce(e),i=String(A??"").trim();if(!i)return Z("INVALID_INPUT",t.noIds);let o=qA(e,i);return o?Be(t.rowFound,o):Z("NOT_FOUND",t.notFound(i))}function AA(e,A){let t=Ce(e),i=$i(A);if(i.length===0)return Z("INVALID_INPUT",t.noIds);if(!e.onHighlightRows)return Z("NOT_SUPPORTED",t.notSupported("highlight"));let o=i.filter(r=>qA(e,r)!==void 0);return o.length===0?Z("NOT_FOUND",t.noneFound):(e.onHighlightRows(o),Be(t.highlighted(o.length),o))}function yA(e,A){let t=Ce(e),i=String(A??"").trim();return i?e.onSelectRow?qA(e,i)?(e.onSelectRow(i),Be(t.selected(i),i)):Z("NOT_FOUND",t.notFound(i)):Z("NOT_SUPPORTED",t.notSupported("select")):Z("INVALID_INPUT",t.noIds)}function mA(e,A){let t=Ce(e),i=String(A??"").trim();return i?e.onOpenRow?qA(e,i)?(e.onOpenRow(i),Be(t.opened(i),i)):Z("NOT_FOUND",t.notFound(i)):Z("NOT_SUPPORTED",t.notSupported("open")):Z("INVALID_INPUT",t.noIds)}function Tt(e,A){let t=Ce(e),i=St(e,(A==null?void 0:A.key)??"");if(!i)return Z("INVALID_INPUT",t.unknownColumn(String((A==null?void 0:A.key)??"")));if(!Ki.includes(A.operator))return Z("INVALID_INPUT",t.badOperator(String(A.operator)));let o={...A,key:i.key};if(!pr(o,i))return Z("INVALID_INPUT",t.badValue);if(!e.onFiltersChange)return Z("NOT_SUPPORTED",t.notSupported("filter"));let r=[...(e.filters??[]).filter(a=>a.key!==i.key),o],n=Pi(e,r).length;return e.onFiltersChange(r),Be(t.filtered(n),{filters:r,count:n})}function Lt(e){let A=Ce(e);return e.onFiltersChange?(e.onFiltersChange([]),Be(A.filtersCleared,[])):Z("NOT_SUPPORTED",A.notSupported("clear filters"))}function Yt(e,A,t="asc"){let i=Ce(e),o=St(e,A);if(!o)return Z("INVALID_INPUT",i.unknownColumn(String(A)));if(t!=="asc"&&t!=="desc")return Z("INVALID_INPUT",i.badValue);if(!e.onSortChange)return Z("NOT_SUPPORTED",i.notSupported("sort"));let r={key:o.key,direction:t};return e.onSortChange(r),Be(i.sorted(o.label,t),r)}function Ut(e){let A=Ce(e);return e.onSortChange?(e.onSortChange(null),Be(A.sortCleared,null)):Z("NOT_SUPPORTED",A.notSupported("clear sort"))}var yr={search:"Search all columns for text. Matching rows are highlighted.",count:"Count the rows currently in the grid.",columns:"List the grid's columns with their keys, labels and types.",get_row:"Get one row by its ID.",highlight:"Highlight one or more rows by ID without filtering the grid.",select:"Select one row by ID.",open:"Open one row by ID to show its full details.",filter:"Filter the grid by one column. Replaces any existing filter on that column.",clear_filters:"Remove all filters.",sort:"Sort the grid by one column, ascending or descending.",clear_sort:"Remove sorting."},Ji={en:{search:"Search",count:"Count",columns:"Columns",get_row:"Get row",highlight:"Highlight",select:"Select",open:"Open",filter:"Filter",clear_filters:"Clear filters",sort:"Sort",clear_sort:"Clear sort"},te:{search:"\u0C35\u0C46\u0C24\u0C41\u0C15\u0C41",count:"\u0C32\u0C46\u0C15\u0C4D\u0C15",columns:"\u0C15\u0C3E\u0C32\u0C2E\u0C4D\u200C\u0C32\u0C41",get_row:"\u0C35\u0C30\u0C41\u0C38 \u0C1A\u0C42\u0C2A\u0C41",highlight:"\u0C39\u0C48\u0C32\u0C48\u0C1F\u0C4D",select:"\u0C0E\u0C02\u0C1A\u0C41\u0C15\u0C4B",open:"\u0C24\u0C46\u0C30\u0C41\u0C35\u0C41",filter:"\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D",clear_filters:"\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D\u0C32\u0C41 \u0C24\u0C40\u0C38\u0C47\u0C2F\u0C3F",sort:"\u0C15\u0C4D\u0C30\u0C2E\u0C02",clear_sort:"\u0C15\u0C4D\u0C30\u0C2E\u0C02 \u0C24\u0C40\u0C38\u0C47\u0C2F\u0C3F"}};async function mr(e,A){try{return A()}catch{return Z("INTERNAL",Ce(e).internal)}}function tA(e,A={}){let t=A.name??"yuktai_grid",i=Ji[e.locale??"en"],o=s=>{var l;return((l=A.descriptions)==null?void 0:l[s])??yr[s]},r={id:{type:"string",description:"Row ID"}},n=e.columns.map(s=>s.key);return[{id:"search",available:!0,schema:{type:"object",properties:{query:{type:"string"}},required:["query"]},run:s=>Gt(e,String(s.query??""))},{id:"count",available:!0,schema:{type:"object",properties:{}},run:()=>Nt(e)},{id:"columns",available:!0,schema:{type:"object",properties:{}},run:()=>Ft(e)},{id:"get_row",available:!0,schema:{type:"object",properties:r,required:["id"]},run:s=>Rt(e,String(s.id??""))},{id:"highlight",available:!!e.onHighlightRows,schema:{type:"object",properties:{ids:{type:"array",items:{type:"string"},description:"Row IDs"}},required:["ids"]},run:s=>AA(e,$i(s.ids))},{id:"select",available:!!e.onSelectRow,schema:{type:"object",properties:r,required:["id"]},run:s=>yA(e,String(s.id??""))},{id:"open",available:!!e.onOpenRow,schema:{type:"object",properties:r,required:["id"]},run:s=>mA(e,String(s.id??""))},{id:"filter",available:!!e.onFiltersChange,schema:{type:"object",properties:{key:{type:"string",enum:n},operator:{type:"string",enum:Ki},value:{description:"Text or number; for 'between' an array of two numbers or dates"}},required:["key","operator","value"]},run:s=>Tt(e,{key:String(s.key??""),operator:String(s.operator??""),value:s.value})},{id:"clear_filters",available:!!e.onFiltersChange,schema:{type:"object",properties:{}},run:()=>Lt(e)},{id:"sort",available:!!e.onSortChange,schema:{type:"object",properties:{key:{type:"string",enum:n},direction:{type:"string",enum:["asc","desc"]}},required:["key"]},run:s=>Yt(e,String(s.key??""),s.direction==="desc"?"desc":"asc")},{id:"clear_sort",available:!!e.onSortChange,schema:{type:"object",properties:{}},run:()=>Ut(e)}].filter(s=>s.available).map(s=>({name:`${t}_${s.id}`,title:Ji.en[s.id],description:o(s.id),label:i[s.id],inputSchema:s.schema,execute:l=>mr(e,()=>s.run(l??{}))}))}var xe=e=>String(e??"").normalize("NFC").toLowerCase().replace(/\s+/g," ").trim(),fr=new Set("show me find list get give which who what all the a an rows row records record entries with where that are is have has having and or of for in on to please display only those whose any".split(" "));function fA(e){let A=xe(e).replace(/(₹|rs\.?|inr|\$|usd|€|£)/g," ").match(/(-?\d[\d,]*(?:\.\d+)?|-?\.\d+)\s*(k|thousand|lakhs?|lacs?|crores?|cr|mn|million|m|bn|billion)?(?![\p{L}])/u);if(!A)return null;let t=Number(A[1].replace(/,/g,""));if(!Number.isFinite(t))return null;let i=A[2]??"",o=/^k|thousand/.test(i)?1e3:/^la/.test(i)?1e5:/^(crore|cr)/.test(i)?1e7:/^(m|mn|million)$/.test(i)?1e6:/^(bn|billion)$/.test(i)?1e9:1;return t*o}function Wi(e){let A=new Set([xe(e.label),xe(e.key),xe(e.key.replace(/[_-]+/g," ").replace(/([a-z])([A-Z])/g,"$1 $2"))]);for(let t of Array.from(A))t.endsWith("s")?A.add(t.slice(0,-1)):A.add(`${t}s`);return Array.from(A).filter(t=>t.length>1)}function de(e,A,t){let i=` ${xe(e)} `,o;for(let r of A)if(!(t&&(r.type??"text")!==t))for(let n of Wi(r)){let a=n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");new RegExp(`(^|[^\\p{L}\\p{M}\\p{N}])${a}($|[^\\p{L}\\p{M}\\p{N}])`,"u").test(i)&&(!o||n.length>o.length)&&(o={column:r,length:n.length})}return o==null?void 0:o.column}var Qr=/amount|balance|total|price|salary|value|due|revenue|cost|fee|sales|outstanding|paid/i;function Jt(e){let A=e.filter(t=>t.type==="number");return A.find(t=>Qr.test(`${t.key} ${t.label}`))??A[0]}var HA=/(>=|=>|>|\bover\b|\babove\b|\bmore than\b|\bgreater than\b|\bexceeds?\b|\bexceeding\b|\bhigher than\b|\bat least\b|\bminimum\b|\bmin\b|కంటే ఎక్కువ)/,Kt=/(<=|=<|<|\bunder\b|\bbelow\b|\bless than\b|\blower than\b|\bat most\b|\bmaximum\b|\bmax\b|\bup to\b|కంటే తక్కువ)/,zi=/\b(after|since|from)\b/,Br=/\b(before|until|till)\b/,Er="(?:\\s*(?:k|thousand|lakhs?|lacs?|crores?|cr|mn|million|m|bn|billion))?",qt=`(?:\u20B9|rs\\.?\\s*|\\$)?\\s*-?\\d[\\d,]*(?:\\.\\d+)?${Er}`;function Fe(e,A,t={}){var k;let i={filters:[],search:[],sort:null,limit:null,notes:[],explanation:""},o=xe(e).replace(/[?!]+/g," ").replace(/\.(?!\d)/g," ").trim(),r=[],n=o.match(/\b(top|first|bottom|last|lowest|highest)\s+(\d+)\b/);n&&(i.limit=Number(n[2]),o=o.replace(n[0],` ${n[1]} `));let a=o.match(/\b(?:sort(?:ed)?|order(?:ed)?)\s+by\s+([\p{L}\p{M}\p{N} _]+?)(?:\s+(asc|ascending|desc|descending))?(?=$|,|\band\b|\bthen\b)/u),s=o.match(/\b(top|highest|largest|biggest|most|bottom|lowest|smallest|least)\b(?:\s+\d+)?\s+(?:by\s+)?([\p{L}\p{M}\p{N} _]+)/u);if(a){let f=de(a[1],A);f&&(i.sort={key:f.key,direction:/^desc/.test(a[2]??"")?"desc":"asc"},o=o.replace(a[0]," "))}else if(s){let f=de(s[2],A,"number")??de(s[2],A)??Jt(A);if(f){let C=/top|highest|largest|biggest|most/.test(s[1]);i.sort={key:f.key,direction:C?"desc":"asc"},o=o.replace(new RegExp(`\\b${s[1]}\\b`)," "),!n&&/top|bottom/.test(s[1])&&(i.limit=10)}}let l=new RegExp(`\\bbetween\\s+(${qt}|\\d{4}-\\d{2}-\\d{2})\\s+(?:and|to|-)\\s+(${qt}|\\d{4}-\\d{2}-\\d{2})`,"u"),I;for(;I=o.match(l);){let f=o.slice(Math.max(0,(I.index??0)-40),I.index??0),C=/\d{4}-\d{2}-\d{2}/.test(I[1]),B=C?de(f,A,"date")??A.find(h=>h.type==="date"):de(f,A,"number")??Jt(A),v=C?I[1]:fA(I[1]),E=C?I[2]:fA(I[2]);B&&v!==null&&E!==null&&(i.filters.push({key:B.key,operator:"between",value:[v,E]}),r.push(`${B.label} between ${I[1]} and ${I[2]}`)),o=o.replace(I[0]," ")}let u=o.split(new RegExp("\\s*(?:(?<!\\d),|,(?!\\d)|;|\\band\\b|(?<!(?:starts?|starting|ends?|ending|begins?|beginning)\\s)\\bwith\\b|\\bwhere\\b|\\bwho\\b|\\bthat\\b|&|\u0C2E\u0C30\u0C3F\u0C2F\u0C41)\\s*","u")).map(f=>f.trim()).filter(Boolean),m=A.filter(f=>(f.type??"text")==="text"),c=new Map;for(let f of m){let C=new Set;for(let B of(t.data??[]).slice(0,5e3)){let v=xe(B[f.key]);if(v&&v.length<=40&&C.add(v),C.size>300)break}C.size&&C.size<=300&&c.set(f.key,C)}for(let f of u){let C=i.filters.length,B=de(f,A),v=f.match(new RegExp(qt,"u")),E=f.match(/\d{4}-\d{2}-\d{2}/);if(E&&(zi.test(f)||Br.test(f)||HA.test(f)||Kt.test(f))){let h=((B==null?void 0:B.type)==="date"?B:void 0)??A.find(p=>p.type==="date");if(h){let p=zi.test(f)||HA.test(f);i.filters.push({key:h.key,operator:p?"greaterThan":"lessThan",value:E[0]}),r.push(`${h.label} ${p?"after":"before"} ${E[0]}`)}}else if(v&&(HA.test(f)||Kt.test(f)||(B==null?void 0:B.type)==="number"&&/\b(is|equals?)\b|=/.test(f))){let h=(B==null?void 0:B.type)==="number"?B:void 0;h||(h=Jt(A),h&&i.notes.push(`Assumed "${f}" refers to ${h.label}.`));let p=fA(v[0]);if(h&&p!==null){let y=/at least|minimum|\bmin\b|>=|=>|at most|maximum|\bmax\b|up to|<=|=</.test(f);HA.test(f)?(i.filters.push({key:h.key,operator:"greaterThan",value:y?p-1e-9:p}),r.push(`${h.label} ${y?"\u2265":">"} ${p.toLocaleString("en-IN")}`)):Kt.test(f)?(i.filters.push({key:h.key,operator:"lessThan",value:y?p+1e-9:p}),r.push(`${h.label} ${y?"\u2264":"<"} ${p.toLocaleString("en-IN")}`)):(i.filters.push({key:h.key,operator:"equals",value:p}),r.push(`${h.label} = ${p.toLocaleString("en-IN")}`))}}else{let h=f.match(/\b(?:starts?|starting|begins?|beginning)\s+with\s+(.+)$/),p=f.match(/\b(?:ends?|ending)\s+with\s+(.+)$/),y=f.match(/\b(?:contains?|containing|including|includes?|mentions?)\s+(.+)$/),D=f.match(/\b(?:is|equals?|=|:)\s+(.+)$/),Q=h??p??y??D;if(Q){let x=B??m[0],G=Q[1].replace(/^["'“‘]|["'”’]$/g,"").trim();if(x&&G){let w=h?"startsWith":p?"endsWith":y?"contains":"equals";i.filters.push({key:x.key,operator:w,value:G}),r.push(`${x.label} ${w==="equals"?"is":w==="contains"?"contains":w==="startsWith"?"starts with":"ends with"} "${G}"`),B||i.notes.push(`Assumed "${f}" refers to ${x.label}.`)}}}if(i.filters.length===C)for(let[h,p]of c){let y="";for(let D of p){if(D.length<2||D.length<=y.length)continue;let Q=D.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");new RegExp(`(^|[^\\p{L}\\p{M}\\p{N}])${Q}($|[^\\p{L}\\p{M}\\p{N}])`,"u").test(f)&&(y=D)}if(y){let D=A.find(Q=>Q.key===h);i.filters.push({key:h,operator:"equals",value:y}),r.push(`${D.label} is "${y}"`)}}if(i.filters.length===C){let h=f.split(/\s+/).filter(y=>!fr.has(y)&&!/^(top|first|bottom|last|lowest|highest|by|desc|asc|sort(ed)?)$/.test(y)),p=h.length>0&&h.every(y=>A.some(D=>Wi(D).includes(y)));if(h.length&&!p&&!(B&&h.length===1)){let y=h.join(" ");/^(customers?|users?|people|items?|entries|poems?|orders?|products?|employees?|students?|members?)$/.test(y)||(i.search.push(y),r.push(`any column contains "${y}"`))}}}if(i.sort){let f=((k=A.find(C=>C.key===i.sort.key))==null?void 0:k.label)??i.sort.key;r.push(`sorted by ${f} ${i.sort.direction==="desc"?"high \u2192 low":"low \u2192 high"}`)}return i.limit&&r.push(`first ${i.limit}`),i.explanation=r.length?`Showing rows where ${r.join(", ")}.`:"No conditions understood \u2014 showing all rows.",i}function br(e,A,t){return t==="number"?(Number(e)||0)-(Number(A)||0):t==="date"?(new Date(String(e)).getTime()||0)-(new Date(String(A)).getTime()||0):String(e??"").localeCompare(String(A??""),void 0,{numeric:!0})}function Se(e,A,t){let i=ve(e,A,t.filters);for(let o of t.search)i=i.filter(r=>A.some(n=>xe(r[n.key]).includes(o)));if(t.sort){let o=A.find(n=>n.key===t.sort.key),r=t.sort.direction==="desc"?-1:1;i=[...i].sort((n,a)=>r*br(n[t.sort.key],a[t.sort.key],o==null?void 0:o.type))}return t.limit&&(i=i.slice(0,t.limit)),i}function Ht(e,A,t={}){var a,s,l;let i=Fe(e,A.columns,{data:A.data}),o=Se(A.data,A.columns,i),r=o.map(I=>ie(I,A.rowKey)).filter(Boolean);t.apply!==!1&&(i.filters.length&&((a=A.onFiltersChange)==null||a.call(A,i.filters)),i.sort&&((s=A.onSortChange)==null||s.call(A,i.sort)),r.length&&((l=A.onHighlightRows)==null||l.call(A,r)));let n=o.length?`${o.length} row(s) found. ${i.explanation}${i.notes.length?` (${i.notes.join(" ")})`:""}`:`No rows match. ${i.explanation}`;return{rows:o,ids:r,parsed:i,message:n}}function Oi(e,A){let t=(e.length-1)*A,i=Math.floor(t),o=t-i;return e[i+1]!==void 0?e[i]+o*(e[i+1]-e[i]):e[i]}function qe(e,A,t={}){let i=t.factor??1.5,o=[],r=A.filter(l=>l.type==="number"&&(!t.columns||t.columns.includes(l.key))),n=l=>l.toLocaleString("en-IN",{maximumFractionDigits:2});for(let l of r){let I=e.map(B=>Number(B[l.key])).filter(B=>Number.isFinite(B));if(I.length<5)continue;let u=[...I].sort((B,v)=>B-v),m=Oi(u,.25),c=Oi(u,.75),k=c-m;if(k===0)continue;let f=m-i*k,C=c+i*k;for(let B of e){let v=Number(B[l.key]);!Number.isFinite(v)||v>=f&&v<=C||o.push({rowId:ie(B,t.rowKey),column:l.key,label:l.label,value:v,kind:v>C?"high":"low",reason:`${l.label} ${n(v)} is far ${v>C?"above":"below"} the typical range (${n(m)}\u2013${n(c)}).`})}}let a=t.rowKey??"id",s=new Map;for(let l of e){let I=JSON.stringify(A.filter(c=>c.key!==a).map(c=>xe(l[c.key]))),u=ie(l,t.rowKey),m=s.get(I);m!==void 0?o.push({rowId:u,column:a,label:"Row",value:u,kind:"duplicate",reason:`Row ${u} has the same values as row ${m}.`}):s.set(I,u)}return o}function He(e,A){if(!e.length)return"No rows to summarise.";let t=[`${e.length} row(s).`],i=o=>o.toLocaleString("en-IN",{maximumFractionDigits:2});for(let o of A){let r=e.map(n=>n[o.key]);if(o.type==="number"){let n=r.map(Number).filter(Number.isFinite);if(!n.length)continue;let a=n.reduce((s,l)=>s+l,0);t.push(`${o.label}: total ${i(a)}, average ${i(a/n.length)}, range ${i(Math.min(...n))}\u2013${i(Math.max(...n))}.`)}else if(o.type==="date"){let n=r.map(s=>new Date(String(s)).getTime()).filter(Number.isFinite);if(!n.length)continue;let a=s=>new Date(s).toISOString().slice(0,10);t.push(`${o.label}: from ${a(Math.min(...n))} to ${a(Math.max(...n))}.`)}else{let n=new Map;for(let s of r){let l=String(s??"").trim();l&&n.set(l,(n.get(l)??0)+1)}if(n.size===0||n.size>Math.max(8,e.length/3))continue;let a=Array.from(n.entries()).sort((s,l)=>l[1]-s[1]).slice(0,4);t.push(`${o.label}: ${a.map(([s,l])=>`${s} (${l})`).join(", ")}.`)}}return t.join(`
|
|
5
|
+
`)}function $A(e,A){var o;let t=xe(e);if(/unusual|anomal|outlier|odd|strange|suspicious|duplicate|అసాధారణ/.test(t)){let r=qe(A.data,A.columns,{rowKey:A.rowKey}),n=Array.from(new Set(r.map(s=>s.rowId)));n.length&&((o=A.onHighlightRows)==null||o.call(A,n));let a=new Set(n);return{kind:"anomalies",message:r.length?`${n.length} unusual row(s):
|
|
6
|
+
${r.slice(0,10).map(s=>`\u2022 ${s.reason}`).join(`
|
|
7
|
+
`)}`:"Nothing unusual found.",ids:n,rows:A.data.filter(s=>a.has(ie(s,A.rowKey))),anomalies:r}}if(/summar|overview|describe|సారాంశం/.test(t)){let r=ve(A.data,A.columns,A.filters??[]);return{kind:"summary",message:He(r,A.columns),ids:[],rows:r}}let i=Ht(e,A);return{kind:"query",message:i.message,ids:i.ids,rows:i.rows}}var PA=e=>{let A=typeof e=="number"?e:Number(String(e??"").replace(/[,₹$%\s]/g,""));return Number.isFinite(A)?A:null},Vi=e=>{let A=e instanceof Date?e.getTime():new Date(String(e??"")).getTime();return Number.isFinite(A)?A:null};function $e(e,A){if(A==="count")return e.length;if(!e.length)return 0;switch(A){case"sum":return e.reduce((t,i)=>t+i,0);case"avg":return e.reduce((t,i)=>t+i,0)/e.length;case"min":return Math.min(...e);case"max":return Math.max(...e)}}function zt(e,A,t,i="sum"){let o=new Map;for(let r of e){let n=String(r[A]??"\u2014").trim()||"\u2014",a=o.get(n)??[];if(t===null||i==="count")a.push(1);else{let s=PA(r[t]);s!==null&&a.push(s)}o.set(n,a)}return Array.from(o.entries()).map(([r,n])=>({group:r,value:$e(n,i),count:n.length})).sort((r,n)=>n.value-r.value)}function Xi(e,A,t=1){let i=new Date(e);return i.setHours(0,0,0,0),A==="week"&&i.setDate(i.getDate()-(i.getDay()-t+7)%7),A==="month"&&i.setDate(1),A==="quarter"&&i.setMonth(Math.floor(i.getMonth()/3)*3,1),A==="year"&&i.setMonth(0,1),i}function Pt(e,A,t){let i=new Date(e);return A==="day"&&i.setDate(i.getDate()+t),A==="week"&&i.setDate(i.getDate()+7*t),A==="month"&&i.setMonth(i.getMonth()+t),A==="quarter"&&i.setMonth(i.getMonth()+3*t),A==="year"&&i.setFullYear(i.getFullYear()+t),i}function Ot(e,A){let t=A.referenceDate?new Date(A.referenceDate):new Date,i=Xi(t,A.period,A.weekStartsOn),o=A.toDate===!1?Pt(i,A.period,1):new Date(Math.max(t.getTime()+1,i.getTime()+1)),r=Pt(i,A.period,-1),n=A.toDate===!1?i:new Date(r.getTime()+(o.getTime()-i.getTime())),a=A.agg??"sum",s=new Map,l=new Map;for(let m of e){let c=Vi(m[A.dateKey]);if(c===null)continue;let k=c>=i.getTime()&&c<o.getTime()?s:c>=r.getTime()&&c<n.getTime()?l:null;if(!k)continue;let f=A.groupKey?String(m[A.groupKey]??"\u2014"):"All",C=a==="count"?1:PA(m[A.metricKey]);C!==null&&k.set(f,[...k.get(f)??[],C])}let I=new Set([...s.keys(),...l.keys()]),u=Array.from(I).map(m=>{let c=$e(s.get(m)??[],a),k=$e(l.get(m)??[],a);return{group:m,current:c,previous:k,change:c-k,changePct:k===0?null:(c-k)/Math.abs(k)*100}});return{period:A.period,current:{from:i,to:o},previous:{from:r,to:n},rows:u}}function Wt(e,A,t,i,o="sum"){let r=new Map;for(let n of e){let a=Vi(n[A]),s=o==="count"?1:PA(n[t]);if(a===null||s===null)continue;let l=Xi(new Date(a),i).getTime();r.set(l,[...r.get(l)??[],s])}return Array.from(r.entries()).sort((n,a)=>n[0]-a[0]).map(([n,a])=>({start:new Date(n),value:$e(a,o)}))}var wr=/rate|conversion|ratio|percent|%|score|rating|margin|ctr|avg|average/i;function vr(e){let A=e.match(/\b(today|yesterday|this|last|previous|past)\s*(day|week|month|quarter|year)?\b/);return A?A[1]==="today"?{period:"day",shift:0}:A[1]==="yesterday"?{period:"day",shift:-1}:A[2]?{period:A[2],shift:A[1]==="this"?0:-1}:null:null}var se=e=>e.toLocaleString("en-IN",{maximumFractionDigits:2}),$t=e=>e===null?"new":`${e>0?"+":""}${e.toFixed(1)}%`;function zA(e,A,t,i={}){var E;let o=e.toLowerCase(),r=t.filter(h=>h.type==="number"),n=de(o,t,"number")??r.find(h=>/amount|revenue|sales|total|value/i.test(`${h.key} ${h.label}`))??r[0],a=t.find(h=>h.type==="date")??t.find(h=>/date|time|day|created|month/i.test(`${h.key} ${h.label}`)),s=((E=o.match(/\b(?:which|by|per|each|across|every|top|for each)\s+([\p{L}\p{M}\p{N} _]+)/u))==null?void 0:E[1])??"",l=de(s,t,"text"),I=/how many|number of|count/.test(o),u=I?"count":/average|avg|mean/.test(o)?"avg":/\btotal\b|\bsum\b/.test(o)?"sum":n&&wr.test(`${n.key} ${n.label}`)?"avg":"sum",m=/drop|decline|decrease|fell|fall|down|worst|lost|shrink|reduc/.test(o),c=/increase|growth|grew|rise|rose|up\b|best|improv|gain/.test(o),k=/lowest|least|smallest|bottom|worst|minimum/.test(o),f=vr(o);if(!n&&!I)return{kind:"unknown",answer:"I couldn't find a numeric column to analyse.",table:[]};let C=I?"rows":n.label;if(f&&a&&(c||m||/change|compare|vs|versus/.test(o))){let h=i.referenceDate?new Date(i.referenceDate):new Date,p=f.shift?Pt(h,f.period,f.shift):h,D=[...Ot(A,{dateKey:a.key,metricKey:(n==null?void 0:n.key)??a.key,groupKey:l==null?void 0:l.key,agg:u,period:f.period,referenceDate:p,toDate:f.shift===0}).rows].sort((R,H)=>m?R.change-H.change:H.change-R.change),Q=D.map(R=>({[(l==null?void 0:l.label)??"Group"]:R.group,Current:se(R.current),Previous:se(R.previous),Change:se(R.change),"Change %":$t(R.changePct)}));if(!D.length)return{kind:"period-change",answer:`No ${C} data in this ${f.period} or the one before.`,table:Q};let x=D[0],G=`${f.shift?"last":"this"} ${f.period} vs the ${f.period} before`,w=x.change===0?"did not change":x.change<0?`dropped ${se(Math.abs(x.change))}`:`rose ${se(x.change)}`,M=`${C} ${w} (${se(x.previous)} \u2192 ${se(x.current)}, ${$t(x.changePct)}) \u2014 ${G}.`,L=m&&x.change>=0||c&&x.change<=0;return{kind:"period-change",answer:l?L?`No ${l.label.toLowerCase()} ${m?"dropped":"grew"}. Closest is ${x.group}: ${M}`:`${x.group}: ${M}`:M,table:Q}}if(/trend|over time|month by month|week by week/.test(o)&&a&&n){let h=/week/.test(o)?"week":/day|daily/.test(o)?"day":/year/.test(o)?"year":"month",p=Wt(A,a.key,n.key,h,u),y=p.map(G=>({Period:G.start.toISOString().slice(0,10),[n.label]:se(G.value)}));if(p.length<2)return{kind:"trend",answer:`Not enough ${h}s of data for a trend.`,table:y};let D=p[0].value,Q=p[p.length-1].value,x=p.reduce((G,w)=>w.value>G.value?w:G);return{kind:"trend",answer:`${n.label} went from ${se(D)} to ${se(Q)} over ${p.length} ${h}s (${$t(D?(Q-D)/Math.abs(D)*100:null)}). Peak: ${se(x.value)} in the ${h} of ${x.start.toISOString().slice(0,10)}.`,table:y}}if(l){let h=zt(A,l.key,(n==null?void 0:n.key)??null,u),p=k?[...h].reverse():h,y=p.map(Q=>({[l.label]:Q.group,[`${u} of ${C}`]:se(Q.value),Rows:Q.count}));if(!p.length)return{kind:"group",answer:"No data.",table:y};let D=p[0];return{kind:"group",answer:`${D.group} has the ${k?"lowest":"highest"} ${u==="sum"?"total":u==="avg"?"average":u} ${C}: ${se(D.value)} (across ${p.length} ${l.label.toLowerCase()} groups).`,table:y}}let B=I?A.map(()=>1):A.map(h=>PA(h[n.key])).filter(h=>h!==null),v=$e(B,u);return{kind:"total",answer:`${u==="avg"?"Average":u==="count"?"Count of":u==="sum"?"Total":u} ${C}: ${se(v)} across ${A.length} row(s).`,table:[{Metric:C,Aggregation:u,Value:se(v)}]}}var _i="highlight|mark|flag|sort|order|rank|arrange|summari[sz]e|summary|recap|count|how many|open|select|pick|show|filter|find|list|clear|reset|remove|detect|spot|tell";function QA(e){return e.replace(/[?!]/g," ").split(/\s*(?:;|\.(?!\d)\s*|,?\s*\band then\b|,?\s*\bthen\b|,?\s*\bafter that\b|,?\s*\bfinally\b|,?\s*\bnext\b|ఆ తర్వాత)\s*/i).flatMap(i=>i.split(new RegExp(`\\s*(?:,|\\band\\b)\\s+(?=(?:${_i})\\b)`,"i"))).map(i=>i.trim()).filter(i=>i.length>1).map(i=>({action:xr(i),text:i}))}function xr(e){let A=e.toLowerCase();return/^(clear|reset|remove)\b/.test(A)?"clear":/unusual|anomal|outlier|suspicious|odd ones|duplicate/.test(A)?"anomalies":/summari[sz]e|summary|what changed|recap|overview/.test(A)?"summarize":/^(highlight|mark|flag)\b/.test(A)?"highlight":/^(sort|order|rank|arrange)\b/.test(A)?"sort":/^(count|how many)\b/.test(A)?"count":/^(open|go to)\b/.test(A)&&!/filtered|results?/.test(A)?"open":/^(select|pick)\b/.test(A)?"select":"filter"}function kr(e){return e.replace(new RegExp(`^\\s*(?:${_i}|open|go to)\\b`,"i")," ").replace(/\b(the|filtered|results?|rows?|records?|entries|items?|ones|them|those|only|me|all)\b/gi," ").replace(/\s+/g," ").trim()}function ji(e,A){var r;let t=((r=A.find(n=>n.key===e.key))==null?void 0:r.label)??e.key,i=Array.isArray(e.value)?`${e.value[0]}\u2013${e.value[1]}`:typeof e.value=="number"?e.value.toLocaleString("en-IN",{maximumFractionDigits:2}):`"${e.value}"`,o={contains:"contains",equals:"is",startsWith:"starts with",endsWith:"ends with",greaterThan:">",lessThan:"<",between:"between"}[e.operator];return`${t} ${o} ${i}`}async function OA(e,A,t={}){var f,C,B,v,E,h,p,y,D;let i=QA(e),{columns:o,data:r}=A,n=[...A.filters??[]],a=[],s=null,l=[],I=()=>Se(r,o,{filters:n,search:a,sort:s,limit:null,notes:[],explanation:""}),u={rows:I().length,filters:[...n]},m=[],c=()=>({...A,filters:n});for(let Q=0;Q<i.length;Q++){let x=i[Q],G=kr(x.text),w;try{switch(x.action){case"clear":{n=[],a=[],s=null,l=[],(f=A.onFiltersChange)==null||f.call(A,[]),(C=A.onSortChange)==null||C.call(A,null),(B=A.onHighlightRows)==null||B.call(A,[]),w={...x,success:!0,message:`Cleared filters, sorting and highlights. ${r.length} row(s) shown.`};break}case"filter":{let M=Fe(G,o,{data:r});if(!M.filters.length&&!M.search.length&&!M.sort){w={...x,success:!0,message:`Showing ${I().length} row(s) with the current filters.`};break}for(let R of M.filters)n=[...n.filter(H=>H.key!==R.key),R];a=[...a,...M.search],M.sort&&(s=M.sort,(v=A.onSortChange)==null||v.call(A,s)),(E=A.onFiltersChange)==null||E.call(A,n);let L=I(),F=L.map(R=>ie(R,A.rowKey)).filter(Boolean);M.search.length&&F.length&&(l=F,(h=A.onHighlightRows)==null||h.call(A,F)),w={...x,success:!0,message:`${L.length} row(s) now shown. ${M.explanation}`,ids:F};break}case"highlight":{let M=I(),L=Fe(G,o,{data:M}),R=(L.filters.length||L.search.length?Se(M,o,{...L,sort:null,limit:L.limit}):M).map(Ie=>ie(Ie,A.rowKey)).filter(Boolean);if(!R.length){w={...x,success:!1,message:`Nothing to highlight for "${G||"all rows"}".`};break}let H=AA(c(),R);H.success&&(l=H.data??R),w={...x,success:H.success,message:H.success?`Highlighted ${l.length} row(s)${G?` matching "${G}"`:""}.`:H.message,ids:l};break}case"sort":{let L=Fe(x.text,o,{data:r}).sort;if(!L){let R=de(G,o);R&&(L={key:R.key,direction:/desc|high|large|big|most|newest|latest|z.?to.?a/i.test(x.text)?"desc":"asc"})}if(!L){w={...x,success:!1,message:`Which column should I sort by? Columns: ${o.map(R=>R.label).join(", ")}.`};break}s=L,(p=A.onSortChange)==null||p.call(A,s);let F=((y=o.find(R=>R.key===s.key))==null?void 0:y.label)??s.key;w={...x,success:!0,message:`Sorted by ${F} (${s.direction==="desc"?"high \u2192 low":"low \u2192 high"}).`};break}case"count":{w={...x,success:!0,message:`${I().length} row(s) shown${l.length?`, ${l.length} highlighted`:""}.`};break}case"anomalies":{let M=I(),L=qe(M,o,{rowKey:A.rowKey}),F=Array.from(new Set(L.map(R=>R.rowId)));if(F.length){let R=AA(c(),F);R.success&&(l=R.data??F)}w={...x,success:!0,message:L.length?`${F.length} unusual row(s): ${L.slice(0,5).map(R=>R.reason).join(" ")}`:"Nothing unusual in the shown rows.",ids:F};break}case"open":case"select":{let M=I(),F=M.find(Ie=>G&&ie(Ie,A.rowKey).toLowerCase()===G.toLowerCase())??Se(M,o,Fe(G,o,{data:M}))[0]??(G?void 0:M[0]);if(!F){w={...x,success:!1,message:`No row matches "${G}".`};break}let R=ie(F,A.rowKey),H=x.action==="open"?mA(c(),R):yA(c(),R);w={...x,success:H.success,message:H.message,ids:[R]};break}case"summarize":{let M=I();w={...x,success:!0,message:`${Zi(u,M.length,n,s,l,o)}
|
|
8
|
+
${He(M,o)}`};break}}}catch(M){w={...x,success:!1,message:`This step failed: ${M instanceof Error?M.message:String(M)}`}}m.push(w),(D=t.onStep)==null||D.call(t,w,Q,i.length)}let k=I().length;return{steps:m,before:u,after:{rows:k,filters:n,sort:s,highlighted:l},summary:Zi(u,k,n,s,l,o)}}function Zi(e,A,t,i,o,r){var l;let n=[`Rows: ${e.rows} \u2192 ${A}.`],a=t.filter(I=>!e.filters.some(u=>JSON.stringify(u)===JSON.stringify(I))),s=e.filters.filter(I=>!t.some(u=>JSON.stringify(I)===JSON.stringify(u)));return a.length&&n.push(`Filters added: ${a.map(I=>ji(I,r)).join("; ")}.`),s.length&&n.push(`Filters removed: ${s.map(I=>ji(I,r)).join("; ")}.`),i&&n.push(`Sorted by ${((l=r.find(I=>I.key===i.key))==null?void 0:l.label)??i.key} ${i.direction==="desc"?"high \u2192 low":"low \u2192 high"}.`),o.length&&n.push(`${o.length} row(s) highlighted.`),n.join(" ")}var Dr="[data-yuktai-panel]";function Ee(){return typeof window<"u"&&typeof document<"u"}function Pe(e){return typeof e=="object"&&e!==null&&e.nodeType===9}function ue(e){return e||(Ee()?document:null)}function U(e,A,t={}){return Array.from(e.querySelectorAll(A)).filter(i=>!i.closest(Dr)&&(t.includeHidden||Mr(i)))}function Mr(e){if(!Ee()||e.closest("[hidden],[aria-hidden='true']"))return!1;let A=e;for(;A;){let t=window.getComputedStyle(A);if(t.display==="none"||t.visibility==="hidden")return!1;A=A.parentElement}return!0}function ne(e){return(e??"").replace(/\s+/g," ").trim()}function re(e,A=60){let t=ne(e);return t.length>A?`${t.slice(0,A-1)}\u2026`:t}function ke(e){let A=[],t=e;for(;t&&t.nodeType===1&&A.length<4;){let i=t.tagName.toLowerCase();if(t.id&&/^[A-Za-z][\w-]*$/.test(t.id)){A.unshift(`${i}#${t.id}`);break}let o=t.parentElement;if(!o){A.unshift(i);break}let r=Array.from(o.children).filter(n=>n.tagName===t.tagName);A.unshift(r.length>1?`${i}:nth-of-type(${r.indexOf(t)+1})`:i),t=o}return A.join(" > ")}function Sr(e,A){return e.split(/\s+/).map(t=>{var i;return ne((i=A.getElementById(t))==null?void 0:i.textContent)}).filter(Boolean).join(" ")}function he(e){let A=e.ownerDocument,t=e.getAttribute("aria-labelledby");if(t){let r=Sr(t,A);if(r)return r}let i=ne(e.getAttribute("aria-label"));if(i)return i;let o=e.tagName.toLowerCase();if(o==="input"||o==="select"||o==="textarea"){let r=e.getAttribute("id");if(r){let s=A.querySelector(`label[for="${Gr(r)}"]`),l=ne(s==null?void 0:s.textContent);if(l)return l}let n=e.closest("label");if(n){let s=ne(n.textContent);if(s)return s}let a=(e.getAttribute("type")??"").toLowerCase();if(a==="submit"||a==="button"||a==="reset")return ne(e.getAttribute("value"))||(a==="submit"?"Submit":"");if(a==="image")return ne(e.getAttribute("alt"))}if(o==="img")return ne(e.getAttribute("alt"));if(o==="button"||o==="a"||e.getAttribute("role")){let r=ne(e.textContent);if(r)return r;let n=Array.from(e.querySelectorAll("img[alt], svg[aria-label]")).map(a=>ne(a.getAttribute("alt")??a.getAttribute("aria-label"))).filter(Boolean).join(" ");if(n)return n}return ne(e.getAttribute("title"))}function Gr(e){return typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(e):e.replace(/["\\]/g,"\\$&")}function Re(e){if(!e)return null;let A=e.trim().toLowerCase();if(A==="transparent")return{r:0,g:0,b:0,a:0};let t=A.match(/^rgba?\(([^)]+)\)$/);if(t){let o=t[1].split(/[\s,/]+/).filter(Boolean),[r,n,a]=o.slice(0,3).map(Number),s=o[3],l=s===void 0?1:s.endsWith("%")?Number(s.slice(0,-1))/100:Number(s);return[r,n,a,l].some(I=>!Number.isFinite(I))?null:{r,g:n,b:a,a:l}}let i=A.match(/^#([0-9a-f]{3,8})$/);if(i){let o=i[1];return(o.length===3||o.length===4)&&(o=o.split("").map(r=>r+r).join("")),o.length!==6&&o.length!==8?null:{r:parseInt(o.slice(0,2),16),g:parseInt(o.slice(2,4),16),b:parseInt(o.slice(4,6),16),a:o.length===8?parseInt(o.slice(6,8),16)/255:1}}return null}function Vt(e,A){let t=e.a+A.a*(1-e.a);if(t===0)return{r:0,g:0,b:0,a:0};let i=(o,r)=>(o*e.a+r*A.a*(1-e.a))/t;return{r:i(e.r,A.r),g:i(e.g,A.g),b:i(e.b,A.b),a:t}}function WA(e){let A=t=>{let i=t/255;return i<=.04045?i/12.92:Math.pow((i+.055)/1.055,2.4)};return .2126*A(e.r)+.7152*A(e.g)+.0722*A(e.b)}function iA(e,A){let t=A.a<1?Vt(A,{r:255,g:255,b:255,a:1}):A,i=e.a<1?Vt(e,t):e,o=WA(i),r=WA(t),[n,a]=o>r?[o,r]:[r,o];return Math.round((n+.05)/(a+.05)*100)/100}function en(e){let A=[],t=e;for(;t;){let o=window.getComputedStyle(t);if(o.backgroundImage&&o.backgroundImage!=="none")return null;let r=Re(o.backgroundColor);if(r&&r.a>0&&(A.push(r),r.a>=1))break;t=t.parentElement}let i={r:255,g:255,b:255,a:1};for(let o=A.length-1;o>=0;o--)i=Vt(A[o],i);return i}function An(e){let A=window.getComputedStyle(e),t=parseFloat(A.fontSize)||16,i=parseInt(A.fontWeight,10)||400;return t>=24||t>=18.66&&i>=700}function BA(e){return Array.from(e.childNodes).some(A=>A.nodeType===3&&ne(A.textContent).length>0)}var tn="a[href],button,input:not([type='hidden']),select,textarea,summary,[tabindex]:not([tabindex='-1']),[contenteditable='true']",VA="a[href],button,input:not([type='hidden']),select,textarea,summary,[role='button'],[role='link'],[role='checkbox'],[role='tab'],[role='menuitem']";var nA={"html-lang":{title:"Page language is set",wcag:"3.1.1",severity:"serious",why:"Screen readers pick their voice and pronunciation from the page language. Without it, Telugu or Hindi text may be read with English rules."},"page-title":{title:"Page has a title",wcag:"2.4.2",severity:"serious",why:"The title is the first thing announced and the name shown on browser tabs and bookmarks."},"image-alt":{title:"Images have alternative text",wcag:"1.1.1",severity:"critical",why:'People who cannot see the image get no information from it unless alt text describes it (or alt="" marks it as decorative).'},"heading-order":{title:"Headings follow a logical order",wcag:"1.3.1",severity:"moderate",why:"Many screen-reader users jump between headings. Skipped levels make the page outline confusing."},"single-h1":{title:"Page has one main heading",wcag:"best practice",severity:"minor",why:"A single h1 tells everyone what the page is about."},"landmark-main":{title:"Main content landmark exists",wcag:"1.3.1 / 2.4.1",severity:"moderate",why:"A <main> region lets keyboard and screen-reader users skip straight past menus to the content."},"form-label":{title:"Form fields have labels",wcag:"1.3.1 / 4.1.2",severity:"critical",why:'Without a label, a screen reader just says "edit text" and the user has to guess what to type.'},"button-name":{title:"Buttons have names",wcag:"4.1.2",severity:"critical",why:'An icon-only button with no name is announced as just "button", so its purpose is unknown.'},"link-name":{title:"Links have names",wcag:"2.4.4",severity:"serious",why:"Links are often read out of context in a list. An empty link gives no clue where it goes."},"color-contrast":{title:"Text has enough contrast",wcag:"1.4.3",severity:"serious",why:"Low-contrast text is hard to read for older users, people with low vision, and anyone outdoors on a phone."},"positive-tabindex":{title:"No positive tabindex",wcag:"2.4.3",severity:"moderate",why:"tabindex greater than 0 forces a custom keyboard order that usually doesn't match the visual order."},"keyboard-access":{title:"Clickable things work with a keyboard",wcag:"2.1.1",severity:"critical",why:"A div or span with a click handler can't be reached or activated with Tab and Enter, locking out keyboard users."},"duplicate-id":{title:"IDs are unique",wcag:"best practice",severity:"minor",why:"Labels and ARIA references point at ids. Duplicates make them point at the wrong element."},"form-error":{title:"Errors are linked to their fields",wcag:"3.3.1",severity:"serious",why:"When a field is marked invalid, the error message must be connected to it so it's announced together with the field."},"target-size":{title:"Touch targets are large enough",wcag:"2.5.8",severity:"moderate",why:"Small targets are hard to tap for people with tremors, seniors and everyone on mobile."}},Nr={critical:10,serious:5,moderate:2,minor:1};function pe(e={}){let A=ue(e.root),t=new Set(e.skip??[]),i=[],o={},r=A?Pe(A)?A:A.ownerDocument:null,n=(a,s,l,I,u=!1)=>{if(t.has(a))return;let m=nA[a],c=o[a]=(o[a]??0)+1;i.push({id:`${a}-${c}`,rule:a,severity:m.severity,wcag:m.wcag,message:l,why:m.why,fix:I,selector:s?ke(s):"document",snippet:s?re(s.outerHTML,120):"",autoFixable:u,element:s??void 0})};if(A&&r){r.documentElement.getAttribute("lang")||n("html-lang",r.documentElement,"The <html> element has no lang attribute.",'Add lang to <html>, e.g. <html lang="te"> or "en".',!0),r.title.trim()||n("page-title",null,"The page has no <title>.","Add a short, descriptive <title> that names this page.");for(let C of U(A,"img"))if(!(C.getAttribute("role")==="presentation"||C.getAttribute("role")==="none")&&!C.hasAttribute("alt")&&!C.getAttribute("aria-label")&&!C.getAttribute("aria-labelledby")){let B=C.getAttribute("title");n("image-alt",C,`Image has no alt text${C.getAttribute("src")?` (${re(C.getAttribute("src")??"",40)})`:""}.`,B?`Use the title as alt: alt="${re(B,40)}".`:'Describe the image in alt, or use alt="" if it is purely decorative.',!!B)}let a=U(A,"h1,h2,h3,h4,h5,h6"),s=0;for(let C of a){let B=Number(C.tagName[1]);s>0&&B>s+1&&n("heading-order",C,`Heading jumps from h${s} to h${B}: "${re(C.textContent??"",40)}".`,`Change it to h${s+1}, or add the missing level above it.`),s=B}let l=a.filter(C=>C.tagName==="H1");l.length===0?n("single-h1",null,"The page has no h1.","Add one h1 that names the page."):l.length>1&&n("single-h1",l[1],`The page has ${l.length} h1 headings.`,"Keep one h1; turn the others into h2."),A.querySelectorAll("main,[role='main']").length===0&&n("landmark-main",null,"No <main> landmark found.","Wrap the primary content in <main>.");let I=U(A,"input,select,textarea").filter(C=>{let B=(C.getAttribute("type")??"text").toLowerCase();return!["hidden","submit","button","reset","image"].includes(B)});for(let C of I){if(!he(C)){let B=C.getAttribute("placeholder")||C.getAttribute("name");n("form-label",C,`Form field has no label${B?` (placeholder/name: "${re(B,30)}")`:""}.`,B?`Add a visible <label>. Quick fix: aria-label="${re(B,30)}".`:"Add a visible <label for=\u2026> describing what to enter.",!!B)}C.getAttribute("aria-invalid")==="true"&&(C.getAttribute("aria-describedby")||C.getAttribute("aria-errormessage")||n("form-error",C,"Field is marked invalid but no error message is linked to it.","Put the error text in an element with an id and point aria-describedby at it."))}for(let C of U(A,"button,[role='button'],input[type='submit'],input[type='button']"))if(!he(C)){let B=C.getAttribute("title");n("button-name",C,"Button has no accessible name.",B?`Use the title as the name: aria-label="${B}".`:"Add visible text or an aria-label that says what the button does.",!!B)}for(let C of U(A,"a[href]"))if(!he(C)){let B=C.getAttribute("title");n("link-name",C,`Link has no text (${re(C.getAttribute("href")??"",40)}).`,B?`Use the title as the name: aria-label="${B}".`:"Add link text that says where it goes.",!!B)}for(let C of U(A,"[tabindex]"))Number(C.getAttribute("tabindex"))>0&&n("positive-tabindex",C,`tabindex="${C.getAttribute("tabindex")}" overrides the natural tab order.`,'Use tabindex="0" and fix the order in the HTML instead.',!0);let u="a[href],button,input,select,textarea,summary";for(let C of U(A,"[onclick],[role='button'],[role='link']"))C.matches(u)||C.hasAttribute("tabindex")||n("keyboard-access",C,`<${C.tagName.toLowerCase()}> is clickable but can't be reached with the keyboard.`,'Use a real <button>, or add tabindex="0", a role and Enter/Space key handling.',!0);let m=new Map;for(let C of Array.from(A.querySelectorAll("[id]")))C.closest("[data-yuktai-panel]")||m.set(C.id,(m.get(C.id)??0)+1);for(let[C,B]of m)B>1&&n("duplicate-id",A.querySelector(`[id="${C.replace(/"/g,'\\"')}"]`),`id="${C}" is used ${B} times.`,"Give each element a unique id.");let c=e.maxContrastChecks??600,k=0;for(let C of U(A,"body *")){if(k>=c)break;if(!BA(C)||["SCRIPT","STYLE","NOSCRIPT","OPTION"].includes(C.tagName))continue;k++;let B=Re(window.getComputedStyle(C).color),v=en(C);if(!B||!v)continue;let E=iA(B,v),h=An(C)?3:4.5;E<h&&n("color-contrast",C,`Contrast ${E}:1 is below ${h}:1 for "${re(C.textContent??"",30)}".`,`Darken the text or lighten the background until the ratio is at least ${h}:1.`)}let f=e.minTargetSize??24;for(let C of U(A,VA)){let B=C.getBoundingClientRect();B.width===0&&B.height===0||C.tagName==="A"&&C.closest("p,li,td")||(B.width<f||B.height<f)&&n("target-size",C,`Target is ${Math.round(B.width)}\xD7${Math.round(B.height)}px (minimum ${f}\xD7${f}).`,`Increase padding so it's at least ${f}\xD7${f}px (44\xD744 is better for seniors).`)}}return Fr(i,r,t)}function Fr(e,A,t){var s;let i=Object.keys(nA).filter(l=>!t.has(l)).map(l=>{let I=e.filter(u=>u.rule===l).length;return{rule:l,title:nA[l].title,passed:I===0,issueCount:I}}),o=0;for(let l of i){let I=Nr[nA[l.rule].severity];o+=Math.min(25,l.issueCount*I)}let r=Math.max(0,100-o),n=i.filter(l=>!l.passed),a=e.filter(l=>l.severity==="critical").length;return{url:((s=A==null?void 0:A.location)==null?void 0:s.href)??"",title:(A==null?void 0:A.title)??"",generatedAt:new Date().toISOString(),score:r,passed:a===0&&r>=80,checks:i,issues:e,summary:e.length===0?`All ${i.length} checks passed.`:`${i.length-n.length} of ${i.length} checks passed. ${e.length} issue(s) found, ${a} critical. Score ${r}/100.`}}function EA(e){let A=["# Accessibility QA report","",`- Page: ${e.title||"(untitled)"} ${e.url}`,`- Generated: ${e.generatedAt}`,`- Score: **${e.score}/100** \u2014 ${e.passed?"PASS":"FAIL"}`,"",e.summary,"","## Checks","","| Check | Result | Issues |","|---|---|---|",...e.checks.map(t=>`| ${t.title} | ${t.passed?"\u2705 Pass":"\u274C Fail"} | ${t.issueCount} |`)];if(e.issues.length){A.push("","## Issues","");for(let t of e.issues)A.push(`### ${t.id} \xB7 ${t.severity} \xB7 WCAG ${t.wcag}`,"",`- **Problem:** ${t.message}`,`- **Why it matters:** ${t.why}`,`- **Fix:** ${t.fix}`,`- **Where:** \`${t.selector}\``,"")}return A.join(`
|
|
9
|
+
`)}function XA(e){return JSON.stringify({...e,issues:e.issues.map(({element:A,...t})=>t)},null,2)}function jA(e={}){let A=null,t=null,i=null,o=!1,r=[],n=()=>({report:A,watching:t!==null,appliedFixes:r.length}),a=()=>{var m;return(m=e.onUpdate)==null?void 0:m.call(e,n())},s=m=>A==null?void 0:A.issues.find(c=>c.id===m),l=(m,c,k)=>{r.push({element:m,attribute:c,previous:m.getAttribute(c)}),m.setAttribute(c,k)};function I(m){let c=m.element,k=(f,C)=>({issueId:m.id,applied:f,message:C});if(!m.autoFixable||!c)return k(!1,"This needs a human decision \u2014 see the suggested fix.");switch(m.rule){case"html-lang":{let f=e.defaultLang||(Ee()?navigator.language:"")||"en";return l(c,"lang",f),k(!0,`Set lang="${f}" on <html>.`)}case"image-alt":{let f=c.getAttribute("title");if(!f)break;return l(c,"alt",f),k(!0,`Used the image title as alt text: "${f}".`)}case"form-label":{let f=c.getAttribute("placeholder")||c.getAttribute("name");if(!f)break;let C=f.replace(/[_-]+/g," ").trim();return l(c,"aria-label",C),k(!0,`Added aria-label="${C}". A visible <label> is still better.`)}case"button-name":case"link-name":{let f=c.getAttribute("title");if(!f)break;return l(c,"aria-label",f),k(!0,`Added aria-label="${f}".`)}case"positive-tabindex":return l(c,"tabindex","0"),k(!0,"Changed tabindex to 0 so the natural order applies.");case"keyboard-access":{l(c,"tabindex","0"),c.getAttribute("role")||l(c,"role","button");let f=C=>{let B=C.key;(B==="Enter"||B===" ")&&(C.preventDefault(),c.click())};return c.addEventListener("keydown",f),r.push({element:c,attribute:"",previous:null,listener:f}),k(!0,"Made it focusable and added Enter/Space support.")}default:break}return k(!1,"No safe automatic fix for this one \u2014 see the suggested fix.")}function u(){if(A=pe(e),e.autoApply){o=!0;let m=A.issues.filter(c=>c.autoFixable).map(I);o=!1,m.some(c=>c.applied)&&(A=pe(e))}return a(),A}return{start(){if(!Ee()||t)return;let m=ue(e.root),c=Pe(m)?m.body:m;c&&(t=new MutationObserver(k=>{o||!k.some(C=>{var B,v;return!((v=(B=C.target).closest)!=null&&v.call(B,"[data-yuktai-panel]"))})||(i&&clearTimeout(i),i=setTimeout(u,e.debounceMs??600))}),t.observe(c,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["alt","aria-label","aria-invalid","tabindex","lang","title"]}),u())},stop(){t==null||t.disconnect(),t=null,i&&clearTimeout(i),i=null,a()},scan:u,explain(m){let c=s(m);return c?[`${c.message}`,`Why it matters: ${c.why}`,`How to fix: ${c.fix}`,`Standard: WCAG ${c.wcag} (${c.severity}).`,c.autoFixable?"I can apply a safe fix for this in the browser.":"This one needs a change in your code."].join(`
|
|
10
|
+
`):`No issue "${m}" in the current report. Run a scan first.`},applyFix(m){let c=s(m);if(!c)return{issueId:m,applied:!1,message:"Issue not found. Run a scan first."};o=!0;let k=I(c);return o=!1,k.applied&&u(),k},applyAllFixes(){A||u(),o=!0;let m=((A==null?void 0:A.issues)??[]).filter(c=>c.autoFixable).map(I);return o=!1,u(),m},undoAll(){let m=r.length;for(o=!0;r.length;){let c=r.pop();c.listener?c.element.removeEventListener("keydown",c.listener):c.previous===null?c.element.removeAttribute(c.attribute):c.element.setAttribute(c.attribute,c.previous)}return o=!1,u(),m},getState:n}}var Rr=/^(field|input|value|text|enter|details?|info|data|\*|:)$/i,Tr=/^(go|ok|submit|send|click here|>|→|next)$/i,Lr=[[/e-?mail/i,"email","email"],[/phone|mobile|tel/i,"tel","tel"],[/^(full)?name$|full.?name/i,"name"],[/first.?name|given/i,"given-name"],[/last.?name|surname|family/i,"family-name"],[/address|street/i,"street-address"],[/zip|postal|pin.?code|pincode/i,"postal-code"],[/city|town/i,"address-level2"],[/country/i,"country-name"],[/password/i,"current-password","password"],[/dob|birth/i,"bday"]];function Yr(e){let A=e.getAttribute("id");return A&&e.ownerDocument.querySelector(`label[for="${A.replace(/"/g,'\\"')}"]`)?!0:!!e.closest("label")}function Xt(e){return U(e,"input,select,textarea").filter(A=>!["hidden","submit","button","reset","image"].includes((A.getAttribute("type")??"text").toLowerCase())).map(A=>({label:he(A),type:A.tagName==="INPUT"?(A.getAttribute("type")??"text").toLowerCase():A.tagName.toLowerCase(),name:A.getAttribute("name")??A.getAttribute("id")??"",required:A.hasAttribute("required")||A.getAttribute("aria-required")==="true",hasVisibleLabel:Yr(A),selector:ke(A),element:A}))}function jt(e,A={}){var m;let t=A.seniorFriendly!==!1,i=A.maxFieldsPerStep??8,o=Xt(e),r=[],n=(c,k,f,C)=>r.push({level:c,message:k,suggestion:f,field:(C==null?void 0:C.label)||(C==null?void 0:C.name),selector:C==null?void 0:C.selector});for(let c of o){let k=c.element,f=c.label||c.name||c.type,C=k.getAttribute("placeholder");!c.label&&C?n("problem",`"${C}" uses only a placeholder as its label.`,"Placeholders disappear when typing starts and aren't read by every screen reader. Add a visible label above the field.",c):c.label?!c.hasVisibleLabel&&C&&!k.getAttribute("aria-label")?n("problem",`"${f}" uses only a placeholder as its label.`,"Placeholders disappear when typing starts. Add a visible label above the field.",c):Rr.test(c.label)&&n("improvement",`The label "${c.label}" is unclear.`,'Say exactly what is needed, e.g. "Mobile number (10 digits)".',c):n("problem",`A ${c.type} field${c.name?` ("${c.name}")`:""} has no label.`,"Add a visible <label> that says exactly what to enter.",c),c.required&&c.label&&!/\*|required|mandatory|తప్పనిసరి|आवश्यक/i.test(c.label)&&n("improvement",`"${f}" is required but the label doesn't say so.`,'Add "(required)" to the label so everyone knows before submitting.',c);let B=`${c.name} ${c.label}`;for(let[v,E,h]of Lr)if(v.test(B)){k.getAttribute("autocomplete")||n("improvement",`"${f}" has no autocomplete hint.`,`Add autocomplete="${E}" so browsers can fill it in (WCAG 1.3.5).`,c),h&&c.type==="text"&&n("improvement",`"${f}" uses type="text".`,`Use type="${h}" for the right mobile keyboard and validation.`,c);break}if(k.getAttribute("aria-invalid")==="true"&&!k.getAttribute("aria-describedby")&&!k.getAttribute("aria-errormessage")&&n("problem",`"${f}" shows an error that isn't connected to the field.`,"Link the error text with aria-describedby and explain how to fix it.",c),t){let v=parseFloat(window.getComputedStyle(k).fontSize)||16;v<16&&n("improvement",`"${f}" text is ${v}px.`,"Use at least 16px in inputs; it is easier to read and stops mobile browsers from zooming.",c)}}o.length>i&&n("improvement",`This form has ${o.length} fields on one screen.`,`Split it into steps of about ${i} fields with a progress indicator.`);let a=U(e,"button,input[type='submit'],input[type='button']");if(a.length===0)n("problem","No submit button found.",'Add a clear <button type="submit"> so the form can be completed with the keyboard.');else if(t){let c=ne(he(a[a.length-1]));Tr.test(c)&&n("improvement",`The button says "${c}".`,'Name the result, e.g. "Send message" or "Book appointment".')}!U(e,"[role='alert'],[aria-live]",{includeHidden:!0}).length&&o.some(c=>c.required)&&n("improvement","No live region for error messages.",'Add an element with role="alert" so errors are announced when the form is submitted.');let s=r.filter(c=>c.level==="problem").length,l=r.length-s,I=Math.max(0,100-s*15-l*4),u=e.getAttribute("aria-label")||ne((m=e.querySelector("legend,h1,h2,h3"))==null?void 0:m.textContent)||e.getAttribute("name")||e.getAttribute("id")||"Form";return{name:re(u,50),selector:ke(e),fields:o,findings:r,score:I,summary:r.length===0?`"${re(u,40)}" looks clear: ${o.length} labelled field(s), nothing to fix.`:`"${re(u,40)}" has ${o.length} field(s): ${s} problem(s) and ${l} suggestion(s). Score ${I}/100.`}}function rA(e={}){let A=ue(e.root);return A?U(A,"form,[role='form']").map(t=>jt(t,e)):[]}function Zt(e){var I;let A=ue(e),t={title:"",description:"",language:"",headings:[],landmarks:{},counts:{links:0,buttons:0,images:0,forms:0,tables:0,fields:0},unlabeledFields:[],imagesWithoutAlt:[],purpose:""};if(!A)return t;let i=Pe(A)?A:A.ownerDocument,o=U(A,"h1,h2,h3,h4,h5,h6").map(u=>({level:Number(u.tagName[1]),text:re(u.textContent??"",80)})),r={};for(let[u,m]of Object.entries({header:"header,[role='banner']",navigation:"nav,[role='navigation']",main:"main,[role='main']",search:"search,[role='search']",footer:"footer,[role='contentinfo']"}))r[u]=U(A,m).length;let n=U(A,"input,select,textarea").filter(u=>!["hidden","submit","button","reset","image"].includes((u.getAttribute("type")??"text").toLowerCase())),a=n.filter(u=>!he(u)).map(u=>({type:u.tagName==="INPUT"?u.getAttribute("type")??"text":u.tagName.toLowerCase(),hint:u.getAttribute("placeholder")||u.getAttribute("name")||"",selector:ke(u)})),s=U(A,"img:not([alt])").map(u=>({src:u.getAttribute("src")??"",selector:ke(u)})),l={title:i.title,description:ne((I=i.querySelector('meta[name="description"]'))==null?void 0:I.getAttribute("content")),language:i.documentElement.getAttribute("lang")??"",headings:o,landmarks:r,counts:{links:U(A,"a[href]").length,buttons:U(A,"button,[role='button'],input[type='submit']").length,images:U(A,"img").length,forms:U(A,"form,[role='form']").length,tables:U(A,"table,[role='grid'],[role='table']").length,fields:n.length},unlabeledFields:a,imagesWithoutAlt:s,purpose:""};return l.purpose=Ur(l,n),l}function Ur(e,A){var n;let t=((n=e.headings.find(a=>a.level===1))==null?void 0:n.text)||e.title||"This page",i=A.map(a=>`${a.getAttribute("type")} ${a.getAttribute("name")} ${he(a)}`).join(" ").toLowerCase(),o=[];/password/.test(i)?o.push("sign in or create an account"):(/search|query|వెతుకు/.test(i)||e.landmarks.search)&&o.push("search"),/message|comment|feedback|contact|enquiry/.test(i)&&o.push("send a message"),/card|payment|upi|amount/.test(i)&&o.push("make a payment"),e.counts.tables&&o.push(`browse ${e.counts.tables} table(s) of data`),!o.length&&e.counts.forms&&o.push(`fill in ${e.counts.forms} form(s)`),o.length||o.push("read content");let r=e.headings.filter(a=>a.level===2).slice(0,5).map(a=>a.text);return[`"${t}" lets you ${o.join(", ")}.`,e.description?`It describes itself as: ${re(e.description,140)}`:"",r.length?`Main sections: ${r.join(" \xB7 ")}.`:""].filter(Boolean).join(" ")}var Jr=[["missing-labels",/label|unlabel|లేబుల్/i],["images",/image|alt text|picture|photo|చిత్ర/i],["structure",/heading|structure|outline|section|landmark|శీర్షిక/i],["forms",/form|field|input|ఫారం/i],["links",/link|లింక్/i],["counts",/how many|count|ఎన్ని/i],["purpose",/what (does|is)|purpose|about|summar|explain|ఏమి|గురించి/i]];function _t(e){for(let[A,t]of Jr)if(t.test(e))return A;return"unknown"}async function ZA(e,A={}){var o;let t=Zt(A.root),i=_t(e);switch(i){case"missing-labels":return t.unlabeledFields.length?{intent:i,answer:`${t.unlabeledFields.length} of ${t.counts.fields} field(s) have no label: ${t.unlabeledFields.map(r=>`${r.type}${r.hint?` ("${r.hint}")`:""}`).join(", ")}.`,targets:t.unlabeledFields.map(r=>r.selector),suggestions:["Add a visible <label for=\u2026> to each field.","Run the Accessibility Copilot to add aria-labels from placeholders as a quick fix."]}:{intent:i,answer:`All ${t.counts.fields} form field(s) have labels.`,targets:[],suggestions:[]};case"images":return{intent:i,answer:t.imagesWithoutAlt.length?`${t.imagesWithoutAlt.length} of ${t.counts.images} image(s) have no alt text.`:`All ${t.counts.images} image(s) have alt text.`,targets:t.imagesWithoutAlt.map(r=>r.selector),suggestions:t.imagesWithoutAlt.length?['Describe meaningful images in alt; use alt="" for decorative ones.']:[]};case"structure":{let r=t.headings.slice(0,15).map(a=>`${" ".repeat(a.level-1)}h${a.level} ${a.text}`).join(`
|
|
11
|
+
`),n=Object.entries(t.landmarks).filter(([,a])=>a===0).map(([a])=>a);return{intent:i,answer:`${t.headings.length} heading(s).
|
|
12
|
+
${r}${n.length?`
|
|
13
|
+
Missing landmarks: ${n.join(", ")}.`:""}`,targets:[],suggestions:n.includes("main")?["Wrap the primary content in <main>."]:[]}}case"forms":{let r=rA({root:A.root});return{intent:i,answer:r.length?r.map(n=>n.summary).join(`
|
|
14
|
+
`):"There are no forms on this page.",targets:r.flatMap(n=>n.findings.map(a=>a.selector).filter(a=>!!a)),suggestions:r.flatMap(n=>n.findings.slice(0,3).map(a=>a.suggestion))}}case"links":case"counts":{let r=t.counts;return{intent:i,answer:`${r.links} links, ${r.buttons} buttons, ${r.fields} form fields in ${r.forms} form(s), ${r.images} images, ${r.tables} tables.`,targets:[],suggestions:[]}}case"purpose":case"unknown":{let r=t.purpose;if(A.summarize)try{let a=ue(A.root),s=ne((o=a&&Pe(a)?a.body:a)==null?void 0:o.textContent).slice(0,4e3);r=await A.summarize(s)||r}catch{}let n=[];return t.unlabeledFields.length&&n.push(`${t.unlabeledFields.length} form field(s) need labels.`),t.imagesWithoutAlt.length&&n.push(`${t.imagesWithoutAlt.length} image(s) need alt text.`),{intent:i,answer:r,targets:[],suggestions:n}}}}var nn=["AGFzbQEAAAABggESYAN/f38Bf2ACf38Bf2ACf38AYAN/f38AYAN/fH8AYAN/f3wAYAV/f39/fwBgBX9/f39/AX9gBH9/f38AYAR/","f39/AX9gAX8AYAp/f39/f3x/f39/AX9gAABgAX8Bf2AIf39/f3x/f38Bf2AAAX9gBn9/f39/fwBgBn9/f39/fwF/A2xrAgMEBQMD","AwMGAwAGAwYHBwcDAwgICAgDAwMDAwMDAwMIAwMDCQkJCQkJCQkJCQkJAQEAAwkHCgELCAIDCggKAwMADA0ODwIMAgMGEAIDAgYK","AwYCAgwKCgMBCAEDEQgJAAEICAMDAwwJAwAEBQFwAQICBQMBABEGCQF/AUGAgMAACwdaBgZtZW1vcnkCAAx5a19yYWdfYnVpbGQA","QQx5a19yYWdfcmVzZXQAQg55a19yYWdfc2NyYXRjaABDDXlrX3JhZ19zZWFyY2gARA55a19yYWdfdmVyc2lvbgBFCQcBAEEBCwFh","CqTuAWuOAgEGfwJAAkACQCAAKAIIIgJFDQAgASgCACIDKAIIIQRBACEFIAAoAgQiBiEBA0AgASgCACIHIARPDQICQCADKAIEIAdB","A3RqKwMARAAAAAAAAAAAZA0AAkAgBUEBaiACTw0AIAFBBGohASAFQX9zIAJqIQIDQCABKAIAIgcgAygCCCIETw0GAkAgAygCBCAH","QQN0aisDAEQAAAAAAAAAAGRFDQAgBiAFQQJ0aiAHNgIAIAVBAWohBQsgAUEEaiEBIAJBf2oiAg0ACwsgACAFNgIIDwsgAUEEaiEB","IAIgBUEBaiIFRw0ACwsPCyAHIARB8IbAgAAQ3ICAgAAACyAHIARB8IbAgAAQ3ICAgAAAC4gBAQJ/AkBBACACIAFrIgMgAyACSxsi","BCAAKAIAIAAoAggiA2tNDQAgACADIARBBEEEEMqAgIAAIAAoAgghAwsCQCABIAJPDQAgAyACaiABayEEIAAoAgQgA0ECdGohAwNA","IAMgATYCACADQQRqIQMgAiABQQFqIgFHDQALIAQhAwsgACADNgIIC/ABAQN/I4CAgIAAQSBrIgMkgICAgAACQAJAAkACQCABvVAN","ACADQRRqIAJBAEEIQQgQz4CAgAAgAygCGCEEIAMoAhRBAUYNAiADQQA2AhAgAyADKAIcNgIMIAMgBDYCCCADQQhqIAIgARCDgICA","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","IAIgAiAFaiACIAZqIAMgBBCPgICAACECCwJAIAQgACABEIqAgIAAIgMgBCAAIAIQioCAgABHDQAgAiABIAMgBCABIAIQioCAgABz","GyEACyAAC5gBAgJ/A34CQCADQfj///8BcUUNACAAIAAgA0EDdiIDQQV0IgVqIAAgA0E4bCIGaiADIAQQkICAgAAhACABIAEgBWog","ASAGaiADIAQQkICAgAAhASACIAIgBWogAiAGaiADIAQQkICAgAAhAgsgACACIAEgACkDACIHIAEpAwAiCFQiAyAIIAIpAwAiCVRz","GyADIAcgCVRzGwvwAgQFfwF8AX8BfAJAAkACQAJAIAFBfGoiAygCACIEIAIoAgAiBSgCACIGKAIIIgdPDQAgASgCACICIAdPDQEC","QEEAQQBBfyAGKAIEIgEgBEEDdGorAwAiCCABIAJBA3QiCWorAwAiCmYiARtBAUF+IAEbIAggCmUbIAggCGIgCiAKYnIbIgFBf0Yg","AiAESSABG0EBRw0AAkADQCADIgFBBGogBDYCACABIABGDQEgAUF8aiIDKAIAIgQgBSgCACIGKAIIIgdPDQUgAiAHTw0GQQBBAEF/","IAYoAgQiByAEQQN0aisDACIIIAcgCWorAwAiCmYiBxtBAUF+IAcbIAggCmUbIAggCGIgCiAKYnIbIgdBf0YgAiAESSAHGw0ACwsg","ASACNgIACw8LIAQgB0HQhsCAABDcgICAAAALIAIgB0HghsCAABDcgICAAAALIAQgB0HQhsCAABDcgICAAAALIAIgB0HghsCAABDc","gICAAAALfAEDfyOAgICAAEEQayIDJICAgIAAAkAgAiABIAFBfGoiBBCKgICAAEUNACADIAEoAgAiBTYCDAJAA0AgBCIBQQRqIAEo","AgA2AgAgASAARg0BIAIgA0EMaiABQXxqIgQQioCAgAANAAsLIAEgBTYCAAsgA0EQaiSAgICAAAupBAMJfwJ8AX8gAiABQQJ0QXxq","IgRqIQUgACAEaiEGIAAgAUEBdiIHQQJ0aiIIQXxqIQkgAygCACEKAkACQAJAAkACQANAIAAoAgAiAyAKKAIAIgsoAggiDE8NASAI","KAIAIgQgDE8NAiACIAQgA0EAQQBBfyALKAIEIgwgA0EDdGorAwAiDSAMIARBA3RqKwMAIg5mIgwbQQFBfiAMGyANIA5lGyANIA1i","IA4gDmJyGyIMQX9GIAQgA0kgDBsiDBs2AgAgCSgCACIDIAooAgAiDygCCCILTw0DIAYoAgAiBCALTw0EIAggDEECdGohCCAAIAxB","AXNBAnRqIQAgAkEEaiECIAUgAyAEQQBBAEF/IA8oAgQiDCADQQN0aisDACINIAwgBEEDdGorAwAiDmYiDBtBAUF+IAwbIA0gDmUb","IA0gDWIgDiAOYnIbIgxBf0YgBCADSSAMGyIMGzYCACAJIAxBAnQiA2shCSADIAZqQXxqIQYgBUF8aiEFIAdBf2oiBw0ACyAGQQRq","IQQgCUEEaiEDAkAgAUEBcUUNACACIAAgCCAAIANJIgkbKAIANgIAIAggACADT0ECdGohCCAAIAlBAnRqIQALAkAgCCAERw0AIAAg","A0YNBQsQ54CAgAAACyADIAxB0IbAgAAQ3ICAgAAACyAEIAxB4IbAgAAQ3ICAgAAACyADIAtB0IbAgAAQ3ICAgAAACyAEIAtB4IbA","gAAQ3ICAgAAACwuIAgEHfyACIAFBAnRBfGoiBGohBSAAIARqIQYgACABQQF2IgdBAnRqIgRBfGohCANAIAIgBCAAIAMgBCAAEIqA","gIAAIgkbKAIANgIAIAUgCCAGIAMgBiAIEIqAgIAAIgobKAIANgIAIAQgCUECdGohBCAAIAlBAXNBAnRqIQAgCCAKQQJ0IglrIQgg","CSAGakF8aiEGIAVBfGohBSACQQRqIQIgB0F/aiIHDQALIAZBBGohBSAIQQRqIQYCQCABQQFxRQ0AIAIgACAEIAAgBkkiCBsoAgA2","AgAgBCAAIAZPQQJ0aiEEIAAgCEECdGohAAsCQCAEIAVHDQAgACAGRw0ADwsQ54CAgAAAC5QCBAV/An4BfwJ+IAIgAUEDdEF4aiIE","aiEFIAAgBGohBiAAIAFBAXYiB0EDdGoiBEF4aiEIA0AgAiAEKQMAIgkgACkDACIKIAkgClQiCxs3AwAgBSAGKQMAIgwgCCkDACIN","IAwgDVYbNwMAIAVBeGohBSACQQhqIQIgCEF4QQAgDCANVBtqIQggBkF4QQAgDCANWhtqIQYgACAJIApaQQN0aiEAIAQgC0EDdGoh","BCAHQX9qIgcNAAsgBkEIaiEFIAhBCGohBgJAIAFBAXFFDQAgAiAAIAQgACAGSSIIGykDADcDACAEIAAgBk9BA3RqIQQgACAIQQN0","aiEACwJAIAQgBUcNACAAIAZHDQAPCxDngICAAAALywECAn8CfAJAAkAgACABQQJ0aiIEKAIAIgEgAygCACgCACIFKAIIIgNPDQAg","ACACQQJ0aiICKAIAIgAgA08NASAEIAAgAUEAQQBBfyAFKAIEIgMgAUEDdGorAwAiBiADIABBA3RqKwMAIgdmIgMbQQFBfiADGyAG","IAdlGyAGIAZiIAcgB2JyGyIDQX9GIAAgAUkgAxsiAxs2AgAgAiABIAAgAxs2AgAPCyABIANB0IbAgAAQ3ICAgAAACyAAIANB4IbA","gAAQ3ICAgAAAC+wCAAJAIAFBCUkNACAAQQBBAyACEJaAgIAAIABBAUEHIAIQloCAgAAgAEECQQUgAhCWgICAACAAQQRBCCACEJaA","gIAAIABBAEEHIAIQloCAgAAgAEECQQQgAhCWgICAACAAQQNBCCACEJaAgIAAIABBBUEGIAIQloCAgAAgAEEAQQIgAhCWgICAACAA","QQFBAyACEJaAgIAAIABBBEEFIAIQloCAgAAgAEEHQQggAhCWgICAACAAQQFBBCACEJaAgIAAIABBA0EGIAIQloCAgAAgAEEFQQcg","AhCWgICAACAAQQBBASACEJaAgIAAIABBAkEEIAIQloCAgAAgAEEDQQUgAhCWgICAACAAQQZBCCACEJaAgIAAIABBAkEDIAIQloCA","gAAgAEEEQQUgAhCWgICAACAAQQZBByACEJaAgIAAIABBAUECIAIQloCAgAAgAEEDQQQgAhCWgICAACAAQQVBBiACEJaAgIAADwsA","C8wKAQl/AkAgAUEJSQ0AIABBDEEAIAIgAEEMaiIBIAAQioCAgAAiAxtqKAIAIQQgACAAQQBBDCADG2ooAgA2AgwgACAENgIAIABB","HEEEIAIgAEEcaiIFIABBBGoiBhCKgICAACIDG2ooAgAhBCAAIABBBEEcIAMbaigCADYCHCAAIAQ2AgQgAEEUQQggAiAAQRRqIgMg","AEEIaiIHEIqAgIAAIgQbaigCACEIIAAgAEEIQRQgBBtqKAIANgIUIAAgCDYCCCAAQSBBECACIABBIGoiCSAAQRBqIgQQioCAgAAi","CBtqKAIAIQogACAAQRBBICAIG2ooAgA2AiAgACAKNgIQIABBHEEAIAIgBSAAEIqAgIAAIggbaigCACEKIAAgAEEAQRwgCBtqKAIA","NgIcIAAgCjYCACAAQRBBCCACIAQgBxCKgICAACIIG2ooAgAhCiAAIABBCEEQIAgbaigCADYCECAAIAo2AgggAEEgQQwgAiAJIAEQ","ioCAgAAiCBtqKAIAIQogACAAQQxBICAIG2ooAgA2AiAgACAKNgIMIABBGEEUIAIgAEEYaiIIIAMQioCAgAAiChtqKAIAIQsgACAA","QRRBGCAKG2ooAgA2AhggACALNgIUIABBCEEAIAIgByAAEIqAgIAAIgobaigCACELIAAgAEEAQQggChtqKAIANgIIIAAgCzYCACAA","QQxBBCACIAEgBhCKgICAACIKG2ooAgAhCyAAIABBBEEMIAobaigCADYCDCAAIAs2AgQgAEEUQRAgAiADIAQQioCAgAAiChtqKAIA","IQsgACAAQRBBFCAKG2ooAgA2AhQgACALNgIQIABBIEEcIAIgCSAFEIqAgIAAIgobaigCACELIAAgAEEcQSAgChtqKAIANgIgIAAg","CzYCHCAAQRBBBCACIAQgBhCKgICAACIKG2ooAgAhCyAAIABBBEEQIAobaigCADYCECAAIAs2AgQgAEEYQQwgAiAIIAEQioCAgAAi","ChtqKAIAIQsgACAAQQxBGCAKG2ooAgA2AhggACALNgIMIABBHEEUIAIgBSADEIqAgIAAIgobaigCACELIAAgAEEUQRwgChtqKAIA","NgIcIAAgCzYCFCAAQQRBACACIAYgABCKgICAACIKG2ooAgAhCyAAIABBAEEEIAobaigCADYCBCAAIAs2AgAgAEEQQQggAiAEIAcQ","ioCAgAAiChtqKAIAIQsgACAAQQhBECAKG2ooAgA2AhAgACALNgIIIABBFEEMIAIgAyABEIqAgIAAIgobaigCACELIAAgAEEMQRQg","ChtqKAIANgIUIAAgCzYCDCAAQSBBGCACIAkgCBCKgICAACIJG2ooAgAhCiAAIABBGEEgIAkbaigCADYCICAAIAo2AhggAEEMQQgg","AiABIAcQioCAgAAiCRtqKAIAIQogACAAQQhBDCAJG2ooAgA2AgwgACAKNgIIIABBFEEQIAIgAyAEEIqAgIAAIgkbaigCACEKIAAg","AEEQQRQgCRtqKAIANgIUIAAgCjYCECAAQRxBGCACIAUgCBCKgICAACIFG2ooAgAhCSAAIABBGEEcIAUbaigCADYCHCAAIAk2Ahgg","AEEIQQQgAiAHIAYQioCAgAAiBxtqKAIAIQUgACAAQQRBCCAHG2ooAgA2AgggACAFNgIEIABBEEEMIAIgBCABEIqAgIAAIgEbaigC","ACEEIAAgAEEMQRAgARtqKAIANgIQIAAgBDYCDCAAQRhBFCACIAggAxCKgICAACICG2ooAgAhASAAIABBFEEYIAIbaigCADYCGCAA","IAE2AhQPCwAL3gQBEH4CQCABQQlJDQAgACAAKQNAIgMgACkDICIEIAMgBFYbIgUgACkDGCIGIAApAwAiByAGIAdWGyIIIAUgCFYb","IgkgACkDOCIKIAApAwgiCyAKIAtWGyIMIAYgByAGIAdUGyIGIAwgBlYbIgcgCSAHVhsiDSAAKQMwIg4gACkDKCIPIAApAxAiECAP","IBBWGyIRIA4gEVYbIhIgBSAIIAUgCFQbIgUgCiALIAogC1QbIgggBSAIVhsiCiASIApWGyILIA0gC1YbNwNAIAAgDiARIA4gEVQb","Ig4gAyAEIAMgBFQbIgMgDyAQIA8gEFQbIgQgAyAEVhsiDyAOIA9UGyIQIAUgCCAFIAhUGyIFIBAgBVQbIgggAyAEIAMgBFQbIgMg","DCAGIAwgBlQbIgQgAyAEVBsiBiAIIAZUGzcDACAAIAkgByAJIAdUGyIHIA4gDyAOIA9WGyIJIAcgCVYbIgwgDSALIA0gC1QbIgsg","DCALVhs3AzggACAMIAsgDCALVBsiCyAHIAkgByAJVBsiByASIAogEiAKVBsiCSAHIAlWGyIKIBAgBSAQIAVWGyIFIAMgBCADIARW","GyIDIAUgA1YbIgQgCiAEVhsiDCALIAxWGzcDMCAAIAsgDCALIAxUGzcDKCAAIAogBCAKIARUGyIEIAcgCSAHIAlUGyIHIAUgAyAF","IANUGyIDIAcgA1YbIgUgBCAFVhs3AyAgACAEIAUgBCAFVBs3AxggACAHIAMgByADVBsiAyAIIAYgCCAGVhsiBCADIARWGzcDECAA","IAMgBCADIARUGzcDCA8LAAuEBQACQCABQQ1JDQAgAEEAQQwgAhCWgICAACAAQQFBCiACEJaAgIAAIABBAkEJIAIQloCAgAAgAEED","QQcgAhCWgICAACAAQQVBCyACEJaAgIAAIABBBkEIIAIQloCAgAAgAEEBQQYgAhCWgICAACAAQQJBAyACEJaAgIAAIABBBEELIAIQ","loCAgAAgAEEHQQkgAhCWgICAACAAQQhBCiACEJaAgIAAIABBAEEEIAIQloCAgAAgAEEBQQIgAhCWgICAACAAQQNBBiACEJaAgIAA","IABBB0EIIAIQloCAgAAgAEEJQQogAhCWgICAACAAQQtBDCACEJaAgIAAIABBBEEGIAIQloCAgAAgAEEFQQkgAhCWgICAACAAQQhB","CyACEJaAgIAAIABBCkEMIAIQloCAgAAgAEEAQQUgAhCWgICAACAAQQNBCCACEJaAgIAAIABBBEEHIAIQloCAgAAgAEEGQQsgAhCW","gICAACAAQQlBCiACEJaAgIAAIABBAEEBIAIQloCAgAAgAEECQQUgAhCWgICAACAAQQZBCSACEJaAgIAAIABBB0EIIAIQloCAgAAg","AEEKQQsgAhCWgICAACAAQQFBAyACEJaAgIAAIABBAkEEIAIQloCAgAAgAEEFQQYgAhCWgICAACAAQQlBCiACEJaAgIAAIABBAUEC","IAIQloCAgAAgAEEDQQQgAhCWgICAACAAQQVBByACEJaAgIAAIABBBkEIIAIQloCAgAAgAEECQQMgAhCWgICAACAAQQRBBSACEJaA","gIAAIABBBkEHIAIQloCAgAAgAEEIQQkgAhCWgICAACAAQQNBBCACEJaAgIAAIABBBUEGIAIQloCAgAAPCwAL8BIBDX8CQCABQQ1J","DQAgAEEwQQAgAiAAQTBqIgMgABCKgICAACIBG2ooAgAhBCAAIABBAEEwIAEbaigCADYCMCAAIAQ2AgAgAEEoQQQgAiAAQShqIgUg","AEEEaiIGEIqAgIAAIgEbaigCACEEIAAgAEEEQSggARtqKAIANgIoIAAgBDYCBCAAQSRBCCACIABBJGoiBCAAQQhqIgcQioCAgAAi","ARtqKAIAIQggACAAQQhBJCABG2ooAgA2AiQgACAINgIIIABBHEEMIAIgAEEcaiIJIABBDGoiCBCKgICAACIBG2ooAgAhCiAAIABB","DEEcIAEbaigCADYCHCAAIAo2AgwgAEEsQRQgAiAAQSxqIgsgAEEUaiIKEIqAgIAAIgEbaigCACEMIAAgAEEUQSwgARtqKAIANgIs","IAAgDDYCFCAAQSBBGCACIABBIGoiDCAAQRhqIgEQioCAgAAiDRtqKAIAIQ4gACAAQRhBICANG2ooAgA2AiAgACAONgIYIABBGEEE","IAIgASAGEIqAgIAAIg0baigCACEOIAAgAEEEQRggDRtqKAIANgIYIAAgDjYCBCAAQQxBCCACIAggBxCKgICAACING2ooAgAhDiAA","IABBCEEMIA0baigCADYCDCAAIA42AgggAEEsQRAgAiALIABBEGoiDRCKgICAACIOG2ooAgAhDyAAIABBEEEsIA4baigCADYCLCAA","IA82AhAgAEEkQRwgAiAEIAkQioCAgAAiDhtqKAIAIQ8gACAAQRxBJCAOG2ooAgA2AiQgACAPNgIcIABBKEEgIAIgBSAMEIqAgIAA","Ig4baigCACEPIAAgAEEgQSggDhtqKAIANgIoIAAgDzYCICAAQRBBACACIA0gABCKgICAACIOG2ooAgAhDyAAIABBAEEQIA4baigC","ADYCECAAIA82AgAgAEEIQQQgAiAHIAYQioCAgAAiDhtqKAIAIQ8gACAAQQRBCCAOG2ooAgA2AgggACAPNgIEIABBGEEMIAIgASAI","EIqAgIAAIg4baigCACEPIAAgAEEMQRggDhtqKAIANgIYIAAgDzYCDCAAQSBBHCACIAwgCRCKgICAACIOG2ooAgAhDyAAIABBHEEg","IA4baigCADYCICAAIA82AhwgAEEoQSQgAiAFIAQQioCAgAAiDhtqKAIAIQ8gACAAQSRBKCAOG2ooAgA2AiggACAPNgIkIABBMEEs","IAIgAyALEIqAgIAAIg4baigCACEPIAAgAEEsQTAgDhtqKAIANgIwIAAgDzYCLCAAQRhBECACIAEgDRCKgICAACIOG2ooAgAhDyAA","IABBEEEYIA4baigCADYCGCAAIA82AhAgAEEkQRQgAiAEIAoQioCAgAAiDhtqKAIAIQ8gACAAQRRBJCAOG2ooAgA2AiQgACAPNgIU","IABBLEEgIAIgCyAMEIqAgIAAIg4baigCACEPIAAgAEEgQSwgDhtqKAIANgIsIAAgDzYCICAAQTBBKCACIAMgBRCKgICAACIDG2oo","AgAhDiAAIABBKEEwIAMbaigCADYCMCAAIA42AiggAEEUQQAgAiAKIAAQioCAgAAiAxtqKAIAIQ4gACAAQQBBFCADG2ooAgA2AhQg","ACAONgIAIABBIEEMIAIgDCAIEIqAgIAAIgMbaigCACEOIAAgAEEMQSAgAxtqKAIANgIgIAAgDjYCDCAAQRxBECACIAkgDRCKgICA","ACIDG2ooAgAhDiAAIABBEEEcIAMbaigCADYCHCAAIA42AhAgAEEsQRggAiALIAEQioCAgAAiAxtqKAIAIQ4gACAAQRhBLCADG2oo","AgA2AiwgACAONgIYIABBKEEkIAIgBSAEEIqAgIAAIgMbaigCACEOIAAgAEEkQSggAxtqKAIANgIoIAAgDjYCJCAAQQRBACACIAYg","ABCKgICAACIDG2ooAgAhDiAAIABBAEEEIAMbaigCADYCBCAAIA42AgAgAEEUQQggAiAKIAcQioCAgAAiAxtqKAIAIQ4gACAAQQhB","FCADG2ooAgA2AhQgACAONgIIIABBJEEYIAIgBCABEIqAgIAAIgMbaigCACEOIAAgAEEYQSQgAxtqKAIANgIkIAAgDjYCGCAAQSBB","HCACIAwgCRCKgICAACIDG2ooAgAhDiAAIABBHEEgIAMbaigCADYCICAAIA42AhwgAEEsQSggAiALIAUQioCAgAAiCxtqKAIAIQMg","ACAAQShBLCALG2ooAgA2AiwgACADNgIoIABBDEEEIAIgCCAGEIqAgIAAIgsbaigCACEDIAAgAEEEQQwgCxtqKAIANgIMIAAgAzYC","BCAAQRBBCCACIA0gBxCKgICAACILG2ooAgAhAyAAIABBCEEQIAsbaigCADYCECAAIAM2AgggAEEYQRQgAiABIAoQioCAgAAiCxtq","KAIAIQMgACAAQRRBGCALG2ooAgA2AhggACADNgIUIABBKEEkIAIgBSAEEIqAgIAAIgUbaigCACELIAAgAEEkQSggBRtqKAIANgIo","IAAgCzYCJCAAQQhBBCACIAcgBhCKgICAACIFG2ooAgAhBiAAIABBBEEIIAUbaigCADYCCCAAIAY2AgQgAEEQQQwgAiANIAgQioCA","gAAiBRtqKAIAIQYgACAAQQxBECAFG2ooAgA2AhAgACAGNgIMIABBHEEUIAIgCSAKEIqAgIAAIgUbaigCACEGIAAgAEEUQRwgBRtq","KAIANgIcIAAgBjYCFCAAQSBBGCACIAwgARCKgICAACIFG2ooAgAhBiAAIABBGEEgIAUbaigCADYCICAAIAY2AhggAEEMQQggAiAI","IAcQioCAgAAiBRtqKAIAIQcgACAAQQhBDCAFG2ooAgA2AgwgACAHNgIIIABBFEEQIAIgCiANEIqAgIAAIgUbaigCACEHIAAgAEEQ","QRQgBRtqKAIANgIUIAAgBzYCECAAQRxBGCACIAkgARCKgICAACIFG2ooAgAhByAAIABBGEEcIAUbaigCADYCHCAAIAc2AhggAEEk","QSAgAiAEIAwQioCAgAAiBBtqKAIAIQwgACAAQSBBJCAEG2ooAgA2AiQgACAMNgIgIABBEEEMIAIgDSAIEIqAgIAAIgQbaigCACEI","IAAgAEEMQRAgBBtqKAIANgIQIAAgCDYCDCAAQRhBFCACIAEgChCKgICAACICG2ooAgAhASAAIABBFEEYIAIbaigCADYCGCAAIAE2","AhQPCwALlggBGH4CQCABQQ1JDQAgACAAKQNgIgMgACkDACIEIAMgBFYbIgUgACkDWCIGIAApAygiByAGIAdWGyIIIAApAyAiCSAI","IAlWGyIKIAUgClYbIgsgACkDUCIMIAApAwgiDSAMIA1WGyIOIAApA0AiDyAAKQMwIhAgDyAQVhsiESAOIBFWGyISIAApA0giEyAA","KQMQIhQgEyAUVhsiFSAAKQM4IhYgACkDGCIXIBYgF1YbIhggFSAYVhsiGSASIBlWGyIaIAsgGlYbNwNgIAAgBSAKIAUgClQbIgUg","DiARIA4gEVQbIgogFSAYIBUgGFQbIg4gCiAOVhsiESAFIBFWGyIVIA8gECAPIBBUGyIPIAwgDSAMIA1UGyIMIA8gDFYbIg0gFiAX","IBYgF1QbIhAgEyAUIBMgFFQbIhMgECATVhsiFCANIBRWGyIWIAggCSAIIAlUGyIIIAMgBCADIARUGyIDIAggA1YbIgQgFiAEVhsi","CSAVIAlWGyIXIAsgGiALIBpUGyILIBIgGSASIBlUGyISIAYgByAGIAdUGyIGIBIgBlYbIgcgCyAHVhsiGCAXIBhWGzcDWCAAIBAg","EyAQIBNUGyIQIA8gDCAPIAxUGyIMIBAgDFQbIg8gEiAGIBIgBlQbIgYgCCADIAggA1QbIgMgBiADVBsiCCAPIAhUGzcDACAAIBcg","GCAXIBhUGyISIAsgByALIAdUGyIHIBUgCSAVIAlUGyIJIAcgCVYbIgsgEiALVhs3A1AgACAKIA4gCiAOVBsiCiAWIAQgFiAEVBsi","BCAKIARUGyIOIAYgAyAGIANWGyIDIBAgDCAQIAxWGyIGIAMgBlQbIgwgDiAMVBsiECAFIBEgBSARVBsiBSANIBQgDSAUVBsiDSAF","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","IAYgACACQQN0aiIHKQMANwMAIAcgBTcDACACIAUgBFRqC3cBAX8CQCABDQBBAA8LAkAgAiABTw0AIAAoAgAhBCAAIAAgAkECdGoi","AigCADYCACACIAQ2AgAgAEEEaiABQX9qIAAgAxCkgICAACICIAFPDQAgACgCACEBIAAgACACQQJ0aiIDKAIANgIAIAMgATYCACAC","DwsAC3cBAX8CQCABDQBBAA8LAkAgAiABTw0AIAAoAgAhBCAAIAAgAkECdGoiAigCADYCACACIAQ2AgAgAEEEaiABQX9qIAAgAxCl","gICAACICIAFPDQAgACgCACEBIAAgACACQQJ0aiIDKAIANgIAIAMgATYCACACDwsAC3cBAX8CQCABDQBBAA8LAkAgAiABTw0AIAAo","AgAhBCAAIAAgAkECdGoiAigCADYCACACIAQ2AgAgAEEEaiABQX9qIAAgAxCmgICAACICIAFPDQAgACgCACEBIAAgACACQQJ0aiID","KAIANgIAIAMgATYCACACDwsAC3cBAX8CQCABDQBBAA8LAkAgAiABTw0AIAAoAgAhBCAAIAAgAkECdGoiAigCADYCACACIAQ2AgAg","AEEEaiABQX9qIAAgAxCngICAACICIAFPDQAgACgCACEBIAAgACACQQJ0aiIDKAIANgIAIAMgATYCACACDwsAC3cBAX4CQCABDQBB","AA8LAkAgAiABTw0AIAApAwAhBCAAIAAgAkEDdGoiAikDADcDACACIAQ3AwAgAEEIaiABQX9qIAAgABCogICAACICIAFPDQAgACkD","ACEEIAAgACACQQN0aiIBKQMANwMAIAEgBDcDACACDwsAC3cBAX4CQCABDQBBAA8LAkAgAiABTw0AIAApAwAhBCAAIAAgAkEDdGoi","AikDADcDACACIAQ3AwAgAEEIaiABQX9qIAAgABCpgICAACICIAFPDQAgACkDACEEIAAgACACQQN0aiIBKQMANwMAIAEgBDcDACAC","DwsAC38BA38jgICAgABBEGsiAiSAgICAACACQQhqIAAgARDpgICAAAJAAkAgAigCCCIBIAIoAgwiA0cNAEEAIQAMAQtBACEAA0BB","AEECQQEgAS0AACIEQe8BSxsgBMBBQEgbIABqIQAgAUEBaiIBIANHDQALCyACQRBqJICAgIAAIAALDgAgACABIAAQsoCAgAALiQEB","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","ASAEIAo2AswBIARBADYCyAEgBCAJNgLEASAEIAg2AsABIAQgBCgCiAI2ApgBIAQgBCkCgAI3ApABIAQgBCgClAI2AqQBIAQgBCkC","jAI3ApwBIAQgBCgCoAI2ArABIAQgBCkCmAI3AqgBIAQgBCgCrAI2ArwBIAQgBCkCpAI3ArQBIARBADYC7AEgBEKAgICAwAA3AuQB","IARBADYCrAIgBEKAgICAgAE3AqQCIAOtIQwgBEHkAWohDSAEQdgBaiEOIARBhAFqIQ8gBEH4AGohECAEQewAaiERIARB4ABqIRIg","BEHUAGohEyAEQcgAaiEUIARBPGohFQNAIAEhFiACIQNBACEXQQEhGEEAIQICQCADRQ0AQQAhFwJAA0AgFiAXaiIHLQAAQQpGDQFB","ASEYIAMgF0EBaiIXRw0ACyADIRcgAyECIBYhAQwBCyAHQQFqIQEgF0F/cyADaiECQQAhGAsCQCALIAxRDQACQCAXRQ0AIBYgF2oh","AyALpyIZQQJ0IRoDQCAWIRtBACEJAkACQANAIBsgCWoiBy0AACIFQSBGIhwNASAbIAlBAWoiCWogA0cNAAsgFyEJIBshFgwBCyAH","QQFqIRYgCUF/cyAXaiEXCwJAAkACQAJAAkACQCAJRQ0AIARBIGogBEEwaiAbIAkQuYCAgAACQCAEKAIgQQFHDQAgBCgCJCEDDAQL","IAQoAkQhHSAEQTBqIBsgCRDRgICAACAEKAI4IQcCQCAEKAJEIgMgBCgCPEcNACAVELyAgIAACyAEKAJAIANBAnRqIAc2AgAgBCAD","QQFqNgJEIBsgCRCwgICAACEHAkAgBCgCUCIDIAQoAkhHDQAgFBC8gICAAAsgBCgCTCADQQJ0aiAHNgIAIAQgA0EBajYCUCAdQQF0","IAQoAmgiA00NAiAEQbACakEAIANBAXQiAxCFgICAACAEKAJEQX9qIh5FDQEgA0F/aiEGQQAhHyAEKAK0AiEIIAQoArgCIQUDQCAE","QRhqIARBMGogHxC7gICAACAEQRBqIAQoAhggBCgCHBDpgICAAEGlxoiheCEHAkAgBCgCECIDIAQoAhQiCkYNAANAIAcgAy0AAHNB","swNsIQcgA0EBaiIDIApHDQALCwJAIAcgBnEiAyAFTw0AIB9BAWohHwNAAkAgCCADQQJ0aiIHKAIADQAgByAfNgIAIB8gHkcNAwwF","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","aiSAgICAAAttAQN/IAAgARDTgICAACAAKAIEIgMgACgCCCIEaiEFAkACQAJAIAFBAkkNAAJAIAFBf2oiAUUNACAFIAIgAfwLAAsg","AyABIARqIgRqIQUMAQsgAUUNAQsgBSACOgAAIARBAWohBAsgACAENgIIC/ICAQF/I4CAgIAAQdABayIDJICAgIAAIANBDGogACAB","IAIQvYCAgAAgAygCICECAkBBACgCpI7AgABBf0YNAEGkjsCAABDXgICAAEGkjsCAABDWgICAAEGwjsCAAEEEQQQQyYCAgABBvI7A","gABBBEEEEMmAgIAAQciOwIAAQQRBBBDJgICAAEHUjsCAAEEEQQQQyYCAgABB4I7AgABBBEEEEMmAgIAAQeyOwIAAQQRBBBDJgICA","AEH4jsCAAEEEQQQQyYCAgABBhI/AgABBBEEEEMmAgIAAQZCPwIAAQQRBBBDJgICAAEGcj8CAAEEIQQgQyYCAgABBqI/AgAAQ14CA","gABBqI/AgAAQ1oCAgABBtI/AgABBBEEEEMmAgIAAQcCPwIAAQQRBBBDJgICAAEHMj8CAAEEEQQQQyYCAgABB2I/AgABBBEEEEMmA","gIAAC0GkjsCAACADQQxqQcQB/AoAACADQdABaiSAgICAACACQX9qC14BAX8jgICAgABBEGsiACSAgICAAEEAQX82AqSOwIAAIABB","CGoQ0ICAgABBAEHwj8CAADYC6I/AgABBACAAKQMINwKYjsCAAEEAQQA2AqCOwIAAIABBEGokgICAgAALPgEBfwJAIABBCGoiAEEA","KAKgjsCAACIBTQ0AQZiOwIAAIAAgAWtBABDAgICAAAtBACgCnI7AgABBB2pBeHELOwEBf0EAIQgCQEEAKAKkjsCAAEF/Rg0AQaSO","wIAAIAAgASACIAMgBCAGIAUgByAFELiAgIAAIQgLIAgLBABBAQsNACAAIAEQzoCAgAAPCwMADwsNACAAIAEQ1ICAgAAAC4gBAQR/","I4CAgIAAQRBrIgMkgICAgABBACEEIANBDGohBQJAAkAgAkUNACAAKAIAIgZFDQAgAyABNgIMIAYgAmwhBCAAKAIEIQIgA0EIaiEF","DAELCyAFIAQ2AgACQCADKAIMIgRFDQAgAygCCCIFRQ0AIAIgBSAEELOAgIAACyADQRBqJICAgIAAC1IBAX8jgICAgABBEGsiBSSA","gICAACAFQQhqIAAgASACIAMgBBDLgICAAAJAIAUoAggiBEF/Rg0AIAQgBSgCDBDMgICAAAALIAVBEGokgICAgAALuQEBAn8jgICA","gABBEGsiBiSAgICAAEEAIQcCQAJAIAUNAAwBCyADIAJqIgIgA0kNACAGQQRqIAEgAiABKAIAQQF0IgMgAiADSxsiA0EIQQRBASAF","QYEISRsgBUEBRhsiAiADIAJLGyIDIAQgBRDSgICAACAGKAIIIQcCQCAGKAIERQ0AIAYoAgwhAgwBCyABIAM2AgAgASAHNgIEQX8h","BwsgACACNgIEIAAgBzYCACAGQRBqJICAgIAACxwAAkAgAEUNACAAIAEQyICAgAAACxDVgICAAAALYwECfwJAAkACQCACIAFrIgMg","ACgCACAAKAIIIgRrTQ0AIAAgBCADQQFBARDKgICAACAAKAIIIQQMAQsgAiABRg0BCyADRQ0AIAAoAgQgBGogASAD/AoAAAsgACAE","IANqNgIIC0sBAX8jgICAgABBEGsiAiSAgICAACACIAA2AgQgAkGBgICAADYCDCACIAJBBGo2AghBmobAgAAgAkEIakEAQbCLwIAA","EOKAgIAAAAuxAQEBfgJAAkACQCAErSABrX4iBUIgiKcNACAFpyIEIAMQ24CAgAANAQsgAEEANgIEQQEhAQwBCwJAIAQNACAAIAM2","AghBACEBIABBADYCBAwBCxDHgICAAAJAAkAgAg0AIAQgAxCxgICAACECDAELIAQgAxC3gICAACECCwJAIAINACAAIAQ2AgggACAD","NgIEQQEhAQwBCyAAIAI2AgggACABNgIEQQAhAQsgACABNgIACw0AIABCgICAgBA3AwALEQAgACABIAEgAmoQzYCAgAALoAIDAX8B","fgN/I4CAgIAAQRBrIgUkgICAgAAgBK0gAq1+IganIQICQAJAAkACQAJAIAZCIIinDQAgAiADENuAgIAADQELIABBADYCBAwBC0EA","IQcgBUEMaiEIAkACQCAERQ0AIAEoAgAiCUUNACAFIAM2AgwgCSAEbCEHIAEoAgQhBCAFQQhqIQgMAQsLIAggBzYCAAJAAkACQCAF","KAIMRQ0AAkAgBSgCCCIBDQAgAg0CIAMhBAwDCyAEIAEgAyACELSAgIAAIQQMAgsgAg0AIAMhBAwDCxDHgICAACACIAMQsYCAgAAh","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","gAAgA0EQaiACENiAgIAAAAthAQF/I4CAgIAAQSBrIgMkgICAgAAgAyABNgIMIAMgADYCCCADQYGAgIAANgIcIANBgYCAgAA2AhQg","AyADQQxqNgIYIAMgA0EIajYCEEGYgcCAACADQRBqIAIQ2ICAgAAACxgAQbyNwIAAQZkBQYiOwIAAENiAgIAAAAsrACAAIAIgASAD","IAEgA0kbEOqAgIAAIgIgASADayACGyIDQQBKIANBAEhrCxMAIAAgASACajYCBCAAIAE2AgALSgEDf0EAIQMCQCACRQ0AAkADQCAA","LQAAIgQgAS0AACIFRw0BIABBAWohACABQQFqIQEgAkF/aiICRQ0CDAALCyAEIAVrIQMLIAMLC/sPAgBBgIDAAAuYDhZzbGljZSBp","bmRleCBzdGFydHMgYXQgwA0gYnV0IGVuZHMgYXQgwAAgaW5kZXggb3V0IG9mIGJvdW5kczogdGhlIGxlbiBpcyDAEiBidXQgdGhl","IGluZGV4IGlzIMAAEnJhbmdlIHN0YXJ0IGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAAEHJhbmdl","IGVuZCBpbmRleCDAIiBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCDAAC9yb290Ly5ydXN0dXAvdG9vbGNoYWlucy9z","dGFibGUteDg2XzY0LXVua25vd24tbGludXgtZ251L2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uv","c29ydC9zaGFyZWQvc21hbGxzb3J0LnJzAC9yb290Ly5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUteDg2XzY0LXVua25vd24tbGlu","dXgtZ251L2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC91bnN0YWJsZS9xdWlja3NvcnQu","cnMAL3Jvb3QvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS14ODZfNjQtdW5rbm93bi1saW51eC1nbnUvbGliL3J1c3RsaWIvc3Jj","L3J1c3QvbGlicmFyeS9jb3JlL3NyYy9mbXQvbnVtLnJzAC9yb290Ly5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUteDg2XzY0LXVu","a25vd24tbGludXgtZ251L2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzAC9yb290","Ly5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUteDg2XzY0LXVua25vd24tbGludXgtZ251L2xpYi9ydXN0bGliL3NyYy9ydXN0L2xp","YnJhcnkvYWxsb2Mvc3JjL2FsbG9jLnJzAHNyYy9saWIucnMAFW1lbW9yeSBhbGxvY2F0aW9uIG9mIMANIGJ5dGVzIGZhaWxlZABN","ARAAfwAAADgAAAAbAAAADwMQAAoAAAAzAQAAEgAAAA8DEAAKAAAANAEAACQAAAAPAxAACgAAADEBAAAkAAAADwMQAAoAAACfAAAA","IwAAAA8DEAAKAAAAnwAAAEAAAAAPAxAACgAAAJ8AAAAcAAAADwMQAAoAAACgAAAAIwAAAA8DEAAKAAAAoAAAAEAAAAAPAxAACgAA","AKAAAAAcAAAADwMQAAoAAAC/AAAAGAAAAA8DEAAKAAAA/QAAACEAAAAPAxAACgAAAOEAAAApAAAADwMQAAoAAAAfAQAAJQAAAA8D","EAAKAAAAIAEAACEAAAAPAxAACgAAACEBAAAnAAAADwMQAAoAAAAjAQAAHwAAAA8DEAAKAAAAJQEAAB8AAAAPAxAACgAAACgBAAAb","AAAADwMQAAoAAAApAQAAGAAAAA8DEAAKAAAAEgEAACUAAAAPAxAACgAAABMBAAApAAAADwMQAAoAAAATAQAARgAAAA8DEAAKAAAA","FAEAACoAAAAPAxAACgAAABUBAAAfAAAADwMQAAoAAAAYAQAAMAAAAA8DEAAKAAAAGAEAABwAAAAPAxAACgAAADsBAAAhAAAADwMQ","AAoAAAAuAQAAGAAAAA8DEAAKAAAAzAAAABYAAAAPAxAACgAAAEwAAAAkAAAADwMQAAoAAABMAAAAQQAAAA8DEAAKAAAATAAAABQA","AAAPAxAACgAAAIQAAAAbAAAADwMQAAoAAACZAAAAMgAAAA8DEAAKAAAAmQAAABoAAAAPAxAACgAAAJUAAAAaAAAADwMQAAoAAACy","AAAAGQAAAA8DEAAKAAAAUwAAACIAAACmAhAAaAAAAD0CAAAJAAAAY2FwYWNpdHkgb3ZlcmZsb3cAAAA3AhAAbgAAABwAAAAFAAAA","zQEQAGkAAABYAgAABQAAADAwMDEwMjAzMDQwNTA2MDcwODA5MTAxMTEyMTMxNDE1MTYxNzE4MTkyMDIxMjIyMzI0MjUyNjI3Mjgy","OTMwMzEzMjMzMzQzNTM2MzczODM5NDA0MTQyNDM0NDQ1NDY0NzQ4NDk1MDUxNTI1MzU0NTU1NjU3NTg1OTYwNjE2MjYzNjQ2NTY2","Njc2ODY5NzA3MTcyNzM3NDc1NzY3Nzc4Nzk4MDgxODI4Mzg0ODU4Njg3ODg4OTkwOTE5MjkzOTQ5NTk2OTc5ODk5dXNlci1wcm92","aWRlZCBjb21wYXJpc29uIGZ1bmN0aW9uIGRvZXMgbm90IGNvcnJlY3RseSBpbXBsZW1lbnQgYSB0b3RhbCBvcmRlcs8AEAB9AAAA","VgMAAAUAAAAAQZiOwAAL0AEAAAAAAQAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA","AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA","AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"].join("");var rn=["AGFzbQEAAAABYA1gA39/fwF/YAJ/fwF/YAN/f38AYAV/f39/fwBgBX9/f39/AX9gBH9/f38AYAR/f39/AX9gCH9/f39/f39/AX9g","AX8AYAABf2AHf39/f39/fwF/YAZ/f39/f38Bf2AAAAMkIwIDBAIFBQICAgIGBgYGAwcICQoFCQIBBQILBQYAAQICAgwABAUBcAEC","AgUDAQARBgkBfwFBgIDAAAsHPAUGbWVtb3J5AgAMeWtfaGVhcF9iYXNlABEJeWtfc2VhcmNoABIHeWtfc29ydAATCnlrX3ZlcnNp","b24AFAkHAQBBAQsBHQrEWiO8BgMFfwJ8BH8CQCABQQJJDQACQAJAAkACQAJAAkACQAJAAkAgACgCBCIDIAIoAgAiBCgCBCIFTw0A","IAAoAgAiBiAFTw0BIAQoAgAiByAGQQN0aisDACEIAkACQCAHIANBA3RqKwMAIgkgCWINACAIIAhiDQFBAEEAQX8gCSAIZiIKG0EB","QX4gChsgCSAIZRsiCmsgCiAEKAIILQAAG0H/AXEiCkH/AUYgAyAGSSAKGw0BDAYLIAMgBk8NBSAIIAhhDQULQQIhCkEBIQsgAUEC","Rg0GIABBCGohDEECIQoDQCADIQYgDCgCACIDIAVPDQMgBiAFTw0EIAcgBkEDdGorAwAhCAJAAkAgByADQQN0aisDACIJIAliDQAg","CCAIYg0BQQBBAEF/IAkgCGYiDRtBAUF+IA0bIAkgCGUbIg1rIA0gBCgCCC0AABtB/wFxIg1B/wFGIAMgBkkgDRtBAUYNAUEBIQsM","CQsgAyAGTw0IIAggCGENCAsgDEEEaiEMIAEgCkEBaiIKRw0AC0EBIQsMBQsgAyAFQdSEwIAAEJiAgIAAAAsgBiAFQeSEwIAAEJiA","gIAAAAsgAyAFQdSEwIAAEJiAgIAAAAsgBiAFQeSEwIAAEJiAgIAAAAtBAiEKQQAhCyABQQJGDQEgAEEIaiEMQQIhCgNAIAMhBiAM","KAIAIgMgBU8NAyAGIAVPDQQgByAGQQN0aisDACEIAkACQCAHIANBA3RqKwMAIgkgCWINACAIIAhiDQRBAEEAQX8gCSAIZiING0EB","QX4gDRsgCSAIZRsiDWsgDSAEKAIILQAAG0H/AXEiDUH/AUYgAyAGSSANG0UNAUEAIQsMBAsgAyAGTw0AIAggCGINAwsgDEEEaiEM","IAEgCkEBaiIKRw0ACwsgASEKCwJAIAogAUYNACAAIAFBACABQQFyZ0EBdEE+cyACEIGAgIAADAMLIAtFDQIgAUEBdiEGIAFBAnQg","AGpBfGohAwNAIAAoAgAhCiAAIAMoAgA2AgAgAyAKNgIAIANBfGohAyAAQQRqIQAgBkF/aiIGDQAMAwsLIAMgBUHUhMCAABCYgICA","AAALIAYgBUHkhMCAABCYgICAAAALC7YIBAh/AnwDfwF8I4CAgIAAQRBrIgUkgICAgAACQAJAIAFBIUkNACADQX9qIQMDQAJAIANB","f0cNACAAIAEgBBCJgICAAAwDCyAAIAFBA3YiBkEcbGohByAAIAZBBHRqIQgCQAJAIAFBwABJDQAgACAIIAcgBiAEEIKAgIAAIQYM","AQsCQAJAAkACQAJAAkAgACgCACIGIAQoAgAiCSgCBCIKTw0AIAgoAgAiCyAKTw0BIAkoAgAiDCALQQN0aisDACENAkACQAJAAkAg","DCAGQQN0aisDACIOIA5iIg8NACANIA1hDQFBASEQDAMLIA0gDWINAUEAIRAMAgtBAEEAQX8gDiANZiIRG0EBQX4gERsgDiANZRsi","EWsgESAJKAIILQAAG0H/AXEiEUH/AUYgBiALSSARGyEQDAELIAYgC0khEAsgBygCACIRIApPDQIgDCARQQN0aisDACESAkACQAJA","AkACQAJAAkAgDw0AIBIgEmENASAAIQYgEEUNDSANIA1iDQYMCwsgEiASYg0BIAAhBiAQDQwgDSANYQ0DDAkLQQBBAEF/IA4gEmYi","ChtBAUF+IAobIA4gEmUbIgprIAogCSgCCC0AABtB/wFxIgpB/wFGIAYgEUkgChshCgwBCyAGIBFJIQoLIAAhBiAQIApHDQkgDSAN","Yg0BIBIgEmINBwtBAEEAQX8gDSASZiIGG0EBQX4gBhsgDSASZRsiBmsgBiAJKAIILQAAG0H/AXEiBkH/AUYgCyARSSAGGyEGDAcL","IBIgEmENBAsgCyARSSEGDAULIAYgCkHUhMCAABCYgICAAAALIAsgCkHkhMCAABCYgICAAAALIBEgCkHkhMCAABCYgICAAAALQQAh","BgwBC0EBIQYLIAcgCCAQIAZzGyEGCyAGIABrIgdBAnYhBgJAAkAgAkUNAAJAAkACQCACKAIAIgggBCgCACIJKAIEIgtPDQAgACAH","aigCACIHIAtPDQEgCSgCACILIAdBA3RqKwMAIQ0CQAJAIAsgCEEDdGorAwAiEiASYg0AIA0gDWINBUEAQQBBfyASIA1mIgsbQQFB","fiALGyASIA1lGyILayALIAkoAggtAAAbQf8BcSIJQf8BRiAIIAdJIAkbDQUMAQsgCCAHTw0AIA0gDWINBAsgBSAENgIMIAAgASAG","IAVBDGoQjICAgAAiBkEBaiECIAYgAU8NAiABIAJrIQEgACACQQJ0aiEAQQAhAgwECyAIIAtB1ITAgAAQmICAgAAACyAHIAtB5ITA","gAAQmICAgAAACyACIAEgAUHEhMCAABCXgICAAAALIAAgACABIAYgBBCNgICAACIGIAIgAyAEEIGAgIAAIAEgBkF/c2ohASAAIAZB","AnRqIgJBBGohAAsgA0F/aiEDIAFBIU8NAAsLIAAgASAEEIiAgIAACyAFQRBqJICAgIAAC4kFBAR/AnwCfwF8AkAgA0H4////AXFF","DQAgACAAIANBA3YiA0EEdCIFaiAAIANBHGwiBmogAyAEEIKAgIAAIQAgASABIAVqIAEgBmogAyAEEIKAgIAAIQEgAiACIAVqIAIg","BmogAyAEEIKAgIAAIQILAkACQAJAAkACQAJAAkAgACgCACIDIAQoAgAiBCgCBCIHTw0AIAEoAgAiBSAHTw0BIAQoAgAiCCAFQQN0","aisDACEJAkACQAJAAkAgCCADQQN0aisDACIKIApiIgsNACAJIAlhDQFBASEMDAMLIAkgCWINAUEAIQwMAgtBAEEAQX8gCiAJZiIG","G0EBQX4gBhsgCiAJZRsiBmsgBiAEKAIILQAAG0H/AXEiBkH/AUYgAyAFSSAGGyEMDAELIAMgBUkhDAsgAigCACIGIAdPDQIgCCAG","QQN0aisDACENAkACQAJAAkACQAJAAkAgCw0AIA0gDWENASAMRQ0NIAkgCWINBgwLCyANIA1iDQEgDA0MIAkgCWENAwwJC0EAQQBB","fyAKIA1mIgcbQQFBfiAHGyAKIA1lGyIHayAHIAQoAggtAAAbQf8BcSIHQf8BRiADIAZJIAcbIQMMAQsgAyAGSSEDCyAMIANHDQkg","CSAJYg0BIA0gDWINBwtBAEEAQX8gCSANZiIAG0EBQX4gABsgCSANZRsiAGsgACAEKAIILQAAG0H/AXEiAEH/AUYgBSAGSSAAGyEA","DAcLIA0gDWENBAsgBSAGSSEADAULIAMgB0HUhMCAABCYgICAAAALIAUgB0HkhMCAABCYgICAAAALIAYgB0HkhMCAABCYgICAAAAL","QQAhAAwBC0EBIQALIAIgASAMIABzGyEACyAAC9wDAwR/AnwBfwJAAkAgASgCACIDIAIoAgAiAigCBCIETw0AAkAgAUF8aiIFKAIA","IgYgBE8NACACKAIAIgQgBkEDdGorAwAhBwJAAkAgBCADQQN0aisDACIIIAhiDQAgByAHYg0BQQBBAEF/IAggB2YiBBtBAUF+IAQb","IAggB2UbIgRrIAQgAigCCC0AABtB/wFxIgRB/wFGIAMgBkkgBBtBAUYNAQwECyADIAZPDQMgByAHYQ0DCyABIAY2AgACQCAFIABG","DQAgA0EDdCEJA0AgBSEGAkACQAJAIAMgAigCBCIETw0AIAZBfGoiBSgCACIBIARPDQEgAigCACIEIAFBA3RqKwMAIQcCQAJAIAQg","CWorAwAiCCAIYg0AIAcgB2INBEEAQQBBfyAIIAdmIgQbQQFBfiAEGyAIIAdlGyIEayAEIAIoAggtAAAbQf8BcSIEQf8BRiADIAFJ","IAQbQQFHDQEMBAsgAyABTw0AIAcgB2INAwsgBiEFDAQLIAMgBEHUhMCAABCYgICAAAALIAEgBEHkhMCAABCYgICAAAALIAYgATYC","ACAFIABHDQALCyAFIAM2AgAPCyAGIARB5ITAgAAQmICAgAAACyADIARB1ITAgAAQmICAgAAACwunBQMIfwJ8A38gAiABQQJ0QXxq","IgRqIQUgACAEaiEGIAAgAUEBdiIHQQJ0aiIIQXxqIQkgAygCACEDAkACQAJAAkACQANAIAgoAgAiCiADKAIEIgtPDQEgACgCACIE","IAtPDQIgAygCACILIARBA3RqKwMAIQwCQAJAAkAgCyAKQQN0aisDACINIA1iDQAgDCAMYg0BQQAhC0EAQQBBfyANIAxmIg4bQQFB","fiAOGyANIAxlGyIOayAOIAMoAggtAAAbQf8BcSIOQf8BRiAKIARJIA4bQQFGDQEMAgtBACELIAogBE8NASAMIAxhDQELQQEhCyAK","IQQLIAIgBDYCACAGKAIAIgQgAygCBCIOTw0DIAkoAgAiCiAOTw0EIAtBAnQhDiALQQFzQQJ0IQ8gAygCACILIApBA3RqKwMAIQwC","QAJAAkAgCyAEQQN0aisDACINIA1iDQAgDCAMYg0BQQAhC0EAQQBBfyANIAxmIhAbQQFBfiAQGyANIAxlGyIQayAQIAMoAggtAAAb","Qf8BcSIQQf8BRiAEIApJIBAbQQFGDQEMAgtBACELIAQgCk8NASAMIAxhDQELQQEhCyAKIQQLIAJBBGohAiAIIA5qIQggACAPaiEA","IAUgBDYCACAFQXxqIQUgCSALQQJ0IgRrIQkgBCAGakF8aiEGIAdBf2oiBw0ACyAGQQRqIQQgCUEEaiEDAkAgAUEBcUUNACACIAAg","CCAAIANJIgobKAIANgIAIAggACADT0ECdGohCCAAIApBAnRqIQALAkAgCCAERw0AIAAgA0YNBQsQoYCAgAAACyAKIAtB1ITAgAAQ","mICAgAAACyAEIAtB5ITAgAAQmICAgAAACyAEIA5B1ITAgAAQmICAgAAACyAKIA5B5ITAgAAQmICAgAAACwuDAgICfwJ8AkACQAJA","AkAgACACQQJ0aiIEKAIAIgIgAygCACIDKAIEIgVPDQAgACABQQJ0aiIBKAIAIgAgBU8NASADKAIAIgUgAEEDdGorAwAhBgJAAkAg","BSACQQN0aisDACIHIAdiDQAgBiAGYg0EQQBBAEF/IAcgBmYiBRtBAUF+IAUbIAcgBmUbIgVrIAUgAygCCC0AABtB/wFxIgNB/wFG","IAIgAEkgAxtBAUcNAQwECyACIABPDQAgBiAGYg0DCyAAIQMgAiEADAMLIAIgBUHUhMCAABCYgICAAAALIAAgBUHkhMCAABCYgICA","AAALIAIhAwsgASADNgIAIAQgADYCAAvsAgACQCABQQlJDQAgAEEAQQMgAhCFgICAACAAQQFBByACEIWAgIAAIABBAkEFIAIQhYCA","gAAgAEEEQQggAhCFgICAACAAQQBBByACEIWAgIAAIABBAkEEIAIQhYCAgAAgAEEDQQggAhCFgICAACAAQQVBBiACEIWAgIAAIABB","AEECIAIQhYCAgAAgAEEBQQMgAhCFgICAACAAQQRBBSACEIWAgIAAIABBB0EIIAIQhYCAgAAgAEEBQQQgAhCFgICAACAAQQNBBiAC","EIWAgIAAIABBBUEHIAIQhYCAgAAgAEEAQQEgAhCFgICAACAAQQJBBCACEIWAgIAAIABBA0EFIAIQhYCAgAAgAEEGQQggAhCFgICA","ACAAQQJBAyACEIWAgIAAIABBBEEFIAIQhYCAgAAgAEEGQQcgAhCFgICAACAAQQFBAiACEIWAgIAAIABBA0EEIAIQhYCAgAAgAEEF","QQYgAhCFgICAAA8LAAuEBQACQCABQQ1JDQAgAEEAQQwgAhCFgICAACAAQQFBCiACEIWAgIAAIABBAkEJIAIQhYCAgAAgAEEDQQcg","AhCFgICAACAAQQVBCyACEIWAgIAAIABBBkEIIAIQhYCAgAAgAEEBQQYgAhCFgICAACAAQQJBAyACEIWAgIAAIABBBEELIAIQhYCA","gAAgAEEHQQkgAhCFgICAACAAQQhBCiACEIWAgIAAIABBAEEEIAIQhYCAgAAgAEEBQQIgAhCFgICAACAAQQNBBiACEIWAgIAAIABB","B0EIIAIQhYCAgAAgAEEJQQogAhCFgICAACAAQQtBDCACEIWAgIAAIABBBEEGIAIQhYCAgAAgAEEFQQkgAhCFgICAACAAQQhBCyAC","EIWAgIAAIABBCkEMIAIQhYCAgAAgAEEAQQUgAhCFgICAACAAQQNBCCACEIWAgIAAIABBBEEHIAIQhYCAgAAgAEEGQQsgAhCFgICA","ACAAQQlBCiACEIWAgIAAIABBAEEBIAIQhYCAgAAgAEECQQUgAhCFgICAACAAQQZBCSACEIWAgIAAIABBB0EIIAIQhYCAgAAgAEEK","QQsgAhCFgICAACAAQQFBAyACEIWAgIAAIABBAkEEIAIQhYCAgAAgAEEFQQYgAhCFgICAACAAQQlBCiACEIWAgIAAIABBAUECIAIQ","hYCAgAAgAEEDQQQgAhCFgICAACAAQQVBByACEIWAgIAAIABBBkEIIAIQhYCAgAAgAEECQQMgAhCFgICAACAAQQRBBSACEIWAgIAA","IABBBkEHIAIQhYCAgAAgAEEIQQkgAhCFgICAACAAQQNBBCACEIWAgIAAIABBBUEGIAIQhYCAgAAPCwALlgIBB38jgICAgABBgAFr","IgMkgICAgAACQAJAIAFBAkkNACABQSBLDQEgASABQQF2IgQgAUESSSIFGyEGIAEgBGshByAAIARBAnRqIQggACEJA0ACQAJAIAZB","DEsNAEEBIQQgBkEITQ0BIAkgBiACEIaAgIAAQQkhBAwBCyAJIAYgAhCHgICAAEENIQQLIARBf2ogBk8NAgJAIAQgBkYNACAEQQJ0","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","EJiAgIAAAAsgByAKQeSEwIAAEJiAgIAAAAsgBCABQdSEwIAAEJiAgIAAAAsgBSABQeSEwIAAEJiAgIAAAAuwCAMJfwJ8An8CQCAB","DQBBAA8LIAIoAgAhBCAAKAIAIQVBACEGIAAhAgJAIABBBGoiByAAIAFBAnRqIghBfGoiCU8NACADKAIAIgooAgQhAUEAIQYgACEC","AkACQAJAAkADQCACQQRqIgsoAgAiByABTw0BIAQgAU8NAiAKKAIAIgwgBEEDdGorAwAhDQJAAkACQAJAIAwgB0EDdGorAwAiDiAO","Yg0AIA0gDWENAUEBIQ8MAwsgDSANYg0BQQAhDwwCC0EAQQBBfyAOIA1mIhAbQQFBfiAQGyAOIA1lGyIQayAQIAooAggtAAAbQf8B","cSIQQf8BRiAHIARJIBAbIQ8MAQsgByAESSEPCyACIAAgBkECdGoiECgCADYCACAQIAc2AgAgAkEIaiICKAIAIgcgAU8NAyAGIA9q","IQYCQAJAAkACQCAMIAdBA3RqKwMAIg4gDmINACANIA1hDQFBASEMDAMLIA0gDWINAUEAIQwMAgtBAEEAQX8gDiANZiIMG0EBQX4g","DBsgDiANZRsiDGsgDCAKKAIILQAAG0H/AXEiDEH/AUYgByAESSAMGyEMDAELIAcgBEkhDAsgCyAAIAZBAnRqIhAoAgA2AgAgECAH","NgIAIAYgDGohBiACQQRqIAlPDQQMAAsLIAcgAUHUhMCAABCYgICAAAALIAQgAUHkhMCAABCYgICAAAALIAcgAUHUhMCAABCYgICA","AAALIAJBBGohBwsCQAJAAkACQAJAIAcgCEYNACADKAIAIQEDQCACIQwgByICKAIAIgcgASgCBCIKTw0CIAQgCk8NAyABKAIAIgog","BEEDdGorAwAhDQJAAkACQAJAIAogB0EDdGorAwAiDiAOYg0AIA0gDWENAUEBIQoMAwsgDSANYg0BQQAhCgwCC0EAQQBBfyAOIA1m","IgobQQFBfiAKGyAOIA1lGyIKayAKIAEoAggtAAAbQf8BcSIKQf8BRiAHIARJIAobIQoMAQsgByAESSEKCyAMIAAgBkECdGoiCygC","ADYCACALIAc2AgAgBiAKaiEGIAJBBGoiByAIRw0ACyAHQXxqIQILIAUgAygCACIHKAIEIgFPDQIgBCABTw0DIAcoAgAiASAEQQN0","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","gYCAgAA2AhwgA0GBgICAADYCFCADIANBCGo2AhggAyADQQxqNgIQQaiAwIAAIANBEGogAhCVgICAAAALjwUCBn8BfiOAgICAAEEQ","ayIGJICAgIAAAkACQCABDQAgBUEBaiEHIAAoAgghCEEtIQkMAQtBK0F/IAAoAggiCEGAgIABcSIBGyEJIAFBFXYgBWohBwsCQAJA","IAhBgICABHENAEEAIQIMAQsCQAJAIANBEEkNACACIAMQloCAgAAhCgwBC0EAIQogA0UNACACIQEgAyELA0AgCiABLAAAQb9/Smoh","CiABQQFqIQEgC0F/aiILDQALCyAKIAdqIQcLAkACQAJAAkACQCAHIAAvAQwiCk8NACAIQYCAgAhxDQFBASEBIAYgACAKIAdrQQEQ","moCAgAAgBigCACIHQX9GDQQgBi8BBCELIAAgCSACIAMQm4CAgAANBCAAKAIAIgMgBCAFIAAoAgQiAigCDBGAgICAAICAgIAADQRB","ACEKIAtB//8DcSELA0AgCyAKQf//A3EiAEshASALIABNDQUgCkEBaiEKIAMgByACKAIQEYGAgIAAgICAgABFDQAMBQsLIAAgCSAC","IAMQm4CAgABFDQEMAgsgACAAKQIIIgynQYCAgP95cUGwgICAAnI2AgggACAJIAIgAxCbgICAAA0BQQEhASAGQQhqIAAgCiAHa0EB","EJqAgIAAIAYoAggiC0F/Rg0CIAYvAQwhAiAAKAIAIgcgBCAFIAAoAgQiAygCDBGAgICAAICAgIAADQJBACEKIAJB//8DcSECAkAD","QCACIApB//8DcU0NAUEBIQEgCkEBaiEKIAcgCyADKAIQEYGAgIAAgICAgABFDQAMBAsLIAAgDDcCCEEAIQEMAgsgACgCACAEIAUg","ACgCBCgCDBGAgICAAICAgIAAIQEMAQtBASEBCyAGQRBqJICAgIAAIAELuAEBA38gAiEEAkACQAJAAkAgASgCCCIFQR12QQNxDgQB","AwACAQsgAkH+/wNxQQF2IQQMAgtBACEEDAELIAJBACADQf8BcRshBAsgBUH///8AcSEFIAEoAgQhAyABKAIAIQZBACEBAkACQANA","IAFB//8DcSAEQf//A3FPDQEgAUEBaiEBIAYgBSADKAIQEYGAgIAAgICAgABFDQALQX8hBQwBCyACIARrIQELIAAgATsBBCAAIAU2","AgALUgACQCABQX9GDQAgACgCACABIAAoAgQoAhARgYCAgACAgICAAEUNAEEBDwsCQCACDQBBAA8LIAAoAgAgAiADIAAoAgQoAgwR","gICAgACAgICAAAvRAwEJfwJAAkAgAEHoB08NACAAIQMMAQsgAUF8aiEEQQAhBSAAIQYCQAJAAkACQAJAA0AgBiAGQZDOAG4iA0GQ","zgBsayIHQf//A3FB5ABuIQggAiAFaiIJQXxqIAJPDQEgBCACaiIKIAhBAXQiCy0ApIXAgAA6AAAgCUF9aiACTw0CIApBAWogC0Gl","hcCAAGotAAA6AAAgCUF+aiACTw0DIApBAmogByAIQeQAbGtBAXRB/v8HcSIILQCkhcCAADoAACAJQX9qIAJPDQQgCkEDaiAIQaWF","wIAAai0AADoAACAEQXxqIQQgBUF8aiEFIAZB/6ziBEshCSADIQYgCUUNBQwACwsgCUF8aiACQZSFwIAAEJiAgIAAAAsgCUF9aiAC","QZSFwIAAEJiAgIAAAAsgCUF+aiACQZSFwIAAEJiAgIAAAAsgCUF/aiACQZSFwIAAEJiAgIAAAAsgAiAFaiECCwJAAkAgA0EKTw0A","IAMhBgwBCyABIAJBfmoiAmogAyADQf//A3FB5ABuIgZB5ABsa0H//wNxQQF0LwCkhcCAADsAAAsCQAJAIABFDQAgBkUNAQsgASAC","QX9qIgJqIAZBAXRBHnEtAKWFwIAAOgAACyACC1EBAX8jgICAgABBEGsiAiSAgICAACABQQFBAUEAIAJBBmogACgCACACQQZqQQoQ","nICAgAAiAGpBCiAAaxCZgICAACEAIAJBEGokgICAgAAgAAthAQF/I4CAgIAAQSBrIgMkgICAgAAgAyABNgIMIAMgADYCCCADQYGA","gIAANgIcIANBgYCAgAA2AhQgAyADQQxqNgIYIAMgA0EIajYCEEGAgMCAACADQRBqIAIQlYCAgAAAC2EBAX8jgICAgABBIGsiAySA","gICAACADIAE2AgwgAyAANgIIIANBgYCAgAA2AhwgA0GBgICAADYCFCADIANBDGo2AhggAyADQQhqNgIQQd+AwIAAIANBEGogAhCV","gICAAAALYQEBfyOAgICAAEEgayIDJICAgIAAIAMgATYCDCADIAA2AgggA0GBgICAADYCHCADQYGAgIAANgIUIAMgA0EMajYCGCAD","IANBCGo2AhBBmIHAgAAgA0EQaiACEJWAgIAAAAsYAEHshsCAAEGZAUG4h8CAABCVgICAAAALSgEDf0EAIQMCQCACRQ0AAkADQCAA","LQAAIgQgAS0AACIFRw0BIABBAWohACABQQFqIQEgAkF/aiICRQ0CDAALCyAEIAVrIQMLIAMLC9IHAQBBgIDAAAvIBxZzbGljZSBp","bmRleCBzdGFydHMgYXQgwA0gYnV0IGVuZHMgYXQgwAAgaW5kZXggb3V0IG9mIGJvdW5kczogdGhlIGxlbiBpcyDAEiBidXQgdGhl","IGluZGV4IGlzIMAAEnJhbmdlIHN0YXJ0IGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAAEHJhbmdl","IGVuZCBpbmRleCDAIiBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCDAAC9yb290Ly5ydXN0dXAvdG9vbGNoYWlucy9z","dGFibGUteDg2XzY0LXVua25vd24tbGludXgtZ251L2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uv","c29ydC9zaGFyZWQvc21hbGxzb3J0LnJzAC9yb290Ly5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUteDg2XzY0LXVua25vd24tbGlu","dXgtZ251L2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC91bnN0YWJsZS9xdWlja3NvcnQu","cnMAL3Jvb3QvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS14ODZfNjQtdW5rbm93bi1saW51eC1nbnUvbGliL3J1c3RsaWIvc3Jj","L3J1c3QvbGlicmFyeS9jb3JlL3NyYy9mbXQvbnVtLnJzAHNyYy9saWIucnMAAABNARAAfwAAADgAAAAbAAAANwIQAAoAAAAlAAAA","EgAAADcCEAAKAAAAJgAAABIAAAA3AhAACgAAAGAAAAAMAAAANwIQAAoAAABgAAAAIwAAAM0BEABpAAAAWAIAAAUAAAAwMDAxMDIw","MzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQw","NDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3","ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OXVzZXItcHJvdmlkZWQgY29tcGFyaXNvbiBmdW5jdGlv","biBkb2VzIG5vdCBjb3JyZWN0bHkgaW1wbGVtZW50IGEgdG90YWwgb3JkZXLPABAAfQAAAFYDAAAFAAAA"].join("");var Kr=1e4,et="\0";function vA(e,A){return e==="rust"||e==="auto"&&A>=Kr}var qr=1,Hr=65536,wA=null,ei=null;function Ai(e){if(typeof atob=="function"){let t=atob(e),i=new Uint8Array(t.length);for(let o=0;o<t.length;o++)i[o]=t.charCodeAt(o);return i}let A=globalThis.Buffer;if(A)return new Uint8Array(A.from(e,"base64"));throw new Error("No base64 decoder")}function an(){return wA?Promise.resolve(wA):(ei||(ei=(async()=>{try{return typeof WebAssembly>"u"?null:(wA=await WebAssembly.compile(Ai(rn)),wA)}catch{return null}})()),ei)}function on(e){let A=e.isWellFormed;if(typeof A=="function")return A.call(e);for(let t=0;t<e.length;t++){let i=e.charCodeAt(t);if(i>=55296&&i<=56319){let o=e.charCodeAt(t+1);if(o>=56320&&o<=57343){t++;continue}return!1}if(i>=56320&&i<=57343)return!1}return!0}var bA=e=>e+7&-8,_A=class e{x;base;encoder=new TextEncoder;offsetsPtr=0;textPtr=0;textLen=0;rows=0;hasIndex=!1;freePtr;constructor(A){this.x=A,this.base=bA(A.yk_heap_base()),this.freePtr=this.base}static create(A=wA){if(!A)return null;try{let i=new WebAssembly.Instance(A,{}).exports;return i.yk_version()!==qr?null:new e(i)}catch{return null}}ensure(A){let t=A-this.x.memory.buffer.byteLength;t>0&&this.x.memory.grow(Math.ceil(t/Hr))}setSearchTexts(A){this.hasIndex=!1,this.freePtr=this.base;try{let t=0;for(let I of A){if(!on(I))return!1;t+=I.length*3}let i=A.length,o=this.base,r=bA(o+(i+1)*4);this.ensure(r+t);let n=this.x.memory.buffer,a=new Uint32Array(n,o,i+1),s=new Uint8Array(n,r,t),l=0;for(let I=0;I<i;I++)a[I]=l,l+=this.encoder.encodeInto(A[I],s.subarray(l)).written??0;return a[i]=l,this.offsetsPtr=o,this.textPtr=r,this.textLen=l,this.rows=i,this.freePtr=bA(r+l),this.hasIndex=!0,!0}catch{return!1}}search(A){if(!this.hasIndex||!A||A.includes(et)||!on(A))return null;try{let t=this.encoder.encode(A),i=this.freePtr,o=bA(i+t.length);this.ensure(o+this.rows*4),new Uint8Array(this.x.memory.buffer,i,t.length).set(t);let r=this.x.yk_search(this.textPtr,this.textLen,this.offsetsPtr,this.rows,i,t.length,o);return new Uint32Array(this.x.memory.buffer,o,r).slice()}catch{return null}}sortByKeys(A,t){try{let i=A.length,o=this.freePtr,r=bA(o+i*8);return this.ensure(r+i*4),new Float64Array(this.x.memory.buffer,o,i).set(A),this.x.yk_sort(o,i,t?1:0,r),new Uint32Array(this.x.memory.buffer,r,i).slice()}catch{return null}}};function sn(e){return e>=.1?`${e<10?e.toFixed(1):Math.round(e)} ms`:"<0.1 ms"}function ti(e,A){let t=new Array(A.length);for(let i=0;i<A.length;i++)t[i]=e[A[i]];return t}var $r=1e3;function xA(e,A){return e==="rust"||e==="auto"&&A>=$r}var Pr=1,oA=null,ii=null;function ln(){return oA?Promise.resolve(oA):(ii||(ii=(async()=>{try{return typeof WebAssembly>"u"?null:(oA=await WebAssembly.compile(Ai(nn)),oA)}catch{return null}})()),ii)}function cn(){return oA}var gn=e=>e+7&-8,At=class e{x;encoder=new TextEncoder;docs=0;ready=!1;constructor(A){this.x=A}static create(A=oA){if(!A)return null;try{let t=new WebAssembly.Instance(A,{}).exports;return t.yk_rag_version()!==Pr?null:new e(t)}catch{return null}}build(A){this.ready=!1;try{let t=this.encoder.encode(A.map(o=>o.join(" ")).join(`
|
|
15
|
+
`));this.x.yk_rag_reset();let i=this.x.yk_rag_scratch(t.length);return new Uint8Array(this.x.memory.buffer,i,t.length).set(t),this.x.yk_rag_build(i,t.length,A.length),this.docs=A.length,this.ready=!0,!0}catch{return!1}}search(A,t,i,o){if(!this.ready||A.length!==t.length||A.some(r=>!r||/[ \n]/.test(r)))return null;try{let r=Math.max(0,Math.min(o,this.docs)),n=this.encoder.encode(A.join(" ")),a=gn(n.length),s=a+t.length*8,l=gn(s+r*4),I=l+r*8,u=this.x.yk_rag_scratch(I),m=this.x.memory.buffer;new Uint8Array(m,u,n.length).set(n),new Float64Array(m,u+a,t.length).set(t);let c=this.x.yk_rag_search(u,n.length,u+a,t.length,i,r,u+s,u+l),k=this.x.memory.buffer,f=new Uint32Array(k,u+s,c),C=new Float64Array(k,u+l,c),B=[];for(let v=0;v<c;v++)B.push({doc:f[v],score:C[v]});return B}catch{return null}}};var zr=new Set("a an the is are was were be to of and or in on at for with what which who whom how why when where does do did this that these those it its from by as about any all please tell me show give".split(" "));function aA(e){return(e.normalize("NFC").toLowerCase().match(/[\p{L}\p{M}\p{N}]+/gu)??[]).filter(A=>A.length>1&&!zr.has(A))}function ni(e,A=600){let t=ue(e);if(!t)return[];let i=[],o="",r="",n=()=>{r.trim()&&i.push({id:`page-${i.length+1}`,source:"page",text:r.trim(),ref:o||void 0}),r=""};for(let a of U(t,"h1,h2,h3,h4,p,li,td,th,dt,dd,blockquote,figcaption,label,summary")){if(a.querySelector("p,li,h1,h2,h3,h4"))continue;let s=ne(a.textContent);if(s){if(/^H[1-4]$/.test(a.tagName)){n(),o=s,r=`${s}. `;continue}r.length+s.length>A&&n(),r+=`${s} `}}return n(),i}function ri(e,A,t="id"){return e.map((i,o)=>{let r=i,n=String(r[t]??o+1);return{id:`grid-${n}`,source:"grid",ref:n,text:A.map(a=>`${a.label}: ${String(r[a.key]??"")}`).join(". ")}})}function tt(e={}){let A=[],t=[],i=new Map,o=0,r=null,n=null,a=null,s=!1,l=null;function I(){return xA(e.engine,A.length)?n?Promise.resolve(!0):(l||(l=ln().then(f=>(n=f?At.create(f):null,!!n))),l):Promise.resolve(!1)}function u(){let f=[...e.includePage===!1?[]:ni(e.root),...e.rows&&e.columns?ri(e.rows,e.columns,e.rowKey):[],...(e.documents??[]).map(B=>({id:B.id,source:"custom",text:B.text}))],C=f.map(B=>`${B.source}${B.id}${B.ref??""}${B.text}`).join("");if(C!==r){r=C,A=f,t=A.map(B=>aA(B.text)),i=new Map;for(let B of t)for(let v of new Set(B))i.set(v,(i.get(v)??0)+1);o=t.reduce((B,v)=>B+v.length,0)/Math.max(1,t.length)}}u(),xA(e.engine,A.length)&&cn()&&I();function m(f,C){if(!n||!xA(e.engine,A.length)||!Number.isInteger(C)||C<=0||(a!==t&&(s=n.build(t),a=t),!s))return null;let B=t.length,v=f.map(h=>Math.log(1+(B-(i.get(h)??1)+.5)/((i.get(h)??1)+.5))),E=n.search(f,v,o||1,C);return E?E.map(h=>({...A[h.doc],score:h.score})):null}function c(f,C=5){let B=aA(f);if(!B.length)return[];let v=m(B,C);if(v)return v;n||I();let E=t.length;return t.map((p,y)=>{let D=0;for(let Q of B){let x=0;for(let w of p)(w===Q||Q.length>=4&&w.startsWith(Q)||w.length>=4&&Q.startsWith(w))&&x++;if(!x)continue;let G=Math.log(1+(E-(i.get(Q)??1)+.5)/((i.get(Q)??1)+.5));D+=G*(x*2.2/(x+1.2*(.25+.75*(p.length/(o||1)))))}return{...A[y],score:D}}).filter(p=>p.score>0).sort((p,y)=>y.score-p.score).slice(0,C)}async function k(f,C={}){await I();let B=c(f,C.k??4);if(!B.length)return{answer:"I couldn't find anything about that on this page or in the data.",hits:B,generated:!1};if(C.generate)try{let p=B.map((D,Q)=>`[${Q+1}] ${D.text}`).join(`
|
|
16
|
+
`),y=await C.generate(f,p);if(y!=null&&y.trim())return{answer:y.trim(),hits:B,generated:!0}}catch{}let v=new Set(aA(f)),E=B.flatMap(p=>p.text.split(new RegExp("(?<=[.!?\u0964])\\s+|\\.\\s+(?=\\p{Lu})","u")).map(y=>({s:y.trim(),h:p}))).map(({s:p,h:y})=>({s:p,h:y,overlap:aA(p).filter(D=>v.has(D)).length})).filter(p=>p.s&&p.overlap>0).sort((p,y)=>y.overlap-p.overlap).slice(0,3);return{answer:E.length?E.map(p=>p.h.source==="grid"?`Row ${p.h.ref}: ${p.s}`:p.s).join(`
|
|
17
|
+
`):B[0].text.slice(0,300),hits:B,generated:!1}}return{search:c,ask:k,rebuild:u,update(f){Object.assign(e,f),u()},size:()=>A.length,get engine(){return n&&xA(e.engine,A.length)?"rust":"ts"},whenEngineReady:()=>I().then(f=>f?"rust":"ts")}}var In={high:12,medium:6,low:2};function it(e={}){let A=ue(e.root),t=[],i=(a,s,l,I,u)=>t.push({category:a,severity:s,message:l,suggestion:I,selector:u?ke(u):void 0});if(A&&Ee()){let a=e.minFontSize??14,s=e.maxLineLength??90,l=w=>window.getComputedStyle(w),I=U(A,"h1");I.length===0&&i("hierarchy","medium","There is no h1, so the page has no clear main title.","Add one prominent h1 near the top."),I.length>1&&i("hierarchy","low",`${I.length} h1 headings compete for attention.`,"Keep one h1 and demote the rest.",I[1]);let u=w=>{let M=U(A,w)[0];return M&&parseFloat(l(M).fontSize)||0},[m,c,k]=[u("h1"),u("h2"),u("h3")];m&&c&&c>=m&&i("hierarchy","medium",`h2 (${c}px) is as large as or larger than h1 (${m}px).`,"Make each heading level visibly smaller than the one above it."),c&&k&&k>c&&i("hierarchy","low",`h3 (${k}px) is larger than h2 (${c}px).`,"Keep heading sizes in descending order.");let f=pe({root:e.root,skip:["color-contrast","target-size","duplicate-id","page-title","html-lang","form-error","positive-tabindex"]});for(let w of f.issues.filter(M=>M.rule==="heading-order").slice(0,3))i("hierarchy","low",w.message,w.fix,w.element);let C=0,B;for(let w of U(A,"p,li,td,span,a,label,small,div").slice(0,1500)){if(!BA(w))continue;(parseFloat(l(w).fontSize)||16)<a&&(C++,B??=w)}C&&i("readability",C>10?"high":"medium",`${C} text element(s) are smaller than ${a}px, e.g. "${re((B==null?void 0:B.textContent)??"",30)}".`,`Use at least ${a}px for body text (16px for senior-friendly pages).`,B);for(let w of U(A,"p").slice(0,200)){let M=l(w),L=parseFloat(M.fontSize)||16,F=w.getBoundingClientRect().width,R=F/(L*.5);if(F>0&&R>s&&(w.textContent??"").length>s){i("readability","low",`A paragraph is about ${Math.round(R)} characters wide.`,`Limit text width to ~${s} characters (e.g. max-width: 70ch).`,w);break}let H=parseFloat(M.lineHeight);if(Number.isFinite(H)&&H/L<1.3){i("readability","low",`Line height is ${(H/L).toFixed(2)}\xD7 the font size.`,"Use line-height of at least 1.5 for body text (WCAG 1.4.12).",w);break}}let v=pe({root:e.root,skip:["html-lang","page-title","image-alt","heading-order","single-h1","landmark-main","form-label","button-name","link-name","positive-tabindex","keyboard-access","duplicate-id","form-error","target-size"]});v.issues.length&&i("readability",v.issues.length>5?"high":"medium",`${v.issues.length} text element(s) have weak contrast. ${v.issues[0].message}`,"Raise contrast to at least 4.5:1 for body text.",v.issues[0].element);let E=Or();E.length&&i("interaction","high",`Focus outlines are removed by CSS (${E.slice(0,2).join(", ")}) with no replacement.`,"Never remove outlines without a visible :focus-visible style (WCAG 2.4.7).");let h=U(A,VA).filter(w=>{let M=w.getBoundingClientRect();return M.width>0&&M.height>0&&(M.width<24||M.height<24)&&!(w.tagName==="A"&&w.closest("p,li"))});h.length&&i("interaction",h.length>5?"high":"medium",`${h.length} control(s) are smaller than 24\xD724px.`,"Give controls at least 24\xD724px, ideally 44\xD744px for touch and seniors.",h[0]);let p=window.innerHeight||800,y=U(A,tn).filter(w=>{let M=w.getBoundingClientRect();return M.height>0&&M.top<p});y.length>40&&i("clutter","medium",`${y.length} interactive elements in the first screen.`,"Group secondary actions into menus and keep the first screen focused on one task.");let D=U(A,"button,a[href],[role='button']").filter(w=>{let M=w.getBoundingClientRect();if(M.height===0||M.top>p)return!1;let L=l(w).backgroundColor;return!!L&&!/rgba\(0, 0, 0, 0\)|transparent/.test(L)&&!/rgb\(255, 255, 255\)/.test(L)});D.length>4&&i("clutter","medium",`${D.length} filled buttons compete in the first screen.`,"Keep one primary action per view; make the rest secondary (outline or text).",D[0]);let Q=new Set,x=new Set;for(let w of U(A,"body *").slice(0,2e3)){if(!BA(w))continue;let M=l(w);Q.add(M.fontFamily.split(",")[0].replace(/["']/g,"").trim().toLowerCase()),x.add(Math.round(parseFloat(M.fontSize)||0))}Q.size>4&&i("consistency","low",`${Q.size} different font families are used.`,"Stick to 1\u20132 font families (e.g. one Telugu + one Latin)."),x.size>10&&i("consistency","low",`${x.size} different font sizes are used.`,"Use a small type scale (5\u20137 sizes) for a calmer page.");let G=U(A,"img:not([width]):not([height])").filter(w=>!l(w).aspectRatio||l(w).aspectRatio==="auto");G.length>3&&i("consistency","low",`${G.length} images have no width/height, so the layout jumps while loading.`,"Set width and height (or aspect-ratio) on images.",G[0])}let o=["hierarchy","readability","interaction","clutter","consistency"].reduce((a,s)=>{let l=t.filter(I=>I.category===s);return a[s]={score:Math.max(0,100-l.reduce((I,u)=>I+In[u.severity]*2,0)),findings:l.length},a},{}),r=Math.max(0,100-t.reduce((a,s)=>a+In[s.severity],0)),n=Object.entries(o).sort((a,s)=>a[1].score-s[1].score)[0];return{score:r,categories:o,findings:t,summary:t.length?`Design score ${r}/100 with ${t.length} finding(s). Weakest area: ${n[0]}.`:"No design issues found by the automatic review."}}function Or(){let e=[],A=!1,t=i=>{for(let o of Array.from(i)){let r=o.cssRules;r&&t(r);let n=o;if(!n.selectorText||!/:focus/.test(n.selectorText))continue;let a=`${n.style.outline} ${n.style.outlineStyle} ${n.style.outlineWidth}`,s=/\bnone\b|\b0(px)?\b/.test(a),l=!!(n.style.boxShadow&&n.style.boxShadow!=="none")||!!n.style.borderColor||!!n.style.backgroundColor||!!n.style.textDecoration;/:focus-visible/.test(n.selectorText)&&(!s||l)&&(A=!0),s&&!l&&e.push(n.selectorText)}};for(let i of Array.from(document.styleSheets))try{t(i.cssRules)}catch{}return A?[]:e}function dn(){var A;let e=window;return e.Rewriter||((A=e.ai)==null?void 0:A.rewriter)||null}async function oi(){try{let e=dn();if(!e)return!1;if(typeof e.availability=="function"){let A=await e.availability();return A==="readily"||A==="available"||A==="downloadable"}if(typeof e.capabilities=="function"){let A=await e.capabilities();return(A==null?void 0:A.available)!=="no"}return typeof e.create=="function"}catch{return!1}}async function Wr(e){if(!e||e.trim().length<20)return{success:!1,original:e,rewritten:e,error:"Text too short"};try{let A=dn();if(!A)throw new Error("Rewriter API not available");let t=await A.create({tone:"more-casual",format:"plain-text",length:"as-is",outputLanguage:"en"}),i=await t.rewrite(e,{context:"Rewrite this text in simple plain English. Use short sentences. Avoid jargon. Make it easy to understand for everyone."});return t.destroy(),{success:!0,original:e,rewritten:i.trim()}}catch(A){return{success:!1,original:e,rewritten:e,error:A instanceof Error?A.message:"Rewrite failed"}}}async function un(){var i;if(!await oi())return{fixed:0,error:"Chrome Built-in AI Rewriter not available. Enable via chrome://flags."};let A=document.querySelectorAll("p, h1, h2, h3, h4, h5, h6, li, blockquote, td, th, label, figcaption"),t=0;for(let o of A){let r=(i=o.innerText)==null?void 0:i.trim();if(!r||r.length<20||o.closest("[data-yuktai-panel]"))continue;let n=await Wr(r);n.success&&n.rewritten!==r&&(o.dataset.yuktaiOriginal=r,o.innerText=n.rewritten,t++)}return{fixed:t}}function Cn(){let e=document.querySelectorAll("[data-yuktai-original]");for(let A of e){let t=A.dataset.yuktaiOriginal;t&&(A.innerText=t,delete A.dataset.yuktaiOriginal)}}var hn="yuktai-summary-box";function pn(){var A;let e=window;return e.Summarizer||((A=e.ai)==null?void 0:A.summarizer)||null}async function ai(){try{let e=pn();if(!e)return!1;if(typeof e.availability=="function"){let A=await e.availability();return A==="readily"||A==="available"||A==="downloadable"}if(typeof e.capabilities=="function"){let A=await e.capabilities();return(A==null?void 0:A.available)!=="no"}return typeof e.create=="function"}catch{return!1}}function Vr(){var t;let e=document.querySelectorAll("p, h1, h2, h3, h4, h5, h6, li, blockquote, article, section"),A=[];for(let i of e){if(i.closest("[data-yuktai-panel]"))continue;let o=window.getComputedStyle(i);if(o.display==="none"||o.visibility==="hidden")continue;let r=(t=i.innerText)==null?void 0:t.trim();r&&r.length>10&&A.push(r)}return A.join(" ").slice(0,5e3)}async function yn(){if(!await ai())return{success:!1,summary:"",error:"Chrome Built-in AI Summarizer not available. Enable via chrome://flags."};let A=Vr();if(!A||A.length<100)return{success:!1,summary:"",error:"Not enough text on this page to summarise."};try{let t=pn();if(!t)throw new Error("Summarizer API not available");let i=await t.create({type:"tl;dr",format:"plain-text",length:"short",outputLanguage:"en"}),o=await i.summarize(A,{context:"Summarise this page in 2-3 simple sentences for a screen reader user who wants to know if this page is relevant to them."});return i.destroy(),Xr(o.trim()),{success:!0,summary:o.trim()}}catch(t){return{success:!1,summary:"",error:t instanceof Error?t.message:"Summary failed"}}}function Xr(e){nt();let A=document.createElement("div");A.id=hn,A.setAttribute("data-yuktai-panel","true"),A.setAttribute("role","region"),A.setAttribute("aria-label","Page summary by yuktai"),A.style.cssText=`
|
|
17
18
|
position: fixed;
|
|
18
19
|
top: 0;
|
|
19
20
|
left: 0;
|
|
@@ -30,11 +31,11 @@ Missing landmarks: ${o.join(", ")}.`:""}`,targets:[],suggestions:o.includes("mai
|
|
|
30
31
|
justify-content: space-between;
|
|
31
32
|
gap: 12px;
|
|
32
33
|
box-shadow: 0 2px 8px rgba(0,0,0,0.15);
|
|
33
|
-
`;let
|
|
34
|
+
`;let t=document.createElement("p");t.style.cssText="margin: 0; flex: 1;",t.textContent=`\u{1F4CB} Page summary: ${e}`;let i=document.createElement("button");i.textContent="\xD7",i.setAttribute("aria-label","Close page summary"),i.style.cssText=`
|
|
34
35
|
background: none; border: none; color: #ffffff;
|
|
35
36
|
font-size: 20px; cursor: pointer; padding: 0 4px;
|
|
36
37
|
line-height: 1; flex-shrink: 0;
|
|
37
|
-
`,
|
|
38
|
+
`,i.addEventListener("click",nt),A.appendChild(t),A.appendChild(i),document.body.prepend(A)}function nt(){let e=document.getElementById(hn);e&&e.remove()}var mn=[{code:"en",label:"English"},{code:"hi",label:"Hindi"},{code:"es",label:"Spanish"},{code:"fr",label:"French"},{code:"de",label:"German"},{code:"it",label:"Italian"},{code:"pt",label:"Portuguese"},{code:"nl",label:"Dutch"},{code:"pl",label:"Polish"},{code:"ru",label:"Russian"},{code:"ja",label:"Japanese"},{code:"ko",label:"Korean"},{code:"zh",label:"Chinese"},{code:"ar",label:"Arabic"},{code:"tr",label:"Turkish"},{code:"vi",label:"Vietnamese"},{code:"bn",label:"Bengali"},{code:"id",label:"Indonesian"}],rt="en";function jr(){let e=window;return e.Translator||e.translation||null}async function Zr(e){try{let A=window;if(!jr())return!1;if(A.Translator&&typeof A.Translator.availability=="function")try{let i=await A.Translator.availability({sourceLanguage:"en",targetLanguage:e});return i==="readily"||i==="available"||i==="downloadable"||i==="after-download"}catch{}return A.Translator&&typeof A.Translator.canTranslate=="function"?await A.Translator.canTranslate({sourceLanguage:"en",targetLanguage:e})!=="no":A.translation&&typeof A.translation.canTranslate=="function"?await A.translation.canTranslate({sourceLanguage:"en",targetLanguage:e})!=="no":!1}catch{return!1}}async function _r(e){let A=window,t={sourceLanguage:"en",targetLanguage:e};if(A.Translator&&typeof A.Translator.create=="function")return await A.Translator.create(t);if(A.translation&&typeof A.translation.createTranslator=="function")return await A.translation.createTranslator(t);throw new Error("Translation API not available")}async function fn(e){var t;if(e===rt)return{success:!0,language:e,fixed:0};if(e==="en")return si(),rt="en",{success:!0,language:"en",fixed:0};if(!await Zr(e))return{success:!1,language:e,fixed:0,error:`Translation to ${e} not available. Enable via chrome://flags.`};try{let i=await _r(e),o=document.querySelectorAll("p, h1, h2, h3, h4, h5, h6, li, blockquote, td, th, label, figcaption, span, a"),r=0;for(let n of o){if(n.closest("[data-yuktai-panel]")||n.children.length>0)continue;let a=(t=n.innerText)==null?void 0:t.trim();if(!a||a.length<2)continue;n.dataset.yuktaiTranslationOriginal||(n.dataset.yuktaiTranslationOriginal=a);let s=await i.translate(a);s&&s!==a&&(n.innerText=s,r++)}return typeof i.destroy=="function"&&i.destroy(),rt=e,{success:!0,language:e,fixed:r}}catch(i){return{success:!1,language:e,fixed:0,error:i instanceof Error?i.message:"Translation failed"}}}function si(){let e=document.querySelectorAll("[data-yuktai-translation-original]");for(let A of e){let t=A.dataset.yuktaiTranslationOriginal;t&&(A.innerText=t,delete A.dataset.yuktaiTranslationOriginal)}rt="en"}var eo=[{phrases:["go to main","skip to main","main content"],action:"focus-main",label:"Jump to main content"},{phrases:["go to navigation","go to nav","open menu"],action:"focus-nav",label:"Jump to navigation"},{phrases:["go to search","search","find"],action:"focus-search",label:"Jump to search"},{phrases:["scroll down","page down","next"],action:"scroll-down",label:"Scroll down"},{phrases:["scroll up","page up","back up"],action:"scroll-up",label:"Scroll up"},{phrases:["go back","previous page"],action:"go-back",label:"Go back"},{phrases:["click","press","select"],action:"click-focused",label:"Click focused element"},{phrases:["next item","tab forward","tab"],action:"tab-forward",label:"Move to next element"},{phrases:["previous item","tab back","shift tab"],action:"tab-back",label:"Move to previous element"},{phrases:["stop listening","stop voice","quiet"],action:"stop-voice",label:"Stop voice control"}],ge=null,ot=!1,sA=null;function gi(){return!!(window.SpeechRecognition||window.webkitSpeechRecognition)}function Ao(e){let A=e.toLowerCase().trim();for(let t of eo)for(let i of t.phrases)if(A.includes(i))return{action:t.action,label:t.label};return null}function to(e){switch(e){case"focus-main":{let A=document.querySelector("main, [role='main'], #main");A&&(A.focus(),A.scrollIntoView({behavior:"smooth"}));break}case"focus-nav":{let A=document.querySelector("nav, [role='navigation']");A&&(A.focus(),A.scrollIntoView({behavior:"smooth"}));break}case"focus-search":{let A=document.querySelector("input[type='search'], input[role='searchbox'], [aria-label*='search' i]");A&&(A.focus(),A.scrollIntoView({behavior:"smooth"}));break}case"scroll-down":{window.scrollBy({top:400,behavior:"smooth"});break}case"scroll-up":{window.scrollBy({top:-400,behavior:"smooth"});break}case"go-back":{window.history.back();break}case"click-focused":{let A=document.activeElement;A&&A!==document.body&&A.click();break}case"tab-forward":{let A=Qn(),t=A.indexOf(document.activeElement),i=A[t+1]||A[0];i&&i.focus();break}case"tab-back":{let A=Qn(),t=A.indexOf(document.activeElement),i=A[t-1]||A[A.length-1];i&&i.focus();break}case"stop-voice":{li();break}}}function Qn(){return Array.from(document.querySelectorAll('a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])')).filter(e=>!e.closest("[data-yuktai-panel]"))}function Bn(e){if(!gi())return!1;if(ot)return!0;e&&(sA=e);let A=window.SpeechRecognition||window.webkitSpeechRecognition;return ge=new A,ge.continuous=!0,ge.interimResults=!1,ge.lang="en-US",ge.onresult=t=>{let i=t.results[t.results.length-1][0].transcript,o=Ao(i);if(o){to(o.action);let r={success:!0,command:i,action:o.label};if(sA&&sA(r),o.action==="stop-voice")return}},ge.onend=()=>{ot&&(ge==null||ge.start())},ge.onerror=t=>{t.error!=="no-speech"&&sA&&sA({success:!1,command:"",action:"",error:`Voice error: ${t.error}`})},ge.start(),ot=!0,io(),!0}function li(){ot=!1,ge&&(ge.stop(),ge=null),sA=null,bn()}var En="yuktai-voice-indicator";function io(){bn();let e=document.createElement("div");e.id=En,e.setAttribute("data-yuktai-panel","true"),e.setAttribute("aria-live","polite"),e.setAttribute("aria-label","yuktai voice control is listening"),e.style.cssText=`
|
|
38
39
|
position: fixed;
|
|
39
40
|
bottom: 80px;
|
|
40
41
|
left: 50%;
|
|
@@ -52,19 +53,19 @@ Missing landmarks: ${o.join(", ")}.`:""}`,targets:[],suggestions:o.includes("mai
|
|
|
52
53
|
gap: 8px;
|
|
53
54
|
box-shadow: 0 2px 8px rgba(0,0,0,0.15);
|
|
54
55
|
pointer-events: none;
|
|
55
|
-
`;let
|
|
56
|
+
`;let A=document.createElement("span");if(A.style.cssText=`
|
|
56
57
|
width: 8px;
|
|
57
58
|
height: 8px;
|
|
58
59
|
border-radius: 50%;
|
|
59
60
|
background: #ffffff;
|
|
60
61
|
animation: yuktai-pulse 1.2s infinite;
|
|
61
62
|
flex-shrink: 0;
|
|
62
|
-
`,!document.getElementById("yuktai-pulse-style")){let
|
|
63
|
+
`,!document.getElementById("yuktai-pulse-style")){let i=document.createElement("style");i.id="yuktai-pulse-style",i.textContent=`
|
|
63
64
|
@keyframes yuktai-pulse {
|
|
64
65
|
0%, 100% { opacity: 1; transform: scale(1); }
|
|
65
66
|
50% { opacity: 0.4; transform: scale(0.7); }
|
|
66
67
|
}
|
|
67
|
-
`,document.head.appendChild(
|
|
68
|
+
`,document.head.appendChild(i)}let t=document.createElement("span");t.textContent="Listening for commands...",e.appendChild(A),e.appendChild(t),document.body.appendChild(e)}function bn(){let e=document.getElementById(En);e&&e.remove()}var no=["button:not([aria-label]):not([aria-labelledby])","a:not([aria-label]):not([aria-labelledby])","input:not([aria-label]):not([aria-labelledby]):not([id])","select:not([aria-label]):not([aria-labelledby])","textarea:not([aria-label]):not([aria-labelledby])","[role='button']:not([aria-label])","[role='link']:not([aria-label])","[role='checkbox']:not([aria-label])","[role='tab']:not([aria-label])"].join(", ");function wn(){var A;let e=window;return e.Writer||((A=e.ai)==null?void 0:A.writer)||null}async function ci(){try{let e=wn();if(!e)return!1;if(typeof e.availability=="function"){let A=await e.availability();return A==="readily"||A==="available"||A==="downloadable"}if(typeof e.capabilities=="function"){let A=await e.capabilities();return(A==null?void 0:A.available)!=="no"}return typeof e.create=="function"}catch{return!1}}function ro(e){var l,I,u,m,c,k,f;let A=[],t=(l=e.innerText)==null?void 0:l.trim();t&&A.push(`element text: "${t}"`);let i=(I=e.placeholder)==null?void 0:I.trim();i&&A.push(`placeholder: "${i}"`);let o=(u=e.getAttribute("name"))==null?void 0:u.trim();o&&A.push(`name: "${o}"`);let r=(m=e.getAttribute("type"))==null?void 0:m.trim();r&&A.push(`type: "${r}"`);let n=e.id;if(n){let C=document.querySelector(`label[for="${n}"]`);C&&A.push(`label: "${(c=C.innerText)==null?void 0:c.trim()}"`)}let a=(f=(k=e.parentElement)==null?void 0:k.innerText)==null?void 0:f.trim().slice(0,60);a&&A.push(`parent context: "${a}"`),A.push(`tag: ${e.tagName.toLowerCase()}`);let s=e.getAttribute("role");return s&&A.push(`role: ${s}`),A.join(". ")}async function oo(e,A){let t=`
|
|
68
69
|
Generate a short, clear aria-label for an HTML element.
|
|
69
70
|
The label must be 2-6 words maximum.
|
|
70
71
|
The label must describe what the element does or what it is.
|
|
@@ -72,10 +73,10 @@ Missing landmarks: ${o.join(", ")}.`:""}`,targets:[],suggestions:o.includes("mai
|
|
|
72
73
|
Do not explain \u2014 just output the label text only.
|
|
73
74
|
|
|
74
75
|
Element details:
|
|
75
|
-
${
|
|
76
|
+
${A}
|
|
76
77
|
|
|
77
78
|
Output only the label. Nothing else.
|
|
78
|
-
`.trim();return(await e.write(
|
|
79
|
+
`.trim();return(await e.write(t)).trim().replace(/^["']|["']$/g,"").replace(/\.$/,"").trim()}async function vn(){if(!await ci())return{success:!1,fixed:0,elements:[],error:"Chrome Built-in AI Writer not available. Enable via chrome://flags."};let A=document.querySelectorAll(no);if(A.length===0)return{success:!0,fixed:0,elements:[]};try{let t=wn();if(!t)throw new Error("Writer API not available");let i=await t.create({tone:"neutral",format:"plain-text",length:"short",outputLanguage:"en"}),o=0,r=[];for(let n of A){if(n.closest("[data-yuktai-panel]"))continue;let a=window.getComputedStyle(n);if(a.display==="none"||a.visibility==="hidden")continue;let s=ro(n),l=await oo(i,s);l&&l.length>0&&(n.dataset.yuktaiLabelOriginal=n.getAttribute("aria-label")||"",n.setAttribute("aria-label",l),o++,r.push({tag:n.tagName.toLowerCase(),label:l}))}return i.destroy(),{success:!0,fixed:o,elements:r}}catch(t){return{success:!1,fixed:0,elements:[],error:t instanceof Error?t.message:"Label generation failed"}}}function xn(){let e=document.querySelectorAll("[data-yuktai-label-original]");for(let A of e){let t=A.dataset.yuktaiLabelOriginal;t?A.setAttribute("aria-label",t):A.removeAttribute("aria-label"),delete A.dataset.yuktaiLabelOriginal}}var gt=null,kn=null;var Dn=null,Ii=null,te=null,gA=null,at=null,di=null,le=null,st={deuteranopia:"yuktai-cb-d",protanopia:"yuktai-cb-p",tritanopia:"yuktai-cb-t"};var Mn=new Set(["input","select","textarea"]);var ui={nav:"navigation",header:"banner",footer:"contentinfo",main:"main",aside:"complementary"};function Ci(e,A="polite"){if(typeof window>"u"||!(le!=null&&le.speechEnabled)||!window.speechSynthesis)return;window.speechSynthesis.cancel();let t=new SpeechSynthesisUtterance(e);t.rate=1,t.pitch=1,t.volume=1;let i=window.speechSynthesis.getVoices();i.length>0&&(t.voice=i[0]),window.speechSynthesis.speak(t)}function Yn(e,A="info"){if(typeof document>"u")return;let i={success:{bg:"#0a7a44",border:"#075e34",icon:"\u2713"},error:{bg:"#b52a1c",border:"#8f2116",icon:"\u2715"},warning:{bg:"#a35f00",border:"#7a4700",icon:"\u26A0"},info:{bg:"#005A9C",border:"#003F6E",icon:"\u2139"}}[A];te||(te=document.createElement("div"),te.setAttribute("role","alert"),te.setAttribute("aria-live","assertive"),te.setAttribute("aria-atomic","true"),te.style.cssText=`
|
|
79
80
|
position: fixed;
|
|
80
81
|
top: 80px;
|
|
81
82
|
right: 16px;
|
|
@@ -94,14 +95,14 @@ Missing landmarks: ${o.join(", ")}.`:""}`,targets:[],suggestions:o.includes("mai
|
|
|
94
95
|
transition: transform 0.3s, opacity 0.3s;
|
|
95
96
|
transform: translateX(120%);
|
|
96
97
|
opacity: 0;
|
|
97
|
-
`,document.body.appendChild(
|
|
98
|
-
<span style="font-size:18px;font-weight:700">${
|
|
98
|
+
`,document.body.appendChild(te)),te.style.background=i.bg,te.style.border=`1px solid ${i.border}`,te.style.color="#fff",te.innerHTML=`
|
|
99
|
+
<span style="font-size:18px;font-weight:700">${i.icon}</span>
|
|
99
100
|
<span style="flex:1;line-height:1.4">${e}</span>
|
|
100
101
|
<button
|
|
101
102
|
onclick="this.parentElement.style.transform='translateX(120%)';this.parentElement.style.opacity='0'"
|
|
102
103
|
style="background:none;border:none;color:#fff;cursor:pointer;font-size:18px;padding:0;line-height:1"
|
|
103
104
|
aria-label="Close notification">\xD7</button>
|
|
104
|
-
`,window.innerWidth<=480&&(
|
|
105
|
+
`,window.innerWidth<=480&&(te.style.right="8px",te.style.left="8px",te.style.maxWidth="none",te.style.width="auto"),requestAnimationFrame(()=>{te&&(te.style.transform="translateX(0)",te.style.opacity="1")}),setTimeout(()=>{te&&(te.style.transform="translateX(120%)",te.style.opacity="0")},5e3)}function z(e,A="info",t=!0){gt&&(gt.textContent=e),Yn(e,A),t&&Ci(e,A==="error"?"assertive":"polite")}function ao(){if(typeof document>"u"||Dn)return;let e=[{label:"Skip to main content",selector:"main,[role='main'],#main,#main-content"},{label:"Skip to navigation",selector:"nav,[role='navigation'],#nav,#navigation"},{label:"Skip to search",selector:"[role='search'],#search,input[type='search']"}],A=document.createElement("div");A.setAttribute("data-yuktai-skip-bar","true"),A.setAttribute("role","navigation"),A.setAttribute("aria-label","Skip links"),A.style.cssText=`
|
|
105
106
|
position: fixed;
|
|
106
107
|
top: 0;
|
|
107
108
|
left: 0;
|
|
@@ -115,7 +116,7 @@ Missing landmarks: ${o.join(", ")}.`:""}`,targets:[],suggestions:o.includes("mai
|
|
|
115
116
|
transform: translateY(-100%);
|
|
116
117
|
transition: transform 0.2s ease;
|
|
117
118
|
font-family: system-ui, sans-serif;
|
|
118
|
-
`;let
|
|
119
|
+
`;let t=!1;if(e.forEach(({label:o,selector:r})=>{let n=document.querySelector(r);if(!n)return;t=!0,n.getAttribute("tabindex")||n.setAttribute("tabindex","-1");let a=document.createElement("a");a.href="#",a.textContent=o,a.style.cssText=`
|
|
119
120
|
color: #fff;
|
|
120
121
|
background: #005A9C;
|
|
121
122
|
padding: 8px 14px;
|
|
@@ -126,7 +127,7 @@ Missing landmarks: ${o.join(", ")}.`:""}`,targets:[],suggestions:o.includes("mai
|
|
|
126
127
|
white-space: nowrap;
|
|
127
128
|
border: 2px solid transparent;
|
|
128
129
|
transition: background 0.15s, border-color 0.15s;
|
|
129
|
-
`,
|
|
130
|
+
`,a.addEventListener("focus",()=>{A.style.transform="translateY(0)"}),a.addEventListener("blur",()=>{setTimeout(()=>{A.matches(":focus-within")||(A.style.transform="translateY(-100%)")},2e3)}),a.addEventListener("click",s=>{s.preventDefault(),n.focus(),n.scrollIntoView({behavior:"smooth",block:"start"}),z(`Jumped to ${o.replace("Skip to ","")}`,"info"),A.style.transform="translateY(-100%)"}),A.appendChild(a)}),!t)return;window.innerWidth<768&&(A.style.transform="translateY(0)",A.style.position="sticky"),window.addEventListener("resize",()=>{window.innerWidth<768&&(A.style.transform="translateY(0)")}),document.body.insertBefore(A,document.body.firstChild),Dn=A}function so(){if(typeof document>"u"||document.querySelector("[data-yuktai-focus-style]"))return;let e=document.createElement("style");e.setAttribute("data-yuktai-focus-style","true"),e.textContent=`
|
|
130
131
|
|
|
131
132
|
/* \u2500\u2500 Focus indicator \u2014 WCAG 2.4.11 minimum 2px solid \u2500\u2500 */
|
|
132
133
|
[data-yuktai-a11y] *:focus-visible {
|
|
@@ -272,7 +273,7 @@ Missing landmarks: ${o.join(", ")}.`:""}`,targets:[],suggestions:o.includes("mai
|
|
|
272
273
|
width: auto !important;
|
|
273
274
|
}
|
|
274
275
|
}
|
|
275
|
-
`,document.head.appendChild(e),document.documentElement.setAttribute("data-yuktai-a11y","true")}function
|
|
276
|
+
`,document.head.appendChild(e),document.documentElement.setAttribute("data-yuktai-a11y","true")}function go(){typeof document>"u"||document.querySelector("[data-yuktai-kb-init]")||(document.documentElement.setAttribute("data-yuktai-kb-init","true"),document.addEventListener("keydown",e=>{var i,o,r,n,a,s,l;let A=document.activeElement;if(!A)return;let t=A.getAttribute("role")||"";if(e.key==="Escape"){let I=A.closest("[role='dialog'],[role='alertdialog']");if(I){I.style.display="none",z("Dialog closed","info");return}let u=A.closest("[role='menu'],[role='menubar']");u&&(u.style.display="none",z("Menu closed","info"))}if(t==="menuitem"||A.closest("[role='menu'],[role='menubar']")){let I=A.closest("[role='menu'],[role='menubar']");if(!I)return;let u=Array.from(I.querySelectorAll("[role='menuitem']:not([disabled])")),m=u.indexOf(A);e.key==="ArrowDown"||e.key==="ArrowRight"?(e.preventDefault(),(i=u[(m+1)%u.length])==null||i.focus()):e.key==="ArrowUp"||e.key==="ArrowLeft"?(e.preventDefault(),(o=u[(m-1+u.length)%u.length])==null||o.focus()):e.key==="Home"?(e.preventDefault(),(r=u[0])==null||r.focus()):e.key==="End"&&(e.preventDefault(),(n=u[u.length-1])==null||n.focus())}if(t==="tab"||A.closest("[role='tablist']")){let I=A.closest("[role='tablist']");if(!I)return;let u=Array.from(I.querySelectorAll("[role='tab']:not([disabled])")),m=u.indexOf(A);if(e.key==="ArrowRight"||e.key==="ArrowDown"){e.preventDefault();let c=u[(m+1)%u.length];c==null||c.focus(),c==null||c.click()}else if(e.key==="ArrowLeft"||e.key==="ArrowUp"){e.preventDefault();let c=u[(m-1+u.length)%u.length];c==null||c.focus(),c==null||c.click()}}if(t==="option"||A.closest("[role='listbox']")){let I=A.closest("[role='listbox']");if(!I)return;let u=Array.from(I.querySelectorAll("[role='option']:not([aria-disabled='true'])")),m=u.indexOf(A);e.key==="ArrowDown"?(e.preventDefault(),(a=u[(m+1)%u.length])==null||a.focus()):e.key==="ArrowUp"?(e.preventDefault(),(s=u[(m-1+u.length)%u.length])==null||s.focus()):(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),A.setAttribute("aria-selected","true"),u.forEach(c=>{c!==A&&c.setAttribute("aria-selected","false")}),z(`Selected: ${(l=A.textContent)==null?void 0:l.trim()}`,"success"))}e.altKey&&e.key==="a"&&(e.preventDefault(),lo()),e.key==="Tab"&&(le!=null&&le.speechEnabled)&&setTimeout(()=>{var c;let I=document.activeElement;if(!I)return;let u=I.getAttribute("aria-label")||I.getAttribute("title")||((c=I.textContent)==null?void 0:c.trim())||I.tagName.toLowerCase(),m=I.getAttribute("role")||I.tagName.toLowerCase();Ci(`${u}, ${m}`)},100)}))}function lt(e){let A=e.querySelectorAll('button:not([disabled]),a[href],input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"]),[role="button"]');if(A.length===0)return;let t=A[0],i=A[A.length-1];t.focus(),e.addEventListener("keydown",o=>{o.key==="Tab"&&(o.shiftKey?document.activeElement===t&&(o.preventDefault(),i.focus()):document.activeElement===i&&(o.preventDefault(),t.focus()))})}function lo(){if(typeof document>"u")return;if(gA){gA.remove(),gA=null;return}let e=document.createElement("div");e.setAttribute("role","dialog"),e.setAttribute("aria-label","Keyboard shortcuts"),e.setAttribute("aria-modal","true"),e.setAttribute("data-yuktai-cheatsheet","true"),e.style.cssText=`
|
|
276
277
|
position: fixed;
|
|
277
278
|
top: 50%;
|
|
278
279
|
left: 50%;
|
|
@@ -287,7 +288,7 @@ Missing landmarks: ${o.join(", ")}.`:""}`,targets:[],suggestions:o.includes("mai
|
|
|
287
288
|
overflow-y: auto;
|
|
288
289
|
box-shadow: 0 20px 60px rgba(0,0,0,0.5);
|
|
289
290
|
font-family: system-ui, sans-serif;
|
|
290
|
-
`;let
|
|
291
|
+
`;let A=[["Alt + A","Open/close this menu"],["Tab","Next focusable element"],["Shift+Tab","Previous focusable element"],["Enter","Activate button or link"],["Space","Check checkbox / scroll"],["Arrow keys","Navigate lists and menus"],["Escape","Close dialog or menu"],["Home","First item in list"],["End","Last item in list"]];e.innerHTML=`
|
|
291
292
|
<div style="display:flex;align-items:center;justify-content:space-between;margin-bottom:16px">
|
|
292
293
|
<h2 style="margin:0;font-size:16px;font-weight:700;color:#74c0fc">
|
|
293
294
|
\u2328 Keyboard shortcuts
|
|
@@ -296,18 +297,18 @@ Missing landmarks: ${o.join(", ")}.`:""}`,targets:[],suggestions:o.includes("mai
|
|
|
296
297
|
style="background:none;border:none;color:#aaa;cursor:pointer;font-size:20px;padding:0;line-height:1"
|
|
297
298
|
aria-label="Close shortcuts">\xD7</button>
|
|
298
299
|
</div>
|
|
299
|
-
${
|
|
300
|
+
${A.map(([i,o])=>`
|
|
300
301
|
<div style="display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid #2a2a4a">
|
|
301
|
-
<kbd style="background:#2a2a4a;color:#74c0fc;padding:3px 8px;border-radius:4px;font-size:12px;font-family:monospace;border:1px solid #3a3a6a">${
|
|
302
|
-
<span style="font-size:12px;color:#ccc;text-align:right;flex:1;margin-left:12px">${
|
|
302
|
+
<kbd style="background:#2a2a4a;color:#74c0fc;padding:3px 8px;border-radius:4px;font-size:12px;font-family:monospace;border:1px solid #3a3a6a">${i}</kbd>
|
|
303
|
+
<span style="font-size:12px;color:#ccc;text-align:right;flex:1;margin-left:12px">${o}</span>
|
|
303
304
|
</div>
|
|
304
305
|
`).join("")}
|
|
305
|
-
`;let
|
|
306
|
+
`;let t=e.querySelector("[data-yuktai-close]");t==null||t.addEventListener("click",()=>{e.remove(),gA=null}),e.addEventListener("keydown",i=>{i.key==="Escape"&&(e.remove(),gA=null)}),document.body.appendChild(e),gA=e,lt(e),z("Keyboard shortcuts opened. Press Escape to close.","info")}function co(e){if(typeof document>"u"||!(le!=null&&le.showAuditBadge)||typeof window<"u"&&!window.location.hostname.includes("localhost")&&!window.location.hostname.includes("127.0.0.1"))return;Ii&&Ii.remove();let A=e.score,t=A>=90?"#0f9d58":A>=70?"#f29900":"#d93025",i=A>=90?"\u267F":A>=70?"\u26A0":"\u2715",o=document.createElement("button");o.setAttribute("aria-label",`Accessibility score: ${A} out of 100`),o.setAttribute("data-yuktai-badge","true"),o.style.cssText=`
|
|
306
307
|
position: fixed;
|
|
307
308
|
bottom: 16px;
|
|
308
309
|
left: 16px;
|
|
309
310
|
z-index: 999998;
|
|
310
|
-
background: ${
|
|
311
|
+
background: ${t};
|
|
311
312
|
color: #fff;
|
|
312
313
|
border: none;
|
|
313
314
|
border-radius: 20px;
|
|
@@ -321,7 +322,7 @@ Missing landmarks: ${o.join(", ")}.`:""}`,targets:[],suggestions:o.includes("mai
|
|
|
321
322
|
align-items: center;
|
|
322
323
|
gap: 6px;
|
|
323
324
|
transition: transform 0.15s;
|
|
324
|
-
`,
|
|
325
|
+
`,o.innerHTML=`${i} ${A}/100 <span style="font-weight:400;opacity:0.85">${e.details.length} issues</span>`,o.addEventListener("click",()=>Io(e)),document.body.appendChild(o),Ii=o}function Io(e){let A=document.querySelector("[data-yuktai-audit-details]");if(A){A.remove();return}let t=document.createElement("div");t.setAttribute("data-yuktai-audit-details","true"),t.setAttribute("role","dialog"),t.setAttribute("aria-label","Accessibility audit details"),t.style.cssText=`
|
|
325
326
|
position: fixed;
|
|
326
327
|
bottom: 56px;
|
|
327
328
|
left: 16px;
|
|
@@ -338,22 +339,22 @@ Missing landmarks: ${o.join(", ")}.`:""}`,targets:[],suggestions:o.includes("mai
|
|
|
338
339
|
box-shadow: 0 8px 32px rgba(0,0,0,0.5);
|
|
339
340
|
font-family: system-ui, sans-serif;
|
|
340
341
|
font-size: 12px;
|
|
341
|
-
`;let
|
|
342
|
+
`;let i={critical:"#d93025",serious:"#f29900",moderate:"#1a73e8",minor:"#0f9d58"};t.innerHTML=`
|
|
342
343
|
<div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:12px">
|
|
343
344
|
<strong style="font-size:14px;color:#74c0fc">Audit report</strong>
|
|
344
345
|
<span style="color:#aaa">${e.fixed} fixed \xB7 ${e.renderTime}ms</span>
|
|
345
346
|
</div>
|
|
346
|
-
${e.details.slice(0,20).map(
|
|
347
|
+
${e.details.slice(0,20).map(o=>`
|
|
347
348
|
<div style="padding:6px 0;border-bottom:1px solid #2a2a4a">
|
|
348
349
|
<div style="display:flex;gap:6px;align-items:center">
|
|
349
|
-
<span style="background:${
|
|
350
|
-
<code style="color:#74c0fc"><${
|
|
350
|
+
<span style="background:${i[o.severity]};color:#fff;padding:1px 6px;border-radius:4px;font-size:10px;font-weight:700;text-transform:uppercase">${o.severity}</span>
|
|
351
|
+
<code style="color:#74c0fc"><${o.tag}></code>
|
|
351
352
|
</div>
|
|
352
|
-
<div style="color:#ccc;margin-top:3px">${
|
|
353
|
+
<div style="color:#ccc;margin-top:3px">${o.fix}</div>
|
|
353
354
|
</div>
|
|
354
355
|
`).join("")}
|
|
355
356
|
${e.details.length>20?`<div style="color:#888;padding:8px 0;text-align:center">+${e.details.length-20} more issues</div>`:""}
|
|
356
|
-
`,
|
|
357
|
+
`,t.addEventListener("keydown",o=>{o.key==="Escape"&&t.remove()}),document.body.appendChild(t),lt(t)}function Un(e){typeof document>"u"||(di&&clearTimeout(di),di=setTimeout(()=>{if(at)return;let A=document.createElement("div");A.setAttribute("role","alertdialog"),A.setAttribute("aria-label","Session timeout warning"),A.setAttribute("aria-modal","true"),A.setAttribute("data-yuktai-timeout","true"),A.style.cssText=`
|
|
357
358
|
position: fixed;
|
|
358
359
|
top: 50%;
|
|
359
360
|
left: 50%;
|
|
@@ -367,7 +368,7 @@ Missing landmarks: ${o.join(", ")}.`:""}`,targets:[],suggestions:o.includes("mai
|
|
|
367
368
|
box-shadow: 0 20px 60px rgba(0,0,0,0.4);
|
|
368
369
|
font-family: system-ui, sans-serif;
|
|
369
370
|
border: 2px solid #d93025;
|
|
370
|
-
`,
|
|
371
|
+
`,A.innerHTML=`
|
|
371
372
|
<h2 style="margin:0 0 8px;font-size:18px;color:#d93025">\u23F1 Session timeout</h2>
|
|
372
373
|
<p style="margin:0 0 16px;font-size:14px;line-height:1.5;color:#444">
|
|
373
374
|
Your session will expire soon. Do you need more time?
|
|
@@ -382,22 +383,22 @@ Missing landmarks: ${o.join(", ")}.`:""}`,targets:[],suggestions:o.includes("mai
|
|
|
382
383
|
No, sign out
|
|
383
384
|
</button>
|
|
384
385
|
</div>
|
|
385
|
-
`;let
|
|
386
|
+
`;let t=A.querySelector("[data-yuktai-extend]"),i=A.querySelector("[data-yuktai-dismiss]");t==null||t.addEventListener("click",()=>{A.remove(),at=null,z("Session extended. You have more time.","success"),le!=null&&le.timeoutWarning&&Un(le.timeoutWarning)}),i==null||i.addEventListener("click",()=>{A.remove(),at=null}),document.body.appendChild(A),at=A,lt(A),z("Warning: Your session will expire soon. Do you need more time?","warning")},e*1e3))}function uo(e){if(typeof document>"u")return;let A=document.documentElement;if(A.toggleAttribute("data-yuktai-high-contrast",!!e.highContrast),A.toggleAttribute("data-yuktai-dark",!!e.darkMode),A.toggleAttribute("data-yuktai-reduce-motion",!!e.reduceMotion),A.toggleAttribute("data-yuktai-large-targets",!!e.largeTargets),A.toggleAttribute("data-yuktai-keyboard",!!e.keyboardHints),A.toggleAttribute("data-yuktai-dyslexia",!!e.dyslexiaFont),e.localFont?document.body.style.fontFamily=`"${e.localFont}", system-ui, sans-serif`:e.dyslexiaFont||(document.body.style.fontFamily=""),e.fontSizeMultiplier&&e.fontSizeMultiplier!==1?document.documentElement.style.fontSize=`${e.fontSizeMultiplier*100}%`:document.documentElement.style.fontSize="",e.colorBlindMode&&e.colorBlindMode!=="none"){let t=e.colorBlindMode==="achromatopsia"?"grayscale(100%)":`url(#${st[e.colorBlindMode]})`;document.body.style.filter=t}else document.body.style.filter=""}function Co(e){try{let A=localStorage.getItem("yuktai-a11y-prefs");A&&Object.assign(e,JSON.parse(A))}catch{}}async function Sn(e){if(e){if(!await oi()){z("Plain English requires Chrome 127+","warning");return}z("Rewriting page in plain English...","info",!1);let t=await un();z(t.error?`Plain English failed: ${t.error}`:`${t.fixed} sections rewritten in plain English`,t.error?"error":"success",!1)}else Cn(),z("Original text restored","info",!1)}async function Gn(e){if(e){if(!await ai()){z("Page summariser requires Chrome 127+","warning");return}z("Generating page summary...","info",!1);let t=await yn();z(t.error?`Summary failed: ${t.error}`:"Page summary added at top",t.error?"error":"success",!1)}else nt(),z("Page summary removed","info",!1)}async function Nn(e){if(e==="en"){si(),z("Page restored to English","info",!1);return}z(`Translating page to ${e}...`,"info",!1);let A=await fn(e);z(A.error?`Translation failed: ${A.error}`:`Page translated to ${e}`,A.error?"error":"success",!1)}async function Fn(e){if(e){if(!gi()){z("Voice control not supported in this browser","warning");return}Bn(A=>{A.success&&z(`Voice: ${A.action}`,"info",!1)}),z("Voice control started. Say a command.","success",!1)}else li(),z("Voice control stopped","info",!1)}async function Rn(e){if(e){if(!await ci()){z("Smart labels requires Chrome 127+","warning");return}z("Generating smart labels...","info",!1);let t=await vn();z(t.error?`Smart labels failed: ${t.error}`:`${t.fixed} elements labelled`,t.error?"error":"success",!1)}else xn(),z("Smart labels removed","info",!1)}function ho(){if(typeof document>"u"||gt)return;let e=document.createElement("div");e.setAttribute("aria-live","polite"),e.setAttribute("aria-atomic","true"),e.setAttribute("aria-relevant","text"),e.style.cssText="position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);",document.body.appendChild(e),gt=e}function po(){if(typeof document>"u"||kn)return;let e=document.createElementNS("http://www.w3.org/2000/svg","svg");e.setAttribute("aria-hidden","true"),e.style.cssText="position:absolute;width:0;height:0;overflow:hidden;",e.innerHTML=`
|
|
386
387
|
<defs>
|
|
387
|
-
<filter id="${
|
|
388
|
+
<filter id="${st.deuteranopia}">
|
|
388
389
|
<feColorMatrix type="matrix"
|
|
389
390
|
values="0.625 0.375 0 0 0 0.7 0.3 0 0 0 0 0.3 0.7 0 0 0 0 0 1 0"/>
|
|
390
391
|
</filter>
|
|
391
|
-
<filter id="${
|
|
392
|
+
<filter id="${st.protanopia}">
|
|
392
393
|
<feColorMatrix type="matrix"
|
|
393
394
|
values="0.567 0.433 0 0 0 0.558 0.442 0 0 0 0 0.242 0.758 0 0 0 0 0 1 0"/>
|
|
394
395
|
</filter>
|
|
395
|
-
<filter id="${
|
|
396
|
+
<filter id="${st.tritanopia}">
|
|
396
397
|
<feColorMatrix type="matrix"
|
|
397
398
|
values="0.95 0.05 0 0 0 0 0.433 0.567 0 0 0 0.475 0.525 0 0 0 0 0 1 0"/>
|
|
398
399
|
</filter>
|
|
399
400
|
</defs>
|
|
400
|
-
`,document.body.appendChild(e),hi=e}function Ci(e){var t,n,r;return(t=e.getAttribute("aria-label"))!=null&&t.trim()||e.getAttribute("aria-labelledby")||(n=e.getAttribute("title"))!=null&&n.trim()||(r=e.textContent)!=null&&r.trim()?!0:!!e.querySelector("img[alt]:not([alt='']), svg[aria-label], svg title, [aria-label]")}function xi(e){let t={critical:20,serious:10,moderate:5,minor:2},n=e.details.reduce((r,a)=>r+(t[a.severity]||0),0);return Math.max(0,Math.min(100,100-n))}var Je={name:"yuktai-a11y",version:"4.0.0",observer:null,async execute(e){if(!e.enabled)return this.stopObserver(),"yuktai: disabled.";de=e,ta(e),na(),ra(),Vo(),_o(),e.showSkipLinks!==!1&&Ko(),e.showPreferencePanel,ea(e);let t=this.applyFixes(e);t.score=xi(t),e.showAuditBadge&&Xo(t),e.timeoutWarning&&Ei(e.timeoutWarning),e.autoFix&&this.startObserver(e),e.plainEnglish&&await yi(!0),e.summarisePage&&await bi(!0),e.translateLanguage&&e.translateLanguage!=="en"&&await wi(e.translateLanguage),e.voiceControl&&await vi(!0),e.smartLabels&&await Ii(!0);let n=`${t.fixed} fixes applied. Score: ${t.score}/100.`;return J(n,t.score>=90?"success":"info",!1),`yuktai v4.0.0: ${n} Scanned ${t.scanned} elements in ${t.renderTime}ms.`},applyFixes(e){let t={fixed:0,scanned:0,renderTime:0,score:100,details:[]};if(typeof document>"u")return t;let n=performance.now(),r=document.querySelectorAll("*");t.scanned=r.length;let a=(i,o,l,s)=>{t.details.push({tag:i,fix:o,severity:l,element:s.outerHTML.slice(0,100)}),t.fixed++};return r.forEach(i=>{var A,m;let o=i,l=o.tagName.toLowerCase();if(l==="html"&&!o.getAttribute("lang")&&(o.setAttribute("lang","en"),a(l,'lang="en" added',"critical",o)),l==="meta"){let f=o.getAttribute("name"),u=o.getAttribute("content")||"";f==="viewport"&&u.includes("user-scalable=no")&&(o.setAttribute("content",u.replace("user-scalable=no","user-scalable=yes")),a(l,"user-scalable=yes restored","serious",o)),f==="viewport"&&/maximum-scale=1(?:[^0-9]|$)/.test(u)&&(o.setAttribute("content",u.replace(/maximum-scale=1(?=[^0-9]|$)/,"maximum-scale=5")),a(l,"maximum-scale=5 restored","serious",o))}if(l==="main"&&!o.getAttribute("tabindex")&&(o.setAttribute("tabindex","-1"),o.getAttribute("id")||o.setAttribute("id","main-content")),l==="img"&&(o.hasAttribute("alt")||(o.setAttribute("alt",""),o.setAttribute("aria-hidden","true"),a(l,'alt="" aria-hidden="true"',"serious",o))),l==="svg"&&(!o.getAttribute("aria-hidden")&&!o.getAttribute("aria-label")&&!i.querySelector("title")&&(o.setAttribute("aria-hidden","true"),a(l,'aria-hidden="true" (decorative svg)',"minor",o)),o.getAttribute("focusable")||o.setAttribute("focusable","false")),l==="iframe"&&!o.getAttribute("title")&&!o.getAttribute("aria-label")&&(o.setAttribute("title","embedded content"),o.setAttribute("aria-label","embedded content"),a(l,"title + aria-label added","serious",o)),l==="button"){if(!Ci(o)){let f=o.getAttribute("title")||"button";o.setAttribute("aria-label",f),a(l,`aria-label="${f}" (empty button)`,"critical",o)}o.hasAttribute("disabled")&&!o.getAttribute("aria-disabled")&&(o.setAttribute("aria-disabled","true"),t.fixed++)}if(l==="a"){let f=o;Ci(o)||(o.setAttribute("aria-label",o.getAttribute("title")||"link"),a(l,"aria-label added (empty link)","critical",o)),f.target==="_blank"&&!((A=f.rel)!=null&&A.includes("noopener"))&&(f.rel="noopener noreferrer",t.fixed++)}if(fi.has(l)){let f=o;if(!(!!(f.labels&&f.labels.length)||!!o.getAttribute("title")||f.type==="hidden"||f.type==="submit"||f.type==="button"||f.type==="reset")&&!o.getAttribute("aria-label")&&!o.getAttribute("aria-labelledby")){let k=o.getAttribute("placeholder")||o.getAttribute("name")||l;o.setAttribute("aria-label",k),a(l,`aria-label="${k}"`,"serious",o)}if(o.hasAttribute("required")&&!o.getAttribute("aria-required")&&(o.setAttribute("aria-required","true"),t.fixed++),l==="input"&&!f.autocomplete){let k=f.name||"",b=f.type==="email"||k.includes("email")?"email":f.type==="tel"||k.includes("tel")?"tel":f.type==="password"?"current-password":"";b&&(f.autocomplete=b,t.fixed++)}}l==="th"&&!o.getAttribute("scope")&&(o.setAttribute("scope",o.closest("thead")?"col":"row"),a(l,"scope added to <th>","moderate",o));let s=(l==="header"||l==="footer")&&!!((m=o.parentElement)!=null&&m.closest("article,aside,main,nav,section,[role='dialog'],[role='region']"));lr[l]&&!o.getAttribute("role")&&!s&&(o.setAttribute("role",lr[l]),a(l,`role="${lr[l]}"`,"minor",o));let d=o.getAttribute("role")||"";d==="tab"&&!o.getAttribute("aria-selected")&&(o.setAttribute("aria-selected","false"),t.fixed++),["alert","status","log"].includes(d)&&!o.getAttribute("aria-live")&&(o.setAttribute("aria-live",d==="alert"?"assertive":"polite"),a(l,`aria-live added on role=${d}`,"moderate",o)),d==="combobox"&&!o.getAttribute("aria-expanded")&&(o.setAttribute("aria-expanded","false"),a(l,'aria-expanded="false" on combobox',"serious",o)),(d==="checkbox"||d==="radio")&&!o.getAttribute("aria-checked")&&(o.setAttribute("aria-checked","false"),a(l,`aria-checked="false" on role=${d}`,"serious",o))}),t.renderTime=parseFloat((performance.now()-n).toFixed(2)),t},scan(){let e={fixed:0,scanned:0,renderTime:0,score:100,details:[]};if(typeof document>"u")return e;let t=performance.now(),n=document.querySelectorAll("*");e.scanned=n.length;let r=(a,i,o,l)=>e.details.push({tag:a,fix:i,severity:o,element:l.outerHTML.slice(0,100)});return n.forEach(a=>{var l;let i=a,o=i.tagName.toLowerCase();(o==="a"||o==="button")&&!((l=i.innerText)!=null&&l.trim())&&!i.getAttribute("aria-label")&&r(o,"needs aria-label (empty)","critical",i),o==="img"&&!i.hasAttribute("alt")&&r(o,"needs alt text","serious",i),fi.has(o)&&!i.getAttribute("aria-label")&&!i.getAttribute("aria-labelledby")&&r(o,"needs aria-label","serious",i),o==="iframe"&&!i.getAttribute("title")&&!i.getAttribute("aria-label")&&r(o,"iframe needs title","serious",i)}),e.fixed=e.details.length,e.score=xi(e),e.renderTime=parseFloat((performance.now()-t).toFixed(2)),e},startObserver(e){this.observer||typeof document>"u"||(this.observer=new MutationObserver(()=>this.applyFixes(e)),this.observer.observe(document.body,{childList:!0,subtree:!0,attributes:!1}))},stopObserver(){var e;(e=this.observer)==null||e.disconnect(),this.observer=null},announce:J,speak:cr,showVisualAlert:ki,trapFocus:an,handlePlainEnglish:yi,handleSummarisePage:bi,handleTranslate:wi,handleVoiceControl:vi,handleSmartLabels:Ii,SUPPORTED_LANGUAGES:ai};var ia=/\b(off|disable|stop|remove|no more|turn off|switch off|deactivate)\b|ఆఫ్|ఆపు|తీసివేయి|बंद/i,oa=[{pattern:/high contrast|contrast|హై కాంట్రాస్ట్|కాంట్రాస్ట్/i,key:"highContrast",name:"High contrast"},{pattern:/dark mode|dark theme|night mode|డార్క్ మోడ్|చీకటి/i,key:"darkMode",name:"Dark mode"},{pattern:/reduce motion|less motion|stop animation|animations?|కదలికలు/i,key:"reduceMotion",name:"Reduced motion"},{pattern:/large targets?|bigger buttons?|big buttons?|larger buttons?|పెద్ద బటన్/i,key:"largeTargets",name:"Large targets"},{pattern:/dyslexia|readable font|easy font/i,key:"dyslexiaFont",name:"Dyslexia-friendly font"},{pattern:/speak on focus|read aloud|read out|screen reader|speech|చదివి వినిపించు/i,key:"speechEnabled",name:"Speak on focus"},{pattern:/skip links?/i,key:"showSkipLinks",name:"Skip links"}],aa=[[/deuteranop|green.?blind/i,"deuteranopia"],[/protanop|red.?blind/i,"protanopia"],[/tritanop|blue.?blind/i,"tritanopia"],[/grey ?scale|gray ?scale|achromat|black and white/i,"achromatopsia"]],sn=.1,dr=.8,ur=1.3;function Ar(e,t={}){let n=e.trim().toLowerCase();if(!n)return null;if(/\b(next|down)\s+(row|line|record|item)\b|తర్వాతి (వరుస|అంశం)/.test(n))return{type:"grid",action:"next-row",say:"Next row."};if(/\b(previous|prev|back|up)\s+(row|line|record|item)\b|ముందరి (వరుస|అంశం)|వెనుక (వరుస|అంశం)/.test(n))return{type:"grid",action:"previous-row",say:"Previous row."};if(/\bfirst\s+(row|record|item)\b|మొదటి (వరుస|అంశం)/.test(n))return{type:"grid",action:"first-row",say:"First row."};if(/\blast\s+(row|record|item)\b|చివరి (వరుస|అంశం)/.test(n))return{type:"grid",action:"last-row",say:"Last row."};if(/\b(open|expand|read)\s+(this\s+)?(row|record|item)\b|ఈ (వరుస|అంశం) తెరువు/.test(n))return{type:"grid",action:"open-row",say:"Opening row."};if(/\b(reset|default|restore)\b.*\b(settings?|accessibility|everything|all)\b|^reset$|రీసెట్/.test(n))return{type:"reset",say:"Accessibility settings reset."};let r=t.fontSizeMultiplier??1,a=o=>Math.round(Math.min(ur,Math.max(dr,o))*100)/100;if(/\b(bigger|larger|increase|zoom in)\b.*\b(text|font|letters?)\b|\b(text|font)\b.*\b(bigger|larger|up)\b|పెద్ద అక్షరాలు|అక్షరాలు పెద్ద/.test(n)){let o=a(r+sn);return{type:"setting",patch:{fontSizeMultiplier:o},say:`Text size ${Math.round(o*100)}%.`}}if(/\b(smaller|decrease|reduce|zoom out)\b.*\b(text|font|letters?)\b|\b(text|font)\b.*\b(smaller|down)\b|చిన్న అక్షరాలు|అక్షరాలు చిన్న/.test(n)){let o=a(r-sn);return{type:"setting",patch:{fontSizeMultiplier:o},say:`Text size ${Math.round(o*100)}%.`}}if(/\b(normal|default|reset)\b.*\b(text|font)\s*(size)?\b/.test(n))return{type:"setting",patch:{fontSizeMultiplier:1},say:"Text size 100%."};let i=ia.test(n);for(let[o,l]of aa)if(o.test(n))return i?{type:"setting",patch:{colorBlindMode:"none"},say:"Colour filter off."}:{type:"setting",patch:{colorBlindMode:l},say:`${l} filter on.`};if(/colou?r.?blind/.test(n)&&i)return{type:"setting",patch:{colorBlindMode:"none"},say:"Colour filter off."};for(let o of oa){if(!o.pattern.test(n))continue;let l=/\btoggle\b/.test(n)?!t[o.key]:!i;return o.key==="reduceMotion"&&!/reduce motion|less motion|కదలికలు తగ్గించు/.test(n)&&/animations?/.test(n)&&(l=i||/\bno\b/.test(n)),{type:"setting",patch:{[o.key]:l},say:`${o.name} ${l?"on":"off"}.`}}return null}var ct={highContrast:!1,darkMode:!1,reduceMotion:!1,largeTargets:!1,dyslexiaFont:!1,speechEnabled:!1,colorBlindMode:"none",fontSizeMultiplier:1};function gr(e,t={}){var d,A;if(!Ce())return null;let n=t.root??document,r=t.rowSelector??"[data-yuktai-row-id], [role='row']",a=Array.from(n.querySelectorAll(r)).filter(m=>!m.querySelector("th,[role='columnheader']"));if(!a.length)return null;let i=(d=document.activeElement)==null?void 0:d.closest(r),o=i?a.indexOf(i):-1;if(e==="open-row"){let m=o>=0?a[o]:a[0];return m.click(),m}let l=e==="first-row"?0:e==="last-row"?a.length-1:e==="next-row"?Math.min(a.length-1,o+1):Math.max(0,o-1),s=a[l];return s.hasAttribute("tabindex")||s.setAttribute("tabindex","-1"),s.focus(),(A=s.scrollIntoView)==null||A.call(s,{block:"nearest"}),s}function ln(e={}){let t={enabled:!0,...ct,...e.initial},n=null,r=!1,a=async d=>e.apply?e.apply(d):Je.execute(d),i=d=>{if(e.speak===!1||!Ce()||!("speechSynthesis"in window))return;let A=new SpeechSynthesisUtterance(d);A.lang=e.lang??"en-IN",window.speechSynthesis.cancel(),window.speechSynthesis.speak(A)};async function o(d){var m;let A=Ar(d,t);if((m=e.onTranscript)==null||m.call(e,d,A),!A)return null;if(A.type==="grid"){let f=gr(A.action,{root:e.gridRoot});return i(f?A.say:"No table rows found."),A}return t=A.type==="reset"?{...t,...ct}:{...t,...A.patch},await a(t),i(A.say),A}function l(){if(!Ce()||r)return r;let d=window,A=d.SpeechRecognition??d.webkitSpeechRecognition;return A?(n=new A,n.lang=e.lang??"en-IN",n.continuous=!0,n.interimResults=!1,n.onresult=m=>{var k;let f=m.results,u=f[f.length-1];(k=u==null?void 0:u[0])!=null&&k.transcript&&o(u[0].transcript)},n.onend=()=>{r&&(n==null||n.start())},n.onerror=m=>{(m.error==="not-allowed"||m.error==="service-not-allowed")&&(r=!1)},r=!0,n.start(),!0):!1}function s(){r=!1,n==null||n.stop(),n=null}return{start:l,stop:s,handle:o,isListening:()=>r,getConfig:()=>({...t})}}function Si(){let e=new Set;return{subscribe(t){return e.add(t),()=>e.delete(t)},emit(t){e.forEach(n=>{try{n(t)}catch(r){console.error("[yuktai] listener failed",r)}})}}}var hr=e=>e instanceof Error?e:new Error(String(e)),sa={en:{done:"Done.",toolMissing:e=>`The action "${e}" is not available here.`,missingInput:e=>`Missing: ${e}.`,notUnderstood:"Sorry, I didn't understand. Try: a word to search, \u201Csort by <column>\u201D, or \u201Cclear filters\u201D.",noMatch:e=>`Nothing matched "${e}".`,failed:"Something went wrong while running this action."},te:{done:"\u0C2A\u0C42\u0C30\u0C4D\u0C24\u0C2F\u0C3F\u0C02\u0C26\u0C3F.",toolMissing:e=>`"${e}" \u0C38\u0C4C\u0C15\u0C30\u0C4D\u0C2F\u0C02 \u0C07\u0C15\u0C4D\u0C15\u0C21 \u0C05\u0C02\u0C26\u0C41\u0C2C\u0C3E\u0C1F\u0C41\u0C32\u0C4B \u0C32\u0C47\u0C26\u0C41.`,missingInput:e=>`\u0C07\u0C35\u0C3F \u0C15\u0C3E\u0C35\u0C3E\u0C32\u0C3F: ${e}.`,notUnderstood:"\u0C15\u0C4D\u0C37\u0C2E\u0C3F\u0C02\u0C1A\u0C02\u0C21\u0C3F, \u0C05\u0C30\u0C4D\u0C25\u0C02 \u0C15\u0C3E\u0C32\u0C47\u0C26\u0C41. \u0C07\u0C32\u0C3E \u0C2A\u0C4D\u0C30\u0C2F\u0C24\u0C4D\u0C28\u0C3F\u0C02\u0C1A\u0C02\u0C21\u0C3F: \u0C35\u0C46\u0C24\u0C15\u0C3E\u0C32\u0C4D\u0C38\u0C3F\u0C28 \u0C2A\u0C26\u0C02, \u201C<\u0C15\u0C3E\u0C32\u0C2E\u0C4D> \u0C2A\u0C4D\u0C30\u0C15\u0C3E\u0C30\u0C02 \u0C15\u0C4D\u0C30\u0C2E\u0C02\u201D, \u0C32\u0C47\u0C26\u0C3E \u201C\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D\u0C32\u0C41 \u0C24\u0C40\u0C38\u0C47\u0C2F\u0C3F\u201D.",noMatch:e=>`"${e}" \u0C15\u0C3F \u0C0F\u0C2E\u0C40 \u0C38\u0C30\u0C3F\u0C2A\u0C4B\u0C32\u0C47\u0C26\u0C41.`,failed:"\u0C08 \u0C2A\u0C28\u0C3F \u0C1A\u0C47\u0C38\u0C4D\u0C24\u0C41\u0C02\u0C21\u0C17\u0C3E \u0C38\u0C2E\u0C38\u0C4D\u0C2F \u0C35\u0C1A\u0C4D\u0C1A\u0C3F\u0C02\u0C26\u0C3F."}},Bi=e=>String(e??"").normalize("NFC").toLowerCase().trim(),$e={clearFilters:/\b(clear|remove|reset)\b.*\bfilters?\b|ఫిల్టర్.*(తీసే|తొలగ)/i,clearSort:/\b(clear|remove|reset)\b.*\bsort(ing)?\b|క్రమం.*(తీసే|తొలగ)/i,count:/^\s*(how many|count)\b|ఎన్ని|లెక్క/i,sort:/\bsort\b|\border by\b|క్రమ|అమర్చ|సార్ట్/i,desc:/\b(desc|descending|z\s*-\s*a|highest|largest|most)\b|అవరోహణ|తగ్గే|పెద్ద|అధిక|చివర|ఎక్కువ నుండి/i,openEn:/^\s*open\s+(.+?)\s*$/i,openTe:/^\s*(.+?)\s*(తెరువు|తెరవండి|తెరవు)\s*$/,searchFiller:/^\s*(search(\s+for)?|find|show(\s+me)?|filter(\s+by)?|look\s+for|వెతుకు|వెతకండి|శోధించు|శోధించండి|చూపించు|చూపించండి)\s+|\s+(వెతుకు|వెతకండి|శోధించు|శోధించండి|చూపించు|చూపించండి)\s*$/gi};function la(e,t){let n=Bi(e),r=null;for(let a of t)for(let i of[a.label,a.key]){let o=Bi(i);o&&n.includes(o)&&(!r||o.length>r.len)&&(r={key:a.key,len:o.length})}return r?r.key:null}function mr(e,t){let n=String(e??"").trim();if(!n)return null;let r=t&&t.columns||[];if($e.clearFilters.test(n))return{kind:"tool",tool:"clear_filters",input:{}};if($e.clearSort.test(n))return{kind:"tool",tool:"clear_sort",input:{}};if($e.count.test(n))return{kind:"tool",tool:"count",input:{}};if($e.sort.test(n)){let o=la(n,r);return o?{kind:"tool",tool:"sort",input:{key:o,direction:$e.desc.test(n)?"desc":"asc"}}:null}let a=n.match($e.openEn)||n.match($e.openTe);if(a&&a[1])return{kind:"open",text:a[1].trim()};let i=n.replace($e.searchFiller,"").trim();return i?{kind:"tool",tool:"search",input:{query:i}}:null}function ca(e){return!!e&&typeof e=="object"&&typeof e.success=="boolean"&&typeof e.message=="string"}function da(e,t){let n=e.inputSchema&&e.inputSchema.required;return Array.isArray(n)?n.map(String).filter(r=>t[r]===void 0||t[r]===null||String(t[r]).trim()===""):[]}function ua(e,t){let n=e.find(a=>a.name===t);if(n)return n;let r=e.filter(a=>a.name.endsWith(`_${t}`)).sort((a,i)=>a.name.length-i.name.length);if(r.length&&!(r.length>1&&r[0].name.length===r[1].name.length))return r[0]}var Qi=e=>String(e??"").normalize("NFC").trim().toLocaleLowerCase();function Aa(e,t){let n=Qi(e);return(t||[]).find(r=>(r.phrases||[]).some(a=>{let i=Qi(a);return i.length>0&&n.includes(i)}))}function cn(e={}){let t=Q=>typeof Q=="function"?Q():Q,n={locale:"en",rowKey:"id",historyLimit:20,customRules:[],...e},r=Si(),a=0,i=null,o=null,l=[],s=0,d=()=>sa[n.locale==="te"?"te":"en"],A=()=>t(n.tools)||[],m=()=>({loading:a>0,lastResult:i,lastError:o,history:l.slice()}),f=()=>r.emit(m());function u(Q,I,h,w,y){y===s&&(i=h),l=[...l,{id:y,tool:Q,input:I,result:h,source:w,at:Date.now()}].slice(-n.historyLimit),f()}async function k(Q,I,h){let w=++s,y=ua(A(),Q);if(!y){let C={success:!1,message:d().toolMissing(Q),error:{code:"NOT_SUPPORTED"}};return o=new Error(C.message),n.onError&&n.onError(o),u(Q,I,C,h,w),C}let S=da(y,I);if(S.length){let C={success:!1,message:d().missingInput(S.join(", ")),error:{code:"INVALID_INPUT"},tool:y.name};return u(y.name,I,C,h,w),n.onResult&&n.onResult(C),C}a++,f();try{let C=await y.execute(I),B=ca(C)?{...C,tool:y.name}:{success:!0,message:d().done,data:C,tool:y.name};return B.success&&(o=null),u(y.name,I,B,h,w),n.onResult&&n.onResult(B),B}catch(C){o=hr(C);let B={success:!1,message:d().failed,error:{code:"INTERNAL"},tool:y.name};return n.onError&&n.onError(o),u(y.name,I,B,h,w),B}finally{a=Math.max(0,a-1),f()}}let b=(Q,I={})=>k(Q,I||{},"tool");async function p(Q){let I=t(n.columns)||[],h=Aa(Q,n.customRules);if(h){let C=++s;try{let B=await h.execute({input:Q,data:t(n.data)||[],columns:I,executeTool:b}),D={success:!0,message:String(B??d().done),tool:`rule:${h.name}`};return u(`rule:${h.name}`,{text:Q},D,"ask",C),n.onResult&&n.onResult(D),D}catch(B){o=hr(B),n.onError&&n.onError(o);let D={success:!1,message:d().failed,error:{code:"INTERNAL"},tool:`rule:${h.name}`};return u(`rule:${h.name}`,{text:Q},D,"ask",C),D}}let w=(n.parseIntent||mr)(Q,{columns:I,locale:n.locale});if(!w){let C={success:!1,message:d().notUnderstood,error:{code:"NOT_UNDERSTOOD"}};return u("ask",{text:Q},C,"ask",++s),C}if(w.kind==="tool")return k(w.tool,w.input,"ask");let y=await k("search",{query:w.text},"ask");if(!y.success)return y;let S=Array.isArray(y.data)?y.data:[];if(!S.length){let C={success:!1,message:d().noMatch(w.text),error:{code:"NOT_FOUND"},tool:y.tool};return u("open",{text:w.text},C,"ask",++s),C}return k("open",{id:re(S[0],n.rowKey)},"ask")}function E(){l=[],i=null,o=null,f()}return{ask:p,executeTool:b,clearHistory:E,subscribe:r.subscribe,getState:m,get tools(){return A()},get loading(){return a>0},get lastResult(){return i},get lastError(){return o},get history(){return l.slice()}}}function dn(e,t={}){let n=()=>(typeof e=="function"?e():e)||[],r=l=>{a.status=l,t.onStatusChange&&t.onStatusChange(l)},a={status:{state:"unsupported",registered:[],errors:[]},done:Promise.resolve(),unregister(){o.abort()}},i=typeof document<"u"?document.modelContext:void 0,o=new AbortController;return!i||typeof i.registerTool!="function"?(r({state:"unsupported",registered:[],errors:[]}),a):(a.done=(async()=>{r({state:"registering",registered:[],errors:[]});let l=[],s=[];for(let d of n()){if(o.signal.aborted)return;try{await i.registerTool({name:d.name,title:d.title,description:d.description,inputSchema:d.inputSchema,execute:A=>{let m=n().find(f=>f.name===d.name);return m?m.execute(A||{}):{success:!1,message:`Tool "${d.name}" is no longer available.`,error:{code:"NOT_SUPPORTED"}}}},{signal:o.signal}),l.push(d.name)}catch(A){s.push({tool:d.name,message:hr(A).message})}}o.signal.aborted||r({state:s.length===0?"ready":l.length?"partial":"error",registered:l,errors:s})})(),a)}var ga=/\b(trend|over time|this (week|month|quarter|year)|last (week|month|quarter|year)|compare|versus|vs)\b|\b(by|per|each|which)\b.*\b(total|average|avg|sum|drop|increase|growth|highest|lowest|most|least)\b|\b(total|average|avg|sum)\b.*\b(by|per|each)\b/i,pa={filters:[],search:[],sort:null,limit:null,notes:[],explanation:""};function un(e={}){let t=Si(),n=e.rowKey||"id",r=e.bind||null,a=Array.isArray(e.data)?e.data:[],i=Re(e.columns||[]),o={filters:[],sort:null,highlightIds:[]},l="",s=null,d=[],A=[],m=!1,f=()=>r?r.getFilters():o.filters,u=()=>r?r.getSort():o.sort,k=()=>r?r.getHighlightIds():o.highlightIds,b=()=>r?r.getData():a,p=D=>r?r.setFilters(D):o={...o,filters:D},E=D=>r?r.setSort(D):o={...o,sort:D},Q=D=>r?r.setHighlightIds(D):o={...o,highlightIds:D};function I(){return Te(b(),i,{...pa,filters:f(),sort:u()})}let h=()=>{let D=I();return{gridData:D,highlightIds:k().slice(),filters:f().slice(),sort:u(),answer:l,kind:s,table:d.slice(),steps:A.slice(),busy:m,visibleIds:D.map(x=>re(x,n))}},w=()=>t.emit(h()),y=()=>({get data(){return b()},columns:i,rowKey:n,get filters(){return f()},onFiltersChange:D=>{p(D),w()},onSortChange:D=>{E(D),w()},onHighlightRows:D=>{Q(D),w()},onOpenRow:e.onOpenRow,onSelectRow:D=>{r&&r.selectRow?r.selectRow(D):Q([D]),w()}});async function S(D){let x=String(D??"").trim();if(!x)return h();m=!0,A=[],d=[],w();try{if(wt(x).length>1){let M=[],G=await Yt(x,y(),{onStep:N=>{M.push(N),A=M.slice(),w()}});s="tasks",l=G.summary}else if(ga.test(x)){let M=Ee(b(),i,f()),G=qt(x,M,i,{referenceDate:e.referenceDate});s="insight",l=G.answer,d=G.table||[]}else{let M=zt(x,y());s=M.kind,l=M.message}}catch(M){console.error("[yuktai] ask failed",M),s=null,l="Something went wrong while answering. Please rephrase the question."}finally{m=!1,w()}return h()}function C(){p([]),E(null),Q([]),l="",s=null,d=[],A=[],w()}function B(D={}){Array.isArray(D.data)&&(a=D.data),Array.isArray(D.columns)&&(i=Re(D.columns)),w()}return{ask:S,reset:C,update:B,subscribe:t.subscribe,getState:h,get gridData(){return I()},get highlightIds(){return k().slice()},get filters(){return f().slice()},get sort(){return u()},get answer(){return l},get kind(){return s},get table(){return d.slice()},get steps(){return A.slice()},get busy(){return m},get visibleIds(){return I().map(D=>re(D,n))}}}var dt={accessibility:'<circle cx="12" cy="4" r="2"/><path d="M4 8l8-1 8 1M12 7v5m-5 9 5-8 5 8M7 12l-2 5m12-5 2 5"/>',contrast:'<circle cx="12" cy="12" r="9"/><path d="M12 3a9 9 0 0 0 0 18z"/>',moon:'<path d="M20 14.5A8.5 8.5 0 0 1 9.5 4 8.5 8.5 0 1 0 20 14.5z"/>',motion:'<path d="M4 12h12m-5-5 5 5-5 5M20 5v14"/>',reading:'<path d="M4 5h16M4 10h12M4 15h16M4 20h10"/>',target:'<circle cx="12" cy="12" r="9"/><circle cx="12" cy="12" r="4"/>',speaker:'<path d="M4 9v6h4l5 4V5L8 9H4z"/><path d="M16 9a4 4 0 0 1 0 6M18.5 6.5a8 8 0 0 1 0 11"/>',palette:'<circle cx="12" cy="12" r="9"/><circle cx="8" cy="10" r="1.3"/><circle cx="12" cy="7.5" r="1.3"/><circle cx="16" cy="10" r="1.3"/><path d="M12 21a3 3 0 0 1 0-6h2"/>',skip:'<path d="M5 5l7 7-7 7M13 5l7 7-7 7"/>',close:'<path d="m18 6-12 12M6 6l12 12"/>',plus:'<path d="M12 5v14M5 12h14"/>',minus:'<path d="M5 12h14"/>',reset:'<path d="M3 12a9 9 0 1 0 3-6.7L3 8"/><path d="M3 3v5h5"/>',search:'<circle cx="11" cy="11" r="6.5"/><path d="m16 16 5 5"/>',sort:'<path d="m8 9 4-4 4 4m-8 6 4 4 4-4"/>',sortUp:'<path d="m6 15 6-6 6 6"/>',sortDown:'<path d="m6 9 6 6 6-6"/>',chevrons:'<path d="m8 9 4-4 4 4m-8 6 4 4 4-4"/>',grid:'<rect x="3" y="3" width="7" height="7" rx="1"/><rect x="14" y="3" width="7" height="7" rx="1"/><rect x="3" y="14" width="7" height="7" rx="1"/><rect x="14" y="14" width="7" height="7" rx="1"/>',cards:'<rect x="3" y="4" width="18" height="7" rx="1.5"/><rect x="3" y="13" width="18" height="7" rx="1.5"/>',chat:'<path d="M21 11.5a8.5 8.5 0 0 1-8.5 8.5 9 9 0 0 1-4-.9L3 21l1.9-5.5a9 9 0 0 1-.9-4A8.5 8.5 0 0 1 12.5 3H13a8.5 8.5 0 0 1 8 8z"/>',mic:'<rect x="9" y="2" width="6" height="12" rx="3"/><path d="M5 10a7 7 0 0 0 14 0M12 17v5m-4 0h8"/>',stop:'<rect x="6" y="6" width="12" height="12" rx="2"/>',download:'<path d="M12 3v12m-5-5 5 5 5-5M4 21h16"/>',copy:'<rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/>',filter:'<path d="M4 5h16l-6 7v6l-4 2v-8z"/>',check:'<path d="m5 12 4 4L19 6"/>',left:'<path d="m15 18-6-6 6-6"/>',right:'<path d="m9 18 6-6-6-6"/>',first:'<path d="m11 18-6-6 6-6M19 18l-6-6 6-6"/>',last:'<path d="m13 18 6-6-6-6M5 18l6-6-6-6"/>',spark:'<path d="m12 3 1.9 5.8L20 11l-6.1 2.2L12 19l-1.9-5.8L4 11l6.1-2.2zM19 14l1.2 2.8L23 18l-2.8 1.2L19 22l-1.2-2.8L15 18l2.8-1.2z"/>',alert:'<path d="m12 3 10 18H2L12 3z"/><path d="M12 9v5m0 3h.01"/>',info:'<circle cx="12" cy="12" r="9"/><path d="M12 11v6m0-9h.01"/>',form:'<rect x="5" y="3" width="14" height="18" rx="2"/><path d="M9 8h6M9 12h6M9 16h3"/>',eye:'<path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z"/><circle cx="12" cy="12" r="3"/>',layout:'<rect x="3" y="3" width="18" height="18" rx="2"/><path d="M3 9h18M9 21V9"/>',wand:'<path d="m15 4 5 5L9 20H4v-5z"/><path d="m13 6 5 5"/>',undo:'<path d="M9 14 4 9l5-5"/><path d="M4 9h10a6 6 0 0 1 0 12h-3"/>',tools:'<path d="M14.7 6.3a4 4 0 0 0-5.4 5.4L3 18l3 3 6.3-6.3a4 4 0 0 0 5.4-5.4l-2.5 2.5-2.4-.6-.6-2.4z"/>',plug:'<path d="M9 2v6M15 2v6M6 8h12v4a6 6 0 0 1-12 0zM12 18v4"/>',home:'<path d="M3 11 12 4l9 7"/><path d="M5 10v10h5v-6h4v6h5V10"/>',menu:'<path d="M4 6h16M4 12h16M4 18h16"/>',book:'<path d="M12 6c-2-1.5-5-2-8-2v14c3 0 6 .5 8 2 2-1.5 5-2 8-2V4c-3 0-6 .5-8 2zM12 6v14"/>',calendar:'<rect x="3" y="5" width="18" height="16" rx="2"/><path d="M3 10h18M8 3v4M16 3v4M7.5 14h2M14.5 14h2M7.5 17.5h2"/>',clock:'<circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 2"/>',person:'<circle cx="12" cy="8" r="4"/><path d="M4 21a8 8 0 0 1 16 0"/>',users:'<circle cx="9" cy="8" r="3.5"/><path d="M2 20a7 7 0 0 1 14 0"/><path d="M16 4.5a3.5 3.5 0 0 1 0 7M18 13.5a7 7 0 0 1 4 6.5"/>',globe:'<circle cx="12" cy="12" r="9"/><path d="M3 12h18M12 3a14 14 0 0 1 0 18M12 3a14 14 0 0 0 0 18"/>',lamp:'<path d="M12 3c2 2.6 3 4.3 3 6a3 3 0 0 1-6 0c0-1.7 1-3.4 3-6z"/><path d="M3 14h18c0 3.5-4 6-9 6s-9-2.5-9-6z"/><path d="M12 12v2"/>',play:'<circle cx="12" cy="12" r="9"/><path d="M10 8.5v7l6-3.5z"/>',pause:'<circle cx="12" cy="12" r="9"/><path d="M10 9v6M14 9v6"/>',send:'<path d="M21 3 3 10.5l7 3 3 7.5z"/><path d="m10 13.5 4.5-4.5"/>',share:'<circle cx="18" cy="5" r="2.5"/><circle cx="6" cy="12" r="2.5"/><circle cx="18" cy="19" r="2.5"/><path d="m8.2 10.8 7.6-4.6M8.2 13.2l7.6 4.6"/>',gift:'<rect x="3" y="8" width="18" height="4" rx="1"/><path d="M5 12v9h14v-9M12 8v13M12 8C10.5 5 7 4 7 6.5S10 8 12 8zm0 0c1.5-3 5-4 5-1.5S14 8 12 8z"/>',image:'<rect x="3" y="4" width="18" height="16" rx="2"/><circle cx="8.5" cy="9.5" r="1.5"/><path d="m21 15-5-5-10 10"/>',file:'<path d="M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z"/><path d="M14 3v5h5M9 13h6M9 17h6"/>',external:'<path d="M14 4h6v6M20 4l-9 9"/><path d="M18 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h5"/>',arrowUp:'<path d="M12 19V5m-6 6 6-6 6 6"/>',arrowLeft:'<path d="M19 12H5m6-6-6 6 6 6"/>',arrowRight:'<path d="M5 12h14m-6-6 6 6-6 6"/>',headphones:'<path d="M4 15v-3a8 8 0 0 1 16 0v3"/><rect x="3" y="14" width="4" height="7" rx="1.5"/><rect x="17" y="14" width="4" height="7" rx="1.5"/>',music:'<path d="M9 18V5l11-2v13"/><circle cx="6" cy="18" r="3"/><circle cx="17" cy="16" r="3"/>',pin:'<path d="M12 21s7-6.2 7-11.5a7 7 0 0 0-14 0C5 14.8 12 21 12 21z"/><circle cx="12" cy="9.5" r="2.5"/>',map:'<path d="M3 6l6-3 6 3 6-3v15l-6 3-6-3-6 3z"/><path d="M9 3v15M15 6v15"/>',pen:'<path d="M12 3 6 9l1.5 8h9L18 9z"/><path d="M12 3v7.5"/><circle cx="12" cy="12" r="1.5"/><path d="M8 21h8"/>',wallet:'<rect x="3" y="7" width="18" height="13" rx="2"/><path d="M16 13.5h2M6 7l9-4 2 4"/>',install:'<rect x="6" y="2" width="12" height="20" rx="2"/><path d="M12 6v8m-3-3 3 3 3-3M10 18h4"/>',help:'<circle cx="12" cy="12" r="9"/><path d="M9.5 9.5a2.5 2.5 0 1 1 3.5 2.3c-.6.3-1 .9-1 1.6v.6M12 17h.01"/>',temple:'<path d="M12 2v2M10 4h4l1 3H9zM8 7h8l1.5 4h-11zM6.5 11h11L19 15H5zM4 15h16v6H4z"/><path d="M10 21v-3a2 2 0 0 1 4 0v3"/>',meditate:'<circle cx="12" cy="4.5" r="2.2"/><path d="M12 8c-2.2 0-3.3 1.3-3.7 3.2L7.5 16M12 8c2.2 0 3.3 1.3 3.7 3.2l.8 4.8"/><path d="M4 18c3 2 5.5 2.4 8 1.2 2.5 1.2 5 .8 8-1.2"/><path d="M7.5 16c1.4 1.4 3 2 4.5 2s3.1-.6 4.5-2"/>',trophy:'<path d="M8 4h8v5a4 4 0 0 1-8 0z"/><path d="M8 6H5a3 3 0 0 0 3 4M16 6h3a3 3 0 0 1-3 4M12 13v4M8 21h8M9 17h6"/>',bulb:'<path d="M9 18h6M10 21h4"/><path d="M12 3a6 6 0 0 0-4 10.5c.7.7 1 1.5 1 2.5h6c0-1 .3-1.8 1-2.5A6 6 0 0 0 12 3z"/>',sun:'<circle cx="12" cy="12" r="4"/><path d="M12 2v2.5M12 19.5V22M4.9 4.9l1.8 1.8M17.3 17.3l1.8 1.8M2 12h2.5M19.5 12H22M4.9 19.1l1.8-1.8M17.3 6.7l1.8-1.8"/>',delete:'<path d="M4 7h16M10 11v6M14 11v6M6 7l1 13a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1l1-13M9 7V4h6v3"/>',robot:'<rect x="4" y="8" width="16" height="12" rx="3"/><path d="M12 8V4M9.5 4h5M2 13v3M22 13v3"/><circle cx="9" cy="14" r="1.3"/><circle cx="15" cy="14" r="1.3"/>',heart:'<path d="M12 20s-7.5-4.6-9.2-9.3A4.9 4.9 0 0 1 12 6.6a4.9 4.9 0 0 1 9.2 4.1C19.5 15.4 12 20 12 20z"/>',heartFilled:'<path fill="currentColor" d="M12 20s-7.5-4.6-9.2-9.3A4.9 4.9 0 0 1 12 6.6a4.9 4.9 0 0 1 9.2 4.1C19.5 15.4 12 20 12 20z"/>',hub:'<circle cx="12" cy="12" r="3"/><circle cx="5" cy="5" r="2"/><circle cx="19" cy="5" r="2"/><circle cx="5" cy="19" r="2"/><circle cx="19" cy="19" r="2"/><path d="m6.5 6.5 3.4 3.4M17.5 6.5l-3.4 3.4M6.5 17.5l3.4-3.4M17.5 17.5l-3.4-3.4"/>',code:'<path d="m8 7-5 5 5 5M16 7l5 5-5 5M14 4l-4 16"/>',text:'<path d="M3 7V5h11v2M8.5 5v14M6.5 19h4M14 12v-1.5h7V12M17.5 10.5V19M16 19h3"/>',bold:'<path d="M7 4h6a4 4 0 0 1 0 8H7zM7 12h7a4 4 0 0 1 0 8H7z"/>',italic:'<path d="M10 4h9M5 20h9M15 4 9 20"/>',underline:'<path d="M7 4v7a5 5 0 0 0 10 0V4M5 21h14"/>',alignLeft:'<path d="M4 5h16M4 9.5h9M4 14h16M4 18.5h9"/>',alignCenter:'<path d="M4 5h16M7.5 9.5h9M4 14h16M7.5 18.5h9"/>',alignRight:'<path d="M4 5h16M11 9.5h9M4 14h16M11 18.5h9"/>',alignJustify:'<path d="M4 5h16M4 9.5h16M4 14h16M4 18.5h16"/>',quote:'<path d="M4 18v-6.5A6.5 6.5 0 0 1 10.5 5M4 12h5.5v6H4zM13.5 18v-6.5A6.5 6.5 0 0 1 20 5M13.5 12H19v6h-5.5z"/>',title:'<path d="M5 6V4h14v2M12 4v16M9 20h6"/>',font:'<rect x="3" y="3" width="18" height="18" rx="3"/><path d="m8 17 4-10 4 10M9.4 13.5h5.2"/>',spellcheck:'<path d="m3 14 4-10 4 10M4.6 10.5h4.8M11 17l3 3 7-7"/>',abc:'<path d="m2 16 2.5-8L7 16M3 13.5h3M9.5 8v8h2.5a2 2 0 0 0 0-4H9.5h2a2 2 0 0 0 0-4H9.5M21 9.4a3.1 3.1 0 1 0 0 5.2"/>',pageBreak:'<path d="M6 3v5h12V3M6 21v-5h12v5M3 12h3M9 12h6M18 12h3"/>',link:'<path d="M10 14a4 4 0 0 0 5.7 0l3-3a4 4 0 0 0-5.7-5.7l-1 1"/><path d="M14 10a4 4 0 0 0-5.7 0l-3 3a4 4 0 0 0 5.7 5.7l1-1"/>',style:'<rect x="3" y="3" width="7" height="18" rx="2"/><path d="m10 7.5 4.4-2.6a2 2 0 0 1 2.7.7l3.2 5.6a2 2 0 0 1-.7 2.7L10 19"/><circle cx="6.5" cy="17" r="1"/>',lock:'<rect x="5" y="11" width="14" height="10" rx="2"/><path d="M8 11V8a4 4 0 0 1 8 0v3M12 15v2"/>',unlock:'<rect x="5" y="11" width="14" height="10" rx="2"/><path d="M8 11V8a4 4 0 0 1 7.6-1.8M12 15v2"/>',key:'<circle cx="8" cy="15" r="4"/><path d="m11 12 9-9M17 6l3 3M14.5 8.5l2 2"/>',redo:'<path d="m15 14 5-5-5-5"/><path d="M20 9H10a6 6 0 0 0 0 12h3"/>',swap:'<path d="M7 4 3 8l4 4M3 8h14M17 12l4 4-4 4M21 16H7"/>',shuffle:'<path d="M16 3h5v5M4 20 21 3M21 16v5h-5M15 15l6 6M4 4l5 5"/>',fullscreen:'<path d="M4 9V4h5M15 4h5v5M20 15v5h-5M9 20H4v-5"/>',fullscreenExit:'<path d="M9 4v5H4M20 9h-5V4M15 20v-5h5M4 15h5v5"/>',merge:'<circle cx="6" cy="5" r="2"/><circle cx="6" cy="19" r="2"/><circle cx="18" cy="12" r="2"/><path d="M6 7v10M6 7c0 4 4 5 10 5"/>',join:'<circle cx="9" cy="12" r="6"/><circle cx="15" cy="12" r="6"/>',touch:'<path d="M9 11V5a1.5 1.5 0 0 1 3 0v6M12 10a1.5 1.5 0 0 1 3 0v1M15 11a1.5 1.5 0 0 1 3 0v3c0 4-2.5 7-6 7-2.5 0-4-1-5.5-3.5L4.6 14a1.5 1.5 0 0 1 2.5-1.6L9 15"/>',volumeOff:'<path d="M4 9v6h4l5 4V5L8 9H4z"/><path d="m16.5 9.5 5 5M21.5 9.5l-5 5"/>',musicOff:'<path d="M9 13v5M9 7V5l11-2v9"/><circle cx="6" cy="18" r="3"/><path d="M3 3l18 18"/>',musicVideo:'<rect x="3" y="4" width="18" height="16" rx="2"/><path d="M10.5 15V8.5l5-1V13"/><circle cx="9" cy="15" r="1.5"/><circle cx="14" cy="13" r="1.5"/>',movie:'<rect x="3" y="9" width="18" height="11" rx="2"/><path d="m3.5 9-.6-3 16.6-3.4.6 3L3.5 9zM8.5 4.8l1.8 2.9M13.8 3.7l1.8 2.9"/>',slideshow:'<rect x="3" y="4" width="18" height="13" rx="2"/><path d="M10 8v5l4-2.5zM8 21h8M12 17v4"/>',storage:'<ellipse cx="12" cy="5" rx="8" ry="3"/><path d="M4 5v14c0 1.7 3.6 3 8 3s8-1.3 8-3V5M4 12c0 1.7 3.6 3 8 3s8-1.3 8-3"/>',api:'<path d="M3 17v-6a2.5 2.5 0 0 1 5 0v6M3 14h5M11 17V7h2.5a2.5 2.5 0 0 1 0 5H11M18 7h3M19.5 7v10M18 17h3"/>',dataObject:'<path d="M8 4H7a2 2 0 0 0-2 2v4l-2 2 2 2v4a2 2 0 0 0 2 2h1M16 4h1a2 2 0 0 1 2 2v4l2 2-2 2v4a2 2 0 0 1-2 2h-1"/>',computer:'<rect x="3" y="4" width="18" height="12" rx="2"/><path d="M8 20h8M12 16v4"/>',phone:'<rect x="6" y="2" width="12" height="20" rx="2"/><path d="M10.5 18.5h3"/>',cloud:'<path d="M7 19a5 5 0 0 1-.6-10A6.5 6.5 0 0 1 18.6 9.5 4.8 4.8 0 0 1 17.5 19z"/>',wifi:'<path d="M2 9a15 15 0 0 1 20 0M5 12.5a10 10 0 0 1 14 0M8.5 16a5 5 0 0 1 7 0M12 19.5h.01"/>',wifiOff:'<path d="M2 9a15 15 0 0 1 20 0M5 12.5a10 10 0 0 1 14 0M8.5 16a5 5 0 0 1 7 0M12 19.5h.01M3 3l18 18"/>',searchOff:'<circle cx="11" cy="11" r="6.5"/><path d="m16 16 5 5M8.7 8.7l4.6 4.6M13.3 8.7l-4.6 4.6"/>',eyeOff:'<path d="M10.6 5.1A10 10 0 0 1 12 5c6.5 0 10 7 10 7a17 17 0 0 1-2.2 3.2M6.6 6.6C3.8 8.4 2 12 2 12s3.5 7 10 7a9.7 9.7 0 0 0 5.4-1.6M9.9 9.9a3 3 0 0 0 4.2 4.2M3 3l18 18"/>',bookmark:'<path d="M6 3h12v18l-6-4-6 4z"/>',school:'<path d="m2 9 10-5 10 5-10 5z"/><path d="M6 11v5c0 1.5 2.7 3 6 3s6-1.5 6-3v-5M22 9v6"/>',gavel:'<path d="m13 3.5 7.5 7.5M10 6.5l7.5 7.5M11.5 5l7 7-3 3-7-7zM10 11.5 3.5 18a1.4 1.4 0 0 0 2 2L12 13.5M13 21h8"/>',architecture:'<circle cx="12" cy="5" r="2"/><path d="M12 3V2M11 7 5.5 21M13 7l5.5 14M8 15h8"/>',brain:'<path d="M11 5.5A3 3 0 0 0 5.6 7 3 3 0 0 0 4 12a3 3 0 0 0 1.6 5A3 3 0 0 0 11 18.5zM13 5.5A3 3 0 0 1 18.4 7 3 3 0 0 1 20 12a3 3 0 0 1-1.6 5 3 3 0 0 1-5.4 1.5z"/><path d="M8 10h3M13 14h3"/>',volunteer:'<path d="M12 11s-3.5-2.2-3.5-4.6a1.8 1.8 0 0 1 3.5-.7 1.8 1.8 0 0 1 3.5.7C15.5 8.8 12 11 12 11z"/><path d="M2 15h3l3.5 1.5H13a1.5 1.5 0 0 1 0 3H9.5M5 21l1.5-1.5H14l5.5-4a1.6 1.6 0 0 0-2-2.4L14 15.6"/>',radio:'<circle cx="12" cy="12" r="9"/>',radioChecked:'<circle cx="12" cy="12" r="9"/><circle cx="12" cy="12" r="4" fill="currentColor"/>',upload:'<path d="M12 15V3m-5 5 5-5 5 5M4 21h16"/>',arrowDown:'<path d="M12 5v14m-6-6 6 6 6-6"/>',factCheck:'<rect x="3" y="4" width="18" height="16" rx="2"/><path d="M7 9h4M7 13h4M7 17h2M13.5 13l2 2 3.5-3.5"/>',imageSearch:'<path d="M13 4H5a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-4"/><path d="m3 17 5-5 4 4"/><circle cx="17" cy="7" r="3"/><path d="m19.2 9.2 2.3 2.3"/>',documentScanner:'<path d="M3 7V4a1 1 0 0 1 1-1h3M17 3h3a1 1 0 0 1 1 1v3M21 17v3a1 1 0 0 1-1 1h-3M7 21H4a1 1 0 0 1-1-1v-3"/><path d="M7 8h10M7 12h10M7 16h6"/>',dashboard:'<rect x="3" y="3" width="8" height="10" rx="1.5"/><rect x="13" y="3" width="8" height="6" rx="1.5"/><rect x="3" y="15" width="8" height="6" rx="1.5"/><path d="M17 13v8M13 17h8"/>',cleaning:'<path d="m20 3-7.5 7.5"/><path d="M12.5 10.5c-2.5-1.6-6-1-7.4 1.7L3 20.5c3.2 1 7.2.4 10.2-1.6l.7-5.3c-.1-1.3-.6-2.3-1.4-3.1z"/><path d="M7.5 15.5 6 20.5M10.5 15l-1 5"/>',dragHandle:'<path d="M5 9h14M5 15h14"/>',zoomIn:'<circle cx="11" cy="11" r="6.5"/><path d="m16 16 5 5M8 11h6M11 8v6"/>',zoomOut:'<circle cx="11" cy="11" r="6.5"/><path d="m16 16 5 5M8 11h6"/>',insights:'<path d="m3 18 5-5 4 3 6-7"/><path d="M15 9h3v3"/><path d="m19 2.5.7 1.8 1.8.7-1.8.7-.7 1.8-.7-1.8-1.8-.7 1.8-.7z"/>',explore:'<circle cx="12" cy="12" r="9"/><path d="m15.5 8.5-2 5-5 2 2-5z"/>',save:'<path d="M5 3h11l5 5v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z"/><path d="M7 3v5h8V3M7 21v-7h10v7"/>',label:'<path d="M4 6h11l5 6-5 6H4z"/>',keyboard:'<rect x="2" y="6" width="20" height="12" rx="2"/><path d="M6 10h.01M10 10h.01M14 10h.01M18 10h.01M6 14h.01M18 14h.01M9 14h6"/>',trendingUp:'<path d="m3 17 6-6 4 4 8-8"/><path d="M15 7h6v6"/>',trendingDown:'<path d="m3 7 6 6 4-4 8 8"/><path d="M15 17h6v-6"/>',cake:'<path d="M4 21h16M5 21v-7a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v7M5 16.5c1.5 1 2.5 1 3.5 0s2.5-1 3.5 0 2.5 1 3.5 0 2.5-1 3.5 0M12 12V8.5M12 6c-.9-.9-.9-2 0-3.3.9 1.3.9 2.4 0 3.3z"/>',barChart:'<path d="M4 20h16M7 20v-6M12 20V5M17 20V10"/>',admin:'<path d="M12 3 4 6v6c0 4.5 3.4 8 8 9 4.6-1 8-4.5 8-9V6z"/><circle cx="12" cy="10" r="2.5"/><path d="M8 16.5c1-1.8 2.4-2.5 4-2.5s3 .7 4 2.5"/>',bugReport:'<rect x="7" y="8" width="10" height="12" rx="5"/><path d="M9 8.5a3 3 0 0 1 6 0M12 12v8M7 13H3M21 13h-4M7 17l-3 1.5M17 17l3 1.5M7.5 10 5 8M16.5 10 19 8"/>',sentimentSad:'<circle cx="12" cy="12" r="9"/><path d="M8 16.5c1-1.4 2.4-2 4-2s3 .6 4 2M9 9.5h.01M15 9.5h.01"/>',integration:'<rect x="5" y="4" width="14" height="17" rx="2"/><path d="M9 4V3h6v1M10 11l-2 2 2 2M14 11l2 2-2 2"/>',namaskar:'<path d="M12 5.5V15M12 5.5c-.6-1.7-2.4-2.2-3.1-.9L7.2 11.5 4.5 14.5l3 5H10l2-3.5M12 5.5c.6-1.7 2.4-2.2 3.1-.9l1.7 6.9 2.7 3-3 5H14l-2-3.5"/>',sunrise:'<path d="M3 19h18M7 19a5 5 0 0 1 10 0M12 3v6M9.5 5.5 12 3l2.5 2.5M4.9 11.9l1.4 1.4M19.1 11.9l-1.4 1.4M2 16h2M20 16h2"/>',sunset:'<path d="M3 19h18M7 19a5 5 0 0 1 10 0M12 3v6M9.5 6.5 12 9l2.5-2.5M4.9 11.9l1.4 1.4M19.1 11.9l-1.4 1.4M2 16h2M20 16h2"/>',login:'<path d="M14 4h4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-4M10 16l4-4-4-4M14 12H3"/>',logout:'<path d="M10 4H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h4M16 16l4-4-4-4M20 12H9"/>',speed:'<path d="M4.5 18a9 9 0 1 1 15 0"/><path d="m12 14 4-5"/><circle cx="12" cy="14" r="1.2"/>',repeat:'<path d="m17 2 3 3-3 3M4 11V9a4 4 0 0 1 4-4h12M7 22l-3-3 3-3M20 13v2a4 4 0 0 1-4 4H4"/>',loader:'<path d="M12 3v3M12 18v3M5.6 5.6l2.1 2.1M16.3 16.3l2.1 2.1M3 12h3M18 12h3M5.6 18.4l2.1-2.1M16.3 7.7l2.1-2.1"/>',star:'<path d="m12 3 2.8 5.7 6.2.9-4.5 4.4 1.1 6.2L12 17.3l-5.6 2.9 1.1-6.2L3 9.6l6.2-.9z"/>',shieldCheck:'<path d="M12 3 4 6v6c0 4.5 3.4 8 8 9 4.6-1 8-4.5 8-9V6z"/><path d="m8.5 12 2.5 2.5 4.5-4.5"/>'},Rs=Object.keys(dt);var ha=3,fr="#ffffff",Mi="#111827";function Ct(e,t){let n=Fe(e),r=Fe(t);return n&&r?rt(n,r):null}function yr(e){let t=Ct(fr,e),n=Ct(Mi,e);return t===null||n===null||t>=n?fr:Mi}var Ti=new Set;function ma(e,t){Ti.has(e)||(Ti.add(e),typeof console<"u"&&console.warn(`[yuktai icons] ${t}`))}function fa(e={}){let t=e.variant==="filled"?"filled":"outline",n=e.color||"currentColor";if(t==="outline")return{variant:t,color:n,glyph:n,contrast:null};let r=e.glyphColor||yr(n),a=Ct(r,n);return a!==null&&a<ha&&ma(`${r}|${n}`,`glyph ${r} on ${n} is ${a}:1. WCAG 1.4.11 needs at least 3:1 for icons.`),{variant:t,color:n,glyph:r,contrast:a}}var ya="translate(3.6 3.6) scale(0.7)",ba="@media (forced-colors: active){.yi-bg{fill:CanvasText}.yi-glyph{stroke:Canvas;color:Canvas}}",Ge=e=>String(e).replace(/[&<>"']/g,t=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[t]);function Di(e,t={}){let n=dt[e]??dt.spark,r=t.size??20,{variant:a,color:i,glyph:o}=fa(t),l=t.strokeWidth??(a==="filled"?2.4:1.9),d=`<svg xmlns="http://www.w3.org/2000/svg" ${t.label?`role="img" aria-label="${Ge(t.label)}"`:'aria-hidden="true"'} focusable="false" width="${Ge(r)}" height="${Ge(r)}" viewBox="0 0 24 24" fill="none" stroke-linecap="round" stroke-linejoin="round" data-variant="${a}">`;if(a==="outline")return`${d}<g stroke="${Ge(i)}" stroke-width="${l}">${n}</g></svg>`;let A=t.shape==="circle"?`<circle class="yi-bg" cx="12" cy="12" r="12" fill="${Ge(i)}"/>`:`<rect class="yi-bg" width="24" height="24" rx="6" fill="${Ge(i)}"/>`;return`${d}<style>${ba}</style>${A}<g class="yi-glyph" color="${Ge(o)}" stroke="${Ge(o)}" stroke-width="${l}" transform="${ya}">${n}</g></svg>`}var Le=()=>typeof window<"u"&&typeof document<"u";function An(e){return String(e??"").replace(/[&<>"']/g,t=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[t])}function c(e,t,...n){let r=document.createElement(e);if(t)for(let[a,i]of Object.entries(t))i==null||i===!1||(a.startsWith("on")&&typeof i=="function"?r.addEventListener(a.slice(2),i):a==="html"?r.innerHTML=i:a==="text"?r.textContent=i:i===!0?r.setAttribute(a,""):r.setAttribute(a,String(i)));for(let a of n.flat())a==null||a===!1||r.append(a instanceof Node?a:document.createTextNode(String(a)));return r}var wa=0,_=(e="yv")=>`${e}-${++wa}`;function gn(e,t){if(typeof e!="string"||!Le())return t;let n=document.createElement("span");return n.style.color=e,n.style.color?e:t}var br=()=>Le()&&(window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches||document.documentElement.hasAttribute("data-yuktai-reduce-motion")),Ri=Object.keys(dt);function ue(e,t=20,n,r){let a=typeof t=="object"&&t!==null?{...t}:{...r||{},size:t,label:n};return Di(e,a)}function z(e,t,n){let r=document.createElement("span");return r.className="yv-ic",r.innerHTML=ue(e,t,n),r}var We=null;function ae(e){!Le()||!e||((!We||!document.contains(We))&&(We=c("div",{id:"yuktai-vanilla-live",class:"yv-sr",role:"status","aria-live":"polite","aria-atomic":"true"}),document.body.appendChild(We)),We.textContent="",setTimeout(()=>{We&&(We.textContent=String(e).slice(0,300))},30))}function xt(e,t,n="text/plain;charset=utf-8"){let r=URL.createObjectURL(new Blob([t],{type:n})),a=c("a",{href:r,download:e,hidden:!0});document.body.appendChild(a),a.click(),a.remove(),setTimeout(()=>URL.revokeObjectURL(r),1500)}async function Ni(e){try{return await navigator.clipboard.writeText(e),!0}catch{let t=c("textarea",{"aria-hidden":"true",style:"position:fixed;opacity:0;left:-9999px"});t.value=e,document.body.appendChild(t),t.select();let n=!1;try{n=document.execCommand("copy")}catch{n=!1}return t.remove(),n}}function wr(e){let t=String(e??"");return/^[=+\-@\t\r]/.test(t)&&(t="'"+t),'"'+t.replace(/"/g,'""')+'"'}function Fi(e){let t=(e||[]).map(n=>{try{return document.querySelector(n)}catch{return null}}).filter(Boolean);return t.forEach(n=>{n.setAttribute("data-yv-flash",""),setTimeout(()=>n.removeAttribute("data-yv-flash"),4e3)}),t[0]&&t[0].scrollIntoView({block:"center",behavior:br()?"auto":"smooth"}),t.length}function pn(e,t){if(!Le()||document.getElementById("yuktai-vanilla-css"))return;let n=document.createElement("style");n.id="yuktai-vanilla-css",n.textContent=`
|
|
401
|
+
`,document.body.appendChild(e),kn=e}function Tn(e){var A,t,i;return(A=e.getAttribute("aria-label"))!=null&&A.trim()||e.getAttribute("aria-labelledby")||(t=e.getAttribute("title"))!=null&&t.trim()||(i=e.textContent)!=null&&i.trim()?!0:!!e.querySelector("img[alt]:not([alt='']), svg[aria-label], svg title, [aria-label]")}function Ln(e){let A={critical:20,serious:10,moderate:5,minor:2},t=e.details.reduce((i,o)=>i+(A[o.severity]||0),0);return Math.max(0,Math.min(100,100-t))}var ze={name:"yuktai-a11y",version:"4.0.0",observer:null,async execute(e){if(!e.enabled)return this.stopObserver(),"yuktai: disabled.";le=e,Co(e),ho(),po(),so(),go(),e.showSkipLinks!==!1&&ao(),e.showPreferencePanel,uo(e);let A=this.applyFixes(e);A.score=Ln(A),e.showAuditBadge&&co(A),e.timeoutWarning&&Un(e.timeoutWarning),e.autoFix&&this.startObserver(e),e.plainEnglish&&await Sn(!0),e.summarisePage&&await Gn(!0),e.translateLanguage&&e.translateLanguage!=="en"&&await Nn(e.translateLanguage),e.voiceControl&&await Fn(!0),e.smartLabels&&await Rn(!0);let t=`${A.fixed} fixes applied. Score: ${A.score}/100.`;return z(t,A.score>=90?"success":"info",!1),`yuktai v4.0.0: ${t} Scanned ${A.scanned} elements in ${A.renderTime}ms.`},applyFixes(e){let A={fixed:0,scanned:0,renderTime:0,score:100,details:[]};if(typeof document>"u")return A;let t=performance.now(),i=document.querySelectorAll("*");A.scanned=i.length;let o=(r,n,a,s)=>{A.details.push({tag:r,fix:n,severity:a,element:s.outerHTML.slice(0,100)}),A.fixed++};return i.forEach(r=>{var I,u;let n=r,a=n.tagName.toLowerCase();if(a==="html"&&!n.getAttribute("lang")&&(n.setAttribute("lang","en"),o(a,'lang="en" added',"critical",n)),a==="meta"){let m=n.getAttribute("name"),c=n.getAttribute("content")||"";m==="viewport"&&c.includes("user-scalable=no")&&(n.setAttribute("content",c.replace("user-scalable=no","user-scalable=yes")),o(a,"user-scalable=yes restored","serious",n)),m==="viewport"&&/maximum-scale=1(?:[^0-9]|$)/.test(c)&&(n.setAttribute("content",c.replace(/maximum-scale=1(?=[^0-9]|$)/,"maximum-scale=5")),o(a,"maximum-scale=5 restored","serious",n))}if(a==="main"&&!n.getAttribute("tabindex")&&(n.setAttribute("tabindex","-1"),n.getAttribute("id")||n.setAttribute("id","main-content")),a==="img"&&(n.hasAttribute("alt")||(n.setAttribute("alt",""),n.setAttribute("aria-hidden","true"),o(a,'alt="" aria-hidden="true"',"serious",n))),a==="svg"&&(!n.getAttribute("aria-hidden")&&!n.getAttribute("aria-label")&&!r.querySelector("title")&&(n.setAttribute("aria-hidden","true"),o(a,'aria-hidden="true" (decorative svg)',"minor",n)),n.getAttribute("focusable")||n.setAttribute("focusable","false")),a==="iframe"&&!n.getAttribute("title")&&!n.getAttribute("aria-label")&&(n.setAttribute("title","embedded content"),n.setAttribute("aria-label","embedded content"),o(a,"title + aria-label added","serious",n)),a==="button"){if(!Tn(n)){let m=n.getAttribute("title")||"button";n.setAttribute("aria-label",m),o(a,`aria-label="${m}" (empty button)`,"critical",n)}n.hasAttribute("disabled")&&!n.getAttribute("aria-disabled")&&(n.setAttribute("aria-disabled","true"),A.fixed++)}if(a==="a"){let m=n;Tn(n)||(n.setAttribute("aria-label",n.getAttribute("title")||"link"),o(a,"aria-label added (empty link)","critical",n)),m.target==="_blank"&&!((I=m.rel)!=null&&I.includes("noopener"))&&(m.rel="noopener noreferrer",A.fixed++)}if(Mn.has(a)){let m=n;if(!(!!(m.labels&&m.labels.length)||!!n.getAttribute("title")||m.type==="hidden"||m.type==="submit"||m.type==="button"||m.type==="reset")&&!n.getAttribute("aria-label")&&!n.getAttribute("aria-labelledby")){let k=n.getAttribute("placeholder")||n.getAttribute("name")||a;n.setAttribute("aria-label",k),o(a,`aria-label="${k}"`,"serious",n)}if(n.hasAttribute("required")&&!n.getAttribute("aria-required")&&(n.setAttribute("aria-required","true"),A.fixed++),a==="input"&&!m.autocomplete){let k=m.name||"",f=m.type==="email"||k.includes("email")?"email":m.type==="tel"||k.includes("tel")?"tel":m.type==="password"?"current-password":"";f&&(m.autocomplete=f,A.fixed++)}}a==="th"&&!n.getAttribute("scope")&&(n.setAttribute("scope",n.closest("thead")?"col":"row"),o(a,"scope added to <th>","moderate",n));let s=(a==="header"||a==="footer")&&!!((u=n.parentElement)!=null&&u.closest("article,aside,main,nav,section,[role='dialog'],[role='region']"));ui[a]&&!n.getAttribute("role")&&!s&&(n.setAttribute("role",ui[a]),o(a,`role="${ui[a]}"`,"minor",n));let l=n.getAttribute("role")||"";l==="tab"&&!n.getAttribute("aria-selected")&&(n.setAttribute("aria-selected","false"),A.fixed++),["alert","status","log"].includes(l)&&!n.getAttribute("aria-live")&&(n.setAttribute("aria-live",l==="alert"?"assertive":"polite"),o(a,`aria-live added on role=${l}`,"moderate",n)),l==="combobox"&&!n.getAttribute("aria-expanded")&&(n.setAttribute("aria-expanded","false"),o(a,'aria-expanded="false" on combobox',"serious",n)),(l==="checkbox"||l==="radio")&&!n.getAttribute("aria-checked")&&(n.setAttribute("aria-checked","false"),o(a,`aria-checked="false" on role=${l}`,"serious",n))}),A.renderTime=parseFloat((performance.now()-t).toFixed(2)),A},scan(){let e={fixed:0,scanned:0,renderTime:0,score:100,details:[]};if(typeof document>"u")return e;let A=performance.now(),t=document.querySelectorAll("*");e.scanned=t.length;let i=(o,r,n,a)=>e.details.push({tag:o,fix:r,severity:n,element:a.outerHTML.slice(0,100)});return t.forEach(o=>{var a;let r=o,n=r.tagName.toLowerCase();(n==="a"||n==="button")&&!((a=r.innerText)!=null&&a.trim())&&!r.getAttribute("aria-label")&&i(n,"needs aria-label (empty)","critical",r),n==="img"&&!r.hasAttribute("alt")&&i(n,"needs alt text","serious",r),Mn.has(n)&&!r.getAttribute("aria-label")&&!r.getAttribute("aria-labelledby")&&i(n,"needs aria-label","serious",r),n==="iframe"&&!r.getAttribute("title")&&!r.getAttribute("aria-label")&&i(n,"iframe needs title","serious",r)}),e.fixed=e.details.length,e.score=Ln(e),e.renderTime=parseFloat((performance.now()-A).toFixed(2)),e},startObserver(e){this.observer||typeof document>"u"||(this.observer=new MutationObserver(()=>this.applyFixes(e)),this.observer.observe(document.body,{childList:!0,subtree:!0,attributes:!1}))},stopObserver(){var e;(e=this.observer)==null||e.disconnect(),this.observer=null},announce:z,speak:Ci,showVisualAlert:Yn,trapFocus:lt,handlePlainEnglish:Sn,handleSummarisePage:Gn,handleTranslate:Nn,handleVoiceControl:Fn,handleSmartLabels:Rn,SUPPORTED_LANGUAGES:mn};var yo=/\b(off|disable|stop|remove|no more|turn off|switch off|deactivate)\b|ఆఫ్|ఆపు|తీసివేయి|बंद/i,mo=[{pattern:/high contrast|contrast|హై కాంట్రాస్ట్|కాంట్రాస్ట్/i,key:"highContrast",name:"High contrast"},{pattern:/dark mode|dark theme|night mode|డార్క్ మోడ్|చీకటి/i,key:"darkMode",name:"Dark mode"},{pattern:/reduce motion|less motion|stop animation|animations?|కదలికలు/i,key:"reduceMotion",name:"Reduced motion"},{pattern:/large targets?|bigger buttons?|big buttons?|larger buttons?|పెద్ద బటన్/i,key:"largeTargets",name:"Large targets"},{pattern:/dyslexia|readable font|easy font/i,key:"dyslexiaFont",name:"Dyslexia-friendly font"},{pattern:/speak on focus|read aloud|read out|screen reader|speech|చదివి వినిపించు/i,key:"speechEnabled",name:"Speak on focus"},{pattern:/skip links?/i,key:"showSkipLinks",name:"Skip links"}],fo=[[/deuteranop|green.?blind/i,"deuteranopia"],[/protanop|red.?blind/i,"protanopia"],[/tritanop|blue.?blind/i,"tritanopia"],[/grey ?scale|gray ?scale|achromat|black and white/i,"achromatopsia"]],ct=.1,hi=.8,pi=1.3;function yi(e,A={}){let t=e.trim().toLowerCase();if(!t)return null;if(/\b(next|down)\s+(row|line|record|item)\b|తర్వాతి (వరుస|అంశం)/.test(t))return{type:"grid",action:"next-row",say:"Next row."};if(/\b(previous|prev|back|up)\s+(row|line|record|item)\b|ముందరి (వరుస|అంశం)|వెనుక (వరుస|అంశం)/.test(t))return{type:"grid",action:"previous-row",say:"Previous row."};if(/\bfirst\s+(row|record|item)\b|మొదటి (వరుస|అంశం)/.test(t))return{type:"grid",action:"first-row",say:"First row."};if(/\blast\s+(row|record|item)\b|చివరి (వరుస|అంశం)/.test(t))return{type:"grid",action:"last-row",say:"Last row."};if(/\b(open|expand|read)\s+(this\s+)?(row|record|item)\b|ఈ (వరుస|అంశం) తెరువు/.test(t))return{type:"grid",action:"open-row",say:"Opening row."};if(/\b(reset|default|restore)\b.*\b(settings?|accessibility|everything|all)\b|^reset$|రీసెట్/.test(t))return{type:"reset",say:"Accessibility settings reset."};let i=A.fontSizeMultiplier??1,o=n=>Math.round(Math.min(pi,Math.max(hi,n))*100)/100;if(/\b(bigger|larger|increase|zoom in)\b.*\b(text|font|letters?)\b|\b(text|font)\b.*\b(bigger|larger|up)\b|పెద్ద అక్షరాలు|అక్షరాలు పెద్ద/.test(t)){let n=o(i+ct);return{type:"setting",patch:{fontSizeMultiplier:n},say:`Text size ${Math.round(n*100)}%.`}}if(/\b(smaller|decrease|reduce|zoom out)\b.*\b(text|font|letters?)\b|\b(text|font)\b.*\b(smaller|down)\b|చిన్న అక్షరాలు|అక్షరాలు చిన్న/.test(t)){let n=o(i-ct);return{type:"setting",patch:{fontSizeMultiplier:n},say:`Text size ${Math.round(n*100)}%.`}}if(/\b(normal|default|reset)\b.*\b(text|font)\s*(size)?\b/.test(t))return{type:"setting",patch:{fontSizeMultiplier:1},say:"Text size 100%."};let r=yo.test(t);for(let[n,a]of fo)if(n.test(t))return r?{type:"setting",patch:{colorBlindMode:"none"},say:"Colour filter off."}:{type:"setting",patch:{colorBlindMode:a},say:`${a} filter on.`};if(/colou?r.?blind/.test(t)&&r)return{type:"setting",patch:{colorBlindMode:"none"},say:"Colour filter off."};for(let n of mo){if(!n.pattern.test(t))continue;let a=/\btoggle\b/.test(t)?!A[n.key]:!r;return n.key==="reduceMotion"&&!/reduce motion|less motion|కదలికలు తగ్గించు/.test(t)&&/animations?/.test(t)&&(a=r||/\bno\b/.test(t)),{type:"setting",patch:{[n.key]:a},say:`${n.name} ${a?"on":"off"}.`}}return null}var lA={highContrast:!1,darkMode:!1,reduceMotion:!1,largeTargets:!1,dyslexiaFont:!1,speechEnabled:!1,colorBlindMode:"none",fontSizeMultiplier:1};function mi(e,A={}){var l,I;if(!Ee())return null;let t=A.root??document,i=A.rowSelector??"[data-yuktai-row-id], [role='row']",o=Array.from(t.querySelectorAll(i)).filter(u=>!u.querySelector("th,[role='columnheader']"));if(!o.length)return null;let r=(l=document.activeElement)==null?void 0:l.closest(i),n=r?o.indexOf(r):-1;if(e==="open-row"){let u=n>=0?o[n]:o[0];return u.click(),u}let a=e==="first-row"?0:e==="last-row"?o.length-1:e==="next-row"?Math.min(o.length-1,n+1):Math.max(0,n-1),s=o[a];return s.hasAttribute("tabindex")||s.setAttribute("tabindex","-1"),s.focus(),(I=s.scrollIntoView)==null||I.call(s,{block:"nearest"}),s}function It(e={}){let A={enabled:!0,...lA,...e.initial},t=null,i=!1,o=async l=>e.apply?e.apply(l):ze.execute(l),r=l=>{if(e.speak===!1||!Ee()||!("speechSynthesis"in window))return;let I=new SpeechSynthesisUtterance(l);I.lang=e.lang??"en-IN",window.speechSynthesis.cancel(),window.speechSynthesis.speak(I)};async function n(l){var u;let I=yi(l,A);if((u=e.onTranscript)==null||u.call(e,l,I),!I)return null;if(I.type==="grid"){let m=mi(I.action,{root:e.gridRoot});return r(m?I.say:"No table rows found."),I}return A=I.type==="reset"?{...A,...lA}:{...A,...I.patch},await o(A),r(I.say),I}function a(){if(!Ee()||i)return i;let l=window,I=l.SpeechRecognition??l.webkitSpeechRecognition;return I?(t=new I,t.lang=e.lang??"en-IN",t.continuous=!0,t.interimResults=!1,t.onresult=u=>{var k;let m=u.results,c=m[m.length-1];(k=c==null?void 0:c[0])!=null&&k.transcript&&n(c[0].transcript)},t.onend=()=>{i&&(t==null||t.start())},t.onerror=u=>{(u.error==="not-allowed"||u.error==="service-not-allowed")&&(i=!1)},i=!0,t.start(),!0):!1}function s(){i=!1,t==null||t.stop(),t=null}return{start:a,stop:s,handle:n,isListening:()=>i,getConfig:()=>({...A})}}function qn(){let e=new Set;return{subscribe(A){return e.add(A),()=>e.delete(A)},emit(A){e.forEach(t=>{try{t(A)}catch(i){console.error("[yuktai] listener failed",i)}})}}}var Qi=e=>e instanceof Error?e:new Error(String(e)),Qo={en:{done:"Done.",toolMissing:e=>`The action "${e}" is not available here.`,missingInput:e=>`Missing: ${e}.`,notUnderstood:"Sorry, I didn't understand. Try: a word to search, \u201Csort by <column>\u201D, or \u201Cclear filters\u201D.",noMatch:e=>`Nothing matched "${e}".`,failed:"Something went wrong while running this action."},te:{done:"\u0C2A\u0C42\u0C30\u0C4D\u0C24\u0C2F\u0C3F\u0C02\u0C26\u0C3F.",toolMissing:e=>`"${e}" \u0C38\u0C4C\u0C15\u0C30\u0C4D\u0C2F\u0C02 \u0C07\u0C15\u0C4D\u0C15\u0C21 \u0C05\u0C02\u0C26\u0C41\u0C2C\u0C3E\u0C1F\u0C41\u0C32\u0C4B \u0C32\u0C47\u0C26\u0C41.`,missingInput:e=>`\u0C07\u0C35\u0C3F \u0C15\u0C3E\u0C35\u0C3E\u0C32\u0C3F: ${e}.`,notUnderstood:"\u0C15\u0C4D\u0C37\u0C2E\u0C3F\u0C02\u0C1A\u0C02\u0C21\u0C3F, \u0C05\u0C30\u0C4D\u0C25\u0C02 \u0C15\u0C3E\u0C32\u0C47\u0C26\u0C41. \u0C07\u0C32\u0C3E \u0C2A\u0C4D\u0C30\u0C2F\u0C24\u0C4D\u0C28\u0C3F\u0C02\u0C1A\u0C02\u0C21\u0C3F: \u0C35\u0C46\u0C24\u0C15\u0C3E\u0C32\u0C4D\u0C38\u0C3F\u0C28 \u0C2A\u0C26\u0C02, \u201C<\u0C15\u0C3E\u0C32\u0C2E\u0C4D> \u0C2A\u0C4D\u0C30\u0C15\u0C3E\u0C30\u0C02 \u0C15\u0C4D\u0C30\u0C2E\u0C02\u201D, \u0C32\u0C47\u0C26\u0C3E \u201C\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D\u0C32\u0C41 \u0C24\u0C40\u0C38\u0C47\u0C2F\u0C3F\u201D.",noMatch:e=>`"${e}" \u0C15\u0C3F \u0C0F\u0C2E\u0C40 \u0C38\u0C30\u0C3F\u0C2A\u0C4B\u0C32\u0C47\u0C26\u0C41.`,failed:"\u0C08 \u0C2A\u0C28\u0C3F \u0C1A\u0C47\u0C38\u0C4D\u0C24\u0C41\u0C02\u0C21\u0C17\u0C3E \u0C38\u0C2E\u0C38\u0C4D\u0C2F \u0C35\u0C1A\u0C4D\u0C1A\u0C3F\u0C02\u0C26\u0C3F."}},Jn=e=>String(e??"").normalize("NFC").toLowerCase().trim(),Te={clearFilters:/\b(clear|remove|reset)\b.*\bfilters?\b|ఫిల్టర్.*(తీసే|తొలగ)/i,clearSort:/\b(clear|remove|reset)\b.*\bsort(ing)?\b|క్రమం.*(తీసే|తొలగ)/i,count:/^\s*(how many|count)\b|ఎన్ని|లెక్క/i,sort:/\bsort\b|\border by\b|క్రమ|అమర్చ|సార్ట్/i,desc:/\b(desc|descending|z\s*-\s*a|highest|largest|most)\b|అవరోహణ|తగ్గే|పెద్ద|అధిక|చివర|ఎక్కువ నుండి/i,openEn:/^\s*open\s+(.+?)\s*$/i,openTe:/^\s*(.+?)\s*(తెరువు|తెరవండి|తెరవు)\s*$/,searchFiller:/^\s*(search(\s+for)?|find|show(\s+me)?|filter(\s+by)?|look\s+for|వెతుకు|వెతకండి|శోధించు|శోధించండి|చూపించు|చూపించండి)\s+|\s+(వెతుకు|వెతకండి|శోధించు|శోధించండి|చూపించు|చూపించండి)\s*$/gi};function Bo(e,A){let t=Jn(e),i=null;for(let o of A)for(let r of[o.label,o.key]){let n=Jn(r);n&&t.includes(n)&&(!i||n.length>i.len)&&(i={key:o.key,len:n.length})}return i?i.key:null}function Bi(e,A){let t=String(e??"").trim();if(!t)return null;let i=A&&A.columns||[];if(Te.clearFilters.test(t))return{kind:"tool",tool:"clear_filters",input:{}};if(Te.clearSort.test(t))return{kind:"tool",tool:"clear_sort",input:{}};if(Te.count.test(t))return{kind:"tool",tool:"count",input:{}};if(Te.sort.test(t)){let n=Bo(t,i);return n?{kind:"tool",tool:"sort",input:{key:n,direction:Te.desc.test(t)?"desc":"asc"}}:null}let o=t.match(Te.openEn)||t.match(Te.openTe);if(o&&o[1])return{kind:"open",text:o[1].trim()};let r=t.replace(Te.searchFiller,"").trim();return r?{kind:"tool",tool:"search",input:{query:r}}:null}function Eo(e){return!!e&&typeof e=="object"&&typeof e.success=="boolean"&&typeof e.message=="string"}function bo(e,A){let t=e.inputSchema&&e.inputSchema.required;return Array.isArray(t)?t.map(String).filter(i=>A[i]===void 0||A[i]===null||String(A[i]).trim()===""):[]}function wo(e,A){let t=e.find(o=>o.name===A);if(t)return t;let i=e.filter(o=>o.name.endsWith(`_${A}`)).sort((o,r)=>o.name.length-r.name.length);if(i.length&&!(i.length>1&&i[0].name.length===i[1].name.length))return i[0]}var Kn=e=>String(e??"").normalize("NFC").trim().toLocaleLowerCase();function vo(e,A){let t=Kn(e);return(A||[]).find(i=>(i.phrases||[]).some(o=>{let r=Kn(o);return r.length>0&&t.includes(r)}))}function dt(e={}){let A=v=>typeof v=="function"?v():v,t={locale:"en",rowKey:"id",historyLimit:20,customRules:[],...e},i=qn(),o=0,r=null,n=null,a=[],s=0,l=()=>Qo[t.locale==="te"?"te":"en"],I=()=>A(t.tools)||[],u=()=>({loading:o>0,lastResult:r,lastError:n,history:a.slice()}),m=()=>i.emit(u());function c(v,E,h,p,y){y===s&&(r=h),a=[...a,{id:y,tool:v,input:E,result:h,source:p,at:Date.now()}].slice(-t.historyLimit),m()}async function k(v,E,h){let p=++s,y=wo(I(),v);if(!y){let Q={success:!1,message:l().toolMissing(v),error:{code:"NOT_SUPPORTED"}};return n=new Error(Q.message),t.onError&&t.onError(n),c(v,E,Q,h,p),Q}let D=bo(y,E);if(D.length){let Q={success:!1,message:l().missingInput(D.join(", ")),error:{code:"INVALID_INPUT"},tool:y.name};return c(y.name,E,Q,h,p),t.onResult&&t.onResult(Q),Q}o++,m();try{let Q=await y.execute(E),x=Eo(Q)?{...Q,tool:y.name}:{success:!0,message:l().done,data:Q,tool:y.name};return x.success&&(n=null),c(y.name,E,x,h,p),t.onResult&&t.onResult(x),x}catch(Q){n=Qi(Q);let x={success:!1,message:l().failed,error:{code:"INTERNAL"},tool:y.name};return t.onError&&t.onError(n),c(y.name,E,x,h,p),x}finally{o=Math.max(0,o-1),m()}}let f=(v,E={})=>k(v,E||{},"tool");async function C(v){let E=A(t.columns)||[],h=vo(v,t.customRules);if(h){let Q=++s;try{let x=await h.execute({input:v,data:A(t.data)||[],columns:E,executeTool:f}),G={success:!0,message:String(x??l().done),tool:`rule:${h.name}`};return c(`rule:${h.name}`,{text:v},G,"ask",Q),t.onResult&&t.onResult(G),G}catch(x){n=Qi(x),t.onError&&t.onError(n);let G={success:!1,message:l().failed,error:{code:"INTERNAL"},tool:`rule:${h.name}`};return c(`rule:${h.name}`,{text:v},G,"ask",Q),G}}let p=(t.parseIntent||Bi)(v,{columns:E,locale:t.locale});if(!p){let Q={success:!1,message:l().notUnderstood,error:{code:"NOT_UNDERSTOOD"}};return c("ask",{text:v},Q,"ask",++s),Q}if(p.kind==="tool")return k(p.tool,p.input,"ask");let y=await k("search",{query:p.text},"ask");if(!y.success)return y;let D=Array.isArray(y.data)?y.data:[];if(!D.length){let Q={success:!1,message:l().noMatch(p.text),error:{code:"NOT_FOUND"},tool:y.tool};return c("open",{text:p.text},Q,"ask",++s),Q}return k("open",{id:ie(D[0],t.rowKey)},"ask")}function B(){a=[],r=null,n=null,m()}return{ask:C,executeTool:f,clearHistory:B,subscribe:i.subscribe,getState:u,get tools(){return I()},get loading(){return o>0},get lastResult(){return r},get lastError(){return n},get history(){return a.slice()}}}function ut(e,A={}){let t=()=>(typeof e=="function"?e():e)||[],i=a=>{o.status=a,A.onStatusChange&&A.onStatusChange(a)},o={status:{state:"unsupported",registered:[],errors:[]},done:Promise.resolve(),unregister(){n.abort()}},r=typeof document<"u"?document.modelContext:void 0,n=new AbortController;return!r||typeof r.registerTool!="function"?(i({state:"unsupported",registered:[],errors:[]}),o):(o.done=(async()=>{i({state:"registering",registered:[],errors:[]});let a=[],s=[];for(let l of t()){if(n.signal.aborted)return;try{await r.registerTool({name:l.name,title:l.title,description:l.description,inputSchema:l.inputSchema,execute:I=>{let u=t().find(m=>m.name===l.name);return u?u.execute(I||{}):{success:!1,message:`Tool "${l.name}" is no longer available.`,error:{code:"NOT_SUPPORTED"}}}},{signal:n.signal}),a.push(l.name)}catch(I){s.push({tool:l.name,message:Qi(I).message})}}n.signal.aborted||i({state:s.length===0?"ready":a.length?"partial":"error",registered:a,errors:s})})(),o)}var xo=/\b(trend|over time|this (week|month|quarter|year)|last (week|month|quarter|year)|compare|versus|vs)\b|\b(by|per|each|which)\b.*\b(total|average|avg|sum|drop|increase|growth|highest|lowest|most|least)\b|\b(total|average|avg|sum)\b.*\b(by|per|each)\b/i,ko={filters:[],search:[],sort:null,limit:null,notes:[],explanation:""};function Ct(e={}){let A=qn(),t=e.rowKey||"id",i=e.bind||null,o=Array.isArray(e.data)?e.data:[],r=Ne(e.columns||[]),n={filters:[],sort:null,highlightIds:[]},a="",s=null,l=[],I=[],u=!1,m=()=>i?i.getFilters():n.filters,c=()=>i?i.getSort():n.sort,k=()=>i?i.getHighlightIds():n.highlightIds,f=()=>i?i.getData():o,C=G=>i?i.setFilters(G):n={...n,filters:G},B=G=>i?i.setSort(G):n={...n,sort:G},v=G=>i?i.setHighlightIds(G):n={...n,highlightIds:G};function E(){return Se(f(),r,{...ko,filters:m(),sort:c()})}let h=()=>{let G=E();return{gridData:G,highlightIds:k().slice(),filters:m().slice(),sort:c(),answer:a,kind:s,table:l.slice(),steps:I.slice(),busy:u,visibleIds:G.map(w=>ie(w,t))}},p=()=>A.emit(h()),y=()=>({get data(){return f()},columns:r,rowKey:t,get filters(){return m()},onFiltersChange:G=>{C(G),p()},onSortChange:G=>{B(G),p()},onHighlightRows:G=>{v(G),p()},onOpenRow:e.onOpenRow,onSelectRow:G=>{i&&i.selectRow?i.selectRow(G):v([G]),p()}});async function D(G){let w=String(G??"").trim();if(!w)return h();u=!0,I=[],l=[],p();try{if(QA(w).length>1){let M=[],L=await OA(w,y(),{onStep:F=>{M.push(F),I=M.slice(),p()}});s="tasks",a=L.summary}else if(xo.test(w)){let M=ve(f(),r,m()),L=zA(w,M,r,{referenceDate:e.referenceDate});s="insight",a=L.answer,l=L.table||[]}else{let M=$A(w,y());s=M.kind,a=M.message}}catch(M){console.error("[yuktai] ask failed",M),s=null,a="Something went wrong while answering. Please rephrase the question."}finally{u=!1,p()}return h()}function Q(){C([]),B(null),v([]),a="",s=null,l=[],I=[],p()}function x(G={}){Array.isArray(G.data)&&(o=G.data),Array.isArray(G.columns)&&(r=Ne(G.columns)),p()}return{ask:D,reset:Q,update:x,subscribe:A.subscribe,getState:h,get gridData(){return E()},get highlightIds(){return k().slice()},get filters(){return m().slice()},get sort(){return c()},get answer(){return a},get kind(){return s},get table(){return l.slice()},get steps(){return I.slice()},get busy(){return u},get visibleIds(){return E().map(G=>ie(G,t))}}}var cA={accessibility:'<circle cx="12" cy="4" r="2"/><path d="M4 8l8-1 8 1M12 7v5m-5 9 5-8 5 8M7 12l-2 5m12-5 2 5"/>',contrast:'<circle cx="12" cy="12" r="9"/><path d="M12 3a9 9 0 0 0 0 18z"/>',moon:'<path d="M20 14.5A8.5 8.5 0 0 1 9.5 4 8.5 8.5 0 1 0 20 14.5z"/>',motion:'<path d="M4 12h12m-5-5 5 5-5 5M20 5v14"/>',reading:'<path d="M4 5h16M4 10h12M4 15h16M4 20h10"/>',target:'<circle cx="12" cy="12" r="9"/><circle cx="12" cy="12" r="4"/>',speaker:'<path d="M4 9v6h4l5 4V5L8 9H4z"/><path d="M16 9a4 4 0 0 1 0 6M18.5 6.5a8 8 0 0 1 0 11"/>',palette:'<circle cx="12" cy="12" r="9"/><circle cx="8" cy="10" r="1.3"/><circle cx="12" cy="7.5" r="1.3"/><circle cx="16" cy="10" r="1.3"/><path d="M12 21a3 3 0 0 1 0-6h2"/>',skip:'<path d="M5 5l7 7-7 7M13 5l7 7-7 7"/>',close:'<path d="m18 6-12 12M6 6l12 12"/>',plus:'<path d="M12 5v14M5 12h14"/>',minus:'<path d="M5 12h14"/>',reset:'<path d="M3 12a9 9 0 1 0 3-6.7L3 8"/><path d="M3 3v5h5"/>',search:'<circle cx="11" cy="11" r="6.5"/><path d="m16 16 5 5"/>',sort:'<path d="m8 9 4-4 4 4m-8 6 4 4 4-4"/>',sortUp:'<path d="m6 15 6-6 6 6"/>',sortDown:'<path d="m6 9 6 6 6-6"/>',chevrons:'<path d="m8 9 4-4 4 4m-8 6 4 4 4-4"/>',grid:'<rect x="3" y="3" width="7" height="7" rx="1"/><rect x="14" y="3" width="7" height="7" rx="1"/><rect x="3" y="14" width="7" height="7" rx="1"/><rect x="14" y="14" width="7" height="7" rx="1"/>',cards:'<rect x="3" y="4" width="18" height="7" rx="1.5"/><rect x="3" y="13" width="18" height="7" rx="1.5"/>',chat:'<path d="M21 11.5a8.5 8.5 0 0 1-8.5 8.5 9 9 0 0 1-4-.9L3 21l1.9-5.5a9 9 0 0 1-.9-4A8.5 8.5 0 0 1 12.5 3H13a8.5 8.5 0 0 1 8 8z"/>',mic:'<rect x="9" y="2" width="6" height="12" rx="3"/><path d="M5 10a7 7 0 0 0 14 0M12 17v5m-4 0h8"/>',stop:'<rect x="6" y="6" width="12" height="12" rx="2"/>',download:'<path d="M12 3v12m-5-5 5 5 5-5M4 21h16"/>',copy:'<rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/>',filter:'<path d="M4 5h16l-6 7v6l-4 2v-8z"/>',check:'<path d="m5 12 4 4L19 6"/>',left:'<path d="m15 18-6-6 6-6"/>',right:'<path d="m9 18 6-6-6-6"/>',first:'<path d="m11 18-6-6 6-6M19 18l-6-6 6-6"/>',last:'<path d="m13 18 6-6-6-6M5 18l6-6-6-6"/>',spark:'<path d="m12 3 1.9 5.8L20 11l-6.1 2.2L12 19l-1.9-5.8L4 11l6.1-2.2zM19 14l1.2 2.8L23 18l-2.8 1.2L19 22l-1.2-2.8L15 18l2.8-1.2z"/>',alert:'<path d="m12 3 10 18H2L12 3z"/><path d="M12 9v5m0 3h.01"/>',info:'<circle cx="12" cy="12" r="9"/><path d="M12 11v6m0-9h.01"/>',form:'<rect x="5" y="3" width="14" height="18" rx="2"/><path d="M9 8h6M9 12h6M9 16h3"/>',eye:'<path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z"/><circle cx="12" cy="12" r="3"/>',layout:'<rect x="3" y="3" width="18" height="18" rx="2"/><path d="M3 9h18M9 21V9"/>',wand:'<path d="m15 4 5 5L9 20H4v-5z"/><path d="m13 6 5 5"/>',undo:'<path d="M9 14 4 9l5-5"/><path d="M4 9h10a6 6 0 0 1 0 12h-3"/>',tools:'<path d="M14.7 6.3a4 4 0 0 0-5.4 5.4L3 18l3 3 6.3-6.3a4 4 0 0 0 5.4-5.4l-2.5 2.5-2.4-.6-.6-2.4z"/>',plug:'<path d="M9 2v6M15 2v6M6 8h12v4a6 6 0 0 1-12 0zM12 18v4"/>',home:'<path d="M3 11 12 4l9 7"/><path d="M5 10v10h5v-6h4v6h5V10"/>',menu:'<path d="M4 6h16M4 12h16M4 18h16"/>',book:'<path d="M12 6c-2-1.5-5-2-8-2v14c3 0 6 .5 8 2 2-1.5 5-2 8-2V4c-3 0-6 .5-8 2zM12 6v14"/>',calendar:'<rect x="3" y="5" width="18" height="16" rx="2"/><path d="M3 10h18M8 3v4M16 3v4M7.5 14h2M14.5 14h2M7.5 17.5h2"/>',clock:'<circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 2"/>',person:'<circle cx="12" cy="8" r="4"/><path d="M4 21a8 8 0 0 1 16 0"/>',users:'<circle cx="9" cy="8" r="3.5"/><path d="M2 20a7 7 0 0 1 14 0"/><path d="M16 4.5a3.5 3.5 0 0 1 0 7M18 13.5a7 7 0 0 1 4 6.5"/>',globe:'<circle cx="12" cy="12" r="9"/><path d="M3 12h18M12 3a14 14 0 0 1 0 18M12 3a14 14 0 0 0 0 18"/>',lamp:'<path d="M12 3c2 2.6 3 4.3 3 6a3 3 0 0 1-6 0c0-1.7 1-3.4 3-6z"/><path d="M3 14h18c0 3.5-4 6-9 6s-9-2.5-9-6z"/><path d="M12 12v2"/>',play:'<circle cx="12" cy="12" r="9"/><path d="M10 8.5v7l6-3.5z"/>',pause:'<circle cx="12" cy="12" r="9"/><path d="M10 9v6M14 9v6"/>',send:'<path d="M21 3 3 10.5l7 3 3 7.5z"/><path d="m10 13.5 4.5-4.5"/>',share:'<circle cx="18" cy="5" r="2.5"/><circle cx="6" cy="12" r="2.5"/><circle cx="18" cy="19" r="2.5"/><path d="m8.2 10.8 7.6-4.6M8.2 13.2l7.6 4.6"/>',gift:'<rect x="3" y="8" width="18" height="4" rx="1"/><path d="M5 12v9h14v-9M12 8v13M12 8C10.5 5 7 4 7 6.5S10 8 12 8zm0 0c1.5-3 5-4 5-1.5S14 8 12 8z"/>',image:'<rect x="3" y="4" width="18" height="16" rx="2"/><circle cx="8.5" cy="9.5" r="1.5"/><path d="m21 15-5-5-10 10"/>',file:'<path d="M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z"/><path d="M14 3v5h5M9 13h6M9 17h6"/>',external:'<path d="M14 4h6v6M20 4l-9 9"/><path d="M18 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h5"/>',arrowUp:'<path d="M12 19V5m-6 6 6-6 6 6"/>',arrowLeft:'<path d="M19 12H5m6-6-6 6 6 6"/>',arrowRight:'<path d="M5 12h14m-6-6 6 6-6 6"/>',headphones:'<path d="M4 15v-3a8 8 0 0 1 16 0v3"/><rect x="3" y="14" width="4" height="7" rx="1.5"/><rect x="17" y="14" width="4" height="7" rx="1.5"/>',music:'<path d="M9 18V5l11-2v13"/><circle cx="6" cy="18" r="3"/><circle cx="17" cy="16" r="3"/>',pin:'<path d="M12 21s7-6.2 7-11.5a7 7 0 0 0-14 0C5 14.8 12 21 12 21z"/><circle cx="12" cy="9.5" r="2.5"/>',map:'<path d="M3 6l6-3 6 3 6-3v15l-6 3-6-3-6 3z"/><path d="M9 3v15M15 6v15"/>',pen:'<path d="M12 3 6 9l1.5 8h9L18 9z"/><path d="M12 3v7.5"/><circle cx="12" cy="12" r="1.5"/><path d="M8 21h8"/>',wallet:'<rect x="3" y="7" width="18" height="13" rx="2"/><path d="M16 13.5h2M6 7l9-4 2 4"/>',install:'<rect x="6" y="2" width="12" height="20" rx="2"/><path d="M12 6v8m-3-3 3 3 3-3M10 18h4"/>',help:'<circle cx="12" cy="12" r="9"/><path d="M9.5 9.5a2.5 2.5 0 1 1 3.5 2.3c-.6.3-1 .9-1 1.6v.6M12 17h.01"/>',temple:'<path d="M12 2v2M10 4h4l1 3H9zM8 7h8l1.5 4h-11zM6.5 11h11L19 15H5zM4 15h16v6H4z"/><path d="M10 21v-3a2 2 0 0 1 4 0v3"/>',meditate:'<circle cx="12" cy="4.5" r="2.2"/><path d="M12 8c-2.2 0-3.3 1.3-3.7 3.2L7.5 16M12 8c2.2 0 3.3 1.3 3.7 3.2l.8 4.8"/><path d="M4 18c3 2 5.5 2.4 8 1.2 2.5 1.2 5 .8 8-1.2"/><path d="M7.5 16c1.4 1.4 3 2 4.5 2s3.1-.6 4.5-2"/>',trophy:'<path d="M8 4h8v5a4 4 0 0 1-8 0z"/><path d="M8 6H5a3 3 0 0 0 3 4M16 6h3a3 3 0 0 1-3 4M12 13v4M8 21h8M9 17h6"/>',bulb:'<path d="M9 18h6M10 21h4"/><path d="M12 3a6 6 0 0 0-4 10.5c.7.7 1 1.5 1 2.5h6c0-1 .3-1.8 1-2.5A6 6 0 0 0 12 3z"/>',sun:'<circle cx="12" cy="12" r="4"/><path d="M12 2v2.5M12 19.5V22M4.9 4.9l1.8 1.8M17.3 17.3l1.8 1.8M2 12h2.5M19.5 12H22M4.9 19.1l1.8-1.8M17.3 6.7l1.8-1.8"/>',delete:'<path d="M4 7h16M10 11v6M14 11v6M6 7l1 13a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1l1-13M9 7V4h6v3"/>',robot:'<rect x="4" y="8" width="16" height="12" rx="3"/><path d="M12 8V4M9.5 4h5M2 13v3M22 13v3"/><circle cx="9" cy="14" r="1.3"/><circle cx="15" cy="14" r="1.3"/>',heart:'<path d="M12 20s-7.5-4.6-9.2-9.3A4.9 4.9 0 0 1 12 6.6a4.9 4.9 0 0 1 9.2 4.1C19.5 15.4 12 20 12 20z"/>',heartFilled:'<path fill="currentColor" d="M12 20s-7.5-4.6-9.2-9.3A4.9 4.9 0 0 1 12 6.6a4.9 4.9 0 0 1 9.2 4.1C19.5 15.4 12 20 12 20z"/>',hub:'<circle cx="12" cy="12" r="3"/><circle cx="5" cy="5" r="2"/><circle cx="19" cy="5" r="2"/><circle cx="5" cy="19" r="2"/><circle cx="19" cy="19" r="2"/><path d="m6.5 6.5 3.4 3.4M17.5 6.5l-3.4 3.4M6.5 17.5l3.4-3.4M17.5 17.5l-3.4-3.4"/>',code:'<path d="m8 7-5 5 5 5M16 7l5 5-5 5M14 4l-4 16"/>',text:'<path d="M3 7V5h11v2M8.5 5v14M6.5 19h4M14 12v-1.5h7V12M17.5 10.5V19M16 19h3"/>',bold:'<path d="M7 4h6a4 4 0 0 1 0 8H7zM7 12h7a4 4 0 0 1 0 8H7z"/>',italic:'<path d="M10 4h9M5 20h9M15 4 9 20"/>',underline:'<path d="M7 4v7a5 5 0 0 0 10 0V4M5 21h14"/>',alignLeft:'<path d="M4 5h16M4 9.5h9M4 14h16M4 18.5h9"/>',alignCenter:'<path d="M4 5h16M7.5 9.5h9M4 14h16M7.5 18.5h9"/>',alignRight:'<path d="M4 5h16M11 9.5h9M4 14h16M11 18.5h9"/>',alignJustify:'<path d="M4 5h16M4 9.5h16M4 14h16M4 18.5h16"/>',quote:'<path d="M4 18v-6.5A6.5 6.5 0 0 1 10.5 5M4 12h5.5v6H4zM13.5 18v-6.5A6.5 6.5 0 0 1 20 5M13.5 12H19v6h-5.5z"/>',title:'<path d="M5 6V4h14v2M12 4v16M9 20h6"/>',font:'<rect x="3" y="3" width="18" height="18" rx="3"/><path d="m8 17 4-10 4 10M9.4 13.5h5.2"/>',spellcheck:'<path d="m3 14 4-10 4 10M4.6 10.5h4.8M11 17l3 3 7-7"/>',abc:'<path d="m2 16 2.5-8L7 16M3 13.5h3M9.5 8v8h2.5a2 2 0 0 0 0-4H9.5h2a2 2 0 0 0 0-4H9.5M21 9.4a3.1 3.1 0 1 0 0 5.2"/>',pageBreak:'<path d="M6 3v5h12V3M6 21v-5h12v5M3 12h3M9 12h6M18 12h3"/>',link:'<path d="M10 14a4 4 0 0 0 5.7 0l3-3a4 4 0 0 0-5.7-5.7l-1 1"/><path d="M14 10a4 4 0 0 0-5.7 0l-3 3a4 4 0 0 0 5.7 5.7l1-1"/>',style:'<rect x="3" y="3" width="7" height="18" rx="2"/><path d="m10 7.5 4.4-2.6a2 2 0 0 1 2.7.7l3.2 5.6a2 2 0 0 1-.7 2.7L10 19"/><circle cx="6.5" cy="17" r="1"/>',lock:'<rect x="5" y="11" width="14" height="10" rx="2"/><path d="M8 11V8a4 4 0 0 1 8 0v3M12 15v2"/>',unlock:'<rect x="5" y="11" width="14" height="10" rx="2"/><path d="M8 11V8a4 4 0 0 1 7.6-1.8M12 15v2"/>',key:'<circle cx="8" cy="15" r="4"/><path d="m11 12 9-9M17 6l3 3M14.5 8.5l2 2"/>',redo:'<path d="m15 14 5-5-5-5"/><path d="M20 9H10a6 6 0 0 0 0 12h3"/>',swap:'<path d="M7 4 3 8l4 4M3 8h14M17 12l4 4-4 4M21 16H7"/>',shuffle:'<path d="M16 3h5v5M4 20 21 3M21 16v5h-5M15 15l6 6M4 4l5 5"/>',fullscreen:'<path d="M4 9V4h5M15 4h5v5M20 15v5h-5M9 20H4v-5"/>',fullscreenExit:'<path d="M9 4v5H4M20 9h-5V4M15 20v-5h5M4 15h5v5"/>',merge:'<circle cx="6" cy="5" r="2"/><circle cx="6" cy="19" r="2"/><circle cx="18" cy="12" r="2"/><path d="M6 7v10M6 7c0 4 4 5 10 5"/>',join:'<circle cx="9" cy="12" r="6"/><circle cx="15" cy="12" r="6"/>',touch:'<path d="M9 11V5a1.5 1.5 0 0 1 3 0v6M12 10a1.5 1.5 0 0 1 3 0v1M15 11a1.5 1.5 0 0 1 3 0v3c0 4-2.5 7-6 7-2.5 0-4-1-5.5-3.5L4.6 14a1.5 1.5 0 0 1 2.5-1.6L9 15"/>',volumeOff:'<path d="M4 9v6h4l5 4V5L8 9H4z"/><path d="m16.5 9.5 5 5M21.5 9.5l-5 5"/>',musicOff:'<path d="M9 13v5M9 7V5l11-2v9"/><circle cx="6" cy="18" r="3"/><path d="M3 3l18 18"/>',musicVideo:'<rect x="3" y="4" width="18" height="16" rx="2"/><path d="M10.5 15V8.5l5-1V13"/><circle cx="9" cy="15" r="1.5"/><circle cx="14" cy="13" r="1.5"/>',movie:'<rect x="3" y="9" width="18" height="11" rx="2"/><path d="m3.5 9-.6-3 16.6-3.4.6 3L3.5 9zM8.5 4.8l1.8 2.9M13.8 3.7l1.8 2.9"/>',slideshow:'<rect x="3" y="4" width="18" height="13" rx="2"/><path d="M10 8v5l4-2.5zM8 21h8M12 17v4"/>',storage:'<ellipse cx="12" cy="5" rx="8" ry="3"/><path d="M4 5v14c0 1.7 3.6 3 8 3s8-1.3 8-3V5M4 12c0 1.7 3.6 3 8 3s8-1.3 8-3"/>',api:'<path d="M3 17v-6a2.5 2.5 0 0 1 5 0v6M3 14h5M11 17V7h2.5a2.5 2.5 0 0 1 0 5H11M18 7h3M19.5 7v10M18 17h3"/>',dataObject:'<path d="M8 4H7a2 2 0 0 0-2 2v4l-2 2 2 2v4a2 2 0 0 0 2 2h1M16 4h1a2 2 0 0 1 2 2v4l2 2-2 2v4a2 2 0 0 1-2 2h-1"/>',computer:'<rect x="3" y="4" width="18" height="12" rx="2"/><path d="M8 20h8M12 16v4"/>',phone:'<rect x="6" y="2" width="12" height="20" rx="2"/><path d="M10.5 18.5h3"/>',cloud:'<path d="M7 19a5 5 0 0 1-.6-10A6.5 6.5 0 0 1 18.6 9.5 4.8 4.8 0 0 1 17.5 19z"/>',wifi:'<path d="M2 9a15 15 0 0 1 20 0M5 12.5a10 10 0 0 1 14 0M8.5 16a5 5 0 0 1 7 0M12 19.5h.01"/>',wifiOff:'<path d="M2 9a15 15 0 0 1 20 0M5 12.5a10 10 0 0 1 14 0M8.5 16a5 5 0 0 1 7 0M12 19.5h.01M3 3l18 18"/>',searchOff:'<circle cx="11" cy="11" r="6.5"/><path d="m16 16 5 5M8.7 8.7l4.6 4.6M13.3 8.7l-4.6 4.6"/>',eyeOff:'<path d="M10.6 5.1A10 10 0 0 1 12 5c6.5 0 10 7 10 7a17 17 0 0 1-2.2 3.2M6.6 6.6C3.8 8.4 2 12 2 12s3.5 7 10 7a9.7 9.7 0 0 0 5.4-1.6M9.9 9.9a3 3 0 0 0 4.2 4.2M3 3l18 18"/>',bookmark:'<path d="M6 3h12v18l-6-4-6 4z"/>',school:'<path d="m2 9 10-5 10 5-10 5z"/><path d="M6 11v5c0 1.5 2.7 3 6 3s6-1.5 6-3v-5M22 9v6"/>',gavel:'<path d="m13 3.5 7.5 7.5M10 6.5l7.5 7.5M11.5 5l7 7-3 3-7-7zM10 11.5 3.5 18a1.4 1.4 0 0 0 2 2L12 13.5M13 21h8"/>',architecture:'<circle cx="12" cy="5" r="2"/><path d="M12 3V2M11 7 5.5 21M13 7l5.5 14M8 15h8"/>',brain:'<path d="M11 5.5A3 3 0 0 0 5.6 7 3 3 0 0 0 4 12a3 3 0 0 0 1.6 5A3 3 0 0 0 11 18.5zM13 5.5A3 3 0 0 1 18.4 7 3 3 0 0 1 20 12a3 3 0 0 1-1.6 5 3 3 0 0 1-5.4 1.5z"/><path d="M8 10h3M13 14h3"/>',volunteer:'<path d="M12 11s-3.5-2.2-3.5-4.6a1.8 1.8 0 0 1 3.5-.7 1.8 1.8 0 0 1 3.5.7C15.5 8.8 12 11 12 11z"/><path d="M2 15h3l3.5 1.5H13a1.5 1.5 0 0 1 0 3H9.5M5 21l1.5-1.5H14l5.5-4a1.6 1.6 0 0 0-2-2.4L14 15.6"/>',radio:'<circle cx="12" cy="12" r="9"/>',radioChecked:'<circle cx="12" cy="12" r="9"/><circle cx="12" cy="12" r="4" fill="currentColor"/>',upload:'<path d="M12 15V3m-5 5 5-5 5 5M4 21h16"/>',arrowDown:'<path d="M12 5v14m-6-6 6 6 6-6"/>',factCheck:'<rect x="3" y="4" width="18" height="16" rx="2"/><path d="M7 9h4M7 13h4M7 17h2M13.5 13l2 2 3.5-3.5"/>',imageSearch:'<path d="M13 4H5a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-4"/><path d="m3 17 5-5 4 4"/><circle cx="17" cy="7" r="3"/><path d="m19.2 9.2 2.3 2.3"/>',documentScanner:'<path d="M3 7V4a1 1 0 0 1 1-1h3M17 3h3a1 1 0 0 1 1 1v3M21 17v3a1 1 0 0 1-1 1h-3M7 21H4a1 1 0 0 1-1-1v-3"/><path d="M7 8h10M7 12h10M7 16h6"/>',dashboard:'<rect x="3" y="3" width="8" height="10" rx="1.5"/><rect x="13" y="3" width="8" height="6" rx="1.5"/><rect x="3" y="15" width="8" height="6" rx="1.5"/><path d="M17 13v8M13 17h8"/>',cleaning:'<path d="m20 3-7.5 7.5"/><path d="M12.5 10.5c-2.5-1.6-6-1-7.4 1.7L3 20.5c3.2 1 7.2.4 10.2-1.6l.7-5.3c-.1-1.3-.6-2.3-1.4-3.1z"/><path d="M7.5 15.5 6 20.5M10.5 15l-1 5"/>',dragHandle:'<path d="M5 9h14M5 15h14"/>',zoomIn:'<circle cx="11" cy="11" r="6.5"/><path d="m16 16 5 5M8 11h6M11 8v6"/>',zoomOut:'<circle cx="11" cy="11" r="6.5"/><path d="m16 16 5 5M8 11h6"/>',insights:'<path d="m3 18 5-5 4 3 6-7"/><path d="M15 9h3v3"/><path d="m19 2.5.7 1.8 1.8.7-1.8.7-.7 1.8-.7-1.8-1.8-.7 1.8-.7z"/>',explore:'<circle cx="12" cy="12" r="9"/><path d="m15.5 8.5-2 5-5 2 2-5z"/>',save:'<path d="M5 3h11l5 5v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z"/><path d="M7 3v5h8V3M7 21v-7h10v7"/>',label:'<path d="M4 6h11l5 6-5 6H4z"/>',keyboard:'<rect x="2" y="6" width="20" height="12" rx="2"/><path d="M6 10h.01M10 10h.01M14 10h.01M18 10h.01M6 14h.01M18 14h.01M9 14h6"/>',trendingUp:'<path d="m3 17 6-6 4 4 8-8"/><path d="M15 7h6v6"/>',trendingDown:'<path d="m3 7 6 6 4-4 8 8"/><path d="M15 17h6v-6"/>',cake:'<path d="M4 21h16M5 21v-7a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v7M5 16.5c1.5 1 2.5 1 3.5 0s2.5-1 3.5 0 2.5 1 3.5 0 2.5-1 3.5 0M12 12V8.5M12 6c-.9-.9-.9-2 0-3.3.9 1.3.9 2.4 0 3.3z"/>',barChart:'<path d="M4 20h16M7 20v-6M12 20V5M17 20V10"/>',admin:'<path d="M12 3 4 6v6c0 4.5 3.4 8 8 9 4.6-1 8-4.5 8-9V6z"/><circle cx="12" cy="10" r="2.5"/><path d="M8 16.5c1-1.8 2.4-2.5 4-2.5s3 .7 4 2.5"/>',bugReport:'<rect x="7" y="8" width="10" height="12" rx="5"/><path d="M9 8.5a3 3 0 0 1 6 0M12 12v8M7 13H3M21 13h-4M7 17l-3 1.5M17 17l3 1.5M7.5 10 5 8M16.5 10 19 8"/>',sentimentSad:'<circle cx="12" cy="12" r="9"/><path d="M8 16.5c1-1.4 2.4-2 4-2s3 .6 4 2M9 9.5h.01M15 9.5h.01"/>',integration:'<rect x="5" y="4" width="14" height="17" rx="2"/><path d="M9 4V3h6v1M10 11l-2 2 2 2M14 11l2 2-2 2"/>',namaskar:'<path d="M12 5.5V15M12 5.5c-.6-1.7-2.4-2.2-3.1-.9L7.2 11.5 4.5 14.5l3 5H10l2-3.5M12 5.5c.6-1.7 2.4-2.2 3.1-.9l1.7 6.9 2.7 3-3 5H14l-2-3.5"/>',sunrise:'<path d="M3 19h18M7 19a5 5 0 0 1 10 0M12 3v6M9.5 5.5 12 3l2.5 2.5M4.9 11.9l1.4 1.4M19.1 11.9l-1.4 1.4M2 16h2M20 16h2"/>',sunset:'<path d="M3 19h18M7 19a5 5 0 0 1 10 0M12 3v6M9.5 6.5 12 9l2.5-2.5M4.9 11.9l1.4 1.4M19.1 11.9l-1.4 1.4M2 16h2M20 16h2"/>',login:'<path d="M14 4h4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-4M10 16l4-4-4-4M14 12H3"/>',logout:'<path d="M10 4H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h4M16 16l4-4-4-4M20 12H9"/>',speed:'<path d="M4.5 18a9 9 0 1 1 15 0"/><path d="m12 14 4-5"/><circle cx="12" cy="14" r="1.2"/>',repeat:'<path d="m17 2 3 3-3 3M4 11V9a4 4 0 0 1 4-4h12M7 22l-3-3 3-3M20 13v2a4 4 0 0 1-4 4H4"/>',loader:'<path d="M12 3v3M12 18v3M5.6 5.6l2.1 2.1M16.3 16.3l2.1 2.1M3 12h3M18 12h3M5.6 18.4l2.1-2.1M16.3 7.7l2.1-2.1"/>',star:'<path d="m12 3 2.8 5.7 6.2.9-4.5 4.4 1.1 6.2L12 17.3l-5.6 2.9 1.1-6.2L3 9.6l6.2-.9z"/>',shieldCheck:'<path d="M12 3 4 6v6c0 4.5 3.4 8 8 9 4.6-1 8-4.5 8-9V6z"/><path d="m8.5 12 2.5 2.5 4.5-4.5"/>'},ja=Object.keys(cA);var Do=3,Ei="#ffffff",Hn="#111827";function kA(e,A){let t=Re(e),i=Re(A);return t&&i?iA(t,i):null}function bi(e){let A=kA(Ei,e),t=kA(Hn,e);return A===null||t===null||A>=t?Ei:Hn}var $n=new Set;function Mo(e,A){$n.has(e)||($n.add(e),typeof console<"u"&&console.warn(`[yuktai icons] ${A}`))}function So(e={}){let A=e.variant==="filled"?"filled":"outline",t=e.color||"currentColor";if(A==="outline")return{variant:A,color:t,glyph:t,contrast:null};let i=e.glyphColor||bi(t),o=kA(i,t);return o!==null&&o<Do&&Mo(`${i}|${t}`,`glyph ${i} on ${t} is ${o}:1. WCAG 1.4.11 needs at least 3:1 for icons.`),{variant:A,color:t,glyph:i,contrast:o}}var Go="translate(3.6 3.6) scale(0.7)",No="@media (forced-colors: active){.yi-bg{fill:CanvasText}.yi-glyph{stroke:Canvas;color:Canvas}}",Le=e=>String(e).replace(/[&<>"']/g,A=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[A]);function Pn(e,A={}){let t=cA[e]??cA.spark,i=A.size??20,{variant:o,color:r,glyph:n}=So(A),a=A.strokeWidth??(o==="filled"?2.4:1.9),l=`<svg xmlns="http://www.w3.org/2000/svg" ${A.label?`role="img" aria-label="${Le(A.label)}"`:'aria-hidden="true"'} focusable="false" width="${Le(i)}" height="${Le(i)}" viewBox="0 0 24 24" fill="none" stroke-linecap="round" stroke-linejoin="round" data-variant="${o}">`;if(o==="outline")return`${l}<g stroke="${Le(r)}" stroke-width="${a}">${t}</g></svg>`;let I=A.shape==="circle"?`<circle class="yi-bg" cx="12" cy="12" r="12" fill="${Le(r)}"/>`:`<rect class="yi-bg" width="24" height="24" rx="6" fill="${Le(r)}"/>`;return`${l}<style>${No}</style>${I}<g class="yi-glyph" color="${Le(n)}" stroke="${Le(n)}" stroke-width="${a}" transform="${Go}">${t}</g></svg>`}var Ye=()=>typeof window<"u"&&typeof document<"u";function ht(e){return String(e??"").replace(/[&<>"']/g,A=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[A])}function g(e,A,...t){let i=document.createElement(e);if(A)for(let[o,r]of Object.entries(A))r==null||r===!1||(o.startsWith("on")&&typeof r=="function"?i.addEventListener(o.slice(2),r):o==="html"?i.innerHTML=r:o==="text"?i.textContent=r:r===!0?i.setAttribute(o,""):i.setAttribute(o,String(r)));for(let o of t.flat())o==null||o===!1||i.append(o instanceof Node?o:document.createTextNode(String(o)));return i}var Fo=0,X=(e="yv")=>`${e}-${++Fo}`;function pt(e,A){if(typeof e!="string"||!Ye())return A;let t=document.createElement("span");return t.style.color=e,t.style.color?e:A}var wi=()=>Ye()&&(window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches||document.documentElement.hasAttribute("data-yuktai-reduce-motion")),zn=Object.keys(cA);function ce(e,A=20,t,i){let o=typeof A=="object"&&A!==null?{...A}:{...i||{},size:A,label:t};return Pn(e,o)}function q(e,A,t){let i=document.createElement("span");return i.className="yv-ic",i.innerHTML=ce(e,A,t),i}var Oe=null;function oe(e){!Ye()||!e||((!Oe||!document.contains(Oe))&&(Oe=g("div",{id:"yuktai-vanilla-live",class:"yv-sr",role:"status","aria-live":"polite","aria-atomic":"true"}),document.body.appendChild(Oe)),Oe.textContent="",setTimeout(()=>{Oe&&(Oe.textContent=String(e).slice(0,300))},30))}function DA(e,A,t="text/plain;charset=utf-8"){let i=URL.createObjectURL(new Blob([A],{type:t})),o=g("a",{href:i,download:e,hidden:!0});document.body.appendChild(o),o.click(),o.remove(),setTimeout(()=>URL.revokeObjectURL(i),1500)}async function On(e){try{return await navigator.clipboard.writeText(e),!0}catch{let A=g("textarea",{"aria-hidden":"true",style:"position:fixed;opacity:0;left:-9999px"});A.value=e,document.body.appendChild(A),A.select();let t=!1;try{t=document.execCommand("copy")}catch{t=!1}return A.remove(),t}}function vi(e){let A=String(e??"");return/^[=+\-@\t\r]/.test(A)&&(A="'"+A),'"'+A.replace(/"/g,'""')+'"'}function Wn(e){let A=(e||[]).map(t=>{try{return document.querySelector(t)}catch{return null}}).filter(Boolean);return A.forEach(t=>{t.setAttribute("data-yv-flash",""),setTimeout(()=>t.removeAttribute("data-yv-flash"),4e3)}),A[0]&&A[0].scrollIntoView({block:"center",behavior:wi()?"auto":"smooth"}),A.length}function yt(e,A){if(!Ye()||document.getElementById("yuktai-vanilla-css"))return;let t=document.createElement("style");t.id="yuktai-vanilla-css",t.textContent=`
|
|
401
402
|
:root{--yv-primary:${e}}
|
|
402
403
|
.yv-sr{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
|
|
403
404
|
.yv-ic{display:inline-flex;line-height:0}
|
|
@@ -508,11 +509,11 @@ Missing landmarks: ${o.join(", ")}.`:""}`,targets:[],suggestions:o.includes("mai
|
|
|
508
509
|
.yv-cat strong{display:block;font-size:1.3em}
|
|
509
510
|
|
|
510
511
|
/* floating buttons and dialogs */
|
|
511
|
-
.yv-fabs{position:fixed;bottom:max(16px,env(safe-area-inset-bottom));${
|
|
512
|
+
.yv-fabs{position:fixed;bottom:max(16px,env(safe-area-inset-bottom));${A}:16px;display:flex;flex-direction:column;gap:10px;z-index:2147483000}
|
|
512
513
|
.yv-fab{width:56px;height:56px;display:grid;place-items:center;border:2px solid #fff;border-radius:50%;background:var(--yv-primary);color:#fff;box-shadow:0 4px 16px rgba(0,0,0,.25);cursor:pointer}
|
|
513
514
|
.yv-fab.yv-fab-alt{background:#fff;color:var(--yv-primary);border-color:var(--yv-primary)}
|
|
514
515
|
.yv-fab:hover{filter:brightness(1.08)}
|
|
515
|
-
.yv-dialog{position:fixed;bottom:max(90px,calc(env(safe-area-inset-bottom) + 84px));${
|
|
516
|
+
.yv-dialog{position:fixed;bottom:max(90px,calc(env(safe-area-inset-bottom) + 84px));${A}:12px;width:min(440px,calc(100vw - 24px));max-height:calc(100dvh - 110px);overflow:auto;background:var(--yv-bg);color:var(--yv-text);border:1px solid var(--yv-border);border-radius:16px;box-shadow:0 12px 40px rgba(15,23,42,.25);z-index:2147483001;font:15px/1.5 system-ui,-apple-system,"Segoe UI",sans-serif}
|
|
516
517
|
.yv-dialog.yv-wide{width:min(620px,calc(100vw - 24px))}
|
|
517
518
|
.yv-dialog-head{position:sticky;top:0;z-index:1;display:flex;justify-content:space-between;align-items:flex-start;gap:10px;padding:14px 16px;border-bottom:1px solid var(--yv-border);background:var(--yv-bg)}
|
|
518
519
|
.yv-dialog-head h2{margin:0;font-size:1.1em}
|
|
@@ -536,8 +537,8 @@ Missing landmarks: ${o.join(", ")}.`:""}`,targets:[],suggestions:o.includes("mai
|
|
|
536
537
|
.yv-step[aria-pressed=true]::after{background:var(--yv-primary)}
|
|
537
538
|
.yv-status{margin:10px 0 0;padding:9px 11px;border-radius:8px;background:var(--yv-soft);border:1px solid var(--yv-border);font-size:.85em}
|
|
538
539
|
.yv-status:empty{display:none}
|
|
539
|
-
@media (max-width:560px){.yv-dialog{${
|
|
540
|
+
@media (max-width:560px){.yv-dialog{${A}:8px;width:calc(100vw - 16px)}.yv-toolbar{align-items:stretch}.yv-search{flex-basis:100%}}
|
|
540
541
|
@media (prefers-reduced-motion:reduce){.yv-switch span,.yv-switch span::after{transition:none}}
|
|
541
|
-
`,document.head.appendChild(n)}var va={query:"Grid query",anomalies:"Anomalies",summary:"Summary",insight:"BI insight",tasks:"Task steps"};function hn(e,t,n={}){let r=typeof e=="string"?document.querySelector(e):e;if(!r)throw new Error("mountAgenticGridBar: container not found");if(!t||typeof t.ask!="function")throw new Error("mountAgenticGridBar: pass the object from createAgenticGrid() or grid.agentic");let a=n.title||"Ask about this data",i=_("yv-q"),o=_("yv-qh"),l=c("input",{id:i,class:"yv-input",type:"text",autocomplete:"off",placeholder:n.placeholder||"Ask the grid\u2026 e.g. salary over 1 lakh in Hyderabad","aria-describedby":o}),s=c("button",{type:"submit",class:"yv-btn yv-primary"},z("spark",16),"Ask"),d=c("button",{type:"button",class:"yv-btn"},z("reset",16),"Show all rows"),A=c("p",{class:"yv-muted",style:"margin:10px 0 0",hidden:!0}),m=c("div",{class:"yv-answer",role:"status","aria-live":"polite"}),f=c("div"),u=n.examples||["salary over 1 lakh","anything unusual?","average salary by department","show salary over 80k, then sort by salary, then summarize"],k=c("div",{class:"yv-chips","aria-label":"Example questions"},...u.map(I=>c("button",{type:"button",class:"yv-chip","data-example":I},I))),b=c("form",{class:"yv-row",role:"search","aria-label":a},c("label",{for:i,class:"yv-sr"},a),l,s,d),p=c("section",{class:`yv-box yv-agentic-bar${n.theme?" yv-theme-"+n.theme:""}`,"aria-label":a},c("h3",null,z("spark",16)," ",a),c("p",{id:o,class:"yv-muted",style:"margin:0 0 8px"},n.hint||"Plain-English questions. Understands 10k, 1.5 lakh, 2cr. Every answer says which filters it used."),b,k,A,m,f);r.appendChild(p);function E(I){if(s.disabled=!!I.busy,p.setAttribute("aria-busy",String(!!I.busy)),!I.busy){if(m.textContent=I.answer||"",A.hidden=!I.kind,A.textContent=I.kind?`${va[I.kind]||I.kind} \xB7 ${I.visibleIds.length} row(s) shown`:"",f.replaceChildren(),I.table&&I.table.length){let h=Object.keys(I.table[0]),w=c("table",{class:"yv-mini"});w.innerHTML=`<caption class="yv-sr">Answer table</caption><thead><tr>${h.map(y=>`<th scope="col">${An(y)}</th>`).join("")}</tr></thead><tbody>${I.table.map(y=>`<tr>${h.map(S=>`<td>${An(y[S])}</td>`).join("")}</tr>`).join("")}</tbody>`,f.append(c("div",{style:"overflow-x:auto"},w))}I.steps&&I.steps.length&&f.append(c("ol",{class:"yv-steps","aria-label":"Steps"},...I.steps.map(h=>c("li",null,c("span",{class:h.success===!1?"yv-fail":"yv-ok"},h.success===!1?"\u2717 ":"\u2713 "),c("b",null,h.action),": ",h.message||h.text))))}}let Q=t.subscribe(E);return b.addEventListener("submit",I=>{I.preventDefault(),t.ask(l.value)}),d.addEventListener("click",()=>{l.value="",t.reset()}),k.addEventListener("click",I=>{let h=I.target.closest("[data-example]");h&&(l.value=h.getAttribute("data-example"),t.ask(l.value))}),{element:p,ask:I=>(l.value=I,t.ask(I)),destroy(){Q(),p.remove()}}}var $i=["AGFzbQEAAAABYA1gA39/fwF/YAJ/fwF/YAN/f38AYAV/f39/fwBgBX9/f39/AX9gBH9/f38AYAR/f39/AX9gCH9/f39/f39/AX9g","AX8AYAABf2AHf39/f39/fwF/YAZ/f39/f38Bf2AAAAMkIwIDBAIFBQICAgIGBgYGAwcICQoFCQIBBQILBQYAAQICAgwABAUBcAEC","AgUDAQARBgkBfwFBgIDAAAsHPAUGbWVtb3J5AgAMeWtfaGVhcF9iYXNlABEJeWtfc2VhcmNoABIHeWtfc29ydAATCnlrX3ZlcnNp","b24AFAkHAQBBAQsBHQrEWiO8BgMFfwJ8BH8CQCABQQJJDQACQAJAAkACQAJAAkACQAJAAkAgACgCBCIDIAIoAgAiBCgCBCIFTw0A","IAAoAgAiBiAFTw0BIAQoAgAiByAGQQN0aisDACEIAkACQCAHIANBA3RqKwMAIgkgCWINACAIIAhiDQFBAEEAQX8gCSAIZiIKG0EB","QX4gChsgCSAIZRsiCmsgCiAEKAIILQAAG0H/AXEiCkH/AUYgAyAGSSAKGw0BDAYLIAMgBk8NBSAIIAhhDQULQQIhCkEBIQsgAUEC","Rg0GIABBCGohDEECIQoDQCADIQYgDCgCACIDIAVPDQMgBiAFTw0EIAcgBkEDdGorAwAhCAJAAkAgByADQQN0aisDACIJIAliDQAg","CCAIYg0BQQBBAEF/IAkgCGYiDRtBAUF+IA0bIAkgCGUbIg1rIA0gBCgCCC0AABtB/wFxIg1B/wFGIAMgBkkgDRtBAUYNAUEBIQsM","CQsgAyAGTw0IIAggCGENCAsgDEEEaiEMIAEgCkEBaiIKRw0AC0EBIQsMBQsgAyAFQdSEwIAAEJiAgIAAAAsgBiAFQeSEwIAAEJiA","gIAAAAsgAyAFQdSEwIAAEJiAgIAAAAsgBiAFQeSEwIAAEJiAgIAAAAtBAiEKQQAhCyABQQJGDQEgAEEIaiEMQQIhCgNAIAMhBiAM","KAIAIgMgBU8NAyAGIAVPDQQgByAGQQN0aisDACEIAkACQCAHIANBA3RqKwMAIgkgCWINACAIIAhiDQRBAEEAQX8gCSAIZiING0EB","QX4gDRsgCSAIZRsiDWsgDSAEKAIILQAAG0H/AXEiDUH/AUYgAyAGSSANG0UNAUEAIQsMBAsgAyAGTw0AIAggCGINAwsgDEEEaiEM","IAEgCkEBaiIKRw0ACwsgASEKCwJAIAogAUYNACAAIAFBACABQQFyZ0EBdEE+cyACEIGAgIAADAMLIAtFDQIgAUEBdiEGIAFBAnQg","AGpBfGohAwNAIAAoAgAhCiAAIAMoAgA2AgAgAyAKNgIAIANBfGohAyAAQQRqIQAgBkF/aiIGDQAMAwsLIAMgBUHUhMCAABCYgICA","AAALIAYgBUHkhMCAABCYgICAAAALC7YIBAh/AnwDfwF8I4CAgIAAQRBrIgUkgICAgAACQAJAIAFBIUkNACADQX9qIQMDQAJAIANB","f0cNACAAIAEgBBCJgICAAAwDCyAAIAFBA3YiBkEcbGohByAAIAZBBHRqIQgCQAJAIAFBwABJDQAgACAIIAcgBiAEEIKAgIAAIQYM","AQsCQAJAAkACQAJAAkAgACgCACIGIAQoAgAiCSgCBCIKTw0AIAgoAgAiCyAKTw0BIAkoAgAiDCALQQN0aisDACENAkACQAJAAkAg","DCAGQQN0aisDACIOIA5iIg8NACANIA1hDQFBASEQDAMLIA0gDWINAUEAIRAMAgtBAEEAQX8gDiANZiIRG0EBQX4gERsgDiANZRsi","EWsgESAJKAIILQAAG0H/AXEiEUH/AUYgBiALSSARGyEQDAELIAYgC0khEAsgBygCACIRIApPDQIgDCARQQN0aisDACESAkACQAJA","AkACQAJAAkAgDw0AIBIgEmENASAAIQYgEEUNDSANIA1iDQYMCwsgEiASYg0BIAAhBiAQDQwgDSANYQ0DDAkLQQBBAEF/IA4gEmYi","ChtBAUF+IAobIA4gEmUbIgprIAogCSgCCC0AABtB/wFxIgpB/wFGIAYgEUkgChshCgwBCyAGIBFJIQoLIAAhBiAQIApHDQkgDSAN","Yg0BIBIgEmINBwtBAEEAQX8gDSASZiIGG0EBQX4gBhsgDSASZRsiBmsgBiAJKAIILQAAG0H/AXEiBkH/AUYgCyARSSAGGyEGDAcL","IBIgEmENBAsgCyARSSEGDAULIAYgCkHUhMCAABCYgICAAAALIAsgCkHkhMCAABCYgICAAAALIBEgCkHkhMCAABCYgICAAAALQQAh","BgwBC0EBIQYLIAcgCCAQIAZzGyEGCyAGIABrIgdBAnYhBgJAAkAgAkUNAAJAAkACQCACKAIAIgggBCgCACIJKAIEIgtPDQAgACAH","aigCACIHIAtPDQEgCSgCACILIAdBA3RqKwMAIQ0CQAJAIAsgCEEDdGorAwAiEiASYg0AIA0gDWINBUEAQQBBfyASIA1mIgsbQQFB","fiALGyASIA1lGyILayALIAkoAggtAAAbQf8BcSIJQf8BRiAIIAdJIAkbDQUMAQsgCCAHTw0AIA0gDWINBAsgBSAENgIMIAAgASAG","IAVBDGoQjICAgAAiBkEBaiECIAYgAU8NAiABIAJrIQEgACACQQJ0aiEAQQAhAgwECyAIIAtB1ITAgAAQmICAgAAACyAHIAtB5ITA","gAAQmICAgAAACyACIAEgAUHEhMCAABCXgICAAAALIAAgACABIAYgBBCNgICAACIGIAIgAyAEEIGAgIAAIAEgBkF/c2ohASAAIAZB","AnRqIgJBBGohAAsgA0F/aiEDIAFBIU8NAAsLIAAgASAEEIiAgIAACyAFQRBqJICAgIAAC4kFBAR/AnwCfwF8AkAgA0H4////AXFF","DQAgACAAIANBA3YiA0EEdCIFaiAAIANBHGwiBmogAyAEEIKAgIAAIQAgASABIAVqIAEgBmogAyAEEIKAgIAAIQEgAiACIAVqIAIg","BmogAyAEEIKAgIAAIQILAkACQAJAAkACQAJAAkAgACgCACIDIAQoAgAiBCgCBCIHTw0AIAEoAgAiBSAHTw0BIAQoAgAiCCAFQQN0","aisDACEJAkACQAJAAkAgCCADQQN0aisDACIKIApiIgsNACAJIAlhDQFBASEMDAMLIAkgCWINAUEAIQwMAgtBAEEAQX8gCiAJZiIG","G0EBQX4gBhsgCiAJZRsiBmsgBiAEKAIILQAAG0H/AXEiBkH/AUYgAyAFSSAGGyEMDAELIAMgBUkhDAsgAigCACIGIAdPDQIgCCAG","QQN0aisDACENAkACQAJAAkACQAJAAkAgCw0AIA0gDWENASAMRQ0NIAkgCWINBgwLCyANIA1iDQEgDA0MIAkgCWENAwwJC0EAQQBB","fyAKIA1mIgcbQQFBfiAHGyAKIA1lGyIHayAHIAQoAggtAAAbQf8BcSIHQf8BRiADIAZJIAcbIQMMAQsgAyAGSSEDCyAMIANHDQkg","CSAJYg0BIA0gDWINBwtBAEEAQX8gCSANZiIAG0EBQX4gABsgCSANZRsiAGsgACAEKAIILQAAG0H/AXEiAEH/AUYgBSAGSSAAGyEA","DAcLIA0gDWENBAsgBSAGSSEADAULIAMgB0HUhMCAABCYgICAAAALIAUgB0HkhMCAABCYgICAAAALIAYgB0HkhMCAABCYgICAAAAL","QQAhAAwBC0EBIQALIAIgASAMIABzGyEACyAAC9wDAwR/AnwBfwJAAkAgASgCACIDIAIoAgAiAigCBCIETw0AAkAgAUF8aiIFKAIA","IgYgBE8NACACKAIAIgQgBkEDdGorAwAhBwJAAkAgBCADQQN0aisDACIIIAhiDQAgByAHYg0BQQBBAEF/IAggB2YiBBtBAUF+IAQb","IAggB2UbIgRrIAQgAigCCC0AABtB/wFxIgRB/wFGIAMgBkkgBBtBAUYNAQwECyADIAZPDQMgByAHYQ0DCyABIAY2AgACQCAFIABG","DQAgA0EDdCEJA0AgBSEGAkACQAJAIAMgAigCBCIETw0AIAZBfGoiBSgCACIBIARPDQEgAigCACIEIAFBA3RqKwMAIQcCQAJAIAQg","CWorAwAiCCAIYg0AIAcgB2INBEEAQQBBfyAIIAdmIgQbQQFBfiAEGyAIIAdlGyIEayAEIAIoAggtAAAbQf8BcSIEQf8BRiADIAFJ","IAQbQQFHDQEMBAsgAyABTw0AIAcgB2INAwsgBiEFDAQLIAMgBEHUhMCAABCYgICAAAALIAEgBEHkhMCAABCYgICAAAALIAYgATYC","ACAFIABHDQALCyAFIAM2AgAPCyAGIARB5ITAgAAQmICAgAAACyADIARB1ITAgAAQmICAgAAACwunBQMIfwJ8A38gAiABQQJ0QXxq","IgRqIQUgACAEaiEGIAAgAUEBdiIHQQJ0aiIIQXxqIQkgAygCACEDAkACQAJAAkACQANAIAgoAgAiCiADKAIEIgtPDQEgACgCACIE","IAtPDQIgAygCACILIARBA3RqKwMAIQwCQAJAAkAgCyAKQQN0aisDACINIA1iDQAgDCAMYg0BQQAhC0EAQQBBfyANIAxmIg4bQQFB","fiAOGyANIAxlGyIOayAOIAMoAggtAAAbQf8BcSIOQf8BRiAKIARJIA4bQQFGDQEMAgtBACELIAogBE8NASAMIAxhDQELQQEhCyAK","IQQLIAIgBDYCACAGKAIAIgQgAygCBCIOTw0DIAkoAgAiCiAOTw0EIAtBAnQhDiALQQFzQQJ0IQ8gAygCACILIApBA3RqKwMAIQwC","QAJAAkAgCyAEQQN0aisDACINIA1iDQAgDCAMYg0BQQAhC0EAQQBBfyANIAxmIhAbQQFBfiAQGyANIAxlGyIQayAQIAMoAggtAAAb","Qf8BcSIQQf8BRiAEIApJIBAbQQFGDQEMAgtBACELIAQgCk8NASAMIAxhDQELQQEhCyAKIQQLIAJBBGohAiAIIA5qIQggACAPaiEA","IAUgBDYCACAFQXxqIQUgCSALQQJ0IgRrIQkgBCAGakF8aiEGIAdBf2oiBw0ACyAGQQRqIQQgCUEEaiEDAkAgAUEBcUUNACACIAAg","CCAAIANJIgobKAIANgIAIAggACADT0ECdGohCCAAIApBAnRqIQALAkAgCCAERw0AIAAgA0YNBQsQoYCAgAAACyAKIAtB1ITAgAAQ","mICAgAAACyAEIAtB5ITAgAAQmICAgAAACyAEIA5B1ITAgAAQmICAgAAACyAKIA5B5ITAgAAQmICAgAAACwuDAgICfwJ8AkACQAJA","AkAgACACQQJ0aiIEKAIAIgIgAygCACIDKAIEIgVPDQAgACABQQJ0aiIBKAIAIgAgBU8NASADKAIAIgUgAEEDdGorAwAhBgJAAkAg","BSACQQN0aisDACIHIAdiDQAgBiAGYg0EQQBBAEF/IAcgBmYiBRtBAUF+IAUbIAcgBmUbIgVrIAUgAygCCC0AABtB/wFxIgNB/wFG","IAIgAEkgAxtBAUcNAQwECyACIABPDQAgBiAGYg0DCyAAIQMgAiEADAMLIAIgBUHUhMCAABCYgICAAAALIAAgBUHkhMCAABCYgICA","AAALIAIhAwsgASADNgIAIAQgADYCAAvsAgACQCABQQlJDQAgAEEAQQMgAhCFgICAACAAQQFBByACEIWAgIAAIABBAkEFIAIQhYCA","gAAgAEEEQQggAhCFgICAACAAQQBBByACEIWAgIAAIABBAkEEIAIQhYCAgAAgAEEDQQggAhCFgICAACAAQQVBBiACEIWAgIAAIABB","AEECIAIQhYCAgAAgAEEBQQMgAhCFgICAACAAQQRBBSACEIWAgIAAIABBB0EIIAIQhYCAgAAgAEEBQQQgAhCFgICAACAAQQNBBiAC","EIWAgIAAIABBBUEHIAIQhYCAgAAgAEEAQQEgAhCFgICAACAAQQJBBCACEIWAgIAAIABBA0EFIAIQhYCAgAAgAEEGQQggAhCFgICA","ACAAQQJBAyACEIWAgIAAIABBBEEFIAIQhYCAgAAgAEEGQQcgAhCFgICAACAAQQFBAiACEIWAgIAAIABBA0EEIAIQhYCAgAAgAEEF","QQYgAhCFgICAAA8LAAuEBQACQCABQQ1JDQAgAEEAQQwgAhCFgICAACAAQQFBCiACEIWAgIAAIABBAkEJIAIQhYCAgAAgAEEDQQcg","AhCFgICAACAAQQVBCyACEIWAgIAAIABBBkEIIAIQhYCAgAAgAEEBQQYgAhCFgICAACAAQQJBAyACEIWAgIAAIABBBEELIAIQhYCA","gAAgAEEHQQkgAhCFgICAACAAQQhBCiACEIWAgIAAIABBAEEEIAIQhYCAgAAgAEEBQQIgAhCFgICAACAAQQNBBiACEIWAgIAAIABB","B0EIIAIQhYCAgAAgAEEJQQogAhCFgICAACAAQQtBDCACEIWAgIAAIABBBEEGIAIQhYCAgAAgAEEFQQkgAhCFgICAACAAQQhBCyAC","EIWAgIAAIABBCkEMIAIQhYCAgAAgAEEAQQUgAhCFgICAACAAQQNBCCACEIWAgIAAIABBBEEHIAIQhYCAgAAgAEEGQQsgAhCFgICA","ACAAQQlBCiACEIWAgIAAIABBAEEBIAIQhYCAgAAgAEECQQUgAhCFgICAACAAQQZBCSACEIWAgIAAIABBB0EIIAIQhYCAgAAgAEEK","QQsgAhCFgICAACAAQQFBAyACEIWAgIAAIABBAkEEIAIQhYCAgAAgAEEFQQYgAhCFgICAACAAQQlBCiACEIWAgIAAIABBAUECIAIQ","hYCAgAAgAEEDQQQgAhCFgICAACAAQQVBByACEIWAgIAAIABBBkEIIAIQhYCAgAAgAEECQQMgAhCFgICAACAAQQRBBSACEIWAgIAA","IABBBkEHIAIQhYCAgAAgAEEIQQkgAhCFgICAACAAQQNBBCACEIWAgIAAIABBBUEGIAIQhYCAgAAPCwALlgIBB38jgICAgABBgAFr","IgMkgICAgAACQAJAIAFBAkkNACABQSBLDQEgASABQQF2IgQgAUESSSIFGyEGIAEgBGshByAAIARBAnRqIQggACEJA0ACQAJAIAZB","DEsNAEEBIQQgBkEITQ0BIAkgBiACEIaAgIAAQQkhBAwBCyAJIAYgAhCHgICAAEENIQQLIARBf2ogBk8NAgJAIAQgBkYNACAEQQJ0","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","EJiAgIAAAAsgByAKQeSEwIAAEJiAgIAAAAsgBCABQdSEwIAAEJiAgIAAAAsgBSABQeSEwIAAEJiAgIAAAAuwCAMJfwJ8An8CQCAB","DQBBAA8LIAIoAgAhBCAAKAIAIQVBACEGIAAhAgJAIABBBGoiByAAIAFBAnRqIghBfGoiCU8NACADKAIAIgooAgQhAUEAIQYgACEC","AkACQAJAAkADQCACQQRqIgsoAgAiByABTw0BIAQgAU8NAiAKKAIAIgwgBEEDdGorAwAhDQJAAkACQAJAIAwgB0EDdGorAwAiDiAO","Yg0AIA0gDWENAUEBIQ8MAwsgDSANYg0BQQAhDwwCC0EAQQBBfyAOIA1mIhAbQQFBfiAQGyAOIA1lGyIQayAQIAooAggtAAAbQf8B","cSIQQf8BRiAHIARJIBAbIQ8MAQsgByAESSEPCyACIAAgBkECdGoiECgCADYCACAQIAc2AgAgAkEIaiICKAIAIgcgAU8NAyAGIA9q","IQYCQAJAAkACQCAMIAdBA3RqKwMAIg4gDmINACANIA1hDQFBASEMDAMLIA0gDWINAUEAIQwMAgtBAEEAQX8gDiANZiIMG0EBQX4g","DBsgDiANZRsiDGsgDCAKKAIILQAAG0H/AXEiDEH/AUYgByAESSAMGyEMDAELIAcgBEkhDAsgCyAAIAZBAnRqIhAoAgA2AgAgECAH","NgIAIAYgDGohBiACQQRqIAlPDQQMAAsLIAcgAUHUhMCAABCYgICAAAALIAQgAUHkhMCAABCYgICAAAALIAcgAUHUhMCAABCYgICA","AAALIAJBBGohBwsCQAJAAkACQAJAIAcgCEYNACADKAIAIQEDQCACIQwgByICKAIAIgcgASgCBCIKTw0CIAQgCk8NAyABKAIAIgog","BEEDdGorAwAhDQJAAkACQAJAIAogB0EDdGorAwAiDiAOYg0AIA0gDWENAUEBIQoMAwsgDSANYg0BQQAhCgwCC0EAQQBBfyAOIA1m","IgobQQFBfiAKGyAOIA1lGyIKayAKIAEoAggtAAAbQf8BcSIKQf8BRiAHIARJIAobIQoMAQsgByAESSEKCyAMIAAgBkECdGoiCygC","ADYCACALIAc2AgAgBiAKaiEGIAJBBGoiByAIRw0ACyAHQXxqIQILIAUgAygCACIHKAIEIgFPDQIgBCABTw0DIAcoAgAiASAEQQN0","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","gYCAgAA2AhwgA0GBgICAADYCFCADIANBCGo2AhggAyADQQxqNgIQQaiAwIAAIANBEGogAhCVgICAAAALjwUCBn8BfiOAgICAAEEQ","ayIGJICAgIAAAkACQCABDQAgBUEBaiEHIAAoAgghCEEtIQkMAQtBK0F/IAAoAggiCEGAgIABcSIBGyEJIAFBFXYgBWohBwsCQAJA","IAhBgICABHENAEEAIQIMAQsCQAJAIANBEEkNACACIAMQloCAgAAhCgwBC0EAIQogA0UNACACIQEgAyELA0AgCiABLAAAQb9/Smoh","CiABQQFqIQEgC0F/aiILDQALCyAKIAdqIQcLAkACQAJAAkACQCAHIAAvAQwiCk8NACAIQYCAgAhxDQFBASEBIAYgACAKIAdrQQEQ","moCAgAAgBigCACIHQX9GDQQgBi8BBCELIAAgCSACIAMQm4CAgAANBCAAKAIAIgMgBCAFIAAoAgQiAigCDBGAgICAAICAgIAADQRB","ACEKIAtB//8DcSELA0AgCyAKQf//A3EiAEshASALIABNDQUgCkEBaiEKIAMgByACKAIQEYGAgIAAgICAgABFDQAMBQsLIAAgCSAC","IAMQm4CAgABFDQEMAgsgACAAKQIIIgynQYCAgP95cUGwgICAAnI2AgggACAJIAIgAxCbgICAAA0BQQEhASAGQQhqIAAgCiAHa0EB","EJqAgIAAIAYoAggiC0F/Rg0CIAYvAQwhAiAAKAIAIgcgBCAFIAAoAgQiAygCDBGAgICAAICAgIAADQJBACEKIAJB//8DcSECAkAD","QCACIApB//8DcU0NAUEBIQEgCkEBaiEKIAcgCyADKAIQEYGAgIAAgICAgABFDQAMBAsLIAAgDDcCCEEAIQEMAgsgACgCACAEIAUg","ACgCBCgCDBGAgICAAICAgIAAIQEMAQtBASEBCyAGQRBqJICAgIAAIAELuAEBA38gAiEEAkACQAJAAkAgASgCCCIFQR12QQNxDgQB","AwACAQsgAkH+/wNxQQF2IQQMAgtBACEEDAELIAJBACADQf8BcRshBAsgBUH///8AcSEFIAEoAgQhAyABKAIAIQZBACEBAkACQANA","IAFB//8DcSAEQf//A3FPDQEgAUEBaiEBIAYgBSADKAIQEYGAgIAAgICAgABFDQALQX8hBQwBCyACIARrIQELIAAgATsBBCAAIAU2","AgALUgACQCABQX9GDQAgACgCACABIAAoAgQoAhARgYCAgACAgICAAEUNAEEBDwsCQCACDQBBAA8LIAAoAgAgAiADIAAoAgQoAgwR","gICAgACAgICAAAvRAwEJfwJAAkAgAEHoB08NACAAIQMMAQsgAUF8aiEEQQAhBSAAIQYCQAJAAkACQAJAA0AgBiAGQZDOAG4iA0GQ","zgBsayIHQf//A3FB5ABuIQggAiAFaiIJQXxqIAJPDQEgBCACaiIKIAhBAXQiCy0ApIXAgAA6AAAgCUF9aiACTw0CIApBAWogC0Gl","hcCAAGotAAA6AAAgCUF+aiACTw0DIApBAmogByAIQeQAbGtBAXRB/v8HcSIILQCkhcCAADoAACAJQX9qIAJPDQQgCkEDaiAIQaWF","wIAAai0AADoAACAEQXxqIQQgBUF8aiEFIAZB/6ziBEshCSADIQYgCUUNBQwACwsgCUF8aiACQZSFwIAAEJiAgIAAAAsgCUF9aiAC","QZSFwIAAEJiAgIAAAAsgCUF+aiACQZSFwIAAEJiAgIAAAAsgCUF/aiACQZSFwIAAEJiAgIAAAAsgAiAFaiECCwJAAkAgA0EKTw0A","IAMhBgwBCyABIAJBfmoiAmogAyADQf//A3FB5ABuIgZB5ABsa0H//wNxQQF0LwCkhcCAADsAAAsCQAJAIABFDQAgBkUNAQsgASAC","QX9qIgJqIAZBAXRBHnEtAKWFwIAAOgAACyACC1EBAX8jgICAgABBEGsiAiSAgICAACABQQFBAUEAIAJBBmogACgCACACQQZqQQoQ","nICAgAAiAGpBCiAAaxCZgICAACEAIAJBEGokgICAgAAgAAthAQF/I4CAgIAAQSBrIgMkgICAgAAgAyABNgIMIAMgADYCCCADQYGA","gIAANgIcIANBgYCAgAA2AhQgAyADQQxqNgIYIAMgA0EIajYCEEGAgMCAACADQRBqIAIQlYCAgAAAC2EBAX8jgICAgABBIGsiAySA","gICAACADIAE2AgwgAyAANgIIIANBgYCAgAA2AhwgA0GBgICAADYCFCADIANBDGo2AhggAyADQQhqNgIQQd+AwIAAIANBEGogAhCV","gICAAAALYQEBfyOAgICAAEEgayIDJICAgIAAIAMgATYCDCADIAA2AgggA0GBgICAADYCHCADQYGAgIAANgIUIAMgA0EMajYCGCAD","IANBCGo2AhBBmIHAgAAgA0EQaiACEJWAgIAAAAsYAEHshsCAAEGZAUG4h8CAABCVgICAAAALSgEDf0EAIQMCQCACRQ0AAkADQCAA","LQAAIgQgAS0AACIFRw0BIABBAWohACABQQFqIQEgAkF/aiICRQ0CDAALCyAEIAVrIQMLIAMLC9IHAQBBgIDAAAvIBxZzbGljZSBp","bmRleCBzdGFydHMgYXQgwA0gYnV0IGVuZHMgYXQgwAAgaW5kZXggb3V0IG9mIGJvdW5kczogdGhlIGxlbiBpcyDAEiBidXQgdGhl","IGluZGV4IGlzIMAAEnJhbmdlIHN0YXJ0IGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAAEHJhbmdl","IGVuZCBpbmRleCDAIiBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCDAAC9yb290Ly5ydXN0dXAvdG9vbGNoYWlucy9z","dGFibGUteDg2XzY0LXVua25vd24tbGludXgtZ251L2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uv","c29ydC9zaGFyZWQvc21hbGxzb3J0LnJzAC9yb290Ly5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUteDg2XzY0LXVua25vd24tbGlu","dXgtZ251L2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC91bnN0YWJsZS9xdWlja3NvcnQu","cnMAL3Jvb3QvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS14ODZfNjQtdW5rbm93bi1saW51eC1nbnUvbGliL3J1c3RsaWIvc3Jj","L3J1c3QvbGlicmFyeS9jb3JlL3NyYy9mbXQvbnVtLnJzAHNyYy9saWIucnMAAABNARAAfwAAADgAAAAbAAAANwIQAAoAAAAlAAAA","EgAAADcCEAAKAAAAJgAAABIAAAA3AhAACgAAAGAAAAAMAAAANwIQAAoAAABgAAAAIwAAAM0BEABpAAAAWAIAAAUAAAAwMDAxMDIw","MzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQw","NDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3","ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OXVzZXItcHJvdmlkZWQgY29tcGFyaXNvbiBmdW5jdGlv","biBkb2VzIG5vdCBjb3JyZWN0bHkgaW1wbGVtZW50IGEgdG90YWwgb3JkZXLPABAAfQAAAFYDAAAFAAAA"].join("");var Ia=1e4,fn="\0";function Bt(e,t){return e==="rust"||e==="auto"&&t>=Ia}var Ca=1,xa=65536,Et=null,vr=null;function ka(e){if(typeof atob=="function"){let n=atob(e),r=new Uint8Array(n.length);for(let a=0;a<n.length;a++)r[a]=n.charCodeAt(a);return r}let t=globalThis.Buffer;if(t)return new Uint8Array(t.from(e,"base64"));throw new Error("No base64 decoder")}function Li(){return Et?Promise.resolve(Et):(vr||(vr=(async()=>{try{return typeof WebAssembly>"u"?null:(Et=await WebAssembly.compile(ka($i)),Et)}catch{return null}})()),vr)}function Gi(e){let t=e.isWellFormed;if(typeof t=="function")return t.call(e);for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);if(r>=55296&&r<=56319){let a=e.charCodeAt(n+1);if(a>=56320&&a<=57343){n++;continue}return!1}if(r>=56320&&r<=57343)return!1}return!0}var kt=e=>e+7&-8,mn=class e{x;base;encoder=new TextEncoder;offsetsPtr=0;textPtr=0;textLen=0;rows=0;hasIndex=!1;freePtr;constructor(t){this.x=t,this.base=kt(t.yk_heap_base()),this.freePtr=this.base}static create(t=Et){if(!t)return null;try{let r=new WebAssembly.Instance(t,{}).exports;return r.yk_version()!==Ca?null:new e(r)}catch{return null}}ensure(t){let n=t-this.x.memory.buffer.byteLength;n>0&&this.x.memory.grow(Math.ceil(n/xa))}setSearchTexts(t){this.hasIndex=!1,this.freePtr=this.base;try{let n=0;for(let A of t){if(!Gi(A))return!1;n+=A.length*3}let r=t.length,a=this.base,i=kt(a+(r+1)*4);this.ensure(i+n);let o=this.x.memory.buffer,l=new Uint32Array(o,a,r+1),s=new Uint8Array(o,i,n),d=0;for(let A=0;A<r;A++)l[A]=d,d+=this.encoder.encodeInto(t[A],s.subarray(d)).written??0;return l[r]=d,this.offsetsPtr=a,this.textPtr=i,this.textLen=d,this.rows=r,this.freePtr=kt(i+d),this.hasIndex=!0,!0}catch{return!1}}search(t){if(!this.hasIndex||!t||t.includes(fn)||!Gi(t))return null;try{let n=this.encoder.encode(t),r=this.freePtr,a=kt(r+n.length);this.ensure(a+this.rows*4),new Uint8Array(this.x.memory.buffer,r,n.length).set(n);let i=this.x.yk_search(this.textPtr,this.textLen,this.offsetsPtr,this.rows,r,n.length,a);return new Uint32Array(this.x.memory.buffer,a,i).slice()}catch{return null}}sortByKeys(t,n){try{let r=t.length,a=this.freePtr,i=kt(a+r*8);return this.ensure(i+r*4),new Float64Array(this.x.memory.buffer,a,r).set(t),this.x.yk_sort(a,r,n?1:0,i),new Uint32Array(this.x.memory.buffer,i,r).slice()}catch{return null}}};function Pi(e){return e>=.1?`${e<10?e.toFixed(1):Math.round(e)} ms`:"<0.1 ms"}function Ir(e,t){let n=new Array(t.length);for(let r=0;r<t.length;r++)n[r]=e[t[r]];return n}var Ea={en:{search:"Search\u2026",searchAria:"Search grid",rows:"rows",selected:"selected",loading:"Loading\u2026",noData:"No data found.",selectRow:e=>`Select row ${e}`,selectPage:"Select all rows on this page",pageSize:"Rows per page",page:(e,t)=>`Page ${e} of ${t}`,showing:(e,t,n)=>n?`Showing ${e}\u2013${t} of ${n}`:"No rows",first:"First page",previous:"Previous page",next:"Next page",last:"Last page",yes:"Yes",no:"No",sortedAsc:e=>`Sorted by ${e}, ascending`,sortedDesc:e=>`Sorted by ${e}, descending`,sortCleared:"Sorting cleared",filters:e=>`${e} filter(s) applied`,clearFilters:"Clear filters",removeFilter:e=>`Remove filter: ${e}`,export:"Export CSV",tableView:"Table view",cardView:"Card view",highlighted:"highlighted",results:e=>`${e} result(s)`,ops:{contains:"contains",equals:"is",startsWith:"starts with",endsWith:"ends with",greaterThan:">",lessThan:"<",between:"between"}},te:{search:"\u0C36\u0C4B\u0C27\u0C3F\u0C02\u0C1A\u0C02\u0C21\u0C3F\u2026",searchAria:"\u0C17\u0C4D\u0C30\u0C3F\u0C21\u0C4D\u200C\u0C32\u0C4B \u0C36\u0C4B\u0C27\u0C3F\u0C02\u0C1A\u0C02\u0C21\u0C3F",rows:"\u0C35\u0C30\u0C41\u0C38\u0C32\u0C41",selected:"\u0C0E\u0C02\u0C1A\u0C41\u0C15\u0C41\u0C28\u0C4D\u0C28\u0C35\u0C3F",loading:"\u0C32\u0C4B\u0C21\u0C4D \u0C05\u0C35\u0C41\u0C24\u0C4B\u0C02\u0C26\u0C3F\u2026",noData:"\u0C21\u0C47\u0C1F\u0C3E \u0C15\u0C28\u0C2C\u0C21\u0C32\u0C47\u0C26\u0C41.",selectRow:e=>`\u0C35\u0C30\u0C41\u0C38 ${e} \u0C0E\u0C02\u0C1A\u0C41\u0C15\u0C4B\u0C02\u0C21\u0C3F`,selectPage:"\u0C08 \u0C2A\u0C47\u0C1C\u0C40\u0C32\u0C4B\u0C28\u0C3F \u0C05\u0C28\u0C4D\u0C28\u0C3F \u0C35\u0C30\u0C41\u0C38\u0C32\u0C41 \u0C0E\u0C02\u0C1A\u0C41\u0C15\u0C4B\u0C02\u0C21\u0C3F",pageSize:"\u0C2A\u0C47\u0C1C\u0C40 \u0C2A\u0C30\u0C3F\u0C2E\u0C3E\u0C23\u0C02",page:(e,t)=>`\u0C2A\u0C47\u0C1C\u0C40 ${e} / ${t}`,showing:(e,t,n)=>n?`${n} \u0C32\u0C4B ${e}\u2013${t}`:"\u0C35\u0C30\u0C41\u0C38\u0C32\u0C41 \u0C32\u0C47\u0C35\u0C41",first:"\u0C2E\u0C4A\u0C26\u0C1F\u0C3F \u0C2A\u0C47\u0C1C\u0C40",previous:"\u0C35\u0C46\u0C28\u0C41\u0C15\u0C15\u0C41",next:"\u0C2E\u0C41\u0C02\u0C26\u0C41\u0C15\u0C41",last:"\u0C1A\u0C3F\u0C35\u0C30\u0C3F \u0C2A\u0C47\u0C1C\u0C40",yes:"\u0C05\u0C35\u0C41\u0C28\u0C41",no:"\u0C15\u0C3E\u0C26\u0C41",sortedAsc:e=>`${e} \u0C2A\u0C4D\u0C30\u0C15\u0C3E\u0C30\u0C02 \u0C06\u0C30\u0C4B\u0C39\u0C23 \u0C15\u0C4D\u0C30\u0C2E\u0C02`,sortedDesc:e=>`${e} \u0C2A\u0C4D\u0C30\u0C15\u0C3E\u0C30\u0C02 \u0C05\u0C35\u0C30\u0C4B\u0C39\u0C23 \u0C15\u0C4D\u0C30\u0C2E\u0C02`,sortCleared:"\u0C15\u0C4D\u0C30\u0C2E\u0C02 \u0C24\u0C40\u0C38\u0C47\u0C36\u0C3E\u0C30\u0C41",filters:e=>`${e} \u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D(\u0C32\u0C41) \u0C35\u0C47\u0C36\u0C3E\u0C30\u0C41`,clearFilters:"\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D\u0C32\u0C41 \u0C24\u0C40\u0C38\u0C47\u0C2F\u0C02\u0C21\u0C3F",removeFilter:e=>`\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D \u0C24\u0C40\u0C38\u0C47\u0C2F\u0C02\u0C21\u0C3F: ${e}`,export:"CSV \u0C21\u0C4C\u0C28\u0C4D\u200C\u0C32\u0C4B\u0C21\u0C4D",tableView:"\u0C2A\u0C1F\u0C4D\u0C1F\u0C3F\u0C15",cardView:"\u0C15\u0C3E\u0C30\u0C4D\u0C21\u0C41\u0C32\u0C41",highlighted:"\u0C39\u0C48\u0C32\u0C48\u0C1F\u0C4D",results:e=>`${e} \u0C2B\u0C32\u0C3F\u0C24\u0C3E\u0C32\u0C41`,ops:{contains:"\u0C32\u0C4B \u0C09\u0C02\u0C26\u0C3F",equals:"=",startsWith:"\u0C24\u0C4B \u0C2E\u0C4A\u0C26\u0C32\u0C41",endsWith:"\u0C24\u0C4B \u0C2E\u0C41\u0C17\u0C3F\u0C02\u0C2A\u0C41",greaterThan:">",lessThan:"<",between:"\u0C2E\u0C27\u0C4D\u0C2F"}}},Hi=["default","high-contrast","dark","color-blind","dyslexia"],Qt=e=>String(e??"").normalize("NFC").toLowerCase();function Oi(e,t){return(Array.isArray(e)&&e.length?e:t[0]?Object.keys(t[0]).map(r=>({key:r,label:r})):[]).map(r=>({key:String(r.key),label:r.label==null?String(r.key):String(r.label),sortable:r.sortable!==!1,type:r.type||"text",align:r.align||(r.type==="number"?"right":"left"),render:typeof r.render=="function"?r.render:null,hiddenOnMobile:!!r.hiddenOnMobile,width:r.width}))}function zi(e,t,n,r){let a=typeof e=="string"?document.querySelector(e):e;if(!a||typeof a.appendChild!="function")throw new Error("renderGrid: container not found. Pass an element or a CSS selector.");let i=Array.isArray(t)?{...r||{},data:t,columns:n}:{...t||{}},o=i.locale||"en-IN",l=String(o).split("-")[0],s=Ea[l==="te"?"te":"en"],d=l==="te"?"te":"en",A=l==="en"||l==="te"?"en-IN":o,m=i.rowKey||"id",f=i.label||i.ariaLabel||"Data grid",u=i.pagination===!1?!1:typeof i.pagination=="object"?i.pagination:{},k=u&&u.sizeOptions||[10,20,50,100],b=i.selectable!==!1,p=i.autoScrollToHighlight!==!1,E=Number(i.mobileBreakpoint)||640,Q=Array.isArray(i.data)?i.data.slice():[],I=Oi(i.columns,Q),h=Re(I),w=[],y=null,S="",C=1,B=Number(u&&u.pageSize||i.pageSize)||10,D=Hi.includes(i.theme)?i.theme:"default",x=["table","card","auto"].includes(i.view)?i.view:"auto",M=!!i.loading,G=!1,N={r:1,c:0},F=new Set((i.selectedKeys||[]).map(String)),U=new Set((i.highlightIds||[]).map(String)),Ae={grid:_("yv-grid"),title:_("yv-title"),status:_("yv-status")};k.includes(B)||k.push(B),k.sort((g,v)=>g-v);let W=g=>re(g,m)||String(Q.indexOf(g)),Z=g=>{let v=I.find(T=>T.type==="text")||I[0];return v?String(g[v.key]??W(g)):W(g)},ee=c("section",{class:`yv-grid yv-theme-${D}${i.wrap?" yv-wrap":""}${i.className?" "+i.className:""}`,role:"region","aria-labelledby":Ae.title,lang:i.lang||(l!=="en"?o:null)});i.maxHeight&&ee.style.setProperty("--yv-max-height",typeof i.maxHeight=="number"?`${i.maxHeight}px`:i.maxHeight);let Tt=c("h3",{id:Ae.title,class:i.showTitle?"yv-grid-title":"yv-sr"},f);i.showTitle&&(Tt.style.cssText="margin:0;padding:12px 12px 0;font-size:1.05em");let xe=c("input",{type:"search",placeholder:s.search,"aria-label":s.searchAria,"aria-controls":Ae.grid,autocomplete:"off",spellcheck:"false"}),bn=i.search===!1?null:c("label",{class:"yv-search"},z("search",18),xe),Br=c("span",{class:"yv-info","aria-hidden":"true"}),ut=c("button",{type:"button",class:"yv-btn yv-icon","data-view-toggle":""}),Qr=i.exportable===!1?null:c("button",{type:"button",class:"yv-btn"},z("download",16),s.export),Ji=c("div",{class:"yv-tools"},x==="auto"||i.viewToggle?ut:null,Qr),Wi=c("div",{class:"yv-toolbar"},bn,Br,Ji),De=c("div",{class:"yv-filterbar",hidden:!0,"aria-label":s.filters(0)}),wn=c("div",{class:"yv-slot"}),se=c("div",{class:"yv-body",id:Ae.grid}),Dt=c("div",{class:"yv-pager"}),vn=c("p",{class:"yv-sr",id:Ae.status,role:"status","aria-live":"polite","aria-atomic":"true"});ee.append(Tt,Wi,De,wn,se,Dt,vn),a.appendChild(ee);let In=null,Rt=g=>{clearTimeout(In),vn.textContent="",In=setTimeout(()=>vn.textContent=g,40)},Nt=i.engine==="rust"||i.engine==="auto"?i.engine:"ts",ye=null,Ft=null,$t={data:null,columns:null,ready:!1};function Sr(){return ye||Ft||!Bt(Nt,Q.length)?Ft||Promise.resolve(ye?"rust":"ts"):(Ft=Li().then(g=>(ye=g?mn.create(g):null,ye&&ee.isConnected&&V(),ye?"rust":"ts")),Ft)}function Ki(g){if(!ye||!Bt(Nt,Q.length))return null;if($t.data!==Q||$t.columns!==I){let T=Q.map(R=>I.map($=>Qt(R[$.key])+fn+Qt(Ke($,R[$.key]))).join(fn));$t={data:Q,columns:I,ready:ye.setSearchTexts(T)}}if(!$t.ready)return null;let v=ye.search(g);return v?Ir(Q,v):null}function Vi(g,v,T){if(!ye||!Bt(Nt,Q.length)||v.type!=="number"&&v.type!=="date")return null;let R=new Float64Array(g.length),$=1/0,L=-1/0;for(let q=0;q<g.length;q++){let Y=g[q][v.key];if(Y==null||Y===""){R[q]=NaN;continue}let K=v.type==="number"?Number(Y):new Date(Y).getTime();if(!Number.isFinite(K))return null;R[q]=K,K<$&&($=K),K>L&&(L=K)}if($===1/0||!Number.isFinite(L-$))return null;let H=ye.sortByKeys(R,T==="desc");return H?Ir(g,H):null}function _i(g,v,T,R){let $=g[T.key],L=v[T.key];if($==null||$==="")return L==null||L===""?0:1;if(L==null||L==="")return-1;let H;return T.type==="number"?H=Number($)-Number(L):T.type==="date"?H=new Date($).getTime()-new Date(L).getTime():H=String($).localeCompare(String(L),o,{numeric:!0,sensitivity:"base"}),Number.isFinite(H)||(H=String($).localeCompare(String(L))),R==="desc"?-H:H}let Se=null,Cn=null;function Pe(){Sr();let g=performance.now(),v=null,T=null,R,$=S?Qt(S):"",L=$?Ki($):null;L?(v="rust",R=Ee(L,h,w)):(R=Ee(Q,h,w),$&&(v="ts",R=R.filter(q=>I.some(Y=>Qt(q[Y.key]).includes($)||Qt(Ke(Y,q[Y.key])).includes($)))));let H=R.length;if(y&&y.key){let q=I.find(Y=>Y.key===y.key);if(q){let Y=Vi(R,q,y.direction);T=Y?"rust":"ts",R=Y||R.slice().sort((K,O)=>_i(K,O,q,y.direction))}}return Se=v||T?{query:$?S:"",ms:performance.now()-g,rows:H,engine:v==="rust"||T==="rust"?"rust":"ts"}:null,R}let xn=null,kn=null;function Ke(g,v){if(v==null||v==="")return"";if(g.type==="number"&&Number.isFinite(Number(v)))return xn=xn||new Intl.NumberFormat(A),xn.format(Number(v));if(g.type==="date"){let T=new Date(v);return Number.isNaN(T.getTime())?String(v):(kn=kn||new Intl.DateTimeFormat(A,{year:"numeric",month:"short",day:"numeric"}),kn.format(T))}return g.type==="boolean"?v===!0||v==="true"?s.yes:s.no:String(v)}function Mr(g,v,T){let R=v[g.key];if(g.render)try{let $=g.render(R,v,T);return $ instanceof Node?$:document.createTextNode($==null?"":String($))}catch($){return console.error("[yuktai] column render failed",g.key,$),document.createTextNode(Ke(g,R))}return g.type==="badge"&&R!=null&&R!==""?c("span",{class:"yv-cellbadge"},String(R)):document.createTextNode(Ke(g,R))}let At=()=>x==="card"||x==="auto"&&G;function Ve(g){if(u===!1)return{pages:1,start:0,end:g};let v=Math.max(1,Math.ceil(g/B));return C=Math.min(Math.max(1,C),v),{pages:v,start:(C-1)*B,end:Math.min(g,C*B)}}let be=[];function V(){let g=Pe();be=g;let{pages:v,start:T,end:R}=Ve(g.length),$=g.slice(T,R);ee.className=`yv-grid yv-theme-${D}${i.wrap?" yv-wrap":""}${i.className?" "+i.className:""}`,ee.setAttribute("aria-busy",String(M)),Br.textContent=`${g.length.toLocaleString(A)} ${s.rows}${b?` \xB7 ${F.size.toLocaleString(A)} ${s.selected}`:""}${i.showSearchTime&&Se?` \xB7 ${Pi(Se.ms)} \xB7 ${Se.engine==="rust"?"Rust":"TS"}`:""}`;let L=Se?[S,y&&y.key,y&&y.direction,w,Q]:null,H=!L||!Cn||L.some((Y,K)=>Y!==Cn[K]);Se&&H&&typeof i.onSearchTime=="function"&&i.onSearchTime({...Se}),Cn=L,ut.innerHTML=ue(At()?"grid":"cards",18),ut.setAttribute("aria-label",At()?s.tableView:s.cardView),ut.title=At()?s.tableView:s.cardView,Zi();let q=se.contains(document.activeElement);se.replaceChildren(M?c("div",{class:"yv-loading",role:"status"},s.loading):At()?Xi($,T):ji($,T,g.length)),q&&!M&&Dr(),eo(g.length,v,T,R)}function ji(g,v,T){let R=I,$=R.length+(b?1:0),L=c("table",{class:"yv-table",role:"grid","aria-labelledby":Ae.title,"aria-rowcount":T+1,"aria-colcount":$,"aria-multiselectable":b?"true":null}),H=c("tr",{role:"row","aria-rowindex":1});if(b){let O=g.length>0&&g.every(ve=>F.has(W(ve))),we=g.some(ve=>F.has(W(ve))),te=c("input",{type:"checkbox","data-select-page":"","aria-label":s.selectPage,tabindex:-1});te.checked=O,te.indeterminate=!O&&we,H.append(c("th",{role:"columnheader",scope:"col","aria-colindex":1,tabindex:-1,"data-col":0},c("label",{class:"yv-check"},te)))}R.forEach((O,we)=>{let te=we+(b?1:0),ve=y&&y.key===O.key?y.direction:null,He=c("th",{role:"columnheader",scope:"col","aria-colindex":te+1,"aria-sort":O.sortable?ve==="asc"?"ascending":ve==="desc"?"descending":"none":null,class:O.align!=="left"?`yv-align-${O.align}`:null,tabindex:-1,"data-col":te});if(O.width&&(He.style.width=typeof O.width=="number"?`${O.width}px`:O.width),O.sortable){let Ze=c("button",{type:"button",class:"yv-sortbtn","data-sort":O.key,tabindex:-1},O.label);Ze.insertAdjacentHTML("beforeend",ue(ve==="asc"?"sortUp":ve==="desc"?"sortDown":"sort",14)),He.append(Ze)}else He.append(O.label);H.append(He)});let q=c("tbody");if(!g.length){let O=i.empty instanceof Node?i.empty.cloneNode(!0):document.createTextNode(i.empty?String(i.empty):s.noData);q.append(c("tr",{role:"row","aria-rowindex":2},c("td",{role:"gridcell",class:"yv-empty",colspan:$,tabindex:-1,"data-col":0},O)))}g.forEach((O,we)=>{let te=W(O),ve=F.has(te),He=U.has(te),Ze=c("tr",{role:"row","aria-rowindex":v+we+2,"aria-selected":b?String(ve):null,"data-yuktai-row-id":te,class:He?"yv-hl":null});if(b){let et=c("input",{type:"checkbox","data-select":te,"aria-label":s.selectRow(Z(O)),tabindex:-1});et.checked=ve,Ze.append(c("td",{role:"gridcell","aria-colindex":1,tabindex:-1,"data-col":0},c("label",{class:"yv-check"},et)))}R.forEach((et,Nr)=>{let Fr=Nr+(b?1:0),Qn=c("td",{role:"gridcell","aria-colindex":Fr+1,tabindex:-1,"data-col":Fr,class:et.align!=="left"?`yv-align-${et.align}`:null});Qn.append(Mr(et,O,v+we)),Nr===0&&He&&Qn.append(c("span",{class:"yv-sr"},` (${s.highlighted})`)),Ze.append(Qn)}),q.append(Ze)}),L.append(c("thead",null,H),q);let Y=L.querySelectorAll("tr");N.r=Math.min(N.r,Y.length-1);let K=Tr(L,N.r,N.c)||Tr(L,0,0);return K&&K.setAttribute("tabindex","0"),c("div",{class:"yv-tablewrap"},L)}function Xi(g,v){if(!g.length){let R=i.empty instanceof Node?i.empty.cloneNode(!0):document.createTextNode(i.empty?String(i.empty):s.noData);return c("div",{class:"yv-empty",role:"status"},R)}let T=c("ul",{class:"yv-cards","aria-labelledby":Ae.title});return g.forEach((R,$)=>{let L=W(R),H=F.has(L),q=U.has(L),Y=_("yv-card"),K=c("li",{class:`yv-card${q?" yv-hl":""}`,"data-yuktai-row-id":L,"aria-labelledby":Y,"aria-selected":b?String(H):null,tabindex:-1}),O=c("div",{class:"yv-card-head"},c("p",{class:"yv-card-title",id:Y},Z(R),q?c("span",{class:"yv-sr"},` (${s.highlighted})`):null));if(b){let te=c("input",{type:"checkbox","data-select":L,"aria-label":s.selectRow(Z(R))});te.checked=H,O.append(c("label",{class:"yv-check"},te))}let we=c("dl");I.forEach(te=>{te.hiddenOnMobile||we.append(c("dt",null,te.label),c("dd",null,Mr(te,R,v+$)))}),K.append(O,we),typeof i.onRowClick=="function"&&K.append(c("button",{type:"button",class:"yv-btn yv-small","data-open":L,style:"margin-top:8px"},i.openLabel||(l==="te"?"\u0C24\u0C46\u0C30\u0C41\u0C35\u0C41":"Open"))),T.append(K)}),T}function Zi(){if(De.replaceChildren(),!w.length){De.hidden=!0;return}De.hidden=!1,De.setAttribute("aria-label",s.filters(w.length)),De.append(c("span",{class:"yv-muted"},z("filter",15)," ",s.filters(w.length))),w.forEach((g,v)=>{let T=I.find(H=>H.key===g.key),R=Array.isArray(g.value)?g.value.map(H=>Ke(T||{},H)).join(" \u2013 "):T?Ke(T,g.value):String(g.value),$=`${T?T.label:g.key} ${s.ops[g.operator]||g.operator} ${R}`,L=c("button",{type:"button",class:"yv-chip","data-remove-filter":v,"aria-label":s.removeFilter($)},$,z("close",14));De.append(L)}),De.append(c("button",{type:"button",class:"yv-btn yv-small","data-clear-filters":""},s.clearFilters))}function eo(g,v,T,R){if(Dt.replaceChildren(),u===!1){Dt.append(c("span",{class:"yv-muted"},s.results(g.toLocaleString(A))));return}let $=Y=>Y.toLocaleString(A),L=c("span",{class:"yv-muted"},g?s.showing($(T+1),$(R),$(g)):s.showing(0,0,0)),H=c("div",{class:"yv-pages"});if(u.showSizeChanger!==!1){let Y=_("yv-size"),K=c("select",{id:Y,"data-page-size":""},...k.map(O=>c("option",{value:O,selected:O===B},String(O))));H.append(c("label",{for:Y,class:"yv-muted"},s.pageSize),K)}let q=(Y,K,O,we)=>{let te=c("button",{type:"button",class:"yv-btn yv-icon","aria-label":K,title:K,disabled:O,"data-page":we});return te.innerHTML=ue(Y,18),te};H.append(q("first",s.first,C<=1,"first"),q("left",s.previous,C<=1,"prev"),c("span",{class:"yv-muted","aria-current":"page"},s.page($(C),$(v))),q("right",s.next,C>=v,"next"),q("last",s.last,C>=v,"last")),Dt.append(L,H)}function Tr(g,v,T){let R=g.querySelectorAll("tr")[v];if(!R)return null;let $=R.querySelectorAll("th,td");return $[Math.min(T,$.length-1)]||null}function Me(g,v){let T=se.querySelector("table");if(!T)return;let R=T.querySelectorAll("tr");g=Math.max(0,Math.min(g,R.length-1));let $=R[g].querySelectorAll("th,td");v=Math.max(0,Math.min(v,$.length-1)),T.querySelectorAll('[tabindex="0"]').forEach(H=>H.setAttribute("tabindex","-1"));let L=$[v];L.setAttribute("tabindex","0"),N={r:g,c:v},L.focus()}function Dr(){if(se.querySelector("table"))Me(N.r,N.c);else{let v=se.querySelector(".yv-card");v&&v.focus()}}function to(g){let v=se.querySelector("table"),T=g.target.closest&&g.target.closest("th,td");if(!v||!T||!v.contains(T))return;let R=T.parentElement,$=Array.prototype.indexOf.call(v.querySelectorAll("tr"),R),L=Array.prototype.indexOf.call(R.querySelectorAll("th,td"),T),H=v.querySelectorAll("tr").length-1,q=!0;switch(g.key){case"ArrowRight":Me($,L+1);break;case"ArrowLeft":Me($,L-1);break;case"ArrowDown":Me($+1,L);break;case"ArrowUp":Me($-1,L);break;case"Home":g.ctrlKey?Me(0,0):Me($,0);break;case"End":g.ctrlKey?Me(H,999):Me($,999);break;case"PageDown":u!==!1&&(N={r:Math.max(1,$),c:L},je(C+1,!0));break;case"PageUp":u!==!1&&(N={r:Math.max(1,$),c:L},je(C-1,!0));break;case"Enter":case" ":{let Y=T.querySelector("[data-sort]"),K=T.querySelector("input[type=checkbox]");Y?Rr(Y.getAttribute("data-sort")):K?K.click():g.key==="Enter"&&R.hasAttribute("data-yuktai-row-id")&&typeof i.onRowClick=="function"?gt(R.getAttribute("data-yuktai-row-id")):g.key===" "&&b&&R.hasAttribute("data-yuktai-row-id")?no(R.getAttribute("data-yuktai-row-id")):q=!1;break}default:q=!1}q&&(g.preventDefault(),g.stopPropagation())}function Rr(g){let v=I.find(R=>R.key===g);if(!v||!v.sortable)return;!y||y.key!==g?y={key:g,direction:"asc"}:y.direction==="asc"?y={key:g,direction:"desc"}:y=null,C=1,se.querySelector("table")&&se.contains(document.activeElement)&&(N={r:0,c:N.c}),V(),Rt(y?y.direction==="asc"?s.sortedAsc(v.label):s.sortedDesc(v.label):s.sortCleared),i.onSortChange&&i.onSortChange(y?{key:y.key,direction:y.direction}:null)}function _e(){i.onSelectionChange&&i.onSelectionChange(Array.from(F)),ee.dispatchEvent(new CustomEvent("yuktai:selection",{detail:{keys:Array.from(F)},bubbles:!0}))}function no(g,v){(v===void 0?!F.has(g):v)?F.add(g):F.delete(g),V(),_e()}function je(g,v){let{pages:T}=Ve(be.length),R=Math.min(Math.max(1,g),T);R===C&&!v||(C=R,V(),Rt(s.page(C,T)),v&&se.querySelector("table")&&Dr())}function gt(g){let v=Q.find(T=>W(T)===String(g));return v?(typeof i.onRowClick=="function"&&i.onRowClick(v,Q.indexOf(v)),typeof i.onOpenRow=="function"&&i.onOpenRow(String(g)),!0):!1}function pt(g,v=p){if(U.clear(),(g||[]).forEach(T=>U.add(typeof T=="object"&&T!==null?W(T):String(T))),v&&U.size){let T=be.length?be.findIndex(R=>U.has(W(R))):Pe().findIndex(R=>U.has(W(R)));T>=0&&u!==!1&&(C=Math.floor(T/B)+1)}if(V(),v&&U.size){let T=se.querySelector(".yv-hl");T&&T.scrollIntoView&&T.scrollIntoView({block:"nearest",behavior:br()?"auto":"smooth"})}}let En=null;xe.addEventListener("input",()=>{clearTimeout(En),En=setTimeout(()=>{S=xe.value.trim(),C=1,V(),Rt(s.results(be.length.toLocaleString(A)))},160)}),ee.addEventListener("click",g=>{let v=g.target.closest("button, input, tr[data-yuktai-row-id]");if(!(!v||!ee.contains(v))){if(v.matches("[data-sort]"))return Rr(v.getAttribute("data-sort"));if(v.matches("[data-page]")){let T=v.getAttribute("data-page"),{pages:R}=Ve(be.length);return je(T==="first"?1:T==="prev"?C-1:T==="next"?C+1:R)}if(v.matches("[data-remove-filter]")){w=w.filter((T,R)=>R!==Number(v.getAttribute("data-remove-filter"))),C=1,V(),i.onFiltersChange&&i.onFiltersChange(w.slice());return}if(v.matches("[data-clear-filters]"))return j.clearFilters();if(v.matches("[data-open]"))return gt(v.getAttribute("data-open"));if(v===ut){x=At()?"table":"card",V();return}if(v===Qr)return j.exportCSV();v.matches("tr[data-yuktai-row-id]")&&typeof i.onRowClick=="function"&&!g.target.closest("label,input,button,a")&>(v.getAttribute("data-yuktai-row-id"))}}),ee.addEventListener("change",g=>{let v=g.target;if(v.matches("[data-select]"))v.checked?F.add(v.getAttribute("data-select")):F.delete(v.getAttribute("data-select")),V(),_e();else if(v.matches("[data-select-page]")){let{start:T,end:R}=Ve(be.length);be.slice(T,R).forEach($=>v.checked?F.add(W($)):F.delete(W($))),V(),_e()}else v.matches("[data-page-size]")&&(B=Number(v.value)||B,C=1,V(),se.closest(".yv-grid").querySelector("[data-page-size]").focus())}),se.addEventListener("keydown",to),se.addEventListener("focusin",g=>{let v=se.querySelector("table"),T=g.target.closest&&g.target.closest("th,td");if(!v||!T)return;let R=T.parentElement,$=Array.prototype.indexOf.call(v.querySelectorAll("tr"),R),L=Array.prototype.indexOf.call(R.querySelectorAll("th,td"),T);$<0||L<0||(v.querySelectorAll('[tabindex="0"]').forEach(H=>H!==T&&H.setAttribute("tabindex","-1")),T.setAttribute("tabindex","0"),N={r:$,c:L})});let Gt=null;typeof ResizeObserver=="function"&&(Gt=new ResizeObserver(g=>{let v=g[0]&&g[0].contentRect.width,T=v>0&&v<E;T!==G&&(G=T,x==="auto"&&V())}),Gt.observe(ee));let ke={get data(){return Q},get columns(){return h},rowKey:m,locale:d,get filters(){return w},onHighlightRows:g=>pt(g),onSelectRow:g=>{F.add(String(g)),pt([String(g)]),_e()},onOpenRow:typeof i.onRowClick=="function"||typeof i.onOpenRow=="function"?g=>gt(g):void 0,onFiltersChange:g=>{w=g.slice(),C=1,V(),i.onFiltersChange&&i.onFiltersChange(w.slice())},onSortChange:g=>{y=g?{key:g.key,direction:g.direction==="desc"?"desc":"asc"}:null,C=1,V(),i.onSortChange&&i.onSortChange(y)}},Lt=nt(ke,{name:i.toolName||"yuktai_grid",descriptions:i.toolDescriptions}),ht=cn({tools:()=>Lt,data:()=>Q,columns:()=>h.map(g=>({key:g.key,label:g.label})),rowKey:m,locale:d,customRules:i.customRules||[],parseIntent:i.parseIntent,historyLimit:i.historyLimit||20,onResult:g=>{i.onAgentResult&&i.onAgentResult({success:g.success,message:g.message,tool:g.tool})},onError:i.onAgentError}),Pt={status:{state:"unsupported",registered:[],errors:[]},unregister(){}};i.webmcp&&(Pt=dn(()=>Lt,{onStatusChange:g=>{i.onWebMCPStatusChange&&i.onWebMCPStatusChange(g),ee.dispatchEvent(new CustomEvent("yuktai:webmcp",{detail:g,bubbles:!0}))}}));let Xe=un({data:Q,columns:h,rowKey:m,referenceDate:i.referenceDate,onOpenRow:ke.onOpenRow,bind:{getData:()=>Q,getFilters:()=>w,getSort:()=>y,getHighlightIds:()=>Array.from(U),setFilters:g=>ke.onFiltersChange(g),setSort:g=>ke.onSortChange(g),setHighlightIds:g=>pt(g),selectRow:g=>ke.onSelectRow(g)}}),mt=null;i.ai&&(mt=Cr(wn,ht,{locale:d,inputLanguage:i.inputLanguage||(d==="te"?"te-IN":"en-IN"),examples:i.assistantExamples,webmcp:()=>Pt.status,showWebMCP:!!i.webmcp}),i.webmcp&&ee.addEventListener("yuktai:webmcp",()=>mt&&mt.refreshStatus()));let Bn=null;if(i.agentic){let g=typeof i.agentic=="object"?i.agentic:{};Bn=hn(wn,Xe,g)}let j={element:ee,host:ee,get tools(){return Lt},agent:ht,agentic:Xe,get webmcpStatus(){return Pt.status},refresh(g){return Array.isArray(g)&&(Q=g.slice(),F.clear(),U.clear(),C=1),V(),j},setData(g,v){return Array.isArray(v)&&(I=Oi(v,g||Q),h=Re(I),Lt=nt(ke,{name:i.toolName||"yuktai_grid",descriptions:i.toolDescriptions})),j.refresh(g)},getData:()=>Q.slice(),getRows:()=>Pe(),getPageRows(){let g=Pe(),{start:v,end:T}=Ve(g.length);return g.slice(v,T)},getSelectedRows:()=>Q.filter(g=>F.has(W(g))),getSelectedKeys:()=>Array.from(F),select(g,v=!0){return[].concat(g).forEach(T=>v?F.add(String(T)):F.delete(String(T))),V(),_e(),j},clearSelection(){return F.clear(),V(),_e(),j},search(g){return S=String(g||"").trim(),xe.value=S,C=1,V(),be.length},setFilters(g){return ke.onFiltersChange(Array.isArray(g)?g:[]),j},addFilter(g){return ht.executeTool("filter",g)},getFilters:()=>w.slice(),clearFilters(){return ke.onFiltersChange([]),Rt(l==="te"?"\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D\u0C32\u0C41 \u0C24\u0C40\u0C38\u0C47\u0C36\u0C3E\u0C30\u0C41":"Filters cleared"),j},sortBy(g,v="asc"){return ke.onSortChange(g?{key:g,direction:v}:null),j},clearSort(){return ke.onSortChange(null),j},getSort:()=>y?{...y}:null,get engine(){return ye&&Bt(Nt,Q.length)?"rust":"ts"},getSearchTime:()=>Se?{...Se}:null,whenEngineReady:()=>Sr().then(()=>j.engine),highlight(g,v){return pt(g,v===void 0?p:v),j},clearHighlight(){return pt([],!1),j},getHighlightIds:()=>Array.from(U),goToPage(g){return je(Number(g)||1),j},nextPage(){return je(C+1),j},prevPage(){return je(C-1),j},getPage:()=>({page:C,pageSize:B,pages:Ve(be.length).pages,total:be.length}),setPageSize(g){return B=Number(g)||B,k.includes(B)||(k.push(B),k.sort((v,T)=>v-T)),C=1,V(),j},setTheme(g){return D=Hi.includes(g)?g:"default",V(),j},getTheme:()=>D,setView(g){return x=["table","card","auto"].includes(g)?g:"auto",V(),j},setLoading(g){return M=!!g,V(),j},openRow:g=>gt(g),async ask(g){return(await Xe.ask(g)).answer},askDetailed:g=>Xe.ask(g),assistantAsk:g=>ht.ask(g),executeTool:(g,v)=>ht.executeTool(g,v),biSummary:()=>Ue(Pe(),h),anomalies:()=>ze(Pe(),h,{rowKey:m}),async runTasks(g){return(await Xe.ask(g)).answer},reset(){return Xe.reset(),S="",xe.value="",V(),j},exportCSV(g=i.exportFileName||"yuktai-grid-export.csv"){let v=F.size?Q.filter(R=>F.has(W(R))):Pe(),T="\uFEFF"+[I.map(R=>wr(R.label)).join(","),...v.map(R=>I.map($=>wr(R[$.key])).join(","))].join(`\r
|
|
542
|
-
`);return xt(g,T,"text/csv;charset=utf-8"),ae(`${v.length} row(s) exported`),v.length},destroy(){clearTimeout(En),clearTimeout(In),Gt&&Gt.disconnect(),Pt.unregister(),mt&&mt.destroy(),Bn&&Bn.destroy(),ee.remove()}};return typeof i.onReady=="function"&&i.onReady(j),V(),j}var Ba={en:{title:"Ask the grid",hint:"Type or speak: a word to search, \u201Csort by <column>\u201D, \u201Chow many\u201D, \u201Cclear filters\u201D, \u201Copen <name>\u201D.",placeholder:"Ask the grid\u2026",ask:"Ask",listen:"Speak",stop:"Stop",listening:"Listening\u2026",noVoice:"Voice input is not available in this browser. Type your question instead.",history:"History",clear:"Clear history",webmcp:{unsupported:"WebMCP: not available in this browser (no document.modelContext).",registering:"WebMCP: registering tools\u2026",ready:"WebMCP: tools ready",partial:"WebMCP: some tools failed",error:"WebMCP: registration failed"}},te:{title:"\u0C17\u0C4D\u0C30\u0C3F\u0C21\u0C4D\u200C\u0C28\u0C41 \u0C05\u0C21\u0C17\u0C02\u0C21\u0C3F",hint:"\u0C1F\u0C48\u0C2A\u0C4D \u0C1A\u0C47\u0C2F\u0C02\u0C21\u0C3F \u0C32\u0C47\u0C26\u0C3E \u0C2E\u0C3E\u0C1F\u0C4D\u0C32\u0C3E\u0C21\u0C02\u0C21\u0C3F: \u0C35\u0C46\u0C24\u0C15\u0C3E\u0C32\u0C4D\u0C38\u0C3F\u0C28 \u0C2A\u0C26\u0C02, \u201C<\u0C15\u0C3E\u0C32\u0C2E\u0C4D> \u0C2A\u0C4D\u0C30\u0C15\u0C3E\u0C30\u0C02 \u0C15\u0C4D\u0C30\u0C2E\u0C02\u201D, \u201C\u0C0E\u0C28\u0C4D\u0C28\u0C3F\u201D, \u201C\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D\u0C32\u0C41 \u0C24\u0C40\u0C38\u0C47\u0C2F\u0C3F\u201D.",placeholder:"\u0C17\u0C4D\u0C30\u0C3F\u0C21\u0C4D\u200C\u0C28\u0C41 \u0C05\u0C21\u0C17\u0C02\u0C21\u0C3F\u2026",ask:"\u0C05\u0C21\u0C41\u0C17\u0C41",listen:"\u0C2E\u0C3E\u0C1F\u0C4D\u0C32\u0C3E\u0C21\u0C41",stop:"\u0C06\u0C2A\u0C41",listening:"\u0C35\u0C3F\u0C02\u0C1F\u0C41\u0C28\u0C4D\u0C28\u0C3E\u0C28\u0C41\u2026",noVoice:"\u0C08 \u0C2C\u0C4D\u0C30\u0C4C\u0C1C\u0C30\u0C4D\u200C\u0C32\u0C4B \u0C35\u0C3E\u0C2F\u0C3F\u0C38\u0C4D \u0C07\u0C28\u0C4D\u200C\u0C2A\u0C41\u0C1F\u0C4D \u0C32\u0C47\u0C26\u0C41. \u0C1F\u0C48\u0C2A\u0C4D \u0C1A\u0C47\u0C2F\u0C02\u0C21\u0C3F.",history:"\u0C1A\u0C30\u0C3F\u0C24\u0C4D\u0C30",clear:"\u0C1A\u0C30\u0C3F\u0C24\u0C4D\u0C30 \u0C24\u0C40\u0C38\u0C47\u0C2F\u0C3F",webmcp:{unsupported:"WebMCP: \u0C08 \u0C2C\u0C4D\u0C30\u0C4C\u0C1C\u0C30\u0C4D\u200C\u0C32\u0C4B \u0C32\u0C47\u0C26\u0C41.",registering:"WebMCP: \u0C28\u0C2E\u0C4B\u0C26\u0C41 \u0C1A\u0C47\u0C38\u0C4D\u0C24\u0C4B\u0C02\u0C26\u0C3F\u2026",ready:"WebMCP: \u0C38\u0C3F\u0C26\u0C4D\u0C27\u0C02",partial:"WebMCP: \u0C15\u0C4A\u0C28\u0C4D\u0C28\u0C3F \u0C35\u0C3F\u0C2B\u0C32\u0C02",error:"WebMCP: \u0C35\u0C3F\u0C2B\u0C32\u0C02"}}};function Cr(e,t,n={}){let r=Ba[n.locale==="te"?"te":"en"],a=_("yv-ask"),i=_("yv-hint"),o=c("input",{id:a,class:"yv-input",type:"text",placeholder:r.placeholder,autocomplete:"off","aria-describedby":i}),l=c("button",{type:"submit",class:"yv-btn yv-primary"},z("spark",16),r.ask),s=typeof window<"u"&&(window.SpeechRecognition||window.webkitSpeechRecognition),d=c("button",{type:"button",class:"yv-btn","aria-pressed":"false"},z("mic",16),r.listen),A=c("div",{class:"yv-answer",role:"status","aria-live":"polite"}),m=c("ol"),f=c("details",{class:"yv-history"},c("summary",null,r.history),m,c("button",{type:"button",class:"yv-btn yv-small","data-clear-history":""},r.clear)),u=n.showWebMCP?c("p",{class:"yv-muted",style:"margin:8px 0 0"}):null,k=n.examples||(n.locale==="te"?["\u0C0E\u0C28\u0C4D\u0C28\u0C3F","\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D\u0C32\u0C41 \u0C24\u0C40\u0C38\u0C47\u0C2F\u0C3F"]:["how many","clear filters","clear sort"]),b=c("div",{class:"yv-chips"},...k.map(y=>c("button",{type:"button",class:"yv-chip","data-example":y},y))),p=c("form",{class:"yv-row",role:"search","aria-label":r.title},c("label",{for:a,class:"yv-sr"},r.title),o,l,d),E=c("section",{class:"yv-box yv-assistant","aria-label":r.title},c("h3",null,z("chat",16)," ",r.title),c("p",{id:i,class:"yv-muted",style:"margin:0 0 8px"},r.hint),p,b,A,f,u);e.appendChild(E);async function Q(y){let S=String(y||"").trim();if(S){l.disabled=!0;try{let C=await t.ask(S);A.textContent=C.message,A.className=`yv-answer ${C.success?"":"yv-fail"}`}finally{l.disabled=!1}}}let I=t.subscribe(y=>{m.replaceChildren(...y.history.slice().reverse().map(S=>c("li",null,c("span",{class:S.result.success?"yv-ok":"yv-fail"},S.result.success?"\u2713 ":"\u2717 "),S.result.message,c("span",{class:"yv-muted"},` (${S.tool})`)))),f.querySelector("summary").textContent=`${r.history} (${y.history.length})`});p.addEventListener("submit",y=>{y.preventDefault(),Q(o.value)}),E.addEventListener("click",y=>{let S=y.target.closest("[data-example],[data-clear-history]");S&&(S.hasAttribute("data-example")?(o.value=S.getAttribute("data-example"),Q(o.value)):(t.clearHistory(),A.textContent=""))});let h=null;d.addEventListener("click",()=>{if(!s){A.textContent=r.noVoice;return}if(h){h.stop();return}h=new s,h.lang=n.inputLanguage||"en-IN",h.interimResults=!1,h.maxAlternatives=1,d.setAttribute("aria-pressed","true"),d.lastChild.textContent=r.stop,A.textContent=r.listening,h.onresult=y=>{let S=y.results[0][0].transcript;o.value=S,Q(S)},h.onerror=y=>{A.textContent=`${r.noVoice} (${y.error})`},h.onend=()=>{h=null,d.setAttribute("aria-pressed","false"),d.lastChild.textContent=r.listen};try{h.start()}catch(y){A.textContent=`${r.noVoice} (${y.message})`,h=null}}),s||(d.title=r.noVoice);function w(){if(!u||!n.webmcp)return;let y=n.webmcp();u.textContent=r.webmcp[y.state]+(y.registered&&y.registered.length?` (${y.registered.length})`:"")}return w(),{element:E,ask:Q,refreshStatus:w,destroy(){I(),h&&h.stop(),E.remove()}}}var Ui=[{id:"copilot",label:"Copilot",icon:"wand"},{id:"qa",label:"QA report",icon:"check"},{id:"forms",label:"Forms",icon:"form"},{id:"design",label:"Design",icon:"layout"},{id:"ask",label:"Ask page",icon:"chat"},{id:"voice",label:"Voice",icon:"mic"}],Qa=[["en-IN","English (India)"],["en-US","English (US)"],["te-IN","\u0C24\u0C46\u0C32\u0C41\u0C17\u0C41 (Telugu)"],["hi-IN","\u0939\u093F\u0928\u094D\u0926\u0940 (Hindi)"],["ta-IN","\u0BA4\u0BAE\u0BBF\u0BB4\u0BCD (Tamil)"],["kn-IN","\u0C95\u0CA8\u0CCD\u0CA8\u0CA1 (Kannada)"],["ml-IN","\u0D2E\u0D32\u0D2F\u0D3E\u0D33\u0D02 (Malayalam)"],["mr-IN","\u092E\u0930\u093E\u0920\u0940 (Marathi)"],["bn-IN","\u09AC\u09BE\u0982\u09B2\u09BE (Bengali)"],["gu-IN","\u0A97\u0AC1\u0A9C\u0AB0\u0ABE\u0AA4\u0AC0 (Gujarati)"]],xr=e=>c("span",{class:`yv-badge yv-sev-${e}`},e);function kr(e,t){return c("div",null,c("div",{class:"yv-score"},c("strong",null,String(e)),c("span",{class:"yv-muted"},"/ 100")),c("div",{class:"yv-meter",role:"img","aria-label":`Score ${e} out of 100`},c("span",{style:`width:${Math.max(0,Math.min(100,e))}%`})),c("p",{style:"margin:0 0 6px"},t))}function St(e){let t=(e||[]).filter(Boolean);return t.length?c("button",{type:"button",class:"yv-btn yv-small",onclick:()=>ae(`${Fi(t)} element(s) outlined on the page`)},z("eye",14),"Show on page"):null}function yn(e,t={}){let n=e==null?null:typeof e=="string"?document.querySelector(e):e;if(e!=null&&!n)throw new Error("mountAgenticPanel: container not found");let r=_("yv-tabs"),a=c("section",{class:`yv-box yv-agentic-panel${t.theme?" yv-theme-"+t.theme:""}`,"data-yuktai-panel":"","aria-label":t.title||"Page tools"}),i=c("div",{class:"yv-tabs",role:"tablist","aria-label":"Page tools",id:r}),o={};Ui.forEach(I=>{let h=`${r}-${I.id}`,w=`${h}-panel`;i.append(c("button",{type:"button",class:"yv-tab",role:"tab",id:h,"aria-controls":w,"aria-selected":"false",tabindex:-1,"data-tab":I.id},z(I.icon,15)," ",I.label)),o[I.id]=c("div",{role:"tabpanel",id:w,"aria-labelledby":h,hidden:!0,tabindex:0})}),a.append(i,...Object.values(o)),n&&n.appendChild(a);let l={},s=null;function d(I,h){o[I]||(I="qa"),s=I,i.querySelectorAll("[role=tab]").forEach(w=>{let y=w.getAttribute("data-tab")===I;w.setAttribute("aria-selected",String(y)),w.tabIndex=y?0:-1,y&&h&&w.focus()}),Object.entries(o).forEach(([w,y])=>y.hidden=w!==I),l[I]||(l[I]=!0,Q[I](o[I]))}i.addEventListener("click",I=>{let h=I.target.closest("[role=tab]");h&&d(h.getAttribute("data-tab"),!0)}),i.addEventListener("keydown",I=>{let h=Ui.map(C=>C.id),w=I.target.closest&&I.target.closest("[role=tab]"),y=h.indexOf(w?w.getAttribute("data-tab"):s),S=null;I.key==="ArrowRight"?S=h[(y+1)%h.length]:I.key==="ArrowLeft"?S=h[(y-1+h.length)%h.length]:I.key==="Home"?S=h[0]:I.key==="End"&&(S=h[h.length-1]),S&&(I.preventDefault(),I.stopPropagation(),d(S,!0))});let A=null;function m(I){let h=c("ul",{class:"yv-list"}),w=c("p",{class:"yv-status",role:"status","aria-live":"polite"}),y=c("div",{class:"yv-answer","aria-live":"polite"}),S=c("button",{type:"button",class:"yv-btn","aria-pressed":"false"},z("eye",16),"Watch page");A=Vt({defaultLang:t.defaultLang,debounceMs:600,onUpdate:B=>C(B)});function C(B){let D=B.report;S.setAttribute("aria-pressed",String(B.watching)),w.textContent=D?`${D.summary} Fixes applied: ${B.appliedFixes}.${B.watching?" Watching for page changes.":""}`:"Scan the page to see issues.",h.replaceChildren(...(D?D.issues.slice(0,40):[]).map(x=>c("li",{class:"yv-item"},c("p",null,xr(x.severity)," ",c("b",null,x.message)),c("p",{class:"yv-muted"},`WCAG ${x.wcag} \xB7 `,c("code",null,x.selector)),c("div",{class:"yv-row"},c("button",{type:"button",class:"yv-btn yv-small",onclick:()=>y.textContent=A.explain(x.id)},z("info",14),"Explain"),x.autoFixable?c("button",{type:"button",class:"yv-btn yv-small",onclick:()=>ae(A.applyFix(x.id).message)},z("wand",14),"Fix"):null,St([x.selector])))))}I.append(c("p",{class:"yv-muted"},"Finds accessibility problems, explains them in plain English, and applies safe fixes you can undo."),c("div",{class:"yv-row"},c("button",{type:"button",class:"yv-btn yv-primary",onclick:()=>A.scan()},z("search",16),"Scan page"),S,c("button",{type:"button",class:"yv-btn",onclick:()=>ae(`${A.applyAllFixes().filter(B=>B.applied).length} fix(es) applied`)},z("wand",16),"Apply all safe fixes"),c("button",{type:"button",class:"yv-btn",onclick:()=>ae(`${A.undoAll()} change(s) undone`)},z("undo",16),"Undo all")),w,y,h),S.addEventListener("click",()=>A.getState().watching?A.stop():A.start()),C(A.getState())}function f(I){let h=c("div",{"aria-live":"polite"}),w=null,y=()=>{w=fe(t.auditOptions||{});let S=w.issues;h.replaceChildren(kr(w.score,w.summary),c("div",{class:"yv-row"},c("button",{type:"button",class:"yv-btn yv-small",onclick:async()=>ae(await Ni(It(w))?"Markdown report copied":"Copy failed")},z("copy",14),"Copy Markdown"),c("button",{type:"button",class:"yv-btn yv-small",onclick:()=>xt("yuktai-qa-report.md",It(w),"text/markdown;charset=utf-8")},z("download",14),"Markdown"),c("button",{type:"button",class:"yv-btn yv-small",onclick:()=>xt("yuktai-qa-report.json",Kt(w),"application/json")},z("download",14),"JSON")),c("details",{class:"yv-history"},c("summary",null,`Checks (${w.checks.filter(C=>C.passed).length}/${w.checks.length} passed)`),c("ul",{class:"yv-steps"},...w.checks.map(C=>c("li",null,c("span",{class:C.passed?"yv-ok":"yv-fail"},C.passed?"\u2713 ":"\u2717 "),C.title||C.rule,C.issueCount?` \u2014 ${C.issueCount} issue(s)`:"")))),c("ul",{class:"yv-list"},...S.slice(0,60).map(C=>c("li",{class:"yv-item"},c("p",null,xr(C.severity)," ",c("b",null,C.message)),c("p",null,c("b",null,"Fix: "),C.fix),c("p",{class:"yv-muted"},`${C.rule} \xB7 WCAG ${C.wcag} \xB7 `,c("code",null,C.selector)),St([C.selector])))),S.length>60?c("p",{class:"yv-muted"},`${S.length-60} more issue(s) in the downloaded report.`):null),ae(w.summary)};I.append(c("p",{class:"yv-muted"},"15 WCAG checks on this page with a 0\u2013100 score. Heuristic: still test with a keyboard and a screen reader."),c("button",{type:"button",class:"yv-btn yv-primary",onclick:y},z("check",16),"Run QA audit"),h)}function u(I){let h=c("input",{type:"checkbox",id:_("yv-senior"),checked:t.seniorFriendly!==!1}),w=c("div",{"aria-live":"polite"}),y=()=>{let S=ot({seniorFriendly:h.checked,maxFieldsPerStep:t.maxFieldsPerStep||8});if(!S.length)return w.replaceChildren(c("p",{class:"yv-answer"},"There are no forms on this page.")),ae("No forms found");w.replaceChildren(...S.map(C=>c("div",{class:"yv-item",style:"margin-top:10px"},kr(C.score,C.summary),c("ul",{class:"yv-steps"},...C.findings.map(B=>c("li",null,c("span",{class:`yv-badge yv-sev-${B.level==="problem"?"serious":"minor"}`},B.level)," ",B.message,c("br"),c("span",{class:"yv-muted"},B.suggestion)))),St(C.findings.map(B=>B.selector))))),ae(`${S.length} form(s) reviewed`)};I.append(c("p",{class:"yv-muted"},"Checks labels, autocomplete, error messages and senior-friendly tips."),c("div",{class:"yv-row"},c("label",{class:"yv-check",for:h.id},h),c("label",{for:h.id},"Senior-friendly checks"),c("button",{type:"button",class:"yv-btn yv-primary",onclick:y},z("form",16),"Review forms")),w)}function k(I){let h=_("yv-min"),w=c("input",{id:h,class:"yv-input",type:"number",min:10,max:24,value:t.minFontSize||16,style:"width:90px"}),y=c("div",{"aria-live":"polite"}),S=()=>{let C=Xt({minFontSize:Number(w.value)||16,maxLineLength:t.maxLineLength||90});y.replaceChildren(kr(C.score,C.summary),c("div",{class:"yv-cats"},...Object.entries(C.categories).map(([B,D])=>c("div",{class:"yv-cat"},c("span",{class:"yv-muted"},B),c("strong",null,String(D.score)),c("span",{class:"yv-muted"},`${D.findings} finding(s)`)))),c("ul",{class:"yv-list"},...C.findings.slice(0,40).map(B=>c("li",{class:"yv-item"},c("p",null,xr(B.severity)," ",c("b",null,B.category),": ",B.message),c("p",{class:"yv-muted"},B.suggestion),St([B.selector]))))),ae(C.summary)};I.append(c("p",{class:"yv-muted"},"Hierarchy, readability, interaction, clutter and consistency. Heuristic, not a visual-design certification."),c("div",{class:"yv-row"},c("label",{for:h},"Minimum text size (px)"),w,c("button",{type:"button",class:"yv-btn yv-primary",onclick:S},z("layout",16),"Review design")),y)}function b(I){let h=_("yv-pq"),w=c("input",{id:h,class:"yv-input",type:"text",placeholder:"What is this page about?",autocomplete:"off"}),y=c("div",{"aria-live":"polite"}),S=null,C=async()=>{let x=w.value.trim()||"What is this page about?",M=await _t(x,{summarize:t.summarize}),G=[c("div",{class:"yv-answer"},M.answer)];M.suggestions.length&&G.push(c("ul",{class:"yv-steps"},...M.suggestions.map(F=>c("li",null,F))));let N=St(M.targets);if(N&&G.push(N),M.intent==="unknown"){S?S.rebuild():S=jt({includePage:!0,documents:t.documents});let F=await S.ask(x,{generate:t.generate});G.push(c("h4",{style:"margin:12px 0 4px"},F.generated?"Answer (your model)":"From the page text"),c("div",{class:"yv-answer"},F.answer))}y.replaceChildren(...G),ae(M.answer)},B=c("form",{class:"yv-row"},c("label",{for:h,class:"yv-sr"},"Ask about this page"),w,c("button",{type:"submit",class:"yv-btn yv-primary"},"Ask"));B.addEventListener("submit",x=>{x.preventDefault(),C()});let D=["What is this page about?","Which fields have no label?","Which images have no alt text?","Show the page structure","How many links are there?","Tell me about the forms"];I.append(c("p",{class:"yv-muted"},"Answers from this page only, offline. Pass generate() to use your own model."),B,c("div",{class:"yv-chips"},...D.map(x=>c("button",{type:"button",class:"yv-chip",onclick:()=>(w.value=x,C())},x))),y)}let p=null;function E(I){let h=_("yv-lang"),w=c("select",{id:h,class:"yv-input",style:"width:auto"},...Qa.map(([N,F])=>c("option",{value:N,selected:N===(t.voiceLang||"en-IN")},F))),y=c("button",{type:"button",class:"yv-btn yv-primary","aria-pressed":"false"},z("mic",16),"Start listening"),S=_("yv-cmd"),C=c("input",{id:S,class:"yv-input",type:"text",placeholder:"Type a command, e.g. make text bigger",autocomplete:"off"}),B=c("div",{class:"yv-answer",role:"status","aria-live":"polite"}),D=typeof window<"u"&&!!(window.SpeechRecognition||window.webkitSpeechRecognition),x=()=>{p&&p.stop(),p=ln({lang:w.value,speak:t.speak!==!1,initial:t.getSettings?t.getSettings():void 0,apply:t.applySettings,onTranscript:(N,F)=>{B.textContent=`Heard: \u201C${N}\u201D
|
|
543
|
-
${F?F.say:"Not a voice command. Try: make text bigger, high contrast on, dark mode, next row, reset."}`,t.onVoiceCommand&&t.onVoiceCommand(N,F)}})};x(),w.addEventListener("change",()=>{let N=y.getAttribute("aria-pressed")==="true";x(),N&&p.start()}),y.addEventListener("click",()=>{if(y.getAttribute("aria-pressed")==="true"){p.stop(),y.setAttribute("aria-pressed","false"),y.lastChild.textContent="Start listening";return}if(!p.start()){B.textContent="Speech recognition is not available in this browser. Typed commands below still work.";return}y.setAttribute("aria-pressed","true"),y.lastChild.textContent="Stop listening",B.textContent="Listening\u2026 say \u201Cmake text bigger\u201D or \u201Cnext row\u201D."});let M=c("form",{class:"yv-row"},c("label",{for:S,class:"yv-sr"},"Type a voice command"),C,c("button",{type:"submit",class:"yv-btn"},"Run"));M.addEventListener("submit",async N=>{N.preventDefault(),C.value.trim()&&await p.handle(C.value)});let G=["make text bigger","make text smaller","high contrast on","dark mode","reduce motion","dyslexia font","next row","previous row","first row","reset","\u0C2A\u0C46\u0C26\u0C4D\u0C26 \u0C05\u0C15\u0C4D\u0C37\u0C30\u0C3E\u0C32\u0C41","\u0C39\u0C48 \u0C15\u0C3E\u0C02\u0C1F\u0C4D\u0C30\u0C3E\u0C38\u0C4D\u0C1F\u0C4D","\u0C24\u0C30\u0C4D\u0C35\u0C3E\u0C24\u0C3F \u0C35\u0C30\u0C41\u0C38"];I.append(c("p",{class:"yv-muted"},D?"Speak accessibility commands in English or Telugu. Text size moves 80\u2013130% in 10% steps.":"Your browser has no speech recognition. You can still type the same commands."),c("div",{class:"yv-row"},c("label",{for:h},"Language"),w,y),M,c("div",{class:"yv-chips"},...G.map(N=>c("button",{type:"button",class:"yv-chip",onclick:()=>(C.value=N,p.handle(N))},N))),B)}let Q={copilot:m,qa:f,forms:u,design:k,ask:b,voice:E};return d(t.defaultTab||"qa",!1),{element:a,select:I=>d(I,!1),get tab(){return s},get copilot(){return A},destroy(){A&&A.stop(),p&&p.stop(),a.remove()}}}var Er="yuktai-a11y-prefs",Mt=[.8,.9,1,1.1,1.2,1.3],Sa=[["none","None"],["deuteranopia","Deuteranopia (red-green)"],["protanopia","Protanopia (red-green)"],["tritanopia","Tritanopia (blue-yellow)"],["achromatopsia","Achromatopsia (no colour)"]],Ma=[["highContrast","High contrast","Stronger text and borders","contrast"],["darkMode","Dark mode","Light text on a dark page","moon"],["reduceMotion","Reduce motion","Stop animations and transitions","motion"],["largeTargets","Large targets","Buttons and links at least 44\xD744","target"],["dyslexiaFont","Dyslexia-friendly font","Easier letters and wider spacing","reading"],["speechEnabled","Speak on focus","Read out each control you Tab to","speaker"],["autoFix","Auto-fix page","Add missing ARIA, labels and alt text; watch new content","wand"],["showSkipLinks","Skip links","\u201CSkip to main content\u201D on Tab","skip"]];function Ta(){try{let e=localStorage.getItem(Er);return e?JSON.parse(e):{}}catch{return{}}}function Da(e){try{let t={};["highContrast","darkMode","reduceMotion","largeTargets","speechEnabled","colorBlindMode","dyslexiaFont","fontSizeMultiplier"].forEach(n=>t[n]=e[n]),localStorage.setItem(Er,JSON.stringify(t))}catch{}}function qi(e={}){let t={position:"left",title:"Accessibility",showPageTools:!1,...e},n=t.position==="right"?"right":"left",r=gn(t.primaryColor,"#005A9C"),a={enabled:!0,autoFix:!0,showSkipLinks:!0,showPreferencePanel:!1,...ct,...t.config||{}},i={...a,...Ta()},o,l,s,d,A,m,f,u="";async function k(x,M){i={...i,...x,enabled:!0},Da(i);try{u=await Je.execute({...i}),i.autoFix||Je.stopObserver()}catch(G){console.error("[yuktai] accessibility engine failed",G),u="Some settings could not be applied. See the browser console."}return E(),M||ae("Accessibility settings updated"),u}async function b(){try{localStorage.removeItem(Er)}catch{}return i={...a},await k(i,!0),ae("Accessibility settings reset"),i}function p(){let x=_("yv-a11y-title"),M=_("yv-font"),G=_("yv-cb"),N=c("section",{class:"yv-dialog",role:"dialog","aria-modal":"false","aria-labelledby":x,"data-yuktai-panel":""}),F=Ma.map(([W,Z,ee,Tt])=>{let xe=_("yv-opt"),bn=c("input",{id:xe,type:"checkbox",role:"switch","data-setting":W,"aria-describedby":`${xe}-d`});return c("div",{class:"yv-option"},c("span",{class:"yv-option-icon"},z(Tt,18)),c("span",{class:"yv-option-copy"},c("label",{for:xe},c("b",null,Z)),c("small",{id:`${xe}-d`},ee)),c("span",{class:"yv-switch"},bn,c("span",{"aria-hidden":"true"})))}),U=c("div",{class:"yv-steps-bar",role:"group","aria-labelledby":M},...Mt.map(W=>c("button",{type:"button",class:"yv-step","data-font":W,"aria-label":`${Math.round(W*100)} percent`,"aria-pressed":"false"}))),Ae=c("select",{id:G,class:"yv-input","data-colorblind":""},...Sa.map(([W,Z])=>c("option",{value:W},Z)));return N.append(c("header",{class:"yv-dialog-head"},c("div",null,c("div",{class:"yv-muted",style:"font-weight:800;font-size:.75em;letter-spacing:.05em"},"YUKTAI"),c("h2",{id:x},t.title),c("p",{class:"yv-muted",style:"margin:2px 0 0"},"Saved on this device. Works on every page.")),c("button",{type:"button",class:"yv-btn yv-icon","data-close":"","aria-label":"Close accessibility settings",html:ue("close")})),c("div",{class:"yv-dialog-body"},...F,c("div",{style:"padding:12px 0;border-bottom:1px solid var(--yv-border)"},c("div",{style:"display:flex;justify-content:space-between"},c("b",{id:M},"Text size"),c("strong",{"data-font-value":""})),c("div",{class:"yv-row",style:"flex-wrap:nowrap;margin-top:6px"},c("button",{type:"button",class:"yv-btn yv-icon","data-font-step":"-1","aria-label":"Smaller text",html:ue("minus",16)}),U,c("button",{type:"button",class:"yv-btn yv-icon","data-font-step":"1","aria-label":"Bigger text",html:ue("plus",16)}))),c("div",{style:"padding:12px 0"},c("label",{for:G},c("b",null,"Colour-blind filter")),Ae),c("div",{class:"yv-row"},c("button",{type:"button",class:"yv-btn","data-reset":""},z("reset",16),"Reset all"),c("button",{type:"button",class:"yv-btn yv-primary","data-close":""},z("check",16),"Done")),c("p",{class:"yv-status",role:"status","aria-live":"polite","data-status":""}))),N.addEventListener("change",W=>{let Z=W.target;Z.matches("[data-setting]")?k({[Z.getAttribute("data-setting")]:Z.checked}):Z.matches("[data-colorblind]")&&k({colorBlindMode:Z.value})}),N.addEventListener("click",W=>{let Z=W.target.closest("button");if(Z){if(Z.hasAttribute("data-close"))return w();if(Z.hasAttribute("data-reset"))return b();if(Z.hasAttribute("data-font"))return Q(Number(Z.getAttribute("data-font")));if(Z.hasAttribute("data-font-step")){let ee=Mt.indexOf(Number(i.fontSizeMultiplier||1));return Q(Mt[Math.min(Mt.length-1,Math.max(0,(ee<0?2:ee)+Number(Z.getAttribute("data-font-step"))))])}}}),N.addEventListener("keydown",W=>I(W,N,w)),N}function E(){if(!d)return;d.querySelectorAll("[data-setting]").forEach(N=>N.checked=!!i[N.getAttribute("data-setting")]&&i[N.getAttribute("data-setting")]!==!1);let x=d.querySelector('[data-setting="showSkipLinks"]');x&&(x.checked=i.showSkipLinks!==!1);let M=Number(i.fontSizeMultiplier||1);d.querySelector("[data-font-value]").textContent=`${Math.round(M*100)}%`,d.querySelectorAll("[data-font]").forEach(N=>N.setAttribute("aria-pressed",String(Math.abs(Number(N.getAttribute("data-font"))-M)<.001))),d.querySelector("[data-colorblind]").value=i.colorBlindMode||"none";let G=/(\d+) fixes applied/.exec(u);d.querySelector("[data-status]").textContent=G?`${G[1]} automatic accessibility fix(es) applied on this page.`:u}function Q(x){Mt.some(M=>Math.abs(M-x)<.001)&&(k({fontSizeMultiplier:x},!0),ae(`Text size ${Math.round(x*100)} percent`))}function I(x,M,G){if(x.key==="Escape"){x.preventDefault(),x.stopPropagation(),G();return}if(x.key!=="Tab")return;let N=Array.from(M.querySelectorAll("button,input,select,textarea,[tabindex]:not([tabindex='-1'])")).filter(F=>!F.disabled&&F.offsetParent!==null);N.length&&(x.shiftKey&&document.activeElement===N[0]?(x.preventDefault(),N[N.length-1].focus()):!x.shiftKey&&document.activeElement===N[N.length-1]&&(x.preventDefault(),N[0].focus()))}function h(){l||D(),!d&&(C(),f=document.activeElement,d=p(),B().appendChild(d),l.setAttribute("aria-expanded","true"),E(),d.querySelector("[data-close]").focus(),document.addEventListener("pointerdown",y,!0))}function w(){d&&(d.remove(),d=null,l.setAttribute("aria-expanded","false"),document.removeEventListener("pointerdown",y,!0),(f&&document.contains(f)?f:l).focus())}function y(x){d&&!d.contains(x.target)&&!o.contains(x.target)&&w(),A&&!A.contains(x.target)&&!o.contains(x.target)&&C()}function S(x){if(l||D(),A){x&&m&&m.select(x);return}w(),f=document.activeElement;let M=_("yv-tools-title");A=c("section",{class:"yv-dialog yv-wide",role:"dialog","aria-modal":"false","aria-labelledby":M,"data-yuktai-panel":""});let G=c("div",{class:"yv-dialog-body"});A.append(c("header",{class:"yv-dialog-head"},c("h2",{id:M},t.toolsTitle||"Page tools"),c("button",{type:"button",class:"yv-btn yv-icon","aria-label":"Close page tools",html:ue("close"),onclick:()=>C()})),G),B().appendChild(A),m=yn(G,{defaultTab:x||t.defaultTab||"qa",voiceLang:t.voiceLang,generate:t.generate,summarize:t.summarize,defaultLang:t.defaultLang,getSettings:()=>({...i}),applySettings:N=>k(N,!0)}),s&&s.setAttribute("aria-expanded","true"),A.addEventListener("keydown",N=>I(N,A,C)),A.querySelector("[role=tab][aria-selected=true]").focus(),document.addEventListener("pointerdown",y,!0)}function C(){A&&(m&&m.destroy(),m=null,A.remove(),A=null,s&&s.setAttribute("aria-expanded","false"),document.removeEventListener("pointerdown",y,!0),(f&&document.contains(f)?f:s||l).focus())}let B=()=>document.documentElement||document.body;function D(){!Le()||l||!document.body||(pn(r,n),o=c("div",{class:"yv-fabs","data-yuktai-fabs":""}),l=c("button",{type:"button",class:"yv-fab","aria-label":"Accessibility settings",title:"Accessibility settings","aria-haspopup":"dialog","aria-expanded":"false",html:ue("accessibility",26)}),l.addEventListener("click",()=>d?w():h()),o.append(l),t.showPageTools&&(s=c("button",{type:"button",class:"yv-fab yv-fab-alt","aria-label":"Page tools: QA, forms, design, ask, voice",title:"Page tools","aria-haspopup":"dialog","aria-expanded":"false",html:ue("tools",24)}),s.addEventListener("click",()=>A?C():S()),o.prepend(s)),B().appendChild(o),t.applyOnLoad!==!1&&k({},!0))}return{init:D,open:h,close:w,openTools:S,closeTools:C,apply:x=>k(x||{}),reset:b,getSettings:()=>({...i}),destroy(){w(),C(),o&&o.remove(),l=s=o=null}}}var Yi="5.3.7";(function(){if(!Le()||window.yuktai&&window.yuktai.__vanillaInitialized)return;let t=window.YUKTAI_CONFIG||{},n=gn(t.primaryColor,"#005A9C"),r=t.position==="right"?"right":"left",a=qi(t),i=()=>pn(n,r),o=s=>(...d)=>(i(),s(...d)),l={__vanillaInitialized:!0,version:Yi,init:()=>a.init(),open:()=>a.open(),close:()=>a.close(),openTools:s=>a.openTools(s),closeTools:()=>a.closeTools(),apply:s=>a.apply(s),reset:()=>a.reset(),getSettings:()=>a.getSettings(),renderGrid:o(zi),mountAgenticGridBar:o(hn),mountAgenticPanel:o(yn),mountGridAssistant:o(Cr),createAgenticGrid:un,createGridAgent:cn,parseGridIntent:mr,registerWebMCP:dn,icon:ue,iconNames:Ri.slice(),iconContrast:Ct,pickGlyphColor:yr,...pr,runPageQA:()=>fe().summary,getCapabilities:()=>({version:Yi,inlineSVG:!0,grid:!0,gridAssistant:!0,agenticGrid:!0,ruleBasedBI:!0,taskRunner:!0,anomalyChecks:!0,pageQA:!0,a11yCopilot:!0,formsReview:!0,designReview:!0,pageQandA:!0,localPageSearch:!0,voiceCommands:!0,voice:!!(window.SpeechRecognition||window.webkitSpeechRecognition),speech:"speechSynthesis"in window,webMCP:!!(document.modelContext&&typeof document.modelContext.registerTool=="function"),modelConnected:!1})};window.yuktai=l,t.autoInit!==!1&&(document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>a.init(),{once:!0}):a.init())})();})();
|
|
542
|
+
`,document.head.appendChild(t)}var Ro={query:"Grid query",anomalies:"Anomalies",summary:"Summary",insight:"BI insight",tasks:"Task steps"};function mt(e,A,t={}){let i=typeof e=="string"?document.querySelector(e):e;if(!i)throw new Error("mountAgenticGridBar: container not found");if(!A||typeof A.ask!="function")throw new Error("mountAgenticGridBar: pass the object from createAgenticGrid() or grid.agentic");let o=t.title||"Ask about this data",r=X("yv-q"),n=X("yv-qh"),a=g("input",{id:r,class:"yv-input",type:"text",autocomplete:"off",placeholder:t.placeholder||"Ask the grid\u2026 e.g. salary over 1 lakh in Hyderabad","aria-describedby":n}),s=g("button",{type:"submit",class:"yv-btn yv-primary"},q("spark",16),"Ask"),l=g("button",{type:"button",class:"yv-btn"},q("reset",16),"Show all rows"),I=g("p",{class:"yv-muted",style:"margin:10px 0 0",hidden:!0}),u=g("div",{class:"yv-answer",role:"status","aria-live":"polite"}),m=g("div"),c=t.examples||["salary over 1 lakh","anything unusual?","average salary by department","show salary over 80k, then sort by salary, then summarize"],k=g("div",{class:"yv-chips","aria-label":"Example questions"},...c.map(E=>g("button",{type:"button",class:"yv-chip","data-example":E},E))),f=g("form",{class:"yv-row",role:"search","aria-label":o},g("label",{for:r,class:"yv-sr"},o),a,s,l),C=g("section",{class:`yv-box yv-agentic-bar${t.theme?" yv-theme-"+t.theme:""}`,"aria-label":o},g("h3",null,q("spark",16)," ",o),g("p",{id:n,class:"yv-muted",style:"margin:0 0 8px"},t.hint||"Plain-English questions. Understands 10k, 1.5 lakh, 2cr. Every answer says which filters it used."),f,k,I,u,m);i.appendChild(C);function B(E){if(s.disabled=!!E.busy,C.setAttribute("aria-busy",String(!!E.busy)),!E.busy){if(u.textContent=E.answer||"",I.hidden=!E.kind,I.textContent=E.kind?`${Ro[E.kind]||E.kind} \xB7 ${E.visibleIds.length} row(s) shown`:"",m.replaceChildren(),E.table&&E.table.length){let h=Object.keys(E.table[0]),p=g("table",{class:"yv-mini"});p.innerHTML=`<caption class="yv-sr">Answer table</caption><thead><tr>${h.map(y=>`<th scope="col">${ht(y)}</th>`).join("")}</tr></thead><tbody>${E.table.map(y=>`<tr>${h.map(D=>`<td>${ht(y[D])}</td>`).join("")}</tr>`).join("")}</tbody>`,m.append(g("div",{style:"overflow-x:auto"},p))}E.steps&&E.steps.length&&m.append(g("ol",{class:"yv-steps","aria-label":"Steps"},...E.steps.map(h=>g("li",null,g("span",{class:h.success===!1?"yv-fail":"yv-ok"},h.success===!1?"\u2717 ":"\u2713 "),g("b",null,h.action),": ",h.message||h.text))))}}let v=A.subscribe(B);return f.addEventListener("submit",E=>{E.preventDefault(),A.ask(a.value)}),l.addEventListener("click",()=>{a.value="",A.reset()}),k.addEventListener("click",E=>{let h=E.target.closest("[data-example]");h&&(a.value=h.getAttribute("data-example"),A.ask(a.value))}),{element:C,ask:E=>(a.value=E,A.ask(E)),destroy(){v(),C.remove()}}}var To={en:{search:"Search\u2026",searchAria:"Search grid",rows:"rows",selected:"selected",loading:"Loading\u2026",noData:"No data found.",selectRow:e=>`Select row ${e}`,selectPage:"Select all rows on this page",pageSize:"Rows per page",page:(e,A)=>`Page ${e} of ${A}`,showing:(e,A,t)=>t?`Showing ${e}\u2013${A} of ${t}`:"No rows",first:"First page",previous:"Previous page",next:"Next page",last:"Last page",yes:"Yes",no:"No",sortedAsc:e=>`Sorted by ${e}, ascending`,sortedDesc:e=>`Sorted by ${e}, descending`,sortCleared:"Sorting cleared",filters:e=>`${e} filter(s) applied`,clearFilters:"Clear filters",removeFilter:e=>`Remove filter: ${e}`,export:"Export CSV",tableView:"Table view",cardView:"Card view",highlighted:"highlighted",results:e=>`${e} result(s)`,ops:{contains:"contains",equals:"is",startsWith:"starts with",endsWith:"ends with",greaterThan:">",lessThan:"<",between:"between"}},te:{search:"\u0C36\u0C4B\u0C27\u0C3F\u0C02\u0C1A\u0C02\u0C21\u0C3F\u2026",searchAria:"\u0C17\u0C4D\u0C30\u0C3F\u0C21\u0C4D\u200C\u0C32\u0C4B \u0C36\u0C4B\u0C27\u0C3F\u0C02\u0C1A\u0C02\u0C21\u0C3F",rows:"\u0C35\u0C30\u0C41\u0C38\u0C32\u0C41",selected:"\u0C0E\u0C02\u0C1A\u0C41\u0C15\u0C41\u0C28\u0C4D\u0C28\u0C35\u0C3F",loading:"\u0C32\u0C4B\u0C21\u0C4D \u0C05\u0C35\u0C41\u0C24\u0C4B\u0C02\u0C26\u0C3F\u2026",noData:"\u0C21\u0C47\u0C1F\u0C3E \u0C15\u0C28\u0C2C\u0C21\u0C32\u0C47\u0C26\u0C41.",selectRow:e=>`\u0C35\u0C30\u0C41\u0C38 ${e} \u0C0E\u0C02\u0C1A\u0C41\u0C15\u0C4B\u0C02\u0C21\u0C3F`,selectPage:"\u0C08 \u0C2A\u0C47\u0C1C\u0C40\u0C32\u0C4B\u0C28\u0C3F \u0C05\u0C28\u0C4D\u0C28\u0C3F \u0C35\u0C30\u0C41\u0C38\u0C32\u0C41 \u0C0E\u0C02\u0C1A\u0C41\u0C15\u0C4B\u0C02\u0C21\u0C3F",pageSize:"\u0C2A\u0C47\u0C1C\u0C40 \u0C2A\u0C30\u0C3F\u0C2E\u0C3E\u0C23\u0C02",page:(e,A)=>`\u0C2A\u0C47\u0C1C\u0C40 ${e} / ${A}`,showing:(e,A,t)=>t?`${t} \u0C32\u0C4B ${e}\u2013${A}`:"\u0C35\u0C30\u0C41\u0C38\u0C32\u0C41 \u0C32\u0C47\u0C35\u0C41",first:"\u0C2E\u0C4A\u0C26\u0C1F\u0C3F \u0C2A\u0C47\u0C1C\u0C40",previous:"\u0C35\u0C46\u0C28\u0C41\u0C15\u0C15\u0C41",next:"\u0C2E\u0C41\u0C02\u0C26\u0C41\u0C15\u0C41",last:"\u0C1A\u0C3F\u0C35\u0C30\u0C3F \u0C2A\u0C47\u0C1C\u0C40",yes:"\u0C05\u0C35\u0C41\u0C28\u0C41",no:"\u0C15\u0C3E\u0C26\u0C41",sortedAsc:e=>`${e} \u0C2A\u0C4D\u0C30\u0C15\u0C3E\u0C30\u0C02 \u0C06\u0C30\u0C4B\u0C39\u0C23 \u0C15\u0C4D\u0C30\u0C2E\u0C02`,sortedDesc:e=>`${e} \u0C2A\u0C4D\u0C30\u0C15\u0C3E\u0C30\u0C02 \u0C05\u0C35\u0C30\u0C4B\u0C39\u0C23 \u0C15\u0C4D\u0C30\u0C2E\u0C02`,sortCleared:"\u0C15\u0C4D\u0C30\u0C2E\u0C02 \u0C24\u0C40\u0C38\u0C47\u0C36\u0C3E\u0C30\u0C41",filters:e=>`${e} \u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D(\u0C32\u0C41) \u0C35\u0C47\u0C36\u0C3E\u0C30\u0C41`,clearFilters:"\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D\u0C32\u0C41 \u0C24\u0C40\u0C38\u0C47\u0C2F\u0C02\u0C21\u0C3F",removeFilter:e=>`\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D \u0C24\u0C40\u0C38\u0C47\u0C2F\u0C02\u0C21\u0C3F: ${e}`,export:"CSV \u0C21\u0C4C\u0C28\u0C4D\u200C\u0C32\u0C4B\u0C21\u0C4D",tableView:"\u0C2A\u0C1F\u0C4D\u0C1F\u0C3F\u0C15",cardView:"\u0C15\u0C3E\u0C30\u0C4D\u0C21\u0C41\u0C32\u0C41",highlighted:"\u0C39\u0C48\u0C32\u0C48\u0C1F\u0C4D",results:e=>`${e} \u0C2B\u0C32\u0C3F\u0C24\u0C3E\u0C32\u0C41`,ops:{contains:"\u0C32\u0C4B \u0C09\u0C02\u0C26\u0C3F",equals:"=",startsWith:"\u0C24\u0C4B \u0C2E\u0C4A\u0C26\u0C32\u0C41",endsWith:"\u0C24\u0C4B \u0C2E\u0C41\u0C17\u0C3F\u0C02\u0C2A\u0C41",greaterThan:">",lessThan:"<",between:"\u0C2E\u0C27\u0C4D\u0C2F"}}},Vn=["default","high-contrast","dark","color-blind","dyslexia"],MA=e=>String(e??"").normalize("NFC").toLowerCase();function Xn(e,A){return(Array.isArray(e)&&e.length?e:A[0]?Object.keys(A[0]).map(i=>({key:i,label:i})):[]).map(i=>({key:String(i.key),label:i.label==null?String(i.key):String(i.label),sortable:i.sortable!==!1,type:i.type||"text",align:i.align||(i.type==="number"?"right":"left"),render:typeof i.render=="function"?i.render:null,hiddenOnMobile:!!i.hiddenOnMobile,width:i.width}))}function jn(e,A,t,i){let o=typeof e=="string"?document.querySelector(e):e;if(!o||typeof o.appendChild!="function")throw new Error("renderGrid: container not found. Pass an element or a CSS selector.");let r=Array.isArray(A)?{...i||{},data:A,columns:t}:{...A||{}},n=r.locale||"en-IN",a=String(n).split("-")[0],s=To[a==="te"?"te":"en"],l=a==="te"?"te":"en",I=a==="en"||a==="te"?"en-IN":n,u=r.rowKey||"id",m=r.label||r.ariaLabel||"Data grid",c=r.pagination===!1?!1:typeof r.pagination=="object"?r.pagination:{},k=c&&c.sizeOptions||[10,20,50,100],f=r.selectable!==!1,C=r.autoScrollToHighlight!==!1,B=Number(r.mobileBreakpoint)||640,v=Array.isArray(r.data)?r.data.slice():[],E=Xn(r.columns,v),h=Ne(E),p=[],y=null,D="",Q=1,x=Number(c&&c.pageSize||r.pageSize)||10,G=Vn.includes(r.theme)?r.theme:"default",w=["table","card","auto"].includes(r.view)?r.view:"auto",M=!!r.loading,L=!1,F={r:1,c:0},R=new Set((r.selectedKeys||[]).map(String)),H=new Set((r.highlightIds||[]).map(String)),Ie={grid:X("yv-grid"),title:X("yv-title"),status:X("yv-status")};k.includes(x)||k.push(x),k.sort((d,b)=>d-b);let O=d=>ie(d,u)||String(v.indexOf(d)),_=d=>{let b=E.find(S=>S.type==="text")||E[0];return b?String(d[b.key]??O(d)):O(d)},ee=g("section",{class:`yv-grid yv-theme-${G}${r.wrap?" yv-wrap":""}${r.className?" "+r.className:""}`,role:"region","aria-labelledby":Ie.title,lang:r.lang||(a!=="en"?n:null)});r.maxHeight&&ee.style.setProperty("--yv-max-height",typeof r.maxHeight=="number"?`${r.maxHeight}px`:r.maxHeight);let NA=g("h3",{id:Ie.title,class:r.showTitle?"yv-grid-title":"yv-sr"},m);r.showTitle&&(NA.style.cssText="margin:0;padding:12px 12px 0;font-size:1.05em");let be=g("input",{type:"search",placeholder:s.search,"aria-label":s.searchAria,"aria-controls":Ie.grid,autocomplete:"off",spellcheck:"false"}),Qt=r.search===!1?null:g("label",{class:"yv-search"},q("search",18),be),Si=g("span",{class:"yv-info","aria-hidden":"true"}),IA=g("button",{type:"button",class:"yv-btn yv-icon","data-view-toggle":""}),Gi=r.exportable===!1?null:g("button",{type:"button",class:"yv-btn"},q("download",16),s.export),Ar=g("div",{class:"yv-tools"},w==="auto"||r.viewToggle?IA:null,Gi),tr=g("div",{class:"yv-toolbar"},Qt,Si,Ar),Ge=g("div",{class:"yv-filterbar",hidden:!0,"aria-label":s.filters(0)}),Bt=g("div",{class:"yv-slot"}),ae=g("div",{class:"yv-body",id:Ie.grid}),FA=g("div",{class:"yv-pager"}),Et=g("p",{class:"yv-sr",id:Ie.status,role:"status","aria-live":"polite","aria-atomic":"true"});ee.append(NA,tr,Ge,Bt,ae,FA,Et),o.appendChild(ee);let bt=null,RA=d=>{clearTimeout(bt),Et.textContent="",bt=setTimeout(()=>Et.textContent=d,40)},TA=r.engine==="rust"||r.engine==="auto"?r.engine:"ts",ye=null,LA=null,YA={data:null,columns:null,ready:!1};function Ni(){return ye||LA||!vA(TA,v.length)?LA||Promise.resolve(ye?"rust":"ts"):(LA=an().then(d=>(ye=d?_A.create(d):null,ye&&ee.isConnected&&V(),ye?"rust":"ts")),LA)}function ir(d){if(!ye||!vA(TA,v.length))return null;if(YA.data!==v||YA.columns!==E){let S=v.map(N=>E.map(T=>MA(N[T.key])+et+MA(We(T,N[T.key]))).join(et));YA={data:v,columns:E,ready:ye.setSearchTexts(S)}}if(!YA.ready)return null;let b=ye.search(d);return b?ti(v,b):null}function nr(d,b,S){if(!ye||!vA(TA,v.length)||b.type!=="number"&&b.type!=="date")return null;let N=new Float64Array(d.length),T=1/0,Y=-1/0;for(let $=0;$<d.length;$++){let P=d[$][b.key];if(P==null||P===""){N[$]=NaN;continue}let W=b.type==="number"?Number(P):new Date(P).getTime();if(!Number.isFinite(W))return null;N[$]=W,W<T&&(T=W),W>Y&&(Y=W)}if(T===1/0||!Number.isFinite(Y-T))return null;let J=ye.sortByKeys(N,S==="desc");return J?ti(d,J):null}function rr(d,b,S,N){let T=d[S.key],Y=b[S.key];if(T==null||T==="")return Y==null||Y===""?0:1;if(Y==null||Y==="")return-1;let J;return S.type==="number"?J=Number(T)-Number(Y):S.type==="date"?J=new Date(T).getTime()-new Date(Y).getTime():J=String(T).localeCompare(String(Y),n,{numeric:!0,sensitivity:"base"}),Number.isFinite(J)||(J=String(T).localeCompare(String(Y))),N==="desc"?-J:J}let De=null,wt=null;function Ue(){Ni();let d=performance.now(),b=null,S=null,N,T=D?MA(D):"",Y=T?ir(T):null;Y?(b="rust",N=ve(Y,h,p)):(N=ve(v,h,p),T&&(b="ts",N=N.filter($=>E.some(P=>MA($[P.key]).includes(T)||MA(We(P,$[P.key])).includes(T)))));let J=N.length;if(y&&y.key){let $=E.find(P=>P.key===y.key);if($){let P=nr(N,$,y.direction);S=P?"rust":"ts",N=P||N.slice().sort((W,K)=>rr(W,K,$,y.direction))}}return De=b||S?{query:T?D:"",ms:performance.now()-d,rows:J,engine:b==="rust"||S==="rust"?"rust":"ts"}:null,N}let vt=null,xt=null;function We(d,b){if(b==null||b==="")return"";if(d.type==="number"&&Number.isFinite(Number(b)))return vt=vt||new Intl.NumberFormat(I),vt.format(Number(b));if(d.type==="date"){let S=new Date(b);return Number.isNaN(S.getTime())?String(b):(xt=xt||new Intl.DateTimeFormat(I,{year:"numeric",month:"short",day:"numeric"}),xt.format(S))}return d.type==="boolean"?b===!0||b==="true"?s.yes:s.no:String(b)}function Fi(d,b,S){let N=b[d.key];if(d.render)try{let T=d.render(N,b,S);return T instanceof Node?T:document.createTextNode(T==null?"":String(T))}catch(T){return console.error("[yuktai] column render failed",d.key,T),document.createTextNode(We(d,N))}return d.type==="badge"&&N!=null&&N!==""?g("span",{class:"yv-cellbadge"},String(N)):document.createTextNode(We(d,N))}let dA=()=>w==="card"||w==="auto"&&L;function Ve(d){if(c===!1)return{pages:1,start:0,end:d};let b=Math.max(1,Math.ceil(d/x));return Q=Math.min(Math.max(1,Q),b),{pages:b,start:(Q-1)*x,end:Math.min(d,Q*x)}}let me=[];function V(){let d=Ue();me=d;let{pages:b,start:S,end:N}=Ve(d.length),T=d.slice(S,N);ee.className=`yv-grid yv-theme-${G}${r.wrap?" yv-wrap":""}${r.className?" "+r.className:""}`,ee.setAttribute("aria-busy",String(M)),Si.textContent=`${d.length.toLocaleString(I)} ${s.rows}${f?` \xB7 ${R.size.toLocaleString(I)} ${s.selected}`:""}${r.showSearchTime&&De?` \xB7 ${sn(De.ms)} \xB7 ${De.engine==="rust"?"Rust":"TS"}`:""}`;let Y=De?[D,y&&y.key,y&&y.direction,p,v]:null,J=!Y||!wt||Y.some((P,W)=>P!==wt[W]);De&&J&&typeof r.onSearchTime=="function"&&r.onSearchTime({...De}),wt=Y,IA.innerHTML=ce(dA()?"grid":"cards",18),IA.setAttribute("aria-label",dA()?s.tableView:s.cardView),IA.title=dA()?s.tableView:s.cardView,sr();let $=ae.contains(document.activeElement);ae.replaceChildren(M?g("div",{class:"yv-loading",role:"status"},s.loading):dA()?ar(T,S):or(T,S,d.length)),$&&!M&&Ti(),gr(d.length,b,S,N)}function or(d,b,S){let N=E,T=N.length+(f?1:0),Y=g("table",{class:"yv-table",role:"grid","aria-labelledby":Ie.title,"aria-rowcount":S+1,"aria-colcount":T,"aria-multiselectable":f?"true":null}),J=g("tr",{role:"row","aria-rowindex":1});if(f){let K=d.length>0&&d.every(Qe=>R.has(O(Qe))),fe=d.some(Qe=>R.has(O(Qe))),Ae=g("input",{type:"checkbox","data-select-page":"","aria-label":s.selectPage,tabindex:-1});Ae.checked=K,Ae.indeterminate=!K&&fe,J.append(g("th",{role:"columnheader",scope:"col","aria-colindex":1,tabindex:-1,"data-col":0},g("label",{class:"yv-check"},Ae)))}N.forEach((K,fe)=>{let Ae=fe+(f?1:0),Qe=y&&y.key===K.key?y.direction:null,Je=g("th",{role:"columnheader",scope:"col","aria-colindex":Ae+1,"aria-sort":K.sortable?Qe==="asc"?"ascending":Qe==="desc"?"descending":"none":null,class:K.align!=="left"?`yv-align-${K.align}`:null,tabindex:-1,"data-col":Ae});if(K.width&&(Je.style.width=typeof K.width=="number"?`${K.width}px`:K.width),K.sortable){let _e=g("button",{type:"button",class:"yv-sortbtn","data-sort":K.key,tabindex:-1},K.label);_e.insertAdjacentHTML("beforeend",ce(Qe==="asc"?"sortUp":Qe==="desc"?"sortDown":"sort",14)),Je.append(_e)}else Je.append(K.label);J.append(Je)});let $=g("tbody");if(!d.length){let K=r.empty instanceof Node?r.empty.cloneNode(!0):document.createTextNode(r.empty?String(r.empty):s.noData);$.append(g("tr",{role:"row","aria-rowindex":2},g("td",{role:"gridcell",class:"yv-empty",colspan:T,tabindex:-1,"data-col":0},K)))}d.forEach((K,fe)=>{let Ae=O(K),Qe=R.has(Ae),Je=H.has(Ae),_e=g("tr",{role:"row","aria-rowindex":b+fe+2,"aria-selected":f?String(Qe):null,"data-yuktai-row-id":Ae,class:Je?"yv-hl":null});if(f){let eA=g("input",{type:"checkbox","data-select":Ae,"aria-label":s.selectRow(_(K)),tabindex:-1});eA.checked=Qe,_e.append(g("td",{role:"gridcell","aria-colindex":1,tabindex:-1,"data-col":0},g("label",{class:"yv-check"},eA)))}N.forEach((eA,Yi)=>{let Ui=Yi+(f?1:0),Mt=g("td",{role:"gridcell","aria-colindex":Ui+1,tabindex:-1,"data-col":Ui,class:eA.align!=="left"?`yv-align-${eA.align}`:null});Mt.append(Fi(eA,K,b+fe)),Yi===0&&Je&&Mt.append(g("span",{class:"yv-sr"},` (${s.highlighted})`)),_e.append(Mt)}),$.append(_e)}),Y.append(g("thead",null,J),$);let P=Y.querySelectorAll("tr");F.r=Math.min(F.r,P.length-1);let W=Ri(Y,F.r,F.c)||Ri(Y,0,0);return W&&W.setAttribute("tabindex","0"),g("div",{class:"yv-tablewrap"},Y)}function ar(d,b){if(!d.length){let N=r.empty instanceof Node?r.empty.cloneNode(!0):document.createTextNode(r.empty?String(r.empty):s.noData);return g("div",{class:"yv-empty",role:"status"},N)}let S=g("ul",{class:"yv-cards","aria-labelledby":Ie.title});return d.forEach((N,T)=>{let Y=O(N),J=R.has(Y),$=H.has(Y),P=X("yv-card"),W=g("li",{class:`yv-card${$?" yv-hl":""}`,"data-yuktai-row-id":Y,"aria-labelledby":P,"aria-selected":f?String(J):null,tabindex:-1}),K=g("div",{class:"yv-card-head"},g("p",{class:"yv-card-title",id:P},_(N),$?g("span",{class:"yv-sr"},` (${s.highlighted})`):null));if(f){let Ae=g("input",{type:"checkbox","data-select":Y,"aria-label":s.selectRow(_(N))});Ae.checked=J,K.append(g("label",{class:"yv-check"},Ae))}let fe=g("dl");E.forEach(Ae=>{Ae.hiddenOnMobile||fe.append(g("dt",null,Ae.label),g("dd",null,Fi(Ae,N,b+T)))}),W.append(K,fe),typeof r.onRowClick=="function"&&W.append(g("button",{type:"button",class:"yv-btn yv-small","data-open":Y,style:"margin-top:8px"},r.openLabel||(a==="te"?"\u0C24\u0C46\u0C30\u0C41\u0C35\u0C41":"Open"))),S.append(W)}),S}function sr(){if(Ge.replaceChildren(),!p.length){Ge.hidden=!0;return}Ge.hidden=!1,Ge.setAttribute("aria-label",s.filters(p.length)),Ge.append(g("span",{class:"yv-muted"},q("filter",15)," ",s.filters(p.length))),p.forEach((d,b)=>{let S=E.find(J=>J.key===d.key),N=Array.isArray(d.value)?d.value.map(J=>We(S||{},J)).join(" \u2013 "):S?We(S,d.value):String(d.value),T=`${S?S.label:d.key} ${s.ops[d.operator]||d.operator} ${N}`,Y=g("button",{type:"button",class:"yv-chip","data-remove-filter":b,"aria-label":s.removeFilter(T)},T,q("close",14));Ge.append(Y)}),Ge.append(g("button",{type:"button",class:"yv-btn yv-small","data-clear-filters":""},s.clearFilters))}function gr(d,b,S,N){if(FA.replaceChildren(),c===!1){FA.append(g("span",{class:"yv-muted"},s.results(d.toLocaleString(I))));return}let T=P=>P.toLocaleString(I),Y=g("span",{class:"yv-muted"},d?s.showing(T(S+1),T(N),T(d)):s.showing(0,0,0)),J=g("div",{class:"yv-pages"});if(c.showSizeChanger!==!1){let P=X("yv-size"),W=g("select",{id:P,"data-page-size":""},...k.map(K=>g("option",{value:K,selected:K===x},String(K))));J.append(g("label",{for:P,class:"yv-muted"},s.pageSize),W)}let $=(P,W,K,fe)=>{let Ae=g("button",{type:"button",class:"yv-btn yv-icon","aria-label":W,title:W,disabled:K,"data-page":fe});return Ae.innerHTML=ce(P,18),Ae};J.append($("first",s.first,Q<=1,"first"),$("left",s.previous,Q<=1,"prev"),g("span",{class:"yv-muted","aria-current":"page"},s.page(T(Q),T(b))),$("right",s.next,Q>=b,"next"),$("last",s.last,Q>=b,"last")),FA.append(Y,J)}function Ri(d,b,S){let N=d.querySelectorAll("tr")[b];if(!N)return null;let T=N.querySelectorAll("th,td");return T[Math.min(S,T.length-1)]||null}function Me(d,b){let S=ae.querySelector("table");if(!S)return;let N=S.querySelectorAll("tr");d=Math.max(0,Math.min(d,N.length-1));let T=N[d].querySelectorAll("th,td");b=Math.max(0,Math.min(b,T.length-1)),S.querySelectorAll('[tabindex="0"]').forEach(J=>J.setAttribute("tabindex","-1"));let Y=T[b];Y.setAttribute("tabindex","0"),F={r:d,c:b},Y.focus()}function Ti(){if(ae.querySelector("table"))Me(F.r,F.c);else{let b=ae.querySelector(".yv-card");b&&b.focus()}}function lr(d){let b=ae.querySelector("table"),S=d.target.closest&&d.target.closest("th,td");if(!b||!S||!b.contains(S))return;let N=S.parentElement,T=Array.prototype.indexOf.call(b.querySelectorAll("tr"),N),Y=Array.prototype.indexOf.call(N.querySelectorAll("th,td"),S),J=b.querySelectorAll("tr").length-1,$=!0;switch(d.key){case"ArrowRight":Me(T,Y+1);break;case"ArrowLeft":Me(T,Y-1);break;case"ArrowDown":Me(T+1,Y);break;case"ArrowUp":Me(T-1,Y);break;case"Home":d.ctrlKey?Me(0,0):Me(T,0);break;case"End":d.ctrlKey?Me(J,999):Me(T,999);break;case"PageDown":c!==!1&&(F={r:Math.max(1,T),c:Y},je(Q+1,!0));break;case"PageUp":c!==!1&&(F={r:Math.max(1,T),c:Y},je(Q-1,!0));break;case"Enter":case" ":{let P=S.querySelector("[data-sort]"),W=S.querySelector("input[type=checkbox]");P?Li(P.getAttribute("data-sort")):W?W.click():d.key==="Enter"&&N.hasAttribute("data-yuktai-row-id")&&typeof r.onRowClick=="function"?uA(N.getAttribute("data-yuktai-row-id")):d.key===" "&&f&&N.hasAttribute("data-yuktai-row-id")?cr(N.getAttribute("data-yuktai-row-id")):$=!1;break}default:$=!1}$&&(d.preventDefault(),d.stopPropagation())}function Li(d){let b=E.find(N=>N.key===d);if(!b||!b.sortable)return;!y||y.key!==d?y={key:d,direction:"asc"}:y.direction==="asc"?y={key:d,direction:"desc"}:y=null,Q=1,ae.querySelector("table")&&ae.contains(document.activeElement)&&(F={r:0,c:F.c}),V(),RA(y?y.direction==="asc"?s.sortedAsc(b.label):s.sortedDesc(b.label):s.sortCleared),r.onSortChange&&r.onSortChange(y?{key:y.key,direction:y.direction}:null)}function Xe(){r.onSelectionChange&&r.onSelectionChange(Array.from(R)),ee.dispatchEvent(new CustomEvent("yuktai:selection",{detail:{keys:Array.from(R)},bubbles:!0}))}function cr(d,b){(b===void 0?!R.has(d):b)?R.add(d):R.delete(d),V(),Xe()}function je(d,b){let{pages:S}=Ve(me.length),N=Math.min(Math.max(1,d),S);N===Q&&!b||(Q=N,V(),RA(s.page(Q,S)),b&&ae.querySelector("table")&&Ti())}function uA(d){let b=v.find(S=>O(S)===String(d));return b?(typeof r.onRowClick=="function"&&r.onRowClick(b,v.indexOf(b)),typeof r.onOpenRow=="function"&&r.onOpenRow(String(d)),!0):!1}function CA(d,b=C){if(H.clear(),(d||[]).forEach(S=>H.add(typeof S=="object"&&S!==null?O(S):String(S))),b&&H.size){let S=me.length?me.findIndex(N=>H.has(O(N))):Ue().findIndex(N=>H.has(O(N)));S>=0&&c!==!1&&(Q=Math.floor(S/x)+1)}if(V(),b&&H.size){let S=ae.querySelector(".yv-hl");S&&S.scrollIntoView&&S.scrollIntoView({block:"nearest",behavior:wi()?"auto":"smooth"})}}let kt=null;be.addEventListener("input",()=>{clearTimeout(kt),kt=setTimeout(()=>{D=be.value.trim(),Q=1,V(),RA(s.results(me.length.toLocaleString(I)))},160)}),ee.addEventListener("click",d=>{let b=d.target.closest("button, input, tr[data-yuktai-row-id]");if(!(!b||!ee.contains(b))){if(b.matches("[data-sort]"))return Li(b.getAttribute("data-sort"));if(b.matches("[data-page]")){let S=b.getAttribute("data-page"),{pages:N}=Ve(me.length);return je(S==="first"?1:S==="prev"?Q-1:S==="next"?Q+1:N)}if(b.matches("[data-remove-filter]")){p=p.filter((S,N)=>N!==Number(b.getAttribute("data-remove-filter"))),Q=1,V(),r.onFiltersChange&&r.onFiltersChange(p.slice());return}if(b.matches("[data-clear-filters]"))return j.clearFilters();if(b.matches("[data-open]"))return uA(b.getAttribute("data-open"));if(b===IA){w=dA()?"table":"card",V();return}if(b===Gi)return j.exportCSV();b.matches("tr[data-yuktai-row-id]")&&typeof r.onRowClick=="function"&&!d.target.closest("label,input,button,a")&&uA(b.getAttribute("data-yuktai-row-id"))}}),ee.addEventListener("change",d=>{let b=d.target;if(b.matches("[data-select]"))b.checked?R.add(b.getAttribute("data-select")):R.delete(b.getAttribute("data-select")),V(),Xe();else if(b.matches("[data-select-page]")){let{start:S,end:N}=Ve(me.length);me.slice(S,N).forEach(T=>b.checked?R.add(O(T)):R.delete(O(T))),V(),Xe()}else b.matches("[data-page-size]")&&(x=Number(b.value)||x,Q=1,V(),ae.closest(".yv-grid").querySelector("[data-page-size]").focus())}),ae.addEventListener("keydown",lr),ae.addEventListener("focusin",d=>{let b=ae.querySelector("table"),S=d.target.closest&&d.target.closest("th,td");if(!b||!S)return;let N=S.parentElement,T=Array.prototype.indexOf.call(b.querySelectorAll("tr"),N),Y=Array.prototype.indexOf.call(N.querySelectorAll("th,td"),S);T<0||Y<0||(b.querySelectorAll('[tabindex="0"]').forEach(J=>J!==S&&J.setAttribute("tabindex","-1")),S.setAttribute("tabindex","0"),F={r:T,c:Y})});let UA=null;typeof ResizeObserver=="function"&&(UA=new ResizeObserver(d=>{let b=d[0]&&d[0].contentRect.width,S=b>0&&b<B;S!==L&&(L=S,w==="auto"&&V())}),UA.observe(ee));let we={get data(){return v},get columns(){return h},rowKey:u,locale:l,get filters(){return p},onHighlightRows:d=>CA(d),onSelectRow:d=>{R.add(String(d)),CA([String(d)]),Xe()},onOpenRow:typeof r.onRowClick=="function"||typeof r.onOpenRow=="function"?d=>uA(d):void 0,onFiltersChange:d=>{p=d.slice(),Q=1,V(),r.onFiltersChange&&r.onFiltersChange(p.slice())},onSortChange:d=>{y=d?{key:d.key,direction:d.direction==="desc"?"desc":"asc"}:null,Q=1,V(),r.onSortChange&&r.onSortChange(y)}},JA=tA(we,{name:r.toolName||"yuktai_grid",descriptions:r.toolDescriptions}),hA=dt({tools:()=>JA,data:()=>v,columns:()=>h.map(d=>({key:d.key,label:d.label})),rowKey:u,locale:l,customRules:r.customRules||[],parseIntent:r.parseIntent,historyLimit:r.historyLimit||20,onResult:d=>{r.onAgentResult&&r.onAgentResult({success:d.success,message:d.message,tool:d.tool})},onError:r.onAgentError}),KA={status:{state:"unsupported",registered:[],errors:[]},unregister(){}};r.webmcp&&(KA=ut(()=>JA,{onStatusChange:d=>{r.onWebMCPStatusChange&&r.onWebMCPStatusChange(d),ee.dispatchEvent(new CustomEvent("yuktai:webmcp",{detail:d,bubbles:!0}))}}));let Ze=Ct({data:v,columns:h,rowKey:u,referenceDate:r.referenceDate,onOpenRow:we.onOpenRow,bind:{getData:()=>v,getFilters:()=>p,getSort:()=>y,getHighlightIds:()=>Array.from(H),setFilters:d=>we.onFiltersChange(d),setSort:d=>we.onSortChange(d),setHighlightIds:d=>CA(d),selectRow:d=>we.onSelectRow(d)}}),pA=null;r.ai&&(pA=xi(Bt,hA,{locale:l,inputLanguage:r.inputLanguage||(l==="te"?"te-IN":"en-IN"),examples:r.assistantExamples,webmcp:()=>KA.status,showWebMCP:!!r.webmcp}),r.webmcp&&ee.addEventListener("yuktai:webmcp",()=>pA&&pA.refreshStatus()));let Dt=null;if(r.agentic){let d=typeof r.agentic=="object"?r.agentic:{};Dt=mt(Bt,Ze,d)}let j={element:ee,host:ee,get tools(){return JA},agent:hA,agentic:Ze,get webmcpStatus(){return KA.status},refresh(d){return Array.isArray(d)&&(v=d.slice(),R.clear(),H.clear(),Q=1),V(),j},setData(d,b){return Array.isArray(b)&&(E=Xn(b,d||v),h=Ne(E),JA=tA(we,{name:r.toolName||"yuktai_grid",descriptions:r.toolDescriptions})),j.refresh(d)},getData:()=>v.slice(),getRows:()=>Ue(),getPageRows(){let d=Ue(),{start:b,end:S}=Ve(d.length);return d.slice(b,S)},getSelectedRows:()=>v.filter(d=>R.has(O(d))),getSelectedKeys:()=>Array.from(R),select(d,b=!0){return[].concat(d).forEach(S=>b?R.add(String(S)):R.delete(String(S))),V(),Xe(),j},clearSelection(){return R.clear(),V(),Xe(),j},search(d){return D=String(d||"").trim(),be.value=D,Q=1,V(),me.length},setFilters(d){return we.onFiltersChange(Array.isArray(d)?d:[]),j},addFilter(d){return hA.executeTool("filter",d)},getFilters:()=>p.slice(),clearFilters(){return we.onFiltersChange([]),RA(a==="te"?"\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D\u0C32\u0C41 \u0C24\u0C40\u0C38\u0C47\u0C36\u0C3E\u0C30\u0C41":"Filters cleared"),j},sortBy(d,b="asc"){return we.onSortChange(d?{key:d,direction:b}:null),j},clearSort(){return we.onSortChange(null),j},getSort:()=>y?{...y}:null,get engine(){return ye&&vA(TA,v.length)?"rust":"ts"},getSearchTime:()=>De?{...De}:null,whenEngineReady:()=>Ni().then(()=>j.engine),highlight(d,b){return CA(d,b===void 0?C:b),j},clearHighlight(){return CA([],!1),j},getHighlightIds:()=>Array.from(H),goToPage(d){return je(Number(d)||1),j},nextPage(){return je(Q+1),j},prevPage(){return je(Q-1),j},getPage:()=>({page:Q,pageSize:x,pages:Ve(me.length).pages,total:me.length}),setPageSize(d){return x=Number(d)||x,k.includes(x)||(k.push(x),k.sort((b,S)=>b-S)),Q=1,V(),j},setTheme(d){return G=Vn.includes(d)?d:"default",V(),j},getTheme:()=>G,setView(d){return w=["table","card","auto"].includes(d)?d:"auto",V(),j},setLoading(d){return M=!!d,V(),j},openRow:d=>uA(d),async ask(d){return(await Ze.ask(d)).answer},askDetailed:d=>Ze.ask(d),assistantAsk:d=>hA.ask(d),executeTool:(d,b)=>hA.executeTool(d,b),biSummary:()=>He(Ue(),h),anomalies:()=>qe(Ue(),h,{rowKey:u}),async runTasks(d){return(await Ze.ask(d)).answer},reset(){return Ze.reset(),D="",be.value="",V(),j},exportCSV(d=r.exportFileName||"yuktai-grid-export.csv"){let b=R.size?v.filter(N=>R.has(O(N))):Ue(),S="\uFEFF"+[E.map(N=>vi(N.label)).join(","),...b.map(N=>E.map(T=>vi(N[T.key])).join(","))].join(`\r
|
|
543
|
+
`);return DA(d,S,"text/csv;charset=utf-8"),oe(`${b.length} row(s) exported`),b.length},destroy(){clearTimeout(kt),clearTimeout(bt),UA&&UA.disconnect(),KA.unregister(),pA&&pA.destroy(),Dt&&Dt.destroy(),ee.remove()}};return typeof r.onReady=="function"&&r.onReady(j),V(),j}var Lo={en:{title:"Ask the grid",hint:"Type or speak: a word to search, \u201Csort by <column>\u201D, \u201Chow many\u201D, \u201Cclear filters\u201D, \u201Copen <name>\u201D.",placeholder:"Ask the grid\u2026",ask:"Ask",listen:"Speak",stop:"Stop",listening:"Listening\u2026",noVoice:"Voice input is not available in this browser. Type your question instead.",history:"History",clear:"Clear history",webmcp:{unsupported:"WebMCP: not available in this browser (no document.modelContext).",registering:"WebMCP: registering tools\u2026",ready:"WebMCP: tools ready",partial:"WebMCP: some tools failed",error:"WebMCP: registration failed"}},te:{title:"\u0C17\u0C4D\u0C30\u0C3F\u0C21\u0C4D\u200C\u0C28\u0C41 \u0C05\u0C21\u0C17\u0C02\u0C21\u0C3F",hint:"\u0C1F\u0C48\u0C2A\u0C4D \u0C1A\u0C47\u0C2F\u0C02\u0C21\u0C3F \u0C32\u0C47\u0C26\u0C3E \u0C2E\u0C3E\u0C1F\u0C4D\u0C32\u0C3E\u0C21\u0C02\u0C21\u0C3F: \u0C35\u0C46\u0C24\u0C15\u0C3E\u0C32\u0C4D\u0C38\u0C3F\u0C28 \u0C2A\u0C26\u0C02, \u201C<\u0C15\u0C3E\u0C32\u0C2E\u0C4D> \u0C2A\u0C4D\u0C30\u0C15\u0C3E\u0C30\u0C02 \u0C15\u0C4D\u0C30\u0C2E\u0C02\u201D, \u201C\u0C0E\u0C28\u0C4D\u0C28\u0C3F\u201D, \u201C\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D\u0C32\u0C41 \u0C24\u0C40\u0C38\u0C47\u0C2F\u0C3F\u201D.",placeholder:"\u0C17\u0C4D\u0C30\u0C3F\u0C21\u0C4D\u200C\u0C28\u0C41 \u0C05\u0C21\u0C17\u0C02\u0C21\u0C3F\u2026",ask:"\u0C05\u0C21\u0C41\u0C17\u0C41",listen:"\u0C2E\u0C3E\u0C1F\u0C4D\u0C32\u0C3E\u0C21\u0C41",stop:"\u0C06\u0C2A\u0C41",listening:"\u0C35\u0C3F\u0C02\u0C1F\u0C41\u0C28\u0C4D\u0C28\u0C3E\u0C28\u0C41\u2026",noVoice:"\u0C08 \u0C2C\u0C4D\u0C30\u0C4C\u0C1C\u0C30\u0C4D\u200C\u0C32\u0C4B \u0C35\u0C3E\u0C2F\u0C3F\u0C38\u0C4D \u0C07\u0C28\u0C4D\u200C\u0C2A\u0C41\u0C1F\u0C4D \u0C32\u0C47\u0C26\u0C41. \u0C1F\u0C48\u0C2A\u0C4D \u0C1A\u0C47\u0C2F\u0C02\u0C21\u0C3F.",history:"\u0C1A\u0C30\u0C3F\u0C24\u0C4D\u0C30",clear:"\u0C1A\u0C30\u0C3F\u0C24\u0C4D\u0C30 \u0C24\u0C40\u0C38\u0C47\u0C2F\u0C3F",webmcp:{unsupported:"WebMCP: \u0C08 \u0C2C\u0C4D\u0C30\u0C4C\u0C1C\u0C30\u0C4D\u200C\u0C32\u0C4B \u0C32\u0C47\u0C26\u0C41.",registering:"WebMCP: \u0C28\u0C2E\u0C4B\u0C26\u0C41 \u0C1A\u0C47\u0C38\u0C4D\u0C24\u0C4B\u0C02\u0C26\u0C3F\u2026",ready:"WebMCP: \u0C38\u0C3F\u0C26\u0C4D\u0C27\u0C02",partial:"WebMCP: \u0C15\u0C4A\u0C28\u0C4D\u0C28\u0C3F \u0C35\u0C3F\u0C2B\u0C32\u0C02",error:"WebMCP: \u0C35\u0C3F\u0C2B\u0C32\u0C02"}}};function xi(e,A,t={}){let i=Lo[t.locale==="te"?"te":"en"],o=X("yv-ask"),r=X("yv-hint"),n=g("input",{id:o,class:"yv-input",type:"text",placeholder:i.placeholder,autocomplete:"off","aria-describedby":r}),a=g("button",{type:"submit",class:"yv-btn yv-primary"},q("spark",16),i.ask),s=typeof window<"u"&&(window.SpeechRecognition||window.webkitSpeechRecognition),l=g("button",{type:"button",class:"yv-btn","aria-pressed":"false"},q("mic",16),i.listen),I=g("div",{class:"yv-answer",role:"status","aria-live":"polite"}),u=g("ol"),m=g("details",{class:"yv-history"},g("summary",null,i.history),u,g("button",{type:"button",class:"yv-btn yv-small","data-clear-history":""},i.clear)),c=t.showWebMCP?g("p",{class:"yv-muted",style:"margin:8px 0 0"}):null,k=t.examples||(t.locale==="te"?["\u0C0E\u0C28\u0C4D\u0C28\u0C3F","\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D\u0C32\u0C41 \u0C24\u0C40\u0C38\u0C47\u0C2F\u0C3F"]:["how many","clear filters","clear sort"]),f=g("div",{class:"yv-chips"},...k.map(y=>g("button",{type:"button",class:"yv-chip","data-example":y},y))),C=g("form",{class:"yv-row",role:"search","aria-label":i.title},g("label",{for:o,class:"yv-sr"},i.title),n,a,l),B=g("section",{class:"yv-box yv-assistant","aria-label":i.title},g("h3",null,q("chat",16)," ",i.title),g("p",{id:r,class:"yv-muted",style:"margin:0 0 8px"},i.hint),C,f,I,m,c);e.appendChild(B);async function v(y){let D=String(y||"").trim();if(D){a.disabled=!0;try{let Q=await A.ask(D);I.textContent=Q.message,I.className=`yv-answer ${Q.success?"":"yv-fail"}`}finally{a.disabled=!1}}}let E=A.subscribe(y=>{u.replaceChildren(...y.history.slice().reverse().map(D=>g("li",null,g("span",{class:D.result.success?"yv-ok":"yv-fail"},D.result.success?"\u2713 ":"\u2717 "),D.result.message,g("span",{class:"yv-muted"},` (${D.tool})`)))),m.querySelector("summary").textContent=`${i.history} (${y.history.length})`});C.addEventListener("submit",y=>{y.preventDefault(),v(n.value)}),B.addEventListener("click",y=>{let D=y.target.closest("[data-example],[data-clear-history]");D&&(D.hasAttribute("data-example")?(n.value=D.getAttribute("data-example"),v(n.value)):(A.clearHistory(),I.textContent=""))});let h=null;l.addEventListener("click",()=>{if(!s){I.textContent=i.noVoice;return}if(h){h.stop();return}h=new s,h.lang=t.inputLanguage||"en-IN",h.interimResults=!1,h.maxAlternatives=1,l.setAttribute("aria-pressed","true"),l.lastChild.textContent=i.stop,I.textContent=i.listening,h.onresult=y=>{let D=y.results[0][0].transcript;n.value=D,v(D)},h.onerror=y=>{I.textContent=`${i.noVoice} (${y.error})`},h.onend=()=>{h=null,l.setAttribute("aria-pressed","false"),l.lastChild.textContent=i.listen};try{h.start()}catch(y){I.textContent=`${i.noVoice} (${y.message})`,h=null}}),s||(l.title=i.noVoice);function p(){if(!c||!t.webmcp)return;let y=t.webmcp();c.textContent=i.webmcp[y.state]+(y.registered&&y.registered.length?` (${y.registered.length})`:"")}return p(),{element:B,ask:v,refreshStatus:p,destroy(){E(),h&&h.stop(),B.remove()}}}var Zn=[{id:"copilot",label:"Copilot",icon:"wand"},{id:"qa",label:"QA report",icon:"check"},{id:"forms",label:"Forms",icon:"form"},{id:"design",label:"Design",icon:"layout"},{id:"ask",label:"Ask page",icon:"chat"},{id:"voice",label:"Voice",icon:"mic"}],Yo=[["en-IN","English (India)"],["en-US","English (US)"],["te-IN","\u0C24\u0C46\u0C32\u0C41\u0C17\u0C41 (Telugu)"],["hi-IN","\u0939\u093F\u0928\u094D\u0926\u0940 (Hindi)"],["ta-IN","\u0BA4\u0BAE\u0BBF\u0BB4\u0BCD (Tamil)"],["kn-IN","\u0C95\u0CA8\u0CCD\u0CA8\u0CA1 (Kannada)"],["ml-IN","\u0D2E\u0D32\u0D2F\u0D3E\u0D33\u0D02 (Malayalam)"],["mr-IN","\u092E\u0930\u093E\u0920\u0940 (Marathi)"],["bn-IN","\u09AC\u09BE\u0982\u09B2\u09BE (Bengali)"],["gu-IN","\u0A97\u0AC1\u0A9C\u0AB0\u0ABE\u0AA4\u0AC0 (Gujarati)"]],ki=e=>g("span",{class:`yv-badge yv-sev-${e}`},e);function Di(e,A){return g("div",null,g("div",{class:"yv-score"},g("strong",null,String(e)),g("span",{class:"yv-muted"},"/ 100")),g("div",{class:"yv-meter",role:"img","aria-label":`Score ${e} out of 100`},g("span",{style:`width:${Math.max(0,Math.min(100,e))}%`})),g("p",{style:"margin:0 0 6px"},A))}function SA(e){let A=(e||[]).filter(Boolean);return A.length?g("button",{type:"button",class:"yv-btn yv-small",onclick:()=>oe(`${Wn(A)} element(s) outlined on the page`)},q("eye",14),"Show on page"):null}function ft(e,A={}){let t=e==null?null:typeof e=="string"?document.querySelector(e):e;if(e!=null&&!t)throw new Error("mountAgenticPanel: container not found");let i=X("yv-tabs"),o=g("section",{class:`yv-box yv-agentic-panel${A.theme?" yv-theme-"+A.theme:""}`,"data-yuktai-panel":"","aria-label":A.title||"Page tools"}),r=g("div",{class:"yv-tabs",role:"tablist","aria-label":"Page tools",id:i}),n={};Zn.forEach(E=>{let h=`${i}-${E.id}`,p=`${h}-panel`;r.append(g("button",{type:"button",class:"yv-tab",role:"tab",id:h,"aria-controls":p,"aria-selected":"false",tabindex:-1,"data-tab":E.id},q(E.icon,15)," ",E.label)),n[E.id]=g("div",{role:"tabpanel",id:p,"aria-labelledby":h,hidden:!0,tabindex:0})}),o.append(r,...Object.values(n)),t&&t.appendChild(o);let a={},s=null;function l(E,h){n[E]||(E="qa"),s=E,r.querySelectorAll("[role=tab]").forEach(p=>{let y=p.getAttribute("data-tab")===E;p.setAttribute("aria-selected",String(y)),p.tabIndex=y?0:-1,y&&h&&p.focus()}),Object.entries(n).forEach(([p,y])=>y.hidden=p!==E),a[E]||(a[E]=!0,v[E](n[E]))}r.addEventListener("click",E=>{let h=E.target.closest("[role=tab]");h&&l(h.getAttribute("data-tab"),!0)}),r.addEventListener("keydown",E=>{let h=Zn.map(Q=>Q.id),p=E.target.closest&&E.target.closest("[role=tab]"),y=h.indexOf(p?p.getAttribute("data-tab"):s),D=null;E.key==="ArrowRight"?D=h[(y+1)%h.length]:E.key==="ArrowLeft"?D=h[(y-1+h.length)%h.length]:E.key==="Home"?D=h[0]:E.key==="End"&&(D=h[h.length-1]),D&&(E.preventDefault(),E.stopPropagation(),l(D,!0))});let I=null;function u(E){let h=g("ul",{class:"yv-list"}),p=g("p",{class:"yv-status",role:"status","aria-live":"polite"}),y=g("div",{class:"yv-answer","aria-live":"polite"}),D=g("button",{type:"button",class:"yv-btn","aria-pressed":"false"},q("eye",16),"Watch page");I=jA({defaultLang:A.defaultLang,debounceMs:600,onUpdate:x=>Q(x)});function Q(x){let G=x.report;D.setAttribute("aria-pressed",String(x.watching)),p.textContent=G?`${G.summary} Fixes applied: ${x.appliedFixes}.${x.watching?" Watching for page changes.":""}`:"Scan the page to see issues.",h.replaceChildren(...(G?G.issues.slice(0,40):[]).map(w=>g("li",{class:"yv-item"},g("p",null,ki(w.severity)," ",g("b",null,w.message)),g("p",{class:"yv-muted"},`WCAG ${w.wcag} \xB7 `,g("code",null,w.selector)),g("div",{class:"yv-row"},g("button",{type:"button",class:"yv-btn yv-small",onclick:()=>y.textContent=I.explain(w.id)},q("info",14),"Explain"),w.autoFixable?g("button",{type:"button",class:"yv-btn yv-small",onclick:()=>oe(I.applyFix(w.id).message)},q("wand",14),"Fix"):null,SA([w.selector])))))}E.append(g("p",{class:"yv-muted"},"Finds accessibility problems, explains them in plain English, and applies safe fixes you can undo."),g("div",{class:"yv-row"},g("button",{type:"button",class:"yv-btn yv-primary",onclick:()=>I.scan()},q("search",16),"Scan page"),D,g("button",{type:"button",class:"yv-btn",onclick:()=>oe(`${I.applyAllFixes().filter(x=>x.applied).length} fix(es) applied`)},q("wand",16),"Apply all safe fixes"),g("button",{type:"button",class:"yv-btn",onclick:()=>oe(`${I.undoAll()} change(s) undone`)},q("undo",16),"Undo all")),p,y,h),D.addEventListener("click",()=>I.getState().watching?I.stop():I.start()),Q(I.getState())}function m(E){let h=g("div",{"aria-live":"polite"}),p=null,y=()=>{p=pe(A.auditOptions||{});let D=p.issues;h.replaceChildren(Di(p.score,p.summary),g("div",{class:"yv-row"},g("button",{type:"button",class:"yv-btn yv-small",onclick:async()=>oe(await On(EA(p))?"Markdown report copied":"Copy failed")},q("copy",14),"Copy Markdown"),g("button",{type:"button",class:"yv-btn yv-small",onclick:()=>DA("yuktai-qa-report.md",EA(p),"text/markdown;charset=utf-8")},q("download",14),"Markdown"),g("button",{type:"button",class:"yv-btn yv-small",onclick:()=>DA("yuktai-qa-report.json",XA(p),"application/json")},q("download",14),"JSON")),g("details",{class:"yv-history"},g("summary",null,`Checks (${p.checks.filter(Q=>Q.passed).length}/${p.checks.length} passed)`),g("ul",{class:"yv-steps"},...p.checks.map(Q=>g("li",null,g("span",{class:Q.passed?"yv-ok":"yv-fail"},Q.passed?"\u2713 ":"\u2717 "),Q.title||Q.rule,Q.issueCount?` \u2014 ${Q.issueCount} issue(s)`:"")))),g("ul",{class:"yv-list"},...D.slice(0,60).map(Q=>g("li",{class:"yv-item"},g("p",null,ki(Q.severity)," ",g("b",null,Q.message)),g("p",null,g("b",null,"Fix: "),Q.fix),g("p",{class:"yv-muted"},`${Q.rule} \xB7 WCAG ${Q.wcag} \xB7 `,g("code",null,Q.selector)),SA([Q.selector])))),D.length>60?g("p",{class:"yv-muted"},`${D.length-60} more issue(s) in the downloaded report.`):null),oe(p.summary)};E.append(g("p",{class:"yv-muted"},"15 WCAG checks on this page with a 0\u2013100 score. Heuristic: still test with a keyboard and a screen reader."),g("button",{type:"button",class:"yv-btn yv-primary",onclick:y},q("check",16),"Run QA audit"),h)}function c(E){let h=g("input",{type:"checkbox",id:X("yv-senior"),checked:A.seniorFriendly!==!1}),p=g("div",{"aria-live":"polite"}),y=()=>{let D=rA({seniorFriendly:h.checked,maxFieldsPerStep:A.maxFieldsPerStep||8});if(!D.length)return p.replaceChildren(g("p",{class:"yv-answer"},"There are no forms on this page.")),oe("No forms found");p.replaceChildren(...D.map(Q=>g("div",{class:"yv-item",style:"margin-top:10px"},Di(Q.score,Q.summary),g("ul",{class:"yv-steps"},...Q.findings.map(x=>g("li",null,g("span",{class:`yv-badge yv-sev-${x.level==="problem"?"serious":"minor"}`},x.level)," ",x.message,g("br"),g("span",{class:"yv-muted"},x.suggestion)))),SA(Q.findings.map(x=>x.selector))))),oe(`${D.length} form(s) reviewed`)};E.append(g("p",{class:"yv-muted"},"Checks labels, autocomplete, error messages and senior-friendly tips."),g("div",{class:"yv-row"},g("label",{class:"yv-check",for:h.id},h),g("label",{for:h.id},"Senior-friendly checks"),g("button",{type:"button",class:"yv-btn yv-primary",onclick:y},q("form",16),"Review forms")),p)}function k(E){let h=X("yv-min"),p=g("input",{id:h,class:"yv-input",type:"number",min:10,max:24,value:A.minFontSize||16,style:"width:90px"}),y=g("div",{"aria-live":"polite"}),D=()=>{let Q=it({minFontSize:Number(p.value)||16,maxLineLength:A.maxLineLength||90});y.replaceChildren(Di(Q.score,Q.summary),g("div",{class:"yv-cats"},...Object.entries(Q.categories).map(([x,G])=>g("div",{class:"yv-cat"},g("span",{class:"yv-muted"},x),g("strong",null,String(G.score)),g("span",{class:"yv-muted"},`${G.findings} finding(s)`)))),g("ul",{class:"yv-list"},...Q.findings.slice(0,40).map(x=>g("li",{class:"yv-item"},g("p",null,ki(x.severity)," ",g("b",null,x.category),": ",x.message),g("p",{class:"yv-muted"},x.suggestion),SA([x.selector]))))),oe(Q.summary)};E.append(g("p",{class:"yv-muted"},"Hierarchy, readability, interaction, clutter and consistency. Heuristic, not a visual-design certification."),g("div",{class:"yv-row"},g("label",{for:h},"Minimum text size (px)"),p,g("button",{type:"button",class:"yv-btn yv-primary",onclick:D},q("layout",16),"Review design")),y)}function f(E){let h=X("yv-pq"),p=g("input",{id:h,class:"yv-input",type:"text",placeholder:"What is this page about?",autocomplete:"off"}),y=g("div",{"aria-live":"polite"}),D=null,Q=async()=>{let w=p.value.trim()||"What is this page about?",M=await ZA(w,{summarize:A.summarize}),L=[g("div",{class:"yv-answer"},M.answer)];M.suggestions.length&&L.push(g("ul",{class:"yv-steps"},...M.suggestions.map(R=>g("li",null,R))));let F=SA(M.targets);if(F&&L.push(F),M.intent==="unknown"){D?D.rebuild():D=tt({includePage:!0,documents:A.documents,engine:A.engine});let R=await D.ask(w,{generate:A.generate});L.push(g("h4",{style:"margin:12px 0 4px"},R.generated?"Answer (your model)":"From the page text"),g("div",{class:"yv-answer"},R.answer))}y.replaceChildren(...L),oe(M.answer)},x=g("form",{class:"yv-row"},g("label",{for:h,class:"yv-sr"},"Ask about this page"),p,g("button",{type:"submit",class:"yv-btn yv-primary"},"Ask"));x.addEventListener("submit",w=>{w.preventDefault(),Q()});let G=["What is this page about?","Which fields have no label?","Which images have no alt text?","Show the page structure","How many links are there?","Tell me about the forms"];E.append(g("p",{class:"yv-muted"},"Answers from this page only, offline. Pass generate() to use your own model."),x,g("div",{class:"yv-chips"},...G.map(w=>g("button",{type:"button",class:"yv-chip",onclick:()=>(p.value=w,Q())},w))),y)}let C=null;function B(E){let h=X("yv-lang"),p=g("select",{id:h,class:"yv-input",style:"width:auto"},...Yo.map(([F,R])=>g("option",{value:F,selected:F===(A.voiceLang||"en-IN")},R))),y=g("button",{type:"button",class:"yv-btn yv-primary","aria-pressed":"false"},q("mic",16),"Start listening"),D=X("yv-cmd"),Q=g("input",{id:D,class:"yv-input",type:"text",placeholder:"Type a command, e.g. make text bigger",autocomplete:"off"}),x=g("div",{class:"yv-answer",role:"status","aria-live":"polite"}),G=typeof window<"u"&&!!(window.SpeechRecognition||window.webkitSpeechRecognition),w=()=>{C&&C.stop(),C=It({lang:p.value,speak:A.speak!==!1,initial:A.getSettings?A.getSettings():void 0,apply:A.applySettings,onTranscript:(F,R)=>{x.textContent=`Heard: \u201C${F}\u201D
|
|
544
|
+
${R?R.say:"Not a voice command. Try: make text bigger, high contrast on, dark mode, next row, reset."}`,A.onVoiceCommand&&A.onVoiceCommand(F,R)}})};w(),p.addEventListener("change",()=>{let F=y.getAttribute("aria-pressed")==="true";w(),F&&C.start()}),y.addEventListener("click",()=>{if(y.getAttribute("aria-pressed")==="true"){C.stop(),y.setAttribute("aria-pressed","false"),y.lastChild.textContent="Start listening";return}if(!C.start()){x.textContent="Speech recognition is not available in this browser. Typed commands below still work.";return}y.setAttribute("aria-pressed","true"),y.lastChild.textContent="Stop listening",x.textContent="Listening\u2026 say \u201Cmake text bigger\u201D or \u201Cnext row\u201D."});let M=g("form",{class:"yv-row"},g("label",{for:D,class:"yv-sr"},"Type a voice command"),Q,g("button",{type:"submit",class:"yv-btn"},"Run"));M.addEventListener("submit",async F=>{F.preventDefault(),Q.value.trim()&&await C.handle(Q.value)});let L=["make text bigger","make text smaller","high contrast on","dark mode","reduce motion","dyslexia font","next row","previous row","first row","reset","\u0C2A\u0C46\u0C26\u0C4D\u0C26 \u0C05\u0C15\u0C4D\u0C37\u0C30\u0C3E\u0C32\u0C41","\u0C39\u0C48 \u0C15\u0C3E\u0C02\u0C1F\u0C4D\u0C30\u0C3E\u0C38\u0C4D\u0C1F\u0C4D","\u0C24\u0C30\u0C4D\u0C35\u0C3E\u0C24\u0C3F \u0C35\u0C30\u0C41\u0C38"];E.append(g("p",{class:"yv-muted"},G?"Speak accessibility commands in English or Telugu. Text size moves 80\u2013130% in 10% steps.":"Your browser has no speech recognition. You can still type the same commands."),g("div",{class:"yv-row"},g("label",{for:h},"Language"),p,y),M,g("div",{class:"yv-chips"},...L.map(F=>g("button",{type:"button",class:"yv-chip",onclick:()=>(Q.value=F,C.handle(F))},F))),x)}let v={copilot:u,qa:m,forms:c,design:k,ask:f,voice:B};return l(A.defaultTab||"qa",!1),{element:o,select:E=>l(E,!1),get tab(){return s},get copilot(){return I},destroy(){I&&I.stop(),C&&C.stop(),o.remove()}}}var Mi="yuktai-a11y-prefs",GA=[.8,.9,1,1.1,1.2,1.3],Uo=[["none","None"],["deuteranopia","Deuteranopia (red-green)"],["protanopia","Protanopia (red-green)"],["tritanopia","Tritanopia (blue-yellow)"],["achromatopsia","Achromatopsia (no colour)"]],Jo=[["highContrast","High contrast","Stronger text and borders","contrast"],["darkMode","Dark mode","Light text on a dark page","moon"],["reduceMotion","Reduce motion","Stop animations and transitions","motion"],["largeTargets","Large targets","Buttons and links at least 44\xD744","target"],["dyslexiaFont","Dyslexia-friendly font","Easier letters and wider spacing","reading"],["speechEnabled","Speak on focus","Read out each control you Tab to","speaker"],["autoFix","Auto-fix page","Add missing ARIA, labels and alt text; watch new content","wand"],["showSkipLinks","Skip links","\u201CSkip to main content\u201D on Tab","skip"]];function Ko(){try{let e=localStorage.getItem(Mi);return e?JSON.parse(e):{}}catch{return{}}}function qo(e){try{let A={};["highContrast","darkMode","reduceMotion","largeTargets","speechEnabled","colorBlindMode","dyslexiaFont","fontSizeMultiplier"].forEach(t=>A[t]=e[t]),localStorage.setItem(Mi,JSON.stringify(A))}catch{}}function _n(e={}){let A={position:"left",title:"Accessibility",showPageTools:!1,...e},t=A.position==="right"?"right":"left",i=pt(A.primaryColor,"#005A9C"),o={enabled:!0,autoFix:!0,showSkipLinks:!0,showPreferencePanel:!1,...lA,...A.config||{}},r={...o,...Ko()},n,a,s,l,I,u,m,c="";async function k(w,M){r={...r,...w,enabled:!0},qo(r);try{c=await ze.execute({...r}),r.autoFix||ze.stopObserver()}catch(L){console.error("[yuktai] accessibility engine failed",L),c="Some settings could not be applied. See the browser console."}return B(),M||oe("Accessibility settings updated"),c}async function f(){try{localStorage.removeItem(Mi)}catch{}return r={...o},await k(r,!0),oe("Accessibility settings reset"),r}function C(){let w=X("yv-a11y-title"),M=X("yv-font"),L=X("yv-cb"),F=g("section",{class:"yv-dialog",role:"dialog","aria-modal":"false","aria-labelledby":w,"data-yuktai-panel":""}),R=Jo.map(([O,_,ee,NA])=>{let be=X("yv-opt"),Qt=g("input",{id:be,type:"checkbox",role:"switch","data-setting":O,"aria-describedby":`${be}-d`});return g("div",{class:"yv-option"},g("span",{class:"yv-option-icon"},q(NA,18)),g("span",{class:"yv-option-copy"},g("label",{for:be},g("b",null,_)),g("small",{id:`${be}-d`},ee)),g("span",{class:"yv-switch"},Qt,g("span",{"aria-hidden":"true"})))}),H=g("div",{class:"yv-steps-bar",role:"group","aria-labelledby":M},...GA.map(O=>g("button",{type:"button",class:"yv-step","data-font":O,"aria-label":`${Math.round(O*100)} percent`,"aria-pressed":"false"}))),Ie=g("select",{id:L,class:"yv-input","data-colorblind":""},...Uo.map(([O,_])=>g("option",{value:O},_)));return F.append(g("header",{class:"yv-dialog-head"},g("div",null,g("div",{class:"yv-muted",style:"font-weight:800;font-size:.75em;letter-spacing:.05em"},"YUKTAI"),g("h2",{id:w},A.title),g("p",{class:"yv-muted",style:"margin:2px 0 0"},"Saved on this device. Works on every page.")),g("button",{type:"button",class:"yv-btn yv-icon","data-close":"","aria-label":"Close accessibility settings",html:ce("close")})),g("div",{class:"yv-dialog-body"},...R,g("div",{style:"padding:12px 0;border-bottom:1px solid var(--yv-border)"},g("div",{style:"display:flex;justify-content:space-between"},g("b",{id:M},"Text size"),g("strong",{"data-font-value":""})),g("div",{class:"yv-row",style:"flex-wrap:nowrap;margin-top:6px"},g("button",{type:"button",class:"yv-btn yv-icon","data-font-step":"-1","aria-label":"Smaller text",html:ce("minus",16)}),H,g("button",{type:"button",class:"yv-btn yv-icon","data-font-step":"1","aria-label":"Bigger text",html:ce("plus",16)}))),g("div",{style:"padding:12px 0"},g("label",{for:L},g("b",null,"Colour-blind filter")),Ie),g("div",{class:"yv-row"},g("button",{type:"button",class:"yv-btn","data-reset":""},q("reset",16),"Reset all"),g("button",{type:"button",class:"yv-btn yv-primary","data-close":""},q("check",16),"Done")),g("p",{class:"yv-status",role:"status","aria-live":"polite","data-status":""}))),F.addEventListener("change",O=>{let _=O.target;_.matches("[data-setting]")?k({[_.getAttribute("data-setting")]:_.checked}):_.matches("[data-colorblind]")&&k({colorBlindMode:_.value})}),F.addEventListener("click",O=>{let _=O.target.closest("button");if(_){if(_.hasAttribute("data-close"))return p();if(_.hasAttribute("data-reset"))return f();if(_.hasAttribute("data-font"))return v(Number(_.getAttribute("data-font")));if(_.hasAttribute("data-font-step")){let ee=GA.indexOf(Number(r.fontSizeMultiplier||1));return v(GA[Math.min(GA.length-1,Math.max(0,(ee<0?2:ee)+Number(_.getAttribute("data-font-step"))))])}}}),F.addEventListener("keydown",O=>E(O,F,p)),F}function B(){if(!l)return;l.querySelectorAll("[data-setting]").forEach(F=>F.checked=!!r[F.getAttribute("data-setting")]&&r[F.getAttribute("data-setting")]!==!1);let w=l.querySelector('[data-setting="showSkipLinks"]');w&&(w.checked=r.showSkipLinks!==!1);let M=Number(r.fontSizeMultiplier||1);l.querySelector("[data-font-value]").textContent=`${Math.round(M*100)}%`,l.querySelectorAll("[data-font]").forEach(F=>F.setAttribute("aria-pressed",String(Math.abs(Number(F.getAttribute("data-font"))-M)<.001))),l.querySelector("[data-colorblind]").value=r.colorBlindMode||"none";let L=/(\d+) fixes applied/.exec(c);l.querySelector("[data-status]").textContent=L?`${L[1]} automatic accessibility fix(es) applied on this page.`:c}function v(w){GA.some(M=>Math.abs(M-w)<.001)&&(k({fontSizeMultiplier:w},!0),oe(`Text size ${Math.round(w*100)} percent`))}function E(w,M,L){if(w.key==="Escape"){w.preventDefault(),w.stopPropagation(),L();return}if(w.key!=="Tab")return;let F=Array.from(M.querySelectorAll("button,input,select,textarea,[tabindex]:not([tabindex='-1'])")).filter(R=>!R.disabled&&R.offsetParent!==null);F.length&&(w.shiftKey&&document.activeElement===F[0]?(w.preventDefault(),F[F.length-1].focus()):!w.shiftKey&&document.activeElement===F[F.length-1]&&(w.preventDefault(),F[0].focus()))}function h(){a||G(),!l&&(Q(),m=document.activeElement,l=C(),x().appendChild(l),a.setAttribute("aria-expanded","true"),B(),l.querySelector("[data-close]").focus(),document.addEventListener("pointerdown",y,!0))}function p(){l&&(l.remove(),l=null,a.setAttribute("aria-expanded","false"),document.removeEventListener("pointerdown",y,!0),(m&&document.contains(m)?m:a).focus())}function y(w){l&&!l.contains(w.target)&&!n.contains(w.target)&&p(),I&&!I.contains(w.target)&&!n.contains(w.target)&&Q()}function D(w){if(a||G(),I){w&&u&&u.select(w);return}p(),m=document.activeElement;let M=X("yv-tools-title");I=g("section",{class:"yv-dialog yv-wide",role:"dialog","aria-modal":"false","aria-labelledby":M,"data-yuktai-panel":""});let L=g("div",{class:"yv-dialog-body"});I.append(g("header",{class:"yv-dialog-head"},g("h2",{id:M},A.toolsTitle||"Page tools"),g("button",{type:"button",class:"yv-btn yv-icon","aria-label":"Close page tools",html:ce("close"),onclick:()=>Q()})),L),x().appendChild(I),u=ft(L,{defaultTab:w||A.defaultTab||"qa",voiceLang:A.voiceLang,generate:A.generate,summarize:A.summarize,defaultLang:A.defaultLang,getSettings:()=>({...r}),applySettings:F=>k(F,!0)}),s&&s.setAttribute("aria-expanded","true"),I.addEventListener("keydown",F=>E(F,I,Q)),I.querySelector("[role=tab][aria-selected=true]").focus(),document.addEventListener("pointerdown",y,!0)}function Q(){I&&(u&&u.destroy(),u=null,I.remove(),I=null,s&&s.setAttribute("aria-expanded","false"),document.removeEventListener("pointerdown",y,!0),(m&&document.contains(m)?m:s||a).focus())}let x=()=>document.documentElement||document.body;function G(){!Ye()||a||!document.body||(yt(i,t),n=g("div",{class:"yv-fabs","data-yuktai-fabs":""}),a=g("button",{type:"button",class:"yv-fab","aria-label":"Accessibility settings",title:"Accessibility settings","aria-haspopup":"dialog","aria-expanded":"false",html:ce("accessibility",26)}),a.addEventListener("click",()=>l?p():h()),n.append(a),A.showPageTools&&(s=g("button",{type:"button",class:"yv-fab yv-fab-alt","aria-label":"Page tools: QA, forms, design, ask, voice",title:"Page tools","aria-haspopup":"dialog","aria-expanded":"false",html:ce("tools",24)}),s.addEventListener("click",()=>I?Q():D()),n.prepend(s)),x().appendChild(n),A.applyOnLoad!==!1&&k({},!0))}return{init:G,open:h,close:p,openTools:D,closeTools:Q,apply:w=>k(w||{}),reset:f,getSettings:()=>({...r}),destroy(){p(),Q(),n&&n.remove(),a=s=n=null}}}var er="5.3.9";(function(){if(!Ye()||window.yuktai&&window.yuktai.__vanillaInitialized)return;let A=window.YUKTAI_CONFIG||{},t=pt(A.primaryColor,"#005A9C"),i=A.position==="right"?"right":"left",o=_n(A),r=()=>yt(t,i),n=s=>(...l)=>(r(),s(...l)),a={__vanillaInitialized:!0,version:er,init:()=>o.init(),open:()=>o.open(),close:()=>o.close(),openTools:s=>o.openTools(s),closeTools:()=>o.closeTools(),apply:s=>o.apply(s),reset:()=>o.reset(),getSettings:()=>o.getSettings(),renderGrid:n(jn),mountAgenticGridBar:n(mt),mountAgenticPanel:n(ft),mountGridAssistant:n(xi),createAgenticGrid:Ct,createGridAgent:dt,parseGridIntent:Bi,registerWebMCP:ut,icon:ce,iconNames:zn.slice(),iconContrast:kA,pickGlyphColor:bi,...fi,runPageQA:()=>pe().summary,getCapabilities:()=>({version:er,inlineSVG:!0,grid:!0,gridAssistant:!0,agenticGrid:!0,ruleBasedBI:!0,taskRunner:!0,anomalyChecks:!0,pageQA:!0,a11yCopilot:!0,formsReview:!0,designReview:!0,pageQandA:!0,localPageSearch:!0,voiceCommands:!0,voice:!!(window.SpeechRecognition||window.webkitSpeechRecognition),speech:"speechSynthesis"in window,webMCP:!!(document.modelContext&&typeof document.modelContext.registerTool=="function"),modelConnected:!1})};window.yuktai=a,A.autoInit!==!1&&(document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>o.init(),{once:!0}):o.init())})();})();
|