@vector-business-services/cristal-ds-web 0.12.0 → 0.13.0

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Accordion/Accordion.tsx","../src/components/AutoComplete/AutoComplete.tsx","../src/components/Badge/Badge.tsx","../src/components/Button/Button.tsx","../src/components/Card/Card.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Chart/Chart.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Chip/Chip.tsx","../src/components/Divider/Divider.tsx","../src/components/IconButton/IconButton.tsx","../src/components/Drawer/Drawer.tsx","../src/components/Input/Input.tsx","../src/components/Menu/Menu.tsx","../src/components/Menubar/Menubar.tsx","../src/components/Tag/Tag.tsx","../src/components/MenuPrincipal/MenuPrincipal.tsx","../src/components/Message/Message.tsx","../src/components/Modal/Modal.tsx","../src/components/MultiSelect/MultiSelect.tsx","../src/components/PageHeader/PageHeader.tsx","../src/components/Select/Select.tsx","../src/components/Paginator/Paginator.tsx","../src/components/Panel/Panel.tsx","../src/components/Radio/Radio.tsx","../src/components/ScrollPanel/ScrollPanel.tsx","../src/components/SegmentControl/SegmentControl.tsx","../src/components/Switch/Switch.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Toast/Toast.tsx"],"names":["jsx","forwardRef","Accordion","useRef","useImperativeHandle","useState","Children","isValidElement","PrimeAccordion","CaretDown","CaretUp","PrimeAccordionTab","jsxs","AutoComplete","useId","PrimeAutoComplete","WarningCircle","Info","Badge","PrimeBadge","Button","PrimeButton","Card","PrimeCard","useEffect","PrimeTooltip","useLayoutEffect","useMemo","Fragment","Question","PrimeChart","Checkbox","useCallback","PrimeCheckbox","Check","Chip","X","PrimeChip","Divider","PrimeDivider","IconButton","Sidebar","ArrowLeft","Input","InputText","Menu","useContext","PrimeReactContext","CircleNotch","menu","PrimeMenu","PrimeReactProvider","PrimeAvatar","Menubar","List","MagnifyingGlass","PrimeMenubar","Tag","PrimeTag","MenuPrincipal","DribbbleLogo","Warning","CheckCircle","XCircle","SealWarning","Message","PrimeMessage","Dialog","MultiSelect","options","PrimeMultiSelect","PageHeader","cloneElement","ArrowsOutSimple","TabMenu","Select","Dropdown","seta","Paginator","PrimePaginator","CaretDoubleLeft","CaretLeft","CaretRight","CaretDoubleRight","Panel","PrimePanel","Radio","RadioButton","ScrollPanel","PrimeScrollPanel","SegmentControl","SelectButton","Switch","InputSwitch","Tabs","TabView","PrimeTabPanel","SEVERITY","ICON","Toast","PrimeToast"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCO,SAAS,aAAa,MAAA,EAAiC;AAC5D,EAAA,OAAO,IAAA;AACT;AAkBA,IAAM,IAAA,GAAO,CAAC,IAAA,qBACZA,cAAA,CAAC,UAAK,SAAA,EAAU,sBAAA,EAAuB,aAAA,EAAY,MAAA,EAChD,QAAA,EAAA,IAAA,EACH,CAAA;AASK,IAAM,SAAA,GAAYC,gBAAA,CAA2C,SAASC,UAAAA,CAC3E,EAAE,QAAA,GAAW,KAAA,EAAO,WAAA,EAAa,WAAA,EAAa,QAAA,EAAU,EAAA,EAAI,SAAA,IAC5D,GAAA,EACA;AACA,EAAA,MAAM,QAAA,GAAWC,aAAuB,IAAI,CAAA;AAC5C,EAAAC,yBAAA,CAAoB,GAAA,EAAK,MAAM,QAAA,CAAS,OAAA,EAAS,YAA8B,CAAA;AAI/E,EAAA,MAAM,CAAC,SAAS,UAAU,CAAA,GAAIC,eAAmC,QAAA,GAAW,CAAC,CAAC,CAAA,GAAI,CAAC,CAAA;AACnF,EAAA,MAAM,OAAA,GAAU,WAAA,KAAgB,MAAA,GAAY,OAAA,GAAU,WAAA;AAEtD,EAAA,MAAM,IAAA,GAAOC,cAAA,CAAS,OAAA,CAAQ,QAAQ,CAAA,CAAE,MAAA;AAAA,IACtC,CAAC,KAAA,KAAoDC,oBAAA,CAAe,KAAK;AAAA,GAC3E;AAEA,EAAA,uBACEP,cAAA;AAAA,IAACQ,mBAAA;AAAA,IAAA;AAAA,MAEE,GAAI,EAAE,QAAA,EAAU,IAAA,EAAK;AAAA,MACtB,GAAA,EAAK,QAAA;AAAA,MACL,EAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA,EAAa,OAAA;AAAA,MACb,WAAA,EAAa,CAAC,KAAA,KAAU;AACtB,QAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,QAAA,UAAA,CAAW,KAAK,CAAA;AAChB,QAAA,WAAA,GAAc,KAAK,CAAA;AAAA,MACrB,CAAA;AAAA,MACA,UAAA,EAAY,IAAA,iBAAKR,cAAA,CAACS,iBAAA,EAAA,EAAU,CAAE,CAAA;AAAA,MAC9B,YAAA,EAAc,IAAA,iBAAKT,cAAA,CAACU,eAAA,EAAA,EAAQ,CAAE,CAAA;AAAA,MAC9B,EAAA,EAAI,EAAE,IAAA,EAAM,EAAE,WAAW,CAAC,cAAA,EAAgB,SAAS,CAAA,CAAE,OAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,GAAE,EAAE;AAAA,MAEhF,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,EAAK,KAAA,qBACdV,cAAA;AAAA,QAACW,sBAAA;AAAA,QAAA;AAAA,UAEC,MAAA,EAAQ,IAAI,KAAA,CAAM,MAAA;AAAA,UAClB,QAAA,EAAU,IAAI,KAAA,CAAM,QAAA;AAAA,UACpB,cAAA,EACE,GAAA,CAAI,KAAA,CAAM,aAAA,kCACP,MAAA,EAAA,EAAK,SAAA,EAAU,sBAAA,EAAwB,QAAA,EAAA,GAAA,CAAI,MAAM,aAAA,EAAc,CAAA,mBAEhEC,eAAA,CAAC,MAAA,EAAA,EAAK,WAAU,qBAAA,EACd,QAAA,EAAA;AAAA,4BAAAZ,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAA,EAAuB,QAAA,EAAA,GAAA,CAAI,MAAM,MAAA,EAAO,CAAA;AAAA,YACvD,GAAA,CAAI,MAAM,WAAA,oBACTA,cAAA,CAAC,UAAK,SAAA,EAAU,2BAAA,EAA6B,QAAA,EAAA,GAAA,CAAI,KAAA,CAAM,WAAA,EAAY;AAAA,WAAA,EAEvE,CAAA;AAAA,UAGJ,EAAA,EAAI;AAAA,YACF,IAAA,EAAM,EAAE,SAAA,EAAW,oBAAA,EAAqB;AAAA,YACxC,MAAA,EAAQ,EAAE,SAAA,EAAW,sBAAA,EAAuB;AAAA,YAC5C,YAAA,EAAc,EAAE,SAAA,EAAW,sBAAA,EAAuB;AAAA,YAClD,iBAAA,EAAmB,EAAE,SAAA,EAAW,sBAAA,EAAuB;AAAA,YACvD,OAAA,EAAS,EAAE,SAAA,EAAW,uBAAA,EAAwB;AAAA;AAAA,YAE9C,UAAA,EAAY,EAAE,OAAA,EAAS,CAAA;AAAE,WAC3B;AAAA,UAEC,cAAI,KAAA,CAAM;AAAA,SAAA;AAAA,QAzBN,IAAI,GAAA,IAAO;AAAA,OA2BnB;AAAA;AAAA,GACH;AAEJ,CAAC;ACxEM,IAAM,YAAA,GAAeC,gBAAAA,CAAgD,SAASY,aAAAA,CACnF;AAAA,EACE,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,OAAA;AAAA,EACP,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,SAASC,WAAA,EAAM;AACrB,EAAA,MAAM,KAAK,OAAA,IAAW,MAAA;AACtB,EAAA,MAAM,MAAA,GAAS,GAAG,EAAE,CAAA,KAAA,CAAA;AACpB,EAAA,MAAM,cAAc,KAAA,IAAS,IAAA;AAE7B,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,UAAA;AAAA,IACA,iBAAA;AAAA,IACA,aAAa,OAAO,CAAA,CAAA;AAAA,IACpB,aAAa,IAAI,CAAA,CAAA;AAAA,IACjB,KAAA,IAAS,iBAAA;AAAA,IACT,QAAA,IAAY,oBAAA;AAAA,IACZ;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACEF,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,SAAS,KAAA,EACtB,QAAA,EAAA;AAAA,IAAA,KAAA,oBACCA,eAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,iBAAA,EAAkB,SAAS,EAAA,EACzC,QAAA,EAAA;AAAA,MAAA,KAAA;AAAA,MACA,QAAA,oBACCZ,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,oBAAA,EAAqB,aAAA,EAAY,QAAO,QAAA,EAAA,GAAA,EAExD;AAAA,KAAA,EAEJ,CAAA;AAAA,oBAEFA,cAAAA;AAAA,MAACe,yBAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACR,QAAA,EAAU,GAAA;AAAA,QACV,OAAA,EAAS,EAAA;AAAA,QACT,QAAA;AAAA,QACA,QAAA;AAAA,QAEA,YAAA,EAAa,OAAA;AAAA,QACb,EAAA,EAAI;AAAA,UACF,IAAA,EAAM,EAAE,SAAA,EAAW,uBAAA,EAAwB;AAAA,UAC3C,KAAA,EAAO;AAAA,YACL,IAAA,EAAM;AAAA,cACJ,SAAA,EAAW,0CAAA;AAAA,cACX,kBAAA,EAAoB,cAAc,MAAA,GAAS,MAAA;AAAA,cAC3C,cAAA,EAAgB,QAAQ,IAAA,GAAO;AAAA;AACjC,WACF;AAAA;AAAA,UAEA,WAAA,EAAa,EAAE,SAAA,EAAW,yBAAA,EAA0B;AAAA,UACpD,KAAA,EAAO,EAAE,SAAA,EAAW,wBAAA,EAAyB;AAAA,UAC7C,IAAA,EAAM,EAAE,SAAA,EAAW,uBAAA,EAAwB;AAAA,UAC3C,IAAA,EAAM,EAAE,SAAA,EAAW,uBAAA;AAAwB,SAC7C;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,IACC,WAAA,oBACCH,eAAAA,CAAC,GAAA,EAAA,EAAE,EAAA,EAAI,MAAA,EAAQ,SAAA,EAAW,CAAA,cAAA,EAAiB,KAAA,GAAQ,wBAAA,GAA2B,EAAE,CAAA,CAAA,EAC9E,QAAA,EAAA;AAAA,sBAAAZ,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAA,EAAsB,eAAY,MAAA,EAC/C,QAAA,EAAA,KAAA,mBAAQA,cAAAA,CAACgB,qBAAA,EAAA,EAAc,CAAA,mBAAKhB,cAAAA,CAACiB,gBAAK,CAAA,EACrC,CAAA;AAAA,MACC;AAAA,KAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ,CAAC;AChHM,IAAM,KAAA,GAAQhB,gBAAAA,CAAwC,SAASiB,MAAAA,CACpE,EAAE,OAAA,GAAU,SAAA,EAAW,IAAA,GAAO,OAAA,EAAS,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,IAC/D,GAAA,EACA;AACA,EAAA,MAAM,QAAA,GAAWf,aAAmB,IAAI,CAAA;AAExC,EAAAC,0BAAoB,GAAA,EAAK,MAAM,QAAA,CAAS,OAAA,EAAS,YAA+B,CAAA;AAEhF,EAAA,MAAM,OAAA,GAAU,CAAC,UAAA,EAAY,CAAA,UAAA,EAAa,OAAO,CAAA,CAAA,EAAI,CAAA,UAAA,EAAa,IAAI,CAAA,CAAA,EAAI,SAAS,CAAA,CAChF,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACEJ,cAAAA;AAAA,IAACmB,WAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MACR,GAAA,EAAK,QAAA;AAAA,MACL,SAAA,EAAW,OAAA;AAAA,MACX,KAAA,EAAO,IAAA,KAAS,OAAA,GAAU,IAAA,GAAO,QAAA;AAAA,MAChC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;ACzBM,IAAM,MAAA,GAASlB,gBAAAA,CAA2C,SAASmB,OAAAA,CACxE;AAAA,EACE,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,OAAA;AAAA,EACP,WAAA;AAAA,EACA,YAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,OAAA,GAAU,CAAC,WAAA,EAAa,CAAA,WAAA,EAAc,OAAO,CAAA,CAAA,EAAI,CAAA,WAAA,EAAc,IAAI,CAAA,CAAA,EAAI,SAAS,CAAA,CACnF,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACER,eAAAA;AAAA,IAACS,aAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MAER,GAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAA,EAAW,OAAA;AAAA,MACV,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,WAAA,oBACCrB,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,iBAAA,EAAkB,aAAA,EAAY,QAC3C,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,QAED,QAAA;AAAA,QACA,YAAA,oBACCA,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,iBAAA,EAAkB,aAAA,EAAY,QAC3C,QAAA,EAAA,YAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ,CAAC;AC5CM,IAAM,IAAA,GAAOC,gBAAAA,CAAsC,SAASqB,KAAAA,CACjE,EAAE,OAAA,GAAU,QAAA,EAAU,OAAA,GAAU,KAAA,EAAO,WAAW,KAAA,EAAO,QAAA,EAAU,GAAG,KAAA,IACtE,GAAA,EACA;AACA,EAAA,MAAM,OAAA,GAAU,CAAC,SAAA,EAAW,CAAA,SAAA,EAAY,OAAO,CAAA,CAAA,EAAI,OAAA,IAAW,kBAAA,EAAoB,SAAS,CAAA,CACxF,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACEtB,cAAAA;AAAA,IAACuB,SAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MAER,GAAA;AAAA,MAEA,EAAA,EAAI;AAAA,QACF,IAAA,EAAM,EAAE,SAAA,EAAW,OAAA,EAAS,KAAA,EAAM;AAAA,QAClC,IAAA,EAAM,EAAE,SAAA,EAAW,eAAA,EAAgB;AAAA,QACnC,OAAA,EAAS,EAAE,SAAA,EAAW,kBAAA;AAAmB,OAC3C;AAAA,MACC,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;ACfD,IAAM,cAAA,GAAiB,CAAC,MAAA,KAAkD;AACxE,EAAA,IAAI,OAAO,WAAW,QAAA,EAAU,OAAO,MAAM,IAAA,CAAK,QAAA,CAAS,gBAAA,CAA8B,MAAM,CAAC,CAAA;AAChG,EAAA,IAAI,MAAA,YAAkB,WAAA,EAAa,OAAO,CAAC,MAAM,CAAA;AACjD,EAAA,OAAO,OAAO,OAAA,GAAU,CAAC,MAAA,CAAO,OAAO,IAAI,EAAC;AAC9C,CAAA;AAMO,SAAS,OAAA,CAAQ;AAAA,EACtB,MAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA,GAAO,OAAA;AAAA,EACP,QAAA,GAAW,QAAA;AAAA,EACX,KAAA,GAAQ,MAAA;AAAA,EACR,SAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA;AACF,CAAA,EAAiB;AACf,EAAA,MAAM,SAAST,WAAAA,EAAM;AACrB,EAAA,MAAM,YAAY,EAAA,IAAM,MAAA;AAExB,EAAAU,eAAA,CAAU,MAAM;AACd,IAAA,MAAM,QAAA,GAAW,eAAe,MAAM,CAAA;AACtC,IAAA,QAAA,CAAS,QAAQ,CAAC,OAAA,KAAY,QAAQ,YAAA,CAAa,kBAAA,EAAoB,SAAS,CAAC,CAAA;AACjF,IAAA,OAAO,MAAM,SAAS,OAAA,CAAQ,CAAC,YAAY,OAAA,CAAQ,eAAA,CAAgB,kBAAkB,CAAC,CAAA;AAAA,EACxF,CAAA,EAAG,CAAC,MAAA,EAAQ,SAAS,CAAC,CAAA;AAEtB,EAAA,MAAM,OAAA,GAAU,CAAC,YAAA,EAAc,CAAA,YAAA,EAAe,IAAI,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAEzF,EAAA,MAAM,EAAA,GAAgC;AAAA,IACpC,IAAA,EAAM,CAAC,OAAA,KAAY;AACjB,MAAA,MAAM,IAAA,GAAQ,OAAA,EAA+C,KAAA,EAAO,QAAA,IAAY,QAAA;AAChF,MAAA,OAAO,EAAE,WAAW,CAAA,EAAG,OAAO,gBAAgB,IAAI,CAAA,CAAA,EAAI,eAAe,KAAA,EAAM;AAAA,IAC7E,CAAA;AAAA,IACA,KAAA,EAAO,EAAE,SAAA,EAAW,mBAAA,EAAoB;AAAA,IACxC,IAAA,EAAM,EAAE,SAAA,EAAW,kBAAA;AAAmB,GACxC;AAEA,EAAA,uBACExB,cAAAA;AAAA,IAACyB,eAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MACR,EAAA,EAAI,SAAA;AAAA,MACJ,MAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,EAAA;AAAA,MAEC,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ;ACjBA,IAAM,KAAA,GAAsB,CAAC,SAAA,EAAW,WAAA,EAAa,YAAY,YAAY,CAAA;AAC7E,IAAM,KAAA,GAAQ,CAAC,KAAA,EAAoB,MAAA,KAAmB,MAAM,KAAA,IAAS,KAAA,CAAM,MAAA,GAAS,KAAA,CAAM,MAAM,CAAA;AAChG,IAAM,KAAA,GAAQ,CAAC,KAAA,EAAoB,IAAA,KACjC,MAAM,IAAA,KAAS,IAAA,KAAS,QAAQ,GAAA,GAAM,GAAA,CAAA;AAcxC,IAAM,OAAA,GAAU,CAAC,EAAA,KAA0B;AACzC,EAAA,MAAM,GAAA,GAAM,iBAAiB,EAAE,CAAA;AAC/B,EAAA,MAAM,IAAI,CAAC,IAAA,KAAiB,IAAI,gBAAA,CAAiB,IAAI,EAAE,IAAA,EAAK;AAC5D,EAAA,MAAM,KAAK,CAAC,IAAA,KAAiB,UAAA,CAAW,CAAA,CAAE,IAAI,CAAC,CAAA;AAC/C,EAAA,OAAO;AAAA,IACL,GAAA,EAAK,CAAC,GAAA,EAAK,GAAA,KAAQ,EAAE,CAAA,sBAAA,EAAyB,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAA;AAAA,IAC1D,KAAA,EAAO,EAAE,2BAA2B,CAAA;AAAA,IACpC,KAAA,EAAO,EAAE,4BAA4B,CAAA;AAAA,IACrC,IAAA,EAAM,EAAE,gCAAgC,CAAA;AAAA,IACxC,UAAA,EAAY,EAAE,mCAAmC,CAAA;AAAA,IACjD,YAAA,EAAc,EAAE,iCAAiC,CAAA;AAAA,IACjD,YAAA,EAAc,EAAE,8BAA8B,CAAA;AAAA,IAC9C,KAAA,EAAO;AAAA,MACL,MAAA,EAAQ,EAAE,qDAAqD,CAAA;AAAA,MAC/D,IAAA,EAAM,GAAG,mDAAmD,CAAA;AAAA,MAC5D,MAAA,EAAQ,MAAA,CAAO,CAAA,CAAE,qDAAqD,CAAC,CAAA;AAAA,MACvE,UAAA,EACE,EAAA,CAAG,qDAAqD,CAAA,GACxD,GAAG,mDAAmD;AAAA;AAC1D,GACF;AACF,CAAA;AAGA,IAAM,OAAA,GAAU,CAAC,GAAA,EAAa,IAAA,KAAiB;AAC7C,EAAA,MAAM,IAAI,QAAA,CAAS,GAAA,CAAI,QAAQ,GAAA,EAAK,EAAE,GAAG,EAAE,CAAA;AAC3C,EAAA,OAAO,CAAA,KAAA,EAAS,CAAA,IAAK,EAAA,GAAM,GAAG,CAAA,EAAA,EAAM,CAAA,IAAK,CAAA,GAAK,GAAG,CAAA,EAAA,EAAK,CAAA,GAAI,GAAG,CAAA,EAAA,EAAK,IAAI,CAAA,CAAA,CAAA;AACxE,CAAA;AAGA,IAAM,IAAA,GAAO,CAAC,GAAA,MAAiC;AAAA,EAC7C,EAAA,EAAI,QAAA;AAAA,EACJ,kBAAkB,KAAA,EAAO;AACvB,IAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,OAAA,EAAS,iBAAA,GAAoB,CAAC,CAAA;AAClD,IAAA,IAAI,CAAC,KAAA,EAAO;AACZ,IAAA,MAAM,EAAE,GAAA,EAAK,SAAA,EAAU,GAAI,KAAA;AAC3B,IAAA,GAAA,CAAI,IAAA,EAAK;AACT,IAAA,GAAA,CAAI,WAAA,GAAc,GAAA;AAClB,IAAA,GAAA,CAAI,SAAA,GAAY,CAAA;AAChB,IAAA,GAAA,CAAI,SAAA,EAAU;AACd,IAAA,GAAA,CAAI,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,CAAA,EAAG,UAAU,GAAG,CAAA;AACzC,IAAA,GAAA,CAAI,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,CAAA,EAAG,UAAU,MAAM,CAAA;AAC5C,IAAA,GAAA,CAAI,MAAA,EAAO;AACX,IAAA,GAAA,CAAI,OAAA,EAAQ;AAAA,EACd;AACF,CAAA,CAAA;AAMA,IAAM,YAAA,GAA+B;AAAA,EACnC,EAAA,EAAI,SAAA;AAAA,EACJ,mBAAmB,KAAA,EAAO;AACxB,IAAA,KAAA,CAAM,IAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,CAAC,GAAG,MAAA,KAAW;AACzC,MAAA,MAAM,IAAA,GAAO,KAAA,CAAM,cAAA,CAAe,MAAM,CAAA;AACxC,MAAA,MAAM,SAAS,IAAA,CAAK,IAAA;AASpB,MAAA,MAAA,CAAO,OAAA,CAAQ,CAAC,KAAA,EAAO,CAAA,KAAM;AAC3B,QAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA;AAC1B,QAAA,MAAM,MAAA,GAAS,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA;AAC3B,QAAA,KAAA,CAAM,OAAO,KAAA,GAAA,CAAS,KAAA,CAAM,IAAI,KAAA,CAAM,CAAA,IAAK,IAAI,KAAA,CAAM,CAAA;AACrD,QAAA,KAAA,CAAM,OAAO,MAAA,GAAA,CAAU,KAAA,CAAM,IAAI,MAAA,CAAO,CAAA,IAAK,IAAI,KAAA,CAAM,CAAA;AACvD,QAAA,KAAA,CAAM,OAAO,KAAA,CAAM,CAAA;AACnB,QAAA,KAAA,CAAM,OAAO,KAAA,CAAM,CAAA;AAAA,MACrB,CAAC,CAAA;AACD,MAAA,IAAI,IAAA,CAAK,OAAA;AACP,QAAC,IAAA,CAAK,QAAmD,cAAA,GAAiB,IAAA;AAAA,IAC9E,CAAC,CAAA;AAAA,EACH;AACF,CAAA;AAEA,IAAM,QAAA,GAAW,CAAC,IAAA,EAA6B,KAAA,KAC7C,IAAA,EAAM,MAAA,GAAS,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA,GAAI,MAAA,CAAO,KAAK,CAAA;AAY3C,SAAS,KAAA,CAAM;AAAA,EACpB,IAAA,GAAO,MAAA;AAAA,EACP,OAAA,GAAU,KAAA;AAAA,EACV,MAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA,GAAY,OAAA;AAAA,EACZ,OAAA;AAAA,EACA,MAAA,GAAS,GAAA;AAAA,EACT,EAAA;AAAA,EACA;AACF,CAAA,EAAe;AACb,EAAA,MAAM,IAAA,GAAOtB,aAAuB,IAAI,CAAA;AACxC,EAAA,MAAM,KAAA,GAAQA,aAA0B,IAAI,CAAA;AAC5C,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIE,cAAAA,EAAe;AACvC,EAAAqB,qBAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,KAAK,OAAA,EAAS,OAAA,CAAQ,OAAA,CAAQ,IAAA,CAAK,OAAO,CAAC,CAAA;AAAA,EACjD,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,aAAa,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,OAAO,CAAA;AAExD,EAAA,MAAM,IAAA,GAAOC,cAA+C,MAAM;AAChE,IAAA,IAAI,CAAC,MAAM,OAAO,MAAA;AAClB,IAAA,OAAO;AAAA,MACL,MAAA;AAAA,MACA,QAAA,EAAU,MAAA,CAAO,GAAA,CAAI,CAAC,GAAG,CAAA,KAAM;AAC7B,QAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,EAAG,KAAA,CAAM,CAAA,EAAG,IAAI,CAAC,CAAA;AAChD,QAAA,IAAI,SAAS,KAAA,EAAO;AAElB,UAAA,MAAM,IAAA,GAAO,CAAC,OAAA,IAAW,CAAA,KAAM,OAAO,MAAA,GAAS,CAAA;AAC/C,UAAA,OAAO;AAAA,YACL,IAAA,EAAM,KAAA;AAAA,YACN,OAAO,CAAA,CAAE,KAAA;AAAA,YACT,MAAM,CAAA,CAAE,IAAA;AAAA,YACR,OAAA,EAAS,CAAA,CAAE,IAAA,KAAS,OAAA,GAAU,IAAA,GAAO,GAAA;AAAA,YACrC,eAAA,EAAiB,GAAA;AAAA,YACjB,oBAAA,EAAsB,GAAA;AAAA,YACtB,YAAA,EAAc,EAAA;AAAA,YACd,aAAA,EAAe,KAAA;AAAA,YACf,YAAA,EAAc,IAAA,GAAO,EAAE,OAAA,EAAS,CAAA,EAAG,QAAA,EAAU,CAAA,EAAG,UAAA,EAAY,CAAA,EAAG,WAAA,EAAa,CAAA,EAAE,GAAI;AAAA,WACpF;AAAA,QACF;AACA,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,MAAA;AAAA,UACN,OAAO,CAAA,CAAE,KAAA;AAAA,UACT,MAAM,CAAA,CAAE,IAAA;AAAA,UACR,OAAA,EAAS,CAAA,CAAE,IAAA,KAAS,OAAA,GAAU,IAAA,GAAO,GAAA;AAAA,UACrC,WAAA,EAAa,GAAA;AAAA,UACb,WAAA,EAAa,CAAA;AAAA,UACb,OAAA,EAAS,GAAA;AAAA,UACT,WAAA,EAAa,CAAA;AAAA,UACb,gBAAA,EAAkB,CAAA;AAAA,UAClB,qBAAA,EAAuB,CAAA;AAAA,UACvB,uBAAuB,IAAA,CAAK,UAAA;AAAA,UAC5B,yBAAA,EAA2B,GAAA;AAAA,UAC3B,IAAA,EAAM,QAAA;AAAA,UACN,eAAA,EAAiB,CAAC,GAAA,KAAmC;AACnD,YAAA,MAAM,IAAA,GAAO,IAAI,KAAA,CAAM,SAAA;AACvB,YAAA,IAAI,CAAC,IAAA,EAAM,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAClC,YAAA,MAAM,OAAA,GAAU,GAAA,CAAI,KAAA,CAAM,GAAA,CAAI,oBAAA,CAAqB,GAAG,IAAA,CAAK,GAAA,EAAK,CAAA,EAAG,IAAA,CAAK,MAAM,CAAA;AAC9E,YAAA,OAAA,CAAQ,YAAA,CAAa,CAAA,EAAG,OAAA,CAAQ,GAAA,EAAK,GAAG,CAAC,CAAA;AACzC,YAAA,OAAA,CAAQ,YAAA,CAAa,CAAA,EAAG,OAAA,CAAQ,GAAA,EAAK,IAAI,CAAC,CAAA;AAC1C,YAAA,OAAO,OAAA;AAAA,UACT;AAAA,SACF;AAAA,MACF,CAAC;AAAA,KACH;AAAA,EACF,GAAG,CAAC,IAAA,EAAM,QAAQ,MAAA,EAAQ,IAAA,EAAM,OAAO,CAAC,CAAA;AAExC,EAAA,MAAM,OAAA,GAAUA,cAAkD,MAAM;AACtE,IAAA,IAAI,CAAC,MAAM,OAAO,MAAA;AAClB,IAAA,MAAM,KAAA,GAAQ,EAAE,GAAG,IAAA,CAAK,OAAO,MAAA,EAAQ,IAAA,CAAK,MAAM,MAAA,EAAgB;AAClE,IAAA,MAAM,KAAA,GAAQ,CAAC,IAAA,EAA6B,OAAA,MAAsB;AAAA,MAChE,QAAA,EAAU,UAAW,OAAA,GAAqB,MAAA;AAAA,MAC1C,OAAA;AAAA,MACA,GAAA,EAAK,MAAM,GAAA,IAAO,CAAA;AAAA,MAClB,KAAK,IAAA,EAAM,GAAA;AAAA;AAAA,MAEX,MAAA,EAAQ,EAAE,OAAA,EAAS,KAAA,EAAO,MAAM,CAAC,CAAA,EAAG,CAAC,CAAA,EAAE;AAAA,MACvC,IAAA,EAAM,OAAA,GACF,EAAE,eAAA,EAAiB,OAAO,SAAA,EAAW,KAAA,EAAM,GAC3C,EAAE,OAAO,IAAA,CAAK,KAAA,EAAO,SAAA,EAAW,CAAA,EAAG,WAAW,KAAA,EAAM;AAAA,MACxD,KAAA,EAAO;AAAA,QACL,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,IAAA,EAAM,KAAA;AAAA,QACN,OAAA,EAAS,CAAA;AAAA,QACT,UAAU,IAAA,EAAM,QAAA;AAAA,QAChB,UAAU,CAAC,KAAA,KAA2B,SAAS,IAAA,EAAM,MAAA,CAAO,KAAK,CAAC;AAAA;AACpE,KACF,CAAA;AACA,IAAA,OAAO;AAAA,MACL,UAAA,EAAY,IAAA;AAAA,MACZ,mBAAA,EAAqB,KAAA;AAAA,MACrB,SAAA,EAAW,KAAA;AAAA,MACX,WAAA,EAAa,EAAE,IAAA,EAAM,OAAA,EAAS,WAAW,KAAA,EAAM;AAAA,MAC/C,QAAQ,EAAE,OAAA,EAAS,EAAE,GAAA,EAAK,GAAE,EAAE;AAAA,MAC9B,MAAA,EAAQ;AAAA,QACN,CAAA,EAAG;AAAA,UACD,OAAA;AAAA,UACA,MAAA,EAAQ,EAAE,OAAA,EAAS,KAAA,EAAM;AAAA,UACzB,IAAA,EAAM,EAAE,OAAA,EAAS,KAAA,EAAM;AAAA;AAAA,UAEvB,KAAA,EAAO,EAAE,KAAA,EAAO,IAAA,CAAK,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,WAAA,EAAa,CAAA,EAAG,OAAA,EAAS,CAAA,EAAG,eAAA,EAAiB,CAAA;AAAE,SAC1F;AAAA,QACA,CAAA,EAAG,KAAA,CAAM,KAAA,EAAO,KAAK,CAAA;AAAA,QACrB,GAAI,aAAa,EAAE,EAAA,EAAI,MAAM,MAAA,EAAQ,IAAI,CAAA,EAAE,GAAI;AAAC,OAClD;AAAA,MACA,OAAA,EAAS;AAAA,QACP,MAAA,EAAQ,EAAE,OAAA,EAAS,KAAA,EAAM;AAAA,QACzB,OAAA,EAAS;AAAA,UACP,iBAAiB,IAAA,CAAK,YAAA;AAAA,UACtB,YAAY,IAAA,CAAK,YAAA;AAAA,UACjB,WAAW,IAAA,CAAK,YAAA;AAAA,UAChB,SAAA,EAAW,KAAA;AAAA,UACX,QAAA,EAAU,EAAE,GAAG,KAAA,EAAO,QAAQ,GAAA,EAAa;AAAA,UAC3C,OAAA,EAAS,EAAE,CAAA,EAAG,EAAA,EAAI,GAAG,CAAA,EAAE;AAAA,UACvB,YAAA,EAAc,CAAA;AAAA,UACd,aAAA,EAAe,IAAA;AAAA,UACf,QAAA,EAAU,CAAA;AAAA,UACV,SAAA,EAAW,IAAA,KAAS,KAAA,GAAQ,CAAA,GAAI,CAAA;AAAA,UAChC,SAAA,EAAW;AAAA,YACT,KAAA,EAAO,CAAC,IAAA,KAAS;AACf,cAAA,MAAM,CAAA,GAAI,MAAA,CAAO,IAAA,CAAK,YAAY,CAAA;AAClC,cAAA,MAAM,IAAA,GAAO,CAAA,CAAE,IAAA,KAAS,OAAA,GAAU,MAAA,GAAS,KAAA;AAC3C,cAAA,OAAO,CAAA,EAAG,QAAA,CAAS,IAAA,EAAM,IAAA,CAAK,MAAA,CAAO,KAAK,CAAC,CAAC,CAAA,EAAA,EAAK,CAAA,CAAE,KAAK,CAAA,CAAA;AAAA,YAC1D,CAAA;AAAA,YACA,eAAA,EAAiB,OAAO,EAAE,UAAA,EAAY,SAAS,KAAA,GAAQ,MAAA,GAAS,MAAA,EAAQ,QAAA,EAAU,CAAA,EAAE;AAAA;AACtF;AACF;AACF,KACF;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,KAAA,EAAO,QAAQ,UAAA,EAAY,MAAA,EAAQ,IAAA,EAAM,OAAO,CAAC,CAAA;AAE3D,EAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,KAAA,IAAS,OAAO,CAAA;AACrC,EAAA,MAAM,OAAA,GAAU,CAAC,UAAA,EAAY,IAAA,IAAQ,gBAAA,EAAkB,SAAS,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAE1F,EAAA,uBACEf,eAAAA,CAAC,KAAA,EAAA,EAAI,KAAK,IAAA,EAAM,EAAA,EAAQ,WAAW,OAAA,EAChC,QAAA,EAAA;AAAA,IAAA,IAAA,oBACCA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACZ,QAAA,EAAA;AAAA,QAAA,KAAA,oBAASZ,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mBAAmB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,QAClD,IAAA,oBACCY,eAAAA,CAAAgB,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,0BAAA5B,cAAAA,CAAC,QAAA,EAAA,EAAO,GAAA,EAAK,KAAA,EAAO,MAAK,QAAA,EAAS,SAAA,EAAU,gBAAA,EAAiB,YAAA,EAAY,WACvE,QAAA,kBAAAA,cAAAA,CAAC6B,gBAAA,EAAA,EAAS,aAAA,EAAY,QAAO,CAAA,EAC/B,CAAA;AAAA,0BACA7B,eAAC,OAAA,EAAA,EAAQ,MAAA,EAAQ,OAAO,OAAA,EAAS,IAAA,EAAM,MAAK,MAAA,EAAO;AAAA,SAAA,EACrD;AAAA,OAAA,EAEJ,CAAA;AAAA,MACC,2BAAWA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAqB,QAAA,EAAA,OAAA,EAAQ;AAAA,KAAA,EAC1D,CAAA;AAAA,oBAEFY,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,EAAA;AAAA,sBAAAZ,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EAAiB,KAAA,EAAO,EAAE,MAAA,EAAO,EAC7C,QAAA,EAAA,IAAA,IAAQ,OAAA,oBACPA,cAAAA;AAAA,QAAC8B,WAAA;AAAA,QAAA;AAAA,UAGC,IAAA;AAAA,UACA,IAAA;AAAA,UACA,OAAA;AAAA,UACA,OAAA,EAAS,IAAA,KAAS,MAAA,GAAS,CAAC,YAAA,EAAwB,KAAK,IAAA,CAAM,IAAI,CAAW,CAAA,GAAI,EAAC;AAAA,UACnF,KAAA,EAAM,MAAA;AAAA,UACN,MAAA,EAAO,MAAA;AAAA,UACP,EAAA,EAAI;AAAA,YACF,IAAA,EAAM,EAAE,SAAA,EAAW,uBAAA,EAAwB;AAAA,YAC3C,MAAA,EAAQ;AAAA,cACN,IAAA,EAAM,KAAA;AAAA,cACN,YAAA,EAAc,KAAA,IAAS,MAAA,CAAO,GAAA,CAAI,CAAC,MAAM,CAAA,CAAE,KAAK,CAAA,CAAE,IAAA,CAAK,IAAI;AAAA;AAC7D;AACF,SAAA;AAAA,QAbK;AAAA,OAcP,EAEJ,CAAA;AAAA,MACC,OAAO,MAAA,GAAS,CAAA,oBACf9B,cAAAA,CAAC,QAAG,SAAA,EAAU,kBAAA,EACX,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,qBACdY,eAAAA,CAAC,IAAA,EAAA,EAAiB,WAAU,uBAAA,EAE1B,QAAA,EAAA;AAAA,wBAAAZ,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,kBAAA;AAAA,YACV,KAAA,EAAO;AAAA,cACL,eAAA,EAAiB,CAAA,0BAAA,EAA6B,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,CAAA,EAAG,IAAI,CAAC,CAAA,CAAA;AAAA,aAC7E;AAAA,YACA,aAAA,EAAY;AAAA;AAAA,SACd;AAAA,QACC,CAAA,CAAE;AAAA,OAAA,EAAA,EATI,CAAA,CAAE,KAUX,CACD,CAAA,EACH;AAAA,KAAA,EAEJ,CAAA;AAAA,oBAEAY,eAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,iBAAA,EACd,QAAA,EAAA;AAAA,MAAA,KAAA,oBAASZ,cAAAA,CAAC,SAAA,EAAA,EAAS,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,sBAC1BA,cAAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAAY,gBAAC,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAZ,eAAC,IAAA,EAAA,EAAG,CAAA;AAAA,QACH,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,qBACXA,cAAAA,CAAC,IAAA,EAAA,EAAiB,KAAA,EAAM,KAAA,EACrB,QAAA,EAAA,CAAA,CAAE,KAAA,EAAA,EADI,CAAA,CAAE,KAEX,CACD;AAAA,OAAA,EACH,CAAA,EACF,CAAA;AAAA,sBACAA,cAAAA,CAAC,OAAA,EAAA,EACE,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,MAAA,EAAQ,KAAA,qBACnBY,eAAAA,CAAC,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAZ,cAAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAM,KAAA,EAAO,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,QACvB,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,KAAM;AACjB,UAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,IAAA,CAAK,KAAK,CAAA;AAC1B,UAAA,MAAM,IAAA,GAAO,CAAA,CAAE,IAAA,KAAS,OAAA,GAAU,MAAA,GAAS,KAAA;AAC3C,UAAA,uBAAOA,cAAAA,CAAC,IAAA,EAAA,EAAkB,QAAA,EAAA,KAAA,IAAS,IAAA,GAAO,EAAA,GAAK,QAAA,CAAS,IAAA,EAAM,KAAK,CAAA,EAAA,EAAnD,CAAA,CAAE,KAAmD,CAAA;AAAA,QACvE,CAAC;AAAA,OAAA,EAAA,EANM,MAOT,CACD,CAAA,EACH;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AClWO,IAAM,QAAA,GAAWC,gBAAAA,CAA4C,SAAS8B,SAAAA,CAC3E;AAAA,EACE,KAAA;AAAA,EACA,SAAA,GAAY,IAAA;AAAA,EACZ,QAAA,GAAW,MAAA;AAAA,EACX,SAAA,GAAY,SAAA;AAAA,EACZ,OAAA,GAAU,KAAA;AAAA,EACV,aAAA,GAAgB,KAAA;AAAA,EAChB,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,EAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,SAASjB,WAAAA,EAAM;AACrB,EAAA,MAAM,UAAU,EAAA,IAAM,MAAA;AAEtB,EAAA,MAAM,QAAA,GAAWX,aAAgC,IAAI,CAAA;AACrD,EAAA,MAAM,WAAA,GAAc6B,iBAAA;AAAA,IAClB,CAAC,KAAA,KAAmC;AAClC,MAAA,QAAA,CAAS,OAAA,GAAU,KAAA;AACnB,MAAA,IAAI,OAAO,GAAA,KAAQ,UAAA,EAAY,GAAA,CAAI,KAAK,CAAA;AAAA,WAAA,IAC/B,GAAA,MAAS,OAAA,GAAU,KAAA;AAAA,IAC9B,CAAA;AAAA,IACA,CAAC,GAAG;AAAA,GACN;AAGA,EAAAR,gBAAU,MAAM;AACd,IAAA,IAAI,SAAS,OAAA,EAAS,QAAA,CAAS,OAAA,CAAQ,aAAA,GAAgB,iBAAiB,CAAC,OAAA;AAAA,EAC3E,CAAA,EAAG,CAAC,aAAA,EAAe,OAAO,CAAC,CAAA;AAE3B,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,aAAA;AAAA,IACA,gBAAgB,QAAQ,CAAA,CAAA;AAAA,IACxB,sBAAsB,SAAS,CAAA,CAAA;AAAA,IAC/B,aAAA,IAAiB,CAAC,OAAA,IAAW,4BAAA;AAAA,IAC7B,QAAA,IAAY,uBAAA;AAAA,IACZ;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACEZ,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,SAAS,KAAA,EACvB,QAAA,EAAA;AAAA,oBAAAZ,cAAAA;AAAA,MAACiC,iBAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACR,QAAA,EAAU,WAAA;AAAA,QACV,OAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,IAAA;AAAA,QACA,KAAA;AAAA,QACA,IAAA,kBAAMjC,cAAAA,CAACkC,aAAA,EAAA,EAAM,MAAM,EAAA,EAAI,CAAA;AAAA,QACvB,EAAA,EAAI;AAAA,UACF,IAAA,EAAM,EAAE,SAAA,EAAW,sBAAA,EAAuB;AAAA,UAC1C,KAAA,EAAO,EAAE,SAAA,EAAW,oBAAA,EAAqB;AAAA,UACzC,GAAA,EAAK,EAAE,SAAA,EAAW,kBAAA,EAAmB;AAAA,UACrC,IAAA,EAAM,EAAE,SAAA,EAAW,mBAAA,EAAqB,eAAe,IAAA;AAAK;AAC9D;AAAA,KACF;AAAA,oBAEAlC,cAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,CAAA,kBAAA,EAAqB,SAAA,GAAY,EAAA,GAAK,6BAA6B,CAAA,CAAA;AAAA,QAC9E,OAAA,EAAS,OAAA;AAAA,QAER,QAAA,EAAA;AAAA;AAAA;AACH,GAAA,EACF,CAAA;AAEJ,CAAC;AC/EM,IAAM,IAAA,GAAOC,gBAAAA,CAAsC,SAASkC,KAAAA,CACjE;AAAA,EACE,KAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,OAAA;AAAA,EACP,WAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,QAAA;AAAA,EACA,WAAA,GAAc,SAAA;AAAA,EACd,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,SAAA;AAAA,IACA,YAAY,OAAO,CAAA,CAAA;AAAA,IACnB,YAAY,IAAI,CAAA,CAAA;AAAA,IAChB,QAAA,IAAY,mBAAA;AAAA,IACZ;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,QAAQ,CAAA,IAAK,CAAC,QAAA;AACxC,EAAA,MAAM,WAAW,YAAA,KAAiB,QAAA,mBAAWnC,cAAAA,CAACoC,aAAE,CAAA,GAAK,IAAA,CAAA;AAErD,EAAA,uBACEpC,cAAAA;AAAA,IAACqC,SAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MAIR,IAAI,EAAE,IAAA,EAAM,EAAE,GAAA,EAAK,YAAA,EAAc,QAAU,EAAE;AAAA,MAC7C,SAAA,EAAW,OAAA;AAAA,MACX,KAAA;AAAA,MACA,iBAAe,QAAA,IAAY,MAAA;AAAA,MAC3B,IAAA,EACE,WAAA,GACI,sBACErC,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sCAAA,EAAuC,aAAA,EAAY,MAAA,EAChE,QAAA,EAAA,WAAA,EACH,CAAA,GAEF,MAAA;AAAA,MAEN,SAAA,EAAW,QAAQ,QAAQ,CAAA;AAAA,MAC3B,UAAA,EAAY,CAAC,OAAA,KAAY;AACvB,QAAA,IAAI,CAAC,SAAA,EAAW;AACd,UAAA,uBACEA,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,uCAAA,EAAwC,aAAA,EAAY,QACjE,QAAA,EAAA,QAAA,EACH,CAAA;AAAA,QAEJ;AACA,QAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,OAAA,EAAS,SAAA,KAC/B,OAAA,CAAQ,SAAA;AACV,QAAA,uBACEA,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,IAAA;AAAA,YACA,QAAA;AAAA,YACA,OAAA;AAAA,YACA,SAAA;AAAA,YACA,SAAA,EAAU,uDAAA;AAAA,YACV,YAAA,EAAY,WAAA;AAAA,YAEX,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,MAEJ,CAAA;AAAA,MACA,UAAU,QAAA,GAAW,CAAC,UAAU,QAAA,CAAS,KAAK,MAAM,KAAA,GAAQ,MAAA;AAAA,MAC3D,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;ACrGM,IAAM,OAAA,GAAUC,gBAAAA,CAAyC,SAASqC,QAAAA,CACvE,EAAE,WAAA,GAAc,YAAA,EAAc,OAAA,GAAU,OAAA,EAAS,SAAA,EAAW,KAAA,EAAO,GAAG,KAAA,IACtE,GAAA,EACA;AAEA,EAAA,MAAM,QAAA,GAAWnC,aAAqB,IAAI,CAAA;AAC1C,EAAAC,0BAAoB,GAAA,EAAK,MAAM,QAAA,CAAS,OAAA,EAAS,YAA8B,CAAA;AAE/E,EAAA,MAAM,OAAA,GAAU,CAAC,YAAA,EAAc,CAAA,YAAA,EAAe,WAAW,CAAA,CAAA,EAAI,CAAA,YAAA,EAAe,OAAO,CAAA,CAAA,EAAI,SAAS,CAAA,CAC7F,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACEJ,cAAAA;AAAA,IAACuC,eAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MACR,GAAA,EAAK,QAAA;AAAA,MACL,MAAA,EAAQ,WAAA;AAAA,MAER,EAAA,EAAI;AAAA,QACF,IAAA,EAAM,EAAE,SAAA,EAAW,OAAA,EAAS,KAAA,EAAM;AAAA,QAClC,OAAA,EAAS,EAAE,SAAA,EAAW,qBAAA;AAAsB,OAC9C;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;ACnBM,IAAM,aAAatC,gBAAAA,CAA+C,SAASuC,WAAAA,CAChF,EAAE,UAAU,SAAA,EAAW,IAAA,GAAO,OAAA,EAAS,IAAA,EAAM,OAAO,QAAA,EAAU,SAAA,EAAW,GAAG,KAAA,IAC5E,GAAA,EACA;AACA,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,gBAAA;AAAA,IACA,mBAAmB,OAAO,CAAA,CAAA;AAAA,IAC1B,mBAAmB,IAAI,CAAA,CAAA;AAAA,IACvB;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACExC,cAAAA;AAAA,IAACqB,aAAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MAER,GAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAA,EAAW,OAAA;AAAA,MACV,GAAG,KAAA;AAAA,MAEJ,0BAAArB,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,sBAAA,EAAuB,aAAA,EAAY,QAChD,QAAA,EAAA,IAAA,EACH;AAAA;AAAA,GACF;AAEJ,CAAC;ACOD,IAAM,QAAA,GACJ,2IAAA;AASK,SAAS,MAAA,CAAO;AAAA,EACrB,OAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA,GAAO,OAAA;AAAA,EACP,QAAA,GAAW,MAAA;AAAA,EACX,IAAA,GAAO,OAAA;AAAA,EACP,KAAA,GAAQ,IAAA;AAAA,EACR,MAAA;AAAA,EACA,SAAA,GAAY,QAAA;AAAA,EACZ,UAAA,GAAa,QAAA;AAAA,EACb,MAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA;AACF,CAAA,EAAgB;AACd,EAAA,MAAM,SAASc,WAAAA,EAAM;AACrB,EAAA,MAAM,OAAA,GAAU,GAAG,MAAM,CAAA,MAAA,CAAA;AACzB,EAAA,MAAM,UAAA,GAAa,GAAG,MAAM,CAAA,SAAA,CAAA;AAC5B,EAAA,MAAM,QAAA,GAAWX,aAAuB,IAAI,CAAA;AAC5C,EAAA,MAAM,OAAA,GAAUA,aAA2B,IAAI,CAAA;AAG/C,EAAAqB,gBAAU,MAAM;AACd,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,OAAA,CAAQ,UAAU,QAAA,CAAS,aAAA;AAC3B,MAAA;AAAA,IACF;AACA,IAAA,OAAA,CAAQ,SAAS,KAAA,EAAM;AACvB,IAAA,OAAA,CAAQ,OAAA,GAAU,IAAA;AAAA,EACpB,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAKZ,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAInB,eAAgC,IAAI,CAAA;AAClE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,eAAS,KAAK,CAAA;AAC5C,EAAAmB,gBAAU,MAAM;AACd,IAAA,IAAI,CAAC,OAAA,EAAS;AACd,IAAA,MAAM,QAAQ,MAAM,UAAA,CAAW,OAAA,CAAQ,YAAA,GAAe,QAAQ,YAAY,CAAA;AAC1E,IAAA,KAAA,EAAM;AACN,IAAA,MAAM,QAAA,GAAW,IAAI,cAAA,CAAe,KAAK,CAAA;AACzC,IAAA,QAAA,CAAS,QAAQ,OAAO,CAAA;AACxB,IAAA,CAAC,GAAG,OAAA,CAAQ,QAAQ,CAAA,CAAE,OAAA,CAAQ,CAAC,KAAA,KAAU,QAAA,CAAS,OAAA,CAAQ,KAAK,CAAC,CAAA;AAChE,IAAA,OAAO,MAAM,SAAS,UAAA,EAAW;AAAA,EACnC,CAAA,EAAG,CAAC,OAAA,EAAS,QAAQ,CAAC,CAAA;AAGtB,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAAyB;AAC5C,IAAA,IAAI,CAAC,KAAA,IAAS,KAAA,CAAM,QAAQ,KAAA,IAAS,CAAC,SAAS,OAAA,EAAS;AACxD,IAAA,MAAM,WAAW,CAAC,GAAG,SAAS,OAAA,CAAQ,gBAAA,CAA8B,QAAQ,CAAC,CAAA;AAC7E,IAAA,MAAM,QAAA,GAAW,SAAS,CAAC,CAAA;AAC3B,IAAA,MAAM,MAAA,GAAS,QAAA,CAAS,QAAA,CAAS,MAAA,GAAS,CAAC,CAAA;AAC3C,IAAA,IAAI,CAAC,QAAA,IAAY,CAAC,MAAA,EAAQ;AAC1B,IAAA,IAAI,KAAA,CAAM,QAAA,IAAY,QAAA,CAAS,aAAA,KAAkB,QAAA,EAAU;AACzD,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,MAAA,CAAO,KAAA,EAAM;AAAA,IACf,WAAW,CAAC,KAAA,CAAM,QAAA,IAAY,QAAA,CAAS,kBAAkB,MAAA,EAAQ;AAC/D,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,QAAA,CAAS,KAAA,EAAM;AAAA,IACjB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,WAAA;AAAA,IACA,cAAc,IAAI,CAAA,CAAA;AAAA,IAClB,cAAc,QAAQ,CAAA,CAAA;AAAA,IACtB,mBAAmB,IAAI,CAAA,CAAA;AAAA,IACvB;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACExB,cAAAA;AAAA,IAACyC,eAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MACR,EAAA;AAAA,MACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA,EAAU,IAAA;AAAA,MACV,KAAA;AAAA,MACA,WAAA,EAAa,KAAA;AAAA,MAEb,WAAA,EAAa,KAAA;AAAA,MACb,EAAA,EAAI;AAAA,QACF,IAAA,EAAM;AAAA,UACJ,WAAW,CAAA,iCAAA,EAAoC,IAAI,CAAA,EAAG,KAAA,GAAQ,KAAK,+BAA+B,CAAA;AAAA,SACpG;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,SAAA,EAAW,OAAA;AAAA,UACX,IAAA,EAAM,QAAA;AAAA,UACN,cAAc,KAAA,IAAS,MAAA;AAAA,UACvB,iBAAA,EAAmB,OAAA;AAAA,UACnB,kBAAA,EAAoB,WAAW,UAAA,GAAa,MAAA;AAAA,UAC5C,SAAA,EAAW;AAAA,SACb;AAAA;AAAA;AAAA,QAGA,UAAA,EAAY;AAAA,UACV,UAAA,EAAY;AAAA,YACV,KAAA,EAAO,kBAAA;AAAA,YACP,WAAA,EAAa,yBAAA;AAAA,YACb,UAAA,EAAY;AAAA;AACd;AACF,OACF;AAAA,MACA,SAAS,CAAC,EAAE,YAAA,EAAc,IAAA,uBACxB7B,eAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,CAAC,OAAA,KAAY;AAChB,YAAA,QAAA,CAAS,OAAA,GAAU,OAAA;AACnB,YAAA,IAAI,QAAA,KAAa,MAAA,EAAQ,UAAA,CAAW,OAAO,CAAA;AAAA,UAC7C,CAAA;AAAA,UACA,SAAA,EAAU,kBAAA;AAAA,UACV,QAAA,EAAU,QAAA,KAAa,MAAA,IAAU,OAAA,GAAU,CAAA,GAAI,MAAA;AAAA,UAE/C,QAAA,EAAA;AAAA,4BAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EACb,QAAA,EAAA;AAAA,8BAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EACZ,QAAA,EAAA;AAAA,gBAAA,MAAA,oBACCZ,cAAAA;AAAA,kBAAC,UAAA;AAAA,kBAAA;AAAA,oBACC,OAAA,EAAQ,UAAA;AAAA,oBACR,IAAA,EAAK,QAAA;AAAA,oBACL,IAAA,kBAAMA,cAAAA,CAAC0C,iBAAA,EAAA,EAAU,CAAA;AAAA,oBACjB,YAAA,EAAY,SAAA;AAAA,oBACZ,OAAA,EAAS;AAAA;AAAA,iBACX;AAAA,gCAEF1C,cAAAA,CAAC,IAAA,EAAA,EAAG,IAAI,OAAA,EAAS,SAAA,EAAU,oBACxB,QAAA,EAAA,KAAA,EACH;AAAA,eAAA,EACF,CAAA;AAAA,cACC,QAAA,oBACCA,cAAAA,CAAC,GAAA,EAAA,EAAE,IAAI,UAAA,EAAY,SAAA,EAAU,uBAC1B,QAAA,EAAA,QAAA,EACH;AAAA,aAAA,EAEJ,CAAA;AAAA,4BACAA,cAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,GAAA,EAAK,QAAA,KAAa,OAAA,GAAU,UAAA,GAAa,MAAA;AAAA,gBACzC,SAAA,EAAU,iBAAA;AAAA,gBACV,QAAA,EAAU,QAAA,KAAa,OAAA,IAAW,OAAA,GAAU,CAAA,GAAI,MAAA;AAAA,gBAE/C;AAAA;AAAA,aACH;AAAA,YACC,0BAAUA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAqB,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,4BACtDA,cAAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBACC,GAAA,EAAK,YAAA;AAAA,gBACL,SAAA,EAAU,kBAAA;AAAA,gBACV,OAAA,EAAQ,UAAA;AAAA,gBACR,IAAA,EAAK,QAAA;AAAA,gBACL,IAAA,kBAAMA,cAAAA,CAACoC,SAAAA,EAAA,EAAE,CAAA;AAAA,gBACT,YAAA,EAAY,UAAA;AAAA,gBACZ,OAAA,EAAS,CAAC,KAAA,KAAU,IAAA,CAAK,KAAK;AAAA;AAAA;AAChC;AAAA;AAAA;AACF;AAAA,GAEJ;AAEJ;AC/LO,IAAM,KAAA,GAAQnC,gBAAAA,CAAyC,SAAS0C,MAAAA,CACrE;AAAA,EACE,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,OAAA;AAAA,EACP,KAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,EAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,SAAS7B,WAAAA,EAAM;AACrB,EAAA,MAAM,UAAU,EAAA,IAAM,MAAA;AACtB,EAAA,MAAM,MAAA,GAAS,GAAG,OAAO,CAAA,KAAA,CAAA;AACzB,EAAA,MAAM,cAAc,KAAA,IAAS,IAAA;AAE7B,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,UAAA;AAAA,IACA,aAAa,OAAO,CAAA,CAAA;AAAA,IACpB,aAAa,IAAI,CAAA,CAAA;AAAA,IACjB,KAAA,IAAS,iBAAA;AAAA,IACT,QAAA,IAAY,oBAAA;AAAA,IACZ;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACEF,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,EACb,QAAA,EAAA;AAAA,IAAA,KAAA,oBACCA,eAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,iBAAA,EAAkB,SAAS,OAAA,EACzC,QAAA,EAAA;AAAA,MAAA,KAAA;AAAA,MACA,QAAA,oBACCZ,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,oBAAA,EAAqB,aAAA,EAAY,QAAO,QAAA,EAAA,GAAA,EAExD;AAAA,KAAA,EAEJ,CAAA;AAAA,oBAEFY,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EACZ,QAAA,EAAA;AAAA,MAAA,WAAA,oBACCZ,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,gBAAA,EAAiB,aAAA,EAAY,QAC1C,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,sBAEFA,cAAAA;AAAA,QAAC4C,mBAAA;AAAA,QAAA;AAAA,UACC,QAAA,EAAQ,IAAA;AAAA,UAER,GAAA;AAAA,UACA,EAAA,EAAI,OAAA;AAAA,UACJ,SAAA,EAAU,iBAAA;AAAA,UACV,QAAA;AAAA,UACA,QAAA;AAAA,UACA,OAAA,EAAS,QAAQ,KAAK,CAAA;AAAA,UACtB,cAAA,EAAc,QAAQ,IAAA,GAAO,MAAA;AAAA,UAC7B,kBAAA,EAAkB,cAAc,MAAA,GAAS,MAAA;AAAA,UACxC,GAAG;AAAA;AAAA,OACN;AAAA,MACC,gCAAgB5C,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kBAAkB,QAAA,EAAA,YAAA,EAAa;AAAA,KAAA,EAClE,CAAA;AAAA,IACC,WAAA,oBACCY,eAAAA,CAAC,GAAA,EAAA,EAAE,EAAA,EAAI,MAAA,EAAQ,SAAA,EAAW,CAAA,cAAA,EAAiB,KAAA,GAAQ,wBAAA,GAA2B,EAAE,CAAA,CAAA,EAC9E,QAAA,EAAA;AAAA,sBAAAZ,eAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAA,EAAsB,aAAA,EAAY,QAC/C,QAAA,EAAA,KAAA,mBAAQA,cAAAA,CAACgB,qBAAAA,EAAA,EAAc,CAAA,mBAAKhB,cAAAA,CAACiB,YAAAA,EAAA,EAAK,CAAA,EACrC,CAAA;AAAA,MACC;AAAA,KAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ,CAAC;AC7CM,IAAM,IAAA,GAAOhB,gBAAAA,CAAkC,SAAS4C,KAAAA,CAC7D;AAAA,EACE,KAAA;AAAA,EACA,OAAA,GAAU,QAAA;AAAA,EACV,KAAA,GAAQ,KAAA;AAAA,EACR,cAAA,GAAiB,MAAA;AAAA,EACjB,OAAA,GAAU,KAAA;AAAA,EACV,YAAA,GAAe,YAAA;AAAA,EACf,YAAA,EAAc,SAAA;AAAA,EACd,iBAAA,EAAmB,cAAA;AAAA,EACnB,MAAA;AAAA,EACA,MAAA;AAAA,EACA,EAAA;AAAA,EACA;AACF,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,QAAA,GAAW1C,aAAkB,IAAI,CAAA;AACvC,EAAA,MAAM,OAAA,GAAU2C,iBAAWC,qBAAiB,CAAA;AAE5C,EAAA3C,yBAAAA,CAAoB,KAAK,OAAO;AAAA,IAC9B,QAAQ,CAAC,KAAA,KAAU,QAAA,CAAS,OAAA,EAAS,OAAO,KAAK,CAAA;AAAA,IACjD,MAAM,CAAC,KAAA,KAAU,QAAA,CAAS,OAAA,EAAS,KAAK,KAAK,CAAA;AAAA,IAC7C,MAAM,CAAC,KAAA,KAAU,QAAA,CAAS,OAAA,EAAS,KAAK,KAAK,CAAA;AAAA,IAC7C,UAAA,EAAY,MAAM,QAAA,CAAS,OAAA,EAAS,YAAW,IAAK;AAAA,GACtD,CAAE,CAAA;AAEF,EAAA,MAAM,QAAyB,OAAA,GAC3B;AAAA,IACE;AAAA,MACE,KAAA,EAAO,YAAA;AAAA,MACP,QAAA,EAAU,IAAA;AAAA,MACV,QAAA,EAAU,sBACRJ,cAAAA,CAAC,SAAI,SAAA,EAAU,kBAAA,EACb,QAAA,kBAAAA,cAAAA,CAACgD,mBAAA,EAAA,EAAY,SAAA,EAAU,kBAAA,EAAmB,aAAA,EAAY,QAAO,CAAA,EAC/D;AAAA;AAEJ,GACF,GACA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,IACnB,IAAI,IAAA,CAAK,EAAA;AAAA,IACT,OAAO,IAAA,CAAK,KAAA;AAAA,IACZ,IAAA,EAAM,IAAA,CAAK,IAAA,mBACThD,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,eAAA,EAAgB,aAAA,EAAY,MAAA,EACzC,QAAA,EAAA,IAAA,CAAK,IAAA,EACR,CAAA,GACE,MAAA;AAAA,IACJ,UAAU,IAAA,CAAK,QAAA;AAAA,IACf,SAAS,IAAA,CAAK,OAAA;AAAA,IACd,KAAK,IAAA,CAAK,GAAA;AAAA,IACV,QAAQ,IAAA,CAAK,MAAA;AAAA,IACb,SAAA,EAAW,CAAC,IAAA,CAAK,QAAA,IAAY,yBAAA,EAA2B,IAAA,CAAK,SAAS,CAAA,CACnE,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,GAAG,CAAA;AAAA,IACX,IAAA,EAAM,EAAE,QAAA,EAAU,IAAA,CAAK,QAAA;AAAS,GAClC,CAAE,CAAA;AAEN,EAAA,MAAM,OAAA,GAAU,CAAC,SAAA,EAAW,CAAA,SAAA,EAAY,OAAO,CAAA,CAAA,EAAI,KAAA,IAAS,gBAAA,EAAkB,SAAS,CAAA,CACpF,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,MAAM,EAAA,GAA6B;AAAA;AAAA,IAEjC,IAAA,EAAM;AAAA,MACJ,SAAA,EAAW,eAAA;AAAA,MACX,YAAA,EAAc,SAAA;AAAA,MACd,iBAAA,EAAmB,cAAA;AAAA,MACnB,aAAa,OAAA,IAAW;AAAA,KAC1B;AAAA,IACA,QAAA,EAAU,CAAC,OAAA,KAAY;AACrB,MAAA,MAAM,IAAA,GAAQ,SAAoD,OAAA,EAAS,IAAA;AAC3E,MAAA,OAAO;AAAA,QACL,SAAA,EAAW,eAAA;AAAA,QACX,cAAA,EAAgB,IAAA,EAAM,IAAA,EAAM,QAAA,GAAW,MAAA,GAAS;AAAA,OAClD;AAAA,IACF,CAAA;AAAA,IACA,OAAA,EAAS,EAAE,SAAA,EAAW,kBAAA,EAAmB;AAAA,IACzC,MAAA,EAAQ,EAAE,SAAA,EAAW,iBAAA,EAAkB;AAAA,IACvC,KAAA,EAAO,EAAE,SAAA,EAAW,gBAAA;AAAiB,GACvC;AAEA,EAAA,MAAMiD,yBACJjD,cAAAA;AAAA,IAACkD,SAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MACR,GAAA,EAAK,QAAA;AAAA,MACL,EAAA;AAAA,MACA,SAAA,EAAW,OAAA;AAAA,MACX,KAAA,EAAO,KAAA;AAAA,MACP,KAAA;AAAA,MACA,cAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA;AAAA,GACF;AAMF,EAAA,OAAO,OAAA,GAAUD,MAAA,mBAAOjD,cAAAA,CAACmD,0BAAoB,QAAA,EAAAF,MAAA,EAAK,CAAA;AACpD,CAAC;;;;;;;ACzFD,SAAS,UAAA,GAAa;AACpB,EAAA,uBACErC,gBAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oBAAmB,IAAA,EAAK,KAAA,EAAM,cAAW,QAAA,EACvD,QAAA,EAAA;AAAA,oBAAAZ,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BAAyB,GAAA,EAAK,yBAAA,EAAW,KAAI,EAAA,EAAG,CAAA;AAAA,oBAC/DA,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAA2B,GAAA,EAAK,2BAAA,EAAa,KAAI,EAAA,EAAG;AAAA,GAAA,EACrE,CAAA;AAEJ;AAEA,SAAS,UAAA,CAAW,EAAE,IAAA,EAAK,EAA0B;AACnD,EAAA,MAAM,SAAA,GAAYG,aAA0B,IAAI,CAAA;AAChD,EAAA,MAAM,OAAA,GAAUA,aAAmB,IAAI,CAAA;AACvC,EAAA,MAAM,SAASW,WAAAA,EAAM;AACrB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIT,eAAS,KAAK,CAAA;AACtC,EAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,IAAA,CAAK,IAAA,EAAM,MAAM,CAAA;AACzC,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,KAAU,MAAA,IAAa,KAAK,KAAA,KAAU,IAAA;AAC5D,EAAA,MAAM,IAAA,GAAO,QAAA,GAAW,CAAA,EAAG,IAAA,CAAK,KAAK,CAAA,EAAA,EAAK,IAAA,CAAK,UAAA,IAAc,MAAA,CAAO,IAAA,CAAK,KAAK,CAAC,KAAK,IAAA,CAAK,KAAA;AAEzF,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,kBAAA;AAAA,IACA,KAAK,YAAA,IAAgB,0BAAA;AAAA,IACrB,IAAA,IAAQ;AAAA,GACV,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACEO,eAAAA,CAAAgB,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAhB,eAAAA;AAAA,MAACS,aAAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QAER,GAAA,EAAK,SAAA;AAAA,QACL,IAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAW,OAAA;AAAA,QACX,YAAA,EAAY,IAAA;AAAA,QACZ,eAAA,EAAe,UAAU,MAAA,GAAS,MAAA;AAAA,QAClC,eAAA,EAAe,UAAU,IAAA,GAAO,MAAA;AAAA,QAChC,eAAA,EAAe,OAAA,IAAW,IAAA,GAAO,MAAA,GAAS,MAAA;AAAA,QAC1C,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,UAAA,IAAA,CAAK,UAAU,KAAK,CAAA;AACpB,UAAA,IAAI,OAAA,EAAS,OAAA,CAAQ,OAAA,EAAS,MAAA,CAAO,KAAK,CAAA;AAAA,QAC5C,CAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAArB,eAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yBAAwB,aAAA,EAAY,MAAA,EACjD,eAAK,IAAA,EACR,CAAA;AAAA,UACC,QAAA,oBACCA,cAAAA,CAAC,KAAA,EAAA,EAAM,WAAU,mBAAA,EAAoB,aAAA,EAAY,MAAA,EAC9C,QAAA,EAAA,IAAA,CAAK,KAAA,EACR;AAAA;AAAA;AAAA,KAEJ;AAAA,oBAEAA,eAAC,OAAA,EAAA,EAAQ,MAAA,EAAQ,WAAW,OAAA,EAAS,IAAA,CAAK,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,CAAA;AAAA,IAChE,2BACCA,cAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,OAAA;AAAA,QACL,EAAA,EAAI,MAAA;AAAA,QACJ,KAAA,EAAK,IAAA;AAAA,QACL,cAAA,EAAe,OAAA;AAAA,QACf,KAAA,EAAO,IAAA,CAAK,IAAA,IAAQ,EAAC;AAAA,QACrB,cAAY,IAAA,CAAK,KAAA;AAAA,QACjB,MAAA,EAAQ,MAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,QAC1B,MAAA,EAAQ,MAAM,OAAA,CAAQ,KAAK;AAAA;AAAA;AAC7B,GAAA,EAEJ,CAAA;AAEJ;AAEA,SAAS,OAAA,CAAQ,EAAE,IAAA,EAAM,IAAA,EAAK,EAA6C;AACzE,EAAA,MAAM,OAAA,GAAUG,aAAmB,IAAI,CAAA;AACvC,EAAA,MAAM,SAASW,WAAAA,EAAM;AACrB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIT,eAAS,KAAK,CAAA;AACtC,EAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,IAAA,EAAM,MAAM,CAAA;AAEpC,EAAA,MAAM,OAAA,mBACJO,eAAAA,CAAAgB,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAhB,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0BAAA,EACd,QAAA,EAAA;AAAA,sBAAAZ,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0BAAA,EAA4B,eAAK,IAAA,EAAK,CAAA;AAAA,MACrD,IAAA,CAAK,wBAAQA,cAAAA,CAAC,UAAK,SAAA,EAAU,0BAAA,EAA4B,eAAK,IAAA,EAAK;AAAA,KAAA,EACtE,CAAA;AAAA,oBAEAA,cAAAA;AAAA,MAACoD,aAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACR,aAAA,EAAY,MAAA;AAAA,QACZ,SAAA,EAAW,CAAA,kBAAA,EAAqB,IAAA,CAAK,MAAA,GAAS,KAAK,8BAA8B,CAAA,CAAA;AAAA,QACjF,OAAO,IAAA,CAAK,MAAA;AAAA,QACZ,QAAA,EAAS,EAAA;AAAA,QACT,KAAA,EAAO,IAAA,CAAK,MAAA,GAAS,MAAA,GAAY,IAAA,CAAK,IAAA,CAAK,IAAA,EAAK,CAAE,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,EAAY;AAAA,QACxE,KAAA,EAAM,QAAA;AAAA,QACN,IAAI,EAAE,KAAA,EAAO,EAAE,SAAA,EAAW,4BAA2B;AAAE;AAAA;AACzD,GAAA,EACF,CAAA;AAGF,EAAA,IAAI,CAAC,SAAS,uBAAOpD,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAuB,QAAA,EAAA,OAAA,EAAQ,CAAA;AAEnE,EAAA,uBACEY,eAAAA,CAAAgB,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA5B,cAAAA;AAAA,MAACqB,aAAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACR,IAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAU,iDAAA;AAAA,QACV,eAAA,EAAc,MAAA;AAAA,QACd,eAAA,EAAe,IAAA;AAAA,QACf,eAAA,EAAe,OAAO,MAAA,GAAS,MAAA;AAAA,QAC/B,SAAS,CAAC,KAAA,KAAU,OAAA,CAAQ,OAAA,EAAS,OAAO,KAAK,CAAA;AAAA,QAEhD,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,oBACArB,cAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,OAAA;AAAA,QACL,EAAA,EAAI,MAAA;AAAA,QACJ,KAAA,EAAK,IAAA;AAAA,QACL,cAAA,EAAe,OAAA;AAAA,QACf,KAAA,EAAO,QAAQ,EAAC;AAAA,QAChB,cAAY,IAAA,CAAK,IAAA;AAAA,QACjB,MAAA,EAAQ,MAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,QAC1B,MAAA,EAAQ,MAAM,OAAA,CAAQ,KAAK;AAAA;AAAA;AAC7B,GAAA,EACF,CAAA;AAEJ;AAQO,IAAM,OAAA,GAAUC,gBAAAA,CAAyC,SAASoD,QAAAA,CACvE;AAAA,EACE,IAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,YAAA;AAAA,EACA,SAAA,GAAY,gBAAA;AAAA,EACZ,UAAA,GAAa,IAAA;AAAA,EACb,iBAAA,GAAoB,kBAAA;AAAA,EACpB,WAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,iBAAA,GAAoB,QAAA;AAAA,EACpB,QAAQ,EAAC;AAAA,EACT,IAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA;AACF,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIhD,eAAS,EAAE,CAAA;AACjD,EAAA,MAAM,SAAS,WAAA,IAAe,WAAA;AAE9B,EAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAsC;AAC1D,IAAA,KAAA,CAAM,cAAA,EAAe;AACrB,IAAA,QAAA,GAAW,MAAM,CAAA;AAAA,EACnB,CAAA;AAEA,EAAA,MAAM,OAAA,GAAU,CAAC,YAAA,EAAc,CAAC,UAAA,IAAc,uBAAA,EAAyB,SAAS,CAAA,CAC7E,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,GAAG,CAAA;AAEX,EAAA,MAAM,EAAA,GAAgC;AAAA;AAAA,IAEpC,KAAA,EAAO,EAAE,SAAA,EAAW,mBAAA,EAAoB;AAAA,IACxC,GAAA,EAAK,EAAE,SAAA,EAAW,iBAAA,EAAkB;AAAA;AAAA,IAEpC,IAAA,EAAM,EAAE,MAAA,EAAQ,IAAA;AAAK,GACvB;AAEA,EAAA,MAAM,KAAA,mBACJO,eAAAA,CAAAgB,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAhB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EACb,QAAA,EAAA;AAAA,sBAAAZ,cAAAA;AAAA,QAACqB,aAAAA;AAAA,QAAA;AAAA,UACC,QAAA,EAAQ,IAAA;AAAA,UACR,IAAA,EAAK,QAAA;AAAA,UACL,SAAA,EAAW,CAAA,uBAAA,EAA0B,QAAA,GAAW,kCAAA,GAAqC,EAAE,CAAA,CAAA;AAAA,UACvF,YAAA,EAAY,SAAA;AAAA,UACZ,eAAA,EAAe,QAAA;AAAA,UACf,OAAA,EAAS,YAAA;AAAA,UAET,QAAA,kBAAArB,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAA,EAAwB,eAAY,MAAA,EAClD,QAAA,kBAAAA,cAAAA,CAACsD,YAAA,EAAA,EAAK,CAAA,EACR;AAAA;AAAA,OACF;AAAA,MACC,IAAA,oBAAQtD,cAAAA,CAAC,UAAA,EAAA,EAAW;AAAA,KAAA,EACvB,CAAA;AAAA,IACC,UAAA,oBACCY,eAAAA,CAAC,MAAA,EAAA,EAAK,MAAK,QAAA,EAAS,SAAA,EAAU,oBAAA,EAAqB,QAAA,EAAU,YAAA,EAC3D,QAAA,EAAA;AAAA,sBAAAZ,cAAAA;AAAA,QAAC4C,mBAAAA;AAAA,QAAA;AAAA,UACC,QAAA,EAAQ,IAAA;AAAA,UACR,SAAA,EAAU,0BAAA;AAAA,UACV,WAAA,EAAa,iBAAA;AAAA,UACb,YAAA,EAAY,iBAAA;AAAA,UACZ,KAAA,EAAO,MAAA;AAAA,UACP,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,YAAA,cAAA,CAAe,KAAA,CAAM,OAAO,KAAK,CAAA;AACjC,YAAA,cAAA,GAAiB,KAAA,CAAM,OAAO,KAAK,CAAA;AAAA,UACrC;AAAA;AAAA,OACF;AAAA,sBACA5C,cAAAA;AAAA,QAACqB,aAAAA;AAAA,QAAA;AAAA,UACC,QAAA,EAAQ,IAAA;AAAA,UACR,IAAA,EAAK,QAAA;AAAA,UACL,SAAA,EAAU,2BAAA;AAAA,UACV,YAAA,EAAY,iBAAA;AAAA,UAEZ,QAAA,kBAAArB,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yBAAA,EAA0B,eAAY,MAAA,EACpD,QAAA,kBAAAA,cAAAA,CAACuD,uBAAA,EAAA,EAAgB,CAAA,EACnB;AAAA;AAAA;AACF,KAAA,EACF;AAAA,GAAA,EAEJ,CAAA;AAGF,EAAA,MAAM,GAAA,GACJ,MAAM,MAAA,GAAS,CAAA,IAAK,uBAClB3C,eAAAA,CAAAgB,qBAAA,EACG,QAAA,EAAA;AAAA,IAAA,KAAA,CAAM,SAAS,CAAA,oBACd5B,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBACZ,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,qBACVA,cAAAA,CAAC,UAAA,EAAA,EAA4B,QAAZ,IAAA,CAAK,KAAmB,CAC1C,CAAA,EACH,CAAA;AAAA,IAED,wBAAQA,cAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAY,MAAM,QAAA,EAAU;AAAA,GAAA,EAChD,CAAA,GACE,IAAA;AAEN,EAAA,uBACEA,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAU,EAAA,EAAQ,SAAA,EAAW,SAChC,QAAA,kBAAAA,cAAAA;AAAA,IAACwD,eAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MACR,SAAA,EAAU,iBAAA;AAAA,MACV,OAAO,EAAC;AAAA,MACR,KAAA;AAAA,MACA,GAAA;AAAA,MACA;AAAA;AAAA,GACF,EACF,CAAA;AAEJ,CAAC;ACnSM,IAAM,GAAA,GAAMvD,gBAAAA,CAAsC,SAASwD,IAAAA,CAChE,EAAE,OAAA,GAAU,SAAA,EAAW,IAAA,GAAO,OAAA,EAAS,MAAM,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,IACrE,GAAA,EACA;AACA,EAAA,MAAM,QAAA,GAAWtD,aAAiB,IAAI,CAAA;AAEtC,EAAAC,0BAAoB,GAAA,EAAK,MAAM,QAAA,CAAS,OAAA,EAAS,YAA+B,CAAA;AAEhF,EAAA,MAAM,OAAA,GAAU,CAAC,QAAA,EAAU,CAAA,QAAA,EAAW,OAAO,CAAA,CAAA,EAAI,CAAA,QAAA,EAAW,IAAI,CAAA,CAAA,EAAI,SAAS,CAAA,CAC1E,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACEJ,cAAAA;AAAA,IAAC0D,OAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MACR,GAAA,EAAK,QAAA;AAAA,MACL,SAAA,EAAW,OAAA;AAAA,MAEX,IAAA,EACE,IAAA,GACI,sBACE1D,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,cAAA,EAAe,aAAA,EAAY,MAAA,EACxC,QAAA,EAAA,IAAA,EACH,CAAA,GAEF,MAAA;AAAA,MAEN,KAAA,EAAO,QAAA;AAAA,MACN,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;ACUD,IAAM,OAAA,GAAU,CAAC,KAAA,KAA2D,OAAA,IAAW,KAAA;AAOhF,IAAM,aAAA,GAAgBC,gBAAAA;AAAA,EAC3B,SAAS0D,cAAAA,CACP;AAAA,IACE,KAAA;AAAA,IACA,KAAA,GAAQ,KAAA;AAAA,IACR,cAAc,SAAA,GAAY,gBAAA;AAAA,IAC1B,MAAA;AAAA,IACA,MAAA;AAAA,IACA,EAAA;AAAA,IACA;AAAA,KAEF,GAAA,EACA;AACA,IAAA,MAAM,QAAA,GAAWxD,aAAkB,IAAI,CAAA;AACvC,IAAA,MAAM,OAAA,GAAU2C,iBAAWC,qBAAiB,CAAA;AAI5C,IAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI1C,cAAAA,EAAiB;AACrD,IAAA,MAAM,SAAA,GAAY,CAAC,KAAA,KAA0B;AAC3C,MAAA,MAAM,OAAO,KAAA,CAAM,aAAA;AACnB,MAAA,IAAI,gBAAgB,OAAA,EAAS,aAAA,CAAc,IAAA,CAAK,qBAAA,GAAwB,MAAM,CAAA;AAAA,IAChF,CAAA;AAEA,IAAAD,yBAAAA,CAAoB,KAAK,OAAO;AAAA,MAC9B,MAAA,EAAQ,CAAC,KAAA,KAAU;AACjB,QAAA,SAAA,CAAU,KAAK,CAAA;AACf,QAAA,QAAA,CAAS,OAAA,EAAS,OAAO,KAAK,CAAA;AAAA,MAChC,CAAA;AAAA,MACA,IAAA,EAAM,CAAC,KAAA,KAAU;AACf,QAAA,SAAA,CAAU,KAAK,CAAA;AACf,QAAA,QAAA,CAAS,OAAA,EAAS,KAAK,KAAK,CAAA;AAAA,MAC9B,CAAA;AAAA,MACA,MAAM,CAAC,KAAA,KAAU,QAAA,CAAS,OAAA,EAAS,KAAK,KAAK,CAAA;AAAA,MAC7C,UAAA,EAAY,MAAM,QAAA,CAAS,OAAA,EAAS,YAAW,IAAK;AAAA,KACtD,CAAE,CAAA;AAEF,IAAA,MAAM,OAAA,GAAU,CAAC,IAAA,MAA4C;AAAA,MAC3D,IAAI,IAAA,CAAK,EAAA;AAAA;AAAA;AAAA;AAAA,MAIT,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,KAAK,IAAA,CAAK,GAAA;AAAA,MACV,QAAQ,IAAA,CAAK,MAAA;AAAA,MACb,WAAW,IAAA,CAAK,SAAA;AAAA;AAAA,MAEhB,QAAA,EAAU,sBACRQ,eAAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,2BAAA;AAAA,UACV,iBAAA,EAAgB,QAAA;AAAA,UAChB,IAAA,EAAM,KAAK,GAAA,IAAO,GAAA;AAAA,UAClB,QAAQ,IAAA,CAAK,MAAA;AAAA,UACb,QAAA,EAAU,EAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAZ,eAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2BAA0B,aAAA,EAAY,MAAA,EACnD,eAAK,IAAA,EACR,CAAA;AAAA,4BACAY,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yBAAA,EACd,QAAA,EAAA;AAAA,8BAAAZ,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0BAAA,EAA4B,eAAK,KAAA,EAAM,CAAA;AAAA,cAAQ,GAAA;AAAA,cAC9D,IAAA,CAAK,+BACJA,cAAAA,CAAC,UAAK,SAAA,EAAU,gCAAA,EAAkC,eAAK,WAAA,EAAY;AAAA,aAAA,EAEvE,CAAA;AAAA,YAAQ,GAAA;AAAA,YACP,IAAA,CAAK,GAAA,oBACJA,cAAAA,CAAC,OAAI,SAAA,EAAU,wBAAA,EAAyB,OAAA,EAAQ,SAAA,EAAU,sBAAMA,cAAAA,CAAC4D,oBAAA,EAAA,EAAa,CAAA,EAC3E,eAAK,GAAA,EACR;AAAA;AAAA;AAAA;AAEJ,KAEJ,CAAA;AAGA,IAAA,MAAM,QAAyB,EAAC;AAChC,IAAA,IAAI,QAAA;AACJ,IAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,KAAA,KAAU;AACvB,MAAA,IAAI,QAAA,KAAa,OAAA,CAAQ,KAAK,CAAA,IAAK,OAAA,CAAQ,QAAQ,CAAA,CAAA,EAAI,KAAA,CAAM,IAAA,CAAK,EAAE,SAAA,EAAW,IAAA,EAAM,CAAA;AACrF,MAAA,KAAA,CAAM,IAAA;AAAA,QACJ,QAAQ,KAAK,CAAA,GACT,EAAE,EAAA,EAAI,KAAA,CAAM,IAAI,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,KAAA,EAAO,MAAM,KAAA,CAAM,GAAA,CAAI,OAAO,CAAA,EAAE,GACpE,QAAQ,KAAK;AAAA,OACnB;AACA,MAAA,QAAA,GAAW,KAAA;AAAA,IACb,CAAC,CAAA;AAED,IAAA,MAAM,OAAA,GAAU,CAAC,mBAAA,EAAqB,KAAA,IAAS,0BAAA,EAA4B,SAAS,CAAA,CACjF,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,GAAG,CAAA;AAEX,IAAA,MAAM,EAAA,GAA6B;AAAA,MACjC,IAAA,EAAM,EAAE,SAAA,EAAW,yBAAA,EAA2B,cAAc,SAAA,EAAU;AAAA,MACtE,aAAA,EAAe,EAAE,SAAA,EAAW,0BAAA,EAA2B;AAAA,MACvD,SAAA,EAAW,EAAE,SAAA,EAAW,8BAAA,EAA+B;AAAA,MACvD,QAAA,EAAU,EAAE,SAAA,EAAW,yBAAA;AAA0B,KACnD;AAEA,IAAA,MAAMX,yBACJjD,cAAAA;AAAA,MAACkD,SAAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACR,GAAA,EAAK,QAAA;AAAA,QACL,EAAA;AAAA,QACA,SAAA,EAAW,OAAA;AAAA,QACX,KAAA,EACE,SAAS,UAAA,KAAe,MAAA,GACnB,EAAE,0BAAA,EAA4B,CAAA,EAAG,UAAU,CAAA,EAAA,CAAA,EAAK,GACjD,MAAA;AAAA,QAEN,KAAA,EAAO,KAAA;AAAA,QACP,KAAA;AAAA,QACA,MAAA;AAAA,QACA,MAAA;AAAA,QACA;AAAA;AAAA,KACF;AAIF,IAAA,OAAO,UAAUD,MAAA,mBAAOjD,cAAAA,CAACmD,sBAAAA,EAAA,EAAoB,QAAA,EAAAF,MAAA,EAAK,CAAA;AAAA,EACpD;AACF;ACpKA,IAAM,QAAA,GAA+D;AAAA,EACnE,IAAA,EAAM,MAAA;AAAA,EACN,OAAA,EAAS,MAAA;AAAA,EACT,OAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAQ,OAAA;AAAA,EACR,SAAA,EAAW,UAAA;AAAA,EACX,OAAA,EAAS;AACX,CAAA;AAEA,IAAM,IAAA,GAA0C;AAAA,EAC9C,IAAA,kBAAMjD,cAAAA,CAACiB,YAAAA,EAAA,EAAK,CAAA;AAAA,EACZ,OAAA,kBAASjB,cAAAA,CAAC6D,eAAA,EAAA,EAAQ,CAAA;AAAA,EAClB,OAAA,kBAAS7D,cAAAA,CAAC8D,mBAAA,EAAA,EAAY,CAAA;AAAA,EACtB,MAAA,kBAAQ9D,cAAAA,CAAC+D,eAAA,EAAA,EAAQ,CAAA;AAAA,EACjB,SAAA,kBAAW/D,cAAAA,CAACgE,mBAAA,EAAA,EAAY,CAAA;AAAA,EACxB,OAAA,kBAAShE,cAAAA,CAACgB,qBAAAA,EAAA,EAAc;AAC1B,CAAA;AAKO,IAAM,OAAA,GAAUf,gBAAAA,CAAyC,SAASgE,QAAAA,CACvE,EAAE,IAAA,GAAO,MAAA,EAAQ,QAAA,EAAU,QAAA,GAAW,IAAA,EAAM,EAAA,EAAI,SAAA,IAChD,GAAA,EACA;AACA,EAAA,MAAM,QAAA,GAAW9D,aAAqB,IAAI,CAAA;AAC1C,EAAAC,0BAAoB,GAAA,EAAK,MAAM,QAAA,CAAS,OAAA,EAAS,YAA8B,CAAA;AAE/E,EAAA,uBACEJ,cAAAA;AAAA,IAACkE,eAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MACR,GAAA,EAAK,QAAA;AAAA,MACL,EAAA;AAAA,MACA,QAAA,EAAU,SAAS,IAAI,CAAA;AAAA,MACvB,IAAA,EAAM,QAAA;AAAA,MAEN,MACE,QAAA,mBACElE,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,kBAAA,EAAmB,aAAA,EAAY,MAAA,EAC5C,QAAA,EAAA,IAAA,CAAK,IAAI,CAAA,EACZ,CAAA,mBAEAA,cAAAA,CAAA4B,qBAAA,EAAE,CAAA;AAAA,MAGN,EAAA,EAAI;AAAA,QACF,IAAA,EAAM;AAAA,UACJ,SAAA,EAAW,CAAC,YAAA,EAAc,CAAA,YAAA,EAAe,IAAI,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG;AAAA,SACtF;AAAA,QACA,IAAA,EAAM,EAAE,SAAA,EAAW,kBAAA;AAAmB;AACxC;AAAA,GACF;AAEJ,CAAC;AC7CM,SAAS,KAAA,CAAM;AAAA,EACpB,OAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA,GAAO,OAAA;AAAA,EACP,MAAA;AAAA,EACA,SAAA,GAAY,OAAA;AAAA,EACZ,UAAA,GAAa,QAAA;AAAA,EACb,MAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA;AACF,CAAA,EAAe;AACb,EAAA,MAAM,SAASd,WAAAA,EAAM;AACrB,EAAA,MAAM,OAAA,GAAU,GAAG,MAAM,CAAA,MAAA,CAAA;AAGzB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIT,eAAgC,IAAI,CAAA;AAC5D,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,eAAS,KAAK,CAAA;AAC5C,EAAAmB,gBAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAM,QAAQ,MAAM,UAAA,CAAW,IAAA,CAAK,YAAA,GAAe,KAAK,YAAY,CAAA;AACpE,IAAA,KAAA,EAAM;AACN,IAAA,MAAM,QAAA,GAAW,IAAI,cAAA,CAAe,KAAK,CAAA;AACzC,IAAA,QAAA,CAAS,QAAQ,IAAI,CAAA;AACrB,IAAA,CAAC,GAAG,IAAA,CAAK,QAAQ,CAAA,CAAE,OAAA,CAAQ,CAAC,KAAA,KAAU,QAAA,CAAS,OAAA,CAAQ,KAAK,CAAC,CAAA;AAC7D,IAAA,OAAO,MAAM,SAAS,UAAA,EAAW;AAAA,EACnC,CAAA,EAAG,CAAC,IAAA,EAAM,QAAQ,CAAC,CAAA;AAEnB,EAAA,MAAM,OAAA,GAAU,CAAC,UAAA,EAAY,CAAA,UAAA,EAAa,IAAI,CAAA,CAAA,EAAI,OAAA,IAAW,sBAAA,EAAwB,SAAS,CAAA,CAC3F,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACExB,cAAAA;AAAA,IAACmE,aAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MACR,EAAA;AAAA,MACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,EAAW,KAAA;AAAA,MACX,SAAA,EAAW,KAAA;AAAA,MACX,WAAA,EAAW,IAAA;AAAA,MACX,EAAA,EAAI;AAAA,QACF,IAAA,EAAM,EAAE,SAAA,EAAW,gBAAA,EAAiB;AAAA,QACpC,IAAA,EAAM;AAAA,UACJ,SAAA,EAAW,OAAA;AAAA,UACX,iBAAA,EAAmB,OAAA;AAAA,UACnB,kBAAA,EAAoB;AAAA;AACtB,OACF;AAAA,MACA,OAAA,EAAS,CAAC,EAAE,IAAA,EAAM,UAAS,qBACzBvD,eAAAA,CAAAgB,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAAhB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EACb,QAAA,EAAA;AAAA,0BAAAZ,eAAC,IAAA,EAAA,EAAG,EAAA,EAAI,OAAA,EAAS,SAAA,EAAU,mBACxB,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,0BACAY,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAA,EACZ,QAAA,EAAA;AAAA,YAAA,MAAA,IAAU,IAAA,KAAS,2BAClBZ,cAAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAQ,UAAA;AAAA,gBACR,IAAA,EAAK,QAAA;AAAA,gBACL,IAAA,kBAAMA,cAAAA,CAAC6B,gBAAAA,EAAA,EAAS,CAAA;AAAA,gBAChB,YAAA,EAAY,SAAA;AAAA,gBACZ,OAAA,EAAS;AAAA;AAAA,aACX;AAAA,4BAEF7B,cAAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBACC,GAAA,EAAK,QAAA;AAAA,gBACL,OAAA,EAAQ,UAAA;AAAA,gBACR,IAAA,EAAK,QAAA;AAAA,gBACL,IAAA,kBAAMA,cAAAA,CAACoC,SAAAA,EAAA,EAAE,CAAA;AAAA,gBACT,YAAA,EAAY,UAAA;AAAA,gBACZ,OAAA,EAAS,CAAC,KAAA,KAAU,IAAA,CAAK,KAAK;AAAA;AAAA;AAChC,WAAA,EACF;AAAA,SAAA,EACF,CAAA;AAAA,wBACApC,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,OAAA;AAAA,YACL,SAAA,EAAU,gBAAA;AAAA,YAIV,QAAA,EAAU,UAAU,CAAA,GAAI,MAAA;AAAA,YAEvB;AAAA;AAAA,SACH;AAAA,QAAA,CACE,UAAU,WAAA,qBACVY,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,kBAAA,EACb,QAAA,EAAA;AAAA,0BAAAZ,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EAA0B,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,0BACrDA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAwB,QAAA,EAAA,MAAA,EAAO;AAAA,SAAA,EAChD;AAAA,OAAA,EAEJ;AAAA;AAAA,GAEJ;AAEJ;ACnEO,IAAM,WAAA,GAAcC,gBAAAA,CAA+C,SAASmE,YAAAA,CACjF;AAAA,EACE,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,OAAA;AAAA,EACP,OAAA,GAAU,QAAA;AAAA,EACV,KAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA,GAAc,OAAA;AAAA,EACd,WAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,wBAAA;AAAA,EACd,MAAA,GAAS,KAAA;AAAA,EACT,iBAAA,GAAoB,WAAA;AAAA,EACpB,QAAA,GAAW,CAAA;AAAA,EACX,kBAAA,GAAqB,wBAAA;AAAA,EACrB,WAAA,GAAc,SAAA;AAAA,EACd,cAAA,GAAiB,kBAAA;AAAA,EACjB,kBAAA,GAAqB,6BAAA;AAAA,EACrB,IAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,SAAStD,WAAAA,EAAM;AACrB,EAAA,MAAM,UAAU,EAAA,IAAM,MAAA;AACtB,EAAA,MAAM,MAAA,GAAS,GAAG,OAAO,CAAA,KAAA,CAAA;AACzB,EAAA,MAAM,cAAc,KAAA,IAAS,IAAA;AAC7B,EAAA,MAAM,QAAA,GAAW,SAAS,EAAC;AAC3B,EAAA,MAAM,QAAA,GAAW,SAAS,MAAA,GAAS,QAAA;AAEnC,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,UAAA;AAAA,IACA,aAAa,OAAO,CAAA,CAAA;AAAA,IACpB,aAAa,IAAI,CAAA,CAAA;AAAA,IACjB,gBAAA;AAAA,IACA,KAAA,IAAS,iBAAA;AAAA,IACT,QAAA,IAAY,oBAAA;AAAA,IACZ;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,MAAM,UAAU,CAAC,MAAA,KACf,WAAA,GAAe,MAAA,CAAmC,WAAW,CAAA,GAAI,MAAA;AACnE,EAAA,MAAM,OAAA,GAAU,CAAC,IAAA,KAAkB;AACjC,IAAA,MAAM,MAAA,GAAS,QAAQ,IAAA,CAAK,CAAC,MAAM,OAAA,CAAQ,CAAC,CAAA,KAAM,IAAI,CAAA,IAAK,IAAA;AAC3D,IAAA,MAAM,IAAA,GAAQ,SAA4C,WAAW,CAAA;AACrE,IAAA,OAAO,MAAA,CAAO,QAAQ,IAAI,CAAA;AAAA,EAC5B,CAAA;AAGA,EAAA,MAAM,MAAA,GAAS,CAAC,KAAA,EAAwB,IAAA,KAAoB;AAC1D,IAAA,KAAA,CAAM,cAAc,eAAA,EAAgB;AACpC,IAAA,QAAA,GAAW,IAAI,CAAA;AACf,IAAA,OAAO,KAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,CAAC,IAAA,KAAmB;AACzC,IAAA,IAAI,SAAS,MAAA,EAAW;AACtB,MAAA,uBAAOd,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAA+B,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,IACpE;AACA,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,IAAI,QAAA,CAAS,OAAA,CAAQ,IAAI,CAAA,KAAM,GAAG,OAAO,IAAA;AACzC,MAAA,uBACEA,cAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,sBAAA;AAAA,UACV,OAAO,kBAAA,CAAmB,OAAA,CAAQ,OAAO,MAAA,CAAO,QAAA,CAAS,MAAM,CAAC,CAAA;AAAA,UAChE,QAAA;AAAA,UACA,QAAA,EAAU,WAAW,MAAA,GAAY,CAAC,UAAU,MAAA,CAAO,KAAA,EAAO,EAAE,CAAA;AAAA,UAC5D;AAAA;AAAA,OACF;AAAA,IAEJ;AACA,IAAA,uBACEA,cAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,sBAAA;AAAA,QACV,KAAA,EAAO,QAAQ,IAAI,CAAA;AAAA,QACnB,QAAA;AAAA,QACA,QAAA,EACE,QAAA,GACI,MAAA,GACA,CAAC,KAAA,KACC,MAAA;AAAA,UACE,KAAA;AAAA,UACA,QAAA,CAAS,MAAA,CAAO,CAAC,CAAA,KAAM,MAAM,IAAI;AAAA,SACnC;AAAA,QAER,aAAa,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,OAAA,CAAQ,IAAI,CAAC,CAAA;AAAA;AAAA,KAC9C;AAAA,EAEJ,CAAA;AAEA,EAAA,MAAM,QAAA,GAAW;AAAA,IACf,IAAA,EAAM,EAAE,SAAA,EAAW,0BAAA,EAA2B;AAAA,IAC9C,GAAA,EAAK,EAAE,SAAA,EAAW,8BAAA,EAA+B;AAAA,IACjD,KAAA,EAAO,EAAE,SAAA,EAAW,gCAAA;AAAiC,GACvD;AAEA,EAAA,MAAM,EAAA,GAAoC;AAAA;AAAA;AAAA,IAGxC,IAAA,EAAM,CAACqE,QAAAA,KAAY;AACjB,MAAA,MAAM,IAAA,GAAQA,UAAsD,KAAA,EAAO,cAAA;AAC3E,MAAA,OAAO;AAAA,QACL,SAAA,EAAW,CAAA,yCAAA,EAA4C,IAAA,GAAO,gCAAA,GAAmC,EAAE,CAAA;AAAA,OACrG;AAAA,IACF,CAAA;AAAA,IACA,kBAAA,EAAoB,EAAE,SAAA,EAAW,wBAAA,EAAyB;AAAA,IAC1D,KAAA,EAAO;AAAA,MACL,kBAAA,EAAoB,cAAc,MAAA,GAAS,MAAA;AAAA,MAC3C,cAAA,EAAgB,QAAQ,IAAA,GAAO,MAAA;AAAA,MAC/B,iBAAiB,QAAA,IAAY;AAAA,KAC/B;AAAA,IACA,cAAA,EAAgB,EAAE,SAAA,EAAW,uBAAA,EAAwB;AAAA,IACrD,KAAA,EAAO,EAAE,SAAA,EAAW,uBAAA,EAAwB;AAAA,IAC5C,OAAA,EAAS,EAAE,SAAA,EAAW,wCAAA,EAAyC;AAAA,IAC/D,KAAA,EAAO,EAAE,SAAA,EAAW,CAAA,6CAAA,EAAgD,OAAO,CAAA,CAAA,EAAG;AAAA,IAC9E,MAAA,EAAQ,EAAE,SAAA,EAAW,wBAAA,EAAyB;AAAA,IAC9C,uBAAA,EAAyB,EAAE,SAAA,EAAW,4BAAA,EAA6B;AAAA;AAAA,IAEnE,cAAA,EAAgB;AAAA,MACd,GAAG,QAAA;AAAA,MACH,IAAA,EAAM,EAAE,GAAG,QAAA,CAAS,MAAM,IAAA,EAAM,MAAA,EAAW,gBAAgB,MAAA,EAAU;AAAA,MACrE,OAAO,EAAE,GAAG,QAAA,CAAS,KAAA,EAAO,cAAc,cAAA;AAAe,KAC3D;AAAA,IACA,eAAA,EAAiB,EAAE,SAAA,EAAW,wBAAA,EAAyB;AAAA;AAAA,IAEvD,WAAA,EAAa;AAAA,MACX,IAAA,EAAM,EAAE,SAAA,EAAW,8BAAA,EAAgC,cAAc,iBAAA;AAAkB,KACrF;AAAA,IACA,WAAA,EAAa,EAAE,SAAA,EAAW,uBAAA,EAAwB;AAAA,IAClD,OAAA,EAAS,EAAE,SAAA,EAAW,yBAAA,EAA0B;AAAA,IAChD,IAAA,EAAM,EAAE,SAAA,EAAW,sBAAA,EAAuB;AAAA,IAC1C,IAAA,EAAM,CAACA,QAAAA,KAAY;AACjB,MAAA,MAAM,UAAWA,QAAAA,EAAqE,OAAA;AACtF,MAAA,MAAM,OAAA,GAAU,OAAA,KAAY,MAAA,IAAa,OAAA,CAAQ,iBAAiB,OAAA,CAAQ,KAAA;AAC1E,MAAA,OAAO;AAAA,QACL,SAAA,EAAW,CAAA,oBAAA,EAAuB,OAAA,GAAU,gCAAA,GAAmC,EAAE,CAAA;AAAA,OACnF;AAAA,IACF,CAAA;AAAA,IACA,iBAAA,EAAmB,EAAE,SAAA,EAAW,+BAAA,EAAgC;AAAA;AAAA;AAAA;AAAA;AAAA,IAKhE,QAAA,EAAU;AAAA,MACR,GAAG,QAAA;AAAA,MACH,IAAA,EAAM,EAAE,GAAG,QAAA,CAAS,IAAA,EAAM,MAAM,MAAA,EAAW,cAAA,EAAgB,MAAA,EAAW,KAAA,EAAO,IAAA;AAAK,KACpF;AAAA,IACA,YAAA,EAAc,EAAE,SAAA,EAAW,uBAAA;AAAwB,GACrD;AAEA,EAAA,uBACEzD,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,EACb,QAAA,EAAA;AAAA,IAAA,KAAA,oBACCA,eAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,iBAAA,EAAkB,SAAS,OAAA,EACzC,QAAA,EAAA;AAAA,MAAA,KAAA;AAAA,MACA,QAAA,oBACCZ,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,oBAAA,EAAqB,aAAA,EAAY,QAAO,QAAA,EAAA,GAAA,EAExD;AAAA,KAAA,EAEJ,CAAA;AAAA,oBAEFA,cAAAA;AAAA,MAACsE,uBAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACR,OAAA;AAAA,QACA,QAAA,EAAU,GAAA;AAAA,QACV,KAAA,EAAO,QAAA;AAAA,QACP,OAAA;AAAA,QACA,WAAA;AAAA,QACA,WAAA;AAAA,QACA,QAAA,EAAU,CAAC,KAAA,KAAU,QAAA,GAAW,MAAM,KAAkB,CAAA;AAAA,QACxD,QAAA;AAAA,QACA,OAAA,EAAS,QAAQ,KAAK,CAAA;AAAA,QACtB,WAAA;AAAA,QACA,oBAAA,EAAsB,cAAA;AAAA,QACtB,MAAA;AAAA,QACA,iBAAA;AAAA,QAEA,YAAA,EAAc,OAAA,KAAY,SAAA,GAAY,OAAA,GAAU,OAAA;AAAA,QAChD,kBAAA;AAAA,QACA,UAAA,kBACEtE,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,6BAAA,EAA8B,aAAA,EAAY,MAAA,EACxD,QAAA,kBAAAA,cAAAA,CAACuD,uBAAAA,EAAA,EAAgB,CAAA,EACnB,CAAA;AAAA,QAEF,8BAAcvD,cAAAA,CAACS,iBAAAA,EAAA,EAAU,eAAY,MAAA,EAAO,CAAA;AAAA,QAC5C,8BAAcT,cAAAA,CAACkC,aAAAA,EAAA,EAAM,eAAY,MAAA,EAAO,CAAA;AAAA,QACxC,kCAAkBlC,cAAAA,CAACkC,aAAAA,EAAA,EAAM,eAAY,MAAA,EAAO,CAAA;AAAA,QAC5C,EAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,IACC,WAAA,oBACCtB,eAAAA,CAAC,GAAA,EAAA,EAAE,EAAA,EAAI,MAAA,EAAQ,SAAA,EAAW,CAAA,cAAA,EAAiB,KAAA,GAAQ,wBAAA,GAA2B,EAAE,CAAA,CAAA,EAC9E,QAAA,EAAA;AAAA,sBAAAZ,eAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAA,EAAsB,aAAA,EAAY,QAC/C,QAAA,EAAA,KAAA,mBAAQA,cAAAA,CAACgB,qBAAAA,EAAA,EAAc,CAAA,mBAAKhB,cAAAA,CAACiB,YAAAA,EAAA,EAAK,CAAA,EACrC,CAAA;AAAA,MACC;AAAA,KAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ,CAAC;ACzNM,IAAM,UAAA,GAAahB,gBAAAA,CAA4C,SAASsE,WAAAA,CAC7E;AAAA,EACE,KAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,MAAA;AAAA,EACA,SAAA,GAAY,QAAA;AAAA,EACZ,GAAA;AAAA,EACA,cAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,UAAA;AAAA,EACd,IAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AAEA,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIlE,eAAS,CAAC,CAAA;AACxC,EAAA,MAAM,QAAQ,SAAA,IAAa,OAAA;AAE3B,EAAA,MAAM,QAAQ,cAAA,IAAkB,OAAA;AAEhC,EAAA,MAAM,cAAc,CAAC,GAAA;AAAA;AAAA,IAEnB,SAAS,UAAA,CAAW,IAAA,EAAgB,OAAA,EAAkB;AACpD,MAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,OAAA;AAC3B,MAAA,MAAM,SAAS,KAAA,KAAU,KAAA;AACzB,MAAA,OAAOmE,kBAAA;AAAA,QACL,OAAA;AAAA,QACA,EAAE,cAAA,EAAgB,MAAA,GAAS,MAAA,GAAS,MAAA,EAAU;AAAA,wBAC9C5D,eAAAA,CAAAgB,mBAAAA,EAAA,EACI,QAAA,EAAA;AAAA,UAAA,CAAA,OAAA,KAAY,SAAA,IAAa,GAAA,CAAI,IAAA,qBAC7B5B,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0BAAA,EAA2B,aAAA,EAAY,MAAA,EACpD,QAAA,EAAA,GAAA,CAAI,IAAA,EACP,CAAA;AAAA,0BAEFA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2BAAA,EAA6B,eAAK,KAAA,EAAM;AAAA,SAAA,EAC1D;AAAA,OACF;AAAA,IACF;AAAA,GAAA;AAEF,EAAA,MAAM,OAAA,GAAU,CAAC,gBAAA,EAAkB,CAAA,gBAAA,EAAmB,OAAO,CAAA,CAAA,EAAI,SAAS,CAAA,CACvE,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,GAAG,CAAA;AAEX,EAAA,uBACEY,eAAAA,CAAC,KAAA,EAAA,EAAI,KAAU,SAAA,EAAW,OAAA,EAAU,GAAG,KAAA,EACrC,QAAA,EAAA;AAAA,oBAAAA,eAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,CAAA,2BAAA,EAA8B,KAAA,GAAQ,qCAAA,GAAwC,EAAE,CAAA,CAAA;AAAA,QAE3F,QAAA,EAAA;AAAA,0BAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAAA,EACZ,QAAA,EAAA;AAAA,YAAA,MAAA,oBACCZ,cAAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAQ,UAAA;AAAA,gBACR,IAAA,EAAK,OAAA;AAAA,gBACL,IAAA,kBAAMA,cAAAA,CAAC0C,iBAAAA,EAAA,EAAU,CAAA;AAAA,gBACjB,YAAA,EAAY,SAAA;AAAA,gBACZ,OAAA,EAAS;AAAA;AAAA,aACX;AAAA,4BAEF1C,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,yBAAyB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,YAC5C,uBAAOA,cAAAA,CAAC,GAAA,EAAA,EAAI,SAAA,EAAU,uBAAuB,QAAA,EAAA,GAAA,EAAI;AAAA,WAAA,EACpD,CAAA;AAAA,UACC,KAAA,oBACCY,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,uBAAA,EACZ,QAAA,EAAA;AAAA,YAAA,cAAA,oBAAkBZ,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BAA2B,QAAA,EAAA,cAAA,EAAe,CAAA;AAAA,YAC3E,2BAAWA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BAA2B,QAAA,EAAA,OAAA,EAAQ;AAAA,WAAA,EAChE,CAAA;AAAA,UAED,4BACCA,cAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,wBAAA;AAAA,cACV,OAAA,EAAQ,UAAA;AAAA,cACR,IAAA,EAAK,QAAA;AAAA,cACL,IAAA,kBAAMA,cAAAA,CAACyE,uBAAA,EAAA,EAAgB,CAAA;AAAA,cACvB,YAAA,EAAY,WAAA;AAAA,cACZ,OAAA,EAAS;AAAA;AAAA;AACX;AAAA;AAAA,KAEJ;AAAA,IACC,IAAA,IAAQ,IAAA,CAAK,MAAA,GAAS,CAAA,oBACrBzE,cAAAA;AAAA,MAAC0E,eAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACR,KAAA,EAAO,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,MAAS;AAAA,UACxB,OAAO,GAAA,CAAI,KAAA;AAAA,UACX,UAAU,GAAA,CAAI,QAAA;AAAA,UACd,QAAA,EAAU,YAAY,GAAG;AAAA,SAC3B,CAAE,CAAA;AAAA,QACF,WAAA,EAAa,KAAA;AAAA,QACb,WAAA,EAAa,CAAC,KAAA,KAAU;AACtB,UAAA,UAAA,CAAW,MAAM,KAAK,CAAA;AACtB,UAAA,WAAA,GAAc,MAAM,KAAK,CAAA;AAAA,QAC3B,CAAA;AAAA,QACA,EAAA,EAAI;AAAA,UACF,IAAA,EAAM,EAAE,SAAA,EAAW,sBAAA,EAAuB;AAAA,UAC1C,MAAM,EAAE,SAAA,EAAW,0BAAA,EAA4B,YAAA,EAAc,aAAa,KAAA,EAAM;AAAA,UAChF,QAAA,EAAU,EAAE,SAAA,EAAW,0BAAA,EAA2B;AAAA,UAClD,MAAA,EAAQ,EAAE,SAAA,EAAW,qBAAA,EAAsB;AAAA,UAC3C,MAAA,EAAQ,EAAE,SAAA,EAAW,wBAAA;AAAyB;AAChD;AAAA;AACF,GAAA,EAEJ,CAAA;AAEJ,CAAC;AC1HM,IAAM,MAAA,GAASzE,gBAAAA,CAA0C,SAAS0E,OAAAA,CACvE;AAAA,EACE,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,OAAA;AAAA,EACP,KAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd,OAAA;AAAA,EACA,WAAA,GAAc,OAAA;AAAA,EACd,WAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,2BAAA;AAAA,EACd,IAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,SAAS7D,WAAAA,EAAM;AACrB,EAAA,MAAM,UAAU,EAAA,IAAM,MAAA;AACtB,EAAA,MAAM,MAAA,GAAS,GAAG,OAAO,CAAA,KAAA,CAAA;AACzB,EAAA,MAAM,MAAA,GAAS,GAAG,OAAO,CAAA,KAAA,CAAA;AACzB,EAAA,MAAM,cAAc,KAAA,IAAS,IAAA;AAC7B,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIT,eAAS,KAAK,CAAA;AAEtC,EAAA,MAAM,WAAA,GAAc2B,iBAAAA;AAAA,IAClB,CAAC,KAAA,KAAmC;AAClC,MAAA,KAAA,EAAO,YAAA,CAAa,QAAQ,UAAU,CAAA;AACtC,MAAA,IAAI,OAAO,GAAA,KAAQ,UAAA,EAAY,GAAA,CAAI,KAAK,CAAA;AAAA,WAAA,IAC/B,GAAA,MAAS,OAAA,GAAU,KAAA;AAAA,IAC9B,CAAA;AAAA,IACA,CAAC,GAAG;AAAA,GACN;AAEA,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,UAAA;AAAA,IACA,aAAa,OAAO,CAAA,CAAA;AAAA,IACpB,aAAa,IAAI,CAAA,CAAA;AAAA,IACjB,WAAA;AAAA,IACA,KAAA,IAAS,iBAAA;AAAA,IACT,QAAA,IAAY,oBAAA;AAAA,IACZ;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,MAAM,EAAA,GAAiC;AAAA,IACrC,IAAA,EAAM;AAAA,MACJ,SAAA,EAAW,CAAA,oCAAA,EAAuC,IAAA,GAAO,2BAAA,GAA8B,EAAE,CAAA,CAAA;AAAA;AAAA,MAEzF,uBAAA,EAAyB;AAAA,KAC3B;AAAA;AAAA,IAEA,MAAA,EAAQ,EAAE,aAAA,EAAe,IAAA,EAAK;AAAA,IAC9B,qBAAA,EAAuB,EAAE,SAAA,EAAW,mBAAA,EAAoB;AAAA;AAAA,IAExD,KAAA,EAAO,EAAE,SAAA,EAAW,kBAAA,EAAmB;AAAA,IACvC,OAAA,EAAS,EAAE,SAAA,EAAW,mCAAA,EAAqC,eAAe,IAAA,EAAK;AAAA,IAC/E,KAAA,EAAO,EAAE,SAAA,EAAW,kBAAA,EAAmB;AAAA,IACvC,OAAA,EAAS,EAAE,SAAA,EAAW,oBAAA,EAAqB;AAAA,IAC3C,IAAA,EAAM,EAAE,SAAA,EAAW,iBAAA,EAAmB,IAAI,MAAA,EAAO;AAAA,IACjD,IAAA,EAAM,EAAE,SAAA,EAAW,iBAAA,EAAkB;AAAA,IACrC,YAAA,EAAc,EAAE,SAAA,EAAW,kCAAA;AAAmC,GAChE;AAEA,EAAA,uBACEpB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,EACb,QAAA,EAAA;AAAA,IAAA,KAAA,oBACCA,eAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,iBAAA,EAAkB,SAAS,OAAA,EACzC,QAAA,EAAA;AAAA,MAAA,KAAA;AAAA,MACA,QAAA,oBACCZ,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,oBAAA,EAAqB,aAAA,EAAY,QAAO,QAAA,EAAA,GAAA,EAExD;AAAA,KAAA,EAEJ,CAAA;AAAA,oBAEFA,cAAAA;AAAA,MAAC4E,iBAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACR,OAAA;AAAA,QACA,aAAA,EAAe,WAAA;AAAA,QACf,KAAA;AAAA,QACA,OAAA;AAAA,QACA,WAAA;AAAA,QACA,WAAA;AAAA,QACA,QAAA,EAAU,CAAC,KAAA,KAAU,QAAA,GAAW,MAAM,KAAK,CAAA;AAAA,QAC3C,MAAA,EAAQ,MAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,QAC1B,MAAA,EAAQ,MAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,QAC3B,QAAA;AAAA,QACA,QAAA;AAAA,QACA,IAAA;AAAA,QACA,OAAA,EAAS,QAAQ,KAAK,CAAA;AAAA,QACtB,WAAA;AAAA,QACA,eAAe,CAAC,MAAA,KACd,MAAA,IAAU,IAAA,mBACR5E,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wBAAA,EAA0B,uBAAY,CAAA,GAEtD,MAAA,CAAQ,MAAA,CAAmC,WAAW,KAAK,MAAM,CAAA;AAAA,QAIrE,YAAA,EAAa,OAAA;AAAA,QACb,YAAA,kBAAcA,cAAAA,CAACS,iBAAAA,EAAA,EAAU,CAAA;AAAA,QACzB,YAAA,kBAAcT,cAAAA,CAACU,eAAAA,EAAA,EAAQ,CAAA;AAAA,QACvB,YAAA,EAAY,QAAQ,MAAA,GAAY,SAAA;AAAA,QAChC,eAAA,EAAe,IAAA;AAAA,QACf,eAAA,EAAe,OAAO,MAAA,GAAS,MAAA;AAAA,QAC/B,kBAAA,EAAkB,cAAc,MAAA,GAAS,MAAA;AAAA,QACzC,cAAA,EAAc,QAAQ,IAAA,GAAO,MAAA;AAAA,QAC7B,iBAAe,QAAA,IAAY,MAAA;AAAA,QAC3B;AAAA;AAAA,KACF;AAAA,IACC,WAAA,oBACCE,eAAAA,CAAC,GAAA,EAAA,EAAE,EAAA,EAAI,MAAA,EAAQ,SAAA,EAAW,CAAA,cAAA,EAAiB,KAAA,GAAQ,wBAAA,GAA2B,EAAE,CAAA,CAAA,EAC9E,QAAA,EAAA;AAAA,sBAAAZ,eAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAA,EAAsB,aAAA,EAAY,QAC/C,QAAA,EAAA,KAAA,mBAAQA,cAAAA,CAACgB,qBAAAA,EAAA,EAAc,CAAA,mBAAKhB,cAAAA,CAACiB,YAAAA,EAAA,EAAK,CAAA,EACrC,CAAA;AAAA,MACC;AAAA,KAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ,CAAC;ACvHD,IAAM4D,QACJ,CAAC,KAAA,EAAe,IAAA,KAChB,CAAC,4BACC7E,cAAAA;AAAA,EAAC,QAAA;AAAA,EAAA;AAAA,IACC,IAAA,EAAK,QAAA;AAAA,IACL,SAAA,EAAU,qBAAA;AAAA,IACV,YAAA,EAAY,KAAA;AAAA,IACZ,UAAU,OAAA,CAAQ,QAAA;AAAA,IAClB,SAAS,OAAA,CAAQ,OAAA;AAAA,IAEhB,QAAA,EAAA;AAAA;AACH,CAAA;AAGG,IAAM,SAAA,GAAYC,gBAAAA,CAA2C,SAAS6E,UAAAA,CAC3E;AAAA,EACE,YAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,kBAAA;AAAA,EACA,YAAA,GAAe,CAAA;AAAA,EACf,YAAA;AAAA,EACA,gBAAA,GAAmB,qBAAA;AAAA,EACnB,EAAA;AAAA,EACA;AACF,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,QAAA,GAAW3E,aAAuB,IAAI,CAAA;AAC5C,EAAAC,0BAAoB,GAAA,EAAK,MAAM,QAAA,CAAS,OAAA,EAAS,YAA8B,CAAA;AAG/E,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIC,cAAAA,CAAS;AAAA,IACrC,KAAA,EAAO,CAAA;AAAA,IACP,IAAA,EAAM,kBAAA,GAAqB,CAAC,CAAA,IAAK;AAAA,GAClC,CAAA;AACD,EAAA,MAAM,KAAA,GAAQ,EAAE,KAAA,EAAO,KAAA,IAAS,QAAQ,KAAA,EAAO,IAAA,EAAM,IAAA,IAAQ,OAAA,CAAQ,IAAA,EAAK;AAE1E,EAAA,uBACEL,cAAAA;AAAA,IAAC+E,mBAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MACR,GAAA,EAAK,QAAA;AAAA,MACL,EAAA;AAAA,MACA,YAAA;AAAA,MACA,OAAO,KAAA,CAAM,KAAA;AAAA,MACb,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,kBAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA,EAAc,CAAC,KAAA,KAAU;AACvB,QAAA,UAAA,CAAW,EAAE,KAAA,EAAO,KAAA,CAAM,OAAO,IAAA,EAAM,KAAA,CAAM,MAAM,CAAA;AACnD,QAAA,YAAA,GAAe,KAAK,CAAA;AAAA,MACtB,CAAA;AAAA,MACA,QAAA,EAAU;AAAA,QACR,MAAA,EACE,oFAAA;AAAA,QACF,aAAA,EAAeF,MAAK,oBAAA,kBAAmB7E,eAACgF,uBAAA,EAAA,EAAgB,aAAA,EAAY,QAAO,CAAE,CAAA;AAAA,QAC7E,YAAA,EAAcH,MAAK,oBAAA,kBAAmB7E,eAACiF,iBAAA,EAAA,EAAU,aAAA,EAAY,QAAO,CAAE,CAAA;AAAA,QACtE,YAAA,EAAcJ,MAAK,sBAAA,kBAAkB7E,eAACkF,kBAAA,EAAA,EAAW,aAAA,EAAY,QAAO,CAAE,CAAA;AAAA,QACtE,YAAA,EAAcL,MAAK,qBAAA,kBAAiB7E,eAACmF,wBAAA,EAAA,EAAiB,aAAA,EAAY,QAAO,CAAE,CAAA;AAAA,QAC3E,SAAA,EAAW,CAAC,OAAA,KAAuC;AACjD,UAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,IAAA,KAAS,OAAA,CAAQ,WAAA;AACvC,UAAA,uBACEnF,cAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,SAAA,EAAU,oBAAA;AAAA,cACV,YAAA,EAAY,CAAA,UAAA,EAAU,OAAA,CAAQ,IAAA,GAAO,CAAC,CAAA,CAAA;AAAA,cACtC,cAAA,EAAc,QAAQ,MAAA,GAAS,MAAA;AAAA,cAC/B,SAAS,OAAA,CAAQ,OAAA;AAAA,cAEhB,kBAAQ,IAAA,GAAO;AAAA;AAAA,WAClB;AAAA,QAEJ,CAAA;AAAA;AAAA,QAEA,qBAAqB,CAAC,OAAA,KACpB,QAAQ,OAAA,CAAQ,MAAA,GAAS,qBACvBA,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,oBAAA;AAAA,YACV,IAAA,EAAK,QAAA;AAAA,YACL,YAAA,EAAY,gBAAA;AAAA,YACZ,SAAS,OAAA,CAAQ,OAAA;AAAA,YACjB,WAAA,EAAY,OAAA;AAAA,YACZ,OAAO,OAAA,CAAQ,KAAA;AAAA,YAEf,UAAU,CAAC,KAAA,KAAU,QAAQ,QAAA,CAAS,EAAE,OAA0C;AAAA;AAAA;AACpF,OAEN;AAAA,MACA,EAAA,EAAI;AAAA,QACF,IAAA,EAAM,EAAE,SAAA,EAAW,CAAC,cAAA,EAAgB,SAAS,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,EAAE;AAAA,QACzE,KAAA,EAAO,EAAE,SAAA,EAAW,qBAAA;AAAsB;AAC5C;AAAA,GACF;AAEJ,CAAC;ACvIM,IAAM,KAAA,GAAQC,gBAAAA,CAAuC,SAASmF,MAAAA,CACnE,EAAE,SAAA,EAAW,KAAA,EAAO,QAAA,EAAU,GAAG,KAAA,EAAM,EACvC,GAAA,EACA;AAEA,EAAA,MAAM,QAAA,GAAWjF,aAAmB,IAAI,CAAA;AACxC,EAAAC,0BAAoB,GAAA,EAAK,MAAM,QAAA,CAAS,OAAA,EAAS,YAA8B,CAAA;AAE/E,EAAA,uBACEJ,cAAAA;AAAA,IAACqF,WAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MACR,GAAA,EAAK,QAAA;AAAA,MAEL,EAAA,EAAI;AAAA,QACF,IAAA,EAAM,EAAE,SAAA,EAAW,CAAC,UAAA,EAAY,SAAS,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,GAAG,KAAA,EAAM;AAAA,QAC5E,iBAAA,EAAmB;AAAA,UACjB,SAAA,EAAW,gBAAA;AAAA,UACX,IAAA,EAAM,MAAA;AAAA,UACN,iBAAA,EAAmB;AAAA,SACrB;AAAA,QACA,OAAA,EAAS,EAAE,SAAA,EAAW,mBAAA;AAAoB,OAC5C;AAAA,MACC,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;ACRM,IAAM,KAAA,GAAQpF,gBAAAA,CAAyC,SAASqF,MAAAA,CACrE;AAAA,EACE,KAAA;AAAA,EACA,SAAA,GAAY,IAAA;AAAA,EACZ,SAAA,GAAY,SAAA;AAAA,EACZ,OAAA,GAAU,KAAA;AAAA,EACV,KAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,SAASxE,WAAAA,EAAM;AACrB,EAAA,MAAM,UAAU,EAAA,IAAM,MAAA;AAEtB,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,UAAA;AAAA,IACA,mBAAmB,SAAS,CAAA,CAAA;AAAA,IAC5B,QAAA,IAAY,oBAAA;AAAA,IACZ;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACEF,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,SAAS,KAAA,EACvB,QAAA,EAAA;AAAA,oBAAAZ,cAAAA;AAAA,MAACuF,uBAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACR,QAAA,EAAU,GAAA;AAAA,QACV,OAAA;AAAA,QACA,OAAA;AAAA,QACA,KAAA;AAAA,QACA,IAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,EAAA,EAAI;AAAA,UACF,IAAA,EAAM,EAAE,SAAA,EAAW,mBAAA,EAAoB;AAAA,UACvC,KAAA,EAAO,EAAE,SAAA,EAAW,iBAAA,EAAkB;AAAA,UACtC,GAAA,EAAK,EAAE,SAAA,EAAW,eAAA,EAAgB;AAAA,UAClC,IAAA,EAAM,EAAE,SAAA,EAAW,gBAAA;AAAiB;AACtC;AAAA,KACF;AAAA,oBAEAvF,cAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,CAAA,eAAA,EAAkB,SAAA,GAAY,EAAA,GAAK,0BAA0B,CAAA,CAAA;AAAA,QACxE,OAAA,EAAS,OAAA;AAAA,QAER,QAAA,EAAA;AAAA;AAAA;AACH,GAAA,EACF,CAAA;AAEJ,CAAC;AChED,IAAM,WAAA,GAAc,CAAC,OAAA,EAAiB,KAAA,EAAe,OAAA,KACnD,KAAA,GAAQ,OAAA,GAAU,IAAA,CAAK,KAAA,CAAO,OAAA,IAAW,KAAA,GAAQ,OAAA,CAAA,GAAY,GAAG,CAAA,GAAI,CAAA;AAS/D,IAAM,WAAA,GAAcC,gBAAAA,CAA6C,SAASuF,YAAAA,CAC/E,EAAE,QAAA,EAAU,YAAA,EAAc,SAAA,EAAW,iBAAA,EAAmB,cAAA,EAAgB,KAAA,EAAO,EAAA,EAAI,SAAA,IACnF,GAAA,EACA;AACA,EAAA,MAAM,QAAA,GAAWrF,aAAyB,IAAI,CAAA;AAC9C,EAAAC,0BAAoB,GAAA,EAAK,MAAM,QAAA,CAAS,OAAA,EAAS,YAA8B,CAAA;AAC/E,EAAA,MAAM,SAAA,GAAY,CAAA,EAAGU,WAAAA,EAAO,CAAA,QAAA,CAAA;AAC5B,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIT,cAAAA,CAAS,EAAE,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA;AAErD,EAAA,MAAM,OAAA,GAAU,CAAC,KAAA,KAAmC;AAClD,IAAA,MAAM,KAAK,KAAA,CAAM,aAAA;AACjB,IAAA,UAAA,CAAW;AAAA,MACT,GAAG,WAAA,CAAY,EAAA,CAAG,YAAY,EAAA,CAAG,WAAA,EAAa,GAAG,WAAW,CAAA;AAAA,MAC5D,GAAG,WAAA,CAAY,EAAA,CAAG,WAAW,EAAA,CAAG,YAAA,EAAc,GAAG,YAAY;AAAA,KAC9D,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,KAAA,GAAQ,CAAC,UAAA,EAAuC,KAAA,MAAmB;AAAA,IACvE,SAAA,EAAW,4CAA4C,UAAU,CAAA,CAAA;AAAA,IACjE,QAAA,EAAU,EAAA;AAAA,IACV,eAAA,EAAiB,SAAA;AAAA,IACjB,eAAA,EAAiB,KAAA;AAAA,IACjB,eAAA,EAAiB,CAAA;AAAA,IACjB,eAAA,EAAiB;AAAA,GACnB,CAAA;AAKA,EAAA,MAAM,EAAA,GAAK;AAAA,IACT,IAAA,EAAM,EAAE,SAAA,EAAW,CAAC,gBAAA,EAAkB,SAAS,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,GAAG,KAAA,EAAM;AAAA,IAClF,OAAA,EAAS,EAAE,SAAA,EAAW,yBAAA,EAA0B;AAAA,IAChD,OAAA,EAAS;AAAA,MACP,EAAA,EAAI,SAAA;AAAA,MACJ,SAAA,EAAW,yBAAA;AAAA,MACX,QAAA,EAAU,CAAA;AAAA,MACV,IAAA,EAAM,QAAA;AAAA,MACN,YAAA,EAAc,SAAA;AAAA,MACd,iBAAA,EAAmB,cAAA;AAAA,MACnB,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,IAAA,EAAM,KAAA,CAAM,YAAA,EAAc,OAAA,CAAQ,CAAC,CAAA;AAAA,IACnC,IAAA,EAAM,KAAA,CAAM,UAAA,EAAY,OAAA,CAAQ,CAAC;AAAA,GACnC;AAEA,EAAA,uBACEL,eAACyF,uBAAA,EAAA,EAAiB,QAAA,EAAQ,MAAC,GAAA,EAAK,QAAA,EAAU,EAAA,EAAQ,EAAA,EAC/C,QAAA,EACH,CAAA;AAEJ,CAAC;AChDM,IAAM,cAAA,GAAiBxF,gBAAAA;AAAA,EAC5B,SAASyF,eAAAA,CACP;AAAA,IACE,OAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA,GAAU,SAAA;AAAA,IACV,YAAA,EAAc,SAAA;AAAA,IACd,iBAAA,EAAmB,cAAA;AAAA,IACnB,QAAA;AAAA,IACA,EAAA;AAAA,IACA;AAAA,KAEF,GAAA,EACA;AACA,IAAA,MAAM,QAAA,GAAWvF,aAAqB,IAAI,CAAA;AAC1C,IAAAC,0BAAoB,GAAA,EAAK,MAAM,QAAA,CAAS,OAAA,EAAS,YAA8B,CAAA;AAE/E,IAAA,MAAM,OAAA,GAAU,CAAC,YAAA,EAAc,CAAA,YAAA,EAAe,OAAO,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAE5F,IAAA,uBACEJ,cAAAA;AAAA,MAAC2F,yBAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACR,GAAA,EAAK,QAAA;AAAA,QACL,EAAA;AAAA,QACA,OAAA;AAAA,QACA,WAAA,EAAY,OAAA;AAAA,QACZ,WAAA,EAAY,OAAA;AAAA,QACZ,cAAA,EAAe,UAAA;AAAA,QACf,KAAA;AAAA,QACA,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,UAAA,IAAI,KAAA,CAAM,KAAA,IAAS,IAAA,EAAM,QAAA,GAAW,MAAM,KAAwB,CAAA;AAAA,QACpE,CAAA;AAAA,QACA,UAAA,EAAY,KAAA;AAAA,QACZ,QAAA;AAAA,QACA,YAAA,EAAY,SAAA;AAAA,QACZ,iBAAA,EAAiB,cAAA;AAAA,QACjB,cAAc,CAAC,MAAA,qBACb/E,eAAAA,CAAAgB,qBAAA,EACG,QAAA,EAAA;AAAA,UAAA,MAAA,CAAO,IAAA,oBACN5B,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,kBAAA,EAAmB,aAAA,EAAY,MAAA,EAC5C,QAAA,EAAA,MAAA,CAAO,IAAA,EACV,CAAA;AAAA,0BAEFA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mBAAA,EAAqB,iBAAO,KAAA,EAAM;AAAA,SAAA,EACpD,CAAA;AAAA,QAEF,EAAA,EAAI;AAAA,UACF,IAAA,EAAM,EAAE,SAAA,EAAW,OAAA,EAAQ;AAAA,UAC3B,MAAA,EAAQ;AAAA,YACN,SAAA,EAAW,kBAAA;AAAA;AAAA,YAEX,SAAA,EAAW,CAAC,KAAA,KAAyC;AACnD,cAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,OAAA,EAAS,KAAA,CAAM,cAAc,KAAA,EAAM;AAAA,YACvD;AAAA;AACF;AACF;AAAA,KACF;AAAA,EAEJ;AACF;AChEO,IAAM,MAAA,GAASC,gBAAAA,CAA0C,SAAS2F,OAAAA,CACvE;AAAA,EACE,KAAA;AAAA,EACA,SAAA,GAAY,IAAA;AAAA,EACZ,aAAA,GAAgB,OAAA;AAAA,EAChB,IAAA,GAAO,QAAA;AAAA,EACP,OAAA,GAAU,KAAA;AAAA,EACV,QAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,EAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,SAAS9E,WAAAA,EAAM;AACrB,EAAA,MAAM,UAAU,EAAA,IAAM,MAAA;AAEtB,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,WAAA;AAAA,IACA,cAAc,IAAI,CAAA,CAAA;AAAA,IAClB,oBAAoB,aAAa,CAAA,CAAA;AAAA,IACjC,QAAA,IAAY,qBAAA;AAAA,IACZ;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACEF,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,SAAS,KAAA,EACvB,QAAA,EAAA;AAAA,oBAAAZ,cAAAA;AAAA,MAAC6F,uBAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACR,QAAA,EAAU,GAAA;AAAA,QACV,OAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,IAAA;AAAA,QACA,EAAA,EAAI;AAAA,UACF,MAAM,EAAE,SAAA,EAAW,sBAAsB,IAAA,EAAM,MAAA,EAAW,gBAAgB,MAAA,EAAU;AAAA,UACpF,KAAA,EAAO,EAAE,SAAA,EAAW,kBAAA,EAAmB;AAAA,UACvC,MAAA,EAAQ,EAAE,SAAA,EAAW,kBAAA;AAAmB;AAC1C;AAAA,KACF;AAAA,oBAEA7F,cAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,CAAA,gBAAA,EAAmB,SAAA,GAAY,EAAA,GAAK,2BAA2B,CAAA,CAAA;AAAA,QAC1E,OAAA,EAAS,OAAA;AAAA,QAER,QAAA,EAAA;AAAA;AAAA;AACH,GAAA,EACF,CAAA;AAEJ,CAAC;ACjDM,SAAS,SAAS,MAAA,EAA6B;AACpD,EAAA,OAAO,IAAA;AACT;AAiBO,IAAM,IAAA,GAAOC,gBAAAA,CAAsC,SAAS6F,KAAAA,CACjE,EAAE,WAAA,EAAa,WAAA,EAAa,QAAA,EAAU,EAAA,EAAI,SAAA,EAAU,EACpD,GAAA,EACA;AACA,EAAA,MAAM,QAAA,GAAW3F,aAAgB,IAAI,CAAA;AACrC,EAAAC,0BAAoB,GAAA,EAAK,MAAM,QAAA,CAAS,OAAA,EAAS,YAA8B,CAAA;AAE/E,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIC,eAAS,CAAC,CAAA;AACxC,EAAA,MAAM,QAAQ,WAAA,IAAe,OAAA;AAE7B,EAAA,MAAM,MAAA,GAASC,cAAAA,CAAS,OAAA,CAAQ,QAAQ,CAAA,CAAE,MAAA;AAAA,IAAO,CAAC,KAAA,KAChDC,oBAAAA,CAAe,KAAK;AAAA,GACtB;AAEA,EAAA,MAAM,MAAA,GAAS,CAAC,KAAA,KACd,SAAS,UAAU,OAAA,EAAwC;AACzD,IAAA,MAAM,UAAU,OAAA,CAAQ,OAAA;AAGxB,IAAA,MAAM,QAAQ,KAAA,CAAM,OAAA;AACpB,IAAA,OAAOiE,kBAAAA;AAAA,MACL,OAAA;AAAA,MACA;AAAA,QACE,mBAAA,EAAqB,QAAQ,QAAA,GAAW,MAAA;AAAA,QACxC,SAAA,EAAW,CAAC,KAAA,KAAyB;AACnC,UAAA,IAAI,KAAA,IAAS,KAAA,CAAM,GAAA,KAAQ,QAAA,EAAU,KAAA,EAAM;AAAA,eACtC,OAAA,CAAQ,KAAA,CAAM,SAAA,GAAY,KAAK,CAAA;AAAA,QACtC;AAAA,OACF;AAAA,sBACA5D,eAAAA,CAAAgB,mBAAAA,EAAA,EACG,QAAA,EAAA;AAAA,QAAA,KAAA,CAAM,QAAA,oBACL5B,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,eAAA,EAAgB,aAAA,EAAY,MAAA,EACzC,QAAA,EAAA,KAAA,CAAM,QAAA,EACT,CAAA;AAAA,wBAEFA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gBAAA,EAAkB,gBAAM,MAAA,EAAO,CAAA;AAAA,QAC9C,KAAA,CAAM,UAAU,MAAA,oBAAaA,eAAC,KAAA,EAAA,EAAM,SAAA,EAAU,gBAAA,EAAkB,QAAA,EAAA,KAAA,CAAM,KAAA,EAAM,CAAA;AAAA,QAC5E,KAAA;AAAA,wBAECA,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,gBAAA;AAAA,YACV,aAAA,EAAY,MAAA;AAAA,YACZ,OAAA,EAAS,CAAC,KAAA,KAAsB;AAC9B,cAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,cAAA,KAAA,EAAM;AAAA,YACR,CAAA;AAAA,YAEA,QAAA,kBAAAA,cAAAA,CAACoC,SAAAA,EAAA,EAAE;AAAA;AAAA;AACL,OAAA,EAEJ;AAAA,KACF;AAAA,EACF,CAAA;AAEF,EAAA,uBACEpC,cAAAA;AAAA,IAAC+F,eAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MACR,GAAA,EAAK,QAAA;AAAA,MACL,EAAA;AAAA,MACA,WAAA,EAAa,KAAA;AAAA,MACb,WAAA,EAAa,CAAC,KAAA,KAAU;AACtB,QAAA,UAAA,CAAW,MAAM,KAAK,CAAA;AACtB,QAAA,WAAA,GAAc,MAAM,KAAK,CAAA;AAAA,MAC3B,CAAA;AAAA,MACA,EAAA,EAAI;AAAA,QACF,IAAA,EAAM,EAAE,SAAA,EAAW,CAAC,SAAA,EAAW,SAAS,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,EAAE;AAAA,QACpE,YAAA,EAAc,EAAE,SAAA,EAAW,wBAAA,EAAyB;AAAA,QACpD,UAAA,EAAY,EAAE,SAAA,EAAW,sBAAA,EAAuB;AAAA,QAChD,GAAA,EAAK,EAAE,SAAA,EAAW,cAAA,EAAe;AAAA,QACjC,MAAA,EAAQ,EAAE,SAAA,EAAW,iBAAA,EAAkB;AAAA,QACvC,cAAA,EAAgB,EAAE,SAAA,EAAW,iBAAA;AAAkB,OACjD;AAAA,MAEC,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,EAAO,0BAClB/F,cAAAA;AAAA,QAACgG,gBAAA;AAAA,QAAA;AAAA,UAEC,MAAA,EAAQ,MAAM,KAAA,CAAM,MAAA;AAAA,UACpB,QAAA,EAAU,MAAM,KAAA,CAAM,QAAA;AAAA,UACtB,cAAA,EAAgB,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA;AAAA,UAClC,EAAA,EAAI;AAAA,YACF,MAAA,EAAQ,EAAE,SAAA,EAAW,eAAA,EAAgB;AAAA,YACrC,YAAA,EAAc,EAAE,SAAA,EAAW,cAAA,EAAe;AAAA,YAC1C,OAAA,EAAS,EAAE,SAAA,EAAW,gBAAA;AAAiB,WACzC;AAAA,UAEC,gBAAM,KAAA,CAAM;AAAA,SAAA;AAAA,QAVR,MAAM,GAAA,IAAO;AAAA,OAYrB;AAAA;AAAA,GACH;AAEJ,CAAC;ACrGD,IAAMC,SAAAA,GAA6D;AAAA,EACjE,OAAA,EAAS,MAAA;AAAA,EACT,MAAA,EAAQ,OAAA;AAAA,EACR,OAAA,EAAS,SAAA;AAAA,EACT,IAAA,EAAM;AACR,CAAA;AAEA,IAAMC,KAAAA,GAAwC;AAAA,EAC5C,OAAA,kBAASlG,cAAAA,CAAC6D,eAAAA,EAAA,EAAQ,CAAA;AAAA,EAClB,MAAA,kBAAQ7D,cAAAA,CAAC+D,eAAAA,EAAA,EAAQ,CAAA;AAAA,EACjB,OAAA,kBAAS/D,cAAAA,CAACkC,aAAAA,EAAA,EAAM,CAAA;AAAA,EAChB,IAAA,kBAAMlC,cAAAA,CAACiB,YAAAA,EAAA,EAAK;AACd,CAAA;AAOO,IAAM,KAAA,GAAQhB,gBAAAA,CAAoC,SAASkG,MAAAA,CAChE,EAAE,QAAA,GAAW,WAAA,EAAa,UAAA,GAAa,QAAA,EAAU,EAAA,EAAI,SAAA,EAAU,EAC/D,GAAA,EACA;AACA,EAAA,MAAM,QAAA,GAAWhG,aAAmB,IAAI,CAAA;AAExC,EAAA,MAAM,YAAY,CAAC;AAAA,IACjB,IAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA,GAAW,IAAA;AAAA,IACX,IAAA;AAAA,IACA;AAAA,GACF,MAAwC;AAAA,IACtC,QAAA,EAAU8F,UAAS,IAAI,CAAA;AAAA,IACvB,OAAA,EAAS,KAAA;AAAA,IACT,MAAA,EAAQ,OAAA;AAAA;AAAA,IAER,MAAM,QAAA,mBACJjG,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,gBAAA,EAAiB,aAAA,EAAY,MAAA,EAC1C,QAAA,EAAAkG,MAAK,IAAI,CAAA,EACZ,oBAEAlG,cAAAA,CAAA4B,qBAAA,EAAE,CAAA;AAAA,IAEJ,2BAAW5B,cAAAA,CAACoC,SAAAA,EAAA,EAAE,eAAY,MAAA,EAAO,CAAA;AAAA,IACjC,IAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA,EAAW,sBAAsB,IAAI,CAAA;AAAA,GACvC,CAAA;AAEA,EAAAhC,yBAAAA,CAAoB,KAAK,OAAO;AAAA,IAC9B,MAAM,CAAC,OAAA,KACL,QAAA,CAAS,OAAA,EAAS,KAAK,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,GAAI,QAAQ,GAAA,CAAI,SAAS,CAAA,GAAI,SAAA,CAAU,OAAO,CAAC,CAAA;AAAA,IAC7F,KAAA,EAAO,MAAM,QAAA,CAAS,OAAA,EAAS,KAAA;AAAM,GACvC,CAAE,CAAA;AAEF,EAAA,uBACEJ,cAAAA;AAAA,IAACoG,WAAA;AAAA,IAAA;AAAA,MAEE,GAAI,EAAE,QAAA,EAAU,IAAA,EAAK;AAAA,MACtB,GAAA,EAAK,QAAA;AAAA,MACL,EAAA;AAAA,MACA,QAAA;AAAA,MACA,EAAA,EAAI;AAAA,QACF,IAAA,EAAM;AAAA,UACJ,SAAA,EAAW,CAAC,UAAA,EAAY,SAAS,EAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG;AAAA,SAC7D;AAAA,QACA,OAAA,EAAS,EAAE,SAAA,EAAW,mBAAA,EAAoB;AAAA,QAC1C,OAAA,EAAS,EAAE,SAAA,EAAW,mBAAA,EAAoB;AAAA,QAC1C,IAAA,EAAM,EAAE,SAAA,EAAW,gBAAA,EAAiB;AAAA,QACpC,OAAA,EAAS,EAAE,SAAA,EAAW,iBAAA,EAAkB;AAAA,QACxC,MAAA,EAAQ,EAAE,SAAA,EAAW,kBAAA,EAAmB;AAAA,QACxC,WAAA,EAAa,EAAE,SAAA,EAAW,iBAAA,EAAmB,cAAc,UAAA,EAAW;AAAA;AAAA,QAEtE,UAAA,EAAY;AAAA,UACV,UAAA,EAAY;AAAA,YACV,KAAA,EAAO,0BAAA;AAAA,YACP,WAAA,EAAa,iCAAA;AAAA,YACb,UAAA,EAAY;AAAA;AACd;AACF;AACF;AAAA,GACF;AAEJ,CAAC","file":"index.cjs","sourcesContent":["import {\n Children,\n forwardRef,\n isValidElement,\n useImperativeHandle,\n useRef,\n useState,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport {\n Accordion as PrimeAccordion,\n AccordionTab as PrimeAccordionTab,\n type AccordionPassThroughTransitionType,\n} from 'primereact/accordion';\nimport { CaretDown, CaretUp } from '@phosphor-icons/react';\nimport './Accordion.css';\n\n/** Um item (.Accordion Item no Figma) e o conteúdo dele. */\nexport interface AccordionTabProps {\n /** Título (Accordion Item Title no Figma). Com headerContent, não aparece. */\n header: string;\n /** Texto abaixo do título (Show Description no Figma). */\n description?: string;\n /** Cabeçalho livre no lugar do título e da descrição (Type=Custom no Figma). */\n headerContent?: ReactNode;\n disabled?: boolean;\n /** Conteúdo do item aberto (Accordion Item Body no Figma). */\n children?: ReactNode;\n}\n\n/** Só descreve o item: quem desenha é o Accordion. */\nexport function AccordionTab(_props: AccordionTabProps): null {\n return null;\n}\n\nexport interface AccordionProps {\n /** Mais de um item aberto ao mesmo tempo. */\n multiple?: boolean;\n /**\n * Item(ns) aberto(s) (controlado): o índice, ou a lista com `multiple`; null fecha todos. Sem\n * ele, o Accordion controla sozinho e começa com o primeiro aberto, como nos exemplos do Figma.\n */\n activeIndex?: number | number[] | null;\n onTabChange?: (activeIndex: number | number[] | null) => void;\n /** Os itens, como `<AccordionTab>`. */\n children: ReactNode;\n id?: string;\n className?: string;\n}\n\n// Seta (Icon Button tertiary de 32px no Figma). É só visual: o botão é o cabeçalho inteiro.\nconst seta = (icon: ReactNode) => (\n <span className=\"cr-accordion__toggle\" aria-hidden=\"true\">\n {icon}\n </span>\n);\n\n// Base: Accordion do PrimeReact no modo unstyled (o p-accordion do PrimeNG da produção): abrir e\n// fechar (um ou vários, com multiple), o teclado (setas, Home e End entre os cabeçalhos; Enter e\n// Espaço abrem) e o cabeçalho como botão com aria-expanded ligado à região do conteúdo são do\n// Prime. Cada item vem de um <AccordionTab> do Cristal, com o título e a descrição do Figma (ou o\n// cabeçalho livre do Type=Custom) e a seta no fim. Abre e fecha sem animação (o Figma não define).\n// A ref entrega a raiz.\nexport const Accordion = forwardRef<HTMLDivElement, AccordionProps>(function Accordion(\n { multiple = false, activeIndex, onTabChange, children, id, className },\n ref,\n) {\n const primeRef = useRef<PrimeAccordion>(null);\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLDivElement);\n\n // Com onTabChange o Prime trata os itens abertos como controlados: sem activeIndex, o Cristal\n // guarda.\n const [interno, setInterno] = useState<number | number[] | null>(multiple ? [0] : 0);\n const abertos = activeIndex === undefined ? interno : activeIndex;\n\n const tabs = Children.toArray(children).filter(\n (child): child is ReactElement<AccordionTabProps> => isValidElement(child),\n );\n\n return (\n <PrimeAccordion\n // O Accordion aceita unstyled como os outros, mas o d.ts do Prime 10 esqueceu de declarar.\n {...({ unstyled: true } as object)}\n ref={primeRef}\n id={id}\n multiple={multiple}\n activeIndex={abertos}\n onTabChange={(event) => {\n const index = event.index as number | number[] | null;\n setInterno(index);\n onTabChange?.(index);\n }}\n expandIcon={seta(<CaretDown />)}\n collapseIcon={seta(<CaretUp />)}\n pt={{ root: { className: ['cr-accordion', className].filter(Boolean).join(' ') } }}\n >\n {tabs.map((tab, index) => (\n <PrimeAccordionTab\n key={tab.key ?? index}\n header={tab.props.header}\n disabled={tab.props.disabled}\n headerTemplate={\n tab.props.headerContent ? (\n <span className=\"cr-accordion__custom\">{tab.props.headerContent}</span>\n ) : (\n <span className=\"cr-accordion__texts\">\n <span className=\"cr-accordion__title\">{tab.props.header}</span>\n {tab.props.description && (\n <span className=\"cr-accordion__description\">{tab.props.description}</span>\n )}\n </span>\n )\n }\n pt={{\n root: { className: 'cr-accordion__item' },\n header: { className: 'cr-accordion__header' },\n headerAction: { className: 'cr-accordion__action' },\n toggleableContent: { className: 'cr-accordion__region' },\n content: { className: 'cr-accordion__content' },\n // Sem animação: o Prime manteria o conteúdo na tela pelos 450ms da saída dele.\n transition: { timeout: 0 } as AccordionPassThroughTransitionType,\n }}\n >\n {tab.props.children}\n </PrimeAccordionTab>\n ))}\n </PrimeAccordion>\n );\n});\n","import { forwardRef, useId } from 'react';\nimport {\n AutoComplete as PrimeAutoComplete,\n type AutoCompleteProps as PrimeAutoCompleteProps,\n} from 'primereact/autocomplete';\nimport { Info, WarningCircle } from '@phosphor-icons/react';\nimport type { InputSize, InputVariant } from '../Input';\nimport '../Input/Input.css';\nimport './AutoComplete.css';\n\nexport type AutoCompleteVariant = InputVariant;\nexport type AutoCompleteSize = InputSize;\n\nexport interface AutoCompleteProps extends Omit<\n PrimeAutoCompleteProps,\n // Fora do Figma (seleção múltipla, botão de dropdown, mensagem de vazio, carregando) ou\n // controlados pelo Cristal (visual, rótulo, erro).\n | 'size'\n | 'variant'\n | 'invalid'\n | 'multiple'\n | 'selectionLimit'\n | 'selectedItemTemplate'\n | 'removeTokenIcon'\n | 'dropdown'\n | 'dropdownAriaLabel'\n | 'dropdownAutoFocus'\n | 'dropdownIcon'\n | 'dropdownMode'\n | 'showEmptyMessage'\n | 'emptyMessage'\n | 'loadingIcon'\n | 'inputClassName'\n | 'panelClassName'\n | 'scrollHeight'\n | 'inputRef'\n | 'pt'\n | 'ptOptions'\n | 'unstyled'\n | 'children'\n> {\n /** Type no Figma: Outline (com borda) e Filled (com fundo). */\n variant?: AutoCompleteVariant;\n /** Size no Figma: 32, 36, 42 e 48px de altura do campo. */\n size?: AutoCompleteSize;\n /** Rótulo acima do campo (Label no Figma). Sem rótulo, passe `aria-label`. */\n label?: string;\n /** Dica abaixo do campo (Hint no Figma). */\n hint?: string;\n /** Mensagem de erro: deixa o campo no estado Error e mostra a dica de erro no lugar da dica. */\n error?: string;\n}\n\n// Base: AutoComplete do PrimeReact no modo unstyled (busca, lista, teclado e ARIA de combobox do\n// Prime, espelhando o p-autoComplete do PrimeNG da produção). O rótulo e a dica são os do Input\n// (.cr-field). O campo do AutoComplete no Figma não tem ícones, então o próprio <input> é a caixa\n// do campo: assim o painel, que o Prime alinha pelo <input>, fica na largura e na borda do campo.\nexport const AutoComplete = forwardRef<HTMLInputElement, AutoCompleteProps>(function AutoComplete(\n {\n variant = 'outline',\n size = 'large',\n label,\n hint,\n error,\n inputId,\n required,\n disabled,\n className,\n style,\n ...props\n },\n ref,\n) {\n const autoId = useId();\n const id = inputId ?? autoId;\n const hintId = `${id}-hint`;\n const supportText = error ?? hint;\n\n const classes = [\n 'cr-field',\n 'cr-autocomplete',\n `cr-field--${variant}`,\n `cr-field--${size}`,\n error && 'cr-field--error',\n disabled && 'cr-field--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={classes} style={style}>\n {label && (\n <label className=\"cr-field__label\" htmlFor={id}>\n {label}\n {required && (\n <span className=\"cr-field__required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n <PrimeAutoComplete\n unstyled\n inputRef={ref}\n inputId={id}\n required={required}\n disabled={disabled}\n // 5 itens visíveis, como no Figma (5 × 37px).\n scrollHeight=\"185px\"\n pt={{\n root: { className: 'cr-autocomplete__root' },\n input: {\n root: {\n className: 'cr-field__control cr-autocomplete__input',\n 'aria-describedby': supportText ? hintId : undefined,\n 'aria-invalid': error ? true : undefined,\n },\n },\n // O Prime mostra um spinner próprio enquanto busca; o Figma não define esse estado.\n loadingIcon: { className: 'cr-autocomplete__loader' },\n panel: { className: 'cr-autocomplete__panel' },\n list: { className: 'cr-autocomplete__list' },\n item: { className: 'cr-autocomplete__item' },\n }}\n {...props}\n />\n {supportText && (\n <p id={hintId} className={`cr-field__hint${error ? ' cr-field__hint--error' : ''}`}>\n <span className=\"cr-field__hint-icon\" aria-hidden=\"true\">\n {error ? <WarningCircle /> : <Info />}\n </span>\n {supportText}\n </p>\n )}\n </div>\n );\n});\n","import {\n forwardRef,\n useImperativeHandle,\n useRef,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { Badge as PrimeBadge } from 'primereact/badge';\nimport './Badge.css';\n\n/** State no Figma. */\nexport type BadgeVariant = 'default' | 'error' | 'warning' | 'success' | 'disabled';\n/** Size no Figma: large = 24px, medium = 16px, small = ponto de 8px sem número. */\nexport type BadgeSize = 'large' | 'medium' | 'small';\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n variant?: BadgeVariant;\n size?: BadgeSize;\n /** Valor do badge (Badge Value no Figma). Ignorado no `small`. */\n children?: ReactNode;\n}\n\n// Base: Badge do PrimeReact no modo unstyled; o visual vem todo do Badge.css. No small o\n// conteúdo é descartado: é um indicador sem número (para ele ser anunciado, passe role=\"img\" e\n// aria-label).\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n { variant = 'default', size = 'large', className, children, ...props },\n ref,\n) {\n const primeRef = useRef<PrimeBadge>(null);\n // O PrimeReact entrega na ref um objeto com getElement(); o Cristal repassa o <span>.\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLSpanElement);\n\n const classes = ['cr-badge', `cr-badge--${variant}`, `cr-badge--${size}`, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <PrimeBadge\n unstyled\n ref={primeRef}\n className={classes}\n value={size === 'small' ? null : children}\n {...props}\n />\n );\n});\n","import { forwardRef, type ButtonHTMLAttributes, type ReactNode, type Ref } from 'react';\nimport { Button as PrimeButton } from 'primereact/button';\nimport './Button.css';\n\n/** Hierarchy no Figma: Primary (Filled), Secondary (Tonal) e Tertiary (Outlined). */\nexport type ButtonVariant = 'primary' | 'secondary' | 'tertiary';\n/** Size no Figma: 32, 36, 42 e 48px de altura. */\nexport type ButtonSize = 'xsmall' | 'small' | 'medium' | 'large';\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n /** Ícone antes do texto (Leading Icon no Figma). Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n leadingIcon?: ReactNode;\n /** Ícone depois do texto (Trailing Icon no Figma). */\n trailingIcon?: ReactNode;\n}\n\n// Base: Button do PrimeReact no modo unstyled. O comportamento é o do Prime (espelhando o PrimeNG\n// da produção) e o visual vem todo do Button.css. O Prime aceita um ícone só (`icon`); como o\n// Figma permite os dois juntos, os ícones vão como conteúdo do botão.\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n variant = 'primary',\n size = 'large',\n leadingIcon,\n trailingIcon,\n type = 'button',\n className,\n children,\n ...props\n },\n ref,\n) {\n const classes = ['cr-button', `cr-button--${variant}`, `cr-button--${size}`, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <PrimeButton\n unstyled\n // O PrimeReact tipa a ref como a instância da classe, mas entrega o <button> nela.\n ref={ref as unknown as Ref<PrimeButton>}\n type={type}\n className={classes}\n {...props}\n >\n {leadingIcon && (\n <span className=\"cr-button__icon\" aria-hidden=\"true\">\n {leadingIcon}\n </span>\n )}\n {children}\n {trailingIcon && (\n <span className=\"cr-button__icon\" aria-hidden=\"true\">\n {trailingIcon}\n </span>\n )}\n </PrimeButton>\n );\n});\n","import { forwardRef, type HTMLAttributes, type Ref } from 'react';\nimport { Card as PrimeCard } from 'primereact/card';\nimport './Card.css';\n\n/** Padding no Figma: X-Small (8px), Small (12px), Medium (16px), Large (20px) e X-Large (24px). */\nexport type CardPadding = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';\n\nexport interface CardProps extends HTMLAttributes<HTMLDivElement> {\n padding?: CardPadding;\n /** Outline no Figma: borda de 1px em stroke/neutral/base. */\n outline?: boolean;\n}\n\n// Base: Card do PrimeReact no modo unstyled (o p-card do PrimeNG da produção). No Figma o Card é\n// só o contêiner, com o conteúdo num slot: o Cristal não repassa header, title, subTitle nem\n// footer do Prime, e o conteúdo vai em children. O visual vem do Card.css.\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n { padding = 'xsmall', outline = false, className, style, children, ...props },\n ref,\n) {\n const classes = ['cr-card', `cr-card--${padding}`, outline && 'cr-card--outline', className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <PrimeCard\n unstyled\n // O Card do Prime é um forwardRef que entrega o próprio <div>, mas o tipo o declara como classe.\n ref={ref as unknown as Ref<PrimeCard>}\n // No unstyled, className e style do Card do Prime não chegam ao elemento; vão pelo pt.\n pt={{\n root: { className: classes, style },\n body: { className: 'cr-card__body' },\n content: { className: 'cr-card__content' },\n }}\n {...props}\n >\n {children}\n </PrimeCard>\n );\n});\n","import { useEffect, useId, type ReactNode, type RefObject } from 'react';\nimport { Tooltip as PrimeTooltip, type TooltipPassThroughOptions } from 'primereact/tooltip';\nimport './Tooltip.css';\n\n/** Type no Figma: Plain (rótulo curto, uma linha) e Rich (texto de até 300px, quebra linha). */\nexport type TooltipType = 'plain' | 'rich';\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\nexport interface TooltipProps {\n /** Elemento que mostra o tooltip: ref, elemento ou seletor CSS. */\n target: RefObject<HTMLElement | null> | HTMLElement | string;\n /** Texto do tooltip (Label no Plain, Text no Rich). */\n content: ReactNode;\n type?: TooltipType;\n /** Lado do alvo. O Prime inverte o lado se faltar espaço na tela. */\n position?: TooltipPosition;\n /** O que abre o tooltip; o padrão abre no hover e no foco do teclado. */\n event?: 'hover' | 'focus' | 'both';\n showDelay?: number;\n hideDelay?: number;\n disabled?: boolean;\n id?: string;\n className?: string;\n}\n\nconst resolveTargets = (target: TooltipProps['target']): HTMLElement[] => {\n if (typeof target === 'string') return Array.from(document.querySelectorAll<HTMLElement>(target));\n if (target instanceof HTMLElement) return [target];\n return target.current ? [target.current] : [];\n};\n\n// Base: Tooltip do PrimeReact no modo unstyled (abrir/fechar, atraso, Esc e posicionamento com\n// troca de lado do Prime, espelhando o pTooltip do PrimeNG da produção). O visual vem do\n// Tooltip.css; o Figma não tem seta. Dois ajustes de acessibilidade: o Prime marca o tooltip\n// aberto com aria-hidden=\"true\", e não liga o alvo ao texto; aqui o alvo ganha aria-describedby.\nexport function Tooltip({\n target,\n content,\n type = 'plain',\n position = 'bottom',\n event = 'both',\n showDelay,\n hideDelay,\n disabled,\n id,\n className,\n}: TooltipProps) {\n const autoId = useId();\n const tooltipId = id ?? autoId;\n\n useEffect(() => {\n const elements = resolveTargets(target);\n elements.forEach((element) => element.setAttribute('aria-describedby', tooltipId));\n return () => elements.forEach((element) => element.removeAttribute('aria-describedby'));\n }, [target, tooltipId]);\n\n const classes = ['cr-tooltip', `cr-tooltip--${type}`, className].filter(Boolean).join(' ');\n\n const pt: TooltipPassThroughOptions = {\n root: (options) => {\n const side = (options as { state?: { position?: string } })?.state?.position ?? position;\n return { className: `${classes} cr-tooltip--${side}`, 'aria-hidden': false };\n },\n arrow: { className: 'cr-tooltip__arrow' },\n text: { className: 'cr-tooltip__text' },\n };\n\n return (\n <PrimeTooltip\n unstyled\n id={tooltipId}\n target={target as never}\n position={position}\n event={event}\n showDelay={showDelay}\n hideDelay={hideDelay}\n disabled={disabled}\n pt={pt}\n >\n {content}\n </PrimeTooltip>\n );\n}\n","import { useLayoutEffect, useMemo, useRef, useState, type ReactNode } from 'react';\nimport { Chart as PrimeChart } from 'primereact/chart';\nimport type { ChartData, ChartOptions, Plugin, ScriptableContext } from 'chart.js';\nimport { Question } from '@phosphor-icons/react';\nimport { Tooltip } from '../Tooltip';\nimport './Chart.css';\n\n/**\n * Cor da série: os tokens de gráfico (color/chart/fill/<cor>/<tom>), na ordem fixa. Sem `color`,\n * cada série pega a da sua posição; a cor acompanha a série, nunca a ordem. A quinary (ciano) fica\n * de fora: clara demais sobre o fundo (1,75:1).\n */\nexport type ChartColor = 'primary' | 'secondary' | 'tertiary' | 'quaternary';\n\n/** Tom da cor (o passo do token). Padrão: 600 na linha e 500 na barra, como no Figma. */\nexport type ChartTone = 100 | 200 | 300 | 400 | 500 | 600;\n\n/** Uma série: uma linha ou um conjunto de barras. */\nexport interface ChartSeries {\n label: string;\n /** Um valor por rótulo do eixo X; null deixa o ponto em branco. */\n data: (number | null)[];\n color?: ChartColor;\n /** Tom da cor: nas barras empilhadas do Figma, partes de um total usam tons da mesma cor. */\n tone?: ChartTone;\n /** Eixo do valor: o da esquerda (padrão) ou o da direita (y2Axis). */\n axis?: 'left' | 'right';\n}\n\n/** Escala de um eixo Y. */\nexport interface ChartAxis {\n /** Texto de cada marca e do valor no tooltip (ex.: `(v) => \\`R$ ${v}\\``). */\n format?: (value: number) => string;\n min?: number;\n max?: number;\n /** Distância entre as marcas (ex.: 50). */\n stepSize?: number;\n}\n\nexport interface ChartProps {\n /** Linhas com área (Chart / Line) ou barras (Chart / Bar). Padrão: line. */\n type?: 'line' | 'bar';\n /** Barras empilhadas: as séries somam numa barra só por rótulo. */\n stacked?: boolean;\n /** Rótulos do eixo X, um por ponto. */\n labels: string[];\n /** As séries, até 4 cores (as de gráfico dos tokens). */\n series: ChartSeries[];\n /** Eixo da esquerda. */\n yAxis?: ChartAxis;\n /** Eixo da direita, para séries com `axis: 'right'`. */\n y2Axis?: ChartAxis;\n /** Título do card. Sem título nem ações, só o gráfico e a legenda, sem a caixa. */\n title?: string;\n /** Texto do ícone de ajuda (Question) ao lado do título, num Tooltip. */\n help?: string;\n helpLabel?: string;\n /** Botões à direita do título (IconButton tertiary xsmall no Figma). */\n actions?: ReactNode;\n /** Altura da área do gráfico, com os eixos. Padrão: 266px, a do Figma. */\n height?: number;\n id?: string;\n className?: string;\n}\n\nconst CORES: ChartColor[] = ['primary', 'secondary', 'tertiary', 'quaternary'];\nconst corDe = (serie: ChartSeries, indice: number) => serie.color ?? CORES[indice % CORES.length]!;\nconst tomDe = (serie: ChartSeries, tipo: 'line' | 'bar') =>\n serie.tone ?? (tipo === 'bar' ? 500 : 600);\n\n/** Valores dos tokens que o Chart.js (canvas) precisa: ele não lê variáveis CSS. */\ninterface Tema {\n cor: (cor: ChartColor, tom: ChartTone) => string;\n grade: string;\n texto: string;\n cruz: string;\n superficie: string;\n tooltipFundo: string;\n tooltipTexto: string;\n fonte: { family: string; size: number; weight: number; lineHeight: number };\n}\n\nconst lerTema = (el: HTMLElement): Tema => {\n const css = getComputedStyle(el);\n const v = (nome: string) => css.getPropertyValue(nome).trim();\n const px = (nome: string) => parseFloat(v(nome));\n return {\n cor: (cor, tom) => v(`--cr-color-chart-fill-${cor}-${tom}`),\n grade: v('--cr-color-chart-tertiary'),\n texto: v('--cr-color-chart-secondary'),\n cruz: v('--cr-color-stroke-neutral-bold'),\n superficie: v('--cr-color-fill-neutral-container'),\n tooltipFundo: v('--cr-color-fill-neutral-boldest'),\n tooltipTexto: v('--cr-color-text-inverse-base'),\n fonte: {\n family: v('--cr-typography-label-small-10-semibold-font-family'),\n size: px('--cr-typography-label-small-10-semibold-font-size'),\n weight: Number(v('--cr-typography-label-small-10-semibold-font-weight')),\n lineHeight:\n px('--cr-typography-label-small-10-semibold-line-height') /\n px('--cr-typography-label-small-10-semibold-font-size'),\n },\n };\n};\n\n// #rrggbb (os tokens de cor) com transparência, para o degradê da área.\nconst comAlfa = (hex: string, alfa: number) => {\n const n = parseInt(hex.replace('#', ''), 16);\n return `rgba(${(n >> 16) & 255}, ${(n >> 8) & 255}, ${n & 255}, ${alfa})`;\n};\n\n// Linha vertical (stroke/neutral/bold) no X do tooltip: o leitor mira o horário, não a linha.\nconst cruz = (cor: string): Plugin<'line'> => ({\n id: 'crCruz',\n afterDatasetsDraw(chart) {\n const ativo = chart.tooltip?.getActiveElements()[0];\n if (!ativo) return;\n const { ctx, chartArea } = chart;\n ctx.save();\n ctx.strokeStyle = cor;\n ctx.lineWidth = 1;\n ctx.beginPath();\n ctx.moveTo(ativo.element.x, chartArea.top);\n ctx.lineTo(ativo.element.x, chartArea.bottom);\n ctx.stroke();\n ctx.restore();\n },\n});\n\n// Curva do Figma: cada trecho entre dois pontos é um S regular, que sai e chega na horizontal\n// (como uma senoide), sem passar dos valores. O Chart.js calcula as alças da curva pelos vizinhos\n// (tension); antes de desenhar, o Cristal põe as alças de cada ponto na sua própria altura, no\n// meio do caminho até o ponto anterior e o seguinte, e avisa a linha que elas já estão prontas.\nconst curvaDoFigma: Plugin<'line'> = {\n id: 'crCurva',\n beforeDatasetsDraw(chart) {\n chart.data.datasets.forEach((_, indice) => {\n const meta = chart.getDatasetMeta(indice);\n const pontos = meta.data as unknown as {\n x: number;\n y: number;\n skip?: boolean;\n cp1x: number;\n cp1y: number;\n cp2x: number;\n cp2y: number;\n }[];\n pontos.forEach((ponto, i) => {\n const antes = pontos[i - 1];\n const depois = pontos[i + 1];\n ponto.cp1x = antes ? (antes.x + ponto.x) / 2 : ponto.x;\n ponto.cp2x = depois ? (ponto.x + depois.x) / 2 : ponto.x;\n ponto.cp1y = ponto.y;\n ponto.cp2y = ponto.y;\n });\n if (meta.dataset)\n (meta.dataset as unknown as { _pointsUpdated: boolean })._pointsUpdated = true;\n });\n },\n};\n\nconst formatar = (eixo: ChartAxis | undefined, valor: number) =>\n eixo?.format ? eixo.format(valor) : String(valor);\n\n// Base: Chart do PrimeReact (o p-chart do PrimeNG da produção), que desenha com o Chart.js. O\n// Cristal monta os gráficos do Figma: linhas com área (Chart / Line), com curvas de 2px em S entre\n// os pontos (curvaDoFigma) e a área em degradê da cor da série (10% em cima, 2% embaixo); e barras\n// de 10px, empilhadas ou não, com 2px de raio no topo. Grade tracejada, eixos em\n// label/small-10/semibold e um segundo eixo Y opcional à direita. As cores são os tokens de\n// gráfico (color/chart/*) e as fontes, as do Cristal, lidos do CSS ao montar (o canvas não lê\n// variáveis). A legenda é HTML, com os tokens; o tooltip lista todas as séries no X (na linha, com\n// a linha vertical). Para o leitor de tela, o gráfico é uma imagem com o título como nome, e os\n// valores ficam numa tabela escondida. O card (título, ajuda e ações, na caixa com borda) é o\n// frame do Figma.\nexport function Chart({\n type = 'line',\n stacked = false,\n labels,\n series,\n yAxis,\n y2Axis,\n title,\n help,\n helpLabel = 'Ajuda',\n actions,\n height = 266,\n id,\n className,\n}: ChartProps) {\n const raiz = useRef<HTMLDivElement>(null);\n const ajuda = useRef<HTMLButtonElement>(null);\n const [tema, setTema] = useState<Tema>();\n useLayoutEffect(() => {\n if (raiz.current) setTema(lerTema(raiz.current));\n }, []);\n\n const temDireita = series.some((s) => s.axis === 'right');\n\n const data = useMemo<ChartData<'line' | 'bar'> | undefined>(() => {\n if (!tema) return undefined;\n return {\n labels,\n datasets: series.map((s, i) => {\n const cor = tema.cor(corDe(s, i), tomDe(s, type));\n if (type === 'bar') {\n // Raio de 2px só no topo da barra (no empilhado, no topo da última série).\n const topo = !stacked || i === series.length - 1;\n return {\n type: 'bar' as const,\n label: s.label,\n data: s.data,\n yAxisID: s.axis === 'right' ? 'y2' : 'y',\n backgroundColor: cor,\n hoverBackgroundColor: cor,\n barThickness: 10,\n borderSkipped: false,\n borderRadius: topo ? { topLeft: 2, topRight: 2, bottomLeft: 0, bottomRight: 0 } : 0,\n };\n }\n return {\n type: 'line' as const,\n label: s.label,\n data: s.data,\n yAxisID: s.axis === 'right' ? 'y2' : 'y',\n borderColor: cor,\n borderWidth: 2,\n tension: 0.4,\n pointRadius: 0,\n pointHoverRadius: 4,\n pointHoverBorderWidth: 2,\n pointHoverBorderColor: tema.superficie,\n pointHoverBackgroundColor: cor,\n fill: 'origin',\n backgroundColor: (ctx: ScriptableContext<'line'>) => {\n const area = ctx.chart.chartArea;\n if (!area) return comAlfa(cor, 0.1);\n const degrade = ctx.chart.ctx.createLinearGradient(0, area.top, 0, area.bottom);\n degrade.addColorStop(0, comAlfa(cor, 0.1));\n degrade.addColorStop(1, comAlfa(cor, 0.02));\n return degrade;\n },\n };\n }),\n };\n }, [tema, labels, series, type, stacked]);\n\n const options = useMemo<ChartOptions<'line' | 'bar'> | undefined>(() => {\n if (!tema) return undefined;\n const fonte = { ...tema.fonte, weight: tema.fonte.weight as never };\n const eixoY = (eixo: ChartAxis | undefined, direita: boolean) => ({\n position: direita ? ('right' as const) : ('left' as const),\n stacked,\n min: eixo?.min ?? 0,\n max: eixo?.max,\n // A grade tracejada do Figma (2px e 2px): no Chart.js 4, o tracejado fica em border.dash.\n border: { display: false, dash: [2, 2] },\n grid: direita\n ? { drawOnChartArea: false, drawTicks: false }\n : { color: tema.grade, lineWidth: 1, drawTicks: false },\n ticks: {\n color: tema.texto,\n font: fonte,\n padding: 8,\n stepSize: eixo?.stepSize,\n callback: (valor: string | number) => formatar(eixo, Number(valor)),\n },\n });\n return {\n responsive: true,\n maintainAspectRatio: false,\n animation: false,\n interaction: { mode: 'index', intersect: false },\n layout: { padding: { top: 8 } },\n scales: {\n x: {\n stacked,\n border: { display: false },\n grid: { display: false },\n // Os rótulos só somem quando não cabem (como no Figma, as 24 horas cabem em 638px).\n ticks: { color: tema.texto, font: fonte, maxRotation: 0, padding: 8, autoSkipPadding: 2 },\n },\n y: eixoY(yAxis, false),\n ...(temDireita ? { y2: eixoY(y2Axis, true) } : {}),\n },\n plugins: {\n legend: { display: false },\n tooltip: {\n backgroundColor: tema.tooltipFundo,\n titleColor: tema.tooltipTexto,\n bodyColor: tema.tooltipTexto,\n titleFont: fonte,\n bodyFont: { ...fonte, weight: 400 as never },\n padding: { x: 12, y: 8 },\n cornerRadius: 8,\n usePointStyle: true,\n boxWidth: 8,\n boxHeight: type === 'bar' ? 8 : 2,\n callbacks: {\n label: (item) => {\n const s = series[item.datasetIndex]!;\n const eixo = s.axis === 'right' ? y2Axis : yAxis;\n return `${formatar(eixo, item.parsed.y ?? 0)} ${s.label}`;\n },\n labelPointStyle: () => ({ pointStyle: type === 'bar' ? 'rect' : 'line', rotation: 0 }),\n },\n },\n },\n };\n }, [tema, yAxis, y2Axis, temDireita, series, type, stacked]);\n\n const card = Boolean(title || actions);\n const classes = ['cr-chart', card && 'cr-chart--card', className].filter(Boolean).join(' ');\n\n return (\n <div ref={raiz} id={id} className={classes}>\n {card && (\n <div className=\"cr-chart__header\">\n <div className=\"cr-chart__title-row\">\n {title && <span className=\"cr-chart__title\">{title}</span>}\n {help && (\n <>\n <button ref={ajuda} type=\"button\" className=\"cr-chart__help\" aria-label={helpLabel}>\n <Question aria-hidden=\"true\" />\n </button>\n <Tooltip target={ajuda} content={help} type=\"rich\" />\n </>\n )}\n </div>\n {actions && <div className=\"cr-chart__actions\">{actions}</div>}\n </div>\n )}\n <div className=\"cr-chart__body\">\n <div className=\"cr-chart__plot\" style={{ height }}>\n {data && options && (\n <PrimeChart\n // Trocar o tipo monta um gráfico novo, sem reaproveitar o anterior.\n key={type}\n type={type}\n data={data}\n options={options}\n plugins={type === 'line' ? [curvaDoFigma as Plugin, cruz(tema!.cruz) as Plugin] : []}\n width=\"100%\"\n height=\"100%\"\n pt={{\n root: { className: 'cr-chart__canvas-wrap' },\n canvas: {\n role: 'img',\n 'aria-label': title ?? series.map((s) => s.label).join(', '),\n },\n }}\n />\n )}\n </div>\n {series.length > 1 && (\n <ul className=\"cr-chart__legend\">\n {series.map((s, i) => (\n <li key={s.label} className=\"cr-chart__legend-item\">\n {/* A legenda repete a cor da marca: o mesmo token (cor e tom) da série. */}\n <span\n className=\"cr-chart__swatch\"\n style={{\n backgroundColor: `var(--cr-color-chart-fill-${corDe(s, i)}-${tomDe(s, type)})`,\n }}\n aria-hidden=\"true\"\n />\n {s.label}\n </li>\n ))}\n </ul>\n )}\n </div>\n {/* Os valores para o leitor de tela (o canvas é só uma imagem). */}\n <table className=\"cr-chart__table\">\n {title && <caption>{title}</caption>}\n <thead>\n <tr>\n <td />\n {series.map((s) => (\n <th key={s.label} scope=\"col\">\n {s.label}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {labels.map((rotulo, linha) => (\n <tr key={rotulo}>\n <th scope=\"row\">{rotulo}</th>\n {series.map((s) => {\n const valor = s.data[linha];\n const eixo = s.axis === 'right' ? y2Axis : yAxis;\n return <td key={s.label}>{valor == null ? '' : formatar(eixo, valor)}</td>;\n })}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useRef,\n type CSSProperties,\n type ReactNode,\n} from 'react';\nimport { Checkbox as PrimeCheckbox, type CheckboxChangeEvent } from 'primereact/checkbox';\nimport { Check } from '@phosphor-icons/react';\nimport './Checkbox.css';\n\n/** Label Position no Figma: lado da caixa em relação ao rótulo. */\nexport type CheckboxPosition = 'left' | 'right';\n/** Label Type no Figma: Default (uma linha, com reticências) e Full (quebra em várias linhas). */\nexport type CheckboxLabelSize = 'default' | 'full';\n\nexport interface CheckboxProps {\n /** Texto ao lado da caixa (Label no Figma). Sem rótulo visível, vira o nome acessível. */\n label: ReactNode;\n /** Mostra o rótulo. Padrão: true. */\n showLabel?: boolean;\n /** Lado da caixa. Padrão: left. */\n position?: CheckboxPosition;\n /** Padrão: default. */\n labelSize?: CheckboxLabelSize;\n checked?: boolean;\n /** Type=Indeterminate no Figma: traço no lugar do check; o leitor de tela anuncia \"misto\". */\n indeterminate?: boolean;\n onChange?: (event: CheckboxChangeEvent) => void;\n disabled?: boolean;\n required?: boolean;\n name?: string;\n value?: unknown;\n /** Vai no <input>. */\n id?: string;\n className?: string;\n style?: CSSProperties;\n}\n\n// Base: Checkbox do PrimeReact no modo unstyled (o p-checkbox do PrimeNG da produção), com o\n// <input type=\"checkbox\"> nativo por cima da caixa. O Prime não tem o estado indeterminado: o\n// Cristal liga a propriedade nativa do input e desenha o traço no CSS. O rótulo é um <label>\n// ligado ao input. A ref entrega o <input>.\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\n {\n label,\n showLabel = true,\n position = 'left',\n labelSize = 'default',\n checked = false,\n indeterminate = false,\n onChange,\n disabled,\n required,\n name,\n value,\n id,\n className,\n style,\n },\n ref,\n) {\n const autoId = useId();\n const inputId = id ?? autoId;\n // O Cristal também precisa do <input> (para o indeterminado): a ref de callback guarda os dois.\n const inputRef = useRef<HTMLInputElement | null>(null);\n const setInputRef = useCallback(\n (input: HTMLInputElement | null) => {\n inputRef.current = input;\n if (typeof ref === 'function') ref(input);\n else if (ref) ref.current = input;\n },\n [ref],\n );\n\n // Com o indeterminado ligado, o leitor de tela anuncia \"misto\" no lugar de marcado/desmarcado.\n useEffect(() => {\n if (inputRef.current) inputRef.current.indeterminate = indeterminate && !checked;\n }, [indeterminate, checked]);\n\n const classes = [\n 'cr-checkbox',\n `cr-checkbox--${position}`,\n `cr-checkbox--label-${labelSize}`,\n indeterminate && !checked && 'cr-checkbox--indeterminate',\n disabled && 'cr-checkbox--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={classes} style={style}>\n <PrimeCheckbox\n unstyled\n inputRef={setInputRef}\n inputId={inputId}\n checked={checked}\n onChange={onChange}\n disabled={disabled}\n required={required}\n name={name}\n value={value}\n icon={<Check size={16} />}\n pt={{\n root: { className: 'cr-checkbox__control' },\n input: { className: 'cr-checkbox__input' },\n box: { className: 'cr-checkbox__box' },\n icon: { className: 'cr-checkbox__icon', 'aria-hidden': true },\n }}\n />\n {/* Sem rótulo visível, o <label> continua no DOM (escondido) e dá o nome ao input. */}\n <label\n className={`cr-checkbox__label${showLabel ? '' : ' cr-checkbox__label--hidden'}`}\n htmlFor={inputId}\n >\n {label}\n </label>\n </div>\n );\n});\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { X } from '@phosphor-icons/react';\nimport { Chip as PrimeChip, type ChipRemoveEvent } from 'primereact/chip';\nimport './Chip.css';\n\n/** Type no Figma. */\nexport type ChipVariant =\n | 'default'\n | 'success'\n | 'danger'\n | 'warning'\n | 'info'\n | 'highlight'\n | 'inverse'\n | 'outline'\n | 'neutral'\n | 'on-image';\n/** Size no Figma: small = 24px, medium = 28px, large = 32px, x-large = 36px de altura. */\nexport type ChipSize = 'small' | 'medium' | 'large' | 'x-large';\n\nexport interface ChipProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n /** Texto do chip (Label no Figma). */\n label: string;\n variant?: ChipVariant;\n size?: ChipSize;\n /** Ícone antes do texto (Leading Icon no Figma). Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n leadingIcon?: ReactNode;\n /** Ícone depois do texto (Trailing Icon no Figma). Com `onRemove`, o padrão é o X do Figma. */\n trailingIcon?: ReactNode;\n disabled?: boolean;\n /**\n * Torna o ícone da direita o botão de remover do PrimeReact (clique, Enter ou Backspace).\n * Como no Prime, o chip se esconde depois; retorne `false` para controlar a remoção por fora.\n */\n onRemove?: (event: ChipRemoveEvent) => boolean | void;\n /** Nome acessível do botão de remover. */\n removeLabel?: string;\n}\n\n// Base: Chip do PrimeReact no modo unstyled; o visual vem todo do Chip.css. O Prime aceita só um\n// ícone à esquerda e, à direita, só o de remover: os ícones vão como funções, que o Prime chama\n// com as props dele (role, tabIndex e teclado do remover). Sem onRemove (ou desabilitado), o ícone\n// da direita é só visual.\nexport const Chip = forwardRef<HTMLDivElement, ChipProps>(function Chip(\n {\n label,\n variant = 'default',\n size = 'small',\n leadingIcon,\n trailingIcon,\n disabled = false,\n onRemove,\n removeLabel = 'Remover',\n className,\n ...props\n },\n ref,\n) {\n const classes = [\n 'cr-chip',\n `cr-chip--${variant}`,\n `cr-chip--${size}`,\n disabled && 'cr-chip--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const removable = Boolean(onRemove) && !disabled;\n const trailing = trailingIcon ?? (onRemove ? <X /> : null);\n\n return (\n <PrimeChip\n unstyled\n // O Prime remonta o <div> a cada render interno (troca a key), então a ref vai pelo\n // pass-through da raiz, que acompanha cada montagem. O aria-label que o Prime põe na raiz\n // sai: num <div> sem role ele é proibido (axe), e o texto já está visível no chip.\n pt={{ root: { ref, 'aria-label': undefined } }}\n className={classes}\n label={label}\n aria-disabled={disabled || undefined}\n icon={\n leadingIcon\n ? () => (\n <span className=\"cr-chip__icon cr-chip__icon--leading\" aria-hidden=\"true\">\n {leadingIcon}\n </span>\n )\n : undefined\n }\n removable={Boolean(trailing)}\n removeIcon={(options) => {\n if (!removable) {\n return (\n <span className=\"cr-chip__icon cr-chip__icon--trailing\" aria-hidden=\"true\">\n {trailing}\n </span>\n );\n }\n const { role, tabIndex, onClick, onKeyDown } =\n options.iconProps as HTMLAttributes<HTMLSpanElement>;\n return (\n <span\n role={role}\n tabIndex={tabIndex}\n onClick={onClick}\n onKeyDown={onKeyDown}\n className=\"cr-chip__icon cr-chip__icon--trailing cr-chip__remove\"\n aria-label={removeLabel}\n >\n {trailing}\n </span>\n );\n }}\n onRemove={onRemove ? (event) => onRemove(event) !== false : undefined}\n {...props}\n />\n );\n});\n","import { forwardRef, useImperativeHandle, useRef, type HTMLAttributes } from 'react';\nimport { Divider as PrimeDivider } from 'primereact/divider';\nimport './Divider.css';\n\n/** Horizontal Divider e Vertical Divider no Figma. */\nexport type DividerOrientation = 'horizontal' | 'vertical';\n/** Style no Figma: Solid (Default no vertical) e Dashed. */\nexport type DividerVariant = 'solid' | 'dashed';\n\nexport interface DividerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n orientation?: DividerOrientation;\n variant?: DividerVariant;\n}\n\n// Base: Divider do PrimeReact no modo unstyled (role=\"separator\" e aria-orientation do Prime).\n// O visual vem todo do Divider.css. O Figma não tem conteúdo no meio da linha, então o Cristal\n// não repassa children.\nexport const Divider = forwardRef<HTMLDivElement, DividerProps>(function Divider(\n { orientation = 'horizontal', variant = 'solid', className, style, ...props },\n ref,\n) {\n // A ref do Prime é um objeto com getElement(); a do Cristal entrega o próprio elemento.\n const primeRef = useRef<PrimeDivider>(null);\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLDivElement);\n\n const classes = ['cr-divider', `cr-divider--${orientation}`, `cr-divider--${variant}`, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <PrimeDivider\n unstyled\n ref={primeRef}\n layout={orientation}\n // No unstyled, className e style do Divider do Prime não chegam ao elemento; vão pelo pt.\n pt={{\n root: { className: classes, style },\n content: { className: 'cr-divider__content' },\n }}\n {...props}\n />\n );\n});\n","import { forwardRef, type ButtonHTMLAttributes, type ReactNode, type Ref } from 'react';\nimport { Button as PrimeButton } from 'primereact/button';\nimport './IconButton.css';\n\n/**\n * Hierarchy no Figma: Primary (Filled), Secondary (Tonal), Tertiary (Outlined) e Other (Icon),\n * que aqui é `ghost`: só o ícone, com fundo no hover.\n */\nexport type IconButtonVariant = 'primary' | 'secondary' | 'tertiary' | 'ghost';\n/** Size no Figma: 32, 36, 42 e 48px. */\nexport type IconButtonSize = 'xsmall' | 'small' | 'medium' | 'large';\n\nexport interface IconButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n variant?: IconButtonVariant;\n size?: IconButtonSize;\n /** Ícone do botão (Leading Icon no Figma). Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n icon: ReactNode;\n /** Obrigatório: o botão não tem texto, então é isso que o leitor de tela anuncia. */\n 'aria-label': string;\n}\n\n// Base: Button do PrimeReact no modo unstyled, só com ícone (o `p-button-icon-only` do PrimeNG).\n// O comportamento é o do Prime e o visual vem todo do IconButton.css.\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton(\n { variant = 'primary', size = 'large', icon, type = 'button', className, ...props },\n ref,\n) {\n const classes = [\n 'cr-icon-button',\n `cr-icon-button--${variant}`,\n `cr-icon-button--${size}`,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <PrimeButton\n unstyled\n // O PrimeReact tipa a ref como a instância da classe, mas entrega o <button> nela.\n ref={ref as unknown as Ref<PrimeButton>}\n type={type}\n className={classes}\n {...props}\n >\n <span className=\"cr-icon-button__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n </PrimeButton>\n );\n});\n","import {\n useEffect,\n useId,\n useRef,\n useState,\n type KeyboardEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport { Sidebar, type SidebarPassThroughTransitionType } from 'primereact/sidebar';\nimport { ArrowLeft, X } from '@phosphor-icons/react';\nimport { IconButton } from '../IconButton';\nimport './Drawer.css';\n\n/** Side no Figma: de que lado da tela a gaveta abre. */\nexport type DrawerSide = 'right' | 'left';\n/**\n * Behavior no Figma: Full Body (tudo rola junto) ou Fixed Body (cabeçalho e rodapé fixos, só o\n * corpo rola).\n */\nexport type DrawerBehavior = 'full' | 'fixed';\n/**\n * Largura da gaveta. O Figma só tem a de 340px (small); medium (480px), large (720px) e full (a\n * tela toda) são do Cristal, nas faixas usuais de drawer.\n */\nexport type DrawerSize = 'small' | 'medium' | 'large' | 'full';\n\nexport interface DrawerProps {\n visible: boolean;\n /** Pedido para fechar (X, Esc ou clique no overlay). */\n onHide: () => void;\n /** Título do cabeçalho; também é o nome acessível da gaveta. */\n title: string;\n /** Subtítulo descritivo, até 2 linhas. */\n subtitle?: ReactNode;\n /** Padrão: right. */\n side?: DrawerSide;\n /** Padrão: full. */\n behavior?: DrawerBehavior;\n /** Padrão: small (340px, a do Figma). */\n size?: DrawerSize;\n /**\n * Com overlay (padrão): a gaveta é modal, a página atrás fica bloqueada e o clique no overlay\n * fecha. Sem overlay (`false`): a página continua rolando e clicável, e só o X e o Esc fecham.\n */\n modal?: boolean;\n /** Mostra o botão de voltar antes do título. */\n onBack?: () => void;\n backLabel?: string;\n closeLabel?: string;\n /** Botões do rodapé, alinhados à direita. */\n footer?: ReactNode;\n children?: ReactNode;\n id?: string;\n className?: string;\n}\n\nconst FOCAVEIS =\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\n// Base: Sidebar do PrimeReact no modo unstyled (o p-sidebar/p-drawer do PrimeNG da produção):\n// overlay, Esc, clique fora, bloqueio da rolagem da página, o foco no X ao abrir e a transição de\n// entrada e saída (300ms) são do Prime. O conteúdo vem do `content` do Prime, com o cabeçalho, o\n// corpo e o rodapé do Figma. O Sidebar do Prime marca a gaveta como role=complementary e não\n// segura o foco; com overlay ela é modal, então o Cristal a marca como dialog (aria-modal),\n// mantém o Tab dentro dela e devolve o foco a quem a abriu. Sem overlay (modal={false}) ela é um\n// dialog não modal: a página continua usável, o Tab sai dela e o clique fora não fecha.\nexport function Drawer({\n visible,\n onHide,\n title,\n subtitle,\n side = 'right',\n behavior = 'full',\n size = 'small',\n modal = true,\n onBack,\n backLabel = 'Voltar',\n closeLabel = 'Fechar',\n footer,\n children,\n id,\n className,\n}: DrawerProps) {\n const autoId = useId();\n const titleId = `${autoId}-title`;\n const subtitleId = `${autoId}-subtitle`;\n const panelRef = useRef<HTMLDivElement>(null);\n const retorno = useRef<HTMLElement | null>(null);\n\n // Ao abrir, guarda quem tinha o foco; ao fechar, devolve.\n useEffect(() => {\n if (visible) {\n retorno.current = document.activeElement as HTMLElement | null;\n return;\n }\n retorno.current?.focus();\n retorno.current = null;\n }, [visible]);\n\n // Quem rola (o corpo no fixed, a gaveta toda no full) entra no Tab só quando rola, para a\n // rolagem pelo teclado. O Prime só monta o conteúdo depois de abrir: a ref de callback começa a\n // medir quando ele existe.\n const [rolagem, setRolagem] = useState<HTMLDivElement | null>(null);\n const [rolavel, setRolavel] = useState(false);\n useEffect(() => {\n if (!rolagem) return;\n const medir = () => setRolavel(rolagem.scrollHeight > rolagem.clientHeight);\n medir();\n const observer = new ResizeObserver(medir);\n observer.observe(rolagem);\n [...rolagem.children].forEach((child) => observer.observe(child));\n return () => observer.disconnect();\n }, [rolagem, children]);\n\n // Com overlay, o Tab e o Shift+Tab ciclam dentro da gaveta.\n const prenderFoco = (event: KeyboardEvent) => {\n if (!modal || event.key !== 'Tab' || !panelRef.current) return;\n const focaveis = [...panelRef.current.querySelectorAll<HTMLElement>(FOCAVEIS)];\n const primeiro = focaveis[0];\n const ultimo = focaveis[focaveis.length - 1];\n if (!primeiro || !ultimo) return;\n if (event.shiftKey && document.activeElement === primeiro) {\n event.preventDefault();\n ultimo.focus();\n } else if (!event.shiftKey && document.activeElement === ultimo) {\n event.preventDefault();\n primeiro.focus();\n }\n };\n\n const classes = [\n 'cr-drawer',\n `cr-drawer--${side}`,\n `cr-drawer--${behavior}`,\n `cr-drawer--size-${size}`,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <Sidebar\n unstyled\n id={id}\n visible={visible}\n onHide={onHide}\n position={side}\n modal={modal}\n blockScroll={modal}\n // Sem overlay, o Prime fecharia com qualquer clique na página: só o X e o Esc fecham.\n dismissable={modal}\n pt={{\n mask: {\n className: `cr-drawer__mask cr-drawer__mask--${side}${modal ? '' : ' cr-drawer__mask--sem-overlay'}`,\n },\n root: {\n className: classes,\n role: 'dialog',\n 'aria-modal': modal || undefined,\n 'aria-labelledby': titleId,\n 'aria-describedby': subtitle ? subtitleId : undefined,\n onKeyDown: prenderFoco,\n },\n // No unstyled o Prime não põe classes na transição: o Cristal dá as dele (Drawer.css).\n // O tipo do Prime exige o addEndListener do react-transition-group, que aqui não se usa.\n transition: {\n classNames: {\n enter: 'cr-drawer--enter',\n enterActive: 'cr-drawer--enter-active',\n exitActive: 'cr-drawer--exit-active',\n },\n } as SidebarPassThroughTransitionType,\n }}\n content={({ closeIconRef, hide }) => (\n <div\n ref={(element) => {\n panelRef.current = element;\n if (behavior === 'full') setRolagem(element);\n }}\n className=\"cr-drawer__panel\"\n tabIndex={behavior === 'full' && rolavel ? 0 : undefined}\n >\n <div className=\"cr-drawer__header\">\n <div className=\"cr-drawer__title-row\">\n {onBack && (\n <IconButton\n variant=\"tertiary\"\n size=\"xsmall\"\n icon={<ArrowLeft />}\n aria-label={backLabel}\n onClick={onBack}\n />\n )}\n <h2 id={titleId} className=\"cr-drawer__title\">\n {title}\n </h2>\n </div>\n {subtitle && (\n <p id={subtitleId} className=\"cr-drawer__subtitle\">\n {subtitle}\n </p>\n )}\n </div>\n <div\n ref={behavior === 'fixed' ? setRolagem : undefined}\n className=\"cr-drawer__body\"\n tabIndex={behavior === 'fixed' && rolavel ? 0 : undefined}\n >\n {children}\n </div>\n {footer && <div className=\"cr-drawer__footer\">{footer}</div>}\n <IconButton\n ref={closeIconRef as unknown as Ref<HTMLButtonElement>}\n className=\"cr-drawer__close\"\n variant=\"tertiary\"\n size=\"xsmall\"\n icon={<X />}\n aria-label={closeLabel}\n onClick={(event) => hide(event)}\n />\n </div>\n )}\n />\n );\n}\n","import { forwardRef, useId, type InputHTMLAttributes, type ReactNode, type Ref } from 'react';\nimport { InputText } from 'primereact/inputtext';\nimport { Info, WarningCircle } from '@phosphor-icons/react';\nimport './Input.css';\n\n/** Type no Figma: Outline (com borda) e Filled (com fundo). */\nexport type InputVariant = 'outline' | 'filled';\n/** Size no Figma: 32, 36, 42 e 48px de altura do campo. */\nexport type InputSize = 'xsmall' | 'small' | 'medium' | 'large';\n\nexport interface InputProps extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'value' | 'children'\n> {\n variant?: InputVariant;\n size?: InputSize;\n /** Rótulo acima do campo (Label no Figma). Sem rótulo, passe `aria-label`. */\n label?: string;\n /** Valor do campo (controlado). */\n value?: string;\n /** Ícone antes do texto (Leading Icon no Figma). Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n leadingIcon?: ReactNode;\n /** Ícone ou botão depois do texto (Trailing Icon no Figma), por exemplo mostrar a senha. */\n trailingIcon?: ReactNode;\n /** Dica abaixo do campo (Hint Info no Figma). */\n hint?: string;\n /** Mensagem de erro: deixa o campo no estado Error e mostra a dica de erro no lugar da dica. */\n error?: string;\n}\n\n// Base: InputText do PrimeReact no modo unstyled (o <input>, com o comportamento do Prime,\n// espelhando o pInputText do PrimeNG da produção). O rótulo, a caixa do campo, os ícones e a dica\n// são do Cristal, com as classes .cr-field reaproveitadas pelos outros campos (AutoComplete,\n// MultiSelect).\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n {\n variant = 'outline',\n size = 'large',\n label,\n leadingIcon,\n trailingIcon,\n hint,\n error,\n id,\n required,\n disabled,\n className,\n ...props\n },\n ref,\n) {\n const autoId = useId();\n const inputId = id ?? autoId;\n const hintId = `${inputId}-hint`;\n const supportText = error ?? hint;\n\n const classes = [\n 'cr-field',\n `cr-field--${variant}`,\n `cr-field--${size}`,\n error && 'cr-field--error',\n disabled && 'cr-field--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={classes}>\n {label && (\n <label className=\"cr-field__label\" htmlFor={inputId}>\n {label}\n {required && (\n <span className=\"cr-field__required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n <div className=\"cr-field__control\">\n {leadingIcon && (\n <span className=\"cr-field__icon\" aria-hidden=\"true\">\n {leadingIcon}\n </span>\n )}\n <InputText\n unstyled\n // O PrimeReact tipa a ref como a instância da classe, mas entrega o <input> nela.\n ref={ref as unknown as Ref<HTMLInputElement>}\n id={inputId}\n className=\"cr-field__input\"\n required={required}\n disabled={disabled}\n invalid={Boolean(error)}\n aria-invalid={error ? true : undefined}\n aria-describedby={supportText ? hintId : undefined}\n {...props}\n />\n {trailingIcon && <span className=\"cr-field__icon\">{trailingIcon}</span>}\n </div>\n {supportText && (\n <p id={hintId} className={`cr-field__hint${error ? ' cr-field__hint--error' : ''}`}>\n <span className=\"cr-field__hint-icon\" aria-hidden=\"true\">\n {error ? <WarningCircle /> : <Info />}\n </span>\n {supportText}\n </p>\n )}\n </div>\n );\n});\n","import {\n forwardRef,\n useContext,\n useImperativeHandle,\n useRef,\n type ReactNode,\n type SyntheticEvent,\n} from 'react';\nimport { PrimeReactContext, PrimeReactProvider } from 'primereact/api';\nimport { Menu as PrimeMenu, type MenuPassThroughOptions } from 'primereact/menu';\nimport type { MenuItem as PrimeMenuItem, MenuItemCommandEvent } from 'primereact/menuitem';\nimport { CircleNotch } from '@phosphor-icons/react';\nimport './Menu.css';\n\n/** Density no Figma: Normal (itens de 37px) e Compacted (29px). */\nexport type MenuDensity = 'normal' | 'compact';\n\n/** Um item da lista (.Dropdown Item no Figma). */\nexport interface MenuItem {\n label: string;\n /** Ícone à esquerda (Leading Icon no Figma). Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n icon?: ReactNode;\n /** Estado Selected do Figma: texto e ícone em brand, fundo selected/subtlest. */\n selected?: boolean;\n disabled?: boolean;\n /** Ação do item; o menu popup fecha depois dela. */\n command?: (event: MenuItemCommandEvent) => void;\n /** Link do item; sem ele o clique não navega. */\n url?: string;\n target?: string;\n id?: string;\n className?: string;\n}\n\nexport interface MenuProps {\n model: MenuItem[];\n density?: MenuDensity;\n /** Abre sobre a tela, posicionado no elemento que chamou `toggle`/`show` pela ref. */\n popup?: boolean;\n /** Alinhamento do popup com o elemento que o abriu. */\n popupAlignment?: 'left' | 'right';\n /** Estado Loading do Figma: troca os itens pelo indicador de carregamento. */\n loading?: boolean;\n /** O que o leitor de tela anuncia no carregamento. */\n loadingLabel?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n onShow?: (event: SyntheticEvent) => void;\n onHide?: (event: SyntheticEvent) => void;\n id?: string;\n className?: string;\n}\n\n/** Controle do menu popup, pela ref. */\nexport interface MenuHandle {\n toggle: (event: SyntheticEvent) => void;\n show: (event: SyntheticEvent) => void;\n hide: (event: SyntheticEvent) => void;\n /** O <div> raiz do menu (só existe com o popup aberto). */\n getElement: () => HTMLDivElement | null;\n}\n\n// Base: Menu do PrimeReact no modo unstyled (teclado, foco, popup e fechamento do Prime,\n// espelhando o p-menu do PrimeNG da produção). No Figma é o Dropdown List, usado nos menus do\n// Menubar; o visual vem do Menu.css. A ref expõe toggle/show/hide do Prime para abrir o popup.\nexport const Menu = forwardRef<MenuHandle, MenuProps>(function Menu(\n {\n model,\n density = 'normal',\n popup = false,\n popupAlignment = 'left',\n loading = false,\n loadingLabel = 'Carregando',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n onShow,\n onHide,\n id,\n className,\n },\n ref,\n) {\n const primeRef = useRef<PrimeMenu>(null);\n const context = useContext(PrimeReactContext);\n\n useImperativeHandle(ref, () => ({\n toggle: (event) => primeRef.current?.toggle(event),\n show: (event) => primeRef.current?.show(event),\n hide: (event) => primeRef.current?.hide(event),\n getElement: () => primeRef.current?.getElement() ?? null,\n }));\n\n const items: PrimeMenuItem[] = loading\n ? [\n {\n label: loadingLabel,\n disabled: true,\n template: () => (\n <div className=\"cr-menu__loading\">\n <CircleNotch className=\"cr-menu__spinner\" aria-hidden=\"true\" />\n </div>\n ),\n },\n ]\n : model.map((item) => ({\n id: item.id,\n label: item.label,\n icon: item.icon ? (\n <span className=\"cr-menu__icon\" aria-hidden=\"true\">\n {item.icon}\n </span>\n ) : undefined,\n disabled: item.disabled,\n command: item.command,\n url: item.url,\n target: item.target,\n className: [item.selected && 'cr-menu__item--selected', item.className]\n .filter(Boolean)\n .join(' '),\n data: { selected: item.selected },\n }));\n\n const classes = ['cr-menu', `cr-menu--${density}`, popup && 'cr-menu--popup', className]\n .filter(Boolean)\n .join(' ');\n\n const pt: MenuPassThroughOptions = {\n // O nome acessível vai na lista (role=menu); o Prime lê `ariaLabel`, mas não o declara no tipo.\n menu: {\n className: 'cr-menu__list',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-busy': loading || undefined,\n },\n menuitem: (options) => {\n const item = (options as { context?: { item?: PrimeMenuItem } })?.context?.item;\n return {\n className: 'cr-menu__item',\n 'aria-current': item?.data?.selected ? 'true' : undefined,\n };\n },\n content: { className: 'cr-menu__content' },\n action: { className: 'cr-menu__action' },\n label: { className: 'cr-menu__label' },\n };\n\n const menu = (\n <PrimeMenu\n unstyled\n ref={primeRef}\n id={id}\n className={classes}\n model={items}\n popup={popup}\n popupAlignment={popupAlignment}\n onShow={onShow}\n onHide={onHide}\n pt={pt}\n />\n );\n\n // O Menu do Prime lê o PrimeReactContext sem checar se ele existe: sem um PrimeReactProvider\n // na aplicação, o clique fora dá erro e o popup não fecha. Se a aplicação já tiver um, vale o\n // dela.\n return context ? menu : <PrimeReactProvider>{menu}</PrimeReactProvider>;\n});\n","import {\n forwardRef,\n useId,\n useRef,\n useState,\n type FormEvent,\n type MouseEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport { Menubar as PrimeMenubar, type MenubarPassThroughOptions } from 'primereact/menubar';\nimport { Button as PrimeButton } from 'primereact/button';\nimport { InputText } from 'primereact/inputtext';\nimport { Avatar as PrimeAvatar } from 'primereact/avatar';\nimport { List, MagnifyingGlass } from '@phosphor-icons/react';\nimport { Badge } from '../Badge';\nimport { Menu, type MenuHandle, type MenuItem } from '../Menu';\nimport { Tooltip } from '../Tooltip';\nimport logoSimbolo from './assets/vector-logo-simbolo.svg';\nimport logoTexto from './assets/vector-logo-texto.svg';\nimport './Menubar.css';\n\n/** Um botão de ferramenta (.Menubar Tools Button no Figma). */\nexport interface MenubarTool {\n /** Nome do botão: vira o aria-label e o texto do tooltip. */\n label: string;\n /** Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n icon: ReactNode;\n /** Contador sobre o ícone (Show Badge no Figma). */\n badge?: ReactNode;\n /** Como o leitor de tela lê o contador (padrão: o próprio valor). */\n badgeLabel?: string;\n /** Itens do menu que o botão abre (Dropdown List no Figma). */\n menu?: MenuItem[];\n onClick?: (event: MouseEvent<HTMLButtonElement>) => void;\n /** Continua visível no tablet (768px), como o sino no Figma. */\n showOnTablet?: boolean;\n}\n\n/** Usuário logado (.Menubar Profile no Figma). */\nexport interface MenubarUser {\n name: string;\n /** Perfil de acesso, abaixo do nome. */\n role?: string;\n /** URL da foto. Sem foto, o avatar mostra a inicial do nome (Type=No Image). */\n avatar?: string;\n}\n\nexport interface MenubarProps {\n /** Logo à esquerda (.Nav Logo no Figma); o padrão é o logo da Vector. */\n logo?: ReactNode;\n /** Menu principal aberto: deixa o botão de menu no estado Active. */\n menuOpen?: boolean;\n /** Clique no botão de menu (abre o Menu Principal). */\n onMenuToggle?: (event: MouseEvent<HTMLButtonElement>) => void;\n /** Nome acessível do botão de menu. */\n menuLabel?: string;\n /** Mostra a busca no centro (só no desktop). */\n showSearch?: boolean;\n searchPlaceholder?: string;\n /** Valor da busca (controlado). Sem ele, a busca guarda o próprio valor. */\n searchValue?: string;\n onSearchChange?: (value: string) => void;\n /** Envio da busca (Enter ou lupa). */\n onSearch?: (value: string) => void;\n /** Nome acessível da lupa. */\n searchButtonLabel?: string;\n /** Botões de ferramenta à direita (.Nav Tools no Figma). */\n tools?: MenubarTool[];\n user?: MenubarUser;\n /** Itens do menu do perfil. Sem eles, o perfil não é clicável. */\n userMenu?: MenuItem[];\n id?: string;\n className?: string;\n}\n\nfunction VectorLogo() {\n return (\n <span className=\"cr-menubar__logo\" role=\"img\" aria-label=\"Vector\">\n <img className=\"cr-menubar__logo-texto\" src={logoTexto} alt=\"\" />\n <img className=\"cr-menubar__logo-simbolo\" src={logoSimbolo} alt=\"\" />\n </span>\n );\n}\n\nfunction ToolButton({ tool }: { tool: MenubarTool }) {\n const buttonRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<MenuHandle>(null);\n const menuId = useId();\n const [open, setOpen] = useState(false);\n const hasMenu = Boolean(tool.menu?.length);\n const hasBadge = tool.badge !== undefined && tool.badge !== null;\n const name = hasBadge ? `${tool.label}, ${tool.badgeLabel ?? String(tool.badge)}` : tool.label;\n\n const classes = [\n 'cr-menubar__tool',\n tool.showOnTablet && 'cr-menubar__tool--tablet',\n open && 'cr-menubar__tool--active',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <>\n <PrimeButton\n unstyled\n // O PrimeReact tipa a ref como a instância da classe, mas entrega o <button> nela.\n ref={buttonRef as unknown as Ref<PrimeButton>}\n type=\"button\"\n className={classes}\n aria-label={name}\n aria-haspopup={hasMenu ? 'menu' : undefined}\n aria-expanded={hasMenu ? open : undefined}\n aria-controls={hasMenu && open ? menuId : undefined}\n onClick={(event) => {\n tool.onClick?.(event);\n if (hasMenu) menuRef.current?.toggle(event);\n }}\n >\n <span className=\"cr-menubar__tool-icon\" aria-hidden=\"true\">\n {tool.icon}\n </span>\n {hasBadge && (\n <Badge className=\"cr-menubar__badge\" aria-hidden=\"true\">\n {tool.badge}\n </Badge>\n )}\n </PrimeButton>\n {/* No Figma o tooltip aparece no Hover e some com o menu aberto (Active). */}\n <Tooltip target={buttonRef} content={tool.label} disabled={open} />\n {hasMenu && (\n <Menu\n ref={menuRef}\n id={menuId}\n popup\n popupAlignment=\"right\"\n model={tool.menu ?? []}\n aria-label={tool.label}\n onShow={() => setOpen(true)}\n onHide={() => setOpen(false)}\n />\n )}\n </>\n );\n}\n\nfunction Profile({ user, menu }: { user: MenubarUser; menu?: MenuItem[] }) {\n const menuRef = useRef<MenuHandle>(null);\n const menuId = useId();\n const [open, setOpen] = useState(false);\n const hasMenu = Boolean(menu?.length);\n\n const content = (\n <>\n <span className=\"cr-menubar__profile-text\">\n <span className=\"cr-menubar__profile-name\">{user.name}</span>\n {user.role && <span className=\"cr-menubar__profile-role\">{user.role}</span>}\n </span>\n {/* O nome já está no texto ao lado: o avatar é só visual. */}\n <PrimeAvatar\n unstyled\n aria-hidden=\"true\"\n className={`cr-menubar__avatar${user.avatar ? '' : ' cr-menubar__avatar--initial'}`}\n image={user.avatar}\n imageAlt=\"\"\n label={user.avatar ? undefined : user.name.trim().charAt(0).toUpperCase()}\n shape=\"circle\"\n pt={{ image: { className: 'cr-menubar__avatar-image' } }}\n />\n </>\n );\n\n if (!hasMenu) return <div className=\"cr-menubar__profile\">{content}</div>;\n\n return (\n <>\n <PrimeButton\n unstyled\n type=\"button\"\n className=\"cr-menubar__profile cr-menubar__profile--button\"\n aria-haspopup=\"menu\"\n aria-expanded={open}\n aria-controls={open ? menuId : undefined}\n onClick={(event) => menuRef.current?.toggle(event)}\n >\n {content}\n </PrimeButton>\n <Menu\n ref={menuRef}\n id={menuId}\n popup\n popupAlignment=\"right\"\n model={menu ?? []}\n aria-label={user.name}\n onShow={() => setOpen(true)}\n onHide={() => setOpen(false)}\n />\n </>\n );\n}\n\n// Base: Menubar do PrimeReact no modo unstyled, espelhando o p-menubar do PrimeNG da produção. A\n// navegação do Vector fica no Menu Principal (aberto pelo botão de menu), então o Menubar não\n// tem itens próprios: usa só as áreas start e end do Prime. Os botões são Buttons do Prime, a\n// busca é um InputText, o avatar é o Avatar e os menus e tooltips são o Menu e o Tooltip do\n// Cristal. O layout responsivo (1360, 768 e 360px no Figma) vem de container queries no\n// Menubar.css, pela largura do próprio Menubar.\nexport const Menubar = forwardRef<HTMLDivElement, MenubarProps>(function Menubar(\n {\n logo,\n menuOpen = false,\n onMenuToggle,\n menuLabel = 'Menu principal',\n showSearch = true,\n searchPlaceholder = 'Buscar no Vector',\n searchValue,\n onSearchChange,\n onSearch,\n searchButtonLabel = 'Buscar',\n tools = [],\n user,\n userMenu,\n id,\n className,\n },\n ref,\n) {\n const [innerSearch, setInnerSearch] = useState('');\n const search = searchValue ?? innerSearch;\n\n const submitSearch = (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n onSearch?.(search);\n };\n\n const classes = ['cr-menubar', !showSearch && 'cr-menubar--no-search', className]\n .filter(Boolean)\n .join(' ');\n\n const pt: MenubarPassThroughOptions = {\n // A área start some do layout (display: contents): o início e a busca viram colunas do grid.\n start: { className: 'cr-menubar__start' },\n end: { className: 'cr-menubar__end' },\n // Sem itens, a lista do Prime (role=menubar) ficaria vazia e focável: fica escondida.\n menu: { hidden: true },\n };\n\n const start = (\n <>\n <div className=\"cr-menubar__init\">\n <PrimeButton\n unstyled\n type=\"button\"\n className={`cr-menubar__menu-button${menuOpen ? ' cr-menubar__menu-button--active' : ''}`}\n aria-label={menuLabel}\n aria-expanded={menuOpen}\n onClick={onMenuToggle}\n >\n <span className=\"cr-menubar__menu-icon\" aria-hidden=\"true\">\n <List />\n </span>\n </PrimeButton>\n {logo ?? <VectorLogo />}\n </div>\n {showSearch && (\n <form role=\"search\" className=\"cr-menubar__search\" onSubmit={submitSearch}>\n <InputText\n unstyled\n className=\"cr-menubar__search-input\"\n placeholder={searchPlaceholder}\n aria-label={searchPlaceholder}\n value={search}\n onChange={(event) => {\n setInnerSearch(event.target.value);\n onSearchChange?.(event.target.value);\n }}\n />\n <PrimeButton\n unstyled\n type=\"submit\"\n className=\"cr-menubar__search-button\"\n aria-label={searchButtonLabel}\n >\n <span className=\"cr-menubar__search-icon\" aria-hidden=\"true\">\n <MagnifyingGlass />\n </span>\n </PrimeButton>\n </form>\n )}\n </>\n );\n\n const end =\n tools.length > 0 || user ? (\n <>\n {tools.length > 0 && (\n <div className=\"cr-menubar__tools\">\n {tools.map((tool) => (\n <ToolButton key={tool.label} tool={tool} />\n ))}\n </div>\n )}\n {user && <Profile user={user} menu={userMenu} />}\n </>\n ) : null;\n\n return (\n <div ref={ref} id={id} className={classes}>\n <PrimeMenubar\n unstyled\n className=\"cr-menubar__bar\"\n model={[]}\n start={start}\n end={end}\n pt={pt}\n />\n </div>\n );\n});\n","import {\n forwardRef,\n useImperativeHandle,\n useRef,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { Tag as PrimeTag } from 'primereact/tag';\nimport './Tag.css';\n\n/** Type no Figma. */\nexport type TagVariant =\n 'default' | 'success' | 'warning' | 'danger' | 'info' | 'purple' | 'gray' | 'inverse' | 'outline';\n/** Size no Figma: small = 24px, medium = 28px, large = 32px, x-large = 36px de altura. */\nexport type TagSize = 'small' | 'medium' | 'large' | 'x-large';\n\nexport interface TagProps extends HTMLAttributes<HTMLSpanElement> {\n variant?: TagVariant;\n size?: TagSize;\n /** Ícone à esquerda (Leading Icon no Figma). Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n icon?: ReactNode;\n /** Texto da tag (Label no Figma). */\n children: ReactNode;\n}\n\n// Base: Tag do PrimeReact no modo unstyled; o visual vem todo do Tag.css. Rótulo de status\n// estático (sem interação); para contador ou bolinha de notificação, use o Badge.\nexport const Tag = forwardRef<HTMLSpanElement, TagProps>(function Tag(\n { variant = 'default', size = 'small', icon, className, children, ...props },\n ref,\n) {\n const primeRef = useRef<PrimeTag>(null);\n // O PrimeReact entrega na ref um objeto com getElement(); o Cristal repassa o <span>.\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLSpanElement);\n\n const classes = ['cr-tag', `cr-tag--${variant}`, `cr-tag--${size}`, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <PrimeTag\n unstyled\n ref={primeRef}\n className={classes}\n // Como função, o ícone é renderizado pelo Cristal (o Prime só repassa props a funções).\n icon={\n icon\n ? () => (\n <span className=\"cr-tag__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n )\n : undefined\n }\n value={children}\n {...props}\n />\n );\n});\n","import {\n forwardRef,\n useContext,\n useImperativeHandle,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n type SyntheticEvent,\n} from 'react';\nimport { PrimeReactContext, PrimeReactProvider } from 'primereact/api';\nimport { Menu as PrimeMenu, type MenuPassThroughOptions } from 'primereact/menu';\nimport type { MenuItem as PrimeMenuItem, MenuItemCommandEvent } from 'primereact/menuitem';\nimport { DribbbleLogo } from '@phosphor-icons/react';\nimport { Tag } from '../Tag';\nimport './MenuPrincipal.css';\n\n/** Um produto do menu (.Menu Principal / Item no Figma). */\nexport interface MenuPrincipalItem {\n /** Nome do produto (Item Label no Figma). */\n label: string;\n /** Texto de apoio abaixo do nome, até 2 linhas. */\n description?: string;\n /** Ícone no círculo à esquerda. Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n icon: ReactNode;\n /** Texto da tag no canto (Show Tag no Figma, onde é \"Experimente\"). */\n tag?: string;\n /** Ação do item; o menu popup fecha depois dela. */\n command?: (event: MenuItemCommandEvent) => void;\n /** Link do item; sem ele o clique não navega. */\n url?: string;\n target?: string;\n id?: string;\n className?: string;\n}\n\n/** Um grupo de produtos com título (Product Group no Figma). */\nexport interface MenuPrincipalGroup {\n /** Título do grupo, acima dos itens. */\n label: string;\n items: MenuPrincipalItem[];\n id?: string;\n}\n\nexport type MenuPrincipalEntry = MenuPrincipalItem | MenuPrincipalGroup;\n\nexport interface MenuPrincipalProps {\n /** Itens soltos e grupos, na ordem; o divisor tracejado entra antes e depois de cada grupo. */\n model: MenuPrincipalEntry[];\n /** Abre sobre a tela, posicionado no elemento que chamou `toggle`/`show` pela ref. */\n popup?: boolean;\n /** Nome acessível do menu. */\n 'aria-label'?: string;\n onShow?: (event: SyntheticEvent) => void;\n onHide?: (event: SyntheticEvent) => void;\n id?: string;\n className?: string;\n}\n\n/** Controle do menu popup, pela ref. */\nexport interface MenuPrincipalHandle {\n toggle: (event: SyntheticEvent) => void;\n show: (event: SyntheticEvent) => void;\n hide: (event: SyntheticEvent) => void;\n /** O <div> raiz do menu (só existe com o popup aberto). */\n getElement: () => HTMLDivElement | null;\n}\n\nconst isGroup = (entry: MenuPrincipalEntry): entry is MenuPrincipalGroup => 'items' in entry;\n\n// Base: Menu do PrimeReact no modo unstyled (teclado, foco, popup e fechamento do Prime,\n// espelhando o p-menu do PrimeNG da produção), como o Menu do Cristal; os grupos são os\n// submenus do Prime e os divisores, os separadores. No Figma é o Menu Principal (página Menu\n// Suspenso), aberto pelo botão de menu do Menubar. O item é um template do Prime, com o ícone,\n// o nome, a descrição e a tag; o visual vem do MenuPrincipal.css.\nexport const MenuPrincipal = forwardRef<MenuPrincipalHandle, MenuPrincipalProps>(\n function MenuPrincipal(\n {\n model,\n popup = false,\n 'aria-label': ariaLabel = 'Menu principal',\n onShow,\n onHide,\n id,\n className,\n },\n ref,\n ) {\n const primeRef = useRef<PrimeMenu>(null);\n const context = useContext(PrimeReactContext);\n\n // Onde termina o botão que abriu o popup: o CSS limita a altura ao espaço da tela abaixo dele\n // (e acompanha a tela se ela diminuir com o menu aberto).\n const [baseDoAlvo, setBaseDoAlvo] = useState<number>();\n const medirAlvo = (event: SyntheticEvent) => {\n const alvo = event.currentTarget as Element | null;\n if (alvo instanceof Element) setBaseDoAlvo(alvo.getBoundingClientRect().bottom);\n };\n\n useImperativeHandle(ref, () => ({\n toggle: (event) => {\n medirAlvo(event);\n primeRef.current?.toggle(event);\n },\n show: (event) => {\n medirAlvo(event);\n primeRef.current?.show(event);\n },\n hide: (event) => primeRef.current?.hide(event),\n getElement: () => primeRef.current?.getElement() ?? null,\n }));\n\n const toPrime = (item: MenuPrincipalItem): PrimeMenuItem => ({\n id: item.id,\n // Sem label no Prime: ele viraria o aria-label do item, só com parte do texto visível. O\n // nome vem do conteúdo: o nome, a descrição e a tag. Os espaços entre eles não aparecem\n // (estão em flex), mas separam as palavras no nome (\"Início Tela inicial\", não colado).\n command: item.command,\n url: item.url,\n target: item.target,\n className: item.className,\n // O <a> leva o data-pc-section do Prime: o Enter do teclado clica nele (e segue o link).\n template: () => (\n <a\n className=\"cr-menu-principal__action\"\n data-pc-section=\"action\"\n href={item.url ?? '#'}\n target={item.target}\n tabIndex={-1}\n >\n <span className=\"cr-menu-principal__icon\" aria-hidden=\"true\">\n {item.icon}\n </span>\n <span className=\"cr-menu-principal__text\">\n <span className=\"cr-menu-principal__label\">{item.label}</span>{' '}\n {item.description && (\n <span className=\"cr-menu-principal__description\">{item.description}</span>\n )}\n </span>{' '}\n {item.tag && (\n <Tag className=\"cr-menu-principal__tag\" variant=\"warning\" icon={<DribbbleLogo />}>\n {item.tag}\n </Tag>\n )}\n </a>\n ),\n });\n\n // Divisor antes e depois de cada grupo (entre dois itens soltos, não).\n const items: PrimeMenuItem[] = [];\n let anterior: MenuPrincipalEntry | undefined;\n model.forEach((entry) => {\n if (anterior && (isGroup(entry) || isGroup(anterior))) items.push({ separator: true });\n items.push(\n isGroup(entry)\n ? { id: entry.id, label: entry.label, items: entry.items.map(toPrime) }\n : toPrime(entry),\n );\n anterior = entry;\n });\n\n const classes = ['cr-menu-principal', popup && 'cr-menu-principal--popup', className]\n .filter(Boolean)\n .join(' ');\n\n const pt: MenuPassThroughOptions = {\n menu: { className: 'cr-menu-principal__list', 'aria-label': ariaLabel },\n submenuHeader: { className: 'cr-menu-principal__group' },\n separator: { className: 'cr-menu-principal__separator' },\n menuitem: { className: 'cr-menu-principal__item' },\n };\n\n const menu = (\n <PrimeMenu\n unstyled\n ref={primeRef}\n id={id}\n className={classes}\n style={\n popup && baseDoAlvo !== undefined\n ? ({ '--cr-menu-principal-topo': `${baseDoAlvo}px` } as CSSProperties)\n : undefined\n }\n model={items}\n popup={popup}\n onShow={onShow}\n onHide={onHide}\n pt={pt}\n />\n );\n\n // Como no Menu: sem um PrimeReactProvider na aplicação, o clique fora dá erro no Prime.\n return context ? menu : <PrimeReactProvider>{menu}</PrimeReactProvider>;\n },\n);\n","import { forwardRef, useImperativeHandle, useRef, type ReactElement, type ReactNode } from 'react';\nimport {\n Message as PrimeMessage,\n type MessageProps as PrimeMessageProps,\n} from 'primereact/message';\nimport {\n CheckCircle,\n Info,\n SealWarning,\n Warning,\n WarningCircle,\n XCircle,\n} from '@phosphor-icons/react';\nimport './Message.css';\n\n/** Type no Figma. */\nexport type MessageType = 'info' | 'warning' | 'success' | 'danger' | 'highlight' | 'neutral';\n\nexport interface MessageProps {\n /** Padrão: info. */\n type?: MessageType;\n /** Texto (Message no Figma). */\n children: ReactNode;\n /** Show Icon no Figma. Padrão: true. */\n showIcon?: boolean;\n id?: string;\n className?: string;\n}\n\n// Highlight e Neutral não têm severity próprio no Prime: usam os outros dois dele.\nconst SEVERITY: Record<MessageType, PrimeMessageProps['severity']> = {\n info: 'info',\n warning: 'warn',\n success: 'success',\n danger: 'error',\n highlight: 'contrast',\n neutral: 'secondary',\n};\n\nconst ICON: Record<MessageType, ReactElement> = {\n info: <Info />,\n warning: <Warning />,\n success: <CheckCircle />,\n danger: <XCircle />,\n highlight: <SealWarning />,\n neutral: <WarningCircle />,\n};\n\n// Base: Message do PrimeReact no modo unstyled (o p-message do PrimeNG da produção): a faixa com\n// ícone e texto e o role=\"alert\" (aria-live polite) são do Prime. O Cristal troca o severity pelo\n// Type do Figma, põe os ícones do Figma e desenha pelos tokens (Message.css). A ref entrega a raiz.\nexport const Message = forwardRef<HTMLDivElement, MessageProps>(function Message(\n { type = 'info', children, showIcon = true, id, className },\n ref,\n) {\n const primeRef = useRef<PrimeMessage>(null);\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLDivElement);\n\n return (\n <PrimeMessage\n unstyled\n ref={primeRef}\n id={id}\n severity={SEVERITY[type]}\n text={children}\n // Sem ícone, um fragmento vazio: com undefined o Prime põe o ícone dele.\n icon={\n showIcon ? (\n <span className=\"cr-message__icon\" aria-hidden=\"true\">\n {ICON[type]}\n </span>\n ) : (\n <></>\n )\n }\n pt={{\n root: {\n className: ['cr-message', `cr-message--${type}`, className].filter(Boolean).join(' '),\n },\n text: { className: 'cr-message__text' },\n }}\n />\n );\n});\n","import { useEffect, useId, useState, type ReactNode, type Ref } from 'react';\nimport { Dialog } from 'primereact/dialog';\nimport { Question, X } from '@phosphor-icons/react';\nimport { IconButton } from '../IconButton';\nimport './Modal.css';\n\n/**\n * Size no Figma: Small (520px), Medium (768px) e Large (1200 x 720px; abaixo de 768px de tela\n * vira tela cheia, como o Responsive=360 do Figma).\n */\nexport type ModalSize = 'small' | 'medium' | 'large';\n\nexport interface ModalProps {\n visible: boolean;\n /** Pedido para fechar (X ou Esc). */\n onHide: () => void;\n /** Título do cabeçalho; também é o nome acessível do modal. */\n title: string;\n /** Padrão: large. */\n size?: ModalSize;\n /** Mostra o botão de ajuda (QuestionMark) ao lado do X, no small e no medium. */\n onHelp?: () => void;\n helpLabel?: string;\n closeLabel?: string;\n /** Botões do rodapé, à direita. */\n footer?: ReactNode;\n /** Conteúdo do rodapé à esquerda (ex.: o botão secundário dos Two/Tree Buttons do Figma). */\n footerStart?: ReactNode;\n children?: ReactNode;\n id?: string;\n className?: string;\n}\n\n// Base: Dialog do PrimeReact no modo unstyled (o p-dialog do PrimeNG da produção): overlay,\n// role=dialog com aria-modal, Esc, foco preso no modal e devolvido a quem o abriu, e o bloqueio\n// da rolagem da página são do Prime. O conteúdo vem do `content` do Prime, com o cabeçalho, o\n// corpo e o rodapé do Figma. Quando o corpo rola, o rodapé ganha a sombra do Figma (\"Shadow (Up\n// content scrollable)\").\nexport function Modal({\n visible,\n onHide,\n title,\n size = 'large',\n onHelp,\n helpLabel = 'Ajuda',\n closeLabel = 'Fechar',\n footer,\n footerStart,\n children,\n id,\n className,\n}: ModalProps) {\n const autoId = useId();\n const titleId = `${autoId}-title`;\n // O Prime só monta o conteúdo depois de abrir: a ref de callback começa a medir quando o corpo\n // existe. Quando ele rola (conteúdo maior que a altura), o rodapé ganha sombra.\n const [body, setBody] = useState<HTMLDivElement | null>(null);\n const [rolavel, setRolavel] = useState(false);\n useEffect(() => {\n if (!body) return;\n const medir = () => setRolavel(body.scrollHeight > body.clientHeight);\n medir();\n const observer = new ResizeObserver(medir);\n observer.observe(body);\n [...body.children].forEach((child) => observer.observe(child));\n return () => observer.disconnect();\n }, [body, children]);\n\n const classes = ['cr-modal', `cr-modal--${size}`, rolavel && 'cr-modal--scrollable', className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <Dialog\n unstyled\n id={id}\n visible={visible}\n onHide={onHide}\n draggable={false}\n resizable={false}\n blockScroll\n pt={{\n mask: { className: 'cr-modal__mask' },\n root: {\n className: classes,\n 'aria-labelledby': titleId,\n 'aria-describedby': undefined,\n },\n }}\n content={({ hide, closeRef }) => (\n <>\n <div className=\"cr-modal__header\">\n <h2 id={titleId} className=\"cr-modal__title\">\n {title}\n </h2>\n <div className=\"cr-modal__tools\">\n {onHelp && size !== 'large' && (\n <IconButton\n variant=\"tertiary\"\n size=\"xsmall\"\n icon={<Question />}\n aria-label={helpLabel}\n onClick={onHelp}\n />\n )}\n <IconButton\n ref={closeRef as unknown as Ref<HTMLButtonElement>}\n variant=\"tertiary\"\n size=\"xsmall\"\n icon={<X />}\n aria-label={closeLabel}\n onClick={(event) => hide(event)}\n />\n </div>\n </div>\n <div\n ref={setBody}\n className=\"cr-modal__body\"\n // Quando rola, o corpo entra na ordem do Tab para a rolagem pelo teclado (o axe exige\n // que uma área com rolagem seja focável).\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n tabIndex={rolavel ? 0 : undefined}\n >\n {children}\n </div>\n {(footer || footerStart) && (\n <div className=\"cr-modal__footer\">\n <div className=\"cr-modal__footer-start\">{footerStart}</div>\n <div className=\"cr-modal__footer-end\">{footer}</div>\n </div>\n )}\n </>\n )}\n />\n );\n}\n","import { forwardRef, useId, type Ref } from 'react';\nimport {\n MultiSelect as PrimeMultiSelect,\n type MultiSelectPassThroughOptions,\n} from 'primereact/multiselect';\nimport type { ChipRemoveEvent } from 'primereact/chip';\nimport { CaretDown, Check, Info, MagnifyingGlass, WarningCircle } from '@phosphor-icons/react';\nimport { Chip } from '../Chip';\nimport '../Input/Input.css';\nimport './MultiSelect.css';\n\n/** Type no Figma: Outline (com borda) e Filled (com fundo). */\nexport type MultiSelectVariant = 'outline' | 'filled';\n/** Size no Figma: 32, 36, 42 e 48px de altura do campo. */\nexport type MultiSelectSize = 'xsmall' | 'small' | 'medium' | 'large';\n/** Density da lista no Figma: itens de 40px (normal) ou 32px (compact). */\nexport type MultiSelectDensity = 'normal' | 'compact';\n\nexport interface MultiSelectProps {\n variant?: MultiSelectVariant;\n size?: MultiSelectSize;\n density?: MultiSelectDensity;\n /** Rótulo acima do campo (Label no Figma). Sem rótulo, passe `aria-label`. */\n label?: string;\n 'aria-label'?: string;\n /** Opções da lista. */\n options: unknown[];\n /** Campo da opção usado como texto (padrão: `label`). */\n optionLabel?: string;\n /** Campo da opção usado como valor; sem ele, o valor é a própria opção. */\n optionValue?: string;\n /** Valores selecionados (controlado). */\n value?: unknown[];\n onChange?: (value: unknown[]) => void;\n /** Texto do campo vazio (Field Text no Figma). */\n placeholder?: string;\n /** Mostra a busca no topo da lista (Search Filter no Figma). */\n filter?: boolean;\n filterPlaceholder?: string;\n /**\n * Quantos chips aparecem no campo; acima disso, um chip só com o resumo (Chip Group\n * \"4 itens selecionados\" no Figma), cujo X limpa a seleção.\n */\n maxChips?: number;\n /** Texto do resumo; `{0}` vira a quantidade. */\n selectedItemsLabel?: string;\n /** Nome acessível do checkbox de selecionar todos. */\n selectAllLabel?: string;\n /** Texto da lista quando a busca não encontra nada. */\n emptyFilterMessage?: string;\n /** Nome acessível do X dos chips. */\n removeLabel?: string;\n /** Dica abaixo do campo (Hint Info no Figma). */\n hint?: string;\n /** Mensagem de erro: deixa o campo no estado Error e mostra a dica de erro no lugar da dica. */\n error?: string;\n required?: boolean;\n disabled?: boolean;\n id?: string;\n name?: string;\n className?: string;\n}\n\n// Base: MultiSelect do PrimeReact no modo unstyled (abrir/fechar, teclado, seleção, filtro e\n// \"selecionar todos\" do Prime, espelhando o p-multiSelect do PrimeNG da produção). O rótulo, a\n// caixa e a dica reaproveitam o campo do Input (.cr-field); os selecionados viram Chips do Cristal\n// pelo selectedItemTemplate, porque o Prime mostra o resumo acima do limite só como texto, e o\n// Figma o mostra como chip. A ref vai para o <input> (combobox) do Prime, que recebe o foco.\nexport const MultiSelect = forwardRef<HTMLInputElement, MultiSelectProps>(function MultiSelect(\n {\n variant = 'outline',\n size = 'large',\n density = 'normal',\n label,\n options,\n optionLabel = 'label',\n optionValue,\n value,\n onChange,\n placeholder = 'Selecionar opção',\n filter = false,\n filterPlaceholder = 'Pesquisar',\n maxChips = 3,\n selectedItemsLabel = '{0} itens selecionados',\n removeLabel = 'Remover',\n selectAllLabel = 'Selecionar todos',\n emptyFilterMessage = 'Nenhum resultado encontrado',\n hint,\n error,\n required,\n disabled,\n id,\n className,\n ...props\n },\n ref,\n) {\n const autoId = useId();\n const inputId = id ?? autoId;\n const hintId = `${inputId}-hint`;\n const supportText = error ?? hint;\n const selected = value ?? [];\n const overflow = selected.length > maxChips;\n\n const classes = [\n 'cr-field',\n `cr-field--${variant}`,\n `cr-field--${size}`,\n 'cr-multiselect',\n error && 'cr-field--error',\n disabled && 'cr-field--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const valueOf = (option: unknown) =>\n optionValue ? (option as Record<string, unknown>)[optionValue] : option;\n const labelOf = (item: unknown) => {\n const option = options.find((o) => valueOf(o) === item) ?? item;\n const text = (option as Record<string, unknown> | null)?.[optionLabel];\n return String(text ?? item);\n };\n\n // O X do chip não pode abrir/fechar a lista (o clique subiria até o campo do Prime).\n const remove = (event: ChipRemoveEvent, next: unknown[]) => {\n event.originalEvent.stopPropagation();\n onChange?.(next);\n return false;\n };\n\n const renderSelected = (item?: unknown) => {\n if (item === undefined) {\n return <span className=\"cr-multiselect__placeholder\">{placeholder}</span>;\n }\n if (overflow) {\n if (selected.indexOf(item) !== 0) return null;\n return (\n <Chip\n className=\"cr-multiselect__chip\"\n label={selectedItemsLabel.replace('{0}', String(selected.length))}\n disabled={disabled}\n onRemove={disabled ? undefined : (event) => remove(event, [])}\n removeLabel={removeLabel}\n />\n );\n }\n return (\n <Chip\n className=\"cr-multiselect__chip\"\n label={labelOf(item)}\n disabled={disabled}\n onRemove={\n disabled\n ? undefined\n : (event) =>\n remove(\n event,\n selected.filter((v) => v !== item),\n )\n }\n removeLabel={`${removeLabel} ${labelOf(item)}`}\n />\n );\n };\n\n const checkbox = {\n root: { className: 'cr-multiselect__checkbox' },\n box: { className: 'cr-multiselect__checkbox-box' },\n input: { className: 'cr-multiselect__checkbox-input' },\n };\n\n const pt: MultiSelectPassThroughOptions = {\n // Com a lista aberta o foco vai para a busca (no body), fora da caixa: o estado Focused do\n // Figma vem do estado do Prime.\n root: (options) => {\n const open = (options as { state?: { overlayVisible?: boolean } })?.state?.overlayVisible;\n return {\n className: `cr-field__control cr-multiselect__control${open ? ' cr-multiselect__control--open' : ''}`,\n };\n },\n hiddenInputWrapper: { className: 'cr-multiselect__hidden' },\n input: {\n 'aria-describedby': supportText ? hintId : undefined,\n 'aria-invalid': error ? true : undefined,\n 'aria-required': required || undefined,\n },\n labelContainer: { className: 'cr-multiselect__value' },\n label: { className: 'cr-multiselect__chips' },\n trigger: { className: 'cr-field__icon cr-multiselect__trigger' },\n panel: { className: `cr-multiselect__panel cr-multiselect__panel--${density}` },\n header: { className: 'cr-multiselect__header' },\n headerCheckboxContainer: { className: 'cr-multiselect__select-all' },\n // O Prime repete role=checkbox na <div> em volta do <input>: o leitor de tela veria dois.\n headerCheckbox: {\n ...checkbox,\n root: { ...checkbox.root, role: undefined, 'aria-checked': undefined },\n input: { ...checkbox.input, 'aria-label': selectAllLabel },\n },\n filterContainer: { className: 'cr-multiselect__search' },\n // O filtro é um InputText do Prime, que lê o pass-through da raiz (a tipagem do Prime diverge).\n filterInput: {\n root: { className: 'cr-multiselect__search-input', 'aria-label': filterPlaceholder },\n } as never,\n closeButton: { className: 'cr-multiselect__close' },\n wrapper: { className: 'cr-multiselect__wrapper' },\n list: { className: 'cr-multiselect__list' },\n item: (options) => {\n const context = (options as { context?: { focusedIndex?: number; index?: number } })?.context;\n const focused = context !== undefined && context.focusedIndex === context.index;\n return {\n className: `cr-multiselect__item${focused ? ' cr-multiselect__item--focused' : ''}`,\n };\n },\n checkboxContainer: { className: 'cr-multiselect__item-checkbox' },\n // O item (role=option) já diz se está selecionado; o checkbox é só visual para o leitor de tela.\n // O item (role=option) já diz se está selecionado. O checkbox do Prime fica só visual: inert\n // tira o <input> do foco e do leitor de tela (tabindex=-1 e aria-hidden não bastam dentro de\n // um option), e o clique cai no item.\n checkbox: {\n ...checkbox,\n root: { ...checkbox.root, role: undefined, 'aria-checked': undefined, inert: true },\n },\n emptyMessage: { className: 'cr-multiselect__empty' },\n };\n\n return (\n <div className={classes}>\n {label && (\n <label className=\"cr-field__label\" htmlFor={inputId}>\n {label}\n {required && (\n <span className=\"cr-field__required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n <PrimeMultiSelect\n unstyled\n inputId={inputId}\n inputRef={ref as Ref<HTMLSelectElement>}\n value={selected}\n options={options}\n optionLabel={optionLabel}\n optionValue={optionValue}\n onChange={(event) => onChange?.(event.value as unknown[])}\n disabled={disabled}\n invalid={Boolean(error)}\n placeholder={placeholder}\n selectedItemTemplate={renderSelected}\n filter={filter}\n filterPlaceholder={filterPlaceholder}\n // 7 itens visíveis antes da rolagem, como no Figma (40px no normal, 32px no compact).\n scrollHeight={density === 'compact' ? '224px' : '280px'}\n emptyFilterMessage={emptyFilterMessage}\n filterIcon={\n <span className=\"cr-multiselect__search-icon\" aria-hidden=\"true\">\n <MagnifyingGlass />\n </span>\n }\n dropdownIcon={<CaretDown aria-hidden=\"true\" />}\n checkboxIcon={<Check aria-hidden=\"true\" />}\n itemCheckboxIcon={<Check aria-hidden=\"true\" />}\n pt={pt}\n {...props}\n />\n {supportText && (\n <p id={hintId} className={`cr-field__hint${error ? ' cr-field__hint--error' : ''}`}>\n <span className=\"cr-field__hint-icon\" aria-hidden=\"true\">\n {error ? <WarningCircle /> : <Info />}\n </span>\n {supportText}\n </p>\n )}\n </div>\n );\n});\n","import {\n cloneElement,\n forwardRef,\n useState,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport { TabMenu } from 'primereact/tabmenu';\nimport type { MenuItem } from 'primereact/menuitem';\nimport { ArrowLeft, ArrowsOutSimple } from '@phosphor-icons/react';\nimport { IconButton } from '../IconButton';\nimport { Tag } from '../Tag';\nimport './PageHeader.css';\n\n/**\n * Type no Figma: o estilo das abas. Primary tem o ícone em círculo e o fundo azul na aba ativa;\n * Secondary é só o texto, com o sublinhado na ativa.\n */\nexport type PageHeaderVariant = 'primary' | 'secondary';\n\n/** Uma aba (.Page Header Tab Item ou .Page Header Tab Secondary Item no Figma). */\nexport interface PageHeaderTab {\n label: string;\n /** Ícone de 16px. No primary fica no círculo de 32px; no secondary é opcional. */\n icon?: ReactNode;\n disabled?: boolean;\n}\n\nexport interface PageHeaderProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Título da página (Page Title no Figma). */\n title: string;\n /** Padrão: primary. */\n variant?: PageHeaderVariant;\n /** Mostra o botão de voltar antes do título (Show Back Button no Figma). */\n onBack?: () => void;\n backLabel?: string;\n /** Texto da Tag depois do título (Show Tag no Figma). */\n tag?: ReactNode;\n /** Segment Control das ferramentas (Show Segment Control no Figma): um `<SegmentControl>`. */\n segmentControl?: ReactNode;\n /** Botões das ferramentas (Show Buttons no Figma), 8px entre eles. */\n actions?: ReactNode;\n /** Mostra o botão de expandir, o último das ferramentas. */\n onExpand?: () => void;\n expandLabel?: string;\n /** Abas abaixo do título (Show Tabs no Figma). */\n tabs?: PageHeaderTab[];\n /** Aba ativa (controlado). Sem ela, o PageHeader controla sozinho. */\n activeTab?: number;\n onTabChange?: (index: number) => void;\n /** Nome das abas para o leitor de tela. Padrão: o título. */\n tabsLabel?: string;\n}\n\n// Exclusivo: o PrimeReact (e o PrimeNG da produção) não tem cabeçalho de página. O Cristal monta\n// o do Figma com o IconButton (voltar e expandir), a Tag, o SegmentControl recebido e, nas abas,\n// o TabMenu do PrimeReact no modo unstyled (o p-tabMenu do PrimeNG): menubar com as setas, Home e\n// End do Prime. O conteúdo de cada aba vem do template do Prime, com o ícone e o texto do Figma, e\n// a ativa ganha aria-current. Fluido e responsivo pela própria largura (PageHeader.css).\nexport const PageHeader = forwardRef<HTMLDivElement, PageHeaderProps>(function PageHeader(\n {\n title,\n variant = 'primary',\n onBack,\n backLabel = 'Voltar',\n tag,\n segmentControl,\n actions,\n onExpand,\n expandLabel = 'Expandir',\n tabs,\n activeTab,\n onTabChange,\n tabsLabel,\n className,\n ...props\n },\n ref,\n) {\n // Com onTabChange o Prime trata a aba ativa como controlada: sem activeTab, o PageHeader guarda.\n const [interna, setInterna] = useState(0);\n const ativa = activeTab ?? interna;\n\n const tools = segmentControl || actions;\n\n const tabTemplate = (tab: PageHeaderTab) =>\n // O TabMenu também passa o index da aba nas opções, além do que o tipo do MenuItem declara.\n function TabContent(item: MenuItem, options: unknown) {\n const { element, index } = options as { element: ReactElement; index: number };\n const active = index === ativa;\n return cloneElement(\n element,\n { 'aria-current': active ? 'page' : undefined } as object,\n <>\n {(variant === 'primary' || tab.icon) && (\n <span className=\"cr-page-header__tab-icon\" aria-hidden=\"true\">\n {tab.icon}\n </span>\n )}\n <span className=\"cr-page-header__tab-label\">{item.label}</span>\n </>,\n );\n };\n\n const classes = ['cr-page-header', `cr-page-header--${variant}`, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div ref={ref} className={classes} {...props}>\n <div\n className={`cr-page-header__title-group${tools ? ' cr-page-header__title-group--tools' : ''}`}\n >\n <div className=\"cr-page-header__title-text\">\n {onBack && (\n <IconButton\n variant=\"tertiary\"\n size=\"small\"\n icon={<ArrowLeft />}\n aria-label={backLabel}\n onClick={onBack}\n />\n )}\n <h1 className=\"cr-page-header__title\">{title}</h1>\n {tag && <Tag className=\"cr-page-header__tag\">{tag}</Tag>}\n </div>\n {tools && (\n <div className=\"cr-page-header__tools\">\n {segmentControl && <div className=\"cr-page-header__segment\">{segmentControl}</div>}\n {actions && <div className=\"cr-page-header__actions\">{actions}</div>}\n </div>\n )}\n {onExpand && (\n <IconButton\n className=\"cr-page-header__expand\"\n variant=\"tertiary\"\n size=\"medium\"\n icon={<ArrowsOutSimple />}\n aria-label={expandLabel}\n onClick={onExpand}\n />\n )}\n </div>\n {tabs && tabs.length > 0 && (\n <TabMenu\n unstyled\n model={tabs.map((tab) => ({\n label: tab.label,\n disabled: tab.disabled,\n template: tabTemplate(tab),\n }))}\n activeIndex={ativa}\n onTabChange={(event) => {\n setInterna(event.index);\n onTabChange?.(event.index);\n }}\n pt={{\n root: { className: 'cr-page-header__tabs' },\n menu: { className: 'cr-page-header__tab-list', 'aria-label': tabsLabel ?? title },\n menuitem: { className: 'cr-page-header__tab-item' },\n action: { className: 'cr-page-header__tab' },\n inkbar: { className: 'cr-page-header__inkbar' },\n }}\n />\n )}\n </div>\n );\n});\n","import { forwardRef, useCallback, useId, useState, type Ref } from 'react';\nimport { Dropdown, type DropdownPassThroughOptions } from 'primereact/dropdown';\nimport { CaretDown, CaretUp, Info, WarningCircle } from '@phosphor-icons/react';\nimport '../Input/Input.css';\nimport './Select.css';\n\n/** Type no Figma: Outline (com borda) e Filled (com fundo). */\nexport type SelectVariant = 'outline' | 'filled';\n/** Size no Figma: 32, 36, 42 e 48px de altura do campo. */\nexport type SelectSize = 'xsmall' | 'small' | 'medium' | 'large';\n\nexport interface SelectProps {\n variant?: SelectVariant;\n size?: SelectSize;\n /** Rótulo acima do campo (Label no Figma). Sem rótulo, passe `aria-label`. */\n label?: string;\n 'aria-label'?: string;\n /** Opções da lista. */\n options: unknown[];\n /** Campo da opção usado como texto (padrão: `label`). */\n optionLabel?: string;\n /** Campo da opção usado como valor; sem ele, o valor é a própria opção. */\n optionValue?: string;\n /** Valor selecionado (controlado). */\n value?: unknown;\n onChange?: (value: unknown) => void;\n /** Texto do campo vazio (Field Text no Figma). */\n placeholder?: string;\n /** Dica abaixo do campo (Hint Info no Figma). */\n hint?: string;\n /** Mensagem de erro: deixa o campo no estado Error e mostra a dica de erro no lugar da dica. */\n error?: string;\n required?: boolean;\n disabled?: boolean;\n /** Vai no campo (combobox). */\n id?: string;\n name?: string;\n className?: string;\n}\n\n// Base: Dropdown do PrimeReact no modo unstyled (abrir/fechar, teclado, seleção e posição da\n// lista do Prime, espelhando o p-dropdown do PrimeNG da produção). O rótulo, a caixa e a dica\n// reaproveitam o campo do Input (.cr-field) e a lista segue a Dropdown List do Menu. O Dropdown do\n// Prime não marca o campo como combobox: o Cristal completa (role, aria-expanded e aria-controls).\n// Pelo teclado, o Prime leva o foco para o item (role=option), que o leitor de tela anuncia. A\n// ref vai para o campo, que recebe o foco.\nexport const Select = forwardRef<HTMLInputElement, SelectProps>(function Select(\n {\n variant = 'outline',\n size = 'large',\n label,\n 'aria-label': ariaLabel,\n options,\n optionLabel = 'label',\n optionValue,\n value,\n onChange,\n placeholder = 'Selecione uma opção',\n hint,\n error,\n required,\n disabled,\n id,\n name,\n className,\n },\n ref,\n) {\n const autoId = useId();\n const inputId = id ?? autoId;\n const hintId = `${inputId}-hint`;\n const listId = `${inputId}-list`;\n const supportText = error ?? hint;\n const [open, setOpen] = useState(false);\n\n const setInputRef = useCallback(\n (input: HTMLInputElement | null) => {\n input?.setAttribute('role', 'combobox');\n if (typeof ref === 'function') ref(input);\n else if (ref) ref.current = input;\n },\n [ref],\n );\n\n const classes = [\n 'cr-field',\n `cr-field--${variant}`,\n `cr-field--${size}`,\n 'cr-select',\n error && 'cr-field--error',\n disabled && 'cr-field--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const pt: DropdownPassThroughOptions = {\n root: {\n className: `cr-field__control cr-select__control${open ? ' cr-select__control--open' : ''}`,\n // O Prime aponta para um item mesmo sem destaque (dropdownItem_-1); o foco vai no item.\n 'aria-activedescendant': undefined,\n },\n // O <select> escondido do Prime só existe para formulários: fora da árvore de acessibilidade.\n select: { 'aria-hidden': true },\n hiddenSelectedMessage: { className: 'cr-select__hidden' },\n // O Prime usa a mesma chave no texto do campo e no combobox escondido.\n input: { className: 'cr-select__value' },\n trigger: { className: 'cr-field__icon cr-select__trigger', 'aria-hidden': true },\n panel: { className: 'cr-select__panel' },\n wrapper: { className: 'cr-select__wrapper' },\n list: { className: 'cr-select__list', id: listId },\n item: { className: 'cr-select__item' },\n emptyMessage: { className: 'cr-select__item cr-select__empty' },\n };\n\n return (\n <div className={classes}>\n {label && (\n <label className=\"cr-field__label\" htmlFor={inputId}>\n {label}\n {required && (\n <span className=\"cr-field__required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n <Dropdown\n unstyled\n inputId={inputId}\n focusInputRef={setInputRef as unknown as Ref<HTMLInputElement>}\n value={value}\n options={options}\n optionLabel={optionLabel}\n optionValue={optionValue}\n onChange={(event) => onChange?.(event.value)}\n onShow={() => setOpen(true)}\n onHide={() => setOpen(false)}\n disabled={disabled}\n required={required}\n name={name}\n invalid={Boolean(error)}\n placeholder={placeholder}\n valueTemplate={(option: unknown) =>\n option == null ? (\n <span className=\"cr-select__placeholder\">{placeholder}</span>\n ) : (\n String((option as Record<string, unknown>)[optionLabel] ?? option)\n )\n }\n // 5 itens visíveis antes da rolagem, como no Figma (itens de 37px).\n scrollHeight=\"185px\"\n dropdownIcon={<CaretDown />}\n collapseIcon={<CaretUp />}\n aria-label={label ? undefined : ariaLabel}\n aria-expanded={open}\n aria-controls={open ? listId : undefined}\n aria-describedby={supportText ? hintId : undefined}\n aria-invalid={error ? true : undefined}\n aria-required={required || undefined}\n pt={pt}\n />\n {supportText && (\n <p id={hintId} className={`cr-field__hint${error ? ' cr-field__hint--error' : ''}`}>\n <span className=\"cr-field__hint-icon\" aria-hidden=\"true\">\n {error ? <WarningCircle /> : <Info />}\n </span>\n {supportText}\n </p>\n )}\n </div>\n );\n});\n","import {\n forwardRef,\n useImperativeHandle,\n useRef,\n useState,\n type ReactNode,\n type SyntheticEvent,\n} from 'react';\nimport {\n Paginator as PrimePaginator,\n type PaginatorChangeEvent,\n type PaginatorPageLinksOptions,\n type PaginatorRowsPerPageDropdownOptions,\n} from 'primereact/paginator';\nimport { CaretDoubleLeft, CaretDoubleRight, CaretLeft, CaretRight } from '@phosphor-icons/react';\nimport { Select } from '../Select';\nimport './Paginator.css';\n\n/** O que o onPageChange recebe (o mesmo evento do Prime). */\nexport interface PaginatorPageChangeEvent {\n /** Índice do primeiro item da página. */\n first: number;\n /** Itens por página. */\n rows: number;\n /** Página, a partir de 0. */\n page: number;\n pageCount: number;\n}\n\nexport interface PaginatorProps {\n totalRecords: number;\n /** Índice do primeiro item da página (controlado). Sem ele, o Paginator controla sozinho. */\n first?: number;\n /** Itens por página (controlado). Padrão: o primeiro de rowsPerPageOptions, ou 10. */\n rows?: number;\n /** Opções do Select de itens por página; sem elas, o Select não aparece. */\n rowsPerPageOptions?: number[];\n /** Quantos números de página aparecem. Padrão: 5, como no Figma. */\n pageLinkSize?: number;\n onPageChange?: (event: PaginatorPageChangeEvent) => void;\n /** Nome do Select para o leitor de tela. */\n rowsPerPageLabel?: string;\n id?: string;\n className?: string;\n}\n\n// Base: Paginator do PrimeReact no modo unstyled (o p-paginator do PrimeNG da produção): a conta\n// das páginas, a janela de números, as setas desabilitadas nas pontas e a volta à primeira página\n// ao trocar os itens por página são do Prime. Pelo template do Prime, o Cristal desenha os botões\n// do Figma (setas com os Carets e os números em círculo), com nomes em português, e troca o\n// Dropdown do Prime pelo Select do Cristal, como no Figma. A ref entrega a raiz.\n// Seta (.Paginator Arrows no Figma), no lugar do botão do Prime: o Prime entrega o clique e se\n// ela está desabilitada (nas pontas).\nconst seta =\n (label: string, icon: ReactNode) =>\n (options: { onClick: (event: SyntheticEvent) => void; disabled: boolean }) => (\n <button\n type=\"button\"\n className=\"cr-paginator__arrow\"\n aria-label={label}\n disabled={options.disabled}\n onClick={options.onClick}\n >\n {icon}\n </button>\n );\n\nexport const Paginator = forwardRef<HTMLDivElement, PaginatorProps>(function Paginator(\n {\n totalRecords,\n first,\n rows,\n rowsPerPageOptions,\n pageLinkSize = 5,\n onPageChange,\n rowsPerPageLabel = 'Itens por página',\n id,\n className,\n },\n ref,\n) {\n const primeRef = useRef<PrimePaginator>(null);\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLDivElement);\n\n // O Paginator do Prime só muda de página pelas props: sem first e rows, o Cristal guarda.\n const [interno, setInterno] = useState({\n first: 0,\n rows: rowsPerPageOptions?.[0] ?? 10,\n });\n const atual = { first: first ?? interno.first, rows: rows ?? interno.rows };\n\n return (\n <PrimePaginator\n unstyled\n ref={primeRef}\n id={id}\n totalRecords={totalRecords}\n first={atual.first}\n rows={atual.rows}\n rowsPerPageOptions={rowsPerPageOptions}\n pageLinkSize={pageLinkSize}\n onPageChange={(event) => {\n setInterno({ first: event.first, rows: event.rows });\n onPageChange?.(event);\n }}\n template={{\n layout:\n 'FirstPageLink PrevPageLink PageLinks NextPageLink LastPageLink RowsPerPageDropdown',\n FirstPageLink: seta('Primeira página', <CaretDoubleLeft aria-hidden=\"true\" />),\n PrevPageLink: seta('Página anterior', <CaretLeft aria-hidden=\"true\" />),\n NextPageLink: seta('Próxima página', <CaretRight aria-hidden=\"true\" />),\n LastPageLink: seta('Última página', <CaretDoubleRight aria-hidden=\"true\" />),\n PageLinks: (options: PaginatorPageLinksOptions) => {\n const ativa = options.page === options.currentPage;\n return (\n <button\n type=\"button\"\n className=\"cr-paginator__page\"\n aria-label={`Página ${options.page + 1}`}\n aria-current={ativa ? 'page' : undefined}\n onClick={options.onClick}\n >\n {options.page + 1}\n </button>\n );\n },\n // O Prime chama o template mesmo sem rowsPerPageOptions.\n RowsPerPageDropdown: (options: PaginatorRowsPerPageDropdownOptions) =>\n options.options.length > 0 && (\n <Select\n className=\"cr-paginator__rows\"\n size=\"medium\"\n aria-label={rowsPerPageLabel}\n options={options.options}\n optionValue=\"value\"\n value={options.value}\n // O Prime lê o número de itens no value (o tipo dele diz string).\n onChange={(value) => options.onChange({ value } as unknown as PaginatorChangeEvent)}\n />\n ),\n }}\n pt={{\n root: { className: ['cr-paginator', className].filter(Boolean).join(' ') },\n pages: { className: 'cr-paginator__pages' },\n }}\n />\n );\n});\n","import { forwardRef, useImperativeHandle, useRef, type HTMLAttributes } from 'react';\nimport { Panel as PrimePanel } from 'primereact/panel';\nimport './Panel.css';\n\n// O onToggle nativo da <div> colide com o do Panel do Prime, que o Figma não usa.\nexport type PanelProps = Omit<HTMLAttributes<HTMLDivElement>, 'onToggle'>;\n\n// Base: Panel do PrimeReact no modo unstyled (o p-panel do PrimeNG da produção). No Figma o Panel é\n// só o contêiner da seção da página, com o conteúdo num slot e sem cabeçalho: o Cristal não repassa\n// header, toggleable nem footer do Prime, e o conteúdo vai em children. Sem cabeçalho, o Prime\n// deixaria a região de conteúdo apontando para um título que não existe: o Cristal tira o role e o\n// aria-labelledby (para nomear o Panel como região, passe role=\"region\" e aria-label).\nexport const Panel = forwardRef<HTMLDivElement, PanelProps>(function Panel(\n { className, style, children, ...props },\n ref,\n) {\n // A ref do Prime é um objeto com getElement(); a do Cristal entrega o próprio elemento.\n const primeRef = useRef<PrimePanel>(null);\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLDivElement);\n\n return (\n <PrimePanel\n unstyled\n ref={primeRef}\n // No unstyled, className e style do Panel do Prime não chegam ao elemento; vão pelo pt.\n pt={{\n root: { className: ['cr-panel', className].filter(Boolean).join(' '), style },\n toggleableContent: {\n className: 'cr-panel__body',\n role: undefined,\n 'aria-labelledby': undefined,\n },\n content: { className: 'cr-panel__content' },\n }}\n {...props}\n >\n {children}\n </PrimePanel>\n );\n});\n","import { forwardRef, useId, type CSSProperties, type ReactNode, type Ref } from 'react';\nimport { RadioButton, type RadioButtonChangeEvent } from 'primereact/radiobutton';\nimport './Radio.css';\n\n/** Label Size no Figma: Default (uma linha, com reticências) e Full (quebra em várias linhas). */\nexport type RadioLabelSize = 'default' | 'full';\n\nexport interface RadioProps {\n /** Texto ao lado do controle (Label no Figma). Sem rótulo visível, vira o nome acessível. */\n label: ReactNode;\n /** Mostra o rótulo. Padrão: true. */\n showLabel?: boolean;\n /** Padrão: default. */\n labelSize?: RadioLabelSize;\n checked?: boolean;\n /** Valor da opção, devolvido no `onChange`. */\n value?: unknown;\n /** Nome do grupo: radios com o mesmo `name` se excluem e navegam pelas setas. */\n name?: string;\n onChange?: (event: RadioButtonChangeEvent) => void;\n disabled?: boolean;\n required?: boolean;\n /** Vai no <input>. */\n id?: string;\n className?: string;\n style?: CSSProperties;\n}\n\n// Base: RadioButton do PrimeReact no modo unstyled (o p-radioButton do PrimeNG da produção), com\n// o <input type=\"radio\"> nativo por cima do círculo: o grupo pelo `name` e as setas do teclado são\n// do navegador. O rótulo é um <label> ligado ao input. A ref entrega o <input>.\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(function Radio(\n {\n label,\n showLabel = true,\n labelSize = 'default',\n checked = false,\n value,\n name,\n onChange,\n disabled,\n required,\n id,\n className,\n style,\n },\n ref,\n) {\n const autoId = useId();\n const inputId = id ?? autoId;\n\n const classes = [\n 'cr-radio',\n `cr-radio--label-${labelSize}`,\n disabled && 'cr-radio--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={classes} style={style}>\n <RadioButton\n unstyled\n inputRef={ref as Ref<HTMLInputElement>}\n inputId={inputId}\n checked={checked}\n value={value}\n name={name}\n onChange={onChange}\n disabled={disabled}\n required={required}\n pt={{\n root: { className: 'cr-radio__control' },\n input: { className: 'cr-radio__input' },\n box: { className: 'cr-radio__box' },\n icon: { className: 'cr-radio__icon' },\n }}\n />\n {/* Sem rótulo visível, o <label> continua no DOM (escondido) e dá o nome ao input. */}\n <label\n className={`cr-radio__label${showLabel ? '' : ' cr-radio__label--hidden'}`}\n htmlFor={inputId}\n >\n {label}\n </label>\n </div>\n );\n});\n","import {\n forwardRef,\n useId,\n useImperativeHandle,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n type UIEvent,\n} from 'react';\nimport { ScrollPanel as PrimeScrollPanel } from 'primereact/scrollpanel';\nimport './ScrollPanel.css';\n\nexport interface ScrollPanelProps {\n children?: ReactNode;\n /** O que a área mostra, para o leitor de tela (ex.: \"Histórico da carga\"). */\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n /** Dê uma altura (ou max-height) para a área rolar. */\n style?: CSSProperties;\n id?: string;\n className?: string;\n}\n\nconst porcentagem = (posicao: number, total: number, visivel: number) =>\n total > visivel ? Math.round((posicao / (total - visivel)) * 100) : 0;\n\n// Base: ScrollPanel do PrimeReact no modo unstyled (o p-scrollPanel do PrimeNG da produção): o\n// Prime esconde a barra nativa e desenha as dele, que acompanham a rolagem e podem ser arrastadas.\n// Visual da Scrollbar do Figma: 8px, polegar fill/neutral/subtle, trilho transparente. O Prime\n// deixa as barras apontando (aria-controls) para um id que o conteúdo não tem, com os valores\n// trocados e em pixels, e o conteúdo que rola fora do Tab: o Cristal dá o foco ao conteúdo (que\n// rola pelo teclado como qualquer área nativa) e deixa as barras só para o mouse, com os valores\n// em porcentagem. A ref entrega a raiz.\nexport const ScrollPanel = forwardRef<HTMLDivElement, ScrollPanelProps>(function ScrollPanel(\n { children, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, style, id, className },\n ref,\n) {\n const primeRef = useRef<PrimeScrollPanel>(null);\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLDivElement);\n const contentId = `${useId()}-content`;\n const [posicao, setPosicao] = useState({ x: 0, y: 0 });\n\n const aoRolar = (event: UIEvent<HTMLDivElement>) => {\n const el = event.currentTarget;\n setPosicao({\n x: porcentagem(el.scrollLeft, el.scrollWidth, el.clientWidth),\n y: porcentagem(el.scrollTop, el.scrollHeight, el.clientHeight),\n });\n };\n\n const barra = (orientacao: 'horizontal' | 'vertical', valor: number) => ({\n className: `cr-scrollpanel__bar cr-scrollpanel__bar--${orientacao}`,\n tabIndex: -1,\n 'aria-controls': contentId,\n 'aria-valuenow': valor,\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n });\n\n // No unstyled, className e style do ScrollPanel do Prime não chegam ao elemento; vão pelo pt.\n // O Prime lê as barras como `barx` e `bary`, mas a tipagem dele as chama de barX e barY: o objeto\n // fica numa constante para o TypeScript aceitar as chaves que o Prime de fato usa.\n const pt = {\n root: { className: ['cr-scrollpanel', className].filter(Boolean).join(' '), style },\n wrapper: { className: 'cr-scrollpanel__wrapper' },\n content: {\n id: contentId,\n className: 'cr-scrollpanel__content',\n tabIndex: 0,\n role: 'region',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n onScroll: aoRolar,\n },\n barx: barra('horizontal', posicao.x),\n bary: barra('vertical', posicao.y),\n };\n\n return (\n <PrimeScrollPanel unstyled ref={primeRef} id={id} pt={pt}>\n {children}\n </PrimeScrollPanel>\n );\n});\n","import { forwardRef, useImperativeHandle, useRef, type KeyboardEvent, type ReactNode } from 'react';\nimport { SelectButton } from 'primereact/selectbutton';\nimport './SegmentControl.css';\n\n/**\n * No Figma: Primary é o Header Segment Control (pílula em fill/brand/subtlest) e Secondary é o\n * Segment Control (cinza, com ícones).\n */\nexport type SegmentControlVariant = 'primary' | 'secondary';\n\nexport interface SegmentControlOption {\n label: string;\n value: string | number;\n /** Ícone de 16px antes do texto (o Secondary do Figma usa). */\n icon?: ReactNode;\n disabled?: boolean;\n}\n\nexport interface SegmentControlProps {\n options: SegmentControlOption[];\n /** Valor do segmento ativo (controlado). */\n value?: string | number;\n onChange?: (value: string | number) => void;\n variant?: SegmentControlVariant;\n /** O que o grupo controla, para o leitor de tela (ex.: \"Visualização\"). */\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n disabled?: boolean;\n id?: string;\n className?: string;\n}\n\n// Base: SelectButton do PrimeReact no modo unstyled (o p-selectButton do PrimeNG da produção):\n// grupo de botões com aria-pressed e as setas do teclado do Prime; o Cristal soma o Enter à barra\n// de espaço. Sempre há um segmento ativo (allowEmpty desligado). O visual vem do\n// SegmentControl.css. A ref entrega o grupo.\nexport const SegmentControl = forwardRef<HTMLDivElement, SegmentControlProps>(\n function SegmentControl(\n {\n options,\n value,\n onChange,\n variant = 'primary',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n disabled,\n id,\n className,\n },\n ref,\n ) {\n const primeRef = useRef<SelectButton>(null);\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLDivElement);\n\n const classes = ['cr-segment', `cr-segment--${variant}`, className].filter(Boolean).join(' ');\n\n return (\n <SelectButton\n unstyled\n ref={primeRef}\n id={id}\n options={options}\n optionLabel=\"label\"\n optionValue=\"value\"\n optionDisabled=\"disabled\"\n value={value}\n onChange={(event) => {\n if (event.value != null) onChange?.(event.value as string | number);\n }}\n allowEmpty={false}\n disabled={disabled}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n itemTemplate={(option: SegmentControlOption) => (\n <>\n {option.icon && (\n <span className=\"cr-segment__icon\" aria-hidden=\"true\">\n {option.icon}\n </span>\n )}\n <span className=\"cr-segment__label\">{option.label}</span>\n </>\n )}\n pt={{\n root: { className: classes },\n button: {\n className: 'cr-segment__item',\n // O Prime só ativa com a barra de espaço; um role=button responde também ao Enter.\n onKeyDown: (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Enter') event.currentTarget.click();\n },\n },\n }}\n />\n );\n },\n);\n","import { forwardRef, useId, type CSSProperties, type ReactNode, type Ref } from 'react';\nimport { InputSwitch, type InputSwitchChangeEvent } from 'primereact/inputswitch';\nimport './Switch.css';\n\n/** Size no Figma: Medium (48x28) e Small (32x20). */\nexport type SwitchSize = 'medium' | 'small';\n/** Label Position no Figma: lado do rótulo em relação ao switch. */\nexport type SwitchLabelPosition = 'right' | 'left';\n\nexport interface SwitchProps {\n /** Texto ao lado do switch (Label no Figma). Sem rótulo visível, vira o nome acessível. */\n label: ReactNode;\n /** Mostra o rótulo. Padrão: true. */\n showLabel?: boolean;\n /** Padrão: right. */\n labelPosition?: SwitchLabelPosition;\n /** Padrão: medium. */\n size?: SwitchSize;\n checked?: boolean;\n onChange?: (event: InputSwitchChangeEvent) => void;\n disabled?: boolean;\n name?: string;\n /** Vai no <input>. */\n id?: string;\n className?: string;\n style?: CSSProperties;\n}\n\n// Base: InputSwitch do PrimeReact no modo unstyled (o p-inputSwitch do PrimeNG da produção), com o\n// <input role=\"switch\"> nativo por cima do trilho. O Prime também põe role=\"checkbox\" na div de\n// fora, o que aninha dois controles: o Cristal tira esse role. O rótulo é um <label> ligado ao\n// input. A ref entrega o <input>.\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(function Switch(\n {\n label,\n showLabel = true,\n labelPosition = 'right',\n size = 'medium',\n checked = false,\n onChange,\n disabled,\n name,\n id,\n className,\n style,\n },\n ref,\n) {\n const autoId = useId();\n const inputId = id ?? autoId;\n\n const classes = [\n 'cr-switch',\n `cr-switch--${size}`,\n `cr-switch--label-${labelPosition}`,\n disabled && 'cr-switch--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={classes} style={style}>\n <InputSwitch\n unstyled\n inputRef={ref as Ref<HTMLInputElement>}\n inputId={inputId}\n checked={checked}\n onChange={onChange}\n disabled={disabled}\n name={name}\n pt={{\n root: { className: 'cr-switch__control', role: undefined, 'aria-checked': undefined },\n input: { className: 'cr-switch__input' },\n slider: { className: 'cr-switch__track' },\n }}\n />\n {/* Sem rótulo visível, o <label> continua no DOM (escondido) e dá o nome ao input. */}\n <label\n className={`cr-switch__label${showLabel ? '' : ' cr-switch__label--hidden'}`}\n htmlFor={inputId}\n >\n {label}\n </label>\n </div>\n );\n});\n","import {\n Children,\n cloneElement,\n forwardRef,\n isValidElement,\n useImperativeHandle,\n useRef,\n useState,\n type KeyboardEvent,\n type MouseEvent,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport {\n TabView,\n TabPanel as PrimeTabPanel,\n type TabPanelHeaderTemplateOptions,\n} from 'primereact/tabview';\nimport { X } from '@phosphor-icons/react';\nimport { Badge } from '../Badge';\nimport './Tabs.css';\n\n/** Uma aba (.Tab Item no Figma) e o conteúdo dela. */\nexport interface TabPanelProps {\n /** Texto da aba (Label no Figma). */\n header: string;\n /** Ícone antes do texto (Leading Icon no Figma). */\n leftIcon?: ReactNode;\n /** Contador depois do texto (Badge no Figma). */\n badge?: ReactNode;\n /** Mostra o X (Tab Btn no Figma) e é chamado ao fechar a aba (clique no X ou Delete na aba). */\n onClose?: () => void;\n disabled?: boolean;\n children?: ReactNode;\n}\n\n/** Só descreve a aba: quem desenha é o Tabs. */\nexport function TabPanel(_props: TabPanelProps): null {\n return null;\n}\n\nexport interface TabsProps {\n /** Aba ativa (controlado). Sem ela, o Tabs controla sozinho. */\n activeIndex?: number;\n onTabChange?: (index: number) => void;\n /** As abas, como `<TabPanel>`. */\n children: ReactNode;\n id?: string;\n className?: string;\n}\n\n// Base: TabView do PrimeReact no modo unstyled (o p-tabView do PrimeNG da produção): tablist, abas,\n// painéis e o teclado (setas, Home e End) do Prime. Cada aba vem de um <TabPanel> do Cristal, que\n// vira o TabPanel do Prime com o desenho do Figma (ícone, texto, Badge e X) pelo headerTemplate. O\n// X do Prime fica dentro do role=tab como um segundo controle; o do Cristal é só visual (clique) e,\n// pelo teclado, a aba fecha com Delete (anunciado pelo aria-keyshortcuts). A ref entrega a raiz.\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>(function Tabs(\n { activeIndex, onTabChange, children, id, className },\n ref,\n) {\n const primeRef = useRef<TabView>(null);\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLDivElement);\n // Com onTabChange o Prime trata a aba ativa como controlada: sem activeIndex, o Tabs guarda.\n const [interno, setInterno] = useState(0);\n const ativa = activeIndex ?? interno;\n\n const panels = Children.toArray(children).filter((child): child is ReactElement<TabPanelProps> =>\n isValidElement(child),\n );\n\n const header = (panel: TabPanelProps) =>\n function TabHeader(options: TabPanelHeaderTemplateOptions) {\n const element = options.element as ReactElement<{\n onKeyDown?: (event: KeyboardEvent) => void;\n }>;\n const close = panel.onClose;\n return cloneElement(\n element,\n {\n 'aria-keyshortcuts': close ? 'Delete' : undefined,\n onKeyDown: (event: KeyboardEvent) => {\n if (close && event.key === 'Delete') close();\n else element.props.onKeyDown?.(event);\n },\n } as object,\n <>\n {panel.leftIcon && (\n <span className=\"cr-tabs__icon\" aria-hidden=\"true\">\n {panel.leftIcon}\n </span>\n )}\n <span className=\"cr-tabs__label\">{panel.header}</span>\n {panel.badge !== undefined && <Badge className=\"cr-tabs__badge\">{panel.badge}</Badge>}\n {close && (\n // O X é só para o mouse: pelo teclado a aba fecha com Delete (aria-keyshortcuts).\n <span\n className=\"cr-tabs__close\"\n aria-hidden=\"true\"\n onClick={(event: MouseEvent) => {\n event.stopPropagation();\n close();\n }}\n >\n <X />\n </span>\n )}\n </>,\n );\n };\n\n return (\n <TabView\n unstyled\n ref={primeRef}\n id={id}\n activeIndex={ativa}\n onTabChange={(event) => {\n setInterno(event.index);\n onTabChange?.(event.index);\n }}\n pt={{\n root: { className: ['cr-tabs', className].filter(Boolean).join(' ') },\n navContainer: { className: 'cr-tabs__nav-container' },\n navContent: { className: 'cr-tabs__nav-content' },\n nav: { className: 'cr-tabs__nav' },\n inkbar: { className: 'cr-tabs__inkbar' },\n panelContainer: { className: 'cr-tabs__panels' },\n }}\n >\n {panels.map((panel, index) => (\n <PrimeTabPanel\n key={panel.key ?? index}\n header={panel.props.header}\n disabled={panel.props.disabled}\n headerTemplate={header(panel.props)}\n pt={{\n header: { className: 'cr-tabs__item' },\n headerAction: { className: 'cr-tabs__tab' },\n content: { className: 'cr-tabs__panel' },\n }}\n >\n {panel.props.children}\n </PrimeTabPanel>\n ))}\n </TabView>\n );\n});\n","import { forwardRef, useImperativeHandle, useRef, type ReactElement } from 'react';\nimport {\n Toast as PrimeToast,\n type ToastMessage as PrimeToastMessage,\n type ToastPassThroughTransitionType,\n type ToastProps as PrimeToastProps,\n} from 'primereact/toast';\nimport { Check, Info, Warning, X, XCircle } from '@phosphor-icons/react';\nimport './Toast.css';\n\n/** Type no Figma. */\nexport type ToastType = 'warning' | 'danger' | 'success' | 'info';\n\n/** Onde as mensagens aparecem na tela (o position do Prime). Padrão: top-right. */\nexport type ToastPosition = NonNullable<PrimeToastProps['position']>;\n\n/** Uma mensagem, passada para `show()`. */\nexport interface ToastMessage {\n type: ToastType;\n /** Title no Figma. */\n title: string;\n /** Message no Figma (Show Message content). */\n message?: string;\n /** Show Icon no Figma. Padrão: true. */\n showIcon?: boolean;\n /** Tempo na tela, em ms. Padrão do Prime: 3000. */\n life?: number;\n /** Fica até alguém fechar. */\n sticky?: boolean;\n}\n\n/** O que a ref do Toast entrega. */\nexport interface ToastHandle {\n show: (message: ToastMessage | ToastMessage[]) => void;\n clear: () => void;\n}\n\nexport interface ToastProps {\n position?: ToastPosition;\n /** Nome do X para o leitor de tela. */\n closeLabel?: string;\n id?: string;\n className?: string;\n}\n\nconst SEVERITY: Record<ToastType, PrimeToastMessage['severity']> = {\n warning: 'warn',\n danger: 'error',\n success: 'success',\n info: 'info',\n};\n\nconst ICON: Record<ToastType, ReactElement> = {\n warning: <Warning />,\n danger: <XCircle />,\n success: <Check />,\n info: <Info />,\n};\n\n// Base: Toast do PrimeReact no modo unstyled (o p-toast do PrimeNG da produção): a pilha de\n// mensagens na tela, o tempo de cada uma (pausado com o mouse em cima), o X e o role=alert são do\n// Prime. Como no Prime, as mensagens entram pela ref: toast.current.show({ type, title, message }).\n// O Cristal troca o severity pelo Type do Figma, põe os ícones do Figma no círculo e desenha tudo\n// pelos tokens (Toast.css).\nexport const Toast = forwardRef<ToastHandle, ToastProps>(function Toast(\n { position = 'top-right', closeLabel = 'Fechar', id, className },\n ref,\n) {\n const primeRef = useRef<PrimeToast>(null);\n\n const converter = ({\n type,\n title,\n message,\n showIcon = true,\n life,\n sticky,\n }: ToastMessage): PrimeToastMessage => ({\n severity: SEVERITY[type],\n summary: title,\n detail: message,\n // Sem ícone, um fragmento vazio: com undefined o Prime põe o ícone dele.\n icon: showIcon ? (\n <span className=\"cr-toast__icon\" aria-hidden=\"true\">\n {ICON[type]}\n </span>\n ) : (\n <></>\n ),\n closeIcon: <X aria-hidden=\"true\" />,\n life,\n sticky,\n className: `cr-toast__message--${type}`,\n });\n\n useImperativeHandle(ref, () => ({\n show: (message) =>\n primeRef.current?.show(Array.isArray(message) ? message.map(converter) : converter(message)),\n clear: () => primeRef.current?.clear(),\n }));\n\n return (\n <PrimeToast\n // O Toast aceita unstyled como os outros, mas o d.ts do Prime 10 esqueceu de declarar.\n {...({ unstyled: true } as object)}\n ref={primeRef}\n id={id}\n position={position}\n pt={{\n root: {\n className: ['cr-toast', className].filter(Boolean).join(' '),\n },\n message: { className: 'cr-toast__message' },\n content: { className: 'cr-toast__content' },\n text: { className: 'cr-toast__text' },\n summary: { className: 'cr-toast__title' },\n detail: { className: 'cr-toast__detail' },\n closeButton: { className: 'cr-toast__close', 'aria-label': closeLabel },\n // No unstyled o Prime não põe classes na transição: o Cristal dá as dele (Toast.css).\n transition: {\n classNames: {\n enter: 'cr-toast__message--enter',\n enterActive: 'cr-toast__message--enter-active',\n exitActive: 'cr-toast__message--exit-active',\n },\n } as ToastPassThroughTransitionType,\n }}\n />\n );\n});\n"]}
1
+ {"version":3,"sources":["../src/components/Accordion/Accordion.tsx","../src/components/AutoComplete/AutoComplete.tsx","../src/components/Badge/Badge.tsx","../src/components/Button/Button.tsx","../src/components/Card/Card.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Chart/Chart.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Chip/Chip.tsx","../src/components/Divider/Divider.tsx","../src/components/IconButton/IconButton.tsx","../src/components/Drawer/Drawer.tsx","../src/components/Input/Input.tsx","../src/components/Menu/Menu.tsx","../src/components/Menubar/Menubar.tsx","../src/components/Tag/Tag.tsx","../src/components/MenuPrincipal/MenuPrincipal.tsx","../src/components/Message/Message.tsx","../src/components/Modal/Modal.tsx","../src/components/MultiSelect/MultiSelect.tsx","../src/components/PageHeader/PageHeader.tsx","../src/components/Select/Select.tsx","../src/components/Paginator/Paginator.tsx","../src/components/Panel/Panel.tsx","../src/components/Radio/Radio.tsx","../src/components/ScrollPanel/ScrollPanel.tsx","../src/components/SegmentControl/SegmentControl.tsx","../src/components/Switch/Switch.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Toast/Toast.tsx"],"names":["jsx","forwardRef","Accordion","useRef","useImperativeHandle","useState","Children","isValidElement","PrimeAccordion","CaretDown","CaretUp","PrimeAccordionTab","jsxs","AutoComplete","useId","PrimeAutoComplete","WarningCircle","Info","Badge","PrimeBadge","Button","PrimeButton","Card","PrimeCard","useEffect","PrimeTooltip","useLayoutEffect","useMemo","Fragment","Question","PrimeChart","Checkbox","useCallback","PrimeCheckbox","Check","Chip","X","PrimeChip","Divider","PrimeDivider","IconButton","Sidebar","ArrowLeft","Input","InputText","Menu","useContext","PrimeReactContext","CircleNotch","menu","PrimeMenu","PrimeReactProvider","PrimeAvatar","Menubar","List","MagnifyingGlass","PrimeMenubar","Tag","PrimeTag","MenuPrincipal","DribbbleLogo","Warning","CheckCircle","XCircle","SealWarning","Message","PrimeMessage","Dialog","MultiSelect","options","PrimeMultiSelect","PageHeader","cloneElement","ArrowsInSimple","ArrowsOutSimple","TabMenu","Select","Dropdown","seta","Paginator","PrimePaginator","CaretDoubleLeft","CaretLeft","CaretRight","CaretDoubleRight","Panel","PrimePanel","Radio","RadioButton","ScrollPanel","PrimeScrollPanel","SegmentControl","SelectButton","Switch","InputSwitch","Tabs","TabView","PrimeTabPanel","SEVERITY","ICON","Toast","PrimeToast"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCO,SAAS,aAAa,MAAA,EAAiC;AAC5D,EAAA,OAAO,IAAA;AACT;AAkBA,IAAM,IAAA,GAAO,CAAC,IAAA,qBACZA,cAAA,CAAC,UAAK,SAAA,EAAU,sBAAA,EAAuB,aAAA,EAAY,MAAA,EAChD,QAAA,EAAA,IAAA,EACH,CAAA;AASK,IAAM,SAAA,GAAYC,gBAAA,CAA2C,SAASC,UAAAA,CAC3E,EAAE,QAAA,GAAW,KAAA,EAAO,WAAA,EAAa,WAAA,EAAa,QAAA,EAAU,EAAA,EAAI,SAAA,IAC5D,GAAA,EACA;AACA,EAAA,MAAM,QAAA,GAAWC,aAAuB,IAAI,CAAA;AAC5C,EAAAC,yBAAA,CAAoB,GAAA,EAAK,MAAM,QAAA,CAAS,OAAA,EAAS,YAA8B,CAAA;AAI/E,EAAA,MAAM,CAAC,SAAS,UAAU,CAAA,GAAIC,eAAmC,QAAA,GAAW,CAAC,CAAC,CAAA,GAAI,CAAC,CAAA;AACnF,EAAA,MAAM,OAAA,GAAU,WAAA,KAAgB,MAAA,GAAY,OAAA,GAAU,WAAA;AAEtD,EAAA,MAAM,IAAA,GAAOC,cAAA,CAAS,OAAA,CAAQ,QAAQ,CAAA,CAAE,MAAA;AAAA,IACtC,CAAC,KAAA,KAAoDC,oBAAA,CAAe,KAAK;AAAA,GAC3E;AAEA,EAAA,uBACEP,cAAA;AAAA,IAACQ,mBAAA;AAAA,IAAA;AAAA,MAEE,GAAI,EAAE,QAAA,EAAU,IAAA,EAAK;AAAA,MACtB,GAAA,EAAK,QAAA;AAAA,MACL,EAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA,EAAa,OAAA;AAAA,MACb,WAAA,EAAa,CAAC,KAAA,KAAU;AACtB,QAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,QAAA,UAAA,CAAW,KAAK,CAAA;AAChB,QAAA,WAAA,GAAc,KAAK,CAAA;AAAA,MACrB,CAAA;AAAA,MACA,UAAA,EAAY,IAAA,iBAAKR,cAAA,CAACS,iBAAA,EAAA,EAAU,CAAE,CAAA;AAAA,MAC9B,YAAA,EAAc,IAAA,iBAAKT,cAAA,CAACU,eAAA,EAAA,EAAQ,CAAE,CAAA;AAAA,MAC9B,EAAA,EAAI,EAAE,IAAA,EAAM,EAAE,WAAW,CAAC,cAAA,EAAgB,SAAS,CAAA,CAAE,OAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,GAAE,EAAE;AAAA,MAEhF,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,EAAK,KAAA,qBACdV,cAAA;AAAA,QAACW,sBAAA;AAAA,QAAA;AAAA,UAEC,MAAA,EAAQ,IAAI,KAAA,CAAM,MAAA;AAAA,UAClB,QAAA,EAAU,IAAI,KAAA,CAAM,QAAA;AAAA,UACpB,cAAA,EACE,GAAA,CAAI,KAAA,CAAM,aAAA,kCACP,MAAA,EAAA,EAAK,SAAA,EAAU,sBAAA,EAAwB,QAAA,EAAA,GAAA,CAAI,MAAM,aAAA,EAAc,CAAA,mBAEhEC,eAAA,CAAC,MAAA,EAAA,EAAK,WAAU,qBAAA,EACd,QAAA,EAAA;AAAA,4BAAAZ,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAA,EAAuB,QAAA,EAAA,GAAA,CAAI,MAAM,MAAA,EAAO,CAAA;AAAA,YACvD,GAAA,CAAI,MAAM,WAAA,oBACTA,cAAA,CAAC,UAAK,SAAA,EAAU,2BAAA,EAA6B,QAAA,EAAA,GAAA,CAAI,KAAA,CAAM,WAAA,EAAY;AAAA,WAAA,EAEvE,CAAA;AAAA,UAGJ,EAAA,EAAI;AAAA,YACF,IAAA,EAAM,EAAE,SAAA,EAAW,oBAAA,EAAqB;AAAA,YACxC,MAAA,EAAQ,EAAE,SAAA,EAAW,sBAAA,EAAuB;AAAA,YAC5C,YAAA,EAAc,EAAE,SAAA,EAAW,sBAAA,EAAuB;AAAA,YAClD,iBAAA,EAAmB,EAAE,SAAA,EAAW,sBAAA,EAAuB;AAAA,YACvD,OAAA,EAAS,EAAE,SAAA,EAAW,uBAAA,EAAwB;AAAA;AAAA,YAE9C,UAAA,EAAY,EAAE,OAAA,EAAS,CAAA;AAAE,WAC3B;AAAA,UAEC,cAAI,KAAA,CAAM;AAAA,SAAA;AAAA,QAzBN,IAAI,GAAA,IAAO;AAAA,OA2BnB;AAAA;AAAA,GACH;AAEJ,CAAC;ACxEM,IAAM,YAAA,GAAeC,gBAAAA,CAAgD,SAASY,aAAAA,CACnF;AAAA,EACE,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,OAAA;AAAA,EACP,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,SAASC,WAAA,EAAM;AACrB,EAAA,MAAM,KAAK,OAAA,IAAW,MAAA;AACtB,EAAA,MAAM,MAAA,GAAS,GAAG,EAAE,CAAA,KAAA,CAAA;AACpB,EAAA,MAAM,cAAc,KAAA,IAAS,IAAA;AAE7B,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,UAAA;AAAA,IACA,iBAAA;AAAA,IACA,aAAa,OAAO,CAAA,CAAA;AAAA,IACpB,aAAa,IAAI,CAAA,CAAA;AAAA,IACjB,KAAA,IAAS,iBAAA;AAAA,IACT,QAAA,IAAY,oBAAA;AAAA,IACZ;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACEF,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,SAAS,KAAA,EACtB,QAAA,EAAA;AAAA,IAAA,KAAA,oBACCA,eAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,iBAAA,EAAkB,SAAS,EAAA,EACzC,QAAA,EAAA;AAAA,MAAA,KAAA;AAAA,MACA,QAAA,oBACCZ,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,oBAAA,EAAqB,aAAA,EAAY,QAAO,QAAA,EAAA,GAAA,EAExD;AAAA,KAAA,EAEJ,CAAA;AAAA,oBAEFA,cAAAA;AAAA,MAACe,yBAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACR,QAAA,EAAU,GAAA;AAAA,QACV,OAAA,EAAS,EAAA;AAAA,QACT,QAAA;AAAA,QACA,QAAA;AAAA,QAEA,YAAA,EAAa,OAAA;AAAA,QACb,EAAA,EAAI;AAAA,UACF,IAAA,EAAM,EAAE,SAAA,EAAW,uBAAA,EAAwB;AAAA,UAC3C,KAAA,EAAO;AAAA,YACL,IAAA,EAAM;AAAA,cACJ,SAAA,EAAW,0CAAA;AAAA,cACX,kBAAA,EAAoB,cAAc,MAAA,GAAS,MAAA;AAAA,cAC3C,cAAA,EAAgB,QAAQ,IAAA,GAAO;AAAA;AACjC,WACF;AAAA;AAAA,UAEA,WAAA,EAAa,EAAE,SAAA,EAAW,yBAAA,EAA0B;AAAA,UACpD,KAAA,EAAO,EAAE,SAAA,EAAW,wBAAA,EAAyB;AAAA,UAC7C,IAAA,EAAM,EAAE,SAAA,EAAW,uBAAA,EAAwB;AAAA,UAC3C,IAAA,EAAM,EAAE,SAAA,EAAW,uBAAA;AAAwB,SAC7C;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,IACC,WAAA,oBACCH,eAAAA,CAAC,GAAA,EAAA,EAAE,EAAA,EAAI,MAAA,EAAQ,SAAA,EAAW,CAAA,cAAA,EAAiB,KAAA,GAAQ,wBAAA,GAA2B,EAAE,CAAA,CAAA,EAC9E,QAAA,EAAA;AAAA,sBAAAZ,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAA,EAAsB,eAAY,MAAA,EAC/C,QAAA,EAAA,KAAA,mBAAQA,cAAAA,CAACgB,qBAAA,EAAA,EAAc,CAAA,mBAAKhB,cAAAA,CAACiB,gBAAK,CAAA,EACrC,CAAA;AAAA,MACC;AAAA,KAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ,CAAC;AChHM,IAAM,KAAA,GAAQhB,gBAAAA,CAAwC,SAASiB,MAAAA,CACpE,EAAE,OAAA,GAAU,SAAA,EAAW,IAAA,GAAO,OAAA,EAAS,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,IAC/D,GAAA,EACA;AACA,EAAA,MAAM,QAAA,GAAWf,aAAmB,IAAI,CAAA;AAExC,EAAAC,0BAAoB,GAAA,EAAK,MAAM,QAAA,CAAS,OAAA,EAAS,YAA+B,CAAA;AAEhF,EAAA,MAAM,OAAA,GAAU,CAAC,UAAA,EAAY,CAAA,UAAA,EAAa,OAAO,CAAA,CAAA,EAAI,CAAA,UAAA,EAAa,IAAI,CAAA,CAAA,EAAI,SAAS,CAAA,CAChF,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACEJ,cAAAA;AAAA,IAACmB,WAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MACR,GAAA,EAAK,QAAA;AAAA,MACL,SAAA,EAAW,OAAA;AAAA,MACX,KAAA,EAAO,IAAA,KAAS,OAAA,GAAU,IAAA,GAAO,QAAA;AAAA,MAChC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;ACzBM,IAAM,MAAA,GAASlB,gBAAAA,CAA2C,SAASmB,OAAAA,CACxE;AAAA,EACE,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,OAAA;AAAA,EACP,WAAA;AAAA,EACA,YAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,OAAA,GAAU,CAAC,WAAA,EAAa,CAAA,WAAA,EAAc,OAAO,CAAA,CAAA,EAAI,CAAA,WAAA,EAAc,IAAI,CAAA,CAAA,EAAI,SAAS,CAAA,CACnF,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACER,eAAAA;AAAA,IAACS,aAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MAER,GAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAA,EAAW,OAAA;AAAA,MACV,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,WAAA,oBACCrB,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,iBAAA,EAAkB,aAAA,EAAY,QAC3C,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,QAED,QAAA;AAAA,QACA,YAAA,oBACCA,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,iBAAA,EAAkB,aAAA,EAAY,QAC3C,QAAA,EAAA,YAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ,CAAC;AC5CM,IAAM,IAAA,GAAOC,gBAAAA,CAAsC,SAASqB,KAAAA,CACjE,EAAE,OAAA,GAAU,QAAA,EAAU,OAAA,GAAU,KAAA,EAAO,WAAW,KAAA,EAAO,QAAA,EAAU,GAAG,KAAA,IACtE,GAAA,EACA;AACA,EAAA,MAAM,OAAA,GAAU,CAAC,SAAA,EAAW,CAAA,SAAA,EAAY,OAAO,CAAA,CAAA,EAAI,OAAA,IAAW,kBAAA,EAAoB,SAAS,CAAA,CACxF,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACEtB,cAAAA;AAAA,IAACuB,SAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MAER,GAAA;AAAA,MAEA,EAAA,EAAI;AAAA,QACF,IAAA,EAAM,EAAE,SAAA,EAAW,OAAA,EAAS,KAAA,EAAM;AAAA,QAClC,IAAA,EAAM,EAAE,SAAA,EAAW,eAAA,EAAgB;AAAA,QACnC,OAAA,EAAS,EAAE,SAAA,EAAW,kBAAA;AAAmB,OAC3C;AAAA,MACC,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;ACRD,IAAI,aAAA,GAAgB,KAAA;AACpB,IAAI,OAAO,aAAa,WAAA,EAAa;AACnC,EAAA,QAAA,CAAS,gBAAA,CAAiB,SAAA,EAAW,MAAO,aAAA,GAAgB,MAAO,IAAI,CAAA;AACvE,EAAA,QAAA,CAAS,gBAAA,CAAiB,aAAA,EAAe,MAAO,aAAA,GAAgB,OAAQ,IAAI,CAAA;AAC9E;AAEA,IAAM,cAAA,GAAiB,CAAC,MAAA,KAAkD;AACxE,EAAA,IAAI,OAAO,WAAW,QAAA,EAAU,OAAO,MAAM,IAAA,CAAK,QAAA,CAAS,gBAAA,CAA8B,MAAM,CAAC,CAAA;AAChG,EAAA,IAAI,MAAA,YAAkB,WAAA,EAAa,OAAO,CAAC,MAAM,CAAA;AACjD,EAAA,OAAO,OAAO,OAAA,GAAU,CAAC,MAAA,CAAO,OAAO,IAAI,EAAC;AAC9C,CAAA;AAOO,SAAS,OAAA,CAAQ;AAAA,EACtB,MAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA,GAAO,OAAA;AAAA,EACP,QAAA,GAAW,QAAA;AAAA,EACX,KAAA,GAAQ,MAAA;AAAA,EACR,SAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA,GAAW,IAAA;AAAA,EACX,EAAA;AAAA,EACA;AACF,CAAA,EAAiB;AACf,EAAA,MAAM,SAAST,WAAAA,EAAM;AACrB,EAAA,MAAM,YAAY,EAAA,IAAM,MAAA;AAExB,EAAAU,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,QAAA,EAAU;AACf,IAAA,MAAM,QAAA,GAAW,eAAe,MAAM,CAAA;AACtC,IAAA,QAAA,CAAS,QAAQ,CAAC,OAAA,KAAY,QAAQ,YAAA,CAAa,kBAAA,EAAoB,SAAS,CAAC,CAAA;AACjF,IAAA,OAAO,MAAM,SAAS,OAAA,CAAQ,CAAC,YAAY,OAAA,CAAQ,eAAA,CAAgB,kBAAkB,CAAC,CAAA;AAAA,EACxF,CAAA,EAAG,CAAC,MAAA,EAAQ,SAAA,EAAW,QAAQ,CAAC,CAAA;AAEhC,EAAA,MAAM,OAAA,GAAU,CAAC,YAAA,EAAc,CAAA,YAAA,EAAe,IAAI,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAEzF,EAAA,MAAM,EAAA,GAAgC;AAAA,IACpC,IAAA,EAAM,CAAC,OAAA,KAAY;AACjB,MAAA,MAAM,IAAA,GAAQ,OAAA,EAA+C,KAAA,EAAO,QAAA,IAAY,QAAA;AAChF,MAAA,OAAO,EAAE,WAAW,CAAA,EAAG,OAAO,gBAAgB,IAAI,CAAA,CAAA,EAAI,eAAe,KAAA,EAAM;AAAA,IAC7E,CAAA;AAAA,IACA,KAAA,EAAO,EAAE,SAAA,EAAW,mBAAA,EAAoB;AAAA,IACxC,IAAA,EAAM,EAAE,SAAA,EAAW,kBAAA;AAAmB,GACxC;AAEA,EAAA,uBACExB,cAAAA;AAAA,IAACyB,eAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MACR,EAAA,EAAI,SAAA;AAAA,MACJ,MAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,cAAc,CAAC,CAAA,KAAM,CAAA,CAAE,aAAA,EAAe,SAAS,OAAA,IAAW,aAAA;AAAA,MAC1D,EAAA;AAAA,MAEC,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ;AClCA,IAAM,KAAA,GAAsB,CAAC,SAAA,EAAW,WAAA,EAAa,YAAY,YAAY,CAAA;AAC7E,IAAM,KAAA,GAAQ,CAAC,KAAA,EAAoB,MAAA,KAAmB,MAAM,KAAA,IAAS,KAAA,CAAM,MAAA,GAAS,KAAA,CAAM,MAAM,CAAA;AAChG,IAAM,KAAA,GAAQ,CAAC,KAAA,EAAoB,IAAA,KACjC,MAAM,IAAA,KAAS,IAAA,KAAS,QAAQ,GAAA,GAAM,GAAA,CAAA;AAcxC,IAAM,OAAA,GAAU,CAAC,EAAA,KAA0B;AACzC,EAAA,MAAM,GAAA,GAAM,iBAAiB,EAAE,CAAA;AAC/B,EAAA,MAAM,IAAI,CAAC,IAAA,KAAiB,IAAI,gBAAA,CAAiB,IAAI,EAAE,IAAA,EAAK;AAC5D,EAAA,MAAM,KAAK,CAAC,IAAA,KAAiB,UAAA,CAAW,CAAA,CAAE,IAAI,CAAC,CAAA;AAC/C,EAAA,OAAO;AAAA,IACL,GAAA,EAAK,CAAC,GAAA,EAAK,GAAA,KAAQ,EAAE,CAAA,sBAAA,EAAyB,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAA;AAAA,IAC1D,KAAA,EAAO,EAAE,2BAA2B,CAAA;AAAA,IACpC,KAAA,EAAO,EAAE,4BAA4B,CAAA;AAAA,IACrC,IAAA,EAAM,EAAE,gCAAgC,CAAA;AAAA,IACxC,UAAA,EAAY,EAAE,mCAAmC,CAAA;AAAA,IACjD,YAAA,EAAc,EAAE,iCAAiC,CAAA;AAAA,IACjD,YAAA,EAAc,EAAE,8BAA8B,CAAA;AAAA,IAC9C,KAAA,EAAO;AAAA,MACL,MAAA,EAAQ,EAAE,qDAAqD,CAAA;AAAA,MAC/D,IAAA,EAAM,GAAG,mDAAmD,CAAA;AAAA,MAC5D,MAAA,EAAQ,MAAA,CAAO,CAAA,CAAE,qDAAqD,CAAC,CAAA;AAAA,MACvE,UAAA,EACE,EAAA,CAAG,qDAAqD,CAAA,GACxD,GAAG,mDAAmD;AAAA;AAC1D,GACF;AACF,CAAA;AAGA,IAAM,OAAA,GAAU,CAAC,GAAA,EAAa,IAAA,KAAiB;AAC7C,EAAA,MAAM,IAAI,QAAA,CAAS,GAAA,CAAI,QAAQ,GAAA,EAAK,EAAE,GAAG,EAAE,CAAA;AAC3C,EAAA,OAAO,CAAA,KAAA,EAAS,CAAA,IAAK,EAAA,GAAM,GAAG,CAAA,EAAA,EAAM,CAAA,IAAK,CAAA,GAAK,GAAG,CAAA,EAAA,EAAK,CAAA,GAAI,GAAG,CAAA,EAAA,EAAK,IAAI,CAAA,CAAA,CAAA;AACxE,CAAA;AAGA,IAAM,IAAA,GAAO,CAAC,GAAA,MAAiC;AAAA,EAC7C,EAAA,EAAI,QAAA;AAAA,EACJ,kBAAkB,KAAA,EAAO;AACvB,IAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,OAAA,EAAS,iBAAA,GAAoB,CAAC,CAAA;AAClD,IAAA,IAAI,CAAC,KAAA,EAAO;AACZ,IAAA,MAAM,EAAE,GAAA,EAAK,SAAA,EAAU,GAAI,KAAA;AAC3B,IAAA,GAAA,CAAI,IAAA,EAAK;AACT,IAAA,GAAA,CAAI,WAAA,GAAc,GAAA;AAClB,IAAA,GAAA,CAAI,SAAA,GAAY,CAAA;AAChB,IAAA,GAAA,CAAI,SAAA,EAAU;AACd,IAAA,GAAA,CAAI,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,CAAA,EAAG,UAAU,GAAG,CAAA;AACzC,IAAA,GAAA,CAAI,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,CAAA,EAAG,UAAU,MAAM,CAAA;AAC5C,IAAA,GAAA,CAAI,MAAA,EAAO;AACX,IAAA,GAAA,CAAI,OAAA,EAAQ;AAAA,EACd;AACF,CAAA,CAAA;AAMA,IAAM,YAAA,GAA+B;AAAA,EACnC,EAAA,EAAI,SAAA;AAAA,EACJ,mBAAmB,KAAA,EAAO;AACxB,IAAA,KAAA,CAAM,IAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,CAAC,GAAG,MAAA,KAAW;AACzC,MAAA,MAAM,IAAA,GAAO,KAAA,CAAM,cAAA,CAAe,MAAM,CAAA;AACxC,MAAA,MAAM,SAAS,IAAA,CAAK,IAAA;AASpB,MAAA,MAAA,CAAO,OAAA,CAAQ,CAAC,KAAA,EAAO,CAAA,KAAM;AAC3B,QAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA;AAC1B,QAAA,MAAM,MAAA,GAAS,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA;AAC3B,QAAA,KAAA,CAAM,OAAO,KAAA,GAAA,CAAS,KAAA,CAAM,IAAI,KAAA,CAAM,CAAA,IAAK,IAAI,KAAA,CAAM,CAAA;AACrD,QAAA,KAAA,CAAM,OAAO,MAAA,GAAA,CAAU,KAAA,CAAM,IAAI,MAAA,CAAO,CAAA,IAAK,IAAI,KAAA,CAAM,CAAA;AACvD,QAAA,KAAA,CAAM,OAAO,KAAA,CAAM,CAAA;AACnB,QAAA,KAAA,CAAM,OAAO,KAAA,CAAM,CAAA;AAAA,MACrB,CAAC,CAAA;AACD,MAAA,IAAI,IAAA,CAAK,OAAA;AACP,QAAC,IAAA,CAAK,QAAmD,cAAA,GAAiB,IAAA;AAAA,IAC9E,CAAC,CAAA;AAAA,EACH;AACF,CAAA;AAEA,IAAM,QAAA,GAAW,CAAC,IAAA,EAA6B,KAAA,KAC7C,IAAA,EAAM,MAAA,GAAS,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA,GAAI,MAAA,CAAO,KAAK,CAAA;AAY3C,SAAS,KAAA,CAAM;AAAA,EACpB,IAAA,GAAO,MAAA;AAAA,EACP,OAAA,GAAU,KAAA;AAAA,EACV,MAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA,GAAY,OAAA;AAAA,EACZ,OAAA;AAAA,EACA,MAAA,GAAS,GAAA;AAAA,EACT,EAAA;AAAA,EACA;AACF,CAAA,EAAe;AACb,EAAA,MAAM,IAAA,GAAOtB,aAAuB,IAAI,CAAA;AACxC,EAAA,MAAM,KAAA,GAAQA,aAA0B,IAAI,CAAA;AAC5C,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIE,cAAAA,EAAe;AACvC,EAAAqB,qBAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,KAAK,OAAA,EAAS,OAAA,CAAQ,OAAA,CAAQ,IAAA,CAAK,OAAO,CAAC,CAAA;AAAA,EACjD,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,aAAa,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,OAAO,CAAA;AAExD,EAAA,MAAM,IAAA,GAAOC,cAA+C,MAAM;AAChE,IAAA,IAAI,CAAC,MAAM,OAAO,MAAA;AAClB,IAAA,OAAO;AAAA,MACL,MAAA;AAAA,MACA,QAAA,EAAU,MAAA,CAAO,GAAA,CAAI,CAAC,GAAG,CAAA,KAAM;AAC7B,QAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,EAAG,KAAA,CAAM,CAAA,EAAG,IAAI,CAAC,CAAA;AAChD,QAAA,IAAI,SAAS,KAAA,EAAO;AAElB,UAAA,MAAM,IAAA,GAAO,CAAC,OAAA,IAAW,CAAA,KAAM,OAAO,MAAA,GAAS,CAAA;AAC/C,UAAA,OAAO;AAAA,YACL,IAAA,EAAM,KAAA;AAAA,YACN,OAAO,CAAA,CAAE,KAAA;AAAA,YACT,MAAM,CAAA,CAAE,IAAA;AAAA,YACR,OAAA,EAAS,CAAA,CAAE,IAAA,KAAS,OAAA,GAAU,IAAA,GAAO,GAAA;AAAA,YACrC,eAAA,EAAiB,GAAA;AAAA,YACjB,oBAAA,EAAsB,GAAA;AAAA,YACtB,YAAA,EAAc,EAAA;AAAA,YACd,aAAA,EAAe,KAAA;AAAA,YACf,YAAA,EAAc,IAAA,GAAO,EAAE,OAAA,EAAS,CAAA,EAAG,QAAA,EAAU,CAAA,EAAG,UAAA,EAAY,CAAA,EAAG,WAAA,EAAa,CAAA,EAAE,GAAI;AAAA,WACpF;AAAA,QACF;AACA,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,MAAA;AAAA,UACN,OAAO,CAAA,CAAE,KAAA;AAAA,UACT,MAAM,CAAA,CAAE,IAAA;AAAA,UACR,OAAA,EAAS,CAAA,CAAE,IAAA,KAAS,OAAA,GAAU,IAAA,GAAO,GAAA;AAAA,UACrC,WAAA,EAAa,GAAA;AAAA,UACb,WAAA,EAAa,CAAA;AAAA,UACb,OAAA,EAAS,GAAA;AAAA,UACT,WAAA,EAAa,CAAA;AAAA,UACb,gBAAA,EAAkB,CAAA;AAAA,UAClB,qBAAA,EAAuB,CAAA;AAAA,UACvB,uBAAuB,IAAA,CAAK,UAAA;AAAA,UAC5B,yBAAA,EAA2B,GAAA;AAAA,UAC3B,IAAA,EAAM,QAAA;AAAA,UACN,eAAA,EAAiB,CAAC,GAAA,KAAmC;AACnD,YAAA,MAAM,IAAA,GAAO,IAAI,KAAA,CAAM,SAAA;AACvB,YAAA,IAAI,CAAC,IAAA,EAAM,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAClC,YAAA,MAAM,OAAA,GAAU,GAAA,CAAI,KAAA,CAAM,GAAA,CAAI,oBAAA,CAAqB,GAAG,IAAA,CAAK,GAAA,EAAK,CAAA,EAAG,IAAA,CAAK,MAAM,CAAA;AAC9E,YAAA,OAAA,CAAQ,YAAA,CAAa,CAAA,EAAG,OAAA,CAAQ,GAAA,EAAK,GAAG,CAAC,CAAA;AACzC,YAAA,OAAA,CAAQ,YAAA,CAAa,CAAA,EAAG,OAAA,CAAQ,GAAA,EAAK,IAAI,CAAC,CAAA;AAC1C,YAAA,OAAO,OAAA;AAAA,UACT;AAAA,SACF;AAAA,MACF,CAAC;AAAA,KACH;AAAA,EACF,GAAG,CAAC,IAAA,EAAM,QAAQ,MAAA,EAAQ,IAAA,EAAM,OAAO,CAAC,CAAA;AAExC,EAAA,MAAM,OAAA,GAAUA,cAAkD,MAAM;AACtE,IAAA,IAAI,CAAC,MAAM,OAAO,MAAA;AAClB,IAAA,MAAM,KAAA,GAAQ,EAAE,GAAG,IAAA,CAAK,OAAO,MAAA,EAAQ,IAAA,CAAK,MAAM,MAAA,EAAgB;AAClE,IAAA,MAAM,KAAA,GAAQ,CAAC,IAAA,EAA6B,OAAA,MAAsB;AAAA,MAChE,QAAA,EAAU,UAAW,OAAA,GAAqB,MAAA;AAAA,MAC1C,OAAA;AAAA,MACA,GAAA,EAAK,MAAM,GAAA,IAAO,CAAA;AAAA,MAClB,KAAK,IAAA,EAAM,GAAA;AAAA;AAAA,MAEX,MAAA,EAAQ,EAAE,OAAA,EAAS,KAAA,EAAO,MAAM,CAAC,CAAA,EAAG,CAAC,CAAA,EAAE;AAAA,MACvC,IAAA,EAAM,OAAA,GACF,EAAE,eAAA,EAAiB,OAAO,SAAA,EAAW,KAAA,EAAM,GAC3C,EAAE,OAAO,IAAA,CAAK,KAAA,EAAO,SAAA,EAAW,CAAA,EAAG,WAAW,KAAA,EAAM;AAAA,MACxD,KAAA,EAAO;AAAA,QACL,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,IAAA,EAAM,KAAA;AAAA,QACN,OAAA,EAAS,CAAA;AAAA,QACT,UAAU,IAAA,EAAM,QAAA;AAAA,QAChB,UAAU,CAAC,KAAA,KAA2B,SAAS,IAAA,EAAM,MAAA,CAAO,KAAK,CAAC;AAAA;AACpE,KACF,CAAA;AACA,IAAA,OAAO;AAAA,MACL,UAAA,EAAY,IAAA;AAAA,MACZ,mBAAA,EAAqB,KAAA;AAAA,MACrB,SAAA,EAAW,KAAA;AAAA,MACX,WAAA,EAAa,EAAE,IAAA,EAAM,OAAA,EAAS,WAAW,KAAA,EAAM;AAAA,MAC/C,QAAQ,EAAE,OAAA,EAAS,EAAE,GAAA,EAAK,GAAE,EAAE;AAAA,MAC9B,MAAA,EAAQ;AAAA,QACN,CAAA,EAAG;AAAA,UACD,OAAA;AAAA,UACA,MAAA,EAAQ,EAAE,OAAA,EAAS,KAAA,EAAM;AAAA,UACzB,IAAA,EAAM,EAAE,OAAA,EAAS,KAAA,EAAM;AAAA;AAAA,UAEvB,KAAA,EAAO,EAAE,KAAA,EAAO,IAAA,CAAK,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,WAAA,EAAa,CAAA,EAAG,OAAA,EAAS,CAAA,EAAG,eAAA,EAAiB,CAAA;AAAE,SAC1F;AAAA,QACA,CAAA,EAAG,KAAA,CAAM,KAAA,EAAO,KAAK,CAAA;AAAA,QACrB,GAAI,aAAa,EAAE,EAAA,EAAI,MAAM,MAAA,EAAQ,IAAI,CAAA,EAAE,GAAI;AAAC,OAClD;AAAA,MACA,OAAA,EAAS;AAAA,QACP,MAAA,EAAQ,EAAE,OAAA,EAAS,KAAA,EAAM;AAAA,QACzB,OAAA,EAAS;AAAA,UACP,iBAAiB,IAAA,CAAK,YAAA;AAAA,UACtB,YAAY,IAAA,CAAK,YAAA;AAAA,UACjB,WAAW,IAAA,CAAK,YAAA;AAAA,UAChB,SAAA,EAAW,KAAA;AAAA,UACX,QAAA,EAAU,EAAE,GAAG,KAAA,EAAO,QAAQ,GAAA,EAAa;AAAA,UAC3C,OAAA,EAAS,EAAE,CAAA,EAAG,EAAA,EAAI,GAAG,CAAA,EAAE;AAAA,UACvB,YAAA,EAAc,CAAA;AAAA,UACd,aAAA,EAAe,IAAA;AAAA,UACf,QAAA,EAAU,CAAA;AAAA,UACV,SAAA,EAAW,IAAA,KAAS,KAAA,GAAQ,CAAA,GAAI,CAAA;AAAA,UAChC,SAAA,EAAW;AAAA,YACT,KAAA,EAAO,CAAC,IAAA,KAAS;AACf,cAAA,MAAM,CAAA,GAAI,MAAA,CAAO,IAAA,CAAK,YAAY,CAAA;AAClC,cAAA,MAAM,IAAA,GAAO,CAAA,CAAE,IAAA,KAAS,OAAA,GAAU,MAAA,GAAS,KAAA;AAC3C,cAAA,OAAO,CAAA,EAAG,QAAA,CAAS,IAAA,EAAM,IAAA,CAAK,MAAA,CAAO,KAAK,CAAC,CAAC,CAAA,EAAA,EAAK,CAAA,CAAE,KAAK,CAAA,CAAA;AAAA,YAC1D,CAAA;AAAA,YACA,eAAA,EAAiB,OAAO,EAAE,UAAA,EAAY,SAAS,KAAA,GAAQ,MAAA,GAAS,MAAA,EAAQ,QAAA,EAAU,CAAA,EAAE;AAAA;AACtF;AACF;AACF,KACF;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,KAAA,EAAO,QAAQ,UAAA,EAAY,MAAA,EAAQ,IAAA,EAAM,OAAO,CAAC,CAAA;AAE3D,EAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,KAAA,IAAS,OAAO,CAAA;AACrC,EAAA,MAAM,OAAA,GAAU,CAAC,UAAA,EAAY,IAAA,IAAQ,gBAAA,EAAkB,SAAS,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAE1F,EAAA,uBACEf,eAAAA,CAAC,KAAA,EAAA,EAAI,KAAK,IAAA,EAAM,EAAA,EAAQ,WAAW,OAAA,EAChC,QAAA,EAAA;AAAA,IAAA,IAAA,oBACCA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACZ,QAAA,EAAA;AAAA,QAAA,KAAA,oBAASZ,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mBAAmB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,QAClD,IAAA,oBACCY,eAAAA,CAAAgB,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,0BAAA5B,cAAAA,CAAC,QAAA,EAAA,EAAO,GAAA,EAAK,KAAA,EAAO,MAAK,QAAA,EAAS,SAAA,EAAU,gBAAA,EAAiB,YAAA,EAAY,WACvE,QAAA,kBAAAA,cAAAA,CAAC6B,gBAAA,EAAA,EAAS,aAAA,EAAY,QAAO,CAAA,EAC/B,CAAA;AAAA,0BACA7B,eAAC,OAAA,EAAA,EAAQ,MAAA,EAAQ,OAAO,OAAA,EAAS,IAAA,EAAM,MAAK,MAAA,EAAO;AAAA,SAAA,EACrD;AAAA,OAAA,EAEJ,CAAA;AAAA,MACC,2BAAWA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAqB,QAAA,EAAA,OAAA,EAAQ;AAAA,KAAA,EAC1D,CAAA;AAAA,oBAEFY,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,EAAA;AAAA,sBAAAZ,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EAAiB,KAAA,EAAO,EAAE,MAAA,EAAO,EAC7C,QAAA,EAAA,IAAA,IAAQ,OAAA,oBACPA,cAAAA;AAAA,QAAC8B,WAAA;AAAA,QAAA;AAAA,UAGC,IAAA;AAAA,UACA,IAAA;AAAA,UACA,OAAA;AAAA,UACA,OAAA,EAAS,IAAA,KAAS,MAAA,GAAS,CAAC,YAAA,EAAwB,KAAK,IAAA,CAAM,IAAI,CAAW,CAAA,GAAI,EAAC;AAAA,UACnF,KAAA,EAAM,MAAA;AAAA,UACN,MAAA,EAAO,MAAA;AAAA,UACP,EAAA,EAAI;AAAA,YACF,IAAA,EAAM,EAAE,SAAA,EAAW,uBAAA,EAAwB;AAAA,YAC3C,MAAA,EAAQ;AAAA,cACN,IAAA,EAAM,KAAA;AAAA,cACN,YAAA,EAAc,KAAA,IAAS,MAAA,CAAO,GAAA,CAAI,CAAC,MAAM,CAAA,CAAE,KAAK,CAAA,CAAE,IAAA,CAAK,IAAI;AAAA;AAC7D;AACF,SAAA;AAAA,QAbK;AAAA,OAcP,EAEJ,CAAA;AAAA,MACC,OAAO,MAAA,GAAS,CAAA,oBACf9B,cAAAA,CAAC,QAAG,SAAA,EAAU,kBAAA,EACX,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,qBACdY,eAAAA,CAAC,IAAA,EAAA,EAAiB,WAAU,uBAAA,EAE1B,QAAA,EAAA;AAAA,wBAAAZ,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,kBAAA;AAAA,YACV,KAAA,EAAO;AAAA,cACL,eAAA,EAAiB,CAAA,0BAAA,EAA6B,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,CAAA,EAAG,IAAI,CAAC,CAAA,CAAA;AAAA,aAC7E;AAAA,YACA,aAAA,EAAY;AAAA;AAAA,SACd;AAAA,QACC,CAAA,CAAE;AAAA,OAAA,EAAA,EATI,CAAA,CAAE,KAUX,CACD,CAAA,EACH;AAAA,KAAA,EAEJ,CAAA;AAAA,oBAEAY,eAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,iBAAA,EACd,QAAA,EAAA;AAAA,MAAA,KAAA,oBAASZ,cAAAA,CAAC,SAAA,EAAA,EAAS,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,sBAC1BA,cAAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAAY,gBAAC,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAZ,eAAC,IAAA,EAAA,EAAG,CAAA;AAAA,QACH,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,qBACXA,cAAAA,CAAC,IAAA,EAAA,EAAiB,KAAA,EAAM,KAAA,EACrB,QAAA,EAAA,CAAA,CAAE,KAAA,EAAA,EADI,CAAA,CAAE,KAEX,CACD;AAAA,OAAA,EACH,CAAA,EACF,CAAA;AAAA,sBACAA,cAAAA,CAAC,OAAA,EAAA,EACE,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,MAAA,EAAQ,KAAA,qBACnBY,eAAAA,CAAC,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAZ,cAAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAM,KAAA,EAAO,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,QACvB,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,KAAM;AACjB,UAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,IAAA,CAAK,KAAK,CAAA;AAC1B,UAAA,MAAM,IAAA,GAAO,CAAA,CAAE,IAAA,KAAS,OAAA,GAAU,MAAA,GAAS,KAAA;AAC3C,UAAA,uBAAOA,cAAAA,CAAC,IAAA,EAAA,EAAkB,QAAA,EAAA,KAAA,IAAS,IAAA,GAAO,EAAA,GAAK,QAAA,CAAS,IAAA,EAAM,KAAK,CAAA,EAAA,EAAnD,CAAA,CAAE,KAAmD,CAAA;AAAA,QACvE,CAAC;AAAA,OAAA,EAAA,EANM,MAOT,CACD,CAAA,EACH;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AClWO,IAAM,QAAA,GAAWC,gBAAAA,CAA4C,SAAS8B,SAAAA,CAC3E;AAAA,EACE,KAAA;AAAA,EACA,SAAA,GAAY,IAAA;AAAA,EACZ,QAAA,GAAW,MAAA;AAAA,EACX,SAAA,GAAY,SAAA;AAAA,EACZ,OAAA,GAAU,KAAA;AAAA,EACV,aAAA,GAAgB,KAAA;AAAA,EAChB,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,EAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,SAASjB,WAAAA,EAAM;AACrB,EAAA,MAAM,UAAU,EAAA,IAAM,MAAA;AAEtB,EAAA,MAAM,QAAA,GAAWX,aAAgC,IAAI,CAAA;AACrD,EAAA,MAAM,WAAA,GAAc6B,iBAAA;AAAA,IAClB,CAAC,KAAA,KAAmC;AAClC,MAAA,QAAA,CAAS,OAAA,GAAU,KAAA;AACnB,MAAA,IAAI,OAAO,GAAA,KAAQ,UAAA,EAAY,GAAA,CAAI,KAAK,CAAA;AAAA,WAAA,IAC/B,GAAA,MAAS,OAAA,GAAU,KAAA;AAAA,IAC9B,CAAA;AAAA,IACA,CAAC,GAAG;AAAA,GACN;AAGA,EAAAR,gBAAU,MAAM;AACd,IAAA,IAAI,SAAS,OAAA,EAAS,QAAA,CAAS,OAAA,CAAQ,aAAA,GAAgB,iBAAiB,CAAC,OAAA;AAAA,EAC3E,CAAA,EAAG,CAAC,aAAA,EAAe,OAAO,CAAC,CAAA;AAE3B,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,aAAA;AAAA,IACA,gBAAgB,QAAQ,CAAA,CAAA;AAAA,IACxB,sBAAsB,SAAS,CAAA,CAAA;AAAA,IAC/B,aAAA,IAAiB,CAAC,OAAA,IAAW,4BAAA;AAAA,IAC7B,QAAA,IAAY,uBAAA;AAAA,IACZ;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACEZ,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,SAAS,KAAA,EACvB,QAAA,EAAA;AAAA,oBAAAZ,cAAAA;AAAA,MAACiC,iBAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACR,QAAA,EAAU,WAAA;AAAA,QACV,OAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,IAAA;AAAA,QACA,KAAA;AAAA,QACA,IAAA,kBAAMjC,cAAAA,CAACkC,aAAA,EAAA,EAAM,MAAM,EAAA,EAAI,CAAA;AAAA,QACvB,EAAA,EAAI;AAAA,UACF,IAAA,EAAM,EAAE,SAAA,EAAW,sBAAA,EAAuB;AAAA,UAC1C,KAAA,EAAO,EAAE,SAAA,EAAW,oBAAA,EAAqB;AAAA,UACzC,GAAA,EAAK,EAAE,SAAA,EAAW,kBAAA,EAAmB;AAAA,UACrC,IAAA,EAAM,EAAE,SAAA,EAAW,mBAAA,EAAqB,eAAe,IAAA;AAAK;AAC9D;AAAA,KACF;AAAA,oBAEAlC,cAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,CAAA,kBAAA,EAAqB,SAAA,GAAY,EAAA,GAAK,6BAA6B,CAAA,CAAA;AAAA,QAC9E,OAAA,EAAS,OAAA;AAAA,QAER,QAAA,EAAA;AAAA;AAAA;AACH,GAAA,EACF,CAAA;AAEJ,CAAC;AC/EM,IAAM,IAAA,GAAOC,gBAAAA,CAAsC,SAASkC,KAAAA,CACjE;AAAA,EACE,KAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,OAAA;AAAA,EACP,WAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,QAAA;AAAA,EACA,WAAA,GAAc,SAAA;AAAA,EACd,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,SAAA;AAAA,IACA,YAAY,OAAO,CAAA,CAAA;AAAA,IACnB,YAAY,IAAI,CAAA,CAAA;AAAA,IAChB,QAAA,IAAY,mBAAA;AAAA,IACZ;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,QAAQ,CAAA,IAAK,CAAC,QAAA;AACxC,EAAA,MAAM,WAAW,YAAA,KAAiB,QAAA,mBAAWnC,cAAAA,CAACoC,aAAE,CAAA,GAAK,IAAA,CAAA;AAErD,EAAA,uBACEpC,cAAAA;AAAA,IAACqC,SAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MAIR,IAAI,EAAE,IAAA,EAAM,EAAE,GAAA,EAAK,YAAA,EAAc,QAAU,EAAE;AAAA,MAC7C,SAAA,EAAW,OAAA;AAAA,MACX,KAAA;AAAA,MACA,iBAAe,QAAA,IAAY,MAAA;AAAA,MAC3B,IAAA,EACE,WAAA,GACI,sBACErC,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sCAAA,EAAuC,aAAA,EAAY,MAAA,EAChE,QAAA,EAAA,WAAA,EACH,CAAA,GAEF,MAAA;AAAA,MAEN,SAAA,EAAW,QAAQ,QAAQ,CAAA;AAAA,MAC3B,UAAA,EAAY,CAAC,OAAA,KAAY;AACvB,QAAA,IAAI,CAAC,SAAA,EAAW;AACd,UAAA,uBACEA,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,uCAAA,EAAwC,aAAA,EAAY,QACjE,QAAA,EAAA,QAAA,EACH,CAAA;AAAA,QAEJ;AACA,QAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,OAAA,EAAS,SAAA,KAC/B,OAAA,CAAQ,SAAA;AACV,QAAA,uBACEA,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,IAAA;AAAA,YACA,QAAA;AAAA,YACA,OAAA;AAAA,YACA,SAAA;AAAA,YACA,SAAA,EAAU,uDAAA;AAAA,YACV,YAAA,EAAY,WAAA;AAAA,YAEX,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,MAEJ,CAAA;AAAA,MACA,UAAU,QAAA,GAAW,CAAC,UAAU,QAAA,CAAS,KAAK,MAAM,KAAA,GAAQ,MAAA;AAAA,MAC3D,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;ACrGM,IAAM,OAAA,GAAUC,gBAAAA,CAAyC,SAASqC,QAAAA,CACvE,EAAE,WAAA,GAAc,YAAA,EAAc,OAAA,GAAU,OAAA,EAAS,SAAA,EAAW,KAAA,EAAO,GAAG,KAAA,IACtE,GAAA,EACA;AAEA,EAAA,MAAM,QAAA,GAAWnC,aAAqB,IAAI,CAAA;AAC1C,EAAAC,0BAAoB,GAAA,EAAK,MAAM,QAAA,CAAS,OAAA,EAAS,YAA8B,CAAA;AAE/E,EAAA,MAAM,OAAA,GAAU,CAAC,YAAA,EAAc,CAAA,YAAA,EAAe,WAAW,CAAA,CAAA,EAAI,CAAA,YAAA,EAAe,OAAO,CAAA,CAAA,EAAI,SAAS,CAAA,CAC7F,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACEJ,cAAAA;AAAA,IAACuC,eAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MACR,GAAA,EAAK,QAAA;AAAA,MACL,MAAA,EAAQ,WAAA;AAAA,MAER,EAAA,EAAI;AAAA,QACF,IAAA,EAAM,EAAE,SAAA,EAAW,OAAA,EAAS,KAAA,EAAM;AAAA,QAClC,OAAA,EAAS,EAAE,SAAA,EAAW,qBAAA;AAAsB,OAC9C;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;ACFM,IAAM,UAAA,GAAatC,gBAAAA,CAA+C,SAASuC,WAAAA,CAChF;AAAA,EACE,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,OAAA;AAAA,EACP,IAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,OAAA;AAAA,EACA,eAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AAGA,EAAA,MAAM,KAAA,GAAQrC,aAAiC,IAAI,CAAA;AACnD,EAAA,MAAM,KAAA,GAAQ6B,iBAAAA;AAAA,IACZ,CAAC,QAAA,KAAuC;AACtC,MAAA,KAAA,CAAM,OAAA,GAAU,QAAA;AAChB,MAAA,IAAI,OAAO,GAAA,KAAQ,UAAA,EAAY,GAAA,CAAI,QAAQ,CAAA;AAAA,WAAA,IAClC,GAAA,MAAS,OAAA,GAAU,QAAA;AAAA,IAC9B,CAAA;AAAA,IACA,CAAC,GAAG;AAAA,GACN;AACA,EAAA,MAAM,KAAA,GAAQ,OAAA,IAAW,KAAA,CAAM,YAAY,CAAA;AAE3C,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,gBAAA;AAAA,IACA,mBAAmB,OAAO,CAAA,CAAA;AAAA,IAC1B,mBAAmB,IAAI,CAAA,CAAA;AAAA,IACvB;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACEpB,eAAAA,CAAAgB,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA5B,cAAAA;AAAA,MAACqB,aAAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QAER,GAAA,EAAK,KAAA;AAAA,QACL,IAAA;AAAA,QACA,SAAA,EAAW,OAAA;AAAA,QACV,GAAG,KAAA;AAAA,QAEJ,0BAAArB,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,sBAAA,EAAuB,aAAA,EAAY,QAChD,QAAA,EAAA,IAAA,EACH;AAAA;AAAA,KACF;AAAA,IACC,KAAA,KAAU,yBACTA,cAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAQ,KAAA;AAAA,QACR,OAAA,EAAS,KAAA;AAAA,QACT,QAAA,EAAU,eAAA;AAAA,QACV,QAAA,EAAU,KAAA,KAAU,KAAA,CAAM,YAAY;AAAA;AAAA;AACxC,GAAA,EAEJ,CAAA;AAEJ,CAAC;AC1CD,IAAM,QAAA,GACJ,2IAAA;AASK,SAAS,MAAA,CAAO;AAAA,EACrB,OAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA,GAAO,OAAA;AAAA,EACP,QAAA,GAAW,MAAA;AAAA,EACX,IAAA,GAAO,OAAA;AAAA,EACP,KAAA,GAAQ,IAAA;AAAA,EACR,MAAA;AAAA,EACA,SAAA,GAAY,QAAA;AAAA,EACZ,UAAA,GAAa,QAAA;AAAA,EACb,MAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA;AACF,CAAA,EAAgB;AACd,EAAA,MAAM,SAASc,WAAAA,EAAM;AACrB,EAAA,MAAM,OAAA,GAAU,GAAG,MAAM,CAAA,MAAA,CAAA;AACzB,EAAA,MAAM,UAAA,GAAa,GAAG,MAAM,CAAA,SAAA,CAAA;AAC5B,EAAA,MAAM,QAAA,GAAWX,aAAuB,IAAI,CAAA;AAC5C,EAAA,MAAM,OAAA,GAAUA,aAA2B,IAAI,CAAA;AAG/C,EAAAqB,gBAAU,MAAM;AACd,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,OAAA,CAAQ,UAAU,QAAA,CAAS,aAAA;AAC3B,MAAA;AAAA,IACF;AACA,IAAA,OAAA,CAAQ,SAAS,KAAA,EAAM;AACvB,IAAA,OAAA,CAAQ,OAAA,GAAU,IAAA;AAAA,EACpB,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAKZ,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAInB,eAAgC,IAAI,CAAA;AAClE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,eAAS,KAAK,CAAA;AAC5C,EAAAmB,gBAAU,MAAM;AACd,IAAA,IAAI,CAAC,OAAA,EAAS;AACd,IAAA,MAAM,QAAQ,MAAM,UAAA,CAAW,OAAA,CAAQ,YAAA,GAAe,QAAQ,YAAY,CAAA;AAC1E,IAAA,KAAA,EAAM;AACN,IAAA,MAAM,QAAA,GAAW,IAAI,cAAA,CAAe,KAAK,CAAA;AACzC,IAAA,QAAA,CAAS,QAAQ,OAAO,CAAA;AACxB,IAAA,CAAC,GAAG,OAAA,CAAQ,QAAQ,CAAA,CAAE,OAAA,CAAQ,CAAC,KAAA,KAAU,QAAA,CAAS,OAAA,CAAQ,KAAK,CAAC,CAAA;AAChE,IAAA,OAAO,MAAM,SAAS,UAAA,EAAW;AAAA,EACnC,CAAA,EAAG,CAAC,OAAA,EAAS,QAAQ,CAAC,CAAA;AAGtB,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAAyB;AAC5C,IAAA,IAAI,CAAC,KAAA,IAAS,KAAA,CAAM,QAAQ,KAAA,IAAS,CAAC,SAAS,OAAA,EAAS;AACxD,IAAA,MAAM,WAAW,CAAC,GAAG,SAAS,OAAA,CAAQ,gBAAA,CAA8B,QAAQ,CAAC,CAAA;AAC7E,IAAA,MAAM,QAAA,GAAW,SAAS,CAAC,CAAA;AAC3B,IAAA,MAAM,MAAA,GAAS,QAAA,CAAS,QAAA,CAAS,MAAA,GAAS,CAAC,CAAA;AAC3C,IAAA,IAAI,CAAC,QAAA,IAAY,CAAC,MAAA,EAAQ;AAC1B,IAAA,IAAI,KAAA,CAAM,QAAA,IAAY,QAAA,CAAS,aAAA,KAAkB,QAAA,EAAU;AACzD,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,MAAA,CAAO,KAAA,EAAM;AAAA,IACf,WAAW,CAAC,KAAA,CAAM,QAAA,IAAY,QAAA,CAAS,kBAAkB,MAAA,EAAQ;AAC/D,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,QAAA,CAAS,KAAA,EAAM;AAAA,IACjB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,WAAA;AAAA,IACA,cAAc,IAAI,CAAA,CAAA;AAAA,IAClB,cAAc,QAAQ,CAAA,CAAA;AAAA,IACtB,mBAAmB,IAAI,CAAA,CAAA;AAAA,IACvB;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACExB,cAAAA;AAAA,IAACyC,eAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MACR,EAAA;AAAA,MACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA,EAAU,IAAA;AAAA,MACV,KAAA;AAAA,MACA,WAAA,EAAa,KAAA;AAAA,MAEb,WAAA,EAAa,KAAA;AAAA,MACb,EAAA,EAAI;AAAA,QACF,IAAA,EAAM;AAAA,UACJ,WAAW,CAAA,iCAAA,EAAoC,IAAI,CAAA,EAAG,KAAA,GAAQ,KAAK,+BAA+B,CAAA;AAAA,SACpG;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,SAAA,EAAW,OAAA;AAAA,UACX,IAAA,EAAM,QAAA;AAAA,UACN,cAAc,KAAA,IAAS,MAAA;AAAA,UACvB,iBAAA,EAAmB,OAAA;AAAA,UACnB,kBAAA,EAAoB,WAAW,UAAA,GAAa,MAAA;AAAA,UAC5C,SAAA,EAAW;AAAA,SACb;AAAA;AAAA;AAAA,QAGA,UAAA,EAAY;AAAA,UACV,UAAA,EAAY;AAAA,YACV,KAAA,EAAO,kBAAA;AAAA,YACP,WAAA,EAAa,yBAAA;AAAA,YACb,UAAA,EAAY;AAAA;AACd;AACF,OACF;AAAA,MACA,SAAS,CAAC,EAAE,YAAA,EAAc,IAAA,uBACxB7B,eAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,CAAC,OAAA,KAAY;AAChB,YAAA,QAAA,CAAS,OAAA,GAAU,OAAA;AACnB,YAAA,IAAI,QAAA,KAAa,MAAA,EAAQ,UAAA,CAAW,OAAO,CAAA;AAAA,UAC7C,CAAA;AAAA,UACA,SAAA,EAAU,kBAAA;AAAA,UACV,QAAA,EAAU,QAAA,KAAa,MAAA,IAAU,OAAA,GAAU,CAAA,GAAI,MAAA;AAAA,UAE/C,QAAA,EAAA;AAAA,4BAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EACb,QAAA,EAAA;AAAA,8BAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EACZ,QAAA,EAAA;AAAA,gBAAA,MAAA,oBACCZ,cAAAA;AAAA,kBAAC,UAAA;AAAA,kBAAA;AAAA,oBACC,OAAA,EAAQ,UAAA;AAAA,oBACR,IAAA,EAAK,QAAA;AAAA,oBACL,IAAA,kBAAMA,cAAAA,CAAC0C,iBAAA,EAAA,EAAU,CAAA;AAAA,oBACjB,YAAA,EAAY,SAAA;AAAA,oBACZ,OAAA,EAAS;AAAA;AAAA,iBACX;AAAA,gCAEF1C,cAAAA,CAAC,IAAA,EAAA,EAAG,IAAI,OAAA,EAAS,SAAA,EAAU,oBACxB,QAAA,EAAA,KAAA,EACH;AAAA,eAAA,EACF,CAAA;AAAA,cACC,QAAA,oBACCA,cAAAA,CAAC,GAAA,EAAA,EAAE,IAAI,UAAA,EAAY,SAAA,EAAU,uBAC1B,QAAA,EAAA,QAAA,EACH;AAAA,aAAA,EAEJ,CAAA;AAAA,4BACAA,cAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,GAAA,EAAK,QAAA,KAAa,OAAA,GAAU,UAAA,GAAa,MAAA;AAAA,gBACzC,SAAA,EAAU,iBAAA;AAAA,gBACV,QAAA,EAAU,QAAA,KAAa,OAAA,IAAW,OAAA,GAAU,CAAA,GAAI,MAAA;AAAA,gBAE/C;AAAA;AAAA,aACH;AAAA,YACC,0BAAUA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAqB,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,4BACtDA,cAAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBACC,GAAA,EAAK,YAAA;AAAA,gBACL,SAAA,EAAU,kBAAA;AAAA,gBACV,OAAA,EAAQ,UAAA;AAAA,gBACR,IAAA,EAAK,QAAA;AAAA,gBACL,IAAA,kBAAMA,cAAAA,CAACoC,SAAAA,EAAA,EAAE,CAAA;AAAA,gBACT,YAAA,EAAY,UAAA;AAAA,gBACZ,OAAA,EAAS,CAAC,KAAA,KAAU,IAAA,CAAK,KAAK;AAAA;AAAA;AAChC;AAAA;AAAA;AACF;AAAA,GAEJ;AAEJ;AC/LO,IAAM,KAAA,GAAQnC,gBAAAA,CAAyC,SAAS0C,MAAAA,CACrE;AAAA,EACE,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,OAAA;AAAA,EACP,KAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,EAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,SAAS7B,WAAAA,EAAM;AACrB,EAAA,MAAM,UAAU,EAAA,IAAM,MAAA;AACtB,EAAA,MAAM,MAAA,GAAS,GAAG,OAAO,CAAA,KAAA,CAAA;AACzB,EAAA,MAAM,cAAc,KAAA,IAAS,IAAA;AAE7B,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,UAAA;AAAA,IACA,aAAa,OAAO,CAAA,CAAA;AAAA,IACpB,aAAa,IAAI,CAAA,CAAA;AAAA,IACjB,KAAA,IAAS,iBAAA;AAAA,IACT,QAAA,IAAY,oBAAA;AAAA,IACZ;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACEF,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,EACb,QAAA,EAAA;AAAA,IAAA,KAAA,oBACCA,eAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,iBAAA,EAAkB,SAAS,OAAA,EACzC,QAAA,EAAA;AAAA,MAAA,KAAA;AAAA,MACA,QAAA,oBACCZ,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,oBAAA,EAAqB,aAAA,EAAY,QAAO,QAAA,EAAA,GAAA,EAExD;AAAA,KAAA,EAEJ,CAAA;AAAA,oBAEFY,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EACZ,QAAA,EAAA;AAAA,MAAA,WAAA,oBACCZ,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,gBAAA,EAAiB,aAAA,EAAY,QAC1C,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,sBAEFA,cAAAA;AAAA,QAAC4C,mBAAA;AAAA,QAAA;AAAA,UACC,QAAA,EAAQ,IAAA;AAAA,UAER,GAAA;AAAA,UACA,EAAA,EAAI,OAAA;AAAA,UACJ,SAAA,EAAU,iBAAA;AAAA,UACV,QAAA;AAAA,UACA,QAAA;AAAA,UACA,OAAA,EAAS,QAAQ,KAAK,CAAA;AAAA,UACtB,cAAA,EAAc,QAAQ,IAAA,GAAO,MAAA;AAAA,UAC7B,kBAAA,EAAkB,cAAc,MAAA,GAAS,MAAA;AAAA,UACxC,GAAG;AAAA;AAAA,OACN;AAAA,MACC,gCAAgB5C,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kBAAkB,QAAA,EAAA,YAAA,EAAa;AAAA,KAAA,EAClE,CAAA;AAAA,IACC,WAAA,oBACCY,eAAAA,CAAC,GAAA,EAAA,EAAE,EAAA,EAAI,MAAA,EAAQ,SAAA,EAAW,CAAA,cAAA,EAAiB,KAAA,GAAQ,wBAAA,GAA2B,EAAE,CAAA,CAAA,EAC9E,QAAA,EAAA;AAAA,sBAAAZ,eAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAA,EAAsB,aAAA,EAAY,QAC/C,QAAA,EAAA,KAAA,mBAAQA,cAAAA,CAACgB,qBAAAA,EAAA,EAAc,CAAA,mBAAKhB,cAAAA,CAACiB,YAAAA,EAAA,EAAK,CAAA,EACrC,CAAA;AAAA,MACC;AAAA,KAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ,CAAC;AC7CM,IAAM,IAAA,GAAOhB,gBAAAA,CAAkC,SAAS4C,KAAAA,CAC7D;AAAA,EACE,KAAA;AAAA,EACA,OAAA,GAAU,QAAA;AAAA,EACV,KAAA,GAAQ,KAAA;AAAA,EACR,cAAA,GAAiB,MAAA;AAAA,EACjB,OAAA,GAAU,KAAA;AAAA,EACV,YAAA,GAAe,YAAA;AAAA,EACf,YAAA,EAAc,SAAA;AAAA,EACd,iBAAA,EAAmB,cAAA;AAAA,EACnB,MAAA;AAAA,EACA,MAAA;AAAA,EACA,EAAA;AAAA,EACA;AACF,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,QAAA,GAAW1C,aAAkB,IAAI,CAAA;AACvC,EAAA,MAAM,OAAA,GAAU2C,iBAAWC,qBAAiB,CAAA;AAE5C,EAAA3C,yBAAAA,CAAoB,KAAK,OAAO;AAAA,IAC9B,QAAQ,CAAC,KAAA,KAAU,QAAA,CAAS,OAAA,EAAS,OAAO,KAAK,CAAA;AAAA,IACjD,MAAM,CAAC,KAAA,KAAU,QAAA,CAAS,OAAA,EAAS,KAAK,KAAK,CAAA;AAAA,IAC7C,MAAM,CAAC,KAAA,KAAU,QAAA,CAAS,OAAA,EAAS,KAAK,KAAK,CAAA;AAAA,IAC7C,UAAA,EAAY,MAAM,QAAA,CAAS,OAAA,EAAS,YAAW,IAAK;AAAA,GACtD,CAAE,CAAA;AAEF,EAAA,MAAM,QAAyB,OAAA,GAC3B;AAAA,IACE;AAAA,MACE,KAAA,EAAO,YAAA;AAAA,MACP,QAAA,EAAU,IAAA;AAAA,MACV,QAAA,EAAU,sBACRJ,cAAAA,CAAC,SAAI,SAAA,EAAU,kBAAA,EACb,QAAA,kBAAAA,cAAAA,CAACgD,mBAAA,EAAA,EAAY,SAAA,EAAU,kBAAA,EAAmB,aAAA,EAAY,QAAO,CAAA,EAC/D;AAAA;AAEJ,GACF,GACA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,IACnB,IAAI,IAAA,CAAK,EAAA;AAAA,IACT,OAAO,IAAA,CAAK,KAAA;AAAA,IACZ,IAAA,EAAM,IAAA,CAAK,IAAA,mBACThD,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,eAAA,EAAgB,aAAA,EAAY,MAAA,EACzC,QAAA,EAAA,IAAA,CAAK,IAAA,EACR,CAAA,GACE,MAAA;AAAA,IACJ,UAAU,IAAA,CAAK,QAAA;AAAA,IACf,SAAS,IAAA,CAAK,OAAA;AAAA,IACd,KAAK,IAAA,CAAK,GAAA;AAAA,IACV,QAAQ,IAAA,CAAK,MAAA;AAAA,IACb,SAAA,EAAW,CAAC,IAAA,CAAK,QAAA,IAAY,yBAAA,EAA2B,IAAA,CAAK,SAAS,CAAA,CACnE,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,GAAG,CAAA;AAAA,IACX,IAAA,EAAM,EAAE,QAAA,EAAU,IAAA,CAAK,QAAA;AAAS,GAClC,CAAE,CAAA;AAEN,EAAA,MAAM,OAAA,GAAU,CAAC,SAAA,EAAW,CAAA,SAAA,EAAY,OAAO,CAAA,CAAA,EAAI,KAAA,IAAS,gBAAA,EAAkB,SAAS,CAAA,CACpF,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,MAAM,EAAA,GAA6B;AAAA;AAAA,IAEjC,IAAA,EAAM;AAAA,MACJ,SAAA,EAAW,eAAA;AAAA,MACX,YAAA,EAAc,SAAA;AAAA,MACd,iBAAA,EAAmB,cAAA;AAAA,MACnB,aAAa,OAAA,IAAW;AAAA,KAC1B;AAAA,IACA,QAAA,EAAU,CAAC,OAAA,KAAY;AACrB,MAAA,MAAM,IAAA,GAAQ,SAAoD,OAAA,EAAS,IAAA;AAC3E,MAAA,OAAO;AAAA,QACL,SAAA,EAAW,eAAA;AAAA,QACX,cAAA,EAAgB,IAAA,EAAM,IAAA,EAAM,QAAA,GAAW,MAAA,GAAS;AAAA,OAClD;AAAA,IACF,CAAA;AAAA,IACA,OAAA,EAAS,EAAE,SAAA,EAAW,kBAAA,EAAmB;AAAA,IACzC,MAAA,EAAQ,EAAE,SAAA,EAAW,iBAAA,EAAkB;AAAA,IACvC,KAAA,EAAO,EAAE,SAAA,EAAW,gBAAA;AAAiB,GACvC;AAEA,EAAA,MAAMiD,yBACJjD,cAAAA;AAAA,IAACkD,SAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MACR,GAAA,EAAK,QAAA;AAAA,MACL,EAAA;AAAA,MACA,SAAA,EAAW,OAAA;AAAA,MACX,KAAA,EAAO,KAAA;AAAA,MACP,KAAA;AAAA,MACA,cAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA;AAAA,GACF;AAMF,EAAA,OAAO,OAAA,GAAUD,MAAA,mBAAOjD,cAAAA,CAACmD,0BAAoB,QAAA,EAAAF,MAAA,EAAK,CAAA;AACpD,CAAC;;;;;;;ACzFD,SAAS,UAAA,GAAa;AACpB,EAAA,uBACErC,gBAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oBAAmB,IAAA,EAAK,KAAA,EAAM,cAAW,QAAA,EACvD,QAAA,EAAA;AAAA,oBAAAZ,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BAAyB,GAAA,EAAK,yBAAA,EAAW,KAAI,EAAA,EAAG,CAAA;AAAA,oBAC/DA,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAA2B,GAAA,EAAK,2BAAA,EAAa,KAAI,EAAA,EAAG;AAAA,GAAA,EACrE,CAAA;AAEJ;AAEA,SAAS,UAAA,CAAW,EAAE,IAAA,EAAK,EAA0B;AACnD,EAAA,MAAM,SAAA,GAAYG,aAA0B,IAAI,CAAA;AAChD,EAAA,MAAM,OAAA,GAAUA,aAAmB,IAAI,CAAA;AACvC,EAAA,MAAM,SAASW,WAAAA,EAAM;AACrB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIT,eAAS,KAAK,CAAA;AACtC,EAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,IAAA,CAAK,IAAA,EAAM,MAAM,CAAA;AACzC,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,KAAU,MAAA,IAAa,KAAK,KAAA,KAAU,IAAA;AAC5D,EAAA,MAAM,IAAA,GAAO,QAAA,GAAW,CAAA,EAAG,IAAA,CAAK,KAAK,CAAA,EAAA,EAAK,IAAA,CAAK,UAAA,IAAc,MAAA,CAAO,IAAA,CAAK,KAAK,CAAC,KAAK,IAAA,CAAK,KAAA;AAEzF,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,kBAAA;AAAA,IACA,KAAK,YAAA,IAAgB,0BAAA;AAAA,IACrB,IAAA,IAAQ;AAAA,GACV,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACEO,eAAAA,CAAAgB,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAhB,eAAAA;AAAA,MAACS,aAAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QAER,GAAA,EAAK,SAAA;AAAA,QACL,IAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAW,OAAA;AAAA,QACX,YAAA,EAAY,IAAA;AAAA,QACZ,eAAA,EAAe,UAAU,MAAA,GAAS,MAAA;AAAA,QAClC,eAAA,EAAe,UAAU,IAAA,GAAO,MAAA;AAAA,QAChC,eAAA,EAAe,OAAA,IAAW,IAAA,GAAO,MAAA,GAAS,MAAA;AAAA,QAC1C,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,UAAA,IAAA,CAAK,UAAU,KAAK,CAAA;AACpB,UAAA,IAAI,OAAA,EAAS,OAAA,CAAQ,OAAA,EAAS,MAAA,CAAO,KAAK,CAAA;AAAA,QAC5C,CAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAArB,eAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yBAAwB,aAAA,EAAY,MAAA,EACjD,eAAK,IAAA,EACR,CAAA;AAAA,UACC,QAAA,oBACCA,cAAAA,CAAC,KAAA,EAAA,EAAM,WAAU,mBAAA,EAAoB,aAAA,EAAY,MAAA,EAC9C,QAAA,EAAA,IAAA,CAAK,KAAA,EACR;AAAA;AAAA;AAAA,KAEJ;AAAA,oBAEAA,eAAC,OAAA,EAAA,EAAQ,MAAA,EAAQ,WAAW,OAAA,EAAS,IAAA,CAAK,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,CAAA;AAAA,IAChE,2BACCA,cAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,OAAA;AAAA,QACL,EAAA,EAAI,MAAA;AAAA,QACJ,KAAA,EAAK,IAAA;AAAA,QACL,cAAA,EAAe,OAAA;AAAA,QACf,KAAA,EAAO,IAAA,CAAK,IAAA,IAAQ,EAAC;AAAA,QACrB,cAAY,IAAA,CAAK,KAAA;AAAA,QACjB,MAAA,EAAQ,MAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,QAC1B,MAAA,EAAQ,MAAM,OAAA,CAAQ,KAAK;AAAA;AAAA;AAC7B,GAAA,EAEJ,CAAA;AAEJ;AAEA,SAAS,OAAA,CAAQ,EAAE,IAAA,EAAM,IAAA,EAAK,EAA6C;AACzE,EAAA,MAAM,OAAA,GAAUG,aAAmB,IAAI,CAAA;AACvC,EAAA,MAAM,SAASW,WAAAA,EAAM;AACrB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIT,eAAS,KAAK,CAAA;AACtC,EAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,IAAA,EAAM,MAAM,CAAA;AAEpC,EAAA,MAAM,OAAA,mBACJO,eAAAA,CAAAgB,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAhB,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0BAAA,EACd,QAAA,EAAA;AAAA,sBAAAZ,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0BAAA,EAA4B,eAAK,IAAA,EAAK,CAAA;AAAA,MACrD,IAAA,CAAK,wBAAQA,cAAAA,CAAC,UAAK,SAAA,EAAU,0BAAA,EAA4B,eAAK,IAAA,EAAK;AAAA,KAAA,EACtE,CAAA;AAAA,oBAEAA,cAAAA;AAAA,MAACoD,aAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACR,aAAA,EAAY,MAAA;AAAA,QACZ,SAAA,EAAW,CAAA,kBAAA,EAAqB,IAAA,CAAK,MAAA,GAAS,KAAK,8BAA8B,CAAA,CAAA;AAAA,QACjF,OAAO,IAAA,CAAK,MAAA;AAAA,QACZ,QAAA,EAAS,EAAA;AAAA,QACT,KAAA,EAAO,IAAA,CAAK,MAAA,GAAS,MAAA,GAAY,IAAA,CAAK,IAAA,CAAK,IAAA,EAAK,CAAE,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,EAAY;AAAA,QACxE,KAAA,EAAM,QAAA;AAAA,QACN,IAAI,EAAE,KAAA,EAAO,EAAE,SAAA,EAAW,4BAA2B;AAAE;AAAA;AACzD,GAAA,EACF,CAAA;AAGF,EAAA,IAAI,CAAC,SAAS,uBAAOpD,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAuB,QAAA,EAAA,OAAA,EAAQ,CAAA;AAEnE,EAAA,uBACEY,eAAAA,CAAAgB,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA5B,cAAAA;AAAA,MAACqB,aAAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACR,IAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAU,iDAAA;AAAA,QACV,eAAA,EAAc,MAAA;AAAA,QACd,eAAA,EAAe,IAAA;AAAA,QACf,eAAA,EAAe,OAAO,MAAA,GAAS,MAAA;AAAA,QAC/B,SAAS,CAAC,KAAA,KAAU,OAAA,CAAQ,OAAA,EAAS,OAAO,KAAK,CAAA;AAAA,QAEhD,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,oBACArB,cAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,OAAA;AAAA,QACL,EAAA,EAAI,MAAA;AAAA,QACJ,KAAA,EAAK,IAAA;AAAA,QACL,cAAA,EAAe,OAAA;AAAA,QACf,KAAA,EAAO,QAAQ,EAAC;AAAA,QAChB,cAAY,IAAA,CAAK,IAAA;AAAA,QACjB,MAAA,EAAQ,MAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,QAC1B,MAAA,EAAQ,MAAM,OAAA,CAAQ,KAAK;AAAA;AAAA;AAC7B,GAAA,EACF,CAAA;AAEJ;AAQO,IAAM,OAAA,GAAUC,gBAAAA,CAAyC,SAASoD,QAAAA,CACvE;AAAA,EACE,IAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,YAAA;AAAA,EACA,SAAA,GAAY,gBAAA;AAAA,EACZ,UAAA,GAAa,IAAA;AAAA,EACb,iBAAA,GAAoB,kBAAA;AAAA,EACpB,WAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,iBAAA,GAAoB,QAAA;AAAA,EACpB,QAAQ,EAAC;AAAA,EACT,IAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA;AACF,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIhD,eAAS,EAAE,CAAA;AACjD,EAAA,MAAM,SAAS,WAAA,IAAe,WAAA;AAE9B,EAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAsC;AAC1D,IAAA,KAAA,CAAM,cAAA,EAAe;AACrB,IAAA,QAAA,GAAW,MAAM,CAAA;AAAA,EACnB,CAAA;AAEA,EAAA,MAAM,OAAA,GAAU,CAAC,YAAA,EAAc,CAAC,UAAA,IAAc,uBAAA,EAAyB,SAAS,CAAA,CAC7E,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,GAAG,CAAA;AAEX,EAAA,MAAM,EAAA,GAAgC;AAAA;AAAA,IAEpC,KAAA,EAAO,EAAE,SAAA,EAAW,mBAAA,EAAoB;AAAA,IACxC,GAAA,EAAK,EAAE,SAAA,EAAW,iBAAA,EAAkB;AAAA;AAAA,IAEpC,IAAA,EAAM,EAAE,MAAA,EAAQ,IAAA;AAAK,GACvB;AAEA,EAAA,MAAM,KAAA,mBACJO,eAAAA,CAAAgB,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAhB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EACb,QAAA,EAAA;AAAA,sBAAAZ,cAAAA;AAAA,QAACqB,aAAAA;AAAA,QAAA;AAAA,UACC,QAAA,EAAQ,IAAA;AAAA,UACR,IAAA,EAAK,QAAA;AAAA,UACL,SAAA,EAAW,CAAA,uBAAA,EAA0B,QAAA,GAAW,kCAAA,GAAqC,EAAE,CAAA,CAAA;AAAA,UACvF,YAAA,EAAY,SAAA;AAAA,UACZ,eAAA,EAAe,QAAA;AAAA,UACf,OAAA,EAAS,YAAA;AAAA,UAET,QAAA,kBAAArB,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAA,EAAwB,eAAY,MAAA,EAClD,QAAA,kBAAAA,cAAAA,CAACsD,YAAA,EAAA,EAAK,CAAA,EACR;AAAA;AAAA,OACF;AAAA,MACC,IAAA,oBAAQtD,cAAAA,CAAC,UAAA,EAAA,EAAW;AAAA,KAAA,EACvB,CAAA;AAAA,IACC,UAAA,oBACCY,eAAAA,CAAC,MAAA,EAAA,EAAK,MAAK,QAAA,EAAS,SAAA,EAAU,oBAAA,EAAqB,QAAA,EAAU,YAAA,EAC3D,QAAA,EAAA;AAAA,sBAAAZ,cAAAA;AAAA,QAAC4C,mBAAAA;AAAA,QAAA;AAAA,UACC,QAAA,EAAQ,IAAA;AAAA,UACR,SAAA,EAAU,0BAAA;AAAA,UACV,WAAA,EAAa,iBAAA;AAAA,UACb,YAAA,EAAY,iBAAA;AAAA,UACZ,KAAA,EAAO,MAAA;AAAA,UACP,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,YAAA,cAAA,CAAe,KAAA,CAAM,OAAO,KAAK,CAAA;AACjC,YAAA,cAAA,GAAiB,KAAA,CAAM,OAAO,KAAK,CAAA;AAAA,UACrC;AAAA;AAAA,OACF;AAAA,sBACA5C,cAAAA;AAAA,QAACqB,aAAAA;AAAA,QAAA;AAAA,UACC,QAAA,EAAQ,IAAA;AAAA,UACR,IAAA,EAAK,QAAA;AAAA,UACL,SAAA,EAAU,2BAAA;AAAA,UACV,YAAA,EAAY,iBAAA;AAAA,UAEZ,QAAA,kBAAArB,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yBAAA,EAA0B,eAAY,MAAA,EACpD,QAAA,kBAAAA,cAAAA,CAACuD,uBAAA,EAAA,EAAgB,CAAA,EACnB;AAAA;AAAA;AACF,KAAA,EACF;AAAA,GAAA,EAEJ,CAAA;AAGF,EAAA,MAAM,GAAA,GACJ,MAAM,MAAA,GAAS,CAAA,IAAK,uBAClB3C,eAAAA,CAAAgB,qBAAA,EACG,QAAA,EAAA;AAAA,IAAA,KAAA,CAAM,SAAS,CAAA,oBACd5B,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBACZ,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,qBACVA,cAAAA,CAAC,UAAA,EAAA,EAA4B,QAAZ,IAAA,CAAK,KAAmB,CAC1C,CAAA,EACH,CAAA;AAAA,IAED,wBAAQA,cAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAY,MAAM,QAAA,EAAU;AAAA,GAAA,EAChD,CAAA,GACE,IAAA;AAEN,EAAA,uBACEA,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAU,EAAA,EAAQ,SAAA,EAAW,SAChC,QAAA,kBAAAA,cAAAA;AAAA,IAACwD,eAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MACR,SAAA,EAAU,iBAAA;AAAA,MACV,OAAO,EAAC;AAAA,MACR,KAAA;AAAA,MACA,GAAA;AAAA,MACA;AAAA;AAAA,GACF,EACF,CAAA;AAEJ,CAAC;ACnSM,IAAM,GAAA,GAAMvD,gBAAAA,CAAsC,SAASwD,IAAAA,CAChE,EAAE,OAAA,GAAU,SAAA,EAAW,IAAA,GAAO,OAAA,EAAS,MAAM,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,IACrE,GAAA,EACA;AACA,EAAA,MAAM,QAAA,GAAWtD,aAAiB,IAAI,CAAA;AAEtC,EAAAC,0BAAoB,GAAA,EAAK,MAAM,QAAA,CAAS,OAAA,EAAS,YAA+B,CAAA;AAEhF,EAAA,MAAM,OAAA,GAAU,CAAC,QAAA,EAAU,CAAA,QAAA,EAAW,OAAO,CAAA,CAAA,EAAI,CAAA,QAAA,EAAW,IAAI,CAAA,CAAA,EAAI,SAAS,CAAA,CAC1E,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACEJ,cAAAA;AAAA,IAAC0D,OAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MACR,GAAA,EAAK,QAAA;AAAA,MACL,SAAA,EAAW,OAAA;AAAA,MAEX,IAAA,EACE,IAAA,GACI,sBACE1D,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,cAAA,EAAe,aAAA,EAAY,MAAA,EACxC,QAAA,EAAA,IAAA,EACH,CAAA,GAEF,MAAA;AAAA,MAEN,KAAA,EAAO,QAAA;AAAA,MACN,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;ACUD,IAAM,OAAA,GAAU,CAAC,KAAA,KAA2D,OAAA,IAAW,KAAA;AAOhF,IAAM,aAAA,GAAgBC,gBAAAA;AAAA,EAC3B,SAAS0D,cAAAA,CACP;AAAA,IACE,KAAA;AAAA,IACA,KAAA,GAAQ,KAAA;AAAA,IACR,cAAc,SAAA,GAAY,gBAAA;AAAA,IAC1B,MAAA;AAAA,IACA,MAAA;AAAA,IACA,EAAA;AAAA,IACA;AAAA,KAEF,GAAA,EACA;AACA,IAAA,MAAM,QAAA,GAAWxD,aAAkB,IAAI,CAAA;AACvC,IAAA,MAAM,OAAA,GAAU2C,iBAAWC,qBAAiB,CAAA;AAI5C,IAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI1C,cAAAA,EAAiB;AACrD,IAAA,MAAM,SAAA,GAAY,CAAC,KAAA,KAA0B;AAC3C,MAAA,MAAM,OAAO,KAAA,CAAM,aAAA;AACnB,MAAA,IAAI,gBAAgB,OAAA,EAAS,aAAA,CAAc,IAAA,CAAK,qBAAA,GAAwB,MAAM,CAAA;AAAA,IAChF,CAAA;AAEA,IAAAD,yBAAAA,CAAoB,KAAK,OAAO;AAAA,MAC9B,MAAA,EAAQ,CAAC,KAAA,KAAU;AACjB,QAAA,SAAA,CAAU,KAAK,CAAA;AACf,QAAA,QAAA,CAAS,OAAA,EAAS,OAAO,KAAK,CAAA;AAAA,MAChC,CAAA;AAAA,MACA,IAAA,EAAM,CAAC,KAAA,KAAU;AACf,QAAA,SAAA,CAAU,KAAK,CAAA;AACf,QAAA,QAAA,CAAS,OAAA,EAAS,KAAK,KAAK,CAAA;AAAA,MAC9B,CAAA;AAAA,MACA,MAAM,CAAC,KAAA,KAAU,QAAA,CAAS,OAAA,EAAS,KAAK,KAAK,CAAA;AAAA,MAC7C,UAAA,EAAY,MAAM,QAAA,CAAS,OAAA,EAAS,YAAW,IAAK;AAAA,KACtD,CAAE,CAAA;AAEF,IAAA,MAAM,OAAA,GAAU,CAAC,IAAA,MAA4C;AAAA,MAC3D,IAAI,IAAA,CAAK,EAAA;AAAA;AAAA;AAAA;AAAA,MAIT,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,KAAK,IAAA,CAAK,GAAA;AAAA,MACV,QAAQ,IAAA,CAAK,MAAA;AAAA,MACb,WAAW,IAAA,CAAK,SAAA;AAAA;AAAA,MAEhB,QAAA,EAAU,sBACRQ,eAAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,2BAAA;AAAA,UACV,iBAAA,EAAgB,QAAA;AAAA,UAChB,IAAA,EAAM,KAAK,GAAA,IAAO,GAAA;AAAA,UAClB,QAAQ,IAAA,CAAK,MAAA;AAAA,UACb,QAAA,EAAU,EAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAZ,eAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2BAA0B,aAAA,EAAY,MAAA,EACnD,eAAK,IAAA,EACR,CAAA;AAAA,4BACAY,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yBAAA,EACd,QAAA,EAAA;AAAA,8BAAAZ,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0BAAA,EAA4B,eAAK,KAAA,EAAM,CAAA;AAAA,cAAQ,GAAA;AAAA,cAC9D,IAAA,CAAK,+BACJA,cAAAA,CAAC,UAAK,SAAA,EAAU,gCAAA,EAAkC,eAAK,WAAA,EAAY;AAAA,aAAA,EAEvE,CAAA;AAAA,YAAQ,GAAA;AAAA,YACP,IAAA,CAAK,GAAA,oBACJA,cAAAA,CAAC,OAAI,SAAA,EAAU,wBAAA,EAAyB,OAAA,EAAQ,SAAA,EAAU,sBAAMA,cAAAA,CAAC4D,oBAAA,EAAA,EAAa,CAAA,EAC3E,eAAK,GAAA,EACR;AAAA;AAAA;AAAA;AAEJ,KAEJ,CAAA;AAGA,IAAA,MAAM,QAAyB,EAAC;AAChC,IAAA,IAAI,QAAA;AACJ,IAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,KAAA,KAAU;AACvB,MAAA,IAAI,QAAA,KAAa,OAAA,CAAQ,KAAK,CAAA,IAAK,OAAA,CAAQ,QAAQ,CAAA,CAAA,EAAI,KAAA,CAAM,IAAA,CAAK,EAAE,SAAA,EAAW,IAAA,EAAM,CAAA;AACrF,MAAA,KAAA,CAAM,IAAA;AAAA,QACJ,QAAQ,KAAK,CAAA,GACT,EAAE,EAAA,EAAI,KAAA,CAAM,IAAI,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,KAAA,EAAO,MAAM,KAAA,CAAM,GAAA,CAAI,OAAO,CAAA,EAAE,GACpE,QAAQ,KAAK;AAAA,OACnB;AACA,MAAA,QAAA,GAAW,KAAA;AAAA,IACb,CAAC,CAAA;AAED,IAAA,MAAM,OAAA,GAAU,CAAC,mBAAA,EAAqB,KAAA,IAAS,0BAAA,EAA4B,SAAS,CAAA,CACjF,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,GAAG,CAAA;AAEX,IAAA,MAAM,EAAA,GAA6B;AAAA,MACjC,IAAA,EAAM,EAAE,SAAA,EAAW,yBAAA,EAA2B,cAAc,SAAA,EAAU;AAAA,MACtE,aAAA,EAAe,EAAE,SAAA,EAAW,0BAAA,EAA2B;AAAA,MACvD,SAAA,EAAW,EAAE,SAAA,EAAW,8BAAA,EAA+B;AAAA,MACvD,QAAA,EAAU,EAAE,SAAA,EAAW,yBAAA;AAA0B,KACnD;AAEA,IAAA,MAAMX,yBACJjD,cAAAA;AAAA,MAACkD,SAAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACR,GAAA,EAAK,QAAA;AAAA,QACL,EAAA;AAAA,QACA,SAAA,EAAW,OAAA;AAAA,QACX,KAAA,EACE,SAAS,UAAA,KAAe,MAAA,GACnB,EAAE,0BAAA,EAA4B,CAAA,EAAG,UAAU,CAAA,EAAA,CAAA,EAAK,GACjD,MAAA;AAAA,QAEN,KAAA,EAAO,KAAA;AAAA,QACP,KAAA;AAAA,QACA,MAAA;AAAA,QACA,MAAA;AAAA,QACA;AAAA;AAAA,KACF;AAIF,IAAA,OAAO,UAAUD,MAAA,mBAAOjD,cAAAA,CAACmD,sBAAAA,EAAA,EAAoB,QAAA,EAAAF,MAAA,EAAK,CAAA;AAAA,EACpD;AACF;ACpKA,IAAM,QAAA,GAA+D;AAAA,EACnE,IAAA,EAAM,MAAA;AAAA,EACN,OAAA,EAAS,MAAA;AAAA,EACT,OAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAQ,OAAA;AAAA,EACR,SAAA,EAAW,UAAA;AAAA,EACX,OAAA,EAAS;AACX,CAAA;AAEA,IAAM,IAAA,GAA0C;AAAA,EAC9C,IAAA,kBAAMjD,cAAAA,CAACiB,YAAAA,EAAA,EAAK,CAAA;AAAA,EACZ,OAAA,kBAASjB,cAAAA,CAAC6D,eAAA,EAAA,EAAQ,CAAA;AAAA,EAClB,OAAA,kBAAS7D,cAAAA,CAAC8D,mBAAA,EAAA,EAAY,CAAA;AAAA,EACtB,MAAA,kBAAQ9D,cAAAA,CAAC+D,eAAA,EAAA,EAAQ,CAAA;AAAA,EACjB,SAAA,kBAAW/D,cAAAA,CAACgE,mBAAA,EAAA,EAAY,CAAA;AAAA,EACxB,OAAA,kBAAShE,cAAAA,CAACgB,qBAAAA,EAAA,EAAc;AAC1B,CAAA;AAKO,IAAM,OAAA,GAAUf,gBAAAA,CAAyC,SAASgE,QAAAA,CACvE,EAAE,IAAA,GAAO,MAAA,EAAQ,QAAA,EAAU,QAAA,GAAW,IAAA,EAAM,EAAA,EAAI,SAAA,IAChD,GAAA,EACA;AACA,EAAA,MAAM,QAAA,GAAW9D,aAAqB,IAAI,CAAA;AAC1C,EAAAC,0BAAoB,GAAA,EAAK,MAAM,QAAA,CAAS,OAAA,EAAS,YAA8B,CAAA;AAE/E,EAAA,uBACEJ,cAAAA;AAAA,IAACkE,eAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MACR,GAAA,EAAK,QAAA;AAAA,MACL,EAAA;AAAA,MACA,QAAA,EAAU,SAAS,IAAI,CAAA;AAAA,MACvB,IAAA,EAAM,QAAA;AAAA,MAEN,MACE,QAAA,mBACElE,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,kBAAA,EAAmB,aAAA,EAAY,MAAA,EAC5C,QAAA,EAAA,IAAA,CAAK,IAAI,CAAA,EACZ,CAAA,mBAEAA,cAAAA,CAAA4B,qBAAA,EAAE,CAAA;AAAA,MAGN,EAAA,EAAI;AAAA,QACF,IAAA,EAAM;AAAA,UACJ,SAAA,EAAW,CAAC,YAAA,EAAc,CAAA,YAAA,EAAe,IAAI,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG;AAAA,SACtF;AAAA,QACA,IAAA,EAAM,EAAE,SAAA,EAAW,kBAAA;AAAmB;AACxC;AAAA,GACF;AAEJ,CAAC;AC7CM,SAAS,KAAA,CAAM;AAAA,EACpB,OAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA,GAAO,OAAA;AAAA,EACP,MAAA;AAAA,EACA,SAAA,GAAY,OAAA;AAAA,EACZ,UAAA,GAAa,QAAA;AAAA,EACb,MAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA;AACF,CAAA,EAAe;AACb,EAAA,MAAM,SAASd,WAAAA,EAAM;AACrB,EAAA,MAAM,OAAA,GAAU,GAAG,MAAM,CAAA,MAAA,CAAA;AAGzB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIT,eAAgC,IAAI,CAAA;AAC5D,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,eAAS,KAAK,CAAA;AAC5C,EAAAmB,gBAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAM,QAAQ,MAAM,UAAA,CAAW,IAAA,CAAK,YAAA,GAAe,KAAK,YAAY,CAAA;AACpE,IAAA,KAAA,EAAM;AACN,IAAA,MAAM,QAAA,GAAW,IAAI,cAAA,CAAe,KAAK,CAAA;AACzC,IAAA,QAAA,CAAS,QAAQ,IAAI,CAAA;AACrB,IAAA,CAAC,GAAG,IAAA,CAAK,QAAQ,CAAA,CAAE,OAAA,CAAQ,CAAC,KAAA,KAAU,QAAA,CAAS,OAAA,CAAQ,KAAK,CAAC,CAAA;AAC7D,IAAA,OAAO,MAAM,SAAS,UAAA,EAAW;AAAA,EACnC,CAAA,EAAG,CAAC,IAAA,EAAM,QAAQ,CAAC,CAAA;AAEnB,EAAA,MAAM,OAAA,GAAU,CAAC,UAAA,EAAY,CAAA,UAAA,EAAa,IAAI,CAAA,CAAA,EAAI,OAAA,IAAW,sBAAA,EAAwB,SAAS,CAAA,CAC3F,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACExB,cAAAA;AAAA,IAACmE,aAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MACR,EAAA;AAAA,MACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,EAAW,KAAA;AAAA,MACX,SAAA,EAAW,KAAA;AAAA,MACX,WAAA,EAAW,IAAA;AAAA,MACX,EAAA,EAAI;AAAA,QACF,IAAA,EAAM,EAAE,SAAA,EAAW,gBAAA,EAAiB;AAAA,QACpC,IAAA,EAAM;AAAA,UACJ,SAAA,EAAW,OAAA;AAAA,UACX,iBAAA,EAAmB,OAAA;AAAA,UACnB,kBAAA,EAAoB;AAAA;AACtB,OACF;AAAA,MACA,OAAA,EAAS,CAAC,EAAE,IAAA,EAAM,UAAS,qBACzBvD,eAAAA,CAAAgB,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAAhB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EACb,QAAA,EAAA;AAAA,0BAAAZ,eAAC,IAAA,EAAA,EAAG,EAAA,EAAI,OAAA,EAAS,SAAA,EAAU,mBACxB,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,0BACAY,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAA,EACZ,QAAA,EAAA;AAAA,YAAA,MAAA,IAAU,IAAA,KAAS,2BAClBZ,cAAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAQ,UAAA;AAAA,gBACR,IAAA,EAAK,QAAA;AAAA,gBACL,IAAA,kBAAMA,cAAAA,CAAC6B,gBAAAA,EAAA,EAAS,CAAA;AAAA,gBAChB,YAAA,EAAY,SAAA;AAAA,gBACZ,OAAA,EAAS;AAAA;AAAA,aACX;AAAA,4BAEF7B,cAAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBACC,GAAA,EAAK,QAAA;AAAA,gBACL,OAAA,EAAQ,UAAA;AAAA,gBACR,IAAA,EAAK,QAAA;AAAA,gBACL,IAAA,kBAAMA,cAAAA,CAACoC,SAAAA,EAAA,EAAE,CAAA;AAAA,gBACT,YAAA,EAAY,UAAA;AAAA,gBACZ,OAAA,EAAS,CAAC,KAAA,KAAU,IAAA,CAAK,KAAK;AAAA;AAAA;AAChC,WAAA,EACF;AAAA,SAAA,EACF,CAAA;AAAA,wBACApC,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,OAAA;AAAA,YACL,SAAA,EAAU,gBAAA;AAAA,YAIV,QAAA,EAAU,UAAU,CAAA,GAAI,MAAA;AAAA,YAEvB;AAAA;AAAA,SACH;AAAA,QAAA,CACE,UAAU,WAAA,qBACVY,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,kBAAA,EACb,QAAA,EAAA;AAAA,0BAAAZ,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EAA0B,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,0BACrDA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAwB,QAAA,EAAA,MAAA,EAAO;AAAA,SAAA,EAChD;AAAA,OAAA,EAEJ;AAAA;AAAA,GAEJ;AAEJ;ACnEO,IAAM,WAAA,GAAcC,gBAAAA,CAA+C,SAASmE,YAAAA,CACjF;AAAA,EACE,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,OAAA;AAAA,EACP,OAAA,GAAU,QAAA;AAAA,EACV,KAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA,GAAc,OAAA;AAAA,EACd,WAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,wBAAA;AAAA,EACd,MAAA,GAAS,KAAA;AAAA,EACT,iBAAA,GAAoB,WAAA;AAAA,EACpB,QAAA,GAAW,CAAA;AAAA,EACX,kBAAA,GAAqB,wBAAA;AAAA,EACrB,WAAA,GAAc,SAAA;AAAA,EACd,cAAA,GAAiB,kBAAA;AAAA,EACjB,kBAAA,GAAqB,6BAAA;AAAA,EACrB,IAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,SAAStD,WAAAA,EAAM;AACrB,EAAA,MAAM,UAAU,EAAA,IAAM,MAAA;AACtB,EAAA,MAAM,MAAA,GAAS,GAAG,OAAO,CAAA,KAAA,CAAA;AACzB,EAAA,MAAM,cAAc,KAAA,IAAS,IAAA;AAC7B,EAAA,MAAM,QAAA,GAAW,SAAS,EAAC;AAC3B,EAAA,MAAM,QAAA,GAAW,SAAS,MAAA,GAAS,QAAA;AAEnC,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,UAAA;AAAA,IACA,aAAa,OAAO,CAAA,CAAA;AAAA,IACpB,aAAa,IAAI,CAAA,CAAA;AAAA,IACjB,gBAAA;AAAA,IACA,KAAA,IAAS,iBAAA;AAAA,IACT,QAAA,IAAY,oBAAA;AAAA,IACZ;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,MAAM,UAAU,CAAC,MAAA,KACf,WAAA,GAAe,MAAA,CAAmC,WAAW,CAAA,GAAI,MAAA;AACnE,EAAA,MAAM,OAAA,GAAU,CAAC,IAAA,KAAkB;AACjC,IAAA,MAAM,MAAA,GAAS,QAAQ,IAAA,CAAK,CAAC,MAAM,OAAA,CAAQ,CAAC,CAAA,KAAM,IAAI,CAAA,IAAK,IAAA;AAC3D,IAAA,MAAM,IAAA,GAAQ,SAA4C,WAAW,CAAA;AACrE,IAAA,OAAO,MAAA,CAAO,QAAQ,IAAI,CAAA;AAAA,EAC5B,CAAA;AAGA,EAAA,MAAM,MAAA,GAAS,CAAC,KAAA,EAAwB,IAAA,KAAoB;AAC1D,IAAA,KAAA,CAAM,cAAc,eAAA,EAAgB;AACpC,IAAA,QAAA,GAAW,IAAI,CAAA;AACf,IAAA,OAAO,KAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,CAAC,IAAA,KAAmB;AACzC,IAAA,IAAI,SAAS,MAAA,EAAW;AACtB,MAAA,uBAAOd,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAA+B,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,IACpE;AACA,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,IAAI,QAAA,CAAS,OAAA,CAAQ,IAAI,CAAA,KAAM,GAAG,OAAO,IAAA;AACzC,MAAA,uBACEA,cAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,sBAAA;AAAA,UACV,OAAO,kBAAA,CAAmB,OAAA,CAAQ,OAAO,MAAA,CAAO,QAAA,CAAS,MAAM,CAAC,CAAA;AAAA,UAChE,QAAA;AAAA,UACA,QAAA,EAAU,WAAW,MAAA,GAAY,CAAC,UAAU,MAAA,CAAO,KAAA,EAAO,EAAE,CAAA;AAAA,UAC5D;AAAA;AAAA,OACF;AAAA,IAEJ;AACA,IAAA,uBACEA,cAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,sBAAA;AAAA,QACV,KAAA,EAAO,QAAQ,IAAI,CAAA;AAAA,QACnB,QAAA;AAAA,QACA,QAAA,EACE,QAAA,GACI,MAAA,GACA,CAAC,KAAA,KACC,MAAA;AAAA,UACE,KAAA;AAAA,UACA,QAAA,CAAS,MAAA,CAAO,CAAC,CAAA,KAAM,MAAM,IAAI;AAAA,SACnC;AAAA,QAER,aAAa,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,OAAA,CAAQ,IAAI,CAAC,CAAA;AAAA;AAAA,KAC9C;AAAA,EAEJ,CAAA;AAEA,EAAA,MAAM,QAAA,GAAW;AAAA,IACf,IAAA,EAAM,EAAE,SAAA,EAAW,0BAAA,EAA2B;AAAA,IAC9C,GAAA,EAAK,EAAE,SAAA,EAAW,8BAAA,EAA+B;AAAA,IACjD,KAAA,EAAO,EAAE,SAAA,EAAW,gCAAA;AAAiC,GACvD;AAEA,EAAA,MAAM,EAAA,GAAoC;AAAA;AAAA;AAAA,IAGxC,IAAA,EAAM,CAACqE,QAAAA,KAAY;AACjB,MAAA,MAAM,IAAA,GAAQA,UAAsD,KAAA,EAAO,cAAA;AAC3E,MAAA,OAAO;AAAA,QACL,SAAA,EAAW,CAAA,yCAAA,EAA4C,IAAA,GAAO,gCAAA,GAAmC,EAAE,CAAA;AAAA,OACrG;AAAA,IACF,CAAA;AAAA,IACA,kBAAA,EAAoB,EAAE,SAAA,EAAW,wBAAA,EAAyB;AAAA,IAC1D,KAAA,EAAO;AAAA,MACL,kBAAA,EAAoB,cAAc,MAAA,GAAS,MAAA;AAAA,MAC3C,cAAA,EAAgB,QAAQ,IAAA,GAAO,MAAA;AAAA,MAC/B,iBAAiB,QAAA,IAAY;AAAA,KAC/B;AAAA,IACA,cAAA,EAAgB,EAAE,SAAA,EAAW,uBAAA,EAAwB;AAAA,IACrD,KAAA,EAAO,EAAE,SAAA,EAAW,uBAAA,EAAwB;AAAA,IAC5C,OAAA,EAAS,EAAE,SAAA,EAAW,wCAAA,EAAyC;AAAA,IAC/D,KAAA,EAAO,EAAE,SAAA,EAAW,CAAA,6CAAA,EAAgD,OAAO,CAAA,CAAA,EAAG;AAAA,IAC9E,MAAA,EAAQ,EAAE,SAAA,EAAW,wBAAA,EAAyB;AAAA,IAC9C,uBAAA,EAAyB,EAAE,SAAA,EAAW,4BAAA,EAA6B;AAAA;AAAA,IAEnE,cAAA,EAAgB;AAAA,MACd,GAAG,QAAA;AAAA,MACH,IAAA,EAAM,EAAE,GAAG,QAAA,CAAS,MAAM,IAAA,EAAM,MAAA,EAAW,gBAAgB,MAAA,EAAU;AAAA,MACrE,OAAO,EAAE,GAAG,QAAA,CAAS,KAAA,EAAO,cAAc,cAAA;AAAe,KAC3D;AAAA,IACA,eAAA,EAAiB,EAAE,SAAA,EAAW,wBAAA,EAAyB;AAAA;AAAA,IAEvD,WAAA,EAAa;AAAA,MACX,IAAA,EAAM,EAAE,SAAA,EAAW,8BAAA,EAAgC,cAAc,iBAAA;AAAkB,KACrF;AAAA,IACA,WAAA,EAAa,EAAE,SAAA,EAAW,uBAAA,EAAwB;AAAA,IAClD,OAAA,EAAS,EAAE,SAAA,EAAW,yBAAA,EAA0B;AAAA,IAChD,IAAA,EAAM,EAAE,SAAA,EAAW,sBAAA,EAAuB;AAAA,IAC1C,IAAA,EAAM,CAACA,QAAAA,KAAY;AACjB,MAAA,MAAM,UAAWA,QAAAA,EAAqE,OAAA;AACtF,MAAA,MAAM,OAAA,GAAU,OAAA,KAAY,MAAA,IAAa,OAAA,CAAQ,iBAAiB,OAAA,CAAQ,KAAA;AAC1E,MAAA,OAAO;AAAA,QACL,SAAA,EAAW,CAAA,oBAAA,EAAuB,OAAA,GAAU,gCAAA,GAAmC,EAAE,CAAA;AAAA,OACnF;AAAA,IACF,CAAA;AAAA,IACA,iBAAA,EAAmB,EAAE,SAAA,EAAW,+BAAA,EAAgC;AAAA;AAAA;AAAA;AAAA;AAAA,IAKhE,QAAA,EAAU;AAAA,MACR,GAAG,QAAA;AAAA,MACH,IAAA,EAAM,EAAE,GAAG,QAAA,CAAS,IAAA,EAAM,MAAM,MAAA,EAAW,cAAA,EAAgB,MAAA,EAAW,KAAA,EAAO,IAAA;AAAK,KACpF;AAAA,IACA,YAAA,EAAc,EAAE,SAAA,EAAW,uBAAA;AAAwB,GACrD;AAEA,EAAA,uBACEzD,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,EACb,QAAA,EAAA;AAAA,IAAA,KAAA,oBACCA,eAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,iBAAA,EAAkB,SAAS,OAAA,EACzC,QAAA,EAAA;AAAA,MAAA,KAAA;AAAA,MACA,QAAA,oBACCZ,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,oBAAA,EAAqB,aAAA,EAAY,QAAO,QAAA,EAAA,GAAA,EAExD;AAAA,KAAA,EAEJ,CAAA;AAAA,oBAEFA,cAAAA;AAAA,MAACsE,uBAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACR,OAAA;AAAA,QACA,QAAA,EAAU,GAAA;AAAA,QACV,KAAA,EAAO,QAAA;AAAA,QACP,OAAA;AAAA,QACA,WAAA;AAAA,QACA,WAAA;AAAA,QACA,QAAA,EAAU,CAAC,KAAA,KAAU,QAAA,GAAW,MAAM,KAAkB,CAAA;AAAA,QACxD,QAAA;AAAA,QACA,OAAA,EAAS,QAAQ,KAAK,CAAA;AAAA,QACtB,WAAA;AAAA,QACA,oBAAA,EAAsB,cAAA;AAAA,QACtB,MAAA;AAAA,QACA,iBAAA;AAAA,QAEA,YAAA,EAAc,OAAA,KAAY,SAAA,GAAY,OAAA,GAAU,OAAA;AAAA,QAChD,kBAAA;AAAA,QACA,UAAA,kBACEtE,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,6BAAA,EAA8B,aAAA,EAAY,MAAA,EACxD,QAAA,kBAAAA,cAAAA,CAACuD,uBAAAA,EAAA,EAAgB,CAAA,EACnB,CAAA;AAAA,QAEF,8BAAcvD,cAAAA,CAACS,iBAAAA,EAAA,EAAU,eAAY,MAAA,EAAO,CAAA;AAAA,QAC5C,8BAAcT,cAAAA,CAACkC,aAAAA,EAAA,EAAM,eAAY,MAAA,EAAO,CAAA;AAAA,QACxC,kCAAkBlC,cAAAA,CAACkC,aAAAA,EAAA,EAAM,eAAY,MAAA,EAAO,CAAA;AAAA,QAC5C,EAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,IACC,WAAA,oBACCtB,eAAAA,CAAC,GAAA,EAAA,EAAE,EAAA,EAAI,MAAA,EAAQ,SAAA,EAAW,CAAA,cAAA,EAAiB,KAAA,GAAQ,wBAAA,GAA2B,EAAE,CAAA,CAAA,EAC9E,QAAA,EAAA;AAAA,sBAAAZ,eAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAA,EAAsB,aAAA,EAAY,QAC/C,QAAA,EAAA,KAAA,mBAAQA,cAAAA,CAACgB,qBAAAA,EAAA,EAAc,CAAA,mBAAKhB,cAAAA,CAACiB,YAAAA,EAAA,EAAK,CAAA,EACrC,CAAA;AAAA,MACC;AAAA,KAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ,CAAC;ACjNM,IAAM,UAAA,GAAahB,gBAAAA,CAA4C,SAASsE,WAAAA,CAC7E;AAAA,EACE,KAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,MAAA;AAAA,EACA,SAAA,GAAY,QAAA;AAAA,EACZ,GAAA;AAAA,EACA,cAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,UAAA;AAAA,EACd,aAAA,GAAgB,UAAA;AAAA,EAChB,IAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AAEA,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIlE,eAAS,CAAC,CAAA;AACxC,EAAA,MAAM,QAAQ,SAAA,IAAa,OAAA;AAE3B,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIA,eAAS,KAAK,CAAA;AAC9D,EAAA,MAAM,YAAY,QAAA,IAAY,gBAAA;AAE9B,EAAA,MAAM,QAAQ,cAAA,IAAkB,OAAA;AAEhC,EAAA,MAAM,cAAc,CAAC,GAAA;AAAA;AAAA,IAEnB,SAAS,UAAA,CAAW,IAAA,EAAgB,OAAA,EAAkB;AACpD,MAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,OAAA;AAC3B,MAAA,MAAM,SAAS,KAAA,KAAU,KAAA;AACzB,MAAA,OAAOmE,kBAAA;AAAA,QACL,OAAA;AAAA,QACA,EAAE,cAAA,EAAgB,MAAA,GAAS,MAAA,GAAS,MAAA,EAAU;AAAA,wBAC9C5D,eAAAA,CAAAgB,mBAAAA,EAAA,EACI,QAAA,EAAA;AAAA,UAAA,CAAA,OAAA,KAAY,SAAA,IAAa,GAAA,CAAI,IAAA,qBAC7B5B,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0BAAA,EAA2B,aAAA,EAAY,MAAA,EACpD,QAAA,EAAA,GAAA,CAAI,IAAA,EACP,CAAA;AAAA,0BAEFA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2BAAA,EAA6B,eAAK,KAAA,EAAM;AAAA,SAAA,EAC1D;AAAA,OACF;AAAA,IACF;AAAA,GAAA;AAEF,EAAA,MAAM,OAAA,GAAU,CAAC,gBAAA,EAAkB,CAAA,gBAAA,EAAmB,OAAO,CAAA,CAAA,EAAI,SAAS,CAAA,CACvE,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,GAAG,CAAA;AAEX,EAAA,uBACEY,eAAAA,CAAC,KAAA,EAAA,EAAI,KAAU,SAAA,EAAW,OAAA,EAAU,GAAG,KAAA,EACrC,QAAA,EAAA;AAAA,oBAAAA,eAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,CAAA,2BAAA,EAA8B,KAAA,GAAQ,qCAAA,GAAwC,EAAE,CAAA,CAAA;AAAA,QAE3F,QAAA,EAAA;AAAA,0BAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAAA,EACZ,QAAA,EAAA;AAAA,YAAA,MAAA,oBACCZ,cAAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAQ,UAAA;AAAA,gBACR,IAAA,EAAK,OAAA;AAAA,gBACL,IAAA,kBAAMA,cAAAA,CAAC0C,iBAAAA,EAAA,EAAU,CAAA;AAAA,gBACjB,YAAA,EAAY,SAAA;AAAA,gBACZ,OAAA,EAAS;AAAA;AAAA,aACX;AAAA,4BAEF1C,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,yBAAyB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,YAC5C,uBAAOA,cAAAA,CAAC,GAAA,EAAA,EAAI,SAAA,EAAU,uBAAuB,QAAA,EAAA,GAAA,EAAI;AAAA,WAAA,EACpD,CAAA;AAAA,UACC,KAAA,oBACCY,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,uBAAA,EACZ,QAAA,EAAA;AAAA,YAAA,cAAA,oBAAkBZ,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BAA2B,QAAA,EAAA,cAAA,EAAe,CAAA;AAAA,YAC3E,2BAAWA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BAA2B,QAAA,EAAA,OAAA,EAAQ;AAAA,WAAA,EAChE,CAAA;AAAA,UAED,4BACCA,cAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,wBAAA;AAAA,cACV,OAAA,EAAQ,UAAA;AAAA,cACR,IAAA,EAAK,QAAA;AAAA,cACL,IAAA,EAAM,4BAAYA,cAAAA,CAACyE,0BAAe,CAAA,mBAAKzE,eAAC0E,uBAAA,EAAA,EAAgB,CAAA;AAAA,cACxD,YAAA,EAAY,YAAY,aAAA,GAAgB,WAAA;AAAA,cACxC,SAAS,MAAM;AACb,gBAAA,mBAAA,CAAoB,CAAC,SAAS,CAAA;AAC9B,gBAAA,QAAA,CAAS,CAAC,SAAS,CAAA;AAAA,cACrB;AAAA;AAAA;AACF;AAAA;AAAA,KAEJ;AAAA,IACC,IAAA,IAAQ,IAAA,CAAK,MAAA,GAAS,CAAA,oBACrB1E,cAAAA;AAAA,MAAC2E,eAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACR,KAAA,EAAO,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,MAAS;AAAA,UACxB,OAAO,GAAA,CAAI,KAAA;AAAA,UACX,UAAU,GAAA,CAAI,QAAA;AAAA,UACd,QAAA,EAAU,YAAY,GAAG;AAAA,SAC3B,CAAE,CAAA;AAAA,QACF,WAAA,EAAa,KAAA;AAAA,QACb,WAAA,EAAa,CAAC,KAAA,KAAU;AACtB,UAAA,UAAA,CAAW,MAAM,KAAK,CAAA;AACtB,UAAA,WAAA,GAAc,MAAM,KAAK,CAAA;AAAA,QAC3B,CAAA;AAAA,QACA,EAAA,EAAI;AAAA,UACF,IAAA,EAAM,EAAE,SAAA,EAAW,sBAAA,EAAuB;AAAA,UAC1C,MAAM,EAAE,SAAA,EAAW,0BAAA,EAA4B,YAAA,EAAc,aAAa,KAAA,EAAM;AAAA,UAChF,QAAA,EAAU,EAAE,SAAA,EAAW,0BAAA,EAA2B;AAAA,UAClD,MAAA,EAAQ,EAAE,SAAA,EAAW,qBAAA,EAAsB;AAAA,UAC3C,MAAA,EAAQ,EAAE,SAAA,EAAW,wBAAA;AAAyB;AAChD;AAAA;AACF,GAAA,EAEJ,CAAA;AAEJ,CAAC;AC1IM,IAAM,MAAA,GAAS1E,gBAAAA,CAA0C,SAAS2E,OAAAA,CACvE;AAAA,EACE,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,OAAA;AAAA,EACP,KAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd,OAAA;AAAA,EACA,WAAA,GAAc,OAAA;AAAA,EACd,WAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,2BAAA;AAAA,EACd,IAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,SAAS9D,WAAAA,EAAM;AACrB,EAAA,MAAM,UAAU,EAAA,IAAM,MAAA;AACtB,EAAA,MAAM,MAAA,GAAS,GAAG,OAAO,CAAA,KAAA,CAAA;AACzB,EAAA,MAAM,MAAA,GAAS,GAAG,OAAO,CAAA,KAAA,CAAA;AACzB,EAAA,MAAM,cAAc,KAAA,IAAS,IAAA;AAC7B,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIT,eAAS,KAAK,CAAA;AAEtC,EAAA,MAAM,WAAA,GAAc2B,iBAAAA;AAAA,IAClB,CAAC,KAAA,KAAmC;AAClC,MAAA,KAAA,EAAO,YAAA,CAAa,QAAQ,UAAU,CAAA;AACtC,MAAA,IAAI,OAAO,GAAA,KAAQ,UAAA,EAAY,GAAA,CAAI,KAAK,CAAA;AAAA,WAAA,IAC/B,GAAA,MAAS,OAAA,GAAU,KAAA;AAAA,IAC9B,CAAA;AAAA,IACA,CAAC,GAAG;AAAA,GACN;AAEA,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,UAAA;AAAA,IACA,aAAa,OAAO,CAAA,CAAA;AAAA,IACpB,aAAa,IAAI,CAAA,CAAA;AAAA,IACjB,WAAA;AAAA,IACA,KAAA,IAAS,iBAAA;AAAA,IACT,QAAA,IAAY,oBAAA;AAAA,IACZ;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,MAAM,EAAA,GAAiC;AAAA,IACrC,IAAA,EAAM;AAAA,MACJ,SAAA,EAAW,CAAA,oCAAA,EAAuC,IAAA,GAAO,2BAAA,GAA8B,EAAE,CAAA,CAAA;AAAA;AAAA,MAEzF,uBAAA,EAAyB;AAAA,KAC3B;AAAA;AAAA,IAEA,MAAA,EAAQ,EAAE,aAAA,EAAe,IAAA,EAAK;AAAA,IAC9B,qBAAA,EAAuB,EAAE,SAAA,EAAW,mBAAA,EAAoB;AAAA;AAAA,IAExD,KAAA,EAAO,EAAE,SAAA,EAAW,kBAAA,EAAmB;AAAA,IACvC,OAAA,EAAS,EAAE,SAAA,EAAW,mCAAA,EAAqC,eAAe,IAAA,EAAK;AAAA,IAC/E,KAAA,EAAO,EAAE,SAAA,EAAW,kBAAA,EAAmB;AAAA,IACvC,OAAA,EAAS,EAAE,SAAA,EAAW,oBAAA,EAAqB;AAAA,IAC3C,IAAA,EAAM,EAAE,SAAA,EAAW,iBAAA,EAAmB,IAAI,MAAA,EAAO;AAAA,IACjD,IAAA,EAAM,EAAE,SAAA,EAAW,iBAAA,EAAkB;AAAA,IACrC,YAAA,EAAc,EAAE,SAAA,EAAW,kCAAA;AAAmC,GAChE;AAEA,EAAA,uBACEpB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,EACb,QAAA,EAAA;AAAA,IAAA,KAAA,oBACCA,eAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,iBAAA,EAAkB,SAAS,OAAA,EACzC,QAAA,EAAA;AAAA,MAAA,KAAA;AAAA,MACA,QAAA,oBACCZ,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,oBAAA,EAAqB,aAAA,EAAY,QAAO,QAAA,EAAA,GAAA,EAExD;AAAA,KAAA,EAEJ,CAAA;AAAA,oBAEFA,cAAAA;AAAA,MAAC6E,iBAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACR,OAAA;AAAA,QACA,aAAA,EAAe,WAAA;AAAA,QACf,KAAA;AAAA,QACA,OAAA;AAAA,QACA,WAAA;AAAA,QACA,WAAA;AAAA,QACA,QAAA,EAAU,CAAC,KAAA,KAAU,QAAA,GAAW,MAAM,KAAK,CAAA;AAAA,QAC3C,MAAA,EAAQ,MAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,QAC1B,MAAA,EAAQ,MAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,QAC3B,QAAA;AAAA,QACA,QAAA;AAAA,QACA,IAAA;AAAA,QACA,OAAA,EAAS,QAAQ,KAAK,CAAA;AAAA,QACtB,WAAA;AAAA,QACA,eAAe,CAAC,MAAA,KACd,MAAA,IAAU,IAAA,mBACR7E,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wBAAA,EAA0B,uBAAY,CAAA,GAEtD,MAAA,CAAQ,MAAA,CAAmC,WAAW,KAAK,MAAM,CAAA;AAAA,QAIrE,YAAA,EAAa,OAAA;AAAA,QACb,YAAA,kBAAcA,cAAAA,CAACS,iBAAAA,EAAA,EAAU,CAAA;AAAA,QACzB,YAAA,kBAAcT,cAAAA,CAACU,eAAAA,EAAA,EAAQ,CAAA;AAAA,QACvB,YAAA,EAAY,QAAQ,MAAA,GAAY,SAAA;AAAA,QAChC,eAAA,EAAe,IAAA;AAAA,QACf,eAAA,EAAe,OAAO,MAAA,GAAS,MAAA;AAAA,QAC/B,kBAAA,EAAkB,cAAc,MAAA,GAAS,MAAA;AAAA,QACzC,cAAA,EAAc,QAAQ,IAAA,GAAO,MAAA;AAAA,QAC7B,iBAAe,QAAA,IAAY,MAAA;AAAA,QAC3B;AAAA;AAAA,KACF;AAAA,IACC,WAAA,oBACCE,eAAAA,CAAC,GAAA,EAAA,EAAE,EAAA,EAAI,MAAA,EAAQ,SAAA,EAAW,CAAA,cAAA,EAAiB,KAAA,GAAQ,wBAAA,GAA2B,EAAE,CAAA,CAAA,EAC9E,QAAA,EAAA;AAAA,sBAAAZ,eAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAA,EAAsB,aAAA,EAAY,QAC/C,QAAA,EAAA,KAAA,mBAAQA,cAAAA,CAACgB,qBAAAA,EAAA,EAAc,CAAA,mBAAKhB,cAAAA,CAACiB,YAAAA,EAAA,EAAK,CAAA,EACrC,CAAA;AAAA,MACC;AAAA,KAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ,CAAC;ACvHD,IAAM6D,QACJ,CAAC,KAAA,EAAe,IAAA,KAChB,CAAC,4BACC9E,cAAAA;AAAA,EAAC,QAAA;AAAA,EAAA;AAAA,IACC,IAAA,EAAK,QAAA;AAAA,IACL,SAAA,EAAU,qBAAA;AAAA,IACV,YAAA,EAAY,KAAA;AAAA,IACZ,UAAU,OAAA,CAAQ,QAAA;AAAA,IAClB,SAAS,OAAA,CAAQ,OAAA;AAAA,IAEhB,QAAA,EAAA;AAAA;AACH,CAAA;AAGG,IAAM,SAAA,GAAYC,gBAAAA,CAA2C,SAAS8E,UAAAA,CAC3E;AAAA,EACE,YAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,kBAAA;AAAA,EACA,YAAA,GAAe,CAAA;AAAA,EACf,YAAA;AAAA,EACA,gBAAA,GAAmB,qBAAA;AAAA,EACnB,EAAA;AAAA,EACA;AACF,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,QAAA,GAAW5E,aAAuB,IAAI,CAAA;AAC5C,EAAAC,0BAAoB,GAAA,EAAK,MAAM,QAAA,CAAS,OAAA,EAAS,YAA8B,CAAA;AAG/E,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIC,cAAAA,CAAS;AAAA,IACrC,KAAA,EAAO,CAAA;AAAA,IACP,IAAA,EAAM,kBAAA,GAAqB,CAAC,CAAA,IAAK;AAAA,GAClC,CAAA;AACD,EAAA,MAAM,KAAA,GAAQ,EAAE,KAAA,EAAO,KAAA,IAAS,QAAQ,KAAA,EAAO,IAAA,EAAM,IAAA,IAAQ,OAAA,CAAQ,IAAA,EAAK;AAE1E,EAAA,uBACEL,cAAAA;AAAA,IAACgF,mBAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MACR,GAAA,EAAK,QAAA;AAAA,MACL,EAAA;AAAA,MACA,YAAA;AAAA,MACA,OAAO,KAAA,CAAM,KAAA;AAAA,MACb,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,kBAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA,EAAc,CAAC,KAAA,KAAU;AACvB,QAAA,UAAA,CAAW,EAAE,KAAA,EAAO,KAAA,CAAM,OAAO,IAAA,EAAM,KAAA,CAAM,MAAM,CAAA;AACnD,QAAA,YAAA,GAAe,KAAK,CAAA;AAAA,MACtB,CAAA;AAAA,MACA,QAAA,EAAU;AAAA,QACR,MAAA,EACE,oFAAA;AAAA,QACF,aAAA,EAAeF,MAAK,oBAAA,kBAAmB9E,eAACiF,uBAAA,EAAA,EAAgB,aAAA,EAAY,QAAO,CAAE,CAAA;AAAA,QAC7E,YAAA,EAAcH,MAAK,oBAAA,kBAAmB9E,eAACkF,iBAAA,EAAA,EAAU,aAAA,EAAY,QAAO,CAAE,CAAA;AAAA,QACtE,YAAA,EAAcJ,MAAK,sBAAA,kBAAkB9E,eAACmF,kBAAA,EAAA,EAAW,aAAA,EAAY,QAAO,CAAE,CAAA;AAAA,QACtE,YAAA,EAAcL,MAAK,qBAAA,kBAAiB9E,eAACoF,wBAAA,EAAA,EAAiB,aAAA,EAAY,QAAO,CAAE,CAAA;AAAA,QAC3E,SAAA,EAAW,CAAC,OAAA,KAAuC;AACjD,UAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,IAAA,KAAS,OAAA,CAAQ,WAAA;AACvC,UAAA,uBACEpF,cAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,SAAA,EAAU,oBAAA;AAAA,cACV,YAAA,EAAY,CAAA,UAAA,EAAU,OAAA,CAAQ,IAAA,GAAO,CAAC,CAAA,CAAA;AAAA,cACtC,cAAA,EAAc,QAAQ,MAAA,GAAS,MAAA;AAAA,cAC/B,SAAS,OAAA,CAAQ,OAAA;AAAA,cAEhB,kBAAQ,IAAA,GAAO;AAAA;AAAA,WAClB;AAAA,QAEJ,CAAA;AAAA;AAAA,QAEA,qBAAqB,CAAC,OAAA,KACpB,QAAQ,OAAA,CAAQ,MAAA,GAAS,qBACvBA,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,oBAAA;AAAA,YACV,IAAA,EAAK,QAAA;AAAA,YACL,YAAA,EAAY,gBAAA;AAAA,YACZ,SAAS,OAAA,CAAQ,OAAA;AAAA,YACjB,WAAA,EAAY,OAAA;AAAA,YACZ,OAAO,OAAA,CAAQ,KAAA;AAAA,YAEf,UAAU,CAAC,KAAA,KAAU,QAAQ,QAAA,CAAS,EAAE,OAA0C;AAAA;AAAA;AACpF,OAEN;AAAA,MACA,EAAA,EAAI;AAAA,QACF,IAAA,EAAM,EAAE,SAAA,EAAW,CAAC,cAAA,EAAgB,SAAS,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,EAAE;AAAA,QACzE,KAAA,EAAO,EAAE,SAAA,EAAW,qBAAA;AAAsB;AAC5C;AAAA,GACF;AAEJ,CAAC;ACvIM,IAAM,KAAA,GAAQC,gBAAAA,CAAuC,SAASoF,MAAAA,CACnE,EAAE,SAAA,EAAW,KAAA,EAAO,QAAA,EAAU,GAAG,KAAA,EAAM,EACvC,GAAA,EACA;AAEA,EAAA,MAAM,QAAA,GAAWlF,aAAmB,IAAI,CAAA;AACxC,EAAAC,0BAAoB,GAAA,EAAK,MAAM,QAAA,CAAS,OAAA,EAAS,YAA8B,CAAA;AAE/E,EAAA,uBACEJ,cAAAA;AAAA,IAACsF,WAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MACR,GAAA,EAAK,QAAA;AAAA,MAEL,EAAA,EAAI;AAAA,QACF,IAAA,EAAM,EAAE,SAAA,EAAW,CAAC,UAAA,EAAY,SAAS,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,GAAG,KAAA,EAAM;AAAA,QAC5E,iBAAA,EAAmB;AAAA,UACjB,SAAA,EAAW,gBAAA;AAAA,UACX,IAAA,EAAM,MAAA;AAAA,UACN,iBAAA,EAAmB;AAAA,SACrB;AAAA,QACA,OAAA,EAAS,EAAE,SAAA,EAAW,mBAAA;AAAoB,OAC5C;AAAA,MACC,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;ACRM,IAAM,KAAA,GAAQrF,gBAAAA,CAAyC,SAASsF,MAAAA,CACrE;AAAA,EACE,KAAA;AAAA,EACA,SAAA,GAAY,IAAA;AAAA,EACZ,SAAA,GAAY,SAAA;AAAA,EACZ,OAAA,GAAU,KAAA;AAAA,EACV,KAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,SAASzE,WAAAA,EAAM;AACrB,EAAA,MAAM,UAAU,EAAA,IAAM,MAAA;AAEtB,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,UAAA;AAAA,IACA,mBAAmB,SAAS,CAAA,CAAA;AAAA,IAC5B,QAAA,IAAY,oBAAA;AAAA,IACZ;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACEF,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,SAAS,KAAA,EACvB,QAAA,EAAA;AAAA,oBAAAZ,cAAAA;AAAA,MAACwF,uBAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACR,QAAA,EAAU,GAAA;AAAA,QACV,OAAA;AAAA,QACA,OAAA;AAAA,QACA,KAAA;AAAA,QACA,IAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,EAAA,EAAI;AAAA,UACF,IAAA,EAAM,EAAE,SAAA,EAAW,mBAAA,EAAoB;AAAA,UACvC,KAAA,EAAO,EAAE,SAAA,EAAW,iBAAA,EAAkB;AAAA,UACtC,GAAA,EAAK,EAAE,SAAA,EAAW,eAAA,EAAgB;AAAA,UAClC,IAAA,EAAM,EAAE,SAAA,EAAW,gBAAA;AAAiB;AACtC;AAAA,KACF;AAAA,oBAEAxF,cAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,CAAA,eAAA,EAAkB,SAAA,GAAY,EAAA,GAAK,0BAA0B,CAAA,CAAA;AAAA,QACxE,OAAA,EAAS,OAAA;AAAA,QAER,QAAA,EAAA;AAAA;AAAA;AACH,GAAA,EACF,CAAA;AAEJ,CAAC;AChED,IAAM,WAAA,GAAc,CAAC,OAAA,EAAiB,KAAA,EAAe,OAAA,KACnD,KAAA,GAAQ,OAAA,GAAU,IAAA,CAAK,KAAA,CAAO,OAAA,IAAW,KAAA,GAAQ,OAAA,CAAA,GAAY,GAAG,CAAA,GAAI,CAAA;AAS/D,IAAM,WAAA,GAAcC,gBAAAA,CAA6C,SAASwF,YAAAA,CAC/E,EAAE,QAAA,EAAU,YAAA,EAAc,SAAA,EAAW,iBAAA,EAAmB,cAAA,EAAgB,KAAA,EAAO,EAAA,EAAI,SAAA,IACnF,GAAA,EACA;AACA,EAAA,MAAM,QAAA,GAAWtF,aAAyB,IAAI,CAAA;AAC9C,EAAAC,0BAAoB,GAAA,EAAK,MAAM,QAAA,CAAS,OAAA,EAAS,YAA8B,CAAA;AAC/E,EAAA,MAAM,SAAA,GAAY,CAAA,EAAGU,WAAAA,EAAO,CAAA,QAAA,CAAA;AAC5B,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIT,cAAAA,CAAS,EAAE,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA;AAErD,EAAA,MAAM,OAAA,GAAU,CAAC,KAAA,KAAmC;AAClD,IAAA,MAAM,KAAK,KAAA,CAAM,aAAA;AACjB,IAAA,UAAA,CAAW;AAAA,MACT,GAAG,WAAA,CAAY,EAAA,CAAG,YAAY,EAAA,CAAG,WAAA,EAAa,GAAG,WAAW,CAAA;AAAA,MAC5D,GAAG,WAAA,CAAY,EAAA,CAAG,WAAW,EAAA,CAAG,YAAA,EAAc,GAAG,YAAY;AAAA,KAC9D,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,KAAA,GAAQ,CAAC,UAAA,EAAuC,KAAA,MAAmB;AAAA,IACvE,SAAA,EAAW,4CAA4C,UAAU,CAAA,CAAA;AAAA,IACjE,QAAA,EAAU,EAAA;AAAA,IACV,eAAA,EAAiB,SAAA;AAAA,IACjB,eAAA,EAAiB,KAAA;AAAA,IACjB,eAAA,EAAiB,CAAA;AAAA,IACjB,eAAA,EAAiB;AAAA,GACnB,CAAA;AAKA,EAAA,MAAM,EAAA,GAAK;AAAA,IACT,IAAA,EAAM,EAAE,SAAA,EAAW,CAAC,gBAAA,EAAkB,SAAS,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,GAAG,KAAA,EAAM;AAAA,IAClF,OAAA,EAAS,EAAE,SAAA,EAAW,yBAAA,EAA0B;AAAA,IAChD,OAAA,EAAS;AAAA,MACP,EAAA,EAAI,SAAA;AAAA,MACJ,SAAA,EAAW,yBAAA;AAAA,MACX,QAAA,EAAU,CAAA;AAAA,MACV,IAAA,EAAM,QAAA;AAAA,MACN,YAAA,EAAc,SAAA;AAAA,MACd,iBAAA,EAAmB,cAAA;AAAA,MACnB,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,IAAA,EAAM,KAAA,CAAM,YAAA,EAAc,OAAA,CAAQ,CAAC,CAAA;AAAA,IACnC,IAAA,EAAM,KAAA,CAAM,UAAA,EAAY,OAAA,CAAQ,CAAC;AAAA,GACnC;AAEA,EAAA,uBACEL,eAAC0F,uBAAA,EAAA,EAAiB,QAAA,EAAQ,MAAC,GAAA,EAAK,QAAA,EAAU,EAAA,EAAQ,EAAA,EAC/C,QAAA,EACH,CAAA;AAEJ,CAAC;AChDM,IAAM,cAAA,GAAiBzF,gBAAAA;AAAA,EAC5B,SAAS0F,eAAAA,CACP;AAAA,IACE,OAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA,GAAU,SAAA;AAAA,IACV,YAAA,EAAc,SAAA;AAAA,IACd,iBAAA,EAAmB,cAAA;AAAA,IACnB,QAAA;AAAA,IACA,EAAA;AAAA,IACA;AAAA,KAEF,GAAA,EACA;AACA,IAAA,MAAM,QAAA,GAAWxF,aAAqB,IAAI,CAAA;AAC1C,IAAAC,0BAAoB,GAAA,EAAK,MAAM,QAAA,CAAS,OAAA,EAAS,YAA8B,CAAA;AAE/E,IAAA,MAAM,OAAA,GAAU,CAAC,YAAA,EAAc,CAAA,YAAA,EAAe,OAAO,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAE5F,IAAA,uBACEJ,cAAAA;AAAA,MAAC4F,yBAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACR,GAAA,EAAK,QAAA;AAAA,QACL,EAAA;AAAA,QACA,OAAA;AAAA,QACA,WAAA,EAAY,OAAA;AAAA,QACZ,WAAA,EAAY,OAAA;AAAA,QACZ,cAAA,EAAe,UAAA;AAAA,QACf,KAAA;AAAA,QACA,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,UAAA,IAAI,KAAA,CAAM,KAAA,IAAS,IAAA,EAAM,QAAA,GAAW,MAAM,KAAwB,CAAA;AAAA,QACpE,CAAA;AAAA,QACA,UAAA,EAAY,KAAA;AAAA,QACZ,QAAA;AAAA,QACA,YAAA,EAAY,SAAA;AAAA,QACZ,iBAAA,EAAiB,cAAA;AAAA,QACjB,cAAc,CAAC,MAAA,qBACbhF,eAAAA,CAAAgB,qBAAA,EACG,QAAA,EAAA;AAAA,UAAA,MAAA,CAAO,IAAA,oBACN5B,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,kBAAA,EAAmB,aAAA,EAAY,MAAA,EAC5C,QAAA,EAAA,MAAA,CAAO,IAAA,EACV,CAAA;AAAA,0BAEFA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mBAAA,EAAqB,iBAAO,KAAA,EAAM;AAAA,SAAA,EACpD,CAAA;AAAA,QAEF,EAAA,EAAI;AAAA,UACF,IAAA,EAAM,EAAE,SAAA,EAAW,OAAA,EAAQ;AAAA,UAC3B,MAAA,EAAQ;AAAA,YACN,SAAA,EAAW,kBAAA;AAAA;AAAA,YAEX,SAAA,EAAW,CAAC,KAAA,KAAyC;AACnD,cAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,OAAA,EAAS,KAAA,CAAM,cAAc,KAAA,EAAM;AAAA,YACvD;AAAA;AACF;AACF;AAAA,KACF;AAAA,EAEJ;AACF;AChEO,IAAM,MAAA,GAASC,gBAAAA,CAA0C,SAAS4F,OAAAA,CACvE;AAAA,EACE,KAAA;AAAA,EACA,SAAA,GAAY,IAAA;AAAA,EACZ,aAAA,GAAgB,OAAA;AAAA,EAChB,IAAA,GAAO,QAAA;AAAA,EACP,OAAA,GAAU,KAAA;AAAA,EACV,QAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,EAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,SAAS/E,WAAAA,EAAM;AACrB,EAAA,MAAM,UAAU,EAAA,IAAM,MAAA;AAEtB,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,WAAA;AAAA,IACA,cAAc,IAAI,CAAA,CAAA;AAAA,IAClB,oBAAoB,aAAa,CAAA,CAAA;AAAA,IACjC,QAAA,IAAY,qBAAA;AAAA,IACZ;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACEF,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,SAAS,KAAA,EACvB,QAAA,EAAA;AAAA,oBAAAZ,cAAAA;AAAA,MAAC8F,uBAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACR,QAAA,EAAU,GAAA;AAAA,QACV,OAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,IAAA;AAAA,QACA,EAAA,EAAI;AAAA,UACF,MAAM,EAAE,SAAA,EAAW,sBAAsB,IAAA,EAAM,MAAA,EAAW,gBAAgB,MAAA,EAAU;AAAA,UACpF,KAAA,EAAO,EAAE,SAAA,EAAW,kBAAA,EAAmB;AAAA,UACvC,MAAA,EAAQ,EAAE,SAAA,EAAW,kBAAA;AAAmB;AAC1C;AAAA,KACF;AAAA,oBAEA9F,cAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,CAAA,gBAAA,EAAmB,SAAA,GAAY,EAAA,GAAK,2BAA2B,CAAA,CAAA;AAAA,QAC1E,OAAA,EAAS,OAAA;AAAA,QAER,QAAA,EAAA;AAAA;AAAA;AACH,GAAA,EACF,CAAA;AAEJ,CAAC;ACjDM,SAAS,SAAS,MAAA,EAA6B;AACpD,EAAA,OAAO,IAAA;AACT;AAiBO,IAAM,IAAA,GAAOC,gBAAAA,CAAsC,SAAS8F,KAAAA,CACjE,EAAE,WAAA,EAAa,WAAA,EAAa,QAAA,EAAU,EAAA,EAAI,SAAA,EAAU,EACpD,GAAA,EACA;AACA,EAAA,MAAM,QAAA,GAAW5F,aAAgB,IAAI,CAAA;AACrC,EAAAC,0BAAoB,GAAA,EAAK,MAAM,QAAA,CAAS,OAAA,EAAS,YAA8B,CAAA;AAE/E,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIC,eAAS,CAAC,CAAA;AACxC,EAAA,MAAM,QAAQ,WAAA,IAAe,OAAA;AAE7B,EAAA,MAAM,MAAA,GAASC,cAAAA,CAAS,OAAA,CAAQ,QAAQ,CAAA,CAAE,MAAA;AAAA,IAAO,CAAC,KAAA,KAChDC,oBAAAA,CAAe,KAAK;AAAA,GACtB;AAEA,EAAA,MAAM,MAAA,GAAS,CAAC,KAAA,KACd,SAAS,UAAU,OAAA,EAAwC;AACzD,IAAA,MAAM,UAAU,OAAA,CAAQ,OAAA;AAGxB,IAAA,MAAM,QAAQ,KAAA,CAAM,OAAA;AACpB,IAAA,OAAOiE,kBAAAA;AAAA,MACL,OAAA;AAAA,MACA;AAAA,QACE,mBAAA,EAAqB,QAAQ,QAAA,GAAW,MAAA;AAAA,QACxC,SAAA,EAAW,CAAC,KAAA,KAAyB;AACnC,UAAA,IAAI,KAAA,IAAS,KAAA,CAAM,GAAA,KAAQ,QAAA,EAAU,KAAA,EAAM;AAAA,eACtC,OAAA,CAAQ,KAAA,CAAM,SAAA,GAAY,KAAK,CAAA;AAAA,QACtC;AAAA,OACF;AAAA,sBACA5D,eAAAA,CAAAgB,mBAAAA,EAAA,EACG,QAAA,EAAA;AAAA,QAAA,KAAA,CAAM,QAAA,oBACL5B,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,eAAA,EAAgB,aAAA,EAAY,MAAA,EACzC,QAAA,EAAA,KAAA,CAAM,QAAA,EACT,CAAA;AAAA,wBAEFA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gBAAA,EAAkB,gBAAM,MAAA,EAAO,CAAA;AAAA,QAC9C,KAAA,CAAM,UAAU,MAAA,oBAAaA,eAAC,KAAA,EAAA,EAAM,SAAA,EAAU,gBAAA,EAAkB,QAAA,EAAA,KAAA,CAAM,KAAA,EAAM,CAAA;AAAA,QAC5E,KAAA;AAAA,wBAECA,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,gBAAA;AAAA,YACV,aAAA,EAAY,MAAA;AAAA,YACZ,OAAA,EAAS,CAAC,KAAA,KAAsB;AAC9B,cAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,cAAA,KAAA,EAAM;AAAA,YACR,CAAA;AAAA,YAEA,QAAA,kBAAAA,cAAAA,CAACoC,SAAAA,EAAA,EAAE;AAAA;AAAA;AACL,OAAA,EAEJ;AAAA,KACF;AAAA,EACF,CAAA;AAEF,EAAA,uBACEpC,cAAAA;AAAA,IAACgG,eAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAQ,IAAA;AAAA,MACR,GAAA,EAAK,QAAA;AAAA,MACL,EAAA;AAAA,MACA,WAAA,EAAa,KAAA;AAAA,MACb,WAAA,EAAa,CAAC,KAAA,KAAU;AACtB,QAAA,UAAA,CAAW,MAAM,KAAK,CAAA;AACtB,QAAA,WAAA,GAAc,MAAM,KAAK,CAAA;AAAA,MAC3B,CAAA;AAAA,MACA,EAAA,EAAI;AAAA,QACF,IAAA,EAAM,EAAE,SAAA,EAAW,CAAC,SAAA,EAAW,SAAS,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,EAAE;AAAA,QACpE,YAAA,EAAc,EAAE,SAAA,EAAW,wBAAA,EAAyB;AAAA,QACpD,UAAA,EAAY,EAAE,SAAA,EAAW,sBAAA,EAAuB;AAAA,QAChD,GAAA,EAAK,EAAE,SAAA,EAAW,cAAA,EAAe;AAAA,QACjC,MAAA,EAAQ,EAAE,SAAA,EAAW,iBAAA,EAAkB;AAAA,QACvC,cAAA,EAAgB,EAAE,SAAA,EAAW,iBAAA;AAAkB,OACjD;AAAA,MAEC,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,EAAO,0BAClBhG,cAAAA;AAAA,QAACiG,gBAAA;AAAA,QAAA;AAAA,UAEC,MAAA,EAAQ,MAAM,KAAA,CAAM,MAAA;AAAA,UACpB,QAAA,EAAU,MAAM,KAAA,CAAM,QAAA;AAAA,UACtB,cAAA,EAAgB,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA;AAAA,UAClC,EAAA,EAAI;AAAA,YACF,MAAA,EAAQ,EAAE,SAAA,EAAW,eAAA,EAAgB;AAAA,YACrC,YAAA,EAAc,EAAE,SAAA,EAAW,cAAA,EAAe;AAAA,YAC1C,OAAA,EAAS,EAAE,SAAA,EAAW,gBAAA;AAAiB,WACzC;AAAA,UAEC,gBAAM,KAAA,CAAM;AAAA,SAAA;AAAA,QAVR,MAAM,GAAA,IAAO;AAAA,OAYrB;AAAA;AAAA,GACH;AAEJ,CAAC;ACrGD,IAAMC,SAAAA,GAA6D;AAAA,EACjE,OAAA,EAAS,MAAA;AAAA,EACT,MAAA,EAAQ,OAAA;AAAA,EACR,OAAA,EAAS,SAAA;AAAA,EACT,IAAA,EAAM;AACR,CAAA;AAEA,IAAMC,KAAAA,GAAwC;AAAA,EAC5C,OAAA,kBAASnG,cAAAA,CAAC6D,eAAAA,EAAA,EAAQ,CAAA;AAAA,EAClB,MAAA,kBAAQ7D,cAAAA,CAAC+D,eAAAA,EAAA,EAAQ,CAAA;AAAA,EACjB,OAAA,kBAAS/D,cAAAA,CAACkC,aAAAA,EAAA,EAAM,CAAA;AAAA,EAChB,IAAA,kBAAMlC,cAAAA,CAACiB,YAAAA,EAAA,EAAK;AACd,CAAA;AAOO,IAAM,KAAA,GAAQhB,gBAAAA,CAAoC,SAASmG,MAAAA,CAChE,EAAE,QAAA,GAAW,WAAA,EAAa,UAAA,GAAa,QAAA,EAAU,EAAA,EAAI,SAAA,EAAU,EAC/D,GAAA,EACA;AACA,EAAA,MAAM,QAAA,GAAWjG,aAAmB,IAAI,CAAA;AAExC,EAAA,MAAM,YAAY,CAAC;AAAA,IACjB,IAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA,GAAW,IAAA;AAAA,IACX,IAAA;AAAA,IACA;AAAA,GACF,MAAwC;AAAA,IACtC,QAAA,EAAU+F,UAAS,IAAI,CAAA;AAAA,IACvB,OAAA,EAAS,KAAA;AAAA,IACT,MAAA,EAAQ,OAAA;AAAA;AAAA,IAER,MAAM,QAAA,mBACJlG,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,gBAAA,EAAiB,aAAA,EAAY,MAAA,EAC1C,QAAA,EAAAmG,MAAK,IAAI,CAAA,EACZ,oBAEAnG,cAAAA,CAAA4B,qBAAA,EAAE,CAAA;AAAA,IAEJ,2BAAW5B,cAAAA,CAACoC,SAAAA,EAAA,EAAE,eAAY,MAAA,EAAO,CAAA;AAAA,IACjC,IAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA,EAAW,sBAAsB,IAAI,CAAA;AAAA,GACvC,CAAA;AAEA,EAAAhC,yBAAAA,CAAoB,KAAK,OAAO;AAAA,IAC9B,MAAM,CAAC,OAAA,KACL,QAAA,CAAS,OAAA,EAAS,KAAK,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,GAAI,QAAQ,GAAA,CAAI,SAAS,CAAA,GAAI,SAAA,CAAU,OAAO,CAAC,CAAA;AAAA,IAC7F,KAAA,EAAO,MAAM,QAAA,CAAS,OAAA,EAAS,KAAA;AAAM,GACvC,CAAE,CAAA;AAEF,EAAA,uBACEJ,cAAAA;AAAA,IAACqG,WAAA;AAAA,IAAA;AAAA,MAEE,GAAI,EAAE,QAAA,EAAU,IAAA,EAAK;AAAA,MACtB,GAAA,EAAK,QAAA;AAAA,MACL,EAAA;AAAA,MACA,QAAA;AAAA,MACA,EAAA,EAAI;AAAA,QACF,IAAA,EAAM;AAAA,UACJ,SAAA,EAAW,CAAC,UAAA,EAAY,SAAS,EAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG;AAAA,SAC7D;AAAA,QACA,OAAA,EAAS,EAAE,SAAA,EAAW,mBAAA,EAAoB;AAAA,QAC1C,OAAA,EAAS,EAAE,SAAA,EAAW,mBAAA,EAAoB;AAAA,QAC1C,IAAA,EAAM,EAAE,SAAA,EAAW,gBAAA,EAAiB;AAAA,QACpC,OAAA,EAAS,EAAE,SAAA,EAAW,iBAAA,EAAkB;AAAA,QACxC,MAAA,EAAQ,EAAE,SAAA,EAAW,kBAAA,EAAmB;AAAA,QACxC,WAAA,EAAa,EAAE,SAAA,EAAW,iBAAA,EAAmB,cAAc,UAAA,EAAW;AAAA;AAAA,QAEtE,UAAA,EAAY;AAAA,UACV,UAAA,EAAY;AAAA,YACV,KAAA,EAAO,0BAAA;AAAA,YACP,WAAA,EAAa,iCAAA;AAAA,YACb,UAAA,EAAY;AAAA;AACd;AACF;AACF;AAAA,GACF;AAEJ,CAAC","file":"index.cjs","sourcesContent":["import {\n Children,\n forwardRef,\n isValidElement,\n useImperativeHandle,\n useRef,\n useState,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport {\n Accordion as PrimeAccordion,\n AccordionTab as PrimeAccordionTab,\n type AccordionPassThroughTransitionType,\n} from 'primereact/accordion';\nimport { CaretDown, CaretUp } from '@phosphor-icons/react';\nimport './Accordion.css';\n\n/** Um item (.Accordion Item no Figma) e o conteúdo dele. */\nexport interface AccordionTabProps {\n /** Título (Accordion Item Title no Figma). Com headerContent, não aparece. */\n header: string;\n /** Texto abaixo do título (Show Description no Figma). */\n description?: string;\n /** Cabeçalho livre no lugar do título e da descrição (Type=Custom no Figma). */\n headerContent?: ReactNode;\n disabled?: boolean;\n /** Conteúdo do item aberto (Accordion Item Body no Figma). */\n children?: ReactNode;\n}\n\n/** Só descreve o item: quem desenha é o Accordion. */\nexport function AccordionTab(_props: AccordionTabProps): null {\n return null;\n}\n\nexport interface AccordionProps {\n /** Mais de um item aberto ao mesmo tempo. */\n multiple?: boolean;\n /**\n * Item(ns) aberto(s) (controlado): o índice, ou a lista com `multiple`; null fecha todos. Sem\n * ele, o Accordion controla sozinho e começa com o primeiro aberto, como nos exemplos do Figma.\n */\n activeIndex?: number | number[] | null;\n onTabChange?: (activeIndex: number | number[] | null) => void;\n /** Os itens, como `<AccordionTab>`. */\n children: ReactNode;\n id?: string;\n className?: string;\n}\n\n// Seta (Icon Button tertiary de 32px no Figma). É só visual: o botão é o cabeçalho inteiro.\nconst seta = (icon: ReactNode) => (\n <span className=\"cr-accordion__toggle\" aria-hidden=\"true\">\n {icon}\n </span>\n);\n\n// Base: Accordion do PrimeReact no modo unstyled (o p-accordion do PrimeNG da produção): abrir e\n// fechar (um ou vários, com multiple), o teclado (setas, Home e End entre os cabeçalhos; Enter e\n// Espaço abrem) e o cabeçalho como botão com aria-expanded ligado à região do conteúdo são do\n// Prime. Cada item vem de um <AccordionTab> do Cristal, com o título e a descrição do Figma (ou o\n// cabeçalho livre do Type=Custom) e a seta no fim. Abre e fecha sem animação (o Figma não define).\n// A ref entrega a raiz.\nexport const Accordion = forwardRef<HTMLDivElement, AccordionProps>(function Accordion(\n { multiple = false, activeIndex, onTabChange, children, id, className },\n ref,\n) {\n const primeRef = useRef<PrimeAccordion>(null);\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLDivElement);\n\n // Com onTabChange o Prime trata os itens abertos como controlados: sem activeIndex, o Cristal\n // guarda.\n const [interno, setInterno] = useState<number | number[] | null>(multiple ? [0] : 0);\n const abertos = activeIndex === undefined ? interno : activeIndex;\n\n const tabs = Children.toArray(children).filter(\n (child): child is ReactElement<AccordionTabProps> => isValidElement(child),\n );\n\n return (\n <PrimeAccordion\n // O Accordion aceita unstyled como os outros, mas o d.ts do Prime 10 esqueceu de declarar.\n {...({ unstyled: true } as object)}\n ref={primeRef}\n id={id}\n multiple={multiple}\n activeIndex={abertos}\n onTabChange={(event) => {\n const index = event.index as number | number[] | null;\n setInterno(index);\n onTabChange?.(index);\n }}\n expandIcon={seta(<CaretDown />)}\n collapseIcon={seta(<CaretUp />)}\n pt={{ root: { className: ['cr-accordion', className].filter(Boolean).join(' ') } }}\n >\n {tabs.map((tab, index) => (\n <PrimeAccordionTab\n key={tab.key ?? index}\n header={tab.props.header}\n disabled={tab.props.disabled}\n headerTemplate={\n tab.props.headerContent ? (\n <span className=\"cr-accordion__custom\">{tab.props.headerContent}</span>\n ) : (\n <span className=\"cr-accordion__texts\">\n <span className=\"cr-accordion__title\">{tab.props.header}</span>\n {tab.props.description && (\n <span className=\"cr-accordion__description\">{tab.props.description}</span>\n )}\n </span>\n )\n }\n pt={{\n root: { className: 'cr-accordion__item' },\n header: { className: 'cr-accordion__header' },\n headerAction: { className: 'cr-accordion__action' },\n toggleableContent: { className: 'cr-accordion__region' },\n content: { className: 'cr-accordion__content' },\n // Sem animação: o Prime manteria o conteúdo na tela pelos 450ms da saída dele.\n transition: { timeout: 0 } as AccordionPassThroughTransitionType,\n }}\n >\n {tab.props.children}\n </PrimeAccordionTab>\n ))}\n </PrimeAccordion>\n );\n});\n","import { forwardRef, useId } from 'react';\nimport {\n AutoComplete as PrimeAutoComplete,\n type AutoCompleteProps as PrimeAutoCompleteProps,\n} from 'primereact/autocomplete';\nimport { Info, WarningCircle } from '@phosphor-icons/react';\nimport type { InputSize, InputVariant } from '../Input';\nimport '../Input/Input.css';\nimport './AutoComplete.css';\n\nexport type AutoCompleteVariant = InputVariant;\nexport type AutoCompleteSize = InputSize;\n\nexport interface AutoCompleteProps extends Omit<\n PrimeAutoCompleteProps,\n // Fora do Figma (seleção múltipla, botão de dropdown, mensagem de vazio, carregando) ou\n // controlados pelo Cristal (visual, rótulo, erro).\n | 'size'\n | 'variant'\n | 'invalid'\n | 'multiple'\n | 'selectionLimit'\n | 'selectedItemTemplate'\n | 'removeTokenIcon'\n | 'dropdown'\n | 'dropdownAriaLabel'\n | 'dropdownAutoFocus'\n | 'dropdownIcon'\n | 'dropdownMode'\n | 'showEmptyMessage'\n | 'emptyMessage'\n | 'loadingIcon'\n | 'inputClassName'\n | 'panelClassName'\n | 'scrollHeight'\n | 'inputRef'\n | 'pt'\n | 'ptOptions'\n | 'unstyled'\n | 'children'\n> {\n /** Type no Figma: Outline (com borda) e Filled (com fundo). */\n variant?: AutoCompleteVariant;\n /** Size no Figma: 32, 36, 42 e 48px de altura do campo. */\n size?: AutoCompleteSize;\n /** Rótulo acima do campo (Label no Figma). Sem rótulo, passe `aria-label`. */\n label?: string;\n /** Dica abaixo do campo (Hint no Figma). */\n hint?: string;\n /** Mensagem de erro: deixa o campo no estado Error e mostra a dica de erro no lugar da dica. */\n error?: string;\n}\n\n// Base: AutoComplete do PrimeReact no modo unstyled (busca, lista, teclado e ARIA de combobox do\n// Prime, espelhando o p-autoComplete do PrimeNG da produção). O rótulo e a dica são os do Input\n// (.cr-field). O campo do AutoComplete no Figma não tem ícones, então o próprio <input> é a caixa\n// do campo: assim o painel, que o Prime alinha pelo <input>, fica na largura e na borda do campo.\nexport const AutoComplete = forwardRef<HTMLInputElement, AutoCompleteProps>(function AutoComplete(\n {\n variant = 'outline',\n size = 'large',\n label,\n hint,\n error,\n inputId,\n required,\n disabled,\n className,\n style,\n ...props\n },\n ref,\n) {\n const autoId = useId();\n const id = inputId ?? autoId;\n const hintId = `${id}-hint`;\n const supportText = error ?? hint;\n\n const classes = [\n 'cr-field',\n 'cr-autocomplete',\n `cr-field--${variant}`,\n `cr-field--${size}`,\n error && 'cr-field--error',\n disabled && 'cr-field--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={classes} style={style}>\n {label && (\n <label className=\"cr-field__label\" htmlFor={id}>\n {label}\n {required && (\n <span className=\"cr-field__required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n <PrimeAutoComplete\n unstyled\n inputRef={ref}\n inputId={id}\n required={required}\n disabled={disabled}\n // 5 itens visíveis, como no Figma (5 × 37px).\n scrollHeight=\"185px\"\n pt={{\n root: { className: 'cr-autocomplete__root' },\n input: {\n root: {\n className: 'cr-field__control cr-autocomplete__input',\n 'aria-describedby': supportText ? hintId : undefined,\n 'aria-invalid': error ? true : undefined,\n },\n },\n // O Prime mostra um spinner próprio enquanto busca; o Figma não define esse estado.\n loadingIcon: { className: 'cr-autocomplete__loader' },\n panel: { className: 'cr-autocomplete__panel' },\n list: { className: 'cr-autocomplete__list' },\n item: { className: 'cr-autocomplete__item' },\n }}\n {...props}\n />\n {supportText && (\n <p id={hintId} className={`cr-field__hint${error ? ' cr-field__hint--error' : ''}`}>\n <span className=\"cr-field__hint-icon\" aria-hidden=\"true\">\n {error ? <WarningCircle /> : <Info />}\n </span>\n {supportText}\n </p>\n )}\n </div>\n );\n});\n","import {\n forwardRef,\n useImperativeHandle,\n useRef,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { Badge as PrimeBadge } from 'primereact/badge';\nimport './Badge.css';\n\n/** State no Figma. */\nexport type BadgeVariant = 'default' | 'error' | 'warning' | 'success' | 'disabled';\n/** Size no Figma: large = 24px, medium = 16px, small = ponto de 8px sem número. */\nexport type BadgeSize = 'large' | 'medium' | 'small';\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n variant?: BadgeVariant;\n size?: BadgeSize;\n /** Valor do badge (Badge Value no Figma). Ignorado no `small`. */\n children?: ReactNode;\n}\n\n// Base: Badge do PrimeReact no modo unstyled; o visual vem todo do Badge.css. No small o\n// conteúdo é descartado: é um indicador sem número (para ele ser anunciado, passe role=\"img\" e\n// aria-label).\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n { variant = 'default', size = 'large', className, children, ...props },\n ref,\n) {\n const primeRef = useRef<PrimeBadge>(null);\n // O PrimeReact entrega na ref um objeto com getElement(); o Cristal repassa o <span>.\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLSpanElement);\n\n const classes = ['cr-badge', `cr-badge--${variant}`, `cr-badge--${size}`, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <PrimeBadge\n unstyled\n ref={primeRef}\n className={classes}\n value={size === 'small' ? null : children}\n {...props}\n />\n );\n});\n","import { forwardRef, type ButtonHTMLAttributes, type ReactNode, type Ref } from 'react';\nimport { Button as PrimeButton } from 'primereact/button';\nimport './Button.css';\n\n/** Hierarchy no Figma: Primary (Filled), Secondary (Tonal) e Tertiary (Outlined). */\nexport type ButtonVariant = 'primary' | 'secondary' | 'tertiary';\n/** Size no Figma: 32, 36, 42 e 48px de altura. */\nexport type ButtonSize = 'xsmall' | 'small' | 'medium' | 'large';\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n /** Ícone antes do texto (Leading Icon no Figma). Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n leadingIcon?: ReactNode;\n /** Ícone depois do texto (Trailing Icon no Figma). */\n trailingIcon?: ReactNode;\n}\n\n// Base: Button do PrimeReact no modo unstyled. O comportamento é o do Prime (espelhando o PrimeNG\n// da produção) e o visual vem todo do Button.css. O Prime aceita um ícone só (`icon`); como o\n// Figma permite os dois juntos, os ícones vão como conteúdo do botão.\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n variant = 'primary',\n size = 'large',\n leadingIcon,\n trailingIcon,\n type = 'button',\n className,\n children,\n ...props\n },\n ref,\n) {\n const classes = ['cr-button', `cr-button--${variant}`, `cr-button--${size}`, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <PrimeButton\n unstyled\n // O PrimeReact tipa a ref como a instância da classe, mas entrega o <button> nela.\n ref={ref as unknown as Ref<PrimeButton>}\n type={type}\n className={classes}\n {...props}\n >\n {leadingIcon && (\n <span className=\"cr-button__icon\" aria-hidden=\"true\">\n {leadingIcon}\n </span>\n )}\n {children}\n {trailingIcon && (\n <span className=\"cr-button__icon\" aria-hidden=\"true\">\n {trailingIcon}\n </span>\n )}\n </PrimeButton>\n );\n});\n","import { forwardRef, type HTMLAttributes, type Ref } from 'react';\nimport { Card as PrimeCard } from 'primereact/card';\nimport './Card.css';\n\n/** Padding no Figma: X-Small (8px), Small (12px), Medium (16px), Large (20px) e X-Large (24px). */\nexport type CardPadding = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';\n\nexport interface CardProps extends HTMLAttributes<HTMLDivElement> {\n padding?: CardPadding;\n /** Outline no Figma: borda de 1px em stroke/neutral/base. */\n outline?: boolean;\n}\n\n// Base: Card do PrimeReact no modo unstyled (o p-card do PrimeNG da produção). No Figma o Card é\n// só o contêiner, com o conteúdo num slot: o Cristal não repassa header, title, subTitle nem\n// footer do Prime, e o conteúdo vai em children. O visual vem do Card.css.\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n { padding = 'xsmall', outline = false, className, style, children, ...props },\n ref,\n) {\n const classes = ['cr-card', `cr-card--${padding}`, outline && 'cr-card--outline', className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <PrimeCard\n unstyled\n // O Card do Prime é um forwardRef que entrega o próprio <div>, mas o tipo o declara como classe.\n ref={ref as unknown as Ref<PrimeCard>}\n // No unstyled, className e style do Card do Prime não chegam ao elemento; vão pelo pt.\n pt={{\n root: { className: classes, style },\n body: { className: 'cr-card__body' },\n content: { className: 'cr-card__content' },\n }}\n {...props}\n >\n {children}\n </PrimeCard>\n );\n});\n","import { useEffect, useId, type ReactNode, type RefObject } from 'react';\nimport { Tooltip as PrimeTooltip, type TooltipPassThroughOptions } from 'primereact/tooltip';\nimport './Tooltip.css';\n\n/** Type no Figma: Plain (rótulo curto, uma linha) e Rich (texto de até 300px, quebra linha). */\nexport type TooltipType = 'plain' | 'rich';\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\nexport interface TooltipProps {\n /** Elemento que mostra o tooltip: ref, elemento ou seletor CSS. */\n target: RefObject<HTMLElement | null> | HTMLElement | string;\n /** Texto do tooltip (Label no Plain, Text no Rich). */\n content: ReactNode;\n type?: TooltipType;\n /** Lado do alvo. O Prime inverte o lado se faltar espaço na tela. */\n position?: TooltipPosition;\n /** O que abre o tooltip; o padrão abre no hover e no foco do teclado. */\n event?: 'hover' | 'focus' | 'both';\n showDelay?: number;\n hideDelay?: number;\n disabled?: boolean;\n /**\n * Liga o texto ao alvo como descrição (aria-describedby). Padrão: true. Use false quando o texto\n * já é o nome do alvo (como no IconButton), para o leitor de tela não ler duas vezes.\n */\n describe?: boolean;\n id?: string;\n className?: string;\n}\n\n// Última interação foi pelo teclado? No foco, o tooltip só abre nesse caso: um foco posto pelo\n// código (o X do Drawer ou do Modal ao abrir) ou deixado por um clique não deve abrir o tooltip.\nlet usandoTeclado = false;\nif (typeof document !== 'undefined') {\n document.addEventListener('keydown', () => (usandoTeclado = true), true);\n document.addEventListener('pointerdown', () => (usandoTeclado = false), true);\n}\n\nconst resolveTargets = (target: TooltipProps['target']): HTMLElement[] => {\n if (typeof target === 'string') return Array.from(document.querySelectorAll<HTMLElement>(target));\n if (target instanceof HTMLElement) return [target];\n return target.current ? [target.current] : [];\n};\n\n// Base: Tooltip do PrimeReact no modo unstyled (abrir/fechar, atraso, Esc e posicionamento com\n// troca de lado do Prime, espelhando o pTooltip do PrimeNG da produção). O visual vem do\n// Tooltip.css; o Figma não tem seta. Dois ajustes de acessibilidade: o Prime marca o tooltip\n// aberto com aria-hidden=\"true\", e não liga o alvo ao texto; aqui o alvo ganha aria-describedby.\n// E, no foco, ele só abre quando quem chegou ali foi o teclado.\nexport function Tooltip({\n target,\n content,\n type = 'plain',\n position = 'bottom',\n event = 'both',\n showDelay,\n hideDelay,\n disabled,\n describe = true,\n id,\n className,\n}: TooltipProps) {\n const autoId = useId();\n const tooltipId = id ?? autoId;\n\n useEffect(() => {\n if (!describe) return;\n const elements = resolveTargets(target);\n elements.forEach((element) => element.setAttribute('aria-describedby', tooltipId));\n return () => elements.forEach((element) => element.removeAttribute('aria-describedby'));\n }, [target, tooltipId, describe]);\n\n const classes = ['cr-tooltip', `cr-tooltip--${type}`, className].filter(Boolean).join(' ');\n\n const pt: TooltipPassThroughOptions = {\n root: (options) => {\n const side = (options as { state?: { position?: string } })?.state?.position ?? position;\n return { className: `${classes} cr-tooltip--${side}`, 'aria-hidden': false };\n },\n arrow: { className: 'cr-tooltip__arrow' },\n text: { className: 'cr-tooltip__text' },\n };\n\n return (\n <PrimeTooltip\n unstyled\n id={tooltipId}\n target={target as never}\n position={position}\n event={event}\n showDelay={showDelay}\n hideDelay={hideDelay}\n disabled={disabled}\n onBeforeShow={(e) => e.originalEvent?.type !== 'focus' || usandoTeclado}\n pt={pt}\n >\n {content}\n </PrimeTooltip>\n );\n}\n","import { useLayoutEffect, useMemo, useRef, useState, type ReactNode } from 'react';\nimport { Chart as PrimeChart } from 'primereact/chart';\nimport type { ChartData, ChartOptions, Plugin, ScriptableContext } from 'chart.js';\nimport { Question } from '@phosphor-icons/react';\nimport { Tooltip } from '../Tooltip';\nimport './Chart.css';\n\n/**\n * Cor da série: os tokens de gráfico (color/chart/fill/<cor>/<tom>), na ordem fixa. Sem `color`,\n * cada série pega a da sua posição; a cor acompanha a série, nunca a ordem. A quinary (ciano) fica\n * de fora: clara demais sobre o fundo (1,75:1).\n */\nexport type ChartColor = 'primary' | 'secondary' | 'tertiary' | 'quaternary';\n\n/** Tom da cor (o passo do token). Padrão: 600 na linha e 500 na barra, como no Figma. */\nexport type ChartTone = 100 | 200 | 300 | 400 | 500 | 600;\n\n/** Uma série: uma linha ou um conjunto de barras. */\nexport interface ChartSeries {\n label: string;\n /** Um valor por rótulo do eixo X; null deixa o ponto em branco. */\n data: (number | null)[];\n color?: ChartColor;\n /** Tom da cor: nas barras empilhadas do Figma, partes de um total usam tons da mesma cor. */\n tone?: ChartTone;\n /** Eixo do valor: o da esquerda (padrão) ou o da direita (y2Axis). */\n axis?: 'left' | 'right';\n}\n\n/** Escala de um eixo Y. */\nexport interface ChartAxis {\n /** Texto de cada marca e do valor no tooltip (ex.: `(v) => \\`R$ ${v}\\``). */\n format?: (value: number) => string;\n min?: number;\n max?: number;\n /** Distância entre as marcas (ex.: 50). */\n stepSize?: number;\n}\n\nexport interface ChartProps {\n /** Linhas com área (Chart / Line) ou barras (Chart / Bar). Padrão: line. */\n type?: 'line' | 'bar';\n /** Barras empilhadas: as séries somam numa barra só por rótulo. */\n stacked?: boolean;\n /** Rótulos do eixo X, um por ponto. */\n labels: string[];\n /** As séries, até 4 cores (as de gráfico dos tokens). */\n series: ChartSeries[];\n /** Eixo da esquerda. */\n yAxis?: ChartAxis;\n /** Eixo da direita, para séries com `axis: 'right'`. */\n y2Axis?: ChartAxis;\n /** Título do card. Sem título nem ações, só o gráfico e a legenda, sem a caixa. */\n title?: string;\n /** Texto do ícone de ajuda (Question) ao lado do título, num Tooltip. */\n help?: string;\n helpLabel?: string;\n /** Botões à direita do título (IconButton tertiary xsmall no Figma). */\n actions?: ReactNode;\n /** Altura da área do gráfico, com os eixos. Padrão: 266px, a do Figma. */\n height?: number;\n id?: string;\n className?: string;\n}\n\nconst CORES: ChartColor[] = ['primary', 'secondary', 'tertiary', 'quaternary'];\nconst corDe = (serie: ChartSeries, indice: number) => serie.color ?? CORES[indice % CORES.length]!;\nconst tomDe = (serie: ChartSeries, tipo: 'line' | 'bar') =>\n serie.tone ?? (tipo === 'bar' ? 500 : 600);\n\n/** Valores dos tokens que o Chart.js (canvas) precisa: ele não lê variáveis CSS. */\ninterface Tema {\n cor: (cor: ChartColor, tom: ChartTone) => string;\n grade: string;\n texto: string;\n cruz: string;\n superficie: string;\n tooltipFundo: string;\n tooltipTexto: string;\n fonte: { family: string; size: number; weight: number; lineHeight: number };\n}\n\nconst lerTema = (el: HTMLElement): Tema => {\n const css = getComputedStyle(el);\n const v = (nome: string) => css.getPropertyValue(nome).trim();\n const px = (nome: string) => parseFloat(v(nome));\n return {\n cor: (cor, tom) => v(`--cr-color-chart-fill-${cor}-${tom}`),\n grade: v('--cr-color-chart-tertiary'),\n texto: v('--cr-color-chart-secondary'),\n cruz: v('--cr-color-stroke-neutral-bold'),\n superficie: v('--cr-color-fill-neutral-container'),\n tooltipFundo: v('--cr-color-fill-neutral-boldest'),\n tooltipTexto: v('--cr-color-text-inverse-base'),\n fonte: {\n family: v('--cr-typography-label-small-10-semibold-font-family'),\n size: px('--cr-typography-label-small-10-semibold-font-size'),\n weight: Number(v('--cr-typography-label-small-10-semibold-font-weight')),\n lineHeight:\n px('--cr-typography-label-small-10-semibold-line-height') /\n px('--cr-typography-label-small-10-semibold-font-size'),\n },\n };\n};\n\n// #rrggbb (os tokens de cor) com transparência, para o degradê da área.\nconst comAlfa = (hex: string, alfa: number) => {\n const n = parseInt(hex.replace('#', ''), 16);\n return `rgba(${(n >> 16) & 255}, ${(n >> 8) & 255}, ${n & 255}, ${alfa})`;\n};\n\n// Linha vertical (stroke/neutral/bold) no X do tooltip: o leitor mira o horário, não a linha.\nconst cruz = (cor: string): Plugin<'line'> => ({\n id: 'crCruz',\n afterDatasetsDraw(chart) {\n const ativo = chart.tooltip?.getActiveElements()[0];\n if (!ativo) return;\n const { ctx, chartArea } = chart;\n ctx.save();\n ctx.strokeStyle = cor;\n ctx.lineWidth = 1;\n ctx.beginPath();\n ctx.moveTo(ativo.element.x, chartArea.top);\n ctx.lineTo(ativo.element.x, chartArea.bottom);\n ctx.stroke();\n ctx.restore();\n },\n});\n\n// Curva do Figma: cada trecho entre dois pontos é um S regular, que sai e chega na horizontal\n// (como uma senoide), sem passar dos valores. O Chart.js calcula as alças da curva pelos vizinhos\n// (tension); antes de desenhar, o Cristal põe as alças de cada ponto na sua própria altura, no\n// meio do caminho até o ponto anterior e o seguinte, e avisa a linha que elas já estão prontas.\nconst curvaDoFigma: Plugin<'line'> = {\n id: 'crCurva',\n beforeDatasetsDraw(chart) {\n chart.data.datasets.forEach((_, indice) => {\n const meta = chart.getDatasetMeta(indice);\n const pontos = meta.data as unknown as {\n x: number;\n y: number;\n skip?: boolean;\n cp1x: number;\n cp1y: number;\n cp2x: number;\n cp2y: number;\n }[];\n pontos.forEach((ponto, i) => {\n const antes = pontos[i - 1];\n const depois = pontos[i + 1];\n ponto.cp1x = antes ? (antes.x + ponto.x) / 2 : ponto.x;\n ponto.cp2x = depois ? (ponto.x + depois.x) / 2 : ponto.x;\n ponto.cp1y = ponto.y;\n ponto.cp2y = ponto.y;\n });\n if (meta.dataset)\n (meta.dataset as unknown as { _pointsUpdated: boolean })._pointsUpdated = true;\n });\n },\n};\n\nconst formatar = (eixo: ChartAxis | undefined, valor: number) =>\n eixo?.format ? eixo.format(valor) : String(valor);\n\n// Base: Chart do PrimeReact (o p-chart do PrimeNG da produção), que desenha com o Chart.js. O\n// Cristal monta os gráficos do Figma: linhas com área (Chart / Line), com curvas de 2px em S entre\n// os pontos (curvaDoFigma) e a área em degradê da cor da série (10% em cima, 2% embaixo); e barras\n// de 10px, empilhadas ou não, com 2px de raio no topo. Grade tracejada, eixos em\n// label/small-10/semibold e um segundo eixo Y opcional à direita. As cores são os tokens de\n// gráfico (color/chart/*) e as fontes, as do Cristal, lidos do CSS ao montar (o canvas não lê\n// variáveis). A legenda é HTML, com os tokens; o tooltip lista todas as séries no X (na linha, com\n// a linha vertical). Para o leitor de tela, o gráfico é uma imagem com o título como nome, e os\n// valores ficam numa tabela escondida. O card (título, ajuda e ações, na caixa com borda) é o\n// frame do Figma.\nexport function Chart({\n type = 'line',\n stacked = false,\n labels,\n series,\n yAxis,\n y2Axis,\n title,\n help,\n helpLabel = 'Ajuda',\n actions,\n height = 266,\n id,\n className,\n}: ChartProps) {\n const raiz = useRef<HTMLDivElement>(null);\n const ajuda = useRef<HTMLButtonElement>(null);\n const [tema, setTema] = useState<Tema>();\n useLayoutEffect(() => {\n if (raiz.current) setTema(lerTema(raiz.current));\n }, []);\n\n const temDireita = series.some((s) => s.axis === 'right');\n\n const data = useMemo<ChartData<'line' | 'bar'> | undefined>(() => {\n if (!tema) return undefined;\n return {\n labels,\n datasets: series.map((s, i) => {\n const cor = tema.cor(corDe(s, i), tomDe(s, type));\n if (type === 'bar') {\n // Raio de 2px só no topo da barra (no empilhado, no topo da última série).\n const topo = !stacked || i === series.length - 1;\n return {\n type: 'bar' as const,\n label: s.label,\n data: s.data,\n yAxisID: s.axis === 'right' ? 'y2' : 'y',\n backgroundColor: cor,\n hoverBackgroundColor: cor,\n barThickness: 10,\n borderSkipped: false,\n borderRadius: topo ? { topLeft: 2, topRight: 2, bottomLeft: 0, bottomRight: 0 } : 0,\n };\n }\n return {\n type: 'line' as const,\n label: s.label,\n data: s.data,\n yAxisID: s.axis === 'right' ? 'y2' : 'y',\n borderColor: cor,\n borderWidth: 2,\n tension: 0.4,\n pointRadius: 0,\n pointHoverRadius: 4,\n pointHoverBorderWidth: 2,\n pointHoverBorderColor: tema.superficie,\n pointHoverBackgroundColor: cor,\n fill: 'origin',\n backgroundColor: (ctx: ScriptableContext<'line'>) => {\n const area = ctx.chart.chartArea;\n if (!area) return comAlfa(cor, 0.1);\n const degrade = ctx.chart.ctx.createLinearGradient(0, area.top, 0, area.bottom);\n degrade.addColorStop(0, comAlfa(cor, 0.1));\n degrade.addColorStop(1, comAlfa(cor, 0.02));\n return degrade;\n },\n };\n }),\n };\n }, [tema, labels, series, type, stacked]);\n\n const options = useMemo<ChartOptions<'line' | 'bar'> | undefined>(() => {\n if (!tema) return undefined;\n const fonte = { ...tema.fonte, weight: tema.fonte.weight as never };\n const eixoY = (eixo: ChartAxis | undefined, direita: boolean) => ({\n position: direita ? ('right' as const) : ('left' as const),\n stacked,\n min: eixo?.min ?? 0,\n max: eixo?.max,\n // A grade tracejada do Figma (2px e 2px): no Chart.js 4, o tracejado fica em border.dash.\n border: { display: false, dash: [2, 2] },\n grid: direita\n ? { drawOnChartArea: false, drawTicks: false }\n : { color: tema.grade, lineWidth: 1, drawTicks: false },\n ticks: {\n color: tema.texto,\n font: fonte,\n padding: 8,\n stepSize: eixo?.stepSize,\n callback: (valor: string | number) => formatar(eixo, Number(valor)),\n },\n });\n return {\n responsive: true,\n maintainAspectRatio: false,\n animation: false,\n interaction: { mode: 'index', intersect: false },\n layout: { padding: { top: 8 } },\n scales: {\n x: {\n stacked,\n border: { display: false },\n grid: { display: false },\n // Os rótulos só somem quando não cabem (como no Figma, as 24 horas cabem em 638px).\n ticks: { color: tema.texto, font: fonte, maxRotation: 0, padding: 8, autoSkipPadding: 2 },\n },\n y: eixoY(yAxis, false),\n ...(temDireita ? { y2: eixoY(y2Axis, true) } : {}),\n },\n plugins: {\n legend: { display: false },\n tooltip: {\n backgroundColor: tema.tooltipFundo,\n titleColor: tema.tooltipTexto,\n bodyColor: tema.tooltipTexto,\n titleFont: fonte,\n bodyFont: { ...fonte, weight: 400 as never },\n padding: { x: 12, y: 8 },\n cornerRadius: 8,\n usePointStyle: true,\n boxWidth: 8,\n boxHeight: type === 'bar' ? 8 : 2,\n callbacks: {\n label: (item) => {\n const s = series[item.datasetIndex]!;\n const eixo = s.axis === 'right' ? y2Axis : yAxis;\n return `${formatar(eixo, item.parsed.y ?? 0)} ${s.label}`;\n },\n labelPointStyle: () => ({ pointStyle: type === 'bar' ? 'rect' : 'line', rotation: 0 }),\n },\n },\n },\n };\n }, [tema, yAxis, y2Axis, temDireita, series, type, stacked]);\n\n const card = Boolean(title || actions);\n const classes = ['cr-chart', card && 'cr-chart--card', className].filter(Boolean).join(' ');\n\n return (\n <div ref={raiz} id={id} className={classes}>\n {card && (\n <div className=\"cr-chart__header\">\n <div className=\"cr-chart__title-row\">\n {title && <span className=\"cr-chart__title\">{title}</span>}\n {help && (\n <>\n <button ref={ajuda} type=\"button\" className=\"cr-chart__help\" aria-label={helpLabel}>\n <Question aria-hidden=\"true\" />\n </button>\n <Tooltip target={ajuda} content={help} type=\"rich\" />\n </>\n )}\n </div>\n {actions && <div className=\"cr-chart__actions\">{actions}</div>}\n </div>\n )}\n <div className=\"cr-chart__body\">\n <div className=\"cr-chart__plot\" style={{ height }}>\n {data && options && (\n <PrimeChart\n // Trocar o tipo monta um gráfico novo, sem reaproveitar o anterior.\n key={type}\n type={type}\n data={data}\n options={options}\n plugins={type === 'line' ? [curvaDoFigma as Plugin, cruz(tema!.cruz) as Plugin] : []}\n width=\"100%\"\n height=\"100%\"\n pt={{\n root: { className: 'cr-chart__canvas-wrap' },\n canvas: {\n role: 'img',\n 'aria-label': title ?? series.map((s) => s.label).join(', '),\n },\n }}\n />\n )}\n </div>\n {series.length > 1 && (\n <ul className=\"cr-chart__legend\">\n {series.map((s, i) => (\n <li key={s.label} className=\"cr-chart__legend-item\">\n {/* A legenda repete a cor da marca: o mesmo token (cor e tom) da série. */}\n <span\n className=\"cr-chart__swatch\"\n style={{\n backgroundColor: `var(--cr-color-chart-fill-${corDe(s, i)}-${tomDe(s, type)})`,\n }}\n aria-hidden=\"true\"\n />\n {s.label}\n </li>\n ))}\n </ul>\n )}\n </div>\n {/* Os valores para o leitor de tela (o canvas é só uma imagem). */}\n <table className=\"cr-chart__table\">\n {title && <caption>{title}</caption>}\n <thead>\n <tr>\n <td />\n {series.map((s) => (\n <th key={s.label} scope=\"col\">\n {s.label}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {labels.map((rotulo, linha) => (\n <tr key={rotulo}>\n <th scope=\"row\">{rotulo}</th>\n {series.map((s) => {\n const valor = s.data[linha];\n const eixo = s.axis === 'right' ? y2Axis : yAxis;\n return <td key={s.label}>{valor == null ? '' : formatar(eixo, valor)}</td>;\n })}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useRef,\n type CSSProperties,\n type ReactNode,\n} from 'react';\nimport { Checkbox as PrimeCheckbox, type CheckboxChangeEvent } from 'primereact/checkbox';\nimport { Check } from '@phosphor-icons/react';\nimport './Checkbox.css';\n\n/** Label Position no Figma: lado da caixa em relação ao rótulo. */\nexport type CheckboxPosition = 'left' | 'right';\n/** Label Type no Figma: Default (uma linha, com reticências) e Full (quebra em várias linhas). */\nexport type CheckboxLabelSize = 'default' | 'full';\n\nexport interface CheckboxProps {\n /** Texto ao lado da caixa (Label no Figma). Sem rótulo visível, vira o nome acessível. */\n label: ReactNode;\n /** Mostra o rótulo. Padrão: true. */\n showLabel?: boolean;\n /** Lado da caixa. Padrão: left. */\n position?: CheckboxPosition;\n /** Padrão: default. */\n labelSize?: CheckboxLabelSize;\n checked?: boolean;\n /** Type=Indeterminate no Figma: traço no lugar do check; o leitor de tela anuncia \"misto\". */\n indeterminate?: boolean;\n onChange?: (event: CheckboxChangeEvent) => void;\n disabled?: boolean;\n required?: boolean;\n name?: string;\n value?: unknown;\n /** Vai no <input>. */\n id?: string;\n className?: string;\n style?: CSSProperties;\n}\n\n// Base: Checkbox do PrimeReact no modo unstyled (o p-checkbox do PrimeNG da produção), com o\n// <input type=\"checkbox\"> nativo por cima da caixa. O Prime não tem o estado indeterminado: o\n// Cristal liga a propriedade nativa do input e desenha o traço no CSS. O rótulo é um <label>\n// ligado ao input. A ref entrega o <input>.\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\n {\n label,\n showLabel = true,\n position = 'left',\n labelSize = 'default',\n checked = false,\n indeterminate = false,\n onChange,\n disabled,\n required,\n name,\n value,\n id,\n className,\n style,\n },\n ref,\n) {\n const autoId = useId();\n const inputId = id ?? autoId;\n // O Cristal também precisa do <input> (para o indeterminado): a ref de callback guarda os dois.\n const inputRef = useRef<HTMLInputElement | null>(null);\n const setInputRef = useCallback(\n (input: HTMLInputElement | null) => {\n inputRef.current = input;\n if (typeof ref === 'function') ref(input);\n else if (ref) ref.current = input;\n },\n [ref],\n );\n\n // Com o indeterminado ligado, o leitor de tela anuncia \"misto\" no lugar de marcado/desmarcado.\n useEffect(() => {\n if (inputRef.current) inputRef.current.indeterminate = indeterminate && !checked;\n }, [indeterminate, checked]);\n\n const classes = [\n 'cr-checkbox',\n `cr-checkbox--${position}`,\n `cr-checkbox--label-${labelSize}`,\n indeterminate && !checked && 'cr-checkbox--indeterminate',\n disabled && 'cr-checkbox--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={classes} style={style}>\n <PrimeCheckbox\n unstyled\n inputRef={setInputRef}\n inputId={inputId}\n checked={checked}\n onChange={onChange}\n disabled={disabled}\n required={required}\n name={name}\n value={value}\n icon={<Check size={16} />}\n pt={{\n root: { className: 'cr-checkbox__control' },\n input: { className: 'cr-checkbox__input' },\n box: { className: 'cr-checkbox__box' },\n icon: { className: 'cr-checkbox__icon', 'aria-hidden': true },\n }}\n />\n {/* Sem rótulo visível, o <label> continua no DOM (escondido) e dá o nome ao input. */}\n <label\n className={`cr-checkbox__label${showLabel ? '' : ' cr-checkbox__label--hidden'}`}\n htmlFor={inputId}\n >\n {label}\n </label>\n </div>\n );\n});\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { X } from '@phosphor-icons/react';\nimport { Chip as PrimeChip, type ChipRemoveEvent } from 'primereact/chip';\nimport './Chip.css';\n\n/** Type no Figma. */\nexport type ChipVariant =\n | 'default'\n | 'success'\n | 'danger'\n | 'warning'\n | 'info'\n | 'highlight'\n | 'inverse'\n | 'outline'\n | 'neutral'\n | 'on-image';\n/** Size no Figma: small = 24px, medium = 28px, large = 32px, x-large = 36px de altura. */\nexport type ChipSize = 'small' | 'medium' | 'large' | 'x-large';\n\nexport interface ChipProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n /** Texto do chip (Label no Figma). */\n label: string;\n variant?: ChipVariant;\n size?: ChipSize;\n /** Ícone antes do texto (Leading Icon no Figma). Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n leadingIcon?: ReactNode;\n /** Ícone depois do texto (Trailing Icon no Figma). Com `onRemove`, o padrão é o X do Figma. */\n trailingIcon?: ReactNode;\n disabled?: boolean;\n /**\n * Torna o ícone da direita o botão de remover do PrimeReact (clique, Enter ou Backspace).\n * Como no Prime, o chip se esconde depois; retorne `false` para controlar a remoção por fora.\n */\n onRemove?: (event: ChipRemoveEvent) => boolean | void;\n /** Nome acessível do botão de remover. */\n removeLabel?: string;\n}\n\n// Base: Chip do PrimeReact no modo unstyled; o visual vem todo do Chip.css. O Prime aceita só um\n// ícone à esquerda e, à direita, só o de remover: os ícones vão como funções, que o Prime chama\n// com as props dele (role, tabIndex e teclado do remover). Sem onRemove (ou desabilitado), o ícone\n// da direita é só visual.\nexport const Chip = forwardRef<HTMLDivElement, ChipProps>(function Chip(\n {\n label,\n variant = 'default',\n size = 'small',\n leadingIcon,\n trailingIcon,\n disabled = false,\n onRemove,\n removeLabel = 'Remover',\n className,\n ...props\n },\n ref,\n) {\n const classes = [\n 'cr-chip',\n `cr-chip--${variant}`,\n `cr-chip--${size}`,\n disabled && 'cr-chip--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const removable = Boolean(onRemove) && !disabled;\n const trailing = trailingIcon ?? (onRemove ? <X /> : null);\n\n return (\n <PrimeChip\n unstyled\n // O Prime remonta o <div> a cada render interno (troca a key), então a ref vai pelo\n // pass-through da raiz, que acompanha cada montagem. O aria-label que o Prime põe na raiz\n // sai: num <div> sem role ele é proibido (axe), e o texto já está visível no chip.\n pt={{ root: { ref, 'aria-label': undefined } }}\n className={classes}\n label={label}\n aria-disabled={disabled || undefined}\n icon={\n leadingIcon\n ? () => (\n <span className=\"cr-chip__icon cr-chip__icon--leading\" aria-hidden=\"true\">\n {leadingIcon}\n </span>\n )\n : undefined\n }\n removable={Boolean(trailing)}\n removeIcon={(options) => {\n if (!removable) {\n return (\n <span className=\"cr-chip__icon cr-chip__icon--trailing\" aria-hidden=\"true\">\n {trailing}\n </span>\n );\n }\n const { role, tabIndex, onClick, onKeyDown } =\n options.iconProps as HTMLAttributes<HTMLSpanElement>;\n return (\n <span\n role={role}\n tabIndex={tabIndex}\n onClick={onClick}\n onKeyDown={onKeyDown}\n className=\"cr-chip__icon cr-chip__icon--trailing cr-chip__remove\"\n aria-label={removeLabel}\n >\n {trailing}\n </span>\n );\n }}\n onRemove={onRemove ? (event) => onRemove(event) !== false : undefined}\n {...props}\n />\n );\n});\n","import { forwardRef, useImperativeHandle, useRef, type HTMLAttributes } from 'react';\nimport { Divider as PrimeDivider } from 'primereact/divider';\nimport './Divider.css';\n\n/** Horizontal Divider e Vertical Divider no Figma. */\nexport type DividerOrientation = 'horizontal' | 'vertical';\n/** Style no Figma: Solid (Default no vertical) e Dashed. */\nexport type DividerVariant = 'solid' | 'dashed';\n\nexport interface DividerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n orientation?: DividerOrientation;\n variant?: DividerVariant;\n}\n\n// Base: Divider do PrimeReact no modo unstyled (role=\"separator\" e aria-orientation do Prime).\n// O visual vem todo do Divider.css. O Figma não tem conteúdo no meio da linha, então o Cristal\n// não repassa children.\nexport const Divider = forwardRef<HTMLDivElement, DividerProps>(function Divider(\n { orientation = 'horizontal', variant = 'solid', className, style, ...props },\n ref,\n) {\n // A ref do Prime é um objeto com getElement(); a do Cristal entrega o próprio elemento.\n const primeRef = useRef<PrimeDivider>(null);\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLDivElement);\n\n const classes = ['cr-divider', `cr-divider--${orientation}`, `cr-divider--${variant}`, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <PrimeDivider\n unstyled\n ref={primeRef}\n layout={orientation}\n // No unstyled, className e style do Divider do Prime não chegam ao elemento; vão pelo pt.\n pt={{\n root: { className: classes, style },\n content: { className: 'cr-divider__content' },\n }}\n {...props}\n />\n );\n});\n","import {\n forwardRef,\n useCallback,\n useRef,\n type ButtonHTMLAttributes,\n type ReactNode,\n type Ref,\n} from 'react';\nimport { Button as PrimeButton } from 'primereact/button';\nimport { Tooltip, type TooltipPosition } from '../Tooltip';\nimport './IconButton.css';\n\n/**\n * Hierarchy no Figma: Primary (Filled), Secondary (Tonal), Tertiary (Outlined) e Other (Icon),\n * que aqui é `ghost`: só o ícone, com fundo no hover.\n */\nexport type IconButtonVariant = 'primary' | 'secondary' | 'tertiary' | 'ghost';\n/** Size no Figma: 32, 36, 42 e 48px. */\nexport type IconButtonSize = 'xsmall' | 'small' | 'medium' | 'large';\n\nexport interface IconButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n variant?: IconButtonVariant;\n size?: IconButtonSize;\n /** Ícone do botão (Leading Icon no Figma). Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n icon: ReactNode;\n /** Obrigatório: o botão não tem texto, então é isso que o leitor de tela anuncia. */\n 'aria-label': string;\n /**\n * Tooltip do botão. Padrão: o próprio `aria-label`, para quem vê saber o que o ícone faz. Um\n * texto diferente vira também a descrição do botão; `false` tira o tooltip.\n */\n tooltip?: ReactNode | false;\n /** Lado do tooltip. Padrão: bottom. */\n tooltipPosition?: TooltipPosition;\n}\n\n// Base: Button do PrimeReact no modo unstyled, só com ícone (o `p-button-icon-only` do PrimeNG).\n// O comportamento é o do Prime e o visual vem todo do IconButton.css. Por padrão ganha o Tooltip\n// do Cristal com o próprio nome (no hover e no foco), já que o ícone sozinho não diz o que faz;\n// como o texto é o nome, ele não vira descrição (o leitor de tela não lê duas vezes).\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton(\n {\n variant = 'primary',\n size = 'large',\n icon,\n type = 'button',\n tooltip,\n tooltipPosition,\n className,\n ...props\n },\n ref,\n) {\n // O <button> vai para a ref de quem usa e para a do Tooltip. O Prime preenche a ref num efeito,\n // então ela é uma função que repassa o botão quando ele chega.\n const botao = useRef<HTMLButtonElement | null>(null);\n const ligar = useCallback(\n (elemento: HTMLButtonElement | null) => {\n botao.current = elemento;\n if (typeof ref === 'function') ref(elemento);\n else if (ref) ref.current = elemento;\n },\n [ref],\n );\n const texto = tooltip ?? props['aria-label'];\n\n const classes = [\n 'cr-icon-button',\n `cr-icon-button--${variant}`,\n `cr-icon-button--${size}`,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <>\n <PrimeButton\n unstyled\n // O PrimeReact tipa a ref como a instância da classe, mas entrega o <button> nela.\n ref={ligar as unknown as Ref<PrimeButton>}\n type={type}\n className={classes}\n {...props}\n >\n <span className=\"cr-icon-button__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n </PrimeButton>\n {texto !== false && (\n <Tooltip\n target={botao}\n content={texto}\n position={tooltipPosition}\n describe={texto !== props['aria-label']}\n />\n )}\n </>\n );\n});\n","import {\n useEffect,\n useId,\n useRef,\n useState,\n type KeyboardEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport { Sidebar, type SidebarPassThroughTransitionType } from 'primereact/sidebar';\nimport { ArrowLeft, X } from '@phosphor-icons/react';\nimport { IconButton } from '../IconButton';\nimport './Drawer.css';\n\n/** Side no Figma: de que lado da tela a gaveta abre. */\nexport type DrawerSide = 'right' | 'left';\n/**\n * Behavior no Figma: Full Body (tudo rola junto) ou Fixed Body (cabeçalho e rodapé fixos, só o\n * corpo rola).\n */\nexport type DrawerBehavior = 'full' | 'fixed';\n/**\n * Largura da gaveta. O Figma só tem a de 340px (small); medium (480px), large (720px) e full (a\n * tela toda) são do Cristal, nas faixas usuais de drawer.\n */\nexport type DrawerSize = 'small' | 'medium' | 'large' | 'full';\n\nexport interface DrawerProps {\n visible: boolean;\n /** Pedido para fechar (X, Esc ou clique no overlay). */\n onHide: () => void;\n /** Título do cabeçalho; também é o nome acessível da gaveta. */\n title: string;\n /** Subtítulo descritivo, até 2 linhas. */\n subtitle?: ReactNode;\n /** Padrão: right. */\n side?: DrawerSide;\n /** Padrão: full. */\n behavior?: DrawerBehavior;\n /** Padrão: small (340px, a do Figma). */\n size?: DrawerSize;\n /**\n * Com overlay (padrão): a gaveta é modal, a página atrás fica bloqueada e o clique no overlay\n * fecha. Sem overlay (`false`): a página continua rolando e clicável, e só o X e o Esc fecham.\n */\n modal?: boolean;\n /** Mostra o botão de voltar antes do título. */\n onBack?: () => void;\n backLabel?: string;\n closeLabel?: string;\n /** Botões do rodapé, alinhados à direita. */\n footer?: ReactNode;\n children?: ReactNode;\n id?: string;\n className?: string;\n}\n\nconst FOCAVEIS =\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\n// Base: Sidebar do PrimeReact no modo unstyled (o p-sidebar/p-drawer do PrimeNG da produção):\n// overlay, Esc, clique fora, bloqueio da rolagem da página, o foco no X ao abrir e a transição de\n// entrada e saída (300ms) são do Prime. O conteúdo vem do `content` do Prime, com o cabeçalho, o\n// corpo e o rodapé do Figma. O Sidebar do Prime marca a gaveta como role=complementary e não\n// segura o foco; com overlay ela é modal, então o Cristal a marca como dialog (aria-modal),\n// mantém o Tab dentro dela e devolve o foco a quem a abriu. Sem overlay (modal={false}) ela é um\n// dialog não modal: a página continua usável, o Tab sai dela e o clique fora não fecha.\nexport function Drawer({\n visible,\n onHide,\n title,\n subtitle,\n side = 'right',\n behavior = 'full',\n size = 'small',\n modal = true,\n onBack,\n backLabel = 'Voltar',\n closeLabel = 'Fechar',\n footer,\n children,\n id,\n className,\n}: DrawerProps) {\n const autoId = useId();\n const titleId = `${autoId}-title`;\n const subtitleId = `${autoId}-subtitle`;\n const panelRef = useRef<HTMLDivElement>(null);\n const retorno = useRef<HTMLElement | null>(null);\n\n // Ao abrir, guarda quem tinha o foco; ao fechar, devolve.\n useEffect(() => {\n if (visible) {\n retorno.current = document.activeElement as HTMLElement | null;\n return;\n }\n retorno.current?.focus();\n retorno.current = null;\n }, [visible]);\n\n // Quem rola (o corpo no fixed, a gaveta toda no full) entra no Tab só quando rola, para a\n // rolagem pelo teclado. O Prime só monta o conteúdo depois de abrir: a ref de callback começa a\n // medir quando ele existe.\n const [rolagem, setRolagem] = useState<HTMLDivElement | null>(null);\n const [rolavel, setRolavel] = useState(false);\n useEffect(() => {\n if (!rolagem) return;\n const medir = () => setRolavel(rolagem.scrollHeight > rolagem.clientHeight);\n medir();\n const observer = new ResizeObserver(medir);\n observer.observe(rolagem);\n [...rolagem.children].forEach((child) => observer.observe(child));\n return () => observer.disconnect();\n }, [rolagem, children]);\n\n // Com overlay, o Tab e o Shift+Tab ciclam dentro da gaveta.\n const prenderFoco = (event: KeyboardEvent) => {\n if (!modal || event.key !== 'Tab' || !panelRef.current) return;\n const focaveis = [...panelRef.current.querySelectorAll<HTMLElement>(FOCAVEIS)];\n const primeiro = focaveis[0];\n const ultimo = focaveis[focaveis.length - 1];\n if (!primeiro || !ultimo) return;\n if (event.shiftKey && document.activeElement === primeiro) {\n event.preventDefault();\n ultimo.focus();\n } else if (!event.shiftKey && document.activeElement === ultimo) {\n event.preventDefault();\n primeiro.focus();\n }\n };\n\n const classes = [\n 'cr-drawer',\n `cr-drawer--${side}`,\n `cr-drawer--${behavior}`,\n `cr-drawer--size-${size}`,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <Sidebar\n unstyled\n id={id}\n visible={visible}\n onHide={onHide}\n position={side}\n modal={modal}\n blockScroll={modal}\n // Sem overlay, o Prime fecharia com qualquer clique na página: só o X e o Esc fecham.\n dismissable={modal}\n pt={{\n mask: {\n className: `cr-drawer__mask cr-drawer__mask--${side}${modal ? '' : ' cr-drawer__mask--sem-overlay'}`,\n },\n root: {\n className: classes,\n role: 'dialog',\n 'aria-modal': modal || undefined,\n 'aria-labelledby': titleId,\n 'aria-describedby': subtitle ? subtitleId : undefined,\n onKeyDown: prenderFoco,\n },\n // No unstyled o Prime não põe classes na transição: o Cristal dá as dele (Drawer.css).\n // O tipo do Prime exige o addEndListener do react-transition-group, que aqui não se usa.\n transition: {\n classNames: {\n enter: 'cr-drawer--enter',\n enterActive: 'cr-drawer--enter-active',\n exitActive: 'cr-drawer--exit-active',\n },\n } as SidebarPassThroughTransitionType,\n }}\n content={({ closeIconRef, hide }) => (\n <div\n ref={(element) => {\n panelRef.current = element;\n if (behavior === 'full') setRolagem(element);\n }}\n className=\"cr-drawer__panel\"\n tabIndex={behavior === 'full' && rolavel ? 0 : undefined}\n >\n <div className=\"cr-drawer__header\">\n <div className=\"cr-drawer__title-row\">\n {onBack && (\n <IconButton\n variant=\"tertiary\"\n size=\"xsmall\"\n icon={<ArrowLeft />}\n aria-label={backLabel}\n onClick={onBack}\n />\n )}\n <h2 id={titleId} className=\"cr-drawer__title\">\n {title}\n </h2>\n </div>\n {subtitle && (\n <p id={subtitleId} className=\"cr-drawer__subtitle\">\n {subtitle}\n </p>\n )}\n </div>\n <div\n ref={behavior === 'fixed' ? setRolagem : undefined}\n className=\"cr-drawer__body\"\n tabIndex={behavior === 'fixed' && rolavel ? 0 : undefined}\n >\n {children}\n </div>\n {footer && <div className=\"cr-drawer__footer\">{footer}</div>}\n <IconButton\n ref={closeIconRef as unknown as Ref<HTMLButtonElement>}\n className=\"cr-drawer__close\"\n variant=\"tertiary\"\n size=\"xsmall\"\n icon={<X />}\n aria-label={closeLabel}\n onClick={(event) => hide(event)}\n />\n </div>\n )}\n />\n );\n}\n","import { forwardRef, useId, type InputHTMLAttributes, type ReactNode, type Ref } from 'react';\nimport { InputText } from 'primereact/inputtext';\nimport { Info, WarningCircle } from '@phosphor-icons/react';\nimport './Input.css';\n\n/** Type no Figma: Outline (com borda) e Filled (com fundo). */\nexport type InputVariant = 'outline' | 'filled';\n/** Size no Figma: 32, 36, 42 e 48px de altura do campo. */\nexport type InputSize = 'xsmall' | 'small' | 'medium' | 'large';\n\nexport interface InputProps extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'value' | 'children'\n> {\n variant?: InputVariant;\n size?: InputSize;\n /** Rótulo acima do campo (Label no Figma). Sem rótulo, passe `aria-label`. */\n label?: string;\n /** Valor do campo (controlado). */\n value?: string;\n /** Ícone antes do texto (Leading Icon no Figma). Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n leadingIcon?: ReactNode;\n /** Ícone ou botão depois do texto (Trailing Icon no Figma), por exemplo mostrar a senha. */\n trailingIcon?: ReactNode;\n /** Dica abaixo do campo (Hint Info no Figma). */\n hint?: string;\n /** Mensagem de erro: deixa o campo no estado Error e mostra a dica de erro no lugar da dica. */\n error?: string;\n}\n\n// Base: InputText do PrimeReact no modo unstyled (o <input>, com o comportamento do Prime,\n// espelhando o pInputText do PrimeNG da produção). O rótulo, a caixa do campo, os ícones e a dica\n// são do Cristal, com as classes .cr-field reaproveitadas pelos outros campos (AutoComplete,\n// MultiSelect).\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n {\n variant = 'outline',\n size = 'large',\n label,\n leadingIcon,\n trailingIcon,\n hint,\n error,\n id,\n required,\n disabled,\n className,\n ...props\n },\n ref,\n) {\n const autoId = useId();\n const inputId = id ?? autoId;\n const hintId = `${inputId}-hint`;\n const supportText = error ?? hint;\n\n const classes = [\n 'cr-field',\n `cr-field--${variant}`,\n `cr-field--${size}`,\n error && 'cr-field--error',\n disabled && 'cr-field--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={classes}>\n {label && (\n <label className=\"cr-field__label\" htmlFor={inputId}>\n {label}\n {required && (\n <span className=\"cr-field__required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n <div className=\"cr-field__control\">\n {leadingIcon && (\n <span className=\"cr-field__icon\" aria-hidden=\"true\">\n {leadingIcon}\n </span>\n )}\n <InputText\n unstyled\n // O PrimeReact tipa a ref como a instância da classe, mas entrega o <input> nela.\n ref={ref as unknown as Ref<HTMLInputElement>}\n id={inputId}\n className=\"cr-field__input\"\n required={required}\n disabled={disabled}\n invalid={Boolean(error)}\n aria-invalid={error ? true : undefined}\n aria-describedby={supportText ? hintId : undefined}\n {...props}\n />\n {trailingIcon && <span className=\"cr-field__icon\">{trailingIcon}</span>}\n </div>\n {supportText && (\n <p id={hintId} className={`cr-field__hint${error ? ' cr-field__hint--error' : ''}`}>\n <span className=\"cr-field__hint-icon\" aria-hidden=\"true\">\n {error ? <WarningCircle /> : <Info />}\n </span>\n {supportText}\n </p>\n )}\n </div>\n );\n});\n","import {\n forwardRef,\n useContext,\n useImperativeHandle,\n useRef,\n type ReactNode,\n type SyntheticEvent,\n} from 'react';\nimport { PrimeReactContext, PrimeReactProvider } from 'primereact/api';\nimport { Menu as PrimeMenu, type MenuPassThroughOptions } from 'primereact/menu';\nimport type { MenuItem as PrimeMenuItem, MenuItemCommandEvent } from 'primereact/menuitem';\nimport { CircleNotch } from '@phosphor-icons/react';\nimport './Menu.css';\n\n/** Density no Figma: Normal (itens de 37px) e Compacted (29px). */\nexport type MenuDensity = 'normal' | 'compact';\n\n/** Um item da lista (.Dropdown Item no Figma). */\nexport interface MenuItem {\n label: string;\n /** Ícone à esquerda (Leading Icon no Figma). Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n icon?: ReactNode;\n /** Estado Selected do Figma: texto e ícone em brand, fundo selected/subtlest. */\n selected?: boolean;\n disabled?: boolean;\n /** Ação do item; o menu popup fecha depois dela. */\n command?: (event: MenuItemCommandEvent) => void;\n /** Link do item; sem ele o clique não navega. */\n url?: string;\n target?: string;\n id?: string;\n className?: string;\n}\n\nexport interface MenuProps {\n model: MenuItem[];\n density?: MenuDensity;\n /** Abre sobre a tela, posicionado no elemento que chamou `toggle`/`show` pela ref. */\n popup?: boolean;\n /** Alinhamento do popup com o elemento que o abriu. */\n popupAlignment?: 'left' | 'right';\n /** Estado Loading do Figma: troca os itens pelo indicador de carregamento. */\n loading?: boolean;\n /** O que o leitor de tela anuncia no carregamento. */\n loadingLabel?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n onShow?: (event: SyntheticEvent) => void;\n onHide?: (event: SyntheticEvent) => void;\n id?: string;\n className?: string;\n}\n\n/** Controle do menu popup, pela ref. */\nexport interface MenuHandle {\n toggle: (event: SyntheticEvent) => void;\n show: (event: SyntheticEvent) => void;\n hide: (event: SyntheticEvent) => void;\n /** O <div> raiz do menu (só existe com o popup aberto). */\n getElement: () => HTMLDivElement | null;\n}\n\n// Base: Menu do PrimeReact no modo unstyled (teclado, foco, popup e fechamento do Prime,\n// espelhando o p-menu do PrimeNG da produção). No Figma é o Dropdown List, usado nos menus do\n// Menubar; o visual vem do Menu.css. A ref expõe toggle/show/hide do Prime para abrir o popup.\nexport const Menu = forwardRef<MenuHandle, MenuProps>(function Menu(\n {\n model,\n density = 'normal',\n popup = false,\n popupAlignment = 'left',\n loading = false,\n loadingLabel = 'Carregando',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n onShow,\n onHide,\n id,\n className,\n },\n ref,\n) {\n const primeRef = useRef<PrimeMenu>(null);\n const context = useContext(PrimeReactContext);\n\n useImperativeHandle(ref, () => ({\n toggle: (event) => primeRef.current?.toggle(event),\n show: (event) => primeRef.current?.show(event),\n hide: (event) => primeRef.current?.hide(event),\n getElement: () => primeRef.current?.getElement() ?? null,\n }));\n\n const items: PrimeMenuItem[] = loading\n ? [\n {\n label: loadingLabel,\n disabled: true,\n template: () => (\n <div className=\"cr-menu__loading\">\n <CircleNotch className=\"cr-menu__spinner\" aria-hidden=\"true\" />\n </div>\n ),\n },\n ]\n : model.map((item) => ({\n id: item.id,\n label: item.label,\n icon: item.icon ? (\n <span className=\"cr-menu__icon\" aria-hidden=\"true\">\n {item.icon}\n </span>\n ) : undefined,\n disabled: item.disabled,\n command: item.command,\n url: item.url,\n target: item.target,\n className: [item.selected && 'cr-menu__item--selected', item.className]\n .filter(Boolean)\n .join(' '),\n data: { selected: item.selected },\n }));\n\n const classes = ['cr-menu', `cr-menu--${density}`, popup && 'cr-menu--popup', className]\n .filter(Boolean)\n .join(' ');\n\n const pt: MenuPassThroughOptions = {\n // O nome acessível vai na lista (role=menu); o Prime lê `ariaLabel`, mas não o declara no tipo.\n menu: {\n className: 'cr-menu__list',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-busy': loading || undefined,\n },\n menuitem: (options) => {\n const item = (options as { context?: { item?: PrimeMenuItem } })?.context?.item;\n return {\n className: 'cr-menu__item',\n 'aria-current': item?.data?.selected ? 'true' : undefined,\n };\n },\n content: { className: 'cr-menu__content' },\n action: { className: 'cr-menu__action' },\n label: { className: 'cr-menu__label' },\n };\n\n const menu = (\n <PrimeMenu\n unstyled\n ref={primeRef}\n id={id}\n className={classes}\n model={items}\n popup={popup}\n popupAlignment={popupAlignment}\n onShow={onShow}\n onHide={onHide}\n pt={pt}\n />\n );\n\n // O Menu do Prime lê o PrimeReactContext sem checar se ele existe: sem um PrimeReactProvider\n // na aplicação, o clique fora dá erro e o popup não fecha. Se a aplicação já tiver um, vale o\n // dela.\n return context ? menu : <PrimeReactProvider>{menu}</PrimeReactProvider>;\n});\n","import {\n forwardRef,\n useId,\n useRef,\n useState,\n type FormEvent,\n type MouseEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport { Menubar as PrimeMenubar, type MenubarPassThroughOptions } from 'primereact/menubar';\nimport { Button as PrimeButton } from 'primereact/button';\nimport { InputText } from 'primereact/inputtext';\nimport { Avatar as PrimeAvatar } from 'primereact/avatar';\nimport { List, MagnifyingGlass } from '@phosphor-icons/react';\nimport { Badge } from '../Badge';\nimport { Menu, type MenuHandle, type MenuItem } from '../Menu';\nimport { Tooltip } from '../Tooltip';\nimport logoSimbolo from './assets/vector-logo-simbolo.svg';\nimport logoTexto from './assets/vector-logo-texto.svg';\nimport './Menubar.css';\n\n/** Um botão de ferramenta (.Menubar Tools Button no Figma). */\nexport interface MenubarTool {\n /** Nome do botão: vira o aria-label e o texto do tooltip. */\n label: string;\n /** Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n icon: ReactNode;\n /** Contador sobre o ícone (Show Badge no Figma). */\n badge?: ReactNode;\n /** Como o leitor de tela lê o contador (padrão: o próprio valor). */\n badgeLabel?: string;\n /** Itens do menu que o botão abre (Dropdown List no Figma). */\n menu?: MenuItem[];\n onClick?: (event: MouseEvent<HTMLButtonElement>) => void;\n /** Continua visível no tablet (768px), como o sino no Figma. */\n showOnTablet?: boolean;\n}\n\n/** Usuário logado (.Menubar Profile no Figma). */\nexport interface MenubarUser {\n name: string;\n /** Perfil de acesso, abaixo do nome. */\n role?: string;\n /** URL da foto. Sem foto, o avatar mostra a inicial do nome (Type=No Image). */\n avatar?: string;\n}\n\nexport interface MenubarProps {\n /** Logo à esquerda (.Nav Logo no Figma); o padrão é o logo da Vector. */\n logo?: ReactNode;\n /** Menu principal aberto: deixa o botão de menu no estado Active. */\n menuOpen?: boolean;\n /** Clique no botão de menu (abre o Menu Principal). */\n onMenuToggle?: (event: MouseEvent<HTMLButtonElement>) => void;\n /** Nome acessível do botão de menu. */\n menuLabel?: string;\n /** Mostra a busca no centro (só no desktop). */\n showSearch?: boolean;\n searchPlaceholder?: string;\n /** Valor da busca (controlado). Sem ele, a busca guarda o próprio valor. */\n searchValue?: string;\n onSearchChange?: (value: string) => void;\n /** Envio da busca (Enter ou lupa). */\n onSearch?: (value: string) => void;\n /** Nome acessível da lupa. */\n searchButtonLabel?: string;\n /** Botões de ferramenta à direita (.Nav Tools no Figma). */\n tools?: MenubarTool[];\n user?: MenubarUser;\n /** Itens do menu do perfil. Sem eles, o perfil não é clicável. */\n userMenu?: MenuItem[];\n id?: string;\n className?: string;\n}\n\nfunction VectorLogo() {\n return (\n <span className=\"cr-menubar__logo\" role=\"img\" aria-label=\"Vector\">\n <img className=\"cr-menubar__logo-texto\" src={logoTexto} alt=\"\" />\n <img className=\"cr-menubar__logo-simbolo\" src={logoSimbolo} alt=\"\" />\n </span>\n );\n}\n\nfunction ToolButton({ tool }: { tool: MenubarTool }) {\n const buttonRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<MenuHandle>(null);\n const menuId = useId();\n const [open, setOpen] = useState(false);\n const hasMenu = Boolean(tool.menu?.length);\n const hasBadge = tool.badge !== undefined && tool.badge !== null;\n const name = hasBadge ? `${tool.label}, ${tool.badgeLabel ?? String(tool.badge)}` : tool.label;\n\n const classes = [\n 'cr-menubar__tool',\n tool.showOnTablet && 'cr-menubar__tool--tablet',\n open && 'cr-menubar__tool--active',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <>\n <PrimeButton\n unstyled\n // O PrimeReact tipa a ref como a instância da classe, mas entrega o <button> nela.\n ref={buttonRef as unknown as Ref<PrimeButton>}\n type=\"button\"\n className={classes}\n aria-label={name}\n aria-haspopup={hasMenu ? 'menu' : undefined}\n aria-expanded={hasMenu ? open : undefined}\n aria-controls={hasMenu && open ? menuId : undefined}\n onClick={(event) => {\n tool.onClick?.(event);\n if (hasMenu) menuRef.current?.toggle(event);\n }}\n >\n <span className=\"cr-menubar__tool-icon\" aria-hidden=\"true\">\n {tool.icon}\n </span>\n {hasBadge && (\n <Badge className=\"cr-menubar__badge\" aria-hidden=\"true\">\n {tool.badge}\n </Badge>\n )}\n </PrimeButton>\n {/* No Figma o tooltip aparece no Hover e some com o menu aberto (Active). */}\n <Tooltip target={buttonRef} content={tool.label} disabled={open} />\n {hasMenu && (\n <Menu\n ref={menuRef}\n id={menuId}\n popup\n popupAlignment=\"right\"\n model={tool.menu ?? []}\n aria-label={tool.label}\n onShow={() => setOpen(true)}\n onHide={() => setOpen(false)}\n />\n )}\n </>\n );\n}\n\nfunction Profile({ user, menu }: { user: MenubarUser; menu?: MenuItem[] }) {\n const menuRef = useRef<MenuHandle>(null);\n const menuId = useId();\n const [open, setOpen] = useState(false);\n const hasMenu = Boolean(menu?.length);\n\n const content = (\n <>\n <span className=\"cr-menubar__profile-text\">\n <span className=\"cr-menubar__profile-name\">{user.name}</span>\n {user.role && <span className=\"cr-menubar__profile-role\">{user.role}</span>}\n </span>\n {/* O nome já está no texto ao lado: o avatar é só visual. */}\n <PrimeAvatar\n unstyled\n aria-hidden=\"true\"\n className={`cr-menubar__avatar${user.avatar ? '' : ' cr-menubar__avatar--initial'}`}\n image={user.avatar}\n imageAlt=\"\"\n label={user.avatar ? undefined : user.name.trim().charAt(0).toUpperCase()}\n shape=\"circle\"\n pt={{ image: { className: 'cr-menubar__avatar-image' } }}\n />\n </>\n );\n\n if (!hasMenu) return <div className=\"cr-menubar__profile\">{content}</div>;\n\n return (\n <>\n <PrimeButton\n unstyled\n type=\"button\"\n className=\"cr-menubar__profile cr-menubar__profile--button\"\n aria-haspopup=\"menu\"\n aria-expanded={open}\n aria-controls={open ? menuId : undefined}\n onClick={(event) => menuRef.current?.toggle(event)}\n >\n {content}\n </PrimeButton>\n <Menu\n ref={menuRef}\n id={menuId}\n popup\n popupAlignment=\"right\"\n model={menu ?? []}\n aria-label={user.name}\n onShow={() => setOpen(true)}\n onHide={() => setOpen(false)}\n />\n </>\n );\n}\n\n// Base: Menubar do PrimeReact no modo unstyled, espelhando o p-menubar do PrimeNG da produção. A\n// navegação do Vector fica no Menu Principal (aberto pelo botão de menu), então o Menubar não\n// tem itens próprios: usa só as áreas start e end do Prime. Os botões são Buttons do Prime, a\n// busca é um InputText, o avatar é o Avatar e os menus e tooltips são o Menu e o Tooltip do\n// Cristal. O layout responsivo (1360, 768 e 360px no Figma) vem de container queries no\n// Menubar.css, pela largura do próprio Menubar.\nexport const Menubar = forwardRef<HTMLDivElement, MenubarProps>(function Menubar(\n {\n logo,\n menuOpen = false,\n onMenuToggle,\n menuLabel = 'Menu principal',\n showSearch = true,\n searchPlaceholder = 'Buscar no Vector',\n searchValue,\n onSearchChange,\n onSearch,\n searchButtonLabel = 'Buscar',\n tools = [],\n user,\n userMenu,\n id,\n className,\n },\n ref,\n) {\n const [innerSearch, setInnerSearch] = useState('');\n const search = searchValue ?? innerSearch;\n\n const submitSearch = (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n onSearch?.(search);\n };\n\n const classes = ['cr-menubar', !showSearch && 'cr-menubar--no-search', className]\n .filter(Boolean)\n .join(' ');\n\n const pt: MenubarPassThroughOptions = {\n // A área start some do layout (display: contents): o início e a busca viram colunas do grid.\n start: { className: 'cr-menubar__start' },\n end: { className: 'cr-menubar__end' },\n // Sem itens, a lista do Prime (role=menubar) ficaria vazia e focável: fica escondida.\n menu: { hidden: true },\n };\n\n const start = (\n <>\n <div className=\"cr-menubar__init\">\n <PrimeButton\n unstyled\n type=\"button\"\n className={`cr-menubar__menu-button${menuOpen ? ' cr-menubar__menu-button--active' : ''}`}\n aria-label={menuLabel}\n aria-expanded={menuOpen}\n onClick={onMenuToggle}\n >\n <span className=\"cr-menubar__menu-icon\" aria-hidden=\"true\">\n <List />\n </span>\n </PrimeButton>\n {logo ?? <VectorLogo />}\n </div>\n {showSearch && (\n <form role=\"search\" className=\"cr-menubar__search\" onSubmit={submitSearch}>\n <InputText\n unstyled\n className=\"cr-menubar__search-input\"\n placeholder={searchPlaceholder}\n aria-label={searchPlaceholder}\n value={search}\n onChange={(event) => {\n setInnerSearch(event.target.value);\n onSearchChange?.(event.target.value);\n }}\n />\n <PrimeButton\n unstyled\n type=\"submit\"\n className=\"cr-menubar__search-button\"\n aria-label={searchButtonLabel}\n >\n <span className=\"cr-menubar__search-icon\" aria-hidden=\"true\">\n <MagnifyingGlass />\n </span>\n </PrimeButton>\n </form>\n )}\n </>\n );\n\n const end =\n tools.length > 0 || user ? (\n <>\n {tools.length > 0 && (\n <div className=\"cr-menubar__tools\">\n {tools.map((tool) => (\n <ToolButton key={tool.label} tool={tool} />\n ))}\n </div>\n )}\n {user && <Profile user={user} menu={userMenu} />}\n </>\n ) : null;\n\n return (\n <div ref={ref} id={id} className={classes}>\n <PrimeMenubar\n unstyled\n className=\"cr-menubar__bar\"\n model={[]}\n start={start}\n end={end}\n pt={pt}\n />\n </div>\n );\n});\n","import {\n forwardRef,\n useImperativeHandle,\n useRef,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { Tag as PrimeTag } from 'primereact/tag';\nimport './Tag.css';\n\n/** Type no Figma. */\nexport type TagVariant =\n 'default' | 'success' | 'warning' | 'danger' | 'info' | 'purple' | 'gray' | 'inverse' | 'outline';\n/** Size no Figma: small = 24px, medium = 28px, large = 32px, x-large = 36px de altura. */\nexport type TagSize = 'small' | 'medium' | 'large' | 'x-large';\n\nexport interface TagProps extends HTMLAttributes<HTMLSpanElement> {\n variant?: TagVariant;\n size?: TagSize;\n /** Ícone à esquerda (Leading Icon no Figma). Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n icon?: ReactNode;\n /** Texto da tag (Label no Figma). */\n children: ReactNode;\n}\n\n// Base: Tag do PrimeReact no modo unstyled; o visual vem todo do Tag.css. Rótulo de status\n// estático (sem interação); para contador ou bolinha de notificação, use o Badge.\nexport const Tag = forwardRef<HTMLSpanElement, TagProps>(function Tag(\n { variant = 'default', size = 'small', icon, className, children, ...props },\n ref,\n) {\n const primeRef = useRef<PrimeTag>(null);\n // O PrimeReact entrega na ref um objeto com getElement(); o Cristal repassa o <span>.\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLSpanElement);\n\n const classes = ['cr-tag', `cr-tag--${variant}`, `cr-tag--${size}`, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <PrimeTag\n unstyled\n ref={primeRef}\n className={classes}\n // Como função, o ícone é renderizado pelo Cristal (o Prime só repassa props a funções).\n icon={\n icon\n ? () => (\n <span className=\"cr-tag__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n )\n : undefined\n }\n value={children}\n {...props}\n />\n );\n});\n","import {\n forwardRef,\n useContext,\n useImperativeHandle,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n type SyntheticEvent,\n} from 'react';\nimport { PrimeReactContext, PrimeReactProvider } from 'primereact/api';\nimport { Menu as PrimeMenu, type MenuPassThroughOptions } from 'primereact/menu';\nimport type { MenuItem as PrimeMenuItem, MenuItemCommandEvent } from 'primereact/menuitem';\nimport { DribbbleLogo } from '@phosphor-icons/react';\nimport { Tag } from '../Tag';\nimport './MenuPrincipal.css';\n\n/** Um produto do menu (.Menu Principal / Item no Figma). */\nexport interface MenuPrincipalItem {\n /** Nome do produto (Item Label no Figma). */\n label: string;\n /** Texto de apoio abaixo do nome, até 2 linhas. */\n description?: string;\n /** Ícone no círculo à esquerda. Use um ícone de `@vector-business-services/cristal-ds-web/icons`. */\n icon: ReactNode;\n /** Texto da tag no canto (Show Tag no Figma, onde é \"Experimente\"). */\n tag?: string;\n /** Ação do item; o menu popup fecha depois dela. */\n command?: (event: MenuItemCommandEvent) => void;\n /** Link do item; sem ele o clique não navega. */\n url?: string;\n target?: string;\n id?: string;\n className?: string;\n}\n\n/** Um grupo de produtos com título (Product Group no Figma). */\nexport interface MenuPrincipalGroup {\n /** Título do grupo, acima dos itens. */\n label: string;\n items: MenuPrincipalItem[];\n id?: string;\n}\n\nexport type MenuPrincipalEntry = MenuPrincipalItem | MenuPrincipalGroup;\n\nexport interface MenuPrincipalProps {\n /** Itens soltos e grupos, na ordem; o divisor tracejado entra antes e depois de cada grupo. */\n model: MenuPrincipalEntry[];\n /** Abre sobre a tela, posicionado no elemento que chamou `toggle`/`show` pela ref. */\n popup?: boolean;\n /** Nome acessível do menu. */\n 'aria-label'?: string;\n onShow?: (event: SyntheticEvent) => void;\n onHide?: (event: SyntheticEvent) => void;\n id?: string;\n className?: string;\n}\n\n/** Controle do menu popup, pela ref. */\nexport interface MenuPrincipalHandle {\n toggle: (event: SyntheticEvent) => void;\n show: (event: SyntheticEvent) => void;\n hide: (event: SyntheticEvent) => void;\n /** O <div> raiz do menu (só existe com o popup aberto). */\n getElement: () => HTMLDivElement | null;\n}\n\nconst isGroup = (entry: MenuPrincipalEntry): entry is MenuPrincipalGroup => 'items' in entry;\n\n// Base: Menu do PrimeReact no modo unstyled (teclado, foco, popup e fechamento do Prime,\n// espelhando o p-menu do PrimeNG da produção), como o Menu do Cristal; os grupos são os\n// submenus do Prime e os divisores, os separadores. No Figma é o Menu Principal (página Menu\n// Suspenso), aberto pelo botão de menu do Menubar. O item é um template do Prime, com o ícone,\n// o nome, a descrição e a tag; o visual vem do MenuPrincipal.css.\nexport const MenuPrincipal = forwardRef<MenuPrincipalHandle, MenuPrincipalProps>(\n function MenuPrincipal(\n {\n model,\n popup = false,\n 'aria-label': ariaLabel = 'Menu principal',\n onShow,\n onHide,\n id,\n className,\n },\n ref,\n ) {\n const primeRef = useRef<PrimeMenu>(null);\n const context = useContext(PrimeReactContext);\n\n // Onde termina o botão que abriu o popup: o CSS limita a altura ao espaço da tela abaixo dele\n // (e acompanha a tela se ela diminuir com o menu aberto).\n const [baseDoAlvo, setBaseDoAlvo] = useState<number>();\n const medirAlvo = (event: SyntheticEvent) => {\n const alvo = event.currentTarget as Element | null;\n if (alvo instanceof Element) setBaseDoAlvo(alvo.getBoundingClientRect().bottom);\n };\n\n useImperativeHandle(ref, () => ({\n toggle: (event) => {\n medirAlvo(event);\n primeRef.current?.toggle(event);\n },\n show: (event) => {\n medirAlvo(event);\n primeRef.current?.show(event);\n },\n hide: (event) => primeRef.current?.hide(event),\n getElement: () => primeRef.current?.getElement() ?? null,\n }));\n\n const toPrime = (item: MenuPrincipalItem): PrimeMenuItem => ({\n id: item.id,\n // Sem label no Prime: ele viraria o aria-label do item, só com parte do texto visível. O\n // nome vem do conteúdo: o nome, a descrição e a tag. Os espaços entre eles não aparecem\n // (estão em flex), mas separam as palavras no nome (\"Início Tela inicial\", não colado).\n command: item.command,\n url: item.url,\n target: item.target,\n className: item.className,\n // O <a> leva o data-pc-section do Prime: o Enter do teclado clica nele (e segue o link).\n template: () => (\n <a\n className=\"cr-menu-principal__action\"\n data-pc-section=\"action\"\n href={item.url ?? '#'}\n target={item.target}\n tabIndex={-1}\n >\n <span className=\"cr-menu-principal__icon\" aria-hidden=\"true\">\n {item.icon}\n </span>\n <span className=\"cr-menu-principal__text\">\n <span className=\"cr-menu-principal__label\">{item.label}</span>{' '}\n {item.description && (\n <span className=\"cr-menu-principal__description\">{item.description}</span>\n )}\n </span>{' '}\n {item.tag && (\n <Tag className=\"cr-menu-principal__tag\" variant=\"warning\" icon={<DribbbleLogo />}>\n {item.tag}\n </Tag>\n )}\n </a>\n ),\n });\n\n // Divisor antes e depois de cada grupo (entre dois itens soltos, não).\n const items: PrimeMenuItem[] = [];\n let anterior: MenuPrincipalEntry | undefined;\n model.forEach((entry) => {\n if (anterior && (isGroup(entry) || isGroup(anterior))) items.push({ separator: true });\n items.push(\n isGroup(entry)\n ? { id: entry.id, label: entry.label, items: entry.items.map(toPrime) }\n : toPrime(entry),\n );\n anterior = entry;\n });\n\n const classes = ['cr-menu-principal', popup && 'cr-menu-principal--popup', className]\n .filter(Boolean)\n .join(' ');\n\n const pt: MenuPassThroughOptions = {\n menu: { className: 'cr-menu-principal__list', 'aria-label': ariaLabel },\n submenuHeader: { className: 'cr-menu-principal__group' },\n separator: { className: 'cr-menu-principal__separator' },\n menuitem: { className: 'cr-menu-principal__item' },\n };\n\n const menu = (\n <PrimeMenu\n unstyled\n ref={primeRef}\n id={id}\n className={classes}\n style={\n popup && baseDoAlvo !== undefined\n ? ({ '--cr-menu-principal-topo': `${baseDoAlvo}px` } as CSSProperties)\n : undefined\n }\n model={items}\n popup={popup}\n onShow={onShow}\n onHide={onHide}\n pt={pt}\n />\n );\n\n // Como no Menu: sem um PrimeReactProvider na aplicação, o clique fora dá erro no Prime.\n return context ? menu : <PrimeReactProvider>{menu}</PrimeReactProvider>;\n },\n);\n","import { forwardRef, useImperativeHandle, useRef, type ReactElement, type ReactNode } from 'react';\nimport {\n Message as PrimeMessage,\n type MessageProps as PrimeMessageProps,\n} from 'primereact/message';\nimport {\n CheckCircle,\n Info,\n SealWarning,\n Warning,\n WarningCircle,\n XCircle,\n} from '@phosphor-icons/react';\nimport './Message.css';\n\n/** Type no Figma. */\nexport type MessageType = 'info' | 'warning' | 'success' | 'danger' | 'highlight' | 'neutral';\n\nexport interface MessageProps {\n /** Padrão: info. */\n type?: MessageType;\n /** Texto (Message no Figma). */\n children: ReactNode;\n /** Show Icon no Figma. Padrão: true. */\n showIcon?: boolean;\n id?: string;\n className?: string;\n}\n\n// Highlight e Neutral não têm severity próprio no Prime: usam os outros dois dele.\nconst SEVERITY: Record<MessageType, PrimeMessageProps['severity']> = {\n info: 'info',\n warning: 'warn',\n success: 'success',\n danger: 'error',\n highlight: 'contrast',\n neutral: 'secondary',\n};\n\nconst ICON: Record<MessageType, ReactElement> = {\n info: <Info />,\n warning: <Warning />,\n success: <CheckCircle />,\n danger: <XCircle />,\n highlight: <SealWarning />,\n neutral: <WarningCircle />,\n};\n\n// Base: Message do PrimeReact no modo unstyled (o p-message do PrimeNG da produção): a faixa com\n// ícone e texto e o role=\"alert\" (aria-live polite) são do Prime. O Cristal troca o severity pelo\n// Type do Figma, põe os ícones do Figma e desenha pelos tokens (Message.css). A ref entrega a raiz.\nexport const Message = forwardRef<HTMLDivElement, MessageProps>(function Message(\n { type = 'info', children, showIcon = true, id, className },\n ref,\n) {\n const primeRef = useRef<PrimeMessage>(null);\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLDivElement);\n\n return (\n <PrimeMessage\n unstyled\n ref={primeRef}\n id={id}\n severity={SEVERITY[type]}\n text={children}\n // Sem ícone, um fragmento vazio: com undefined o Prime põe o ícone dele.\n icon={\n showIcon ? (\n <span className=\"cr-message__icon\" aria-hidden=\"true\">\n {ICON[type]}\n </span>\n ) : (\n <></>\n )\n }\n pt={{\n root: {\n className: ['cr-message', `cr-message--${type}`, className].filter(Boolean).join(' '),\n },\n text: { className: 'cr-message__text' },\n }}\n />\n );\n});\n","import { useEffect, useId, useState, type ReactNode, type Ref } from 'react';\nimport { Dialog } from 'primereact/dialog';\nimport { Question, X } from '@phosphor-icons/react';\nimport { IconButton } from '../IconButton';\nimport './Modal.css';\n\n/**\n * Size no Figma: Small (520px), Medium (768px) e Large (1200 x 720px; abaixo de 768px de tela\n * vira tela cheia, como o Responsive=360 do Figma).\n */\nexport type ModalSize = 'small' | 'medium' | 'large';\n\nexport interface ModalProps {\n visible: boolean;\n /** Pedido para fechar (X ou Esc). */\n onHide: () => void;\n /** Título do cabeçalho; também é o nome acessível do modal. */\n title: string;\n /** Padrão: large. */\n size?: ModalSize;\n /** Mostra o botão de ajuda (QuestionMark) ao lado do X, no small e no medium. */\n onHelp?: () => void;\n helpLabel?: string;\n closeLabel?: string;\n /** Botões do rodapé, à direita. */\n footer?: ReactNode;\n /** Conteúdo do rodapé à esquerda (ex.: o botão secundário dos Two/Tree Buttons do Figma). */\n footerStart?: ReactNode;\n children?: ReactNode;\n id?: string;\n className?: string;\n}\n\n// Base: Dialog do PrimeReact no modo unstyled (o p-dialog do PrimeNG da produção): overlay,\n// role=dialog com aria-modal, Esc, foco preso no modal e devolvido a quem o abriu, e o bloqueio\n// da rolagem da página são do Prime. O conteúdo vem do `content` do Prime, com o cabeçalho, o\n// corpo e o rodapé do Figma. Quando o corpo rola, o rodapé ganha a sombra do Figma (\"Shadow (Up\n// content scrollable)\").\nexport function Modal({\n visible,\n onHide,\n title,\n size = 'large',\n onHelp,\n helpLabel = 'Ajuda',\n closeLabel = 'Fechar',\n footer,\n footerStart,\n children,\n id,\n className,\n}: ModalProps) {\n const autoId = useId();\n const titleId = `${autoId}-title`;\n // O Prime só monta o conteúdo depois de abrir: a ref de callback começa a medir quando o corpo\n // existe. Quando ele rola (conteúdo maior que a altura), o rodapé ganha sombra.\n const [body, setBody] = useState<HTMLDivElement | null>(null);\n const [rolavel, setRolavel] = useState(false);\n useEffect(() => {\n if (!body) return;\n const medir = () => setRolavel(body.scrollHeight > body.clientHeight);\n medir();\n const observer = new ResizeObserver(medir);\n observer.observe(body);\n [...body.children].forEach((child) => observer.observe(child));\n return () => observer.disconnect();\n }, [body, children]);\n\n const classes = ['cr-modal', `cr-modal--${size}`, rolavel && 'cr-modal--scrollable', className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <Dialog\n unstyled\n id={id}\n visible={visible}\n onHide={onHide}\n draggable={false}\n resizable={false}\n blockScroll\n pt={{\n mask: { className: 'cr-modal__mask' },\n root: {\n className: classes,\n 'aria-labelledby': titleId,\n 'aria-describedby': undefined,\n },\n }}\n content={({ hide, closeRef }) => (\n <>\n <div className=\"cr-modal__header\">\n <h2 id={titleId} className=\"cr-modal__title\">\n {title}\n </h2>\n <div className=\"cr-modal__tools\">\n {onHelp && size !== 'large' && (\n <IconButton\n variant=\"tertiary\"\n size=\"xsmall\"\n icon={<Question />}\n aria-label={helpLabel}\n onClick={onHelp}\n />\n )}\n <IconButton\n ref={closeRef as unknown as Ref<HTMLButtonElement>}\n variant=\"tertiary\"\n size=\"xsmall\"\n icon={<X />}\n aria-label={closeLabel}\n onClick={(event) => hide(event)}\n />\n </div>\n </div>\n <div\n ref={setBody}\n className=\"cr-modal__body\"\n // Quando rola, o corpo entra na ordem do Tab para a rolagem pelo teclado (o axe exige\n // que uma área com rolagem seja focável).\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n tabIndex={rolavel ? 0 : undefined}\n >\n {children}\n </div>\n {(footer || footerStart) && (\n <div className=\"cr-modal__footer\">\n <div className=\"cr-modal__footer-start\">{footerStart}</div>\n <div className=\"cr-modal__footer-end\">{footer}</div>\n </div>\n )}\n </>\n )}\n />\n );\n}\n","import { forwardRef, useId, type Ref } from 'react';\nimport {\n MultiSelect as PrimeMultiSelect,\n type MultiSelectPassThroughOptions,\n} from 'primereact/multiselect';\nimport type { ChipRemoveEvent } from 'primereact/chip';\nimport { CaretDown, Check, Info, MagnifyingGlass, WarningCircle } from '@phosphor-icons/react';\nimport { Chip } from '../Chip';\nimport '../Input/Input.css';\nimport './MultiSelect.css';\n\n/** Type no Figma: Outline (com borda) e Filled (com fundo). */\nexport type MultiSelectVariant = 'outline' | 'filled';\n/** Size no Figma: 32, 36, 42 e 48px de altura do campo. */\nexport type MultiSelectSize = 'xsmall' | 'small' | 'medium' | 'large';\n/** Density da lista no Figma: itens de 40px (normal) ou 32px (compact). */\nexport type MultiSelectDensity = 'normal' | 'compact';\n\nexport interface MultiSelectProps {\n variant?: MultiSelectVariant;\n size?: MultiSelectSize;\n density?: MultiSelectDensity;\n /** Rótulo acima do campo (Label no Figma). Sem rótulo, passe `aria-label`. */\n label?: string;\n 'aria-label'?: string;\n /** Opções da lista. */\n options: unknown[];\n /** Campo da opção usado como texto (padrão: `label`). */\n optionLabel?: string;\n /** Campo da opção usado como valor; sem ele, o valor é a própria opção. */\n optionValue?: string;\n /** Valores selecionados (controlado). */\n value?: unknown[];\n onChange?: (value: unknown[]) => void;\n /** Texto do campo vazio (Field Text no Figma). */\n placeholder?: string;\n /** Mostra a busca no topo da lista (Search Filter no Figma). */\n filter?: boolean;\n filterPlaceholder?: string;\n /**\n * Quantos chips aparecem no campo; acima disso, um chip só com o resumo (Chip Group\n * \"4 itens selecionados\" no Figma), cujo X limpa a seleção.\n */\n maxChips?: number;\n /** Texto do resumo; `{0}` vira a quantidade. */\n selectedItemsLabel?: string;\n /** Nome acessível do checkbox de selecionar todos. */\n selectAllLabel?: string;\n /** Texto da lista quando a busca não encontra nada. */\n emptyFilterMessage?: string;\n /** Nome acessível do X dos chips. */\n removeLabel?: string;\n /** Dica abaixo do campo (Hint Info no Figma). */\n hint?: string;\n /** Mensagem de erro: deixa o campo no estado Error e mostra a dica de erro no lugar da dica. */\n error?: string;\n required?: boolean;\n disabled?: boolean;\n id?: string;\n name?: string;\n className?: string;\n}\n\n// Base: MultiSelect do PrimeReact no modo unstyled (abrir/fechar, teclado, seleção, filtro e\n// \"selecionar todos\" do Prime, espelhando o p-multiSelect do PrimeNG da produção). O rótulo, a\n// caixa e a dica reaproveitam o campo do Input (.cr-field); os selecionados viram Chips do Cristal\n// pelo selectedItemTemplate, porque o Prime mostra o resumo acima do limite só como texto, e o\n// Figma o mostra como chip. A ref vai para o <input> (combobox) do Prime, que recebe o foco.\nexport const MultiSelect = forwardRef<HTMLInputElement, MultiSelectProps>(function MultiSelect(\n {\n variant = 'outline',\n size = 'large',\n density = 'normal',\n label,\n options,\n optionLabel = 'label',\n optionValue,\n value,\n onChange,\n placeholder = 'Selecionar opção',\n filter = false,\n filterPlaceholder = 'Pesquisar',\n maxChips = 3,\n selectedItemsLabel = '{0} itens selecionados',\n removeLabel = 'Remover',\n selectAllLabel = 'Selecionar todos',\n emptyFilterMessage = 'Nenhum resultado encontrado',\n hint,\n error,\n required,\n disabled,\n id,\n className,\n ...props\n },\n ref,\n) {\n const autoId = useId();\n const inputId = id ?? autoId;\n const hintId = `${inputId}-hint`;\n const supportText = error ?? hint;\n const selected = value ?? [];\n const overflow = selected.length > maxChips;\n\n const classes = [\n 'cr-field',\n `cr-field--${variant}`,\n `cr-field--${size}`,\n 'cr-multiselect',\n error && 'cr-field--error',\n disabled && 'cr-field--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const valueOf = (option: unknown) =>\n optionValue ? (option as Record<string, unknown>)[optionValue] : option;\n const labelOf = (item: unknown) => {\n const option = options.find((o) => valueOf(o) === item) ?? item;\n const text = (option as Record<string, unknown> | null)?.[optionLabel];\n return String(text ?? item);\n };\n\n // O X do chip não pode abrir/fechar a lista (o clique subiria até o campo do Prime).\n const remove = (event: ChipRemoveEvent, next: unknown[]) => {\n event.originalEvent.stopPropagation();\n onChange?.(next);\n return false;\n };\n\n const renderSelected = (item?: unknown) => {\n if (item === undefined) {\n return <span className=\"cr-multiselect__placeholder\">{placeholder}</span>;\n }\n if (overflow) {\n if (selected.indexOf(item) !== 0) return null;\n return (\n <Chip\n className=\"cr-multiselect__chip\"\n label={selectedItemsLabel.replace('{0}', String(selected.length))}\n disabled={disabled}\n onRemove={disabled ? undefined : (event) => remove(event, [])}\n removeLabel={removeLabel}\n />\n );\n }\n return (\n <Chip\n className=\"cr-multiselect__chip\"\n label={labelOf(item)}\n disabled={disabled}\n onRemove={\n disabled\n ? undefined\n : (event) =>\n remove(\n event,\n selected.filter((v) => v !== item),\n )\n }\n removeLabel={`${removeLabel} ${labelOf(item)}`}\n />\n );\n };\n\n const checkbox = {\n root: { className: 'cr-multiselect__checkbox' },\n box: { className: 'cr-multiselect__checkbox-box' },\n input: { className: 'cr-multiselect__checkbox-input' },\n };\n\n const pt: MultiSelectPassThroughOptions = {\n // Com a lista aberta o foco vai para a busca (no body), fora da caixa: o estado Focused do\n // Figma vem do estado do Prime.\n root: (options) => {\n const open = (options as { state?: { overlayVisible?: boolean } })?.state?.overlayVisible;\n return {\n className: `cr-field__control cr-multiselect__control${open ? ' cr-multiselect__control--open' : ''}`,\n };\n },\n hiddenInputWrapper: { className: 'cr-multiselect__hidden' },\n input: {\n 'aria-describedby': supportText ? hintId : undefined,\n 'aria-invalid': error ? true : undefined,\n 'aria-required': required || undefined,\n },\n labelContainer: { className: 'cr-multiselect__value' },\n label: { className: 'cr-multiselect__chips' },\n trigger: { className: 'cr-field__icon cr-multiselect__trigger' },\n panel: { className: `cr-multiselect__panel cr-multiselect__panel--${density}` },\n header: { className: 'cr-multiselect__header' },\n headerCheckboxContainer: { className: 'cr-multiselect__select-all' },\n // O Prime repete role=checkbox na <div> em volta do <input>: o leitor de tela veria dois.\n headerCheckbox: {\n ...checkbox,\n root: { ...checkbox.root, role: undefined, 'aria-checked': undefined },\n input: { ...checkbox.input, 'aria-label': selectAllLabel },\n },\n filterContainer: { className: 'cr-multiselect__search' },\n // O filtro é um InputText do Prime, que lê o pass-through da raiz (a tipagem do Prime diverge).\n filterInput: {\n root: { className: 'cr-multiselect__search-input', 'aria-label': filterPlaceholder },\n } as never,\n closeButton: { className: 'cr-multiselect__close' },\n wrapper: { className: 'cr-multiselect__wrapper' },\n list: { className: 'cr-multiselect__list' },\n item: (options) => {\n const context = (options as { context?: { focusedIndex?: number; index?: number } })?.context;\n const focused = context !== undefined && context.focusedIndex === context.index;\n return {\n className: `cr-multiselect__item${focused ? ' cr-multiselect__item--focused' : ''}`,\n };\n },\n checkboxContainer: { className: 'cr-multiselect__item-checkbox' },\n // O item (role=option) já diz se está selecionado; o checkbox é só visual para o leitor de tela.\n // O item (role=option) já diz se está selecionado. O checkbox do Prime fica só visual: inert\n // tira o <input> do foco e do leitor de tela (tabindex=-1 e aria-hidden não bastam dentro de\n // um option), e o clique cai no item.\n checkbox: {\n ...checkbox,\n root: { ...checkbox.root, role: undefined, 'aria-checked': undefined, inert: true },\n },\n emptyMessage: { className: 'cr-multiselect__empty' },\n };\n\n return (\n <div className={classes}>\n {label && (\n <label className=\"cr-field__label\" htmlFor={inputId}>\n {label}\n {required && (\n <span className=\"cr-field__required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n <PrimeMultiSelect\n unstyled\n inputId={inputId}\n inputRef={ref as Ref<HTMLSelectElement>}\n value={selected}\n options={options}\n optionLabel={optionLabel}\n optionValue={optionValue}\n onChange={(event) => onChange?.(event.value as unknown[])}\n disabled={disabled}\n invalid={Boolean(error)}\n placeholder={placeholder}\n selectedItemTemplate={renderSelected}\n filter={filter}\n filterPlaceholder={filterPlaceholder}\n // 7 itens visíveis antes da rolagem, como no Figma (40px no normal, 32px no compact).\n scrollHeight={density === 'compact' ? '224px' : '280px'}\n emptyFilterMessage={emptyFilterMessage}\n filterIcon={\n <span className=\"cr-multiselect__search-icon\" aria-hidden=\"true\">\n <MagnifyingGlass />\n </span>\n }\n dropdownIcon={<CaretDown aria-hidden=\"true\" />}\n checkboxIcon={<Check aria-hidden=\"true\" />}\n itemCheckboxIcon={<Check aria-hidden=\"true\" />}\n pt={pt}\n {...props}\n />\n {supportText && (\n <p id={hintId} className={`cr-field__hint${error ? ' cr-field__hint--error' : ''}`}>\n <span className=\"cr-field__hint-icon\" aria-hidden=\"true\">\n {error ? <WarningCircle /> : <Info />}\n </span>\n {supportText}\n </p>\n )}\n </div>\n );\n});\n","import {\n cloneElement,\n forwardRef,\n useState,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport { TabMenu } from 'primereact/tabmenu';\nimport type { MenuItem } from 'primereact/menuitem';\nimport { ArrowLeft, ArrowsInSimple, ArrowsOutSimple } from '@phosphor-icons/react';\nimport { IconButton } from '../IconButton';\nimport { Tag } from '../Tag';\nimport './PageHeader.css';\n\n/**\n * Type no Figma: o estilo das abas. Primary tem o ícone em círculo e o fundo azul na aba ativa;\n * Secondary é só o texto, com o sublinhado na ativa.\n */\nexport type PageHeaderVariant = 'primary' | 'secondary';\n\n/** Uma aba (.Page Header Tab Item ou .Page Header Tab Secondary Item no Figma). */\nexport interface PageHeaderTab {\n label: string;\n /** Ícone de 16px. No primary fica no círculo de 32px; no secondary é opcional. */\n icon?: ReactNode;\n disabled?: boolean;\n}\n\nexport interface PageHeaderProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Título da página (Page Title no Figma). */\n title: string;\n /** Padrão: primary. */\n variant?: PageHeaderVariant;\n /** Mostra o botão de voltar antes do título (Show Back Button no Figma). */\n onBack?: () => void;\n backLabel?: string;\n /** Texto da Tag depois do título (Show Tag no Figma). */\n tag?: ReactNode;\n /** Segment Control das ferramentas (Show Segment Control no Figma): um `<SegmentControl>`. */\n segmentControl?: ReactNode;\n /** Botões das ferramentas (Show Buttons no Figma), 8px entre eles. */\n actions?: ReactNode;\n /**\n * Mostra o botão de expandir, o último das ferramentas. Recebe o novo estado: true ao expandir,\n * false ao recolher.\n */\n onExpand?: (expanded: boolean) => void;\n /** Expandido (controlado). Sem ele, o PageHeader alterna sozinho a cada clique. */\n expanded?: boolean;\n /** Nome do botão recolhido (ArrowsOutSimple). */\n expandLabel?: string;\n /** Nome do botão expandido (ArrowsInSimple). */\n collapseLabel?: string;\n /** Abas abaixo do título (Show Tabs no Figma). */\n tabs?: PageHeaderTab[];\n /** Aba ativa (controlado). Sem ela, o PageHeader controla sozinho. */\n activeTab?: number;\n onTabChange?: (index: number) => void;\n /** Nome das abas para o leitor de tela. Padrão: o título. */\n tabsLabel?: string;\n}\n\n// Exclusivo: o PrimeReact (e o PrimeNG da produção) não tem cabeçalho de página. O Cristal monta\n// o do Figma com o IconButton (voltar e expandir), a Tag, o SegmentControl recebido e, nas abas,\n// o TabMenu do PrimeReact no modo unstyled (o p-tabMenu do PrimeNG): menubar com as setas, Home e\n// End do Prime. O conteúdo de cada aba vem do template do Prime, com o ícone e o texto do Figma, e\n// a ativa ganha aria-current. Fluido e responsivo pela própria largura (PageHeader.css).\nexport const PageHeader = forwardRef<HTMLDivElement, PageHeaderProps>(function PageHeader(\n {\n title,\n variant = 'primary',\n onBack,\n backLabel = 'Voltar',\n tag,\n segmentControl,\n actions,\n onExpand,\n expanded,\n expandLabel = 'Expandir',\n collapseLabel = 'Recolher',\n tabs,\n activeTab,\n onTabChange,\n tabsLabel,\n className,\n ...props\n },\n ref,\n) {\n // Com onTabChange o Prime trata a aba ativa como controlada: sem activeTab, o PageHeader guarda.\n const [interna, setInterna] = useState(0);\n const ativa = activeTab ?? interna;\n // O expandir alterna o ícone: ArrowsOutSimple para expandir, ArrowsInSimple para recolher.\n const [expandidoInterno, setExpandidoInterno] = useState(false);\n const expandido = expanded ?? expandidoInterno;\n\n const tools = segmentControl || actions;\n\n const tabTemplate = (tab: PageHeaderTab) =>\n // O TabMenu também passa o index da aba nas opções, além do que o tipo do MenuItem declara.\n function TabContent(item: MenuItem, options: unknown) {\n const { element, index } = options as { element: ReactElement; index: number };\n const active = index === ativa;\n return cloneElement(\n element,\n { 'aria-current': active ? 'page' : undefined } as object,\n <>\n {(variant === 'primary' || tab.icon) && (\n <span className=\"cr-page-header__tab-icon\" aria-hidden=\"true\">\n {tab.icon}\n </span>\n )}\n <span className=\"cr-page-header__tab-label\">{item.label}</span>\n </>,\n );\n };\n\n const classes = ['cr-page-header', `cr-page-header--${variant}`, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div ref={ref} className={classes} {...props}>\n <div\n className={`cr-page-header__title-group${tools ? ' cr-page-header__title-group--tools' : ''}`}\n >\n <div className=\"cr-page-header__title-text\">\n {onBack && (\n <IconButton\n variant=\"tertiary\"\n size=\"small\"\n icon={<ArrowLeft />}\n aria-label={backLabel}\n onClick={onBack}\n />\n )}\n <h1 className=\"cr-page-header__title\">{title}</h1>\n {tag && <Tag className=\"cr-page-header__tag\">{tag}</Tag>}\n </div>\n {tools && (\n <div className=\"cr-page-header__tools\">\n {segmentControl && <div className=\"cr-page-header__segment\">{segmentControl}</div>}\n {actions && <div className=\"cr-page-header__actions\">{actions}</div>}\n </div>\n )}\n {onExpand && (\n <IconButton\n className=\"cr-page-header__expand\"\n variant=\"tertiary\"\n size=\"medium\"\n icon={expandido ? <ArrowsInSimple /> : <ArrowsOutSimple />}\n aria-label={expandido ? collapseLabel : expandLabel}\n onClick={() => {\n setExpandidoInterno(!expandido);\n onExpand(!expandido);\n }}\n />\n )}\n </div>\n {tabs && tabs.length > 0 && (\n <TabMenu\n unstyled\n model={tabs.map((tab) => ({\n label: tab.label,\n disabled: tab.disabled,\n template: tabTemplate(tab),\n }))}\n activeIndex={ativa}\n onTabChange={(event) => {\n setInterna(event.index);\n onTabChange?.(event.index);\n }}\n pt={{\n root: { className: 'cr-page-header__tabs' },\n menu: { className: 'cr-page-header__tab-list', 'aria-label': tabsLabel ?? title },\n menuitem: { className: 'cr-page-header__tab-item' },\n action: { className: 'cr-page-header__tab' },\n inkbar: { className: 'cr-page-header__inkbar' },\n }}\n />\n )}\n </div>\n );\n});\n","import { forwardRef, useCallback, useId, useState, type Ref } from 'react';\nimport { Dropdown, type DropdownPassThroughOptions } from 'primereact/dropdown';\nimport { CaretDown, CaretUp, Info, WarningCircle } from '@phosphor-icons/react';\nimport '../Input/Input.css';\nimport './Select.css';\n\n/** Type no Figma: Outline (com borda) e Filled (com fundo). */\nexport type SelectVariant = 'outline' | 'filled';\n/** Size no Figma: 32, 36, 42 e 48px de altura do campo. */\nexport type SelectSize = 'xsmall' | 'small' | 'medium' | 'large';\n\nexport interface SelectProps {\n variant?: SelectVariant;\n size?: SelectSize;\n /** Rótulo acima do campo (Label no Figma). Sem rótulo, passe `aria-label`. */\n label?: string;\n 'aria-label'?: string;\n /** Opções da lista. */\n options: unknown[];\n /** Campo da opção usado como texto (padrão: `label`). */\n optionLabel?: string;\n /** Campo da opção usado como valor; sem ele, o valor é a própria opção. */\n optionValue?: string;\n /** Valor selecionado (controlado). */\n value?: unknown;\n onChange?: (value: unknown) => void;\n /** Texto do campo vazio (Field Text no Figma). */\n placeholder?: string;\n /** Dica abaixo do campo (Hint Info no Figma). */\n hint?: string;\n /** Mensagem de erro: deixa o campo no estado Error e mostra a dica de erro no lugar da dica. */\n error?: string;\n required?: boolean;\n disabled?: boolean;\n /** Vai no campo (combobox). */\n id?: string;\n name?: string;\n className?: string;\n}\n\n// Base: Dropdown do PrimeReact no modo unstyled (abrir/fechar, teclado, seleção e posição da\n// lista do Prime, espelhando o p-dropdown do PrimeNG da produção). O rótulo, a caixa e a dica\n// reaproveitam o campo do Input (.cr-field) e a lista segue a Dropdown List do Menu. O Dropdown do\n// Prime não marca o campo como combobox: o Cristal completa (role, aria-expanded e aria-controls).\n// Pelo teclado, o Prime leva o foco para o item (role=option), que o leitor de tela anuncia. A\n// ref vai para o campo, que recebe o foco.\nexport const Select = forwardRef<HTMLInputElement, SelectProps>(function Select(\n {\n variant = 'outline',\n size = 'large',\n label,\n 'aria-label': ariaLabel,\n options,\n optionLabel = 'label',\n optionValue,\n value,\n onChange,\n placeholder = 'Selecione uma opção',\n hint,\n error,\n required,\n disabled,\n id,\n name,\n className,\n },\n ref,\n) {\n const autoId = useId();\n const inputId = id ?? autoId;\n const hintId = `${inputId}-hint`;\n const listId = `${inputId}-list`;\n const supportText = error ?? hint;\n const [open, setOpen] = useState(false);\n\n const setInputRef = useCallback(\n (input: HTMLInputElement | null) => {\n input?.setAttribute('role', 'combobox');\n if (typeof ref === 'function') ref(input);\n else if (ref) ref.current = input;\n },\n [ref],\n );\n\n const classes = [\n 'cr-field',\n `cr-field--${variant}`,\n `cr-field--${size}`,\n 'cr-select',\n error && 'cr-field--error',\n disabled && 'cr-field--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const pt: DropdownPassThroughOptions = {\n root: {\n className: `cr-field__control cr-select__control${open ? ' cr-select__control--open' : ''}`,\n // O Prime aponta para um item mesmo sem destaque (dropdownItem_-1); o foco vai no item.\n 'aria-activedescendant': undefined,\n },\n // O <select> escondido do Prime só existe para formulários: fora da árvore de acessibilidade.\n select: { 'aria-hidden': true },\n hiddenSelectedMessage: { className: 'cr-select__hidden' },\n // O Prime usa a mesma chave no texto do campo e no combobox escondido.\n input: { className: 'cr-select__value' },\n trigger: { className: 'cr-field__icon cr-select__trigger', 'aria-hidden': true },\n panel: { className: 'cr-select__panel' },\n wrapper: { className: 'cr-select__wrapper' },\n list: { className: 'cr-select__list', id: listId },\n item: { className: 'cr-select__item' },\n emptyMessage: { className: 'cr-select__item cr-select__empty' },\n };\n\n return (\n <div className={classes}>\n {label && (\n <label className=\"cr-field__label\" htmlFor={inputId}>\n {label}\n {required && (\n <span className=\"cr-field__required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n <Dropdown\n unstyled\n inputId={inputId}\n focusInputRef={setInputRef as unknown as Ref<HTMLInputElement>}\n value={value}\n options={options}\n optionLabel={optionLabel}\n optionValue={optionValue}\n onChange={(event) => onChange?.(event.value)}\n onShow={() => setOpen(true)}\n onHide={() => setOpen(false)}\n disabled={disabled}\n required={required}\n name={name}\n invalid={Boolean(error)}\n placeholder={placeholder}\n valueTemplate={(option: unknown) =>\n option == null ? (\n <span className=\"cr-select__placeholder\">{placeholder}</span>\n ) : (\n String((option as Record<string, unknown>)[optionLabel] ?? option)\n )\n }\n // 5 itens visíveis antes da rolagem, como no Figma (itens de 37px).\n scrollHeight=\"185px\"\n dropdownIcon={<CaretDown />}\n collapseIcon={<CaretUp />}\n aria-label={label ? undefined : ariaLabel}\n aria-expanded={open}\n aria-controls={open ? listId : undefined}\n aria-describedby={supportText ? hintId : undefined}\n aria-invalid={error ? true : undefined}\n aria-required={required || undefined}\n pt={pt}\n />\n {supportText && (\n <p id={hintId} className={`cr-field__hint${error ? ' cr-field__hint--error' : ''}`}>\n <span className=\"cr-field__hint-icon\" aria-hidden=\"true\">\n {error ? <WarningCircle /> : <Info />}\n </span>\n {supportText}\n </p>\n )}\n </div>\n );\n});\n","import {\n forwardRef,\n useImperativeHandle,\n useRef,\n useState,\n type ReactNode,\n type SyntheticEvent,\n} from 'react';\nimport {\n Paginator as PrimePaginator,\n type PaginatorChangeEvent,\n type PaginatorPageLinksOptions,\n type PaginatorRowsPerPageDropdownOptions,\n} from 'primereact/paginator';\nimport { CaretDoubleLeft, CaretDoubleRight, CaretLeft, CaretRight } from '@phosphor-icons/react';\nimport { Select } from '../Select';\nimport './Paginator.css';\n\n/** O que o onPageChange recebe (o mesmo evento do Prime). */\nexport interface PaginatorPageChangeEvent {\n /** Índice do primeiro item da página. */\n first: number;\n /** Itens por página. */\n rows: number;\n /** Página, a partir de 0. */\n page: number;\n pageCount: number;\n}\n\nexport interface PaginatorProps {\n totalRecords: number;\n /** Índice do primeiro item da página (controlado). Sem ele, o Paginator controla sozinho. */\n first?: number;\n /** Itens por página (controlado). Padrão: o primeiro de rowsPerPageOptions, ou 10. */\n rows?: number;\n /** Opções do Select de itens por página; sem elas, o Select não aparece. */\n rowsPerPageOptions?: number[];\n /** Quantos números de página aparecem. Padrão: 5, como no Figma. */\n pageLinkSize?: number;\n onPageChange?: (event: PaginatorPageChangeEvent) => void;\n /** Nome do Select para o leitor de tela. */\n rowsPerPageLabel?: string;\n id?: string;\n className?: string;\n}\n\n// Base: Paginator do PrimeReact no modo unstyled (o p-paginator do PrimeNG da produção): a conta\n// das páginas, a janela de números, as setas desabilitadas nas pontas e a volta à primeira página\n// ao trocar os itens por página são do Prime. Pelo template do Prime, o Cristal desenha os botões\n// do Figma (setas com os Carets e os números em círculo), com nomes em português, e troca o\n// Dropdown do Prime pelo Select do Cristal, como no Figma. A ref entrega a raiz.\n// Seta (.Paginator Arrows no Figma), no lugar do botão do Prime: o Prime entrega o clique e se\n// ela está desabilitada (nas pontas).\nconst seta =\n (label: string, icon: ReactNode) =>\n (options: { onClick: (event: SyntheticEvent) => void; disabled: boolean }) => (\n <button\n type=\"button\"\n className=\"cr-paginator__arrow\"\n aria-label={label}\n disabled={options.disabled}\n onClick={options.onClick}\n >\n {icon}\n </button>\n );\n\nexport const Paginator = forwardRef<HTMLDivElement, PaginatorProps>(function Paginator(\n {\n totalRecords,\n first,\n rows,\n rowsPerPageOptions,\n pageLinkSize = 5,\n onPageChange,\n rowsPerPageLabel = 'Itens por página',\n id,\n className,\n },\n ref,\n) {\n const primeRef = useRef<PrimePaginator>(null);\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLDivElement);\n\n // O Paginator do Prime só muda de página pelas props: sem first e rows, o Cristal guarda.\n const [interno, setInterno] = useState({\n first: 0,\n rows: rowsPerPageOptions?.[0] ?? 10,\n });\n const atual = { first: first ?? interno.first, rows: rows ?? interno.rows };\n\n return (\n <PrimePaginator\n unstyled\n ref={primeRef}\n id={id}\n totalRecords={totalRecords}\n first={atual.first}\n rows={atual.rows}\n rowsPerPageOptions={rowsPerPageOptions}\n pageLinkSize={pageLinkSize}\n onPageChange={(event) => {\n setInterno({ first: event.first, rows: event.rows });\n onPageChange?.(event);\n }}\n template={{\n layout:\n 'FirstPageLink PrevPageLink PageLinks NextPageLink LastPageLink RowsPerPageDropdown',\n FirstPageLink: seta('Primeira página', <CaretDoubleLeft aria-hidden=\"true\" />),\n PrevPageLink: seta('Página anterior', <CaretLeft aria-hidden=\"true\" />),\n NextPageLink: seta('Próxima página', <CaretRight aria-hidden=\"true\" />),\n LastPageLink: seta('Última página', <CaretDoubleRight aria-hidden=\"true\" />),\n PageLinks: (options: PaginatorPageLinksOptions) => {\n const ativa = options.page === options.currentPage;\n return (\n <button\n type=\"button\"\n className=\"cr-paginator__page\"\n aria-label={`Página ${options.page + 1}`}\n aria-current={ativa ? 'page' : undefined}\n onClick={options.onClick}\n >\n {options.page + 1}\n </button>\n );\n },\n // O Prime chama o template mesmo sem rowsPerPageOptions.\n RowsPerPageDropdown: (options: PaginatorRowsPerPageDropdownOptions) =>\n options.options.length > 0 && (\n <Select\n className=\"cr-paginator__rows\"\n size=\"medium\"\n aria-label={rowsPerPageLabel}\n options={options.options}\n optionValue=\"value\"\n value={options.value}\n // O Prime lê o número de itens no value (o tipo dele diz string).\n onChange={(value) => options.onChange({ value } as unknown as PaginatorChangeEvent)}\n />\n ),\n }}\n pt={{\n root: { className: ['cr-paginator', className].filter(Boolean).join(' ') },\n pages: { className: 'cr-paginator__pages' },\n }}\n />\n );\n});\n","import { forwardRef, useImperativeHandle, useRef, type HTMLAttributes } from 'react';\nimport { Panel as PrimePanel } from 'primereact/panel';\nimport './Panel.css';\n\n// O onToggle nativo da <div> colide com o do Panel do Prime, que o Figma não usa.\nexport type PanelProps = Omit<HTMLAttributes<HTMLDivElement>, 'onToggle'>;\n\n// Base: Panel do PrimeReact no modo unstyled (o p-panel do PrimeNG da produção). No Figma o Panel é\n// só o contêiner da seção da página, com o conteúdo num slot e sem cabeçalho: o Cristal não repassa\n// header, toggleable nem footer do Prime, e o conteúdo vai em children. Sem cabeçalho, o Prime\n// deixaria a região de conteúdo apontando para um título que não existe: o Cristal tira o role e o\n// aria-labelledby (para nomear o Panel como região, passe role=\"region\" e aria-label).\nexport const Panel = forwardRef<HTMLDivElement, PanelProps>(function Panel(\n { className, style, children, ...props },\n ref,\n) {\n // A ref do Prime é um objeto com getElement(); a do Cristal entrega o próprio elemento.\n const primeRef = useRef<PrimePanel>(null);\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLDivElement);\n\n return (\n <PrimePanel\n unstyled\n ref={primeRef}\n // No unstyled, className e style do Panel do Prime não chegam ao elemento; vão pelo pt.\n pt={{\n root: { className: ['cr-panel', className].filter(Boolean).join(' '), style },\n toggleableContent: {\n className: 'cr-panel__body',\n role: undefined,\n 'aria-labelledby': undefined,\n },\n content: { className: 'cr-panel__content' },\n }}\n {...props}\n >\n {children}\n </PrimePanel>\n );\n});\n","import { forwardRef, useId, type CSSProperties, type ReactNode, type Ref } from 'react';\nimport { RadioButton, type RadioButtonChangeEvent } from 'primereact/radiobutton';\nimport './Radio.css';\n\n/** Label Size no Figma: Default (uma linha, com reticências) e Full (quebra em várias linhas). */\nexport type RadioLabelSize = 'default' | 'full';\n\nexport interface RadioProps {\n /** Texto ao lado do controle (Label no Figma). Sem rótulo visível, vira o nome acessível. */\n label: ReactNode;\n /** Mostra o rótulo. Padrão: true. */\n showLabel?: boolean;\n /** Padrão: default. */\n labelSize?: RadioLabelSize;\n checked?: boolean;\n /** Valor da opção, devolvido no `onChange`. */\n value?: unknown;\n /** Nome do grupo: radios com o mesmo `name` se excluem e navegam pelas setas. */\n name?: string;\n onChange?: (event: RadioButtonChangeEvent) => void;\n disabled?: boolean;\n required?: boolean;\n /** Vai no <input>. */\n id?: string;\n className?: string;\n style?: CSSProperties;\n}\n\n// Base: RadioButton do PrimeReact no modo unstyled (o p-radioButton do PrimeNG da produção), com\n// o <input type=\"radio\"> nativo por cima do círculo: o grupo pelo `name` e as setas do teclado são\n// do navegador. O rótulo é um <label> ligado ao input. A ref entrega o <input>.\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(function Radio(\n {\n label,\n showLabel = true,\n labelSize = 'default',\n checked = false,\n value,\n name,\n onChange,\n disabled,\n required,\n id,\n className,\n style,\n },\n ref,\n) {\n const autoId = useId();\n const inputId = id ?? autoId;\n\n const classes = [\n 'cr-radio',\n `cr-radio--label-${labelSize}`,\n disabled && 'cr-radio--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={classes} style={style}>\n <RadioButton\n unstyled\n inputRef={ref as Ref<HTMLInputElement>}\n inputId={inputId}\n checked={checked}\n value={value}\n name={name}\n onChange={onChange}\n disabled={disabled}\n required={required}\n pt={{\n root: { className: 'cr-radio__control' },\n input: { className: 'cr-radio__input' },\n box: { className: 'cr-radio__box' },\n icon: { className: 'cr-radio__icon' },\n }}\n />\n {/* Sem rótulo visível, o <label> continua no DOM (escondido) e dá o nome ao input. */}\n <label\n className={`cr-radio__label${showLabel ? '' : ' cr-radio__label--hidden'}`}\n htmlFor={inputId}\n >\n {label}\n </label>\n </div>\n );\n});\n","import {\n forwardRef,\n useId,\n useImperativeHandle,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n type UIEvent,\n} from 'react';\nimport { ScrollPanel as PrimeScrollPanel } from 'primereact/scrollpanel';\nimport './ScrollPanel.css';\n\nexport interface ScrollPanelProps {\n children?: ReactNode;\n /** O que a área mostra, para o leitor de tela (ex.: \"Histórico da carga\"). */\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n /** Dê uma altura (ou max-height) para a área rolar. */\n style?: CSSProperties;\n id?: string;\n className?: string;\n}\n\nconst porcentagem = (posicao: number, total: number, visivel: number) =>\n total > visivel ? Math.round((posicao / (total - visivel)) * 100) : 0;\n\n// Base: ScrollPanel do PrimeReact no modo unstyled (o p-scrollPanel do PrimeNG da produção): o\n// Prime esconde a barra nativa e desenha as dele, que acompanham a rolagem e podem ser arrastadas.\n// Visual da Scrollbar do Figma: 8px, polegar fill/neutral/subtle, trilho transparente. O Prime\n// deixa as barras apontando (aria-controls) para um id que o conteúdo não tem, com os valores\n// trocados e em pixels, e o conteúdo que rola fora do Tab: o Cristal dá o foco ao conteúdo (que\n// rola pelo teclado como qualquer área nativa) e deixa as barras só para o mouse, com os valores\n// em porcentagem. A ref entrega a raiz.\nexport const ScrollPanel = forwardRef<HTMLDivElement, ScrollPanelProps>(function ScrollPanel(\n { children, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, style, id, className },\n ref,\n) {\n const primeRef = useRef<PrimeScrollPanel>(null);\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLDivElement);\n const contentId = `${useId()}-content`;\n const [posicao, setPosicao] = useState({ x: 0, y: 0 });\n\n const aoRolar = (event: UIEvent<HTMLDivElement>) => {\n const el = event.currentTarget;\n setPosicao({\n x: porcentagem(el.scrollLeft, el.scrollWidth, el.clientWidth),\n y: porcentagem(el.scrollTop, el.scrollHeight, el.clientHeight),\n });\n };\n\n const barra = (orientacao: 'horizontal' | 'vertical', valor: number) => ({\n className: `cr-scrollpanel__bar cr-scrollpanel__bar--${orientacao}`,\n tabIndex: -1,\n 'aria-controls': contentId,\n 'aria-valuenow': valor,\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n });\n\n // No unstyled, className e style do ScrollPanel do Prime não chegam ao elemento; vão pelo pt.\n // O Prime lê as barras como `barx` e `bary`, mas a tipagem dele as chama de barX e barY: o objeto\n // fica numa constante para o TypeScript aceitar as chaves que o Prime de fato usa.\n const pt = {\n root: { className: ['cr-scrollpanel', className].filter(Boolean).join(' '), style },\n wrapper: { className: 'cr-scrollpanel__wrapper' },\n content: {\n id: contentId,\n className: 'cr-scrollpanel__content',\n tabIndex: 0,\n role: 'region',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n onScroll: aoRolar,\n },\n barx: barra('horizontal', posicao.x),\n bary: barra('vertical', posicao.y),\n };\n\n return (\n <PrimeScrollPanel unstyled ref={primeRef} id={id} pt={pt}>\n {children}\n </PrimeScrollPanel>\n );\n});\n","import { forwardRef, useImperativeHandle, useRef, type KeyboardEvent, type ReactNode } from 'react';\nimport { SelectButton } from 'primereact/selectbutton';\nimport './SegmentControl.css';\n\n/**\n * No Figma: Primary é o Header Segment Control (pílula em fill/brand/subtlest) e Secondary é o\n * Segment Control (cinza, com ícones).\n */\nexport type SegmentControlVariant = 'primary' | 'secondary';\n\nexport interface SegmentControlOption {\n label: string;\n value: string | number;\n /** Ícone de 16px antes do texto (o Secondary do Figma usa). */\n icon?: ReactNode;\n disabled?: boolean;\n}\n\nexport interface SegmentControlProps {\n options: SegmentControlOption[];\n /** Valor do segmento ativo (controlado). */\n value?: string | number;\n onChange?: (value: string | number) => void;\n variant?: SegmentControlVariant;\n /** O que o grupo controla, para o leitor de tela (ex.: \"Visualização\"). */\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n disabled?: boolean;\n id?: string;\n className?: string;\n}\n\n// Base: SelectButton do PrimeReact no modo unstyled (o p-selectButton do PrimeNG da produção):\n// grupo de botões com aria-pressed e as setas do teclado do Prime; o Cristal soma o Enter à barra\n// de espaço. Sempre há um segmento ativo (allowEmpty desligado). O visual vem do\n// SegmentControl.css. A ref entrega o grupo.\nexport const SegmentControl = forwardRef<HTMLDivElement, SegmentControlProps>(\n function SegmentControl(\n {\n options,\n value,\n onChange,\n variant = 'primary',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n disabled,\n id,\n className,\n },\n ref,\n ) {\n const primeRef = useRef<SelectButton>(null);\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLDivElement);\n\n const classes = ['cr-segment', `cr-segment--${variant}`, className].filter(Boolean).join(' ');\n\n return (\n <SelectButton\n unstyled\n ref={primeRef}\n id={id}\n options={options}\n optionLabel=\"label\"\n optionValue=\"value\"\n optionDisabled=\"disabled\"\n value={value}\n onChange={(event) => {\n if (event.value != null) onChange?.(event.value as string | number);\n }}\n allowEmpty={false}\n disabled={disabled}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n itemTemplate={(option: SegmentControlOption) => (\n <>\n {option.icon && (\n <span className=\"cr-segment__icon\" aria-hidden=\"true\">\n {option.icon}\n </span>\n )}\n <span className=\"cr-segment__label\">{option.label}</span>\n </>\n )}\n pt={{\n root: { className: classes },\n button: {\n className: 'cr-segment__item',\n // O Prime só ativa com a barra de espaço; um role=button responde também ao Enter.\n onKeyDown: (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Enter') event.currentTarget.click();\n },\n },\n }}\n />\n );\n },\n);\n","import { forwardRef, useId, type CSSProperties, type ReactNode, type Ref } from 'react';\nimport { InputSwitch, type InputSwitchChangeEvent } from 'primereact/inputswitch';\nimport './Switch.css';\n\n/** Size no Figma: Medium (48x28) e Small (32x20). */\nexport type SwitchSize = 'medium' | 'small';\n/** Label Position no Figma: lado do rótulo em relação ao switch. */\nexport type SwitchLabelPosition = 'right' | 'left';\n\nexport interface SwitchProps {\n /** Texto ao lado do switch (Label no Figma). Sem rótulo visível, vira o nome acessível. */\n label: ReactNode;\n /** Mostra o rótulo. Padrão: true. */\n showLabel?: boolean;\n /** Padrão: right. */\n labelPosition?: SwitchLabelPosition;\n /** Padrão: medium. */\n size?: SwitchSize;\n checked?: boolean;\n onChange?: (event: InputSwitchChangeEvent) => void;\n disabled?: boolean;\n name?: string;\n /** Vai no <input>. */\n id?: string;\n className?: string;\n style?: CSSProperties;\n}\n\n// Base: InputSwitch do PrimeReact no modo unstyled (o p-inputSwitch do PrimeNG da produção), com o\n// <input role=\"switch\"> nativo por cima do trilho. O Prime também põe role=\"checkbox\" na div de\n// fora, o que aninha dois controles: o Cristal tira esse role. O rótulo é um <label> ligado ao\n// input. A ref entrega o <input>.\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(function Switch(\n {\n label,\n showLabel = true,\n labelPosition = 'right',\n size = 'medium',\n checked = false,\n onChange,\n disabled,\n name,\n id,\n className,\n style,\n },\n ref,\n) {\n const autoId = useId();\n const inputId = id ?? autoId;\n\n const classes = [\n 'cr-switch',\n `cr-switch--${size}`,\n `cr-switch--label-${labelPosition}`,\n disabled && 'cr-switch--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={classes} style={style}>\n <InputSwitch\n unstyled\n inputRef={ref as Ref<HTMLInputElement>}\n inputId={inputId}\n checked={checked}\n onChange={onChange}\n disabled={disabled}\n name={name}\n pt={{\n root: { className: 'cr-switch__control', role: undefined, 'aria-checked': undefined },\n input: { className: 'cr-switch__input' },\n slider: { className: 'cr-switch__track' },\n }}\n />\n {/* Sem rótulo visível, o <label> continua no DOM (escondido) e dá o nome ao input. */}\n <label\n className={`cr-switch__label${showLabel ? '' : ' cr-switch__label--hidden'}`}\n htmlFor={inputId}\n >\n {label}\n </label>\n </div>\n );\n});\n","import {\n Children,\n cloneElement,\n forwardRef,\n isValidElement,\n useImperativeHandle,\n useRef,\n useState,\n type KeyboardEvent,\n type MouseEvent,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport {\n TabView,\n TabPanel as PrimeTabPanel,\n type TabPanelHeaderTemplateOptions,\n} from 'primereact/tabview';\nimport { X } from '@phosphor-icons/react';\nimport { Badge } from '../Badge';\nimport './Tabs.css';\n\n/** Uma aba (.Tab Item no Figma) e o conteúdo dela. */\nexport interface TabPanelProps {\n /** Texto da aba (Label no Figma). */\n header: string;\n /** Ícone antes do texto (Leading Icon no Figma). */\n leftIcon?: ReactNode;\n /** Contador depois do texto (Badge no Figma). */\n badge?: ReactNode;\n /** Mostra o X (Tab Btn no Figma) e é chamado ao fechar a aba (clique no X ou Delete na aba). */\n onClose?: () => void;\n disabled?: boolean;\n children?: ReactNode;\n}\n\n/** Só descreve a aba: quem desenha é o Tabs. */\nexport function TabPanel(_props: TabPanelProps): null {\n return null;\n}\n\nexport interface TabsProps {\n /** Aba ativa (controlado). Sem ela, o Tabs controla sozinho. */\n activeIndex?: number;\n onTabChange?: (index: number) => void;\n /** As abas, como `<TabPanel>`. */\n children: ReactNode;\n id?: string;\n className?: string;\n}\n\n// Base: TabView do PrimeReact no modo unstyled (o p-tabView do PrimeNG da produção): tablist, abas,\n// painéis e o teclado (setas, Home e End) do Prime. Cada aba vem de um <TabPanel> do Cristal, que\n// vira o TabPanel do Prime com o desenho do Figma (ícone, texto, Badge e X) pelo headerTemplate. O\n// X do Prime fica dentro do role=tab como um segundo controle; o do Cristal é só visual (clique) e,\n// pelo teclado, a aba fecha com Delete (anunciado pelo aria-keyshortcuts). A ref entrega a raiz.\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>(function Tabs(\n { activeIndex, onTabChange, children, id, className },\n ref,\n) {\n const primeRef = useRef<TabView>(null);\n useImperativeHandle(ref, () => primeRef.current?.getElement() as HTMLDivElement);\n // Com onTabChange o Prime trata a aba ativa como controlada: sem activeIndex, o Tabs guarda.\n const [interno, setInterno] = useState(0);\n const ativa = activeIndex ?? interno;\n\n const panels = Children.toArray(children).filter((child): child is ReactElement<TabPanelProps> =>\n isValidElement(child),\n );\n\n const header = (panel: TabPanelProps) =>\n function TabHeader(options: TabPanelHeaderTemplateOptions) {\n const element = options.element as ReactElement<{\n onKeyDown?: (event: KeyboardEvent) => void;\n }>;\n const close = panel.onClose;\n return cloneElement(\n element,\n {\n 'aria-keyshortcuts': close ? 'Delete' : undefined,\n onKeyDown: (event: KeyboardEvent) => {\n if (close && event.key === 'Delete') close();\n else element.props.onKeyDown?.(event);\n },\n } as object,\n <>\n {panel.leftIcon && (\n <span className=\"cr-tabs__icon\" aria-hidden=\"true\">\n {panel.leftIcon}\n </span>\n )}\n <span className=\"cr-tabs__label\">{panel.header}</span>\n {panel.badge !== undefined && <Badge className=\"cr-tabs__badge\">{panel.badge}</Badge>}\n {close && (\n // O X é só para o mouse: pelo teclado a aba fecha com Delete (aria-keyshortcuts).\n <span\n className=\"cr-tabs__close\"\n aria-hidden=\"true\"\n onClick={(event: MouseEvent) => {\n event.stopPropagation();\n close();\n }}\n >\n <X />\n </span>\n )}\n </>,\n );\n };\n\n return (\n <TabView\n unstyled\n ref={primeRef}\n id={id}\n activeIndex={ativa}\n onTabChange={(event) => {\n setInterno(event.index);\n onTabChange?.(event.index);\n }}\n pt={{\n root: { className: ['cr-tabs', className].filter(Boolean).join(' ') },\n navContainer: { className: 'cr-tabs__nav-container' },\n navContent: { className: 'cr-tabs__nav-content' },\n nav: { className: 'cr-tabs__nav' },\n inkbar: { className: 'cr-tabs__inkbar' },\n panelContainer: { className: 'cr-tabs__panels' },\n }}\n >\n {panels.map((panel, index) => (\n <PrimeTabPanel\n key={panel.key ?? index}\n header={panel.props.header}\n disabled={panel.props.disabled}\n headerTemplate={header(panel.props)}\n pt={{\n header: { className: 'cr-tabs__item' },\n headerAction: { className: 'cr-tabs__tab' },\n content: { className: 'cr-tabs__panel' },\n }}\n >\n {panel.props.children}\n </PrimeTabPanel>\n ))}\n </TabView>\n );\n});\n","import { forwardRef, useImperativeHandle, useRef, type ReactElement } from 'react';\nimport {\n Toast as PrimeToast,\n type ToastMessage as PrimeToastMessage,\n type ToastPassThroughTransitionType,\n type ToastProps as PrimeToastProps,\n} from 'primereact/toast';\nimport { Check, Info, Warning, X, XCircle } from '@phosphor-icons/react';\nimport './Toast.css';\n\n/** Type no Figma. */\nexport type ToastType = 'warning' | 'danger' | 'success' | 'info';\n\n/** Onde as mensagens aparecem na tela (o position do Prime). Padrão: top-right. */\nexport type ToastPosition = NonNullable<PrimeToastProps['position']>;\n\n/** Uma mensagem, passada para `show()`. */\nexport interface ToastMessage {\n type: ToastType;\n /** Title no Figma. */\n title: string;\n /** Message no Figma (Show Message content). */\n message?: string;\n /** Show Icon no Figma. Padrão: true. */\n showIcon?: boolean;\n /** Tempo na tela, em ms. Padrão do Prime: 3000. */\n life?: number;\n /** Fica até alguém fechar. */\n sticky?: boolean;\n}\n\n/** O que a ref do Toast entrega. */\nexport interface ToastHandle {\n show: (message: ToastMessage | ToastMessage[]) => void;\n clear: () => void;\n}\n\nexport interface ToastProps {\n position?: ToastPosition;\n /** Nome do X para o leitor de tela. */\n closeLabel?: string;\n id?: string;\n className?: string;\n}\n\nconst SEVERITY: Record<ToastType, PrimeToastMessage['severity']> = {\n warning: 'warn',\n danger: 'error',\n success: 'success',\n info: 'info',\n};\n\nconst ICON: Record<ToastType, ReactElement> = {\n warning: <Warning />,\n danger: <XCircle />,\n success: <Check />,\n info: <Info />,\n};\n\n// Base: Toast do PrimeReact no modo unstyled (o p-toast do PrimeNG da produção): a pilha de\n// mensagens na tela, o tempo de cada uma (pausado com o mouse em cima), o X e o role=alert são do\n// Prime. Como no Prime, as mensagens entram pela ref: toast.current.show({ type, title, message }).\n// O Cristal troca o severity pelo Type do Figma, põe os ícones do Figma no círculo e desenha tudo\n// pelos tokens (Toast.css).\nexport const Toast = forwardRef<ToastHandle, ToastProps>(function Toast(\n { position = 'top-right', closeLabel = 'Fechar', id, className },\n ref,\n) {\n const primeRef = useRef<PrimeToast>(null);\n\n const converter = ({\n type,\n title,\n message,\n showIcon = true,\n life,\n sticky,\n }: ToastMessage): PrimeToastMessage => ({\n severity: SEVERITY[type],\n summary: title,\n detail: message,\n // Sem ícone, um fragmento vazio: com undefined o Prime põe o ícone dele.\n icon: showIcon ? (\n <span className=\"cr-toast__icon\" aria-hidden=\"true\">\n {ICON[type]}\n </span>\n ) : (\n <></>\n ),\n closeIcon: <X aria-hidden=\"true\" />,\n life,\n sticky,\n className: `cr-toast__message--${type}`,\n });\n\n useImperativeHandle(ref, () => ({\n show: (message) =>\n primeRef.current?.show(Array.isArray(message) ? message.map(converter) : converter(message)),\n clear: () => primeRef.current?.clear(),\n }));\n\n return (\n <PrimeToast\n // O Toast aceita unstyled como os outros, mas o d.ts do Prime 10 esqueceu de declarar.\n {...({ unstyled: true } as object)}\n ref={primeRef}\n id={id}\n position={position}\n pt={{\n root: {\n className: ['cr-toast', className].filter(Boolean).join(' '),\n },\n message: { className: 'cr-toast__message' },\n content: { className: 'cr-toast__content' },\n text: { className: 'cr-toast__text' },\n summary: { className: 'cr-toast__title' },\n detail: { className: 'cr-toast__detail' },\n closeButton: { className: 'cr-toast__close', 'aria-label': closeLabel },\n // No unstyled o Prime não põe classes na transição: o Cristal dá as dele (Toast.css).\n transition: {\n classNames: {\n enter: 'cr-toast__message--enter',\n enterActive: 'cr-toast__message--enter-active',\n exitActive: 'cr-toast__message--exit-active',\n },\n } as ToastPassThroughTransitionType,\n }}\n />\n );\n});\n"]}