@duckcodeailabs/dql-cli 0.6.0 → 0.7.1

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.
@@ -0,0 +1,510 @@
1
+ import{r as Bt,a as CT,g as Ht}from"./react-CRB3T2We.js";import{S as mE,g as Ft,E as z,s as dT,a as J,b as _T,c as DT,P as uT,d as pT,e as PT,F as MT,f as hT,h as bt,V as fT,D as UE,R as mT,i as UT,C as re,j as Yt,k as Q,r as xT,l as yT,m as gT,t as GT,n as BT,o as HT,p as FT,q as bT,u as YT,v as vT,w as he,x as VT,y as WT,z as XT,A as wT,B as KT,G as jT,H as kT,I as $T,J as JT,K as QT,L as ZT}from"./codemirror-CCrEt63p.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))n(r);new MutationObserver(r=>{for(const s of r)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function t(r){const s={};return r.integrity&&(s.integrity=r.integrity),r.referrerPolicy&&(s.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?s.credentials="include":r.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function n(r){if(r.ep)return;r.ep=!0;const s=t(r);fetch(r.href,s)}})();var Ke={exports:{}},Le={};/**
2
+ * @license React
3
+ * react-jsx-runtime.production.min.js
4
+ *
5
+ * Copyright (c) Facebook, Inc. and its affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */var YE;function qT(){if(YE)return Le;YE=1;var E=Bt(),e=Symbol.for("react.element"),t=Symbol.for("react.fragment"),n=Object.prototype.hasOwnProperty,r=E.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function o(R,S,a){var i,A={},I=null,O=null;a!==void 0&&(I=""+a),S.key!==void 0&&(I=""+S.key),S.ref!==void 0&&(O=S.ref);for(i in S)n.call(S,i)&&!s.hasOwnProperty(i)&&(A[i]=S[i]);if(R&&R.defaultProps)for(i in S=R.defaultProps,S)A[i]===void 0&&(A[i]=S[i]);return{$$typeof:e,type:R,key:I,ref:O,props:A,_owner:r.current}}return Le.Fragment=t,Le.jsx=o,Le.jsxs=o,Le}var vE;function zT(){return vE||(vE=1,Ke.exports=qT()),Ke.exports}var T=zT(),fe={},VE;function er(){if(VE)return fe;VE=1;var E=CT();return fe.createRoot=E.createRoot,fe.hydrateRoot=E.hydrateRoot,fe}var Er=er(),l=Bt();const Fe=Ht(l),tr={themeMode:"dark",sidebarPanel:"files",sidebarOpen:!0,files:[],filesLoading:!1,activeFile:null,cells:[],notebookTitle:"",notebookDirty:!1,schemaTables:[],schemaLoading:!1,semanticLayer:{available:!1,provider:null,metrics:[],dimensions:[],hierarchies:[],loading:!1},devPanelOpen:!1,devPanelTab:"logs",queryLog:[],newNotebookModalOpen:!1,executionCounter:0,savingFile:!1};function Tr(E,e){switch(e.type){case"SET_THEME":return{...E,themeMode:e.mode};case"SET_SIDEBAR_PANEL":return{...E,sidebarPanel:e.panel,sidebarOpen:e.panel!==null};case"TOGGLE_SIDEBAR":return{...E,sidebarOpen:!E.sidebarOpen};case"SET_FILES":return{...E,files:e.files};case"SET_FILES_LOADING":return{...E,filesLoading:e.loading};case"OPEN_FILE":return{...E,activeFile:e.file,cells:e.cells,notebookTitle:e.title,notebookDirty:!1};case"SET_CELLS":return{...E,cells:e.cells,notebookDirty:!0};case"ADD_CELL":{if(!e.afterId)return{...E,cells:[...E.cells,e.cell],notebookDirty:!0};const t=E.cells.findIndex(r=>r.id===e.afterId);if(t===-1)return{...E,cells:[...E.cells,e.cell],notebookDirty:!0};const n=[...E.cells];return n.splice(t+1,0,e.cell),{...E,cells:n,notebookDirty:!0}}case"UPDATE_CELL":{const t=E.cells.map(r=>r.id===e.id?{...r,...e.updates}:r),n=e.updates.executionCount!==void 0?E.executionCounter+1:E.executionCounter;return{...E,cells:t,notebookDirty:!0,executionCounter:n}}case"DELETE_CELL":return{...E,cells:E.cells.filter(t=>t.id!==e.id),notebookDirty:!0};case"MOVE_CELL":{const t=E.cells.findIndex(r=>r.id===e.id);if(t===-1)return E;const n=[...E.cells];return e.direction==="up"&&t>0?[n[t-1],n[t]]=[n[t],n[t-1]]:e.direction==="down"&&t<n.length-1&&([n[t],n[t+1]]=[n[t+1],n[t]]),{...E,cells:n,notebookDirty:!0}}case"SET_SCHEMA":return{...E,schemaTables:e.tables};case"SET_SCHEMA_LOADING":return{...E,schemaLoading:e.loading};case"TOGGLE_SCHEMA_TABLE":return{...E,schemaTables:E.schemaTables.map(t=>t.name===e.tableName?{...t,expanded:!t.expanded}:t)};case"TOGGLE_DEV_PANEL":return{...E,devPanelOpen:!E.devPanelOpen};case"SET_DEV_PANEL_TAB":return{...E,devPanelTab:e.tab};case"APPEND_QUERY_LOG":return{...E,queryLog:[...E.queryLog,e.entry]};case"OPEN_NEW_NOTEBOOK_MODAL":return{...E,newNotebookModalOpen:!0};case"CLOSE_NEW_NOTEBOOK_MODAL":return{...E,newNotebookModalOpen:!1};case"SET_NOTEBOOK_DIRTY":return{...E,notebookDirty:e.dirty};case"SET_SAVING":return{...E,savingFile:e.saving};case"FILE_ADDED":return{...E,files:[...E.files,e.file]};case"SET_TABLE_COLUMNS":return{...E,schemaTables:E.schemaTables.map(t=>t.name===e.tableName?{...t,columns:e.columns}:t)};case"SET_PARAM_VALUE":return{...E,cells:E.cells.map(t=>t.id===e.id?{...t,paramValue:e.value}:t),notebookDirty:!0};case"SET_SEMANTIC_LAYER":return{...E,semanticLayer:{...e.layer,loading:!1}};case"SET_SEMANTIC_LOADING":return{...E,semanticLayer:{...E.semanticLayer,loading:e.loading}};default:return E}}const vt=l.createContext(null);function rr({children:E}){const[e,t]=l.useReducer(Tr,tr);return T.jsx(vt.Provider,{value:{state:e,dispatch:t},children:E})}function F(){const E=l.useContext(vt);if(!E)throw new Error("useNotebook must be used within NotebookProvider");return E}function Te(){return`cell_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function Z(E,e=""){const t={id:Te(),type:E,content:e,status:"idle"};return E==="param"&&(t.content="",t.paramConfig={paramType:"text",label:"Parameter",defaultValue:"",options:[]}),t}const nr={appBg:"#0d1117",sidebarBg:"#161b22",activityBarBg:"#0d1117",headerBg:"#161b22",headerBorder:"#21262d",cellBg:"#161b22",cellBorder:"#30363d",cellBorderActive:"#388bfd",cellBorderRunning:"#56d364",textPrimary:"#e6edf3",textSecondary:"#8b949e",textMuted:"#484f58",editorBg:"#0d1117",editorBorder:"#30363d",tableBorder:"#30363d",tableHeaderBg:"#1c2128",tableRowHover:"#21262d",accent:"#388bfd",accentHover:"#58a6ff",success:"#56d364",error:"#f85149",warning:"#e3b341",btnBg:"#21262d",btnBorder:"#30363d",btnHover:"#30363d",sidebarItemHover:"#21262d",sidebarItemActive:"#1f2d3d",scrollbarThumb:"#30363d",modalBg:"#161b22",modalOverlay:"rgba(0,0,0,0.7)",inputBg:"#0d1117",inputBorder:"#30363d",pillBg:"#21262d",font:"Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",fontMono:"'JetBrains Mono', 'Fira Code', Consolas, monospace",fontSerif:"Georgia, 'Times New Roman', serif"},sr={appBg:"#ffffff",sidebarBg:"#f6f8fa",activityBarBg:"#eff1f3",headerBg:"#ffffff",headerBorder:"#d0d7de",cellBg:"#ffffff",cellBorder:"#d0d7de",cellBorderActive:"#0969da",cellBorderRunning:"#1f883d",textPrimary:"#1f2328",textSecondary:"#57606a",textMuted:"#8c959f",editorBg:"#f6f8fa",editorBorder:"#d0d7de",tableBorder:"#d0d7de",tableHeaderBg:"#f6f8fa",tableRowHover:"#f6f8fa",accent:"#0969da",accentHover:"#0550ae",success:"#1f883d",error:"#cf222e",warning:"#9a6700",btnBg:"#f6f8fa",btnBorder:"#d0d7de",btnHover:"#eaeef2",sidebarItemHover:"#eaeef2",sidebarItemActive:"#dbeafe",scrollbarThumb:"#d0d7de",modalBg:"#ffffff",modalOverlay:"rgba(0,0,0,0.4)",inputBg:"#ffffff",inputBorder:"#d0d7de",pillBg:"#eaeef2",font:"Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",fontMono:"'JetBrains Mono', 'Fira Code', Consolas, monospace",fontSerif:"Georgia, 'Times New Roman', serif"},H={dark:nr,light:sr};function ee({title:E,active:e,onClick:t,children:n,t:r}){const[s,o]=l.useState(!1);return T.jsx("button",{title:E,onClick:t,onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),style:{width:32,height:32,display:"flex",alignItems:"center",justifyContent:"center",background:"transparent",border:"none",borderLeft:e?`2px solid ${r.accent}`:"2px solid transparent",cursor:"pointer",color:e?r.textPrimary:s?r.textSecondary:r.textMuted,transition:"color 0.15s, border-color 0.15s",padding:0,flexShrink:0},children:n})}function or(){return T.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"})})}function Rr(){return T.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M8 0C3.58 0 0 1.567 0 3.5v9C0 14.433 3.58 16 8 16s8-1.567 8-3.5v-9C16 1.567 12.42 0 8 0ZM1.5 7.784V5.716C3.05 6.51 5.404 7 8 7s4.95-.49 6.5-1.284v2.068C12.95 8.578 10.596 9 8 9s-4.95-.422-6.5-1.216ZM8 1.5c3.17 0 5.854 1.116 6.357 2.5H1.643C2.146 2.616 4.83 1.5 8 1.5Zm0 13c-3.17 0-5.854-1.116-6.357-2.5h12.714C13.854 13.384 11.17 14.5 8 14.5Zm6.5-3.284C12.95 11.01 10.596 11.5 8 11.5s-4.95-.49-6.5-1.284V8.216C3.05 9.01 5.404 9.5 8 9.5s4.95-.49 6.5-1.284v2.5Z"})})}function ir(){return T.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm6.5-2a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0Zm-2 4.5a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0Zm5 0a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0Z"})})}function Ar(){return T.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M4 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4Zm8 4a2 2 0 1 1 0 4 2 2 0 0 1 0-4Zm-8 4a2 2 0 1 1 0 4 2 2 0 0 1 0-4ZM6 4h4l2 4-2 4H6",stroke:"currentColor",strokeWidth:"1.2",fill:"none"})})}function ar(){return T.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M2 2h12a1 1 0 0 1 0 2H2a1 1 0 0 1 0-2Zm0 4h8a1 1 0 0 1 0 2H2a1 1 0 0 1 0-2Zm0 4h10a1 1 0 0 1 0 2H2a1 1 0 0 1 0-2Z"})})}function Sr(){return T.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M1 2.75C1 1.784 1.784 1 2.75 1h2.5C6.216 1 7 1.784 7 2.75v2.5C7 6.216 6.216 7 5.25 7h-2.5C1.784 7 1 6.216 1 5.25Zm1.75-.25a.25.25 0 0 0-.25.25v2.5c0 .138.112.25.25.25h2.5A.25.25 0 0 0 6 5.25v-2.5A.25.25 0 0 0 5.25 2.5ZM9 2.75C9 1.784 9.784 1 10.75 1h2.5C14.216 1 15 1.784 15 2.75v2.5C15 6.216 14.216 7 13.25 7h-2.5C9.784 7 9 6.216 9 5.25Zm1.75-.25a.25.25 0 0 0-.25.25v2.5c0 .138.112.25.25.25h2.5a.25.25 0 0 0 .25-.25v-2.5a.25.25 0 0 0-.25-.25ZM1 10.75C1 9.784 1.784 9 2.75 9h2.5C6.216 9 7 9.784 7 10.75v2.5C7 14.216 6.216 15 5.25 15h-2.5C1.784 15 1 14.216 1 13.25Zm1.75-.25a.25.25 0 0 0-.25.25v2.5c0 .138.112.25.25.25h2.5a.25.25 0 0 0 .25-.25v-2.5a.25.25 0 0 0-.25-.25ZM13 9.75a.75.75 0 0 1 .75.75v1.75H15.5a.75.75 0 0 1 0 1.5h-1.75V15.5a.75.75 0 0 1-1.5 0v-1.75H10.5a.75.75 0 0 1 0-1.5h1.75V10.5A.75.75 0 0 1 13 9.75Z"})})}function Ir(){return T.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z"})})}function Or(){return T.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.92 6.085h.001a.749.749 0 1 1-1.342-.67C6.03 4.26 6.88 3.75 8 3.75c1.463 0 2.5 1.008 2.5 2.25 0 1.133-.67 1.8-1.4 2.25-.487.3-.6.47-.6.75V9.5a.75.75 0 0 1-1.5 0v-.5c0-.833.585-1.33 1.1-1.65.387-.24.9-.597.9-1.35 0-.65-.53-1.25-1.5-1.25-.74 0-1.163.353-1.58.835ZM8 12a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"})})}function lr(){return T.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M8 0a8.2 8.2 0 0 1 .701.031C9.444.095 9.99.645 10.16 1.29l.288 1.107c.018.066.079.158.212.224.231.114.454.243.668.386.123.082.233.09.299.071l1.103-.303c.644-.176 1.392.021 1.82.63.27.385.506.792.704 1.218.315.675.111 1.422-.364 1.891l-.814.806c-.049.048-.098.147-.088.294.016.257.016.515 0 .772-.01.147.038.246.088.294l.814.806c.475.469.679 1.216.364 1.891a7.977 7.977 0 0 1-.704 1.217c-.428.61-1.176.807-1.82.63l-1.103-.303c-.066-.019-.176-.011-.299.071a5.909 5.909 0 0 1-.668.386c-.133.066-.194.158-.211.224l-.29 1.106c-.168.646-.715 1.196-1.458 1.26a8.006 8.006 0 0 1-1.402 0c-.743-.064-1.289-.614-1.458-1.26l-.289-1.106c-.018-.066-.079-.158-.212-.224a5.738 5.738 0 0 1-.668-.386c-.123-.082-.233-.09-.299-.071l-1.103.303c-.644.176-1.392-.021-1.82-.63a8.12 8.12 0 0 1-.704-1.218c-.315-.675-.111-1.422.363-1.891l.815-.806c.05-.048.098-.147.088-.294a6.214 6.214 0 0 1 0-.772c.01-.147-.038-.246-.088-.294l-.815-.806C.635 6.045.431 5.298.746 4.623a7.92 7.92 0 0 1 .704-1.217c.428-.61 1.176-.807 1.82-.63l1.103.303c.066.019.176.011.299-.071.214-.143.437-.272.668-.386.133-.066.194-.158.211-.224l.29-1.106C6.009.645 6.556.095 7.299.03 7.53.01 7.764 0 8 0Zm-.571 1.525c-.036.003-.108.036-.137.146l-.289 1.105c-.147.561-.549.967-.998 1.189-.173.086-.34.183-.5.29-.417.278-.97.423-1.529.27l-1.103-.303c-.109-.03-.175.016-.195.045-.22.312-.412.644-.573.99-.014.031-.021.11.059.19l.815.806c.411.406.562.957.53 1.456a4.709 4.709 0 0 0 0 .582c.032.499-.119 1.05-.53 1.456l-.815.806c-.081.08-.073.159-.059.19.162.346.353.677.573.989.02.03.085.076.195.046l1.102-.303c.56-.153 1.113-.008 1.53.27.161.107.328.204.501.29.447.222.85.629.997 1.189l.289 1.105c.029.109.101.143.137.146a6.6 6.6 0 0 0 1.142 0c.036-.003.108-.036.137-.146l.289-1.105c.147-.561.549-.967.998-1.189.173-.086.34-.183.5-.29.417-.278.97-.423 1.529-.27l1.103.303c.109.029.175-.016.195-.045.22-.313.411-.644.573-.99.014-.031.021-.11-.059-.19l-.815-.806c-.411-.406-.562-.957-.53-1.456a4.709 4.709 0 0 0 0-.582c-.032-.499.119-1.05.53-1.456l.815-.806c.081-.08.073-.159.059-.19a6.464 6.464 0 0 0-.573-.989c-.02-.03-.085-.076-.195-.046l-1.102.303c-.56.153-1.113.008-1.53-.27a4.44 4.44 0 0 0-.501-.29c-.447-.222-.85-.629-.997-1.189l-.289-1.105c-.029-.11-.101-.143-.137-.147a6.6 6.6 0 0 0-1.142 0ZM8 5.5a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5ZM8 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"})})}function Nr(){const{state:E,dispatch:e}=F(),t=H[E.themeMode];function n(r){E.sidebarPanel===r&&E.sidebarOpen?e({type:"TOGGLE_SIDEBAR"}):e({type:"SET_SIDEBAR_PANEL",panel:r})}return T.jsxs("div",{style:{width:32,flexShrink:0,background:t.activityBarBg,borderRight:`1px solid ${t.headerBorder}`,display:"flex",flexDirection:"column",alignItems:"center",paddingTop:8,paddingBottom:8,gap:2,userSelect:"none"},children:[T.jsx(ee,{title:"Files",active:E.sidebarPanel==="files"&&E.sidebarOpen,onClick:()=>n("files"),t,children:T.jsx(or,{})}),T.jsx(ee,{title:"Schema",active:E.sidebarPanel==="schema"&&E.sidebarOpen,onClick:()=>n("schema"),t,children:T.jsx(Rr,{})}),T.jsx(ee,{title:"Semantic Layer",active:E.sidebarPanel==="semantic"&&E.sidebarOpen,onClick:()=>n("semantic"),t,children:T.jsx(ir,{})}),T.jsx(ee,{title:"Lineage",active:E.sidebarPanel==="lineage"&&E.sidebarOpen,onClick:()=>n("lineage"),t,children:T.jsx(Ar,{})}),T.jsx(ee,{title:"Outline",active:E.sidebarPanel==="outline"&&E.sidebarOpen,onClick:()=>n("outline"),t,children:T.jsx(ar,{})}),T.jsx(ee,{title:"Connection",active:E.sidebarPanel==="connection"&&E.sidebarOpen,onClick:()=>n("connection"),t,children:T.jsx(Sr,{})}),T.jsx(ee,{title:"Reference",active:E.sidebarPanel==="reference"&&E.sidebarOpen,onClick:()=>n("reference"),t,children:T.jsx(Ir,{})}),T.jsx("div",{style:{flex:1}}),T.jsx(ee,{title:"Help & Reference",active:E.sidebarPanel==="reference"&&E.sidebarOpen,onClick:()=>n("reference"),t,children:T.jsx(Or,{})}),T.jsx(ee,{title:"Settings",active:!1,onClick:()=>{},t,children:T.jsx(lr,{})})]})}const je={notebooks:"Notebooks",workbooks:"Workbooks",blocks:"Blocks",dashboards:"Dashboards"};function cr({type:E}){switch(E){case"notebook":return T.jsx("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.063 0L7.597 13.66A2.25 2.25 0 0 0 6.007 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h4.507c.656 0 1.287.169 1.744.324Zm1.499.004c.457-.155 1.088-.324 1.744-.324H15v-9h-3.495a2.25 2.25 0 0 0-2.252 2.247l-.002 9.077Z"})});case"workbook":return T.jsx("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M2 1.75C2 .784 2.784 0 3.75 0h8.5C13.216 0 14 .784 14 1.75v12.5A1.75 1.75 0 0 1 12.25 16h-8.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25Zm2 3.5a.75.75 0 0 1 .75-.75h3a.75.75 0 0 1 0 1.5h-3a.75.75 0 0 1-.75-.75ZM6.5 7.25a.75.75 0 0 0 0 1.5h3a.75.75 0 0 0 0-1.5Zm-.75 3.5a.75.75 0 0 1 .75-.75h3a.75.75 0 0 1 0 1.5h-3a.75.75 0 0 1-.75-.75Z"})});case"block":return T.jsx("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M10.5 0l5.25 4-5.25 4V6H9.25A1.75 1.75 0 0 0 7.5 7.75v2.5A1.75 1.75 0 0 0 9.25 12h1.25v8H9v-6.5A3.25 3.25 0 0 1 5.75 10h-2A3.25 3.25 0 0 1 .5 6.75v-2.5A3.25 3.25 0 0 1 3.75 1h2A3.25 3.25 0 0 1 9 4.5V6h1.5V0z"})});default:return T.jsx("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M.24 2.375C.24 1.064 1.225.001 2.409.001h6.451a1.17 1.17 0 0 1 .828.344l3.311 3.312a1.17 1.17 0 0 1 .344.828v9.14c0 1.31-.985 2.374-2.169 2.374H2.41C1.225 16 .24 14.937.24 13.625Zm2.169-1a.846.846 0 0 0-.844.86v11.39c0 .47.38.86.844.86h8.774a.847.847 0 0 0 .844-.86V5.157L8.688 1.373H2.41Z"})})}}function Lr({expanded:E}){return T.jsx("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"currentColor",children:E?T.jsx("path",{d:"M1.75 2.5a.25.25 0 0 0-.25.25v10.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V4.25a.25.25 0 0 0-.25-.25H7.5A1.75 1.75 0 0 1 5.75 2.5h-4ZM0 2.75C0 1.784.784 1 1.75 1h4c.966 0 1.75.784 1.75 1.75H14.25c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 14H1.75A1.75 1.75 0 0 1 0 12.25Z"}):T.jsx("path",{d:"M1.75 2.5a.25.25 0 0 0-.25.25v10.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V4.25a.25.25 0 0 0-.25-.25H7.5A1.75 1.75 0 0 1 5.75 2.5h-4ZM0 2.75C0 1.784.784 1 1.75 1h4c.966 0 1.75.784 1.75 1.75H14.25c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 14H1.75A1.75 1.75 0 0 1 0 12.25Z"})})}function Cr(E){return E.name.replace(/\.(dqlnb|dql)$/,"")}function dr({onOpenFile:E}){const{state:e,dispatch:t}=F(),n=H[e.themeMode],[r,s]=l.useState({notebooks:!0,workbooks:!0,blocks:!1,dashboards:!1}),[o,R]=l.useState(!1),S={notebooks:[],workbooks:[],blocks:[],dashboards:[]};for(const i of e.files){const A=i.folder.toLowerCase();A in S&&S[A].push(i)}const a=i=>{s(A=>({...A,[i]:!A[i]}))};return T.jsxs("div",{style:{flex:1,overflow:"auto",padding:"8px 0",display:"flex",flexDirection:"column",gap:0},children:[T.jsx("div",{style:{padding:"0 8px 8px"},children:T.jsxs("button",{onClick:()=>t({type:"OPEN_NEW_NOTEBOOK_MODAL"}),onMouseEnter:()=>R(!0),onMouseLeave:()=>R(!1),style:{width:"100%",height:30,background:"transparent",border:`1px dashed ${o?n.accent:n.cellBorder}`,borderRadius:6,color:o?n.accent:n.textSecondary,cursor:"pointer",fontSize:12,fontFamily:n.font,fontWeight:500,display:"flex",alignItems:"center",justifyContent:"center",gap:6,transition:"border-color 0.15s, color 0.15s"},children:[T.jsx("span",{style:{fontSize:16,lineHeight:1},children:"+"}),"New Notebook"]})}),e.filesLoading&&T.jsx("div",{style:{padding:"8px 14px",color:n.textMuted,fontSize:12,fontFamily:n.font},children:"Loading files…"}),Object.keys(je).map(i=>{const A=S[i],I=r[i];return T.jsxs("div",{children:[T.jsx(_r,{label:je[i],count:A.length,expanded:I,onToggle:()=>a(i),t:n}),I&&T.jsx("div",{children:A.length===0?T.jsxs("div",{style:{padding:"4px 14px 4px 32px",fontSize:12,color:n.textMuted,fontFamily:n.font,fontStyle:"italic"},children:["No ",je[i].toLowerCase()]}):A.map(O=>{var c;return T.jsx(Dr,{file:O,active:((c=e.activeFile)==null?void 0:c.path)===O.path,onClick:()=>E(O),t:n},O.path)})})]},i)})]})}function _r({label:E,count:e,expanded:t,onToggle:n,t:r}){const[s,o]=l.useState(!1);return T.jsxs("button",{onClick:n,onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),style:{width:"100%",display:"flex",alignItems:"center",gap:6,padding:"3px 8px 3px 10px",background:s?r.sidebarItemHover:"transparent",border:"none",cursor:"pointer",color:r.textSecondary,fontSize:11,fontWeight:600,fontFamily:r.font,letterSpacing:"0.04em",textTransform:"uppercase",textAlign:"left",transition:"background 0.1s"},children:[T.jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"currentColor",style:{transform:t?"rotate(90deg)":"rotate(0deg)",transition:"transform 0.15s",flexShrink:0},children:T.jsx("path",{d:"M3 2l4 3-4 3V2Z"})}),T.jsx(Lr,{expanded:t}),T.jsx("span",{style:{flex:1},children:E}),e>0&&T.jsx("span",{style:{background:r.pillBg,color:r.textMuted,borderRadius:10,padding:"0 5px",fontSize:10,fontWeight:500},children:e})]})}function Dr({file:E,active:e,onClick:t,t:n}){const[r,s]=l.useState(!1);return T.jsxs("button",{onClick:t,onMouseEnter:()=>s(!0),onMouseLeave:()=>s(!1),style:{width:"100%",display:"flex",alignItems:"center",gap:6,padding:"4px 8px 4px 26px",background:e?n.sidebarItemActive:r?n.sidebarItemHover:"transparent",border:"none",borderLeft:e?`2px solid ${n.accent}`:"2px solid transparent",cursor:"pointer",color:e||r?n.textPrimary:n.textSecondary,fontSize:13,fontFamily:n.font,textAlign:"left",transition:"background 0.1s, color 0.1s",overflow:"hidden"},children:[T.jsx("span",{style:{flexShrink:0,color:e?n.accent:n.textMuted},children:T.jsx(cr,{type:E.type})}),T.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1},children:Cr(E)}),E.isNew&&T.jsx("span",{style:{fontSize:9,fontWeight:600,color:n.accent,background:n.sidebarItemActive,borderRadius:4,padding:"1px 4px",flexShrink:0},children:"NEW"})]})}const ur=window.location.origin;async function j(E,e){const t=await fetch(`${ur}${E}`,{headers:{"Content-Type":"application/json"},...e});if(!t.ok){const n=await t.text().catch(()=>t.statusText);throw new Error(n||`HTTP ${t.status}`)}if(t.status!==204)return t.json()}const Y={async listNotebooks(){try{return await j("/api/notebooks")}catch{return[]}},async readNotebook(E){return j(`/api/notebook-content?path=${encodeURIComponent(E)}`)},async createNotebook(E,e){return j("/api/notebooks",{method:"POST",body:JSON.stringify({name:E,template:e})})},async saveNotebook(E,e){return j("/api/notebook-content",{method:"PUT",body:JSON.stringify({path:E,content:e})})},async executeQuery(E){var n;const e=await j("/api/query",{method:"POST",body:JSON.stringify({sql:E})});return{columns:Array.isArray(e==null?void 0:e.columns)?e.columns.map(r=>typeof r=="string"?r:typeof(r==null?void 0:r.name)=="string"?r.name:String(r)):[],rows:Array.isArray(e==null?void 0:e.rows)?e.rows:[],rowCount:(e==null?void 0:e.rowCount)??((n=e==null?void 0:e.rows)==null?void 0:n.length)??0,executionTime:(e==null?void 0:e.executionTime)??(e==null?void 0:e.executionTimeMs)??0}},async getSchema(){try{return await j("/api/schema")}catch{return[]}},async getConnections(){try{return await j("/api/connections")}catch{return{default:"unknown",connections:{}}}},async testConnection(){try{return await j("/api/test-connection",{method:"POST",body:JSON.stringify({})})}catch(E){return{ok:!1,message:E.message??"Connection failed"}}},async getSemanticLayer(){try{return await j("/api/semantic-layer")}catch{return{available:!1,provider:null,metrics:[],dimensions:[],hierarchies:[]}}},async composeQuery(E,e,t){try{return await j("/api/semantic-query",{method:"POST",body:JSON.stringify({metrics:E,dimensions:e,timeDimension:t})})}catch(n){return{error:n.message??"Failed to compose query"}}},async createMetric(E){try{return await j("/api/semantic-layer/metric",{method:"POST",body:JSON.stringify(E)})}catch(e){return{ok:!1,error:e.message??"Failed to create metric"}}},async describeTable(E){const t=`DESCRIBE SELECT * FROM read_csv_auto('${E.replace(/'/g,"''")}') LIMIT 0`;try{return(await j("/api/query",{method:"POST",body:JSON.stringify({sql:t})})).rows.map(r=>({name:String(r.column_name??r.Field??""),type:String(r.column_type??r.Type??"")}))}catch{return[]}},async fetchLineage(){try{return await j("/api/lineage")}catch{return{nodes:[],edges:[]}}},async fetchBlockLineage(E){try{return await j(`/api/lineage/block/${encodeURIComponent(E)}`)}catch{return null}},async fetchImpactAnalysis(E){try{return await j(`/api/lineage/impact/${encodeURIComponent(E)}`)}catch{return null}}},pr={varchar:"#388bfd",text:"#388bfd",string:"#388bfd",char:"#388bfd",integer:"#56d364",int:"#56d364",bigint:"#56d364",smallint:"#56d364",float:"#56d364",double:"#56d364",decimal:"#56d364",numeric:"#56d364",real:"#56d364",date:"#e3b341",timestamp:"#e3b341",datetime:"#e3b341",time:"#e3b341",boolean:"#f778ba",bool:"#f778ba",json:"#79c0ff",jsonb:"#79c0ff",uuid:"#d2a8ff",bytea:"#ffa657",binary:"#ffa657"};function WE(E,e){const t=E.toLowerCase().split("(")[0].trim();return pr[t]??e}function Pr({t:E}){return T.jsxs("div",{style:{padding:"8px 12px",display:"flex",flexDirection:"column",gap:8},children:[[1,2,3].map(e=>T.jsx("div",{style:{height:28,borderRadius:4,background:E.pillBg,opacity:.6,animation:"pulse 1.5s ease-in-out infinite"}},e)),T.jsx("style",{children:"@keyframes pulse { 0%,100%{opacity:.6} 50%{opacity:.3} }"})]})}function Mr(){const{state:E,dispatch:e}=F(),t=H[E.themeMode],[n,r]=l.useState(!1),s=async()=>{e({type:"SET_SCHEMA_LOADING",loading:!0});try{const o=await Y.getSchema();e({type:"SET_SCHEMA",tables:o})}catch(o){console.error("Schema refresh failed:",o)}finally{e({type:"SET_SCHEMA_LOADING",loading:!1})}};return T.jsxs("div",{style:{flex:1,overflow:"auto",display:"flex",flexDirection:"column"},children:[T.jsxs("div",{style:{padding:"8px 10px",display:"flex",alignItems:"center",gap:6,borderBottom:`1px solid ${t.headerBorder}`},children:[T.jsxs("span",{style:{flex:1,fontSize:11,color:t.textMuted,fontFamily:t.font},children:[E.schemaTables.length," tables"]}),T.jsxs("button",{onClick:s,onMouseEnter:()=>r(!0),onMouseLeave:()=>r(!1),title:"Refresh schema",style:{background:n?t.btnHover:"transparent",border:`1px solid ${n?t.btnBorder:"transparent"}`,borderRadius:4,cursor:"pointer",color:n?t.textSecondary:t.textMuted,fontSize:11,fontFamily:t.font,padding:"2px 6px",display:"flex",alignItems:"center",gap:4,transition:"all 0.15s"},children:[T.jsx("svg",{width:"11",height:"11",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M1.705 8.005a.75.75 0 0 1 .834.656 5.5 5.5 0 0 0 9.592 2.97l-1.204-1.204a.25.25 0 0 1 .177-.427h3.646a.25.25 0 0 1 .25.25v3.646a.25.25 0 0 1-.427.177l-1.38-1.38A7.002 7.002 0 0 1 1.05 8.84a.75.75 0 0 1 .656-.834ZM8 2.5a5.487 5.487 0 0 0-4.131 1.869l1.204 1.204A.25.25 0 0 1 4.896 6H1.25A.25.25 0 0 1 1 5.75V2.104a.25.25 0 0 1 .427-.177l1.38 1.38A7.002 7.002 0 0 1 14.95 7.16a.75.75 0 0 1-1.49.178A5.5 5.5 0 0 0 8 2.5Z"})}),"Refresh"]})]}),E.schemaLoading?T.jsx(Pr,{t}):E.schemaTables.length===0?T.jsxs("div",{style:{padding:"24px 14px",color:t.textMuted,fontSize:12,fontFamily:t.font,textAlign:"center",fontStyle:"italic"},children:["No tables found.",T.jsx("br",{}),"Connect a data source to explore schema."]}):T.jsx("div",{style:{overflow:"auto",flex:1},children:E.schemaTables.map(o=>T.jsx(hr,{table:o,t},o.name))})]})}function hr({table:E,t:e}){const{dispatch:t}=F(),[n,r]=l.useState(!1),[s,o]=l.useState(!1),R=async()=>{if(t({type:"TOGGLE_SCHEMA_TABLE",tableName:E.name}),!E.expanded&&E.columns.length===0){o(!0);try{const S=await Y.describeTable(E.path);S.length>0&&t({type:"SET_TABLE_COLUMNS",tableName:E.name,columns:S})}catch(S){console.error("describeTable failed:",S)}finally{o(!1)}}};return T.jsxs("div",{children:[T.jsxs("button",{onMouseEnter:()=>r(!0),onMouseLeave:()=>r(!1),onClick:R,style:{width:"100%",display:"flex",alignItems:"center",gap:6,padding:"5px 10px",background:n?e.sidebarItemHover:"transparent",border:"none",cursor:"pointer",color:e.textPrimary,fontSize:12,fontFamily:e.font,fontWeight:500,textAlign:"left",transition:"background 0.1s"},children:[T.jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"currentColor",style:{transform:E.expanded?"rotate(90deg)":"rotate(0deg)",transition:"transform 0.15s",flexShrink:0,color:e.textMuted},children:T.jsx("path",{d:"M3 2l4 3-4 3V2Z"})}),T.jsx("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"currentColor",style:{color:e.accent,flexShrink:0},children:T.jsx("path",{d:"M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v1.5A1.75 1.75 0 0 1 14.25 5H1.75A1.75 1.75 0 0 1 0 3.25Zm1.75-.25a.25.25 0 0 0-.25.25v1.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-1.5a.25.25 0 0 0-.25-.25Zm-1.75 6C0 6.784.784 6 1.75 6h12.5c.966 0 1.75.784 1.75 1.75v1.5A1.75 1.75 0 0 1 14.25 11H1.75A1.75 1.75 0 0 1 0 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v1.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-1.5a.25.25 0 0 0-.25-.25Zm-1.75 6c0-.966.784-1.75 1.75-1.75h12.5c.966 0 1.75.784 1.75 1.75v1.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v1.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-1.5a.25.25 0 0 0-.25-.25Z"})}),T.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:E.name}),E.columns.length>0&&T.jsx("span",{style:{fontSize:10,color:e.textMuted,background:e.pillBg,borderRadius:8,padding:"1px 5px",flexShrink:0},children:E.columns.length})]}),E.expanded&&T.jsx("div",{style:{paddingLeft:26},children:s?T.jsx("div",{style:{padding:"4px 10px",fontSize:11,color:e.textMuted,fontFamily:e.font,fontStyle:"italic"},children:"..."}):E.columns.length===0?T.jsx("div",{style:{padding:"4px 10px",fontSize:11,color:e.textMuted,fontFamily:e.font,fontStyle:"italic"},children:"No columns"}):E.columns.map(S=>T.jsx(fr,{col:S,t:e},S.name))})]})}function fr({col:E,t:e}){const[t,n]=l.useState(!1);return T.jsxs("div",{onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),style:{display:"flex",alignItems:"center",gap:8,padding:"3px 10px 3px 8px",background:t?e.sidebarItemHover:"transparent",cursor:"default",transition:"background 0.1s"},children:[T.jsx("svg",{width:"10",height:"10",viewBox:"0 0 16 16",fill:"currentColor",style:{color:e.textMuted,flexShrink:0},children:T.jsx("path",{d:"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm7-3.25v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5a.75.75 0 0 1 1.5 0Z"})}),T.jsx("span",{style:{flex:1,fontSize:11,fontFamily:e.fontMono,color:e.textSecondary,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:E.name}),T.jsx("span",{style:{fontSize:10,fontFamily:e.fontMono,color:WE(E.type,e.accent),background:`${WE(E.type,e.accent)}18`,borderRadius:4,padding:"1px 5px",flexShrink:0},children:E.type.toLowerCase()})]})}function mr(E){if(E.type==="markdown"){const e=E.content.match(/^#{1,6}\s+(.+)$/m);if(e)return e[1];const t=E.content.split(`
10
+ `).find(n=>n.trim());return(t==null?void 0:t.trim())||null}return E.name?E.name:null}function Vt(E){if(E.type!=="markdown")return 0;const e=E.content.match(/^(#{1,6})\s/m);return e?e[1].length:0}function Ur({cell:E,t:e}){if(E.type==="markdown")return T.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",style:{color:e.textMuted,flexShrink:0},children:[T.jsx("path",{d:"M14.85 3H7.39L6.74.translateX(.5.25C6.45.11 6.23 0 6 0H1.75A1.75 1.75 0 0 0 0 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0 0 16 14.25V4.75A1.75 1.75 0 0 0 14.25 3ZM1.5 1.75a.25.25 0 0 1 .25-.25H6l.5 1.5H1.5Z"}),T.jsx("path",{d:"M2 2h12v12H2z",fill:"none",stroke:"currentColor",strokeWidth:"1.5"})]});const t=E.type==="sql"?e.accent:e.warning;return T.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",style:{color:t,flexShrink:0},children:T.jsx("path",{d:"M0 5.75C0 4.784.784 4 1.75 4h12.5c.966 0 1.75.784 1.75 1.75v4.5A1.75 1.75 0 0 1 14.25 12H1.75A1.75 1.75 0 0 1 0 10.25Zm1.75-.25a.25.25 0 0 0-.25.25v4.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4.5a.25.25 0 0 0-.25-.25Z"})})}function xr({onNavigate:E}){const{state:e}=F(),t=H[e.themeMode];if(!e.activeFile)return T.jsx("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",padding:20,textAlign:"center"},children:T.jsxs("div",{children:[T.jsx("svg",{width:"32",height:"32",viewBox:"0 0 16 16",fill:"currentColor",style:{color:t.textMuted,marginBottom:8},children:T.jsx("path",{d:"M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25ZM1.75 1.5a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25ZM3.5 6.25a.75.75 0 0 1 .75-.75h7a.75.75 0 0 1 0 1.5h-7a.75.75 0 0 1-.75-.75Zm.75 2.25h4a.75.75 0 0 1 0 1.5h-4a.75.75 0 0 1 0-1.5Z"})}),T.jsx("div",{style:{fontSize:12,color:t.textMuted,fontFamily:t.font,lineHeight:1.5},children:"Open a notebook to see its outline."})]})});const n=e.cells.map(r=>({cell:r,label:mr(r)})).filter(r=>r.label!==null);return n.length===0?T.jsxs("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",padding:20,color:t.textMuted,fontSize:12,fontFamily:t.font,fontStyle:"italic",textAlign:"center"},children:["No named cells or headings yet.",T.jsx("br",{}),"Name your cells or add markdown headings."]}):T.jsx("div",{style:{flex:1,overflow:"auto",padding:"6px 0"},children:n.map(({cell:r,label:s})=>{const o=Vt(r),R=r.type==="markdown"?Math.max(0,(o-1)*12):0;return T.jsx(yr,{cell:r,label:s,indent:R,onClick:()=>E(r.id),t},r.id)})})}function yr({cell:E,label:e,indent:t,onClick:n,t:r}){const[s,o]=l.useState(!1);return T.jsxs("button",{onClick:n,onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),style:{width:"100%",display:"flex",alignItems:"center",gap:6,padding:`4px 10px 4px ${14+t}px`,background:s?r.sidebarItemHover:"transparent",border:"none",cursor:"pointer",color:s?r.textPrimary:r.textSecondary,fontSize:12,fontFamily:E.type==="markdown"?r.font:r.fontMono,textAlign:"left",transition:"background 0.1s, color 0.1s",overflow:"hidden"},children:[T.jsx(Ur,{cell:E,t:r}),T.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1,fontWeight:E.type==="markdown"&&Vt(E)===1?600:400},children:e})]})}const gr={duckdb:"DuckDB",file:"Local File / DuckDB",postgres:"PostgreSQL",bigquery:"BigQuery",snowflake:"Snowflake",sqlite:"SQLite",mysql:"MySQL",mssql:"SQL Server",redshift:"Amazon Redshift",databricks:"Databricks",clickhouse:"ClickHouse",athena:"Amazon Athena",trino:"Trino",fabric:"Microsoft Fabric"},Gr={duckdb:"#f4bc00",file:"#f4bc00",postgres:"#336791",bigquery:"#4285f4",snowflake:"#29b5e8",sqlite:"#003b57",mysql:"#00758f",mssql:"#cc2927",redshift:"#8c4fff",databricks:"#ff3621",clickhouse:"#ffcc00",athena:"#ff9900",trino:"#dd00a1",fabric:"#0078d4"};function Br(){const{state:E}=F(),e=H[E.themeMode],[t,n]=l.useState(null),[r,s]=l.useState(!1),[o,R]=l.useState(null);l.useEffect(()=>{Y.getConnections().then(n)},[]);const S=async()=>{s(!0),R(null);const O=await Y.testConnection();R(O),s(!1)},a={fontSize:10,fontWeight:600,letterSpacing:"0.07em",textTransform:"uppercase",color:e.textMuted,fontFamily:e.font,marginBottom:6},i={background:e.cellBg,border:`1px solid ${e.cellBorder}`,borderRadius:7,padding:"10px 12px",marginBottom:10},A=(t==null?void 0:t.connections)??{},I=(t==null?void 0:t.default)??"";return T.jsxs("div",{style:{flex:1,overflow:"auto",padding:"12px 12px 20px"},children:[T.jsx("div",{style:a,children:"Active Connection"}),t===null?T.jsx("div",{style:{fontSize:12,color:e.textMuted,fontFamily:e.font},children:"Loading…"}):Object.entries(A).map(([O,c])=>{const d=(c==null?void 0:c.driver)??(c==null?void 0:c.type)??"unknown",D=O===I||Object.keys(A).length===1,u=Gr[d]??e.accent;return T.jsxs("div",{style:{...i,borderLeft:D?`3px solid ${u}`:`1px solid ${e.cellBorder}`},children:[T.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:6},children:[T.jsx("span",{style:{fontSize:10,fontWeight:700,fontFamily:e.fontMono,color:u,background:`${u}18`,border:`1px solid ${u}40`,borderRadius:4,padding:"1px 6px",letterSpacing:"0.05em",textTransform:"uppercase"},children:gr[d]??d}),D&&T.jsx("span",{style:{fontSize:10,color:e.textMuted,fontFamily:e.font},children:"default"})]}),T.jsx("div",{style:{display:"flex",flexDirection:"column",gap:3},children:Object.entries(c??{}).filter(([_])=>_!=="driver"&&_!=="type").map(([_,m])=>T.jsxs("div",{style:{display:"flex",gap:6,alignItems:"baseline"},children:[T.jsx("span",{style:{fontSize:11,color:e.textMuted,fontFamily:e.fontMono,minWidth:70,flexShrink:0},children:_}),T.jsx("span",{style:{fontSize:11,color:e.textSecondary,fontFamily:e.fontMono,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:_.toLowerCase().includes("password")?"••••••••":String(m)})]},_))})]},O)}),T.jsx("button",{onClick:S,disabled:r,style:{width:"100%",padding:"7px 0",borderRadius:6,border:`1px solid ${e.btnBorder}`,background:e.btnBg,color:e.textSecondary,fontSize:12,fontFamily:e.font,fontWeight:500,cursor:r?"not-allowed":"pointer",marginBottom:8,opacity:r?.7:1,transition:"all 0.15s"},children:r?"Testing…":"Test Connection"}),o&&T.jsxs("div",{style:{fontSize:12,fontFamily:e.font,color:o.ok?e.success:e.error,background:o.ok?`${e.success}12`:`${e.error}12`,border:`1px solid ${o.ok?e.success:e.error}40`,borderRadius:6,padding:"7px 10px",marginBottom:12},children:[o.ok?"✓ ":"✗ ",o.message]}),T.jsx("div",{style:{...a,marginTop:4},children:"Change Connection"}),T.jsxs("div",{style:{...i,fontSize:12,fontFamily:e.font,color:e.textSecondary,lineHeight:1.6},children:["Edit ",T.jsx("code",{style:{fontFamily:e.fontMono,color:e.accent,fontSize:11},children:"dql.config.json"})," in your project root to add or switch connections. Supported drivers:",T.jsx("div",{style:{display:"flex",flexDirection:"column",gap:4,marginTop:8},children:[{driver:"duckdb / file",desc:"Local CSV, Parquet, DuckDB"},{driver:"postgres",desc:"PostgreSQL / Supabase / RDS"},{driver:"bigquery",desc:"Google BigQuery"},{driver:"snowflake",desc:"Snowflake"},{driver:"mysql",desc:"MySQL / MariaDB / PlanetScale"},{driver:"mssql",desc:"SQL Server / Azure SQL"},{driver:"redshift",desc:"Amazon Redshift"},{driver:"databricks",desc:"Databricks SQL"},{driver:"clickhouse",desc:"ClickHouse"},{driver:"athena",desc:"Amazon Athena"},{driver:"trino",desc:"Trino / Starburst"},{driver:"fabric",desc:"Microsoft Fabric"}].map(({driver:O,desc:c})=>T.jsxs("div",{style:{display:"flex",gap:8,alignItems:"baseline"},children:[T.jsx("code",{style:{fontSize:10,fontFamily:e.fontMono,color:e.textMuted,minWidth:80,flexShrink:0},children:O}),T.jsx("span",{style:{fontSize:11,color:e.textMuted},children:c})]},O))})]}),T.jsx("div",{style:{...a,marginTop:4},children:"Example Config"}),T.jsx("pre",{style:{background:e.cellBg,border:`1px solid ${e.cellBorder}`,borderRadius:7,padding:"10px 12px",fontSize:11,fontFamily:e.fontMono,color:e.textSecondary,overflow:"auto",lineHeight:1.6,margin:0},children:`{
11
+ "connections": {
12
+ "default": {
13
+ "driver": "duckdb",
14
+ "path": ":memory:"
15
+ },
16
+ "prod": {
17
+ "driver": "postgres",
18
+ "host": "localhost",
19
+ "port": 5432,
20
+ "database": "analytics",
21
+ "user": "analyst",
22
+ "password": "..."
23
+ }
24
+ }
25
+ }`})]})}function Ee({title:E,defaultOpen:e=!1,children:t,t:n}){const[r,s]=l.useState(e),[o,R]=l.useState(!1);return T.jsxs("div",{style:{borderBottom:`1px solid ${n.headerBorder}`},children:[T.jsxs("button",{onClick:()=>s(S=>!S),onMouseEnter:()=>R(!0),onMouseLeave:()=>R(!1),style:{width:"100%",padding:"7px 12px",display:"flex",alignItems:"center",gap:6,background:o?n.sidebarItemHover:"transparent",border:"none",cursor:"pointer",textAlign:"left",transition:"background 0.1s"},children:[T.jsx("span",{style:{fontSize:9,color:n.textMuted,display:"inline-block",transition:"transform 0.15s",transform:r?"rotate(90deg)":"rotate(0deg)",lineHeight:1},children:"▶"}),T.jsx("span",{style:{fontSize:11,fontWeight:600,fontFamily:n.font,color:n.textSecondary,letterSpacing:"0.04em"},children:E})]}),r&&T.jsx("div",{style:{padding:"4px 12px 10px"},children:t})]})}function Hr({code:E,t:e}){const[t,n]=l.useState(!1);async function r(){try{await navigator.clipboard.writeText(E)}catch{const s=document.createElement("textarea");s.value=E,document.body.appendChild(s),s.select(),document.execCommand("copy"),document.body.removeChild(s)}n(!0),setTimeout(()=>n(!1),1500)}return T.jsx("button",{onClick:r,title:"Copy to clipboard",style:{position:"absolute",top:6,right:6,padding:"2px 6px",fontSize:10,fontFamily:e.font,background:t?`${e.success}20`:e.btnBg,border:`1px solid ${t?e.success+"50":e.btnBorder}`,borderRadius:4,cursor:"pointer",color:t?e.success:e.textMuted,transition:"all 0.15s"},children:t?"✓":"Copy"})}function X({code:E,t:e}){return T.jsxs("div",{style:{position:"relative",marginTop:6},children:[T.jsx("pre",{style:{margin:0,padding:"8px 10px",paddingRight:52,background:e.editorBg,border:`1px solid ${e.cellBorder}`,borderRadius:6,fontFamily:e.fontMono,fontSize:11,color:e.textPrimary,lineHeight:1.6,whiteSpace:"pre",overflowX:"auto"},children:E}),T.jsx(Hr,{code:E,t:e})]})}function XE({rows:E,t:e}){return T.jsx("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:11,fontFamily:e.font,marginTop:6},children:T.jsx("tbody",{children:E.map(([t,n],r)=>T.jsxs("tr",{style:{borderBottom:`1px solid ${e.tableBorder}`},children:[T.jsx("td",{style:{padding:"5px 6px 5px 0",fontFamily:e.fontMono,fontSize:11,color:e.accent,whiteSpace:"nowrap",verticalAlign:"top",width:"45%"},children:t}),T.jsx("td",{style:{padding:"5px 0",color:e.textSecondary,verticalAlign:"top",lineHeight:1.5},children:n})]},r))})})}const Fr=`block "Revenue by Channel" {
26
+ domain = "revenue"
27
+ type = "custom"
28
+ description = "Revenue grouped by sales channel"
29
+ owner = "data-team"
30
+ tags = ["revenue"]
31
+
32
+ params {
33
+ period = "current_quarter"
34
+ }
35
+
36
+ query = """
37
+ SELECT channel,
38
+ SUM(order_total) AS revenue
39
+ FROM read_csv_auto('data/orders.csv')
40
+ WHERE fiscal_period = \${period}
41
+ GROUP BY channel
42
+ ORDER BY revenue DESC
43
+ """
44
+
45
+ visualization {
46
+ chart = "bar"
47
+ x = channel
48
+ y = revenue
49
+ }
50
+
51
+ tests {
52
+ assert row_count > 0
53
+ }
54
+ }`,br=`# semantic-layer/metrics/total_revenue.yaml
55
+ name: total_revenue
56
+ label: Total Revenue
57
+ description: Sum of all recognized revenue.
58
+ domain: finance
59
+ sql: SUM(amount)
60
+ type: sum # sum|count|count_distinct|avg|min|max|custom
61
+ table: fct_revenue
62
+ tags:
63
+ - revenue
64
+ - kpi`,Yr=`# semantic-layer/dimensions/segment.yaml
65
+ name: segment
66
+ label: Customer Segment
67
+ description: Customer segment tier.
68
+ sql: segment_tier
69
+ type: string # string|number|date|boolean
70
+ table: fct_revenue`,vr=`# semantic-layer/hierarchies/time.yaml
71
+ name: fiscal_time
72
+ label: Fiscal Time
73
+ description: Drill from year to quarter.
74
+ domain: finance
75
+ levels:
76
+ - name: fiscal_year
77
+ dimension: fiscal_year
78
+ order: 1
79
+ - name: fiscal_quarter
80
+ dimension: fiscal_quarter
81
+ order: 2
82
+ defaultRollup: sum`,Vr=`# semantic-layer/cubes/revenue_cube.yaml
83
+ name: revenue
84
+ label: Revenue Cube
85
+ table: fct_revenue
86
+ domain: finance
87
+
88
+ measures:
89
+ - name: total_revenue
90
+ sql: SUM(amount)
91
+ type: sum
92
+ - name: deal_count
93
+ sql: COUNT(*)
94
+ type: count
95
+
96
+ dimensions:
97
+ - name: segment_tier
98
+ sql: segment_tier
99
+ type: string
100
+
101
+ time_dimensions:
102
+ - name: recognized_at
103
+ sql: recognized_at
104
+ primary_time: true
105
+ granularities: [day, month, quarter, year]
106
+
107
+ joins:
108
+ - name: customers
109
+ type: left
110
+ sql: "\${left}.customer_id = \${right}.id"`,Wr=`{
111
+ "semanticLayer": {
112
+ "provider": "dql"
113
+ }
114
+ }`,Xr=`{
115
+ "semanticLayer": {
116
+ "provider": "dbt",
117
+ "projectPath": "/path/to/your/dbt-project"
118
+ }
119
+ }`,wr=`{
120
+ "semanticLayer": {
121
+ "provider": "cubejs",
122
+ "projectPath": "/path/to/your/cube-project"
123
+ }
124
+ }`,Kr=`{
125
+ "defaultConnection": {
126
+ "driver": "file",
127
+ "filepath": ":memory:"
128
+ }
129
+ }`,jr=`{
130
+ "defaultConnection": {
131
+ "driver": "snowflake",
132
+ "account": "acme.snowflakecomputing.com",
133
+ "username": "your_user",
134
+ "password": "\${SNOWFLAKE_PASSWORD}",
135
+ "database": "ANALYTICS",
136
+ "schema": "PUBLIC",
137
+ "warehouse": "COMPUTE_WH",
138
+ "role": "ANALYST"
139
+ }
140
+ }`,kr=`{
141
+ "defaultConnection": {
142
+ "driver": "bigquery",
143
+ "project": "your-gcp-project-id",
144
+ "dataset": "analytics",
145
+ "keyFilename": "./service-account.json"
146
+ }
147
+ }`,$r=`{
148
+ "defaultConnection": {
149
+ "driver": "postgres",
150
+ "host": "localhost",
151
+ "port": 5432,
152
+ "database": "analytics",
153
+ "username": "your_user",
154
+ "password": "\${POSTGRES_PASSWORD}"
155
+ }
156
+ }`,Jr=`-- Primary workflow: use Compose Query in the Semantic Layer panel
157
+ -- 1. Pick metrics + dimensions (+ optional time dimension)
158
+ -- 2. Click "Compose SQL"
159
+ -- 3. Click "+ Insert as Cell" → edit and run
160
+
161
+ -- Advanced: reference metrics inline in any SQL cell
162
+ -- DQL resolves @metric() and @dim() at query time
163
+ SELECT
164
+ @dim(segment_tier),
165
+ @metric(total_revenue)
166
+ FROM fct_revenue
167
+ GROUP BY @dim(segment_tier)
168
+ ORDER BY @metric(total_revenue) DESC`,Qr=`{
169
+ "semanticLayer": {
170
+ "provider": "snowflake",
171
+ "projectPath": "MY_DATABASE"
172
+ }
173
+ }`;function Zr({themeMode:E}){const e=H[E];return T.jsxs("div",{style:{flex:1,overflowY:"auto",fontFamily:e.font},children:[T.jsx(Ee,{title:"SQL Essentials",defaultOpen:!0,t:e,children:T.jsx(X,{t:e,code:`-- Basic select
174
+ SELECT col1, col2
175
+ FROM table_name
176
+ WHERE condition
177
+ ORDER BY col1 DESC
178
+ LIMIT 100
179
+
180
+ -- GROUP BY
181
+ SELECT col, COUNT(*), SUM(val)
182
+ FROM table_name
183
+ GROUP BY col
184
+
185
+ -- JOIN
186
+ SELECT a.*, b.col
187
+ FROM table_a AS a
188
+ JOIN table_b AS b ON a.id = b.id
189
+
190
+ -- CTE (WITH)
191
+ WITH cte AS (
192
+ SELECT * FROM table_name WHERE val > 0
193
+ )
194
+ SELECT * FROM cte
195
+
196
+ -- Window function
197
+ SELECT *,
198
+ ROW_NUMBER() OVER (
199
+ PARTITION BY group_col
200
+ ORDER BY val DESC
201
+ ) AS rank
202
+ FROM table_name`})}),T.jsx(Ee,{title:"DuckDB Functions",defaultOpen:!1,t:e,children:T.jsx(XE,{t:e,rows:[["read_csv_auto(path)","Auto-detect CSV schema and load"],["read_parquet(path)","Load a Parquet file"],["strftime(date, fmt)","Format date as string (e.g. '%Y-%m')"],["date_trunc(part, date)","Truncate date to part ('month', 'year'…)"],["CURRENT_DATE","Today's date"],["epoch_ms(ts)","Convert epoch milliseconds to timestamp"],["array_agg(col)","Aggregate column values into an array"],["string_agg(col, sep)","Concatenate values with separator"]]})}),T.jsxs(Ee,{title:"DQL Block Structure",defaultOpen:!0,t:e,children:[T.jsx(X,{t:e,code:Fr}),T.jsxs("div",{style:{marginTop:8,fontSize:11,color:e.textMuted,fontFamily:e.font,lineHeight:1.6},children:["Run ",T.jsx("code",{style:{fontFamily:e.fontMono,color:e.accent,fontSize:11},children:"dql certify <file> --connection duckdb"})," to execute ",T.jsx("code",{style:{fontFamily:e.fontMono,color:e.accent,fontSize:11},children:"tests {}"})," assertions against live data. Use ",T.jsx("code",{style:{fontFamily:e.fontMono,color:e.accent,fontSize:11},children:"--skip-tests"})," to check governance fields only."]})]}),T.jsxs(Ee,{title:"DQL Chart Types",defaultOpen:!1,t:e,children:[T.jsx(XE,{t:e,rows:[["table","Tabular data grid (default)"],["bar","Bar chart — use x and y fields"],["line","Line chart — use x (date) and y (value)"],["pie","Pie/donut chart — use x (label) and y (value)"],["kpi","Single big-number KPI card (dql preview)"]]}),T.jsxs("div",{style:{marginTop:8,fontSize:11,color:e.textMuted,fontFamily:e.font,lineHeight:1.6},children:["Set chart type inside the"," ",T.jsx("code",{style:{fontFamily:e.fontMono,color:e.accent,fontSize:11},children:'visualization { chart = "pie"; x = label_col; y = value_col }'})," ","block."]})]}),T.jsxs(Ee,{title:"Semantic Layer Usage",defaultOpen:!1,t:e,children:[T.jsxs("div",{style:{fontSize:12,color:e.textSecondary,lineHeight:1.7,fontFamily:e.font,marginBottom:6},children:["Primary workflow: open the ",T.jsx("strong",{children:"Semantic Layer"})," panel → Compose Query → pick metrics and dimensions → Compose SQL → + Insert as Cell. Advanced: use ",T.jsx("code",{style:{fontFamily:e.fontMono,color:e.accent,fontSize:11},children:"@metric(name)"})," and ",T.jsx("code",{style:{fontFamily:e.fontMono,color:e.accent,fontSize:11},children:"@dim(name)"})," refs directly in any SQL cell."]}),T.jsx(X,{t:e,code:Jr})]}),T.jsxs(Ee,{title:"Semantic Layer",defaultOpen:!1,t:e,children:[T.jsxs("div",{style:{fontSize:12,color:e.textSecondary,lineHeight:1.7,fontFamily:e.font,marginBottom:8},children:["Define reusable metrics, dimensions, and hierarchies in YAML. They appear in the"," ",T.jsx("strong",{style:{color:e.textPrimary},children:"Semantic Layer"})," sidebar panel."]}),T.jsx("div",{style:{fontSize:11,fontWeight:600,color:e.textSecondary,fontFamily:e.font,margin:"10px 0 4px",letterSpacing:"0.03em"},children:"Directory Structure"}),T.jsx(X,{t:e,code:`my-project/
203
+ ├── dql.config.json
204
+ └── semantic-layer/
205
+ ├── metrics/ ← one YAML per metric
206
+ ├── dimensions/ ← one YAML per dimension
207
+ ├── hierarchies/ ← optional drill paths
208
+ └── cubes/ ← optional (groups all into one)`}),T.jsxs("div",{style:{marginTop:8,padding:"6px 8px",background:`${e.accent}10`,border:`1px solid ${e.accent}30`,borderRadius:4,fontSize:11,color:e.textSecondary,fontFamily:e.font,lineHeight:1.6},children:[T.jsx("strong",{style:{color:e.textPrimary},children:"Recommended:"})," For multi-table projects, use a ",T.jsx("code",{style:{fontFamily:e.fontMono,fontSize:10},children:"cubes/"})," file — it keeps metrics, dimensions, and joins together. Use standalone ",T.jsx("code",{style:{fontFamily:e.fontMono,fontSize:10},children:"metrics/"})," and ",T.jsx("code",{style:{fontFamily:e.fontMono,fontSize:10},children:"dimensions/"})," files only for simple single-table projects."]}),T.jsx("div",{style:{fontSize:11,fontWeight:600,color:e.textSecondary,fontFamily:e.font,margin:"12px 0 4px",letterSpacing:"0.03em"},children:"Metric YAML"}),T.jsx(X,{t:e,code:br}),T.jsx("div",{style:{fontSize:11,fontWeight:600,color:e.textSecondary,fontFamily:e.font,margin:"12px 0 4px",letterSpacing:"0.03em"},children:"Dimension YAML"}),T.jsx(X,{t:e,code:Yr}),T.jsx("div",{style:{fontSize:11,fontWeight:600,color:e.textSecondary,fontFamily:e.font,margin:"12px 0 4px",letterSpacing:"0.03em"},children:"Hierarchy YAML"}),T.jsx(X,{t:e,code:vr}),T.jsx("div",{style:{fontSize:11,fontWeight:600,color:e.textSecondary,fontFamily:e.font,margin:"12px 0 4px",letterSpacing:"0.03em"},children:"Cube YAML (advanced — multi-table with joins)"}),T.jsx(X,{t:e,code:Vr})]}),T.jsxs(Ee,{title:"Semantic Layer Providers",defaultOpen:!1,t:e,children:[T.jsxs("div",{style:{fontSize:12,color:e.textSecondary,lineHeight:1.7,fontFamily:e.font,marginBottom:8},children:["Add to your ",T.jsx("code",{style:{fontFamily:e.fontMono,color:e.accent,fontSize:11},children:"dql.config.json"})," to connect a semantic layer provider."]}),T.jsx("div",{style:{fontSize:11,fontWeight:600,color:e.textSecondary,fontFamily:e.font,margin:"10px 0 4px",letterSpacing:"0.03em"},children:"DQL Native (YAML files in semantic-layer/)"}),T.jsx(X,{t:e,code:Wr}),T.jsx("div",{style:{fontSize:11,fontWeight:600,color:e.textSecondary,fontFamily:e.font,margin:"12px 0 4px",letterSpacing:"0.03em"},children:"dbt (reads models/**/*.yml)"}),T.jsx(X,{t:e,code:Xr}),T.jsxs("div",{style:{marginTop:4,fontSize:11,color:e.textMuted,fontFamily:e.font,lineHeight:1.5},children:["Point to your dbt project root (directory with ",T.jsx("code",{style:{fontFamily:e.fontMono,fontSize:10},children:"dbt_project.yml"}),"). Reads ",T.jsx("code",{style:{fontFamily:e.fontMono,fontSize:10},children:"semantic_models"})," and"," ",T.jsx("code",{style:{fontFamily:e.fontMono,fontSize:10},children:"metrics"})," blocks (dbt 1.6+)."]}),T.jsx("div",{style:{fontSize:11,fontWeight:600,color:e.textSecondary,fontFamily:e.font,margin:"12px 0 4px",letterSpacing:"0.03em"},children:"Cube.js (reads model/ or schema/)"}),T.jsx(X,{t:e,code:wr}),T.jsxs("div",{style:{marginTop:4,fontSize:11,color:e.textMuted,fontFamily:e.font,lineHeight:1.5},children:["Point to your Cube.js project root. Reads"," ",T.jsx("code",{style:{fontFamily:e.fontMono,fontSize:10},children:"cubes:"})," blocks from YAML schema files."]}),T.jsx("div",{style:{fontSize:11,fontWeight:600,color:e.textSecondary,fontFamily:e.font,margin:"12px 0 4px",letterSpacing:"0.03em"},children:"Snowflake Semantic Views (requires live connection)"}),T.jsx(X,{t:e,code:Qr}),T.jsxs("div",{style:{marginTop:4,fontSize:11,color:e.textMuted,fontFamily:e.font,lineHeight:1.5},children:["Introspects Snowflake semantic views via"," ",T.jsx("code",{style:{fontFamily:e.fontMono,fontSize:10},children:"SHOW SEMANTIC VIEWS"}),". Set ",T.jsx("code",{style:{fontFamily:e.fontMono,fontSize:10},children:"projectPath"})," to your database name to scope discovery. Requires a Snowflake connection in ",T.jsx("code",{style:{fontFamily:e.fontMono,fontSize:10},children:"defaultConnection"}),"."]})]}),T.jsxs(Ee,{title:"Connection Setup",defaultOpen:!1,t:e,children:[T.jsxs("div",{style:{fontSize:12,color:e.textSecondary,lineHeight:1.7,fontFamily:e.font,marginBottom:8},children:["Configure ",T.jsx("code",{style:{fontFamily:e.fontMono,color:e.accent,fontSize:11},children:"defaultConnection"})," in"," ",T.jsx("code",{style:{fontFamily:e.fontMono,color:e.accent,fontSize:11},children:"dql.config.json"}),"."]}),T.jsx("div",{style:{fontSize:11,fontWeight:600,color:e.textSecondary,fontFamily:e.font,margin:"10px 0 4px",letterSpacing:"0.03em"},children:"DuckDB (in-memory — default)"}),T.jsx(X,{t:e,code:Kr}),T.jsx("div",{style:{fontSize:11,fontWeight:600,color:e.textSecondary,fontFamily:e.font,margin:"12px 0 4px",letterSpacing:"0.03em"},children:"Snowflake"}),T.jsx(X,{t:e,code:jr}),T.jsx("div",{style:{fontSize:11,fontWeight:600,color:e.textSecondary,fontFamily:e.font,margin:"12px 0 4px",letterSpacing:"0.03em"},children:"BigQuery"}),T.jsx(X,{t:e,code:kr}),T.jsx("div",{style:{fontSize:11,fontWeight:600,color:e.textSecondary,fontFamily:e.font,margin:"12px 0 4px",letterSpacing:"0.03em"},children:"PostgreSQL"}),T.jsx(X,{t:e,code:$r}),T.jsxs("div",{style:{marginTop:8,fontSize:11,color:e.textMuted,fontFamily:e.font,lineHeight:1.5},children:["Use ",T.jsxs("code",{style:{fontFamily:e.fontMono,fontSize:10},children:["$","${ENV_VAR}"]})," syntax for secrets. Run ",T.jsx("code",{style:{fontFamily:e.fontMono,fontSize:10},children:"dql doctor"})," to verify your connection."]})]}),T.jsxs(Ee,{title:"Variable References",defaultOpen:!1,t:e,children:[T.jsxs("div",{style:{fontSize:12,color:e.textSecondary,lineHeight:1.7,fontFamily:e.font,marginBottom:8},children:["Use"," ",T.jsx("code",{style:{fontFamily:e.fontMono,color:e.accent,fontSize:11},children:"{{cell_name}}"})," ","to reference other cells:",T.jsxs("ul",{style:{margin:"6px 0 0",paddingLeft:18},children:[T.jsxs("li",{children:[T.jsx("strong",{children:"Param cell"})," → substituted as a SQL literal value"]}),T.jsxs("li",{children:[T.jsx("strong",{children:"SQL cell"})," → injected as a CTE"]})]})]}),T.jsx(X,{t:e,code:`-- Param cell named "start_date" holds '2024-01-01'
209
+ SELECT *
210
+ FROM read_csv_auto('data/sales.csv')
211
+ WHERE date >= {{start_date}}
212
+
213
+ -- SQL cell named "base_query" used as CTE
214
+ SELECT segment, SUM(revenue) AS total
215
+ FROM {{base_query}}
216
+ GROUP BY segment`})]})]})}const Wt={sum:"#56d364",count:"#388bfd",count_distinct:"#388bfd",avg:"#e3b341",min:"#f778ba",max:"#f778ba",custom:"#d2a8ff"};function qr(){return T.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1Zm0 1.5a5.5 5.5 0 1 1 0 11 5.5 5.5 0 0 1 0-11Zm0 2a.75.75 0 0 1 .75.75v2h2a.75.75 0 0 1 0 1.5h-2v2a.75.75 0 0 1-1.5 0v-2h-2a.75.75 0 0 1 0-1.5h2v-2A.75.75 0 0 1 8 4.5Z"})})}function zr(){return T.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M1 2.75C1 1.784 1.784 1 2.75 1h10.5c.966 0 1.75.784 1.75 1.75v10.5A1.75 1.75 0 0 1 13.25 15H2.75A1.75 1.75 0 0 1 1 13.25Zm1.75-.25a.25.25 0 0 0-.25.25v10.5c0 .138.112.25.25.25h10.5a.25.25 0 0 0 .25-.25V2.75a.25.25 0 0 0-.25-.25ZM8 4a.75.75 0 0 1 .75.75v6.5a.75.75 0 0 1-1.5 0v-6.5A.75.75 0 0 1 8 4Zm-3 3a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 5 7Zm6-1a.75.75 0 0 1 .75.75v4.5a.75.75 0 0 1-1.5 0v-4.5A.75.75 0 0 1 11 6Z"})})}function en(){return T.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M8 1a1 1 0 0 1 1 1v2.586l2.293-2.293a1 1 0 0 1 1.414 1.414L10.414 6H13a1 1 0 1 1 0 2h-2.586l2.293 2.293a1 1 0 0 1-1.414 1.414L9 9.414V12a1 1 0 1 1-2 0V9.414l-2.293 2.293a1 1 0 0 1-1.414-1.414L5.586 8H3a1 1 0 0 1 0-2h2.586L3.293 3.707a1 1 0 0 1 1.414-1.414L7 4.586V2a1 1 0 0 1 1-1Z"})})}function ke({label:E,count:e,expanded:t,onToggle:n,t:r}){const[s,o]=l.useState(!1);return T.jsxs("button",{onClick:n,onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),style:{width:"100%",display:"flex",alignItems:"center",gap:6,padding:"3px 8px 3px 10px",background:s?r.sidebarItemHover:"transparent",border:"none",cursor:"pointer",color:r.textSecondary,fontSize:11,fontWeight:600,fontFamily:r.font,letterSpacing:"0.04em",textTransform:"uppercase",textAlign:"left",transition:"background 0.1s"},children:[T.jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"currentColor",style:{transform:t?"rotate(90deg)":"rotate(0deg)",transition:"transform 0.15s",flexShrink:0},children:T.jsx("path",{d:"M3 2l4 3-4 3V2Z"})}),T.jsx("span",{style:{flex:1},children:E}),e>0&&T.jsx("span",{style:{background:r.pillBg,color:r.textMuted,borderRadius:10,padding:"0 5px",fontSize:10,fontWeight:500},children:e})]})}function En({metric:E,t:e}){const[t,n]=l.useState(!1),[r,s]=l.useState(!1),o=Wt[E.type]??e.accent;return T.jsxs("div",{children:[T.jsxs("button",{onClick:()=>s(!r),onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),style:{width:"100%",display:"flex",alignItems:"center",gap:6,padding:"4px 8px 4px 22px",background:t?e.sidebarItemHover:"transparent",border:"none",cursor:"pointer",color:e.textPrimary,fontSize:12,fontFamily:e.font,textAlign:"left",transition:"background 0.1s"},children:[T.jsx("span",{style:{color:o,flexShrink:0},children:T.jsx(qr,{})}),T.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:E.label||E.name}),T.jsx("span",{style:{fontSize:9,fontFamily:e.fontMono,color:o,background:`${o}18`,borderRadius:4,padding:"1px 4px",flexShrink:0},children:E.type})]}),r&&T.jsxs("div",{style:{padding:"2px 8px 6px 40px",fontSize:11,color:e.textMuted,fontFamily:e.font,lineHeight:1.5},children:[E.description&&T.jsx("div",{children:E.description}),T.jsxs("div",{style:{fontFamily:e.fontMono,fontSize:10,color:e.textSecondary,marginTop:2},children:["table: ",E.table]}),E.domain&&T.jsxs("div",{style:{fontFamily:e.fontMono,fontSize:10,color:e.textSecondary},children:["domain: ",E.domain]}),E.tags.length>0&&T.jsx("div",{style:{display:"flex",gap:3,flexWrap:"wrap",marginTop:3},children:E.tags.map(R=>T.jsx("span",{style:{fontSize:9,background:e.pillBg,color:e.textMuted,borderRadius:3,padding:"1px 4px"},children:R},R))})]})]})}function tn({dimension:E,t:e}){const[t,n]=l.useState(!1),r=E.type==="date"?"#e3b341":E.type==="number"?"#56d364":"#388bfd";return T.jsxs("div",{onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),style:{display:"flex",alignItems:"center",gap:6,padding:"4px 8px 4px 22px",background:t?e.sidebarItemHover:"transparent",cursor:"default",transition:"background 0.1s"},children:[T.jsx("span",{style:{color:e.textMuted,flexShrink:0},children:T.jsx(zr,{})}),T.jsx("span",{style:{flex:1,fontSize:12,fontFamily:e.font,color:e.textSecondary,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:E.description,children:E.label||E.name}),T.jsx("span",{style:{fontSize:9,fontFamily:e.fontMono,color:r,background:`${r}18`,borderRadius:4,padding:"1px 4px",flexShrink:0},children:E.type})]})}function Tn({hierarchy:E,t:e}){const[t,n]=l.useState(!1),[r,s]=l.useState(!1);return T.jsxs("div",{children:[T.jsxs("button",{onClick:()=>s(!r),onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),style:{width:"100%",display:"flex",alignItems:"center",gap:6,padding:"4px 8px 4px 22px",background:t?e.sidebarItemHover:"transparent",border:"none",cursor:"pointer",color:e.textSecondary,fontSize:12,fontFamily:e.font,textAlign:"left",transition:"background 0.1s"},children:[T.jsx("span",{style:{color:"#d2a8ff",flexShrink:0},children:T.jsx(en,{})}),T.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:E.label||E.name}),T.jsx("span",{style:{fontSize:10,color:e.textMuted,background:e.pillBg,borderRadius:8,padding:"1px 5px",flexShrink:0},children:E.levels.length})]}),r&&T.jsx("div",{style:{paddingLeft:40},children:E.levels.map((o,R)=>T.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"2px 0",fontSize:11,fontFamily:e.fontMono,color:e.textMuted},children:[T.jsxs("span",{style:{color:e.textMuted,fontSize:9},children:[R+1,"."]}),o.label||o.name]},o.name))})]})}const rn=["day","week","month","quarter","year"];function nn({t:E,metrics:e,dimensions:t,onInsertCell:n}){const[r,s]=l.useState(!1),[o,R]=l.useState(new Set),[S,a]=l.useState(new Set),[i,A]=l.useState(""),[I,O]=l.useState("month"),[c,d]=l.useState(null),[D,u]=l.useState(null),[_,m]=l.useState(!1),[G,x]=l.useState(!1),P=t.filter(h=>h.type==="date"),y=h=>{R(g=>{const p=new Set(g);return p.has(h)?p.delete(h):p.add(h),p}),d(null)},B=h=>{a(g=>{const p=new Set(g);return p.has(h)?p.delete(h):p.add(h),p}),d(null)},w=async()=>{if(o.size!==0){m(!0),u(null);try{const h=i?{name:i,granularity:I}:void 0,g=await Y.composeQuery(Array.from(o),Array.from(S),h);"error"in g?u(g.error):d(g.sql)}catch(h){u(h.message??"Failed to compose")}finally{m(!1)}}},b=()=>{c&&(navigator.clipboard.writeText(c),x(!0),setTimeout(()=>x(!1),1500))},M=h=>({width:14,height:14,borderRadius:3,border:`1.5px solid ${h?E.accent:E.cellBorder}`,background:h?E.accent:"transparent",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,transition:"all 0.15s"});return T.jsxs("div",{style:{borderBottom:`1px solid ${E.headerBorder}`},children:[T.jsxs("button",{onClick:()=>s(!r),style:{width:"100%",display:"flex",alignItems:"center",gap:6,padding:"6px 10px",background:r?`${E.accent}10`:"transparent",border:"none",cursor:"pointer",color:E.accent,fontSize:11,fontWeight:600,fontFamily:E.font,textAlign:"left"},children:[T.jsx("svg",{width:"10",height:"10",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm6.5-2a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0Zm-2 4.5a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0Zm5 0a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0Z"})}),"Compose Query",T.jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"currentColor",style:{marginLeft:"auto",transform:r?"rotate(90deg)":"rotate(0deg)",transition:"transform 0.15s"},children:T.jsx("path",{d:"M3 2l4 3-4 3V2Z"})})]}),r&&T.jsxs("div",{style:{padding:"6px 10px 10px",fontSize:11,fontFamily:E.font},children:[T.jsx("div",{style:{fontSize:10,fontWeight:600,color:E.textSecondary,marginBottom:4,textTransform:"uppercase",letterSpacing:"0.04em"},children:"Select Metrics"}),T.jsx("div",{style:{maxHeight:120,overflowY:"auto",marginBottom:8},children:e.map(h=>T.jsxs("label",{style:{display:"flex",alignItems:"center",gap:6,padding:"2px 0",cursor:"pointer",color:E.textPrimary,fontSize:11},onClick:()=>y(h.name),children:[T.jsx("div",{style:M(o.has(h.name)),children:o.has(h.name)&&T.jsx("svg",{width:"8",height:"8",viewBox:"0 0 10 10",fill:"#fff",children:T.jsx("path",{d:"M8.5 2.5L4 7 1.5 4.5",stroke:"#fff",strokeWidth:"1.5",fill:"none"})})}),T.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:h.label||h.name}),T.jsx("span",{style:{fontSize:9,color:Wt[h.type]??E.accent,marginLeft:"auto",flexShrink:0},children:h.type})]},h.name))}),T.jsx("div",{style:{fontSize:10,fontWeight:600,color:E.textSecondary,marginBottom:4,textTransform:"uppercase",letterSpacing:"0.04em"},children:"Select Dimensions (optional)"}),T.jsx("div",{style:{maxHeight:120,overflowY:"auto",marginBottom:8},children:t.map(h=>T.jsxs("label",{style:{display:"flex",alignItems:"center",gap:6,padding:"2px 0",cursor:"pointer",color:E.textPrimary,fontSize:11},onClick:()=>B(h.name),children:[T.jsx("div",{style:M(S.has(h.name)),children:S.has(h.name)&&T.jsx("svg",{width:"8",height:"8",viewBox:"0 0 10 10",fill:"#fff",children:T.jsx("path",{d:"M8.5 2.5L4 7 1.5 4.5",stroke:"#fff",strokeWidth:"1.5",fill:"none"})})}),T.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:h.label||h.name})]},h.name))}),P.length>0&&T.jsxs("div",{style:{marginBottom:8},children:[T.jsx("div",{style:{fontSize:10,fontWeight:600,color:E.textSecondary,marginBottom:4,textTransform:"uppercase",letterSpacing:"0.04em"},children:"Time Dimension (optional)"}),T.jsxs("select",{value:i,onChange:h=>{A(h.target.value),d(null)},style:{width:"100%",padding:"3px 6px",background:E.editorBg,border:`1px solid ${E.cellBorder}`,borderRadius:4,color:i?E.textPrimary:E.textMuted,fontSize:11,fontFamily:E.font,marginBottom:4,cursor:"pointer"},children:[T.jsx("option",{value:"",children:"None"}),P.map(h=>T.jsx("option",{value:h.name,children:h.label||h.name},h.name))]}),i&&T.jsx("div",{style:{display:"flex",gap:4},children:rn.map(h=>T.jsx("button",{onClick:()=>{O(h),d(null)},style:{flex:1,padding:"2px 0",background:I===h?E.accent:E.pillBg,border:"none",borderRadius:3,color:I===h?"#fff":E.textMuted,fontSize:9,fontWeight:600,fontFamily:E.font,cursor:"pointer",textTransform:"capitalize"},children:h},h))})]}),T.jsx("button",{onClick:w,disabled:o.size===0||_,style:{width:"100%",padding:"5px 12px",background:o.size===0?E.pillBg:E.accent,color:o.size===0?E.textMuted:"#fff",border:"none",borderRadius:5,cursor:o.size===0?"not-allowed":"pointer",fontSize:11,fontWeight:600,fontFamily:E.font,opacity:_?.7:1},children:_?"Composing...":`Compose SQL (${o.size} metric${o.size!==1?"s":""})`}),D&&T.jsx("div",{style:{marginTop:6,padding:"4px 8px",background:"#f8514922",border:"1px solid #f8514944",borderRadius:4,fontSize:10,color:"#f85149"},children:D}),c&&T.jsxs("div",{style:{marginTop:8},children:[T.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:4},children:[T.jsx("span",{style:{fontSize:10,fontWeight:600,color:E.textSecondary,textTransform:"uppercase",letterSpacing:"0.04em"},children:"Generated SQL"}),T.jsxs("div",{style:{display:"flex",gap:4},children:[n&&T.jsx("button",{onClick:()=>c&&n(c),style:{background:E.accent,border:"none",borderRadius:3,color:"#fff",cursor:"pointer",fontSize:9,fontWeight:600,fontFamily:E.font,padding:"2px 8px"},children:"+ Insert as Cell"}),T.jsx("button",{onClick:b,style:{background:"transparent",border:`1px solid ${E.cellBorder}`,borderRadius:3,color:G?"#56d364":E.textMuted,cursor:"pointer",fontSize:9,fontFamily:E.font,padding:"1px 6px"},children:G?"Copied!":"Copy"})]})]}),T.jsx("pre",{style:{margin:0,padding:"6px 8px",background:E.editorBg,border:`1px solid ${E.cellBorder}`,borderRadius:4,fontFamily:E.fontMono,fontSize:10,color:E.textSecondary,lineHeight:1.5,whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:200,overflowY:"auto"},children:c})]})]})]})}const sn=["sum","count","count_distinct","avg","min","max"];function on({t:E,onClose:e,onCreated:t}){const[n,r]=l.useState(""),[s,o]=l.useState(""),[R,S]=l.useState(""),[a,i]=l.useState("sum"),[A,I]=l.useState(""),[O,c]=l.useState(""),[d,D]=l.useState(""),[u,_]=l.useState(!1),[m,G]=l.useState(null),x={width:"100%",padding:"4px 7px",background:E.editorBg,border:`1px solid ${E.cellBorder}`,borderRadius:4,color:E.textPrimary,fontSize:11,fontFamily:E.fontMono,outline:"none",boxSizing:"border-box"},P={fontSize:10,fontWeight:600,color:E.textSecondary,fontFamily:E.font,letterSpacing:"0.04em",textTransform:"uppercase",display:"block",marginBottom:3,marginTop:8},y=async()=>{if(!n.trim()||!R.trim()||!A.trim()){G("Name, SQL expression, and table are required.");return}_(!0),G(null);const B=await Y.createMetric({name:n.trim(),label:s.trim()||n.trim(),description:d.trim(),domain:O.trim()||"general",sql:R.trim(),type:a,table:A.trim()});_(!1),B.ok?(t(),e()):G(B.error??"Unknown error")};return T.jsxs("div",{style:{position:"absolute",inset:0,zIndex:100,background:`${E.sidebarBg}f0`,display:"flex",flexDirection:"column",padding:"12px 14px",overflowY:"auto"},children:[T.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:10},children:[T.jsx("span",{style:{fontSize:12,fontWeight:600,color:E.textPrimary,fontFamily:E.font},children:"New Metric"}),T.jsx("button",{onClick:e,style:{background:"transparent",border:"none",cursor:"pointer",color:E.textMuted,fontSize:16,fontFamily:E.font,padding:"0 2px"},children:"×"})]}),T.jsx("span",{style:P,children:"Name *"}),T.jsx("input",{style:x,value:n,onChange:B=>r(B.target.value),placeholder:"total_revenue"}),T.jsx("span",{style:P,children:"Label"}),T.jsx("input",{style:x,value:s,onChange:B=>o(B.target.value),placeholder:"Total Revenue"}),T.jsx("span",{style:P,children:"SQL Expression *"}),T.jsx("input",{style:x,value:R,onChange:B=>S(B.target.value),placeholder:"SUM(amount)"}),T.jsx("span",{style:P,children:"Aggregation Type *"}),T.jsx("select",{value:a,onChange:B=>i(B.target.value),style:{...x,cursor:"pointer"},children:sn.map(B=>T.jsx("option",{value:B,children:B},B))}),T.jsx("span",{style:P,children:"Table / Source *"}),T.jsx("input",{style:x,value:A,onChange:B=>I(B.target.value),placeholder:"fct_revenue or read_csv_auto('data/revenue.csv')"}),T.jsx("span",{style:P,children:"Domain"}),T.jsx("input",{style:x,value:O,onChange:B=>c(B.target.value),placeholder:"finance"}),T.jsx("span",{style:P,children:"Description"}),T.jsx("input",{style:x,value:d,onChange:B=>D(B.target.value),placeholder:"Sum of all recognized revenue"}),m&&T.jsx("div",{style:{marginTop:8,padding:"4px 8px",background:"#f8514922",border:"1px solid #f8514944",borderRadius:4,fontSize:10,color:"#f85149"},children:m}),T.jsxs("div",{style:{display:"flex",gap:6,marginTop:12},children:[T.jsx("button",{onClick:y,disabled:u,style:{flex:1,padding:"5px 0",background:E.accent,color:"#fff",border:"none",borderRadius:5,fontSize:11,fontWeight:600,fontFamily:E.font,cursor:u?"not-allowed":"pointer",opacity:u?.7:1},children:u?"Creating...":"Create Metric"}),T.jsx("button",{onClick:e,style:{padding:"5px 12px",background:"transparent",border:`1px solid ${E.cellBorder}`,borderRadius:5,fontSize:11,fontFamily:E.font,color:E.textMuted,cursor:"pointer"},children:"Cancel"})]}),T.jsxs("div",{style:{marginTop:10,fontSize:10,color:E.textMuted,fontFamily:E.font,lineHeight:1.5},children:["Creates ",T.jsxs("code",{style:{fontFamily:E.fontMono},children:["semantic-layer/metrics/","{name}",".yaml"]})," and reloads the panel automatically."]})]})}function Rn(){const{state:E,dispatch:e}=F(),t=H[E.themeMode],[n,r]=l.useState(""),[s,o]=l.useState(!1),[R,S]=l.useState(!1),[a,i]=l.useState({metrics:!0,dimensions:!0,hierarchies:!1}),A=E.semanticLayer,I=async()=>{e({type:"SET_SEMANTIC_LOADING",loading:!0});try{const P=await Y.getSemanticLayer();e({type:"SET_SEMANTIC_LAYER",layer:P})}catch(P){console.error("Semantic layer refresh failed:",P)}finally{e({type:"SET_SEMANTIC_LOADING",loading:!1})}};l.useEffect(()=>{A.metrics.length===0&&!A.loading&&I()},[]);const O=n.toLowerCase(),c=l.useMemo(()=>O?A.metrics.filter(P=>P.name.toLowerCase().includes(O)||P.label.toLowerCase().includes(O)||P.description.toLowerCase().includes(O)||P.tags.some(y=>y.toLowerCase().includes(O))):A.metrics,[A.metrics,O]),d=l.useMemo(()=>O?A.dimensions.filter(P=>P.name.toLowerCase().includes(O)||P.label.toLowerCase().includes(O)||P.description.toLowerCase().includes(O)):A.dimensions,[A.dimensions,O]),D=l.useMemo(()=>O?A.hierarchies.filter(P=>P.name.toLowerCase().includes(O)||P.label.toLowerCase().includes(O)):A.hierarchies,[A.hierarchies,O]),u=P=>{i(y=>({...y,[P]:!y[P]}))},_={background:t.pillBg,padding:"1px 4px",borderRadius:3,fontSize:10,fontFamily:t.fontMono},m={fontSize:11,fontWeight:600,color:t.textPrimary,fontFamily:t.font,marginBottom:4},G={fontSize:11,color:t.textMuted,fontFamily:t.font,lineHeight:1.6,marginBottom:2},x={margin:"4px 0 0",padding:"6px 8px",background:t.editorBg,border:`1px solid ${t.cellBorder}`,borderRadius:4,fontFamily:t.fontMono,fontSize:10,color:t.textSecondary,lineHeight:1.5,whiteSpace:"pre",overflowX:"auto"};return!A.available&&!A.loading?T.jsxs("div",{style:{flex:1,overflowY:"auto",padding:"12px 14px",fontFamily:t.font},children:[T.jsxs("div",{style:{textAlign:"center",marginBottom:14},children:[T.jsx("svg",{width:"28",height:"28",viewBox:"0 0 16 16",fill:t.accent,style:{opacity:.7},children:T.jsx("path",{d:"M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm6.5-2a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0Zm-2 4.5a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0Zm5 0a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0Z"})}),T.jsx("div",{style:{fontSize:12,fontWeight:600,color:t.textPrimary,marginTop:6},children:"Set Up Semantic Layer"}),T.jsx("div",{style:{fontSize:11,color:t.textMuted,marginTop:2,lineHeight:1.5},children:"Choose a provider below, then click Retry."})]}),T.jsxs("div",{style:{marginBottom:12},children:[T.jsx("div",{style:m,children:"Step 1: Pick a provider"}),T.jsxs("div",{style:G,children:["Add ",T.jsx("code",{style:_,children:"semanticLayer"})," to your ",T.jsx("code",{style:_,children:"dql.config.json"}),":"]}),T.jsx("div",{style:{fontSize:10,fontWeight:600,color:t.accent,marginTop:8,letterSpacing:"0.03em"},children:"A) DQL Native — write YAML files directly"}),T.jsx("pre",{style:x,children:`"semanticLayer": {
217
+ "provider": "dql"
218
+ }`}),T.jsx("div",{style:{fontSize:10,fontWeight:600,color:t.accent,marginTop:8,letterSpacing:"0.03em"},children:"B) dbt — point to your dbt project"}),T.jsx("pre",{style:x,children:`"semanticLayer": {
219
+ "provider": "dbt",
220
+ "projectPath": "/path/to/dbt-project"
221
+ }`}),T.jsx("div",{style:{fontSize:10,fontWeight:600,color:t.accent,marginTop:8,letterSpacing:"0.03em"},children:"C) Cube.js — point to your Cube project"}),T.jsx("pre",{style:x,children:`"semanticLayer": {
222
+ "provider": "cubejs",
223
+ "projectPath": "/path/to/cube-project"
224
+ }`}),T.jsx("div",{style:{fontSize:10,fontWeight:600,color:t.accent,marginTop:8,letterSpacing:"0.03em"},children:"D) Snowflake — introspects Snowflake semantic views"}),T.jsx("pre",{style:x,children:`"semanticLayer": {
225
+ "provider": "snowflake",
226
+ "projectPath": "MY_DATABASE"
227
+ }`}),T.jsxs("div",{style:{fontSize:10,color:t.textMuted,fontFamily:t.font,marginTop:3,lineHeight:1.5},children:["Requires a Snowflake ",T.jsx("code",{style:{fontFamily:t.fontMono,fontSize:9},children:"defaultConnection"}),". DQL introspects semantic views automatically."]})]}),T.jsxs("div",{style:{marginBottom:12},children:[T.jsx("div",{style:m,children:"Step 2: Add definitions (DQL native only)"}),T.jsx("div",{style:G,children:"Create YAML files in your project:"}),T.jsx("pre",{style:x,children:`semantic-layer/
228
+ metrics/total_revenue.yaml
229
+ dimensions/segment.yaml
230
+ hierarchies/time.yaml (optional)
231
+ cubes/revenue_cube.yaml (optional)`}),T.jsx("div",{style:{...G,marginTop:6},children:"Minimal metric example:"}),T.jsx("pre",{style:x,children:`name: total_revenue
232
+ label: Total Revenue
233
+ sql: SUM(amount)
234
+ type: sum
235
+ table: fct_revenue`})]}),T.jsxs("div",{style:{marginBottom:14},children:[T.jsx("div",{style:m,children:"Step 3: Restart & refresh"}),T.jsxs("div",{style:G,children:["Restart ",T.jsx("code",{style:_,children:"dql notebook"}),", then click Retry below."]})]}),T.jsxs("div",{style:{display:"flex",gap:8,justifyContent:"center"},children:[T.jsx("button",{onClick:I,style:{background:t.accent,border:"none",borderRadius:6,color:"#fff",cursor:"pointer",fontSize:11,fontWeight:600,fontFamily:t.font,padding:"6px 16px"},children:"Retry"}),T.jsx("button",{onClick:()=>e({type:"SET_SIDEBAR_PANEL",panel:"reference"}),style:{background:"transparent",border:`1px solid ${t.cellBorder}`,borderRadius:6,color:t.textSecondary,cursor:"pointer",fontSize:11,fontFamily:t.font,padding:"6px 12px"},children:"Full Reference"})]})]}):T.jsxs("div",{style:{flex:1,overflow:"auto",display:"flex",flexDirection:"column",position:"relative"},children:[R&&T.jsx(on,{t,onClose:()=>S(!1),onCreated:()=>I()}),T.jsxs("div",{style:{padding:"8px 10px",display:"flex",alignItems:"center",gap:6,borderBottom:`1px solid ${t.headerBorder}`},children:[A.provider&&T.jsx("span",{style:{fontSize:9,fontWeight:600,color:t.accent,background:`${t.accent}18`,borderRadius:4,padding:"1px 5px",textTransform:"uppercase",letterSpacing:"0.04em"},children:A.provider}),T.jsxs("span",{style:{flex:1,fontSize:11,color:t.textMuted,fontFamily:t.font},children:[A.metrics.length," metrics"]}),T.jsx("button",{onClick:()=>S(!0),title:"Create a new metric YAML file",style:{background:t.accent,border:"none",borderRadius:4,color:"#fff",cursor:"pointer",fontSize:10,fontWeight:600,fontFamily:t.font,padding:"2px 8px"},children:"+ New"}),T.jsx("button",{onClick:I,onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),title:"Refresh semantic layer",style:{background:s?t.btnHover:"transparent",border:`1px solid ${s?t.btnBorder:"transparent"}`,borderRadius:4,cursor:"pointer",color:s?t.textSecondary:t.textMuted,fontSize:11,fontFamily:t.font,padding:"2px 6px",display:"flex",alignItems:"center",gap:4,transition:"all 0.15s"},children:T.jsx("svg",{width:"11",height:"11",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M1.705 8.005a.75.75 0 0 1 .834.656 5.5 5.5 0 0 0 9.592 2.97l-1.204-1.204a.25.25 0 0 1 .177-.427h3.646a.25.25 0 0 1 .25.25v3.646a.25.25 0 0 1-.427.177l-1.38-1.38A7.002 7.002 0 0 1 1.05 8.84a.75.75 0 0 1 .656-.834ZM8 2.5a5.487 5.487 0 0 0-4.131 1.869l1.204 1.204A.25.25 0 0 1 4.896 6H1.25A.25.25 0 0 1 1 5.75V2.104a.25.25 0 0 1 .427-.177l1.38 1.38A7.002 7.002 0 0 1 14.95 7.16a.75.75 0 0 1-1.49.178A5.5 5.5 0 0 0 8 2.5Z"})})})]}),T.jsx(nn,{t,metrics:A.metrics,dimensions:A.dimensions,onInsertCell:P=>{const y=Z("sql",P);e({type:"ADD_CELL",cell:y})}}),T.jsx("div",{style:{padding:"6px 8px",borderBottom:`1px solid ${t.headerBorder}`},children:T.jsx("input",{type:"text",placeholder:"Search metrics, dimensions...",value:n,onChange:P=>r(P.target.value),style:{width:"100%",padding:"4px 8px",background:t.cellBg,border:`1px solid ${t.cellBorder}`,borderRadius:4,color:t.textPrimary,fontSize:11,fontFamily:t.font,outline:"none"}})}),A.loading?T.jsxs("div",{style:{padding:"8px 12px",display:"flex",flexDirection:"column",gap:8},children:[[1,2,3].map(P=>T.jsx("div",{style:{height:28,borderRadius:4,background:t.pillBg,opacity:.6,animation:"pulse 1.5s ease-in-out infinite"}},P)),T.jsx("style",{children:"@keyframes pulse { 0%,100%{opacity:.6} 50%{opacity:.3} }"})]}):T.jsxs("div",{style:{overflow:"auto",flex:1},children:[T.jsx(ke,{label:"Metrics",count:c.length,expanded:a.metrics,onToggle:()=>u("metrics"),t}),a.metrics&&T.jsx("div",{children:c.length===0?T.jsx("div",{style:{padding:"4px 14px 4px 32px",fontSize:12,color:t.textMuted,fontFamily:t.font,fontStyle:"italic"},children:O?"No matching metrics":"No metrics defined"}):c.map(P=>T.jsx(En,{metric:P,t},P.name))}),T.jsx(ke,{label:"Dimensions",count:d.length,expanded:a.dimensions,onToggle:()=>u("dimensions"),t}),a.dimensions&&T.jsx("div",{children:d.length===0?T.jsx("div",{style:{padding:"4px 14px 4px 32px",fontSize:12,color:t.textMuted,fontFamily:t.font,fontStyle:"italic"},children:O?"No matching dimensions":"No dimensions defined"}):d.map(P=>T.jsx(tn,{dimension:P,t},P.name))}),A.hierarchies.length>0&&T.jsxs(T.Fragment,{children:[T.jsx(ke,{label:"Hierarchies",count:D.length,expanded:a.hierarchies,onToggle:()=>u("hierarchies"),t}),a.hierarchies&&T.jsx("div",{children:D.map(P=>T.jsx(Tn,{hierarchy:P,t},P.name))})]})]})]})}const Xt={source_table:"#8b949e",block:"#56d364",metric:"#388bfd",dimension:"#e3b341",domain:"#d2a8ff",chart:"#f778ba"},An={certified:{label:"CERTIFIED",color:"#56d364"},draft:{label:"DRAFT",color:"#8b949e"},review:{label:"REVIEW",color:"#e3b341"},deprecated:{label:"DEPRECATED",color:"#f85149"},pending_recertification:{label:"PENDING",color:"#d29922"}};function wt({type:E}){const e=Xt[E]??"#8b949e";return T.jsx("span",{style:{color:e,fontSize:10,fontWeight:600,textTransform:"uppercase",marginRight:4},children:E==="source_table"?"TBL":E==="block"?"BLK":E==="metric"?"MET":E==="dimension"?"DIM":E==="chart"?"CHT":E.slice(0,3).toUpperCase()})}function an({status:E}){if(!E)return null;const e=An[E];return e?T.jsx("span",{style:{fontSize:9,fontWeight:600,color:e.color,border:`1px solid ${e.color}`,borderRadius:3,padding:"0 3px",marginLeft:4},children:e.label}):null}function me({label:E,count:e,expanded:t,onToggle:n,t:r}){const[s,o]=l.useState(!1);return T.jsxs("button",{onClick:n,onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),style:{width:"100%",display:"flex",alignItems:"center",gap:4,padding:"6px 8px",background:s?r.sidebarItemHover:"transparent",border:"none",cursor:"pointer",color:r.textPrimary,fontSize:11,fontWeight:600,textTransform:"uppercase",letterSpacing:"0.5px",textAlign:"left"},children:[T.jsx("span",{style:{fontSize:10},children:t?"▼":"▶"}),T.jsx("span",{style:{flex:1},children:E}),T.jsx("span",{style:{color:r.textMuted,fontWeight:400},children:e})]})}function Ce({node:E,t:e,onClick:t}){const[n,r]=l.useState(!1);return T.jsxs("div",{onClick:t,onMouseEnter:()=>r(!0),onMouseLeave:()=>r(!1),style:{padding:"3px 8px 3px 20px",cursor:t?"pointer":"default",background:n?e.sidebarItemHover:"transparent",display:"flex",alignItems:"center",gap:2,fontSize:12,color:e.textPrimary},children:[T.jsx(wt,{type:E.type}),T.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:E.name}),T.jsx(an,{status:E.status})]})}function Sn(){const{state:E}=F(),e=H[E.themeMode],[t,n]=l.useState(!0),[r,s]=l.useState([]),[o,R]=l.useState([]),[S,a]=l.useState(null),[i,A]=l.useState(null),[I,O]=l.useState(!0),[c,d]=l.useState(!0),[D,u]=l.useState(!0),[_,m]=l.useState(!0),G=l.useCallback(async()=>{n(!0);const M=await Y.fetchLineage();s(M.nodes),R(M.edges),n(!1)},[]);l.useEffect(()=>{G()},[G]);const x=l.useCallback(async M=>{if(S===M){a(null),A(null);return}a(M);const h=await Y.fetchBlockLineage(M);h&&A({ancestors:h.ancestors,descendants:h.descendants})},[S]),P=r.filter(M=>M.type==="block"),y=r.filter(M=>M.type==="metric"),B=r.filter(M=>M.type==="source_table"),w=[...new Set(r.map(M=>M.domain).filter(Boolean))],b=o.filter(M=>M.type==="crosses_domain");return t?T.jsx("div",{style:{padding:16,color:e.textMuted,fontSize:12},children:"Loading lineage..."}):r.length===0?T.jsx("div",{style:{padding:16,color:e.textMuted,fontSize:12},children:"No lineage data found. Add blocks and semantic layer definitions to see the lineage graph."}):T.jsxs("div",{style:{overflow:"auto",flex:1,fontSize:12},children:[T.jsxs("div",{style:{padding:"8px 8px",borderBottom:`1px solid ${e.headerBorder}`,display:"flex",gap:8,flexWrap:"wrap",fontSize:11,color:e.textMuted},children:[T.jsxs("span",{children:[P.length," blocks"]}),T.jsxs("span",{children:[y.length," metrics"]}),T.jsxs("span",{children:[B.length," tables"]}),b.length>0&&T.jsxs("span",{style:{color:"#d2a8ff"},children:[b.length," cross-domain"]})]}),S&&i&&T.jsxs("div",{style:{padding:8,borderBottom:`1px solid ${e.headerBorder}`},children:[T.jsxs("div",{style:{fontWeight:600,color:e.textPrimary,marginBottom:4,display:"flex",alignItems:"center",gap:4},children:[T.jsx(wt,{type:"block"}),S,T.jsx("button",{onClick:()=>{a(null),A(null)},style:{marginLeft:"auto",background:"transparent",border:"none",color:e.textMuted,cursor:"pointer",fontSize:14},children:"×"})]}),i.ancestors.length>0&&T.jsxs("div",{style:{marginTop:4},children:[T.jsxs("div",{style:{color:e.textMuted,fontSize:10,fontWeight:600,textTransform:"uppercase",marginBottom:2},children:["Upstream (",i.ancestors.length,")"]}),i.ancestors.map(M=>T.jsx(Ce,{node:M,t:e},M.id))]}),i.descendants.length>0&&T.jsxs("div",{style:{marginTop:4},children:[T.jsxs("div",{style:{color:e.textMuted,fontSize:10,fontWeight:600,textTransform:"uppercase",marginBottom:2},children:["Downstream (",i.descendants.length,")"]}),i.descendants.map(M=>T.jsx(Ce,{node:M,t:e},M.id))]})]}),T.jsx(me,{label:"Blocks",count:P.length,expanded:I,onToggle:()=>O(!I),t:e}),I&&P.map(M=>T.jsx(Ce,{node:M,t:e,onClick:()=>x(M.name)},M.id)),T.jsx(me,{label:"Metrics",count:y.length,expanded:c,onToggle:()=>d(!c),t:e}),c&&y.map(M=>T.jsx(Ce,{node:M,t:e},M.id)),T.jsx(me,{label:"Source Tables",count:B.length,expanded:D,onToggle:()=>u(!D),t:e}),D&&B.map(M=>T.jsx(Ce,{node:M,t:e},M.id)),T.jsx(me,{label:"Domains",count:w.length,expanded:_,onToggle:()=>m(!_),t:e}),_&&w.map(M=>{const h=P.filter(K=>K.domain===M),g=h.filter(K=>K.status==="certified").length,p=h.length>0?Math.round(g/h.length*100):0;return T.jsxs("div",{style:{padding:"3px 8px 3px 20px",fontSize:12,color:e.textPrimary,display:"flex",gap:4,alignItems:"center"},children:[T.jsx("span",{style:{color:Xt.domain,fontSize:10,fontWeight:600},children:"DOM"}),T.jsx("span",{style:{flex:1},children:M}),T.jsxs("span",{style:{color:e.textMuted,fontSize:10},children:[g,"/",h.length," (",p,"%)"]})]},M)}),b.length>0&&T.jsxs(T.Fragment,{children:[T.jsx("div",{style:{padding:"6px 8px",fontSize:11,fontWeight:600,textTransform:"uppercase",letterSpacing:"0.5px",color:e.textPrimary},children:"Cross-Domain Flows"}),b.map((M,h)=>T.jsxs("div",{style:{padding:"2px 8px 2px 20px",fontSize:11,color:e.textMuted},children:[M.sourceDomain," → ",M.targetDomain]},h))]})]})}const In={files:"Explorer",schema:"Schema",semantic:"Semantic Layer",lineage:"Lineage",outline:"Outline",connection:"Connection",reference:"Quick Reference"};function On({onOpenFile:E,onNavigateToCell:e}){const{state:t,dispatch:n}=F(),r=H[t.themeMode],[s,o]=l.useState(!1),R=t.sidebarPanel;return T.jsxs("div",{style:{width:240,flexShrink:0,background:r.sidebarBg,borderRight:`1px solid ${r.headerBorder}`,display:"flex",flexDirection:"column",overflow:"hidden"},children:[T.jsxs("div",{style:{height:36,flexShrink:0,display:"flex",alignItems:"center",justifyContent:"space-between",padding:"0 10px 0 14px",borderBottom:`1px solid ${r.headerBorder}`},children:[T.jsx("span",{style:{fontSize:11,fontWeight:600,letterSpacing:"0.06em",textTransform:"uppercase",color:r.textSecondary,fontFamily:r.font},children:In[R??""]??""}),T.jsx("button",{title:"Collapse sidebar",onClick:()=>n({type:"TOGGLE_SIDEBAR"}),onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),style:{background:"transparent",border:"none",cursor:"pointer",color:s?r.textPrimary:r.textMuted,padding:"2px 4px",borderRadius:4,fontSize:14,lineHeight:1,transition:"color 0.15s",display:"flex",alignItems:"center"},children:"‹"})]}),T.jsxs("div",{style:{flex:1,overflow:"hidden",display:"flex",flexDirection:"column"},children:[R==="files"&&T.jsx(dr,{onOpenFile:E}),R==="schema"&&T.jsx(Mr,{}),R==="semantic"&&T.jsx(Rn,{}),R==="lineage"&&T.jsx(Sn,{}),R==="outline"&&T.jsx(xr,{onNavigate:e}),R==="connection"&&T.jsx(Br,{}),R==="reference"&&T.jsx(Zr,{themeMode:t.themeMode})]})]})}function ln(E){try{const e=E.match(/workbook\s+"([^"]+)"/i),t=e?e[1]:"Untitled Workbook",n=[],r=/page\s+"([^"]+)"\s*\{([\s\S]*?)\}/gi;let s;for(;(s=r.exec(E))!==null;){const o=s[1],R=s[2].trim();n.push({id:Te(),type:"markdown",content:`# ${o}`,status:"idle"}),R&&n.push({id:Te(),type:"dql",name:o.toLowerCase().replace(/\s+/g,"_"),content:R,status:"idle"})}return n.length===0&&n.push({id:Te(),type:"dql",content:E.trim(),status:"idle"}),{title:t,cells:n}}catch{return{title:"Untitled Workbook",cells:[{id:Te(),type:"dql",content:E.trim(),status:"idle"}]}}}function Nn(E){var e;try{const t=JSON.parse(E),n=t.title||((e=t.metadata)==null?void 0:e.title)||"Untitled",r=(t.cells||[]).map(s=>({id:s.id||Te(),type:s.type||"sql",content:s.content??s.source??"",name:s.name||s.title,status:"idle",...s.paramConfig?{paramConfig:s.paramConfig}:{},...s.paramValue!==void 0?{paramValue:s.paramValue}:{},...s.chartConfig?{chartConfig:s.chartConfig}:{}}));return{title:n,cells:r}}catch{return{title:"Untitled",cells:[{id:Te(),type:"sql",content:E,status:"idle"}]}}}function cn(E,e,t){const n={version:1,title:E,metadata:{...t,modifiedAt:new Date().toISOString(),createdAt:new Date().toISOString()},cells:e.map(r=>({id:r.id,type:r.type,content:r.content,...r.name?{name:r.name}:{},...r.paramConfig?{paramConfig:r.paramConfig}:{},...r.paramValue!==void 0?{paramValue:r.paramValue}:{},...r.chartConfig?{chartConfig:r.chartConfig}:{}}))};return JSON.stringify(n,null,2)}function Ln(E,e){return E.endsWith(".dql")?ln(e):Nn(e)}function Cn(E,e){if(!e.columns.length||!e.rows.length)return`${E} AS (SELECT 1 WHERE 1=0)`;const t=e.columns,r=e.rows.slice(0,5e3).map(o=>`(${t.map(S=>{const a=o[S];return a==null?"NULL":typeof a=="number"?String(a):typeof a=="boolean"?a?"TRUE":"FALSE":`'${String(a).replace(/'/g,"''")}'`}).join(", ")})`).join(`,
236
+ `),s=t.map(o=>`"${o.replace(/"/g,'""')}"`).join(", ");return`${E} AS (
237
+ SELECT * FROM (VALUES
238
+ ${r}
239
+ ) AS _t(${s})
240
+ )`}function dn(E,e){if(e==="number"){const t=Number(E);return isNaN(t)?`'${E.replace(/'/g,"''")}'`:String(t)}return`'${E.replace(/'/g,"''")}'`}function _n(){const{state:E}=F();return{substituteVariables:l.useCallback(t=>{var i;const n=/\{\{([a-zA-Z_][a-zA-Z0-9_]*)\}\}/g,r=[...t.matchAll(n)];if(r.length===0)return{sql:t,substituted:[]};const s=[],o=[];let R=t;const S=new Map,a=new Map;for(const A of E.cells){const I=(i=A.name)==null?void 0:i.trim();I&&(A.type==="param"?S.set(I,A):A.status==="success"&&A.result&&a.set(I,A.result))}for(const A of r){const I=A[1];if(S.has(I)){const O=S.get(I),c=O.paramConfig,d=O.paramValue??(c==null?void 0:c.defaultValue)??"",D=(c==null?void 0:c.paramType)??"text",u=dn(d,D);R=R.replace(A[0],u),s.push(I)}else a.has(I)&&(o.push(Cn(I,a.get(I))),R=R.replace(A[0],`"${I}"`),s.push(I))}if(o.length===0&&s.length===0)return{sql:t,substituted:[]};if(o.length>0){const A=R.trimStart();/^WITH\s+/i.test(A)?R=R.replace(/^(\s*WITH\s+)/i,`$1${o.join(`,
241
+ `)},
242
+ `):R=`WITH ${o.join(`,
243
+ `)}
244
+ ${R}`}return{sql:R,substituted:s}},[E.cells])}}function Dn(E){const e=E.match(/visualization\s*\{([^}]+)\}/is);if(!e)return;const t=e[1],n=s=>{var o;return(o=t.match(new RegExp(`\\b${s}\\s*=\\s*["']?([\\w-]+)["']?`,"i")))==null?void 0:o[1]},r=n("chart");if(r)return{chart:r,x:n("x"),y:n("y"),color:n("color"),title:n("title")}}function un(E){if(E.type==="markdown"||E.type==="param")return null;if(E.type==="sql")return E.content.trim()||null;const e=E.content.trim();return e?pn(e):null}function pn(E){const e=E.match(/query\s*=\s*"""([\s\S]*?)"""/i);if(e)return e[1].trim()||null;const t=E.match(/"""([\s\S]*?)"""/);if(t)return t[1].trim()||null;if(/^\s*(dashboard|workbook)\s+"/i.test(E))return null;const n=E.match(/\b(SELECT|WITH|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER|SHOW|DESCRIBE|EXPLAIN)\b([\s\S]*)/i);if(n){let r=n[0];const s=r.search(/\b(visualization|tests|block)\s*\{/i);return s>0&&(r=r.slice(0,s)),r=Pn(r),r.trim()||null}return null}function Pn(E){let e=0;for(let t=0;t<E.length;t++){const n=E[t];if(n==="("){e++;continue}if(n===")"){e>0&&e--;continue}if(n==="'"||n==='"'){for(t++;t<E.length&&E[t]!==n;)E[t]==="\\"&&t++,t++;continue}if(n===","&&e===0){let r=t+1;for(;r<E.length&&/\s/.test(E[r]);)r++;if(r<E.length&&/[a-zA-Z_]/.test(E[r])){for(;r<E.length&&/[a-zA-Z0-9_]/.test(E[r]);)r++;let s=r;for(;s<E.length&&/\s/.test(E[s]);)s++;if(s<E.length&&E[s]==="="&&E[s+1]!=="=")return E.slice(0,t)}}}return E}function xE(){const{state:E,dispatch:e}=F(),{substituteVariables:t}=_n(),n=l.useCallback(async o=>{const R=E.cells.find(A=>A.id===o);if(!R)return;const S=un(R);if(!S)return;if(R.type==="dql"){const A=Dn(R.content);A&&JSON.stringify(A)!==JSON.stringify(R.chartConfig)&&e({type:"UPDATE_CELL",id:o,updates:{chartConfig:A}})}const{sql:a}=t(S),i=Date.now();e({type:"UPDATE_CELL",id:o,updates:{status:"running",error:void 0,result:void 0}});try{const A=await Y.executeQuery(a),I=Date.now()-i,O=(R.executionCount??0)+1;e({type:"UPDATE_CELL",id:o,updates:{status:"success",result:{...A,executionTime:A.executionTime??I,rowCount:A.rowCount??A.rows.length},executionCount:O}}),e({type:"APPEND_QUERY_LOG",entry:{id:Te(),cellName:R.name??R.id,rows:A.rowCount??A.rows.length,time:A.executionTime??I,ts:new Date}}),setTimeout(()=>{e({type:"UPDATE_CELL",id:o,updates:{status:"idle"}})},2e3)}catch(A){const I=Date.now()-i,O=A instanceof Error?A.message:String(A);e({type:"UPDATE_CELL",id:o,updates:{status:"error",error:O,executionCount:(R.executionCount??0)+1}}),e({type:"APPEND_QUERY_LOG",entry:{id:Te(),cellName:R.name??R.id,rows:0,time:I,ts:new Date,error:O}})}},[E.cells,e]),r=l.useCallback(async()=>{for(const o of E.cells)o.type!=="markdown"&&await n(o.id)},[E.cells,n]),s=l.useCallback(async o=>{if(!o)return;const R=`{{${o}}}`;for(const S of E.cells)S.type==="markdown"||S.type==="param"||S.content.includes(R)&&await n(S.id)},[E.cells,n]);return{executeCell:n,executeAll:r,executeDependents:s}}function k(E){return E.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Mn(E){return typeof E=="number"?Math.abs(E)>=1e6?`${(E/1e6).toFixed(1)}M`:Math.abs(E)>=1e3?`${(E/1e3).toFixed(1)}K`:Number.isInteger(E)?String(E):E.toFixed(2):""}function hn(E){const e=E.split(`
245
+ `),t=[];let n=!1,r=!1;for(const s of e){const o=s;if(o.startsWith("```")){r&&(t.push("</ul>"),r=!1),n?(t.push("</code></pre>"),n=!1):(t.push("<pre><code>"),n=!0);continue}if(n){t.push(k(o));continue}if(o.startsWith("### ")){r&&(t.push("</ul>"),r=!1),t.push(`<h3>${k(o.slice(4))}</h3>`);continue}if(o.startsWith("## ")){r&&(t.push("</ul>"),r=!1),t.push(`<h2>${k(o.slice(3))}</h2>`);continue}if(o.startsWith("# ")){r&&(t.push("</ul>"),r=!1),t.push(`<h1>${k(o.slice(2))}</h1>`);continue}if(o.startsWith("> ")){r&&(t.push("</ul>"),r=!1),t.push(`<blockquote><p>${k(o.slice(2))}</p></blockquote>`);continue}if(o.startsWith("- ")||o.startsWith("* ")){r||(t.push("<ul>"),r=!0),t.push(`<li>${wE(o.slice(2))}</li>`);continue}if(r&&(t.push("</ul>"),r=!1),o.trim()===""){t.push("<br>");continue}t.push(`<p>${wE(o)}</p>`)}return r&&t.push("</ul>"),n&&t.push("</code></pre>"),t.join(`
246
+ `)}function wE(E){return k(E).replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>").replace(/\*(.+?)\*/g,"<em>$1</em>").replace(/`(.+?)`/g,"<code>$1</code>")}function fn(E){const{columns:e,rows:t}=E,n=t.slice(0,200),r=t.length>200,s=e.map(R=>`<th>${k(R)}</th>`).join(""),o=n.map(R=>`<tr>${e.map(a=>{const i=R[a],A=typeof i=="number",I=i==null?"—":String(i);return`<td${A?' class="num"':""}>${k(I)}</td>`}).join("")}</tr>`).join("");return`
247
+ <div class="table-wrap">
248
+ <table>
249
+ <thead><tr>${s}</tr></thead>
250
+ <tbody>${o}</tbody>
251
+ </table>
252
+ ${r?`<p class="truncated">Showing first 200 of ${t.length.toLocaleString()} rows</p>`:""}
253
+ </div>`}function mn(E){const{columns:e,rows:t}=E;if(e.length<2||t.length===0)return null;const n=e.find(s=>typeof t[0][s]=="number"),r=e.find(s=>s!==n);return!n||!r?null:{labelCol:r,valueCol:n}}function Un(E){const e=mn(E);if(!e)return null;const t=E.rows.slice(0,20).map(i=>({label:String(i[e.labelCol]??""),value:Number(i[e.valueCol]??0)})),n=Math.max(...t.map(i=>i.value),1),r=28,s=6,o=140,R=440,S=t.length*(r+s)+40,a=t.map((i,A)=>{const I=A*(r+s)+20,O=Math.max(i.value/n*R,2);return`
254
+ <text x="${o-6}" y="${I+r/2+4}" text-anchor="end" font-size="11" fill="#8b949e">${k(i.label.slice(0,20))}</text>
255
+ <rect x="${o}" y="${I}" width="${O}" height="${r}" rx="3" fill="#388bfd" />
256
+ <text x="${o+O+5}" y="${I+r/2+4}" font-size="11" fill="#e6edf3">${Mn(i.value)}</text>`}).join("");return`<svg xmlns="http://www.w3.org/2000/svg" width="${o+R+80}" height="${S}" style="max-width:100%">${a}</svg>`}function xn(E,e){const t=e.map(n=>{if(n.type==="markdown")return`<section class="cell md-cell">${hn(n.content)}</section>`;const r=n.name?`<div class="cell-header"><span class="cell-type">${n.type.toUpperCase()}</span><span class="cell-name">${k(n.name)}</span></div>`:`<div class="cell-header"><span class="cell-type">${n.type.toUpperCase()}</span></div>`,s=`<pre class="cell-code"><code>${k(n.content)}</code></pre>`;let o="";if(n.result&&n.result.rows.length>0){const R=Un(n.result),S=fn(n.result);o=`<div class="cell-output">${`<div class="output-meta">${n.result.rows.length.toLocaleString()} rows${n.result.executionTime?` · ${n.result.executionTime}ms`:""}</div>`}${R??""}${R?"":S}</div>`}else n.error&&(o=`<div class="cell-error">⚠ ${k(n.error)}</div>`);return`<section class="cell sql-cell">${r}${s}${o}</section>`}).join(`
257
+ `);return`<!DOCTYPE html>
258
+ <html lang="en">
259
+ <head>
260
+ <meta charset="UTF-8">
261
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
262
+ <title>${k(E)}</title>
263
+ <style>
264
+ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
265
+ body {
266
+ font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
267
+ background: #0d1117; color: #e6edf3;
268
+ line-height: 1.6; padding: 0;
269
+ }
270
+ .page-header {
271
+ background: #161b22; border-bottom: 1px solid #21262d;
272
+ padding: 16px 32px; display: flex; align-items: center; gap: 12px;
273
+ }
274
+ .logo {
275
+ width: 28px; height: 28px; border-radius: 6px;
276
+ background: linear-gradient(135deg, #388bfd, #1f6feb);
277
+ display: flex; align-items: center; justify-content: center;
278
+ font-size: 10px; font-weight: 700; color: #fff;
279
+ font-family: monospace; letter-spacing: -0.5px; flex-shrink: 0;
280
+ }
281
+ .page-title { font-size: 18px; font-weight: 600; color: #e6edf3; }
282
+ .page-meta { font-size: 12px; color: #8b949e; margin-left: auto; }
283
+ .content { max-width: 900px; margin: 0 auto; padding: 32px 24px; display: flex; flex-direction: column; gap: 24px; }
284
+ .cell { border-radius: 8px; overflow: hidden; }
285
+ .md-cell { padding: 4px 0; }
286
+ .md-cell h1 { font-size: 26px; font-weight: 700; color: #e6edf3; margin: 0 0 12px; }
287
+ .md-cell h2 { font-size: 20px; font-weight: 600; color: #e6edf3; margin: 20px 0 10px; }
288
+ .md-cell h3 { font-size: 16px; font-weight: 600; color: #e6edf3; margin: 16px 0 8px; }
289
+ .md-cell p { color: #c9d1d9; margin-bottom: 8px; }
290
+ .md-cell ul { padding-left: 20px; color: #c9d1d9; margin-bottom: 8px; }
291
+ .md-cell code { background: #21262d; padding: 2px 6px; border-radius: 4px; font-family: monospace; font-size: 13px; }
292
+ .md-cell pre { background: #161b22; border: 1px solid #30363d; border-radius: 6px; padding: 14px; overflow-x: auto; margin-bottom: 8px; }
293
+ .md-cell pre code { background: none; padding: 0; }
294
+ .md-cell blockquote { border-left: 3px solid #388bfd; padding-left: 14px; color: #8b949e; }
295
+ .sql-cell { background: #161b22; border: 1px solid #30363d; }
296
+ .cell-header { display: flex; align-items: center; gap: 8px; padding: 8px 14px; border-bottom: 1px solid #21262d; background: #1c2128; }
297
+ .cell-type { font-size: 10px; font-weight: 600; letter-spacing: 0.05em; color: #8b949e; background: #21262d; padding: 2px 6px; border-radius: 4px; font-family: monospace; }
298
+ .cell-name { font-size: 12px; color: #388bfd; font-family: monospace; }
299
+ .cell-code { background: #0d1117; padding: 14px; font-size: 12px; font-family: 'JetBrains Mono', monospace; color: #c9d1d9; overflow-x: auto; border-bottom: 1px solid #21262d; line-height: 1.55; white-space: pre; }
300
+ .cell-output { padding: 14px; }
301
+ .output-meta { font-size: 11px; color: #8b949e; margin-bottom: 10px; }
302
+ .table-wrap { overflow-x: auto; }
303
+ table { width: 100%; border-collapse: collapse; font-size: 12px; }
304
+ th { background: #1c2128; color: #8b949e; font-weight: 600; text-align: left; padding: 7px 12px; border-bottom: 1px solid #30363d; white-space: nowrap; }
305
+ td { padding: 6px 12px; border-bottom: 1px solid #21262d; color: #e6edf3; }
306
+ td.num { text-align: right; font-family: monospace; }
307
+ tr:last-child td { border-bottom: none; }
308
+ .truncated { font-size: 11px; color: #8b949e; margin-top: 8px; }
309
+ .cell-error { padding: 12px 14px; background: #3d1a1a; border-top: 1px solid #f85149; color: #f85149; font-size: 13px; }
310
+ .exported-by { text-align: center; color: #484f58; font-size: 11px; padding: 40px 0 24px; }
311
+ </style>
312
+ </head>
313
+ <body>
314
+ <div class="page-header">
315
+ <div class="logo">DQL</div>
316
+ <span class="page-title">${k(E)}</span>
317
+ <span class="page-meta">Exported ${new Date().toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}</span>
318
+ </div>
319
+ <div class="content">
320
+ ${t}
321
+ </div>
322
+ <p class="exported-by">Built with DQL Notebook</p>
323
+ </body>
324
+ </html>`}function yn(E,e){const t=xn(E,e),n=new Blob([t],{type:"text/html;charset=utf-8"}),r=URL.createObjectURL(n),s=document.createElement("a");s.href=r,s.download=`${E.toLowerCase().replace(/[^a-z0-9]+/g,"-")}-dashboard.html`,document.body.appendChild(s),s.click(),document.body.removeChild(s),URL.revokeObjectURL(r)}function gn(E,e){var s,o;const t=[];t.push(`workbook "${E}" {`);let n=0,r=0;for(const R of e)if(R.type!=="param"){if(R.type==="markdown"){r++;const S=`Markdown ${r}`;t.push(""),t.push(` page "${S}" {`);const a=R.content.split(`
325
+ `);for(const i of a)t.push(` // ${i}`);t.push(" }")}else if(R.type==="sql"){n++;const S=((s=R.name)==null?void 0:s.trim())||`Query ${n}`;t.push(""),t.push(` page "${S}" {`);const i=R.content.trim().split(`
326
+ `).map(A=>` ${A}`).join(`
327
+ `);t.push(" chart.table("),t.push(i+","),t.push(` title = "${S}"`),t.push(" )"),t.push(" }")}else if(R.type==="dql"){n++;const S=((o=R.name)==null?void 0:o.trim())||`Query ${n}`;t.push(""),t.push(` page "${S}" {`);const a=R.content.trim().split(`
328
+ `);for(const i of a)t.push(` ${i}`);t.push(" }")}}return t.push("}"),t.join(`
329
+ `)}function Gn(E,e){const t=gn(E,e),n=new Blob([t],{type:"text/plain;charset=utf-8"}),r=URL.createObjectURL(n),s=document.createElement("a"),o=E.replace(/[^a-zA-Z0-9_-]/g,"_")+".dql";s.href=r,s.download=o,document.body.appendChild(s),s.click(),document.body.removeChild(s),URL.revokeObjectURL(r)}function Bn({t:E}){return T.jsx("div",{style:{width:28,height:28,borderRadius:6,background:"linear-gradient(135deg, #388bfd 0%, #1f6feb 100%)",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:T.jsx("span",{style:{color:"#ffffff",fontSize:10,fontWeight:700,fontFamily:E.fontMono,letterSpacing:"-0.5px"},children:"DQL"})})}function Hn(){const{state:E,dispatch:e}=F(),t=H[E.themeMode],{executeAll:n}=xE(),[r,s]=l.useState(!1),[o,R]=l.useState(""),[S,a]=l.useState(!1),[i,A]=l.useState(!1),[I,O]=l.useState(!1),[c,d]=l.useState(!1),[D,u]=l.useState(!1),[_,m]=l.useState(!1),G=l.useRef(null),x=l.useRef(null);l.useEffect(()=>{r&&x.current&&(x.current.focus(),x.current.select())},[r]),l.useEffect(()=>{if(!_)return;function M(h){G.current&&!G.current.contains(h.target)&&m(!1)}return document.addEventListener("mousedown",M),()=>document.removeEventListener("mousedown",M)},[_]);const P=()=>{R(E.notebookTitle),s(!0)},y=()=>{s(!1),o.trim()&&o!==E.notebookTitle&&e({type:"SET_NOTEBOOK_DIRTY",dirty:!0})},B=l.useCallback(async()=>{if(E.activeFile){e({type:"SET_SAVING",saving:!0});try{const M=cn(E.notebookTitle,E.cells);await Y.saveNotebook(E.activeFile.path,M),e({type:"SET_NOTEBOOK_DIRTY",dirty:!1}),a(!0),setTimeout(()=>a(!1),2e3)}catch(M){console.error("Save failed:",M)}finally{e({type:"SET_SAVING",saving:!1})}}},[E.activeFile,E.notebookTitle,E.cells,e]),w=()=>{e({type:"SET_THEME",mode:E.themeMode==="dark"?"light":"dark"})},b={height:28,padding:"0 10px",borderRadius:6,border:`1px solid ${t.btnBorder}`,cursor:"pointer",fontSize:12,fontWeight:500,fontFamily:t.font,display:"flex",alignItems:"center",gap:4,transition:"background 0.15s, color 0.15s",whiteSpace:"nowrap"};return T.jsxs("div",{style:{height:48,flexShrink:0,background:t.headerBg,borderBottom:`1px solid ${t.headerBorder}`,display:"flex",alignItems:"center",padding:"0 12px",gap:8,userSelect:"none"},children:[T.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0},children:[T.jsx(Bn,{t}),T.jsx("div",{style:{width:1,height:20,background:t.headerBorder,flexShrink:0}}),E.activeFile?r?T.jsx("input",{ref:x,value:o,onChange:M=>R(M.target.value),onBlur:y,onKeyDown:M=>{M.key==="Enter"&&y(),M.key==="Escape"&&s(!1)},style:{background:"transparent",border:`1px solid ${t.cellBorderActive}`,borderRadius:4,color:t.textPrimary,fontSize:13,fontWeight:500,fontFamily:t.font,padding:"2px 6px",outline:"none",minWidth:120,maxWidth:320}}):T.jsxs("span",{onClick:P,title:"Click to rename",style:{color:t.textPrimary,fontSize:13,fontWeight:500,fontFamily:t.font,cursor:"text",maxWidth:320,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",padding:"2px 4px",borderRadius:4,border:"1px solid transparent"},children:[E.notebookTitle||"Untitled",E.notebookDirty&&T.jsx("span",{style:{color:t.textMuted,marginLeft:4},children:"●"})]}):T.jsx("span",{style:{color:t.textSecondary,fontSize:13,fontFamily:t.font,padding:"2px 4px"},children:"DQL Notebook"})]}),T.jsx("div",{style:{flex:1}}),T.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6},children:[T.jsxs("button",{onClick:n,disabled:!E.activeFile,onMouseEnter:()=>A(!0),onMouseLeave:()=>A(!1),style:{...b,background:(i&&E.activeFile,t.accent),color:"#ffffff",border:`1px solid ${t.accent}`,opacity:E.activeFile?i?.9:1:.4},children:[T.jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"currentColor",children:T.jsx("path",{d:"M1.5 1.5l7 3.5-7 3.5V1.5Z"})}),"Run All"]}),T.jsx("div",{style:{width:1,height:20,background:t.headerBorder}}),T.jsx("button",{onClick:w,onMouseEnter:()=>d(!0),onMouseLeave:()=>d(!1),title:E.themeMode==="dark"?"Switch to light mode":"Switch to dark mode",style:{...b,background:c?t.btnHover:t.btnBg,color:t.textSecondary,padding:"0 8px",fontSize:14},children:E.themeMode==="dark"?"☀":"☾"}),T.jsx("button",{onClick:B,disabled:!E.activeFile||E.savingFile,onMouseEnter:()=>O(!0),onMouseLeave:()=>O(!1),style:{...b,background:I&&E.activeFile?t.btnHover:t.btnBg,color:S?t.success:t.textSecondary,opacity:E.activeFile?1:.4},children:E.savingFile?T.jsxs(T.Fragment,{children:[T.jsx(Fn,{}),"Saving…"]}):S?T.jsx(T.Fragment,{children:"✓ Saved"}):T.jsx(T.Fragment,{children:"Save"})}),T.jsx("div",{style:{width:1,height:20,background:t.headerBorder}}),T.jsxs("div",{ref:G,style:{position:"relative"},children:[T.jsxs("button",{onClick:()=>{E.activeFile&&m(M=>!M)},disabled:!E.activeFile,onMouseEnter:()=>u(!0),onMouseLeave:()=>u(!1),title:"Export options",style:{...b,background:(D||_)&&E.activeFile?t.btnHover:t.btnBg,color:t.textSecondary,opacity:E.activeFile?1:.4},children:[T.jsxs("svg",{width:"11",height:"11",viewBox:"0 0 16 16",fill:"currentColor",children:[T.jsx("path",{d:"M2.75 14A1.75 1.75 0 0 1 1 12.25v-2.5a.75.75 0 0 1 1.5 0v2.5c0 .138.112.25.25.25h10.5a.25.25 0 0 0 .25-.25v-2.5a.75.75 0 0 1 1.5 0v2.5A1.75 1.75 0 0 1 13.25 14Z"}),T.jsx("path",{d:"M7.25 7.689V2a.75.75 0 0 1 1.5 0v5.689l1.97-1.97a.749.749 0 1 1 1.06 1.06l-3.25 3.25a.749.749 0 0 1-1.06 0L4.22 6.779a.749.749 0 1 1 1.06-1.06l1.97 1.97Z"})]}),"Export",T.jsx("svg",{width:"8",height:"8",viewBox:"0 0 8 8",fill:"currentColor",style:{marginLeft:1},children:T.jsx("path",{d:"M1 2.5l3 3 3-3",stroke:"currentColor",fill:"none",strokeWidth:"1.2",strokeLinecap:"round"})})]}),_&&T.jsxs("div",{style:{position:"absolute",top:32,right:0,zIndex:200,background:t.modalBg,border:`1px solid ${t.cellBorder}`,borderRadius:8,boxShadow:"0 8px 24px rgba(0,0,0,0.3)",padding:4,minWidth:160,display:"flex",flexDirection:"column",gap:2},children:[T.jsx(KE,{label:"Export HTML",description:"Standalone dashboard",t,onClick:()=>{yn(E.notebookTitle||"dashboard",E.cells),m(!1)}}),T.jsx(KE,{label:"Export .dql",description:"DQL workbook file",t,onClick:()=>{Gn(E.notebookTitle||"notebook",E.cells),m(!1)}})]})]})]})]})}function KE({label:E,description:e,t,onClick:n}){const[r,s]=l.useState(!1);return T.jsxs("button",{onClick:n,onMouseEnter:()=>s(!0),onMouseLeave:()=>s(!1),style:{background:r?t.btnHover:"transparent",border:"none",borderRadius:5,cursor:"pointer",padding:"6px 10px",textAlign:"left",display:"flex",flexDirection:"column",gap:1,transition:"background 0.12s"},children:[T.jsx("span",{style:{fontSize:12,fontWeight:500,color:t.textPrimary,fontFamily:t.font},children:E}),T.jsx("span",{style:{fontSize:10,color:t.textMuted,fontFamily:t.font},children:e})]})}function Fn(){return T.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",style:{animation:"spin 0.8s linear infinite"},children:[T.jsx("style",{children:"@keyframes spin { to { transform: rotate(360deg); } }"}),T.jsx("circle",{cx:"6",cy:"6",r:"4.5",stroke:"currentColor",strokeWidth:"1.5",strokeDasharray:"14 7"})]})}function bn(E){return E.toTimeString().slice(0,8)}function Yn(E){return E<1e3?`${E}ms`:`${(E/1e3).toFixed(2)}s`}function vn(){const{state:E,dispatch:e}=F(),t=H[E.themeMode],[n,r]=l.useState(!1),s=E.queryLog.filter(R=>R.error),o=R=>e({type:"SET_DEV_PANEL_TAB",tab:R});return T.jsxs("div",{style:{height:E.devPanelOpen?180:0,flexShrink:0,background:t.sidebarBg,borderTop:`1px solid ${t.headerBorder}`,display:"flex",flexDirection:"column",overflow:"hidden",transition:"height 0.2s ease",position:"relative"},children:[E.devPanelOpen&&T.jsxs(T.Fragment,{children:[T.jsxs("div",{style:{height:32,flexShrink:0,display:"flex",alignItems:"center",borderBottom:`1px solid ${t.headerBorder}`,padding:"0 8px",gap:2},children:[["logs","errors"].map(R=>T.jsx(Vn,{label:R==="errors"?`Errors${s.length>0?` (${s.length})`:""}`:`Logs (${E.queryLog.length})`,active:E.devPanelTab===R,onClick:()=>o(R),t},R)),T.jsx("div",{style:{flex:1}}),T.jsx("button",{onClick:()=>e({type:"SET_CELLS",cells:E.cells}),title:"Clear logs",style:{background:"transparent",border:"none",cursor:"pointer",color:t.textMuted,fontSize:11,fontFamily:t.font,padding:"2px 6px",borderRadius:4},children:"Clear"})]}),T.jsxs("div",{style:{flex:1,overflow:"auto",padding:"4px 0"},children:[E.devPanelTab==="logs"&&(E.queryLog.length===0?T.jsx(jE,{t,message:"No queries executed yet."}):[...E.queryLog].reverse().map(R=>T.jsx(kE,{entry:R,t},R.id))),E.devPanelTab==="errors"&&(s.length===0?T.jsx(jE,{t,message:"No errors."}):[...s].reverse().map(R=>T.jsx(kE,{entry:R,t},R.id)))]})]}),T.jsxs("button",{onClick:()=>e({type:"TOGGLE_DEV_PANEL"}),onMouseEnter:()=>r(!0),onMouseLeave:()=>r(!1),title:E.devPanelOpen?"Close panel":"Open dev panel",style:{position:"absolute",bottom:E.devPanelOpen?4:-28,right:8,height:22,padding:"0 8px",borderRadius:"4px 4px 0 0",border:`1px solid ${t.headerBorder}`,borderBottom:E.devPanelOpen?`1px solid ${t.sidebarBg}`:void 0,background:n?t.btnHover:t.sidebarBg,color:t.textMuted,cursor:"pointer",fontSize:11,fontFamily:t.font,display:"flex",alignItems:"center",gap:4,transition:"background 0.15s, bottom 0.2s ease",zIndex:10},children:[T.jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"currentColor",children:T.jsx("path",{d:E.devPanelOpen?"M1 7l4-4 4 4":"M1 3l4 4 4-4",strokeWidth:"1.5",stroke:"currentColor",fill:"none"})}),"Dev"]})]})}function Vn({label:E,active:e,onClick:t,t:n}){const[r,s]=l.useState(!1);return T.jsx("button",{onClick:t,onMouseEnter:()=>s(!0),onMouseLeave:()=>s(!1),style:{background:"transparent",border:"none",borderBottom:e?`2px solid ${n.accent}`:"2px solid transparent",cursor:"pointer",color:e?n.textPrimary:r?n.textSecondary:n.textMuted,fontSize:12,fontFamily:n.font,fontWeight:e?500:400,padding:"4px 8px",height:32,transition:"color 0.15s"},children:E})}function jE({t:E,message:e}){return T.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%",color:E.textMuted,fontSize:12,fontFamily:E.font,fontStyle:"italic"},children:e})}function kE({entry:E,t:e}){return T.jsxs("div",{style:{display:"flex",alignItems:"center",gap:12,padding:"3px 12px",fontSize:11,fontFamily:e.fontMono,color:E.error?e.error:e.textSecondary,borderLeft:E.error?`2px solid ${e.error}`:"2px solid transparent"},children:[T.jsx("span",{style:{color:e.textMuted,flexShrink:0},children:bn(E.ts)}),T.jsx("span",{style:{flexShrink:0,color:e.textPrimary,maxWidth:160,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:E.cellName}),E.error?T.jsx("span",{style:{color:e.error,flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:E.error}):T.jsxs(T.Fragment,{children:[T.jsxs("span",{style:{color:e.textMuted},children:[E.rows.toLocaleString()," rows"]}),T.jsx("span",{style:{color:e.textMuted},children:Yn(E.time)})]})]})}function Wn({onOpenFile:E}){const{state:e,dispatch:t}=F(),n=H[e.themeMode],r=e.files.slice(0,3);return T.jsx("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",background:n.appBg,padding:40,overflow:"auto"},children:T.jsxs("div",{style:{maxWidth:720,width:"100%",display:"flex",flexDirection:"column",alignItems:"center",gap:48},children:[T.jsxs("div",{style:{textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",gap:16},children:[T.jsx("div",{style:{width:72,height:72,borderRadius:16,background:"linear-gradient(135deg, #388bfd 0%, #1f6feb 60%, #0d419d 100%)",display:"flex",alignItems:"center",justifyContent:"center",boxShadow:"0 8px 32px rgba(56,139,253,0.3)"},children:T.jsx("span",{style:{color:"#fff",fontSize:26,fontWeight:800,fontFamily:n.fontMono,letterSpacing:"-1px"},children:"DQL"})}),T.jsxs("div",{children:[T.jsx("h1",{style:{fontSize:32,fontWeight:700,color:n.textPrimary,fontFamily:n.font,marginBottom:8,letterSpacing:"-0.5px"},children:"DQL Notebook"}),T.jsx("p",{style:{fontSize:15,color:n.textSecondary,fontFamily:n.font,letterSpacing:"0.02em"},children:"Analytics as Code"})]})]}),T.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:16,width:"100%"},children:[T.jsx($E,{title:"New Notebook",description:"Start a fresh analysis with an empty notebook.",icon:T.jsx(Kn,{}),accent:n.accent,onClick:()=>t({type:"OPEN_NEW_NOTEBOOK_MODAL"}),t:n}),T.jsx(Xn,{recentFiles:r,onOpenFile:E,t:n}),T.jsx($E,{title:"Browse Examples",description:"Explore sample notebooks and DQL workbooks.",icon:T.jsx(kn,{}),accent:n.success,onClick:()=>{const s=e.files.find(o=>o.folder.toLowerCase()==="notebooks");s&&E(s)},t:n})]}),T.jsxs("div",{style:{width:"100%",borderRadius:10,border:`1px solid ${n.cellBorder}`,padding:"16px 20px",background:n.cellBg},children:[T.jsx("div",{style:{fontSize:11,fontWeight:600,letterSpacing:"0.08em",textTransform:"uppercase",color:n.textMuted,fontFamily:n.font,marginBottom:12},children:"Quick Tips"}),T.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(2, 1fr)",gap:8},children:[["Shift + Enter","Run cell"],["Click +","Add a new cell"],["Double-click MD cell","Edit markdown"],["Header title","Click to rename notebook"]].map(([s,o])=>T.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[T.jsx("kbd",{style:{background:n.pillBg,border:`1px solid ${n.cellBorder}`,borderRadius:4,padding:"2px 6px",fontSize:11,fontFamily:n.fontMono,color:n.textSecondary,whiteSpace:"nowrap"},children:s}),T.jsx("span",{style:{fontSize:12,color:n.textMuted,fontFamily:n.font},children:o})]},s))})]})]})})}function $E({title:E,description:e,icon:t,accent:n,onClick:r,t:s}){const[o,R]=l.useState(!1);return T.jsxs("button",{onClick:r,onMouseEnter:()=>R(!0),onMouseLeave:()=>R(!1),style:{background:o?s.cellBg:"transparent",border:`1px solid ${o?n:s.cellBorder}`,borderRadius:10,padding:"20px 16px",cursor:"pointer",textAlign:"left",display:"flex",flexDirection:"column",gap:10,transition:"border-color 0.2s, background 0.2s, box-shadow 0.2s",boxShadow:o?`0 0 0 1px ${n}30, 0 4px 16px rgba(0,0,0,0.15)`:"none"},children:[T.jsx("div",{style:{width:36,height:36,borderRadius:8,background:`${n}18`,display:"flex",alignItems:"center",justifyContent:"center",color:n},children:t}),T.jsxs("div",{children:[T.jsx("div",{style:{fontSize:13,fontWeight:600,color:s.textPrimary,fontFamily:s.font,marginBottom:4},children:E}),T.jsx("div",{style:{fontSize:12,color:s.textSecondary,fontFamily:s.font,lineHeight:1.5},children:e})]})]})}function Xn({recentFiles:E,onOpenFile:e,t}){const[n,r]=l.useState(!1);return T.jsxs("div",{onMouseEnter:()=>r(!0),onMouseLeave:()=>r(!1),style:{background:n?t.cellBg:"transparent",border:`1px solid ${n?t.textMuted:t.cellBorder}`,borderRadius:10,padding:"20px 16px",textAlign:"left",display:"flex",flexDirection:"column",gap:10,transition:"border-color 0.2s, background 0.2s"},children:[T.jsx("div",{style:{width:36,height:36,borderRadius:8,background:`${t.warning}18`,display:"flex",alignItems:"center",justifyContent:"center",color:t.warning},children:T.jsx(jn,{})}),T.jsxs("div",{children:[T.jsx("div",{style:{fontSize:13,fontWeight:600,color:t.textPrimary,fontFamily:t.font,marginBottom:8},children:"Open Recent"}),E.length===0?T.jsx("div",{style:{fontSize:12,color:t.textMuted,fontFamily:t.font,fontStyle:"italic"},children:"No recent files."}):T.jsx("div",{style:{display:"flex",flexDirection:"column",gap:4},children:E.map(s=>T.jsx(wn,{file:s,onClick:()=>e(s),t},s.path))})]})]})}function wn({file:E,onClick:e,t}){const[n,r]=l.useState(!1);return T.jsx("button",{onClick:e,onMouseEnter:()=>r(!0),onMouseLeave:()=>r(!1),style:{background:"transparent",border:"none",cursor:"pointer",color:n?t.accent:t.textSecondary,fontSize:12,fontFamily:t.font,textAlign:"left",padding:"2px 0",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",transition:"color 0.15s"},children:E.name.replace(/\.(dqlnb|dql)$/,"")})}function Kn(){return T.jsx("svg",{width:"18",height:"18",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 8.75 4.25V1.5ZM8.75 5.5h2.836L10.25 3.664V4.25c0 .138.112.25.25.25H8.75Zm.5 3.25a.75.75 0 0 1 .75.75v.75h.75a.75.75 0 0 1 0 1.5H10v.75a.75.75 0 0 1-1.5 0V11.5H7.75a.75.75 0 0 1 0-1.5H8.5V9.5a.75.75 0 0 1 .75-.75Z"})})}function jn(){return T.jsx("svg",{width:"18",height:"18",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm7-3.25v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5a.75.75 0 0 1 1.5 0Z"})})}function kn(){return T.jsx("svg",{width:"18",height:"18",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M.24 2.375C.24 1.064 1.225.001 2.409.001h6.451a1.17 1.17 0 0 1 .828.344l3.311 3.312a1.17 1.17 0 0 1 .344.828v9.14c0 1.31-.985 2.374-2.169 2.374H2.41C1.225 16 .24 14.937.24 13.625ZM2.41 1.376a.846.846 0 0 0-.844.86v11.39c0 .47.38.86.844.86h8.774a.847.847 0 0 0 .844-.86V5.157L8.688 1.373H2.41Z"})})}const JE=typeof String.prototype.normalize=="function"?E=>E.normalize("NFKD"):E=>E;class ue{constructor(e,t,n=0,r=e.length,s,o){this.test=o,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(n,r),this.bufferStart=n,this.normalize=s?R=>s(JE(R)):JE,this.query=this.normalize(t)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return pT(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let t=UT(e),n=this.bufferStart+this.bufferPos;this.bufferPos+=PT(e);let r=this.normalize(t);if(r.length)for(let s=0,o=n;;s++){let R=r.charCodeAt(s),S=this.match(R,o,this.bufferPos+this.bufferStart);if(s==r.length-1){if(S)return this.value=S,this;break}o==n&&s<t.length&&t.charCodeAt(s)==R&&o++}}}match(e,t,n){let r=null;for(let s=0;s<this.matches.length;s+=2){let o=this.matches[s],R=!1;this.query.charCodeAt(o)==e&&(o==this.query.length-1?r={from:this.matches[s+1],to:n}:(this.matches[s]++,R=!0)),R||(this.matches.splice(s,2),s-=2)}return this.query.charCodeAt(0)==e&&(this.query.length==1?r={from:t,to:n}:this.matches.push(1,t)),r&&this.test&&!this.test(r.from,r.to,this.buffer,this.bufferStart)&&(r=null),r}}typeof Symbol<"u"&&(ue.prototype[Symbol.iterator]=function(){return this});const Kt={from:-1,to:-1,match:/.*/.exec("")},yE="gm"+(/x/.unicode==null?"":"u");class jt{constructor(e,t,n,r=0,s=e.length){if(this.text=e,this.to=s,this.curLine="",this.done=!1,this.value=Kt,/\\[sWDnr]|\n|\r|\[\^/.test(t))return new kt(e,t,n,r,s);this.re=new RegExp(t,yE+(n!=null&&n.ignoreCase?"i":"")),this.test=n==null?void 0:n.test,this.iter=e.iter();let o=e.lineAt(r);this.curLineStart=o.from,this.matchPos=be(e,r),this.getLine(this.curLineStart)}getLine(e){this.iter.next(e),this.iter.lineBreak?this.curLine="":(this.curLine=this.iter.value,this.curLineStart+this.curLine.length>this.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let t=this.matchPos<=this.to&&this.re.exec(this.curLine);if(t){let n=this.curLineStart+t.index,r=n+t[0].length;if(this.matchPos=be(this.text,r+(n==r?1:0)),n==this.curLineStart+this.curLine.length&&this.nextLine(),(n<r||n>this.value.to)&&(!this.test||this.test(n,r,t)))return this.value={from:n,to:r,match:t},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length<this.to)this.nextLine(),e=0;else return this.done=!0,this}}}const $e=new WeakMap;class Ne{constructor(e,t){this.from=e,this.text=t}get to(){return this.from+this.text.length}static get(e,t,n){let r=$e.get(e);if(!r||r.from>=n||r.to<=t){let R=new Ne(t,e.sliceString(t,n));return $e.set(e,R),R}if(r.from==t&&r.to==n)return r;let{text:s,from:o}=r;return o>t&&(s=e.sliceString(t,o)+s,o=t),r.to<n&&(s+=e.sliceString(r.to,n)),$e.set(e,new Ne(o,s)),new Ne(t,s.slice(t-o,n-o))}}class kt{constructor(e,t,n,r,s){this.text=e,this.to=s,this.done=!1,this.value=Kt,this.matchPos=be(e,r),this.re=new RegExp(t,yE+(n!=null&&n.ignoreCase?"i":"")),this.test=n==null?void 0:n.test,this.flat=Ne.get(e,r,this.chunkEnd(r+5e3))}chunkEnd(e){return e>=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,t=this.re.exec(this.flat.text);if(t&&!t[0]&&t.index==e&&(this.re.lastIndex=e+1,t=this.re.exec(this.flat.text)),t){let n=this.flat.from+t.index,r=n+t[0].length;if((this.flat.to>=this.to||t.index+t[0].length<=this.flat.text.length-10)&&(!this.test||this.test(n,r,t)))return this.value={from:n,to:r,match:t},this.matchPos=be(this.text,r+(n==r?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=Ne.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}typeof Symbol<"u"&&(jt.prototype[Symbol.iterator]=kt.prototype[Symbol.iterator]=function(){return this});function $n(E){try{return new RegExp(E,yE),!0}catch{return!1}}function be(E,e){if(e>=E.length)return e;let t=E.lineAt(e),n;for(;e<t.to&&(n=t.text.charCodeAt(e-t.from))>=56320&&n<57344;)e++;return e}const Jn=E=>{let{state:e}=E,t=String(e.doc.lineAt(E.state.selection.main.head).number),{close:n,result:r}=dT(E,{label:e.phrase("Go to line"),input:{type:"text",name:"line",value:t},focus:!0,submitLabel:e.phrase("go")});return r.then(s=>{let o=s&&/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(s.elements.line.value);if(!o){E.dispatch({effects:n});return}let R=e.doc.lineAt(e.selection.main.head),[,S,a,i,A]=o,I=i?+i.slice(1):0,O=a?+a:R.number;if(a&&A){let D=O/100;S&&(D=D*(S=="-"?-1:1)+R.number/e.doc.lines),O=Math.round(e.doc.lines*D)}else a&&S&&(O=O*(S=="-"?-1:1)+R.number);let c=e.doc.line(Math.max(1,Math.min(e.doc.lines,O))),d=z.cursor(c.from+Math.max(0,Math.min(I,c.length)));E.dispatch({effects:[n,J.scrollIntoView(d.from,{y:"center"})],selection:d})}),!0},Qn=({state:E,dispatch:e})=>{let{selection:t}=E,n=z.create(t.ranges.map(r=>E.wordAt(r.head)||z.cursor(r.head)),t.mainIndex);return n.eq(t)?!1:(e(E.update({selection:n})),!0)};function Zn(E,e){let{main:t,ranges:n}=E.selection,r=E.wordAt(t.head),s=r&&r.from==t.from&&r.to==t.to;for(let o=!1,R=new ue(E.doc,e,n[n.length-1].to);;)if(R.next(),R.done){if(o)return null;R=new ue(E.doc,e,0,Math.max(0,n[n.length-1].from-1)),o=!0}else{if(o&&n.some(S=>S.from==R.value.from))continue;if(s){let S=E.wordAt(R.value.from);if(!S||S.from!=R.value.from||S.to!=R.value.to)continue}return R.value}}const qn=({state:E,dispatch:e})=>{let{ranges:t}=E.selection;if(t.some(s=>s.from===s.to))return Qn({state:E,dispatch:e});let n=E.sliceDoc(t[0].from,t[0].to);if(E.selection.ranges.some(s=>E.sliceDoc(s.from,s.to)!=n))return!1;let r=Zn(E,n);return r?(e(E.update({selection:E.selection.addRange(z.range(r.from,r.to),!1),effects:J.scrollIntoView(r.to)})),!0):!1},Ae=MT.define({combine(E){return hT(E,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new Is(e),scrollToMatch:e=>J.scrollIntoView(e)})}});function zn(E){return E?[Ae.of(E),PE]:PE}class $t{constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||$n(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord,this.test=e.test}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,(t,n)=>n=="n"?`
330
+ `:n=="r"?"\r":n=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord&&this.test==e.test}create(){return this.regexp?new ns(this):new ts(this)}getCursor(e,t=0,n){let r=e.doc?e:bt.create({doc:e});return n==null&&(n=r.doc.length),this.regexp?le(this,r,t,n):Oe(this,r,t,n)}}class Jt{constructor(e){this.spec=e}}function es(E,e,t){return(n,r,s,o)=>{if(t&&!t(n,r,s,o))return!1;let R=n>=o&&r<=o+s.length?s.slice(n-o,r-o):e.doc.sliceString(n,r);return E(R,e,n,r)}}function Oe(E,e,t,n){let r;return E.wholeWord&&(r=Es(e.doc,e.charCategorizer(e.selection.main.head))),E.test&&(r=es(E.test,e,r)),new ue(e.doc,E.unquoted,t,n,E.caseSensitive?void 0:s=>s.toLowerCase(),r)}function Es(E,e){return(t,n,r,s)=>((s>t||s+r.length<n)&&(s=Math.max(0,t-2),r=E.sliceString(s,Math.min(E.length,n+2))),(e(Ye(r,t-s))!=re.Word||e(ve(r,t-s))!=re.Word)&&(e(ve(r,n-s))!=re.Word||e(Ye(r,n-s))!=re.Word))}class ts extends Jt{constructor(e){super(e)}nextMatch(e,t,n){let r=Oe(this.spec,e,n,e.doc.length).nextOverlapping();if(r.done){let s=Math.min(e.doc.length,t+this.spec.unquoted.length);r=Oe(this.spec,e,0,s).nextOverlapping()}return r.done||r.value.from==t&&r.value.to==n?null:r.value}prevMatchInRange(e,t,n){for(let r=n;;){let s=Math.max(t,r-1e4-this.spec.unquoted.length),o=Oe(this.spec,e,s,r),R=null;for(;!o.nextOverlapping().done;)R=o.value;if(R)return R;if(s==t)return null;r-=1e4}}prevMatch(e,t,n){let r=this.prevMatchInRange(e,0,t);return r||(r=this.prevMatchInRange(e,Math.max(0,n-this.spec.unquoted.length),e.doc.length)),r&&(r.from!=t||r.to!=n)?r:null}getReplacement(e){return this.spec.unquote(this.spec.replace)}matchAll(e,t){let n=Oe(this.spec,e,0,e.doc.length),r=[];for(;!n.next().done;){if(r.length>=t)return null;r.push(n.value)}return r}highlight(e,t,n,r){let s=Oe(this.spec,e,Math.max(0,t-this.spec.unquoted.length),Math.min(n+this.spec.unquoted.length,e.doc.length));for(;!s.next().done;)r(s.value.from,s.value.to)}}function Ts(E,e,t){return(n,r,s)=>(!t||t(n,r,s))&&E(s[0],e,n,r)}function le(E,e,t,n){let r;return E.wholeWord&&(r=rs(e.charCategorizer(e.selection.main.head))),E.test&&(r=Ts(E.test,e,r)),new jt(e.doc,E.search,{ignoreCase:!E.caseSensitive,test:r},t,n)}function Ye(E,e){return E.slice(Yt(E,e,!1),e)}function ve(E,e){return E.slice(e,Yt(E,e))}function rs(E){return(e,t,n)=>!n[0].length||(E(Ye(n.input,n.index))!=re.Word||E(ve(n.input,n.index))!=re.Word)&&(E(ve(n.input,n.index+n[0].length))!=re.Word||E(Ye(n.input,n.index+n[0].length))!=re.Word)}class ns extends Jt{nextMatch(e,t,n){let r=le(this.spec,e,n,e.doc.length).next();return r.done&&(r=le(this.spec,e,0,t).next()),r.done?null:r.value}prevMatchInRange(e,t,n){for(let r=1;;r++){let s=Math.max(t,n-r*1e4),o=le(this.spec,e,s,n),R=null;for(;!o.next().done;)R=o.value;if(R&&(s==t||R.from>s+10))return R;if(s==t)return null}}prevMatch(e,t,n){return this.prevMatchInRange(e,0,t)||this.prevMatchInRange(e,n,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(t,n)=>{if(n=="&")return e.match[0];if(n=="$")return"$";for(let r=n.length;r>0;r--){let s=+n.slice(0,r);if(s>0&&s<e.match.length)return e.match[s]+n.slice(r)}return t})}matchAll(e,t){let n=le(this.spec,e,0,e.doc.length),r=[];for(;!n.next().done;){if(r.length>=t)return null;r.push(n.value)}return r}highlight(e,t,n,r){let s=le(this.spec,e,Math.max(0,t-250),Math.min(n+250,e.doc.length));for(;!s.next().done;)r(s.value.from,s.value.to)}}const pe=mE.define(),gE=mE.define(),ne=_T.define({create(E){return new Je(pE(E).create(),null)},update(E,e){for(let t of e.effects)t.is(pe)?E=new Je(t.value.create(),E.panel):t.is(gE)&&(E=new Je(E.query,t.value?GE:null));return E},provide:E=>DT.from(E,e=>e.panel)});class Je{constructor(e,t){this.query=e,this.panel=t}}const ss=UE.mark({class:"cm-searchMatch"}),os=UE.mark({class:"cm-searchMatch cm-searchMatch-selected"}),Rs=fT.fromClass(class{constructor(E){this.view=E,this.decorations=this.highlight(E.state.field(ne))}update(E){let e=E.state.field(ne);(e!=E.startState.field(ne)||E.docChanged||E.selectionSet||E.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:E,panel:e}){if(!e||!E.spec.valid)return UE.none;let{view:t}=this,n=new mT;for(let r=0,s=t.visibleRanges,o=s.length;r<o;r++){let{from:R,to:S}=s[r];for(;r<o-1&&S>s[r+1].from-500;)S=s[++r].to;E.highlight(t.state,R,S,(a,i)=>{let A=t.state.selection.ranges.some(I=>I.from==a&&I.to==i);n.add(a,i,A?os:ss)})}return n.finish()}},{decorations:E=>E.decorations});function Me(E){return e=>{let t=e.state.field(ne,!1);return t&&t.query.spec.valid?E(e,t):qt(e)}}const Ve=Me((E,{query:e})=>{let{to:t}=E.state.selection.main,n=e.nextMatch(E.state,t,t);if(!n)return!1;let r=z.single(n.from,n.to),s=E.state.facet(Ae);return E.dispatch({selection:r,effects:[BE(E,n),s.scrollToMatch(r.main,E)],userEvent:"select.search"}),Zt(E),!0}),We=Me((E,{query:e})=>{let{state:t}=E,{from:n}=t.selection.main,r=e.prevMatch(t,n,n);if(!r)return!1;let s=z.single(r.from,r.to),o=E.state.facet(Ae);return E.dispatch({selection:s,effects:[BE(E,r),o.scrollToMatch(s.main,E)],userEvent:"select.search"}),Zt(E),!0}),is=Me((E,{query:e})=>{let t=e.matchAll(E.state,1e3);return!t||!t.length?!1:(E.dispatch({selection:z.create(t.map(n=>z.range(n.from,n.to))),userEvent:"select.search.matches"}),!0)}),As=({state:E,dispatch:e})=>{let t=E.selection;if(t.ranges.length>1||t.main.empty)return!1;let{from:n,to:r}=t.main,s=[],o=0;for(let R=new ue(E.doc,E.sliceDoc(n,r));!R.next().done;){if(s.length>1e3)return!1;R.value.from==n&&(o=s.length),s.push(z.range(R.value.from,R.value.to))}return e(E.update({selection:z.create(s,o),userEvent:"select.search.matches"})),!0},QE=Me((E,{query:e})=>{let{state:t}=E,{from:n,to:r}=t.selection.main;if(t.readOnly)return!1;let s=e.nextMatch(t,n,n);if(!s)return!1;let o=s,R=[],S,a,i=[];o.from==n&&o.to==r&&(a=t.toText(e.getReplacement(o)),R.push({from:o.from,to:o.to,insert:a}),o=e.nextMatch(t,o.from,o.to),i.push(J.announce.of(t.phrase("replaced match on line $",t.doc.lineAt(n).number)+".")));let A=E.state.changes(R);return o&&(S=z.single(o.from,o.to).map(A),i.push(BE(E,o)),i.push(t.facet(Ae).scrollToMatch(S.main,E))),E.dispatch({changes:A,selection:S,effects:i,userEvent:"input.replace"}),!0}),as=Me((E,{query:e})=>{if(E.state.readOnly)return!1;let t=e.matchAll(E.state,1e9).map(r=>{let{from:s,to:o}=r;return{from:s,to:o,insert:e.getReplacement(r)}});if(!t.length)return!1;let n=E.state.phrase("replaced $ matches",t.length)+".";return E.dispatch({changes:t,effects:J.announce.of(n),userEvent:"input.replace.all"}),!0});function GE(E){return E.state.facet(Ae).createPanel(E)}function pE(E,e){var t,n,r,s,o;let R=E.selection.main,S=R.empty||R.to>R.from+100?"":E.sliceDoc(R.from,R.to);if(e&&!S)return e;let a=E.facet(Ae);return new $t({search:((t=e==null?void 0:e.literal)!==null&&t!==void 0?t:a.literal)?S:S.replace(/\n/g,"\\n"),caseSensitive:(n=e==null?void 0:e.caseSensitive)!==null&&n!==void 0?n:a.caseSensitive,literal:(r=e==null?void 0:e.literal)!==null&&r!==void 0?r:a.literal,regexp:(s=e==null?void 0:e.regexp)!==null&&s!==void 0?s:a.regexp,wholeWord:(o=e==null?void 0:e.wholeWord)!==null&&o!==void 0?o:a.wholeWord})}function Qt(E){let e=Ft(E,GE);return e&&e.dom.querySelector("[main-field]")}function Zt(E){let e=Qt(E);e&&e==E.root.activeElement&&e.select()}const qt=E=>{let e=E.state.field(ne,!1);if(e&&e.panel){let t=Qt(E);if(t&&t!=E.root.activeElement){let n=pE(E.state,e.query.spec);n.valid&&E.dispatch({effects:pe.of(n)}),t.focus(),t.select()}}else E.dispatch({effects:[gE.of(!0),e?pe.of(pE(E.state,e.query.spec)):mE.appendConfig.of(PE)]});return!0},zt=E=>{let e=E.state.field(ne,!1);if(!e||!e.panel)return!1;let t=Ft(E,GE);return t&&t.dom.contains(E.root.activeElement)&&E.focus(),E.dispatch({effects:gE.of(!1)}),!0},Ss=[{key:"Mod-f",run:qt,scope:"editor search-panel"},{key:"F3",run:Ve,shift:We,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:Ve,shift:We,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:zt,scope:"editor search-panel"},{key:"Mod-Shift-l",run:As},{key:"Mod-Alt-g",run:Jn},{key:"Mod-d",run:qn,preventDefault:!0}];class Is{constructor(e){this.view=e;let t=this.query=e.state.field(ne).query.spec;this.commit=this.commit.bind(this),this.searchField=Q("input",{value:t.search,placeholder:$(e,"Find"),"aria-label":$(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=Q("input",{value:t.replace,placeholder:$(e,"Replace"),"aria-label":$(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=Q("input",{type:"checkbox",name:"case",form:"",checked:t.caseSensitive,onchange:this.commit}),this.reField=Q("input",{type:"checkbox",name:"re",form:"",checked:t.regexp,onchange:this.commit}),this.wordField=Q("input",{type:"checkbox",name:"word",form:"",checked:t.wholeWord,onchange:this.commit});function n(r,s,o){return Q("button",{class:"cm-button",name:r,onclick:s,type:"button"},o)}this.dom=Q("div",{onkeydown:r=>this.keydown(r),class:"cm-search"},[this.searchField,n("next",()=>Ve(e),[$(e,"next")]),n("prev",()=>We(e),[$(e,"previous")]),n("select",()=>is(e),[$(e,"all")]),Q("label",null,[this.caseField,$(e,"match case")]),Q("label",null,[this.reField,$(e,"regexp")]),Q("label",null,[this.wordField,$(e,"by word")]),...e.state.readOnly?[]:[Q("br"),this.replaceField,n("replace",()=>QE(e),[$(e,"replace")]),n("replaceAll",()=>as(e),[$(e,"replace all")])],Q("button",{name:"close",onclick:()=>zt(e),"aria-label":$(e,"close"),type:"button"},["×"])])}commit(){let e=new $t({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:pe.of(e)}))}keydown(e){xT(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?We:Ve)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),QE(this.view))}update(e){for(let t of e.transactions)for(let n of t.effects)n.is(pe)&&!n.value.eq(this.query)&&this.setQuery(n.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(Ae).top}}function $(E,e){return E.state.phrase(e)}const Ue=30,xe=/[\s\.,:;?!]/;function BE(E,{from:e,to:t}){let n=E.state.doc.lineAt(e),r=E.state.doc.lineAt(t).to,s=Math.max(n.from,e-Ue),o=Math.min(r,t+Ue),R=E.state.sliceDoc(s,o);if(s!=n.from){for(let S=0;S<Ue;S++)if(!xe.test(R[S+1])&&xe.test(R[S])){R=R.slice(S);break}}if(o!=r){for(let S=R.length-1;S>R.length-Ue;S--)if(!xe.test(R[S-1])&&xe.test(R[S])){R=R.slice(0,S);break}}return J.announce.of(`${E.state.phrase("current match")}. ${R} ${E.state.phrase("on line")} ${n.number}.`)}const Os=J.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),PE=[ne,uT.low(Rs),Os],ls=J.theme({"&":{background:"#f6f8fa",color:"#1f2328"},".cm-content":{caretColor:"#1f2328"},".cm-cursor":{borderLeftColor:"#1f2328"},".cm-selectionBackground":{background:"#b3d4fc"},"&.cm-focused .cm-selectionBackground":{background:"#b3d4fc"},".cm-gutters":{background:"#f0f2f5",color:"#8c959f",border:"none",borderRight:"1px solid #d0d7de"},".cm-activeLineGutter":{background:"#e8f0fe"},".cm-activeLine":{background:"#eaf0fb"},".cm-matchingBracket":{background:"#c8e6c9",outline:"1px solid #66bb6a"},".cm-foldPlaceholder":{background:"#eaeef2",border:"1px solid #d0d7de",color:"#57606a",borderRadius:3,padding:"0 4px"},".cm-tooltip":{background:"#ffffff",border:"1px solid #d0d7de",borderRadius:6,boxShadow:"0 4px 12px rgba(0,0,0,0.12)"},".cm-tooltip.cm-tooltip-autocomplete":{"& > ul > li":{padding:"3px 8px"},"& > ul > li[aria-selected]":{background:"#dbeafe",color:"#0550ae"}},".cm-searchMatch":{background:"#fff3b0",outline:"1px solid #f5c518"},".cm-searchMatch.cm-searchMatch-selected":{background:"#f5c518"},".cm-panels":{background:"#f0f2f5",borderTop:"1px solid #d0d7de"},".cm-panel":{padding:"6px 8px"},".cm-panel input":{background:"#fff",border:"1px solid #d0d7de",borderRadius:4,padding:"2px 6px",fontSize:12},".cm-panel button":{background:"#f6f8fa",border:"1px solid #d0d7de",borderRadius:4,padding:"2px 8px",cursor:"pointer",fontSize:12,marginLeft:4}},{dark:!1}),Ns=J.theme({".cm-panels":{background:"#161b22",borderTop:"1px solid #30363d"},".cm-panel input":{background:"#0d1117",border:"1px solid #30363d",color:"#e6edf3",borderRadius:4,padding:"2px 6px",fontSize:12},".cm-panel button":{background:"#21262d",border:"1px solid #30363d",color:"#e6edf3",borderRadius:4,padding:"2px 8px",cursor:"pointer",fontSize:12,marginLeft:4},".cm-tooltip":{background:"#1c2128",border:"1px solid #30363d",borderRadius:6,boxShadow:"0 4px 12px rgba(0,0,0,0.4)"},".cm-tooltip.cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{background:"#1f3858",color:"#58a6ff"}},".cm-matchingBracket":{background:"#1f3858",outline:"1px solid #388bfd"},".cm-searchMatch":{background:"#3d3000",outline:"1px solid #e3b341"},".cm-searchMatch.cm-searchMatch-selected":{background:"#6a4e00"}},{dark:!0});function eT({value:E,onChange:e,onRun:t,themeMode:n,autoFocus:r,schema:s}){const o=H[n],R=l.useRef(null),S=l.useRef(null),a=l.useRef(t),i=l.useRef(e),A=l.useRef(new yT);return a.current=t,i.current=e,l.useEffect(()=>{if(!R.current)return;const I=gT.of([{key:"Shift-Enter",run:()=>(a.current(),!0)},{key:"Ctrl-Enter",mac:"Cmd-Enter",run:()=>(a.current(),!0)},{key:"Ctrl-/",mac:"Cmd-/",run:GT},BT,...HT,...FT,...bT,...Ss,...YT,...vT]),O=J.updateListener.of(m=>{m.docChanged&&i.current(m.state.doc.toString())}),c=J.theme({"&":{background:o.editorBg,fontFamily:o.fontMono,fontSize:"13px",minHeight:"80px",maxHeight:"480px"},".cm-scroller":{overflow:"auto",fontFamily:"inherit"},".cm-content":{padding:"10px 0",minHeight:"80px"},".cm-focused":{outline:"none"},".cm-editor":{border:"none"},".cm-gutters":{minWidth:40},".cm-foldGutter":{cursor:"pointer"}}),d=s?he({schema:s,upperCaseKeywords:!1}):he({upperCaseKeywords:!1}),D=[I,O,c,A.current.of(d),WT({closeOnBlur:!1}),XT(),wT(),KT(),jT(),kT(),$T(),JT(),J.lineWrapping,zn({top:!0}),...n==="dark"?[VT,Ns]:[ls,QT(ZT)]],u=bt.create({doc:E,extensions:D}),_=new J({state:u,parent:R.current});return S.current=_,r&&_.focus(),()=>{_.destroy(),S.current=null}},[n]),l.useEffect(()=>{const I=S.current;if(!I)return;const O=s?he({schema:s,upperCaseKeywords:!1}):he({upperCaseKeywords:!1});I.dispatch({effects:A.current.reconfigure(O)})},[s]),l.useEffect(()=>{const I=S.current;if(!I)return;const O=I.state.doc.toString();O!==E&&I.dispatch({changes:{from:0,to:O.length,insert:E}})},[E]),T.jsx("div",{ref:R,style:{background:o.editorBg,minHeight:80}})}eT.displayName="SQLCellEditor";function cs(E,e){const t=E.split(`
331
+ `),n=[];let r=0;for(;r<t.length;){const s=t[r],o=s.match(/^(#{1,6})\s+(.+)$/);if(o){const R=o[1].length,S=o[2],i=[28,22,18,16,14,13][R-1];n.push(T.jsx("div",{style:{fontSize:i,fontWeight:R<=2?700:600,color:e.textPrimary,fontFamily:e.font,lineHeight:1.3,marginBottom:R===1?12:8,marginTop:r>0?R===1?16:10:0,borderBottom:R===1?`1px solid ${e.cellBorder}`:void 0,paddingBottom:R===1?8:void 0},children:de(S,e)},r)),r++;continue}if(/^[-*_]{3,}$/.test(s.trim())){n.push(T.jsx("hr",{style:{border:"none",borderTop:`1px solid ${e.cellBorder}`,margin:"12px 0"}},r)),r++;continue}if(s.startsWith("> ")){n.push(T.jsx("div",{style:{borderLeft:`3px solid ${e.textMuted}`,paddingLeft:12,marginLeft:4,color:e.textSecondary,fontStyle:"italic",fontFamily:e.fontSerif,fontSize:14},children:de(s.slice(2),e)},r)),r++;continue}if(s.startsWith("```")){const R=[];for(r++;r<t.length&&!t[r].startsWith("```");)R.push(t[r]),r++;n.push(T.jsx("pre",{style:{background:e.editorBg,border:`1px solid ${e.cellBorder}`,borderRadius:6,padding:"10px 12px",fontSize:12,fontFamily:e.fontMono,color:e.textPrimary,overflow:"auto",margin:"8px 0",lineHeight:1.6},children:R.join(`
332
+ `)},r)),r++;continue}if(/^[-*+]\s/.test(s)){const R=[];for(;r<t.length&&/^[-*+]\s/.test(t[r]);)R.push(t[r].replace(/^[-*+]\s/,"")),r++;n.push(T.jsx("ul",{style:{paddingLeft:20,marginBottom:8,color:e.textSecondary},children:R.map((S,a)=>T.jsx("li",{style:{fontSize:14,fontFamily:e.font,lineHeight:1.6,marginBottom:2},children:de(S,e)},a))},r));continue}if(/^\d+\.\s/.test(s)){const R=[];for(;r<t.length&&/^\d+\.\s/.test(t[r]);)R.push(t[r].replace(/^\d+\.\s/,"")),r++;n.push(T.jsx("ol",{style:{paddingLeft:20,marginBottom:8,color:e.textSecondary},children:R.map((S,a)=>T.jsx("li",{style:{fontSize:14,fontFamily:e.font,lineHeight:1.6,marginBottom:2},children:de(S,e)},a))},r));continue}if(!s.trim()){n.push(T.jsx("div",{style:{height:8}},r)),r++;continue}n.push(T.jsx("p",{style:{fontSize:14,lineHeight:1.7,fontFamily:e.fontSerif,color:e.textSecondary,marginBottom:6},children:de(s,e)},r)),r++}return n}function de(E,e){const t=[];let n=E,r=0;for(;n.length>0;){const s=n.match(/\*{3}(.+?)\*{3}/),o=n.match(/\*{2}(.+?)\*{2}/),R=n.match(/\*(.+?)\*/),S=n.match(/`(.+?)`/),a=n.match(/\[(.+?)\]\((.+?)\)/),i=[s?{match:s,type:"boldItalic"}:null,o?{match:o,type:"bold"}:null,R?{match:R,type:"italic"}:null,S?{match:S,type:"code"}:null,a?{match:a,type:"link"}:null].filter(Boolean);if(i.length===0){t.push(T.jsx(Fe.Fragment,{children:n},r++));break}const A=i.reduce((O,c)=>(O.match.index??0)<(c.match.index??0)?O:c),I=A.match.index??0;switch(I>0&&t.push(T.jsx(Fe.Fragment,{children:n.slice(0,I)},r++)),A.type){case"boldItalic":t.push(T.jsx("strong",{style:{fontStyle:"italic"},children:A.match[1]},r++));break;case"bold":t.push(T.jsx("strong",{children:A.match[1]},r++));break;case"italic":t.push(T.jsx("em",{children:A.match[1]},r++));break;case"code":t.push(T.jsx("code",{style:{background:e.editorBg,border:`1px solid ${e.cellBorder}`,borderRadius:4,padding:"1px 5px",fontSize:"0.9em",fontFamily:e.fontMono,color:e.accent},children:A.match[1]},r++));break;case"link":t.push(T.jsx("a",{href:A.match[2],target:"_blank",rel:"noopener noreferrer",style:{color:e.accent,textDecoration:"underline"},children:A.match[1]},r++));break}n=n.slice(I+A.match[0].length)}return T.jsx(T.Fragment,{children:t})}function Ls({value:E,onChange:e,onRun:t,themeMode:n}){const r=H[n],[s,o]=l.useState(!1),R=l.useRef(null);l.useEffect(()=>{if(s&&R.current){R.current.focus();const A=R.current;A.style.height="auto",A.style.height=`${Math.max(A.scrollHeight,80)}px`}},[s]);const S=()=>{o(!1)},a=A=>{if(A.key==="Escape"&&o(!1),A.key==="Enter"&&A.shiftKey&&(A.preventDefault(),o(!1),t==null||t()),A.key==="Tab"){A.preventDefault();const I=A.currentTarget,O=I.selectionStart,c=I.selectionEnd,d=E.slice(0,O)+" "+E.slice(c);e(d),requestAnimationFrame(()=>{I.selectionStart=I.selectionEnd=O+2})}},i=A=>{e(A.target.value);const I=A.target;I.style.height="auto",I.style.height=`${Math.max(I.scrollHeight,80)}px`};return s?T.jsx("textarea",{ref:R,value:E,onChange:i,onBlur:S,onKeyDown:a,placeholder:"Write markdown here...",spellCheck:!1,style:{display:"block",width:"100%",minHeight:80,padding:"12px 16px",background:r.editorBg,color:r.textPrimary,border:"none",outline:"none",resize:"none",fontFamily:r.fontMono,fontSize:13,lineHeight:"20px",borderRadius:0,caretColor:r.accent}}):E.trim()?T.jsx("div",{onDoubleClick:()=>o(!0),title:"Double-click to edit",style:{padding:"12px 16px",cursor:"text",minHeight:48},children:cs(E,r)}):T.jsx("div",{onDoubleClick:()=>o(!0),style:{padding:"12px 16px",color:r.textMuted,fontFamily:r.font,fontSize:13,fontStyle:"italic",cursor:"text",minHeight:48,display:"flex",alignItems:"center"},children:"Double-click to add markdown..."})}function Cs({cell:E,themeMode:e,onApplyParam:t}){const{dispatch:n}=F(),r=H[e],[s,o]=l.useState(!1),R=E.paramConfig??{paramType:"text",label:"Parameter",defaultValue:"",options:[]},S=E.paramValue??R.defaultValue,a=O=>{n({type:"UPDATE_CELL",id:E.id,updates:{paramConfig:{...R,...O}}})},i=O=>{n({type:"SET_PARAM_VALUE",id:E.id,value:O})},A=(R.options??[]).map(O=>O.trim()).filter(Boolean),I=E.name?`{{${E.name}}}`:null;return T.jsxs("div",{style:{background:r.cellBg,border:`1px solid ${r.cellBorder}`,borderLeft:"3px solid #e3b341",borderRadius:8,overflow:"hidden"},children:[s&&T.jsxs("div",{style:{background:r.tableHeaderBg,borderBottom:`1px solid ${r.cellBorder}`,padding:"12px 14px",display:"flex",flexDirection:"column",gap:10},children:[T.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:2},children:[T.jsx("span",{style:{fontSize:11,fontWeight:600,letterSpacing:"0.06em",color:"#e3b341",fontFamily:r.fontMono,textTransform:"uppercase"},children:"Configure Parameter"}),T.jsx("button",{onClick:()=>o(!1),title:"Done",style:{background:"#e3b341",border:"none",borderRadius:5,cursor:"pointer",color:"#000",fontSize:11,fontWeight:700,fontFamily:r.font,padding:"3px 10px",display:"flex",alignItems:"center",gap:4},children:"✓ Done"})]}),T.jsxs("div",{style:{display:"flex",gap:10,flexWrap:"wrap"},children:[T.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:3,flex:"1 1 120px"},children:[T.jsx("span",{style:{fontSize:10,color:r.textMuted,fontFamily:r.font},children:"Variable name"}),T.jsx("input",{value:E.name??"",onChange:O=>n({type:"UPDATE_CELL",id:E.id,updates:{name:O.target.value||void 0}}),placeholder:"e.g. start_date",style:{background:r.inputBg,border:`1px solid ${r.inputBorder}`,borderRadius:4,color:r.textPrimary,fontSize:12,fontFamily:r.fontMono,padding:"4px 7px",outline:"none"}})]}),T.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:3,flex:"1 1 120px"},children:[T.jsx("span",{style:{fontSize:10,color:r.textMuted,fontFamily:r.font},children:"Display label"}),T.jsx("input",{value:R.label,onChange:O=>a({label:O.target.value}),placeholder:"e.g. Start Date",style:{background:r.inputBg,border:`1px solid ${r.inputBorder}`,borderRadius:4,color:r.textPrimary,fontSize:12,fontFamily:r.font,padding:"4px 7px",outline:"none"}})]}),T.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:3,flex:"1 1 100px"},children:[T.jsx("span",{style:{fontSize:10,color:r.textMuted,fontFamily:r.font},children:"Type"}),T.jsxs("select",{value:R.paramType,onChange:O=>a({paramType:O.target.value}),style:{background:r.inputBg,border:`1px solid ${r.inputBorder}`,borderRadius:4,color:r.textPrimary,fontSize:12,fontFamily:r.font,padding:"4px 7px",outline:"none"},children:[T.jsx("option",{value:"text",children:"Text"}),T.jsx("option",{value:"number",children:"Number"}),T.jsx("option",{value:"date",children:"Date"}),T.jsx("option",{value:"select",children:"Select"})]})]}),T.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:3,flex:"1 1 120px"},children:[T.jsx("span",{style:{fontSize:10,color:r.textMuted,fontFamily:r.font},children:"Default value"}),T.jsx("input",{type:R.paramType==="number"?"number":R.paramType==="date"?"date":"text",value:R.defaultValue,onChange:O=>a({defaultValue:O.target.value}),style:{background:r.inputBg,border:`1px solid ${r.inputBorder}`,borderRadius:4,color:r.textPrimary,fontSize:12,fontFamily:r.font,padding:"4px 7px",outline:"none"}})]})]}),R.paramType==="select"&&T.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:3},children:[T.jsx("span",{style:{fontSize:10,color:r.textMuted,fontFamily:r.font},children:"Options (one per line)"}),T.jsx("textarea",{value:(R.options??[]).join(`
333
+ `),onChange:O=>a({options:O.target.value.split(`
334
+ `)}),rows:4,placeholder:`Option A
335
+ Option B
336
+ Option C`,style:{background:r.inputBg,border:`1px solid ${r.inputBorder}`,borderRadius:4,color:r.textPrimary,fontSize:12,fontFamily:r.fontMono,padding:"5px 7px",outline:"none",resize:"vertical"}})]})]}),T.jsxs("div",{style:{padding:"12px 14px",display:"flex",alignItems:"center",gap:12,flexWrap:"wrap"},children:[T.jsx("button",{onClick:()=>o(O=>!O),title:s?"Close config":"Configure parameter",style:{background:s?"#e3b34118":"transparent",border:`1px solid ${s?"#e3b341":r.cellBorder}`,borderRadius:5,cursor:"pointer",color:s?"#e3b341":r.textMuted,width:26,height:26,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,transition:"all 0.15s"},children:s?T.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.749.749 0 1 1 1.06-1.06L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"})}):T.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M8 0a8.2 8.2 0 0 1 .701.031C9.444.095 9.99.645 10.16 1.29l.288 1.107c.018.066.079.158.212.224.231.114.454.243.668.386.123.082.233.09.299.071l1.103-.303c.644-.176 1.392.021 1.82.63.27.385.506.792.704 1.218.315.675.111 1.422-.364 1.891l-.814.806c-.049.048-.098.147-.088.294.016.257.016.515 0 .772-.01.147.038.246.088.294l.814.806c.475.469.679 1.216.364 1.891a7.977 7.977 0 0 1-.704 1.217c-.428.61-1.176.807-1.82.63l-1.102-.302c-.067-.019-.177-.011-.3.071a5.909 5.909 0 0 1-.668.386c-.133.066-.194.158-.211.224l-.29 1.106c-.168.646-.715 1.196-1.458 1.26a8.006 8.006 0 0 1-1.402 0c-.743-.064-1.289-.614-1.458-1.26l-.289-1.106c-.018-.066-.079-.158-.212-.224a5.738 5.738 0 0 1-.668-.386c-.123-.082-.233-.09-.299-.071l-1.103.303c-.644.176-1.392-.021-1.82-.63a8.12 8.12 0 0 1-.704-1.218c-.315-.675-.111-1.422.363-1.891l.815-.806c.05-.048.098-.147.088-.294a6.214 6.214 0 0 1 0-.772c.01-.147-.038-.246-.088-.294l-.815-.806C.635 6.045.431 5.298.746 4.623a7.92 7.92 0 0 1 .704-1.217c.428-.61 1.176-.807 1.82-.63l1.102.302c.067.019.177.011.3-.071.214-.143.437-.272.668-.386.133-.066.194-.158.211-.224l.29-1.106C6.009.645 6.556.095 7.299.03 7.53.01 7.764 0 8 0Zm-.571 1.525c-.036.003-.108.036-.137.146l-.289 1.105c-.147.561-.549.967-.998 1.189-.173.086-.34.183-.5.29-.417.278-.97.423-1.529.27l-1.103-.303c-.109-.03-.175.016-.195.045-.22.312-.412.644-.573.99-.014.031-.021.11.059.19l.815.806c.411.406.562.957.53 1.456a4.709 4.709 0 0 0 0 .582c.032.499-.119 1.05-.53 1.456l-.815.806c-.081.08-.073.159-.059.19.162.346.353.677.573.989.02.03.085.076.195.046l1.102-.303c.56-.153 1.113-.008 1.53.27.161.107.328.204.501.29.447.222.85.629.997 1.189l.289 1.105c.029.109.101.143.137.146a6.6 6.6 0 0 0 1.142 0c.036-.003.108-.036.137-.146l.289-1.105c.147-.561.549-.967.998-1.189.173-.086.34-.183.5-.29.417-.278.97-.423 1.529-.27l1.103.303c.109.029.175-.016.195-.045.22-.313.411-.644.573-.99.014-.031.021-.11-.059-.19l-.815-.806c-.411-.406-.562-.957-.53-1.456a4.709 4.709 0 0 0 0-.582c-.032-.499.119-1.05.53-1.456l.815-.806c.081-.08.073-.159.059-.19a6.464 6.464 0 0 0-.573-.989c-.02-.03-.085-.076-.195-.046l-1.102.303c-.56.153-1.113.008-1.53-.27a4.44 4.44 0 0 0-.501-.29c-.447-.222-.85-.629-.997-1.189l-.289-1.105c-.029-.11-.101-.143-.137-.146a6.6 6.6 0 0 0-1.142 0ZM8 5.5a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5ZM8 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"})})}),T.jsx("span",{style:{fontSize:13,fontWeight:500,fontFamily:r.font,color:r.textSecondary,flexShrink:0},children:R.label}),T.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:3},children:[R.paramType==="select"?T.jsx("select",{value:S,onChange:O=>i(O.target.value),style:{background:r.inputBg,border:`1px solid ${r.inputBorder}`,borderRadius:5,color:r.textPrimary,fontSize:13,fontFamily:r.font,padding:"5px 10px",outline:"none",minWidth:160},children:A.length===0?T.jsx("option",{value:"",children:"— no options configured —"}):A.map(O=>T.jsx("option",{value:O,children:O},O))}):T.jsx("input",{type:R.paramType,value:S,onChange:O=>i(O.target.value),style:{background:r.inputBg,border:`1px solid ${r.inputBorder}`,borderRadius:5,color:r.textPrimary,fontSize:13,fontFamily:R.paramType==="number"?r.fontMono:r.font,padding:"5px 10px",outline:"none",minWidth:160}}),I&&T.jsx("span",{style:{fontSize:10,fontFamily:r.fontMono,color:"#e3b341",opacity:.8},children:I})]}),S&&T.jsx("span",{style:{fontSize:12,fontFamily:r.fontMono,color:r.textPrimary,background:"#e3b34118",border:"1px solid #e3b34140",borderRadius:4,padding:"2px 8px",flexShrink:0},children:S}),E.name&&t&&T.jsx("button",{onClick:()=>t(E.name),title:`Re-run cells that use {{${E.name}}}`,style:{background:"#e3b341",border:"none",borderRadius:5,cursor:"pointer",color:"#000",fontSize:11,fontWeight:600,fontFamily:r.font,padding:"4px 12px",flexShrink:0,transition:"opacity 0.15s"},children:"Apply"})]})]})}const ds=[{id:"select-all",label:"Select all rows",description:"Read all rows from a CSV file with a row limit",category:"SQL",code:"SELECT * FROM read_csv_auto('data/filename.csv') LIMIT 100"},{id:"group-by",label:"Group and aggregate",description:"Group rows and compute count + sum",category:"SQL",code:`SELECT
337
+ category,
338
+ COUNT(*) AS count,
339
+ SUM(amount) AS total
340
+ FROM read_csv_auto('data/filename.csv')
341
+ GROUP BY category
342
+ ORDER BY total DESC`},{id:"filter-date",label:"Filter by date range",description:"Filter rows between two dates",category:"SQL",code:`SELECT *
343
+ FROM read_csv_auto('data/filename.csv')
344
+ WHERE date_column >= '2024-01-01'
345
+ AND date_column < '2025-01-01'`},{id:"window-rank",label:"Window function: rank",description:"Rank rows within groups using ROW_NUMBER()",category:"SQL",code:`SELECT
346
+ *,
347
+ ROW_NUMBER() OVER (PARTITION BY category ORDER BY amount DESC) AS rank
348
+ FROM read_csv_auto('data/filename.csv')`},{id:"cte",label:"CTE (WITH clause)",description:"Define a named subquery with WITH",category:"SQL",code:`WITH base AS (
349
+ SELECT *
350
+ FROM read_csv_auto('data/filename.csv')
351
+ WHERE amount > 0
352
+ )
353
+ SELECT
354
+ category,
355
+ SUM(amount) AS total
356
+ FROM base
357
+ GROUP BY category`},{id:"join",label:"Join two tables",description:"Join two CSV files on a shared key",category:"SQL",code:`SELECT a.*, b.name
358
+ FROM read_csv_auto('data/table_a.csv') AS a
359
+ JOIN read_csv_auto('data/table_b.csv') AS b
360
+ ON a.id = b.id`},{id:"pivot",label:"Pivot / unpivot",description:"Pivot a column into multiple columns",category:"SQL",code:`SELECT *
361
+ FROM (
362
+ SELECT category, quarter, amount
363
+ FROM read_csv_auto('data/filename.csv')
364
+ ) PIVOT (SUM(amount) FOR quarter IN ('Q1', 'Q2', 'Q3', 'Q4'))`},{id:"dql-block",label:"DQL block (basic)",description:"Minimal DQL block with a table visualization",category:"DQL",code:`block "My Block" {
365
+ domain = "analytics"
366
+ type = "custom"
367
+ description = "Describe what this block does"
368
+ owner = "data-team"
369
+ tags = ["analytics"]
370
+
371
+ query = """
372
+ SELECT *
373
+ FROM read_csv_auto('data/filename.csv')
374
+ LIMIT 100
375
+ """
376
+
377
+ visualization {
378
+ chart = "table"
379
+ }
380
+ }`},{id:"dql-block-bar",label:"DQL block with bar chart",description:"DQL block with params, bar chart, and a test assertion",category:"DQL",code:`block "Revenue by Segment" {
381
+ domain = "revenue"
382
+ type = "custom"
383
+ description = "Revenue grouped by segment"
384
+ owner = "data-team"
385
+ tags = ["revenue"]
386
+
387
+ params {
388
+ period = "current_quarter"
389
+ }
390
+
391
+ query = """
392
+ SELECT
393
+ segment_tier AS segment,
394
+ SUM(amount) AS revenue
395
+ FROM read_csv_auto('data/revenue.csv')
396
+ WHERE fiscal_period = \${period}
397
+ GROUP BY segment_tier
398
+ ORDER BY revenue DESC
399
+ """
400
+
401
+ visualization {
402
+ chart = "bar"
403
+ x = segment
404
+ y = revenue
405
+ }
406
+
407
+ tests {
408
+ assert row_count > 0
409
+ }
410
+ }`},{id:"dql-semantic-metric",label:"Semantic metric reference",description:"Reference a metric and dimension from the semantic layer in a SQL cell",category:"DQL",code:`SELECT @dim(segment), @metric(total_revenue)
411
+ FROM fct_revenue
412
+ GROUP BY @dim(segment)
413
+ ORDER BY @metric(total_revenue) DESC`},{id:"dql-semantic-block",label:"Semantic block (inline)",description:"DQL block that references a named metric from the semantic layer — no SQL duplication",category:"DQL",code:`block "ARR by Plan Tier" {
414
+ domain = "revenue"
415
+ type = "semantic"
416
+ owner = "data-team"
417
+ description = "Annual Recurring Revenue by subscription plan tier"
418
+ tags = ["arr", "revenue", "saas"]
419
+
420
+ metric = "arr"
421
+ dimensions = ["plan_tier"]
422
+
423
+ visualization {
424
+ chart = "bar"
425
+ x = plan_tier
426
+ y = arr
427
+ }
428
+
429
+ tests {
430
+ assert row_count > 0
431
+ }
432
+ }`},{id:"revenue-by-segment",label:"Revenue by segment",description:"Aggregate revenue totals, deal count, and average deal size per segment",category:"Analysis",code:`SELECT
433
+ segment_tier,
434
+ SUM(amount) AS total_revenue,
435
+ COUNT(*) AS deals,
436
+ ROUND(AVG(amount), 0) AS avg_deal
437
+ FROM read_csv_auto('data/revenue.csv')
438
+ GROUP BY segment_tier
439
+ ORDER BY total_revenue DESC`},{id:"quarterly-trend",label:"Quarterly trend",description:"Revenue totals grouped by fiscal year and quarter",category:"Analysis",code:`SELECT
440
+ fiscal_year || ' ' || fiscal_quarter AS period,
441
+ SUM(amount) AS revenue
442
+ FROM read_csv_auto('data/revenue.csv')
443
+ GROUP BY fiscal_year, fiscal_quarter
444
+ ORDER BY fiscal_year, fiscal_quarter`}];function _s({onInsert:E,themeMode:e,cellType:t}){const n=H[e],[r,s]=l.useState(!1),[o,R]=l.useState(null),S=l.useRef(null),a=ds.filter(I=>t==="dql"?I.category==="DQL":I.category==="SQL"||I.category==="Analysis"),i=Array.from(new Set(a.map(I=>I.category)));l.useEffect(()=>{if(!r)return;function I(O){S.current&&!S.current.contains(O.target)&&s(!1)}return document.addEventListener("mousedown",I),()=>document.removeEventListener("mousedown",I)},[r]);function A(I){E(I),s(!1)}return T.jsxs("div",{ref:S,style:{position:"relative",display:"inline-block"},children:[T.jsxs("button",{title:"Insert template snippet",onClick:()=>s(I=>!I),style:{height:22,padding:"0 8px",fontSize:10,fontFamily:n.font,fontWeight:600,letterSpacing:"0.04em",color:r?n.accent:n.textMuted,background:r?`${n.accent}15`:"transparent",border:`1px solid ${r?n.accent+"50":n.btnBorder}`,borderRadius:4,cursor:"pointer",display:"flex",alignItems:"center",gap:4,transition:"all 0.15s",whiteSpace:"nowrap"},children:[T.jsx("svg",{width:"10",height:"10",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"})}),"Templates"]}),r&&T.jsx("div",{style:{position:"absolute",top:"calc(100% + 4px)",left:0,zIndex:300,width:300,maxHeight:360,overflowY:"auto",background:n.modalBg,border:`1px solid ${n.cellBorder}`,borderRadius:8,boxShadow:"0 8px 24px rgba(0,0,0,0.3)",padding:"6px 0"},children:i.map(I=>T.jsxs("div",{children:[T.jsx("div",{style:{padding:"6px 12px 4px",fontSize:10,fontWeight:700,fontFamily:n.font,letterSpacing:"0.08em",textTransform:"uppercase",color:n.textMuted},children:I}),a.filter(O=>O.category===I).map(O=>T.jsxs("button",{onMouseEnter:()=>R(O.id),onMouseLeave:()=>R(null),onClick:()=>A(O.code),style:{width:"100%",padding:"7px 12px",textAlign:"left",background:o===O.id?n.sidebarItemHover:"transparent",border:"none",cursor:"pointer",display:"flex",flexDirection:"column",gap:2,transition:"background 0.1s"},children:[T.jsx("span",{style:{fontSize:12,fontWeight:600,fontFamily:n.font,color:n.textPrimary,lineHeight:1.4},children:O.label}),T.jsx("span",{style:{fontSize:11,fontFamily:n.font,color:n.textMuted,lineHeight:1.4},children:O.description})]},O.id))]},I))})]})}const Qe=500;function Ds(E){return typeof E=="number"?!0:typeof E=="string"?!isNaN(Number(E))&&E.trim()!=="":!1}function us(E){return E==null?"":typeof E=="object"?JSON.stringify(E):String(E)}function ET({result:E,themeMode:e}){const t=H[e],[n,r]=l.useState(null),s=E.rows.slice(0,Qe),o=E.rows.length>Qe;return E.columns.length===0?T.jsx("div",{style:{padding:"12px 16px",color:t.textMuted,fontSize:12,fontFamily:t.font,fontStyle:"italic"},children:"Query executed successfully. No columns to display."}):T.jsxs("div",{style:{maxHeight:400,overflow:"auto",position:"relative"},children:[T.jsxs("table",{style:{width:"100%",borderCollapse:"collapse",tableLayout:"auto",fontSize:12,fontFamily:t.fontMono},children:[T.jsx("thead",{children:T.jsx("tr",{children:E.columns.map(R=>T.jsx("th",{style:{background:t.tableHeaderBg,color:t.textSecondary,fontWeight:600,fontSize:11,textAlign:"left",padding:"6px 12px",borderBottom:`1px solid ${t.tableBorder}`,borderRight:`1px solid ${t.tableBorder}`,minWidth:80,maxWidth:300,whiteSpace:"nowrap",position:"sticky",top:0,zIndex:1,fontFamily:t.font,letterSpacing:"0.03em",overflow:"hidden",textOverflow:"ellipsis"},children:R},R))})}),T.jsx("tbody",{children:s.map((R,S)=>T.jsx("tr",{onMouseEnter:()=>r(S),onMouseLeave:()=>r(null),style:{background:n===S?t.tableRowHover:"transparent",transition:"background 0.1s"},children:E.columns.map(a=>{const i=R[a],A=i==null,I=Ds(i);return T.jsx("td",{style:{padding:"5px 12px",borderBottom:`1px solid ${t.tableBorder}`,borderRight:`1px solid ${t.tableBorder}`,color:A?t.textMuted:t.textPrimary,fontStyle:A?"italic":"normal",textAlign:I?"right":"left",whiteSpace:"nowrap",maxWidth:300,overflow:"hidden",textOverflow:"ellipsis"},children:A?"—":us(i)},a)})},S))})]}),o&&T.jsxs("div",{style:{padding:"8px 12px",color:t.textMuted,fontSize:11,fontFamily:t.font,borderTop:`1px solid ${t.tableBorder}`,background:t.tableHeaderBg,fontStyle:"italic"},children:["Showing ",Qe.toLocaleString()," of ",E.rows.length.toLocaleString()," rows"]})]})}const ps=/date|time|at|day|month|year/i,HE=/^(label|name|category)$/i,FE=/^(value|count|total|revenue|amount)$/i;function ME(E){return typeof E=="number"?!0:typeof E=="string"?E.trim()!==""&&!isNaN(Number(E)):!1}function Ps(E){return typeof E=="string"||typeof E=="number"}function hE(E,e){if(e!=null&&e.chart){const t=e.chart.toLowerCase();if(t==="bar"||t==="line"||t==="pie"||t==="kpi")return t;if(t==="table")return"table"}return Ms(E)}function Ms(E){const{columns:e,rows:t}=E;if(e.length<2||t.length===0)return"table";const n=e[0],r=e[1],s=t.slice(0,5),o=s.every(i=>ME(i[r])),R=s.every(i=>Ps(i[n]));if(ps.test(n)&&o&&R)return"line";const S=e.find(i=>HE.test(i)),a=e.find(i=>FE.test(i));return S&&a&&s.every(A=>ME(A[a]))||e.length===2&&R&&o?"bar":"table"}function Pe(E){return Math.abs(E)>=1e6?`${(E/1e6).toFixed(1)}M`:Math.abs(E)>=1e3?`${(E/1e3).toFixed(1)}K`:E.toLocaleString(void 0,{maximumFractionDigits:2})}const Ze=20;function hs({result:E,themeMode:e}){const t=H[e],[n,r]=l.useState(null),s=E.columns.find(D=>HE.test(D))??E.columns[0],o=E.columns.find(D=>FE.test(D))??E.columns[1],R=E.rows.slice(0,Ze).map(D=>({label:String(D[s]??""),value:Number(D[o]??0)})),S=E.rows.length>Ze,a=Math.max(...R.map(D=>D.value),1),i=28,A=120,I=60,O=6,c=12,d=R.length*(i+O)+c*2;return T.jsxs("div",{style:{padding:"8px 0"},children:[T.jsx("svg",{width:"100%",height:d,style:{display:"block",overflow:"visible"},viewBox:`0 0 600 ${d}`,preserveAspectRatio:"xMidYMid meet",children:R.map((D,u)=>{const _=c+u*(i+O),m=600-A-I-24,G=Math.max(D.value/a*m,2),x=n===u;return T.jsxs("g",{onMouseEnter:()=>r(u),onMouseLeave:()=>r(null),style:{cursor:"default"},children:[T.jsx("text",{x:A-8,y:_+i/2+4,textAnchor:"end",fontSize:11,fontFamily:t.font,fill:t.textSecondary,children:D.label.length>16?D.label.slice(0,15)+"…":D.label}),T.jsx("rect",{x:A,y:_,width:G,height:i,rx:3,fill:x?t.accentHover:t.accent,style:{transition:"fill 0.15s"}}),T.jsx("text",{x:A+G+6,y:_+i/2+4,textAnchor:"start",fontSize:11,fontFamily:t.fontMono,fill:t.textMuted,children:Pe(D.value)})]},u)})}),S&&T.jsxs("div",{style:{fontSize:11,color:t.textMuted,fontFamily:t.font,fontStyle:"italic",padding:"4px 12px"},children:["Showing ",Ze," of ",E.rows.length," rows"]})]})}function fs(E){const e=new Date(E);if(!isNaN(e.getTime())){if(/^\d{4}-\d{2}-\d{2}/.test(E))return e.toLocaleDateString("en-US",{month:"short",day:"numeric"});if(/^\d{4}-\d{2}$/.test(E))return e.toLocaleDateString("en-US",{year:"numeric",month:"short"})}return String(E).length>8?String(E).slice(0,8):String(E)}function ms({result:E,themeMode:e}){const t=H[e],[n,r]=l.useState(null),s=E.columns[0],o=E.columns[1],R=E.rows.map(g=>({label:String(g[s]??""),value:Number(g[o]??0)}));if(R.length<2)return null;const S=560,a=200,i=52,A=16,I=16,O=36,c=S-i-A,d=a-I-O,D=Math.min(...R.map(g=>g.value)),_=Math.max(...R.map(g=>g.value))-D||1,m=c/(R.length-1),G=g=>i+g*m,x=g=>I+d-(g-D)/_*d,P=R.map((g,p)=>({x:G(p),y:x(g.value)})),y=P.reduce((g,p,K)=>{if(K===0)return`M ${p.x},${p.y}`;const Re=P[K-1],lT=Re.x+(p.x-Re.x)/2,NT=Re.y,cT=Re.x+(p.x-Re.x)/2,LT=p.y;return`${g} C ${lT},${NT} ${cT},${LT} ${p.x},${p.y}`},""),B=`${y} L ${P[P.length-1].x},${I+d} L ${i},${I+d} Z`,w=5,b=Array.from({length:w+1},(g,p)=>{const K=D+_*p/w,Re=x(K);return{val:K,y:Re}}),M=Math.ceil(R.length/8),h=R.filter((g,p)=>p%M===0||p===R.length-1);return T.jsx("div",{style:{position:"relative",padding:"8px 0"},children:T.jsxs("svg",{width:"100%",height:a,viewBox:`0 0 ${S} ${a}`,preserveAspectRatio:"xMidYMid meet",style:{display:"block",overflow:"visible"},onMouseLeave:()=>r(null),children:[b.map((g,p)=>T.jsxs("g",{children:[T.jsx("line",{x1:i,y1:g.y,x2:i+c,y2:g.y,stroke:t.tableBorder,strokeWidth:.5}),T.jsx("text",{x:i-6,y:g.y+4,textAnchor:"end",fontSize:10,fontFamily:t.fontMono,fill:t.textMuted,children:Pe(g.val)})]},p)),T.jsx("path",{d:B,fill:t.accent,opacity:.15}),T.jsx("path",{d:y,fill:"none",stroke:t.accent,strokeWidth:2,strokeLinejoin:"round"}),P.map((g,p)=>T.jsx("circle",{cx:g.x,cy:g.y,r:3,fill:t.accent,style:{cursor:"crosshair"},onMouseEnter:()=>r({x:g.x,y:g.y,label:R[p].label,value:R[p].value})},p)),h.map((g,p)=>{const K=R.indexOf(g);return T.jsx("text",{x:G(K),y:I+d+16,textAnchor:"middle",fontSize:10,fontFamily:t.font,fill:t.textMuted,children:fs(g.label)},p)}),T.jsx("line",{x1:i,y1:I,x2:i,y2:I+d,stroke:t.tableBorder,strokeWidth:1}),T.jsx("line",{x1:i,y1:I+d,x2:i+c,y2:I+d,stroke:t.tableBorder,strokeWidth:1}),n&&T.jsxs("g",{children:[T.jsx("rect",{x:n.x+8,y:n.y-20,width:90,height:32,rx:4,fill:t.cellBg,stroke:t.cellBorder,strokeWidth:1}),T.jsx("text",{x:n.x+13,y:n.y-8,fontSize:10,fontFamily:t.font,fill:t.textSecondary,children:n.label.length>10?n.label.slice(0,10)+"…":n.label}),T.jsx("text",{x:n.x+13,y:n.y+6,fontSize:11,fontFamily:t.fontMono,fill:t.textPrimary,fontWeight:600,children:Pe(n.value)})]})]})})}const Us=12,ZE=["#388bfd","#56d364","#e3b341","#f78166","#a371f7","#39c5cf","#ffa657","#ff7b72","#89d185","#d2a8ff","#58a6ff","#3fb950"];function xs({result:E,themeMode:e,chartConfig:t}){const n=H[e],[r,s]=l.useState(null),o=(t!=null&&t.x?E.columns.find(u=>u===t.x):void 0)??E.columns.find(u=>HE.test(u))??E.columns[0],R=(t!=null&&t.y?E.columns.find(u=>u===t.y):void 0)??E.columns.find(u=>FE.test(u))??E.columns[1],S=E.rows.slice(0,Us).map(u=>({label:String(u[o]??""),value:Math.abs(Number(u[R]??0))})),a=S.reduce((u,_)=>u+_.value,0)||1,i=90,A=90,I=70,O=40,c=[];let d=-Math.PI/2;S.forEach((u,_)=>{const m=u.value/a*2*Math.PI,G=d,x=d+m,P=i+I*Math.cos(G),y=A+I*Math.sin(G),B=i+I*Math.cos(x),w=A+I*Math.sin(x),b=i+O*Math.cos(G),M=A+O*Math.sin(G),h=i+O*Math.cos(x),g=A+O*Math.sin(x),p=m>Math.PI?1:0,K=[`M ${P} ${y}`,`A ${I} ${I} 0 ${p} 1 ${B} ${w}`,`L ${h} ${g}`,`A ${O} ${O} 0 ${p} 0 ${b} ${M}`,"Z"].join(" ");c.push({path:K,color:ZE[_%ZE.length],label:u.label,value:u.value,pct:u.value/a*100}),d=x});const D=r!==null?c[r]:null;return T.jsxs("div",{style:{display:"flex",alignItems:"center",gap:16,padding:"8px 12px",flexWrap:"wrap"},children:[T.jsxs("svg",{width:180,height:180,style:{flexShrink:0},onMouseLeave:()=>s(null),children:[c.map((u,_)=>T.jsx("path",{d:u.path,fill:u.color,opacity:r===null||r===_?1:.55,style:{cursor:"pointer",transition:"opacity 0.15s"},onMouseEnter:()=>s(_)},_)),T.jsx("text",{x:i,y:A-5,textAnchor:"middle",fontSize:11,fontFamily:n.fontMono,fill:n.textSecondary,children:Pe(D?D.value:a)}),T.jsx("text",{x:i,y:A+9,textAnchor:"middle",fontSize:9,fontFamily:n.font,fill:n.textMuted,children:D?`${D.pct.toFixed(1)}%`:"total"})]}),T.jsx("div",{style:{display:"flex",flexDirection:"column",gap:4,maxHeight:180,overflowY:"auto",flex:1},children:c.map((u,_)=>T.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,cursor:"default",opacity:r===null||r===_?1:.5},onMouseEnter:()=>s(_),onMouseLeave:()=>s(null),children:[T.jsx("div",{style:{width:10,height:10,borderRadius:2,background:u.color,flexShrink:0}}),T.jsx("span",{style:{fontSize:11,fontFamily:n.font,color:n.textSecondary,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:u.label}),T.jsxs("span",{style:{fontSize:11,fontFamily:n.fontMono,color:n.textMuted,marginLeft:"auto",flexShrink:0},children:[u.pct.toFixed(1),"%"]})]},_))})]})}function ys({result:E,themeMode:e,chartConfig:t}){const n=H[e],r=E.rows[0];if(!r)return null;const s=t!=null&&t.y&&E.columns.includes(t.y)?t.y:E.columns.find(i=>ME(r[i]))??E.columns[0],o=r[s],R=Number(o),S=isNaN(R)?String(o):R.toLocaleString(void 0,{maximumFractionDigits:2}),a=(t==null?void 0:t.title)??(t!=null&&t.x&&r[t.x]?String(r[t.x]):s);return T.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:"32px 24px",gap:8},children:[T.jsx("span",{style:{fontSize:40,fontWeight:700,fontFamily:n.fontMono,color:n.accent,lineHeight:1.1},children:S}),T.jsx("span",{style:{fontSize:13,fontFamily:n.font,color:n.textMuted,textTransform:"uppercase",letterSpacing:"0.08em",fontWeight:500},children:a})]})}function gs({result:E,themeMode:e,chartConfig:t}){const n=H[e],r=hE(E,t),s=r!=="table",[o,R]=l.useState(s?"chart":"table"),S=t!=null&&t.x&&E.columns.includes(t.x)?t.x:void 0,a=t!=null&&t.y&&E.columns.includes(t.y)?t.y:void 0,i=S||a?Gs(E,S,a):E,A=[];t!=null&&t.x&&!E.columns.includes(t.x)&&A.push(`Column '${t.x}' not found in results — using auto-detection.`),t!=null&&t.y&&!E.columns.includes(t.y)&&A.push(`Column '${t.y}' not found in results — using auto-detection.`);const I=r==="line"?"Line":r==="pie"?"Pie":r==="kpi"?"KPI":"Bar";return r==="kpi"?T.jsxs("div",{children:[A.length>0&&T.jsx(qE,{warnings:A,t:n}),T.jsx(ys,{result:E,themeMode:e,chartConfig:t})]}):T.jsxs("div",{children:[A.length>0&&T.jsx(qE,{warnings:A,t:n}),s&&T.jsxs("div",{style:{display:"flex",justifyContent:"flex-end",alignItems:"center",padding:"4px 12px",gap:4,borderBottom:`1px solid ${n.cellBorder}`,background:`${n.tableHeaderBg}60`},children:[T.jsx("span",{style:{fontSize:10,color:n.textMuted,fontFamily:n.font,marginRight:4},children:"View:"}),["chart","table"].map(O=>T.jsx("button",{onClick:()=>R(O),style:{padding:"2px 8px",fontSize:10,fontFamily:n.font,borderRadius:4,border:`1px solid ${o===O?n.accent:n.btnBorder}`,background:o===O?`${n.accent}20`:"transparent",color:o===O?n.accent:n.textMuted,cursor:"pointer",transition:"all 0.15s",textTransform:"capitalize"},children:O==="chart"?I:"Table"},O))]}),o==="table"||!s?T.jsx(ET,{result:E,themeMode:e}):r==="line"?T.jsx(ms,{result:i,themeMode:e}):r==="pie"?T.jsx(xs,{result:E,themeMode:e,chartConfig:t}):T.jsx(hs,{result:i,themeMode:e})]})}function qE({warnings:E,t:e}){return T.jsx("div",{style:{padding:"4px 12px",background:"#e3b34115",borderBottom:"1px solid #e3b34130",display:"flex",flexDirection:"column",gap:2},children:E.map((t,n)=>T.jsx("span",{style:{fontSize:11,color:"#e3b341",fontFamily:e.font},children:t},n))})}function Gs(E,e,t){const n=E.columns,r=[];e&&n.includes(e)&&r.push(e),t&&n.includes(t)&&r.push(t);for(const s of n)r.includes(s)||r.push(s);return r.join(",")===n.join(",")?E:{...E,columns:r,rows:E.rows.map(s=>{const o={};for(const R of r)o[R]=s[R];return o})}}function Bs(E){let e=E;try{const a=JSON.parse(E);a&&typeof a.error=="string"&&(e=a.error)}catch{}e=e.replace(/^DuckDB query failed:\s*/i,"").trim();let t="Error";/Parser Error/i.test(e)?t="Syntax Error":/Binder Error/i.test(e)?t="Reference Error":/Conversion Error/i.test(e)?t="Type Error":/Invalid Input Error/i.test(e)?t="Input Error":/IO Error/i.test(e)?t="File Error":/Constraint Error/i.test(e)&&(t="Constraint Error");let n;const r=e.match(/LINE\s+(\d+):/i)??e.match(/\bline\s+(\d+)\b/i);r&&(n=parseInt(r[1],10));let s;const o=e.match(/at or near "([^"]+)"/i);o?s=o[1]:/at end of input/i.test(e)&&(s="end of input");let R;t==="Syntax Error"?s==='"""'||e.includes('"""')?R="Triple-quoted strings are DQL block syntax. Use a DQL cell for block syntax, or plain SQL in a SQL cell.":s==="end of input"||/at end of input/i.test(e)?R="Query is incomplete — check for unclosed parentheses, missing keywords, or a dangling comma.":(s===")"||s==="(")&&(R="Mismatched parentheses — check that every opening ( has a closing )."):t==="Reference Error"?/column.*not found|Referenced column/i.test(e)?R="Column not found — check the column name in the Schema panel (left sidebar).":/table.*not found|Table.*does not exist/i.test(e)&&(R="Table not found — make sure the file path is correct and the file exists in your data/ folder."):t==="Input Error"?/No files found/i.test(e)&&(R="File not found — use read_csv_auto('./data/filename.csv'). Open the Schema panel (left sidebar) to see all files available in your data/ folder."):t==="File Error"?R="File could not be read — use read_csv_auto('./data/filename.csv'). Open the Schema panel to browse available data files.":t==="Type Error"&&(R="Type mismatch — you may be comparing or casting incompatible types (e.g. text vs number).");const S=e.replace(/^(Parser Error|Binder Error|Conversion Error|Invalid Input Error|IO Error|Constraint Error):\s*/i,"").trim();return{type:t,message:S,line:n,near:s,hint:R}}function Hs(E,e){const t=E.length,n=e.length,r=Array.from({length:t+1},(s,o)=>Array.from({length:n+1},(R,S)=>o===0?S:S===0?o:0));for(let s=1;s<=t;s++)for(let o=1;o<=n;o++)r[s][o]=E[s-1]===e[o-1]?r[s-1][o-1]:1+Math.min(r[s-1][o],r[s][o-1],r[s-1][o-1]);return r[t][n]}function zE(E,e){const t=E.toLowerCase();let n=null,r=4;for(const s of e){const o=Hs(t,s.toLowerCase());o<r&&(r=o,n=s)}return n}function Fs({message:E,themeMode:e,onFix:t,schemaTables:n}){const r=H[e],s=Bs(E);let o=null;if(n&&n.length>0&&s.type==="Reference Error"){const S=/column.*not found|Referenced column/i.test(s.message),a=/table.*not found|Table.*does not exist/i.test(s.message);if(S&&s.near){const i=n.flatMap(I=>I.columns.map(O=>O.name)),A=zE(s.near,i);A&&(o=`Did you mean column "${A}"?`)}else if(a&&s.near){const i=zE(s.near,n.map(A=>A.name));i&&(o=`Did you mean table "${i}"?`)}}const R=t&&(s.type==="Syntax Error"||s.near===")"||s.near==="("||s.near==="end of input");return T.jsxs("div",{style:{padding:"12px 14px",background:`${r.error}10`,borderLeft:`3px solid ${r.error}`,display:"flex",flexDirection:"column",gap:8},children:[T.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"},children:[T.jsx("div",{style:{flexShrink:0,color:r.error,display:"flex",alignItems:"center"},children:T.jsx("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M4.47.22A.749.749 0 0 1 5 0h6c.199 0 .389.079.53.22l4.25 4.25c.141.14.22.331.22.53v6a.749.749 0 0 1-.22.53l-4.25 4.25A.749.749 0 0 1 11 16H5a.749.749 0 0 1-.53-.22L.22 11.53A.749.749 0 0 1 0 11V5c0-.199.079-.389.22-.53Zm.84 1.28L1.5 5.31v5.38l3.81 3.81h5.38l3.81-3.81V5.31L10.69 1.5ZM8 4a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"})})}),T.jsx("span",{style:{fontSize:10,fontWeight:700,fontFamily:r.fontMono,letterSpacing:"0.06em",textTransform:"uppercase",color:r.error,background:`${r.error}18`,border:`1px solid ${r.error}40`,borderRadius:4,padding:"1px 7px",flexShrink:0},children:s.type}),s.line!==void 0&&T.jsxs("span",{style:{fontSize:10,fontWeight:600,fontFamily:r.fontMono,color:r.textSecondary,background:`${r.textMuted}18`,border:`1px solid ${r.textMuted}30`,borderRadius:4,padding:"1px 7px",flexShrink:0},children:["Line ",s.line]}),s.near&&T.jsxs("span",{style:{fontSize:11,fontFamily:r.fontMono,color:r.textSecondary,flexShrink:0},children:["near ",T.jsxs("span",{style:{color:r.error},children:["“",s.near,"”"]})]})]}),T.jsx("pre",{style:{margin:0,fontFamily:r.fontMono,fontSize:12,color:r.error,lineHeight:1.6,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:s.message}),o&&T.jsxs("div",{style:{fontSize:12,fontFamily:r.font,color:r.textSecondary,display:"flex",alignItems:"center",gap:6},children:[T.jsx("span",{style:{color:r.accent},children:"→"}),o]}),s.hint&&T.jsxs("div",{style:{marginTop:2,padding:"8px 12px",background:`${r.warning}12`,border:`1px solid ${r.warning}40`,borderRadius:6,display:"flex",alignItems:"flex-start",gap:8},children:[T.jsx("span",{style:{flexShrink:0,fontSize:13,lineHeight:1.5},children:"💡"}),T.jsx("span",{style:{fontSize:12,fontFamily:r.font,color:r.warning,lineHeight:1.6},children:s.hint})]}),R&&T.jsxs("button",{onClick:t,style:{alignSelf:"flex-start",marginTop:2,padding:"5px 12px",background:`${r.accent}15`,border:`1px solid ${r.accent}50`,borderRadius:6,color:r.accent,fontSize:12,fontFamily:r.font,fontWeight:500,cursor:"pointer",display:"flex",alignItems:"center",gap:6,transition:"all 0.15s"},onMouseEnter:S=>{S.currentTarget.style.background=`${r.accent}25`},onMouseLeave:S=>{S.currentTarget.style.background=`${r.accent}15`},children:[T.jsx("svg",{width:"11",height:"11",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.253.253 0 0 0-.064.108l-.558 1.953 1.953-.558a.253.253 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z"})}),"Format & Run"]})]})}const ye={source_table:"#8b949e",block:"#56d364",metric:"#388bfd",dimension:"#e3b341",domain:"#d2a8ff",chart:"#f778ba"},bs={source_table:"TBL",block:"BLK",metric:"MET",dimension:"DIM",chart:"CHT",domain:"DOM"},Ys={certified:"#56d364",draft:"#8b949e",review:"#e3b341",deprecated:"#f85149"};function vs(E){const e=E.match(/^\s*block\s+"([^"]+)"/i);return e?e[1]:null}function Vs(E){const e=[],t=/\b(?:FROM|JOIN)\s+([a-zA-Z_][\w.]*)/gi;for(const r of E.matchAll(t)){const s=r[1].toLowerCase();["select","where","group","order","having","limit","union","lateral"].includes(s)||e.push(s)}const n=/\bref\s*\(\s*"([^"]+)"\s*\)/gi;for(const r of E.matchAll(n))e.push(r[1]);return[...new Set(e)]}function Ws(E){const e=[],t=[];for(const n of E.matchAll(/@metric\s*\(\s*([^)]+)\s*\)/gi))e.push(n[1].replace(/['"]/g,"").trim());for(const n of E.matchAll(/@dim\s*\(\s*([^)]+)\s*\)/gi))t.push(n[1].replace(/['"]/g,"").trim());return{metrics:e,dimensions:t}}function et({node:E,t:e}){const t=ye[E.type]??"#8b949e",n=bs[E.type]??E.type.slice(0,3).toUpperCase(),r=E.status?Ys[E.status]:void 0;return T.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"2px 0",fontSize:11,color:e.textPrimary},children:[T.jsx("span",{style:{color:t,fontSize:9,fontWeight:700,width:26,flexShrink:0},children:n}),T.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1},children:E.name}),E.domain&&T.jsx("span",{style:{fontSize:9,color:e.textMuted},children:E.domain}),r&&T.jsx("span",{style:{width:6,height:6,borderRadius:"50%",background:r,flexShrink:0}})]})}function Xs({cellContent:E,cellType:e,cellName:t,themeMode:n,t:r}){const[s,o]=l.useState(!1),[R,S]=l.useState(!1),[a,i]=l.useState([]),[A,I]=l.useState([]),[O,c]=l.useState([]),[d,D]=l.useState({metrics:[],dimensions:[]}),[u,_]=l.useState(null),G=(e==="dql"?vs(E):null)||t,x=l.useCallback(async()=>{if(!(!G&&e!=="sql")){S(!0),_(null);try{const y=Vs(E);if(c(y),D(Ws(E)),G){const B=await Y.fetchBlockLineage(G);B&&(i(B.ancestors??[]),I(B.descendants??[]))}else{const w=(await Y.fetchLineage()).nodes.filter(b=>y.some(M=>b.name===M||b.id===`table:${M}`||b.id===`block:${M}`));i(w),I([])}}catch{_("Failed to load lineage")}finally{S(!1)}}},[G,E,e]);l.useEffect(()=>{s&&x()},[s,x]);const P=O.length>0||d.metrics.length>0||d.dimensions.length>0;return E.trim()?T.jsxs("div",{style:{borderTop:`1px solid ${r.cellBorder}`},children:[T.jsxs("button",{onClick:()=>o(y=>!y),style:{width:"100%",display:"flex",alignItems:"center",gap:6,padding:"4px 12px",background:s?`${r.tableHeaderBg}60`:"transparent",border:"none",cursor:"pointer",color:r.textMuted,fontSize:10,fontFamily:r.font,transition:"background 0.15s"},children:[T.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",style:{flexShrink:0},children:[T.jsx("circle",{cx:"4",cy:"4",r:"2"}),T.jsx("circle",{cx:"12",cy:"8",r:"2"}),T.jsx("circle",{cx:"4",cy:"12",r:"2"}),T.jsx("line",{x1:"6",y1:"4",x2:"10",y2:"8"}),T.jsx("line",{x1:"6",y1:"12",x2:"10",y2:"8"})]}),T.jsx("span",{children:"Lineage"}),T.jsx("svg",{width:"8",height:"8",viewBox:"0 0 10 10",fill:"currentColor",style:{transform:s?"rotate(0deg)":"rotate(-90deg)",transition:"transform 0.15s"},children:T.jsx("path",{d:"M1 3l4 4 4-4",stroke:"currentColor",fill:"none",strokeWidth:"1.5"})})]}),s&&T.jsx("div",{style:{padding:"6px 12px 8px",fontSize:11},children:R?T.jsx("div",{style:{color:r.textMuted,padding:"4px 0"},children:"Loading lineage..."}):u?T.jsx("div",{style:{color:r.error,padding:"4px 0"},children:u}):T.jsxs(T.Fragment,{children:[O.length>0&&T.jsxs("div",{style:{marginBottom:6},children:[T.jsxs("div",{style:{fontSize:9,fontWeight:700,textTransform:"uppercase",letterSpacing:"0.5px",color:r.textMuted,marginBottom:3},children:["Reads From (",O.length,")"]}),O.map(y=>T.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"1px 0",fontSize:11,color:r.textPrimary},children:[T.jsx("span",{style:{color:ye.source_table,fontSize:9,fontWeight:700,width:26},children:"TBL"}),T.jsx("span",{children:y})]},y))]}),d.metrics.length>0&&T.jsxs("div",{style:{marginBottom:6},children:[T.jsxs("div",{style:{fontSize:9,fontWeight:700,textTransform:"uppercase",letterSpacing:"0.5px",color:r.textMuted,marginBottom:3},children:["Metrics (",d.metrics.length,")"]}),d.metrics.map(y=>T.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"1px 0",fontSize:11,color:r.textPrimary},children:[T.jsx("span",{style:{color:ye.metric,fontSize:9,fontWeight:700,width:26},children:"MET"}),T.jsx("span",{children:y})]},y))]}),d.dimensions.length>0&&T.jsxs("div",{style:{marginBottom:6},children:[T.jsxs("div",{style:{fontSize:9,fontWeight:700,textTransform:"uppercase",letterSpacing:"0.5px",color:r.textMuted,marginBottom:3},children:["Dimensions (",d.dimensions.length,")"]}),d.dimensions.map(y=>T.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"1px 0",fontSize:11,color:r.textPrimary},children:[T.jsx("span",{style:{color:ye.dimension,fontSize:9,fontWeight:700,width:26},children:"DIM"}),T.jsx("span",{children:y})]},y))]}),a.length>0&&T.jsxs("div",{style:{marginBottom:6},children:[T.jsxs("div",{style:{fontSize:9,fontWeight:700,textTransform:"uppercase",letterSpacing:"0.5px",color:r.textMuted,marginBottom:3},children:["Upstream (",a.length,")"]}),a.map(y=>T.jsx(et,{node:y,t:r},y.id))]}),A.length>0&&T.jsxs("div",{style:{marginBottom:6},children:[T.jsxs("div",{style:{fontSize:9,fontWeight:700,textTransform:"uppercase",letterSpacing:"0.5px",color:r.textMuted,marginBottom:3},children:["Downstream (",A.length,")"]}),A.map(y=>T.jsx(et,{node:y,t:r},y.id))]}),!P&&a.length===0&&A.length===0&&T.jsx("div",{style:{color:r.textMuted,padding:"2px 0"},children:"No lineage dependencies detected for this cell."})]})})]}):null}const N=E=>E.flatMap(ws),ws=E=>ge(js(E)).map(Ks),Ks=E=>E.replace(/ +/g," ").trim(),js=E=>({type:"mandatory_block",items:bE(E,0)[0]}),bE=(E,e,t)=>{const n=[];for(;E[e];){const[r,s]=ks(E,e);if(n.push(r),e=s,E[e]==="|")e++;else if(E[e]==="}"||E[e]==="]"){if(t!==E[e])throw new Error(`Unbalanced parenthesis in: ${E}`);return e++,[n,e]}else if(e===E.length){if(t)throw new Error(`Unbalanced parenthesis in: ${E}`);return[n,e]}else throw new Error(`Unexpected "${E[e]}"`)}return[n,e]},ks=(E,e)=>{const t=[];for(;;){const[n,r]=$s(E,e);if(n)t.push(n),e=r;else break}return t.length===1?[t[0],e]:[{type:"concatenation",items:t},e]},$s=(E,e)=>{if(E[e]==="{")return Js(E,e+1);if(E[e]==="[")return Qs(E,e+1);{let t="";for(;E[e]&&/[A-Za-z0-9_ ]/.test(E[e]);)t+=E[e],e++;return[t,e]}},Js=(E,e)=>{const[t,n]=bE(E,e,"}");return[{type:"mandatory_block",items:t},n]},Qs=(E,e)=>{const[t,n]=bE(E,e,"]");return[{type:"optional_block",items:t},n]},ge=E=>{if(typeof E=="string")return[E];if(E.type==="concatenation")return E.items.map(ge).reduce(Zs,[""]);if(E.type==="mandatory_block")return E.items.flatMap(ge);if(E.type==="optional_block")return["",...E.items.flatMap(ge)];throw new Error(`Unknown node type: ${E}`)},Zs=(E,e)=>{const t=[];for(const n of E)for(const r of e)t.push(n+r);return t};var C;(function(E){E.QUOTED_IDENTIFIER="QUOTED_IDENTIFIER",E.IDENTIFIER="IDENTIFIER",E.STRING="STRING",E.VARIABLE="VARIABLE",E.RESERVED_DATA_TYPE="RESERVED_DATA_TYPE",E.RESERVED_PARAMETERIZED_DATA_TYPE="RESERVED_PARAMETERIZED_DATA_TYPE",E.RESERVED_KEYWORD="RESERVED_KEYWORD",E.RESERVED_FUNCTION_NAME="RESERVED_FUNCTION_NAME",E.RESERVED_KEYWORD_PHRASE="RESERVED_KEYWORD_PHRASE",E.RESERVED_DATA_TYPE_PHRASE="RESERVED_DATA_TYPE_PHRASE",E.RESERVED_SET_OPERATION="RESERVED_SET_OPERATION",E.RESERVED_CLAUSE="RESERVED_CLAUSE",E.RESERVED_SELECT="RESERVED_SELECT",E.RESERVED_JOIN="RESERVED_JOIN",E.ARRAY_IDENTIFIER="ARRAY_IDENTIFIER",E.ARRAY_KEYWORD="ARRAY_KEYWORD",E.CASE="CASE",E.END="END",E.WHEN="WHEN",E.ELSE="ELSE",E.THEN="THEN",E.LIMIT="LIMIT",E.BETWEEN="BETWEEN",E.AND="AND",E.OR="OR",E.XOR="XOR",E.OPERATOR="OPERATOR",E.COMMA="COMMA",E.ASTERISK="ASTERISK",E.PROPERTY_ACCESS_OPERATOR="PROPERTY_ACCESS_OPERATOR",E.OPEN_PAREN="OPEN_PAREN",E.CLOSE_PAREN="CLOSE_PAREN",E.LINE_COMMENT="LINE_COMMENT",E.BLOCK_COMMENT="BLOCK_COMMENT",E.DISABLE_COMMENT="DISABLE_COMMENT",E.NUMBER="NUMBER",E.NAMED_PARAMETER="NAMED_PARAMETER",E.QUOTED_PARAMETER="QUOTED_PARAMETER",E.NUMBERED_PARAMETER="NUMBERED_PARAMETER",E.POSITIONAL_PARAMETER="POSITIONAL_PARAMETER",E.CUSTOM_PARAMETER="CUSTOM_PARAMETER",E.DELIMITER="DELIMITER",E.EOF="EOF"})(C=C||(C={}));const tT=E=>({type:C.EOF,raw:"«EOF»",text:"«EOF»",start:E}),se=tT(1/0),Se=E=>e=>e.type===E.type&&e.text===E.text,oe={ARRAY:Se({text:"ARRAY",type:C.RESERVED_DATA_TYPE}),BY:Se({text:"BY",type:C.RESERVED_KEYWORD}),SET:Se({text:"SET",type:C.RESERVED_CLAUSE}),STRUCT:Se({text:"STRUCT",type:C.RESERVED_DATA_TYPE}),WINDOW:Se({text:"WINDOW",type:C.RESERVED_CLAUSE}),VALUES:Se({text:"VALUES",type:C.RESERVED_CLAUSE})},TT=E=>E===C.RESERVED_DATA_TYPE||E===C.RESERVED_KEYWORD||E===C.RESERVED_FUNCTION_NAME||E===C.RESERVED_KEYWORD_PHRASE||E===C.RESERVED_DATA_TYPE_PHRASE||E===C.RESERVED_CLAUSE||E===C.RESERVED_SELECT||E===C.RESERVED_SET_OPERATION||E===C.RESERVED_JOIN||E===C.ARRAY_KEYWORD||E===C.CASE||E===C.END||E===C.WHEN||E===C.ELSE||E===C.THEN||E===C.LIMIT||E===C.BETWEEN||E===C.AND||E===C.OR||E===C.XOR,qs=E=>E===C.AND||E===C.OR||E===C.XOR,zs=["KEYS.NEW_KEYSET","KEYS.ADD_KEY_FROM_RAW_BYTES","AEAD.DECRYPT_BYTES","AEAD.DECRYPT_STRING","AEAD.ENCRYPT","KEYS.KEYSET_CHAIN","KEYS.KEYSET_FROM_JSON","KEYS.KEYSET_TO_JSON","KEYS.ROTATE_KEYSET","KEYS.KEYSET_LENGTH","ANY_VALUE","ARRAY_AGG","AVG","CORR","COUNT","COUNTIF","COVAR_POP","COVAR_SAMP","MAX","MIN","ST_CLUSTERDBSCAN","STDDEV_POP","STDDEV_SAMP","STRING_AGG","SUM","VAR_POP","VAR_SAMP","ANY_VALUE","ARRAY_AGG","ARRAY_CONCAT_AGG","AVG","BIT_AND","BIT_OR","BIT_XOR","COUNT","COUNTIF","LOGICAL_AND","LOGICAL_OR","MAX","MIN","STRING_AGG","SUM","APPROX_COUNT_DISTINCT","APPROX_QUANTILES","APPROX_TOP_COUNT","APPROX_TOP_SUM","ARRAY_CONCAT","ARRAY_LENGTH","ARRAY_TO_STRING","GENERATE_ARRAY","GENERATE_DATE_ARRAY","GENERATE_TIMESTAMP_ARRAY","ARRAY_REVERSE","OFFSET","SAFE_OFFSET","ORDINAL","SAFE_ORDINAL","BIT_COUNT","PARSE_BIGNUMERIC","PARSE_NUMERIC","SAFE_CAST","CURRENT_DATE","EXTRACT","DATE","DATE_ADD","DATE_SUB","DATE_DIFF","DATE_TRUNC","DATE_FROM_UNIX_DATE","FORMAT_DATE","LAST_DAY","PARSE_DATE","UNIX_DATE","CURRENT_DATETIME","DATETIME","EXTRACT","DATETIME_ADD","DATETIME_SUB","DATETIME_DIFF","DATETIME_TRUNC","FORMAT_DATETIME","LAST_DAY","PARSE_DATETIME","ERROR","EXTERNAL_QUERY","S2_CELLIDFROMPOINT","S2_COVERINGCELLIDS","ST_ANGLE","ST_AREA","ST_ASBINARY","ST_ASGEOJSON","ST_ASTEXT","ST_AZIMUTH","ST_BOUNDARY","ST_BOUNDINGBOX","ST_BUFFER","ST_BUFFERWITHTOLERANCE","ST_CENTROID","ST_CENTROID_AGG","ST_CLOSESTPOINT","ST_CLUSTERDBSCAN","ST_CONTAINS","ST_CONVEXHULL","ST_COVEREDBY","ST_COVERS","ST_DIFFERENCE","ST_DIMENSION","ST_DISJOINT","ST_DISTANCE","ST_DUMP","ST_DWITHIN","ST_ENDPOINT","ST_EQUALS","ST_EXTENT","ST_EXTERIORRING","ST_GEOGFROM","ST_GEOGFROMGEOJSON","ST_GEOGFROMTEXT","ST_GEOGFROMWKB","ST_GEOGPOINT","ST_GEOGPOINTFROMGEOHASH","ST_GEOHASH","ST_GEOMETRYTYPE","ST_INTERIORRINGS","ST_INTERSECTION","ST_INTERSECTS","ST_INTERSECTSBOX","ST_ISCOLLECTION","ST_ISEMPTY","ST_LENGTH","ST_MAKELINE","ST_MAKEPOLYGON","ST_MAKEPOLYGONORIENTED","ST_MAXDISTANCE","ST_NPOINTS","ST_NUMGEOMETRIES","ST_NUMPOINTS","ST_PERIMETER","ST_POINTN","ST_SIMPLIFY","ST_SNAPTOGRID","ST_STARTPOINT","ST_TOUCHES","ST_UNION","ST_UNION_AGG","ST_WITHIN","ST_X","ST_Y","FARM_FINGERPRINT","MD5","SHA1","SHA256","SHA512","HLL_COUNT.INIT","HLL_COUNT.MERGE","HLL_COUNT.MERGE_PARTIAL","HLL_COUNT.EXTRACT","MAKE_INTERVAL","EXTRACT","JUSTIFY_DAYS","JUSTIFY_HOURS","JUSTIFY_INTERVAL","JSON_EXTRACT","JSON_QUERY","JSON_EXTRACT_SCALAR","JSON_VALUE","JSON_EXTRACT_ARRAY","JSON_QUERY_ARRAY","JSON_EXTRACT_STRING_ARRAY","JSON_VALUE_ARRAY","TO_JSON_STRING","ABS","SIGN","IS_INF","IS_NAN","IEEE_DIVIDE","RAND","SQRT","POW","POWER","EXP","LN","LOG","LOG10","GREATEST","LEAST","DIV","SAFE_DIVIDE","SAFE_MULTIPLY","SAFE_NEGATE","SAFE_ADD","SAFE_SUBTRACT","MOD","ROUND","TRUNC","CEIL","CEILING","FLOOR","COS","COSH","ACOS","ACOSH","SIN","SINH","ASIN","ASINH","TAN","TANH","ATAN","ATANH","ATAN2","RANGE_BUCKET","FIRST_VALUE","LAST_VALUE","NTH_VALUE","LEAD","LAG","PERCENTILE_CONT","PERCENTILE_DISC","NET.IP_FROM_STRING","NET.SAFE_IP_FROM_STRING","NET.IP_TO_STRING","NET.IP_NET_MASK","NET.IP_TRUNC","NET.IPV4_FROM_INT64","NET.IPV4_TO_INT64","NET.HOST","NET.PUBLIC_SUFFIX","NET.REG_DOMAIN","RANK","DENSE_RANK","PERCENT_RANK","CUME_DIST","NTILE","ROW_NUMBER","SESSION_USER","CORR","COVAR_POP","COVAR_SAMP","STDDEV_POP","STDDEV_SAMP","STDDEV","VAR_POP","VAR_SAMP","VARIANCE","ASCII","BYTE_LENGTH","CHAR_LENGTH","CHARACTER_LENGTH","CHR","CODE_POINTS_TO_BYTES","CODE_POINTS_TO_STRING","CONCAT","CONTAINS_SUBSTR","ENDS_WITH","FORMAT","FROM_BASE32","FROM_BASE64","FROM_HEX","INITCAP","INSTR","LEFT","LENGTH","LPAD","LOWER","LTRIM","NORMALIZE","NORMALIZE_AND_CASEFOLD","OCTET_LENGTH","REGEXP_CONTAINS","REGEXP_EXTRACT","REGEXP_EXTRACT_ALL","REGEXP_INSTR","REGEXP_REPLACE","REGEXP_SUBSTR","REPLACE","REPEAT","REVERSE","RIGHT","RPAD","RTRIM","SAFE_CONVERT_BYTES_TO_STRING","SOUNDEX","SPLIT","STARTS_WITH","STRPOS","SUBSTR","SUBSTRING","TO_BASE32","TO_BASE64","TO_CODE_POINTS","TO_HEX","TRANSLATE","TRIM","UNICODE","UPPER","CURRENT_TIME","TIME","EXTRACT","TIME_ADD","TIME_SUB","TIME_DIFF","TIME_TRUNC","FORMAT_TIME","PARSE_TIME","CURRENT_TIMESTAMP","EXTRACT","STRING","TIMESTAMP","TIMESTAMP_ADD","TIMESTAMP_SUB","TIMESTAMP_DIFF","TIMESTAMP_TRUNC","FORMAT_TIMESTAMP","PARSE_TIMESTAMP","TIMESTAMP_SECONDS","TIMESTAMP_MILLIS","TIMESTAMP_MICROS","UNIX_SECONDS","UNIX_MILLIS","UNIX_MICROS","GENERATE_UUID","COALESCE","IF","IFNULL","NULLIF","AVG","BIT_AND","BIT_OR","BIT_XOR","CORR","COUNT","COVAR_POP","COVAR_SAMP","EXACT_COUNT_DISTINCT","FIRST","GROUP_CONCAT","GROUP_CONCAT_UNQUOTED","LAST","MAX","MIN","NEST","NTH","QUANTILES","STDDEV","STDDEV_POP","STDDEV_SAMP","SUM","TOP","UNIQUE","VARIANCE","VAR_POP","VAR_SAMP","BIT_COUNT","BOOLEAN","BYTES","CAST","FLOAT","HEX_STRING","INTEGER","STRING","COALESCE","GREATEST","IFNULL","IS_INF","IS_NAN","IS_EXPLICITLY_DEFINED","LEAST","NVL","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","DATE","DATE_ADD","DATEDIFF","DAY","DAYOFWEEK","DAYOFYEAR","FORMAT_UTC_USEC","HOUR","MINUTE","MONTH","MSEC_TO_TIMESTAMP","NOW","PARSE_UTC_USEC","QUARTER","SEC_TO_TIMESTAMP","SECOND","STRFTIME_UTC_USEC","TIME","TIMESTAMP","TIMESTAMP_TO_MSEC","TIMESTAMP_TO_SEC","TIMESTAMP_TO_USEC","USEC_TO_TIMESTAMP","UTC_USEC_TO_DAY","UTC_USEC_TO_HOUR","UTC_USEC_TO_MONTH","UTC_USEC_TO_WEEK","UTC_USEC_TO_YEAR","WEEK","YEAR","FORMAT_IP","PARSE_IP","FORMAT_PACKED_IP","PARSE_PACKED_IP","JSON_EXTRACT","JSON_EXTRACT_SCALAR","ABS","ACOS","ACOSH","ASIN","ASINH","ATAN","ATANH","ATAN2","CEIL","COS","COSH","DEGREES","EXP","FLOOR","LN","LOG","LOG2","LOG10","PI","POW","RADIANS","RAND","ROUND","SIN","SINH","SQRT","TAN","TANH","REGEXP_MATCH","REGEXP_EXTRACT","REGEXP_REPLACE","CONCAT","INSTR","LEFT","LENGTH","LOWER","LPAD","LTRIM","REPLACE","RIGHT","RPAD","RTRIM","SPLIT","SUBSTR","UPPER","TABLE_DATE_RANGE","TABLE_DATE_RANGE_STRICT","TABLE_QUERY","HOST","DOMAIN","TLD","AVG","COUNT","MAX","MIN","STDDEV","SUM","CUME_DIST","DENSE_RANK","FIRST_VALUE","LAG","LAST_VALUE","LEAD","NTH_VALUE","NTILE","PERCENT_RANK","PERCENTILE_CONT","PERCENTILE_DISC","RANK","RATIO_TO_REPORT","ROW_NUMBER","CURRENT_USER","EVERY","FROM_BASE64","HASH","FARM_FINGERPRINT","IF","POSITION","SHA1","SOME","TO_BASE64","BQ.JOBS.CANCEL","BQ.REFRESH_MATERIALIZED_VIEW","OPTIONS","PIVOT","UNPIVOT"],eo=["ALL","AND","ANY","AS","ASC","ASSERT_ROWS_MODIFIED","AT","BETWEEN","BY","CASE","CAST","COLLATE","CONTAINS","CREATE","CROSS","CUBE","CURRENT","DEFAULT","DEFINE","DESC","DISTINCT","ELSE","END","ENUM","ESCAPE","EXCEPT","EXCLUDE","EXISTS","EXTRACT","FALSE","FETCH","FOLLOWING","FOR","FROM","FULL","GROUP","GROUPING","GROUPS","HASH","HAVING","IF","IGNORE","IN","INNER","INTERSECT","INTO","IS","JOIN","LATERAL","LEFT","LIMIT","LOOKUP","MERGE","NATURAL","NEW","NO","NOT","NULL","NULLS","OF","ON","OR","ORDER","OUTER","OVER","PARTITION","PRECEDING","PROTO","RANGE","RECURSIVE","RESPECT","RIGHT","ROLLUP","ROWS","SELECT","SET","SOME","TABLE","TABLESAMPLE","THEN","TO","TREAT","TRUE","UNBOUNDED","UNION","UNNEST","USING","WHEN","WHERE","WINDOW","WITH","WITHIN","SAFE","LIKE","COPY","CLONE","IN","OUT","INOUT","RETURNS","LANGUAGE","CASCADE","RESTRICT","DETERMINISTIC"],Eo=["ARRAY","BOOL","BYTES","DATE","DATETIME","GEOGRAPHY","INTERVAL","INT64","INT","SMALLINT","INTEGER","BIGINT","TINYINT","BYTEINT","NUMERIC","DECIMAL","BIGNUMERIC","BIGDECIMAL","FLOAT64","STRING","STRUCT","TIME","TIMEZONE"],to=N(["SELECT [ALL | DISTINCT] [AS STRUCT | AS VALUE]"]),To=N(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY","HAVING","QUALIFY","WINDOW","PARTITION BY","ORDER BY","LIMIT","OFFSET","OMIT RECORD IF","INSERT [INTO]","VALUES","SET","MERGE [INTO]","WHEN [NOT] MATCHED [BY SOURCE | BY TARGET] [THEN]","UPDATE SET","CLUSTER BY","FOR SYSTEM_TIME AS OF","WITH CONNECTION","WITH PARTITION COLUMNS","REMOTE WITH CONNECTION"]),Et=N(["CREATE [OR REPLACE] [TEMP|TEMPORARY|SNAPSHOT|EXTERNAL] TABLE [IF NOT EXISTS]"]),qe=N(["CREATE [OR REPLACE] [MATERIALIZED] VIEW [IF NOT EXISTS]","UPDATE","DELETE [FROM]","DROP [SNAPSHOT | EXTERNAL] TABLE [IF EXISTS]","ALTER TABLE [IF EXISTS]","ADD COLUMN [IF NOT EXISTS]","DROP COLUMN [IF EXISTS]","RENAME TO","ALTER COLUMN [IF EXISTS]","SET DEFAULT COLLATE","SET OPTIONS","DROP NOT NULL","SET DATA TYPE","ALTER SCHEMA [IF EXISTS]","ALTER [MATERIALIZED] VIEW [IF EXISTS]","ALTER BI_CAPACITY","TRUNCATE TABLE","CREATE SCHEMA [IF NOT EXISTS]","DEFAULT COLLATE","CREATE [OR REPLACE] [TEMP|TEMPORARY|TABLE] FUNCTION [IF NOT EXISTS]","CREATE [OR REPLACE] PROCEDURE [IF NOT EXISTS]","CREATE [OR REPLACE] ROW ACCESS POLICY [IF NOT EXISTS]","GRANT TO","FILTER USING","CREATE CAPACITY","AS JSON","CREATE RESERVATION","CREATE ASSIGNMENT","CREATE SEARCH INDEX [IF NOT EXISTS]","DROP SCHEMA [IF EXISTS]","DROP [MATERIALIZED] VIEW [IF EXISTS]","DROP [TABLE] FUNCTION [IF EXISTS]","DROP PROCEDURE [IF EXISTS]","DROP ROW ACCESS POLICY","DROP ALL ROW ACCESS POLICIES","DROP CAPACITY [IF EXISTS]","DROP RESERVATION [IF EXISTS]","DROP ASSIGNMENT [IF EXISTS]","DROP SEARCH INDEX [IF EXISTS]","DROP [IF EXISTS]","GRANT","REVOKE","DECLARE","EXECUTE IMMEDIATE","LOOP","END LOOP","REPEAT","END REPEAT","WHILE","END WHILE","BREAK","LEAVE","CONTINUE","ITERATE","FOR","END FOR","BEGIN","BEGIN TRANSACTION","COMMIT TRANSACTION","ROLLBACK TRANSACTION","RAISE","RETURN","CALL","ASSERT","EXPORT DATA"]),ro=N(["UNION {ALL | DISTINCT}","EXCEPT DISTINCT","INTERSECT DISTINCT"]),no=N(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN"]),so=N(["TABLESAMPLE SYSTEM","ANY TYPE","ALL COLUMNS","NOT DETERMINISTIC","{ROWS | RANGE} BETWEEN","IS [NOT] DISTINCT FROM"]),oo=N([]),Ro={name:"bigquery",tokenizerOptions:{reservedSelect:to,reservedClauses:[...To,...qe,...Et],reservedSetOperations:ro,reservedJoins:no,reservedKeywordPhrases:so,reservedDataTypePhrases:oo,reservedKeywords:eo,reservedDataTypes:Eo,reservedFunctionNames:zs,extraParens:["[]"],stringTypes:[{quote:'""".."""',prefixes:["R","B","RB","BR"]},{quote:"'''..'''",prefixes:["R","B","RB","BR"]},'""-bs',"''-bs",{quote:'""-raw',prefixes:["R","B","RB","BR"],requirePrefix:!0},{quote:"''-raw",prefixes:["R","B","RB","BR"],requirePrefix:!0}],identTypes:["``"],identChars:{dashes:!0},paramTypes:{positional:!0,named:["@"],quoted:["@"]},variableTypes:[{regex:String.raw`@@\w+`}],lineCommentTypes:["--","#"],operators:["&","|","^","~",">>","<<","||","=>"],postProcess:io},formatOptions:{onelineClauses:[...Et,...qe],tabularOnelineClauses:qe}};function io(E){return Ao(ao(E))}function Ao(E){let e=se;return E.map(t=>t.text==="OFFSET"&&e.text==="["?(e=t,Object.assign(Object.assign({},t),{type:C.RESERVED_FUNCTION_NAME})):(e=t,t))}function ao(E){var e;const t=[];for(let n=0;n<E.length;n++){const r=E[n];if((oe.ARRAY(r)||oe.STRUCT(r))&&((e=E[n+1])===null||e===void 0?void 0:e.text)==="<"){const s=So(E,n+1),o=E.slice(n,s+1);t.push({type:C.IDENTIFIER,raw:o.map(tt("raw")).join(""),text:o.map(tt("text")).join(""),start:r.start}),n=s}else t.push(r)}return t}const tt=E=>e=>e.type===C.IDENTIFIER||e.type===C.COMMA?e[E]+" ":e[E];function So(E,e){let t=0;for(let n=e;n<E.length;n++){const r=E[n];if(r.text==="<"?t++:r.text===">"?t--:r.text===">>"&&(t-=2),t===0)return n}return E.length-1}const Io=["BIT_AND","BIT_OR","BIT_XOR","BLAKE3","CAST","CHARACTER_LENGTH","CHAR_LENGTH","COVAR_POP","COVAR_SAMP","CRC32","CRC32IEEE","CRC64","DATE","DATE_DIFF","DATE_FORMAT","DATE_TRUNC","DAY","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","FORMAT_BYTES","FQDN","FROM_BASE64","FROM_DAYS","FROM_UNIXTIME","HOUR","INET6_ATON","INET6_NTOA","INET_ATON","INET_NTOA","IPv4CIDRToRange","IPv4NumToString","IPv4NumToStringClassC","IPv4StringToNum","IPv4StringToNumOrDefault","IPv4StringToNumOrNull","IPv4ToIPv6","IPv6CIDRToRange","IPv6NumToString","IPv6StringToNum","IPv6StringToNumOrDefault","IPv6StringToNumOrNull","JSONAllPaths","JSONAllPathsWithTypes","JSONArrayLength","JSONDynamicPaths","JSONDynamicPathsWithTypes","JSONExtract","JSONExtractArrayRaw","JSONExtractArrayRawCaseInsensitive","JSONExtractBool","JSONExtractBoolCaseInsensitive","JSONExtractCaseInsensitive","JSONExtractFloat","JSONExtractFloatCaseInsensitive","JSONExtractInt","JSONExtractIntCaseInsensitive","JSONExtractKeys","JSONExtractKeysAndValues","JSONExtractKeysAndValuesCaseInsensitive","JSONExtractKeysAndValuesRaw","JSONExtractKeysAndValuesRawCaseInsensitive","JSONExtractKeysCaseInsensitive","JSONExtractRaw","JSONExtractRawCaseInsensitive","JSONExtractString","JSONExtractStringCaseInsensitive","JSONExtractUInt","JSONExtractUIntCaseInsensitive","JSONHas","JSONKey","JSONLength","JSONMergePatch","JSONSharedDataPaths","JSONSharedDataPathsWithTypes","JSONType","JSON_ARRAY_LENGTH","JSON_EXISTS","JSON_QUERY","JSON_VALUE","L1Distance","L1Norm","L1Normalize","L2Distance","L2Norm","L2Normalize","L2SquaredDistance","L2SquaredNorm","LAST_DAY","LinfDistance","LinfNorm","LinfNormalize","LpDistance","LpNorm","LpNormalize","MACNumToString","MACStringToNum","MACStringToOUI","MAP_FROM_ARRAYS","MD4","MD5","MILLISECOND","MINUTE","MONTH","OCTET_LENGTH","QUARTER","REGEXP_EXTRACT","REGEXP_MATCHES","REGEXP_REPLACE","RIPEMD160","SCHEMA","SECOND","SHA1","SHA224","SHA256","SHA384","SHA512","SHA512_256","STD","STDDEV_POP","STDDEV_SAMP","ST_LineFromWKB","ST_MLineFromWKB","ST_MPolyFromWKB","ST_PointFromWKB","ST_PolyFromWKB","SUBSTRING_INDEX","SVG","TIMESTAMP_DIFF","TO_BASE64","TO_DAYS","TO_UNIXTIME","ULIDStringToDateTime","URLHash","URLHierarchy","URLPathHierarchy","UTCTimestamp","UTC_timestamp","UUIDNumToString","UUIDStringToNum","UUIDToNum","UUIDv7ToDateTime","VAR_POP","VAR_SAMP","YEAR","YYYYMMDDToDate","YYYYMMDDToDate32","YYYYMMDDhhmmssToDateTime","YYYYMMDDhhmmssToDateTime64","_CAST","__actionName","__bitBoolMaskAnd","__bitBoolMaskOr","__bitSwapLastTwo","__bitWrapperFunc","__getScalar","__patchPartitionID","__scalarSubqueryResult","abs","accurateCast","accurateCastOrDefault","accurateCastOrNull","acos","acosh","addDate","addDays","addHours","addInterval","addMicroseconds","addMilliseconds","addMinutes","addMonths","addNanoseconds","addQuarters","addSeconds","addTupleOfIntervals","addWeeks","addYears","addressToLine","addressToLineWithInlines","addressToSymbol","aes_decrypt_mysql","aes_encrypt_mysql","age","aggThrow","alphaTokens","analysisOfVariance","anova","any","anyHeavy","anyLast","anyLastRespectNulls","anyLast_respect_nulls","anyRespectNulls","anyValueRespectNulls","any_respect_nulls","any_value","any_value_respect_nulls","appendTrailingCharIfAbsent","approx_top_count","approx_top_k","approx_top_sum","argMax","argMin","array","arrayAUC","arrayAUCPR","arrayAll","arrayAvg","arrayCompact","arrayConcat","arrayCount","arrayCumSum","arrayCumSumNonNegative","arrayDifference","arrayDistinct","arrayDotProduct","arrayElement","arrayElementOrNull","arrayEnumerate","arrayEnumerateDense","arrayEnumerateDenseRanked","arrayEnumerateUniq","arrayEnumerateUniqRanked","arrayExists","arrayFill","arrayFilter","arrayFirst","arrayFirstIndex","arrayFirstOrNull","arrayFlatten","arrayFold","arrayIntersect","arrayJaccardIndex","arrayJoin","arrayLast","arrayLastIndex","arrayLastOrNull","arrayLevenshteinDistance","arrayLevenshteinDistanceWeighted","arrayMap","arrayMax","arrayMin","arrayNormalizedGini","arrayPRAUC","arrayPartialReverseSort","arrayPartialShuffle","arrayPartialSort","arrayPopBack","arrayPopFront","arrayProduct","arrayPushBack","arrayPushFront","arrayROCAUC","arrayRandomSample","arrayReduce","arrayReduceInRanges","arrayResize","arrayReverse","arrayReverseFill","arrayReverseSort","arrayReverseSplit","arrayRotateLeft","arrayRotateRight","arrayShiftLeft","arrayShiftRight","arrayShingles","arrayShuffle","arraySimilarity","arraySlice","arraySort","arraySplit","arrayStringConcat","arraySum","arraySymmetricDifference","arrayUnion","arrayUniq","arrayWithConstant","arrayZip","arrayZipUnaligned","array_agg","array_concat_agg","ascii","asin","asinh","assumeNotNull","atan","atan2","atanh","authenticatedUser","avg","avgWeighted","bar","base32Decode","base32Encode","base58Decode","base58Encode","base64Decode","base64Encode","base64URLDecode","base64URLEncode","basename","bech32Decode","bech32Encode","bin","bitAnd","bitCount","bitHammingDistance","bitNot","bitOr","bitPositionsToArray","bitRotateLeft","bitRotateRight","bitShiftLeft","bitShiftRight","bitSlice","bitTest","bitTestAll","bitTestAny","bitXor","bitmapAnd","bitmapAndCardinality","bitmapAndnot","bitmapAndnotCardinality","bitmapBuild","bitmapCardinality","bitmapContains","bitmapHasAll","bitmapHasAny","bitmapMax","bitmapMin","bitmapOr","bitmapOrCardinality","bitmapSubsetInRange","bitmapSubsetLimit","bitmapToArray","bitmapTransform","bitmapXor","bitmapXorCardinality","bitmaskToArray","bitmaskToList","blockNumber","blockSerializedSize","blockSize","boundingRatio","buildId","byteHammingDistance","byteSize","byteSlice","byteSwap","caseWithExpr","caseWithExpression","caseWithoutExpr","caseWithoutExpression","catboostEvaluate","categoricalInformationValue","cbrt","ceil","ceiling","changeDay","changeHour","changeMinute","changeMonth","changeSecond","changeYear","char","cityHash64","clamp","coalesce","colorOKLCHToSRGB","colorSRGBToOKLCH","compareSubstrings","concat","concatAssumeInjective","concatWithSeparator","concatWithSeparatorAssumeInjective","concat_ws","connectionId","connection_id","contingency","convertCharset","corr","corrMatrix","corrStable","cos","cosh","cosineDistance","count","countDigits","countEqual","countMatches","countMatchesCaseInsensitive","countSubstrings","countSubstringsCaseInsensitive","countSubstringsCaseInsensitiveUTF8","covarPop","covarPopMatrix","covarPopStable","covarSamp","covarSampMatrix","covarSampStable","cramersV","cramersVBiasCorrected","curdate","currentDatabase","currentProfiles","currentQueryID","currentRoles","currentSchemas","currentUser","current_database","current_date","current_query_id","current_schemas","current_timestamp","current_user","cutFragment","cutIPv6","cutQueryString","cutQueryStringAndFragment","cutToFirstSignificantSubdomain","cutToFirstSignificantSubdomainCustom","cutToFirstSignificantSubdomainCustomRFC","cutToFirstSignificantSubdomainCustomWithWWW","cutToFirstSignificantSubdomainCustomWithWWWRFC","cutToFirstSignificantSubdomainRFC","cutToFirstSignificantSubdomainWithWWW","cutToFirstSignificantSubdomainWithWWWRFC","cutURLParameter","cutWWW","damerauLevenshteinDistance","dateDiff","dateName","dateTime64ToSnowflake","dateTime64ToSnowflakeID","dateTimeToSnowflake","dateTimeToSnowflakeID","dateTimeToUUIDv7","dateTrunc","date_bin","date_diff","decodeHTMLComponent","decodeURLComponent","decodeURLFormComponent","decodeXMLComponent","decrypt","defaultProfiles","defaultRoles","defaultValueOfArgumentType","defaultValueOfTypeName","degrees","deltaSum","deltaSumTimestamp","demangle","denseRank","dense_rank","detectCharset","detectLanguage","detectLanguageMixed","detectLanguageUnknown","detectProgrammingLanguage","detectTonality","dictGet","dictGetAll","dictGetChildren","dictGetDate","dictGetDateOrDefault","dictGetDateTime","dictGetDateTimeOrDefault","dictGetDescendants","dictGetFloat32","dictGetFloat32OrDefault","dictGetFloat64","dictGetFloat64OrDefault","dictGetHierarchy","dictGetIPv4","dictGetIPv4OrDefault","dictGetIPv6","dictGetIPv6OrDefault","dictGetInt16","dictGetInt16OrDefault","dictGetInt32","dictGetInt32OrDefault","dictGetInt64","dictGetInt64OrDefault","dictGetInt8","dictGetInt8OrDefault","dictGetOrDefault","dictGetOrNull","dictGetString","dictGetStringOrDefault","dictGetUInt16","dictGetUInt16OrDefault","dictGetUInt32","dictGetUInt32OrDefault","dictGetUInt64","dictGetUInt64OrDefault","dictGetUInt8","dictGetUInt8OrDefault","dictGetUUID","dictGetUUIDOrDefault","dictHas","dictIsIn","displayName","distanceL1","distanceL2","distanceL2Squared","distanceLinf","distanceLp","distinctDynamicTypes","distinctJSONPaths","distinctJSONPathsAndTypes","divide","divideDecimal","divideOrNull","domain","domainRFC","domainWithoutWWW","domainWithoutWWWRFC","dotProduct","dumpColumnStructure","dynamicElement","dynamicType","e","editDistance","editDistanceUTF8","empty","emptyArrayDate","emptyArrayDateTime","emptyArrayFloat32","emptyArrayFloat64","emptyArrayInt16","emptyArrayInt32","emptyArrayInt64","emptyArrayInt8","emptyArrayString","emptyArrayToSingle","emptyArrayUInt16","emptyArrayUInt32","emptyArrayUInt64","emptyArrayUInt8","enabledProfiles","enabledRoles","encodeURLComponent","encodeURLFormComponent","encodeXMLComponent","encrypt","endsWith","endsWithUTF8","entropy","equals","erf","erfc","errorCodeToName","estimateCompressionRatio","evalMLMethod","exp","exp10","exp2","exponentialMovingAverage","exponentialTimeDecayedAvg","exponentialTimeDecayedCount","exponentialTimeDecayedMax","exponentialTimeDecayedSum","extract","extractAll","extractAllGroups","extractAllGroupsHorizontal","extractAllGroupsVertical","extractGroups","extractKeyValuePairs","extractKeyValuePairsWithEscaping","extractTextFromHTML","extractURLParameter","extractURLParameterNames","extractURLParameters","factorial","farmFingerprint64","farmHash64","file","filesystemAvailable","filesystemCapacity","filesystemUnreserved","finalizeAggregation","financialInternalRateOfReturn","financialInternalRateOfReturnExtended","financialNetPresentValue","financialNetPresentValueExtended","firstLine","firstSignificantSubdomain","firstSignificantSubdomainCustom","firstSignificantSubdomainCustomRFC","firstSignificantSubdomainRFC","firstValueRespectNulls","first_value","first_value_respect_nulls","flameGraph","flatten","flattenTuple","floor","formatDateTime","formatDateTimeInJodaSyntax","formatQuery","formatQueryOrNull","formatQuerySingleLine","formatQuerySingleLineOrNull","formatReadableDecimalSize","formatReadableQuantity","formatReadableSize","formatReadableTimeDelta","formatRow","formatRowNoNewline","fragment","fromDaysSinceYearZero","fromDaysSinceYearZero32","fromModifiedJulianDay","fromModifiedJulianDayOrNull","fromUTCTimestamp","fromUnixTimestamp","fromUnixTimestamp64Micro","fromUnixTimestamp64Milli","fromUnixTimestamp64Nano","fromUnixTimestamp64Second","fromUnixTimestampInJodaSyntax","from_utc_timestamp","fullHostName","fuzzBits","gccMurmurHash","gcd","generateRandomStructure","generateSerialID","generateSnowflakeID","generateULID","generateUUIDv4","generateUUIDv7","geoDistance","geoToH3","geoToS2","geohashDecode","geohashEncode","geohashesInBox","getClientHTTPHeader","getMacro","getMaxTableNameLengthForDatabase","getMergeTreeSetting","getOSKernelVersion","getServerPort","getServerSetting","getSetting","getSettingOrDefault","getSizeOfEnumType","getSubcolumn","getTypeSerializationStreams","globalIn","globalInIgnoreSet","globalNotIn","globalNotInIgnoreSet","globalNotNullIn","globalNotNullInIgnoreSet","globalNullIn","globalNullInIgnoreSet","globalVariable","greatCircleAngle","greatCircleDistance","greater","greaterOrEquals","greatest","groupArray","groupArrayInsertAt","groupArrayIntersect","groupArrayLast","groupArrayMovingAvg","groupArrayMovingSum","groupArraySample","groupArraySorted","groupBitAnd","groupBitOr","groupBitXor","groupBitmap","groupBitmapAnd","groupBitmapOr","groupBitmapXor","groupConcat","groupNumericIndexedVector","groupUniqArray","group_concat","h3CellAreaM2","h3CellAreaRads2","h3Distance","h3EdgeAngle","h3EdgeLengthKm","h3EdgeLengthM","h3ExactEdgeLengthKm","h3ExactEdgeLengthM","h3ExactEdgeLengthRads","h3GetBaseCell","h3GetDestinationIndexFromUnidirectionalEdge","h3GetFaces","h3GetIndexesFromUnidirectionalEdge","h3GetOriginIndexFromUnidirectionalEdge","h3GetPentagonIndexes","h3GetRes0Indexes","h3GetResolution","h3GetUnidirectionalEdge","h3GetUnidirectionalEdgeBoundary","h3GetUnidirectionalEdgesFromHexagon","h3HexAreaKm2","h3HexAreaM2","h3HexRing","h3IndexesAreNeighbors","h3IsPentagon","h3IsResClassIII","h3IsValid","h3Line","h3NumHexagons","h3PointDistKm","h3PointDistM","h3PointDistRads","h3ToCenterChild","h3ToChildren","h3ToGeo","h3ToGeoBoundary","h3ToParent","h3ToString","h3UnidirectionalEdgeIsValid","h3kRing","halfMD5","has","hasAll","hasAny","hasColumnInTable","hasSubsequence","hasSubsequenceCaseInsensitive","hasSubsequenceCaseInsensitiveUTF8","hasSubsequenceUTF8","hasSubstr","hasThreadFuzzer","hasToken","hasTokenCaseInsensitive","hasTokenCaseInsensitiveOrNull","hasTokenOrNull","hex","hilbertDecode","hilbertEncode","histogram","hiveHash","hop","hopEnd","hopStart","hostName","hostname","hypot","icebergBucket","icebergHash","icebergTruncate","identity","idnaDecode","idnaEncode","if","ifNotFinite","ifNull","ignore","inIgnoreSet","indexHint","indexOf","indexOfAssumeSorted","initcap","initcapUTF8","initialQueryID","initialQueryStartTime","initial_query_id","initial_query_start_time","initializeAggregation","instr","intDiv","intDivOrNull","intDivOrZero","intExp10","intExp2","intHash32","intHash64","intervalLengthSum","isConstant","isDecimalOverflow","isDynamicElementInSharedData","isFinite","isIPAddressInRange","isIPv4String","isIPv6String","isInfinite","isMergeTreePartCoveredBy","isNaN","isNotDistinctFrom","isNotNull","isNull","isNullable","isValidJSON","isValidUTF8","isZeroOrNull","jaroSimilarity","jaroWinklerSimilarity","javaHash","javaHashUTF16LE","joinGet","joinGetOrNull","jsonMergePatch","jumpConsistentHash","kafkaMurmurHash","keccak256","kolmogorovSmirnovTest","kostikConsistentHash","kql_array_sort_asc","kql_array_sort_desc","kurtPop","kurtSamp","lag","lagInFrame","largestTriangleThreeBuckets","lastValueRespectNulls","last_value","last_value_respect_nulls","lcase","lcm","lead","leadInFrame","least","left","leftPad","leftPadUTF8","leftUTF8","lemmatize","length","lengthUTF8","less","lessOrEquals","levenshteinDistance","levenshteinDistanceUTF8","lgamma","ln","locate","log","log10","log1p","log2","logTrace","lowCardinalityIndices","lowCardinalityKeys","lower","lowerUTF8","lpad","ltrim","lttb","makeDate","makeDate32","makeDateTime","makeDateTime64","mannWhitneyUTest","map","mapAdd","mapAll","mapApply","mapConcat","mapContains","mapContainsKey","mapContainsKeyLike","mapContainsValue","mapContainsValueLike","mapExists","mapExtractKeyLike","mapExtractValueLike","mapFilter","mapFromArrays","mapFromString","mapKeys","mapPartialReverseSort","mapPartialSort","mapPopulateSeries","mapReverseSort","mapSort","mapSubtract","mapUpdate","mapValues","match","materialize","max","max2","maxIntersections","maxIntersectionsPosition","maxMappedArrays","meanZTest","median","medianBFloat16","medianBFloat16Weighted","medianDD","medianDeterministic","medianExact","medianExactHigh","medianExactLow","medianExactWeighted","medianExactWeightedInterpolated","medianGK","medianInterpolatedWeighted","medianTDigest","medianTDigestWeighted","medianTiming","medianTimingWeighted","mergeTreePartInfo","metroHash64","mid","min","min2","minMappedArrays","minSampleSizeContinous","minSampleSizeContinuous","minSampleSizeConversion","minus","mismatches","mod","modOrNull","modulo","moduloLegacy","moduloOrNull","moduloOrZero","monthName","mortonDecode","mortonEncode","multiFuzzyMatchAllIndices","multiFuzzyMatchAny","multiFuzzyMatchAnyIndex","multiIf","multiMatchAllIndices","multiMatchAny","multiMatchAnyIndex","multiSearchAllPositions","multiSearchAllPositionsCaseInsensitive","multiSearchAllPositionsCaseInsensitiveUTF8","multiSearchAllPositionsUTF8","multiSearchAny","multiSearchAnyCaseInsensitive","multiSearchAnyCaseInsensitiveUTF8","multiSearchAnyUTF8","multiSearchFirstIndex","multiSearchFirstIndexCaseInsensitive","multiSearchFirstIndexCaseInsensitiveUTF8","multiSearchFirstIndexUTF8","multiSearchFirstPosition","multiSearchFirstPositionCaseInsensitive","multiSearchFirstPositionCaseInsensitiveUTF8","multiSearchFirstPositionUTF8","multiply","multiplyDecimal","murmurHash2_32","murmurHash2_64","murmurHash3_128","murmurHash3_32","murmurHash3_64","negate","neighbor","nested","netloc","ngramDistance","ngramDistanceCaseInsensitive","ngramDistanceCaseInsensitiveUTF8","ngramDistanceUTF8","ngramMinHash","ngramMinHashArg","ngramMinHashArgCaseInsensitive","ngramMinHashArgCaseInsensitiveUTF8","ngramMinHashArgUTF8","ngramMinHashCaseInsensitive","ngramMinHashCaseInsensitiveUTF8","ngramMinHashUTF8","ngramSearch","ngramSearchCaseInsensitive","ngramSearchCaseInsensitiveUTF8","ngramSearchUTF8","ngramSimHash","ngramSimHashCaseInsensitive","ngramSimHashCaseInsensitiveUTF8","ngramSimHashUTF8","ngrams","nonNegativeDerivative","normL1","normL2","normL2Squared","normLinf","normLp","normalizeL1","normalizeL2","normalizeLinf","normalizeLp","normalizeQuery","normalizeQueryKeepNames","normalizeUTF8NFC","normalizeUTF8NFD","normalizeUTF8NFKC","normalizeUTF8NFKD","normalizedQueryHash","normalizedQueryHashKeepNames","notEmpty","notEquals","notILike","notIn","notInIgnoreSet","notLike","notNullIn","notNullInIgnoreSet","nothing","nothingNull","nothingUInt64","now","now64","nowInBlock","nowInBlock64","nth_value","ntile","nullIf","nullIn","nullInIgnoreSet","numbers","numericIndexedVectorAllValueSum","numericIndexedVectorBuild","numericIndexedVectorCardinality","numericIndexedVectorGetValue","numericIndexedVectorPointwiseAdd","numericIndexedVectorPointwiseDivide","numericIndexedVectorPointwiseEqual","numericIndexedVectorPointwiseGreater","numericIndexedVectorPointwiseGreaterEqual","numericIndexedVectorPointwiseLess","numericIndexedVectorPointwiseLessEqual","numericIndexedVectorPointwiseMultiply","numericIndexedVectorPointwiseNotEqual","numericIndexedVectorPointwiseSubtract","numericIndexedVectorShortDebugString","numericIndexedVectorToMap","overlay","overlayUTF8","parseDateTime","parseDateTime32BestEffort","parseDateTime32BestEffortOrNull","parseDateTime32BestEffortOrZero","parseDateTime64","parseDateTime64BestEffort","parseDateTime64BestEffortOrNull","parseDateTime64BestEffortOrZero","parseDateTime64BestEffortUS","parseDateTime64BestEffortUSOrNull","parseDateTime64BestEffortUSOrZero","parseDateTime64InJodaSyntax","parseDateTime64InJodaSyntaxOrNull","parseDateTime64InJodaSyntaxOrZero","parseDateTime64OrNull","parseDateTime64OrZero","parseDateTimeBestEffort","parseDateTimeBestEffortOrNull","parseDateTimeBestEffortOrZero","parseDateTimeBestEffortUS","parseDateTimeBestEffortUSOrNull","parseDateTimeBestEffortUSOrZero","parseDateTimeInJodaSyntax","parseDateTimeInJodaSyntaxOrNull","parseDateTimeInJodaSyntaxOrZero","parseDateTimeOrNull","parseDateTimeOrZero","parseReadableSize","parseReadableSizeOrNull","parseReadableSizeOrZero","parseTimeDelta","partitionID","partitionId","path","pathFull","percentRank","percent_rank","pi","plus","pmod","pmodOrNull","pointInEllipses","pointInPolygon","polygonAreaCartesian","polygonAreaSpherical","polygonConvexHullCartesian","polygonPerimeterCartesian","polygonPerimeterSpherical","polygonsDistanceCartesian","polygonsDistanceSpherical","polygonsEqualsCartesian","polygonsIntersectCartesian","polygonsIntersectSpherical","polygonsIntersectionCartesian","polygonsIntersectionSpherical","polygonsSymDifferenceCartesian","polygonsSymDifferenceSpherical","polygonsUnionCartesian","polygonsUnionSpherical","polygonsWithinCartesian","polygonsWithinSpherical","port","portRFC","position","positionCaseInsensitive","positionCaseInsensitiveUTF8","positionUTF8","positiveModulo","positiveModuloOrNull","positive_modulo","positive_modulo_or_null","pow","power","printf","proportionsZTest","protocol","punycodeDecode","punycodeEncode","quantile","quantileBFloat16","quantileBFloat16Weighted","quantileDD","quantileDeterministic","quantileExact","quantileExactExclusive","quantileExactHigh","quantileExactInclusive","quantileExactLow","quantileExactWeighted","quantileExactWeightedInterpolated","quantileGK","quantileInterpolatedWeighted","quantileTDigest","quantileTDigestWeighted","quantileTiming","quantileTimingWeighted","quantiles","quantilesBFloat16","quantilesBFloat16Weighted","quantilesDD","quantilesDeterministic","quantilesExact","quantilesExactExclusive","quantilesExactHigh","quantilesExactInclusive","quantilesExactLow","quantilesExactWeighted","quantilesExactWeightedInterpolated","quantilesGK","quantilesInterpolatedWeighted","quantilesTDigest","quantilesTDigestWeighted","quantilesTiming","quantilesTimingWeighted","queryID","queryString","queryStringAndFragment","query_id","radians","rand","rand32","rand64","randBernoulli","randBinomial","randCanonical","randChiSquared","randConstant","randExponential","randFisherF","randLogNormal","randNegativeBinomial","randNormal","randPoisson","randStudentT","randUniform","randomFixedString","randomPrintableASCII","randomString","randomStringUTF8","rank","rankCorr","readWKBLineString","readWKBMultiLineString","readWKBMultiPolygon","readWKBPoint","readWKBPolygon","readWKTLineString","readWKTMultiLineString","readWKTMultiPolygon","readWKTPoint","readWKTPolygon","readWKTRing","regexpExtract","regexpQuoteMeta","regionHierarchy","regionIn","regionToArea","regionToCity","regionToContinent","regionToCountry","regionToDistrict","regionToName","regionToPopulation","regionToTopContinent","reinterpret","reinterpretAsDate","reinterpretAsDateTime","reinterpretAsFixedString","reinterpretAsFloat32","reinterpretAsFloat64","reinterpretAsInt128","reinterpretAsInt16","reinterpretAsInt256","reinterpretAsInt32","reinterpretAsInt64","reinterpretAsInt8","reinterpretAsString","reinterpretAsUInt128","reinterpretAsUInt16","reinterpretAsUInt256","reinterpretAsUInt32","reinterpretAsUInt64","reinterpretAsUInt8","reinterpretAsUUID","repeat","replace","replaceAll","replaceOne","replaceRegexpAll","replaceRegexpOne","replicate","retention","reverse","reverseUTF8","revision","right","rightPad","rightPadUTF8","rightUTF8","round","roundAge","roundBankers","roundDown","roundDuration","roundToExp2","rowNumberInAllBlocks","rowNumberInBlock","row_number","rpad","rtrim","runningAccumulate","runningConcurrency","runningDifference","runningDifferenceStartingWithFirstValue","s2CapContains","s2CapUnion","s2CellsIntersect","s2GetNeighbors","s2RectAdd","s2RectContains","s2RectIntersection","s2RectUnion","s2ToGeo","scalarProduct","searchAll","searchAny","sequenceCount","sequenceMatch","sequenceMatchEvents","sequenceNextNode","seriesDecomposeSTL","seriesOutliersDetectTukey","seriesPeriodDetectFFT","serverTimeZone","serverTimezone","serverUUID","shardCount","shardNum","showCertificate","sigmoid","sign","simpleJSONExtractBool","simpleJSONExtractFloat","simpleJSONExtractInt","simpleJSONExtractRaw","simpleJSONExtractString","simpleJSONExtractUInt","simpleJSONHas","simpleLinearRegression","sin","singleValueOrNull","sinh","sipHash128","sipHash128Keyed","sipHash128Reference","sipHash128ReferenceKeyed","sipHash64","sipHash64Keyed","skewPop","skewSamp","sleep","sleepEachRow","snowflakeIDToDateTime","snowflakeIDToDateTime64","snowflakeToDateTime","snowflakeToDateTime64","soundex","space","sparkBar","sparkbar","sparseGrams","sparseGramsHashes","sparseGramsHashesUTF8","sparseGramsUTF8","splitByAlpha","splitByChar","splitByNonAlpha","splitByRegexp","splitByString","splitByWhitespace","sqid","sqidDecode","sqidEncode","sqrt","startsWith","startsWithUTF8","stddevPop","stddevPopStable","stddevSamp","stddevSampStable","stem","stochasticLinearRegression","stochasticLogisticRegression","str_to_date","str_to_map","stringBytesEntropy","stringBytesUniq","stringJaccardIndex","stringJaccardIndexUTF8","stringToH3","structureToCapnProtoSchema","structureToProtobufSchema","studentTTest","subBitmap","subDate","substr","substring","substringIndex","substringIndexUTF8","substringUTF8","subtractDays","subtractHours","subtractInterval","subtractMicroseconds","subtractMilliseconds","subtractMinutes","subtractMonths","subtractNanoseconds","subtractQuarters","subtractSeconds","subtractTupleOfIntervals","subtractWeeks","subtractYears","sum","sumCount","sumKahan","sumMapFiltered","sumMapFilteredWithOverflow","sumMapWithOverflow","sumMappedArrays","sumWithOverflow","svg","synonyms","tan","tanh","tcpPort","tgamma","theilsU","throwIf","tid","timeDiff","timeSeriesDeltaToGrid","timeSeriesDerivToGrid","timeSeriesFromGrid","timeSeriesGroupArray","timeSeriesIdToTags","timeSeriesIdToTagsGroup","timeSeriesIdeltaToGrid","timeSeriesInstantDeltaToGrid","timeSeriesInstantRateToGrid","timeSeriesIrateToGrid","timeSeriesLastToGrid","timeSeriesLastTwoSamples","timeSeriesPredictLinearToGrid","timeSeriesRange","timeSeriesRateToGrid","timeSeriesResampleToGridWithStaleness","timeSeriesStoreTags","timeSeriesTagsGroupToTags","timeSlot","timeSlots","timeZone","timeZoneOf","timeZoneOffset","time_bucket","timestamp","timestampDiff","timestamp_diff","timezone","timezoneOf","timezoneOffset","toBFloat16","toBFloat16OrNull","toBFloat16OrZero","toBool","toColumnTypeName","toDate","toDate32","toDate32OrDefault","toDate32OrNull","toDate32OrZero","toDateOrDefault","toDateOrNull","toDateOrZero","toDateTime","toDateTime32","toDateTime64","toDateTime64OrDefault","toDateTime64OrNull","toDateTime64OrZero","toDateTimeOrDefault","toDateTimeOrNull","toDateTimeOrZero","toDayOfMonth","toDayOfWeek","toDayOfYear","toDaysSinceYearZero","toDecimal128","toDecimal128OrDefault","toDecimal128OrNull","toDecimal128OrZero","toDecimal256","toDecimal256OrDefault","toDecimal256OrNull","toDecimal256OrZero","toDecimal32","toDecimal32OrDefault","toDecimal32OrNull","toDecimal32OrZero","toDecimal64","toDecimal64OrDefault","toDecimal64OrNull","toDecimal64OrZero","toDecimalString","toFixedString","toFloat32","toFloat32OrDefault","toFloat32OrNull","toFloat32OrZero","toFloat64","toFloat64OrDefault","toFloat64OrNull","toFloat64OrZero","toHour","toIPv4","toIPv4OrDefault","toIPv4OrNull","toIPv4OrZero","toIPv6","toIPv6OrDefault","toIPv6OrNull","toIPv6OrZero","toISOWeek","toISOYear","toInt128","toInt128OrDefault","toInt128OrNull","toInt128OrZero","toInt16","toInt16OrDefault","toInt16OrNull","toInt16OrZero","toInt256","toInt256OrDefault","toInt256OrNull","toInt256OrZero","toInt32","toInt32OrDefault","toInt32OrNull","toInt32OrZero","toInt64","toInt64OrDefault","toInt64OrNull","toInt64OrZero","toInt8","toInt8OrDefault","toInt8OrNull","toInt8OrZero","toInterval","toIntervalDay","toIntervalHour","toIntervalMicrosecond","toIntervalMillisecond","toIntervalMinute","toIntervalMonth","toIntervalNanosecond","toIntervalQuarter","toIntervalSecond","toIntervalWeek","toIntervalYear","toJSONString","toLastDayOfMonth","toLastDayOfWeek","toLowCardinality","toMillisecond","toMinute","toModifiedJulianDay","toModifiedJulianDayOrNull","toMonday","toMonth","toMonthNumSinceEpoch","toNullable","toQuarter","toRelativeDayNum","toRelativeHourNum","toRelativeMinuteNum","toRelativeMonthNum","toRelativeQuarterNum","toRelativeSecondNum","toRelativeWeekNum","toRelativeYearNum","toSecond","toStartOfDay","toStartOfFifteenMinutes","toStartOfFiveMinute","toStartOfFiveMinutes","toStartOfHour","toStartOfISOYear","toStartOfInterval","toStartOfMicrosecond","toStartOfMillisecond","toStartOfMinute","toStartOfMonth","toStartOfNanosecond","toStartOfQuarter","toStartOfSecond","toStartOfTenMinutes","toStartOfWeek","toStartOfYear","toString","toStringCutToZero","toTime","toTime64","toTime64OrNull","toTime64OrZero","toTimeOrNull","toTimeOrZero","toTimeWithFixedDate","toTimeZone","toTimezone","toTypeName","toUInt128","toUInt128OrDefault","toUInt128OrNull","toUInt128OrZero","toUInt16","toUInt16OrDefault","toUInt16OrNull","toUInt16OrZero","toUInt256","toUInt256OrDefault","toUInt256OrNull","toUInt256OrZero","toUInt32","toUInt32OrDefault","toUInt32OrNull","toUInt32OrZero","toUInt64","toUInt64OrDefault","toUInt64OrNull","toUInt64OrZero","toUInt8","toUInt8OrDefault","toUInt8OrNull","toUInt8OrZero","toUTCTimestamp","toUUID","toUUIDOrDefault","toUUIDOrNull","toUUIDOrZero","toUnixTimestamp","toUnixTimestamp64Micro","toUnixTimestamp64Milli","toUnixTimestamp64Nano","toUnixTimestamp64Second","toValidUTF8","toWeek","toYYYYMM","toYYYYMMDD","toYYYYMMDDhhmmss","toYear","toYearNumSinceEpoch","toYearWeek","to_utc_timestamp","today","tokens","topK","topKWeighted","topLevelDomain","topLevelDomainRFC","transactionID","transactionLatestSnapshot","transactionOldestSnapshot","transform","translate","translateUTF8","trim","trimBoth","trimLeft","trimRight","trunc","tryBase32Decode","tryBase58Decode","tryBase64Decode","tryBase64URLDecode","tryDecrypt","tryIdnaEncode","tryPunycodeDecode","tumble","tumbleEnd","tumbleStart","tuple","tupleConcat","tupleDivide","tupleDivideByNumber","tupleElement","tupleHammingDistance","tupleIntDiv","tupleIntDivByNumber","tupleIntDivOrZero","tupleIntDivOrZeroByNumber","tupleMinus","tupleModulo","tupleModuloByNumber","tupleMultiply","tupleMultiplyByNumber","tupleNames","tupleNegate","tuplePlus","tupleToNameValuePairs","ucase","unbin","unhex","uniq","uniqCombined","uniqCombined64","uniqExact","uniqHLL12","uniqTheta","uniqThetaIntersect","uniqThetaNot","uniqThetaUnion","uniqUpTo","upper","upperUTF8","uptime","user","validateNestedArraySizes","varPop","varPopStable","varSamp","varSampStable","variantElement","variantType","vectorDifference","vectorSum","version","visibleWidth","visitParamExtractBool","visitParamExtractFloat","visitParamExtractInt","visitParamExtractRaw","visitParamExtractString","visitParamExtractUInt","visitParamHas","week","welchTTest","widthBucket","width_bucket","windowFunnel","windowID","wkb","wkt","wordShingleMinHash","wordShingleMinHashArg","wordShingleMinHashArgCaseInsensitive","wordShingleMinHashArgCaseInsensitiveUTF8","wordShingleMinHashArgUTF8","wordShingleMinHashCaseInsensitive","wordShingleMinHashCaseInsensitiveUTF8","wordShingleMinHashUTF8","wordShingleSimHash","wordShingleSimHashCaseInsensitive","wordShingleSimHashCaseInsensitiveUTF8","wordShingleSimHashUTF8","wyHash64","xor","xxHash32","xxHash64","xxh3","yandexConsistentHash","yearweek","yesterday","zookeeperSessionUptime","MergeTree","ReplacingMergeTree","SummingMergeTree","AggregatingMergeTree","CollapsingMergeTree","VersionedCollapsingMergeTree","GraphiteMergeTree","CoalescingMergeTree","Atomic","Shared","Lazy","Replicated","PostgreSQL","MySQL","SQLite","MaterializedPostgreSQL","DataLakeCatalog"],Oo=["ACCESS","ACTION","ADD","ADMIN","AFTER","ALGORITHM","ALIAS","ALL","ALLOWED_LATENESS","ALTER","AND","ANTI","APPEND","APPLY","AS","ASC","ASCENDING","ASOF","ASSUME","AST","ASYNC","ATTACH","AUTO_INCREMENT","AZURE","BACKUP","BAGEXPANSION","BASE_BACKUP","BCRYPT_HASH","BCRYPT_PASSWORD","BEGIN","BETWEEN","BIDIRECTIONAL","BOTH","BY","CACHE","CACHES","CASCADE","CASE","CHANGE","CHANGEABLE_IN_READONLY","CHANGED","CHARACTER","CHECK","CLEANUP","CLEAR","CLUSTER","CLUSTERS","CLUSTER_HOST_IDS","CN","CODEC","COLLATE","COLLECTION","COLUMN","COLUMNS","COMMENT","COMMIT","COMPRESSION","CONST","CONSTRAINT","CREATE","CROSS","CUBE","CURRENT","D","DATA","DATABASE","DATABASES","DAYS","DD","DDL","DEDUPLICATE","DEFAULT","DEFINER","DELAY","DELETE","DELETED","DEPENDS","DESC","DESCENDING","DESCRIBE","DETACH","DETACHED","DICTIONARIES","DICTIONARY","DISK","DISTINCT","DIV","DOUBLE_SHA1_HASH","DOUBLE_SHA1_PASSWORD","DROP","ELSE","ENABLED","END","ENFORCED","ENGINE","ENGINES","EPHEMERAL","ESTIMATE","EVENT","EVENTS","EVERY","EXCEPT","EXCHANGE","EXISTS","EXPLAIN","EXPRESSION","EXTENDED","EXTERNAL","FAKE","FALSE","FETCH","FIELDS","FILESYSTEM","FILL","FILTER","FINAL","FIRST","FOLLOWING","FOR","FOREIGN","FORMAT","FREEZE","FROM","FULL","FULLTEXT","FUNCTION","FUNCTIONS","GLOBAL","GRANT","GRANTEES","GRANTS","GRANULARITY","GROUP","GROUPING","GROUPS","H","HASH","HAVING","HDFS","HH","HIERARCHICAL","HOST","HOURS","HTTP","IDENTIFIED","ILIKE","IN","INDEX","INDEXES","INDICES","INFILE","INHERIT","INJECTIVE","INNER","INSERT","INTERPOLATE","INTERSECT","INTERVAL","INTO","INVISIBLE","INVOKER","IP","IS","IS_OBJECT_ID","JOIN","JWT","KERBEROS","KEY","KEYED","KEYS","KILL","KIND","LARGE","LAST","LAYOUT","LDAP","LEADING","LEVEL","LIFETIME","LIGHTWEIGHT","LIKE","LIMIT","LIMITS","LINEAR","LIST","LIVE","LOCAL","M","MASK","MATERIALIZED","MCS","MEMORY","MERGES","METRICS","MI","MICROSECOND","MICROSECONDS","MILLISECONDS","MINUTES","MM","MODIFY","MONTHS","MOVE","MS","MUTATION","N","NAME","NAMED","NANOSECOND","NANOSECONDS","NEXT","NO","NONE","NOT","NO_PASSWORD","NS","NULL","NULLS","OBJECT","OFFSET","ON","ONLY","OPTIMIZE","OPTION","OR","ORDER","OUTER","OUTFILE","OVER","OVERRIDABLE","OVERRIDE","PART","PARTIAL","PARTITION","PARTITIONS","PART_MOVE_TO_SHARD","PASTE","PERIODIC","PERMANENTLY","PERMISSIVE","PERSISTENT","PIPELINE","PLAINTEXT_PASSWORD","PLAN","POLICY","POPULATE","PRECEDING","PRECISION","PREWHERE","PRIMARY","PRIVILEGES","PROCESSLIST","PROFILE","PROJECTION","PROTOBUF","PULL","Q","QQ","QUALIFY","QUARTERS","QUERY","QUOTA","RANDOMIZE","RANDOMIZED","RANGE","READONLY","REALM","RECOMPRESS","RECURSIVE","REFERENCES","REFRESH","REGEXP","REMOVE","RENAME","RESET","RESPECT","RESTORE","RESTRICT","RESTRICTIVE","RESUME","REVOKE","ROLE","ROLES","ROLLBACK","ROLLUP","ROW","ROWS","S","S3","SALT","SAMPLE","SAN","SCHEME","SECONDS","SECURITY","SELECT","SEMI","SEQUENTIAL","SERVER","SET","SETS","SETTING","SETTINGS","SHA256_HASH","SHA256_PASSWORD","SHARD","SHOW","SIGNED","SIMPLE","SNAPSHOT","SOURCE","SPATIAL","SQL","SQL_TSI_DAY","SQL_TSI_HOUR","SQL_TSI_MICROSECOND","SQL_TSI_MILLISECOND","SQL_TSI_MINUTE","SQL_TSI_MONTH","SQL_TSI_NANOSECOND","SQL_TSI_QUARTER","SQL_TSI_SECOND","SQL_TSI_WEEK","SQL_TSI_YEAR","SS","SSH_KEY","SSL_CERTIFICATE","STALENESS","START","STATISTICS","STDOUT","STEP","STORAGE","STRICT","STRICTLY_ASCENDING","SUBPARTITION","SUBPARTITIONS","SUSPEND","SYNC","SYNTAX","SYSTEM","TABLE","TABLES","TAGS","TEMPORARY","TEST","THAN","THEN","TIES","TIME","TO","TOP","TOTALS","TRACKING","TRAILING","TRANSACTION","TREE","TRIGGER","TRUE","TRUNCATE","TTL","TYPE","TYPEOF","UNBOUNDED","UNDROP","UNFREEZE","UNION","UNIQUE","UNSET","UNSIGNED","UNTIL","UPDATE","URL","USE","USING","UUID","VALID","VALUES","VARYING","VIEW","VISIBLE","VOLUME","WATCH","WATERMARK","WEEKS","WHEN","WHERE","WINDOW","WITH","WITH_ITEMINDEX","WK","WRITABLE","WW","YEARS","YY","YYYY","ZKPATH"],lo=["AGGREGATEFUNCTION","ARRAY","BFLOAT16","BIGINT","BIGINT SIGNED","BIGINT UNSIGNED","BINARY","BINARY LARGE OBJECT","BINARY VARYING","BIT","BLOB","BYTE","BYTEA","BOOL","CHAR","CHAR LARGE OBJECT","CHAR VARYING","CHARACTER","CHARACTER LARGE OBJECT","CHARACTER VARYING","CLOB","DEC","DOUBLE","DOUBLE PRECISION","DATE","DATE32","DATETIME","DATETIME32","DATETIME64","DECIMAL","DECIMAL128","DECIMAL256","DECIMAL32","DECIMAL64","DYNAMIC","ENUM","ENUM","ENUM16","ENUM8","FIXED","FLOAT","FIXEDSTRING","FLOAT32","FLOAT64","GEOMETRY","INET4","INET6","INT","INT SIGNED","INT UNSIGNED","INT1","INT1 SIGNED","INT1 UNSIGNED","INTEGER","INTEGER SIGNED","INTEGER UNSIGNED","IPV4","IPV6","INT128","INT16","INT256","INT32","INT64","INT8","INTERVALDAY","INTERVALHOUR","INTERVALMICROSECOND","INTERVALMILLISECOND","INTERVALMINUTE","INTERVALMONTH","INTERVALNANOSECOND","INTERVALQUARTER","INTERVALSECOND","INTERVALWEEK","INTERVALYEAR","JSON","LONGBLOB","LONGTEXT","LINESTRING","LOWCARDINALITY","MEDIUMBLOB","MEDIUMINT","MEDIUMINT SIGNED","MEDIUMINT UNSIGNED","MEDIUMTEXT","MAP","MULTILINESTRING","MULTIPOLYGON","NATIONAL CHAR","NATIONAL CHAR VARYING","NATIONAL CHARACTER","NATIONAL CHARACTER LARGE OBJECT","NATIONAL CHARACTER VARYING","NCHAR","NCHAR LARGE OBJECT","NCHAR VARYING","NUMERIC","NVARCHAR","NESTED","NOTHING","NULLABLE","OBJECT","POINT","POLYGON","REAL","RING","SET","SIGNED","SINGLE","SMALLINT","SMALLINT SIGNED","SMALLINT UNSIGNED","SIMPLEAGGREGATEFUNCTION","STRING","TEXT","TIMESTAMP","TINYBLOB","TINYINT","TINYINT SIGNED","TINYINT UNSIGNED","TINYTEXT","TIME","TIME64","TUPLE","UINT128","UINT16","UINT256","UINT32","UINT64","UINT8","UNSIGNED","UUID","VARBINARY","VARCHAR","VARCHAR2","VARIANT","YEAR","BOOL","BOOLEAN"],No=N(["SELECT [DISTINCT]","MODIFY QUERY SELECT [DISTINCT]"]),co=N(["SET","WITH","FROM","SAMPLE","PREWHERE","WHERE","GROUP BY","HAVING","QUALIFY","ORDER BY","LIMIT","SETTINGS","INTO OUTFILE","FORMAT","WINDOW","PARTITION BY","INSERT INTO","VALUES","DEPENDS ON","MOVE {USER | ROLE | QUOTA | SETTINGS PROFILE | ROW POLICY}","GRANT","REVOKE","CHECK GRANT","SET [DEFAULT] ROLE [NONE | ALL | ALL EXCEPT]","DEDUPLICATE BY","MODIFY STATISTICS","TYPE","ALTER USER [IF EXISTS]","ALTER [ROW] POLICY [IF EXISTS]","DROP {USER | ROLE | QUOTA | PROFILE | SETTINGS PROFILE | ROW POLICY | POLICY} [IF EXISTS]"]),Tt=N(["CREATE [OR REPLACE] [TEMPORARY] TABLE [IF NOT EXISTS]"]),ze=N(["ALL EXCEPT","ON CLUSTER","UPDATE","SYSTEM RELOAD {DICTIONARIES | DICTIONARY | FUNCTIONS | FUNCTION | ASYNCHRONOUS METRICS}","SYSTEM DROP {DNS CACHE | MARK CACHE | ICEBERG METADATA CACHE | TEXT INDEX DICTIONARY CACHE | TEXT INDEX HEADER CACHE | TEXT INDEX POSTINGS CACHE | REPLICA | DATABASE REPLICA | UNCOMPRESSED CACHE | COMPILED EXPRESSION CACHE | QUERY CONDITION CACHE | QUERY CACHE | FORMAT SCHEMA CACHE | FILESYSTEM CACHE}","SYSTEM FLUSH LOGS","SYSTEM RELOAD {CONFIG | USERS}","SYSTEM SHUTDOWN","SYSTEM KILL","SYSTEM FLUSH DISTRIBUTED","SYSTEM START DISTRIBUTED SENDS","SYSTEM {STOP | START} {LISTEN | MERGES | TTL MERGES | MOVES | FETCHES | REPLICATED SENDS | REPLICATION QUEUES | PULLING REPLICATION LOG}","SYSTEM {SYNC | RESTART | RESTORE} REPLICA","SYSTEM {SYNC | RESTORE} DATABASE REPLICA","SYSTEM RESTART REPLICAS","SYSTEM UNFREEZE","SYSTEM WAIT LOADING PARTS","SYSTEM {LOAD | UNLOAD} PRIMARY KEY","SYSTEM {STOP | START} [REPLICATED] VIEW","SYSTEM {STOP | START} VIEWS","SYSTEM {REFRESH | CANCEL | WAIT} VIEW","WITH NAME","SHOW [CREATE] {TABLE | TEMPORARY TABLE | DICTIONARY | VIEW | DATABASE}","SHOW DATABASES [[NOT] {LIKE | ILIKE}]","SHOW [FULL] [TEMPORARY] TABLES [FROM | IN]","SHOW [EXTENDED] [FULL] COLUMNS {FROM | IN}","ATTACH {TABLE | DICTIONARY | DATABASE} [IF NOT EXISTS]","DETACH {TABLE | DICTIONARY | DATABASE} [IF EXISTS]","PERMANENTLY","SYNC","DROP {DICTIONARY | DATABASE | PROFILE | VIEW | FUNCTION | NAMED COLLECTION} [IF EXISTS]","DROP [TEMPORARY] TABLE [IF EXISTS] [IF EMPTY]","RENAME TO","EXISTS [TEMPORARY] {TABLE | DICTIONARY | DATABASE}","KILL QUERY","OPTIMIZE TABLE","RENAME {TABLE | DICTIONARY | DATABASE}","EXCHANGE {TABLES | DICTIONARIES}","TRUNCATE TABLE [IF EXISTS]","EXECUTE AS","USE","TO","UNDROP TABLE","CREATE {DATABASE | NAMED COLLECTION} [IF NOT EXISTS]","CREATE [OR REPLACE] {VIEW | DICTIONARY} [IF NOT EXISTS]","CREATE MATERIALIZED VIEW [IF NOT EXISTS]","CREATE FUNCTION","CREATE {USER | ROLE | QUOTA | SETTINGS PROFILE} [IF NOT EXISTS | OR REPLACE]","CREATE [ROW] POLICY [IF NOT EXISTS | OR REPLACE]","REPLACE [TEMPORARY] TABLE [IF NOT EXISTS]","ALTER {ROLE | QUOTA | SETTINGS PROFILE} [IF EXISTS]","ALTER [TEMPORARY] TABLE","ALTER NAMED COLLECTION [IF EXISTS]","GRANTEES","NOT IDENTIFIED","RESET AUTHENTICATION METHODS TO NEW","{IDENTIFIED | ADD IDENTIFIED} [WITH | BY]","[ADD | DROP] HOST {LOCAL | NAME | REGEXP | IP | LIKE}","VALID UNTIL","DROP [ALL] {PROFILES | SETTINGS}","{ADD | MODIFY} SETTINGS","ADD PROFILES","APPLY DELETED MASK","IN PARTITION","{ADD | DROP | RENAME | CLEAR | COMMENT | MODIFY | ALTER | MATERIALIZE} COLUMN","{DETACH | DROP | ATTACH | FETCH | MOVE} {PART | PARTITION}","DROP DETACHED {PART | PARTITION}","{FORGET | REPLACE} PARTITION","CLEAR COLUMN","{FREEZE | UNFREEZE} [PARTITION]","CLEAR INDEX","TO {DISK | VOLUME}","[DELETE | REWRITE PARTS] IN PARTITION","{MODIFY | RESET} SETTING","DELETE WHERE","MODIFY ORDER BY","{MODIFY | REMOVE} SAMPLE BY","{ADD | MATERIALIZE | CLEAR} INDEX [IF NOT EXISTS]","DROP INDEX [IF EXISTS]","GRANULARITY","AFTER","FIRST","ADD CONSTRAINT [IF NOT EXISTS]","DROP CONSTRAINT [IF EXISTS]","MODIFY TTL","REMOVE TTL","ADD STATISTICS [IF NOT EXISTS]","{DROP | CLEAR} STATISTICS [IF EXISTS]","MATERIALIZE STATISTICS [ALL | IF EXISTS]","KEYED BY","NOT KEYED","FOR [RANDOMIZED] INTERVAL","AS {PERMISSIVE | RESTRICTIVE}","FOR SELECT","ADD PROJECTION [IF NOT EXISTS]","{DROP | MATERIALIZE | CLEAR} PROJECTION [IF EXISTS]","REFRESH {EVERY | AFTER}","RANDOMIZE FOR","APPEND","APPEND TO","DELETE FROM","EXPLAIN [AST | SYNTAX | QUERY TREE | PLAN | PIPELINE | ESTIMATE | TABLE OVERRIDE]","GRANT ON CLUSTER","GRANT CURRENT GRANTS","WITH GRANT OPTION","REVOKE ON CLUSTER","ADMIN OPTION FOR","CHECK TABLE","PARTITION ID","{DESC | DESCRIBE} TABLE"]),Lo=N(["UNION [ALL | DISTINCT]","PARALLEL WITH"]),Co=N(["[GLOBAL] [INNER|LEFT|RIGHT|FULL|CROSS] [OUTER|SEMI|ANTI|ANY|ALL|ASOF] JOIN","[LEFT] ARRAY JOIN"]),_o=N(["{ROWS | RANGE} BETWEEN","ALTER MATERIALIZE STATISTICS"]),Do={name:"clickhouse",tokenizerOptions:{reservedSelect:No,reservedClauses:[...co,...Tt,...ze],reservedSetOperations:Lo,reservedJoins:Co,reservedKeywordPhrases:_o,reservedKeywords:Oo,reservedDataTypes:lo,reservedFunctionNames:Io,extraParens:["[]","{}"],lineCommentTypes:["#","--"],nestedBlockComments:!1,underscoresInNumbers:!0,stringTypes:["$$","''-qq-bs"],identTypes:['""-qq-bs',"``"],paramTypes:{custom:[{regex:String.raw`\{[^:']+:[^}]+\}`,key:E=>{const e=/\{([^:]+):/.exec(E);return e?e[1].trim():E}}]},operators:["%","||","?",":","==","<=>","->"],postProcess:uo},formatOptions:{onelineClauses:[...Tt,...ze],tabularOnelineClauses:ze}};function uo(E){return E.map((e,t)=>{const n=E[t+1]||se,r=E[t-1]||se;return e.type===C.RESERVED_SELECT&&(n.type===C.COMMA||r.type===C.RESERVED_CLAUSE||r.type===C.COMMA)?Object.assign(Object.assign({},e),{type:C.RESERVED_KEYWORD}):oe.SET(e)&&n.type===C.OPEN_PAREN?Object.assign(Object.assign({},e),{type:C.RESERVED_FUNCTION_NAME}):e})}const po=["ARRAY_AGG","AVG","CORRELATION","COUNT","COUNT_BIG","COVARIANCE","COVARIANCE_SAMP","CUME_DIST","GROUPING","LISTAGG","MAX","MEDIAN","MIN","PERCENTILE_CONT","PERCENTILE_DISC","PERCENT_RANK","REGR_AVGX","REGR_AVGY","REGR_COUNT","REGR_INTERCEPT","REGR_ICPT","REGR_R2","REGR_SLOPE","REGR_SXX","REGR_SXY","REGR_SYY","STDDEV","STDDEV_SAMP","SUM","VARIANCE","VARIANCE_SAMP","XMLAGG","XMLGROUP","ABS","ABSVAL","ACOS","ADD_DAYS","ADD_HOURS","ADD_MINUTES","ADD_MONTHS","ADD_SECONDS","ADD_YEARS","AGE","ARRAY_DELETE","ARRAY_FIRST","ARRAY_LAST","ARRAY_NEXT","ARRAY_PRIOR","ASCII","ASCII_STR","ASIN","ATAN","ATAN2","ATANH","BITAND","BITANDNOT","BITOR","BITXOR","BITNOT","BPCHAR","BSON_TO_JSON","BTRIM","CARDINALITY","CEILING","CEIL","CHARACTER_LENGTH","CHR","COALESCE","COLLATION_KEY","COLLATION_KEY_BIT","COMPARE_DECFLOAT","CONCAT","COS","COSH","COT","CURSOR_ROWCOUNT","DATAPARTITIONNUM","DATE_PART","DATE_TRUNC","DAY","DAYNAME","DAYOFMONTH","DAYOFWEEK","DAYOFWEEK_ISO","DAYOFYEAR","DAYS","DAYS_BETWEEN","DAYS_TO_END_OF_MONTH","DBPARTITIONNUM","DECFLOAT","DECFLOAT_FORMAT","DECODE","DECRYPT_BIN","DECRYPT_CHAR","DEGREES","DEREF","DIFFERENCE","DIGITS","DOUBLE_PRECISION","EMPTY_BLOB","EMPTY_CLOB","EMPTY_DBCLOB","EMPTY_NCLOB","ENCRYPT","EVENT_MON_STATE","EXP","EXTRACT","FIRST_DAY","FLOOR","FROM_UTC_TIMESTAMP","GENERATE_UNIQUE","GETHINT","GREATEST","HASH","HASH4","HASH8","HASHEDVALUE","HEX","HEXTORAW","HOUR","HOURS_BETWEEN","IDENTITY_VAL_LOCAL","IFNULL","INITCAP","INSERT","INSTR","INSTR2","INSTR4","INSTRB","INTNAND","INTNOR","INTNXOR","INTNNOT","ISNULL","JSON_ARRAY","JSON_OBJECT","JSON_QUERY","JSON_TO_BSON","JSON_VALUE","JULIAN_DAY","LAST_DAY","LCASE","LEAST","LEFT","LENGTH","LENGTH2","LENGTH4","LENGTHB","LN","LOCATE","LOCATE_IN_STRING","LOG10","LONG_VARCHAR","LONG_VARGRAPHIC","LOWER","LPAD","LTRIM","MAX","MAX_CARDINALITY","MICROSECOND","MIDNIGHT_SECONDS","MIN","MINUTE","MINUTES_BETWEEN","MOD","MONTH","MONTHNAME","MONTHS_BETWEEN","MULTIPLY_ALT","NEXT_DAY","NEXT_MONTH","NEXT_QUARTER","NEXT_WEEK","NEXT_YEAR","NORMALIZE_DECFLOAT","NOW","NULLIF","NVL","NVL2","OCTET_LENGTH","OVERLAY","PARAMETER","POSITION","POSSTR","POW","POWER","QUANTIZE","QUARTER","QUOTE_IDENT","QUOTE_LITERAL","RADIANS","RAISE_ERROR","RAND","RANDOM","RAWTOHEX","REC2XML","REGEXP_COUNT","REGEXP_EXTRACT","REGEXP_INSTR","REGEXP_LIKE","REGEXP_MATCH_COUNT","REGEXP_REPLACE","REGEXP_SUBSTR","REPEAT","REPLACE","RID","RID_BIT","RIGHT","ROUND","ROUND_TIMESTAMP","RPAD","RTRIM","SECLABEL","SECLABEL_BY_NAME","SECLABEL_TO_CHAR","SECOND","SECONDS_BETWEEN","SIGN","SIN","SINH","SOUNDEX","SPACE","SQRT","STRIP","STRLEFT","STRPOS","STRRIGHT","SUBSTR","SUBSTR2","SUBSTR4","SUBSTRB","SUBSTRING","TABLE_NAME","TABLE_SCHEMA","TAN","TANH","THIS_MONTH","THIS_QUARTER","THIS_WEEK","THIS_YEAR","TIMESTAMP_FORMAT","TIMESTAMP_ISO","TIMESTAMPDIFF","TIMEZONE","TO_CHAR","TO_CLOB","TO_DATE","TO_HEX","TO_MULTI_BYTE","TO_NCHAR","TO_NCLOB","TO_NUMBER","TO_SINGLE_BYTE","TO_TIMESTAMP","TO_UTC_TIMESTAMP","TOTALORDER","TRANSLATE","TRIM","TRIM_ARRAY","TRUNC_TIMESTAMP","TRUNCATE","TRUNC","TYPE_ID","TYPE_NAME","TYPE_SCHEMA","UCASE","UNICODE_STR","UPPER","VALUE","VARCHAR_BIT_FORMAT","VARCHAR_FORMAT","VARCHAR_FORMAT_BIT","VERIFY_GROUP_FOR_USER","VERIFY_ROLE_FOR_USER","VERIFY_TRUSTED_CONTEXT_ROLE_FOR_USER","WEEK","WEEK_ISO","WEEKS_BETWEEN","WIDTH_BUCKET","XMLATTRIBUTES","XMLCOMMENT","XMLCONCAT","XMLDOCUMENT","XMLELEMENT","XMLFOREST","XMLNAMESPACES","XMLPARSE","XMLPI","XMLQUERY","XMLROW","XMLSERIALIZE","XMLTEXT","XMLVALIDATE","XMLXSROBJECTID","XSLTRANSFORM","YEAR","YEARS_BETWEEN","YMD_BETWEEN","BASE_TABLE","JSON_TABLE","UNNEST","XMLTABLE","RANK","DENSE_RANK","NTILE","LAG","LEAD","ROW_NUMBER","FIRST_VALUE","LAST_VALUE","NTH_VALUE","RATIO_TO_REPORT","CAST"],Po=["ACTIVATE","ADD","AFTER","ALIAS","ALL","ALLOCATE","ALLOW","ALTER","AND","ANY","AS","ASENSITIVE","ASSOCIATE","ASUTIME","AT","ATTRIBUTES","AUDIT","AUTHORIZATION","AUX","AUXILIARY","BEFORE","BEGIN","BETWEEN","BINARY","BUFFERPOOL","BY","CACHE","CALL","CALLED","CAPTURE","CARDINALITY","CASCADED","CASE","CAST","CHECK","CLONE","CLOSE","CLUSTER","COLLECTION","COLLID","COLUMN","COMMENT","COMMIT","CONCAT","CONDITION","CONNECT","CONNECTION","CONSTRAINT","CONTAINS","CONTINUE","COUNT","COUNT_BIG","CREATE","CROSS","CURRENT","CURRENT_DATE","CURRENT_LC_CTYPE","CURRENT_PATH","CURRENT_SCHEMA","CURRENT_SERVER","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_TIMEZONE","CURRENT_USER","CURSOR","CYCLE","DATA","DATABASE","DATAPARTITIONNAME","DATAPARTITIONNUM","DAY","DAYS","DB2GENERAL","DB2GENRL","DB2SQL","DBINFO","DBPARTITIONNAME","DBPARTITIONNUM","DEALLOCATE","DECLARE","DEFAULT","DEFAULTS","DEFINITION","DELETE","DENSERANK","DENSE_RANK","DESCRIBE","DESCRIPTOR","DETERMINISTIC","DIAGNOSTICS","DISABLE","DISALLOW","DISCONNECT","DISTINCT","DO","DOCUMENT","DROP","DSSIZE","DYNAMIC","EACH","EDITPROC","ELSE","ELSEIF","ENABLE","ENCODING","ENCRYPTION","END","END-EXEC","ENDING","ERASE","ESCAPE","EVERY","EXCEPT","EXCEPTION","EXCLUDING","EXCLUSIVE","EXECUTE","EXISTS","EXIT","EXPLAIN","EXTENDED","EXTERNAL","EXTRACT","FENCED","FETCH","FIELDPROC","FILE","FINAL","FIRST1","FOR","FOREIGN","FREE","FROM","FULL","FUNCTION","GENERAL","GENERATED","GET","GLOBAL","GO","GOTO","GRANT","GRAPHIC","GROUP","HANDLER","HASH","HASHED_VALUE","HAVING","HINT","HOLD","HOUR","HOURS","IDENTITY","IF","IMMEDIATE","IMPORT","IN","INCLUDING","INCLUSIVE","INCREMENT","INDEX","INDICATOR","INDICATORS","INF","INFINITY","INHERIT","INNER","INOUT","INSENSITIVE","INSERT","INTEGRITY","INTERSECT","INTO","IS","ISNULL","ISOBID","ISOLATION","ITERATE","JAR","JAVA","JOIN","KEEP","KEY","LABEL","LANGUAGE","LAST3","LATERAL","LC_CTYPE","LEAVE","LEFT","LIKE","LIMIT","LINKTYPE","LOCAL","LOCALDATE","LOCALE","LOCALTIME","LOCALTIMESTAMP","LOCATOR","LOCATORS","LOCK","LOCKMAX","LOCKSIZE","LOOP","MAINTAINED","MATERIALIZED","MAXVALUE","MICROSECOND","MICROSECONDS","MINUTE","MINUTES","MINVALUE","MODE","MODIFIES","MONTH","MONTHS","NAN","NEW","NEW_TABLE","NEXTVAL","NO","NOCACHE","NOCYCLE","NODENAME","NODENUMBER","NOMAXVALUE","NOMINVALUE","NONE","NOORDER","NORMALIZED","NOT2","NOTNULL","NULL","NULLS","NUMPARTS","OBID","OF","OFF","OFFSET","OLD","OLD_TABLE","ON","OPEN","OPTIMIZATION","OPTIMIZE","OPTION","OR","ORDER","OUT","OUTER","OVER","OVERRIDING","PACKAGE","PADDED","PAGESIZE","PARAMETER","PART","PARTITION","PARTITIONED","PARTITIONING","PARTITIONS","PASSWORD","PATH","PERCENT","PIECESIZE","PLAN","POSITION","PRECISION","PREPARE","PREVVAL","PRIMARY","PRIQTY","PRIVILEGES","PROCEDURE","PROGRAM","PSID","PUBLIC","QUERY","QUERYNO","RANGE","RANK","READ","READS","RECOVERY","REFERENCES","REFERENCING","REFRESH","RELEASE","RENAME","REPEAT","RESET","RESIGNAL","RESTART","RESTRICT","RESULT","RESULT_SET_LOCATOR","RETURN","RETURNS","REVOKE","RIGHT","ROLE","ROLLBACK","ROUND_CEILING","ROUND_DOWN","ROUND_FLOOR","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_UP","ROUND_UP","ROUTINE","ROW","ROWNUMBER","ROWS","ROWSET","ROW_NUMBER","RRN","RUN","SAVEPOINT","SCHEMA","SCRATCHPAD","SCROLL","SEARCH","SECOND","SECONDS","SECQTY","SECURITY","SELECT","SENSITIVE","SEQUENCE","SESSION","SESSION_USER","SET","SIGNAL","SIMPLE","SNAN","SOME","SOURCE","SPECIFIC","SQL","SQLID","STACKED","STANDARD","START","STARTING","STATEMENT","STATIC","STATMENT","STAY","STOGROUP","STORES","STYLE","SUBSTRING","SUMMARY","SYNONYM","SYSFUN","SYSIBM","SYSPROC","SYSTEM","SYSTEM_USER","TABLE","TABLESPACE","THEN","TO","TRANSACTION","TRIGGER","TRIM","TRUNCATE","TYPE","UNDO","UNION","UNIQUE","UNTIL","UPDATE","USAGE","USER","USING","VALIDPROC","VALUE","VALUES","VARIABLE","VARIANT","VCAT","VERSION","VIEW","VOLATILE","VOLUMES","WHEN","WHENEVER","WHERE","WHILE","WITH","WITHOUT","WLM","WRITE","XMLELEMENT","XMLEXISTS","XMLNAMESPACES","YEAR","YEARS"],Mo=["ARRAY","BIGINT","BINARY","BLOB","BOOLEAN","CCSID","CHAR","CHARACTER","CLOB","DATE","DATETIME","DBCLOB","DEC","DECIMAL","DOUBLE","DOUBLE PRECISION","FLOAT","FLOAT4","FLOAT8","GRAPHIC","INT","INT2","INT4","INT8","INTEGER","INTERVAL","LONG VARCHAR","LONG VARGRAPHIC","NCHAR","NCHR","NCLOB","NVARCHAR","NUMERIC","SMALLINT","REAL","TIME","TIMESTAMP","VARBINARY","VARCHAR","VARGRAPHIC"],ho=N(["SELECT [ALL | DISTINCT]"]),fo=N(["WITH","FROM","WHERE","GROUP BY","HAVING","PARTITION BY","ORDER BY [INPUT SEQUENCE]","LIMIT","OFFSET","FETCH NEXT","FOR UPDATE [OF]","FOR {READ | FETCH} ONLY","FOR {RR | CS | UR | RS} [USE AND KEEP {SHARE | UPDATE | EXCLUSIVE} LOCKS]","WAIT FOR OUTCOME","SKIP LOCKED DATA","INTO","INSERT INTO","VALUES","SET","MERGE INTO","WHEN [NOT] MATCHED [THEN]","UPDATE SET","INSERT"]),rt=N(["CREATE [GLOBAL TEMPORARY | EXTERNAL] TABLE [IF NOT EXISTS]"]),eE=N(["CREATE [OR REPLACE] VIEW","UPDATE","WHERE CURRENT OF","WITH {RR | RS | CS | UR}","DELETE FROM","DROP TABLE [IF EXISTS]","ALTER TABLE","ADD [COLUMN]","DROP [COLUMN]","RENAME COLUMN","ALTER [COLUMN]","SET DATA TYPE","SET NOT NULL","DROP {DEFAULT | GENERATED | NOT NULL}","TRUNCATE [TABLE]","ALLOCATE","ALTER AUDIT POLICY","ALTER BUFFERPOOL","ALTER DATABASE PARTITION GROUP","ALTER DATABASE","ALTER EVENT MONITOR","ALTER FUNCTION","ALTER HISTOGRAM TEMPLATE","ALTER INDEX","ALTER MASK","ALTER METHOD","ALTER MODULE","ALTER NICKNAME","ALTER PACKAGE","ALTER PERMISSION","ALTER PROCEDURE","ALTER SCHEMA","ALTER SECURITY LABEL COMPONENT","ALTER SECURITY POLICY","ALTER SEQUENCE","ALTER SERVER","ALTER SERVICE CLASS","ALTER STOGROUP","ALTER TABLESPACE","ALTER THRESHOLD","ALTER TRIGGER","ALTER TRUSTED CONTEXT","ALTER TYPE","ALTER USAGE LIST","ALTER USER MAPPING","ALTER VIEW","ALTER WORK ACTION SET","ALTER WORK CLASS SET","ALTER WORKLOAD","ALTER WRAPPER","ALTER XSROBJECT","ALTER STOGROUP","ALTER TABLESPACE","ALTER TRIGGER","ALTER TRUSTED CONTEXT","ALTER VIEW","ASSOCIATE [RESULT SET] {LOCATOR | LOCATORS}","AUDIT","BEGIN DECLARE SECTION","CALL","CLOSE","COMMENT ON","COMMIT [WORK]","CONNECT","CREATE [OR REPLACE] [PUBLIC] ALIAS","CREATE AUDIT POLICY","CREATE BUFFERPOOL","CREATE DATABASE PARTITION GROUP","CREATE EVENT MONITOR","CREATE [OR REPLACE] FUNCTION","CREATE FUNCTION MAPPING","CREATE HISTOGRAM TEMPLATE","CREATE [UNIQUE] INDEX","CREATE INDEX EXTENSION","CREATE [OR REPLACE] MASK","CREATE [SPECIFIC] METHOD","CREATE [OR REPLACE] MODULE","CREATE [OR REPLACE] NICKNAME","CREATE [OR REPLACE] PERMISSION","CREATE [OR REPLACE] PROCEDURE","CREATE ROLE","CREATE SCHEMA","CREATE SECURITY LABEL [COMPONENT]","CREATE SECURITY POLICY","CREATE [OR REPLACE] SEQUENCE","CREATE SERVICE CLASS","CREATE SERVER","CREATE STOGROUP","CREATE SYNONYM","CREATE [LARGE | REGULAR | {SYSTEM | USER} TEMPORARY] TABLESPACE","CREATE THRESHOLD","CREATE {TRANSFORM | TRANSFORMS} FOR","CREATE [OR REPLACE] TRIGGER","CREATE TRUSTED CONTEXT","CREATE [OR REPLACE] TYPE","CREATE TYPE MAPPING","CREATE USAGE LIST","CREATE USER MAPPING FOR","CREATE [OR REPLACE] VARIABLE","CREATE WORK ACTION SET","CREATE WORK CLASS SET","CREATE WORKLOAD","CREATE WRAPPER","DECLARE","DECLARE GLOBAL TEMPORARY TABLE","DESCRIBE [INPUT | OUTPUT]","DISCONNECT","DROP [PUBLIC] ALIAS","DROP AUDIT POLICY","DROP BUFFERPOOL","DROP DATABASE PARTITION GROUP","DROP EVENT MONITOR","DROP [SPECIFIC] FUNCTION","DROP FUNCTION MAPPING","DROP HISTOGRAM TEMPLATE","DROP INDEX [EXTENSION]","DROP MASK","DROP [SPECIFIC] METHOD","DROP MODULE","DROP NICKNAME","DROP PACKAGE","DROP PERMISSION","DROP [SPECIFIC] PROCEDURE","DROP ROLE","DROP SCHEMA","DROP SECURITY LABEL [COMPONENT]","DROP SECURITY POLICY","DROP SEQUENCE","DROP SERVER","DROP SERVICE CLASS","DROP STOGROUP","DROP TABLE HIERARCHY","DROP {TABLESPACE | TABLESPACES}","DROP {TRANSFORM | TRANSFORMS}","DROP THRESHOLD","DROP TRIGGER","DROP TRUSTED CONTEXT","DROP TYPE [MAPPING]","DROP USAGE LIST","DROP USER MAPPING FOR","DROP VARIABLE","DROP VIEW [HIERARCHY]","DROP WORK {ACTION | CLASS} SET","DROP WORKLOAD","DROP WRAPPER","DROP XSROBJECT","END DECLARE SECTION","EXECUTE [IMMEDIATE]","EXPLAIN {PLAN [SECTION] | ALL}","FETCH [FROM]","FLUSH {BUFFERPOOL | BUFFERPOOLS} ALL","FLUSH EVENT MONITOR","FLUSH FEDERATED CACHE","FLUSH OPTIMIZATION PROFILE CACHE","FLUSH PACKAGE CACHE [DYNAMIC]","FLUSH AUTHENTICATION CACHE [FOR ALL]","FREE LOCATOR","GET DIAGNOSTICS","GOTO","GRANT","INCLUDE","ITERATE","LEAVE","LOCK TABLE","LOOP","OPEN","PIPE","PREPARE","REFRESH TABLE","RELEASE","RELEASE [TO] SAVEPOINT","RENAME [TABLE | INDEX | STOGROUP | TABLESPACE]","REPEAT","RESIGNAL","RETURN","REVOKE","ROLLBACK [WORK] [TO SAVEPOINT]","SAVEPOINT","SET COMPILATION ENVIRONMENT","SET CONNECTION","SET CURRENT","SET ENCRYPTION PASSWORD","SET EVENT MONITOR STATE","SET INTEGRITY","SET PASSTHRU","SET PATH","SET ROLE","SET SCHEMA","SET SERVER OPTION","SET {SESSION AUTHORIZATION | SESSION_USER}","SET USAGE LIST","SIGNAL","TRANSFER OWNERSHIP OF","WHENEVER {NOT FOUND | SQLERROR | SQLWARNING}","WHILE"]),mo=N(["UNION [ALL]","EXCEPT [ALL]","INTERSECT [ALL]"]),Uo=N(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN"]),xo=N(["ON DELETE","ON UPDATE","SET NULL","{ROWS | RANGE} BETWEEN"]),yo=N([]),go={name:"db2",tokenizerOptions:{reservedSelect:ho,reservedClauses:[...fo,...rt,...eE],reservedSetOperations:mo,reservedJoins:Uo,reservedKeywordPhrases:xo,reservedDataTypePhrases:yo,reservedKeywords:Po,reservedDataTypes:Mo,reservedFunctionNames:po,extraParens:["[]"],stringTypes:[{quote:"''-qq",prefixes:["G","N","U&"]},{quote:"''-raw",prefixes:["X","BX","GX","UX"],requirePrefix:!0}],identTypes:['""-qq'],identChars:{first:"@#$",rest:"@#$"},paramTypes:{positional:!0,named:[":"]},paramChars:{first:"@#$",rest:"@#$"},operators:["**","%","|","&","^","~","¬=","¬>","¬<","!>","!<","^=","^>","^<","||","->","=>"]},formatOptions:{onelineClauses:[...rt,...eE],tabularOnelineClauses:eE}},Go=["ARRAY_AGG","AVG","CORR","CORRELATION","COUNT","COUNT_BIG","COVAR_POP","COVARIANCE","COVAR","COVAR_SAMP","COVARIANCE_SAMP","EVERY","GROUPING","JSON_ARRAYAGG","JSON_OBJECTAGG","LISTAGG","MAX","MEDIAN","MIN","PERCENTILE_CONT","PERCENTILE_DISC","REGR_AVGX","REGR_AVGY","REGR_COUNT","REGR_INTERCEPT","REGR_R2","REGR_SLOPE","REGR_SXX","REGR_SXY","REGR_SYY","SOME","STDDEV_POP","STDDEV","STDDEV_SAMP","SUM","VAR_POP","VARIANCE","VAR","VAR_SAMP","VARIANCE_SAMP","XMLAGG","XMLGROUP","ABS","ABSVAL","ACOS","ADD_DAYS","ADD_HOURS","ADD_MINUTES","ADD_MONTHS","ADD_SECONDS","ADD_YEARS","ANTILOG","ARRAY_MAX_CARDINALITY","ARRAY_TRIM","ASCII","ASIN","ATAN","ATAN2","ATANH","BASE64_DECODE","BASE64_ENCODE","BIT_LENGTH","BITAND","BITANDNOT","BITNOT","BITOR","BITXOR","BSON_TO_JSON","CARDINALITY","CEIL","CEILING","CHAR_LENGTH","CHARACTER_LENGTH","CHR","COALESCE","COMPARE_DECFLOAT","CONCAT","CONTAINS","COS","COSH","COT","CURDATE","CURTIME","DATABASE","DATAPARTITIONNAME","DATAPARTITIONNUM","DAY","DAYNAME","DAYOFMONTH","DAYOFWEEK_ISO","DAYOFWEEK","DAYOFYEAR","DAYS","DBPARTITIONNAME","DBPARTITIONNUM","DECFLOAT_FORMAT","DECFLOAT_SORTKEY","DECRYPT_BINARY","DECRYPT_BIT","DECRYPT_CHAR","DECRYPT_DB","DEGREES","DIFFERENCE","DIGITS","DLCOMMENT","DLLINKTYPE","DLURLCOMPLETE","DLURLPATH","DLURLPATHONLY","DLURLSCHEME","DLURLSERVER","DLVALUE","DOUBLE_PRECISION","DOUBLE","ENCRPYT","ENCRYPT_AES","ENCRYPT_AES256","ENCRYPT_RC2","ENCRYPT_TDES","EXP","EXTRACT","FIRST_DAY","FLOOR","GENERATE_UNIQUE","GET_BLOB_FROM_FILE","GET_CLOB_FROM_FILE","GET_DBCLOB_FROM_FILE","GET_XML_FILE","GETHINT","GREATEST","HASH_MD5","HASH_ROW","HASH_SHA1","HASH_SHA256","HASH_SHA512","HASH_VALUES","HASHED_VALUE","HEX","HEXTORAW","HOUR","HTML_ENTITY_DECODE","HTML_ENTITY_ENCODE","HTTP_DELETE_BLOB","HTTP_DELETE","HTTP_GET_BLOB","HTTP_GET","HTTP_PATCH_BLOB","HTTP_PATCH","HTTP_POST_BLOB","HTTP_POST","HTTP_PUT_BLOB","HTTP_PUT","IDENTITY_VAL_LOCAL","IFNULL","INSERT","INSTR","INTERPRET","ISFALSE","ISNOTFALSE","ISNOTTRUE","ISTRUE","JSON_ARRAY","JSON_OBJECT","JSON_QUERY","JSON_TO_BSON","JSON_UPDATE","JSON_VALUE","JULIAN_DAY","LAND","LAST_DAY","LCASE","LEAST","LEFT","LENGTH","LN","LNOT","LOCATE_IN_STRING","LOCATE","LOG10","LOR","LOWER","LPAD","LTRIM","MAX_CARDINALITY","MAX","MICROSECOND","MIDNIGHT_SECONDS","MIN","MINUTE","MOD","MONTH","MONTHNAME","MONTHS_BETWEEN","MQREAD","MQREADCLOB","MQRECEIVE","MQRECEIVECLOB","MQSEND","MULTIPLY_ALT","NEXT_DAY","NORMALIZE_DECFLOAT","NOW","NULLIF","NVL","OCTET_LENGTH","OVERLAY","PI","POSITION","POSSTR","POW","POWER","QUANTIZE","QUARTER","RADIANS","RAISE_ERROR","RANDOM","RAND","REGEXP_COUNT","REGEXP_INSTR","REGEXP_REPLACE","REGEXP_SUBSTR","REPEAT","REPLACE","RID","RIGHT","ROUND_TIMESTAMP","ROUND","RPAD","RRN","RTRIM","SCORE","SECOND","SIGN","SIN","SINH","SOUNDEX","SPACE","SQRT","STRIP","STRLEFT","STRPOS","STRRIGHT","SUBSTR","SUBSTRING","TABLE_NAME","TABLE_SCHEMA","TAN","TANH","TIMESTAMP_FORMAT","TIMESTAMP_ISO","TIMESTAMPDIFF_BIG","TIMESTAMPDIFF","TO_CHAR","TO_CLOB","TO_DATE","TO_NUMBER","TO_TIMESTAMP","TOTALORDER","TRANSLATE","TRIM_ARRAY","TRIM","TRUNC_TIMESTAMP","TRUNC","TRUNCATE","UCASE","UPPER","URL_DECODE","URL_ENCODE","VALUE","VARBINARY_FORMAT","VARCHAR_BIT_FORMAT","VARCHAR_FORMAT_BINARY","VARCHAR_FORMAT","VERIFY_GROUP_FOR_USER","WEEK_ISO","WEEK","WRAP","XMLATTRIBUTES","XMLCOMMENT","XMLCONCAT","XMLDOCUMENT","XMLELEMENT","XMLFOREST","XMLNAMESPACES","XMLPARSE","XMLPI","XMLROW","XMLSERIALIZE","XMLTEXT","XMLVALIDATE","XOR","XSLTRANSFORM","YEAR","ZONED","BASE_TABLE","HTTP_DELETE_BLOB_VERBOSE","HTTP_DELETE_VERBOSE","HTTP_GET_BLOB_VERBOSE","HTTP_GET_VERBOSE","HTTP_PATCH_BLOB_VERBOSE","HTTP_PATCH_VERBOSE","HTTP_POST_BLOB_VERBOSE","HTTP_POST_VERBOSE","HTTP_PUT_BLOB_VERBOSE","HTTP_PUT_VERBOSE","JSON_TABLE","MQREADALL","MQREADALLCLOB","MQRECEIVEALL","MQRECEIVEALLCLOB","XMLTABLE","UNPACK","CUME_DIST","DENSE_RANK","FIRST_VALUE","LAG","LAST_VALUE","LEAD","NTH_VALUE","NTILE","PERCENT_RANK","RANK","RATIO_TO_REPORT","ROW_NUMBER","CAST"],Bo=["ABSENT","ACCORDING","ACCTNG","ACTION","ACTIVATE","ADD","ALIAS","ALL","ALLOCATE","ALLOW","ALTER","AND","ANY","APPEND","APPLNAME","ARRAY","ARRAY_AGG","ARRAY_TRIM","AS","ASC","ASENSITIVE","ASSOCIATE","ATOMIC","ATTACH","ATTRIBUTES","AUTHORIZATION","AUTONOMOUS","BEFORE","BEGIN","BETWEEN","BIND","BSON","BUFFERPOOL","BY","CACHE","CALL","CALLED","CARDINALITY","CASE","CAST","CHECK","CL","CLOSE","CLUSTER","COLLECT","COLLECTION","COLUMN","COMMENT","COMMIT","COMPACT","COMPARISONS","COMPRESS","CONCAT","CONCURRENT","CONDITION","CONNECT","CONNECT_BY_ROOT","CONNECTION","CONSTANT","CONSTRAINT","CONTAINS","CONTENT","CONTINUE","COPY","COUNT","COUNT_BIG","CREATE","CREATEIN","CROSS","CUBE","CUME_DIST","CURRENT","CURRENT_DATE","CURRENT_PATH","CURRENT_SCHEMA","CURRENT_SERVER","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_TIMEZONE","CURRENT_USER","CURSOR","CYCLE","DATABASE","DATAPARTITIONNAME","DATAPARTITIONNUM","DAY","DAYS","DB2GENERAL","DB2GENRL","DB2SQL","DBINFO","DBPARTITIONNAME","DBPARTITIONNUM","DEACTIVATE","DEALLOCATE","DECLARE","DEFAULT","DEFAULTS","DEFER","DEFINE","DEFINITION","DELETE","DELETING","DENSE_RANK","DENSERANK","DESC","DESCRIBE","DESCRIPTOR","DETACH","DETERMINISTIC","DIAGNOSTICS","DISABLE","DISALLOW","DISCONNECT","DISTINCT","DO","DOCUMENT","DROP","DYNAMIC","EACH","ELSE","ELSEIF","EMPTY","ENABLE","ENCODING","ENCRYPTION","END","END-EXEC","ENDING","ENFORCED","ERROR","ESCAPE","EVERY","EXCEPT","EXCEPTION","EXCLUDING","EXCLUSIVE","EXECUTE","EXISTS","EXIT","EXTEND","EXTERNAL","EXTRACT","FALSE","FENCED","FETCH","FIELDPROC","FILE","FINAL","FIRST_VALUE","FOR","FOREIGN","FORMAT","FREE","FREEPAGE","FROM","FULL","FUNCTION","GBPCACHE","GENERAL","GENERATED","GET","GLOBAL","GO","GOTO","GRANT","GROUP","HANDLER","HASH","HASH_ROW","HASHED_VALUE","HAVING","HINT","HOLD","HOUR","HOURS","IDENTITY","IF","IGNORE","IMMEDIATE","IMPLICITLY","IN","INCLUDE","INCLUDING","INCLUSIVE","INCREMENT","INDEX","INDEXBP","INDICATOR","INF","INFINITY","INHERIT","INLINE","INNER","INOUT","INSENSITIVE","INSERT","INSERTING","INTEGRITY","INTERPRET","INTERSECT","INTO","IS","ISNULL","ISOLATION","ITERATE","JAVA","JOIN","JSON","JSON_ARRAY","JSON_ARRAYAGG","JSON_EXISTS","JSON_OBJECT","JSON_OBJECTAGG","JSON_QUERY","JSON_TABLE","JSON_VALUE","KEEP","KEY","KEYS","LABEL","LAG","LANGUAGE","LAST_VALUE","LATERAL","LEAD","LEAVE","LEFT","LEVEL2","LIKE","LIMIT","LINKTYPE","LISTAGG","LOCAL","LOCALDATE","LOCALTIME","LOCALTIMESTAMP","LOCATION","LOCATOR","LOCK","LOCKSIZE","LOG","LOGGED","LOOP","MAINTAINED","MASK","MATCHED","MATERIALIZED","MAXVALUE","MERGE","MICROSECOND","MICROSECONDS","MINPCTUSED","MINUTE","MINUTES","MINVALUE","MIRROR","MIXED","MODE","MODIFIES","MONTH","MONTHS","NAMESPACE","NAN","NATIONAL","NCHAR","NCLOB","NESTED","NEW","NEW_TABLE","NEXTVAL","NO","NOCACHE","NOCYCLE","NODENAME","NODENUMBER","NOMAXVALUE","NOMINVALUE","NONE","NOORDER","NORMALIZED","NOT","NOTNULL","NTH_VALUE","NTILE","NULL","NULLS","NVARCHAR","OBID","OBJECT","OF","OFF","OFFSET","OLD","OLD_TABLE","OMIT","ON","ONLY","OPEN","OPTIMIZE","OPTION","OR","ORDER","ORDINALITY","ORGANIZE","OUT","OUTER","OVER","OVERLAY","OVERRIDING","PACKAGE","PADDED","PAGE","PAGESIZE","PARAMETER","PART","PARTITION","PARTITIONED","PARTITIONING","PARTITIONS","PASSING","PASSWORD","PATH","PCTFREE","PERCENT_RANK","PERCENTILE_CONT","PERCENTILE_DISC","PERIOD","PERMISSION","PIECESIZE","PIPE","PLAN","POSITION","PREPARE","PREVVAL","PRIMARY","PRIOR","PRIQTY","PRIVILEGES","PROCEDURE","PROGRAM","PROGRAMID","QUERY","RANGE","RANK","RATIO_TO_REPORT","RCDFMT","READ","READS","RECOVERY","REFERENCES","REFERENCING","REFRESH","REGEXP_LIKE","RELEASE","RENAME","REPEAT","RESET","RESIGNAL","RESTART","RESULT","RESULT_SET_LOCATOR","RETURN","RETURNING","RETURNS","REVOKE","RID","RIGHT","ROLLBACK","ROLLUP","ROUTINE","ROW","ROW_NUMBER","ROWNUMBER","ROWS","RRN","RUN","SAVEPOINT","SBCS","SCALAR","SCHEMA","SCRATCHPAD","SCROLL","SEARCH","SECOND","SECONDS","SECQTY","SECURED","SELECT","SENSITIVE","SEQUENCE","SESSION","SESSION_USER","SET","SIGNAL","SIMPLE","SKIP","SNAN","SOME","SOURCE","SPECIFIC","SQL","SQLID","SQLIND_DEFAULT","SQLIND_UNASSIGNED","STACKED","START","STARTING","STATEMENT","STATIC","STOGROUP","SUBSTRING","SUMMARY","SYNONYM","SYSTEM_TIME","SYSTEM_USER","TABLE","TABLESPACE","TABLESPACES","TAG","THEN","THREADSAFE","TO","TRANSACTION","TRANSFER","TRIGGER","TRIM","TRIM_ARRAY","TRUE","TRUNCATE","TRY_CAST","TYPE","UNDO","UNION","UNIQUE","UNIT","UNKNOWN","UNNEST","UNTIL","UPDATE","UPDATING","URI","USAGE","USE","USER","USERID","USING","VALUE","VALUES","VARIABLE","VARIANT","VCAT","VERSION","VERSIONING","VIEW","VOLATILE","WAIT","WHEN","WHENEVER","WHERE","WHILE","WITH","WITHIN","WITHOUT","WRAPPED","WRAPPER","WRITE","WRKSTNNAME","XMLAGG","XMLATTRIBUTES","XMLCAST","XMLCOMMENT","XMLCONCAT","XMLDOCUMENT","XMLELEMENT","XMLFOREST","XMLGROUP","XMLNAMESPACES","XMLPARSE","XMLPI","XMLROW","XMLSERIALIZE","XMLTABLE","XMLTEXT","XMLVALIDATE","XSLTRANSFORM","XSROBJECT","YEAR","YEARS","YES","ZONE"],Ho=["ARRAY","BIGINT","BINARY","BIT","BLOB","BOOLEAN","CCSID","CHAR","CHARACTER","CLOB","DATA","DATALINK","DATE","DBCLOB","DECFLOAT","DECIMAL","DEC","DOUBLE","DOUBLE PRECISION","FLOAT","GRAPHIC","INT","INTEGER","LONG","NUMERIC","REAL","ROWID","SMALLINT","TIME","TIMESTAMP","VARBINARY","VARCHAR","VARGRAPHIC","XML"],Fo=N(["SELECT [ALL | DISTINCT]"]),bo=N(["WITH [RECURSIVE]","INTO","FROM","WHERE","GROUP BY","HAVING","PARTITION BY","ORDER [SIBLINGS] BY [INPUT SEQUENCE]","LIMIT","OFFSET","FETCH {FIRST | NEXT}","FOR UPDATE [OF]","FOR READ ONLY","OPTIMIZE FOR","INSERT INTO","VALUES","SET","MERGE INTO","WHEN [NOT] MATCHED [THEN]","UPDATE SET","DELETE","INSERT","FOR SYSTEM NAME"]),nt=N(["CREATE [OR REPLACE] TABLE"]),EE=N(["CREATE [OR REPLACE] [RECURSIVE] VIEW","UPDATE","WHERE CURRENT OF","WITH {NC | RR | RS | CS | UR}","DELETE FROM","DROP TABLE","ALTER TABLE","ADD [COLUMN]","ALTER [COLUMN]","DROP [COLUMN]","SET DATA TYPE","SET {GENERATED ALWAYS | GENERATED BY DEFAULT}","SET NOT NULL","SET {NOT HIDDEN | IMPLICITLY HIDDEN}","SET FIELDPROC","DROP {DEFAULT | NOT NULL | GENERATED | IDENTITY | ROW CHANGE TIMESTAMP | FIELDPROC}","TRUNCATE [TABLE]","SET [CURRENT] SCHEMA","SET CURRENT_SCHEMA","ALLOCATE CURSOR","ALLOCATE [SQL] DESCRIPTOR [LOCAL | GLOBAL] SQL","ALTER [SPECIFIC] {FUNCTION | PROCEDURE}","ALTER {MASK | PERMISSION | SEQUENCE | TRIGGER}","ASSOCIATE [RESULT SET] {LOCATOR | LOCATORS}","BEGIN DECLARE SECTION","CALL","CLOSE","COMMENT ON {ALIAS | COLUMN | CONSTRAINT | INDEX | MASK | PACKAGE | PARAMETER | PERMISSION | SEQUENCE | TABLE | TRIGGER | VARIABLE | XSROBJECT}","COMMENT ON [SPECIFIC] {FUNCTION | PROCEDURE | ROUTINE}","COMMENT ON PARAMETER SPECIFIC {FUNCTION | PROCEDURE | ROUTINE}","COMMENT ON [TABLE FUNCTION] RETURN COLUMN","COMMENT ON [TABLE FUNCTION] RETURN COLUMN SPECIFIC [PROCEDURE | ROUTINE]","COMMIT [WORK] [HOLD]","CONNECT [TO | RESET] USER","CREATE [OR REPLACE] {ALIAS | FUNCTION | MASK | PERMISSION | PROCEDURE | SEQUENCE | TRIGGER | VARIABLE}","CREATE [ENCODED VECTOR] INDEX","CREATE UNIQUE [WHERE NOT NULL] INDEX","CREATE SCHEMA","CREATE TYPE","DEALLOCATE [SQL] DESCRIPTOR [LOCAL | GLOBAL]","DECLARE CURSOR","DECLARE GLOBAL TEMPORARY TABLE","DECLARE","DESCRIBE CURSOR","DESCRIBE INPUT","DESCRIBE [OUTPUT]","DESCRIBE {PROCEDURE | ROUTINE}","DESCRIBE TABLE","DISCONNECT ALL [SQL]","DISCONNECT [CURRENT]","DROP {ALIAS | INDEX | MASK | PACKAGE | PERMISSION | SCHEMA | SEQUENCE | TABLE | TYPE | VARIABLE | XSROBJECT} [IF EXISTS]","DROP [SPECIFIC] {FUNCTION | PROCEDURE | ROUTINE} [IF EXISTS]","END DECLARE SECTION","EXECUTE [IMMEDIATE]","FREE LOCATOR","GET [SQL] DESCRIPTOR [LOCAL | GLOBAL]","GET [CURRENT | STACKED] DIAGNOSTICS","GRANT {ALL [PRIVILEGES] | ALTER | EXECUTE} ON {FUNCTION | PROCEDURE | ROUTINE | PACKAGE | SCHEMA | SEQUENCE | TABLE | TYPE | VARIABLE | XSROBJECT}","HOLD LOCATOR","INCLUDE","LABEL ON {ALIAS | COLUMN | CONSTRAINT | INDEX | MASK | PACKAGE | PERMISSION | SEQUENCE | TABLE | TRIGGER | VARIABLE | XSROBJECT}","LABEL ON [SPECIFIC] {FUNCTION | PROCEDURE | ROUTINE}","LOCK TABLE","OPEN","PREPARE","REFRESH TABLE","RELEASE","RELEASE [TO] SAVEPOINT","RENAME [TABLE | INDEX] TO","REVOKE {ALL [PRIVILEGES] | ALTER | EXECUTE} ON {FUNCTION | PROCEDURE | ROUTINE | PACKAGE | SCHEMA | SEQUENCE | TABLE | TYPE | VARIABLE | XSROBJECT}","ROLLBACK [WORK] [HOLD | TO SAVEPOINT]","SAVEPOINT","SET CONNECTION","SET CURRENT {DEBUG MODE | DECFLOAT ROUNDING MODE | DEGREE | IMPLICIT XMLPARSE OPTION | TEMPORAL SYSTEM_TIME}","SET [SQL] DESCRIPTOR [LOCAL | GLOBAL]","SET ENCRYPTION PASSWORD","SET OPTION","SET {[CURRENT [FUNCTION]] PATH | CURRENT_PATH}","SET RESULT SETS [WITH RETURN [TO CALLER | TO CLIENT]]","SET SESSION AUTHORIZATION","SET SESSION_USER","SET TRANSACTION","SIGNAL SQLSTATE [VALUE]","TAG","TRANSFER OWNERSHIP OF","WHENEVER {NOT FOUND | SQLERROR | SQLWARNING}"]),Yo=N(["UNION [ALL]","EXCEPT [ALL]","INTERSECT [ALL]"]),vo=N(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","[LEFT | RIGHT] EXCEPTION JOIN","{INNER | CROSS} JOIN"]),Vo=N(["ON DELETE","ON UPDATE","SET NULL","{ROWS | RANGE} BETWEEN"]),Wo=N([]),Xo={name:"db2i",tokenizerOptions:{reservedSelect:Fo,reservedClauses:[...bo,...nt,...EE],reservedSetOperations:Yo,reservedJoins:vo,reservedKeywordPhrases:Vo,reservedDataTypePhrases:Wo,reservedKeywords:Bo,reservedDataTypes:Ho,reservedFunctionNames:Go,nestedBlockComments:!0,extraParens:["[]"],stringTypes:[{quote:"''-qq",prefixes:["G","N"]},{quote:"''-raw",prefixes:["X","BX","GX","UX"],requirePrefix:!0}],identTypes:['""-qq'],identChars:{first:"@#$",rest:"@#$"},paramTypes:{positional:!0,named:[":"]},paramChars:{first:"@#$",rest:"@#$"},operators:["**","¬=","¬>","¬<","!>","!<","||","=>"]},formatOptions:{onelineClauses:[...nt,...EE],tabularOnelineClauses:EE}},wo=["ABS","ACOS","ADD","ADD_PARQUET_KEY","AGE","AGGREGATE","ALIAS","ALL_PROFILING_OUTPUT","ANY_VALUE","APPLY","APPROX_COUNT_DISTINCT","APPROX_QUANTILE","ARBITRARY","ARGMAX","ARGMIN","ARG_MAX","ARG_MAX_NULL","ARG_MIN","ARG_MIN_NULL","ARRAY_AGG","ARRAY_AGGR","ARRAY_AGGREGATE","ARRAY_APPEND","ARRAY_APPLY","ARRAY_CAT","ARRAY_CONCAT","ARRAY_CONTAINS","ARRAY_COSINE_SIMILARITY","ARRAY_CROSS_PRODUCT","ARRAY_DISTANCE","ARRAY_DISTINCT","ARRAY_DOT_PRODUCT","ARRAY_EXTRACT","ARRAY_FILTER","ARRAY_GRADE_UP","ARRAY_HAS","ARRAY_HAS_ALL","ARRAY_HAS_ANY","ARRAY_INDEXOF","ARRAY_INNER_PRODUCT","ARRAY_INTERSECT","ARRAY_LENGTH","ARRAY_POP_BACK","ARRAY_POP_FRONT","ARRAY_POSITION","ARRAY_PREPEND","ARRAY_PUSH_BACK","ARRAY_PUSH_FRONT","ARRAY_REDUCE","ARRAY_RESIZE","ARRAY_REVERSE","ARRAY_REVERSE_SORT","ARRAY_SELECT","ARRAY_SLICE","ARRAY_SORT","ARRAY_TO_JSON","ARRAY_TO_STRING","ARRAY_TRANSFORM","ARRAY_UNIQUE","ARRAY_VALUE","ARRAY_WHERE","ARRAY_ZIP","ARROW_SCAN","ARROW_SCAN_DUMB","ASCII","ASIN","ATAN","ATAN2","AVG","BASE64","BIN","BITSTRING","BITSTRING_AGG","BIT_AND","BIT_COUNT","BIT_LENGTH","BIT_OR","BIT_POSITION","BIT_XOR","BOOL_AND","BOOL_OR","CARDINALITY","CBRT","CEIL","CEILING","CENTURY","CHECKPOINT","CHR","COLLATIONS","COL_DESCRIPTION","COMBINE","CONCAT","CONCAT_WS","CONSTANT_OR_NULL","CONTAINS","COPY_DATABASE","CORR","COS","COT","COUNT","COUNT_IF","COUNT_STAR","COVAR_POP","COVAR_SAMP","CREATE_SORT_KEY","CURRENT_CATALOG","CURRENT_DATABASE","CURRENT_DATE","CURRENT_LOCALTIME","CURRENT_LOCALTIMESTAMP","CURRENT_QUERY","CURRENT_ROLE","CURRENT_SCHEMA","CURRENT_SCHEMAS","CURRENT_SETTING","CURRENT_USER","CURRVAL","DAMERAU_LEVENSHTEIN","DATABASE_LIST","DATABASE_SIZE","DATEDIFF","DATEPART","DATESUB","DATETRUNC","DATE_ADD","DATE_DIFF","DATE_PART","DATE_SUB","DATE_TRUNC","DAY","DAYNAME","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","DECADE","DECODE","DEGREES","DISABLE_CHECKPOINT_ON_SHUTDOWN","DISABLE_OBJECT_CACHE","DISABLE_OPTIMIZER","DISABLE_PRINT_PROGRESS_BAR","DISABLE_PROFILE","DISABLE_PROFILING","DISABLE_PROGRESS_BAR","DISABLE_VERIFICATION","DISABLE_VERIFY_EXTERNAL","DISABLE_VERIFY_FETCH_ROW","DISABLE_VERIFY_PARALLELISM","DISABLE_VERIFY_SERIALIZER","DIVIDE","DUCKDB_COLUMNS","DUCKDB_CONSTRAINTS","DUCKDB_DATABASES","DUCKDB_DEPENDENCIES","DUCKDB_EXTENSIONS","DUCKDB_FUNCTIONS","DUCKDB_INDEXES","DUCKDB_KEYWORDS","DUCKDB_MEMORY","DUCKDB_OPTIMIZERS","DUCKDB_SCHEMAS","DUCKDB_SECRETS","DUCKDB_SEQUENCES","DUCKDB_SETTINGS","DUCKDB_TABLES","DUCKDB_TEMPORARY_FILES","DUCKDB_TYPES","DUCKDB_VIEWS","EDIT","EDITDIST3","ELEMENT_AT","ENABLE_CHECKPOINT_ON_SHUTDOWN","ENABLE_OBJECT_CACHE","ENABLE_OPTIMIZER","ENABLE_PRINT_PROGRESS_BAR","ENABLE_PROFILE","ENABLE_PROFILING","ENABLE_PROGRESS_BAR","ENABLE_VERIFICATION","ENCODE","ENDS_WITH","ENTROPY","ENUM_CODE","ENUM_FIRST","ENUM_LAST","ENUM_RANGE","ENUM_RANGE_BOUNDARY","EPOCH","EPOCH_MS","EPOCH_NS","EPOCH_US","ERA","ERROR","EVEN","EXP","FACTORIAL","FAVG","FDIV","FILTER","FINALIZE","FIRST","FLATTEN","FLOOR","FMOD","FORCE_CHECKPOINT","FORMAT","FORMATREADABLEDECIMALSIZE","FORMATREADABLESIZE","FORMAT_BYTES","FORMAT_PG_TYPE","FORMAT_TYPE","FROM_BASE64","FROM_BINARY","FROM_HEX","FROM_JSON","FROM_JSON_STRICT","FSUM","FUNCTIONS","GAMMA","GCD","GENERATE_SERIES","GENERATE_SUBSCRIPTS","GEN_RANDOM_UUID","GEOMEAN","GEOMETRIC_MEAN","GETENV","GET_BIT","GET_BLOCK_SIZE","GET_CURRENT_TIME","GET_CURRENT_TIMESTAMP","GLOB","GRADE_UP","GREATEST","GREATEST_COMMON_DIVISOR","GROUP_CONCAT","HAMMING","HASH","HAS_ANY_COLUMN_PRIVILEGE","HAS_COLUMN_PRIVILEGE","HAS_DATABASE_PRIVILEGE","HAS_FOREIGN_DATA_WRAPPER_PRIVILEGE","HAS_FUNCTION_PRIVILEGE","HAS_LANGUAGE_PRIVILEGE","HAS_SCHEMA_PRIVILEGE","HAS_SEQUENCE_PRIVILEGE","HAS_SERVER_PRIVILEGE","HAS_TABLESPACE_PRIVILEGE","HAS_TABLE_PRIVILEGE","HEX","HISTOGRAM","HOUR","ICU_CALENDAR_NAMES","ICU_SORT_KEY","ILIKE_ESCAPE","IMPORT_DATABASE","INDEX_SCAN","INET_CLIENT_ADDR","INET_CLIENT_PORT","INET_SERVER_ADDR","INET_SERVER_PORT","INSTR","IN_SEARCH_PATH","ISFINITE","ISINF","ISNAN","ISODOW","ISOYEAR","JACCARD","JARO_SIMILARITY","JARO_WINKLER_SIMILARITY","JSON_ARRAY","JSON_ARRAY_LENGTH","JSON_CONTAINS","JSON_DESERIALIZE_SQL","JSON_EXECUTE_SERIALIZED_SQL","JSON_EXTRACT","JSON_EXTRACT_PATH","JSON_EXTRACT_PATH_TEXT","JSON_EXTRACT_STRING","JSON_GROUP_ARRAY","JSON_GROUP_OBJECT","JSON_GROUP_STRUCTURE","JSON_KEYS","JSON_MERGE_PATCH","JSON_OBJECT","JSON_QUOTE","JSON_SERIALIZE_PLAN","JSON_SERIALIZE_SQL","JSON_STRUCTURE","JSON_TRANSFORM","JSON_TRANSFORM_STRICT","JSON_TYPE","JSON_VALID","JULIAN","KAHAN_SUM","KURTOSIS","KURTOSIS_POP","LAST","LAST_DAY","LCASE","LCM","LEAST","LEAST_COMMON_MULTIPLE","LEFT","LEFT_GRAPHEME","LEN","LENGTH","LENGTH_GRAPHEME","LEVENSHTEIN","LGAMMA","LIKE_ESCAPE","LIST","LISTAGG","LIST_AGGR","LIST_AGGREGATE","LIST_ANY_VALUE","LIST_APPEND","LIST_APPLY","LIST_APPROX_COUNT_DISTINCT","LIST_AVG","LIST_BIT_AND","LIST_BIT_OR","LIST_BIT_XOR","LIST_BOOL_AND","LIST_BOOL_OR","LIST_CAT","LIST_CONCAT","LIST_CONTAINS","LIST_COSINE_SIMILARITY","LIST_COUNT","LIST_DISTANCE","LIST_DISTINCT","LIST_DOT_PRODUCT","LIST_ELEMENT","LIST_ENTROPY","LIST_EXTRACT","LIST_FILTER","LIST_FIRST","LIST_GRADE_UP","LIST_HAS","LIST_HAS_ALL","LIST_HAS_ANY","LIST_HISTOGRAM","LIST_INDEXOF","LIST_INNER_PRODUCT","LIST_INTERSECT","LIST_KURTOSIS","LIST_KURTOSIS_POP","LIST_LAST","LIST_MAD","LIST_MAX","LIST_MEDIAN","LIST_MIN","LIST_MODE","LIST_PACK","LIST_POSITION","LIST_PREPEND","LIST_PRODUCT","LIST_REDUCE","LIST_RESIZE","LIST_REVERSE","LIST_REVERSE_SORT","LIST_SELECT","LIST_SEM","LIST_SKEWNESS","LIST_SLICE","LIST_SORT","LIST_STDDEV_POP","LIST_STDDEV_SAMP","LIST_STRING_AGG","LIST_SUM","LIST_TRANSFORM","LIST_UNIQUE","LIST_VALUE","LIST_VAR_POP","LIST_VAR_SAMP","LIST_WHERE","LIST_ZIP","LN","LOG","LOG10","LOG2","LOWER","LPAD","LSMODE","LTRIM","MAD","MAKE_DATE","MAKE_TIME","MAKE_TIMESTAMP","MAKE_TIMESTAMPTZ","MAP","MAP_CONCAT","MAP_ENTRIES","MAP_EXTRACT","MAP_FROM_ENTRIES","MAP_KEYS","MAP_VALUES","MAX","MAX_BY","MD5","MD5_NUMBER","MD5_NUMBER_LOWER","MD5_NUMBER_UPPER","MEAN","MEDIAN","METADATA_INFO","MICROSECOND","MILLENNIUM","MILLISECOND","MIN","MINUTE","MIN_BY","MISMATCHES","MOD","MODE","MONTH","MONTHNAME","MULTIPLY","NEXTAFTER","NEXTVAL","NFC_NORMALIZE","NOT_ILIKE_ESCAPE","NOT_LIKE_ESCAPE","NOW","NULLIF","OBJ_DESCRIPTION","OCTET_LENGTH","ORD","PARQUET_FILE_METADATA","PARQUET_KV_METADATA","PARQUET_METADATA","PARQUET_SCAN","PARQUET_SCHEMA","PARSE_DIRNAME","PARSE_DIRPATH","PARSE_FILENAME","PARSE_PATH","PG_COLLATION_IS_VISIBLE","PG_CONF_LOAD_TIME","PG_CONVERSION_IS_VISIBLE","PG_FUNCTION_IS_VISIBLE","PG_GET_CONSTRAINTDEF","PG_GET_EXPR","PG_GET_VIEWDEF","PG_HAS_ROLE","PG_IS_OTHER_TEMP_SCHEMA","PG_MY_TEMP_SCHEMA","PG_OPCLASS_IS_VISIBLE","PG_OPERATOR_IS_VISIBLE","PG_OPFAMILY_IS_VISIBLE","PG_POSTMASTER_START_TIME","PG_SIZE_PRETTY","PG_TABLE_IS_VISIBLE","PG_TIMEZONE_NAMES","PG_TS_CONFIG_IS_VISIBLE","PG_TS_DICT_IS_VISIBLE","PG_TS_PARSER_IS_VISIBLE","PG_TS_TEMPLATE_IS_VISIBLE","PG_TYPEOF","PG_TYPE_IS_VISIBLE","PI","PLATFORM","POSITION","POW","POWER","PRAGMA_COLLATIONS","PRAGMA_DATABASE_SIZE","PRAGMA_METADATA_INFO","PRAGMA_PLATFORM","PRAGMA_SHOW","PRAGMA_STORAGE_INFO","PRAGMA_TABLE_INFO","PRAGMA_USER_AGENT","PRAGMA_VERSION","PREFIX","PRINTF","PRODUCT","QUANTILE","QUANTILE_CONT","QUANTILE_DISC","QUARTER","RADIANS","RANDOM","RANGE","READFILE","READ_BLOB","READ_CSV","READ_CSV_AUTO","READ_JSON","READ_JSON_AUTO","READ_JSON_OBJECTS","READ_JSON_OBJECTS_AUTO","READ_NDJSON","READ_NDJSON_AUTO","READ_NDJSON_OBJECTS","READ_PARQUET","READ_TEXT","REDUCE","REGEXP_ESCAPE","REGEXP_EXTRACT","REGEXP_EXTRACT_ALL","REGEXP_FULL_MATCH","REGEXP_MATCHES","REGEXP_REPLACE","REGEXP_SPLIT_TO_ARRAY","REGEXP_SPLIT_TO_TABLE","REGR_AVGX","REGR_AVGY","REGR_COUNT","REGR_INTERCEPT","REGR_R2","REGR_SLOPE","REGR_SXX","REGR_SXY","REGR_SYY","REPEAT","REPEAT_ROW","REPLACE","RESERVOIR_QUANTILE","REVERSE","RIGHT","RIGHT_GRAPHEME","ROUND","ROUNDBANKERS","ROUND_EVEN","ROW","ROW_TO_JSON","RPAD","RTRIM","SECOND","SEM","SEQ_SCAN","SESSION_USER","SETSEED","SET_BIT","SHA256","SHA3","SHELL_ADD_SCHEMA","SHELL_ESCAPE_CRNL","SHELL_IDQUOTE","SHELL_MODULE_SCHEMA","SHELL_PUTSNL","SHOBJ_DESCRIPTION","SHOW","SHOW_DATABASES","SHOW_TABLES","SHOW_TABLES_EXPANDED","SIGN","SIGNBIT","SIN","SKEWNESS","SNIFF_CSV","SPLIT","SPLIT_PART","SQL_AUTO_COMPLETE","SQRT","STARTS_WITH","STATS","STDDEV","STDDEV_POP","STDDEV_SAMP","STORAGE_INFO","STRFTIME","STRING_AGG","STRING_SPLIT","STRING_SPLIT_REGEX","STRING_TO_ARRAY","STRIP_ACCENTS","STRLEN","STRPOS","STRPTIME","STRUCT_EXTRACT","STRUCT_INSERT","STRUCT_PACK","STR_SPLIT","STR_SPLIT_REGEX","SUBSTR","SUBSTRING","SUBSTRING_GRAPHEME","SUBTRACT","SUFFIX","SUM","SUMKAHAN","SUMMARY","SUM_NO_OVERFLOW","TABLE_INFO","TAN","TEST_ALL_TYPES","TEST_VECTOR_TYPES","TIMEZONE","TIMEZONE_HOUR","TIMEZONE_MINUTE","TIME_BUCKET","TODAY","TO_BASE","TO_BASE64","TO_BINARY","TO_CENTURIES","TO_DAYS","TO_DECADES","TO_HEX","TO_HOURS","TO_JSON","TO_MICROSECONDS","TO_MILLENNIA","TO_MILLISECONDS","TO_MINUTES","TO_MONTHS","TO_SECONDS","TO_TIMESTAMP","TO_WEEKS","TO_YEARS","TRANSACTION_TIMESTAMP","TRANSLATE","TRIM","TRUNC","TRY_STRPTIME","TXID_CURRENT","TYPEOF","UCASE","UNBIN","UNHEX","UNICODE","UNION_EXTRACT","UNION_TAG","UNION_VALUE","UNNEST","UNPIVOT_LIST","UPPER","USER","USER_AGENT","UUID","VARIANCE","VAR_POP","VAR_SAMP","VECTOR_TYPE","VERIFY_EXTERNAL","VERIFY_FETCH_ROW","VERIFY_PARALLELISM","VERIFY_SERIALIZER","VERSION","WEEK","WEEKDAY","WEEKOFYEAR","WHICH_SECRET","WRITEFILE","XOR","YEAR","YEARWEEK","CAST","COALESCE","RANK","ROW_NUMBER"],Ko=["ALL","ANALYSE","ANALYZE","AND","ANY","AS","ASC","ATTACH","ASYMMETRIC","BOTH","CASE","CAST","CHECK","COLLATE","COLUMN","CONSTRAINT","CREATE","DEFAULT","DEFERRABLE","DESC","DESCRIBE","DETACH","DISTINCT","DO","ELSE","END","EXCEPT","FALSE","FETCH","FOR","FOREIGN","FROM","GRANT","GROUP","HAVING","IN","INITIALLY","INTERSECT","INTO","IS","LATERAL","LEADING","LIMIT","NOT","NULL","OFFSET","ON","ONLY","OR","ORDER","PIVOT","PIVOT_LONGER","PIVOT_WIDER","PLACING","PRIMARY","REFERENCES","RETURNING","SELECT","SHOW","SOME","SUMMARIZE","SYMMETRIC","TABLE","THEN","TO","TRAILING","TRUE","UNION","UNIQUE","UNPIVOT","USING","VARIADIC","WHEN","WHERE","WINDOW","WITH"],jo=["ARRAY","BIGINT","BINARY","BIT","BITSTRING","BLOB","BOOL","BOOLEAN","BPCHAR","BYTEA","CHAR","DATE","DATETIME","DEC","DECIMAL","DOUBLE","ENUM","FLOAT","FLOAT4","FLOAT8","GUID","HUGEINT","INET","INT","INT1","INT128","INT16","INT2","INT32","INT4","INT64","INT8","INTEGER","INTEGRAL","INTERVAL","JSON","LIST","LOGICAL","LONG","MAP","NUMERIC","NVARCHAR","OID","REAL","ROW","SHORT","SIGNED","SMALLINT","STRING","STRUCT","TEXT","TIME","TIMESTAMP_MS","TIMESTAMP_NS","TIMESTAMP_S","TIMESTAMP_US","TIMESTAMP","TIMESTAMPTZ","TIMETZ","TINYINT","UBIGINT","UHUGEINT","UINT128","UINT16","UINT32","UINT64","UINT8","UINTEGER","UNION","USMALLINT","UTINYINT","UUID","VARBINARY","VARCHAR"],ko=N(["SELECT [ALL | DISTINCT]"]),$o=N(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY [ALL]","HAVING","WINDOW","PARTITION BY","ORDER BY [ALL]","LIMIT","OFFSET","USING SAMPLE","QUALIFY","INSERT [OR REPLACE] INTO","VALUES","DEFAULT VALUES","SET","RETURNING"]),st=N(["CREATE [OR REPLACE] [TEMPORARY | TEMP] TABLE [IF NOT EXISTS]"]),tE=N(["UPDATE","ON CONFLICT","DELETE FROM","DROP TABLE [IF EXISTS]","TRUNCATE","ALTER TABLE","ADD [COLUMN] [IF NOT EXISTS]","ADD PRIMARY KEY","DROP [COLUMN] [IF EXISTS]","ALTER [COLUMN]","RENAME [COLUMN]","RENAME TO","SET [DATA] TYPE","{SET | DROP} DEFAULT","{SET | DROP} NOT NULL","CREATE [OR REPLACE] [TEMPORARY | TEMP] {MACRO | FUNCTION}","DROP MACRO [TABLE] [IF EXISTS]","DROP FUNCTION [IF EXISTS]","CREATE [UNIQUE] INDEX [IF NOT EXISTS]","DROP INDEX [IF EXISTS]","CREATE [OR REPLACE] SCHEMA [IF NOT EXISTS]","DROP SCHEMA [IF EXISTS]","CREATE [OR REPLACE] [PERSISTENT | TEMPORARY] SECRET [IF NOT EXISTS]","DROP [PERSISTENT | TEMPORARY] SECRET [IF EXISTS]","CREATE [OR REPLACE] [TEMPORARY | TEMP] SEQUENCE","DROP SEQUENCE [IF EXISTS]","CREATE [OR REPLACE] [TEMPORARY | TEMP] VIEW [IF NOT EXISTS]","DROP VIEW [IF EXISTS]","ALTER VIEW","CREATE TYPE","DROP TYPE [IF EXISTS]","ANALYZE","ATTACH [DATABASE] [IF NOT EXISTS]","DETACH [DATABASE] [IF EXISTS]","CALL","[FORCE] CHECKPOINT","COMMENT ON [TABLE | COLUMN | VIEW | INDEX | SEQUENCE | TYPE | MACRO | MACRO TABLE]","COPY [FROM DATABASE]","DESCRIBE","EXPORT DATABASE","IMPORT DATABASE","INSTALL","LOAD","PIVOT","PIVOT_WIDER","UNPIVOT","EXPLAIN [ANALYZE]","SET {LOCAL | SESSION | GLOBAL}","RESET [LOCAL | SESSION | GLOBAL]","{SET | RESET} VARIABLE","SUMMARIZE","BEGIN TRANSACTION","ROLLBACK","COMMIT","ABORT","USE","VACUUM [ANALYZE]","PREPARE","EXECUTE","DEALLOCATE [PREPARE]"]),Jo=N(["UNION [ALL | BY NAME]","EXCEPT [ALL]","INTERSECT [ALL]"]),Qo=N(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","{NATURAL | ASOF} [INNER] JOIN","{NATURAL | ASOF} {LEFT | RIGHT | FULL} [OUTER] JOIN","POSITIONAL JOIN","ANTI JOIN","SEMI JOIN"]),Zo=N(["{ROWS | RANGE | GROUPS} BETWEEN","SIMILAR TO","IS [NOT] DISTINCT FROM"]),qo=N(["TIMESTAMP WITH TIME ZONE"]),zo={name:"duckdb",tokenizerOptions:{reservedSelect:ko,reservedClauses:[...$o,...st,...tE],reservedSetOperations:Jo,reservedJoins:Qo,reservedKeywordPhrases:Zo,reservedDataTypePhrases:qo,supportsXor:!0,reservedKeywords:Ko,reservedDataTypes:jo,reservedFunctionNames:wo,nestedBlockComments:!0,extraParens:["[]","{}"],underscoresInNumbers:!0,stringTypes:["$$","''-qq",{quote:"''-qq-bs",prefixes:["E"],requirePrefix:!0},{quote:"''-raw",prefixes:["B","X"],requirePrefix:!0}],identTypes:['""-qq'],identChars:{rest:"$"},paramTypes:{positional:!0,numbered:["$"],quoted:["$"]},operators:["//","%","**","^","!","&","|","~","<<",">>","::","==","->","->>",":",":=","=>","~~","!~~","~~*","!~~*","~~~","~","!~","~*","!~*","^@","||",">>=","<<="]},formatOptions:{alwaysDenseOperators:["::"],onelineClauses:[...st,...tE],tabularOnelineClauses:tE}},eR=["ABS","ACOS","ASIN","ATAN","BIN","BROUND","CBRT","CEIL","CEILING","CONV","COS","DEGREES","EXP","FACTORIAL","FLOOR","GREATEST","HEX","LEAST","LN","LOG","LOG10","LOG2","NEGATIVE","PI","PMOD","POSITIVE","POW","POWER","RADIANS","RAND","ROUND","SHIFTLEFT","SHIFTRIGHT","SHIFTRIGHTUNSIGNED","SIGN","SIN","SQRT","TAN","UNHEX","WIDTH_BUCKET","ARRAY_CONTAINS","MAP_KEYS","MAP_VALUES","SIZE","SORT_ARRAY","BINARY","CAST","ADD_MONTHS","DATE","DATE_ADD","DATE_FORMAT","DATE_SUB","DATEDIFF","DAY","DAYNAME","DAYOFMONTH","DAYOFYEAR","EXTRACT","FROM_UNIXTIME","FROM_UTC_TIMESTAMP","HOUR","LAST_DAY","MINUTE","MONTH","MONTHS_BETWEEN","NEXT_DAY","QUARTER","SECOND","TIMESTAMP","TO_DATE","TO_UTC_TIMESTAMP","TRUNC","UNIX_TIMESTAMP","WEEKOFYEAR","YEAR","ASSERT_TRUE","COALESCE","IF","ISNOTNULL","ISNULL","NULLIF","NVL","ASCII","BASE64","CHARACTER_LENGTH","CHR","CONCAT","CONCAT_WS","CONTEXT_NGRAMS","DECODE","ELT","ENCODE","FIELD","FIND_IN_SET","FORMAT_NUMBER","GET_JSON_OBJECT","IN_FILE","INITCAP","INSTR","LCASE","LENGTH","LEVENSHTEIN","LOCATE","LOWER","LPAD","LTRIM","NGRAMS","OCTET_LENGTH","PARSE_URL","PRINTF","QUOTE","REGEXP_EXTRACT","REGEXP_REPLACE","REPEAT","REVERSE","RPAD","RTRIM","SENTENCES","SOUNDEX","SPACE","SPLIT","STR_TO_MAP","SUBSTR","SUBSTRING","TRANSLATE","TRIM","UCASE","UNBASE64","UPPER","MASK","MASK_FIRST_N","MASK_HASH","MASK_LAST_N","MASK_SHOW_FIRST_N","MASK_SHOW_LAST_N","AES_DECRYPT","AES_ENCRYPT","CRC32","CURRENT_DATABASE","CURRENT_USER","HASH","JAVA_METHOD","LOGGED_IN_USER","MD5","REFLECT","SHA","SHA1","SHA2","SURROGATE_KEY","VERSION","AVG","COLLECT_LIST","COLLECT_SET","CORR","COUNT","COVAR_POP","COVAR_SAMP","HISTOGRAM_NUMERIC","MAX","MIN","NTILE","PERCENTILE","PERCENTILE_APPROX","REGR_AVGX","REGR_AVGY","REGR_COUNT","REGR_INTERCEPT","REGR_R2","REGR_SLOPE","REGR_SXX","REGR_SXY","REGR_SYY","STDDEV_POP","STDDEV_SAMP","SUM","VAR_POP","VAR_SAMP","VARIANCE","EXPLODE","INLINE","JSON_TUPLE","PARSE_URL_TUPLE","POSEXPLODE","STACK","LEAD","LAG","FIRST_VALUE","LAST_VALUE","RANK","ROW_NUMBER","DENSE_RANK","CUME_DIST","PERCENT_RANK","NTILE"],ER=["ADD","ADMIN","AFTER","ANALYZE","ARCHIVE","ASC","BEFORE","BUCKET","BUCKETS","CASCADE","CHANGE","CLUSTER","CLUSTERED","CLUSTERSTATUS","COLLECTION","COLUMNS","COMMENT","COMPACT","COMPACTIONS","COMPUTE","CONCATENATE","CONTINUE","DATA","DATABASES","DATETIME","DAY","DBPROPERTIES","DEFERRED","DEFINED","DELIMITED","DEPENDENCY","DESC","DIRECTORIES","DIRECTORY","DISABLE","DISTRIBUTE","ELEM_TYPE","ENABLE","ESCAPED","EXCLUSIVE","EXPLAIN","EXPORT","FIELDS","FILE","FILEFORMAT","FIRST","FORMAT","FORMATTED","FUNCTIONS","HOLD_DDLTIME","HOUR","IDXPROPERTIES","IGNORE","INDEX","INDEXES","INPATH","INPUTDRIVER","INPUTFORMAT","ITEMS","JAR","KEYS","KEY_TYPE","LIMIT","LINES","LOAD","LOCATION","LOCK","LOCKS","LOGICAL","LONG","MAPJOIN","MATERIALIZED","METADATA","MINUS","MINUTE","MONTH","MSCK","NOSCAN","NO_DROP","OFFLINE","OPTION","OUTPUTDRIVER","OUTPUTFORMAT","OVERWRITE","OWNER","PARTITIONED","PARTITIONS","PLUS","PRETTY","PRINCIPALS","PROTECTION","PURGE","READ","READONLY","REBUILD","RECORDREADER","RECORDWRITER","RELOAD","RENAME","REPAIR","REPLACE","REPLICATION","RESTRICT","REWRITE","ROLE","ROLES","SCHEMA","SCHEMAS","SECOND","SEMI","SERDE","SERDEPROPERTIES","SERVER","SETS","SHARED","SHOW","SHOW_DATABASE","SKEWED","SORT","SORTED","SSL","STATISTICS","STORED","STREAMTABLE","STRING","TABLES","TBLPROPERTIES","TEMPORARY","TERMINATED","TINYINT","TOUCH","TRANSACTIONS","UNARCHIVE","UNDO","UNIONTYPE","UNLOCK","UNSET","UNSIGNED","URI","USE","UTC","UTCTIMESTAMP","VALUE_TYPE","VIEW","WHILE","YEAR","AUTOCOMMIT","ISOLATION","LEVEL","OFFSET","SNAPSHOT","TRANSACTION","WORK","WRITE","ABORT","KEY","LAST","NORELY","NOVALIDATE","NULLS","RELY","VALIDATE","DETAIL","DOW","EXPRESSION","OPERATOR","QUARTER","SUMMARY","VECTORIZATION","WEEK","YEARS","MONTHS","WEEKS","DAYS","HOURS","MINUTES","SECONDS","TIMESTAMPTZ","ZONE","ALL","ALTER","AND","AS","AUTHORIZATION","BETWEEN","BOTH","BY","CASE","CAST","COLUMN","CONF","CREATE","CROSS","CUBE","CURRENT","CURRENT_DATE","CURRENT_TIMESTAMP","CURSOR","DATABASE","DELETE","DESCRIBE","DISTINCT","DROP","ELSE","END","EXCHANGE","EXISTS","EXTENDED","EXTERNAL","FALSE","FETCH","FOLLOWING","FOR","FROM","FULL","FUNCTION","GRANT","GROUP","GROUPING","HAVING","IF","IMPORT","IN","INNER","INSERT","INTERSECT","INTO","IS","JOIN","LATERAL","LEFT","LESS","LIKE","LOCAL","MACRO","MORE","NONE","NOT","NULL","OF","ON","OR","ORDER","OUT","OUTER","OVER","PARTIALSCAN","PARTITION","PERCENT","PRECEDING","PRESERVE","PROCEDURE","RANGE","READS","REDUCE","REVOKE","RIGHT","ROLLUP","ROW","ROWS","SELECT","SET","TABLE","TABLESAMPLE","THEN","TO","TRANSFORM","TRIGGER","TRUE","TRUNCATE","UNBOUNDED","UNION","UNIQUEJOIN","UPDATE","USER","USING","UTC_TMESTAMP","VALUES","WHEN","WHERE","WINDOW","WITH","COMMIT","ONLY","REGEXP","RLIKE","ROLLBACK","START","CACHE","CONSTRAINT","FOREIGN","PRIMARY","REFERENCES","DAYOFWEEK","EXTRACT","FLOOR","VIEWS","TIME","SYNC","TEXTFILE","SEQUENCEFILE","ORC","CSV","TSV","PARQUET","AVRO","RCFILE","JSONFILE","INPUTFORMAT","OUTPUTFORMAT"],tR=["ARRAY","BIGINT","BINARY","BOOLEAN","CHAR","DATE","DECIMAL","DOUBLE","FLOAT","INT","INTEGER","INTERVAL","MAP","NUMERIC","PRECISION","SMALLINT","STRUCT","TIMESTAMP","VARCHAR"],TR=N(["SELECT [ALL | DISTINCT]"]),rR=N(["WITH","FROM","WHERE","GROUP BY","HAVING","WINDOW","PARTITION BY","ORDER BY","SORT BY","CLUSTER BY","DISTRIBUTE BY","LIMIT","INSERT INTO [TABLE]","VALUES","SET","MERGE INTO","WHEN [NOT] MATCHED [THEN]","UPDATE SET","INSERT [VALUES]","INSERT OVERWRITE [LOCAL] DIRECTORY","LOAD DATA [LOCAL] INPATH","[OVERWRITE] INTO TABLE"]),ot=N(["CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS]"]),TE=N(["CREATE [MATERIALIZED] VIEW [IF NOT EXISTS]","UPDATE","DELETE FROM","DROP TABLE [IF EXISTS]","ALTER TABLE","RENAME TO","TRUNCATE [TABLE]","ALTER","CREATE","USE","DESCRIBE","DROP","FETCH","SHOW","STORED AS","STORED BY","ROW FORMAT"]),nR=N(["UNION [ALL | DISTINCT]"]),sR=N(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","LEFT SEMI JOIN"]),oR=N(["{ROWS | RANGE} BETWEEN"]),RR=N([]),iR={name:"hive",tokenizerOptions:{reservedSelect:TR,reservedClauses:[...rR,...ot,...TE],reservedSetOperations:nR,reservedJoins:sR,reservedKeywordPhrases:oR,reservedDataTypePhrases:RR,reservedKeywords:ER,reservedDataTypes:tR,reservedFunctionNames:eR,extraParens:["[]"],stringTypes:['""-bs',"''-bs"],identTypes:["``"],variableTypes:[{quote:"{}",prefixes:["$"],requirePrefix:!0}],operators:["%","~","^","|","&","<=>","==","!","||"]},formatOptions:{onelineClauses:[...ot,...TE],tabularOnelineClauses:TE}};function we(E){return E.map((e,t)=>{const n=E[t+1]||se;if(oe.SET(e)&&n.text==="(")return Object.assign(Object.assign({},e),{type:C.RESERVED_FUNCTION_NAME});const r=E[t-1]||se;return oe.VALUES(e)&&r.text==="="?Object.assign(Object.assign({},e),{type:C.RESERVED_FUNCTION_NAME}):e})}const AR=["ACCESSIBLE","ADD","ALL","ALTER","ANALYZE","AND","AS","ASC","ASENSITIVE","BEFORE","BETWEEN","BOTH","BY","CALL","CASCADE","CASE","CHANGE","CHECK","COLLATE","COLUMN","CONDITION","CONSTRAINT","CONTINUE","CONVERT","CREATE","CROSS","CURRENT_DATE","CURRENT_ROLE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURSOR","DATABASE","DATABASES","DAY_HOUR","DAY_MICROSECOND","DAY_MINUTE","DAY_SECOND","DECLARE","DEFAULT","DELAYED","DELETE","DELETE_DOMAIN_ID","DESC","DESCRIBE","DETERMINISTIC","DISTINCT","DISTINCTROW","DIV","DO_DOMAIN_IDS","DROP","DUAL","EACH","ELSE","ELSEIF","ENCLOSED","ESCAPED","EXCEPT","EXISTS","EXIT","EXPLAIN","FALSE","FETCH","FOR","FORCE","FOREIGN","FROM","FULLTEXT","GENERAL","GRANT","GROUP","HAVING","HIGH_PRIORITY","HOUR_MICROSECOND","HOUR_MINUTE","HOUR_SECOND","IF","IGNORE","IGNORE_DOMAIN_IDS","IGNORE_SERVER_IDS","IN","INDEX","INFILE","INNER","INOUT","INSENSITIVE","INSERT","INTERSECT","INTERVAL","INTO","IS","ITERATE","JOIN","KEY","KEYS","KILL","LEADING","LEAVE","LEFT","LIKE","LIMIT","LINEAR","LINES","LOAD","LOCALTIME","LOCALTIMESTAMP","LOCK","LOOP","LOW_PRIORITY","MASTER_HEARTBEAT_PERIOD","MASTER_SSL_VERIFY_SERVER_CERT","MATCH","MAXVALUE","MINUTE_MICROSECOND","MINUTE_SECOND","MOD","MODIFIES","NATURAL","NOT","NO_WRITE_TO_BINLOG","NULL","OFFSET","ON","OPTIMIZE","OPTION","OPTIONALLY","OR","ORDER","OUT","OUTER","OUTFILE","OVER","PAGE_CHECKSUM","PARSE_VCOL_EXPR","PARTITION","POSITION","PRIMARY","PROCEDURE","PURGE","RANGE","READ","READS","READ_WRITE","RECURSIVE","REF_SYSTEM_ID","REFERENCES","REGEXP","RELEASE","RENAME","REPEAT","REPLACE","REQUIRE","RESIGNAL","RESTRICT","RETURN","RETURNING","REVOKE","RIGHT","RLIKE","ROW_NUMBER","ROWS","SCHEMA","SCHEMAS","SECOND_MICROSECOND","SELECT","SENSITIVE","SEPARATOR","SET","SHOW","SIGNAL","SLOW","SPATIAL","SPECIFIC","SQL","SQLEXCEPTION","SQLSTATE","SQLWARNING","SQL_BIG_RESULT","SQL_CALC_FOUND_ROWS","SQL_SMALL_RESULT","SSL","STARTING","STATS_AUTO_RECALC","STATS_PERSISTENT","STATS_SAMPLE_PAGES","STRAIGHT_JOIN","TABLE","TERMINATED","THEN","TO","TRAILING","TRIGGER","TRUE","UNDO","UNION","UNIQUE","UNLOCK","UNSIGNED","UPDATE","USAGE","USE","USING","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","VALUES","WHEN","WHERE","WHILE","WINDOW","WITH","WRITE","XOR","YEAR_MONTH","ZEROFILL"],aR=["BIGINT","BINARY","BIT","BLOB","CHAR BYTE","CHAR","CHARACTER","DATETIME","DEC","DECIMAL","DOUBLE PRECISION","DOUBLE","ENUM","FIXED","FLOAT","FLOAT4","FLOAT8","INT","INT1","INT2","INT3","INT4","INT8","INTEGER","LONG","LONGBLOB","LONGTEXT","MEDIUMBLOB","MEDIUMINT","MEDIUMTEXT","MIDDLEINT","NATIONAL CHAR","NATIONAL VARCHAR","NUMERIC","PRECISION","REAL","SMALLINT","TEXT","TIMESTAMP","TINYBLOB","TINYINT","TINYTEXT","VARBINARY","VARCHAR","VARCHARACTER","VARYING","YEAR"],SR=["ADDDATE","ADD_MONTHS","BIT_AND","BIT_OR","BIT_XOR","CAST","COUNT","CUME_DIST","CURDATE","CURTIME","DATE_ADD","DATE_SUB","DATE_FORMAT","DECODE","DENSE_RANK","EXTRACT","FIRST_VALUE","GROUP_CONCAT","JSON_ARRAYAGG","JSON_OBJECTAGG","LAG","LEAD","MAX","MEDIAN","MID","MIN","NOW","NTH_VALUE","NTILE","POSITION","PERCENT_RANK","PERCENTILE_CONT","PERCENTILE_DISC","RANK","ROW_NUMBER","SESSION_USER","STD","STDDEV","STDDEV_POP","STDDEV_SAMP","SUBDATE","SUBSTR","SUBSTRING","SUM","SYSTEM_USER","TRIM","TRIM_ORACLE","VARIANCE","VAR_POP","VAR_SAMP","ABS","ACOS","ADDTIME","AES_DECRYPT","AES_ENCRYPT","ASIN","ATAN","ATAN2","BENCHMARK","BIN","BINLOG_GTID_POS","BIT_COUNT","BIT_LENGTH","CEIL","CEILING","CHARACTER_LENGTH","CHAR_LENGTH","CHR","COERCIBILITY","COLUMN_CHECK","COLUMN_EXISTS","COLUMN_LIST","COLUMN_JSON","COMPRESS","CONCAT","CONCAT_OPERATOR_ORACLE","CONCAT_WS","CONNECTION_ID","CONV","CONVERT_TZ","COS","COT","CRC32","DATEDIFF","DAYNAME","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","DEGREES","DECODE_HISTOGRAM","DECODE_ORACLE","DES_DECRYPT","DES_ENCRYPT","ELT","ENCODE","ENCRYPT","EXP","EXPORT_SET","EXTRACTVALUE","FIELD","FIND_IN_SET","FLOOR","FORMAT","FOUND_ROWS","FROM_BASE64","FROM_DAYS","FROM_UNIXTIME","GET_LOCK","GREATEST","HEX","IFNULL","INSTR","ISNULL","IS_FREE_LOCK","IS_USED_LOCK","JSON_ARRAY","JSON_ARRAY_APPEND","JSON_ARRAY_INSERT","JSON_COMPACT","JSON_CONTAINS","JSON_CONTAINS_PATH","JSON_DEPTH","JSON_DETAILED","JSON_EXISTS","JSON_EXTRACT","JSON_INSERT","JSON_KEYS","JSON_LENGTH","JSON_LOOSE","JSON_MERGE","JSON_MERGE_PATCH","JSON_MERGE_PRESERVE","JSON_QUERY","JSON_QUOTE","JSON_OBJECT","JSON_REMOVE","JSON_REPLACE","JSON_SET","JSON_SEARCH","JSON_TYPE","JSON_UNQUOTE","JSON_VALID","JSON_VALUE","LAST_DAY","LAST_INSERT_ID","LCASE","LEAST","LENGTH","LENGTHB","LN","LOAD_FILE","LOCATE","LOG","LOG10","LOG2","LOWER","LPAD","LPAD_ORACLE","LTRIM","LTRIM_ORACLE","MAKEDATE","MAKETIME","MAKE_SET","MASTER_GTID_WAIT","MASTER_POS_WAIT","MD5","MONTHNAME","NAME_CONST","NVL","NVL2","OCT","OCTET_LENGTH","ORD","PERIOD_ADD","PERIOD_DIFF","PI","POW","POWER","QUOTE","REGEXP_INSTR","REGEXP_REPLACE","REGEXP_SUBSTR","RADIANS","RAND","RELEASE_ALL_LOCKS","RELEASE_LOCK","REPLACE_ORACLE","REVERSE","ROUND","RPAD","RPAD_ORACLE","RTRIM","RTRIM_ORACLE","SEC_TO_TIME","SHA","SHA1","SHA2","SIGN","SIN","SLEEP","SOUNDEX","SPACE","SQRT","STRCMP","STR_TO_DATE","SUBSTR_ORACLE","SUBSTRING_INDEX","SUBTIME","SYS_GUID","TAN","TIMEDIFF","TIME_FORMAT","TIME_TO_SEC","TO_BASE64","TO_CHAR","TO_DAYS","TO_SECONDS","UCASE","UNCOMPRESS","UNCOMPRESSED_LENGTH","UNHEX","UNIX_TIMESTAMP","UPDATEXML","UPPER","UUID","UUID_SHORT","VERSION","WEEKDAY","WEEKOFYEAR","WSREP_LAST_WRITTEN_GTID","WSREP_LAST_SEEN_GTID","WSREP_SYNC_WAIT_UPTO_GTID","YEARWEEK","COALESCE","NULLIF"],IR=N(["SELECT [ALL | DISTINCT | DISTINCTROW]"]),lR=N(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY","HAVING","PARTITION BY","ORDER BY","LIMIT","OFFSET","FETCH {FIRST | NEXT}","INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO]","REPLACE [LOW_PRIORITY | DELAYED] [INTO]","VALUES","ON DUPLICATE KEY UPDATE","SET","RETURNING"]),Rt=N(["CREATE [OR REPLACE] [TEMPORARY] TABLE [IF NOT EXISTS]"]),rE=N(["CREATE [OR REPLACE] [SQL SECURITY DEFINER | SQL SECURITY INVOKER] VIEW [IF NOT EXISTS]","UPDATE [LOW_PRIORITY] [IGNORE]","DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM","DROP [TEMPORARY] TABLE [IF EXISTS]","ALTER [ONLINE] [IGNORE] TABLE [IF EXISTS]","ADD [COLUMN] [IF NOT EXISTS]","{CHANGE | MODIFY} [COLUMN] [IF EXISTS]","DROP [COLUMN] [IF EXISTS]","RENAME [TO]","RENAME COLUMN","ALTER [COLUMN]","{SET | DROP} DEFAULT","SET {VISIBLE | INVISIBLE}","TRUNCATE [TABLE]","ALTER DATABASE","ALTER DATABASE COMMENT","ALTER EVENT","ALTER FUNCTION","ALTER PROCEDURE","ALTER SCHEMA","ALTER SCHEMA COMMENT","ALTER SEQUENCE","ALTER SERVER","ALTER USER","ALTER VIEW","ANALYZE","ANALYZE TABLE","BACKUP LOCK","BACKUP STAGE","BACKUP UNLOCK","BEGIN","BINLOG","CACHE INDEX","CALL","CHANGE MASTER TO","CHECK TABLE","CHECK VIEW","CHECKSUM TABLE","COMMIT","CREATE AGGREGATE FUNCTION","CREATE DATABASE","CREATE EVENT","CREATE FUNCTION","CREATE INDEX","CREATE PROCEDURE","CREATE ROLE","CREATE SEQUENCE","CREATE SERVER","CREATE SPATIAL INDEX","CREATE TRIGGER","CREATE UNIQUE INDEX","CREATE USER","DEALLOCATE PREPARE","DESCRIBE","DROP DATABASE","DROP EVENT","DROP FUNCTION","DROP INDEX","DROP PREPARE","DROP PROCEDURE","DROP ROLE","DROP SEQUENCE","DROP SERVER","DROP TRIGGER","DROP USER","DROP VIEW","EXECUTE","EXPLAIN","FLUSH","GET DIAGNOSTICS","GET DIAGNOSTICS CONDITION","GRANT","HANDLER","HELP","INSTALL PLUGIN","INSTALL SONAME","KILL","LOAD DATA INFILE","LOAD INDEX INTO CACHE","LOAD XML INFILE","LOCK TABLE","OPTIMIZE TABLE","PREPARE","PURGE BINARY LOGS","PURGE MASTER LOGS","RELEASE SAVEPOINT","RENAME TABLE","RENAME USER","REPAIR TABLE","REPAIR VIEW","RESET MASTER","RESET QUERY CACHE","RESET REPLICA","RESET SLAVE","RESIGNAL","REVOKE","ROLLBACK","SAVEPOINT","SET CHARACTER SET","SET DEFAULT ROLE","SET GLOBAL TRANSACTION","SET NAMES","SET PASSWORD","SET ROLE","SET STATEMENT","SET TRANSACTION","SHOW","SHOW ALL REPLICAS STATUS","SHOW ALL SLAVES STATUS","SHOW AUTHORS","SHOW BINARY LOGS","SHOW BINLOG EVENTS","SHOW BINLOG STATUS","SHOW CHARACTER SET","SHOW CLIENT_STATISTICS","SHOW COLLATION","SHOW COLUMNS","SHOW CONTRIBUTORS","SHOW CREATE DATABASE","SHOW CREATE EVENT","SHOW CREATE FUNCTION","SHOW CREATE PACKAGE","SHOW CREATE PACKAGE BODY","SHOW CREATE PROCEDURE","SHOW CREATE SEQUENCE","SHOW CREATE TABLE","SHOW CREATE TRIGGER","SHOW CREATE USER","SHOW CREATE VIEW","SHOW DATABASES","SHOW ENGINE","SHOW ENGINE INNODB STATUS","SHOW ENGINES","SHOW ERRORS","SHOW EVENTS","SHOW EXPLAIN","SHOW FUNCTION CODE","SHOW FUNCTION STATUS","SHOW GRANTS","SHOW INDEX","SHOW INDEXES","SHOW INDEX_STATISTICS","SHOW KEYS","SHOW LOCALES","SHOW MASTER LOGS","SHOW MASTER STATUS","SHOW OPEN TABLES","SHOW PACKAGE BODY CODE","SHOW PACKAGE BODY STATUS","SHOW PACKAGE STATUS","SHOW PLUGINS","SHOW PLUGINS SONAME","SHOW PRIVILEGES","SHOW PROCEDURE CODE","SHOW PROCEDURE STATUS","SHOW PROCESSLIST","SHOW PROFILE","SHOW PROFILES","SHOW QUERY_RESPONSE_TIME","SHOW RELAYLOG EVENTS","SHOW REPLICA","SHOW REPLICA HOSTS","SHOW REPLICA STATUS","SHOW SCHEMAS","SHOW SLAVE","SHOW SLAVE HOSTS","SHOW SLAVE STATUS","SHOW STATUS","SHOW STORAGE ENGINES","SHOW TABLE STATUS","SHOW TABLES","SHOW TRIGGERS","SHOW USER_STATISTICS","SHOW VARIABLES","SHOW WARNINGS","SHOW WSREP_MEMBERSHIP","SHOW WSREP_STATUS","SHUTDOWN","SIGNAL","START ALL REPLICAS","START ALL SLAVES","START REPLICA","START SLAVE","START TRANSACTION","STOP ALL REPLICAS","STOP ALL SLAVES","STOP REPLICA","STOP SLAVE","UNINSTALL PLUGIN","UNINSTALL SONAME","UNLOCK TABLE","USE","XA BEGIN","XA COMMIT","XA END","XA PREPARE","XA RECOVER","XA ROLLBACK","XA START"]),NR=N(["UNION [ALL | DISTINCT]","EXCEPT [ALL | DISTINCT]","INTERSECT [ALL | DISTINCT]","MINUS [ALL | DISTINCT]"]),cR=N(["JOIN","{LEFT | RIGHT} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL JOIN","NATURAL {LEFT | RIGHT} [OUTER] JOIN","STRAIGHT_JOIN"]),LR=N(["ON {UPDATE | DELETE} [SET NULL | SET DEFAULT]","CHARACTER SET","{ROWS | RANGE} BETWEEN","IDENTIFIED BY"]),CR=N([]),dR={name:"mariadb",tokenizerOptions:{reservedSelect:IR,reservedClauses:[...lR,...Rt,...rE],reservedSetOperations:NR,reservedJoins:cR,reservedKeywordPhrases:LR,reservedDataTypePhrases:CR,supportsXor:!0,reservedKeywords:AR,reservedDataTypes:aR,reservedFunctionNames:SR,stringTypes:['""-qq-bs',"''-qq-bs",{quote:"''-raw",prefixes:["B","X"],requirePrefix:!0}],identTypes:["``"],identChars:{first:"$",rest:"$",allowFirstCharNumber:!0},variableTypes:[{regex:"@@?[A-Za-z0-9_.$]+"},{quote:'""-qq-bs',prefixes:["@"],requirePrefix:!0},{quote:"''-qq-bs",prefixes:["@"],requirePrefix:!0},{quote:"``",prefixes:["@"],requirePrefix:!0}],paramTypes:{positional:!0},lineCommentTypes:["--","#"],operators:["%",":=","&","|","^","~","<<",">>","<=>","&&","||","!","*.*"],postProcess:we},formatOptions:{onelineClauses:[...Rt,...rE],tabularOnelineClauses:rE}},_R=["ACCESSIBLE","ADD","ALL","ALTER","ANALYZE","AND","AS","ASC","ASENSITIVE","BEFORE","BETWEEN","BOTH","BY","CALL","CASCADE","CASE","CHANGE","CHECK","COLLATE","COLUMN","CONDITION","CONSTRAINT","CONTINUE","CONVERT","CREATE","CROSS","CUBE","CUME_DIST","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURSOR","DATABASE","DATABASES","DAY_HOUR","DAY_MICROSECOND","DAY_MINUTE","DAY_SECOND","DECLARE","DEFAULT","DELAYED","DELETE","DENSE_RANK","DESC","DESCRIBE","DETERMINISTIC","DISTINCT","DISTINCTROW","DIV","DROP","DUAL","EACH","ELSE","ELSEIF","EMPTY","ENCLOSED","ESCAPED","EXCEPT","EXISTS","EXIT","EXPLAIN","FALSE","FETCH","FIRST_VALUE","FOR","FORCE","FOREIGN","FROM","FULLTEXT","FUNCTION","GENERATED","GET","GRANT","GROUP","GROUPING","GROUPS","HAVING","HIGH_PRIORITY","HOUR_MICROSECOND","HOUR_MINUTE","HOUR_SECOND","IF","IGNORE","IN","INDEX","INFILE","INNER","INOUT","INSENSITIVE","INSERT","IN","INTERSECT","INTERVAL","INTO","IO_AFTER_GTIDS","IO_BEFORE_GTIDS","IS","ITERATE","JOIN","JSON_TABLE","KEY","KEYS","KILL","LAG","LAST_VALUE","LATERAL","LEAD","LEADING","LEAVE","LEFT","LIKE","LIMIT","LINEAR","LINES","LOAD","LOCALTIME","LOCALTIMESTAMP","LOCK","LONG","LOOP","LOW_PRIORITY","MASTER_BIND","MASTER_SSL_VERIFY_SERVER_CERT","MATCH","MAXVALUE","MINUTE_MICROSECOND","MINUTE_SECOND","MOD","MODIFIES","NATURAL","NOT","NO_WRITE_TO_BINLOG","NTH_VALUE","NTILE","NULL","OF","ON","OPTIMIZE","OPTIMIZER_COSTS","OPTION","OPTIONALLY","OR","ORDER","OUT","OUTER","OUTFILE","OVER","PARTITION","PERCENT_RANK","PRIMARY","PROCEDURE","PURGE","RANGE","RANK","READ","READS","READ_WRITE","RECURSIVE","REFERENCES","REGEXP","RELEASE","RENAME","REPEAT","REPLACE","REQUIRE","RESIGNAL","RESTRICT","RETURN","REVOKE","RIGHT","RLIKE","ROW","ROWS","ROW_NUMBER","SCHEMA","SCHEMAS","SECOND_MICROSECOND","SELECT","SENSITIVE","SEPARATOR","SET","SHOW","SIGNAL","SPATIAL","SPECIFIC","SQL","SQLEXCEPTION","SQLSTATE","SQLWARNING","SQL_BIG_RESULT","SQL_CALC_FOUND_ROWS","SQL_SMALL_RESULT","SSL","STARTING","STORED","STRAIGHT_JOIN","SYSTEM","TABLE","TERMINATED","THEN","TO","TRAILING","TRIGGER","TRUE","UNDO","UNION","UNIQUE","UNLOCK","UNSIGNED","UPDATE","USAGE","USE","USING","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","VALUES","VIRTUAL","WHEN","WHERE","WHILE","WINDOW","WITH","WRITE","XOR","YEAR_MONTH","ZEROFILL"],DR=["BIGINT","BINARY","BIT","BLOB","BOOL","BOOLEAN","CHAR","CHARACTER","DATE","DATETIME","DEC","DECIMAL","DOUBLE PRECISION","DOUBLE","ENUM","FIXED","FLOAT","FLOAT4","FLOAT8","INT","INT1","INT2","INT3","INT4","INT8","INTEGER","LONGBLOB","LONGTEXT","MEDIUMBLOB","MEDIUMINT","MEDIUMTEXT","MIDDLEINT","NATIONAL CHAR","NATIONAL VARCHAR","NUMERIC","PRECISION","REAL","SMALLINT","TEXT","TIME","TIMESTAMP","TINYBLOB","TINYINT","TINYTEXT","VARBINARY","VARCHAR","VARCHARACTER","VARYING","YEAR"],uR=["ABS","ACOS","ADDDATE","ADDTIME","AES_DECRYPT","AES_ENCRYPT","ANY_VALUE","ASCII","ASIN","ATAN","ATAN2","AVG","BENCHMARK","BIN","BIN_TO_UUID","BINARY","BIT_AND","BIT_COUNT","BIT_LENGTH","BIT_OR","BIT_XOR","CAN_ACCESS_COLUMN","CAN_ACCESS_DATABASE","CAN_ACCESS_TABLE","CAN_ACCESS_USER","CAN_ACCESS_VIEW","CAST","CEIL","CEILING","CHAR","CHAR_LENGTH","CHARACTER_LENGTH","CHARSET","COALESCE","COERCIBILITY","COLLATION","COMPRESS","CONCAT","CONCAT_WS","CONNECTION_ID","CONV","CONVERT","CONVERT_TZ","COS","COT","COUNT","CRC32","CUME_DIST","CURDATE","CURRENT_DATE","CURRENT_ROLE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURTIME","DATABASE","DATE","DATE_ADD","DATE_FORMAT","DATE_SUB","DATEDIFF","DAY","DAYNAME","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","DEFAULT","DEGREES","DENSE_RANK","DIV","ELT","EXP","EXPORT_SET","EXTRACT","EXTRACTVALUE","FIELD","FIND_IN_SET","FIRST_VALUE","FLOOR","FORMAT","FORMAT_BYTES","FORMAT_PICO_TIME","FOUND_ROWS","FROM_BASE64","FROM_DAYS","FROM_UNIXTIME","GEOMCOLLECTION","GEOMETRYCOLLECTION","GET_DD_COLUMN_PRIVILEGES","GET_DD_CREATE_OPTIONS","GET_DD_INDEX_SUB_PART_LENGTH","GET_FORMAT","GET_LOCK","GREATEST","GROUP_CONCAT","GROUPING","GTID_SUBSET","GTID_SUBTRACT","HEX","HOUR","ICU_VERSION","IF","IFNULL","INET_ATON","INET_NTOA","INET6_ATON","INET6_NTOA","INSERT","INSTR","INTERNAL_AUTO_INCREMENT","INTERNAL_AVG_ROW_LENGTH","INTERNAL_CHECK_TIME","INTERNAL_CHECKSUM","INTERNAL_DATA_FREE","INTERNAL_DATA_LENGTH","INTERNAL_DD_CHAR_LENGTH","INTERNAL_GET_COMMENT_OR_ERROR","INTERNAL_GET_ENABLED_ROLE_JSON","INTERNAL_GET_HOSTNAME","INTERNAL_GET_USERNAME","INTERNAL_GET_VIEW_WARNING_OR_ERROR","INTERNAL_INDEX_COLUMN_CARDINALITY","INTERNAL_INDEX_LENGTH","INTERNAL_IS_ENABLED_ROLE","INTERNAL_IS_MANDATORY_ROLE","INTERNAL_KEYS_DISABLED","INTERNAL_MAX_DATA_LENGTH","INTERNAL_TABLE_ROWS","INTERNAL_UPDATE_TIME","INTERVAL","IS","IS_FREE_LOCK","IS_IPV4","IS_IPV4_COMPAT","IS_IPV4_MAPPED","IS_IPV6","IS NOT","IS NOT NULL","IS NULL","IS_USED_LOCK","IS_UUID","ISNULL","JSON_ARRAY","JSON_ARRAY_APPEND","JSON_ARRAY_INSERT","JSON_ARRAYAGG","JSON_CONTAINS","JSON_CONTAINS_PATH","JSON_DEPTH","JSON_EXTRACT","JSON_INSERT","JSON_KEYS","JSON_LENGTH","JSON_MERGE","JSON_MERGE_PATCH","JSON_MERGE_PRESERVE","JSON_OBJECT","JSON_OBJECTAGG","JSON_OVERLAPS","JSON_PRETTY","JSON_QUOTE","JSON_REMOVE","JSON_REPLACE","JSON_SCHEMA_VALID","JSON_SCHEMA_VALIDATION_REPORT","JSON_SEARCH","JSON_SET","JSON_STORAGE_FREE","JSON_STORAGE_SIZE","JSON_TABLE","JSON_TYPE","JSON_UNQUOTE","JSON_VALID","JSON_VALUE","LAG","LAST_DAY","LAST_INSERT_ID","LAST_VALUE","LCASE","LEAD","LEAST","LEFT","LENGTH","LIKE","LINESTRING","LN","LOAD_FILE","LOCALTIME","LOCALTIMESTAMP","LOCATE","LOG","LOG10","LOG2","LOWER","LPAD","LTRIM","MAKE_SET","MAKEDATE","MAKETIME","MASTER_POS_WAIT","MATCH","MAX","MBRCONTAINS","MBRCOVEREDBY","MBRCOVERS","MBRDISJOINT","MBREQUALS","MBRINTERSECTS","MBROVERLAPS","MBRTOUCHES","MBRWITHIN","MD5","MICROSECOND","MID","MIN","MINUTE","MOD","MONTH","MONTHNAME","MULTILINESTRING","MULTIPOINT","MULTIPOLYGON","NAME_CONST","NOW","NTH_VALUE","NTILE","NULLIF","OCT","OCTET_LENGTH","ORD","PERCENT_RANK","PERIOD_ADD","PERIOD_DIFF","PI","POINT","POLYGON","POSITION","POW","POWER","PS_CURRENT_THREAD_ID","PS_THREAD_ID","QUARTER","QUOTE","RADIANS","RAND","RANDOM_BYTES","RANK","REGEXP","REGEXP_INSTR","REGEXP_LIKE","REGEXP_REPLACE","REGEXP_SUBSTR","RELEASE_ALL_LOCKS","RELEASE_LOCK","REPEAT","REPLACE","REVERSE","RIGHT","RLIKE","ROLES_GRAPHML","ROUND","ROW_COUNT","ROW_NUMBER","RPAD","RTRIM","SCHEMA","SEC_TO_TIME","SECOND","SESSION_USER","SHA1","SHA2","SIGN","SIN","SLEEP","SOUNDEX","SOUNDS LIKE","SOURCE_POS_WAIT","SPACE","SQRT","ST_AREA","ST_ASBINARY","ST_ASGEOJSON","ST_ASTEXT","ST_BUFFER","ST_BUFFER_STRATEGY","ST_CENTROID","ST_COLLECT","ST_CONTAINS","ST_CONVEXHULL","ST_CROSSES","ST_DIFFERENCE","ST_DIMENSION","ST_DISJOINT","ST_DISTANCE","ST_DISTANCE_SPHERE","ST_ENDPOINT","ST_ENVELOPE","ST_EQUALS","ST_EXTERIORRING","ST_FRECHETDISTANCE","ST_GEOHASH","ST_GEOMCOLLFROMTEXT","ST_GEOMCOLLFROMWKB","ST_GEOMETRYN","ST_GEOMETRYTYPE","ST_GEOMFROMGEOJSON","ST_GEOMFROMTEXT","ST_GEOMFROMWKB","ST_HAUSDORFFDISTANCE","ST_INTERIORRINGN","ST_INTERSECTION","ST_INTERSECTS","ST_ISCLOSED","ST_ISEMPTY","ST_ISSIMPLE","ST_ISVALID","ST_LATFROMGEOHASH","ST_LATITUDE","ST_LENGTH","ST_LINEFROMTEXT","ST_LINEFROMWKB","ST_LINEINTERPOLATEPOINT","ST_LINEINTERPOLATEPOINTS","ST_LONGFROMGEOHASH","ST_LONGITUDE","ST_MAKEENVELOPE","ST_MLINEFROMTEXT","ST_MLINEFROMWKB","ST_MPOINTFROMTEXT","ST_MPOINTFROMWKB","ST_MPOLYFROMTEXT","ST_MPOLYFROMWKB","ST_NUMGEOMETRIES","ST_NUMINTERIORRING","ST_NUMPOINTS","ST_OVERLAPS","ST_POINTATDISTANCE","ST_POINTFROMGEOHASH","ST_POINTFROMTEXT","ST_POINTFROMWKB","ST_POINTN","ST_POLYFROMTEXT","ST_POLYFROMWKB","ST_SIMPLIFY","ST_SRID","ST_STARTPOINT","ST_SWAPXY","ST_SYMDIFFERENCE","ST_TOUCHES","ST_TRANSFORM","ST_UNION","ST_VALIDATE","ST_WITHIN","ST_X","ST_Y","STATEMENT_DIGEST","STATEMENT_DIGEST_TEXT","STD","STDDEV","STDDEV_POP","STDDEV_SAMP","STR_TO_DATE","STRCMP","SUBDATE","SUBSTR","SUBSTRING","SUBSTRING_INDEX","SUBTIME","SUM","SYSDATE","SYSTEM_USER","TAN","TIME","TIME_FORMAT","TIME_TO_SEC","TIMEDIFF","TIMESTAMP","TIMESTAMPADD","TIMESTAMPDIFF","TO_BASE64","TO_DAYS","TO_SECONDS","TRIM","TRUNCATE","UCASE","UNCOMPRESS","UNCOMPRESSED_LENGTH","UNHEX","UNIX_TIMESTAMP","UPDATEXML","UPPER","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","UUID","UUID_SHORT","UUID_TO_BIN","VALIDATE_PASSWORD_STRENGTH","VALUES","VAR_POP","VAR_SAMP","VARIANCE","VERSION","WAIT_FOR_EXECUTED_GTID_SET","WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS","WEEK","WEEKDAY","WEEKOFYEAR","WEIGHT_STRING","YEAR","YEARWEEK"],pR=N(["SELECT [ALL | DISTINCT | DISTINCTROW]"]),PR=N(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY","HAVING","WINDOW","PARTITION BY","ORDER BY","LIMIT","OFFSET","INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO]","REPLACE [LOW_PRIORITY | DELAYED] [INTO]","VALUES","ON DUPLICATE KEY UPDATE","SET"]),it=N(["CREATE [TEMPORARY] TABLE [IF NOT EXISTS]"]),nE=N(["CREATE [OR REPLACE] [SQL SECURITY DEFINER | SQL SECURITY INVOKER] VIEW [IF NOT EXISTS]","UPDATE [LOW_PRIORITY] [IGNORE]","DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM","DROP [TEMPORARY] TABLE [IF EXISTS]","ALTER TABLE","ADD [COLUMN]","{CHANGE | MODIFY} [COLUMN]","DROP [COLUMN]","RENAME [TO | AS]","RENAME COLUMN","ALTER [COLUMN]","{SET | DROP} DEFAULT","TRUNCATE [TABLE]","ALTER DATABASE","ALTER EVENT","ALTER FUNCTION","ALTER INSTANCE","ALTER LOGFILE GROUP","ALTER PROCEDURE","ALTER RESOURCE GROUP","ALTER SERVER","ALTER TABLESPACE","ALTER USER","ALTER VIEW","ANALYZE TABLE","BINLOG","CACHE INDEX","CALL","CHANGE MASTER TO","CHANGE REPLICATION FILTER","CHANGE REPLICATION SOURCE TO","CHECK TABLE","CHECKSUM TABLE","CLONE","COMMIT","CREATE DATABASE","CREATE EVENT","CREATE FUNCTION","CREATE FUNCTION","CREATE INDEX","CREATE LOGFILE GROUP","CREATE PROCEDURE","CREATE RESOURCE GROUP","CREATE ROLE","CREATE SERVER","CREATE SPATIAL REFERENCE SYSTEM","CREATE TABLESPACE","CREATE TRIGGER","CREATE USER","DEALLOCATE PREPARE","DESCRIBE","DROP DATABASE","DROP EVENT","DROP FUNCTION","DROP FUNCTION","DROP INDEX","DROP LOGFILE GROUP","DROP PROCEDURE","DROP RESOURCE GROUP","DROP ROLE","DROP SERVER","DROP SPATIAL REFERENCE SYSTEM","DROP TABLESPACE","DROP TRIGGER","DROP USER","DROP VIEW","EXECUTE","EXPLAIN","FLUSH","GRANT","HANDLER","HELP","IMPORT TABLE","INSTALL COMPONENT","INSTALL PLUGIN","KILL","LOAD DATA","LOAD INDEX INTO CACHE","LOAD XML","LOCK INSTANCE FOR BACKUP","LOCK TABLES","MASTER_POS_WAIT","OPTIMIZE TABLE","PREPARE","PURGE BINARY LOGS","RELEASE SAVEPOINT","RENAME TABLE","RENAME USER","REPAIR TABLE","RESET","RESET MASTER","RESET PERSIST","RESET REPLICA","RESET SLAVE","RESTART","REVOKE","ROLLBACK","ROLLBACK TO SAVEPOINT","SAVEPOINT","SET CHARACTER SET","SET DEFAULT ROLE","SET NAMES","SET PASSWORD","SET RESOURCE GROUP","SET ROLE","SET TRANSACTION","SHOW","SHOW BINARY LOGS","SHOW BINLOG EVENTS","SHOW CHARACTER SET","SHOW COLLATION","SHOW COLUMNS","SHOW CREATE DATABASE","SHOW CREATE EVENT","SHOW CREATE FUNCTION","SHOW CREATE PROCEDURE","SHOW CREATE TABLE","SHOW CREATE TRIGGER","SHOW CREATE USER","SHOW CREATE VIEW","SHOW DATABASES","SHOW ENGINE","SHOW ENGINES","SHOW ERRORS","SHOW EVENTS","SHOW FUNCTION CODE","SHOW FUNCTION STATUS","SHOW GRANTS","SHOW INDEX","SHOW MASTER STATUS","SHOW OPEN TABLES","SHOW PLUGINS","SHOW PRIVILEGES","SHOW PROCEDURE CODE","SHOW PROCEDURE STATUS","SHOW PROCESSLIST","SHOW PROFILE","SHOW PROFILES","SHOW RELAYLOG EVENTS","SHOW REPLICA STATUS","SHOW REPLICAS","SHOW SLAVE","SHOW SLAVE HOSTS","SHOW STATUS","SHOW TABLE STATUS","SHOW TABLES","SHOW TRIGGERS","SHOW VARIABLES","SHOW WARNINGS","SHUTDOWN","SOURCE_POS_WAIT","START GROUP_REPLICATION","START REPLICA","START SLAVE","START TRANSACTION","STOP GROUP_REPLICATION","STOP REPLICA","STOP SLAVE","TABLE","UNINSTALL COMPONENT","UNINSTALL PLUGIN","UNLOCK INSTANCE","UNLOCK TABLES","USE","XA","ITERATE","LEAVE","LOOP","REPEAT","RETURN","WHILE"]),MR=N(["UNION [ALL | DISTINCT]"]),hR=N(["JOIN","{LEFT | RIGHT} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL [INNER] JOIN","NATURAL {LEFT | RIGHT} [OUTER] JOIN","STRAIGHT_JOIN"]),fR=N(["ON {UPDATE | DELETE} [SET NULL]","CHARACTER SET","{ROWS | RANGE} BETWEEN","IDENTIFIED BY"]),mR=N([]),UR={name:"mysql",tokenizerOptions:{reservedSelect:pR,reservedClauses:[...PR,...it,...nE],reservedSetOperations:MR,reservedJoins:hR,reservedKeywordPhrases:fR,reservedDataTypePhrases:mR,supportsXor:!0,reservedKeywords:_R,reservedDataTypes:DR,reservedFunctionNames:uR,stringTypes:['""-qq-bs',{quote:"''-qq-bs",prefixes:["N"]},{quote:"''-raw",prefixes:["B","X"],requirePrefix:!0}],identTypes:["``"],identChars:{first:"$",rest:"$",allowFirstCharNumber:!0},variableTypes:[{regex:"@@?[A-Za-z0-9_.$]+"},{quote:'""-qq-bs',prefixes:["@"],requirePrefix:!0},{quote:"''-qq-bs",prefixes:["@"],requirePrefix:!0},{quote:"``",prefixes:["@"],requirePrefix:!0}],paramTypes:{positional:!0},lineCommentTypes:["--","#"],operators:["%",":=","&","|","^","~","<<",">>","<=>","->","->>","&&","||","!","*.*"],postProcess:we},formatOptions:{onelineClauses:[...it,...nE],tabularOnelineClauses:nE}},xR=["ADD","ALL","ALTER","ANALYZE","AND","ARRAY","AS","ASC","BETWEEN","BOTH","BY","CALL","CASCADE","CASE","CHANGE","CHECK","COLLATE","COLUMN","CONSTRAINT","CONTINUE","CONVERT","CREATE","CROSS","CURRENT_DATE","CURRENT_ROLE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURSOR","DATABASE","DATABASES","DAY_HOUR","DAY_MICROSECOND","DAY_MINUTE","DAY_SECOND","DEFAULT","DELAYED","DELETE","DESC","DESCRIBE","DISTINCT","DISTINCTROW","DIV","DOUBLE","DROP","DUAL","ELSE","ELSEIF","ENCLOSED","ESCAPED","EXCEPT","EXISTS","EXIT","EXPLAIN","FALSE","FETCH","FOR","FORCE","FOREIGN","FROM","FULLTEXT","GENERATED","GRANT","GROUP","GROUPS","HAVING","HIGH_PRIORITY","HOUR_MICROSECOND","HOUR_MINUTE","HOUR_SECOND","IF","IGNORE","ILIKE","IN","INDEX","INFILE","INNER","INOUT","INSERT","INTERSECT","INTERVAL","INTO","IS","ITERATE","JOIN","KEY","KEYS","KILL","LEADING","LEAVE","LEFT","LIKE","LIMIT","LINEAR","LINES","LOAD","LOCALTIME","LOCALTIMESTAMP","LOCK","LONG","LOW_PRIORITY","MATCH","MAXVALUE","MINUTE_MICROSECOND","MINUTE_SECOND","MOD","NATURAL","NOT","NO_WRITE_TO_BINLOG","NULL","OF","ON","OPTIMIZE","OPTION","OPTIONALLY","OR","ORDER","OUT","OUTER","OUTFILE","OVER","PARTITION","PRIMARY","PROCEDURE","RANGE","READ","RECURSIVE","REFERENCES","REGEXP","RELEASE","RENAME","REPEAT","REPLACE","REQUIRE","RESTRICT","REVOKE","RIGHT","RLIKE","ROW","ROWS","SECOND_MICROSECOND","SELECT","SET","SHOW","SPATIAL","SQL","SQLEXCEPTION","SQLSTATE","SQLWARNING","SQL_BIG_RESULT","SQL_CALC_FOUND_ROWS","SQL_SMALL_RESULT","SSL","STARTING","STATS_EXTENDED","STORED","STRAIGHT_JOIN","TABLE","TABLESAMPLE","TERMINATED","THEN","TO","TRAILING","TRIGGER","TRUE","TiDB_CURRENT_TSO","UNION","UNIQUE","UNLOCK","UNSIGNED","UNTIL","UPDATE","USAGE","USE","USING","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","VALUES","VIRTUAL","WHEN","WHERE","WHILE","WINDOW","WITH","WRITE","XOR","YEAR_MONTH","ZEROFILL"],yR=["BIGINT","BINARY","BIT","BLOB","BOOL","BOOLEAN","CHAR","CHARACTER","DATE","DATETIME","DEC","DECIMAL","DOUBLE PRECISION","DOUBLE","ENUM","FIXED","INT","INT1","INT2","INT3","INT4","INT8","INTEGER","LONGBLOB","LONGTEXT","MEDIUMBLOB","MEDIUMINT","MIDDLEINT","NATIONAL CHAR","NATIONAL VARCHAR","NUMERIC","PRECISION","SMALLINT","TEXT","TIME","TIMESTAMP","TINYBLOB","TINYINT","TINYTEXT","VARBINARY","VARCHAR","VARCHARACTER","VARYING","YEAR"],gR=["ABS","ACOS","ADDDATE","ADDTIME","AES_DECRYPT","AES_ENCRYPT","ANY_VALUE","ASCII","ASIN","ATAN","ATAN2","AVG","BENCHMARK","BIN","BIN_TO_UUID","BIT_AND","BIT_COUNT","BIT_LENGTH","BIT_OR","BIT_XOR","BITAND","BITNEG","BITOR","BITXOR","CASE","CAST","CEIL","CEILING","CHAR_FUNC","CHAR_LENGTH","CHARACTER_LENGTH","CHARSET","COALESCE","COERCIBILITY","COLLATION","COMPRESS","CONCAT","CONCAT_WS","CONNECTION_ID","CONV","CONVERT","CONVERT_TZ","COS","COT","COUNT","CRC32","CUME_DIST","CURDATE","CURRENT_DATE","CURRENT_RESOURCE_GROUP","CURRENT_ROLE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURTIME","DATABASE","DATE","DATE_ADD","DATE_FORMAT","DATE_SUB","DATEDIFF","DAY","DAYNAME","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","DECODE","DEFAULT_FUNC","DEGREES","DENSE_RANK","DES_DECRYPT","DES_ENCRYPT","DIV","ELT","ENCODE","ENCRYPT","EQ","EXP","EXPORT_SET","EXTRACT","FIELD","FIND_IN_SET","FIRST_VALUE","FLOOR","FORMAT","FORMAT_BYTES","FORMAT_NANO_TIME","FOUND_ROWS","FROM_BASE64","FROM_DAYS","FROM_UNIXTIME","GE","GET_FORMAT","GET_LOCK","GETPARAM","GREATEST","GROUP_CONCAT","GROUPING","GT","HEX","HOUR","IF","IFNULL","ILIKE","INET6_ATON","INET6_NTOA","INET_ATON","INET_NTOA","INSERT_FUNC","INSTR","INTDIV","INTERVAL","IS_FREE_LOCK","IS_IPV4","IS_IPV4_COMPAT","IS_IPV4_MAPPED","IS_IPV6","IS_USED_LOCK","IS_UUID","ISFALSE","ISNULL","ISTRUE","JSON_ARRAY","JSON_ARRAYAGG","JSON_ARRAY_APPEND","JSON_ARRAY_INSERT","JSON_CONTAINS","JSON_CONTAINS_PATH","JSON_DEPTH","JSON_EXTRACT","JSON_INSERT","JSON_KEYS","JSON_LENGTH","JSON_MEMBEROF","JSON_MERGE","JSON_MERGE_PATCH","JSON_MERGE_PRESERVE","JSON_OBJECT","JSON_OBJECTAGG","JSON_OVERLAPS","JSON_PRETTY","JSON_QUOTE","JSON_REMOVE","JSON_REPLACE","JSON_SEARCH","JSON_SET","JSON_STORAGE_FREE","JSON_STORAGE_SIZE","JSON_TYPE","JSON_UNQUOTE","JSON_VALID","LAG","LAST_DAY","LAST_INSERT_ID","LAST_VALUE","LASTVAL","LCASE","LE","LEAD","LEAST","LEFT","LEFTSHIFT","LENGTH","LIKE","LN","LOAD_FILE","LOCALTIME","LOCALTIMESTAMP","LOCATE","LOG","LOG10","LOG2","LOWER","LPAD","LT","LTRIM","MAKE_SET","MAKEDATE","MAKETIME","MASTER_POS_WAIT","MAX","MD5","MICROSECOND","MID","MIN","MINUS","MINUTE","MOD","MONTH","MONTHNAME","MUL","NAME_CONST","NE","NEXTVAL","NOT","NOW","NTH_VALUE","NTILE","NULLEQ","OCT","OCTET_LENGTH","OLD_PASSWORD","ORD","PASSWORD_FUNC","PERCENT_RANK","PERIOD_ADD","PERIOD_DIFF","PI","PLUS","POSITION","POW","POWER","QUARTER","QUOTE","RADIANS","RAND","RANDOM_BYTES","RANK","REGEXP","REGEXP_INSTR","REGEXP_LIKE","REGEXP_REPLACE","REGEXP_SUBSTR","RELEASE_ALL_LOCKS","RELEASE_LOCK","REPEAT","REPLACE","REVERSE","RIGHT","RIGHTSHIFT","ROUND","ROW_COUNT","ROW_NUMBER","RPAD","RTRIM","SCHEMA","SEC_TO_TIME","SECOND","SESSION_USER","SETVAL","SETVAR","SHA","SHA1","SHA2","SIGN","SIN","SLEEP","SM3","SPACE","SQRT","STD","STDDEV","STDDEV_POP","STDDEV_SAMP","STR_TO_DATE","STRCMP","SUBDATE","SUBSTR","SUBSTRING","SUBSTRING_INDEX","SUBTIME","SUM","SYSDATE","SYSTEM_USER","TAN","TIDB_BOUNDED_STALENESS","TIDB_CURRENT_TSO","TIDB_DECODE_BINARY_PLAN","TIDB_DECODE_KEY","TIDB_DECODE_PLAN","TIDB_DECODE_SQL_DIGESTS","TIDB_ENCODE_SQL_DIGEST","TIDB_IS_DDL_OWNER","TIDB_PARSE_TSO","TIDB_PARSE_TSO_LOGICAL","TIDB_ROW_CHECKSUM","TIDB_SHARD","TIDB_VERSION","TIME","TIME_FORMAT","TIME_TO_SEC","TIMEDIFF","TIMESTAMP","TIMESTAMPADD","TIMESTAMPDIFF","TO_BASE64","TO_DAYS","TO_SECONDS","TRANSLATE","TRIM","TRUNCATE","UCASE","UNARYMINUS","UNCOMPRESS","UNCOMPRESSED_LENGTH","UNHEX","UNIX_TIMESTAMP","UPPER","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","UUID","UUID_SHORT","UUID_TO_BIN","VALIDATE_PASSWORD_STRENGTH","VAR_POP","VAR_SAMP","VARIANCE","VERSION","VITESS_HASH","WEEK","WEEKDAY","WEEKOFYEAR","WEIGHT_STRING","YEAR","YEARWEEK"],GR=N(["SELECT [ALL | DISTINCT | DISTINCTROW]"]),BR=N(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY","HAVING","WINDOW","PARTITION BY","ORDER BY","LIMIT","OFFSET","INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO]","REPLACE [LOW_PRIORITY | DELAYED] [INTO]","VALUES","ON DUPLICATE KEY UPDATE","SET"]),At=N(["CREATE [TEMPORARY] TABLE [IF NOT EXISTS]"]),sE=N(["CREATE [OR REPLACE] [SQL SECURITY DEFINER | SQL SECURITY INVOKER] VIEW [IF NOT EXISTS]","UPDATE [LOW_PRIORITY] [IGNORE]","DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM","DROP [TEMPORARY] TABLE [IF EXISTS]","ALTER TABLE","ADD [COLUMN]","{CHANGE | MODIFY} [COLUMN]","DROP [COLUMN]","RENAME [TO | AS]","RENAME COLUMN","ALTER [COLUMN]","{SET | DROP} DEFAULT","TRUNCATE [TABLE]","ALTER DATABASE","ALTER INSTANCE","ALTER RESOURCE GROUP","ALTER SEQUENCE","ALTER USER","ALTER VIEW","ANALYZE TABLE","CHECK TABLE","CHECKSUM TABLE","COMMIT","CREATE DATABASE","CREATE INDEX","CREATE RESOURCE GROUP","CREATE ROLE","CREATE SEQUENCE","CREATE USER","DEALLOCATE PREPARE","DESCRIBE","DROP DATABASE","DROP INDEX","DROP RESOURCE GROUP","DROP ROLE","DROP TABLESPACE","DROP USER","DROP VIEW","EXPLAIN","FLUSH","GRANT","IMPORT TABLE","INSTALL COMPONENT","INSTALL PLUGIN","KILL","LOAD DATA","LOCK INSTANCE FOR BACKUP","LOCK TABLES","OPTIMIZE TABLE","PREPARE","RELEASE SAVEPOINT","RENAME TABLE","RENAME USER","REPAIR TABLE","RESET","REVOKE","ROLLBACK","ROLLBACK TO SAVEPOINT","SAVEPOINT","SET CHARACTER SET","SET DEFAULT ROLE","SET NAMES","SET PASSWORD","SET RESOURCE GROUP","SET ROLE","SET TRANSACTION","SHOW","SHOW BINARY LOGS","SHOW BINLOG EVENTS","SHOW CHARACTER SET","SHOW COLLATION","SHOW COLUMNS","SHOW CREATE DATABASE","SHOW CREATE TABLE","SHOW CREATE USER","SHOW CREATE VIEW","SHOW DATABASES","SHOW ENGINE","SHOW ENGINES","SHOW ERRORS","SHOW EVENTS","SHOW GRANTS","SHOW INDEX","SHOW MASTER STATUS","SHOW OPEN TABLES","SHOW PLUGINS","SHOW PRIVILEGES","SHOW PROCESSLIST","SHOW PROFILE","SHOW PROFILES","SHOW STATUS","SHOW TABLE STATUS","SHOW TABLES","SHOW TRIGGERS","SHOW VARIABLES","SHOW WARNINGS","TABLE","UNINSTALL COMPONENT","UNINSTALL PLUGIN","UNLOCK INSTANCE","UNLOCK TABLES","USE"]),HR=N(["UNION [ALL | DISTINCT]"]),FR=N(["JOIN","{LEFT | RIGHT} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL [INNER] JOIN","NATURAL {LEFT | RIGHT} [OUTER] JOIN","STRAIGHT_JOIN"]),bR=N(["ON {UPDATE | DELETE} [SET NULL]","CHARACTER SET","{ROWS | RANGE} BETWEEN","IDENTIFIED BY"]),YR=N([]),vR={name:"tidb",tokenizerOptions:{reservedSelect:GR,reservedClauses:[...BR,...At,...sE],reservedSetOperations:HR,reservedJoins:FR,reservedKeywordPhrases:bR,reservedDataTypePhrases:YR,supportsXor:!0,reservedKeywords:xR,reservedDataTypes:yR,reservedFunctionNames:gR,stringTypes:['""-qq-bs',{quote:"''-qq-bs",prefixes:["N"]},{quote:"''-raw",prefixes:["B","X"],requirePrefix:!0}],identTypes:["``"],identChars:{first:"$",rest:"$",allowFirstCharNumber:!0},variableTypes:[{regex:"@@?[A-Za-z0-9_.$]+"},{quote:'""-qq-bs',prefixes:["@"],requirePrefix:!0},{quote:"''-qq-bs",prefixes:["@"],requirePrefix:!0},{quote:"``",prefixes:["@"],requirePrefix:!0}],paramTypes:{positional:!0},lineCommentTypes:["--","#"],operators:["%",":=","&","|","^","~","<<",">>","<=>","->","->>","&&","||","!","*.*"],postProcess:we},formatOptions:{onelineClauses:[...At,...sE],tabularOnelineClauses:sE}},VR=["ABORT","ABS","ACOS","ADVISOR","ARRAY_AGG","ARRAY_AGG","ARRAY_APPEND","ARRAY_AVG","ARRAY_BINARY_SEARCH","ARRAY_CONCAT","ARRAY_CONTAINS","ARRAY_COUNT","ARRAY_DISTINCT","ARRAY_EXCEPT","ARRAY_FLATTEN","ARRAY_IFNULL","ARRAY_INSERT","ARRAY_INTERSECT","ARRAY_LENGTH","ARRAY_MAX","ARRAY_MIN","ARRAY_MOVE","ARRAY_POSITION","ARRAY_PREPEND","ARRAY_PUT","ARRAY_RANGE","ARRAY_REMOVE","ARRAY_REPEAT","ARRAY_REPLACE","ARRAY_REVERSE","ARRAY_SORT","ARRAY_STAR","ARRAY_SUM","ARRAY_SYMDIFF","ARRAY_SYMDIFF1","ARRAY_SYMDIFFN","ARRAY_UNION","ASIN","ATAN","ATAN2","AVG","BASE64","BASE64_DECODE","BASE64_ENCODE","BITAND ","BITCLEAR ","BITNOT ","BITOR ","BITSET ","BITSHIFT ","BITTEST ","BITXOR ","CEIL","CLOCK_LOCAL","CLOCK_MILLIS","CLOCK_STR","CLOCK_TZ","CLOCK_UTC","COALESCE","CONCAT","CONCAT2","CONTAINS","CONTAINS_TOKEN","CONTAINS_TOKEN_LIKE","CONTAINS_TOKEN_REGEXP","COS","COUNT","COUNT","COUNTN","CUME_DIST","CURL","DATE_ADD_MILLIS","DATE_ADD_STR","DATE_DIFF_MILLIS","DATE_DIFF_STR","DATE_FORMAT_STR","DATE_PART_MILLIS","DATE_PART_STR","DATE_RANGE_MILLIS","DATE_RANGE_STR","DATE_TRUNC_MILLIS","DATE_TRUNC_STR","DECODE","DECODE_JSON","DEGREES","DENSE_RANK","DURATION_TO_STR","ENCODED_SIZE","ENCODE_JSON","EXP","FIRST_VALUE","FLOOR","GREATEST","HAS_TOKEN","IFINF","IFMISSING","IFMISSINGORNULL","IFNAN","IFNANORINF","IFNULL","INITCAP","ISARRAY","ISATOM","ISBITSET","ISBOOLEAN","ISNUMBER","ISOBJECT","ISSTRING","LAG","LAST_VALUE","LEAD","LEAST","LENGTH","LN","LOG","LOWER","LTRIM","MAX","MEAN","MEDIAN","META","MILLIS","MILLIS_TO_LOCAL","MILLIS_TO_STR","MILLIS_TO_TZ","MILLIS_TO_UTC","MILLIS_TO_ZONE_NAME","MIN","MISSINGIF","NANIF","NEGINFIF","NOW_LOCAL","NOW_MILLIS","NOW_STR","NOW_TZ","NOW_UTC","NTH_VALUE","NTILE","NULLIF","NVL","NVL2","OBJECT_ADD","OBJECT_CONCAT","OBJECT_INNER_PAIRS","OBJECT_INNER_VALUES","OBJECT_LENGTH","OBJECT_NAMES","OBJECT_PAIRS","OBJECT_PUT","OBJECT_REMOVE","OBJECT_RENAME","OBJECT_REPLACE","OBJECT_UNWRAP","OBJECT_VALUES","PAIRS","PERCENT_RANK","PI","POLY_LENGTH","POSINFIF","POSITION","POWER","RADIANS","RANDOM","RANK","RATIO_TO_REPORT","REGEXP_CONTAINS","REGEXP_LIKE","REGEXP_MATCHES","REGEXP_POSITION","REGEXP_REPLACE","REGEXP_SPLIT","REGEX_CONTAINS","REGEX_LIKE","REGEX_MATCHES","REGEX_POSITION","REGEX_REPLACE","REGEX_SPLIT","REPEAT","REPLACE","REVERSE","ROUND","ROW_NUMBER","RTRIM","SEARCH","SEARCH_META","SEARCH_SCORE","SIGN","SIN","SPLIT","SQRT","STDDEV","STDDEV_POP","STDDEV_SAMP","STR_TO_DURATION","STR_TO_MILLIS","STR_TO_TZ","STR_TO_UTC","STR_TO_ZONE_NAME","SUBSTR","SUFFIXES","SUM","TAN","TITLE","TOARRAY","TOATOM","TOBOOLEAN","TOKENS","TOKENS","TONUMBER","TOOBJECT","TOSTRING","TRIM","TRUNC","UPPER","UUID","VARIANCE","VARIANCE_POP","VARIANCE_SAMP","VAR_POP","VAR_SAMP","WEEKDAY_MILLIS","WEEKDAY_STR","CAST"],WR=["ADVISE","ALL","ALTER","ANALYZE","AND","ANY","ARRAY","AS","ASC","AT","BEGIN","BETWEEN","BINARY","BOOLEAN","BREAK","BUCKET","BUILD","BY","CALL","CASE","CAST","CLUSTER","COLLATE","COLLECTION","COMMIT","COMMITTED","CONNECT","CONTINUE","CORRELATED","COVER","CREATE","CURRENT","DATABASE","DATASET","DATASTORE","DECLARE","DECREMENT","DELETE","DERIVED","DESC","DESCRIBE","DISTINCT","DO","DROP","EACH","ELEMENT","ELSE","END","EVERY","EXCEPT","EXCLUDE","EXECUTE","EXISTS","EXPLAIN","FALSE","FETCH","FILTER","FIRST","FLATTEN","FLUSH","FOLLOWING","FOR","FORCE","FROM","FTS","FUNCTION","GOLANG","GRANT","GROUP","GROUPS","GSI","HASH","HAVING","IF","IGNORE","ILIKE","IN","INCLUDE","INCREMENT","INDEX","INFER","INLINE","INNER","INSERT","INTERSECT","INTO","IS","ISOLATION","JAVASCRIPT","JOIN","KEY","KEYS","KEYSPACE","KNOWN","LANGUAGE","LAST","LEFT","LET","LETTING","LEVEL","LIKE","LIMIT","LSM","MAP","MAPPING","MATCHED","MATERIALIZED","MERGE","MINUS","MISSING","NAMESPACE","NEST","NL","NO","NOT","NTH_VALUE","NULL","NULLS","NUMBER","OBJECT","OFFSET","ON","OPTION","OPTIONS","OR","ORDER","OTHERS","OUTER","OVER","PARSE","PARTITION","PASSWORD","PATH","POOL","PRECEDING","PREPARE","PRIMARY","PRIVATE","PRIVILEGE","PROBE","PROCEDURE","PUBLIC","RANGE","RAW","REALM","REDUCE","RENAME","RESPECT","RETURN","RETURNING","REVOKE","RIGHT","ROLE","ROLLBACK","ROW","ROWS","SATISFIES","SAVEPOINT","SCHEMA","SCOPE","SELECT","SELF","SEMI","SET","SHOW","SOME","START","STATISTICS","STRING","SYSTEM","THEN","TIES","TO","TRAN","TRANSACTION","TRIGGER","TRUE","TRUNCATE","UNBOUNDED","UNDER","UNION","UNIQUE","UNKNOWN","UNNEST","UNSET","UPDATE","UPSERT","USE","USER","USING","VALIDATE","VALUE","VALUED","VALUES","VIA","VIEW","WHEN","WHERE","WHILE","WINDOW","WITH","WITHIN","WORK","XOR"],XR=[],wR=N(["SELECT [ALL | DISTINCT]"]),KR=N(["WITH","FROM","WHERE","GROUP BY","HAVING","WINDOW","PARTITION BY","ORDER BY","LIMIT","OFFSET","INSERT INTO","VALUES","SET","MERGE INTO","WHEN [NOT] MATCHED THEN","UPDATE SET","INSERT","NEST","UNNEST","RETURNING"]),at=N(["UPDATE","DELETE FROM","SET SCHEMA","ADVISE","ALTER INDEX","BEGIN TRANSACTION","BUILD INDEX","COMMIT TRANSACTION","CREATE COLLECTION","CREATE FUNCTION","CREATE INDEX","CREATE PRIMARY INDEX","CREATE SCOPE","DROP COLLECTION","DROP FUNCTION","DROP INDEX","DROP PRIMARY INDEX","DROP SCOPE","EXECUTE","EXECUTE FUNCTION","EXPLAIN","GRANT","INFER","PREPARE","REVOKE","ROLLBACK TRANSACTION","SAVEPOINT","SET TRANSACTION","UPDATE STATISTICS","UPSERT","LET","SET CURRENT SCHEMA","SHOW","USE [PRIMARY] KEYS"]),jR=N(["UNION [ALL]","EXCEPT [ALL]","INTERSECT [ALL]"]),kR=N(["JOIN","{LEFT | RIGHT} [OUTER] JOIN","INNER JOIN"]),$R=N(["{ROWS | RANGE | GROUPS} BETWEEN"]),JR=N([]),QR={name:"n1ql",tokenizerOptions:{reservedSelect:wR,reservedClauses:[...KR,...at],reservedSetOperations:jR,reservedJoins:kR,reservedKeywordPhrases:$R,reservedDataTypePhrases:JR,supportsXor:!0,reservedKeywords:WR,reservedDataTypes:XR,reservedFunctionNames:VR,stringTypes:['""-bs',"''-bs"],identTypes:["``"],extraParens:["[]","{}"],paramTypes:{positional:!0,numbered:["$"],named:["$"]},lineCommentTypes:["#","--"],operators:["%","==",":","||"]},formatOptions:{onelineClauses:at}},ZR=["ADD","AGENT","AGGREGATE","ALL","ALTER","AND","ANY","ARROW","AS","ASC","AT","ATTRIBUTE","AUTHID","AVG","BEGIN","BETWEEN","BLOCK","BODY","BOTH","BOUND","BULK","BY","BYTE","CALL","CALLING","CASCADE","CASE","CHARSET","CHARSETFORM","CHARSETID","CHECK","CLOSE","CLUSTER","CLUSTERS","COLAUTH","COLLECT","COLUMNS","COMMENT","COMMIT","COMMITTED","COMPILED","COMPRESS","CONNECT","CONSTANT","CONSTRUCTOR","CONTEXT","CONVERT","COUNT","CRASH","CREATE","CURRENT","CURSOR","CUSTOMDATUM","DANGLING","DATA","DAY","DECLARE","DEFAULT","DEFINE","DELETE","DESC","DETERMINISTIC","DISTINCT","DROP","DURATION","ELEMENT","ELSE","ELSIF","EMPTY","END","ESCAPE","EXCEPT","EXCEPTION","EXCEPTIONS","EXCLUSIVE","EXECUTE","EXISTS","EXIT","EXTERNAL","FETCH","FINAL","FIXED","FOR","FORALL","FORCE","FORM","FROM","FUNCTION","GENERAL","GOTO","GRANT","GROUP","HASH","HAVING","HEAP","HIDDEN","HOUR","IDENTIFIED","IF","IMMEDIATE","IN","INCLUDING","INDEX","INDEXES","INDICATOR","INDICES","INFINITE","INSERT","INSTANTIABLE","INTERFACE","INTERSECT","INTERVAL","INTO","INVALIDATE","IS","ISOLATION","JAVA","LANGUAGE","LARGE","LEADING","LENGTH","LEVEL","LIBRARY","LIKE","LIKE2","LIKE4","LIKEC","LIMIT","LIMITED","LOCAL","LOCK","LOOP","MAP","MAX","MAXLEN","MEMBER","MERGE","MIN","MINUS","MINUTE","MOD","MODE","MODIFY","MONTH","MULTISET","NAME","NAN","NATIONAL","NATIVE","NEW","NOCOMPRESS","NOCOPY","NOT","NOWAIT","NULL","OBJECT","OCICOLL","OCIDATE","OCIDATETIME","OCIDURATION","OCIINTERVAL","OCILOBLOCATOR","OCINUMBER","OCIRAW","OCIREF","OCIREFCURSOR","OCIROWID","OCISTRING","OCITYPE","OF","ON","ONLY","OPAQUE","OPEN","OPERATOR","OPTION","OR","ORACLE","ORADATA","ORDER","OVERLAPS","ORGANIZATION","ORLANY","ORLVARY","OTHERS","OUT","OVERRIDING","PACKAGE","PARALLEL_ENABLE","PARAMETER","PARAMETERS","PARTITION","PASCAL","PIPE","PIPELINED","PRAGMA","PRIOR","PRIVATE","PROCEDURE","PUBLIC","RAISE","RANGE","READ","RECORD","REF","REFERENCE","REM","REMAINDER","RENAME","RESOURCE","RESULT","RETURN","RETURNING","REVERSE","REVOKE","ROLLBACK","ROW","SAMPLE","SAVE","SAVEPOINT","SB1","SB2","SB4","SECOND","SEGMENT","SELECT","SELF","SEPARATE","SEQUENCE","SERIALIZABLE","SET","SHARE","SHORT","SIZE","SIZE_T","SOME","SPARSE","SQL","SQLCODE","SQLDATA","SQLNAME","SQLSTATE","STANDARD","START","STATIC","STDDEV","STORED","STRING","STRUCT","STYLE","SUBMULTISET","SUBPARTITION","SUBSTITUTABLE","SUBTYPE","SUM","SYNONYM","TABAUTH","TABLE","TDO","THE","THEN","TIME","TIMEZONE_ABBR","TIMEZONE_HOUR","TIMEZONE_MINUTE","TIMEZONE_REGION","TO","TRAILING","TRANSAC","TRANSACTIONAL","TRUSTED","TYPE","UB1","UB2","UB4","UNDER","UNION","UNIQUE","UNSIGNED","UNTRUSTED","UPDATE","USE","USING","VALIST","VALUE","VALUES","VARIABLE","VARIANCE","VARRAY","VIEW","VIEWS","VOID","WHEN","WHERE","WHILE","WITH","WORK","WRAPPED","WRITE","YEAR","ZONE"],qR=["ARRAY","BFILE_BASE","BINARY","BLOB_BASE","CHAR VARYING","CHAR_BASE","CHAR","CHARACTER VARYING","CHARACTER","CLOB_BASE","DATE_BASE","DATE","DECIMAL","DOUBLE","FLOAT","INT","INTERVAL DAY","INTERVAL YEAR","LONG","NATIONAL CHAR VARYING","NATIONAL CHAR","NATIONAL CHARACTER VARYING","NATIONAL CHARACTER","NCHAR VARYING","NCHAR","NCHAR","NUMBER_BASE","NUMBER","NUMBERIC","NVARCHAR","PRECISION","RAW","TIMESTAMP","UROWID","VARCHAR","VARCHAR2"],zR=["ABS","ACOS","ASIN","ATAN","ATAN2","BITAND","CEIL","COS","COSH","EXP","FLOOR","LN","LOG","MOD","NANVL","POWER","REMAINDER","ROUND","SIGN","SIN","SINH","SQRT","TAN","TANH","TRUNC","WIDTH_BUCKET","CHR","CONCAT","INITCAP","LOWER","LPAD","LTRIM","NLS_INITCAP","NLS_LOWER","NLSSORT","NLS_UPPER","REGEXP_REPLACE","REGEXP_SUBSTR","REPLACE","RPAD","RTRIM","SOUNDEX","SUBSTR","TRANSLATE","TREAT","TRIM","UPPER","NLS_CHARSET_DECL_LEN","NLS_CHARSET_ID","NLS_CHARSET_NAME","ASCII","INSTR","LENGTH","REGEXP_INSTR","ADD_MONTHS","CURRENT_DATE","CURRENT_TIMESTAMP","DBTIMEZONE","EXTRACT","FROM_TZ","LAST_DAY","LOCALTIMESTAMP","MONTHS_BETWEEN","NEW_TIME","NEXT_DAY","NUMTODSINTERVAL","NUMTOYMINTERVAL","ROUND","SESSIONTIMEZONE","SYS_EXTRACT_UTC","SYSDATE","SYSTIMESTAMP","TO_CHAR","TO_TIMESTAMP","TO_TIMESTAMP_TZ","TO_DSINTERVAL","TO_YMINTERVAL","TRUNC","TZ_OFFSET","GREATEST","LEAST","ASCIISTR","BIN_TO_NUM","CAST","CHARTOROWID","COMPOSE","CONVERT","DECOMPOSE","HEXTORAW","NUMTODSINTERVAL","NUMTOYMINTERVAL","RAWTOHEX","RAWTONHEX","ROWIDTOCHAR","ROWIDTONCHAR","SCN_TO_TIMESTAMP","TIMESTAMP_TO_SCN","TO_BINARY_DOUBLE","TO_BINARY_FLOAT","TO_CHAR","TO_CLOB","TO_DATE","TO_DSINTERVAL","TO_LOB","TO_MULTI_BYTE","TO_NCHAR","TO_NCLOB","TO_NUMBER","TO_DSINTERVAL","TO_SINGLE_BYTE","TO_TIMESTAMP","TO_TIMESTAMP_TZ","TO_YMINTERVAL","TO_YMINTERVAL","TRANSLATE","UNISTR","BFILENAME","EMPTY_BLOB,","EMPTY_CLOB","CARDINALITY","COLLECT","POWERMULTISET","POWERMULTISET_BY_CARDINALITY","SET","SYS_CONNECT_BY_PATH","CLUSTER_ID","CLUSTER_PROBABILITY","CLUSTER_SET","FEATURE_ID","FEATURE_SET","FEATURE_VALUE","PREDICTION","PREDICTION_COST","PREDICTION_DETAILS","PREDICTION_PROBABILITY","PREDICTION_SET","APPENDCHILDXML","DELETEXML","DEPTH","EXTRACT","EXISTSNODE","EXTRACTVALUE","INSERTCHILDXML","INSERTXMLBEFORE","PATH","SYS_DBURIGEN","SYS_XMLAGG","SYS_XMLGEN","UPDATEXML","XMLAGG","XMLCDATA","XMLCOLATTVAL","XMLCOMMENT","XMLCONCAT","XMLFOREST","XMLPARSE","XMLPI","XMLQUERY","XMLROOT","XMLSEQUENCE","XMLSERIALIZE","XMLTABLE","XMLTRANSFORM","DECODE","DUMP","ORA_HASH","VSIZE","COALESCE","LNNVL","NULLIF","NVL","NVL2","SYS_CONTEXT","SYS_GUID","SYS_TYPEID","UID","USER","USERENV","AVG","COLLECT","CORR","CORR_S","CORR_K","COUNT","COVAR_POP","COVAR_SAMP","CUME_DIST","DENSE_RANK","FIRST","GROUP_ID","GROUPING","GROUPING_ID","LAST","MAX","MEDIAN","MIN","PERCENTILE_CONT","PERCENTILE_DISC","PERCENT_RANK","RANK","REGR_SLOPE","REGR_INTERCEPT","REGR_COUNT","REGR_R2","REGR_AVGX","REGR_AVGY","REGR_SXX","REGR_SYY","REGR_SXY","STATS_BINOMIAL_TEST","STATS_CROSSTAB","STATS_F_TEST","STATS_KS_TEST","STATS_MODE","STATS_MW_TEST","STATS_ONE_WAY_ANOVA","STATS_T_TEST_ONE","STATS_T_TEST_PAIRED","STATS_T_TEST_INDEP","STATS_T_TEST_INDEPU","STATS_WSR_TEST","STDDEV","STDDEV_POP","STDDEV_SAMP","SUM","VAR_POP","VAR_SAMP","VARIANCE","FIRST_VALUE","LAG","LAST_VALUE","LEAD","NTILE","RATIO_TO_REPORT","ROW_NUMBER","DEREF","MAKE_REF","REF","REFTOHEX","VALUE","CV","ITERATION_NUMBER","PRESENTNNV","PRESENTV","PREVIOUS"],ei=N(["SELECT [ALL | DISTINCT | UNIQUE]"]),Ei=N(["WITH","FROM","WHERE","GROUP BY","HAVING","PARTITION BY","ORDER [SIBLINGS] BY","OFFSET","FETCH {FIRST | NEXT}","FOR UPDATE [OF]","INSERT [INTO | ALL INTO]","VALUES","SET","MERGE [INTO]","WHEN [NOT] MATCHED [THEN]","UPDATE SET","RETURNING"]),St=N(["CREATE [GLOBAL TEMPORARY | PRIVATE TEMPORARY | SHARDED | DUPLICATED | IMMUTABLE BLOCKCHAIN | BLOCKCHAIN | IMMUTABLE] TABLE"]),oE=N(["CREATE [OR REPLACE] [NO FORCE | FORCE] [EDITIONING | EDITIONABLE | EDITIONABLE EDITIONING | NONEDITIONABLE] VIEW","CREATE MATERIALIZED VIEW","UPDATE [ONLY]","DELETE FROM [ONLY]","DROP TABLE","ALTER TABLE","ADD","DROP {COLUMN | UNUSED COLUMNS | COLUMNS CONTINUE}","MODIFY","RENAME TO","RENAME COLUMN","TRUNCATE TABLE","SET SCHEMA","BEGIN","CONNECT BY","DECLARE","EXCEPT","EXCEPTION","LOOP","START WITH"]),ti=N(["UNION [ALL]","MINUS","INTERSECT"]),Ti=N(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL [INNER] JOIN","NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN","{CROSS | OUTER} APPLY"]),ri=N(["ON {UPDATE | DELETE} [SET NULL]","ON COMMIT","{ROWS | RANGE} BETWEEN"]),ni=N([]),si={name:"plsql",tokenizerOptions:{reservedSelect:ei,reservedClauses:[...Ei,...St,...oE],reservedSetOperations:ti,reservedJoins:Ti,reservedKeywordPhrases:ri,reservedDataTypePhrases:ni,supportsXor:!0,reservedKeywords:ZR,reservedDataTypes:qR,reservedFunctionNames:zR,stringTypes:[{quote:"''-qq",prefixes:["N"]},{quote:"q''",prefixes:["N"]}],identTypes:['""-qq'],identChars:{rest:"$#"},variableTypes:[{regex:"&{1,2}[A-Za-z][A-Za-z0-9_$#]*"}],paramTypes:{numbered:[":"],named:[":"]},operators:["**",":=","%","~=","^=",">>","<<","=>","@","||"],postProcess:oi},formatOptions:{alwaysDenseOperators:["@"],onelineClauses:[...St,...oE],tabularOnelineClauses:oE}};function oi(E){let e=se;return E.map(t=>oe.SET(t)&&oe.BY(e)?Object.assign(Object.assign({},t),{type:C.RESERVED_KEYWORD}):(TT(t.type)&&(e=t),t))}const Ri=["ABS","ACOS","ACOSD","ACOSH","ASIN","ASIND","ASINH","ATAN","ATAN2","ATAN2D","ATAND","ATANH","CBRT","CEIL","CEILING","COS","COSD","COSH","COT","COTD","DEGREES","DIV","EXP","FACTORIAL","FLOOR","GCD","LCM","LN","LOG","LOG10","MIN_SCALE","MOD","PI","POWER","RADIANS","RANDOM","ROUND","SCALE","SETSEED","SIGN","SIN","SIND","SINH","SQRT","TAN","TAND","TANH","TRIM_SCALE","TRUNC","WIDTH_BUCKET","ABS","ASCII","BIT_LENGTH","BTRIM","CHARACTER_LENGTH","CHAR_LENGTH","CHR","CONCAT","CONCAT_WS","FORMAT","INITCAP","LEFT","LENGTH","LOWER","LPAD","LTRIM","MD5","NORMALIZE","OCTET_LENGTH","OVERLAY","PARSE_IDENT","PG_CLIENT_ENCODING","POSITION","QUOTE_IDENT","QUOTE_LITERAL","QUOTE_NULLABLE","REGEXP_MATCH","REGEXP_MATCHES","REGEXP_REPLACE","REGEXP_SPLIT_TO_ARRAY","REGEXP_SPLIT_TO_TABLE","REPEAT","REPLACE","REVERSE","RIGHT","RPAD","RTRIM","SPLIT_PART","SPRINTF","STARTS_WITH","STRING_AGG","STRING_TO_ARRAY","STRING_TO_TABLE","STRPOS","SUBSTR","SUBSTRING","TO_ASCII","TO_HEX","TRANSLATE","TRIM","UNISTR","UPPER","BIT_COUNT","BIT_LENGTH","BTRIM","CONVERT","CONVERT_FROM","CONVERT_TO","DECODE","ENCODE","GET_BIT","GET_BYTE","LENGTH","LTRIM","MD5","OCTET_LENGTH","OVERLAY","POSITION","RTRIM","SET_BIT","SET_BYTE","SHA224","SHA256","SHA384","SHA512","STRING_AGG","SUBSTR","SUBSTRING","TRIM","BIT_COUNT","BIT_LENGTH","GET_BIT","LENGTH","OCTET_LENGTH","OVERLAY","POSITION","SET_BIT","SUBSTRING","REGEXP_MATCH","REGEXP_MATCHES","REGEXP_REPLACE","REGEXP_SPLIT_TO_ARRAY","REGEXP_SPLIT_TO_TABLE","TO_CHAR","TO_DATE","TO_NUMBER","TO_TIMESTAMP","CLOCK_TIMESTAMP","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","DATE_BIN","DATE_PART","DATE_TRUNC","EXTRACT","ISFINITE","JUSTIFY_DAYS","JUSTIFY_HOURS","JUSTIFY_INTERVAL","LOCALTIME","LOCALTIMESTAMP","MAKE_DATE","MAKE_INTERVAL","MAKE_TIME","MAKE_TIMESTAMP","MAKE_TIMESTAMPTZ","NOW","PG_SLEEP","PG_SLEEP_FOR","PG_SLEEP_UNTIL","STATEMENT_TIMESTAMP","TIMEOFDAY","TO_TIMESTAMP","TRANSACTION_TIMESTAMP","ENUM_FIRST","ENUM_LAST","ENUM_RANGE","AREA","BOUND_BOX","BOX","CENTER","CIRCLE","DIAGONAL","DIAMETER","HEIGHT","ISCLOSED","ISOPEN","LENGTH","LINE","LSEG","NPOINTS","PATH","PCLOSE","POINT","POLYGON","POPEN","RADIUS","SLOPE","WIDTH","ABBREV","BROADCAST","FAMILY","HOST","HOSTMASK","INET_MERGE","INET_SAME_FAMILY","MACADDR8_SET7BIT","MASKLEN","NETMASK","NETWORK","SET_MASKLEN","TRUNC","ARRAY_TO_TSVECTOR","GET_CURRENT_TS_CONFIG","JSONB_TO_TSVECTOR","JSON_TO_TSVECTOR","LENGTH","NUMNODE","PHRASETO_TSQUERY","PLAINTO_TSQUERY","QUERYTREE","SETWEIGHT","STRIP","TO_TSQUERY","TO_TSVECTOR","TSQUERY_PHRASE","TSVECTOR_TO_ARRAY","TS_DEBUG","TS_DELETE","TS_FILTER","TS_HEADLINE","TS_LEXIZE","TS_PARSE","TS_RANK","TS_RANK_CD","TS_REWRITE","TS_STAT","TS_TOKEN_TYPE","WEBSEARCH_TO_TSQUERY","GEN_RANDOM_UUID","UUIDV4","UUIDV7","UUID_EXTRACT_TIMESTAMP","UUID_EXTRACT_VERSION","CURSOR_TO_XML","CURSOR_TO_XMLSCHEMA","DATABASE_TO_XML","DATABASE_TO_XMLSCHEMA","DATABASE_TO_XML_AND_XMLSCHEMA","NEXTVAL","QUERY_TO_XML","QUERY_TO_XMLSCHEMA","QUERY_TO_XML_AND_XMLSCHEMA","SCHEMA_TO_XML","SCHEMA_TO_XMLSCHEMA","SCHEMA_TO_XML_AND_XMLSCHEMA","STRING","TABLE_TO_XML","TABLE_TO_XMLSCHEMA","TABLE_TO_XML_AND_XMLSCHEMA","XMLAGG","XMLCOMMENT","XMLCONCAT","XMLELEMENT","XMLEXISTS","XMLFOREST","XMLPARSE","XMLPI","XMLROOT","XMLSERIALIZE","XMLTABLE","XML_IS_WELL_FORMED","XML_IS_WELL_FORMED_CONTENT","XML_IS_WELL_FORMED_DOCUMENT","XPATH","XPATH_EXISTS","ARRAY_TO_JSON","JSONB_AGG","JSONB_ARRAY_ELEMENTS","JSONB_ARRAY_ELEMENTS_TEXT","JSONB_ARRAY_LENGTH","JSONB_BUILD_ARRAY","JSONB_BUILD_OBJECT","JSONB_EACH","JSONB_EACH_TEXT","JSONB_EXTRACT_PATH","JSONB_EXTRACT_PATH_TEXT","JSONB_INSERT","JSONB_OBJECT","JSONB_OBJECT_AGG","JSONB_OBJECT_KEYS","JSONB_PATH_EXISTS","JSONB_PATH_EXISTS_TZ","JSONB_PATH_MATCH","JSONB_PATH_MATCH_TZ","JSONB_PATH_QUERY","JSONB_PATH_QUERY_ARRAY","JSONB_PATH_QUERY_ARRAY_TZ","JSONB_PATH_QUERY_FIRST","JSONB_PATH_QUERY_FIRST_TZ","JSONB_PATH_QUERY_TZ","JSONB_POPULATE_RECORD","JSONB_POPULATE_RECORDSET","JSONB_PRETTY","JSONB_SET","JSONB_SET_LAX","JSONB_STRIP_NULLS","JSONB_TO_RECORD","JSONB_TO_RECORDSET","JSONB_TYPEOF","JSON_AGG","JSON_ARRAY_ELEMENTS","JSON_ARRAY_ELEMENTS_TEXT","JSON_ARRAY_LENGTH","JSON_BUILD_ARRAY","JSON_BUILD_OBJECT","JSON_EACH","JSON_EACH_TEXT","JSON_EXTRACT_PATH","JSON_EXTRACT_PATH_TEXT","JSON_OBJECT","JSON_OBJECT_AGG","JSON_OBJECT_KEYS","JSON_POPULATE_RECORD","JSON_POPULATE_RECORDSET","JSON_STRIP_NULLS","JSON_TO_RECORD","JSON_TO_RECORDSET","JSON_TYPEOF","ROW_TO_JSON","TO_JSON","TO_JSONB","TO_TIMESTAMP","CURRVAL","LASTVAL","NEXTVAL","SETVAL","COALESCE","GREATEST","LEAST","NULLIF","ARRAY_AGG","ARRAY_APPEND","ARRAY_CAT","ARRAY_DIMS","ARRAY_FILL","ARRAY_LENGTH","ARRAY_LOWER","ARRAY_NDIMS","ARRAY_POSITION","ARRAY_POSITIONS","ARRAY_PREPEND","ARRAY_REMOVE","ARRAY_REPLACE","ARRAY_TO_STRING","ARRAY_UPPER","CARDINALITY","STRING_TO_ARRAY","TRIM_ARRAY","UNNEST","ISEMPTY","LOWER","LOWER_INC","LOWER_INF","MULTIRANGE","RANGE_MERGE","UPPER","UPPER_INC","UPPER_INF","ARRAY_AGG","AVG","BIT_AND","BIT_OR","BIT_XOR","BOOL_AND","BOOL_OR","COALESCE","CORR","COUNT","COVAR_POP","COVAR_SAMP","CUME_DIST","DENSE_RANK","EVERY","GROUPING","JSONB_AGG","JSONB_OBJECT_AGG","JSON_AGG","JSON_OBJECT_AGG","MAX","MIN","MODE","PERCENTILE_CONT","PERCENTILE_DISC","PERCENT_RANK","RANGE_AGG","RANGE_INTERSECT_AGG","RANK","REGR_AVGX","REGR_AVGY","REGR_COUNT","REGR_INTERCEPT","REGR_R2","REGR_SLOPE","REGR_SXX","REGR_SXY","REGR_SYY","STDDEV","STDDEV_POP","STDDEV_SAMP","STRING_AGG","SUM","TO_JSON","TO_JSONB","VARIANCE","VAR_POP","VAR_SAMP","XMLAGG","CUME_DIST","DENSE_RANK","FIRST_VALUE","LAG","LAST_VALUE","LEAD","NTH_VALUE","NTILE","PERCENT_RANK","RANK","ROW_NUMBER","GENERATE_SERIES","GENERATE_SUBSCRIPTS","ACLDEFAULT","ACLEXPLODE","COL_DESCRIPTION","CURRENT_CATALOG","CURRENT_DATABASE","CURRENT_QUERY","CURRENT_ROLE","CURRENT_SCHEMA","CURRENT_SCHEMAS","CURRENT_USER","FORMAT_TYPE","HAS_ANY_COLUMN_PRIVILEGE","HAS_COLUMN_PRIVILEGE","HAS_DATABASE_PRIVILEGE","HAS_FOREIGN_DATA_WRAPPER_PRIVILEGE","HAS_FUNCTION_PRIVILEGE","HAS_LANGUAGE_PRIVILEGE","HAS_SCHEMA_PRIVILEGE","HAS_SEQUENCE_PRIVILEGE","HAS_SERVER_PRIVILEGE","HAS_TABLESPACE_PRIVILEGE","HAS_TABLE_PRIVILEGE","HAS_TYPE_PRIVILEGE","INET_CLIENT_ADDR","INET_CLIENT_PORT","INET_SERVER_ADDR","INET_SERVER_PORT","MAKEACLITEM","OBJ_DESCRIPTION","PG_BACKEND_PID","PG_BLOCKING_PIDS","PG_COLLATION_IS_VISIBLE","PG_CONF_LOAD_TIME","PG_CONTROL_CHECKPOINT","PG_CONTROL_INIT","PG_CONTROL_SYSTEM","PG_CONVERSION_IS_VISIBLE","PG_CURRENT_LOGFILE","PG_CURRENT_SNAPSHOT","PG_CURRENT_XACT_ID","PG_CURRENT_XACT_ID_IF_ASSIGNED","PG_DESCRIBE_OBJECT","PG_FUNCTION_IS_VISIBLE","PG_GET_CATALOG_FOREIGN_KEYS","PG_GET_CONSTRAINTDEF","PG_GET_EXPR","PG_GET_FUNCTIONDEF","PG_GET_FUNCTION_ARGUMENTS","PG_GET_FUNCTION_IDENTITY_ARGUMENTS","PG_GET_FUNCTION_RESULT","PG_GET_INDEXDEF","PG_GET_KEYWORDS","PG_GET_OBJECT_ADDRESS","PG_GET_OWNED_SEQUENCE","PG_GET_RULEDEF","PG_GET_SERIAL_SEQUENCE","PG_GET_STATISTICSOBJDEF","PG_GET_TRIGGERDEF","PG_GET_USERBYID","PG_GET_VIEWDEF","PG_HAS_ROLE","PG_IDENTIFY_OBJECT","PG_IDENTIFY_OBJECT_AS_ADDRESS","PG_INDEXAM_HAS_PROPERTY","PG_INDEX_COLUMN_HAS_PROPERTY","PG_INDEX_HAS_PROPERTY","PG_IS_OTHER_TEMP_SCHEMA","PG_JIT_AVAILABLE","PG_LAST_COMMITTED_XACT","PG_LISTENING_CHANNELS","PG_MY_TEMP_SCHEMA","PG_NOTIFICATION_QUEUE_USAGE","PG_OPCLASS_IS_VISIBLE","PG_OPERATOR_IS_VISIBLE","PG_OPFAMILY_IS_VISIBLE","PG_OPTIONS_TO_TABLE","PG_POSTMASTER_START_TIME","PG_SAFE_SNAPSHOT_BLOCKING_PIDS","PG_SNAPSHOT_XIP","PG_SNAPSHOT_XMAX","PG_SNAPSHOT_XMIN","PG_STATISTICS_OBJ_IS_VISIBLE","PG_TABLESPACE_DATABASES","PG_TABLESPACE_LOCATION","PG_TABLE_IS_VISIBLE","PG_TRIGGER_DEPTH","PG_TS_CONFIG_IS_VISIBLE","PG_TS_DICT_IS_VISIBLE","PG_TS_PARSER_IS_VISIBLE","PG_TS_TEMPLATE_IS_VISIBLE","PG_TYPEOF","PG_TYPE_IS_VISIBLE","PG_VISIBLE_IN_SNAPSHOT","PG_XACT_COMMIT_TIMESTAMP","PG_XACT_COMMIT_TIMESTAMP_ORIGIN","PG_XACT_STATUS","PQSERVERVERSION","ROW_SECURITY_ACTIVE","SESSION_USER","SHOBJ_DESCRIPTION","TO_REGCLASS","TO_REGCOLLATION","TO_REGNAMESPACE","TO_REGOPER","TO_REGOPERATOR","TO_REGPROC","TO_REGPROCEDURE","TO_REGROLE","TO_REGTYPE","TXID_CURRENT","TXID_CURRENT_IF_ASSIGNED","TXID_CURRENT_SNAPSHOT","TXID_SNAPSHOT_XIP","TXID_SNAPSHOT_XMAX","TXID_SNAPSHOT_XMIN","TXID_STATUS","TXID_VISIBLE_IN_SNAPSHOT","USER","VERSION","BRIN_DESUMMARIZE_RANGE","BRIN_SUMMARIZE_NEW_VALUES","BRIN_SUMMARIZE_RANGE","CONVERT_FROM","CURRENT_SETTING","GIN_CLEAN_PENDING_LIST","PG_ADVISORY_LOCK","PG_ADVISORY_LOCK_SHARED","PG_ADVISORY_UNLOCK","PG_ADVISORY_UNLOCK_ALL","PG_ADVISORY_UNLOCK_SHARED","PG_ADVISORY_XACT_LOCK","PG_ADVISORY_XACT_LOCK_SHARED","PG_BACKUP_START_TIME","PG_CANCEL_BACKEND","PG_COLLATION_ACTUAL_VERSION","PG_COLUMN_COMPRESSION","PG_COLUMN_SIZE","PG_COPY_LOGICAL_REPLICATION_SLOT","PG_COPY_PHYSICAL_REPLICATION_SLOT","PG_CREATE_LOGICAL_REPLICATION_SLOT","PG_CREATE_PHYSICAL_REPLICATION_SLOT","PG_CREATE_RESTORE_POINT","PG_CURRENT_WAL_FLUSH_LSN","PG_CURRENT_WAL_INSERT_LSN","PG_CURRENT_WAL_LSN","PG_DATABASE_SIZE","PG_DROP_REPLICATION_SLOT","PG_EXPORT_SNAPSHOT","PG_FILENODE_RELATION","PG_GET_WAL_REPLAY_PAUSE_STATE","PG_IMPORT_SYSTEM_COLLATIONS","PG_INDEXES_SIZE","PG_IS_IN_BACKUP","PG_IS_IN_RECOVERY","PG_IS_WAL_REPLAY_PAUSED","PG_LAST_WAL_RECEIVE_LSN","PG_LAST_WAL_REPLAY_LSN","PG_LAST_XACT_REPLAY_TIMESTAMP","PG_LOGICAL_EMIT_MESSAGE","PG_LOGICAL_SLOT_GET_BINARY_CHANGES","PG_LOGICAL_SLOT_GET_CHANGES","PG_LOGICAL_SLOT_PEEK_BINARY_CHANGES","PG_LOGICAL_SLOT_PEEK_CHANGES","PG_LOG_BACKEND_MEMORY_CONTEXTS","PG_LS_ARCHIVE_STATUSDIR","PG_LS_DIR","PG_LS_LOGDIR","PG_LS_TMPDIR","PG_LS_WALDIR","PG_PARTITION_ANCESTORS","PG_PARTITION_ROOT","PG_PARTITION_TREE","PG_PROMOTE","PG_READ_BINARY_FILE","PG_READ_FILE","PG_RELATION_FILENODE","PG_RELATION_FILEPATH","PG_RELATION_SIZE","PG_RELOAD_CONF","PG_REPLICATION_ORIGIN_ADVANCE","PG_REPLICATION_ORIGIN_CREATE","PG_REPLICATION_ORIGIN_DROP","PG_REPLICATION_ORIGIN_OID","PG_REPLICATION_ORIGIN_PROGRESS","PG_REPLICATION_ORIGIN_SESSION_IS_SETUP","PG_REPLICATION_ORIGIN_SESSION_PROGRESS","PG_REPLICATION_ORIGIN_SESSION_RESET","PG_REPLICATION_ORIGIN_SESSION_SETUP","PG_REPLICATION_ORIGIN_XACT_RESET","PG_REPLICATION_ORIGIN_XACT_SETUP","PG_REPLICATION_SLOT_ADVANCE","PG_ROTATE_LOGFILE","PG_SIZE_BYTES","PG_SIZE_PRETTY","PG_START_BACKUP","PG_STAT_FILE","PG_STOP_BACKUP","PG_SWITCH_WAL","PG_TABLESPACE_SIZE","PG_TABLE_SIZE","PG_TERMINATE_BACKEND","PG_TOTAL_RELATION_SIZE","PG_TRY_ADVISORY_LOCK","PG_TRY_ADVISORY_LOCK_SHARED","PG_TRY_ADVISORY_XACT_LOCK","PG_TRY_ADVISORY_XACT_LOCK_SHARED","PG_WALFILE_NAME","PG_WALFILE_NAME_OFFSET","PG_WAL_LSN_DIFF","PG_WAL_REPLAY_PAUSE","PG_WAL_REPLAY_RESUME","SET_CONFIG","SUPPRESS_REDUNDANT_UPDATES_TRIGGER","TSVECTOR_UPDATE_TRIGGER","TSVECTOR_UPDATE_TRIGGER_COLUMN","PG_EVENT_TRIGGER_DDL_COMMANDS","PG_EVENT_TRIGGER_DROPPED_OBJECTS","PG_EVENT_TRIGGER_TABLE_REWRITE_OID","PG_EVENT_TRIGGER_TABLE_REWRITE_REASON","PG_GET_OBJECT_ADDRESS","PG_MCV_LIST_ITEMS","CAST"],ii=["ALL","ANALYSE","ANALYZE","AND","ANY","AS","ASC","ASYMMETRIC","AUTHORIZATION","BETWEEN","BINARY","BOTH","CASE","CAST","CHECK","COLLATE","COLLATION","COLUMN","CONCURRENTLY","CONSTRAINT","CREATE","CROSS","CURRENT_CATALOG","CURRENT_DATE","CURRENT_ROLE","CURRENT_SCHEMA","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","DAY","DEFAULT","DEFERRABLE","DESC","DISTINCT","DO","ELSE","END","EXCEPT","EXISTS","FALSE","FETCH","FILTER","FOR","FOREIGN","FREEZE","FROM","FULL","GRANT","GROUP","HAVING","HOUR","ILIKE","IN","INITIALLY","INNER","INOUT","INTERSECT","INTO","IS","ISNULL","JOIN","LATERAL","LEADING","LEFT","LIKE","LIMIT","LOCALTIME","LOCALTIMESTAMP","MINUTE","MONTH","NATURAL","NOT","NOTNULL","NULL","NULLIF","OFFSET","ON","ONLY","OR","ORDER","OUT","OUTER","OVER","OVERLAPS","PLACING","PRIMARY","REFERENCES","RETURNING","RIGHT","ROW","SECOND","SELECT","SESSION_USER","SIMILAR","SOME","SYMMETRIC","TABLE","TABLESAMPLE","THEN","TO","TRAILING","TRUE","UNION","UNIQUE","USER","USING","VALUES","VARIADIC","VERBOSE","WHEN","WHERE","WINDOW","WITH","WITHIN","WITHOUT","YEAR"],Ai=["ARRAY","BIGINT","BIT","BIT VARYING","BOOL","BOOLEAN","CHAR","CHARACTER","CHARACTER VARYING","DECIMAL","DEC","DOUBLE","ENUM","FLOAT","INT","INTEGER","INTERVAL","NCHAR","NUMERIC","JSON","JSONB","PRECISION","REAL","SMALLINT","TEXT","TIME","TIMESTAMP","TIMESTAMPTZ","UUID","VARCHAR","XML","ZONE"],ai=N(["SELECT [ALL | DISTINCT]"]),Si=N(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY [ALL | DISTINCT]","HAVING","WINDOW","PARTITION BY","ORDER BY","LIMIT","OFFSET","FETCH {FIRST | NEXT}","FOR {UPDATE | NO KEY UPDATE | SHARE | KEY SHARE} [OF]","INSERT INTO","VALUES","DEFAULT VALUES","SET","RETURNING"]),It=N(["CREATE [GLOBAL | LOCAL] [TEMPORARY | TEMP | UNLOGGED] TABLE [IF NOT EXISTS]"]),RE=N(["CREATE [OR REPLACE] [TEMP | TEMPORARY] [RECURSIVE] VIEW","CREATE [MATERIALIZED] VIEW [IF NOT EXISTS]","UPDATE [ONLY]","WHERE CURRENT OF","ON CONFLICT","DELETE FROM [ONLY]","DROP TABLE [IF EXISTS]","ALTER TABLE [IF EXISTS] [ONLY]","ALTER TABLE ALL IN TABLESPACE","RENAME [COLUMN]","RENAME TO","ADD [COLUMN] [IF NOT EXISTS]","DROP [COLUMN] [IF EXISTS]","ALTER [COLUMN]","SET DATA TYPE","{SET | DROP} DEFAULT","{SET | DROP} NOT NULL","TRUNCATE [TABLE] [ONLY]","SET SCHEMA","AFTER","ABORT","ALTER AGGREGATE","ALTER COLLATION","ALTER CONVERSION","ALTER DATABASE","ALTER DEFAULT PRIVILEGES","ALTER DOMAIN","ALTER EVENT TRIGGER","ALTER EXTENSION","ALTER FOREIGN DATA WRAPPER","ALTER FOREIGN TABLE","ALTER FUNCTION","ALTER GROUP","ALTER INDEX","ALTER LANGUAGE","ALTER LARGE OBJECT","ALTER MATERIALIZED VIEW","ALTER OPERATOR","ALTER OPERATOR CLASS","ALTER OPERATOR FAMILY","ALTER POLICY","ALTER PROCEDURE","ALTER PUBLICATION","ALTER ROLE","ALTER ROUTINE","ALTER RULE","ALTER SCHEMA","ALTER SEQUENCE","ALTER SERVER","ALTER STATISTICS","ALTER SUBSCRIPTION","ALTER SYSTEM","ALTER TABLESPACE","ALTER TEXT SEARCH CONFIGURATION","ALTER TEXT SEARCH DICTIONARY","ALTER TEXT SEARCH PARSER","ALTER TEXT SEARCH TEMPLATE","ALTER TRIGGER","ALTER TYPE","ALTER USER","ALTER USER MAPPING","ALTER VIEW","ANALYZE","BEGIN","CALL","CHECKPOINT","CLOSE","CLUSTER","COMMENT ON","COMMIT","COMMIT PREPARED","COPY","CREATE ACCESS METHOD","CREATE [OR REPLACE] AGGREGATE","CREATE CAST","CREATE COLLATION","CREATE [DEFAULT] CONVERSION","CREATE DATABASE","CREATE DOMAIN","CREATE EVENT TRIGGER","CREATE EXTENSION","CREATE FOREIGN DATA WRAPPER","CREATE FOREIGN TABLE","CREATE [OR REPLACE] FUNCTION","CREATE GROUP","CREATE [UNIQUE] INDEX","CREATE [OR REPLACE] [TRUSTED] [PROCEDURAL] LANGUAGE","CREATE OPERATOR","CREATE OPERATOR CLASS","CREATE OPERATOR FAMILY","CREATE POLICY","CREATE [OR REPLACE] PROCEDURE","CREATE PUBLICATION","CREATE ROLE","CREATE [OR REPLACE] RULE","CREATE SCHEMA [AUTHORIZATION]","CREATE [TEMPORARY | TEMP | UNLOGGED] SEQUENCE","CREATE SERVER","CREATE STATISTICS","CREATE SUBSCRIPTION","CREATE TABLESPACE","CREATE TEXT SEARCH CONFIGURATION","CREATE TEXT SEARCH DICTIONARY","CREATE TEXT SEARCH PARSER","CREATE TEXT SEARCH TEMPLATE","CREATE [OR REPLACE] TRANSFORM","CREATE [OR REPLACE] [CONSTRAINT] TRIGGER","CREATE TYPE","CREATE USER","CREATE USER MAPPING","DEALLOCATE","DECLARE","DISCARD","DROP ACCESS METHOD","DROP AGGREGATE","DROP CAST","DROP COLLATION","DROP CONVERSION","DROP DATABASE","DROP DOMAIN","DROP EVENT TRIGGER","DROP EXTENSION","DROP FOREIGN DATA WRAPPER","DROP FOREIGN TABLE","DROP FUNCTION","DROP GROUP","DROP IDENTITY","DROP INDEX","DROP LANGUAGE","DROP MATERIALIZED VIEW [IF EXISTS]","DROP OPERATOR","DROP OPERATOR CLASS","DROP OPERATOR FAMILY","DROP OWNED","DROP POLICY","DROP PROCEDURE","DROP PUBLICATION","DROP ROLE","DROP ROUTINE","DROP RULE","DROP SCHEMA","DROP SEQUENCE","DROP SERVER","DROP STATISTICS","DROP SUBSCRIPTION","DROP TABLESPACE","DROP TEXT SEARCH CONFIGURATION","DROP TEXT SEARCH DICTIONARY","DROP TEXT SEARCH PARSER","DROP TEXT SEARCH TEMPLATE","DROP TRANSFORM","DROP TRIGGER","DROP TYPE","DROP USER","DROP USER MAPPING","DROP VIEW","EXECUTE","EXPLAIN","FETCH","GRANT","IMPORT FOREIGN SCHEMA","LISTEN","LOAD","LOCK","MOVE","NOTIFY","OVERRIDING SYSTEM VALUE","PREPARE","PREPARE TRANSACTION","REASSIGN OWNED","REFRESH MATERIALIZED VIEW","REINDEX","RELEASE SAVEPOINT","RESET [ALL|ROLE|SESSION AUTHORIZATION]","REVOKE","ROLLBACK","ROLLBACK PREPARED","ROLLBACK TO SAVEPOINT","SAVEPOINT","SECURITY LABEL","SELECT INTO","SET CONSTRAINTS","SET ROLE","SET SESSION AUTHORIZATION","SET TRANSACTION","SHOW","START TRANSACTION","UNLISTEN","VACUUM"]),Ii=N(["UNION [ALL | DISTINCT]","EXCEPT [ALL | DISTINCT]","INTERSECT [ALL | DISTINCT]"]),Oi=N(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL [INNER] JOIN","NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN"]),li=N(["PRIMARY KEY","GENERATED {ALWAYS | BY DEFAULT} AS IDENTITY","ON {UPDATE | DELETE} [NO ACTION | RESTRICT | CASCADE | SET NULL | SET DEFAULT]","DO {NOTHING | UPDATE}","AS MATERIALIZED","{ROWS | RANGE | GROUPS} BETWEEN","IS [NOT] DISTINCT FROM","NULLS {FIRST | LAST}","WITH ORDINALITY"]),Ni=N(["[TIMESTAMP | TIME] {WITH | WITHOUT} TIME ZONE"]),ci={name:"postgresql",tokenizerOptions:{reservedSelect:ai,reservedClauses:[...Si,...It,...RE],reservedSetOperations:Ii,reservedJoins:Oi,reservedKeywordPhrases:li,reservedDataTypePhrases:Ni,reservedKeywords:ii,reservedDataTypes:Ai,reservedFunctionNames:Ri,nestedBlockComments:!0,extraParens:["[]"],underscoresInNumbers:!0,stringTypes:["$$",{quote:"''-qq",prefixes:["U&"]},{quote:"''-qq-bs",prefixes:["E"],requirePrefix:!0},{quote:"''-raw",prefixes:["B","X"],requirePrefix:!0}],identTypes:[{quote:'""-qq',prefixes:["U&"]}],identChars:{rest:"$"},paramTypes:{numbered:["$"]},operators:["%","^","|/","||/","@",":=","&","|","#","~","<<",">>","~>~","~<~","~>=~","~<=~","@-@","@@","##","<->","&&","&<","&>","<<|","&<|","|>>","|&>","<^","^>","?#","?-","?|","?-|","?||","@>","<@","~=","?","@?","?&","->","->>","#>","#>>","#-","=>",">>=","<<=","~~","~~*","!~~","!~~*","~","~*","!~","!~*","-|-","||","@@@","!!","^@","<%","%>","<<%","%>>","<<->","<->>","<<<->","<->>>","::",":","<#>","<=>","<+>","<~>","<%>"],operatorKeyword:!0},formatOptions:{alwaysDenseOperators:["::",":"],onelineClauses:[...It,...RE],tabularOnelineClauses:RE}},Li=["ANY_VALUE","APPROXIMATE PERCENTILE_DISC","AVG","COUNT","LISTAGG","MAX","MEDIAN","MIN","PERCENTILE_CONT","STDDEV_SAMP","STDDEV_POP","SUM","VAR_SAMP","VAR_POP","array_concat","array_flatten","get_array_length","split_to_array","subarray","BIT_AND","BIT_OR","BOOL_AND","BOOL_OR","COALESCE","DECODE","GREATEST","LEAST","NVL","NVL2","NULLIF","ADD_MONTHS","AT TIME ZONE","CONVERT_TIMEZONE","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","DATE_CMP","DATE_CMP_TIMESTAMP","DATE_CMP_TIMESTAMPTZ","DATE_PART_YEAR","DATEADD","DATEDIFF","DATE_PART","DATE_TRUNC","EXTRACT","GETDATE","INTERVAL_CMP","LAST_DAY","MONTHS_BETWEEN","NEXT_DAY","SYSDATE","TIMEOFDAY","TIMESTAMP_CMP","TIMESTAMP_CMP_DATE","TIMESTAMP_CMP_TIMESTAMPTZ","TIMESTAMPTZ_CMP","TIMESTAMPTZ_CMP_DATE","TIMESTAMPTZ_CMP_TIMESTAMP","TIMEZONE","TO_TIMESTAMP","TRUNC","AddBBox","DropBBox","GeometryType","ST_AddPoint","ST_Angle","ST_Area","ST_AsBinary","ST_AsEWKB","ST_AsEWKT","ST_AsGeoJSON","ST_AsText","ST_Azimuth","ST_Boundary","ST_Collect","ST_Contains","ST_ContainsProperly","ST_ConvexHull","ST_CoveredBy","ST_Covers","ST_Crosses","ST_Dimension","ST_Disjoint","ST_Distance","ST_DistanceSphere","ST_DWithin","ST_EndPoint","ST_Envelope","ST_Equals","ST_ExteriorRing","ST_Force2D","ST_Force3D","ST_Force3DM","ST_Force3DZ","ST_Force4D","ST_GeometryN","ST_GeometryType","ST_GeomFromEWKB","ST_GeomFromEWKT","ST_GeomFromText","ST_GeomFromWKB","ST_InteriorRingN","ST_Intersects","ST_IsPolygonCCW","ST_IsPolygonCW","ST_IsClosed","ST_IsCollection","ST_IsEmpty","ST_IsSimple","ST_IsValid","ST_Length","ST_LengthSphere","ST_Length2D","ST_LineFromMultiPoint","ST_LineInterpolatePoint","ST_M","ST_MakeEnvelope","ST_MakeLine","ST_MakePoint","ST_MakePolygon","ST_MemSize","ST_MMax","ST_MMin","ST_Multi","ST_NDims","ST_NPoints","ST_NRings","ST_NumGeometries","ST_NumInteriorRings","ST_NumPoints","ST_Perimeter","ST_Perimeter2D","ST_Point","ST_PointN","ST_Points","ST_Polygon","ST_RemovePoint","ST_Reverse","ST_SetPoint","ST_SetSRID","ST_Simplify","ST_SRID","ST_StartPoint","ST_Touches","ST_Within","ST_X","ST_XMax","ST_XMin","ST_Y","ST_YMax","ST_YMin","ST_Z","ST_ZMax","ST_ZMin","SupportsBBox","CHECKSUM","FUNC_SHA1","FNV_HASH","MD5","SHA","SHA1","SHA2","HLL","HLL_CREATE_SKETCH","HLL_CARDINALITY","HLL_COMBINE","IS_VALID_JSON","IS_VALID_JSON_ARRAY","JSON_ARRAY_LENGTH","JSON_EXTRACT_ARRAY_ELEMENT_TEXT","JSON_EXTRACT_PATH_TEXT","JSON_PARSE","JSON_SERIALIZE","ABS","ACOS","ASIN","ATAN","ATAN2","CBRT","CEILING","CEIL","COS","COT","DEGREES","DEXP","DLOG1","DLOG10","EXP","FLOOR","LN","LOG","MOD","PI","POWER","RADIANS","RANDOM","ROUND","SIN","SIGN","SQRT","TAN","TO_HEX","TRUNC","EXPLAIN_MODEL","ASCII","BPCHARCMP","BTRIM","BTTEXT_PATTERN_CMP","CHAR_LENGTH","CHARACTER_LENGTH","CHARINDEX","CHR","COLLATE","CONCAT","CRC32","DIFFERENCE","INITCAP","LEFT","RIGHT","LEN","LENGTH","LOWER","LPAD","RPAD","LTRIM","OCTETINDEX","OCTET_LENGTH","POSITION","QUOTE_IDENT","QUOTE_LITERAL","REGEXP_COUNT","REGEXP_INSTR","REGEXP_REPLACE","REGEXP_SUBSTR","REPEAT","REPLACE","REPLICATE","REVERSE","RTRIM","SOUNDEX","SPLIT_PART","STRPOS","STRTOL","SUBSTRING","TEXTLEN","TRANSLATE","TRIM","UPPER","decimal_precision","decimal_scale","is_array","is_bigint","is_boolean","is_char","is_decimal","is_float","is_integer","is_object","is_scalar","is_smallint","is_varchar","json_typeof","AVG","COUNT","CUME_DIST","DENSE_RANK","FIRST_VALUE","LAST_VALUE","LAG","LEAD","LISTAGG","MAX","MEDIAN","MIN","NTH_VALUE","NTILE","PERCENT_RANK","PERCENTILE_CONT","PERCENTILE_DISC","RANK","RATIO_TO_REPORT","ROW_NUMBER","STDDEV_SAMP","STDDEV_POP","SUM","VAR_SAMP","VAR_POP","CAST","CONVERT","TO_CHAR","TO_DATE","TO_NUMBER","TEXT_TO_INT_ALT","TEXT_TO_NUMERIC_ALT","CHANGE_QUERY_PRIORITY","CHANGE_SESSION_PRIORITY","CHANGE_USER_PRIORITY","CURRENT_SETTING","PG_CANCEL_BACKEND","PG_TERMINATE_BACKEND","REBOOT_CLUSTER","SET_CONFIG","CURRENT_AWS_ACCOUNT","CURRENT_DATABASE","CURRENT_NAMESPACE","CURRENT_SCHEMA","CURRENT_SCHEMAS","CURRENT_USER","CURRENT_USER_ID","HAS_ASSUMEROLE_PRIVILEGE","HAS_DATABASE_PRIVILEGE","HAS_SCHEMA_PRIVILEGE","HAS_TABLE_PRIVILEGE","PG_BACKEND_PID","PG_GET_COLS","PG_GET_GRANTEE_BY_IAM_ROLE","PG_GET_IAM_ROLE_BY_USER","PG_GET_LATE_BINDING_VIEW_COLS","PG_LAST_COPY_COUNT","PG_LAST_COPY_ID","PG_LAST_UNLOAD_ID","PG_LAST_QUERY_ID","PG_LAST_UNLOAD_COUNT","SESSION_USER","SLICE_NUM","USER","VERSION"],Ci=["AES128","AES256","ALL","ALLOWOVERWRITE","ANY","AS","ASC","AUTHORIZATION","BACKUP","BETWEEN","BINARY","BOTH","CHECK","COLUMN","CONSTRAINT","CREATE","CROSS","DEFAULT","DEFERRABLE","DEFLATE","DEFRAG","DESC","DISABLE","DISTINCT","DO","ENABLE","ENCODE","ENCRYPT","ENCRYPTION","EXPLICIT","FALSE","FOR","FOREIGN","FREEZE","FROM","FULL","GLOBALDICT256","GLOBALDICT64K","GROUP","IDENTITY","IGNORE","ILIKE","IN","INITIALLY","INNER","INTO","IS","ISNULL","LANGUAGE","LEADING","LIKE","LIMIT","LOCALTIME","LOCALTIMESTAMP","LUN","LUNS","MINUS","NATURAL","NEW","NOT","NOTNULL","NULL","NULLS","OFF","OFFLINE","OFFSET","OID","OLD","ON","ONLY","OPEN","ORDER","OUTER","OVERLAPS","PARALLEL","PARTITION","PERCENT","PERMISSIONS","PLACING","PRIMARY","RECOVER","REFERENCES","REJECTLOG","RESORT","RESPECT","RESTORE","SIMILAR","SNAPSHOT","SOME","SYSTEM","TABLE","TAG","TDES","THEN","TIMESTAMP","TO","TOP","TRAILING","TRUE","UNIQUE","USING","VERBOSE","WALLET","WITHOUT","ACCEPTANYDATE","ACCEPTINVCHARS","BLANKSASNULL","DATEFORMAT","EMPTYASNULL","ENCODING","ESCAPE","EXPLICIT_IDS","FILLRECORD","IGNOREBLANKLINES","IGNOREHEADER","REMOVEQUOTES","ROUNDEC","TIMEFORMAT","TRIMBLANKS","TRUNCATECOLUMNS","COMPROWS","COMPUPDATE","MAXERROR","NOLOAD","STATUPDATE","FORMAT","CSV","DELIMITER","FIXEDWIDTH","SHAPEFILE","AVRO","JSON","PARQUET","ORC","ACCESS_KEY_ID","CREDENTIALS","ENCRYPTED","IAM_ROLE","MASTER_SYMMETRIC_KEY","SECRET_ACCESS_KEY","SESSION_TOKEN","BZIP2","GZIP","LZOP","ZSTD","MANIFEST","READRATIO","REGION","SSH","RAW","AZ64","BYTEDICT","DELTA","DELTA32K","LZO","MOSTLY8","MOSTLY16","MOSTLY32","RUNLENGTH","TEXT255","TEXT32K","CATALOG_ROLE","SECRET_ARN","EXTERNAL","AUTO","EVEN","KEY","PREDICATE","COMPRESSION"],di=["ARRAY","BIGINT","BPCHAR","CHAR","CHARACTER VARYING","CHARACTER","DECIMAL","INT","INT2","INT4","INT8","INTEGER","NCHAR","NUMERIC","NVARCHAR","SMALLINT","TEXT","VARBYTE","VARCHAR"],_i=N(["SELECT [ALL | DISTINCT]"]),Di=N(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY","HAVING","QUALIFY","PARTITION BY","ORDER BY","LIMIT","OFFSET","INSERT INTO","VALUES","SET"]),Ot=N(["CREATE [TEMPORARY | TEMP | LOCAL TEMPORARY | LOCAL TEMP] TABLE [IF NOT EXISTS]"]),iE=N(["CREATE [OR REPLACE | MATERIALIZED] VIEW","UPDATE","DELETE [FROM]","DROP TABLE [IF EXISTS]","ALTER TABLE","ALTER TABLE APPEND","ADD [COLUMN]","DROP [COLUMN]","RENAME TO","RENAME COLUMN","ALTER COLUMN","TYPE","ENCODE","TRUNCATE [TABLE]","ABORT","ALTER DATABASE","ALTER DATASHARE","ALTER DEFAULT PRIVILEGES","ALTER GROUP","ALTER MATERIALIZED VIEW","ALTER PROCEDURE","ALTER SCHEMA","ALTER USER","ANALYSE","ANALYZE","ANALYSE COMPRESSION","ANALYZE COMPRESSION","BEGIN","CALL","CANCEL","CLOSE","COMMIT","COPY","CREATE DATABASE","CREATE DATASHARE","CREATE EXTERNAL FUNCTION","CREATE EXTERNAL SCHEMA","CREATE EXTERNAL TABLE","CREATE FUNCTION","CREATE GROUP","CREATE LIBRARY","CREATE MODEL","CREATE PROCEDURE","CREATE SCHEMA","CREATE USER","DEALLOCATE","DECLARE","DESC DATASHARE","DROP DATABASE","DROP DATASHARE","DROP FUNCTION","DROP GROUP","DROP LIBRARY","DROP MODEL","DROP MATERIALIZED VIEW","DROP PROCEDURE","DROP SCHEMA","DROP USER","DROP VIEW","DROP","EXECUTE","EXPLAIN","FETCH","GRANT","LOCK","PREPARE","REFRESH MATERIALIZED VIEW","RESET","REVOKE","ROLLBACK","SELECT INTO","SET SESSION AUTHORIZATION","SET SESSION CHARACTERISTICS","SHOW","SHOW EXTERNAL TABLE","SHOW MODEL","SHOW DATASHARES","SHOW PROCEDURE","SHOW TABLE","SHOW VIEW","START TRANSACTION","UNLOAD","VACUUM"]),ui=N(["UNION [ALL]","EXCEPT","INTERSECT","MINUS"]),pi=N(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL [INNER] JOIN","NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN"]),Pi=N(["NULL AS","DATA CATALOG","HIVE METASTORE","{ROWS | RANGE} BETWEEN"]),Mi=N([]),hi={name:"redshift",tokenizerOptions:{reservedSelect:_i,reservedClauses:[...Di,...Ot,...iE],reservedSetOperations:ui,reservedJoins:pi,reservedKeywordPhrases:Pi,reservedDataTypePhrases:Mi,reservedKeywords:Ci,reservedDataTypes:di,reservedFunctionNames:Li,extraParens:["[]"],stringTypes:["''-qq"],identTypes:['""-qq'],identChars:{first:"#"},paramTypes:{numbered:["$"]},operators:["^","%","@","|/","||/","&","|","~","<<",">>","||","::"]},formatOptions:{alwaysDenseOperators:["::"],onelineClauses:[...Ot,...iE],tabularOnelineClauses:iE}},fi=["ADD","AFTER","ALL","ALTER","ANALYZE","AND","ANTI","ANY","ARCHIVE","AS","ASC","AT","AUTHORIZATION","BETWEEN","BOTH","BUCKET","BUCKETS","BY","CACHE","CASCADE","CAST","CHANGE","CHECK","CLEAR","CLUSTER","CLUSTERED","CODEGEN","COLLATE","COLLECTION","COLUMN","COLUMNS","COMMENT","COMMIT","COMPACT","COMPACTIONS","COMPUTE","CONCATENATE","CONSTRAINT","COST","CREATE","CROSS","CUBE","CURRENT","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","DATA","DATABASE","DATABASES","DAY","DBPROPERTIES","DEFINED","DELETE","DELIMITED","DESC","DESCRIBE","DFS","DIRECTORIES","DIRECTORY","DISTINCT","DISTRIBUTE","DIV","DROP","ESCAPE","ESCAPED","EXCEPT","EXCHANGE","EXISTS","EXPORT","EXTENDED","EXTERNAL","EXTRACT","FALSE","FETCH","FIELDS","FILTER","FILEFORMAT","FIRST","FIRST_VALUE","FOLLOWING","FOR","FOREIGN","FORMAT","FORMATTED","FULL","FUNCTION","FUNCTIONS","GLOBAL","GRANT","GROUP","GROUPING","HOUR","IF","IGNORE","IMPORT","IN","INDEX","INDEXES","INNER","INPATH","INPUTFORMAT","INTERSECT","INTO","IS","ITEMS","KEYS","LAST","LAST_VALUE","LATERAL","LAZY","LEADING","LEFT","LIKE","LINES","LIST","LOCAL","LOCATION","LOCK","LOCKS","LOGICAL","MACRO","MATCHED","MERGE","MINUTE","MONTH","MSCK","NAMESPACE","NAMESPACES","NATURAL","NO","NOT","NULL","NULLS","OF","ONLY","OPTION","OPTIONS","OR","ORDER","OUT","OUTER","OUTPUTFORMAT","OVER","OVERLAPS","OVERLAY","OVERWRITE","OWNER","PARTITION","PARTITIONED","PARTITIONS","PERCENT","PLACING","POSITION","PRECEDING","PRIMARY","PRINCIPALS","PROPERTIES","PURGE","QUERY","RANGE","RECORDREADER","RECORDWRITER","RECOVER","REDUCE","REFERENCES","RENAME","REPAIR","REPLACE","RESPECT","RESTRICT","REVOKE","RIGHT","RLIKE","ROLE","ROLES","ROLLBACK","ROLLUP","ROW","ROWS","SCHEMA","SECOND","SELECT","SEMI","SEPARATED","SERDE","SERDEPROPERTIES","SESSION_USER","SETS","SHOW","SKEWED","SOME","SORT","SORTED","START","STATISTICS","STORED","STRATIFY","SUBSTR","SUBSTRING","TABLE","TABLES","TBLPROPERTIES","TEMPORARY","TERMINATED","THEN","TO","TOUCH","TRAILING","TRANSACTION","TRANSACTIONS","TRIM","TRUE","TRUNCATE","UNARCHIVE","UNBOUNDED","UNCACHE","UNIQUE","UNKNOWN","UNLOCK","UNSET","USE","USER","USING","VIEW","WINDOW","YEAR","ANALYSE","ARRAY_ZIP","COALESCE","CONTAINS","CONVERT","DAYS","DAY_HOUR","DAY_MINUTE","DAY_SECOND","DECODE","DEFAULT","DISTINCTROW","ENCODE","EXPLODE","EXPLODE_OUTER","FIXED","GREATEST","GROUP_CONCAT","HOURS","HOUR_MINUTE","HOUR_SECOND","IFNULL","LEAST","LEVEL","MINUTE_SECOND","NULLIF","OFFSET","ON","OPTIMIZE","REGEXP","SEPARATOR","SIZE","TYPE","TYPES","UNSIGNED","VARIABLES","YEAR_MONTH"],mi=["ARRAY","BIGINT","BINARY","BOOLEAN","BYTE","CHAR","DATE","DEC","DECIMAL","DOUBLE","FLOAT","INT","INTEGER","INTERVAL","LONG","MAP","NUMERIC","REAL","SHORT","SMALLINT","STRING","STRUCT","TIMESTAMP_LTZ","TIMESTAMP_NTZ","TIMESTAMP","TINYINT","VARCHAR"],Ui=["APPROX_COUNT_DISTINCT","APPROX_PERCENTILE","AVG","BIT_AND","BIT_OR","BIT_XOR","BOOL_AND","BOOL_OR","COLLECT_LIST","COLLECT_SET","CORR","COUNT","COUNT","COUNT","COUNT_IF","COUNT_MIN_SKETCH","COVAR_POP","COVAR_SAMP","EVERY","FIRST","FIRST_VALUE","GROUPING","GROUPING_ID","KURTOSIS","LAST","LAST_VALUE","MAX","MAX_BY","MEAN","MIN","MIN_BY","PERCENTILE","PERCENTILE","PERCENTILE_APPROX","SKEWNESS","STD","STDDEV","STDDEV_POP","STDDEV_SAMP","SUM","VAR_POP","VAR_SAMP","VARIANCE","CUME_DIST","DENSE_RANK","LAG","LEAD","NTH_VALUE","NTILE","PERCENT_RANK","RANK","ROW_NUMBER","ARRAY","ARRAY_CONTAINS","ARRAY_DISTINCT","ARRAY_EXCEPT","ARRAY_INTERSECT","ARRAY_JOIN","ARRAY_MAX","ARRAY_MIN","ARRAY_POSITION","ARRAY_REMOVE","ARRAY_REPEAT","ARRAY_UNION","ARRAYS_OVERLAP","ARRAYS_ZIP","FLATTEN","SEQUENCE","SHUFFLE","SLICE","SORT_ARRAY","ELEMENT_AT","ELEMENT_AT","MAP_CONCAT","MAP_ENTRIES","MAP_FROM_ARRAYS","MAP_FROM_ENTRIES","MAP_KEYS","MAP_VALUES","STR_TO_MAP","ADD_MONTHS","CURRENT_DATE","CURRENT_DATE","CURRENT_TIMESTAMP","CURRENT_TIMESTAMP","CURRENT_TIMEZONE","DATE_ADD","DATE_FORMAT","DATE_FROM_UNIX_DATE","DATE_PART","DATE_SUB","DATE_TRUNC","DATEDIFF","DAY","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","EXTRACT","FROM_UNIXTIME","FROM_UTC_TIMESTAMP","HOUR","LAST_DAY","MAKE_DATE","MAKE_DT_INTERVAL","MAKE_INTERVAL","MAKE_TIMESTAMP","MAKE_YM_INTERVAL","MINUTE","MONTH","MONTHS_BETWEEN","NEXT_DAY","NOW","QUARTER","SECOND","SESSION_WINDOW","TIMESTAMP_MICROS","TIMESTAMP_MILLIS","TIMESTAMP_SECONDS","TO_DATE","TO_TIMESTAMP","TO_UNIX_TIMESTAMP","TO_UTC_TIMESTAMP","TRUNC","UNIX_DATE","UNIX_MICROS","UNIX_MILLIS","UNIX_SECONDS","UNIX_TIMESTAMP","WEEKDAY","WEEKOFYEAR","WINDOW","YEAR","FROM_JSON","GET_JSON_OBJECT","JSON_ARRAY_LENGTH","JSON_OBJECT_KEYS","JSON_TUPLE","SCHEMA_OF_JSON","TO_JSON","ABS","ACOS","ACOSH","AGGREGATE","ARRAY_SORT","ASCII","ASIN","ASINH","ASSERT_TRUE","ATAN","ATAN2","ATANH","BASE64","BIN","BIT_COUNT","BIT_GET","BIT_LENGTH","BROUND","BTRIM","CARDINALITY","CBRT","CEIL","CEILING","CHAR_LENGTH","CHARACTER_LENGTH","CHR","CONCAT","CONCAT_WS","CONV","COS","COSH","COT","CRC32","CURRENT_CATALOG","CURRENT_DATABASE","CURRENT_USER","DEGREES","ELT","EXP","EXPM1","FACTORIAL","FIND_IN_SET","FLOOR","FORALL","FORMAT_NUMBER","FORMAT_STRING","FROM_CSV","GETBIT","HASH","HEX","HYPOT","INITCAP","INLINE","INLINE_OUTER","INPUT_FILE_BLOCK_LENGTH","INPUT_FILE_BLOCK_START","INPUT_FILE_NAME","INSTR","ISNAN","ISNOTNULL","ISNULL","JAVA_METHOD","LCASE","LEFT","LENGTH","LEVENSHTEIN","LN","LOCATE","LOG","LOG10","LOG1P","LOG2","LOWER","LPAD","LTRIM","MAP_FILTER","MAP_ZIP_WITH","MD5","MOD","MONOTONICALLY_INCREASING_ID","NAMED_STRUCT","NANVL","NEGATIVE","NVL","NVL2","OCTET_LENGTH","OVERLAY","PARSE_URL","PI","PMOD","POSEXPLODE","POSEXPLODE_OUTER","POSITION","POSITIVE","POW","POWER","PRINTF","RADIANS","RAISE_ERROR","RAND","RANDN","RANDOM","REFLECT","REGEXP_EXTRACT","REGEXP_EXTRACT_ALL","REGEXP_LIKE","REGEXP_REPLACE","REPEAT","REPLACE","REVERSE","RIGHT","RINT","ROUND","RPAD","RTRIM","SCHEMA_OF_CSV","SENTENCES","SHA","SHA1","SHA2","SHIFTLEFT","SHIFTRIGHT","SHIFTRIGHTUNSIGNED","SIGN","SIGNUM","SIN","SINH","SOUNDEX","SPACE","SPARK_PARTITION_ID","SPLIT","SQRT","STACK","SUBSTR","SUBSTRING","SUBSTRING_INDEX","TAN","TANH","TO_CSV","TRANSFORM_KEYS","TRANSFORM_VALUES","TRANSLATE","TRIM","TRY_ADD","TRY_DIVIDE","TYPEOF","UCASE","UNBASE64","UNHEX","UPPER","UUID","VERSION","WIDTH_BUCKET","XPATH","XPATH_BOOLEAN","XPATH_DOUBLE","XPATH_FLOAT","XPATH_INT","XPATH_LONG","XPATH_NUMBER","XPATH_SHORT","XPATH_STRING","XXHASH64","ZIP_WITH","CAST","COALESCE","NULLIF"],xi=N(["SELECT [ALL | DISTINCT]"]),yi=N(["WITH","FROM","WHERE","GROUP BY","HAVING","WINDOW","PARTITION BY","ORDER BY","SORT BY","CLUSTER BY","DISTRIBUTE BY","LIMIT","INSERT [INTO | OVERWRITE] [TABLE]","VALUES","INSERT OVERWRITE [LOCAL] DIRECTORY","LOAD DATA [LOCAL] INPATH","[OVERWRITE] INTO TABLE"]),lt=N(["CREATE [EXTERNAL] TABLE [IF NOT EXISTS]"]),AE=N(["CREATE [OR REPLACE] [GLOBAL TEMPORARY | TEMPORARY] VIEW [IF NOT EXISTS]","DROP TABLE [IF EXISTS]","ALTER TABLE","ADD COLUMNS","DROP {COLUMN | COLUMNS}","RENAME TO","RENAME COLUMN","ALTER COLUMN","TRUNCATE TABLE","LATERAL VIEW","ALTER DATABASE","ALTER VIEW","CREATE DATABASE","CREATE FUNCTION","DROP DATABASE","DROP FUNCTION","DROP VIEW","REPAIR TABLE","USE DATABASE","TABLESAMPLE","PIVOT","TRANSFORM","EXPLAIN","ADD FILE","ADD JAR","ANALYZE TABLE","CACHE TABLE","CLEAR CACHE","DESCRIBE DATABASE","DESCRIBE FUNCTION","DESCRIBE QUERY","DESCRIBE TABLE","LIST FILE","LIST JAR","REFRESH","REFRESH TABLE","REFRESH FUNCTION","RESET","SHOW COLUMNS","SHOW CREATE TABLE","SHOW DATABASES","SHOW FUNCTIONS","SHOW PARTITIONS","SHOW TABLE EXTENDED","SHOW TABLES","SHOW TBLPROPERTIES","SHOW VIEWS","UNCACHE TABLE"]),gi=N(["UNION [ALL | DISTINCT]","EXCEPT [ALL | DISTINCT]","INTERSECT [ALL | DISTINCT]"]),Gi=N(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL [INNER] JOIN","NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN","[LEFT] {ANTI | SEMI} JOIN","NATURAL [LEFT] {ANTI | SEMI} JOIN"]),Bi=N(["ON DELETE","ON UPDATE","CURRENT ROW","{ROWS | RANGE} BETWEEN"]),Hi=N([]),Fi={name:"spark",tokenizerOptions:{reservedSelect:xi,reservedClauses:[...yi,...lt,...AE],reservedSetOperations:gi,reservedJoins:Gi,reservedKeywordPhrases:Bi,reservedDataTypePhrases:Hi,supportsXor:!0,reservedKeywords:fi,reservedDataTypes:mi,reservedFunctionNames:Ui,extraParens:["[]"],stringTypes:["''-bs",'""-bs',{quote:"''-raw",prefixes:["R","X"],requirePrefix:!0},{quote:'""-raw',prefixes:["R","X"],requirePrefix:!0}],identTypes:["``"],identChars:{allowFirstCharNumber:!0},variableTypes:[{quote:"{}",prefixes:["$"],requirePrefix:!0}],operators:["%","~","^","|","&","<=>","==","!","||","->"],postProcess:bi},formatOptions:{onelineClauses:[...lt,...AE],tabularOnelineClauses:AE}};function bi(E){return E.map((e,t)=>{const n=E[t-1]||se,r=E[t+1]||se;return oe.WINDOW(e)&&r.type===C.OPEN_PAREN?Object.assign(Object.assign({},e),{type:C.RESERVED_FUNCTION_NAME}):e.text==="ITEMS"&&e.type===C.RESERVED_KEYWORD&&!(n.text==="COLLECTION"&&r.text==="TERMINATED")?Object.assign(Object.assign({},e),{type:C.IDENTIFIER,text:e.raw}):e})}const Yi=["ABS","CHANGES","CHAR","COALESCE","FORMAT","GLOB","HEX","IFNULL","IIF","INSTR","LAST_INSERT_ROWID","LENGTH","LIKE","LIKELIHOOD","LIKELY","LOAD_EXTENSION","LOWER","LTRIM","NULLIF","PRINTF","QUOTE","RANDOM","RANDOMBLOB","REPLACE","ROUND","RTRIM","SIGN","SOUNDEX","SQLITE_COMPILEOPTION_GET","SQLITE_COMPILEOPTION_USED","SQLITE_OFFSET","SQLITE_SOURCE_ID","SQLITE_VERSION","SUBSTR","SUBSTRING","TOTAL_CHANGES","TRIM","TYPEOF","UNICODE","UNLIKELY","UPPER","ZEROBLOB","AVG","COUNT","GROUP_CONCAT","MAX","MIN","SUM","TOTAL","DATE","TIME","DATETIME","JULIANDAY","UNIXEPOCH","STRFTIME","row_number","rank","dense_rank","percent_rank","cume_dist","ntile","lag","lead","first_value","last_value","nth_value","ACOS","ACOSH","ASIN","ASINH","ATAN","ATAN2","ATANH","CEIL","CEILING","COS","COSH","DEGREES","EXP","FLOOR","LN","LOG","LOG","LOG10","LOG2","MOD","PI","POW","POWER","RADIANS","SIN","SINH","SQRT","TAN","TANH","TRUNC","JSON","JSON_ARRAY","JSON_ARRAY_LENGTH","JSON_ARRAY_LENGTH","JSON_EXTRACT","JSON_INSERT","JSON_OBJECT","JSON_PATCH","JSON_REMOVE","JSON_REPLACE","JSON_SET","JSON_TYPE","JSON_TYPE","JSON_VALID","JSON_QUOTE","JSON_GROUP_ARRAY","JSON_GROUP_OBJECT","JSON_EACH","JSON_TREE","CAST"],vi=["ABORT","ACTION","ADD","AFTER","ALL","ALTER","AND","ARE","ALWAYS","ANALYZE","AS","ASC","ATTACH","AUTOINCREMENT","BEFORE","BEGIN","BETWEEN","BY","CASCADE","CASE","CAST","CHECK","COLLATE","COLUMN","COMMIT","CONFLICT","CONSTRAINT","CREATE","CROSS","CURRENT","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","DATABASE","DEFAULT","DEFERRABLE","DEFERRED","DELETE","DESC","DETACH","DISTINCT","DO","DROP","EACH","ELSE","END","ESCAPE","EXCEPT","EXCLUDE","EXCLUSIVE","EXISTS","EXPLAIN","FAIL","FILTER","FIRST","FOLLOWING","FOR","FOREIGN","FROM","FULL","GENERATED","GLOB","GROUP","HAVING","IF","IGNORE","IMMEDIATE","IN","INDEX","INDEXED","INITIALLY","INNER","INSERT","INSTEAD","INTERSECT","INTO","IS","ISNULL","JOIN","KEY","LAST","LEFT","LIKE","LIMIT","MATCH","MATERIALIZED","NATURAL","NO","NOT","NOTHING","NOTNULL","NULL","NULLS","OF","OFFSET","ON","ONLY","OPEN","OR","ORDER","OTHERS","OUTER","OVER","PARTITION","PLAN","PRAGMA","PRECEDING","PRIMARY","QUERY","RAISE","RANGE","RECURSIVE","REFERENCES","REGEXP","REINDEX","RELEASE","RENAME","REPLACE","RESTRICT","RETURNING","RIGHT","ROLLBACK","ROW","ROWS","SAVEPOINT","SELECT","SET","TABLE","TEMP","TEMPORARY","THEN","TIES","TO","TRANSACTION","TRIGGER","UNBOUNDED","UNION","UNIQUE","UPDATE","USING","VACUUM","VALUES","VIEW","VIRTUAL","WHEN","WHERE","WINDOW","WITH","WITHOUT"],Vi=["ANY","ARRAY","BLOB","CHARACTER","DECIMAL","INT","INTEGER","NATIVE CHARACTER","NCHAR","NUMERIC","NVARCHAR","REAL","TEXT","VARCHAR","VARYING CHARACTER"],Wi=N(["SELECT [ALL | DISTINCT]"]),Xi=N(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY","HAVING","WINDOW","PARTITION BY","ORDER BY","LIMIT","OFFSET","INSERT [OR ABORT | OR FAIL | OR IGNORE | OR REPLACE | OR ROLLBACK] INTO","REPLACE INTO","VALUES","SET","RETURNING"]),Nt=N(["CREATE [TEMPORARY | TEMP] TABLE [IF NOT EXISTS]"]),aE=N(["CREATE [TEMPORARY | TEMP] VIEW [IF NOT EXISTS]","UPDATE [OR ABORT | OR FAIL | OR IGNORE | OR REPLACE | OR ROLLBACK]","ON CONFLICT","DELETE FROM","DROP TABLE [IF EXISTS]","ALTER TABLE","ADD [COLUMN]","DROP [COLUMN]","RENAME [COLUMN]","RENAME TO","SET SCHEMA"]),wi=N(["UNION [ALL]","EXCEPT","INTERSECT"]),Ki=N(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL [INNER] JOIN","NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN"]),ji=N(["ON {UPDATE | DELETE} [SET NULL | SET DEFAULT]","{ROWS | RANGE | GROUPS} BETWEEN","DO UPDATE"]),ki=N([]),$i={name:"sqlite",tokenizerOptions:{reservedSelect:Wi,reservedClauses:[...Xi,...Nt,...aE],reservedSetOperations:wi,reservedJoins:Ki,reservedKeywordPhrases:ji,reservedDataTypePhrases:ki,reservedKeywords:vi,reservedDataTypes:Vi,reservedFunctionNames:Yi,stringTypes:["''-qq",{quote:"''-raw",prefixes:["X"],requirePrefix:!0}],identTypes:['""-qq',"``","[]"],paramTypes:{positional:!0,numbered:["?"],named:[":","@","$"]},operators:["%","~","&","|","<<",">>","==","->","->>","||"]},formatOptions:{onelineClauses:[...Nt,...aE],tabularOnelineClauses:aE}},Ji=["GROUPING","RANK","DENSE_RANK","PERCENT_RANK","CUME_DIST","ROW_NUMBER","POSITION","OCCURRENCES_REGEX","POSITION_REGEX","EXTRACT","CHAR_LENGTH","CHARACTER_LENGTH","OCTET_LENGTH","CARDINALITY","ABS","MOD","LN","EXP","POWER","SQRT","FLOOR","CEIL","CEILING","WIDTH_BUCKET","SUBSTRING","SUBSTRING_REGEX","UPPER","LOWER","CONVERT","TRANSLATE","TRANSLATE_REGEX","TRIM","OVERLAY","NORMALIZE","SPECIFICTYPE","CURRENT_DATE","CURRENT_TIME","LOCALTIME","CURRENT_TIMESTAMP","LOCALTIMESTAMP","COUNT","AVG","MAX","MIN","SUM","STDDEV_POP","STDDEV_SAMP","VAR_SAMP","VAR_POP","COLLECT","FUSION","INTERSECTION","COVAR_POP","COVAR_SAMP","CORR","REGR_SLOPE","REGR_INTERCEPT","REGR_COUNT","REGR_R2","REGR_AVGX","REGR_AVGY","REGR_SXX","REGR_SYY","REGR_SXY","PERCENTILE_CONT","PERCENTILE_DISC","CAST","COALESCE","NULLIF","ROUND","SIN","COS","TAN","ASIN","ACOS","ATAN"],Qi=["ALL","ALLOCATE","ALTER","ANY","ARE","AS","ASC","ASENSITIVE","ASYMMETRIC","AT","ATOMIC","AUTHORIZATION","BEGIN","BETWEEN","BOTH","BY","CALL","CALLED","CASCADED","CAST","CHECK","CLOSE","COALESCE","COLLATE","COLUMN","COMMIT","CONDITION","CONNECT","CONSTRAINT","CORRESPONDING","CREATE","CROSS","CUBE","CURRENT","CURRENT_CATALOG","CURRENT_DEFAULT_TRANSFORM_GROUP","CURRENT_PATH","CURRENT_ROLE","CURRENT_SCHEMA","CURRENT_TRANSFORM_GROUP_FOR_TYPE","CURRENT_USER","CURSOR","CYCLE","DEALLOCATE","DAY","DECLARE","DEFAULT","DELETE","DEREF","DESC","DESCRIBE","DETERMINISTIC","DISCONNECT","DISTINCT","DROP","DYNAMIC","EACH","ELEMENT","END-EXEC","ESCAPE","EVERY","EXCEPT","EXEC","EXECUTE","EXISTS","EXTERNAL","FALSE","FETCH","FILTER","FOR","FOREIGN","FREE","FROM","FULL","FUNCTION","GET","GLOBAL","GRANT","GROUP","HAVING","HOLD","HOUR","IDENTITY","IN","INDICATOR","INNER","INOUT","INSENSITIVE","INSERT","INTERSECT","INTO","IS","LANGUAGE","LARGE","LATERAL","LEADING","LEFT","LIKE","LIKE_REGEX","LOCAL","MATCH","MEMBER","MERGE","METHOD","MINUTE","MODIFIES","MODULE","MONTH","NATURAL","NEW","NO","NONE","NOT","NULL","NULLIF","OF","OLD","ON","ONLY","OPEN","ORDER","OUT","OUTER","OVER","OVERLAPS","PARAMETER","PARTITION","PRECISION","PREPARE","PRIMARY","PROCEDURE","RANGE","READS","REAL","RECURSIVE","REF","REFERENCES","REFERENCING","RELEASE","RESULT","RETURN","RETURNS","REVOKE","RIGHT","ROLLBACK","ROLLUP","ROW","ROWS","SAVEPOINT","SCOPE","SCROLL","SEARCH","SECOND","SELECT","SENSITIVE","SESSION_USER","SET","SIMILAR","SOME","SPECIFIC","SQL","SQLEXCEPTION","SQLSTATE","SQLWARNING","START","STATIC","SUBMULTISET","SYMMETRIC","SYSTEM","SYSTEM_USER","TABLE","TABLESAMPLE","THEN","TIMEZONE_HOUR","TIMEZONE_MINUTE","TO","TRAILING","TRANSLATION","TREAT","TRIGGER","TRUE","UESCAPE","UNION","UNIQUE","UNKNOWN","UNNEST","UPDATE","USER","USING","VALUE","VALUES","WHENEVER","WINDOW","WITHIN","WITHOUT","YEAR"],Zi=["ARRAY","BIGINT","BINARY LARGE OBJECT","BINARY VARYING","BINARY","BLOB","BOOLEAN","CHAR LARGE OBJECT","CHAR VARYING","CHAR","CHARACTER LARGE OBJECT","CHARACTER VARYING","CHARACTER","CLOB","DATE","DEC","DECIMAL","DOUBLE","FLOAT","INT","INTEGER","INTERVAL","MULTISET","NATIONAL CHAR VARYING","NATIONAL CHAR","NATIONAL CHARACTER LARGE OBJECT","NATIONAL CHARACTER VARYING","NATIONAL CHARACTER","NCHAR LARGE OBJECT","NCHAR VARYING","NCHAR","NCLOB","NUMERIC","SMALLINT","TIME","TIMESTAMP","VARBINARY","VARCHAR"],qi=N(["SELECT [ALL | DISTINCT]"]),zi=N(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY [ALL | DISTINCT]","HAVING","WINDOW","PARTITION BY","ORDER BY","LIMIT","OFFSET","FETCH {FIRST | NEXT}","INSERT INTO","VALUES","SET"]),ct=N(["CREATE [GLOBAL TEMPORARY | LOCAL TEMPORARY] TABLE"]),SE=N(["CREATE [RECURSIVE] VIEW","UPDATE","WHERE CURRENT OF","DELETE FROM","DROP TABLE","ALTER TABLE","ADD COLUMN","DROP [COLUMN]","RENAME COLUMN","RENAME TO","ALTER [COLUMN]","{SET | DROP} DEFAULT","ADD SCOPE","DROP SCOPE {CASCADE | RESTRICT}","RESTART WITH","TRUNCATE TABLE","SET SCHEMA"]),eA=N(["UNION [ALL | DISTINCT]","EXCEPT [ALL | DISTINCT]","INTERSECT [ALL | DISTINCT]"]),EA=N(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL [INNER] JOIN","NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN"]),tA=N(["ON {UPDATE | DELETE} [SET NULL | SET DEFAULT]","{ROWS | RANGE} BETWEEN"]),TA=N([]),rA={name:"sql",tokenizerOptions:{reservedSelect:qi,reservedClauses:[...zi,...ct,...SE],reservedSetOperations:eA,reservedJoins:EA,reservedKeywordPhrases:tA,reservedDataTypePhrases:TA,reservedKeywords:Qi,reservedDataTypes:Zi,reservedFunctionNames:Ji,stringTypes:[{quote:"''-qq-bs",prefixes:["N","U&"]},{quote:"''-raw",prefixes:["X"],requirePrefix:!0}],identTypes:['""-qq',"``"],paramTypes:{positional:!0},operators:["||"]},formatOptions:{onelineClauses:[...ct,...SE],tabularOnelineClauses:SE}},nA=["ABS","ACOS","ALL_MATCH","ANY_MATCH","APPROX_DISTINCT","APPROX_MOST_FREQUENT","APPROX_PERCENTILE","APPROX_SET","ARBITRARY","ARRAYS_OVERLAP","ARRAY_AGG","ARRAY_DISTINCT","ARRAY_EXCEPT","ARRAY_INTERSECT","ARRAY_JOIN","ARRAY_MAX","ARRAY_MIN","ARRAY_POSITION","ARRAY_REMOVE","ARRAY_SORT","ARRAY_UNION","ASIN","ATAN","ATAN2","AT_TIMEZONE","AVG","BAR","BETA_CDF","BING_TILE","BING_TILES_AROUND","BING_TILE_AT","BING_TILE_COORDINATES","BING_TILE_POLYGON","BING_TILE_QUADKEY","BING_TILE_ZOOM_LEVEL","BITWISE_AND","BITWISE_AND_AGG","BITWISE_LEFT_SHIFT","BITWISE_NOT","BITWISE_OR","BITWISE_OR_AGG","BITWISE_RIGHT_SHIFT","BITWISE_RIGHT_SHIFT_ARITHMETIC","BITWISE_XOR","BIT_COUNT","BOOL_AND","BOOL_OR","CARDINALITY","CAST","CBRT","CEIL","CEILING","CHAR2HEXINT","CHECKSUM","CHR","CLASSIFY","COALESCE","CODEPOINT","COLOR","COMBINATIONS","CONCAT","CONCAT_WS","CONTAINS","CONTAINS_SEQUENCE","CONVEX_HULL_AGG","CORR","COS","COSH","COSINE_SIMILARITY","COUNT","COUNT_IF","COVAR_POP","COVAR_SAMP","CRC32","CUME_DIST","CURRENT_CATALOG","CURRENT_DATE","CURRENT_GROUPS","CURRENT_SCHEMA","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_TIMEZONE","CURRENT_USER","DATE","DATE_ADD","DATE_DIFF","DATE_FORMAT","DATE_PARSE","DATE_TRUNC","DAY","DAY_OF_MONTH","DAY_OF_WEEK","DAY_OF_YEAR","DEGREES","DENSE_RANK","DOW","DOY","E","ELEMENT_AT","EMPTY_APPROX_SET","EVALUATE_CLASSIFIER_PREDICTIONS","EVERY","EXP","EXTRACT","FEATURES","FILTER","FIRST_VALUE","FLATTEN","FLOOR","FORMAT","FORMAT_DATETIME","FORMAT_NUMBER","FROM_BASE","FROM_BASE32","FROM_BASE64","FROM_BASE64URL","FROM_BIG_ENDIAN_32","FROM_BIG_ENDIAN_64","FROM_ENCODED_POLYLINE","FROM_GEOJSON_GEOMETRY","FROM_HEX","FROM_IEEE754_32","FROM_IEEE754_64","FROM_ISO8601_DATE","FROM_ISO8601_TIMESTAMP","FROM_ISO8601_TIMESTAMP_NANOS","FROM_UNIXTIME","FROM_UNIXTIME_NANOS","FROM_UTF8","GEOMETRIC_MEAN","GEOMETRY_FROM_HADOOP_SHAPE","GEOMETRY_INVALID_REASON","GEOMETRY_NEAREST_POINTS","GEOMETRY_TO_BING_TILES","GEOMETRY_UNION","GEOMETRY_UNION_AGG","GREATEST","GREAT_CIRCLE_DISTANCE","HAMMING_DISTANCE","HASH_COUNTS","HISTOGRAM","HMAC_MD5","HMAC_SHA1","HMAC_SHA256","HMAC_SHA512","HOUR","HUMAN_READABLE_SECONDS","IF","INDEX","INFINITY","INTERSECTION_CARDINALITY","INVERSE_BETA_CDF","INVERSE_NORMAL_CDF","IS_FINITE","IS_INFINITE","IS_JSON_SCALAR","IS_NAN","JACCARD_INDEX","JSON_ARRAY_CONTAINS","JSON_ARRAY_GET","JSON_ARRAY_LENGTH","JSON_EXISTS","JSON_EXTRACT","JSON_EXTRACT_SCALAR","JSON_FORMAT","JSON_PARSE","JSON_QUERY","JSON_SIZE","JSON_VALUE","KURTOSIS","LAG","LAST_DAY_OF_MONTH","LAST_VALUE","LEAD","LEARN_CLASSIFIER","LEARN_LIBSVM_CLASSIFIER","LEARN_LIBSVM_REGRESSOR","LEARN_REGRESSOR","LEAST","LENGTH","LEVENSHTEIN_DISTANCE","LINE_INTERPOLATE_POINT","LINE_INTERPOLATE_POINTS","LINE_LOCATE_POINT","LISTAGG","LN","LOCALTIME","LOCALTIMESTAMP","LOG","LOG10","LOG2","LOWER","LPAD","LTRIM","LUHN_CHECK","MAKE_SET_DIGEST","MAP","MAP_AGG","MAP_CONCAT","MAP_ENTRIES","MAP_FILTER","MAP_FROM_ENTRIES","MAP_KEYS","MAP_UNION","MAP_VALUES","MAP_ZIP_WITH","MAX","MAX_BY","MD5","MERGE","MERGE_SET_DIGEST","MILLISECOND","MIN","MINUTE","MIN_BY","MOD","MONTH","MULTIMAP_AGG","MULTIMAP_FROM_ENTRIES","MURMUR3","NAN","NGRAMS","NONE_MATCH","NORMALIZE","NORMAL_CDF","NOW","NTH_VALUE","NTILE","NULLIF","NUMERIC_HISTOGRAM","OBJECTID","OBJECTID_TIMESTAMP","PARSE_DATA_SIZE","PARSE_DATETIME","PARSE_DURATION","PERCENT_RANK","PI","POSITION","POW","POWER","QDIGEST_AGG","QUARTER","RADIANS","RAND","RANDOM","RANK","REDUCE","REDUCE_AGG","REGEXP_COUNT","REGEXP_EXTRACT","REGEXP_EXTRACT_ALL","REGEXP_LIKE","REGEXP_POSITION","REGEXP_REPLACE","REGEXP_SPLIT","REGRESS","REGR_INTERCEPT","REGR_SLOPE","RENDER","REPEAT","REPLACE","REVERSE","RGB","ROUND","ROW_NUMBER","RPAD","RTRIM","SECOND","SEQUENCE","SHA1","SHA256","SHA512","SHUFFLE","SIGN","SIMPLIFY_GEOMETRY","SIN","SKEWNESS","SLICE","SOUNDEX","SPATIAL_PARTITIONING","SPATIAL_PARTITIONS","SPLIT","SPLIT_PART","SPLIT_TO_MAP","SPLIT_TO_MULTIMAP","SPOOKY_HASH_V2_32","SPOOKY_HASH_V2_64","SQRT","STARTS_WITH","STDDEV","STDDEV_POP","STDDEV_SAMP","STRPOS","ST_AREA","ST_ASBINARY","ST_ASTEXT","ST_BOUNDARY","ST_BUFFER","ST_CENTROID","ST_CONTAINS","ST_CONVEXHULL","ST_COORDDIM","ST_CROSSES","ST_DIFFERENCE","ST_DIMENSION","ST_DISJOINT","ST_DISTANCE","ST_ENDPOINT","ST_ENVELOPE","ST_ENVELOPEASPTS","ST_EQUALS","ST_EXTERIORRING","ST_GEOMETRIES","ST_GEOMETRYFROMTEXT","ST_GEOMETRYN","ST_GEOMETRYTYPE","ST_GEOMFROMBINARY","ST_INTERIORRINGN","ST_INTERIORRINGS","ST_INTERSECTION","ST_INTERSECTS","ST_ISCLOSED","ST_ISEMPTY","ST_ISRING","ST_ISSIMPLE","ST_ISVALID","ST_LENGTH","ST_LINEFROMTEXT","ST_LINESTRING","ST_MULTIPOINT","ST_NUMGEOMETRIES","ST_NUMINTERIORRING","ST_NUMPOINTS","ST_OVERLAPS","ST_POINT","ST_POINTN","ST_POINTS","ST_POLYGON","ST_RELATE","ST_STARTPOINT","ST_SYMDIFFERENCE","ST_TOUCHES","ST_UNION","ST_WITHIN","ST_X","ST_XMAX","ST_XMIN","ST_Y","ST_YMAX","ST_YMIN","SUBSTR","SUBSTRING","SUM","TAN","TANH","TDIGEST_AGG","TIMESTAMP_OBJECTID","TIMEZONE_HOUR","TIMEZONE_MINUTE","TO_BASE","TO_BASE32","TO_BASE64","TO_BASE64URL","TO_BIG_ENDIAN_32","TO_BIG_ENDIAN_64","TO_CHAR","TO_DATE","TO_ENCODED_POLYLINE","TO_GEOJSON_GEOMETRY","TO_GEOMETRY","TO_HEX","TO_IEEE754_32","TO_IEEE754_64","TO_ISO8601","TO_MILLISECONDS","TO_SPHERICAL_GEOGRAPHY","TO_TIMESTAMP","TO_UNIXTIME","TO_UTF8","TRANSFORM","TRANSFORM_KEYS","TRANSFORM_VALUES","TRANSLATE","TRIM","TRIM_ARRAY","TRUNCATE","TRY","TRY_CAST","TYPEOF","UPPER","URL_DECODE","URL_ENCODE","URL_EXTRACT_FRAGMENT","URL_EXTRACT_HOST","URL_EXTRACT_PARAMETER","URL_EXTRACT_PATH","URL_EXTRACT_PORT","URL_EXTRACT_PROTOCOL","URL_EXTRACT_QUERY","UUID","VALUES_AT_QUANTILES","VALUE_AT_QUANTILE","VARIANCE","VAR_POP","VAR_SAMP","VERSION","WEEK","WEEK_OF_YEAR","WIDTH_BUCKET","WILSON_INTERVAL_LOWER","WILSON_INTERVAL_UPPER","WITH_TIMEZONE","WORD_STEM","XXHASH64","YEAR","YEAR_OF_WEEK","YOW","ZIP","ZIP_WITH","CLASSIFIER","FIRST","LAST","MATCH_NUMBER","NEXT","PERMUTE","PREV"],sA=["ABSENT","ADD","ADMIN","AFTER","ALL","ALTER","ANALYZE","AND","ANY","AS","ASC","AT","AUTHORIZATION","BERNOULLI","BETWEEN","BOTH","BY","CALL","CASCADE","CASE","CATALOGS","COLUMN","COLUMNS","COMMENT","COMMIT","COMMITTED","CONDITIONAL","CONSTRAINT","COPARTITION","CREATE","CROSS","CUBE","CURRENT","CURRENT_PATH","CURRENT_ROLE","DATA","DEALLOCATE","DEFAULT","DEFINE","DEFINER","DELETE","DENY","DESC","DESCRIBE","DESCRIPTOR","DISTINCT","DISTRIBUTED","DOUBLE","DROP","ELSE","EMPTY","ENCODING","END","ERROR","ESCAPE","EXCEPT","EXCLUDING","EXECUTE","EXISTS","EXPLAIN","FALSE","FETCH","FINAL","FIRST","FOLLOWING","FOR","FROM","FULL","FUNCTIONS","GRANT","GRANTED","GRANTS","GRAPHVIZ","GROUP","GROUPING","GROUPS","HAVING","IGNORE","IN","INCLUDING","INITIAL","INNER","INPUT","INSERT","INTERSECT","INTERVAL","INTO","INVOKER","IO","IS","ISOLATION","JOIN","JSON","JSON_ARRAY","JSON_OBJECT","KEEP","KEY","KEYS","LAST","LATERAL","LEADING","LEFT","LEVEL","LIKE","LIMIT","LOCAL","LOGICAL","MATCH","MATCHED","MATCHES","MATCH_RECOGNIZE","MATERIALIZED","MEASURES","NATURAL","NEXT","NFC","NFD","NFKC","NFKD","NO","NONE","NOT","NULL","NULLS","OBJECT","OF","OFFSET","OMIT","ON","ONE","ONLY","OPTION","OR","ORDER","ORDINALITY","OUTER","OUTPUT","OVER","OVERFLOW","PARTITION","PARTITIONS","PASSING","PAST","PATH","PATTERN","PER","PERMUTE","PRECEDING","PRECISION","PREPARE","PRIVILEGES","PROPERTIES","PRUNE","QUOTES","RANGE","READ","RECURSIVE","REFRESH","RENAME","REPEATABLE","RESET","RESPECT","RESTRICT","RETURNING","REVOKE","RIGHT","ROLE","ROLES","ROLLBACK","ROLLUP","ROW","ROWS","RUNNING","SCALAR","SCHEMA","SCHEMAS","SECURITY","SEEK","SELECT","SERIALIZABLE","SESSION","SET","SETS","SHOW","SKIP","SOME","START","STATS","STRING","SUBSET","SYSTEM","TABLE","TABLES","TABLESAMPLE","TEXT","THEN","TIES","TIME","TIMESTAMP","TO","TRAILING","TRANSACTION","TRUE","TYPE","UESCAPE","UNBOUNDED","UNCOMMITTED","UNCONDITIONAL","UNION","UNIQUE","UNKNOWN","UNMATCHED","UNNEST","UPDATE","USE","USER","USING","UTF16","UTF32","UTF8","VALIDATE","VALUE","VALUES","VERBOSE","VIEW","WHEN","WHERE","WINDOW","WITH","WITHIN","WITHOUT","WORK","WRAPPER","WRITE","ZONE"],oA=["BIGINT","INT","INTEGER","SMALLINT","TINYINT","BOOLEAN","DATE","DECIMAL","REAL","DOUBLE","HYPERLOGLOG","QDIGEST","TDIGEST","P4HYPERLOGLOG","INTERVAL","TIMESTAMP","TIME","VARBINARY","VARCHAR","CHAR","ROW","ARRAY","MAP","JSON","JSON2016","IPADDRESS","GEOMETRY","UUID","SETDIGEST","JONIREGEXP","RE2JREGEXP","LIKEPATTERN","COLOR","CODEPOINTS","FUNCTION","JSONPATH"],RA=N(["SELECT [ALL | DISTINCT]"]),iA=N(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY [ALL | DISTINCT]","HAVING","WINDOW","PARTITION BY","ORDER BY","LIMIT","OFFSET","FETCH {FIRST | NEXT}","INSERT INTO","VALUES","SET","MATCH_RECOGNIZE","MEASURES","ONE ROW PER MATCH","ALL ROWS PER MATCH","AFTER MATCH","PATTERN","SUBSET","DEFINE"]),Lt=N(["CREATE TABLE [IF NOT EXISTS]"]),IE=N(["CREATE [OR REPLACE] [MATERIALIZED] VIEW","UPDATE","DELETE FROM","DROP TABLE [IF EXISTS]","ALTER TABLE [IF EXISTS]","ADD COLUMN [IF NOT EXISTS]","DROP COLUMN [IF EXISTS]","RENAME COLUMN [IF EXISTS]","RENAME TO","SET AUTHORIZATION [USER | ROLE]","SET PROPERTIES","EXECUTE","TRUNCATE TABLE","ALTER SCHEMA","ALTER MATERIALIZED VIEW","ALTER VIEW","CREATE SCHEMA","CREATE ROLE","DROP SCHEMA","DROP MATERIALIZED VIEW","DROP VIEW","DROP ROLE","EXPLAIN","ANALYZE","EXPLAIN ANALYZE","EXPLAIN ANALYZE VERBOSE","USE","DESCRIBE INPUT","DESCRIBE OUTPUT","REFRESH MATERIALIZED VIEW","RESET SESSION","SET SESSION","SET PATH","SET TIME ZONE","SHOW GRANTS","SHOW CREATE TABLE","SHOW CREATE SCHEMA","SHOW CREATE VIEW","SHOW CREATE MATERIALIZED VIEW","SHOW TABLES","SHOW SCHEMAS","SHOW CATALOGS","SHOW COLUMNS","SHOW STATS FOR","SHOW ROLES","SHOW CURRENT ROLES","SHOW ROLE GRANTS","SHOW FUNCTIONS","SHOW SESSION"]),AA=N(["UNION [ALL | DISTINCT] [CORRESPONDING]","EXCEPT [ALL | DISTINCT] [CORRESPONDING]","INTERSECT [ALL | DISTINCT] [CORRESPONDING]"]),aA=N(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL [INNER] JOIN","NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN"]),SA=N(["{ROWS | RANGE | GROUPS} BETWEEN","IS [NOT] DISTINCT FROM"]),IA=N([]),OA={name:"trino",tokenizerOptions:{reservedSelect:RA,reservedClauses:[...iA,...Lt,...IE],reservedSetOperations:AA,reservedJoins:aA,reservedKeywordPhrases:SA,reservedDataTypePhrases:IA,reservedKeywords:sA,reservedDataTypes:oA,reservedFunctionNames:nA,extraParens:["[]","{}"],stringTypes:[{quote:"''-qq",prefixes:["U&"]},{quote:"''-raw",prefixes:["X"],requirePrefix:!0}],identTypes:['""-qq'],paramTypes:{positional:!0},operators:["%","->","=>",":","||","|","^","$"]},formatOptions:{onelineClauses:[...Lt,...IE],tabularOnelineClauses:IE}},lA=["APPROX_COUNT_DISTINCT","AVG","CHECKSUM_AGG","COUNT","COUNT_BIG","GROUPING","GROUPING_ID","MAX","MIN","STDEV","STDEVP","SUM","VAR","VARP","CUME_DIST","FIRST_VALUE","LAG","LAST_VALUE","LEAD","PERCENTILE_CONT","PERCENTILE_DISC","PERCENT_RANK","Collation - COLLATIONPROPERTY","Collation - TERTIARY_WEIGHTS","@@DBTS","@@LANGID","@@LANGUAGE","@@LOCK_TIMEOUT","@@MAX_CONNECTIONS","@@MAX_PRECISION","@@NESTLEVEL","@@OPTIONS","@@REMSERVER","@@SERVERNAME","@@SERVICENAME","@@SPID","@@TEXTSIZE","@@VERSION","CAST","CONVERT","PARSE","TRY_CAST","TRY_CONVERT","TRY_PARSE","ASYMKEY_ID","ASYMKEYPROPERTY","CERTPROPERTY","CERT_ID","CRYPT_GEN_RANDOM","DECRYPTBYASYMKEY","DECRYPTBYCERT","DECRYPTBYKEY","DECRYPTBYKEYAUTOASYMKEY","DECRYPTBYKEYAUTOCERT","DECRYPTBYPASSPHRASE","ENCRYPTBYASYMKEY","ENCRYPTBYCERT","ENCRYPTBYKEY","ENCRYPTBYPASSPHRASE","HASHBYTES","IS_OBJECTSIGNED","KEY_GUID","KEY_ID","KEY_NAME","SIGNBYASYMKEY","SIGNBYCERT","SYMKEYPROPERTY","VERIFYSIGNEDBYCERT","VERIFYSIGNEDBYASYMKEY","@@CURSOR_ROWS","@@FETCH_STATUS","CURSOR_STATUS","DATALENGTH","IDENT_CURRENT","IDENT_INCR","IDENT_SEED","IDENTITY","SQL_VARIANT_PROPERTY","@@DATEFIRST","CURRENT_TIMESTAMP","CURRENT_TIMEZONE","CURRENT_TIMEZONE_ID","DATEADD","DATEDIFF","DATEDIFF_BIG","DATEFROMPARTS","DATENAME","DATEPART","DATETIME2FROMPARTS","DATETIMEFROMPARTS","DATETIMEOFFSETFROMPARTS","DAY","EOMONTH","GETDATE","GETUTCDATE","ISDATE","MONTH","SMALLDATETIMEFROMPARTS","SWITCHOFFSET","SYSDATETIME","SYSDATETIMEOFFSET","SYSUTCDATETIME","TIMEFROMPARTS","TODATETIMEOFFSET","YEAR","JSON","ISJSON","JSON_VALUE","JSON_QUERY","JSON_MODIFY","ABS","ACOS","ASIN","ATAN","ATN2","CEILING","COS","COT","DEGREES","EXP","FLOOR","LOG","LOG10","PI","POWER","RADIANS","RAND","ROUND","SIGN","SIN","SQRT","SQUARE","TAN","CHOOSE","GREATEST","IIF","LEAST","@@PROCID","APP_NAME","APPLOCK_MODE","APPLOCK_TEST","ASSEMBLYPROPERTY","COL_LENGTH","COL_NAME","COLUMNPROPERTY","DATABASEPROPERTYEX","DB_ID","DB_NAME","FILE_ID","FILE_IDEX","FILE_NAME","FILEGROUP_ID","FILEGROUP_NAME","FILEGROUPPROPERTY","FILEPROPERTY","FILEPROPERTYEX","FULLTEXTCATALOGPROPERTY","FULLTEXTSERVICEPROPERTY","INDEX_COL","INDEXKEY_PROPERTY","INDEXPROPERTY","NEXT VALUE FOR","OBJECT_DEFINITION","OBJECT_ID","OBJECT_NAME","OBJECT_SCHEMA_NAME","OBJECTPROPERTY","OBJECTPROPERTYEX","ORIGINAL_DB_NAME","PARSENAME","SCHEMA_ID","SCHEMA_NAME","SCOPE_IDENTITY","SERVERPROPERTY","STATS_DATE","TYPE_ID","TYPE_NAME","TYPEPROPERTY","DENSE_RANK","NTILE","RANK","ROW_NUMBER","PUBLISHINGSERVERNAME","CERTENCODED","CERTPRIVATEKEY","CURRENT_USER","DATABASE_PRINCIPAL_ID","HAS_DBACCESS","HAS_PERMS_BY_NAME","IS_MEMBER","IS_ROLEMEMBER","IS_SRVROLEMEMBER","LOGINPROPERTY","ORIGINAL_LOGIN","PERMISSIONS","PWDENCRYPT","PWDCOMPARE","SESSION_USER","SESSIONPROPERTY","SUSER_ID","SUSER_NAME","SUSER_SID","SUSER_SNAME","SYSTEM_USER","USER","USER_ID","USER_NAME","ASCII","CHARINDEX","CONCAT","CONCAT_WS","DIFFERENCE","FORMAT","LEFT","LEN","LOWER","LTRIM","PATINDEX","QUOTENAME","REPLACE","REPLICATE","REVERSE","RIGHT","RTRIM","SOUNDEX","SPACE","STR","STRING_AGG","STRING_ESCAPE","STUFF","SUBSTRING","TRANSLATE","TRIM","UNICODE","UPPER","$PARTITION","@@ERROR","@@IDENTITY","@@PACK_RECEIVED","@@ROWCOUNT","@@TRANCOUNT","BINARY_CHECKSUM","CHECKSUM","COMPRESS","CONNECTIONPROPERTY","CONTEXT_INFO","CURRENT_REQUEST_ID","CURRENT_TRANSACTION_ID","DECOMPRESS","ERROR_LINE","ERROR_MESSAGE","ERROR_NUMBER","ERROR_PROCEDURE","ERROR_SEVERITY","ERROR_STATE","FORMATMESSAGE","GET_FILESTREAM_TRANSACTION_CONTEXT","GETANSINULL","HOST_ID","HOST_NAME","ISNULL","ISNUMERIC","MIN_ACTIVE_ROWVERSION","NEWID","NEWSEQUENTIALID","ROWCOUNT_BIG","SESSION_CONTEXT","XACT_STATE","@@CONNECTIONS","@@CPU_BUSY","@@IDLE","@@IO_BUSY","@@PACK_SENT","@@PACKET_ERRORS","@@TIMETICKS","@@TOTAL_ERRORS","@@TOTAL_READ","@@TOTAL_WRITE","TEXTPTR","TEXTVALID","COLUMNS_UPDATED","EVENTDATA","TRIGGER_NESTLEVEL","UPDATE","COALESCE","NULLIF"],NA=["ADD","ALL","ALTER","AND","ANY","AS","ASC","AUTHORIZATION","BACKUP","BEGIN","BETWEEN","BREAK","BROWSE","BULK","BY","CASCADE","CHECK","CHECKPOINT","CLOSE","CLUSTERED","COALESCE","COLLATE","COLUMN","COMMIT","COMPUTE","CONSTRAINT","CONTAINS","CONTAINSTABLE","CONTINUE","CONVERT","CREATE","CROSS","CURRENT","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURSOR","DATABASE","DBCC","DEALLOCATE","DECLARE","DEFAULT","DELETE","DENY","DESC","DISK","DISTINCT","DISTRIBUTED","DROP","DUMP","ERRLVL","ESCAPE","EXEC","EXECUTE","EXISTS","EXIT","EXTERNAL","FETCH","FILE","FILLFACTOR","FOR","FOREIGN","FREETEXT","FREETEXTTABLE","FROM","FULL","FUNCTION","GOTO","GRANT","GROUP","HAVING","HOLDLOCK","IDENTITY","IDENTITYCOL","IDENTITY_INSERT","IF","IN","INDEX","INNER","INSERT","INTERSECT","INTO","IS","JOIN","KEY","KILL","LEFT","LIKE","LINENO","LOAD","MERGE","NOCHECK","NONCLUSTERED","NOT","NULL","NULLIF","OF","OFF","OFFSETS","ON","OPEN","OPENDATASOURCE","OPENQUERY","OPENROWSET","OPENXML","OPTION","OR","ORDER","OUTER","OVER","PERCENT","PIVOT","PLAN","PRIMARY","PRINT","PROC","PROCEDURE","PUBLIC","RAISERROR","READ","READTEXT","RECONFIGURE","REFERENCES","REPLICATION","RESTORE","RESTRICT","RETURN","REVERT","REVOKE","RIGHT","ROLLBACK","ROWCOUNT","ROWGUIDCOL","RULE","SAVE","SCHEMA","SECURITYAUDIT","SELECT","SEMANTICKEYPHRASETABLE","SEMANTICSIMILARITYDETAILSTABLE","SEMANTICSIMILARITYTABLE","SESSION_USER","SET","SETUSER","SHUTDOWN","SOME","STATISTICS","SYSTEM_USER","TABLE","TABLESAMPLE","TEXTSIZE","THEN","TO","TOP","TRAN","TRANSACTION","TRIGGER","TRUNCATE","TRY_CONVERT","TSEQUAL","UNION","UNIQUE","UNPIVOT","UPDATE","UPDATETEXT","USE","USER","VALUES","VIEW","WAITFOR","WHERE","WHILE","WITH","WITHIN GROUP","WRITETEXT","$ACTION"],cA=["BINARY","BIT","CHAR","CHAR","CHARACTER","DATE","DATETIME2","DATETIMEOFFSET","DEC","DECIMAL","DOUBLE","FLOAT","INT","INTEGER","NATIONAL","NCHAR","NUMERIC","NVARCHAR","PRECISION","REAL","SMALLINT","TIME","TIMESTAMP","VARBINARY","VARCHAR"],LA=N(["SELECT [ALL | DISTINCT]"]),CA=N(["WITH","INTO","FROM","WHERE","GROUP BY","HAVING","WINDOW","PARTITION BY","ORDER BY","OFFSET","FETCH {FIRST | NEXT}","FOR {BROWSE | XML | JSON}","OPTION","INSERT [INTO]","VALUES","SET","MERGE [INTO]","WHEN [NOT] MATCHED [BY TARGET | BY SOURCE] [THEN]","UPDATE SET"]),Ct=N(["CREATE TABLE"]),OE=N(["CREATE [OR ALTER] [MATERIALIZED] VIEW","UPDATE","WHERE CURRENT OF","DELETE [FROM]","DROP TABLE [IF EXISTS]","ALTER TABLE","ADD","DROP COLUMN [IF EXISTS]","ALTER COLUMN","TRUNCATE TABLE","CREATE [UNIQUE] [CLUSTERED] INDEX","CREATE DATABASE","ALTER DATABASE","DROP DATABASE [IF EXISTS]","CREATE [OR ALTER] [PARTITION] {FUNCTION | PROCEDURE | PROC}","ALTER [PARTITION] {FUNCTION | PROCEDURE | PROC}","DROP [PARTITION] {FUNCTION | PROCEDURE | PROC} [IF EXISTS]","GO","USE","ADD SENSITIVITY CLASSIFICATION","ADD SIGNATURE","AGGREGATE","ANSI_DEFAULTS","ANSI_NULLS","ANSI_NULL_DFLT_OFF","ANSI_NULL_DFLT_ON","ANSI_PADDING","ANSI_WARNINGS","APPLICATION ROLE","ARITHABORT","ARITHIGNORE","ASSEMBLY","ASYMMETRIC KEY","AUTHORIZATION","AVAILABILITY GROUP","BACKUP","BACKUP CERTIFICATE","BACKUP MASTER KEY","BACKUP SERVICE MASTER KEY","BEGIN CONVERSATION TIMER","BEGIN DIALOG CONVERSATION","BROKER PRIORITY","BULK INSERT","CERTIFICATE","CLOSE MASTER KEY","CLOSE SYMMETRIC KEY","COLUMN ENCRYPTION KEY","COLUMN MASTER KEY","COLUMNSTORE INDEX","CONCAT_NULL_YIELDS_NULL","CONTEXT_INFO","CONTRACT","CREDENTIAL","CRYPTOGRAPHIC PROVIDER","CURSOR_CLOSE_ON_COMMIT","DATABASE","DATABASE AUDIT SPECIFICATION","DATABASE ENCRYPTION KEY","DATABASE HADR","DATABASE SCOPED CONFIGURATION","DATABASE SCOPED CREDENTIAL","DATABASE SET","DATEFIRST","DATEFORMAT","DEADLOCK_PRIORITY","DENY","DENY XML","DISABLE TRIGGER","ENABLE TRIGGER","END CONVERSATION","ENDPOINT","EVENT NOTIFICATION","EVENT SESSION","EXECUTE AS","EXTERNAL DATA SOURCE","EXTERNAL FILE FORMAT","EXTERNAL LANGUAGE","EXTERNAL LIBRARY","EXTERNAL RESOURCE POOL","EXTERNAL TABLE","FIPS_FLAGGER","FMTONLY","FORCEPLAN","FULLTEXT CATALOG","FULLTEXT INDEX","FULLTEXT STOPLIST","GET CONVERSATION GROUP","GET_TRANSMISSION_STATUS","GRANT","GRANT XML","IDENTITY_INSERT","IMPLICIT_TRANSACTIONS","INDEX","LANGUAGE","LOCK_TIMEOUT","LOGIN","MASTER KEY","MESSAGE TYPE","MOVE CONVERSATION","NOCOUNT","NOEXEC","NUMERIC_ROUNDABORT","OFFSETS","OPEN MASTER KEY","OPEN SYMMETRIC KEY","PARSEONLY","PARTITION SCHEME","QUERY_GOVERNOR_COST_LIMIT","QUEUE","QUOTED_IDENTIFIER","RECEIVE","REMOTE SERVICE BINDING","REMOTE_PROC_TRANSACTIONS","RESOURCE GOVERNOR","RESOURCE POOL","RESTORE","RESTORE FILELISTONLY","RESTORE HEADERONLY","RESTORE LABELONLY","RESTORE MASTER KEY","RESTORE REWINDONLY","RESTORE SERVICE MASTER KEY","RESTORE VERIFYONLY","REVERT","REVOKE","REVOKE XML","ROLE","ROUTE","ROWCOUNT","RULE","SCHEMA","SEARCH PROPERTY LIST","SECURITY POLICY","SELECTIVE XML INDEX","SEND","SENSITIVITY CLASSIFICATION","SEQUENCE","SERVER AUDIT","SERVER AUDIT SPECIFICATION","SERVER CONFIGURATION","SERVER ROLE","SERVICE","SERVICE MASTER KEY","SETUSER","SHOWPLAN_ALL","SHOWPLAN_TEXT","SHOWPLAN_XML","SIGNATURE","SPATIAL INDEX","STATISTICS","STATISTICS IO","STATISTICS PROFILE","STATISTICS TIME","STATISTICS XML","SYMMETRIC KEY","SYNONYM","TABLE","TABLE IDENTITY","TEXTSIZE","TRANSACTION ISOLATION LEVEL","TRIGGER","TYPE","UPDATE STATISTICS","USER","WORKLOAD GROUP","XACT_ABORT","XML INDEX","XML SCHEMA COLLECTION"]),dA=N(["UNION [ALL]","EXCEPT","INTERSECT"]),_A=N(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","{CROSS | OUTER} APPLY"]),DA=N(["ON {UPDATE | DELETE} [SET NULL | SET DEFAULT]","{ROWS | RANGE} BETWEEN"]),uA=N([]),pA={name:"transactsql",tokenizerOptions:{reservedSelect:LA,reservedClauses:[...CA,...Ct,...OE],reservedSetOperations:dA,reservedJoins:_A,reservedKeywordPhrases:DA,reservedDataTypePhrases:uA,reservedKeywords:NA,reservedDataTypes:cA,reservedFunctionNames:lA,nestedBlockComments:!0,stringTypes:[{quote:"''-qq",prefixes:["N"]},"{}"],identTypes:['""-qq',"[]"],identChars:{first:"#@",rest:"#@$"},paramTypes:{named:["@"],quoted:["@"]},operators:["%","&","|","^","~","!<","!>","+=","-=","*=","/=","%=","|=","&=","^=","::",":"],propertyAccessOperators:[".."]},formatOptions:{alwaysDenseOperators:["::"],onelineClauses:[...Ct,...OE],tabularOnelineClauses:OE}},PA=["ADD","ALL","ALTER","ANALYZE","AND","AS","ASC","ASENSITIVE","BEFORE","BETWEEN","_BINARY","BOTH","BY","CALL","CASCADE","CASE","CHANGE","CHECK","COLLATE","COLUMN","CONDITION","CONSTRAINT","CONTINUE","CONVERT","CREATE","CROSS","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURSOR","DATABASE","DATABASES","DAY_HOUR","DAY_MICROSECOND","DAY_MINUTE","DAY_SECOND","DECLARE","DEFAULT","DELAYED","DELETE","DESC","DESCRIBE","DETERMINISTIC","DISTINCT","DISTINCTROW","DIV","DROP","DUAL","EACH","ELSE","ELSEIF","ENCLOSED","ESCAPED","EXCEPT","EXISTS","EXIT","EXPLAIN","EXTRA_JOIN","FALSE","FETCH","FOR","FORCE","FORCE_COMPILED_MODE","FORCE_INTERPRETER_MODE","FOREIGN","FROM","FULL","FULLTEXT","GRANT","GROUP","HAVING","HEARTBEAT_NO_LOGGING","HIGH_PRIORITY","HOUR_MICROSECOND","HOUR_MINUTE","HOUR_SECOND","IF","IGNORE","IN","INDEX","INFILE","INNER","INOUT","INSENSITIVE","INSERT","IN","_INTERNAL_DYNAMIC_TYPECAST","INTERSECT","INTERVAL","INTO","ITERATE","JOIN","KEY","KEYS","KILL","LEADING","LEAVE","LEFT","LIKE","LIMIT","LINES","LOAD","LOCALTIME","LOCALTIMESTAMP","LOCK","LOOP","LOW_PRIORITY","MATCH","MAXVALUE","MINUS","MINUTE_MICROSECOND","MINUTE_SECOND","MOD","MODIFIES","NATURAL","NO_QUERY_REWRITE","NOT","NO_WRITE_TO_BINLOG","NO_QUERY_REWRITE","NULL","ON","OPTIMIZE","OPTION","OPTIONALLY","OR","ORDER","OUT","OUTER","OUTFILE","OVER","PRIMARY","PROCEDURE","PURGE","RANGE","READ","READS","REFERENCES","REGEXP","RELEASE","RENAME","REPEAT","REPLACE","REQUIRE","RESTRICT","RETURN","REVOKE","RIGHT","RIGHT_ANTI_JOIN","RIGHT_SEMI_JOIN","RIGHT_STRAIGHT_JOIN","RLIKE","SCHEMA","SCHEMAS","SECOND_MICROSECOND","SELECT","SEMI_JOIN","SENSITIVE","SEPARATOR","SET","SHOW","SIGNAL","SPATIAL","SPECIFIC","SQL","SQL_BIG_RESULT","SQL_BUFFER_RESULT","SQL_CACHE","SQL_CALC_FOUND_ROWS","SQLEXCEPTION","SQL_NO_CACHE","SQL_NO_LOGGING","SQL_SMALL_RESULT","SQLSTATE","SQLWARNING","STRAIGHT_JOIN","TABLE","TERMINATED","THEN","TO","TRAILING","TRIGGER","TRUE","UNBOUNDED","UNDO","UNION","UNIQUE","UNLOCK","UPDATE","USAGE","USE","USING","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","_UTF8","VALUES","WHEN","WHERE","WHILE","WINDOW","WITH","WITHIN","WRITE","XOR","YEAR_MONTH","ZEROFILL"],MA=["BIGINT","BINARY","BIT","BLOB","CHAR","CHARACTER","DATETIME","DEC","DECIMAL","DOUBLE PRECISION","DOUBLE","ENUM","FIXED","FLOAT","FLOAT4","FLOAT8","INT","INT1","INT2","INT3","INT4","INT8","INTEGER","LONG","LONGBLOB","LONGTEXT","MEDIUMBLOB","MEDIUMINT","MEDIUMTEXT","MIDDLEINT","NATIONAL CHAR","NATIONAL VARCHAR","NUMERIC","PRECISION","REAL","SMALLINT","TEXT","TIME","TIMESTAMP","TINYBLOB","TINYINT","TINYTEXT","UNSIGNED","VARBINARY","VARCHAR","VARCHARACTER","YEAR"],hA=["ABS","ACOS","ADDDATE","ADDTIME","AES_DECRYPT","AES_ENCRYPT","ANY_VALUE","APPROX_COUNT_DISTINCT","APPROX_COUNT_DISTINCT_ACCUMULATE","APPROX_COUNT_DISTINCT_COMBINE","APPROX_COUNT_DISTINCT_ESTIMATE","APPROX_GEOGRAPHY_INTERSECTS","APPROX_PERCENTILE","ASCII","ASIN","ATAN","ATAN2","AVG","BIN","BINARY","BIT_AND","BIT_COUNT","BIT_OR","BIT_XOR","CAST","CEIL","CEILING","CHAR","CHARACTER_LENGTH","CHAR_LENGTH","CHARSET","COALESCE","COERCIBILITY","COLLATION","COLLECT","CONCAT","CONCAT_WS","CONNECTION_ID","CONV","CONVERT","CONVERT_TZ","COS","COT","COUNT","CUME_DIST","CURDATE","CURRENT_DATE","CURRENT_ROLE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURTIME","DATABASE","DATE","DATE_ADD","DATEDIFF","DATE_FORMAT","DATE_SUB","DATE_TRUNC","DAY","DAYNAME","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","DECODE","DEFAULT","DEGREES","DENSE_RANK","DIV","DOT_PRODUCT","ELT","EUCLIDEAN_DISTANCE","EXP","EXTRACT","FIELD","FIRST","FIRST_VALUE","FLOOR","FORMAT","FOUND_ROWS","FROM_BASE64","FROM_DAYS","FROM_UNIXTIME","GEOGRAPHY_AREA","GEOGRAPHY_CONTAINS","GEOGRAPHY_DISTANCE","GEOGRAPHY_INTERSECTS","GEOGRAPHY_LATITUDE","GEOGRAPHY_LENGTH","GEOGRAPHY_LONGITUDE","GEOGRAPHY_POINT","GEOGRAPHY_WITHIN_DISTANCE","GEOMETRY_AREA","GEOMETRY_CONTAINS","GEOMETRY_DISTANCE","GEOMETRY_FILTER","GEOMETRY_INTERSECTS","GEOMETRY_LENGTH","GEOMETRY_POINT","GEOMETRY_WITHIN_DISTANCE","GEOMETRY_X","GEOMETRY_Y","GREATEST","GROUPING","GROUP_CONCAT","HEX","HIGHLIGHT","HOUR","ICU_VERSION","IF","IFNULL","INET_ATON","INET_NTOA","INET6_ATON","INET6_NTOA","INITCAP","INSERT","INSTR","INTERVAL","IS","IS NULL","JSON_AGG","JSON_ARRAY_CONTAINS_DOUBLE","JSON_ARRAY_CONTAINS_JSON","JSON_ARRAY_CONTAINS_STRING","JSON_ARRAY_PUSH_DOUBLE","JSON_ARRAY_PUSH_JSON","JSON_ARRAY_PUSH_STRING","JSON_DELETE_KEY","JSON_EXTRACT_DOUBLE","JSON_EXTRACT_JSON","JSON_EXTRACT_STRING","JSON_EXTRACT_BIGINT","JSON_GET_TYPE","JSON_LENGTH","JSON_SET_DOUBLE","JSON_SET_JSON","JSON_SET_STRING","JSON_SPLICE_DOUBLE","JSON_SPLICE_JSON","JSON_SPLICE_STRING","LAG","LAST_DAY","LAST_VALUE","LCASE","LEAD","LEAST","LEFT","LENGTH","LIKE","LN","LOCALTIME","LOCALTIMESTAMP","LOCATE","LOG","LOG10","LOG2","LPAD","LTRIM","MATCH","MAX","MD5","MEDIAN","MICROSECOND","MIN","MINUTE","MOD","MONTH","MONTHNAME","MONTHS_BETWEEN","NOT","NOW","NTH_VALUE","NTILE","NULLIF","OCTET_LENGTH","PERCENT_RANK","PERCENTILE_CONT","PERCENTILE_DISC","PI","PIVOT","POSITION","POW","POWER","QUARTER","QUOTE","RADIANS","RAND","RANK","REGEXP","REPEAT","REPLACE","REVERSE","RIGHT","RLIKE","ROUND","ROW_COUNT","ROW_NUMBER","RPAD","RTRIM","SCALAR","SCHEMA","SEC_TO_TIME","SHA1","SHA2","SIGMOID","SIGN","SIN","SLEEP","SPLIT","SOUNDEX","SOUNDS LIKE","SOURCE_POS_WAIT","SPACE","SQRT","STDDEV","STDDEV_POP","STDDEV_SAMP","STR_TO_DATE","SUBDATE","SUBSTR","SUBSTRING","SUBSTRING_INDEX","SUM","SYS_GUID","TAN","TIME","TIMEDIFF","TIME_BUCKET","TIME_FORMAT","TIMESTAMP","TIMESTAMPADD","TIMESTAMPDIFF","TIME_TO_SEC","TO_BASE64","TO_CHAR","TO_DAYS","TO_JSON","TO_NUMBER","TO_SECONDS","TO_TIMESTAMP","TRIM","TRUNC","TRUNCATE","UCASE","UNHEX","UNIX_TIMESTAMP","UPDATEXML","UPPER","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","UUID","VALUES","VARIANCE","VAR_POP","VAR_SAMP","VECTOR_SUB","VERSION","WEEK","WEEKDAY","WEEKOFYEAR","YEAR"],fA=N(["SELECT [ALL | DISTINCT | DISTINCTROW]"]),mA=N(["WITH","FROM","WHERE","GROUP BY","HAVING","PARTITION BY","ORDER BY","LIMIT","OFFSET","INSERT [IGNORE] [INTO]","VALUES","REPLACE [INTO]","ON DUPLICATE KEY UPDATE","SET","CREATE [OR REPLACE] [TEMPORARY] PROCEDURE [IF NOT EXISTS]","CREATE [OR REPLACE] [EXTERNAL] FUNCTION"]),dt=N(["CREATE [ROWSTORE] [REFERENCE | TEMPORARY | GLOBAL TEMPORARY] TABLE [IF NOT EXISTS]"]),lE=N(["CREATE VIEW","UPDATE","DELETE [FROM]","DROP [TEMPORARY] TABLE [IF EXISTS]","ALTER [ONLINE] TABLE","ADD [COLUMN]","ADD [UNIQUE] {INDEX | KEY}","DROP [COLUMN]","MODIFY [COLUMN]","CHANGE","RENAME [TO | AS]","TRUNCATE [TABLE]","ADD AGGREGATOR","ADD LEAF","AGGREGATOR SET AS MASTER","ALTER DATABASE","ALTER PIPELINE","ALTER RESOURCE POOL","ALTER USER","ALTER VIEW","ANALYZE TABLE","ATTACH DATABASE","ATTACH LEAF","ATTACH LEAF ALL","BACKUP DATABASE","BINLOG","BOOTSTRAP AGGREGATOR","CACHE INDEX","CALL","CHANGE","CHANGE MASTER TO","CHANGE REPLICATION FILTER","CHANGE REPLICATION SOURCE TO","CHECK BLOB CHECKSUM","CHECK TABLE","CHECKSUM TABLE","CLEAR ORPHAN DATABASES","CLONE","COMMIT","CREATE DATABASE","CREATE GROUP","CREATE INDEX","CREATE LINK","CREATE MILESTONE","CREATE PIPELINE","CREATE RESOURCE POOL","CREATE ROLE","CREATE USER","DEALLOCATE PREPARE","DESCRIBE","DETACH DATABASE","DETACH PIPELINE","DROP DATABASE","DROP FUNCTION","DROP INDEX","DROP LINK","DROP PIPELINE","DROP PROCEDURE","DROP RESOURCE POOL","DROP ROLE","DROP USER","DROP VIEW","EXECUTE","EXPLAIN","FLUSH","FORCE","GRANT","HANDLER","HELP","KILL CONNECTION","KILLALL QUERIES","LOAD DATA","LOAD INDEX INTO CACHE","LOAD XML","LOCK INSTANCE FOR BACKUP","LOCK TABLES","MASTER_POS_WAIT","OPTIMIZE TABLE","PREPARE","PURGE BINARY LOGS","REBALANCE PARTITIONS","RELEASE SAVEPOINT","REMOVE AGGREGATOR","REMOVE LEAF","REPAIR TABLE","REPLACE","REPLICATE DATABASE","RESET","RESET MASTER","RESET PERSIST","RESET REPLICA","RESET SLAVE","RESTART","RESTORE DATABASE","RESTORE REDUNDANCY","REVOKE","ROLLBACK","ROLLBACK TO SAVEPOINT","SAVEPOINT","SET CHARACTER SET","SET DEFAULT ROLE","SET NAMES","SET PASSWORD","SET RESOURCE GROUP","SET ROLE","SET TRANSACTION","SHOW","SHOW CHARACTER SET","SHOW COLLATION","SHOW COLUMNS","SHOW CREATE DATABASE","SHOW CREATE FUNCTION","SHOW CREATE PIPELINE","SHOW CREATE PROCEDURE","SHOW CREATE TABLE","SHOW CREATE USER","SHOW CREATE VIEW","SHOW DATABASES","SHOW ENGINE","SHOW ENGINES","SHOW ERRORS","SHOW FUNCTION CODE","SHOW FUNCTION STATUS","SHOW GRANTS","SHOW INDEX","SHOW MASTER STATUS","SHOW OPEN TABLES","SHOW PLUGINS","SHOW PRIVILEGES","SHOW PROCEDURE CODE","SHOW PROCEDURE STATUS","SHOW PROCESSLIST","SHOW PROFILE","SHOW PROFILES","SHOW RELAYLOG EVENTS","SHOW REPLICA STATUS","SHOW REPLICAS","SHOW SLAVE","SHOW SLAVE HOSTS","SHOW STATUS","SHOW TABLE STATUS","SHOW TABLES","SHOW VARIABLES","SHOW WARNINGS","SHUTDOWN","SNAPSHOT DATABASE","SOURCE_POS_WAIT","START GROUP_REPLICATION","START PIPELINE","START REPLICA","START SLAVE","START TRANSACTION","STOP GROUP_REPLICATION","STOP PIPELINE","STOP REPLICA","STOP REPLICATING","STOP SLAVE","TEST PIPELINE","UNLOCK INSTANCE","UNLOCK TABLES","USE","XA","ITERATE","LEAVE","LOOP","REPEAT","RETURN","WHILE"]),UA=N(["UNION [ALL | DISTINCT]","EXCEPT","INTERSECT","MINUS"]),xA=N(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL {LEFT | RIGHT} [OUTER] JOIN","STRAIGHT_JOIN"]),yA=N(["ON DELETE","ON UPDATE","CHARACTER SET","{ROWS | RANGE} BETWEEN","IDENTIFIED BY"]),gA=N([]),GA={name:"singlestoredb",tokenizerOptions:{reservedSelect:fA,reservedClauses:[...mA,...dt,...lE],reservedSetOperations:UA,reservedJoins:xA,reservedKeywordPhrases:yA,reservedDataTypePhrases:gA,reservedKeywords:PA,reservedDataTypes:MA,reservedFunctionNames:hA,stringTypes:['""-qq-bs',"''-qq-bs",{quote:"''-raw",prefixes:["B","X"],requirePrefix:!0}],identTypes:["``"],identChars:{first:"$",rest:"$",allowFirstCharNumber:!0},variableTypes:[{regex:"@@?[A-Za-z0-9_$]+"},{quote:"``",prefixes:["@"],requirePrefix:!0}],lineCommentTypes:["--","#"],operators:[":=","&","|","^","~","<<",">>","<=>","&&","||","::","::$","::%",":>","!:>","*.*"],postProcess:we},formatOptions:{alwaysDenseOperators:["::","::$","::%"],onelineClauses:[...dt,...lE],tabularOnelineClauses:lE}},BA=["ABS","ACOS","ACOSH","ADD_MONTHS","ALL_USER_NAMES","ANY_VALUE","APPROX_COUNT_DISTINCT","APPROX_PERCENTILE","APPROX_PERCENTILE_ACCUMULATE","APPROX_PERCENTILE_COMBINE","APPROX_PERCENTILE_ESTIMATE","APPROX_TOP_K","APPROX_TOP_K_ACCUMULATE","APPROX_TOP_K_COMBINE","APPROX_TOP_K_ESTIMATE","APPROXIMATE_JACCARD_INDEX","APPROXIMATE_SIMILARITY","ARRAY_AGG","ARRAY_APPEND","ARRAY_CAT","ARRAY_COMPACT","ARRAY_CONSTRUCT","ARRAY_CONSTRUCT_COMPACT","ARRAY_CONTAINS","ARRAY_INSERT","ARRAY_INTERSECTION","ARRAY_POSITION","ARRAY_PREPEND","ARRAY_SIZE","ARRAY_SLICE","ARRAY_TO_STRING","ARRAY_UNION_AGG","ARRAY_UNIQUE_AGG","ARRAYS_OVERLAP","AS_ARRAY","AS_BINARY","AS_BOOLEAN","AS_CHAR","AS_VARCHAR","AS_DATE","AS_DECIMAL","AS_NUMBER","AS_DOUBLE","AS_REAL","AS_INTEGER","AS_OBJECT","AS_TIME","AS_TIMESTAMP_LTZ","AS_TIMESTAMP_NTZ","AS_TIMESTAMP_TZ","ASCII","ASIN","ASINH","ATAN","ATAN2","ATANH","AUTO_REFRESH_REGISTRATION_HISTORY","AUTOMATIC_CLUSTERING_HISTORY","AVG","BASE64_DECODE_BINARY","BASE64_DECODE_STRING","BASE64_ENCODE","BIT_LENGTH","BITAND","BITAND_AGG","BITMAP_BIT_POSITION","BITMAP_BUCKET_NUMBER","BITMAP_CONSTRUCT_AGG","BITMAP_COUNT","BITMAP_OR_AGG","BITNOT","BITOR","BITOR_AGG","BITSHIFTLEFT","BITSHIFTRIGHT","BITXOR","BITXOR_AGG","BOOLAND","BOOLAND_AGG","BOOLNOT","BOOLOR","BOOLOR_AGG","BOOLXOR","BOOLXOR_AGG","BUILD_SCOPED_FILE_URL","BUILD_STAGE_FILE_URL","CASE","CAST","CBRT","CEIL","CHARINDEX","CHECK_JSON","CHECK_XML","CHR","CHAR","COALESCE","COLLATE","COLLATION","COMPLETE_TASK_GRAPHS","COMPRESS","CONCAT","CONCAT_WS","CONDITIONAL_CHANGE_EVENT","CONDITIONAL_TRUE_EVENT","CONTAINS","CONVERT_TIMEZONE","COPY_HISTORY","CORR","COS","COSH","COT","COUNT","COUNT_IF","COVAR_POP","COVAR_SAMP","CUME_DIST","CURRENT_ACCOUNT","CURRENT_AVAILABLE_ROLES","CURRENT_CLIENT","CURRENT_DATABASE","CURRENT_DATE","CURRENT_IP_ADDRESS","CURRENT_REGION","CURRENT_ROLE","CURRENT_SCHEMA","CURRENT_SCHEMAS","CURRENT_SECONDARY_ROLES","CURRENT_SESSION","CURRENT_STATEMENT","CURRENT_TASK_GRAPHS","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_TRANSACTION","CURRENT_USER","CURRENT_VERSION","CURRENT_WAREHOUSE","DATA_TRANSFER_HISTORY","DATABASE_REFRESH_HISTORY","DATABASE_REFRESH_PROGRESS","DATABASE_REFRESH_PROGRESS_BY_JOB","DATABASE_STORAGE_USAGE_HISTORY","DATE_FROM_PARTS","DATE_PART","DATE_TRUNC","DATEADD","DATEDIFF","DAYNAME","DECODE","DECOMPRESS_BINARY","DECOMPRESS_STRING","DECRYPT","DECRYPT_RAW","DEGREES","DENSE_RANK","DIV0","EDITDISTANCE","ENCRYPT","ENCRYPT_RAW","ENDSWITH","EQUAL_NULL","EXP","EXPLAIN_JSON","EXTERNAL_FUNCTIONS_HISTORY","EXTERNAL_TABLE_FILES","EXTERNAL_TABLE_FILE_REGISTRATION_HISTORY","EXTRACT","EXTRACT_SEMANTIC_CATEGORIES","FACTORIAL","FILTER","FIRST_VALUE","FLATTEN","FLOOR","GENERATE_COLUMN_DESCRIPTION","GENERATOR","GET","GET_ABSOLUTE_PATH","GET_DDL","GET_IGNORE_CASE","GET_OBJECT_REFERENCES","GET_PATH","GET_PRESIGNED_URL","GET_RELATIVE_PATH","GET_STAGE_LOCATION","GETBIT","GREATEST","GREATEST_IGNORE_NULLS","GROUPING","GROUPING_ID","HASH","HASH_AGG","HAVERSINE","HEX_DECODE_BINARY","HEX_DECODE_STRING","HEX_ENCODE","HLL","HLL_ACCUMULATE","HLL_COMBINE","HLL_ESTIMATE","HLL_EXPORT","HLL_IMPORT","HOUR","MINUTE","SECOND","IDENTIFIER","IFF","IFNULL","ILIKE","ILIKE ANY","INFER_SCHEMA","INITCAP","INSERT","INVOKER_ROLE","INVOKER_SHARE","IS_ARRAY","IS_BINARY","IS_BOOLEAN","IS_CHAR","IS_VARCHAR","IS_DATE","IS_DATE_VALUE","IS_DECIMAL","IS_DOUBLE","IS_REAL","IS_GRANTED_TO_INVOKER_ROLE","IS_INTEGER","IS_NULL_VALUE","IS_OBJECT","IS_ROLE_IN_SESSION","IS_TIME","IS_TIMESTAMP_LTZ","IS_TIMESTAMP_NTZ","IS_TIMESTAMP_TZ","JAROWINKLER_SIMILARITY","JSON_EXTRACT_PATH_TEXT","KURTOSIS","LAG","LAST_DAY","LAST_QUERY_ID","LAST_TRANSACTION","LAST_VALUE","LEAD","LEAST","LEFT","LENGTH","LEN","LIKE","LIKE ALL","LIKE ANY","LISTAGG","LN","LOCALTIME","LOCALTIMESTAMP","LOG","LOGIN_HISTORY","LOGIN_HISTORY_BY_USER","LOWER","LPAD","LTRIM","MATERIALIZED_VIEW_REFRESH_HISTORY","MD5","MD5_HEX","MD5_BINARY","MD5_NUMBER — Obsoleted","MD5_NUMBER_LOWER64","MD5_NUMBER_UPPER64","MEDIAN","MIN","MAX","MINHASH","MINHASH_COMBINE","MOD","MODE","MONTHNAME","MONTHS_BETWEEN","NEXT_DAY","NORMAL","NTH_VALUE","NTILE","NULLIF","NULLIFZERO","NVL","NVL2","OBJECT_AGG","OBJECT_CONSTRUCT","OBJECT_CONSTRUCT_KEEP_NULL","OBJECT_DELETE","OBJECT_INSERT","OBJECT_KEYS","OBJECT_PICK","OCTET_LENGTH","PARSE_IP","PARSE_JSON","PARSE_URL","PARSE_XML","PERCENT_RANK","PERCENTILE_CONT","PERCENTILE_DISC","PI","PIPE_USAGE_HISTORY","POLICY_CONTEXT","POLICY_REFERENCES","POSITION","POW","POWER","PREVIOUS_DAY","QUERY_ACCELERATION_HISTORY","QUERY_HISTORY","QUERY_HISTORY_BY_SESSION","QUERY_HISTORY_BY_USER","QUERY_HISTORY_BY_WAREHOUSE","RADIANS","RANDOM","RANDSTR","RANK","RATIO_TO_REPORT","REGEXP","REGEXP_COUNT","REGEXP_INSTR","REGEXP_LIKE","REGEXP_REPLACE","REGEXP_SUBSTR","REGEXP_SUBSTR_ALL","REGR_AVGX","REGR_AVGY","REGR_COUNT","REGR_INTERCEPT","REGR_R2","REGR_SLOPE","REGR_SXX","REGR_SXY","REGR_SYY","REGR_VALX","REGR_VALY","REPEAT","REPLACE","REPLICATION_GROUP_REFRESH_HISTORY","REPLICATION_GROUP_REFRESH_PROGRESS","REPLICATION_GROUP_REFRESH_PROGRESS_BY_JOB","REPLICATION_GROUP_USAGE_HISTORY","REPLICATION_USAGE_HISTORY","REST_EVENT_HISTORY","RESULT_SCAN","REVERSE","RIGHT","RLIKE","ROUND","ROW_NUMBER","RPAD","RTRIM","RTRIMMED_LENGTH","SEARCH_OPTIMIZATION_HISTORY","SEQ1","SEQ2","SEQ4","SEQ8","SERVERLESS_TASK_HISTORY","SHA1","SHA1_HEX","SHA1_BINARY","SHA2","SHA2_HEX","SHA2_BINARY","SIGN","SIN","SINH","SKEW","SOUNDEX","SPACE","SPLIT","SPLIT_PART","SPLIT_TO_TABLE","SQRT","SQUARE","ST_AREA","ST_ASEWKB","ST_ASEWKT","ST_ASGEOJSON","ST_ASWKB","ST_ASBINARY","ST_ASWKT","ST_ASTEXT","ST_AZIMUTH","ST_CENTROID","ST_COLLECT","ST_CONTAINS","ST_COVEREDBY","ST_COVERS","ST_DIFFERENCE","ST_DIMENSION","ST_DISJOINT","ST_DISTANCE","ST_DWITHIN","ST_ENDPOINT","ST_ENVELOPE","ST_GEOGFROMGEOHASH","ST_GEOGPOINTFROMGEOHASH","ST_GEOGRAPHYFROMWKB","ST_GEOGRAPHYFROMWKT","ST_GEOHASH","ST_GEOMETRYFROMWKB","ST_GEOMETRYFROMWKT","ST_HAUSDORFFDISTANCE","ST_INTERSECTION","ST_INTERSECTS","ST_LENGTH","ST_MAKEGEOMPOINT","ST_GEOM_POINT","ST_MAKELINE","ST_MAKEPOINT","ST_POINT","ST_MAKEPOLYGON","ST_POLYGON","ST_NPOINTS","ST_NUMPOINTS","ST_PERIMETER","ST_POINTN","ST_SETSRID","ST_SIMPLIFY","ST_SRID","ST_STARTPOINT","ST_SYMDIFFERENCE","ST_UNION","ST_WITHIN","ST_X","ST_XMAX","ST_XMIN","ST_Y","ST_YMAX","ST_YMIN","STAGE_DIRECTORY_FILE_REGISTRATION_HISTORY","STAGE_STORAGE_USAGE_HISTORY","STARTSWITH","STDDEV","STDDEV_POP","STDDEV_SAMP","STRIP_NULL_VALUE","STRTOK","STRTOK_SPLIT_TO_TABLE","STRTOK_TO_ARRAY","SUBSTR","SUBSTRING","SUM","SYSDATE","SYSTEM$ABORT_SESSION","SYSTEM$ABORT_TRANSACTION","SYSTEM$AUTHORIZE_PRIVATELINK","SYSTEM$AUTHORIZE_STAGE_PRIVATELINK_ACCESS","SYSTEM$BEHAVIOR_CHANGE_BUNDLE_STATUS","SYSTEM$CANCEL_ALL_QUERIES","SYSTEM$CANCEL_QUERY","SYSTEM$CLUSTERING_DEPTH","SYSTEM$CLUSTERING_INFORMATION","SYSTEM$CLUSTERING_RATIO ","SYSTEM$CURRENT_USER_TASK_NAME","SYSTEM$DATABASE_REFRESH_HISTORY ","SYSTEM$DATABASE_REFRESH_PROGRESS","SYSTEM$DATABASE_REFRESH_PROGRESS_BY_JOB ","SYSTEM$DISABLE_BEHAVIOR_CHANGE_BUNDLE","SYSTEM$DISABLE_DATABASE_REPLICATION","SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE","SYSTEM$ESTIMATE_QUERY_ACCELERATION","SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS","SYSTEM$EXPLAIN_JSON_TO_TEXT","SYSTEM$EXPLAIN_PLAN_JSON","SYSTEM$EXTERNAL_TABLE_PIPE_STATUS","SYSTEM$GENERATE_SAML_CSR","SYSTEM$GENERATE_SCIM_ACCESS_TOKEN","SYSTEM$GET_AWS_SNS_IAM_POLICY","SYSTEM$GET_PREDECESSOR_RETURN_VALUE","SYSTEM$GET_PRIVATELINK","SYSTEM$GET_PRIVATELINK_AUTHORIZED_ENDPOINTS","SYSTEM$GET_PRIVATELINK_CONFIG","SYSTEM$GET_SNOWFLAKE_PLATFORM_INFO","SYSTEM$GET_TAG","SYSTEM$GET_TAG_ALLOWED_VALUES","SYSTEM$GET_TAG_ON_CURRENT_COLUMN","SYSTEM$GET_TAG_ON_CURRENT_TABLE","SYSTEM$GLOBAL_ACCOUNT_SET_PARAMETER","SYSTEM$LAST_CHANGE_COMMIT_TIME","SYSTEM$LINK_ACCOUNT_OBJECTS_BY_NAME","SYSTEM$MIGRATE_SAML_IDP_REGISTRATION","SYSTEM$PIPE_FORCE_RESUME","SYSTEM$PIPE_STATUS","SYSTEM$REVOKE_PRIVATELINK","SYSTEM$REVOKE_STAGE_PRIVATELINK_ACCESS","SYSTEM$SET_RETURN_VALUE","SYSTEM$SHOW_OAUTH_CLIENT_SECRETS","SYSTEM$STREAM_GET_TABLE_TIMESTAMP","SYSTEM$STREAM_HAS_DATA","SYSTEM$TASK_DEPENDENTS_ENABLE","SYSTEM$TYPEOF","SYSTEM$USER_TASK_CANCEL_ONGOING_EXECUTIONS","SYSTEM$VERIFY_EXTERNAL_OAUTH_TOKEN","SYSTEM$WAIT","SYSTEM$WHITELIST","SYSTEM$WHITELIST_PRIVATELINK","TAG_REFERENCES","TAG_REFERENCES_ALL_COLUMNS","TAG_REFERENCES_WITH_LINEAGE","TAN","TANH","TASK_DEPENDENTS","TASK_HISTORY","TIME_FROM_PARTS","TIME_SLICE","TIMEADD","TIMEDIFF","TIMESTAMP_FROM_PARTS","TIMESTAMPADD","TIMESTAMPDIFF","TO_ARRAY","TO_BINARY","TO_BOOLEAN","TO_CHAR","TO_VARCHAR","TO_DATE","DATE","TO_DECIMAL","TO_NUMBER","TO_NUMERIC","TO_DOUBLE","TO_GEOGRAPHY","TO_GEOMETRY","TO_JSON","TO_OBJECT","TO_TIME","TIME","TO_TIMESTAMP","TO_TIMESTAMP_LTZ","TO_TIMESTAMP_NTZ","TO_TIMESTAMP_TZ","TO_VARIANT","TO_XML","TRANSLATE","TRIM","TRUNCATE","TRUNC","TRUNC","TRY_BASE64_DECODE_BINARY","TRY_BASE64_DECODE_STRING","TRY_CAST","TRY_HEX_DECODE_BINARY","TRY_HEX_DECODE_STRING","TRY_PARSE_JSON","TRY_TO_BINARY","TRY_TO_BOOLEAN","TRY_TO_DATE","TRY_TO_DECIMAL","TRY_TO_NUMBER","TRY_TO_NUMERIC","TRY_TO_DOUBLE","TRY_TO_GEOGRAPHY","TRY_TO_GEOMETRY","TRY_TO_TIME","TRY_TO_TIMESTAMP","TRY_TO_TIMESTAMP_LTZ","TRY_TO_TIMESTAMP_NTZ","TRY_TO_TIMESTAMP_TZ","TYPEOF","UNICODE","UNIFORM","UPPER","UUID_STRING","VALIDATE","VALIDATE_PIPE_LOAD","VAR_POP","VAR_SAMP","VARIANCE","VARIANCE_SAMP","VARIANCE_POP","WAREHOUSE_LOAD_HISTORY","WAREHOUSE_METERING_HISTORY","WIDTH_BUCKET","XMLGET","YEAR","YEAROFWEEK","YEAROFWEEKISO","DAY","DAYOFMONTH","DAYOFWEEK","DAYOFWEEKISO","DAYOFYEAR","WEEK","WEEK","WEEKOFYEAR","WEEKISO","MONTH","QUARTER","ZEROIFNULL","ZIPF"],HA=["ACCOUNT","ALL","ALTER","AND","ANY","AS","BETWEEN","BY","CASE","CAST","CHECK","COLUMN","CONNECT","CONNECTION","CONSTRAINT","CREATE","CROSS","CURRENT","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","DATABASE","DELETE","DISTINCT","DROP","ELSE","EXISTS","FALSE","FOLLOWING","FOR","FROM","FULL","GRANT","GROUP","GSCLUSTER","HAVING","ILIKE","IN","INCREMENT","INNER","INSERT","INTERSECT","INTO","IS","ISSUE","JOIN","LATERAL","LEFT","LIKE","LOCALTIME","LOCALTIMESTAMP","MINUS","NATURAL","NOT","NULL","OF","ON","OR","ORDER","ORGANIZATION","QUALIFY","REGEXP","REVOKE","RIGHT","RLIKE","ROW","ROWS","SAMPLE","SCHEMA","SELECT","SET","SOME","START","TABLE","TABLESAMPLE","THEN","TO","TRIGGER","TRUE","TRY_CAST","UNION","UNIQUE","UPDATE","USING","VALUES","VIEW","WHEN","WHENEVER","WHERE","WITH","COMMENT"],FA=["NUMBER","DECIMAL","NUMERIC","INT","INTEGER","BIGINT","SMALLINT","TINYINT","BYTEINT","FLOAT","FLOAT4","FLOAT8","DOUBLE","DOUBLE PRECISION","REAL","VARCHAR","CHAR","CHARACTER","STRING","TEXT","BINARY","VARBINARY","BOOLEAN","DATE","DATETIME","TIME","TIMESTAMP","TIMESTAMP_LTZ","TIMESTAMP_NTZ","TIMESTAMP","TIMESTAMP_TZ","VARIANT","OBJECT","ARRAY","GEOGRAPHY","GEOMETRY"],bA=N(["SELECT [ALL | DISTINCT]"]),YA=N(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY","HAVING","PARTITION BY","ORDER BY","QUALIFY","LIMIT","OFFSET","FETCH [FIRST | NEXT]","INSERT [OVERWRITE] [ALL INTO | INTO | ALL | FIRST]","{THEN | ELSE} INTO","VALUES","SET","CLUSTER BY","[WITH] {MASKING POLICY | TAG | ROW ACCESS POLICY}","COPY GRANTS","USING TEMPLATE","MERGE INTO","WHEN MATCHED [AND]","THEN {UPDATE SET | DELETE}","WHEN NOT MATCHED THEN INSERT"]),_t=N(["CREATE [OR REPLACE] [VOLATILE] TABLE [IF NOT EXISTS]","CREATE [OR REPLACE] [LOCAL | GLOBAL] {TEMP|TEMPORARY} TABLE [IF NOT EXISTS]"]),NE=N(["CREATE [OR REPLACE] [SECURE] [RECURSIVE] VIEW [IF NOT EXISTS]","UPDATE","DELETE FROM","DROP TABLE [IF EXISTS]","ALTER TABLE [IF EXISTS]","RENAME TO","SWAP WITH","[SUSPEND | RESUME] RECLUSTER","DROP CLUSTERING KEY","ADD [COLUMN]","RENAME COLUMN","{ALTER | MODIFY} [COLUMN]","DROP [COLUMN]","{ADD | ALTER | MODIFY | DROP} [CONSTRAINT]","RENAME CONSTRAINT","{ADD | DROP} SEARCH OPTIMIZATION","{SET | UNSET} TAG","{ADD | DROP} ROW ACCESS POLICY","DROP ALL ROW ACCESS POLICIES","{SET | DROP} DEFAULT","{SET | DROP} NOT NULL","SET DATA TYPE","UNSET COMMENT","{SET | UNSET} MASKING POLICY","TRUNCATE [TABLE] [IF EXISTS]","ALTER ACCOUNT","ALTER API INTEGRATION","ALTER CONNECTION","ALTER DATABASE","ALTER EXTERNAL TABLE","ALTER FAILOVER GROUP","ALTER FILE FORMAT","ALTER FUNCTION","ALTER INTEGRATION","ALTER MASKING POLICY","ALTER MATERIALIZED VIEW","ALTER NETWORK POLICY","ALTER NOTIFICATION INTEGRATION","ALTER PIPE","ALTER PROCEDURE","ALTER REPLICATION GROUP","ALTER RESOURCE MONITOR","ALTER ROLE","ALTER ROW ACCESS POLICY","ALTER SCHEMA","ALTER SECURITY INTEGRATION","ALTER SEQUENCE","ALTER SESSION","ALTER SESSION POLICY","ALTER SHARE","ALTER STAGE","ALTER STORAGE INTEGRATION","ALTER STREAM","ALTER TAG","ALTER TASK","ALTER USER","ALTER VIEW","ALTER WAREHOUSE","BEGIN","CALL","COMMIT","COPY INTO","CREATE ACCOUNT","CREATE API INTEGRATION","CREATE CONNECTION","CREATE DATABASE","CREATE EXTERNAL FUNCTION","CREATE EXTERNAL TABLE","CREATE FAILOVER GROUP","CREATE FILE FORMAT","CREATE FUNCTION","CREATE INTEGRATION","CREATE MANAGED ACCOUNT","CREATE MASKING POLICY","CREATE MATERIALIZED VIEW","CREATE NETWORK POLICY","CREATE NOTIFICATION INTEGRATION","CREATE PIPE","CREATE PROCEDURE","CREATE REPLICATION GROUP","CREATE RESOURCE MONITOR","CREATE ROLE","CREATE ROW ACCESS POLICY","CREATE SCHEMA","CREATE SECURITY INTEGRATION","CREATE SEQUENCE","CREATE SESSION POLICY","CREATE SHARE","CREATE STAGE","CREATE STORAGE INTEGRATION","CREATE STREAM","CREATE TAG","CREATE TASK","CREATE USER","CREATE WAREHOUSE","DELETE","DESCRIBE DATABASE","DESCRIBE EXTERNAL TABLE","DESCRIBE FILE FORMAT","DESCRIBE FUNCTION","DESCRIBE INTEGRATION","DESCRIBE MASKING POLICY","DESCRIBE MATERIALIZED VIEW","DESCRIBE NETWORK POLICY","DESCRIBE PIPE","DESCRIBE PROCEDURE","DESCRIBE RESULT","DESCRIBE ROW ACCESS POLICY","DESCRIBE SCHEMA","DESCRIBE SEQUENCE","DESCRIBE SESSION POLICY","DESCRIBE SHARE","DESCRIBE STAGE","DESCRIBE STREAM","DESCRIBE TABLE","DESCRIBE TASK","DESCRIBE TRANSACTION","DESCRIBE USER","DESCRIBE VIEW","DESCRIBE WAREHOUSE","DROP CONNECTION","DROP DATABASE","DROP EXTERNAL TABLE","DROP FAILOVER GROUP","DROP FILE FORMAT","DROP FUNCTION","DROP INTEGRATION","DROP MANAGED ACCOUNT","DROP MASKING POLICY","DROP MATERIALIZED VIEW","DROP NETWORK POLICY","DROP PIPE","DROP PROCEDURE","DROP REPLICATION GROUP","DROP RESOURCE MONITOR","DROP ROLE","DROP ROW ACCESS POLICY","DROP SCHEMA","DROP SEQUENCE","DROP SESSION POLICY","DROP SHARE","DROP STAGE","DROP STREAM","DROP TAG","DROP TASK","DROP USER","DROP VIEW","DROP WAREHOUSE","EXECUTE IMMEDIATE","EXECUTE TASK","EXPLAIN","GET","GRANT OWNERSHIP","GRANT ROLE","INSERT","LIST","MERGE","PUT","REMOVE","REVOKE ROLE","ROLLBACK","SHOW COLUMNS","SHOW CONNECTIONS","SHOW DATABASES","SHOW DATABASES IN FAILOVER GROUP","SHOW DATABASES IN REPLICATION GROUP","SHOW DELEGATED AUTHORIZATIONS","SHOW EXTERNAL FUNCTIONS","SHOW EXTERNAL TABLES","SHOW FAILOVER GROUPS","SHOW FILE FORMATS","SHOW FUNCTIONS","SHOW GLOBAL ACCOUNTS","SHOW GRANTS","SHOW INTEGRATIONS","SHOW LOCKS","SHOW MANAGED ACCOUNTS","SHOW MASKING POLICIES","SHOW MATERIALIZED VIEWS","SHOW NETWORK POLICIES","SHOW OBJECTS","SHOW ORGANIZATION ACCOUNTS","SHOW PARAMETERS","SHOW PIPES","SHOW PRIMARY KEYS","SHOW PROCEDURES","SHOW REGIONS","SHOW REPLICATION ACCOUNTS","SHOW REPLICATION DATABASES","SHOW REPLICATION GROUPS","SHOW RESOURCE MONITORS","SHOW ROLES","SHOW ROW ACCESS POLICIES","SHOW SCHEMAS","SHOW SEQUENCES","SHOW SESSION POLICIES","SHOW SHARES","SHOW SHARES IN FAILOVER GROUP","SHOW SHARES IN REPLICATION GROUP","SHOW STAGES","SHOW STREAMS","SHOW TABLES","SHOW TAGS","SHOW TASKS","SHOW TRANSACTIONS","SHOW USER FUNCTIONS","SHOW USERS","SHOW VARIABLES","SHOW VIEWS","SHOW WAREHOUSES","TRUNCATE MATERIALIZED VIEW","UNDROP DATABASE","UNDROP SCHEMA","UNDROP TABLE","UNDROP TAG","UNSET","USE DATABASE","USE ROLE","USE SCHEMA","USE SECONDARY ROLES","USE WAREHOUSE"]),vA=N(["UNION [ALL]","MINUS","EXCEPT","INTERSECT"]),VA=N(["[INNER] JOIN","[NATURAL] {LEFT | RIGHT | FULL} [OUTER] JOIN","{CROSS | NATURAL} JOIN"]),WA=N(["{ROWS | RANGE} BETWEEN","ON {UPDATE | DELETE} [SET NULL | SET DEFAULT]"]),XA=N([]),wA={name:"snowflake",tokenizerOptions:{reservedSelect:bA,reservedClauses:[...YA,..._t,...NE],reservedSetOperations:vA,reservedJoins:VA,reservedKeywordPhrases:WA,reservedDataTypePhrases:XA,reservedKeywords:HA,reservedDataTypes:FA,reservedFunctionNames:BA,stringTypes:["$$","''-qq-bs"],identTypes:['""-qq'],variableTypes:[{regex:"[$][1-9]\\d*"},{regex:"[$][_a-zA-Z][_a-zA-Z0-9$]*"}],extraParens:["[]"],identChars:{rest:"$"},lineCommentTypes:["--","//"],operators:["%","::","||","=>",":=","->"],propertyAccessOperators:[":"]},formatOptions:{alwaysDenseOperators:["::"],onelineClauses:[..._t,...NE],tabularOnelineClauses:NE}},KA=Object.freeze(Object.defineProperty({__proto__:null,bigquery:Ro,clickhouse:Do,db2:go,db2i:Xo,duckdb:zo,hive:iR,mariadb:dR,mysql:UR,n1ql:QR,plsql:si,postgresql:ci,redshift:hi,singlestoredb:GA,snowflake:wA,spark:Fi,sql:rA,sqlite:$i,tidb:vR,transactsql:pA,trino:OA},Symbol.toStringTag,{value:"Module"})),De=E=>E[E.length-1],rT=E=>E.sort((e,t)=>t.length-e.length||e.localeCompare(t)),Ge=E=>E.replace(/\s+/gu," "),cE=E=>/\n/.test(E),q=E=>E.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),Dt=/\s+/uy,ae=E=>new RegExp(`(?:${E})`,"uy"),jA=E=>E.split("").map(e=>/ /gu.test(e)?"\\s+":`[${e.toUpperCase()}${e.toLowerCase()}]`).join(""),kA=E=>E+"(?:-"+E+")*",$A=({prefixes:E,requirePrefix:e})=>`(?:${E.map(jA).join("|")}${e?"":"|"})`,JA=E=>new RegExp(`(?:${E.map(q).join("|")}).*?(?=\r
445
+ |\r|
446
+ |$)`,"uy"),ut=(E,e=[])=>{const t=E==="open"?0:1,n=["()",...e].map(r=>r[t]);return ae(n.map(q).join("|"))},pt=E=>ae(`${rT(E).map(q).join("|")}`),QA=({rest:E,dashes:e})=>E||e?`(?![${E||""}${e?"-":""}])`:"",te=(E,e={})=>{if(E.length===0)return/^\b$/u;const t=QA(e),n=rT(E).map(q).join("|").replace(/ /gu,"\\s+");return new RegExp(`(?:${n})${t}\\b`,"iuy")},LE=(E,e)=>{if(!E.length)return;const t=E.map(q).join("|");return ae(`(?:${t})(?:${e})`)},ZA=()=>{const E={"<":">","[":"]","(":")","{":"}"},e="{left}(?:(?!{right}').)*?{right}",t=Object.entries(E).map(([o,R])=>e.replace(/{left}/g,q(o)).replace(/{right}/g,q(R))),n=q(Object.keys(E).join(""));return`[Qq]'(?:${String.raw`(?<tag>[^\s${n}])(?:(?!\k<tag>').)*?\k<tag>`}|${t.join("|")})'`},Pt={"``":"(?:`[^`]*`)+","[]":String.raw`(?:\[[^\]]*\])(?:\][^\]]*\])*`,'""-qq':String.raw`(?:"[^"]*")+`,'""-bs':String.raw`(?:"[^"\\]*(?:\\.[^"\\]*)*")`,'""-qq-bs':String.raw`(?:"[^"\\]*(?:\\.[^"\\]*)*")+`,'""-raw':String.raw`(?:"[^"]*")`,"''-qq":String.raw`(?:'[^']*')+`,"''-bs":String.raw`(?:'[^'\\]*(?:\\.[^'\\]*)*')`,"''-qq-bs":String.raw`(?:'[^'\\]*(?:\\.[^'\\]*)*')+`,"''-raw":String.raw`(?:'[^']*')`,$$:String.raw`(?<tag>\$\w*\$)[\s\S]*?\k<tag>`,"'''..'''":String.raw`'''[^\\]*?(?:\\.[^\\]*?)*?'''`,'""".."""':String.raw`"""[^\\]*?(?:\\.[^\\]*?)*?"""`,"{}":String.raw`(?:\{[^\}]*\})`,"q''":ZA()},nT=E=>typeof E=="string"?Pt[E]:"regex"in E?E.regex:$A(E)+Pt[E.quote],qA=E=>ae(E.map(e=>"regex"in e?e.regex:nT(e)).join("|")),sT=E=>E.map(nT).join("|"),Mt=E=>ae(sT(E)),zA=(E={})=>ae(oT(E)),oT=({first:E,rest:e,dashes:t,allowFirstCharNumber:n}={})=>{const r="\\p{Alphabetic}\\p{Mark}_",s="\\p{Decimal_Number}",o=q(E??""),R=q(e??""),S=n?`[${r}${s}${o}][${r}${s}${R}]*`:`[${r}${o}][${r}${s}${R}]*`;return t?kA(S):S};function RT(E,e){const t=E.slice(0,e).split(/\n/);return{line:t.length,col:t[t.length-1].length+1}}class ea{constructor(e,t){this.rules=e,this.dialectName=t,this.input="",this.index=0}tokenize(e){this.input=e,this.index=0;const t=[];let n;for(;this.index<this.input.length;){const r=this.getWhitespace();if(this.index<this.input.length){if(n=this.getNextToken(),!n)throw this.createParseError();t.push(Object.assign(Object.assign({},n),{precedingWhitespace:r}))}}return t}createParseError(){const e=this.input.slice(this.index,this.index+10),{line:t,col:n}=RT(this.input,this.index);return new Error(`Parse error: Unexpected "${e}" at line ${t} column ${n}.
447
+ ${this.dialectInfo()}`)}dialectInfo(){return this.dialectName==="sql"?`This likely happens because you're using the default "sql" dialect.
448
+ If possible, please select a more specific dialect (like sqlite, postgresql, etc).`:`SQL dialect used: "${this.dialectName}".`}getWhitespace(){Dt.lastIndex=this.index;const e=Dt.exec(this.input);if(e)return this.index+=e[0].length,e[0]}getNextToken(){for(const e of this.rules){const t=this.match(e);if(t)return t}}match(e){e.regex.lastIndex=this.index;const t=e.regex.exec(this.input);if(t){const n=t[0],r={type:e.type,raw:n,text:e.text?e.text(n):n,start:this.index};return e.key&&(r.key=e.key(n)),this.index+=n.length,r}}}const ht=/\/\*/uy,Ea=/[\s\S]/uy,ta=/\*\//uy;class Ta{constructor(){this.lastIndex=0}exec(e){let t="",n,r=0;if(n=this.matchSection(ht,e))t+=n,r++;else return null;for(;r>0;)if(n=this.matchSection(ht,e))t+=n,r++;else if(n=this.matchSection(ta,e))t+=n,r--;else if(n=this.matchSection(Ea,e))t+=n;else return null;return[t]}matchSection(e,t){e.lastIndex=this.lastIndex;const n=e.exec(t);return n&&(this.lastIndex+=n[0].length),n?n[0]:null}}class ra{constructor(e,t){this.cfg=e,this.dialectName=t,this.rulesBeforeParams=this.buildRulesBeforeParams(e),this.rulesAfterParams=this.buildRulesAfterParams(e)}tokenize(e,t){const n=[...this.rulesBeforeParams,...this.buildParamRules(this.cfg,t),...this.rulesAfterParams],r=new ea(n,this.dialectName).tokenize(e);return this.cfg.postProcess?this.cfg.postProcess(r):r}buildRulesBeforeParams(e){var t,n,r;return this.validRules([{type:C.DISABLE_COMMENT,regex:/(\/\* *sql-formatter-disable *\*\/[\s\S]*?(?:\/\* *sql-formatter-enable *\*\/|$))/uy},{type:C.BLOCK_COMMENT,regex:e.nestedBlockComments?new Ta:/(\/\*[^]*?\*\/)/uy},{type:C.LINE_COMMENT,regex:JA((t=e.lineCommentTypes)!==null&&t!==void 0?t:["--"])},{type:C.QUOTED_IDENTIFIER,regex:Mt(e.identTypes)},{type:C.NUMBER,regex:e.underscoresInNumbers?/(?:0x[0-9a-fA-F_]+|0b[01_]+|(?:-\s*)?(?:[0-9_]*\.[0-9_]+|[0-9_]+(?:\.[0-9_]*)?)(?:[eE][-+]?[0-9_]+(?:\.[0-9_]+)?)?)(?![\w\p{Alphabetic}])/uy:/(?:0x[0-9a-fA-F]+|0b[01]+|(?:-\s*)?(?:[0-9]*\.[0-9]+|[0-9]+(?:\.[0-9]*)?)(?:[eE][-+]?[0-9]+(?:\.[0-9]+)?)?)(?![\w\p{Alphabetic}])/uy},{type:C.RESERVED_KEYWORD_PHRASE,regex:te((n=e.reservedKeywordPhrases)!==null&&n!==void 0?n:[],e.identChars),text:v},{type:C.RESERVED_DATA_TYPE_PHRASE,regex:te((r=e.reservedDataTypePhrases)!==null&&r!==void 0?r:[],e.identChars),text:v},{type:C.CASE,regex:/CASE\b/iuy,text:v},{type:C.END,regex:/END\b/iuy,text:v},{type:C.BETWEEN,regex:/BETWEEN\b/iuy,text:v},{type:C.LIMIT,regex:e.reservedClauses.includes("LIMIT")?/LIMIT\b/iuy:void 0,text:v},{type:C.RESERVED_CLAUSE,regex:te(e.reservedClauses,e.identChars),text:v},{type:C.RESERVED_SELECT,regex:te(e.reservedSelect,e.identChars),text:v},{type:C.RESERVED_SET_OPERATION,regex:te(e.reservedSetOperations,e.identChars),text:v},{type:C.WHEN,regex:/WHEN\b/iuy,text:v},{type:C.ELSE,regex:/ELSE\b/iuy,text:v},{type:C.THEN,regex:/THEN\b/iuy,text:v},{type:C.RESERVED_JOIN,regex:te(e.reservedJoins,e.identChars),text:v},{type:C.AND,regex:/AND\b/iuy,text:v},{type:C.OR,regex:/OR\b/iuy,text:v},{type:C.XOR,regex:e.supportsXor?/XOR\b/iuy:void 0,text:v},...e.operatorKeyword?[{type:C.OPERATOR,regex:/OPERATOR *\([^)]+\)/iuy}]:[],{type:C.RESERVED_FUNCTION_NAME,regex:te(e.reservedFunctionNames,e.identChars),text:v},{type:C.RESERVED_DATA_TYPE,regex:te(e.reservedDataTypes,e.identChars),text:v},{type:C.RESERVED_KEYWORD,regex:te(e.reservedKeywords,e.identChars),text:v}])}buildRulesAfterParams(e){var t,n;return this.validRules([{type:C.VARIABLE,regex:e.variableTypes?qA(e.variableTypes):void 0},{type:C.STRING,regex:Mt(e.stringTypes)},{type:C.IDENTIFIER,regex:zA(e.identChars)},{type:C.DELIMITER,regex:/[;]/uy},{type:C.COMMA,regex:/[,]/y},{type:C.OPEN_PAREN,regex:ut("open",e.extraParens)},{type:C.CLOSE_PAREN,regex:ut("close",e.extraParens)},{type:C.OPERATOR,regex:pt(["+","-","/",">","<","=","<>","<=",">=","!=",...(t=e.operators)!==null&&t!==void 0?t:[]])},{type:C.ASTERISK,regex:/[*]/uy},{type:C.PROPERTY_ACCESS_OPERATOR,regex:pt([".",...(n=e.propertyAccessOperators)!==null&&n!==void 0?n:[]])}])}buildParamRules(e,t){var n,r,s,o,R;const S={named:(t==null?void 0:t.named)||((n=e.paramTypes)===null||n===void 0?void 0:n.named)||[],quoted:(t==null?void 0:t.quoted)||((r=e.paramTypes)===null||r===void 0?void 0:r.quoted)||[],numbered:(t==null?void 0:t.numbered)||((s=e.paramTypes)===null||s===void 0?void 0:s.numbered)||[],positional:typeof(t==null?void 0:t.positional)=="boolean"?t.positional:(o=e.paramTypes)===null||o===void 0?void 0:o.positional,custom:(t==null?void 0:t.custom)||((R=e.paramTypes)===null||R===void 0?void 0:R.custom)||[]};return this.validRules([{type:C.NAMED_PARAMETER,regex:LE(S.named,oT(e.paramChars||e.identChars)),key:a=>a.slice(1)},{type:C.QUOTED_PARAMETER,regex:LE(S.quoted,sT(e.identTypes)),key:a=>(({tokenKey:i,quoteChar:A})=>i.replace(new RegExp(q("\\"+A),"gu"),A))({tokenKey:a.slice(2,-1),quoteChar:a.slice(-1)})},{type:C.NUMBERED_PARAMETER,regex:LE(S.numbered,"[0-9]+"),key:a=>a.slice(1)},{type:C.POSITIONAL_PARAMETER,regex:S.positional?/[?]/y:void 0},...S.custom.map(a=>{var i;return{type:C.CUSTOM_PARAMETER,regex:ae(a.regex),key:(i=a.key)!==null&&i!==void 0?i:(A=>A)}})])}validRules(e){return e.filter(t=>!!t.regex)}}const v=E=>Ge(E.toUpperCase()),ft=new Map,na=E=>{let e=ft.get(E);return e||(e=sa(E),ft.set(E,e)),e},sa=E=>({tokenizer:new ra(E.tokenizerOptions,E.name),formatOptions:oa(E.formatOptions)}),oa=E=>{var e;return{alwaysDenseOperators:E.alwaysDenseOperators||[],onelineClauses:Object.fromEntries(E.onelineClauses.map(t=>[t,!0])),tabularOnelineClauses:Object.fromEntries(((e=E.tabularOnelineClauses)!==null&&e!==void 0?e:E.onelineClauses).map(t=>[t,!0]))}};function Ra(E){return E.indentStyle==="tabularLeft"||E.indentStyle==="tabularRight"?" ".repeat(10):E.useTabs?" ":" ".repeat(E.tabWidth)}function Ie(E){return E.indentStyle==="tabularLeft"||E.indentStyle==="tabularRight"}class ia{constructor(e){this.params=e,this.index=0}get({key:e,text:t}){return this.params?e?this.params[e]:this.params[this.index++]:t}getPositionalParameterIndex(){return this.index}setPositionalParameterIndex(e){this.index=e}}var Be={exports:{}},Aa=Be.exports,mt;function aa(){return mt||(mt=1,(function(E){(function(e,t){E.exports?E.exports=t():e.nearley=t()})(Aa,function(){function e(a,i,A){return this.id=++e.highestId,this.name=a,this.symbols=i,this.postprocess=A,this}e.highestId=0,e.prototype.toString=function(a){var i=typeof a>"u"?this.symbols.map(S).join(" "):this.symbols.slice(0,a).map(S).join(" ")+" ● "+this.symbols.slice(a).map(S).join(" ");return this.name+" → "+i};function t(a,i,A,I){this.rule=a,this.dot=i,this.reference=A,this.data=[],this.wantedBy=I,this.isComplete=this.dot===a.symbols.length}t.prototype.toString=function(){return"{"+this.rule.toString(this.dot)+"}, from: "+(this.reference||0)},t.prototype.nextState=function(a){var i=new t(this.rule,this.dot+1,this.reference,this.wantedBy);return i.left=this,i.right=a,i.isComplete&&(i.data=i.build(),i.right=void 0),i},t.prototype.build=function(){var a=[],i=this;do a.push(i.right.data),i=i.left;while(i.left);return a.reverse(),a},t.prototype.finish=function(){this.rule.postprocess&&(this.data=this.rule.postprocess(this.data,this.reference,o.fail))};function n(a,i){this.grammar=a,this.index=i,this.states=[],this.wants={},this.scannable=[],this.completed={}}n.prototype.process=function(a){for(var i=this.states,A=this.wants,I=this.completed,O=0;O<i.length;O++){var c=i[O];if(c.isComplete){if(c.finish(),c.data!==o.fail){for(var d=c.wantedBy,D=d.length;D--;){var u=d[D];this.complete(u,c)}if(c.reference===this.index){var _=c.rule.name;(this.completed[_]=this.completed[_]||[]).push(c)}}}else{var _=c.rule.symbols[c.dot];if(typeof _!="string"){this.scannable.push(c);continue}if(A[_]){if(A[_].push(c),I.hasOwnProperty(_))for(var m=I[_],D=0;D<m.length;D++){var G=m[D];this.complete(c,G)}}else A[_]=[c],this.predict(_)}}},n.prototype.predict=function(a){for(var i=this.grammar.byName[a]||[],A=0;A<i.length;A++){var I=i[A],O=this.wants[a],c=new t(I,0,this.index,O);this.states.push(c)}},n.prototype.complete=function(a,i){var A=a.nextState(i);this.states.push(A)};function r(a,i){this.rules=a,this.start=i||this.rules[0].name;var A=this.byName={};this.rules.forEach(function(I){A.hasOwnProperty(I.name)||(A[I.name]=[]),A[I.name].push(I)})}r.fromCompiled=function(I,i){var A=I.Lexer;I.ParserStart&&(i=I.ParserStart,I=I.ParserRules);var I=I.map(function(c){return new e(c.name,c.symbols,c.postprocess)}),O=new r(I,i);return O.lexer=A,O};function s(){this.reset("")}s.prototype.reset=function(a,i){this.buffer=a,this.index=0,this.line=i?i.line:1,this.lastLineBreak=i?-i.col:0},s.prototype.next=function(){if(this.index<this.buffer.length){var a=this.buffer[this.index++];return a===`
449
+ `&&(this.line+=1,this.lastLineBreak=this.index),{value:a}}},s.prototype.save=function(){return{line:this.line,col:this.index-this.lastLineBreak}},s.prototype.formatError=function(a,i){var A=this.buffer;if(typeof A=="string"){var I=A.split(`
450
+ `).slice(Math.max(0,this.line-5),this.line),O=A.indexOf(`
451
+ `,this.index);O===-1&&(O=A.length);var c=this.index-this.lastLineBreak,d=String(this.line).length;return i+=" at line "+this.line+" col "+c+`:
452
+
453
+ `,i+=I.map(function(u,_){return D(this.line-I.length+_+1,d)+" "+u},this).join(`
454
+ `),i+=`
455
+ `+D("",d+c)+`^
456
+ `,i}else return i+" at index "+(this.index-1);function D(u,_){var m=String(u);return Array(_-m.length+1).join(" ")+m}};function o(a,i,A){if(a instanceof r)var I=a,A=i;else var I=r.fromCompiled(a,i);this.grammar=I,this.options={keepHistory:!1,lexer:I.lexer||new s};for(var O in A||{})this.options[O]=A[O];this.lexer=this.options.lexer,this.lexerState=void 0;var c=new n(I,0);this.table=[c],c.wants[I.start]=[],c.predict(I.start),c.process(),this.current=0}o.fail={},o.prototype.feed=function(a){var i=this.lexer;i.reset(a,this.lexerState);for(var A;;){try{if(A=i.next(),!A)break}catch(y){var d=new n(this.grammar,this.current+1);this.table.push(d);var I=new Error(this.reportLexerError(y));throw I.offset=this.current,I.token=y.token,I}var O=this.table[this.current];this.options.keepHistory||delete this.table[this.current-1];var c=this.current+1,d=new n(this.grammar,c);this.table.push(d);for(var D=A.text!==void 0?A.text:A.value,u=i.constructor===s?A.value:A,_=O.scannable,m=_.length;m--;){var G=_[m],x=G.rule.symbols[G.dot];if(x.test?x.test(u):x.type?x.type===A.type:x.literal===D){var P=G.nextState({data:u,token:A,isToken:!0,reference:c-1});d.states.push(P)}}if(d.process(),d.states.length===0){var I=new Error(this.reportError(A));throw I.offset=this.current,I.token=A,I}this.options.keepHistory&&(O.lexerState=i.save()),this.current++}return O&&(this.lexerState=i.save()),this.results=this.finish(),this},o.prototype.reportLexerError=function(a){var i,A,I=a.token;return I?(i="input "+JSON.stringify(I.text[0])+" (lexer error)",A=this.lexer.formatError(I,"Syntax error")):(i="input (lexer error)",A=a.message),this.reportErrorCommon(A,i)},o.prototype.reportError=function(a){var i=(a.type?a.type+" token: ":"")+JSON.stringify(a.value!==void 0?a.value:a),A=this.lexer.formatError(a,"Syntax error");return this.reportErrorCommon(A,i)},o.prototype.reportErrorCommon=function(a,i){var A=[];A.push(a);var I=this.table.length-2,O=this.table[I],c=O.states.filter(function(D){var u=D.rule.symbols[D.dot];return u&&typeof u!="string"});if(c.length===0)A.push("Unexpected "+i+`. I did not expect any more input. Here is the state of my parse table:
457
+ `),this.displayStateStack(O.states,A);else{A.push("Unexpected "+i+`. Instead, I was expecting to see one of the following:
458
+ `);var d=c.map(function(D){return this.buildFirstStateStack(D,[])||[D]},this);d.forEach(function(D){var u=D[0],_=u.rule.symbols[u.dot],m=this.getSymbolDisplay(_);A.push("A "+m+" based on:"),this.displayStateStack(D,A)},this)}return A.push(""),A.join(`
459
+ `)},o.prototype.displayStateStack=function(a,i){for(var A,I=0,O=0;O<a.length;O++){var c=a[O],d=c.rule.toString(c.dot);d===A?I++:(I>0&&i.push(" ^ "+I+" more lines identical to this"),I=0,i.push(" "+d)),A=d}},o.prototype.getSymbolDisplay=function(a){return R(a)},o.prototype.buildFirstStateStack=function(a,i){if(i.indexOf(a)!==-1)return null;if(a.wantedBy.length===0)return[a];var A=a.wantedBy[0],I=[a].concat(i),O=this.buildFirstStateStack(A,I);return O===null?null:[a].concat(O)},o.prototype.save=function(){var a=this.table[this.current];return a.lexerState=this.lexerState,a},o.prototype.restore=function(a){var i=a.index;this.current=i,this.table[i]=a,this.table.splice(i+1),this.lexerState=a.lexerState,this.results=this.finish()},o.prototype.rewind=function(a){if(!this.options.keepHistory)throw new Error("set option `keepHistory` to enable rewinding");this.restore(this.table[a])},o.prototype.finish=function(){var a=[],i=this.grammar.start,A=this.table[this.table.length-1];return A.states.forEach(function(I){I.rule.name===i&&I.dot===I.rule.symbols.length&&I.reference===0&&I.data!==o.fail&&a.push(I)}),a.map(function(I){return I.data})};function R(a){var i=typeof a;if(i==="string")return a;if(i==="object"){if(a.literal)return JSON.stringify(a.literal);if(a instanceof RegExp)return"character matching "+a;if(a.type)return a.type+" token";if(a.test)return"token matching "+String(a.test);throw new Error("Unknown symbol type: "+a)}}function S(a){var i=typeof a;if(i==="string")return a;if(i==="object"){if(a.literal)return JSON.stringify(a.literal);if(a instanceof RegExp)return a.toString();if(a.type)return"%"+a.type;if(a.test)return"<"+String(a.test)+">";throw new Error("Unknown symbol type: "+a)}}return{Parser:o,Grammar:r,Rule:e}})})(Be)),Be.exports}var Sa=aa();const Ia=Ht(Sa);function Oa(E){return E.map(la).map(Na).map(ca).map(La).map(Ca)}const la=(E,e,t)=>{if(TT(E.type)){const n=da(t,e);if(n&&n.type===C.PROPERTY_ACCESS_OPERATOR)return Object.assign(Object.assign({},E),{type:C.IDENTIFIER,text:E.raw});const r=ce(t,e);if(r&&r.type===C.PROPERTY_ACCESS_OPERATOR)return Object.assign(Object.assign({},E),{type:C.IDENTIFIER,text:E.raw})}return E},Na=(E,e,t)=>{if(E.type===C.RESERVED_FUNCTION_NAME){const n=ce(t,e);if(!n||!iT(n))return Object.assign(Object.assign({},E),{type:C.IDENTIFIER,text:E.raw})}return E},ca=(E,e,t)=>{if(E.type===C.RESERVED_DATA_TYPE){const n=ce(t,e);if(n&&iT(n))return Object.assign(Object.assign({},E),{type:C.RESERVED_PARAMETERIZED_DATA_TYPE})}return E},La=(E,e,t)=>{if(E.type===C.IDENTIFIER){const n=ce(t,e);if(n&&AT(n))return Object.assign(Object.assign({},E),{type:C.ARRAY_IDENTIFIER})}return E},Ca=(E,e,t)=>{if(E.type===C.RESERVED_DATA_TYPE){const n=ce(t,e);if(n&&AT(n))return Object.assign(Object.assign({},E),{type:C.ARRAY_KEYWORD})}return E},da=(E,e)=>ce(E,e,-1),ce=(E,e,t=1)=>{let n=1;for(;E[e+n*t]&&_a(E[e+n*t]);)n++;return E[e+n*t]},iT=E=>E.type===C.OPEN_PAREN&&E.text==="(",AT=E=>E.type===C.OPEN_PAREN&&E.text==="[",_a=E=>E.type===C.BLOCK_COMMENT||E.type===C.LINE_COMMENT;class aT{constructor(e){this.tokenize=e,this.index=0,this.tokens=[],this.input=""}reset(e,t){this.input=e,this.index=0,this.tokens=this.tokenize(e)}next(){return this.tokens[this.index++]}save(){}formatError(e){const{line:t,col:n}=RT(this.input,e.start);return`Parse error at token: ${e.text} at line ${t} column ${n}`}has(e){return e in C}}var f;(function(E){E.statement="statement",E.clause="clause",E.set_operation="set_operation",E.function_call="function_call",E.parameterized_data_type="parameterized_data_type",E.array_subscript="array_subscript",E.property_access="property_access",E.parenthesis="parenthesis",E.between_predicate="between_predicate",E.case_expression="case_expression",E.case_when="case_when",E.case_else="case_else",E.limit_clause="limit_clause",E.all_columns_asterisk="all_columns_asterisk",E.literal="literal",E.identifier="identifier",E.keyword="keyword",E.data_type="data_type",E.parameter="parameter",E.operator="operator",E.comma="comma",E.line_comment="line_comment",E.block_comment="block_comment",E.disable_comment="disable_comment"})(f=f||(f={}));function CE(E){return E[0]}const U=new aT(E=>[]),ie=([[E]])=>E,V=E=>({type:f.keyword,tokenType:E.type,text:E.text,raw:E.raw}),Ut=E=>({type:f.data_type,text:E.text,raw:E.raw}),W=(E,{leading:e,trailing:t})=>(e!=null&&e.length&&(E=Object.assign(Object.assign({},E),{leadingComments:e})),t!=null&&t.length&&(E=Object.assign(Object.assign({},E),{trailingComments:t})),E),Da=(E,{leading:e,trailing:t})=>{if(e!=null&&e.length){const[n,...r]=E;E=[W(n,{leading:e}),...r]}if(t!=null&&t.length){const n=E.slice(0,-1),r=E[E.length-1];E=[...n,W(r,{trailing:t})]}return E},ua={Lexer:U,ParserRules:[{name:"main$ebnf$1",symbols:[]},{name:"main$ebnf$1",symbols:["main$ebnf$1","statement"],postprocess:E=>E[0].concat([E[1]])},{name:"main",symbols:["main$ebnf$1"],postprocess:([E])=>{const e=E[E.length-1];return e&&!e.hasSemicolon?e.children.length>0?E:E.slice(0,-1):E}},{name:"statement$subexpression$1",symbols:[U.has("DELIMITER")?{type:"DELIMITER"}:DELIMITER]},{name:"statement$subexpression$1",symbols:[U.has("EOF")?{type:"EOF"}:EOF]},{name:"statement",symbols:["expressions_or_clauses","statement$subexpression$1"],postprocess:([E,[e]])=>({type:f.statement,children:E,hasSemicolon:e.type===C.DELIMITER})},{name:"expressions_or_clauses$ebnf$1",symbols:[]},{name:"expressions_or_clauses$ebnf$1",symbols:["expressions_or_clauses$ebnf$1","free_form_sql"],postprocess:E=>E[0].concat([E[1]])},{name:"expressions_or_clauses$ebnf$2",symbols:[]},{name:"expressions_or_clauses$ebnf$2",symbols:["expressions_or_clauses$ebnf$2","clause"],postprocess:E=>E[0].concat([E[1]])},{name:"expressions_or_clauses",symbols:["expressions_or_clauses$ebnf$1","expressions_or_clauses$ebnf$2"],postprocess:([E,e])=>[...E,...e]},{name:"clause$subexpression$1",symbols:["limit_clause"]},{name:"clause$subexpression$1",symbols:["select_clause"]},{name:"clause$subexpression$1",symbols:["other_clause"]},{name:"clause$subexpression$1",symbols:["set_operation"]},{name:"clause",symbols:["clause$subexpression$1"],postprocess:ie},{name:"limit_clause$ebnf$1$subexpression$1$ebnf$1",symbols:["free_form_sql"]},{name:"limit_clause$ebnf$1$subexpression$1$ebnf$1",symbols:["limit_clause$ebnf$1$subexpression$1$ebnf$1","free_form_sql"],postprocess:E=>E[0].concat([E[1]])},{name:"limit_clause$ebnf$1$subexpression$1",symbols:[U.has("COMMA")?{type:"COMMA"}:COMMA,"limit_clause$ebnf$1$subexpression$1$ebnf$1"]},{name:"limit_clause$ebnf$1",symbols:["limit_clause$ebnf$1$subexpression$1"],postprocess:CE},{name:"limit_clause$ebnf$1",symbols:[],postprocess:()=>null},{name:"limit_clause",symbols:[U.has("LIMIT")?{type:"LIMIT"}:LIMIT,"_","expression_chain_","limit_clause$ebnf$1"],postprocess:([E,e,t,n])=>{if(n){const[r,s]=n;return{type:f.limit_clause,limitKw:W(V(E),{trailing:e}),offset:t,count:s}}else return{type:f.limit_clause,limitKw:W(V(E),{trailing:e}),count:t}}},{name:"select_clause$subexpression$1$ebnf$1",symbols:[]},{name:"select_clause$subexpression$1$ebnf$1",symbols:["select_clause$subexpression$1$ebnf$1","free_form_sql"],postprocess:E=>E[0].concat([E[1]])},{name:"select_clause$subexpression$1",symbols:["all_columns_asterisk","select_clause$subexpression$1$ebnf$1"]},{name:"select_clause$subexpression$1$ebnf$2",symbols:[]},{name:"select_clause$subexpression$1$ebnf$2",symbols:["select_clause$subexpression$1$ebnf$2","free_form_sql"],postprocess:E=>E[0].concat([E[1]])},{name:"select_clause$subexpression$1",symbols:["asteriskless_free_form_sql","select_clause$subexpression$1$ebnf$2"]},{name:"select_clause",symbols:[U.has("RESERVED_SELECT")?{type:"RESERVED_SELECT"}:RESERVED_SELECT,"select_clause$subexpression$1"],postprocess:([E,[e,t]])=>({type:f.clause,nameKw:V(E),children:[e,...t]})},{name:"select_clause",symbols:[U.has("RESERVED_SELECT")?{type:"RESERVED_SELECT"}:RESERVED_SELECT],postprocess:([E])=>({type:f.clause,nameKw:V(E),children:[]})},{name:"all_columns_asterisk",symbols:[U.has("ASTERISK")?{type:"ASTERISK"}:ASTERISK],postprocess:()=>({type:f.all_columns_asterisk})},{name:"other_clause$ebnf$1",symbols:[]},{name:"other_clause$ebnf$1",symbols:["other_clause$ebnf$1","free_form_sql"],postprocess:E=>E[0].concat([E[1]])},{name:"other_clause",symbols:[U.has("RESERVED_CLAUSE")?{type:"RESERVED_CLAUSE"}:RESERVED_CLAUSE,"other_clause$ebnf$1"],postprocess:([E,e])=>({type:f.clause,nameKw:V(E),children:e})},{name:"set_operation$ebnf$1",symbols:[]},{name:"set_operation$ebnf$1",symbols:["set_operation$ebnf$1","free_form_sql"],postprocess:E=>E[0].concat([E[1]])},{name:"set_operation",symbols:[U.has("RESERVED_SET_OPERATION")?{type:"RESERVED_SET_OPERATION"}:RESERVED_SET_OPERATION,"set_operation$ebnf$1"],postprocess:([E,e])=>({type:f.set_operation,nameKw:V(E),children:e})},{name:"expression_chain_$ebnf$1",symbols:["expression_with_comments_"]},{name:"expression_chain_$ebnf$1",symbols:["expression_chain_$ebnf$1","expression_with_comments_"],postprocess:E=>E[0].concat([E[1]])},{name:"expression_chain_",symbols:["expression_chain_$ebnf$1"],postprocess:CE},{name:"expression_chain$ebnf$1",symbols:[]},{name:"expression_chain$ebnf$1",symbols:["expression_chain$ebnf$1","_expression_with_comments"],postprocess:E=>E[0].concat([E[1]])},{name:"expression_chain",symbols:["expression","expression_chain$ebnf$1"],postprocess:([E,e])=>[E,...e]},{name:"andless_expression_chain$ebnf$1",symbols:[]},{name:"andless_expression_chain$ebnf$1",symbols:["andless_expression_chain$ebnf$1","_andless_expression_with_comments"],postprocess:E=>E[0].concat([E[1]])},{name:"andless_expression_chain",symbols:["andless_expression","andless_expression_chain$ebnf$1"],postprocess:([E,e])=>[E,...e]},{name:"expression_with_comments_",symbols:["expression","_"],postprocess:([E,e])=>W(E,{trailing:e})},{name:"_expression_with_comments",symbols:["_","expression"],postprocess:([E,e])=>W(e,{leading:E})},{name:"_andless_expression_with_comments",symbols:["_","andless_expression"],postprocess:([E,e])=>W(e,{leading:E})},{name:"free_form_sql$subexpression$1",symbols:["asteriskless_free_form_sql"]},{name:"free_form_sql$subexpression$1",symbols:["asterisk"]},{name:"free_form_sql",symbols:["free_form_sql$subexpression$1"],postprocess:ie},{name:"asteriskless_free_form_sql$subexpression$1",symbols:["asteriskless_andless_expression"]},{name:"asteriskless_free_form_sql$subexpression$1",symbols:["logic_operator"]},{name:"asteriskless_free_form_sql$subexpression$1",symbols:["comma"]},{name:"asteriskless_free_form_sql$subexpression$1",symbols:["comment"]},{name:"asteriskless_free_form_sql$subexpression$1",symbols:["other_keyword"]},{name:"asteriskless_free_form_sql",symbols:["asteriskless_free_form_sql$subexpression$1"],postprocess:ie},{name:"expression$subexpression$1",symbols:["andless_expression"]},{name:"expression$subexpression$1",symbols:["logic_operator"]},{name:"expression",symbols:["expression$subexpression$1"],postprocess:ie},{name:"andless_expression$subexpression$1",symbols:["asteriskless_andless_expression"]},{name:"andless_expression$subexpression$1",symbols:["asterisk"]},{name:"andless_expression",symbols:["andless_expression$subexpression$1"],postprocess:ie},{name:"asteriskless_andless_expression$subexpression$1",symbols:["atomic_expression"]},{name:"asteriskless_andless_expression$subexpression$1",symbols:["between_predicate"]},{name:"asteriskless_andless_expression$subexpression$1",symbols:["case_expression"]},{name:"asteriskless_andless_expression",symbols:["asteriskless_andless_expression$subexpression$1"],postprocess:ie},{name:"atomic_expression$subexpression$1",symbols:["array_subscript"]},{name:"atomic_expression$subexpression$1",symbols:["function_call"]},{name:"atomic_expression$subexpression$1",symbols:["property_access"]},{name:"atomic_expression$subexpression$1",symbols:["parenthesis"]},{name:"atomic_expression$subexpression$1",symbols:["curly_braces"]},{name:"atomic_expression$subexpression$1",symbols:["square_brackets"]},{name:"atomic_expression$subexpression$1",symbols:["operator"]},{name:"atomic_expression$subexpression$1",symbols:["identifier"]},{name:"atomic_expression$subexpression$1",symbols:["parameter"]},{name:"atomic_expression$subexpression$1",symbols:["literal"]},{name:"atomic_expression$subexpression$1",symbols:["data_type"]},{name:"atomic_expression$subexpression$1",symbols:["keyword"]},{name:"atomic_expression",symbols:["atomic_expression$subexpression$1"],postprocess:ie},{name:"array_subscript",symbols:[U.has("ARRAY_IDENTIFIER")?{type:"ARRAY_IDENTIFIER"}:ARRAY_IDENTIFIER,"_","square_brackets"],postprocess:([E,e,t])=>({type:f.array_subscript,array:W({type:f.identifier,quoted:!1,text:E.text},{trailing:e}),parenthesis:t})},{name:"array_subscript",symbols:[U.has("ARRAY_KEYWORD")?{type:"ARRAY_KEYWORD"}:ARRAY_KEYWORD,"_","square_brackets"],postprocess:([E,e,t])=>({type:f.array_subscript,array:W(V(E),{trailing:e}),parenthesis:t})},{name:"function_call",symbols:[U.has("RESERVED_FUNCTION_NAME")?{type:"RESERVED_FUNCTION_NAME"}:RESERVED_FUNCTION_NAME,"_","parenthesis"],postprocess:([E,e,t])=>({type:f.function_call,nameKw:W(V(E),{trailing:e}),parenthesis:t})},{name:"parenthesis",symbols:[{literal:"("},"expressions_or_clauses",{literal:")"}],postprocess:([E,e,t])=>({type:f.parenthesis,children:e,openParen:"(",closeParen:")"})},{name:"curly_braces$ebnf$1",symbols:[]},{name:"curly_braces$ebnf$1",symbols:["curly_braces$ebnf$1","free_form_sql"],postprocess:E=>E[0].concat([E[1]])},{name:"curly_braces",symbols:[{literal:"{"},"curly_braces$ebnf$1",{literal:"}"}],postprocess:([E,e,t])=>({type:f.parenthesis,children:e,openParen:"{",closeParen:"}"})},{name:"square_brackets$ebnf$1",symbols:[]},{name:"square_brackets$ebnf$1",symbols:["square_brackets$ebnf$1","free_form_sql"],postprocess:E=>E[0].concat([E[1]])},{name:"square_brackets",symbols:[{literal:"["},"square_brackets$ebnf$1",{literal:"]"}],postprocess:([E,e,t])=>({type:f.parenthesis,children:e,openParen:"[",closeParen:"]"})},{name:"property_access$subexpression$1",symbols:["identifier"]},{name:"property_access$subexpression$1",symbols:["array_subscript"]},{name:"property_access$subexpression$1",symbols:["all_columns_asterisk"]},{name:"property_access$subexpression$1",symbols:["parameter"]},{name:"property_access",symbols:["atomic_expression","_",U.has("PROPERTY_ACCESS_OPERATOR")?{type:"PROPERTY_ACCESS_OPERATOR"}:PROPERTY_ACCESS_OPERATOR,"_","property_access$subexpression$1"],postprocess:([E,e,t,n,[r]])=>({type:f.property_access,object:W(E,{trailing:e}),operator:t.text,property:W(r,{leading:n})})},{name:"between_predicate",symbols:[U.has("BETWEEN")?{type:"BETWEEN"}:BETWEEN,"_","andless_expression_chain","_",U.has("AND")?{type:"AND"}:AND,"_","andless_expression"],postprocess:([E,e,t,n,r,s,o])=>({type:f.between_predicate,betweenKw:V(E),expr1:Da(t,{leading:e,trailing:n}),andKw:V(r),expr2:[W(o,{leading:s})]})},{name:"case_expression$ebnf$1",symbols:["expression_chain_"],postprocess:CE},{name:"case_expression$ebnf$1",symbols:[],postprocess:()=>null},{name:"case_expression$ebnf$2",symbols:[]},{name:"case_expression$ebnf$2",symbols:["case_expression$ebnf$2","case_clause"],postprocess:E=>E[0].concat([E[1]])},{name:"case_expression",symbols:[U.has("CASE")?{type:"CASE"}:CASE,"_","case_expression$ebnf$1","case_expression$ebnf$2",U.has("END")?{type:"END"}:END],postprocess:([E,e,t,n,r])=>({type:f.case_expression,caseKw:W(V(E),{trailing:e}),endKw:V(r),expr:t||[],clauses:n})},{name:"case_clause",symbols:[U.has("WHEN")?{type:"WHEN"}:WHEN,"_","expression_chain_",U.has("THEN")?{type:"THEN"}:THEN,"_","expression_chain_"],postprocess:([E,e,t,n,r,s])=>({type:f.case_when,whenKw:W(V(E),{trailing:e}),thenKw:W(V(n),{trailing:r}),condition:t,result:s})},{name:"case_clause",symbols:[U.has("ELSE")?{type:"ELSE"}:ELSE,"_","expression_chain_"],postprocess:([E,e,t])=>({type:f.case_else,elseKw:W(V(E),{trailing:e}),result:t})},{name:"comma$subexpression$1",symbols:[U.has("COMMA")?{type:"COMMA"}:COMMA]},{name:"comma",symbols:["comma$subexpression$1"],postprocess:([[E]])=>({type:f.comma})},{name:"asterisk$subexpression$1",symbols:[U.has("ASTERISK")?{type:"ASTERISK"}:ASTERISK]},{name:"asterisk",symbols:["asterisk$subexpression$1"],postprocess:([[E]])=>({type:f.operator,text:E.text})},{name:"operator$subexpression$1",symbols:[U.has("OPERATOR")?{type:"OPERATOR"}:OPERATOR]},{name:"operator",symbols:["operator$subexpression$1"],postprocess:([[E]])=>({type:f.operator,text:E.text})},{name:"identifier$subexpression$1",symbols:[U.has("IDENTIFIER")?{type:"IDENTIFIER"}:IDENTIFIER]},{name:"identifier$subexpression$1",symbols:[U.has("QUOTED_IDENTIFIER")?{type:"QUOTED_IDENTIFIER"}:QUOTED_IDENTIFIER]},{name:"identifier$subexpression$1",symbols:[U.has("VARIABLE")?{type:"VARIABLE"}:VARIABLE]},{name:"identifier",symbols:["identifier$subexpression$1"],postprocess:([[E]])=>({type:f.identifier,quoted:E.type!=="IDENTIFIER",text:E.text})},{name:"parameter$subexpression$1",symbols:[U.has("NAMED_PARAMETER")?{type:"NAMED_PARAMETER"}:NAMED_PARAMETER]},{name:"parameter$subexpression$1",symbols:[U.has("QUOTED_PARAMETER")?{type:"QUOTED_PARAMETER"}:QUOTED_PARAMETER]},{name:"parameter$subexpression$1",symbols:[U.has("NUMBERED_PARAMETER")?{type:"NUMBERED_PARAMETER"}:NUMBERED_PARAMETER]},{name:"parameter$subexpression$1",symbols:[U.has("POSITIONAL_PARAMETER")?{type:"POSITIONAL_PARAMETER"}:POSITIONAL_PARAMETER]},{name:"parameter$subexpression$1",symbols:[U.has("CUSTOM_PARAMETER")?{type:"CUSTOM_PARAMETER"}:CUSTOM_PARAMETER]},{name:"parameter",symbols:["parameter$subexpression$1"],postprocess:([[E]])=>({type:f.parameter,key:E.key,text:E.text})},{name:"literal$subexpression$1",symbols:[U.has("NUMBER")?{type:"NUMBER"}:NUMBER]},{name:"literal$subexpression$1",symbols:[U.has("STRING")?{type:"STRING"}:STRING]},{name:"literal",symbols:["literal$subexpression$1"],postprocess:([[E]])=>({type:f.literal,text:E.text})},{name:"keyword$subexpression$1",symbols:[U.has("RESERVED_KEYWORD")?{type:"RESERVED_KEYWORD"}:RESERVED_KEYWORD]},{name:"keyword$subexpression$1",symbols:[U.has("RESERVED_KEYWORD_PHRASE")?{type:"RESERVED_KEYWORD_PHRASE"}:RESERVED_KEYWORD_PHRASE]},{name:"keyword$subexpression$1",symbols:[U.has("RESERVED_JOIN")?{type:"RESERVED_JOIN"}:RESERVED_JOIN]},{name:"keyword",symbols:["keyword$subexpression$1"],postprocess:([[E]])=>V(E)},{name:"data_type$subexpression$1",symbols:[U.has("RESERVED_DATA_TYPE")?{type:"RESERVED_DATA_TYPE"}:RESERVED_DATA_TYPE]},{name:"data_type$subexpression$1",symbols:[U.has("RESERVED_DATA_TYPE_PHRASE")?{type:"RESERVED_DATA_TYPE_PHRASE"}:RESERVED_DATA_TYPE_PHRASE]},{name:"data_type",symbols:["data_type$subexpression$1"],postprocess:([[E]])=>Ut(E)},{name:"data_type",symbols:[U.has("RESERVED_PARAMETERIZED_DATA_TYPE")?{type:"RESERVED_PARAMETERIZED_DATA_TYPE"}:RESERVED_PARAMETERIZED_DATA_TYPE,"_","parenthesis"],postprocess:([E,e,t])=>({type:f.parameterized_data_type,dataType:W(Ut(E),{trailing:e}),parenthesis:t})},{name:"logic_operator$subexpression$1",symbols:[U.has("AND")?{type:"AND"}:AND]},{name:"logic_operator$subexpression$1",symbols:[U.has("OR")?{type:"OR"}:OR]},{name:"logic_operator$subexpression$1",symbols:[U.has("XOR")?{type:"XOR"}:XOR]},{name:"logic_operator",symbols:["logic_operator$subexpression$1"],postprocess:([[E]])=>V(E)},{name:"other_keyword$subexpression$1",symbols:[U.has("WHEN")?{type:"WHEN"}:WHEN]},{name:"other_keyword$subexpression$1",symbols:[U.has("THEN")?{type:"THEN"}:THEN]},{name:"other_keyword$subexpression$1",symbols:[U.has("ELSE")?{type:"ELSE"}:ELSE]},{name:"other_keyword$subexpression$1",symbols:[U.has("END")?{type:"END"}:END]},{name:"other_keyword",symbols:["other_keyword$subexpression$1"],postprocess:([[E]])=>V(E)},{name:"_$ebnf$1",symbols:[]},{name:"_$ebnf$1",symbols:["_$ebnf$1","comment"],postprocess:E=>E[0].concat([E[1]])},{name:"_",symbols:["_$ebnf$1"],postprocess:([E])=>E},{name:"comment",symbols:[U.has("LINE_COMMENT")?{type:"LINE_COMMENT"}:LINE_COMMENT],postprocess:([E])=>({type:f.line_comment,text:E.text,precedingWhitespace:E.precedingWhitespace})},{name:"comment",symbols:[U.has("BLOCK_COMMENT")?{type:"BLOCK_COMMENT"}:BLOCK_COMMENT],postprocess:([E])=>({type:f.block_comment,text:E.text,precedingWhitespace:E.precedingWhitespace})},{name:"comment",symbols:[U.has("DISABLE_COMMENT")?{type:"DISABLE_COMMENT"}:DISABLE_COMMENT],postprocess:([E])=>({type:f.disable_comment,text:E.text,precedingWhitespace:E.precedingWhitespace})}],ParserStart:"main"},{Parser:pa,Grammar:Pa}=Ia;function Ma(E){let e={};const t=new aT(r=>[...Oa(E.tokenize(r,e)),tT(r.length)]),n=new pa(Pa.fromCompiled(ua),{lexer:t});return{parse:(r,s)=>{e=s;const{results:o}=n.feed(r);if(o.length===1)return o[0];throw o.length===0?new Error("Parse error: Invalid SQL"):new Error(`Parse error: Ambiguous grammar
460
+ ${JSON.stringify(o,void 0,2)}`)}}}var L;(function(E){E[E.SPACE=0]="SPACE",E[E.NO_SPACE=1]="NO_SPACE",E[E.NO_NEWLINE=2]="NO_NEWLINE",E[E.NEWLINE=3]="NEWLINE",E[E.MANDATORY_NEWLINE=4]="MANDATORY_NEWLINE",E[E.INDENT=5]="INDENT",E[E.SINGLE_INDENT=6]="SINGLE_INDENT"})(L=L||(L={}));class ST{constructor(e){this.indentation=e,this.items=[]}add(...e){for(const t of e)switch(t){case L.SPACE:this.items.push(L.SPACE);break;case L.NO_SPACE:this.trimHorizontalWhitespace();break;case L.NO_NEWLINE:this.trimWhitespace();break;case L.NEWLINE:this.trimHorizontalWhitespace(),this.addNewline(L.NEWLINE);break;case L.MANDATORY_NEWLINE:this.trimHorizontalWhitespace(),this.addNewline(L.MANDATORY_NEWLINE);break;case L.INDENT:this.addIndentation();break;case L.SINGLE_INDENT:this.items.push(L.SINGLE_INDENT);break;default:this.items.push(t)}}trimHorizontalWhitespace(){for(;ha(De(this.items));)this.items.pop()}trimWhitespace(){for(;fa(De(this.items));)this.items.pop()}addNewline(e){if(this.items.length>0)switch(De(this.items)){case L.NEWLINE:this.items.pop(),this.items.push(e);break;case L.MANDATORY_NEWLINE:break;default:this.items.push(e);break}}addIndentation(){for(let e=0;e<this.indentation.getLevel();e++)this.items.push(L.SINGLE_INDENT)}toString(){return this.items.map(e=>this.itemToString(e)).join("")}getLayoutItems(){return this.items}itemToString(e){switch(e){case L.SPACE:return" ";case L.NEWLINE:case L.MANDATORY_NEWLINE:return`
461
+ `;case L.SINGLE_INDENT:return this.indentation.getSingleIndent();default:return e}}}const ha=E=>E===L.SPACE||E===L.SINGLE_INDENT,fa=E=>E===L.SPACE||E===L.SINGLE_INDENT||E===L.NEWLINE;function xt(E,e){if(e==="standard")return E;let t=[];return E.length>=10&&E.includes(" ")&&([E,...t]=E.split(" ")),e==="tabularLeft"?E=E.padEnd(9," "):E=E.padStart(9," "),E+["",...t].join(" ")}function yt(E){return qs(E)||E===C.RESERVED_CLAUSE||E===C.RESERVED_SELECT||E===C.RESERVED_SET_OPERATION||E===C.RESERVED_JOIN||E===C.LIMIT}const dE="top-level",ma="block-level";class IT{constructor(e){this.indent=e,this.indentTypes=[]}getSingleIndent(){return this.indent}getLevel(){return this.indentTypes.length}increaseTopLevel(){this.indentTypes.push(dE)}increaseBlockLevel(){this.indentTypes.push(ma)}decreaseTopLevel(){this.indentTypes.length>0&&De(this.indentTypes)===dE&&this.indentTypes.pop()}decreaseBlockLevel(){for(;this.indentTypes.length>0&&this.indentTypes.pop()===dE;);}}class Ua extends ST{constructor(e){super(new IT("")),this.expressionWidth=e,this.length=0,this.trailingSpace=!1}add(...e){if(e.forEach(t=>this.addToLength(t)),this.length>this.expressionWidth)throw new fE;super.add(...e)}addToLength(e){if(typeof e=="string")this.length+=e.length,this.trailingSpace=!1;else{if(e===L.MANDATORY_NEWLINE||e===L.NEWLINE)throw new fE;e===L.INDENT||e===L.SINGLE_INDENT||e===L.SPACE?this.trailingSpace||(this.length++,this.trailingSpace=!0):(e===L.NO_NEWLINE||e===L.NO_SPACE)&&this.trailingSpace&&(this.trailingSpace=!1,this.length--)}}}class fE extends Error{}class Xe{constructor({cfg:e,dialectCfg:t,params:n,layout:r,inline:s=!1}){this.inline=!1,this.nodes=[],this.index=-1,this.cfg=e,this.dialectCfg=t,this.inline=s,this.params=n,this.layout=r}format(e){for(this.nodes=e,this.index=0;this.index<this.nodes.length;this.index++)this.formatNode(this.nodes[this.index]);return this.layout}formatNode(e){this.formatComments(e.leadingComments),this.formatNodeWithoutComments(e),this.formatComments(e.trailingComments)}formatNodeWithoutComments(e){switch(e.type){case f.function_call:return this.formatFunctionCall(e);case f.parameterized_data_type:return this.formatParameterizedDataType(e);case f.array_subscript:return this.formatArraySubscript(e);case f.property_access:return this.formatPropertyAccess(e);case f.parenthesis:return this.formatParenthesis(e);case f.between_predicate:return this.formatBetweenPredicate(e);case f.case_expression:return this.formatCaseExpression(e);case f.case_when:return this.formatCaseWhen(e);case f.case_else:return this.formatCaseElse(e);case f.clause:return this.formatClause(e);case f.set_operation:return this.formatSetOperation(e);case f.limit_clause:return this.formatLimitClause(e);case f.all_columns_asterisk:return this.formatAllColumnsAsterisk(e);case f.literal:return this.formatLiteral(e);case f.identifier:return this.formatIdentifier(e);case f.parameter:return this.formatParameter(e);case f.operator:return this.formatOperator(e);case f.comma:return this.formatComma(e);case f.line_comment:return this.formatLineComment(e);case f.block_comment:return this.formatBlockComment(e);case f.disable_comment:return this.formatBlockComment(e);case f.data_type:return this.formatDataType(e);case f.keyword:return this.formatKeywordNode(e)}}formatFunctionCall(e){this.withComments(e.nameKw,()=>{this.layout.add(this.showFunctionKw(e.nameKw))}),this.formatNode(e.parenthesis)}formatParameterizedDataType(e){this.withComments(e.dataType,()=>{this.layout.add(this.showDataType(e.dataType))}),this.formatNode(e.parenthesis)}formatArraySubscript(e){let t;switch(e.array.type){case f.data_type:t=this.showDataType(e.array);break;case f.keyword:t=this.showKw(e.array);break;default:t=this.showIdentifier(e.array);break}this.withComments(e.array,()=>{this.layout.add(t)}),this.formatNode(e.parenthesis)}formatPropertyAccess(e){this.formatNode(e.object),this.layout.add(L.NO_SPACE,e.operator),this.formatNode(e.property)}formatParenthesis(e){const t=this.formatInlineExpression(e.children);t?(this.layout.add(e.openParen),this.layout.add(...t.getLayoutItems()),this.layout.add(L.NO_SPACE,e.closeParen,L.SPACE)):(this.layout.add(e.openParen,L.NEWLINE),Ie(this.cfg)?(this.layout.add(L.INDENT),this.layout=this.formatSubExpression(e.children)):(this.layout.indentation.increaseBlockLevel(),this.layout.add(L.INDENT),this.layout=this.formatSubExpression(e.children),this.layout.indentation.decreaseBlockLevel()),this.layout.add(L.NEWLINE,L.INDENT,e.closeParen,L.SPACE))}formatBetweenPredicate(e){this.layout.add(this.showKw(e.betweenKw),L.SPACE),this.layout=this.formatSubExpression(e.expr1),this.layout.add(L.NO_SPACE,L.SPACE,this.showNonTabularKw(e.andKw),L.SPACE),this.layout=this.formatSubExpression(e.expr2),this.layout.add(L.SPACE)}formatCaseExpression(e){this.formatNode(e.caseKw),this.layout.indentation.increaseBlockLevel(),this.layout=this.formatSubExpression(e.expr),this.layout=this.formatSubExpression(e.clauses),this.layout.indentation.decreaseBlockLevel(),this.layout.add(L.NEWLINE,L.INDENT),this.formatNode(e.endKw)}formatCaseWhen(e){this.layout.add(L.NEWLINE,L.INDENT),this.formatNode(e.whenKw),this.layout=this.formatSubExpression(e.condition),this.formatNode(e.thenKw),this.layout=this.formatSubExpression(e.result)}formatCaseElse(e){this.layout.add(L.NEWLINE,L.INDENT),this.formatNode(e.elseKw),this.layout=this.formatSubExpression(e.result)}formatClause(e){this.isOnelineClause(e)?this.formatClauseInOnelineStyle(e):Ie(this.cfg)?this.formatClauseInTabularStyle(e):this.formatClauseInIndentedStyle(e)}isOnelineClause(e){return Ie(this.cfg)?this.dialectCfg.tabularOnelineClauses[e.nameKw.text]:this.dialectCfg.onelineClauses[e.nameKw.text]}formatClauseInIndentedStyle(e){this.layout.add(L.NEWLINE,L.INDENT,this.showKw(e.nameKw),L.NEWLINE),this.layout.indentation.increaseTopLevel(),this.layout.add(L.INDENT),this.layout=this.formatSubExpression(e.children),this.layout.indentation.decreaseTopLevel()}formatClauseInOnelineStyle(e){this.layout.add(L.NEWLINE,L.INDENT,this.showKw(e.nameKw),L.SPACE),this.layout=this.formatSubExpression(e.children)}formatClauseInTabularStyle(e){this.layout.add(L.NEWLINE,L.INDENT,this.showKw(e.nameKw),L.SPACE),this.layout.indentation.increaseTopLevel(),this.layout=this.formatSubExpression(e.children),this.layout.indentation.decreaseTopLevel()}formatSetOperation(e){this.layout.add(L.NEWLINE,L.INDENT,this.showKw(e.nameKw),L.NEWLINE),this.layout.add(L.INDENT),this.layout=this.formatSubExpression(e.children)}formatLimitClause(e){this.withComments(e.limitKw,()=>{this.layout.add(L.NEWLINE,L.INDENT,this.showKw(e.limitKw))}),this.layout.indentation.increaseTopLevel(),Ie(this.cfg)?this.layout.add(L.SPACE):this.layout.add(L.NEWLINE,L.INDENT),e.offset?(this.layout=this.formatSubExpression(e.offset),this.layout.add(L.NO_SPACE,",",L.SPACE),this.layout=this.formatSubExpression(e.count)):this.layout=this.formatSubExpression(e.count),this.layout.indentation.decreaseTopLevel()}formatAllColumnsAsterisk(e){this.layout.add("*",L.SPACE)}formatLiteral(e){this.layout.add(e.text,L.SPACE)}formatIdentifier(e){this.layout.add(this.showIdentifier(e),L.SPACE)}formatParameter(e){this.layout.add(this.params.get(e),L.SPACE)}formatOperator({text:e}){this.cfg.denseOperators||this.dialectCfg.alwaysDenseOperators.includes(e)?this.layout.add(L.NO_SPACE,e):e===":"?this.layout.add(L.NO_SPACE,e,L.SPACE):this.layout.add(e,L.SPACE)}formatComma(e){this.inline?this.layout.add(L.NO_SPACE,",",L.SPACE):this.layout.add(L.NO_SPACE,",",L.NEWLINE,L.INDENT)}withComments(e,t){this.formatComments(e.leadingComments),t(),this.formatComments(e.trailingComments)}formatComments(e){e&&e.forEach(t=>{t.type===f.line_comment?this.formatLineComment(t):this.formatBlockComment(t)})}formatLineComment(e){cE(e.precedingWhitespace||"")?this.layout.add(L.NEWLINE,L.INDENT,e.text,L.MANDATORY_NEWLINE,L.INDENT):this.layout.getLayoutItems().length>0?this.layout.add(L.NO_NEWLINE,L.SPACE,e.text,L.MANDATORY_NEWLINE,L.INDENT):this.layout.add(e.text,L.MANDATORY_NEWLINE,L.INDENT)}formatBlockComment(e){e.type===f.block_comment&&this.isMultilineBlockComment(e)?(this.splitBlockComment(e.text).forEach(t=>{this.layout.add(L.NEWLINE,L.INDENT,t)}),this.layout.add(L.NEWLINE,L.INDENT)):this.layout.add(e.text,L.SPACE)}isMultilineBlockComment(e){return cE(e.text)||cE(e.precedingWhitespace||"")}isDocComment(e){const t=e.split(/\n/);return/^\/\*\*?$/.test(t[0])&&t.slice(1,t.length-1).every(n=>/^\s*\*/.test(n))&&/^\s*\*\/$/.test(De(t))}splitBlockComment(e){return this.isDocComment(e)?e.split(/\n/).map(t=>/^\s*\*/.test(t)?" "+t.replace(/^\s*/,""):t):e.split(/\n/).map(t=>t.replace(/^\s*/,""))}formatSubExpression(e){return new Xe({cfg:this.cfg,dialectCfg:this.dialectCfg,params:this.params,layout:this.layout,inline:this.inline}).format(e)}formatInlineExpression(e){const t=this.params.getPositionalParameterIndex();try{return new Xe({cfg:this.cfg,dialectCfg:this.dialectCfg,params:this.params,layout:new Ua(this.cfg.expressionWidth),inline:!0}).format(e)}catch(n){if(n instanceof fE){this.params.setPositionalParameterIndex(t);return}else throw n}}formatKeywordNode(e){switch(e.tokenType){case C.RESERVED_JOIN:return this.formatJoin(e);case C.AND:case C.OR:case C.XOR:return this.formatLogicalOperator(e);default:return this.formatKeyword(e)}}formatJoin(e){Ie(this.cfg)?(this.layout.indentation.decreaseTopLevel(),this.layout.add(L.NEWLINE,L.INDENT,this.showKw(e),L.SPACE),this.layout.indentation.increaseTopLevel()):this.layout.add(L.NEWLINE,L.INDENT,this.showKw(e),L.SPACE)}formatKeyword(e){this.layout.add(this.showKw(e),L.SPACE)}formatLogicalOperator(e){this.cfg.logicalOperatorNewline==="before"?Ie(this.cfg)?(this.layout.indentation.decreaseTopLevel(),this.layout.add(L.NEWLINE,L.INDENT,this.showKw(e),L.SPACE),this.layout.indentation.increaseTopLevel()):this.layout.add(L.NEWLINE,L.INDENT,this.showKw(e),L.SPACE):this.layout.add(this.showKw(e),L.NEWLINE,L.INDENT)}formatDataType(e){this.layout.add(this.showDataType(e),L.SPACE)}showKw(e){return yt(e.tokenType)?xt(this.showNonTabularKw(e),this.cfg.indentStyle):this.showNonTabularKw(e)}showNonTabularKw(e){switch(this.cfg.keywordCase){case"preserve":return Ge(e.raw);case"upper":return e.text;case"lower":return e.text.toLowerCase()}}showFunctionKw(e){return yt(e.tokenType)?xt(this.showNonTabularFunctionKw(e),this.cfg.indentStyle):this.showNonTabularFunctionKw(e)}showNonTabularFunctionKw(e){switch(this.cfg.functionCase){case"preserve":return Ge(e.raw);case"upper":return e.text;case"lower":return e.text.toLowerCase()}}showIdentifier(e){if(e.quoted)return e.text;switch(this.cfg.identifierCase){case"preserve":return e.text;case"upper":return e.text.toUpperCase();case"lower":return e.text.toLowerCase()}}showDataType(e){switch(this.cfg.dataTypeCase){case"preserve":return Ge(e.raw);case"upper":return e.text;case"lower":return e.text.toLowerCase()}}}class xa{constructor(e,t){this.dialect=e,this.cfg=t,this.params=new ia(this.cfg.params)}format(e){const t=this.parse(e);return this.formatAst(t).trimEnd()}parse(e){return Ma(this.dialect.tokenizer).parse(e,this.cfg.paramTypes||{})}formatAst(e){return e.map(t=>this.formatStatement(t)).join(`
462
+ `.repeat(this.cfg.linesBetweenQueries+1))}formatStatement(e){const t=new Xe({cfg:this.cfg,dialectCfg:this.dialect.formatOptions,params:this.params,layout:new ST(new IT(Ra(this.cfg)))}).format(e.children);return e.hasSemicolon&&(this.cfg.newlineBeforeSemicolon?t.add(L.NEWLINE,";"):t.add(L.NO_NEWLINE,";")),t.toString()}}class He extends Error{}function ya(E){const e=["multilineLists","newlineBeforeOpenParen","newlineBeforeCloseParen","aliasAs","commaPosition","tabulateAlias"];for(const t of e)if(t in E)throw new He(`${t} config is no more supported.`);if(E.expressionWidth<=0)throw new He(`expressionWidth config must be positive number. Received ${E.expressionWidth} instead.`);if(E.params&&!ga(E.params)&&console.warn('WARNING: All "params" option values should be strings.'),E.paramTypes&&!Ga(E.paramTypes))throw new He("Empty regex given in custom paramTypes. That would result in matching infinite amount of parameters.");return E}function ga(E){return(E instanceof Array?E:Object.values(E)).every(t=>typeof t=="string")}function Ga(E){return E.custom&&Array.isArray(E.custom)?E.custom.every(e=>e.regex!==""):!0}var Ba=function(E,e){var t={};for(var n in E)Object.prototype.hasOwnProperty.call(E,n)&&e.indexOf(n)<0&&(t[n]=E[n]);if(E!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,n=Object.getOwnPropertySymbols(E);r<n.length;r++)e.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(E,n[r])&&(t[n[r]]=E[n[r]]);return t};const OT={bigquery:"bigquery",clickhouse:"clickhouse",db2:"db2",db2i:"db2i",duckdb:"duckdb",hive:"hive",mariadb:"mariadb",mysql:"mysql",n1ql:"n1ql",plsql:"plsql",postgresql:"postgresql",redshift:"redshift",spark:"spark",sqlite:"sqlite",sql:"sql",tidb:"tidb",trino:"trino",transactsql:"transactsql",tsql:"transactsql",singlestoredb:"singlestoredb",snowflake:"snowflake"},Ha=Object.keys(OT),Fa={tabWidth:2,useTabs:!1,keywordCase:"preserve",identifierCase:"preserve",dataTypeCase:"preserve",functionCase:"preserve",indentStyle:"standard",logicalOperatorNewline:"before",expressionWidth:50,linesBetweenQueries:1,denseOperators:!1,newlineBeforeSemicolon:!1},ba=(E,e={})=>{if(typeof e.language=="string"&&!Ha.includes(e.language))throw new He(`Unsupported SQL dialect: ${e.language}`);const t=OT[e.language||"sql"];return Ya(E,Object.assign(Object.assign({},e),{dialect:KA[t]}))},Ya=(E,e)=>{var{dialect:t}=e,n=Ba(e,["dialect"]);if(typeof E!="string")throw new Error("Invalid query argument. Expected string, instead got "+typeof E);const r=ya(Object.assign(Object.assign({},Fa),n));return new xa(na(t),r).format(E)},va={sql:"SQL",markdown:"MD",dql:"DQL",param:"PARAM"},_E={sql:"#388bfd",markdown:"#56d364",dql:"#e3b341",param:"#e3b341"};function Va(E,e){switch(E.status){case"running":return e.cellBorderRunning;case"success":return e.success;case"error":return e.error;default:return e.cellBorder}}function Wa({cell:E,t:e}){let t="",n=e.textMuted;return E.status==="running"?(t="[*]",n=e.cellBorderRunning):E.status==="error"?(t="[!]",n=e.error):E.executionCount!==void 0?(t=`[${E.executionCount}]`,n=e.textMuted):(t="[ ]",n=e.textMuted),T.jsx("div",{style:{width:40,display:"flex",alignItems:"flex-start",justifyContent:"center",paddingTop:12,flexShrink:0},children:T.jsx("span",{style:{fontFamily:e.fontMono,fontSize:11,color:n,lineHeight:1.4,userSelect:"none",transition:"color 0.2s"},children:t})})}function Xa(E){if(!/^\s*block\s+"/i.test(E.trim()))return null;const e=r=>{var s;return((s=E.match(new RegExp(`\\b${r}\\s*=\\s*"([^"]*)"`,"i")))==null?void 0:s[1])??""},t=E.match(/\btags\s*=\s*\[([^\]]*)\]/i),n=t?(t[1].match(/"([^"]*)"/g)??[]).map(r=>r.slice(1,-1)):[];return{domain:e("domain"),owner:e("owner"),description:e("description"),blockType:e("type")||"custom",tags:n}}function DE(E,e,t){const n=new RegExp(`(\\b${e}\\s*=\\s*)"[^"]*"`,"i");return n.test(E)?E.replace(n,`$1"${t.replace(/"/g,'\\"')}"`):E}function wa(E,e){const t=e.map(r=>`"${r}"`).join(", "),n=/(\btags\s*=\s*)\[[^\]]*\]/i;return n.test(E)?E.replace(n,`$1[${t}]`):E}function Ka({content:E,onChange:e,t}){const n=Xa(E);if(!n)return null;const r={background:t.editorBg,border:`1px solid ${t.cellBorder}`,borderRadius:3,color:t.textSecondary,fontSize:11,fontFamily:t.fontMono,padding:"2px 6px",outline:"none"},s={fontSize:9,fontWeight:700,color:t.textMuted,fontFamily:t.font,letterSpacing:"0.05em",textTransform:"uppercase",marginRight:4,flexShrink:0},o={display:"flex",alignItems:"center",gap:4};return T.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px 12px",padding:"5px 10px",borderBottom:`1px solid ${t.cellBorder}`,background:`${t.tableHeaderBg}40`},children:[T.jsxs("div",{style:o,children:[T.jsx("span",{style:s,children:"domain"}),T.jsx("input",{style:{...r,width:80},value:n.domain,placeholder:"e.g. finance",onChange:R=>e(DE(E,"domain",R.target.value))})]}),T.jsxs("div",{style:o,children:[T.jsx("span",{style:s,children:"owner"}),T.jsx("input",{style:{...r,width:90},value:n.owner,placeholder:"e.g. data-team",onChange:R=>e(DE(E,"owner",R.target.value))})]}),T.jsxs("div",{style:o,children:[T.jsx("span",{style:s,children:"tags"}),T.jsx("input",{style:{...r,width:110},value:n.tags.join(", "),placeholder:"revenue, kpi",onChange:R=>{const S=R.target.value.split(",").map(a=>a.trim()).filter(Boolean);e(wa(E,S))}})]}),T.jsxs("div",{style:{...o,flex:1},children:[T.jsx("span",{style:s,children:"description"}),T.jsx("input",{style:{...r,flex:1,minWidth:120},value:n.description,placeholder:"What this block measures",onChange:R=>e(DE(E,"description",R.target.value))})]})]})}function ja({cell:E,index:e}){const{state:t,dispatch:n}=F(),r=H[t.themeMode],{executeCell:s,executeDependents:o}=xE(),[R,S]=l.useState(!1),[a,i]=l.useState(!1),[A,I]=l.useState(E.name??""),[O,c]=l.useState(!0),[d,D]=l.useState("table"),u=Va(E,r),_=E.type!=="markdown"&&E.type!=="param",m=l.useMemo(()=>t.schemaTables.length>0?Object.fromEntries(t.schemaTables.map(p=>[p.name,p.columns.map(K=>K.name)])):void 0,[t.schemaTables]);if(E.type==="param")return T.jsxs("div",{onMouseEnter:()=>S(!0),onMouseLeave:()=>S(!1),style:{display:"flex",gap:0,marginBottom:2},children:[T.jsx("div",{style:{width:40,flexShrink:0}}),T.jsx("div",{style:{flex:1,minWidth:0},children:T.jsx(Cs,{cell:E,themeMode:t.themeMode,onApplyParam:o})})]});l.useEffect(()=>{if(E.status==="success"&&E.result){const p=hE(E.result,E.chartConfig);D(p!=="table"?"chart":"table")}},[E.status,E.result,E.chartConfig]);const G=l.useCallback(()=>{_&&s(E.id)},[E.id,s,_]),x=l.useCallback(p=>{n({type:"UPDATE_CELL",id:E.id,updates:{content:p}})},[E.id,n]),P=l.useCallback(()=>{if(E.content.trim())try{const p=ba(E.content,{language:"sql",tabWidth:2,keywordCase:"upper",linesBetweenQueries:1});n({type:"UPDATE_CELL",id:E.id,updates:{content:p}})}catch{}},[E.content,E.id,n]),y=l.useCallback(()=>{P(),setTimeout(()=>s(E.id),80)},[P,s,E.id]),B=()=>{n({type:"DELETE_CELL",id:E.id})},w=()=>{n({type:"MOVE_CELL",id:E.id,direction:"up"})},b=()=>{n({type:"MOVE_CELL",id:E.id,direction:"down"})},M=()=>{i(!1),n({type:"UPDATE_CELL",id:E.id,updates:{name:A.trim()||void 0}})},h=(E.result||E.error)&&E.type!=="markdown",g=E.result?hE(E.result,E.chartConfig)!=="table":!1;return T.jsxs("div",{onMouseEnter:()=>S(!0),onMouseLeave:()=>S(!1),style:{display:"flex",gap:0,marginBottom:2},children:[T.jsx(Wa,{cell:E,t:r}),T.jsxs("div",{style:{flex:1,minWidth:0,borderRadius:8,border:`1px solid ${R||E.status!=="idle"?u:r.cellBorder}`,borderLeft:`2px solid ${u}`,background:r.cellBg,overflow:"hidden",transition:"border-color 0.2s"},children:[T.jsxs("div",{style:{height:32,display:"flex",alignItems:"center",padding:"0 8px 0 10px",gap:8,borderBottom:`1px solid ${r.cellBorder}`,background:`${r.tableHeaderBg}80`},children:[T.jsx("span",{title:E.type==="dql"?"DQL cell — write a governed block (type, owner, description, tests) or use @metric()/@dim() refs":E.type==="sql"?"SQL cell — write raw SQL, reference other cells with {{name}}":void 0,style:{fontSize:10,fontWeight:700,fontFamily:r.fontMono,letterSpacing:"0.08em",color:_E[E.type]??r.accent,background:`${_E[E.type]??r.accent}18`,border:`1px solid ${_E[E.type]??r.accent}40`,borderRadius:4,padding:"1px 6px",flexShrink:0,textTransform:"uppercase"},children:va[E.type]}),R&&(E.type==="sql"||E.type==="dql")&&T.jsx(_s,{themeMode:t.themeMode,cellType:E.type,onInsert:p=>x(p)}),R&&(E.type==="sql"||E.type==="dql")&&T.jsx("button",{title:"Format SQL (clean up whitespace & keywords)",onClick:P,style:{background:"transparent",border:`1px solid ${r.btnBorder}`,borderRadius:4,color:r.textMuted,fontSize:10,fontFamily:r.font,fontWeight:600,letterSpacing:"0.04em",padding:"1px 7px",cursor:"pointer",transition:"color 0.15s, border-color 0.15s"},onMouseEnter:p=>{p.currentTarget.style.color=r.textSecondary,p.currentTarget.style.borderColor=r.accent},onMouseLeave:p=>{p.currentTarget.style.color=r.textMuted,p.currentTarget.style.borderColor=r.btnBorder},children:"Format"}),a?T.jsx("input",{autoFocus:!0,value:A,onChange:p=>I(p.target.value),onBlur:M,onKeyDown:p=>{p.key==="Enter"&&M(),p.key==="Escape"&&i(!1)},style:{background:"transparent",border:`1px solid ${r.cellBorderActive}`,borderRadius:4,color:r.textSecondary,fontSize:12,fontFamily:r.fontMono,padding:"1px 6px",outline:"none",width:140}}):E.name&&T.jsx("span",{onClick:()=>{I(E.name??""),i(!0)},title:"Click to rename",style:{color:r.textSecondary,fontSize:12,fontFamily:r.fontMono,cursor:"text",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:200},children:E.name}),T.jsx("div",{style:{flex:1}}),R&&T.jsxs("div",{style:{display:"flex",alignItems:"center",gap:2},children:[!E.name&&!a&&T.jsx(_e,{title:"Name this cell",onClick:()=>{I(""),i(!0)},t:r,children:T.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.253.253 0 0 0-.064.108l-.558 1.953 1.953-.558a.253.253 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z"})})}),_&&T.jsx(_e,{title:"Run cell (Shift+Enter)",onClick:G,t:r,accent:!0,children:T.jsx("svg",{width:"11",height:"11",viewBox:"0 0 10 10",fill:"currentColor",children:T.jsx("path",{d:"M1.5 1.5l7 3.5-7 3.5V1.5Z"})})}),T.jsx(_e,{title:"Move up",onClick:w,t:r,children:T.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M3.47 7.78a.75.75 0 0 1 0-1.06l4.25-4.25a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1-1.06 1.06L8.75 4.81v7.44a.75.75 0 0 1-1.5 0V4.81L4.53 7.78a.75.75 0 0 1-1.06 0Z"})})}),T.jsx(_e,{title:"Move down",onClick:b,t:r,children:T.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M12.53 8.22a.75.75 0 0 1 0 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L2.97 9.28a.75.75 0 0 1 1.06-1.06l2.72 2.97V3.75a.75.75 0 0 1 1.5 0v7.44l2.72-2.97a.75.75 0 0 1 1.06 0Z"})})}),T.jsx(_e,{title:"Delete cell",onClick:B,t:r,danger:!0,children:T.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",children:T.jsx("path",{d:"M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75ZM4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.748 1.748 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15ZM6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25Z"})})})]})]}),E.type==="dql"&&T.jsx(Ka,{content:E.content,onChange:x,t:r}),E.type==="markdown"?T.jsx(Ls,{value:E.content,onChange:x,themeMode:t.themeMode}):T.jsx(eT,{value:E.content,onChange:x,onRun:G,themeMode:t.themeMode,schema:m}),h&&T.jsxs("div",{style:{borderTop:`1px solid ${r.cellBorder}`},children:[T.jsxs("div",{style:{height:28,display:"flex",alignItems:"center",padding:"0 12px",gap:10,borderBottom:E.result&&O?`1px solid ${r.cellBorder}`:"none",background:`${r.tableHeaderBg}60`},children:[E.result&&T.jsxs("span",{style:{fontSize:11,fontFamily:r.font,color:r.textMuted},children:[(E.result.rowCount??E.result.rows.length).toLocaleString()," rows",E.result.executionTime!==void 0&&T.jsxs(T.Fragment,{children:[" · ",E.result.executionTime<1e3?`${E.result.executionTime}ms`:`${(E.result.executionTime/1e3).toFixed(2)}s`]})]}),E.error&&T.jsx("span",{style:{fontSize:11,fontFamily:r.font,color:r.error},children:"Error"}),T.jsx("div",{style:{flex:1}}),E.result&&g&&O&&T.jsx("div",{style:{display:"flex",alignItems:"center",gap:3},children:["chart","table"].map(p=>T.jsx("button",{onClick:()=>D(p),style:{padding:"1px 7px",fontSize:10,fontFamily:r.font,borderRadius:3,border:`1px solid ${d===p?r.accent:r.btnBorder}`,background:d===p?`${r.accent}20`:"transparent",color:d===p?r.accent:r.textMuted,cursor:"pointer",transition:"all 0.15s",textTransform:"capitalize"},children:p==="chart"?"Chart":"Table"},p))}),T.jsxs("button",{onClick:()=>c(p=>!p),style:{background:"transparent",border:"none",cursor:"pointer",color:r.textMuted,fontSize:11,fontFamily:r.font,padding:"2px 4px",display:"flex",alignItems:"center",gap:4},children:[T.jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"currentColor",style:{transform:O?"rotate(0deg)":"rotate(-90deg)",transition:"transform 0.15s"},children:T.jsx("path",{d:"M1 3l4 4 4-4",stroke:"currentColor",fill:"none",strokeWidth:"1.5"})}),O?"Hide":"Show"]})]}),O&&T.jsxs(T.Fragment,{children:[E.error&&T.jsx(Fs,{message:E.error,themeMode:t.themeMode,onFix:_?y:void 0,schemaTables:t.schemaTables}),E.result&&!E.error&&(d==="chart"&&g?T.jsx(gs,{result:E.result,themeMode:t.themeMode,chartConfig:E.chartConfig}):T.jsx(ET,{result:E.result,themeMode:t.themeMode}))]})]}),_&&T.jsx(Xs,{cellContent:E.content,cellType:E.type,cellName:E.name,themeMode:t.themeMode,t:r})]})]})}function _e({title:E,onClick:e,children:t,t:n,accent:r,danger:s}){const[o,R]=l.useState(!1);return T.jsx("button",{title:E,onClick:e,onMouseEnter:()=>R(!0),onMouseLeave:()=>R(!1),style:{width:24,height:24,display:"flex",alignItems:"center",justifyContent:"center",background:o?s?`${n.error}18`:r?`${n.accent}18`:n.btnHover:"transparent",border:"none",borderRadius:4,cursor:"pointer",color:o?s?n.error:r?n.accent:n.textSecondary:n.textMuted,transition:"all 0.15s",padding:0},children:t})}const ka=[{type:"sql",label:"SQL",color:"#388bfd"},{type:"markdown",label:"Markdown",color:"#56d364"},{type:"dql",label:"DQL",color:"#e3b341"},{type:"param",label:"Param",color:"#e3b341"}];function uE({afterId:E}){const{state:e,dispatch:t}=F(),n=H[e.themeMode],[r,s]=l.useState(!1),[o,R]=l.useState(!1),S=l.useRef(null);l.useEffect(()=>{if(!o)return;function i(A){S.current&&!S.current.contains(A.target)&&R(!1)}return document.addEventListener("mousedown",i),()=>document.removeEventListener("mousedown",i)},[o]);const a=i=>{const A=Z(i);t({type:"ADD_CELL",cell:A,afterId:E}),R(!1)};return T.jsxs("div",{ref:S,onMouseEnter:()=>s(!0),onMouseLeave:()=>{s(!1)},style:{position:"relative",height:28,display:"flex",alignItems:"center",justifyContent:"center",cursor:"default"},children:[T.jsx("div",{style:{position:"absolute",left:0,right:0,height:1,background:r||o?n.cellBorderActive:"transparent",transition:"background 0.15s"}}),(r||o)&&T.jsxs("button",{onClick:()=>R(i=>!i),style:{position:"relative",zIndex:2,height:22,padding:"0 10px",borderRadius:11,border:`1px solid ${n.cellBorderActive}`,background:`${n.accent}18`,color:n.accent,cursor:"pointer",fontSize:12,fontFamily:n.font,fontWeight:500,display:"flex",alignItems:"center",gap:4,transition:"background 0.15s"},children:[T.jsx("span",{style:{fontSize:14,lineHeight:1,marginTop:-1},children:"+"}),"Add cell"]}),o&&T.jsx("div",{style:{position:"absolute",top:26,left:"50%",transform:"translateX(-50%)",zIndex:100,background:n.modalBg,border:`1px solid ${n.cellBorder}`,borderRadius:8,boxShadow:"0 8px 24px rgba(0,0,0,0.3)",padding:4,display:"flex",gap:4},children:ka.map(({type:i,label:A,color:I})=>T.jsx($a,{label:A,color:I,onClick:()=>a(i),t:n},i))})]})}function $a({label:E,color:e,onClick:t,t:n}){const[r,s]=l.useState(!1);return T.jsx("button",{onClick:t,onMouseEnter:()=>s(!0),onMouseLeave:()=>s(!1),style:{background:r?`${e}18`:"transparent",border:`1px solid ${r?e:n.cellBorder}`,borderRadius:6,cursor:"pointer",color:r?e:n.textSecondary,fontSize:11,fontFamily:n.fontMono,fontWeight:600,padding:"4px 10px",letterSpacing:"0.04em",transition:"all 0.15s",whiteSpace:"nowrap"},children:E})}function Ja({registerCellRef:E}){const{state:e,dispatch:t}=F(),{executeCell:n}=xE(),r=H[e.themeMode],[s,o]=l.useState(null),R=l.useRef(0);return l.useCallback(S=>{o(S)},[]),l.useEffect(()=>{function S(a){var O;if(!s)return;const i=a.target;if(i.tagName==="TEXTAREA"||i.tagName==="INPUT"||i.isContentEditable||i.closest(".cm-editor")){o(null);return}const A=e.cells,I=A.findIndex(c=>c.id===s);if(I!==-1)switch(a.key){case"a":{a.preventDefault();const c=Z("sql");if(I===0)t({type:"ADD_CELL",cell:c,afterId:A[0].id}),t({type:"MOVE_CELL",id:c.id,direction:"up"});else{const d=A[I-1].id;t({type:"ADD_CELL",cell:c,afterId:d})}o(c.id);break}case"b":{a.preventDefault();const c=Z("sql");t({type:"ADD_CELL",cell:c,afterId:s}),o(c.id);break}case"d":{a.preventDefault();const c=Date.now();if(c-R.current<=500){if(t({type:"DELETE_CELL",id:s}),A.length>1){const d=I>0?I-1:1;o(((O=A[d])==null?void 0:O.id)??null)}else o(null);R.current=0}else R.current=c;break}case"Enter":{if(a.shiftKey){a.preventDefault();const c=A[I];c&&c.type!=="markdown"&&n(c.id)}break}}}return document.addEventListener("keydown",S),()=>document.removeEventListener("keydown",S)},[s,e.cells,t,n]),l.useEffect(()=>{function S(a){a.target.closest("[data-cell-id]")||o(null)}return document.addEventListener("mousedown",S),()=>document.removeEventListener("mousedown",S)},[]),e.cells.length===0?T.jsxs("div",{style:{maxWidth:1200,margin:"0 auto",padding:"0 24px",display:"flex",flexDirection:"column"},children:[T.jsx(uE,{}),T.jsx(Qa,{t:r})]}):T.jsxs("div",{style:{maxWidth:1200,margin:"0 auto",padding:"0 24px",display:"flex",flexDirection:"column"},children:[T.jsx(uE,{afterId:void 0}),e.cells.map((S,a)=>T.jsxs(Fe.Fragment,{children:[T.jsx("div",{ref:i=>E(S.id,i),"data-cell-id":S.id,onClick:i=>{const A=i.target;!A.closest(".cm-editor")&&!A.closest("textarea")&&!A.closest("input")&&o(S.id)},style:{outline:s===S.id?`2px solid ${r.accent}40`:"none",outlineOffset:2,borderRadius:10,transition:"outline 0.1s"},children:T.jsx(ja,{cell:S,index:a})}),T.jsx(uE,{afterId:S.id})]},S.id))]})}function Qa({t:E}){return T.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:"48px 0",gap:12,color:E.textMuted},children:[T.jsx("svg",{width:"40",height:"40",viewBox:"0 0 16 16",fill:"currentColor",style:{opacity:.3},children:T.jsx("path",{d:"M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 8.75 4.25V1.5ZM8.75 5.5h2.836L10.25 3.664V4.25c0 .138.112.25.25.25H8.75Z"})}),T.jsx("span",{style:{fontSize:13,fontFamily:E.font},children:"Empty notebook. Click + to add your first cell."})]})}function Za({onOpenFile:E,registerCellRef:e}){const{state:t}=F(),n=H[t.themeMode];return t.activeFile?T.jsxs("div",{style:{flex:1,display:"flex",flexDirection:"column",overflow:"hidden",background:n.appBg},children:[T.jsx(qa,{t:n}),T.jsx("div",{style:{flex:1,overflow:"auto",padding:"24px 0 40px"},children:T.jsx(Ja,{registerCellRef:e})})]}):T.jsx(Wn,{onOpenFile:E})}function qa({t:E}){const{state:e}=F(),t=e.cells.length;return T.jsxs("div",{style:{height:32,flexShrink:0,borderBottom:`1px solid ${E.headerBorder}`,background:E.cellBg,display:"flex",alignItems:"center",padding:"0 16px",gap:12},children:[T.jsx(za,{t:E}),T.jsx("div",{style:{flex:1}}),T.jsxs("span",{style:{fontSize:11,color:E.textMuted,fontFamily:E.font,display:"flex",alignItems:"center",gap:12},children:[T.jsxs("span",{children:[t," ",t===1?"cell":"cells"]}),e.notebookDirty&&T.jsx("span",{style:{color:E.warning},children:"● unsaved"})]})]})}function za({t:E}){const{state:e}=F();if(!e.activeFile)return null;const t=e.activeFile.path.split("/").filter(Boolean);return T.jsx("div",{style:{display:"flex",alignItems:"center",gap:4,fontSize:12,fontFamily:E.fontMono,color:E.textMuted,overflow:"hidden"},children:t.map((n,r)=>T.jsxs(Fe.Fragment,{children:[r>0&&T.jsx("span",{style:{color:E.textMuted,opacity:.5},children:"/"}),T.jsx("span",{style:{color:r===t.length-1?E.textSecondary:E.textMuted,fontWeight:r===t.length-1?500:400,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:r===t.length-1?200:100},children:n})]},r))})}const gt={blank:"Blank",revenue:"Revenue Analysis",pipeline:"Pipeline Health"},eS={blank:"Start with an empty notebook.",revenue:"Pre-built queries for revenue metrics and trends.",pipeline:"Templates for data pipeline health monitoring."};function Gt(E){return E.toLowerCase().replace(/[^a-z0-9\-_\s]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").slice(0,64)}function ES(E){return E.trim()?/^[a-zA-Z0-9\-_ ]+$/.test(E)?null:"Only letters, numbers, hyphens, underscores, and spaces allowed.":"Name is required."}function tS(E){switch(E){case"revenue":return[Z("markdown",`# Revenue Analysis
463
+
464
+ This notebook analyzes revenue metrics and trends over time.`),{...Z("sql",`SELECT
465
+ DATE_TRUNC('month', order_date) AS month,
466
+ SUM(amount) AS revenue
467
+ FROM orders
468
+ GROUP BY 1
469
+ ORDER BY 1`),name:"monthly_revenue"},{...Z("sql",`SELECT
470
+ product_category,
471
+ SUM(amount) AS total_revenue,
472
+ COUNT(*) AS orders
473
+ FROM orders
474
+ GROUP BY 1
475
+ ORDER BY 2 DESC`),name:"revenue_by_category"}];case"pipeline":return[Z("markdown",`# Pipeline Health
476
+
477
+ Monitor data pipeline performance, SLA compliance, and error rates.`),{...Z("sql",`SELECT
478
+ pipeline_name,
479
+ COUNT(*) AS runs,
480
+ AVG(duration_seconds) AS avg_duration,
481
+ SUM(CASE WHEN status = 'failed' THEN 1 ELSE 0 END) AS failures
482
+ FROM pipeline_runs
483
+ GROUP BY 1
484
+ ORDER BY 4 DESC`),name:"pipeline_summary"},{...Z("sql",`SELECT
485
+ *
486
+ FROM pipeline_runs
487
+ WHERE status = 'failed'
488
+ AND run_date >= CURRENT_DATE - INTERVAL '7 days'
489
+ ORDER BY run_date DESC`),name:"recent_failures"}];default:return[Z("sql")]}}function TS({onFileOpened:E}){const{state:e,dispatch:t}=F(),n=H[e.themeMode],[r,s]=l.useState(""),[o,R]=l.useState("blank"),[S,a]=l.useState(null),[i,A]=l.useState(!1),I=l.useRef(null);l.useEffect(()=>{var d;(d=I.current)==null||d.focus()},[]),l.useEffect(()=>{const d=D=>{D.key==="Escape"&&t({type:"CLOSE_NEW_NOTEBOOK_MODAL"})};return document.addEventListener("keydown",d),()=>document.removeEventListener("keydown",d)},[t]);const O=async()=>{const d=ES(r);if(d){a(d);return}A(!0),a(null);const D=Gt(r),u=tS(o);try{const _=await Y.createNotebook(D,o),m={name:`${D}.dqlnb`,path:_.path,type:"notebook",folder:"notebooks",isNew:!0};t({type:"FILE_ADDED",file:m}),t({type:"OPEN_FILE",file:m,cells:u,title:r.trim()}),t({type:"CLOSE_NEW_NOTEBOOK_MODAL"}),E(m)}catch{const _=`notebooks/${D}.dqlnb`,m={name:`${D}.dqlnb`,path:_,type:"notebook",folder:"notebooks",isNew:!0};t({type:"FILE_ADDED",file:m}),t({type:"OPEN_FILE",file:m,cells:u,title:r.trim()}),t({type:"CLOSE_NEW_NOTEBOOK_MODAL"}),E(m)}finally{A(!1)}},c=d=>{d.target===d.currentTarget&&t({type:"CLOSE_NEW_NOTEBOOK_MODAL"})};return T.jsx("div",{onClick:c,style:{position:"fixed",inset:0,background:n.modalOverlay,display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e3,backdropFilter:"blur(4px)"},children:T.jsxs("div",{style:{background:n.modalBg,border:`1px solid ${n.cellBorder}`,borderRadius:12,width:480,maxWidth:"calc(100vw - 48px)",boxShadow:"0 20px 60px rgba(0,0,0,0.5)",overflow:"hidden"},children:[T.jsxs("div",{style:{padding:"20px 24px 0",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[T.jsx("h2",{style:{fontSize:16,fontWeight:600,color:n.textPrimary,fontFamily:n.font,margin:0},children:"New Notebook"}),T.jsx("button",{onClick:()=>t({type:"CLOSE_NEW_NOTEBOOK_MODAL"}),style:{background:"transparent",border:"none",cursor:"pointer",color:n.textMuted,fontSize:18,lineHeight:1,padding:"2px 4px",borderRadius:4},children:"×"})]}),T.jsxs("div",{style:{padding:"20px 24px 24px",display:"flex",flexDirection:"column",gap:20},children:[T.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[T.jsx("label",{style:{fontSize:12,fontWeight:500,color:n.textSecondary,fontFamily:n.font},children:"Name"}),T.jsx("input",{ref:I,value:r,onChange:d=>{s(d.target.value),a(null)},onKeyDown:d=>{d.key==="Enter"&&O()},placeholder:"my-analysis",style:{background:n.inputBg,border:`1px solid ${S?n.error:n.inputBorder}`,borderRadius:6,color:n.textPrimary,fontSize:13,fontFamily:n.font,padding:"8px 12px",outline:"none",transition:"border-color 0.15s"}}),S&&T.jsx("span",{style:{fontSize:11,color:n.error,fontFamily:n.font},children:S}),r&&!S&&T.jsxs("span",{style:{fontSize:11,color:n.textMuted,fontFamily:n.fontMono},children:["File: ",Gt(r),".dqlnb"]})]}),T.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[T.jsx("label",{style:{fontSize:12,fontWeight:500,color:n.textSecondary,fontFamily:n.font},children:"Template"}),T.jsx("div",{style:{display:"flex",flexDirection:"column",gap:8},children:Object.keys(gt).map(d=>T.jsx(rS,{value:d,selected:o===d,onSelect:()=>R(d),label:gt[d],description:eS[d],t:n},d))})]})]}),T.jsxs("div",{style:{padding:"14px 24px",borderTop:`1px solid ${n.cellBorder}`,display:"flex",justifyContent:"flex-end",gap:10},children:[T.jsx("button",{onClick:()=>t({type:"CLOSE_NEW_NOTEBOOK_MODAL"}),style:{background:n.btnBg,border:`1px solid ${n.btnBorder}`,borderRadius:6,color:n.textSecondary,cursor:"pointer",fontSize:13,fontFamily:n.font,fontWeight:500,padding:"7px 16px"},children:"Cancel"}),T.jsx("button",{onClick:O,disabled:i||!r.trim(),style:{background:n.accent,border:`1px solid ${n.accent}`,borderRadius:6,color:"#ffffff",cursor:i||!r.trim()?"not-allowed":"pointer",fontSize:13,fontFamily:n.font,fontWeight:500,padding:"7px 20px",opacity:i||!r.trim()?.6:1,display:"flex",alignItems:"center",gap:6},children:i?"Creating…":"Create Notebook"})]})]})})}function rS({value:E,selected:e,onSelect:t,label:n,description:r,t:s}){const[o,R]=l.useState(!1);return T.jsxs("div",{onClick:t,onMouseEnter:()=>R(!0),onMouseLeave:()=>R(!1),style:{display:"flex",alignItems:"flex-start",gap:10,padding:"10px 12px",borderRadius:8,border:`1px solid ${e?s.cellBorderActive:o?s.textMuted:s.inputBorder}`,background:e?`${s.cellBorderActive}10`:o?s.sidebarItemHover:"transparent",cursor:"pointer",transition:"all 0.15s"},children:[T.jsx("div",{style:{width:16,height:16,borderRadius:8,border:`2px solid ${e?s.accent:s.textMuted}`,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,marginTop:1,transition:"border-color 0.15s"},children:e&&T.jsx("div",{style:{width:8,height:8,borderRadius:4,background:s.accent}})}),T.jsxs("div",{children:[T.jsx("div",{style:{fontSize:13,fontWeight:500,color:s.textPrimary,fontFamily:s.font,marginBottom:2},children:n}),T.jsx("div",{style:{fontSize:12,color:s.textSecondary,fontFamily:s.font},children:r})]})]})}function nS(){const{state:E,dispatch:e}=F(),t=H[E.themeMode],n=l.useRef({}),r=l.useCallback(async R=>{try{const{content:S}=await Y.readNotebook(R.path),{title:a,cells:i}=Ln(R.path,S);e({type:"OPEN_FILE",file:R,cells:i,title:a}),E.sidebarPanel!=="files"&&e({type:"SET_SIDEBAR_PANEL",panel:"files"})}catch(S){console.error("Failed to open file:",S),e({type:"OPEN_FILE",file:R,cells:[Z("sql")],title:R.name})}},[e,E.sidebarPanel]),s=l.useCallback(R=>{const S=n.current[R];S&&S.scrollIntoView({behavior:"smooth",block:"start"})},[]),o=l.useCallback((R,S)=>{S?n.current[R]=S:delete n.current[R]},[]);return T.jsxs("div",{style:{display:"flex",flexDirection:"column",height:"100vh",width:"100vw",background:t.appBg,fontFamily:t.font,color:t.textPrimary,overflow:"hidden"},children:[T.jsx(Hn,{}),T.jsxs("div",{style:{flex:1,display:"flex",overflow:"hidden"},children:[T.jsx(Nr,{}),E.sidebarOpen&&T.jsx(On,{onOpenFile:r,onNavigateToCell:s}),T.jsxs("div",{style:{flex:1,display:"flex",flexDirection:"column",overflow:"hidden",minWidth:0},children:[T.jsx(Za,{onOpenFile:r,registerCellRef:o}),T.jsx(vn,{})]})]}),E.newNotebookModalOpen&&T.jsx(TS,{onFileOpened:r})]})}function sS(){const{state:E,dispatch:e}=F(),t=l.useRef(null),n=l.useRef(null);l.useEffect(()=>{var r;t.current=((r=E.activeFile)==null?void 0:r.path)??null},[E.activeFile]),l.useEffect(()=>{if(typeof EventSource>"u")return;const r=()=>{const s=new EventSource(`${window.location.origin}/api/watch`);n.current=s,s.addEventListener("change",o=>{try{const R=JSON.parse(o.data);(R.type==="file-added"||R.type==="file-deleted")&&Y.listNotebooks().then(S=>{e({type:"SET_FILES",files:S})}),R.type==="file-changed"&&Y.listNotebooks().then(S=>{e({type:"SET_FILES",files:S})}),R.type==="semantic-reload"&&(e({type:"SET_SEMANTIC_LOADING",loading:!0}),Y.getSemanticLayer().then(S=>{e({type:"SET_SEMANTIC_LAYER",layer:S})}))}catch{}}),s.addEventListener("error",()=>{s.close(),setTimeout(r,5e3)})};return r(),()=>{var s;(s=n.current)==null||s.close(),n.current=null}},[e])}function oS(){const{state:E,dispatch:e}=F(),t=H[E.themeMode];return l.useEffect(()=>{const n="dql-global-styles";let r=document.getElementById(n);r||(r=document.createElement("style"),r.id=n,document.head.appendChild(r)),r.textContent=`
490
+ * { margin: 0; padding: 0; box-sizing: border-box; }
491
+ body {
492
+ font-family: ${t.font};
493
+ overflow: hidden;
494
+ background: ${t.appBg};
495
+ color: ${t.textPrimary};
496
+ }
497
+ ::-webkit-scrollbar { width: 6px; height: 6px; }
498
+ ::-webkit-scrollbar-track { background: transparent; }
499
+ ::-webkit-scrollbar-thumb {
500
+ background: ${t.scrollbarThumb};
501
+ border-radius: 3px;
502
+ }
503
+ ::-webkit-scrollbar-thumb:hover {
504
+ background: ${t.textMuted};
505
+ }
506
+ ::selection {
507
+ background: ${t.accent}40;
508
+ color: ${t.textPrimary};
509
+ }
510
+ `},[t]),l.useEffect(()=>{e({type:"SET_FILES_LOADING",loading:!0}),Y.listNotebooks().then(n=>{e({type:"SET_FILES",files:n}),e({type:"SET_FILES_LOADING",loading:!1})})},[e]),l.useEffect(()=>{e({type:"SET_SCHEMA_LOADING",loading:!0}),Y.getSchema().then(n=>{e({type:"SET_SCHEMA",tables:n}),e({type:"SET_SCHEMA_LOADING",loading:!1})})},[e]),sS(),T.jsx(nS,{})}function RS(){return T.jsx(rr,{children:T.jsx(oS,{})})}Er.createRoot(document.getElementById("root")).render(T.jsx(RS,{}));