{"version":3,"file":"static/js/101.939c5213.chunk.js","mappings":"8NACA,QAA+B,gCAA/B,EAAoF,sC,eCiB7E,MAAMA,EAAYC,IACrB,MAAM,SACFC,EAAQ,QACRC,EAAmB,KACnBC,EAAI,cACJC,EAAyB,UACzBC,EAAqB,iBACrBC,EAA4B,YAC5BC,GACAP,EAEJ,OACIQ,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CAACC,MAAOA,EAAAA,EAAMT,UACxBU,EAAAA,EAAAA,MAACC,EAAAA,EAAM,CAACT,KAAMA,EAAM,kBAAgB,qBAAqB,cAAY,YAAWF,SAAA,CAC3EG,IAAiBI,EAAAA,EAAAA,KAAA,OAAKK,IAAI,iBAAiBC,IAAKV,KAEjDI,EAAAA,EAAAA,KAACO,EAAAA,EAAU,CACPC,MAAO,CAAEC,OAAQ,KACjB,aAAW,QACXC,QAASX,EACT,cAAY,0BAAyBN,UAErCO,EAAAA,EAAAA,KAACW,EAAAA,EAAS,MAGbjB,IACGM,EAAAA,EAAAA,KAAA,OAAKH,UAAWe,EAAqB,cAAY,qBAAoBnB,UACjEO,EAAAA,EAAAA,KAAA,MACIH,UAAWgB,IAAWD,EAA2B,CAC7C,CAACd,GAA6BA,IAElCgB,GAAG,qBAAoBrB,SAEtBC,OAKbM,EAAAA,EAAAA,KAACe,EAAAA,EAAa,CAAClB,UAAWA,EAAUJ,SAAEA,QAE9B,C,wECpDjB,MAAMS,GAAQc,E,SAAAA,GAAY,CAC7BC,WAAY,CACRC,WAAY,CACRC,eAAgB,CACZC,KAAM,CACFC,UAAUC,EAAAA,EAAAA,IAAQ,OAI9BC,cAAe,CACXJ,eAAgB,CACZC,KAAM,CACFI,SAAU,WACVC,MAAO,EACPC,IAAK,EACLC,OAAOL,EAAAA,EAAAA,IAAQ,IACfM,QAAQN,EAAAA,EAAAA,IAAQ,IAChB,UAAW,CACPO,gBAAgB,GAADC,OAAKC,EAAAA,GAAMC,UAC1B,QAAS,CACLC,KAAK,GAADH,OAAKC,EAAAA,GAAMG,SAGvB,UAAW,CACPL,gBAAgB,GAADC,OAAKC,EAAAA,GAAMC,UAC1B,QAAS,CACLC,KAAK,GAADH,OAAKC,EAAAA,GAAMG,YAMnCC,UAAW,CACPhB,eAAgB,CACZC,KAAM,CACFgB,WAAY,uBAEhBC,MAAO,CACHC,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMQ,YACrCC,cAAclB,EAAAA,EAAAA,IAAQ,IACtBmB,UAAU,6BAADX,QACHR,EAAAA,EAAAA,IAAQ,IAAG,+BAAAQ,QACXR,EAAAA,EAAAA,IAAQ,IAAG,+BAAAQ,QACXR,EAAAA,EAAAA,IAAQ,IAAG,KAAAQ,OAAIC,EAAAA,GAAMW,gBAC3BC,OAAQ,EACRC,SAAU,aAItBC,iBAAkB,CACd1B,eAAgB,CACZC,KAAM,CACF0B,SAASxB,EAAAA,EAAAA,IAAQ,IACjB,CAACyB,EAAAA,EAASC,YAAYC,GAAG,WAAY,CACjCH,SAASxB,EAAAA,EAAAA,IAAQ,QAKjC4B,SAAU,CACN/B,eAAgB,CACZC,KAAM,CACFuB,OAAQ,EACR,CAACI,EAAAA,EAASC,YAAYG,KAAK,OAAQ,CAC/BR,OAAO,KAADb,QAAOR,EAAAA,EAAAA,IAAQ,W,4CCrE7C,QAA2B,yB,eCGpB,MAAM8B,EAASA,KAAoBpD,EAAAA,EAAAA,KAAA,QAAMH,UAAWe,EAAgBnB,SAAC,K,mCCH5E,QAAuB,6B,mCCShB,MAAM4D,EAAOC,IAAA,IAAC,SAAE7D,EAAQ,UAAEI,GAAsByD,EAAA,OACnDtD,EAAAA,EAAAA,KAAA,OAAKH,UAAWgB,IAAWD,EAAaf,GAAY,cAAY,iBAAgBJ,SAC3EA,GACC,EAGV4D,EAAKE,aAAe,CAAE1D,eAAW2D,E,mFCV1B,MAAMtD,GAAQc,EAAAA,EAAAA,GAAY,CAC7BC,WAAY,CACRwC,UAAW,CACPtC,eAAgB,CACZC,KAAMkC,IAAA,IAAC,WAAEI,GAAYJ,EAAA,MAAM,CACvBd,cAAclB,EAAAA,EAAAA,IAAQ,IACtBwB,QAAQ,GAADhB,QAAKR,EAAAA,EAAAA,IAAQ,IAAG,KAAAQ,QAAIR,EAAAA,EAAAA,IAAQ,KACnCD,UAAUC,EAAAA,EAAAA,IAAQ,IAClBqC,WAAY,IACZC,WAAY,UACZC,cAAe,SACf,oDAAqD,CACjDxC,UAAUC,EAAAA,EAAAA,IAAQ,KAGtB,CAACyB,EAAAA,EAASC,YAAYG,KAAK,YAAa,CACpC9B,UAAUC,EAAAA,EAAAA,IAAQ,QAGlBoC,EAAWI,UAAYC,EAAAA,EAAcC,WAAa,CAClDnC,gBAAiBE,EAAAA,GAAMkC,eACvBC,MAAOnC,EAAAA,GAAMG,MACbO,UAAW,OACX,8CAA+C,CAC3CZ,gBAAiBE,EAAAA,GAAMoC,uBACvB1B,UAAW,QAEf,aAAc,CACVyB,MAAOnC,EAAAA,GAAMG,MACbL,gBAAiBE,EAAAA,GAAMqC,gBAI3BV,EAAWI,UAAYC,EAAAA,EAAcC,WACrCN,EAAWQ,QAAUG,EAAAA,GAAaC,WAAa,CAC3CzC,gBAAiBE,EAAAA,GAAMwC,iBAEvB,8CAA+C,CAC3C1C,gBAAiBE,EAAAA,GAAMkC,eACvBxB,UAAW,YAInBiB,EAAWI,UAAYC,EAAAA,EAAcS,UAAY,CACjDN,MAAOnC,EAAAA,GAAMkC,eACb3B,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMkC,gBACrC,8CAA+C,CAC3C3B,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMkC,gBACrCpC,gBAAiBE,EAAAA,GAAMG,MACvBgC,MAAOnC,EAAAA,GAAMkC,eACbQ,eAAgB,QAEpB,aAAc,CACVnC,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMqC,YACrCK,eAAgB,YAIpBf,EAAWI,UAAYC,EAAAA,EAAcW,MAAQ,CAC7CR,MAAOnC,EAAAA,GAAMkC,eACbN,WAAY,IACZtC,UAAUC,EAAAA,EAAAA,IAAQ,IAClBqD,cAAe,OACfC,YAAYtD,EAAAA,EAAAA,IAAQ,IACpBsC,WAAY,SACZa,eAAgB,YAChB,oDAAqD,CACjDpD,UAAUC,EAAAA,EAAAA,IAAQ,KAEtBwB,QAAS,EACT+B,SAAU,QACV,8CAA+C,CAC3CX,MAAOnC,EAAAA,GAAMkC,eACb7B,WAAY,cACZqC,eAAgB,iBAGpBf,EAAWI,UAAYC,EAAAA,EAAcW,MAChB,cAArBhB,EAAWQ,OAAyB,CAChCA,MAAOnC,EAAAA,GAAM+C,aACbL,eAAgB,OAChBd,WAAY,IACZ,8CAA+C,CAC3C9B,gBAAiB,cACjBqC,MAAOnC,EAAAA,GAAM+C,aACbL,eAAgB,SAG/B,M,oHC9DV,MAAMM,EAAuBvF,IAChC,MAAM,SACFC,EAAQ,QACRqE,EAAO,KACPkB,EAAI,SACJC,EAAQ,UACRC,EAAS,QACTC,EAAO,WACPC,EAAU,SACV/D,EAAQ,UACRxB,EAAS,cACT8E,EAAgBU,EAAAA,GAAkBC,WAAU,QAC5C5E,EAAO,QACP6E,GACA/F,EAEJ,OACIQ,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CAACC,MAAOA,EAAAA,EAAMT,UACxBO,EAAAA,EAAAA,KAACwF,EAAAA,EAAM,CACHR,KAAMA,EACNS,GAAI,CAAEpE,SAAUA,IAAYC,EAAAA,EAAAA,IAAQD,GAAWsD,iBAC/Cb,QAASA,EACToB,UAAWA,EACXC,QAASI,GAAUvF,EAAAA,EAAAA,KAAC0F,EAAAA,EAAgB,CAAC,cAAY,UAAUC,KAAM,KAASR,EAC1EF,SAAUA,EACVf,MAAOkB,EACPvF,UAAWA,EACX+F,eAAa,EACblF,QAASA,EAAQjB,SAEhBA,KAEO,EAIxBsF,EAAoBxB,aAAe,CAC/B0B,UAAU,EACVC,eAAW1B,EACX2B,aAAS3B,EACT4B,gBAAY5B,EACZ3D,eAAW2D,EACXnC,SAAU,KACVX,aAAS8C,E,oHC1Eb,QAAuC,iDAAvC,EAA+G,iDAA/G,EAAmL,6C,gDCO5K,MAAMqC,GAAkBC,EAAAA,EAAAA,aAC3B,CAACtG,EAAOuG,KACJ,MAAM,SAAEC,KAAaC,GAAUzG,EAC/B,OACIQ,EAAAA,EAAAA,KAACkG,EAAAA,GAAU,IACHD,EACJE,KAAK,eACLC,QAAM,EACNC,YAAa,CACT,IAAK,QACL,IAAK,SAETC,SAAUP,EACVQ,SAAWC,IACPR,EAAS,CAAES,OAAQ,CAAEC,KAAMlH,EAAMkH,KAAMF,UAAU,EAErDG,WAAS,GACX,ICIDC,EAAoBpH,IAC7B,MAAM,WACFqH,EAAU,GACV/F,EAAE,YACFgG,EAAW,UACXC,EAAS,UACTC,EAAS,aACTC,EAAY,cACZC,EAAa,aACbC,EAAY,SACZlC,EAAQ,QACRmC,EAAO,SACPC,EAAQ,aACRC,EAAY,aACZC,EAAY,WACZC,EAAU,YACVC,EAAW,WACXC,GACAlI,EAEJ,OACIQ,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CAACC,MAAOuH,IAAgBF,EAAeI,EAAAA,EAAoBzH,EAAAA,GAAOT,UAC5EO,EAAAA,EAAAA,KAAA,OAAKH,UAAWe,EAA4BnB,UACxCO,EAAAA,EAAAA,KAAC4H,EAAAA,GAAU,CACPR,QAASA,EACTV,KAAMW,EAASX,KACfmB,OAAQvE,IAAA,IAAGwE,OAAO,SAAE9B,EAAQ,OAAE+B,EAAM,MAAEvB,EAAK,KAAEE,EAAI,IAAEX,IAAOzC,EAAA,OACtDnD,EAAAA,EAAAA,MAAA6H,EAAAA,SAAA,CAAAvI,SAAA,EACIU,EAAAA,EAAAA,MAAC8H,EAAAA,EAAU,CAACC,QAASpH,EAAGrB,SAAA,CACnBoH,EAAY,IACZK,IACGlH,EAAAA,EAAAA,KAAA,QAAMH,UAAWe,EAAwBnB,SACpCwF,EAAW,GAAK,UAI7BjF,EAAAA,EAAAA,KAACmI,EAAAA,EAAS,CACNrH,GAAIA,EACJgG,YAAaA,EACb9B,KAAK,MACL+B,UAAWA,EACXf,SAAWoC,GAAgBpC,EAASoC,EAAM3B,OAAOD,OACjDA,MAAOA,EACPuB,OAAQA,EACRrB,KAAMA,EACNJ,SAAUP,EACVsC,MAAOrB,EACPG,aAAcA,EACdlC,SAAUA,EACVqD,SAAUpB,EACVI,aAAcA,EACdiB,WAAY,CAERC,eAAgB3C,GAEpB2B,WAAYA,EACZ,cAAaE,IAEhBV,IACG7G,EAAAA,EAAAA,MAACsI,EAAAA,EAAU,CAAAhJ,SAAA,CACNwH,IAAgBjH,EAAAA,EAAAA,KAAC0I,EAAAA,EAAiB,CAACrH,SAAS,WAC7ClB,EAAAA,EAAAA,MAAA,QAAMN,UAAWe,EAA4BnB,SAAA,CACxC,IACAwH,UAId,OAIH,EAIxBL,EAAiBrD,aAAe,CAC5ByD,eAAWxD,EACXyD,kBAAczD,EACduD,eAAWvD,EACX0D,mBAAe1D,EACf2D,kBAAc3D,EACd1C,QAAI0C,EACJyB,UAAU,EACVqC,aAAc,KACdC,cAAc,EACdC,YAAY,EACZC,iBAAajE,EACbkE,gBAAYlE,E,4DC/GhB,MAGamE,GAAoB3G,E,SAAAA,GAAY,CACzCC,WAAY,CACR0H,cAAe,CACXxH,eAAgB,CACZC,KAAM,CACFC,UAAUC,EAAAA,EAAAA,IAAQ,IAClB4C,MAAOnC,EAAAA,GAAMwC,oBAIzBqE,iBAAkB,CACdzH,eAAgB,CACZC,KAAM,CACFQ,QAAQN,EAAAA,EAAAA,IAAQ,IAChBwB,SAASxB,EAAAA,EAAAA,IAAQ,GACjB,qCAAsC,CAClCwB,QAAS,EACTR,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMwC,mBAEzC,8CAA+C,CAC3CzB,QAAS,EACT,qCAAsC,CAClCR,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMwC,oBAG7C,gBAAiB,CACbzB,QAAS,EACT,qCAAsC,CAClCR,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMwC,oBAG7C,cAAe,CACXzB,QAAS,EACT,qCAAsC,CAClCR,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAM8G,SAG7C,UAAW,CACP/F,QAAS,EACT,+BAAgC,CAC5BoB,MAAOnC,EAAAA,GAAMwC,sBAMjCrD,WAAY,CACRC,eAAgB,CACZC,KAAM,CACF0H,YAAYxH,EAAAA,EAAAA,IAAQ,GACpByH,cAAczH,EAAAA,EAAAA,IAAQ,GACtB4C,MAAOnC,EAAAA,GAAM8G,MACbxH,UAAUC,EAAAA,EAAAA,IAAQ,OAI9B0H,cAAe,CACX7H,eAAgB,CACZC,KAAM,CACF8C,MAAOnC,EAAAA,GAAM8G,MACbxH,UAAUC,EAAAA,EAAAA,IAAQ,IAClBwB,SAASxB,EAAAA,EAAAA,IAAQ,GACjBwH,YAAYxH,EAAAA,EAAAA,IAAQ,GACpB2H,QAAS,OACTC,eAAgB,aAChBC,WAAY,YAIxBjG,SAAU,CACN/B,eAAgB,CACZC,KAAM,CACFgI,UAAWC,IACXzH,OAAQyH,IACRC,aAAc,CACVC,SAAU,SACVC,WAAY,aAK5BC,YAAa,CACTtI,eAAgB,CACZC,KAAM,CACFC,UAAUC,EAAAA,EAAAA,IAAQ,IAClB2H,QAAS,OACTC,eAAgB,OAChBQ,UAAW,c,6DC1F/B,MAGaxJ,GAAQc,E,SAAAA,GAAY,CAC7BC,WAAY,CACR0H,cAAe,CACXxH,eAAgB,CACZC,KAAM,CACFuI,cAAcrI,EAAAA,EAAAA,IAAQ,GACtB4C,MAAOnC,EAAAA,GAAM6H,QACbhG,WAAY,SACZvC,UAAUC,EAAAA,EAAAA,IAAQ,IAClBuI,UAAW,SACXlG,WAAY,IACZiB,YAAYtD,EAAAA,EAAAA,IAAQ,OAIhCwI,eAAgB,CACZ3I,eAAgB,CACZC,KAAM,CACFuB,OAAO,GAADb,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,SAIjCsH,iBAAkB,CACdzH,eAAgB,CACZC,KAAM,CACFQ,QAAQN,EAAAA,EAAAA,IAAQ,IAChByI,aAAazI,EAAAA,EAAAA,IAAQ,IACrBO,gBAAiBE,EAAAA,GAAMG,MACvBM,cAAclB,EAAAA,EAAAA,IAAQ,GACtBgB,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,8BACrB,2CAA4C,CACxCgB,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMiI,YAEzC,2CAA4C,CACxC1H,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMiI,YAEzC,kBAAmB,CACf1H,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAM8G,QAEzC,UAAW,CACP/F,QAAS,EACToB,MAAOnC,EAAAA,GAAMkI,YAGrBC,MAAO,CACHpH,QAAS,KAIrBqH,UAAW,CACPhJ,eAAgB,CACZiJ,KAAM,CACF3I,OAAOH,EAAAA,EAAAA,IAAQ,OAI3BJ,WAAY,CACRC,eAAgB,CACZC,KAAM,CACF0H,YAAYxH,EAAAA,EAAAA,IAAQ,GACpByH,cAAczH,EAAAA,EAAAA,IAAQ,GACtB4C,MAAOnC,EAAAA,GAAM8G,MACbxH,UAAUC,EAAAA,EAAAA,IAAQ,OAI9B0H,cAAe,CACX7H,eAAgB,CACZC,KAAM,CACF8C,MAAOnC,EAAAA,GAAM8G,MACbxH,UAAUC,EAAAA,EAAAA,IAAQ,IAClBwB,SAASxB,EAAAA,EAAAA,IAAQ,GACjBwH,YAAYxH,EAAAA,EAAAA,IAAQ,GACpB2H,QAAS,OACTC,eAAgB,aAChBC,WAAY,SACZvE,WAAY,KAIxB1B,SAAU,CACN/B,eAAgB,CACZC,KAAM,CACFgI,UAAWC,IACXC,aAAc,CACVC,SAAU,SACVC,WAAY,aAK5BC,YAAa,CACTtI,eAAgB,CACZC,KAAM,CACFC,UAAUC,EAAAA,EAAAA,IAAQ,IAClB2H,QAAS,OACTC,eAAgB,OAChBQ,UAAW,SACXW,WAAY,c,6DCrGzB,MAAM1C,GAAoB3G,E,SAAAA,GAAY,CACzCC,WAAY,CACRqJ,aAAc,CACVnJ,eAAgB,CACZC,KAAM,CACFC,UAAUC,EAAAA,EAAAA,IAAQ,IAClB4C,MAAOnC,EAAAA,GAAMwC,kBAEjBgG,SAAU,CACNrG,MAAOnC,EAAAA,GAAM8G,MACb,UAAW,CACP3E,MAAOnC,EAAAA,GAAM8G,UAK7B2B,SAAU,CACNrJ,eAAgB,CACZC,KAAM,CACF,8CAA+C,CAC3CkB,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMiI,eAKrDpB,iBAAkB,CACdzH,eAAgB,CACZC,KAAM,CACF0B,QAAQ,GAADhB,QAAKR,EAAAA,EAAAA,IAAQ,IAAG,KAAAQ,QAAIR,EAAAA,EAAAA,IAAQ,KAEnC,qCAAsC,CAClCgB,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMwC,mBAEzC,8CAA+C,CAC3C,qCAAsC,CAClCjC,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMwC,oBAG7C,gBAAiB,CACb,qCAAsC,CAClCjC,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMwC,oBAG7C,cAAe,CACX,qCAAsC,CAClCjC,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAM8G,SAG7C,UAAW,CACP/F,QAAS,EACT,+BAAgC,CAC5BoB,MAAOnC,EAAAA,GAAMwC,sBAMjCyE,cAAe,CACX7H,eAAgB,CACZC,KAAM,CACF8C,MAAOnC,EAAAA,GAAM8G,MACbxH,UAAUC,EAAAA,EAAAA,IAAQ,IAClB2H,QAAS,OACTC,eAAgB,aAChBQ,UAAW,SACXe,WAAWnJ,EAAAA,EAAAA,IAAQ,MAI/BJ,WAAY,CACRC,eAAgB,CACZC,KAAM,CACF2H,cAAczH,EAAAA,EAAAA,IAAQ,GACtB4C,MAAOnC,EAAAA,GAAM8G,MACbxH,UAAUC,EAAAA,EAAAA,IAAQ,S,6DC1E/B,MAAMpB,GAAQc,E,SAAAA,GAAY,CAC7BC,WAAY,CACRqJ,aAAc,CACVnJ,eAAgB,CACZC,KAAM,CACFuI,cAAcrI,EAAAA,EAAAA,IAAQ,GACtB4C,MAAOnC,EAAAA,GAAM6H,QACbhG,WAAY,SACZvC,UAAUC,EAAAA,EAAAA,IAAQ,IAClBuI,UAAW,SACXlG,WAAY,IACZiB,YAAYtD,EAAAA,EAAAA,IAAQ,KAExBiJ,SAAU,CACNrG,MAAOnC,EAAAA,GAAM2I,OACbC,YAAYrJ,EAAAA,EAAAA,KAAS,GACrB,UAAW,CACP4C,MAAOnC,EAAAA,GAAM2I,WAK7BF,SAAU,CACNrJ,eAAgB,CACZC,KAAM,CACF,8CAA+C,CAC3CkB,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMiI,eAKrDpB,iBAAkB,CACdzH,eAAgB,CACZC,KAAM,CACFQ,QAAQN,EAAAA,EAAAA,IAAQ,IAChBwB,QAAQ,GAADhB,QAAKR,EAAAA,EAAAA,IAAQ,IAAG,KAAAQ,QAAIR,EAAAA,EAAAA,IAAQ,IAAG,KAAAQ,QAAIR,EAAAA,EAAAA,IAAQ,IAAG,KAAAQ,QAAIR,EAAAA,EAAAA,IAAQ,KACjEO,gBAAiBE,EAAAA,GAAMG,MACvBM,cAAclB,EAAAA,EAAAA,IAAQ,GACtBgB,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,8BACrB,UAAW,CACP4C,MAAOnC,EAAAA,GAAM6H,QACbhG,WAAY,UACZvC,UAAUC,EAAAA,EAAAA,IAAQ,IAClBuI,UAAW,SACXlG,WAAY,IACZiB,YAAYtD,EAAAA,EAAAA,IAAQ,KAExB,2CAA4C,CACxCgB,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMiI,YAEzC,2CAA4C,CACxC1H,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMiI,aAG7CE,MAAO,CACHpH,QAAS,KAIrBkG,cAAe,CACX7H,eAAgB,CACZC,KAAM,CACF8C,MAAOnC,EAAAA,GAAM8G,MACbxH,UAAUC,EAAAA,EAAAA,IAAQ,IAClB2H,QAAS,OACTC,eAAgB,aAChBC,WAAY,SACZsB,WAAWnJ,EAAAA,EAAAA,IAAQ,MAI/BJ,WAAY,CACRC,eAAgB,CACZC,KAAM,CACF2H,cAAczH,EAAAA,EAAAA,IAAQ,GACtB4C,MAAOnC,EAAAA,GAAM8G,MACbxH,UAAUC,EAAAA,EAAAA,IAAQ,OAI9BsJ,kBAAmB,CACfzJ,eAAgB,CACZC,KAAM,CACF8C,MAAOnC,EAAAA,GAAM+C,aACbzD,UAAUC,EAAAA,EAAAA,IAAQ,IAClBsD,YAAYtD,EAAAA,EAAAA,IAAQ,IACpBuI,UAAW,SACXlH,OAAO,GAADb,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,QAErB,iBAAkB,CACd4C,MAAOnC,EAAAA,GAAM+C,mB,4DC9FrC,QAAmC,4CAAnC,EAA0G,oDAA1G,EAAwL,mDAAxL,EAA8Q,4D,gDCY9Q,MAAM+F,GAAeC,EAAAA,EAAAA,IAAOC,EAAAA,EAAPD,CAAe,CAChCE,eAAe1J,EAAAA,EAAAA,IAAQ,GACvB6H,WAAY,SACZ,qCAAsC,CAClCjF,MAAOnC,EAAAA,GAAMkJ,SACbrJ,QAAQN,EAAAA,EAAAA,IAAQ,IAChBK,OAAOL,EAAAA,EAAAA,IAAQ,OA6BvB,EAtByBgC,IAG0B,IAHzB,OACtB4H,EAAS,EAAC,iBACVC,EAAmB,GACC7H,EACpB,GAAI4H,EAPkB,IAOU,OAAO,KAEvC,MAAM,qBAAEE,IAAyBC,EAAAA,EAAAA,KAEjC,OACIlL,EAAAA,EAAAA,MAAA,QAAMN,UAAWe,EAAwBnB,SAAA,EACrCO,EAAAA,EAAAA,KAAA,QAAMH,UAAWe,EAAgCnB,SAAEyL,KACnDlL,EAAAA,EAAAA,KAAC6K,EAAY,CAACrE,MAAO0E,EAAQI,UAbhB,IAa6CC,UAAQ,KAClEpL,EAAAA,EAAAA,MAAA,QAAMN,UAAWe,EAA+BnB,SAAA,CAAC,IAAE0L,EAAiB,QACpEnL,EAAAA,EAAAA,KAAA,OACIH,UAAWe,EACXP,IAAI,iBACJC,IAAK8K,MAEN,C,oEC3Cf,QAAgC,sCAAhC,EAAsG,sDAAtG,EAAqL,+C,eCU9K,MAAMI,EAAiBhM,IAC1B,MAAM,SACFC,EAAQ,eACRgM,GAAiB,EAAK,UACtB5L,EAAqB,iBACrB6L,GACAlM,EAEJ,OACIW,EAAAA,EAAAA,MAAA,OACI,cAAY,iBACZN,UAAWgB,IAAWD,EAAsB,CACxC,CAACA,GAA0C6K,EAC3C,CAAC5L,GAAsBA,IACxBJ,SAAA,CAEFA,GAEDO,EAAAA,EAAAA,KAAA,OACIH,UAAWgB,IAAWD,EAA+B,CACjD,CAAC8K,GAA6BA,QAGpC,C,2DCjCd,SAAgB,QAAU,yBAAyB,aAAa,4BAA4B,aAAa,4BAA4B,aAAa,4BAA4B,aAAa,4BAA4B,aAAa,4BAA4B,aAAa,4BAA4B,uBAAuB,sCAAsC,iBAAiB,gCAAgC,mBAAmB,kCAAkC,kBAAkB,iCAAiC,oBAAoB,mCAAmC,gBAAgB,gC,eCe/jB,MAAMC,EAAWnM,IACpB,MACIoM,GAAIC,EAAY,KAAI,KACpBlG,EAAO,EAAC,UACR9F,EAAS,iBACTiM,EAAgB,WAChBnI,EAAa,SAAQ,GACrB7C,KACGiL,GACHvM,EAEJ,OACIQ,EAAAA,EAAAA,KAAC6L,EAAS,CACN/K,GAAIA,EACJ,cAAY,UACZjB,UAAWgB,IAAW,GAADiB,OACdlB,EAAOlB,SACVkB,EAAO,YAADkB,OAAa6D,IACnB/E,EAAO,YAADkB,OAAa6B,IACnB,CACI,CAAC/C,EAAO,yBAA0BkL,EAClC,CAACjM,GAAsBA,OAG3BkM,GACN,C,4eCZH,MAAMC,EAAmBxM,IAC5B,MAAM,WACFqH,EAAU,GACV/F,EAAE,YACFgG,EAAW,UACXC,EAAS,KACT/B,EAAI,SACJqC,EAAQ,UACRL,EAAS,aACTC,EAAY,cACZC,EAAa,aACbC,EAAY,SACZlC,EAAQ,aACRqC,EAAY,aACZC,EAAY,WACZC,EAAU,YACVC,EAAW,WACXC,GACAlI,EAEJ,OACIQ,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CAACC,MAAOuH,IAAgBF,EAAeI,EAAAA,EAAoBzH,EAAAA,GAAOT,UAC5EU,EAAAA,EAAAA,MAAC8L,EAAAA,EAAS,CAAAxM,SAAA,EACNO,EAAAA,EAAAA,KAACkM,EAAAA,EAAS,CAAC5D,SAAUpB,EAAegB,QAASpH,EAAGrB,SAC3CoH,KAGL7G,EAAAA,EAAAA,KAACmI,EAAAA,EAAS,CACNrH,GAAIA,EACJ,cAAa4G,EACbZ,YAAaA,EACb9B,KAAMA,EACN+B,UAAWA,KACPM,EACJgB,MAAOrB,EACPG,aAAcA,EACdlC,SAAUA,EACVqC,aAAcA,EACdgB,SAAUpB,EACVM,WAAYA,IAEfR,IACG7G,EAAAA,EAAAA,MAACsI,EAAAA,EAAU,CAAAhJ,SAAA,CACNwH,IAAgBjH,EAAAA,EAAAA,KAAC0I,EAAAA,EAAiB,CAACrH,SAAS,WAC7CrB,EAAAA,EAAAA,KAAA,QAAAP,SAAOwH,WAIP,EAIxB+E,EAAgBzI,aAAe,CAC3B8D,cAAU7D,EACVwD,eAAWxD,EACXyD,kBAAczD,EACduD,eAAWvD,EACX0D,eAAe,EACflC,KAAM,OACNmC,kBAAc3D,EACd1C,QAAI0C,EACJyB,UAAU,EACVqC,aAAc,KACdC,cAAc,EACdC,WAAY,KACZC,iBAAajE,EACbkE,gBAAYlE,G,oEClET,MAAM2I,GAAerG,EAAAA,EAAAA,aACxB,CAACtG,EAA0BuG,KACvB,MAAM,SACFtG,EAAQ,QACRqE,EAAO,KACPkB,EAAI,SACJC,EAAQ,UACRC,EAAS,QACTC,EAAO,WACPC,EAAU,SACV/D,EAAQ,UACRxB,EAAS,cACT8E,EAAgBU,EAAAA,GAAkBC,WAAU,QAC5C5E,EAAO,WACP0L,GACA5M,EAEJ,OACIQ,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CAACC,MAAOA,EAAAA,EAAMT,UACxBO,EAAAA,EAAAA,KAACwF,EAAAA,EAAM,CACHO,IAAKA,EACLf,KAAMA,EACNS,GAAI,CAAEpE,SAAUA,IAAYC,EAAAA,EAAAA,IAAQD,GAAWsD,iBAC/Cb,QAASA,EACToB,UAAWA,EACXC,QAASA,EACTF,SAAUA,EACVf,MAAOkB,EACPvF,UAAWA,EACX+F,eAAa,EACblF,QAASA,EACT,cAAa0L,EAAW3M,SAEvBA,KAEO,IAK5B0M,EAAa5I,aAAe,CACxB0B,UAAU,EACVC,eAAW1B,EACX2B,aAAS3B,EACT4B,gBAAY5B,EACZ3D,eAAW2D,EACXnC,cAAUmC,EACV9C,aAAS8C,EACT4I,gBAAY5I,G,0BCnET,MCIM6I,GAAmBvG,EAAAA,EAAAA,aAC5B,CAACtG,EAA8BuG,KAC3B,MAAM,SAAEtG,EAAQ,SAAEwF,EAAQ,UAAEpF,EAAS,SAAEwB,EAAQ,QAAEX,EAAO,OAAE4L,GAAuB9M,GAC3E,MAAEU,GDPqBqM,MACjC,IAAIrM,GAAQc,EAAAA,EAAAA,GAAY,CAAC,GAyBzB,OAvBAd,GAAQc,EAAAA,EAAAA,GAAY,CAChBC,WAAY,CACRM,cAAe,CACXJ,eAAgB,CACZC,KAAM,CACFS,gBAAiBE,EAAAA,GAAMkC,eACvBnB,SAASxB,EAAAA,EAAAA,IAAQ,IACjBkB,aAAc,MACd0B,MAAOnC,EAAAA,GAAMG,MACbb,UAAUC,EAAAA,EAAAA,IAAQ,IAClBsD,YAAYtD,EAAAA,EAAAA,IAAQ,IACpB,2BAA4B,CACxBO,gBAAiBE,EAAAA,GAAM8G,OAE3B,aAAc,CACVhH,gBAAiBE,EAAAA,GAAMqC,kBAQxC,CAAElE,QAAO,ECnBMqM,GAElB,OACIvM,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CAACC,MAAOA,EAAMT,UACxBO,EAAAA,EAAAA,KAACO,EAAAA,EAAU,CACP,cAAa+L,EACbvG,IAAKA,EACLlG,UAAWA,EACX4F,GAAI,CAAEpE,SAAUA,IAAYC,EAAAA,EAAAA,IAAQD,IACpCX,QAASA,EACTuE,SAAUA,EACVW,eAAa,EAAAnG,SAEZA,KAEO,IAK5B4M,EAAiB9I,aAAe,CAC5B0B,UAAU,EACVpF,eAAW2D,EACXnC,cAAUmC,G,0BCxBP,MAAMgJ,EAAsBhN,IAC/B,MAAM,QAAEsE,EAAO,SAAEmB,EAAQ,KAAEmF,EAAI,SAAE/I,EAAQ,UAAExB,EAAS,QAAEa,EAAO,KAAEgG,GAASlH,EAElEiN,GAASC,EAAAA,EAAAA,MAEf,OACIvM,EAAAA,EAAAA,MAAA6H,EAAAA,SAAA,CAAAvI,SAAA,CACKgN,IAAWE,EAAAA,EAAiBC,QACzB5M,EAAAA,EAAAA,KAACmM,EAAY,CACTnH,KAAK,SACLC,SAAUA,EACVpF,UAAWA,EACXwB,SAAUA,EACV6D,UAAWkF,EACXtG,QAASA,EACTpD,QAASA,EAAQjB,SAEhBiH,KAGL1G,EAAAA,EAAAA,KAACqM,EAAgB,CACbC,OAAO,eACPrH,SAAUA,EACVpF,UAAWA,EACXwB,SAAUA,EACVX,QAASA,EAAQjB,SAEhB2K,IAEN,MACJ,EAIXoC,EAAmBjJ,aAAe,CAC9B0B,UAAU,EACVmF,UAAM5G,EACN3D,eAAW2D,EACXnC,SAAU,M,eCrDd,QAAyB,6BAAzB,EAAwE,sCAAxE,EAA6H,mCAA7H,EAA+K,mCCGlKwL,EAAcA,KACvB7M,EAAAA,EAAAA,KAAA,OAAKH,UAAWe,EAAcnB,UAC1BU,EAAAA,EAAAA,MAAA,OAAKN,UAAWe,EAAuBnB,SAAA,EACnCO,EAAAA,EAAAA,KAAA,OAAKH,UAAWe,EAAoBnB,SAAEqN,EAAAA,MAEtC9M,EAAAA,EAAAA,KAAA,KAAG+M,KAAMC,EAAAA,GAAUnN,UAAWe,EAAoBnB,SAAC,kBAGnDO,EAAAA,EAAAA,KAAA,KAAG+M,KAAME,EAAAA,GAAYpN,UAAWe,EAAoBnB,SAAC,wB,eCXjE,QAAyB,6BAAzB,EAAqE,mCCGxDyN,EAAcA,KACvB,MAAM,oBAAEC,IAAwB9B,EAAAA,EAAAA,KAEhC,OACIrL,EAAAA,EAAAA,KAAA,OAAKH,UAAWe,EAAcnB,UAC1BO,EAAAA,EAAAA,KAAA,OAAKH,UAAWe,EAAqBP,IAAI,aAAaC,IAAK6M,KACzD,E,0BCPd,SAAenM,EAAAA,EAAAA,GAAY,CACvBC,WAAY,CACR0H,cAAe,CACXxH,eAAgB,CACZC,KAAM,CACFC,UAAUC,EAAAA,EAAAA,IAAQ,IAClB4C,MAAO,aAInBhD,WAAY,CACRC,eAAgB,CACZC,KAAM,CACF2H,cAAczH,EAAAA,EAAAA,IAAQ,GACtBD,UAAUC,EAAAA,EAAAA,IAAQ,UChBtC,GAAgB,aAAe,qCAAqC,oBAAsB,4CAA4C,mBAAqB,2CAA2C,0BAA0B,gDAAgD,0BAA0B,iDCe7R8L,EAAiB5N,IAAsC,IAAD6N,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAC/D,MAAM,OAAEC,GAAWrP,EAEnB,OACIQ,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CAACC,MAAOA,EAAMT,UACxBU,EAAAA,EAAAA,MAAA,OAAKN,UAAWe,EAAOkO,aAAarP,SAAA,EAChCO,EAAAA,EAAAA,KAAA,OAAKH,UAAWe,EAAOmO,oBAAoBtP,SAAC,4CAG5CU,EAAAA,EAAAA,MAAA,OAAKN,UAAWe,EAAOoO,oBAAoBvP,SAAA,EACvCO,EAAAA,EAAAA,KAAA,OACIH,UACmB,QAAfwN,EAAAwB,EAAOI,gBAAQ,IAAA5B,GAAO,QAAPC,EAAfD,EAAiB6B,aAAK,IAAA5B,GAAK,QAALC,EAAtBD,EAAwB6B,WAAG,IAAA5B,GAA3BA,EAA6B6B,SAAS,IAAG,GAAAtN,OAChClB,EAAO,4BAA0B,GAAAkB,OACjClB,EAAO,4BAEpB,cAAY,qBAAoBnB,UAEhCU,EAAAA,EAAAA,MAAA,OAAKN,UAAWe,EAAOyO,mBAAmB5P,SAAA,CACtB,QAAf+N,EAAAqB,EAAOI,gBAAQ,IAAAzB,GAAO,QAAPC,EAAfD,EAAiB0B,aAAK,IAAAzB,GAAK,QAALC,EAAtBD,EAAwB0B,WAAG,IAAAzB,GAA3BA,EAA6B0B,SAAS,KACnCpP,EAAAA,EAAAA,KAACsP,EAAAA,EAAc,KAEftP,EAAAA,EAAAA,KAACuP,EAAAA,EAAkB,IACrB,8BAIVvP,EAAAA,EAAAA,KAAA,OACIH,UACmB,QAAf8N,EAAAkB,EAAOI,gBAAQ,IAAAtB,GAAO,QAAPC,EAAfD,EAAiBuB,aAAK,IAAAtB,GAAS,QAATC,EAAtBD,EAAwB4B,eAAO,IAAA3B,GAA/BA,EAAiCuB,SAAS,aAAY,GAAAtN,OAC7ClB,EAAO,4BAA0B,GAAAkB,OACjClB,EAAO,4BAEpB,cAAY,uBAAsBnB,UAElCU,EAAAA,EAAAA,MAAA,OAAKN,UAAWe,EAAOyO,mBAAmB5P,SAAA,CACtB,QAAfqO,EAAAe,EAAOI,gBAAQ,IAAAnB,GAAO,QAAPC,EAAfD,EAAiBoB,aAAK,IAAAnB,GAAS,QAATC,EAAtBD,EAAwByB,eAAO,IAAAxB,GAA/BA,EAAiCoB,SAAS,cACvCpP,EAAAA,EAAAA,KAACsP,EAAAA,EAAc,KAEftP,EAAAA,EAAAA,KAACuP,EAAAA,EAAkB,IACrB,2BAIVvP,EAAAA,EAAAA,KAAA,OACIH,UACmB,QAAfoO,EAAAY,EAAOI,gBAAQ,IAAAhB,GAAO,QAAPC,EAAfD,EAAiBiB,aAAK,IAAAhB,GAAS,QAATC,EAAtBD,EAAwBsB,eAAO,IAAArB,GAA/BA,EAAiCiB,SAAS,aAAY,GAAAtN,OAC7ClB,EAAO,4BAA0B,GAAAkB,OACjClB,EAAO,4BAEpB,cAAY,2BAA0BnB,UAEtCU,EAAAA,EAAAA,MAAA,OAAKN,UAAWe,EAAOyO,mBAAmB5P,SAAA,CACtB,QAAf2O,EAAAS,EAAOI,gBAAQ,IAAAb,GAAO,QAAPC,EAAfD,EAAiBc,aAAK,IAAAb,GAAS,QAATC,EAAtBD,EAAwBmB,eAAO,IAAAlB,GAA/BA,EAAiCc,SAAS,cACvCpP,EAAAA,EAAAA,KAACsP,EAAAA,EAAc,KAEftP,EAAAA,EAAAA,KAACuP,EAAAA,EAAkB,IACrB,2BAIVvP,EAAAA,EAAAA,KAAA,OACIH,UACmB,QAAf0O,EAAAM,EAAOI,gBAAQ,IAAAV,GAAO,QAAPC,EAAfD,EAAiBW,aAAK,IAAAV,GAAS,QAATC,EAAtBD,EAAwBgB,eAAO,IAAAf,GAA/BA,EAAiCW,SAAS,UAAS,GAAAtN,OAC1ClB,EAAO,4BAA0B,GAAAkB,OACjClB,EAAO,4BAEpB,cAAY,wBAAuBnB,UAEnCU,EAAAA,EAAAA,MAAA,OAAKN,UAAWe,EAAOyO,mBAAmB5P,SAAA,CACtB,QAAfiP,EAAAG,EAAOI,gBAAQ,IAAAP,GAAO,QAAPC,EAAfD,EAAiBQ,aAAK,IAAAP,GAAS,QAATC,EAAtBD,EAAwBa,eAAO,IAAAZ,GAA/BA,EAAiCQ,SAAS,WACvCpP,EAAAA,EAAAA,KAACsP,EAAAA,EAAc,KAEftP,EAAAA,EAAAA,KAACuP,EAAAA,EAAkB,IACrB,oBAKdpP,EAAAA,EAAAA,MAAA,OAAAV,SAAA,CAAK,iDArFD,wBAuFI,E,qCChGxB,QAA2C,6DAA3C,EAA+H,yDAA/H,EAA6M,uDCGhMS,GAAQc,EAAAA,EAAAA,GAAY,CAC7BC,WAAY,CACR0H,cAAe,CACXxH,eAAgB,CACZC,KAAM,CACFuI,cAAcrI,EAAAA,EAAAA,IAAQ,GACtB4C,MAAOnC,EAAAA,GAAM6H,QACbhG,WAAY,SACZvC,UAAUC,EAAAA,EAAAA,IAAQ,IAClBuI,UAAW,SACXlG,WAAY,IACZiB,YAAYtD,EAAAA,EAAAA,IAAQ,OAIhCwI,eAAgB,CACZ3I,eAAgB,CACZC,KAAM,CACFuB,OAAO,GAADb,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,SAIjCsH,iBAAkB,CACdzH,eAAgB,CACZC,KAAM,CACFQ,QAAQN,EAAAA,EAAAA,IAAQ,IAChBwB,QAAQ,GAADhB,QAAKR,EAAAA,EAAAA,IAAQ,IAAG,KAAAQ,QAAIR,EAAAA,EAAAA,IAAQ,IAAG,KAAAQ,QAAIR,EAAAA,EAAAA,IAAQ,IAAG,KAAAQ,QAAIR,EAAAA,EAAAA,IAAQ,KACjEO,gBAAiBE,EAAAA,GAAMG,MACvBM,cAAclB,EAAAA,EAAAA,IAAQ,GACtBgB,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,8BACrB,2CAA4C,CACxCgB,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMiI,YAEzC,2CAA4C,CACxC1H,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMiI,YAEzC,kBAAmB,CACf1H,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAM8G,QAEzC,UAAW,CACP/F,QAAS,EACToB,MAAOnC,EAAAA,GAAMkI,YAGrBC,MAAO,CACHpH,QAAS,KAIrB5B,WAAY,CACRC,eAAgB,CACZC,KAAM,CACF0H,YAAYxH,EAAAA,EAAAA,IAAQ,GACpByH,cAAczH,EAAAA,EAAAA,IAAQ,GACtB4C,MAAOnC,EAAAA,GAAM8G,MACbxH,UAAUC,EAAAA,EAAAA,IAAQ,OAI9B0H,cAAe,CACX7H,eAAgB,CACZC,KAAM,CACF8C,MAAOnC,EAAAA,GAAM8G,MACbxH,UAAUC,EAAAA,EAAAA,IAAQ,IAClBwB,SAASxB,EAAAA,EAAAA,IAAQ,GACjB2H,QAAS,OACTC,eAAgB,aAChBQ,UAAW,eCzClB+F,EAA2BjQ,IACpC,MAAM,WACFqH,EAAU,GACV/F,EAAE,YACFgG,EAAW,UACXC,EAAS,SACTM,EAAQ,UACRL,EAAS,aACTC,EAAY,cACZC,EAAa,aACbC,EAAY,iBACZuI,GAAmB,EAAI,aACvBpI,EAAe,MACf9H,GAEGmQ,EAAkBC,IAAuBC,EAAAA,EAAAA,WAAS,GAEzD,OACI7P,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CAACC,MAAOA,EAAMT,UACxBU,EAAAA,EAAAA,MAAC8L,EAAAA,EAAS,CAAAxM,SAAA,EACNU,EAAAA,EAAAA,MAAC8H,EAAAA,EAAU,CAACC,QAASpH,EAAGrB,SAAA,CACnBoH,EAAY,IACZK,IAAiBlH,EAAAA,EAAAA,KAAA,QAAMH,UAAWe,EAA4BnB,SAAC,UAEpEO,EAAAA,EAAAA,KAACmI,EAAAA,EAAS,CACNrH,GAAIA,EACJgG,YAAaA,EACb9B,KAAM2K,EAAmB,OAAS,WAClC5I,UAAWA,KACPM,EACJgB,MAAOrB,EACPG,aAAcA,EACdG,aAAcA,EACdgB,SAAUpB,EACVqB,WAAY,CACRuH,cACI9P,EAAAA,EAAAA,KAAC+P,EAAAA,EAAc,CAACvO,SAAS,MAAK/B,UAC1BO,EAAAA,EAAAA,KAACO,EAAAA,EAAU,CACP,cAAY,gBACZyP,KAAK,MACL9L,MAAM,UACNxD,QAASA,IAAMkP,GAAqBD,GAAkBlQ,UAEtDO,EAAAA,EAAAA,KAACiQ,EAAAA,EAAY,CAACpQ,UAAWe,WAM5CyG,GAAYJ,IACT9G,EAAAA,EAAAA,MAACsI,EAAAA,EAAU,CAAAhJ,SAAA,EACLiQ,GACEzI,EAAaiJ,MAAM,0BACflQ,EAAAA,EAAAA,KAAC0I,EAAAA,EAAiB,CAACrH,SAAS,YAE5BrB,EAAAA,EAAAA,KAAA,QAAMH,UAAWe,EAAgCnB,SAAC,yBAIzDiQ,IAAoB1P,EAAAA,EAAAA,KAAC0I,EAAAA,EAAiB,CAACrH,SAAS,YAC7CrB,EAAAA,EAAAA,KAAA,QAAMH,UAAWe,EAAgCnB,SAAEwH,WAKvD,E,+FC9CjB,MAAMkJ,GAIT3Q,IAEA,MAAM,WACFqH,EAAU,GACV/F,EAAE,KACF4F,EAAI,aACJ0J,EAAY,YACZtJ,EAAW,UACXC,EAAS,UACTC,EAAS,aACTC,EAAY,cACZC,GAAgB,EAAK,aACrBC,EAAe,IAAG,QAClBC,EAAO,aACPE,EAAe,KAAI,SACnBrC,GAAW,EAAK,aAChBsC,GAAe,EAAK,OACpB8I,EAAS,OAAM,QACfpH,EAAU,OAAM,OAChBqD,GACA9M,EAEE8Q,GAASC,EAAAA,EAAAA,UAAQ,KACnB,OAAQF,GACJ,IAAK,KACD,OAAOG,GAAAA,GACX,IAAK,OACD,OAAOC,GAAAA,GAGX,QACI,OAAOC,GAAAA,GACf,GACD,CAACL,IAEJ,OACIrQ,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CAACC,MAAOqH,EAAeI,GAAAA,EAAoBzH,GAAAA,EAAMT,UAC3DO,EAAAA,EAAAA,KAAA,OAAKH,UAAWe,GAAAA,EAAO+P,uBAAuBlR,UAC1CO,EAAAA,EAAAA,KAAC4H,EAAAA,GAAU,CACPR,QAASA,EACTV,KAAMA,EACNmB,OAAQvE,IAAA,IAAGwE,OAAO,SAAE9B,EAAQ,OAAE+B,EAAM,MAAEvB,EAAK,IAAET,IAAOzC,EAAA,OAChDnD,EAAAA,EAAAA,MAAA6H,EAAAA,SAAA,CAAAvI,SAAA,EACIU,EAAAA,EAAAA,MAAC8H,EAAAA,EAAU,CAACC,QAASpH,EAAGrB,SAAA,CACnBoH,EACAK,IACGlH,EAAAA,EAAAA,KAAA,QAAMH,UAAWe,GAAAA,EAAOgQ,mBAAmBnR,SAAC,UAGpDU,EAAAA,EAAAA,MAAC0Q,EAAAA,EAAM,CACH/P,GAAIA,EACJkF,SAAW8K,IACP9K,EAAS8K,GACLV,GAAcA,EAAaU,EAAE,EAErC/I,OAAQA,EACRvB,MAAOA,GAAS,IAChBF,SAAUP,EACVoB,aAAcA,EACdJ,UAAWA,EACXD,YAAaA,EACbuB,MAAOrB,EACPM,aAAcA,EACdrC,SAAUA,EACV,cAAaqH,EACbyE,cAAeC,EAAAA,IAAcvR,SAAA,CAE5BqH,IACG9G,EAAAA,EAAAA,KAACiR,EAAAA,EAAQ,CAACzK,MAAM,IAAG/G,UACfO,EAAAA,EAAAA,KAAA,QACIH,UACI0H,EACM3G,GAAAA,EAAOsQ,yCACPtQ,GAAAA,EAAOuQ,6BAChB1R,SAEAqH,MAIZwJ,EAAOc,KAAKC,IACTrR,EAAAA,EAAAA,KAACiR,EAAAA,EAAQ,CAAiBzK,MAAO6K,EAAKC,KAAK7R,UACvCO,EAAAA,EAAAA,KAAA,QAAMH,UAAWe,GAAAA,EAAO2Q,oBAAoB9R,SACvC4R,EAAKpI,MAFCoI,EAAKC,WAO3BtK,IACG7G,EAAAA,EAAAA,MAACsI,EAAAA,EAAU,CAAAhJ,SAAA,CACNwH,IAAgBjH,EAAAA,EAAAA,KAAC0I,EAAAA,EAAiB,CAACrH,SAAS,WAC7CrB,EAAAA,EAAAA,KAAA,QAAMH,UAAWe,GAAAA,EAAO4Q,uBAAuB/R,SAC1CwH,SAId,OAIH,E,wDC/IjB,MAAMwK,IAAgB3G,EAAAA,GAAAA,KAAOxH,IAAA,IAAC,UAAEzD,EAAS,WAAEuM,KAAe5M,GAA2B8D,EAAA,OACxFtD,EAAAA,EAAAA,KAAC0R,GAAAA,EAAO,CACJC,gBAAiB,KACbnS,EACJoS,QAAS,CAAEC,OAAQhS,GACnB,cAAauM,GACf,GANuBtB,EAO1BgH,IAAA,IAAC,MAAE5R,EAAK,OAAE6R,GAAQD,EAAA,MAAM,CACvB,CAAC,MAADhQ,OAAOkQ,GAAAA,EAAeC,UAAY,CAC9BpQ,gBAAiBE,EAAAA,GAAMG,MACvBY,QAAQ,GAADhB,OAAK5B,EAAMgS,WAAW5Q,QAAQ,IAAG,KAAAQ,OAAI5B,EAAMgS,WAAW5Q,QAAQ,KACrE4C,MAAO,sBACPzB,UAAWvC,EAAMiS,QAAQ,GACzB7P,OAAO,GAADR,OAAK5B,EAAMgS,WAAW5Q,QAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMqQ,MAE1D,CAAC,MAADtQ,OAAOkQ,GAAAA,EAAeK,QAAU,CAC5BnO,MAAOnC,EAAAA,GAAMG,MACbyI,WAAYoH,EAAM,GAAAjQ,OAAM5B,EAAMgS,WAAW5Q,QAAQyQ,IAAY,EAC7D,WAAY,CACRzP,OAAO,GAADR,OAAK5B,EAAMgS,WAAW5Q,QAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMqQ,OAGjE,IAEDX,GAAclO,aAAe,CACzBwO,YAAQvO,EACR4I,gBAAY5I,G,uCCnChB,SAAwB,qBAAxB,GAAiE,iCAAjE,GAAkH,6BCWrG8O,GAAQhP,IAAA,IAAC,MAAEiP,EAAK,UAAE1S,EAAS,WAAE2S,KAAezG,GAAkBzI,EAAA,OACvEtD,EAAAA,EAAAA,KAAA,OACI,cAAY,cACZH,UAAWgB,KAAW,GAADiB,OAAIlB,IAAgB,CACrC,CAACA,IAA8B4R,EAC/B,CAAC3S,GAAsBA,OAEvBkM,EAAItM,UAERO,EAAAA,EAAAA,KAAA,QAAMH,UAAWe,GAAsB,cAAY,eAAcnB,SAC5D8S,KAEH,EAGVD,GAAM/O,aAAe,CAAE1D,eAAW2D,EAAWgP,YAAY,G,gBCxBlD,MAAMtS,IAAQc,EAAAA,EAAAA,GAAY,CAC7ByR,QAAS,CACLC,QAAS,CACLC,KAAM5Q,EAAAA,GAAMkC,iBAGpBiO,WAAY,CACR7Q,SAAU,IAEdJ,WAAY,CACR2R,YAAa,CACTzR,eAAgB,CACZC,KAAM,CACF8C,MAAOnC,EAAAA,GAAMkC,qBCCpB4O,GAAqBvP,IAAA,IAGhC,QACE8D,EAAO,KACPV,EAAI,aACJS,EAAY,iBACZ2L,GACuCxP,EAAA,OACvCtD,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CAACC,MAAOA,GAAMT,UACxBO,EAAAA,EAAAA,KAAC4H,EAAAA,GAAU,CACPR,QAASA,EACTV,KAAMA,EACNmB,OAAQiK,IAAA,IAAGhK,OAAO,SAAE9B,EAAQ,OAAE+B,EAAM,MAAEvB,EAAK,KAAEE,EAAI,IAAEX,IAAO+L,EAAA,OACtD9R,EAAAA,EAAAA,KAAC+S,GAAAA,EAAQ,CACL/M,SAAUA,CAACoC,EAAO4K,KACdhN,EAASoC,EAAO4K,GAEZF,GAAkBA,EAAiB1K,EAAM,EAEjDL,OAAQA,EACRrB,KAAMA,EACNJ,SAAUP,EACViN,QAASxM,EACTA,MAAOA,EACPyM,eAAgB9L,GAClB,KAGE,EAGpB0L,GAAmBtP,aAAe,CAC9BuP,iBAAkB,M,+DCvCShI,EAAAA,GAAAA,IAAO,MAAPA,EAC3BxH,IAAA,IAAC,MAAEpD,GAAOoD,EAAA,MAAM,CACZlB,WAAW,GAADN,OAAKC,EAAAA,GAAMkC,eAAc,gCACnCxD,OAAQ,EACRkB,MAAOzB,EAAMgS,WAAW5Q,QAAQ,IAChCM,OAAQ1B,EAAMgS,WAAW5Q,QAAQ,IACjC2H,QAAS,OACTC,eAAgB,SAChBC,WAAY,SACZ3G,aAAc,MACjB,KAG0BsI,EAAAA,GAAAA,IAAO,MAAPA,EAC3BgH,IAAA,IAAC,MAAE5R,GAAO4R,EAAA,MAAM,CACZ1P,WAAW,GAADN,OAAKC,EAAAA,GAAMkC,eAAc,gCACnC3B,OAAO,GAADR,OAAK5B,EAAMgS,WAAW5Q,QAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMG,OACtDzB,OAAQ,EACRyD,MAAO,OACPvC,MAAOzB,EAAMgS,WAAW5Q,QAAQ,IAChCM,OAAQ1B,EAAMgS,WAAW5Q,QAAQ,IACjC2H,QAAS,OACTzG,aAAc,MACd0G,eAAgB,SAChBC,WAAY,SACf,IAIG+J,GAAAA,EACAC,GAAAA,EACAC,GAAAA,EACAC,GAAAA,EACAC,GAAAA,E,gBCnCD,MCCMC,GAAkB/T,IAC3B,MAAM,UAAEK,EAAS,IAAES,EAAG,IAAED,EAAG,SAAEmT,GAAahU,GACnCiU,EAASC,IAAc7D,EAAAA,EAAAA,WAAS,GAEjC8D,EAAoBA,IAEE,kBAAbH,GACAxT,EAAAA,EAAAA,KAAA,OAAKH,UAAWgB,KAAWhB,GAAYS,IAAKkT,EAAUnT,IAAKA,IAG/DmT,EAoBX,OAhBQlT,EACImT,EACOE,KAGP3T,EAAAA,EAAAA,KAAA,OACI4T,QAASA,IAAYF,GAAW,GAChC7T,UAAWA,EACXS,IAAKA,EACLD,IAAKA,IAIVsT,GAGY,EAG3BJ,GAAehQ,aAAe,CAAE1D,eAAW2D,G,gBCvCpC,MAAMtD,IAAQc,EAAAA,EAAAA,GAAY,CAC7BC,WAAY,CACR+H,cAAe,CACX7H,eAAgB,CACZC,KAAM,CACF8C,MAAOnC,EAAAA,GAAM8G,MACbxH,UAAUC,EAAAA,EAAAA,IAAQ,IAClB2H,QAAS,OACTC,eAAgB,aAChBQ,UAAW,SACXe,WAAWnJ,EAAAA,EAAAA,IAAQ,MAI/BJ,WAAY,CACRC,eAAgB,CACZC,KAAM,CACF2H,cAAczH,EAAAA,EAAAA,IAAQ,GACtB4C,MAAOnC,EAAAA,GAAM8G,MACbxH,UAAUC,EAAAA,EAAAA,IAAQ,OAI9BgJ,aAAc,CACVnJ,eAAgB,CACZC,KAAM,CACFuI,cAAcrI,EAAAA,EAAAA,IAAQ,GACtB4C,MAAOnC,EAAAA,GAAM6H,QACbhG,WAAY,SACZvC,UAAUC,EAAAA,EAAAA,IAAQ,IAClBuI,UAAW,SACXlG,WAAY,IACZiB,YAAYtD,EAAAA,EAAAA,IAAQ,KAExBiJ,SAAU,CACNrG,MAAOnC,EAAAA,GAAM8G,MACb,UAAW,CACP3E,MAAOnC,EAAAA,GAAM8G,UAK7BD,iBAAkB,CACdzH,eAAgB,CACZC,KAAM,CACFQ,QAAQN,EAAAA,EAAAA,IAAQ,IAChBwB,QAAQ,GAADhB,QAAKR,EAAAA,EAAAA,IAAQ,IAAG,KAAAQ,QAAIR,EAAAA,EAAAA,IAAQ,IAAG,KAAAQ,QAAIR,EAAAA,EAAAA,IAAQ,IAAG,KAAAQ,QAAIR,EAAAA,EAAAA,IAAQ,KACjEO,gBAAiBE,EAAAA,GAAMG,MACvBM,cAAclB,EAAAA,EAAAA,IAAQ,GACtBgB,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,8BACrB,UAAW,CACP4C,MAAOnC,EAAAA,GAAM6H,QACbhG,WAAY,UACZvC,UAAUC,EAAAA,EAAAA,IAAQ,IAClBuI,UAAW,SACXlG,WAAY,IACZiB,YAAYtD,EAAAA,EAAAA,IAAQ,KAExB,2CAA4C,CACxCgB,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMiI,YAEzC,2CAA4C,CACxC1H,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMiI,aAG7CE,MAAO,CACHpH,QAAS,KAIrB+Q,gBAAiB,CACb1S,eAAgB,CACZC,KAAM,CACF,0BAA2B,CAAE0B,QAAS,GACtC,iDAAkD,CAC9CA,QAAQ,GAADhB,QAAKR,EAAAA,EAAAA,IAAQ,IAAG,KAAAQ,QAAIR,EAAAA,EAAAA,IAAQ,Y,wBC3EpD,MAAMqG,IAAoB3G,EAAAA,EAAAA,GAAY,CACzCC,WAAY,CACR+H,cAAe,CACX7H,eAAgB,CACZC,KAAM,CACF8C,MAAOnC,EAAAA,GAAM8G,MACbxH,UAAUC,EAAAA,EAAAA,IAAQ,IAClB2H,QAAS,OACTC,eAAgB,aAChBQ,UAAW,SACXe,WAAWnJ,EAAAA,EAAAA,IAAQ,MAI/BJ,WAAY,CACRC,eAAgB,CACZC,KAAM,CACF2H,cAAczH,EAAAA,EAAAA,IAAQ,GACtB4C,MAAOnC,EAAAA,GAAM8G,MACbxH,UAAUC,EAAAA,EAAAA,IAAQ,OAI9BgJ,aAAc,CACVnJ,eAAgB,CACZC,KAAM,CACFC,UAAUC,EAAAA,EAAAA,IAAQ,IAClB4C,MAAOnC,EAAAA,GAAMwC,kBAEjBgG,SAAU,CACNrG,MAAOnC,EAAAA,GAAM8G,MACb,UAAW,CACP3E,MAAOnC,EAAAA,GAAM8G,UAK7BgL,gBAAiB,CACb1S,eAAgB,CACZC,KAAM,CACF,0BAA2B,CACvB0B,QAAS,GAEb,iDAAkD,CAC9CA,QAAQ,GAADhB,QAAKR,EAAAA,EAAAA,IAAQ,IAAG,KAAAQ,QAAIR,EAAAA,EAAAA,IAAQ,MAEvC,qCAAsC,CAClCgB,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMwC,mBAEzC,8CAA+C,CAC3C,qCAAsC,CAClCjC,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMwC,oBAG7C,gBAAiB,CACb,qCAAsC,CAClCjC,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMwC,oBAG7C,cAAe,CACX,qCAAsC,CAClCjC,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAM8G,SAG7C,UAAW,CACP/F,QAAS,EACT,+BAAgC,CAC5BoB,MAAOnC,EAAAA,GAAMwC,yBCvC5BuP,GAAuBtU,IAChC,MAAM,GACFsB,EAAc,WACd+F,EAAU,YACVC,EAAW,QACXhD,EAAO,UACPkD,EAAqB,aACrBC,EAAwB,SACxBI,EAAQ,SACRiB,EAAQ,aACRnB,EAAe,GAAE,SACjBlC,GAAW,EAAK,SAChB8O,EAAQ,aACRxM,GAAe,GACf/H,GAEGwU,EAAYC,IAAiBpE,EAAAA,EAAAA,UAAS1I,GAAgB,KAEtD+M,EAASC,IAActE,EAAAA,EAAAA,UAA0C,MAUlEuE,EAAmBlK,IACjBA,EAAMmK,QAAU,GAChBC,EAAAA,GAAAA,IAAsBpK,GAAOqK,MAAMC,IAC/B,GAAIA,EAAU,CACV,MAAMC,EAAgD,OAARD,QAAQ,IAARA,OAAQ,EAARA,EAAUE,KAAKA,KAC7DP,EAAWM,EACf,KAGJN,EAAW,KACf,EAqBEQ,GAAyBpE,EAAAA,EAAAA,UAAQ,KAAMqE,EAAAA,GAAAA,UAASR,EAAiB,MAAM,IAE7E,OACIpU,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CAACC,MAAOqH,EAAeI,GAAoBzH,GAAMT,UAC3DU,EAAAA,EAAAA,MAAC8L,EAAAA,EAAS,CAAAxM,SAAA,EACNO,EAAAA,EAAAA,KAACkM,EAAAA,EAAS,CAAC5D,SAAUA,EAAUJ,QAASpH,EAAGrB,SACtCoH,KAGL7G,EAAAA,EAAAA,KAAC6U,GAAAA,EAAY,CACTC,UAAQ,EACRC,kBAAgB,EAChB9P,SAAUA,EACV,cAAY,gBACZiP,QACIA,EACMA,EAAQ9C,KAAK4D,IAA8B,CACvCC,MAAM,GAADnT,OAAKkT,EAAOE,aACjB1O,MAAOwO,EAAOG,YAElB,GAEVnB,WAAYA,EACZoB,cA9DkBC,CAC9BjN,EACAkN,KAEArB,EAAcqB,GACdX,EAAuBW,EAAY,EA0DvBtP,SA1CauP,CACzBnN,EACA5B,KAEqB,kBAAVA,GACPA,EAAMA,QACNgP,EAAAA,GAAAA,IAAkBhP,EAAMA,OAAO+N,MAAMkB,IACjC,GAAO,OAAHA,QAAG,IAAHA,GAAAA,EAAKf,KAAKgB,QAAS,CACnB,MAAMC,EAAmB,IAAKF,EAAIf,KAAKA,KAAKiB,SAC5C1B,GAAqB,OAAP0B,QAAO,IAAPA,OAAO,EAAPA,EAASC,WAAY,IACnC7B,EAAS4B,EACb,MACI1B,EAAc,GAClB,GAER,EA4BY4B,YAAcC,IACV9V,EAAAA,EAAAA,KAACmI,EAAAA,EAAS,IACF2N,KACAzO,EACJvD,QAASA,EACTkB,KAAK,OACLqD,MAAOrB,EACPF,YAAaA,EACb,cAAY,+BAKvBE,IACG7G,EAAAA,EAAAA,MAACsI,EAAAA,EAAU,CAAC,cAAY,sBAAqBhJ,SAAA,CACxCwH,IAAgBjH,EAAAA,EAAAA,KAAC0I,EAAAA,EAAiB,CAACrH,SAAS,WAC7ClB,EAAAA,EAAAA,MAAA,QAAM,cAAY,8BAA6BV,SAAA,CAAC,IAAEwH,YAIlD,E,gBCpIxB,UAAejG,EAAAA,EAAAA,GAAY,CACvBC,WAAY,CACR8U,QAAS,CACL5U,eAAgB,CACZC,KAAM,CACFuB,OAAO,GAADb,QAAKR,EAAAA,EAAAA,IAAQ,IAAG,KAAAQ,QAAIR,EAAAA,EAAAA,IAAQ,GAAE,KAAAQ,QAAIR,EAAAA,EAAAA,IAAQ,IAChDkB,cAAclB,EAAAA,EAAAA,IAAQ,GACtBc,WAAYL,EAAAA,GAAMiU,SAClB,wBAAyB,CACrB9R,MAAOnC,EAAAA,GAAMkC,eACbrC,QAAQN,EAAAA,EAAAA,IAAQ,IAChBK,OAAOL,EAAAA,EAAAA,IAAQ,KAEnB,8BAA+B,CAC3B4C,MAAOnC,EAAAA,GAAMoC,wBAEjB9C,UAAUC,EAAAA,EAAAA,IAAQ,IAClBM,QAAQN,EAAAA,EAAAA,IAAQ,UCVvB2U,GAAoBzW,IAC7B,MAAM,OAAEwV,EAAM,iBAAEkB,GAAqB1W,EAErC,OACIQ,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CAACC,MAAOA,GAAMT,UACxBO,EAAAA,EAAAA,KAACmW,GAAAA,EAAI,CAAClB,MAAOD,EAAOC,MAAOmB,SAAUA,IAAYF,EAAiBlB,MACtD,E,mDCbjB,MAAM9U,IAAQc,EAAAA,EAAAA,GAAY,CAC7BC,WAAY,CACRiC,SAAU,CACN/B,eAAgB,CACZC,KAAM,CACFS,gBAAiB,iBAI7BwU,aAAc,CACVlV,eAAgB,CACZC,KAAM,CACF,iBAAkB,CACdkV,uBAAwB,EACxBC,wBAAyB,GAE7B,kBAAmB,CACfC,oBAAqB,EACrBC,qBAAsB,GAE1BhU,UAAW,UAIvBiU,oBAAqB,CACjBvV,eAAgB,CACZC,KAAM,CACF,uBAAwB,CACpBC,UAAUC,EAAAA,EAAAA,IAAQ,IAClB4C,MAAOnC,EAAAA,GAAM6H,QACbjG,WAAY,QAGhB,iCAAkC,CAC9BhB,OAAO,GAADb,QAAKR,EAAAA,EAAAA,IAAQ,IAAG,MACtB,iBAAkB,CACdqB,OAAO,GAADb,QAAKR,EAAAA,EAAAA,IAAQ,IAAG,QAI9B,iBAAkB,CACdqV,UAAW,eAEf7T,QAAS,EACT6T,UAAW,iBAIvBC,oBAAqB,CACjBzV,eAAgB,CACZC,KAAM,CACF0B,QAAS,EACT6G,cAAcrI,EAAAA,EAAAA,IAAQ,IACtB4C,MAAOnC,EAAAA,GAAM+C,aACb,MAAO,CACHnC,OAAQ,GAEZ,MAAO,CACHuB,MAAOnC,EAAAA,GAAMwC,wBC3CxBsS,GAAMvT,IAAA,IAAC,QAAEwT,EAAO,QAAEC,EAAO,OAAEC,GAAkB1T,EAAA,OACtDtD,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CAACC,MAAOA,GAAMT,UACxBU,EAAAA,EAAAA,MAAC8W,GAAAA,EAAS,CACNzW,MAAO,CAAE0W,aAAcF,EAAS,OAAM,GAAAlV,QAAMR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMqC,aAAe3E,SAAA,EAErFO,EAAAA,EAAAA,KAACmX,GAAAA,EAAgB,CAAC,cAAY,YAAYC,YAAYpX,EAAAA,EAAAA,KAACqX,GAAAA,EAAc,IAAI5X,UACrEO,EAAAA,EAAAA,KAACyI,EAAAA,EAAU,CAAAhJ,SAAEqX,OAGjB9W,EAAAA,EAAAA,KAACsX,GAAAA,EAAgB,CACb,cAAY,oBACZC,wBAAyB,CAAEC,OAAQT,SAG/B,E,gBChCpB,SAAgC,qCAAhC,GAAoF,oCAApF,GAAgJ,6C,gBCAhJ,SAA4B,4CCMtBU,IAAYzW,EAAAA,EAAAA,GAAY,CAC1BC,WAAY,CACRC,WAAY,CACRC,eAAgB,CACZC,KAAM,CACFS,gBAAiBE,EAAAA,GAAMG,MACvBM,aAAc,MACd0B,MAAOnC,EAAAA,GAAM6H,QACb9G,SAASxB,EAAAA,EAAAA,IAAQ,GACjBD,UAAUC,EAAAA,EAAAA,IAAQ,IAClBqC,WAAY,UAWnB+T,GAAwBpU,IAAA,IAAC,YAClCvD,GACyBuD,EAAA,OACzBtD,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CAACC,MAAOuX,GAAUhY,UAC5BO,EAAAA,EAAAA,KAACO,EAAAA,EAAU,CACP,cAAY,mCACZV,UAAWe,GACX,aAAW,QACXF,QAASX,EAAYN,UAErBO,EAAAA,EAAAA,KAACW,GAAAA,EAAS,OAEF,E,4BC1Bb,MAAMgX,GAAqBrU,IAGa,IAHZ,aAC/BsU,EAAY,UACZC,GACgBvU,EAChB,MAAOwU,EAAYC,IAAiBlI,EAAAA,EAAAA,WAAS,IACvC,QAAEmI,EAAO,cAAEC,EAAa,cAAEC,GAAkBN,EAC5C7R,GAAMoS,EAAAA,EAAAA,QAA6B,OAEzCC,EAAAA,EAAAA,YAAU,KACFrS,EAAIsS,UACJtS,EAAIsS,QAAQC,UAAYN,GAAW,GACvC,GACD,CAACjS,IAMJ,OAAI8R,IAAcK,EAAsB,KAEjCJ,GACH3X,EAAAA,EAAAA,MAAA,OAAK,cAAY,uBAAuBN,UAAWe,GAAoBnB,SAAA,EACnEO,EAAAA,EAAAA,KAAA,KACI,cAAY,gCACZ+F,IAAKA,EACLlG,UAAWe,KAEdqX,IAAiBjY,EAAAA,EAAAA,KAAC0X,GAAqB,CAAC3X,YAb7BA,KAChBgY,GAAeQ,IAAUA,GAAK,OAc9B,IAAI,EAGCC,GAAgBA,KACzB,MAAMC,GAAsBC,EAAAA,GAAAA,GAAeC,GAAAA,IAErCd,EAA6B,kBADrBe,EAAAA,GAAmBC,IAAI,aAGrC,OAA0B,OAAnBJ,QAAmB,IAAnBA,GAAAA,EAAqBpE,QACxBrU,EAAAA,EAAAA,KAAA,OAAK,cAAY,gBAAgBH,UAAWe,GAAqBnB,SACzC,OAAnBgZ,QAAmB,IAAnBA,OAAmB,EAAnBA,EAAqBrH,KACjB0H,IACG9Y,EAAAA,EAAAA,KAAC2X,GAAkB,CAAYC,aAAckB,EAAGjB,UAAWA,GAAlCiB,EAAEhY,QAIvC,IAAI,EC1DZ,GAA4B,4CCMfiY,GAAyBzV,IAAA,IAAC,SAAE7D,GAAuC6D,EAAA,OAC5EtD,EAAAA,EAAAA,KAAA,OAAKH,UAAWe,GAAkB,cAAY,2BAA0BnB,SACnEA,GACC,ECTV,GAAyB,qCCSSqG,EAAAA,EAAAA,aAC9B,CAACtG,EAAgCuG,KAC7B,MAAM,SAAEtG,EAAQ,UAAEI,EAAS,QAAEa,GAAYlB,EACzC,OACIQ,EAAAA,EAAAA,KAAA,UACI+F,IAAKA,EACLf,KAAK,SACLtE,QAASA,EACTb,UAAWgB,KAAWD,GAAef,GAAWJ,SAE/CA,GACI,IAKF8D,aAAe,CAAE1D,eAAW2D,G,4BCzB/C,SAAuB,wBAAvB,GAAgE,kCCWnDwV,GAAiB1V,IAAA,IAAC,GAAE2V,EAAE,SAAEC,EAAQ,SAAEzZ,GAAyB6D,EAAA,OACpEtD,EAAAA,EAAAA,KAACmZ,GAAAA,GAAI,CAACtZ,UAAWe,GAAaqY,GAAIA,EAAGxZ,SAChCA,IACGU,EAAAA,EAAAA,MAAA6H,EAAAA,SAAA,CAAAvI,SAAA,EACIO,EAAAA,EAAAA,KAACoZ,GAAAA,IAAW,CACR,cAAY,iBACZvZ,UAAWe,GACXyY,UAAW,IAEdH,MAGN,EAGXF,GAAezV,aAAe,CAAE9D,cAAU+D,EAAW0V,cAAU1V,G,6DCvBxD,MAAMtD,IAAQc,EAAAA,EAAAA,GAAY,CAC7BC,WAAY,CACRqY,SAAU,CACNnY,eAAgB,CACZC,KAAM,CACF8C,MAAOnC,EAAAA,GAAMkC,eACb,gBAAiB,CACbC,MAAOnC,EAAAA,GAAMkC,eAEb,qBAAsB,CAClB,eAAgB,CACZsV,UAAW,oBAOnCjP,aAAc,CACVnJ,eAAgB,CACZC,KAAM,CACF6H,QAAS,OACT,gBAAiB,CACb/E,MAAOnC,EAAAA,GAAM+C,eAGrByF,SAAU,CACNrG,MAAOnC,EAAAA,GAAM8G,MACb,UAAW,CACP3E,MAAOnC,EAAAA,GAAM8G,UAK7BiB,eAAgB,CACZ3I,eAAgB,CACZC,KAAM,CACFO,MAAO,UAInB6X,oBAAqB,CACjBrY,eAAgB,CACZC,KAAM,CACF,iBAAkB,CACd8C,MAAOnC,EAAAA,GAAMC,SACbyX,QAAS,UCdpBC,GAAoBla,IAC7B,MAAM,SACFC,EAAQ,cACRyH,EAAa,WACbL,EAAU,aACVM,EAAY,IACZwS,EAAG,UACH9Z,EAAS,eACT+Z,EAAc,oBACdC,EAAmB,QACnB3F,EAAO,QACPxT,EAAO,SACPsF,GACAxG,EAEJ,OACIQ,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CAACC,MAAOA,GAAMT,UACxBU,EAAAA,EAAAA,MAAC2Z,GAAAA,EAAW,CAAAra,SAAA,CACPoH,IAAc7G,EAAAA,EAAAA,KAACkM,EAAAA,EAAS,CAAC5D,SAAUpB,EAAczH,SAAEoH,KACpD1G,EAAAA,EAAAA,MAAC4Z,GAAAA,EAAU,CACPla,UAAWgB,KAAW,CAAE,CAAChB,GAAsBA,IAC/CsH,aAAcA,EACdwS,IAAKA,EAAIla,SAAA,CAERA,EAEAyU,GACGlU,EAAAA,EAAAA,KAAA,OACI,cAAY,6BACZH,UAAWgB,KAAW,CAClB,CAACgZ,GAAgCA,IAClCpa,SAEFyU,EAAQ9C,KACJ4D,IAA8B,IAAAgF,EAAA,OAC3Bha,EAAAA,EAAAA,KAACia,GAAAA,EAAgB,CACbZ,SAAU,EACVpU,SAAU+P,EAAO/P,SACjBpF,UAAWgB,KAAW,CAClB,CAAC+Y,GAA2BA,IAGhCpT,MAAOwO,EAAOxO,MACdY,SACIpH,EAAAA,EAAAA,KAACka,GAAAA,EAAK,CACFb,SAAU,EACVrG,QAASgC,EAAOhC,QAChBtS,QAASA,EACTsF,SAAUA,IAGlBiP,MAAmB,QAAd+E,EAAEhF,EAAOC,aAAK,IAAA+E,EAAAA,EAAI,MAVlBhF,EAAOlU,GAWd,MAId,YAGA,EAIxB4Y,GAAiBnW,aAAe,CAC5BsD,gBAAYrD,EACZ0D,eAAe,EACfC,kBAAc3D,EACdmW,KAAK,EACL9Z,eAAW2D,EACXoW,oBAAgBpW,EAChBqW,yBAAqBrW,EACrB9C,aAAS8C,EACTwC,cAAUxC,EACV/D,cAAU+D,EACV0Q,QAAS,MC7Gb,SAA4B,2CAA5B,GAA0F,kDAA1F,GAAiK,oDAAjK,GAAoP,8DCmBvOiG,GAAwB7W,IAAA,IAAC,MAClC2R,EAAK,QACLjC,EAAO,UACPnT,EAAS,MACT2G,EAAK,SACLa,EAAQ,QACR3G,EAAO,SACPsF,EAAQ,SACRvG,EAAQ,iBACR2a,GACyB9W,EAAA,OACzBtD,EAAAA,EAAAA,KAAA,OACI,cAAY,0BACZH,UAAWgB,KAAWD,GAAkB,CAAE,CAACf,GAAsBA,IAAaJ,UAE9EU,EAAAA,EAAAA,MAACF,EAAAA,EAAa,CAACC,MAAOA,GAAMT,SAAA,EACxBO,EAAAA,EAAAA,KAACia,GAAAA,EAAgB,CACb,cAAaG,EACb5T,MAAOA,EACPY,SACIpH,EAAAA,EAAAA,KAACka,GAAAA,EAAK,CAAClH,QAASA,EAAStS,QAASA,EAASsF,SAAUA,KAAcqB,IAEvE4N,MAAOA,GAAQjV,EAAAA,EAAAA,KAAA,QAAMH,UAAWe,GAAwBnB,SAAEwV,IAAgB,OAG7ExV,GACGO,EAAAA,EAAAA,KAAA,OACIH,UAAWgB,KAAWD,GAA2B,CAC7C,CAACA,IAAyCoS,IAC3CvT,SAEFA,IAEL,SAEN,EC7CG4a,GAAgB/W,IAAmE,IAAlE,IAAEhD,EAAG,IAAED,EAAG,UAAER,EAAS,WAAEya,GAAwBhX,EAiBzE,OAhB+BiN,EAAAA,EAAAA,UAC3B,KACIvQ,EAAAA,EAAAA,KAAA,OACIH,UAAWgB,KAAW,CAAE,CAAChB,GAAsBA,IAC/CS,IAAKA,EACLsT,QAAS9B,IAA8B,IAA7B,cAAEyI,GAAezI,EAClBwI,IACLC,EAAcja,IAAMga,EAAU,EAElCja,IAAKA,EACL,cAAY,aAGpB,CAACC,GAGwB,EAGjC+Z,GAAc9W,aAAe,CAAE1D,eAAW2D,EAAW8W,gBAAY9W,G,gBCjB1D,MAAMgX,GAAwBlX,IAAA,IAAC,OAClCwS,EAAM,YACN2E,EAAW,QACX/Z,EAAO,YACPoG,GACyBxD,EAAA,OACzBtD,EAAAA,EAAAA,KAACmI,EAAAA,EAAS,IACF2N,EACJhP,YAAaA,EACbyB,WAAY,IACLuN,EAAOvN,WACVuH,cACI3P,EAAAA,EAAAA,MAAA6H,EAAAA,SAAA,CAAAvI,SAAA,EACKib,EAAAA,EAAAA,IAAgBD,IACbza,EAAAA,EAAAA,KAAC2a,GAAAA,EAAsB,CAACC,QAAM,EAACjV,KAAM,KACrC,KACHmQ,EAAOvN,WAAWuH,iBAI/BpP,QAASA,GACX,E,gBCxBC,MAAMma,GAAoB/P,GAAAA,EAAOgQ,KACpCxX,IAAmE,IAC3DyX,GADP,OAAEC,EAAM,KAAEC,EAAI,OAAEra,GAAuC0C,EAOpD,MAJsB,kBAAX1C,GAAkC,OAAXA,IAC9Bma,EAAkBna,GAGf,CACHY,SAAU,WACVwZ,OAAO,GAADlZ,OAAKkZ,GACXC,KAAK,GAADnZ,OAAKmZ,MACNF,EACN,IAITF,GAAkBtX,aAAe,CAAE3C,YAAQ4C,GCfpC,MAAM0X,GAAapQ,GAAAA,EAAOgQ,KAAsBxX,IAA2C,IAC1FyX,EACAI,GAFgD,SAAEC,EAAQ,OAAExa,EAAM,MAAEya,EAAQ,GAAG/X,EAYnF,MARsB,kBAAX1C,GAAkC,OAAXA,IAC9Bma,EAAkBna,GAGlBya,EAAQ,IACRF,EAAkB,YAGf,CACH3Z,SAAU,WACV8Z,gBAAgB,OAADxZ,OAASsZ,EAAQ,KAChCG,iBAAkB,YAClBC,eAAgB,UAChBjC,UAAU,SAADzX,OAAWuZ,EAAK,KACzBF,kBACAxY,OAAQ,KACLoY,EACN,ICpBQU,ICJM3Q,GAAAA,EAAOgQ,KAAexX,IAAiB,IAClDyX,GADkC,OAAEna,GAAQ0C,EAOhD,MAJsB,kBAAX1C,GAAkC,OAAXA,IAC9Bma,EAAkBna,GAGf,IACAma,EACN,IDL4Bvb,IAC7B,MAAM,mBAAEkc,EAAkB,YAAEC,EAAW,MAAEN,EAAQ,EAAC,SAAE5b,EAAQ,QAAEmc,GAAYpc,EAEpEqc,EAAqB,CACvBhX,UAAUvD,EAAAA,EAAAA,IAAQ,KAClBqV,WAAWrV,EAAAA,EAAAA,IAAQ,MAGjBwa,EAAsBF,EACtB,IACOC,EACHvZ,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMga,MACrC,4BAA6B,CACzBlX,UAAUvD,EAAAA,EAAAA,IAAQ,KAClBqV,WAAWrV,EAAAA,EAAAA,IAAQ,OAG3B,CAAC,EAEDV,GAAS2P,EAAAA,EAAAA,UAAQ,KACnB,OAAQoL,GACJ,KAAKK,EAAAA,GAAqBC,kBACtB,MAAO,CACHpX,UAAUvD,EAAAA,EAAAA,IAAQ,KAClBqV,WAAWrV,EAAAA,EAAAA,IAAQ,KACnBgB,OAAO,GAADR,QAAKR,EAAAA,EAAAA,IAAQ,GAAE,WAAAQ,OAAUC,EAAAA,GAAMga,SAClCD,GAEX,KAAKE,EAAAA,GAAqBE,cACtB,MAAO,CACHrX,UAAUvD,EAAAA,EAAAA,IAAQ,KAClBqV,WAAWrV,EAAAA,EAAAA,IAAQ,MAE3B,KAAK0a,EAAAA,GAAqBG,aAC1B,QACI,MAAO,CACHtX,UAAUvD,EAAAA,EAAAA,IAAQ,KAClBqV,WAAWrV,EAAAA,EAAAA,IAAQ,MAE/B,GACD,CAACqa,IAEJ,OACI3b,EAAAA,EAAAA,KAACkb,GAAU,CACP,cAAY,cACZE,SAAUM,EACV9a,OAAQA,EACRya,MAAOA,EAAM5b,SAEZA,GACQ,GAIrBgc,GAAiBlY,aAAe,CAC5B8X,MAAO,EACP5b,cAAU+D,EACVoY,SAAS,GErEb,UAAgB,eAAiB,mCAAmC,eAAiB,mCAAmC,iBAAmB,qCAAqC,kBAAoB,sCAAsC,cAAgB,kCAAkC,OAAS,2BAA2B,MAAQ,0BAA0B,mBAAqB,uCAAuC,8BAA8B,gDAAgD,WAAa,+BAA+B,QAAU,6B,gBCgB3hB,MAAMQ,GAAa5c,IAA0C,IAAD6c,EAC/D,MAAM,QAAEC,EAAO,MAAEC,EAAK,YAAEC,GAAgBhd,GAClC,iBAAEid,IAAqBpR,EAAAA,EAAAA,MAEvB,UACFqR,EAAY,GAAE,SACdC,EAAW,GAAE,cACbC,EAAgB,IAAIC,MAAqB,YACzCC,EAAc,GAAE,aAChBC,EAAe,GAAE,SACjBC,EAAW,GAAE,eACbC,EAAiB,IACV,OAAPX,QAAO,IAAPA,EAAAA,EAAY,CAAC,EACXY,EAAe,GAAApb,OAAM4a,EAAS,KAAA5a,OAAI6a,GAClCQ,EAAO,QAAArb,OAA2B,QAA3Bua,EAAWO,EAAc,UAAE,IAAAP,OAAA,EAAhBA,EAAkBe,gBAGtCV,UAAWW,EAAiB,GAC5BV,SAAUW,EAAgB,GAC1BC,SAAUC,EAAgB,GAC1BR,SAAUS,EAAgB,GAAE,kBAC5BC,EAAoB,GACpBX,aAAcY,EAAoB,GAAE,OACpCC,EAAS,IAAIf,OACR,OAALN,QAAK,IAALA,EAAAA,EAAU,CAAC,EAETsB,EAAa,GAAA/b,OAAMub,EAAc,KAAAvb,OAAIwb,GACrCQ,EAAI,SAAAhc,OAAY4b,GAEhBK,EAAkBH,EAAOxM,KAAK0H,GAAMA,EAAE9T,OAEtCgZ,EAAgBhZ,IAAqC,IAADiZ,EACtD,MAAMC,EAAkBH,EAAgB3O,SAASpK,GAC3CmZ,EAA8D,MAAb,QAAnCF,EAAAL,EAAOQ,MAAMtF,GAAMA,EAAE9T,OAASA,WAAK,IAAAiZ,OAAA,EAAnCA,EAAqCI,QAEzD,OAAOH,GAAmBC,CAAW,EAGnCG,EAA6BtZ,IAAoC,IAADuZ,EAAAC,EAClE,MAAMH,EAA2D,QAArDE,EAA6C,QAA7CC,EAAGZ,EAAOQ,MAAMtF,GAAaA,EAAE9T,OAASA,WAAK,IAAAwZ,OAAA,EAA1CA,EAA4CH,cAAM,IAAAE,EAAAA,EAAI,GAErE,OAAOE,EAAAA,EAAAA,IAAkBJ,EAAO,EAGpC,OACIle,EAAAA,EAAAA,MAAA,OAAKN,UAAWe,GAAO8d,OAAQ,cAAY,wBAAuBjf,SAAA,EAC9DU,EAAAA,EAAAA,MAAA,OAAKN,UAAWe,GAAO2b,MAAM9c,SAAA,EACzBO,EAAAA,EAAAA,KAACuT,GAAc,CACX1T,UAAWe,GAAO+d,WAClBre,IAAK0c,EACLxJ,SAAUiJ,EACVpc,IAAI,kBAGP4c,IACGjd,EAAAA,EAAAA,KAAA,OACIH,UAAWgB,KACPD,GAAOge,mBACPhe,GAAO,gCAEXN,IAAK2c,EACL5c,IAAI,kBAIZF,EAAAA,EAAAA,MAAA,OAAKN,UAAWe,GAAOmW,QAAQtX,SAAA,EAC3BO,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAOie,cAAcpf,SAAEyd,KACrCld,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAOke,kBAAkBrf,SAAC,uBACxCO,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAOme,iBAAiBtf,SAAE0d,KACxCnd,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAOoe,eAAevf,UAAEgf,EAAAA,EAAAA,IAAkB3B,MACxD9c,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAOqe,eAAexf,SAAEsd,UAI7CP,GACGxc,EAAAA,EAAAA,KAAC2a,GAAAA,EAAsB,KAEvBxa,EAAAA,EAAAA,MAAA,OAAKN,UAAWe,GAAO2b,MAAM9c,SAAA,EACzBO,EAAAA,EAAAA,KAACuT,GAAc,CACX1T,UAAWe,GAAO+d,WAClBre,IAAKmd,EACLjK,SAAUiJ,EACVpc,IAAI,2BAGRL,EAAAA,EAAAA,KAACkf,GAAAA,EAAuB,CAACrf,UAAWe,GAAOge,sBAE3Cze,EAAAA,EAAAA,MAAA,OAAKN,UAAWe,GAAOmW,QAAQtX,SAAA,EAC3BO,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAOie,cAAcpf,SAAEoe,KACrC7d,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAOke,kBAAkBrf,SAAE+d,KACzCxd,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAOme,iBAAiBtf,SAAEqe,KAExC3d,EAAAA,EAAAA,MAAA,OAAKN,UAAWe,GAAOue,qBAAqB1f,SAAA,CACvCue,EAAaoB,EAAAA,GAAiBC,QAC3Blf,EAAAA,EAAAA,MAAA,KAAGN,UAAWe,GAAOoe,eAAevf,SAAA,CAAC,MAC7B6e,EAA0Bc,EAAAA,GAAiBC,SAItDrB,EAAaoB,EAAAA,GAAiBE,QAC3Bnf,EAAAA,EAAAA,MAAA,KAAGN,UAAWe,GAAOoe,eAAevf,SAAA,CAAC,MAC7B6e,EAA0Bc,EAAAA,GAAiBE,SAItDtB,EAAaoB,EAAAA,GAAiBG,cAC3Bpf,EAAAA,EAAAA,MAAA,KAAGN,UAAWe,GAAOoe,eAAevf,SAAA,CAAC,MAC7B6e,EAA0Bc,EAAAA,GAAiBG,mBAK3Dvf,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAOqe,eAAexf,SAAEke,YAIhD,ECpId,GAAiC,mCAAjC,GAAqF,mCAArF,GAA2I,qCAA3I,GAAoM,sCAApM,GAA0P,kCAA1P,GAAqS,2BAArS,GAAwU,0BAAxU,GAA+W,+BAA/W,GAAka,sCAAla,GAAkd,4BAAld,GAA+f,mCCelf6B,GAAahgB,IAA0C,IAAD6c,EAC/D,MAAM,QAAEC,EAAO,MAAEC,EAAK,QAAEX,EAAO,YAAEY,GAAgBhd,GAC3C,iBAAEid,IAAqBpR,EAAAA,EAAAA,MAEvB,UACFqR,EAAY,GAAE,SACdC,EAAW,GAAE,cACbC,EAAgB,IAAIC,MAAqB,YACzCC,EAAc,GAAE,aAChBC,EAAe,GAAE,SACjBC,EAAW,IACJ,OAAPV,QAAO,IAAPA,EAAAA,EAAY,CAAC,EACXY,EAAe,GAAApb,OAAM4a,EAAS,KAAA5a,OAAI6a,GAClCQ,EAAO,QAAArb,OAA2B,QAA3Bua,EAAWO,EAAc,UAAE,IAAAP,OAAA,EAAhBA,EAAkBe,gBAGtCV,UAAWW,EAAiB,GAC5BV,SAAUW,EAAgB,GAC1BC,SAAUC,EAAgB,GAC1BR,SAAUS,EAAgB,GAC1BX,YAAa2C,EAAmB,GAAE,kBAClC/B,EAAoB,GACpBX,aAAcY,EAAoB,IAC7B,OAALpB,QAAK,IAALA,EAAAA,EAAU,CAAC,EAETsB,EAAa,GAAA/b,OAAMub,EAAc,KAAAvb,OAAIwb,GACrCQ,EAAI,SAAAhc,OAAY4b,GAEtB,OACIvd,EAAAA,EAAAA,MAAA,OAAKN,UAAWe,GAAe,cAAY,wBAAuBnB,SAAA,EAC9DU,EAAAA,EAAAA,MAAA,OAAKN,UAAWgB,KAAWD,IAAcnB,SAAA,EACrCO,EAAAA,EAAAA,KAACuT,GAAc,CACX1T,UAAWgB,KAAWD,GAAmB,CACrC,CAACA,IAA8Bgb,IAEnCtb,IAAK0c,EACLxJ,SAAUiJ,EACVpc,IAAI,2BAGRF,EAAAA,EAAAA,MAAA,OACIN,UAAWgB,KAAWD,GAAgB,CAClC,CAACA,IAA2Bgb,IAC7Bnc,SAAA,EAEHO,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAqBnB,SAAEyd,KACrCld,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAyBnB,SAAC,uBACxCO,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAwBnB,SAAE0d,KACxCnd,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAsBnB,UAAEgf,EAAAA,EAAAA,IAAkB3B,MACxD9c,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAsBnB,SAAEsd,UAI7CP,GACGxc,EAAAA,EAAAA,KAAC2a,GAAAA,EAAsB,KAEvBxa,EAAAA,EAAAA,MAAA,OAAKN,UAAWgB,KAAWD,IAAcnB,SAAA,EACrCO,EAAAA,EAAAA,KAACuT,GAAc,CACX1T,UAAWgB,KAAWD,GAAmB,CACrC,CAACA,IAA8Bgb,IAEnCtb,IAAKmd,EACLjK,SAAUiJ,EACVpc,IAAI,2BAGRF,EAAAA,EAAAA,MAAA,OACIN,UAAWgB,KAAWD,GAAgB,CAClC,CAACA,IAA2Bgb,IAC7Bnc,SAAA,EAEHO,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAqBnB,SAAEoe,KACrC7d,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAyBnB,SAAE+d,KACzCxd,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAwBnB,SAAEqe,KACxC9d,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAsBnB,UAC/Bgf,EAAAA,EAAAA,IAAkBgB,MAEvBzf,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAsBnB,SAAEke,YAIhD,E,wCChGd,UAAgB,eAAiB,qCAAqC,eAAiB,qCAAqC,iBAAmB,uCAAuC,kBAAoB,wCAAwC,cAAgB,oCAAoC,OAAS,6BAA6B,MAAQ,4BAA4B,mBAAqB,yCAAyC,8BAA8B,kDAAkD,WAAa,iCAAiC,QAAU,8BAA8B,iBAAiB,sCCgBxlB+B,GAAelgB,IAA4C,IAAD6c,EACnE,MAAM,QAAEC,EAAO,MAAEC,EAAK,YAAEC,GAAgBhd,GAClC,iBAAEid,IAAqBpR,EAAAA,EAAAA,MAEvB,UACFqR,EAAY,GAAE,SACdC,EAAW,GAAE,cACbC,EAAgB,IAAIC,MAAqB,YACzCC,EAAc,GAAE,aAChBC,EAAe,GAAE,SACjBC,EAAW,GAAE,eACbC,EAAiB,IACV,OAAPX,QAAO,IAAPA,EAAAA,EAAY,CAAC,EACXY,EAAe,GAAApb,OAAM4a,EAAS,KAAA5a,OAAI6a,GAClCQ,EAAO,QAAArb,OAA2B,QAA3Bua,EAAWO,EAAc,UAAE,IAAAP,OAAA,EAAhBA,EAAkBe,gBAGtCV,UAAWW,EAAiB,GAC5BV,SAAUW,EAAgB,GAC1BC,SAAUC,EAAgB,GAC1BR,SAAUS,EAAgB,GAAE,kBAC5BC,EAAoB,GACpBX,aAAcY,EAAoB,GAAE,OACpCC,EAAS,IAAIf,OACR,OAALN,QAAK,IAALA,EAAAA,EAAU,CAAC,EAETsB,EAAa,GAAA/b,OAAMub,EAAc,KAAAvb,OAAIwb,GACrCQ,EAAI,SAAAhc,OAAY4b,GAEhBK,EAAkBH,EAAOxM,KAAK0H,GAAMA,EAAE9T,OAEtCgZ,EAAgBhZ,IAAqC,IAADiZ,EACtD,MAAMC,EAAkBH,EAAgB3O,SAASpK,GAC3CmZ,EAA8D,MAAb,QAAnCF,EAAAL,EAAOQ,MAAMtF,GAAMA,EAAE9T,OAASA,WAAK,IAAAiZ,OAAA,EAAnCA,EAAqCI,QAEzD,OAAOH,GAAmBC,CAAW,EAGnCG,EAA6BtZ,IAAoC,IAADuZ,EAAAC,EAClE,MAAMH,EAA2D,QAArDE,EAA6C,QAA7CC,EAAGZ,EAAOQ,MAAMtF,GAAaA,EAAE9T,OAASA,WAAK,IAAAwZ,OAAA,EAA1CA,EAA4CH,cAAM,IAAAE,EAAAA,EAAI,GAErE,OAAOE,EAAAA,EAAAA,IAAkBJ,EAAO,EAGpC,OACIle,EAAAA,EAAAA,MAAA,OAAKN,UAAWe,GAAO8d,OAAQ,cAAY,0BAAyBjf,SAAA,EAChEU,EAAAA,EAAAA,MAAA,OAAKN,UAAWe,GAAO2b,MAAM9c,SAAA,EACzBO,EAAAA,EAAAA,KAACuT,GAAc,CACX1T,UAAWe,GAAO+d,WAClBre,IAAK0c,EACLxJ,SAAUiJ,EACVpc,IAAI,2BAGRF,EAAAA,EAAAA,MAAA,OAAKN,UAAWgB,KAAWD,GAAOmW,QAASnW,GAAO,qBAAqBnB,SAAA,EACnEO,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAOie,cAAcpf,SAAEyd,KACrCld,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAOke,kBAAkBrf,SAAC,uBACxCO,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAOme,iBAAiBtf,SAAE0d,KACxCnd,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAOoe,eAAevf,UAAEgf,EAAAA,EAAAA,IAAkB3B,MACxD9c,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAOqe,eAAexf,SAAEsd,OAGzCE,IACGjd,EAAAA,EAAAA,KAAA,OACIH,UAAWgB,KACPD,GAAOge,mBACPhe,GAAO,gCAEXN,IAAK2c,EACL5c,IAAI,oBAKfmc,GACGxc,EAAAA,EAAAA,KAAC2a,GAAAA,EAAsB,KAEvBxa,EAAAA,EAAAA,MAAA,OAAKN,UAAWe,GAAO2b,MAAM9c,SAAA,EACzBO,EAAAA,EAAAA,KAACuT,GAAc,CACX1T,UAAWe,GAAO+d,WAClBre,IAAKmd,EACLjK,SAAUiJ,EACVpc,IAAI,2BAGRF,EAAAA,EAAAA,MAAA,OAAKN,UAAWgB,KAAWD,GAAOmW,QAASnW,GAAO,mBAAmBnB,SAAA,EACjEO,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAOie,cAAcpf,SAAEoe,KACrC7d,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAOke,kBAAkBrf,SAAE+d,KACzCxd,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAOme,iBAAiBtf,SAAEqe,KAExC3d,EAAAA,EAAAA,MAAA,OAAKN,UAAWe,GAAOue,qBAAqB1f,SAAA,CACvCue,EAAaoB,EAAAA,GAAiBC,QAC3Blf,EAAAA,EAAAA,MAAA,KAAGN,UAAWe,GAAOoe,eAAevf,SAAA,CAAC,MAC7B6e,EAA0Bc,EAAAA,GAAiBC,SAItDrB,EAAaoB,EAAAA,GAAiBE,QAC3Bnf,EAAAA,EAAAA,MAAA,KAAGN,UAAWe,GAAOoe,eAAevf,SAAA,CAAC,MAC7B6e,EAA0Bc,EAAAA,GAAiBE,SAItDtB,EAAaoB,EAAAA,GAAiBG,cAC3Bpf,EAAAA,EAAAA,MAAA,KAAGN,UAAWe,GAAOoe,eAAevf,SAAA,CAAC,MAC7B6e,EAA0Bc,EAAAA,GAAiBG,mBAK3Dvf,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,GAAOqe,eAAexf,SAAEke,KAEtC3d,EAAAA,EAAAA,KAACkf,GAAAA,EAAuB,CAACrf,UAAWe,GAAOge,6BAIrD,EChHRe,GAAyB,CAC3B,CAAC3D,EAAAA,GAAqBC,mBAAoB,CACtC2D,gBAAiB,CAAE9G,EAAG,EAAG+G,EAAG,KAEhC,CAAC7D,EAAAA,GAAqBE,eAAgB,CAClC0D,gBAAiB,CAAE9G,EAAG,IAAK+G,EAAG,KAElC,CAAC7D,EAAAA,GAAqBG,cAAe,CACjCyD,gBAAiB,CAAE9G,EAAG,EAAG+G,EAAG,MAIvBC,GAA0Bxc,IAGY,IAHX,YACpCqY,EAAW,QACXC,GAC2BtY,EAC3B,MAAM,OAAEyc,EAAS,GAAE,OAAEC,EAAS,KAAOC,EAAAA,GAAAA,OAC7BvL,KAAM4H,IAAY4D,EAAAA,GAAAA,OAEpB,YAAEC,EAAW,YAAE3D,IAAgB4D,EAAAA,GAAAA,IACjC,CAAEL,SAAQC,UACV,CACIK,iBAAkBvO,IAAA,IAAC,KAAE4C,EAAI,UAAE4L,GAAWxO,EAAA,MAAM,CACxCqO,YAAiB,OAAJzL,QAAI,IAAJA,OAAI,EAAJA,EAAMyL,YACnB3D,YAAa8D,EAChB,IAIHC,GAAYhQ,EAAAA,EAAAA,UAAQ,KACtB,OAAQoL,GACJ,KAAKK,EAAAA,GAAqBC,kBACtB,OACIjc,EAAAA,EAAAA,KAACwf,GAAS,CACN5D,QAASA,EACTU,QAASA,EACTC,MAAO4D,EACP3D,YAAaA,IAGzB,KAAKR,EAAAA,GAAqBE,cACtB,OACIlc,EAAAA,EAAAA,KAACoc,GAAS,CAACE,QAASA,EAASC,MAAO4D,EAAa3D,YAAaA,IAEtE,KAAKR,EAAAA,GAAqBG,aAC1B,QACI,OACInc,EAAAA,EAAAA,KAAC0f,GAAW,CAACpD,QAASA,EAASC,MAAO4D,EAAa3D,YAAaA,IAE5E,GACD,KAEG,gBAAEoD,GAAoBD,GAAWhE,GACjCX,EAAM,GAAAlZ,OAAM8d,EAAgB9G,EAAC,KAC7BmC,EAAI,GAAAnZ,OAAM8d,EAAgBC,EAAC,KAEjC,OACI7f,EAAAA,EAAAA,KAAC6a,GAAiB,CAACG,OAAQA,EAAQC,KAAMA,EAAKxb,SACzC8gB,GACe,EAI5BT,GAAwBvc,aAAe,CAAEqY,SAAS,G,4BC5E3C,MAAM4E,GAAeld,IAA+D,IAA9D,WAAEmd,KAAe1U,GAAyBzI,EACnE,MAAMod,EAAOD,EAAaE,GAAAA,IAAYC,GAAAA,IAEtC,OAAO5gB,EAAAA,EAAAA,KAAC0gB,EAAI,CAACrH,SAAU,KAAOtN,GAAQ,ECV1C,GAA4B,uCAA5B,GAAwF,gDCU3E8U,IAAY/a,EAAAA,EAAAA,aACrB,CAACtG,EAAgCuG,KAC7B,MAAM,SAAEtG,EAAQ,UAAEI,EAAS,QAAEa,EAAO,UAAEogB,GAActhB,EACpD,OACIW,EAAAA,EAAAA,MAAA6H,EAAAA,SAAA,CAAAvI,SAAA,EACIO,EAAAA,EAAAA,KAAA,OACI+F,IAAKA,EACLgb,KAAK,SACL1H,SAAU,EACV3Y,QAASA,EACTogB,UAAWA,EACXjhB,UAAWgB,KAAWmgB,GAAmBnhB,GAAWJ,SAEnDA,KAGLO,EAAAA,EAAAA,KAAA,OAAKH,UAAWgB,KAAWmgB,GAA+BnhB,GAAWJ,SAChEA,MAEN,IAKfohB,GAAUtd,aAAe,CAAE1D,eAAW2D,GClCtC,SAAuB,8BCQVyd,GAAgB3d,IAAqE,IAApE,gBAAE4d,KAAoBnV,GAA0BzI,EAC1E,MAAMod,EAAOQ,EAAkBC,EAAAA,IAAUC,EAAAA,IACzC,OAAOphB,EAAAA,EAAAA,KAAC0gB,EAAI,CAAC7gB,UAAWe,GAAasD,MAAOnC,EAAAA,GAAMG,SAAW6J,GAAQ,EAGzEkV,GAAc1d,aAAe,CAAE2d,iBAAiB,G,iDCbhD,UAAgB,MAAQ,gCAAgC,aAAe,uCAAuC,YAAc,sCAAsC,OAAS,iCAAiC,eAAiB,0CCkBhNG,GAAkB7hB,IAC3B,MAAM,UAAEK,EAAS,MAAEoV,EAAK,QAAEf,EAAO,aAAEoN,GAAiB9hB,EAEpD,OACIW,EAAAA,EAAAA,MAACohB,GAAAA,EAAK,CAAC1hB,UAAWgB,KAAWD,GAAOkH,MAAOjI,GAAWJ,SAAA,GAC/CwV,IAASjV,EAAAA,EAAAA,KAACwhB,GAAAA,GAAK,CAAC3hB,UAAWe,GAAO6gB,iBAAiBhiB,SAAEwV,KAExD9U,EAAAA,EAAAA,MAAC0Q,GAAAA,EAAM,CAAC1J,aAAc,EAAGtH,UAAWe,GAAO8gB,OAAQ1b,SAAUsb,EAAa7hB,SAAA,EACtEO,EAAAA,EAAAA,KAAA,UAAQwG,MAAO,EAAGvB,UAAQ,EAAC0c,QAAM,EAAAliB,SAAC,WAI1B,OAAPyU,QAAO,IAAPA,OAAO,EAAPA,EAAS9C,KAAK4D,IACXhV,EAAAA,EAAAA,KAAA,UACIH,UAAWe,GAAOghB,eAElBpb,MAAOwO,EAAOxO,MAAM/G,SAEnBuV,EAAOC,OAHHD,EAAOxO,aAQxBxG,EAAAA,EAAAA,KAAC6hB,GAAY,CAAChiB,UAAWe,GAAOkhB,gBAC5B,ECzCHD,GAAeve,IAAA,IAAC,UAAEzD,GAAqCyD,EAAA,OAChEtD,EAAAA,EAAAA,KAAA,OACIH,UAAWA,EACXkiB,MAAM,6BACNpgB,MAAM,KACNC,OAAO,IACPogB,QAAQ,WACR/f,KAAK,OAAMxC,UAEXO,EAAAA,EAAAA,KAAA,QACIiiB,EAAE,+WACFhgB,KAAK,aAEP,C,yKCdV,QAAuB,0CAAvB,EAA8E,gDAA9E,EAA8I,mDAA9I,EAAmN,qDAAnN,EAAoR,+CAApR,EAAsV,sDAAtV,EAA6Z,oDAA7Z,EAAke,oDAAle,EAAgjB,6DAAhjB,EAA6nB,mDAA7nB,EAAusB,0DAAvsB,EAA+0B,oDAA/0B,EAAi5B,iDAAj5B,EAA+8B,gDAA/8B,EAA4gC,gDAA5gC,EAA2kC,kDAA3kC,EAA2oC,iDAA3oC,EAA2sC,kDAA3sC,EAA0wC,gDAA1wC,EAA80C,uDAA90C,EAAw5C,sD,8ECsBj5C,MAAMigB,GAAsBpX,EAAAA,EAAAA,IAAO,MAAPA,EAAc,MAC7CnJ,OAAOL,EAAAA,EAAAA,IAAQ,IACfM,QAAQN,EAAAA,EAAAA,IAAQ,IAChBkB,aAAc,MACdF,OAAQ,QACR6f,aAAa7gB,EAAAA,EAAAA,IAAQ,GACrB8gB,YAAargB,EAAAA,GAAMkC,eACnBpC,gBAAiBE,EAAAA,GAAMsgB,SACvBpZ,QAAS,OACTC,eAAgB,SAChBC,WAAY,aAGHmZ,GAAaxX,EAAAA,EAAAA,IAAO,MAAPA,EAAc,MACpCyX,KAAK,sBAADzgB,QAAwBR,EAAAA,EAAAA,IAAQ,IAAG,KAAAQ,QAAIR,EAAAA,EAAAA,IAAQ,IAAG,WACtDkhB,UAAW,SACXte,MAAOnC,EAAAA,GAAMkC,mBAGJwe,GAA4B3X,EAAAA,EAAAA,IAAO,MAAPA,EAAc,MACnDnJ,OAAOL,EAAAA,EAAAA,IAAQ,IACfM,QAAQN,EAAAA,EAAAA,IAAQ,IAChBkB,aAAc,MACd4f,YAAargB,EAAAA,GAAMwC,iBACnB1C,gBAAiBE,EAAAA,GAAMwC,iBACvB0E,QAAS,OACTC,eAAgB,SAChBC,WAAY,SACZ3H,SAAU,WACVyZ,MAAM3Z,EAAAA,EAAAA,IAAQ,KACdb,OAAQ,EACRiiB,OAAQ,UACR,4BAA6B,CACzBzH,MAAM3Z,EAAAA,EAAAA,IAAQ,UAITqhB,GAAwB7X,EAAAA,EAAAA,IAAO,MAAPA,EAAc,MAC/CyX,KAAK,sBAADzgB,QAAwBR,EAAAA,EAAAA,IAAQ,IAAG,KAAAQ,QAAIR,EAAAA,EAAAA,IAAQ,IAAG,WACtDkhB,UAAW,SACXte,MAAOnC,EAAAA,GAAMG,UAGJ0gB,EAAYtf,IAAA,IACrB8G,KAAMsW,EAAI,MACVmC,EAAK,UACLC,EACA,cAAe1W,GAMlB9I,EAAA,OACGnD,EAAAA,EAAAA,MAAA,OAAKN,UAAWe,EAAoB,cAAawL,EAAW3M,SAAA,EACxDO,EAAAA,EAAAA,KAAC0gB,EAAI,CAAC7gB,UAAWe,KACjBZ,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,EAAmBmM,KAAI,QAAAjL,OAAU+gB,GAAK/gB,OAAGghB,EAAS,IAAAhhB,OAAOghB,GAAc,IAAKrjB,UACtFO,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,EAAkBnB,UAAEgf,EAAAA,EAAAA,IAAkBoE,EAAOC,SAE7D,EAgSV,EAlRwChR,IASY,IAADiR,EAAA,IATV,YACrC5C,EAAW,MACX6C,EAAK,SACL/d,EAAQ,SACRge,EAAQ,kBACRC,GAAoB,EAAI,cACxBC,EAAa,GACbC,EAAE,QACFC,GAC4BvR,EAC5B,MAAOwR,EAAgBC,IAAqB1T,EAAAA,EAAAA,WAAS,IAC/C,iBAAE4M,IAAqBpR,EAAAA,EAAAA,MAEvBmY,IAAiBjT,EAAAA,EAAAA,UAAQ,IACtB4P,EAAYvD,cAEVuD,EAAYvD,cACd6G,QACGC,IAAA,IAAC,oBAAEC,EAAmB,cAAEC,GAAeF,EAAA,OACX,IAAxBC,GACAjT,EAAAA,GAAamT,MACTC,IAAA,IAAC,KAAExS,GAAMwS,EAAA,OAAKxS,EAAKyS,gBAAkBH,EAAcG,aAAa,GACnE,IAER3S,KAAI4S,IAAA,IAAC,cAAEJ,GAAeI,EAAA,OAAKJ,CAAa,IAVN,IAWxC,CAACzD,EAAYvD,gBAsBhB,IAAIqH,GACAC,GACAC,GACAC,GACJ,MAAM3X,IAASC,EAAAA,EAAAA,MAEG,QAAlBqW,EAAA5C,EAAYvC,cAAM,IAAAmF,GAAlBA,EAAoBsB,SAASxB,IACrBA,EAAM7d,OAASoa,EAAAA,GAAiBE,MACX,KAAjBuD,EAAMxE,SACN8F,GAAYtB,EAAMxE,OACM,KAApBwE,EAAMC,YACNsB,GAAqBvB,EAAMC,YAInCD,EAAM7d,OAASoa,EAAAA,GAAiBC,MACX,KAAjBwD,EAAMxE,SACN4F,GAAYpB,EAAMxE,QAGtBwE,EAAM7d,OAASoa,EAAAA,GAAiBG,YACX,KAAjBsD,EAAMxE,SACN6F,GAAcrB,EAAMxE,OAE5B,IAGJ,MA0FMiG,MAAYC,EAAAA,EAAAA,MAElB,OACIvkB,EAAAA,EAAAA,KAAA,OAEIH,UAAWgB,IAAWD,EAAa,CAAE,CAACA,GAAuB0iB,IAAkB7jB,UAE/EU,EAAAA,EAAAA,MAAA,OACIN,UAAWgB,IAAWD,EAAsB,CACxC,CAACuiB,GAA0BA,IAC5B1jB,SAAA,EAEHO,EAAAA,EAAAA,KAAA,OAAKH,UAAWe,EAAuBnB,UACnCO,EAAAA,EAAAA,KAACuT,EAAAA,EAAc,CACX1T,UAAWe,EACXN,IAAgB,OAAX6f,QAAW,IAAXA,OAAW,EAAXA,EAAanD,SAClB3c,IAAI,yBACJmT,SAAUiJ,OAGlBtc,EAAAA,EAAAA,MAAA,OAAKN,UAAWe,EAAwBnB,SAAA,EACpCU,EAAAA,EAAAA,MAAA,KAAGN,UAAWgB,IAAWD,EAAuBA,GAAmBnB,SAAA,CAC9D0gB,EAAYzD,UAAU,IAAEyD,EAAYxD,aAEzC3c,EAAAA,EAAAA,KAAA,KAAGH,UAAWgB,IAAWD,EAAuBA,GAAmBnB,SAC9D0gB,EAAY5C,YAEjBvd,EAAAA,EAAAA,KAACwkB,EAAAA,EAAgB,CACbtZ,QAAmB,OAAXiV,QAAW,IAAXA,OAAW,EAAXA,EAAajV,SAAU,EAC/BC,kBAA6B,OAAXgV,QAAW,IAAXA,OAAW,EAAXA,EAAahV,mBAAoB,IAEtD8Y,KACGjkB,EAAAA,EAAAA,KAAC4iB,EAAS,CACNxY,KAAMqa,EAAAA,EACN5B,MAAOoB,GACP,cAAY,4CAGnBC,KACGlkB,EAAAA,EAAAA,KAAC4iB,EAAS,CACNxY,KAAMsa,EAAAA,EACN7B,MAAOqB,GACP,cAAY,8CAGnBC,KACGnkB,EAAAA,EAAAA,KAAC4iB,EAAS,CACNxY,KAAMua,EAAAA,IACN9B,MAAOsB,GACPrB,UAAWsB,GACX,cAAY,6CAGpBpkB,EAAAA,EAAAA,KAAA,OAAKH,UAAWe,EAAmBnB,UAC/BU,EAAAA,EAAAA,MAAA,KACIN,UAAWe,EACXmM,KAjMW6X,EAACxB,EAAaC,KAC7C,MAAMwB,EAAU,UAAA/iB,OAAaqe,EAAYpD,cACnCjH,EAAmB,GAUzB,GARIsN,GACAtN,EAAOgP,KAAK,MAADhjB,OAAOshB,IAGlBC,GACAvN,EAAOgP,KAAK,WAADhjB,OAAYuhB,IAGvBvN,EAAOzB,OAAS,EAAG,CAEnB,MADsB,GAAAvS,OAAM+iB,EAAU,KAAA/iB,OAAIgU,EAAOiP,KAAK,KAE1D,CAEA,OAAOF,CAAU,EAgLSD,CAA2BxB,EAAIC,GACrC,cAAY,qCAAoC5jB,SAAA,EAEhDO,EAAAA,EAAAA,KAACglB,EAAAA,EAAS,CAACnlB,UAAWe,KAEtBZ,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,EAAkBnB,SAAE0gB,EAAYpD,oBAGrD,CAACkH,GAAWC,GAAaC,IAAW/S,KACjC,CAAC6T,EAAGjC,KACCiC,IAEGjlB,EAAAA,EAAAA,KAAA,OAAiBH,UAAWe,EAAoBnB,UAC5CO,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,EAAkBnB,SAAC,OAD3BujB,KAMrBE,GAAqB/C,EAAYvD,gBAC9Bzc,EAAAA,EAAAA,MAAA6H,EAAAA,SAAA,CAAAvI,SAAA,EACIO,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,EAAyBnB,SAAC,oBAExCO,EAAAA,EAAAA,KAAA,OACIH,UAAWgB,IAAWD,EAAuB,CACzC,CAACA,GAAoC0iB,IAEzC,cAAY,oDAAmD7jB,SA5KhEylB,MACvB,IAAIC,EACJ,IAAK7B,GACGE,GAAenP,QAAU,EAAG,CAC5B,GAAI5H,KAAWE,EAAAA,EAAiBC,OAsB5B,OArBAuY,GACIhlB,EAAAA,EAAAA,MAAA6H,EAAAA,SAAA,CAAAvI,SAAA,CACK+jB,GAAe4B,MAAM,EAAG,GAAGhU,KAAI,CAACiU,EAAOrC,KACpChjB,EAAAA,EAAAA,KAACkiB,EAAmB,CAEhBriB,UAAWe,EACXJ,MAAO,CAAEC,OAAQuiB,EAAO/H,KAAc,GAAR+H,GAAavjB,UAE3CO,EAAAA,EAAAA,KAACsiB,EAAU,CAAA7iB,SAAE4lB,KAJRA,MAObrlB,EAAAA,EAAAA,KAACyiB,EAAyB,CACtB,cAAY,8BACZ/hB,QAASA,IAAY6iB,GAAmB8B,IAAWA,IAAO5lB,UAE1DU,EAAAA,EAAAA,MAACwiB,EAAqB,CAAAljB,SAAA,CAAC,IACjB+jB,GAAenP,OAAS,UAKnC8Q,EAEX,GAAI3B,GAAenP,QAAU,GAsBzB,OArBA8Q,GACIhlB,EAAAA,EAAAA,MAAA6H,EAAAA,SAAA,CAAAvI,SAAA,CACK+jB,GAAe4B,MAAM,EAAG,GAAGhU,KAAI,CAACiU,EAAOrC,KACpChjB,EAAAA,EAAAA,KAACkiB,EAAmB,CAEhBriB,UAAWe,EACXJ,MAAO,CAAEC,OAAQuiB,EAAO/H,KAAc,GAAR+H,GAAavjB,UAE3CO,EAAAA,EAAAA,KAACsiB,EAAU,CAAA7iB,SAAE4lB,KAJRA,MAObrlB,EAAAA,EAAAA,KAACyiB,EAAyB,CACtB,cAAY,+BACZ/hB,QAASA,IAAY6iB,GAAmB8B,IAAWA,IAAO5lB,UAE1DU,EAAAA,EAAAA,MAACwiB,EAAqB,CAAAljB,SAAA,CAAC,IACjB+jB,GAAenP,OAAS,UAKnC8Q,CAEf,CAEJ,OAAI7B,GACA6B,GACIhlB,EAAAA,EAAAA,MAAA6H,EAAAA,SAAA,CAAAvI,SAAA,CACK+jB,GAAepS,KAAKiU,IACjBrlB,EAAAA,EAAAA,KAACkiB,EAAmB,CAAariB,UAAWe,EAA4BnB,UACpEO,EAAAA,EAAAA,KAACsiB,EAAU,CAAA7iB,SAAE4lB,KADSA,MAI9BrlB,EAAAA,EAAAA,KAACyiB,EAAyB,CACtBjiB,MAAO,CAAEgB,SAAU,UACnB,cAAY,yBACZd,QAASA,IAAY6iB,GAAmB8B,IAAWA,IAAO5lB,UAE1DO,EAAAA,EAAAA,KAAC2iB,EAAqB,CAAAljB,UAClBO,EAAAA,EAAAA,KAACslB,EAAAA,EAAc,CAAC9kB,MAAO,CAAE0D,MAAOnC,EAAAA,GAAMG,gBAK/CijB,IAGPnlB,EAAAA,EAAAA,KAAAgI,EAAAA,SAAA,CAAAvI,SACK+jB,GAAepS,KAAI,CAACiU,EAAOrC,KACxBhjB,EAAAA,EAAAA,KAACkiB,EAAmB,CAEhBriB,UAAWe,EACXJ,MAAO,CAAEC,OAAQuiB,EAAO/H,KAAc,GAAR+H,GAAavjB,UAE3CO,EAAAA,EAAAA,KAACsiB,EAAU,CAAA7iB,SAAE4lB,KAJRA,MAOd,EAwFkBH,QAIZjC,IACG9iB,EAAAA,EAAAA,MAACgM,EAAAA,GAAY,CACTtM,UAAWe,EACXoE,KAAK,SACL3D,SAAU,GACVyC,QAASC,EAAAA,EAAcW,KACvBO,SAAUqf,IAAWrf,EACrBmH,WAAW,qCACX1L,QAASA,KACLuiB,EAAS9C,EAAa6C,EAAM,EAC9BvjB,SAAA,EAEFO,EAAAA,EAAAA,KAACulB,EAAAA,IAAU,KACXvlB,EAAAA,EAAAA,KAAA,KAAGH,UAAWe,EAAwBnB,SAAC,qBAjGlD0gB,EAAYrf,GAsGf,C,2DC5Wd,MAgEA,EAhEiCtB,IAC7BQ,EAAAA,EAAAA,KAAA,OAAK+hB,MAAM,6BAA6BjJ,EAAG,EAAG+G,EAAG,EAAGmC,QAAQ,yBAA0BxiB,EAAKC,UACvFU,EAAAA,EAAAA,MAAA,KAAG,YAAU,qBAAoBV,SAAA,EAC7BO,EAAAA,EAAAA,KAAA,QAAMiC,KAAK,UAAUggB,EAAE,0BAA0B,YAAU,iBAC3DjiB,EAAAA,EAAAA,KAAA,KAAG,YAAU,WAAUP,UACnBO,EAAAA,EAAAA,KAAA,QACIiC,KAAK,OACLggB,EAAE,gMACF,YAAU,eAGlBjiB,EAAAA,EAAAA,KAAA,KAAG,YAAU,WAAUP,UACnBO,EAAAA,EAAAA,KAAA,QACIiC,KAAK,OACLggB,EAAE,6TACF,YAAU,eAGlBjiB,EAAAA,EAAAA,KAAA,KAAG,YAAU,WAAUP,UACnBO,EAAAA,EAAAA,KAAA,QACIiC,KAAK,OACLggB,EAAE,+IACF,YAAU,eAGlBjiB,EAAAA,EAAAA,KAAA,QACIiC,KAAK,UACLggB,EAAE,gmGAEN9hB,EAAAA,EAAAA,MAAA,KAAG8B,KAAK,UAAU,YAAU,WAAUxC,SAAA,EAClCO,EAAAA,EAAAA,KAAA,QACIiiB,EAAE,+EACF,YAAU,aAEdjiB,EAAAA,EAAAA,KAAA,QACIiiB,EAAE,4SACF,YAAU,aAEdjiB,EAAAA,EAAAA,KAAA,QACIiiB,EAAE,6FACF,YAAU,aAEdjiB,EAAAA,EAAAA,KAAA,QACIiiB,EAAE,sXACF,YAAU,aAEdjiB,EAAAA,EAAAA,KAAA,QAAMiiB,EAAE,wCAAwC,YAAU,aAC1DjiB,EAAAA,EAAAA,KAAA,QACIiiB,EAAE,6FACF,YAAU,aAEdjiB,EAAAA,EAAAA,KAAA,QACIiiB,EAAE,0nBACF,YAAU,gBAGlBjiB,EAAAA,EAAAA,KAAA,QACIiC,KAAK,UACLggB,EAAE,0LACF,YAAU,kB,gDC5D1B,SAAgB,eAAiB,wCAAwC,qBAAuB,8CAA8C,qBAAuB,8CAA8C,uBAAyB,gDAAgD,wBAA0B,iDAAiD,2BAA6B,oDAAoD,sBAAwB,+CAA+C,6BAA+B,sDAAsD,iCAAmC,0DAA0D,sCAAwC,+DAA+D,6BAA+B,sDAAsD,4BAA8B,qDAAqD,iCAAmC,2D,kHCgBn+B,MA+HA,EA/HwBziB,IACpB,MAAM,iBAAEgmB,GAAmB,GAAUhmB,GAC/B,WAAEimB,EAAa,KAAOxF,EAAAA,EAAAA,MACtByF,GAAWC,EAAAA,EAAAA,MACXC,GAAWC,EAAAA,EAAAA,OAEX,aACFC,EAAY,gBACZC,EAAe,WACfC,EAAU,sBACVC,EAAqB,yBACrBC,EAAwB,iBACxBC,IACAC,EAAAA,EAAAA,IAAgBX,GAwBpB,OAAKM,GAGD5lB,EAAAA,EAAAA,MAAA,OAAKN,UAAWe,EAAOylB,eAAe5mB,SAAA,EAClCU,EAAAA,EAAAA,MAAA,OAAKN,UAAWe,EAAO0lB,qBAAsB5lB,QA1B9B6lB,KACfb,EAASc,SAASpX,SAAS,UAC3BwW,EAAS,aACFF,EAASc,SAASpX,SAAS,gCAClCwW,EAAS,iCACb,EAqByEnmB,SAAA,EACjEO,EAAAA,EAAAA,KAACymB,EAAAA,EAAI,CAAC5mB,UAAWe,EAAO8lB,uBAAwB,WACvClB,EAAmB,mBAAqB,8BAGrDxlB,EAAAA,EAAAA,KAACwL,EAAAA,EAAa,CACV3L,UAAWe,EAAO+lB,uBAClBjb,iBAAkB9K,EAAOgmB,wBAAwBnnB,UAEjDO,EAAAA,EAAAA,KAAC2L,EAAAA,EAAO,CAACC,GAAIib,EAAAA,GAAYC,GAAInhB,KAAM,EAAGhC,WAAYojB,EAAAA,GAAWC,SAASvnB,SACrD,OAAZqmB,QAAY,IAAZA,OAAY,EAAZA,EAAcmB,WAIvBjnB,EAAAA,EAAAA,KAAA,OACIH,UAAWe,EAAOsmB,QAClBxmB,QAlCc0H,IACtB,MAAM3B,EAAS2B,EAAM3B,OACf0gB,EAAM1gB,EAAO2gB,aAAa,QAEhC,GAAuB,MAAnB3gB,EAAO4gB,SAAmBF,EAAK,CAG/B,IAFoB1gB,EAAO2gB,aAAa,UAEtB,OAElBhf,EAAMkf,iBACN1B,EAASuB,EACb,GAwBQ5P,wBAAyB,CAAEC,OAAQuO,MAG1B,OAAZD,QAAY,IAAZA,OAAY,EAAZA,EAAcyB,mBACXpnB,EAAAA,EAAAA,MAAA,OAAKN,UAAWe,EAAOqlB,sBAAsBxmB,SAAA,EACzCO,EAAAA,EAAAA,KAAA,MAAIH,UAAWe,EAAO4mB,6BAA6B/nB,SAAC,oDAGpDU,EAAAA,EAAAA,MAAA,OAAKN,UAAWe,EAAO6mB,iCAAiChoB,SAAA,EAClDymB,IACuB,OAArBD,QAAqB,IAArBA,OAAqB,EAArBA,EAAuB7U,KACnB,CAAC+O,EAA0B6C,KACvBhjB,EAAAA,EAAAA,KAAA,OAAKH,UAAWe,EAAO8mB,6BAA6BjoB,UAChDO,EAAAA,EAAAA,KAAC2nB,EAAAA,GAAwB,CAErBxH,YAAaA,EACb6C,MAAOA,EACPG,cAAeviB,EAAOgnB,4BACtB1E,mBAAmB,EACnBje,UAAU,EACVme,GAAI0C,EAAa1C,GACjBC,QAASyC,EAAazC,SAPjBlD,EAAY0H,4BAYpC3B,IACGlmB,EAAAA,EAAAA,KAAA,OAAKH,UAAWe,EAAO8mB,6BAA6BjoB,UAChDO,EAAAA,EAAAA,KAAC2nB,EAAAA,GAAwB,CAErBxH,YAAa2H,EAAAA,GACb9E,MAAO,EACPG,cAAeviB,EAAOgnB,4BACtB1E,mBAAmB,EACnBje,UAAU,EACVme,GAAI0C,EAAa1C,GACjBC,QAASyC,EAAazC,SAPjByE,EAAAA,GAAqBhnB,MAYrCqlB,IACGnmB,EAAAA,EAAAA,KAAA,OAAKH,UAAWe,EAAO8mB,6BAA6BjoB,UAChDO,EAAAA,EAAAA,KAAC2nB,EAAAA,GAAwB,CAErBxH,YAAagG,EACbnD,MAAO,EACPG,cAAeviB,EAAOgnB,4BACtB1E,mBAAmB,EACnBje,UAAU,EACVme,GAAI0C,EAAa1C,GACjBC,QAASyC,EAAazC,SAPjB8C,EAAiB0B,+BAe7C7B,IACGhmB,EAAAA,EAAAA,KAAA,OACIH,UAAWe,EAAOmnB,2BAClBxQ,wBAAyB,CAAEC,OAAQwO,SAnFtBhmB,EAAAA,EAAAA,KAAC2a,EAAAA,EAAsB,GAsF1C,C,uCC5IThO,EAAgB,SAAhBA,GAAgB,OAAhBA,EAAgB,gBAAhBA,EAAgB,gBAAhBA,EAAgB,kBAAhBA,CAAgB,EAAhBA,GAAgB,IAMrB,S,+DCJO,MAAMqb,EAAe,iBAEfF,EAAoC,CAC7ChnB,GAAI,uCACJ+mB,sBAAuB,GACvBnL,UAAW,OACXC,SAAU,UACVI,aAAc,0BACdD,YAAa,GACbY,kBAAmB,GACnBV,SAAU,GACViL,iBAAiB,EACjBC,gBAAgB,EAChB3K,SAAU,qBACVK,OAAQ,CACJ,CACIkF,UAAW,GACXzE,OAAQ,qBACRrZ,KAAM,IAGd4X,cAAe,IAGNuL,EAAqB,CAC9BlB,MAAO,GACPmB,gBAAiB,GACjBhF,GAAI,GACJC,QAAS,GACTgF,mBAAoB,IAGXC,EAAsBA,CAC/BC,EACAC,KAEAL,EAAmBI,GAAYE,EAAaD,EAAQ,EAG3CC,EAAgBD,IACzB,IAAKA,EAAS,MAAO,GACrB,MAAMxF,EAAQwF,EAAQE,QAAQ,KAE9B,OAAOF,EACFG,UAAU3F,EAAQ,EAAGwF,EAAQnU,QAC7BuU,QAAQ,OAAQ,IAChBC,MAAM,C,0KCxCR,MAAMC,EAAWA,KACpB,MAAOC,EAAaC,IAAkBnZ,EAAAA,EAAAA,WAAS,GAK/C,MAAO,CAAEkZ,cAAaE,UAHJA,IAAYD,GAAe,GAGZE,UAFfA,IAAYF,GAAe,GAED,ECJnCG,EAAsBA,KAC/B,MAAOC,EAAoBC,IAA0BxZ,EAAAA,EAAAA,UAA6B,CAC9EyZ,cAAc,EACdC,cAAe,GACfC,wBAAoBhmB,IAgBxB,MAAO,IAAK4lB,EAAoBK,sBAbDpE,IAC3B,MACMqE,EADmB,CAAC,MACSta,SAASiW,GAE5CgE,EAAuB,CACnBC,aAAcI,EACdH,cAAelE,EACfmE,mBAAoBE,EAAS,GAAA5nB,OACpBujB,EAAK,qDACR7hB,GACR,EAGiD,E,0BCpBpD,MAAMmmB,EAAmBA,KAOrB,CAAEC,UANQC,EAAAA,EAAAA,GAAc,cAAD/nB,OAAegoB,EAAAA,EAAQ9mB,YAAY+mB,OAAOC,GAAE,QAMvDC,UALFJ,EAAAA,EAAAA,GAAc,cAAD/nB,OACZgoB,EAAAA,EAAQ9mB,YAAY+mB,OAAOC,GAAE,uBAAAloB,OAAsBgoB,EAAAA,EAAQ9mB,YAAY+mB,OAAOG,GAAE,QAIrEC,WAFXN,EAAAA,EAAAA,GAAc,cAAD/nB,OAAegoB,EAAAA,EAAQ9mB,YAAY+mB,OAAOG,GAAE,UCflEE,EAAqBA,CAAC1oB,EAAaqQ,KAC5C,MAAMsY,EAAeC,SAASC,eAAe,UAEzCF,GACAA,EAAaG,SAAS,CAClB9oB,IAAKA,EAAMqQ,EACX0Y,SAAU,UAElB,ECNSC,EACTC,IAEA,MAAM5kB,GAAMoS,EAAAA,EAAAA,QAAU,OAChB,eAAEyS,GAAmBC,OAoB3B,OAlBAC,EAAAA,EAAAA,kBAAgB,KACZ,MAAMC,EAAa,OAAHhlB,QAAG,IAAHA,OAAG,EAAHA,EAAKsS,QAErB,IAAK0S,EACD,OAGJ,MAAMC,EAAW,IAAIJ,GAAgBK,IACjCN,EAASI,EAASE,EAAQ,GAAG,IAKjC,OAFAD,EAASE,QAAQH,GAEV,KACHC,EAASG,YAAY,CACxB,GACF,CAACR,EAAU5kB,IAEPA,CAAG,EC1BgC,IAEzCqlB,EAAU,SAAVA,GAAU,OAAVA,EAAAA,EAAU,+BAAVA,EAAAA,EAAU,2BAAVA,EAAAA,EAAU,iBAAVA,CAAU,EAAVA,GAAU,IAMVC,EAAS,SAATA,GAAS,OAATA,EAAS,eAATA,EAAS,iBAATA,CAAS,EAATA,GAAS,IAgBd,MAAMC,EAAiC,CACnCC,oBAAoB,EACpBC,aAAa,EACbC,WAAY,MAGVC,EAAqBA,CAACrG,EAAyBsG,KACjD,OAAQA,EAAO3mB,MACX,KAAKomB,EAAWQ,aACZ,MAAO,IACAvG,EACHkG,oBAAoB,EACpBC,aAAa,EACbC,WAAY,MAEpB,KAAKL,EAAWS,WACZ,MAAO,IAAKxG,EAAOkG,oBAAoB,EAAMC,aAAa,EAAOC,YAAY,GACjF,KAAKL,EAAWU,MACZ,MAAO,IAAKR,GAChB,QACI,OAAOjG,EACf,EAGS0G,EAAkBzrB,IAC3B,MAAO0rB,EAAkBC,IAAYC,EAAAA,EAAAA,YAAWR,EAAoBJ,GAuBpE,OArBAlT,EAAAA,EAAAA,YAAU,KACN,GAAI9X,EAAK,CACL,MAAM6rB,EAAQ,IAAIC,MAEZC,EAASA,IAAYJ,EAAS,CAAEjnB,KAAMomB,EAAWQ,eACjDhY,EAAUA,IAAYqY,EAAS,CAAEjnB,KAAMomB,EAAWS,aAOxD,OALAM,EAAMG,iBAAiBjB,EAAUkB,QAASF,GAC1CF,EAAMG,iBAAiBjB,EAAUmB,SAAU5Y,GAE3CuY,EAAM7rB,IAAMA,EAEL,KACH6rB,EAAMM,oBAAoBpB,EAAUkB,QAASF,GAC7CF,EAAMM,oBAAoBpB,EAAUmB,SAAU5Y,EAAQ,CAE9D,CAEA,MAAO,IAAYqY,EAAS,CAAEjnB,KAAMomB,EAAWU,OAAQ,GACxD,CAACxrB,IAEG0rB,CAAgB,ECxEQ,IAE9BU,EAAmB,SAAnBA,GAAmB,OAAnBA,EAAAA,EAAmB,+DAAnBA,EAAAA,EAAmB,2CAAnBA,EAAAA,EAAmB,+CAAnBA,CAAmB,EAAnBA,GAAmB,IAyBxB,MAAMpB,EAA+B,CACjCtX,WAAY,GACZ2Y,gBAAgB,GAGdC,EAAsBA,CAACvH,EAAuBsG,KAChD,OAAQA,EAAO3mB,MACX,KAAK0nB,EAAoBG,6BACrB,MAAO,IACAxH,EACHrR,WAAY2X,EAAOmB,SAE3B,KAAKJ,EAAoBK,mBACrB,MAAO,IACA1H,EACHsH,eAAgBhB,EAAOmB,QAAQH,eAC/B3Y,WAAY2X,EAAOmB,QAAQ9Y,YAGnC,KAAK0Y,EAAoBM,qBACrB,MAAO,IACA3H,EACHsH,eAAgBhB,EAAOmB,SAE/B,QACI,OAAOzH,EACf,EAGS4H,EAAuBA,KAChC,MAAO5H,EAAO4G,IAAYC,EAAAA,EAAAA,YAAWU,EAAqBtB,GAmB1D,MAAO,CAACjG,EAN4B,CAChC6H,0BAZ+BlZ,IAC/BiY,EAAS,CAAEjnB,KAAM0nB,EAAoBG,6BAA8BC,QAAS9Y,GAAa,EAYzFmZ,kBATuBL,IACvBb,EAAS,CAAEjnB,KAAM0nB,EAAoBK,mBAAoBD,WAAU,EASnEM,kBANuBC,GACvBpB,EAAS,CAAEjnB,KAAM0nB,EAAoBM,qBAAsBF,QAASO,KAQjD,E,eCzEpB,MAAMC,EAAwBxsB,IACjC,MAAM8kB,GAAWC,EAAAA,EAAAA,MAejB,OAbsB0H,EAAAA,EAAAA,cACjBnlB,IACG,MAEMolB,EAA2B,kBAAP1sB,EAAkBA,EAAG2sB,WAAa3sB,EAF/C,CAAC,SAILsO,SAAShH,EAAMslB,MACpB9H,EAAS4H,EACb,GAEJ,CAAC1sB,GAGe,E,eCTjB,MAAM6sB,EAAeA,CACxBC,EACAC,KAEA,MAAOC,EAAWC,IAAgBle,EAAAA,EAAAA,UAAqB,KAChDme,IAAeC,EAAAA,EAAAA,MAEhBC,GAAiBX,EAAAA,EAAAA,cAAYY,UAC/B,MAAMC,EAAmBR,EAAcxc,KAAI+c,UACvC,MAAQzZ,KAAMoZ,SAAoBE,EAAY,CAC1CK,eACArpB,KAAM6oB,IAEV,MAAO,CAAEQ,eAAcP,YAAW,IAGhChI,QAAqBwI,QAAQC,IAAIH,GAEvCL,EAAajI,EAAa,GAC3B,CAAC8H,EAAeC,EAAkBG,IAMrC,OAJA5V,EAAAA,EAAAA,YAAU,KACN8V,GAAgB,GACjB,IAEI,CAAEJ,YAAWI,iBAAgB,E,gDCRxC,MAAMM,EAAyC,CAC3C,CAACC,EAAAA,GAAkBxH,OAAQ,QAC3B,CAACwH,EAAAA,GAAkBlH,iBAAkB,kBACrC,CAACkH,EAAAA,GAAkBrL,IAAK,KACxB,CAACqL,EAAAA,GAAkBpL,SAAU,UAC7B,CAACoL,EAAAA,GAAkBpG,oBAAqB,sBAG/BjC,EAAmBsI,IAAwD,IAADprB,EAAAqrB,EACnF,MAAO3I,EAAY4I,IAAiB/e,EAAAA,EAAAA,aAC7BiW,EAAc+I,IAAmBhf,EAAAA,EAAAA,UAA8B,OAC9D6E,KAAMuR,IAA0B6I,EAAAA,EAAAA,MAClC5I,EACyE,QADjD5iB,EACS,KAAb,OAArB2iB,QAAqB,IAArBA,OAAqB,EAArBA,EAAuB5R,cAA0C7Q,IAA1ByiB,SAAmC,IAAA3iB,GAAAA,GAEzE,gBAAEyiB,IAAoBgJ,EAAAA,EAAAA,IACxB,CAAEC,KAAMN,GACR,CACIO,MAAOP,EACPrO,iBAAkBvO,IAAA,IAAC,KAAE4C,GAAM5C,EAAA,MAAM,CAAEiU,gBAAqB,OAAJrR,QAAI,IAAJA,OAAI,EAAJA,EAAMwS,QAAS,KAInExS,KAAMyR,IAAqB+I,EAAAA,EAAAA,GACC,QADyBP,EAC7C,OAAZ7I,QAAY,IAAZA,OAAY,EAAZA,EAAcuC,0BAAkB,IAAAsG,EAAAA,EAAI,GACpC,CACIM,UACyCzrB,KAAzB,OAAZsiB,QAAY,IAAZA,OAAY,EAAZA,EAAcuC,qBACuB,MAAzB,OAAZvC,QAAY,IAAZA,OAAY,EAAZA,EAAcuC,sBAsC1B,OAxBAjQ,EAAAA,EAAAA,YAAU,KACN,GAAI2N,EAAiB,CACjB,MAAMoJ,EAAWpJ,EAAgB7V,MAAM8X,EAAAA,IAEnCmH,IACAA,EAAS9K,SAASmE,IACd4G,OAAOnE,QAAQuD,GAAoBnK,SAAQX,IAA2B,IAAzB2L,EAAU9G,GAAS7E,EACxD8E,EAAQ8G,cAAclgB,SAASigB,EAASC,iBACxChH,EAAAA,EAAAA,IAAoBC,EAAUC,EAClC,GACF,IAENqG,EAAgB,CACZ5H,MAAOkB,EAAAA,GAAmBlB,MAC1BM,gBAAsE,SAArDY,EAAAA,GAAmBC,gBAAgBkH,cACpDlM,GAAI+E,EAAAA,GAAmB/E,GACvBC,QAAS8E,EAAAA,GAAmB9E,QAC5BgF,mBAAoBF,EAAAA,GAAmBE,qBA3BhCtC,KACnB,MAAMwJ,EAAYjF,SAASkF,cAAc,OACzCD,EAAUjX,UAAYyN,EACtB,MAAMC,EAAauJ,EAAUE,cAAc,YAEvCzJ,GACA4I,EAAc5I,EAAW1N,UAC7B,EAsBQoX,CAAc3J,GAEtB,IACD,CAACA,IAEG,CACHD,eACAC,kBACAC,aACAC,wBACAC,2BACAC,mBACH,E,yBChGE,MAAMzZ,EAAiBA,KAC1B,MAAM,MAAE/K,IAAUguB,EAAAA,EAAAA,OACXljB,EAAQmjB,IAAa/f,EAAAA,EAAAA,UAA2BggB,EAAgBluB,IAMvE,OAJAyW,EAAAA,EAAAA,YAAU,KACNwX,EAAUC,EAAgBluB,GAAO,GAClC,CAACA,IAEG8K,CAAM,EAGXojB,EAAmBluB,GACjBA,GAAS,IACFgL,EAAAA,EAAiBC,OAExBjL,GAAS,KAAOA,GAAS,IAClBgL,EAAAA,EAAiBmjB,OAErBnjB,EAAAA,EAAiBojB,QCJfC,EAAiBA,CAC1BC,EACAC,KAEA,MAAOC,EAAYC,IAAiBvgB,EAAAA,EAAAA,UAAiB,IAC9CwgB,EAAcC,IAAmBzgB,EAAAA,EAAAA,UAAiB,MAClD0gB,EAAUC,IAAe3gB,EAAAA,EAAAA,WAAkB,IAC3C4gB,EAAcC,IAAmB7gB,EAAAA,EAAAA,UAAuB,CAAEiJ,EAAG,EAAG+G,EAAG,KACnE8Q,EAAUC,IAAe/gB,EAAAA,EAAAA,UAA8B,WACvD6S,EAAQmO,IAAahhB,EAAAA,EAAAA,UAA0C,WAqEtE,MAAO,CACHsgB,aACAE,eACAhV,MAvEyB,IAAfgV,EAwEVS,SAtEaA,KACbV,GAAeU,GACPA,EAAW,EAAUA,EAAW,EAC7BA,GACT,EAmEFC,SAhEaA,KACbX,GAAeU,GACPA,EAAWb,EAAsBa,EAAW,EACzCA,GACT,EA6DFE,OA1DWA,KACXV,GAAiBW,GACTA,GAAe,IACRA,EAAc,GAElBA,IAEXL,EAAY,UACZC,EAAU,OAAO,EAmDjBK,QAhDYA,KACZZ,GAAiBW,IACb,MAAME,EAAaF,EAAc,GACjC,OAAIE,GAAc,KACK,MAAfA,IACAP,EAAY,UACZC,EAAU,YAEPM,GAEJF,CAAW,GACpB,EAsCFG,gBAnCqBhpB,IACrBA,EAAMkf,iBAENkJ,GAAY,GACZK,EAAUR,EAAe,IAAM,WAAa,WAC5CK,EAAgB,CAAE5X,EAAG1Q,EAAMipB,QAASxR,EAAGzX,EAAMkpB,SAAU,EA+BvDC,gBA5BqBnpB,IACrB,GAAKmoB,EAAL,CAEA,GAAIL,EAAa7X,QAAS,CACtB,MAAMmZ,EAASppB,EAAMipB,QAAUZ,EAAa3X,EACtC2Y,EAASrpB,EAAMkpB,QAAUb,EAAa5Q,EAE5CqQ,EAAa7X,QAAQqZ,YAAcF,EACnCtB,EAAa7X,QAAQsZ,WAAaF,CACtC,CAEAf,EAAgB,CAAE5X,EAAG1Q,EAAMipB,QAASxR,EAAGzX,EAAMkpB,SAVxB,CAUkC,EAkBvDM,cAfkBA,KAClBpB,GAAY,GACZK,EAAUR,EAAe,IAAM,OAAS,UAAU,EAclDM,WACAjO,SACH,E,eC9FE,MAAMmP,EAAkBA,KAC3B,MAAMC,GAAMC,EAAAA,EAAAA,YAAWC,EAAAA,IACjB,mBAAEC,EAAqB,GAAE,aAAEC,EAAe,IAAOJ,EACjDK,EAAkB,qEAYxB,MAAO,CACHA,kBACAC,YAZA,yJAaAC,eAXmB,CACnBC,SAAUL,EACVM,YAAaL,EACbM,SAAUL,EACVM,MAAO,iCACPpN,OAAO,GAOV,E,2ECdE,MAAMha,EAAsBA,KAC/B,MAAMymB,GAAMC,EAAAA,EAAAA,YAAWC,EAAAA,IACjB,iBAAEU,EAAmB,IAAOZ,EAElC,MAAO,CACHa,YAAY,GAAD7wB,OAAK4wB,EAAgB,+BAChCE,gBAAgB,GAAD9wB,OAAK4wB,EAAgB,0DACpCG,iBAAiB,GAAD/wB,OAAK4wB,EAAgB,kDACrCI,kBAAkB,GAADhxB,OAAK4wB,EAAgB,0DACtCK,kBAAkB,GAADjxB,OAAK4wB,EAAgB,6DACtCM,eAAe,GAADlxB,OAAK4wB,EAAgB,oEACnCO,iBAAiB,GAADnxB,OAAK4wB,EAAgB,uEACrCvlB,oBAAoB,GAADrL,OAAK4wB,EAAgB,wDACxCjW,iBAAiB,GAAD3a,OAAK4wB,EAAgB,qCACrCQ,eAAe,GAADpxB,OAAK4wB,EAAgB,uCACnCS,qBAAqB,GAADrxB,OAAK4wB,EAAgB,4CACzCtnB,qBAAqB,GAADtJ,OAAK4wB,EAAgB,8CACzCU,4BAA4B,GAADtxB,OAAK4wB,EAAgB,6EAChDW,8BAA8B,GAADvxB,OAAK4wB,EAAgB,oEACrD,C,mCCtCL,SAAgB,uBAAyB,oDAAoD,uBAAyB,oDAAoD,mBAAqB,gDAAgD,oBAAsB,iDAAiD,6BAA+B,0DAA0D,yCAA2C,sE","sources":["webpack://naf.connect/./src/app/shared/components/app-modal/app-modal.module.scss?0611","app/shared/components/app-modal/app-modal.component.tsx","app/shared/components/app-modal/app-modal.theme.ts","webpack://naf.connect/./src/app/shared/components/astrik/astrik.module.scss?5b69","app/shared/components/astrik/astrik.component.tsx","webpack://naf.connect/./src/app/shared/components/card/card.component.module.scss?7df1","app/shared/components/card/card.component.tsx","app/shared/components/custom-button/custom-button.theme.ts","app/shared/components/custom-loading-button/custom-loading-button.component.tsx","webpack://naf.connect/./src/app/shared/components/custom-phone-input/custom-phone-input.module.scss?ffbd","app/shared/components/custom-phone-mask/custom-phone-mask.component.tsx","app/shared/components/custom-phone-input/custom-phone-input.component.tsx","app/shared/components/custom-select-field/custom-select-missing-field.theme.ts","app/shared/components/custom-select-field/custom-select.theme.ts","app/shared/components/custom-text-field/custom-text-field-field-missing.theme.ts","app/shared/components/custom-text-field/custom-text-field.theme.ts","webpack://naf.connect/./src/app/shared/components/experience-rating/experience-rating.module.scss?51c4","app/shared/components/experience-rating/experience-rating.component.tsx","webpack://naf.connect/./src/app/shared/components/feature-header/feature-header.module.scss?f0b9","app/shared/components/feature-header/feature-header.component.tsx","webpack://naf.connect/./src/app/shared/components/heading/heading.module.scss?47de","app/shared/components/heading/heading.component.tsx","app/shared/components/custom-text-field/custom-text-field.component.tsx","app/shared/components/custom-button/custom-button.component.tsx","app/shared/components/custom-icon-button/custom-icon-button.theme.ts","app/shared/components/custom-icon-button/custom-icon-button.component.tsx","app/shared/components/social-sign-on-button/social-sign-on-button.component.tsx","webpack://naf.connect/./src/app/shared/components/legal/footer-legal/footer-legal.module.scss?c621","app/shared/components/legal/footer-legal/footer-legal.component.tsx","webpack://naf.connect/./src/app/shared/components/legal/header-legal/header-legal.module.scss?d9ea","app/shared/components/legal/header-legal/header-legal.component.tsx","app/shared/components/password-rules/password-rules.theme.ts","webpack://naf.connect/./src/app/shared/components/password-rules/password-rules.module.scss?b703","app/shared/components/password-rules/password-rules.component.tsx","webpack://naf.connect/./src/app/shared/components/custom-password-text-field/custom-password-text-field.module.scss?02a4","app/shared/components/custom-password-text-field/custom-password-text-field.theme.ts","app/shared/components/custom-password-text-field/custom-password-text-field.component.tsx","app/shared/components/custom-select-field/custom-select-state-field.component.tsx","app/shared/components/custom-tooltip/custom-tooltip.component.tsx","webpack://naf.connect/./src/app/shared/components/count/count.module.scss?bf70","app/shared/components/count/count.component.tsx","app/shared/components/custom-form-checkbox/custom-form-checkbox.theme.ts","app/shared/components/custom-form-checkbox/custom-form-checkbox.component.tsx","app/shared/components/notification-icon/notification-icon.component.tsx","app/shared/components/default-loan-officer-image/default-loan-officer-image.component.tsx","app/shared/components/custom-image-tag/custom-image-tag.component.tsx","app/shared/components/address-autocomplete/address-autocomplete.theme.ts","app/shared/components/address-autocomplete/address-autocomplete-missing-fields.theme.ts","app/shared/components/address-autocomplete/address-autocomplete.component.tsx","app/shared/components/custom-client-chip/custom-client-chip.theme.ts","app/shared/components/custom-client-chip/custom-client-chip.component.tsx","app/shared/components/faq/faq.theme.ts","app/shared/components/faq/faq.component.tsx","webpack://naf.connect/./src/app/shared/components/announcements/announcements.module.scss?70fd","webpack://naf.connect/./src/app/shared/components/announcements/announcements-close-icon/announcements.close-icon.module.scss?8221","app/shared/components/announcements/announcements-close-icon/announcement-close-icon.component.tsx","app/shared/components/announcements/announcements.component.tsx","webpack://naf.connect/./src/app/shared/components/fixed-position-container/fixed-position-container.module.scss?3751","app/shared/components/fixed-position-container/fixed-position-container.component.tsx","webpack://naf.connect/./src/app/shared/components/clickable-container/clickable-container.module.scss?38d6","app/shared/components/clickable-container/clickable-container.component.tsx","webpack://naf.connect/./src/app/shared/components/back-link/back-link.module.scss?20b7","app/shared/components/back-link/back-link.component.tsx","app/shared/components/custom-radio-group/custom-radio-group.theme.ts","app/shared/components/custom-radio-group/custom-radio-group.component.tsx","webpack://naf.connect/./src/app/shared/components/expandable-radio-button/expandable-radio-button.module.scss?80e3","app/shared/components/expandable-radio-button/expandable-radio-button.component.tsx","app/shared/components/memoized-image-component/memoized-image.component.tsx","app/shared/components/autocomplete-text-field/autocomplete-text-field.component.tsx","app/shared/styled/pdf-preview-details.styled.ts","app/shared/styled/pdf-preview.styled.ts","app/shared/components/co-branded-preview/co-branded-preview.component.tsx","app/shared/styled/div.styled.ts","webpack://naf.connect/./src/app/shared/components/co-branded-preview-details/components/layout-two/layout-two.module.scss?bf52","app/shared/components/co-branded-preview-details/components/layout-two/layout-two.component.tsx","webpack://naf.connect/./src/app/shared/components/co-branded-preview-details/components/layout-one/layout-one.module.scss?1267","app/shared/components/co-branded-preview-details/components/layout-one/layout-one.component.tsx","webpack://naf.connect/./src/app/shared/components/co-branded-preview-details/components/layout-three/layout-three.module.scss?5a3a","app/shared/components/co-branded-preview-details/components/layout-three/layout-three.component.tsx","app/shared/components/co-branded-preview-details/cobranded-preview-details.component.tsx","app/shared/components/favorite-icon/favorite-icon.component.tsx","webpack://naf.connect/./src/app/shared/components/container-clickable/container-clickable.module.scss?6bab","app/shared/components/container-clickable/container-clickable.component.tsx","webpack://naf.connect/./src/app/shared/components/plus-minus-icon/plus-minus-icon.module.scss?d2c0","app/shared/components/plus-minus-icon/plus-minus-icon.component.tsx","webpack://naf.connect/./src/app/shared/components/custom-drop-down/custom-drop-down.module.scss?6004","app/shared/components/custom-drop-down/custom-drop-down.component.tsx","app/shared/components/svg-icons/cheveron-down.component.tsx","webpack://naf.connect/./src/app/shared/components/preferred-loan-officer-card/preferred-loan-officer-card.module.scss?90cf","app/shared/components/preferred-loan-officer-card/preferred-loan-officer-card.component.tsx","app/shared/components/svg-icons/marketing-naf-connect-logo.component.tsx","webpack://naf.connect/./src/app/shared/components/template-viewer/template-viewer.module.scss?f38e","app/shared/components/template-viewer/template-viewer.component.tsx","app/shared/enums/responsive-layout.enum.ts","app/shared/helpers/template-data.helper.tsx","app/shared/hooks/use-modal.ts","app/shared/hooks/use-select-state-error.hook.ts","app/shared/hooks/use-mui-media-query.hook.ts","app/shared/hooks/use-scroll-top-offset.ts","app/shared/hooks/use-resize-observer.ts","app/shared/hooks/use-image-loaded.hook.tsx","app/shared/hooks/use-autocomplete.hook.ts","app/shared/hooks/use-navigate-on-key-down.hook.ts","app/shared/hooks/use-templates.hook.ts","app/shared/hooks/use-template-data.hook.ts","app/shared/hooks/use-which-layout.hook.ts","app/shared/hooks/use-pdf-controls.hook.ts","app/shared/hooks/use-social-sign-on.hook.ts","app/shared/hooks/use-naf-connect-images.hook.ts","webpack://naf.connect/./src/app/shared/components/custom-select-field/custom-select-field.module.scss?7594"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"modalHeading\":\"app-modal_modalHeading__CxI1P\",\"modalHeading__text\":\"app-modal_modalHeading__text__iRNHg\"};","import React, { ReactElement, ReactNode } from 'react';\r\n\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport { Dialog, DialogContent, IconButton, ThemeProvider } from '@mui/material';\r\nimport classnames from 'classnames';\r\nimport { theme } from './app-modal.theme';\r\nimport styles from './app-modal.module.scss';\r\n\r\ninterface AppModalProps {\r\n children: ReactNode;\r\n heading?: string;\r\n headingImgSrc?: string;\r\n open: boolean;\r\n className?: string;\r\n headingClassName?: string;\r\n handleClose: React.MouseEventHandler<HTMLButtonElement>;\r\n}\r\n\r\nexport const AppModal = (props: AppModalProps): ReactElement => {\r\n const {\r\n children,\r\n heading = undefined,\r\n open,\r\n headingImgSrc = undefined,\r\n className = undefined,\r\n headingClassName = undefined,\r\n handleClose,\r\n } = props;\r\n\r\n return (\r\n <ThemeProvider theme={theme}>\r\n <Dialog open={open} aria-labelledby=\"alert-dialog-title\" data-testid=\"app-modal\">\r\n {headingImgSrc && <img alt=\"Dialog Heading\" src={headingImgSrc} />}\r\n\r\n <IconButton\r\n style={{ zIndex: 999 }}\r\n aria-label=\"close\"\r\n onClick={handleClose}\r\n data-testid=\"app-modal__close-button\"\r\n >\r\n <CloseIcon />\r\n </IconButton>\r\n\r\n {heading && (\r\n <div className={styles.modalHeading} data-testid=\"app-modal__heading\">\r\n <h5\r\n className={classnames(styles.modalHeading__text, {\r\n [headingClassName as string]: headingClassName,\r\n })}\r\n id=\"alert-dialog-title\"\r\n >\r\n {heading}\r\n </h5>\r\n </div>\r\n )}\r\n\r\n <DialogContent className={className}>{children}</DialogContent>\r\n </Dialog>\r\n </ThemeProvider>\r\n );\r\n};\r\n","import { Color } from 'app/shared/enums';\r\nimport { pxToRem } from 'app/shared/helpers';\r\nimport appTheme from 'app/shared/themes/app.theme';\r\n\r\nimport { createTheme } from '@mui/material';\r\n\r\nexport const theme = createTheme({\r\n components: {\r\n MuiSvgIcon: {\r\n styleOverrides: {\r\n root: {\r\n fontSize: pxToRem(16),\r\n },\r\n },\r\n },\r\n MuiIconButton: {\r\n styleOverrides: {\r\n root: {\r\n position: 'absolute',\r\n right: 0,\r\n top: 0,\r\n width: pxToRem(28),\r\n height: pxToRem(28),\r\n '&:hover': {\r\n backgroundColor: `${Color.dustGray}`,\r\n '& > *': {\r\n fill: `${Color.white}`,\r\n },\r\n },\r\n '&:focus': {\r\n backgroundColor: `${Color.dustGray}`,\r\n '& > *': {\r\n fill: `${Color.white}`,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n MuiDialog: {\r\n styleOverrides: {\r\n root: {\r\n background: 'RGBA(1, 53, 96, .7)',\r\n },\r\n paper: {\r\n border: `${pxToRem(2)} solid ${Color.lightGrey2}`,\r\n borderRadius: pxToRem(10),\r\n boxShadow: `\r\n ${pxToRem(10)} \r\n ${pxToRem(10)} \r\n ${pxToRem(10)} ${Color.cornflowerBlue}`,\r\n margin: 0,\r\n maxWidth: 'inherit',\r\n },\r\n },\r\n },\r\n MuiDialogContent: {\r\n styleOverrides: {\r\n root: {\r\n padding: pxToRem(15),\r\n [appTheme.breakpoints.up('tablet')]: {\r\n padding: pxToRem(28),\r\n },\r\n },\r\n },\r\n },\r\n MuiPaper: {\r\n styleOverrides: {\r\n root: {\r\n margin: 0,\r\n [appTheme.breakpoints.down('xs')]: {\r\n margin: `0 ${pxToRem(16)}`,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","// extracted by mini-css-extract-plugin\nexport default {\"required\":\"astrik_required__WB0dM\"};","import React, { ReactElement } from 'react';\r\n\r\nimport styles from './astrik.module.scss';\r\n\r\nexport const Astrik = (): ReactElement => <span className={styles.required}>*</span>;\r\n","// extracted by mini-css-extract-plugin\nexport default {\"card\":\"card_component_card__Anmq6\"};","import { ReactElement, ReactNode } from 'react';\r\n\r\nimport styles from './card.component.module.scss';\r\nimport classnames from 'classnames';\r\n\r\ninterface CardProps {\r\n children: ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport const Card = ({ children, className }: CardProps): ReactElement => (\r\n <div className={classnames(styles.card, className)} data-testid=\"card-component\">\r\n {children}\r\n </div>\r\n);\r\n\r\nCard.defaultProps = { className: undefined };\r\n","import { Color, MuiButtonType, MuiColorType } from 'app/shared/enums';\r\nimport { pxToRem } from 'app/shared/helpers';\r\n\r\nimport { createTheme } from '@mui/material';\r\nimport appTheme from 'app/shared/themes/app.theme';\r\n\r\nexport const theme = createTheme({\r\n components: {\r\n MuiButton: {\r\n styleOverrides: {\r\n root: ({ ownerState }) => ({\r\n borderRadius: pxToRem(52),\r\n padding: `${pxToRem(10)} ${pxToRem(28)}`,\r\n fontSize: pxToRem(16),\r\n fontWeight: 500,\r\n fontFamily: 'Poppins',\r\n letterSpacing: 'normal',\r\n '& .css-1gnd1fd-MuiButton-endIcon>*:nth-of-type(1)': {\r\n fontSize: pxToRem(16),\r\n },\r\n\r\n [appTheme.breakpoints.down('desktop')]: {\r\n fontSize: pxToRem(14),\r\n },\r\n\r\n ...(ownerState.variant === MuiButtonType.contained && {\r\n backgroundColor: Color.nafPrimaryBlue,\r\n color: Color.white,\r\n boxShadow: 'none',\r\n '&:hover, &:active, &:focus, &:focus-visible': {\r\n backgroundColor: Color.primaryButtonHoverBlue,\r\n boxShadow: 'none',\r\n },\r\n '&:disabled': {\r\n color: Color.white,\r\n backgroundColor: Color.lightGrey3,\r\n },\r\n }),\r\n\r\n ...(ownerState.variant === MuiButtonType.contained &&\r\n ownerState.color === MuiColorType.secondary && {\r\n backgroundColor: Color.nafSecondaryBlue,\r\n\r\n '&:hover, &:active, &:focus, &:focus-visible': {\r\n backgroundColor: Color.nafPrimaryBlue,\r\n boxShadow: 'none',\r\n },\r\n }),\r\n\r\n ...(ownerState.variant === MuiButtonType.outlined && {\r\n color: Color.nafPrimaryBlue,\r\n border: `${pxToRem(2)} solid ${Color.nafPrimaryBlue}`,\r\n '&:hover, &:active, &:focus, &:focus-visible': {\r\n border: `${pxToRem(2)} solid ${Color.nafPrimaryBlue}`,\r\n backgroundColor: Color.white,\r\n color: Color.nafPrimaryBlue,\r\n textDecoration: 'none',\r\n },\r\n '&:disabled': {\r\n border: `${pxToRem(2)} solid ${Color.lightGrey3}`,\r\n textDecoration: 'none',\r\n },\r\n }),\r\n\r\n ...(ownerState.variant === MuiButtonType.text && {\r\n color: Color.nafPrimaryBlue,\r\n fontWeight: 500,\r\n fontSize: pxToRem(16),\r\n textTransform: 'none',\r\n lineHeight: pxToRem(21),\r\n fontFamily: 'Roboto',\r\n textDecoration: 'underline',\r\n '& .css-1gnd1fd-MuiButton-endIcon>*:nth-of-type(1)': {\r\n fontSize: pxToRem(16),\r\n },\r\n padding: 0,\r\n minWidth: 'unset',\r\n '&:hover, &:active, &:focus, &:focus-visible': {\r\n color: Color.nafPrimaryBlue,\r\n background: 'transparent',\r\n textDecoration: 'underline',\r\n },\r\n }),\r\n ...(ownerState.variant === MuiButtonType.text &&\r\n ownerState.color === 'secondary' && {\r\n color: Color.darkCharcoal,\r\n textDecoration: 'none',\r\n fontWeight: 400,\r\n '&:hover, &:active, &:focus, &:focus-visible': {\r\n backgroundColor: 'transparent',\r\n color: Color.darkCharcoal,\r\n textDecoration: 'none',\r\n },\r\n }),\r\n }),\r\n },\r\n },\r\n },\r\n});\r\n","import { ReactElement, ReactNode } from 'react';\r\n\r\nimport { pxToRem } from 'app/shared/helpers';\r\n\r\nimport { Button, CircularProgress, ThemeProvider } from '@mui/material';\r\n\r\nimport { theme } from '../custom-button/custom-button.theme';\r\nimport { TextTransformType } from 'app/shared/enums';\r\n\r\ninterface CustomLoadingButtonProps {\r\n children: ReactNode;\r\n variant: 'text' | 'outlined' | 'contained' | undefined;\r\n type: 'button' | 'submit' | 'reset' | undefined;\r\n disabled?: boolean;\r\n startIcon?: ReactNode;\r\n endIcon?: ReactNode;\r\n colorTheme?:\r\n | 'inherit'\r\n | 'primary'\r\n | 'secondary'\r\n | 'success'\r\n | 'error'\r\n | 'info'\r\n | 'warning'\r\n | undefined;\r\n fontSize?: number;\r\n className?: string;\r\n textTransform?: TextTransformType;\r\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\r\n loading: boolean;\r\n}\r\n\r\nexport const CustomLoadingButton = (props: CustomLoadingButtonProps): ReactElement => {\r\n const {\r\n children,\r\n variant,\r\n type,\r\n disabled,\r\n startIcon,\r\n endIcon,\r\n colorTheme,\r\n fontSize,\r\n className,\r\n textTransform = TextTransformType.capitalize,\r\n onClick,\r\n loading,\r\n } = props;\r\n\r\n return (\r\n <ThemeProvider theme={theme}>\r\n <Button\r\n type={type}\r\n sx={{ fontSize: fontSize && pxToRem(fontSize), textTransform }}\r\n variant={variant}\r\n startIcon={startIcon}\r\n endIcon={loading ? <CircularProgress data-testid=\"loading\" size={20} /> : endIcon}\r\n disabled={disabled}\r\n color={colorTheme}\r\n className={className}\r\n disableRipple\r\n onClick={onClick}\r\n >\r\n {children}\r\n </Button>\r\n </ThemeProvider>\r\n );\r\n};\r\n\r\nCustomLoadingButton.defaultProps = {\r\n disabled: false,\r\n startIcon: undefined,\r\n endIcon: undefined,\r\n colorTheme: undefined,\r\n className: undefined,\r\n fontSize: null,\r\n onClick: undefined,\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"textField__formGroup\":\"custom-phone-input_textField__formGroup__uMnLp\",\"textField__errorText\":\"custom-phone-input_textField__errorText__ht-w0\",\"textField__alert\":\"custom-phone-input_textField__alert__OOXSn\"};","import { ForwardedRef, forwardRef } from 'react';\r\nimport { IMaskInput } from 'react-imask';\r\n\r\nexport interface CustomPhoneProps {\r\n onChange: (event: { target: { name: string; value: string } }) => void;\r\n name: string;\r\n}\r\n\r\nexport const PhoneMaskCustom = forwardRef<HTMLInputElement, CustomPhoneProps>(\r\n (props, ref: ForwardedRef<HTMLInputElement>) => {\r\n const { onChange, ...other } = props;\r\n return (\r\n <IMaskInput\r\n {...other}\r\n mask=\"*##-###-####\"\r\n unmask\r\n definitions={{\r\n '#': /[0-9]/,\r\n '*': /[2-9]/,\r\n }}\r\n inputRef={ref}\r\n onAccept={(value: string): void => {\r\n onChange({ target: { name: props.name, value } });\r\n }}\r\n overwrite\r\n />\r\n );\r\n }\r\n);\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { ReactElement } from 'react';\r\nimport { Control, Controller } from 'react-hook-form';\r\nimport ErrorOutlinedIcon from '@mui/icons-material/ErrorOutlined';\r\nimport { InputLabel, TextField, Theme, ThemeProvider, Typography } from '@mui/material';\r\nimport { theme } from '../custom-text-field/custom-text-field.theme';\r\nimport styles from './custom-phone-input.module.scss';\r\nimport { missingFieldTheme } from '../custom-text-field/custom-text-field-field-missing.theme';\r\nimport { PhoneMaskCustom } from '../custom-phone-mask/custom-phone-mask.component';\r\n\r\nexport interface CustomPhoneInputProps {\r\n inputLabel: string;\r\n id?: string;\r\n placeholder: string;\r\n fullWidth?: boolean;\r\n errorType?: boolean;\r\n errorMessage?: string;\r\n requiredInput?: boolean;\r\n defaultValue?: string;\r\n disabled?: boolean;\r\n control: Control<any>;\r\n register: any;\r\n autoComplete?: string;\r\n missingField?: boolean;\r\n helperText?: string;\r\n customTheme?: Theme;\r\n datatestId?: string;\r\n}\r\n\r\nexport const CustomPhoneInput = (props: CustomPhoneInputProps): ReactElement => {\r\n const {\r\n inputLabel,\r\n id,\r\n placeholder,\r\n fullWidth,\r\n errorType,\r\n errorMessage,\r\n requiredInput,\r\n defaultValue,\r\n disabled,\r\n control,\r\n register,\r\n autoComplete,\r\n missingField,\r\n helperText,\r\n customTheme,\r\n datatestId,\r\n } = props;\r\n\r\n return (\r\n <ThemeProvider theme={customTheme || (missingField ? missingFieldTheme : theme)}>\r\n <div className={styles.textField__formGroup}>\r\n <Controller\r\n control={control}\r\n name={register.name}\r\n render={({ field: { onChange, onBlur, value, name, ref } }): ReactElement => (\r\n <>\r\n <InputLabel htmlFor={id}>\r\n {inputLabel}{' '}\r\n {requiredInput && (\r\n <span className={styles.textField__alert}>\r\n {disabled ? '' : '*'}\r\n </span>\r\n )}\r\n </InputLabel>\r\n <TextField\r\n id={id}\r\n placeholder={placeholder}\r\n type=\"tel\"\r\n fullWidth={fullWidth}\r\n onChange={(event): void => onChange(event.target.value)}\r\n value={value}\r\n onBlur={onBlur}\r\n name={name}\r\n inputRef={ref}\r\n error={errorType}\r\n defaultValue={defaultValue}\r\n disabled={disabled}\r\n required={requiredInput}\r\n autoComplete={autoComplete}\r\n InputProps={{\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n inputComponent: PhoneMaskCustom as any,\r\n }}\r\n helperText={helperText}\r\n data-testid={datatestId}\r\n />\r\n {errorType && (\r\n <Typography>\r\n {errorMessage && <ErrorOutlinedIcon fontSize=\"small\" />}\r\n <span className={styles.textField__errorText}>\r\n {' '}\r\n {errorMessage}\r\n </span>\r\n </Typography>\r\n )}\r\n </>\r\n )}\r\n />\r\n </div>\r\n </ThemeProvider>\r\n );\r\n};\r\n\r\nCustomPhoneInput.defaultProps = {\r\n errorType: undefined,\r\n errorMessage: undefined,\r\n fullWidth: undefined,\r\n requiredInput: undefined,\r\n defaultValue: undefined,\r\n id: undefined,\r\n disabled: false,\r\n autoComplete: 'on',\r\n missingField: false,\r\n helperText: false,\r\n customTheme: undefined,\r\n datatestId: undefined,\r\n};\r\n","import { Color } from 'app/shared/enums';\r\nimport { pxToRem } from 'app/shared/helpers';\r\n\r\nimport { createTheme } from '@mui/material';\r\n\r\nconst ITEM_HEIGHT = 48;\r\nconst ITEM_PADDING_TOP = 8;\r\n\r\nexport const missingFieldTheme = createTheme({\r\n components: {\r\n MuiInputLabel: {\r\n styleOverrides: {\r\n root: {\r\n fontSize: pxToRem(14),\r\n color: Color.nafSecondaryBlue,\r\n },\r\n },\r\n },\r\n MuiOutlinedInput: {\r\n styleOverrides: {\r\n root: {\r\n height: pxToRem(43),\r\n padding: pxToRem(0),\r\n '& .MuiOutlinedInput-notchedOutline': {\r\n padding: 0,\r\n border: `${pxToRem(1)} solid ${Color.nafSecondaryBlue}`,\r\n },\r\n '&:hover, &:focus, &:focus-visible, &:active': {\r\n padding: 0,\r\n '& .MuiOutlinedInput-notchedOutline': {\r\n border: `${pxToRem(1)} solid ${Color.nafSecondaryBlue}`,\r\n },\r\n },\r\n '&.Mui-focused': {\r\n padding: 0,\r\n '& .MuiOutlinedInput-notchedOutline': {\r\n border: `${pxToRem(1)} solid ${Color.nafSecondaryBlue}`,\r\n },\r\n },\r\n '&.Mui-error': {\r\n padding: 0,\r\n '& .MuiOutlinedInput-notchedOutline': {\r\n border: `${pxToRem(1)} solid ${Color.alert}`,\r\n },\r\n },\r\n '& input': {\r\n padding: 0,\r\n '&::-webkit-input-placeholder': {\r\n color: Color.nafSecondaryBlue,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n MuiSvgIcon: {\r\n styleOverrides: {\r\n root: {\r\n paddingTop: pxToRem(4),\r\n paddingRight: pxToRem(5),\r\n color: Color.alert,\r\n fontSize: pxToRem(16),\r\n },\r\n },\r\n },\r\n MuiTypography: {\r\n styleOverrides: {\r\n root: {\r\n color: Color.alert,\r\n fontSize: pxToRem(12),\r\n padding: pxToRem(0),\r\n paddingTop: pxToRem(4),\r\n display: 'flex',\r\n justifyContent: 'flex-start',\r\n alignItems: 'center',\r\n },\r\n },\r\n },\r\n MuiPaper: {\r\n styleOverrides: {\r\n root: {\r\n maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,\r\n height: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,\r\n anchorOrigin: {\r\n vertical: 'center',\r\n horizontal: 'center',\r\n },\r\n },\r\n },\r\n },\r\n MuiMenuItem: {\r\n styleOverrides: {\r\n root: {\r\n fontSize: pxToRem(16),\r\n display: 'flex',\r\n justifyContent: 'Left',\r\n alignItem: 'center',\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","import { Color } from 'app/shared/enums';\r\nimport { pxToRem } from 'app/shared/helpers';\r\n\r\nimport { createTheme } from '@mui/material';\r\n\r\nconst ITEM_HEIGHT = 48;\r\nconst ITEM_PADDING_TOP = 8;\r\n\r\nexport const theme = createTheme({\r\n components: {\r\n MuiInputLabel: {\r\n styleOverrides: {\r\n root: {\r\n marginBottom: pxToRem(8),\r\n color: Color.nafDark,\r\n fontFamily: 'Roboto',\r\n fontSize: pxToRem(16),\r\n fontStyle: 'normal',\r\n fontWeight: 500,\r\n lineHeight: pxToRem(18),\r\n },\r\n },\r\n },\r\n MuiFormControl: {\r\n styleOverrides: {\r\n root: {\r\n margin: `${pxToRem(4)} 0`,\r\n },\r\n },\r\n },\r\n MuiOutlinedInput: {\r\n styleOverrides: {\r\n root: {\r\n height: pxToRem(52),\r\n paddingLeft: pxToRem(24),\r\n backgroundColor: Color.white,\r\n borderRadius: pxToRem(6),\r\n border: `${pxToRem(1)} solid $color-shuttle-gray`,\r\n '&:hover .MuiOutlinedInput-notchedOutline': {\r\n border: `${pxToRem(1)} solid ${Color.lightBlue}`,\r\n },\r\n '&:focus .MuiOutlinedInput-notchedOutline': {\r\n border: `${pxToRem(1)} solid ${Color.lightBlue}`,\r\n },\r\n '&:focus-visible': {\r\n border: `${pxToRem(1)} solid ${Color.alert}`,\r\n },\r\n '& input': {\r\n padding: 0,\r\n color: Color.lightGrey,\r\n },\r\n },\r\n input: {\r\n padding: 0,\r\n },\r\n },\r\n },\r\n MuiSelect: {\r\n styleOverrides: {\r\n icon: {\r\n right: pxToRem(20),\r\n },\r\n },\r\n },\r\n MuiSvgIcon: {\r\n styleOverrides: {\r\n root: {\r\n paddingTop: pxToRem(4),\r\n paddingRight: pxToRem(5),\r\n color: Color.alert,\r\n fontSize: pxToRem(16),\r\n },\r\n },\r\n },\r\n MuiTypography: {\r\n styleOverrides: {\r\n root: {\r\n color: Color.alert,\r\n fontSize: pxToRem(12),\r\n padding: pxToRem(0),\r\n paddingTop: pxToRem(4),\r\n display: 'flex',\r\n justifyContent: 'flex-start',\r\n alignItems: 'center',\r\n lineHeight: 1,\r\n },\r\n },\r\n },\r\n MuiPaper: {\r\n styleOverrides: {\r\n root: {\r\n maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,\r\n anchorOrigin: {\r\n vertical: 'center',\r\n horizontal: 'center',\r\n },\r\n },\r\n },\r\n },\r\n MuiMenuItem: {\r\n styleOverrides: {\r\n root: {\r\n fontSize: pxToRem(16),\r\n display: 'flex',\r\n justifyContent: 'Left',\r\n alignItem: 'center',\r\n whiteSpace: 'normal',\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","import { Color } from 'app/shared/enums';\r\nimport { pxToRem } from 'app/shared/helpers';\r\n\r\nimport { createTheme } from '@mui/material';\r\n\r\nexport const missingFieldTheme = createTheme({\r\n components: {\r\n MuiFormLabel: {\r\n styleOverrides: {\r\n root: {\r\n fontSize: pxToRem(14),\r\n color: Color.nafSecondaryBlue,\r\n },\r\n asterisk: {\r\n color: Color.alert,\r\n '&$error': {\r\n color: Color.alert,\r\n },\r\n },\r\n },\r\n },\r\n MuiInput: {\r\n styleOverrides: {\r\n root: {\r\n '&:hover, &:focus, &:focus-visible, &:active': {\r\n border: `${pxToRem(1)} solid ${Color.lightBlue}`,\r\n },\r\n },\r\n },\r\n },\r\n MuiOutlinedInput: {\r\n styleOverrides: {\r\n root: {\r\n padding: `${pxToRem(10)} ${pxToRem(16)}`,\r\n\r\n '& .MuiOutlinedInput-notchedOutline': {\r\n border: `${pxToRem(1)} solid ${Color.nafSecondaryBlue}`,\r\n },\r\n '&:hover, &:focus, &:focus-visible, &:active': {\r\n '& .MuiOutlinedInput-notchedOutline': {\r\n border: `${pxToRem(1)} solid ${Color.nafSecondaryBlue}`,\r\n },\r\n },\r\n '&.Mui-focused': {\r\n '& .MuiOutlinedInput-notchedOutline': {\r\n border: `${pxToRem(1)} solid ${Color.nafSecondaryBlue}`,\r\n },\r\n },\r\n '&.Mui-error': {\r\n '& .MuiOutlinedInput-notchedOutline': {\r\n border: `${pxToRem(1)} solid ${Color.alert}`,\r\n },\r\n },\r\n '& input': {\r\n padding: 0,\r\n '&::-webkit-input-placeholder': {\r\n color: Color.nafSecondaryBlue,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n MuiTypography: {\r\n styleOverrides: {\r\n root: {\r\n color: Color.alert,\r\n fontSize: pxToRem(12),\r\n display: 'flex',\r\n justifyContent: 'flex-start',\r\n alignItem: 'center',\r\n marginTop: pxToRem(3),\r\n },\r\n },\r\n },\r\n MuiSvgIcon: {\r\n styleOverrides: {\r\n root: {\r\n paddingRight: pxToRem(5),\r\n color: Color.alert,\r\n fontSize: pxToRem(16),\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","import { Color } from 'app/shared/enums';\r\nimport { pxToRem } from 'app/shared/helpers';\r\n\r\nimport { createTheme } from '@mui/material';\r\n\r\nexport const theme = createTheme({\r\n components: {\r\n MuiFormLabel: {\r\n styleOverrides: {\r\n root: {\r\n marginBottom: pxToRem(8),\r\n color: Color.nafDark,\r\n fontFamily: 'Roboto',\r\n fontSize: pxToRem(16),\r\n fontStyle: 'normal',\r\n fontWeight: 500,\r\n lineHeight: pxToRem(18),\r\n },\r\n asterisk: {\r\n color: Color.danger,\r\n marginLeft: pxToRem(-3),\r\n '&$error': {\r\n color: Color.danger,\r\n },\r\n },\r\n },\r\n },\r\n MuiInput: {\r\n styleOverrides: {\r\n root: {\r\n '&:hover, &:focus, &:focus-visible, &:active': {\r\n border: `${pxToRem(1)} solid ${Color.lightBlue}`,\r\n },\r\n },\r\n },\r\n },\r\n MuiOutlinedInput: {\r\n styleOverrides: {\r\n root: {\r\n height: pxToRem(52),\r\n padding: `${pxToRem(15)} ${pxToRem(48)} ${pxToRem(15)} ${pxToRem(24)}`,\r\n backgroundColor: Color.white,\r\n borderRadius: pxToRem(6),\r\n border: `${pxToRem(1)} solid $color-shuttle-gray`,\r\n '& input': {\r\n color: Color.nafDark,\r\n fontFamily: 'Poppins',\r\n fontSize: pxToRem(16),\r\n fontStyle: 'normal',\r\n fontWeight: 500,\r\n lineHeight: pxToRem(22),\r\n },\r\n '&:hover .MuiOutlinedInput-notchedOutline': {\r\n border: `${pxToRem(1)} solid ${Color.lightBlue}`,\r\n },\r\n '&:focus .MuiOutlinedInput-notchedOutline': {\r\n border: `${pxToRem(1)} solid ${Color.lightBlue}`,\r\n },\r\n },\r\n input: {\r\n padding: 0,\r\n },\r\n },\r\n },\r\n MuiTypography: {\r\n styleOverrides: {\r\n root: {\r\n color: Color.alert,\r\n fontSize: pxToRem(12),\r\n display: 'flex',\r\n justifyContent: 'flex-start',\r\n alignItems: 'center',\r\n marginTop: pxToRem(3),\r\n },\r\n },\r\n },\r\n MuiSvgIcon: {\r\n styleOverrides: {\r\n root: {\r\n paddingRight: pxToRem(5),\r\n color: Color.alert,\r\n fontSize: pxToRem(16),\r\n },\r\n },\r\n },\r\n MuiFormHelperText: {\r\n styleOverrides: {\r\n root: {\r\n color: Color.darkCharcoal,\r\n fontSize: pxToRem(12),\r\n lineHeight: pxToRem(14),\r\n fontStyle: 'italic',\r\n margin: `${pxToRem(6)} 0 0`,\r\n\r\n '&.Mui-disabled': {\r\n color: Color.darkCharcoal,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","// extracted by mini-css-extract-plugin\nexport default {\"experienceRating\":\"experience-rating_experienceRating__-4jYz\",\"experienceRating__rating\":\"experience-rating_experienceRating__rating__ILQ6j\",\"experienceRating__count\":\"experience-rating_experienceRating__count__BotnR\",\"experienceRating__experienceLogo\":\"experience-rating_experienceRating__experienceLogo__2UF6P\"};","import { Rating, styled } from '@mui/material';\r\nimport { ReactElement } from 'react';\r\n\r\nimport styles from './experience-rating.module.scss';\r\nimport { pxToRem } from 'app/shared/helpers';\r\nimport { useNafConnectImages } from 'app/shared/hooks/use-naf-connect-images.hook';\r\nimport { Color } from 'app/shared/enums';\r\n\r\ninterface ExperienceRatingProps {\r\n rating: number | undefined;\r\n totalReviewCount: number | undefined;\r\n}\r\n\r\nconst StyledRating = styled(Rating)({\r\n paddingBottom: pxToRem(2),\r\n alignItems: 'center',\r\n '& .MuiRating-icon .MuiSvgIcon-root': {\r\n color: Color.goldStar,\r\n height: pxToRem(16),\r\n width: pxToRem(16),\r\n },\r\n});\r\n\r\nconst MIN_REVIEW_RATING = 3.5;\r\nconst RATING_PRECISION = 0.25;\r\n\r\nconst ExperienceRating = ({\r\n rating = 0,\r\n totalReviewCount = 0,\r\n}: ExperienceRatingProps): ReactElement | null => {\r\n if (rating < MIN_REVIEW_RATING) return null;\r\n\r\n const { experienceDotComLogo } = useNafConnectImages();\r\n\r\n return (\r\n <span className={styles.experienceRating}>\r\n <span className={styles.experienceRating__rating}>{rating}</span>\r\n <StyledRating value={rating} precision={RATING_PRECISION} readOnly />\r\n <span className={styles.experienceRating__count}>({totalReviewCount})</span>\r\n <img\r\n className={styles.experienceRating__experienceLogo}\r\n alt=\"Experience.com\"\r\n src={experienceDotComLogo}\r\n />\r\n </span>\r\n );\r\n};\r\n\r\nexport default ExperienceRating;\r\n","// extracted by mini-css-extract-plugin\nexport default {\"featureHeader\":\"feature-header_featureHeader__XmK+B\",\"featureHeader--hideLineMobile\":\"feature-header_featureHeader--hideLineMobile__TxGI2\",\"featureHeader__divider\":\"feature-header_featureHeader__divider__SgxdI\"};","import React, { ReactElement, ReactNode } from 'react';\r\nimport classnames from 'classnames';\r\nimport styles from './feature-header.module.scss';\r\n\r\ninterface featureHeaderProps {\r\n children: ReactNode;\r\n hideLineMobile?: boolean;\r\n className?: string;\r\n dividerClassName?: string;\r\n}\r\n\r\nexport const FeatureHeader = (props: featureHeaderProps): ReactElement => {\r\n const {\r\n children,\r\n hideLineMobile = false,\r\n className = undefined,\r\n dividerClassName = undefined,\r\n } = props;\r\n\r\n return (\r\n <div\r\n data-testid=\"feature-header\"\r\n className={classnames(styles.featureHeader, {\r\n [styles['featureHeader--hideLineMobile']]: hideLineMobile,\r\n [className as string]: className,\r\n })}\r\n >\r\n {children}\r\n\r\n <div\r\n className={classnames(styles.featureHeader__divider, {\r\n [dividerClassName as string]: dividerClassName,\r\n })}\r\n />\r\n </div>\r\n );\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"heading\":\"heading_heading__iMo+0\",\"heading--1\":\"heading_heading--1__Ii+7U\",\"heading--2\":\"heading_heading--2__IHjGi\",\"heading--3\":\"heading_heading--3__w0zyV\",\"heading--4\":\"heading_heading--4__yMCT-\",\"heading--5\":\"heading_heading--5__TCKZW\",\"heading--6\":\"heading_heading--6__c4HCm\",\"heading--primaryBlue\":\"heading_heading--primaryBlue__LVuQN\",\"heading--light\":\"heading_heading--light__2P58e\",\"heading--regular\":\"heading_heading--regular__GC4m4\",\"heading--medium\":\"heading_heading--medium__1HKY5\",\"heading--semiBold\":\"heading_heading--semiBold__m7iTP\",\"heading--bold\":\"heading_heading--bold__ch8vK\"};","import { ReactElement, ReactNode } from 'react';\r\n\r\nimport classnames from 'classnames';\r\n\r\nimport styles from './heading.module.scss';\r\n\r\ninterface HeadingProps {\r\n children: ReactNode;\r\n size?: 1 | 2 | 3 | 4 | 5 | 6;\r\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\r\n className?: string;\r\n colorPrimaryBlue?: boolean;\r\n fontWeight?: 'light' | 'regular' | 'medium' | 'semiBold' | 'bold';\r\n id?: string;\r\n}\r\n\r\nexport const Heading = (props: HeadingProps): ReactElement => {\r\n const {\r\n as: Component = 'h1',\r\n size = 1,\r\n className,\r\n colorPrimaryBlue,\r\n fontWeight = 'medium',\r\n id,\r\n ...rest\r\n } = props;\r\n\r\n return (\r\n <Component\r\n id={id}\r\n data-testid=\"heading\"\r\n className={classnames(\r\n `${styles.heading}`,\r\n styles[`heading--${size}`],\r\n styles[`heading--${fontWeight}`],\r\n {\r\n [styles['heading--primaryBlue']]: colorPrimaryBlue,\r\n [className as string]: className,\r\n }\r\n )}\r\n {...rest}\r\n />\r\n );\r\n};\r\n","import React, { ReactElement } from 'react';\r\n\r\nimport { ThemeProvider } from '@emotion/react';\r\nimport ErrorOutlinedIcon from '@mui/icons-material/ErrorOutlined';\r\nimport { FormGroup, FormLabel, TextField, Theme, Typography } from '@mui/material';\r\n\r\nimport { UseFormRegisterReturn } from 'react-hook-form';\r\nimport { theme } from './custom-text-field.theme';\r\nimport { missingFieldTheme } from './custom-text-field-field-missing.theme';\r\n\r\ninterface TextFieldProps {\r\n inputLabel: string;\r\n id?: string;\r\n placeholder: string;\r\n fullWidth?: boolean;\r\n type?: string;\r\n register?: UseFormRegisterReturn;\r\n errorType?: boolean;\r\n errorMessage?: string;\r\n requiredInput?: boolean;\r\n defaultValue?: string;\r\n disabled?: boolean;\r\n autoComplete?: string;\r\n missingField?: boolean;\r\n helperText?: string;\r\n customTheme?: Theme;\r\n datatestId?: string;\r\n}\r\n\r\nexport const CustomTextField = (props: TextFieldProps): ReactElement => {\r\n const {\r\n inputLabel,\r\n id,\r\n placeholder,\r\n fullWidth,\r\n type,\r\n register,\r\n errorType,\r\n errorMessage,\r\n requiredInput,\r\n defaultValue,\r\n disabled,\r\n autoComplete,\r\n missingField,\r\n helperText,\r\n customTheme,\r\n datatestId,\r\n } = props;\r\n\r\n return (\r\n <ThemeProvider theme={customTheme || (missingField ? missingFieldTheme : theme)}>\r\n <FormGroup>\r\n <FormLabel required={requiredInput} htmlFor={id}>\r\n {inputLabel}\r\n </FormLabel>\r\n\r\n <TextField\r\n id={id}\r\n data-testid={datatestId}\r\n placeholder={placeholder}\r\n type={type}\r\n fullWidth={fullWidth}\r\n {...register}\r\n error={errorType}\r\n defaultValue={defaultValue}\r\n disabled={disabled}\r\n autoComplete={autoComplete}\r\n required={requiredInput}\r\n helperText={helperText}\r\n />\r\n {errorType && (\r\n <Typography>\r\n {errorMessage && <ErrorOutlinedIcon fontSize=\"small\" />}\r\n <span>{errorMessage}</span>\r\n </Typography>\r\n )}\r\n </FormGroup>\r\n </ThemeProvider>\r\n );\r\n};\r\n\r\nCustomTextField.defaultProps = {\r\n register: undefined,\r\n errorType: undefined,\r\n errorMessage: undefined,\r\n fullWidth: undefined,\r\n requiredInput: false,\r\n type: 'text',\r\n defaultValue: undefined,\r\n id: undefined,\r\n disabled: false,\r\n autoComplete: 'on',\r\n missingField: false,\r\n helperText: null,\r\n customTheme: undefined,\r\n datatestId: undefined,\r\n};\r\n","import { ReactNode, forwardRef, ForwardedRef } from 'react';\r\nimport { pxToRem } from 'app/shared/helpers';\r\nimport { Button, ThemeProvider } from '@mui/material';\r\nimport { theme } from './custom-button.theme';\r\nimport { TextTransformType } from 'app/shared/enums';\r\n\r\ninterface CustomButtonProps {\r\n children: ReactNode;\r\n variant: 'text' | 'outlined' | 'contained' | undefined;\r\n type: 'button' | 'submit' | 'reset' | undefined;\r\n disabled?: boolean;\r\n startIcon?: ReactNode;\r\n endIcon?: ReactNode;\r\n colorTheme?:\r\n | 'inherit'\r\n | 'primary'\r\n | 'secondary'\r\n | 'success'\r\n | 'error'\r\n | 'info'\r\n | 'warning'\r\n | undefined;\r\n fontSize?: number;\r\n className?: string;\r\n textTransform?: TextTransformType;\r\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\r\n dataTestId?: string;\r\n}\r\n\r\nexport const CustomButton = forwardRef<HTMLButtonElement, CustomButtonProps>(\r\n (props: CustomButtonProps, ref: ForwardedRef<HTMLButtonElement>) => {\r\n const {\r\n children,\r\n variant,\r\n type,\r\n disabled,\r\n startIcon,\r\n endIcon,\r\n colorTheme,\r\n fontSize,\r\n className,\r\n textTransform = TextTransformType.capitalize,\r\n onClick,\r\n dataTestId,\r\n } = props;\r\n\r\n return (\r\n <ThemeProvider theme={theme}>\r\n <Button\r\n ref={ref}\r\n type={type}\r\n sx={{ fontSize: fontSize && pxToRem(fontSize), textTransform }}\r\n variant={variant}\r\n startIcon={startIcon}\r\n endIcon={endIcon}\r\n disabled={disabled}\r\n color={colorTheme}\r\n className={className}\r\n disableRipple\r\n onClick={onClick}\r\n data-testid={dataTestId}\r\n >\r\n {children}\r\n </Button>\r\n </ThemeProvider>\r\n );\r\n }\r\n);\r\n\r\nCustomButton.defaultProps = {\r\n disabled: false,\r\n startIcon: undefined,\r\n endIcon: undefined,\r\n colorTheme: undefined,\r\n className: undefined,\r\n fontSize: undefined,\r\n onClick: undefined,\r\n dataTestId: undefined,\r\n};\r\n","import { Color } from 'app/shared/enums';\r\nimport { pxToRem } from 'app/shared/helpers';\r\n\r\nimport { Theme } from '@emotion/react';\r\nimport { createTheme } from '@mui/material';\r\n\r\ninterface CustomIconButtonType {\r\n theme: Theme;\r\n}\r\n\r\nexport const CustomIconButtonTheme = (): CustomIconButtonType => {\r\n let theme = createTheme({});\r\n\r\n theme = createTheme({\r\n components: {\r\n MuiIconButton: {\r\n styleOverrides: {\r\n root: {\r\n backgroundColor: Color.nafPrimaryBlue,\r\n padding: pxToRem(12),\r\n borderRadius: '50%',\r\n color: Color.white,\r\n fontSize: pxToRem(20),\r\n lineHeight: pxToRem(26),\r\n '&:hover, &:focus-visible': {\r\n backgroundColor: Color.alert,\r\n },\r\n '&:disabled': {\r\n backgroundColor: Color.lightGrey3,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n });\r\n\r\n return { theme };\r\n};\r\n","import { ReactNode, forwardRef, ForwardedRef } from 'react';\r\nimport { pxToRem } from 'app/shared/helpers';\r\nimport { IconButton, ThemeProvider } from '@mui/material';\r\nimport { CustomIconButtonTheme } from './custom-icon-button.theme';\r\n\r\ninterface CustomIconButtonProps {\r\n children: ReactNode;\r\n disabled?: boolean;\r\n className?: string;\r\n fontSize?: number;\r\n onClick: React.MouseEventHandler<HTMLButtonElement>;\r\n testId?: string;\r\n}\r\n\r\nexport const CustomIconButton = forwardRef<HTMLButtonElement, CustomIconButtonProps>(\r\n (props: CustomIconButtonProps, ref: ForwardedRef<HTMLButtonElement>) => {\r\n const { children, disabled, className, fontSize, onClick, testId = undefined } = props;\r\n const { theme } = CustomIconButtonTheme();\r\n\r\n return (\r\n <ThemeProvider theme={theme}>\r\n <IconButton\r\n data-testid={testId}\r\n ref={ref}\r\n className={className}\r\n sx={{ fontSize: fontSize && pxToRem(fontSize) }}\r\n onClick={onClick}\r\n disabled={disabled}\r\n disableRipple\r\n >\r\n {children}\r\n </IconButton>\r\n </ThemeProvider>\r\n );\r\n }\r\n);\r\n\r\nCustomIconButton.defaultProps = {\r\n disabled: false,\r\n className: undefined,\r\n fontSize: undefined,\r\n};\r\n","import { ReactElement, ReactNode } from 'react';\r\nimport { CustomButton } from 'app/shared/components';\r\nimport { CustomIconButton } from '../custom-icon-button/custom-icon-button.component';\r\nimport { useWhichLayout } from 'app/shared/hooks';\r\nimport ResponsiveLayout from 'app/shared/enums/responsive-layout.enum';\r\n\r\ninterface SocialSignOnButtonProps {\r\n variant: 'text' | 'outlined' | 'contained' | undefined;\r\n disabled?: boolean;\r\n icon?: ReactNode;\r\n fontSize?: number;\r\n className?: string;\r\n onClick: React.MouseEventHandler<HTMLButtonElement>;\r\n name: string;\r\n}\r\n\r\nexport const SocialSignOnButton = (props: SocialSignOnButtonProps): ReactElement => {\r\n const { variant, disabled, icon, fontSize, className, onClick, name } = props;\r\n\r\n const layout = useWhichLayout();\r\n\r\n return (\r\n <>\r\n {layout !== ResponsiveLayout.Mobile ? (\r\n <CustomButton\r\n type=\"button\"\r\n disabled={disabled}\r\n className={className}\r\n fontSize={fontSize}\r\n startIcon={icon}\r\n variant={variant}\r\n onClick={onClick}\r\n >\r\n {name}\r\n </CustomButton>\r\n ) : (\r\n <CustomIconButton\r\n testId=\"sign-on-icon\"\r\n disabled={disabled}\r\n className={className}\r\n fontSize={fontSize}\r\n onClick={onClick}\r\n >\r\n {icon}\r\n </CustomIconButton>\r\n )}{' '}\r\n </>\r\n );\r\n};\r\n\r\nSocialSignOnButton.defaultProps = {\r\n disabled: false,\r\n icon: undefined,\r\n className: undefined,\r\n fontSize: null,\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"footer\":\"footer-legal_footer__pNqCq\",\"footer__content\":\"footer-legal_footer__content__zXiQZ\",\"footer__link\":\"footer-legal_footer__link__NHdTP\",\"footer__text\":\"footer-legal_footer__text__pKYCh\"};","import { ReactElement } from 'react';\r\nimport { copyrightText, privacyUrl, termsUrl } from 'app/shared/helpers/settings.helper';\r\nimport styles from './footer-legal.module.scss';\r\n\r\nexport const FooterLegal = (): ReactElement => (\r\n <div className={styles.footer}>\r\n <div className={styles.footer__content}>\r\n <div className={styles.footer__text}>{copyrightText}</div>\r\n\r\n <a href={termsUrl} className={styles.footer__link}>\r\n Terms of Use\r\n </a>\r\n <a href={privacyUrl} className={styles.footer__link}>\r\n Privacy Policy\r\n </a>\r\n </div>\r\n </div>\r\n);\r\n","// extracted by mini-css-extract-plugin\nexport default {\"header\":\"header-legal_header__T3zSF\",\"header__logo\":\"header-legal_header__logo__7nc7p\"};","import { ReactElement } from 'react';\r\nimport { useNafConnectImages } from 'app/shared/hooks/use-naf-connect-images.hook';\r\nimport styles from './header-legal.module.scss';\r\n\r\nexport const HeaderLegal = (): ReactElement => {\r\n const { nafConnectLogoLight } = useNafConnectImages();\r\n\r\n return (\r\n <div className={styles.header}>\r\n <img className={styles.header__logo} alt=\"NAFConnect\" src={nafConnectLogoLight} />\r\n </div>\r\n );\r\n};\r\n","import { createTheme } from '@mui/material';\r\nimport { pxToRem } from 'app/shared/helpers';\r\n\r\nexport default createTheme({\r\n components: {\r\n MuiInputLabel: {\r\n styleOverrides: {\r\n root: {\r\n fontSize: pxToRem(14),\r\n color: '#333333',\r\n },\r\n },\r\n },\r\n MuiSvgIcon: {\r\n styleOverrides: {\r\n root: {\r\n paddingRight: pxToRem(5),\r\n fontSize: pxToRem(16),\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","// extracted by mini-css-extract-plugin\nexport default {\"instructions\":\"password-rules_instructions__n4XIU\",\"instructions__cards\":\"password-rules_instructions__cards__7kEVZ\",\"instructions__list\":\"password-rules_instructions__list__fZLOw\",\"instructions__rule-pass\":\"password-rules_instructions__rule-pass__K+uaL\",\"instructions__rule-fail\":\"password-rules_instructions__rule-fail__XuI5A\"};","import React, { ReactElement } from 'react';\r\n\r\nimport { FieldErrors } from 'react-hook-form';\r\n\r\nimport { ThemeProvider } from '@emotion/react';\r\nimport { CancelOutlined, CheckCircleOutline } from '@mui/icons-material';\r\nimport theme from './password-rules.theme';\r\n\r\nimport styles from './password-rules.module.scss';\r\n\r\nconst escapeChars = '!@#$%^&*()?<>-';\r\n\r\ninterface ErrordProps {\r\n errors: FieldErrors;\r\n}\r\n\r\nexport const PasswordRules = (props: ErrordProps): ReactElement => {\r\n const { errors } = props;\r\n\r\n return (\r\n <ThemeProvider theme={theme}>\r\n <div className={styles.instructions}>\r\n <div className={styles.instructions__title}>\r\n Your password must have the following:\r\n </div>\r\n <div className={styles.instructions__cards}>\r\n <div\r\n className={\r\n errors.password?.types?.min?.includes('')\r\n ? `${styles['instructions__rule-fail']}`\r\n : `${styles['instructions__rule-pass']}`\r\n }\r\n data-testid=\"password-rules-min\"\r\n >\r\n <div className={styles.instructions__list}>\r\n {errors.password?.types?.min?.includes('') ? (\r\n <CancelOutlined />\r\n ) : (\r\n <CheckCircleOutline />\r\n )}\r\n At least 8 characters\r\n </div>\r\n </div>\r\n <div\r\n className={\r\n errors.password?.types?.matches?.includes('lowercase')\r\n ? `${styles['instructions__rule-fail']}`\r\n : `${styles['instructions__rule-pass']}`\r\n }\r\n data-testid=\"password-rules-lower\"\r\n >\r\n <div className={styles.instructions__list}>\r\n {errors.password?.types?.matches?.includes('lowercase') ? (\r\n <CancelOutlined />\r\n ) : (\r\n <CheckCircleOutline />\r\n )}\r\n 1 lowercase letter\r\n </div>\r\n </div>\r\n <div\r\n className={\r\n errors.password?.types?.matches?.includes('uppercase')\r\n ? `${styles['instructions__rule-fail']}`\r\n : `${styles['instructions__rule-pass']}`\r\n }\r\n data-testid=\"password-rules-uppercase\"\r\n >\r\n <div className={styles.instructions__list}>\r\n {errors.password?.types?.matches?.includes('uppercase') ? (\r\n <CancelOutlined />\r\n ) : (\r\n <CheckCircleOutline />\r\n )}\r\n 1 uppercase letter\r\n </div>\r\n </div>\r\n <div\r\n className={\r\n errors.password?.types?.matches?.includes('number')\r\n ? `${styles['instructions__rule-fail']}`\r\n : `${styles['instructions__rule-pass']}`\r\n }\r\n data-testid=\"password-rules-number\"\r\n >\r\n <div className={styles.instructions__list}>\r\n {errors.password?.types?.matches?.includes('number') ? (\r\n <CancelOutlined />\r\n ) : (\r\n <CheckCircleOutline />\r\n )}\r\n 1 number\r\n </div>\r\n </div>\r\n </div>\r\n <div>And may contain any of the following symbols: {escapeChars}</div>\r\n </div>\r\n </ThemeProvider>\r\n );\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"passwordField__errorText\":\"custom-password-text-field_passwordField__errorText__PBBnF\",\"passwordField__alert\":\"custom-password-text-field_passwordField__alert__1fh+K\",\"passwordField__btn\":\"custom-password-text-field_passwordField__btn__dGVWZ\"};","import { pxToRem } from 'app/shared/helpers';\r\nimport { createTheme } from '@mui/material';\r\nimport { Color } from 'app/shared/enums';\r\n\r\nexport const theme = createTheme({\r\n components: {\r\n MuiInputLabel: {\r\n styleOverrides: {\r\n root: {\r\n marginBottom: pxToRem(8),\r\n color: Color.nafDark,\r\n fontFamily: 'Roboto',\r\n fontSize: pxToRem(16),\r\n fontStyle: 'normal',\r\n fontWeight: 500,\r\n lineHeight: pxToRem(18),\r\n },\r\n },\r\n },\r\n MuiFormControl: {\r\n styleOverrides: {\r\n root: {\r\n margin: `${pxToRem(4)} 0`,\r\n },\r\n },\r\n },\r\n MuiOutlinedInput: {\r\n styleOverrides: {\r\n root: {\r\n height: pxToRem(52),\r\n padding: `${pxToRem(15)} ${pxToRem(15)} ${pxToRem(15)} ${pxToRem(24)}`,\r\n backgroundColor: Color.white,\r\n borderRadius: pxToRem(6),\r\n border: `${pxToRem(1)} solid $color-shuttle-gray`,\r\n '&:hover .MuiOutlinedInput-notchedOutline': {\r\n border: `${pxToRem(1)} solid ${Color.lightBlue}`,\r\n },\r\n '&:focus .MuiOutlinedInput-notchedOutline': {\r\n border: `${pxToRem(1)} solid ${Color.lightBlue}`,\r\n },\r\n '&:focus-visible': {\r\n border: `${pxToRem(1)} solid ${Color.alert}`,\r\n },\r\n '& input': {\r\n padding: 0,\r\n color: Color.lightGrey,\r\n },\r\n },\r\n input: {\r\n padding: 0,\r\n },\r\n },\r\n },\r\n MuiSvgIcon: {\r\n styleOverrides: {\r\n root: {\r\n paddingTop: pxToRem(4),\r\n paddingRight: pxToRem(5),\r\n color: Color.alert,\r\n fontSize: pxToRem(16),\r\n },\r\n },\r\n },\r\n MuiTypography: {\r\n styleOverrides: {\r\n root: {\r\n color: Color.alert,\r\n fontSize: pxToRem(12),\r\n padding: pxToRem(0),\r\n display: 'flex',\r\n justifyContent: 'flex-start',\r\n alignItem: 'center',\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","import { ReactElement, useState } from 'react';\r\nimport { ThemeProvider } from '@emotion/react';\r\nimport { RemoveRedEye } from '@mui/icons-material';\r\nimport ErrorOutlinedIcon from '@mui/icons-material/ErrorOutlined';\r\nimport {\r\n FormGroup,\r\n IconButton,\r\n InputAdornment,\r\n InputLabel,\r\n TextField,\r\n Typography,\r\n} from '@mui/material';\r\nimport { UseFormRegisterReturn } from 'react-hook-form';\r\nimport styles from './custom-password-text-field.module.scss';\r\nimport { theme } from './custom-password-text-field.theme';\r\n\r\ninterface TextFieldProps {\r\n inputLabel: string;\r\n id?: string;\r\n placeholder: string;\r\n fullWidth?: boolean;\r\n register?: UseFormRegisterReturn;\r\n errorType?: boolean;\r\n errorMessage?: string;\r\n requiredInput?: boolean;\r\n defaultValue?: string;\r\n displayAllErrors?: boolean;\r\n autoComplete?: string;\r\n}\r\n\r\nexport const CustomPasswordTextField = (props: TextFieldProps): ReactElement => {\r\n const {\r\n inputLabel,\r\n id,\r\n placeholder,\r\n fullWidth,\r\n register,\r\n errorType,\r\n errorMessage,\r\n requiredInput,\r\n defaultValue,\r\n displayAllErrors = true,\r\n autoComplete = 'on',\r\n } = props;\r\n\r\n const [toggleVisibility, setToggleVisibility] = useState(false);\r\n\r\n return (\r\n <ThemeProvider theme={theme}>\r\n <FormGroup>\r\n <InputLabel htmlFor={id}>\r\n {inputLabel}{' '}\r\n {requiredInput && <span className={styles.passwordField__alert}>*</span>}\r\n </InputLabel>\r\n <TextField\r\n id={id}\r\n placeholder={placeholder}\r\n type={toggleVisibility ? 'text' : 'password'}\r\n fullWidth={fullWidth}\r\n {...register}\r\n error={errorType}\r\n defaultValue={defaultValue}\r\n autoComplete={autoComplete}\r\n required={requiredInput}\r\n InputProps={{\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <IconButton\r\n data-testid=\"show-password\"\r\n edge=\"end\"\r\n color=\"primary\"\r\n onClick={() => setToggleVisibility(!toggleVisibility)}\r\n >\r\n <RemoveRedEye className={styles.passwordField__btn} />\r\n </IconButton>\r\n </InputAdornment>\r\n ),\r\n }}\r\n />\r\n {register && errorMessage && (\r\n <Typography>\r\n {!displayAllErrors &&\r\n errorMessage.match('Password is required') && (\r\n <ErrorOutlinedIcon fontSize=\"small\" />\r\n ) && (\r\n <span className={styles.passwordField__errorText}>\r\n Password is required\r\n </span>\r\n )}\r\n {displayAllErrors && <ErrorOutlinedIcon fontSize=\"small\" /> && (\r\n <span className={styles.passwordField__errorText}>{errorMessage}</span>\r\n )}\r\n </Typography>\r\n )}\r\n </FormGroup>\r\n </ThemeProvider>\r\n );\r\n};\r\n","import { ReactElement, useMemo } from 'react';\r\n\r\nimport {\r\n Controller,\r\n FieldPath,\r\n FieldValues,\r\n PathValue,\r\n UnpackNestedValue,\r\n UseControllerProps,\r\n} from 'react-hook-form';\r\n\r\nimport { ThemeProvider } from '@emotion/react';\r\nimport ErrorOutlinedIcon from '@mui/icons-material/ErrorOutlined';\r\nimport { InputLabel, MenuItem, Select, SelectChangeEvent, Typography } from '@mui/material';\r\nimport { FaChevronDown } from 'react-icons/fa';\r\n\r\nimport styles from './custom-select-field.module.scss';\r\nimport { theme } from './custom-select.theme';\r\nimport { missingFieldTheme } from './custom-select-missing-field.theme';\r\nimport { State, statesByCode, statesById, statesByName } from 'app/shared/data';\r\n\r\ntype StateSelectFieldProps<\r\n TFieldValues extends FieldValues,\r\n TName extends FieldPath<TFieldValues>,\r\n> = UseControllerProps<TFieldValues, TName>;\r\n\r\ntype SortBy = 'id' | 'name' | 'code' | '';\r\ntype Display = 'id' | 'name' | 'code';\r\n\r\ninterface TextFieldProps<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues>> {\r\n inputLabel: string;\r\n id?: string;\r\n handleSelect?: (\r\n e: SelectChangeEvent<UnpackNestedValue<PathValue<TFieldValues, TName> | string>>\r\n ) => void;\r\n placeholder: string;\r\n fullWidth?: boolean;\r\n errorType?: boolean;\r\n errorMessage?: string;\r\n requiredInput?: boolean;\r\n defaultValue?: string;\r\n autoComplete?: string;\r\n disabled?: boolean;\r\n missingField?: boolean;\r\n sortBy?: SortBy;\r\n display?: Display;\r\n testId?: string;\r\n}\r\n\r\nexport const StateSelectField = <\r\n TFieldValues extends FieldValues,\r\n TName extends FieldPath<TFieldValues>,\r\n>(\r\n props: TextFieldProps<TFieldValues, TName> & StateSelectFieldProps<TFieldValues, TName>\r\n): ReactElement => {\r\n const {\r\n inputLabel,\r\n id,\r\n name,\r\n handleSelect,\r\n placeholder,\r\n fullWidth,\r\n errorType,\r\n errorMessage,\r\n requiredInput = false,\r\n defaultValue = ' ',\r\n control,\r\n autoComplete = 'on',\r\n disabled = false,\r\n missingField = false,\r\n sortBy = 'code',\r\n display = 'code',\r\n testId,\r\n } = props;\r\n\r\n const states = useMemo(() => {\r\n switch (sortBy) {\r\n case 'id':\r\n return statesById;\r\n case 'name':\r\n return statesByName;\r\n case 'code':\r\n return statesByCode;\r\n default:\r\n return statesByCode;\r\n }\r\n }, [sortBy]);\r\n\r\n return (\r\n <ThemeProvider theme={missingField ? missingFieldTheme : theme}>\r\n <div className={styles.selectField__formGroup}>\r\n <Controller\r\n control={control}\r\n name={name}\r\n render={({ field: { onChange, onBlur, value, ref } }): ReactElement => (\r\n <>\r\n <InputLabel htmlFor={id}>\r\n {inputLabel}\r\n {requiredInput && (\r\n <span className={styles.selectField__alert}>*</span>\r\n )}\r\n </InputLabel>\r\n <Select\r\n id={id}\r\n onChange={(e): void => {\r\n onChange(e);\r\n if (handleSelect) handleSelect(e);\r\n }}\r\n onBlur={onBlur}\r\n value={value || ' '}\r\n inputRef={ref}\r\n defaultValue={defaultValue}\r\n fullWidth={fullWidth}\r\n placeholder={placeholder}\r\n error={errorType}\r\n autoComplete={autoComplete}\r\n disabled={disabled}\r\n data-testid={testId}\r\n IconComponent={FaChevronDown}\r\n >\r\n {placeholder && (\r\n <MenuItem value=\" \">\r\n <span\r\n className={\r\n missingField\r\n ? styles.selectField__missingFieldPlaceholderItem\r\n : styles.selectField__placeholderItem\r\n }\r\n >\r\n {placeholder}\r\n </span>\r\n </MenuItem>\r\n )}\r\n {states.map((item: State) => (\r\n <MenuItem key={item.code} value={item.code}>\r\n <span className={styles.selectField__option}>\r\n {item[display]}\r\n </span>\r\n </MenuItem>\r\n ))}\r\n </Select>\r\n {errorType && (\r\n <Typography>\r\n {errorMessage && <ErrorOutlinedIcon fontSize=\"small\" />}\r\n <span className={styles.selectField__errorText}>\r\n {errorMessage}\r\n </span>\r\n </Typography>\r\n )}\r\n </>\r\n )}\r\n />\r\n </div>\r\n </ThemeProvider>\r\n );\r\n};\r\n","import { Color } from 'app/shared/enums';\r\n\r\nimport { Tooltip, tooltipClasses, TooltipProps } from '@mui/material';\r\nimport { styled } from '@mui/material/styles';\r\n\r\ninterface CustomTooltipProps extends TooltipProps {\r\n offset?: number;\r\n dataTestId?: string;\r\n}\r\n\r\nexport const CustomTooltip = styled(({ className, dataTestId, ...props }: CustomTooltipProps) => (\r\n <Tooltip\r\n enterTouchDelay={0}\r\n {...props}\r\n classes={{ popper: className }}\r\n data-testid={dataTestId}\r\n />\r\n))(({ theme, offset }) => ({\r\n [`& .${tooltipClasses.tooltip}`]: {\r\n backgroundColor: Color.white,\r\n padding: `${theme.typography.pxToRem(15)} ${theme.typography.pxToRem(10)}`,\r\n color: 'rgba(0, 0, 0, 0.87)',\r\n boxShadow: theme.shadows[1],\r\n border: `${theme.typography.pxToRem(1)} solid ${Color.sky}`,\r\n },\r\n [`& .${tooltipClasses.arrow}`]: {\r\n color: Color.white,\r\n marginLeft: offset ? `${theme.typography.pxToRem(offset)}` : 0,\r\n '&:before': {\r\n border: `${theme.typography.pxToRem(1)} solid ${Color.sky}`,\r\n },\r\n },\r\n}));\r\n\r\nCustomTooltip.defaultProps = {\r\n offset: undefined,\r\n dataTestId: undefined,\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"count\":\"count_count__n31BI\",\"count--colorAlert\":\"count_count--colorAlert__t5bnZ\",\"count__number\":\"count_count__number__OSLgw\"};","import { ReactElement } from 'react';\r\n\r\nimport classnames from 'classnames';\r\n\r\nimport styles from './count.module.scss';\r\n\r\ninterface CountProps {\r\n count: number;\r\n className?: string;\r\n colorAlert?: boolean;\r\n}\r\n\r\nexport const Count = ({ count, className, colorAlert, ...rest }: CountProps): ReactElement => (\r\n <div\r\n data-testid=\"count-alert\"\r\n className={classnames(`${styles.count}`, {\r\n [styles['count--colorAlert']]: colorAlert,\r\n [className as string]: className,\r\n })}\r\n {...rest}\r\n >\r\n <span className={styles.count__number} data-testid=\"count-number\">\r\n {count}\r\n </span>\r\n </div>\r\n);\r\n\r\nCount.defaultProps = { className: undefined, colorAlert: false };\r\n","import { createTheme } from '@mui/material';\r\nimport { Color } from 'app/shared/enums';\r\n\r\nexport const theme = createTheme({\r\n palette: {\r\n primary: {\r\n main: Color.nafPrimaryBlue,\r\n },\r\n },\r\n typography: {\r\n fontSize: 10,\r\n },\r\n components: {\r\n MuiCheckbox: {\r\n styleOverrides: {\r\n root: {\r\n color: Color.nafPrimaryBlue,\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","import { ChangeEvent, ReactElement } from 'react';\r\n\r\nimport { Checkbox, ThemeProvider } from '@mui/material';\r\n\r\nimport { Controller, FieldPath, FieldValues, UseControllerProps } from 'react-hook-form';\r\n\r\nimport { theme } from './custom-form-checkbox.theme';\r\n\r\ninterface CustomCheckboxCallbackProp {\r\n onChangeCallback?: (event: ChangeEvent<HTMLInputElement>) => void | undefined;\r\n}\r\n\r\ntype CustomCheckboxProps<\r\n TFieldValues extends FieldValues,\r\n TName extends FieldPath<TFieldValues>,\r\n> = UseControllerProps<TFieldValues, TName> & CustomCheckboxCallbackProp;\r\n\r\nexport const CustomFormCheckBox = <\r\n TFieldValues extends FieldValues,\r\n TName extends FieldPath<TFieldValues>,\r\n>({\r\n control,\r\n name,\r\n defaultValue,\r\n onChangeCallback,\r\n}: CustomCheckboxProps<TFieldValues, TName>): ReactElement => (\r\n <ThemeProvider theme={theme}>\r\n <Controller\r\n control={control}\r\n name={name}\r\n render={({ field: { onChange, onBlur, value, name, ref } }): ReactElement => (\r\n <Checkbox\r\n onChange={(event, checked): void => {\r\n onChange(event, checked);\r\n\r\n if (onChangeCallback) onChangeCallback(event);\r\n }}\r\n onBlur={onBlur}\r\n name={name}\r\n inputRef={ref}\r\n checked={value}\r\n value={value}\r\n defaultChecked={defaultValue}\r\n />\r\n )}\r\n />\r\n </ThemeProvider>\r\n);\r\n\r\nCustomFormCheckBox.defaultProps = {\r\n onChangeCallback: null,\r\n};\r\n\r\nexport default CustomFormCheckBox;\r\n","import { ReactElement } from 'react';\r\n\r\nimport { Color } from 'app/shared/enums';\r\n\r\nimport DoneAllIcon from '@mui/icons-material/DoneAll';\r\nimport PersonAddAlt1Icon from '@mui/icons-material/PersonAddAlt1';\r\nimport SavingsIcon from '@mui/icons-material/Savings';\r\nimport TelegramIcon from '@mui/icons-material/Telegram';\r\nimport ThumbUpIcon from '@mui/icons-material/ThumbUp';\r\nimport { styled } from '@mui/material/styles';\r\n\r\nconst NotificationBackground = styled('div')<{ active?: string; canceled?: string }>(\r\n ({ theme }) => ({\r\n background: `${Color.nafPrimaryBlue} 0% 0% no-repeat padding-box`,\r\n zIndex: 1,\r\n width: theme.typography.pxToRem(42),\r\n height: theme.typography.pxToRem(42),\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n borderRadius: '50%',\r\n })\r\n);\r\n\r\nconst NotificationForeground = styled('div')<{ active?: string; canceled?: string }>(\r\n ({ theme }) => ({\r\n background: `${Color.nafPrimaryBlue} 0% 0% no-repeat padding-box`,\r\n border: `${theme.typography.pxToRem(1)} solid ${Color.white}`,\r\n zIndex: 1,\r\n color: '#fff',\r\n width: theme.typography.pxToRem(36),\r\n height: theme.typography.pxToRem(36),\r\n display: 'flex',\r\n borderRadius: '50%',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n })\r\n);\r\n\r\nconst icons: { [key: number]: JSX.Element } = {\r\n 2: <PersonAddAlt1Icon fontSize=\"small\" />,\r\n 3: <DoneAllIcon fontSize=\"small\" />,\r\n 4: <TelegramIcon fontSize=\"small\" />,\r\n 5: <ThumbUpIcon fontSize=\"small\" />,\r\n 6: <SavingsIcon fontSize=\"small\" />,\r\n};\r\n\r\n/**\r\n * @deprecated Component may be removed.\r\n * @deprecatedSince 1.1.50\r\n */\r\nconst NotificationIcon = (id: number): ReactElement => (\r\n <NotificationBackground>\r\n <NotificationForeground>{icons[id]}</NotificationForeground>\r\n </NotificationBackground>\r\n);\r\nexport default NotificationIcon;\r\n","import { ReactElement } from 'react';\r\n\r\nimport { getInitials } from 'app/shared/helpers';\r\n\r\ninterface DefaultLOImageProps {\r\n fullName: string;\r\n className: string;\r\n}\r\n\r\nexport const DefaultLoanOfficerImage = (props: DefaultLOImageProps): ReactElement => {\r\n const { fullName, className } = props;\r\n const initials = getInitials(fullName);\r\n return (\r\n <div className={className} data-testid=\"default-loan-officer-image\">\r\n {initials}\r\n </div>\r\n );\r\n};\r\n","import { ReactElement, useState } from 'react';\r\nimport classnames from 'classnames';\r\n\r\ninterface CustomImageTagProps {\r\n className?: string;\r\n src: string;\r\n alt: string;\r\n fallback: ReactElement | string;\r\n}\r\n\r\nexport const CustomImageTag = (props: CustomImageTagProps): ReactElement => {\r\n const { className, src, alt, fallback } = props;\r\n const [isError, setIsError] = useState(false);\r\n\r\n const constructFallback = (): ReactElement => {\r\n // default image\r\n if (typeof fallback === 'string') {\r\n return <img className={classnames(className)} src={fallback} alt={alt} />;\r\n }\r\n\r\n return fallback;\r\n };\r\n\r\n const constructImage = (): ReactElement => {\r\n if (src) {\r\n if (isError) {\r\n return constructFallback();\r\n }\r\n return (\r\n <img\r\n onError={(): void => setIsError(true)}\r\n className={className}\r\n src={src}\r\n alt={alt}\r\n />\r\n );\r\n }\r\n return constructFallback();\r\n };\r\n\r\n return constructImage();\r\n};\r\n\r\nCustomImageTag.defaultProps = { className: undefined };\r\n\r\nexport default CustomImageTag;\r\n","import { createTheme } from '@mui/material';\r\nimport { pxToRem } from 'app/shared/helpers';\r\nimport { Color } from 'app/shared/enums';\r\n\r\nexport const theme = createTheme({\r\n components: {\r\n MuiTypography: {\r\n styleOverrides: {\r\n root: {\r\n color: Color.alert,\r\n fontSize: pxToRem(12),\r\n display: 'flex',\r\n justifyContent: 'flex-start',\r\n alignItem: 'center',\r\n marginTop: pxToRem(3),\r\n },\r\n },\r\n },\r\n MuiSvgIcon: {\r\n styleOverrides: {\r\n root: {\r\n paddingRight: pxToRem(5),\r\n color: Color.alert,\r\n fontSize: pxToRem(16),\r\n },\r\n },\r\n },\r\n MuiFormLabel: {\r\n styleOverrides: {\r\n root: {\r\n marginBottom: pxToRem(8),\r\n color: Color.nafDark,\r\n fontFamily: 'Roboto',\r\n fontSize: pxToRem(16),\r\n fontStyle: 'normal',\r\n fontWeight: 500,\r\n lineHeight: pxToRem(18),\r\n },\r\n asterisk: {\r\n color: Color.alert,\r\n '&$error': {\r\n color: Color.alert,\r\n },\r\n },\r\n },\r\n },\r\n MuiOutlinedInput: {\r\n styleOverrides: {\r\n root: {\r\n height: pxToRem(52),\r\n padding: `${pxToRem(15)} ${pxToRem(48)} ${pxToRem(15)} ${pxToRem(24)}`,\r\n backgroundColor: Color.white,\r\n borderRadius: pxToRem(6),\r\n border: `${pxToRem(1)} solid $color-shuttle-gray`,\r\n '& input': {\r\n color: Color.nafDark,\r\n fontFamily: 'Poppins',\r\n fontSize: pxToRem(16),\r\n fontStyle: 'normal',\r\n fontWeight: 500,\r\n lineHeight: pxToRem(22),\r\n },\r\n '&:hover .MuiOutlinedInput-notchedOutline': {\r\n border: `${pxToRem(1)} solid ${Color.lightBlue}`,\r\n },\r\n '&:focus .MuiOutlinedInput-notchedOutline': {\r\n border: `${pxToRem(1)} solid ${Color.lightBlue}`,\r\n },\r\n },\r\n input: {\r\n padding: 0,\r\n },\r\n },\r\n },\r\n MuiAutocomplete: {\r\n styleOverrides: {\r\n root: {\r\n ' .MuiOutlinedInput-root': { padding: 0 },\r\n ' .MuiOutlinedInput-root .MuiAutocomplete-input': {\r\n padding: `${pxToRem(10)} ${pxToRem(16)}`,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","import { createTheme } from '@mui/material';\r\nimport { pxToRem } from 'app/shared/helpers';\r\nimport { Color } from 'app/shared/enums';\r\n\r\nexport const missingFieldTheme = createTheme({\r\n components: {\r\n MuiTypography: {\r\n styleOverrides: {\r\n root: {\r\n color: Color.alert,\r\n fontSize: pxToRem(12),\r\n display: 'flex',\r\n justifyContent: 'flex-start',\r\n alignItem: 'center',\r\n marginTop: pxToRem(3),\r\n },\r\n },\r\n },\r\n MuiSvgIcon: {\r\n styleOverrides: {\r\n root: {\r\n paddingRight: pxToRem(5),\r\n color: Color.alert,\r\n fontSize: pxToRem(16),\r\n },\r\n },\r\n },\r\n MuiFormLabel: {\r\n styleOverrides: {\r\n root: {\r\n fontSize: pxToRem(14),\r\n color: Color.nafSecondaryBlue,\r\n },\r\n asterisk: {\r\n color: Color.alert,\r\n '&$error': {\r\n color: Color.alert,\r\n },\r\n },\r\n },\r\n },\r\n MuiAutocomplete: {\r\n styleOverrides: {\r\n root: {\r\n ' .MuiOutlinedInput-root': {\r\n padding: 0,\r\n },\r\n ' .MuiOutlinedInput-root .MuiAutocomplete-input': {\r\n padding: `${pxToRem(10)} ${pxToRem(16)}`,\r\n },\r\n '& .MuiOutlinedInput-notchedOutline': {\r\n border: `${pxToRem(1)} solid ${Color.nafSecondaryBlue}`,\r\n },\r\n '&:hover, &:focus, &:focus-visible, &:active': {\r\n '& .MuiOutlinedInput-notchedOutline': {\r\n border: `${pxToRem(1)} solid ${Color.nafSecondaryBlue}`,\r\n },\r\n },\r\n '&.Mui-focused': {\r\n '& .MuiOutlinedInput-notchedOutline': {\r\n border: `${pxToRem(1)} solid ${Color.nafSecondaryBlue}`,\r\n },\r\n },\r\n '&.Mui-error': {\r\n '& .MuiOutlinedInput-notchedOutline': {\r\n border: `${pxToRem(1)} solid ${Color.alert}`,\r\n },\r\n },\r\n '& input': {\r\n padding: 0,\r\n '&::-webkit-input-placeholder': {\r\n color: Color.nafSecondaryBlue,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","import { ReactElement, ReactNode, SyntheticEvent, useMemo, useState } from 'react';\r\nimport {\r\n Autocomplete,\r\n FormGroup,\r\n FormLabel,\r\n TextField,\r\n ThemeProvider,\r\n Typography,\r\n} from '@mui/material';\r\nimport { theme } from './address-autocomplete.theme';\r\nimport ErrorOutlinedIcon from '@mui/icons-material/ErrorOutlined';\r\nimport { addressesAutocomplete, getAddressDetails } from 'app/services';\r\nimport { debounce } from 'lodash';\r\nimport { Address, AutocompletePrediction } from 'app/shared/models';\r\nimport { UseFormRegisterReturn } from 'react-hook-form';\r\nimport { missingFieldTheme } from './address-autocomplete-missing-fields.theme';\r\n\r\ninterface AddressAutocomplteProp {\r\n id?: string;\r\n inputLabel: string;\r\n placeholder: string;\r\n variant: undefined | 'standard' | 'filled' | 'outlined';\r\n onSelect: (address: Address) => void;\r\n errorType?: boolean;\r\n errorMessage?: string;\r\n required: boolean;\r\n defaultValue?: string;\r\n register: UseFormRegisterReturn;\r\n disabled?: boolean;\r\n missingField?: boolean;\r\n}\r\n\r\nexport const AddressAutocomplete = (props: AddressAutocomplteProp): ReactElement => {\r\n const {\r\n id = undefined,\r\n inputLabel,\r\n placeholder,\r\n variant,\r\n errorType = undefined,\r\n errorMessage = undefined,\r\n register,\r\n required,\r\n defaultValue = '',\r\n disabled = false,\r\n onSelect,\r\n missingField = false,\r\n } = props;\r\n\r\n const [inputValue, setInputValue] = useState(defaultValue || '');\r\n\r\n const [options, setOptions] = useState<AutocompletePrediction[] | null>(null);\r\n\r\n const onAutoCompleteInputChange = (\r\n event: SyntheticEvent<Element, Event>,\r\n searchInput: string\r\n ): void => {\r\n setInputValue(searchInput);\r\n debouncedSearchAddress(searchInput);\r\n };\r\n\r\n const onSearchAddress = (input: string): void => {\r\n if (input.length >= 3) {\r\n addressesAutocomplete(input).then((response) => {\r\n if (response) {\r\n const predictions: AutocompletePrediction[] = response?.data.data;\r\n setOptions(predictions);\r\n }\r\n });\r\n } else {\r\n setOptions(null);\r\n }\r\n };\r\n\r\n const onAutocompleteSelect = (\r\n event: SyntheticEvent<Element, Event>,\r\n value: NonNullable<string | { label: string; value: string }>\r\n ): void => {\r\n if (typeof value === 'string') return;\r\n if (value.value) {\r\n getAddressDetails(value.value).then((res) => {\r\n if (res?.data.success) {\r\n const address: Address = { ...res.data.data.address };\r\n setInputValue(address?.address1 || '');\r\n onSelect(address);\r\n } else {\r\n setInputValue('');\r\n }\r\n });\r\n }\r\n };\r\n\r\n const debouncedSearchAddress = useMemo(() => debounce(onSearchAddress, 300), []);\r\n\r\n return (\r\n <ThemeProvider theme={missingField ? missingFieldTheme : theme}>\r\n <FormGroup>\r\n <FormLabel required={required} htmlFor={id}>\r\n {inputLabel}\r\n </FormLabel>\r\n\r\n <Autocomplete\r\n freeSolo\r\n disableClearable\r\n disabled={disabled}\r\n data-testid=\"auto-complete\"\r\n options={\r\n options\r\n ? options.map((option: AutocompletePrediction) => ({\r\n label: `${option.description}`,\r\n value: option.placeId,\r\n }))\r\n : []\r\n }\r\n inputValue={inputValue}\r\n onInputChange={onAutoCompleteInputChange}\r\n onChange={onAutocompleteSelect}\r\n renderInput={(params): ReactNode => (\r\n <TextField\r\n {...params}\r\n {...register}\r\n variant={variant}\r\n type=\"text\"\r\n error={errorType}\r\n placeholder={placeholder}\r\n data-testid=\"auto-complete-text-field\"\r\n />\r\n )}\r\n />\r\n\r\n {errorType && (\r\n <Typography data-testid=\"auto-complete-error\">\r\n {errorMessage && <ErrorOutlinedIcon fontSize=\"small\" />}\r\n <span data-testid=\"auto-complete-error-message\"> {errorMessage}</span>\r\n </Typography>\r\n )}\r\n </FormGroup>\r\n </ThemeProvider>\r\n );\r\n};\r\n","import { createTheme } from '@mui/material';\r\nimport { Color } from 'app/shared/enums';\r\nimport { pxToRem } from 'app/shared/helpers';\r\n\r\nexport default createTheme({\r\n components: {\r\n MuiChip: {\r\n styleOverrides: {\r\n root: {\r\n margin: `${pxToRem(10)} ${pxToRem(5)} ${pxToRem(0)}`,\r\n borderRadius: pxToRem(3),\r\n background: Color.nafLight,\r\n '& .MuiChip-deleteIcon': {\r\n color: Color.nafPrimaryBlue,\r\n height: pxToRem(15),\r\n width: pxToRem(15),\r\n },\r\n '& .MuiChip-deleteIcon:hover': {\r\n color: Color.primaryButtonHoverBlue,\r\n },\r\n fontSize: pxToRem(13),\r\n height: pxToRem(25),\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","import * as React from 'react';\r\nimport { ReactElement } from 'react';\r\nimport { Chip, ThemeProvider } from '@mui/material';\r\nimport theme from './custom-client-chip.theme';\r\nimport { MilestoneFilterOption } from 'app/shared/models';\r\n\r\ninterface CustomClientChipProps {\r\n option: MilestoneFilterOption;\r\n handleRemoveChip: (option: MilestoneFilterOption) => void;\r\n}\r\n\r\nexport const CustomClientChip = (props: CustomClientChipProps): ReactElement => {\r\n const { option, handleRemoveChip } = props;\r\n\r\n return (\r\n <ThemeProvider theme={theme}>\r\n <Chip label={option.label} onDelete={(): void => handleRemoveChip(option)} />\r\n </ThemeProvider>\r\n );\r\n};\r\n","import { createTheme } from '@mui/material';\r\nimport { pxToRem } from 'app/shared/helpers';\r\nimport { Color } from 'app/shared/enums';\r\n\r\nexport const theme = createTheme({\r\n components: {\r\n MuiPaper: {\r\n styleOverrides: {\r\n root: {\r\n backgroundColor: 'transparent',\r\n },\r\n },\r\n },\r\n MuiAccordion: {\r\n styleOverrides: {\r\n root: {\r\n '&:last-of-type': {\r\n borderBottomLeftRadius: 0,\r\n borderBottomRightRadius: 0,\r\n },\r\n '&:first-of-type': {\r\n borderTopLeftRadius: 0,\r\n borderTopRightRadius: 0,\r\n },\r\n boxShadow: 'none',\r\n },\r\n },\r\n },\r\n MuiAccordionSummary: {\r\n styleOverrides: {\r\n root: {\r\n ' .MuiTypography-root': {\r\n fontSize: pxToRem(18),\r\n color: Color.nafDark,\r\n fontWeight: 'bold',\r\n },\r\n\r\n '& .MuiAccordionSummary-content': {\r\n margin: `${pxToRem(30)} 0`,\r\n '&.Mui-expanded': {\r\n margin: `${pxToRem(30)} 0`,\r\n },\r\n },\r\n\r\n '&.Mui-expanded': {\r\n minHeight: 'fit-content',\r\n },\r\n padding: 0,\r\n minHeight: 'fit-content',\r\n },\r\n },\r\n },\r\n MuiAccordionDetails: {\r\n styleOverrides: {\r\n root: {\r\n padding: 0,\r\n marginBottom: pxToRem(30),\r\n color: Color.darkCharcoal,\r\n '& *': {\r\n margin: 0,\r\n },\r\n '& a': {\r\n color: Color.nafSecondaryBlue,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","import { ReactElement, ReactNode } from 'react';\r\nimport {\r\n Accordion,\r\n AccordionSummary,\r\n AccordionDetails,\r\n Typography,\r\n ThemeProvider,\r\n} from '@mui/material';\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\r\nimport { theme } from './faq.theme';\r\nimport { pxToRem } from 'app/shared/helpers';\r\nimport { Color } from 'app/shared/enums';\r\n\r\ninterface FaqProps {\r\n summary: ReactNode;\r\n details: string;\r\n isLast: boolean;\r\n}\r\n\r\nexport const Faq = ({ summary, details, isLast }: FaqProps): ReactElement => (\r\n <ThemeProvider theme={theme}>\r\n <Accordion\r\n style={{ borderBottom: isLast ? 'none' : `${pxToRem(1)} solid ${Color.lightGrey3}` }}\r\n >\r\n <AccordionSummary data-testid=\"accordion\" expandIcon={<ExpandMoreIcon />}>\r\n <Typography>{summary}</Typography>\r\n </AccordionSummary>\r\n\r\n <AccordionDetails\r\n data-testid=\"accordion-details\"\r\n dangerouslySetInnerHTML={{ __html: details }}\r\n />\r\n </Accordion>\r\n </ThemeProvider>\r\n);\r\n","// extracted by mini-css-extract-plugin\nexport default {\"announcements\":\"announcements_announcements__-mUgy\",\"announcement\":\"announcements_announcement__Nm7jf\",\"announcement__message\":\"announcements_announcement__message__mKmUH\"};","// extracted by mini-css-extract-plugin\nexport default {\"closeIcon\":\"announcements_close-icon_closeIcon__PJggy\"};","import { IconButton, ThemeProvider, createTheme } from '@mui/material';\r\nimport { Color } from 'app/shared/enums';\r\nimport { pxToRem } from 'app/shared/helpers';\r\nimport { MouseEventHandler, ReactElement } from 'react';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport styles from './announcements.close-icon.module.scss';\r\n\r\nconst iconTheme = createTheme({\r\n components: {\r\n MuiSvgIcon: {\r\n styleOverrides: {\r\n root: {\r\n backgroundColor: Color.white,\r\n borderRadius: '50%',\r\n color: Color.nafDark,\r\n padding: pxToRem(8),\r\n fontSize: pxToRem(16),\r\n fontWeight: 800,\r\n },\r\n },\r\n },\r\n },\r\n});\r\n\r\ninterface AnnouncementCloseIconProps {\r\n handleClose: MouseEventHandler;\r\n}\r\n\r\nexport const AnnouncementCloseIcon = ({\r\n handleClose,\r\n}: AnnouncementCloseIconProps): ReactElement => (\r\n <ThemeProvider theme={iconTheme}>\r\n <IconButton\r\n data-testid=\"announcements-banner__close-icon\"\r\n className={styles.closeIcon}\r\n aria-label=\"close\"\r\n onClick={handleClose}\r\n >\r\n <CloseIcon />\r\n </IconButton>\r\n </ThemeProvider>\r\n);\r\n","import { Announcement } from 'app/services/announcements/models';\r\nimport { ReactElement, ReactNode, useEffect, useRef, useState } from 'react';\r\n\r\nimport styles from './announcements.module.scss';\r\nimport { AnnouncementCloseIcon } from './announcements-close-icon';\r\nimport { useAppSelector } from 'app/store/hooks';\r\nimport { GetAnnouncementsSelector } from 'app/store/slices/announcements.slice';\r\nimport { localStorageHelper } from 'app/shared/helpers';\r\n\r\ninterface AnnouncementProps {\r\n announcement: Announcement;\r\n inSession: boolean;\r\n}\r\n\r\nexport const AnnouncementBanner = ({\r\n announcement,\r\n inSession,\r\n}: AnnouncementProps): ReactElement | null => {\r\n const [showBanner, setShowBanner] = useState(true);\r\n const { message, isDismissable, showInSession } = announcement;\r\n const ref = useRef<HTMLParagraphElement>(null);\r\n\r\n useEffect(() => {\r\n if (ref.current) {\r\n ref.current.innerHTML = message || '';\r\n }\r\n }, [ref]);\r\n\r\n const handleClose = (): void => {\r\n setShowBanner((prev) => !prev);\r\n };\r\n\r\n if (inSession && !showInSession) return null;\r\n\r\n return showBanner ? (\r\n <div data-testid=\"announcements-banner\" className={styles.announcement}>\r\n <p\r\n data-testid=\"announcements-banner__message\"\r\n ref={ref}\r\n className={styles.announcement__message}\r\n />\r\n {isDismissable && <AnnouncementCloseIcon handleClose={handleClose} />}\r\n </div>\r\n ) : null;\r\n};\r\n\r\nexport const Announcements = (): ReactElement | null => {\r\n const activeAnnouncements = useAppSelector(GetAnnouncementsSelector);\r\n const token = localStorageHelper.get('@nc_token');\r\n const inSession = typeof token === 'string';\r\n\r\n return activeAnnouncements?.length ? (\r\n <div data-testid=\"announcements\" className={styles.announcements}>\r\n {activeAnnouncements?.map(\r\n (x: Announcement): ReactNode => (\r\n <AnnouncementBanner key={x.id} announcement={x} inSession={inSession} />\r\n )\r\n )}\r\n </div>\r\n ) : null;\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"fixed-position-container_container__eZK2H\"};","import { ReactElement, ReactNode } from 'react';\r\nimport styles from './fixed-position-container.module.scss';\r\n\r\ninterface FixedPositionContainerProps {\r\n children: ReactNode;\r\n}\r\n\r\nexport const FixedPositionContainer = ({ children }: FixedPositionContainerProps): ReactElement => (\r\n <div className={styles.container} data-testid=\"fixed-position-container\">\r\n {children}\r\n </div>\r\n);\r\n","// extracted by mini-css-extract-plugin\nexport default {\"button\":\"clickable-container_button__7RvOC\"};","import classnames from 'classnames';\r\nimport { ForwardedRef, ReactNode, forwardRef } from 'react';\r\nimport styles from './clickable-container.module.scss';\r\n\r\ninterface ContainerClickableProps {\r\n children: ReactNode;\r\n className?: string;\r\n onClick: () => void;\r\n}\r\n\r\nexport const ClickableContainer = forwardRef<HTMLButtonElement, ContainerClickableProps>(\r\n (props: ContainerClickableProps, ref: ForwardedRef<HTMLButtonElement>) => {\r\n const { children, className, onClick } = props;\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n onClick={onClick}\r\n className={classnames(styles.button, className)}\r\n >\r\n {children}\r\n </button>\r\n );\r\n }\r\n);\r\n\r\nClickableContainer.defaultProps = { className: undefined };\r\n","// extracted by mini-css-extract-plugin\nexport default {\"link\":\"back-link_link__8F60-\",\"link__backIcon\":\"back-link_link__backIcon__+9xRJ\"};","import { ReactElement, ReactNode } from 'react';\r\nimport { HiArrowLeft } from 'react-icons/hi';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport styles from './back-link.module.scss';\r\n\r\ninterface BackLinkProps {\r\n to: string;\r\n linkText?: string;\r\n children?: ReactNode;\r\n}\r\n\r\nexport const CustomBackLink = ({ to, linkText, children }: BackLinkProps): ReactElement => (\r\n <Link className={styles.link} to={to}>\r\n {children || (\r\n <>\r\n <HiArrowLeft\r\n data-testid=\"back-link-icon\"\r\n className={styles.link__backIcon}\r\n tabIndex={-1}\r\n />\r\n {linkText}\r\n </>\r\n )}\r\n </Link>\r\n);\r\n\r\nCustomBackLink.defaultProps = { children: undefined, linkText: undefined };\r\n","import { Color } from 'app/shared/enums';\r\n\r\nimport { createTheme } from '@mui/material';\r\n\r\nexport const theme = createTheme({\r\n components: {\r\n MuiRadio: {\r\n styleOverrides: {\r\n root: {\r\n color: Color.nafPrimaryBlue,\r\n '&.Mui-checked': {\r\n color: Color.nafPrimaryBlue,\r\n\r\n '& .MuiSvgIcon-root': {\r\n '&:last-child': {\r\n transform: 'scale(1.15)',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n MuiFormLabel: {\r\n styleOverrides: {\r\n root: {\r\n display: 'flex',\r\n '&.Mui-focused': {\r\n color: Color.darkCharcoal,\r\n },\r\n },\r\n asterisk: {\r\n color: Color.alert,\r\n '&$error': {\r\n color: Color.alert,\r\n },\r\n },\r\n },\r\n },\r\n MuiFormControl: {\r\n styleOverrides: {\r\n root: {\r\n width: '100%',\r\n },\r\n },\r\n },\r\n MuiFormControlLabel: {\r\n styleOverrides: {\r\n root: {\r\n '&.Mui-disabled': {\r\n color: Color.dustGray,\r\n opacity: 0.7,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","import React, { ReactElement, ReactNode, MouseEventHandler, ChangeEventHandler } from 'react';\r\n\r\nimport {\r\n FormControl,\r\n FormLabel,\r\n FormControlLabel,\r\n Radio,\r\n RadioGroup,\r\n ThemeProvider,\r\n} from '@mui/material';\r\n\r\nimport { theme } from './custom-radio-group.theme';\r\nimport classnames from 'classnames';\r\n\r\nexport interface CustomRadioGroupOption {\r\n id: string;\r\n value: string;\r\n label: ReactNode;\r\n checked: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\nexport interface CustomRadioGroupProps {\r\n children?: ReactNode;\r\n inputLabel?: ReactNode;\r\n requiredInput?: boolean;\r\n defaultValue?: string | number | boolean | undefined;\r\n row?: boolean;\r\n className?: string;\r\n labelClassName?: string;\r\n scrollableClassName?: string;\r\n options?: CustomRadioGroupOption[];\r\n onClick?: MouseEventHandler<HTMLButtonElement>;\r\n onChange?: ChangeEventHandler<HTMLInputElement>;\r\n}\r\n\r\nexport const CustomRadioGroup = (props: CustomRadioGroupProps): ReactElement => {\r\n const {\r\n children,\r\n requiredInput,\r\n inputLabel,\r\n defaultValue,\r\n row,\r\n className,\r\n labelClassName,\r\n scrollableClassName,\r\n options,\r\n onClick,\r\n onChange,\r\n } = props;\r\n\r\n return (\r\n <ThemeProvider theme={theme}>\r\n <FormControl>\r\n {inputLabel && <FormLabel required={requiredInput}>{inputLabel}</FormLabel>}\r\n <RadioGroup\r\n className={classnames({ [className as string]: className })}\r\n defaultValue={defaultValue}\r\n row={row}\r\n >\r\n {children}\r\n\r\n {options ? (\r\n <div\r\n data-testid=\"custom-radio-group-options\"\r\n className={classnames({\r\n [scrollableClassName as string]: scrollableClassName,\r\n })}\r\n >\r\n {options.map(\r\n (option: CustomRadioGroupOption): ReactElement => (\r\n <FormControlLabel\r\n tabIndex={0}\r\n disabled={option.disabled}\r\n className={classnames({\r\n [labelClassName as string]: labelClassName,\r\n })}\r\n key={option.id}\r\n value={option.value}\r\n control={\r\n <Radio\r\n tabIndex={0}\r\n checked={option.checked}\r\n onClick={onClick}\r\n onChange={onChange}\r\n />\r\n }\r\n label={option.label ?? null}\r\n />\r\n )\r\n )}\r\n </div>\r\n ) : null}\r\n </RadioGroup>\r\n </FormControl>\r\n </ThemeProvider>\r\n );\r\n};\r\n\r\nCustomRadioGroup.defaultProps = {\r\n inputLabel: undefined,\r\n requiredInput: false,\r\n defaultValue: undefined,\r\n row: true,\r\n className: undefined,\r\n labelClassName: undefined,\r\n scrollableClassName: undefined,\r\n onClick: undefined,\r\n onChange: undefined,\r\n children: undefined,\r\n options: null,\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"expandable-radio-button_container__9Fkor\",\"container__label\":\"expandable-radio-button_container__label__NRpnb\",\"container__content\":\"expandable-radio-button_container__content__SQ5MB\",\"container__content--expanded\":\"expandable-radio-button_container__content--expanded__ngdR5\"};","import { ReactElement } from 'react';\r\nimport styles from './expandable-radio-button.module.scss';\r\nimport { FormControlLabel, Radio, ThemeProvider } from '@mui/material';\r\n\r\nimport classnames from 'classnames';\r\nimport { theme } from '../custom-radio-group/custom-radio-group.theme';\r\nimport { UseFormRegisterReturn } from 'react-hook-form';\r\n\r\ninterface ExpandableRadioButtonProps {\r\n label?: string;\r\n checked?: boolean;\r\n className?: string;\r\n value?: string | boolean | number | undefined;\r\n register?: UseFormRegisterReturn;\r\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\r\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\r\n children?: React.ReactNode;\r\n radioLabelTestId?: string | undefined;\r\n}\r\n\r\nexport const ExpandableRadioButton = ({\r\n label,\r\n checked,\r\n className,\r\n value,\r\n register,\r\n onClick,\r\n onChange,\r\n children,\r\n radioLabelTestId,\r\n}: ExpandableRadioButtonProps): ReactElement => (\r\n <div\r\n data-testid=\"expandable-radio-button\"\r\n className={classnames(styles.container, { [className as string]: className })}\r\n >\r\n <ThemeProvider theme={theme}>\r\n <FormControlLabel\r\n data-testid={radioLabelTestId}\r\n value={value}\r\n control={\r\n <Radio checked={checked} onClick={onClick} onChange={onChange} {...register} />\r\n }\r\n label={label ? <span className={styles.container__label}>{label}</span> : null}\r\n />\r\n\r\n {children ? (\r\n <div\r\n className={classnames(styles.container__content, {\r\n [styles['container__content--expanded']]: checked,\r\n })}\r\n >\r\n {children}\r\n </div>\r\n ) : null}\r\n </ThemeProvider>\r\n </div>\r\n);\r\n","import React, { useMemo } from 'react';\r\nimport classnames from 'classnames';\r\n\r\ninterface ImageProps {\r\n src: string | undefined;\r\n alt: string;\r\n className?: string;\r\n defaultImg?: string;\r\n}\r\n\r\nexport const MemoizedImage = ({ src, alt, className, defaultImg }: ImageProps): JSX.Element => {\r\n const memoizedImageComponent = useMemo(\r\n () => (\r\n <img\r\n className={classnames({ [className as string]: className })}\r\n src={src}\r\n onError={({ currentTarget }): void => {\r\n if (!defaultImg) return;\r\n currentTarget.src = defaultImg;\r\n }}\r\n alt={alt}\r\n data-testid=\"img-tag\"\r\n />\r\n ),\r\n [src]\r\n );\r\n\r\n return memoizedImageComponent;\r\n};\r\n\r\nMemoizedImage.defaultProps = { className: undefined, defaultImg: undefined };\r\n","import { AutocompleteRenderInputParams, TextField } from '@mui/material';\r\nimport { AsyncRequestStatus } from 'app/shared/enums';\r\nimport { isStatusPending } from 'app/shared/helpers';\r\nimport CustomCircularProgress from '../custom-circular-progress/custom-circular-progress.component';\r\nimport { MouseEventHandler } from 'react';\r\n\r\ninterface AutocompleteTextfieldProps {\r\n asyncStatus: AsyncRequestStatus;\r\n params: AutocompleteRenderInputParams;\r\n onClick: MouseEventHandler<HTMLInputElement>;\r\n placeholder: string;\r\n}\r\n\r\nexport const AutoCompleteTextField = ({\r\n params,\r\n asyncStatus,\r\n onClick,\r\n placeholder,\r\n}: AutocompleteTextfieldProps): JSX.Element => (\r\n <TextField\r\n {...params}\r\n placeholder={placeholder}\r\n InputProps={{\r\n ...params.InputProps,\r\n endAdornment: (\r\n <>\r\n {isStatusPending(asyncStatus) ? (\r\n <CustomCircularProgress inline size={20} />\r\n ) : null}\r\n {params.InputProps.endAdornment}\r\n </>\r\n ),\r\n }}\r\n onClick={onClick}\r\n />\r\n);\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport styled, { CSSObject, Interpolation } from '@emotion/styled';\r\nimport { ComponentProps } from 'react';\r\n\r\ninterface ICoBrandedPreviewDetailsProps {\r\n bottom: string;\r\n left: string;\r\n styles?: CSSObject | Interpolation<ComponentProps<any>>;\r\n}\r\n\r\nexport const PdfPreviewDetails = styled.div(\r\n ({ bottom, left, styles }: ICoBrandedPreviewDetailsProps): any => {\r\n let componentStyles: CSSObject | undefined;\r\n\r\n if (typeof styles === 'object' && styles !== null) {\r\n componentStyles = styles as CSSObject;\r\n }\r\n\r\n return {\r\n position: 'absolute',\r\n bottom: `${bottom}`,\r\n left: `${left}`,\r\n ...componentStyles,\r\n };\r\n }\r\n);\r\n\r\nPdfPreviewDetails.defaultProps = { styles: undefined };\r\n","import { GlobalProps } from '@emotion/react';\r\nimport styled, { Interpolation, CSSObject } from '@emotion/styled';\r\nimport { ComponentProps } from 'react';\r\n\r\ninterface IPdfPreviewProps extends GlobalProps {\r\n imageUrl: string;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n styles: CSSObject | Interpolation<ComponentProps<any>>;\r\n scale: number;\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nexport const PdfPreview = styled.div<IPdfPreviewProps>(({ imageUrl, styles, scale = 1 }): any => {\r\n let componentStyles: CSSObject | undefined;\r\n let transformOrigin;\r\n\r\n if (typeof styles === 'object' && styles !== null) {\r\n componentStyles = styles as CSSObject;\r\n }\r\n\r\n if (scale > 1) {\r\n transformOrigin = 'top left';\r\n }\r\n\r\n return {\r\n position: 'relative',\r\n backgroundImage: `url(${imageUrl})`,\r\n backgroundRepeat: 'no-repeat',\r\n backgroundSize: 'contain',\r\n transform: `scale(${scale})`,\r\n transformOrigin,\r\n margin: 0,\r\n ...componentStyles,\r\n };\r\n});\r\n","import { ReactElement, ReactNode, useMemo } from 'react';\r\nimport { PdfPreview } from 'app/shared/styled';\r\nimport { pxToRem } from 'app/shared/helpers';\r\nimport { CoBrandedPreviewType, Color } from 'app/shared/enums';\r\n\r\nexport interface CoBrandedPreviewProps {\r\n backgroundImageUrl: string;\r\n previewType: CoBrandedPreviewType;\r\n scale?: number;\r\n children?: ReactNode;\r\n isModal?: boolean;\r\n}\r\n\r\nexport const CoBrandedPreview = (props: CoBrandedPreviewProps): ReactElement => {\r\n const { backgroundImageUrl, previewType, scale = 1, children, isModal } = props;\r\n\r\n const defaultModalStyles = {\r\n minWidth: pxToRem(600),\r\n minHeight: pxToRem(750),\r\n };\r\n\r\n const mortgageModalStyles = isModal\r\n ? {\r\n ...defaultModalStyles,\r\n border: `${pxToRem(1)} solid ${Color.alto}`,\r\n '@media (max-width: 768px)': {\r\n minWidth: pxToRem(348),\r\n minHeight: pxToRem(440),\r\n },\r\n }\r\n : {};\r\n\r\n const styles = useMemo(() => {\r\n switch (previewType) {\r\n case CoBrandedPreviewType.MortgageStatments:\r\n return {\r\n minWidth: pxToRem(300),\r\n minHeight: pxToRem(380),\r\n border: `${pxToRem(1)} solid ${Color.alto}`,\r\n ...mortgageModalStyles,\r\n };\r\n case CoBrandedPreviewType.GreetingCards:\r\n return {\r\n minWidth: pxToRem(300),\r\n minHeight: pxToRem(560),\r\n };\r\n case CoBrandedPreviewType.ClosingCards:\r\n default:\r\n return {\r\n minWidth: pxToRem(320),\r\n minHeight: pxToRem(600),\r\n };\r\n }\r\n }, [previewType]);\r\n\r\n return (\r\n <PdfPreview\r\n data-testid=\"pdf-preview\"\r\n imageUrl={backgroundImageUrl}\r\n styles={styles}\r\n scale={scale}\r\n >\r\n {children}\r\n </PdfPreview>\r\n );\r\n};\r\n\r\nCoBrandedPreview.defaultProps = {\r\n scale: 1,\r\n children: undefined,\r\n isModal: false,\r\n};\r\n","import { GlobalProps } from '@emotion/react';\r\nimport styled, { Interpolation, CSSObject } from '@emotion/styled';\r\nimport { ComponentProps } from 'react';\r\n\r\ninterface IDivProps extends GlobalProps {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n styles: CSSObject | Interpolation<ComponentProps<any>>;\r\n}\r\n\r\nexport const Div = styled.div<IDivProps>(({ styles }) => {\r\n let componentStyles: CSSObject | undefined;\r\n\r\n if (typeof styles === 'object' && styles !== null) {\r\n componentStyles = styles as CSSObject;\r\n }\r\n\r\n return {\r\n ...componentStyles,\r\n };\r\n});\r\n","// extracted by mini-css-extract-plugin\nexport default {\"details__email\":\"layout-two_details__email__+YQXQ\",\"details__phone\":\"layout-two_details__phone__PM3PP\",\"details__license\":\"layout-two_details__license__5E7qf\",\"details__jobTitle\":\"layout-two_details__jobTitle__fdLq0\",\"details__name\":\"layout-two_details__name__pPCGE\",\"agents\":\"layout-two_agents__-Leug\",\"agent\":\"layout-two_agent__f5TYA\",\"agent__companyLogo\":\"layout-two_agent__companyLogo__dNVl-\",\"agent__companyLogo--partner\":\"layout-two_agent__companyLogo--partner__zk3+5\",\"agent__img\":\"layout-two_agent__img__e-E5d\",\"details\":\"layout-two_details__F8qK0\"};","import { LoanOfficer, Phone, RealEstateAgent, StateLicense } from 'app/shared/models';\r\nimport { ReactElement } from 'react';\r\nimport styles from './layout-two.module.scss';\r\nimport classnames from 'classnames';\r\nimport { CustomImageTag } from 'app/shared/components';\r\nimport { useNafConnectImages } from 'app/shared/hooks/use-naf-connect-images.hook';\r\nimport CustomCircularProgress from 'app/shared/components/custom-circular-progress/custom-circular-progress.component';\r\nimport MarketingNafConnectLogo from 'app/shared/components/svg-icons/marketing-naf-connect-logo.component';\r\nimport { phoneNumberFormat } from 'app/shared/helpers';\r\nimport { ContactPhoneType } from 'app/shared/enums';\r\n\r\ninterface ILayoutTwoProps {\r\n partner: RealEstateAgent | undefined;\r\n agent: LoanOfficer | undefined;\r\n isLoadingLo: boolean | undefined;\r\n}\r\n\r\nexport const LayoutTwo = (props: ILayoutTwoProps): ReactElement => {\r\n const { partner, agent, isLoadingLo } = props;\r\n const { defaultAvatarImg } = useNafConnectImages();\r\n\r\n const {\r\n firstName = '',\r\n lastName = '',\r\n stateLicenses = new Array<StateLicense>(),\r\n phoneNumber = '',\r\n emailAddress = '',\r\n photoUrl = '',\r\n companyLogoUrl = '',\r\n } = partner ?? ({} as RealEstateAgent);\r\n const partnerFullName = `${firstName} ${lastName}`;\r\n const license = `Lic# ${stateLicenses[0]?.licenseNumber}`;\r\n\r\n const {\r\n firstName: agentFirstName = '',\r\n lastName: agentLastName = '',\r\n jobTitle: agentJobTitle = '',\r\n photoUrl: agentPhotoUrl = '',\r\n nmlsLicenseNumber = '',\r\n emailAddress: agentEmailAddress = '',\r\n phones = new Array<Phone>(),\r\n } = agent ?? ({} as LoanOfficer);\r\n\r\n const agentFullName = `${agentFirstName} ${agentLastName}`;\r\n const NMLS = `NMLS# ${nmlsLicenseNumber}`;\r\n\r\n const agentPhoneTypes = phones.map((x) => x.type);\r\n\r\n const hasPhoneType = (type: ContactPhoneType): boolean => {\r\n const phoneTypeExists = agentPhoneTypes.includes(type);\r\n const validNumber = phones.find((x) => x.type === type)?.number !== '';\r\n\r\n return phoneTypeExists && validNumber;\r\n };\r\n\r\n const getLoanOfficerPhoneNumber = (type: ContactPhoneType): string => {\r\n const number = phones.find((x: Phone) => x.type === type)?.number ?? '';\r\n\r\n return phoneNumberFormat(number);\r\n };\r\n\r\n return (\r\n <div className={styles.agents} data-testid=\"cobranded__layout-two\">\r\n <div className={styles.agent}>\r\n <CustomImageTag\r\n className={styles.agent__img}\r\n src={photoUrl}\r\n fallback={defaultAvatarImg}\r\n alt=\"agent-details\"\r\n />\r\n\r\n {companyLogoUrl && (\r\n <img\r\n className={classnames(\r\n styles.agent__companyLogo,\r\n styles['agent__companyLogo--partner']\r\n )}\r\n src={companyLogoUrl}\r\n alt=\"company-logo\"\r\n />\r\n )}\r\n\r\n <div className={styles.details}>\r\n <p className={styles.details__name}>{partnerFullName}</p>\r\n <p className={styles.details__jobTitle}>Real Estate Agent</p>\r\n <p className={styles.details__license}>{license}</p>\r\n <p className={styles.details__phone}>{phoneNumberFormat(phoneNumber)}</p>\r\n <p className={styles.details__email}>{emailAddress}</p>\r\n </div>\r\n </div>\r\n\r\n {isLoadingLo ? (\r\n <CustomCircularProgress />\r\n ) : (\r\n <div className={styles.agent}>\r\n <CustomImageTag\r\n className={styles.agent__img}\r\n src={agentPhotoUrl}\r\n fallback={defaultAvatarImg}\r\n alt=\"agent-details-preview\"\r\n />\r\n\r\n <MarketingNafConnectLogo className={styles.agent__companyLogo} />\r\n\r\n <div className={styles.details}>\r\n <p className={styles.details__name}>{agentFullName}</p>\r\n <p className={styles.details__jobTitle}>{agentJobTitle}</p>\r\n <p className={styles.details__license}>{NMLS}</p>\r\n\r\n <div className={styles.details__agentPhones}>\r\n {hasPhoneType(ContactPhoneType.Cell) && (\r\n <p className={styles.details__phone}>\r\n C: {getLoanOfficerPhoneNumber(ContactPhoneType.Cell)}\r\n </p>\r\n )}\r\n\r\n {hasPhoneType(ContactPhoneType.Work) && (\r\n <p className={styles.details__phone}>\r\n O: {getLoanOfficerPhoneNumber(ContactPhoneType.Work)}\r\n </p>\r\n )}\r\n\r\n {hasPhoneType(ContactPhoneType.DirectDial) && (\r\n <p className={styles.details__phone}>\r\n P: {getLoanOfficerPhoneNumber(ContactPhoneType.DirectDial)}\r\n </p>\r\n )}\r\n </div>\r\n\r\n <p className={styles.details__email}>{agentEmailAddress}</p>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"details__email\":\"layout-one_details__email__24El-\",\"details__phone\":\"layout-one_details__phone__RVI43\",\"details__license\":\"layout-one_details__license__8wITZ\",\"details__jobTitle\":\"layout-one_details__jobTitle__L4gT0\",\"details__name\":\"layout-one_details__name__2qDMI\",\"agents\":\"layout-one_agents__b-j98\",\"agent\":\"layout-one_agent__o+sYE\",\"agent__img\":\"layout-one_agent__img__tPjI4\",\"agent__img--modal\":\"layout-one_agent__img--modal__4zRYs\",\"details\":\"layout-one_details__saka4\",\"details--modal\":\"layout-one_details--modal__3DQea\"};","import { CustomImageTag } from 'app/shared/components';\r\nimport { useNafConnectImages } from 'app/shared/hooks/use-naf-connect-images.hook';\r\nimport { LoanOfficer, RealEstateAgent, StateLicense } from 'app/shared/models';\r\nimport classnames from 'classnames';\r\nimport { ReactElement } from 'react';\r\nimport styles from './layout-one.module.scss';\r\nimport CustomCircularProgress from 'app/shared/components/custom-circular-progress/custom-circular-progress.component';\r\nimport { phoneNumberFormat } from 'app/shared/helpers';\r\n\r\ninterface ILayoutOneProps {\r\n partner: RealEstateAgent | undefined;\r\n agent: LoanOfficer | undefined;\r\n isModal: boolean | undefined;\r\n isLoadingLo: boolean | undefined;\r\n}\r\n\r\nexport const LayoutOne = (props: ILayoutOneProps): ReactElement => {\r\n const { partner, agent, isModal, isLoadingLo } = props;\r\n const { defaultAvatarImg } = useNafConnectImages();\r\n\r\n const {\r\n firstName = '',\r\n lastName = '',\r\n stateLicenses = new Array<StateLicense>(),\r\n phoneNumber = '',\r\n emailAddress = '',\r\n photoUrl = '',\r\n } = partner ?? ({} as RealEstateAgent);\r\n const partnerFullName = `${firstName} ${lastName}`;\r\n const license = `Lic# ${stateLicenses[0]?.licenseNumber}`;\r\n\r\n const {\r\n firstName: agentFirstName = '',\r\n lastName: agentLastName = '',\r\n jobTitle: agentJobTitle = '',\r\n photoUrl: agentPhotoUrl = '',\r\n phoneNumber: agentPhoneNumber = '',\r\n nmlsLicenseNumber = '',\r\n emailAddress: agentEmailAddress = '',\r\n } = agent ?? ({} as LoanOfficer);\r\n\r\n const agentFullName = `${agentFirstName} ${agentLastName}`;\r\n const NMLS = `NMLS# ${nmlsLicenseNumber}`;\r\n\r\n return (\r\n <div className={styles.agents} data-testid=\"cobranded__layout-one\">\r\n <div className={classnames(styles.agent)}>\r\n <CustomImageTag\r\n className={classnames(styles.agent__img, {\r\n [styles['agent__img--modal']]: isModal,\r\n })}\r\n src={photoUrl}\r\n fallback={defaultAvatarImg}\r\n alt=\"agent-details-preview\"\r\n />\r\n\r\n <div\r\n className={classnames(styles.details, {\r\n [styles['details--modal']]: isModal,\r\n })}\r\n >\r\n <p className={styles.details__name}>{partnerFullName}</p>\r\n <p className={styles.details__jobTitle}>Real Estate Agent</p>\r\n <p className={styles.details__license}>{license}</p>\r\n <p className={styles.details__phone}>{phoneNumberFormat(phoneNumber)}</p>\r\n <p className={styles.details__email}>{emailAddress}</p>\r\n </div>\r\n </div>\r\n\r\n {isLoadingLo ? (\r\n <CustomCircularProgress />\r\n ) : (\r\n <div className={classnames(styles.agent)}>\r\n <CustomImageTag\r\n className={classnames(styles.agent__img, {\r\n [styles['agent__img--modal']]: isModal,\r\n })}\r\n src={agentPhotoUrl}\r\n fallback={defaultAvatarImg}\r\n alt=\"agent-details-preview\"\r\n />\r\n\r\n <div\r\n className={classnames(styles.details, {\r\n [styles['details--modal']]: isModal,\r\n })}\r\n >\r\n <p className={styles.details__name}>{agentFullName}</p>\r\n <p className={styles.details__jobTitle}>{agentJobTitle}</p>\r\n <p className={styles.details__license}>{NMLS}</p>\r\n <p className={styles.details__phone}>\r\n {phoneNumberFormat(agentPhoneNumber)}\r\n </p>\r\n <p className={styles.details__email}>{agentEmailAddress}</p>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"details__email\":\"layout-three_details__email__iOXF9\",\"details__phone\":\"layout-three_details__phone__vn+X2\",\"details__license\":\"layout-three_details__license__juuqs\",\"details__jobTitle\":\"layout-three_details__jobTitle__V5M55\",\"details__name\":\"layout-three_details__name__ip0dh\",\"agents\":\"layout-three_agents__y2IYf\",\"agent\":\"layout-three_agent__XDVz4\",\"agent__companyLogo\":\"layout-three_agent__companyLogo__ktYYb\",\"agent__companyLogo--partner\":\"layout-three_agent__companyLogo--partner__EKELm\",\"agent__img\":\"layout-three_agent__img__XpO0b\",\"details\":\"layout-three_details__GH06Q\",\"details--agent\":\"layout-three_details--agent__Wbq1i\"};","import { LoanOfficer, Phone, RealEstateAgent, StateLicense } from 'app/shared/models';\r\nimport { ReactElement } from 'react';\r\nimport styles from './layout-three.module.scss';\r\nimport classnames from 'classnames';\r\nimport { CustomImageTag } from 'app/shared/components';\r\nimport { useNafConnectImages } from 'app/shared/hooks/use-naf-connect-images.hook';\r\nimport CustomCircularProgress from 'app/shared/components/custom-circular-progress/custom-circular-progress.component';\r\nimport MarketingNafConnectLogo from 'app/shared/components/svg-icons/marketing-naf-connect-logo.component';\r\nimport { phoneNumberFormat } from 'app/shared/helpers';\r\nimport { ContactPhoneType } from 'app/shared/enums';\r\n\r\ninterface ILayoutThreeProps {\r\n partner: RealEstateAgent | undefined;\r\n agent: LoanOfficer | undefined;\r\n isLoadingLo: boolean | undefined;\r\n}\r\n\r\nexport const LayoutThree = (props: ILayoutThreeProps): ReactElement => {\r\n const { partner, agent, isLoadingLo } = props;\r\n const { defaultAvatarImg } = useNafConnectImages();\r\n\r\n const {\r\n firstName = '',\r\n lastName = '',\r\n stateLicenses = new Array<StateLicense>(),\r\n phoneNumber = '',\r\n emailAddress = '',\r\n photoUrl = '',\r\n companyLogoUrl = '',\r\n } = partner ?? ({} as RealEstateAgent);\r\n const partnerFullName = `${firstName} ${lastName}`;\r\n const license = `Lic# ${stateLicenses[0]?.licenseNumber}`;\r\n\r\n const {\r\n firstName: agentFirstName = '',\r\n lastName: agentLastName = '',\r\n jobTitle: agentJobTitle = '',\r\n photoUrl: agentPhotoUrl = '',\r\n nmlsLicenseNumber = '',\r\n emailAddress: agentEmailAddress = '',\r\n phones = new Array<Phone>(),\r\n } = agent ?? ({} as LoanOfficer);\r\n\r\n const agentFullName = `${agentFirstName} ${agentLastName}`;\r\n const NMLS = `NMLS# ${nmlsLicenseNumber}`;\r\n\r\n const agentPhoneTypes = phones.map((x) => x.type);\r\n\r\n const hasPhoneType = (type: ContactPhoneType): boolean => {\r\n const phoneTypeExists = agentPhoneTypes.includes(type);\r\n const validNumber = phones.find((x) => x.type === type)?.number !== '';\r\n\r\n return phoneTypeExists && validNumber;\r\n };\r\n\r\n const getLoanOfficerPhoneNumber = (type: ContactPhoneType): string => {\r\n const number = phones.find((x: Phone) => x.type === type)?.number ?? '';\r\n\r\n return phoneNumberFormat(number);\r\n };\r\n\r\n return (\r\n <div className={styles.agents} data-testid=\"cobranded__layout-three\">\r\n <div className={styles.agent}>\r\n <CustomImageTag\r\n className={styles.agent__img}\r\n src={photoUrl}\r\n fallback={defaultAvatarImg}\r\n alt=\"agent-details-preview\"\r\n />\r\n\r\n <div className={classnames(styles.details, styles['details--partner'])}>\r\n <p className={styles.details__name}>{partnerFullName}</p>\r\n <p className={styles.details__jobTitle}>Real Estate Agent</p>\r\n <p className={styles.details__license}>{license}</p>\r\n <p className={styles.details__phone}>{phoneNumberFormat(phoneNumber)}</p>\r\n <p className={styles.details__email}>{emailAddress}</p>\r\n </div>\r\n\r\n {companyLogoUrl && (\r\n <img\r\n className={classnames(\r\n styles.agent__companyLogo,\r\n styles['agent__companyLogo--partner']\r\n )}\r\n src={companyLogoUrl}\r\n alt=\"company-logo\"\r\n />\r\n )}\r\n </div>\r\n\r\n {isLoadingLo ? (\r\n <CustomCircularProgress />\r\n ) : (\r\n <div className={styles.agent}>\r\n <CustomImageTag\r\n className={styles.agent__img}\r\n src={agentPhotoUrl}\r\n fallback={defaultAvatarImg}\r\n alt=\"agent-details-preview\"\r\n />\r\n\r\n <div className={classnames(styles.details, styles['details--agent'])}>\r\n <p className={styles.details__name}>{agentFullName}</p>\r\n <p className={styles.details__jobTitle}>{agentJobTitle}</p>\r\n <p className={styles.details__license}>{NMLS}</p>\r\n\r\n <div className={styles.details__agentPhones}>\r\n {hasPhoneType(ContactPhoneType.Cell) && (\r\n <p className={styles.details__phone}>\r\n C: {getLoanOfficerPhoneNumber(ContactPhoneType.Cell)}\r\n </p>\r\n )}\r\n\r\n {hasPhoneType(ContactPhoneType.Work) && (\r\n <p className={styles.details__phone}>\r\n O: {getLoanOfficerPhoneNumber(ContactPhoneType.Work)}\r\n </p>\r\n )}\r\n\r\n {hasPhoneType(ContactPhoneType.DirectDial) && (\r\n <p className={styles.details__phone}>\r\n P: {getLoanOfficerPhoneNumber(ContactPhoneType.DirectDial)}\r\n </p>\r\n )}\r\n </div>\r\n\r\n <p className={styles.details__email}>{agentEmailAddress}</p>\r\n\r\n <MarketingNafConnectLogo className={styles.agent__companyLogo} />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n","import { CoBrandedPreviewType } from 'app/shared/enums';\r\nimport { ReactElement, useMemo } from 'react';\r\nimport { PdfPreviewDetails } from 'app/shared/styled';\r\nimport { LayoutOne, LayoutTwo } from './components';\r\nimport { PagePosition } from 'app/shared/models';\r\nimport { useGetRealEstateAgentQuery } from 'app/store/api/real-estate-agent/real-estate-agent.api';\r\nimport { useParams } from 'react-router-dom';\r\nimport { useGetClientDealQuery } from 'app/store/api/clients/clients.api';\r\nimport { LayoutThree } from './components/layout-three/layout-three.component';\r\n\r\ninterface ICoBranddPreviewEDtailsProps {\r\n previewType: CoBrandedPreviewType;\r\n isModal?: boolean;\r\n}\r\n\r\ntype DetailsMap = {\r\n [key in CoBrandedPreviewType]: {\r\n detailsPosition: PagePosition;\r\n };\r\n};\r\n\r\nconst detailsMap: DetailsMap = {\r\n [CoBrandedPreviewType.MortgageStatments]: {\r\n detailsPosition: { x: 6, y: 65 },\r\n },\r\n [CoBrandedPreviewType.GreetingCards]: {\r\n detailsPosition: { x: 2.5, y: 10 },\r\n },\r\n [CoBrandedPreviewType.ClosingCards]: {\r\n detailsPosition: { x: 4, y: 10 },\r\n },\r\n};\r\n\r\nexport const CoBrandedPreviewDetails = ({\r\n previewType,\r\n isModal,\r\n}: ICoBranddPreviewEDtailsProps): ReactElement => {\r\n const { dealId = '', loanId = '' } = useParams();\r\n const { data: partner } = useGetRealEstateAgentQuery();\r\n\r\n const { loanOfficer, isLoadingLo } = useGetClientDealQuery(\r\n { dealId, loanId },\r\n {\r\n selectFromResult: ({ data, isLoading }) => ({\r\n loanOfficer: data?.loanOfficer,\r\n isLoadingLo: isLoading,\r\n }),\r\n }\r\n );\r\n\r\n const component = useMemo(() => {\r\n switch (previewType) {\r\n case CoBrandedPreviewType.MortgageStatments:\r\n return (\r\n <LayoutOne\r\n isModal={isModal}\r\n partner={partner}\r\n agent={loanOfficer}\r\n isLoadingLo={isLoadingLo}\r\n />\r\n );\r\n case CoBrandedPreviewType.GreetingCards:\r\n return (\r\n <LayoutTwo partner={partner} agent={loanOfficer} isLoadingLo={isLoadingLo} />\r\n );\r\n case CoBrandedPreviewType.ClosingCards:\r\n default:\r\n return (\r\n <LayoutThree partner={partner} agent={loanOfficer} isLoadingLo={isLoadingLo} />\r\n );\r\n }\r\n }, []);\r\n\r\n const { detailsPosition } = detailsMap[previewType];\r\n const bottom = `${detailsPosition.x}%`;\r\n const left = `${detailsPosition.y}%`;\r\n\r\n return (\r\n <PdfPreviewDetails bottom={bottom} left={left}>\r\n {component}\r\n </PdfPreviewDetails>\r\n );\r\n};\r\n\r\nCoBrandedPreviewDetails.defaultProps = { isModal: false };\r\n","import { HTMLAttributes, ReactElement } from 'react';\r\nimport { CiHeart } from 'react-icons/ci';\r\nimport { IoMdHeart } from 'react-icons/io';\r\n\r\ninterface FavoriteIconProps extends HTMLAttributes<SVGElement> {\r\n isFavorite: boolean;\r\n}\r\n\r\nexport const FavoriteIcon = ({ isFavorite, ...rest }: FavoriteIconProps): ReactElement => {\r\n const Icon = isFavorite ? IoMdHeart : CiHeart;\r\n\r\n return <Icon tabIndex={0} {...rest} />;\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"container-clickable_container__qeEua\",\"container--desktop\":\"container-clickable_container--desktop__nxxJ4\"};","import { forwardRef, ForwardedRef, KeyboardEvent, ReactNode } from 'react';\r\nimport stlyles from './container-clickable.module.scss';\r\nimport classnames from 'classnames';\r\n\r\ninterface ContainerClickableProps {\r\n children: ReactNode;\r\n className?: string;\r\n onClick: () => void;\r\n onKeyDown: (event: KeyboardEvent<HTMLDivElement>) => void;\r\n}\r\n\r\nexport const Container = forwardRef<HTMLDivElement, ContainerClickableProps>(\r\n (props: ContainerClickableProps, ref: ForwardedRef<HTMLDivElement>) => {\r\n const { children, className, onClick, onKeyDown } = props;\r\n return (\r\n <>\r\n <div\r\n ref={ref}\r\n role=\"button\"\r\n tabIndex={0}\r\n onClick={onClick}\r\n onKeyDown={onKeyDown}\r\n className={classnames(stlyles.container, className)}\r\n >\r\n {children}\r\n </div>\r\n\r\n <div className={classnames(stlyles['container--desktop'], className)}>\r\n {children}\r\n </div>\r\n </>\r\n );\r\n }\r\n);\r\n\r\nContainer.defaultProps = { className: undefined };\r\n","// extracted by mini-css-extract-plugin\nexport default {\"icon\":\"plus-minus-icon_icon__sLMVi\"};","import { Color } from 'app/shared/enums';\r\nimport { HTMLAttributes, ReactElement } from 'react';\r\nimport { FaMinus, FaPlus } from 'react-icons/fa';\r\nimport styles from './plus-minus-icon.module.scss';\r\n\r\ninterface PlusMinusIconProps extends HTMLAttributes<SVGElement> {\r\n renderMinusIcon?: boolean;\r\n}\r\n\r\nexport const PlusMinusIcon = ({ renderMinusIcon, ...rest }: PlusMinusIconProps): ReactElement => {\r\n const Icon = renderMinusIcon ? FaMinus : FaPlus;\r\n return <Icon className={styles.icon} color={Color.white} {...rest} />;\r\n};\r\n\r\nPlusMinusIcon.defaultProps = { renderMinusIcon: false };\r\n","// extracted by mini-css-extract-plugin\nexport default {\"field\":\"custom-drop-down_field__D6xIx\",\"field__label\":\"custom-drop-down_field__label__5mB9V\",\"field__icon\":\"custom-drop-down_field__icon__jlMGE\",\"select\":\"custom-drop-down_select__fZ+hc\",\"select__option\":\"custom-drop-down_select__option__F3h0b\"};","import React, { ChangeEventHandler, ReactElement } from 'react';\r\nimport { Field, Label, Select } from '@headlessui/react';\r\n\r\nimport styles from './custom-drop-down.module.scss';\r\nimport classnames from 'classnames';\r\nimport { CheveronDown } from 'app/shared/components';\r\n\r\nexport type CustomDropDownOption = {\r\n value: string;\r\n label: string;\r\n};\r\n\r\ninterface CustomDropDownProps {\r\n className?: string;\r\n label?: string;\r\n options?: Array<CustomDropDownOption>;\r\n handleChange: ChangeEventHandler<HTMLSelectElement>;\r\n}\r\n\r\nexport const CustomDropDown = (props: CustomDropDownProps): ReactElement => {\r\n const { className, label, options, handleChange } = props;\r\n\r\n return (\r\n <Field className={classnames(styles.field, className)}>\r\n {!!label && <Label className={styles.container__label}>{label}</Label>}\r\n\r\n <Select defaultValue={0} className={styles.select} onChange={handleChange}>\r\n <option value={0} disabled hidden>\r\n Select\r\n </option>\r\n\r\n {options?.map((option) => (\r\n <option\r\n className={styles.select__option}\r\n key={option.value}\r\n value={option.value}\r\n >\r\n {option.label}\r\n </option>\r\n ))}\r\n </Select>\r\n\r\n <CheveronDown className={styles.field__icon} />\r\n </Field>\r\n );\r\n};\r\n","import { ReactElement, SVGProps } from 'react';\r\n\r\nexport const CheveronDown = ({ className }: SVGProps<SVGPathElement>): ReactElement => (\r\n <svg\r\n className={className}\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"14\"\r\n height=\"8\"\r\n viewBox=\"0 0 14 8\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M6.29609 7.70853C6.68672 8.09916 7.32109 8.09916 7.71172 7.70853L13.7117 1.70853C14.1023 1.31791 14.1023 0.683533 13.7117 0.292908C13.3211 -0.0977173 12.6867 -0.0977173 12.2961 0.292908L7.00234 5.58666L1.70859 0.296032C1.31797 -0.0945926 0.683594 -0.0945926 0.292969 0.296032C-0.0976562 0.686657 -0.0976562 1.32103 0.292969 1.71166L6.29297 7.71166L6.29609 7.70853Z\"\r\n fill=\"#1D1F2A\"\r\n />\r\n </svg>\r\n);\r\n","// extracted by mini-css-extract-plugin\nexport default {\"card\":\"preferred-loan-officer-card_card__YgGiD\",\"card--grow\":\"preferred-loan-officer-card_card--grow__qwm2I\",\"card__content\":\"preferred-loan-officer-card_card__content__kJG4j\",\"card__imgColumn\":\"preferred-loan-officer-card_card__imgColumn__uLYNM\",\"card__img\":\"preferred-loan-officer-card_card__img__zlymx\",\"card__infoColumn\":\"preferred-loan-officer-card_card__infoColumn__tdtbe\",\"card__position\":\"preferred-loan-officer-card_card__position__+5eo1\",\"card__loStates\":\"preferred-loan-officer-card_card__loStates__HTQxS\",\"card__loStates--exposed\":\"preferred-loan-officer-card_card__loStates--exposed__2POsV\",\"card__loState\":\"preferred-loan-officer-card_card__loState__2qSse\",\"card__loStateExposed\":\"preferred-loan-officer-card_card__loStateExposed__kRgiJ\",\"card__show\":\"preferred-loan-officer-card_card__show__ywat6\",\"card__fullName\":\"preferred-loan-officer-card_card__fullName__CFk3F\",\"card__phone\":\"preferred-loan-officer-card_card__phone__J4Z-v\",\"card__icon\":\"preferred-loan-officer-card_card__icon__ezYSD\",\"card__link\":\"preferred-loan-officer-card_card__link__H8kYJ\",\"card__filler\":\"preferred-loan-officer-card_card__filler__zEzWL\",\"card__email\":\"preferred-loan-officer-card_card__email__Gcwep\",\"card__remove\":\"preferred-loan-officer-card_card__remove__BFy9d\",\"card__text\":\"preferred-loan-officer-card_card__text__9EZDN\",\"card__licenseText\":\"preferred-loan-officer-card_card__licenseText__J-+LF\",\"card__removeText\":\"preferred-loan-officer-card_card__removeText__vCMvj\"};","/* eslint-disable react/require-default-props */\r\nimport { ReactElement, useMemo, useState } from 'react';\r\nimport EmailIcon from '@mui/icons-material/Email';\r\nimport PhoneIcon from '@mui/icons-material/Phone';\r\nimport PhoneIphoneIcon from '@mui/icons-material/PhoneIphone';\r\nimport { styled } from '@mui/material/styles';\r\n\r\nimport { CustomButton, CustomImageTag } from 'app/shared/components';\r\nimport { LoanOfficer } from 'app/shared/models';\r\nimport { Color, ContactPhoneType, MuiButtonType } from 'app/shared/enums';\r\nimport classnames from 'classnames';\r\nimport { TbDeviceLandlinePhone } from 'react-icons/tb';\r\nimport { FaTrashAlt } from 'react-icons/fa';\r\nimport ExpandLessIcon from '@mui/icons-material/ExpandLess';\r\n\r\nimport styles from './preferred-loan-officer-card.module.scss';\r\nimport { phoneNumberFormat, pxToRem } from 'app/shared/helpers';\r\nimport ResponsiveLayout from 'app/shared/enums/responsive-layout.enum';\r\nimport { getAdminId } from 'app/services';\r\nimport { useNafConnectImages, useWhichLayout } from 'app/shared/hooks';\r\nimport { statesByCode } from 'app/shared/data';\r\nimport ExperienceRating from '../experience-rating/experience-rating.component';\r\n\r\nexport const StateLabelContainer = styled('div')(() => ({\r\n width: pxToRem(32),\r\n height: pxToRem(32),\r\n borderRadius: '50%',\r\n border: 'solid',\r\n borderWidth: pxToRem(2),\r\n borderColor: Color.nafPrimaryBlue,\r\n backgroundColor: Color.aquaHaze,\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n}));\r\n\r\nexport const StateLabel = styled('div')(() => ({\r\n font: `normal normal bold ${pxToRem(13)}/${pxToRem(16)} Roboto`,\r\n textAlign: 'center',\r\n color: Color.nafPrimaryBlue,\r\n}));\r\n\r\nexport const AdditionalStatesContainer = styled('div')(() => ({\r\n width: pxToRem(36),\r\n height: pxToRem(36),\r\n borderRadius: '50%',\r\n borderColor: Color.nafSecondaryBlue,\r\n backgroundColor: Color.nafSecondaryBlue,\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n position: 'absolute',\r\n left: pxToRem(261),\r\n zIndex: 9,\r\n cursor: 'pointer',\r\n '@media (max-width: 576px)': {\r\n left: pxToRem(145),\r\n },\r\n}));\r\n\r\nexport const AdditionalStatesLabel = styled('div')(() => ({\r\n font: `normal normal bold ${pxToRem(13)}/${pxToRem(16)} Roboto`,\r\n textAlign: 'center',\r\n color: Color.white,\r\n}));\r\n\r\nexport const PhoneLink = ({\r\n icon: Icon,\r\n phone,\r\n extension,\r\n 'data-testid': dataTestId,\r\n}: {\r\n icon: typeof PhoneIcon | typeof PhoneIphoneIcon | typeof TbDeviceLandlinePhone;\r\n phone: string;\r\n extension?: string;\r\n 'data-testid'?: string;\r\n}): JSX.Element => (\r\n <div className={styles.card__phone} data-testid={dataTestId}>\r\n <Icon className={styles.card__icon} />\r\n <a className={styles.card__link} href={`tel: ${phone}${extension ? `,${extension}` : ''}`}>\r\n <p className={styles.card__text}>{phoneNumberFormat(phone, extension)}</p>\r\n </a>\r\n </div>\r\n);\r\n\r\ninterface PreferredLoanOfficerCardProps {\r\n loanOfficer: LoanOfficer;\r\n index: number;\r\n onRemove?: (lo: LoanOfficer, index: number) => void;\r\n disabled: boolean;\r\n showStateLicenses?: boolean;\r\n cardClassName?: string;\r\n cc?: string;\r\n subject?: string;\r\n}\r\n\r\nexport const PreferredLoanOfficerCard = ({\r\n loanOfficer,\r\n index,\r\n disabled,\r\n onRemove,\r\n showStateLicenses = true,\r\n cardClassName,\r\n cc,\r\n subject,\r\n}: PreferredLoanOfficerCardProps): ReactElement => {\r\n const [showMoreStates, setShowMoreStates] = useState(false);\r\n const { defaultAvatarImg } = useNafConnectImages();\r\n\r\n const statesLicensed = useMemo(() => {\r\n if (!loanOfficer.stateLicenses) return [];\r\n\r\n return loanOfficer.stateLicenses\r\n .filter(\r\n ({ licenseStatusTypeId, stateLicensed }) =>\r\n licenseStatusTypeId === 1 &&\r\n statesByCode.some(\r\n ({ code }) => code.toUpperCase() === stateLicensed.toUpperCase()\r\n )\r\n )\r\n .map(({ stateLicensed }) => stateLicensed);\r\n }, [loanOfficer.stateLicenses]);\r\n\r\n const getLoanOfficerEmailDetails = (cc?: string, subject?: string): string => {\r\n const baseMailto = `mailto:${loanOfficer.emailAddress}`;\r\n const params: string[] = [];\r\n\r\n if (cc) {\r\n params.push(`cc=${cc}`);\r\n }\r\n\r\n if (subject) {\r\n params.push(`subject=${subject}`);\r\n }\r\n\r\n if (params.length > 0) {\r\n const mailtoWithParams = `${baseMailto}?${params.join('&')}`;\r\n return mailtoWithParams;\r\n }\r\n\r\n return baseMailto;\r\n };\r\n\r\n let cellPhone;\r\n let directPhone;\r\n let workPhone;\r\n let workPhoneExtension;\r\n const layout = useWhichLayout();\r\n\r\n loanOfficer.phones?.forEach((phone) => {\r\n if (phone.type === ContactPhoneType.Work) {\r\n if (phone.number !== '') {\r\n workPhone = phone.number;\r\n if (phone.extension !== '') {\r\n workPhoneExtension = phone.extension;\r\n }\r\n }\r\n }\r\n if (phone.type === ContactPhoneType.Cell) {\r\n if (phone.number !== '') {\r\n cellPhone = phone.number;\r\n }\r\n }\r\n if (phone.type === ContactPhoneType.DirectDial) {\r\n if (phone.number !== '') {\r\n directPhone = phone.number;\r\n }\r\n }\r\n });\r\n\r\n const newRenderStateTags = (): ReactElement => {\r\n let rendered;\r\n if (!showMoreStates) {\r\n if (statesLicensed.length >= 6) {\r\n if (layout === ResponsiveLayout.Mobile) {\r\n rendered = (\r\n <>\r\n {statesLicensed.slice(0, 5).map((state, index) => (\r\n <StateLabelContainer\r\n key={state}\r\n className={styles.card__loState}\r\n style={{ zIndex: index, left: index * 29 }}\r\n >\r\n <StateLabel>{state}</StateLabel>\r\n </StateLabelContainer>\r\n ))}\r\n <AdditionalStatesContainer\r\n data-testid=\"additional-states-greater-6\"\r\n onClick={(): void => setShowMoreStates((state) => !state)}\r\n >\r\n <AdditionalStatesLabel>\r\n +{statesLicensed.length - 5}\r\n </AdditionalStatesLabel>\r\n </AdditionalStatesContainer>\r\n </>\r\n );\r\n return rendered;\r\n }\r\n if (statesLicensed.length >= 10) {\r\n rendered = (\r\n <>\r\n {statesLicensed.slice(0, 9).map((state, index) => (\r\n <StateLabelContainer\r\n key={state}\r\n className={styles.card__loState}\r\n style={{ zIndex: index, left: index * 29 }}\r\n >\r\n <StateLabel>{state}</StateLabel>\r\n </StateLabelContainer>\r\n ))}\r\n <AdditionalStatesContainer\r\n data-testid=\"additional-states-greater-10\"\r\n onClick={(): void => setShowMoreStates((state) => !state)}\r\n >\r\n <AdditionalStatesLabel>\r\n +{statesLicensed.length - 9}\r\n </AdditionalStatesLabel>\r\n </AdditionalStatesContainer>\r\n </>\r\n );\r\n return rendered;\r\n }\r\n }\r\n }\r\n if (showMoreStates) {\r\n rendered = (\r\n <>\r\n {statesLicensed.map((state) => (\r\n <StateLabelContainer key={state} className={styles.card__loStateExposed}>\r\n <StateLabel>{state}</StateLabel>\r\n </StateLabelContainer>\r\n ))}\r\n <AdditionalStatesContainer\r\n style={{ position: 'static' }}\r\n data-testid=\"additional-states-show\"\r\n onClick={(): void => setShowMoreStates((state) => !state)}\r\n >\r\n <AdditionalStatesLabel>\r\n <ExpandLessIcon style={{ color: Color.white }} />\r\n </AdditionalStatesLabel>\r\n </AdditionalStatesContainer>\r\n </>\r\n );\r\n return rendered;\r\n }\r\n return (\r\n <>\r\n {statesLicensed.map((state, index) => (\r\n <StateLabelContainer\r\n key={state}\r\n className={styles.card__loState}\r\n style={{ zIndex: index, left: index * 29 }}\r\n >\r\n <StateLabel>{state}</StateLabel>\r\n </StateLabelContainer>\r\n ))}\r\n </>\r\n );\r\n };\r\n\r\n const isAdmin = !!getAdminId();\r\n\r\n return (\r\n <div\r\n key={loanOfficer.id}\r\n className={classnames(styles.card, { [styles['card--grow']]: showMoreStates })}\r\n >\r\n <div\r\n className={classnames(styles.card__content, {\r\n [cardClassName as string]: cardClassName,\r\n })}\r\n >\r\n <div className={styles.card__imgColumn}>\r\n <CustomImageTag\r\n className={styles.card__img}\r\n src={loanOfficer?.photoUrl}\r\n alt=\"preferred loan officer\"\r\n fallback={defaultAvatarImg}\r\n />\r\n </div>\r\n <div className={styles.card__infoColumn}>\r\n <p className={classnames(styles.card__fullName, styles.card__text)}>\r\n {loanOfficer.firstName} {loanOfficer.lastName}\r\n </p>\r\n <p className={classnames(styles.card__position, styles.card__text)}>\r\n {loanOfficer.jobTitle}\r\n </p>\r\n <ExperienceRating\r\n rating={loanOfficer?.rating || 0}\r\n totalReviewCount={loanOfficer?.totalReviewCount || 0}\r\n />\r\n {cellPhone && (\r\n <PhoneLink\r\n icon={PhoneIphoneIcon}\r\n phone={cellPhone}\r\n data-testid=\"preferred-loan-officer-card__cell-phone\"\r\n />\r\n )}\r\n {directPhone && (\r\n <PhoneLink\r\n icon={PhoneIcon}\r\n phone={directPhone}\r\n data-testid=\"preferred-loan-officer-card__direct-phone\"\r\n />\r\n )}\r\n {workPhone && (\r\n <PhoneLink\r\n icon={TbDeviceLandlinePhone}\r\n phone={workPhone}\r\n extension={workPhoneExtension}\r\n data-testid=\"preferred-loan-officer-card__work-phone\"\r\n />\r\n )}\r\n <div className={styles.card__email}>\r\n <a\r\n className={styles.card__link}\r\n href={getLoanOfficerEmailDetails(cc, subject)}\r\n data-testid=\"preferred-loan-officer-card__email\"\r\n >\r\n <EmailIcon className={styles.card__icon} />\r\n\r\n <p className={styles.card__text}>{loanOfficer.emailAddress}</p>\r\n </a>\r\n </div>\r\n {[cellPhone, directPhone, workPhone].map(\r\n (p, index) =>\r\n !p && (\r\n // eslint-disable-next-line react/no-array-index-key\r\n <div key={index} className={styles.card__filler}>\r\n <p className={styles.card__text}>_</p>\r\n </div>\r\n )\r\n )}\r\n\r\n {showStateLicenses && loanOfficer.stateLicenses && (\r\n <>\r\n <p className={styles.card__licenseText}>State Licenses</p>\r\n\r\n <div\r\n className={classnames(styles.card__loStates, {\r\n [styles['card__loStates--exposed']]: showMoreStates,\r\n })}\r\n data-testid=\"preferred-loan-officer-card__state-tags-container\"\r\n >\r\n {newRenderStateTags()}\r\n </div>\r\n </>\r\n )}\r\n {onRemove && (\r\n <CustomButton\r\n className={styles.card__remove}\r\n type=\"button\"\r\n fontSize={16}\r\n variant={MuiButtonType.text}\r\n disabled={isAdmin || disabled}\r\n dataTestId=\"preferred-loan-officer-card-remove\"\r\n onClick={(): void => {\r\n onRemove(loanOfficer, index);\r\n }}\r\n >\r\n <FaTrashAlt />\r\n <p className={styles.card__removeText}>Remove</p>\r\n </CustomButton>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default PreferredLoanOfficerCard;\r\n","import React, { ReactElement, SVGProps } from 'react';\r\n\r\nconst MarketingNafConnectLogo = (props: SVGProps<SVGSVGElement>): ReactElement => (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" x={0} y={0} viewBox=\"0 0 714.872 138.176\" {...props}>\r\n <g data-name=\"NAF Logo - Colored\">\r\n <path fill=\"#091644\" d=\"M0 0h138.176v138.176H0z\" data-name=\"Rectangle 3\" />\r\n <g data-name=\"Group 13\">\r\n <path\r\n fill=\"#fff\"\r\n d=\"M46.848 69.491c0-6.175-3.4-9.531-8.546-9.531-5.28 0-8.68 3.356-8.68 9.531v21.3h-9.755V52.218h9.755v4.788a14.41 14.41 0 0 1 11.634-5.37c8.993 0 15.392 5.862 15.392 16.51v22.642h-9.755v-21.3Z\"\r\n data-name=\"Path 37\"\r\n />\r\n </g>\r\n <g data-name=\"Group 14\">\r\n <path\r\n fill=\"#fff\"\r\n d=\"M76.695 51.68a15.148 15.148 0 0 1 12.708 6.131v-5.5h9.8v38.524h-9.8v-5.638a15.124 15.124 0 0 1-12.8 6.271c-9.755 0-17.542-8.01-17.542-20.046.049-12.042 7.835-19.742 17.634-19.742Zm2.506 8.546c-5.235 0-10.157 3.9-10.157 11.187s4.922 11.455 10.157 11.455c5.369 0 10.247-4.027 10.247-11.321s-4.883-11.32-10.248-11.32Z\"\r\n data-name=\"Path 38\"\r\n />\r\n </g>\r\n <g data-name=\"Group 15\">\r\n <path\r\n fill=\"#fff\"\r\n d=\"M111.642 52.396v-1.605c0-4.3 1.605-5.818 6.306-5.682h.4v-8.184h-.581c-10.693-.234-15.97 4.157-15.97 13.508v40.358h9.844v-30.43h6.712v-7.965Z\"\r\n data-name=\"Path 39\"\r\n />\r\n </g>\r\n <path\r\n fill=\"#091644\"\r\n d=\"M361.057 42.508a13.781 13.781 0 0 1 1.387 6.8 16.725 16.725 0 0 1-1.6 6.891 15.2 15.2 0 0 1-14.409 9.172c-11.5 0-15.975-9.8-16.064-16.109a15.708 15.708 0 0 1 15.169-16.243h.761a15.249 15.249 0 0 1 14.766 9.486m1.3-9.844a19.6 19.6 0 0 0-17.227-8.725c-13.916 0-24.476 10.829-24.476 25.236 0 12.619 8.412 25.326 24.476 25.326a19.76 19.76 0 0 0 17.227-8.68v7.293h9.62V25.279h-9.62v7.385ZM431.931 23.94a17.7 17.7 0 0 0-12.708 5.012 24.464 24.464 0 0 0-3.177 4.251l-.045-.134a21.431 21.431 0 0 0-2.685-3.982 16.105 16.105 0 0 0-12.44-5.146 16.761 16.761 0 0 0-13.961 7.114v-5.733h-9.123v47.789h9.621V46.984a16.53 16.53 0 0 1 2.506-9.486 9.781 9.781 0 0 1 8.591-4.471h.045a9.516 9.516 0 0 1 8.591 4.564 15.769 15.769 0 0 1 1.879 9.129v26.312h9.755V46.716a15.548 15.548 0 0 1 2.1-9.352 9.9 9.9 0 0 1 8.814-4.341 9.084 9.084 0 0 1 8.188 3.8c1.745 2.237 2.505 5.5 2.505 10.247v25.959h9.665V46.716c0-9.486-1.253-13.873-5.28-17.988a17.814 17.814 0 0 0-12.841-4.788M479.633 32.263h.358a14.891 14.891 0 0 1 14.9 12.485h-30.473a14.663 14.663 0 0 1 15.213-12.485m0-8.323a25.281 25.281 0 1 0 .09 50.562 24.192 24.192 0 0 0 13.644-4.071 26 26 0 0 0 9.665-11.809l.229-.447h-10.061l-.134.179a14.332 14.332 0 0 1-13.334 7.786c-7.069 0-14.9-4.788-15.437-13.692h40.226l.045-.313a25.757 25.757 0 0 0-7.2-21.165 24.656 24.656 0 0 0-17.72-7.025M517.981 31.233v-5.952h-9.172V73.07h9.665V47.296c0-9.129 4.207-13.692 12.574-13.692h.9v-9.71h-.358a15.03 15.03 0 0 0-13.6 7.338M537.849 24.119h9.621v10.202h-9.621zM537.849 40.496h9.621v32.575h-9.621zM689.135 23.94h-.268c-6.98 0-12.485 2.775-15.392 7.652v-6.306h-9.174v47.789h9.665V46.492c0-8.591 4.52-13.334 12.8-13.468 7.92 0 11.947 4.743 11.947 14.14v25.912h9.8V45.151c.045-7.876-2.506-21.031-19.377-21.211M647.303 56.201a15.21 15.21 0 0 1-14.364 9.172c-11.634 0-16.064-9.8-16.109-16.109a15.761 15.761 0 0 1 15.3-16.243h.666a15.349 15.349 0 0 1 14.766 9.531 14.362 14.362 0 0 1 1.343 6.8 18.043 18.043 0 0 1-1.6 6.846m1.521-30.92v7.338a19.773 19.773 0 0 0-17.182-8.725 23.991 23.991 0 0 0-18.973 8.9l-.045-.045-19.733 23.045-2.953 3.445a4.531 4.531 0 0 1-.581.715 15.4 15.4 0 0 1-11.992 5.369 15.641 15.641 0 0 1-15.8-15.478v-.715a16.815 16.815 0 0 1 4.471-11.669 15.249 15.249 0 0 1 10.963-4.564l.358.045a14.815 14.815 0 0 1 14.364 9.621l.134.229h.045l6.535-7.652a25.144 25.144 0 1 0-4.43 33.25 22.24 22.24 0 0 0 3.177-3.311l8.5-9.755 1.7-1.924c1.656 11.053 9.889 21.076 24.163 21.076a19.633 19.633 0 0 0 17.182-8.68v7.293h9.665v-47.8ZM183.147 24.7h-.265c-6.846 0-12.26 2.73-15.079 7.567v-6.18h-9V73.16h9.531V46.943c0-8.457 4.43-13.155 12.619-13.245 7.831 0 11.768 4.7 11.768 13.96v25.506h9.621V45.6c-.089-7.7-2.551-20.718-19.2-20.9M230.801 32.933h.313a14.61 14.61 0 0 1 14.676 12.215h-29.98c.581-6.041 6.265-12.215 14.99-12.215m0-8.233a24.9 24.9 0 1 0 .045 49.8 23.841 23.841 0 0 0 13.424-3.982 26.058 26.058 0 0 0 9.531-11.634l.179-.447h-9.889l-.045.134a14.274 14.274 0 0 1-13.155 7.7c-7.025 0-14.676-4.7-15.258-13.513h39.645l.045-.358a24.958 24.958 0 0 0-7.114-20.807 24.48 24.48 0 0 0-17.407-6.89M252.682 26.087h9.308l10.829 27.026L288.031 24.7h.451l14.632 28.592 10.784-27.251h9.308l-18.345 46.8h-.581L288.167 40.9l-16.422 31.988h-.581Z\"\r\n />\r\n <g fill=\"#091644\" data-name=\"Group 16\">\r\n <path\r\n d=\"M178.495 85.554v4.385h-13.963v9.71h10.874v4.385h-10.874v14.41h-5.414v-32.89Z\"\r\n data-name=\"Path 40\"\r\n />\r\n <path\r\n d=\"M203.238 85.554v20.982a6.728 6.728 0 0 0 7.428 7.518 7.6 7.6 0 0 0 5.5-1.879 7.5 7.5 0 0 0 1.969-5.638V85.554h5.368v20.9a12.5 12.5 0 0 1-1.745 6.8 10.57 10.57 0 0 1-4.7 4.162 15.468 15.468 0 0 1-6.488 1.387 14.478 14.478 0 0 1-6.444-1.387 10.355 10.355 0 0 1-4.603-4.162 13 13 0 0 1-1.7-6.8v-20.9Z\"\r\n data-name=\"Path 41\"\r\n />\r\n <path\r\n d=\"M271.923 118.443h-5.414L250.265 93.88v24.566h-5.414V85.51h5.414l16.243 24.521V85.51h5.414Z\"\r\n data-name=\"Path 42\"\r\n />\r\n <path\r\n d=\"M313.314 87.568a14.311 14.311 0 0 1 6.086 5.772 17.449 17.449 0 0 1 2.148 8.77 17.047 17.047 0 0 1-2.147 8.725 14.262 14.262 0 0 1-6.086 5.638 20.569 20.569 0 0 1-9.218 1.969h-10.74V85.554h10.74a19.989 19.989 0 0 1 9.217 2.014Zm-.358 23.357c2.064-2.1 3.088-5.011 3.088-8.815s-1.032-6.8-3.088-8.949-5.011-3.222-8.859-3.222h-5.37v24.115h5.369c3.848 0 6.8-1.028 8.859-3.132Z\"\r\n data-name=\"Path 43\"\r\n />\r\n <path d=\"M346.649 85.554v32.888h-5.414V85.554Z\" data-name=\"Path 44\" />\r\n <path\r\n d=\"M395.152 118.443h-5.414L373.494 93.88v24.566h-5.412V85.51h5.414l16.243 24.521V85.51h5.414Z\"\r\n data-name=\"Path 45\"\r\n />\r\n <path\r\n d=\"M440.399 95.04a8.606 8.606 0 0 0-3.535-3.714 10.539 10.539 0 0 0-5.235-1.253 11.358 11.358 0 0 0-5.818 1.477 10.2 10.2 0 0 0-3.982 4.162 12.819 12.819 0 0 0-1.432 6.265 13.336 13.336 0 0 0 1.432 6.265 10.332 10.332 0 0 0 3.982 4.207 11.357 11.357 0 0 0 5.818 1.477 10.239 10.239 0 0 0 7.159-2.46 10.627 10.627 0 0 0 3.356-6.667h-12.349v-4.392h18.122v4.207a16.4 16.4 0 0 1-8.457 12.215 15.988 15.988 0 0 1-7.831 1.924 16.978 16.978 0 0 1-8.457-2.148 16.3 16.3 0 0 1-6.086-6 16.626 16.626 0 0 1-2.237-8.68 17.179 17.179 0 0 1 2.237-8.68 15.981 15.981 0 0 1 6.086-6 17.945 17.945 0 0 1 17.809.447 14.79 14.79 0 0 1 5.952 7.293h-6.535Z\"\r\n data-name=\"Path 46\"\r\n />\r\n </g>\r\n <path\r\n fill=\"#091644\"\r\n d=\"M707.388 16.669h-1.96V22h-1.319v-5.331h-1.933V15.6h5.212Zm2.474-1.069 1.643 4.642 1.635-4.642h1.731V22h-1.322v-1.749l.132-3.019L711.954 22h-.906l-1.722-4.764.132 3.015V22h-1.319v-6.4Z\"\r\n data-name=\"Path 6953\"\r\n />\r\n </g>\r\n </svg>\r\n);\r\nexport default MarketingNafConnectLogo;\r\n","// extracted by mini-css-extract-plugin\nexport default {\"templateViewer\":\"template-viewer_templateViewer__h5Sr1\",\"templateViewer__link\":\"template-viewer_templateViewer__link__ShCJd\",\"templateViewer__icon\":\"template-viewer_templateViewer__icon__CxrSn\",\"templateViewer__header\":\"template-viewer_templateViewer__header__m7MdP\",\"templateViewer__divider\":\"template-viewer_templateViewer__divider__fMUgG\",\"templateViewer__disclaimer\":\"template-viewer_templateViewer__disclaimer__VOh-o\",\"preferredLoanOfficers\":\"template-viewer_preferredLoanOfficers__jsps8\",\"preferredLoanOfficers__title\":\"template-viewer_preferredLoanOfficers__title__6W9Mr\",\"preferredLoanOfficers__container\":\"template-viewer_preferredLoanOfficers__container__4fuJi\",\"preferredLoanOfficers__loanDisclaimer\":\"template-viewer_preferredLoanOfficers__loanDisclaimer__GF5LF\",\"preferredLoanOfficers__cards\":\"template-viewer_preferredLoanOfficers__cards__4mo51\",\"preferredLoanOfficers__card\":\"template-viewer_preferredLoanOfficers__card__ff-1q\",\"preferredLoanOfficers__phoneIcon\":\"template-viewer_preferredLoanOfficers__phoneIcon__5gCCd\"};","import { MouseEvent, ReactElement } from 'react';\r\nimport styles from './template-viewer.module.scss';\r\nimport { West } from '@mui/icons-material';\r\nimport { HeadingSize, FontWeight } from 'app/shared/enums';\r\nimport { defaultSalesDirector } from 'app/shared/helpers/template-data.helper';\r\nimport { useTemplateData } from 'app/shared/hooks';\r\nimport { LoanOfficer } from 'app/shared/models';\r\nimport { useParams, useNavigate, useLocation } from 'react-router-dom';\r\nimport CustomCircularProgress from '../custom-circular-progress/custom-circular-progress.component';\r\nimport { FeatureHeader } from '../feature-header/feature-header.component';\r\nimport { Heading } from '../heading/heading.component';\r\nimport PreferredLoanOfficerCard from '../preferred-loan-officer-card/preferred-loan-officer-card.component';\r\n\r\ninterface TemplateViewerProps {\r\n isNAFConnectTour?: boolean;\r\n}\r\n\r\nconst TemplateViewer = (props: TemplateViewerProps): ReactElement => {\r\n const { isNAFConnectTour = false } = props;\r\n const { templateId = '' } = useParams();\r\n const location = useLocation();\r\n const navigate = useNavigate();\r\n\r\n const {\r\n templateData,\r\n templateContent,\r\n disclaimer,\r\n preferredLoanOfficers,\r\n showDefaultSalesDirector,\r\n strategicPartner,\r\n } = useTemplateData(templateId);\r\n\r\n const onNavigateBack = (): void => {\r\n if (location.pathname.includes('/tour/')) {\r\n navigate('/rea/tour');\r\n } else if (location.pathname.includes('/partnerships-and-products/')) {\r\n navigate('/rea/partnerships-and-products');\r\n }\r\n };\r\n\r\n const routeButtonClick = (event: MouseEvent<HTMLDivElement>): void => {\r\n const target = event.target as HTMLElement;\r\n const url = target.getAttribute('href');\r\n\r\n if (target.tagName === 'A' && url) {\r\n const targetBlank = target.getAttribute('_blank');\r\n\r\n if (!targetBlank) return;\r\n\r\n event.preventDefault();\r\n navigate(url);\r\n }\r\n };\r\n\r\n if (!templateContent) return <CustomCircularProgress />;\r\n\r\n return (\r\n <div className={styles.templateViewer}>\r\n <div className={styles.templateViewer__link} onClick={onNavigateBack}>\r\n <West className={styles.templateViewer__icon} />\r\n Back to {isNAFConnectTour ? 'NAF Connect Tour' : 'Partnerships & Products'}\r\n </div>\r\n\r\n <FeatureHeader\r\n className={styles.templateViewer__header}\r\n dividerClassName={styles.templateViewer__divider}\r\n >\r\n <Heading as={HeadingSize.h3} size={3} fontWeight={FontWeight.semiBold}>\r\n {templateData?.title}\r\n </Heading>\r\n </FeatureHeader>\r\n\r\n <div\r\n className={styles.content}\r\n onClick={routeButtonClick}\r\n dangerouslySetInnerHTML={{ __html: templateContent }}\r\n />\r\n\r\n {templateData?.withLoanOfficer && (\r\n <div className={styles.preferredLoanOfficers}>\r\n <h1 className={styles.preferredLoanOfficers__title}>\r\n For more information, please contact us today!\r\n </h1>\r\n <div className={styles.preferredLoanOfficers__container}>\r\n {!showDefaultSalesDirector &&\r\n preferredLoanOfficers?.map(\r\n (loanOfficer: LoanOfficer, index: number) => (\r\n <div className={styles.preferredLoanOfficers__cards}>\r\n <PreferredLoanOfficerCard\r\n key={loanOfficer.externalLoanOfficerId}\r\n loanOfficer={loanOfficer}\r\n index={index}\r\n cardClassName={styles.preferredLoanOfficers__card}\r\n showStateLicenses={false}\r\n disabled={false}\r\n cc={templateData.cc}\r\n subject={templateData.subject}\r\n />\r\n </div>\r\n )\r\n )}\r\n {showDefaultSalesDirector && (\r\n <div className={styles.preferredLoanOfficers__cards}>\r\n <PreferredLoanOfficerCard\r\n key={defaultSalesDirector.id}\r\n loanOfficer={defaultSalesDirector}\r\n index={0}\r\n cardClassName={styles.preferredLoanOfficers__card}\r\n showStateLicenses={false}\r\n disabled={false}\r\n cc={templateData.cc}\r\n subject={templateData.subject}\r\n />\r\n </div>\r\n )}\r\n\r\n {strategicPartner && (\r\n <div className={styles.preferredLoanOfficers__cards}>\r\n <PreferredLoanOfficerCard\r\n key={strategicPartner.externalLoanOfficerId}\r\n loanOfficer={strategicPartner}\r\n index={0}\r\n cardClassName={styles.preferredLoanOfficers__card}\r\n showStateLicenses={false}\r\n disabled={false}\r\n cc={templateData.cc}\r\n subject={templateData.subject}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n\r\n {disclaimer && (\r\n <div\r\n className={styles.templateViewer__disclaimer}\r\n dangerouslySetInnerHTML={{ __html: disclaimer }}\r\n />\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default TemplateViewer;\r\n","enum ResponsiveLayout {\r\n Mobile = 'mobile',\r\n Tablet = 'tablet',\r\n Desktop = 'desktop',\r\n}\r\n\r\nexport default ResponsiveLayout;\r\n","import { LoanOfficer } from 'app/shared/models';\r\n\r\nexport const commentRegex = /<!--(.*?)-->/gs;\r\n\r\nexport const defaultSalesDirector: LoanOfficer = {\r\n id: 'cc4cf678-189a-4e88-bee7-2e5f83696f40',\r\n externalLoanOfficerId: '',\r\n firstName: 'Nick',\r\n lastName: 'Kopeles',\r\n emailAddress: 'nick.kopeles@nafinc.com',\r\n phoneNumber: '',\r\n nmlsLicenseNumber: '',\r\n photoUrl: '',\r\n spanishSpeaking: false,\r\n hasActiveDeals: false,\r\n jobTitle: 'Sr. Sales Director',\r\n phones: [\r\n {\r\n extension: '',\r\n number: '949-561-1403x51159',\r\n type: 2,\r\n },\r\n ],\r\n stateLicenses: [],\r\n};\r\n\r\nexport const templateContentObj = {\r\n title: '',\r\n showLoanOfficer: '',\r\n cc: '',\r\n subject: '',\r\n strategicPartnerId: '',\r\n};\r\n\r\nexport const setTemplateProperty = (\r\n property: keyof typeof templateContentObj,\r\n comment: string\r\n): void => {\r\n templateContentObj[property] = parseComment(comment);\r\n};\r\n\r\nexport const parseComment = (comment: string): string => {\r\n if (!comment) return '';\r\n const index = comment.indexOf(':');\r\n\r\n return comment\r\n .substring(index + 1, comment.length)\r\n .replace(/-->/g, '')\r\n .trim();\r\n};\r\n","import { useState } from 'react';\r\n\r\ninterface ModalHook {\r\n isModalOpen: boolean;\r\n showModal: () => void;\r\n hideModal: () => void;\r\n}\r\n\r\nexport const useModal = (): ModalHook => {\r\n const [isModalOpen, setIsModalOpen] = useState(false);\r\n\r\n const showModal = (): void => setIsModalOpen(true);\r\n const hideModal = (): void => setIsModalOpen(false);\r\n\r\n return { isModalOpen, showModal, hideModal };\r\n};\r\n","import { useState } from 'react';\r\nimport { UserStateSelection } from '../models';\r\n\r\ninterface StateSelectErrorHook {\r\n stateInvalid: boolean;\r\n stateSelected: string;\r\n selectErrorMessage: string | undefined;\r\n handleUserStateSelect: (state: string) => void;\r\n}\r\n\r\nexport const useStateSelectError = (): StateSelectErrorHook => {\r\n const [userStateSelection, setStateSelectedValues] = useState<UserStateSelection>({\r\n stateInvalid: false,\r\n stateSelected: '',\r\n selectErrorMessage: undefined,\r\n });\r\n\r\n const handleUserStateSelect = (state: string): void => {\r\n const invalidSelection = ['HI'];\r\n const isInValid = invalidSelection.includes(state);\r\n\r\n setStateSelectedValues({\r\n stateInvalid: isInValid,\r\n stateSelected: state,\r\n selectErrorMessage: isInValid\r\n ? `${state} is not supported. Select a different State.`\r\n : undefined,\r\n });\r\n };\r\n\r\n return { ...userStateSelection, handleUserStateSelect };\r\n};\r\n","import apTheme from 'app/shared/themes/app.theme';\r\n\r\nimport { useMediaQuery } from '@mui/material';\r\n\r\ninterface MuiMediaQueryHook {\r\n isMobile: boolean;\r\n isTablet: boolean;\r\n isDesktop: boolean;\r\n}\r\n\r\nexport const useMuiMediaQuery = (): MuiMediaQueryHook => {\r\n const isMobile = useMediaQuery(`(max-width:${apTheme.breakpoints.values.sm}px)`);\r\n const isTablet = useMediaQuery(\r\n `(min-width:${apTheme.breakpoints.values.sm}px) and (max-width:${apTheme.breakpoints.values.md}px)`\r\n );\r\n const isDesktop = useMediaQuery(`(min-width:${apTheme.breakpoints.values.md}px)`);\r\n\r\n return { isMobile, isTablet, isDesktop };\r\n};\r\n","export const useScrollTopOffset = (top: number, offset: number): void => {\r\n const scrollOutlet = document.getElementById('outlet');\r\n\r\n if (scrollOutlet) {\r\n scrollOutlet.scrollTo({\r\n top: top - offset,\r\n behavior: 'smooth',\r\n });\r\n }\r\n};\r\n","import { RefObject, useLayoutEffect, useRef } from 'react';\r\n\r\nexport const useResizeObserver = <T extends HTMLElement>(\r\n callback: (target: T, entry: ResizeObserverEntry) => void\r\n): RefObject<T> => {\r\n const ref = useRef<T>(null);\r\n const { ResizeObserver } = window;\r\n\r\n useLayoutEffect(() => {\r\n const element = ref?.current;\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n const observer = new ResizeObserver((entries: Array<ResizeObserverEntry>) => {\r\n callback(element, entries[0]);\r\n });\r\n\r\n observer.observe(element);\r\n // eslint-disable-next-line consistent-return\r\n return (): void => {\r\n observer.disconnect();\r\n };\r\n }, [callback, ref]);\r\n\r\n return ref;\r\n};\r\n","import { useEffect, useReducer } from 'react';\r\n\r\nenum ActionType {\r\n LOAD_SUCCESS,\r\n LOAD_ERROR,\r\n RESET,\r\n}\r\n\r\nenum EventType {\r\n ON_LOAD = 'load',\r\n ON_ERROR = 'error',\r\n}\r\n\r\ntype ImageLoadedState = {\r\n imageLoadAttempted: boolean;\r\n imageLoaded: boolean;\r\n imageError: boolean | null;\r\n};\r\n\r\ntype Action =\r\n | { type: ActionType.LOAD_SUCCESS }\r\n | { type: ActionType.LOAD_ERROR }\r\n | { type: ActionType.RESET };\r\n\r\nconst initialState: ImageLoadedState = {\r\n imageLoadAttempted: false,\r\n imageLoaded: false,\r\n imageError: null,\r\n};\r\n\r\nconst imageLoadedReducer = (state: ImageLoadedState, action: Action): ImageLoadedState => {\r\n switch (action.type) {\r\n case ActionType.LOAD_SUCCESS:\r\n return {\r\n ...state,\r\n imageLoadAttempted: true,\r\n imageLoaded: true,\r\n imageError: null,\r\n };\r\n case ActionType.LOAD_ERROR:\r\n return { ...state, imageLoadAttempted: true, imageLoaded: false, imageError: true };\r\n case ActionType.RESET:\r\n return { ...initialState };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport const useImageLoaded = (src: string | undefined): ImageLoadedState => {\r\n const [imageLoadedState, dispatch] = useReducer(imageLoadedReducer, initialState);\r\n\r\n useEffect(() => {\r\n if (src) {\r\n const image = new Image();\r\n\r\n const onLoad = (): void => dispatch({ type: ActionType.LOAD_SUCCESS });\r\n const onError = (): void => dispatch({ type: ActionType.LOAD_ERROR });\r\n\r\n image.addEventListener(EventType.ON_LOAD, onLoad);\r\n image.addEventListener(EventType.ON_ERROR, onError);\r\n\r\n image.src = src;\r\n\r\n return (): void => {\r\n image.removeEventListener(EventType.ON_LOAD, onLoad);\r\n image.removeEventListener(EventType.ON_ERROR, onError);\r\n };\r\n }\r\n\r\n return (): void => dispatch({ type: ActionType.RESET });\r\n }, [src]);\r\n\r\n return imageLoadedState;\r\n};\r\n","import { useReducer } from 'react';\r\n\r\nenum ComponentActionType {\r\n SET_AUTOCOMPLETE_INPUT_VALUE,\r\n RESET_AUTOCOMPLETE,\r\n SET_IS_DROPDOWN_OPEN,\r\n}\r\n\r\ntype ComponentState = {\r\n inputValue: string;\r\n isDropdownOpen: boolean;\r\n};\r\n\r\ntype ComponentActions =\r\n | { type: ComponentActionType.SET_AUTOCOMPLETE_INPUT_VALUE; payload: string }\r\n | {\r\n type: ComponentActionType.RESET_AUTOCOMPLETE;\r\n payload: { inputValue: string; isDropdownOpen: boolean };\r\n }\r\n | { type: ComponentActionType.SET_IS_DROPDOWN_OPEN; payload: boolean };\r\n\r\ntype ComponentFunctions = {\r\n setAutocompleteInputValue: (inputValue: string) => void;\r\n resetAutoComplete: (payload: { inputValue: string; isDropdownOpen: boolean }) => void;\r\n setIsDropDownOpen: (isDropDownOpen: boolean) => void;\r\n};\r\n\r\nconst initialState: ComponentState = {\r\n inputValue: '',\r\n isDropdownOpen: false,\r\n};\r\n\r\nconst AutocompleteReducer = (state: ComponentState, action: ComponentActions): ComponentState => {\r\n switch (action.type) {\r\n case ComponentActionType.SET_AUTOCOMPLETE_INPUT_VALUE:\r\n return {\r\n ...state,\r\n inputValue: action.payload,\r\n };\r\n case ComponentActionType.RESET_AUTOCOMPLETE:\r\n return {\r\n ...state,\r\n isDropdownOpen: action.payload.isDropdownOpen,\r\n inputValue: action.payload.inputValue,\r\n };\r\n\r\n case ComponentActionType.SET_IS_DROPDOWN_OPEN:\r\n return {\r\n ...state,\r\n isDropdownOpen: action.payload,\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport const useAutocompleteState = (): [ComponentState, ComponentFunctions] => {\r\n const [state, dispatch] = useReducer(AutocompleteReducer, initialState);\r\n\r\n const setAutocompleteInputValue = (inputValue: string): void => {\r\n dispatch({ type: ComponentActionType.SET_AUTOCOMPLETE_INPUT_VALUE, payload: inputValue });\r\n };\r\n\r\n const resetAutoComplete = (payload: { inputValue: string; isDropdownOpen: boolean }): void => {\r\n dispatch({ type: ComponentActionType.RESET_AUTOCOMPLETE, payload });\r\n };\r\n\r\n const setIsDropDownOpen = (isDropDownOpen: boolean): void =>\r\n dispatch({ type: ComponentActionType.SET_IS_DROPDOWN_OPEN, payload: isDropDownOpen });\r\n\r\n const actions: ComponentFunctions = {\r\n setAutocompleteInputValue,\r\n resetAutoComplete,\r\n setIsDropDownOpen,\r\n };\r\n\r\n return [state, actions];\r\n};\r\n","import { KeyboardEvent, useCallback } from 'react';\r\nimport { useNavigate } from 'react-router-dom';\r\n\r\nexport const useNavigateOnKeyDown = (id: number | string): ReturnType<typeof useCallback> => {\r\n const navigate = useNavigate();\r\n\r\n const handleKeyDown = useCallback(\r\n (event: KeyboardEvent) => {\r\n const keys = ['Enter'];\r\n\r\n const navigateId = typeof id === 'number' ? id.toString() : id;\r\n\r\n if (keys.includes(event.key)) {\r\n navigate(navigateId);\r\n }\r\n },\r\n [id]\r\n );\r\n\r\n return handleKeyDown;\r\n};\r\n","import { useCallback, useEffect, useState } from 'react';\r\nimport { NotificationActivityType, NotificationType } from '../enums';\r\nimport { useLazyGetTemplatesWithBearerToken } from 'app/store/api/templates/templates.api';\r\nimport { GetTemplateResponse } from 'app/store/api/templates/models/templates.model';\r\n\r\nexport interface Template {\r\n activityType: NotificationActivityType;\r\n templates: Array<GetTemplateResponse> | undefined;\r\n}\r\n\r\nexport const useTemplates = (\r\n activityTypes: NotificationActivityType[],\r\n notificationType: NotificationType\r\n): { templates: Template[]; fetchTemplates: () => void } => {\r\n const [templates, setTemplates] = useState<Template[]>([]);\r\n const [getTemplate] = useLazyGetTemplatesWithBearerToken();\r\n\r\n const fetchTemplates = useCallback(async (): Promise<void> => {\r\n const templatePromises = activityTypes.map(async (activityType) => {\r\n const { data: templates } = await getTemplate({\r\n activityType,\r\n type: notificationType,\r\n });\r\n return { activityType, templates };\r\n });\r\n\r\n const templateData = await Promise.all(templatePromises);\r\n\r\n setTemplates(templateData);\r\n }, [activityTypes, notificationType, getTemplate]);\r\n\r\n useEffect(() => {\r\n fetchTemplates();\r\n }, []);\r\n\r\n return { templates, fetchTemplates };\r\n};\r\n","import { useGetTemplateQuery } from 'app/store/api/templates/templates.api';\r\nimport { useEffect, useState } from 'react';\r\nimport {\r\n commentRegex,\r\n templateContentObj,\r\n setTemplateProperty,\r\n} from '../helpers/template-data.helper';\r\nimport { useGetPreferredLoanOfficersQuery } from 'app/store/api/real-estate-agent/real-estate-agent.api';\r\nimport { LoanOfficer, TemplateData } from 'app/shared/models';\r\nimport { useGetLoanOfficerByIdQuery } from 'app/store/api/loan-officer/loan-officer.api';\r\nimport { TemplateVariables } from 'app/shared/enums';\r\n\r\ninterface TemplateDataHook {\r\n templateData: TemplateData | null;\r\n disclaimer: string | undefined;\r\n templateContent: string | undefined;\r\n preferredLoanOfficers: LoanOfficer[] | null | undefined;\r\n showDefaultSalesDirector: boolean;\r\n strategicPartner: LoanOfficer | undefined;\r\n}\r\n\r\ntype TemplateReplaceMap = {\r\n [key in TemplateVariables]: keyof typeof templateContentObj;\r\n};\r\n\r\ntype Disclaimer = string | undefined;\r\n\r\nconst templateReplaceMap: TemplateReplaceMap = {\r\n [TemplateVariables.title]: 'title',\r\n [TemplateVariables.withLoanOfficer]: 'showLoanOfficer',\r\n [TemplateVariables.cc]: 'cc',\r\n [TemplateVariables.subject]: 'subject',\r\n [TemplateVariables.strategicPartnerId]: 'strategicPartnerId',\r\n};\r\n\r\nexport const useTemplateData = (templateGuid: string | undefined): TemplateDataHook => {\r\n const [disclaimer, setDisclaimer] = useState<Disclaimer>();\r\n const [templateData, setTemplateData] = useState<TemplateData | null>(null);\r\n const { data: preferredLoanOfficers } = useGetPreferredLoanOfficersQuery();\r\n const showDefaultSalesDirector =\r\n (preferredLoanOfficers?.length === 0 || preferredLoanOfficers === undefined) ?? true;\r\n\r\n const { templateContent } = useGetTemplateQuery(\r\n { guid: templateGuid },\r\n {\r\n skip: !templateGuid,\r\n selectFromResult: ({ data }) => ({ templateContent: data?.content }),\r\n }\r\n );\r\n\r\n const { data: strategicPartner } = useGetLoanOfficerByIdQuery(\r\n templateData?.strategicPartnerId ?? '',\r\n {\r\n skip:\r\n templateData?.strategicPartnerId === undefined ||\r\n templateData?.strategicPartnerId === '',\r\n }\r\n );\r\n\r\n const getDisclaimer = (templateContent: string): void => {\r\n const container = document.createElement('div');\r\n container.innerHTML = templateContent;\r\n const disclaimer = container.querySelector('template');\r\n\r\n if (disclaimer) {\r\n setDisclaimer(disclaimer.innerHTML);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (templateContent) {\r\n const comments = templateContent.match(commentRegex);\r\n\r\n if (comments) {\r\n comments.forEach((comment: string) => {\r\n Object.entries(templateReplaceMap).forEach(([variable, property]) => {\r\n if (comment.toLowerCase().includes(variable.toLowerCase())) {\r\n setTemplateProperty(property, comment);\r\n }\r\n });\r\n });\r\n setTemplateData({\r\n title: templateContentObj.title,\r\n withLoanOfficer: templateContentObj.showLoanOfficer.toLowerCase() === 'true',\r\n cc: templateContentObj.cc,\r\n subject: templateContentObj.subject,\r\n strategicPartnerId: templateContentObj.strategicPartnerId,\r\n });\r\n getDisclaimer(templateContent);\r\n }\r\n }\r\n }, [templateContent]);\r\n\r\n return {\r\n templateData,\r\n templateContent,\r\n disclaimer,\r\n preferredLoanOfficers,\r\n showDefaultSalesDirector,\r\n strategicPartner,\r\n };\r\n};\r\n","import { useEffect, useState } from 'react';\r\nimport { useWindowSize } from 'usehooks-ts';\r\nimport ResponsiveLayout from '../enums/responsive-layout.enum';\r\n\r\nexport const useWhichLayout = (): ResponsiveLayout => {\r\n const { width } = useWindowSize();\r\n const [layout, setLayout] = useState<ResponsiveLayout>(configureLayout(width));\r\n\r\n useEffect(() => {\r\n setLayout(configureLayout(width));\r\n }, [width]);\r\n\r\n return layout;\r\n};\r\n\r\nconst configureLayout = (width: number): ResponsiveLayout => {\r\n if (width <= 414) {\r\n return ResponsiveLayout.Mobile;\r\n }\r\n if (width >= 415 && width <= 820) {\r\n return ResponsiveLayout.Tablet;\r\n }\r\n return ResponsiveLayout.Desktop;\r\n};\r\n","import { MouseEvent, RefObject, useState } from 'react';\r\nimport { PagePosition } from 'app/shared/models';\r\n\r\ninterface PdfControls {\r\n pageNumber: number;\r\n scalePercent: number;\r\n scale: number;\r\n prevPage: () => void;\r\n nextPage: () => void;\r\n zoomIn: () => void;\r\n zoomOut: () => void;\r\n handleMouseDown: (event: MouseEvent<HTMLDivElement>) => void;\r\n handleMouseMove: (event: MouseEvent<HTMLDivElement>) => void;\r\n handleMouseUp: (event: MouseEvent<HTMLDivElement>) => void;\r\n overflow: 'scroll' | 'hidden';\r\n cursor: 'default' | 'grab' | 'grabbing';\r\n}\r\n\r\nexport const usePdfControls = (\r\n numberOfPages: number,\r\n containerRef: RefObject<HTMLDivElement>\r\n): PdfControls => {\r\n const [pageNumber, setPageNumber] = useState<number>(1);\r\n const [scalePercent, setScalePercent] = useState<number>(100);\r\n const [dragging, setDragging] = useState<boolean>(false);\r\n const [lastPosition, setLastPosition] = useState<PagePosition>({ x: 0, y: 0 });\r\n const [overflow, setOverflow] = useState<'scroll' | 'hidden'>('hidden');\r\n const [cursor, setCursor] = useState<'default' | 'grab' | 'grabbing'>('default');\r\n const scale = scalePercent * 0.01;\r\n\r\n const prevPage = (): void => {\r\n setPageNumber((prevPage) => {\r\n if (prevPage > 1) return prevPage - 1;\r\n return prevPage;\r\n });\r\n };\r\n\r\n const nextPage = (): void => {\r\n setPageNumber((prevPage) => {\r\n if (prevPage < numberOfPages) return prevPage + 1;\r\n return prevPage;\r\n });\r\n };\r\n\r\n const zoomIn = (): void => {\r\n setScalePercent((prevPercent): number => {\r\n if (prevPercent <= 180) {\r\n return prevPercent + 20;\r\n }\r\n return prevPercent;\r\n });\r\n setOverflow('scroll');\r\n setCursor('grab');\r\n };\r\n\r\n const zoomOut = (): void => {\r\n setScalePercent((prevPercent): number => {\r\n const newPercent = prevPercent - 20;\r\n if (newPercent >= 100) {\r\n if (newPercent === 100) {\r\n setOverflow('hidden');\r\n setCursor('default');\r\n }\r\n return newPercent;\r\n }\r\n return prevPercent;\r\n });\r\n };\r\n\r\n const handleMouseDown = (event: MouseEvent<HTMLDivElement>): void => {\r\n event.preventDefault();\r\n\r\n setDragging(true);\r\n setCursor(scalePercent > 100 ? 'grabbing' : 'default');\r\n setLastPosition({ x: event.clientX, y: event.clientY });\r\n };\r\n\r\n const handleMouseMove = (event: MouseEvent<HTMLDivElement>): void => {\r\n if (!dragging) return;\r\n\r\n if (containerRef.current) {\r\n const deltaX = event.clientX - lastPosition.x;\r\n const deltaY = event.clientY - lastPosition.y;\r\n\r\n containerRef.current.scrollLeft -= deltaX;\r\n containerRef.current.scrollTop -= deltaY;\r\n }\r\n\r\n setLastPosition({ x: event.clientX, y: event.clientY });\r\n };\r\n\r\n const handleMouseUp = (): void => {\r\n setDragging(false);\r\n setCursor(scalePercent > 100 ? 'grab' : 'default');\r\n };\r\n\r\n return {\r\n pageNumber,\r\n scalePercent,\r\n scale,\r\n prevPage,\r\n nextPage,\r\n zoomIn,\r\n zoomOut,\r\n handleMouseDown,\r\n handleMouseMove,\r\n handleMouseUp,\r\n overflow,\r\n cursor,\r\n };\r\n};\r\n","import { EnvContext } from 'app/contexts/environment/environment.context';\r\nimport { useContext } from 'react';\r\n\r\ninterface SocialSignOnHook {\r\n linkedinAuthUrl: string;\r\n googleScope: string;\r\n linkedinConfig: {\r\n clientId: string;\r\n redirectUrl: string;\r\n oauthUrl: string;\r\n scope: string;\r\n state: boolean;\r\n };\r\n}\r\n\r\nexport const useSocialSignOn = (): SocialSignOnHook => {\r\n const env = useContext(EnvContext);\r\n const { LINKEDIN_CLIENT_ID = '', REDIRECT_URI = '' } = env;\r\n const linkedinAuthUrl = 'https://www.linkedin.com/oauth/v2/authorization?response_type=code';\r\n const googleScope =\r\n 'https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/user.phonenumbers.read';\r\n\r\n const linkedinConfig = {\r\n clientId: LINKEDIN_CLIENT_ID,\r\n redirectUrl: REDIRECT_URI,\r\n oauthUrl: linkedinAuthUrl,\r\n scope: 'r_liteprofile%20r_emailaddress',\r\n state: true,\r\n };\r\n\r\n return {\r\n linkedinAuthUrl,\r\n googleScope,\r\n linkedinConfig,\r\n };\r\n};\r\n","import { EnvContext } from 'app/contexts/environment/environment.context';\r\nimport { useContext } from 'react';\r\n\r\ninterface NafConnectImages {\r\n confettiImg: string;\r\n closingCardsImg: string;\r\n greetingCardsImg: string;\r\n mortgageStatement: string;\r\n notificationsLogo: string;\r\n devicesHeroImg: string;\r\n devicesHeroImgSm: string;\r\n nafConnectLogoLight: string;\r\n defaultAvatarImg: string;\r\n nafConnectLogo: string;\r\n nafConnectSquareLogo: string;\r\n experienceDotComLogo: string;\r\n statusUpdateTemplatePrimary: string;\r\n statusUpdateTemplateSecondary: string;\r\n}\r\n\r\nexport const useNafConnectImages = (): NafConnectImages => {\r\n const env = useContext(EnvContext);\r\n const { BLOB_STORAGE_URL = '' } = env;\r\n\r\n return {\r\n confettiImg: `${BLOB_STORAGE_URL}/assets/images/confetti.svg`,\r\n closingCardsImg: `${BLOB_STORAGE_URL}/assets/images/naf-mockups-2023-inside-ClosingCard.png`,\r\n greetingCardsImg: `${BLOB_STORAGE_URL}/assets/images/naf-pcc-mockups-2023-inside.png`,\r\n mortgageStatement: `${BLOB_STORAGE_URL}/assets/images/mortgage-statement-sample-watermark.png`,\r\n notificationsLogo: `${BLOB_STORAGE_URL}/assets/images/illustration-user-mobile-notifications.png`,\r\n devicesHeroImg: `${BLOB_STORAGE_URL}/assets/images/devices-naf-connect-housingwire-tech100-award.png`,\r\n devicesHeroImgSm: `${BLOB_STORAGE_URL}/assets/images/devices-naf-connect-housingwire-tech100-award-sm.png`,\r\n nafConnectLogoLight: `${BLOB_STORAGE_URL}/assets/images/logo-naf-connect-for-dark-bgs-alt.svg`,\r\n defaultAvatarImg: `${BLOB_STORAGE_URL}/assets/images/default-avatar.png`,\r\n nafConnectLogo: `${BLOB_STORAGE_URL}/assets/images/naf-connect-logo.png`,\r\n nafConnectSquareLogo: `${BLOB_STORAGE_URL}/assets/images/naf-notification-logo.png`,\r\n experienceDotComLogo: `${BLOB_STORAGE_URL}/assets/images/experience-dot-com-logo.png`,\r\n statusUpdateTemplatePrimary: `${BLOB_STORAGE_URL}/assets/images/naf-connect-email-loan-status-update-marketing-message.png`,\r\n statusUpdateTemplateSecondary: `${BLOB_STORAGE_URL}/assets/images/naf-connect-email-loan-status-update-original.png`,\r\n };\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"selectField__formGroup\":\"custom-select-field_selectField__formGroup__KCkvm\",\"selectField__errorText\":\"custom-select-field_selectField__errorText__z8Ma0\",\"selectField__alert\":\"custom-select-field_selectField__alert__1nQnU\",\"selectField__option\":\"custom-select-field_selectField__option__snxwu\",\"selectField__placeholderItem\":\"custom-select-field_selectField__placeholderItem__OJvfG\",\"selectField__missingFieldPlaceholderItem\":\"custom-select-field_selectField__missingFieldPlaceholderItem__34zH6\"};"],"names":["AppModal","props","children","heading","open","headingImgSrc","className","headingClassName","handleClose","_jsx","ThemeProvider","theme","_jsxs","Dialog","alt","src","IconButton","style","zIndex","onClick","CloseIcon","styles","classnames","id","DialogContent","createTheme","components","MuiSvgIcon","styleOverrides","root","fontSize","pxToRem","MuiIconButton","position","right","top","width","height","backgroundColor","concat","Color","dustGray","fill","white","MuiDialog","background","paper","border","lightGrey2","borderRadius","boxShadow","cornflowerBlue","margin","maxWidth","MuiDialogContent","padding","appTheme","breakpoints","up","MuiPaper","down","Astrik","Card","_ref","defaultProps","undefined","MuiButton","ownerState","fontWeight","fontFamily","letterSpacing","variant","MuiButtonType","contained","nafPrimaryBlue","color","primaryButtonHoverBlue","lightGrey3","MuiColorType","secondary","nafSecondaryBlue","outlined","textDecoration","text","textTransform","lineHeight","minWidth","darkCharcoal","CustomLoadingButton","type","disabled","startIcon","endIcon","colorTheme","TextTransformType","capitalize","loading","Button","sx","CircularProgress","size","disableRipple","PhoneMaskCustom","forwardRef","ref","onChange","other","IMaskInput","mask","unmask","definitions","inputRef","onAccept","value","target","name","overwrite","CustomPhoneInput","inputLabel","placeholder","fullWidth","errorType","errorMessage","requiredInput","defaultValue","control","register","autoComplete","missingField","helperText","customTheme","datatestId","missingFieldTheme","Controller","render","field","onBlur","_Fragment","InputLabel","htmlFor","TextField","event","error","required","InputProps","inputComponent","Typography","ErrorOutlinedIcon","MuiInputLabel","MuiOutlinedInput","alert","paddingTop","paddingRight","MuiTypography","display","justifyContent","alignItems","maxHeight","ITEM_HEIGHT","anchorOrigin","vertical","horizontal","MuiMenuItem","alignItem","marginBottom","nafDark","fontStyle","MuiFormControl","paddingLeft","lightBlue","lightGrey","input","MuiSelect","icon","whiteSpace","MuiFormLabel","asterisk","MuiInput","marginTop","danger","marginLeft","MuiFormHelperText","StyledRating","styled","Rating","paddingBottom","goldStar","rating","totalReviewCount","experienceDotComLogo","useNafConnectImages","precision","readOnly","FeatureHeader","hideLineMobile","dividerClassName","Heading","as","Component","colorPrimaryBlue","rest","CustomTextField","FormGroup","FormLabel","CustomButton","dataTestId","CustomIconButton","testId","CustomIconButtonTheme","SocialSignOnButton","layout","useWhichLayout","ResponsiveLayout","Mobile","FooterLegal","copyrightText","href","termsUrl","privacyUrl","HeaderLegal","nafConnectLogoLight","PasswordRules","_errors$password","_errors$password$type","_errors$password$type2","_errors$password2","_errors$password2$typ","_errors$password2$typ2","_errors$password3","_errors$password3$typ","_errors$password3$typ2","_errors$password4","_errors$password4$typ","_errors$password4$typ2","_errors$password5","_errors$password5$typ","_errors$password5$typ2","_errors$password6","_errors$password6$typ","_errors$password6$typ2","_errors$password7","_errors$password7$typ","_errors$password7$typ2","_errors$password8","_errors$password8$typ","_errors$password8$typ2","errors","instructions","instructions__title","instructions__cards","password","types","min","includes","instructions__list","CancelOutlined","CheckCircleOutline","matches","CustomPasswordTextField","displayAllErrors","toggleVisibility","setToggleVisibility","useState","endAdornment","InputAdornment","edge","RemoveRedEye","match","StateSelectField","handleSelect","sortBy","states","useMemo","statesById","statesByName","statesByCode","selectField__formGroup","selectField__alert","Select","e","IconComponent","FaChevronDown","MenuItem","selectField__missingFieldPlaceholderItem","selectField__placeholderItem","map","item","code","selectField__option","selectField__errorText","CustomTooltip","Tooltip","enterTouchDelay","classes","popper","_ref2","offset","tooltipClasses","tooltip","typography","shadows","sky","arrow","Count","count","colorAlert","palette","primary","main","MuiCheckbox","CustomFormCheckBox","onChangeCallback","Checkbox","checked","defaultChecked","PersonAddAlt1Icon","DoneAllIcon","TelegramIcon","ThumbUpIcon","SavingsIcon","CustomImageTag","fallback","isError","setIsError","constructFallback","onError","MuiAutocomplete","AddressAutocomplete","onSelect","inputValue","setInputValue","options","setOptions","onSearchAddress","length","addressesAutocomplete","then","response","predictions","data","debouncedSearchAddress","debounce","Autocomplete","freeSolo","disableClearable","option","label","description","placeId","onInputChange","onAutoCompleteInputChange","searchInput","onAutocompleteSelect","getAddressDetails","res","success","address","address1","renderInput","params","MuiChip","nafLight","CustomClientChip","handleRemoveChip","Chip","onDelete","MuiAccordion","borderBottomLeftRadius","borderBottomRightRadius","borderTopLeftRadius","borderTopRightRadius","MuiAccordionSummary","minHeight","MuiAccordionDetails","Faq","summary","details","isLast","Accordion","borderBottom","AccordionSummary","expandIcon","ExpandMoreIcon","AccordionDetails","dangerouslySetInnerHTML","__html","iconTheme","AnnouncementCloseIcon","AnnouncementBanner","announcement","inSession","showBanner","setShowBanner","message","isDismissable","showInSession","useRef","useEffect","current","innerHTML","prev","Announcements","activeAnnouncements","useAppSelector","GetAnnouncementsSelector","localStorageHelper","get","x","FixedPositionContainer","CustomBackLink","to","linkText","Link","HiArrowLeft","tabIndex","MuiRadio","transform","MuiFormControlLabel","opacity","CustomRadioGroup","row","labelClassName","scrollableClassName","FormControl","RadioGroup","_option$label","FormControlLabel","Radio","ExpandableRadioButton","radioLabelTestId","MemoizedImage","defaultImg","currentTarget","AutoCompleteTextField","asyncStatus","isStatusPending","CustomCircularProgress","inline","PdfPreviewDetails","div","componentStyles","bottom","left","PdfPreview","transformOrigin","imageUrl","scale","backgroundImage","backgroundRepeat","backgroundSize","CoBrandedPreview","backgroundImageUrl","previewType","isModal","defaultModalStyles","mortgageModalStyles","alto","CoBrandedPreviewType","MortgageStatments","GreetingCards","ClosingCards","LayoutTwo","_stateLicenses$","partner","agent","isLoadingLo","defaultAvatarImg","firstName","lastName","stateLicenses","Array","phoneNumber","emailAddress","photoUrl","companyLogoUrl","partnerFullName","license","licenseNumber","agentFirstName","agentLastName","jobTitle","agentJobTitle","agentPhotoUrl","nmlsLicenseNumber","agentEmailAddress","phones","agentFullName","NMLS","agentPhoneTypes","hasPhoneType","_phones$find","phoneTypeExists","validNumber","find","number","getLoanOfficerPhoneNumber","_phones$find$number","_phones$find2","phoneNumberFormat","agents","agent__img","agent__companyLogo","details__name","details__jobTitle","details__license","details__phone","details__email","MarketingNafConnectLogo","details__agentPhones","ContactPhoneType","Cell","Work","DirectDial","LayoutOne","agentPhoneNumber","LayoutThree","detailsMap","detailsPosition","y","CoBrandedPreviewDetails","dealId","loanId","useParams","useGetRealEstateAgentQuery","loanOfficer","useGetClientDealQuery","selectFromResult","isLoading","component","FavoriteIcon","isFavorite","Icon","IoMdHeart","CiHeart","Container","onKeyDown","role","stlyles","PlusMinusIcon","renderMinusIcon","FaMinus","FaPlus","CustomDropDown","handleChange","Field","Label","container__label","select","hidden","select__option","CheveronDown","field__icon","xmlns","viewBox","d","StateLabelContainer","borderWidth","borderColor","aquaHaze","StateLabel","font","textAlign","AdditionalStatesContainer","cursor","AdditionalStatesLabel","PhoneLink","phone","extension","_loanOfficer$phones","index","onRemove","showStateLicenses","cardClassName","cc","subject","showMoreStates","setShowMoreStates","statesLicensed","filter","_ref3","licenseStatusTypeId","stateLicensed","some","_ref4","toUpperCase","_ref5","cellPhone","directPhone","workPhone","workPhoneExtension","forEach","isAdmin","getAdminId","ExperienceRating","PhoneIphoneIcon","PhoneIcon","TbDeviceLandlinePhone","getLoanOfficerEmailDetails","baseMailto","push","join","EmailIcon","p","newRenderStateTags","rendered","slice","state","ExpandLessIcon","FaTrashAlt","isNAFConnectTour","templateId","location","useLocation","navigate","useNavigate","templateData","templateContent","disclaimer","preferredLoanOfficers","showDefaultSalesDirector","strategicPartner","useTemplateData","templateViewer","templateViewer__link","onNavigateBack","pathname","West","templateViewer__icon","templateViewer__header","templateViewer__divider","HeadingSize","h3","FontWeight","semiBold","title","content","url","getAttribute","tagName","preventDefault","withLoanOfficer","preferredLoanOfficers__title","preferredLoanOfficers__container","preferredLoanOfficers__cards","PreferredLoanOfficerCard","preferredLoanOfficers__card","externalLoanOfficerId","defaultSalesDirector","templateViewer__disclaimer","commentRegex","spanishSpeaking","hasActiveDeals","templateContentObj","showLoanOfficer","strategicPartnerId","setTemplateProperty","property","comment","parseComment","indexOf","substring","replace","trim","useModal","isModalOpen","setIsModalOpen","showModal","hideModal","useStateSelectError","userStateSelection","setStateSelectedValues","stateInvalid","stateSelected","selectErrorMessage","handleUserStateSelect","isInValid","useMuiMediaQuery","isMobile","useMediaQuery","apTheme","values","sm","isTablet","md","isDesktop","useScrollTopOffset","scrollOutlet","document","getElementById","scrollTo","behavior","useResizeObserver","callback","ResizeObserver","window","useLayoutEffect","element","observer","entries","observe","disconnect","ActionType","EventType","initialState","imageLoadAttempted","imageLoaded","imageError","imageLoadedReducer","action","LOAD_SUCCESS","LOAD_ERROR","RESET","useImageLoaded","imageLoadedState","dispatch","useReducer","image","Image","onLoad","addEventListener","ON_LOAD","ON_ERROR","removeEventListener","ComponentActionType","isDropdownOpen","AutocompleteReducer","SET_AUTOCOMPLETE_INPUT_VALUE","payload","RESET_AUTOCOMPLETE","SET_IS_DROPDOWN_OPEN","useAutocompleteState","setAutocompleteInputValue","resetAutoComplete","setIsDropDownOpen","isDropDownOpen","useNavigateOnKeyDown","useCallback","navigateId","toString","key","useTemplates","activityTypes","notificationType","templates","setTemplates","getTemplate","useLazyGetTemplatesWithBearerToken","fetchTemplates","async","templatePromises","activityType","Promise","all","templateReplaceMap","TemplateVariables","templateGuid","_templateData$strateg","setDisclaimer","setTemplateData","useGetPreferredLoanOfficersQuery","useGetTemplateQuery","guid","skip","useGetLoanOfficerByIdQuery","comments","Object","variable","toLowerCase","container","createElement","querySelector","getDisclaimer","useWindowSize","setLayout","configureLayout","Tablet","Desktop","usePdfControls","numberOfPages","containerRef","pageNumber","setPageNumber","scalePercent","setScalePercent","dragging","setDragging","lastPosition","setLastPosition","overflow","setOverflow","setCursor","prevPage","nextPage","zoomIn","prevPercent","zoomOut","newPercent","handleMouseDown","clientX","clientY","handleMouseMove","deltaX","deltaY","scrollLeft","scrollTop","handleMouseUp","useSocialSignOn","env","useContext","EnvContext","LINKEDIN_CLIENT_ID","REDIRECT_URI","linkedinAuthUrl","googleScope","linkedinConfig","clientId","redirectUrl","oauthUrl","scope","BLOB_STORAGE_URL","confettiImg","closingCardsImg","greetingCardsImg","mortgageStatement","notificationsLogo","devicesHeroImg","devicesHeroImgSm","nafConnectLogo","nafConnectSquareLogo","statusUpdateTemplatePrimary","statusUpdateTemplateSecondary"],"sourceRoot":""}